3.4、RTLSDR

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

四、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,用于把信号从中频下变频到基带。

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

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

数字信号经过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经过上一章讲述的流程把基带信号上变频到射频并发送出去。

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

SDR对比,以及工作原理介绍相关推荐

  1. Express中间件工作原理介绍

    Express中间件工作原理介绍 中间件是Express框架学习中最难的部分,同时也是最为核心的技术,我们的学习路线如下 1.什么是中间件 2.Express中间件的本质及工作原理 3.自定义解析po ...

  2. 时间同步装置(卫星时钟同步)工作原理介绍

    时间同步装置(卫星时钟同步)工作原理介绍 时间同步装置(卫星时钟同步)工作原理介绍 微软从Windows2000开始,系统就支持使用NTP同步的方式获取时间,Windows系统默认的时间源都来自tim ...

  3. 【原理】#01红外热成像仪的工作原理介绍

    红外热成像仪是电测中比较特殊的一种仪器设备,在温度测试领域有着广泛的应用. 红外热成像仪测温的原理是怎么样的?如何选择合适的热成像仪? 安泰小课堂将分两期视频为大家进行揭秘. 本期内容将重点讲解红外热 ...

  4. 石英加速度计工作原理介绍

    石英加速度计工作原理介绍 加速度是一种用来反映物体在运动过程中的速度变化状态的物理量,其无法直接测量,当前的加速度传感器(加速度计)采用间接测量以及力的平衡等技术来获取物体的加速度.加速度传感器的工作 ...

  5. 三维电子罗盘的工作原理介绍

    三维电子罗盘的工作原理介绍 三维电子罗盘工作原理介绍 是由三维电子罗盘由三维磁阻传感器.双轴倾角传感器和MCU构成.三维磁阻传感器用来测量地球磁场,倾角传感器是在磁力仪非水平状态时进行补偿:MCU处理 ...

  6. cache相关概念及工作原理介绍

    cache相关概念及工作原理介绍 笔者这篇文章主要从使用者的角度介绍cache的相关概念和工作原理. 一. cache是什么,为什么要用它 关于cache是什么,为什么要用它.我们从这个表格说起.下图 ...

  7. 番茄土豆 for Mac工作原理介绍

    番茄土豆 for Mac是一款可以有效管理用户时间任务的软件.让你能够合理的安排自己的时间,比如制定什么样的计划,而且支持计划暂停,在你休息的时候,或者娱乐的时候暂停时间确保你能够完全完成自己制定的任 ...

  8. MMU相关概念及工作原理介绍

    MMU相关概念及工作原理介绍 笔者这篇文章主要从使用者的角度介绍MMU的相关概念和工作原理. 一. MMU是什么,为什么要用它 在了解MMU之前需要了解下面几个概念: 物理地址(Physical Ad ...

  9. 晶体工作原理介绍【转】

    晶体工作原理介绍[转] 晶振是石英晶体谐振器(quartz crystal oscillator)的简称,也称有源晶振,它能够产生中央处理器(CPU)执行指令所必须的时钟频率信号,CPU一切指令的执行 ...

  10. MyBatis基本工作原理介绍

    1.MyBatis基本工作原理介绍 计算机的基本工作就是存储和计算,而MyBatis是存储领域的利器.MyBatis的基本工作原理就是:先封装SQL,接着调用JDBC操作数据库,最后把数据库返回的表结 ...

最新文章

  1. 在vs2005中安装boost库
  2. Java for 循环中++i和i++的区别
  3. linux系统-软链接与硬链接区别
  4. C++学习笔记-----存在多态调用时,为基类定义虚析构函数
  5. ELK技术栈—Logstash—Input插件
  6. 五阿哥钢铁电商平台Docker容器云平台建设实践——你想知道的都在这里!
  7. 资金流学习 - 选股逻辑
  8. ctl命令 usb_USB入门系列之六 —— USB设备的枚举过程
  9. linux服务器云防火墙配置文件,Linux云服务器防火墙配置之Firewalld
  10. 回顾 2018: 革新的一年
  11. 计算机科学家壁纸,电脑励志好看的文字壁纸推荐
  12. Markdown书写软件Typora的使用--图片上传(PicGo与Github/Gitee)及排版
  13. 手淘双11最新实践:PopLayer弹层领域研发模式升级
  14. android reboot重启分析
  15. 关于七彩虹显卡命名解说
  16. CodeForces 757 E.Bash Plays with Functions(积性函数+dp)
  17. Linux命令之计算器bc
  18. [转]ESMTP的三个认证方式: CRAM-MD5 PLAIN和LOGIN
  19. 道通转债,微芯转债,博22转债上市价格预测
  20. wuftp vsftpd ProFTPD区别

热门文章

  1. petalinux 1144文档 安装流程
  2. 金华万豪、温州万豪、温州乐清万怡、哈尔滨城市中心万枫、九寨英迪格等酒店开业 | 全球旅报...
  3. vue项目中-打印页面中部分区域的内容
  4. 使用GameMaker中用于碰撞检测的脚本小记
  5. 2019年字节跳动2020届秋招在线笔试真题(后端开发工程师)
  6. ts保姆级教程,别再说你不会ts了
  7. “你公众号被封了!”
  8. 做自媒体视频变现的三大要素!
  9. PullToRefreshListView刷新2
  10. 你还会“袖手旁观”吗?