名称:数字电子钟设计Verilog代码Quartus? 实验箱
软件:Quartus
语言:Verilog
代码功能:
数字电子钟
①设计一个具有“时”,“分”,“秒”显示的电子钟
②具有校时功能
③具有整点报时功能
④具有定时闹钟功能
⑤秒信号产生电路采用石英晶体构成的振荡器实现(4Mhz或32768hz)
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
本代码已在实验箱验证,实验箱如下,其他开发板可以修改管脚适配:
演示视频:
设计文档:
1. 工程文件
控制方法:
2个拨码开关SW0和SW1控制模式:
SW0=0,SW1=0为正常计时模式;
SW0=0,SW1=1为修改时间模式;
SW0=1,SW1=0为显示闹钟时间模式;
SW0=1,SW1=1为修改闹钟时间模式;
2个按键,key0修改小时,key1修改分钟:
将拨码开关设置为SW0=0,SW1=1,此时可以修改当前时间;
将拨码开关设置为SW0=1,SW1=1,此时可以修改闹钟时间;
2. 程序文件
3. 程序编译
4. RTL图
5. 管脚分配
6. 仿真图
分频模块
模式控制模块
计时模块
闹钟模块
响铃模块
显示模块
部分代码展示:
//设置闹钟模块 module?alarm_clock( input?clk_50M, input?[3:0]?state_mode,////当前模式,4'd0:计时,4'd1设置时间?,4'd2显示闹钟时间,4'd3设置闹钟时间 input?AH_key,//AH?修改小时 input?AM_key,//AM?修改分钟 output?[7:0]?alarm_hour_time,//时 output?[7:0]?alarm_minute_time,//分 output?[7:0]?alarm_second_time//秒 ); wire?AH_key_negedge; wire?AM_key_negedge; //按键消抖 key_debounce?i0_key_debounce( ?????.?clk(clk_50M), ?????.?button_in(AH_key),//输入 ?.?button_neg(AH_key_negedge)//消抖后按键下降沿 ); //按键消抖 key_debounce?i1_key_debounce( ?????.?clk(clk_50M), ?????.?button_in(AM_key),//输入 ?.?button_neg(AM_key_negedge)//消抖后按键下降沿 ); reg?[7:0]?hour=8'd21;//时 reg?[7:0]?minute=8'd59;//分 reg?[7:0]?second=8'd00;//秒 always@(posedge?clk_50M) if(state_mode==4'd3)begin//4'd3设置闹钟时间 if(AH_key_negedge) if(hour==8'd23) hour<=8'd0; else hour<=hour+8'd1; else hour<=hour; if(AM_key_negedge) if(minute==8'd59) minute<=8'd0; else
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1042