オーバーフローおよびアンダーフロー ロジック

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

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

ここに記載するオーバーフロー/アンダーフローの説明は、1 つの DSP58 に実装されたシーケンシャル アキュムレータ (MACC または加算器/アキュムレータ) に当てはまります。アキュムレータには 1 ビット以上のガード ビットが必要です。パターン検出器がマスク 0011111 …1 (デフォルト設定) でパターン = 00000…0 を検出するように設定されている場合、DSP58 は 00111 … 1 を超えるオーバーフロー、または 11000… 0 を下回るアンダーフローに対してフラグを立てます。USE_PATTERN_DETECT 属性を PATDET に設定すると、パターン検出ロジックの使用が有効になります。このオーバーフロー/アンダーフローの実装は冗長符号ビットを使用し、出力ビット幅を 57 に削減します。

図 1. パターン検出のオーバーフロー/アンダーフロー ロジック

マスク値を 0000111 …1 など別の値に変更すると、オーバーフローが検出されるビット値 P[N] を変更できます。このロジックは、2N –1 の正の値への飽和および 2 の補数表現での 2N の負の値への飽和をサポートします (N はマスク フィールド内の値 1 の桁数)。

N = 2 の場合、オーバーフロー/アンダーフロー条件を確認するには、次の例を使用します。

  • マスクが 0...11 に設定されている。
  • (N) LSB ビットは、比較には考慮されない。
  • N = 2 の場合、合法的な値 (パターン) は、22–1 ~ –22 、すなわち 3 ~ –4。

次の図に、オーバーフローとアンダーフローの例を示します。オーバーフロー/アンダーフローの原因となった P 出力が生成されると、その同じサイクルでパターン検出ロジックはオーバーフロー/アンダーフロー信号を 1 クロック サイクルだけアサートします。

図 2. パターン検出のオーバーフロー条件
図 3. パターン検出のアンダーフロー条件
  • P == pattern または mask の場合、PATTERNDETECT は 1
  • P == patternb または mask の場合、PATTERNBDETECT は 1

オーバーフローは、加算によって加算器/減算器/論理ユニットの出力値が 3 を超えると発生します。最終値 0..0011 に 1 を加算すると 0..0100 となり、これにより PATTERNDETECT 出力は 0 になります。PATTERNDETECT 出力が 1 から 0 になると、オーバーフローがアサートされます。

アンダーフローは、減算によって値が –4 未満になると発生します。1..1100 から 1 を減算すると 1..1011 (–5) となり、これにより PATTERNBDETECT 出力は 0 になります。PATTERNBDETECT 出力が 1 から 0 になると、アンダーフローがアサートされます。