Adder Input Selection

Versal ACAP DSP Engine Architecture Manual (AM004)

Document ID
AM004
Release Date
2022-09-11
Revision
1.2.1 English
  1. FPOPMODE[1:0] selects between the product M, PCIN, the internal input D or 0 to feed the adder input P0. When D carries binary16 data for the multiplier, it cannot be used for the binary32 adder.
  2. FPOPMODE[4:2] selects between P, PCIN, C, or 0 to feed the adder input P1.
    • P is the adder output. When looped back to P1, the P register is the accumulator. Alternatively, P can be looped back to C with programmable logic (PL) resources to form an accumulator chain that is up to four registers long, enabling up to four independent threads to be time-interleaved. For instance, one input element from A can be processed by four linear filters with coefficients at the B input. The results from the four filters are shifted in the four-accumulator loop. While the four filters context switches in a round-robin fashion at input B every cycle, the input element on A changes only once every four cycles and reduces power.
    • PCIN is the P output of the downstream DSP58 in a cascade.
    • C is an external input to the adder. Together with FPOPMODE[1:0], the adder can be used independently from the multiplier to compute P = C + D.
    • The input 0 is used to pass P0 directly to P. It is used, for instance, to initialize the accumulator to the first product in a sum of products (vector dot-product) calculation. FPOPMODE[4] is a single pin to initialize the accumulator.

The following tables outline the selection of P1 and P0.

Table 1. Selecting P1 with FPOPMODE[4:2]
FPOPMODE[4] FPOPMODE[3] FPOPMODE[2] P1
1 0 X P
1 1 0 C
1 1 1 PCIN
0 X X 0
Table 2. Selecting P0 with FPOPMODE[1:0]
FPOPMODE[1] FPOPMODE[0] P0
0 0 0
0 1 M
1 0 PCIN
1 1 D