対称丸め処理

Versal ACAP DSP エンジン アーキテクチャ マニュアル (AM004)

Document ID
AM004
Release Date
2022-09-11
Revision
1.2.1 日本語

対称丸めは、数値が誤った方向へ偏るのを防ぎ、より好ましい結果が得られる量子化方法です。たとえば、無限大への対称丸めでは、中間値 2.5 は 3.0 へ、–2.5 は –3.0 へ丸めます。

小数点の位置は、DSP58 の C ポートを使用して示します。C ポート バスの連続する 1 の数に 1 を足したものが、元の数値の小数位を表します。たとえば小数位が 4 の場合、C = 00 … 0111 です。RND は静的丸めにのみ使用しますが、C は静的丸めと動的丸めの両方に使用できます。対称丸めの方向を無限大とするか 0 とするかは、符号ビットによって異なります。無限大への丸めでは、負の中間値と正の中間値はいずれも 0 から離れた方向へ丸めが実行されます。たとえば 2.5 は 3 へ、–2.5 は –3.0 へ丸めます。CARRYINSEL で内部信号を選択すると、CARRYIN とプログラマブル ロジックを使用せずに符号ビットの補数を実装できます。0 への丸めでは、正と負の中間値はいずれも 0 に近い方向へ丸めが実行されます。たとえば 2.5 は 2 へ、–2.5 は –3 へ丸めます。次の表に、対称丸めの例を示します。

表 1. 0 への丸め (小数点位置 = 4)
乗算器出力 C 符号ビット 出力 = 乗算器出力 + C + 符号ビット
0010.1000 (2.5) 0000.0111 0 0010.1111 (切り捨て後、2)
1101.1000 (-2.5) 0000.0111 1 1110.0000 (切り捨て後、-2)
0011.1000 (3.5) 0000.0111 0 0011.1111 (切り捨て後、3)
表 2. 無限大への丸め (小数点位置 = 4)
乗算器出力 C 符号ビットの補数 出力 = 乗算器出力 + C + 符号ビットの補数
0010.1000 (2.5) 0000.0111 1 0011.1111 (切り捨て後、3)
1101.1000 (-2.5) 0000.0111 0 1101.1111 (切り捨て後、-3)
0011.1000 (3.5) 0000.0111 1 0100.0000 (切り捨て後、4)