《2022年基于MATLAB的扩频通信仿真.pdf》由会员分享,可在线阅读,更多相关《2022年基于MATLAB的扩频通信仿真.pdf(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、基于 MATLAB 的扩频通信仿真基于 MATLAB 的扩频通信仿真1.仿真原理扩展频谱通信具有很强的抗干扰性,其多址能力、保密、抗多径等功能也倍受人们的关注,被广泛的应用于军事通信与民用通信中。扩频技术 ,将信号扩展到很宽的频谱上,在接收端对扩频信号进行相关处理即带宽压缩,恢复成窄带信号。对干扰信号而言,由于与扩频信号不相关 ,则被扩展到一个很宽的频带上,使之进入信号通频带内的干扰功率大大的降低,具有很强的对抗能力。MATLAB就是由美国mathworks 公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、 矩阵计算、 科学数据可视化以及非线性动态系统的建模
2、与仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如 C、 Fortran)的编辑模式。使用MATLAB进行通信仿真有两种方式 ,分别就是使用m 文件编写程序与用SIMULINK进行可视化建模。长期以来 ,人们总就是想法使信号所占频谱尽量的窄,以充分利用十分宝贵的频谱资源。为什么要用这样宽频带的信号来传送信息呢? 简单的回答就就是主要为了通信的安全可靠。扩频通信的基本特点就是传输信号所占用的频带宽度(W )远大于原始信息本身实际所需的最小(有效 )带宽 (DF)
3、,其比值称为处理增益Gp: Gp =W /F (1) 众所周知 ,任何信息的有效传输都需要一定的频率宽度,如话音为 1、 7kHz3、 1kHz,电视图像则宽到数兆赫。为了充分利用有限的频率资源,增加通路数目 ,人们广泛选择不同调制方式 ,采用宽频信道 (同轴电缆、微波与光纤等) ,与压缩频带等措施,同时力求使传输的媒介中传输的信号占用尽量窄的带宽。因现今使用的电话、广播系统中,无论就是采用调幅、调频或脉冲编码调制制式, Gp值一般都在十多倍范围内,统称为“窄带通信” 。而扩频通信的Gp值,高达数百、上千,称为“宽带通信” 。扩频通信的可行性,就是从信息论与抗干扰理论的基本公式中引伸而来的。信
4、息论中关于信息容量的香农( Shannon)公式为 : C =Wlog2 (1 + P /N ) (2) 其中 :C信道容量(用传输速率度量) ,W 信号频带宽度, 信号功率 , N 白噪声功率。式( 2)说明 ,在给定的传输速率C 不变的条件下 , 频带宽度 W 与信噪比P /N 就是可以互换的。 即可通过增加频带宽度的方法,在较低的信噪比P /N (S /N)情况下 , 传输信息。扩展频谱换取信噪比要求的降低,就是扩频通信的重要特点,并由此为扩频通信的应用奠定了基础。扩频通信与一般的通信系统相比,主要就是在发射端增加了扩频调制,而在接收端增加了扩频解调的过程,扩频通信按照其工作方式不同主要
5、分为直接序列扩频系统、跳频扩频系统、跳时扩频系统、 现行调频系统与混合调频系统。现以直接序列扩频系统为例说明扩频通信的实现方法。下图1 为直接序列扩频系统的原理框图。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 1 页,共 14 页 - - - - - - - - - - 基于 MATLAB 的扩频通信仿真图 1 直接序列扩频系统原理图由直扩序列扩频系统原理图可以瞧出,在发射端 ,信源输出的信号与伪随机码产生器产生的伪随机码进行模2 加,产生一速率与伪随机码速率相同的扩频序列,然后再用扩频序列去调制载波
6、 ,这样得到已扩频调制的射频信号。在接收端 ,接受到的扩频信号经高放与混频后,用与发射端同步的伪随机序列对扩频调制信号进行相关解扩,将信号的频带恢复为信息序列的频带,然后进行解调 ,恢复出所传输的信息。2.SIMULINK 模型建立基于 MATLAB/Simulink 所建立的扩频通信系统的仿真模型,能够反映扩频通信系统的动态工作过程 ,可进行波形观察、品剖分析与性能分析等,同时能根据研究与设计的需要扩展仿真模型 ,实现以扩频通信为基础的现代通信的模拟仿真,为系统的研究与设计提供强有力的平台。图 2 为基于 MATLAB/Simulink 的扩频通信系统的仿真模型。图 2 基于 Simulin
7、k 的扩频通信系统的仿真模型精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 2 页,共 14 页 - - - - - - - - - - 基于 MATLAB 的扩频通信仿真2、1 随机整数发生器(Random Integer genarator) 随机整数发生器(Randon Integer generator) 作为仿真系统的信源,随机整数发生器产生二进制随机信号 ,采用时间、初始状态可自由设置,从而满足扩频通信系统所需信源的要求。2、2 PN 序列发生器 (PN Sequence Generator)
8、 用 PN 序列发生器 (PN Sequence Generator)产生伪随机码,对基带信号进行扩频。扩频过程通过信息码与PN码进行双极性变换后相乘加以实现。解扩过程与扩频过程相同,即将接收的信号用 PN 码进行第二次扩频处理。2、3 最小相移键控调制(M-PSK Modulator Passband) 对基带信号进行数字调制,将频谱从基带搬移至频带,以实现远距离传输的效果。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 3 页,共 14 页 - - - - - - - - - - 基于 MATLAB
9、的扩频通信仿真2、4 加性高斯白噪声信道(AWGN Channel) 信号通过加性高斯白噪声信道,以达到对信号的传输后进行再进行解扩解调的目的。改信道信噪比参数设置为负数,可验证扩频通信系统具有良好的抗噪声能力。2、5 最小相移键控解调(M-PSK Demodulator Passband) 对解扩后的信号进行解调,恢复基带信号。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 4 页,共 14 页 - - - - - - - - - - 基于 MATLAB 的扩频通信仿真2、6 误码率分析仪 (Error
10、 Rate Calculation) 在误码率计算中,接收到的信号 ,由于经过扩频解扩、调制解调、相关统计等处理,会存在一个延迟 ,在误码仪模块的对话框中要设置一个合适的延迟。2、7 其她设置2、7、1 RELAY 的设置精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 5 页,共 14 页 - - - - - - - - - - 基于 MATLAB 的扩频通信仿真2、7、1 product 的设置2、7、3 display 的设置精品资料 - - - 欢迎下载 - - - - - - - - - - -
11、欢迎下载 名师归纳 - - - - - - - - - -第 6 页,共 14 页 - - - - - - - - - - 基于 MATLAB 的扩频通信仿真2、7、4 频谱分析仪 (spectrum scope) 的设置系统中有四个频谱分析仪器,分别命名为 :baseband、mod、SS与 DSS 。其中 ,baseband 能观察基带信号的频谱;mod 能观察到基带信号调制到频带后的频谱;SS能观察扩频后的频谱;DSS能观察解扩解调后的接受端输出信号的频谱。这四个频谱分析仪的参数设置大致一致,其前方的零阶保持器的采样时间略有不同。频谱分析仪名称Baseband Mod SS DSS 采样
12、时间 (s) 0、001 1/30000 0、001/31 0、001 3.M 文件编写仿真程序用 m 文件编写的MATLBA程序来实现观察系统在不同信噪比下的误码率变化情况。此仿真要实现扩频码的产生、发射机部分、接收机部分、信道仿真部分以及误码分析部分,此外还有进行循环仿真以达到绘出信噪比与误码率见的函数图。3、1 扩频码的产生选取 m 序列作为仿真系统的扩频码,产生函数如下 : function mout = mseq(stg, taps, inidata, n) %变量含义说明% stg m 序列阶数% taps 线性移位寄存器的系数% inidata 序列的初始化% n 输出序列的数目
13、% mout 输出的 m 序列if nargin 1 for ii=2:n mout(ii,:) = shift(mout(ii-1,:),1,0); end end 3、2 发射机部分发射机部分包括扩频与调制两部分。3、2、1 QPSK调制部分此处采用 QPSK调制 ,相比 SIMULINK的 M-PSK调制的实现要求要低一些。function iout,qout=qpskmod(paradata,para,nd,ml) %各变量含义说明% paradata 输入数据% iout 输出的实部数据% qout 输出的虚部数据% para 并行信道数% nd 输入数据个数% ml 调制阶数m2=
14、ml、/2; paradata2=paradata、*2-1; count2=0; for jj=1:nd isi = zeros(para,1); isq = zeros(para,1); for ii = 1 : m2 isi = isi + 2、( m2 - ii ) 、* paradata2(1:para),ii+count2); isq = isq + 2、( m2 - ii ) 、* paradata2(1:para),m2+ii+count2); end iout(1:para),jj)=isi; qout(1:para),jj)=isq; count2=count2+ml; e
15、nd 3、2、2 扩频部分function iout, qout = spread(idata, qdata, code1) %变量含义说明% idata 输入序列实部% qdata 输入序列虚部% iout 输出序列实部% qout 输出序列虚部% code1 扩频码序列switch nargin 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 8 页,共 14 页 - - - - - - - - - - 基于 MATLAB 的扩频通信仿真case 0 , 1 error(lack of input a
16、rgument); case 2 code1 = qdata; qdata = idata; end hn,vn = size(idata); hc,vc = size(code1); if hn hc error(lack of spread code sequences); end iout = zeros(hn,vn*vc); qout = zeros(hn,vn*vc); for ii=1:hn iout(ii,:) = reshape(rot90(code1(ii,:),3)*idata(ii,:),1,vn*vc); qout(ii,:) = reshape(rot90(code1
17、(ii,:),3)*qdata(ii,:),1,vn*vc); end 3、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); for ii=1:h iout(ii,:) = idata + randn
18、(1,v) * attn(ii); qout(ii,:) = qdata + randn(1,v) * attn(ii); end 3、4 接收机部分3、4、1 接收机的解扩部分函数function iout, qout = despread(idata, qdata, code1) %各变量含义说明% idata 输入序列实部% qdata 输入序列虚部% iout 输出序列实部% qout 输出序列虚部% code1 扩频码序列精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 9 页,共 14 页 -
19、- - - - - - - - - 基于 MATLAB 的扩频通信仿真switch nargin case 0 , 1 error(lack of input argument); case 2 code1 = qdata; qdata = idata; end hn,vn = size(idata); hc,vc = size(code1); vn = fix(vn/vc); iout = zeros(hc,vn); qout = zeros(hc,vn); for ii=1:hc iout(ii,:) = rot90(flipud(rot90(reshape(idata(ii,:),vc,
20、vn)*rot90(code1(ii,:),3); qout(ii,:) = rot90(flipud(rot90(reshape(qdata(ii,:),vc,vn)*rot90(code1(ii,:),3); end 3、4、2 接收机解调部分的函数function demodata=qpskdemod(idata,qdata,para,nd,ml) %各变量含义说明% idata 输入数据的实部% qdata 输入数据的虚部% demodata 解调后的数据% para 并行的信道数% nd 输入数据个数% ml 调制阶数demodata=zeros(para,ml*nd); demod
21、ata(1:para),(1:ml:ml*nd-1)=idata(1:para),(1:nd)=0; demodata(1:para),(2:ml:ml*nd)=qdata(1:para),(1:nd)=0; 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 10 页,共 14 页 - - - - - - - - - - 基于 MATLAB 的扩频通信仿真3、5 误码计算与绘图部分%误码率分析noe2 = sum(sum(abs(data-demodata); nod2 = user * nd * ml;
22、noe = noe + noe2; nod = nod + nod2; % fprintf(%dt%en,ii,noe2/nod2); end %数据文件ber = noe / nod; fprintf(%dt%dt%dt%en,ebn0,noe,nod,noe/nod); fid = fopen(BER、dat,a); fprintf(fid,%dt%et%ft%ftn,ebn0,noe/nod,noe,nod); fclose(fid); err_rate_final(ebn0+6)=ber; end %性能仿真图figure semilogy(SNR,err_rate_final,b-*
23、); xlabel(信噪比 /dB) ylabel(误码率 ) axis(-5,10,0,1) grid on 3、6 初始化设置以及仿真循环设置Main 函数为clear all; clc sr = 256000、0; % 符号速率ml = 2; % 调制阶数br = sr * ml; % 比特速率nd = 100; % 符号数SNR=-5:1:10; % Eb/No %*扩频码初值设定* user = 1; % 用户数stage = 3; % 序列阶数ptap1 = 1 3; % 第一个线性移位寄存器的系数disp(-start-); %*扩频码的产生 * for ebn0=-5:1:10
24、 % m 序列code = mseq(stage,ptap1,regi1,user); 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 11 页,共 14 页 - - - - - - - - - - 基于 MATLAB 的扩频通信仿真code = code * 2 - 1; clen = length(code); %*仿真运算开始 * nloop = 1000; % 仿真循环次数noe = 0; nod = 0; for ii=1:nloop %*发射机 * data = rand(user,nd*ml
25、) 0 、5; ich, qch = qpskmod(data,user,nd,ml); % QPSK 调制ich1,qch1 = spread(ich,qch,code); % 扩频ich2 = ich1; qch2 = qch1; %*接收机 * ich3,qch3 = comb2(ich2,qch2,attn); % 添加高斯白噪声(AWGN) sampl = irfn * IPOINT + 1; ich4 = ich3(:,sampl:IPOINT:IPOINT*nd*clen+sampl-1); qch4 = qch3(:,sampl:IPOINT:IPOINT*nd*clen+sa
26、mpl-1); ich5 qch5 = despread(ich4,qch4,code); % 解扩demodata = qpskdemod(ich5,qch5,user,nd,ml); % QPSK解调%*误码率分析 * noe2 = sum(sum(abs(data-demodata); nod2 = user * nd * ml; noe = noe + noe2; nod = nod + nod2; %*数据文件 * ber = noe / nod; fprintf(%dt%dt%dt%en,ebn0,noe,nod,noe/nod); fid = fopen(BER、dat,a);
27、fprintf(fid,%dt%et%ft%ftn,ebn0,noe/nod,noe,nod); fclose(fid); err_rate_final(ebn0+6)=ber; %*性能仿真图 * figure semilogy(SNR,err_rate_final,b-*); xlabel(信噪比 /dB) ylabel(误码率 ) axis(-5,10,0,1) grid on disp(-end-); 4.仿真结果与分析4.1.1Simulink 仿真结果基带信号的频谱如下精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - -
28、 - - - - -第 12 页,共 14 页 - - - - - - - - - - 基于 MATLAB 的扩频通信仿真经调制后频谱如下扩频后频谱如下接收端恢复后的输出信号频谱如下误码计算仪的结果4.1.2Simulink 仿真结果分析可以瞧出 ,基带信号的频率分量主要就是在-100Hz到 100Hz,这与信号源所设置的频率相符合。基带信号进过M-PSK调制后 ,正频域的频率分量集中在2、 9KHz-3、1KHz处,可瞧出载波频率为 3KHz,这个结果与M-PSK调制器所设置的载波频率一致。频带信号经过与PN码相乘扩频后 ,观察其信号的频谱可以瞧出,正频域的频率分量主要集中在0Hz到 20K
29、Hz这主瓣中 ,带宽扩展了约20 倍。此时信号将经过模拟信道的AWGN 信道模块 ,来到接收端。 在接收端处 ,先经过解扩 (即与扩频PN码同步的PN码相乘 ),得到解扩后的频带信号,再经过解调模块,恢复成基带信号。观察恢复后的信号的频谱,与信源处的信号基本一致。再瞧系统的误码率计算分析。输出的数据就是一个n 行(与输入数据数目相等)3 列的矩阵。 第 1 列就是差错率 , 第 2 列就是差错码的数量, 第 3 列就是码元总数即前述的n。 可瞧出 ,差错率为 0、002,差错码的数量为2,码元总数为1000。由此可见 ,系统具有较好的抗噪声性能。企抗噪声原理如图3 所示。图 3 扩频系统抗噪声
30、原理示意图4、2、1 m 文件的仿真结果仿真结果如图4 与图 5 所示。其中 , 图 4 就是信号比与误码率的值;图 5 就是绘制的函数关系图像。图 4 仿真结果的值图 5 信噪比与误码率的关系函数图象4、2、2 m 文件的仿真结果分析通过观察可知 ,信噪比越大 ,系统的误码率越小。这符合通信原理的规律。从图中还可得知 ,在负的信噪比条件下,扩频通信系统还能有比较小的误码率。可知扩频系统的抗干扰性能很好 ,能在负信噪比条件下工作。这就是因为扩频系统特有的频谱扩展特点与特有的解扩技术 ,能使有用信号淹没在伪噪声之中,通过相关解扩将之还原。5.实验总结此次仿真通过MATLAB的 SIMULINK仿
31、真实现了扩频系统从PN码产生到扩频与调制后发送到通过加性高斯白噪声然后接收后解扩与解调还原的过程。观察了几个阶段的频谱,对比了各频谱之间的变化,分析了扩频系统抗干扰能力及其抗干扰的原因。a( f )f m f mof cf cffod( f ) 或c( f )J( f )s( f )f 0fofI)( fJ)( fsfoof I)( fJ)( fsf精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 13 页,共 14 页 - - - - - - - - - - 基于 MATLAB 的扩频通信仿真除此之外 ,
32、还通过 m 文件的编程 ,第一步观察了不同信噪比条件下扩频通信系统的误码率的大小。分析了扩频通信系统抗干扰能力的优越性。使用 SIMULINK 仿真与 M 文件仿真有各自的好处。SIMULINK 就是可视化的,有模块库的支持 ,使用十分方便;M 文件仿真有很好的计算能力。她们都就是通信仿真里面的两把利剑 ,有些大的系统可能会用到两者的混合仿真。所以,熟悉这两种仿真方式就是通信仿真中必不可少的。此次仿真只就是粗略地对扩频通信系统进行了仿真,还有各种实际环境中的因素没有考虑。如 :中频解调、信道的衰落、传输的损耗等等因素。在往后的仿真中,还可将上诉因素加入到系统中,也可对不同扩频增益的扩频通信系统研究其不同信噪比下的误码率情况。由于篇幅有限,不再赘述。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 14 页,共 14 页 - - - - - - - - - -