MATLAB® and Simulink® enable hardware-software codesign by providing C/C++ and HDL code generation with targeted support for programmable SoC devices. With the use of hardware support packages, these products target development boards for Xilinx® Zynq® -7000 All Programmable SoC and Intel® Cyclone® V SoC devices.
With a similar workflow, you can use Simulink Real-Time™ to develop real-time applications and prototype them on dedicated target computer equipped with a real-time kernel, multicore CPU, I/O and protocol interfaces, and FPGAs.
With Simulink, you create a system design, including component models that describe the software and hardware subsystems. You can explore design alternatives, create detailed representations, and verify elaborated models. For example, you can discretize a continuous-time model and convert floating-point math operations to fixed-point math operations for hardware implementation.
Often it's necessary to implement algorithms in fixed-point arithmetic to achieve performance or resource utilization goals. You can use Fixed-Point Designer™ to help automate the conversion and compare functional results with the original model. When you achieve acceptable results, you can then generate C/C++ and HDL code for your hardware-software codesign implementation.
Offering a combination of ARM® Cortex®-A9 cores along with the programmable logic of a conventional FPGA, Xilinx Zynq SoC and Intel SoC devices require designers to adopt hardware-software codesign methodologies. With Model-Based Design, design teams can simulate models for complete systems and use C/C++ and HDL code generation from Simulink to target either Zynq or Intel SoC devices.
In this hardware-software workflow, you generate C/C++ with Embedded Coder® for your software model, and can use HDL Coder™ to generate Verilog and VHDL to produce IP cores from your hardware model. Using optimizations provided with the coders, you customize generated code for your target SoC device. For example, you can use resource sharing and distributed pipelining from HDL Coder to improve the efficiency of your FPGA implementation. Similarly, you can use configuration options and processor-specific optimizations provided with Embedded Coder to improve MCU and DSP execution performance on ARM Cortex-A9 cores. For NEON™-optimized code for DSP filters, you can use the ARM Cortex-A Ne10 Library Support from DSP System Toolbox.
Using Embedded Coder and HDL Coder support packages for Zynq or for Intel SoCs, you integrate generated C/C++ and HDL code into your hardware-software codesign implementation, use Xilinx or Intel implementation tools for synthesis and place and route, and target your selected SoC. Fully automated workflows are available for supported Zynq boards and Intel SoC boards, and address applications such as motor control, video/image processing, and software-defined radio.
Simulink Real-Time lets you leverage powerful FPGA hardware within Speedgoat target computers for specialized reconfigurable I/O or algorithm acceleration for parts of your real-time application. Some of the reconfigurable FPGA I/O modules that are available from Speedgoat include Virtex®-II, Spartan®-6, Virtex-6, and Kintex®-7 from Xilinx.
Using Simulink Real-Time with Simulink Coder™ and HDL Coder, you can automatically generate C/C++ and HDL code to create a Simulink Real-Time application. Using Simulink Coder, you generate and compile C/C++ code for your software subsystem.
To use the FPGA I/O module to accelerate parts of your real-time application, you can use Simulink Real-Time and HDL Coder. With the concurrent execution capability of Simulink, you can select more than one FPGA I/O modules in the HDL Workflow advisor. This capability helps you to design real-time applications that can run on both the Speedgoat real-time target computer and the plugged-in FPGA I/O modules. To automate hardware implementation, HDL Coder provides HDL Workflow Advisor.