主要内容

comm.SymbolSynchronizer

正确的符号计时时钟倾斜

描述

comm.SymbolSynchronizer系统对象™纠正PAM, PSK, QAM和OQPSK调制方案的单载波发射机和接收机之间的符号定时时钟倾斜。有关更多信息,请参见符号同步概述

请注意

输入信号以采样率为基础,输出信号以符号率为基础。

要纠正符号计时时钟倾斜:

  1. 创建comm.SymbolSynchronizer对象并设置其属性。

  2. 使用参数调用对象,就像调用函数一样。

有关系统对象如何工作的详细信息,请参见什么是系统对象?

创建

描述

例子

symbolSync= comm.SymbolSynchronizer创建一个符号同步器系统对象,用于纠正单载波发射机和接收机之间的时钟倾斜。

例子

symbolSync= comm.SymbolSynchronizer (的名字价值使用一个或多个名称-值对设置属性。例如,comm.SymbolSynchronizer(“调制”、“OQPSK”)为oqpsk调制的输入信号配置符号同步器系统对象。将每个属性名用引号括起来。

可调DampingFactorNormalizedLoopBandwidth,DetectorGain属性使您能够在模拟循环中优化同步器性能,而无需释放对象。

属性

全部展开

除非另有说明,属性为nontunable,这意味着在调用对象后不能更改它们的值。对象在调用时锁定,而释放功能解锁它们。

如果属性为可调,您可以随时更改其值。

有关更改属性值的详细信息,请参见使用系统对象的MATLAB系统设计

调制类型,指定为PAM /相移键控/ QAM的“OQPSK”

可调:没有

数据类型:字符|字符串

定时错误检测器方法,指定为零交点(decision-directed)加德纳(non-data-aided)早期的后期(non-data-aided),或Mueller-Muller (decision-directed).此属性指定同步器中使用的定时错误检测方案。有关更多信息,请参见定时错误检测(TED)

可调:没有

数据类型:字符|字符串

每个符号的样本,指定为大于1的整数。有关更多信息,请参见Nsps循环过滤

可调:没有

数据类型:

回路滤波器的阻尼因子,指定为正标量。有关更多信息,请参见ζ循环过滤

可调:是的

数据类型:|

环路滤波器的归一化带宽,指定为范围(0,1)内的标量。环路带宽归一化为输入信号的采样率。有关更多信息,请参见BnT年代循环过滤

请注意

若要确保符号同步器锁定,请设置NormalizedLoopBandwidth属性的值小于0.1

可调:是的

数据类型:|

鉴相器增益,指定为正标量。有关更多信息,请参见Kp循环过滤

可调:是的

数据类型:|

使用

对于R2016b之前的版本,请使用一步函数来运行系统对象算法。的论点一步是您创建的对象,后面跟着本节中显示的参数。

例如,Y = step(obj,x)而且Y = obj(x)请执行相同的操作。

描述

符号= symbolSync (样品基于输入样本和输出同步符号,纠正单载波发射机和接收机之间的符号定时时钟偏移。

  • 输入信号以采样率为基础,输出信号以符号率为基础。

  • 您可以调整DampingFactorNormalizedLoopBandwidth,DetectorGain属性来改进同步器性能。

输入参数

全部展开

输入样本,指定为PAM-、PSK-、QAM-或oqpsk调制的单载波信号的标量或列向量。

数据类型:|
复数支持:金宝app是的

输出参数

全部展开

同步符号,作为变量大小的列向量返回。输出符号继承输入样例的数据类型。对于有维度的输入N桑普-by-1,这个输出有维数N信谊1。N信谊大约等于N桑普除以Nsps,在那里Nsps等于SamplesPerSymbol属性值。的最大输出大小时,输出长度将被截断 N 桑普 N sps × 1.1

每个输入样本的估计定时误差,作为范围[0,1]中的标量或范围[0,1]中元素的列向量返回。估计的定时误差归一化到输入采样率。timingErr具有与输入相同的数据类型和大小样品

对象的功能

要使用对象函数,请将System对象指定为第一个输入参数。例如,释放system对象的系统资源obj,使用这种语法:

发行版(obj)

全部展开

克隆 创建重复的系统对象
isLocked 确定系统对象正在使用中
一步 运行系统对象算法
释放 释放资源并允许更改系统对象属性值和输入特征
重置 重置的内部状态系统对象

例子

全部折叠

修正一个有噪声的qpsk调制信号上的固定符号计时错误。检查同步接收信号的误码率。

初始化仿真参数。

M = 4;% QPSK调制顺序nSym = 5000;数据包中的符号数SPS = 4;每个符号的样本百分比timingErr = 2;计时错误的样本信噪比= 15;信噪比(dB)

创建根凸起余弦(RRC)发送和接收过滤器系统对象。

txfilter = com . raisedcosinetransmitfilter (...“OutputSamplesPerSymbol”, sps);rxfilter = com . raisedcosinereceivefilter (...“InputSamplesPerSymbol”sps,“DecimationFactor”2);

创建符号同步器系统对象以纠正计时错误。

symbolSync = com . symbolsynchronizer;

生成随机M-ary符号并应用QPSK调制。

data = randi([0 M-1],nSym,1);modSig = pskmod(data,M,pi/4);

创建一个delay对象来引入2个样本的固定定时误差。由于发射RRC滤波器每个符号输出4个样本,通过固定延迟和信道,1个样本相当于1/4个符号。

fixedDelay = dsp.Delay(timingErr);fixedDelaySym = ceil(fixedDelay.Length/sps);将固定延迟舍入到符号中最接近的整数

通过发射RRC滤波器对调制信号进行滤波txfilter对象。函数应用信号计时误差fixedDelay对象。

txSig = txfilter(modSig);delaySig = fixedDelay(txSig);

将延迟信号通过信噪比为15 dB的AWGN信道传递。

rxSig = awgn(delaySig,snr,“测量”);

通过接收RRC滤波器对调制信号进行滤波rxfilter对象。显示散点图。由于定时误差,接收到的信号与预期的QPSK参考星座不一致。

rxSample = rxfilter(rxSig);散点图(rxSample(1001:结束),2)

图散点图包含一个轴对象。标题为Scatter plot的axes对象包含一个类型为line的对象。该对象表示通道1。

方法纠正符号计时错误symbolSync对象。显示散点图。同步信号现在与预期的QPSK星座对齐。

rxSync = symbolSync(rxSample);散点图(rxSync(1001:结束),2)

图散点图包含一个轴对象。标题为Scatter plot的axes对象包含一个类型为line的对象。该对象表示通道1。

解调QPSK信号。

recData = pskdemod(rxSync,M,pi/4);

用符号计算由固定延迟和发送和接收RRC滤波器引起的系统总延迟。

sysDelay = dsp。Delay(fixedDelaySym + txfilter.)FilterSpanInSymbols / 2 +...rxfilter.FilterSpanInSymbols / 2);

考虑系统延迟,计算误码率。

[numErr,ber] = biterr(sysDelay(data),recData)
数字= 10
Ber = 1.0000 -03

纠正有噪声的BPSK传输信号上的固定符号计时错误。检查同步接收信号的误码率。

初始化仿真参数。

M = 2;BPSK的调制顺序nSym = 20000;数据包中的符号数SPS = 4;每个符号的样本百分比timingErr = 2;计时错误的样本信噪比= 15;信噪比(dB)

创建根凸起余弦(RRC)发送和接收过滤器系统对象。

txfilter = com . raisedcosinetransmitfilter (...“OutputSamplesPerSymbol”, sps);rxfilter = com . raisedcosinereceivefilter (...“InputSamplesPerSymbol”sps,“DecimationFactor”1);

创建一个符号同步器系统对象™来纠正计时错误。

symbolSync = com . symbolsynchronizer (...“SamplesPerSymbol”sps,...“NormalizedLoopBandwidth”, 0.01,...“DampingFactor”, 1.0,...“TimingErrorDetector”早期的后期(non-data-aided)”);

生成随机数据符号并应用BPSK调制。

data = randi([0 M-1],nSym,1);modSig = pskmod(data,M);

创建一个delay对象来引入2个样本的固定定时误差。由于发射RRC滤波器每个符号输出4个样本,通过固定延迟和信道,1个样本相当于1/4个符号。

fixedDelay = dsp.Delay(timingErr);fixedDelaySym = ceil(fixedDelay.Length/sps);将固定延迟舍入到符号中最接近的整数

通过发射RRC滤波器对调制信号进行滤波txfilter对象。函数应用信号计时误差fixedDelay对象。

txSig = txfilter(modSig);delayedSig = fixedDelay(txSig);

将延迟信号通过AWGN通道传递。

rxSig = awgn(delayedSig,snr,“测量”);

通过接收RRC滤波器对调制信号进行滤波rxfilter对象。显示散点图。由于定时误差,接收到的信号与预期的BPSK参考星座不一致。

rxSample = rxfilter(rxSig);散点图(rxSample(10000:结束),2)

图散点图包含一个轴对象。标题为Scatter plot的axes对象包含一个类型为line的对象。该对象表示通道1。

方法纠正符号计时错误symbolSync对象。显示散点图。同步信号现在与预期的BPSK星座对齐。

rxSync = symbolSync(rxSample);散点图(rxSync(10000:结束),2)

图散点图包含一个轴对象。标题为Scatter plot的axes对象包含一个类型为line的对象。该对象表示通道1。

解调BPSK信号。

recData = pskdemod(rxSync,M);

用符号计算由固定延迟和发送和接收RRC滤波器引起的系统总延迟。

sysDelay = dsp。Delay(fixedDelaySym + txfilter.)FilterSpanInSymbols / 2 +...rxfilter.FilterSpanInSymbols / 2);

考虑系统延迟,计算误码率。

[numErr1,ber1] = biterr(sysDelay(data),recData)
numErr1 = 8
Ber1 = 4.0000 -04

方法纠正符号计时和频率偏移错误comm.SymbolSynchronizer而且comm.CarrierSynchronizer系统对象。

配置

初始化仿真参数。

M = 16;调制阶数nSym = 2000;数据包中的符号数SPS = 2;每个符号的样本百分比spsFilt = 8;用于过滤器和通道的每个符号的样本spsSync = 2;%用于同步器的每个符号的样本lenFilt = 10;% RRC过滤器长度

为发射器和接收器创建一对匹配的根凸起余弦(RRC)滤波器系统对象。

txfilter = com . raisedcosinetransmitfilter (...FilterSpanInSymbols = lenFilt,...OutputSamplesPerSymbol = spsFilt,...获得=√spsFilt);rxfilter = com . raisedcosinereceivefilter (...FilterSpanInSymbols = lenFilt,...InputSamplesPerSymbol = spsFilt,...DecimationFactor = spsFilt / 2,...获得=√1 / spsFilt);

创建一个相频偏移系统对象来引入100 Hz多普勒频移。

多普勒= com .相位频率偏移(...FrequencyOffset = 100,...PhaseOffset = 45,...SampleRate = 1 e6);

创建一个可变delay System对象来引入定时偏移。

varDelay = dsp.VariableFractionalDelay;

创建载波和符号同步器系统对象,分别校正多普勒频移和定时偏移。

carrierSync = com . carriersynchronizer (...SamplesPerSymbol = spsSync);symbolSync = com . symbolsynchronizer (...TimingErrorDetector =早期的后期(non-data-aided)”...SamplesPerSymbol = spsSync);

创建星座图系统对象以查看结果。

refConst = qammod(0:M-1,M,UnitAveragePower=true);cdReceive = com .星座图(...ReferenceConstellation = refConst,...SamplesPerSymbol = spsFilt标题=接收信号的);cdDoppler = com .星座图(...ReferenceConstellation = refConst,...SamplesPerSymbol = spsSync,...Title =“频率校正信号”);cdTiming = com .星座图(...ReferenceConstellation = refConst,...SamplesPerSymbol = spsSync,...Title =“频率和定时同步信号”);

主要处理回路

主要处理循环:

  • 生成随机符号并应用QAM调制。

  • 对调制信号进行滤波。

  • 应用频率和定时偏移。

  • 将传输的信号通过AWGN信道传递。

  • 过滤接收的信号。

  • 纠正多普勒频移。

  • 纠正定时偏移。

k = 1:15 data = randi([0 M-1],nSym,1);modSig = qammod(data,M,UnitAveragePower=true);txSig = txfilter(modSig);txDoppler =多普勒(txSig);txDelay = varDelay(txDoppler,k/15);rxSig = awgn(txDelay,25);rxFiltSig = rxfilter(rxSig);rxCorr = carrierSync(rxFiltSig);rxData = symbolSync(rxCorr);结束

可视化

绘制接收信号、频率校正信号和频率定时同步信号的星座图。在接收信号中不能识别特定的星座点,只能在频率校正信号中识别部分星座点。然而,时间和频率同步信号对准预期的QAM星座点。

cdReceive (rxSig)

cdDoppler (rxCorr)

cdTiming (rxData)

修正噪声8-PSK信号上单调增加的符号计时错误。显示规范化计时错误。

初始化仿真参数。

M = 8;调制阶数nSym = 5000;一个包中的符号数目SPS = 2;每个符号的样本百分比nSamp = sps*nSym;一个包中样品的数量

创建根凸起余弦(RRC)发送和接收过滤器系统对象。

txfilter = com . raisedcosinetransmitfilter (...“OutputSamplesPerSymbol”, sps);rxfilter = com . raisedcosinereceivefilter (...“InputSamplesPerSymbol”sps,...“DecimationFactor”1);

创建可变的分数延迟系统对象™,以引入单调递增的计时错误。

varDelay = dsp.VariableFractionalDelay;

创建符号同步器系统对象以纠正计时错误。

symbolSync = com . symbolsynchronizer (...“TimingErrorDetector”“Mueller-Muller (decision-directed)”...“SamplesPerSymbol”, sps);

生成随机8元符号并应用8-PSK调制。

data = randi([0 M-1],nSym,1);modSig = pskmod(data,M,pi/8);

通过提高余弦发射滤波器对调制信号进行滤波,并应用单调递增的定时延迟。

vdelay = (0:1/nSamp:1-1/nSamp)';txSig = txfilter(modSig);delaySig = varDelay(txSig,vdelay);

将延迟信号通过信噪比为15 dB的AWGN信道传递。

rxSig = awgn(delaySig,15,“测量”);

通过接收RRC滤波器对调制信号进行滤波。显示散点图。由于定时误差,接收到的信号与预期的8-PSK参考星座不一致。

rxSample = rxfilter(rxSig);散点图(rxSample, sps)

图散点图包含一个轴对象。标题为Scatter plot的axes对象包含一个类型为line的对象。该对象表示通道1。

方法纠正符号计时错误symbolSync对象。显示散点图。同步信号现在与预期的8-PSK星座对齐。

[rxSym,tError] = symbolSync(rxSample);散点图(rxSym (1001)):

图散点图包含一个轴对象。标题为Scatter plot的axes对象包含一个类型为line的对象。该对象表示通道1。

绘制计时误差估计图。随着时间的推移,归一化计时误差增加到1个样本。

图(vdelay,tError)“时间(s)”) ylabel (“计时错误(样本)”

图中包含一个轴对象。axis对象包含一个line类型的对象。

更多关于

全部展开

参考文献

[1]大米,迈克尔。数字通信:离散时间方法.上马鞍河,新泽西州:Prentice Hall, 2008。

[2]Mengali, Umberto和Aldo N. D 'Andrea。数字接收机的同步技术。纽约:全会出版社,1997年。

扩展功能

版本历史

在R2015a中引入

另请参阅

对象