数字时钟 FPGA 设计 Verilog Quartus
名称:数字时钟 FPGA 设计 Verilog Quartus
软件:Quartus
语言:Verilog
功能介绍
本工程实现一个基于Verilog的数字时钟,可完成秒、分、时的连续计数,并以数码管段码形式输出小时和分钟。设计采用60进制秒计数、60进制分钟计数和24进制小时计数的级联结构,计数满值时自动向高位时间单位产生进位,形成标准的24小时计时流程。 顶层提供小时校时、分钟十位校时和分钟个位校时控制接口,可在计时过程中对显示时间进行调整。秒信号同时输出到LED端口,可用于观察秒级时钟节拍。小时和分钟分别拆分为十位、个位后送入显示模块,输出四组8位数码管段码信号。 工程适合作为Verilog多进制计数器、进位级联、按键校时和数码管显示译码的综合练习参考。代码按功能拆分为顶层控制、60进制计数、24进制计数、辅助计数与显示模块,便于分别阅读、仿真和扩展。运行环境
硬件描述语言:Verilog。 开发软件:Quartus。工程包含Quartus工程配置、编译结果和仿真相关文件;同时配有ModelSim RTL仿真脚本、波形配置及测试文件,可用于查看时钟计数与显示输出过程。设计思路
本设计以数字时钟的计时流程为主线,将秒、分、时划分为相互级联的计数单元。秒计数达到60后产生进位脉冲驱动分钟计数,分钟计数达到60后继续向小时计数进位,小时部分按24小时制循环,实现完整的时分秒计时逻辑。 顶层将秒级时钟直接连接到秒指示输出,同时集中管理小时校时、分钟十位校时和分钟个位校时输入。分钟计数器接收两个独立校时按键,小时计数器接收小时校时按键,使计时与人工校时逻辑在同一层次清晰衔接。 显示部分将小时和分钟的4位BCD计数值转换为8位数码管段码输出。计数逻辑、进位逻辑与显示译码相互独立,便于理解多进制计数器级联、数字时钟状态组织及数码管驱动的实现方法。模块结构
顶层模块top:连接秒、分、时计数器与数码管显示模块,处理校时按键、进位传递和外部输出。 counter_60:完成秒或分钟的60进制计数,输出十位、个位BCD计数值,并在计满时输出进位信号。 counter_24:完成小时24进制计数,输出小时十位和个位BCD计数值,支持小时校时控制。 counter_6、counter_10:提供十进制和六进制计数的基础功能,用于构建多进制计数逻辑。 dispaly:接收小时、分钟的BCD计数值,生成对应的数码管段码输出。演示视频
提供时钟设计仿真演示视频,可结合计数变化和数码管显示过程查看工程运行效果。仿真图/仿真说明/设计文档图片
设计文档覆盖工程文件、程序文件、编译过程、RTL电路结构、仿真设置和仿真图等内容,可用于了解工程层级关系及仿真配置。工程保留Quartus波形文件和ModelSim仿真环境,便于复现实时时钟计数、进位传递及小时分钟显示逻辑。














部分代码
以下展示顶层模块 top 的部分代码,完整源码请下载压缩包查看。
module top( input clk, input set_key,//校时-小时 input set6_key,//校时十位-分钟 input set10_key,//校时个位-分钟 output second_led,//秒led灯 output [7:0] HEX_ten_minute,//计数值十位 output [7:0] HEX_one_minute,//计数值个位 output [7:0] HEX_ten_hour,//计数值十位 output [7:0] HEX_one_hour//计数值个位 ); wire cout_second; wire cout_minute; wire [3:0] cnt_ten_second;//计数值十位 wire [3:0] cnt_one_second;//计数值个位 wire [3:0] cnt_ten_minute;//计数值十位 wire [3:0] cnt_one_minute;//计数值个位 wire [3:0] cnt_ten_hour;//计数值十位 wire [3:0] cnt_one_hour;//计数值个位 assign second_led=clk; //60进制计数器 counter_60 i_second( . clk(clk), . set6_key(1'd0),//校时十位 . set10_key(1'd0),//校时个位 . cnt_ten(cnt_ten_second),//计数值十位 . cnt_one(cnt_one_second),//计数值个位 . cout(cout_second)//满60进位 ); //60进制计数器 counter_60 i_minute( . clk(cout_second), . set6_key(set6_key),//校时十位 . set10_key(set10_key),//校时个位 . cnt_ten(cnt_ten_minute),//计数值十位 . cnt_one(cnt_one_minute),//计数值个位 . cout(cout_minute)//满60进位 ); //24进制计数器 counter_24 i_hour( . clk(cout_minute), . set_key(set_key),//校时 . cnt_ten(cnt_ten_hour),//计数值十位 . cnt_one(cnt_one_hour)//计数值个位 ); dispaly i_dispaly( . clk(clk), . cnt_ten_minute(cnt_ten_minute),//计数值十位 . cnt_one_minute(cnt_one_minute),//计数值个位 . cnt_ten_hour(cnt_ten_hour),//计数值十位 . cnt_one_hour(cnt_one_hour),//计数值个位 //数码管输出 . HEX_ten_minute(HEX_ten_minute),//计数值十位 . HEX_one_minute(HEX_one_minute),//计数值个位 . HEX_ten_hour(HEX_ten_hour),//计数值十位 . HEX_one_hour(HEX_one_hour)//计数值个位 ); endmodule
代码文件(付费下载)
📥
付费后此处显示完整工程压缩包下载链接。
1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 数字时钟 FPGA 设计 Verilog Quartus
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 数字时钟 FPGA 设计 Verilog Quartus