【vivado ila 高级触发的使用】之 改变ILA采样频率
一.背景
通常情况下,FPGA工程师在设计完复杂的逻辑设计后,会进行初步的仿真测试,仿真测试之后进行上板测试,但是简单的仿真往往无以应对复杂的实际情况, 上板使用在线调试工具(ILA和VIO)抓取内部信号进行debug是常用的调试方式,一般,ILA的采样频率会选择当前逻辑使用的系统时钟,但是受资源限制,采集深度受限,只能看到连续较短时间内的信号,此时若能减低ila的采样频率,则可以在采样深度不变的条件下,抓到更长时间的数据(此时采样间隔增大,因此要牺牲一些细节)。
二. 改变ILA采样频率的解决方法
1.利用PLL模块或者自分频产生较低的频率,去作为ILA IP中的采样时钟。
这种方法要新增一个ILA的IP ,相当于又占了一波FPGA的资源
2.采用 ILA高级设置和VIO 实现 ILA采样率的自定义设置
在工程中定义一个触发条件寄存器,在ILA高级设置中将此寄存器作为附加的触发条件,则可利用此触发条件实现对采样频率的分频,即如果该触发条件100个系统时钟拉高一次,则实现了采样频率的100分频, 再加上VIO的配合,则可以实现对ILA采样时钟的整数倍分频。 这种方法一劳永逸,可随意切换ILA的采样频率,以达到想到的Debug结果,在工程调试中能起到事半功倍效果。
三.采用 ILA高级设置和VIO 实现 ILA采样率的步骤
1.需要在ILA添加一个信号,此信号建议直接设置为 TRIGGER模式,如下红框所示,此信号专门用作ILA改变采样频率的触发条件
2.代码中产生触发条件。
always@(posedge Sys_Clk or negedge Rst_n)begin
if(!Rst_n) begin;
trigger_cnt <= 32'd0;
end
else if(trigger_cnt >= Vio_freq_div) begin
trigger_cnt <= 32'd0;
end
else begin
trigger_cnt <= trigger_cnt + 32'd1;
end
end
assign trigger = (trigger_cnt==Vio_freq_div);
vio_0 vio_0 (
.clk(Sys_Clk), // input wire clk
.probe_out0(Vio_freq_div)
);
vio ip中默认 0x64 即为100
3.在在线调试界面,找到对应的ILA,进行如下的设置,因为vio默认100 ,则这时的采样频率为 系统时钟的100分之一,如果想改为系统时钟的2分之一,将vio的值改为2即可。
文章来源:https://www.toymoban.com/news/detail-435284.html
四.总结
调试过程中,对debug工具的熟悉会使得调试过程更有效率。如有错误和疑问的地方欢迎留言交流,共同进步。文章来源地址https://www.toymoban.com/news/detail-435284.html
到了这里,关于关于 【vivado ila debug时 高级触发的使用】之 改变ILA采样频率的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!