Verilog コードで有理数を使用する必要があります。リソースを探しましたが、この問題について何も見つかりませんでした。Verilog で有理数を定義するにはどうすればよいですか。
2 に答える
Verilog には、real
実数 (浮動小数点数) に使用されるデータ型があります。
real data;
initial data = 1.55;
HDL で有理数を実装するには、主に次の 2 つの方法があります。
1) 常に 2 の累乗である固定の分母が必要な場合は、通常の 2 の補数表現を持つ固定小数点数を使用できますが、インデックスが 0 未満のビットを持つため、a と同じように、a[3:0]
"0111"
になります0*2**3 + 1*2**2 + 1*2**1 + 1*2**0 = 7
。[1:-2]
"0111"
でしょう0*2**1 + 1*2**0 + 1*2**-1 + 1*2**-2 = 1.75
。通常の Verilog では、このような負のインデックスを使用できますが、操作を手動で行う場合は、シフトとスケーリングを処理する必要があります (たとえば、各操作を独自の関数またはモジュールに配置します)。SystemVerilog または VHDL を使用すると、これをデータ型で自動的に処理する固定小数点パッケージを作成 (または既存のものを使用) できます。
2) 任意の分母が必要な場合は、単純に 2 つの reg を使用して各値を表すことができます。1 つは分子、もう 1 つは分母です。ここでも、数学演算の実装を手動で処理する必要があります。繰り返しになりますが、SystemVerilog または VHDL を使用すると、この動作をデータ型にまとめることができます。
幸運を!