基于MATALAB下的16QAM和16PSK的仿真及对比

  • 格式:doc
  • 大小:1.15 MB
  • 文档页数:13

4.3 数字信号的载波调制 4.3.1 正交相移键控(QPSK) QPSK的调制原理是将接收信号乘以同频正弦波就可以解调出相移信息,而其本身是与频率波无关的直流信号。QPSK的Q表示正交,即载波有同相和正交两种。这种调制方式能让同一个载波传输2bit的信息,让载波频带利用率提高了一倍。QPSK是在M=4时,它的载波有四种相位,分别为45°,135°,225°,315°。 QPSK调制采用的是正交调幅方式,即:两路正交边带信号。如图13所示。

图13 QPSK信号产生原理图 QPSK是一种恒包络调制,其信号的平均功率是不变的,不会随着幅度衰减而受到影响。因其抗干扰能力强,所以多被用于卫星数字电视信号的传输。

4.3.2 正交振幅键控(QAM) 它是把2ASK和2PSK两种调制结合起来的调制技术,使得带宽得到双倍扩展。QAM调制技术用两路独立的基带信号对频率相同、相位正交的两个载波进行抑制载波双边带调幅,并将已调信号加在一起进行传输。nQAM代表n个状态的正交调幅,一般有二进制(4QAM)、四进制(16QAM)、八进制(64QAM)。 我们需要得到多进制的QAM信号,需将二进制信号转换为m电平的多进制信号,然后进行正交调制,最后相加输出。如图14所示。

输入2/m电平变化器)(tx串/并变换2/m电平变化器)(ty

2/载波发生器)(tSQAM

tccos

tcsin

A

B

11•••

01••• 图14 QAM信号产生原理图 QAM信号用正交相干解调方法进行解调,通过解调器将QAM信号进行正交相干解调后,用低通滤波器LPF滤除乘法器产生的高频分量,输出抽样判决后可恢复出的两路独立电平信号,最后将多电平码元与二进制码元间的关系进行2/m

转换,将电平信号转换为二进制信号,经并/串变换后恢复出原二进制基带信号。

4.3.3 多电平残留边带调制(VSB) VSB是一种幅度调制,它在双边带调制的基础上,通过设计适当的输出滤波器,使信号一个边带的频谱成分原则上保留,另一个边带频谱成分只保留小部分。 VSB的调制方法既比双边带调制节省频谱,又比单边带易于解调,因此在载波调制中得到广泛运用。

4.4 16QAM和16PSK的MATALAB仿真和性能对比 4.4.1 MATALAB的简介 MATLAB(Matrix Laboratory)是一款数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。MATLAB 的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。附加的工具箱(单独提供的专用MATLAB 函数集)扩展了MATLAB 环境,以解决这些应用领域内特定类型的问题。

4.4.2 16QAM信号仿真 16QAM调制框图:

二进制二进制变换为四进制

串/并变换

成型滤波器tccos

tcsin

}{2na

}{12na}{ka

成型滤波器四进制幅度序列四进制幅度序列二进制变换为四进制

)(tL

)(tQ信号QAM16 图15 16QAM信号调制框图 16QAM最佳接收框图:

串/并变换)(xr)(1tf0(_)dtTs

0(_)dtTs

)(2tf

判决器判决器输出

Ts

Ts1r

2r 图16 16QAM最佳接收框图 (1)、首先生成一个随机且长度为10000的二进制比特流,并画出了前50个比特的信号图(如图17所示)。 (2)、在MATLAB中16QAM调制器要求输入的信号为0-15这16个值,所以需要用函数reshape和bi2de将二进制的比特流转换为对应的十六进制信号。 (3)、利用MATLAB中的modem.qammod函数生成16QAM调制器,再通过其对信号进行调制并画出信号的星座图。 (4)、通过awgn 信道在16QAM信号中加入高斯白噪声(假设Eb/No=15db)。 (5)、利用MATLAB中的scatterplot函数画出通过信道后接受到的信号的星座图。 (6)、利用MATLAB中的eyediagram函数生成经过信道后的眼图。 (7)、利用MATLAB中的demodulate和modem.qamdemod函数生成解调器对16QAM信号的解调,并将十六进制信号转化成二进制比特流信息。 (8)、用得到比特流信息除以原始发送的比特流信息来计算误码率。

程序如下: >> M=16; >> k=log2(M); >> n=100000; %比特序列长度 >> samp=1; %过采样率 >> x=randint(n,1); %生成随机二进制比特流 >> stem(x(1:50),'filled'); %画出相应的二进制比特流信号 >> title('二进制随机比特流'); >> xlabel('比特序列');ylabel('信号幅度'); >> x4=reshape(x,k,length(x)/k); %将原始的二进制比特序列每四个一组分组,并排列成k行length(x)/k列的矩阵 >> xsym=bi2de(x4.','left-msb'); %将矩阵转化为相应的16进制信号序列 >> figure; >> stem(xsym(1:50)); %画出相应的16进制信号序列 >> title('16进制随机信号'); >> xlabel('信号序列');ylabel('信号幅度'); >> >> y=modulate(modem.qammod(M),xsym); %用16QAM调制器对信号进行调制 >> scatterplot(y); %画出16QAM信号的星座图 >> text(real(y)+0.1,imag(y),dec2bin(xsym)); >> axis([-5 5 -5 5]); >> >> EbNo=15; >> snr=EbNo+10*log10(k)-10*log10(samp); %信噪比 >> yn=awgn(y,snr,'measured'); %加入高斯白噪声 >> h=scatterplot(yn,samp,0,'b.'); %经过信道后接收到的含白噪声的信号星座图 >> hold on; >> >> scatterplot(y,1,0,'k+',h); %加入不含白噪声的信号星座图 >> title('接收信号星座图'); >> legend('含噪声接收信号','不含噪声信号'); >> axis([-5 5 -5 5]); >> hold on; >> >> eyediagram(yn,2); %眼图 >> >> yd=demodulate(modem.qamdemod(M),yn); %此时解调出来的是16进制信号 >> z=de2bi(yd,'left-msb'); %转化为对应的二进制比特流 >> z=reshape(z.',numel(z),1'); >> >> [number_of_errors,bit_error_rate]=biterr(x,z)

运行结果: number_of_errors = 0

bit_error_rate = 0 相关截图: 图17 二进制随机比特流 图18 16QAM信号序列 图19 16QAM信号的星座图

图20 含白噪声的信号星座图 图21 不含白噪声的信号星座图

图22 眼图 4.4.3 16PSK信号仿真 16PSK调制框图:

二进制将每4比特

码元变换为相应的串/并变换

tccos

tcsin

成型滤波器)(tL

)(tQ}{kbisaaic,

},{1nb},{2nb

},{3nb},{4nb

},{naic

},{nais

)(tGT

成型滤波器)(tGT

信号PSK16八电平序列八电平序列 图23 16PSK调制框图

16PSK最佳接收框图:

最大似然检测)(xr)(1tf0(_)dtTs

0(_)dtTs

)(2tf输出

TsTs1r

2r 图24 16PSK最佳接收框图

(1)、生成一个随机的二进制比特流。 (2)、将二进制比特流转换成对应的十六进制信号。 (3)、用16PSK调制器对信号进行调制并画出信号的星座图。 (4)、在16PSK信号中加入高斯白噪声。 (5)、画出通过信道之后接收信号的星座图。 (6)、生成信号眼图。 (7)、16PSK信号的解调。 (8)、计算误码率。

程序如下: >> M=16; >> k=log2(M); >> n=100000; %比特序列长度 >> samp=1; %过采样率 >> x=randint(n,1); %生成随机二进制比特流 >> stem(x(1:50),'filled'); %画出相应的二进制比特流信号