Solution
The RFNoC Reply Block relies on the DRAM of the radio. The X440 has 8 GB total of DRAM split into two 4 GB DRR4 banks. However, the DRAM is part of the FPGA silicon. Therefore, its configuration/access depends on the FPGA image you load to the radio. There are two shipping images that enable the Reply Block functionality, the X4_400 and the X4_1600. Additionally, the data type of the waveform file plays a key role in how long of a waveform can be stored in memory. For example, a common data type is the SC16, where each sample required 4 bytes to represent the 16-bit I and Q sub-samples. If one's waveform file uses a sample format other than SC16, then the playout time scales accordingly based on bytes per complex sample.
For the X4_400 image:
- Total memory on the radio: 8 GB.
- Replay ports: 8 total.
- Effective memory per replay port: 1 GB.
Therefore, if one assigns a replay output to each TX channel using the X4_400 FPGA image, the usable depth should be 1 GB per channel. For SC16, that works out to 1,073,741,824 bytes / 4 bytes per complex sample = 268,435,456 complex samples per channel. Playout time per channel is then time (s) = 268,435,456 / sample_rate. Therefore, depending the radio's sample_rate, that's the duration one can achieve:
- 50 MS/s → ~5.37 s.
- 125 MS/s → ~2.15 s.
- 150 MS/s → ~1.79 s.
- 200 MS/s → ~1.34 s.
Instead, the X4_1600 image:
- Total memory on the radio: 8 GB.
- Replay ports: only 2 replay ports total can be enabled per daughterboard (first channel of each daughterboard).
- Effective memory per replay port: 4 GB.
Hence, with this FPGA image the usable depth should be 4 GB per channel. For SC16, that works out to 1,073,741,824 complex samples per port. Playout time per channel is then time (s) = 1,073,741,824 / sample_rate. At 200 MS/s, that is ~5.37 s per port.