当前位置:文档之家› VHDL 数字钟

VHDL 数字钟

糙地分频出一个 0.745Hz 的时钟作为秒时钟。而且实验发现,所用的开发板并不是很稳定,因此即使使用 1Hz 作为秒时钟也未必能产生理想的效果。我个人认为如果要合理利用 CPLD 芯片的资源,最好能够从 I/O 口引入一个频率比 50MHz 小得多的外部时钟,这样分频就不会占用太多的宏单元,虽然我也没这样做。
3
从上面的介绍中该数字钟的校时电路实际由两部分组成,即图中的“校时电路”和“校时闪烁电路”。
4 模块设计及仿真
数字钟的设计包括分频器、去抖动电路、校时电路、“时、分、秒”计数器、校时闪烁电路和译码显示 电路。设计时,我将每一个功能模块作为一个实体单独进行设计,最后再用 VHDL 的例化语句将各个模块进 行整合,生成顶层实体 ADigCLK。
4.1. 分频器 Distributer........................................................04 4.2. 去抖动电路 Debounce....................................................05 4.3 校时电路 RvsTime.........................................................08 4.4 时计数器 Counter24hour,分计数器 Counter60min,秒计数器 Counter60sec.......10 4.5 校时闪烁电路 FlashTime..................................................13 4.6 译码显示电路 Displayer....................................................15 5. 数字钟整体...................................................................16 6. 硬件测试...... ..............................................................20 7. 总结和体会、致谢.............................................................20 参考资料........................................................................21 附录............................................................................22
END IF; END PROCESS psec;
)THEN
4
pscan:PROCESS(div_cnt(14)) BEGIN
IF(div_cnt(14)'EVENT AND div_cnt(14) = '1')THEN scanclk<=NOT scanclk;
END IF; END PROCESS pscan;
该数字钟可以实现 2 个功能:计时功能和设置时间功能。
4.1 分频器 Distributer 在数字钟的设计中,采用了 EPM7128SLC84-15N 内部提供的 50MHz 全局时钟,将其分频率后产生一个接
近 1Hz 秒时钟 secclk,和一个 763Hz 左右的扫描时钟 scanclk。 值得说明的是,由于将 50MHz 精确地分频出 1Hz 将占去非常多的宏单元,因此我下面的程序只是粗
来控制是否时行校时,用一个自由按键来选择对小时或分钟进行校时,用一个自由按键来调整时间值。 MAX7128 CPLD 开发板原理图见附录 1。表 2-1 对该数字钟中用到的硬件资源进行列表说明:
硬件名称
程序中的标 识符
EPM7128SLC8 4-15N
-
全局复位按 键
key0in
拨码开关 DipSwi_in
2 软硬件资源分析
实验室提供了 Alter 公司的设计环境软件 Quartus II9.1 和 MAX7128 实验开发板。Quartus II 软件的
使用可以参考教材和 Internet 资源。MAX7128 CPLD 开发板是针对 CPLD 初、中级学习者设计的,帮助用 户降低学习成本和加快用户快速进入可编程逻辑器件设计开发领域,提供一个帮助用户快速开始可编程逻 辑器件学习之旅的硬件平台。该开发板提供了一片 EPM7128SLC84-15N 芯片,8 个拨码开关,8 个自由按键, 一个全局复位按键,8 个可动态扫描显示的数码管,12 个 LED 灯,一个蜂鸣器等硬件资源。在该数字钟设 计中,将用 6 个数吗管来显示时分秒(分别有十位和个位),用全局复位按键来复位时钟,用一个拨码开关
其源代码如下所示: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; USE IEEE.STD_LOGIC_ARITH.ALL;
ENTITY Distributer IS PORT(ori_clk:IN STD_LOGIC; --晶振时钟
EDA 技术及应用实验报告
题 目:基于 VHDL 的数字钟设计
学 校: 学科专业: 学 生: 学 号: 任课教师:
中南大学 生物医学工程
0405080704
完成日期: 2011 年 5 月 24 日
目录
1. 设计任务及要求...............................................................02 2. 软硬件资源分析...............................................................02 3. 设计方案及原理...............................................................03 4. 模块设计及仿真...............................................................04
“50MHz 时钟”和“分频器”产生整个系统的时基信号,它直接决定计时系统的精度。 进行校时和复位时,所有按钮的输入都要经过“去抖动电路”。 “秒计数器”采用六十进制计数器,每累计 60 秒向“分计数器”进位;“分计数器”采用六十进制计 数器,每累计 60 分向“时计数器”进位;“时计数器”采用二十四进制计数器,按照“24 翻 1”规律计数。 但秒进位并不直接输入给“分计数器”,分进位并不直接输入给“时计数器”,而是都先经过“校时电路”。 如果不进行校时,“校时电路”将秒进位直接输出给“分计数器”,将分进位直接输出给“时计数器”;如果 进行小时校时,“校时电路”将秒进位直接输出给“分计数器”,而将校时按键 keyin[1]的输入脉冲输出给 “时计数器”,从而修改小时数值;同理,如果进行分钟校时,“校时电路”将分进位直接输出给“时计数 器”,而将校时按键 keyin[1]的输入脉冲输出给“分计数器”,从而修改分钟数值。 任何情况下,“秒计数器”的输出直接送“译码显示电路”显示。非校时状态下,“时/分计数器”的输 出经由“校时闪烁电路”直接送“译码显示电路”显示。如果在校正小时,“分计数器”的输出以正常方式 送“译码显示电路”显示,而“时计数器”在经过“校时闪烁电路”后,其对应数码管交替点亮和熄灭, 这样使用者便可能很容易知道当前是在对小时校时;同理,如果当前正在校正分钟,则有相似的效果。
1
基于 VHDL 的数字钟设计
1 设计任务及要求:
设计任务 设计一台能显示时、分、秒的数字钟。具体要求如下:
(1) 由实验箱上的时钟信号经分频产生秒脉冲; (2) 计时计数器用 24 进制计时电路; (3) 能进行复位操作; (4) 可手动校时,能分别进行时、分的校正; 设计要求: (5) 采用 VHDL 语言描述系统功能,并在 QUARTUS II 工具软件中进行仿真,下载到 EDA 实验箱进行验证。 (6) 编写设计报告,要求包括方案选择、程序代码清单、调试过程、测试结果及心得体会。
END one;
Distributer 的管脚图如图 4-1 所示,仿真波形如图 4-2 所示。由于对 50MHz 进行仿真速度较慢,且不便于观察,故仿真进将 ori_clk 设为 1024Hz, 分频出秒时钟 secclk 为 1Hz,扫描时钟 scanclk 为 512Hz。后面在进行整个 系统仿真时也将进行同样的处理。具体做法是将程序中的数值 24 改为 8,将 14 改为 0。
PROCESS(ori_clk) BEGIN IF(ori_clk'EVENT AND ori_clk = '1')THEN div_cnt <= div_cnt + 1; END IF; END PROCESS;
psec:PROCESS(div_cnt(24)) BEGIN
IF(div_cnt(24)'EVENT AND div_cnt(24) = '1' secclk<=NOT secclk;
自由按键
keyin[0]
自由按键
keyin[1]
seg7out和 8位数码管 select_sigo
ut
表2-1 数字钟硬件资源
开发板上的 对应CPLD芯
标号
片管脚数
功能
-
-
-
RESET
P_01
实现时钟复 位至00: 00:00
J9/1
P_33
决定是否进 行校时
K1
P_44
选择小时或 分钟校时
K2
P_45
值增1
本数字钟只
参见有关动 态扫描的介
绍资料。
使用了Q1-Q6 数码管,但 仍设置输出 将另两个数
相关主题