?本專欄針對FPGA進行入門學習,從數(shù)電中常見的邏輯代數(shù)講起,結(jié)合Verilog HDL語言學習與仿真,主要對組合邏輯電路與時序邏輯電路進行分析與設(shè)計,對狀態(tài)機FSM進行剖析與建模。
??文章和代碼已歸檔至【Github倉庫:hardware-tutorial】,需要的朋友們自取?;蛘吖娞枴続IShareLab】回復 FPGA 也可獲取。
鎖存器和觸發(fā)器的基本特性
鎖存器和觸發(fā)器是構(gòu)成時序邏輯電路的基本邏輯單元,它們具有存儲數(shù)據(jù)的功能。
每個鎖存器或觸發(fā)器都能存儲1位二值信息,所以又稱為存儲單元或記憶單元。
若輸入信號不發(fā)生變化,鎖存器和觸發(fā)器必然處于其中一種狀態(tài),且一旦狀態(tài)被確定,就能自行保持不變,即長期存儲1位二進制數(shù)。
電路在輸入信號的作用下,會從一種穩(wěn)定狀態(tài)轉(zhuǎn)換成為另一種穩(wěn)定狀態(tài)。
鎖存器(Latch)與觸發(fā)器(Flip Flop)的區(qū)別
鎖存器(Latch)—— 沒有時鐘輸入端,對脈沖電平敏感的存儲電路,在特定輸入脈沖電平作用下改變狀態(tài)。
觸發(fā)器(Flip Flop)——每一個觸發(fā)器有一個時鐘輸入端。對脈沖邊沿敏感的存儲電路,在時鐘脈沖的上升沿或下降沿的變化瞬間改變狀態(tài)。
基本SR鎖存器
用與非門構(gòu)成的基本SR鎖存器
方框外側(cè)輸入端的小圓圈和信號名稱上面的小橫線均表示輸入信號是低電平有效的,同時為了區(qū)別,這種鎖存器有時也稱為基本 SR 鎖存器。
現(xiàn)態(tài): R ˉ \bar{R} Rˉ, S ˉ \bar{S} Sˉ 信號作用前Q端的狀態(tài), 現(xiàn)態(tài)用 Q n Q^{n} Qn 表示。
次態(tài): $ \bar{R}$ 、 S ˉ \bar{S} Sˉ 信號作用后Q端的狀態(tài), 次態(tài)用 Q n + 1 Q^{n+1} Qn+1 表示。
a.電路圖
b.功能表
約束條件:
S
ˉ
+
R
ˉ
=
1
\bar{S}+\bar{R}=1
Sˉ+Rˉ=1
例 當S、R的波形如下圖虛線上邊所示,試畫出Q和 Q對應的波形(假設(shè)原始狀態(tài)Q=0 )。
門控D鎖存器
1.電路結(jié)構(gòu)
國標邏輯符號
當
E
=
0
E=0
E=0 時,
S
ˉ
=
R
ˉ
=
1
\bar{S}=\bar{R}=1
Sˉ=Rˉ=1 ,無論 D 取什么值, Q 保持不變。
當
E
=
1
E=\mathbf{1}
E=1 時,使能信號有效
- D = 1 D=\mathbf{1} D=1 時, S ˉ = 0 \bar{S}=\mathbf{0} Sˉ=0 , R ˉ = 1 \bar{R}=\mathbf{1} Rˉ=1 , Q 被置 1 ;
- D = 0 D=\mathbf{0} D=0 時, S ˉ = 1 \bar{S}=1 Sˉ=1, R ˉ = 0 \bar{R}=\mathbf{0} Rˉ=0 , Q 被置 0 。
在 E = 1 E=\mathbf{1} E=1 期間, D 值將被傳輸?shù)捷敵龆?Q ,而當 E 由 1 跳變?yōu)?0 時,鎖存器將保持跳變之前瞬間 D 的值。因此, D \mathrm{D} D 鎖存器常 被稱為透明鎖存器 (Transparent Latch)。
門控D鎖存器特性表和特性方程
D鎖存器的特性表
卡諾圖
Q
n
+
1
=
E
ˉ
?
Q
+
E
?
D
Q^{n+1}=\bar{E} \cdot Q+E \cdot D
Qn+1=Eˉ?Q+E?D
門控D鎖存器波形圖
初始狀態(tài)為Q =1
門控D 鎖存器的Verilog HDL建模
試對圖所示的D鎖存器進行建模。
//版本1: Structural description of a D latch
module Dlatch_Structural (E, D, Q, Q_);
input E, D ;
output Q, Q_;
wire R_, S_;
nand N1(S_, D, E);
nand N2(R_,~D, E);
SRlatch_1 N3(S_, R_, Q, Q_);
endmodule
//Structural description of a SR-latch
module SRlatch_1 (S_, R_, Q, Q_);
input S_,R_;
output Q, Q_;
nand N1(Q, S_,Q_);
nand N2(Q_,R_,Q );
endmodule
版本1的特點:
第一個版本根據(jù)圖4.1.3使用基本的邏輯門元件,采用結(jié)構(gòu)描述風格,編寫了兩個模塊,這兩個模塊可以放在一個文件中,文件名為Dlatch_Structural.v。
在一個文件中可以寫多個模塊,其中有一個是主模塊(或者稱為頂層模塊)。
文件名必須使用頂層模塊名。本例中Dlatch_Structural是主模塊,它調(diào)用SRlatch_1模塊。
//版本2: Behavioral description of a D latch
module Dlatch_bh (E, D, Q, Q_);
input E, D;
output Q, Q_;
reg Q;
assign Q_ = ~Q;
always @(E or D)
if (E)
Q <= D; //當使能有效E=1時,輸出跟隨輸入變化
else
Q <= Q; //當E=0時, Q保持不變
endmodule
版本2的特點:
第二個版本采用功能描述風格的代碼,不涉及到實現(xiàn)電路的具體結(jié)構(gòu),靠“算法”實現(xiàn)電路操作。對于不太喜歡低層次硬件邏輯圖的人來說,功能描述風格的Verilog HDL是一種最佳選擇。其中“<=”為非阻塞賦值符,將在下一節(jié)介紹。
注意:文章來源:http://www.zghlxwxcb.cn/news/detail-434196.html
- always內(nèi)部不能使用assign。
- 在寫可綜合的代碼時,建議明確地定義if-else中所有可能的條件分支,否則,就會在電路的輸出部分增加一個電平敏感型鎖存器。
參考文獻:文章來源地址http://www.zghlxwxcb.cn/news/detail-434196.html
- Verilog HDL與FPGA數(shù)字系統(tǒng)設(shè)計,羅杰,機械工業(yè)出版社,2015年04月
- Verilog HDL與CPLD/FPGA項目開發(fā)教程(第2版), 聶章龍, 機械工業(yè)出版社, 2015年12月
- Verilog HDL數(shù)字設(shè)計與綜合(第2版), Samir Palnitkar著,夏宇聞等譯, 電子工業(yè)出版社, 2015年08月
- Verilog HDL入門(第3版), J. BHASKER 著 夏宇聞甘偉 譯, 北京航空航天大學出版社, 2019年03月
到了這里,關(guān)于SR鎖存器與D鎖存器設(shè)計與建模的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!