SDR硬件方案

news/2024/11/7 11:02:56/

以射频硬件为线索,梳理常见SDR(软件无线电)方案。SDR硬件位于天线和数字信号处理之间,负责把无线电信号数字化,交由主机或者嵌入式系统(FPGA、DSP,MCU)处理。SDR硬件一般包含射频和数字两部分

这里的射频指广义的从天线到ADC、DAC这部分,包含了高频/射频,中频IF(如果有),零中频,模拟基带,相关的滤波以及混合信号ADC/DAC。之所以不以数字部分为线索,是因为数字部分的实现方案无外乎以下四种:

  • 基于FPGA(亦可接主机)。典型代表:USRP系列
  • 基于Xilinx Zynq SoC FPGA。典型代表:Xilinx开发板配合Analog Devices的射频板
  • 基于USB单片机/MCU。典型代表:HackRF+portapack(NXP LPC4320),孔雀石Malahit(STM32H7)
  • 基于主机或者SBC/单板计算机。典型代表:rtl-sdr电视棒、SDRPlay/RSP1、AIRSPY、RX888;KiwiSDR (采用BBB BeagleBone做主机),CaribouLite RPi HAT (采用树莓派做主机)

不难看出,数字部分相对成熟且标准化程度高,这离不开芯片制程和计算机产业的高度发达。

反观射频部分,由于包含高频以及模拟信号处理,数模混合电路ADC、DAC,结构复杂,较少受惠于高级数字电路制程的进步,往往成为各种SDR硬件性能的决定性因素。因此本文以射频方案为主线,介绍以下SDR射频方案:

  • PWM射频:无射频的射频
  • AD9361、AD9371、ADRV系列
  • LMS6002D、LMS7002M、LimeSDR系列
  • AT86RF215(Microchip公司支持I/Q采样的zigbee IoT芯片)
  • RFFC5072+MAX2837+MAX5864(HackRF的变频加Maxim WiFi套片)
  • E4000/R820T+RTL2832、rtl-sdr电视棒系列
  • E4000+TLV320ADC3140音频codec(Funcube Dongle)
  • R820T+LPC4370(AIRSPY)
  • MSI001+MSI2500(SDRplay/RSP1)
  • MSI001+STM32H7 (俄罗斯 Malahit 孔雀石收音机)
  • ADL5350+ADF4350 rtl-sdr 2.4GHz变频方案
  • 射频直采(RFSoC、KiwiSDR、RX888、RED PITAYA)
  • 传统业余无线电射频(uSDX)

 

正文开始:

  • PWM射频:无射频的射频

是的,你没看错,“剑法的最高境界,则是手中无剑”。随着数字芯片(FPGA、树莓派、单片机)的I/O速度越来越高,仅靠控制I/O基于PWM(脉宽调制)即可发送射频信号。类似原理,把高速I/O当做高速1bit ADC来用,亦可直接恢复射频信号。

比较早期的可以搜索2007年的这篇“An FPGA Based All-Digital Transmitter with Radio Frequency Output for SoftwareDefined Radio”,利用Xilinx Virtex2pro FPGA上的 MGT(multi-gigabit transceiver)高速引脚实现了800MHz载波,20MHz带宽的64QAM信号发射。临信道泄露比(ACLR)45dB,EVM优于1%。

现在FPGA速度比起2007年快了很多,可以搜索2017年的这篇“Real-time all-digital radio-over-fiber LTE transmission”,利用FPGA上的27.5Gbps的数字I/O配合PWM调制产生了3.44GHz载波上的5MHz LTE信号。

基于类似原理,FPGA的高速I/O口也可以看做是一个高速的1bit ADC,配合FPGA高速PWM输出和比较器,可以实现高速射频ADC。大家可以搜索2021年的这篇“All-digital FPGA receiver: on Intel Stratix 10 TX”。

以上都太高端了?不要怕,只需要很便宜的Lattice MachXO2 FPGA再配合三个电阻一个电容,你也可以在家直接用FPGA直连天线听收音机!大家搜索“FPGA + 3 R + 1 C = MW and SW SDR Receiver”。这个收音机长这个样子:

基于类似原理,人们也开发了利用树莓派的I/O口来发射射频信号的程序。比如发射FM广播,自行搜索“Turn Raspberry Pi into FM transmitter”。比如发射传真图像,自行搜索“Emitting Hellschreiber from a Raspberry Pi GPIO: combining gr-hellschreiber with gr-rpitx”。

  • AD9361、AD9371、ADRV系列

Analog Devices,我们的老朋友了。AD9361、AD9371、ADRV高集成度射频收发器系列广泛用于各种高端仪器、软件无线电、商用无线通信产品中。支持6GHz以下连续覆盖,带宽可达几十M甚至上百M,各项射频性能优异,灵活可配置。

除了高端商用,在广大软件无线电DIY爱好者中也大受欢迎。毕竟,它一颗芯片把那么大一堆从天线到ADC/DAC所必须的所有处理环节全包括了,而且性能没的说。你只需要给他连接天线和基带,自己在家就能DIY一个性能如此强悍的SDR设备,这在以前是很难想象的。

我们的openwifi(开源WiFi芯片设计)目前也只能跑在FPGA + AD9361的平台上,不得不说这颗射频芯片大包大揽、性能优异且全面。

基于Analog Devices高集成度射频收发器的SDR产品不完全列表:

    • USRP B系列
    • USRP E系列
    • USRP N3xx系列
    • Analog Devices FMCOMMS系列射频板
    • Analog Devices SoM模块 ADRV9361-Z7035,ADRV9364-Z7020
    • PlutoSDR
    • BladeRF二代
    • EPIQ Sidekiq系列
    • 国产 gridrf NH7020
    • 国产 MicroPhase 微相 系列
    • 国产 SDRPI
    • 国产 Pluto plus
    • 国产 Pluto Zynq7020增强版(LibreSDR)
    • 国产 PYNQSDR PYNQ-Z1 + AD936X SDR
    • 国产 Neptune SDR (B站 薛定谔的猫power)
    • 国产 类AD9361芯片
    • 等等

 

LMS6002D、LMS7002M、LimeSDR系列

Lime microsystems是一家英国公司,LMS系列是对标Analog Devices的AD93xx系列芯片。许多人熟知的LimeSDR系列设备即是基于LMS7002M。BladeRF第一代是基于LMS6002D(第二代转投AD9361了)。

LMS系列射频芯片几乎是市场上可公开购买到的AD9361唯一竞品,所以它存在的意义巨大。AD9361系列只是庞大的Analog Devices产品线和营收中的一小部分,而LMS射频芯片就是Lime microsystems公司的全部身家。

根据Lime microsystems公司官网,变频器LMS8001+已经支持到12GHz和120MHz带宽,LMS9000将会支持到100GHz和>2GHz带宽。

期待Lime microsystems公司越来越好!

  • AT86RF215(Microchip公司支持I/Q采样的Zigbee IoT芯片)

这是Microchip公司(就是出ATMEL单片机那家)的一款IoT芯片,支持sub 1GHz和2.4GHz的Zigbee标准,FSK、OFDM、O-QPSK。

它之所以出现在SDR射频方案里,是因为它在标准协议处理之外,也提供了ADC/DAC的IQ采样接口,因此也可以作为通用SDR射频芯片。支持射频带宽2.5MHz和采样率4MHz。

iotSDR采用了AT86RF215 + Zynq 7010的方案,可以看做是把PlutoSDR里的AD9363替换为了更低端的面向IoT的射频前端。

CaribouLite RPi HAT则是把AT86RF215做成了树莓派扩展板的思路,可以直接插在树莓派的IO插座上,构成完整系统

  • RFFC5072+MAX2837+MAX5864(HackRF的变频加Maxim WiFi套片)

这是HackRF的射频方案。它实际上是Maxim公司(已被Analog Devices收购)的WiFi射频方案前面加上一个Qorvo的混频器RFFC5072。它将6GHz范围内的目标频率变频到2.4GHz之后,由成熟的2.4GHz WiFi射频套片(MAX2837+MAX5864)接手。

 大家也可以上Maxim Integrated公司网站搜索类似的WiFi射频套片方案。使我惊奇的是,这样的射频和ADC/DAC分开的WiFi套片方案,比起当今的许多WiFi芯片指标并不高(或者可以说弱),而且板子面积还大,但仍旧是持续生产的状态,可谓是十分良心了。但,主要客户群是谁呢?

  • E4000/R820T+RTL2832、rtl-sdr电视棒系列

rtl-sdr即大名鼎鼎的电视棒。频率覆盖到1.7GHz左右,采样率和带宽最大约3.2MHz。电视棒由调谐器芯片(E4000或R820T,频率范围略有不同)和带有ADC、DVB-T解码器、USB的数字芯片RTL2832U构成(含8051单片机)。调谐器芯片又叫tuner。用过古老电视机的都知道,就是你拧动一个旋钮,就把电视调谐到不同的频率上,调谐器tuner的名字由此而来。

对于软件无线电应用来说,数字芯片里的DVB-T解码器是多余的。这里3.2MHz的带宽/采样率主要受制于RTL2832U数字芯片,毕竟它不是为串流I/Q采样到主机这种SDR应用而设计,怀疑是因为固件上的USB性能有一定瓶颈或内部数字中频架构限制。调谐器tuner芯片R820T并不是带宽限制因素,因为通常一个电视频道为8MHz,为了看电视必须有接收8MHz带宽信号的能力。

由于电视棒极其低廉的价格,群众基础十分庞大,资料也非常多,这里不再用过多篇幅介绍。主要介绍下面几种基于电视棒方案/芯片的各种SDR衍生设备。

  • E4000+TLV320ADC3140音频codec(Funcube Dongle)

既然常规电视棒里的DVB-T解码器在软件无线电里并不需要,那么可不可以只用那颗调谐芯片配合更简单的数字芯片来打造一款专门的SDR dongle呢?

Funcube Dongle就是采用这种设计。它使用TI的一颗双声道音频codec充当E4000输出的零中频基带I/Q信号的ADC,然后用Microchip公司的PIC24F USB单片机连接到主机。受限于音频codec ADC采样率,它的最大射频带宽约80KHz。

可能由于E4000这个tuner芯片太老了,据说新版的FUNcube Dongle Pro+已经换用MSI001 tuner芯片。参见后面的“MSI001+MSI2500”章节。

  • R820T+LPC4370(AIRSPY)

既然rtl-sdr电视棒的采样率/带宽主要受限于数字部分的RTL2832U,而不是调谐器tuner E4000/R820T,那么将数字部分替换为专门的ADC和USB芯片不就完全解锁了tuner的能力?的确,AIRSPY这个SDR设备就是这么做的。

 

可以看到,它在tuner之后直接接了一个带有80Msps高速ADC的NXP的单片机LPC4370,因此它直接可以支持到大约10MHz带宽(这时就受限于tuner芯片了,单片机80Msps采样率已完全超出tuner芯片带宽范围)。

  • MSI001+MSI2500(SDRplay/RSP1)

这是另一种电视棒套片。MSI001是tuner芯片,MSI2500是含ADC、USB等的数字芯片。神奇的是,这个MSI2500数字芯片并不包含电视解调解码器!(还记得rtl-sdr里的数字芯片RTL2832U里是包含了我们并不需要的电视解码器么?)

在MSI的电视棒方案里,电视信号解调解码完全是在主机端用软件做的,也就是这个电视棒本身就是个纯SDR方案。这也意味着这套SDR方案可提供的带宽必然超过8MHz,因为要在主机端软解码电视信号,必然意味着需要将一个电视频道的8MHz带宽I/Q全部实时采集到主机供软解码程序使用。实际上它最大可提供大约10MHz的带宽能力,频率覆盖到约2GHz。


http://www.ppmy.cn/news/1027905.html

相关文章

PGO- 为什么在编译流水线的早期阶段注入profile信息会降低其准确性和匹配度

Profile-Guided Optimization (PGO) 或反馈驱动优化使用运行时收集的性能分析数据来指导编译器优化。 问题:为什么在编译流水线的早期阶段注入profile信息会降低其准确性和匹配度。 理由如下: 中间代码变换:在编译过程中,源代码首…

面试攻略,Java 基础面试 100 问(十一)

抽象类(abstract class)和接口(interface)有什么异同? 抽象类和接口都不能够实例化,但可以定义抽象类和接口类型的引用。一个类如果继承了某个抽象类或者实现了某个接口都需要对其中的抽象方法全部进行实现&#xff…

【rust/egui】(一)从编译运行template开始

说在前面 rust新手,egui没啥找到啥教程,这里自己记录下学习过程环境:windows11 22H2rust版本:rustc 1.71.1egui版本:rust windows安装参考:这里本文默认读者已安装相关环境(git、vscode等) 关于egui egui …

最新版高效多元化广告联盟系统源码,实时监控移动广告联盟,支持多种广告效果

诚丰广告联盟系统是一款强大的广告联盟解决方案,旨在提高网站在百度搜索引擎中的排名和可见性。我们的系统具有以下特点: 1. 高负载能力:我们的服务器每天能够承载至少200万个PV流量,保证您的网站能够稳定运行,并提供…

SpingBoot-Vue前后端——实现CRUD

目录​​​​​​​ 一、实例需求 ⚽ 二、代码实现 🏌 数据库 👀 后端实现 📫 前端实现 🌱 三、源码下载 👋 一、实例需求 ⚽ 实现一个简单的CRUD,包含前后端交互。 二、代码实现 🏌 数…

单链表(C语言版)

单链表:理解、实现与应用 单链表(Singly Linked List)是一种常见的数据结构,用于存储一系列具有相同类型的元素,并通过节点之间的链接建立起它们的关系。每个节点包含一个数据元素和一个指向下一个节点的指针。相比于…

大型企业或者组织,组建专属的虚拟局域网,深入理解相关的配置和搭建使用、网络加速和网络优化,可夸地区夸国际使用,深入搞懂每项配置的作用和含义

大型企业或者组织,组建专属的虚拟局域网,深入理解相关的配置和搭建使用、网络加速和网络优化,可夸地区夸国际使用,深入搞懂每项配置的作用和含义。 1、openxxx介绍与图解 1.1 openxxx介绍 openxxx 是一个基于 OpenSSL库的应用层 虚拟局域网 实现。和传统 虚拟局域网 相…

什么是管程?

前言 在并发编程领域,最核心的两个理念就是同步和互斥,并发编程就是围绕这两个核心概念来完成的。 互斥:同一时刻只能有一个线程持有共享资源同步:多个线程之间协调、互作 在最初,人们利用信号量机制来实现互斥和同步…