The carry out from each DSP58 can be sent to the logic resources using the CARRYOUT port. This port is 4 bits wide. CARRYOUT[3] is the valid carry output for a two-input 58-bit adder/subtracter or one-input accumulator. In this case, USE_SIMD = ONE58 is the default setting and represents a non-SIMD configuration. When a two-input adder/subtracter or one-input accumulator is used in SIMD mode, such as TWO24 or FOUR12, the valid CARRYOUT signals are listed in the following table. The CARRYOUT signals are not valid if three-input (or four-input) adder/subtracter (for example, A:B + C + PCIN) or two-input (or three-input) accumulator (for example, A:B + C + P) configurations are used or if the multiplier is used.
SIMD Mode | Adder Bit Width | Corresponding CARRYOUT |
---|---|---|
FOUR12 | P[11:0] | CARRYOUT[0] |
P[23:12] | CARRYOUT[1] | |
P[35:24] | CARRYOUT[2] | |
P[47:36] | CARRYOUT[3] | |
TWO24 | P[23:0] | CARRYOUT[1] |
P[47:24] | CARRYOUT[3] | |
ONE58 | P[57:0] | CARRYOUT[3] |
The CARRYOUT signal is cascaded to the next adjacent DSP58 using the CARRYCASCOUT port. Larger add, subtract, ACC, and MACC functions can be implemented in the DSP58 using the CARRYCASCOUT output. The 1-bit CARRYCASCOUT signal corresponds to CARRYOUT[3], but is not identical. The CARRYCASCOUT signal is also fed back into the same DSP58 through the CARRYINSEL multiplexer.
The CARRYOUT[3] signal should be ignored when the multiplier or a 3-input (or
4-input) add/subtract operation is used. Because a MACC operation includes a
three-input adder in the accumulator stage (feedback from the P output and two
partial products from the multiplier output), the combination of MULTSIGNOUT and
CARRYCASCOUT signals is required to perform a 116-bit MACC, spanning two DSP58s. The
second DSP58’s OPMODE must be set to MACC_EXTEND (001001000
) to use both CARRYCASCOUT and MULTSIGNOUT, thereby
eliminating the ternary adder carry restriction for the upper DSP58.