ILA可以加在代码里使用,也可以加在网表里使用。在这里举例加在代码中使用,硬件平台:Xilinx AX7020
1.打开vivado,新建项目(选择对应的芯片型号)
2.添加源文件,编写RTL代码
`timescale 1ns / 1ps // // Company: // Engineer: // // Create Date: 2019/03/29 14:03:40 // Design Name: // Module Name: counter // Project Name: // Target Devices: // Tool Versions: // Description: // // Dependencies: // // Revision: // Revision 0.01 - File Created // Additional Comments: // // module counter( input clk, output [3:0]led ); wire clk; (* keep = "TURE" *)reg [3:0] cnt = 4'd0; assign led = cnt; always@(posedge clk) begin cnt <= cnt + 4'd1; end endmodule
3.加入ILA核
在vivado工程中打开IP Catalog选项,找到ILA核

配置ila核,主要配置4个地方:1.组件的名字,2. 需要抓取的信号的个数,3. 抓取的信号的深度,4.所抓取的信号的宽度,此例子的cnt是4bit。OK!


4.IP核配置完成,默认选择,Generate

5.在RTL源代码中添加例化ILA核,ILA核的clk信号需要连接到需要观察信号的相应时钟域,在一个RTL设计中是可以添加多个ILA核的,用于观察不同时钟域的信号。
`timescale 1ns / 1ps module counter( input clk, output [3:0]q ); wire clk; (* keep = "TURE" *)reg [3:0] cnt = 4'd0; //在RTL中的信号前加上(*keep = "TRUE"*)即表示抓取该信号 assign q = cnt; always@(posedge clk) begin cnt <= cnt + 4'd1; end ila_1 u_ila( .clk(clk), .probe0(cnt) ); endmodule
6.添加xdc约束文件,绑定引脚
set_property PACKAGE_PIN U18 [get_ports clk] set_property IOSTANDARD LVCMOS33 [get_ports clk] set_property IOSTANDARD LVCMOS33 [get_ports {led[3]}] set_property IOSTANDARD LVCMOS33 [get_ports {led[2]}] set_property IOSTANDARD LVCMOS33 [get_ports {led[1]}] set_property IOSTANDARD LVCMOS33 [get_ports {led[0]}] set_property PACKAGE_PIN J16 [get_ports {led[3]}] set_property PACKAGE_PIN K16 [get_ports {led[2]}] set_property PACKAGE_PIN M15 [get_ports {led[1]}] set_property PACKAGE_PIN M14 [get_ports {led[0]}]
7.综合

8.生成bit文件,生成后选择Open Hadrware Manager

9.连接硬件

10.下载调试

11.下载成功后会自动弹出ILA波形界面,选择RUN触发,通过放大缩小可以清晰看到波形时序。

12.完美结束!
注:
使用ILA抓取数据代码:
write_hw_ila_data -force -csv_file C:/Users/Administrator/Desktop/1.csv
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/213843.html原文链接:https://javaforall.net
