目录
硬件调试方法
ILA(监控内如何端口信号)或VIO核(不仅可以监控还可以驱动)进行硬件调试
添加ILAIP核
实例化ILAIP核
使用ILA排查错误
另一个debug方法
仿真
代码固化(即写入Flash中)
方法一
方法二
时钟IP核(MMCM可动态调整和取反、PLL)
硬件调试方法
主要思路:(看卡到哪一步,然后一步一步向下排查,按照一个个小模块去检查)
1.排查外设的硬件问题(更换硬件器件进行测试)
2.clk与rst
3.主从设备之间有没有正常联系(M-S,看最关键的直接输出的信号)
4.协议检查:对协议中的关键信号进行检查如状态机信号——影响状态机的控制信号——一步一步推比如到计数器之类(state)
5.读写的数据是否正确(data)
6.用假数据测试,用简单的数据如12345678去测试可以方便的排查地址问题(触发信号trgger)
前提:手册读懂
ILA(监控内如何端口信号)或VIO核(不仅可以监控还可以驱动)进行硬件调试
使用方法:
添加ILAIP核
1.搜索栏输入ILA找到ILAIP核进行添加
2.ILAIP核的设置,主要有抓取信号个数和位宽还有抓取深度
实例化ILAIP核
1.找到veo文件里自动实现的实例化代码复制到自己的顶层模块中
2.将需要抓取的信号连接上
使用ILA排查错误
1.自顶向下的思路定位错误信号
2.使用多次触发来查看避免特殊情况
3.使用指定数值触发直接观察信号(如目标数值是data,设置数值达到data触发观察)
4.找到错误修改信号后对应的ILA探针信号也要记得修改,如位宽等,避免再次出错
掌握调试方法是成功实现的第一步!!!!!
另一个debug方法
1.进入原理图界面切换到debug,点击set debug,此时可以对端口信号添加探针,主要只能在BUF端添加,若想对内部信号进行检测需要再信号前加(*mark_debug = "true"*)
后续调试和IAL一样
仿真
1.RTL(行为级即寄存器级)仿真,理想状态下的行为级仿真,测试逻辑功能
2.时序(门级)仿真,综合后的仿真,考虑路径延迟和门延迟,最接近真实情况
代码固化(即写入Flash中)
方法一
1.tools里的CCF中选择flash类型,注意flash位宽是4位,此处的大小是128MB,选择生成路径即可
2.再次之前生成4位宽的比特需要在xdc中写相关原语:
set_property CFGBVS VCCO [current_design]
set_property CONFIG_VOLTAGE 3.3 [current_design]
set_property BITSTREAM.GENERAL.COMPRESS true [current_design]
set_property BITSTREAM.CONFIG.CONFIGRATE 50 [current_design]
set_property BITSTREAM.CONFIG.SPI_BUSWIDTH 4 [current_design]
set_property BITSTREAM.CONFIG.SPI_FALL_EDGE Yes [current_design]
3.上电添加flash进行烧录
方法二
bin文件生成
setting中设置bin文件后直接进行生成bin文件,直接把这个bin文件下载进去就行了
时钟IP核(MMCM可动态调整和取反、PLL)
1.输入clock调用IP核进行设置:选择哪种IP核;生成几个时钟可以设置频率和相位;注意选择复位有效电平,此处应该低电平有效
2.使用veo进行实例化,其实就是连接输入输出管脚