數字鎖相環(huán)路已在數字通信、無(wú)線(xiàn)電電子學(xué)及電力系統自動(dòng)化等領(lǐng)域中得到了極為廣泛的應用。傳統的全數字鎖相環(huán)路(DPLL)是由中、小規模TTL集成電路構成。這類(lèi)DPLL工作頻率低,可靠性較差。隨著(zhù)集成電路技術(shù)的發(fā)展,不僅能夠制成頻率較高的單片集成鎖相環(huán)路,而且可以把整個(gè)系統集成到一個(gè)芯片上去,實(shí)現所謂片上系統SOC(System on a chip)。因此,可以把全數字鎖相環(huán)路作為一個(gè)功能模塊嵌入SOC,構成片內鎖相環(huán)。下面介紹采用VHDL技術(shù)設計DPLL的一種方案。 1 工作原理 全數字鎖相環(huán)路的結構框圖如圖1所示 其中數字鑒相器由異或門(mén)構成,數字環(huán)路濾波器由變?赡嬗嫈灯鳂嫵,數控振蕩器由加/減脈沖控制器和除N計數器組成?赡嬗嫈灯骱图/減脈沖控制器的時(shí)鐘頻率分別為Mf0和2Nf0。這里f0是環(huán)路的中心頻率,一般情況下M和N為2的整數冪。時(shí)鐘2Nf0經(jīng)除H(=M/2N)計數器得到。限時(shí)的相應波形如圖2所示。 當環(huán)路瑣定時(shí),u1和u2正交,鑒相器的輸出信號ud為50%占空比的方波,此時(shí)定義相位誤差為零。在這種情況下,可逆計數器"加"與"減"的周期相同,只要可逆計數器的k值足夠大(k>M/4),其輸出端就不會(huì )產(chǎn)生進(jìn)位或借位脈沖。這時(shí),加/減脈沖控制器只對其時(shí)鐘2Nf0進(jìn)行二分頻,使u1和u2的相位保持正交。在環(huán)路未鎖定的情況下,若ud=0時(shí),它使可逆計數器向上加計數,并導致進(jìn)位脈沖產(chǎn)生,進(jìn)位脈沖作用到加/減脈沖控制器的"加"控制端i,該控制器便在二分頻過(guò)程中加入半個(gè)時(shí)鐘周期。反之,若ud=1,可逆計數器減計數,并將發(fā)出借位脈沖到加/減脈沖控制器的"減"輸入端d,于是,該控制器便在二分頻的過(guò)程中減去半個(gè)周期。這個(gè)過(guò)程是連續發(fā)生的。加/減脈沖控制器的輸出經(jīng)過(guò)除N計數器后,使得本地估算信號u2的相位受到調整控制,最終達到鎖定狀態(tài)。 2 環(huán)路部件的設計 這里重點(diǎn)介紹數字環(huán)路濾波器的設計。數字環(huán)路濾波器是由變?赡嬗嫈灯鳂嫵。在ud的控制下,當j=0時(shí),對時(shí)鐘Mf0進(jìn)行"加"計數;當j=1時(shí),進(jìn)行"減"計數?赡嬗嫈灯鞯挠嫈等萘(模數k)可以利用A、B、C、D四位進(jìn)行預置,從而方便地改變模數。其預置模數的范圍為,當D、C、B、A在0001~1111取值時(shí),相應模數的變化范圍是23~217?梢(jiàn),可逆計數器的長(cháng)度能夠根據模數k值的大小來(lái)實(shí)現數字編程控制。取D、C、B、A為0001時(shí),K=23,計數器長(cháng)度只有三級,因而可以擴大捕捉帶,縮短鎖定時(shí)間。在D、C、B、A取1111時(shí),K=217,計數器長(cháng)度變?yōu)槭呒,這時(shí)捕捉帶縮小,縮定時(shí)間延長(cháng)。變?赡嬗嫈灯鞯腣HDL設計程序如下: library ieee? use ieee.std_logic_1164.a(chǎn)ll? use ieee.std_logic_unsigned.a(chǎn)ll? entity count_k is port clk j en d c b a in std_logic r1 r2 out std_logic ? end? architecture behave of count_k 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<=d & c & b & a? with instruction select mo <=″00000000000000111″ when ″0001″? ″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<=mo? if en='1' then if j='0' then if cq<k then cq<=cq+1? else cq<=?others=>'0' ? end if else if cq>0 then cq<=cq-1? else cq<=k? end if? end if else cq<=?others=>'0' ? end if end if end process? process en j cq k begin if en='1' then if j='0' then if cq=k then cao1<='1'? else cao1<='0'? end if cao2<='0'? else if cq=″00000000000000000″then cao2<='1'? else cao2<='0'? end if cao1<='0'? end if else cao1<='0'? cao2<='0'? end if? end process? r1<=cao1? r2<=cao2? end behave? 根據對其他環(huán)路部件的功能分析,也可以設計出相應的VHDL程序。 3 設計實(shí)現 本設計中全數字鎖相環(huán)路采用XILINX公司的Foundation 3.1版本進(jìn)行設計,并用Spartan2系列的FPGA予以實(shí)現。下面分別給出變?赡嬗嫈灯骱图/減脈沖控制器的仿真波形如圖3、圖4所示。 從圖3中可見(jiàn),當j=0時(shí),可逆計數器做加計數,若取模k=24,則當計數值cq=0000FH時(shí),計數器產(chǎn)生進(jìn)位脈沖(r1=1);當j=1后,在下一個(gè)時(shí)鐘的上升沿到來(lái)時(shí),可逆計數器開(kāi)始做減計數,當cq=00000H時(shí),產(chǎn)生借位脈沖(r2=1)。改變模k便可延長(cháng)或縮短可逆計數器產(chǎn)生進(jìn)位脈沖和借位脈沖的時(shí)間。同時(shí),由圖1可知,可逆計數的加/減計數信號j是由鑒相器的輸出信號ud控制的,而其進(jìn)位脈沖r1和借位脈沖r2又分別與加/減脈沖控制器的i和d相接,用于控制其輸出脈沖的序列。由圖4可知,在無(wú)進(jìn)位和借位脈沖時(shí),加/減脈沖控制器對2Nf0時(shí)鐘進(jìn)行二分頻。一旦可逆計數器有進(jìn)位脈沖或借位脈沖輸出時(shí),作用到加/減脈沖控制器i或d端,便使其輸出脈沖序列發(fā)生了變化。當可逆計數器輸出一個(gè)進(jìn)位脈沖時(shí),使i=1,則在i的下降沿到來(lái)之后,加/減脈沖控制器的輸出端q插入一個(gè)脈沖,即在其輸出序列中加入了半個(gè)周期;反之,當可逆計數器輸出一個(gè)借位脈沖時(shí),使d=1,則在d的下降沿到來(lái)之后,q端刪除一個(gè)脈沖,即在加/減脈沖控制器的輸出序列中刪去了半個(gè)周期。由以上對圖3、4仿真波形的分析可知,變?赡嬗嫈灯骱图/減脈沖控制器的邏輯功能符合設計要求。把全數字鎖相環(huán)路的各部件連接起來(lái)進(jìn)行系統仿真,可得其仿真波形如圖5和圖6所示。 其中圖5是取k=25時(shí)的系統仿真波形,由圖中可見(jiàn),u1和u2達到鎖定狀態(tài)時(shí)的仿真時(shí)間是175μs。圖6是取k=28時(shí)的系統仿真波形,在這種情況下,u1和u2達到鎖定狀態(tài)時(shí)的仿真時(shí)間是1.04ms。顯然,模k愈大,環(huán)路進(jìn)入鎖定狀態(tài)的時(shí)間愈長(cháng)。 值得指出的是,在環(huán)路鎖定狀態(tài)下,由于可逆計數器的連續計數,或在噪聲的干擾下,會(huì )產(chǎn)生進(jìn)位和借位脈沖。如果k值取得太小,則可逆計數器因頻繁地循環(huán)計數而產(chǎn)生進(jìn)位或借位脈沖,這就導致了在環(huán)路的輸出端出現相位抖動(dòng)。為了減少這種相位抖動(dòng),k值必須取大于M/4。 由以上分析可知,模k的取值要適當。k取得大,對抑制噪聲、減少相位抖動(dòng)有利,但同時(shí)又加大了環(huán)路進(jìn)入鎖定狀態(tài)的時(shí)間。反之,k取得小,可以加速環(huán)路的鎖定,而對噪聲的抑制能力卻隨之降低。 采用VHDL設計全數字鎖相環(huán)路,具有設計靈活、修改方便和易于實(shí)現的優(yōu)點(diǎn),并能夠制成嵌入式片內鎖相環(huán)。該類(lèi)數字鎖相環(huán)路中計數器的模數可以隨意修改。這樣,就能夠根據不同情況最大限度地、靈活地設計環(huán)路。 |