在 VHDL 中将数字时钟的时间模式从 12HR 更改为 24HR
大家好。
我正在用 VHDL 设计一个数字时钟,我应该在 FPGA 上综合它。我级联 S1、S2、M1、M2、H1 和 H2,其中(S1 = 第 1 秒,M1 = 第 1 分钟,H1 = 第 1 小时等)。 要求之一是时钟在 24 小时显示格式和 12 小时显示格式之间切换。鉴于 H1 和 H2 分别由 4 位(即 8 位)表示,我该怎么做 总共显示当前小时。我是否需要连接 HR1 和 HR2,然后减去 12,然后再次取消连接?请记住,X mod 12 不是在 FPGA 中实现的可综合运算。
非常感谢。
Greetings everyone.
I am designing a digital clock in VHDL which I am supposed to synthesize on a FPGA . I am cascading S1,S2,M1,M2,H1 and H2 where (S1 = second 1, M1 = Minute 1, H1 = hour 1 etc.).
One of the requirements is for the clock to switch between 24HR display to a 12HR display format. How do I do it given that H1 and H2 are represented by 4 bits each i.e. 8 bits
in total to display the current hour. Will I need to concatenate HR1 and HR2 and then subtract 12 and then de-concatenate it again? keep in mind that X mod 12 is not a synthesizable operation for implementation in FPGA.
Thank you very much.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
基本上,您正在以二进制编码的十进制(BCD)进行所有算术运算。因此,只需为自己构建一个 BCD 比较器/减法器即可:
无需 mod!
Basically you are doing all your arithmetic in binary coded decimal (BCD). So just build yourself a BCD comparator/subtractor:
No mod required!
如果有空闲资源,可以将H寄存器加倍。让 H24-1 和 H24-2 (正如你已经拥有的那样)以及 H12-1 和 H12-2 “mod12”寄存器放在旁边。这两对都将始终被计时,因此您将在每个时钟周期准备好两种格式。不仅仅是使用一些 MUX 来切换显示其中的哪一个。
If you have spare resources, you can double the H registers. Let make H24-1 and H24-2 (as you already have) and H12-1 and H12-2 "mod12" registers beside. Both pairs will be clocked all the times, so you will have both format ready every clock cycle. Than just use some MUX to switch which of them are displayed.