摘 要:提出了一種利用FPGA設計一階全數字鎖相環的方法。首先詳細論述了全數字鎖相環的構成,分析了各個模塊的工作原理,接著利用VHDL語言完成各個模塊的設計,并給出了工作時序圖,最后在理論分析的基礎上建立了一階全數字鎖相環的數學模型。仿真實驗驗證了這種全數字鎖相環實現的可行性,實驗結果與理論分析基本一致。
關鍵詞:全數字鎖相環;FPGA;VHDL;數學模型
中圖分類號:TN914 文獻標識碼:B
文章編號:1004373X(2008)0517303
Design and Analysis of All Digital Phase-Locked Loop
PU Xiaoting
(Xi′an Microelectronic Institute,Xi′an,710075,China)
Abstract:A way of designing a first-order All Digital Phase-Locked Loop (ADPLL) using FPGAis presented in this brief.First,it describes the structure of ADPLL particularly,analyzes the theory .Then it designs the modules using VHDL and drew the time order graph for every module. Finally it finds first-order mathmatic module of ADPLL. The simulation test proves the feasibility for the ADPLL.The result is mainly in accordance with the analysis of theory.
Keywords:all digital phase-locked loop;FPGA;VHDL;mathmatic module
1 引 言
鎖相環[1]是一種能使輸出信號在頻率和相位上與輸入信號同步的電路,即系統進入鎖定狀態(或同步狀態)后,震蕩器的輸出信號與系統輸入信號之間相差為零,或者保持為常數。傳統的鎖相環各個部件都是由模擬電路實現的,一般包括鑒相器(PD)、環路濾波器(LF)、壓控振蕩器(VCO)三個環路基本部件。
隨著數字技術的發展,全數字鎖相環ADPLL(All Digital Phase-Locked Loop)逐步發展起來。所謂全數字鎖相環,就是環路部件全部數字化,采用數字鑒相器、數字環路濾波器、數控振蕩器構成鎖相環路,并且系統中的信號全是數字信號。與傳統的模擬電路實現的鎖相環相比,由于避免了模擬鎖相環存在的溫度漂移和易受電壓變化影響等缺點,從而具備可靠性高、工作穩定、調節方便等優點。全數字鎖相環的環路帶寬和中心頻率編程可調,易于構建高階鎖相環,并且應用在數字系統中時,不需A/D及D/A轉換。在調制解調、頻率合成、FM立體聲解碼、圖像處理等各個方面得到廣泛的應用。
隨著電子設計自動化(EDA) 技術的發展,可以采用大規模可編程邏輯器件(如CPLD 或FPGA) 和VHDL語言來設計專用芯片ASIC 和數字系統。本文完成了全數字鎖相環的設計,而且可以把整個系統嵌入SOC ,構成片內鎖相環。
2 全數字鎖相環的體系結構和工作原理
74XX297[2]是出現最早,應用最為廣泛的一款全數字鎖相環,在本文中以該芯片為參考進行設計、分析。ADPLL基本結構如圖1所示,主要由鑒相器、K變模可逆計數器、脈沖加減電路和除N計數器4部分構成。K變模計數器和脈沖加減電路的時鐘分別為Mf
2.1 鑒相器
常用的鑒相器有兩種類型:異或門(XOR)鑒相器和邊沿控制鑒相器(ECPD)。異或門鑒相器比較輸入信號Fin相位和輸出信號Fout相位之間的相位差θe,并輸出誤差信號Se作為K變模可逆計數器的計數方向信號。環路鎖定時,θe=0,Se為一占空比50%的方波。當θe=+π2時,Se等于1;當θe=-π/2時,Se等于0。因此異或門鑒相器相位差極限為±π/2,邊沿控制鑒相器相位差極限為±π。
2.2 K變模可逆計數器
K變模可逆計數器消除了鑒相器輸出的誤差信號Se中的高頻成分,保證環路的性能穩定。K變模可逆計數器主要是根據鑒相器的輸出作為方向脈沖,輸出加減脈沖信號。當Se為低電平時,計數器進行加運算,如果相加的結果達到預設的模值,則輸出一個進位脈沖信號CARRY;當Se為高電平時,計數器進行減運算,如果減的結果達到零,則輸出一個借位脈沖信號BORROW。
2.3 脈沖加減電路
K變模可逆計數器的CARRY和BORROW信號分別接到脈沖加減電路的INC和DEC信號。脈沖加減電路實現了對輸入信號頻率和相位的跟蹤和調整,最終使輸出信號鎖定在輸入信號的頻率和相位上,可以稱之為數控振蕩器。
2.4 除N計數器
除N計數器對脈沖加減電路的輸出IDOUT進行N分頻,得到整個環路的輸出信號Fout。同時,因為fc=IDCLOCK/2N,因此通過改變分頻值N可以得到不同的環路中心頻率fc。
3 全數字鎖相環的實現與仿真
本設計在Altera公司的Max+PlusⅡ開發軟件平臺上,利用VHDL語言運用自頂向下的系統設計方法,完成ADPLL的設計[3]。首先根據系統中各個功能模塊的要求分別設計環路各個部件的邏輯電路,并進行仿真驗證[4],然后再將各部件組合起來,進行系統仿真和驗證。
異或門鑒相器和除N計數器的實現較為簡單,不再進行詳細說明。
3.1 K變模可逆計數器
K變模可逆計數器[1,5]由兩個獨立的計數器“UP COUNTER”,“DOWN COUNTER”組成,分別對應設計中的q0,q1。K為計數器的模值,總是2的整數冪,可由輸入a[3..0]控制改變。計數器的操作由DN/UP信號控制。時鐘clk頻率為數字鎖相環中心頻率的M倍,clk上升沿計數。K計數器首先預置模數,然后把鑒相器的輸出信號作為方向脈沖,控制內部計數器進行加、減計數。如果這個信號為高,“DOWN COUNTER” 有效進行遞減計算,“UP COUNTER”保持為零;相反,“UP COUNTER”有效進行累加計算,“DOWN COUNTER”保持為預置模數。“UP COUNTER”計數值超過K時,increase輸出為1,計數器清零。“DOWN COUNTER” 計數值為0 時,decrease輸出為1,計數器恢復為預置模數。
a[3..0]=1時,設定K值為4。K變模可逆計數器仿真波形如圖2所示。
3.2 脈沖加減電路
脈沖加減電路[2]需要利用多個觸發器配合產生時序,其輸出為IDOUT。當沒有進位或借位脈沖信號時,他把外部參考時鐘進行二分頻;當有進位脈沖信號inc時,則在輸出的二分頻信號中插入半個脈沖,以提高輸出信號的頻率;當有借位脈沖信號dec時,則在輸出的二分頻信號中減去半個脈沖,以降低輸出信號的頻率。VHDL設計代碼如下,圖3為其仿真波形。
library ieee;
use ieee.std[CD#*2]logic[CD#*2]1164.all;
use ieee.std[CD#*2]logic[CD#*2]unsigned.all;
use ieee.std[CD#*2]logic[CD#*2]arith.all;
entityidc is
port(idclk,reset:in std[CD#*2]logic;
inc,dec:in std[CD#*2]logic;
idout:out std[CD#*2]logic);
end idc;
architecture rtl of idc is
component dff2
port(d,clk,clrn:in std[CD#*2]logic;
q,qn:out std[CD#*2]logic);
end component;
component jkff2
port(j,k,clk,clrn:in std[CD#*2]logic;
q,qn:out std[CD#*2]logic);
end component;
signal q1,q1n,q2,q2n,q3,q3n,q4,q4n,q5,q5n:std[CD#*2]logic;
signal q6,q6n,q7,q7n,q8,q8n,q9,q9n,d7,d8:std[CD#*2]logic;
begin
ffd1:dff2 port map(inc,idclk,reset,q1,q1n);
ffd2:dff2 port map(dec,idclk,reset,q2,q2n);
ffd3:dff2 port map(q1,idclk,reset,q3,q3n);
ffd4:dff2 port map(q2,idclk,reset,q4,q4n);
ffd5:dff2 port map(q3,idclk,reset,q5,q5n);
ffd6:dff2 port map(q4,idclk,reset,q6,q6n);
d7<=(q9 and q1n and q3)or(q9 and q5 and q3n);
d8<=(q9n and q2n and q4)or(q9n and q6 and q4n);
ffd7:dff2 port map(d7,idclk,reset,q7,q7n);
ffd8:dff2 port map(d8,idclk,reset,q8,q8n);
jk:jkff2 port map(q7n,q8n,idclk,reset,q9,q9n);
idout<=idclk nor q9;
end rtl;
3.3 全數字鎖相環的實現與仿真
將環路各個模塊連接起來完成ADPLL的設計。為了簡化設計,將K變模可逆計數器的時鐘Mclk與脈沖加減電路時鐘2Nclk接在一起,fin等于環路中心頻率fc,fc=312.5 kHz 。取M=16,N=8,Mclk=5 MHz。當a[3..0]=1時,設定K值為4。為了便于觀察,將K變模可逆計數器的輸入信號udcon引出。
環路在進入鎖定狀態后,udcon為占空比為50%的方波。系統原理圖和仿真波形分別如圖4,圖5所示。
4 全數字鎖相環數學模型的建立與分析
結合模擬和數字鎖相的理論分析,可以得到全數字鎖相環的相位和相差傳遞函數。圖6為全數字鎖相環的數學模型[1]。
為了獲得最小波紋,對于異或門(XOR)鑒相器和邊沿控制鑒相器(ECPD), K模值分別取為M/4和M/2,相應的時間常數分別為:τ(EXOR)=(N/8)T0,τ(ECPD)=(N/2)T0,其中T0=1/f0。由此可見,N越小,ADPLL的穩定時間越短。在本文中設計的鎖相環,Kd=2/π,M=16,N=8,K=M/4= 4,代入時間常數公式可
得:τ=T0。
5 結 語
本文介紹了一種一階ADPLL的設計方法,利用VHDL
語言完成系統設計和仿真。ADPLL中可逆計數器的模值可以隨意改變,用來控制ADPLL的跟蹤補償和鎖定時間。除N計數器的分頻值也可隨意改變,使ADPLL可以跟蹤不同中心頻率的輸入信號。設計好的ADPLL模塊還可以作為可重用的IP核,應用于其他設計。同時,在理論分析的基礎上,建立了全數字鎖相環的一階數學模型,從而可以根據具體的設計要求定量的計算參數,簡化了ADPLL的設計。
參考文獻
[1]ROLAND E.BEST, Phase - Locked Loops Design,Simulation,And Applications.北京:清華大學出版社,2003.
[2]Digital Phase - Locked Loop Design Using SN54/74LS297,Texas Instrumented Incorporated,1997.
[3]張繼勇,王愛國.SEC中的全數字鎖相環的分析及設計[J].光通信研究,2006(6):22-23,41.
[4]侯伯亨,顧新.VHDL硬件描述語言與數字邏輯電路設計[M].西安:西安電子科技大學出版社,1999.
[5]單長虹,鄧國揚.一種新型快速全數字鎖相環的研究[J].系統仿真學報,2003,15(4):581-583.
作者簡介 蒲曉婷 女,1980年出生,碩士研究生。主要研究方向為計算機系統結構和數字電路設計。
注:“本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。”