
鎖相環基本上是每一個fpga工程必不可少的模塊,之前文檔xilinx 7 系列FPGA時鐘資源對xilinx fpga的底層時鐘資源做過說明,但是對于fpga的應用來說,使用Clocking Wizard IP時十分方便的。
Clocking Wizard IP:簡化時鐘設計代碼的開發,用戶不用了解FPGA的底層結構,時鐘源源語,ip使用圖形化界面,根據用戶設置選擇合適的源語及參數。
(資料圖片)
它的主要特性包括:
1、支持MMCM及PLL;
2、安全時鐘啟動功能在輸出端提供穩定有效的時鐘,順序啟動功能提供了序列輸出時鐘;也就是說ip能夠根據設置,保證時鐘穩定后才會輸出,同時多個時鐘間的輸出順序也可以設置;
3、最大能力支持2個輸入,7個輸出;
4、提供了一個AXI4-Lite接口,用于動態地重新配置乘、除、相移/偏移或占空比,鎖相環輸出的時鐘可以動態配置;
5、自動計算vco頻率,乘法、除法因子;用戶只用在IP中確定輸入時鐘及想要的輸出時鐘,ip會自動配置響應的vco頻率及輸出分頻比。
ip設置的第一個界面如下,其中的主要參數為:
Clock Monitor:時鐘監控
Frequency Synthesis :頻率綜合
Minimize Power:最小功耗,犧牲性能
Phase Alignment:輸出時鐘相位鎖定到輸入參考上
SpreadSpectrum:頻譜擴展,降低干擾
Dynamic Reconfiguration:動態重配頻率、占空比
Dynamic Phase Shift:動態調整輸出時鐘關系
SafeClock Startup and Sequencing:用于穩定輸出時鐘及時鐘序列
Balanced:IP自用優化帶寬抖動
Minimize Output Jitter:可能會帶來功耗增加及相位異常
Maximize Input Jitter filtering:會引起輸出時鐘抖動
然后就是兩個輸入時鐘的設置。
第二個界面如下,對輸出時鐘進行配置:
第三個界面如下,顯示根據用戶配置生成的vco頻率及端口。
第四個界面如下,這個界面是根據配置生成的乘法倍數及各個時鐘的分頻數據,這里是允許用戶自己修改的。
最后就是總結界面了,如下圖,是對用戶最終設計的總結。
然后就生成了鎖相環了,用戶可以對其進行例化使用了:
//----------------------------------------------------------------------------// Output Output Phase Duty Cycle Pk-to-Pk Phase// Clock Freq (MHz) (degrees) (%) Jitter (ps) Error (ps)//----------------------------------------------------------------------------// clk_out1__300.00000______0.000______50.0_______94.862_____87.180// clk_out2__100.00000______0.000______50.0______115.831_____87.180// clk_out3__200.00000______0.000______50.0______102.086_____87.180////----------------------------------------------------------------------------// Input Clock Freq (MHz) Input Jitter (UI)//----------------------------------------------------------------------------// __primary_________100.000_____________0.01// The following must be inserted into your Verilogfile for this// core to be instantiated. Change the instance name and port connections// (in parentheses) to your own signal names.//----------- Begin Cut here for INSTANTIATION Template ---// INST_TAG clk_wiz_0 instance_name ( // Clock out ports .clk_out1(clk_out1), // output clk_out1 .clk_out2(clk_out2), // output clk_out2 .clk_out3(clk_out3), // output clk_out3 // Dynamic reconfiguration ports .daddr(daddr), // input [6:0] daddr .dclk(dclk), // input dclk .den(den), // input den .din(din), // input [15:0] din .dout(dout), // output [15:0] dout .drdy(drdy), // output drdy .dwe(dwe), // output dwe // Status and control signals .reset(reset), // input reset .locked(locked), // output locked // Clock in ports .clk_in1(clk_in1) // input clk_in1);
最后說幾點:
首先是MMCM及PLL的選擇,每個CMT包含一個MMCM和一個PLL,他們的結構如下:
MMCM:
PLL:
MMCM和一個PLL的詳細差別如下表,ip生成時可以根據需要進行選擇。
二是關于安全啟動模式,如下圖,這種模式下只有時鐘鎖定后才會有是時鐘輸出,而且時鐘輸出會經過8bit的移位寄存器,移位寄存器設置不同的delay值,就控制了每個時鐘的輸出順序。
標簽: