PLL(phase laocked loop)
如果晶振(Oscillator)频率不够高,锁相环就派上用场了。(创建时钟倍频器)
大概原理(我猜):检测参考信号跟VCO信号的相位频率差距,根据差距产生直流电压使得VCO产生与参考信号差距更小的信号。最后达到基本一致的效果,上图放一个分频器就可以从12Mhz的参考信号得到一个36Mhz的输出信号。可以通过这种方法产生非常高频率的信号。
因为真实FPGA算这个PLL输出(通过查FPGA用户手册自己算)略显复杂,apio中集成了apio raw工具帮我们算,如下图是用一个12Mhz的中心频率输出120Mhz的输出信号的写法和输出。
下面是如何在verilog代码中调用FPGA的锁相环的相关写法。
几个参数:
PLLOUT_SELECT,这个GENCLK代表让输出信号不要产生任何的相移,跟输入信号保持一致。
lock是一个输出信号,通过这个信号可以知道锁相环正在被使用,输出相位被输入相位固定。
Propagation Delay:电线,门(主要)之间一定会有延迟(关键路径?) 。而FPGA用的是LUT(look up table)来表示逻辑关系,而查找表的延时更复杂,这提示在用很高频率的信号时候要注意类似关键路径的问题。
FPGA手册中有pin lut pin的最大传播延时,但是不代表内部信号能满足(如果调用多个LUT,延时会叠加的意思?),一定要让所有延时满足时序要求。
那怎么才能尽量减少这种问题呢,亚稳态与跨时钟域。
没有回复内容