16QAM 、32QAM 在Matlab 中的仿真
1.原理:16QAM 是用两路独立的正交4ASK 信号叠加而成,4ASK 是用多电平信号去键控载波而得到的信号。它是2ASK 体制的推广,和2ASK 相比,这种体制的优点在于信息传输速率高。 正交幅度调制是利用多进制振幅键控(MASK )和正交载波调制相结合产生的。16进制的正交振幅调制是一种振幅相位联合键控信号。16QAM 的产生有2种方法:(1)正交调幅法,它是有2路正交的四电平振幅键控信号叠加而成;(2)复合相移法:它是用2路独立的四相位移相键控信号叠加而成。这里采用正交调幅法。16QAM 正交调制的原理如下图1所示。
串并转换
基带信号x
电平映射
电平映射
成形滤波
成形滤波
X
X
载波发生器
90度相移
coswt
-sinwt
+
已调信号y
Qn
In
图一 正交调制原理
EPF
恢复信号x
时钟恢复
LPF
并串转换
抽样判决
X
X
载波恢复
90度相移
coswt
-sinwt
已调信号y
Qn
In
LPF
抽样判决
图二 相干解调原理图
2、实验仿真条件:window 7操作系统
3、结果分析:
从图中基带信号波形和并串转换输出波形图可以看出,16QAM的误比特率要比32QAM的优秀很多;而且16QAM的频谱也要比32QAM的有规律一些。
4、总结:信号矢量端的分布图称为星座图,这里用低通滤波器输出波形的星座图来描述16QAM、32QAM信号的空间分布情况,从图中可以看出由于受高斯白噪声,低通滤波器等的影响,使接收16QAM、32QAM信号的相位有所偏移,但还是围绕调制时的16个或者32个相位点。
5、附录程序代码:
附源程序代码:
x=randint(30000,1); %基带信号
y1=modulate(modem.qammod('M',16,'InputType','Bit'),x);%16QAM调制信号
y2=modulate(modem.qammod('M',32,'InputType','Bit'),x);%32QAM调制信号
%加高斯白噪声
EbNo=-5:1:10;
for n=1:length(EbNo);
M1=16;
k1=log2(M1);
snr(n)=EbNo(n)+10*log10(k1);
ynoisy1=awgn(y1,snr(n),'measured');
z1=demodulate(modem.qamdemod('M',16,'OutputType','Bit'),ynoisy1);
[nErrors1(n),BITBER1(n)]=biterr(x,z1);
end
for n=1:length(EbNo);
M2=32;
k2=log2(M2);
snr(n)=EbNo(n)+10*log10(k2);
ynoisy2=awgn(y2,snr(n),'measured');
z2=demodulate(modem.qamdemod('M',32,'OutputType','Bit'),ynoisy2);
[nErrors2(n),BITBER2(n)]=biterr(x,z2);
end
%画误码率曲线
semilogy(EbNo,BITBER1,'r-*',EbNo,BITBER2,'b-*');
title('误比特率性能');
xlabel('Eb(dB)');
ylabel('BER');
legend('16QAM误码率','32QAM误码率');
grid on;
%画星座图
h=scatterplot(ynoisy1(1:1*5e3),1,0,'g.');
hold on;
scatterplot(y1(1:1*5e3),1,0,'r*',h);
title('16QAM星座图');
legend('接收信号','星座点');
hold off;
h=scatterplot(ynoisy2(1:1*5e3),1,0,'g.');
hold on;
scatterplot(y2(1:1*5e3),1,0,'r*',h);
title('32QAM星座图');
legend('接收信号','星座点');
hold off;
%画频谱图
F=fft(y1,1024);
figure(4)
subplot(121);
plot(abs(F));
title('16QAM频谱');
F=fft(y2,1024);
subplot(122);
plot(abs(F));
title('32QAM频谱');