• 正文
  • 相关推荐
申请入驻 产业图谱

高精度秒表倒计时器系统的设计Verilog代码Quartus  Spirit_V4开发板

2小时前
37
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

名称: 高精度秒表倒计时器系统的设计Verilog代码Quartus  Spirit_V4开发板

软件: Quartus II

语言: Verilog

代码功能

本项目实现了一个高精度的秒表和倒计时器系统,具备两种工作模式和精确的时间控制功能。系统主要功能包括:

·高精度秒表功能:实现启动、暂停、复位操作,精度达到10毫秒

·倒计时器功能:可设置倒计时时间,支持分钟、秒钟、毫秒设置

·双模式切换:通过模式按键在秒表和倒计时器之间切换

·实时显示:六位数码管动态显示时间数据,支持小数点显示

·精确计时:基于100Hz时钟实现10毫秒级精度计时

·智能控制:按键消抖处理,确保操作稳定性

·状态指示:LED指示灯显示当前工作模式

代码实现思路

系统架构设计

系统采用模块化设计,主要包含五个核心功能模块:

1.顶层控制模块:集成所有功能模块,实现模式切换和数据路由

2.秒表模块:实现正计时功能,支持启动、暂停、复位操作

3.倒计时模块:实现倒计时功能,支持时间设置和倒计时控制

4.显示模块:六位数码管动态扫描显示,支持小数点显示

5.时钟分频模块:将50MHz时钟分频为100Hz工作时钟

状态机设计

秒表和倒计时模块均采用四状态状态机实现完整的控制流程:

·空闲状态:系统初始化,等待用户操作

·计时状态:正在计时或倒计时

·暂停状态:计时暂停,保持当前时间

·复位状态:时间清零,准备重新开始

代码结构

模块层次结构

Digital_clock (顶层模块)
├── stopwatch (秒表模块)
├── countdown (倒计时模块)
├── display (显示控制模块)
├── set_mode (模式设置模块)
└── fenping (时钟分频模块)

模块功能描述

1.Digital_clock.v:顶层模块,集成所有功能模块

2.stopwatch.v:秒表功能模块,实现正计时

3.countdown.v:倒计时功能模块,支持时间设置

4.display.v:显示控制,支持六位数码管动态扫描

5.set_mode.v:模式切换控制,LED状态指示

6.fenping.v:时钟分频,50MHz→100Hz

显示系统设计

系统采用六位数码管动态扫描显示,显示格式为:

·秒表模式:分 秒.毫秒(如:12 34.56)

·倒计时模式:分 秒.毫秒(如:05 30.00)

其中秒和毫秒之间的小数点通过特殊段选码实现,提高显示可读性。

本代码已在Spirit_V4开发板验证,Spirit_V4开发板如下,其他开发板可以修改管脚适配:

1.工程文件

2.程序文件

3.程序编译

4.RTL图

5.管脚分配

6.Testbench

7.仿真图

分频模块

倒计时模块

正计时模块

显示模块

按键模块

模块控制模块

部分代码展示:

module Digital_clock(
input clk_50M,
input start_stop_key,//跑表启动,暂停
input reset_key,//跑表复位
input mode_key,//模式按键
input set_minute_key,//设置时间
input set_second_key,//确认
input set_msecond_key,//设置时分秒
output [1:0] led_mode,//led显示当前模式
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 [7:0] countdown_hour_time;//时
wire [7:0] countdown_minute_time;//分
wire [7:0] countdown_second_time;//秒
wire start_stop_key_negedge;
wire reset_key_negedge;
wire mode_key_negedge;
wire set_minute_key_negedge;
wire set_second_key_negedge;
wire set_msecond_key_negedge;
wire [1:0] state_mode;//当前模式,4'd0:正计时,4'd1:倒计时
wire clk_100Hz;
//分频模块
fenping fenping_Hz(
. clk_50M(clk_50M),
. clk_100Hz(clk_100Hz)//分频到100Hz
);

 

【来源:www.hdlcode.com

相关推荐