您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 直接扩频Matlab仿真实验报告m序列
西安邮电大学实验名称:基于Matlab直接序列扩频系统性能仿真一、实验目的通过仿真,进一步掌握m序列产生方法及其性能,重点掌握直接序列扩频通信系统原理及性能。二、实验环境Win10Matlab2015b三、实验内容产生n=7时203对应的m序列,并给出其NRZ波形的自相关函数;选用相位差16个码片的两条序列兼做地址和扩频码,构造码分系统,仿真其通信原理;仿真AWGN和单频干扰下系统的BER性能。四、实验原理扩频通信的可行性是从香农公式引申而来2log(1+S/N)CW其中,C为系统信道容量(bit/s);W为系统信道带宽;N为噪声功率S为信号功率。由上式可以看出,可以从两种途径提高信道容量C,即加大带宽W或提高信噪比S/N。也就是说当信道容量C一定时,信道带宽W和信噪比S/N是可以互换的,增加带宽可以降低对信噪比的要求,可以使有用信号的功率接近甚至湮没在噪声功率之下。扩频通信就是通过增加带宽来换取较低的信噪比,这就是扩频通信的基本思想和理论依据。当信噪比无法提高时,可以加大带宽,达到提高信道容量的目的。直接序列扩频的原理是,在发射端把有用信号与伪随机序列相乘(或者模二加),使信号的频谱展宽到一个很宽的范围,然后用扩展后的序列去调制载波。在接收端,把接收到的信号用相同的伪随机序列相乘,有用信号与伪随机码相关,相乘后恢复为扩频前的信号。输入的数据信息为d(t)(设基带带宽为B1),由伪随机编码(如m序列)调制成基带带宽为B2的宽带信号,由于扩频信号带宽大于数据信号带宽,所以信号扩展的带宽由伪随机码控制,而与数据信号无关。经扩频调制的信号再经射频调制后即可发送。信源扩频高放混频解调调制PN码振荡器解扩本振PN码同步d(t)a(t)s(t)f0rI(t)r´(t)a´(t)fLc´(t)c(t)直扩系统的原理框图接收端收到发送来的信号,经混频得到中频信号后,首先通过同步电路捕捉并跟踪发端伪码的准确相位,由此产生与发端伪码相位完全一致的伪随机码作为扩频解扩的本地扩频码,再与中频信号进行相关解扩,恢复出扩频前的窄带信号,而在解扩处理中,干扰和噪声与伪随机码不相关故被扩展,通过滤波使之受到抑制,这样就可在较高的解扩输出信噪比条件下进行信息解调解码,最终获得信息数据。五、实验设计与代码m序列发生器本次直接序列扩频通信中的伪随机序列为m序列,m序列是最长线性移位寄存器的简称。图3-2示出的是由n级移位寄存器构成的码序列发生器示意图。an-1an-2a0模2加c0c1cn-1cnc2输出m序列发生器NRZ序列指的是双极性不归零序列,在实验中采用负逻辑。自相关函数可根据其定义由于所处理的序列为离散点,则可表示为可直接利用xcorr函数求解。此实验中,选用相位差16的两个m序列对应的NRZ码兼做地址码和扩频码,选择两路信号进行传输,生成对应扩频码、用户信息及扩频信号,框图如所示。码分扩频系统框图解扩判决接收端收到信号后,采用与发送端相同的PN序列,通过模二运算之后便可还原出输入信号。但由于受到高斯白噪声和干扰信号的影响,此时的信号是码值为处在-G和+G之间的信号,必须通过码元判决,比较其+1和-1的距离判断。接收端收到的信号与发送端发送的信号进行码元的逐个比较,如果码元相同,则不作任何操作,如果码元不同,则误码信号寄存器WrongN加1,将最终的得到的误码个数WrongN与发送信号的总数Nbit的比值Ps=WrongN/Nbit即为在一定性噪比和扩频增益的条件下的系统的误码率。1.function[seq,p]=mseq(n,coef)2.p=2^n-1;%得到最终生成的m序列的长度3.backQ=0;%对应寄存器运算后的值,放在第一个寄存器4.seq=zeros(1,p);%给生成的m序列预分配5.registers=[1zeros(1,n-2)1];%给寄存器分配初始结果6.fori=1:p发送信号误码加1码元不同误码率判决模块程序框图比较器7.seq(i)=registers(n);8.backQ=mod(sum(coef.*registers),2);%特定寄存器的值进行异或运算,即相加后模29.registers(2:length(registers))=registers(1:length(registers)-1);10.%移位11.registers(1)=backQ;%把异或的值放在第一个寄存器的位置12.end13.end14.clc;clear;15.%产生m序列c=203,n=716.%输入反馈系数向量(二进制)17.c=[0,0,0,0,0,1,1];%C=2031,%%初始化时已经有1,故需要将最高位(0次)的1删掉。18.n=7;19.[seq,p]=mseq(7,c)20.figure%画图21.stairs(seq);22.title('m序列');23.ylim([-0.51.5]);24.%给出其NRZ波形的自相关函数25.%对应的NRZ波形的自相关函数26.nrz=zeros(1,p);27.%负逻辑映射0+1;1-128.nrz(1,find(seq==0))=1;29.nrz(1,find(seq==1))=-1;30.[a,b]=xcorr(nrz,'biased');31.figure32.plot(b,a);33.title('对应的NRZ波形的自相关函数');34.%选用相位差16个码片的两条序列兼做地址和扩频码,构造码分系统,仿真其通信原理35.nrz16=circshift(nrz,[0,16]);36.Eb_N0_dB=1:0.5:12;37.fori=1:length(Eb_N0_dB)38.%产生随机二进制信号(数据源)39.Nbits=100000;40.ran1=rand(1,Nbits);41.d01=round(ran1);%二进制42.d1=-sign(d01-0.5);%负逻辑映射43.ran2=rand(1,Nbits);44.d02=round(ran2);45.d2=-sign(d02-0.5);46.%产生噪声47.Eb=1;48.SNR=10^(0.1*Eb_N0_dB(i));49.N0=Eb/SNR;50.Sigma=sqrt(N0/2);51.Noise=Sigma*randn(1,Nbits);52.forg=1:Nbits53.Noise1((g-1)*p+1:g*p)=Noise(g);54.end55.len1=length(d1);%求信号的长度Nbits56.len2=length(d2);57.%码分系统58.d10=repelem(d1,p);%d1的每个元素都重复p次,使m序列的周期是d1的p倍59.d20=repelem(d2,p);60.nrz0=repmat(nrz,1,len1);%m序列的len1个周期61.nrz160=repmat(nrz16,1,len2);62.dm=d10.*nrz0+d20.*nrz160+Noise1;63.dmm1=dm.*nrz0;64.dmm2=dm.*nrz0;65.%dmm2=dm.*nrz160;66.%积分求和67.res=zeros(1,len1);68.res16=zeros(1,len2);69.fork=1:len170.res(1,k)=sum(dmm1(((k-1)*p+1):k*p))/p;71.end72.fork=1:len273.res16(1,k)=sum(dmm2(((k-1)*p+1):k*p))/p;74.end75.%检测比较76.forj=1:Nbits77.resd=res=0;78.resd2=res16=0;79.resd=2*resd-1;80.resd2=2*resd2-1;81.WrongN=sum(d1~=resd);82.WrongN2=sum(d2~=resd2);83.Ps(i)=WrongN/(Nbits);84.Ps2(i)=WrongN2/(Nbits)85.end86.figure87.plot(Eb_N0_dB,Ps)88.xlabel('信噪比');89.ylabel('误码率')90.title('AWGN系统的BER')六、实验结果与分析七、实验小结此次实验设计我投入了很大的热情和精力,也是这次课程设计所带来的一个不错的经历。无论是查找资料还是matlab编写,调试程序都经过了不懈的努力,同时也发现了自己在学习中存在的很多问题,例如高斯白噪声的形成之类的,还有就是对matlab很多它自己自带的函数库的使用的熟悉程度。软件设计,系统流程图很重要。画好框图后就开始一步一步编程了,编一个模块,调试一个模块。这样可以排除很多错误。通过此次实验设计,我了解和掌握现代无线通信系统的基本组成、基本原理、组网技术及典型通信系统(GSM数字、CDMA码分多址移动电话系统)的设计、调试,理解其工作原理。为今后从事通信系统工程,移动通信,全球个人通信和多媒体通信打下一个良好的基础。
本文标题:直接扩频Matlab仿真实验报告m序列
链接地址:https://www.777doc.com/doc-7347074 .html