多功能数字时钟 Verilog ModelSim
名称:多功能数字时钟 Verilog ModelSim
语言:Verilog
功能介绍
多功能数字时钟 Verilog ModelSim 实现了 digital_clock 相关的 FPGA 逻辑功能,包含完整 HDL 源码、工程文件、设计说明和付费下载压缩包,适合作为数字逻辑课程设计、实验验证或二次开发参考。
核心顶层模块为 multi_func_clock,可从顶层端口、时钟复位、子模块例化和输出控制关系入手阅读代码。
正文整理了设计说明、关键结构和部分代码,便于快速了解工程实现方式。
运行环境
- 源码语言:Verilog
- 交付内容:HDL 源码、工程文件、设计说明和下载压缩包
设计思路
该工程可按自顶向下方式理解:先查看顶层模块端口定义,确认时钟、复位、输入输出接口,再顺着子模块例化关系分析控制路径和数据路径。
主要模块包括:multi_func_clock、clk_div、dig_segment、mode_ctrl、alarm_set、stopwatch、multi_func_clock_tb、beep_ctrl、key_debounce、time_cnt。调试时可先验证核心控制模块,再联调顶层工程。
模块结构
主要工程/源码文件如下:
- multi_func_clock2/multi_func_clock.v
- multi_func_clock2/clk_div.v
- multi_func_clock2/dig_segment.v
- multi_func_clock2/mode_ctrl.v
- multi_func_clock2/alarm_set.v
- multi_func_clock2/stopwatch.v
- multi_func_clock2/multi_func_clock_tb.v
- multi_func_clock2/beep_ctrl.v
- multi_func_clock2/key_debounce.v
- multi_func_clock2/time_cnt.v
演示视频
下方提供演示视频,可直接播放查看运行效果。
仿真图/仿真说明/设计文档图片
设计说明:
程序文件 程序编译 Testbench 仿真图 整体仿真图 按键消抖 分频模块 计时模块 闹钟设置模块 秒表模块 闹铃整点提示模块 显示模块
















部分代码
以下展示顶层模块 multi_func_clock 的部分代码,完整源码请下载压缩包查看。
module multi_func_clock#(
parameter DIV_1HZ = 32'd50000000,
parameter DIV_100HZ = 32'd500000,
parameter DEBOUNCE_CNT = 20'hfffff
)(
input clk_in,//50MHz
input key_0,//模式设置按键--4'd0:计时,4'd1:闹钟,4'd2:跑表
input key_1,//修改时,秒表启动
input key_2,//修改分,秒表暂停
input key_3,//修改秒,秒表复位,闹钟关闭
output beep_led,//核心板H1 ,低电平亮
output [3:0] led //led显示时间,低电平亮
);
wire [3:0] mode;//模式,4'd0:计时,4'd1:闹钟,4'd2:跑表
wire [7:0] hour;//时
wire [7:0] minute;//分
wire [7:0] second;//秒
wire [7:0] alarm_hour;//闹钟时
wire [7:0] alarm_minute;//闹钟分
wire [7:0] alarm_second;//闹钟秒
wire [7:0] stopwatch_Millisecond;//10毫秒
wire [7:0] stopwatch_second;//秒
wire [7:0] stopwatch_minute;//分
wire key_0_p;
wire key_1_p;
wire key_2_p;
wire key_3_p;
wire clk_1Hz;
wire clk_100Hz;
//分频模块
clk_div #(
.DIV_1HZ(DIV_1HZ),
.DIV_100HZ(DIV_100HZ)
) i_clk_div(
. clk_in(clk_in),
. clk_1Hz(clk_1Hz),
. clk_100Hz(clk_100Hz)
);
//消抖模块
key_debounce #(
.DEBOUNCE_CNT(DEBOUNCE_CNT)
) key_0_de(
. clk_in(clk_in),
. key_in(key_0),
. key_neg(key_0_p)
);
//消抖模块
key_debounce #(
.DEBOUNCE_CNT(DEBOUNCE_CNT)
) key_1_de(
. clk_in(clk_in),
. key_in(key_1),
. key_neg(key_1_p)
);
//消抖模块
key_debounce #(
.DEBOUNCE_CNT(DEBOUNCE_CNT)
) key_2_de(
. clk_in(clk_in),
. key_in(key_2),
. key_neg(key_2_p)
);
//消抖模块
key_debounce #(
.DEBOUNCE_CNT(DEBOUNCE_CNT)
) key_3_de(
. clk_in(clk_in),
. key_in(key_3),
. key_neg(key_3_p)
);
//模式控制模块
mode_ctrl i_mode_ctrl(
. clk_in(clk_in),
. set_mode_key(key_0_p),
. mode(mode)//当前模式,4'd0:计时,4'd1:闹钟,4'd2:跑表
);
//计时模块
time_cnt i_time_cnt(
. clk_in(clk_in),
. clk_1Hz(clk_1Hz),
. mode(mode),//当前模式,4'd0:计时,4'd1:闹钟,4'd2:跑表
. hour_key(key_1_p),//设置时
. minute_key(key_2_p),//设置分
. second_key(key_3_p),//设置秒
. hour_time(hour),//时
. minute_time(minute),//分
. second_time(second)//秒
);
//闹钟设置模块
alarm_set i_alarm_set(
. clk_in(clk_in),
. mode(mode),//当前模式,4'd0:计时,4'd1:闹钟,4'd2:跑表
. hour_key(key_1_p),//设置时
. minute_key(key_2_p),//设置分
. second_key(key_3_p),//设置秒
. alarm_hour(alarm_hour),//时
. alarm_minute(alarm_minute),//分
. alarm_second(alarm_second)//秒
);
//秒表模块
stopwatch i_stopwatch(
. clk_in(clk_in),
. clk_100Hz(clk_100Hz),//100Hz--对应10ms
. mode(mode),//当前模式,4'd0:计时,4'd1:闹钟,4'd2:跑表
. start_key(key_1_p),//启动
. stop_key(key_2_p),//暂停
. reset_key(key_3_p),//复位
. stopwatch_Millisecond(stopwatch_Millisecond),//10毫秒
. stopwatch_second(stopwatch_second),//秒
// ... 以下代码略,完整源码请下载压缩包查看
代码文件(付费下载)
📥
付费后此处显示完整工程压缩包下载链接。
1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 多功能数字时钟 Verilog ModelSim
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 多功能数字时钟 Verilog ModelSim