1. 程式人生 > >PLL和DLL的區別

PLL和DLL的區別

DLL和PLL是兩個完全不同的東西,用在不同的地方。

DLL-Delay locked loop用在數位電路中,用來自動調節一路訊號的延時,使兩路訊號的相位一致(邊沿對齊), 在需要某些數字訊號(比如data bus上的訊號)與系統時鐘同步的情況下, DLL將兩路clock的邊沿對齊(實際上是使被調節的clock滯後系統clock 整數個週期),用被調節的clock做控制訊號,就可以產生與系統時鐘嚴格同步的訊號(比如輸出資料data跟輸入clock同步,邊沿的延時不受到電壓、溫度、頻率影響)。

PLL–Phase locked loop除了用作相位跟蹤(輸出跟輸入同頻同相,這種情況下跟DLL有點相似)外,可以用來做頻率綜合(frequency synthesizer),輸出頻率穩定度跟高精度低漂移參考訊號(比如溫補晶振)幾乎相當的高頻訊號,這時,它是一個頻率源。利用PLL,可以方便地產生不同頻率的高質量訊號,PLL輸出的訊號抖動(頻域上表現為相噪)跟它的環路頻寬,鑑相頻率大小有關。總的說來,PLL的環路頻寬越小,鑑相頻率越高,它的相位噪聲越小(時域上抖動也越小)。

由於在實際ADC系統中,取樣系統總的動態特性主要取決於取樣時鐘的抖動特性,如果對頻率要求不是太高,VCXO是比較好的選擇。如果確實需要可變頻率低抖動時鐘,則基於PLL的時鐘發生器是最好選擇。

從應用上看

DLL即Delay Lock Loop, 主要是用於產生一個精準的時間延遲, 且這個delay不隨外界條件如溫度,電壓的變化而改變.這個delay是對輸入訊號的週期做精確的等分出來的, 比如一個輸入訊號週期為20ns, 可以設計出等分10份的delay, 即最小2ns的delay. 這在高速介面做clock recovery and data recovery上很有用處。 由於普通的delay cell在不同的corner其delay會發生很大的變化(FF與SS相差幾乎3倍), 有時候會被迫採用DLL來產生一個精準的delay而不是用普通的delay cell.

而PLL即Phase lock loop, 主要是根據一個輸入時鐘產生出一個與輸入時鐘訊號in phase的倍/除頻時鐘, 其中倍頻時鐘和輸入、輸出時鐘in phase是最主要的應用。

從內部結構上來看

DLL只有一個大的反饋環來調節最後1T後的訊號與輸入訊號in phase來保證delay 出來的結果是對輸入訊號週期的均分,如示意圖; 輸出訊號只是對輸入訊號的一個delay, 即為同頻且有一個固定的phase差,同時由於輸出訊號與輸入直接關聯,輸入訊號的jitter,frequency 漂移會直接反映在輸出訊號上。在實現上,可以是類比電路也可以是數位電路實現,但絕大多數應該是類比電路實現比較好,因為需要調節電壓來補償環境變化帶來的delay 變化。

PLL除了有一個大的反饋環來讓PLL振出的clock與reference clock in phase,內部還有一個小的ring oscillatorl來振出想要的clock,如示意圖。由於輸出clock是由一個單獨的ring oscillator振出來的,所以與reference clock的jitter,frequency漂移幾乎完全無關。但由於是內部自己起振,所以比DLL要複雜。這個以前也有提過數字PLL, 但做出來的數字PLL振出來的clock很差,就幾乎沒有提數字PLL, 而是採用類比電路來做。

總結一下

(1)DLL 優勢在於可以做到很高精度,可以排除溫度、電壓變化帶來的影響,使得skew 可以作得很小,而且可以調整時鐘佔空比。

(2)PLL 優勢在於抑制clock jitter 以及輸入時鐘的frequency漂移。

補充一點:

DLL中由於Delay的時間範圍有限,所以不大適用於低頻訊號在用過ALTERA和XILINX的FPGA之後,沒有覺得PLL與DLL的區別能表現到做的專案上。

我想是不是對於大多數FPGA設計來說,還不用考慮這兩者的區別

PLL把相位差變成壓差,然後控制VCO,調整輸出時鐘; DLL,把相位差變成延遲訊號,然後通過延遲線調整輸出時鐘。 PLL是類比電路的,DLL是數位電路的。