四川住建厅官方网站的网址,宁波网页制作模板,开展农业信息网站建设工作总结,厦门市做网站优化在线逻辑分析仪简介
传统的 FPGA 板级调试是将逻辑分析仪连接到 FPGA 的 IO 引脚上 #xff0c;然后将内部信号引出至 IO 引脚#xff0c;再进行板级调试#xff0c;这种方法的缺点是我们需要一个逻辑分析仪#xff0c;且还要在 PCB 中预留测试点。在线逻辑分析仪克服了以…在线逻辑分析仪简介
传统的 FPGA 板级调试是将逻辑分析仪连接到 FPGA 的 IO 引脚上 然后将内部信号引出至 IO 引脚再进行板级调试这种方法的缺点是我们需要一个逻辑分析仪且还要在 PCB 中预留测试点。在线逻辑分析仪克服了以上所有的缺点其借用了传统逻辑分析仪的理念以及大部分的功能并利用 FPGA 中的逻辑资源将这些功能植入到 FPGA 的设计当中在线逻辑分析仪的应用原理框图如下图所示 其中待测设计Design Under TestDUT就是用户逻辑它和片内的在线逻辑分析仪都位于 FPGA中。在线逻辑分析仪通过一个或多个探针Probe来采集希望被观察的信号然后通过片内的 JTAG 硬核组件将捕获到的数据传送给下载器进而上传到 Vivado 供用户查看。Vivado 也能够按照上述数据路径反向地向 FPGA 中的在线逻辑分析仪传送一些控制信息。 在 Vivado 中在线逻辑分析仪的功能被称为“集成逻辑分析器Integrated Logic AnalyzerILA”它以 IP 核的形式来加入到用户设计中。Vivado 提供了三种具有不同集成层次的插入 ILA 方法
直接在 HDL 代码中例化一个 ILA IP 核也被称为“HDL 实例化调试探针流程”这是集成层次最高的方法。ILA IP 核可以在 IP CatalogIP 目录中找到并对其进行配置以符合所需的调试需求这是最直接的方法但其灵活性也较差。在调试工作完毕之后还需要在 HDL 源代码中删除 ILA IP 核然后重新综合以生成最终的比特流。在 HDL 代码中为要观察的 reg 或 wire 信号添加“mark debug”属性然后通过“Setup Debug”向导来设置各个探针和 ILA IP 核的工作参数工具会根据用户设置的参数自动地生成各个 ILA IP 核这个方法也被称为“使用 Debug 标记创建 ILA 调试环境”。用户设置的调试信息会以 Tcl XDC 调试命令的形式保存到 XDC 约束文件中在实现阶段Vivado 会读取这些 XDC 调试命令并在布局布线时加入这些 ILA IP 核。在调试工作完毕之后用户可以在 HLD 代码中删除之前添加的“Mark Debug”综合属性并且在 XDC 文件中删除调试命令然后再对设计进行重新编译以生成最终的比特流。在综合后的网表中标记要观察的信号然后通过“Setup Debug”向导来设置各个探针和 ILA IP 核的工作参数工具会根据用户设置的参数自动地生成各个 ILA IP 核。这个方法也被称为“网表插入调试探针流程”。在此流程中用户不需要修改 HDL 源代码并且能够单独控制每个 ILA IP 核以及每个探针这样就提供了很大的灵活性。用户设置的调试信息会以 Tcl XDC 调试命令的形式保存到 XDC 约束文件中在实现阶段Vivado 会读取这些 XDC 调试命令并在布局布线时加入这些 ILA IP 核。在调试工作完毕之后用户就可以在 XDC 文件中删除调试命令然后再对设计进行重新编译以生成最终的比特流。第3种方法与第二种方法的使用区别很小只是标记信号的方式不同第2种是在综合前标记第三种是在综合后标记。
HDL 实例化调试探针流程
点击“Flow Navigator”窗口中的“IP Catalog”按钮 这时“IP Catalog”窗口就被打开了如下图所示 搜索栏中输入“ILA”这时 Vivado 会自动根据关键词搜索出相应的结果然后双击“ILAIntegrated Logic Analyzer” 双击“ILAIntegrated Logic Analyzer”会弹出“ILA IP”核的配置页面ILA IP 核的默认配置页面如下图所示
工具栏介绍 左上角工具栏主要有 Documentation、IP Location、Switch to Defaults 三个设置。 1DocumentationIP 相关文档入口点击后会展开相应的菜单。其中”Product Guide IP“手册查看入口点击可自动跳转到 Xilinx 官方文档 DocNav 软件”Change Log“是 IP 版本更新记录点击可显示 IP 更新记录”Product Webpage“是 IP 的介绍网页版点击可跳转到 Xilinx 官方有关该 IP 介绍的网站 ”Answer Records“是与 IP 相关的 Xilinx 官方疑问解答记录网页。 2IP Location设置 IP 的存放路径点击后再弹出的对话框中可以选择 IP 的存放路径 3Switch to Default点击后会将所有设置恢复到默认值。ILA IP 核命名 在”Component Name“中可以设置 IP 核的名称。配置参数介绍 General Options常规选项主要有两部分。 1Monitor TypeILA 探针接口类型设置ILA 探针接口有两种类型Native 与 AXINative 是普通接口模式AXI 是 AXI 接口模式。Native 通常是用来测量电平或一定位宽信号AXI 用来测量 AXI 总线的信号。这里以 Native 模式为例进行讲解。 Number of Probes探针数量设置在 GUI 界面最大可设置 64 个如果需要调试的内部信号超过 64 个可以通过 TCL 脚本去生成 IP Core或者可以通过生成多个 ILA IP Core 去调试更多信号。 Sample Data Depth采样数据深度设置的数值越大采样的数据越多看到的波形数据越多但是最终占用的资源也会越多并不是设置的越大越好。 Same Number of Comparators for All Probe Ports这里是设置相同探针接口的 Comparators 的个数如果该选项不被勾选接下来的 Number of Comparators 选项就会消失。 Trigger Out Port触发输出端口可用于 ILA 模块的级联或一些高级功能 Trigger In Port触发输入端口可用于手工设置添加触发信号或进行 ILA 模块的级联或一些高级功能 Input Pipe Stages设置待探测信号打拍次数 2Trigger And Storage settings触发器和存储设置。 Capture Control捕获控制支持基本触发时间点捕获外的捕获类型比如信号变化的间歇捕获。这里如果勾选可在调试查看波形窗口进行对 Capture mode 的设置如果不勾选后面有关 Capture mode 就不可修改会保持常用捕获模式,基本捕获模式满足大部分调试需求。 Advanced Trigger高级触发该模式下可以创建和使用复杂的触发序列。如果这里勾选可在调试查看波形窗口进行对 Trigger mode 的设置如果不勾选后面有关 Trigger mode 就不可修改。
此处对09 呼吸灯中的代码进行调试使用在线逻辑分析仪抓取顶层模块中的sys_rst_n、led、duty_cycle这3个信号因此 ILA IP 核的配置如下 ILA IP 核配置完成接下来点击右下角的“OK”退出配置界面接下来就会弹出“Generate Output Products”对话框保持默认设置直接点击“Generate”即可此时 Vivado 就开始对该 ILA IP 核进行 OOCOut-of-Context综合了 Vivado 使用自顶向下的全局Global综合方式将顶层之下的所有逻辑模块都进行综合但是设置为 OOC 方式的模块除外它们独立于顶层设计而单独综合。通常在整个设计周期中顶层设计会被多次修改并综合但有些子模块在创建完毕之后不会因为顶层设计的修改而被修改如 IP它们可设置为 OOC 综合方式。OOC 模块只会在综合顶层之前被综合一次这样在顶层的设计迭代过程中OOC 模块就不必跟随顶层模块而一次次产生相同结果的多余综合了。综合完成后在“Source”窗口中看到已经出现了 ILA IP 核。由于还没有把它例化到顶层的 HDL 代码中所以在层次结构上它与顶层并排。 例化ILA IP核在顶层设计中加入如下代码
//例化ILA IP核
ila_0 u_ila_inst0(.clk(sys_clk), //input wire clk.probe0(sys_rst_n), //input wire [0:0] Probe0.probe1(led), //input wire [0:0] Probe1.probe2(duty_cycle) //input wire [31:0] Probe2
);至此完成了在设计中添加ILA IP核的工作。
“mark_debug”标记要调试的信号
在综合代码之前需要在代码中对要调试的信号添加mark_debug属性其中“(* mark_debug “true” *)”必须紧挨在变量声明的前面。 点击“Flow Navigator”→“SYNTHESIS”窗口中的“Run Synthesis”进行综合 综合完成后需要将 Debug 信号与探针关联接下来点击“Flow Navigator”→“SYNTHESIS”窗口中的“Open Synthesized Design”按钮 选择“Debug”窗口布局 此时Vivado 打开了“Netlist”子窗口、“Schematic”子窗口、“Debug”子窗口其中“Netlist”子窗口和“Schematic”子窗口都可以用于标记要进行观察的信号“Debug”子窗口用于显示并设置 ILA IP 核的各个参数 将 Debug 信号与探针关联接下来点击“Flow Navigator”→“SYNTHESIS”→“Open Synthesized Design”窗口中“Set Up Debug”的按钮 点击“Set Up Debug”按钮后进入 Debug 信号与探针关联引导页面面如下图所示直接点击“Next”。 点击“Next”后进入未关联引脚配置页面如下图所示。 Name会列出所有需要进项调试的信号即在 HDL 代码中添加“(* mark_debug “true” *)”综合属性的信号且未关联的调试信号 Clock Domain是选择用于采样待测信号的时钟域一般情况下 Vivado 会自动识别出各个待测信号所属的时钟域并将其自动设定为其采样时钟若 Vivado 未识别出来或者需要修改时钟域可以点击待测信号在弹出的菜单中选择“Select Clock Domain”打开“Select Clock Domain”窗口重新选择时钟域。 Driver Cell驱动单元 Probe Type对探针设置触发器或数据类型。有 3 种可选Data and Trigger既是数据又可作为触发条件Data仅作为数据不可作为触发条件Trigger仅可作为触发条件。 Find Nets toAdd…按钮点击可打开添加网络的窗口对于多余的端口可以选中后点击“—”删除 接下来点击“Next” 对 ILA IP 核的全局设置设置完成点击“Next 最后点击点击“Finish”按钮即可 点击保存或者按ctrls进行保存操作此时可见xdc文件中增加了如下内容 接下来就可以编译工程并生成比特流在这个过程中 Vivado 会自动添加相应的 ILA IP 核
网表插入调试探针流程
点击“Flow Navigator”→“SYNTHESIS”窗口中的“Run Synthesis”进行综合 来点击“Flow Navigator”→“SYNTHESIS”窗口中的“Open Synthesized Design”按钮 选择“Debug”窗口布局 此时Vivado 打开了“Netlist”子窗口、“Schematic”子窗口、“Debug”子窗口其中“Netlist”子窗口和“Schematic”子窗口都可以用于标记要进行观察的信号“Debug”子窗口用于显示并设置 ILA IP 核的各个参数 在“Netlist”子窗口中的“Nets”目录下找到需要调试的信号右击该网络在弹出的菜单中心选择“Mark Debug”命令 同样也可以在“Schematic”子窗口中选择需要调试的网络然后右键选择“Mark Debug”命令 为信号记了“Mark Debug”之后就可以进行 ILA IP 核的配置了对可以参考**“mark_debug”标记要调试的信号**中的第5步。完成后进行保存同样会在xdc文件中追加debug 的约束命令。 注意 Vivado在综合是会对代码进行优化可能会进行多余的信号删除、变量位宽缩小、设置对信号进行重命名的操作此时可能会导致无法找到需要调试的信号可能被优化掉了可能重命名了
在 Hardware Manager 中观察调试信号
生成比特流之后我们打开 Hardware Manager连接到开发板并下载比特流。 其中的.ltx 文件存储了调试探针的信息用来传递给 Vivado IDE它是从我们的设计中被提取出来的。通常调试探测文件是在实现过程中自动创建的并位于和比特流文件相同的目录下。若实现后的设计中包含了 ILA IP 核则在下载比特流时Vivado 会自动识别出.ltx 文件。 2. 下载完成后 Vivado 会自动打开 ILA 的调试窗口 3. 有时候 ILA 的采样波形窗口界面没有自动弹出可以双击左侧 hardware 窗口中带 ila 特征的硬件选择按钮打开波形窗口。 4. 波形窗口中显示的信号不全可以点击“Waveform – hw_ila_1”窗口中的加号将所有的探针信号添加到波形窗口中
当然对于多余的信号也可以点击”—“删除 信号添加完成后就可以开始进行触发动作了。在波形窗口中有 4 个触发动作如下图所示 从左至右依次是1循环触发、2开始触发、3立即触发、4停止触发 1循环触发它和“开始触发”按钮联合在一起使用。若打开了此选项在点击了“开始触发”按钮后会不断地对触发条件进行检测每次触发条件被满足时都会将RAM中存储的探针值数据上传到VivadoVivado上显示的波形也会随之不断更新直到用户点击了“停止触发”按钮波形将不再更新。如果探针一直没有检测到触发条件那么触发操作一直在进行直到点击停止触发按钮这次触发操作才会结束。 2开始触发点击之后 ILA 就会开始进行触发操作。点击该按钮后ila 探针自动寻找触发条件当探针检测到触发条件后会将 RAM 中存储的探针值数据上传到 VivadoVivado 上显示的波形发生改变一次触发操作完成如果探针一直没有检测到触发条件那么触发操作一直在进行直到点击停止触发按钮这次触发操作才会结束。 3立即触发立即将当前 RAM 中的数据上传到 Vivado而不管触发条件是否得到满足 4停止触发停止当前正在进行的触发活动。 另外在 ILA 的状态控制窗口也有这几个操作按钮同时还会再状态窗口中显示 ILA 状态 采集到信号后可以点击上图中的放大和缩小的图标来对波形数据进行放大和缩小 当然也可以通过鼠标滚轮调节大小 波形默认以十六进制显示的可以选择信号单击鼠标右键选择“Radix”→“Unsigned Decimal”设置显示的进制数。 可以在“Trigger Setup”窗口中添加触发条件点击“”号选择需要触发的信号 如下设置再LED信号跳变时进行触发 当存在多个触发时可以选择他们之间的逻辑关系
设置触发条件后点击触发但触发信号满足时会将当前 RAM 中的数据上传到 Vivado并进行显示触发条件不满足时会进行等待。