摘 要:提出了一種利用FPGA設(shè)計(jì)一階全數(shù)字鎖相環(huán)的方法。首先詳細(xì)論述了全數(shù)字鎖相環(huán)的構(gòu)成,分析了各個(gè)模塊的工作原理,接著利用VHDL語言完成各個(gè)模塊的設(shè)計(jì),并給出了工作時(shí)序圖,最后在理論分析的基礎(chǔ)上建立了一階全數(shù)字鎖相環(huán)的數(shù)學(xué)模型。仿真實(shí)驗(yàn)驗(yàn)證了這種全數(shù)字鎖相環(huán)實(shí)現(xiàn)的可行性,實(shí)驗(yàn)結(jié)果與理論分析基本一致。
關(guān)鍵詞:全數(shù)字鎖相環(huán);FPGA;VHDL;數(shù)學(xué)模型
中圖分類號(hào):TN914 文獻(xiàn)標(biāo)識(shí)碼:B
文章編號(hào):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 引 言
鎖相環(huán)[1]是一種能使輸出信號(hào)在頻率和相位上與輸入信號(hào)同步的電路,即系統(tǒng)進(jìn)入鎖定狀態(tài)(或同步狀態(tài))后,震蕩器的輸出信號(hào)與系統(tǒng)輸入信號(hào)之間相差為零,或者保持為常數(shù)。傳統(tǒng)的鎖相環(huán)各個(gè)部件都是由模擬電路實(shí)現(xiàn)的,一般包括鑒相器(PD)、環(huán)路濾波器(LF)、壓控振蕩器(VCO)三個(gè)環(huán)路基本部件。
隨著數(shù)字技術(shù)的發(fā)展,全數(shù)字鎖相環(huán)ADPLL(All Digital Phase-Locked Loop)逐步發(fā)展起來。所謂全數(shù)字鎖相環(huán),就是環(huán)路部件全部數(shù)字化,采用數(shù)字鑒相器、數(shù)字環(huán)路濾波器、數(shù)控振蕩器構(gòu)成鎖相環(huán)路,并且系統(tǒng)中的信號(hào)全是數(shù)字信號(hào)。與傳統(tǒng)的模擬電路實(shí)現(xiàn)的鎖相環(huán)相比,由于避免了模擬鎖相環(huán)存在的溫度漂移和易受電壓變化影響等缺點(diǎn),從而具備可靠性高、工作穩(wěn)定、調(diào)節(jié)方便等優(yōu)點(diǎn)。全數(shù)字鎖相環(huán)的環(huán)路帶寬和中心頻率編程可調(diào),易于構(gòu)建高階鎖相環(huán),并且應(yīng)用在數(shù)字系統(tǒng)中時(shí),不需A/D及D/A轉(zhuǎn)換。在調(diào)制解調(diào)、頻率合成、FM立體聲解碼、圖像處理等各個(gè)方面得到廣泛的應(yīng)用。
隨著電子設(shè)計(jì)自動(dòng)化(EDA) 技術(shù)的發(fā)展,可以采用大規(guī)??删幊踢壿嬈骷?如CPLD 或FPGA) 和VHDL語言來設(shè)計(jì)專用芯片ASIC 和數(shù)字系統(tǒng)。本文完成了全數(shù)字鎖相環(huán)的設(shè)計(jì),而且可以把整個(gè)系統(tǒng)嵌入SOC ,構(gòu)成片內(nèi)鎖相環(huán)。
2 全數(shù)字鎖相環(huán)的體系結(jié)構(gòu)和工作原理
74XX297[2]是出現(xiàn)最早,應(yīng)用最為廣泛的一款全數(shù)字鎖相環(huán),在本文中以該芯片為參考進(jìn)行設(shè)計(jì)、分析。ADPLL基本結(jié)構(gòu)如圖1所示,主要由鑒相器、K變??赡嬗?jì)數(shù)器、脈沖加減電路和除N計(jì)數(shù)器4部分構(gòu)成。K變模計(jì)數(shù)器和脈沖加減電路的時(shí)鐘分別為Mf
2.1 鑒相器
常用的鑒相器有兩種類型:異或門(XOR)鑒相器和邊沿控制鑒相器(ECPD)。異或門鑒相器比較輸入信號(hào)Fin相位和輸出信號(hào)Fout相位之間的相位差θe,并輸出誤差信號(hào)Se作為K變模可逆計(jì)數(shù)器的計(jì)數(shù)方向信號(hào)。環(huán)路鎖定時(shí),θe=0,Se為一占空比50%的方波。當(dāng)θe=+π2時(shí),Se等于1;當(dāng)θe=-π/2時(shí),Se等于0。因此異或門鑒相器相位差極限為±π/2,邊沿控制鑒相器相位差極限為±π。
2.2 K變??赡嬗?jì)數(shù)器
K變??赡嬗?jì)數(shù)器消除了鑒相器輸出的誤差信號(hào)Se中的高頻成分,保證環(huán)路的性能穩(wěn)定。K變??赡嬗?jì)數(shù)器主要是根據(jù)鑒相器的輸出作為方向脈沖,輸出加減脈沖信號(hào)。當(dāng)Se為低電平時(shí),計(jì)數(shù)器進(jìn)行加運(yùn)算,如果相加的結(jié)果達(dá)到預(yù)設(shè)的模值,則輸出一個(gè)進(jìn)位脈沖信號(hào)CARRY;當(dāng)Se為高電平時(shí),計(jì)數(shù)器進(jìn)行減運(yùn)算,如果減的結(jié)果達(dá)到零,則輸出一個(gè)借位脈沖信號(hào)BORROW。
2.3 脈沖加減電路
K變模可逆計(jì)數(shù)器的CARRY和BORROW信號(hào)分別接到脈沖加減電路的INC和DEC信號(hào)。脈沖加減電路實(shí)現(xiàn)了對輸入信號(hào)頻率和相位的跟蹤和調(diào)整,最終使輸出信號(hào)鎖定在輸入信號(hào)的頻率和相位上,可以稱之為數(shù)控振蕩器。
2.4 除N計(jì)數(shù)器
除N計(jì)數(shù)器對脈沖加減電路的輸出IDOUT進(jìn)行N分頻,得到整個(gè)環(huán)路的輸出信號(hào)Fout。同時(shí),因?yàn)閒c=IDCLOCK/2N,因此通過改變分頻值N可以得到不同的環(huán)路中心頻率fc。
3 全數(shù)字鎖相環(huán)的實(shí)現(xiàn)與仿真
本設(shè)計(jì)在Altera公司的Max+PlusⅡ開發(fā)軟件平臺(tái)上,利用VHDL語言運(yùn)用自頂向下的系統(tǒng)設(shè)計(jì)方法,完成ADPLL的設(shè)計(jì)[3]。首先根據(jù)系統(tǒng)中各個(gè)功能模塊的要求分別設(shè)計(jì)環(huán)路各個(gè)部件的邏輯電路,并進(jìn)行仿真驗(yàn)證[4],然后再將各部件組合起來,進(jìn)行系統(tǒng)仿真和驗(yàn)證。
異或門鑒相器和除N計(jì)數(shù)器的實(shí)現(xiàn)較為簡單,不再進(jìn)行詳細(xì)說明。
3.1 K變??赡嬗?jì)數(shù)器
K變??赡嬗?jì)數(shù)器[1,5]由兩個(gè)獨(dú)立的計(jì)數(shù)器“UP COUNTER”,“DOWN COUNTER”組成,分別對應(yīng)設(shè)計(jì)中的q0,q1。K為計(jì)數(shù)器的模值,總是2的整數(shù)冪,可由輸入a[3..0]控制改變。計(jì)數(shù)器的操作由DN/UP信號(hào)控制。時(shí)鐘clk頻率為數(shù)字鎖相環(huán)中心頻率的M倍,clk上升沿計(jì)數(shù)。K計(jì)數(shù)器首先預(yù)置模數(shù),然后把鑒相器的輸出信號(hào)作為方向脈沖,控制內(nèi)部計(jì)數(shù)器進(jìn)行加、減計(jì)數(shù)。如果這個(gè)信號(hào)為高,“DOWN COUNTER” 有效進(jìn)行遞減計(jì)算,“UP COUNTER”保持為零;相反,“UP COUNTER”有效進(jìn)行累加計(jì)算,“DOWN COUNTER”保持為預(yù)置模數(shù)?!癠P COUNTER”計(jì)數(shù)值超過K時(shí),increase輸出為1,計(jì)數(shù)器清零。“DOWN COUNTER” 計(jì)數(shù)值為0 時(shí),decrease輸出為1,計(jì)數(shù)器恢復(fù)為預(yù)置模數(shù)。
a[3..0]=1時(shí),設(shè)定K值為4。K變??赡嬗?jì)數(shù)器仿真波形如圖2所示。
3.2 脈沖加減電路
脈沖加減電路[2]需要利用多個(gè)觸發(fā)器配合產(chǎn)生時(shí)序,其輸出為IDOUT。當(dāng)沒有進(jìn)位或借位脈沖信號(hào)時(shí),他把外部參考時(shí)鐘進(jìn)行二分頻;當(dāng)有進(jìn)位脈沖信號(hào)inc時(shí),則在輸出的二分頻信號(hào)中插入半個(gè)脈沖,以提高輸出信號(hào)的頻率;當(dāng)有借位脈沖信號(hào)dec時(shí),則在輸出的二分頻信號(hào)中減去半個(gè)脈沖,以降低輸出信號(hào)的頻率。VHDL設(shè)計(jì)代碼如下,圖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 全數(shù)字鎖相環(huán)的實(shí)現(xiàn)與仿真
將環(huán)路各個(gè)模塊連接起來完成ADPLL的設(shè)計(jì)。為了簡化設(shè)計(jì),將K變模可逆計(jì)數(shù)器的時(shí)鐘Mclk與脈沖加減電路時(shí)鐘2Nclk接在一起,fin等于環(huán)路中心頻率fc,fc=312.5 kHz 。取M=16,N=8,Mclk=5 MHz。當(dāng)a[3..0]=1時(shí),設(shè)定K值為4。為了便于觀察,將K變??赡嬗?jì)數(shù)器的輸入信號(hào)udcon引出。
環(huán)路在進(jìn)入鎖定狀態(tài)后,udcon為占空比為50%的方波。系統(tǒng)原理圖和仿真波形分別如圖4,圖5所示。
4 全數(shù)字鎖相環(huán)數(shù)學(xué)模型的建立與分析
結(jié)合模擬和數(shù)字鎖相的理論分析,可以得到全數(shù)字鎖相環(huán)的相位和相差傳遞函數(shù)。圖6為全數(shù)字鎖相環(huán)的數(shù)學(xué)模型[1]。
為了獲得最小波紋,對于異或門(XOR)鑒相器和邊沿控制鑒相器(ECPD), K模值分別取為M/4和M/2,相應(yīng)的時(shí)間常數(shù)分別為:τ(EXOR)=(N/8)T0,τ(ECPD)=(N/2)T0,其中T0=1/f0。由此可見,N越小,ADPLL的穩(wěn)定時(shí)間越短。在本文中設(shè)計(jì)的鎖相環(huán),Kd=2/π,M=16,N=8,K=M/4= 4,代入時(shí)間常數(shù)公式可
得:τ=T0。
5 結(jié) 語
本文介紹了一種一階ADPLL的設(shè)計(jì)方法,利用VHDL
語言完成系統(tǒng)設(shè)計(jì)和仿真。ADPLL中可逆計(jì)數(shù)器的模值可以隨意改變,用來控制ADPLL的跟蹤補(bǔ)償和鎖定時(shí)間。除N計(jì)數(shù)器的分頻值也可隨意改變,使ADPLL可以跟蹤不同中心頻率的輸入信號(hào)。設(shè)計(jì)好的ADPLL模塊還可以作為可重用的IP核,應(yīng)用于其他設(shè)計(jì)。同時(shí),在理論分析的基礎(chǔ)上,建立了全數(shù)字鎖相環(huán)的一階數(shù)學(xué)模型,從而可以根據(jù)具體的設(shè)計(jì)要求定量的計(jì)算參數(shù),簡化了ADPLL的設(shè)計(jì)。
參考文獻(xiàn)
[1]ROLAND E.BEST, Phase - Locked Loops Design,Simulation,And Applications.北京:清華大學(xué)出版社,2003.
[2]Digital Phase - Locked Loop Design Using SN54/74LS297,Texas Instrumented Incorporated,1997.
[3]張繼勇,王愛國.SEC中的全數(shù)字鎖相環(huán)的分析及設(shè)計(jì)[J].光通信研究,2006(6):22-23,41.
[4]侯伯亨,顧新.VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(jì)[M].西安:西安電子科技大學(xué)出版社,1999.
[5]單長虹,鄧國揚(yáng).一種新型快速全數(shù)字鎖相環(huán)的研究[J].系統(tǒng)仿真學(xué)報(bào),2003,15(4):581-583.
作者簡介 蒲曉婷 女,1980年出生,碩士研究生。主要研究方向?yàn)橛?jì)算機(jī)系統(tǒng)結(jié)構(gòu)和數(shù)字電路設(shè)計(jì)。
注:“本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文?!?/p>