基于MATLAB的扩频通信系统仿真
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于MATLAB的扩频通信系统仿真
摘要:
扩展频谱通信具有很强的抗干扰性能,其多址能力、保密、抗多径等功能也倍受人们的关注,被广泛地应用于军事通信和民用通信中。扩频通信系统利用了扩展频谱技术,将信号扩展到很宽的频带上,在接收端对扩频信号进行相关处理即带宽压缩,恢复成窄带信号。扩频通信技术是一种信息传输方式,其信号所占有的频带宽度远大于所传信息必需的最小带宽;频带的扩展是通过一个独立的码序列来完成,用编码及调制的方法来实现的,与所传信息数据无关;在接收端则用同样的码进行相关同步接收、解扩及恢复所传信息数据。本文利用MATLAB对扩频系统中的m序列的产生、频谱、相关函数,以及整个扩频系统工作原理进行了仿真,为今后扩频通信系统在各个领域的应用和研究提供了依据。
关键词:直扩通信;信噪比;误码率;抗干扰
正文:
一、实验原理:
扩频通信的基本特点是其传输信息所用信号的带宽远大于信息本身的带宽。除此以外,扩频通信还具有如下特征:1是一种数字传输方式;2带宽的展宽是利用与被传信息无关的函数(扩频函数)对被传信息进行调制实现的;3在接收端使用相同的扩频函数对扩频信号进行相关解调,还原出被传信息。Shannon定理指出:在高斯白噪声干扰条件下,通信系统的极限传输速率(或称信道容量)为
s b N
BL C /S 1(og 2+=(2-1)
式中:
C――为系统的信道容量(bit/s);B――为系统信道带宽(Hz);
S――为信号的平均功率;N――为噪声功率由式中可以看出。
若白噪声的功率谱密度为n0,噪声功率N=n 0B ,则信道容量C可表示为:
s b B
n S BLog C /)1(02+=(2-2)
由上式可以看出,B、n 0、S确定后,信道容量C就确定了。由Shannon第二定理知,
若信源的信息速率小于或等于信道容量C,通过编码,信源的信息能以任意小的差错概率通过信道传输。为使信源产生的信息以尽可能高的信息速率通过信道,提高信道容量是人们所期望的。信息调制扩频解扩解调扩频序列发生扩频序列发生
同步电路
D
B1B 2B 2D
信息接收
图2.1扩频系统基本原理图
二、直序扩频
扩频通信与一般的通信系统相比,主要是在发射端增加了扩频调制,而在接收端增加了扩频解调的过程,扩频通信按其工作方式不同主要分为直接序列扩频系统、跳频扩频系统、跳时扩频系统、线性调频系统和混合调频系统。
DB1B2B2D 信息调制扩频解扩解调
PN码发生器PN码发生器
同步电路
直接序列扩展频谱系统简化框图
调制后的
待传信号
PN码
待传信息
直序扩频的频谱扩展过程
解调信息
PN码
解扩后的
信号
直接序列的频谱解扩过程
在图上我们可以看出:1,在发端,信息码经码率较高的PN码调制以后,频谱被扩展了。在收端,扩频信号经同样的PN码解调以后,信息码被恢复;2,信息码经调制、扩频传输、解调然后恢复的过程,类似与PN码进行了二次"模二相加"的过程。
三、对直接序列扩频通信系统的仿真程序及结果
直接序列扩频通信可以有效地抵抗来自信道中的窄带干扰。在一个直扩通信系统中,扩频是通过伪噪声序列(PN)对发送的信息数据进行调制来实现的[5]。在接收端,原伪噪声序列和所收信号的相关运算可将窄带干扰扩展到DS信号的整个频带,使干扰等效为幅度较低频谱较平坦的噪声;同时,将DS信号解扩,恢复原始信息数据。
1.直接扩频通信系统仿真程序:
function[Y]=DSSS(X,mode)
switch nargin
case0
X='This is a test.';
Y=DSSS(X);
return
case1
Y1=DSSS(X,1);
Y2=DSSS(Y1,2);
Y=Y2;
return;
case2
if mode==1
D=ones(1,7);
m_sequence=Msequence(D);
X_length=length(X);
ascii_value=abs(X);
ascii_binary=zeros(X_length,7);
for ii=1:X_length
ascii_binary(ii,:)=Binary(ascii_value(ii));
subplot(2,3,1);plot(reshape(ascii_binary,1,X_length*7));title('A:输入数据');
Sp_expand=zeros(X_length,127*7);
for ii=1:X_length
for jj=1:7
Sp_expand(ii,127*jj-126:127*jj)=xor(m_sequence,ascii_binary(ii,jj));
end
end
subplot(2,3,2);plot(reshape(Sp_expand,1,X_length*127*7));title('B:数据扩展');
for ii=1:X_length
for jj=1:127*7
if~(Sp_expand(ii,jj))
Sp_expand(ii,jj)=-1;
end
end
end
Sp_expand_bpsk=reshape(Sp_expand,1,X_length*127*7);
subplot(2,3,3);plot(Sp_expand_bpsk);title('C:BPSK调制')
Y=Sp_expand_bpsk;
elseif mode==2
D=ones(1,7);
m_sequence=Msequence(D);
l=length(X)/(127*7);
X_length=length(X);
for ii=1:X_length
if X(ii)==-1
X(ii)=0;
end
end
Sp_expand=reshape(X,l,127*7);
subplot(2,3,4);plot(X);title('D:数据传输');
ascii_binary=zeros(l,7);
Demodulate_binary=zeros(l,127*7);
for ii=1:l
for jj=1:7
Demodulate(ii,127*jj-126:127*jj)=xor(m_sequence, Sp_expand(ii,127*jj-126:127*jj));
end