vivado如何实现在线调试功能(ILA)逻辑分析仪

22 篇文章 9 订阅
19 篇文章 0 订阅

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

  • 4
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

没有水杯和雨伞的工科男

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值