Xilinx PLL(Virtex-5)


1. 概述

1.1 CMT

Xilinx Virtex-5 FPGA根據不同型號分別有1、2、6個時鍾管理片(Clock Management Tile,CMT),每個CMT由一個PLL和兩個DCM組成。CMT包含專有路由來連接同一個CMT中的DCM和PLL,使用專有路由可以改進時鍾路徑。CMT如下圖:

 

 

 1.2 PLL

PLL框圖如下圖:

 

 

 

 

 

 

PLL時鍾輸入來源為:IBUFG、BUFG、IBUF、PLL outputs、DCM outputs。PFD(Phase-Frequency Detector)為相位頻率檢測器,CP(Charge Pump)為驅動電荷泵,LF(Loop Filter)環路濾波器,VCO為壓控振盪器。D、M、O0~O5為可編程計數器,用於分頻。PFD比較參考時鍾與反饋時鍾的相位和頻率,產生與兩個時鍾相位頻率成比例的信號來驅動CP和LF產生VCO的參考電壓,通過反饋使得參考時鍾與反饋時鍾頻率相位相同。相關公式如下:

                                                                    F_{VCO}=F_{CLKIN}\times \frac{M}{D}

                                                                    F_{OUT}=F_{CLKIN}\times \frac{M}{DO}

2. 一般用法說明

2.1 PLL原語

 

 

PLL_BASE原語:PLL_BASE提供時鍾偏移校正(Clock deskew)、頻率合成(frequency synthesis)、粗略相移(coarse phase shifting)、占空比(duty cycle programming)等功能。

PLL_ADV原語:PLL_ADV提供PLL_BASE的所有功能,還提供輸入時鍾切換、與同CMT的DCM連接、動態重配置的功能。

接下來討論時鍾網絡偏移校正(clock network deskew)、頻率合成(frequency synthesis)、降低抑制(jitter reduction)三種模式。

2.2 時鍾網絡偏移校正(clock network deskew)

PLL和DLL能夠補償時鍾網絡延遲。將與參考時鍾CLKIN頻率匹配的時鍾輸出(通常是CLKFBIN)連接到BUFG並反饋到反饋輸入端口CLKFBIN,在這種情況下,所有時鍾都與參考時鍾具有確定的相位關系。

2.3 獨立的頻率合成(frequency synthesis only)

此模式下,PLL不用於校正時鍾網絡,而用於為其他模塊生成時鍾。此模式下,將PLL的反饋路徑設為INTERNAL,這樣能將所有路由保持在本地,並能減少抖動。此模式下,參考時鍾與輸出時鍾之間沒有相應的相位關系,但輸出時鍾之間具有相應的時鍾關系。如下圖:

 

 

2.4 抖動濾波器(jitter filter)

PLL能減少參考時鍾的固有抖動,PLL能夠單獨作為抖動濾波器實例化,在外部時鍾驅動另一個模塊之前濾除抖動。作為抖動濾波器,通常假設PLL為緩沖器,並在時鍾輸出端口上再生輸入頻率。通常將BANDWIDTH屬性設為Low能實現更大的抖動濾波,但會導致PLL的靜態偏移增大。

2.5 限制

PLL在VCO工作范圍、最小和最大輸入頻率、占空比、相移等方面有一些限制。

VCO工作范圍:詳見DS202.Table 74.PLL Specification。

最小和最大輸入頻率:詳見DS202.Table 74.PLL Specification。

占空比:在給定工作頻率之后,只能實現部分離散值的占空比。

相移:相移分辨率(Phase Shift)PS=1/(8FVCO)或PS=D/(8MFIN)。由於VCO能提供8個相移(每個45°),因而VCO頻率越高,相移分辨率越小。相移分辨率范圍1/(8FVCO_MIN)~1/(8FVCO_MAX)。

2.6 PLL設計

兩種方法產生PLL:GUI接口(PLL Wizard)、PLL原語。

需要如下信息:1、參考時鍾周期

                         2、輸出時鍾頻率(最多可以有六個)

                         3、輸出時鍾占空比(默認為50%)

                         4、輸出時鍾相移(相對於最快輸出時鍾的周期數)

                         5、PLL所需帶寬(默認為OPTIMIZED)

                         6、補償模式

                         7、參考時鍾抖動

輸入時鍾確定:第一步確定輸入時鍾。輸入頻率給D和M值帶來的約束如下:

                                                      D_{MIN}=roundup\frac{f_{IN}}{f_{PFDMAX}}

                                                   D_{MAX}=rounddown\frac{f_{IN}}{f_{PFDMIN}}

                                              M_{MIN}=(roundup\frac{f_{VCOMIN}}{f_{IN}})\times D_{MIN}

                                          M_{MAX}=rounddown\frac{D_{max}\times f_{VCOMAX}}{f_{IN}}

M和D值的確定:輸入時鍾的確定會產生一些可能的M和D值,下一步是確定最佳的M和D值。首先基於VCO目標頻率(VCO理想工作頻率)確定起始M值。

                                                 M_{IDEAL}=\frac{D_{MIN}\times f_{VCOMAX}}{f_{IN}}

目的是使D和M的值盡可能小,同時保持VCO值盡可能高。

2.7 PLL端口

CLKIN1(Input):通用時鍾輸入。

CLKIN2(Input):輔助時鍾輸入,用於動態切換PLL參考時鍾。

CLKFBIN(Input):反饋時鍾輸入。

CLKINSEL(Input):控制輸入選擇器狀態,High=CLKIN1,Low=CLKIN2。

RST(Input):異步復位信號,輸入條件改變時,需要復位。

DADDR[4:0](Input):動態重配置地址輸入總線,為動態重配置提供重配置地址。 不使用時,必須為所有位分配零。

DI[15:0](Input):動態重配置數據輸入總線,提供重配置數據。 不使用時,所有位必須設置為零。

DWE(Input):動態重配置寫使能輸入端口,提供寫使能控制信號以將DI數據寫入DADDR地址。 不使用時,必須綁低。

DEN(Input):動態重配置使能,提供使能控制信號以訪問動態重配置功能。 不使用時,必須綁低。

DCLK(Input):動態重配置端口參考時鍾。

REL(Input):在PLL模式下,保持未連接或低電平。

CLKOUT[0:5](Output):用戶可配置時鍾輸出。輸入時鍾和輸出時鍾是相位對齊的。

CLKFBOUT(Output):PLL專用反饋輸出。

CLKOUTDCM[0:5](Ouput):用戶可配置時鍾輸出,只能連接到與PLL相同的CMT內的DCM。

CLKFBDCM(Output):應該是用於連接到DCM反饋時鍾輸入端口。

LOCKED(Output):指示PLL實現相位對齊和頻率匹配。若輸入時鍾停止或違反了相位對齊,則LOCKED置為無效,LOCKED置為無效后必須復位PLL。

DO[15:0](Ouput):動態重配置輸出總線,在使用動態重配置時提供PLL數據輸出。

DRDY(Output):動態重配置就緒輸出,為PLL動態重配置功能提供對DEN信號的響應。

2.8 PLL屬性

COMPENSATION(String):SYSTEM_SYNCHRONOUS(Default)、SOURCE_SYNCHRONOUS、INTERNAL、EXTERNAL、DCM2PLL、PLL2DCM

指定輸入時鍾的PLL相位補償。

BANDWIDTH(String):HIGH、LOW、OPTIMIZED(Default)

指定影響PLL的抖動、相位裕度和其他特性的PLL編程算法。

CLKOUT[0:5]_DIVIDE(Integer):1(Default) ~ 128

與CLKFBOUT_MULT和DIVCLK_DIVIDE值組合將決定輸出頻率。

CLKOUT[0:5]_PHASE(Real):-360.0 ~ 360.0  0.0(Default)

以度數偏移量指定相移。

CLKOUT[0:5]_DUTY_CYCLE(Real):0.01 ~ 0.99  0.50(Default)

以百分比形式指定占空比。

CLKFBOUT_MULT(Integer):1(Default) ~ 64

與CLKOUT#_DIVIDE值和DIVCLK_DIVIDE值一起確定輸出頻率。

DIVCLK_DIVIDE(Integer):1(Default) ~ 52

輸入頻率分頻。

CLKFBOUT_PHASE(Real):0.0(Default) ~ 360.0

指定反饋時鍾輸出的相位偏移,反饋時鍾相移會導致所有輸出時鍾的負相移。

REF_JITTER(Real):0.000 ~ 0.999  0.100(Default)

允許指定參考時鍾上的預期抖動,以便更好地優化PLL性能。如果未知,BANDWIDTH值為OPTIMIZED將會為輸入時鍾選擇最佳參數。如果已知,則應根據輸入時鍾上預期抖動的UI百分比(最大峰值到峰值)來指定提供的值。

CLKIN1_PERIOD(Real):1.408 ~ 52.630  0.000(Default)

指定PLL CLKIN1輸入的輸入周期(ns)。 分辨率降至ps。 此信息是強制性的,必須提供。默認值0.000為了強制用戶輸入正確的值。

CLKIN2_PERIOD(Real):1.408 ~ 52.630  0.000(Default)

指定PLL CLKIN2輸入的輸入周期(ns)。 分辨率降至ps。 此信息是強制性的,必須提供。默認值0.000為了強制用戶輸入正確的值。

CLKOUT[0:5]_DESKEW_ADJUST(String):PPC 、NONE(Default)

在PPC440系統中使用PLL時使用的固定延遲。

RESET_ON_LOSS_OF_LOCK(String):FALSE(Default)

必須設置為FALSE。

2.9 PLL CLKIN1和CLKIN2的使用

CLKIN1是PLL的通用輸入。 CLKIN2端口用於在工作期間在CLKIN1和CLKIN2之間動態切換,由CLKINSEL端口選擇。 如果同時使用CLKIN1和CLKIN2,並且PLL輸入時鍾由全局時鍾引腳驅動,則兩個時鍾信號引腳的放置有幾個限制。 CLKIN1只能來自IBUFG [4-0]。 CLKIN2只能來自IBUFG [9-5]。 此外,CLKIN2必須根據CLKIN1的值映射到特定位置。 這些規則如下:

 

 

當PLL輸入時鍾由全局時鍾樹(BUFGs)驅動時,兩個時鍾輸入必須連接到相同的時鍾輸入類型。 用IBUFG驅動一個PLL時鍾輸入,用BUFG驅動另一個PLL時鍾輸入是不可能的。

下表列出了Virtex-5 FPGA全局時鍾IBUFG引腳與CLKIN1和CLKIN2的關系。

 

 

 

 

 

2.10 PLL時鍾輸入信號

PLL時鍾源可以來自多個來源,包括:

IBUFG: 全局時鍾輸入緩沖器,PLL將補償此路徑的延遲。
BUFGCTRL:內部全局時鍾緩沖器,PLL不會補償此路徑的延遲。
IBUF:不建議使用,因為PLL無法補償一般路由的延遲。 IBUF時鍾輸入必須在路由到PLL之前路由到BUFG。
DCMOUT:PLL的任何DCM輸出都將補償此路徑的延遲。

2.11 計數器控制

PLL輸出計數器使用DIVIDE,DUTY_CYCLE和PHASE的組合提供各種合成時鍾。下圖說明了計數器設置如何影響計數器輸出。

 

 

2.12 時鍾移位

通過在參考或反饋路徑中選擇八個相位之一來插入延遲,可以移位PLL輸出時鍾。下圖比較了無延遲、延遲插入反饋路徑、延遲插入參考路徑的情況下的時鍾邊沿。

 

 

3. 詳細的VCO和輸出計數器波形

下圖顯示了8個VCO相位輸出和4個不同的計數器輸出。

 

 

4. 參考時鍾切換

PLL參考時鍾的動態切換可以使用CLKINSEL引腳,切換是異步完成的。在使用CLKINSEL來切換時鍾時,PLL應保持在復位狀態,以免出現窄脈沖。如下圖:

 

 

當輸入時鍾或反饋時鍾丟失時,PLL將輸出更低或更高頻率的時鍾, 頻率增加/減少會導致輸出時鍾頻率變為原始配置的六倍。

5. PLL使用模型

這里介紹幾種PLL的使用模型。

5.1 時鍾網絡偏移校正(Clock Network Deskew)

PLL的主要用途之一是用於時鍾網絡偏移校正。下圖顯示了此模式下的PLL,相關的時鍾波形顯示在右側。其中1、4、6對齊,2、3、5對齊,它們之間延遲了一個BUFG延遲的時間。

 

 

反饋的實現有一個限制,即PFD的兩個輸入頻率必須相同,滿足以下公式:

                                                                  \frac{f_{IN}}{D}=f_{FB}=\frac{f_{VCO}}{M}

5.2 帶內部反饋的PLL(PLL with Internal Feedback)

當PLL用作頻率合成器或抖動濾波器且PLL輸入時鍾和PLL輸出時鍾之間不需要相位關系時,PLL反饋可以在PLL內部。此時PLL的性能將會增加。如下圖:

 

 

5.3 零延遲緩沖(Zero Delay Buffer)

PLL還可用於生成零延遲緩沖時鍾。如下圖:

 

 

5.4 DCM驅動PLL

DCM能夠生成精確的相移時鍾,但是DCM無法降低參考時鍾的抖動,PLL可以降低一個DCM輸出時鍾的抖動。當DCM輸出用於直接驅動PLL時,DCM和PLL必須位於同一個CMT塊內,這是首選實現,因為它在本地專用路由上產生最小量的噪聲。也可以通過將DCM連接到BUFG然后連接到PLL的CLKIN輸入來建立連接。如下圖,相關波形在右側。

 

 

5.5 PLL驅動DCM

減少時鍾抖動的第二個選擇是使用PLL驅動DCM,在輸入時鍾抖動進入DCM之前清除,這將改善所有DCM輸出的抖動,但DCM自身產生的抖動仍將傳遞到時鍾輸出。PLL和DCM應位於同一CMT塊中,因為PLL和DCM之間存在專用資源以支持零延遲模式。當PLL和DCM不在同一個CMT塊中時,需通過BUFG來阻止歪斜的可能。一個PLL可以驅動多個DCM。

 

 

5.6 PLL和PLL連接

PLL可以級聯,以產生更大范圍的時鍾頻率。級聯PLL需將第一個PLL的輸出連接到BUFG,再連接到第二個PLL的CLKIN引腳。 此路徑提供最低的設備抖動。第二PLL的輸出時鍾與輸入時鍾之間的相位關系是不確定的。如下圖:

                                         f_{OUTPLL2}=f_{OUTPLL1}\frac{M_{PLL2}}{D_{PLL2}\times O_{PLL2}}=f_{IN}\frac{M_{PLL1}}{D_{PLL1}\times O_{PLL1}}\times \frac{M_{PLL2}}{D_{PLL2}\times O_{PLL2}}

 

 

6. 應用指南

PLL可以在很大的范圍內產生可配置輸出集,而DCM只具有基於參考時鍾的固定數量的預定輸出,但當應用需要精細相移或動態可變相移時,DCM可能是更好的解決方案。

PLL應用示例:

CLKOUT0_PHASE = 0; CLKOUT0_DUTY_CYCLE = 0.5; CLKOUT0_DIVIDE = 2;

CLKOUT1_PHASE = 90; CLKOUT1_DUTY_CYCLE = 0.5; CLKOUT1_DIVIDE = 2;

CLKOUT2_PHASE = 0; CLKOUT2_DUTY_CYCLE = 0.25; CLKOUT2_DIVIDE = 4;

CLKOUT3_PHASE = 90; CLKOUT3_DUTY_CYCLE = 0.5; CLKOUT3_DIVIDE = 8;

CLKOUT4_PHASE = 0; CLKOUT4_DUTY_CYCLE = 0.5; CLKOUT4_DIVIDE = 8;

CLKOUT5_PHASE = 135; CLKOUT5_DUTY_CYCLE = 0.5; CLKOUT5_DIVIDE = 8;

CLKFBOUT_PHASE = 0; CLKFBOUT_MULT = 8;

DIVCLK_DIVIDE = 1;

CLKIN1_PERIOD = 10.0;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM