オーバーフロー/アンダーフロー/飽和

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

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

パターン検出器を使用すると、カウント値に達したときに収束丸めとカウンター自動リセットを DSP58 で実行できます。また、アキュムレータのオーバーフロー、アンダーフロー、および飽和もサポートされます。ここに記載するオーバーフロー/アンダーフローの説明は、1 つの DSP58 に実装されたシーケンシャル アキュムレータ (MACC または加算器/アキュムレータ) に当てはまります。アキュムレータには 1 ビット以上のガード ビットが必要です。

DSP58 の専用のオーバーフローおよびアンダーフロー出力は、パターン検出器を使用して、DSP58 内の演算が P[N] ビット (N = 0 ~ 56) を超えてオーバーフローまたはアンダーフローしたかを判断します。パターン検出器が 58 ビットのマスク 0011111 …1 (デフォルト設定) を使用して 58 ビットのパターン 00000 …0 を検出するように設定されている場合、DSP58 は 00111 …1 を超えるとオーバーフローし、11000…0 を下回るとアンダーフローします。つまり、DSP58 は 57 番目のビット P[56] を超えるとオーバーフローを検出します。USE_PATTERN_DETECT 属性を PATDET に設定すると、パターン ロジックの使用が有効になります。このオーバーフロー/アンダーフローの実装は冗長符号ビットを使用し、出力ビット幅を 57 に削減します。

オーバーフローおよびアンダーフロー フラグは、1 サイクル間だけ High となります。オーバーフロー/アンダーフローの発生時に飽和値を使用する場合は、これらフラグの値をプログラマブル ロジックのレジスタに取り込む必要があります。レジスタに取り込んだフラグの値は、マルチプレクサー セレクト信号として使用します。マルチプレクサーの入力は正の最大値 (0011…1) または負の最大値 (1100..0) に接続します。オーバーフローまたはアンダーフローのいずれが発生したかに応じて、出力で適切な入力を選択します。

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

P[57] よりも後のオーバーフロー/アンダーフローを検出するには、プログラマブル ロジックのフリップフロップに格納したガード ビット (符号は P[57] と同じ) をユーザーが提供する必要があります。P[57] が 1 でガード ビットが 0 の場合、オーバーフローが発生しています。P[57] が 0 でガード ビットが 1 の場合、アンダーフローが発生しています。それ以外の場合は通常動作です。

オーバーフロー/アンダーフロー条件下での MACC の動作に関する詳細は、MACC の拡張 を参照してください。