Vivado中提供了多种Debug的操作方式,下面就来总结一下:
方式一:代码中例化ILA IP核
需要探测多少个信号,信号的位宽是多少,直接选择即可:
下面界面可以选择探测信号宽度以及触发方式:
方式二:通过网表标记
综合后生成网表,在网表中设置Debug:Mark Debug
或者在综合后的原理图中Mark Debug,这和网表debug是一致的:
在标记Debug后,就等于选择了需要debug的信号,之后在综合设置里设置Debug参数即可:
选择需要Debug的信号,设置时钟域以及触发方式等:
选择采样深度:
之后,重新综合,实现生成bit流文件即可完成debug,准备上板子吧。
注意:有些信号能够Mark Debug,有些则不能,例如模块直接的输入信号不能:
它经过一个Buf之后就可以:
最后的输出也不能?
哎呀, 具体什么个原则我也不知道了,不如就直接在网表中试试吧,如果不行,就找类似的代替呗。
综合后,也许你说自己找不到原理图在哪里,那就看这里:
方式二已经很实用了吧,不用修改代码!
方式三:代码中Mark_debug
之后综合,再set up debug,之后的操作同方式二。
最后说一下,set up debug只会对通过在网表中添加的信号起作用,也即如果你之前通过例化ILA IP核已经添加了一些debug信号,那么在set up debug窗口中是不显示的。
通过ILA添加的debug信号和通过在网表中添加的debug信号属于不同的debug core,在调试窗口可以切换。即使都是通过网表添加的debug信号,由于是不同时间添加的以及设置问题也可能属于不同的debug core。
如果一些信号在网表中找不到,可能是被优化掉了,那么可以在代码里的信号前面加上keep标记以使信号避免被优化,如下所示:
(* KEEP="TRUE" *) wire clk_125M;