数字调制系统在Matlab下的分析:理论建模与仿真实现
Ofweek 2023-12-19

   作者:肖应权

    数字带通传输系统为了进行长距离传输,克服传输失真,传输损耗,同时保证带内特性。必须对数字信号进行载波调制,将信号频谱搬移到高频段才能在信道中传输,因而现代通信系统采取数字调制技术。通过数字基带信号对载波某些参量进行控制,使之随机带信号的变化而变化。根据控制载波参量大的不同,数字调制有调幅(ASK),调频(FSK),调相(PSK) 三种基本形式。Matlab用于仿真,分析和修改,还可以应用图形界面功能GUI能为仿真系统生成一个人机交互界面,便于仿真系统的操作,因此采用matlab对数字系统进行仿真。通过对系统的仿真,我们可以更加直观的了解数字调制系统的性能及影响性能的因素,从而便于改进系统,获得更佳的传输性能。

  1. 二进制数字调制技术原理

  数字信号的传输方式分为基带传输和带通传输,在实际应用中,大多数信道具有带通特性而不能直接传输基带信号。为了使数字信号在带通信道中传输,必须使用数字基带信号对载波进行调制,以使信号与信道的特性相匹配。这种用数字基带信号控制载波,把数字基带信号变换为数字带通信号的过程称为数字调制。通常使用键控法来实现数字调制,比如对载波的振幅、频率和相位进行键控。

  2. 2ASK

  2ASK信号的产生方法通常有两种:模拟调制和键控法。解调有相干解调和非相干解调。P=1时f(t)=Acoswt;p=0时f(t)=0;其功率谱密度是基带信号功率谱的线性搬移。2ASK时域表示及波形,2ASK是利用代表数字信息("0"或"1")的基带矩形脉冲去键控一个连续的正弦型载波的振幅,使载波时断时续地输出。有载波输出时表示发送"1",无载波输出时表示发送"0"。

  数字基带信号如式(1)

  式中g(t)是宽度为Ts、高度为A的矩形脉冲。a n为数字序列{a n}的第n个码元的电平值。显然,上式给出的表达是单极性不归零码。载波 c(t)=COS(ωct+ 0 ), 初始相位 0 =0。

  对应的波形如图2:

  特点:"1"码期间有等幅正弦波输出,相当于开关开通;"0"码期间无输出,相当于开关切断。因此,数字调幅又称为开关键控(通断键控),记作OOK(On Off Keying)。

  两种调制方法如图3:

  图3 2ASK的两种调制方法

  2ASK在matlab下的仿真如下

  clear all

  close all

  i=10;

  j=5000;

  t=linspace(0,5,j);%取0,0.001,0.002,。。。5 共5001个点

  fc=10;

  fm=i/5;

  B=2*fc; %产生基带信号

  a=round(rand(1,i));%随机序列

  figure(2)

  plot(rand(1,i))

  st=t;

  for n=1:10

  if a(n)<1;

  for m=j/i*(n-1)+1:j/i*n %一个信号取500个点

  st(m)=0;

  end

  else

  for m=j/i*(n-1)+1:j/i*n

  st(m)=1;

  end

  end

  end

  figure(1);

  subplot(421);

  plot(t,st);

  axis([0,5,-1,2]);

  title('基带信号');

  s1=cos(2*pi*fc*t); %载波

  subplot(422);

  plot(s1);

  title('载波信号');

  e_2ask=st.*s1; %调制

  subplot(423);

  plot(t,e_2ask);

  title('已调信号');

  noise =rand(1,j);

  e_2ask=e_2ask+noise;%加入噪声

  subplot(424);

  plot(t,e_2ask);

  title('加入噪声的信号');

  at=e_2ask.*cos(2*pi*fc*t); %相干解调

  at=at-mean(at);

  subplot(425);

  plot(t,at);

  title('相乘后信号');

  [f,af] = T2F(t,at);%通过低通滤波器

  [t,at] = lpf(f,af,2*fm);

  subplot(426);

  plot(t,at);

  title('解调后波形');

  for m=0:i-1; %抽样判决

  if at(1,m*500+250)+0.5<0.5;

  for j=m*500+1:(m+1)*500;

  at(1,j)=0;

  end

  else

  for j=m*500+1:(m+1)*500;

  at(1,j)=1;

  end

  end

  end

  subplot(427);

  plot(t,at);

  axis([0,5,-1,2]);

  title('抽样判决后波形')

  3. 2FSK

  一个FSK信号可以看成是两个不同载波的2ASK信号的叠加。其解调和解调方法和ASK差不多。2FSK信号的频谱可以看成是f1和f2的两个2ASK频谱的组合。

  公式如下:

  clear all

  close all

  i=10;%基带信号码元数

  j=5000;

  a=round(rand(1,i));%产生随机序列

  t=linspace(0,5,j);

  f1=10;%载波1频率

  f2=5;%载波2频率

  fm=i/5;%基带信号频率

  B1=2*f1;%载波1带宽

  B2=2*f2;%载波2带宽

  st1=t; %产生基带信号

  for n=1:10

  if a(n)<1;

  for m=j/i*(n-1)+1:j/i*n

  st1(m)=0;

  end

  else

  for m=j/i*(n-1)+1:j/i*n

  st1(m)=1;

  end

  end

  end

  st2=t;

  for n=1:j; %基带信号求反

  if st1(n)>=1;

  st2(n)=0;

  else

  st2(n)=1;

  end

  end;

  figure(1);

  subplot(411);

  plot(t,st1);

  title('基带信号');

  axis([0,5,-1,2]);

  subplot(412);

  plot(t,st2);

  title('基带信号反码');

  axis([0,5,-1,2]);

  s1=cos(2*pi*f1*t) %载波信号

  s2=cos(2*pi*f2*t)

  subplot(413),plot(s1);

  title('载波信号1');

  subplot(414),plot(s2);

  title('载波信号2'); %调制

  F1=st1.*s1;%加入载波1

  F2=st2.*s2;%加入载波2

  figure(2);

  subplot(411);

  plot(t,F1);

  title('s1*st1');

  subplot(412);

  plot(t,F2);

  title('s2*st2');

  e_fsk=F1+F2;

  subplot(413);

  plot(t,e_fsk);

  title('2FSK信号')

  nosie=rand(1,j);

  fsk=e_fsk+nosie;

  subplot(414);

  plot(t,fsk);

  title('加噪声信号') %相干解调

  st1=fsk.*s1;%与载波1相乘

  [f,sf1] = T2F(t,st1);%通过低通滤波器

  [t,st1] = lpf(f,sf1,2*fm);

  figure(3);

  subplot(311);

  plot(t,st1);

  title('与载波1相乘后波形');

  st2=fsk.*s2;%与载波2相

  [f,sf2] = T2F(t,st2);%通过低通滤波器

  [t,st2] = lpf(f,sf2,2*fm);

  subplot(312);

  plot(t,st2);

  title('与载波2相乘后波形');

  for m=0:i-1; %抽样判决

  if st1(1,m*500+250)<0.25;

  for j=m*500+1:(m+1)*500;

  at(1,j)=0;

  end

  else

  for j=m*500+1:(m+1)*500;

  at(1,j)=1;

  end

  end

  end;

  subplot(313);

  plot(t,at);

  axis([0,5,-1,2]);

  title('抽样判决后波形')

 4. 2PSK

  2PSK以载波的相位变化作为参考基准的,当基带信号为0时相位相对于初始相位为0,当基带信号为1时相 对于初始相位为180°。

  clear all

  close all

  i=10;

  j=5000;

  fc=4;

  fm=i/5;

  B=2*fm;

  t=linspace(0,5,j); %产生基带信号

  a=round(rand(1,i));

  st1=t;

  for n=1:10

  if a(n)<1;

  for m=j/i*(n-1)+1:j/i*n

  st1(m)=0;

  end

  else

  for m=j/i*(n-1)+1:j/i*n

  st1(m)=1;

  end

  end

  end

  subplot(321);

  plot(t,st1);

  title('基带信号');

  axis([0,5,-1,2]);

  st2=t; %基带信号求反

  for k=1:j;

  if st1(k)>=1;

  st2(k)=0;

  else

  st2(k)=1;

  end

  end;

  subplot(322);

  plot(t,st2);

  title('基带信号反码');

  axis([0,5,-1,2]); %载波信号

  s1=sin(2*pi*fc*t);

  s2=sin(2*pi*fc*t+pi);

  subplot(323);

  plot(s1);

  title('载波信号'); %调制

  p1=st1.*s1;

  p2=st2.*s2;

  subplot(324);

  plot(t,p1);

  title('st1*s1');

  subplot(325);

  plot(t,p2);

  title('st2*s2');

  e_psk=p1+p2;

  subplot(326);

  plot(t,e_psk);

  title('e_2psk');

  noise=rand(1,j);

  psk=e_psk+noise;%加入噪声

  figure(2);

  subplot(411);

  plot(t,psk);

  title('加噪后波形'); %相干解调

  psk=psk.*s1;%与载波相乘

  subplot(412);

  plot(t,psk);

  title('与载波相乘后波');

  [f,af] = T2F(t,psk);%通过低通滤波器

  [t,psk] = lpf(f,af,B);

  subplot(413);

  plot(t,psk);

  title('通过低通滤波器波形'); %抽样判决

  for m=0:i-1;

  if psk(1,m*500+250)<0;

  for j=m*500+1:(m+1)*500;

  psk(1,j)=0;

  end

  else

  for j=m*500+1:(m+1)*500;

  psk(1,j)=1;

  end

  end

  end

  subplot(414);

  plot(t,psk);

  axis([0,5,-1,2]);

  title('抽样判决后波形')

  通过以上的仿真分析,我们可以知道,在误码率相同的情况下,所需要的信噪比2ASK比2FSK高3dB,2fsk比2psk高3db,2ask比2psk高6db。也就是说,若信噪比r一定,2psk系统的误码率比2fsk的小,2fsk系统的误码率比2ask的小,由此看来,在抗加性高斯白噪声方面,想干2psk性能最好,2fsk次之,2ask最差。当然,后面还有DPSK,等等改进型的。

声明: 本文转载自其它媒体或授权刊载,目的在于信息传递,并不代表本站赞同其观点和对其真实性负责,如有新闻稿件和图片作品的内容、版权以及其它问题的,请联系我们及时删除。(联系我们,邮箱:evan.li@aspencore.com )
0
评论
  • 相关技术文库
  • EDA
  • 仿真
  • CAD
  • 芯片
下载排行榜
更多
评测报告
更多
EE直播间
更多
广告