工程中用到一个dcfifo,由Altera的Megafunction生成。
wrclk=33MHz,是外部输入的pci时钟;rdclk=120MHz,是由50MHz的晶振经PLL生成。
实际测试的时候发现运行一段时间就会出现数据错乱的情况。
未修改其他逻辑,只是弃用了板上的50MHz晶振,用33MHz的pci时钟经PLL生成99MHz和132MHz的时钟。fifo的rdclk改为99MHz。另外工程中用到120MHz时钟的模块改为99MHz或132MHz。
再测试就没有问题了。
我们定位问题:33MHz时钟和120MHz时钟无任何相位和频率关系,导致fifo运行不稳定。
但是Altera的文档上根本没有这一限制啊,理论上是不应该出问题的。
这是不是Altera dcfifo的一个......呢???
欢迎有经验的大侠们加入讨论,分享自己的经验啊。 |