sdr技术原理解析

软件无线电(sdr)概念 软件无线电,即software defined radio,sdr。通俗来讲,sdr就是基于通用的硬件平台上用软件来实现各种通信模块。
概念中有两个关键词,“通用硬件平台”和“软件”。“通用硬件平台”就是说我们能基于这个硬件平台实现各种各样的通信功能,而不是说一个硬件平台只能实现一种通信功能。“软件”来实现通信模块是相对于传统的无线电技术来讲的,传统的无线电通信模块都是用硬件电路来设计,一个通信电路只能完成一种通信功能,开发周期长,开发成本高,而且一旦设计好后功能就无法改变。软件化可以加快通信模块的开发速度,降低开发成本,便于调试和维护。
我们可以用图1来简单看看软件无线电基站与传统的无线电基站的区别。图片左边的是传统的大基站,图片右边的是基于软件无线电的小型化基站。传统的商用基站体积较大,需要设计很多专用的硬件电路;而sdr基站体积较小,大部分通信功能由软件实现。
图1 商用基站与sdr基站
sdr技术被誉为通信领域的第三次革命。第一次革命是1g通信系统,由有线通信到无线通信的革命;第二次革命是2g通信系统,由模拟通信到数字通信的革命。sdr是未来通信系统的发展趋势。
sdr系统原理 下面正式开始讲解sdr的系统原理。在上面的介绍中我们知道gpp-based sdr系统一般都是包含一个gpp和一个外设。我们以一台笔记本电脑连接一个usrp b200为例来给大家讲解sdr系统内部的实现原理。
.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驱动的安装方式可以参见使用c或者c++调用uhd的库函数。
接下来是系统的各种系统库和系统调用的接口以及内核。强调一点,大部分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设置的太小导致信号功率太小,而如果设置的过大可能会导致系统的低噪上升,也有可能会影响其他通信系统的正常工作。
图2 sdr发射机原理图
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,用于把信号从中频下变频到基带。
图3 sdr接收机原理图
为什么要经过两次下变频呢?如图9所示,第一次变频是在模拟域通过晶振产生的信号与射频信号相乘把信号下变频到中频,这一次变频主要是为了后面做ad采样。我们知道采样需要满足奈奎斯特采样定律,采样的频率必须大于信号的最高频率的2倍,而射频信号的载波频率已经能都达到2.6ghz,甚至5ghz,根本无法做出载波频率两倍的采样速率的adc。所以系统先把信号下变频到中频,然后再利用adc对信号进行模数转化。因为usrp adc的采样率为61.44ms/s,所以我们可以推出usrp对应的中频频率应该低于30.72mhz。
接着中频的数字信号被ddc下变频到基带。有人可能会问为什么不直接把信号一次变频到基带呢,这样的接收机叫做零中频接收机。如果载波频率高了,零中频的接收机设计会非常复杂,所以零中频接收机一般用于载波频率较低的系统里面。
图4 下变频原理示意图
数字信号经过usb3.0接口传输到笔记本电脑上后,电脑再把数据传输给sdr程序处理。物理层处理完后再把数据交给上层。这样sdr接收机的信号接收过程便完成了。
sdr发射机/接收机里面的每一个模块都对应一大片知识,知识的海洋是无穷的,这里的介绍只能起一个抛砖引玉的作用。如果大家想深入学习的话,还得要多查阅资料。

软银42亿美元增持雅虎日本股份 动力电池商LG化学与SK Innovation诉讼
fireflyRK3399开发板介绍
嘉立创EDA如何布局圆形LED灯板
汇总各种流量计的工作原理
逃不过的双11「算法围城」需要时间同步
sdr技术原理解析
英国五个技术中心致力于使用AI来加快疾病诊断和改善
HTC重拾手机业务,将打造元宇宙智能手机,发布会已定于6月28日
云南移动基于华为超融合数据中心网络方案实现数据中心网络云化改造
关于基于龙芯3A1500的计算加速模块的设计方法
GIGAVAC新款高压继电器较上代产品节省成本40%
调查显示:国外商务人士最爱用手机排名,三星第一、华为第四
下一代内存技术:准备好迎接验证挑战了吗
电子带和“传导带”间的关系
电力巡检机器人相比人工检测的优势是什么
OLED | 未来7年内中国OLED市占率将赶超韩国
复古街机时钟的制作
SIP mini 对讲终端SV-A10/SV-A10W,带sip热点功能
滑动变阻器分压接法实物图参照步骤解析
英特尔发布全新自动驾驶平台含2个EyeQ5芯片以及一个凌动芯片