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.
CONJUGATE_A | CONJUGATE_B | Product | 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 |