![verilog實(shí)驗(yàn)-計(jì)數(shù)器實(shí)驗(yàn)報(bào)告(共22頁)_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-8/24/47ebdc33-7e8c-43ae-9371-2939a6d37895/47ebdc33-7e8c-43ae-9371-2939a6d378951.gif)
![verilog實(shí)驗(yàn)-計(jì)數(shù)器實(shí)驗(yàn)報(bào)告(共22頁)_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-8/24/47ebdc33-7e8c-43ae-9371-2939a6d37895/47ebdc33-7e8c-43ae-9371-2939a6d378952.gif)
![verilog實(shí)驗(yàn)-計(jì)數(shù)器實(shí)驗(yàn)報(bào)告(共22頁)_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-8/24/47ebdc33-7e8c-43ae-9371-2939a6d37895/47ebdc33-7e8c-43ae-9371-2939a6d378953.gif)
![verilog實(shí)驗(yàn)-計(jì)數(shù)器實(shí)驗(yàn)報(bào)告(共22頁)_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-8/24/47ebdc33-7e8c-43ae-9371-2939a6d37895/47ebdc33-7e8c-43ae-9371-2939a6d378954.gif)
![verilog實(shí)驗(yàn)-計(jì)數(shù)器實(shí)驗(yàn)報(bào)告(共22頁)_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-8/24/47ebdc33-7e8c-43ae-9371-2939a6d37895/47ebdc33-7e8c-43ae-9371-2939a6d378955.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、計(jì)數(shù)器1、實(shí)現(xiàn)目標(biāo)及介紹實(shí)驗(yàn)實(shí)現(xiàn)了一個(gè)簡(jiǎn)易的計(jì)數(shù)器,計(jì)數(shù)范圍可達(dá)899(0899),通過key4按鍵計(jì)數(shù),每按下一次,計(jì)數(shù)加一,百位數(shù)顯示在led上,個(gè)位與十位顯示在數(shù)碼管上。為十進(jìn)制計(jì)數(shù),數(shù)碼管1計(jì)數(shù)到九后置零。數(shù)碼管2獲得進(jìn)位加一,數(shù)碼管2到9后當(dāng)再次獲得個(gè)位進(jìn)位時(shí)再次向百位進(jìn)一,點(diǎn)亮led1,每百位點(diǎn)亮一個(gè)led。此外key4為清零鍵,可隨時(shí)按鍵清零。2、效果展示計(jì)數(shù)99清零計(jì)數(shù)100視頻展示(雙擊觀看)3、代碼實(shí)現(xiàn)與模塊分析1.頂層模塊module jishuqi(input wire clk,rst, /時(shí)鐘和復(fù)位輸入input wire key1, /撥碼計(jì)output wire
2、7:0led,output wire 8:0 segment_led_1,segment_led_2 /數(shù)碼管輸出); wire key_pulse;reg7:0 cnt;/計(jì)時(shí)計(jì)數(shù)器reg 7:0 hud;/百位計(jì)數(shù)initial hud7:0 = 8b11111111;always (posedge clk or negedge rst) begin/數(shù)碼管顯示要按照十進(jìn)制的方式顯示 if(!rst)begin cnt = 8h00;hud 7:0 = 8b11111111;endelse if(key_pulse)beginif(cnt3:0 = 4d9)/個(gè)位進(jìn)位判斷begincnt3
3、:0 = 4d0;if(cnt7:4 = 4d9 )/十位進(jìn)位判斷begin cnt7:4 = 4d0;hud7:0 = hud7:0 - 1b1; endelsecnt7:4 = cnt7:4 + 1b1;endelse cnt3:0 = cnt3:0 + 1b1;endelsecnt = cnt;endassign led = hud;/例化調(diào)用數(shù)碼管顯示模塊segment u2(.seg_data_1(cnt7:4), /g_data input.seg_data_2(cnt3:0), /g_data input.seg_led_1(segment_led_1), /MSBLSB = S
4、EG,DP,G,F,E,D,C,B,A.seg_led_2(segment_led_2) /MSBLSB = SEG,DP,G,F,E,D,C,B,A);/例化調(diào)用消抖模塊debounce u1 ( .clk (clk), .rst (rst), .key (key1), .key_pulse (key_pulse) ); endmodule2.數(shù)碼管顯示模塊module segment (seg_data_1,seg_data_2,seg_led_1,seg_led_2); input 3:0 seg_data_1;/數(shù)碼管需要顯示09十個(gè)數(shù)字,所以最少需要4位輸入做譯碼input 3:0
5、seg_data_2;/小腳丫上第二個(gè)數(shù)碼管output 8:0 seg_led_1;/在小腳丫上控制一個(gè)數(shù)碼管需要9個(gè)信號(hào) MSBLSB=DIG、DP、G、F、E、D、C、B、Aoutput 8:0 seg_led_2;/在小腳丫上第二個(gè)數(shù)碼管的控制信號(hào) MSBLSB=DIG、DP、G、F、E、D、C、B、A reg 8:0 seg 9:0; /定義了一個(gè)reg型的數(shù)組變量,相當(dāng)于一個(gè)10*9的存儲(chǔ)器,存儲(chǔ)器一共有10個(gè)數(shù),每個(gè)數(shù)有9位寬 initial /在過程塊中只能給reg型變量賦值,Verilog中有兩種過程塊always和initial /initial和always不同,其中語句
6、只執(zhí)行一次 begin seg0 = 9h3f; /對(duì)存儲(chǔ)器中第一個(gè)數(shù)賦值9b00_0011_1111,相當(dāng)于共陰極接地,DP點(diǎn)變低不亮,7段顯示數(shù)字 0 seg1 = 9h06; /7段顯示數(shù)字 1 seg2 = 9h5b; /7段顯示數(shù)字 2 seg3 = 9h4f; /7段顯示數(shù)字 3 seg4 = 9h66; /7段顯示數(shù)字 4 seg5 = 9h6d; /7段顯示數(shù)字 5 seg6 = 9h7d; /7段顯示數(shù)字 6 seg7 = 9h07; /7段顯示數(shù)字 7 seg8 = 9h7f; /7段顯示數(shù)字 8 seg9 = 9h6f; /7段顯示數(shù)字 9 end assign seg_
7、led_1 = segseg_data_1; /連續(xù)賦值,這樣輸入不同四位數(shù),就能輸出對(duì)于譯碼的9位輸出 assign seg_led_2 = segseg_data_2; endmodule3.按鍵消抖模塊/按鍵消抖module debounce (clk,rst,key,key_pulse); parameter N = 2; /要消除的按鍵的數(shù)量 input clk; input rst; input N-1:0 key; /輸入的按鍵output N-1:0 key_pulse; /按鍵動(dòng)作產(chǎn)生的脈沖 reg N-1:0 key_rst_pre; /定義一個(gè)寄存器型變量存儲(chǔ)上一個(gè)觸發(fā)時(shí)
8、的按鍵值 reg N-1:0 key_rst; /定義一個(gè)寄存器變量?jī)?chǔ)存儲(chǔ)當(dāng)前時(shí)刻觸發(fā)的按鍵值 wire N-1:0 key_edge; /檢測(cè)到按鍵由高到低變化是產(chǎn)生一個(gè)高脈沖 /利用非阻塞賦值特點(diǎn),將兩個(gè)時(shí)鐘觸發(fā)時(shí)按鍵狀態(tài)存儲(chǔ)在兩個(gè)寄存器變量中 always (posedge clk or negedge rst) beginif (!rst) beginkey_rst = N1b1; /初始化時(shí)給key_rst賦值全為1,中表示N個(gè)1 key_rst_pre = N1b1; end else beginkey_rst = key; /第一個(gè)時(shí)鐘上升沿觸發(fā)之后key的值賦給key_rst,
9、同時(shí)key_rst的值賦給key_rst_prekey_rst_pre = key_rst; /非阻塞賦值。相當(dāng)于經(jīng)過兩個(gè)時(shí)鐘觸發(fā),key_rst存儲(chǔ)的是當(dāng)前時(shí)刻key的值,key_rst_pre存儲(chǔ)的是前一個(gè)時(shí)鐘的key的值 end end assign key_edge = key_rst_pre & (key_rst);/脈沖邊沿檢測(cè)。當(dāng)key檢測(cè)到下降沿時(shí),key_edge產(chǎn)生一個(gè)時(shí)鐘周期的高電平 reg17:0 cnt; /產(chǎn)生延時(shí)所用的計(jì)數(shù)器,系統(tǒng)時(shí)鐘12MHz,要延時(shí)20ms左右時(shí)間,至少需要18位計(jì)數(shù)器 /產(chǎn)生20ms延時(shí),當(dāng)檢測(cè)到key_edge有效是計(jì)數(shù)器清零開始計(jì)數(shù) al
10、ways (posedge clk or negedge rst)beginif(!rst)cnt = 18h0; else if(key_edge) cnt = 18h0; else cnt = cnt + 1h1; end reg N-1:0 key_sec_pre; /延時(shí)后檢測(cè)電平寄存器變量 reg N-1:0 key_sec; /延時(shí)后檢測(cè)key,如果按鍵狀態(tài)變低產(chǎn)生一個(gè)時(shí)鐘的高脈沖。如果按鍵狀態(tài)是高的話說明按鍵無效 always (posedge clk or negedge rst)beginif (!rst) key_sec = N1b1; else if (cnt=18h3f
11、fff) key_sec = key; end always (posedge clk or negedge rst)beginif (!rst)key_sec_pre = N1b1; else key_sec_pre = key_sec; end assign key_pulse = key_sec_pre & (key_sec); endmodule4、源碼與源碼圖片module jishuqi(input wire clk,rst, /時(shí)鐘和復(fù)位輸入input wire key1, /撥碼計(jì)output wire 7:0led,output wire 8:0 segment_led_1,
12、segment_led_2 /數(shù)碼管輸出); wire key_pulse;reg7:0 cnt;/計(jì)時(shí)計(jì)數(shù)器reg 7:0 hud;/百位計(jì)數(shù)initial hud7:0 = 8b11111111;always (posedge clk or negedge rst) begin/數(shù)碼管顯示要按照十進(jìn)制的方式顯示 if(!rst)begin cnt = 8h00;hud 7:0 = 8b11111111;endelse if(key_pulse)beginif(cnt3:0 = 4d9)begincnt3:0 = 4d0;if(cnt7:4 = 4d9 )begin cnt7:4 = 4d0
13、;hud7:0 = hud7:0 - 1b1; endelsecnt7:4 = cnt7:4 + 1b1;endelse cnt3:0 = cnt3:0 + 1b1;endelsecnt = cnt;endassign led = hud;segment u2(.seg_data_1(cnt7:4), /g_data input.seg_data_2(cnt3:0), /g_data input.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
14、,F,E,D,C,B,A);debounce u1 ( .clk (clk), .rst (rst), .key (key1), .key_pulse (key_pulse) ); endmodule/按鍵消抖module debounce (clk,rst,key,key_pulse); parameter N = 2; /要消除的按鍵的數(shù)量 input clk; input rst; input N-1:0 key; /輸入的按鍵output N-1:0 key_pulse; /按鍵動(dòng)作產(chǎn)生的脈沖 reg N-1:0 key_rst_pre; /定義一個(gè)寄存器型變量存儲(chǔ)上一個(gè)觸發(fā)時(shí)的按鍵值
15、 reg N-1:0 key_rst; /定義一個(gè)寄存器變量?jī)?chǔ)存儲(chǔ)當(dāng)前時(shí)刻觸發(fā)的按鍵值 wire N-1:0 key_edge; /檢測(cè)到按鍵由高到低變化是產(chǎn)生一個(gè)高脈沖 /利用非阻塞賦值特點(diǎn),將兩個(gè)時(shí)鐘觸發(fā)時(shí)按鍵狀態(tài)存儲(chǔ)在兩個(gè)寄存器變量中 always (posedge clk or negedge rst) beginif (!rst) beginkey_rst = N1b1; /初始化時(shí)給key_rst賦值全為1,中表示N個(gè)1 key_rst_pre = N1b1; end else beginkey_rst = key; /第一個(gè)時(shí)鐘上升沿觸發(fā)之后key的值賦給key_rst,同時(shí)ke
16、y_rst的值賦給key_rst_prekey_rst_pre = key_rst; /非阻塞賦值。相當(dāng)于經(jīng)過兩個(gè)時(shí)鐘觸發(fā),key_rst存儲(chǔ)的是當(dāng)前時(shí)刻key的值,key_rst_pre存儲(chǔ)的是前一個(gè)時(shí)鐘的key的值 end end assign key_edge = key_rst_pre & (key_rst);/脈沖邊沿檢測(cè)。當(dāng)key檢測(cè)到下降沿時(shí),key_edge產(chǎn)生一個(gè)時(shí)鐘周期的高電平 reg17:0 cnt; /產(chǎn)生延時(shí)所用的計(jì)數(shù)器,系統(tǒng)時(shí)鐘12MHz,要延時(shí)20ms左右時(shí)間,至少需要18位計(jì)數(shù)器 /產(chǎn)生20ms延時(shí),當(dāng)檢測(cè)到key_edge有效是計(jì)數(shù)器清零開始計(jì)數(shù) always
17、 (posedge clk or negedge rst)beginif(!rst)cnt = 18h0; else if(key_edge) cnt = 18h0; else cnt = cnt + 1h1; end reg N-1:0 key_sec_pre; /延時(shí)后檢測(cè)電平寄存器變量 reg N-1:0 key_sec; /延時(shí)后檢測(cè)key,如果按鍵狀態(tài)變低產(chǎn)生一個(gè)時(shí)鐘的高脈沖。如果按鍵狀態(tài)是高的話說明按鍵無效 always (posedge clk or negedge rst)beginif (!rst) key_sec = N1b1; else if (cnt=18h3ffff)
18、 key_sec = key; end always (posedge clk or negedge rst)beginif (!rst)key_sec_pre = N1b1; else key_sec_pre = key_sec; end assign key_pulse = key_sec_pre & (key_sec); endmodulemodule segment (seg_data_1,seg_data_2,seg_led_1,seg_led_2); input 3:0 seg_data_1;/數(shù)碼管需要顯示09十個(gè)數(shù)字,所以最少需要4位輸入做譯碼input 3:0 seg_data_2;/小腳丫上第二個(gè)數(shù)碼管output 8:0 seg_led_1;/在小腳丫上控制一個(gè)數(shù)碼管需要9個(gè)信號(hào) MSBLSB=DIG、DP、G、F、E、D、C、B
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年住宅翻新裝飾工程施工合同樣本
- 2025年住宅小區(qū)入住策劃與安全保障協(xié)議
- 2025年企業(yè)年文獻(xiàn)出版協(xié)議
- 2025年離婚雙方贍養(yǎng)協(xié)議模板
- 2025年二手住宅預(yù)購合同標(biāo)準(zhǔn)格式
- 2025年金融策劃風(fēng)險(xiǎn)控制保密協(xié)議書
- 2025年農(nóng)產(chǎn)品買賣合同協(xié)議書
- 2025年串謀虛報(bào)借款合同異議調(diào)查綜合
- 2025年伙伴協(xié)作項(xiàng)目協(xié)議書
- 2025年倉儲(chǔ)機(jī)械叉車租用協(xié)議
- 【新版本】華為 H12-711 V4.0 HCIA-Security 認(rèn)證華為安全題庫(含答案)
- 村衛(wèi)生室2023年度績(jī)效考核評(píng)分細(xì)則(基本公共衛(wèi)生服務(wù))
- 關(guān)聯(lián)公司合作合同
- 2022人臉識(shí)別安全白皮書
- 【建模教程】-地質(zhì)統(tǒng)計(jì)學(xué)礦體建模簡(jiǎn)明教材
- DB23T 2656-2020樺樹液采集技術(shù)規(guī)程
- 重源煤礦 礦業(yè)權(quán)價(jià)款計(jì)算書
- PSM工藝安全管理
- GB/T 21872-2008鑄造自硬呋喃樹脂用磺酸固化劑
- 上海市中小學(xué)生語文學(xué)業(yè)質(zhì)量綠色指標(biāo)測(cè)試
- GA/T 501-2020銀行保管箱
評(píng)論
0/150
提交評(píng)論