今天小编在调试FPGA时又遇到一个奇葩的问题!说其奇葩,不知道是我道行不够还是它确实罕见,最后,请一个学长看了半天也没看出来为什么。
我来说说这个奇葩问题吧:
首先有如下vivado工程示意图:
我在模块B中定义了一个位宽为32的变量,然后通过top连接,将数据发送到模块A,最后再传输到PC端的上位机上。然后我在A中例化了一个ila的逻辑分析仪,给他的输入时钟为50mhz,最终显示的值确实为真确值,如下图所示,且值保持不变:
以上都是正常现象。
但当我把A模块中的ila例化换到B模块中时问题就来了,同样采用50mhz的时钟,最终逻辑分析仪出了就成下面这个样子了:
值出现了很大波动,大部分值都成了3CDE*2的值,少部分目前看不出什么规律。更加不可思议的是usb模块输出到上位机的值也改变了,也就是说这个ila确确实实改变了模块变量的数值。我确信我连接代码都是没有问题的,虽然vivado每跑一次都需要很长时间,但小编还是不辞麻烦,两种清楚交替尝试好几次,结果都跟上面一致。
最后,希望有大佬能看到这篇博客,最后潇洒的在评论区留下这种现象出现的原因。另外我自己在之后的调试中若找出原因,也会在评论区给出答案滴!