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