秒表计时数码管显示 FPGA 设计 Verilog Vivado
名称:秒表计时数码管显示 FPGA 设计 Verilog Vivado
软件:Vivado
语言:Verilog
功能介绍
本设计实现一个 FPGA 秒表/跑表计时系统,顶层模块为 stopwatch_top,输入为 50MHz 时钟和 3 个低电平有效按键,分别用于启动、暂停和复位控制。输出接口为 6 位数码管位选和 8 位数码管段选,可用于显示分钟、秒以及 10 毫秒计时信息。 系统通过分频模块产生 100Hz 计时时钟,对应 10ms 的计时分辨率。秒表控制模块根据按键状态完成计时启动、暂停保持和清零复位,显示模块负责把分钟、秒、10 毫秒数据转换为数码管扫描显示信号。 该工程适合用于 FPGA 数字逻辑课程设计、Verilog 时序逻辑练习、数码管动态扫描显示实验以及按键控制类小型综合项目。代码层次清晰,包含顶层连接、分频、秒表控制、显示驱动和 testbench,便于学习和二次修改。运行环境
开发软件:Vivado 设计语言:Verilog 顶层模块:stopwatch_top 主要源码:stopwatch_top.v、fenping.v、stopwatch.v、display.v 仿真文件:stopwatch_top_tb.v 工程文件:stopwatch_top.xpr设计思路
设计采用模块化结构,将秒表系统拆分为时钟分频、计时控制和数码管显示三个核心部分。顶层模块 stopwatch_top 只负责外部端口定义和内部模块互连,使工程结构更清晰,也方便单独查看各功能模块的逻辑。 时钟部分由 fenping 模块完成,输入 50MHz 有源晶振时钟,输出 100Hz 计时时钟。100Hz 的周期为 10ms,适合直接作为秒表的最小计时单位,因此后级可以按 10 毫秒、秒、分钟逐级累加,降低显示和计时换算的复杂度。 秒表控制部分由 stopwatch 模块实现,接收启动、暂停、复位三个低电平有效按键。启动后计时数据随 100Hz 时钟递增,暂停时保持当前时间,复位时将计时值清零。输出数据分为 stopwatch_Millisecond、stopwatch_second、stopwatch_minute 三组,分别对应 10 毫秒、秒和分钟显示内容。 显示部分由 display 模块完成,将计时结果转换为数码管段选和位选信号。通过动态扫描方式驱动 6 位数码管显示,使分钟、秒、10 毫秒信息能够在同一组数码管接口上显示。模块结构
模块结构如下: stopwatch_top:工程顶层模块,连接 50MHz 时钟、按键输入、数码管位选和段选输出,并例化分频、秒表控制、显示模块。 fenping:分频模块,将 50MHz 时钟分频得到 100Hz 时钟,用作 10ms 计时基准。 stopwatch:秒表控制模块,实现启动、暂停、复位以及分钟、秒、10 毫秒计数输出。 display:数码管显示模块,根据计时数据生成 bit_select 位选和 seg_select 段选信号。 stopwatch_top_tb:顶层仿真 testbench,用于对整体秒表逻辑进行仿真验证。演示视频
配套演示视频展示秒表工程的运行效果,可直观看到启动、暂停、复位控制以及数码管计时显示过程,便于下载前了解设计功能。仿真图/仿真说明/设计文档图片
设计文档内容包含工程文件、程序文件、程序编译、RTL 图、testbench、仿真图以及整体仿真图说明,并分别整理了分频模块、控制模块、显示模块等关键部分的说明图片,可用于理解工程结构和仿真验证流程。
















部分代码
以下展示顶层模块 stopwatch_top 的部分代码,完整源码请下载压缩包查看。
module stopwatch_top( input clk_50M,//50M 有源晶振电路 input key_1,//跑表启动,低电平有效 input key_2,//跑表暂停,低电平有效 input key_3,//跑表复位,低电平有效 output [5:0] bit_select,//数码管位选,低电平有效 output [7:0] seg_select//数码管段选,为低电平时,相应字段就点亮 ); wire [7:0] stopwatch_Millisecond;//10毫秒 wire [7:0] stopwatch_second;//秒 wire [7:0] stopwatch_minute;//分 wire clk_100Hz; //分频模块,产生100Hz用于秒表计时 fenping fenping_Hz( . clk_50M(clk_50M), . clk_100Hz(clk_100Hz)//100Hz--对应10ms ); //秒表控制模块 stopwatch i_stopwatch( . clk_50M(clk_50M), . clk_100Hz(clk_100Hz),//100Hz--对应10ms . start_key(key_1),//启动 . stop_key(key_2),//暂停 . reset_key(key_3),//复位 . stopwatch_Millisecond(stopwatch_Millisecond),//10毫秒 . stopwatch_second(stopwatch_second),//秒 . stopwatch_minute(stopwatch_minute)//分 ); //数码管显示模块 display i_display( . clk(clk_50M), . stopwatch_Millisecond(stopwatch_Millisecond),//10毫秒 . stopwatch_second(stopwatch_second),//秒 . stopwatch_minute(stopwatch_minute),//分 . bit_select(bit_select),//数码管位选 . seg_select(seg_select)//数码管段选 ); endmodule
代码文件(付费下载)
📥
付费后此处显示完整工程压缩包下载链接。
1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 秒表计时数码管显示 FPGA 设计 Verilog Vivado
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 秒表计时数码管显示 FPGA 设计 Verilog Vivado