多功能數(shù)字鐘實(shí)驗(yàn)報(bào)告_第1頁
多功能數(shù)字鐘實(shí)驗(yàn)報(bào)告_第2頁
多功能數(shù)字鐘實(shí)驗(yàn)報(bào)告_第3頁
多功能數(shù)字鐘實(shí)驗(yàn)報(bào)告_第4頁
多功能數(shù)字鐘實(shí)驗(yàn)報(bào)告_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

個(gè)人采集整理僅供參照學(xué)習(xí)一、實(shí)驗(yàn)名稱多功能數(shù)字鐘電路設(shè)計(jì)二、實(shí)驗(yàn)任務(wù)及要求基本功能:四個(gè)數(shù)碼管顯示十進(jìn)制時(shí)—分,六個(gè)LED二極管以二進(jìn)制顯示秒,時(shí)、分均可調(diào)。擴(kuò)展功能:清零、暫停、整點(diǎn)報(bào)時(shí)、設(shè)定鬧鐘,整點(diǎn)報(bào)時(shí)和鬧鐘經(jīng)過LED以10Hz頻率的閃耀來實(shí)現(xiàn)。三、實(shí)驗(yàn)條件軟件:Quartus29.1硬件:DE0開發(fā)板,此中四個(gè)數(shù)碼管——顯示時(shí)、分八個(gè)LED——前六個(gè)顯示二進(jìn)制秒,后兩個(gè)分別為用于整點(diǎn)報(bào)時(shí)、鬧鐘八個(gè)按鍵——清零、暫停、標(biāo)準(zhǔn)時(shí)間鬧鐘時(shí)間和顯示切換調(diào)時(shí)、調(diào)分、鬧鐘調(diào)時(shí)、鬧鐘調(diào)分、結(jié)束鬧鐘四、設(shè)計(jì)思路nCR,EN兩按鍵分別用于清零和暫停。第一將DE0內(nèi)的50MHz振蕩源分別分頻到10Hz和1Hz,分頻模塊1Hz輸出作為秒的時(shí)鐘信號(hào),即每來一個(gè)時(shí)鐘信號(hào),秒增添1秒,10Hz輸出用于觸發(fā)整點(diǎn)報(bào)時(shí)和鬧鈴的LED顯示。秒和分的范圍為0~59,當(dāng)秒從59秒跳轉(zhuǎn)到00秒時(shí),分鐘增添1分,同時(shí)當(dāng)分鐘從59分跳轉(zhuǎn)到00分時(shí),小時(shí)增添1小時(shí),小時(shí)的范圍為0~23時(shí)。校時(shí)校分分別用AdjMinkey、AdjHrkey按鍵實(shí)現(xiàn),撥動(dòng)按鍵后,對(duì)應(yīng)數(shù)碼管示數(shù)每秒增添一。當(dāng)時(shí)間處于59分55~59秒時(shí)對(duì)應(yīng)整點(diǎn)報(bào)時(shí)的ALARM_RadioLED會(huì)以10Hz的頻率閃耀。撥下Mode按鍵后數(shù)碼管顯示將從標(biāo)準(zhǔn)時(shí)間切換到鬧鐘時(shí)間,調(diào)理鬧鐘時(shí)間同標(biāo)準(zhǔn)時(shí)間校時(shí)相同——撥動(dòng)SetMinkey,SetHrkey按鍵后對(duì)應(yīng)數(shù)碼管每秒增一。當(dāng)鬧鐘時(shí)間和標(biāo)準(zhǔn)時(shí)間相同時(shí)ALARM_ClockLED開始以10Hz的頻率閃耀。撥下CtrlBell按鍵后ALARM_ClockLED停止閃耀。五、verilog程序及說明*******************Complete_Clock.v*********************//程序骨干,調(diào)用其余文件主模塊:ModuleComplete_Clock(LED_hr,LED_min,LED_sec,ALARM_Radio,ALARM_Clock_50MHzIN,AdjMinkey,AdjHrkey,SetMinkey,SetHrkey,CtrlBell,Mode,nCR,EN);input_50MHzIN;//50MHz時(shí)鐘源個(gè)人采集整理僅供參照學(xué)習(xí)inputnCR,EN;//清零、暫停output[13:0]LED_hr,LED_min;//標(biāo)準(zhǔn)時(shí)間顯示——時(shí)、分output[5:0]LED_sec;//標(biāo)準(zhǔn)時(shí)間顯示——秒wire_1Hz,_10Hz;//分頻輸出1Hz和10HzinputAdjMinkey,AdjHrkey;//標(biāo)準(zhǔn)時(shí)間調(diào)時(shí)按鍵wire[7:0]Hour,Minute,Second;//時(shí)、分、秒計(jì)時(shí)inputSetMinkey,SetHrkey;//設(shè)定鬧鐘按鍵wire[7:0]Set_hr,Set_min;//鬧鐘時(shí)間顯示——時(shí)、分outputALARM_Radio,ALARM_Clock;//整點(diǎn)報(bào)時(shí)、鬧鐘信號(hào)顯示inputCtrlBell;//控制鬧鐘能否連續(xù)inputMode;//標(biāo)準(zhǔn)時(shí)間鬧鐘時(shí)間切換Div_fpU0(_1Hz,_10Hz,_50MHzIN,nCR,EN);//分頻Top_clockU1(Hour,Minute,Second,AdjMinkey,AdjHrkey,_1Hz,nCR);//標(biāo)準(zhǔn)時(shí)間RadioU2(ALARM_Radio,Minute,Second,_10Hz);//整點(diǎn)報(bào)時(shí)BellU3(ALARM_Clock,Set_hr,Set_min,Hour,Minute,SetHrkey,SetMinkey,_1Hz,_10Hz,CtrlBell);//鬧鐘DisplayL1(LED_hr[13:7],Hour[7:4],Set_hr[7:4],Mode);//數(shù)碼管顯示DisplayL2(LED_hr[6:0],Hour[3:0],Set_hr[3:0],Mode);DisplayL3(LED_min[13:7],Minute[7:4],Set_min[7:4],Mode);DisplayL4(LED_min[6:0],Minute[3:0],Set_min[3:0],Mode);assignLED_sec=Second[5:0];//LED顯示秒endmodule***********************Div_fp.v************************//將時(shí)鐘源50MHz頻率分頻到1Hz(時(shí)鐘脈沖)和10Hz(鬧鐘及整點(diǎn)報(bào)時(shí))分頻模塊:moduleDiv_fp(_1Hz,_10Hz,_50MHzIN,nCR,EN);input_50MHzIN,nCR,EN;output_1Hz,_10Hz;reg_1Hz,_10Hz;reg[24:0]count1,count2;

//中間變量決定

_1Hz

和_10Hz

能否翻轉(zhuǎn)always@(posedge_50MHzIN)beginif(nCR)

//清零begin_1Hz<=~_1Hz;endelseif(EN)count1<=count1;

//暫停elsebegin個(gè)人采集整理僅供參照學(xué)習(xí)if(count1==24999999)

//分至

1Hzbegincount1<=0;_1Hz<=~_1Hz;endelsecount1<=count1+1;if(count2==2499999)

//分至

10Hzbegincount2<=0;_10Hz<=~_10Hz;endelsecount2<=count2+1;endendendmodule************************Top_clock.v**************************//完成計(jì)時(shí)、校時(shí)、暫停、清零基本功能頂層時(shí)鐘模塊:moduleTop_clock(Hour,Minute,Second,AdjMinkey,AdjHrkey,_1Hz,nCR,EN);input_1Hz,nCR,EN;inputAdjMinkey,AdjHrkey;output[7:0]Hour,Minute,Second;wireMin_Ctrl,Hr_Ctrl;Sec_countS(Second,nCR,EN,_1Hz);//秒counter60M(Minute,nCR,EN,~Min_Ctrl);//分counter24H(Hour,nCR,EN,~Hr_Ctrl);//時(shí)assignMin_Ctrl=AdjMinkey?_1Hz:(Second==8'b00111011);//當(dāng)AdjMinkey按下或秒為59時(shí)下一個(gè)脈沖分加1assignHr_Ctrl=AdjHrkey?_1Hz:((Second==8'b00111011)&&(Minute==8'b01011001));//當(dāng)AdjHrkey按下或秒為59時(shí)下一個(gè)脈沖時(shí)加1endmodule秒顯示模塊:moduleSec_count(Sec,nCR,EN,CP);inputCP,nCR,EN;output[7:0]Sec;reg[7:0]Sec,M,H;regtemp;個(gè)人采集整理僅供參照學(xué)習(xí)always@(posedgeCP)begintemp<=0;if(nCR)Sec<=8'b0;

//清零elseif(EN)Sec<=Sec;

//暫停elseif(Sec==8'b00111011)

Sec<=8'b0;

//顯示范圍

0~59elseSec<=Sec+6'b000001;

//每次觸發(fā)加

1endendmodule模十計(jì)數(shù)模塊:modulecounter10(Q,nCR,EN,CP);//用于顯示兩位數(shù)中的個(gè)位inputCP,EN,nCR;output[3:0]Q;reg[3:0]Q;always@(posedgeCPorposedgenCRorposedgeEN)beginif(nCR)Q<=4'b0;//清零elseif(EN)Q<=Q;//暫停elseif(Q==4'b1001)Q<=4'b0;//個(gè)位范圍0~9elseQ<=Q+4'b0001;endendmodule模六計(jì)數(shù)模塊:modulecounter6(Q,nCR,EN,CP);//用于顯示兩位數(shù)中的十位inputCP,nCR,EN;output[3:0]Q;reg[3:0]Q;always@(posedgeCPorposedgenCRorposedgeEN)beginif(nCR)Q<=4'b0;//清零elseif(EN)Q<=Q;//暫停elseif(Q==4'b0101)Q<=4'b0;//十位范圍0~5elseQ<=Q+4'b0001;endendmodule模六十計(jì)數(shù)模塊:modulecounter60(Cnt,nCR,EN,CP);inputCP,nCR,EN;output[7:0]Cnt;wireENP;counter10C0(Cnt[3:0],nCR,EN,CP);

//個(gè)位十位分開表示,便于數(shù)碼管顯示個(gè)人采集整理僅供參照學(xué)習(xí)counter6C1(Cnt[7:4],nCR,ENP,CP);//低四位表示個(gè)位,高四位代表十位assignENP=!(Cnt[3:0]==4'b1001);//產(chǎn)生向十位進(jìn)位信號(hào)endmodule模二十四計(jì)數(shù)模塊:modulecounter24(Q,nCR,EN,CP);//顯示時(shí),十位個(gè)位分開表示便于數(shù)碼管顯示inputCP,nCR,EN;output[7:0]Q;reg[7:0]Q;always@(posedgeCPorposedgenCRorposedgeEN)beginif(nCR)Q<=4'b0000000;//清零elseif(EN)Q<=Q;//暫停elseif((Q[3:0]<4'b1001)&&Q[7:4]<4'b0010)Q<=Q+4'b0001;elseif((Q[3:0]==4'b1001)&&Q[7:4]<4'b0010)beginQ[7:4]<=Q[7:4]+4'b0001;Q[3:0]<=4'b0000;end//個(gè)位向十位進(jìn)位elseif((Q[3:0]<4'b0011)&&Q[7:4]==4'b0010)Q<=Q+4'b0001;elseQ<=8'b0;endendmodule**************************Radio.v******************************//當(dāng)時(shí)間是某時(shí)59分55秒時(shí)信號(hào)燈閃耀整點(diǎn)報(bào)時(shí)模塊:moduleRadio(ALARM_Radio,Minute,Second,_10Hz);input_10Hz;input[7:0]Minute,Second;outputALARM_Radio;regALARM_Radio;always@(posedge_10Hz)beginif(Minute==8'b01011001&&Second>=8'b00110111)//時(shí)間大于等于59分55秒ALARM_Radio=~ALARM_Radio;//開始閃耀elseALARM_Radio=1'b0;endendmodule****************************Bell.v*********************************//鬧鈴設(shè)定及鬧鈴開關(guān)鬧鈴模塊:個(gè)人采集整理僅供參照學(xué)習(xí)moduleBell(ALARM_Clock,Set_hr,Set_min,Hour,Minute,SetHrkey,SetMinkey,_1Hz,_10Hz,CtrlBell);input_1Hz,_10Hz;inputSetHrkey,SetMinkey;inputCtrlBell;input[7:0]Hour,Minute;outputALARM_Clock;output[7:0]Set_hr,Set_min;wireCheck,Min_Ctrl,Hr_Ctrl;regALARM_Clock;

//鬧鈴時(shí)間設(shè)定//鬧鈴控制counter60SM(Set_min,0,0,~Min_Ctrl);counter24SH(Set_hr,0,0,~Hr_Ctrl);

//鬧鈴時(shí)間設(shè)定同標(biāo)準(zhǔn)時(shí)間設(shè)定assignMin_Ctrl=SetMinkey?_1Hz:0;assignHr_Ctrl=SetHrkey?_1Hz:0;assignCheck=((Set_hr[7:4]==Hour[7:4])&&(Set_hr[3:0]==Hour[3:0])&&(Set_min[7:4]==Minute[7:4])&&(Set_min[3:0]==Minute[3:0]));判斷鬧鈴時(shí)間能否與標(biāo)準(zhǔn)時(shí)間相同always@(posedge_10Hz)beginif(Check==1&&CtrlBell==0)ALARM_Clock=~ALARM_Clock

//并且

//假如鬧鈴時(shí)間與標(biāo)準(zhǔn)時(shí)間相同CtrlBell沒有被撥動(dòng),鬧鈴信號(hào)有效elseALARM_Clock=1'b0;endendmodule***********************************Display.v************************************//將正常時(shí)間及鬧鐘時(shí)間經(jīng)過BCD碼翻譯到數(shù)碼管上moduleDisplay(out,in1,in2,sel);input[7:0]in1,in2;inputsel;

//輸當(dāng)選擇顯示標(biāo)準(zhǔn)時(shí)間還是鬧鈴時(shí)間output[6:0]out;wirexianshi;

//中間變量,選摘要顯示的內(nèi)容reg[6:0]out;assignxianshi=(~sel)?in1:in2;

//選擇顯示的內(nèi)容always@(xianshi)begincase(in1)

//將

BCD

碼翻譯到數(shù)碼管上4'b0000:out=7'b0000001;4'b0001:out=7'b1001111;個(gè)人采集整理僅供參照學(xué)習(xí)4'b0010:out=7'b0010010;4'b0011:out=7'b0000110;4'b0100:out=7'b1001100;4'b0101:out=7'b0100100;4'b0110:out=7'b0100000;4'b0111:out=7'b0001111;4'b1000:out=7'b0000000;4'b1001:out=7'b0000100;default:out=7'b1111111;endcaseendendmodule六、仿真結(jié)果考據(jù)仿真說明:由語EndTime及GridSize設(shè)置太長會(huì)因內(nèi)存不足而以致仿真失敗,故仿真時(shí)將開發(fā)板50MHz振蕩源看作1Hz及10Hz作為觸發(fā)脈沖。即:程序中全部_Hz及_10Hz都換為_50MHzIN。1、秒向分進(jìn)位由圖可知當(dāng)Second從59變到0時(shí)Minute也從0增至1,仿真結(jié)果正確。2、分向時(shí)進(jìn)位由圖可知當(dāng)Minute從89變成0的同時(shí)Hour也從0變成1,仿真結(jié)果正確。說明:Minute十位和個(gè)位分別用BCD碼表示,時(shí)間為59分時(shí)Minute=01011001,轉(zhuǎn)變成十進(jìn)制正好為圖中的893、從23:59:59到00:00:00個(gè)人采集整理僅供參照學(xué)習(xí)由圖可知當(dāng)Second從59變成0的時(shí)候Minute從89變成0,同時(shí)Hour也從35變成0,方正結(jié)果正確。說明:與Minute同理,當(dāng)時(shí)間是23點(diǎn)時(shí)Hour=00100011,轉(zhuǎn)變成十進(jìn)制正好為圖中的354、校時(shí)(AdjHrkey和AdjMinkey均置1)由圖可知調(diào)時(shí)調(diào)分按鍵撥動(dòng)后,每來一個(gè)脈沖Hour和Minute的地址就會(huì)增1,Second不受控制故脈沖來的同時(shí),地址也會(huì)增1。Hour和Minute分別在35、89處返回0的原由已在3、4中說明。5、整點(diǎn)報(bào)時(shí)(ALARM_Radio)由圖可知,當(dāng)Minute地址為89(數(shù)碼管顯示Minute為59)并且Second>55時(shí)整點(diǎn)報(bào)時(shí)信號(hào)ALARM_Radio開始出現(xiàn)翻轉(zhuǎn)。仿真結(jié)果正確。說明:因仿真中觸發(fā)信號(hào)都同為_50MHzIN,故ALARM_Radio翻轉(zhuǎn)頻率并未顯然高于Secon

溫馨提示

  • 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)論