![](https://i-blog.csdnimg.cn/blog_migrate/fbf548ab66df8f8e25156632cbf1f8be.png)
![](https://i-blog.csdnimg.cn/blog_migrate/de4218043bf893a9911c55722c67ccda.png)
在处理线路数据时使用了两个IP核各自生成的用户时钟,因为两个时钟是异步时钟所以必然需要使用FIFO来做跨时钟域处理。仿真时时序没有问题,但是在ila调试过程中出现了初始复位结束后FIFO读端计数值满,如下图所示。
![](https://i-blog.csdnimg.cn/blog_migrate/ec7dccd6eff8c90ef3a865a0c01f2577.png)
经过长达三天时间的修改调试最终确定是复位的问题。
是因为当时在写复位信号的时候只有系统复位,即IP核复位和数据复位使用的是一个复位,导致在IP复位结束后,由IP核生成的用户时钟还不是很稳定就在数据线路中使用,导致出现FIFO异常写满的情况出现。
解决方法:在使用到gt收发器IP核或者以太网IP核生成的用户时钟时,在系统时钟域写两个复位,一个用于复位IP核,另一个在IP核复位结束后一段时间再复位线路数据。
总结:在使用xilinx官方IP核时,如果仿真时的时序是正确的,但是在调试过程中出现了异常问题,仔细检查时钟和复位是否没有问题,然后再考虑逻辑问题。