10 在线逻辑分析仪的使用

在线逻辑分析仪简介

传统的 FPGA 板级调试是将逻辑分析仪连接到 FPGA 的 IO 引脚上 ,然后将内部信号引出至 IO 引脚,再进行板级调试,这种方法的缺点是我们需要一个逻辑分析仪,且还要在 PCB 中预留测试点。在线逻辑分析仪克服了以上所有的缺点,其借用了传统逻辑分析仪的理念以及大部分的功能,并利用 FPGA 中的逻辑资源,将这些功能植入到 FPGA 的设计当中,在线逻辑分析仪的应用原理框图如下图所示:
在这里插入图片描述
其中,待测设计(Design Under Test,DUT)就是用户逻辑,它和片内的在线逻辑分析仪都位于 FPGA中。在线逻辑分析仪通过一个或多个探针(Probe)来采集希望被观察的信号,然后通过片内的 JTAG 硬核组件,将捕获到的数据传送给下载器,进而上传到 Vivado 供用户查看。Vivado 也能够按照上述数据路径,反向地向 FPGA 中的在线逻辑分析仪传送一些控制信息。
在 Vivado 中,在线逻辑分析仪的功能被称为“集成逻辑分析器(Integrated Logic Analyzer,ILA)”,它以 IP 核的形式来加入到用户设计中。Vivado 提供了三种具有不同集成层次的插入 ILA 方法:

  1. 直接在 HDL 代码中例化一个 ILA IP 核,也被称为“HDL 实例化调试探针流程”,这是集成层次最高的方法。ILA IP 核可以在 IP Catalog(IP 目录)中找到,并对其进行配置,以符合所需的调试需求,这是最直接的方法,但其灵活性也较差。在调试工作完毕之后,还需要在 HDL 源代码中删除 ILA IP 核,然后重新综合以生成最终的比特流。
  2. 在 HDL 代码中为要观察的 reg 或 wire 信号添加“mark debug”属性,然后通过“Setup Debug”向导来设置各个探针和 ILA IP 核的工作参数,工具会根据用户设置的参数,自动地生成各个 ILA IP 核,这个方法也被称为“使用 Debug 标记创建 ILA 调试环境”。用户设置的调试信息会以 Tcl XDC 调试命令的形式保存到 XDC 约束文件中,在实现阶段,Vivado 会读取这些 XDC 调试命令,并在布局布线时加入这些 ILA IP 核。在调试工作完毕之后,用户可以在 HLD 代码中删除之前添加的“Mark Debug”综合属性,并且在 XDC 文件中删除调试命令,然后再对设计进行重新编译,以生成最终的比特流。
  3. 在综合后的网表中标记要观察的信号,然后通过“Setup Debug”向导来设置各个探针和 ILA IP 核的工作参数,工具会根据用户设置的参数,自动地生成各个 ILA IP 核。这个方法也被称为“网表插入调试探针流程”。在此流程中,用户不需要修改 HDL 源代码,并且能够单独控制每个 ILA IP 核以及每个探针,这样就提供了很大的灵活性。用户设置的调试信息会以 Tcl XDC 调试命令的形式保存到 XDC 约束文件中,在实现阶段,Vivado 会读取这些 XDC 调试命令,并在布局布线时加入这些 ILA IP 核。在调试工作完毕之后,用户就可以在 XDC 文件中删除调试命令,然后再对设计进行重新编译,以生成最终的比特流。第3种方法与第二种方法的使用区别很小,只是标记信号的方式不同,第2种是在综合前标记,第三种是在综合后标记

HDL 实例化调试探针流程

  1. 点击“Flow Navigator”窗口中的“IP Catalog”按钮
    在这里插入图片描述
    这时“IP Catalog”窗口就被打开了,如下图所示:
    在这里插入图片描述
  2. 搜索栏中输入“ILA”,这时 Vivado 会自动根据关键词搜索出相应的结果,然后双击“ILA(Integrated Logic Analyzer)”
    在这里插入图片描述
    双击“ILA(Integrated Logic Analyzer)”会弹出“ILA IP”核的配置页面,ILA IP 核的默认配置页面如下图所示:
    在这里插入图片描述
  • 工具栏介绍
    在这里插入图片描述
    左上角工具栏主要有 Documentation、IP Location、Switch to Defaults 三个设置。
    (1)Documentation:IP 相关文档入口,点击后会展开相应的菜单。其中”Product Guide IP“手册查看入口,点击可自动跳转到 Xilinx 官方文档 DocNav 软件;”Change Log“是 IP 版本更新记录,点击可显示 IP 更新记录;”Product Webpage“是 IP 的介绍网页,点击可跳转到 Xilinx 官方有关该 IP 介绍的网站; ”Answer Records“是与 IP 相关的 Xilinx 官方疑问解答记录网页。
    (2)IP Location:设置 IP 的存放路径,点击后再弹出的对话框中可以选择 IP 的存放路径
    (3)Switch to Default:点击后会将所有设置恢复到默认值。
  • ILA IP 核命名
    在这里插入图片描述
    在”Component Name“中可以设置 IP 核的名称。
  • 配置参数介绍
    在这里插入图片描述
    General Options(常规选项)主要有两部分。
    (1)Monitor Type:ILA 探针接口类型设置,ILA 探针接口有两种类型,Native 与 AXI,Native 是普通接口模式;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:设置待探测信号打拍次数
    (2)Trigger And Storage settings:触发器和存储设置。
        Capture Control:捕获控制,支持基本触发(时间点捕获)外的捕获类型,比如信号变化的间歇捕获。这里如果勾选,可在调试查看波形窗口进行对 Capture mode 的设置;如果不勾选,后面有关 Capture mode 就不可修改,会保持常用捕获模式,基本捕获模式满足大部分调试需求。
        Advanced Trigger:高级触发,该模式下可以创建和使用复杂的触发序列。如果这里勾选,可在调试查看波形窗口进行对 Trigger mode 的设置;如果不勾选,后面有关 Trigger mode 就不可修改。
    Probe_Ports(探针端口)包含一个表格,一共有四列,重点关注第二列核第四列,分别是配置端口宽度和类型(触发或数据,或者两者都)。
  1. 此处对09 呼吸灯中的代码进行调试,使用在线逻辑分析仪抓取顶层模块中的sys_rst_n、led、duty_cycle这3个信号,因此 ILA IP 核的配置如下:
    在这里插入图片描述
    在这里插入图片描述
  2. ILA IP 核配置完成,接下来点击右下角的“OK”退出配置界面,接下来就会弹出“Generate Output Products”对话框,保持默认设置,直接点击“Generate”即可,此时 Vivado 就开始对该 ILA IP 核进行 OOC(Out-of-Context)综合了
    在这里插入图片描述
    Vivado 使用自顶向下的全局(Global)综合方式,将顶层之下的所有逻辑模块都进行综合,但是设置为 OOC 方式的模块除外,它们独立于顶层设计而单独综合。通常在整个设计周期中,顶层设计会被多次修改并综合,但有些子模块在创建完毕之后不会因为顶层设计的修改而被修改,如 IP,它们可设置为 OOC 综合方式。OOC 模块只会在综合顶层之前被综合一次,这样在顶层的设计迭代过程中,OOC 模块就不必跟随顶层模块而一次次产生相同结果的多余综合了。
  3. 综合完成后在“Source”窗口中看到已经出现了 ILA IP 核。由于还没有把它例化到顶层的 HDL 代码中,所以在层次结构上它与顶层并排。
    在这里插入图片描述
  4. 例化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
);
  1. 至此完成了在设计中添加ILA IP核的工作。

“mark_debug”标记要调试的信号

  1. 在综合代码之前,需要在代码中对要调试的信号添加"mark_debug"属性(其中“(* mark_debug = “true” *)”必须紧挨在变量声明的前面)。
    在这里插入图片描述
  2. 点击“Flow Navigator”→“SYNTHESIS”窗口中的“Run Synthesis”进行综合
    在这里插入图片描述
    在这里插入图片描述
  3. 综合完成后,需要将 Debug 信号与探针关联,接下来点击“Flow Navigator”→“SYNTHESIS”窗口中的“Open Synthesized Design”按钮
    在这里插入图片描述
  4. 选择“Debug”窗口布局
    在这里插入图片描述
    此时,Vivado 打开了“Netlist”子窗口、“Schematic”子窗口、“Debug”子窗口,其中“Netlist”子窗口和“Schematic”子窗口都可以用于标记要进行观察的信号,“Debug”子窗口用于显示并设置 ILA IP 核的各个参数
    在这里插入图片描述
  5. 将 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”按钮即可
    在这里插入图片描述
  6. 点击保存或者按ctrl+s进行保存操作
  7. 此时可见xdc文件中增加了如下内容
    在这里插入图片描述
  8. 接下来就可以编译工程并生成比特流,在这个过程中 Vivado 会自动添加相应的 ILA IP 核

网表插入调试探针流程

  1. 点击“Flow Navigator”→“SYNTHESIS”窗口中的“Run Synthesis”进行综合
    在这里插入图片描述
  2. 来点击“Flow Navigator”→“SYNTHESIS”窗口中的“Open Synthesized Design”按钮
    在这里插入图片描述
  3. 选择“Debug”窗口布局
    在这里插入图片描述
    此时,Vivado 打开了“Netlist”子窗口、“Schematic”子窗口、“Debug”子窗口,其中“Netlist”子窗口和“Schematic”子窗口都可以用于标记要进行观察的信号,“Debug”子窗口用于显示并设置 ILA IP 核的各个参数
    在这里插入图片描述
  4. 在“Netlist”子窗口中的“Nets”目录下找到需要调试的信号,右击该网络在弹出的菜单中心选择“Mark Debug”命令
    在这里插入图片描述
    同样也可以在“Schematic”子窗口中选择需要调试的网络,然后右键选择“Mark Debug”命令
    在这里插入图片描述
  5. 为信号记了“Mark Debug”之后,就可以进行 ILA IP 核的配置了,对可以参考**“mark_debug”标记要调试的信号**中的第5步。
  6. 完成后进行保存,同样会在xdc文件中追加debug 的约束命令。
    注意
    Vivado在综合是会对代码进行优化,可能会进行多余的信号删除、变量位宽缩小、设置对信号进行重命名的操作,此时可能会导致无法找到需要调试的信号(可能被优化掉了,可能重命名了)

在 Hardware Manager 中观察调试信号

  1. 生成比特流之后,我们打开 Hardware Manager,连接到开发板并下载比特流。

在这里插入图片描述
在这里插入图片描述
其中的.ltx 文件存储了调试探针的信息,用来传递给 Vivado IDE,它是从我们的设计中被提取出来的。通常,调试探测文件是在实现过程中自动创建的,并位于和比特流文件相同的目录下。若实现后的设计中包含了 ILA IP 核,则在下载比特流时,Vivado 会自动识别出.ltx 文件。
2. 下载完成后 Vivado 会自动打开 ILA 的调试窗口
在这里插入图片描述
3. 有时候 ILA 的采样波形窗口界面没有自动弹出,可以双击左侧 hardware 窗口中带 ila 特征的硬件选择按钮打开波形窗口。
在这里插入图片描述
在这里插入图片描述
4. 波形窗口中显示的信号不全,可以点击“Waveform – hw_ila_1”窗口中的加号,将所有的探针信号添加到波形窗口中
在这里插入图片描述

当然对于多余的信号也可以点击”—“删除

  1. 信号添加完成后,就可以开始进行触发动作了。在波形窗口中有 4 个触发动作,如下图所示
    在这里插入图片描述
    从左至右依次是:(1)循环触发、(2)开始触发、(3)立即触发、(4)停止触发
    (1)循环触发:它和“开始触发”按钮联合在一起使用。若打开了此选项,在点击了“开始触发”按钮后,会不断地对触发条件进行检测,每次触发条件被满足时,都会将RAM中存储的探针值数据上传到Vivado,Vivado上显示的波形也会随之不断更新,直到用户点击了“停止触发”按钮,波形将不再更新。如果探针一直没有检测到触发条件,那么触发操作一直在进行,直到点击停止触发按钮,这次触发操作才会结束。
    (2)开始触发:点击之后 ILA 就会开始进行触发操作。点击该按钮后,ila 探针自动寻找触发条件,当探针检测到触发条件后,会将 RAM 中存储的探针值数据上传到 Vivado,Vivado 上显示的波形发生改变,一次触发操作完成;如果探针一直没有检测到触发条件,那么触发操作一直在进行,直到点击停止触发按钮,这次触发操作才会结束。
    (3)立即触发:立即将当前 RAM 中的数据上传到 Vivado,而不管触发条件是否得到满足
    (4)停止触发:停止当前正在进行的触发活动。
    另外在 ILA 的状态控制窗口也有这几个操作按钮,同时还会再状态窗口中显示 ILA 状态
    在这里插入图片描述

  2. 采集到信号后,可以点击上图中的放大和缩小的图标,来对波形数据进行放大和缩小
    在这里插入图片描述
    当然也可以通过鼠标滚轮调节大小

  3. 波形默认以十六进制显示的,可以选择信号单击鼠标右键选择“Radix”→“Unsigned Decimal”设置显示的进制数。
    在这里插入图片描述

  4. 可以在“Trigger Setup”窗口中添加触发条件,点击“+”号选择需要触发的信号
    在这里插入图片描述
    如下设置再LED信号跳变时进行触发
    在这里插入图片描述
    当存在多个触发时可以选择他们之间的逻辑关系
    在这里插入图片描述

设置触发条件后点击触发,但触发信号满足时会将当前 RAM 中的数据上传到 Vivado,并进行显示,触发条件不满足时会进行等待。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/415899.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

配电房轨道式巡检机器人方案

一、应用背景 在变电站、配电房、开关站等各种室内变配电场所内,由于变配电设备的数量众多、可能存在各类安全隐患,为了保证用电的安全可靠,都要进行日常巡检。 但目前配电房人工巡检方式有以下主要问题: 巡检工作量大、成本高 …

三、西瓜书——神经网络

一、神经元模型 在M-P神经网络模型中,神经元接 收到来自n个其他神经元传递过来的输入信号,这些输入信号通过带权重的连接(connection)进行传递,神经元接收到的总输入值将与神经元的阈值进行比较,然后通过“激活函数”(activation …

【数据结构】C语言实现二叉树的相关操作

树 定义 树(Tree)是 n (n > 0) 个结点的有限集 若 n 0,称为空树 若 n > 0,则它满足如下两个条件: 有且仅有一个特定的称为根(Root)的结点其余结点可分为 m(m>0) 个互不相交的有限…

第十三篇【传奇开心果系列】Python的文本和语音相互转换库技术点案例示例:Microsoft Azure的Face API开发人脸识别门禁系统经典案例

传奇开心果博文系列 系列博文目录Python的文本和语音相互转换库技术点案例示例系列 博文目录前言一、实现步骤和雏形示例代码二、扩展思路介绍三、活体检测深度解读和示例代码四、人脸注册和管理示例代码五、实时监控和报警示例代码六、多因素认证示例代码七、访客管理示例代码…

ES6 | (二)ES6 新特性(下) | 尚硅谷Web前端ES6教程

文章目录 📚迭代器🐇定义🐇工作原理🐇自定义遍历数据 📚生成器函数🐇声明和调用🐇生成器函数的参数传递🐇生成器函数案例 📚Promise📚Set🐇Set的定…

AI大预言模型——ChatGPT在地学、GIS、气象、农业、生态、环境应用

原文链接:AI大预言模型——ChatGPT在地学、GIS、气象、农业、生态、环境应用 一开启大模型 1 开启大模型 1)大模型的发展历程与最新功能 2)大模型的强大功能与应用场景 3)国内外经典大模型(ChatGPT、LLaMA、Gemini、DALLE、Midjourney、Stable Diff…

【论文阅读】微纳米气泡技术作为CO2-EOR和CO2地质储存技术的新方向:综述

Micro and nanobubbles technologies as a new horizon for CO2-EOR and CO2 geological storage techniques: A review 微纳米气泡技术作为CO2-EOR和CO2地质储存技术的新方向:综述 期刊信息:Fuel 2023 期刊级别:EI检索 SCI升级版工程技术1区…

解释一下前端框架中的虚拟DOM(virtual DOM)和实际DOM(real DOM)之间的关系。

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

从win11切换到ubuntu20的第1天

我不想做双系统,反正win11也没有意思,打游戏直接去网吧,所以电脑直接重装了ubuntu20,为什么不是ubuntu22?因为版本太新,很多东西不支持。为什么不装ubuntu18?因为我电脑装完了之后不支持外界显示…

通过大语言模型理解运维故障:评估和总结

张圣林 南开大学软件学院副教授、博士生导师 第六届CCF国际AIOps挑战赛程序委员会主席 在ATC、WWW、VLDB、KDD、SIGMETRICS等国际会议和JSAC、TC、TSC等国际期刊发表高水平论文50余篇。主持国家自然科学基金项目2项,横向项目13项(与华为、字节跳动、腾讯…

华为s5720s-28p-power-li-ac堆叠配置

叠物理约束: • 连线推荐示意图选用产品子系列中固定的一款设备做示例,与选择产品时指定型号的外观可能不同。示意图主要用于让用户了解相同子系列设备可以用作堆叠的端口的位置,以及使用不同的连线方式时如何连接设备上的端口。因此&#xf…

【Micropython教程】点亮第一个LED与流水灯

文章目录 前言MicroPython在线仿真GPIO的工作模式一、有哪些工作模式?1.1 GPIO的详细介绍1.2 GPIO的内部框图输入模式输出部分 一、machine.Pin类1.1 machine.Pin 类的构造对象1.2 machine.Pin 类的方法init方法value方法设置高低电平方法 二、延时函数 三、流水灯总…

2024年2月深度学习的论文推荐

我们这篇文章将推荐2月份发布的10篇深度学习的论文 Beyond A*: Better Planning with Transformers via Search Dynamics Bootstrapping. https://arxiv.org/abs/2402.14083 Searchformer是一个基于Transformer架构的人工智能模型,经过训练可以模拟A星寻路算法&a…

博途V18界面的各变量用途

在编程的时候会用到相关的变量包括: 1.在程序块中新建的“数据块” DB 。 在此建立的 变量数据块,它可以是自建在PLC数据类型的变量类型,也可以是各种标准的数据类型,且在DB数据块中的变量一般为全局变量,在整个项目…

nginx------------缓存功能 (六)

一、http 协议反向代理 (一)反向代理示例:缓存功能 缓存功能可以加速访问,如果没有缓存关闭后端服务器后,图片将无法访问,缓存功能默认关闭,需要开启。 ​ proxy_cache zone_name | off; 默认off #指明调…

[Tomcat] 控制台日志乱码,快速解决

启动tomcat之后,控制台打印的日志中出现了中文乱码的情况 解决方法 找到tomcat下的conf目录下的logging.properties文件,地址一般为:C:\apache-tomcat-9.0.17\conf 将logging.properties打开,将java.util.logging.ConsoleHandler…

向量数据库PGVECTOR,AI浪潮下崛起的新秀!

📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】!😜&am…

Javaweb day7

Ajax 写法 (比较落后) 简化版:AXIOS 写法 简化 案例: 基础代码 写法

项目流程图

实现便利店自助付款项目 服务器: 1、并发服务器(多进程、多线程、IO多路复用) 2、SQL数据库的创建和使用(增删改查) 3、以模块化编写项目代码,按照不同模块编写.h/.c文件 客户端: 1、QT客户端界…

AI智能电销机器人效果怎么样?呼叫部署

我们的生活早已变得无处不智能,从智能手机到无人车、虚拟VR到智能家居,你迎接的每一个清晨、享受的每一个夜晚,可能都离不开智能设备的服务。 工作中,智能化产业也正在影响着企业,电销机器人正在帮助各大企业获得更高的…