使用FPGA Data Capture从Xilinx FPGA板上捕获温度传感器数据
这个示例展示了如何将FPGA数据捕获与现有HDL设计结合使用,通过JTAG或以太网连接捕获FPGA内部信号。从现有的FPGA设计开始,该设计实现了Xilinx®XADC IP来读取片上温度传感器数据。XADC IP为读写内部寄存器公开了一个动态重新配置端口(DRP)接口。该FPGA设计包含从XADC IP读取温度传感器寄存器的逻辑。为了获得进一步分析的温度读数,使用FPGA数据捕获功能将原始传感器数据读取到MATLAB®工作空间。然后,MATLAB将原始温度数据转换为摄氏度。
要求和前提条件
MATLAB
高密度脂蛋白校验™
用于Xilinx FPGA金宝app板的HDL验证器支持包
定点设计师™
Xilinx Vivado®设计套件,支持的版本列在金宝app金宝app支持EDA工具和硬件
用于JTAG连接:ZedBoard™或Xilinx Virtex®-7 VC707开发板
以太网连接:Xilinx Virtex-7 KC705开发板
JTAG电缆和/或以太网电缆
准备示例资源
设置Xilinx Vivado设计套件。本例假设Xilinx Vivado可执行文件位于该文件中C: \ Xilinx \ Vivado \ 2020.2 \ bin \ vivado.bat
.如果可执行文件的位置不同,请使用您的路径。
hdlsetuptoolpath (“ToolName”,“Xilinx Vivado”,“路径”,...“C: \ Xilinx \ Vivado \ 2020.2 \ bin \ vivado.bat ');
组建FPGA开发板
1.确认电源开关处于关闭状态。
2.将交流电源线连接到电源插头上,并将电源适配器线缆插入FPGA开发板。
3.使用JTAG下载线连接FPGA开发板与上位机。
4.使用交叉网线将FPGA开发板上的以太网连接器直接连接到主机上的以太网适配器。
5.打开FPGA板的电源开关。
生成FPGA数据采集组件
启动FPGA数据捕获组件生成器在MATLAB中执行该命令。
generateFPGADataCaptureIP
这个示例监视来自现有的用于温度传感器系统的HDL代码的两个信号:16位温度
8位计数器
.的温度
信号是寄存器0x00的读数从XADC,它存储转换的原始温度传感器。它有16位,但只有12位最有效位(msb)是原始温度传感器的读数。最后一个信号计数器
是一个8位自由运行计数器。要将数据捕获组件配置为通过JTAG或以太网连接操作这两个信号,请执行以下步骤。
1.添加一行到港口表。添加按钮一次。
2.说出第一个信号温度
第二个信号是计数器
.
3.将两个信号的位宽分别更改为16和8。
4.选择FPGA供应商作为赛灵思公司
.
5.选择生成的IP语言作为Verilog
.
6.选择样本深度作为1024
.这是每次检测到触发器时,数据捕获工具返回给MATLAB的每个信号的样本数量。
7.选择最大触发级作为2
.此值是在数据捕获期间可以添加的最大触发阶段数,以提供多个触发条件。
8.选择连接类型作为这些选项之一。
JTAG
—通过JTAG连接捕获数据
以太网
—通过以太网连接捕获数据
9.仅以太网连接:设置IP地址来192.168.0.2
而且端口地址来50101
.选择接口类型作为GMII
.这是目标FPGA开发板的以太网接口类型。
该图显示了这些工具设置。
单击,生成FPGA数据采集组件生成.一个报告显示生成的结果。
集成FPGA数据捕获HDL IP
您必须将生成的HDL IP核包含到示例FPGA设计中。您可以从生成的报告中复制模块实例代码。在本例中,我们将生成的HDL IP与来自XADC IP的温度传感器输出和一个8位自由运行计数器连接起来。
对于JTAG连接
如果您正在使用ZedBoard,请打开top.v
此示例提供的文件。如果您正在使用VC707,请打开top_vc707.v
此示例提供的文件。取消注释此代码。
datacapture情况(.clk(clk), .clk_enable(1'b1), .ready_to_capture(), .temperature(do_out), .counter(counter[7:0]));
保存修改后的文件,编译修改后的FPGA设计,创建FPGA编程文件。
如果您正在使用ZedBoard,请在MATLAB中执行此命令。
系统('vivado -mode batch -source data_capture_xadc_zedboard. 'tcl &’)
如果您正在使用VC707,请在MATLAB中执行此命令。
系统(vivado -mode batch -source data_capture_xadc_vc707。tcl &’)
本例中包含的上述Tcl脚本执行这些步骤。
1.创建一个新的Vivado项目。
2.将示例HDL文件和生成的FPGA数据捕获HDL文件添加到项目中。
3.编译设计。
4.FPGA编程。
请等待Vivado进程成功完成后再执行下一步。这个过程大约需要5 ~ 10分钟。
以太网连接
1.通过在MATLAB中执行此命令创建KC705板的Vivado项目。执行该命令大约需要1分钟。当执行完成时,一个名为Vivado的项目data_capture_xadc_kc705.xpr
显示在当前目录中。
系统('vivado -mode batch -source create_project_kc705。tcl &’)
2.通过在文件浏览器中双击项目或在MATLAB中执行此命令,以GUI模式打开生成的Vivado项目。
系统(“vivado data_capture_xadc_kc705。xpr &’)
3.导航到hdlsrc
通过在Vivado Tcl控制台中执行此命令来打开文件夹。
cd。/ hdlsrc
4.在Vivado Tcl控制台中执行此命令,将Ethernet MAC Hub IP和FPGA数据捕获IP插入到Vivado项目中。的FPGA数据捕获组件生成器工具生成insertEthernet.tcl
脚本。
源。/ insertEthernet.tcl
5.在Vivado项目中通过连接ip完成设计,在Vivado Tcl控制台执行该命令完成设计编译,并对FPGA进行编程。
源. . / ethernet_data_capture_xadc_kc705.tcl
6.这个图显示了Vivado中的框图。
请等待Vivado进程成功完成后再执行下一步。这个过程大约需要5 ~ 10分钟。
捕获数据
导航到MATLAB中生成FPGA数据捕获组件的目录。
cdhdlsrc
启动FPGA数据采集工具。此工具是为您的数据捕获信号定制的。
launchDataCaptureApp
要开始数据捕获,单击捕获数据.该操作请求从FPGA捕获数据的一个缓冲区。默认的触发设置是立即捕获,而不等待触发条件。
捕获的数据被保存到一个结构中,dataCaptureOut
,在MATLAB工作空间中。如果您有DSP系统工具箱™软件,捕获的数据也显示为信号波形逻辑分析仪工具。
采集到的温度传感器数据为原始数据。传感器数据表给出了将原始格式数据转换为摄氏度单位的公式。计算并报告所有返回样本的平均温度。
CelsiusTemp = (double(dataCaptureOut.temperature))/(2^4)*503.975/4096 - 273.15;sprintf (' FPGA温度为%fC\n',意味着(CelsiusTemp))
使用触发器缩小数据捕获范围
控件中的触发条件可从FPGA捕获围绕特定事件的数据FPGA数据采集例如,只有在计数器达到某一数值后才能捕获温度数据。
选择触发级数作为1
.在触发阶段1部分中,选择信号作为计数器
.按钮启用此触发信号+按钮。选择相应的触发条件值(价值)10
.触发模式自动变为在触发.这个变化告诉FPGA在捕获和返回数据之前等待触发条件。该图显示了这些工具设置。
点击捕获数据一次。这一次,数据捕获IP返回1024个样本,当它检测到计数器等于10时捕获。
为了从FPGA捕获触发值中特定位的数据,而不考虑其他位,您可以使用位掩码值配置触发条件。
例如,为了仅在计数器的第7位为1时捕获温度数据,可以设置触发条件值(价值)0 bx1xxxxxx
如图所示。
点击捕获数据一次。数据捕获IP触发捕获范围为[64,127]和[192,255]的计数器值的温度数据。
捕获事件的多次发生
若要从FPGA捕获循环事件,请配置捕获窗口的数量在FPGA数据采集工具。
例如,要捕获八个不同时隙的温度数据,请选择捕获窗口的数量作为8
.该图显示了更新后的工具设置。
点击捕获数据.数据捕获IP返回8个窗口,每个窗口有128个样本,总共是1024个样本深度。
窗口深度=样本深度/数量的捕获窗户;
的逻辑分析仪工具显示该结果为触发八次,每次记录128个样本的温度。
的信号捕获窗口
而且触发位置
分别指示相应的窗口号和触发器位置。
在多个触发阶段捕获数据
这个场景解释了如何通过在多个触发阶段中提供一系列触发条件来捕获数据。对于此操作,您必须进行选择触发级数类型中大于1的值FPGA数据采集工具。
例如,当计数器值在5个时钟周期内从0到5时,捕获温度数据:
1.选择触发级数作为2
.
2.在触发阶段1部分中,选择信号作为计数器
.按钮启用此触发信号+按钮。选择相应的触发条件值(价值)为0。
3.在触发阶段2部分中,选择信号作为计数器
.按钮启用此触发信号+按钮。选择相应的触发条件值(价值),5
.选择触发超时并设置为5
.
该图显示了更新后的工具设置。
点击捕获数据.数据捕获IP在5个时钟周期内检测到触发阶段2中的触发条件时捕获1024个样本,在此之前检测到触发阶段1中的触发条件。