基于FPGA的數(shù)字時(shí)鐘設(shè)計(jì)_第1頁
基于FPGA的數(shù)字時(shí)鐘設(shè)計(jì)_第2頁
基于FPGA的數(shù)字時(shí)鐘設(shè)計(jì)_第3頁
基于FPGA的數(shù)字時(shí)鐘設(shè)計(jì)_第4頁
基于FPGA的數(shù)字時(shí)鐘設(shè)計(jì)_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、FPGA大作業(yè)報(bào)告定時(shí)鬧鐘(已在DE2板上測(cè)試)分析與設(shè)計(jì)分析題目要求設(shè)計(jì)一個(gè)具有系統(tǒng)時(shí)間設(shè)置和帶鬧鐘功能的24小時(shí)計(jì)時(shí)器中的應(yīng)用,大致應(yīng)該實(shí)現(xiàn)計(jì)時(shí)功能、設(shè)置并顯示新的鬧鐘時(shí)間、設(shè)置新的計(jì)時(shí)器時(shí)間、鬧鐘功能這四個(gè)基礎(chǔ)功能。我們的思路是先設(shè)計(jì)一個(gè)基礎(chǔ)計(jì)時(shí)器開始,再添加各種需要的功能。即為下圖所示:而設(shè)計(jì)一個(gè)基礎(chǔ)計(jì)時(shí)器,則可以考慮用很基礎(chǔ)的三個(gè)模塊完成:分頻模塊、計(jì)時(shí)模塊、顯示模塊。計(jì)時(shí)模塊也是核心的一個(gè)部分,我們所需要添加的各種功能模塊也可以完全融合在該模塊中,當(dāng)然也可以獨(dú)立出來。由題目要求,該系統(tǒng)需要一個(gè)系統(tǒng)50MHz時(shí)鐘,當(dāng)然也應(yīng)該給定一個(gè)系統(tǒng)復(fù)位(或者是模塊復(fù)位,這里選用僅在時(shí)鐘模塊復(fù)位)

2、。另外需要3個(gè)按鍵,分別是設(shè)置按鍵“set”、設(shè)置系統(tǒng)時(shí)間按鍵“tim”、設(shè)置鬧鐘時(shí)間按鍵“alarm”,以及四組時(shí)間輸入。我們將四個(gè)數(shù)碼管顯示分為shi1、shi0、fen1、fen0,每一個(gè)由4位撥動(dòng)開關(guān)控制設(shè)定時(shí)間,因?yàn)槊恳粋€(gè)最大值最多為“9”(1001),所以用4位足夠。因?yàn)橐?qū)動(dòng)7位數(shù)碼管,所以輸出量的位寬設(shè)為7位6:0。最終選定由三個(gè)部分組成所有功能。下圖為系統(tǒng)的整個(gè)內(nèi)部關(guān)聯(lián):設(shè)計(jì)分頻模塊功能:將系統(tǒng)時(shí)鐘50MHz分頻為低頻秒計(jì)數(shù)時(shí)鐘(1Hz)和顯示刷新時(shí)鐘(1KHz)。端口定義:input clk;output clk1hz , clk1khz ;代碼:module fp1hz(

3、clk,clk1hz,clk1khz);input clk;/50MHzoutput clk1hz,clk1khz;/1Hz、1KHzreg24:0 cnt1;reg clk1hz;always(posedge clk)/分頻1Hzbeginif(cnt1=25'd24999999)begincnt1<=0;clk1hz<=clk1hz;endelsecnt1<=cnt1+1'b1;endreg14:0 cnt2;reg clk1khz;always(posedge clk)/分頻1KHzbeginif(cnt2=15'd24999)begincnt2

4、<=0;clk1khz<=clk1khz;endelsecnt2<=cnt2+1'b1;endendmodule時(shí)鐘處理模塊功能:在秒時(shí)鐘下計(jì)數(shù),實(shí)現(xiàn)基本計(jì)時(shí)器功能,并且添加設(shè)置系統(tǒng)時(shí)間和鬧鐘時(shí)間以及鬧鈴功能(用LED取代)。端口定義:input clk1hz , rst , set , tim , alarm ;input3:0 shi1_in , shi0_in , fen1_in , fen0_in ;output3:0 shi1_r , shi0_r , fen1_r , fen0_r ;output led ;代碼:module shizhong(clk1h

5、z,rst,set,tim,alarm,shi1_in,shi0_in,fen1_in,fen0_in,shi1_r,shi0_r,fen1_r,fen0_r,led);input clk1hz,rst,set,tim,alarm;input3:0 shi1_in,shi0_in,fen1_in,fen0_in;output3:0 shi1_r,shi0_r,fen1_r,fen0_r;output led;reg5:0 fen,miao;reg4:0 shi;reg flag;/設(shè)置標(biāo)志位reg3:0 shi1_b,shi0_b,fen1_b,fen0_b;/鬧鐘時(shí)間暫存單元always(p

6、osedge clk1hz or negedge rst or negedge set or negedge tim or negedge alarm)beginif(!rst)/復(fù)位清零beginmiao<=0;fen<=0;shi<=0;endelse if(!set)/設(shè)置鍵按下 flag<=1;/標(biāo)志位置位 else if(!tim)/時(shí)間設(shè)置鍵按下,將要輸入的時(shí)間賦給時(shí)、分、秒 begin miao<=0; fen<=fen1_in*10+fen0_in; shi<=shi1_in*10+shi0_in; flag<=0; end el

7、se if(!alarm)/鬧鐘設(shè)置鍵按下,將要輸入的時(shí)間賦給鬧鐘時(shí)間暫存單元 begin shi1_b<=shi1_in; shi0_b<=shi0_in; fen1_b<=fen1_in; fen0_b<=fen0_in; flag<=0; end else/其他情況則每個(gè)CLK1HZ到來,時(shí)、分、秒計(jì)數(shù) begin miao<=miao+1; if(miao=6'd59) begin miao<=0; fen<=fen+1; if(fen=6'd59) begin fen<=0; shi<=shi+1; if(s

8、hi=5'd23) shi<=0; end end endendreg3:0 shi1_r,shi0_r,fen1_r,fen0_r;always(shi or fen or miao)/將時(shí)、分轉(zhuǎn)換成4位數(shù)碼管格式beginshi1_r<=shi/10;shi0_r<=shi%10;fen1_r<=fen/10;fen0_r<=fen%10;endalways(flag)/設(shè)置標(biāo)志位有效時(shí),時(shí)、分、秒停止計(jì)數(shù)beginif(flag) begin miao<=miao; fen<=fen; shi<=shi; endendreg led

9、;always(posedge clk1hz or negedge rst)/鬧鐘時(shí)間到,LED亮if(!rst)led<=0;else if(miao=0)&&(fen=fen1_b*10+fen0_b)&&(shi=shi1_b*10+shi0_b)led=1;endmodule顯示模塊功能:顯示當(dāng)前時(shí)間。端口定義:input clk1khz ;input3:0 shi1_r , shi0_r , fen1_r , fen0_r ;output6:0 shi1 , shi0 , fen1 , fen0 ;代碼:module disp(clk1khz,s

10、hi1_r,shi0_r,fen1_r,fen0_r,shi1,shi0,fen1,fen0);input clk1khz;input3:0 shi1_r,shi0_r,fen1_r,fen0_r;output6:0 shi1,shi0,fen1,fen0;reg6:0 shi1,shi0,fen1,fen0;always(posedge clk1khz)begincase(shi1_r)/時(shí)的十位譯碼4'b0000:shi1<=7'b1000000;4'b0001:shi1<=7'b1111001;4'b0010:shi1<=7

11、9;b0100100;default:shi1<=7'b1111111;endcasecase(shi0_r)/時(shí)的個(gè)位譯碼4'b0000:shi0<=7'b1000000;4'b0001:shi0<=7'b1111001;4'b0010:shi0<=7'b0100100;4'b0011:shi0<=7'b0110000;4'b0100:shi0<=7'b0011001;4'b0101:shi0<=7'b0010010;4'b0110:shi

12、0<=7'b0000010;4'b0111:shi0<=7'b1111000;4'b1000:shi0<=7'b0000000;4'b1001:shi0<=7'b0010000;default:shi0<=7'b1111111;endcasecase(fen1_r)/分的十位譯碼4'b0000:fen1<=7'b1000000;4'b0001:fen1<=7'b1111001;4'b0010:fen1<=7'b0100100;4'

13、;b0011:fen1<=7'b0110000;4'b0100:fen1<=7'b0011001;4'b0101:fen1<=7'b0010010;default:fen1<=7'b1111111;endcasecase(fen0_r)/分的個(gè)位譯碼4'b0000:fen0<=7'b1000000;4'b0001:fen0<=7'b1111001;4'b0010:fen0<=7'b0100100;4'b0011:fen0<=7'b011

14、0000;4'b0100:fen0<=7'b0011001;4'b0101:fen0<=7'b0010010;4'b0110:fen0<=7'b0000010;4'b0111:fen0<=7'b1111000;4'b1000:fen0<=7'b0000000;4'b1001:fen0<=7'b0010000;default:fen0<=7'b1111111;endcaseendendmodule測(cè)試與仿真由于ModelSim仿真中出現(xiàn)一些未知問題,這

15、里采用Quartus自帶的仿真工具進(jìn)行簡單仿真。分頻(fp1hz)由于分頻1Hz時(shí)間太久,所以不做仿真。從功能仿真圖可以看到設(shè)定的clk周期為10ns,輸出的clk1khz周期為500us,分頻次數(shù)50,000(50M÷1K)次,滿足設(shè)計(jì)要求。時(shí)鐘(shizhong)在沒有復(fù)位的時(shí)候,按下一次“set”鍵,這時(shí)時(shí)間保持不變,在“tim”鍵按下后,將時(shí)間信息“shi1_in、shi0_in、fen1_in、fen0_in”輸出到“shi1_r、shi0_r、fen1_r、fen0_r”。在后續(xù),設(shè)置的鬧鐘時(shí)間與系統(tǒng)時(shí)間相同時(shí),LED被拉高(后續(xù)部分未截圖)。顯示(disp)通過輸出“shi1、shi0、fen1、fen0”的7位二進(jìn)制編碼,折換成數(shù)碼管顯示的數(shù)字,可以發(fā)現(xiàn)與輸入的“shi1_r、shi0_r、fen1_r、fen0_r”完全對(duì)應(yīng),說明仿真正確。問題與改進(jìn)從題目要求上來看,有些功能還沒完全做到,其中包

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論