在线逻辑分析仪的使用

本文介绍在FPGA设计中使用集成逻辑分析器(ILA)进行在线调试的方法,包括HDL实例化调试探针流程、HardwareManager观察调试信号及网表插入调试探针流程。

目录

简介

1 HDL 实例化调试探针流程

2 Hardware Manager 中观察调试信号

3 网表插入调试探针流程


简介

        传统的 FPGA 板级调试是由外接的逻辑分析仪连接到 FPGA 的控制管脚,然后将内部信号引出至引脚IO 上,进行板级调试。这种方法的缺点是首先我们需要一个逻辑分析仪,而逻辑分析仪一般价格都比较昂贵,且对于需要测试几十个引脚的时候,选择使用外接的逻辑分析仪就比较繁琐了。
        在线逻辑分析仪克服了以上所有的缺点,其借用了传统逻辑分析仪的理念以及大部分的功能,并利用 FPGA 中的逻辑资源,将这些功能植入到 FPGA 的设计当中。一般地,在线逻辑分析仪的应用原理框图如下图所示:
在线逻辑分析仪的应用原理框图
        其中,待测设计(Design Under Test DUT )就是用户逻辑,它和片内的在线逻辑分析仪都位于 FPGA 中。在线逻辑分析仪通过一个或多个探针(Probe )来采集希望观察的信号,然后通过片内的 JTAG 硬核组件,来将捕获到的数据传送给下载器,进而上传到 Vivado IDE 以供用户查看。 Vivado IDE 也能够按照上述数据路径,反向地向 FPGA 中的在线逻辑分析仪传送一些控制信息。由此可见,在线逻辑分析仪不需要将待测信号引出至 I/O 上,也不需要电路板走线或者探测点,当然更不需要外部的逻辑分析仪的花费,在Vivado 中就可以将在线逻辑分析仪添加到设计中。但是,在线逻辑分析仪会占用一定数量的内部逻辑资源,如块 RAM 、查找表、触发器等等。
        在 Vivado 中,在线逻辑分析仪的功能被称为“集成逻辑分析器( Integrated Logic Analyzer ,ILA)”,它以 IP 核 的形式来加入到用户设计中。
        Vivado 提供了三种具有不同集成层次的插入 ILA 方法,以满足不同 Vivado 用户群的不同需求:
        第一种方法是直接在 HDL 代码中例化一个 ILA IP 核,也被称为“ HDL 实例化调试探针流程”,这是集成层次最高的方法。ILA IP 核可以在 IP Catalog IP 目录)中找到,并对其进行配置,以符合所需的调试需求。这是最直接的方法,但其灵活性也较差。在调试工作完毕之后,还需要在 HDL 源代码中删除ILA IP 核,然后重新综合并实现,以生成最终的比特流。
        第二种方法是在综合后的网表中,分别标记要进行调试观察的各个信号,然后通过一个简单的“Setup Debug”向导来设置各个探针和 ILA IP 核的工作参数,然后工具会根据用户设置的参数,自动地生成各个 ILA IP 核。这个方法也被称为“网表插入调试探针流程”。在此流程中,用户不需要修改 HDL 源代码,并且能够单独控制每个 ILA IP 核以及每个探针,这样就提供了很大的灵活性。用户设置的调试信息会以 Tcl XDC 调试命令的形式保存到 XDC 约束文件中,在实现阶段, Vivado 会读取这些 XDC 调试命令,并在布局布线时加入这些 ILA IP 核。在调试工作完毕之后,用户就可以在综合后的网表中删除 ILA IP 核,或者在 XDC 文件中删除调试命令,然后再对设计进行实现,以生成最终的比特流。
        第三种方法是手动地在 XDC 约束文件中书写对应的 Tcl XDC 调试命令,在实现阶段工具会自动读取这些命令,并在布局布线时加入这些 ILA IP 核。在调试工作完毕之后,用户还需要在 XDC 约束文件中删除这些命令,然后实现最终的设计。这种方法集成层次最低,一般不会使用这种方法

1 HDL 实例化调试探针流程

        “HDL 实例化调试探针流程”需要在 HDL 源代码中实例化 ILA IP 核。
1 IP Catalog按钮
2 IP Catalog窗口

3 搜索 ILA
        双击“ILA (Integrated Logic Analyzer )”
4 Customize IP窗口
        “Component Name ”一栏用于设置 ILA IP 核的名称
        IP 核的配置包含两个子页面,分别是“ General Options ”和 “Probe_Ports(0..0)” , “ General Options ” 页面用于设置 ILA IP 核的总体设置, “Probe_Ports(0..0)” 页面用于对每个探针的参数进行设置。
        在“General Options ”页面中,“ Number of Probes ”一栏用于设置所需的探针数量,一般地,一个探针用于连接一个待测信号,例如,我们想要观察“sys_rst_n”、“led”和“ cnt ”这三个信号,则需要把 “Number of Probes ”设置为 3
        “Sample Data Depth ”用于设置采样深度,在每个采样时钟下, ILA 都会将捕获到的探针信号的值送入 RAM 中,由于 RAM 的存储空间是有限的,所以此选项就用于设置 RAM 最大存储多少个探针信号的值,我们保持其默认 1024 ,其数值越大,消耗的 RAM 资源也越多。其它选项保持默认即可。
        在“Probe_Ports(0..0) ”页面中,用于设置每个探针的参数,一般我们只需设置探针宽度“ Probe Width[1..4096]”一栏即可,由于“sys_rst_n”、“led”和“ cnt ”这三个信号的位宽分别是 1 位、 2 位和 26 位, 所以我们需要将其分别设置为 1 2 26 ,然后点击“ OK ”按钮即可,如下图所示:
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不做拖延王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值