采用VHDL設計的全數字鎖相環(huán)電路設計

發(fā)布時(shí)間:2010-8-18 10:57    發(fā)布者:lavida
關(guān)鍵詞: VHDL , 數字鎖相環(huán)
全數字鎖相環(huán)(DPLL) 由于避免了模擬鎖相環(huán)存在的溫度漂移和易受電壓變化影響等缺點(diǎn)。從而具備可靠性高、工作穩定、調節方便等優(yōu)點(diǎn)。在調制解調、頻率合成、FM立體聲解碼、圖像處理等各個(gè)方面得到廣泛的應用。隨著(zhù)電子設計自動(dòng)化(EDA) 技術(shù)的發(fā)展,采用大規?删幊踢壿嬈骷(如CPLDFPGA) 和VHDL 語(yǔ)言來(lái)設計專(zhuān)用芯片ASIC 和數字系統,而且可以把整個(gè)系統集成到一個(gè)芯片中,實(shí)現系統SOC ,構成片內鎖相環(huán)。下面介紹采用VHDL技術(shù)設計DPLL 的一種方案。  

1 DPLL 的基本結構  

全數字鎖相環(huán)結構框圖如圖1 所示, 由數字鑒相器、數字環(huán)路濾波器和數控振蕩器3 部分組成。  


  
設計中數字鑒相器采用了異或門(mén)鑒相器;數字環(huán)路濾波器由變?赡嬗嫈灯鳂嫵(模數K 可預置) ;數控振蕩器由加/ 減脈沖控制器和除N 計數器構成。  

可逆計數器和加/ 減脈沖控制器的時(shí)鐘頻率分別為Mf0和2Nf0 。這里f0 是環(huán)路的中心頻率,一般情況下M 和N 為2 的整數冪。時(shí)鐘2Nf0 經(jīng)除H( = M/2N) 計數器得到。  

2 數字鎖相環(huán)的原理與實(shí)現  

全數字鎖相環(huán)原理如圖2 所示, 其中: clk 為時(shí)鐘頻率,等于32f 0 ; U1 為輸入,頻率為f0 ; j 為異或門(mén)鑒相器的輸出,它作為變?赡嬗嫈灯鞯姆较蚩刂菩盘;out 為加/ 減脈沖控制器的輸出; U2 為DPLL 的輸出,在相位鎖定的頻率為f0 , 相位與輸入U1 相差Π/ 2 ; D、C、B 、A 可預置變?赡嬗嫈灯鞯哪,它在0001 —1111 范圍內變化, 相應的模數在2.3 —2. 17 范圍內變化; En 為可逆計數器使能端。  


  
圖2 數字鎖相環(huán)原理圖  

2. 1 鑒相器的設計  

異或門(mén)鑒相器用于比較輸入信號u1 與數控振蕩器輸出信號u2 的相位差, 其輸出信號ud 作為可逆計數器的計數方向控制信號。當ud 為低電平時(shí)( u1 和u2 有同極性時(shí)) ,可逆計數器作"加"計數。反之,當ud 為高電平時(shí),可逆計數器作"減"計數。  

當環(huán)路鎖定時(shí), f i 和f o 正交,鑒相器的輸出信號Ud 為50 % 占空比的方波,此時(shí)定義相位誤差為零,在這種情況下,可逆計數器"加"和"減"的周期是相同的,只要可逆計數器只對其時(shí)鐘的k 值足夠大( k> M/ 4) , 其輸出端就不會(huì )產(chǎn)生進(jìn)位或借位脈沖, 加/ 減脈沖控制器只對其時(shí)鐘2Nf o 進(jìn)行二分頻, 使f i和f o 的相位保持正交。在環(huán)路未鎖定的情況下, 若Ud = 0 時(shí)它使可逆計數器向上加計數,并導致進(jìn)位脈沖產(chǎn)生, 進(jìn)位脈沖作用到加/ 減脈沖控制器的"加"控制端i , 該控制器便在二分頻過(guò)程中加入半個(gè)時(shí)鐘周期, 即一個(gè)脈沖。反之, 若Ud = 1 時(shí), 可逆計數器進(jìn)行減計數, 并將反出解圍脈沖到加/ 減脈沖控制器的"減"輸入端d ,于是,該控制器便在二分頻過(guò)程中減去半個(gè)時(shí)鐘周期,即一個(gè)脈沖。這個(gè)過(guò)程是連續發(fā)生的。加/ 減脈沖控制器的輸出經(jīng)過(guò)除N計數后。使得本地估算信號U2 的相位受到調整控制,最終達到鎖定的狀態(tài)。  

異或門(mén)鑒相器在環(huán)路鎖定時(shí)和相位誤差達到極限時(shí)的相應波形如圖3 所示:  


  
圖3 異或門(mén)鑒相器工作波形  

2. 2 數字環(huán)路濾波器的設計  

數字環(huán)路濾波器是由變?赡嬗嫈灯鳂嫵傻。該計數器設計為一個(gè)17 位可編程(可變模數) 可逆計數器,計數范圍是,由外部置數DCBA 控制。假設系統工作無(wú)相位差,由鎖相環(huán)原理知, u1 和u2 的相位差0 ,異或門(mén)鑒相器輸出是一個(gè)對稱(chēng)的方波,如圖4 (a) 所示。因此可逆計數器在相同的時(shí)間間隔內進(jìn)行加或減計數,只要k 足夠大,那么從零開(kāi)始的計數就不會(huì )溢出或不夠。

若u1 開(kāi)始落后u2 ,異或門(mén)輸出不對稱(chēng),那么計數器加計數時(shí)間比減計數時(shí)間長(cháng),其結果計數器隨著(zhù)時(shí)間的增長(cháng)將溢出,產(chǎn)生一個(gè)進(jìn)位脈沖。相反,若U1 開(kāi)始滯后U2 ,計數器將產(chǎn)生一個(gè)借位脈沖。進(jìn)位和借位脈沖可用來(lái)控制DCO ,使得DCO 輸出的脈沖數根據進(jìn)位和借位來(lái)加上或者是刪除一些脈沖,實(shí)際上也就改變了DCO 的輸出頻率。變?赡嬗嫈灯鞯脑O計由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 ut std_logic) ;  

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 計數器組成的。加/ 減脈沖控制器其實(shí)是一個(gè)增量—減量計數器式DCO。它和環(huán)路濾波器連用。如果在環(huán)路濾波器無(wú)進(jìn)位、錯位的時(shí)候,加/ 減脈沖控制器對時(shí)鐘2NFo 進(jìn)行二分頻。當加/ 減脈沖控制的增量輸入端( I = 1) 輸入一個(gè)進(jìn)位脈沖時(shí), 輸出脈沖中通過(guò)該計數器內部加上一個(gè)時(shí)鐘脈沖。反之,當加/ 減脈沖控制的減量輸入端( D = 1) 時(shí)輸入一個(gè)借位脈沖輸出脈沖中就減去一個(gè)時(shí)鐘脈沖。因此通過(guò)借位和進(jìn)位脈沖可以使輸出頻率得到改變, 輸出頻率能被進(jìn)位和借位脈沖的最高頻率控制在一個(gè)給定的范圍內。加/ 減脈沖控制器由D 觸發(fā)器和J K 觸發(fā)器構成,根據功能分析,可以設計出相應的VHDL 程序。其運行后仿真波形如圖5 所示:  


  
圖5 加/ 減脈沖控制器仿真波形圖  

3 實(shí)驗仿真結果與分析  

本設計中全數字鎖相環(huán)路采用軟件來(lái)實(shí)現的,通過(guò)用VHDL 語(yǔ)言編寫(xiě)模塊,然后仿真,例化,逐漸由下而上的實(shí)現整個(gè)電路,最終達到整體仿真下載成功。  

環(huán)路鎖定( k = 2^5) ,DPLL 系統仿真波形如圖6所示。  


  
圖6 環(huán)路鎖定(取k = 2^5) 時(shí)的仿真波形  

由仿真波形可以看出, u1 和u2 達到鎖定狀態(tài)時(shí)的仿真時(shí)間是70us。  

環(huán)路鎖定( k = 27) 時(shí),DPLL 系統的仿真波形如圖7 所示:  


  
圖7 環(huán)路鎖定(取k = 27) 時(shí)的波形仿真圖  

在這種情況下, u1 和u2 達到鎖定狀態(tài)的仿真時(shí)間是180ms。  

顯然,模k 愈大,環(huán)路進(jìn)入鎖定狀態(tài)的時(shí)間越長(cháng)。k 取得過(guò)大,對抑制噪聲、減少相位抖動(dòng)有利,但是同時(shí)又加大了環(huán)路進(jìn)入鎖定狀態(tài)的時(shí)間。反之, k 取得過(guò)小,可以加速環(huán)路的鎖定,而對噪聲的抑制能力卻隨之降低。  

4 結語(yǔ)  

采用VHDL 設計全數字鎖相環(huán)路,具有設計靈活,修改方便和易于實(shí)現的優(yōu)點(diǎn),并能夠制成嵌入式片內鎖相環(huán)。該類(lèi)數字鎖相環(huán)路中計數器的模數可以隨意修改,這樣,就能夠根據不同的情況最大限度地、靈活地設計環(huán)路。
本文地址:http://selenalain.com/thread-22092-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页