全數字鎖相環(DPLL) 由于避免了模擬鎖相環存在的溫度漂移和易受電壓變化影響等缺點。從而具備可靠性高、工作穩定、調節方便等優點。在調制解調、頻率合成、FM立體聲解碼、圖像處理等各個方面得到廣泛的應用。隨著電子設計自動化(EDA) 技術的發展,采用大規模可編程邏輯器件(如CPLD 或FPGA) 和VHDL 語言來設計專用芯片ASIC 和數字系統,而且可以把整個系統集成到一個芯片中,實現系統SOC ,構成片內鎖相環。下面介紹采用VHDL技術設計DPLL 的一種方案。 1 DPLL 的基本結構 全數字鎖相環結構框圖如圖1 所示, 由數字鑒相器、數字環路濾波器和數控振蕩器3 部分組成。 設計中數字鑒相器采用了異或門鑒相器;數字環路濾波器由變模可逆計數器構成(模數K 可預置) ;數控振蕩器由加/ 減脈沖控制器和除N 計數器構成。 可逆計數器和加/ 減脈沖控制器的時鐘頻率分別為Mf0和2Nf0 。這里f0 是環路的中心頻率,一般情況下M 和N 為2 的整數冪。時鐘2Nf0 經除H( = M/2N) 計數器得到。 2 數字鎖相環的原理與實現 全數字鎖相環原理如圖2 所示, 其中: clk 為時鐘頻率,等于32f 0 ; U1 為輸入,頻率為f0 ; j 為異或門鑒相器的輸出,它作為變模可逆計數器的方向控制信號;out 為加/ 減脈沖控制器的輸出; U2 為DPLL 的輸出,在相位鎖定的頻率為f0 , 相位與輸入U1 相差Π/ 2 ; D、C、B 、A 可預置變模可逆計數器的模數,它在0001 —1111 范圍內變化, 相應的模數在2.3 —2. 17 范圍內變化; En 為可逆計數器使能端。 圖2 數字鎖相環原理圖 2. 1 鑒相器的設計 異或門鑒相器用于比較輸入信號u1 與數控振蕩器輸出信號u2 的相位差, 其輸出信號ud 作為可逆計數器的計數方向控制信號。當ud 為低電平時( u1 和u2 有同極性時) ,可逆計數器作"加"計數。反之,當ud 為高電平時,可逆計數器作"減"計數。 當環路鎖定時, f i 和f o 正交,鑒相器的輸出信號Ud 為50 % 占空比的方波,此時定義相位誤差為零,在這種情況下,可逆計數器"加"和"減"的周期是相同的,只要可逆計數器只對其時鐘的k 值足夠大( k> M/ 4) , 其輸出端就不會產生進位或借位脈沖, 加/ 減脈沖控制器只對其時鐘2Nf o 進行二分頻, 使f i和f o 的相位保持正交。在環路未鎖定的情況下, 若Ud = 0 時它使可逆計數器向上加計數,并導致進位脈沖產生, 進位脈沖作用到加/ 減脈沖控制器的"加"控制端i , 該控制器便在二分頻過程中加入半個時鐘周期, 即一個脈沖。反之, 若Ud = 1 時, 可逆計數器進行減計數, 并將反出解圍脈沖到加/ 減脈沖控制器的"減"輸入端d ,于是,該控制器便在二分頻過程中減去半個時鐘周期,即一個脈沖。這個過程是連續發生的。加/ 減脈沖控制器的輸出經過除N計數后。使得本地估算信號U2 的相位受到調整控制,最終達到鎖定的狀態。 異或門鑒相器在環路鎖定時和相位誤差達到極限時的相應波形如圖3 所示: 圖3 異或門鑒相器工作波形 2. 2 數字環路濾波器的設計 數字環路濾波器是由變模可逆計數器構成的。該計數器設計為一個17 位可編程(可變模數) 可逆計數器,計數范圍是,由外部置數DCBA 控制。假設系統工作無相位差,由鎖相環原理知, u1 和u2 的相位差0 ,異或門鑒相器輸出是一個對稱的方波,如圖4 (a) 所示。因此可逆計數器在相同的時間間隔內進行加或減計數,只要k 足夠大,那么從零開始的計數就不會溢出或不夠。 若u1 開始落后u2 ,異或門輸出不對稱,那么計數器加計數時間比減計數時間長,其結果計數器隨著時間的增長將溢出,產生一個進位脈沖。相反,若U1 開始滯后U2 ,計數器將產生一個借位脈沖。進位和借位脈沖可用來控制DCO ,使得DCO 輸出的脈沖數根據進位和借位來加上或者是刪除一些脈沖,實際上也就改變了DCO 的輸出頻率。變模可逆計數器的設計由VHDL 完成,程序如下: library ieee ; use ieee. std_logic_1164. all ; use ieee. std_logic_unsigned. all ; entity li is port (clk ,j ,en ,d ,c ,b ,a :in std_logic ; r1 ,r2 ![]() end li ; architecture behave of li is signal cq ,k ,mo :std_logic_vector (16 downto 0) ; signal cao1 ,cao2 :std_logic ; signal instruction :std_logic_vector (3 downto 0) ; begin instruction with instruction select mo "00000000000001111"when"0010", "00000000000011111"when"0011", "00000000000111111"when"0100", "00000000001111111"when"0101", "00000000011111111"when"0110", "00000000111111111"when"0111", "00000001111111111"when"1000", "00000011111111111"when"1001", "00000111111111111"when"1010", "00001111111111111"when"1011", "00011111111111111"when"1100", "00111111111111111"when"1101", "01111111111111111"when"1110", "11111111111111111"when"1111", "00000000000000111"when others ; process (clk ,en ,j ,k ,cq) begin if clk'event and clk = '1'then k if en = '1'then if j = '0'then if cq else cq '0') ; end if ; else if cq > 0 then cq else cq end if ; end if ; else cq '0') ; end if ; end if ; end process ; process (en ,j ,cq ,k) begin if en = '1'then if j = '0'then f cq = k then cao1 else cao1 end if ; cao2 else if cq ="00000000000000000"then cao2 else cao2 end if ; cao1 end if ; else cao1 end if ; end process ; r1 end behave ; 變模可逆計數器(取k = 24) 的仿真波形圖如圖4 所示。 圖4 變模可逆計數器(取k = 24) 的仿真波形圖 2. 3 數控振蕩器的設計 數控振蕩器由加/ 減脈沖控制器和除N 計數器組成的。加/ 減脈沖控制器其實是一個增量—減量計數器式DCO。它和環路濾波器連用。如果在環路濾波器無進位、錯位的時候,加/ 減脈沖控制器對時鐘2NFo 進行二分頻。當加/ 減脈沖控制的增量輸入端( I = 1) 輸入一個進位脈沖時, 輸出脈沖中通過該計數器內部加上一個時鐘脈沖。反之,當加/ 減脈沖控制的減量輸入端( D = 1) 時輸入一個借位脈沖輸出脈沖中就減去一個時鐘脈沖。因此通過借位和進位脈沖可以使輸出頻率得到改變, 輸出頻率能被進位和借位脈沖的最高頻率控制在一個給定的范圍內。加/ 減脈沖控制器由D 觸發器和J K 觸發器構成,根據功能分析,可以設計出相應的VHDL 程序。其運行后仿真波形如圖5 所示: 圖5 加/ 減脈沖控制器仿真波形圖 3 實驗仿真結果與分析 本設計中全數字鎖相環路采用軟件來實現的,通過用VHDL 語言編寫模塊,然后仿真,例化,逐漸由下而上的實現整個電路,最終達到整體仿真下載成功。 環路鎖定( k = 2^5) ,DPLL 系統仿真波形如圖6所示。 圖6 環路鎖定(取k = 2^5) 時的仿真波形 由仿真波形可以看出, u1 和u2 達到鎖定狀態時的仿真時間是70us。 環路鎖定( k = 27) 時,DPLL 系統的仿真波形如圖7 所示: 圖7 環路鎖定(取k = 27) 時的波形仿真圖 在這種情況下, u1 和u2 達到鎖定狀態的仿真時間是180ms。 顯然,模k 愈大,環路進入鎖定狀態的時間越長。k 取得過大,對抑制噪聲、減少相位抖動有利,但是同時又加大了環路進入鎖定狀態的時間。反之, k 取得過小,可以加速環路的鎖定,而對噪聲的抑制能力卻隨之降低。 4 結語 采用VHDL 設計全數字鎖相環路,具有設計靈活,修改方便和易于實現的優點,并能夠制成嵌入式片內鎖相環。該類數字鎖相環路中計數器的模數可以隨意修改,這樣,就能夠根據不同的情況最大限度地、靈活地設計環路。 |