1. 程式人生 > >詳解軟體無線電(SDR)架構

詳解軟體無線電(SDR)架構

詳解軟體無線電(SDR)架構

哈爾濱工程大學資訊與通訊工程學院

導讀:軟體無線電(SDR)最初的概念是一種通訊技術或者體系結構,而現在SDR,確切地說是軟體定義無線電,更接近一種設計方法或者設計理念。軟體無線電在理論上有著良好的應用前景,實際應用中卻受到軟、硬體工藝或者處理能力的限制。

2  軟體無線電架構

  軟體無線電(SDR)最初的概念是一種通訊技術或者體系結構,而現在SDR,確切地說是軟體定義無線電,更接近一種設計方法或者設計理念。軟體無線電在理論上有著良好的應用前景,實際應用中卻受到軟、硬體工藝或者處理能力的限制,但是基於軟體無線電概念基礎上的軟體定義無線電技術卻越來越受到人們的重視。在2001年10 月份舉行的ITU-8F 會議上,軟體定義無線電被推薦為未來無線通訊極有可能的發展方向。

  軟體定義無線電的功能需求包括重新程式設計及重新設定的能力、提供並改變業務的能力、支援多標準的能力以及智慧化頻譜利用的能力等。可見,SDR是可為所有技術使用的公共平臺,例如認知無線電。下面我們將從一個相對完整的SDR平臺角度來闡述SDR 平臺的架構,主要包括以軟體為中心的SDR架構和SDR 硬體結構兩個方面。

  2.1 以軟體為中心SDR架構

  軟體無線電,其重點在於基於一款通用平臺來進行功能的軟體化處理。在SDR探討中,開發人員往往注重平臺的硬體開發,偏重於搭建平臺時使用器件的處理效能,以使得通用平臺儘可能的接近理想軟體無線電的設計要求。這使得一部分人忽略了SDR中軟體平臺的設計。這裡提出的SDR軟體平臺,是指在利用通用硬體平臺實現SDR功能時的一種使用者演算法處理框架(或簡單認為訊號處理框架),甚至是一種操作環境(如滿足軟體通訊體系架構規範使用者介面環境)。SDR軟體平臺(也稱作SDR架構)負責的功能一般包括:

  提供使用者介面,使用者通過該介面新增、刪除功能模組。

  演算法封裝,將演算法包裝與外界隔離,演算法包括通訊演算法、訊號處理演算法、C/C++等其他演算法。

  互聯介面,以完成模組間互聯。

  中間訊號的測試除錯介面。

  排程器或者介面卡,用來管理模組。

  SDR 架構中,最受歡迎的兩類開源平臺分別是開源軟體定義無線電(GNURadio)和開源軟體通訊體系框架嵌入式解決方案(OSSIE)。二者都是著手於標準化和可移植化的程式碼開發,GNURadio 的出發點是提供一種訊號處理框架,而OSSIE的目標是提供一種軟體通訊體系架構(SCA)操作環境。

  2.1.1 GNURadio 平臺

  GNU Radio是一種設計SDRs 的開源架構,其主要元件包括6 個部分:通用框架、排程器、C++ 和Python 工具、數字訊號處理(DSP)模組、使用者介面介面、硬體前端的介面。這6個部分詳細功能說明如下:

  一個為訊號處理模組準備的通用框架,並且其可以連線到一個或多個其他模組。

  一個排程器,用於啟用每個處理模組並且管理模組之間的相關資料傳輸。

  C++和Python 工具,用於建立多個模組間的流圖,並將該流圖連線到排程器上。

  一組足夠多的用於濾波器、跟蹤環等的常用DSP模組。

  使用者介面介面,允許使用者拖拽模組、模組連線來實現GNURadio 的設計。

  一個與商用硬體前端的介面。前端硬體包括數模/模數轉換器(DAC/ADC)和上下變頻器,來提供了通用處理器(GPP)和無線物理環境的介面。

  GNU Radio執行在Linux 系統上。圖7 給出了GNU Radio圖形使用者介面介面,每一個小模組封裝了不同的訊號處理功能,而且這些演算法功能都是開源的。大部分演算法或者訊號處理模組是基於C++語言開發的,可讀性強,同時也便於使用者開發。模組間的通訊是利用資料通道完成的,資訊採用的是訊息佇列形式。GNURadio 結合通用軟體無線電外設(USRP)開發板,可以認為是一種SDR 平臺,相關人員可以利用這種平臺進行一些演算法的快速開發和SDR研究。

  圖7GNU Radio 圖形使用者介面介面

2.1.2OSSIE 平臺

  OSSIE 是一種開發SCA 相容無線電的開源平臺,提供了一種SCA操作環境。OSSIE 分配包括以下部分:

  用來選擇模組和互聯模組的使用者介面。

  定義新模組的使用者介面,可以建立C++程式框架,使用者根據應用需要可以增減框架內所需要的訊號處理程式碼。

  用來檢查和除錯波形的使用者介面,該介面允許開發人員監視中間模組中的訊號。監控器可以在執行中新增,便於觀察中間波形,進行模組除錯。

  基於開源物件請求代理(ORB)的SCA 相容公共物件請求代理體系結構(CORBA)。

  一系列學習指南和實驗課程。Windows 使用者可以直接下載相關元件並執行,不需要安裝Linux,相對GNU Radio上手容易。

  從圖8 和圖9 以及OSSIE 分配上看出,使用者介面軟體OSSIE 提供了SDR 架構設計、訊號處理程式碼封裝、介面除錯、中間模組波形除錯等功能,在OSSIE上開發完整的無線電是相當可行的。基於OSSIE架構,Prismtech公司的著名Spectra 系統提供了一個完整的用來開發SCA 相容波形的操作環境。

  圖8OSSIE 用來定義波形的使用者介面介面

  圖9OSSIE 用來測試和除錯使用者介面介面

  2.1.3 不同開源SDR平臺間對比

  GNU Radio由專門的業餘愛好者創立,以節省開支和臨時應急驗證為目的的一種快速開發工具;而OSSIE符合軍方開發標準。二者都是著手於標準化和可移植化的程式碼開發。

  GNU Radio的出發點是提供一種訊號處理框架,與之不同的是OSSIE的目標是提供一種SCA 操作環境。GNU Radio執行在Linux 平臺上,且直接訪問檔案系統和硬體;SCA波形執行在OSSIE 提供的一個良好的操作環境下,應用程式介面抽象描述了檔案系統和硬體。在GNURadio 上的模組之間通過Python或者C++指令來互相連線,取樣資料是通過使用者自定義的迴圈緩衝來傳輸。OSSIE採用可擴充套件標記語言(XML)檔案定義模組連線,而實際是通過CORBA服務完成了連線。最重要的是OSSIE基於ORB 結構,採用了傳輸控制協議/互聯網路協議(TCP/IP)傳輸取樣資料。特別說明,ORB 允許不同的模組執行在不同的機器上,而GNURadio平臺上的流圖只能在同一臺機器上執行。通過比較發現,GNURadio 更像是OSSIE中一種功能元件,完成的是OSSIE的訊號處理功能。

  基於GNU Radio和OSSIE 兩類平臺出現一系列SDR 軟體架構,例如PrismTech公司的SpectraCX 環境。這些SDR 架構與專用處理器(現場可程式設計門陣列/DSP)相連線或者將專用處理器抽象成封裝元件,將無線電波形集中管理,根據需要進行裝配元件形成波形應用,靈活呼叫。這樣就完成了軟體無線電平臺開發雛形。

2.2用於SDR 訊號處理的硬體結構

  SDR 要求硬體系統具有功能可重構、較高的實時處理能力,要求適應性廣、升級換代簡便。在一般情況下要求SDR硬體系統具備如下特點:支援多處理器系統,具有寬頻高速資料傳輸I/O介面,結構模組化、標準化、規範化等。常見的SDR平臺就是CPU+DSP+FPGA這種形式。即便我們不具備全部硬體,但仍然可以進行SDR開發,因為SDR 更像是一種設計理念,重在軟體和演算法處理,其元件(不管是硬體平臺,還是軟體演算法)滿足同一種規範,則具備SDR可重構的靈活性。目前,存在3種主流SDR 硬體平臺結構:基於GPP 的SDR 結構、基於現場可程式設計門陣列(FPGA)的SDR(Non- GPP)結構、基於GPP+FPGA/SDP 的混合SDR結構。

  2.2.1 基於GPP的SDR 結構

  基於GPP 的SDR 結構提供了最大的靈活性和最簡單的開發。GPPs最適合用於實驗室環境的研究和開發,研究者能夠快速嘗試一系列演算法和波形。一款高配PC在執行相當複雜的波形情況下,資料率≥1 Mbit/s,並且通過乙太網、USB、PCI 等標準介面可以直接處理數字基帶或者低中頻取樣資料。並且可以通過多核處理來提高資料的吞吐量。但是,對於這種結構來說更適合處理資料塊,並不擅長處理實時取樣資料,資料延時和抖動是其面臨的主要問題。作業系統會引進延時和抖動,windows系統抖動可能超過10 ms,而像VxWorks這種實時作業系統抖動可以限制在1 ms 內。

  基於GPP 的SDR 結構比較簡單,其結構一般如圖10 所示,只包括天線、ADC/DAC、資料緩衝模組(FIFO)和GPP。這種架構對於開發人員來說,相當方便和靈活,直接接入個人PC就可以進行演算法開發和測試,但它也存在缺點,如上述所述,延時和資料處理的方式等。

  圖10基於GPP 的SDR

  2.2.2 基於FPGA的SDR(Non-GPP)結構

  基於FPGA 的SDR 結構的實現比較困難。FPGA 適合於高資料速率和寬頻寬訊號波形應用,並且可以用於靈活實現無線電和多種多樣的波形設計,但是在結構上與GPP存在本質區別。GPP 在記憶體中執行指令且很容易從一個指令功能轉換到另一種功能,而FPGA上的功能直接對映成了硬體電路,一個新功能需要更多的FPGA資源。同時,FPGA 的高度並行結構十分適合資料流處理,但是不適合密集型控制處理。另一方面,FPGA的配置檔案高達40 MB,配置時間長達100 ms,而且重新配置是容易丟失晶片中的資料。這些問題直接造成了多波形設計中重新載入的時間太長的問題。雖然一部分FPGA支援區域性重配置的功能,但是這項技術相當困難並且嚴重受到開發工具的限制。讓人興奮的是,FPGA 實現了2011 年提出的3 項建議:

  專用GPP 與FPGA 一同使用。

  通過使用可用的邏輯資源在FPGA 上嵌入一個全功能的微控制器。

  將FPGA 和GPP 結合製作成單一器件(如XilinxZYNQ 系列)。

  將FPGA 和GPP 結合製作成單一器件,並不是像嵌入了微控制器模組,這種片上微控制器上電可用,並且不需要FPGA就可以進行程式設計設計。由此可知,基於FPGA的SDR 架構時代已經到來,新一代SDR 將在新技術下越來越有意義。

2.2.3基於GPP+FPGA/DSP 的混合SDR結構

  基於GPP+FPGA/DSP的混合SDR結構,分為GPP+FPGA、GPP+DSP+FPGA兩種主要架構形式。這種組合結構融合不同器件的優點,取長補短,在功耗要求比較寬鬆的實驗室環境下,能夠給開發人員提供一種快速驗證各類演算法高效能平臺。

  圖11 給出了這種結構的互聯示意圖。這種結構一般對異構器件間的資料交換的效能要求較高,不同器件間通訊一般會採用PCIe[12]介面方式(1.25Gb/s/1x)和序列高速輸入輸出(SRIO)介面方式(1.5Gb/s/1x)。PCIExpress 主要用於計算機中晶片間、板卡間的資料傳輸,也有部分嵌入式市場;RapidIO主要用於嵌入式系統內晶片間、板間資料傳輸,其目標就是嵌入式系統內的高效能互聯。這種混合SDR結構,效能上可以充分地利用各種器件的優勢,但同時也存在著介面設計複雜和能耗大的問題。

  圖11異構器件互聯示意

  2.2.4 多通道SDR結構

  除了上述討論的SDR 基本結構,也存在多通道SDR,如圖12 所示。多通道SDR 旨在多併發使用者共享相同的頻寬,例如在一種互不相容無線電模式下的無線電轉換,允許不同模式下使用者間對話。這種架構最簡單的結構就是整合一組獨立的SDRs,每一個SDR 支援一個或多個通道,一般的這些SDRs 分別是具有低速率、中速率、高速率處理能力。這種結構除了對多種使用者介面、複雜的演算法設計、系統設計提出高要求,也對訊號處理器(GPP/FPGA/DSP)和射頻模組(ADC/DAC/放大器)的效能提出了較高的要求。

  圖12多通道SDR

2.3實驗室自研平臺

  目前,業界也出現了一系列支援SDR/CR的高效能開發平臺,均是基於以上討論的架構。例如NationalInstruments公司的USRP、BeeCube 公司的BEE3、基於XilinxZYNQ 系列的ZingBoard/ZedBoard 開發板等。這些現有的具有SDR開發能力的開發板,大多屬於商業產品,並不是專業應用於SDR開發的產品,輔以個人PC(GPP)裝置才能進行一定意義上的SDR 設計。下面介紹一種自研平臺,該平臺可專門用於軟體無線電和認知無線電的相關研發,特別適合實驗室環境下,開發人員對新演算法的快速實現。

  2.3.1 自研平臺硬體結構

  該平臺主要包含了GPP、專用處理器(FPGA/DSP)、射頻前端、天線等主要部件,如圖13所示。

  圖13平臺架構及應用

  如圖13 所示,這種SDR 實現結構利用緊湊型外圍元件介面(CPCI)匯流排將FPGA、DSP、GPP 連線在一起,充分利用了FPGA 高速並行資料流處理能力、DSP 高效演算法處理能力、上位機靈活的介面操作能力以及現場可程式設計能力。更有意義的是平臺支援GNURadio/OSSIE 架構,實驗室團隊在平臺上實現了基於SpectraCX 操作環境的SCA 設計,可以認為它是一套具有SDR 電臺研發能力的通用裝置。平臺主要引數如表1所示。

  表1自研平臺部分引數

  2.3.2 單元互聯

  該平臺主要目的是用於SDR 的應用研究,必然面臨多使用者、多波形、寬頻寬等問題,此時FPGA、DSP、GPP這些異構器件間的通訊能力直接決定了系統的整體效能,即涉及不同單元間互聯方式的選擇。為了能過獲得最大資料吞吐能力,專用器件與GPP間的通訊採用了PCIe 介面方式,FPGA 與DSP 之間的通訊則採用SRIO,通過提高介面的資料交換速度來保證大資料吞吐能力,進而充分發揮各處理器強大的資料處理能力。

  第2 講對軟體無線電的架構做了詳細介紹,包括SDR的軟體操作環境(或使用者介面)和硬體平臺,並從其應用及通用平臺設計角度分析各類平臺的優缺點。當然,軟體無線電並不只限於上述討論內容,上述討論只限於應用於SDR演算法開發範疇,SDR 還包括軟體可調模擬無線通訊元件(如軟體可調濾波器、軟體可調上下變頻器、軟體可調功率放大器等)、天線系統(如多輸入多輸出系統、智慧天線與波束成形)、以及一系列軟體無線電理論(帶通取樣、多速率訊號處理、高效數字濾波)等。