一種可編程的全數(shù)字鎖相環(huán)路的實(shí)現(xiàn)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
鎖相環(huán)路已在模擬和數(shù)字通信及無線電電子學(xué)等各個(gè)領(lǐng)域中得到了極為廣泛的應(yīng)用,特別是在數(shù)字通信的調(diào)制解調(diào)和位同步中常常要用到各種各樣的鎖相環(huán)。鎖相就是利用輸入信號與輸出信號之間的相位誤差自動(dòng)調(diào)節(jié)輸出相位使之與輸入相位一致,或保持一個(gè)很小的相位差。最初的鎖相環(huán)全部由模擬電路組成,隨著大規(guī)模、超高速數(shù)字集成電路的發(fā)展及計(jì)算機(jī)的普遍應(yīng)用,出現(xiàn)了全數(shù)字鎖相環(huán)路。所謂全數(shù)字鎖相環(huán)路,就是環(huán)路部件全部數(shù)字化,采用數(shù)字鑒相器(DPD)、數(shù)字環(huán)路濾波器(DLF)、數(shù)控振蕩器(DCO)構(gòu)成鎖相環(huán)路。在用Altera公司的EPFl0K10TCl44-3芯片設(shè)計(jì)一種無線通信實(shí)驗(yàn)系統(tǒng)的FSK、DPSK、QAM調(diào)制解調(diào)器時(shí),利用剩余的10%FPGA資源設(shè)計(jì)出了一種可編程全數(shù)字鎖相環(huán)路,它成功地為該通信實(shí)驗(yàn)系統(tǒng)的調(diào)制解調(diào)器提供了64kHz、56kHz和16kHz三種精確、穩(wěn)定的時(shí)鐘信號。
1 全數(shù)字鎖相環(huán)的電路設(shè)計(jì)
1.1 DPLL工作原理分析
所設(shè)計(jì)的全數(shù)字鎖相環(huán)路的結(jié)構(gòu)如圖1所示。其中,數(shù)字鑒相器由異或門EXOR構(gòu)成,數(shù)字環(huán)路濾波器由變模可逆計(jì)數(shù)器Q構(gòu)成,數(shù)控振蕩器由加/減脈沖控制器I/D和模N計(jì)數(shù)器組成??赡嬗?jì)數(shù)器和加/減脈沖控制器的時(shí)鐘頻率分別是Mf0和2Nf0。這里f0是環(huán)路的中心頻率,為64kHz。Mf0等于14336kHz,由晶振電路產(chǎn)生,它經(jīng)模H計(jì)數(shù)器分頻后得到2Nf0的時(shí)鐘頻率。異或門鑒相器用于比較輸入信號IN64與數(shù)控振蕩器輸出信號OUT64的相位差,其輸出信號ud作為可逆計(jì)數(shù)器的計(jì)數(shù)方向控制信號。當(dāng)ud為低電平時(shí),可逆計(jì)數(shù)器作“加”計(jì)數(shù);反之,可逆計(jì)數(shù)器作“減”計(jì)數(shù)。當(dāng)環(huán)路鎖定時(shí),IN64和OUT64正交,鑒相器的輸出信號ud為50%占空比的方波。在這種情況下,可逆計(jì)數(shù)器“加”與“減”的周期相同,只要可逆計(jì)數(shù)器的模值K足夠大(K>M/4),其輸出端就不會產(chǎn)生進(jìn)位或借位脈沖。這時(shí),加/減脈沖控制器只對頻率為2Nf0的時(shí)鐘進(jìn)行二分頻,使IN64和OUT64的相位保持正交。在環(huán)路未鎖定的情況下,若ud為低電平時(shí),可逆計(jì)數(shù)器進(jìn)行加計(jì)數(shù),并產(chǎn)生進(jìn)位脈沖作用到加/減脈沖控制器的“加”控制端INC,該控制器便在二分頻過程中加入半個(gè)時(shí)鐘周期;反之,若ud為高電平,可逆計(jì)數(shù)器進(jìn)行減計(jì)數(shù),并產(chǎn)生借位脈沖作用到加/減脈沖控制器的“減”輸入端DEC,該控制器便在二分頻的過程中減去半個(gè)時(shí)鐘周期,這個(gè)過程是連續(xù)發(fā)生的。加/減脈沖控制器的輸出經(jīng)過模N計(jì)數(shù)器分頻后,得到輸出信號OUT64,它的相位不斷受到調(diào)整控制,最終達(dá)到鎖定狀態(tài)。最后只要對OUT64進(jìn)行4分頻就能得到16kHz的輸出信號OUTl6,對加/減脈沖控制器的輸出進(jìn)行P分頻就能得到56kHz的輸出信號OUT56。
圖1
該全數(shù)字鎖相環(huán)的三個(gè)輸出信號的頻率分別為64kHz、56kHz和16kHz,經(jīng)過計(jì)算可確定鎖相環(huán)的參數(shù)M、N和P。設(shè)H=8,因?yàn)镸f0=14336kHz=4×4×2×7×64kHz,故M=4×4×2×7=224。因?yàn)?Nf0=Mf0/H=4×4×2×7×64kHz/8=2×2×7×64kHz=2×2×8×56kHz,故N=14、P=16。
1.2 DPLL電路實(shí)現(xiàn)
1.2.1 數(shù)字鑒相器
數(shù)字鑒相器由異或門構(gòu)成,并使用VHDL語言編程來實(shí)現(xiàn)。異或鑒相器比較輸入信號IN64和輸出信號OUT64之間的相位差,輸出誤差信號ud作為可逆計(jì)數(shù)器Q的計(jì)數(shù)方向信號。環(huán)路鎖定時(shí),ud為一個(gè)占空比為50%的方波,此時(shí)的絕對相位差為90°,因此異或鑒相器相位差極限為±90°。
1.2.2 數(shù)字環(huán)路濾波器
數(shù)字環(huán)路濾波器由變??赡嬗?jì)數(shù)器Q構(gòu)成。在ud的控制下,當(dāng)j=0時(shí),Q對時(shí)鐘Mf0進(jìn)行“加”計(jì)數(shù);當(dāng)j=1時(shí),Q對時(shí)鐘Mf0進(jìn)行“減”計(jì)數(shù)。可逆計(jì)數(shù)器的模數(shù)K可以通過Ka、Kb、Kc、Kd四個(gè)輸入端進(jìn)行預(yù)置,當(dāng)Ka、Kb、Kc、Kd在0001~1110取值時(shí),相應(yīng)模數(shù)的變化范圍是 2 3~2 16。數(shù)字環(huán)路濾波器用VHDL語言編程實(shí)現(xiàn),其程序如下:
library ieee;
use ieee.std_logic_1164.a(chǎn)ll;
use ieee.std_logic_unsigned.a(chǎn)ll;
entity count_zj is
port(clkl,j,Kd,Kc,Kb,Ka,en:in std_logic;
INC,DEC:out std_logic);
End count_zj;
architecture behave Of eonnt_zj is
signal cq,k,mo,k2,mo2,cql:std_logic_vector(16 downto 0);
signal caol,cao2,caoll,cao22,caolll,cao222:std_logic;
signal instruction,aa,q1,q2:std_lOgic_vector(3 downto 0);
begin
instruction<=Kd & Kc & Kb & Ka;
aa<=instruction+1;
with instruction select
mo<=“00000000000000111”when“0001”,
“0000000000000t111”when“0010”,
“000(0)0(000~11111”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;
with aa select
m02<=“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 othels;
process(clkl,j,mo,en)
begin
if(clkl’event and clkl=‘1’)then
k<=mo;
k2<=mo+1;
if(ell=‘0’)then
cq<=“00000000000000000”;
cql<=mo2;
elSe
if(j=‘0’)then
if(cq=k)then
cao1<=‘1’;
cao2<=‘0’;
cq<=(others=>‘0’);
elSe
cao1<=‘0’;
cao2<=‘0’;
cq<=cq+‘1’;
cql<=cql+‘1’;
end if;
elsif(j=‘1’)then
if(cql=k2)theH
cao1<=‘0’;
cao2<=‘1’;
cql<=mo2;
elSe
cao1<=‘O’;
cao2<=‘O’;
cq<=cq-‘1’;
cql<=cql-‘1’;
end if;
end if;
end if;
end if;
end process;
process(clkl,cao1)
begin
cao111<=cao11 or cao1
if(clkl’event and clkl=‘1’)then
if(cao111=‘1’)then
ca011<=‘1’;
if(q1=“1111”)then
cao11<=‘O’;
q1<=“0000”;
elSe
q1<=q1+‘1’;
end if;
end if;
end if;
end process;
process(clkl,cao2)
beSin
cao222<=cao22 or cao2;
if(clkl’event and clkl=‘1’)then
if(ca0222=‘1’)then
cao22<=‘1’;
if(q2=“1111”)then
cao22<=‘0’;
q2<=“0000”;
e1Se
q2<=q2+‘1’;
end if;
eHd if;
end if;
end process;
INC<=gao11;
DEC<=cao222;
end behave;
1.2.3 數(shù)控振蕩器
數(shù)控振蕩器采用加/減脈沖控制器I/D和模N計(jì)數(shù)器實(shí)現(xiàn),它的輸出是一脈沖序列,周期受數(shù)字環(huán)路濾波器送來的進(jìn)位或借位校正信號控制。圖2是加/減脈沖控制器硬件電路圖,該電路由四片7474芯片和一片JK觸發(fā)器以及其它一些邏輯門構(gòu)成。
1.3 DPLL工作性能分析
可逆計(jì)數(shù)器Q可看作一個(gè)模K分頻器,其輸出頻率為:
fQout=(KeΦeMf0)/K(Hz) (1)
式中,Φe為相位差,Ke為其系數(shù)。
加/減脈沖控制器I/D的輸出頻率為:
fI/Dout=Nf0+(KeΦeMf0)/(2K)(Hz) (2)
經(jīng)模N計(jì)數(shù)器分頻后,鎖相環(huán)路的輸出信號OUT64的頻率為:
fouT64=f0+(KeΦeMf0)/(2KN)(Hz) (3)
由于鎖定的極限范圍為KeΦe=±1,所以從公式(3)可以得到環(huán)路的捕捉帶:
△fmax=(ffouT64)max-f0=Mf0(2KN)(Hz) (4)
上式表明,M和N確定后,變化可逆計(jì)數(shù)器Q的模K可以改變環(huán)路的捕捉帶。
環(huán)路處于鎖定狀態(tài)時(shí),環(huán)路輸出頻率fouT64必定和輸入信號的頻率fIN64相等,但同時(shí)存在一個(gè)穩(wěn)態(tài)相位誤差。由式(3)可得:
Φe(∞)=2KN(fIN64-f0)/(KeMf0) (5)
值得注意的是,即使環(huán)路在鎖定狀態(tài)下,如果K值取得太小,則可逆計(jì)數(shù)器因頻繁的循環(huán)計(jì)數(shù)會產(chǎn)生進(jìn)位或借位脈沖,從而導(dǎo)致了相位抖動(dòng),增加了同步誤差。為了減少這種相位抖動(dòng),K值必須大于M/4。但K值取得太大會延長環(huán)路鎖定時(shí)間和減小捕捉帶,因此選擇一個(gè)適當(dāng)?shù)腒值相當(dāng)重要。
圖4
2 全數(shù)字鎖相環(huán)仿真驗(yàn)證與分析
2.1 鎖定時(shí)間
變??赡嬗?jì)數(shù)器的模數(shù)K對DPLL的鎖定時(shí)間起著關(guān)鍵的作用。圖3為K=2 6時(shí)DPLL的輸出仿真波形。環(huán)路達(dá)到鎖定狀態(tài)的仿真時(shí)間為371.3μs,而K=2 8時(shí)環(huán)路達(dá)到鎖定狀態(tài)的仿真時(shí)間為1.54ms。由此可見,模K越大,環(huán)路進(jìn)入鎖定狀態(tài)的時(shí)間越長。
2.2 捕捉帶
根據(jù)公式(4)可以得到這樣的結(jié)論:模數(shù)K越大,捕捉帶就越小。在本設(shè)計(jì)中,模數(shù)K的變化范圍是2 6~2 16,相應(yīng)捕捉帶的范圍是32kHz~85.3kHz。
2.3 同步帶
在本設(shè)計(jì)中,中心頻率為64kHz。將輸入信號頻率偏移該中心頻率,恰能使DPLL鎖定的頻率范圍為同步帶。經(jīng)過測試,同步帶范圍是63.82kHz~64.1kHz。圖4顯示的是DPLL在同步帶上邊界時(shí)的鎖定波形。
2.4 DPLL系統(tǒng)仿真結(jié)果
DPLL的系統(tǒng)仿真結(jié)果如圖5所示。圖中所顯示的OUTl6、OUT56、OUT64輸出信號符合設(shè)計(jì)要求。
DPLL設(shè)計(jì)的關(guān)鍵技術(shù)集中在數(shù)字環(huán)路濾波器和數(shù)控振蕩器上。數(shù)字環(huán)路濾波器可以看成模數(shù)K可預(yù)置的可逆計(jì)數(shù)器,這個(gè)可逆計(jì)數(shù)器與其它計(jì)數(shù)器最大的區(qū)別是“加”與“減”的計(jì)數(shù)值能夠相互抵消,因?yàn)橹挥羞@樣才能保證可逆計(jì)數(shù)器“加”和“減”的周期相同時(shí),其輸出端不會產(chǎn)生進(jìn)位或借位脈沖。另外,模數(shù)K的選擇非常重要,要綜合考慮捕捉時(shí)間和同步誤差相矛盾的問題。在數(shù)控振蕩器的設(shè)計(jì)中,要注意輸入的進(jìn)位和借位脈沖信號周期不能太小,否則就不能對數(shù)控振蕩器起作用,必須擴(kuò)大輸入的進(jìn)位和借位脈沖信號的時(shí)鐘周期。本設(shè)計(jì)是將其擴(kuò)大了16倍。