基于MATLAB的直接序列扩频通信系统仿真08211107班12号李帅学号0821019614号瞿欢学号082101981.实验目的:学习扩频通信系统技术理论基础及直接序列DS扩频系统基本原理,并设计出直扩通信系统模型。此基带通信系统具体包括信源模块、、数据调制模块、扩频码产生模块、扩频模块、信道模块、解扩模块、解调模块,并在AWGN信道下对系统进行性能仿真研究。2.实验要求:输出结果:1、调通链路,能够按照要求实现各项基本功能。2、给出误码率曲线并进行分析。课设报告:1、目的与意义。2、直接序列扩频通信系统基本原理。3、详细介绍仿真平台结构;研究过程中遇到的问题以及解决方法。4、给出分析结果、有待解决的问题以及自己的心得体会。5、参考资料。给出要求的DSSS(DirectSequenceSpreadSystem)配置:%++++++++++++仿真参数++++++++++++++%调制方式:QPSK符号速率:256ksps符号数:100%++++++++++扩频码初值设定+++++++++++%用户数:1扩频序列:m序列/Gold序列/正交Gold序列选其一或做成可配序列阶数:3第一个线性移位寄存器的系数:[13];第二个线性移位寄存器的系数:[23];第一个线性移位寄存器的初始化:[111]第二个线性移位寄存器的初始化:[111]%++++++++++++++++++++++++++++++++++%信道:加性高斯白噪声(AWGN)另外本题是设计型题目,最好能自己设计一个可支持多种配置的基带通信系统:平台的一些关键参数应该能够可供配置(比如配置不同的扩频序列),并对比分析其对系统性能的影响。3.实验原理:直接序列扩频系统又称为直接序列调制系统或伪噪声系统(PN系统),简称为直扩系统,是目前应用较为广泛的一种扩展频谱系统。人们对直扩系统的研究最早,如美军的国防卫星通信系统(AN-VSC-28)、全球定位系统(GPS)、航天飞机通信用的跟踪和数据中继卫星系统(TDRSS)等都是直扩技术应用的实例。3.1直扩系统模型直接序列扩频系统是将要发送的信息用伪随机码(PN码)扩展到一个很宽的频带上去,在接收端用与发送端相同的伪随机码对接收到的扩频信号进行相关处理,恢复出发送的信号。对干扰信号而言,与伪随机码不相关,在接收端被扩展,使落入信号通频带内的干扰信号功率大大降低,从而提高了相关的输出信噪比,达到了抗干扰的目的。直扩系统一般采用频率调制或相位调制的方式来进行数据调制,在码分多址通信中,其调制多采用BPSK、DPSK、QPSK、MPSK等方式。直扩系统的组成如图1所示,与信源输出的信号a(t)是码元持续时间为Ta的信息流,伪随机码产生器产生伪随机码c(t),每个伪随机码的码元宽度为Tc(TcTa)。将信息码与伪随机码进行相乘或模二加,产生一速率与伪随机码速率相同的扩频序列,这时信息带宽已经被展宽(如图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£¬Î±Ëæ»úÂëƵÂÊÉèΪ5MHzcloseallclearall%ÐÅÔ´Ä£¿éSNR=[1:1:15]Rb=0.25;%ÂëÔªËÙÂÊ0.25Mb/sTb=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);fori=1:100;d((1+(i-1)*400):i*400)=x(i);%ÿ¸öÐÅÏ¢ÂëÔªÄÚº¬400¸ö²ÉÑùµãendfigure(1)plot(t,d)xlabel('t(ms)');ylabel('s(t)(V)');title('ÐÅÔ´');axis([0,200,-1.5,1.5]);gridon%Êý¾Ýµ÷ÖÆÄ£¿éfs=4000;%Ôز¨ÆµÂÊkHzz=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]);gridon%À©ÆµÂë²úÉúÄ£¿é%À©ÆµÂë³õÖµÉ趨user=1;%Óû§Êýseq=1;%1£ºmÐòÁÐ2£ºGoldÐòÁÐ3£ºÕý½»GoldÐòÁÐstage=3;%ÐòÁн×Êýptap1=[13];%µÚÒ»¸öÏßÐÔÒÆλ¼Ä´æÆ÷µÄϵÊý£º[13]ptap2=[23];%µÚ¶þ¸öÏßÐÔÒÆλ¼Ä´æÆ÷µÄϵÊý£º[23]regi1=[111];%µÚÒ»¸öÏßÐÔÒÆλ¼Ä´æÆ÷µÄ³õʼ»¯£º[111]regi2=[111];%µÚ¶þ¸öÏßÐÔÒÆλ¼Ä´æÆ÷µÄ³õʼ»¯£º[111]switchseqcase1%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%Õý½»GoldÐòÁÐm1=mseq(stage,ptap1,regi1);m2=mseq(stage,ptap2,regi2);code=[goldseq(m1,m2,user),zeros(user,1)];endxxx=codeclen=length(code);xlength=100*50;%ÿ¸öÐÅÏ¢µ÷ÖÆÂëÄÚº¬50¸öαÂëx_code=zeros(1,xlength);fori=1: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)==0x_code(i)=sign(code(7)-0.5);endendk_code=zeros(1,length(QPSK));fori=1:5000k_code((1+(i-1)*4):i*4)=x_code(i);%ÿ¸öαÂëÂëÔªÄÚº¬4¸ö²ÉÑùµãendfigure(3)plot(tq,k_code)xlabel('t(ms)');ylabel('k_code(t)(V)');title('À©ÆµÂë');axis([20,25,-1.5,1.5]);gridon%À©Æµµ÷ÖÆÄ£¿éb=QPSK.*k_code;%ÉäƵµ÷ÖÆÄ£¿éfc=4e4;%Ôز¨ÆµÂÊkHztd=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]);gridon%ÐŵÀÄ£¿é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]);gridon%½âÀ©Ä£¿é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]);gridon[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(i