The Nutaq Software Architecture is divided in three hierarchic levels:
- Board Support Package (BSP): Provides the basic functions needed to operate the carrier board and its daughter FPGA mezzanine card (FMC)
- Board Support Development Kit (BSDK): Adds communication capabilities to a host PC
- Model-Based Development Kit (MBDK): Enables customers to design, simulate, test, debug and deploy applications from the Simulink graphical environment without the need of writing any VHDL or C code
This blog explains these three development tools to help you better understand the Nutaq architecture.
What is BSP?
BSP stands for Board Support Package. It supplies the minimal design necessary to configure and operate the FMC hardware in a standalone configuration (i.e. no interaction with a host PC). The designer needs to add the user logic and connect it to the FMC FPGA core in order to process received and transmitted data.
BSP block diagram
BSP contents
Embedded processor
The embedded processor is used to initialize and control the FMC hardware and the FPGA core. The processor uses the AXI bus to communicate with the FPGA cores. A standalone C application is built using Nutaq’s libraries in the Xilinx SDK environment. A library is provided for each of the supported FMC daughter cards. General and utility libraries are also provided.
The MicroBlaze soft processor core is used for the Perseus and ML-605 carriers. The Zedboard uses Zynq’s embedded ARM Cortex A-9 processor.
FMC FPGA core
The FMC FPGA core provides the user logic with access to the FMC data and control ports. It handles the data reception and transmission to and from the FMC hardware.
User logic
In the BSP design, user logic is required to process the FMC FPGA core’s received and transmitted data.
BSP example applications
BSP example applications demonstrate data reception and/or transmission by the FMC FPGA core.
- ADC or data input cards: Data is received and sent to ChipScope.
- DAC or data output cards: Signals are generated and sent to the FMC.
- ADC/DAC Cards: Acquired data is transmitted in a pass-through configuration.
The following table lists the supported FMC daughter cards and the availability of example applications.
Supported FMC for BSP
What is BSDK?
BSDK stands for Board Support Development Kit. It adds host PC communication, as well as data recording and streaming capabilities, to the BSP. An embedded Linux distribution is implemented on the MicroBlaze processor to add the benefits of a TCP/IP stack. The designer adds the user logic and connects it to the FMC FPGA core to process received or transmitted data. The user logic also benefits from the Record/Playback core for real-time data recording and playback purposes and from the RTDEx cores for data streaming whether on Gigabit Ethernet or PCI Express.
BSDK contents for Perseus
BSDK on the Perseus
Embedded Linux distribution
Perseus uses the embedded Linux distribution, PetaLinux 2.2. It provides a TCP/IP stack, file system, first-stage bootloader, and universal bootloader. It is loaded from flash as the BSDK bitstream starts.
Embedded Linux Booting Sequence
Central Command Engine (CCE)
The Central Command Engine’s purpose is to receive commands from the host PC and to execute them. These commands can be used to configure the FMC hardware or FPGA core, to trigger recordings, or to control the transfer of data on the RTDEx.
Nutaq IP core: Record/Playback
The Record/Playback core module enables data recording and playback to and from the Perseus DDR3 SODIMM. The module supports DDR3 sizes of 1 and 4 Gigabytes. The host PC can retrieve the recorded data through the RTDEx and save it to a file.
Nutaq IP core: RTDEx
The RTDEx core module enables the designer to send or receive data to and from the Perseus on high-throughput interfaces (Gigabit Ethernet and PCI Express).
User logic
In the BSDK design, the user logic can interact with the FMC FPGA core via the Record/Playback and RTDEx modules. The following diagram illustrates typical use cases in the BDSK environment.
Typical BSDK use cases
External API (EAPI)
The External API allows the user to configure the Perseus and the FMC hardware from the host PC. It interacts directly with the Perseus CCE, issuing commands and sending them through TCP/IP or PCI Express. A set of functions is available for each of the supported FMC daughter cards and FPGA IP cores.
Command line interface (CLI)
The command-line interface is a basic client interface. It runs on the host PC and consists of a shell where you can type commands and interact with the different computing elements connected to your system.
BSDK example application
A BSDK example application demonstrates the data reception and/or transmission by the FMC FPGA core and the recording, playback or streaming of this data.
The following table lists the supported FMC daughter cards and the availability of example applications.
What is MBDK?
MBDK stands for Model-Based Development Kit. It provides access to all the BSDK features from a model-based development environment (namely Matlab Simulink and Xilinx System Generator) and accelerates the development cycle. For further information on the MBDK and its associated development flow, please refer to the following blog entries:
- The Model-Based Design Workflow
- How Nutaq’s Products Speed Up Your Design Flow When Using Xilinx System Generator: Part 1
- The magic behind Nutaq’s MBDK
The following table lists the supported FMC daughter cards and the availability of example applications.