基于FPGA的智能全數(shù)字鎖相環(huán)的設(shè)計
1 引言
數(shù)字鎖相環(huán)路已在數(shù)字通信、無線電電子學(xué)及電力系統(tǒng)自動化等領(lǐng)域中得到了極為廣泛的應(yīng)用。隨著集成電路技術(shù)的發(fā)展,不僅能夠制成頻率較高的單片集成鎖相環(huán)路,而且可以把整個系統(tǒng)集成到一個芯片上去。在基于FPGA的通信電路中,可以把全數(shù)字鎖相環(huán)路作為一個功能模塊嵌入FPGA中,構(gòu)成片內(nèi)鎖相環(huán)。
鎖相環(huán)是一個相位誤差控制系統(tǒng)。它比較輸入信號和振蕩器輸出信號之間的相位差,從而產(chǎn)生誤差控制信號來調(diào)整振蕩器的頻率,以達(dá)到與輸入信號同頻同相。所謂全數(shù)字鎖相環(huán)路(DPLL)就是環(huán)路部件全部數(shù)字化,采用數(shù)字鑒相器(DPD)、數(shù)字環(huán)路濾波器(DLF)、數(shù)控振蕩器(DCO)構(gòu)成的鎖相環(huán)路,其組成框圖見圖1示。
當(dāng)鎖相環(huán)中的鑒相器與數(shù)控振蕩器選定后,鎖相環(huán)的性能很大程度依賴于數(shù)字環(huán)路濾波器的參數(shù)設(shè)置。
2 K計數(shù)器的參數(shù)設(shè)置
74297中的環(huán)路濾波器采用了K計數(shù)器。其功能就是對相位誤差序列計數(shù)即濾波,并輸出相應(yīng)的進(jìn)位脈沖或是借位脈沖,來調(diào)整I/D數(shù)控振蕩器輸出信號的相位(或頻率),從而實現(xiàn)相位控制和鎖定。
K計數(shù)器中K值的選取需要由四根控制線來進(jìn)行控制,模值是2的N次冪。在鎖相環(huán)路同步的狀態(tài)下,鑒相器既沒有超前脈沖也沒有滯后脈沖輸出,所以K計數(shù)器通常是沒有輸出的;這就大大減少了由噪聲引起的對鎖相環(huán)路的誤控作用。也就是說,K計數(shù)器作為濾波器,有效地濾除了噪聲對環(huán)路的干擾作用。
顯然,設(shè)計中適當(dāng)選取K值是很重要的。K值取得大,對抑止噪聲有利(因為K值大,計數(shù)器對少量的噪聲干擾不可能計滿,所以不會有進(jìn)位或借位脈沖輸出),但這樣捕捉帶變小,而且加大了環(huán)路進(jìn)入鎖定狀態(tài)的時間。反之,K值取得小,可以加速環(huán)路的入鎖,但K計數(shù)器會頻繁地產(chǎn)生進(jìn)位或借位脈沖,從而導(dǎo)致了相位抖動,相應(yīng)地對噪聲的抑制能力也隨之降低。
為了平衡鎖定時間與相位抖動之間的矛盾,理想的情況是當(dāng)數(shù)字鎖相環(huán)處于失步狀態(tài)時,降低K計數(shù)器的設(shè)置,反之加大其設(shè)置。實現(xiàn)的前提是檢測鎖相環(huán)的工作狀態(tài)。
3 工作狀態(tài)檢測電路
圖2為鎖相環(huán)狀態(tài)檢測電路,由觸發(fā)器與單穩(wěn)態(tài)振蕩器構(gòu)成,fin為輸入的參考時鐘,fout為鎖相環(huán)振蕩器輸出的時鐘移相900。fout對fin的抽樣送入單穩(wěn)態(tài)振蕩器。
在鎖定狀態(tài)如圖3,fout與fin具有穩(wěn)定的相位關(guān)系, fout對fin抽樣應(yīng)全部為0或1,這樣不會激發(fā)振蕩器振蕩,從而lock將輸出低電平;而失鎖狀態(tài)時如圖4,fout與fin出現(xiàn)相位之間的滑動,抽樣時就不會出現(xiàn)長時間的0或1,單穩(wěn)態(tài)振蕩器振蕩,使lock輸出高電平。鎖相環(huán)的鎖定狀態(tài)保持時間的認(rèn)定,可以通過設(shè)置振蕩器的性能。在FPGA設(shè)計中,要采用片外元件來進(jìn)行單穩(wěn)定時,是很麻煩的,而且也不利于集成和代碼移植。單穩(wěn)態(tài)振蕩器的實現(xiàn)也可以在FPGA內(nèi)實現(xiàn),利用計數(shù)器的方法可以設(shè)計全數(shù)字化的上升、下降沿雙向觸發(fā)的可重觸發(fā)單穩(wěn)態(tài)振蕩器。
4 智能鎖相環(huán)的設(shè)計
智能全數(shù)字鎖相環(huán)的設(shè)計如圖5所示。鎖相環(huán)與CPU接口電路,由寄存器來完成。對于CPU寄存器內(nèi)容分為兩部分:鎖相環(huán)的工作狀態(tài)(只讀),k計數(shù)器的參數(shù)值(讀/寫)。CPU可以通過外部總線讀寫寄存器的內(nèi)容。
圖5 智能全數(shù)字鎖相環(huán)框圖
CPU根據(jù)鎖相環(huán)狀態(tài)就可以對鎖相環(huán)K計數(shù)器進(jìn)行最優(yōu)設(shè)置。實際測試時設(shè)置K初始值為23,此時鎖相環(huán)的捕捉帶較大,在很短時間內(nèi)就可以達(dá)到鎖定狀態(tài),lock變?yōu)榈碗娖?。CPU檢測到此信號后自動將K值加1,如lock仍然為低電平,CPU會繼續(xù)增加K 值;直到鎖相環(huán)失鎖,記住其最佳設(shè)置值。設(shè)置K為初始值,鎖定后,設(shè)置到最佳值,這樣鎖相會快速進(jìn)入最佳的鎖定狀態(tài)。
關(guān)于CPU的選擇有三種方案:①FPGA片內(nèi)實現(xiàn)CPU。片上系統(tǒng)的發(fā)展使其成為可能。②與片外系統(tǒng)共用CPU。DPLL大多用于通信系統(tǒng)中,而大部分通信系統(tǒng)都有嵌入式CPU。③單獨采用一個廉價單片機(如89C51),不僅可用于智能鎖相環(huán)的控制,還可控制外部RAM實現(xiàn)FPGA的初始裝載,一機多用,經(jīng)濟實惠??梢砸暰唧w情況而定。
5 結(jié)論
智能全數(shù)字鎖相環(huán),在單片FPGA中就可以實現(xiàn),借助鎖相環(huán)狀態(tài)監(jiān)測電路,通過CPU可以縮短鎖相環(huán)鎖定時間,并逐漸改進(jìn)其輸出頻率的抖動特性。解決了鎖定時間與相位抖動之間的矛盾,對信息的傳輸質(zhì)量都有很大的提高。此鎖相環(huán)已用于我校研發(fā)的數(shù)字通信產(chǎn)品中。