Vivado 在线调试之 ILA 核

转自:https://blog.csdn.net/zhoutaopower/article/details/104742457/

对于已经通过了功能仿真的 Verilog HDL 电路,Download 到板端后,可以通过 Vivado 的 ILA 核进行在线调试,观察波形。ILA 核相当于在线的逻辑分析仪,ISE 上叫做 Chipscope,Vivado 下叫 ILA;

添加 ILA 核的方式比较简单,首先在 Vivado 集成环境中添加 ILA IP Core:

1、点击 IP Catalog,搜索 ila 核,双击 ILA 的 IP

这里,Verilog 源文件用一个简单的 LED 灯作为例子,源文件如下:

module pl_led(
    input sys_clk,
    input rst_n,
    output reg [3:0] led
    );
    parameter max_cnt = 32'd49999999;
    reg [31:0] timer_cnt;
always @ (posedge sys_clk or negedge rst_n)
begin
    if(!rst_n)
    begin
        timer_cnt <= 32'd0;
    end
    else
    begin
        if (timer_cnt < max_cnt) timer_cnt <= timer_cnt + 32'd1;
        else timer_cnt <= 32'd0;
    end
end

always @ (posedge sys_clk or negedge rst_n)
begin
    if(!rst_n)
    begin
        led <= 4'b0000;
    end
    else
    begin
        if(timer_cnt == max_cnt) led <= ~led;
        else led <= led;
    end
end

endmodule

一个 32bit 的 counter 计数器,50MHz 的外部时钟,LED 一秒钟亮,灭;

比如我们需要观察两个信号,一个是 counter 信号,另一个是 led 信号(led[3:0]),所以在双击 ILA IP Core 后,做如下配置:

使用两个 probe (即,探针),一个 probe 0 为查看 counter 计数器的值,另一个 probe 1 为 4bit 位宽的 led 的值;

点击 OK 后,在点击生成:

此刻在资源地方就可以看到这个 IP 了:

然后打开这个 ila 里面的 template 例化的例子:

直接拷贝下来到 Verilog 源码下面去,并将信号对应上:

module pl_led(
    input sys_clk,
    input rst_n,
    output reg [3:0] led
    );
    parameter max_cnt = 32'd49999999;
    reg [31:0] timer_cnt;
always @ (posedge sys_clk or negedge rst_n)
begin
    if(!rst_n)
    begin
        timer_cnt <= 32'd0;
    end
    else
    begin
        if (timer_cnt < max_cnt) timer_cnt <= timer_cnt + 32'd1;
        else timer_cnt <= 32'd0;
    end
end

always @ (posedge sys_clk or negedge rst_n)
begin
    if(!rst_n)
    begin
        led <= 4'b0000;
    end
    else
    begin
        if(timer_cnt == max_cnt) led <= ~led;
        else led <= led;
    end
end

// Add ILA Here
// Instant ila in source code
ila ila_inst(
.clk(sys_clk),
.probe0(timer_cnt),
.probe1(led)
);

endmodule

OK,搞定,重新 Generate 生成 Bit Stream;

单板上电,打开 Open Hardware Manager 然后扫描 Target:

这里我用的是 ZYNQ-7000 的 7020 ;选择 xc7z020_1,右键 Program Device:

点击 Program 下载完毕后,出现在线调试的窗口:

点击左上的三角形,便开始采集波形,当然可以在右下角的窗口设置 Trigger ,这里我将 Trigger 设置成为 timer_cnt 等于 49999999 即,LED 翻转的时刻,设置好后,点击左上角的 RUN:

红色的 T,代表 Trigger ,即,timer_cnt 满足设置的条件

  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值