向大家致意。
我正在用VHDL设计一个数字时钟,我应该在FPGA上合成。我正在级联S1,S2,M1,M2,H1和H2,其中(S1 =第二个1,M1 =分钟1,H1 =小时1等)。 其中一个要求是时钟在24HR显示和12HR显示格式之间切换。假设H1和H2由4位(即8位)表示,我该怎么做 总计显示当前小时。我是否需要连接HR1和HR2然后减去12然后再次连接它?请记住,X mod 12不是FPGA中实现的可综合操作。
非常感谢。
答案 0 :(得分:1)
基本上你用二进制编码的十进制(BCD)进行所有算术运算。所以只需建立一个BCD比较器/减法器:
if h1 = 1 and h2 > 2
subtract 1 off h1
subtract 2 off h2
if h2 wrapped
subtract 1 off h1
无需mod!
答案 1 :(得分:0)
如果您有备用资源,可以将H寄存器加倍。让H24-1和H24-2(你已经拥有)和H12-1和H12-2“mod12”寄存器旁边。两对都将一直计时,因此您可以在每个时钟周期准备好两种格式。不只是使用一些MUX来切换显示哪些。