捕获温度传感器数据从Xilinx FPGA板使用FPGA数据捕获
这个例子展示了如何使用FPGA数据获取与现有HDL设计捕捉FPGA内部通过JTAG或以太网连接信号。从现有的FPGA设计实现Xilinx®XADC IP读取芯片上的温度传感器的数据。XADC IP暴露一个动态重新配置端口(DRP)接口读取和写入内部寄存器。这个FPGA设计包含逻辑读取的温度传感器注册XADC IP。获得温度读数进行进一步分析,使用FPGA数据捕获功能读取原始传感器数据到MATLAB®工作区。然后,MATLAB将原始温度数据转换成摄氏度。
需求和先决条件
MATLAB
高密度脂蛋白校验™
高密度脂蛋白校验支持包Xi金宝applinx FPGA板
定点设计师™
Xilinx Vivado®设计套件,支持版本中列出金宝app金宝appEDA工具和硬件支持
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位计数器
。的温度
信号是注册的阅读从XADC 0 x00,存储转换原始温度传感器。它有16位,但只有12位最重要的比特(位元)是原始温度传感器读数。最后一个信号计数器
是一个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_enable (1 'b1) .ready_to_capture(),均(do_out) .counter(计数器(7:0)));
保存文件你修改、编译修改的FPGA设计,并创建一个FPGA编程文件。
如果您使用的是ZedBoard,在MATLAB中执行这个命令。
系统(“vivado模式批源data_capture_xadc_zedboard。tcl &’)
如果您使用的是VC707,在MATLAB中执行这个命令。
系统(“vivado模式批源data_capture_xadc_vc707。tcl &’)
上述Tcl脚本包含在本例中执行这些步骤。
1。创建一个新的Vivado项目。
2。添加示例HDL文件和生成的FPGA数据捕获HDL文件到项目。
3所示。编制设计。
4所示。FPGA程序。
等到Vivado过程成功完成在下一步。这个过程大约需要5到10分钟。
以太网连接
1。创建一个Vivado项目在MATLAB KC705董事会通过执行这个命令。这个命令运行大约需要一分钟。当执行完成后,Vivado项目命名data_capture_xadc_kc705.xpr
出现在你的当前目录。
系统(“vivado模式批源create_project_kc705。tcl &’)
2。打开生成Vivado项目在GUI模式中通过双击项目在MATLAB文件浏览器或执行这个命令。
系统(“vivado data_capture_xadc_kc705。xpr &’)
3所示。导航到hdlsrc
文件夹通过执行这个命令在Vivado Tcl控制台。
cd。/ hdlsrc
4所示。插入以太网MAC IP和FPGA数据捕获中心IP到Vivado项目通过执行这个命令在Vivado Tcl控制台。的FPGA数据捕捉组件发生器工具生成的insertEthernet.tcl
脚本。
源。/ insertEthernet.tcl
5。完成设计通过连接IPs Vivado项目,编译设计,FPGA程序通过执行这个命令在Vivado Tcl控制台。
源. . / ethernet_data_capture_xadc_kc705.tcl
6。这图显示了在Vivado框图。
等到Vivado过程成功完成在下一步。这个过程大约需要5到10分钟。
捕获数据
导航到FPGA的目录数据捕捉组件是在MATLAB生成的。
cdhdlsrc
启动FPGA数据捕获工具。这个工具是为你定制数据捕获信号。
launchDataCaptureApp
数据捕获点击开始捕获数据。这个动作捕获数据的请求一个缓冲FPGA。默认触发设置立即捕获,而不必等待触发器条件。
捕获的数据保存到一个结构,dataCaptureOut
在MATLAB工作区。如果你有DSP系统工具箱™软件,获取的数据也显示为信号的波形逻辑分析仪工具。
在原始格式捕获的温度传感器数据。传感器数据表提供的公式将原始格式数据转换为摄氏单位。计算和报告的平均温度在所有的样品回来。
CelsiusTemp =(双(dataCaptureOut.temperature)) / (2 ^ 4) * 503.975/4096 - 273.15;sprintf (“FPGA温度% fC \ n”,意味着(CelsiusTemp))
狭窄的范围使用触发数据捕获
捕捉到FPGA的数据在一个特定的事件,您可以配置触发的条件FPGA数据捕获应用。例如,捕获温度数据只有在一个计数器达到一定值。
选择数量的触发阶段作为1
。在触发第一阶段部分中,选择信号作为计数器
。通过单击启用该触发信号+按钮。选择相应的触发条件值(价值)10
。触发模式自动变化在触发。这种变化对FPGA等待触发条件之前捕获并返回数据。这个图显示了这些工具设置。
点击捕获数据一次。这次,捕获的数据捕获IP返回1024个样本,当它检测到柜台= 10。
捕获的数据中的特定部分的FPGA触发值,不管其他,您可以配置与bit-masked值触发条件。
例如,捕捉到的温度数据只有当计数器的第七位是1,设置触发条件值(价值)0 bx1xxxxxx
如这个图所示。
点击捕获数据一次。数据捕获IP触发器捕获计数器值的温度数据(64、127)和范围(192、255)。
捕捉多次出现的事件
捕捉到FPGA的重复事件,配置捕获的窗口数量在FPGA数据捕获工具。
例如,捕捉八个不同时段的温度数据,选择捕获的窗口数量作为8
。这个图展示了更新后的工具设置。
点击捕获数据。数据捕获IP返回八windows的128个样本,这相当于1024年总样本的深度。
窗口深度=样本深度/数量的捕获窗户;
的逻辑分析仪工具显示了这个结果八事件的触发,每128个样本的温度记录。
的信号捕获窗口
和触发位置
分别显示对应的窗口数量和触发位置。
在多个触发器捕获数据阶段
这个场景解释了如何捕捉数据通过提供一系列的触发条件在多个触发阶段。对于该操作,您必须选择数量的触发阶段值大于1FPGA数据捕获工具。
例如,捕捉到一个温度数据当计数器值达到从0到5 5时钟周期:
1。选择数量的触发阶段作为2
。
2。在触发第一阶段部分中,选择信号作为计数器
。通过单击启用该触发信号+按钮。选择相应的触发条件值(价值)为0。
3所示。在触发第二阶段部分中,选择信号作为计数器
。通过单击启用该触发信号+按钮。选择相应的触发条件值(价值),5
。选择触发时间并设置它5
。
这个图展示了更新后的工具设置。
点击捕获数据。数据捕获IP捕获1024个样本当它检测到触发条件触发阶段2 5个时钟周期内,之前触发条件触发阶段1中检测到。