微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > IC后端设计交流 > 终于,我也遇到了时序问题了,激动求解中

终于,我也遇到了时序问题了,激动求解中

时间:10-02 整理:3721RD 点击:
最近遇到一些问题,代码里有两个20M时钟,一个是外部芯片的输入时钟,一个是片内PLL产生的20mHz。另外还有一个是33Mhz的PCI总线输入时钟。最初写代码时,我认为20MHz也不算高频,并且工程也不大, 于是就没有注意跨时钟域的处理和时钟约束,现在代码写完了,调试时遇到了很头疼的问题,就是代码不稳定。代码功能是对CCD进行图像采集,现在的运行情况,采到50几左右,图像就错掉了。
由于情况不稳定,无法设置准确的捕捉条件,我用signaltap捉了好几天才捉到几个造成不稳定情况的因素。主要如下:
1.状态机跳入了一个未知状态:同时处在了IDLE和READ状态。后来发现原因是:状态机工作在33MHz,而从IDLE到工作状态的跳转条件却是由一个20MHz时钟产生的,虽然33MHz采20MHz,理论上是没有什么问题,但是却导致了状态机跳转不稳定。后来我使用33兆时钟对20兆时钟打了两拍,就暂未出现以上情况。
2.DPRAM的读出数据存在毛刺。原因是:数据同步在片内PLL产生的20MHz,而写时钟却是片外输出的20兆时钟,可能造与写进去的时候就产生了毛刺,从而读出时也产生了毛刺。
3.一个模块A产生一个20M时钟的低电平脉冲信号,当它传到另一个模块后,用同样的20M时钟去采,居然偶尔会出现采不到的情况。
以上前两个问题,都是跨时钟域的信号没有进行处理造的,看来时钟问题真的是不管多大的频率都要注意啊,不然是后患无穷。
以前只是在看别人的文档时,了解到对于跨时钟域的信号可能会遇到种种问题,直到现在自己遇到了,才明白其重要性。只是现在还是不大明白,对第1个问题,为何解决方法是打两拍,因为理论是高频采低频是没问题才对啊。另外第2个问题,两个时钟都是20兆,频率一样的,可能只是相位不同,为何会出现毛刺呢?
对于第3个问题,我真是无解啊,目前出来的错,都是第三个问题造成的,为何两个模块都工作在同一个时钟下,会出现漏采的情况呢

2.DPRAM的读出数据存在毛刺。原因是:数据同步在片内PLL产生的20MHz,而写时钟却是片外输出的20兆时钟,可能造与写进去的时候就产生了毛刺,从而读出时也产生了毛刺
====================
dpram读写时钟是同步的还是异步的?
既然是dpram可以用异步的
如果产生毛刺那是时钟产生有问题。

至于你的第三个问题,如果2个20M是异步的,用的时候还是要小心

时钟无论多慢,对 hold 的影响都一样

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top