电气信息学院通信工程专业课程设计报告1基于MATLAB的扩频通信仿真11.仿真原理扩展频谱通信具有很强的抗干扰性,其多址能力、保密、抗多径等功能也倍受人们的关注,被广泛的应用于军事通信和民用通信中。扩频技术,将信号扩展到很宽的频谱上,在接收端对扩频信号进行相关处理即带宽压缩,恢复成窄带信号。对干扰信号而言,由于与扩频信号不相关,则被扩展到一个很宽的频带上,使之进入信号通频带内的干扰功率大大的降低,具有很强的对抗能力。MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式。使用MATLAB进行通信仿真有两种方式,分别是使用m文件编写程序和用SIMULINK进行可视化建模。长期以来,人们总是想法使信号所占频谱尽量的窄,以充分利用十分宝贵的频谱资源。为什么要用这样宽频带的信号来传送信息呢?简单的回答就是主要为了通信的安全可靠。扩频通信的基本特点是传输信号所占用的频带宽度(W)远大于原始信息本身实际所需的最小(有效)带宽(DF),其比值称为处理增益Gp:Gp=W/△F(1)众所周知,任何信息的有效传输都需要一定的频率宽度,如话音为1.7kHz~3.1kHz,电视图像则宽到数兆赫。为了充分利用有限的频率资源,增加通路数目,人们广泛选择不同调制方式,采用宽频信道(同轴电缆、微波和光纤等),和压缩频带等措施,同时力求使传输的媒介中传输的信号占用尽量窄的带宽。因现今使用的电话、广播系统中,无论是采用调幅、调频或脉冲编码调制制式,Gp值一般都在十多倍范围内,统称为“窄带通信”。而扩频通信的Gp值,高达数百、上千,称为“宽带通信”。扩频通信的可行性,是从信息论和抗干扰理论的基本公式中引伸而来的。信息论中关于信息容量的香农(Shannon)公式为:C=Wlog2(1+P/N)(2)其中:C——信道容量(用传输速率度量),W——信号频带宽度,——信号功率,N——白噪声功率。式(2)说明,在给定的传输速率C不变的条件下,频带宽度W和信噪比P/N是可以互换的。即可通过增加频带宽度的方法,在较低的信噪比P/N(S/N)情况下,传输信息。扩展频谱换取信噪比要求的降低,是扩频通信的重要特点,并由此为扩频通信的应用奠定了基础。电气信息学院通信工程专业课程设计报告2扩频通信与一般的通信系统相比,主要是在发射端增加了扩频调制,而在接收端增加了扩频解调的过程,扩频通信按照其工作方式不同主要分为直接序列扩频系统、跳频扩频系统、跳时扩频系统、现行调频系统和混合调频系统。现以直接序列扩频系统为例说明扩频通信的实现方法。下图1为直接序列扩频系统的原理框图。图1直接序列扩频系统原理图由直扩序列扩频系统原理图可以看出,在发射端,信源输出的信号与伪随机码产生器产生的伪随机码进行模2加,产生一速率与伪随机码速率相同的扩频序列,然后再用扩频序列去调制载波,这样得到已扩频调制的射频信号。在接收端,接受到的扩频信号经高放和混频后,用与发射端同步的伪随机序列对扩频调制信号进行相关解扩,将信号的频带恢复为信息序列的频带,然后进行解调,恢复出所传输的信息。2.SIMULINK模型建立基于MATLAB/Simulink所建立的扩频通信系统的仿真模型,能够反映扩频通信系统的动态工作过程,可进行波形观察、品剖分析和性能分析等,同时能根据研究和设计的需要扩展仿真模型,实现以扩频通信为基础的现代通信的模拟仿真,为系统的研究和设计提供强有力的平台。图2为基于MATLAB/Simulink的扩频通信系统的仿真模型。电气信息学院通信工程专业课程设计报告3图2基于Simulink的扩频通信系统的仿真模型电气信息学院通信工程专业课程设计报告42.1随机整数发生器(RandomIntegergenarator)随机整数发生器(RandonIntegergenerator)作为仿真系统的信源,随机整数发生器产生二进制随机信号,采用时间、初始状态可自由设置,从而满足扩频通信系统所需信源的要求。2.2PN序列发生器(PNSequenceGenerator)用PN序列发生器(PNSequenceGenerator)产生伪随机码,对基带信号进行扩频。扩频过程通过信息码与PN码进行双极性变换后相乘加以实现。解扩过程与扩频过程相同,即将接收的信号用PN码进行第二次扩频处理。电气信息学院通信工程专业课程设计报告52.3最小相移键控调制(M-PSKModulatorPassband)对基带信号进行数字调制,将频谱从基带搬移至频带,以实现远距离传输的效果。2.4加性高斯白噪声信道(AWGNChannel)信号通过加性高斯白噪声信道,以达到对信号的传输后进行再进行解扩解调的目的。改信道信噪比参数设置为负数,可验证扩频通信系统具有良好的抗噪声能力。电气信息学院通信工程专业课程设计报告62.5最小相移键控解调(M-PSKDemodulatorPassband)对解扩后的信号进行解调,恢复基带信号。2.6误码率分析仪(ErrorRateCalculation)在误码率计算中,接收到的信号,由于经过扩频解扩、调制解调、相关统计等处理,会存在一个延迟,在误码仪模块的对话框中要设置一个合适的延迟。电气信息学院通信工程专业课程设计报告72.7其他设置2.7.1RELAY的设置2.7.1product的设置电气信息学院通信工程专业课程设计报告82.7.3display的设置2.7.4频谱分析仪(spectrumscope)的设置系统中有四个频谱分析仪器,分别命名为:baseband、mod、SS和DSS。其中,baseband能观察基带信号的频谱;mod能观察到基带信号调制到频带后的频谱;SS能观察扩频后的频谱;DSS能观察解扩解调后的接受端输出信号的频谱。这四个频谱分析仪的参数设置大致一致,其前方的零阶保持器的采样时间略有不同。频谱分析仪名称BasebandModSSDSS采样时间(s)0.0011/300000.001/310.001电气信息学院通信工程专业课程设计报告93.M文件编写仿真程序用m文件编写的MATLBA程序来实现观察系统在不同信噪比下的误码率变化情况。此仿真要实现扩频码的产生、发射机部分、接收机部分、信道仿真部分以及误码分析部分,此外还有进行循环仿真以达到绘出信噪比与误码率见的函数图。3.1扩频码的产生选取m序列作为仿真系统的扩频码,产生函数如下:function[mout]=mseq(stg,taps,inidata,n)%变量含义说明%stgm序列阶数%taps线性移位寄存器的系数%inidata序列的初始化%n输出序列的数目%mout输出的m序列ifnargin4n=1;endmout=zeros(n,2^stg-1);fpos=zeros(stg,1);fpos(taps)=1;forii=1:2^stg-1mout(1,ii)=inidata(stg);%输出数据的存储num=mod(inidata*fpos,2);%反馈数据的计算inidata(2:stg)=inidata(1:stg-1);%线形移位寄存器的一次移位inidata(1)=num;%返回反馈值endifn1forii=2:nmout(ii,:)=shift(mout(ii-1,:),1,0);endend电气信息学院通信工程专业课程设计报告103.2发射机部分发射机部分包括扩频和调制两部分。3.2.1QPSK调制部分此处采用QPSK调制,相比SIMULINK的M-PSK调制的实现要求要低一些。function[iout,qout]=qpskmod(paradata,para,nd,ml)%各变量含义说明%paradata输入数据%iout输出的实部数据%qout输出的虚部数据%para并行信道数%nd输入数据个数%ml调制阶数m2=ml./2;paradata2=paradata.*2-1;count2=0;forjj=1:ndisi=zeros(para,1);isq=zeros(para,1);forii=1:m2isi=isi+2.^(m2-ii).*paradata2((1:para),ii+count2);isq=isq+2.^(m2-ii).*paradata2((1:para),m2+ii+count2);endiout((1:para),jj)=isi;qout((1:para),jj)=isq;count2=count2+ml;end3.2.2扩频部分function[iout,qout]=spread(idata,qdata,code1)%变量含义说明%idata输入序列实部%qdata输入序列虚部%iout输出序列实部%qout输出序列虚部%code1扩频码序列switchnargincase{0,1}error('lackofinputargument');case2code1=qdata;qdata=idata;end[hn,vn]=size(idata);电气信息学院通信工程专业课程设计报告11[hc,vc]=size(code1);ifhnhcerror('lackofspreadcodesequences');endiout=zeros(hn,vn*vc);qout=zeros(hn,vn*vc);forii=1:hniout(ii,:)=reshape(rot90(code1(ii,:),3)*idata(ii,:),1,vn*vc);qout(ii,:)=reshape(rot90(code1(ii,:),3)*qdata(ii,:),1,vn*vc);end3.3信道仿真部分实现高斯白噪声代码函数function[iout,qout]=comb2(idata,qdata,attn)%各变量含义说明%idata输入序列实部%qdata输入序列虚部%iout输出序列实部%qout输出序列虚部%attn根据信噪比得到的信号衰减水平v=length(idata);h=length(attn);iout=zeros(h,v);qout=zeros(h,v);forii=1:hiout(ii,:)=idata+randn(1,v)*attn(ii);qout(ii,:)=qdata+randn(1,v)*attn(ii);end电气信息学院通信工程专业课程设计报告123.4接收机部分3.4.1接收机的解扩部分函数function[iout,qout]=despread(idata,qdata,code1)%各变量含义说明%idata输入序列实部%qdata输入序列虚部%iout输出序列实部%qout输出序列虚部%code1扩频码序列switchnargincase{0,1}error('lackofinputargument');case2code1=qdata;qdata=idata;end[hn,vn]=size(idata);[hc,vc]=size(code1);vn=fix(vn/vc);iout=zeros(hc,vn);qout=zeros(hc,vn);forii=1:hciout(ii,:)=rot90(flipud(rot90(reshape(idata(ii,:),vc,vn)))*rot90(code1(ii,:),3));qout(ii,:)=rot90(flipud(rot90(reshape(qdata(ii,:),vc,vn)))*rot90(code1(ii,:),3));end3.4.2接收机解调部分的函数function[demodata]=qpskdemod(idata,qdata,para,nd,ml)%各变量含义说明%idata输入数据的实