天天看點

[OpenAirInterface實戰-19] :OAI 軟體無線電USRP UHD硬體驅動程式的使用與網絡架構

 ​

目錄

​​第1章 USRP UHD概述​​

​​1.1 官網首頁​​

​​1.2 概述​​

​​1.3 USRP硬體型号的差別​​

​​第2章 USRP Hardware Driver (UHD)的網絡架構​​

​​2.1 概述​​

​​2.2 Host 基帶BB + Host UHD驅動 + USRP RF整體的網絡架構​​

​​2.3 Host 基帶BB​​

​​2.4 Host UHD驅動​​

​​2.5 USRP RF​​

​​2.6 多USRP組網方案​​

​​第3章 Host UHD驅動程式的特性​​

​​3.1 開源性​​

​​3.2 釋出周期​​

​​3.3 代碼可移植性​​

​​3.4 編譯UHD代碼外部的依賴檔案​​

​​第4章 Host UHD驅動程式的IQ資料處理相關的配置​​

​​4.1 IQ資料的傳輸​​

​​4.2 射頻頻率微調​​

​​4.3 采用率Sample Rate​​

​​4.4 IQ資料的糾正​​

​​第5 其他​​

​​5.1 GPIO的功能​​

​​5.2 射頻前端的擴充​​

​​5.3 USRP與BB開源軟體的關系​​

​​第6章 其他資源​​

第1章 USRP UHD概述

1.1 官網首頁

​​UHD - Ettus Knowledge Base

[OpenAirInterface實戰-19] :OAI 軟體無線電USRP UHD硬體驅動程式的使用與網絡架構

https://kb.ettus.com/UHD​​

1.2 概述

Ettus Research USRP™ 系列軟體定義無線電 (SDR) 是多功能裝置,允許使用者在通用硬體平台上以各種頻率和設定發送和接收許多不同的自定義波形。

商業、學術和軍事客戶采用靈活且可重複使用的 USRP 硬體進行研究、無線探索和現場部署。

1.3 USRP硬體型号的差別

USRP 有多種外形和配置。USRP 的主要類别是:

  • 總線 (B) 系列 – 通過 USB 連接配接連接配接到主機
  • Network(N) 系列 – 通過以太網連接配接到主機
  • 高性能 (X) 系列 – 連接配接可以是以太網或 x4 PCI-Express 連接配接
  • 嵌入式 (E) 系列 – 旨在獨立運作(無需主機)。

第2章 USRP Hardware Driver (UHD)的網絡架構

2.1 概述

USRP 硬體驅動程式 (UHD) 是在通用處理器 (GPP) 上運作的使用者空間庫,可與所有 USRP 裝置系列進行通信并對其進行控制。

UHD 通過提供靈活的功能豐富的 SDR API,幫助商業、學術、軍事、業餘愛好者和其他 SDR 使用者進行無線協定的快速原型設計或部署。

B、N 和 X 系列 USRP 從主機發送和接收樣本,如圖 1 所示。

由于我們的嵌入式E系列(包括N系列)的USRP 包含一個内部 通用CPU,您可以在不需要主機的情況下運作這些無線電(獨立模式) .

[OpenAirInterface實戰-19] :OAI 軟體無線電USRP UHD硬體驅動程式的使用與網絡架構

Host PC:充當的是基帶闆BB的功能(包括帶支援L1加速卡硬體或其他基帶闆硬體平台) 

除了E系列,USRP充當的是RF (RRU)的功能。

USRP 是收發器,這意味着它們既可以發送也可以接收 RF 信号。

UHD 提供必要的控制,用于将使用者波形樣本傳輸到 USRP RF硬體和從 USRP RF硬體傳輸以及控制USRP RF硬體無線電的各種參數(例如采樣率、中心頻率、增益等)。

2.2 Host 基帶BB + Host UHD驅動 + USRP RF整體的網絡架構

[OpenAirInterface實戰-19] :OAI 軟體無線電USRP UHD硬體驅動程式的使用與網絡架構

2.3 Host 基帶BB

這部分代碼不是有軟體無線電組織提供,就不在USRP的代碼範圍内,其他的基帶開源組織提供。

支援的基帶開源組織有:

Third Party

  • ​​GNU Radio​​
  • ​​LabVIEW​​
  • ​​Matlab/Simulink​​
  • ​​OpenBTS​​
  • ​​Eurecom OpenAirInterface (OAI)​​
  • ​​srsLTE/srsUE​​
  • ​​Gqrx​​
  • ​​Fosphor​​
  • 自定義信号處理應用程式

2.4 Host UHD驅動

UHD實作帶有基帶軟體的主機Host與USRP硬體的通信,通信的手段和協定棧,取決于USRP與Host PC之間的連接配接方式:

  • 總線 (B) 系列 – 通過 USB 連接配接連接配接到主機 =》 USB驅動
  • Network(N) 系列 – 通過以太網連接配接到主機 =》  以太網驅動
  • 高性能 (X) 系列 – 連接配接可以是以太網或 x4 PCI-Express 連接配接 =》PCIe驅動

UHD是一個通用的軟體,能夠支援上述所有方式。

UHD X86 CPU驅動程式是用 C/C++ 編寫的

2.5 USRP RF

  • USRP FPGA(現場可程式設計門陣列)開發的代碼是用 Verilog 編寫。
  • USRP  ARM firmware程式是用 C/C++ 編寫的。

上述兩個程式,可以Host下載下傳到USRP硬體中,也可以通過仿真器預先燒錄。

2.6 多USRP組網方案

UHD 将 USRP 系統上的通道數量全部視為一個複合裝置,進而簡化了擴充 USRP 系統上的通道數量,參見下圖 9:使用4個2T2R組成一個8T8R的小區。

[OpenAirInterface實戰-19] :OAI 軟體無線電USRP UHD硬體驅動程式的使用與網絡架構

備注:

在 X300/X310 的情況下,在這種多 USRP 配置中使用 USRP 時,使用者可以使用​​外部時鐘源​​(具有 10 MHz 時鐘參考和 PPS 信号)來同步所有裝置。

[OpenAirInterface實戰-19] :OAI 軟體無線電USRP UHD硬體驅動程式的使用與網絡架構

第3章 Host UHD驅動程式的特性

3.1 開源性

大多數 UHD 代碼庫是開源的,包括在主機上執行的代碼,以及針對 USRP 硬體(FPGA 和微控制器固件)的代碼。作為雙重許可軟體,UHD 可在開源 GNU 公共許可證版本 3 (GPLv3) 以及僅由 Ettus Research 提供的替代性、限制性較小的許可證下使用

3.2 釋出周期

由于UHD的開源特性,整個開發過程也是開放的,可以通過我們的​​Git​​版本控制系統跟蹤UHD的開發。使用者可以選擇是否喜歡最新的開發代碼(功能最豐富但有時可能不穩定),或者是經過更徹底測試的不包含最新開發的代碼。修訂版本(例如 UHD 3.9.2 版)大約每兩個月釋出一次,并且通常隻包含與先前版本相比的錯誤修正(例如,UHD 3.9.2 具有與 3.9.1 相同的功能集,但更穩定)。這些錯誤修複版本是在 maint 分支完成的,這是所有錯誤修複開發發生的地方。

新功能開發是在主分支上完成的。這個分支不應該被認為是穩定的,即使我們使用持續內建系統來監控它的狀态。但是,主分支上的 API 或依賴項要求可能會發生變化。

在功能開發周期結束時,master 分支被當機,并且隻有錯誤修正被接受到 master 分支中。一旦 master 分支被認為是穩定的,maint 分支就會重置為主分支,并且從之前的 master 分支生成一個新的版本。這由主要版本号跳轉訓示(例如,從 3.8.3 到 3.9.0 時)。主要版本每年釋出 1-2 次,通常伴随新産品釋出。

除了 main 和 master 分支之外,有時會釋出新功能分支(臨時)以深入了解即将推出的功能,并更早地通路新開發。

3.3 代碼可移植性

UHD 軟體 API 支援所有 USRP SDR 産品的應用程式開發。

使用通用軟體接口至關重要,可實作代碼可移植性,并允許應用程式在開發需求擴充或新系統可用時無縫過渡到其他 USRP SDR 系統。是以,它允許您保留和重用遺留代碼,進而顯着減少開發工作。

UHD 可以安裝在 Linux、Windows 或 Mac 上。

[OpenAirInterface實戰-19] :OAI 軟體無線電USRP UHD硬體驅動程式的使用與網絡架構

3.4 編譯UHD代碼外部的依賴檔案

(1)Python

相容 Python 2.7 及更高版本(支援 Python 3)。注意建構(build)UHD時需要Python,并且 UHD 附帶的一些實用程式是用 Python 編寫的。

注意:運作UHD和應用程式的可執行程式時,并不需要它。

(2)Linux

這取決于您使用的發行版,但大多數(如果不是全部)依賴項應該在您的包管理器的包存儲庫中可用。有關更多資訊,請參閱​​Linux 建構說明​​ (後續單獨說明,如何在Linux下Build UHD)

(3)Mac OS X

安裝 Xcode 應用程式以擷取建構工具(GCC 和 Make)。使用 MacPorts 擷取 Boost 和 Mako 依賴項。其他依賴項可以作為 DMG 安裝程式從 Web 下載下傳或通過 MacPorts 安裝。有關更多資訊,請參閱​​UHD OS X 建構說明​​。

(4)Windows

可以通過可安裝的 EXE 檔案擷取依賴項。通常,可以在項目的網站上找到 Windows 安裝程式。某些項目不托管 Windows 安裝程式,如果是這種情況,請遵循 Windows 安裝程式的輔助下載下傳 URL(如下)。有關詳細資訊,請參閱​​Windws 建構說明​​

(5)Git

  • Required to check out the repository (not necessary if building from tarballs).
  • On Windows, install Cygwin with Git support to checkout the repository or install msysGit from ​​http://code.google.com/p/msysgit/downloads/list​​.

(6)Build Dependencies

UHD Version GCC Clang MS Visual C++ CMake Boost LibUSB Mako Doxygen Python Xilinx Vivado
3.9.X >= 4.4 >= 3.3 >= 2012 (11.0) >= 2.8 >= 1.46 >= 1.0 >= 0.5.0 >= 1.8 (recommended) >= 2.7 == 2014.4
3.10.X >= 4.8 >= 1.53 == 2015.4

Other compilers (or lower versions) may work, but are unsupported.

Note on MSVC: The free ​​Visual Studio Express Edition for Desktop​​ works.

Note on Boost: Older versions of UHD may not work with newer versions of Boost, as the Boost API sometimes changes, and we can't retroactively fix older UHD versions. For example, UHD 3.8.X (and older) won't work with Boost 1.60.

第4章 Host UHD驅動程式的IQ資料處理相關的配置

4.1 IQ資料的傳輸

UHD使用以太網、USB 和 PCI-Express 等标準接口方法處理傳輸 I 和 Q 樣本資料(有關 I 和 Q 樣本的資訊,請參見​​此處​​)的控制。

樣本可以以連續流的形式發送,如圖 4a 所示,

也可以以突發形式發送,如圖 4b 所示。

此外,使用者可以使用内置的突發和定時指令指定何時接收或發送樣本資料。

[OpenAirInterface實戰-19] :OAI 軟體無線電USRP UHD硬體驅動程式的使用與網絡架構

4.2 射頻頻率微調

USRP RF 前端可能支援特定頻率步長,所有但不能滿足使用者的或許多要求。是以,UHD 在 FPGA 中包含數字上變頻 (DUC) 和數字下變頻 (DDC) DSP 子產品,用于微調 RF 頻率(請參閱​​此處​​)。這允許使用者:

  • 具有 sub-Hz RF 頻率步長
  • 緩解直接轉換(零中頻)硬體上存在的 DC 問題(請參閱​​此處​​)。
  • 在可用帶寬内快速調諧

如下圖所示:

[OpenAirInterface實戰-19] :OAI 軟體無線電USRP UHD硬體驅動程式的使用與網絡架構

4.3 采用率Sample Rate

不同的 SDR 配置、波形和應用,需要不同的采樣率。

例如,使用者可能希望監控 100 MHz 的瞬時 RF 帶寬,但他們的主機 PC 可能隻能分析 20 MHz 的實時帶寬。

對于這種情況和其他情況,UHD 允許使用者設定各種采樣率以滿足他們的自定義應用程式。

在 FPGA 中,UHD 包括抽取和插值子產品,以執行這些采樣率轉換。

4.4 IQ資料的糾正

所有直接變頻(零中頻)RF 架構的固有特性是 IQ 不平衡的影響。在​​此處​​找到的名為“正交損害對 802.11ac EVM 的影響”的視訊示範了此屬性。​​在此處​​查找其他資訊。總之,使用直接轉換架構的裝置上的任何給定信号都有兩條 TX 路徑和兩條 RX 路徑。

一條路徑是同相或“I”,另一條路徑是正交“Q”,也稱為實數和虛數。

[OpenAirInterface實戰-19] :OAI 軟體無線電USRP UHD硬體驅動程式的使用與網絡架構

 由于元件、溫度和其他因素的差異,I 和 Q 信号路徑會受到不同條件的影響,是以會改變初始捕獲時存在的原始信号。當 I 或 Q 的相位或幅度改變時,結果顯示為原始信号中實際上不存在的信号。例如,請注意在 GNU Radio Companion 中建立的這個 GNU Radio Flowgraph 中的以下 IQ 損傷模拟。

[OpenAirInterface實戰-19] :OAI 軟體無線電USRP UHD硬體驅動程式的使用與網絡架構

通過使用“HW Impairments”子產品,您可以模拟 I 和 Q 信号路徑中斷時發生的情況。在圖 8a 中沒有添加損傷。但是,當 I 路徑的幅度略有增加時,您會得到如圖 8b 所示的僞影。

[OpenAirInterface實戰-19] :OAI 軟體無線電USRP UHD硬體驅動程式的使用與網絡架構

可以減輕數字域中的一些不良影響。UHD 包含 FPGA 内的功能塊以補償 IQ 損傷;這些塊作為 IQC 塊出現在圖 1 中。使用者可以根據經驗測量自定義這些塊的參數,或者允許 UHD 執行自動分析并根據内置的 IQ 校正算法提供參數。有關更多資訊,請參閱​​UHD 手冊中​​的以下功能:

  • uhd_cal_rx_iq_balance: - 最小化 RX IQ 不平衡與 LO 頻率
  • uhd_cal_tx_dc_offset: - 最小化 TX DC 偏移與 LO 頻率
  • uhd_cal_tx_iq_balance: - 最小化 TX IQ 不平衡與 LO 頻率

第5 其他

5.1 GPIO的功能

通用輸入輸出 (GPIO) 引腳可以通過 UHD 手動控制,也可以從 UHD 設定為在發生 TX 或 RX 等事件時自動觸發。在何處或如何使用此自動觸發的示例:當使用者将 RF 放大器連接配接到 USRP 的 TX 或 RX 端口時,隻有在 USRP 正在傳輸時才能開啟放大器。您可以在​​此處​​找到有關 E3x0/X3x0 上的輔助 GPIO 的更多資訊。

​​

[OpenAirInterface實戰-19] :OAI 軟體無線電USRP UHD硬體驅動程式的使用與網絡架構

備注:GPIO的硬體位于USRP RF硬體上,UHD對GPIO的功能進行配置。

5.2 射頻前端的擴充

USRP 可以與來自 3rd 方的不同 RF 前端接口。

通過使用 BasicRX 和 BasicTX 子闆,使用者可以向第 3 方的射頻前端硬體發送或接收基帶或 IF(中頻)模拟信号。

5.3 USRP與BB開源軟體的關系

除了将 USRP 系列 (UHD) 內建到 GNU Radio 的 gr-uhd 子產品的開發之外,Ettus Research 還經常為 GNU Radio 項目做出貢獻。盡管 USRP 無線電通常與 GNU Radio 軟體架構相關聯,但許多 USRP 應用程式(例如​​OpenBTS​​)在沒有 GNU Radio 的情況下運作。有關 GNU Radio 的更多資訊,請參見​​此處​​

第6章 其他資源

Github:​​https​​ : ​​//github.com/EttusResearch/uhd​​

手冊:​​https​​ : ​​//files.ettus.com/manual/index.html​​

繼續閱讀