複素乗算ファンクションは、次式で表されます。
4 とおりの組み合わせのうちの 1 つである の場合、出力は次式で表されます。
レガシ モード ( UltraScale™ アーキテクチャ) の実装では、3 つの DSP48E2 で前置加算器を使用します。詳細は、 『Vivado Design Suite ユーザー ガイド: 合成』 (UG901) の「複素乗算のコード例」を参照してください。
上記の式を解くと、 Versal® アーキテクチャでは最大 26 × 23 の幅に対応します (UltraScale アーキテクチャでは 26 × 17)。
Versal アーキテクチャの新しいモードでは、1 つの DSPCPLX モジュール (2 つの連続する DSP58) を使用して 18 × 18 複素乗算を実装できます。2 つの連続した DSP58 のペアが、乗算用に Ã と B̃ の複素共役をサイクルごとに生成できます。CONJUGATE_A と CONJUGATE_B の有効な組み合わせは、次の表を参照してください。
CONJUGATE_A | CONJUGATE_B | 積 | A | B |
---|---|---|---|---|
0 | 0 | Ã × B̃ | A_re + jA_im | B_re + jB_im |
1 | 0 | Ã* × B̃ | A_re – jA_im | B_re + jB_im |
0 | 1 | Ã × B̃* | A_re + jA_im | B_re – jB_im |
1 | 1 | Ã*× B̃* | A_re – jA_im | B_re – jB_im |