基于matlab的直接序列扩频通信系统仿真Word文件下载.docx
《基于matlab的直接序列扩频通信系统仿真Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于matlab的直接序列扩频通信系统仿真Word文件下载.docx(13页珍藏版)》请在冰豆网上搜索。
[111]
第二个线性移位寄存器的初始化:
%++++++++++++++++++++++++++++++++++%
信道:
加性高斯白噪声(AWGN)
另外本题是设计型题目,最好能自己设计一个可支持多种配置的基带通信系统:
平台的一些关键参数应该能够可供配置(比如配置不同的扩频序列),并对比分析其对系统性能的影响。
3.实验原理:
直接序列扩频系统又称为直接序列调制系统或伪噪声系统(PN系统),简称为直扩系统,是目前应用较为广泛的一种扩展频谱系统。
人们对直扩系统的研究最早,如美军的国防卫星通信系统(AN-VSC-28)、全球定位系统(GPS)、航天飞机通信用的跟踪和数据中继卫星系统(TDRSS)等都是直扩技术应用的实例。
3.1直扩系统模型
直接序列扩频系统是将要发送的信息用伪随机码(PN码)扩展到一个很宽的频带上去,在接收端用与发送端相同的伪随机码对接收到的扩频信号进行相关处理,恢复出发送的信号。
对干扰信号而言,与伪随机码不相关,在接收端被扩展,使落入信号通频带内的干扰信号功率大大降低,从而提高了相关的输出信噪比,达到了抗干扰的目的。
直扩系统一般采用频率调制或相位调制的方式来进行数据调制,在码分多址通信中,其调制多采用BPSK、DPSK、QPSK、MPSK等方式。
直扩系统的组成如图1所示,与信源输出的信号a(t)是码元持续时间为Ta的信息流,伪随机码产生器产生伪随机码c(t),每个伪随机码的码元宽度为Tc(Tc<
<
Ta)。
将信息码与伪随机码进行相乘或模二加,产生一速率与伪随机码速率相同的扩频序列,这时信息带宽已经被展宽(如图2b),然后用扩频序列去调制载波,则信号频谱被搬移到射频上(如图2c)。
在接收端,接收到的信号经混频后,用与发射同步的伪随机码对中频信号进行相关解扩,将信号的频带恢复为信息的频带,然后再进行解调,恢复出所传送的信息a(t)。
对信道中的干扰,这些干扰包括:
窄带干扰、多径干扰、多址干扰等。
由于这些干扰与伪随机码不相关,接收机的相关解扩对它们相当于一次扩频,将干扰和噪声的频谱展宽,降低了功率谱密度,经滤波后就大大降低了进入信号通频带内的干扰功率,使解调器的输入信噪比得到提高,从而提高了系统的抗干扰能力。
图2给出了直扩系统的频谱图。
[1]
图1直扩系统组成框图
3.2扩频通信常用的伪随机码
常用的伪随机码主要有m序列、GOLD序列、WALSH码和OVSF码,其中最常见的是m序列。
GOLD码是m序列的复合码,是由2个码长相等,码时钟速率相同的序列优选对模2加构成,每改变2个序列相对位移就可得到一个新的GOLD序列。
GOLD序列具有良好的自、互相关特性,且地址数远远大于m序列地址数,结构简单,易于实现,在工程上得到较为广泛的应用。
WALSH函数是一种非正弦的完备正交函数系,具有理想的互相关特性,两两之间的互相关函数为0,亦即它们是正交的,因而在码分多址通信中,WALSH函数可以作为地址码使用,在IS-95中,正向传输信道就使用了64阶WALSH函数。
OVSF码是一种正交可变扩频因子码,保证在不同时隙上的不同扩频因子的扩频码正交,而在每个时隙上可使用的码的数目不固定,与每个物理信道的数据速率和扩频因子有关,OVSF码在TD-SCDMA系统中得到了广泛使用。
[2]
3.3扩频通信技术的优点
扩频通信之所以得到重视和发展,并成为近代通信主要研究和发展的方向,是因为它具有其它通信系统不能与之相比的独特性能。
1)抗同频干扰性能好。
接收机采用相关运算只接收PN码相同的扩频信号,对所有载波频率相同的信号或干扰具有很强的抑制能力。
2)良好的抗衰落性能。
一般信道中的衰落是有频率选择性的,不会对宽频带的扩频信号接收产生太大的影响。
3)抗多径干扰能力强。
由于扩频系统中采用的PN码具有很好的自相关性,互相关性很弱,不同的路径传输来的信号能容易地被分离开,并在时间和相位上重新对齐,形成几路信号功率的叠加,从而改善了接收系统的性能,增加了系统的可靠性。
[3]
4程序仿真及结果
%Ð
Å
Ï
¢
Â
ë
Æ
µ
Ê
É
è
Î
ª
100kHz£
¬
²
Ñ
ù
40MHz£
±
Ë
æ
»
ú
5MHz
closeall
clearall
Ô
´
Ä
£
¿
é
SNR=[1:
1:
15]
Rb=0.25;
%Â
Ù
0.25Mb/s
Tb=1/Rb;
¼
ä
¸
ô
M=100;
%Ð
ö
ý
L=400;
%Ã
Ú
ã
N=M*L;
%×
Ü
dt=Tb/L;
%Ê
Ó
ò
df=1/(N*dt);
%Æ
Bs=N*df/2;
%Ï
Í
³
ø
í
T=N*dt;
%½
Ø
¶
Ì
t=linspace(-T/2,T/2,N);
º
á
×
ê
x=sign(rand(1,M)-0.5);
%²
«
Ð
¹
Á
t0=linspace(0,T,M);
fori=1:
100;
d((1+(i-1)*400):
i*400)=x(i);
400¸
end
figure
(1)
plot(t,d)
xlabel('
t(ms)'
);
ylabel('
s(t)(V)'
title('
'
axis([0,200,-1.5,1.5]);
gridon
%Ê
¾
Ý
÷
Ö
fs=4000;
%Ô
¨
kHz
z=reshape(d,2,N/2);
%´
®
Q=z(1,:
%sµ
¼
Q(t)
I=z(2,:
I(t)
tq=linspace(-T/2,T/2,length(I));
QPSK=(I.*cos(2*fs*pi*tq)-Q.*sin(2*fs*pi*tq))/sqrt
(2);
%QPSKµ
figure
(2)
plot(tq,QPSK)
QPSK(t)(V)'
QPSKµ
%À
©
õ
user=1;
%Ó
Ã
§
seq=1;
%1£
mÐ
2£
GoldÐ
3£
Õ
½
stage=3;
ptap1=[13];
%µ
Ò
ß
[13]
ptap2=[23];
þ
[23]
regi1=[111];
¯
regi2=[111];
switchseq
case1%mÐ
code=mseq(stage,ptap1,regi1,user);
case2%GoldÐ
m1=mseq(stage,ptap1,regi1);
m2=mseq(stage,ptap2,regi2);
code=goldseq(m1,m2,user);
case3%Õ
m1=mseq(stage,ptap1,regi1);
m2=mseq(stage,ptap2,regi2);
code=[goldseq(m1,m2,user),zeros(user,1)];
end
xxx=code
clen=length(code);
xlength=100*50;
50¸
x_code=zeros(1,xlength);
xlength%°
0,1Ð
-1,1µ
ifmod(i,7)~=0%mod(a,b)¾
Ç
ó
a³
bµ
à
x_code(i)=sign(code(mod(i,7))-0.5);
elseifmod(i,7)==0
x_code(i)=sign(code(7)-0.5);
end
k_code=zeros(1,length(QPSK));
5000
k_code((1+(i-1)*4):
i*4)=x_code(i);
4¸
figure(3)
plot(tq,k_code)
k_code(t)(V)'
À
axis([20,25,-1.5,1.5]);
b=QPSK.*k_code;
%É
fc=4e4;
td=linspace(0,T,length(b));
%bÊ
¡
linspaceÊ
È
î
linÊ
linearµ
x=linspace(a,b,n)¾
aº
bÎ
¹
·
n¸
s=b.*cos(2*fc*pi*td);
figure(4)
plot(td,s)
axis([20,31,-1.5,1.5]);
r=awgn(s,SNR(10),'
measured'
%¸
°
º
»
â
rs=r.*cos(2*fc*pi*td);
figure(5)
plot(td,rs)
rs(t)(V)'
axis([20,28,-1.5,1.5]);
%½
jk_code=rs.*k_code;
figure(6)
plot(td,jk_code)
rk(t)(V)'
axis([20,33,-1.5,1.5]);
[f,rf]=T2F(td,jk_code);
%É
[tl,l]=lpf(f,rf,fc/10000);
%¾
¹
liremod=cos(2*fs*pi*tq)*sqrt
(2).*l;
%IÍ
[fi,lif]=T2F(tq,liremod);
[tji,iremod]=lpf(fi,lif,fs/10000);
iremodo=sign(iremod);
û
lqremod=(-1)*sin(2*fs*pi*tq)*sqrt
(2).*l;
%QÍ
[fq,lqf]=T2F(tq,lqremod);
[tjq,qremod]=lpf(fq,lqf,fs/10000);
qremodo=sign(qremod);
zl=[qremodo,iremodo];
figure(7)
plot(t,zl)
zl(t)(V)'
z2=0;
xo=zeros(size(x));
z2=0
forj=1+(i-1)*400:
i*400
z2=z2+zl(j);
ifz2>
=0
xo(i)=1;
else
xo(i)=-1;
figure(8)
plot(t0,xo)
xo(t)(V)'
axis([0,400,-1.5,1.5]);
fora=1:
15
r=awgn(s,SNR(a),'
;
rs=r.*cos(2*fc*pi*td);
jk_code=rs.*k_code;
[f,rf]=T2F(td,jk_code);
z=0;
if(x(i)~=xo(i))
z=z+1;
z1(a)=z/100
plot(SNR,z1)
SNR'
z1'
axis([0,15,10^(-4),1]);
程序运行结果:
5遇到的问题与解决方法:
在实验过程中遇到许多,开始时高斯白噪声的问题,一开始是不知道如何加载噪声,后来发现MATLAB中有专门的函数来解决这一问题,他是我认识到了,对软件本身之中软件包与函数熟练了解的重要性。
6.有待解决的问题
还有就是关于误码率的输出,开始时没有使的SNR进行改变,而是设置了一个定值,这是一个十分低级的错误,后来改正过来,但是还存在误码率过高的问题,这可能是由于没有判决所造成的错误。
7总结与感想:
扩频通信以其较强的抗干扰、抗衰落、抗多径性能而成为第三代通信的核心技术,本文阐述了直接序列扩频通信的理论基础和实现方法,并利用MATLAB建立了直扩通信系统的仿真模型。
随着社会通信事业的迅猛发展,扩展频谱技术的应用大有潜力可以挖掘,尤其在民用中的地位也将越来越显著。
参考文献
[1]邵保华.软件无线电在扩频通信发射中的应用研究[D].哈尔滨工程大学,2004年.
[2]张蕾,郑实勤.基于MATLAB的直接序列扩频通信系统性能仿真分析研究[J].电气传动自动化,2007年第3期.
[3]查光明,熊贤祚.扩频通信[M].西安电子科技大学出版社,1990年.