《EDA實驗報告計數(shù)器》由會員分享,可在線閱讀,更多相關(guān)《EDA實驗報告計數(shù)器(10頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、數(shù)字電路與邏輯設(shè)計實驗報告
模323計數(shù)器設(shè)計實驗報告
一、 實驗內(nèi)容
在QuartusII平臺上,利用VHDL代碼實現(xiàn)學號323計數(shù)器的設(shè)計,并在三位數(shù)碼管顯示出來。
二、 實驗步驟與過程分析
1、 建立工程。
打開Quartus II軟件平臺,點擊File---〉new project wizard建立一個工程xuehao_323,工程所在文件夾名字為xuehao_323,設(shè)置頂層實體名稱為xuehao_323,點擊next設(shè)置device,按照實驗箱上FPGA的芯片名更改編程芯片的設(shè)置。
分析:
選擇的硬件平臺是Altera EPF10K20TI144_4的FPGA
2、試驗箱。
2、 添加VHDL文件。
在所在工程添加文件cnt10.vhd(十進制計數(shù)器),cnt_xuehao.vhd(323進制計數(shù)器),scan_led3_vhd.vhd(三位數(shù)碼管顯示),exp_cnt_xuehao323_7seg.vhd(數(shù)碼管顯示323三位學號計數(shù)器)四個文件。
這里通過老師給出的代碼進行修改且理解:
cnt10.vhd如下:
分析:
這是十進制計數(shù)器的VHDL代碼設(shè)計,因為十進制有十個狀態(tài),所以輸入數(shù)據(jù)和輸出狀態(tài)需要四位寬,其中輸入端口有aclr 清零端,clock時鐘信號,cnt_en使能端,data[3..0]數(shù)據(jù)輸入,slo
3、ad裝載使能,當aclr為高電平有效時,輸出清零,從0開始,計數(shù)為時鐘信號clock的上升沿到來時且使能端cnt_en為高電平有效時自動加1(sload為低電平時),如果裝載使能sload為高電平有效時,則裝載數(shù)據(jù)data[3..0],輸出端口有兩個,分別為cout(當q[3..0]為9時輸出為高電平),q[3..0]變化為0—9循環(huán)變化。
cnt_xuehao.vhd分析如下:
這里是調(diào)用cnt_10十進制計數(shù)器的元件例化來設(shè)計323(學號)計數(shù)器。輸入端口aclr(高電平有效清零端),clock(時鐘信號上升沿有效),cnt_en(使能端),sload(
4、裝載時能,高電平有效時裝在輸入的數(shù)據(jù)),datab[3..0],datas[3..0],datag[3..0](三位學號的數(shù)據(jù)輸入端,每位變化相當于一個十進制計數(shù)器);輸出端口 qb[3..0](百位)qs[3..0](十位)qg [3..0](個位)變化為qb qs qg=000到322共323中狀態(tài),當?shù)扔?22時,輸出cout為高電平指示達到一個循環(huán)。
這里的主要思想是用三次十進制計數(shù)器分別生成323計數(shù)器的三位。
scan_led3_vhd.vhd如下:
分析:
這里是七段數(shù)碼管的顯示,顯示八個數(shù)碼管中的三個。輸
5、入引腳scan_clk為時鐘源,cnt_aclr為清零端,datab[3..0],datas[3..0],datag[3..0]為數(shù)據(jù)輸入,用以顯示得到三位十六進制的數(shù),已在數(shù)碼管上顯示出來,輸出接口seg7[6..0]用來接七段數(shù)碼管的abcdefg段, wei[2..0]用來選擇八個數(shù)碼管中的三個來顯示輸入數(shù)據(jù)。
exp_cnt_xuehao323_7seg.vhd如下:
分析:
這里是用到元件例化把323計數(shù)器和3位數(shù)碼管結(jié)合,達到在七段數(shù)碼管上顯示323計數(shù)器的輸出的三位。也是我們實驗的最終目的,顯示計數(shù)器的狀態(tài)變化。輸入引腳和輸出引腳都是上面幾個vhd文件的結(jié)合,主要有輸入
6、接口aclr(高電位清零),clock(計數(shù)器時鐘信號),scan_clk(數(shù)碼管時鐘源),cnt_en(時能端),sload(裝在時能),數(shù)據(jù)裝載輸入datab[3..0](百位),datas[3..0](十位),datag[3..0](個位);輸出端口cout(當輸出狀態(tài)為322時cout輸出為高電平),seg7[6..0](七段數(shù)碼管的abcdef段), wei[2..0]三位數(shù)碼管顯示。
3、 簡單編譯
這里首先點擊左上角files中,選擇exp_cnt_xuehao323_7seg.vhd右擊選擇Set as Top-level Entity設(shè)為為頂層文件,然后鍵盤按下Ct
7、rl+L進行編譯。提示成功。
4、 RTL調(diào)試
點擊Tools->Netlist viewers->RTL viewer命令查看經(jīng)軟件解釋生成的原理圖如下:
分析:
如上圖由兩部分組成,一部分是cnt_xuehao(323計數(shù)器),另一部分是scan_led3_vhd(三位數(shù)碼管),輸出端為cout和wei[2..0],seg7[6..0].輸入端為aclr(清零命令),clock(計數(shù)器時鐘信號),cnt_en(使能端),sload(裝載使能),數(shù)據(jù)輸入datab[3..0](百位),datas[3..0](十位),datag[3..
8、0](個位),scan_clk(數(shù)碼管時鐘源).
容易驗證RTL調(diào)試與VHD文件相符。
點擊cnt_xuehao部分生成cnt_xuehao的RTL部分如下圖:
分析:
如圖知道323計數(shù)器主要部分是由三個十進制計數(shù)器組成的。與相應(yīng)的VHDL代碼的實現(xiàn)功能是一致的。
4.功能仿真
下面我只對文件cnt_xuehao.vhd進行功能仿真,即對(學號)323計數(shù)器進行功能仿真。
首先設(shè)置cnt_xuehao.vhd為頂層實體文件(因為之前exp_cnt_xuehao323_7seg.vhd為頂層實體文件)。然后進行簡單編譯一次。
a). 點擊File->New->V
9、ector Waveform File建立波形文件。點擊“insert the node”,插入輸入端和輸出端接口。
b). 然后設(shè)置輸入端colck的周期為10ns;設(shè)置datab,datas,datag,qb,qs,qg為ASCII顯示;手動設(shè)置aclr(清零命令)為低電平,然后在180ns左右設(shè)置一小段為高電平以驗證清零作用;手動設(shè)置cnt_en(使能端)恒為高電平有效;手動設(shè)置sload(裝載使能)在前一周期為高電平有效,得以第一周期轉(zhuǎn)載輸入的數(shù)據(jù),接著一個周期后恒為低電平無效,之后只做時鐘計數(shù);手動設(shè)置輸入數(shù)據(jù)datab,datas,datag均恒為0,然后在第一周期把它們設(shè)置為3
10、99得以第一周期裝載(裝載使能sload有效)數(shù)據(jù),則計數(shù)從399開始(我的學號為323)。
則初始設(shè)置完成,如下圖:
保存波形文件為cnt_xuehao.vwf
c) 選擇ProcessingàGenerate Functional Simulation Netlist命令,產(chǎn)生功能仿真網(wǎng)表。
d)選擇AssignmentsàSettings命令,單擊Simulator Settings選項,在右側(cè)的Simulation mode下拉列表中選擇Functional項,并指定Simulation input波形文件為cnt_xuehao.vwf,單擊OK按鍵
11、完成設(shè)置
e)選擇ProcessingàStart Simulation命令,完成功能仿真,仿真結(jié)果為:
結(jié)果分析:
這里設(shè)置從399開始計數(shù)
如圖,使能端一直有效,第一個周期內(nèi),sload裝載時能有效,所以上升沿到來前,輸出qb qs qg=0 0 0, 上升沿到來時,由于sload為高電平有效,輸入數(shù)據(jù)datab datas datsg為399,所以裝載入399,所以輸出qb qs qg=399;第二個周期開始,每個周期隨著時鐘信號上升沿的到來時,開始計數(shù),所以qb qs qg從399變化為400,401,402,403,404,405,406,407,322,0
12、00(我的學號為323,所以323進制計數(shù)器設(shè)計成功),然后當180ns附近清零端aclr為高電平,則執(zhí)行清零命令,則輸出qb qs qg變?yōu)?00,接著又開始繼續(xù)計數(shù)。
綜上分析,323計數(shù)器設(shè)計成功,且有清零命令,裝載輸入功能,自動計數(shù)功能。
5.引腳設(shè)置與下載測試
a) 目標器件選擇及管腳分配。選擇菜單AssignmentsàPins,然后在分配窗口為輸入端和輸出端設(shè)置管腳。如圖為詳細的引腳設(shè)置:
b) 進行一次全編譯(ctrl+L)后,開始下載驗證。選擇好硬件設(shè)施,然后點擊start進行下載
分析:
這里是在宿舍用老師給的小電路板安裝驅(qū)動后來進行下載實驗的,這里出現(xiàn)的問題明明只選擇了三個數(shù)碼管,但是八個都一起亮了,換了很多塊板子都是這樣的問題,所以驗證沒有順利進行,只有下次做實驗時再繼續(xù)在實驗室用專用實驗箱進行驗證了。
三、實驗總結(jié)
這次實驗最大收獲是搞清楚了計數(shù)器的功能原理和完全接觸到了元件例化的用法,這里通過幾個文件相互元件例化的調(diào)用而達到從一位到三位的計數(shù)器設(shè)計,這么多次元件例化的接觸,印象很深刻。還有通過波能仿真的過程也收獲很大,在初始化輸入端的設(shè)置用了很多技巧,得以把計數(shù)器的清零功能裝載功能和計數(shù)功能都仿真出來。
10