Xilinx Vivado环境下载bit后自动触发ILA采集

前言

为了观察一些信号变化的瞬间,我们通常将它们加入到ILA中,并设置触发条件,比如上升沿下降沿,或指定的某个值。大多数情况下,我们是下载完bit文件,并在FPGA运行过程中,手动点击触发按钮,然后等待触发。但是有时我们要观察的信号通常在复位完成之后极短的时间就会被触发,这个时间通常是若干个clk之后,或us级。

那么如何通过先设置触发条件,然后下载完成bit文件之后,自动实现触发呢?本文介绍基于XC7A100T硬件平台和Vivado 2018.3开发环境的ILA自动触发实现。

操作方法

首先我们以下面这个顶层设计为例:

/***************************************************************
 * Copyright(C), https://blog.csdn.net/whik1194
 * ModuleName : top_hdl.v 
 * Date       : 2025年1月1日
 * Time       : 16:41:32
 * Author     : whik1194
 * Function   : function
 * Version    : v1.0
 *      Version | Modify
 *      ----------------------------------
 *       v1.0    .....
 ***************************************************************/

module top_hdl(
    //Inputs
    input clk_100m,
    input clk_32k,
    input rst_n
    
    //Inouts
);

//1.localparam

//2.parameter

//3.reg
reg [31:0] cnt;

//4.wire 
wire trig = (cnt == 1000);

//5.assign

//6.always 
always @ (posedge clk_100m) begin
    if(!rst_n) begin
        cnt <= 'd0;
    end
    else begin
        cnt <= cnt + 'd1;
    end
end

//7.instance
ila_0 ila_ut0(
    .clk(clk_100m), // input wire clk
    .probe0({
        cnt,
        trig
    }) // input wire [39:0] probe0
);

endmodule   //top_hdl end

trig信号只会在复位完成之后,计时100个clk拉高1个时钟周期,我们将ILA的触发条件设置为trig信号的上升沿。这种触发条件,正常来说,我们无法通过手动的方式来进行触发,因为当bit文件下载之后,我们再手动设置触发条件,并启动触发,这个时间已经远远超过了100个clk,所以我们只能通过bit下载完成后自动触发的方式实现,实现方法来自UG908文件247页,以下是详细操作步骤。

  1. 首先正常编译生成top_hdl.bit,并下载bit文件,打开ILA,设置trig信号上升沿触发。

  2. 打开底部Tcl Console,通过pwd查看当前工作路径,并切换到一个已知的文件夹,比如,这个文件夹之后会用来存放tas文件和bit文件。tas就是ILA的配置文件,其中就包含用户设置的信号名和触发条件。

  3. 输入以下TCL命令,将当前ILA配置导出tas文件。

run_hw_ila -file ila_trig.tas [get_hw_ilas hw_ila_1] -force 

其中hw_ila_1是当前ila的编号,如果有多个ila需要指定对应的名称。

执行完成之后,就会在第2步设置的文件夹下生成ila_trig.tas文件。

  1. 切换到Open implementation design窗口,执行以下TCL命令:
apply_hw_ila_trigger ila_trig.tas
  1. 执行以下tcl命令,生成新的bit文件,需要一定的时间。
write_bitstream trig_at_startup.bit -force

会在第2步指定的文件夹下生成trig_at_startup.bit文件。

6. 重新下载bit文件,选择上一步新生成的trig_at_startup.bit文件。

在下载完成之后,会自动根据我们设置的条件触发ILA采集。

注意事项

  • 如果改变了ILA的触发条件或信号连接等,需要重复上面所有的步骤。
  • 虽然是下载完成后自动触发,但是实测触发是有延时的,本次示例代码中trig改为500个clk,发现并不能实现触发,1000个是可以的,可能是ILA需要一定的初始化时间。

参考资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

whik1194

如果对你有帮助,欢迎打赏。谢谢

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

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

打赏作者

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

抵扣说明:

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

余额充值