Vivado硬件调试

文章详细介绍了如何使用Vivado中的ILA进行硬件调试,包括添加调试信号、设置触发条件、抓取和分析数据。同时提到了VIO作为虚拟IO,用于实时监控和驱动逻辑信号。在调试完成后,需要清理调试模块并重新生成bit流。
摘要由CSDN通过智能技术生成

Vivado硬件调试

ILA (Integrated Logic Analyzer)

集成逻辑分析仪:监控逻辑内部信号和端口信号。


一、例化ILA添加调试信号

  1. 添加IP核

    在这里插入图片描述

  2. 根据要观测信号的属性设置探针属性

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  3. 创建完成

    在这里插入图片描述

  4. 例化模板

    在这里插入图片描述

  5. 例化;

    在这里插入图片描述

  6. 综合实现,生成bit流;

  7. 下载bit文件至开发板;

    在这里插入图片描述

  8. 设置触发条件

    在这里插入图片描述

  9. 抓取结果

    在这里插入图片描述

    抓取信号窗口的个数

    在这里插入图片描述

    等待抓取

    在这里插入图片描述

    抓取状态:
    在这里插入图片描述

  10. 调试完后,删除例化的调试模块和IP核,重新生成bit文件。

二、综合后在网表里添加调试信号:

  1. 打开综合设计文件,调整窗口为Debug模式;

    在这里插入图片描述

  2. 在”Nets“中选择要调试的信号,右键选择”Mark Debug“;


    在这里插入图片描述

  3. 一些信号可能会被EDA优化,无法显示完整的数据位宽,此时需要在代码中修改,并重新综合。示例如下:

    // 添加debug属性,此时EDA不会对该信号进行优化
    (* mark_debug = "true" *)reg [24:0] counter;
    
  4. 单击”Set Up Debug“

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    // xdc文件中多出来的完整代码:
    set_property MARK_DEBUG true [get_nets {Led_OBUF[0]}]
    set_property MARK_DEBUG true [get_nets {Led_OBUF[1]}]
    set_property MARK_DEBUG true [get_nets {Led_OBUF[2]}]
    set_property MARK_DEBUG true [get_nets {Led_OBUF[3]}]
    set_property MARK_DEBUG true [get_nets Rst_n_IBUF]
    
    create_debug_core u_ila_0 ila
    set_property ALL_PROBE_SAME_MU true [get_debug_cores u_ila_0]
    set_property ALL_PROBE_SAME_MU_CNT 1 [get_debug_cores u_ila_0]
    set_property C_ADV_TRIGGER false [get_debug_cores u_ila_0]
    set_property C_DATA_DEPTH 1024 [get_debug_cores u_ila_0]
    set_property C_EN_STRG_QUAL false [get_debug_cores u_ila_0]
    set_property C_INPUT_PIPE_STAGES 0 [get_debug_cores u_ila_0]
    set_property C_TRIGIN_EN false [get_debug_cores u_ila_0]
    set_property C_TRIGOUT_EN false [get_debug_cores u_ila_0]
    set_property port_width 1 [get_debug_ports u_ila_0/clk]
    connect_debug_port u_ila_0/clk [get_nets [list Clk_IBUF_BUFG]]
    set_property PROBE_TYPE DATA_AND_TRIGGER [get_debug_ports u_ila_0/probe0]
    set_property port_width 4 [get_debug_ports u_ila_0/probe0]
    connect_debug_port u_ila_0/probe0 [get_nets [list {Led_OBUF[0]} {Led_OBUF[1]} {Led_OBUF[2]} {Led_OBUF[3]}]]
    create_debug_port u_ila_0 probe
    set_property PROBE_TYPE DATA_AND_TRIGGER [get_debug_ports u_ila_0/probe1]
    set_property port_width 25 [get_debug_ports u_ila_0/probe1]
    connect_debug_port u_ila_0/probe1 [get_nets [list {counter[0]} {counter[1]} {counter[2]} {counter[3]} {counter[4]} {counter[5]} {counter[6]} {counter[7]} {counter[8]} {counter[9]} {counter[10]} {counter[11]} {counter[12]} {counter[13]} {counter[14]} {counter[15]} {counter[16]} {counter[17]} {counter[18]} {counter[19]} {counter[20]} {counter[21]} {counter[22]} {counter[23]} {counter[24]}]]
    create_debug_port u_ila_0 probe
    set_property PROBE_TYPE DATA_AND_TRIGGER [get_debug_ports u_ila_0/probe2]
    set_property port_width 1 [get_debug_ports u_ila_0/probe2]
    connect_debug_port u_ila_0/probe2 [get_nets [list Rst_n_IBUF]]
    set_property C_CLK_INPUT_FREQ_HZ 300000000 [get_debug_cores dbg_hub]
    set_property C_ENABLE_CLK_DIVIDER false [get_debug_cores dbg_hub]
    set_property C_USER_SCAN_CHAIN 1 [get_debug_cores dbg_hub]
    connect_debug_port dbg_hub/clk [get_nets Clk_IBUF_BUFG]
    
    

    可以直接在xdc文件中添加所要调试的信号探针。

  5. “Open Hardware Manager”,连接开发板并下载程序;

    在这里插入图片描述

    在这里插入图片描述

  6. 调试完毕删除 xdc 文件中多余的代码和 3 中添加的代码,重新生成bit流;

    下载bit文件时,清除Debug文件的路径(图示);

    在这里插入图片描述


VIO (Virtual Input/Output)

虚拟IO:实时监控和驱动逻辑内部信号和端口信号。

VIO的使用参考Blog:VIVADO关于VIO IP核(Virtual Input/Output)的使用


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值