主要内容

正交相移编码发射机和接收机

这个例子展示了QPSK发射机和接收机的实现MATLAB®。特别是,这个例子说明了方法来解决现实世界无线通信载波频率和相位偏移等问题,时机复苏和帧同步。仿真软件的®实现金宝app相同的系统,请参考正交相移编码发射机和接收机模型金宝app的例子。

介绍

传播正交相移编码数据进行损伤模拟无线传输的影响,如增加加性高斯白噪声(AWGN),引入载波频率和相位偏移,和时间漂移。应对这些障碍,这个示例中提供了一个参考实际数字接收机的设计。接收机包括correlation-based粗频率补偿,PLL-based精细频率补偿,PLL-based符号定时恢复,帧同步和相位消除歧义。

这个例子中有两个主要目的:

  • 通用无线通信系统模型能够成功地恢复消息,损坏的各种模拟通道障碍。

  • 说明使用关键通信工具箱™同步组件包括粗和细载波频率补偿,闭环时机复苏与填料和剥离,帧同步和载波相位消除歧义。

初始化

commqpsktxrx_init.m脚本初始化仿真参数并生成prmQPSKTxRx结构。

prmQPSKTxRx = commqpsktxrx_init% #好< * NOPTS > %正交相移编码系统参数useScopes = true;%如果使用范围printReceivedData = false;%真实如果接收的数据是被打印出来compileIt = false;%如果编译代码useCodegen = false;%真实运行生成的墨西哥人文件
prmQPSKTxRx =结构体字段:ModulationOrder: 4插值:2大量毁灭:1 Rsym: 50000 Tsym: 2.0000 e-05 Fs: 100000 TotalFrame: 1000 BarkerCode: [1 1 1 1 1 1 1 1 1 1 1 1 1] BarkerLength: 13 HeaderLength: 26日消息:“Hello world”MessageLength: 16 NumberOfMessage: 20 PayloadLength: 2240 FrameSize: 1133 FrameTime: 0.0227 RolloffFactor: 0.5000 ScramblerBase: 2 ScramblerPolynomial: [1 1 1 0 1] ScramblerInitialConditions: [0 0 0 0] RaisedCosineFilterSpan: 10 PhaseOffset: 47 EbNo: 13 FrequencyOffset: 5000 DelayType:“三角形”DesiredPower: 2 AveragingLength: 50 MaxPowerGain: 20 MaximumFrequencyOffset: 6000 PhaseRecoveryLoopBandwidth: 0.0100 PhaseRecoveryDampingFactor: 1 TimingRecoveryLoopBandwidth: 0.0100 TimingRecoveryDampingFactor: 1 TimingErrorDetectorGain: 5.4000 PreambleDetectorThreshold: 20 MessageBits: [11200 x1双]BerMask: [1540 x1双)

代码被测试的系统架构

这个例子使用QPSK调制数字通信系统模型。这个函数runQPSKSystemUnderTest.m这种通信环境的模型。这个脚本中的QPSK收发器模型分为以下四个主要组件。

1)QPSKTransmitter.m:生成比特流,然后编码,调节和过滤器。

2)QPSKChannel.m:与载波偏移模型通道,和AWGN,时机抵消。

3)QPSKReceiver.m:接收机模型,包括组件阶段复苏,复苏时机,解码、解调等。

4)QPSKScopes.m:选择可视化信号使用时间范围、频率范围和星座图。

每个组件使用一个系统对象建模。看到四个主要的建设系统对象的组件,请参阅runQPSKSystemUnderTest.m

单个组件的描述

发射机

这个组件生成一个消息使用ASCII字符,字符转换为位,突出巴克码接收帧同步。这些数据然后使用QPSK调制和过滤平方根余弦滤波器。

通道

这个组件模拟无线传输的影响。它降低了传输信号的相位和频率偏移、时变延迟模仿时钟歪斜在发射机和接收机之间,和AWGN。

接收机

这个组件恢复原来的传播信息。它分为7个子组件。

1)自动增益控制:设定其输出功率水平确保阶段和定时误差检测器的等价收益随时间保持不变。前的AGC放置提出了余弦接收滤波器这样可以测量信号幅度过采样因子2。这个过程提高了估计的准确性。

2)粗频率补偿:使用correlation-based算法大致估计频率偏移,然后弥补它。粗频率偏移估计平均,这样好频率补偿可以锁定/收敛。因此,粗频率偏移估计使用comm.CoarseFrequencyCompensator系统对象和一个平均公式;补偿执行使用comm.PhaseFrequencyOffset系统对象。

3)定时恢复:执行时机复苏闭环标量处理来克服信道引入的延迟的影响,使用comm.SymbolSynchronizer系统对象。对象实现了锁相环在收到正确的符号定时误差信号。rotationally-invariant Gardner定时误差检测器为对象在本例中选择;因此,时机复苏可以先于细频率补偿。的输入样本的对象是一个固定长度的帧。对象是一个帧的输出符号的长度可以改变由于填料和剥离,根据实际信道延迟。

4)良好的频率补偿:执行闭环标量处理和补偿频率偏移量准确,使用comm.CarrierSynchronizer系统对象。对象实现了锁相环(PLL)跟踪剩余频率偏移和相位补偿输入信号。

5)序言检测:检测的位置已知的巴克代码输入使用comm.PreambleDetector系统对象。对象实现了一个基于互相关算法来检测一个已知序列的符号输入。

6)帧同步:执行帧同步,同时,将变长符号的输入转换成固定长度的输出,使用FrameSynchronizer系统对象。对象有一个中等的输出是一个布尔标量表示如果第一帧输出是有效的。

7)数据译码器:执行阶段消除歧义和解调。另外,解码器比较再生的数据消息的传播,计算误码率。

作用域

此组件提供可选的可视化情节:

  • 描述接收信号的频谱范围提出了余弦平方根滤波前后,

  • 星座图显示接收到的信号接收器过滤后,在时机复苏之后好频率补偿。

对系统组件的更多信息,请参阅正交相移编码发射机和接收机模型金宝app金宝app仿真软件的例子。

被测系统

主循环系统中的测试脚本处理下数据帧。设置MATLAB变量compileIt为true来生成代码。这可以通过使用来实现的codegen命令MATLAB提供的编码器™产品。的codegen墨西哥人文件命令将MATLAB®功能,为加速生产代码执行。多次生成C代码运行速度比原来的MATLAB代码。对于这个示例,集useCodegen真正的使用生成的代码codegen而MATLAB代码。

的内循环runQPSKSystemUnderTest.m使用前面提到的四个系统对象。在这个文件中,有一个for循环在被测系统一次处理一帧。

数= 1:prmQPSKTxRx。FrameCount transmittedSignal = qpskTx ();rcvdSignal = qpskChan (transmittedSignal数);[RCRxSignal timingRecSignal freqRecSignal,误码率]= qpskRx (rcvdSignal);%接收如果useScopes runQPSKScopes (qpskScopes rcvdSignal, RCRxSignal, timingRecSignal, freqRecSignal);%情节的作用域结束结束

执行和结果

系统下运行测试脚本,得到误码率值模拟QPSK通信,执行下面的代码。当您运行模拟,它显示了比特误码率数据,和一些图形化的结果。星座图的显示范围提出了余弦接收滤波器输出时,符号同步器输出,细频率补偿输出的功率谱提出了余弦接收滤波器输出。

如果compileIt codegen报告runQPSKSystemUnderTest.marg游戏{coder.Constant (prmQPSKTxRx) coder.Constant (useScopes) coder.Constant (printReceivedData)}% #好吧结束如果useCodegen误码率= runQPSKSystemUnderTest_mex (prmQPSKTxRx、useScopes printReceivedData);其他的数量= runQPSKSystemUnderTest (prmQPSKTxRx useScopes printReceivedData);结束流(“出错率= % f。\ n”BER (1));流(检测到错误的数量= % d。\ n 'BER (2));流(的总数相比样品= % d。\ n 'BER (3));
出错率= 0.000238。检测到错误的数量= 366。比较样本总数= 1536920。

交替执行选项

正如已经提到的部分被测系统开始时,通过使用变量的例子,可以与代码交互探索系统对象的不同方面和编码选项。

默认情况下,变量useScopesprintReceivedData分别设置为真和假。的useScopes变量允许将MATLAB范围的例子执行期间开放。使用范围,您可以看到模拟的子组件的行为,也获得一个更好的了解整个系统的功能仿真时间。当你将这个变量设置为false,范围的例子执行期间不开放。当您设置printReceivedData为真时,您还可以看到收到的解码包印刷在命令窗口。其他两个变量,compileIt和useCodegen,相关的速度性能,可用于分析设计权衡。

compileIt设置为true时,这个示例脚本将使用MATLAB编码器™功能编译脚本runQPSKSystemUnderTest加速执行。这个命令将创建一个墨西哥人文件(runQPSKSystemUnderTest_mex)并将其保存在当前文件夹。一旦你设置useCodegen真正的墨西哥人文件运行,例子是能够运行系统在MATLAB中实现更快。这个特性是至关重要的实现的实时系统和模拟是一个重要的工具。仿真速度,最大化useScopes假和useCodegen真正的墨西哥人文件运行。

对于其他勘探选项,请参考正交相移编码发射机和接收机模型金宝app的例子。

总结

这个例子AWGN信道模拟数字通信。它显示了如何模型等部分正交相移编码系统的调制,频率和相位恢复,时间复苏,和帧同步。通过计算误码率测量系统性能。它还表明,生成的C代码比原始的MATLAB代码跑快几倍。

附录

这个示例使用以下脚本和辅助功能:

引用

1。大米,迈克尔。数字通信——一个离散时间的方法。第1版。纽约,纽约州:普伦蒂斯霍尔,2008年。