1

大家好。

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

非常感谢。

4

2 回答 2

1

基本上,您正在以二进制编码的十进制 (BCD) 进行所有算术运算。因此,只需为自己构建一个 BCD 比较器/减法器:

if h1 = 1 and h2 > 2
  subtract 1 off h1
  subtract 2 off h2
  if h2 wrapped
     subtract 1 off h1

无需模组!

于 2009-12-10T15:55:28.390 回答
0

如果您有空闲资源,您可以将 H 寄存器加倍。让 H24-1 和 H24-2 (正如你已经拥有的)和 H12-1 和 H12-2 “mod12” 寄存器旁边。两对都将一直计时,因此您将在每个时钟周期都准备好两种格式。不仅仅是使用一些 MUX 来切换显示哪些。

于 2011-02-15T00:29:36.927 回答