EDA課設(shè)—數(shù)字鐘設(shè)計說明書_第1頁
EDA課設(shè)—數(shù)字鐘設(shè)計說明書_第2頁
EDA課設(shè)—數(shù)字鐘設(shè)計說明書_第3頁
EDA課設(shè)—數(shù)字鐘設(shè)計說明書_第4頁
EDA課設(shè)—數(shù)字鐘設(shè)計說明書_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、目錄第一章 系統(tǒng)工作原理1第二章 程序模塊分析22.1 時鐘分頻模塊22.2 時鐘運行模式模塊22.3掃描數(shù)碼管及蜂鳴模塊42.4數(shù)碼管顯示模塊5第三章 時序仿真7第四章 總結(jié)9參考文獻(xiàn)9附錄10基于Verilog HDL設(shè)計的多功能數(shù)字鐘本文利用Verilog HDL 語言自頂向下的設(shè)計方法設(shè)計多功能數(shù)字鐘, 在本文中采用Verilog HDL 語言設(shè)計多功能數(shù)字鐘, 借助其功能強大的語言結(jié)構(gòu), 簡明的代碼描述復(fù)雜控制邏輯設(shè)計, 與工藝無關(guān)特性, 在提高工作效率的同時達(dá)到目的, 并可以通過Verilog HDL 語言的綜合工具進(jìn)行相應(yīng)硬件電路的生成, 突出了其作為硬件描述語言的良好的可讀性、

2、可移植性和易理解等優(yōu)點, 具有傳統(tǒng)邏輯設(shè)計方法所無法比擬的優(yōu)越性。此程序通過下載到FPGA 芯片后,可應(yīng)用于實際的數(shù)字鐘顯示中。第一章 系統(tǒng)工作原理工作原理:時鐘系統(tǒng)由八個數(shù)碼管顯示組成,其中第1、2個顯示的為時的高位和低位,第3個數(shù)碼管顯示的是分隔符“-”,第4、5個為分的高低位,第6個也為隔符“-”,第7、8個為秒的高低位。時鐘工作時用到兩個頻率,一個是系統(tǒng)頻率Clk,主要用來掃描數(shù)碼管和分頻,第二個是時鐘工作頻率Clk_1HZ(由Clk分頻得來),按下復(fù)位鍵,秒分時顯示清零,工作時Clk(489HZ)不斷通過3-8譯碼器值的改變來掃描時鐘的八位數(shù)碼管,由于人眼分辯不出這么高的頻率,所以看

3、到的是八個數(shù)碼管一直同時亮著,與此同時控制端連著七段數(shù)碼管的七位不斷提供秒時分的高低位譯碼到數(shù)碼管上顯示,當(dāng)Clk計數(shù)到244次(500ms)時,Clk_1HZ翻轉(zhuǎn)一次,這樣Clk_1HZ的周期就為1s整,每個Clk_1HZ的上升沿給秒的低位加1。按調(diào)時鍵S1進(jìn)入調(diào)時模式,按下開關(guān)時程序里設(shè)置掃描到時的高低位時不顯示,同時時的低位加1,松開開關(guān)時再顯示出來,以此實現(xiàn)閃爍的功能,調(diào)分鍵也是同理。圖1、系統(tǒng)原理圖各個輸入輸出端口定義如下:Clk: 489HZ 的系統(tǒng)基準(zhǔn)時鐘輸入。作為七段碼管掃描頻率。將其489分頻可得到1HZ的數(shù)字鐘工作頻率。Rst: 系統(tǒng)復(fù)位信號, 低電平有效。復(fù)位后顯示00-

4、00-00。S1: 調(diào)節(jié)小時信號, 低電平有效。每按下一次, 小時增加一個小時。S2: 調(diào)節(jié)分鐘信號, 低電平有效。每按下一次, 分鐘增加一個分鐘。Spk: 輸出到揚聲器, 產(chǎn)生嘀、嗒的報時聲。Sel: 七段碼管掃描驅(qū)動。因為是八個七段碼管,所以Sel 為三位總線。掃描頻率為489HZ, 由于人眼的視覺效果, 呈現(xiàn)在眼前的便是整體的時-分-秒顯示。Display: 七段碼管顯示輸出。除此之外另設(shè)了幾個寄存器:Clk_1HZ:1HZ的數(shù)字鐘工作頻率Clk_Count1:產(chǎn)生1Hz 時鐘的分頻計數(shù)器Music_Count:產(chǎn)生揚聲器聲音頻率的分頻計數(shù)器SECL,SECH:秒的低位和高位MINL,M

5、INH:分的低位和高位HOURL,HOURH:時的低位和高位Disp_Temp:顯示存儲中間量第二章 程序模塊分析2.1 時鐘分頻模塊always(posedge Clk)beginif(Clk_Count1=244) /對計數(shù)器進(jìn)行判斷, 以確定Clk_1HZ 信號是否反轉(zhuǎn) begin Clk_1HZ<=Clk_1HZ; Clk_Count1<=0; endelse Clk_Count1<=Clk_Count1+1;end時鐘分頻模塊實現(xiàn)的功能的把系統(tǒng)時鐘(489HZ)分頻為Clk_1HZ(1HZ)提供時鐘工作頻率,Clk_Count1為定義的一個計數(shù)器,當(dāng)計到第244次時

6、,剛好經(jīng)過500ms(略有誤差),Clk_1HZ翻轉(zhuǎn)一次,人為制造出一個1HZ的時鐘。2.2 時鐘運行模式模塊always(posedge Clk_1HZ or negedge Rst)if(!Rst)/系統(tǒng)復(fù)位 begin SECL<=0; SECH<=0; MINL<=0; MINH<=0; HOURL<=0; HOURH<=0; endelse begin if(!S1) /調(diào)節(jié)小時 begin if(HOURL=9) begin HOURL<=0; HOURH<=HOURH+1; end else begin if(HOURH=2&

7、;&HOURL=3) begin HOURL<=0; HOURH<=0; end else HOURL<=HOURL+1; end end else if(!S2) /調(diào)節(jié)分鐘 begin if(MINL=9) begin MINL<=0; if(MINH=5) MINH<=0; else MINH<=MINH+1; end else MINL<=MINL+1; end else if(SECL=9) /一般運行狀態(tài) begin SECL<=0; if(SECH=5) begin SECH<=0; if(MINL=9) begin

8、MINL<=0; if(MINH=5) begin MINH<=0; if(HOURL=9) begin HOURL<=0; HOURH<=HOURH+1; end else if(HOURH=2&&HOURL=3) begin HOURL<=0; HOURH<=0; end else HOURL<=HOURL+1; end else MINH<=MINH+1; end else MINL<=MINL+1; end else SECH<=SECH+1; end else SECL<=SECL+1;end此模塊描述

9、的是時鐘運行的幾種形式,復(fù)位之后時分秒的高低位全給賦0,開始計數(shù),按下S1鍵后,進(jìn)入調(diào)時模式,按下一次加1,再根據(jù)各種情況判斷是否進(jìn)位等,同理按下S2鍵后進(jìn)入調(diào)分模式,什么都不按下的情況下就是一般運行狀態(tài),先從秒開始判斷,9秒時秒低位給0,高位進(jìn)1,59秒時秒的高低位全給0,分的低位加1,還有9分59秒、59分59秒的情況等等,完全列舉出了時鐘運行的各種可能,按情況處理。2.3掃描數(shù)碼管及蜂鳴模塊always(posedge Clk) begin Music_Count<=Music_Count+1; Sel<=Sel+1; /掃描累加 if(MINH=5&&MIN

10、L=9&&SECH=5) /在59 分50 秒開始提示 begin if(SECL%2)=0) /在偶數(shù)秒開始發(fā)聲 Spk<=Music_Count2; /嘀 else Spk<=0; end else if(MINH=0&&MINL=0&&SECH=0&&SECL=0) Spk<=Music_Count1; /嗒 else Spk<=0; end此模塊的功能是給3-8譯碼器一個掃描頻率為Clk的三位輸入,經(jīng)3-8譯碼器輸出后掃描八個數(shù)碼管,蜂鳴器實現(xiàn)的是整點報時功能。2.4數(shù)碼管顯示模塊always(Se

11、l) /三種掃描方式 begin if(!S1) begin case(Sel) 3'b111:Disp_Temp=4'b1111; 3'b110:Disp_Temp=4'b1111; 3'b101:Disp_Temp=4'b1010; 3'b100:Disp_Temp=MINH; 3'b011:Disp_Temp=MINL; 3'b010:Disp_Temp=4'b1010; 3'b001:Disp_Temp=SECH; 3'b000:Disp_Temp=SECL; endcase end els

12、e if(!S2) begin case(Sel) 3'b111:Disp_Temp=HOURH; 3'b110:Disp_Temp=HOURL; 3'b101:Disp_Temp=4'b1010; 3'b100:Disp_Temp=4'b1111; 3'b011:Disp_Temp=4'b1111; 3'b010:Disp_Temp=4'b1010; 3'b001:Disp_Temp=SECH; 3'b000:Disp_Temp=SECL; endcase end else begin case(

13、Sel) 3'b111:Disp_Temp=HOURH; 3'b110:Disp_Temp=HOURL; 3'b101:Disp_Temp=4'b1010; 3'b100:Disp_Temp=MINH; 3'b011:Disp_Temp=MINL; 3'b010:Disp_Temp=4'b1010; 3'b001:Disp_Temp=SECH; 3'b000:Disp_Temp=SECL; endcase end endalways(Disp_Temp) /數(shù)碼管顯示轉(zhuǎn)換 begin case(Disp_Temp)

14、 4'b0000:Display=7'b0111111; /0 4'b0001:Display=7'b0000110; /1 4'b0010:Display=7'b1011011; /2 4'b0011:Display=7'b1001111; /3 4'b0100:Display=7'b1100110; /4 4'b0101:Display=7'b1101101; /5 4'b0110:Display=7'b1111101; /6 4'b0111:Display=7'

15、b0000111; /7 4'b1000:Display=7'b1111111; /8 4'b1001:Display=7'b1101111; /9 4'b1010:Display=7'b1000000; /- default:Display=7'b0000000; /全滅 endcase end此模塊實現(xiàn)的是數(shù)碼管的顯示,分三種模式,第1種,調(diào)時模式,由于調(diào)節(jié)時鐘的對應(yīng)的位需要實現(xiàn)閃爍功能,所時按下調(diào)時(分)鍵時對應(yīng)的時(分)位必須暗下去,等鍵松開時再回歸一般狀態(tài),即所有數(shù)碼管都亮,按下時按相應(yīng)位暗下去是通過掃描到相應(yīng)位時讓數(shù)碼管不顯示

16、實現(xiàn)的。第三章 時序仿真程序編譯通過后,進(jìn)行了一下仿真,設(shè)置Clk為2周期為2ms(近似489HZ),End Time設(shè)了100s,仿真結(jié)果如下圖。圖2 仿真結(jié)果圖在Rst復(fù)位端為從低變到高開始計時,計時Clk489次后秒的低位進(jìn)1,這里由于244次Clk上升沿后Clk_1HZ才翻轉(zhuǎn),故Clk太密集觀察困難,秒的低位到9以后秒高位進(jìn)1,同理到分以及時,由于如果結(jié)束時間設(shè)得太長,仿真結(jié)果出來得太慢,此處只設(shè)了100s,下圖為放大后結(jié)果,計時Clk489次后秒的低位進(jìn)1。圖3 1秒跳變放大圖下圖為數(shù)碼管顯示放大后的仿真圖,可以看到,Sel為000時,系統(tǒng)掃描到的是秒的低位,顯示為Display:0

17、111111,即顯示0,以此類推,Sel為001時,掃描到的是秒的高位,010時為分隔符“-”直到111時的高位,此處全部顯示為零,因為計數(shù)還未到達(dá)1秒。圖4 數(shù)碼管顯示放大圖功能仿真結(jié)束后, 利用綜合工具對Verilog HDL源碼進(jìn)行綜合, 生成網(wǎng)表文件, 再根據(jù)該網(wǎng)表文件和所選可編程邏輯器件FPGA 進(jìn)行優(yōu)化、布局布線, 然后進(jìn)行布線后仿真, 最后生成FPGA 碼流文件, 把該文件輸入可編程邏輯器件即可制成實際數(shù)字電路,最后在實驗箱上運行正常,所有功能均能實現(xiàn)。第四章 總結(jié)此次EDA課設(shè)是大學(xué)階段最后的一個課程設(shè)計,所以本人也盡全力在有限的時間內(nèi)把數(shù)字鐘的基本功能都實現(xiàn)了,在付出了汗水的

18、同時也得到了很多的收獲,熟悉了設(shè)計流程,加強了設(shè)計理念,當(dāng)然最重要的還是提高了動手能力,雖不敢說程序全是原創(chuàng)吧,但也確實加入了很多思考,付出了不少汗水,但是在此之余由于時間等各方面所限,程序完成的也不是盡如人意,比如設(shè)置時和分的按鍵缺少一個防抖的功能,這就導(dǎo)致有時按下調(diào)節(jié)鍵時沒有反應(yīng)(鍵盤抖動造成的),按下時間長點就沒問題,寫程序的時候沒有考慮到這一步,導(dǎo)致最后程序也不好改,這是要我要吸取的教訓(xùn),也算是增加了一點微薄的經(jīng)驗吧。最后還要感謝武老師和喬老師,學(xué)期末還一直不辭辛苦耐心地指導(dǎo)我們,讓我們基本都順利地完成了大學(xué)最后一個課設(shè)。參考文獻(xiàn)1來清民. 基于CAN 總線的多功能大型糧倉遠(yuǎn)程監(jiān)測系統(tǒng)

19、J微計算機信息,2005,7:51- 532Bhasker J. A Verilog HDL Primer . Allentown(PA): Star Galaxy Press,1997附錄module clock(Clk,Rst,S1,S2,Display,Sel,Spk);input Clk; /489HZ 時鐘輸入input Rst; /復(fù)位輸入input S1; /小時調(diào)節(jié)輸入input S2; /分鐘調(diào)節(jié)輸入output Spk; /揚聲器輸出output2:0 Sel; /七段碼管掃描驅(qū)動output6:0 Display; /七段碼管顯示輸出reg Spk;reg2:0 Sel;

20、reg6:0 Display;reg10:0Clk_Count1; /產(chǎn)生1Hz 時鐘的分頻計數(shù)器 reg Clk_1HZ;reg2:0 Music_Count; /產(chǎn)生揚聲器聲音頻率的分頻計數(shù)器reg3:0 SECL,SECH;reg3:0 MINL,MINH;reg3:0 HOURL,HOURH;reg3:0 Disp_Temp;always(posedge Clk)beginif(Clk_Count1=244) /對計數(shù)器進(jìn)行判斷, 以確定Clk_1HZ 信號是否反轉(zhuǎn) begin Clk_1HZ<=Clk_1HZ; Clk_Count1<=0; endelse Clk_Cou

21、nt1<=Clk_Count1+1;endalways(posedge Clk_1HZ or negedge Rst)if(!Rst)/系統(tǒng)復(fù)位 begin SECL<=0; SECH<=0; MINL<=0; MINH<=0; HOURL<=0; HOURH<=0; endelse begin if(!S1) /調(diào)節(jié)小時 begin if(HOURL=9) begin HOURL<=0; HOURH<=HOURH+1; end else begin if(HOURH=2&&HOURL=3) begin HOURL<=

22、0; HOURH<=0; end else HOURL<=HOURL+1; end end else if(!S2) /調(diào)節(jié)分鐘 begin if(MINL=9) begin MINL<=0; if(MINH=5) MINH<=0; else MINH<=MINH+1; end else MINL<=MINL+1; end else if(SECL=9) /一般運行狀態(tài) begin SECL<=0; if(SECH=5) begin SECH<=0; if(MINL=9) begin MINL<=0; if(MINH=5) begin MI

23、NH<=0; if(HOURL=9) begin HOURL<=0; HOURH<=HOURH+1; end else if(HOURH=2&&HOURL=3) begin HOURL<=0; HOURH<=0; end else HOURL<=HOURL+1; end else MINH<=MINH+1; end else MINL<=MINL+1; end else SECH<=SECH+1; end else SECL<=SECL+1;endalways(posedge Clk) begin Music_Coun

24、t<=Music_Count+1; Sel<=Sel+1; /掃描累加 if(MINH=5&&MINL=9&&SECH=5) /在59 分50 秒開始提示 begin if(SECL%2)=0) /在偶數(shù)秒開始發(fā)聲 Spk<=Music_Count2; /嘀 else Spk<=0; end else if(MINH=0&&MINL=0&&SECH=0&&SECL=0) Spk<=Music_Count1; /嗒 else Spk<=0; endalways(Sel) /三種掃描

25、方式 begin if(!S1) begin case(Sel) 3'b111:Disp_Temp=4'b1111; 3'b110:Disp_Temp=4'b1111; 3'b101:Disp_Temp=4'b1010; 3'b100:Disp_Temp=MINH; 3'b011:Disp_Temp=MINL; 3'b010:Disp_Temp=4'b1010; 3'b001:Disp_Temp=SECH; 3'b000:Disp_Temp=SECL; endcase end else if(!S2) begin case(Sel) 3'b111:Disp_Temp=HOURH; 3'b110:Disp_Temp=HOURL; 3'b101:Disp_Temp=4'b1010; 3'b100:Disp_Temp=4'b1111; 3'b011:Disp_Temp=4'b1111; 3'b010:Disp_Temp=4'b1010; 3'b001:

溫馨提示

  • 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

提交評論