ZYNQ PL与PS联合调试:SDK协同VIVADO ILA 、MARK DEBUG进行debug调试的保姆级教程


一、引言

本次调试使用的主要硬件是ZYNQ7035+AD9268。
Vivado硬件调试手段有:ILA(集成逻辑分析器Integrated Logic Analyzer)、VIO(虚拟I/O Virtual Input/Output)、Jtag-to-AXI等,本次调试使用了ILA。ILA的引入方式有两种,一种是添加ILA_IP,一种是标记Debug mark。Debug mark又可以分为在Verilog代码中添加调试端口和在Block Design中添加debug端口。
我使用了ILA抓取ADC输入的16位并行数据,用Debug mark标记自定义IP核的AXIS总线输出数据,同时在这个自定义IP内部使用了

(* MARK_DEBUG="true" *)input[15:0]                 adc_data

对ADC在DCO时钟下的PL内部采样数据进行了监控。
系统的Block Design如下图 :
在这里插入图片描述

二、调试步骤

1.添加调试端口

在block design设计完系统硬件后,点击想要抓取波形的网络,右击选择mark debug,此时网络两端会显示一个Debug标识如下图:
在这里插入图片描述
另外一种方法:直接添加ILA ip,设置好抓取波形的个数与每组波形的位宽,连接自己想要观测的总线,在这里我抓取的波形是一组16位的ADC输入。如下图:
在这里插入图片描述
设置采样点数:
在这里插入图片描述

设置输入位数:
在这里插入图片描述

随后在ZYNQ中开启ILA触发控制通道:将Zynq_TRIGGER_IN_0连接到TRIG_OUT,Zynq_TRIGGER_OUT_0连接到TRIG_IN:
在这里插入图片描述

选择CPU0:
在这里插入图片描述

2.对工程进行综合

对工程进行综合,综合完成后在Set Up Debug中查看综合结果,可以看到下面的debug窗口中有未连接的Debug nets,点击Set up Debug并进行相关配置(主要是时钟域的设定),完成Debug nets的连接。完成后如下图所示:
在这里插入图片描述

为端口设定时钟域:
在这里插入图片描述

设置mark debug调用的ILA的采样个数:
在这里插入图片描述

创建ILA-DEBUG核:
在这里插入图片描述

创建完成后的综合逻辑图:
在这里插入图片描述

3.生成新的XDC约束

保存刚刚的综合工程,此时系统会重新生成约束文件 ,选择OK:
在这里插入图片描述

更新XDC约束文件,打开约束文件进行Reload即可:
在这里插入图片描述

更新后的部分XDC文件(更换检测端口时记得先删除这些约束,否则布线可能不通过):
在这里插入图片描述

然后生成bitstream并将硬件导入SDK,运行SDK。由于需要使用PS端的时钟来接入ILA,所以要在SDK中将比特流进行下载,而不要在vivado中下载比特流。

4.在SDK中新建自己的调试应用程序

参照自己的应用进行程序的编写~

5.进行SDK与PL的联合调试

将程序写入FPGA后在Vivado中连接目标板(可以在SDK切换到Debug界面,进行单步调试),然后回到VIVADO选择Open Target进入硬件调试界面:
在这里插入图片描述

1.ILA的采样设置

window data depth其实就是波形的分辨率,trigger position in window就是数据的触发在波形中显示的起始位置,设置了触发后才会有作用。由于前面设置了最大采样个数为1024,所以这里最多采样1024个数:
在这里插入图片描述

2.触发设置窗口,可以设置触发信号,以及触发方式(上升沿、下降沿)等等:

在这里插入图片描述

若在SDK中的代码执行过程中FPGA有时序变化,且时序是相关的,比如说我的使用DMA进行读操作,当TVALID有上升沿的时候执行,对读目标地址数据。这时候如果设置了触发信号为TVALID,系统的时序显示就会随着TVALID进行动作,且在触发位置处进行改变。
这个功能服务于总线的时序分析。ILA2中检测了AXI总线,我们就可以看到相关时序图。ILA1只是对一个寄存器进行了监视,只能看到它的值的变化而已。如果没有设置触发条件,AXIS总线的输出的TDATA就会为一个静态的定值。

3、状态窗口:显示当前调试状态

在这里插入图片描述

4、调试波形窗口,查看抓取的数据

在这里插入图片描述

参考

Vivado与SDK的联合调试方法-使用ILA

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值