verilog計(jì)數(shù)器實(shí)驗(yàn)報(bào)告_第1頁
verilog計(jì)數(shù)器實(shí)驗(yàn)報(bào)告_第2頁
verilog計(jì)數(shù)器實(shí)驗(yàn)報(bào)告_第3頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、計(jì)數(shù)器1、實(shí)現(xiàn)目標(biāo)及介紹實(shí)驗(yàn)實(shí)現(xiàn)了一個簡易的計(jì)數(shù)器,計(jì)數(shù)范圍可達(dá)899(0-899),通過key4按鍵計(jì)數(shù),每按下一次,計(jì)數(shù)加一,白位數(shù)顯示在led上,個位與十位顯示在數(shù)碼管上。為十進(jìn)制計(jì)數(shù),數(shù)碼管1計(jì)數(shù)到九后置零。數(shù)碼管2獲得進(jìn)位加一,數(shù)碼管2到9后當(dāng)再次獲得個位進(jìn)位時(shí)再次向白位進(jìn)一,點(diǎn)亮ledl,每白位點(diǎn)亮一個led。此外key4為清零鍵,可隨時(shí)按鍵清零。2、效果展示計(jì)數(shù)99清零計(jì)數(shù)100視頻展示(雙擊觀看)3、代碼實(shí)現(xiàn)與模塊分析1. 頂層模塊modulejishuqi(inputwireclk,rst,/時(shí)鐘和復(fù)位輸入inputwirekeyl,/撥碼計(jì)outputwire7:0led,

2、outputwire8:0segment_led_1,segment_led_2/數(shù)碼管輸出);wirekey_pulse;reg7:0cnt;/計(jì)時(shí)計(jì)數(shù)器reg7:0hud;/白位計(jì)數(shù)initialhud7:0=8b11111111;always(posedgeclkornegedgerst)begin/數(shù)碼管顯示要按照十進(jìn)制的方式顯示if(!rst)begincnt=8h00;hud7:0=8b11111111;endelseif(key_pulse)beginif(cnt3:0=4d9)/個位進(jìn)位判斷begincnt3:0=4d0;if(cnt7:4=4d9)/十位進(jìn)位判斷begincn

3、t7:4=4d0;hud7:0=hud7:0-1b1;endelsecnt7:4=cnt7:4+1b1;endelsecnt3:0=cnt3:0+1b1;endelsecnt=cnt;endassignled=hud;/例化調(diào)用數(shù)碼管顯示模塊segmentu2(.seg_data_1(cnt7:4),/g_datainput.seg_data_2(cnt3:0),/g_datainput.seg_led_1(segment_led_1),/MSBLSB=SEG,DP,G,F,E,D,C,B,A.seg_led_2(segment_led_2)/MSBLSB=SEG,DP,G,F,E,D,C,B

4、,A);/例化調(diào)用消抖模塊debounceu1(.clk(clk),.rst(rst),.key(key1),.key_pulse(key_pulse);endmodule數(shù)碼管顯示模塊modulesegment(seg_data_1,seg_data_2,seg_led_1,seg_led_2);input3:0seg_data_1;/數(shù)碼管需要顯示09十個數(shù)字,所以最少需要4位輸入做譯碼input3:0seg_data_2;/小腳丫上第二個數(shù)碼管output8:0seg_led_1;/在小腳丫上控制一個數(shù)碼管需要9個信號MSBLSB=DIG、DP、G、F、E、D、C、B、Aoutput8:

5、0seg_led_2;/在小腳丫上第二個數(shù)碼管的控制信號MSBLSB=DIG、DP、G、F、E、D、C、B、Areg8:0seg9:0;/定義了一個reg型的數(shù)組變雖,相當(dāng)于一個10*9的存儲器,存儲器一共有10個數(shù),每個數(shù)有9位寬initial/在過程塊中只能給reg型變雖賦值,Verilog中有兩種過程塊always和initial/initial和always不同,其中語句只執(zhí)行一次beginseg0=9h3f;/對存儲器中第一個數(shù)賦值9b00_0011_1111,相當(dāng)于共陰極接地,DP點(diǎn)變低不亮,7段顯示數(shù)字0seg1=9h06;/7段顯示數(shù)字1seg2=9h5b;/7段顯示數(shù)字2se

6、g3=9h4f;/7段顯示數(shù)字3seg4=9h66;/7段顯示數(shù)字4seg5=9h6d;/7段顯示數(shù)字5seg6=9h7d;/7段顯示數(shù)字6seg7=9h07;/7段顯示數(shù)字7seg8=9h7f;/7段顯示數(shù)字8seg9=9h6f;/7段顯示數(shù)字9endassignseg_led_1=segseg_data_1;/連續(xù)賦值,這樣輸入不同四位數(shù),就能輸出對于譯碼的9位輸出assignseg_led_2=segseg_data_2;endmodule按鍵消抖模塊/按鍵消抖moduledebounce(clk,rst,key,key_pulse);parameterN要消除的按鍵的數(shù)雖2;/clk;

7、inputinputrst;inputN-1:0key;入的按鍵outputN-1:0key_pulse;鍵動作產(chǎn)生的脈沖輸按regN-1:0key_rst_pre;/定義一個寄存器型變雖存儲上一個觸發(fā)時(shí)的按鍵值regN-1:0key_rst;/定義wireN-1:0key_edge;/檢一個寄存器變雖儲存儲當(dāng)前時(shí)刻觸發(fā)的按鍵值測到按鍵由高到低變化是產(chǎn)生一個高脈沖/利用非阻塞賦值特點(diǎn),將兩個時(shí)鐘觸發(fā)時(shí)按鍵狀態(tài)存儲在兩個寄存器變雖中always(posedgeclkornegedgerst)beginif(!rst)beginkey_rst=(N1b1;/初始化時(shí)給key_rst賦值全為1,中表

8、示N個1key_rst_pre=N1b1;endelsebeginkey_rst=key;/第一個時(shí)鐘上升沿觸發(fā)之后key的值賦給key_rst,同時(shí)key_rst的值賦給key_rst_prekey_rst_pre=key_rst;/非阻塞賦值。相當(dāng)于經(jīng)過兩個時(shí)鐘觸發(fā),key_rst存儲的是當(dāng)前時(shí)刻key的值,key_rst_pre存儲的是前一個時(shí)鐘的key的值endendassignkey_edge=key_rst_pre&(key_rst);/脈沖邊沿檢測。當(dāng)key檢測到下降沿時(shí),key_edge產(chǎn)生一個時(shí)鐘周期的高電平reg17:0cnt;/產(chǎn)生延時(shí)所用的計(jì)數(shù)器,系統(tǒng)時(shí)鐘12MHz,要

9、延時(shí)20ms左右時(shí)間,至少需要18位計(jì)數(shù)器/產(chǎn)生20ms延時(shí),當(dāng)檢測到key_edge有效是計(jì)數(shù)器清零開始計(jì)數(shù)always(posedgeclkornegedgerst)beginif(!rst)cnt=18h0;elseif(key_edge)cnt=18h0;elsecnt=cnt+1h1;endregN-1:0key_sec_pre;/延時(shí)后檢測電平寄存器變雖regN-1:0key_sec;延時(shí)后檢測key,如果按鍵狀態(tài)變低產(chǎn)生一個時(shí)鐘的高脈沖。如果按鍵狀態(tài)是高的話說明按鍵無效always(posedgeclkornegedgerst)beginif(!rst)key_sec=N1b1;

10、elseif(cnt=18h3ffff)key_sec=key;endalways(posedgeclkornegedgerst)beginif(!rst)key_sec_pre=(N1b1;elsekey_sec_pre=key_sec;endassignkey_pulse=key_sec_pre&(key_sec);endmodule4、源碼與源碼圖片modulejishuqi(inputwireclk,rst,/時(shí)鐘和復(fù)位輸入inputwirekey1,/撥碼計(jì)outputwire7:0led,outputwire8:0segment_led_1,segment_led_2/數(shù)碼管輸出)

11、;wirekey_pulse;reg7:0cnt;/計(jì)時(shí)計(jì)數(shù)器reg7:0hud;/白位計(jì)數(shù)initialhud7:0=8b11111111;always(posedgeclkornegedgerst)begin/數(shù)碼管顯示要按照十進(jìn)制的方式顯示if(!rst)begincnt=8h00;hud7:0=8b11111111;endelseif(key_pulse)beginif(cnt3:0=4d9)begincnt3:0=4d0;if(cnt7:4=4d9)begincnt7:4=4d0;hud7:0=hud7:0-1b1;endelsecnt7:4=cnt7:4+1b1;endelsecn

12、t3:0=cnt3:0+1b1;endelsecnt=cnt;endassignled=hud;segmentu2(.seg_data_1(cnt7:4),/g_datainput.seg_data_2(cnt3:0),/g_datainput.seg_led_1(segment_led_1),/MSBLSB=SEG,DP,G,F,E,D,C,B,A.seg_led_2(segment_led_2)/MSBLSB=SEG,DP,G,F,E,D,C,B,A);debounceu1(.clk(clk),.rst(rst),.key(keyl),.key_pulse(key_pulse);endmo

13、dule/按鍵消抖moduledebounce(clk,rst,key,key_pulse);parameterN=2;要消除的按鍵的數(shù)雖inputclk;inputrst;inputN-1:0key;入的按鍵outputN-1:0key_pulse;/輸按regN-1:0key_rst_pre;/定義鍵動作產(chǎn)生的脈沖一個寄存器型變雖存儲上一個觸發(fā)時(shí)的按鍵值regN-1:0key_rst;/定義一個寄存器變雖儲存儲當(dāng)前時(shí)刻觸發(fā)的按鍵值wireN-1:0key_edge;/檢測到按鍵由高到低變化是產(chǎn)生一個高脈沖/利用非阻塞賦值特點(diǎn),將兩個時(shí)鐘觸發(fā)時(shí)按鍵狀態(tài)存儲在兩個寄存器變雖中always(po

14、sedgeclkornegedgerst)beginif(!rst)beginkey_rst=N1b1;/初始化時(shí)給key_rst賦值全為1,中表示N個1key_rst_pre=N1b1;endelsebeginkey_rst=key;/第一個時(shí)鐘上升沿觸發(fā)之后key的值賦給key_rst,同時(shí)key_rst的值賦給key_rst_prekey_rst_pre=key_rst;/非阻塞賦值。相當(dāng)于經(jīng)過兩個時(shí)鐘觸發(fā),key_rst存儲的是當(dāng)前時(shí)刻key的值,key_rst_pre存儲的是前一個時(shí)鐘的key的值endendassignkey_edge=key_rst_pre&(key_rst);/

15、脈沖邊沿檢測。當(dāng)key檢測到下降沿時(shí),key_edge產(chǎn)生一個時(shí)鐘周期的高電平reg17:0cnt;/產(chǎn)生延時(shí)所用的計(jì)數(shù)器,系統(tǒng)時(shí)鐘12MHz,要延時(shí)20ms左右時(shí)間,至少需要18位計(jì)數(shù)器/產(chǎn)生20ms延時(shí),當(dāng)檢測到key_edge有效是計(jì)數(shù)器清零開始計(jì)數(shù)always(posedgeclkornegedgerst)beginif(!rst)cnt=18h0;elseif(key_edge)cnt=18h0;elsecnt=cnt+1h1;endregN-1:0key_sec_pre;/延時(shí)后檢測電平寄存器變雖regN-1:0key_sec;延時(shí)后檢測key,如果按鍵狀態(tài)變低產(chǎn)生一個時(shí)鐘的高脈沖

16、。如果按鍵狀態(tài)是高的話說明按鍵無效always(posedgeclkornegedgerst)beginif(!rst)key_sec=N1b1;elseif(cnt=18h3ffff)key_sec=key;endalways(posedgeclkornegedgerst)beginif(!rst)key_sec_pre=N1b1;elsekey_sec_pre=key_sec;endassignkey_pulse=key_sec_pre&(key_sec);endmodulemodulesegment(seg_data_1,seg_data_2,seg_led_1,seg_led_2);i

17、nput3:0seg_data_1;/數(shù)碼管需要顯示09十個數(shù)字,所以最少需要4位輸入做譯碼input3:0seg_data_2;/小腳丫上第二個數(shù)碼管output8:0seg_led_1;/在小腳丫上控制一個數(shù)碼管需要9個信號MSBLSB=DIG、DP、G、F、E、D、C、B、Aoutput8:0seg_led_2;/在小腳丫上第二個數(shù)碼管的控制信號MSBLSB=DIG、DP、G、F、E、D、C、B、Areg8:0seg9:0;/定義了一個reg型的數(shù)組變雖,相當(dāng)于一個10*9的存儲器,存儲器一共有10個數(shù),每個數(shù)有9位寬initial/在過程塊中只能給reg型變雖賦值,Verilog中有兩

18、種過程塊always和initial/initial和always不同,其中語句只執(zhí)行一次beginseg0=9h3f;/對存儲器中第一個數(shù)賦值9b00_0011_1111,相當(dāng)于共陰極接地,DP點(diǎn)變低不亮,7段顯示數(shù)字0seg1=9h06;/7段顯示數(shù)字1seg2=9h5b;/7段顯示數(shù)字2seg3=9h4f;/7段顯示數(shù)字3seg4=9h66;/7段顯示數(shù)字4seg5=9h6d;/7段顯示數(shù)字5seg6=9h7d;/7段顯示數(shù)字6seg7=9h07;/7段顯示數(shù)字7seg8=9h7f;/7段顯示數(shù)字8seg9=9h6f;/7段顯示數(shù)字9endassignseg_led_1=segseg_d

19、ata_1;/連續(xù)賦值,這樣輸入不同四位數(shù),就能輸出對于譯碼的9位輸出assignseg_led_2=segseg_data_2;1011121314151617181920212223242526272829303132333435363738rnoclulejishuqiinputwireelk,rstf/時(shí)舞和笑CZ浙人inputwirekeyl,/獲韻計(jì)outputwire7:0led,outputwire8:0segment_led_l.segmentaled_2牧硝官痂出);wirekey_pulse;regP:0ent;/什時(shí)計(jì)斂器regP:0jhud;白位計(jì)茲initialli

20、ud7:0=gllllllll;as日LussIways(posedgcelkornegedgerst)begin/我碼普顯十號吁忡研勃的萬式顯不if(!rst)beginent=8*h00;hud7:0=811111111;endelseif(key_pulse)beginif(cnt3:0=4*d9)beginent3:0=4do;5f(cntr:4beginentfT:4hud7:0Jendelseent7:4end=4,d9)=4fd0;=hud7:O-Ibl=cnt7:4+Iblelseent3:0=cnt3:0+l*bl;endelseentent;entre;key.rst;wi

21、reN-l:0key.edge;照陋清?4noduledebounce(elk,rstfkey,key.pulse):/翌諂阡四帝褥的卻M/用人的把鋰/搜槌胡作產(chǎn)生的就仲/定乂一個宏存器刁冥M存儲二一版壬由81存裙佰/定乂一*告徉器受堂脩仔儲當(dāng)司廠寥E反&1技偎位/柚ffi高到ft爰化量產(chǎn)生一個事(神/利用非陽室嫩值拎點(diǎn)-巧苗個時(shí)伸/及時(shí)忍纓狀態(tài)祥網(wǎng)在的個哥仔浩戈此中alwaysA(posedgeelkornegedgerst)77?-q8。2Hi4,8687990QIbImays(posedgeelkorneoederst)Main1f(lq)key.rsts(itfrbl):key-r$t

22、_pret-key;/B*k”.frkeyst;/inciid上月由ILJTNEkeyKUtey_nt.MB?key_ctMft9b.RiJkay_i-%tFliineawrT1liyHLft_pre04iao澇i(iiassignkev.4H-key-strt6-fcey_r.T;-FL(17:q1ent;手第的費(fèi)M20mElfiaj.史WlHQHtJai/rT2aia(n.3nnky.dcwWierrf8aeelkoriwdoer$t)beginOH-”ho;eUeif(key_edoe)antrliho:elseentec_pre;/Mtl信*衲威乎零吞/feirettMkey.11臬由1眈白夏仁鼻生一個明*后1)仲1

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論