基于FPGA滑動(dòng)相關(guān)法偽碼捕獲的實(shí)現
對于碼分多址的擴頻通信方式而言,只有當接收端本地偽碼與發(fā)端偽碼處于相同相位狀態(tài)時(shí),有用的信息才能被解出。因此,擴頻序列相位的捕獲與跟蹤是擴頻通信系統的關(guān)鍵,而偽碼序列相位的捕獲尤為重要。滑動(dòng)相關(guān)法是常用的方法之一。擴頻通信系統要求實(shí)時(shí)性,以及較高的數據處理速度,這正是FPGA的優(yōu)勢。所以在擴頻通信系統中,大量應用FPGA芯片作為前級處理芯片。
實(shí)現原理
原理分析
接收機端接收到的擴頻信號可以表示為:

其中,P_{r}為接收信號功率,τ_lcxurfm為傳輸時(shí)延,D(t)為信息碼, PN(t)為偽碼, n(t)為傳輸過(guò)程的加性噪聲。擴頻接收機要完成的任務(wù)就是去掉PN(T-τ_xtojxcq) 偽碼項和cos(ω_{0}t+φ) 載波項,從而得到信息數據DZ(t)。
VCO輸出I、Q兩路信號:
通過(guò)同相正交相乘器得到:
實(shí)現框圖
在直接序列擴頻系統中,偽碼的捕獲是構成碼同步系統的重要結構,也是直擴系統中必不可少的部分。接收機若要把偽碼擴展的信號解出,接收方就必須能產(chǎn)生一個(gè)與發(fā)方一樣的偽碼序列(保證最大相關(guān)值),而且,該本地偽碼速率、相位要與接收到的偽碼保持一致。對于約定好的收、發(fā)方用同一個(gè)偽碼很容易辦到,但是,如果要從解擴相關(guān)器得到傳送的信息,僅僅保證一樣的碼型是遠遠不夠的。因為即使相同的偽隨機碼,當相位差大于一個(gè)碼片時(shí),它們的相關(guān)峰就完全消失。在實(shí)際通信中,由于收、發(fā)信機時(shí)鐘的不穩定性,接收、發(fā)射時(shí)刻的不確定性,信道傳輸延遲及干擾等因素的影響,收、發(fā)偽碼序列的相位差是隨機的。因此解擴的第一步就是要在接收信號的偽碼相位中捕獲到一個(gè)與本地偽碼一致的相位狀態(tài)。當這種狀態(tài)出現時(shí)相關(guān)器就會(huì )有一個(gè)相關(guān)峰值輸出,峰值與門(mén)限相比,若超出則確定相位已捕捉到,立即停止捕捉動(dòng)作,轉入相位跟蹤狀態(tài);若小于門(mén)限則改變本地碼相位,繼續進(jìn)行捕獲。系統實(shí)現原理如圖1所示。
根據相位捕獲的方法可分為:連續相位滑動(dòng)相關(guān)法和在此思路上改進(jìn)的不連續相位相關(guān)法。
連續相位滑動(dòng)相關(guān)法
此方法是通過(guò)改變本地偽碼時(shí)鐘速率,與發(fā)端偽碼時(shí)鐘速率保持一個(gè)合適偏移量,使接收信號中偽碼相位與本地偽碼相位在相關(guān)器內進(jìn)行相對滑動(dòng)。這種方法的相位捕獲是連續進(jìn)行的,所以相關(guān)峰值是一個(gè)連續量。相關(guān)值一旦超過(guò)捕獲門(mén)限,標志正確相位已被搜索到,接收機立即恢復本地偽碼時(shí)鐘速率(收、發(fā)信機都使用穩定度很高的振蕩源,所以它們的碼速率可以基本保持一致),停止相位滑動(dòng),啟動(dòng)跟蹤電路,使相位差進(jìn)一步縮小(意味著(zhù)相關(guān)性增大),獲得更高解擴信噪比,滿(mǎn)足其后解調門(mén)限要求。此種捕獲方法捕獲時(shí)間和檢測概率相互矛盾。例如,對于一個(gè)N=215位的PN碼,兩偽碼之間最大相對滑動(dòng)速率約為5kc/ps,遍歷其所有相關(guān)狀態(tài)需要的時(shí)間為6.55S。在實(shí)際通信過(guò)程中,由于干擾及其它原因造成偽碼相位失鎖需要重新捕捉時(shí),這么長(cháng)的捕捉時(shí)間會(huì )嚴重影響通信質(zhì)量,因而是不可取的。由以上分析可知,這種捕捉方法相位搜索精度高但同時(shí)導致了過(guò)長(cháng)的捕捉時(shí)間,在實(shí)際中很少應用,但其思路值得借鑒。不連續滑動(dòng)相關(guān)法就是在此基礎上的改進(jìn)。
不連續相位滑動(dòng)相關(guān)法
所謂連續與不連續的區別是對搜索中相位的滑動(dòng)變化量而言,后一種方法是把連續的相位搜索改為跳躍式的搜索,即兩個(gè)碼之間的相位滑動(dòng)量不再是連續地以一定的步進(jìn)量產(chǎn)生相位滑動(dòng)。不連續滑動(dòng)相關(guān)法是利用一個(gè)相位搜索電路,在捕獲過(guò)程中使本地偽碼相位以一定的步進(jìn)值跳躍變化,這樣遍歷整個(gè)偽碼時(shí)間大大減少。與前一種方法相比,它的收、發(fā)偽碼時(shí)鐘速率保持一致,從而不會(huì )造成碼片寬度不一致,導致相關(guān)峰值下降。本地偽碼與接收偽碼相位的相對改變是靠搜索電路對偽碼發(fā)生器時(shí)鐘的超前、滯后控制來(lái)實(shí)現的,因此相位搜索電路(如圖2所示)是不同于前者的關(guān)鍵所在。下面重點(diǎn)討論實(shí)現半碼片滑動(dòng)的實(shí)現方法。
捕獲方法1 (滑動(dòng)步進(jìn)為T(mén)C/2)
時(shí)鐘取反法:
如圖1所示,當信號包絡(luò )的平方小于門(mén)限時(shí),輸出控制信號,對圖2中CLK取反,取反的結果相當于利用原CLK時(shí)鐘下降沿進(jìn)行觸發(fā)。經(jīng)過(guò)二分頻后作為偽碼產(chǎn)生器的時(shí)鐘,同時(shí)把CLK作為移位寄存器的時(shí)鐘,三位移位寄存器的輸出相當于移動(dòng)了半個(gè)碼片。FPGA仿真結果如圖3所示。
捕獲方法2 (滑動(dòng)步進(jìn)為T(mén)C/2)
時(shí)鐘取反法改進(jìn):
此方法采用觸發(fā)器結構,把2倍的CLK作為輸入,CLK作為使能端,利用FPGA自帶的IP核--鎖相環(huán)使CLK相位超前,包住2倍CLK的上升沿,觸發(fā)器的輸出即為CLK,FPGA仿真結果如圖4所示。圖中,co為輸入端,pn為鎖相環(huán)的輸出作為使能端。對使能端取反操作,通過(guò)圖2的電路結構即可完成半碼片的移動(dòng)。但是,同時(shí)要對二分之一CLK進(jìn)行鎖相操作,如果實(shí)現多路,由于FPGA內部只有2個(gè)鎖相環(huán),所以,實(shí)用性受到限制。
捕獲方法3 (滑動(dòng)步進(jìn)為T(mén)C/2)
加脈沖移位法:
此方法是采用一個(gè)異或門(mén),如圖5所示,使碼NCO的輸出CLK與一個(gè)信號異或輸出,此信號平時(shí)一直為高(或低)電平,一旦收到低于門(mén)限值時(shí),輸出一個(gè)低(或高)脈沖,與CLK異或后,相當于在原CLK時(shí)鐘上加了一個(gè)脈沖,通過(guò)圖示的電路后,偽碼產(chǎn)生器前進(jìn)了半個(gè)相位,通過(guò)移位寄存器后,即可實(shí)現半個(gè)碼相位的移動(dòng)(超前半個(gè)碼片)。
FPGA仿真結果如圖6所示。圖中CLK1為碼NCO的輸出,CLK2為它的二分頻作為偽碼產(chǎn)生器的時(shí)鐘,pn1為偽碼產(chǎn)生器輸出,k1為信號,平常輸出高電平,當門(mén)限檢測結果為低時(shí),輸出一個(gè)低脈沖與CLK1異或輸出,結果為CLK3。從仿真圖中可以看出CLK3相對于CLK2在k1為低脈沖時(shí),增加了一個(gè)脈沖。
實(shí)現結果
通過(guò)以上的分析,再結合擴頻通信的有關(guān)理論,可以知道要實(shí)現信號的捕獲,必須通過(guò)載波和偽碼相位的二維搜索。首先,對接收的信號進(jìn)行數字下變頻,變?yōu)榱阒蓄lI、Q兩路信號,再與本地PN碼進(jìn)行解擴運算。結果與門(mén)限值比較,如果小于門(mén)限則按照前面分析的方法順序移動(dòng)半個(gè)碼片,直到包絡(luò )的平方大于門(mén)限轉入跟蹤狀態(tài)。捕獲電路如圖1所示。
采用上述方法,在實(shí)際中對某一擴頻信號進(jìn)行捕獲
信號參數
中頻40MHz ;
調制樣式為DS-BPSK;
偽碼長(cháng)度為1024;
數據率5Kb/s;
采樣時(shí)鐘60MHz;
各個(gè)模塊功能描述
數字下變頻:
載波NCO的輸出與輸入信號在乘法器中進(jìn)行數字下變頻,功能是去除輸入信號載頻而保留了用于基帶相關(guān)的碼。
數字相關(guān)器:
累加清除器的作用是對經(jīng)過(guò)數字正交下變頻后的I、Q兩路信號與本地再生偽碼相乘的結果進(jìn)行積分累加。采用的是一個(gè)累加器對數字混頻后輸入信號與本地碼相乘的每一位結果進(jìn)行累加。經(jīng)過(guò)一定時(shí)間(本方案為12000次)的積分累積后,得到一個(gè)數據位的相關(guān)值。此相關(guān)值與預設門(mén)限比較,進(jìn)行捕獲判決。如果小于門(mén)限,則認為捕獲失敗,清除累加結,滑動(dòng)半個(gè)碼片后,重新進(jìn)行累加積分。累加清洗器進(jìn)行一個(gè)碼周期的數據累加,輸出一次相關(guān)累加值。最大的捕獲時(shí)間為0.4094秒(0.2mS*2047)。
載波NCO:
載波NCO是載波跟蹤環(huán)的重要組成部分,它的主要功能是產(chǎn)生本地復制載波信號。載波NCO模塊設置有頻率控制字輸入接口,模塊內部通過(guò)32位相位累加其對輸入控制字進(jìn)行累加,獲得相位值的映射地址,通過(guò)查表獲得正余弦兩路信號。載波環(huán)路通過(guò)不斷調整載波NCO的頻率字來(lái)保持對接收信號載波頻率和相位的跟蹤。
碼NCO:
碼NCO是碼跟蹤環(huán)的核心。它的主要功能是為再生偽碼發(fā)生器提供精確的時(shí)鐘信號,保證實(shí)現對接收信號的碼捕獲和跟蹤。碼NCO設置有頻率控制字,頻率控制字負責碼率的調整和碼相位延時(shí)。
實(shí)現結果
A/D采用AD9288-100,是8位的轉換結果,最高工作頻率可達到100M,數字下變頻和捕獲電路在EP1C12Q240C8(Cyclong)中實(shí)現,運算的中間測試結果如圖8所示,圖中pn2_clk為NCO輸出時(shí)鐘,x_pn為偽碼,c1_data和s1_data為載波NCO產(chǎn)生的用于下變頻的I、Q路載波信號。pn_e、pn_p、pn_l分別為移位寄存器輸出的超前、即時(shí)和滯后碼,它們相差半個(gè)碼片。
最后的捕獲結果如圖9所示。圖中ad_data為接收的數字中頻信號,last_data為最后捕獲的結果。
保存數據,在Matlab中的相關(guān)結果如圖10所示。
加脈沖法可以使本地碼相位超前半個(gè)碼片相位,實(shí)現非連續相位滑動(dòng)相關(guān),電路結構簡(jiǎn)單,在FPGA中容易實(shí)現,是一種簡(jiǎn)單實(shí)用的方法,在實(shí)際系統設計中已被采用并獲得了理想的結果。
評論