北斗卫星导航信号串行捕获算法MATLAB仿真报告材料(附MATLAB程序)
基于MATLAB的GPS软件接收机捕获与跟踪算法实现
基于MATLAB的GPS软件接收机捕获与跟踪算法实现第l5卷第4期中国惯性技术学报2007年8月JournalofChineseIneaialTechnology文章编号:1005—6734(2007)04—0423—04VO1.15NO.4Aug.2007基于MA TLAB的GPS软件接收机捕获与跟踪算法实现陈熙源,张昆鹏(东南大学仪器科学与工程学院,南京210096)摘要:研究了GPS软件接收机的捕获和跟踪算法,并基于Matlab软件平台和射频前端在Pc 上实现了GPS软件接收机样机.介绍了GPS软件接收机的结构和数据采集硬件,讨论了GPSC/A码的特性,产生原理以及捕获过程.针对传统的串行搜索算法慢的缺点以及高动态GPS软件接收机的特点,在该样机中实现了快速的基于循环卷积的并行捕获算法,并联合使用超前滞后环和对相位反转不敏感的科斯塔斯锁相环分别对码相位和多普勒频偏进行跟踪,解调得到导航电文.仿真和测试结果表明,使用GPS软件接收机进行信号处理的思想使用户在算法处理和软件升级等方面具有更大的灵活性,可应用于下一代任何全球导航卫星定位系统(GNSS)和空基增强系统(SBAS)接收机的设计.关键词:GPS软件接收机;仿真;捕获;跟踪中图分类号:U666.1文献标识码:A RealizationofacquisitionandtrackingalgorithmsforGPSsoftwarereceiverbasedonMA TLABCHENXi—yuan,ZHANGKun—peng (SchoolofInstrumentScienceandEngineering,SoutheastUniversity,Nanjing210096,China) Abstract:AcquisitionandtrackingalgorithmsforGPSsoftwarereceiverwerestudied.AprototypeofGP Ssoftware receiverthatrunsonPCWasdevelopedbasedonMatlabplatformandRFfront—end.ThestructureofGP Ssoftwarereceiverandthedatacollectionhardwarewerepresented.Theprope~iesandgenerationprincipleandacq uisitionprocessoftheGPSC/Acodewerediscussed.Sincetheconventionalserialsearchingalgorithmisslowan dconsideringthedemandofhighdynamicGPSsoftwarereceiver,afastparalleltrackingalgorithmbasedoncyclicconvolutionWasimplementedinthesamplereceiver,andearly-latercodetrackingloopandCostasphas elockloopwereusedtotrackcodephaseandDopplerfrequencyshift,respectively.Sothenavigationdatacouldbede modulated. SimulationsandexperimentsshowthattheideasofsignalprocessingusingGPSsoftwarereceiverprovid emoreflexibleinalgorithmsprocessingandsoftwareupdatingforusers,andCanbeappliedtothenextgeneratio nGlobal NavigationSatelliteSystemandSpaceBasedAugmentationSystemreceiversdesign.Keywords:GPSsoftwarereceiver;simulation;acquisition;tracking美国GPS的现代化,俄罗斯GLONASS的复兴,欧洲伽利略系统的出现和我国”北斗二代”的成熟,即将带来下一代全球导航卫星定位系统.设计能灵活充分利用所有导航卫星信号的下一代GNSS接收机是一项具有挑战性的工程【”.目前GPS接收机由射频前端,用于信号处理的ASIC和进行位置解算的CPU组成【.软件可以下载~EJCPU中改变接收机的性能参数,然而预先设计的跟踪通道,相关器和控制环路参数已固化~OASIC中,限制其灵活性.而GNSS软件接收机是下一代GNSS接收机设计的最佳方案.GNSS软件接收机通过软件实现其信号捕获和跟踪处理而不是硬件【.各GNSS虽然不同,但都是基于信号处理而进行需要的操作.本文把GPS软件接收机作为一个例子实现,其思想可以应用于任何GNSS软件接收机的设计.收稿日期:2006-04-05;修回日期:2007~06—18基金项目:教育部新世纪人才支持计划(NCET-06.0462);船舶支撑技术基金项目(6922001029) 作者简介:陈熙源(1969一)男,副教授,博士生导师,主要从事软件接收机,组合导航,惯性元器件标定及误差建模,非线性滤波,信息融合及光纤传感测量等方面的研究.E-mail:****************.ca424中国惯性技术学报2007年8月1GPS软件接收机GPS软件接收机在最前端使用ADC把GPS信号转化成数字信号,换句话说,在尽可能靠近天线的部分数字化输入信号【.如图l天线接收从GPS卫星传送的信号,前端把输入信号放大到合适的幅度,并把射频转换到合适的频率,ADC数字化输入信号.天线,射频前端和ADC构成GPS软件接收机中的硬件部分【.硬盘可以存储数据进行事后处理,也可使用模拟器的数据.信号量化以后,用软件对其进行处理.捕获就是找出可见卫星的信号,跟踪是更精确地得到信号的相位并检测出导航数据的相位变化,从而获得子帧和导航数据,得到卫星电文和伪距【最终,解算出位置,速度和时间.本文中,把GPS信号从1575.42MHz下变频~xJ2o.49MHz,以l6.37MHz的速率采样,得到4.12MHz的数字中频信号.目前我们研发的重点在基带信号处理部分,使用北京东方联星公司的中频信号采样器作为硬件部分.采样器输出信号可用于实时处理或保存到硬盘进行事后处理.图1GPS软件接收机组成结构Fig.1ArchitectureofGPSsoftwarereceiver2GPSC/A码的捕获预先产生存储于内存的本地C/A码和载波复现信号,在信号捕获和跟踪中反复使用.2.1GPSC/A码的特性和产生将来GPS的信号结构可能会改变,不过目前GPS卫星主要传送频率分别为1575.42MHz和1227.60MHz的Ll和L2两路载波信号.Ll频段包括C/A和P(Y)码,L2频段只包括P(Y)码.Ll频段的C/A~P(Y)码的载波是正交的,表达式如下【6】:SL1=4P(t)D(t)cos(2nff+)+C(t)D(t)sin(2nft+0)(1)】即为Ll频段的信号,4是P码的幅度,P(t)+-1是P码的相位,D(t)=±l表示卫星数据,是Ll 频段的频率,是初始相位,是C/A码的幅度,C(f)=±l表示C/A码的相位.本文仅研究Ll频段的C/A码捕获和导航数据解调.C/A码是码速率为1,023MHz的二进制调相信号(BPSK),每个码元约977.5括1023个码元,所以其周期为1ms,每毫秒重复出现.为了找到c,A码的起始码元只需要很少的数据,比如1ms.如果没有多普勒效应,1ms的数据包括1023个码元.处理30s的数据可以得到卫星电文的头三帧,那么接收机最少得~lJ30s的数据才可首次解算出用户的位置.GPSC/A码属于伪随机码(PRN)【,不同的卫星使用不同的C/A码.如图2C/A是两组1023位的PRN序YlJG1,G2相乘得到的.C/A码最主要的特性是它们的相关性.高的自相关值和低的互相关值为信号捕获提供了大的动态域.自相关最大值1023,等于C/A码的长度,其他自相关值为63,~1,一65.互相关也有三个值,63,一1和一65【oJ.图2C鹕的产生原理Fig.2GenerationprincipleofC/Acode2.2GPSC/A码的捕获采用捕获算法判断可见卫星并检测其码相位和载波频率.相对于传统的串行捕获算法,本文使用快速的基于循环卷积的并行码捕获算法【.长度为Ⅳ的有限序ylJx(n)的离散傅立叶变换是:Ⅳ一】()=∑x(n)e-j2Ⅳ(2)n=O两个长度为Ⅳ的有限序y~Jx(n)和月)的互相关函数是:Ⅳ一1z()=∑()+)(3)m=O在(3)中已忽略了一个因子.联立(2)和(3)得到和互相关序列的离散傅立叶变换:Ⅳ卅n一+/L∑Ⅳe,/L¨∑删=Ⅳ吖+/L,/L∑∑Il,七/LZ第4期陈熙源等:基于MA TLAB的GPS软件接收机捕获与跟踪算法实现425=X’()y)(4)+表示复数共轭丽由式(4)看出,xfffly~f.相关序列的离散傅立叶变换可由频域的减y与另一个的共轭相乘得到.从而时域的互相关函数可以由乘积的傅立叶反变换得到.如上并行码搜索捕获算法对输入信号和本地码信号进行了循环相关,然而它并没有在所有可能的载频范围搜索,故循环卷积需要在所有可能的载频范围进图3并行码捕获算法Fig.3Parallelcodeacquisitionalgorithm行搜索.在高动态下考虑到多普勒效应后的频偏为±lOkI-Iz.出于频率误差和计算量的考虑,搜索步长设为500Hz,则最大的频率误差为+_250Hz.载波跟踪环的初始带宽要满足这一点.串行捕获算法一般以l或1/2个码元进行捕获.而并行码捕获算法采样速率更高,这儿以16MHz的速率采样,即可提供约1/16个码元的精度,其精度相对高得多.采用并行码捕获算法得到的结果如图4,左图为本算法搜索到第5颗卫星当前不可见,右图为搜索到第6颗卫星当前可见,并得出其码相位和多普勒频偏.3GPS信号的跟踪捕获到信号后,为了得到第5颗星第6颗星.一..一...,?:图4并行码捕获算法得到的结果Fig.4Theresultsobtainedbyparallelcodeacquisitionalgorithm导航数据,需要对其进行跟踪.跟踪环路使用捕获得到的码相位和多普勒频偏进行.本文联合使用超前滞后环和科斯塔斯锁相环对码相位和多普勒频偏进行跟踪,其框图如图5所示.3.1码跟踪环码跟踪环中,本地产生的超前,当前和滞后三路信号与去除了载波的输入信号进行相关.为了增加码环跟踪的可靠性,同时在I和Q路进行跟踪.六路相关器输出的结果同时送入码鉴别器,得到合适的码相位后,调整码生成器的相位.选择归一化的超前减去滞后功率鉴别器,公式如下【.】:.=12222㈦(+Q)+(+Q)如果D>0.1,本地C/A码向右移动;如果一0.1,本地C/A码向左移动.码环跟踪结果如图6所示.I路中超前滞后相关值基本相等,当前相关值最大.3.2载波跟踪由于GPS信号中导航数据相位反转,本文选择对相位反转不敏感的科斯塔斯锁相环进行载频跟踪.基于反正切鉴别器的高精度和对相位反转不敏感的特性,选择其作为载波环路鉴别器.公式如下【.】:图5码与载波跟踪环Fig.5Codeandcarriertrackingloopl路输出0501001502130时间/ms图6超前滞后码环跟踪结果Fig.6Trackingresultswithearly—latecodeloop巨l86420426中国惯性技术学报2007年8月=arctan(Qp/Ip)(6)使用两阶的载波环路滤波器跟踪多普勒频率的变化,每毫秒调整一次,使之接近输入信号的中频.滤波器函数如下【】:+(7)G=18(丽co,,T(8)L1一~————————————————————6JJi}d4+4+()’G:—1.::4+丁+(7)一2p工’1.)4式中,为压控振荡器增益,kd为鉴别器增益,是带宽,是阻尼系数,积分时间.载波跟踪环得到的多普勒频率如图7,载波跟踪环当前I路输出的结果如图8,此即为跟踪环路得到的解调数据,每毫秒输出一次.300020001000.1000.2000.3O00(9)科斯塔斯环路载波跟踪时间/ms图7科斯塔斯环多普勒频偏跟踪结果Fig.7TrackingresultforDoppler-frequencyoffsetwit1lCostasloop跟踪环路输出几1jIflIO2004O08008001000时间/ms图8跟踪环路解调出的导航电文Fig.8Navigationdatademodulatedbytrackingloop4结论本文基于PC和中频信号采样器研究了GPS软件接收机的信号捕获和跟踪算法,分析了FFT 捕获方法,超前滞后码和科斯塔斯载波跟踪环路,实现了GPS软件接收机样机.使用软件接收机进行GPS信号处理的思想可以用于任何GNSS接收机的设计.将来的工作是开发能兼容GPS和伽利略等系统的实时的GNSS接收机.参考文献(Reference):【1】JamesBao-yenTsui.Fundamentalsofglobalpositioningsystemreceivers:asoftwareapproach[M].New Y ork:JohnWiley&SonsInc.,2000.【2】尹燕,赵明生,蔡凡.数字直扩接收机中同步环路设计与仿真[J】.计算机仿真,2006,23(11):325—331.YINY an,ZHAOMing-sheng,CAIFan.TrackingloopdesignandsimulationfordigitalDSSSreceivers[ J].ComputerSimulation,2006(11):325—331.[3】3SchweikertR,WOrzT,DeGaudenzi,eta1.OnsignalstructuresforGNSS-2【J】.InternationalJournalofSatelliteCommunications,2000,18(Issue4-5):271—291.【4】李士兵,王美玲,刘彤.基于GP4020的GPS接收机软件设计[J】.中国惯性技术学报,2006,l4(4):35—38.LIShi.bing,WANGMei-ling,LIUTong.DesignofsoftwareofGPSreceiverbasedonGP4020[J].Journ alofChineseInertialTechnology,2006,l4(4):35—38.【5】SchmidAndr6Neubauer,EhmH,binedGalileo/GPSarchitectureforenhancedsensitivityrece ption[J].InternationalJournalofElectronicsandCommunications,2005,59:297—306.【6】LeyssensJ,MarkgrafM.Evaluationofacommercial-off-the-shelfdual-frequencyGPSreceiverforuseon LEOsatellites[C]//ProceedingsoflONGNSS.LongBeach,Cflifomi~USA,Sept.13—16,2005:1—11.【7】唐康华,吴美平,胡小平.基于射频前端的GPS软件接收机设计与验证【J1.中国惯性技术学报,2007,15(1):51—54.TANGKang-hua,wuMei-ping.HUXiao-ping.DesignandvalidationofGPSsoftwarereceiverbasedon RFfront’end[J].JournalofChineseInertialTechnology,2007,15(1):5卜54.【8】8PanyMoonSw,FtirlingerK,IrsiglerM,eta1.PerformanceassessmentofanundersamplingSWCreceive rforsimulatedhigh-bandwidthGPS/Galileosignalsandrealsignals[C]//ProcoftheI6IONGPS/GNSS.Portland,Ore gon,9-12September2003?103-116。
【matlab国外编程代写】GPS信号捕获matlab仿真
【matlab国外编程代写】GPS信号捕获matlab仿真clear;%指标是signalpower=-185dBW,此时可以进行室内定位;%指标是SNR=-52dB,此时noisepower=-133dBWDopler_bound = 10; %原来是20,为加快运行速度,减少频率槽数Freq_bin = 500;Fc = 1250000;Length_of_data = 5000;Length_of_fft = 4096;NUM = 5;%50010;Signalpower = -177 %I路信号的功率(dBW)Noisepower = -143 %噪声的复功率(dBW)Threshold = 1e5;Times_of_ncoh = 40;%变量初始化successcount=0;%在卫星从地平线升起或降落时,用户速度900m/s时,径向速度差不多(+ -)10K,fid_ca=fopen('CA_5000.txt','r');CA_samp=fscanf(fid_ca,'%d');%5000点fclose(fid_ca);CA_samp=CA_samp';%本地伪码FFT:CA_fftCA_local=Average(Length_of_data, Length_of_fft, CA_samp);%plot(CA_local)CA_fft=fft(CA_local);%plot(imag(CA_fft))Idata=ReadIn( ); %把文本Idata全部读到Idata数组中Qdata=ReadIn( ); %Idata=Idata';Qdata=Qdata';Idata(1:NUM)=[]; %删去前NUM个元素Qdata(1:NUM)=[];AMP=sqrt(2*10^(Signalpower/10)) %输入量为幅度系数,单位相当于(V),%AMP=1e-9,此时signal power=-183dBW DIV_AWGN= 10^(Noisepower/10) %输入量为高斯白噪声的方差。
基于MATLAB的GPS信号的仿真设计
摘要扩频通信是近几年来迅速发展起来的一种通信技术。
在早期研究这种技术的主要目的是为提高军事通信的和抗干扰性能,因此这种技术的开发和应用一直是处于状态。
扩频技术在军事应用上的最成功例可以以美国和俄国的全球定位系统(GPS和GLONASS)为代表;在民用上GPS和GLONASS也都得到了广泛的应用,这些系统的基础就是扩频技术。
全球定位系统(GPS)用于对全球的民用与军用飞机、舰船、人员、车辆等提供实时导航定位服务。
GPS系统采用典型的CDMA体制,这种扩频调制信号具有低截获概率特性。
该系统主要利用直接序列扩频调制技术,采用的伪码有C/A码和P(Y)码两种。
本文讲述的是直接序列扩频通信技术在全球定位系统(GPS)中的应用。
主要介绍扩频通信中的伪码仿真,简要论述M序列和伪随机噪声码(P码和C/A码)与其产生,并使用MATLAB7.0仿真M序列、P码和C/A码的编码过程和仿真结果,介绍直扩频技术伪码的相关知识,重点介绍P码。
关键字:全球定位系统;直接扩频通信;伪码仿真AbstractSpread spectrum communication is a communications technology developed rapidly in recent years. In early studies the main purpose of this technology is to improve the military communications confidential and anti-jamming performance, therefore the development and application of this technology is always in secret state. Spread spectrum technology in the most successful military application examples are the United States and Russia could the global positioning system (GPS and GLONASS) for representative; In civil GPS and GLONASS also have been widely used,which foundation of system is the spread spectrum technology.Global positioning system (GPS) is used to provide real-time navigation and positioning services for global civil and military aircraft, ships, personnel, vehicles and so on. GPS system adopts the typical CDMA system, which kind of spread spectrummodulation signals have low intercept probability characteristic. This system mainly used the direct sequence spread spectrum modulation technology, using the PRN code including C/A code, P codes and Y codes.This article tells the direct sequence spread spectrum communication technology applied in global positioning system (GPS) .The article mainly introduces the pn code spread spectrum communication simulation, briefly discussing M sequence and pseudo random noise code (P yards and C/A yards) and its produce and use MATLAB7.0 simulate M series, P yards and C/A yards of encoding process and the simulation results, introducing pn code straight spread-spectrum technology knowledge, especially P yards.Key: GPS; DS-SS;Pn code simulation目录引言41GPS理论与其特性51.1GPS系统概述51.2GPS信号构成71.2.1M序列101.2.2C/A码131.2.3P码151.3小结192MATLAB软件192.1MATLAB软件简介202.2MATLAB应用概述212.2.1 MATLAB功能介绍212.2.2 MATLAB使用方法233 GPS卫星导航信号算法与其MATLAB仿真293.1 C/A码仿真代码与其仿真结果293.2 P码的仿真代码与其仿真结果323.3 结果分析与其相关性分析36结论37致38参考文献39附录A 英文原文40附录B 中文翻译41附录C C/A码源代码41附录D P码源代码54引言全球卫星定位系统,简称GPS系统,可在全球围,全天候为用户连续地提供高精度的位置、速度和时间信息。
GPS卫星轨道计算及其MATLAB仿真
GPS卫星轨道计算及其MATLAB仿真黎奇,白征东,李帅,陈波波(清华大学地球空间信息研究所,北京 100084)一、程序设计思路1. 读取RINEX文件(注意:文件路径)2. 计算测量日周积秒(测量日的格里历→GPST)3. 按卫星轨道计算步骤计算WGS-84坐标系坐标(内插)4. 按需要将WGS-84坐标系下坐标转换为所需坐标系坐标5. 画图输出二、n 文件说明及读取程序参考时刻oe t 的RINEX 格式的 “”广播星历文件具体如下:(加粗部分为本次轨道化Ω,率i ,弧度/秒4-22)标svacc ,米)收到的卫星信号解,秒)文件名:RinexNreader.m 输 入:文件地址,卫星编号三、计算测量日的周积秒文件名:GCtoGPS.m (其中调用函数:GCtoJD.m)输入:指定公历的年、月、日、时、分、秒文件名:GCtoJD.m输 入:指定公历的 年、月、日四、GPS 卫星轨道计算步骤及计算程序1. 计算卫星运动的平均角速度n平均角速度()03n =经摄动参数n ∆改正后的平均角速度0n n n =+∆3#61-79),n ∆(2#42-60);14323.98600510/GM m s =⨯ 2. 计算归化时间k t说明:①广播星历是oe t 时刻的,对应的轨道参数也是oe t 时刻的,而观测时间在t 时刻,显然oe t t <。
所以,要想获得t 时刻的轨道参数,需要知道t 与oe t 之间的差值即k t 。
以此,按照oe t 时刻轨道参数,外推t 时刻轨道参数。
②k t 的起算时间是星期六/星期日子夜0点,当302400k t s >时,604800k t s -;当302400k t s <-时,+604800k t s 。
(604800s=1周) =k oe t t t -,且604800302400604800302400k k k k k k t t t t t t =-⎧⎨=+⎩> <-已知:oe t (1#4-21)3. 计算观测时刻的平近点角k M0k k M M nt =+已知:0M (2#61-79),n (见1),k t (见2) 4. 计算观测时刻的偏近点角k Esin k k k E M e E =+已知:k M (见3),e (3#23-41)方法:迭代解算,设初值0k k E M =,迭代2次基本收敛。
北斗B1I信号的捕获算法
北斗B1I信号的捕获算法王丽黎;杨阳【摘要】北斗B1I信号的捕获是北斗2代接收机的核心模块,它是基于码相位和多普勒频移二维搜索的过程.对于捕获模块,通常采用并行码相位搜索捕获算法来实现对空中可见卫星的捕获.针对信号较弱情况下的卫星捕获,采用了非相干累加与并行码相位搜索捕获相结合的方法.测试结果表明,该捕获算法能够有效快速地实现弱信号的捕获.%BeiDou B1I signal acquisition is a hard core in a BeiDou receiver and is the two-dimension process of the search about the code delay and Doppler frequency. For acquisition, parallel search algorithm of code in frequency domain are usually adopted. For the acquisition of weak signal, a method combining non-correlation integration with parallel search algorithm of code in frequency domain was introduced. The test results show that the acquisition algorithm can effectively and quickly acquire the weak signal.【期刊名称】《计算机系统应用》【年(卷),期】2016(025)003【总页数】5页(P194-198)【关键词】北斗B1I信号;接收机;捕获;弱信号;非相干累加【作者】王丽黎;杨阳【作者单位】西安理工大学自动化与信息工程学院,西安 710048;西安理工大学自动化与信息工程学院,西安 710048【正文语种】中文随着我国成功将第16颗北斗导航卫星送入预定轨道, 北斗导航工程区域组网顺利完成[1]. 第2代北斗导航系统主要功能为定位、测速、单双向授时和短报文通信[2,3]. 因此, 针对北斗导航系统相应的接收技术的研究逐渐成为研究热点. 传统的接收机由射频前端、用于信号处理的ASIC以及高速运算的CPU核组成, 设计灵活性受到限制. 相比之下, 软件接收机只需对软件修改便可对接收机进行优化升级, 则更具有方便性和灵活性[4,5].在接收机内, 完成信号捕获是信号处理的第一步, 信号捕获重在估计两个重要参数: 一个是C/A码周期的开始, 另一个是输入信号的载波频率, 获得导航卫星信号的载波频率(或称为载波多普勒频移)和码相位这两个参数的粗略值, 然后跟踪过程则利用这些粗略值进一步得到频率和码相位的精确值并进而解算出导航电文. 因此对接收机性能好坏影响较大的是捕获跟踪算法的好坏[6,7].本文在详细分析了并行码相位搜索捕获算法原理的基础上, 为了能更好的实现对弱信号的捕获, 将并行码相位搜索捕获算法与非相干累加相结合, 不但提高捕获效率, 降低了噪声干扰, 而且有效的提高了弱信号的捕获.目前北斗2代播发B1、B2、B3三个频段的信号, 其信号复用方式为码分多址, 其中B1(1561.098 MHz)信号由I、Q两条支路的测距码和导航电文正交调制在载波上构成. 调制在B1频率上的信号可表示为式(1):其中上角标j表示卫星序号; AB1分别表示B1信号幅度; 分别表示B1信号测距码; 分别表示调制在B1测距码上的导航电文数据码; 表示B1信号载波频率; 表示B1信号载波初相.CB1I码的码速率为2.046 Mcps, 码长为2046, 码宽为488.7 ns(1/2.046 MHz). CB1I码发生的结构如图1所示, 其是由两个线性序列G1和G2模2和产生均衡Gold码后截短1个码片后生成. G1和G2序列分别由两个11级的线性移位寄存器生成, 其生成多项式如式(2)、式(3)所示.(2)(3)G1序列初始相位为************;G2序列初始相位为************.通过对产生G2序列的移位寄存器不同抽头的模2和可以实现G2序列相位的不同偏移, 与G1序列模2和后可生成不同卫星的测距码. 而之所以用这种码传输信号, 就是因为其良好的自相关和互相关特性.图1 CB1I码发生器示意图2 北斗2代B1信号CB1I码的捕获由于CB1I码除了自身完全对齐的情况外, 其余情况几乎是不相关的, 这种特性使得很容易找出两个完全对齐的相同的CB1I码. 捕获过程正是利用其这一特点.2.1 CB1I码的捕获接收机的信号捕获过程一般通过对卫星信号的载波频率和码相位进行扫描式搜索来完成. 捕获的目的就是为了对输入信号和一个测距码序列做相关运算. 并行码相位搜索捕获算法实际上是利用傅里叶变换这种数字信号处理技术来替代数字相关器的相关运算, 而我们需要证明一下两者的等价性.两个长度同为N的有限长序列和的离散傅里叶变换和计算如式(4)、式(5)所示.(4)(5)两个长度同为N的有限长序列和的循环互相关计算如式(6)所示.(6)下面的分析中均省略了中的缩放因子1/N, 的N点离散傅里叶变换计算如式(7)所示.(7)其中是的复共轭. 由式(7)可知, 两个序列与在时域内做相关运算, 相当于它们的离散傅里叶变换与在频域内做乘积运算. 于是倒过来, 乘积的离散傅里叶反变换正好是接收机需要进行检测的在各个码相位处的相关值. 一旦接收机通过傅里叶反变换计算得到相关值, 那么接下来的信号检测就同线性搜索捕获法一样, 即找出在所有搜索单元中自相关幅值的峰值, 并将该峰值与捕获门限值相比较. 若峰值超过捕获门限值, 则接收机捕获到了信号.图2 并行码相位搜索捕获算法原理图如图2所示为并行码相位搜索捕获算法的原理图, 考虑到导航数据位存在跳变的可能, 用含导航数据位的数据进行相关运算所获得的相关峰值将会有较大衰减从而造成漏捕, 在算法实现过程中, 总是采用两段连续数据进行同步相关运算, 在得到的两组相关结果中选择最大功率能量相关峰值较大者(认为该段数据中不包含导航数据位跳变)的相关结果作为捕获判断依据[8].2.2基于非相干累加的CB1I码捕获采用1 ms时长的数据进行上述捕获的时候, 由于噪声的作用可能导致误捕, 当信号较弱时, 甚至会出现漏捕. 而且在北斗MEO/IGSO卫星B1频点信号中, 因为NH 码调制的影响, 相干累加时间不能超过1 ms. 为了提高灵敏度, 只能通过提高非相干累加次数来捕获弱信号[9], 即将相干积分结果进行平方处理后再累加, 从而获得信号增益. 其非相关累加值[10]可表示为式(8):(8)其中: 为M ms的数据信息与测距码的非相干捕获相关值. 可以看出导航电文数据位翻转对积分结果的影响被平方运算有效的降低了. 因此非相干积分可以进行积分时间超过1 ms的积分.非相干累加法消除了导航电文数据位翻转造成的影响, 同时平方运算消除了相位误差造成的副作用, 而前面提到的并行码相位搜索捕获算法通过傅里叶变换实现循环相关, 将相位域捕获过程并行化, 使得搜索量减少到了只需搜索不同的载波频率, 提高运算效率. 将非相干累加法与并行码相位搜索捕获算法相结合, 在大幅降低捕获时间的前提下, 实现了对弱信号的捕获. 其原理图如图3所示.图3 非相干累加捕获原理图通过图3可知, 非相干累加捕获的方法是将并行码相位搜索捕获算法每毫秒的捕获结果按照预先设定好的累加时间进行累加, 其累加原理如式(8)所示, 由于噪声累加的结果增大不如信号累加的结果增加的快, 使得经过一段时间累加后, 可找出明显的相关峰值.3 仿真验证在Matlab环境下对本文研究的信号捕获方案进行仿真验证. 利用卫星信号模拟器对北斗B1频点中频信号进行仿真, 仿真信号的中频频率为2.098MHz, 采样频率为8.8MHz, 仿真产生60s的数据中频信号, 信号中共调制了1号、2号、3号、4号、7号、8号、10号、12号和13号等9颗卫星信号. 信号中加入的是高斯白噪声,信噪比为-35dB. 利用生成的信号, 就可以进行捕获的仿真, 捕获程序流程图如图4所示.图4 CB1I码捕获程序流程图图5是用图1所示的CB1I码发生器产生的对应10号卫星的本地伪码, 其是由两个11级移位寄存器进行模2和生成的. 不同的卫星编号对应不同的抽头, 不同卫星对应的CB1I码则通过查表的方式就可以实现. 横坐标表示采样点数, 截取了2046个码片的前100位, 纵坐标表示CB1I码的相位幅度.图5 10号卫星本地伪码部分截图CB1I码具有良好的自相关和互相关特性, 如图6和图7所示. 除了延迟为零外, 几乎没有自相关性. 只有当本地伪码与接收到的信号的伪码序列能够对齐时才可得到最大相关值. 根据这一特性可轻易找出何时两个码是严格对齐的, 本文采用并行码相位搜索捕获也正是基于此特性. 横坐标表示码片数, 纵坐标分别表示自相关值和互相关值.图6 测距码的自相关性图7 测距码的互相关性当检测门限选用最大峰值与次大峰值的比值(大于2.5)时, 首先使用两段连续的单位数据段, 本文以1 ms数据位为单位数据段, 对其做同步相关运算即对这两段数据进行并行码相位搜索捕获, 在得到的两组相关结果中选择较大的相关峰值作为捕获判断依据进行弱信号捕获的验证结果如图8所示. 其次使用5 ms和10 ms数据进行非相干积分的弱信号捕获验证结果如图9和图10所示.图8 并行码相位搜索捕获算法捕获情况图9 进行5 ms非相干累加的捕获情况图10 进行10 ms非相干累加的捕获情况由图可以看出, 在信噪比为-35dB的情况下, 图8中仅使用并行码相位搜索捕获算法得到的最大峰值与次大峰值的比值并不是很大; 而在图9和图10中采用将并行码相位搜索捕获算法与非相干累加相结合的捕获算法, 在累加时间增大时, 该比值结果明显增加. 证明当进行非相干积分所用数据长度从1ms增加到10ms时, 信号中所有可见卫星的最大峰值与次大峰值的比值增加的都很明显, 能够实现低信噪比信号的捕获, 提高接收机的灵敏度. 当然, 也可以根据实际的需要选择合适的相干累加时间, 达到设计目的.接着再从单颗卫星角度进行研究, 以10号卫星为例, 即PRN=10, 分别进行3ms、6ms和10ms数据的相干累加, 其捕获结果如图11、图12和图13所示.图11 10号卫星进行3 ms非相干累加结果图12 10号卫星进行6 ms非相干累加结果图13 10号卫星进行10 ms非相干累加结果由图11、图12和图13可以看出, 随着捕获所用数据长度的增加, 即非相干累加数据长度增加, 噪声得到一定的抑制, 可见卫星正确相位所对应的归一化相关值也更加明显, 该部分也达到了有效地捕获弱信号的预期效果.4 结语本文研究了北斗软件接收机捕获算法, 分析了并行码相位搜索捕获算法并将其与非相干积分相结合, 并通过仿真数据对算法进行了验证. 可见非相干积分与并行码相位搜索捕获算法相结合不但捕获效率高, 而且较好地抑制了噪声信号, 有效地实现了弱信号的捕获. 对于软件接收机相关模块的研究具有一定的意义, 能够使用户在接收机算法处理和软件更新等方面具有很大的灵活性.参考文献1 何敏,葛榜军.北斗卫星导航系统及应用.卫星应用,2012, (5):19–23.2 中国卫星导航系统管理办公室.北斗导航系统发展报告.国际太空,2012,(4):6–11.3 Meng WX, Liu E, Han Sh. Resaerch and development on satellite positioning and navigation in China. IEICE Trans. Commun, 2012(E95-B): 3385–3392.4 杨东凯,张飞舟,张波译.软件定义的GPS和伽利略接收机.北京:国防工业出版社,2009.5 杨俊,武奇生.GPS基本原理及其Matlab仿真.西安:西安电子科技大学出版社,2006.6 王冰.GPS信号捕获算法的研究.电子科技,2014,27(8): 154–156.7 谢刚.GPS原理与接收机设计.北京:电子工业出版社,2009.8 黄隽祎,李荣冰,王翌等.北斗B1 QPSK调制信号的高灵敏度捕获算法.航空计算技术,2012,42(5):38–42.9 史向男,巴晓辉,陈杰.北斗MEO/IGSO卫星B1频点信号捕获方法研究.国外电子测量技术,2013,32(4):19–21.10 陈军,潘高峰,李飞,余金峰,黄静华译. GPS软件接收机基础(第2版).北京:电子工业出版社,2007.Acquisition Algorithm of BeiDou B1I SignalWANG Li-Li, YANG Yang(Faculty of Automation and Information Engineering, Xi′an University of Technology, Xi’an 710048, China)Abstract:BeiDou B1I signal acquisition is a hard core in a BeiDou receiver and is the two-dimension process of the search about the code delay and Doppler frequency. For acquisition, parallel search algorithm of code in frequency domain are usually adopted. For the acquisition of weak signal, a method combining non-correlation integration with parallel search algorithm of code in frequency domain was introduced. The test results show that the acquisition algorithm can effectively and quickly acquire the weak signal.Key words:BeiDou B1I signal; receiver; acquisition; weak signal; non-coherent integration① 收稿时间:2015-07-06;收到修改稿时间:2015-09-06CB1I码的码速率为2.046 Mcps, 码长为2046, 码宽为488.7 ns(1/2.046 MHz). CB1I码发生的结构如图1所示, 其是由两个线性序列G1和G2模2和产生均衡Gold码后截短1个码片后生成. G1和G2序列分别由两个11级的线性移位寄存器生成, 其生成多项式如式(2)、式(3)所示.G1序列初始相位为************;G2序列初始相位为************.通过对产生G2序列的移位寄存器不同抽头的模2和可以实现G2序列相位的不同偏移, 与G1序列模2和后可生成不同卫星的测距码. 而之所以用这种码传输信号, 就是因为其良好的自相关和互相关特性.由于CB1I码除了自身完全对齐的情况外, 其余情况几乎是不相关的, 这种特性使得很容易找出两个完全对齐的相同的CB1I码. 捕获过程正是利用其这一特点.2.1 CB1I码的捕获接收机的信号捕获过程一般通过对卫星信号的载波频率和码相位进行扫描式搜索来完成. 捕获的目的就是为了对输入信号和一个测距码序列做相关运算. 并行码相位搜索捕获算法实际上是利用傅里叶变换这种数字信号处理技术来替代数字相关器的相关运算, 而我们需要证明一下两者的等价性.两个长度同为N的有限长序列和的离散傅里叶变换和计算如式(4)、式(5)所示. 两个长度同为N的有限长序列和的循环互相关计算如式(6)所示.下面的分析中均省略了中的缩放因子1/N, 的N点离散傅里叶变换计算如式(7)所示.其中是的复共轭. 由式(7)可知, 两个序列与在时域内做相关运算, 相当于它们的离散傅里叶变换与在频域内做乘积运算. 于是倒过来, 乘积的离散傅里叶反变换正好是接收机需要进行检测的在各个码相位处的相关值. 一旦接收机通过傅里叶反变换计算得到相关值, 那么接下来的信号检测就同线性搜索捕获法一样, 即找出在所有搜索单元中自相关幅值的峰值, 并将该峰值与捕获门限值相比较. 若峰值超过捕获门限值, 则接收机捕获到了信号.如图2所示为并行码相位搜索捕获算法的原理图, 考虑到导航数据位存在跳变的可能, 用含导航数据位的数据进行相关运算所获得的相关峰值将会有较大衰减从而造成漏捕, 在算法实现过程中, 总是采用两段连续数据进行同步相关运算, 在得到的两组相关结果中选择最大功率能量相关峰值较大者(认为该段数据中不包含导航数据位跳变)的相关结果作为捕获判断依据[8].2.2基于非相干累加的CB1I码捕获采用1 ms时长的数据进行上述捕获的时候, 由于噪声的作用可能导致误捕, 当信号较弱时, 甚至会出现漏捕. 而且在北斗MEO/IGSO卫星B1频点信号中, 因为NH码调制的影响, 相干累加时间不能超过1 ms. 为了提高灵敏度, 只能通过提高非相干累加次数来捕获弱信号[9], 即将相干积分结果进行平方处理后再累加, 从而获得信号增益. 其非相关累加值[10]可表示为式(8):其中: 为M ms的数据信息与测距码的非相干捕获相关值. 可以看出导航电文数据位翻转对积分结果的影响被平方运算有效的降低了. 因此非相干积分可以进行积分时间超过1 ms的积分.非相干累加法消除了导航电文数据位翻转造成的影响, 同时平方运算消除了相位误差造成的副作用, 而前面提到的并行码相位搜索捕获算法通过傅里叶变换实现循环相关, 将相位域捕获过程并行化, 使得搜索量减少到了只需搜索不同的载波频率, 提高运算效率. 将非相干累加法与并行码相位搜索捕获算法相结合, 在大幅降低捕获时间的前提下, 实现了对弱信号的捕获. 其原理图如图3所示.通过图3可知, 非相干累加捕获的方法是将并行码相位搜索捕获算法每毫秒的捕获结果按照预先设定好的累加时间进行累加, 其累加原理如式(8)所示, 由于噪声累加的结果增大不如信号累加的结果增加的快, 使得经过一段时间累加后, 可找出明显的相关峰值.在Matlab环境下对本文研究的信号捕获方案进行仿真验证. 利用卫星信号模拟器对北斗B1频点中频信号进行仿真, 仿真信号的中频频率为2.098MHz, 采样频率为8.8MHz, 仿真产生60s的数据中频信号, 信号中共调制了1号、2号、3号、4号、7号、8号、10号、12号和13号等9颗卫星信号. 信号中加入的是高斯白噪声,信噪比为-35dB. 利用生成的信号, 就可以进行捕获的仿真, 捕获程序流程图如图4所示.图5是用图1所示的CB1I码发生器产生的对应10号卫星的本地伪码, 其是由两个11级移位寄存器进行模2和生成的. 不同的卫星编号对应不同的抽头, 不同卫星对应的CB1I码则通过查表的方式就可以实现. 横坐标表示采样点数, 截取了2046个码片的前100位, 纵坐标表示CB1I码的相位幅度.CB1I码具有良好的自相关和互相关特性, 如图6和图7所示. 除了延迟为零外, 几乎没有自相关性. 只有当本地伪码与接收到的信号的伪码序列能够对齐时才可得到最大相关值. 根据这一特性可轻易找出何时两个码是严格对齐的, 本文采用并行码相位搜索捕获也正是基于此特性. 横坐标表示码片数, 纵坐标分别表示自相关值和互相关值.当检测门限选用最大峰值与次大峰值的比值(大于2.5)时, 首先使用两段连续的单位数据段, 本文以1 ms数据位为单位数据段, 对其做同步相关运算即对这两段数据进行并行码相位搜索捕获, 在得到的两组相关结果中选择较大的相关峰值作为捕获判断依据进行弱信号捕获的验证结果如图8所示. 其次使用5 ms和10 ms数据进行非相干积分的弱信号捕获验证结果如图9和图10所示.由图可以看出, 在信噪比为-35dB的情况下, 图8中仅使用并行码相位搜索捕获算法得到的最大峰值与次大峰值的比值并不是很大; 而在图9和图10中采用将并行码相位搜索捕获算法与非相干累加相结合的捕获算法, 在累加时间增大时, 该比值结果明显增加. 证明当进行非相干积分所用数据长度从1ms增加到10ms时, 信号中所有可见卫星的最大峰值与次大峰值的比值增加的都很明显, 能够实现低信噪比信号的捕获, 提高接收机的灵敏度. 当然, 也可以根据实际的需要选择合适的相干累加时间, 达到设计目的.接着再从单颗卫星角度进行研究, 以10号卫星为例, 即PRN=10, 分别进行3ms、6ms和10ms数据的相干累加, 其捕获结果如图11、图12和图13所示.由图11、图12和图13可以看出, 随着捕获所用数据长度的增加, 即非相干累加数据长度增加, 噪声得到一定的抑制, 可见卫星正确相位所对应的归一化相关值也更加明显, 该部分也达到了有效地捕获弱信号的预期效果.本文研究了北斗软件接收机捕获算法, 分析了并行码相位搜索捕获算法并将其与非相干积分相结合, 并通过仿真数据对算法进行了验证. 可见非相干积分与并行码相位搜索捕获算法相结合不但捕获效率高, 而且较好地抑制了噪声信号, 有效地实现了弱信号的捕获. 对于软件接收机相关模块的研究具有一定的意义, 能够使用户在接收机算法处理和软件更新等方面具有很大的灵活性.1 何敏,葛榜军.北斗卫星导航系统及应用.卫星应用,2012, (5):19–23.2 中国卫星导航系统管理办公室.北斗导航系统发展报告.国际太空,2012,(4):6–11.3 Meng WX, Liu E, Han Sh. Resaerch and development on satellite positioning and navigation in China. IEICE Trans. Commun, 2012(E95-B): 3385–3392.4 杨东凯,张飞舟,张波译.软件定义的GPS和伽利略接收机.北京:国防工业出版社,2009.5 杨俊,武奇生.GPS基本原理及其Matlab仿真.西安:西安电子科技大学出版社,2006.6 王冰.GPS信号捕获算法的研究.电子科技,2014,27(8): 154–156.7 谢刚.GPS原理与接收机设计.北京:电子工业出版社,2009.8 黄隽祎,李荣冰,王翌等.北斗B1 QPSK调制信号的高灵敏度捕获算法.航空计算技术,2012,42(5):38–42.9 史向男,巴晓辉,陈杰.北斗MEO/IGSO卫星B1频点信号捕获方法研究.国外电子测量技术,2013,32(4):19–21.10 陈军,潘高峰,李飞,余金峰,黄静华译. GPS软件接收机基础(第2版).北京:电子工业出版社,2007.。
GPS软件接收机中信号捕获算法研究及Matlab仿真【开题报告】
毕业论文开题报告电子信息工程GPS软件接收机中信号捕获算法研究及Matlab仿真一、课题研究意义及现状GPS(Global Positioning System)即全球卫星定位系统,从1973年发展到2009年36年间,实际意义早已超过设计之初的定义。
现在,GPS不仅仅为移动目标提供导航、定位作用,而且还派生出许许多多新型功能;是人脑,电脑,移动目标三者之间的一种有机联系系统。
随着我国城市建设和改造步伐加快,城区道路不断新建,错综复杂的道路交通甚至衍生出一批以指路为业者。
新建的楼堂馆所,新铺的柏油马路让一些本来熟悉的地方变得陌生,纵横交错的城市道路,形态各异的立交桥,使得本城市的居民出门都不得不经常查看地图。
有数据表明,每年北京图书大厦销售排行榜的前三名中一定有地图。
为了适应城市的快速发展,电子地图也应运而生。
电子地图正是GPS软件接收机在实际应用中的一个典型例子。
使用者可以通过使用电子地图,随时随地知道自己所在的具体位置,还可以知道去目的地的具体路线。
卫星导航应用产业在国民经济中发挥着越来越重要的作用,将成为“十一五”发展的亮点。
在“十一五”期间,卫星导航在其它领域如航空、海路、铁路、建筑、电信、电力等方面的应用都会有很大的发展空间。
由此可见,无论在军事经济上,还是人们的日常生活中,GPS定位技术在未来的很长时间里仍会扮演着十分重要的角色。
通过对信号捕获算法的研究,不仅能使我进一步理解所学知识,还会对以后的工作起到意想不到的好处,尤其在提高信号接收速度和提高GPS性能方面,更能起到事半功倍的效果。
二、课题研究的主要内容和预期目标课题主要任务是研究时域滑动相关、并行频域搜索和并行码相位搜索的GPS信号捕获算法,并用Matlab软件对GPS信号进行捕获仿真实验,分析比较各种捕获方法的优缺点。
具体内容:(1)研究GPS信号捕获的基本捕获方法及基本原理;(2)设计出GPS信号捕获的流程图,使用Matlab软件进行仿真;(3)对三种方法所得结果互相进行比较,分析出各自的优缺点;(4)将仿真结果与预期结果进行对比,确认捕获方法的正确与否。
北斗卫星导航信号串行捕获算法MATLAB仿真报告(附MATLAB程序)
北斗卫星导航信号串行捕获算法MATLAB仿真报告一、原理卫星导航信号的串行捕获算法如图1所示。
图1 卫星导航信号的串行捕获算法接收机始终在本地不停地产生对应某特定卫星的本地伪码,并且接收机知道产生的伪码的相位,这个伪码按一定速率抽样后与接收的GPS中频信号相乘,然后再与同样知晓频率的本地产生的载波相乘。
GPS中频信号由接收机的射频前端将接收到的高频信号下边频得到。
实际产生对应相位相互正交的两个本地载波,分别称为同相载波和正交载波,信号与本地载波相乘后的信号分别成为,产生同相I支路信号和正交的Q 支路信号。
两支路信号分别经过一个码周期时间的积分后,平方相加。
分成两路是因为C/A码调制和P码支路正交的支路上,假设是I支路。
当然由于信号传输过程中引入了相位差,解调时的I支路不一定是调制时的I支路,Q支路也一样,二者不一定一一对应,因此为了确定是否检测到接收信号,需要同时对两支路信号进行研究。
相关后的积分是为了获取所有相关数据长度的值的相加结果,平方则是为了获得信号的功率。
最后将两个支路的功率相加,只有当本地伪码和本地载波的频率相位都与中频信号相同时,最后得到的功率才很大,否则结果近似为零。
根据这个结论考虑到噪声的干扰,在实际设计时应该设定一个判定门限,当两路信号功率和大于设定的门限时则判定为捕获成功,转入跟踪过程,否则继续扫描其它的频率或相位。
二、MATLAB仿真过程及结果仿真条件设置:抽样频率16MHz,中频5MHz,采样时间1ms,频率搜索步进1khz,相位搜索步进1chip,信号功率-200dBW,载噪比55dB(1)中频信号产生卫星导航信号采用数字nco的方式产生,如图2所示。
载波nco控制字为:carrier_nco_word=round(f_carrier*2^N/fs); 伪码nco控制字为:code_nco_word=round(f_code*2^N/fs);图 2其中载波rom存储的是正弦信号的2^12个采样点,伪码rom存储长度为2046的卫星伪码。
GPS卫星信号仿真和捕获算法研究
摘要GPS(Global Positioning System)是基于卫星的定位系统,被认定是当前定位导航设备中最重要的发展,在军事和民用中有着广泛的应用。
传统GPS接收机基于专用硬件,具有较高的灵敏度和信号处理速度,但是灵活性差,定型后便无法改动。
GPS软件接收机是利用通用处理器,对实时采集的GPS信号进行处理和计算。
其优点为具有高度的灵活性:可以方便地研究和实现新算法;也可以容易地对软件进行修改来适应未来的GPS信号,节约硬件成本。
因具有以上优点,GPS软件接收机的研发成为了当今世界的热门研究课题。
而研究GPS软件接收机的关键在于其接收设备的基带处理单元,包括捕获和跟踪环路两个部分。
本文的重点就是在Matlab平台上对捕获进行研究和实现。
文中首先介绍了GPS系统的组成:GPS系统由GPS卫星、地面监控系统、GPS 接收机三部分组成。
之后阐述了直接扩频通信以及GPS信号的结构与特性,接着在本文的主体部分,着重研究了GPS软件接收机的信号捕获技术。
对串行时域捕获算法,并行频域捕获算法,并行码相位捕获算法进行了比较,并选择并行码相位捕获算法实现软件接收而串行实现硬件接收。
由于文中所研究的接收机是静态接收机,因此捕获模块的捕获范围是载波多普勒频移5KHz,但由于C/A码多普勒频移非常小,故本仿真是忽略多普勒频移。
然后在Matlab软件平台上实现对GPS 信号捕获的仿真。
关键字:Simulink,GPS信号捕获,Matlab ,C/A码ABSTRACTGPS (Global optimisation techniques based on satellite Positioning System) is the Positioning System, was considered the current orientation navigation equipment, the most important development in military and civilian has extensive applications. Traditional GPS receiver special hardware, based on high sensitivity and signal processing speed, but low agility, finalize the design and can change. GPS software receiver is using gm to collect real-time processor, the GPS signal processing and calculation. Its advantage for a high degree of flexibility: can easily research and to realize the new algorithms; Also can easily modify of software to adapt to future GPS signal, managing hardware cost.Because of its advantages, GPS software receiver above the world development become the hot research topic. And the key research GPS software receiver lies in its receiving equipment, including the baseband processing unit capture and tracking loop two parts. This paper focuses on the Matlab is studied and realization of capture.This paper firstly introduces the GPS system composition: GPS system consists of GPS satellite, ground monitoring system, GPS receiver of three parts. Then expounds the spread spectrum communication and GPS signal directly, then structure and characteristics of the main body part in this article, this paper studies the GPS software receiver signal capturing technologies. Time domain capture of serial algorithm, and HangPin domain capture algorithm, parallel yards compares the phase capture algorithm, and select parallel code phase capture algorithm software to accept and serial realize hardware accept. Because the study is static receiver, so receiver module capture range is captured the doppler frequency modulated 5KHz, but because C/A code doppler frequency is very small, so the simulation is to ignore the doppler frequency. Then in Matlab software platform to achieve captured GPS signals simulation.KEY WORDS:Simulink, GPS signal acquisition, Matlab, C/A目录摘要 (I)第一章绪论 (1)1.1引言 (1)1.11 GPS的发展概况 (1)1.2课题研究的意义和目的 (2)1.3本文的内容和组织结构 (2)第二章GPS系统原理概述 (4)2.1GPS系统组成 (4)2.2GPS信号的组成 (5)2.2.1 载波信号 (5)2.2.2 伪随机码信号 (6)2.2.3 导航电文 (7)2.3GPS扩频通信系统基本原理 (8)2.4GPS信号的MATLAB仿真及实现 (9)2.4.1数据码产生器 (9)2.4.2 C/A码产生器 (10)2.4.3 C/A码互相关性和自相关性验证 (11)第三章GPS信号的捕获 (13)3.1多普勒效应对C/A码相位和载波频率的影响 (13)3.2GPS信号的捕获 (14)3.2.1 串行捕获算法 (15)3.2.2 并行频率捕获算法 (16)3.2.3 并行码相位捕获算法 (17)并行码相位捕获算法,是在频域里执行循环卷积。
基于MATLAB的GPS信号仿真完整源代码123
配套毕业设计论文见百度文库请搜索《基于MATLAB的GPS信号仿真123》附录C 仿真程序代码1、数据码的产生function datacode=data(x)y=rand(1,x);for i=1:xif y(i)<0.5datacode(i)=0;elsedatacode(i)=1;endendy(1)=0;show2(1)=datacode(1);q=2;for i=1:length(datacode)for j=1:100y(q)=i-1+j*0.01;show2(q)=datacode(i);q=q+1;endendplot(y,show2);axis([0 length(datacode) -0.2 1.2]);1、C/A码的产生及扩频调制clc;c=input('请输入数据码的长度:c=');y=rand(1,c);for i=1:cif y(i)<0.5datacode(i)=0;elsedatacode(i)=1;endendx(1)=0;show(1)=datacode(1);p=2;for i=1:cfor j=1:100x(p)=i-1+j*0.01;show(p)=datacode(i);p=p+1;endendsubplot(4,1,1);plot(x,show);title('数据码');axis([0 c -0.2 1.2]);number=input('请输入卫星PRN号码:number=');cacode=CAgenerate(number);temp=cacode(1:100)x(1)=0;show(1)=temp(1);p=2;%下面的循环是为了将结果显示成方波形式 for i=1:length(temp)for j=1:100x(p)=i-1+j*0.01;show(p)=temp(i);p=p+1;endend%画出仿真结果图subplot(4,1,2);plot(x,show);title('C/A码');axis([0 100 -0.2 1.2]);%截取CA码的前十个数据进行扩频,每个数据插入5个CA序列cacode1=cacode(1:10);for i=1:cif datacode(i)==1datacodek((i-1)*50+1:i*50)=ones(1,50);elsedatacodek((i-1)*50+1:i*50)=zeros(1,50);endendfor i=1:cfor j=1:50addr=rem(((i-1)*50+j),10);if addr==0addr=10;endkuopindata((i-1)*50+j)=xor(datacodek((i-1)*50+j),cacode1(addr));endend%下面的循环是为了将结果显示成方波形式x(1)=0;show(1)=kuopindata(1);p=2;for i=1:length(kuopindata)for j=1:100x(p)=i-1+j*0.01;show(p)=kuopindata(i);p=p+1;endendsubplot(4,1,3);plot(x,show);title('扩频数据');axis([0 length(kuopindata) -0.2 1.2]);%每位数据通过正弦波来调制Sinwave=sin([0:2*pi/8:2*pi*7/8]);Sinwave=single(Sinwave);GPSsignal=zeros(1,1);Sinwave=[Sinwave Sinwave Sinwave Sinwave Sinwave];for i=1:length(kuopindata)GPSsignal=[GPSsignal kuopindata(i)*Sinwave];endGPSsignal=GPSsignal(2:length(GPSsignal));subplot(4,1,4);plot(GPSsignal(1:500));title('调制后数据');C/A码产生的子程序CAgenerate:function cacode=CAgenerate(number)if (number<1)|(number>37)disp('输入参数必须在1 ~ 37之间取值');returnendCACode=zeros(1,1023); %生成一个1*1023的零矩阵% 设置寄存器初相Reg1=[1,1,1,1,1,1,1,1,1,1];Reg2=[1,1,1,1,1,1,1,1,1,1];% 设置反馈点,1表示需要反馈gp1=[0,0,1,0,0,0,0,0,0,1];gp2=[0,1,1,0,0,1,0,1,1,1];% 抽头G2Table=[ 2,3,4,5,1,2,1,2,3,2,3,5,6,7,8,9,1,2,3,4,5,6,1,4,5,6,7,8,1,2,3,4,5,4,1,2,4;6,7,8,9,9,10,3,4,6,7,8,9,10,4,5,6,7,8,9,3,6,7,8,9,10,6,7,8,9,10,10,7,8,10;]% 生成一个周期的伪码序列for m=1:1023CACode(m)=mod(Reg1(10)+Reg2(G2Table(1,number))+Reg2(G2Table(2,number)),2); Reg1=[mod(Reg1*gp1',2),Reg1(1:9)];Reg2=[mod(Reg2*gp2',2),Reg2(1:9)];endcacode=CACode;2、C/A码的相关性分析clc;n=input('请输入卫星PRN号码:n=');cacode1=CAgenerate(n);%在G2序列中找出-1并转换为0,找出1并转换为1ind1=find(cacode1==1);ind2=find(cacode1==0);cacode1(ind1)=-ones(1,length(ind1));cacode1(ind2)=ones(1,length(ind2));N=1023;z=zeros(1,1023);for i=0:N-1for k=i+1:N-1z1(k)=cacode1(k)*cacode1(k-i); z(i+1)=z(i+1)+z1(k);endz(i+1)=z(i+1)/N;endsubplot(2,1,1);plot(z);title('自相关特性');axis([-50 1300 -0.5 1.2]);n=input('请输入卫星PRN号码:n='); cacode2=CAgenerate(n);ind1=find(cacode2==1);ind2=find(cacode2==0);cacode2(ind1)=-ones(1,length(ind1)); cacode2(ind2)=ones(1,length(ind2)); N=1023;h=zeros(1,1023);for i=0:N-1for k=i+1:N-1h1(k)=cacode1(k)*cacode2(k-i); h(i+1)=h(i+1)+h1(k);endh(i+1)=h(i+1)/N;endsubplot(2,1,2);plot(h);title('互相关特性');axis([-50 1300 -0.5 1]);4、 P码的产生及扩频调制clc;c=input('请输入数据码的长度:c=');y=rand(1,c);for i=1:cif y(i)<0.5datacode(i)=0;elsedatacode(i)=1;endendx(1)=0;show(1)=datacode(1);p=2;for i=1:cfor j=1:100x(p)=i-1+j*0.01;show(p)=datacode(i);p=p+1;endendsubplot(4,1,1);plot(x,show);title('数据码');axis([0 c -0.2 1.2]);NumberPCode=input('enter the NumberPcode='); NumberShift=input('enter the NumberShift=');a=input('enter a=');pcode=Pcode(a,NumberPCode,NumberShift);x(1)=0;show(1)=pcode(1);p=2;for i=1:length(pcode)for j=1:100x(p)=i-1+j*0.01;show(p)=pcode(i);p=p+1;endendsubplot(4,1,2);plot(x,show);title('P码');axis([0 length(pcode) -0.2 1.2]);pcode=pcode(1:10);for i=1:cif datacode(i)==1datacodek((i-1)*50+1:i*50)=ones(1,50);elsedatacodek((i-1)*50+1:i*50)=zeros(1,50);endendfor i=1:cfor j=1:50addr=rem(((i-1)*50+j),10);if addr==0addr=10;endkuopindata((i-1)*50+j)=xor(datacodek((i-1)*50+j),pcode(addr));endendx(1)=0;show(1)=kuopindata(1);p=2;%下面的循环是为了将结果显示成方波形式for i=1:length(kuopindata)for j=1:100x(p)=i-1+j*0.01;show(p)=kuopindata(i);p=p+1;endendsubplot(4,1,3);plot(x,show);title('扩频数据');axis([0 length(kuopindata) -0.2 1.2]);%每位数据通过正弦波来调制Sinwave=sin([0:2*pi/8:2*pi*7/8]);Sinwave=single(Sinwave);GPSsignal=zeros(1,1);Sinwave=[Sinwave Sinwave Sinwave Sinwave Sinwave]; for i=1:length(kuopindata)GPSsignal=[GPSsignal kuopindata(i)*Sinwave];endGPSsignal=GPSsignal(2:length(GPSsignal));subplot(4,1,4);title('调制后数据');plot(GPSsignal(1:500));以下是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;elsez1b=mod((N-C1*y1a),4093);x1bWork=1;x1b=(N-z1b-C1*y1a)/4093;endm=mod(N,(C1+37));y2a=(N-m)/(C1+37);if (m>=C1)dv=m-C1;elsedv=0;endz2a=mod((m-dv),4092);x2a=mod((((m-dv)-z2a)/4092),3750);z2b=mod((m-dv),4093);if (m>=C2)x2b=3748;elsex2b=(m-z2b)/4093;end%各移位寄存器的状态for i=1:z1aslave1a=mod(reg1a(6)+reg1a(8)+reg1a(11)+reg1a(12),2);reg1a(2:12)= reg1a(1:11);reg1a(1)=slave1a;endfor i=1:z1bslave1b=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;endfor i=1:z2aslave2a=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;endfor i=1:z2bslave2b=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==4091rx1a=1;endif z1b==4092rx1b==1;endif z2a==4091rx2a=1;x2aWork=0;endif z2b==4092rx2b=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+37)x1(i)=mod( reg1a(12)+reg1b(12),2);x2(i+a)=mod( reg2a(12)+reg2b(12),2);%寄存器x1b的移位函数if x1bWork==1if rx1b==0slave1b=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;else if rx1b==1reg1b=[0 0 1 0 1 0 1 0 1 0 1 0];rx1b=0;endendelse if x1bWork==0endendif reg1b==[0 1 0 1 0 1 0 1 0 1 0 0 ]rx1b=1;x1bcou=x1bcou+1;if x1bcou==3749x1bwork=0;x1bcou=0;endend%寄存器x1a的移位函数if rx1a==0slave1a=mod(reg1a(6)+reg1a(8)+reg1a(11)+reg1a(12),2);reg1a(2:12)=reg1a(1:11);reg1a(1)=slave1a;else if rx1a==1reg1a=[0 0 0 1 0 0 1 0 0 1 0 0];rx1a=0;endendif reg1a==[0 0 1 0 0 1 0 0 1 0 0 0]rx1a=1;x1acou=x1acou+1;if x1acou==3750x1bwork=1;x1acou=0;endend%寄存器x2b的移位函数if x2bWork==1if rx2b==0slave2b=mod(reg2b(2)+reg2b(3)+reg2b(4)+reg2b(8)+reg2b(9)+reg2b(12) ,2); reg2b(2:12)=reg2b(1:11);reg2b(1)=slave2b;else if rx2b==1x2bout=reg2b(11);reg2b=[0 0 1 0 1 0 1 0 1 0 1 0];rx2b=0;endendelse if x2bWork==0reg2b=[0 0 1 0 1 0 1 0 1 0 1 0];x2bWork=1;rx2b=0;endendif reg2b==[0 1 0 1 0 1 0 1 0 1 0 0]rx2b=1;x2bcou=x2bcou+1;if x2bcou==3749x2bWork=0;x2bcou=0;endend%寄存器x2a的移位函数if x2aWork==1if rx2a==0slave2a=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;else if rx2a==1reg2a=[1 0 1 0 0 1 0 0 1 0 0 1];rx2a=0;endendelse if x2aWork==0if rx2a==1cou37=cou37+1;if cou37==37rx2a=0;x2awork=1;cou37=0;endendendendif reg2a==[0 1 0 0 1 0 0 1 0 0 1 1]rx2a=1;x2acou=x2acou+1;if x2acou==3750x2awork=0;x2acou=0;endendendfor i=1:NumberPCodep(i)= mod( x1(i)+x2(i),2);endp=p';pcode=p';5、 P码的相关性分析clc;NumberPCode=input('enter the number Pcode='); NumberShift=input('enter the numbershift=');a=input('enter a=');pcode=Pcode(a,NumberPCode,NumberShift); ind1=find(pcode==1);ind2=find(pcode==0);pcode(ind1)=-ones(1,length(ind1));pcode(ind2)=ones(1,length(ind2));M=NumberPCode;z=zeros(1,M);for i=0:M-1for k=i+1:M-1z1(k)=pcode(k)*pcode(k-i);z(i+1)=z(i+1)+z1(k);endz(i+1)=z(i+1)/M;endsubplot(2,1,1);plot(z);title('自相关特性');axis([-50 M -0.5 1.2]);a=input('enter a=');NumberShift=input('enter the numbershift='); pcode2=Pcode(a,NumberPCode,NumberShift); h=zeros(1,M);for i=0:M-1for k=i+1:M-1h1(k)=pcode(k)*pcode2(k-i);h(i+1)=h(i+1)+h1(k);endh(i+1)=h(i+1)/M;endsubplot(2,1,2);plot(h);title('互相关特性');axis([-50 M -0.5 1]);。
卫星信号捕获跟踪仿真与卫星授时的实现
卫星信号捕获跟踪仿真与卫星授时的实现作者:张宝全周枫张少泉来源:《软件》2017年第08期摘要:卫星授时,就是指通过卫星发射或转发高精度标准时间信号的时间同步技术。
文中首先分析了卫星定位和授时的原理。
因为授时需要对卫星信号捕获跟踪,但由于实际的卫星不受我们控制,所以用Matlab程序通过合适的算法和参数产生仿真卫星信号,并对仿真卫星信号进行捕获跟踪处理。
最后,实验中采用TD3020T模块等软硬件搭建基于北斗二代卫星的授时系统,授时系统捕获跟踪到了实际卫星报文信息,并用编写好的Matlab程序对报文信息分析处理得到纳秒级精度的标准时间信号,实现了基于北斗二代卫星的纳秒级精度授时系统。
关键词:星授时;信号处理;信号捕获跟踪;GPS;北斗卫星系统中图分类号:TP967.1 文献标识码:A DOI:10.3969/j.issn.l003-6970.2017.08.021本文著录格式:张宝全,周枫,张少泉.卫星信号捕获跟踪仿真与卫星授时的实现[J].软件,2017,38(8):107-112引言信息社会对高精度标准时间的要求十分迫切,时间精度要求达到纳秒级甚至更小,随着信息技术的快速发展,时间计量的精度也不断提高。
而精确时间同步技术的实现需要授时原理来支撑,所以研究授时技术是刻不容缓的大事。
授时技术是科学研究和工程实践中发展起来的新技术,在各领域中的应用越来越广泛。
卫星授时技术的出现,使大面积的用户获得高精度标准时间信号成为现实。
卫星授时具有覆盖范围广、开放性强以及可为移动用户服务等特点,正是由于这些优点,卫星授时成为目前最常用的授时方式之一。
卫星授时技术是新型的授时技术,信号能够全方位大面积覆盖,精确度比其它授时方法高,导航电文信息丰富,经过多年的发展,市场应用已经成熟,再加上我国北斗导航系统的加入,应用前景一片明朗。
因此,卫星授时技术成为最受欢迎的时间同步手段。
下文分析了卫星授时的原理,并将进行相关实验来论证。
基于MATLAB的GPS信号的仿真研究
基于MATLAB的GPS信号的仿真研究一、本文概述随着全球定位系统(GPS)技术的广泛应用,其在导航、定位、授时等领域的重要性日益凸显。
为了更好地理解GPS信号的特性,提高GPS接收机的设计水平和性能,对GPS信号进行仿真研究显得尤为重要。
本文旨在探讨基于MATLAB的GPS信号仿真方法,分析GPS信号的特点,以及如何利用MATLAB这一强大的数值计算环境和图形化编程工具,对GPS信号进行高效、精确的仿真。
文章首先介绍了GPS系统的发展历程、基本原理和信号特性,为后续的信号仿真提供了理论基础。
随后,详细阐述了GPS信号仿真的一般流程,包括信号生成、传播模型、噪声添加等关键环节。
在此基础上,重点介绍了如何利用MATLAB编写GPS信号仿真程序,包括信号生成、传播模型建立、噪声模拟等方面的具体实现方法。
文章还通过实际案例,展示了基于MATLAB的GPS信号仿真在接收机设计、性能评估等方面的应用。
通过仿真实验,可以深入了解GPS信号在不同环境下的传播特性,为接收机算法优化和性能提升提供有力支持。
本文的研究不仅有助于加深对GPS信号特性和仿真方法的理解,也为GPS接收机的研究和开发提供了一种有效的技术手段。
通过MATLAB的仿真研究,可以更加直观地揭示GPS信号的本质规律,为实际应用提供有力指导。
二、GPS信号原理及特性全球定位系统(GPS)是一种基于卫星的无线电导航系统,它利用一组在地球轨道上运行的卫星来提供全球范围内的定位和时间服务。
每个GPS卫星都不断地向地球表面发射射频信号,这些信号被地面上的接收器接收并处理,从而确定接收器的三维位置和速度,以及精确的时间信息。
GPS卫星发射的信号是L波段的射频信号,分为两个频段:L1(142 MHz)和L2(160 MHz)。
每个频段都包含两种类型的信号:C/A码(粗捕获码)和P码(精密码)。
C/A码是对公众开放的,用于民用和商业应用,而P码则用于军事和特定的高精度应用。
北斗B3I信号捕获方法的研究与实现
第38卷第6期 计算机应用与软件Vol 38No.62021年6月 ComputerApplicationsandSoftwareJun.2021北斗B3I信号捕获方法的研究与实现沈周锋(漳州职业技术学院电子工程学院 福建漳州363000)收稿日期:2019-10-16。
福建省中青年教师教育科研项目(JAT191401)。
沈周锋,讲师,主研领域:电子测量技术,通信技术。
摘 要 针对北斗导航系统B3I频段信号捕获计算量大、速度慢的难题,提出具有码相位检测和频偏估计的自适应捕获方法。
利用本地伪码检测接收序列码相位,采用扫频方法进行频偏估计。
扫频过程中自适应改变本地伪码编号,累加时长和扫频步长,从而帮助终端优先捕获信噪比高的卫星信号。
理论分析和仿真表明,该方法在信噪比大于-25dB时只需7次扫频即可达到100%的捕获概率。
信噪比在-40dB至-25dB之间时,累加时长自适应增大,捕获概率仍然维持在100%。
总之,该算法总是以最小计算量尝试捕获质量最优信号,恶劣环境下仍能可靠捕获,符合导航终端信号搜索要求。
关键词 信号捕获 同步 北斗导航系统 B3I信号中图分类号 TP393 TN967.1 文献标志码 A DOI:10.3969/j.issn.1000 386x.2021.06.018RESEARCHANDIMPLEMENTATIONOFBDSB3ISIGNALACQUISITIONMETHODShenZhoufeng(ElectronicEngineeringDepartment,ZhangzhouInstituteofTechnology,Zhangzhou363000,Fujian,China)Abstract FortheproblemsoflargeamountofcalculationandlowspeedofsignalacquisitioninB3IbandofBDS,anadaptiveacquisitionmethodwithcodephasedetectionandfrequencyoffsetestimationisproposed.Localpseudo codewasusedtodetectthephaseofreceivedsequencecode,andthenfrequencyoffsetwasestimatedbyscanningfrequencymethod.Inthescanningprocess,thenumberoflocalpseudo code,thecumulativetimeandthescanningsteplengthwereadaptivelychangedtohelptheterminaltocapturethesatellitesignalwithhighsignal to noiseratiofirst.Thetheoreticalanalysisandsimulationshowthatacquisitionprobabilityofthismethodcanreach100%withonly7sweepswhenthesignal to noiseratioisgreaterthan-25dB.WhentheSNRisbetween-40dBand-25dB,thecumulativetimeincreasesadaptively,andtheacquisitionprobabilityremainsat100%.Inaword,thisalgorithmalwaystriestocapturethebestqualitysignalwiththeleastamountofcomputation,anditcanstillbereliablycapturedinharshenvironment,whichmeetstherequirementsofnavigationterminalsignalsearch.Keywords Signalacquisition Synchronization BDS B3Isignal0 引 言北斗导航系统(BeiDouNavigationSatelliteSys tem,BDS)是我国着眼于国家安全和经济发展需要,自主建设、独立研发的导航系统。
第5章GPS基本原理及其Matlab仿真
fdr
f r vdm c
1575.42 929 3108
4.9kHz
(5-4)
这里c是光速。 因而, 对于一固定观测器来说,最大的多普勒 频移是±5 kHz。
第5章 GPS卫星信号的捕获
如果地面GPS接收设备高速移动,就要考虑进多普勒效应 了。要单独产生一个±5 kHz的频率范围,接收设备需以2078 m/h的速度相对卫星运动,这个速度将包含最高速度的航空器。 因而,在设计GPS接收机时,如果接收机用在低速设备,则认 为载波频率的多普勒频移范围在±5 kHz;相反地,如果用在 高速设备,就要合理假定其多普勒频移的范围在±10 kHz。 这些值对于确定捕获过程的搜索频率范围是至关重要的。因 此,就有了引言中我们提到的为覆盖高速卫星预期中的所有 多普勒频率范围,捕获方法覆盖的频率范围必须在±10 kHz 之内之说。
第5章 GPS卫星信号的捕获
因 此 , 它 移 动 100ns 的 数 据 长 度 , 近 似 花 费 16 ms(100×156.3/977.5)。在高速导航器中,需每16 ms选择一 批数据,以保证输入信号与本地生成码更好地匹配。 但是由 于输入信号中有噪声,用1 ms的数据可能不能非常精确地匹 配, 因而可以拓宽输入信号的调整时间,每20 ms选择一批 输入信号。 对一个低速导航器来说,这个时间可拓宽到40 ms。
vs
rs d
dt
26560km 1.458 104
3874m / s
(5-1)
第5章 GPS卫星信号的捕获
这里rs表卫星轨道的平均半径。我们知道,一个太阳日和一 个恒星日之间相差3 min55.91 s,在这段时间里,卫星大约运 行了914 km(3874 m/s×235.91 s),对应地球表面与卫星的最 高点,相应的角度近似为0.045 rad(914/20 192)或2.6°。如果 卫星接近地平线,相应的角度为0.035 rad或者2°。 因此我们 可以看出,对于地球表面的固定一点,在每天的同一时间里, 卫星位置大约改变2°~2.6°。
GPS信号捕获算法Matlab-Simulink仿真
GPS信号捕获算法Matlab-Simulink仿真电子设计工程ElectronicDesign Engineering第23卷Vol.23第3期No.32015年2月Feb.2015收稿日期:2014-05-13稿件编号:201405084基金项目:国家863计划(2011AA12A101)作者简介:夏运兵(1988—),男,四川内江人,硕士研究生。
研究方向:星载接收机。
GPS 卫星信号是采用数据码和伪随机码组合的码调制技术[1],将卫星所要传递的数据比特经伪随机码扩频为组合码,再对L 频段的载波进行相移键控调制。
采用这种调制模式[2]的信号不仅提高了系统导航定位的精度,并且可以让系统具有较强的抗干扰能力,而所用的关键技术是伪随机码的扩频技术[3]。
地面或天基等用户终端,实现对伪随机码的捕获至关重要,对其捕获算法的研究一直是GPS 接收机研究的一个热点。
本文通过Matlab/Simulink 对3种常用的捕获算法进行仿真,并给出捕获结果图和捕获时间,这对接收终端[4]的捕获模块研究具有一定的参考作用。
1捕获原理及性能分析1.1线性捕获算法线性捕获就是利用数字相关器在时域内对所指定的卫星信号的多普勒频移和码相位[5-7]进行扫描式搜索,是最基本的信号搜索捕获方法。
它通常从频率搜索范围中间值所对应的频点出发开始搜索,然后左右交替逐渐对其两边的频带进行搜索,直到最后检测出信号或者搜索完所有频带为止。
优点在于它所使用的数字相关器只需要几个,并且这些相关器还可以用于信号跟踪,从而降低了硬件设计的复杂程度。
缺点是捕获的时间较长,应用受到限制。
传统线性搜索算法在时域内对所有可能的频点和相位进行串行搜索,搜索的过程只需要加法和乘法运算,无论是在硬件还是软件中都容易实现,在GPS 接收机设计中得到大量应用。
但由于线性搜索算法在实际接收机中实现时,捕获过程需要大量的相乘、累加运算,需要较长的捕获时间。
文中仿真采用多普勒频移范围在0~±10kHz,以500Hz的步长进行遍历搜索,码相位以半个码片遍历搜索,则可得到线性捕获算法完成信号捕获的理论时间为:2046×1ms ×(2×10kHz+1)=83.886s 。
基于MATLAB的GPS信号仿真123
配套的完整源程序代码见百度文库请搜索《基于MATLAB的GPS信号仿真完整源代码123》摘要全球定位定位系统(GPS)是新一代的精密卫星导航定位系统,近年来在民用和军用领域发挥着精确制导的作用。
随着科学技术的发展,GPS导航和定位技术已向高精度、高动态的方向发展。
GPS系统的广泛应用,促使各国政府大力提高发展本国导航定位系统,这就要求我们全面透彻地研究GPS定位系统,为我国的定位导航应用作出贡献。
本文主要研究GPS信号的生成,而在GPS信号的生成过程中,伪码的算法很重要。
m序列是伪码生成的基础,本文首先详细阐述了m序列的生成原理,并进行了相应的自相关性和互相关性分析。
在m序列的基础上,再对C/A码的生成原理进行了详细的介绍。
P码的生成相对来说比较复杂,是伪码的一个重点,本文对其进行了详细的分析。
在MATLAB仿真软件的平台下,本文成功的完成了GPS信号的生成,并且形象的展示了伪码的相关特性,很好的对本文的相关内容进行了仿真。
关键词:全球定位系统;伪码;MATLAB仿真;相关性AbstractAs the new generation of the satellite navigation systems, Global Positioning System (GPS) is more and more important in military and civil fields in recent years. Though the development of science and technology, the technology of navigation and orientation has been progressed to the direction of great precision and dynamic.With the wide application of GPS locating, every country develop our best to make contribution to the positioning and navigation industry of our country.This paper mainly studies the generation of GPS signal, and the algorithm of PN code is very important in GPS signal generation. As m sequence is the basis of PN code generation, this paper firstly explains the m sequence’s generative principle in detail and the characteristics of autocorrelation and cross correlation. On the basis of m series, then this paper introduced C/A code generation principle in detail.As P code is one of the focuses of PN code, and the generation of P code is relatively complex, this paper makes detailed analysis about it.In the platform of MATLAB software simulation, this paper successfully completes the GPS signal generation, and demonstrates the correlation characteristics of PN code visually.It has done a good simulation of the content about this paper.Keywords:Global Positioning System; PN code; MATLAB simulation; correlation characte-ristics目录1 绪论 (1)1.1GPS的应用 (1)1.2本文研究的主要内容 (2)1.3本文研究的目的和意义 (3)2 GPS信号理论及MATLAB软件简介 (4)2.1GPS系统简介 (4)2.2GPS信号结构 (5)2.2.1 载波 (7)2.2.2 伪码 (9)2.2.3 导航电文 (10)2.3伪码 (12)2.3.1 m序列 (12)2.3.2 易捕码C/A码 (16)2.3.3 精码P码 (20)2.4扩频与调制 (24)2.4.1 扩频通信 (24)2.4.2 GPS信号的调制 (25)2.5MATLAB软件简介 (26)2.5.1 MATLAB简介 (26)2.5.2 M文件简介 (27)3 GPS信号仿真程序设计 (33)3.1数据码 (33)3.2C/A码 (34)3.2.1 C/A码的生成及扩频调制 (34)3.2.2 C/A码的相关性分析 (35)3.3P码 (36)3.3.1 P码产生及扩频调制 (36)3.3.2 P码的相关性分析 (39)4 结果分析 (40)4.1C/A码 (40)4.1.1 C/A码的产生及扩频调制 (40)4.1.2 C/A码的相关性分析 (40)4.2P码 (41)4.2.1 P码的产生及扩频调制 (41)4.2.2 P码相关性分析 (43)结论 (45)致谢 (46)参考文献 (47)附录A 英文原文 (48)附录B 汉语翻译 (57)附录C 部分仿真程序代码 (64)1 绪论1.1 GPS的应用全球定位系统(Global Positioning System -GPS)是美国从本世纪70年代开始研制,历时20年,耗资200亿美元,于1994年全面建成,具有在海、陆、空进行全方位实时三维导航与定位能力的新一代卫星导航与定位系统。
北斗B1信号捕获跟踪算法的软件仿真研究
北斗B1信号捕获跟踪算法的软件仿真研究李松林;曹可劲;李豹;朱银兵【摘要】针对北斗B1频率的Ⅰ支路信号,设计并实现了北斗软件接收机的基带处理部分;阐述了北斗B1频点信号的扩频体制和产生过程,并行码相位搜索捕获策略以及鉴相辅助跟踪环路,并设计了二阶数字环路滤波器;同时采用Matlab软件,仿真北斗中频数字信号,编码实现捕获跟踪算法,并分别通过对仿真信号和真实卫星信号的捕获跟踪,验证捕获跟踪算法的可行性,并提出锁频环辅助锁相环算法的改进思路;为进一步开展北斗软件接收机相关技术研究打下了基础.【期刊名称】《计算机测量与控制》【年(卷),期】2016(024)007【总页数】5页(P152-155,158)【关键词】并行码相位算法;鉴相器;数字环路滤波器;软件仿真【作者】李松林;曹可劲;李豹;朱银兵【作者单位】海军工程大学导航工程系,武汉 430033;海军工程大学导航工程系,武汉 430033;海军工程大学导航工程系,武汉 430033;海军工程大学导航工程系,武汉430033【正文语种】中文【中图分类】TN961当前我国北斗卫星导航系统建设已经取得了巨大的突破,可以向各类用户提供连续、稳定和高精度的定位、导航和授时服务。
作为北斗用户端,设计开发基于MATLAB的软件接收机平台对开展北斗卫星导航相关技术研究有重大意义。
北斗信号在信号结构上与GPS信号具有相似性,借鉴典型的GPS信号捕获跟踪算法,可实现对北斗B1信号的捕获跟踪和导航电文的解调。
软件接收机在跟踪某颗卫星信号之前,通过捕获阶段获得该卫星信号的载波频率和码相位的粗略估计值。
跟踪过程中再逐步精细这两个信号参量的估计,并不断复制产生与该卫星接收信号载波频率和码相位相近的本地信号,与接收的卫星中频信号进行混频实现载波剥离和信号解扩,同时解调出信号中的导航电文[1]。
1.1 北斗B1I信号的产生北斗B1信号由I、Q两个支路的“测距码+导航电文”正交调制在载波上构成,然后由卫星天线发射。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
北斗卫星导航信号串行捕获算法MATLAB仿真报告一、原理卫星导航信号的串行捕获算法如图1所示。
图1 卫星导航信号的串行捕获算法接收机始终在本地不停地产生对应某特定卫星的本地伪码,并且接收机知道产生的伪码的相位,这个伪码按一定速率抽样后与接收的GPS中频信号相乘,然后再与同样知晓频率的本地产生的载波相乘。
GPS中频信号由接收机的射频前端将接收到的高频信号下边频得到。
实际产生对应相位相互正交的两个本地载波,分别称为同相载波和正交载波,信号与本地载波相乘后的信号分别成为,产生同相I支路信号和正交的Q 支路信号。
两支路信号分别经过一个码周期时间的积分后,平方相加。
分成两路是因为C/A码调制和P码支路正交的支路上,假设是I支路。
当然由于信号传输过程中引入了相位差,解调时的I支路不一定是调制时的I支路,Q支路也一样,二者不一定一一对应,因此为了确定是否检测到接收信号,需要同时对两支路信号进行研究。
相关后的积分是为了获取所有相关数据长度的值的相加结果,平方则是为了获得信号的功率。
最后将两个支路的功率相加,只有当本地伪码和本地载波的频率相位都与中频信号相同时,最后得到的功率才很大,否则结果近似为零。
根据这个结论考虑到噪声的干扰,在实际设计时应该设定一个判定门限,当两路信号功率和大于设定的门限时则判定为捕获成功,转入跟踪过程,否则继续扫描其它的频率或相位。
二、MATLAB仿真过程及结果仿真条件设置:抽样频率16MHz,中频5MHz,采样时间1ms,频率搜索步进1khz,相位搜索步进1chip,信号功率-200dBW,载噪比55dB(1)中频信号产生卫星导航信号采用数字nco的方式产生,如图2所示。
载波nco控制字为:carrier_nco_word=round(f_carrier*2^N/fs);伪码nco控制字为:code_nco_word=round(f_code*2^N/fs);图 2其中载波rom存储的是正弦信号的2^12个采样点,伪码rom存储长度为2046的卫星伪码。
这样伪码采用2psk的方式调制到射频,加性噪声很小是理想接收中频信号如图3所示。
-10图3 理想中频信号(2)噪声功率估计实际接收机接收到的导航信号淹没在噪声中,本程序对接收到的信号进行了噪声估计并进行了放大。
采用滑动平均估计法估计噪声功率,滑动平均估计法原理如图4所示。
图4 噪声功率滑动平均估计法原理迭代滤波器因子取0.8.功率估计结果是-191.48dBW 。
仿真中将接收中频信号放大到了signal_power_dB=-4.94dBW 。
这个功率与后面的判决门限有关系。
(2) 检测门限的确定Q I Q常见的检测方法有幅度检波、平方检波和平方律检波。
幅度检波器的输出为在H0假设下,z(k) 服从瑞利分布,其概率密度函数为:在H(1)假设下,z(k)服从莱斯分布,其概率密度函数为式中, 为零阶修正的贝塞尔函数。
平方律检波输出为:在H0假设下,z(k)服从自由度为 2M 的 伽马分布,其概率密度函数为在H1假设下,z(k)服从自由度为 2M 的 卡方分布,其概率密度函数为当 M=1时,平方检波累积器就变成平方律检波器 ,可以计算出当归一化门限为Vt 时其虚警概率为:2210222000(/)exp[]() 02kk k k kk k Z Z D D Z f Z H I Z σσσ+=-⋅≥0)2exp()()2(1)/(21200≥-⋅Γ=-k kM k M k Z Z Z M H Z f σσ11/22112220001()(/)()exp()() 022M k k k k M k Z Z Z f Z H I Z λλσλσσ--+=⋅-⋅≥其中 采用恒虚警率检测,设虚警率为pfa ,本仿真取0.1 ,采用平方律检波,归一化判决门限为Vt=(-2*log2(pfa))^0.5,实际判决门限为VT=Vt*signal_power (3) 判决算法常见判决算法有单次判决、M/N 判决、(M/N+1)判决和Tong 判决,采用单次判决,虚警率为pfa=0.1 . 归一化检测门限为Vt=2.5776,判决门限为VT=0.8248; (5)仿真结果搜索21个多普勒频点和40和相位点,仿真设置接收中频为4.991MHz ,相位为2,结果如图5所示。
02201(/)exp[]221exp 2TTkfa k k k V V t Z P f Z H dZ dZ V σσ+∞+∞==-⎧⎫=-⎨⎬⎩⎭⎰⎰2t T V V σ=4.99555.0055.01x 10610203040050100150dopplercode p hase图中最大处的相关结果是144,其他非峰值最大的约为1.约21dB 。
部分相关值如下表:可以看出绝大部分数值都在门限之下,但也存在若干个在门限之上的数值,这些点可能造成虚警。
附:仿真主程序%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%´®ÐⶻñËã·¨·ÂÕæ%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%clear all;clc;% f_doppe=5000;fsample=21e6;f_m=5e6;t_sim=1e-3/1;df=1/t_sim;cnt_det=1; %Åоö´ÎÊýf_carrier=f_m-9*df; %½ÓÊÕÔز¨ÆµÂÊf_code=2.046e6; %αÂëËÙÂÊcode_phase_init=2; %Ê×´ÎËÑË÷ʱ½ÓÊÕÂëÏàλcode_phase_init_cmp=code_phase_init;f_local_init=f_m-10*df; %±¾µØÔز¨nco³õʼƵÂÊlocal_code_phase=3; %%%%±¾µØαÂëÏàλcnt_doppler=21;cnt_phase=40;dot_num=t_sim*fsample; %·ÂÕæÒ»¸öαÂëÖÜÆڵĵãÊýdBW_signal_pow=-200;dB_C_I=60;Am=10^(dBW_signal_pow/20)*2^0.5;pre_noise_power=dBW_signal_pow-dB_C_I+(10*log10(f_carrier));corr_result1=zeros(cnt_doppler,cnt_phase);for dect_num=1:cnt_det %Åоö´ÎÊýfor num_phase=1:cnt_phase %²éÕÒÏàλµãµãfor num_doppeler=1:cnt_doppler %µ¥´Î²éÕÒ¶àÆÕÀÕµãif num_doppeler==1f_local=f_local_init;elsef_local=f_local+df;endsignal_r=signal_gen(fsample,f_carrier,f_code,code_phase_init,dBW_sign al_pow,dB_C_I,dot_num); %%%%%ÕâÀïÔز¨Ö¸Ï±ßƵºóµÄÖÐƵ,ÊÕµ½ºó´¦Àí·¢Ë͵Ļ¬¶¯±êÖ¾£¬ËÑË÷ÏÂÒ»¸öÏàλ%%%%Ê×´ÎËÑË÷¹À¼ÆÐźŹ¦ÂÊif num_doppeler==1 & num_phase==1Ni=10;signal_r1=zeros(1,length(signal_r)+Ni);Qn1=zeros(1,length(signal_r)+Ni);Qn2=zeros(1,length(signal_r)+Ni);Qn3=zeros(1,length(signal_r)+Ni);pow_noise=zeros(1,10);for bbb=1:10for aaa=1:length(signal_r)/10signal_r1(aaa)= signal_r(aaa)*signal_r(aaa) ; a=0.8; %µü´úÂ˲¨Æ÷ϵÊý% Qn2(aaa+1)= signal_r1(aaa)*signal_r1(aaa);Qn1(aaa+Ni)=sum(signal_r1( (aaa):(aaa+Ni)))/Ni;%»¬¶¯Æ½¾ùQn(aaa)= Qn1(aaa+1)^0.5;Qn3(aaa+1)= a*Qn1(aaa)+(1-a)*Qn1(aaa+1);pow_noise1=Qn3(aaa+1);endpow_noise2(bbb)=pow_noise1;endpow_noise=sum(pow_noise2(1:10))/10;pow_noise_dB=10*log10(pow_noise);AD_min_volt=0.8;AD_R=1;AD_power=0.5*AD_min_volt*AD_min_volt/AD_R;AD_power_dB=10*log10(AD_power);Am1=AD_power_dB-pow_noise_dB;Am1=10^(Am1/20);endsignal_r=signal_r*Am1; %ÖÐƵ·Å´óAm_local=0.9;local_carrier=local_carrier_gen(fsample,dot_num,f_local,Am_local);%%%flocal°üº¬Á˶àÆÕÀÕlocal_code=local_code_gen(f_code,fsample,dot_num,local_code_phase)*Am _local;corr_result(num_phase,num_doppeler)=deal_local(signal_r,local_carrier ,local_code);% corr_result1(num_doppeler,cnt_phase)=corr_result;end% pulse_next_phase=1;code_phase_init=mod(code_phase_init+1,2046);% local_code_phase=local_code_phase+1;end%%%%²éÕÒµ¥´Î²¶»ñ×î´óÖµ¼«Î»ÖÃ[phase_max(dect_num)doppler_max(dect_num)]=find(corr_result==max(max(corr_result)));mod_max(dect_num)=max(max(corr_result));det_phase=local_code_phase-phase_max+1;det_doppler=(doppler_max-1)*df+f_m-10*df;disp(det_phase); disp(det_doppler);%%%%%%% %%%%%%% %%%%%%% %%%%%%% ÇóÅоöÃÅÏÞ ºãÐ龯ÂÊ %±ê¶ÈÒò×ÓÊÇÅоöÃÅÏÞÓëÔëÉù¹¦ÂʵıÈÖµfa=0.1;Vt=(-2*log2(fa))^0.5; %¹éÒ»»¯ÅоöÃÅÏÞ% Vt=0;%¾-¹ý·Å´óºó¹¦ÂÊΪAD_power% VT=( Vt*pow_noise );VT=Vt*AD_power ;if mod_max(dect_num)> VT %ƽ·½Âɼ첨flag_det=1;elseflag_det=0;end%Tong¼ì²âK=1;B=2;if flag_det==1K=K+1;elseK=K-1;endif K>=Bdisp('success!');elseif dect_num==cnt_detdisp('failed!');endendendcorr_result_dB=10*log10(corr_result/mod_max);cnt_doppler1=f_m-10*df:df:f_m+10*df;mesh(1:cnt_doppler,1:cnt_phase,corr_result);xlabel('doppler');ylabel( 'code_phase');。