




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
-.z.一、實驗名稱多功能數(shù)字鐘電路設(shè)計二、實驗任務(wù)及要求基本功能:四個數(shù)碼管顯示十進制時—分,六個LED二極管以二進制顯示秒,時、分均可調(diào)。擴展功能:清零、暫停、整點報時、設(shè)定鬧鐘,整點報時和鬧鐘通過LED以10Hz頻率的閃爍來實現(xiàn)。三、實驗條件軟件:Quartus29.1硬件:DE0開發(fā)板,其中四個數(shù)碼管——顯示時、分八個LED——前六個顯示二進制秒,后兩個分別為用于整點報時、鬧鐘八個按鍵——清零、暫停、標(biāo)準(zhǔn)時間鬧鐘時間和顯示切換調(diào)時、調(diào)分、鬧鐘調(diào)時、鬧鐘調(diào)分、結(jié)束鬧鐘四、設(shè)計思路nCR,EN兩按鍵分別用于清零和暫停。首先將DE0內(nèi)的50MHz振蕩源分別分頻到10Hz和1Hz,分頻模塊1Hz輸出作為秒的時鐘信號,即每來一個時鐘信號,秒增加1秒,10Hz輸出用于觸發(fā)整點報時和鬧鈴的LED顯示。秒和分的*圍為0~59,當(dāng)秒從59秒跳轉(zhuǎn)到00秒時,分鐘增加1分,同時當(dāng)分鐘從59分跳轉(zhuǎn)到00分時,小時增加1小時,小時的*圍為0~23時。校時校分分別用AdjMinkey、AdjHrkey按鍵實現(xiàn),撥動按鍵后,對應(yīng)數(shù)碼管示數(shù)每秒增加一。當(dāng)時間處于59分55~59秒時對應(yīng)整點報時的ALARM_RadioLED會以10Hz的頻率閃爍。撥下Mode按鍵后數(shù)碼管顯示將從標(biāo)準(zhǔn)時間切換到鬧鐘時間,調(diào)節(jié)鬧鐘時間同標(biāo)準(zhǔn)時間校時一樣——撥動SetMinkey,SetHrkey按鍵后對應(yīng)數(shù)碼管每秒增一。當(dāng)鬧鐘時間和標(biāo)準(zhǔn)時間相同時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時鐘源inputnCR,EN;//清零、暫停output[13:0]LED_hr,LED_min;//標(biāo)準(zhǔn)時間顯示——時、分output[5:0]LED_sec;//標(biāo)準(zhǔn)時間顯示——秒wire_1Hz,_10Hz;//分頻輸出1Hz和10HzinputAdjMinkey,AdjHrkey;//標(biāo)準(zhǔn)時間調(diào)時按鍵wire[7:0]Hour,Minute,Second;//時、分、秒計時inputSetMinkey,SetHrkey;//設(shè)定鬧鐘按鍵wire[7:0]Set_hr,Set_min;//鬧鐘時間顯示——時、分outputALARM_Radio,ALARM_Clock;//整點報時、鬧鐘信號顯示inputCtrlBell;//控制鬧鐘是否繼續(xù)inputMode;//標(biāo)準(zhǔn)時間鬧鐘時間切換Div_fpU0(_1Hz,_10Hz,_50MHzIN,nCR,EN);//分頻Top_clockU1(Hour,Minute,Second,AdjMinkey,AdjHrkey,_1Hz,nCR);//標(biāo)準(zhǔn)時間RadioU2(ALARM_Radio,Minute,Second,_10Hz);//整點報時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************************//將時鐘源50MHz頻率分頻到1Hz(時鐘脈沖)和10Hz(鬧鐘及整點報時)分頻模塊: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**************************//完成計時、校時、暫停、清零基本功能頂層時鐘模塊: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);//時assignMin_Ctrl=AdjMinkey"_1Hz:(Second==8'b00111011);//當(dāng)AdjMinkey按下或秒為59時下一個脈沖分加1assignHr_Ctrl=AdjHrkey"_1Hz:((Second==8'b00111011)&&(Minute==8'b01011001));//當(dāng)AdjHrkey按下或秒為59時下一個脈沖時加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模十計數(shù)模塊:modulecounter10(Q,nCR,EN,CP);//用于顯示兩位數(shù)中的個位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;//個位*圍0~9elseQ<=Q+4'b0001;endendmodule模六計數(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模六十計數(shù)模塊:modulecounter60(t,nCR,EN,CP);inputCP,nCR,EN;output[7:0]t;wireENP;counter10C0(t[3:0],nCR,EN,CP);//個位十位分開表示,便于數(shù)碼管顯示counter6C1(t[7:4],nCR,ENP,CP);//低四位表示個位,高四位代表十位assignENP=!(t[3:0]==4'b1001);//產(chǎn)生向十位進位信號endmodule模二十四計數(shù)模塊:modulecounter24(Q,nCR,EN,CP);//顯示時,十位個位分開表示便于數(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//個位向十位進位 elseif((Q[3:0]<4'b0011)&&Q[7:4]==4'b0010)Q<=Q+4'b0001; elseQ<=8'b0; endendmodule**************************Radio.v******************************//當(dāng)時間是*時59分55秒時信號燈閃爍整點報時模塊: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)//時間大于等于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è)定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è)定同標(biāo)準(zhǔn)時間設(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]));//判斷鬧鈴時間是否與標(biāo)準(zhǔn)時間相同always(posedge_10Hz)beginif(Check==1&&CtrlBell==0)//如果鬧鈴時間與標(biāo)準(zhǔn)時間相同ALARM_Clock=~ALARM_Clock//并且CtrlBell沒有被撥動,鬧鈴信號有效elseALARM_Clock=1'b0;endendmodule***********************************Display.v************************************//將正常時間及鬧鐘時間通過BCD碼翻譯到數(shù)碼管上moduleDisplay(out,in1,in2,sel);input[7:0]in1,in2;inputsel;//輸入選擇顯示標(biāo)準(zhǔn)時間還是鬧鈴時間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é)果驗證仿真說明:由語EndTime及GridSize設(shè)置太長會因內(nèi)存不足而導(dǎo)致仿真失敗,故仿真時將開發(fā)板50MHz振蕩源當(dāng)作1Hz及10Hz作為觸發(fā)脈沖。即:程序中所有_Hz及_10Hz都換為_50MHzIN。1、秒向分進位由圖可知當(dāng)Second從59變到0時Minute也從0增至1,仿真結(jié)果正確。2、分向時進位由圖可知當(dāng)Minute從89變?yōu)?的同時Hour也從0變?yōu)?,仿真結(jié)果正確。說明:Minute十位和個位分別用BCD碼表示,時間為59分時Minute=01011001,轉(zhuǎn)化為十進制正好為圖中的893、從23:59:59到00:00:00由圖可知當(dāng)Second從59變?yōu)?的時候Minute從89變?yōu)?,同時Hour也從35變?yōu)?,方正結(jié)果正確。說明:與Minute同理,當(dāng)時間是23點時Hour=00100011,轉(zhuǎn)化為十進制正好為圖中的354、校時(AdjHrkey和AdjMinkey均置1)由圖可知調(diào)時調(diào)分按鍵撥動后,每來一個脈沖Hour和Minute的地址就會增1,Second不受控制故脈沖來的同時,地址也會增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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 新解讀《CB-T 804-1999航海磁羅經(jīng)系列》新解讀
- 采購框架協(xié)議范本
- 2024年血橙提取物化妝品資金籌措計劃書代可行性研究報告
- Brand KPIs for health insurance:Seguros Monterrey New York Life in Mexico-英文培訓(xùn)課件2025.4
- 廣西壯族自治區(qū)河池市2022-2023學(xué)年高二下學(xué)期化學(xué)期末考試試題(含答案)
- 商丘物業(yè)公司管理制度
- 各項教育常規(guī)管理制度
- 初中英語八年級下冊統(tǒng)編教案 uunit8
- 介紹搶購活動方案
- 從事營利活動方案
- 延遲退休政策驅(qū)動中國第二次人口紅利的多維度解析與展望
- 2025山東濟南屬國有企業(yè)招聘41人筆試參考題庫附帶答案詳解析
- 2025年廣東省深圳市龍崗區(qū)中考英語二模試卷
- 江蘇揚州中學(xué)2024-2025學(xué)年數(shù)學(xué)高二下期末經(jīng)典試題含解析
- 本科評估畢業(yè)5年學(xué)生的專業(yè)培養(yǎng)目標(biāo)達(dá)成情況分析
- 創(chuàng)新網(wǎng)絡(luò)中的溢出效應(yīng):生產(chǎn)網(wǎng)絡(luò)中的擴散機制
- 人工智能訓(xùn)練師4級模擬復(fù)習(xí)測試卷附答案
- 針對醫(yī)療行業(yè)工控系統(tǒng)的網(wǎng)絡(luò)安全防護策略研究報告
- 國際壓力性損傷-潰瘍預(yù)防和治療臨床指南(2025年版)解讀課件
- 數(shù)據(jù)安全與運維安全審計系統(tǒng)項目方案
- 水稻測產(chǎn)驗收報告格式
評論
0/150
提交評論