




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1、 課程設(shè)計(jì)目標(biāo) 1. 熟悉并掌握verilog 硬件描述語(yǔ)言2. 熟悉quartus 軟件開(kāi)發(fā)環(huán)境3. 學(xué)會(huì)設(shè)計(jì)大中規(guī)模的數(shù)字電路,并領(lǐng)會(huì)其中的設(shè)計(jì)思想 二、課程設(shè)計(jì)實(shí)現(xiàn)的功能(1) 設(shè)計(jì)一個(gè)數(shù)碼管實(shí)時(shí)顯示時(shí)、分、秒的數(shù)字時(shí)鐘(24小時(shí)顯示模式);(2) 可以調(diào)節(jié)小時(shí),分鐘。(3) 能夠進(jìn)行24小時(shí)和12小時(shí)的顯示切換。(4) 可以設(shè)置任意時(shí)刻鬧鐘,并且有開(kāi)關(guān)鬧鐘功能。(5) 有整點(diǎn)報(bào)時(shí)功能,幾點(diǎn)鐘LED燈閃亮幾下。(6) 有復(fù)位按鍵,復(fù)位后時(shí)間從零開(kāi)始計(jì)時(shí),但鬧鐘設(shè)置時(shí)間不變。3、 設(shè)計(jì)原理:1、總原理框圖:譯碼顯示模塊切換12進(jìn)制顯示復(fù)位分鐘校正小時(shí)校正分頻模塊計(jì)數(shù)模塊是輸出整點(diǎn)報(bào)時(shí)信
2、號(hào)到達(dá)整點(diǎn)輸出鬧鐘信號(hào)是否到鬧鐘時(shí)間設(shè)置鬧鐘分鐘設(shè)置鬧鐘小時(shí)模式選擇模塊是 附全部代碼:總模塊:module clock(clk,reset,MODE,Alarm_ctr,BT2,H12_24,DSH,DSL,DMH,DML,DHH,DHL,dian,bao_signal,nao_signal); input clk;/50MHz input reset,MODE,Alarm_ctr,BT2,H12_24;/復(fù)位鍵,模式選擇按鈕,鬧鐘開(kāi)關(guān)檔,調(diào)節(jié)按 鈕 ,1224小時(shí)切換檔 output 7:0DMH,DML,DHH,DHL; /4個(gè)數(shù)碼管顯示輸入信號(hào) output dian,bao_sign
3、al,nao_signal; /時(shí)分間隔點(diǎn),報(bào)時(shí)信號(hào),鬧鐘信號(hào) output 3:0DSH,DSL; /秒鐘輸出信號(hào) wire 3:0 SH,SL,MH,ML,HH,HL; wire 3:0 LED_mode; wire 3:0 HH12,HL12,HH24,HL24,MH24,ML24,SH24,SL24; wire 3:0 set_HH,set_HL,set_MH,set_ML; wire _1HZ,_10ms,_250ms,_500ms; wire Keydone1; wire Keydone2; wire co1,co11,co111,co2,co22,co222,set_co2; w
4、ire 3:0mode_flag; assign dian=1'b0; devide_f u1(_1HZ,_10ms,_250ms,_500ms,reset,clk); /分頻,得到4種不同頻率的時(shí)鐘信號(hào)key_press u2(_10ms,MODE,Keydone1); /模式檔按鈕去抖動(dòng)key_press u20(_10ms,BT2,Keydone2); /調(diào)節(jié)按鈕去除抖動(dòng)mode u3(Keydone1,mode_flag); /通過(guò)模式按鈕產(chǎn)生不同模式second u4(_1HZ,reset,mode_flag,Keydone2,SH24,SL24,co1); /秒計(jì)時(shí)minu
5、te u5(co11,reset,MH24,ML24,co2); /分計(jì)時(shí)hour u6(co22,reset,HH24,HL24); /小時(shí)計(jì)時(shí) SEG7_LUT u7(DML,ML); /4個(gè)數(shù)碼管顯示SEG7_LUT u8(DMH,MH);SEG7_LUT u9(DHL,HL);SEG7_LUT u10(DHH,HH);display_LED u11(DSL,SL); /LED燈顯示秒或模式燈display_LED u12(DSH,SH);mode_choose u13(mode_flag,Keydone2,_250ms,co1,co2,set_co2,co11,co22,co111,c
6、o222); /選擇模式進(jìn)行不同操作 hour12_24 u14(HH24,HL24,HH12,HL12); /12-24小時(shí)切換boshi u15(HH,HL,MH,ML,SH,SL,_1HZ,bao_signal); /整點(diǎn)報(bào)時(shí)set_naozhong u16(co111,co222,set_HH,set_HL,set_MH,set_ML,set_co2); /設(shè)置鬧鐘時(shí)間Naozhong u17(Alarm_ctr,_500ms,set_HH,set_HL,set_MH,set_ML,HH24,HL24,MH24,ML24,nao_signal); /任意鬧鐘響應(yīng)LUT_mode u18
7、(mode_flag,H12_24,HH12,HL12,HH24,HL24,MH24,ML24,set_HH,set_HL,set_MH,set_ML,MH,ML,HH,HL);/通過(guò)模式選擇數(shù)碼管顯示 LED_mode u19(mode_flag,SH24,SL24,SH,SL); 模式選擇LED燈顯示Endmodule分頻模塊 :分頻模塊的作用主要是要獲得各種頻率的時(shí)鐘信號(hào)。輸入信號(hào)為50MHZ的信號(hào),要想獲得1HZ的信號(hào)作為秒脈沖計(jì)時(shí),則要對(duì)50MHZ信號(hào)分頻。通過(guò)計(jì)數(shù)的方式,當(dāng)計(jì)數(shù)從0開(kāi)始到24 999999時(shí),1HZ信號(hào)取反一次,計(jì)數(shù)又從0開(kāi)始,如此循環(huán),就可以得到1HZ脈沖信號(hào)。對(duì)
8、于其他信號(hào)也是如此,只是計(jì)數(shù)值不一樣,得到的分頻信號(hào)不同。module devide_f(_1HZ,_10ms,_250ms,_500ms,nCR,_50MHZ); input _50MHZ,nCR; output _1HZ,_10ms,_250ms,_500ms; reg _1HZ,_10ms,_250ms,_500ms; reg31:0Q1,Q2,Q3,Q4; always(posedge _50MHZ or negedge nCR)begin if(nCR) begin Q1<=32'd0; Q2<=32'd0; Q3<=32'd0; Q4<
9、;=32'd0; end else if(Q1>=32'd24999999) begin Q1<=32'd0; _1HZ=_1HZ; end else if(Q2>=32'd249999) begin Q2<=32'd0; _10ms=_10ms; end else if(Q4>=32'd6299999) begin Q4<=32'd0; _250ms=_250ms; end else if(Q3>=32'd12499999) begin Q3<=32'd0; _500ms=
10、_500ms; end else begin Q1<=Q1+1'd1; Q2<=Q2+1'd1; Q3<=Q3+1'd1; Q4<=Q4+1'd1; end end endmodule計(jì)時(shí)模塊: 秒計(jì)數(shù):在1HZ脈沖下進(jìn)行秒計(jì)時(shí),當(dāng)計(jì)時(shí)達(dá)到59秒后,在下一個(gè)脈沖來(lái)臨變0,并發(fā)出一個(gè)脈沖信號(hào),可供下面分鐘計(jì)數(shù)作為輸入脈沖信號(hào)計(jì)時(shí)。分鐘計(jì)數(shù):在輸入脈沖下,分鐘開(kāi)始計(jì)時(shí),當(dāng)計(jì)時(shí)達(dá)到59后,在下一個(gè)脈沖來(lái)臨變0,并發(fā)出一個(gè)脈沖,供小時(shí)計(jì)數(shù)的輸入脈沖新號(hào)。小時(shí)計(jì)數(shù):脈沖信號(hào)來(lái)臨時(shí),計(jì)數(shù)加1,達(dá)到23后在下一個(gè)脈沖的作用下清零,從新計(jì)時(shí)。如果有復(fù)位信
11、號(hào),則時(shí)分秒全部清零。module second(cp,reset,mode_flag,BT2,SH,SL,co);input cp,reset,BT2;input3:0mode_flag;output co=1'b0;reg co;output 3:0SL,SH;reg3:0SH,SL;reg7:0cnt;always(posedge cp or negedge reset )beginif(!reset) begin SL=4'b0;SH=4'b0;cnt<=8'b0;endelse if(mode_flag=4'b0010)&&
12、;(!BT2) begin SL=4'b0;SH=4'b0;cnt<=8'b0;endelsebegin if(cnt=8'd59) begin cnt<=8'd0; SH<=4'd0; SL<=4'd0; co<=1'b1; end else begin co=1'b0; cnt=cnt+8'd1; SL<=cnt%10; SH<=cnt/10; end end end endmodule module minute (cp,reset,MH,ML,co);input c
13、p ,reset;output co=1'b0;output 3:0ML,MH;reg3:0MH,ML;reg7:0cnt;reg co;always(posedge cp or negedge reset)beginif(!reset) begin ML=4'b0;MH=4'b0;cnt<=8'b0;endelsebegin if(cnt=8'd59) begin cnt<=8'd0; MH<=4'd0; ML<=4'd0; co<=1'b1; end else begin co=1'
14、;b0; cnt=cnt+8'd1; ML<=cnt%10; MH<=cnt/10; end end end endmodule module hour (cp,reset,HH,HL);input cp,reset;output 3:0HL,HH;reg3:0HH,HL;reg7:0cnt;always(posedge cp or negedge reset)beginif(!reset) begin HL=4'b0;HH=4'b0;cnt<=8'b0;end elsebegin if(cnt=8'd23) begin cnt<
15、=8'd0; HH<=4'd0; HL<=4'd0; end else begin cnt=cnt+8'd1; HL<=cnt%10; HH<=cnt/10; end end end Endmodule模式選擇模塊 :同過(guò)一個(gè)模式檔按鍵MODE,按一下產(chǎn)生對(duì)應(yīng)一種模式mode_flag,并且可以循環(huán)。在不同的模式下可以進(jìn)行不同的操作。其中mode_flag=4'0000為正常顯示計(jì)時(shí),mode_flag=4'0001為小時(shí)調(diào)鐘模式,mode_flag=4'00010為分鐘調(diào)鐘模,mode_flag=4'00
16、11為鬧鐘小時(shí)設(shè)置模式,mode_flag=4'0100為鬧鐘分鐘設(shè)置模式。module key_press(_10ms,KEY,Keydone);input KEY,_10ms;output Keydone;reg dout1,dout2,dout3;always (posedge _10ms)begin dout1 <= KEY; dout2 <= dout1; dout3 <= dout2; endassign Keydone = (dout1 | dout2 | dout3);endmodule module mode (MODE,mode_flag); in
17、put MODE ; output 3:0mode_flag; reg 3:0mode_flag; always (negedge MODE ) beginmode_flag = mode_flag+ 4'b1;if(mode_flag = 4'b0101)mode_flag = 2'b0; endendmodule module LED_mode (mode_flag,SH24,SL24,SH,SL); input 3:0 mode_flag; input 3:0 SH24,SL24; output 3:0SH,SL; reg 3:0SH,SL; always(mod
18、e_flag )begin case (mode_flag) 4'b0000:begin SH<=SH24; SL<=SL24;end 4'b0001: begin SH<=4'b0000; SL<=4'b0001;end 4'b0010: begin SH<=4'b0000; SL<=4'b0010;end 4'b0011: begin SH<=4'b0000; SL<=4'b0100;end 4'b0100: begin SH<=4'b000
19、0; SL<=4'b1000;end default : begin SH<=SH24; SL<=SL24;end endcase end endmodule Module LUT_mode (mode_flag,H12_24,HH12,HL12,HH24,HL24,MH24,ML24,set_HH,set_HL,set_MH,set_ML,MH,ML,HH,HL);input 3:0 HH12,HL12,HH24,HL24,MH24,ML24;input 3:0 set_HH,set_HL,set_MH,set_ML;input 3:0 mode_flag;inpu
20、t H12_24;output 3:0 MH,ML,HH,HL;reg 3:0 MH,ML,HH,HL;always(mode_flag or H12_24) begin case (mode_flag) 4'b0011, 4'b0100: begin HH<=set_HH; HL<=set_HL; MH<=set_MH; ML<=set_ML; end default:begin if(H12_24)begin HH<=HH12; HL<=HL12; MH<=MH24; ML<=ML24;end else begin HH<
21、;=HH24; HL<=HL24; MH<=MH24; ML<=ML24;end end endcase end endmodule module mode_choose(mode_flag,BT2,_250ms,co1,co2,set_co2,co11,co22,co111,co222); input 3:0mode_flag; input BT2,_250ms,co1,co2,set_co2; output co11,co22,co111,co222; supply1 Vdd; reg co11,co22,co111,co222; always(mode_flag)beg
22、in case (mode_flag) 4'b0001: begin if(BT2) co22<=_250ms; else begin co22<=co2; co11<=co1; end end 4'b0010: begin if(BT2) begin co11<=_250ms; co22<=co2;end else begin co11<=co1; co22<=co2; end end 4'b0011: begin co22<=co2; co11<=co1; if(BT2) co222<=_250ms; el
23、se co222<=set_co2;end 4'b0100: begin co22<=co2; co11<=co1; if(BT2) co111<=_250ms; else co111<=Vdd; end default :begin co11<=co1; co22<=co2; end endcase end endmodule 鬧鐘模塊 :module set_naozhong(co111,co222,set_HH,set_HL,set_MH,set_ML,co2); input co111,co222; output 3:0set_HH,s
24、et_HL,set_MH,set_ML; supply1 Vdd; output co2; minute (co111,Vdd,set_MH,set_ML,co2);hour (co222,Vdd,set_HH,set_HL); endmodule modulenaozhong (Alarm_ctr,_1HZ,set_HH,set_HL,set_MH,set_ML,HH24,HL24,MH24,ML24,nao_signal); input Alarm_ctr,_1HZ; input 3:0 set_HH,set_HL,set_MH,set_ML; input 3:0 HH24,HL24,MH
25、24,ML24; output nao_signal; reg signal; reg nao_signal; reg 16:0 Q; always(posedge _1HZ)begin if(signal)&&(Alarm_ctr)begin if(set_HH=HH24)&&(set_HL=HL24)&&(set_MH=MH24)&&(set_ML=ML24)signal<=1'b1; else signal<=1'b0;end else if(signal)&&(Alarm_ctr
26、)begin nao_signal<=nao_signal; Q=Q+nao_signal; if(Q>=8'd720)begin Q<=16'b0; signal<=1'b0;end end else begin signal<=1'b0; nao_signal<=1'b0;end end endmodule 1224小時(shí)切換模塊:module hour12_24(HH24,HL24,HH12,HL12); input 3:0 HH24,HL24; output 3:0 HH12,HL12; reg 3:0 HH12
27、,HL12; reg flag; always(HH24 or HL24)begin if(HH24*10+HL24)<=12) begin HH12<=HH24; HL12<=HL24; end else if(HH24*10+HL24)>=13)&&(HH24*10+HL24)<=19) begin HH12<=4'd0; HL12<=HL24-4'd2; end else if(HH24*10+HL24)>=19)&&(HH24*10+HL24)<=21) begin HH12<=
28、4'd0; HL12<=HL24+4'd8; end else begin HH12<=HH24-4'd1; HL12<=HL24-4'd2; end end endmodule 整點(diǎn)報(bào)時(shí)模塊:module boshi(HH,HL,MH,ML,SH,SL,_500ms,bao_signal); input3:0 HH,HL,MH,ML,SH,SL; input _500ms; output bao_signal; reg bao_signal; reg 7:0Q1,Q2; reg bao; always(posedge _500ms)begin
29、 if(SH*10+SL)=8'd59)&&(MH*10+ML)=8'd59)begin Q1<=7'b0; bao<=1'b1;end else if(Q1<10*HH+HL)&&(bao) begin bao_signal<=bao_signal; Q1<=Q1+bao_signal; end else if(Q1=(10*HH+HL) bao<=1'b0; else begin bao_signal<=1'b0; end end endmodule 譯碼顯示模塊:一、
30、數(shù)碼管顯示:通過(guò)傳入響應(yīng)的4位十進(jìn)制數(shù),運(yùn)用case語(yǔ)句轉(zhuǎn)換輸出相應(yīng)的8位二進(jìn)制顯示碼,送入數(shù)碼管顯示。二、LED顯示 :module display_LED(s_out,s_int);input3:0s_int;output3:0s_out;reg3:0s_out;wire 3:0s_out1;always (s_int)begincase(s_int) 4'h0:s_out=4'b0000;4'h1:s_out=4'b0001;4'h2:s_out=4'b0010;4'h3:s_out=4'b0011;4'h4:s_o
31、ut=4'b0100;4'h5:s_out=4'b0101;4'h6:s_out=4'b0110;4'h7:s_out=4'b0111;4'h8:s_out=4'b1000;4'h9:s_out=4'b1001;endcaseendassign s_out1=s_out;Endmodulemodule SEG7_LUT(oSEG1,iDIG); input3:0iDIG; output7:0oSEG1; reg7:0oSEG; wire 7:0oSEG1; always (iDIG) begincase(i
32、DIG) 4'h0: oSEG = 8'b00111111;4'h1: oSEG = 8'b00000110;4'h2: oSEG = 8'b01011011; 4'h3: oSEG = 8'b01001111; 4'h4: oSEG = 8'b01100110;4'h5: oSEG = 8'b01101101;4'h6: oSEG = 8'b01111101; 4'h7: oSEG = 8'b00000111;4'h8: oSEG = 8'b0111
33、1111;4'h9: oSEG = 8'b01101111; 4'ha: oSEG = 8'b01110111;4'hb: oSEG = 8'b01111100; 4'hc: oSEG = 8'b00111001;4'hd: oSEG = 8'b01011110;4'he: oSEG = 8'b01111001;4'hf: oSEG = 8'b01110001;endcase end assign oSEG1=oSEG;endmodulemodule display_LED(s_out,s_int);input3:0s_int;output3:0s_out;reg3:0s_out;wire 3:0s_out1;always (s_int) begincase(s_int) 4'h0:s_out=4'b0000; 4'h1:s_out=4'b0001
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 八月十五超市活動(dòng)方案
- 公交公司三八節(jié)活動(dòng)方案
- 公交安全年活動(dòng)方案
- 零售商業(yè)貿(mào)易行業(yè)試題
- 公眾號(hào)簽到活動(dòng)方案
- 公會(huì)各項(xiàng)活動(dòng)方案
- 基于遙感技術(shù)的農(nóng)業(yè)生產(chǎn)監(jiān)控合作協(xié)議
- 公關(guān)公司品牌策劃方案
- 公關(guān)酒店活動(dòng)方案
- 公司diy七夕活動(dòng)策劃方案
- 日光性角化病的健康宣教
- 2025年八省聯(lián)考物理試卷答案解析版(云南)
- 個(gè)人發(fā)展與學(xué)習(xí)動(dòng)力的秘密
- 供配電課程設(shè)計(jì)報(bào)告
- 【MOOC】當(dāng)代社會(huì)中的科學(xué)與技術(shù)-南京大學(xué) 中國(guó)大學(xué)慕課MOOC答案
- 【MOOC】中級(jí)財(cái)務(wù)會(huì)計(jì)-江西財(cái)經(jīng)大學(xué) 中國(guó)大學(xué)慕課MOOC答案
- 2024年海南省中考物理試卷(附真題答案)
- 3D打印技術(shù)與應(yīng)用知到智慧樹(shù)期末考試答案題庫(kù)2024年秋西北工業(yè)大學(xué)
- 機(jī)房動(dòng)力環(huán)境監(jiān)控系統(tǒng)調(diào)試自檢報(bào)告
- 詩(shī)人海子課件
- 美術(shù)基礎(chǔ)理論知識(shí)單選題100道及答案解析
評(píng)論
0/150
提交評(píng)論