数字闹钟 FPGA 设计 VHDL Quartus

名称:数字闹钟 FPGA 设计 VHDL Quartus

软件:Quartus

语言:VHDL

功能介绍

本设计实现一套基于 FPGA 的数字闹钟,采用 VHDL 编写,并以多位数码管作为主要显示终端。系统能够进行正常时间计时,通过 8 位数码管输出位选和段选信号显示当前时间,同时提供 1 Hz LED 指示输出,便于直观观察秒级节拍工作状态。 时钟设置与闹钟设置均通过开关和按键完成。MODE_SW 用于在正常计时和时间设置状态之间切换,AH_key_in、AM_key_in 分别用于调整小时和分钟;alarm_SW 用于切换普通计时显示与闹钟时间设置显示。按键为低电平有效,适合连接常见独立按键或开发板按键资源。 当计时值与闹钟设定值满足触发条件时,系统输出蜂鸣器控制信号 bell_out 和闹钟 LED 信号 bell_LED,实现声光提示。工程采用分模块结构,涵盖分频、按键消抖、时间计数、设置控制、数码管显示、闹钟比较及蜂鸣器控制,适合用于学习 VHDL 时序设计、数码管动态扫描和 FPGA 综合工程组织。

运行环境

硬件描述语言:VHDL 开发软件:Quartus 工程顶层:Digital_clock 工程包含 Quartus 工程配置、管脚约束文件、综合与编译输出文件,以及面向 ModelSim 的仿真相关文件,可用于工程打开、编译和仿真参考。

设计思路

设计以时钟计时、按键设置、数码管动态显示和闹钟提示为主线。输入时钟先经分频模块生成适合计时与显示扫描使用的节拍信号,计时模块完成小时、分钟等时间数据的递进与进位处理;显示模块将当前时间转换为数码管段码和位选信号,实现多位数码管的动态显示。 用户交互部分采用模式开关和独立的小时、分钟调整按键。MODE_SW 用于在正常计时与时间设置之间切换,alarm_SW 用于切换普通时间显示和闹钟时间设置;按键输入经过 key_jitter 模块处理,以减小机械按键抖动对设置操作的影响。set_mode 模块负责组织设置状态,jishi 模块负责时间计数,模块职责清晰,便于替换计时范围或扩展星期、秒表等功能。 闹钟功能由 alarm_clock 与 Bell 模块配合实现。当当前计时时间满足设定条件时,顶层输出 bell_out 和 bell_LED,可直接连接蜂鸣器及指示灯。顶层 Digital_clock 集中完成各功能模块连接,并将 1 Hz 指示、模式指示和数码管显示接口引出,适合作为 FPGA 数字钟、课程设计或按键显示控制项目的参考实现。

模块结构

顶层模块为 Digital_clock,负责连接各功能单元并输出时钟、按键、LED、蜂鸣器和数码管接口。 fenping:对输入时钟进行分频,生成计时与显示控制所需节拍。 jishi:完成时间计数和进位处理。 set_mode:管理正常计时、时间设置及闹钟设置相关状态。 key_jitter:对小时、分钟调整按键进行消抖处理。 display:将时间数据编码为数码管段选和位选输出。 alarm_clock:处理闹钟时间设置及触发判断。 Bell:根据闹钟触发状态产生蜂鸣器及闹钟指示控制。

开发板验证

工程已配置 Quartus 管脚约束文件(.qsf),顶层时钟、复位、模式设置、时分调整、蜂鸣器、状态 LED 以及 8 位数码管位选/段选接口均已纳入引脚分配,便于结合目标开发板进行下载验证与二次适配。

仿真图/仿真说明/设计文档图片

工程包含 Digital_clock_vlg_tst VHDL 测试文件及 ModelSim 相关仿真文件,可用于观察顶层时钟、复位、模式切换、按键调整、数码管输出和闹钟输出等接口时序,并作为修改功能后的回归仿真参考。

部分代码

以下展示顶层模块 Digital_clock 的部分代码,完整源码请下载压缩包查看。

ENTITY Digital_clock IS
   PORT (
      clk_in    : IN STD_LOGIC;
      reset     : IN STD_LOGIC;
      alarm_SW   : IN STD_LOGIC;--SW0-闹钟时间设置键,0--显示正常计时;1--显示设置闹钟时间
      MODE_SW    : IN STD_LOGIC;--SW1-MODE 模式设置按键--0:计时,1:设置时间
      
      AH_key_in  : IN STD_LOGIC;--AH 修改小时--按下低电平
      AM_key_in  : IN STD_LOGIC;--AM 修改分钟--按下低电平
      
      led_1Hz    : OUT STD_LOGIC;--1S--led
      bell_out   : OUT STD_LOGIC;--闹钟蜂鸣器
		bell_LED  : OUT STD_LOGIC;--闹钟led
      led_mode   : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);--led显示当前模式
		
      bit_select  : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--数码管位选
      seg_select  : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)--数码管段选	
   );
END Digital_clock;

代码文件(付费下载)

📥 付费后此处显示完整工程压缩包下载链接。
1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 数字闹钟 FPGA 设计 VHDL Quartus

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

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