Transcript Lab09

Department of Computer Science and Information Engineering
National Cheng Kung University
Experiment on digital system
Sequential circuit(1)
Digital Integrated Circuit Design Laboratory
Outline




Sequential circuit (1)
Latch & Flip-Flop
Shift Registers
Lab
Department of Computer Science and Information Engineering
National Cheng Kung University
Sequential circuit (1)
Digital Integrated Circuit Design Laboratory
Sequential Circuit (1/5)
Sequential Circuit (2/5)

循序電路的輸出不僅取決於目前的輸入,還與前一
時刻的輸入/輸出有關。

循序邏輯包含儲存元件用以儲存狀態值,而組合邏
輯則沒有儲存元件。大部分的數位電路都是一種由
組合邏輯跟儲存元件所建構的循序邏輯電路,它包
含記憶體、延遲單元、儲存單元與有限狀態機
(finite state machine)等。
Sequential Circuit (3/5)
Sequential Circuit (4/5)

循序電路可分為同步與非同步兩大類。

在同步循序電路中,狀態的改變受控於時脈訊號。若電路狀態的改變,
在時脈訊號由0變化到1時發生,我們稱之為正緣(positive edge)或稱為上
升緣(rising edge)觸發。反之,若在時脈訊號由1變化到0時,電路狀態才
會改變,我們稱之為負緣(negative edge)或稱為下降緣(falling edge)觸發。

在同步電路內,只有在時脈觸發發生時才能改變輸出狀態與訊號,且此
輸出訊號會一直維持到下一個觸發的來臨。相對的,在非同步循序電路
中,任何時間都可以改變狀態,不需時脈訊號的觸發,是一種屬於事件
驅動的設計。
Sequential Circuit (5/5)

循序邏輯電路



同步





同步 (Synchronous)
非同步 (Asynchronous)
Clock 控制
正緣觸發 (Clock 由 0 變化到 1 時,開始執行電路) - Posedge
負緣觸發 (Clock 由 1 變化到 0 時,開始執行電路) – Negedge
example: always@(posedge clock)、always@(negedge clock)
非同步


事件 Event 控制 example: always@(posedge clock or posedge reset)
任何時間都可以改變狀態,不需要時脈訊號觸發
Department of Computer Science and Information Engineering
National Cheng Kung University
Latch & Flip-flop
Digital Integrated Circuit Design Laboratory
Latch & Flip-flop

Latch

Flip-flop
Flip-Flop inference
D flip-flop with reset (1/2)
D flip-flop with reset (2/2)
D flip-flop with set (1/2)
D flip-flop with set (2/2)
Loop problem (1/2)
Loop problem (2/2)
Notice

wire and reg



reg == register



放在always begin…end裡面的變數,要宣告為 reg
放在always begin…end外面的變數,要宣告為 wire (需搭配assign使
用)
在組合電路中使用 reg,合成以後只是線 (net)
在循序電路中使用 reg,合成後會形成 Flip-flop (register)
Latch

在組合電路中,case、if…else…若沒有寫滿,合成後會產生latch
Blocking (限制指定) vs. Non-Blocking (無限制
指定)

Blocking assignment
initial begin
…
A=1;
B=0;
…
A=B; // B=0 is used
B=A; // A=0 is used
end
=======================
initial begin
…
A=1;
B=0;
…
B=A; // A=1 is used
C-like
A=B; // B=1 is used
end

Non-Blocking assignment
initial begin
…
A=1;
B=0;
…
A<=B; // B=0 is used
B<=A; // A=1 is used
end
=======================
initial begin
…
A=1;
B=0;
…
B<=A; // A=1 is used
平行處理
A<=B; // B=0 is used
end
19
Department of Computer Science and Information Engineering
National Cheng Kung University
Shift Registers
Digital Integrated Circuit Design Laboratory
Shift Registers

串入串出移位暫存器

Serial In/Serial Out Shift Register
功能:將串列訊號輸入至最左邊 DEF,而輸出訊號則被儲存在最右邊 DEF

每個時脈週期只能輸入與輸出 one-bit 的資料 – 傳輸速率較慢(缺點)


時脈輸入訊號正緣到達時:



若 clear = 1,所有 DEF 清除為 0
若 clear = 0,電路開始進行移位,全部 DEF 的資料往右
傳遞一個 DEF (右移 1個位元)
最右邊 DEF的輸出位元資料,
則被當作串列輸出訊號 (out)
21
Serial In/Serial Out Shift Register
O
X
22
Shift Registers

串入並出移位暫存器



Serial In/Parallel Out Shift Register
功能:將串列訊號輸入至最左邊 DEF,而全部DEF所儲存的資料
即是所謂並列輸出訊號
時脈輸入訊號負緣到達時:



若 clear = 1,所有 DEF 清除為 0
若 clear = 0,電路開始進行移位,全部 DEF 的資料往右
傳遞一次,然後每個 DEF 個別貢獻 one-bit 資料,當作並
列輸出訊號
每個時脈週期只能輸入 one-bit 資料,但可以輸出 four-bits 資料
23
Serial In/Parallel Out Shift Register
24
Shift Registers

並入串出移位暫存器



Parallel In/Serial Out Shift Register
功能:並列輸入所有訊號資料至 DEF,而串列輸出訊號則是被儲存在最右
邊的 DEF中
時脈輸入訊號正緣到達時:




若 clear = 1,所有 DEF 清除為 0
若 load = 1,將全部輸入訊號以並列方式載入到所有 DEF 中
若 clear = 0 與 load = 0 時,電路開始進行資料移位 – 串列輸出
同時輸入 four-bits 資料,但只能輸出 one-bit 資料
25
Parallel In/Serial Out Shift Register
26
Shift Registers

並入並出移位暫存器



Parallel In/ Parallel Out Shift Register
功能:並列輸入所有訊號資料至 DEF,並列輸出所有儲存在 DEF 資料
時脈輸入訊號正緣到達時:

若 clear = 1,所有 DEF 清除為 0
若 load = 1,將全部輸入訊號以並列方式載入到所有 DEF 中

若 clear = 0 與 load = 0 時,電路開始進行資料移位 – 並列輸出

27
Parallel In/ Parallel Out Shift Register
28
Department of Computer Science and Information Engineering
National Cheng Kung University
Lab
Digital Integrated Circuit Design Laboratory
Lab (1/2)






累加器(Accumulator)
累加器是CPU架構中很重要的一個計算暫存器,主要是儲存運算所產生
的中間累加結果。
題目功能說明:
時脈輸入訊號的正緣到達時
(1)若reset訊號為1,累加器會被清除為0;
(2)若reset訊號為0,累加器會將持續的輸入值都累加起來,輸出則是到
目前為止,輸入值的累加總和。
Lab (2/2)

VeriInstrument裝置模擬

注意:時脈的部分,設1就好,以免頻率太快而不易看出變化。
Lab - Hint

module Accumulator (sequential circuit)


module Seven_Display (combinational circuit)


計算累加器正確的值
將Accumulator算出的值轉為output的七段顯示器
兩個module之間溝通方式

SevenDisplay DIS (.data(tmp), .out(out));
Seven-segment display