4.3数字信号的载波调制4.3.1正交相移键控(QPSK)QPSK的调制原理是将接收信号乘以同频正弦波就可以解调出相移信息,而其本身是与频率波无关的直流信号。QPSK的Q表示正交,即载波有同相和正交两种。这种调制方式能让同一个载波传输2bit的信息,让载波频带利用率提高了一倍。QPSK是在M=4时,它的载波有四种相位,分别为45°,135°,225°,315°。QPSK调制采用的是正交调幅方式,即:两路正交边带信号。如图13所示。图13QPSK信号产生原理图QPSK是一种恒包络调制,其信号的平均功率是不变的,不会随着幅度衰减而受到影响。因其抗干扰能力强,所以多被用于卫星数字电视信号的传输。4.3.2正交振幅键控(QAM)它是把2ASK和2PSK两种调制结合起来的调制技术,使得带宽得到双倍扩展。QAM调制技术用两路独立的基带信号对频率相同、相位正交的两个载波进行抑制载波双边带调幅,并将已调信号加在一起进行传输。nQAM代表n个状态的正交调幅,一般有二进制(4QAM)、四进制(16QAM)、八进制(64QAM)。我们需要得到多进制的QAM信号,需将二进制信号转换为m电平的多进制信号,然后进行正交调制,最后相加输出。如图14所示。输入2/m电平变化器)(tx串/并变换2/m电平变化器)(ty2/载波发生器)(tSQAMtccostcsinAB11•••01•••图14QAM信号产生原理图QAM信号用正交相干解调方法进行解调,通过解调器将QAM信号进行正交相干解调后,用低通滤波器LPF滤除乘法器产生的高频分量,输出抽样判决后可恢复出的两路独立电平信号,最后将多电平码元与二进制码元间的关系进行2/m转换,将电平信号转换为二进制信号,经并/串变换后恢复出原二进制基带信号。4.3.3多电平残留边带调制(VSB)VSB是一种幅度调制,它在双边带调制的基础上,通过设计适当的输出滤波器,使信号一个边带的频谱成分原则上保留,另一个边带频谱成分只保留小部分。VSB的调制方法既比双边带调制节省频谱,又比单边带易于解调,因此在载波调制中得到广泛运用。4.416QAM和16PSK的MATALAB仿真和性能对比4.4.1MATALAB的简介MATLAB(MatrixLaboratory)是一款数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。MATLAB的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。附加的工具箱(单独提供的专用MATLAB函数集)扩展了MATLAB环境,以解决这些应用领域内特定类型的问题。4.4.216QAM信号仿真16QAM调制框图:二进制二进制变换为四进制串/并变换成型滤波器tccostcsin}{2na}{12na}{ka成型滤波器四进制幅度序列四进制幅度序列二进制变换为四进制)(tL)(tQ信号QAM16图1516QAM信号调制框图16QAM最佳接收框图:串/并变换)(xr)(1tf0(_)dtTs0(_)dtTs)(2tf判决器判决器输出TsTs1r2r图1616QAM最佳接收框图(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([-55-55]);EbNo=15;snr=EbNo+10*log10(k)-10*log10(samp);%信噪比yn=awgn(y,snr,'measured');%加入高斯白噪声h=scatterplot(yn,samp,0,'b.');%经过信道后接收到的含白噪声的信号星座图holdon;scatterplot(y,1,0,'k+',h);%加入不含白噪声的信号星座图title('接收信号星座图');legend('含噪声接收信号','不含噪声信号');axis([-55-55]);holdon;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=0bit_error_rate=0相关截图:图17二进制随机比特流图1816QAM信号序列图1916QAM信号的星座图图20含白噪声的信号星座图图21不含白噪声的信号星座图图22眼图4.4.316PSK信号仿真16PSK调制框图:二进制将每4比特码元变换为相应的串/并变换tccostcsin成型滤波器)(tL)(tQ}{kbisaaic,},{1nb},{2nb},{3nb},{4nb},{naic},{nais)(tGT成型滤波器)(tGT信号PSK16八电平序列八电平序列图2316PSK调制框图16PSK最佳接收框图:最大似然检测)(xr)(1tf0(_)dtTs0(_)dtTs)(2tf输出TsTs1r2r图2416PSK最佳接收框图(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');%画出相应的二进制比特流信号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进制信号序列xlabel('信号序列');ylabel('信号幅度');y=modulate(modem.pskmod(M),xsym);%用16PSK调制器对信号进行调制scatterplot(y);%画出16PSK信号的星座图text(real(y)+0.1,imag(y),dec2bin(xsym));axis([-55-55]);EbNo=15;%假设Eb/No=15dbsnr=EbNo+10*log10(k)-10*log10(samp);%信噪比yn=awgn(y,snr,'measured');%加入高斯白噪声h=scatterplot(yn,samp,0,'b.');%经过信道后接收到的含白噪声的信号星座图holdon;scatterplot(y,1,0,'k+',h);%加入不含高斯白噪声的信号星座图title('接收信号星座图');legend('含噪声接收信号','不含噪声接收信号');axis([-55-55]);holdoff;eyediagram(yn,2);%眼图yd=demodulate(modem.pskdemod(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=94bit_error_rate=9.4000e-004相关截图:图25二进制随机比特流图2616PSK的信号序列图2716PSK信号的星座图图28含高斯白噪声的信号星座图图29不含高斯白噪声的信号星座图图30眼图4.4.4仿真结果分析在相同的比特流和相同的Eb/No=15db条件下,对比结果如下:(1)、误码率是衡量数据在规定时间内传输精确性的指标。误码率=传输中的误码/传输的总码数*100%。16QAM误码率为0,而16PSK误码率为94。证明了16QAM误码性能高于16PSK。(2)、通常,把信号矢量端点的分布图称为星座图。16QAM星座图中信号点间距离要比16PSK星座图中信号点间距离大。(3)、眼图是示波器屏幕上所显示的数字通信符号,由许多波形部分重叠形成,其形状类似“眼”的图形。“眼”大表示系统传输特性好;“眼”小表示系统中存在符号间干扰。对比后我们发现,16QAM信号眼图“睁眼较大”,比较清晰,说明性能较好,而16PSK的眼图基本闭合,性能不良。(4)、带宽利用率就是对现有信道的有效利用数比上带宽总数,用于比较恒定带宽上的利用效率。16QAM和16PSK信号的宽带利用率