譚平 撒衛(wèi)平 劉冠群 劉軍華
【摘要】GNU Radio是一個開源的無線電信號處理平臺,可以與配套硬件實現(xiàn)各種無線電通信實驗內容。本文針對現(xiàn)有通信原理實驗教學內容單一、創(chuàng)新性不夠的情況,將GNU Radio引入到通信原理實驗教學中,使實驗內容與日常生活緊密相連,提高學生對通信原理實驗課程的興趣,加深學生對抽象知識的理解,達到良好的教學效果。
【關鍵詞】無線電信號;通信原理;GNU Radio
一、引言
在電子信息工程、通信工程等專業(yè)中,《通信原理》是一門非常重要的主干課程。但是通信原理涉及的內容很多,概念非常抽象,而且里面使用的數(shù)學公式多、公式復雜,是一門教學難度很大的課程。現(xiàn)有的教學手段,主要利用通信原理實驗,輔助學生對書本上抽象的概念和原理有進一步的感性認識,加深他們對基本原理的理解。但是通信原理實驗設備昂貴,實驗內容固定,實驗過程千篇一律。此外,有些實驗與實際生活聯(lián)系不夠緊密,對學生的吸引力不夠。而采用開源的GNU Radio無線電信號處理平臺,可以將通信原理實驗內容深入生活,不僅可以加深學生們對抽象知識的理解,而且提高學生對通信原理這門課程的興趣,達到非常好的教學效果。
二、GNU Radio簡介
GNU Radio是一個開源的、以通用軟件無線電硬件平臺為依托的無線電信號處理平臺。它可以通過軟件編程實現(xiàn)無線電通信的各種功能。得益于其源代碼開放和配套硬件外設價格低廉的特點,GNU Radio給普通的軟件編程者提供了探索無線電波的機會,激發(fā)他們的聰明才智,探索無線通信的各種技術。GNU Radio在無線電開發(fā)社區(qū)和教育機構得到了廣泛的應用。
GNU Radio的軟件架構如圖1所示。GNU Radio是在Linux操作系統(tǒng)上開發(fā)的,一般運行在Linux系統(tǒng)上,也有移植到Windows等其他操作系統(tǒng)的版本。它的開發(fā)語言包括C++和Python,其中C++主要用于開發(fā)底層的數(shù)字信號處理模塊,而Python則用于連接各功能子模塊,以及上層應用代碼。GNU Radio提供了常用的信號處理模塊庫以及圖形化的編輯和仿真界面,可用于通信原理仿真,也可以連接到各種軟件無線電硬件設備實現(xiàn)實際通信系統(tǒng)的通信,這些硬件設備包括USRP、RTL-SDR、HACKRF等。GNU Radio非常適合通信原理初學者做通信原理實驗。
三、GNU Radio各模塊與通信原理教學內容的對應關系
GNU Radio的信號處理模塊包括信號源、信號處理模塊以及一些常用的文件處理、網絡通信模塊和硬件平臺處理模塊。這里重點介紹與通信原理相關的一些模塊。通信原理教學內容主要包括信源編碼與譯碼、信道、調制解調、差錯控制、同步、新型數(shù)字調制解調等。這些內容在GNU Radio中大部分都有對應的信號處理模塊,即便沒有相應的模塊,也非常容易利用其它模塊搭建出所需要的功能。表1中給出了通信原理教學內容與GNU Radio相關模塊的對應關系。利用這些模塊,就可以通過Python編程或采用GNU Radio的圖形化軟件仿真實現(xiàn)通信原理基本實驗內容。
四、GNU Radio在通信原理教學中的應用舉例
GNU Radio的圖形化仿真軟件名稱是GNU Radio Companion (GRC),可以通過拖曳各種圖形化的信號處理模塊來實現(xiàn)通信系統(tǒng)的設計。這里簡單介紹兩個典型的通信仿真實驗,方便大家理解如何使用GRC。
4.1 ASK數(shù)字調制與解調舉例
ASK、PSK和FSK是經典的數(shù)字調制方式,使用GRC非常容易就能實現(xiàn)數(shù)字調制與解調。如果有相應的SDR硬件平臺,可以很快的配置出數(shù)字調制解調的收發(fā)系統(tǒng)。如果沒有SDR硬件平臺,也可以直接用音頻接口實現(xiàn)數(shù)字調制解調。
圖2是ASK的調制解調的GRC仿真框圖。該圖中有兩個信號源,一個是ASK的載波信號Signal Source,信號的采樣頻率是32kHz,這是設置輸出1kHz的余弦信號;另一個是Random Source產生隨機的0、1數(shù)字信號。為了保證數(shù)字信號的碼率低于載波信號頻率,這里采用了Repeat模塊降低數(shù)字信源的碼率。這里的頻率和幅度都可以雙擊模塊框,通過對話框修改設置。類型轉化模塊Char to Float是為了與后面的數(shù)字信號模塊的數(shù)據(jù)類型一致,將字節(jié)類型轉化為浮點類型。數(shù)字信源和載波信號通過Multiply乘法器實現(xiàn)ASK調制。調制之后的信號可以通過GRC的信宿模塊顯示結果。這里將輸出信號連接到虛擬示波器Scope Sink和虛擬頻譜儀FFT Sink這兩個信宿模塊,可以分別查看ASK調制波形和ASK的頻譜,如圖3所示。圖3上部分是示波器波形,其中紅色部分是數(shù)字基帶信號,藍色是ASK調制信號。圖3下面部分是頻譜分析,其中綠色線表示峰值頻譜,藍色線表示實時頻譜??梢钥吹紸SK主要頻率是在載波的頻率1kHz附近。
ASK的解調是從調制信號中解調出信源信息。按照包絡檢波方法,只需要對ASK進行全波整流,再經過低通濾波和采樣判別,即可恢復信源信息,因此解碼模塊中用到了取絕對值的模塊Abs、低通濾波器模塊Low Filter和閾值判斷模塊Threshold。完整的ASK調制與解調仿真如圖4所示。
4.2 FM調頻語音收發(fā)實驗舉例
FM調頻語音的收發(fā)實驗除了需要用到GNU Radio平臺外,還需要用到配套的硬件設備。這里選擇無線麥克風作為FM調頻的發(fā)送端,而廉價的數(shù)字電視接收棒RTL-SDR作為無線電接收端。本實驗也可選擇兩塊USRP硬件板分別作為收發(fā)器實現(xiàn)語音收發(fā)實驗。
實驗的原理圖如圖5所示。無線麥克風采集聲音后調頻至92MHz發(fā)射出去,而RTL-SDR則通過GRC被設置在調頻92MHz處,并下變頻到2MHz。RTL-SDR內部包含高速ADC,其采樣的數(shù)據(jù)通過USB傳輸?shù)紾NU Radio的圖形仿真軟件GRC中。這個過程由GRC調用信源模塊RTL-SDR Source實現(xiàn)。RTL-SDR接收的數(shù)據(jù)通過低通濾波和重采樣后變成44.1kHz的音頻數(shù)據(jù),并通過信宿模塊Audio Sink從電腦的音頻接口輸出。這樣就實現(xiàn)了語音的無線收發(fā)實驗。圖6給出了GRC的各模塊連接圖和參數(shù)設置。
五、結論
本文對GNU Radio做了簡單介紹,并將GNU Radio應用到《通信原理》課程的實驗教學中。由于GNU Radio有豐富的信號處理模塊,可以設計各種驗證通信原理的仿真實驗,而且可以跟實際生活中的廣播、電視、GPS定位以及移動通信等場景緊密結合。大大地提高了學生對通信原理學習的熱情和興趣,達到了非常好的實驗教學效果。
參考文獻
[1] GNU Radio Home Page. https://www.gnuradio.org/
[2] 金偉正,趙小月,肖云等. 基于GNU Radio的頻譜分析儀設計[J].實驗室研究與探索, 2019, 38(01): 86-90.
[3] 蔣相. 基于GNU Radio和USRP X310的多帶Chirp信號檢測[J].電子科學技術, 2016, 03(03): 243-248.
[4] 林廣榮,林新榮,高時漢等. 基于GNU Radio的窄帶衛(wèi)星收發(fā)信機研究與實現(xiàn)[J].移動通信, 2016, 40(08): 70-74.