主要内容

可视化RF损伤

将各种RF损伤应用于QAM信号。通过使用星座图,时变误差矢量幅度(EVM)图和频谱图来观察效果。估计等效的信噪比(SNR)。

初始化

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

FS = 1000;m = 16;SNRDB = 30;Refconst = Qammod(0:M-1,M,'onemaveragepower',真的);

创建星座图和时间范围对象以可视化损伤效果。

constdiagram = comm.constellationdiagram('ReferenceConstellation',Refconst);timescope = timescope('ylimits',[0 40],'采样率',fs,'timespansource''财产''时间跨度',1,......'showgrid',真的,'ylabel''EVM(%)');

白噪声

生成16 QAM信号,并通过AWGN通道。绘制它的星座。

数据= RANDI([0 m-1],1000,1);modsig = qammod(数据,m,'onemaveragepower',真的);noisysig = awgn(modsig,snrdb);Constdiagram(Noisysig)

图星座图包含UiflowContainer,Uimenu,UIToolbar类型的轴和其他对象。轴包含2个类型的型号。该对象表示频道1。

从参考星座点估计噪声信号的EVM。

EVM = comm.evm('referenceignalsource''从参考星座估计'......'ReferenceConstellation',Refconst,......'正常化''平均星座力量');Rmsevm = EVM(Noisysig)
RMSEVM = 3.1768.

调制错误率(MER)与SNR紧密相对应。创建一个MET对象,并估计SNR。

mer = comm.mer('referenceignalsource''从参考星座估计'......'ReferenceConstellation',Refconst);snrest = mer(noisysig)
snrest = 30.1071

估计非常接近30 dB的指定SNR。

放大器失真

使用“内存非线性对象”创建放大器。

amp = comm.memorylessnoninearity('IIP3',38,'ampm​​conversion',0);

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

txsig =放大器(modsig);Constdiagram(TXSIG)

图星座图包含UiflowContainer,Uimenu,UIToolbar类型的轴和其他对象。轴包含2个类型的型号。该对象表示频道1。

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

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

amp.ampmconversvers = 1;txsig =放大器(modsig);Constdiagram(TXSIG)

图星座图包含UiflowContainer,Uimenu,UIToolbar类型的轴和其他对象。轴包含2个类型的型号。该对象表示频道1。

由于AM / PM转换,星座已经旋转。要计算时变的EVM,请释放EVM对象并设置AverageDimensions属性为2.估算EVM对输入信号,省略参考值财产定义。该方法产生更准确的结果。

EVM = comm.evm('verigesdimensions',2);EVMTIME = EVM(MODSIG,TXSIG);

绘制变形信号的时变EVM。

Timescope(EVMTIME)

计算RMS EVM。

EVMRMS = SQRT(均值(EVMTIME. ^ 2))
EVMRMS = 35.5919.

计算mer。

mer = comm.mer;snrest = mer(modsig,txsig)
snrest = 8.1392

由于放大器失真,SNR(≈8dB)从其初始值(∞)降低。

指定输入功率电平,范围为0到40 dBm。将这些级别转换为在W的线性等效项中。初始化输出电源向量。

PowerIn = 0:40;PIN = 10. ^((PowerIn-30)/ 10);powerout = zeros(长度(powerin),1);

测量输入功率水平范围的放大器输出功率。

为了K = 1:长度(PowerIN)数据= RANDI([0 15],1000,1);txsig = qammod(数据,16,'onemaveragepower',true)* sqrt(pin(k));ampsig =放大器(TXSIG);Powerout(k)= 10 * log10(var(放示))+ 30;结尾

绘制电源输出与电源输入曲线。

图绘图(PowerIn,PowerOut,PowerIn,PowerIn,' - ') 传奇(“放大器输出”'理想的输出''地点''se')Xlabel('电力(dbm)')ylabel('强大(DBM)') 网格

图包含轴。轴包含2个类型的型号。这些对象代表放大器输出,理想的输出。

输出功率电平为30 dBm。放大器对输入功率水平显示出大于25 dBm的非线性行为。

I / q失衡

使用振幅和相位不平衡对调制信号应用iqimbal.功能。

Ampimb = 3;phimb = 10;rxsig = iqimbal(modsig,ampimb,phimb);

绘制收到的星座。

Constdiagram(rxsig)

图星座图包含UiflowContainer,Uimenu,UIToolbar类型的轴和其他对象。轴包含2个类型的型号。该对象表示频道1。

由于I / Q不平衡,星座的幅度和相位发生了变化。

计算和绘制时变EVM。

EVMTIME = EVM(MODSIG,RXSIG);Timescope(EVMTIME)

EVM表现出类似于与非线性放大器经历的行为,尽管方差较小。

创建一个具有1000 Hz采样率的100 Hz正弦波。

sinewave = dsp.sinewave('频率',100,'采样率',1000,......'samplesperframe',1E4,'ComplexOutput',真的);x = sinewave();

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

Ampimb = 3;phimb = 10;y = iqimbal(x,ampimb,phimb);

绘制不平衡信号的频谱。

Spectrum = DSP.SpectRumanalyzer('采样率',1000,'PowerUnit''dbw');光谱(Y)

图谱分析仪包含轴和其他对象的UiflowContainer,Uimenu,UIToolbar。轴包含类型线的对象。该对象表示频道1。

I / Q不平衡在-100 Hz引入了第二个音调,这是输入音的倒数。

相位噪声

将相位噪声应用于发送信号。绘制得到的星座图。

pnoise = comm.phaseNoise('等级',-50,'surformoffset'20,'采样率',fs);pnoisesig = pnoise(modsig);Constdiagram(PNOISEIG)

图星座图包含UiflowContainer,Uimenu,UIToolbar类型的轴和其他对象。轴包含2个类型的型号。该对象表示频道1。

相位噪声引入旋转抖动。

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

EVMTIME = EVM(MODSIG,PNOISIGE);Timescope(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);timescope = timescope('ylimits',[0 40],'采样率',fs,'timespansource''财产''时间跨度',1,......'showgrid',真的,'ylabel''EVM(%)');

估计EVM。绘制接收的信号星座图和时变EVM。

EVM = comm.evm('referenceignalsource''从参考星座估计'......'ReferenceConstellation',Refconst,......'正常化''平均星座力量''verigesdimensions',2);EVMTIME = EVM(rxsig);Constdiagram(rxsig)

图星座图包含UiflowContainer,Uimenu,UIToolbar类型的轴和其他对象。轴包含2个类型的型号。该对象表示频道1。

Timescope(EVMTIME)

确定RMS EVM。

EVMRMS = SQRT(均值(EVMTIME. ^ 2))
EVMRMS = 2.7199.

确定等效的SNR。

mer = comm.mer;snrest = mer(modsig(1:end-fltdelay),rxsig)
snrest = 31.4603.

组合效应

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

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

EVM = comm.evm('referenceignalsource''从参考星座估计'......'ReferenceConstellation',Refconst,......'正常化''平均星座力量''verigesdimensions',2);timescope = timescope('ylimits',[0 40],'采样率',fs,'timespansource''财产''时间跨度',1,......'showgrid',真的,'ylabel''EVM(%)');constdiagram = comm.constellationdiagram('ReferenceConstellation',Refconst);

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

amp = comm.memorylessnoninearity('IIP3',45,'ampm​​conversion',0);pnoise = comm.phaseNoise('等级',-55,'surformoffset'20,'采样率',fs);

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

txfiltout = txfilter(modsig);txsig =放大器(txfiltout);

添加相位噪声。通过AWGN通道通过受损信号。绘制星座图。

rxsig = awgn(txsig,snrdb);iqimbalsig = iqimbal(rxsig,ampimb,phimb);pnoisesig = pnoise(iqimbalsig);rxfiltout = rxfilter(pnoisesig);Constdiagram(rxfiltout)

图星座图包含UiflowContainer,Uimenu,UIToolbar类型的轴和其他对象。轴包含2个类型的型号。该对象表示频道1。

计算时变的EVM。绘制结果。

EVMTIME = EVM(rxfiltout);Timescope(EVMTIME)

确定RMS EVM。

EVMRMS = SQRT(均值(EVMTIME. ^ 2))
EVMRMS = 19.4992

估计SNR。

mer = comm.mer('referenceignalsource''从参考星座估计'......'ReferenceConstellation',Refconst);snrest = mer(rxfiltout)
snrest = 14.1996.

此值比指定值为30 dB的6 dB大约为6 dB,这意味着其他损伤的效果是显着的,并且会降低误码率性能。

也可以看看

|