SDR技术原理解析

2016/12/03

  本博客通俗地介绍SDR的技术原理。先简单介绍SDR的概念,SDR系统的分类,基于GPP的SDR系统。接着详细介绍SDR系统原理,最后再以SDR LTE系统为例进一步解析SDR系统的工作流程。

一 软件无线电(SDR)概念

  软件无线电,即Software Defined Radio,SDR。通俗来讲,SDR就是基于通用的硬件平台上用软件来实现各种通信模块。

  概念中有两个关键词,“通用硬件平台”和“软件”。“通用硬件平台”就是说我们能基于这个硬件平台实现各种各样的通信功能,而不是说一个硬件平台只能实现一种通信功能。“软件”来实现通信模块是相对于传统的无线电技术来讲的,传统的无线电通信模块都是用硬件电路来设计,一个通信电路只能完成一种通信功能,开发周期长,开发成本高,而且一旦设计好后功能就无法改变。软件化可以加快通信模块的开发速度,降低开发成本,便于调试和维护。

  我们可以用图1来简单看看软件无线电基站与传统的无线电基站的区别。图片左边的是传统的大基站,图片右边的是基于软件无线电的小型化基站。传统的商用基站体积较大,需要设计很多专用的硬件电路;而SDR基站体积较小,大部分通信功能由软件实现。

图1 商用基站与SDR基站

  SDR技术被誉为通信领域的第三次革命。第一次革命是1G通信系统,由有线通信到无线通信的革命;第二次革命是2G通信系统,由模拟通信到数字通信的革命。SDR是未来通信系统的发展趋势。

二 SDR系统分类

  比较通用的SDR系统分类是以SDR的硬件平台来分类。SDR系统分为三类:基于FPGA的SDR系统,基于DSP的是SDR系统和基于GPP的SDR系统。

2.1 FPGA-BasedSDR系统

  基于FPGA平台开发的SDR系统,实时处理能力强,但是开发难度大,开发成本也高。这里强调一下在SDR系统中对实时处理能力要求很高,我们以LTE系统为例,LTE系统的子帧长1ms,也就是说我们的SDR系统必须在1ms内把这一子帧的数据全部处理完并发送出去,不能有任何时延。通信系统带宽越大,吞吐率越高,对系统的实时性要求就越高。

2.2 DSP-BasedSDR系统

  基于DSP平台开发的SDR系统,实时性比FPGA略差,而且同样的开发难度大,开发成本也高。

2.3 GPP-BasedSDR系统

  GPP即General Purpose Processor,通用处理器。我们可以简单的把GPP理解为电脑,即我们使用的台式机、笔记本等。基于GPP能很高效地开发各种通信模块、通信系统,因为我们可以很方便的基于各种高级编程语言、各种链接库实现各种通信功能,如编码、调制等。而且,基于GPP的SDR系统开发相比其他两种具有较低的开发门槛,较低的开发成本,开发周期也较短、便于调试等。GPP-Based SDR系统是目前最为通用的一种SDR系统实现形式。

GPP-based SDR系统通常包含两部分,一部分是GPP,另一部分是外设。下一个章节我们将介绍SDR外设的种类。

三 SDR系统外设

  如图2所示,SDR基站/UE都各自包含一个GPP和一个外设。GPP即我们平常所用的台式机或笔记本电脑。SDR的外设有很多种类,如USRP,bladeRF,HackRF,以及低端的RTLSDR等。下面我们分别介绍各种外设的相关信息。

图2 SDR通信系统

3.1 USRP

  USRP是Ettus公司的产品,目前主要有B系列,E系列,N系列和X系列等,基本上系列字母越靠后价格越贵。由于USRP型号太多,我们以B系列为例来介绍USRP。 B系列主打小型化,目前有USRP B200/B210、USRP mini系列等,其中迷你系列更是只有一张名片大小。而且B系列都采用USB3.0接口与GPP通信,而且直接采用USB供电,使用非常便捷。USRP B系列的产品大部分单价都在7000-8000块之间,但是如果加上税钱、运费等,差不多就得10000块了。国内代理USRP相关的主要是嘉兆科技有限公司。USRP相关产品的介绍请链接官网https://www.ettus.com/product

图3 USRP设备

3.2 BladeRF

  BladeRF主要有三种型号,BladeRF X40,BladeRF X115, BladeRF X115 Thermal。BladeRF X40 是低配版,就是我们手机里面的青春版,大概约$420,即3000块左右;BladeRF X115是高配版,FPGA比BladeRF X40好,价格约$650,即4500块左右;而BladeRF X115 Thermal则是顶配版,可以耐受极端环境,价格约$1500,即10000块左右。BladeRF的详细信息请查阅官网http://www.nuand.com/

图4 BladeRF设备

3.3 HackRF

  HackRF,顾名思义是黑客版的SDR外设,它主打性价比高,价格便宜。HackRF主要有两种版本,HackRF blue和HackRF one,其中HackRF blue是低配版,HackRF是高配版。注意的是HackRF只能支持半双工。HackRF详细的信息请查阅官网http://greatscottgadgets.com/hackrf/

图5 HackRF设备

  在国外网站上找到一篇介绍上述SDR外设的区别的博客,http://www.taylorkillian.com/2013/08/sdr-showdown-hackrf-vs-bladerf-vs-usrp.html

访问可能需要翻墙,有空我给大家翻译翻译。现在先给大家预览一下里面的一个表格。

3.4 RTLSDR

  如果说上述设备对学生党来说都太贵了,毕竟动不动就好几千块钱,那么不得不隆重介绍下入门级的SDR外设,RTLSDR。淘宝一搜RTLSDR就能出来一大堆,而且都只需要几十块钱,博主目前就买了一个,正在研究怎么使用。便宜就意味着性能的低,RTLSDR本来是用来接收电视信号的,所以也称为电视棒。RTLSDR只能接收信号,不能发射信号,而且只有2.8M/s的采样速率,根据奈奎斯特采样定律换算一下理论上最大支持的带宽只有1.4M。但这仍然是一款非常适合用来入门的SDR外设。RTLSDR具体使用方法参见http://sdr.osmocom.org/trac/wiki/rtl-sdr和http://www.rtl-sdr.com/。

图6 RTLSDR设备

四 SDR系统原理

  下面正式开始讲解SDR的系统原理。在上面的介绍中我们知道GPP-Based SDR系统一般都是包含一个GPP和一个外设。我们以一台笔记本电脑连接一个USRP B200为例来给大家讲解SDR系统内部的实现原理。

4.1 发射机

  首先我们来看发射端的系统原理图,即图7。图的左边是一台笔记本的示意图,右边的一个USRP B200的发射示意图。

  首先看笔记本结构最上面的SDR程序。这个程序就是我们用软件来实现的通信模块,在笔记本上我们可以用各种高级编程语言来编写各种通信模块,例如Turbo编码模块,OFDM模块等。鉴于SDR系统对实时性要求较高,所以我们一般使用C或C++语言来编写SDR程序。SDR程序里面包含了通信系统完整的协议栈,如果我们写的是LTE系统,则包含PHY、MAC、RLC、PDCP、RRC、NAS甚至MME等;而如果我们的是WiFi系统,则包含PHY、MAC、LLC等。SDR程序的主要功能是处理系统的基带数据。

  接下来UHD是USRP设备的驱动模块,不同的外设使用的驱动也不一样,因为我们是以USRPB200为例,所以驱动模块是UHD。UHD驱动的安装方式可以参见http://blog.csdn.net/jxwxg/article/details/53002311使用C或者C++调用UHD的库函数可以参见http://blog.csdn.net/jxwxg/article/details/53142911。

  接下来是系统的各种系统库和系统调用的接口以及内核。强调一点,大部分SDR程序都是基于Linux来开发的,很少基于Windows开发。因为Linux系统开源,而且实时性较好。这一块主要涉及操作系统方面的知识,我们不在这里深入讨论。

  USRP B200与GPP的接口是USB3.0。外设接口的选择也很重要,接口的传输速率必须快,不能成为整个系统的瓶颈。USRP早期的产品的都是用的USB2.0接口,因为当时通信系统的吞吐量较小,所以不会限制使用。现在大部分外设都是用USB3.0或者以太网网口作为外设接口。USB3.0的接口速度可以达到500MBps,基本能满足大部分通信系统的需求。

  接着笔记本电脑通过USB3.0把数据传输给USRP B200。USRP最底下的两个模块是发送控制模块和数字上变频模块(DUC)。这两个模块是用FPGA里面实现的,用FPGA实现的好处是处理速度快。发送控制模块好理解就是用来控制整个USRP的发送行为,例如什么时候发送等。DUC模块是为了把电脑产生的基带数据上变频到中频。之后数字信号经过USRP的DAC之后转化为模拟域的数据,数模转化之后需要过一个低通滤波器使信号变的更加平滑。最后中频的模拟域数据在于晶振产生的信号相乘把我们的中频信号调制到制定的射频频点上。

  最后射频信号再经过功率放大器把信号发射出去。信号放大器里面也有很多知识可以学习。例如信号放大器分为A类,B类和C类等,具体每一类的特征本文就不具体解释了。我们可以通过UHD提供的库函数来修改发射信号的发射增益,即tx_gain。tx_gain这个参数对信号的影响还是挺大的,tx_gain设置的太小导致信号功率太小,而如果设置的过大可能会导致系统的低噪上升,也有可能会影响其他通信系统的正常工作。

图7 SDR发射机原理图

4.2 接收机

  可能有人会问为什么要经过两次变频。我们以SDR接收机给大家讲解。如图8所示是SDR接收机的原理图。同样的,左边是笔记本的示意图,与发射机的一样;右边是USRP的接收示意图,USRP接收示意图与发射示意图稍有不同。

  首先接收部分的放大器变成了低噪放,顾名思义,低噪放就是低噪声的放大器,本质上还是个放大器。因为接收的信号里面包含了信道的噪声,接收机不能把噪声放的过大。

  信号经过低噪放后与USRP晶振产生的信号相乘把信号下变频到中频,同样地再经过一个低通滤波器把信号变得平滑。

  之后中频信号经过ADC把模拟域的信号转到数据域。ADC是USRP里面很重要的一个部件。ADC主要由两个参数,采样精度和采样率。采样精度表示采样后的信号用多少bit来表示,例如USRP B200的ADC精度为12 bits,即采样后的每一个数据用12bits来表示。采样率就是系统的采样速率,USRP B200的采样速率为61.44MS/s。这也就是为什么大部分SDRLTE系统都采用USRP B系列作为外设的原因,61.44MS/s的采样率刚好是LTE系统最大采样速率30.72M的两倍。

  同样地信号经过ADC之后,数字信号被送入FPGA模块处理。FPGA里面包含两个模块,数字下变频和接收控制。接收控制用来控制整个USRP系统的接收流程,例如什么时候开始接受等。数字下变频即DDC,用于把信号从中频下变频到基带。

图8 SDR接收机原理图

  为什么要经过两次下变频呢?如图9所示,第一次变频是在模拟域通过晶振产生的信号与射频信号相乘把信号下变频到中频,这一次变频主要是为了后面做AD采样。我们知道采样需要满足奈奎斯特采样定律,采样的频率必须大于信号的最高频率的2倍,而射频信号的载波频率已经能都达到2.6GHz,甚至5GHz,根本无法做出载波频率两倍的采样速率的ADC。所以系统先把信号下变频到中频,然后再利用ADC对信号进行模数转化。因为USRP ADC的采样率为61.44MS/s,所以我们可以推出USRP对应的中频频率应该低于30.72MHz。

  接着中频的数字信号被DDC下变频到基带。有人可能会问为什么不直接把信号一次变频到基带呢,这样的接收机叫做零中频接收机。如果载波频率高了,零中频的接收机设计会非常复杂,所以零中频接收机一般用于载波频率较低的系统里面。

图9 下变频原理示意图

  数字信号经过USB3.0接口传输到笔记本电脑上后,电脑再把数据传输给SDR程序处理。物理层处理完后再把数据交给上层。这样SDR接收机的信号接收过程便完成了。

SDR发射机/接收机里面的每一个模块都对应一大片知识,知识的海洋是无穷的,这里的介绍只能起一个抛砖引玉的作用。如果大家想深入学习的话,还得要多查阅资料。

五 SDR LTE系统

  上一章节从SDR发射机和接收机的角度分别介绍SDR系统的原理。下面我们以SDR LTE系统为例给大家介绍一个SDR系统的例子,有助于大家理解实际项目的中SDR通信系统。

  目前国际上已经有好几个开源的SDR LTE系统,如OpenAirInterface,srsLTE,OpenLTE等,详情可以查看http://blog.csdn.net/jxwxg/article/details/53026659。开源的SDR LTE系统非常适合用来学习SDR和LTE的原理和知识。

  下面以图10来介绍SDR LTE系统的工作流程。

  首先LTE的上层有数据需要物理层发送,比如我们要发送一个经典的字符串”Hello World”,上层把数据编码成Bit流自后交给物理层。上层可能采用的ASCII编码,把Hello World编码成对应的Bit流。即物理层收到的是一连串的100110等。

  Bit流传到物理层后开始进行编码,LTE采用的是1/3 码率的Turbo编码,再经过加扰,加扰可以理解为将Bit流随机化,避免出现一大串连续的0或者1。此外,在发送端用小区专用扰码序列进行加扰,接收端再进行解扰,只有本小区内的UE才能根据本小区的ID形成的小区专用扰码序列对接收到得本小区内的信息进行解扰,这样可以在一定程度上减小临小区间的干扰。

  接着Bit流经过调制模块后被调制成复数。LTE里面采用的是QPSK,16QAM和64QAM等调制方式,出来的数据形式如0.707+0.707j。

  接着复数进行资源映射,把复数映射到LTE的时频资源上,最后再对这些信号进行OFDM把信号转换到时域。此时,SDR程序的工作便完成了,生成了LTE系统的基带数据。

  紧接着,GPP把基带数据通过USB3.0接口把数据传输给USRP,由USRP经过上一章讲述的流程把基带信号上变频到射频并发送出去。

图10 SDR LTE系统原理

  LTE接收机的过程基本与发射机相反。

  USRP把接收到的射频信号下变频到基带后通过USB3.0接口传输给SDR程序。SDR程序把接收到的一连串复数先做OFDM解调,接着信道估计/均衡。此时的数据仍然是复数形式的。经过软解调之后数据变成Bit流,最后再进行解扰,解码恢复出”Hello World”的ASCII码,传输给UE的上层后,UE识别出有人给它发送了一串信息,即”Hello World”。

  至此,通信的过程完成。

六 参考文献

我的SDR方面的 SCI 论文

X. Wei; H. Liu; Z. Geng; K. Zheng; R. Xu; Y. Liu; P. Chen, "Software Defined Radio Implementation of a Non-Orthogonal Multiple Access System towards 5G," in IEEE Access , vol.PP, no.99, pp.1-1

我的博士师兄带我飞的论文

X. Xiong, W. Xiang, K. Zheng, H. Shen and X. Wei, "An opensource SDR-based NOMA system for 5G networks," in IEEE WirelessCommunications, vol. 22, no. 6, pp. 24-32, December 2015.

软件无线电原理深入解析相关推荐

  1. 路由及路由器工作原理深入解析3:路由与port

        日志"路由及路由器工作原理深入解析1"http://user.qzone.qq.com/2756567163/blog/1438322342介绍了"为什么要使用路 ...

  2. js 数组 实现 完全树_JavaScript的工作原理:解析、抽象语法树(AST)+ 提升编译速度5个技巧

    摘要: JS的"编译原理". 原文:JavaScript的工作原理:解析.抽象语法树(AST)+ 提升编译速度5个技巧 作者:前端小智 Fundebug经授权转载,版权归原作者所有 ...

  3. php 模板解析,关于模板的原理和解析

    PHP – 关于模板的原理和解析 将PHP代码和静态HTML代码进行分离,使代码的可读性和维护性得到显著提高. 使用模板引擎: 我们所说的模板是web模板,是主要由HTML标记组成的语言来编写的语言, ...

  4. DNS原理及其解析过程 精彩剖析

    DNS原理及其解析过程 精彩剖析 网络通讯大部分是基于TCP/IP的,而TCP/IP是基于IP地址的,所以计算机在网络上进行通讯时只能识别如"202.96.134.133"之类的I ...

  5. python解析器原理_Python程序运行原理图文解析

    本文研究的主要是Python程序运行原理,具体介绍如下. 编译型语言(C语言为例) 动态型语言 一个程序是如何运行起来的?比如下面的代码 #othermodule.py def add(a, b): ...

  6. mysql哨兵机制_Redis 哨兵机制以及底层原理深入解析,这次终于搞清楚了

    前面我们基于实际案例搭建了缓存高可用方案(分布式缓存高可用方案,我们都是这么干的)同时提到了redis主从架构下是如何保证高可用的,讲到了它是通过redis sentinel的机制来实现的. 今天我们 ...

  7. bobsmith电路阻抗原理_串联谐振原理全解析 - 赫兹电力

    串联谐振赫兹电力为您导读:串联谐振原理全解析,串联谐振交流耐压试验在发电机绝缘试验中占据至关重要的地位,今天我们就来系统学习一下如何谐振及其原理解析吧. 谐振基础知识 谐振电路是在具有电阻R.电感L. ...

  8. oracle INS-40930,Oracle 并行原理深入解析及案例精粹

    Oracle 并行原理深入解析及案例精粹 [日期:2012-08-12] 来源:Linux社区 作者:Leonarding [字体:大 中 小] (12)sqlload直接加载对索引的影响 所谓对索引 ...

  9. Android-skin-support 换肤原理全面解析

    一.背景 公司业务上需要用到换肤.为了不重复造轮子,并且快速实现需求,并且求稳,,于是到Github上找了一个star数比较多的换肤框架-Android-skin-support(一款用心去做的And ...

  10. DNS的工作原理及解析

    DNS的工作原理及解析 一.什么是DNS? DNS( Domain Name System)是"域名系统"的英文缩写,是一种组织成域层次结构的计算机和网络服务命名系统,它用于TCP ...

最新文章

  1. xshell / xftp家庭/学校免费版官网下载地址
  2. Java 洛谷 P1534 不高兴的津津(升级版)
  3. 阿里云华北区挂了。。。
  4. 湖南大学计算机考研考什么,2017年湖南大学计算机系统考研大纲
  5. C++11学习笔记-----获取异步操作执行结果
  6. 织梦php重新安装教程,织梦CMS系统后台重装的操作教程
  7. QML工作笔记-文本输入设置长度以及回显方式(TextInput与TextField通用)
  8. Android Studio数据库增删改查。
  9. [实用技巧]如何关闭VS中烦人的reference提示
  10. exls表格搜索快捷键_excel表格里搜索快捷键是什么,excel的搜索快捷键是什么?...
  11. Autojs之QQ 群发消息(是QQ 群发,不是QQ群 发)
  12. (原创)虚拟机下Ubuntu共享主机文件(Ubuntu、VMware、共享)
  13. 肇庆PCR实验室建设消毒事项汇总
  14. STM32 USB DFU功能
  15. socket.io实现聊天功能——第一章 、群聊
  16. 我的面试心得与总结:BAT、网易、蘑菇街
  17. 利器解读:Linux 内核调测中最最让开发者头疼的 bug 有解了|龙蜥技术
  18. luogu 2698 [USACO12MAR]花盆Flowerpot 单调队列
  19. 用python生成个性二维码
  20. 来一份Android动画全家桶(下篇)

热门文章

  1. Logistic模型
  2. Centos 搭建 FastFDS 分布式文件存储系统
  3. 800*480bmp图片显示
  4. 「斑愿称为最肝」小狮子前端知识食谱 / 生日之际,好运分享 / 秋招和你手摸手入大厂【史上最全指北】 | CSDN技术征文
  5. android获取系统剪贴板内容,android系统如何如何恢复剪贴板内容
  6. 报童问题详细推导及利用Python的SAA方法求解
  7. 阿里资深技术专家:35岁IT职场人的8个经验总结!
  8. ha rose server安装 sql_Rose HA for SQL2008的安装之一
  9. 2020 cr节目源_2020最新直播源
  10. 凤凰系统运行linux,凤凰系统率先升级内核到Linux4.9,支持更多新硬件