主要内容

hdlverifier。FPGADataReader

从现场FPGA捕获数据MATLAB工作空间

描述

hdlverifier。FPGADataReader系统对象™与运行在FPGA板上的生成HDL IP核通信,以捕获来自FPGA的信号到MATLAB®

hdlverifier。FPGADataReader不能直接创建系统对象。要使用它,运行FPGA数据捕获组件生成器并生成您自己的定制FPGADataReader系统对象。您可以直接使用生成的对象或使用包装器工具,FPGA数据采集,设置触发条件、捕获条件和数据类型,进行数据捕获。

在创建System对象之前,必须先生成定制的数据捕获组件。您还必须将生成的IP代码集成到项目中,并将其部署到FPGA上。对象通过JTAG线缆与FPGA通信。确认单板和主机之间的JTAG线缆已经连接。

有关工作流概述,请参见数据采集流程

请注意

或者,不使用一步方法来执行System对象定义的操作,则可以使用参数调用该对象,就像调用函数一样。例如,Y = step(obj,x)而且Y = obj(x)请执行相同的操作。

创建

直流= mydc创建一个自定义对象,直流,它从FPGA上运行的设计中捕获数据。mydc中指定的组件名称是否为FPGA数据捕获组件生成器工具。

属性

全部展开

如果启用了触发条件,但HDL IP核没有检测到该条件,则数据捕获请求在指定的秒数后超时。如果数据捕获被中止,则没有数据返回给MATLAB。

当您使用该工具进行数据捕获时,此属性将被忽略。使用停止单击弹出窗口上的按钮,以使用该工具中止捕获。

指定要捕获的递归数。该值必须是2的幂,且不能大于样本深度.在指定示例深度时,请考虑在读取数据时计划配置的窗口数量,因为它们共同影响每个捕获窗口的窗口深度。的窗口深度样本深度除以捕获窗口的数量.指定样本深度FPGA数据捕获组件生成器工具。

例如:如果样本深度4096而且捕获窗口的数量4,则每个捕获窗口的窗口深度为1024

指定触发阶段的数量。取值范围为1 ~的整数,在那里最大触发级参数。FPGA数据捕获组件生成器工具。当您指定最大触发级参数时,考虑您计划在其中配置触发器条件以捕获数据的最大触发阶段数。

例如,如果最大触发级4,然后NumTriggerStages可以123.,或4

默认情况下,检测到触发器时的时钟周期是捕获缓冲区的第一个样本。您可以更改触发器检测周期在捕获缓冲区中的相对位置。非默认触发位置意味着在触发发生之前捕获一些样本。可设置为0 ~ 0之间的整数窗口深度1、包容。当触发位置等于窗口深度-1,最后一个样本对应触发器发生时的周期。有关更多信息,请参见触发器

将此属性设置为真正的在HDL IP核中启用捕获条件逻辑。启用捕获条件逻辑以使用捕获条件来控制从FPGA捕获哪些数据。HDL IP核在每个时钟周期评估捕获条件,只捕获满足捕获条件的数据。有关捕获条件的更多信息,请参见捕获的条件

依赖关系

若要启用此参数,请在FPGA数据捕获组件生成器工具,选择包含捕获条件逻辑

指定捕获模式为以下选项之一:

  • “阻止”—数据捕获对象在检索捕获数据时阻塞MATLAB。在这种捕获模式下,JTAG资源一次被分配给FPGA数据捕获或AXI管理器。

  • 非阻塞的—数据抓取对象在抓取数据时不阻塞MATLAB。在这种捕获模式下,可以同时使用FPGA数据捕获和AXI管理器。

如果您的开发板有多个FPGA或多个JTAG连接,则数据捕获软件无法检测到您的FPGA在JTAG链中的位置。通过设置高级参数,定位数据捕获IP核所在的FPGA。

高级电路板设置

用于数据捕获的JTAG电缆的名称,指定为字符向量。当单板连接两根相同类型的JTAG电缆时,使用此参数

对象的功能

checkStatus 在非阻塞模式下检查FPGA数据采集的当前状态
克隆 创建hdlverifier。FPGADataReader系统对象具有相同的属性值
collectData 采集数据从FPGA无阻塞采集到主机
displayCaptureCondition 显示整体捕获情况
displayDataTypes 显示所有捕获信号的数据类型
displayTriggerCondition 显示整体触发条件
isLocked 锁定状态
launchApp 打开FPGA数据捕获应用程序
释放 解除JTAG接口的控制
setCaptureCondition 为每个信号值配置比较
setCaptureConditionCombinationOperator 配置将单个信号值比较结合到整体捕获条件的运算符
setCaptureConditionComparisonOperator 配置在捕获条件下比较单个信号值的运算符
setDataType 为从信号捕获的数据配置数据类型
setNumberofTriggerStages 配置捕获数据的触发级数
setRunImmediateFlag 将数据捕获配置为在没有任何触发条件的情况下立即运行
setTriggerCombinationOperator 配置将单个信号值比较组合为整体触发条件的运算符
setTriggerComparisonOperator 配置在触发条件下比较单个信号值的运算符
setTriggerCondition 配置每个信号值比较
setTriggerTimeOut 配置触发阶段发生触发条件的FDC IP核时钟周期的最大个数
一步 从FPGA上运行的HDL IP核捕获一个数据缓冲区
停止 非阻塞模式下,根据当前状态停止FPGA数据捕获执行

例子

全部折叠

方法的使用hdlverifier。FPGADataReader系统对象™用于通过JTAG连接从FPGA上运行的设计中捕获数据。的hdlverifier。FPGADataReaderSystem对象提供了一种编程方式来配置和捕获数据。生成FPGA数据读取器系统对象FPGA数据捕获组件生成器工具。然后直接使用生成的System对象设置数据类型和触发条件并捕获数据。

生成hdlverifier。FPGADataReader系统对象

要生成自定义的hdlverifier。FPGADataReader系统对象,打开FPGA数据捕获组件生成器在MATLAB®命令提示符中输入以下命令,即可使用MATLAB工具。要使用此工具,必须有现有的HDL设计和FPGA项目。

generateFPGADataCaptureIP;

这个例子使用了一个生成的对象,mydc,定义了两个用于数据捕获的信号。信号一个1位是信号吗B是8位。这两种信号也可用于触发条件。样本深度为4096个样本。配置hdlverifier。FPGADataReader系统对象要对这两个信号进行操作,请遵循以下步骤。

  1. 添加一行到港口表。添加按钮一次。

  2. 命名第一个信号一个第二个信号B

  3. 位宽这两个信号的1而且8,分别。

  4. 指定生成的IP名称作为mydc

  5. FPGA供应商阿尔特拉

  6. 样本深度4096

  7. 最大触发级2

该图显示了这些工具设置。

要生成hdlverifier。FPGADataReader系统对象,单击生成.一个报告显示生成的结果。将生成的IP代码集成到现有的FPGA项目中,并将其部署到FPGA。System对象通过JTAG电缆与FPGA通信。确保JTAG线缆连接单板和主机。

的目录hdlverifier。FPGADataReader生成系统对象。

cdhdlsrc

使用生成的System对象创建数据捕获对象。

captureData = mydc
captureData =
Mydc属性:
Connection: 'JTAG' IsConditionalCapture: 0 TriggerPosition: 0 NumCaptureWindows: 1 NumTriggerStages: 2 TimeOut: 10 EnableCaptureCtrl: 0 CaptureMode: 'blocking' JTAGCableName: 'auto' MaxNumTriggerStages: 2

立即捕获数据

创建数据捕获对象。默认的触发条件是立即触发。生成对象的默认配置不启用任何信号作为整体触发器条件的一部分。

captureData = mydc;

显示捕获信号的数据类型。8位信号的默认数据类型是uint8

displayDataTypes (captureData);
信号的名字数据类型Capture_Window: uint32 Trigger_Position: boolean A: boolean B: uint8

调用对象。数据立即从FPGA捕获。

[Capture_Window,Trigger_Position,dataOut] = captureData();

捕获的数据作为结构返回,该结构包含用于Capture_Window信号,一个字段Trigger_Position信号,以及数据捕获对象捕获的每个信号的字段。的dataOut结构包含字段一个,这是一个4096的向量逻辑值和字段B,这是一个4096的向量uint8值。

捕获触发事件的数据

若要调试靠近特定事件的信号值,请设置触发条件。触发条件可以由一个或多个信号的值比较组成。您只能将这些值比较与一种类型的逻辑运算符(或)组合在一起操作符。

定义一个触发条件,当FPGA检测到高值时捕获数据一个同时发出信号B大于7。

captureData = mydc;setTriggerCondition (captureData“一个”,真的,“高”);setTriggerCondition (captureData“B”真正的7);setTriggerComparisonOperator (captureData“B”“>”);

显示整体触发条件。

displayTriggerCondition (captureData);
触发条件是:= =高B > 7

调用对象以捕获关于指定触发器事件的数据。

[~,~,dataOut] = captureData();

定义一个触发条件,当FPGA检测到高值时捕获数据一个同时作为信号的值B0 xax.在信号B,触发条件检查提供的最左边4位一个并忽略最右边的4位XX指示函数要忽略的位)。

captureData = mydc;setTriggerCondition (captureData“一个”,真的,“高”);setTriggerCondition (captureData“B”,真的,“0 xax”);

显示整体触发条件。

displayTriggerCondition (captureData);
触发条件是:= =高xax B = = 0

调用对象以捕获关于指定触发器事件的数据。

[~,~,dataOut] = captureData();

dataOut是HDL IP核从FPGA上的信号检测到触发条件后返回的。dataOut包含从检测到触发条件时的周期开始的样本。

捕获多个触发事件的数据

定义触发条件,当FPGA连续检测到两个触发条件时捕获数据。

  • 触发条件1 -高值开启一个同时发出信号B等于7

  • 触发条件2 -高值开启一个同时发出信号B大于15

captureData = mydc;setNumberofTriggerStages (captureData 2);setTriggerCondition (captureData“一个”,真的,“高”);setTriggerCondition (captureData“B”真正的7);setTriggerCondition (captureData“一个”,真的,“高”2);setTriggerCondition (captureData“B”真的,15日,2);setTriggerComparisonOperator (captureData“B”“>”2);

显示触发条件。缺省情况下,该函数在触发阶段1中显示触发条件。

displayTriggerCondition (captureData);
触发条件是:= =高B = = 7

在触发阶段2中显示触发条件。

displayTriggerCondition (captureData 2);
触发条件是:= =高B > 15

调用对象以捕获关于指定触发器事件的数据。

[~,~,dataOut] = captureData();

dataOut当HDL IP核检测到触发阶段1设置的触发条件后,检测到触发阶段2设置的触发条件,满足设置的顺序时返回。

捕获定点数据

8位信号的默认数据类型是uint8,但是在HDL设计中,您可以使用一个定点数来表示信号。设置捕获数据的数据类型,将其转换为定点表示。

captureData = mydc;setDataType (captureData“B”6) numerictype(8日);

显示捕获信号的数据类型。

displayDataTypes (captureData);
信号的名字数据类型Capture_Window: uint32 Trigger_Position: boolean A: boolean B: numerictype(1,8,6)

调用对象以捕获关于指定触发器事件的数据。

[~,~,dataOut] = captureData();

dataOut结构、字段一个向量是4096吗逻辑值和字段B是一个由4096个带符号的8位定点值组成的向量,其中有6个小数位。

版本历史

在R2017a中引入