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]
浙公网安备 33010602011771号