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需要一定的初始化时间。

参考资料

相关推荐
坏孩子的诺亚方舟9 天前
FPGA系统架构设计实践15_高云Arora V系列时钟体系
fpga开发·系统架构
FPGA小徐9 天前
入门 CNN 结构全解析|从流程图理论到 FPGA Verilog 硬件实现(含习题带讲解)
fpga开发
FPGA小徐9 天前
FPGA 数字信号处理:并行 FIR 与串行滤波器设计原理、对比与完整 Verilog 实现
fpga开发
Saniffer_SH10 天前
【高清视频】Gen6 服务器还没到,Gen6 SSD 怎么测?Emily 现场演示三种测试环境
人工智能·驱动开发·测试工具·缓存·fpga开发·计算机外设·压力测试
zlinear数据采集卡10 天前
双核架构深度解析:ARM+FPGA如何让数据采集卡实现500Ksps高性能?
arm开发·fpga开发·架构
9527华安10 天前
FPGA实现GTH Transceivers Wizard传输2路视频,基于aurora 8b10b编解码架构,提供4套工程源码和技术支持
fpga开发·gth·aurora 8b10b·transceivers
FPGA小徐11 天前
FPGA 数字信号处理(二):并行 FIR 滤波器的 Verilog 全流程设计与实现
fpga开发
国科安芯11 天前
基于AS32S601ZIT2型抗辐照MCU的商业航天卫星姿态确定与控制系统研究
单片机·嵌入式硬件·安全·fpga开发·架构·risc-v
ALINX技术博客11 天前
【黑金云课堂】FPGA技术教程FPGA基础:I2C 总线通信技术
fpga开发·i2c
Hello-FPGA11 天前
Xilinx KU040 FPGA Camera Link 图像采集
c++·fpga开发