简易数字钟设计
AI summary
简易数字钟设计利用ZX-1板卡实现,具备时、分、秒的逻辑显示和复位功能。设计过程包括逻辑控制分析和两种设计架构(大方向~小方向和小方向~大方向)。测试结果显示设计有效,后续练习中增加了启停功能,需处理按键消抖和边沿检测。
Last edited time
Sep 24, 2024 02:56 PM
Last edited by
Tags
Digital Clock Design
Logic Control
Timing Functionality
一:设计需求
利用ZX-1板卡完成简易数字钟设计:正常情况下能够显示时,分,秒逻辑(秒小于59时,每来一秒,秒加1;当秒等于59时,再来一秒,分钟加1,秒清零;当分钟和秒都等于59时,再来1秒,小时加1,分钟和秒清零;当小时小于23时,每到1小时,小时加1,直到小时等于23时,分钟和秒都等于59时,再来1秒,小时,分钟和秒都清零);采用板卡上复位按键对初始时间进行调整。
- 逻辑控制部分
- 二进制转BCD
- 数码管显示
- Modelsim测试功能正确
- 下板验证(板级调试:SignalTap II)
二:设计过程
- 设计架构(第一种方式:大方向~小方向)
- 逻辑控制分析
- 大方向~小方向
数字钟逻辑控制:可以从不同出发点考虑逻辑性问题。
大方向:一天中最后一刻 小方向:一天中的第一秒
23:59:59 --------------> 00:00:00
说明:该方式一般不太容易考虑,但是实现起来代码简短。
23:59:59----->XX:59:59----->XX:XX:59----->XX:XX:XX
在复位时,设定当前时刻(XX:XX:XX),首先考虑是否是一天中最后一刻(23:59:59),如果是呢,再来1秒,当前显示(00:00:00),如果不是最后一刻,再次考虑是否为(XX:59:59),如果是呢,再来1秒,分钟和秒清零,小时加1,当前显示(XX+1:00:00);如果不是XX:59:59,再次考虑是否为XX:XX:59,如果是呢,再来1秒,小时不变,分钟加1,秒清零,当前显示(XX:XX+1:00);最后需要考虑秒在0~59之间动作,如果秒在0~59之间,再来1秒,小时不变,分钟不变,秒加1即可,当前显示(XX:XX:XX+1)。
- 设计架构(第二种方式:小方向~大方向)
- 小方向~大方向
- 呼吸灯为例
小方向:一天中的第一秒 大方向:一天中最后一刻
00:00:00 --------------> 23:59:59
说明:该方式一般比较容易考虑,但是实现起来代码相对长一点。
XX:XX:XX-----> XX:XX:59------> XX:59:59----->23:59:59
在复位时,设定当前时刻(XX:XX:XX),首先考虑是否为1秒,如果是呢,再来1秒,秒加1,分钟不变,小时不变,当前显示(XX:XX:XX+1),直到秒到了最大值(59);再次考虑分钟逻辑,如果秒等于59时,再来1秒,秒清零,分钟加1,小时不变,当前显示(XX:XX+1:00),直到分钟到了最大值(59);在显示结果为XX:59:59之前,秒和分钟都会满足秒到了59,再来1秒,分钟加1,秒清零情况,直到显示(XX:59:59);最后考虑小时的逻辑,当前显示结果XX:59:59时,再来1秒,此时分钟和秒清零,小时加1,显示结果(XX+1:00:00);在显示23:59:59之前,秒和分钟都会满足秒和分钟都到了59时,再来1秒,小时加1,分钟和秒清零的情况;直到显示23:59:59时,再来1秒,小时,分钟,秒都清零,也就意味着一天结束了。
在计数时产生1s(秒最小单位)时,设置3个计数器(分别计数秒/分钟/小时),可以将呼吸灯中设置的参数(100/1000/1000:23/59/59);对应小时/分钟/秒逻辑,输出24位数据时通过小时/分钟/秒拼接即可。
三:测试结果
- 大方向~小方向
- 下板验证结果
- 小方向~大方向
- 下板验证结果
四:练习
- 完成上课内容
- 计时器/电子跑表,具有启动和暂停功能。
练习2分享:在简易数字钟基础之上,增加启停功能(按键控制)。
在整体设计架构中,增加启停按键(需要按键处理:按键消抖和边沿检测),控制时在秒控制逻辑模块,设置当前启停功能。
启停功能测试结果:
Loading...