M, P0, P1, and P are always in the binary32 format, whereas M1 and M0 (which is either B or D) can be configured statically to be in the binary32 or the binary16 format—independently. The input cascades (ACIN-ACOUT and BCIN-BCOUT) use the same formats as A and B/D (see the following table). Because the adder can accept D as an input, when D is configured as a binary16 input for the multiplier, D cannot be used as an input to the binary32 adder.
Note: When FP data (single precision or half precision) is cascaded, the *_FPTYPE attributes
for both the source and the receiving DSPs must match (for example, if A_FPTYPE on the
source DSP = B16, then the receiving DSP must also have A_FPTYPE = B16).
A_FPTYPE Attribute | B_D_FPTYPE Attribute | A, ACIN, ACOUT | B, BCIN, BCOUT, D |
---|---|---|---|
B32 | B32 | FP32 format | FP32 format |
B32 | B16 | FP32 format | FP16 format |
B16 | B32 | FP16 format | FP32 format |
B16 | B16 | FP16 format | FP16 format |
In the DSPFP32 floating point multiplier, the data alignment is correct for B16
format. The following shows an
example:
sign <= sign_int
exp <= {3'b0, exp_int}
man <= {man_int, 13'b0}