用VHDL将数字时钟的时间模式从12HR更改为24HR

时间:2009-12-10 12:27:43

标签: types concatenation vhdl

向大家致意。

我正在用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中实现的可综合操作。

非常感谢。

2 个答案:

答案 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来切换显示哪些。