直擴(kuò)系統(tǒng)PN碼捕獲和跟蹤的FPGA實(shí)現(xiàn)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:在數(shù)字匹配濾波器和超前滯后鑒相環(huán)路的理論基礎(chǔ)上,采用VHDL編程,在FPGA芯片上實(shí)現(xiàn)PN碼捕獲和跟蹤的電路。詳細(xì)討論了各電路模塊的設(shè)計(jì)實(shí)現(xiàn)方法。完成電路的仿真驗(yàn)證,給出了仿真波形。結(jié)果表明電路工作正常可靠,系統(tǒng)擴(kuò)展方便靈活,滿足設(shè)計(jì)要求。
關(guān)鍵詞:FPGA;PN碼捕獲;PN碼跟蹤;數(shù)字匹配濾波器;超前滯后環(huán)路
在接收機(jī)端,為了接收到正確的信號,必須使得本地PN碼與接收信號PN碼嚴(yán)格同步。PN碼同步的過程分為兩個(gè)階段:捕獲和跟蹤。典型的捕獲方法是匹配濾波器法,而跟蹤則常用超前滯后鑒相跟蹤環(huán)路。隨著可編程邏輯器件FPGA的大規(guī)模使用,數(shù)字電路系統(tǒng)的設(shè)計(jì)變得更加靈活和方便,并且易于系統(tǒng)維護(hù)和更新。本設(shè)計(jì)采用VHDL編程,用FPGA實(shí)現(xiàn)了PN碼捕獲和跟蹤的電路。
1 捕獲和跟蹤的原理
如圖1所示,捕獲和跟蹤環(huán)路主要由數(shù)字匹配濾波器模塊、PN碼發(fā)生器模塊、碼時(shí)鐘發(fā)生器模塊和鑒相模塊組成。捕獲和跟蹤主要利用PN碼的自相關(guān)特性和鑒相特性,如圖2所示。其中圖2(a)是序列的自相關(guān)函數(shù)R(τ),利用此特性,讓接收信號依次劃過本地PN碼,并進(jìn)行相關(guān)運(yùn)算,當(dāng)兩者同步時(shí),相關(guān)值達(dá)到相關(guān)峰值,大于預(yù)先設(shè)定的門限,表明此時(shí)完成捕獲。圖2(b)中虛線①是自相關(guān)函數(shù)向右移Tc/2之后的自相關(guān)函數(shù)R(τ-Tc/2),虛線②是自相關(guān)函數(shù)向左移Tc/2之后的自相關(guān)函數(shù)R(τ+Tc/2),而實(shí)線是R(τ-Tc/2)減去R(τ+Tc/2)之后的S型鑒相曲線D(τ)。當(dāng)τ=0時(shí),鑒相結(jié)果為0,表明本地PN碼與接收信號同步。當(dāng)τ≠0時(shí),鑒相器輸出正或負(fù)的極性結(jié)果,調(diào)整PN碼時(shí)鐘提前或者滯后PN碼。其中:Tc是PN碼片周期。
1.1 捕獲
捕獲利用PN碼的序列自相關(guān)特性,如圖2(a)所示。捕獲常用數(shù)字匹配濾波器法。數(shù)字匹配濾波器法雖然電路結(jié)構(gòu)較復(fù)雜,消耗資源較多,但捕獲過程很快,通??梢栽谝粋€(gè)PN碼周期內(nèi)完成。用數(shù)字匹配濾波器法捕獲擴(kuò)頻碼時(shí),以靜止的本地PN碼作為濾波器的抽頭,接收到的信號序列依次劃過本地PN碼,每一個(gè)時(shí)刻都可以產(chǎn)生一個(gè)相關(guān)結(jié)果。當(dāng)兩個(gè)序列相位對齊時(shí),相關(guān)結(jié)果將有一個(gè)相關(guān)峰值(擴(kuò)頻序列在零相位時(shí)的自相關(guān)函數(shù)值)輸出,相關(guān)值大于預(yù)先設(shè)定的門限時(shí)表示捕獲成功,此時(shí)接收信號與本地PN碼粗同步,同步在一個(gè)PN碼元時(shí)長,下一步進(jìn)入跟蹤階段進(jìn)行精確同步。
1.2 跟蹤
跟蹤常用超前滯后跟蹤環(huán)法,利用PN碼的鑒相特性,如圖2(b)所示。輸入擴(kuò)頻信號分別和超前、滯后1/2個(gè)碼元周期的PN碼進(jìn)行相關(guān)運(yùn)算,兩者相關(guān)值之差作為鑒相結(jié)果輸入至碼時(shí)鐘生成器來調(diào)整PN碼相位,保持本地PN碼與接收信號之間的嚴(yán)格同步。同時(shí)擴(kuò)頻信號與本地PN碼相關(guān)之后解擴(kuò)輸出。若連續(xù)幾次失步,則重新轉(zhuǎn)入捕獲階段,進(jìn)行粗同步。
2 捕獲和跟蹤環(huán)的各子模塊設(shè)計(jì)
2.1 數(shù)字匹配濾波器模塊
本文采用的PN碼為63位m序列,取數(shù)字匹配濾波器的抽頭個(gè)數(shù)和PN碼的位數(shù)相同,即為63位,在FPGA中就是要用一個(gè)63位的存儲器。接收數(shù)據(jù)用一個(gè)63位的移位寄存器存儲,每一時(shí)刻讓移位寄存器和存儲器的每一位進(jìn)行相關(guān)運(yùn)算,并將相關(guān)值輸出。直到輸出的相關(guān)值大于門限時(shí)表示已經(jīng)產(chǎn)生相關(guān)峰值,說明接收信號與本地PN碼已經(jīng)同步在一個(gè)碼元時(shí)長的相位差范圍內(nèi),并置跟蹤信號為高電平,轉(zhuǎn)入捕獲進(jìn)行精確同步。該模塊的結(jié)構(gòu)圖如圖3所示。
2.2 PN碼發(fā)生器模塊
根據(jù)PN碼時(shí)鐘利用2位相鄰移位寄存器延遲1/2個(gè)碼片周期,產(chǎn)生三路PN碼,本地PN碼一路、提前半個(gè)周期和延遲半個(gè)周期的各一路,共三路PN碼。來自數(shù)字匹配濾波器模塊的輸出跟蹤信號作為該模塊的使能啟動信號。
2.3 鑒相器模塊
三路PN碼與接收信號進(jìn)行相關(guān)運(yùn)算,中間一路PN碼與接收信號相關(guān)運(yùn)算后產(chǎn)生解擴(kuò)信號并輸出;早遲兩路PN碼與接收信號相關(guān)后產(chǎn)生相關(guān)值并進(jìn)行比較,用于控制PN碼時(shí)鐘信號。若早路PN碼與接收信號相關(guān)值大,則表示本地PN碼較接收信號相位提前,需控制PN碼時(shí)鐘信號滯后;若遲路PN碼與接收信號相關(guān)值較大,則表示本地PN碼較接收信號相位落后,需控制PN碼時(shí)鐘信號提前。若連續(xù)幾個(gè)PN碼周期相關(guān)值都小于設(shè)定的門限時(shí),表示PN碼失步,需要重新轉(zhuǎn)入捕獲階段。來自數(shù)字匹配濾波器模塊的輸出跟蹤信號作為該模塊的使能啟動信號。
2.4 碼時(shí)鐘發(fā)生模塊
根據(jù)鑒相器的結(jié)果滯后或者提前PN碼時(shí)鐘周期,并輸出至PN碼發(fā)生器,用于調(diào)整PN碼的相位,每次改變1/8個(gè)PN碼時(shí)鐘周期。圖4示出了該模塊的結(jié)構(gòu)圖,reset是系統(tǒng)復(fù)位信號,高電平有效;cyclk是時(shí)鐘輸入端,時(shí)鐘頻率是PN碼頻率的8倍;內(nèi)部設(shè)置加法器,記滿8則清零;如果沒有調(diào)整信息,則計(jì)數(shù)器正常加1;e_clk為超前指示,高電平有效,當(dāng)e_clk有效時(shí),計(jì)數(shù)器停止加法,則pnclk滯后1/8個(gè)PN碼元;l_clk為滯后指示,高電平有效,l_clk為高電平時(shí),計(jì)數(shù)器在cyclk上升沿加2,則控制pnclk提前1/8個(gè)PN碼元。
3 捕獲和跟蹤環(huán)在FPGA上的實(shí)現(xiàn)
本系統(tǒng)采用Altera公司的系列芯片,用VHDL語言編程,在Quartus 8.0中建模仿真。按照如下步驟完成擴(kuò)頻碼的捕獲和跟蹤,并給出了仿真波形圖,進(jìn)行了結(jié)果分析。
接收信號經(jīng)過A/D變換之后進(jìn)入FPGA,首先進(jìn)入捕獲模塊,每一個(gè)PN碼片時(shí)刻都有一個(gè)相關(guān)值輸出,當(dāng)相關(guān)值大于門限表示捕獲成功,轉(zhuǎn)入跟蹤階段。在跟蹤階段,PN碼發(fā)生模塊根據(jù)碼時(shí)鐘產(chǎn)生模塊的時(shí)鐘信號產(chǎn)生三路PN碼(超前、中間、滯后),接收信號與三路PN碼在鑒相模塊分別進(jìn)行相關(guān),中間一路產(chǎn)生解擴(kuò)碼輸出,超前、滯后兩路的相關(guān)值作差并將結(jié)果輸出至碼時(shí)鐘產(chǎn)生模塊,來調(diào)整PN碼時(shí)鐘,從而控制PN碼的相位,每次調(diào)整1/8個(gè)碼片周期。當(dāng)連續(xù)三次中間一路的相關(guān)值小于門限時(shí)表示已經(jīng)失步,需要重新捕獲,接下來將轉(zhuǎn)入捕獲階段。沿此環(huán)路即可實(shí)現(xiàn)本地PN碼與接收擴(kuò)頻碼的捕獲和跟蹤,進(jìn)而完成信號的解擴(kuò)輸出。
3.1 碼時(shí)鐘發(fā)生模塊仿真結(jié)果分析
圖5給出了碼時(shí)鐘發(fā)生模塊的仿真結(jié)果。其中cyclk是系統(tǒng)輸入時(shí)鐘;e_clk為超前指示,l_clk為滯后指示,pnclk為輸出PN碼時(shí)鐘。當(dāng)e_clk為高電平時(shí),在左側(cè)黑實(shí)線處可看到該模塊輸出的pnclk滯后了1/8個(gè)PN碼元;當(dāng)l_clk為高電平時(shí),在右側(cè)黑實(shí)線處可看到輸出的pnclk會提前1/8個(gè)PN碼元。
3.2 捕獲仿真結(jié)果分析
圖6(a)是捕獲階段的仿真結(jié)果圖。其中cyclk是系統(tǒng)輸入時(shí)鐘;pnclk是捕獲階段產(chǎn)生本地:PN碼的PN時(shí)鐘;reset是復(fù)位信號;sigin是輸入擴(kuò)頻信號,jiekuo是輸出解擴(kuò)信號;shibuj是捕獲模塊的啟動使能信號,高電平有效;genzong是跟蹤環(huán)路的啟動使能信號,高電平有效;xiangguangzhi是接收信號與本地PN碼的相關(guān)值累加和。圖6(b)中將xiangguanzhi信號放大,門限設(shè)置為1 760。在圖中右側(cè)黑實(shí)線處,此時(shí)相關(guān)值已經(jīng)大于門限,表示捕獲成功,置genzong信號為高電平,shibuj信號為低電平,啟動跟蹤環(huán)路,終止捕獲環(huán)路。同時(shí)產(chǎn)生三路PN碼。
3.3 跟蹤環(huán)路仿真結(jié)果分析
圖7是跟蹤仿真結(jié)果圖。其各信號代表的意思同上。人為調(diào)整sigin的相位,跟蹤環(huán)路總是可以跟蹤輸入擴(kuò)頻信號的變化,并準(zhǔn)確解擴(kuò)輸出,上述解擴(kuò)輸出結(jié)果為01000010。其中黑色實(shí)線處是解擴(kuò)毛刺,不影響結(jié)果的輸出。
3.4 連續(xù)三次失步之后轉(zhuǎn)入重新捕獲仿真結(jié)果及分析
圖8中cyclk是系統(tǒng)時(shí)鐘信號,pnclk是捕獲模塊產(chǎn)生PN碼的PN時(shí)鐘;reset是系統(tǒng)復(fù)位信號;sigin是輸入擴(kuò)頻信號,genzong是跟蹤環(huán)路的使能信號,高電平有效;shibuj是捕獲的啟動使能信號,高電平有效;圖中每個(gè)黑色實(shí)線處是一個(gè)PN碼周期的結(jié)束處,即兩道黑色實(shí)線之間是一個(gè)PN碼周期。在第三道黑色實(shí)線后genzong信號變?yōu)榈碗娖?,shibuj信號變?yōu)楦唠娖?,即跟蹤環(huán)路終止,捕獲環(huán)路重新啟動。
4 結(jié)語
本文介紹了直擴(kuò)系統(tǒng)中PN碼同步捕獲和跟蹤的方法,用VHDL語言完成了電路各個(gè)模塊的編程實(shí)現(xiàn),在Quartus 8.0中進(jìn)行了仿真,并給出了仿真波形,證明電路工作正確可靠,滿足設(shè)計(jì)要求。