可视化RF减值

应用各种RF减损到QAM信号。观察通过使用星座图,随时间变化的误差矢量幅度(EVM)图和频谱图的影响。估计等效信噪比(SNR)。

初始化

设置采样率,调制阶数,和SNR。计算参考星座点。

FS = 1000;M = 16;snrdB = 30;refConst = qammod(0:M-1,M,'UnitAveragePower',真正);

创建星座图和时间范围中的对象以可视化的障碍的效果。

constDiagram = comm.ConstellationDiagram('ReferenceConstellation',refConst);时间波谱= dsp.TimeScope('YLimits',[0 40],'采样率',FS,'时间跨度'1,...'ShowGrid',真正,'YLabel''EVM(%)');

白噪声

所产生的16-QAM信号,并把它传递通过AWGN信道。画出它的星座。

数据=兰迪([0 M-1],1000,1);modSig = qammod(数据,M'UnitAveragePower',真正);noisySig = AWGN(modSig,snrdB);constDiagram(noisySig)

估计从基准星座点有噪信号的EVM。

EVM = comm.EVM('ReferenceSignalSource'“从参考星座估计”...'ReferenceConstellation',refConst,...'正常化'“平均星座力量”);rmsEVM = EVM(noisySig)
rmsEVM = 3.1768

调制误差率(MER)接近地对应于SNR。创建一个MER对象,并估计SNR。

聚体= comm.MER('ReferenceSignalSource'“从参考星座估计”...'ReferenceConstellation',refConst);snrEst =聚体(noisySig)
snrEst = 30.1071

估计是非常接近30分贝指定SNR。

放大器失真

创建使用记忆非线性对象的放大器。

安培= comm.MemorylessNonlinearity('IIP3'38,'AMPMConversion',0);

通过非线性放大器通过所述调制信号,并绘制其星座图。

txSig =安培(modSig);constDiagram(txSig)

星座的角点已向原移动由于放大器的增益压缩。

引入一个小的AM / PM转换,并显示接收到的信号星座图。

amp.AMPMConversion = 1;txSig =安培(modSig);constDiagram(txSig)

星座有旋转由于AM / PM转换。为了计算随时间变化的EVM,释放EVM对象并设置AveragingDimensions属性为2。为了估算对一输入信号的EVM,省略ReferenceSignalSource属性定义。这种方法可以产生更精确的结果。

EVM = comm.EVM('AveragingDimensions',2);evmTime = EVM(modSig,txSig);

画出失真信号随时间变化的EVM。

时间波谱(evmTime)

计算RMS EVM。

evmRMS = SQRT(平均值(evmTime。^ 2))
evmRMS = 35.5919

计算MER。

聚体= comm.MER;snrEst =聚体(modSig,txSig)
snrEst = 8.1392

的SNR(≈8dB)被从其初始值(∞)由于放大器失真减小。

指定输入功率电平范围从0到40 dBm的。转换的水平来W.初始化它们的线性等效输出功率向量。

powerIn = 0:40;销= 10 ^((powerIn-30)/ 10)。powerOut =零(长度(powerIn),1);

用于测量输入功率电平的范围中的放大器的输出功率。

对于K = 1:长度(powerIn)数据=兰迪([0 15],1000,1);txSig = qammod(数据,16,'UnitAveragePower',真)* SQRT(销(K));ampSig =安培(txSig);powerOut(K)= 10 *日志10(VAR(ampSig))+ 30;结束

绘制功率输出相对于电力输入曲线。

图图(powerIn,powerOut,powerIn,powerIn,' - ')图例(“放大器输出”“理想的输出”'位置''SE')xlabel('功率在(DBM)')ylabel('电源输出(DBM)')网格

所述输出功率电平断开在30 dBm的。该放大器表现出对输入功率电平超过25 dBm的更大的非线性行为。

I / Q不平衡

适用的幅度和相位不平衡的调制信号。

ampImb = 3;phImb = 10;GAINI = 10 ^(0.5 * ampImb / 20)。gainQ = 10 ^( -  0.5 * ampImb / 20)。IMBI =实际(modSig)* * GAINI EXP(-0.5i * phImb * PI / 180);imbQ = IMAG(modSig)* gainQ * EXP(1I *(PI / 2 + 0.5 * phImb * PI / 180));rxSig = IMBI + imbQ;

画出接收星座图。

constDiagram(rxSig)

星座的幅值和相位发生变化的I / Q不均衡的结果。

计算并绘制随时间变化的EVM。

evmTime = EVM(modSig,rxSig);时间波谱(evmTime)

该EVM表现出的行为是类似于用非线性放大器虽然方差较小经历。

产生具有1000Hz的采样速率100Hz的正弦波。

正弦波= dsp.SineWave('频率',100,'采样率',1000,...'SamplesPerFrame',1E4,'ComplexOutput',真正);X =正弦波();

应用相同的3分贝和10度的I / Q不平衡。

ampImb = 3;phImb = 10;GAINI = 10 ^(0.5 * ampImb / 20)。gainQ = 10 ^( -  0.5 * ampImb / 20)。IMBI =实际(X)* * GAINI EXP(-0.5i * phImb * PI / 180);imbQ = IMAG(X)* gainQ * EXP(1I *(PI / 2 + 0.5 * phImb * PI / 180));Y = + IMBI imbQ;

画出不平衡信号的频谱。

光谱= dsp.SpectrumAnalyzer('采样率',1000,'PowerUnits''DBW');谱(y)的

的I / Q不平衡在-100赫兹,这是输入色调的倒数引入第二音调。

相位噪声

适用的相位噪声所发送的信号。积所得的星座图。

pnoise = comm.PhaseNoise('水平',-50,“频偏”20,'采样率',FS);pnoiseSig = pnoise(modSig);constDiagram(pnoiseSig)

相位噪声引入的旋转抖动。

计算并绘制了接收信号的EVM。

evmTime =维生素(modSig pnoiseSig);时间波谱(evmTime)

确定RMS EVM。

evmRMS = SQRT(平均值(evmTime。^ 2))
evmRMS = 6.1989

滤镜效果

指定每个符号参数样本。创建一对升余弦匹配滤波器。

SPS = 4;txfilter = comm.RaisedCosineTransmitFilter('RolloffFactor',0.2,'FilterSpanInSymbols'8,...'OutputSamplesPerSymbol',SPS,'获得',SQRT(SPS));rxfilter = comm.RaisedCosineReceiveFilter('RolloffFactor',0.2,'FilterSpanInSymbols'8,...'InputSamplesPerSymbol',SPS,'获得',1 / SQRT(SPS),...'DecimationFactor',SPS);

确定通过匹配滤波器的延迟。

fltDelay = 0.5 *(+ txfilter.FilterSpanInSymbols rxfilter.FilterSpanInSymbols);

通过匹配滤波器传递调制信号。

filtSig = txfilter(modSig);rxSig = rxfilter(filtSig);

要考虑到通过过滤器的延迟,丢弃第一fltDelay样本。

rxSig = rxSig(fltDelay + 1:结束);

为了适应接收的信号样本的数量的改变,创建新的星座图和时间范围的对象。

constDiagram = comm.ConstellationDiagram('ReferenceConstellation',refConst);时间波谱= dsp.TimeScope('YLimits',[0 40],'采样率',FS,'时间跨度'1,...'ShowGrid',真正,'YLabel''EVM(%)');

估计EVM。绘制所接收的信号星座图和所述随时间变化的EVM。

EVM = comm.EVM('ReferenceSignalSource'“从参考星座估计”...'ReferenceConstellation',refConst,...'正常化'“平均星座力量”'AveragingDimensions',2);evmTime = EVM(rxSig);constDiagram(rxSig)时间波谱(evmTime)

确定RMS EVM。

evmRMS = SQRT(平均值(evmTime。^ 2))
evmRMS = 2.7199

确定等价SNR。

聚体= comm.MER;snrEst =聚体(modSig(1:最终fltDelay),rxSig)
snrEst = 31.4603

联合作用

结合过滤器,非线性放大器,AWGN和相位噪声的影响。显示星座和EVM图。

创建EVM,时间范围和星座图的对象。

EVM = comm.EVM('ReferenceSignalSource'“从参考星座估计”...'ReferenceConstellation',refConst,...'正常化'“平均星座力量”'AveragingDimensions',2);时间波谱= dsp.TimeScope('YLimits',[0 40],'采样率',FS,'时间跨度'1,...'ShowGrid',真正,'YLabel''EVM(%)');constDiagram = comm.ConstellationDiagram('ReferenceConstellation',refConst);

指定非线性放大器和相位噪声对象。

安培= comm.MemorylessNonlinearity('IIP3'45,'AMPMConversion',0);pnoise = comm.PhaseNoise('水平',-55,“频偏”20,'采样率',FS);

过滤器,然后放大该调制信号。

txfiltOut = txfilter(modSig);txSig =安培(txfiltOut);

加入相位噪声。通过AWGN信道传递受损信号。画出星座图。

rxSig = AWGN(txSig,snrdB);pnoiseSig = pnoise(rxSig);rxfiltOut = rxfilter(pnoiseSig);constDiagram(rxfiltOut)

计算随时间变化的EVM。绘制的结果。

evmTime = EVM(rxfiltOut);时间波谱(evmTime)

确定RMS EVM。

evmRMS = SQRT(平均值(evmTime。^ 2))
evmRMS = 6.6444

估计SNR。

聚体= comm.MER('ReferenceSignalSource'“从参考星座估计”...'ReferenceConstellation',refConst);snrEst =聚体(rxfiltOut)
snrEst = 23.6978

此值是近似6dB超过了30分贝规定值时,这意味着其他损伤的效果显著和将降低误码率特性恶化。

也可以看看

|