DSP エンジンはさまざまな機能モードでの動作が可能です。主な機能は次のとおりです。
- 27 ビット前置加算器を持つ 27 × 24 + 58 の 2 の補数積和演算 (MACC)。オプションで積のネゲートをサポート。
- 2 つの連続する DSP58 で構成した 18 × 18 + 58 の 2 の補数複素 MACC。2 つの複素入力をオプションで共役が可能。
- 単精度浮動小数点 (binary32) アキュムレータ。
- 乗数と被乗数を独立して binary16 または binary32 に静的に設定可能な混在精度の浮動小数点 MACC。バイアシングとアキュムレータには binary32 を使用。
- アキュムレータまたは後置加算器を持つ 3 要素 2 の補数ベクトル ドット積 (INT8 モード)。
- 低消費電力の 27 ビット前置加算器: 対称フィルター アプリケーションを最適化し、DSP のロジック要件を緩和する。
- 58 ビット アキュムレータ: カスケード接続することで 116 ビット以上のアキュムレータ、加算器、カウンターを構築可能。
- SIMD (単一命令複数データ) 演算ユニット: デュアル 24 ビットまたはクワッド 12 ビットの加算/減算/累算が可能。
- 58 ビットの論理ユニット: ビット単位 AND、OR、NOT、NAND、NOR、XOR、XNOR がある。
- パターン検出器: ターミナル カウント、オーバーフロー/アンダーフロー、収束丸め/対称丸めをサポートするほか、論理ユニットと組み合わせて 116 ビット幅の AND/NOR で出力が特定のパターンと一致したかどうかを検出する。
- オプションのパイプライン レジスタと専用バス: 同じカラムにある DSP58 をカスケード接続し、シストリック FIR フィルターなどの階層/複合ファンクションを構築可能。
UltraScale™
アーキテクチャでは、2 つの DSP48E2 にコンフィギャラブル ロジック ブロック (CLB) とブロック RAM を合わせて DSP48 タイルを構成していました。
Versal®
アーキテクチャでは DSP58 スーパータイルを導入しています (下図参照)。これは、常に DSP58 に隣接する新しいバージョンのコンフィギャラブル ロジック ブロック (CLB) を 2 行 x 2 列使用して構成したもので、次のリソースを提供します。
- 64 個の LUTM: ロジック、分散メモリ、またはシフト レジスタ ロジック (SRL) として使用する LUT
- 64 個の LUTL: ロジック リソースとして使用する LUT
- 256 個のフリップフロップ
新しい CLB 内の LUT のちょうど半分が LUTRAM/SRL に対応し、DSP にシングル ポートの分散 RAM を提供します。この構造をデバイス全体で複製することで、タイミング クロージャを最大限に容易にできます。
図 1. 2 つの連続する DSP58 スーパータイル
DSP_MODE 属性を CINT18 に設定すると、2 つの連続する DSP58 を使用して 1 つの複素演算ユニットを構成できます (下図参照)。2 つの DSP58 で構成した複素演算ユニットの右側の DSP58 は、実数結果 PRE を計算します。これと同時に、左側の DSP58 は虚数結果 PIM を計算します。共有信号 (CLK、ASYNC_RST など) は左側の DSP58 のインターコネクト インターフェイスにのみ配線されます。
図 2. 1 つの DSP58 複素演算モード スーパータイル
各種機能モードの詳細は、この後の章で説明します。