陳 盈,竇高奇,王青波,鄧 冉
(海軍工程大學電子工程學院,湖北 武漢 430033)
軟件無線電(Software Defined Radio,SDR)技術(shù)是一種新型的無線電體系結(jié)構(gòu),通過軟硬結(jié)合,使無線網(wǎng)絡(luò)和用戶終端具有可重配置能力[1]。其目的在于減少模擬環(huán)節(jié)、縮短開發(fā)周期、提升通信設(shè)備兼容性。從理論上說,在同一軟件無線電平臺上任何一種無線通信制式都是兼容的[2]。由于SDR具有模塊化、系統(tǒng)化及開源化的開發(fā)環(huán)境,以及極強的可拓展性、可重構(gòu)性,常被運用于無線通信領(lǐng)域的快速開發(fā)和驗證。
多碼組合擴頻(Multi-code combined spread spectrum,MCSS),也稱為并行組合擴頻。是在多進制擴頻基礎(chǔ)上改進而來的一種新型直接擴頻方案,它不僅繼承了直接擴頻序列抗多徑性能好、隱蔽性強以及便于碼分多址的優(yōu)點,同時擁有更高的擴頻增益以及頻帶利用率,如今大多數(shù)的研究僅僅停留在軟件仿真階段而缺少實驗支撐,但若想通過硬件電路完成多碼組合擴頻設(shè)計復雜、開發(fā)周期長、投入成本和精力較高。本文旨在通過SDR通用平臺搭建一個能實現(xiàn)MCSS通信收發(fā)系統(tǒng),并通過實際的數(shù)據(jù)收發(fā)驗證各個模塊的可行性。
多碼組合擴頻系統(tǒng)由多進行擴頻優(yōu)化而來,不同之處在于多碼組合擴頻并非PN碼的簡單替換,其中涉及PN碼的選擇[3]、數(shù)據(jù)映射算法[6]、星座圖映射規(guī)則[5]以及軟硬判決算法[6]等由于多碼組合擴頻的特殊性,調(diào)制解調(diào)方式與多碼組合擴頻的具體參數(shù)相關(guān)。
多碼組合擴頻的傳輸?shù)暮诵脑谟冢簭目倲?shù)為M的PN碼中選取r個來表示k比特信息,而后進行等幅疊加并調(diào)制發(fā)送,用公式表述為
(1)
其中?·」表示向下取整,在接收端使用M個相關(guān)器進行相關(guān)接收,選取最大的r個值進行逆映射從而恢復發(fā)送數(shù)據(jù)。當r=1時,系統(tǒng)退化為傳統(tǒng)的多進制擴頻。其收發(fā)原理如圖1所示。
圖1 多碼組合擴頻系統(tǒng)擴頻解擴原理圖
多進制擴頻與多碼組合擴頻的區(qū)別在于數(shù)據(jù)映射算法。本文采用r-組合算法,在數(shù)學中的表述為:從M個不同的元素中任取個r元素組合,如果已知按大小排序的組合序號為N時,該組合的元素ai(1
(2)
反之,逆映射由式(3)確定
(3)
多碼組合擴頻系統(tǒng)以擴頻解擴方案選擇為中心,不同參數(shù)的選取決定了調(diào)制模式、系統(tǒng)帶寬以及系統(tǒng)性能。多參數(shù)選擇為其帶來了極大的靈活性,因此一個易于重構(gòu)的通用型SDR平臺不僅能方便的觀察不同參數(shù)下的擴頻效果、測試系統(tǒng)系能,更能通過實際信道論證MCSS應用的實際意義。
GNU-Radio為SDR的常用軟件,包括通用框架、調(diào)度器、C++和Python 工具、數(shù)字信號處理(DSP)模塊、用戶接口界面、硬件前端的接口6個部分[7]。DSP模塊包括編解碼、調(diào)制解調(diào)、數(shù)據(jù)組幀、數(shù)據(jù)濾波等大量的波形處理單元,用戶通過拖拽和連接模塊可方便的構(gòu)建各類通信系統(tǒng)框架流圖(flow graph),而下層的數(shù)據(jù)流動和處理由調(diào)度器完成,如圖2所示。此外,GNU開源社區(qū)提供了大量的拓展模塊,當然用戶也可以通過C++或Python進行模塊定制,并利用簡易組幀和封裝工具(SWIG)將其封裝。目前GNU-Radio可以通過個人電腦對音視頻、移動通信、衛(wèi)星雷達系統(tǒng)進行設(shè)計和模擬。
圖2 GNU-Radio組成示意圖
通用軟件無線電外設(shè)(The Universal Software Radio Peripheral,USRP)由子板、母板和射頻天線3部分組成,如圖3。從本質(zhì)上講,USRP相當于數(shù)字化基帶以及射頻通訊系統(tǒng)的中頻部分。 本文選用的硬件為USRP N210,其主ADC的最高采樣頻率為105MS/s,提供14位的數(shù)模轉(zhuǎn)換精度;而主DAC最高采樣頻率為100MS/s,提供16位的量化精度。子板選用SBX-40,提供400M-4.4GH的載波以支持頻段內(nèi)的通信應用。
圖3 USRP 框架及信號處理流程
基于MCSS原理框圖構(gòu)建SDR平臺時,要考慮如下幾個方面:
1) 硬件選擇與環(huán)境配置;
2) 模塊功能分析與框圖設(shè)計;
3) 自定義模塊的算法編程和封裝;
4) 流圖構(gòu)建與參數(shù)設(shè)定;
多碼組合擴頻系統(tǒng)的GNU-Radio流圖,如圖4所示。在流圖中基于C++自定義5個模塊,完成多碼組合擴頻系統(tǒng)的擴頻解擴、調(diào)制解調(diào)以及同步等波形變換。各個模塊的功能說明如表1所示。
圖4 GNU-Radio系統(tǒng)流圖
表1 模塊功能描述
1) 擴頻解擴模塊
在式(2)和式(3)中每輸入k比特輸入就要計算一次循環(huán)迭代,但r-組合映射算法具有一一映射關(guān)系,因此本文自定義模塊時,直接將映射關(guān)系作查表處理,具體流程如圖5。
圖5 映射算法流程圖
在實時的數(shù)據(jù)處理過程中,通過查表方案可以極大節(jié)省運算開銷,縮減數(shù)據(jù)處理時延,此外用戶可自動義映射規(guī)則、PN碼長度和類型,從而提升系統(tǒng)可編程性。
2) 同步模塊
該模塊定義的同步算法包括幀同步與定時同步。由于接收端USRP不區(qū)分信號與噪聲進行無差別的數(shù)據(jù)采集,數(shù)據(jù)發(fā)射前端加入同步頭以同步算法和信道估計。
本文采用定時同步與幀同步聯(lián)合設(shè)計算法,幀同步的作用是在數(shù)字信息流中定位有用信號的起始位置,常用滑動相關(guān)法;而定時同步則是對過采樣的信號點進行最佳抽樣,防止缺失或錯位。在同步的基礎(chǔ)上進行相位補償,步驟如圖5所示。
圖6 同步算法流程
當輸入數(shù)據(jù)同時滿足相關(guān)值和硬判決數(shù)目要求時,模塊跳出同步搜索狀態(tài)開始輸出相位補償后的信息。
仿真測試所用數(shù)據(jù)為實際信道中的數(shù)據(jù):由USRP發(fā)送和接收,并將經(jīng)過信道之后的數(shù)據(jù)儲存交與MATLAB仿真。設(shè)置比特速率為9600bps,同步頭的長度為63,數(shù)據(jù)包長度為96bit,滾降系數(shù)為0.35,M=16,r=3,N=64。
為了檢測同步模塊的捕獲性能,在發(fā)送端連續(xù)發(fā)送信號,由于多碼組合擴頻的擴頻倍數(shù)為N/k,96比特信源數(shù)據(jù)擴頻為1024比特,通過圖可知每相隔1024比特,出現(xiàn)一個很大的相關(guān)峰值即為同步點,表示幀同步正確。
圖7 幀同步滑動相關(guān)值
驗證相位補償算法,其中圖(a)為接收端USRP接收到的數(shù)據(jù),圖(b)為相位補償后的星座圖,由于此數(shù)據(jù)經(jīng)過成型濾波器,星座圖同時顯示了各個星座點間的跳轉(zhuǎn)路徑。
圖8 星座圖
硬件實驗基于Ubuntu 16.04 LTS操作系統(tǒng), GNU-Radio軟件版本為GRC 3.7.9, UHD版本為003.009.002,C++版本為5.3.1,其中RF子板載波為500MHz。
圖9和圖10顯示了系統(tǒng)平臺的GUI界面,用戶可根據(jù)圖形直觀的觀察擴頻前后的序列、對比收發(fā)比特信息、觀察發(fā)送信號波形等。
圖9 GUI界面
圖10 擴頻前后時頻圖的對比
測試擴頻性能時,選取長度為128 的PN碼作為擴頻序列。由上圖可看到擴頻前帶寬約為10kHz,擴頻后帶寬約為100kHz,同時信噪比,同時信號的功率在也下降了20dB,與多碼擴頻的理論分析相吻合。
結(jié)合多碼組合擴頻的原理,本文利用SDR搭建了系統(tǒng),既可以軟件仿真也能硬件實現(xiàn)。自定義模塊時多采用查表方案,不僅優(yōu)化了數(shù)據(jù)的實時處理效果,更提升模塊的拓展性。通過數(shù)據(jù)驗證、時頻圖分析和硬件調(diào)試充分論證了系統(tǒng)通信的可靠性。