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

文章目录

前言

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

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

操作方法

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

c 复制代码
/***************************************************************
 * 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文件。

c 复制代码
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命令:
c 复制代码
apply_hw_ila_trigger ila_trig.tas
  1. 执行以下tcl命令,生成新的bit文件,需要一定的时间。
c 复制代码
write_bitstream trig_at_startup.bit -force

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

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

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

注意事项

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

参考资料

相关推荐
X_xcccc3 小时前
2026高端FPGA选型指南与核心供应商解析
fpga开发
Terasic友晶科技8 小时前
【教程】Agilex 5 SOC FPGA的HPS端如何响应FPGA端中断(二)——修改Quartus工程(GHRD工程)
fpga开发·terasic·agilex 5 soc·ghrd工程
sramdram8 小时前
FPGA系统SRAM外扩芯片选型与工程应用要点
fpga开发·sram·fpga系统·外扩芯片·sram外扩芯片
明德扬11 小时前
FPGA下载成功但上电不运行怎么查?配置Flash、启动模式与电源时序
fpga开发·fpga
努力搬砖的小H11 小时前
FPGA应用技巧之DDR3读写自检方案设计与IP仿真总结
经验分享·功能测试·fpga开发·modelsim·ddr3
bingcheby12 小时前
PS通过AXI总线控制PL的LED灯实验之四---编程下载调试
驱动开发·fpga开发·iar
国科安芯12 小时前
小卫星综合电子系统中RISC-V抗辐射MCU的功能安全与多接口集成架构分析
单片机·嵌入式硬件·安全·fpga开发·架构·risc-v
HUSTCH20211 天前
FPGA中的LUT和DSP
fpga开发
Riwuarua1 天前
从近似0基础开始FPGA开发 -- part.4 FPGA-PS(MicroBlaze)
fpga开发
zlinear数据采集卡1 天前
FRAM铁电存储器原理深度解析:D223校准参数的“永久保险箱“
arm开发·人工智能·stm32·单片机·fpga开发·开源