以前采用两块Spartan3做设计,一块用的30M,一块用的50M,30M使用的是spantan3自带的DCM分频,将分频完的30M分配给AD做数据采集,FPGA采集和处理的后面几个模块都是用的30M。第二块FPGA里用的是晶振出来的50M做时钟,没什么好说的。以前用两块spantan3一切正常,没有什么问题。由于还要加入一些后端的算法,没有办法现在改用一块Spantan6,将两块FPGA的程序和到了一起,现在调试就出现了很多问题,主要还是在时钟上。
用spartan6自带的clocking wizard生成一个30M的时钟,将30M的时钟分配给AD_CLK还有后级的模块,第一个问题就是MAP的时候出错,需要将30M的时钟约束为非全局时钟30M才能从IO输出,但30M时钟后面还得在很多模块上使用必须设置为全局时钟,小弟新手就生成了两个30M,一个为全局的给了后级模块,一个非全局的给了AD输出。貌似正常了几次,但是我后来加入其他模块后,时钟问题又出现了,这次FPGA出现了死机,chipscope的触发时钟根本不动,FPGA所有的IO都拉低了(因为外围的流水灯都变得常亮,正常为30M分频成灯的时钟),但是偶尔重新综合、翻译、布线后又变正常。由于期间调试一些30M驱动的模块时出现了外部流水灯正常跑,而在chipscope中模块触发不起来的现象,我估计问题在时钟上。
不知道问题描述清楚没有,请教给位像我这样的情况,时钟应该怎么设计,有什么要注意的,本人新手忘各位指教!!! |