二进制数字调制与解调系统的设计DOC.docx
《二进制数字调制与解调系统的设计DOC.docx》由会员分享,可在线阅读,更多相关《二进制数字调制与解调系统的设计DOC.docx(17页珍藏版)》请在冰豆网上搜索。
二进制数字调制与解调系统的设计DOC
二进制数字调制与解调系统的设计
MATLAB及SIMULINK建模环境简介
MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和SIMULINK两大部分。
Simulink是MATLAB最重要的组件之一,它提供一个动态系统建模、仿真和综合分析的集成环境。
在该环境中,无需大量书写程序,而只需要通过简单直观的鼠标操作,就可构造出复杂的系统。
Simulink具有适应面广、结构和流程清晰及仿真精细、贴近实际、效率高、灵活等优点,并基于以上优点Simulink已被广泛应用于控制理论和数字信号处理的复杂仿真和设计。
同时有大量的第三方软件和硬件可应用于或被要求应用于Simulink。
Simulink是MATLAB中的一种可视化仿真工具,是一种基于MATLAB的框图设计环境,是实现动态系统建模、仿真和分析的一个软件包,被广泛应用于线性系统、非线性系统、数字控制及数字信号处理的建模和仿真中。
Simulink可以用连续采样时间、离散采样时间或两种混合的采样时间进行建模,它也支持多速率系统,也就是系统中的不同部分具有不同的采样速率。
为了创建动态系统模型,Simulink提供了一个建立模型方块图的图形用户接口(GUI),这个创建过程只需单击和拖动鼠标操作就能完成,它提供了一种更快捷、直接明了的方式,而且用户可以立即看到系统的仿真结果。
数字通信系统的基本模型
从消息传输角度看,该系统包括了两个重要交换,即消息与数字基带信号之间的交换,数字基带信号与信道信号之间的交换.通常前一种交换由发收端设备完成.而后一种交换则由调制和解调完成.
数字通信系统模型
一、2ASK调制解调
基本原理
2ASK是利用载波的幅度变化来传递数字信息,而其频率和初始相位保持不变。
其信号表达式为:
,S(t)为单极性数字基带信号。
2ASK幅移键控
幅移键控(ASK)相当于模拟信号中的调幅,只不过与载频信号相乘的是二进数码而已。
幅移就是把频率、相位作为常量,而把振幅作为变量,信息比特是通过载波的幅度来传递的。
由于调制信号只有0或1两个电平,相乘的结果相当于将载频或者关断,或者接通,它的实际意义是当调制的数字信号"1时,传输载波;当调制的数字信号为"0"时,不传输载波。
由图可以看出2ASK信号的时间波形e2ASK(t)随二进制基带信号s(t)通断变化。
所以又被称为通断键控信号
2ASK信号的产生方法通常有两种:
模拟调制法和键控法。
模拟调制法使用乘法器实现
键控法使用开关电路实现
2ASK的调制方法
2ASK有两种基本解调方法:
相干解调法(同步检测法)和非相干解调法(包络检波法)。
相干解调需要将载频位置的已调信号频谱重新搬回原始基带位置,因此用相乘器与载波相乘来实现。
为确保无失真还原信号,必须在接收端提供一个与调制载波严格同步的本地载波,这是整个解调过程能否顺利完好进行的关键。
相干解调
非相干解调
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)
乘以相干载波后,只要滤去高频部分就可以了
本次仿真使用相干解调方式:
2ask信号→带通滤波器与→与载波相乘→低通滤波器→抽样判决→输出
以下就是matlab的仿真结果极其频谱图(省去了带通filter)
可以看到解调后的信号与信源有一定的延时。
通过观察频谱图,用放大镜可以清楚的看到,2ask实现了频谱的搬移,将基带信号
搬移到了fc=150hz的频率上,而且若只计频谱的主瓣则有:
B2ask=2fs,fs=1/Ts
其中Ts为一个码元宽度
即:
2ask信号的传输带宽是码元传输速率的2倍
Matlab程序实现
clc;
clearall;
closeall;
%信源
a=randint(1,15,2);
t=0:
0.001:
0.999;
m=a(ceil(15*t+0.01));
subplot(511)
plot(t,m);
axis([01.2-0.21.2]);
title('信源');
%载波
f=150;
carry=cos(2*pi*f*t);
%2ASK调制
st=m.*carry;
subplot(512);
plot(t,st)
axis([01.2-1.21.2])
title('2ASK信号')
%加高斯噪声
nst=awgn(st,70);
%解调部分
nst=nst.*carry;
subplot(513)
plot(t,nst)
axis([01.2-0.21.2]);
title('乘以相干载波后的信号')
%低通滤波器设计
wp=2*pi*2*f*0.5;
ws=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([01.2-0.21.2]);
title('经过低通滤波器后的信号');
%判决器
k=0.25;
pdst=1*(dst>0.25);
subplot(515)
plot(t,pdst)
axis([01.2-0.21.2]);
title('经过抽样判决后的信号')
%频谱观察
%调制信号频谱
T=t(end);
df=1/T;
N=length(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('经过低通滤波后的频谱');
二、2FSK调制解调
频移键控是利用载波的频率来传递数字信号,在2FSK中,载波的频率随着二进制基带信号在f1和f2两个频率点间变化,频移键控是利用载波的频移变化来传递数字信息的。
在2FSK中,载波的频率随基带信号在f1和f2两个频率点间变化。
故其表达式为:
典型波形如下图所示。
由图可见。
2FSK信号可以看作两个不同载频的ASK信号的叠加。
因此2FSK信号的时域表达式又可以写成:
2FSK数字系统的调制原理
2FSK调制就是使用两个不同的频率的载波信号来传输一个二进制信息序列。
可以用二进制“1”来对应于载频f1,而“0”用来对应于另一相载频w2的已调波形,而这个可以用受矩形脉冲序列控制的开关电路对两个不同的独立的频率源w1、f2进行选择通。
如下原理图:
2FSK的解调方式
2FSK的解调方式有两种:
相干解调方式和非相干解调方式.下面我们将详细的介绍:
1非相干解调
经过调制后的2FSK数字信号通过两个频率不同的带通滤波器f1、f2滤出不需要的信号,然后再将这两种经过滤波的信号分别通过包络检波器检波,最后将两种信号同时输入到抽样判决器同时外加抽样脉冲,最后解调出来的信号就是调制前的输入信号。
其原理图如下图所示:
2相干解调
根据已调信号由两个载波f1、f2调制而成,则先用两个分别对f1、f2带通的滤波器对已调信号进行滤波,然后再分别将滤波后的信号与相应的载波f1、f2相乘进行相干解调,再分别低通滤波、用抽样信号进行抽样判决器即可。
原理图如下:
Matlab程序实现
Fc=150;%载频
Fs=40;%系统采样频率
Fd=1;%码速率
N=Fs/Fd;
df=10;
numSymb=25;%进行仿真的信息代码个数
M=2;%进制数
SNRpBit=60;%信噪比
SNR=SNRpBit/log2(M);%60
seed=[1234554321];
numPlot=15;
x=randsrc(numSymb,1,[0:
M-1]);%产生25个二进制随机码
figure
(1)
stem([0:
numPlot-1],x(1:
numPlot),'bx');%显示15个码元,杆图,从x的前十五个随机数中选取
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.51.5]);
title('调制后的信号')
xlabel('Time');
ylabel('Amplitude');
%在已调信号中加入高斯白噪声
randn('state',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.51.5]);
title('加入高斯白噪声后的已调信号')
xlabel('Time');
ylabel('Amplitude');
%相干解调
figure(4)
z1=ddemod(y,Fc,Fd,Fs,'fsk/eye',M,df);
title('相干解调后的信号的眼图')
%带输出波形的相干M元频移键控解调
figure(5)
stem([0:
numPlot-1],x(1:
numPlot),'bx');
holdon;
stem([0:
numPlot-1],z1(1:
numPlot),'ro');
holdoff;
axis([0numPlot-0.51.5]);
title('相干解调后的信号原序列比较')
legend('原输入二进制随机序列','相干解调后的信号')
xlabel('Time');
ylabel('Amplitude');
%非相干解调
figure(6)
z2=ddemod(y,Fc,Fd,Fs,'fsk/eye/noncoh',M,df);
title('非相干解调后的信号的眼图')
%带输出波形的非相干M元频移键控解调
figure(7)
stem([0:
numPlot-1],x(1:
numPlot),'bx');
holdon;
stem([0:
numPlot-1],z2(1:
numPlot),'ro');
holdoff;
axis([0numPlot-0.51.5]);
title('非相干解调后的信号')
legend('原输入二进制随机序列','非相干解调后的信号')
xlabel('Time');
ylabel('Amplitude');
%误码率统计
[errorSymratioSym]=symerr(x,z1);
figure(8)
simbasebandex([0:
1:
5]);
title('相干解调后误码率统计')
[errorSymratioSym]=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-');
holdon;
plot(to2,yo2,'b-');%滤出带外噪声
holdoff;
axis([030-1.51.5]);
xlabel('Time');
ylabel('Amplitude');
legend('加入高斯白噪声后的已调信号','经过升余弦滤波器后的已调信号')
title('升余弦滤波前后波形比较')
eyediagram(yo2,N);%眼图
title('加入高斯白噪声后的已调信号的眼图')
仿真结果
三、2psk信号调制解调
2psk信号的调制不能采用包络检测的方法,只能进行相干解调,其原理框图如下:
不考虑噪声时,带通滤波器输出可以表示为
y(t)=cos(wct+Φn)
式中Φn为2psk信号某一码元的初相。
Φn=0时,代表数字“0”,Φn=π时,代表数字“1”。
与同步载波COSwct相乘后,输出为
Z(t)=COS(wct+Φn)COSwct=1/2cosΦn+1/2cos(2wct+Φn)
经过低通滤波器滤除高频分量,得解调输出为
根据发送端产生2psk信号时Φn代表数字信息1或0的规定,以及接收端x(t)与Φn的关系特性,抽样判决器的判决准则为
其中,x为x(t)在抽样时刻的值。
2psk信号相干解调的过程实际上就是输入已调信号与本地载波信号进行极性比较的过程,故常称为极性比较解调。
Matlab程序实现
clear;
closeall;
fs=8e5;%抽样频率
fm=20e3;%基带频率
n=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(x>0)=am;
x(x<0)=-1;
figure
(1)
subplot(321);
plot(t,x);
axis([02e-4-22]);
title('基带信号');
gridon
car=sin(2*pi*fc*t);%载波
ask=x.*car;%载波调制
subplot(322);
plot(t,ask);
axis([0200e-6-22]);
title('PSK信号');
gridon;
%=====================================================
vn=0.1;
noise=vn*(randn(size(t)));%产生噪音
subplot(323);
plot(t,noise);
gridon;
title('噪音信号');
axis([0.2e-3-11]);
askn=(ask+noise);%调制后加噪
subplot(324);
plot(t,askn);
axis([0200e-6-22]);
title('加噪后信号');
gridon;
%带通滤波
fBW=40e3;
f=[0:
3e3:
4e5];
w=2*pi*f/fs;
z=exp(w*j);
BW=2*pi*fBW/fs;
a=.8547;%BW=2(1-a)/sqrt(a)
p=(j^2*a^2);
gain=.135;
Hz=gain*(z+1).*(z-1)./(z.^2-(p));
subplot(325);
plot(f,abs(Hz));
title('带通滤波器');
gridon;
Hz(Hz==0)=10^(8);%avoidlog(0)
subplot(326);
plot(f,20*log10(abs(Hz)));
gridon;
title('Receiver-3dBFilterResponse');
axis([1e53e5-31]);
%滤波器系数
a=[100.7305];%[10p]
b=[0.1350-0.135];%gain*[10-1]
faskn=filter(b,a,askn);
figure
(2)
subplot(321);
plot(t,faskn);
axis([0100e-6-22]);
title('通过带通滤波后输出');
gridon;
cm=faskn.*car;%解调
subplot(322);
plot(t,cm);
axis([0100e-6-22]);
gridon;
title('通过相乘器后输出');
%低通滤波器
p=0.72;
gain1=0.14;%gain=(1-p)/2
Hz1=gain1*(z+1)./(z-(p));
subplot(323);
Hz1(Hz1==0)=10^(-8);%avoidlog(0)
plot(f,20*log10(abs(Hz1)));
gridon;
title('LPF-3dBresponse');
axis([05e4-31]);
%滤波器系数
a1=[1-0.72];%(z-(p))
b1=[0.140.14];%gain*[11]
so=filter(b1,a1,cm);
so=so*10;%addgain
so=so-mean(so);%removesDCcomponent
subplot(324);
plot(t,so);
axis([08e-4-3.53.5]);
title('通过低通滤波器后输出');
gridon;
%比较器
High=2.5;
Low=-2.5;
vt=0;%设立比较标准
error=0;
len1=length(so);
forii=1:
len1
ifso(ii)>=vt
Vs(ii)=High;
else
Vs(ii)=Low;
end
end
Vo=Vs;
subplot(325);
plot(t,Vo),title('解调后输出信号'),
axis([02e-4-55])
gridon;
xlabel('时间(s)'),ylabel('幅度(V)')
仿真结果