【文章內(nèi)容簡介】
如 GSMCDMA 雙模手機。這方式只能在預置的幾種制式下切換,要增加對新的制式的支持則意味著集成更多的電路,重配置能力十分有限。 (2)基于現(xiàn)場可編程門陣列(FPGA)和數(shù)字信號處理器(DSP),這類可編程硬件,重配置的能力得到了很大提高。但是用于 FPGA 的 VERILOG、VHDL 等語言以及DSP 的匯編語言都是針對特定廠商的產(chǎn)品,使得這種方式下的軟件過分依賴于具體的硬件,可移植性較差。此外,對廣大技術人員來說, FPGA 和 DSP 開發(fā)的門檻依然較高,開發(fā)過程也相對比較繁瑣。 (3)第三類軟件無線電設備采用通用硬件(例如:商用服務器、普通 PC 以及嵌入式系統(tǒng))作為信號處理軟件的平臺,具有以下幾方面的優(yōu)勢: 純軟件的信號處理具有很大的靈活性; 可采用通用的高級語言(如 C/C++)進行軟件開發(fā),擴展性和可移植性強,開發(fā)周期短;基于通用硬件的平臺,成本較低,并可享受計算機技術進步帶來的各種優(yōu)勢[13]。 GNURadio 是一個開源的可以構建軟件無線電平臺的軟件包。它是由 Eric Blossom發(fā)起的、完全開放的軟件無線電項目,旨在鼓勵全球技術人員在這一領域協(xié)作與創(chuàng)新,目前已經(jīng)具有一定的影響力。GNU Radio 主要基于 Linux 操作系統(tǒng), 也可以移植到其他操作系統(tǒng)上, 采用 C++結合 Python 腳本語言進行編程,其代碼完全開放[18]。 USRP,即 Universal Software RadioPeripheral 通用軟件無線電平臺,是 Matt Ettus的杰作,它是一個開源的低價格的專門為 GNU Radio 設計的硬件平臺。USRP 是一個非常靈活的 USB 設備,它把 PC 連接到 RF 世界,可以在 載頻上實現(xiàn)最高 16M 的帶寬信號收發(fā)。[19] 基于 GNU Radio 和 USRP 的軟件無線電平臺正是屬于第三類的軟件無線電系統(tǒng),它除了具有第三類軟件無線電系統(tǒng)的優(yōu)點外,還具有如下優(yōu)勢: (1)成本較低。軟件免費,USRP 的價格為 700 美元,相當于一臺 PC 的價格;帶寬可滿足目前多數(shù)音視頻廣播和無線通信制式的要求, 支持雙工和多天線應用。 (2)技術門檻較低, 具有一定編程經(jīng)驗和 Linux 使用經(jīng)驗的用戶可在較短時間內(nèi)掌握其配置、使用和開發(fā)。 (3)開源軟件,獲得來自全世界眾多 GNU RADIO 擁護者以及 Eric Blossom 和Matt Ettu(分別是 GNU RADIO 和 USRP 的發(fā)明者)本人的技術支持[12]。 GNU Radios 和USRP 的功能是將信息和無線射頻信號互相轉(zhuǎn)化,其過程以及各部分功能如圖 31,信息流圖。 GNU Radio 軟件無線電介紹 GNU Radio 概述 在當今無線電領域中,由 Eric Blossom 發(fā)起的、完全開放的軟件無線電項目 GNURadio 倍受關注。GNU Radio 是一個開源、免費的可以構建軟件無線電平臺的軟件包。這是一種能運行于普通 PC 上的開放的軟件無線電平臺,其軟件代碼完全公開。它具備智能處理信號、擁有可重配置無線電硬件設備的特點?;谠撈脚_,用戶能夠以軟件編程的方式靈活地構建各種無線應用,進而很好地實現(xiàn)認知無線電的認知任務[13]。 NURadio 旨在鼓勵全球技術人員在這一領域協(xié)作與創(chuàng)新,目前已經(jīng)具有一定的影響力。GNU Radio 可以被理解為開源軟件的自由精神在無線領域的延伸,開放性和低成本是其最大的特點。低成本使得技術人員以及資金不那么充裕的機構可以像購買 PC 機一樣擁有一套能自由進入頻譜空間的軟硬件系統(tǒng),從而為更廣泛的技術創(chuàng)新打下基礎。在 GNU Radio 的郵件討論組中每天都有來自世界各地的用戶對各種相關技術問題的討論,這些用戶包括學生、大學教師、軟硬件工程師、無線工程師、業(yè)余無線電愛好者,正是這些人推動了新技術的發(fā)展進步。 GNURadio 的開放特性也是其具有廣泛吸引力的重要因素,同時也是其生命力的源泉。由于代碼和技術資料完全開放,人們可以了解到其運作的所有細節(jié),并可自由地對其進行修改和開發(fā)。在這種開放的氛圍之下,人們?nèi)〉玫闹R、成果可以得到充分的交流共享,更有益于創(chuàng)新。 GNU Radio 的軟件結構 GNURadio 提供一個信號處理模塊的庫,這個庫包含多種調(diào)制模式(GMSK、 PSK、QAM、OFDM 等),多種糾錯編碼(ReedSolomon、Viterbi、Turbo Codes 等),多種信號處理結構(任意濾波器、FFT、量化器等),并且有個機制可以把單個的處理模塊連接在一起形成一個系統(tǒng)。編程者通過建立一個流向圖(flow graph)就能搭建成一個無線電系統(tǒng)。 GNURadio 的編程基于 Python 腳本語言和 C++的混合方式。C++由于具有較高的執(zhí)行效率,被用于編寫各種信號處理模塊,如:濾波器、FFT 變換、調(diào)制/解調(diào)器、信道編譯碼模塊等,GNU Radio 中稱這種模塊為 block。GNU Radio 提供了超過 100 個的信號處理塊,并且擴展新的處理模塊也是非常容易的。 Python是一種新型的腳本語言,具有無須編譯、語法簡單以及完全面向?qū)ο蟮奶攸c,因此被用來編寫連接各個 block 成為完整的信號處理流程的腳本,GNU Radio 中稱其為flow graph 流向圖。這是一個相當強大的語言,新的 libraries 和功能經(jīng)常被加進來。在某種程度上看,GNU Radio 用一個實時有效的信號處理庫來擴展 Python。結合這些庫,我們將擁有大量的功能。比如說,結合 GNU Radio 和 SCIPY(Python 科學計算庫),可以實時記錄 RF 信號,并且可以離線做大量的數(shù)學操作,保存統(tǒng)計數(shù)字到一個數(shù)據(jù)庫當中,等等。結合這些庫,不用使用 MATLAT 這樣的軟件都可以實現(xiàn)了。 編程者通過建立一個流向圖(flow graph),如下圖 所示,就能搭建一個無線電系統(tǒng)。形象地說,flow graph 就像一塊電路板,在 flow graph 基礎上的 blocks 就如電路板上的電路模塊,而我們需要做的就是如何將這些模塊很好地連接起來。 如上圖所示,信號數(shù)據(jù)流不停的從信號處理模塊的輸入端口流入,再從相應信號處理模塊的輸出端口流出。信號處理塊 (blocks)的屬性包括輸入和輸出的端口數(shù)以及流過端口的數(shù)據(jù)的類型,經(jīng)常使用的數(shù)據(jù)流的類型是短整型(short),浮點型(float),和復數(shù)(plex)類型。一些處理模塊僅僅有輸入端口或者輸出端口,它們分別成為信號源(data source)和信號接收器(data sink)。有的信號源從文件或者 ADC 讀入數(shù)據(jù),信號接收器把數(shù)據(jù)寫入文件或者 DAC、PC 的多媒體接口。 信號處理模塊不僅能處理輸入和輸出的采樣速率是整數(shù)倍關系的同步模塊,也能處理異步模塊。同步模塊通常繼承自 gr_sync_block(輸入輸出 1:1 的采樣比)或者gr_sync_interpolator (1:N)或者 gr_sync_decimator (N:1)。異步模塊通常直接繼承自 gr模塊。當模塊已經(jīng)實現(xiàn),Python 通過把各個模塊的輸入輸出連接在一起形成信號流圖,在 main class 上把它們連接起來,這樣即可運行了。 在用戶用 block 和 graph 構造的應用程序下面是 GNU Radio 的運行支持環(huán)境,主要包括緩存管理、線程調(diào)度以及硬件驅(qū)動。GNU Radio 中巧妙地設計了一套零拷貝循環(huán)緩存機制,保證數(shù)據(jù)在 block 之間高效的流動。在運行著的 GNU Radio 實例中,GNU Radio 通過其特有的線程調(diào)度控制模塊和模塊之間的數(shù)據(jù)流采樣速率。除此之外還需要 forecast()的輔助,它由編程者告訴線程調(diào)度一個模塊需要多少種輸入采樣速率來產(chǎn)生需要數(shù)量的輸出采樣速率。 實際信號處理是在函數(shù) general_work()或者 ()中實現(xiàn)。這些函數(shù)被線程調(diào)度調(diào)用并被賦予若干個輸入采樣速率,然后進行信號處理并返回輸入采樣處理量和輸出采樣的產(chǎn)生量。 GNURadio 也處理數(shù)據(jù)的緩存。信號處理模塊通常以它們被輸入的速率來處理,但有時候因為 CPU 的處理速率或者其它因素,數(shù)據(jù)處理的速度不夠快,就需要緩存(buffer)來緩沖。這就要求編程者要注意:當數(shù)據(jù)傳送的速率大于處理速度時,有些緩存有可能會溢出并導致數(shù)據(jù)丟失;而當數(shù)據(jù)傳送速率小于處理速度時,緩存經(jīng)常是空的,有可能會產(chǎn)生脈沖。 GNURadio 除了支持 Linux 的多種發(fā)行版本外,還可移植到 Mac OS X 、NetBSD以及 Windows 等操作系統(tǒng)。 USRP 介紹 認知無線電對硬件平臺的要求 從第二章 Simon Haykin 教授對認知無線電的理解中,可以看到,認知無線電系統(tǒng)對硬件方面有如下的要求: (1)對多個頻帶信道進行監(jiān)測 認知無線系統(tǒng)的收發(fā)器為了能夠工作于不同的頻段和提供寬帶頻譜感知能力,收發(fā)器的前端要能夠調(diào)諧到大頻譜范圍內(nèi)的任意頻帶,由此必須選用寬帶天線。同時,根據(jù)電波傳播條件設計天線,使之具有一定的極化或方向圖分集控制能力。由于認知無線電能工作在不同的頻段,對 A/D 轉(zhuǎn)換器的要求也比較高,這就要求射頻前端 A/D 轉(zhuǎn)換器具有寬帶、高頻、高精度、高采樣率、高分辨率、大動態(tài)范圍的特性。 (2)具有一定的人工智能 認知無線電先對環(huán)境進行感知,再進行學習,最后達到?jīng)Q策,這過程是通過大量的算法實現(xiàn)的。因此,硬件平臺應該具有運行和實現(xiàn)這些算法的載體,比如說 DSP,F(xiàn)PGA等,并且要對這些算法進行調(diào)度和控制。 (3)容易升級和擴展 認知無線電要求需要對多種頻段進行支持,而各個頻段的調(diào)制方式、數(shù)據(jù)傳輸數(shù)率、傳輸協(xié)議等都不同,這就要求該硬件平臺能根據(jù)不同的實際情況,進行重新配置;另外,由于目前認知無線電的各種算法并不是很成熟,處于研究階段,為了便于以后的系統(tǒng)升級,要求硬件平臺可以重新配置,具備良好的擴展能力,如