through the use of new technologies like massive multiple-input/multiple output (MIMO) , frequency reuse, cognitive radio, and so on.
Generally, new protocols are first developed in a simulation environment like MATLAB or GNU Radio. At some point, the protocol needs to be tested on real hardware since simulations do not perfectly match reality (unfortunately!).
This is where software-defined radio (SDR) platforms are useful. They can quickly be reconfigured to solve problems encountered during the transition from simulation to hardware implementation. In order to test the next generation waveforms, the SDR platform front-end must have high performance characteristics. With a cheap RF front-end, the maximum performance of a waveform can quickly be reached, which is not desirable as the final product may use a different front-end.
The PicoSDR is a flexible SDR platform that packages one or two Perseus FPGA carrier boards, with each board having a 2×2 MIMO RF front-end. The Radio420X FPGA mezzanine card (FMC), used for the RF front-end, is based on the Lime Microsystems LMS6002D, a field-programmable RF integrated circuit. A technical article on using the Radio420X for 3GPP radio prototyping can be found here.
Before moving the algorithms developed in simulation to the hardware, it is useful to characterize the radio front-end performance to see if it meets the new protocol’s requirements. A quick and easy way to do it is to use the SDR platform as a vector signal generator (VSG) and a vector signal analyzer (VSA).
Vector signal generator
With the PicoSDR’s default configuration, there are many ways to use it as a vector signal generator. The Radio420X FPGA core has 12-bit I/Q inputs for transferring the baseband signal to the radio front-end.
Figure 1: Playback I/Q samples from internal memory
Figure 1 shows that data contained inside a DDR3 memory can be connected to the Radio420 core. I/Q baseband signals can be written to the memory by a computer application and continuously read and outputted at the radio TX connector. Using this method, the 4 Gigabytes (GB) of the Perseus’ DDR3 memory can be used. The memory can be read at a rate of 5.7 GB/s, which is far higher than the Radio420’s maximum consumption rate. The DDR3 controller can simultaneously output different data to each Radio420X card for MIMO 2×2 applications. For other MIMO configurations that use multiple FPGAs/PicoSDRs, the playback can be started by a common external trigger to ensure all waveforms are synchronized.
In the default application, the binary file to load into the DDR3 must contain the I/Q data of the first radio, in int16 format, interleaved with the I/Q data of the second radio. The binary file can be generated using any programming language. For example, the output waveform from the simulation in MATLAB can be converted to a binary file and transferred to the DDR3 memory.
Nutaq’s software includes a simple MATLAB script to convert a MATLAB matrix into a binary file:
|fpgaacqputframes( ‘waveform.bin’, 4, ‘int16’, signals );|
In the above script example, signals is a <Nx4> matrix containing the columns I1, Q1, I2, and Q2. I1 represents the I data of the first Radio420X and contains integer data from –2048 to 2047 due to the 12-bit format of the Radio420X interface.
Command-line interface (CLI) calls can configure the default example for streaming. They transfer the user’s waveform into memory and then stream it to the radio front-end:
|ram_put waveform.bin 0 0 1600|
recplay_playback_continuous 1600 0
During the continuous playback of the waveform, test equipment like spectrum analyzers can be used to characterize the Radio420X RF performance for the current waveform. For example, a raw I/Q LTE waveform can be played and the RF output analyzed by commercial LTE testing equipment.
Figure 2: Streaming I/Q samples from an external computer
Another approach is to stream the raw I and Q samples directly from an external computer using the RTDEx library shown in Figure 2. The PicoSDR supports both Gigabit Ethernet and PCIe interfaces to transfer data between a computer and the FPGA logic of the platform.
The host computer can read the raw I and Q data from a file or generate it dynamically with signal processing algorithms. Compared to the DDR3 memory playback, the host computer doesn’t have same limitations – the file size can be as large as required since its hard drive can keep up with the required throughput and is no longer limited to 4 GB. Furthermore, a high-end computer has multiple gigahertz cores that can run complex and computationally intensive real-time signal processing algorithms.
On top of Nutaq’s C library, Nutaq’s GNU Radio plug-in can be used to rapidly create waveforms from blocks freely available from the open-source community.
The drawback of the streaming approach is that all the I/Q data needs to go through the data exchange interface. Using a high-end CPU, the maximum sustained transmission rate using Gigabit Ethernet is around 120 MB/s. This means that using a single radio front-end, each I and Q signal can be sampled up to 30 MHz. Using the two Radio420X TX paths, this value is divided by a factor of 2.
This limitation can be overcome by using the PCIe interface. Its data link can operate at up to 665 MB/s. At this rate, an external computer can stream to the four radios inside a PicoSDR 4×4 at a 30 MHz sampling rate without facing throughput issues.
In Part 2 of this series
In my next blog post, I will focus on how to use the default bitstream to use the PicoSDR as a vector signal analyzer. Once the I/Q data is available in its raw format, you can perform an analysis of the acquired waveform to obtain the RF front-end’s RX path performance and characteristics.