電子科技大學(xué)實(shí)驗(yàn)文檔
名稱數(shù)字邏輯電路實(shí)驗(yàn) 實(shí)驗(yàn)名稱基于一般模型的計(jì)數(shù)器設(shè)計(jì) 指導(dǎo)教師鄭* 學(xué)生姓名鄭* 學(xué)生學(xué)號(hào)17011737 學(xué)生班級(jí) 17040324 學(xué)生專業(yè)電子信息類 實(shí)驗(yàn)日期 2018年6月 - 實(shí)驗(yàn)?zāi)康?/font>
(1)熟悉計(jì)數(shù)器的一般模型 (2)掌握在QuartusII中實(shí)現(xiàn)計(jì)數(shù)器一般模型的方法。 (3)掌握自頂向下的電路設(shè)計(jì)方法。 (4)掌握使用FPGA實(shí)現(xiàn)時(shí)序電路的方法。 如果把計(jì)數(shù)器看作是輸出狀態(tài)隨時(shí)鐘信號(hào)不斷變化的狀態(tài)機(jī),可以把它抽象成如圖5.2.1所示的一般結(jié)構(gòu)模型。在這個(gè)模型里,包含一個(gè)根據(jù)現(xiàn)態(tài)求得次態(tài)的狀態(tài)譯碼器,和一個(gè)由時(shí)鐘信號(hào)同步控制的n位寄存器組。
如果把計(jì)數(shù)器看作是輸出狀態(tài)隨時(shí)鐘信號(hào)不斷變化的狀態(tài)機(jī),可以把它抽象成如圖5.2.1所示的一般結(jié)構(gòu)模型。在這個(gè)模型里,包含一個(gè)根據(jù)現(xiàn)態(tài)求得次態(tài)的狀態(tài)譯碼器,和一個(gè)由時(shí)鐘信號(hào)同步控制的n位寄存器組。 圖5.2.1 計(jì)數(shù)器的一般模型 在QuartusII中,無(wú)論是實(shí)現(xiàn)寄存器組模塊,還是實(shí)現(xiàn)譯碼器模塊,都是比較容易的。例如實(shí)現(xiàn)一個(gè)模16計(jì)數(shù)器,根據(jù)第四章實(shí)驗(yàn)4.4廣義譯碼器的設(shè)計(jì)方法,可以寫Verilog HDL代碼實(shí)現(xiàn)。
首先創(chuàng)建新工程counter16,為新工程建立新文件夾counter16,命名工程和頂層文件名為counter16。點(diǎn)擊New|Verilog HDL File,新建文本文件,打開文本編輯窗口,鍵入Verilog HDL代碼,如圖5.2.2所示,生成CNT16元件。
圖5.2.2 狀態(tài)譯碼器
在這里,由于輸出狀態(tài)有4位,需要4個(gè)寄存器保存數(shù)據(jù),所以寄存器組模塊的電路圖如圖5.2.3所示。點(diǎn)擊New|Block Diagram/Schematic File,新建一個(gè)原理圖文件,命名為DFF4。在打開的圖形編輯窗口,放置4個(gè)dff元件,以及相應(yīng)的輸入輸出端口,連線。將所有的時(shí)鐘信號(hào)用統(tǒng)一的時(shí)鐘輸入信號(hào)CLK來(lái)控制,所有的清零信號(hào),用RST來(lái)統(tǒng)一控制。命名好輸入輸出端口,4位寄存器組模塊就繪制好了,生成一個(gè)DFF4的元件。當(dāng)然也可以調(diào)用元件庫(kù)中的74175等集成的寄存器宏模塊實(shí)現(xiàn)電路。
然后再新建一個(gè)原理圖文件,命名為counter16,為頂層文件,和工程同名。調(diào)用CNT16和DFF4元件,按照計(jì)數(shù)器一般結(jié)構(gòu)模型連接兩個(gè)元件。注意模塊間傳輸多位數(shù)據(jù)時(shí),點(diǎn)擊工具欄上的  符號(hào),用總線進(jìn)行連接。加上相應(yīng)的輸入和輸出端口,繪制頂層電路,如圖5.2.4所示。
圖5.2.3 DFF4寄存器組
圖5.2.4 計(jì)數(shù)器一般模型原理圖
設(shè)計(jì)計(jì)數(shù)器時(shí),有時(shí)需要設(shè)計(jì)進(jìn)位輸出或者借位輸出信號(hào),因此增加一個(gè)進(jìn)位信號(hào),如下圖5.2.5所示。
圖5.2.5 進(jìn)位輸出電路
電路原理圖繪制完成后,接下來(lái)是編譯、仿真和下載。仿真時(shí),盡可能測(cè)試所有的輸入情況。例如在RST信號(hào)初期,用鼠標(biāo)左鍵拖曳的方式選中一段,置為低電平(有效,清零),后面置為高電平(無(wú)效,正常計(jì)數(shù)),如圖5.2.6所示,以觀察清零信號(hào)對(duì)輸出的影響。
圖5.2.6 對(duì)RST賦值
圖5.2.7是16進(jìn)制計(jì)數(shù)器的仿真結(jié)果。由圖可見,在計(jì)數(shù)狀態(tài)到達(dá)1110時(shí),進(jìn)位輸出有一個(gè)毛刺。這是因?yàn)樵谳敵鰻顟B(tài)從1011到1110變化時(shí),變化時(shí)間不一致,導(dǎo)致有1111的信號(hào)短暫發(fā)生,因而出現(xiàn)了進(jìn)位輸出端的毛刺。
圖5.2.7 16進(jìn)制計(jì)數(shù)器仿真結(jié)果
在這個(gè)一般模型電路的基礎(chǔ)上,增加一個(gè)比較器模塊,可以實(shí)現(xiàn)反饋清零型的一般模型電路。例如實(shí)現(xiàn)一個(gè)模12計(jì)數(shù)器,電路模型圖如圖5.2.8所示。
圖5.2.8 基于一般模型的反饋清零型電路模塊圖
在QuartusII中畫出原理圖,如圖5.2.9所示。其中,譯碼器模塊和寄存器組和之前電路一模一樣。比較器模塊,用來(lái)比較現(xiàn)態(tài)CS和反饋清零預(yù)置數(shù)A,如果兩者相等,則清零;不相等,正常計(jì)數(shù)。
圖5.2.9 反饋清零的一般模型電路原理圖
比較器具體實(shí)現(xiàn)如下:
module comP(CS,A,R); //定義模塊名,及輸入輸出端口
input [3:0]CS,A;// 定義輸入端口,CS為現(xiàn)態(tài)輸出,A為預(yù)置清零狀態(tài)
output R;// 定義輸出端口,R為清零標(biāo)志數(shù)
reg R;// 輸出端口定義為reg類型
always@(CS,A,R)// always過(guò)程語(yǔ)句,當(dāng)CS、A、R發(fā)生變化,執(zhí)行后面的塊語(yǔ)句
case(CS) // case條件語(yǔ)句,這里也可以用if語(yǔ)句實(shí)現(xiàn)同樣的功能
A:R<=1'b1; // 當(dāng)CS等于A,R被賦值為1,這時(shí)反饋回寄存器,使輸出清零
default:R<=1'b0;// 當(dāng)CS不等于A,R被賦值為0,這時(shí)計(jì)數(shù)器正常計(jì)數(shù);
endcase // case語(yǔ)句結(jié)束
endmodule // 模塊結(jié)束
這個(gè)電路,可以通過(guò)修改清零預(yù)置數(shù)A,方便的更改計(jì)數(shù)模值,仿真結(jié)果如圖5.2.10所示。
圖5.2.10 反饋清零型一般模型電路的仿真結(jié)果 - 基于一般結(jié)構(gòu)模型,設(shè)計(jì)一個(gè)10進(jìn)制加法計(jì)數(shù)器。使用QuartusII 完成創(chuàng)建工程、編輯電路圖、編譯,編輯波形文件仿真,記錄波形并說(shuō)明仿真結(jié)果,最后在FPGA上進(jìn)行硬件測(cè)試。
(2)根據(jù)計(jì)數(shù)器設(shè)計(jì)的一般模型,設(shè)計(jì)一個(gè)12進(jìn)制加減法可逆計(jì)數(shù)器。使用QuartusII 完成創(chuàng)建工程、編輯電路圖、編譯,編輯波形文件仿真,記錄波形并說(shuō)明仿真結(jié)果,最 FPGA上進(jìn)行硬件測(cè)試  - 根據(jù)計(jì)數(shù)器設(shè)計(jì)的一般模型,設(shè)計(jì)初值可預(yù)置的計(jì)數(shù)器,變換預(yù)置數(shù)可使計(jì)數(shù)模值在2-20之間變化。使用QuartusII 完成創(chuàng)建工程、編輯電路圖、編譯,編輯波形文件仿真,記錄波形并說(shuō)明仿真結(jié)果,最后在FPGA上進(jìn)行硬件測(cè)試。
-
五.實(shí)驗(yàn)總結(jié) 本次實(shí)驗(yàn)先從最基本的一般模型設(shè)計(jì)計(jì)數(shù)器,按照一般模型的原理圖,先設(shè)計(jì)譯碼器對(duì)輸入信號(hào)進(jìn)行編碼輸出譯碼后的信號(hào)給寄存器存儲(chǔ)數(shù)據(jù)。再根據(jù)要求,設(shè)計(jì)出正確的進(jìn)位輸出。本次實(shí)驗(yàn)在預(yù)習(xí)的電路原理圖設(shè)計(jì)與用語(yǔ)言設(shè)計(jì)譯碼器中出現(xiàn)不少問題。后不斷查閱資料,理解完畢,且在設(shè)計(jì)初值可預(yù)調(diào)的計(jì)數(shù)器實(shí)驗(yàn)中,由于采取電路圖的方式難以成功實(shí)現(xiàn),故在此次實(shí)驗(yàn)設(shè)計(jì)中采取了以HDL語(yǔ)言的形式進(jìn)行編譯及仿真,并成功實(shí)現(xiàn)。而在實(shí)現(xiàn)引腳導(dǎo)入時(shí)未進(jìn)行分頻,但在仿真中已成功實(shí)現(xiàn),且在位數(shù)上與理論設(shè)想相同。經(jīng)過(guò)這次實(shí)驗(yàn),我熟悉計(jì)數(shù)器的一般模型掌握在QuartusII中實(shí)現(xiàn)計(jì)數(shù)器一般模型的方法。掌握自頂向下的電路設(shè)計(jì)方法。掌握使用FPGA實(shí)現(xiàn)時(shí)序電路的方法。 六.思考題 在verilog設(shè)計(jì)中,給時(shí)序電路清0有兩種不同方法,它們是什么?如何實(shí)現(xiàn)? 同步復(fù)位和異步復(fù)位。同步復(fù)位是指與時(shí)鐘同步,當(dāng)復(fù)位信號(hào)有效之后,出現(xiàn)時(shí)鐘有效邊沿時(shí)才對(duì)電路模塊進(jìn)行復(fù)位操作;而異步復(fù)位與時(shí)鐘信號(hào)無(wú)關(guān),只要復(fù)位信號(hào)有效,無(wú)論這時(shí)時(shí)鐘信號(hào)是什么樣,都對(duì)電路模塊進(jìn)行復(fù)位操作。
以上圖文的Word格式文檔下載(內(nèi)容和本網(wǎng)頁(yè)上的一模一樣,方便大家保存):
|