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

多功能数字时钟计算器系统的设计Verilog代码Quartus  Spirit_V4开发板

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

名称: 多功能数字时钟计算器系统的设计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;
else
state<=state_time;
state_set_hour:
if(confirm_key)//确认键按下,进入设置分钟状态
state<=state_set_minute;
else
state<=state_set_hour;
state_set_minute:
if(confirm_key)//确认键按下,进入设置秒状态
state<=state_set_second;
else
state<=state_set_minute;
state_set_second:
if(confirm_key)//确认键按下,返回正常计时状态

 

【来源:www.hdlcode.com

相关推荐