18 × 18 Complex Multiply using DSPCPLX

Versal ACAP DSP Engine Architecture Manual (AM004)

Document ID
Release Date
1.2.1 English

A complex multiply function is:

Of the four possible cases, for one , the output is given as:

In the legacy mode ( UltraScale™ architecture), the implementation uses three DSP48E2s with pre-adders. For more information, refer to the section Complex Multiplier Examples in the Vivado Design Suite User Guide: Synthesis (UG901).

The above solution can handle a width of upto 26 × 23 in the Versal® architecture versus 26 × 17 in the UltraScale architecture.

A new mode is available in the Versal architecture where the 18 × 18 complex multiply can be implemented using one DSPCPLX module (two back-to-back DSP58s). On a per-cycle basis, a back-to-back DSP58 pair can form complex conjugates of à and B̃ for multiplication. See the following table for the possible combinations of CONJUGATE_A and CONJUGATE_B.

Table 1. Complex Conjugates for Multiplication
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