wiki:WARPLab/BufferSizes

Version 12 (modified by murphpo, 9 years ago) (diff)

--

Large Buffer Support

In WARPLab 7.4 and earlier, all transmit and receive samples were stored in buffers of BRAM directly on the FPGA. As of WARPLab 7.5, these samples are buffered in the DRAM SODIMM attached to the WARP v3 hardware.

WARPLab 7.4 WARPLab 7.5 (4RF) WARPLab 7.5 (2RF)
Tx max samples 32 kSamp 56 MSamp per interface 112 MSamp per interface
Tx max duration at 40MHz sampling 819.2 µsec 1.468 sec 2.9360 sec
Rx max samples 32 kSamp 64 MSamp per interface 128 MSamp per interface
Rx max duration at 40MHz sampling 819.2 µsec 1.6777 sec 3.3554 sec

The table above summarizes the maximum buffer sizes for the WARPLab 7.5 design. Since the buffer space is divided among RF interfaces, the 2RF design can store more samples than the 4RF design. WARPLab 7.5 maintains full backward compatibility with WARPLab 7.4, so all existing scripts compatible with WAPRLab 7.4 will "just work" with the new design and will use the existing WARPLab 7.4 limitations on buffer sizes.

Performance Considerations

With all of the extra buffer space that the hardware design is capable of, the chief limitation on usable buffer sizes shifts burden to the user's PC. Each sample in a MATLAB workspace is stored as a double precision real and a double precision imaginary value.

32 kSamp 512 kBytes
256 kSamp 4 MBytes
2 MSamp 32 MBytes
16 MSamp 256 MBytes
128 MSamp 2 GBytes

The above table shows the storage size of various sample lengths up to the new maximum in WARPLab 7.5. Note: these sizes are how much RAM is required for the vector to sit in the workspace. Actually retrieving the vector and processing the vector requires even more. Depending on the amount of RAM on the host PC and what other programs are currently running, a user should limit the number of samples they are working with to stay far under the total amount of RAM on their PC. If too high, MATLAB will be extremely slow as it waits on the host OS to swap memory to the disk.