Visible to Intel only — GUID: uuc1690831999817
Ixiasoft
1. Agilex™ 5 Variable Precision DSP Blocks Overview
2. Agilex™ 5 Variable Precision DSP Blocks Architecture
3. Agilex™ 5 Variable Precision DSP Blocks Operational Modes
4. Agilex™ 5 Variable Precision DSP Blocks Design Considerations
5. Native Fixed Point DSP Agilex™ FPGA IP Core References
6. Multiply Adder Intel® FPGA IP Core References
7. ALTMULT_COMPLEX Intel® FPGA IP Core References
8. LPM_MULT Intel® FPGA IP Core References
9. LPM_DIVIDE (Divider) Intel FPGA IP Core
10. Native Floating Point DSP Agilex™ FPGA IP References
11. Native AI Optimized DSP Agilex™ FPGA IP References
12. Document Revision History for the Agilex™ 5 Variable Precision DSP Blocks User Guide
2.1.1. Input Register Bank for Fixed-point Arithmetic
2.1.2. Pipeline Registers for Fixed-point Arithmetic
2.1.3. Pre-adder for Fixed-point Arithmetic
2.1.4. Internal Coefficient for Fixed-point Arithmetic
2.1.5. Multipliers for Fixed-point Arithmetic
2.1.6. Adder or Subtractor for Fixed-point Arithmetic
2.1.7. Accumulator, Chainout Adder, and Preload Constant for Fixed-point Arithmetic
2.1.8. Systolic Register for Fixed-point Arithmetic
2.1.9. Double Accumulation Register for Fixed-point Arithmetic
2.1.10. Output Register Bank for Fixed-point Arithmetic
2.2.1. Input Register Bank for Floating-point Arithmetic
2.2.2. Pipeline Registers for Floating-point Arithmetic
2.2.3. Multipliers for Floating-point Arithmetic
2.2.4. Adder or Subtractor for Floating-point Arithmetic
2.2.5. Output Register Bank for Floating-point Arithmetic
2.2.6. Exception Handling for Floating-point Arithmetic
3.2.2.1. FP16 Supported Precision Formats
3.2.2.2. Sum of Two FP16 Multiplication Mode
3.2.2.3. Sum of Two FP16 Multiplication with FP32 Addition Mode
3.2.2.4. Sum of Two FP16 Multiplication with Accumulation Mode
3.2.2.5. FP16 Vector One Mode
3.2.2.6. FP16 Vector Two Mode
3.2.2.7. FP16 Vector Three Mode
5.1. Native Fixed Point DSP Agilex™ FPGA IP Release Information
5.2. Supported Operational Modes
5.3. Maximum Input Data Width for Fixed-point Arithmetic
5.4. Maximum Output Data Width for Fixed-point Arithmetic
5.5. Parameterizing Native Fixed Point DSP IP
5.6. Native Fixed Point DSP Agilex™ FPGA IP Signals
5.7. IP Migration
10.4.1. FP32 Multiplication Mode Signals
10.4.2. FP32 Addition or Subtraction Mode Signals
10.4.3. FP32 Multiplication with Addition or Subtraction Mode Signals
10.4.4. FP32 Multiplication with Accumulation Mode Signals
10.4.5. FP32 Vector One and Vector Two Modes Signals
10.4.6. Sum of Two FP16 Multiplication Mode Signals
10.4.7. Sum of Two FP16 Multiplication with FP32 Addition Mode Signals
10.4.8. Sum of Two FP16 Multiplication with Accumulation Mode Signals
10.4.9. FP16 Vector One and Vector Two Modes Signals
10.4.10. FP16 Vector Three Mode Signals
Visible to Intel only — GUID: uuc1690831999817
Ixiasoft
2.3.4.1. Fixed-point to 32-bit Floating-point Conversion Examples
The following examples show the conversion algorithm of the fixed-point to floating-point converter.
Example 1: Convert 20-bit fixed-point dot product vector of 00010011111010101010 (81578 decimal value) to 32-bit floating-point. The exponent is adjusted by the shared_exponent[7:0] values.
- The most significant bit in the 20-bit fixed-point dot product vector result represents the sign of the number. In this case, the number is 0 and it represents a positive number.
- The floating-point format of the number = 00010011111010101010*20 or 0.0010011111010101010*219.
- Next, the value is shifted by 3 bits because it has three leading 0s. The exponent value is adjusted accordingly. The normalized result = 1.0011111010101010000*216.
- The result is then converted into 32-bit floating-point with the following formula:
- Exponent = 19-bit left shift value + shared_exponent[7:0] value - bias =143
- Mantissa = {0011111010101010000, 4'b0000}
- 32-bit floating-point operand = 0_10001111_00111110101010100000000
Example 2: Convert 20-bit fixed-point dot product vector of 11111010101010000000 (-21888 decimal value) to 32-bit floating-point. The exponent is adjusted by the shared_exponent[7:0] values. In this example, the shared_exponent[7:0] values is 0.
- The most significant bit in the 20-bit fixed-point dot product vector result represents the sign of the number. In this case, the number is 1 and it represents a negative number.
- The DSP block converts the number to a sign-magnitude format using the bitwise inversion method. The result is 00000101010110000000*20 or 0.0000101010110000000 * 219.
- Next, the value is shifted by 5 bits because it has five leading 0s. The exponent value is adjusted accordingly. The normalized result = 1.0101011000000000000*214.
- The result is then converted into 32-bit floating-point with the following formula:
- Exponent = 19-bit left shift value + shared_exponent[7:0] value - bias = 141
- Mantissa = {0101011000000000000, 4'b0000}
- 32-bit floating-point operand = 1_10001101_01010110000000000000000