ILA 简介
ILA的是一种在线的逻辑分析仪,其主要的作用是可以在线调试一些,系统的寄存器的变量,其仅需要通过连接好jtag 就能正常运行了。
项目建立
项目说明
我建立的就是一个流水灯的文件,最简单的方案,我要监测我的tiemr的变化,和灯的变化的情况
.v 文件
`timescale 1ns / 1ps
//
// Company:
// Engineer:
//
// Create Date: 2020/07/25 00:03:39
// Design Name:
// Module Name: les_test
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//
module les_test(
sys_clk_p,
sys_clk_n,
rst_n, // reset ,low active
led // LED,use for control the LED signal on board
);
input sys_clk_p;
input sys_clk_n;
input rst_n;
output [3:0] led;
//define the timer counter
reg[31:0] timer;
(* mark_debug = "true"*)reg[3:0] led;
wire sys_clk;
IBUFDS sys_clk_ibufgds
(
.O (sys_clk ),
.I (sys_clk_p ),
.IB (sys_clk_n )
);
always @(posedge sys_clk or negedge rst_n)
begin
if (~rst_n)
timer <= 32'd0; // when the reset signal valid,time counter clearing
else if (timer == 32'd199_999_999) //1 seconds count(200M-1=199999999)
timer <= 32'd0; //count done,clearing the time counter
else
timer <= timer + 1'b1; //timer counter = timer counter + 1
end
//===========================================================================
// LED control
//===========================================================================
always @(posedge sys_clk or negedge rst_n)
begin
if (~rst_n)
led <= 4'b0000; //when the reset signal active
else if (timer == 32'd49_999_999) //time counter count to 0.25 sec,LED1 lighten
led <= 4'b0001;
else if (timer == 32'd99_999_999) //time counter count to 0.5 sec,LED2 lighten
begin
led <= 4'b0010;
end
else if (timer == 32'd149_999_999) //time counter count to 0.75 sec,LED3 lighten
led <= 4'b0100;
else if (timer == 32'd199_999_999) //time counter count to 1 sec,LED4 lighten
led <= 4'b1000;
end
endmodule
使用debug core ila
step 1加入debug 测试点
如果我要监测led这个reg ,我应该怎么办呢?
有两种方案:
方案一
直接手动在标记一下
(* mark_debug = “true”*)reg[3:0] led;
方案二
综合后通过界面上,进行标记,如step2中,我们可以 “右键” 然后选择 mark debug
step2 打开debug layout 实现debug 配置
打开的界面如下所示,其可以通过左面的nets 栏目中看到我们的线
step3 set up debug
step4 配置set up debug
选择上,红框中的两个
finish
完成fnish 之后,软件会自动帮我们更新一下,当前的界面
step5 run impletement
完成上面的测试的变量标记之后,我们就可以通过保存我们当前的配置,然后 run impletement
保存当前的配置有两种方法:
(1)在schmatic 界面, ctrl+s
(2) 直接点击 run impleteement ,他会提示你保存
这个时候,我们看我们得xdc得文件,上面会增加很多其他得东西,这个时候表示,我们弄成功了哦
step6 生成bit流
耐心等待,这个过程比较漫长,
程序下载与测试
连接设备
不说了,常规
下载程序
下载部分有两个
点击下载后,会自动跳出下面的界面
点击上面的运行,我们可以得到如下的波形,但是请看到,由于我们的信号的变化速度十分的缓慢,所以依据时钟的变化速度进行采样1024个点的话,我们这个时候也仍然看不结果的,但是实际上,我么已经证明ila 的可用性了/
总结
(1) 介绍了ila
(2) 如何添加要监测的界面
(3) 通过采样的深度可以控制我们要采样多少个点,如果变化特别慢的变量,此时,我们的采样深度要变深或者我们通过其他触发的方式进行(我想应该会有这种方法,我将在下一篇blog 中进行)
参考
(1)https://blog.csdn.net/leon_zeng0/article/details/78465682?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.channel_param
(2) https://blog.csdn.net/u013564276/article/details/49663599