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

ID 813968
Date 9/20/2024
Public
Document Table of Contents

3.3.1. Data Input Feed Preloading Method

The data input feed preloading method preloads the ten 8-bit weights data and 8-bit shared exponent data into the ping-pong buffers using data_in{1..10}[7:0] and shared_exponent_data[7:0] buses. The weights and shared exponents data can be preloaded 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 52. Dataflow for Data Input Feed MethodThe feed paths are highlighted in red in this figure.
Figure 53. Data Input Feed Method Timing Diagram
Note: C1 refers to buffer load for column 1 and C2 refers to buffer load for column 2.
  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.
    • 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.
    • During cycle 1, data_in_{1..10} and shared_exponent_data input will be used to compute output based upon load_buf_sel before the buffer update.
  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.
  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 and data_in_{1..10} signals are used for computation from this point.