資源描述:
《基于FPGA數(shù)字時鐘》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、........基于FPGA的數(shù)字時鐘設(shè)計一、課程設(shè)計目的1、進(jìn)一步熟悉QuartusⅡ的軟件使用方法;2、熟悉可編程邏輯器件的開發(fā)流程及硬件測試方法;3、熟悉基于FPGA的綜合數(shù)字系統(tǒng)設(shè)計方法;二、設(shè)計任務(wù)設(shè)計一臺可以顯示時、分、秒的數(shù)字鐘。如圖1所示為基于FPGA的數(shù)字鐘設(shè)計的系統(tǒng)框圖。圖1數(shù)字鐘系統(tǒng)三、設(shè)計要求1、能直接顯示小時、分、秒,其中小時為以二十四為計數(shù)周期;2、能夠顯示日期(即年、月、日),且要求在顯示時鐘的數(shù)碼管上顯示日期,即時鐘數(shù)碼管與日期數(shù)碼管復(fù)用;3、年、月、日要嚴(yán)格按照實際日期,例如1月3
2、1天,4月30天,2月閏年29天等;4、當(dāng)數(shù)字鐘發(fā)生走時錯誤時,要求電路有校時功能,可以對時、分單獨校正,且校正時間時系統(tǒng)時鐘不工作;5、當(dāng)日期發(fā)生錯誤時,要求有校正日期功能,可以對年、月、日單獨校正,且矯正日期時時鐘系統(tǒng)仍然工作;6、.專業(yè)學(xué)習(xí)資料.........具有鬧鐘功能,即輸入想要定時的時間,當(dāng)時鐘到達(dá)該時間時報警,系統(tǒng)可由燈亮代表報警信號。一、設(shè)計內(nèi)容1、時間計數(shù)模塊本次是將秒分時各個模塊分開進(jìn)行設(shè)計,用秒的進(jìn)位作為分模塊的脈沖,用分的進(jìn)位作為是模塊的脈沖。秒進(jìn)位的仿真波形程序:秒的程序.專業(yè)學(xué)習(xí)資料.
3、........modulemiao(clk,gdata,ddata,en,cl,clr);inputclk;inputen;inputclr;output[3:0]ddata;output[3:0]gdata;outputcl;reg[7:0]q;regcl;assignddata=q%10;assigngdata=q/10;always@(negedgeclkorposedgeclr)beginif(clr==1)q=0;elsebeginif(en==1)beginif(q<59)begin.專業(yè)學(xué)習(xí)資料..
4、.......q=q+1;cl=0;endelsebeginq=0;cl=1;endendendendendmodule分模塊和時模塊的程序一秒程序類似,只是進(jìn)位計數(shù)不一樣。2、日期模塊.專業(yè)學(xué)習(xí)資料.........與時間模塊一樣,用低的進(jìn)位作為高的脈沖。日的仿真波形日模塊程序.專業(yè)學(xué)習(xí)資料.........moduleri(nian,yue,shi,gdata,ddata,en,cl,clr);inputshi;inputen;input[3:0]yue;inputclr;input[15:0]nian;out
5、put[3:0]ddata;output[3:0]gdata;outputcl;reg[7:0]q;regcl;reg[7:0]r;assignddata=(q+1)%10;assigngdata=(q+1)/10;always@(posedgeshiorposedgeclr)beginif(clr==1)q=0;elseif(en==1)begincl=0;.專業(yè)學(xué)習(xí)資料.........if(yue==2)beginif((nian%400)==0)r=29;elseif((nian%4)==0)beginif
6、((nian%100)!=0)r=29;elser=28;endelser=28;endelsebegincase(yue)1:r=31;3:r=31;4:r=30;5:r=31;6:r=30;7:r=31;8:r=31;.專業(yè)學(xué)習(xí)資料.........9:r=30;10:r=31;11:r=30;12:r=31;endcaseendif(shi==1)beginif(q<(r-1))beginq=q+1;endelsebeginq=0;cl=1;end.專業(yè)學(xué)習(xí)資料.........endendendendmod
7、ule改程序可以判斷閏年還是平年,大月還是小月。月模塊的程序:moduleyue(ri,gdata,ddata,en,cl,clr,oyue);inputri;inputen;inputclr;output[3:0]ddata;output[3:0]gdata;outputcl;output[3:0]oyue;reg[3:0]oyue;reg[3:0]q;regcl;assignddata=(q+1)%10;assigngdata=(q+1)/10;.專業(yè)學(xué)習(xí)資料.........always@(posedgeri
8、orposedgeclr)beginif(clr==1)q=0;elsebeginif(en==1)begincl=0;if(ri==1)beginif(q<11)beginq=q+1;oyue=q+1;endelsebeginq=0;.專業(yè)學(xué)習(xí)資料.........cl=1;endendendendendendmodule年模塊的程序:modulenian