Main Content

総和処理

加算は、プロセッサが実行する最も一般的な算術演算です。n ビットの 2 つの数を加算すると、左端の数字からの桁上げによって、n + 1 の非零数を使用した結果が出る可能性が常にあります。

3 つの数値を合計するとします。これらの各数値は 8 ビット ワードで表され、それぞれに異なる 2 進小数点のみのスケーリングがあります。また、出力は 2 進小数点のみのスケーリングが 2-3 の 8 ビット ワードに制限されます。

入力値 19.875、5.4375、および 4.84375 の総和を次のモデルで示します。

合計は以下の手順に従います。

  1. バイアスが一致するため、Qa の初期値は重要ではありません。

    Qa=00000.000.

  2. 合計する最初の数値 (19.875) には、出力小数部の勾配と一致する小数部の勾配があります。さらに、2 進小数点とストレージ タイプが同一なので、変換は重要ではありません。

    Qb=10011.111,QTemp=Qb.

  3. 総和演算は次のように実行されます。

    Qa=Qa+QTemp=10011.111.

  4. 合計する 2 番目の数値 (5.4375) には、出力小数部の勾配と一致する小数部の勾配があるので、勾配の調整は不要です。ストレージ データ型も一致しますが、2 進小数点の違いにより、ビットと 2 進小数点の両方を右へ 1 桁シフトする必要があります。

    Qc=0101.0111,QTemp=convert(Qc)QTemp=00101.011.

    精度が 1 ビット低下し、結果の値は丸めモードによって決定された QTemp になります。この例では、無限大方向への丸めが使用されます。この場合、ビットと 2 進小数点が両方とも右へシフトするため、オーバーフローは起こり得ません。

  5. 総和演算は次のように実行されます。

    Qa=Qa+QTemp     10011.111=+00101.01111001.010=25.250.

    オーバーフローは発生しませんでしたが、この演算では起こり得ます。

  6. 合計する 3 番目の数値 (4.84375) には、出力小数部の勾配と一致する小数部の勾配があるので、勾配の調整は不要です。ストレージ データ型も一致しますが、2 進小数点の違いにより、ビットと 2 進小数点の両方を右へ 2 桁シフトする必要があります。

    Qd=100.11011,QTemp=convert(Qd)QTemp=00100.110.

    2 ビットの精度低下が発生し、結果の値は丸めモードによって決定された QTemp になります。この例では、無限大方向への丸めが使用されます。この場合、ビットと 2 進小数点が両方とも右へシフトするため、オーバーフローは起こり得ません。

  7. 総和演算は次のように実行されます。

    Qa=Qa+QTemp     11001.010=+00100.11011110.000=30.000.

    オーバーフローは発生しませんでしたが、この演算では起こり得ます。

以下に示すように、手順 7 の結果は理想的な合計とは異なります。

 10011.111   0101.0111=+100.1101111110.001=30.125.

加算と減算を実行するブロックには、AddGainDiscrete FIR Filter などがあります。