名称:多功能数字时钟计算器系统的设计Verilog代码Quartus Spirit_V4开发板(文末获取)
软件:Quartus II
语言:Verilog HDL
代码功能
本项目实现了一个高度集成的多功能数字系统,结合了数字时钟、计算器、闹钟、秒表和定时器五大功能。系统主要功能包括:
·多功能数字时钟:实时显示时分秒,支持时间设置和调整
·四则运算计算器:实现加减乘除运算,支持连续计算功能
·智能闹钟系统:可设置闹钟时间,具备闹钟提醒功能
·精确秒表功能:支持启动、暂停、复位操作,精度达到10毫秒
·倒计时定时器:实现可设置的定时功能,支持时分秒设置
·模式切换:通过按键在不同功能间无缝切换
·数码管显示:六位数码管动态显示各种模式下的数据
代码实现思路
系统架构设计
系统采用模块化分层设计,主要包含八大功能模块:
1.顶层控制模块:集成所有功能模块,实现模式切换和数据路由
2.计算器模块:实现四则运算功能,包含状态机和数字输入处理
3.时钟模块:实时时钟功能,支持时间设置和显示
4.闹钟模块:闹钟设置和提醒功能
5.秒表模块:高精度计时功能
6.定时器模块:倒计时功能
7.显示模块:六位数码管动态扫描显示
8.按键处理模块:按键消抖和状态检测
状态机设计
计算器模块采用六状态状态机实现完整的计算流程:
·输入第一个数→选择运算符→输入第二个数→确认计算→显示结果→连续计算
代码结构
模块层次结构
Digital_clock (顶层模块)
├── calculator (计算器模块)
│ ├── state_ctrl (状态控制)
│ └── num_in (数字输入)
├── jishi (时钟模块)
├── alarm_clock (闹钟模块)
├── stopwatch (秒表模块)
├── timing (定时器模块)
├── Bell (蜂鸣器控制)
├── set_mode (模式设置)
├── display (显示控制)
└── fenping (时钟分频)
模块功能描述
1.Digital_clock.v:顶层模块,集成所有功能模块
2.calculator.v:计算器核心模块,实现四则运算
3.state_ctrl.v:计算器状态机控制
4.num_in.v:数字输入处理,支持多位数字输入
5.jishi.v:实时时钟功能
6.alarm_clock.v:闹钟设置和控制
7.stopwatch.v:秒表计时功能
8.timing.v:倒计时定时器
9.display.v:六位数码管显示控制
10.fenping.v:时钟分频模块
显示系统设计
系统采用六位数码管动态扫描显示,根据不同模式显示相应数据:
·时钟模式:显示时分秒
·闹钟模式:显示闹钟设置时间
·秒表模式:显示分秒毫秒
·计算器模式:显示计算结果
本代码已在Spirit_V4开发板验证,Spirit_V4开发板如下,其他开发板可以修改管脚适配:
1.工程文件
2.程序文件
3.程序编译
4.管脚分配
5.RTL图
6.Testbench
7.仿真图
单模块仿真演示
计时模块
部分代码展示:
//设置闹钟模块module alarm_clock(input clk_50M,input [3:0] state_mode,//当前模式,4'd0:计时,4'd1:闹钟,4'd2:跑表input set_time_key,//设置时间input confirm_key,//确认input change_time_key,//设置时分秒output [7:0] alarm_hour_time,//时output [7:0] alarm_minute_time,//分output [7:0] alarm_second_time//秒);reg [7:0] hour=8'd21;//时reg [7:0] minute=8'd59;//分reg [7:0] second=8'd00;//秒parameter state_time=2'd0;//正常计时状态parameter state_set_hour=2'd1;//设置小时状态parameter state_set_minute=2'd2;//设置小时状态parameter state_set_second=2'd3;//设置秒状态reg [1:0] state=state_time;//默认正常计时状态always@(posedge clk_50M)if(state_mode==4'd1)//当前模式,4'd0:计时,4'd1:闹钟,4'd2:跑表case(state)state_time:if(set_time_key)//设置键按下,进入设置小时状态state<=state_set_hour;elsestate<=state_time;state_set_hour:if(confirm_key)//确认键按下,进入设置分钟状态state<=state_set_minute;elsestate<=state_set_hour;state_set_minute:if(confirm_key)//确认键按下,进入设置秒状态state<=state_set_second;elsestate<=state_set_minute;state_set_second:if(confirm_key)//确认键按下,返回正常计时状态
源代码
点击下方的公众号卡片获取