SDR硬件方案

news2025/4/3 16:21:15

以射频硬件为线索,梳理常见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.coloradmin.cn/o/869783.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python Opencv实践 - 图像缩放

import cv2 as cv import numpy as np import matplotlib.pyplot as pltimg_cat cv.imread("../SampleImages/cat.jpg", cv.IMREAD_COLOR) plt.imshow(img_cat[:,:,::-1])#图像绝对尺寸缩放 #cv.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]]) #指定Size大…

18.3.0:Dynamic Web TWAIN Crack Web 文档扫描 SDK

Dynamic Web TWAIN用于快速部署 Web 应用程序的文档扫描 SDK,文档扫描SDK,,超过 5300 家公司信任 Dynamic Web TWAIN ,因其稳健性和安全性而受到超过 5300 家公司的信赖,Dynamic Web TWAIN 是一款基于浏览器的文档扫描…

微信开发之一键获取标签好友的技术实现

简要描述: 获取标签列表 请求URL: http://域名地址/getContactLabelList 请求方式: POST 请求头Headers: Content-Type:application/jsonAuthorization:login接口返回 参数: 参数名必选…

qtrvsim 使用

qtrvsim 使用 介绍 Qtrvsim 是一个基于 WebAssembly(基于非 js 语言并使得其可以在浏览器中运行)的图形化 RISC-V 微处理器模拟器,给初学者提供了一个实现 RISC-V 架构的渠道。 Developed by the Computer Architectures Education project…

5.2 互联网通信安全

数据参考:CISP官方 目录 一、什么是互联网通信安全二、为什么要关注互联网通信安全三、电子邮件应用安全四、即时通讯应用安全 一、什么是互联网通信安全 1、互联网通信应用的概念 通信的进化史 互联网通信技术(OSI七层模型) 互联网应…

【第二阶段】kotlin的lambda学习

匿名函数lambdm表达式 1.两数相加 fun main() {//匿名函数lambda表达式//两数相加 等价:val addResult:(Int,Int)->String{a,b->"两数相加结果:${ab}"}val addResult{a:Int,b:Int->"两数相加结果${ab}"}println(addResul…

解码Transformer:自注意力机制与编解码器机制详述与代码实现

目录 一、 Transformer的出现背景1.1 技术挑战与先前解决方案的局限性RNN和LSTM卷积神经网络(CNN)在序列处理中的尝试 1.2 自注意力机制的兴起1.3 Transformer的革命性影响 二、自注意力机制2.1 概念和工作原理元素的权重计算加权求和自注意力与传统注意…

没有上司的舞会(树形dp)

思路: (1)每个人有一个开心值,并且人物关系呈树形分布。 (2)我们所求为根部人物及其下属的总开心值,显然存在某种递归关系;注意到要求是不能直系父子同时出现,于是考虑…

数据分析 | 为什么Bagging算法的效果优于单个评估器

1. 回归问题如何降低方差 以随机森林为例,假设随机森林中含有n个弱评估器,由于子样本集的相似性以及使用的是同种模型,因此各模型有近似相等的方差和偏差,因此假设任意弱评估器上输出结果为,方差均为,则随机森林的输出…

PyTorch翻译官网教程-NLP FROM SCRATCH: CLASSIFYING NAMES WITH A CHARACTER-LEVEL RNN

官网链接 NLP From Scratch: Classifying Names with a Character-Level RNN — PyTorch Tutorials 2.0.1cu117 documentation 使用CHARACTER-LEVEL RNN 对名字分类 我们将建立和训练一个基本的字符级递归神经网络(RNN)来分类单词。本教程以及另外两个“from scratch”的自然…

Selenium图片滑块验证码

因为种种原因没能实现愿景的目标,在这里记录一下中间结果,也算是一个收场吧。这篇文章主要是用selenium解决滑块验证码的个别案列。 思路: 用selenium打开浏览器指定网站 将残缺块图片和背景图片下载到本地 对比两张图片的相似地方&#…

openocd调试esp32(通过FT232H)

之前在学习ESP32,其中有一部分课程是学习openocd通过JTAG调试程序的,因为我用的是ESP32-wroom,usb端口没有集成对应的usb转jtag的ft232,查了ESP32相关的资料(JTAG 调试 - ESP32 - — ESP-IDF 编程指南 latest 文档 (es…

【yolov系列:小白yolov7跑数据集建立环境】

首先在github上面获取别人的源码 这个是github的源码包,直接下载解压使用 打开解压后的文件夹应该可以看到这个页面。 进入文件夹的requirements.txt的页面 这篇文章是为了记录自己的环境配置过程,当作笔记使用来看,目前网上各种安装教程都…

微信小程序中键盘弹起输入框自动跳到键盘上方处理

效果展示 键盘未弹起时 键盘弹起后: 实现方式 话就不多说了 我直接贴代码了 原理就是用你点击的输入框的底部 距离顶部的位置 减去屏幕高度除以2,然后设成负值,再将这个值给到最外层相对定位的盒子的top属性,这样就不会出现顶…

linux文件I/O之 fcntl() 函数用法:设置文件的 flags、设置文件锁(记录锁)

头文件和函数声明 #include <unistd.h> #include <fcntl.h> int fcntl(int fd, int cmd, ... /* arg */ ); 函数功能 获取、设置已打开文件的属性 返回值 成功时返回根据 cmd 传递的命令类型的执行结&#xff0c;失败时返回 -1&#xff0c;并设置 errno 为相…

山西电力市场日前价格预测【2023-08-12】

日前价格预测 预测明日&#xff08;2023-08-12&#xff09;山西电力市场全天平均日前电价为330.52元/MWh。其中&#xff0c;最高日前电价为387.00元/MWh&#xff0c;预计出现在19: 45。最低日前电价为278.05元/MWh&#xff0c;预计出现在13: 00。 价差方向预测 1&#xff1a; 实…

【Bert101】最先进的 NLP 模型解释【02/4】

0 什么是伯特&#xff1f; BERT是来自【Bidirectional Encoder Representations from Transformers】变压器的双向编码器表示的缩写&#xff0c;是用于自然语言处理的机器学习&#xff08;ML&#xff09;模型。它由Google AI Language的研究人员于2018年开发&#xff0c;可作为…

最强自动化测试框架Playwright(9)- 下载文件

对于页面下载的每个附件&#xff0c;都会发出 page.on&#xff08;“download”&#xff09; 事件。 下载开始后&#xff0c;将发出下载事件。下载完成后&#xff0c;下载路径将变为可用 所有这些附件都下载到一个临时文件夹中。可以使用事件中的下载对象获取下载 URL、文件系…

BClinux8.6 制作openssh9.2p2 rpm升级包和升级实战

一、背景说明 BClinux8.6 安装的openssh 版本为9.3p1&#xff0c;经绿盟扫描&#xff0c;存在高危漏洞&#xff0c;需要升级到最新。 OpenSSH 命令注入漏洞(CVE-2020-15778) OpenSSH 安全漏洞(CVE-2023-38408) 目前官网只提供编译安装包&#xff0c;而BClinux8.6 为rpm方…

上市公司绿色发展专题:重污染行业企业名单与绿色创新数据

数据简介&#xff1a;上市公司&#xff0c;尤其是重污染行业上市公司实现绿色发展&#xff0c;广泛开展绿色创新&#xff0c;是我国高质量发展的必然要求&#xff0c;受到了来自学界与各级ZF的诸多关注。现有研究中对上市公司绿色发展问题的研究发现&#xff0c;重污染行业上市…