主要内容

带USRP®硬件的QPSK接收机

这个例子展示了如何使用通用软件无线电外设®(USRP®)设备使用SDRu(软件定义无线电USRP®)系统对象来实现一个QPSK接收器。该接收器解决了无线通信中的实际问题,如载波频率和相位偏移、定时偏移和帧同步。这个系统接收由系统发出的信号QPSK发射器与USRP®硬件的例子。接收器解调接收的符号,并打印一个简单的消息到MATLAB®命令行。

请参阅的安装和配置部分USRP®无线电文件有关配置主机以使用SDRu Receiver System对象的详细信息。

实现

这个例子描述了一个带有USRP®硬件的QPSK接收机的MATLAB实现。这个例子还有一个使用Simulink®的实现。金宝app

使用系统对象的MATLAB脚本:sdruQPSKReceiver.m

金宝app使用块的Simulink实现:sdruqpskrx.mdl

您还可以探索一个没有SDR硬件的仅仿真QPSK发射机和接收机示例,该示例使用AWGN信道建模通用无线通信系统,并模拟在QPSK发射机和接收机

介绍

这个例子的动机如下:

  • 利用SDRu系统对象在MATLAB中实现一个真实的基于qpsk的收发环境。

  • 说明关键通信工具箱的使用™ QPSK系统设计的系统目标,包括粗载波频率补偿和精载波频率补偿、比特填充和剥离定时恢复、帧同步、载波相位模糊度解决和消息解码。

在此示例中,SDRuReceiver系统对象接收被空中传输破坏的数据,并输出由QPSK接收器系统对象处理的复基带信号。本示例提供了一种实用数字接收机的参考设计,该接收机可以处理无线信道损伤。该接收机包括基于相关的粗频补偿、基于PLL的精频补偿、定时恢复、固定速率重采样和比特填充/跳频、帧同步和相位模糊度解决。

发现收音机

发现收音机(s)连接到您的计算机。这个例子使用了第一个USRP®无线电发现使用findsdru函数。检查收音机是否可用,并记录收音机类型。如果没有找到可用的无线电,本例将使用系统的默认配置。

connectedRadios = findsdru;如果strncmp(已连接的磁盘(1).状态,“成功”, 7) platform = connectedrdios (1).Platform;开关connectedRadios(1)。平台案例“B200”“B210”} address = connectedrdios (1).SerialNum;案例“N200/N210/USRP2”“X300”“X310”“N300”“N310”“N320 / N321”} address = connectedrdios (1).IPAddress;终止其他的地址=“192.168.10.2”;平台=“N200/N210/USRP2”终止
检查无线连接…

初始化

sdruqpskreceiver_init.m脚本初始化模拟参数并生成结构PRMQPSK接收器

printReceivedData = true;如果要打印接收到的数据,则为真compileIt = false;%如果要编译代码以加速执行,则为trueuseCodegen = false;%如果为true,则运行最新生成的代码(mex文件),而不是MATLAB代码%接收机参数结构prmQPSKReceiver = sdruqpskreceiver_init(platform, useCodegen)平台=平台;prmQPSKReceiver。地址=地址;
prmQPSKReceiver =结构体字段:Rsym: 200000 ModulationOrder: 4插值:2大量毁灭:1 Tsym: 5.0000 e-06 Fs: 400000 BarkerCode: [1 1 1 1 1 1 1 1 1 1 1 1 1] BarkerLength: 13 HeaderLength: 26日消息:“Hello world”MessageLength: 16 NumberOfMessage: 100 PayloadLength: 11200 FrameSize: 5613 FrameTime: 0.0281 RolloffFactor:0.5000 ScramblerBase: 2 scrambler多项式:[1 1 10 1]ScramblerInitialConditions: [0 00] RaisedCosineFilterSpan: 10…

为了成功发射,确保SDRu接收器的指定中心频率在USRP®子板的可接受范围内。

此外,通过使用compileIt和useCodegen标志,您可以与代码交互,以探索不同的执行选项。将MATLAB变量compileIt设置为true,生成C代码;可以通过使用codegen由MATLAB编码器提供的命令™ 产品这个codegen命令将MATLAB®函数编译为基于C的静态或动态库、可执行文件或MEX文件,生成用于加速执行的代码。生成的可执行文件的运行速度比原始MATLAB代码快几倍。将useCodegen设置为true以运行由生成的可执行文件codegen而不是MATLAB代码。

代码架构

runSDRuQPSKReceiver函数使用两个系统对象QPSKReceiver和comm.SDRuReceiver来实现QPSK接收器。

SDRu接收机

此示例使用SDRu接收器系统对象与USRP®板通信。参数结构PRMQPSK接收器设置中心频率,增益和插值因子等。

QPSK接收机

该组件重新生成原始传输的消息。它被分为五个子组件,使用System对象建模。每个子组件由使用System对象的其他子组件建模。

1)自动增益控制:设置其输出功率,以确保相位和定时误差检测器的等效增益随时间保持恒定。AGC被放置在上升余弦接收滤波器因此,可以使用两个过采样因子测量信号振幅。这一过程提高了估计的准确性。

2) 粗略频率补偿:使用基于相关的算法粗略估计频率偏移,然后进行补偿。对估计的粗略频率偏移进行平均,以便允许精细频率补偿锁定/收敛。因此,粗略频率偏移是使用comm.CoarseFrequencyCompensator系统对象和平均公式;补偿是使用通信相位频率偏移量系统对象。

3) 定时恢复:使用闭环标量处理执行定时恢复,以克服通道引入的延迟影响,使用通信符号同步器系统对象。该对象实现了一个锁相环来纠正接收信号中的符号定时错误。本例中的对象选用旋转不变Gardner定时误差检测器;因此,定时恢复可以先于精细的频率补偿。对象的输入是固定长度的样本帧。对象的输出是一帧符号,其长度可因位填充和剥离而变化,这取决于实际的信道延迟。

4)精细频率补偿:对频率偏差进行闭环标量处理并精确补偿通信载波同步器系统对象。该对象实现了一个锁相环(PLL)来跟踪输入信号中的剩余频率偏移和相位偏移。

5)前导检测:使用a检测输入中已知Barker代码的位置comm.PreambleDetector系统对象。该对象实现了一种基于互相关的算法来检测输入中的已知符号序列。

6)帧同步:执行帧同步,并将变长符号输入转换为定长输出,使用aFrameSynchronizer系统对象。该对象有一个辅助输出,它是一个布尔标量,指示第一帧输出是否有效。

7)数据解码器:执行相位模糊分辨和解调。同时,数据解码器将重新生成的消息与发送的消息进行比较,并计算误码率。

有关系统组件的更多信息,请参阅使用Simulink的具有USRP®硬件示例的QPSK接收机金宝app

执行和结果

在运行脚本之前,首先打开USRP®并将其连接到计算机。为确保数据接收,首先启动QPSK发射器与USRP®硬件的例子。

如果compileIt codegen (“runSDRuQPSKReceiver”“参数”, {coder.Constant (prmQPSKReceiver) coder.Constant (printReceivedData)});终止如果useCodegen clearRUNSDRUQPSKSK接收器\u mex%#好的错误码= runSDRuQPSKReceiver_mex(prmQPSKReceiver, printReceivedData);其他的BER=运行SDRUQPSKRECEIVER(prmQPSKReceiver,printReceivedData);终止流('错误率为=%f。\n'BER (1));流('检测到的错误数= %d.\n'BER (2));流('比较的样本总数=%d。\n',BER(3));

运行仿真时,在仿真运行时,接收到的消息将在MATLAB命令窗口中解码并打印出来。BER信息也显示在脚本执行的末尾。当QPSK接收机中的一些自适应分量仍然没有收敛时,BER值的计算包括第一接收帧。在此期间,误码率相当高。一旦瞬态周期结束,接收机就能够估计发送的帧,并且误码率显著提高。在本例中,为了保证系统在模拟模式下的合理执行时间,模拟持续时间相当短。因此,模拟开始时的高误码率值会显著影响总体误码率结果。要增加模拟持续时间并获得较低的BER值,可以在中更改SimParams.StopTime变量接收器初始化文件

此外,不同USRP®子板的增益行为差别很大。因此,本例中定义的发射机和接收机的增益设置可能不适合子板。如果信息没有被接收系统正确解码,你可以改变源信号的增益SDRu发射机SDRu接收机通过更改SimParams来修改系统对象。USRPGain值发射机初始化文件而在接收器初始化文件

最后,发送和接收USRP®无线电之间的较大相对频率偏移会阻止接收功能正确解码信息。如果发生这种情况,您可以通过从发射机向接收器发送一个已知频率的音调来确定偏移量,然后测量发送频率和接收频率之间的偏移量,然后将该偏移量应用到SDRu receiver System对象的中心频率。

附录

此示例使用以下脚本和帮助器函数:

参考文献

1.大米,迈克尔。数字通信-离散时间方法.第1版。纽约,纽约:Prentice Hall, 2008。

版权公告

Universal Software Radio Peripheral®和USRP®是美国国家仪器公司的商标。