1

皆さん、こんにちは。

FPGA で合成することになっている VHDL でデジタル クロックを設計しています。S1、S2、M1、M2、H1、および H2 をカスケードしています (S1 = 秒 1、M1 = 分 1、H1 = 時間 1 など)。要件の 1 つは、時計が 24 時間表示から 12 時間表示形式に切り替わることです。H1 と H2 がそれぞれ 4 ビット、つまり現在の時間を表示するために合計 8 ビットで表されるとすれば、どうすればよいでしょうか。HR1 と HR2 を連結してから 12 を引いてから、再度連結を解除する必要がありますか? X mod 12 は、FPGA に実装するための合成可能な操作ではないことに注意してください。

どうもありがとうございました。

4

2 に答える 2

1

基本的に、2 進化 10 進数 (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 レジスタを 2 倍にすることができます。H24-1 と H24-2 (既にあるように) と、H12-1 と H12-2 の "mod12" レジスタを横に作成します。両方のペアは常にクロックされるため、クロック サイクルごとに両方のフォーマットを準備できます。いくつかの MUX を使用して、表示するものを切り替えるだけではありません。

于 2011-02-15T00:29:36.927 に答える