尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

数字时钟 FPGA 设计 VHDL Quartus(2)

数字时钟 FPGA 设计 VHDL Quartus(2) 名称数字时钟 FPGA 设计 VHDL Quartus2软件Quartus语言VHDL功能介绍本设计实现一个基于 FPGA 的数字时钟系统采用 VHDL 编写工程环境为 Quartus。系统支持正常计时显示、时间设置、闹钟时间设置、闹钟提示输出以及 1Hz 指示 LED 等功能适合用于 FPGA 数字系统课程设计、时序逻辑综合实验和数码管显示控制学习。 数字钟通过六位数码管显示秒、分、时信息HEX0 到 HEX5 分别承担秒个位、秒十位、分钟个位、分钟十位、小时个位、小时十位显示。外部开关和按键用于切换计时/设置模式、进入闹钟设置状态并对小时和分钟进行调整功能划分清晰便于理解状态控制与计数逻辑之间的配合。 工程包含完整 Quartus 工程文件、VHDL 源码、仿真相关文件和设计说明图片内容可用于编译、RTL 结构查看、波形仿真以及后续硬件引脚约束参考。对于需要学习 VHDL 模块化设计、分频计时、按键控制、闹钟比较和数码管译码显示的用户该设计具有较好的参考价值。运行环境开发语言VHDL 开发软件Quartus 工程类型FPGA 数字钟设计与仿真工程 顶层模块Digital_clock 主要文件包括 Digital_clock.vhd、fenping.vhd、set_mode.vhd、jishi.vhd、display.vhd、Bell.vhd、alarm_clock.vhd、div_10.vhd 以及 Quartus 工程文件 Digital_clock.qpf、Digital_clock.qsf。设计思路设计以 Digital_clock 作为顶层模块围绕“计时、设置、闹钟、显示”几个功能块展开。50MHz 输入时钟先经过分频处理生成适合秒计数和显示控制使用的节拍信号再由计时模块完成秒、分、时的递增逻辑形成完整的数字时钟基础功能。 模式控制部分通过 alarm_SW、MODE_SW 以及小时/分钟调整按键实现不同工作状态切换。正常计时时数码管显示当前时间进入时间设置或闹钟设置状态后按键用于修改小时、分钟等参数led_mode 输出当前模式状态便于观察系统处于计时、设置时间或闹钟相关状态。 闹钟功能单独划分为 alarm_clock 与 Bell 等相关模块计时时间与设定闹钟时间匹配时产生响铃/提示输出。显示部分将计数结果转换为六位数码管段码分别对应秒个位、秒十位、分个位、分十位、时个位、时十位形成清晰的 HH:MM:SS 数字钟显示结构。模块结构主要模块包括 fenping分频模块用于从 50MHz 时钟产生计时所需节拍。 set_mode模式设置模块用于处理计时模式、时间设置模式等状态控制。 jishi计时模块完成秒、分、时计数逻辑。 alarm_clock闹钟模块用于闹钟时间相关控制与比较。 Bell响铃提示模块用于产生闹钟提示输出。 display显示模块用于将时间数据转换为数码管显示段码。 BCD/div_10辅助转换或分解模块用于配合数码管显示数据处理。 Digital_clock顶层模块连接时钟、开关、按键、LED、闹钟输出和六位数码管接口。开发板验证工程包含 Quartus 管脚约束/分配文件可用于对应硬件工程的引脚绑定与综合实现参考。顶层端口覆盖 50MHz 时钟、模式切换开关、闹钟设置开关、小时/分钟调整按键、1Hz LED、闹钟输出 LED 以及 HEX0 到 HEX5 六位数码管显示接口便于将数字钟功能映射到开发板外设资源。演示视频配套演示视频展示数字钟工程的运行效果可直观看到计时显示、模式切换以及相关输出状态适合在下载前了解工程功能表现。演示视频请关注公众号后获取对应资料查看。仿真图/仿真说明/设计文档图片设计文档图片包含工程文件、程序文件、程序编译、RTL 图以及多组仿真图说明覆盖整体仿真图、分频模块、设置模式模块、计时模块、闹钟模块、响铃模块和显示模块。仿真文件包含整体波形与各功能模块波形可用于观察分频、计时、模式切换、闹钟判断和数码管显示输出等关键逻辑。部分代码以下展示顶层模块Digital_clock的部分代码完整代码可关注下方公众号卡片获取。ENTITY Digital_clock IS PORT ( clk_50M : 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;--闹钟led led_mode : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);--led显示当前模式 HEX0 : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--数码管-低亮--秒钟个位 HEX1 : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); --数码管-低亮--秒钟十位 HEX2 : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--数码管-低亮--分钟个位 HEX3 : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); --数码管-低亮--分钟十位 HEX4 : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--数码管-低亮--小时个位 HEX5 : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)--数码管-低亮--小时十位 ); END Digital_clock;代码获取下方公众号“FPGA代码设计学习资料”
返回列表