For a lot of developers, the fear of working with FPGAs outweighs the advantages they bring. In conjunction with its own products, Nutaq uses Matlab® from MathWorks® and System Generator for DSP™ from Xilinx® to break through this fear and make the creation of FPGA-based applications easier. Since FPGAs are great for parallel processing of multiple signals, Nutaq’s model-based approach is well suited for developing applications for FPGA data acquisition systems.
Nutaq Model-Based approach
Nutaq’s Model-Based Development Kit (MBDK) is designed to make building a complete FPGA-based application easy and quick, and it requires only a minimal knowledge of FPGA programming. By combining the power of the Matlab user interface, the System Generator FPGA bitstream generation tools, and a hardware platform from Nutaq, you can quickly create an application that runs on real hardware.
How does it work?
Nutaq’s MBDK contains blocks that encapsulate the FPGA code that allows the processor to interface with the outside world. The figure below illustrates an example of an MI125 block that can be used to create an FPGA model processing the data received by an MI125 FMC on a Perseus AMC. The data port makes available in the FPGA the data received by one of the ADC of the MI125. This data can then be processed, and the data_valid port indicates whether the data coming from the data port is valid.
System Generator for DSP from Xilinx also has blocks that perform additional operations (filtering, combinatory logic, FFTs, and so on). You create your application by connecting these blocks together.
Creating a Multiple-Input FPGA Data Acquisition Application
Nutaq makes it easy to go from the idea to the prototype with its Model-Based approach. For example, to create a multiple-input data acquisition application using a MI125-32 FMC and a Perseus AMC, you just need to follow these steps:
- Install the required software.
- Set up your Perseus AMC and your MI125-32 FMC.
- Open the MI125-32 example available within Nutaq’s MBDK.
- Modify the example to suit your needs, and add any System Generator blocks you want (filters, combinatory logic, FFTs, and so on).
- Generate your bitstream.
- Once the generation is complete, upload your bitstream to your FPGA.
You just created an FPGA application without writing a single line of VHDL!
As a final example, the figure below shows a model that sets up the FPGA of a Perseus AMC to do 2 things:
- Take the data from 4 MI125 channels and store it to the Perseus DDR3 (the box on the right of the diagram).
- Read the data from the DDR3 of the Perseus and send it to the PC using GigE.
All the PC code needed to control these FPGA blocks is also included in Nutaq’s MBDK solution. In the case of this example, the PC code starts the storage in memory and then starts the transfer of the stored data to a file on the PC.