In the previous blog post in this series, we looked at the integration between the Nutaq Model-Based Design Kit (MBDK) blocks and those from Nutaq’s GNU Radio plug-in. Combined together, they provide an integrated model-based design and development environment for software-defined radio (SDR) applications targeting mixed architectures (general-purpose processors and FPGAs). Nutaq’s model-based approach relaxes the requirements for staff to be qualified in VHDL and C software languages when working on wireless communication projects.
In the following examples, Nutaq MBDK blocks (green blocks), together with System Generator blocks (blue blocks) are used to generate a polyphase channelizer for the Nutaq PicoSDR platform. We can see that the Nutaq MBDK blocks are used alongside the Xilinx System Generator blocks in the same FPGA design. In-phase and quadrature components, sampled by the Radio420M, enter the FPGA interleaved, through the MBDK blocks, and flow through a channelizer.
On the PC side, the Radio420 Rx block (from Nutaq’s GNU Radio plug-in) is dragged into the GNU Radio Companion flow graph and used to configure and calibrate the radio transceiver.
The settings for data rate and bandwidth, Tx and Rx carrier frequencies, Rx RF bandpass preselection filters, and gain for the various amplifiers in the Tx/Rx chains are configured from a GNU Radio flow graph.
Simulink enables the encapsulation of block groups behind a mask for organizing large flow graphs in sub-models. The Rx section and the polyphase channelizer section from the Simulink graphs (above) have been encapsulated in a Polyphase Channelizer mask. Additionally, sub-models for computing the per-channel magnitude and time-averaging have been implemented using blocks from the System Generator library.
As we see in the figure above, RTDEx bocks (Ch0 and Ch1) are used to stream the average magnitude to the PC for visualisation (using the GNU Radio spectrogram tools). Additionally, RTDEx bocks (Ch2 and Ch3) are used to stream two channels (UL_Channel and DL_Channel) at a full data rate back, to be plotted in the time domain.
User register blocks are added to the flow graph for controlling the design parameters in real time from GNU Radio. Parameters include the length (in samples) of the averaging applied to the fast Fourier transform (FFT) magnitude. The FFT index (bin number) for the two channels to be retransmitted to the PC can also be selected at run-time. You can observe the spectrogram for activity and switch to those channels for visualization of the full-rate time domain signal.
On the PC side, Custom Register (CR) blocks from the Nutaq’s GNU Radio plug-in are used to write to those FPGA registers at run-time from the GNU Radio application.
The next figure shows the completed GNU Radio flow graph, which includes the Radio420 Rx configuration block, the RTDEx source blocks for receiving the data streams from the FPGA, and the customer register blocks for controlling the design parameters at run-time.
The final result is an FPGA implementation of a polyphase channelizer on the PicoSDR that can be controlled and operated from GNU Radio. The entire project was realized strictly with the Nutaq MBDK and System Generator (for implementing the FPGA design), and GNU Radio with Nutaq’s GNU Radio plug-in (for implementing the PC application).
The following figure shows the application running.