《gps系统仿真》doc版.docx
34页GPS系统仿真实验报告姓名:陈珂学号:3150404002指导教师:高瑜翔1、 实验目的:分析扩频码的构成原理,基于MATLAB产生GPS信号,并进行调制传输,接收解调,最终建立完整的GPS系统并对接收的结果进行分析2、 实验原理:扩频通信:扩频通信的基本理论依据是信息论中的香农公式其中,C是信道容量(bit/s),砰是信道带宽,S是信号的平均功率,N是噪声功率,香农公式表明了在给定信噪比的情况下,只要采用某种编码系统就能以任意小的差错概率,以接近于C的传输速率来传送信息扩频序列采用的是伪随机序列,伪随机序列具有尖锐的自相关性,近似为零的互相关性这一特点基于这一特性,可以通过检测本地伪随机序列与原伪随机序列的互相关峰值的大小来捕获伪随机序列伪随机序列包括m序列、Gold序列、M序列和组合序列等GPS信号中所使用的是一种组合Gold序列(C/A码/P码)3、 实验内容:1、 GPS信号产生:GPS 卫星同时发射 L1、L2 两路扩频信号,载频分别为 1575.42Mz、1227.6MHz,L1 信号将导航电文分别用 C/A码和 P 码进行扩频GPS卫星的导航电文(D码),是一组二进制的数码序列,它与编码脉冲相对应,以数字通讯方式传递给用户。
当数码取“0”时,对应的编码脉冲状态取“+1”而码值取“1”,对应的编码脉冲取“-1”,即反像编码L2波段上只传送P码,P码是加密码,普通用户无法接受和使用C/A码与P码采用的也是反像编码方式,因此,当C/A码或P码与D码进行模二和(异或运算)时,表现出来的是码元异或,而波形相乘2、C/A码结构:C/A码是一种Gold组合码,由两个10级反馈移位寄存器组合产生,可以表示为其中为码元对应的时间:1/1023ms,为相位偏置的码元数C/A码的产生如下图所示:3、 P码:P码是由两组各有两个12级反馈移位寄存器结合产生的,而每一组反馈移位寄存器又是由两个12级的m序列发生器组合而成的因此,P码仿真模型需用4个m序列发生模块PN sequence Generator产生,PN1和PN2组成子码发生器;PN3和PN4组成子码发生器又因为C/A码与P码采用的均是反像编码方式,所以同一组内及两组间的m序列模二和(异或运算)时,表现出来的也是码元异或,而波形相乘后接一个移位寄存器使P码延时一个基码,仿真电路如下图所示P码仿真频率设为l0.23MHz,仿真时间设为0.1ms,子码系数为[1100101000001],的系数为[1111100100111],的系数为[1111110111011],的系数为[1001100011101]。
4、 系统框架及实现:GPS信号是数据码经扩频码.载波两次变频调制而成的,由卫星负责信号的发射;通过有噪信道的传输进入接收端;接收端负责信号的接收、捕获和跟踪,GPS仿真系统结构图如图所示系统基本框架5、 GPS信号的捕获与跟踪:信号捕获的目的是为了粗略的确定C/A码在数据块中的起始位置、载波频率和码相位信号跟踪的目的是为了获得精确的载波频率和码相位,并且当载波频率和码相位出现一定变化时,能够使本地载波频率和本地C/A码相位跟踪上这种变化信号跟踪分为载波频率/相位跟踪和码相位跟踪捕获和跟踪的实质都是一种对发射信号参数的估计捕获是在不具备接收信号参数准确值的信息情况下,对接收载波频率和发送码字及相位的粗略估计,跟踪的实质也是一种对发送信号参数的估计,是在具备对接收载波频率和发送码字相位的粗略估计的信息的前提下,使用更好的估计手段,对发送信号的载波频率/相位和发送码相位的更精确估计如果接收到的信号和本地复现信号的相位完全对齐,那么在相关过程中将会出现最大的峰值;但如果相位不完全对齐,只要偏移在一个码片内,仍然可以得到一个较大的峰值,所以捕获过程只能给出载波频率和码相位的一个粗略估计捕获/跟踪过程中最重要的是实现两个同步:1.码元同步2.载波同步。
在跟踪环节,码元同步负责信号解扩,载波同步负责信号解调此外,由于是软件仿真,两者还肩负着信号的捕获工作接收信号进行的处理框图和C/A码的捕获跟踪实现如下图所示:接收后进行的函数处理C/A码的捕获和跟踪实现框图码元同步:当捕获到卫星信号后,本地码的频率和相位与接收到的码元存在较大的误差,因此必须进行调整,以达到本地码与卫星信号C/A码同频同相,这个调整过程由码跟踪环来完成,称之为相关接收或解扩4、 实验结果:用m文件实现GPS系统的信号发送以及接收部分的仿真,产生两种伪随机序列后分别对两路信号进行调制,然后对C/A码进行捕获和跟踪,对得到的子帧进行识别再计算星历数据和伪距以及卫星的位置和用户位置得到的波形如下图所示,其中图2是svn=10的C/A码序列在码相位和载波频率二位平面上搜索的相关峰值:图2 svn=10的C/A码序列在码相位和载波频率二位平面上搜索的相关峰值5、 实验总结: 本次实验首先对GPS的信号进行了仿真,GPS 卫星同时发射 L1、L2 两路扩频信号,载频分别为 1575.42Mz、1227.6MHz,L1 信号将导航电文分别用 C/A码和 P 码进行扩频GPS卫星的导航电文(D码),是一组二进制的数码序列,它与编码脉冲相对应,以数字通讯方式传递给用户。
当数码取“0”时,对应的编码脉冲状态取“+1”而码值取“1”,对应的编码脉冲取“-1”,即反像编码L2波段上只传送P码,P码是加密码,普通用户无法接受和使用C/A码与P码采用的也是反像编码方式,因此,当C/A码或P码与D码进行模二和(异或运算)时,表现出来的是码元异或,而波形相乘实验中用MATLAB进行了仿真在进行GPS系统的仿真中,P码的生成较C/A码复杂在实验过程中进行整体的仿真时没有考虑实际中GPS的信道主要受到大尺度路径的损耗、电离层、对流层、多径效应、多普勒效应等的影响电离层分布于地球大气层的顶部,该层中的传播速度与频率有关;对流层对信号传播路径有很大的影响;无线信道由于多径时延扩展,若收发机处于移动状态,各信号支路由于多普勒效应产生频域弥散,在实际中可采用Jace移动信道模型实验中只用了加性白噪声来模拟这些影响,与实际的情况存在一些差距本次实验采用了较为理想的情况下的系统收发模型,并对其进行了仿真得到了相关的波形和频谱GPS是以扩频通信为基础,主要应用扩频通信的抗干扰性能,通过不同的扩频码加以区分GPS卫星同时发射两路扩频信号,一路扩频信号将导航电文分别用C/A码和P码进行扩频,另一路扩频信号信号仅使用P码对导航电文进行扩频。
6、 实验部分代码:1、 GPS信号仿真部分:P码产生的子程序Pcode:function pcode=Pcode(a,NumberPCode,NumberShift) % P码产生 reg1a=[0 0 0 1 0 0 1 0 0 1 0 0]; reg1b=[0 0 1 0 1 0 1 0 1 0 1 0]; reg2a=[1 0 1 0 0 1 0 0 1 0 0 1]; reg2b=[0 0 1 0 1 0 1 0 1 0 1 0]; rx1a=0; rx1b=0; rx2a=0; rx2b=0; x1bWork=1; x2aWork=1; x2bWork=1; N=NumberShift; C1=4092*3750; C2=4093*3749; z1a=mod(N,4092);%取余数 x1a=mod([(N-z1a)/4092],3750); y1a=(N-z1a-4092*x1a)/C1; if ((N-C1*y1a)>=C2) z1b=4092; x1bWork=0; x1b=3748; else z1b=mod((N-C1*y1a),4093); x1bWork=1; x1b=(N-z1b-C1*y1a)/4093; end m=mod(N,(C1+37)); y2a=(N-m)/(C1+37); if (m>=C1) dv=m-C1; else dv=0; end z2a=mod((m-dv),4092); x2a=mod((((m-dv)-z2a)/4092),3750); z2b=mod((m-dv),4093); if (m>=C2) x2b=3748; else x2b=(m-z2b)/4093; end %各移位寄存器的状态 for i=1:z1a slave1a=mod(reg1a(6)+reg1a(8)+reg1a(11)+reg1a(12),2); reg1a(2:12)= reg1a(1:11); reg1a(1)=slave1a; end for i=1:z1b slave1b=mod(reg1b(1)+reg1b(2)+reg1b(5)+reg1b(8)+reg1b(9)+reg1b(10)+reg1b(11)+reg1b(12),2); reg1b(2:12)=reg1b(1:11); reg1b(1)=slave1b; end for i=1:z2a slave2a=mod(reg2a(1)+reg2a(3)+reg2a(4)+reg2a(5)+reg2a(7)+reg2a(8)+reg2a(9)+reg2a(10)+reg2a(11+reg2a(12)) ,2); reg2a(2:12)=reg2a(1:11); reg2a(1)=slave2a; end for i=1:z2b slave2b=mod(reg2b(2)+reg2b(3)+reg2b(4)+reg2b(8)+reg2b(9)+reg2b(12) ,2); reg2b(2:12)=reg2b(1:11); reg2b(1)=slave2b; end %各控制变量的判断 if z1a==4091 rx1a=1; end if z1b==4092 rx1b=1; end if z2a==4091 rx2a=1; x2aWork=0; end if z2b==4092 rx2b=1; x2bWork=0; end %开始产生P码 p=zeros(NumberPCode,1); x1acou=0; x1bcou=0; x2acou=0; x2bcou=0; cou37=dv; x2(1:a)=1; for i=1:(NumberPCode+。





