基于verilog的數(shù)字秒表的設(shè)計(jì)實(shí)現(xiàn)_第1頁
基于verilog的數(shù)字秒表的設(shè)計(jì)實(shí)現(xiàn)_第2頁
基于verilog的數(shù)字秒表的設(shè)計(jì)實(shí)現(xiàn)_第3頁
基于verilog的數(shù)字秒表的設(shè)計(jì)實(shí)現(xiàn)_第4頁
基于verilog的數(shù)字秒表的設(shè)計(jì)實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上 數(shù)字秒表的設(shè)計(jì)實(shí)現(xiàn) 團(tuán)隊(duì)成員:董婷 詹磊 胡鵬 一、測試要求 1. 有源晶振頻率:24MHZ 2. 測試計(jì)時范圍:0000”00 5959”99,顯示的最長時間為59分59 秒 3. 數(shù)字秒表的計(jì)時精度是10ms 4. 顯示工作方式:a、用八位數(shù)碼管顯示讀數(shù) b、用兩個按鈕開關(guān)(一個按鈕使秒表復(fù)位,另 一個按鈕控制秒表的啟動/暫停)二、設(shè)計(jì)要求 1. 設(shè)計(jì)出符合設(shè)計(jì)要求的解決方案 2. 利用軟件對各單元電路及整體電路進(jìn)行仿真 3. 在開發(fā)板上實(shí)現(xiàn)設(shè)計(jì) 5. 撰寫設(shè)計(jì)報告三、秒表功能鍵 1、power:秒表電源鍵 2、Reset:秒表復(fù)位清零鍵 3、run/stop:

2、秒表啟動/停止鍵四、實(shí)驗(yàn)原理 1 .實(shí)驗(yàn)設(shè)計(jì)原理 (1)秒表的邏輯結(jié)構(gòu)較簡單,它主要由十進(jìn)制計(jì)數(shù)器、六進(jìn)制計(jì)數(shù)器、分頻器、數(shù)據(jù)選擇器、和顯示譯碼器等組成。在整個秒表中最關(guān)鍵的是如何獲得一個精確的100HZ計(jì)時脈沖,除此之外,整個秒表還需有一個啟動信號和一個清零信號,以便秒表能隨意停止、啟動以及清零復(fù)位。 (2)秒表有共有8個輸出顯示,其中6個顯示輸出數(shù)據(jù),分別為百分之一秒、十分之一秒、秒、十秒、分、十分,所以共有6個計(jì)數(shù)器與之相對應(yīng);另外兩個為間隔符,顯示-。8個計(jì)數(shù)器的輸出全都為BCD碼輸出,這樣便與同顯示譯碼器連接。 (3)可定義一個24位二進(jìn)制的寄存器hour用于存放8個計(jì)數(shù)器的輸出,寄

3、存器從高位到低位每連續(xù)4位為一組,分別存放百分之一秒、十分之一秒、間隔符、秒、十秒、間隔符、分、十分。由頻率信號輸出端輸出頻率為100HZ的時鐘信號,輸入到百分之一秒模塊的時鐘端clk,百分之一秒模塊為100進(jìn)制的計(jì)數(shù)器,當(dāng)計(jì)數(shù)到“1001”時,百分之一秒模塊清零,同時十分之一秒模塊加1;十分之一秒模塊也為100進(jìn)制的計(jì)數(shù)器,當(dāng)計(jì)數(shù)到“1001”時,十分之一秒模塊清零,同時秒模塊加1;以此類推。直到分模塊計(jì)數(shù)到59進(jìn)59。(4)為了消除按鍵消抖問題,定義寄存器key-inner來存儲按鍵key的輸入信號,key-flag作為啟動/暫停的轉(zhuǎn)換標(biāo)志,key-inner0出現(xiàn)一個下降沿時,key-f

4、lag取反一次,當(dāng)key-flag為0時計(jì)數(shù)器啟動,1時計(jì)數(shù)器暫停,當(dāng)key-flag為1同時key-inner1為9時,計(jì)數(shù)器清零。(5)定義18位寄存器count用于存放分頻和掃描用的計(jì)數(shù)值。24MHZ的時鐘信號分頻,得到100HZ的時鐘信號,而計(jì)數(shù)器已24MHZ的時鐘信號218分頻掃描8個七段譯碼器。 2. 實(shí)驗(yàn)設(shè)計(jì)方案 利用一塊芯片完成除時鐘源,按鍵和顯示器之外的所有數(shù)字電路功能。所有數(shù)字邏輯功能都在CPLD器件上用Verilog語言實(shí)現(xiàn)。這樣設(shè)計(jì)具有體積小,設(shè)計(jì)周期短,調(diào)試方便,故障率地和修改升級容易等特點(diǎn),本設(shè)計(jì)采用依次進(jìn)行消抖、分頻、數(shù)碼管動態(tài)掃描、顯示(譯碼)和計(jì)數(shù)流水線的設(shè)計(jì)

5、方法。 3. 實(shí)驗(yàn)原理框圖 秒表原理框圖24Mhz100hz計(jì)數(shù) 分頻Reg1:0 顯示掃描五、軟件設(shè)計(jì)與仿真1、秒表計(jì)數(shù)單位與對應(yīng)輸出信號hour3:0百分之一秒hour7:4十分之一秒hour11:8秒Hour15:12十秒Hour19:16分hour23:20十分2、秒表總程序:module dapeng(clk_24M,dig,seg,ena,key);input1:0key;input clk_24M;/輸入頻率為24MHZ的時鐘output2:0dig;/數(shù)碼管位選output7:0seg;/數(shù)碼管段選output ena;/3-8譯碼器使能reg2:0dig,count3b;re

6、g7:0seg;reg3:0disp_dat;/定義顯示數(shù)據(jù)寄存器reg18:0count;/定義計(jì)數(shù)寄存器reg23:0hour;/定義現(xiàn)在時刻寄存器reg clk100;/24MHZ的時鐘信號分頻,得到100HZ的時鐘信號reg key_flag;/啟動/暫停的切換標(biāo)志reg1:0key_inner;assign ena=0;/按鍵輸入緩存always(posedge count16)beginkey_inner<=key;endalways(negedge key_inner0)beginkey_flag=key_flag;end/0.01秒信號產(chǎn)生部分,產(chǎn)生100HZ的時鐘信號a

7、lways(posedge clk_24M)beginif(count=)beginclk100<=clk100;count<=0;endelsecount<=count+1'b1;end/數(shù)碼管動態(tài)掃描顯示部分always(posedge count10)begincount3b=count3b+1;case(count3b)3'd7:disp_dat=hour3:0;3'd6:disp_dat=hour7:4;3'd5:disp_dat=4'ha;3'd4:disp_dat=hour11:8;3'd3:disp_da

8、t=hour15:12;3'd2:disp_dat=4'ha;3'd1:disp_dat=hour19:16;3'd0:disp_dat=hour23:20;default:disp_dat=4'bxxxx;endcasedig=count3b;endalways(disp_dat)begincase(disp_dat)4'h0:seg=8'hc0;4'h1:seg=8'hf9;4'h2:seg=8'ha4;4'h3:seg=8'hb0;4'h4:seg=8'h99;4

9、9;h5:seg=8'h92;4'h6:seg=8'h82;4'h7:seg=8'hf8;4'h8:seg=8'h80;4'h9:seg=8'h90;4'ha:seg=8'hbf;default:seg=8'bxxxxxxxx;endcaseend/計(jì)時處理部分always(posedge clk100)/計(jì)時處理beginif(!key_inner1&&key_flag=1)/判斷是否復(fù)位鍵beginhour=24'h0;endelse if(!key_flag)begin

10、hour3:0=hour3:0+1;if(hour3:0=4'ha)beginhour3:0=4'h0;hour7:4=hour7:4+1;if(hour7:4=4'ha)beginhour7:4=4'h0;hour11:8=hour11:8+1;if(hour11:8=4'ha)beginhour11:8=4'h0;hour15:12=hour15:12+1;if(hour15:12=4'h6)beginhour15:12=4'h0;hour19:16=hour19:16+1;if(hour19:16=4'ha)begi

11、nhour19:16=4'h0;hour23:20=hour23:20+1;endif(hour23:20=4'h6)hour23:20=4'h0;endendendendendendendmodule2.1計(jì)數(shù)時的仿真波形2.2清零時的仿真波形2.3暫停時的仿真波形 3. 電路原理圖的生成 4. 電路圖的生成 六硬件實(shí)現(xiàn) 1. 用QUARTUS II軟件對程序進(jìn)行編譯,并下載到硬件FPGA板子上進(jìn)行硬件實(shí)現(xiàn)。板子上6個計(jì)數(shù)器與百分之一秒、十分之一秒、秒、十秒、分、十分相對應(yīng),并且開始0000”00 5959”99的計(jì)數(shù),用兩個數(shù)碼管顯示”-”,用于分與十秒的間隔,十分

12、之一秒與秒的間隔。 2. Run/stop和Reset功能鍵由FPGA板子上的開關(guān)欄的key0和key1代替。按一下key0鍵,數(shù)碼管上的時間停止計(jì)時,然后按下key1鍵,數(shù)碼管上時間清零復(fù)位為0000”00;接著再按一下key0鍵,數(shù)碼管重新開始計(jì)時。七.關(guān)于老師提問1.定義18位寄存器 reg18:0count;用于存放分頻和掃描用的計(jì)數(shù)值。原因是24MHZ的時鐘信號分頻,得到100HZ的時鐘信號,我們程序采用計(jì)數(shù)滿后取反的原理,所以計(jì)數(shù)器最多需計(jì)數(shù),=,故而定義count為reg18:0。 2.按鍵消抖動部分always (posedge count16),所給時鐘上升沿有效,每次上升沿

13、讀取按鍵值賦給寄存器key-inner來存儲按鍵key的輸入信號,key-flag作為啟動/暫停的轉(zhuǎn)換標(biāo)志,key-inner0出現(xiàn)一個下降沿時,key-flag取反一次,當(dāng)key-flag為0時計(jì)數(shù)器啟動,1時計(jì)數(shù)器暫停。=0.00273s=30ms,所以在計(jì)時精度為0.01s內(nèi),連續(xù)檢測4次就是在0ms,30ms,60ms,90ms處都檢測到0,才算是有按鍵輸入。其他情況均為抖動。八心得體會 經(jīng)過這次的實(shí)驗(yàn),讓我們對Verilog HDL語言掌握程度加深了,對QuartusII這個軟件的使用也相對開始來說更加熟悉,經(jīng)過實(shí)驗(yàn),對課上的知識有了進(jìn)一步的熟悉。當(dāng)然,試驗(yàn)期間也存在許多問題,剛開始寫程序時常因Verilog HDL語言的不熟悉,常出現(xiàn)綜合錯誤的問題,有時程序雖然編譯沒有錯誤,但下到板子上時,卻顯示有誤,還需要經(jīng)過多次的調(diào)試??偟膩碚f,只要仔細(xì)檢查、并經(jīng)常使用該語言后,就會在很大程度上避免諸如語法錯誤等非邏輯問題。在定義寄存器用于計(jì)數(shù)功能時,最好先賦初值。對于復(fù)雜的邏輯功能的電路實(shí)現(xiàn),可以采用分模塊的方法,以便檢查程序的正誤,而對于功能較簡單的電路設(shè)計(jì),只需要一個模塊,從而避免在模塊間連接

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論