秒表计时数码管显示 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、仿真图以及整体仿真图说明,并分别整理了分频模块、控制模块、显示模块等关键部分的说明图片,可用于理解工程结构和仿真验证流程。

秒表计时数码管显示 FPGA 设计 Verilog Vivado 设计文档图片 image17.png

秒表计时数码管显示 FPGA 设计 Verilog Vivado 设计文档图片 image16.png

秒表计时数码管显示 FPGA 设计 Verilog Vivado 设计文档图片 image15.png

秒表计时数码管显示 FPGA 设计 Verilog Vivado 设计文档图片 image14.png

秒表计时数码管显示 FPGA 设计 Verilog Vivado 设计文档图片 image13.png

秒表计时数码管显示 FPGA 设计 Verilog Vivado 设计文档图片 image12.png

秒表计时数码管显示 FPGA 设计 Verilog Vivado 设计文档图片 image11.png

秒表计时数码管显示 FPGA 设计 Verilog Vivado 设计文档图片 image1.png

秒表计时数码管显示 FPGA 设计 Verilog Vivado 设计文档图片 image4.png

秒表计时数码管显示 FPGA 设计 Verilog Vivado 设计文档图片 image5.png

秒表计时数码管显示 FPGA 设计 Verilog Vivado 设计文档图片 image7.png

秒表计时数码管显示 FPGA 设计 Verilog Vivado 设计文档图片 image8.png

秒表计时数码管显示 FPGA 设计 Verilog Vivado 设计文档图片 image10.png

秒表计时数码管显示 FPGA 设计 Verilog Vivado 设计文档图片 image9.png

秒表计时数码管显示 FPGA 设计 Verilog Vivado 设计文档图片 image6.png

秒表计时数码管显示 FPGA 设计 Verilog Vivado 设计文档图片 image3.png

秒表计时数码管显示 FPGA 设计 Verilog Vivado 设计文档图片 image2.png

部分代码

以下展示顶层模块 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

注册为本站会员,充值100得150,详情咨询客服

目前为止共有 *** 位优秀的会员加入! 立刻加入会员