打印
[FPGA]

玩转Zynq连载33——基于Vivado的在线逻辑分析仪板级调试

[复制链接]
555|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
1 概述
         基于Vivado的板级调试介绍,可以参考文档《玩转Zynq-基础篇:基于Vivado的在线板级调试概述.pdf》。这里我们以zstar_ex54工程为例,对FPGA的在线逻辑分析仪使用进行介绍和实战操练。
2 标记探测信号
         在axi_gp_top.v模块中,可以看到AXI GP总线的很多信号前面都有(*mark_debug= "true"*)这个语句,它的作用就是将代码中需要引出进行在线逻辑分析仪观察的信号,就如同一个个探棒一样将信号标记起来。
3 工程编译与Debug信号设置
         工程的代码设计完成,并且标记好需要探测的信号后,点击Synthesis--> Run Synthesis对当前工程执行综合编译。
         完成编译后,打开SynthesizedDesign --> Set Up Debug.
         如图所示,点击Next。
         Netsto Debug界面可以添加或删除设置代码中标记了mark_debug的信号,并对其采样和触发属性做设置。
●  名称(Name)列中显示了在代码中标记了“(*mark_debug = "true"*)”的所有信号。若需要在这里删除或添加信号,可以使用左侧的“+”或“-”符号进行操作。
●  时钟域(Clock Domain)将作为信号采样的同步时钟,默认为信号在逻辑代码中的同步时钟。若需要修改时钟域,可以点击右侧的方波形状符号操作。
●  驱动单元(Drive Cell)显示信号的驱动类型。
●  探针类型(Probe Type)显示信号的采样类型,可以是数据信号(Data)、触发信号(Trigger)或同时作为数据和触发信号(Data andTrigger)。一般我们都设置为Dataand Trigger,在调试过程中,所有信号都可以随意的设置被采样信号和触发信号。
         选中这些带调试信号,点击时钟图标(图示的SelectClock Domain)。
         如图所示,Select Clock Domain页面中选中时钟FCLK_CLK0,点击OK。这就是信号的采样时钟。
         ILACore Options页面中,可以设定探测信号的采样深度、缓存寄存器等级和信号采集触发相关控制选项。完成设置后,点击Next进入下一页面。
●  采样深度(Sample of data depth),用于设置信号的连续采样点数量。当然,这个值越大,采样的数据越多,越利于调试探测,但是这需要更多的FPGA片内RAM的资源消耗,所以这个值的大小取决于实际系统可用的RAM。这里设定32768个点,至少保证能够采样到一帧9600bps的UART接收数据。
●  探测信号经过的寄存器等级(Input pipestates)设定,此选项主要用于确保设计中的关键信号不会因为ILA探测信号的加入而受到影响。对于设计本身时序余量充足的情况,这个值可以设置为0。
         触发和存储设置(Triggerand Storage Settings)中可以使能采集控制(Capturecontrol)和高级触发(Advancedtrigger)。使能采集控制,ILA支持的基本采集控制模式可用。使能高级触发,ILA支持的一些高级触发模式可用。
         完成设定后,点击Next。
         最后是Set up Debug Summary页面,点击Finish完成设定。
         点击Program and Debug à GenerateBitstream重新编译工程,产生下载配置的bit文件。
3 板级调试观察
         在已经下载bit文件,并且elf文件已经在Zstar板子上运行起来以后。回到Vivado中,如图所示,展开Program and Debug --> Open Hardware Manager,点击Open Target,弹出菜单中选择AutoConnect。
         随后弹出如图所示的Hardware Manager界面。
●  1:Hardware窗口,这里将会出现FPGA中所有可以通过JTAG进行调试的选项,例如XADC以及本实例专门增加的在线逻辑分析仪ILA(hw_ila_1)。双击hw_ila_1,将弹出相应的调试界面。
●  2:Setting窗口,这里可以对信号的采样和触发控制进行设置。
●  3:Status窗口,这里显示当前数据采样或触发的状态。
●  4:Trigger Setup窗口,这里可以添加触发信号并编辑触发条件。
●  5:Waveform窗口,这里显示信号触发后的采样波形。
图 Hardware Manager界面
       本实例的Setting窗口设置如图所示。
●  触发模式(Trigger mode)反应的是Set Up Debug里的设定,我们是BASIC_ONLY设置。
●  采样模式(Capture mode)的选项有BASIC和ALWAYS,我们设定ALWAYS。
●  窗口数量(Number of windows)的值可以设定同样的触发条件下,连续多次的触发显示在不同的窗口中。当然了,窗口数量的增加,势必会使得单个窗口的采样深度变小。换句话说,所有窗口采样深度的总和不能大于总的采样深度。
●  单个窗口的数据采样深度(Windowdata depth),最大值等于我们的SetUp Debug里的设定。
●  触发信号在窗口中的位置(Triggerposition in window),这里的值表示当信号触发后,触发信号在显示波形中的位置。
●  刷新率(Refresh rate),刷新率主要是针对连续触发的。
图 Settings窗口
         TriggerSetup窗口用于添加触发信号并设定触发条件。如图所示,在界面左侧点击“+”号后,所有可用的触发信号出现在弹出的列表中。选择uut_axi_gp_top/AXI_GP0_awvalid信号作为触发条件,CompareValue中选择== [B] R,表示触发条件是触发信号为上升沿(Rise)。
图 正在添加信号的Trigger Setup窗口
         如图所示,点击Compare Value列的下拉三角符号,会弹出触发条件设定的对话框。
●  运算符(Operator)中可以选择符号“==”或者“!=”。
●  进制(Radix)中可以设定后面值(Value)的进制,可选项有二进制([B] Binary)、八进制([O] Octal)、十六进制([H]Hexadecimal)、有符号十进制([U]Unsigned Decimal)和无符号十进制([S]Signed Decimal)。
●  值(Value),即运算符后面的取值。可选项有0(逻辑0)、1(逻辑1)、X(任何值)、R(上升沿)、F(下降沿)、B(上升或下降沿)、N(没有变化)。
图 触发条件设置
         如图所示,Waveform窗口显示弹出信号在触发条件满足后的波形。窗口左侧的小图标可以控制探测信号的添加、删减,波形采样的单次运行、连续运行、停止,波形的放大、缩小以及光标线的移动等。点击图示的Run trigger for this ILA core按钮则启动一次触发。
图 Waveform窗口
         如图所示,此时Status一直处于Waiting for Trigger状态,等待触发条件的发生。
图 等待触发状态
         触发条件发生时,如图所示,Status会依次经过Post-Trigger和Full状态并回到Idle状态。
图 触发完成返回Idle状态
         如图所示,Waveform窗口中出现了一连串的AXI GP总线读写的波形。大家可以更具波形对照AXI协议进行分析。
图 触发波形

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

59

主题

60

帖子

2

粉丝