相位鎖定迴路(PLL)最基本的功能方塊包含相位頻率偵測器(Phase Frequency Detector, PFD)、充電泵(Charge Pump)、迴路瀘波器(Loop Filter)及壓控振盪器(VCO),PFD的偵測輸出與PLL的相位雜訊、相位抖動、鎖定時間及週期滑動(Cycle Slipping)有很大的關係...
相位鎖定迴路(PLL)最基本的功能方塊包含相位頻率偵測器(Phase Frequency Detector, PFD)、充電泵(Charge Pump)、迴路瀘波器(Loop Filter)及壓控振盪器(VCO),PFD的偵測輸出與PLL的相位雜訊、相位抖動、鎖定時間及週期滑動(Cycle Slipping)有很大的關係,這些是影響高速通訊系統效能好壞的重要因素,本文即在探討如何從PFD的改進來改善這些問題。
在此文中使用美國麻省理工學院Michael Perrott教授在網路上開放下載的Sue2及CppSim這兩個可以模擬鎖相迴路及通訊系統的應用程式,而且CppSim程式在執行模擬演算之後所得到的模擬數據也已經被國際承認,因此直接使用C:\CppSim\Sue2\SueLib\ Synthesizer_Examples\sd_synth_tristate_fast.sue及sd_synth_tristate.sue這兩個分數除頻式頻率合成器(Fractional-N Frequency Synthesizer)的範例檔案,其中sd_synth_tristate_fast.sue的檔案內容即是如圖1所示的電路概圖,而圖中的tristate_pfd電路檔案被存放在C:\CppSim\Sue2\SueLib\CppSimModules\ tristate_pfd.sue,在後續更改相位頻率偵測器的設計之後所產生的模擬數據,只是僅僅將這個tristate_pfd更換為其他型式的相位頻率偵測器,並不會變更reset_delay的參數值。
在CppSimView程式中繪製模擬結果的命令是參照圖1中的文字「To observe dynamics: select test.tr0 plotsig(X,sd_in;Vin)」與「To observe phase noise︰ select test_noise.tr0 plot_pll_phasenoise(X,10e3,30e6,noiseout)」,在這些模擬結果已被證實可靠的條件下,產生後續將要介紹的模擬結果,並且以Plotsig(X,Vin;Up;Down)命令來觀察更換不同的相位頻率偵測器之後,會對圖1的相位頻率偵測器的Up和Down的數位邏輯輸出,和VCO的Vin電壓輸入產生什麼樣的變化,此文僅描述在sd_synth_tristate_fast.sue範例檔案裡更換各種相位頻率偵測器之後的模擬結果。
‧Sue2是用來繪製模擬電路的程式,CppSim是將Sue2的電路檔案利用g++編譯出模擬資料及
觀看模擬結果的程式,下載網址為
www-mtl.mit.edu/researchgroups/
perrottgroup/tools.html。
‧繪製出sd_in與Vin的波形,用來觀察鎖相迴路的動態運作情形,必須選擇test.tr0輸出檔。
‧繪製出鎖相迴路的相位雜訊,用來觀察相位雜訊,必須選擇test_noise.tr0輸出檔。
圖2是圖1的範例檔案(sd_synth_tristate _fast.sue)經由CppSim程式執行之後的模擬結果,從C:\CppSim\SimRuns\Synthesizer_ Examples\sd_synth_tristate_ fast\test.par模擬參數檔得知,sd_in的數值在一開始時是92.31793713,40微秒以後是97.31793713,在圖中可看到分數除頻式頻率合成器在40微秒以前已經達到穩定的Vin電壓、此時頻率合成器已在頻率鎖定的狀態,從40微秒開始由於sd_in數值的改變,使得Vin電壓隨之變動,從40微秒開始到Vin電壓再次趨於穩定的時間(140微秒),即可得知頻率合成器的鎖定時間是多少。
範例檔案中的tristate_pfd會產生很小的死區(Dead Zone),也就是Up輸出端和Down輸出端會在很短的時間內同時輸出為1,其發生的頻率等同於Ref輸入端的時脈頻率,使充電泵的電流直接對地充放電,對系統產生些許的電源雜訊,再經過迴路瀘波器之後,對PLL貢獻少許的相位雜訊。
圖3即是觀察190.00~190.25微秒之間Vin與Up/Down的變化關係,此時頻率合成器已達到頻率鎖定,Vin電壓在3.5448~3.5458之間有著微小的變動,而Up和Down的模擬數值也幾乎相同;在190.05~190.06微秒與190.15~190.16微秒之間,Vin電壓迅速下降,此時乃是Div輸入端的時脈約略領先Ref輸入端的時脈,使得Down的模擬數值先大於0。
圖4是相位雜訊(Phase Noise)的模擬輸出,分數除頻式頻率合成器會在迴路頻寬(Loop Filter Bandwidth)之外產生突波(Spurs),在圖1中使用「差異積分調變器(Sigma-Delta Modulator)」電路模塊(圖中的ΣΔ符號)來產生分數除頻的數值,也可以均化分數突波(Fractional-N Spurs),另一方面均化之後的突波會比內部電路所產生的雜訊來得高,所以可以抵抗頻率合成器內部的雜訊干擾,範例檔的最大突波是-79.6dBc,出現在20MHz附近(Frequency Offset from Carrier),全部的相位雜訊(10K~30MHz)在-76dBc/Hz以下,在10KHz是-79dBc/Hz,在100KHz是-81dBc/Hz,在1MHz是-116dBc/Hz,而且這個範例檔的模擬輸出將與後續所產生的模擬互相比較。
PFD_ET_N代表著PFD-Enhanced Tristate-No dither,並以PFD_ET_N替換原範例檔的tristate_pfd電路模塊,然後經由CppSim程式產生模擬結果。觀察圖5的Vin電壓變化情形,與圖2最大的差異就是鎖定時間變長,約在180微秒之後Vin電壓才維持在一個很小的範圍內變動,然而Up與Down的變化在200微秒之後仍然會有很大的變化,而且在220微秒之後出現略有週期性的變化,所以將test.par模擬參數檔裡的end_time與start_time(Output for Noise)從200微秒增加到250微秒,在此模擬中,如果要縮減鎖定時間,即可增加開迴路增益(Open Loop Gain),亦即是增加充電泵的電流。在此圖中Vin、Up與Down三者之間的變化關係很清楚,當Vin電壓上升時Up為1,當Vin電壓下降時Down為1,但是在170~180微秒卻是Vin下降Up為1,這個情形將在下個模擬中觀察。
圖6中,在240.00~240.30微秒的時間區間中可以很明顯地看出Up與Down沒有在同一個時間內同時為1,而Up與Down的輸出看起來像是在抵補迴路瀘波器電路裡的電容放電所導致的相位誤差,假設Ref與Div的頻率與相位的誤差量會因鎖相迴路的作用而越來越小,最後的誤差量為0,然後再觀察240.00~240.13微秒與240.10~240.33微秒Vin、Up與Down之間的變化,而且此時Up與Down的數值變化量對於Vin電壓的輸入是呈正比的現象,但是Up與Down的輸出值都會忽然變大,這是分數除頻式頻率合成器造成的週期滑動(Cycle Slipping),使得Ref與Div的頻率與相位在此時一直會有一個微小的誤差量存在,可以觀察240~243微秒的Vin、Up,及Down;或是在CppSimView使用Plotsig(X,div_val;Vin)命令來觀察圖1所示的div_val端點與Vin的關係;或是將sd_synth_tristate_fast.sue電路圖檔案裡的「ΣΔ」電路模塊移除,改成整數除頻式頻率合成器之後再模擬,並且將test.par檔案裡的end_time改為350e-3或更長的時間,即可比較兩者的差異。
圖7是相位雜訊的模擬輸出,PFD_ET_N的最大突波是-101dBc,跟tristate_pfd的-79.6dBc相比少21.4dBc,亦即PFD_ET_N可以有效降低分數除頻式頻率合成器所產生的突波,全部的相位雜訊(10K~30MHz)在-95dBc/Hz以下,在10KHz是-96dBc/Hz,在100KHz是-97c/Hz,在1MHz是-118Bc/Hz,PFD_ET_N在10K~100KHz的相位雜訊也比tristate_pfd低了15dBc/Hz。雖然PFD_ET_N在相位雜訊上有良好表現,但是在韌性控制(Robust Control)理論推導下,須將相位頻率偵測器加入擾動(Dither),鎖相迴路才能在長時間的運作下正常動作。