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

参考资料

相关推荐
9527华安10 小时前
FPGA实现40G网卡NIC,基于PCIE4C+40G/50G Ethernet subsystem架构,提供工程源码和技术支持
fpga开发·架构·网卡·ethernet·nic·40g·pcie4c
search712 小时前
写Verilog 的环境:逻辑综合、逻辑仿真
fpga开发
search719 小时前
Verilog 语法介绍 1-1结构
fpga开发
小眼睛FPGA1 天前
【RK3568+PG2L50H开发板实验例程】Linux部分/FPGA dma_memcpy_demo 读写案例
linux·运维·科技·ai·fpga开发·gpu算力
幸运学者1 天前
xilinx axi datamover IP使用demo
fpga开发
搬砖的小码农_Sky1 天前
XILINX Zynq-7000系列FPGA的架构
fpga开发·架构
热爱学习地派大星1 天前
FPGA矩阵算法实现
fpga开发
热爱学习地派大星1 天前
Xilinx FPGA功耗评估
fpga开发·verilog·vivado·fpga功耗·xpe
搬砖的小码农_Sky2 天前
XILINX Ultrascale+ Kintex系列FPGA的架构
fpga开发·架构
XvnNing2 天前
【Verilog硬件语言学习笔记4】FPGA串口通信
笔记·学习·fpga开发