作者:默宸,来源:FPGA技术联盟
Vivado中提供了多种Debug的操作方式,下面就来总结一下:
1. 代码中例化ILA IP核
第一种,直接例化ILA IP核:
![](http://xilinx.eetrend.com/files/2019-07/wen_zhang_/100044381-76022-01.png)
需要探测多少个信号,信号的位宽是多少,直接选择即可:
![](http://xilinx.eetrend.com/files/2019-07/wen_zhang_/100044381-76024-02.png)
下面界面可以选择探测信号宽度以及触发方式:
![](http://xilinx.eetrend.com/files/2019-07/wen_zhang_/100044381-76025-03.png)
可谓之简单粗暴,如果没人干预你,就这样用也没关系。之后直接在程序中例化即可。
2. 通过网表标记
综合后生成网表,在网表中设置Debug:Mark Debug。
![](http://xilinx.eetrend.com/files/2019-07/wen_zhang_/100044381-76026-04.png)
或者在综合后的原理图中Mark Debug,这和网表debug是一致的:
![](http://xilinx.eetrend.com/files/2019-07/wen_zhang_/100044381-76027-05.png)
在标记Debug后,就等于选择了需要debug的信号,之后在综合设置里设置Debug参数即可:
![](http://xilinx.eetrend.com/files/2019-07/wen_zhang_/100044381-76028-06.png)
选择需要Debug的信号,设置时钟域以及触发方式等:
![](http://xilinx.eetrend.com/files/2019-07/wen_zhang_/100044381-76029-07.png)
选择采样深度:
![](http://xilinx.eetrend.com/files/2019-07/wen_zhang_/100044381-76030-08.png)
之后,重新综合,实现生成bit流文件即可完成debug,准备上板子吧。
注意:有些信号能够Mark Debug,有些则不能,例如模块直接的输入信号不能:
![](http://xilinx.eetrend.com/files/2019-07/wen_zhang_/100044381-76031-09.png)
它经过一个Buf之后就可以:
![](http://xilinx.eetrend.com/files/2019-07/wen_zhang_/100044381-76032-10.png)
最后的输出也不能?
![](http://xilinx.eetrend.com/files/2019-07/wen_zhang_/100044381-76033-11.png)
哎呀, 具体什么个原则我也不知道了,不如就直接在网表中试试吧,如果不行,就找类似的代替呗。
综合后,也许你说自己找不到原理图在哪里,那就看这里:
![](http://xilinx.eetrend.com/files/2019-07/wen_zhang_/100044381-76034-12.png)
方式二已经很实用了吧,不用修改代码!
3. 代码中Mark_debug
第三种还要在代码中加入标记:
![](http://xilinx.eetrend.com/files/2019-07/wen_zhang_/100044381-76035-13.png)
之后综合,在set up debug,之后的操作同方式二。
![](http://xilinx.eetrend.com/files/2019-07/wen_zhang_/100044381-76036-14.png)