Program Target FPGA Boards or SoC Devices - MATLAB & Simulink (original) (raw)

To configure or program the connected target SoC device or FPGA board, use theIP Core Generation workflow in the HDL Workflow Advisor.

How to Program Target Device

Using the Workflow Advisor UI

  1. Open the HDL Workflow Advisor. Right-click the DUT Subsystem that contains the algorithm to be deployed on the target FPGA, and select > .
  2. In the Set Target Device and Synthesis Tool task, specify IP Core Generation as the Target workflow, and specify a Target platform other than the Generic Xilinx Platform or Generic Altera Platform.
  3. Right-click the Program Target Device task and select Run to Selected Task.
  4. In the Program Target Device task, specify theProgramming method, and run this task.

To learn more about the HDL Workflow Advisor, see Getting Started with the HDL Workflow Advisor.

Using the Workflow Advisor Script

To program the target device at the command line, after you specify the target workflow and target platform in the Set Target Device and Synthesis Tool task, export the HDL Workflow Advisor settings to a script. In the HDL Workflow Advisor window, select > . The script creates and configures anhdlcoder.WorkflowConfig object that is denoted byhWC.

Before you run the script, you can specify how to program the target hardware by using the ProgrammingMethod property of theWorkflowConfig object. This code snippet shows an example script that is exported from the HDL Workflow Advisor when you use the defaultDownload Programming method. To run the Program Target Device task, customize this script by setting theRunTaskProgramTargetDevice attribute of theWorkflowConfig object to true.

% This script was generated using the following parameter values:

% ...

% Set properties related to 'RunTaskProgramTargetDevice' Task hWC.RunTaskProgramTargetDevice = true; hWC.ProgrammingMethod = hdlcoder.ProgrammingMethod.Download;

% Validate the Workflow Configuration Object hWC.validate;

%% Run the workflow hdlcoder.runWorkflow('hdlcoder_led_blinking/led_counter', hWC);

After you run the Build FPGA Bitstream task, the Workflow Advisor provides you a link to generate a Workflow script that programs the target device without rerunning the previous tasks in the Workflow Advisor.

HDL Workflow Advisor Log Window displaying the Synthesis Tool Log after the 'Build FPGA Bitstream' Task is run.

Click the link to open the script in the MATLAB® Editor. This code snippet shows an example script that is generated by the HDL Workflow Advisor. If close the HDL Workflow Advisor, you can run the script to program the target hardware without running other workflow tasks.

% Load the Model

% ...

% Set Workflow tasks to run hWC.RunTaskGenerateRTLCodeAndIPCore = false; hWC.RunTaskCreateProject = false; hWC.RunTaskGenerateSoftwareInterface = false; hWC.RunTaskBuildFPGABitstream = false; hWC.RunTaskProgramTargetDevice = true;

% Set properties related to 'RunTaskProgramTargetDevice' Task hWC.ProgrammingMethod = hdlcoder.ProgrammingMethod.Download;

% Validate the Workflow Configuration Object hWC.validate;

To learn more about the script-based workflow, see Run HDL Workflow with a Script.

Programming Methods

Download

If you use the reference designs for Zynq® and Intel® SoC hardware platforms, the code generator usesDownload as the default Programming method.

When you use Download as the Programming method and run the Program Target Device task, HDL Coder™ copies the generated FPGA bitstream, Linux® devicetree, and system initialization scripts to the SD card on the target board, and then keeps the bitstream on the SD card persistently. To use this programming method, you do not require an Embedded Coder® license. You can create an SSH object by specifying theIP Address, SSH Username, andSSH Password. HDL Coder uses the SSH object to copy the bitstream to the SD card and reprogram the board.

It is recommended that you use the Download method, because this method programs the FPGA bitstream and loads the corresponding Linux devicetree before booting the Linux system. Therefore, the Download method is more robust and does not result in a kernel panic or kernel hang on boot up. During the Linux reboot, the FPGA bitstream is reprogrammed from the SD card automatically. To specify Download as theProgramming method when you run the workflow using the Workflow Advisor script, before you run the script, make sure that theProgrammingMethod property of the WorkflowConfig object, hWC, is set toDownload.

hWC.ProgrammingMethod = hdlcoder.ProgrammingMethod.Download;

JTAG

When you specify JTAG as the Programming method and run the Program Target Device task, HDL Coder uses a JTAG cable to program the target SoC device. Use this method to program Intel and Xilinx® SoC devices and standalone FPGA boards.

For programming SoC devices, it is recommended that you use theDownload method. The JTAG mode does not involve the ARM® processor and programs the onboard FPGA directly. This mode does not update the Linux devicetree, and can crash the Linux system or result in a kernel panic when the bitstream does not match the devicetree. To avoid this situation, use theDownload method to program the SoC device.

The standalone Intel and Xilinx FPGA boards do not have an embedded ARM processor. JTAG is the default method that you use to program the FPGA boards.

To specify JTAG as the Programming method when you run the workflow using the Workflow Advisor script, before you run the script, change theProgrammingMethod property of the WorkflowConfig object, hWC, toJTAG.

hWC.ProgrammingMethod = hdlcoder.ProgrammingMethod.JTAG;

Custom

To program the target device, you can specify a custom programming method when you create your own custom reference design. Use theCallbackCustomProgrammingMethod of thehdlcoder.ReferenceDesign class to register a function handle for the callback function that gets executed when running the Program Target Device task. To define your callback function, create a file that defines a MATLAB function and add the file to your MATLAB path.

This example code snippet shows a reference design definition file that uses a custom programming method. To learn more, see CallbackCustomProgrammingMethod.

unction hRD = plugin_rd() % Reference design definition

% ...

% Construct reference design object hRD = hdlcoder.ReferenceDesign('SynthesisTool', 'Xilinx Vivado');

hRD.ReferenceDesignName = 'Parameter Callback Custom'; hRD.BoardName = 'ZedBoard';

% Tool information hRD.SupportedToolVersion = {'2020.2'};

% ...

hRD.CallbackCustomProgrammingMethod = @my_reference_design.callback_CustomProgrammingMethod;

See Also

Topics