Using a PCIe Express high-throughput interface with GNU Radio

Using GNU Radio with Nutaq’s Radio420X front-end module and the Perseus 601x carrier card typically involves running a Linux distribution on an embedded CPU (this configuration is available on Nutaq’s PicoSDR 2×2-E). Nutaq’s Advanced Development Platform (ADP) Software Suite and the GNU Radio plug-in are installed on the host PC and run within the Linux distribution.

PicoSDR 2x2 - E

PicoSDR 2×2 – E

The ADP Software Suite enables the transfer of data between the host PC and the Perseus carrier. The Real-Time Data Exchange (RTDEx) interface, which handles data streaming to and from the Perseus, uses a PCI Express (PCIe) or a Gigabit Ethernet (GbE) link through the backplane connectors. The GNU Radio plug-in uses this interface to enable users to stream data to and from the Radio420X FPGA mezzanine cards (FMC) on the Perseus.

The ADC and DAC on the Radio420X can be configured to a maximum of 80 Mega-samples per second (Msps), meaning that 40 million I samples and 40 million Q samples per second are sent or received by the Perseus. The ADC and DAC samples are 12 bits wide and are encoded to 16 bits for transmission on the RTDEx. With two bytes per sample, the data rate required to operate one Radio420X at the maximum ADC and DAC rates is 160 MBytes per second (MBps).

The maximum throughput for GbE under optimal circumstances is 113 MBps in either direction. It is therefore not possible to exchange the I and Q streams between the CPU and the radio at the full sampling rate, incurring a limitation of 56.5 Msps in SISO and 28.25 Msps in 2×2 MIMO. Users may still use the full Radio420X bandwidth through GbE by performing some of the processing in the FPGA. This processing can be as simple as up-sampling and down-sampling the signals, or as complex as space-time coding and decoding (for MIMO).

Table 1: Gigabit Ethernet RTDEx supported data rates

Table 1 Gigabit Ethernet RTDEx supported data rates

Using PCI Express between the CPU and the Perseus plug-in solves this throughput issue. The communication is handled on the Perseus by the PCIe RTDEx FPGA core and the MicroBlaze PCIe driver. On the host, the Linux PCIe driver and the RTDEx library are controlled by the GNU Radio plug-in, letting the user operate the Radio420X data streaming at much higher throughput than with Gigabit Ethernet.

The PCIe RTDEx interface handles throughputs of up to 665 MBps from the CPU to the radio and up to 750 MBps from the radio to the CPU.

Table 2: PCI Express RTDEx supported data rates

Table 2: PCI Express RTDEx supported data rates

PCI Express will be officially supported by GNU Radio plug-in in the Nutaq ADP Software Suite release 6.4. See http://www.nutaq.com/products/picosdr