版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、工程學院工程學院 信息技術(shù)教研室信息技術(shù)教研室Verilog HDL與與FPGA數(shù)字系統(tǒng)設計數(shù)字系統(tǒng)設計4.1 鎖存器鎖存器4.2 時序電路建模基礎時序電路建?;A4.3 觸發(fā)器觸發(fā)器4.4 寄存器和移位寄存器寄存器和移位寄存器4.5 同步計數(shù)器同步計數(shù)器4.6 Verilog HDL函數(shù)與任務的使用函數(shù)與任務的使用4.7 m序列碼產(chǎn)生電路設計序列碼產(chǎn)生電路設計鎖存器和觸發(fā)器鎖存器和觸發(fā)器的的基本特性基本特性 鎖存器鎖存器和觸發(fā)器和觸發(fā)器是構(gòu)成時序邏輯電路的基本邏輯是構(gòu)成時序邏輯電路的基本邏輯單元單元,它,它們具有存儲數(shù)據(jù)的功能們具有存儲數(shù)據(jù)的功能。每個每個鎖存器或觸發(fā)器都能存儲鎖存器或觸發(fā)器
2、都能存儲1 1位二值信息,所以又稱為存位二值信息,所以又稱為存儲單元或記憶單元儲單元或記憶單元。若輸入信號不發(fā)生變化若輸入信號不發(fā)生變化,鎖存器和觸發(fā)器鎖存器和觸發(fā)器必然必然處于其中一種處于其中一種狀態(tài),且一旦狀態(tài)被確定,就能自行保持不變,即長期存儲狀態(tài),且一旦狀態(tài)被確定,就能自行保持不變,即長期存儲1位二進制數(shù)位二進制數(shù)。電路在輸入信號的作用下,會從一種穩(wěn)定狀態(tài)轉(zhuǎn)換成為另一電路在輸入信號的作用下,會從一種穩(wěn)定狀態(tài)轉(zhuǎn)換成為另一種穩(wěn)定狀態(tài)種穩(wěn)定狀態(tài)。3鎖存器鎖存器與觸發(fā)器的區(qū)別與觸發(fā)器的區(qū)別鎖存器鎖存器 沒有沒有時鐘輸入端,時鐘輸入端,對對脈沖電平敏感的脈沖電平敏感的存儲電路,在特定存儲電路,在
3、特定輸入脈沖電平作用下改變狀態(tài)。輸入脈沖電平作用下改變狀態(tài)。觸發(fā)器觸發(fā)器每每一個觸發(fā)器有一個時一個觸發(fā)器有一個時鐘輸入鐘輸入端端。對對脈沖邊沿敏感脈沖邊沿敏感的存儲的存儲電路,在時鐘脈沖的上升沿或下降電路,在時鐘脈沖的上升沿或下降沿的變化瞬間改變狀態(tài)。沿的變化瞬間改變狀態(tài)。 E E CP CP 44.1 鎖存器鎖存器4.1.1 基本基本SR鎖存器鎖存器4.1.2 門控門控D鎖存器鎖存器4.1.3門控門控D鎖存器的鎖存器的Verilog HDL建模建模5 R S G1 G2 Q Q 0 1 0 1 1. 用用與非與非門門構(gòu)成的基本構(gòu)成的基本SR鎖存器鎖存器、 S Q Q R R S 國標國標邏輯
4、符號邏輯符號方框外側(cè)輸入端的方框外側(cè)輸入端的小圓圈小圓圈和信號名稱上面的和信號名稱上面的小橫線小橫線均表示輸均表示輸入信號是入信號是低電平有效低電平有效的,同時為了區(qū)別,這種鎖存器有時也的,同時為了區(qū)別,這種鎖存器有時也稱為基本稱為基本 S R 鎖存器。鎖存器。4.1.1 基本基本SR鎖存器鎖存器64.1.1 基本基本SR鎖存器鎖存器1. 用用與與非門非門構(gòu)成的基本構(gòu)成的基本SR鎖存器鎖存器 R S G1 G2 Q Q 0 1 0 1 現(xiàn)態(tài)現(xiàn)態(tài):R、S信號作用前信號作用前 Q端的狀態(tài),端的狀態(tài), 現(xiàn)態(tài)現(xiàn)態(tài)用用Q n表示。表示。次態(tài)次態(tài):R、S 信號信號作用后作用后 Q 端的狀態(tài)端的狀態(tài), 次次
5、態(tài)態(tài)用用Q n+1表示。表示。7 R S G1 G2 Q Q 0 1 0 1 、a.電路圖電路圖b.b.功能表功能表 RSQ110010100101不變不變1 11不變不變Q約束條件約束條件: S +R = 14.1.1 基本基本SR鎖存器鎖存器8 R S 例例 當當S、R的波形如下圖虛線上邊所示,試畫出的波形如下圖虛線上邊所示,試畫出Q和和 Q對應的波對應的波形(假設原始狀態(tài)形(假設原始狀態(tài)Q0 )。)。 S Q Q R R S 圖圖4.1.1(b) Q Q 不不變變 置置 1 不不變變 清清 0 不不變變 置置 1 不不變變 清清 0 不不變變 狀狀態(tài)態(tài)不不確確定定 t1 t2 t3 t4
6、 t5 t6 t7 t8 R S 置置 1 94.1.2 門控門控D 鎖存器鎖存器1. 電路結(jié)構(gòu)電路結(jié)構(gòu) 國標邏輯符號國標邏輯符號使能信號控制門電路使能信號控制門電路簡單簡單S R鎖存器鎖存器 1D C1 Q Q E D 10工作原理工作原理o 當當E = 0時,時,S =R = 1,無論,無論D取什么值,取什么值,Q 保持不變。保持不變。o 當當E = 1時,時, n D=1時,時,S =0, R = 1,Q 被置被置1;n D=0時,時, S =1, R = 0,Q 被置被置0。o 在在E=1期間,期間,D 值將被傳輸?shù)捷敵龆酥祵⒈粋鬏數(shù)捷敵龆薗,而當,而當E由由1跳變?yōu)樘優(yōu)?時,鎖存器
7、將保持跳變之前瞬間時,鎖存器將保持跳變之前瞬間D的值。因此,的值。因此,D鎖存器常鎖存器常被稱為被稱為透明鎖存器透明鎖存器(Transparent Latch)。)。11特性表和特性方程特性表和特性方程 1nQEQED12波形圖波形圖 E D t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 1D C1 Q Q E D 初始狀態(tài)初始狀態(tài)為為Q =1 E D Q Q 置 1 不變 置 1 不變 置 0 不變 不變 置 0 不變 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 134.1.3 門控門控D 鎖存器的鎖存器的Verilog HDL建模建模1. 試試對圖對圖4.
8、1.3所示的所示的D鎖存器進行建模。鎖存器進行建模。 1D C1 Q Q E D 圖圖4.1.3 D鎖存器鎖存器14/版本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
9、(S_,R_, Q, Q_); input S_,R_; output Q, Q_; nand N1(Q, S_,Q_);nand N2(Q_,R_,Q);endmodule15 第一個版本根據(jù)圖第一個版本根據(jù)圖4.1.3使用基本的邏輯門元件,采用結(jié)構(gòu)使用基本的邏輯門元件,采用結(jié)構(gòu)描述風格,編寫了兩個模塊,這兩個模塊可以放在一個文件描述風格,編寫了兩個模塊,這兩個模塊可以放在一個文件中,文件名為中,文件名為Dlatch_Structural.v。 在在一個文件中可以寫多個模塊,其中有一個是主模塊(或者一個文件中可以寫多個模塊,其中有一個是主模塊(或者稱為頂層模塊)稱為頂層模塊)。 文件名文件名
10、必須使用頂層模塊名。本例中必須使用頂層模塊名。本例中Dlatch_Structural是是主模塊,它調(diào)用主模塊,它調(diào)用SRlatch_1模塊。模塊。版本版本1的特點:的特點:16/版本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; /當使能有效時,輸出跟隨輸入變化 else Q = Q; /保持不變endmodule1718 第二個版本采用功能描述風
11、格的代碼,不涉及到實現(xiàn)電路的第二個版本采用功能描述風格的代碼,不涉及到實現(xiàn)電路的具體結(jié)構(gòu),靠具體結(jié)構(gòu),靠“算法算法”實現(xiàn)電路操作。對于不太喜歡低層次硬實現(xiàn)電路操作。對于不太喜歡低層次硬件邏輯圖的人來說,功能描述風格的件邏輯圖的人來說,功能描述風格的Verilog HDL是一種最是一種最佳選擇。其中佳選擇。其中“=”為非阻塞賦值符,將在下一節(jié)介紹。為非阻塞賦值符,將在下一節(jié)介紹。 注意注意: always內(nèi)部不能使用內(nèi)部不能使用assign。 在在寫可綜合的代碼時,建議明確地定義寫可綜合的代碼時,建議明確地定義ifelse中所有中所有可能的條件分支,否則,就會在電路的輸出部分增加一可能的條件分支
12、,否則,就會在電路的輸出部分增加一個電平敏感型鎖存器。個電平敏感型鎖存器。 版本版本2的特點:的特點:19Verilog行為級描述用關鍵詞行為級描述用關鍵詞initial或或always,但,但initial是面向仿真,不能用于是面向仿真,不能用于邏輯綜合。邏輯綜合。always是無是無限循環(huán)語句,其用法為:限循環(huán)語句,其用法為: 4.2 時序電路建?;A時序電路建模基礎always( (事件控制表達式(或敏感事件表事件控制表達式(或敏感事件表) ))begin 塊塊內(nèi)局部變量的定義;內(nèi)局部變量的定義; 過程過程賦值語句;賦值語句;end204.2.1 阻塞型賦值阻塞型賦值語句語句與與非阻塞非
13、阻塞型賦值語句型賦值語句賦值時先計算等號右邊部分的值,這時賦值語句不賦值時先計算等號右邊部分的值,這時賦值語句不允許任何別的允許任何別的VerilogVerilog語句的干擾,直到現(xiàn)行的賦值完語句的干擾,直到現(xiàn)行的賦值完成時刻,把等號右邊的賦值給等號左邊的時刻,它才成時刻,把等號右邊的賦值給等號左邊的時刻,它才允許別的賦值語句的執(zhí)行。允許別的賦值語句的執(zhí)行。在賦值操作時刻開始計算非阻塞賦值符的等號右邊在賦值操作時刻開始計算非阻塞賦值符的等號右邊的表達式,賦值操作結(jié)束時刻才更新等號左邊的表達的表達式,賦值操作結(jié)束時刻才更新等號左邊的表達式。式。 在在always語句內(nèi)部的過程賦值語句有兩種類型:
14、語句內(nèi)部的過程賦值語句有兩種類型:阻塞型賦值語句(阻塞型賦值語句(Blocking Assignment Statement)非阻塞型賦值語句(非阻塞型賦值語句(Non-Blocking Assignment Statement)214.2.1 阻塞型賦值語句與非阻塞型賦值語句阻塞型賦值語句與非阻塞型賦值語句 使用的運算符如下:使用的運算符如下:賦值算符賦值算符( () ) :阻塞型過程賦值算符阻塞型過程賦值算符 前一條語句沒有完成賦值過程之前,后面的語句不前一條語句沒有完成賦值過程之前,后面的語句不可能被執(zhí)行??赡鼙粓?zhí)行。賦值算符賦值算符( ( ) ) :非阻塞型過程賦值算符非阻塞型過程賦值
15、算符 一條非阻塞型賦值語句的執(zhí)行,并不會影響塊中其一條非阻塞型賦值語句的執(zhí)行,并不會影響塊中其它語句的執(zhí)行它語句的執(zhí)行22過程賦值語句有阻塞型和非阻塞型過程賦值語句有阻塞型和非阻塞型: :非阻塞型用非阻塞型用“=”表示,語句塊內(nèi)部的語句表示,語句塊內(nèi)部的語句并行并行執(zhí)行。執(zhí)行。 begin B=A; C=B+1; end阻塞型用阻塞型用“”表示,多條語句表示,多條語句順序順序執(zhí)行。執(zhí)行。 begin B=A; C=B+1; endC=A+1C=B+123阻塞型過程賦值與非阻塞型過程賦值阻塞型過程賦值與非阻塞型過程賦值/Blocking (=) initialbegin #5 a = b; #1
16、0 c = d;end/Nonblocking (=)initialbegin #5 a = b; #10 c = d;end2425注意注意: 在在可綜合的電路設計中,一個語句塊的內(nèi)部不允許可綜合的電路設計中,一個語句塊的內(nèi)部不允許同時出現(xiàn)阻塞型賦值語句和非阻塞型賦值語句同時出現(xiàn)阻塞型賦值語句和非阻塞型賦值語句。 在在時序電路的設計中,建議采用非阻塞型賦值語句。時序電路的設計中,建議采用非阻塞型賦值語句。264.2.2 事件控制語句事件控制語句o 用用always語句描述硬件電路的邏輯功能時,在語句描述硬件電路的邏輯功能時,在always語句語句中中符號之后緊跟著符號之后緊跟著“事件控制表達
17、式事件控制表達式”。o 邏輯電路邏輯電路中的敏感事件通常有兩種類型:中的敏感事件通常有兩種類型:電平敏感事件電平敏感事件和和邊沿觸發(fā)事件邊沿觸發(fā)事件。o 在組合邏輯電路和鎖存器中,輸入信號電平的變化通常會在組合邏輯電路和鎖存器中,輸入信號電平的變化通常會導致輸出信號變化,在導致輸出信號變化,在Verilog HDL中,將這種輸入信號中,將這種輸入信號的電平變化稱為的電平變化稱為電平敏感事件電平敏感事件。o 在同步時序邏輯電路中,觸發(fā)器狀態(tài)的變化僅僅發(fā)生在時在同步時序邏輯電路中,觸發(fā)器狀態(tài)的變化僅僅發(fā)生在時鐘脈沖的上升沿或下降沿,鐘脈沖的上升沿或下降沿,Verilog HDL中用關鍵詞中用關鍵詞
18、posedge(上升沿)(上升沿)和和 negedge(下降沿)(下降沿)進行說明,這就進行說明,這就是是邊沿觸發(fā)事件邊沿觸發(fā)事件。27敏感事件分為電平敏感事件和邊沿觸發(fā)事件敏感事件分為電平敏感事件和邊沿觸發(fā)事件: :邊沿敏感事件(如觸發(fā)器)邊沿敏感事件(如觸發(fā)器) : :always(posedge CP or negedge CR)CP的上升沿或的上升沿或CR的下降沿來到,后面的過程語句就會執(zhí)的下降沿來到,后面的過程語句就會執(zhí)行。行。電平敏感事件(如鎖存器)電平敏感事件(如鎖存器): : always(sel or a or b(sel or a or b) selsel、a a、b b中
19、任意一個電平發(fā)生變化,后面的過程賦值語中任意一個電平發(fā)生變化,后面的過程賦值語句將執(zhí)行一次。句將執(zhí)行一次。28邊沿觸發(fā)事件邊沿觸發(fā)事件o 在在always后面后面的邊沿的邊沿觸發(fā)事件中,有一個事件必須是時鐘事觸發(fā)事件中,有一個事件必須是時鐘事件,還可以有多個異步觸發(fā)事件,多個觸發(fā)事件之間用件,還可以有多個異步觸發(fā)事件,多個觸發(fā)事件之間用關鍵關鍵詞詞 or 進行進行連接連接,例如,例如,語句,語句always (posedge CP or negedge Rd_ or negedge Sd_)o 在在Verilog 2001標準中,可以使用逗號來代替標準中,可以使用逗號來代替or。例如,。例如,
20、always (posedge CP, negedge Rd_, negedge Sd_)o posedge CP 是時鐘事件,是時鐘事件, negedge Rd_和和negedge Sd_是異是異步觸發(fā)事件。如果沒有時鐘事件,只有異步事件,就會出現(xiàn)語法步觸發(fā)事件。如果沒有時鐘事件,只有異步事件,就會出現(xiàn)語法錯誤。錯誤。294.3 D觸發(fā)器觸發(fā)器4.3.1 D觸發(fā)器的邏輯功能觸發(fā)器的邏輯功能4.3.2 有有清零輸入和預置輸入的清零輸入和預置輸入的D觸發(fā)器觸發(fā)器4.3.3 有使能端的有使能端的D觸發(fā)器觸發(fā)器4.3.4 D觸發(fā)器及其應用電路的觸發(fā)器及其應用電路的Verilog HDL建模建模304
21、.3.1 D觸發(fā)器觸發(fā)器的邏輯功能的邏輯功能 C1 1D Q Q (b)下降沿觸發(fā) 下降沿觸發(fā) CP D C1 1D Q Q (a)上升沿觸發(fā) 上升沿觸發(fā) CP D 1. D觸發(fā)器的邏輯符號觸發(fā)器的邏輯符號n 把把CP 有效有效沿到來之前沿到來之前電路的狀態(tài)稱為電路的狀態(tài)稱為現(xiàn)態(tài)現(xiàn)態(tài),用,用Qn表示。表示。n 把把CP 有效沿有效沿到來之后到來之后,電路所進入的新狀態(tài)稱為,電路所進入的新狀態(tài)稱為次態(tài)次態(tài),用用Qn+1表示。表示。312. 特性表特性表 DQn Qn+10000101011113. 特性方程特性方程Qn+1 = D 0 1 4. 狀態(tài)圖狀態(tài)圖D=1D=0D=0D=14.3.1 D
22、觸發(fā)器觸發(fā)器的邏輯功能的邏輯功能32334.3.1 D觸發(fā)器觸發(fā)器的邏輯功能的邏輯功能由以上分析可以看出,當由以上分析可以看出,當D=0時,時,D觸發(fā)器的下一狀態(tài)將被置觸發(fā)器的下一狀態(tài)將被置0(Qn+1=0);當);當D=1時,下一狀態(tài)將被置時,下一狀態(tài)將被置1 (Qn+1=1).在脈沖的在脈沖的兩個觸發(fā)沿之間,觸發(fā)器狀態(tài)保持不變,即存儲兩個觸發(fā)沿之間,觸發(fā)器狀態(tài)保持不變,即存儲1位二進制數(shù)。位二進制數(shù)。凡事符合以上凡事符合以上 邏輯關系的觸發(fā)器,無論它的觸發(fā)方式如何,邏輯關系的觸發(fā)器,無論它的觸發(fā)方式如何,均稱為均稱為D觸發(fā)器。觸發(fā)器。 直接置 1 線 G1 CP Y1 G2 G3 G5 G
23、4 Y4 D G6 Q Q S R (a) C1 1D Q Q CP D (b) 直接置 0 線 RD SD RD SD 4.3.2 有清零輸入和預置輸入的有清零輸入和預置輸入的D 觸發(fā)器觸發(fā)器 由于直接置由于直接置1和清零時跟和清零時跟CP信號無關,所以稱置信號無關,所以稱置1、清零操作是清零操作是異步置異步置1和異和異步清零步清零。 34 直接置 1 線 G1 CP Y1 G2 G3 G5 G4 Y4 D G6 Q Q S R 直接置 0 線 RD SD 4.3.2 有清零輸入和預置輸入的有清零輸入和預置輸入的D 觸發(fā)器觸發(fā)器 直接置直接置1和直接清零的和直接清零的過程如下過程如下:35有
24、有同步清零同步清零端的端的 D 觸發(fā)器觸發(fā)器 o 所謂所謂同步清零同步清零是指在清零輸入信號有效,并且是指在清零輸入信號有效,并且CP的的有效邊沿到來時,才能將觸發(fā)器清零。有效邊沿到來時,才能將觸發(fā)器清零。 圖圖4.3.4 有同步清零輸入端的有同步清零輸入端的D觸發(fā)器觸發(fā)器(a) 實現(xiàn)同步清零的方案之一實現(xiàn)同步清零的方案之一 (b) 實現(xiàn)同步清零的方案之二實現(xiàn)同步清零的方案之二364.3.3 有有使能端的使能端的D 觸發(fā)器觸發(fā)器o 功能:功能:n En=0,Q 保持不變。保持不變。n En=1,在,在CP作用下,作用下, Q = D。1nnQCE QCE D Q Q 1D C1 CP D En
25、 圖 4.3.5 用門控制時鐘的電路 Q Q 1D C1 CP D CE 0 1 Q Q 1D C1 CP D CE 邏輯符號邏輯符號374.3.4 D觸發(fā)器及其應用電路的觸發(fā)器及其應用電路的Verilog HDL建模建模例例1.試對圖試對圖4.3.3所示的帶有異步清零和異步置位的邊所示的帶有異步清零和異步置位的邊沿沿D觸發(fā)器進行建模觸發(fā)器進行建模。圖圖4.3.3 有有異步輸入端的異步輸入端的D觸發(fā)器觸發(fā)器 直接置 1 線 G1 CP Y1 G2 G3 G5 G4 Y4 D G6 Q Q S R (a) C1 1D Q Q CP D (b) 直接置 0 線 RD SD RD SD 38/版本版
26、本1:module Set_Rst_DFF (Q,Q_,D,CP,Rd_,Sd_); output Q,Q_; input D,CP,Rd_,Sd_; wire Y1,Y2,Y3,Y4,Y5,Y6; assign #5 Y1 = (Sd_ & Y2 & Y4); assign #5 Y2 = (Rd_ & CP & Y1); assign #5 Y3 = (CP & Y2 & Y4); assign #5 Y4 = (Rd_ & Y3 & D); assign #5 Y5 = (Sd_ & Y2 & Y6); assign #5 Y6 = (Rd_ & Y3 & Y5); assign Q =
27、 Y5; assign Q_= Y6;endmodule 版本版本1根據(jù)根據(jù)該圖使用連續(xù)賦值語句來建模,在該圖使用連續(xù)賦值語句來建模,在assign語句中的語句中的#5表示給每個表示給每個與非門與非門加加5個單位時間的傳輸延遲。個單位時間的傳輸延遲。39/版本版本2module Set_Rst_DFF_bh (Q,Q_,D,CP,Rd_,Sd_); output reg Q; output Q_; input D,CP,Rd_,Sd_;assign Q_= Q;always (posedge CP or negedge Sd_ or negedge Rd_) if (Sd_) /等同于: if
28、 (Sd_ 0) Q = 1b1; else if (Rd_) Q = 1b0; else Q = D;endmodule40 采用采用功能描述風格,使用功能描述風格,使用always和和if-else對對輸出變量輸出變量賦值。賦值。 negedge Sd_是一個異步事件,它與是一個異步事件,它與if(Sd_)必須)必須匹配,匹配,negedge Rd_是另一個異步事件,它與是另一個異步事件,它與if(Rd_)必須)必須匹配,匹配,這是語法規(guī)定。這是語法規(guī)定。 當當Sd_為為0時,將輸出時,將輸出Q置置1; 當當Sd_=1且且Rd_=0時,將輸出時,將輸出Q置置0; 當當Sd_和和Rd_均不為
29、均不為0,且時鐘,且時鐘CP的上升沿到來時,將輸入的上升沿到來時,將輸入D傳給輸出傳給輸出Q。 注意注意,如果置,如果置1事件、置事件、置0事件和時鐘事件同時發(fā)生,則置事件和時鐘事件同時發(fā)生,則置1事事件的優(yōu)先級別最高、置件的優(yōu)先級別最高、置0事件的次之,時鐘事件的事件的次之,時鐘事件的優(yōu)先級最低優(yōu)先級最低。版本版本2的特點:的特點:4142例例2 具有具有同步清零功能的上升沿同步清零功能的上升沿D觸發(fā)器。觸發(fā)器。 module Sync_rst_DFF (Q,D,CP,Rd_); output reg Q; input D, CP, Rd_; always (posedge CP) if (
30、 !Rd_) Q =0; else Q = D;endmodule C1 1D Q Q CP D RD 0 1 GND 43 Q Q 1D C1 CP 圖 4.3.7 2 分頻電路 RD D R 例例4 試用試用功能描述風格對圖功能描述風格對圖4.3.7所示電路進行建模,所示電路進行建模,并給出仿真結(jié)果并給出仿真結(jié)果。解解:(:(1)設計塊:使用)設計塊:使用always和和if-else語句語句對輸出變量賦值,其代碼如下。對輸出變量賦值,其代碼如下。timescale 1 ns/ 1 nsmodule _2Divider (Q,CP,Rd_); output reg Q; input CP,
31、Rd_; wire D; assign D = Q;always (posedge CP or negedge Rd_) if(Rd_) Q = 1b0; else Q = D;endmodule44(2)激勵塊:給輸入變量賦值。)激勵塊:給輸入變量賦值。timescale 1 ns/ 1 nsmodule test_2Divider();reg CP, Rd_; wire Q;/調(diào)用設計塊調(diào)用設計塊_2Divider U1 ( .CP(CP), .Q(Q),.Rd_(Rd_) );initial begin /產(chǎn)生復位信號產(chǎn)生復位信號Rd_ Rd_ = 1b0; Rd_ = #2000 1b
32、1;#8000 $stop;end always begin /產(chǎn)生時鐘信號產(chǎn)生時鐘信號CP CP = 1b0; CP = #500 1b1; #500;end endmodule45 由由圖可知,時鐘圖可知,時鐘CP的周期為的周期為1000ns,在,在2000ns之前,清零信號之前,清零信號Rd_有有效,輸出效,輸出Q被清零。在此之后,被清零。在此之后,Rd_=1,在,在2500ns時,時,CP上升沿到來,上升沿到來,Q=1;到下一個;到下一個CP上升沿(上升沿(3500ns)時,)時,Q=0,再到下一個,再到下一個CP上升沿上升沿(4500ns)時,)時,Q=1,如此重復,直到,如此重復,
33、直到8000ns時,系統(tǒng)任務時,系統(tǒng)任務$stop被執(zhí)行,仿真停止。被執(zhí)行,仿真停止。 總之總之,在不考慮清零信號,在不考慮清零信號Rd_的作用時,每當?shù)淖饔脮r,每當CP上升沿到來時,觸發(fā)器上升沿到來時,觸發(fā)器狀態(tài)狀態(tài)Q翻轉(zhuǎn)一次。輸出信號翻轉(zhuǎn)一次。輸出信號Q的頻率正好是的頻率正好是CP頻率的二分之一,故稱該電路頻率的二分之一,故稱該電路為為2分頻電路。所謂分頻電路,是指可將輸入的高頻信號變?yōu)榈皖l信號輸出分頻電路。所謂分頻電路,是指可將輸入的高頻信號變?yōu)榈皖l信號輸出的電路。的電路。(3)仿真仿真波形(用波形(用ModelSim)46例例5 試試對圖對圖4.3.9所示電路進行建模,并給出仿真結(jié)果。
34、所示電路進行建模,并給出仿真結(jié)果。解解:(1)采用結(jié)構(gòu)描述風格的代碼如下。編寫了兩個采用結(jié)構(gòu)描述風格的代碼如下。編寫了兩個模塊,這兩個模塊可以放在一個文件中,文件名為模塊,這兩個模塊可以放在一個文件中,文件名為Ripplecounter.v。 FF0 R CLR_ FF1 R FF2 R FF3 R CP Q0 Q3 C C C C D Q0 D D D Q1 Q2 Q3 Q1 Q2 圖4.3.9 4位步二進制計數(shù)器邏輯圖47第一第一個主模塊個主模塊Ripplecounter作為設計的頂層,它實例引用分頻作為設計的頂層,它實例引用分頻器子模塊器子模塊_2Divider1共共4次,第二個分頻器子
35、模塊次,第二個分頻器子模塊_2Divider1作作為設計的底層。為設計的底層。/*= 設計塊:設計塊:Ripplecounter.v =*/module Ripplecounter (Q,CP,CLR_); output 3:0Q; input CP, CLR_; /實例引用分頻器模塊實例引用分頻器模塊 _2Divider1 FF0 (Q0,CP,CLR_); /注意注意, 引用時端口的排列順序引用時端口的排列順序 _2Divider1 FF1 (Q1,Q0,CLR_); _2Divider1 FF2 (Q2,Q1,CLR_); _2Divider1 FF3 (Q3,Q2,CLR_);endm
36、odule 48/分頻器子分頻器子模塊模塊module _2Divider1 (Q,CP,Rd_); output reg Q; input CP,Rd_; always (posedge CP or negedge Rd_) if(!Rd_) Q = 1b0; else Q = Q;endmodule 49/*= 激勵塊:激勵塊:test_Ripplecounter.v =*/module test_Ripplecounter();reg CLR_, CP;wire 3:0Q;Ripplecounter i1 (.CLR_(CLR_),.CP(CP),.Q(Q);initial begin
37、/ CLR_ CLR_ = 1b0; CLR_ = #20 1b1;#400 $stop;end always begin / CPCP = 1b0;CP = #10 1b1;#10;end endmodule(2)激勵塊:給輸入變量(激勵塊:給輸入變量(CLR_和和CP)賦值。)賦值。50(3)仿真波形如圖仿真波形如圖4.3.10所示。所示。由圖可知由圖可知, 時鐘時鐘CP的周期為的周期為20ns。 開始開始時,清零信號時,清零信號CLR_有效(有效(020ns),輸出),輸出Q被清零被清零。 20ns之后,之后,CLR_一直為高電平一直為高電平, 在在30ns時,時,CP上升沿到來,上升沿
38、到來, Q=0001;到;到下一個下一個CP上升沿上升沿(50ns)時,)時,Q=0010, 再再到下一個到下一個CP上升沿(上升沿(70ns)時,)時,Q=0011,如此重,如此重復復,到,到310ns時,時,Q=1111, 到到330ns時,時,Q=0000,直到系統(tǒng)任務,直到系統(tǒng)任務$stop被執(zhí)行,被執(zhí)行,仿真停止仿真停止。51 電路電路首先在首先在CLR_的作用下,輸出被清零。此后當?shù)淖饔孟?,輸出被清零。此后當CLR_=1時,時,每當每當CP上升沿到來時,電路狀態(tài)上升沿到來時,電路狀態(tài)Q就在原來二進制值的基礎上增就在原來二進制值的基礎上增加加1,即符合二進制遞增計數(shù)的規(guī)律,直到計數(shù)值
39、為,即符合二進制遞增計數(shù)的規(guī)律,直到計數(shù)值為1111時,再時,再來一個來一個CP上升沿,計數(shù)值回到上升沿,計數(shù)值回到0000,重新開始計數(shù)。故稱該電,重新開始計數(shù)。故稱該電路為路為4位二進制遞增計數(shù)器位二進制遞增計數(shù)器。 可見可見,計數(shù)器實際上是對時鐘脈沖進行計數(shù),每到來一個時,計數(shù)器實際上是對時鐘脈沖進行計數(shù),每到來一個時鐘脈沖觸發(fā)沿,計數(shù)器改變一次狀態(tài)鐘脈沖觸發(fā)沿,計數(shù)器改變一次狀態(tài)。524.4 寄存器和移位寄存器寄存器和移位寄存器4.4.1 寄存器寄存器及及Verilog HDL建模建模4.4.2 移位寄存器移位寄存器及及Verilog HDL建模建模4.4.3 移位寄存器移位寄存器的應
40、用電路的應用電路534.4.1 寄存器寄存器及及Verilog HDL建模建模 Q0 Q0 1D C1 PD0 CE Q1 Q1 1D C1 CE Q2 Q2 1D C1 CE Q3 Q3 1D C1 CP Load CE PD1 PD2 PD3 圖圖 4.4.1 4 位位寄寄存存器器 o 圖中,圖中,PD3PD0是是4位數(shù)據(jù)輸入端,位數(shù)據(jù)輸入端,n當當Load = 1時,在時,在CP脈沖上升沿到來時,脈沖上升沿到來時,Q3 = PD3,Q2 = PD2,Q1 = PD1,Q0 = PD0,即輸入數(shù)據(jù),即輸入數(shù)據(jù)PD3PD0同時存入同時存入相應的觸發(fā)器相應的觸發(fā)器;n當當Load = 0時,即
41、使時,即使CP上升沿到來,輸出端的狀態(tài)將保持不上升沿到來,輸出端的狀態(tài)將保持不變??梢娮儭?梢?,電路具有存儲輸入的二進制數(shù)據(jù)的功能。,電路具有存儲輸入的二進制數(shù)據(jù)的功能。54module Reg4bit (Q,PD,CP,CLR_,Load); output reg 3:0Q; input wire 3:0PD; input CP,CLR_,Load; always (posedge CP or posedge CLR_) if (!CLR_) Q = 4b0; else if (Load) Q = PD;endmodule 例例4.4.1 試對圖試對圖4.4.1所示的寄存器進行建模。所示的寄
42、存器進行建模。5556module li4_41t; wire3:0 Q; reg3:0 PD; reg CP,CLR_,Load; li4_41 U1(Q,CP,PD,CLR_,Load); initial begin CLR_=1b0; CLR_=#20 1b1; #400 $stop; end initial begin PD=4b0000; #50 PD=4b0001; #50 PD=4b0010; #50 PD=4b0011; #50 PD=4b0100; #50 PD=4b0101; #50 PD=4b1001; #50 PD=4b1101; #50 $stop; endiniti
43、al begin Load=1b0; #100 Load=1b1; #100 Load=1b0; #100 Load=1b1; #100 $stop; end always begin CP=1b0; CP=#20 1b1; #20; endendmodule57module Register /Verilog 2001, 2005 syntax #(parameter N = 8) /定義參數(shù)定義參數(shù) N = 8 (output reg N-1:0Q, /數(shù)據(jù)輸出端口及變量的數(shù)據(jù)類型聲明數(shù)據(jù)輸出端口及變量的數(shù)據(jù)類型聲明 input wire N-1:0PD,/并行數(shù)據(jù)輸入并行數(shù)據(jù)輸入 inp
44、ut CP,CLR_,Load /輸入端口聲明輸入端口聲明); always (posedge CP or posedge CLR_) if (CLR_) Q = 0; else if (Load) Q C1 1D 1D 1D Q1 Q2 Q3 Q3 Q0 Q1 Q0 DSO FF0 FF1 FF2 FF3 C1 C1 C1 R R R S PE 圖4.4.5 環(huán)形計數(shù)器66如果將圖如果將圖4.4.34.4.3電路中電路中的的 與與D DININ相連,則構(gòu)成相連,則構(gòu)成扭環(huán)形計數(shù)器扭環(huán)形計數(shù)器,亦稱為亦稱為約翰遜計數(shù)器(約翰遜計數(shù)器(Johnson counterJohnson counter
45、),),電路的狀態(tài)將電路的狀態(tài)將增加一倍。增加一倍。 1D Q0 DIN CP C1 1D 1D 1D Q1 Q2 Q3 Q3 Q0 Q1 Q0 DSO FF0 FF1 FF2 FF3 C1 C1 C1 R R R S PE 圖4.4.6 扭環(huán)形計數(shù)器673Qmodule ShiftReg (Q,Din,CP,CLR_); input Din; /Serial Data inputs input CP, CLR_; /Clock and Reset output reg 3:0 Q; /Register output always (posedge CP or negedge CLR_) if
46、 (CLR_) Q = 4b0000; else begin /Shift right Q0 = Din; Q3:1 C1 1D 1D 1D Q1 Q2 Q3 Q3 Q0 Q1 Q0 DSO DPO FF0 FF1 FF2 FF3 C1 C1 C1 6869例例4.4.4一個一個4位的雙向移位寄存器框圖如圖位的雙向移位寄存器框圖如圖4.4.6所示。該寄所示。該寄存器有兩個控制輸入端(存器有兩個控制輸入端(S1、S0)、兩個串行數(shù)據(jù)輸入端)、兩個串行數(shù)據(jù)輸入端(Dsl、Dsr)、)、4個并行數(shù)據(jù)輸入端和個并行數(shù)據(jù)輸入端和4個并行輸出端,要求實個并行輸出端,要求實現(xiàn)現(xiàn)5種功能:異步置零、同步置數(shù)、
47、左移、右移和保持原狀態(tài)不種功能:異步置零、同步置數(shù)、左移、右移和保持原狀態(tài)不變,其功能如表變,其功能如表4.4.2所示。試用功能描述風格對其建模。所示。試用功能描述風格對其建模。圖4.4.6 雙向移位寄存器框圖70module UniversalShift (S1,S0,Din,Dsl,Dsr,Q,CP,CLR_); input S1, S0; /Select inputs input Dsl, Dsr; /Serial Data inputs input CP, CLR_; /Clock and Reset input 3:0 Din; /Parallel Data input output
48、 reg 3:0 Q; /Register outputalways (posedge CP or negedge CLR_) if (CLR_) Q = 4b0000; else case (S1,S0) 2b00: Q = Q; /No change 2b01: Q = Dsr,Q3:1; /Shift right 2b10: Q = Q2:0,Dsl; /Shift left 2b11: Q C1 1D 1D Q1 Q2 FF0 FF1 FF2 C1 C1 R R R CLR Out Delay0 Delay1 Delay2 72module Debounce (Out,Btn_In,C
49、LK,CLR_); input 3:0 Btn_In; /Button inputs input CLK, CLR_; /Clock and Reset output 3:0 Out; /Register output reg 3:0 Delay0; reg 3:0 Delay1; reg 3:0 Delay2; always (posedge CLK or negedge CLR_)begin if (CLR_) begin Delay0 = 4b0000; Delay1 = 4b0000; Delay2 = 4b0000;end else begin /Shift right Delay0
50、 = Btn_In; Delay1 = Delay0; Delay2 C1 1D 1D Q1 Q2 FF0 FF1 FF2 C1 C1 R R R CLR Out Delay0 Delay1 Delay2 75(1)設計塊:單脈沖產(chǎn)生電路的代碼如下:)設計塊:單脈沖產(chǎn)生電路的代碼如下:module ClockPulse (Out, Btn_In,CLK,CLR_); input Btn_In; /Button inputs input CLK, CLR_; /Clock and Reset output reg Out; /Register output reg Delay0; reg Del
51、ay1; reg Delay2; always (posedge CLK or negedge CLR_)begin if (CLR_) Delay0, Delay1, Delay2 = 3b000; else begin /Shift right Delay0 = Btn_In; Delay1 = Delay0; Delay2 = Delay1; endendassign Out = Delay0 & Delay1 & Delay2;endmodule 76(2)激勵塊:給)激勵塊:給輸入(輸入(CLR_、Btn_In和和CLK)賦值,產(chǎn)生激勵信號。)賦值,產(chǎn)生激勵信號。module Tes
52、t_ClockPulse ; reg Btn_In; /Button inputs reg CLK, CLR_; /Clock and Reset wire Out; /single clock pulse output ClockPulse U0(Out, Btn_In,CLK,CLR_); initial begin / CLR_ CLR_ = 1b0; CLR_ = #20 1b1; #350 $stop; /總仿真時間為總仿真時間為370 end always begin / CLK CLK = 1b0; CLK = #10 1b1; #10; end 77initial begin
53、/ Btn_In Btn_In = 1b0; Btn_In = #30 1b1; Btn_In = #5 1b0; Btn_In = #5 1b1; Btn_In = #20 1b0; #100; Btn_In = 1b1; Btn_In = #5 1b0; Btn_In = #5 1b1; Btn_In = #80 1b0; end endmodule78(3) 仿真波形仿真波形79(2) 計數(shù)器的分類計數(shù)器的分類按脈沖輸入方式,分為同步和異步計數(shù)器按脈沖輸入方式,分為同步和異步計數(shù)器按進位體制,分為二進制、十進制和任意進制計數(shù)器按進位體制,分為二進制、十進制和任意進制計數(shù)器按邏輯功能,分為
54、加法、減法和可逆計數(shù)器按邏輯功能,分為加法、減法和可逆計數(shù)器概概 述述(1) 計數(shù)器的邏輯功能計數(shù)器的邏輯功能 計數(shù)器的基本功能是對輸入時鐘脈沖進行計數(shù)。它也可計數(shù)器的基本功能是對輸入時鐘脈沖進行計數(shù)。它也可用于分頻、定時、產(chǎn)生節(jié)拍脈沖和脈沖序列及進行數(shù)字用于分頻、定時、產(chǎn)生節(jié)拍脈沖和脈沖序列及進行數(shù)字運算等。運算等。4.5 同步同步計數(shù)器計數(shù)器80同步計數(shù)器同步計數(shù)器異步計數(shù)器異步計數(shù)器加計數(shù)器加計數(shù)器減計數(shù)器減計數(shù)器可逆計數(shù)器可逆計數(shù)器二進制計數(shù)器二進制計數(shù)器非二進制計數(shù)器非二進制計數(shù)器 十進制計數(shù)器十進制計數(shù)器 任意進制計數(shù)器任意進制計數(shù)器加計數(shù)器加計數(shù)器減計數(shù)器減計數(shù)器可逆計數(shù)器可逆計
55、數(shù)器二進制計數(shù)器二進制計數(shù)器非二進制計數(shù)器非二進制計數(shù)器 十進制計數(shù)器十進制計數(shù)器 任意進制計數(shù)器任意進制計數(shù)器概概 述述計數(shù)器運行時,依次遍歷規(guī)定的各狀態(tài)后完成一次循環(huán),它所計數(shù)器運行時,依次遍歷規(guī)定的各狀態(tài)后完成一次循環(huán),它所經(jīng)過的狀態(tài)總數(shù)稱為計數(shù)器的經(jīng)過的狀態(tài)總數(shù)稱為計數(shù)器的“模?!保∕odulo),通常用,通常用M表示。表示。814.5.1 同步計數(shù)器的設計同步計數(shù)器的設計例例4.5.1 用用D觸發(fā)器和邏輯門設計一個同步六進制計數(shù)器。觸發(fā)器和邏輯門設計一個同步六進制計數(shù)器。要求有要求有一個控制信號一個控制信號U, 當當U=1時,計數(shù)次序為時,計數(shù)次序為0,1,2,3,4,5,0,1,2
56、,; 當當U=0時,計數(shù)次序為時,計數(shù)次序為5,4,3,2,1,0,5,4,3,。 另外另外,當遞增計數(shù)到最大值,當遞增計數(shù)到最大值5時,要求輸出一個高電平時,要求輸出一個高電平CO=1;當遞減計數(shù)到最小值;當遞減計數(shù)到最小值0時,也要求輸出一個高電平時,也要求輸出一個高電平BO=1。解:解:(1) 分析設計要求,畫出總體框圖。分析設計要求,畫出總體框圖。根據(jù)要求,計數(shù)器共有根據(jù)要求,計數(shù)器共有6個狀態(tài),我們要用個狀態(tài),我們要用D觸發(fā)器來表示觸發(fā)器來表示或區(qū)分出這或區(qū)分出這6個狀態(tài),需要多少個個狀態(tài),需要多少個D觸發(fā)器才夠呢?由于觸發(fā)器才夠呢?由于3個個D觸發(fā)器能夠存儲觸發(fā)器能夠存儲3位二進制
57、數(shù),而位二進制數(shù),而3位位2進制數(shù)能表示進制數(shù)能表示23=8個個狀態(tài),即狀態(tài),即000,001,010,011,100,101,110,111,所以只需要,所以只需要3個觸個觸發(fā)器就能表示發(fā)器就能表示6個狀態(tài)個狀態(tài)。824.5.1 同步計數(shù)器的設計同步計數(shù)器的設計總體電路框圖如下:總體電路框圖如下: D2:0 CP CO 組合電路 3 Q2:0 CLR Q2:0 NS2:0 3 U U 觸發(fā)器 BO BO CO 左半部分是左半部分是3個個D觸發(fā)器,用于記錄計數(shù)器的當前狀態(tài)。右觸發(fā)器,用于記錄計數(shù)器的當前狀態(tài)。右半部分是組合邏輯,生成下一個狀態(tài)信號并產(chǎn)生輸出信號。半部分是組合邏輯,生成下一個狀態(tài)
58、信號并產(chǎn)生輸出信號。由于下一個狀態(tài)信號與觸發(fā)器的由于下一個狀態(tài)信號與觸發(fā)器的D端相連接,因此,該信號端相連接,因此,該信號也被稱為觸發(fā)器的也被稱為觸發(fā)器的激勵信號激勵信號。834.5.1 同步計數(shù)器的設計同步計數(shù)器的設計(2) 畫畫出狀態(tài)轉(zhuǎn)換圖出狀態(tài)轉(zhuǎn)換圖 000 101 100 011 010 001 U=1 U=0 U=1 U=0 U=0 U=1 U=0 U=1 U=1 U=0 U=0 U=1 (3)列出轉(zhuǎn)換表列出轉(zhuǎn)換表84(4)確定下一個狀態(tài)的邏輯表達式確定下一個狀態(tài)的邏輯表達式020 1 0QQQQNS0 1 1 0 1 20 1 20 1 2 1 QQQUQQQUQQQUQQQUNS
59、0 1 20 1 20 1 20 1 22QQQUQQQUQQQUQQQUNS 1 1 1 1 NS2 Q1 U Q2 Q0 1 1 1 1 NS1 Q1 U Q2 Q0 1 1 1 1 1 1 NS0 Q1 U Q2 Q0 0 1 20 1 2QQQUBOQQQUCO同理,得到同理,得到85 C P R C 1 1D FF0 Q0 R C 1 1 D FF2 R C 1 1D FF1 Q 0 +VDD Q2 U Q1 Q0 U 1 0k Q1 Q2 Q1 Q2 CO Q2 Q1 Q0 U U B O Q2 Q 1 Q0 U C LR (5) 畫畫出邏輯圖出邏輯圖864.5.2 同步同步計數(shù)器
60、的計數(shù)器的Verilog HDL建模建模例例4.5.2 試用試用Verilog HDL對圖對圖4.5.4所示電路建模所示電路建模(1)設計塊:)設計塊:module Counter6 (CP,CLR_,U,Q,CO,BO); input CP, CLR_, U; output reg 2:0 Q; /Data output output CO,BO; assign CO = U & (Q = 3d5); assign BO = U & (Q = 3d0) & (CLR_= 1b1);always (posedge CP or negedge CLR_) if (CLR_) Q = 3b000;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度木地板行業(yè)市場分析與競爭策略合同4篇
- 二零二五年度出租車清潔能源推廣承包合同4篇
- 2025年度個人對公司借款及科技成果轉(zhuǎn)化合同3篇
- 2025至2030年中國電熱開水器數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國開關閥數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國低合金鋼電焊條數(shù)據(jù)監(jiān)測研究報告
- 2025年中國窗戶護欄市場調(diào)查研究報告
- 2025年中國推舉訓練器市場調(diào)查研究報告
- 2025年中國絲瓜絡衛(wèi)生沐浴用品市場調(diào)查研究報告
- 2025至2031年中國玻璃角夾行業(yè)投資前景及策略咨詢研究報告
- 紅色革命故事《王二小的故事》
- 《白蛇緣起》賞析
- 海洋工程用高性能建筑鋼材的研發(fā)
- 蘇教版2022-2023學年三年級數(shù)學下冊開學摸底考試卷(五)含答案與解析
- 英語48個國際音標課件(單詞帶聲、附有聲國際音標圖)
- GB/T 6892-2023一般工業(yè)用鋁及鋁合金擠壓型材
- 冷庫安全管理制度
- 2023同等學力申碩統(tǒng)考英語考試真題
- 家具安裝工培訓教案優(yōu)質(zhì)資料
- 在雙減政策下小學音樂社團活動有效開展及策略 論文
- envi二次開發(fā)素材包-idl培訓
評論
0/150
提交評論