• 方案介绍
  • 相关推荐
申请入驻 产业图谱

数字时钟功能+Verilog+Quartus II

09/27 08:18
500
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

数字时钟功能+Verilog+Quartus II

软件 :Quartus II

语言:Verilog

代码功能

本设计实现了一个数字时钟系统,具备计时、显示、闹钟和按键控制等功能。系统能够通过数码管实时显示分钟和秒钟,支持闹钟时间设置,并可通过按键实现模式切换和暂停/启动。设计重点在于时钟信号分频、消抖处理、计时逻辑和闹钟控制,适用于FPGA开发板的数字时钟应用。

代码实现思路

系统采用模块化设计,主要分为时钟分频、消抖、计时、显示和闹钟控制五大模块。时钟分频模块将高频时钟信号分频为1Hz,作为计时基准;消抖模块对按键输入进行稳定处理,防止误触发;计时模块实现分钟和秒钟的递增逻辑,并支持复位和溢出处理;显示模块将计时结果转换为数码管显示格式,支持模式切换显示闹钟时间;闹钟控制模块实现闹钟时间的设置和循环。各模块通过信号线互联,整体结构清晰,便于扩展和维护。

---本代码已在小脚丫开发板验证

代码结构

- clock.v:顶层模块,负责各功能模块的连接与信号分配。

- clk_div.v:时钟分频模块,将12MHz时钟分频为1Hz。

- key_xiaodou.v:按键消抖模块,稳定按键输入信号。

- clock_ctrl.v:计时控制模块,实现分钟和秒钟的递增及溢出处理。

- display.v:显示模块,将计时和闹钟数据转换为数码管显示格式。

- alarm_ctrl.v:闹钟控制模块,实现闹钟时间的设置与循环。

部分代码展示:

//秒表
module?clock(
input?clk,//时钟
input?reset_n,//复位
input?stop_start_n,//暂停继续
input?mode_key,//模式切换
input?alarm_key,
output?[1:0]?SEG_DIG,
output?[7:0]?seg_1,//数码管
output?[7:0]?seg_2,//数码管
output?[7:0]?seg_3,//数码管

output?beep,//蜂鸣器
output?led//led闪烁
);
wire?[7:0]?minute_out;//计时值
wire?[7:0]?second_out;//秒钟
wire?clk_1Hz;
wire?stop_start;//暂停继续
wire?mode_change;
wire?alarm_add;
wire?[3:0]?alarm_minute;//闹钟时间
wire?mode_select;

//消抖模块
key_xiaodou?i0_key_xiaodou(
.?clkin(clk),
.?key_in(stop_start_n),//输入
.?key_negedge(stop_start)//消抖后按键下降沿
);

//消抖模块
key_xiaodou?i1_key_xiaodou(
.?clkin(clk),
.?key_in(mode_key),//输入
.?key_negedge(mode_change)//消抖后按键下降沿
);

//消抖模块
key_xiaodou?i2_key_xiaodou(
.?clkin(clk),
.?key_in(alarm_key),//输入
.?key_negedge(alarm_add)//消抖后按键下降沿
);

//分频模块
clk_div?i_clk_div(
.?clk(clk),//12M
.?reset_n(reset_n),//复位
.?stop_start(stop_start),
.?clk_1Hz(clk_1Hz)//1Hz
);

//计时控制模块
clock_ctrl?i_clock_ctrl(
.?clk_1Hz(clk_1Hz),//1Hz
.?reset_n(reset_n),//复位
.?minute_out(minute_out),//分钟值
.?second_out(second_out),//秒钟
.?led(led)//led闪烁
);


//闹钟控制模块
alarm_ctrl?i_alarm_ctrl(
.?clk(clk),//
.?reset_n(reset_n),//复位
.?alarm_add(alarm_add),//闹钟加
.?alarm_minute(alarm_minute)//闹钟时间
);


//显示模块
display?i_display(
.?clk(clk),//12MHz
.?reset_n(reset_n),//复位
.?mode_change(mode_change),//模式控制
.?alarm_minute(alarm_minute),//闹钟时间
.?second_out(second_out),//秒钟
.?minute_out(minute_out),//分钟
.?beep(beep),
.?SEG_DIG(SEG_DIG),
.?seg_1(seg_1),//数码管
.?seg_2(seg_2),//数码管
.?seg_3(seg_3)
);


endmodule

 

代码下载(付费可见):

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1546

相关推荐