"欢迎各位大佬在评论区发表你们的调试问题与解决方式"
一、Vivado报错
【labtools 27-3403】
原因:JTAG频率过高。
解决:连接调试器时降低JTAG频率。
二、硬件调试
RS233、SPI等串口数据传输问题:
1.波特率不匹配、时钟频率不匹配。
2.RX、TX接反。
3.发送端与接收端未共地。
4.数据大小端
5.命令间隔时间太短
6.协议错误
7.需要先输入密码再发控制指令(真的是有毒,艹)
三、程序调试
1、200MHz时钟5ns的时钟周期控制信号定时发射时,需要将样点数据(200MHz时钟22相数据,232位)从200M的时钟域同步到100M的SerDes传输时钟域(100MHz时钟14相数据,164位),会造成时间刻度从5ns增加到了10ns。通过移动一个样点的方式可以将时间刻度恢复到5ns。
2、FPGA在软件打开后工作异常,调试器抓取时显示未找到时钟。原因是打开软件后将时钟切换为了外参考时钟,而外参考时钟不稳定造成时钟无法锁定,FPGA无工作时钟无法工作。需要自适应时钟在外参考时钟无法锁定时自动切换为内参考时钟。
3、算法实现时先在matlab中进行仿真,再使用verilog编写算法,再将verilog的实现步骤在matlab中实现,对比仿真的结果,结果完全匹配后再进行实现。对比时将verilog仿真结果的数据保存后导入到matlab中进行分析。
4、dds输出的频率不精确时需要频偏校正,比如驱动时钟是204.8MHz需要产生1MHz的正弦波形时如果相位的精度是32位,则每个时钟的相位增量就是(1M/204.8M)*(2^32) = 20,971,520 是一个整数,dds产生的正弦波频率为1MHz。如果驱动时钟是200MHz要产生1MHz的正弦波,则每个时钟的相位增量就是1/200*2^32=21,474,836.48 是一个小数,此时相位增量只能设置为21,474,836就会造成产生的正弦波频率约为0.9999999776MHz。此时就需要将丢失0.48的相位补偿回来补偿的周期为0.48与1的最小公倍数25(0.48*25=1*12),也就是第25时钟时相位的增量21,474,8367+12 (21,474,836.48*25==21,474,836*24+21,474,848*1)。
5、PCIE链路偶尔掉链逻辑无问题。增加PCIE的GT接口的驱动能力。