Data Capture Workflow - MATLAB & Simulink (original) (raw)

Use FPGA data capture to observe signals from your design while the design is running on the FPGA. The FPGA data capture feature captures a window of signal data from the FPGA and returns the data to MATLAB® or Simulink® over a JTAG, Ethernet, or USB Ethernet interface.

The data capture IP connects to different IPs in your FPGA design, captures data, and returns it to MATLAB or Simulink.

FPGA data capture over a JTAG connection is available for Intel® and AMD® devices. FPGA data capture over an Ethernet or USB Ethernet connection is available for AMD devices only. For a complete list of supported devices and interfaces, see Supported FPGA Devices for FPGA Verification.

HDL Coder and Existing HDL Design Workflows

You can use one of two workflows to capture data from your FPGA or SoC device and send it to MATLAB or Simulink:

Two workflows for data capture

In both workflows, to capture signals from your design, HDL Verifier generates an IP core that communicates with MATLAB. Use the HDL Coder workflow to automatically integrate the data capture IP core in your design. Otherwise, manually integrate this IP core into your HDL project and deploy it to the FPGA along with the rest of your design. Then, use one of the following methods to capture data.

Key Data Capture Capabilities

At generation time, you can specify the number of data capture IPs to generate, the storage type for captured data, and whether to include trigger input and output ports in the generated data capture IPs. At run-time, you can specify data types for the captured data, the number of windows to capture, trigger conditions that control when to capture the data, and a capture condition that controls which data to capture.

Generate and Integrate Data Capture IP Using HDL Workflow Advisor

When you use the HDL Workflow Advisor tool to generate your HDL design, first mark interesting signals as test points in Simulink. Configure your design using the HDL Workflow Advisor tool to:

Then, run through the remaining steps to generate HDL code for your design and program the FPGA. The data capture IP core is integrated in the generated design. You are now ready to Capture Data.

Configure and Generate IP Core for Existing HDL Design

Before you can capture FPGA data, first specify which signals to capture and how many samples to return. Use the FPGA Data Capture Component Generator to configure these and other settings and to generate the HDL IP core. The IP core contains:

The data capture HDL IP responds to trigger logic and read or write control, captures data based on these logics, and stores data to on-chip memory.

The tool also generates a customized FPGA Data Capture tool, System object, and model that communicate with the FPGA.

Integrate IP into FPGA

For MATLAB to communicate with the FPGA, you must integrate the generated HDL IP core into your FPGA design. If you used the HDL Workflow Advisor tool to generate your data capture IP, this step is automated. In this case, data capture IP operates on a single-clock rate, which is the primary clock of your device under test (DUT). If you did not use theHDL Workflow Advisor tool, follow the instructions in the generation report based on your device family.

Intel Devices

Follow these instructions to integrate the datacapture HDL IP core into your FPGA design that targets an Intel device.

  1. Create a Quartus® project.
  2. Navigate to the hdlsrc folder.
  3. Add the generated HDL files in the hdlsrc folder to your Quartus project. Then, instantiate the HDL IP core, datacapture, in your HDL code. Connect datacapture to the signals selected for data capture and specifying the triggers.
  4. Compile the project and program the FPGA with the new image through a JTAG connection.

AMD Non-Versal Devices

Follow these instructions to integrate the data capture HDL IP core into your FPGA design that targets an AMD non-Versal® device.

  1. Create a Vivado® project.
  2. Follow one of these steps based on your connection type.
    JTAG
    Follow these instructions if you set Connection type toJTAG in the FPGA Data Capture Component Generator tool.
    1. Add the generated data capture IP core and JTAG Debug Hub IP in the specified folder to the user repository of your Vivado project by executing this command in MATLAB. The JTAG Debug Hub IP communicates with MATLAB on the host machine and with the data capture IP in the FPGA design.
      addFPGADataCaptureToVivado("vivadoProjectPath",DataCaptureIPFolder="destinationFolder");
      _`vivadoProjectPath`_ is the name of Vivado project location and_`destinationFolder`_ is the name of the folder that contains the generated data capture IP.
      For example, the following command adds the data capture IP and JTAG Debug Hub IP in the hdlsrc folder to theC:\test_design_zc706\hdl_prj\vivado_ip_prj\vivado_prj.xpr Vivado project.
      addFPGADataCaptureToVivado("C:\test_design_zc706\hdl_prj\vivado_ip_prj\vivado_prj.xpr", ...
      DataCaptureIPFolder="hdlsrc");
    2. Open the Vivado project, then open your block design. Insert the data capture IP and JTAG Debug Hub IP into your block design.
    3. Connect the BSCAN subordinate (BSCAN_S) interface of the data capture IP to the BSCAN manager (BSCAN_M) interface of the JTAG Debug Hub IP.
    4. Connect the dc_active output port of the data capture IP to theactive_s1 input port of the JTAG Debug Hub IP. The JTAG Debug Hub IP controls the data capture IP by using this active signal.
      The Vivado block design shows the BSCAN_S and dc_active ports of the data capture IP connected to the BSCAN_M1 and active_s1 ports of the JTAG Debug Hub IP, respectively.
    5. External memory only — Connect the AXI4 manager (AXI4_M) interface of the data capture IP to the AXI4 subordinate (S_AXI) interface of MIG through AXI Interconnect, as this figure shows.
      The Vivado block design shows the AXI4_M interface of the data capture IP connected to the S_AXI interface of MIG through an AXI Interconnect.
    6. Connect data capture IP to the signals selected for data capture and specifying the triggers.
    7. Complete the block design by connecting the clk andclk_enable input ports of the data capture IP. Additionally, for external memory, connect the AXI4_M_ACLK,AXI4_M_ARESETN, and IPCORE_RESETN input ports of the data capture IP.
    8. External memory only — Make sure that the AXI4_M_ACLK, used by the data capture IP to write data to external DDR memory, has a higher frequency than the clk clock.
      PL Ethernet
      Follow these instructions if you set Connection type toPL Ethernet in the FPGA Data Capture Component Generator tool.
    9. Open the Vivado project.
    10. Navigate to the hdlsrc folder in the Vivado Tcl console.
    11. Create a Vivado block design with the data capture IP and Ethernet MAC Hub IP by executing this command in the Vivado Tcl console.
      source ./insertEthernet.tcl
      The insertEthernet Tcl script generates this block design:
      The Vivado block design shows the data capture IP connections with the Ethernet MAC Hub GMII IP.
    12. Connect the data capture IP to the signals selected for data capture and specifying the triggers.
    13. Complete the block design by connecting the clk andclk_enable input ports of the data capture IP.
      PS Ethernet or USB Ethernet
      Follow these instructions if you set Connection type toPS Ethernet or USB Ethernet in theFPGA Data Capture Component Generator tool.
    14. Add the generated data capture IP in the specified folder to the user repository of your Vivado project by executing this command in MATLAB.
      addFPGADataCaptureToVivado("vivadoProjectPath",DataCaptureIPFolder="destinationFolder");
      _`vivadoProjectPath`_ is the name of Vivado project location and_`destinationFolder`_ is the name of the folder that contains the generated data capture IP.
      For example, the following command adds the data capture IP in thehdlsrc folder to theC:\test_design_zc706\hdl_prj\vivado_ip_prj\vivado_prj.xpr Vivado project.
      addFPGADataCaptureToVivado("C:\test_design_zc706\hdl_prj\vivado_ip_prj\vivado_prj.xpr", ...
      DataCaptureIPFolder="hdlsrc");
    15. Open the Vivado project. Then, open your block design and insert the data capture IP into it.
    16. Connect the subordinate AXI4 interface of the data capture IP to the manager AXI4 interface of the processor.
      The Vivado block design shows the data capture IP connections with the Zynq7 Processing System through an AXI Interconnect.
    17. External memory only — Connect the AXI4 manager (AXI4_M) interface of the data capture IP to the AXI4 subordinate (S_AXI) interface of MIG through AXI Interconnect, as this figure shows.
      The Vivado block design shows the AXI4_M interface of the data capture IP connected to the S_AXI interface of MIG through an AXI Interconnect.
    18. Connect data capture IP to the signals selected for data capture and specifying the triggers.
    19. Complete the block design by connecting the clk,clk_enable, IPCORE_RESETN,AXI4_ACLK, and AXI4_ARESETN input ports of the data capture IP. Additionally, for external memory, connect the AXI4_M_ACLK and AXI4_M_ARESETN input ports of the data capture IP.
    20. External memory only — Make sure that the AXI4_M_ACLK, used by the data capture IP to write data to external DDR memory, has a higher frequency than the clk clock.
  3. JTAG or PL Ethernet only — Compile the project and program the FPGA with the new image through a JTAG or Ethernet connection.
    PS Ethernet or USB Ethernet only — Use the loadBitstream function to load the BIT and DTB files based on your FPGA design. For the steps to generate a device tree blob (DTB) file, follow the instructions in the generation report. For more information about DTB file generation steps, see Generate DTB File.

AMD Versal Devices

Follow these instructions to integrate the data capture HDL IP core into your FPGA design targeted on an AMD Versal device.

Note

FPGA data capture support for Versal devices is available for JTAG connections only.

  1. Open your block design in Vivado.
  2. Navigate to the hdlsrc folder in the Vivado Tcl console.
  3. Insert the data capture IP into your block design and connect the IP to the BSCAN_USER2 interface of the AMD Versal platform CIPS IP by executing this command in the Vivado Tcl console.
    source ./insertVersalFPGADataCaptureIP.tcl
    To enable the BSCAN_USER2 interface, enable the PL BSCAN1 interface in the CIPS IP.
    Vivado block design showing the data capture IP connected to the BSCAN_USER2 interface of the CIPS IP
  4. External memory only — Connect the AXI4 manager (m_dest_axi) interface of the data capture IP to the AXI4 subordinate (S_AXI) interface of the AMD AXI NoC IP, as this figure shows.
    The Vivado block design shows the AXI4_M interface of the data capture IP for external memory connected to the S_AXI interface of the AXI NoC IP.
  5. Connect data capture IP to the signals selected for data capture and specifying the triggers.
  6. Complete the block design by connecting the clk andclk_enable input ports of the data capture IP. Additionally, for external memory, connect the AXI4_M_ACLK, AXI4_M_ARESETN, andIPCORE_RESETN input ports of the data capture IP.
  7. External memory only — Make sure that the AXI4_M_ACLK, used by the data capture IP to write data to external DDR memory, has a higher frequency than theclk clock.
  8. Compile the project and program the FPGA with the new image through a JTAG cable.

Capture Data

The FPGA data capture IP core communicates over the JTAG, Ethernet, or USB cable between your FPGA board and the host computer. Make sure that the required cable is connected. Before capturing data, you can set data types for the captured data, set a trigger condition that specifies when to capture the data, and set a capture condition that specifies the data to be captured. To configure these options and capture data, you can:

Set Base Address of External DDR Memory (for JTAG, PS Ethernet, and USB Ethernet with External Memory Only)

For JTAG, PS Ethernet, and USB Ethernet connections with external memory, set the base address of the external DDR memory. To do this, use the MemoryBaseAddress property of the hdlverifier.FPGADataReader System object before capturing data to MATLAB. Set the External DDR memory base address parameter of the FPGA Data Reader block before capturing data to Simulink.

For example, the following command sets the base address of the DDR memory for thedatacapture1 System object to 80000000.

datacapture1.MemoryBaseAddress = "80000000";

Set Base Address of Data Capture IP and IP Address of Target Device (for PS Ethernet and USB Ethernet Only)

For PS Ethernet and USB Ethernet connections, set the base address of the data capture IP and the IP address of the target device. To do this, use the CaptureBaseAddress and DeviceAddress properties of the hdlverifier.FPGADataReader System object before capturing data to MATLAB. Set the Device IP address and Data Capture IP core base address parameters of the FPGA Data Reader block before capturing data to Simulink.

For example, the following commands set the base address of thedatacapture1 data capture IP to 40000000 and the IP address of the target device to 192.168.5.2.

datacapture1.CaptureBaseAddress = "40000000"; datacapture1.DeviceAddress = "192.168.5.2";

After you capture the data and import it into the MATLAB workspace or Simulink model, you can analyze, verify, and display the data.

See Also

FPGA Data Capture Component Generator | FPGA Data Capture | hdlverifier.FPGADataReader | FPGA Data Reader

Topics