王剛 吳健健
摘要:隨著無線通信技術(shù)的高速發(fā)展,需要對(duì)大量的信號(hào)及數(shù)據(jù)進(jìn)行高效、快速、可操作性更高并且相對(duì)低成本的處理,這便對(duì)無線通信系統(tǒng)提出了更高的要求。Gnuradio是一種免費(fèi)的開源軟件無線電開發(fā)平臺(tái)工具,在其圖形化操作界面中集成了豐富的信號(hào)源與信號(hào)處理模塊,通過功能強(qiáng)大的信號(hào)處理模塊可以在PC端對(duì)無線通信中發(fā)送與接收端的信號(hào)進(jìn)行編解碼、調(diào)制與解調(diào),時(shí)域和頻域同步等處理。以Hackrf作為硬件平臺(tái),通過搭建GRC流圖在射頻段與PC端對(duì)信號(hào)及數(shù)據(jù)進(jìn)行處理并發(fā)送與接收,實(shí)現(xiàn)了基于軟件無線電平臺(tái)的無線通信收發(fā)系統(tǒng)。
關(guān)鍵詞:軟件無線電;調(diào)制與解調(diào);Gnuradio;Hackrf
中圖分類號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2016)05-0034-03
Abstract:With the rapid development of wireless communication technology, a large number of signals and data shall be processed effectively, fast,convenient in a relatively low cost everyday. It proposes higher requirements for the wireless communication system. Gnuradio is a free and open-source software development platform, and rich signal sources and signal processing modules are integrated in the graphics of user interface. When transmitting and receiving, the signal encoding and decoding, modulation and demodulation, time domain and frequency domain synchronization will be accomplished in PC by the powerful signal processing modules. In this paper, Hackrf is used as the hardware platform to transmit and receive signals, and the signal and data will be processed in GRC flow chart in PC, and the wireless communication system based on the software radio platform is realized.
Key words: software defined radio; modulation and demodulation; Gnuradio; Hackrf
1 引言
軟件無線電(Software Defined Radio,SDR)[1,2]是一種多頻段無線電廣播通信技術(shù),它具有寬帶天線、用于收發(fā)信號(hào)的射頻前端、AD/DA轉(zhuǎn)換,并且支持多個(gè)空中接口及協(xié)議,其無線通信協(xié)議是基于軟件定義的而非通過硬連線實(shí)現(xiàn)。換言之,所使用的中心頻率、空中接口協(xié)議和功能由于其開源特性,可通過手動(dòng)更改、軟件下載和更新來升級(jí),并不需要完全更換硬件,這使得通信過程達(dá)到了靈活高效,低成本的效果。
廣義上的軟件無線電的結(jié)構(gòu)分為三類。
(1)低通采樣軟件無線電結(jié)構(gòu)。其在AD轉(zhuǎn)換之前添加了低通濾波器,這使得對(duì)AD采樣速率的要求降低。軟件無線電的工作頻率決定了低通濾波器的采樣頻率,根據(jù)奈奎斯特采樣定理,其采樣頻率[fs]需滿足:
[fs≥r+fmax] (1)
其中r為低通濾波器的矩形系數(shù),[fmax]為所要求的工作頻率最大值。根據(jù)(1)式可知為了使得AD采樣頻率在合適的范圍內(nèi),[fs]與[fmax]的取值不能太高,這就使低通采樣軟件無線電的適應(yīng)范圍大大縮小了。
(2)寬帶中頻帶通采樣軟件無線電結(jié)構(gòu)。對(duì)于工作頻段較高的情形(大于2GHz)則可以采用此種結(jié)構(gòu)。該結(jié)構(gòu)采用了多次混頻的方式,將在工作頻段上感興趣的信號(hào)放大、混頻后經(jīng)過濾波而得到統(tǒng)一的中頻頻段上,在進(jìn)行AD轉(zhuǎn)換和采樣,存在于軟件無線電外設(shè)中的FPGA對(duì)信號(hào)做數(shù)字下變頻、數(shù)字濾波等操作。這種結(jié)構(gòu)的優(yōu)點(diǎn)在于中頻帶寬較寬,所以可處理的信號(hào)范圍更大,在現(xiàn)有的軟件無線電結(jié)構(gòu)中的實(shí)際應(yīng)用也最為廣泛。
(3)射頻帶通采樣軟件無線電結(jié)構(gòu)。與其他結(jié)構(gòu)不同,此類結(jié)構(gòu)添加了寬帶跟蹤濾波器用于選擇處于其工作頻段內(nèi)感興趣的信號(hào)并對(duì)其進(jìn)行接收處理,在放大之后進(jìn)行AD轉(zhuǎn)換作數(shù)字化采樣。該結(jié)構(gòu)的優(yōu)點(diǎn)在于在器件的作用下不需要對(duì)接收端信號(hào)做變頻處理,在模擬處理時(shí)即可完成對(duì)射頻信號(hào)沒有混疊的數(shù)字化處理,但由于對(duì)硬件的處理能力要求很高,所以在實(shí)際應(yīng)用中較少使用。
2 軟硬件平臺(tái)
2.1 軟件平臺(tái)部分
Gnuradio是一個(gè)開源的軟件程序[3,4],它最小程度的結(jié)合硬件,通信過程中的無線電波發(fā)射和接受的方式均由軟件來定義,達(dá)到搭建無線電通信系統(tǒng)的目的。Gnuradio是基于Linux操作系統(tǒng)的,采用C++與Python腳本語言進(jìn)行編程。利用C++的高執(zhí)行效率編寫各種信號(hào)處理模塊,使用Python編寫連接各個(gè)模塊實(shí)現(xiàn)完整流程的腳本。Gnuradio與所選用的通用硬件存在依賴的關(guān)系,所選用的設(shè)備是USRP、Hackrf等,需要選用不同版本的Gnuradio和與之匹配的安裝依賴包。Gnuradio安裝完成后在終端輸入命令行sudo gnuradio-companion打開,其圖形化界面如圖1所示。
Gnuradio的軟件結(jié)構(gòu)頂層是面向用戶的模塊及其“粘合劑”流圖。可以使用Gnuradio中所含的豐富的模塊,也可以用C++自己編譯開發(fā)[5],而后再使用Python腳本語言將各個(gè)模塊逐個(gè)相連。上圖展示的Gnuradio圖形化界面中左邊空白部分為框圖搭建操作空間,右邊部分為系統(tǒng)自帶的模塊庫,通過搭建流圖的方式并運(yùn)行后生成后綴為.grc流圖文件以及后綴為.py的Python文件。
2.2 硬件平臺(tái)部分
Hackrf是軟件無線電外部設(shè)備,支持Gnuradio并可與之配合使用。Hackrf通過USB接口與PC端相連,主要作用為信號(hào)的發(fā)射與接收,并對(duì)信號(hào)進(jìn)行放大,濾波,混頻,采樣等處理,其硬件架構(gòu)框圖如圖2所示。
以接收端為例,在信號(hào)由射頻段進(jìn)入天線后的處理流程為:
1)由射頻開關(guān)決定是否經(jīng)由14dB的放大器進(jìn)行放大;
2)經(jīng)過鏡像抑制濾波器對(duì)信號(hào)進(jìn)行高通或低通濾波;
3)信號(hào)進(jìn)行RFFC5072芯片混頻到2.6GHz固定中頻(中頻范圍為2.15GHz - 2.75GHz);
4)信號(hào)送入MAX2837芯片混頻到基帶,輸出差分IQ信號(hào)(期間MAX2837芯片可以對(duì)信號(hào)進(jìn)行帶寬限制);
5)MAX5864芯片對(duì)基帶信號(hào)進(jìn)行數(shù)字化后送入CPLD和單片機(jī)TODO FIXME;
6)CPLD;
7)LPC4320/4330處理器將采樣數(shù)據(jù)通過USB接口送至計(jì)算機(jī)內(nèi)、
3 在仿真平臺(tái)上的實(shí)現(xiàn)及結(jié)果分析
Gnuradio支持多種數(shù)字調(diào)制方式,在此次通過實(shí)際無線信道[6]的仿真中采用頻移鍵控(Frequency Shift Key,F(xiàn)SK)[7]的調(diào)制方式來發(fā)送自定義的文本文件。設(shè)計(jì)的仿真方案步驟如下:
1)在發(fā)射端將需要發(fā)送的文本文件通過Python程序封裝成幀;
2)通過搭建GRC流圖,將分裝成幀的文本文件以FSK調(diào)制與解調(diào)[8]方式發(fā)送與接收,實(shí)現(xiàn)文件通過實(shí)際無線信道的傳輸;
3)將接收并解調(diào)的數(shù)據(jù)以文本形式保存,再進(jìn)行采樣處理以還原為發(fā)送前的文本文件,最終實(shí)現(xiàn)文本文件通過無線信道的發(fā)送與接收。
3.1 發(fā)射端仿真設(shè)計(jì)
(1)首先在要發(fā)送的文本中寫入測(cè)試內(nèi)容“Hello World!Xiaoming”,將文件命名為“send.txt”并保存。
(2)利用Python程序data_send.py將send.txt封裝成數(shù)據(jù)幀。為了后續(xù)的幀同步,于是在幀頭加入了同步序列[1,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0],并將幀頭和數(shù)據(jù)幀寫入code.txt文件中。計(jì)算要發(fā)送的文本文件大小,此處設(shè)計(jì)大小最多為256字節(jié)(通過修改Python程序可以實(shí)現(xiàn)更多字節(jié)文件的傳輸),本次實(shí)驗(yàn)中為20字節(jié)。
(3)寫入結(jié)束標(biāo)志。確定數(shù)據(jù)長度后,由于數(shù)據(jù)幀會(huì)被循環(huán)發(fā)送,所以結(jié)束標(biāo)志并不是判斷數(shù)據(jù)段的結(jié)束,而是為了避免產(chǎn)生相同的同步序列。
(4)搭建FSK調(diào)制的GRC流圖,通過Hackrf發(fā)送,發(fā)射端的GRC流圖設(shè)計(jì)方案如圖4所示:
流圖中對(duì)于發(fā)送數(shù)據(jù)的處理為:
1)將接收的0,1序列做數(shù)據(jù)類型轉(zhuǎn)換方便后續(xù)運(yùn)算
2)通過運(yùn)算,插值等操作把讀取的0,1序列用雙極性方波表示,即從Vector wave變?yōu)锽ipolar wave,這樣做是為了方便抽樣判決
3)信號(hào)經(jīng)過Fractional Interpolator模塊改變?cè)胁ㄐ?,使原波形更容易加載到載波上
4)將改變后的波形通過WBFM Transmit完成調(diào)制,在通過Rational Resampler進(jìn)行重采樣,可使波形更光滑,最后將信號(hào)發(fā)送出去,中心頻率設(shè)置為100MHz
3.2 接收端仿真設(shè)計(jì)
1)將通過Hackrf接收到的信號(hào)解調(diào)并保存為“receive.txt”,打開文本可以看見全為1,0,-1組成的序列。
2)讀取“receive.txt”,將數(shù)據(jù)加載到數(shù)組中以便后續(xù)處理。
3)抽樣判決。利用雙極性方波的特點(diǎn),通過數(shù)據(jù)跳變確定采樣時(shí)刻。
4)確定同步序列。通過與發(fā)送端的同步序列對(duì)比找到文件中與之相吻合的同步序列,確定幀的起始點(diǎn)。
5)確定數(shù)據(jù)包長度,并以此長度讀取數(shù)據(jù)部分,將讀取的數(shù)據(jù)還原為字符串形式保存到文本中,命名為“decode.txt”。
6)在終端運(yùn)行“./data_read.py”,通過Python程序?qū)ⅰ癲ecode.txt”解碼,將解碼后的文件與發(fā)送端比較。接收端的GRC流圖如圖6所示。
流圖中對(duì)于接收數(shù)據(jù)的處理為:
1)接收端通過調(diào)節(jié)增益RF Gain,IF Gain,BB Gain使得接收波形誤差達(dá)到最??;
2)信號(hào)數(shù)據(jù)通過Rational Resampler模塊進(jìn)行重采樣,與發(fā)送端相對(duì)應(yīng),使發(fā)送端與接收端速率相同;
3)信號(hào)數(shù)據(jù)通過低通濾波器濾除高頻部分,是波形平坦便于后續(xù)的抽樣判決;
4)對(duì)數(shù)據(jù)進(jìn)行量化判決并保存。
4 結(jié)論與展望
通過比較發(fā)送端的原文件與解碼后的文件發(fā)現(xiàn)二者完全吻合,即接收端接收的數(shù)據(jù)經(jīng)過解調(diào)解碼完整恢復(fù)了發(fā)送文本,在收發(fā)端的數(shù)據(jù)處理的流程主要包括幀結(jié)構(gòu),同步訓(xùn)練序列,調(diào)制與解調(diào)原理,實(shí)現(xiàn)了基于Gnuradio與Hackrf平臺(tái)的無線通信收發(fā)系統(tǒng)。
本文提出了將軟件無線電平臺(tái)Gnuradio與硬件外設(shè)Hackrf組成的系統(tǒng)實(shí)現(xiàn)信號(hào)通過實(shí)際無線信道的收發(fā),具有極大的靈活性,同時(shí)由于Gnuradio的開放性與低成本等特點(diǎn),人們可以自由對(duì)其進(jìn)行修改和開發(fā),隨著對(duì)軟件無線電研究的加深,未來可以實(shí)現(xiàn)圖片甚至視頻的傳輸。
參考文獻(xiàn):
[1] 楊小牛,樓才義,徐建良. 軟件無線電原理與應(yīng)用[M]. 北京:電子工業(yè)出版社, 2001.
[2] 楊小牛.從軟件無線電到認(rèn)知無線電,走向終極無線電--無線通信發(fā)展展望[J].中國電子科學(xué)研究院學(xué)報(bào), 2008.
[3] Joseph Mitola,Maquire G Q Jr.Cognitive Radio:Making Software Radios More Personal[J]. IEEE Personal Communications, 1999, 6(4):13-18.
[4] Joseph Mitola.Cognitive Radio — An Integrated Agent Architecture for Software Defined Radio[D].Royal Inst.Technol.(KTH), Stockholm, Sweden,2000.
[5] 曹瀚文,王文博. GNU Radio:開放的軟件無線電平臺(tái)[J]. 電信快報(bào),2007(4):31-34.
[6] Haykin S.Cognitive Radio:Brain-Empowered Wireless Communications[J].IEEE Journal on Selected Areas in Communications, 2005,23(2): 201-220.
[7] 樊昌信, 曹麗娜. 通信原理[M].北京: 國防工業(yè)出版社,2012.
[8] 郝建華.GMSK 調(diào)制解調(diào)數(shù)字實(shí)現(xiàn)方法[J].裝備指揮技術(shù)學(xué)院學(xué)報(bào), 2002(12).