0

そのため、合成のために Verilog で 64 ビット浮動小数点数を使用しています。すべて {-1,1} の領域にあります。今、私は2D配列のように機能するRAMを作成することでできると思うヒストグラムのようなものを作成しようとしています。しかし、丸めの問題に直面しています。

例えば、

値は 0.94394(FltPt) です。これをちょうどに変換したいのですが、

0.82394 = 8 および 0.8862 =9 (すべてのデータは 64 ビット flt pt にあります)

RAM上の特定のアドレスにアクセスできるようにします。

これを丸める最も理想的な方法は何でしょうか。別の乗数を使用するとオーバーヘッドが大きすぎます。ビットの一部を切り捨てることでできるトリックはありますか? それらを固定小数点に変換する必要がありますか?

4

1 に答える 1

0

私が考えることができる2つのオプション:最も簡単な方法は、境界が2のべき乗になるようにビンを変更することです。次に、入力の一部のビットを直接使用して、ヒストグラムに対処できます。どのビットを使用するかを知るには、浮動小数点形式を調べる必要があります。

もう 1 つの可能性は、一連の比較を行って、どのビンに配置するかを確認することです。L 両方の座標に対してこれを行う必要があります。

reg [4:0] ram_aadr;

always @* begin
  if(data < -.95)
    ram_addr = 5'd0;
  else if(data < -.85)
    ram_addr = 5'd1;
...
  else if(data < .95)
    ram_addr = 5'd19;
  else
    ram_addr = 5'd20;
end
于 2013-11-09T12:06:06.587 に答える