目录
简介
传统的 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
核。
双击“ILA (Integrated Logic Analyzer
)”
“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
”按钮即可,如下图所示:

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

被折叠的 条评论
为什么被折叠?



