软件无线电 (SDR)

Software Defined Radio

By Oceani Cheng on June 3, 2023

0 SDR是啥

软件无线电(Software Defined Radio,SDR)是一种实现无线通信的新概念和体制。在硬件中可以通过组件(例如混频器,滤波器,放大器,调制器 / 解调器,检测器等)实现,也可以通过软件手段实施。一开始软件无线电应用在军事领域,在21世纪初,由于众多公司的努力,使得它已从军事领域转向民用领域,成为经济的、应用广泛的、全球通信的第三代移动通信系统的战略基础。

基本的SDR系统由模数转换器的个人计算机组成,之前是某种形式的RF前端。大量的信号处理被交给通用处理器,而不是在专用硬件(电子电路)中完成。这种设计产生一种无线电设备,它可以仅仅基于所使用的软件来接收和发送广泛不同的无线电协议(有时也称为波形)。

1 开发平台

SDR 架构中,最受欢迎的两类开源平台分别是开源软件定义无线电(GNU Radio)和开源软件通信体系框架嵌入式解决方案(OSSIE)。二者都是着手于标准化和可移植化的代码开发,GNU Radio 的出发点是提供一种信号处理框架,而OSSIE 的目标是提供一种软件通信体系架构(SCA)操作环境。

1.1 GNU Radio 平台

GNU Radio 是一种设计SDRs 的开源架构,其主要组件包括6 个部分:通用框架、调度器、C++ 和Python 工具、数字信号处理(DSP)模块、用户接口界面、硬件前端的接口。

  • 一个为信号处理模块准备的通用框架,并且其可以连接到一个或多个其他模块。
  • 一个调度器,用于激活每个处理模块并且管理模块之间的相关数据传输。
  • C++和Python 工具,用于建立多个模块间的流图,并将该流图连接到调度器上。
  • 一组足够多的用于滤波器、跟踪环等的常用DSP模块
  • 用户接口界面,允许用户拖拽模块、模块连线来实现GNU Radio 的设计。
  • 一个与商用硬件前端的接口。前端硬件包括数模/模数转换器(DAC/ADC)和上下变频器,来提供了通用处理器(GPP)和无线物理环境的接口。

GNU Radio 运行在Linux 系统上。GNU Radio 结合通用软件无线电外设(USRP)开发板,可以认为是一种SDR 平台,相关人员可以利用这种平台进行一些算法的快速开发和SDR 研究。

1.2 OSSIE 平台

OSSIE 是一种开发 SCA 兼容无线电的开源平台,提供了一种 SCA 操作环境。OSSIE 分配包括以下部分:

  • 用来选择模块和互联模块的用户接口。
  • 定义新模块的用户接口,可以创建C++程序框架,用户根据应用需要可以增减框架内所需要的信号处理代码。
  • 用来检查和调试波形的用户接口,该接口允许开发人员监视中间模块中的信号。监控器可以在运行中添加,便于观察中间波形,进行模块调试。
  • 基于开源对象请求代理(ORB)的SCA 兼容公共对象请求代理体系结构(CORBA)。
  • 一系列学习指南和实验课程。Windows 用户可以直接下载相关组件并运行,不需要安装Linux,相对GNU Radio 上手容易。

GNU Radio 由专门的业余爱好者创立,以节省开支和临时应急验证为目的的一种快速开发工具;而OSSIE符合军方开发标准。二者都是着手于标准化和可移植化的代码开发。

GNU Radio 的出发点是提供一种信号处理框架,与之不同的是OSSIE的目标是提供一种SCA 操作环境。GNU Radio 运行在Linux 平台上,且直接访问文件系统和硬件;SCA 波形运行在OSSIE 提供的一个良好的操作环境下,应用程序界面抽象描述了文件系统和硬件。在GNU Radio 上的模块之间通过Python 或者C++指令来互相连接,采样数据是通过用户自定义的循环缓冲来传输。OSSIE 采用可扩展标记语言(XML)文件定义模块连接,而实际是通过CORBA 服务完成了连接。最重要的是OSSIE 基于ORB 结构,采用了传输控制协议/互联网络协议(TCP/IP)传输采样数据。特别说明,ORB 允许不同的模块运行在不同的机器上,而GNU Radio平台上的流图只能在同一台机器上运行。通过比较发现,GNU Radio 更像是OSSIE 中一种功能组件,完成的是OSSIE 的信号处理功能。

基于GNU Radio 和OSSIE 两类平台出现一系列SDR 软件架构,例如PrismTech 公司的Spectra CX 环境。这些SDR 架构与专用处理器(现场可编程门阵列/DSP)相连接或者将专用处理器抽象成封装组件,将无线电波形集中管理,根据需要进行装配组件形成波形应用,灵活调用。这样就完成了软件无线电平台开发雏形。

2 用于SDR信号处理的硬件结构

SDR 要求硬件系统具有功能可重构、较高的实时处理能力,要求适应性广、升级换代简便。在一般情况下要求SDR 硬件系统具备如下特点:

  • 支持多处理器系统,
  • 具有宽带高速数据传输I/O 接口,
  • 结构模块化、标准化、规范化等。

常见的SDR平台就是CPU+DSP+FPGA这种形式。即便我们不具备全部硬件,但仍然可以进行SDR 开发,因为SDR 更像是一种设计理念,重在软件和算法处理,其组件(不管是硬件平台,还是软件算法)满足同一种规范,则具备SDR 可重构的灵活性。目前,存在3种主流SDR 硬件平台结构:

  1. 基于GPP 的SDR 结构;
    • 基于 GPP(General Purpose Processor, 通用处理器)的SDR 结构提供了最大的灵活性和最简单的开发。GPPs最适合用于实验室环境的研究和开发,研究者能够快速尝试一系列算法和波形。一款高配PC在运行相当复杂的波形情况下,数据率≥1 Mbit/s,并且通过以太网、USB、PCI 等标准接口可以直接处理数字基带或者低中频采样数据。并且可以通过多核处理来提高数据的吞吐量。
    • 但是,对于这种结构来说更适合处理数据块,并不擅长处理实时采样数据,数据延时和抖动是其面临的主要问题。操作系统会引进延时和抖动,Windows 系统抖动可能超过10 ms,而像VxWorks这种实时操作系统抖动可以限制在1 ms内。
    • 基于GPP 的SDR 结构比较简单,其结构一般如下图所示,只包括天线、ADC/DAC、数据缓冲模块(FIFO)和GPP。这种架构对于开发人员来说,相当方便和灵活,直接接入个人PC 就可以进行算法开发和测试,但它也存在缺点,如上述所述,延时和数据处理的方式等。 v
  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 合并制作成单一器件(如Xilinx ZYNQ 系列)。
  3. 基于 GPP + FPGA/SDP 的混合SDR结构。
    • 基于GPP+FPGA/DSP 的混合SDR结构,分为GPP+FPGA、GPP+DSP+FPGA 两种主要架构形式。这种组合结构融合不同器件的优点,取长补短,在功耗要求比较宽松的实验室环境下,能够给开发人员提供一种快速验证各类算法高性能平台。下图给出了这种结构的互联示意图。这种结构一般对异构器件间的数据交换的性能要求较高,不同器件间通信一般会采用PCIe[12] 接口方式(1.25 Gb/s/1x)和串行高速输入输出(SRIO)接口方式(1.5 Gb/s/1x)。PCI Express 主要用于计算机中芯片间、板卡间的数据传输,也有部分嵌入式市场;RapidIO 主要用于嵌入式系统内芯片间、板间数据传输,其目标就是嵌入式系统内的高性能互联。这种混合SDR 结构,性能上可以充分地利用各种器件的优势,但同时也存在着接口设计复杂和能耗大的问题。

3 器件选型

3.1 Lime 家

Lime家的收发二极管 RF Transceiver(他叫field-programmable RF (FPRF) transceivers)一共就3款: v 基于以上的RFT,找到了2个Lime家在售的SDR设备:

  • LimeSDR XTRX
  • LimeSDR Mini 2.0

听名字就是第一个最吊。 v XTRX用了AMD Artix™ 7 XC7A50T-2CPG236I作为FPGA和Lime Microsystems LMS7002M RF transceiver作为frontend。

  • Fairwaves XTRX Rev 5 改良优化而来,并且开源了设计,可以定制化
  • 30×51 mm 紧凑的 Mini PCIe 形式,
  • 可用于从 2 发 2 收(2Tx2R)到 32 发 32 收(32Tx32R)的 多发多收(MIMO)配置
    • Frequency range: 30 MHz – 3.8 GHz
    • Bandwidth: 120 MHz
    • 160MSps@12bit / 240MSps@8 bit per MIMO channel in 2×2 MIMO mode (8Gbit/s total bus bandwidth)
    • Transmit power: max 10 dBm (depending on frequency)
  • 可以与不同类型的数字处理器(如专用集成电路 ASIC、通用处理器 GPP、图形处理单元 GPU)结合使用,根据性能、功耗和成本的不同需求定制任何空中接口。
  • < 10 µs bus latency, stable over time

这里是具体的Documentation。

LimeSDR Mini 2.0就垃圾很多了,不看了。