不枉初心,砥砺前行

皮皮祥的博客

欢迎留言,评论

导航

debug hub

在进行 复杂的FPGA系统调试时经常会用到 Xilinx 的Debug Core(Chip scope), 但是烧录程序后, 想通过ILA 查看波形时,经常会遇到以下问题。找不到Debug Core/ILA,怎么办?

1. dbg_hub 没有时钟

如果硬件正常,找不到Debug Core,90%是因为这个原因。

  • 什么是dbg_hub

Debug Hub 就是 Jtag 与 Debug Cores 之间的中间件,如果它没时钟或者时钟没有运行,jtag 就无法识别其他的dbg core。用原理图方式打开,可以查到debug 信号与 dbg_hub 连接到 一起,dbg_hub的信号可能没有连接,下图中直接与地相连。

  • dbg_hub 怎么产生的

Vivado 在综合后的 opt_design 阶段自动产生的 不能手动例话。正常情况下会自动分配到一个已有时钟上,如果自动分配的时钟没有没有正常运行,那么Debug hub 就无法被识别。如果系统没有系统时钟,可能就会分配到GND。

  • 怎样设定dbg_hub 所使用的时钟
    在约束文件中添加如下命令,手动设置好时钟(get_nets sys_clk_200m),然后生产bit即可。
connect_debug_port dbg_hub/clk [get_nets sys_clk_200m]
  • dbg_hub Clk 注意事项

Jtag 的时钟要比 Dbg hub的时钟慢2.5 倍。因此如果实在不能达到次条件的话,需要手动修改Jtag 的时钟频率。

Program and Debug --> Open hardware manager--> Open Target --> Open new target

2. BSCAN_SWITCH_USER_MASK 不正确

正常此参数不会出现问题,如果出现问题 可以尝试修改。

  • User scan Chain 是啥

User scan chain 用于检测debug core。类似与通道的概念,默认是1 , 设置成其他的可能是xilinx 内部调试用,或者以其他方式调用, 如下图所示。

  • BSCAN_SWITCH_USER_MASK 是啥
    bscan_switch_user_mask 的每一位就是用来表示是否使能这个 user scan chain,默认是0001(二进制)。如果不是,可以通过约束文件约束C_USER_SCAN_CHAIN ,然后生产bit文件即可。

( Debug hub 的 User Scan chain “1”与 BSCAN_SWITCH_USER_MASK“0001”对应即可)

 set_property C_USER_SCAN_CHAIN 1 [get_debug_cores dbg_hub] 
 
 
vivado-programming-debugging​www.xilinx.com/support/documentation/sw_manuals/xilinx2017_1/ug908-vivado-programming-debugging.pdf
AR# 64764​www.xilinx.com/support/answers/64764.html

posted on 2022-11-24 17:35  皮皮祥  阅读(3368)  评论(0)    收藏  举报