The Zynq and the Zedboard: Powerful Hardware for Software Defined Radios
Software defined radios heavily rely on digital signal processing executed on powerful hardware. SDRs require a wide range of different tasks, that have to be performed with different speed. The ideal hardware is a combination of processor and FPGA, as it is explained in my paper “The Xilinx Zynq: A Modern System on Chip for Software Defined Radios”
Recent development in microelectronic has led to a new kind of microchips, that combine an FPGA and a processor on a single chip. The FPGA manufacturer Xilinx has presented the Zynq Device, whereas its competitor Altera introduced the Altera SoC series. Both chips are very similar in system structure and performance. The Panoradio uses the Xilinx Zynq, but many details described here are also applicable to Altera SoCs.
The Zynq SoC contains a dual ARM Core A9, an FPGA and additional blocks for different I/O (e.g. DDR3 memory interface, USB, SD Card Slot). There are up to 3000 possible connections between the processor and the FPGA, which are programmable and allow fast transmission of data. This is a big advantage over a separate combination of FPGA and processor on a PCB, where the number of possible connections is small and can hardly be changed after PCB design. The Zynq comes in six different sizes (Z-7010 to Z-7100). All contain a dual ARM A9, but the FPGA part has largely different sizes.
Programming of the Zynq involves two tasks: Programming the processor and designing the digital circuit for the FPGA. These two tasks can be done nearly independently by different tools.
Programming the Processors
The processor can be programmed either bare metal or using an operating system. Bare metal refers to programming the ARM processor directly in C without any operating system using e.g. the Xilinx SDK tool. However it is strongly recommended to use an operating system like Linux, which hides many details of the processor and provides easy access to interfaces as well as standard software.
As an operating system a linux distribution (e.g. Ubuntu/Linaro) can be installed on a SD Card (link), which also serves as a file system. Access to the processor can be gained through the network interface (SSH or RDP) or by directly attaching monitor, keyboard and mouse (use as a standalone system). Then standard software can be used (provided from the linux package manager or compiled by hand). Software like SciLab (mathematical toolbox) or the powerful demodulation software Fldigi can be installed directly via package manager. Programming can be done using many languages, like C/C++, Qt, Python, Java etc. As an editor for programming the QtCreator can be used, which can directly run on the Zynq without the need for cumbersome cross compilation.
The more challenging part is the hardware design for the FPGA. Here Xilinx provides a design tool called ”Vivado”. The basic functionality of Vivado is free of cost, an additional license for the debugging functionalities (Vivado Logic Analyzer) is included in the Zedboard. These tools are sufficient for most of the designs for the Zynq.
SDR design can be done by using the Vivado Block Design, which is a top level schematic, that connects different blocks. The blocks contain the main functionality and can be designed in different ways. One is using a hardware description language like VHDL or Verilog. The other option is to rely on high level synthesis, like Vivado HLS or Matlab based tools (System Generator, HDL Coder), that basically try to convert C or Matlab code into a digital circuit.
It is worth to mention, that Xilinx offers some predefined hardware components, that are very useful to build a SDR: A sine signal generator based on direct digital synthesis (DDS) is available, that can be parameterized. Frequency range, resolution, bitwidths, clock speed and spurious-free dynamic range (SFDR) can be chosen. SFDRs of 150 dB can be easily obtained. Another useful hardware block is the FIR filter compiler, that allows for easy implementation of FIR filters. Many hardware parameters can be chosen, the filter coefficient design itself can be done using e.g. Matlab.
Designing the hardware for FPGA requires good knowledge and experience in hardware design and digital circuits. Furthermore, experience shows that the Vivado tools sometimes seem to be quite immature and unintuitive to use.
How the Interconnect works
As mentioned above the Zynq provides several thousand interconnections between the processor and the FPGA for the exchange of data. It is worth to mention a few words on how these interconnect works.
The interconnect is a memory mapped interface. That means that a part of the processor’s memory is virtually connected to a 32 Bit register in the FPGA. The processor can write data to this special memory part, that is transferred to the FPGA registers. Or it can read the registers in the FPGA by reading data from the memory. From an FPGA point of view data transfer is done by just reading and writing to the 32 bit registers.
Although moving data sounds not too complicated and is for a programmer, it involves a quite complex process based on a standard called AXI, which is fortunately mostly hidden to the user.
If a large amount of data is to be transferred, direct memory access (DMA) can be used. This allows much faster transmission of data by using the high performance (HP) or accelerated coherence port (ACP), see here for more information.
The Zedboard is a low-cost evaluation board for the Xilinx Zynq device. It contains many peripherals that unleash the power of the Zynq, such as power supplies, memory and many interfaces. In detail the Zedboard features:
- 512 MB DDR3 Memory
- Gigabit Ethernet
- USB OTG and USB UART
- HDMI interface
- VGA connector
- OLED display
- SD card slot
- GPIO pins, buttons and LEDs
- FMC connector
- Audio Interface / Sound Codec ADAU 1761
- onboard clock generators
These peripherals make the Zedboard a fully standalone system. Monitor, mouse, keyboard and headphone can be connected, as well as an internet connection established.
The Zedboard is ideal for experimenters, because it provides a lot of possibilities. It is an ideal platform for many different applications like image processing, control systems, acceleration of algorithms – and SDRs. Moreover, there is a large online community at www.zedboard.org. Tutorials, example projects and a forum are available to support the Zedboard beginner. Also the schematics of the board have been published and can be downloaded at no cost.
Since the Zedboard itself does not contain any ADC or DAC suitable for SDR, a radio module needs to be connected. The FMC connector is ideal for that. Many companies like Analog Devices, Texas Instruments or Linear Technology offer daughter board with an FMC interface. These boards can be easily connected to the Zedboard.
An advantage of the Zedboard over many other SDR platform is, that the radio module is not fixed. It can be chosen according to the user’s requirements and available budget. It is easy to change the FMC board and create a radio with a completely new ADC/DAC system.
Besides the ”classical” Zedboard more Zynq boards appeared on the market. The MicroZed and the Zybo should be mentioned, since they are much cheaper and offer similar functionality. But it needs to be pointed out that these boards do not have a full FMC connector. This makes it harder to attach ADCs and DACs to create a full software defined radio platform.