1、二进制数字调制与解调系统的设计MATLAB及SIMULINK建模环境简介MATLAB 是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和SIMULINK两大部分。Simulink是MATLAB最重要的组件之一,它提供一个动态系统建模、仿真和综合分析的集成环境。在该环境中,无需大量书写程序,而只需要通过简单直观的鼠标操作,就可构造出复杂的系统。Simulink具有适应面广、结构和流程清晰及仿真精细、贴近实际、效率高、灵活等优点,并基于以上优点Simulink已被广泛应用于控制理论和数字信号处理的复杂
2、仿真和设计。同时有大量的第三方软件和硬件可应用于或被要求应用于Simulink。 Simulink是MATLAB中的一种可视化仿真工具, 是一种基于MATLAB的框图设计环境,是实现动态系统建模、仿真和分析的一个软件包,被广泛应用于线性系统、非线性系统、数字控制及数字信号处理的建模和仿真中。Simulink可以用连续采样时间、离散采样时间或两种混合的采样时间进行建模,它也支持多速率系统,也就是系统中的不同部分具有不同的采样速率。为了创建动态系统模型,Simulink提供了一个建立模型方块图的图形用户接口(GUI) ,这个创建过程只需单击和拖动鼠标操作就能完成,它提供了一种更快捷、直接明了的方式
3、,而且用户可以立即看到系统的仿真结果。数字通信系统的基本模型从消息传输角度看,该系统包括了两个重要交换,即消息与数字基带信号之间的交换,数字基带信号与信道信号之间的交换.通常前一种交换由发收端设备完成.而后一种交换则由调制和解调完成.数字通信系统模型一、2ASK调制解调 基本原理2ASK是利用载波的幅度变化来传递数字信息,而其频率和初始相位保持不变。其信号表达式为: ,S (t)为单极性数字基带信号。2ASK幅移键控幅移键控(ASK)相当于模拟信号中的调幅,只不过与载频信号相乘的是二进数码而已。幅移就是把频率、相位作为常量,而把振幅作为变量,信息比特是通过载波的幅度来传递的。由于调制信号只有0
4、或1两个电平,相乘的结果相当于将载频或者关断,或者接通,它的实际意义是当调制的数字信号1时,传输载波;当调制的数字信号为0时,不传输载波。由图可以看出2ASK信号的时间波形e2ASK(t)随二进制基带信号s(t)通断变化。所以又被称为通断键控信号2ASK信号的产生方法通常有两种:模拟调制法和键控法。模拟调制法使用乘法器实现键控法使用开关电路实现2ASK的调制方法2ASK有两种基本解调方法:相干解调法(同步检测法)和非相干解调法(包络检波法)。相干解调需要将载频位置的已调信号频谱重新搬回原始基带位置,因此用相乘器与载波相乘来实现。为确保无失真还原信号,必须在接收端提供一个与调制载波严格同步的本地
5、载波,这是整个解调过程能否顺利完好进行的关键。 相干解调非相干解调 2ASK信号非相干解调过程的时间波形振幅键控是利用载波的幅度变化来传递数字信息,而频率和初始相位保持不变。在2ASK中:S2ask=m(t)*cos(2*pi*f*t),其中m(t)为数字信号,后者为载波。载波在二进制基带信号控制下通断变化,所以又叫通-断键控(OOK)。2ASK的产生方法有两种:模拟调制和键控法而解调也有两中基本方式:非相干解调(包络检波)和相干解调(同步检测法)DS2ask=s(t)*cos(2*pi*f*t) =0.5*m(t)+0.5*m(t)*cos(2*wc*t) 乘以相干载波后,只要滤去高频部分就
6、可以了本次仿真使用相干解调方式:2ask信号 带通滤波器与与载波相乘低通滤波器 抽样判决 输出以下就是matlab的仿真结果极其频谱图(省去了带通filter)可以看到解调后的信号与信源有一定的延时。通过观察频谱图,用放大镜可以清楚的看到,2ask实现了频谱的搬移,将基带信号搬移到了fc=150hz的频率上,而且若只计频谱的主瓣则有: B2ask=2fs,fs=1/Ts其中Ts为一个码元宽度即:2ask信号的传输带宽是码元传输速率的2倍Matlab程序实现clc;clear all;close all;%信源 a=randint(1,15,2);t=0:0.001:0.999;m=a(ceil
7、(15*t+0.01); subplot(511)plot(t,m);axis(0 1.2 -0.2 1.2);title(信源);%载波f=150;carry=cos(2*pi*f*t);%2ASK调制st=m.*carry;subplot(512);plot(t,st)axis(0 1.2 -1.2 1.2)title(2ASK信号)%加高斯噪声 nst=awgn(st,70);%解调部分nst=nst.*carry;subplot(513)plot(t,nst)axis(0 1.2 -0.2 1.2);title(乘以相干载波后的信号)%低通滤波器设计wp=2*pi*2*f*0.5;ws
8、=2*pi*2*f*0.9;Rp=2;As=45;N,wc=buttord(wp,ws,Rp,As,s);B,A=butter(N,wc,s);%低通滤波h=tf(B,A); %转换为传输函数dst=lsim(h,nst,t);subplot(514)plot(t,dst)axis(0 1.2 -0.2 1.2);title(经过低通滤波器后的信号);%判决器k=0.25;pdst=1*(dst0.25);subplot(515)plot(t,pdst)axis(0 1.2 -0.2 1.2);title(经过抽样判决后的信号)%频谱观察%调制信号频谱T=t(end);df=1/T;N=len
9、gth(st);f=(-N/2:N/2-1)*df;sf=fftshift(abs(fft(st);figure(2)subplot(411)plot(f,sf)title(调制信号频谱)%信源频谱mf=fftshift(abs(fft(m);subplot(412)plot(f,mf)title(信源频谱)% 乘以相干载波后的频谱mmf=fftshift(abs(fft(nst);subplot(413)plot(f,mmf)title(乘以相干载波后的频谱)%经过低通滤波后的频谱dmf=fftshift(abs(fft(dst);subplot(414)plot(f,dmf)title(经
10、过低通滤波后的频谱); 二、2FSK调制解调频移键控是利用载波的频率来传递数字信号,在2FSK中,载波的频率随着二进制基带信号在f1和f2两个频率点间变化,频移键控是利用载波的频移变化来传递数字信息的。在2FSK中,载波的频率随基带信号在f1和f2两个频率点间变化。故其表达式为:典型波形如下图所示。由图可见。2FSK信号可以看作两个不同载频的ASK信号的叠加。因此2FSK信号的时域表达式又可以写成:2FSK数字系统的调制原理2FSK调制就是使用两个不同的频率的载波信号来传输一个二进制信息序列。可以用二进制“1”来对应于载频f1,而“0”用来对应于另一相载频w2的已调波形,而这个可以用受矩形脉冲
11、序列控制的开关电路对两个不同的独立的频率源w1、f2进行选择通。如下原理图:2FSK的解调方式2FSK的解调方式有两种:相干解调方式和非相干解调方式.下面我们将详细的介绍:1 非相干解调经过调制后的2FSK数字信号通过两个频率不同的带通滤波器f1、f2滤出不需要的信号,然后再将这两种经过滤波的信号分别通过包络检波器检波,最后将两种信号同时输入到抽样判决器同时外加抽样脉冲,最后解调出来的信号就是调制前的输入信号。其原理图如下图所示:2 相干解调根据已调信号由两个载波f1、f2调制而成,则先用两个分别对f1、f2带通的滤波器对已调信号进行滤波,然后再分别将滤波后的信号与相应的载波f1、f2相乘进行
12、相干解调,再分别低通滤波、用抽样信号进行抽样判决器即可。原理图如下:Matlab程序实现Fc=150; %载频 Fs=40; %系统采样频率 Fd=1; %码速率 N=Fs/Fd; df=10; numSymb=25;%进行仿真的信息代码个数 M=2; %进制数 SNRpBit=60;%信噪比 SNR=SNRpBit/log2(M);%60 seed=12345 54321; numPlot=15; x=randsrc(numSymb,1,0:M-1);%产生25个二进制随机码 figure(1) stem(0:numPlot-1,x(1:numPlot),bx);%显示15个码元,杆图,从x
13、的前十五个随机数中选取 title(二进制随机序列) xlabel(Time); ylabel(Amplitude); %调制 y=dmod(x,Fc,Fd,Fs,fsk,M,df);%数字带通调制 numModPlot=numPlot*Fs; %15*40 t=0:numModPlot-1./Fs;%数组除法(仿真时间) figure(2) plot(t,y(1:length(t),b-); axis(min(t) max(t) -1.5 1.5); title(调制后的信号) xlabel(Time); ylabel(Amplitude); %在已调信号中加入高斯白噪声 randn(sta
14、te,seed(2); %生成-2到+2之间的随机数矩阵 y=awgn(y,SNR-10*log10(0.5)-10*log10(N),measured,dB);%在已调信号中加入高斯白噪声 figure(3) plot(t,y(1:length(t),b-);%画出经过信道的实际信号 axis(min(t) max(t) -1.5 1.5); title(加入高斯白噪声后的已调信号) xlabel(Time); ylabel(Amplitude);%相干解调 figure(4) z1=ddemod(y,Fc,Fd,Fs,fsk/eye,M,df); title(相干解调后的信号的眼图) %带
15、输出波形的相干M元频移键控解调 figure(5) stem(0:numPlot-1,x(1:numPlot),bx); hold on; stem(0:numPlot-1,z1(1:numPlot),ro); hold off; axis(0 numPlot -0.5 1.5); title(相干解调后的信号原序列比较) legend(原输入二进制随机序列,相干解调后的信号) xlabel(Time); ylabel(Amplitude); %非相干解调 figure(6) z2=ddemod(y,Fc,Fd,Fs,fsk/eye/noncoh,M,df); title(非相干解调后的信号的
16、眼图) %带输出波形的非相干M元频移键控解调 figure(7) stem(0:numPlot-1,x(1:numPlot),bx); hold on; stem(0:numPlot-1,z2(1:numPlot),ro); hold off; axis(0 numPlot -0.5 1.5); title(非相干解调后的信号) legend(原输入二进制随机序列,非相干解调后的信号) xlabel(Time); ylabel(Amplitude);%误码率统计 errorSym ratioSym=symerr(x,z1); figure(8) simbasebandex(0:1:5); ti
17、tle(相干解调后误码率统计) errorSym ratioSym=symerr(x,z2); figure(9) simbasebandex(0:1:5); title(非相干解调后误码率统计) %滤除高斯白噪声 Delay=3;R=0.5;PropD=0; %滞后3s yf,tf=rcosine(Fd,Fs,fir,R,Delay); %升余弦函数 yo2,to2=rcosflt(y,Fd,Fs,filter,yf); %加入高斯白噪声后的已调信号和经过升余弦滤波器后的已调信号 t=0:numModPlot-1./Fs; figure(10) plot(t,y(1:length(t),r-
18、); hold on; plot(to2,yo2,b-);%滤出带外噪声 hold off; axis(0 30 -1.5 1.5); xlabel(Time); ylabel(Amplitude); legend(加入高斯白噪声后的已调信号,经过升余弦滤波器后的已调信号) title(升余弦滤波前后波形比较) eyediagram(yo2,N);%眼图 title(加入高斯白噪声后的已调信号的眼图)仿真结果 三、2psk信号调制解调2psk信号的调制不能采用包络检测的方法,只能进行相干解调,其原理框图如下:不考虑噪声时,带通滤波器输出可以表示为y(t)=cos(wct+n)式中n为2psk信
19、号某一码元的初相。n=0时,代表数字“0”, n=时,代表数字“1”。与同步载波COSwct相乘后,输出为Z(t)=COS(wct+n) COSwct=1/2cosn+1/2cos(2wct+n)经过低通滤波器滤除高频分量,得解调输出为根据发送端产生2psk信号时n代表数字信息1或0的规定,以及接收端x(t)与n的关系特性,抽样判决器的判决准则为其中,x为x(t)在抽样时刻的值。2psk信号相干解调的过程实际上就是输入已调信号与本地载波信号进行极性比较的过程,故常称为极性比较解调。Matlab程序实现clear ;close all; fs=8e5; %抽样频率fm=20e3; %基带频率n=
20、2*(6*fs/fm);final=(1/fs)*(n-1);fc=2e5; % 载波频率t=0:1/fs:(final);Fn=fs/2; %耐奎斯特频率 %用正弦波产生方波twopi_fc_t=2*pi*fm*t; A=1;phi=0;x = A * cos(twopi_fc_t + phi); % 方波am=1;x(x0)=am;x(x= vt Vs(ii)=High; else Vs(ii)=Low; endendVo=Vs;subplot(325);plot (t,Vo), title(解调后输出信号),axis(0 2e-4 -5 5)grid on;xlabel(时间 (s), ylabel(幅度(V)仿真结果 20