天天看点

[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​​

继续阅读