FPGA中的PLL(锁相环)与Glitches(小故障)-FPGA常见问题社区-FPGA CPLD-ChipDebug

FPGA中的PLL(锁相环)与Glitches(小故障)

 

PLL(phase laocked loop)

图片[1]-FPGA中的PLL(锁相环)与Glitches(小故障)-FPGA常见问题社区-FPGA CPLD-ChipDebug

如果晶振(Oscillator)频率不够高,锁相环就派上用场了。(创建时钟倍频器)

大概原理(我猜):检测参考信号跟VCO信号的相位频率差距,根据差距产生直流电压使得VCO产生与参考信号差距更小的信号。最后达到基本一致的效果,上图放一个分频器就可以从12Mhz的参考信号得到一个36Mhz的输出信号。可以通过这种方法产生非常高频率的信号。

因为真实FPGA算这个PLL输出(通过查FPGA用户手册自己算)略显复杂,apio中集成了apio raw工具帮我们算,如下图是用一个12Mhz的中心频率输出120Mhz的输出信号的写法和输出。

图片[2]-FPGA中的PLL(锁相环)与Glitches(小故障)-FPGA常见问题社区-FPGA CPLD-ChipDebug

下面是如何在verilog代码中调用FPGA的锁相环的相关写法。

图片[3]-FPGA中的PLL(锁相环)与Glitches(小故障)-FPGA常见问题社区-FPGA CPLD-ChipDebug

几个参数:

PLLOUT_SELECT,这个GENCLK代表让输出信号不要产生任何的相移,跟输入信号保持一致。

lock是一个输出信号,通过这个信号可以知道锁相环正在被使用,输出相位被输入相位固定。

Propagation Delay:电线,门(主要)之间一定会有延迟(关键路径?) 。而FPGA用的是LUT(look up table)来表示逻辑关系,而查找表的延时更复杂,这提示在用很高频率的信号时候要注意类似关键路径的问题。

FPGA手册中有pin lut pin的最大传播延时,但是不代表内部信号能满足(如果调用多个LUT,延时会叠加的意思?),一定要让所有延时满足时序要求。

那怎么才能尽量减少这种问题呢,亚稳态与跨时钟域。

请登录后发表评论

    没有回复内容