In this series:
- A real-time processing system for dual-comb spectroscopy – Part 1
- A real-time processing system for dual-comb spectroscopy – Part 2
In my previous blog posts, I explained how a real-time processing system was developed on an ML605 carrier board equipped with an MI250 FPGA mezzanine card (FMC) for a dual-comb spectroscopy application. In this post, I look at Nutaq’s hardware and software solutions to see how they could have helped me save a substantial amount of time during the design and implementation phases.
Perseus carrier board
The Nutaq Perseus carrier board, like the ML605, has a Virtex-6 FPGA to perform highly demanding signal processing. However, instead of just supporting the LX240 version of the FPGA, the Perseus board can also be purchased with larger FPGAs; the SX315, SX475 and LX550 FPGAs have more than twice the capacity of the LX240. If, during development, you decide that the LX240 cannot handle the required processing, you have an alternative solution (by increasing the FPGA size) rather than doing a lot of small but time-consuming optimizations.
The Perseus board has two DDR3 memory devices. One used by the embedded MicroBlaze soft processor and the other is available to the FPGA logic for data transfer. The MicroBlaze enables a remote host to easily read and modify custom registers. No development from the UART interface is required. Also, the MicroBlaze with the MI250 core permits you to dynamically reconfigure the MI250 FMC and access all of its features.
In the Nutaq reference design, the DDR3 SODIMM memory is supported with a record and playback behavior. The core in the reference design uses the low-level memory controller from Xilinx to ensure no errors occur when accessing the memory. Some modifications would be required to use it for our application’s desired first-in first-out (FIFO) memory.
Real-time data exchange cores
The Perseus board comes with real-time data exchange (RTDEx) FPGA cores and an API to provide a high-speed data link between a host computer and the FPGA logic. This enables the user to use send and receive commands from a host computer to quickly transfer data over a FIFO-like interface in the FPGA.
An Ethernet link is supported and it can almost reach a Gigabit bandwidth. PCI Express is also supported and can stream at rates faster than 600 MBytes/s.
These high-speed links can replace the UART block used from extracting signals from the Probe block as well as the averaged IGM signal. They are fully tested, come with user-friendly interfaces, and are faster than the UART by several orders of magnitude.
Nutaq provides its Model-Based Design Kit (MBDK) development environment for use with the MI250 FMC and the Perseus board. The MBDK is based on System Generator from Xilinx and uses the Simulink environment.
The MBDK enables the user to generate fully functional bitstreams with just a few mouse clicks. All the board interfaces are taken care of and the user can focus on his or her algorithm implementation. The MI250, DDR3 memory, and RTDEx interfaces are handled by the Nutaq blocks (in green). System Generator blocks can be used from Xilinx and even VHDL code, if necessary, and can be written and integrated in the MBDK project.
Figure 1: Nutaq MBDK example
The MBDK environment enables direct simulation. Simulink blocks can be used as source blocks or sink blocks. Test vectors can easily be included in the simulation for testing and verifying the processing algorithm behavior. Xilinx guarantees that the simulation in System Generator is bit and cycle true. This means that the compiled logic in the FPGA chip will have exactly the same delay and resolution as in the simulation.
Figure 2 shows how in the MBDK environment, Simulink, System Generator, and Nutaq blocks are used for simulation.
Figure 2: Simulation in Nutaq MBDK
Simulink source and sink blocks are used before and after the Nutaq interface blocks. Once the data goes through a Nutaq interface block, the data becomes an FPGA signal and is simulated using Xilinx processing blocks. The resulting signal can be displayed by a scope block or saved in a file or MATLAB workspace variable for later analysis.
When I initially developed my real-time processing application, I used Xilinx ISE for writing VHDL code, ModelSim for simulation, MATLAB for generating test vectors for ModelSim, VHDL for the glue logic to import the test vectors into the ModelSim environment, and finally MATLAB for performing analysis on the simulation results. When even a small modification was needed, the time between two simulations was high due to the multiple software applications and environments involved.
In Nutaq’s MBDK environment, all the development, simulation and analysis can be done in the same place. With its model-based design approach, modifications can easily be done and the software architecture is understood without the use of any external documentation.
Using the Perseus carrier board with the Nutaq software tool suite would have dramatically accelerated my development time. FPGA cores that handle the board interface are already developed and tested. Furthermore, an external API for remote control of the FPGA is available in the software tool suite.
The high-speed interfaces (which are not trivial to develop) are fully functional and ready for use by the user application. The model-based environment enables faster algorithm development and the simulation is fully integrated in the MATLAB/Simulink/System Generator environment.
When evaluating the budget for a project, a low-cost development board might be seen as the best solution. However, if several months are spent developing interface cores and code to communicate with the board, it can be the opposite. A board, with a complete software tool solution can end-up being the more cost-effective solution, as well as accelerating the product’s time to market.