Maximum Receive Buffer Size on Pluto #66
-
Hi, When using this timestamping solution, I've noticed that the maximum buffer size I can set without the Pluto failing is from adi import Pluto
sdr = Pluto('ip:192.168.2.1')
sdr.sample_rate = int(30.72e6)
sdr.rx_buffer_size = 614400
d = sdr.rx()
print(f'{d.shape[0]} samples') When running the stock ADI firmware, I get the expected output:
But, when the zynq_timestamping FPGA image is loaded, I get the following error:
What is limiting the maximum buffer size? Is there a parameter that I can customize before compiling the project that would let me have a larger buffer with timestamps enabled? |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 3 replies
-
In the file signal current_num_samples : std_logic_vector(15 downto 0); -- up to 32768 I/Q samples (i.e., enough for 1 ms @30.72 Msps/20 MHz BW) Is there a way to increase this size? |
Beta Was this translation helpful? Give feedback.
Hi @ofontbach,
Yes, we're wanting to post process LTE frames at the 20 MHz BW so we need at least 10ms (but more like 20ms to guarantee the capture of a full LTE frame) of contiguous data which the Pluto cannot stream due to the USB2 bottleneck. We only care about the RX path since we have no plans to transmit anything.
I have little experience with VHDL, but I was able to poke around and increase some of the 16-bit wide signals to 32-bit wide. These changes now let the buffer size be up to 2097152 samples. I believe this is the limit given that PARAM_DMA_LENGTH_WIDTH is set to 24. The signal is treated as signed so the DMA length can be 2^23 bytes. Each sample is 4 bytes so that gives us…