GNU Radio:開放的軟件無線電平臺
1、軟件無線電技術發(fā)展現(xiàn)狀
J.Mitla在1992年首次提出了軟件無線電的概念,此后該技術一直受到業(yè)界的廣泛關注和研究。與傳統(tǒng)的無線電設備相比較,在軟件無線電中,諸如信號發(fā)生、調制/ 解調、信道編譯碼等信號處理過程以及協(xié)議棧皆由軟件實現(xiàn),而不是固定電路,因此軟件無線電設備更易于重新配置,從而可靈活地進行多制式切換并適應技術的發(fā)展演進。廣義上的軟件無線電分為三類。a)將多種不同制式的設備集成在一起, 例如現(xiàn)在市場上的GSM-CDMA雙模手機。顯然,這種方式只能在預置的幾種制式下切換,要增加對新的制式的支持則意味著集成更多的電路,重配置能力十分有限。b)基于現(xiàn)場可編程門陣列(FPGA) 和數(shù)字信號處理器(DSP),這類可編程硬件,重配置的能力得到了很大提高。但是用于FPGA的VHDL、Verilog等語言以及418 的匯編語言都是針對特定廠商的產品,使得這種方式下的軟件過分依賴于具體的硬件,可移植性較差。此外,對廣大技術人員來說,F(xiàn)PGA和DSP開發(fā)的門檻依然較高,開發(fā)過程也相對比較繁瑣。c)針對以上兩類缺陷,第三類軟件無線電設備采用通用硬件(例如:商用服務器、普通PC以及嵌入式系統(tǒng))作為信號處理軟件的平臺,具有以下幾方面的優(yōu)勢:純軟件的信號處理具有很大的靈活性;可采用通用的高級語言(如C/C++)進行軟件開發(fā),擴展性和可移植性強,開發(fā)周期短;基于通用硬件的平臺,成本較低,并可享受計算機技術進步帶來的各種優(yōu)勢(如:CPU處理能力的不斷提高以及軟件技術的進步等)。
盡管基于通用硬件平臺的軟件無線電具有諸多優(yōu)點,但是目前通用硬件平臺在處理速度效率、體積和功耗以及實時性方面仍然比不上FPGA和DSP這樣的專用硬件。所以現(xiàn)在第二類軟件無線電仍然是主流,但由于微電子技術和計算機技術的快速發(fā)展,軟件無線電將越來越青睞于通用的硬件平臺。
2、GNU Radio概述
GNU Radio是由Eric Blossom發(fā)起的、完全開放的軟件無線電項目,旨在鼓勵全球技術人員在這一領域協(xié)作與創(chuàng)新,目前已經具有一定的影響力。GNU(GNU’s Not Unix)本身是一個推進軟件開放源代碼的著名項目, 由FSF(Free Softwaer Foundation)支持,目前廣泛使用的GNU/Linux操作系統(tǒng)則是來源于此。GNU Radio主要基于Linux操作系統(tǒng),也可以移植到其他操作系統(tǒng)上,采用C++結合Python腳本語言進行編程,其代碼完全開放,用戶可以在其網站-R.上下載和參與更新維護其代碼。利用GNU Radio提供的一套軟件,再加上一臺普通PC機和廉價的硬件前端即可開發(fā)各種軟件無線電應用。硬件前端可以是一套專用的射頻前端或者AD/DA卡,甚至是一塊普通的聲卡。Matt Ettus為GNU Radio設計了一套射頻前端USRP(Universal Software Radio Peripheral),可在0GHz~2.9GHz載頻上提供最高可達16Mhz帶寬的信號收/發(fā)能力。
除了具有第三類軟件無線電系統(tǒng)的優(yōu)點外,GNU Radio和USRP還具有如下優(yōu)勢:
a)成本較低。軟件免費,USRP的價格大約與一臺普通PC相當,帶寬可滿足目前多數(shù)音視頻廣播和無線通信制式的要求,支持雙工和多天線應用。
b)技術門檻較低,具有一定編程經驗和Linux使用經驗的用戶可在較短時間內掌握其配置、使用和開發(fā)。
c)獲得來自全世界眾多GNURadio擁護者以及Eric Blossom 和Matt Ettus本人的技術支持。
3、GNU Radio的軟件結構
GNU Radio的編程基于Python腳本語言和CH 的混合方式。C++由于具有較高的執(zhí)行效率,被用于編寫各種信號處理模塊,如:濾波器、FFT變換、調制/解調器、信道編譯碼模塊等,GNU Radio中稱這種模塊為block。Python是一種新型的腳本語言,具有無須編譯、語法簡單以及完全面向對象的特點,因此被用來編寫連接各個block成為完整的信號處理流程的腳本,GNU Radio中稱其為graph。
GNU Radio的軟件結構頂層是面向用戶的block及其“粘合劑”—— aph。用戶除了能夠開發(fā)自己的block之外,還可使用GNU Radio所包含的豐富的block,包括各種濾波器、FFT變換、調制/解調模塊、時頻同步模塊等等,其中一些利用了CPU的增強指令集(如:MMX、SSE、3D Now!)進行了優(yōu)化,以提高性能。
在用戶用block和graph構造的應用程序下面是GNU Radio的運行支持環(huán)境,主要包括緩存管理、線程調度以及硬件驅動。GNU Radio中巧妙地設計了一套零拷貝循環(huán)緩存機制,保證數(shù)據在block之間高效的流動。多線程調度主要用于對信號處理流程進行控制以及各種圖形顯示,GNU Radio對此也提供了支持。GNU Radio的硬件驅動包括USRP、AD卡、聲卡等等,用戶也可根據需求進行擴充。
GNU Radio除了支持Linux的多種發(fā)行版本之外,還被移植到Mac OS X、NetBSD以及Windows等操作系統(tǒng)上,這也意味著它也支持多種類型的計算機系統(tǒng)。
4、USRP射頻前端
USRP是GNU Radio最重要的硬件“伙伴”。與GNU Radio軟件相同,USRP也是完全開放的,其所有的電路圖、設計文檔和FPGA代碼均可從EttusResearch的網站下載?;贕1、radio和USRP的組合,用戶可以構建各種具有想象力的軟件無線電應用。
一套USRP由一快主板(Motherboard)和最多四塊子板(Daughter Board)搭配構成。主板的主要功能為中頻采樣以及中頻信號到基帶信號之間的互相轉換。子卡的功能在于射頻信號的接收/發(fā)送以及到中頻的轉換。子卡有多種類型,分別覆蓋不同的射頻頻譜范圍,且具有不同的收/發(fā)能力和增益。
4.1 USRP主板
主板主要由以下幾個部分構成:
1)AD/DA芯片
USRP采用兩塊Analog Device的AD9862芯片,每塊可分別提供兩路12bit、64MSample/s的AD變換和兩路14bit、128MSample/s的DA變換。那么一塊主板可提供4路模擬轉換器(ADC)和4路的數(shù)字模擬信號轉換器(DAC),也即收/發(fā)各兩路的復采樣。此外DAC單元還集成了數(shù)字上變頻(DUC)功能。
2)FPGA
FPGA有兩個主要功能:將DAC采來的中頻信號進行數(shù)字下變頻(DDC),變換到基帶,并通過層疊梳狀濾波器(of)對樣值進行可變速率的抽取以符合用戶對信號帶寬的要求。FPGA中同時也實現(xiàn)了針對DAC的插值率波的功能;另一個功能是作為路由器協(xié)調適配各路ADC、DAC和USB 2.0接口之間的數(shù)據交換。
3)USB 2.0接口
USRP采用USB 2.0接口與PC機連接。最高可達到32MByte/s的數(shù)據傳輸速率。如果AD和DA分別采用12bit和14bit的采樣精度,那么每個實采樣點占用2Bytes,每個復采樣點占用4Bytes。如果以一路復數(shù)采樣進行單收或單發(fā),則最高可達到32M/4=8M 復采樣每秒,即最高發(fā)送或接收8MHz帶寬的信號。如果用8bit采樣,則最高可收/發(fā)16MHz帶寬的信號。ADC和DAC始終分別以64M和128M 的速率進行采樣,用戶實際獲得的采樣速率是通過設置抽值率或插值率得到的。
4.2 USRP子卡
USRP的子卡有如下幾種:
USRP是GNU Radio最重要的硬件“伙伴”。與 1)Basic TX、Basic RX:這兩種子卡沒有中頻與射頻間的頻譜變換,僅僅提供主板上中頻信號與天線間的接口。盡管如此,由于ADC和DAC可進行帶通采樣,仍然可支持2MHz~200MHz的載頻。
2)TVRX:可覆蓋50MHz一800MHz廣播電視頻段的接收子卡。
3)DBSRX:可覆蓋800MHz~2.4GHz的接受子卡。
4)RFX400、RFX900、RFX1200、RFX1800、
RFX2400:這些子卡均為支持雙工,可分別覆蓋400Ⅻ z 500 、800 忸z一1000 m z、1150 m z一1450MHz、1.5MHz一2.1MHz、2.3MHz一2.9MHz頻段。
c++相關文章:c++教程
路由器相關文章:路由器工作原理
路由器相關文章:路由器工作原理
低通濾波器相關文章:低通濾波器原理
評論