王曉平



關鍵詞:HackRF;GNU Radio;無線通信;軟件無線電;數字調制
0 引言
在這個高消耗、快節奏的時代,無線通信技術的多樣化對無線通信設備通用性的要求很高,無線通信業務的發展面臨著許多難題與挑戰,快速高效且低成本的通信算法的開發和應用是很重要的一項研究內容。正是在這些需求的推動下,軟件無線電[1]技術應運而生。
軟件無線電技術[2]提升了無線設備的通用性,節約了通信系統的升級換代的成本,實現了大范圍寬帶頻譜資源的快速獲取,在許多通信領域都有著廣泛的應用。在信息安全領域[3],軟件無線電技術能實現對接入的設備的識別和接入用戶的具體身份,實現非法入侵和設備可靠性檢測,提取載波分析信號的頻率不同的地方作為特征,識別硬件的設備身份,不僅僅改善原有的安全驗證機制,也為網絡安全技術發展提供新方向。在頻譜檢測方面[4],軟件無線電技術可以結合機器學習進行無線頻譜檢測和頻譜識別,實現對無線電信號的檢測和信號方向的感知。
鑒于軟件無線電的優點,本文設計了基于HackRF 的無線通信平臺,介紹了 GNU Radio 編程開發平臺和 HackRF 的硬件平臺;在 HackRF 板卡上實現模擬和數字信號的調制解調和同步等數字信號處理技術的基礎上,進一步研究音頻、序列、視頻流的傳輸,實現了在軟件無線電平臺上的無線通信。
1 軟硬件平臺介紹
1.1 GNU Radio 軟件
GNU Radio[5]作為一個開源的軟件無線電編程開發平臺,起源于美國麻省理工學院,它為編程能力一般的軟件編制者提供了探索電磁波的機會,激發開發者利用射頻電波的能力,同時也提供給專業的無線電研究人員更多開發的可能。
GNU Radio 采用 Python 和 C++ 混合編程的方式來構建程序,C++ 用來實現一些底層的標準模塊庫以供 Python 調用。GNU Radio 實現了數字濾波器、傅里葉正反變化、快速傅里葉變換、信源信道編碼、調制解調等基本模塊,在軟件中通過流程圖就能搭建一個通信系統。除了引用其本身提供的庫,GNU Radio 也允許用戶編寫自己的處理模塊及運行程序。
1.2 Hack RF 開發板
HackRF 作為軟件無線電外設,通過 USB 接口與PC 端相連后與 GNU Radio 配合使用,HackRF 相對其他軟件無線電板卡,其接收帶寬[6]的射頻范圍更大,支持 1 MHz ~ 6 GHz 信號頻率的發射和接收,范圍涵蓋了廣播、電視、藍牙、衛星通信等。HackRF 硬件結構如圖1所示,板卡用于信號接收時,將天線采集到的射頻信號經下變頻變為中頻信號,再將中頻信號下變頻為基帶信號,經 A/D 采樣后將模擬信號轉為數字信號后通過 CPLD 和處理器將采樣信號處理和發送到 PC 端處理。HackRF 以半雙工通信形式[7]實現通信信號的發射與接收,其發射過程與接收過程類似。
2 系統原理概述
2.1 軟件無線電
軟件無線電構造了一個在多種情況下可以通用的硬件平臺,滿足將各種功能集成到一款板卡上的要求。同時為功能定制化提供了方便,以充分實現無線信號數字化為前提條件,提高了可編程性和可升級性。軟件無線電采用后端的處理單元對接收后的數據進行處理,同時使寬帶以及轉換器盡量靠近天線以便減少延遲,提高系統性能,實現標準化、模塊化、開放性。
理想的軟件無線電[6]接收過程按接收信號處理順序包括天線射頻接收、AD/DA 信號采樣數字化、將數據在DSP 或者普通 PC 機上進行處理。但理想結構采樣率高,并且要求的動態范圍大,多倍數的 AD/DA 轉換及高速的 DSP 芯片處理能力不夠,目前的硬件水平實現不了這樣的結構。因此大部分軟件無線電采用降頻帶通采樣結構,這種結構和超外差接收機類似,經過一系列處理的信號波形好,不會有很多干擾,雖然射頻部分需要比較復雜,但實現起來不算太難。
2.2 GMSK 調制與解調
高斯最小頻移鍵控調制技術(Gaussian MinimumShift Keying, GMSK) [8]的特點是在將二進制的數字向量流處理之前,將數據矢量送先通過一個高斯濾波器進行一個前期處理濾除溢出的信號能量,頻譜不再有毛刺。這樣處理之后,信號的相位圖在碼元變化時變為平滑過渡,信號頻率切換產生的不平穩能量就被減小了,主瓣之外的能量衰減快能量小,達到去除跳變能量的目的,在傳輸相同的數據速率的數據時,頻率通道間距可以變得更小,聯系更加緊密。
GNU Radio 中,調制的輸入是字節流(帶壓縮位的無符號字符),輸出是基帶上的復調制信號,而解調則相反。對于調制,第一步要將數據流變為 NRZ 碼,將數據包解包之后變為比特流以便進行進一步的處理;第二步是高斯濾波,由于 GMSK 調制信號的相位變化是連續的,高斯濾波使其進入下一個碼元周期的時刻相位不發生變化,從其頻譜特性觀察出發,使其頻譜特性的旁瓣降落緩慢,從而在頻帶外產生多余的頻譜泄漏;第三步就是調制,GMSK 調制具有較好的波形和頻譜特征,頻帶相對來說很窄,可以采用相干解調來實現數據提取。進行解調時,首先通過一個正交調頻解調模塊,通過計算相鄰碼元周期變化的相位差,獲得頻率變化信息;緊接著通過 M&M 算法,使符號同步,時鐘恢復塊跟蹤符號時鐘并根據需要重新采樣,該塊的輸出是軟符號流,最后進行二元判決。
2.3 符號同步
GNU Radio 采用了改進的 M&M 算法來實現符號同步。M&M 同步算法實現過程如圖2所示:
在一個需要實現解調的數字通信系統中,為了恢復出原始數據序列,要實現兩個因素:一方面是要消除符號間的串擾;另一方面是要實現精確采樣。因此解調器的輸出必須以碼元速率周期性地在采樣時刻采樣。M&M算法的關鍵點在于要對采樣時刻進行準確調整,通過采樣輸出和判決輸出來實現調整,對采樣和判決輸出數據進行線性組合,利用這個線性組合來指示同步誤差的大小,這個線性組合的值同時也要反饋給采樣器,用于調整采樣時鐘,從而達到逐漸消除采樣誤差的目的。
3 無線通信平臺設計
3.1 FM 收發
基于 HackRF 搭建了一個 FM 無線收發系統,信源選取了實時錄制的語音信號進行廣播,經過重采樣和WBFM 調制將信號發射出去。由于 HackRF 為半雙工通信,實驗使用兩塊板卡,分別用于發射和接收,實驗發送端和接收端流程設計如圖3所示。軟件模塊包括,軟件模塊包括 osmocom Sink、QT Gui Time Sink、Rational Resampler、WBFM Transmit、WBFM Receive 和 Audio Source 等模塊,其中,osmocom Sink 用于與HackRF 進行通信,Rational Resampler 用于平滑波形和調整采樣率。
實驗結果如圖4和圖5所示,在 160Mhz 能夠明顯看到信號頻譜并且清晰聽到廣播。根據調制輸出的波形的變化,可以判斷語音信號是否輸入。當沒有聲音時,信號源波形平坦,是一條幅度為0的直線,當聲音來臨,可以觀察到信號波形起伏、頻率發生變化。
3.2 調制解調
GNU Radio支持多種數字調制方式,仿真實驗分別編寫了 GMSK、8PSK、16QAM 調制解調的信號傳輸通道,實驗發送隨機序列,通過更換調制模塊實現不同方式的調制。圖6給出了 QAM 調制的原理框圖,信源采用了 Vector Source 來輸入隨機序列,然后使用Packet Encoder 進行同步并加入前導碼、接入碼和糾錯碼,將打包的信息塊解包變為非歸零碼方便判決;接收端判決解調出原始序列,并且進行解碼和糾錯,使用 QT GUI 有關模塊畫圖。
圖7為 GMSK 隨機序列收發的星座圖和解調波形圖,可以很清楚地看到,隨機序列成功被發射和接收,星座圖四個象限清楚地分布著星座點,GMSK 收發前后波形相同,即解調后接收端接收的數據恢復出了發送序列。
3.3 視頻流傳輸
在本實驗中,使用了 TCP 協議,通過 socket 來實現 TCP 協議。TCP 面向連接,進行點對點傳輸,將數據應該如何封裝、定址、傳輸、路由以及在目的地如何接收,都加以標準化,具有四個層級,實現不同的功能。使用了 OpenCV來操作攝像頭讀取圖像傳輸圖像資源,OpenCV 是一個計算機視覺庫,支持多種語言,Java、python、matlab,由 C++ 編寫,實現了很多圖像處理和計算機視覺的算法。
為了實現視頻流傳輸,利用 TCP 協議將數據傳入 GNU Radio 處理,再傳到 HackRF 板卡進行處理并發送。采用 OpenCV 來調用攝像頭、讀取顯示視頻,再通過 TCP 協議將其發送出去,經過實際驗證,經過處理后的視頻流數據可以相應地顯示出來。圖8給出了視頻流傳輸程序流程圖和視頻傳輸實驗結果圖。
4 結束語
本文使用 GNU Radio 軟件和 HackRF 硬件搭建了一個無線通信平臺,實現了 FM 捕捉和通過模塊播放音頻信號、隨機序列的調制解調和視頻流的傳輸,從而實現了基于軟件無線電平臺的無線通信。
GNU Radio 的模塊化和 HackRF 板卡的低成本特性,使得二者構成的通信系統具有較高的開發前景。隨著軟件無線電技術研究的加深,HackRF 將在通信領域發揮更大的用處。