一路晶振时钟同时使用多个PLL分频、倍频的问题
时间:10-02
整理:3721RD
点击:
最近做项目的时候遇到一个很迷惑的问题,求助各位大神:
一路外部晶振时钟输入,经过三路PLL生成了8路多种频率的输出时钟,其中一路输出时钟(记为clk_A,83.33MHz)作为DDR3的系统时钟输入,再经过DDR3 IP核内部定义的PLL又生成了一个用户时钟(记为clk_ddr3_uclk)。当使用晶振时钟倍频出的另一个时钟(记为clk_B,100MHz)控制将图像数据写入同步FIFO,而后用clk_ddr3_uclk读FIFO从而将数据写入ddr3时,ISE工具报告时序错误,错误报在FIFO内部写FIFO指针处,而且尤其奇怪的问题是对于100MHz的clk_B工具给出的requirement居然是0.5ns!
为此,我尝试将clk_B降频为40MHz,编译仍然存在时序问题,只是时序状况有所改善。然而关键是,当我使用另外一个外部输入时钟(80MHz左右)代替clk_B操作写FIFO时,编译就通过了。
那么,请问产生这个问题的具体原因是什么:PLL生成的时钟之间本身存在一定的相位关系,导致工具对本应该10ns周期的单沿时钟给出的requirement只有0.5ns? 还是,同一路时钟用驱动多路PLL(且存在PLL级联现象)时驱动能力不足导致的?亦或者其它什么原因?
望各位大神指教,谢谢!
