名稱:數(shù)字鐘verilog鬧鐘DE2-115開發(fā)板電子表時(shí)鐘電子鐘原理圖(代碼在文末下載)
軟件:Quartus II
語言:Verilog
代碼功能:
要求有頂層原理圖,代碼上有詳細(xì)注釋,有引腳分配的圖表,開發(fā)版上演示。
1.24小時(shí)制的時(shí)鐘,顯示時(shí)分秒,有復(fù)位鍵。
2.可以手動(dòng)校準(zhǔn)時(shí)分。
3.可以設(shè)置鬧鐘時(shí)間,有按鍵可以停鬧鐘。
FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com
本代碼已在DE2-115開發(fā)板驗(yàn)證,開發(fā)板如下,其他開發(fā)板可以修改管腳適配:
演示視頻:
部分代碼展示:
//計(jì)時(shí)模塊 module?jishi( input?clk_50M, input?clk_1Hz, input?[3:0]?state_mode,//當(dāng)前模式,4'd0:計(jì)時(shí),4'd1設(shè)置時(shí)間?,4'd2顯示鬧鐘時(shí)間,4'd3設(shè)置鬧鐘時(shí)間 input?AH_key,//AH?修改小時(shí) input?AM_key,//AM?修改分鐘 output?[7:0]?hour_time,//時(shí) output?[7:0]?minute_time,//分 output?[7:0]?second_time//秒 ); wire?AH_key_negedge; wire?AM_key_negedge; reg?AH_key_buf0; reg?AH_key_buf1; reg?AM_key_buf0; reg?AM_key_buf1; always@(posedge?clk_50M) begin AH_key_buf0<=AH_key; AH_key_buf1<=AH_key_buf0; end always@(posedge?clk_50M) begin AM_key_buf0<=AM_key; AM_key_buf1<=AM_key_buf0; end assign?AH_key_negedge=~AH_key_buf0?&?AH_key_buf1;//按鍵下降沿 assign?AM_key_negedge=~AM_key_buf0?&?AM_key_buf1;?//按鍵下降沿 reg?[7:0]?hour=8'd12;//時(shí) reg?[7:0]?minute=8'd59;//分 reg?[7:0]?second=8'd00;//秒 always@(posedge?clk_50M) case(state_mode) 4'd0,4'd2,4'd3://除設(shè)置時(shí)間的狀態(tài)下,其他狀態(tài)均計(jì)時(shí) if(clk_1Hz)//1秒鐘變一次 if(hour==8'd23?&&?minute==8'd59?&&?second==8'd59)begin hour<=8'd0;?? minute<=8'd0;?? second<=8'd0; end else?if(minute==8'd59?&&?second==8'd59)begin?? ???hour<=hour+8'd1; minute<=8'd0;?? second<=8'd0; end else?if(second==8'd59)begin?? ???hour<=hour; minute<=minute+8'd1;?? second<=8'd0; end else?begin?? ???hour<=hour; minute<=minute;?? second<=second+8'd1; end 4'd1:begin//4'd1設(shè)置時(shí)間 if(AH_key_negedge) if(hour==8'd23) hour<=8'd0; else hour<=hour+8'd1; else ; if(AM_key_negedge) if(minute==8'd59) minute<=8'd0; else minute<=minute+8'd1; else ; end default:; endcase
設(shè)計(jì)文檔:
1.
控制方法:
2個(gè)撥碼開關(guān)SW0和SW1控制模式:
SW0=0,SW1=0為正常計(jì)時(shí)模式;
SW0=0,SW1=1為修改時(shí)間模式;
SW0=1,SW1=0為顯示鬧鐘時(shí)間模式;
SW0=1,SW1=1為修改鬧鐘時(shí)間模式;
2個(gè)按鍵,key0修改小時(shí),key1修改分鐘:
將撥碼開關(guān)設(shè)置為SW0=0,SW1=1,此時(shí)可以修改當(dāng)前時(shí)間;
將撥碼開關(guān)設(shè)置為SW0=1,SW1=1,此時(shí)可以修改鬧鐘時(shí)間;
2. 工程文件
3. 程序文件
4. 程序編譯
5. 程序RTL圖
6. 管腳分配
7. 仿真圖
分頻模塊,用于將50MHz時(shí)鐘分頻到1Hz
設(shè)置模式模塊,根據(jù)按鍵輸入控制當(dāng)前的模式,模式用led燈顯示
計(jì)時(shí)模塊,用于控制數(shù)字鐘計(jì)時(shí),也可以設(shè)置時(shí)間
上圖可以看到state_mode為0001時(shí),AHkey和AMkey可以控制小時(shí)和分鐘
state_mode不為0001時(shí),正常計(jì)時(shí),秒鐘計(jì)數(shù)到59,分鐘加1,秒清零
鬧鐘設(shè)置模塊
上圖可以看到state_mode為0011時(shí),AHkey和AMkey可以控制小時(shí)和分鐘
鬧鐘響鈴模塊
上圖可以看到,當(dāng)分鐘和小時(shí)一致時(shí),鬧鐘響鈴,bell_out為高電平
顯示模塊
用于數(shù)碼管譯碼顯示
點(diǎn)擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=260