Vivado ILA Advanced Trigger的使用

          在FPGA工程中经常会因为debug手段有限无法捕捉到错误状态,ila的basic使用能够满足大部分捕捉要求,在不能满足捕捉条件时,编写中间逻辑也可以触发异常状态。vivado提供了 ILA Advanced Trigger,通过编写触发状态机达到触发条件。今天写了简单的debug程序,跑了下 ILA Advanced Trigger,没有太多惊喜,可能小程序,体验不出其特殊价值,期待后面复杂工程的检验。

       程序是一个计数器,在循环计数,通过设置VIO来产生触发条件。代码段如下:

//计数器循环计数
reg[31:0] timer_cnt;
always@(posedge sys_clk) 
timer_cnt <= (timer_cnt >= 32'd49_999_999) ? 0 : timer_cnt + 32'd1;
//产生trigger信号

wire vio_in;//默认初值是0
reg vio_1r;
reg vio_2r;
reg vio_rise;

always@(posedge sys_clk)
begin
   vio_1r   <= vio_in;
   vio_2r   <= vio_1r;
   vio_rise <= ~vio_2r & vio_1r;
end

//例化VIO核
vio_0 vio(
.clk(sys_clk),
.probe_out0(vio_in)
);
//例化ILA核
ila_0 ila(
.clk(sys_clk),
.probe0(timer_cnt),
.probe1(vio_in),
.probe2(vio_rise),
);


1、首先例化ILA核

2、下到板子中,trigger界面可勾选BASIC_ONLY、ADVANCED_ONLY,在勾选ADVANCED_ONLY时,如下图:

3、在advanced trigger下需要编写trigger状态机,该状态机形式简单,保存后缀名为*.tsm。设计的捕捉条件时首先检测到vio信号上升沿后,进入触发timer_cnt状态,在timer_cnt == 32'h00000100时进行触发。具体如下:

#ILA FSM STATE
state wait_for_vio_rise:
 if (vio_rise == 1'b1) then
 goto wait_for_timer_cnt;
 else
 goto wait_for_vio_rise;
 endif
 
 
state wait_for_timer_cnt:
 if (timer_cnt == 32'h00000100) then
 trigger;
 else
 goto wait_for_timer_cnt;
 endif

下载板子中如图:按VIO按钮,触发在timer_cnt == 32'h00000100处。使用FSM状态触发,同时可以触发ILA端口的信号,这样触发条件更严格,有利于异常现象的排查。

这样看来是挺简单的,希望能起到四两拨千斤的效果。

详细的设置可参考ug936-vivado-tutorial-programming-debugging最后一章节。

  • 10
    点赞
  • 69
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Vivado ILA(Integrated Logic Analyzer)是一种用于调试和分析FPGA设计的工具。下面是使用Vivado ILA的简要教程: 1. 将ILA模块添加到设计中:根据引用\[1\]中的说明,将ILA模块添加到需要进行调试的模块中。可以参考夏宇闻老师的《Verilog经典教程第三版》了解具体的Verilog语法。 2. 生成比特流文件:在Vivado中,点击"Generate Bitstream"生成比特流文件。 3. 打开硬件调试:点击"Open Hardware Manager"打开硬件调试界面。 4. 添加调试语句:根据引用\[1\]中的说明,在需要进行调试的模块中添加调试语句(*MARK_DEBUG="true"* )。 5. 配置ILA:在Vivado中,打开IP核目录(IP Catalog),搜索ILA并选择相应的ILA IP核。根据引用\[3\]中的说明,选择需要测量的信号数和采样数据深度等参数。 6. 连接ILA:将ILA IP核实例化模板添加到设计中,并根据需要连接到需要测量的信号。 7. 生成比特流文件:重新生成比特流文件,以包含ILA的配置。 8. 下载比特流文件:将生成的比特流文件下载到FPGA板上。 9. 打开ILA界面:在Vivado的硬件调试界面中,打开ILA界面。可以看到已经命名的ILA,并在左边的模块框内看到对应的端口。 10. 进行调试:根据需要,设置触发条件和采样时机,并开始进行调试和分析。 以上是使用Vivado ILA的简要教程,希望对您有帮助。 #### 引用[.reference_title] - *1* *2* *3* [FPGA学习 Vivado使用篇之ILA(逻辑分析仪)](https://blog.csdn.net/m0_53606280/article/details/123600212)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值