直接擴(kuò)頻通信同步系統(tǒng)的FPGA設(shè)計與實現(xiàn)
摘要:對直接擴(kuò)頻通信同步系統(tǒng)進(jìn)行了研究,使用PN碼作為擴(kuò)頻序列,利用其良好的自相關(guān)性,提出一種新式的滑動相關(guān)法使收發(fā)端同步,并給出該系統(tǒng)的FPGA實現(xiàn)方法。利用ISE 10.1開發(fā)軟件仿真驗證,證明此方法可以提高運算速度,減少捕獲時間。
關(guān)鍵詞:擴(kuò)頻通信;滑動相關(guān);FPGA
0 引言
擴(kuò)頻通信系統(tǒng)具有容量大、抗干擾能力強、保密性好等優(yōu)點。但是如果收發(fā)兩端PN碼的頻率和相位不同步,解擴(kuò)后的數(shù)據(jù)只是一片噪聲。擴(kuò)頻通信系統(tǒng)的關(guān)鍵技術(shù)之一PN碼同步包含捕獲和跟蹤兩個過程,本文只對捕獲過程做重點研究。
最簡單的串行捕獲方法是滑動相關(guān)法,本文在原有方法上加以改進(jìn),使得捕獲的速度更快,實時性更強。
1 滑動相關(guān)的基本原理
滑動相關(guān)法是利用PN碼良好的相關(guān)特性,在接收端與發(fā)送端相位不對齊時相關(guān)值很小,而當(dāng)它們相位對齊時做相關(guān)運算會輸出一個很大的峰值。
如圖1所示,接收信號與本地產(chǎn)生的PN碼做相關(guān)運算,如果計算結(jié)果小于預(yù)設(shè)門限值,則門限鑒別器會控制PN碼移位控制時鐘,在此時鐘驅(qū)動下,碼產(chǎn)生器產(chǎn)生的偽隨機序列移動一個相位繼續(xù)和接收信號做相關(guān)運算。直到計算結(jié)果大于某一門限值時,表示完成對接收信號的捕獲,門限鑒別器就不再控制PN碼移位,而給跟蹤單元使能信號,讓跟蹤單元開始工作。
這種方法最大的優(yōu)點是實現(xiàn)簡單,但是如果接收信號和本地PN碼不對齊,需要不斷對本地碼移位并重新計算判決,速度慢,實時性不好,本文對滑動相關(guān)法進(jìn)行改進(jìn),系統(tǒng)性能提高明顯。
2 改進(jìn)滑動相關(guān)法的FPGA實現(xiàn)
改進(jìn)滑動相關(guān)捕獲法的FPGA實現(xiàn)包括以下模塊:信號存儲模塊、PN碼存儲模塊、乘法器模塊、積分器模塊和門限鑒別模塊。原理框圖如圖2所示。
采樣得到的接收信號存于信號存儲器中,本地PN碼不再由PN碼產(chǎn)生器生成,而是事先存于FPGA內(nèi)部的存儲器中。相關(guān)運算時不滑動本地PN碼,直接由存儲器中讀取,每采樣一次滑動一次接收端存儲單元數(shù)據(jù),通過后續(xù)單元并行計算并完成一次相關(guān)判決,這樣可以提高運算速度,發(fā)端發(fā)完一組完整PN碼就可以完成信號的捕獲。算法每個單元具體實現(xiàn)過程將在下文具體闡述。
2.1 信號存儲器
信號存儲單元由一個雙口RAM構(gòu)成,在采樣時鐘驅(qū)動下,接收信號按地址順序存于RAM中。RAM的讀取時鐘是做乘法的計算時鐘,在采樣速率不是很快時,計算時鐘可以是采樣時鐘的數(shù)十倍,可以達(dá)到上百兆,而讀取數(shù)據(jù)寬度也可以擴(kuò)展為接收數(shù)據(jù)寬度的整數(shù)倍,一次讀取多個接收數(shù)據(jù)參與運算,這樣串行運算變?yōu)椴⑿羞\算,極大提高了處理速度。如圖3所示,接收到的數(shù)據(jù)按從地址0到地址7的順序存儲,讀取數(shù)據(jù)寬度是接收信號的4倍,那么每存儲4個數(shù)據(jù)后讀取地址滑動一次,一次并行讀取4個數(shù)據(jù)和本地PN碼做乘法。[!--empirenews.page--]
如果PN碼周期是127,讀取寬度為40,那么4個計算時鐘就可以完成乘法計算,但是讀取寬度太寬會增加FPGA內(nèi)部邏輯單元的使用量,需要在資源和速率方面做權(quán)衡。
2.2 PN碼存儲器
在傳統(tǒng)的滑動相關(guān)法中,PN碼如果選取m序列可由FPGA做反饋移位產(chǎn)生,順序讀取,這樣會影響運算效率。本文將PN碼由Matlab工具軟件生成,然后按一定格式存儲于FPGA內(nèi)部存儲器,可選取ROM存儲,讀取寬度和信號存儲器的讀取寬度相同。PN碼存儲器不滑動,每次都按地址遞增順序讀取數(shù)據(jù),操作和信號存儲器類似,不再贅述。
2.3 乘法器和積分器
這兩個模塊主要是實現(xiàn)接收數(shù)據(jù)和本地PN碼進(jìn)行相關(guān)累加功能。接收到的數(shù)據(jù)首先和本地碼相乘,然后將相乘結(jié)果累加完成積分功能。
乘法并不需要FPGA器件內(nèi)部的硬件乘法器,如果PN碼為1則將接收數(shù)據(jù)取正號,PN碼為0則將接收數(shù)據(jù)取負(fù)號。每個乘法器時鐘完成一個讀取地址中一組數(shù)據(jù)的乘操作,乘完將一組相乘結(jié)果求和后輸入到積分器進(jìn)行每一組數(shù)據(jù)的累加。如果每組參與乘加的數(shù)據(jù)很多,一個時鐘不能完成加法運算可以采用流水線方法優(yōu)化算法。
積分器累加的次數(shù)由PN碼長度和每次參與乘法運算的數(shù)據(jù)個數(shù)有關(guān)(即讀取數(shù)據(jù)的寬度),數(shù)據(jù)個數(shù)越多需要累加的次數(shù)越少。累加結(jié)束后將計算結(jié)果輸入到門限鑒別器做后續(xù)判決,同時積分器清零。
2.4 門限鑒別器
門限鑒別器的功能是對判決積分器的計算結(jié)果進(jìn)行最大值檢測。檢測值超過門限預(yù)設(shè)值,則給跟蹤單元使能信號,啟動跟蹤功能,否則不作任何操作。
門限值的設(shè)定需要通過Matlab工具軟件仿真得出。m序列有很好的相關(guān)特性,當(dāng)接收信號與本地碼同步時積分器會輸出一個明顯高于不同步時的峰值,在實際應(yīng)用的場合由于噪聲大小不同峰值也不是固定值,要根據(jù)情況進(jìn)行仿真設(shè)定一個比較適合的數(shù)值。數(shù)值過大會出現(xiàn)漏警現(xiàn)象,即已經(jīng)同步但受噪聲影響積分器輸出值小于門限值而使系統(tǒng)無法正常工作。數(shù)值過小會導(dǎo)致不同步時啟動跟蹤單元。一般多次仿真,并把門限值設(shè)置稍大有利于系統(tǒng)正常運行。
3 FPGA仿真結(jié)果與分析
本系統(tǒng)設(shè)計時選取的是Xilinx公司Virtex系列的XC4VSX35芯片,該芯片含有34560個邏輯單元,可用I/O腳448個,192個18×18 Xtreme DSP,18kb Block RAM 192個,最高工作頻率500M。以Xillnx公司的ISE 10.1開發(fā)軟件為平臺,運用Verlog語言作為輸入,并編譯、仿真、下載驗證了同步捕獲系統(tǒng)。圖4為系統(tǒng)仿真圖,clk_1是數(shù)據(jù)采樣時鐘,每次時鐘上升沿接收數(shù)據(jù)由data_in輸入,clk_2為計算時鐘,每次采樣一個數(shù)據(jù)后4個計算時鐘相關(guān)值由he輸出,由圖可以看出并行相關(guān)運算速度很快。本系統(tǒng)的門限值設(shè)置為125,如圖he值沒有超過門限值則下一個時鐘清零,如果系統(tǒng)捕獲成功he超過門限則輸入給跟蹤單元的使能信號enable保持一個周期的高電平,從而啟動跟蹤單元工作。
4 結(jié)論
本文提出的改進(jìn)滑動相關(guān)算法運算速度快,捕獲時間短,實現(xiàn)起來比較簡單。利用FPGA設(shè)計并實現(xiàn)了算法,仿真結(jié)果滿足系統(tǒng)要求,該方法成功應(yīng)用在擴(kuò)頻通信解擴(kuò)端,使用效果良好。