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]
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
2021-11-24 LVDS信号