#基于matlab的直接序列扩频通信系统仿真
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于MATLAB的直接序列扩频通信系统仿真
08211107班12号李帅学号08210196
14号瞿欢学号08210198
1.实验目的:学习扩频通信系统技术理论基础及直接序列DS扩频系统基本原理,并设计出直扩通信系统模型。
此基带通信系统具体包括信源模块、、数据调制模块、扩频码产生模块、扩频模块、信道模块、解扩模块、解调模块,并在AWGN 信道下对系统进行性能仿真研究。
2.实验要求:输出结果:1、调通链路,能够按照要求实现各项基本功能。
2、给出误码率曲线并进行分析。
课设报告:1、目的与意义。
2、直接序列扩频通信系统基本原理。
3、详细介绍仿真平台结构;研究过程中遇到的问题以及解决方法。
4、给出分析结果、有待解决的问题以及自己的心得体会。
5、参考资料。
给出要求的DSSS(Direct Sequence Spread System)配置:
%++++++++++++仿真参数++++++++++++++%
调制方式:QPSK
符号速率:256ksps
符号数:100
%++++++++++扩频码初值设定+++++++++++%
用户数:1
扩频序列:m序列/Gold序列/正交Gold序列选其一或做成可配
序列阶数:3
第一个线性移位寄存器的系数:[1 3];
第二个线性移位寄存器的系数:[2 3];
第一个线性移位寄存器的初始化:[1 1 1]
第二个线性移位寄存器的初始化:[1 1 1]
%++++++++++++++++++++++++++++++++++%
信道:加性高斯白噪声(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序列地址数,结构简单,易于实现,在工程上得到较为广泛的应用。
W ALSH函数是一种非正弦的完备正交函数系,具有理想的互相关特性,两两之间的互相关函数为0,亦即它们是正交的,因而在码分多址通信中,W ALSH函数可以作为地址码使用,在IS-95中,正向传输信道就使用了64阶WALSH函数。
OVSF 码是一种正交可变扩频因子码,保证在不同时隙上的不同扩频因子的扩频码正交,而在每个时隙上可使用的码的数目不固定,与每个物理信道的数据速率和扩频因子有关,OVSF码在TD-SCDMA系统中得到了广泛使用。
[2]
3.3 扩频通信技术的优点
扩频通信之所以得到重视和发展,并成为近代通信主要研究和发展的方向,是因为它具有其它通信系统不能与之相比的独特性能。
1) 抗同频干扰性能好。
接收机采用相关运算只接收PN码相同的扩频信号,对所有载波频率相同的信号或干扰具有很强的抑制能力。
2) 良好的抗衰落性能。
一般信道中的衰落是有频率选择性的,不会对宽频带的扩频信号
接收产生太大的影响。
3) 抗多径干扰能力强。
由于扩频系统中采用的PN码具有很好的自相关性,互相关性很弱,不同的路径传输来的信号能容易地被分离开,并在时间和相位上重新对齐,形成几路信号功率的叠加,从而改善了接收系统的性能,增加了系统的可靠性。
[3]
4程序仿真及结果
%ÐÅÏ¢ÂëƵÂÊÉèΪ100kHz£¬²ÉÑùƵÂÊÉèΪ40MHz£¬Î±Ëæ»úÂëƵÂÊÉèΪ5MHz
close all
clear all
%ÐÅÔ´Ä£¿é
SNR=[1:1:15]
Rb=0.25; %ÂëÔªËÙÂÊ0.25Mb/s
Tb=1/Rb; %ÂëÔª¼ä¸ô
M=100; %ÐÅÏ¢Âë¸öÊý
L=400; %ÿ¸öÂëÔªÄڵIJÉÑùµãÊý
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);
for i=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]);
grid on
%Êý¾Ýµ÷ÖÆÄ£¿é
fs=4000; %Ôز¨ÆµÂÊkHz
z=reshape(d,2,N/2); %´®²¢±ä»»
Q=z(1,:); %sµÄÆæÊýλ,¼´Q(t)
I=z(2,:); %sµÄżÊýλ,¼´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)
xlabel('t(ms)');
ylabel('QPSK(t)(V)');
title('QPSKµ÷ÖÆÐźÅ');
axis([0,200,-1.5,1.5]);
grid on
%À©ÆµÂë²úÉúÄ£¿é
%À©ÆµÂë³õÖµÉ趨
user=1; %Óû§Êý
seq=1; %1£ºmÐòÁÐ 2£ºGoldÐòÁÐ 3£ºÕý½»GoldÐòÁÐ
stage=3; %ÐòÁн×Êý
ptap1=[1 3]; %µÚÒ»¸öÏßÐÔÒÆλ¼Ä´æÆ÷µÄϵÊý£º[1 3]
ptap2=[2 3]; %µÚ¶þ¸öÏßÐÔÒÆλ¼Ä´æÆ÷µÄϵÊý£º[2 3]
regi1=[1 1 1]; %µÚÒ»¸öÏßÐÔÒÆλ¼Ä´æÆ÷µÄ³õʼ»¯£º[1 1 1]
regi2=[1 1 1]; %µÚ¶þ¸öÏßÐÔÒÆλ¼Ä´æÆ÷µÄ³õʼ»¯£º[1 1 1]
switch seq
case 1 %mÐòÁÐ
code=mseq(stage,ptap1,regi1,user);
case 2 %GoldÐòÁÐ
m1= mseq(stage,ptap1,regi1);
m2= mseq(stage,ptap2,regi2);
code=goldseq(m1,m2,user);
case 3 %Õý½»GoldÐòÁÐ
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);
for i=1:xlength %°Ñ0,1ÐòÁÐÂë±ä»»Îª-1,1µ÷ÖÆÂë
if mod(i,7)~=0 %mod(a,b)¾ÍÊÇÇóµÄÊÇa³ýÒÔbµÄÓàÊý
x_code(i)=sign(code(mod(i,7))-0.5);
elseif mod(i,7)==0
x_code(i)=sign(code(7)-0.5);
end
end
k_code=zeros(1,length(QPSK));
for i=1:5000
k_code((1+(i-1)*4):i*4)=x_code(i); %ÿ¸öαÂëÂëÔªÄÚº¬4¸ö²ÉÑùµãend
figure(3)
plot(tq,k_code)
xlabel('t(ms)');
ylabel('k_code(t)(V)');
title('À©ÆµÂë');
axis([20,25,-1.5,1.5]);
grid on
%À©Æµµ÷ÖÆÄ£¿é
b=QPSK.*k_code;
%ÉäƵµ÷ÖÆÄ£¿é
fc=4e4; %Ôز¨ÆµÂÊkHz
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)
xlabel('t(ms)');
ylabel('s(t)(V)');
title('ÉäƵµ÷ÖÆÐźÅ');
axis([20,31,-1.5,1.5]);
grid on
%ÐŵÀÄ£¿é
r= awgn(s,SNR(10),'measured');%¸ß˹°×ÔëÉù ºóÃæÑ-»·ÒÔʵÏÖÎóÂëÂʵÄÊä³ö%ÉäƵ½âµ÷Ä£¿é
rs=r.*cos(2*fc*pi*td);
figure(5)
plot(td,rs)
xlabel('t(ms)');
ylabel('rs(t)(V)');
title('ÉäƵ½âµ÷ÐźÅ');
axis([20,28,-1.5,1.5]);
grid on
%½âÀ©Ä£¿é
jk_code=rs.*k_code;
figure(6)
plot(td,jk_code)
xlabel('t(ms)');
ylabel('rk(t)(V)');
title('À©Æµ½âµ÷ÐźÅ');
axis([20,33,-1.5,1.5]);
grid on
[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)
xlabel('t(ms)');
ylabel('zl(t)(V)');
title('½âµ÷ºóµÄÊä³öÐźÅ');
axis([0,200,-1.5,1.5]);
grid on
z2=0;
xo=zeros(size(x));
for i=1:100
z2=0
for j=1+(i-1)*400:i*400
z2=z2+zl(j);
end
if z2>=0
xo(i)=1;
else
xo(i)=-1;
end
end
figure(8)
plot(t0,xo)
xlabel('t(ms)');
ylabel('xo(t)(V)');
title('Êä³öÐźÅ');
axis([0,400,-1.5,1.5]);
grid on
for a=1:15
r= awgn(s,SNR(a),'measured');;%¸Ä¶¯
rs=r.*cos(2*fc*pi*td);
jk_code=rs.*k_code;
[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]; %²¢´®±ä»»
z2=0;
xo=zeros(size(x));
for i=1:100
z2=0
for j=1+(i-1)*400:i*400
z2=z2+zl(j);
end
if z2>=0
xo(i)=1;
else
xo(i)=-1;
end
end
z=0;
for i=1:100
if(x(i)~=xo(i))
z=z+1;
end
end
z1(a)=z/100
end
figure(8)
plot(SNR,z1)
xlabel('SNR');
ylabel('z1');
title('ÎóÂëÂÊ');
axis([0,15,10^(-4),1]);
grid on
程序运行结果:
5 遇到的问题与解决方法:
在实验过程中遇到许多,开始时高斯白噪声的问题,一开始是不知道如何加载噪声,后来发现MATLAB中有专门的函数来解决这一问题,他是我认识到了,对软件本身之中软件包与函数熟练了解的重要性。
6.有待解决的问题
还有就是关于误码率的输出,开始时没有使的SNR进行改变,而是设置了一个定值,这是一个十分低级的错误,后来改正过来,但是还存在误码率过高的问题,这可能是由于没有判决所造成的错误。
7 总结与感想:
扩频通信以其较强的抗干扰、抗衰落、抗多径性能而成为第三代通信的核心技术,本文阐述了直接序列扩频通信的理论基础和实现方法,并利用MATLAB 建立了直扩通信系统的仿真模型。
随着社会通信事业的迅猛发展,扩展频谱技术的应用大有潜力可以挖掘,尤其在民用中的地位也将越来越显著。
参考文献
[1] 邵保华. 软件无线电在扩频通信发射中的应用研究[D]. 哈尔滨工程大学,2004年.
[2] 张蕾,郑实勤. 基于MATLAB的直接序列扩频通信系统性能仿真分析研究[J]. 电气传动自动化,2007年第3期.
[3] 查光明,熊贤祚. 扩频通信[M]. 西安电子科技大学出版社,1990年.。