名称:数字钟verilog闹钟DE2-115开发板电子表时钟电子钟原理图
软件:Quartus II
语言:Verilog
代码功能:
要求有顶层原理图,代码上有详细注释,有引脚分配的图表,开发版上演示
1.24小时制的时钟,显示时分秒,有复位键
2.可以手动校准时分
3.可以设置闹钟时间,有按键可以停闹钟
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
本代码已在DE2-115开发板验证,开发板如下,其他开发板可以修改管脚适配:
部分代码展示:
//计时模块 module jishi( input clk_50M, input clk_1Hz, input [3:0] state_mode,//当前模式,4'd0:计时,4'd1设置时间 ,4'd2显示闹钟时间,4'd3设置闹钟时间 input AH_key,//AH 修改小时 input AM_key,//AM 修改分钟 output [7:0] hour_time,//时 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;//时 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://除设置时间的状态下,其他状态均计时 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设置时间 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
设计文档:
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. 程序编译
5. 程序RTL图
6. 管脚分配
7. 仿真图
分频模块,用于将50MHz时钟分频到1Hz
设置模式模块,根据按键输入控制当前的模式,模式用led灯显示
计时模块,用于控制数字钟计时,也可以设置时间
上图可以看到state_mode为0001时,AHkey和AMkey可以控制小时和分钟
state_mode不为0001时,正常计时,秒钟计数到59,分钟加1,秒清零
闹钟设置模块
上图可以看到state_mode为0011时,AHkey和AMkey可以控制小时和分钟
闹钟响铃模块
上图可以看到,当分钟和小时一致时,闹钟响铃,bell_out为高电平
显示模块
用于数码管译码显示