Xilinx ILA 使用教程
1、调试代码(点灯程序)
module led_top(sys_clk, sys_rst_n, led);
input sys_clk; // 系统时钟100MHz
input sys_rst_n; // 系统复位低电平有效
output reg led; // LED ->1秒翻转一次
reg [31:0] cnt; // 计数器
localparam T_1S = 100_000_000; // 时钟周期10ns -> 计数次数
// 定时器计数
always @ (posedge sys_clk or negedge sys_rst_n)begin
if (!sys_rst_n)
cnt <= 32'd0;
else if (cnt == T_1S - 1'b1) // 1秒循环计数
cnt <= 32'd0;
else
cnt <= cnt + 1'b1; // 计数器累加
end
// LED 点灯实验
always @ (posedge sys_clk or negedge sys_rst_n)begin
if (!sys_rst_n)
led <= 1'b0; // 高电平点灯->
else if (cnt == T_1S - 1'b1)
led <= ~led; // 1秒翻转一次
end
endmodule
2、ILA IP 创建以及使用
2.1、添加ILA IP
1、单击 IP Catalog
2、在Search(搜索框)中搜索:ILA
3、在Debug下面选择->ILA(Integrated Logic Analysis)->双击
2.2、ILA IP 官方文档的查看
1、单击Documentation
2、在下拉选项中选择Product Guide->单击
单击Product Guide 之后,会自动跳转到官方IP文档,我们可以直接阅读,也可以下载保存。
1、单击下载按钮,可以将IP文档下载下来。
2.3、ILA 界面简介
2.3.1、General Options 界面
1、IP Location->单击之后,可以看见创建IP 存储的位置。
2、Component Name->ILA IP的名称,在这里可以使用默认名称,也可以根据自己的风格进行更改。我在这里把这个IP 更改成led_ila。
3、Monitor Type ->这个选项指定调试那种类型的接口。两种选择“Native”和“AXI”。对于初学者而言,这里选择“Native”就可以了。
4、Number of Probes->探针的数量。我们可以把这个理解成示波器的探头,1就对应1个探头,2就对应2个探头…以此类推。这里提供的选择范围在[1,1024]。在实际使用的过程中,我们根据需要观测信号的数量来合理选择探头的数量。在这里,我选择3个探头。
5、Sample Data Depth->采样数据的深度,可以在右边下拉菜单中选择合适的深度。你就把这个理解为容量相同的储物格。储物格越多,存储的物品也就越多,对应到数据上来说,就意味着你能接收并且看到更多的数据。因为我FPGA资源剩余比较多,这里我选择4096。
6、Same No. of Comparators for all Probes ->选中为所有已启用的端口和接口启用相同数量的比较器。 此 IP 版本允许您在基本和高级触发模式下使用此选项。 这里选择默认配置就可以了。
7、No. of Comparators ->比较器数量。选择以启用适用于所有已启用探针的比较器数量。
Trigger Out Port -> 触发输出端口 – 选中以启用可选的触发输出端口。
Trigger In Port – >选中以启用可选的触发器输入端口。
8、Input Pipe Stages-> 选择要为探针添加的寄存器数量。 此参数适用于所有探头。选择默认配置就可以了。
9、
torage Qualification – 选中以启用跟踪捕获的限定符。
Advanced Trigger 高级触发——选中以启用基于状态机的触发排序。
ILA 参数配置之后的界面下图所示
2.3.2、Probe_ Ports 界面
1、Probe Width->探针的位宽。这里设置的探针位宽尽量和你观测的信号位宽保持一致。我这边观测三个信号,分别是sys_rst_n, led,cnt->对应的位宽分别为1,、1、32。
2、Number of Comparators->比较器的数量,这里不能被更改(前一个界面已经设置过了)。
3、Probe Trigger or Data-> 这里保持默认配置就可以。
设置之后->单击ok,ILA IP 配置完成。