版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
-.z.一、實(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í)和鬧鐘通過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í)鐘信號,即每來一個(gè)時(shí)鐘信號,秒增加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),撥動按鍵后,對應(yīng)數(shù)碼管示數(shù)每秒增加一。當(dāng)時(shí)間處于59分55~59秒時(shí)對應(yīng)整點(diǎn)報(bào)時(shí)的ALARM_RadioLED會以10Hz的頻率閃爍。撥下Mode按鍵后數(shù)碼管顯示將從標(biāo)準(zhǔn)時(shí)間切換到鬧鐘時(shí)間,調(diào)節(jié)鬧鐘時(shí)間同標(biāo)準(zhǔn)時(shí)間校時(shí)一樣——撥動SetMinkey,SetHrkey按鍵后對應(yīng)數(shù)碼管每秒增一。當(dāng)鬧鐘時(shí)間和標(biāo)準(zhǔn)時(shí)間相同時(shí)ALARM_ClockLED開始以10Hz的頻率閃爍。撥下CtrlBell按鍵后ALARM_ClockLED停止閃爍。verilog程序及注釋*******************plete_Clock.v*********************//程序主干,調(diào)用其他文件主模塊:Moduleplete_Clock(LED_hr,LED_min,LED_sec,ALARM_Radio,ALARM_Clock,_50MHzIN,AdjMinkey,AdjHrkey,SetMinkey,SetHrkey,CtrlBell,Mode,nCR,EN);input_50MHzIN;//50MHz時(shí)鐘源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í)、鬧鐘信號顯示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)begin if(nCR)//清零 begin _1Hz<=~_1Hz; end elseif(EN)count1<=count1;//暫停 else begin if(count1==24999999)//分至1Hz begin count1<=0; _1Hz<=~_1Hz; end else count1<=count1+1; if(count2==2499999)//分至10Hz begin count2<=0; _10Hz<=~_10Hz; end else count2<=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;always(posedgeCP)begin temp<=0; if(nCR)Sec<=8'b0;//清零 elseif(EN)Sec<=Sec;//暫停 elseif(Sec==8'b00111011)Sec<=8'b0;//顯示*圍0~59elseSec<=Sec+6'b000001;//每次觸發(fā)加1 endendmodule模十計(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(t,nCR,EN,CP);inputCP,nCR,EN;output[7:0]t;wireENP;counter10C0(t[3:0],nCR,EN,CP);//個(gè)位十位分開表示,便于數(shù)碼管顯示counter6C1(t[7:4],nCR,ENP,CP);//低四位表示個(gè)位,高四位代表十位assignENP=!(t[3:0]==4'b1001);//產(chǎn)生向十位進(jìn)位信號endmodule模二十四計(jì)數(shù)模塊:modulecounter24(Q,nCR,EN,CP);//顯示時(shí),十位個(gè)位分開表示便于數(shù)碼管顯示 inputCP,nCR,EN; output[7:0]Q; reg[7:0]Q; always(posedgeCPorposedgenCRorposedgeEN) begin if(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í)信號燈閃爍整點(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)鬧鈴模塊:moduleBell(ALARM_Clock,Set_hr,Set_min,Hour,Minute,SetHrkey,SetMinkey,_1Hz,_10Hz,CtrlBell);input_1Hz,_10Hz;inputSetHrkey,SetMinkey;//鬧鈴時(shí)間設(shè)定inputCtrlBell;//鬧鈴控制input[7:0]Hour,Minute;outputALARM_Clock;output[7:0]Set_hr,Set_min;wireCheck,Min_Ctrl,Hr_Ctrl;regALARM_Clock;counter60SM(Set_min,0,0,~Min_Ctrl);//鬧鈴時(shí)間設(shè)定同標(biāo)準(zhǔn)時(shí)間設(shè)定counter24SH(Set_hr,0,0,~Hr_Ctrl);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)//如果鬧鈴時(shí)間與標(biāo)準(zhǔn)時(shí)間相同ALARM_Clock=~ALARM_Clock//并且CtrlBell沒有被撥動,鬧鈴信號有效elseALARM_Clock=1'b0;endendmodule***********************************Display.v************************************//將正常時(shí)間及鬧鐘時(shí)間通過BCD碼翻譯到數(shù)碼管上moduleDisplay(out,in1,in2,sel);input[7:0]in1,in2;inputsel;//輸入選擇顯示標(biāo)準(zhǔn)時(shí)間還是鬧鈴時(shí)間output[6:0]out;wire*ianshi;//中間變量,選擇要顯示的內(nèi)容reg[6:0]out;assign*ianshi=(~sel)"in1:in2;//選擇顯示的內(nèi)容always(*ianshi) begin case(in1)//將BCD碼翻譯到數(shù)碼管上 4'b0000:out=7'b0000001; 4'b0001:out=7'b1001111; 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é)果驗(yàn)證仿真說明:由語EndTime及GridSize設(shè)置太長會因內(nèi)存不足而導(dǎo)致仿真失敗,故仿真時(shí)將開發(fā)板50MHz振蕩源當(dāng)作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變?yōu)?的同時(shí)Hour也從0變?yōu)?,仿真結(jié)果正確。說明:Minute十位和個(gè)位分別用BCD碼表示,時(shí)間為59分時(shí)Minute=01011001,轉(zhuǎn)化為十進(jìn)制正好為圖中的893、從23:59:59到00:00:00由圖可知當(dāng)Second從59變?yōu)?的時(shí)候Minute從89變?yōu)?,同時(shí)Hour也從35變?yōu)?,方正結(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)分按鍵撥動后,每來一個(gè)脈沖Hour和Minute的地址就會增1,Second不受控制故脈沖來的同時(shí),地址也會增1。Hour和Minute
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度智能房產(chǎn)中介服務(wù)個(gè)人房屋交易買賣合同范本2篇
- 2025年度木工產(chǎn)品出口代理銷售合同2篇
- 二零二五年美甲店市場營銷策劃與執(zhí)行合同3篇
- 簡短商鋪?zhàn)赓U合同書
- 2025年度智能化牛運(yùn)輸與養(yǎng)殖一體化服務(wù)合同4篇
- 2025年度個(gè)人財(cái)務(wù)規(guī)劃與投資咨詢合同4篇
- 2025年度門面房租賃合同電子數(shù)據(jù)存儲安全協(xié)議3篇
- 二零二五女包新品研發(fā)與技術(shù)合作合同4篇
- 2025年度互聯(lián)網(wǎng)公司內(nèi)部股東股權(quán)優(yōu)化與退出合同4篇
- 二零二五版年薪制勞動合同法修訂本與員工薪酬調(diào)整機(jī)制4篇
- 土地買賣合同參考模板
- 2025高考數(shù)學(xué)二輪復(fù)習(xí)-專題一-微專題10-同構(gòu)函數(shù)問題-專項(xiàng)訓(xùn)練【含答案】
- 新能源行業(yè)市場分析報(bào)告
- 2025年天津市政建設(shè)集團(tuán)招聘筆試參考題庫含答案解析
- 巖土工程勘察.課件
- 專升本英語閱讀理解50篇
- 中餐烹飪技法大全
- 新型電力系統(tǒng)研究
- 滋補(bǔ)類用藥的培訓(xùn)
- 北師大版高三數(shù)學(xué)選修4-6初等數(shù)論初步全冊課件【完整版】
- 高職《勞動教育》指導(dǎo)綱要
評論
0/150
提交評論