Variable Precision DSP Blocks User Guide: Agilex™ 5 FPGAs and SoCs

ID 813968
Date 4/01/2024
Public
Document Table of Contents

2.3.1.1. Data Input Feed Preloading Method

The data input feed preloading method preload the 80-bit weight data and 8-bit shared exponent data into the ping-pong buffers using data_in[79:0] and shared_exponent[7:0] buses. The weights and share exponents data can bepreloaded into the ping-pong buffers parallelly and independently. It takes two cycles to load one set of ping-pong buffers or four cycles to preload all two columns into the two sets of ping-pong buffers. Data computation is not allowed during the weights and shared exponents data preloading because this method uses all the block input bandwidth. The following figure shows the dataflow for this preloading method.

Figure 18. Dataflow for Data Input Feed MethodThe feed paths are highlighted in red in this figure.
Figure 19. Data Input Feed Method Timing Diagram
  1. In cycle 1 to 2, the dynamic control signals are set as follow:
    • load_bb_one = 1’b1 and load_bb_two = 1’b0 to preload the weight and shared exponent data into the first set of ping-pong buffers
    • load_buf_sel = 1’b0 to not switch the ping-pong buffers
    • The data and shared exponents are loaded in the ping pong buffers for column 2 in cycle 2 and for column 1 in cycle 3
  2. In cycle 3 to 4, load_bb_one is set to 1’b0 and load_bb_two is set to 1’b1 to preload the weight and shared exponent data into the second ping-pong buffer. The load_buf_sel signal also remain unchanged.
  3. From cycle 6 onwards, the DSP block takes the data from the ping-pong buffers for calculations. The load_bb_one and load_bb_two signals are set to 1'b0 to disable the weight and shared exponent data loading. The load_buf_sel signal changes to 1'b1 when the first set of ping-pong buffers are processed.
  4. The overall process repeats when all the data in the ping-pong buffers have been processed.