基于matlab的64QAM通信系统的仿真

一、实验目的和意义

从信号平面自用率方面看,单独使用幅度或相位携带信息时,不能最充分地利用信号平面。而M-QAM调制则正是解决这一问题的一种调制方式,采用幅度相位相结合的调制方式,可以使同样大的信息平面内有更多的信息点。

从抗干扰方面看,在星座图上,采用M-QAM调制的信息的各点的距离要大于采用其它调制的,由星座图上点的特性可知,距离越大,抗干扰能力越强,所以在抗干扰能力方面,QAM调制也优于其它几种调制方式。

由上可知,在现代数字通信系统中,幅度与相位相结合的多进制调制有着重要的意义,并且运用也日益广泛。

二、实验原理

  QAM是幅度和相位联合调制的技术,它同时利用了载波的幅度和相位来传递信息比特,不同的幅度和相位代表不同的编码符号。因此,在最小距离相同的条件下,QAM星座图中可以容纳更多的星座点即可实现更高的频带利用率。本设计中所采用的64QAM为64进制的幅度相位相结合调制。其星座图如图1所示。

图1  64QAM矩形星座图

三、实验设计要求:

  1. NRZ信号序列生成;
  2. 根据矩形星座图对消息序列进行MQAM星座映射,取M=64进制(或以上);
  3. MQAM调制;
  4. 加噪声;
  5. 解调QAM;
  6. MQAM星座解映射及判决
  7. 计算误码率,并与理论误码率比较,作图表示出64QAM的信噪比与误码率的关系曲线。

图2  实验流程框图

 

四、详细实验步骤

1、首先进行系统的分析和设计,整个仿真实验分为如下几个部分:随机序列的产生,序列的串并转换及64QAM正交调制,星座图的绘制(包含原始信号和添加10dB和20dB噪声后的信号),加入不同噪声,进行64QAM解调、误码率的测量和误比特率的测量,最后绘图显示该仿真电路在不同信噪比下的误码率,并与理论计算的误码率比较。

2、仿真程序设计

1)NRZ信号源产生

2)64QAM星座映射调制

3)AWGN

4)星座图

5)MQAM解调、星座解映射和判决

6)经过以上步骤的设计,实现了64QAM调制解调的全过程仿真,最后设计在信号仿真过程中,误符号率和误比特率的测量和图示。

为了测量信噪比不同情况下的误码率,需要创建一个循环程序,让信噪比从0递增,在各信噪比条件下,进行信道高斯白噪声加入,将添加噪声后的信号和原调制信号对比,计算出该仿真系统的误符号率,再进行64QAM的解调和星座解映射和判决,将结果和原串行随机信号对比,计算出该仿真系统的误比特率。

(1)创建循环程序,进行不同信噪比的高斯白噪声信号添加

(2)误符号率计算

(3)误比特率计算

(4)理论误符号率计算

(5)根据以上计算结果,用Matlab画图程序作出仿真误符号率、理论误符号率、仿真误比特率及理论误比特率的图形,可以直观看到在不同信噪比的干扰信号下,该仿真系统的误码率。

最后,我们来看看仿真过程中的图片:

图3 64QAM信号星座图

图4 10dB信噪比时信号星座图

图5 20dB信噪比时信号星座图

图6 该仿真系统在不同信噪比下的误码率曲线

部分Matlab代码如下:

clc;

close all;

clear all;

echo off; %关闭运行中的命令显示

global num;

k=log2(64);

%%% 产生0,1随机序列

   num=1200000;

  inbits = randi([0,1],1,num);

     tx_bits= inbits;

      % % QAM64星座映射

   tx_64QAM=Mapping_64QAM(tx_bits);        %对120万比特进行格雷映射和调制,得到已调复信号   

   mod_out=tx_64QAM;

% %% 画出星座图

figure

plot(real(mod_out), imag(mod_out), 'r.');

title('原始信号星座图');         %显示原图

figure

SNR_test=awgn(mod_out,10);%

plot(real(SNR_test), imag(SNR_test), 'b.');

title('10dB信噪比时信号星座图');         %

%hold on;

figure

SNR_test=awgn(mod_out,20);%

plot(real(SNR_test), imag(SNR_test), 'b.');

title('20dB信噪比时信号星座图');         %

grid on;

%%加上AWGN噪声信号----取不同SNR

upebn0=15;

errorsymbol = zeros(1,upebn0+1);

errorbit = zeros(1,upebn0+1);

for ebn0=0:1:upebn0

     SNR = ebn0+10*log10(k); %ebn0与SNR的换算关系

     noisySignal=awgn(mod_out,SNR,'measured');%

    %计算误符号率

    a=Cal_ser(noisySignal,mod_out);

    errorsymbol(ebn0+1)=a*6/num;

  rx_64QAM=noisySignal;

  % % % QAM64星座解映射

  [result]=Demapping_64QAM(rx_64QAM);

%%%计算误比特率

    b=0;

    for i=1:1:num

        if result(i) ~= tx_bits(i)

            b=b+1;

        end

    end

    errorbit(ebn0+1)=b/num;

end;

%%

%计算理论误码率

BER=zeros(1,upebn0+1);

for ebn0=0:1:upebn0

    m = 6*10^(ebn0/10);

    BER(ebn0+1) = 2*erfc(sqrt(3*m/(2*63)))-(erfc(sqrt((3*m/(2*63))))).^2;

end

%%

%画出误码率曲线

ebn0=0:1:upebn0;

figure

semilogy(ebn0,errorsymbol,'-r*');hold on;

semilogy(ebn0,BER,'-b*');hold on;

semilogy(ebn0,errorbit,'s-r');hold on;

semilogy(ebn0,BER/6,'s-b');hold off;

legend('仿真误符号率曲线','理论误符号率曲线','仿真误比特率曲线','理论误比特率曲线');xlabel('ebn0(dB)');

title('64QAM误码率曲线');grid on;

set(gcf,'color','w');

 

 

评论 46
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值