基于fpga的gnss软件接收机算法设计与实现

基于fpga的gnss软件接收机算法设计与实现

ID:33758897

大小:2.78 MB

页数:72页

时间:2019-03-01

上传者:U-22107
基于fpga的gnss软件接收机算法设计与实现_第1页
基于fpga的gnss软件接收机算法设计与实现_第2页
基于fpga的gnss软件接收机算法设计与实现_第3页
基于fpga的gnss软件接收机算法设计与实现_第4页
基于fpga的gnss软件接收机算法设计与实现_第5页
资源描述:

《基于fpga的gnss软件接收机算法设计与实现》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

意}分类号:型窆鱼Z:!UDC:39密级:公珏学号:QZ2兰2坌东南大学硕士学位论文基于FPGA的GNSS软件接收机算法设计与实现研究生姓名:汤堑堡导师姓名:匿盟速申请学位级别王堂亟±论文提交日期至Q!Q生鱼旦学位授予单位丕壶太堂答辩委员会主席戆匿盘学科专业名称戗墨型堂皇撞丕论文答辩日期至Q!Q生曼旦至墨旦学位授予日期至Q!Q生旦旦评阅人畔2010年6月 111111111111111111111Illl111111111111IIII\1760799TheDesignandRealizationofGNSSoftwareReceiverAlgorithmBasedonFPGAAThesisSubmittedtoSoutheastUniversityFortheAcademicDegreeofMasterofEngineeringBYTangXin--huaSupervisedbyProefssorChenXi—yuanSchoolofInstrumentScienceandEngineeringSoutheastUniversity,Nanjing,P.R.ChinaJune2010 创性声明研究生签名:盥蠢峄日期:坐>东南大学学位论文使用授权声明东南大学、中国科学技术信息研究所、国家图书馆有权保留本人所送交学位论文的复印件和电子文档,可以采用影印、缩印或其他复制手段保存论文。本人电子文档的内容和纸质论文的内容相一致。除在保密期内的保密论文外,允许论文被查阅和借阅,可以公布(包括刊登)论文的全部或部分内容。论文的公布(包括刊登)授权东南大学研究生院办理。研究生签名:』蔓亟鞋导师签名:期:伽,d,6,岁 摘要在美国GPS的现代化、欧洲Galileo系统的出现、俄罗斯GLONASS的复兴和中国“北斗二代”部署的大背景下,软件接收机的研究已经称为一个必然的趋势。本文以GPS为对象,阐述了PRN(伪随机码)生成、GPS信号调制过程、接收机前端的下变频、采样等基本原理,同时详细分析了GPS信号捕获、跟踪过程。在GPS信号捕获环节中,为了能使算法适用于实际的硬件开发,改进了GPS捕获算法包括补零计算、循环相关改进、降采样。实验结果显示,补零计算可以弥补算法中采样点不基于2Ⅳ的不足,循环相关改进可以减少卷积的计算量,降采样可以减少整体计算数据量。三种改进算法的误差都在理论范围之内,不影响捕获的最终结果。在GPS信号跟踪环节中,主要推导了锁相环(PLL)、延迟锁定环(DLL)、锁频环(FLL)的模型,而且同时改进了跟踪环路,采用了FLL辅助PLL完成跟踪的方法,前期FLL与PLL共同工作,后期PLL独立工作。实验结果显示了该辅助方法的可行性与优越性(FLL能够辅助PLL快速跟踪上目标卫星以防失锁)。最后提出了各环路编程实现过程中的要点问题。最后探讨了Virtex2pFPGA开发板原理,详细说明了SystemGenerator中的XILINX模块的结构及参数配置。为了能在FPGA(可编程门阵列)上实现GPS信号并行捕获算法,采用了前面补零计算来弥补算法中采样点不基于2Ⅳ的不足,降采样来减少整体数据量,并且在Simulink环境下运用基于FPGA的应用软件SystemGenerator进行了并行捕获算法的FFT模块、虚数乘法模块,平方模块等搭建编程,同时采用了Matlab中的M文件将采样数据仿真成模拟信号导入完成仿真实验,并将仿真结果与Matlab结果进行了相应的比较和分析,得到与Matlab结果同样的捕获频率,虽码相位具有误差,但通过具体分析,该码相位误差由补零计算和降采样引起,证实了SystemGenerator在FPGA实现捕获算法可行性。、本文研究的基于SystemGenerator的FPGA开发,为以后软件接收机的后序硬件开发奠定了基础。关键字:GPS接收机;捕获;跟踪;FLL;FPGA;SystemGenerator 摘要ABSTRACTUnderthebackgroundofthemodemizationoftheGPS.thepresentofEuropeanGalileosystem.therevivalofRussianGLONASSandtheconstructionoftheChinesesecond.generationBeidousystem,thestudyofsoftwarereceiverhasbecomeatrend.Inthispaper,GPSistookasstudyobject.thebasicknowledgeofpseudorandomnoise(P剐叼,themodulationofGPSsignal,thetechnologyinvolvedinsignalconditioningincludingfrequencydownconversionandsamplingarestudied,meanwhile,theprocessesofGPSsignalacquisitionandtrackingareanalyzed.111GPSsignalacquisition,inordertoadaptthealgorithmtotheimplementationinhardware,thealgorithmisimprovedbythemethodsofzeropadding,modifiedacquisitionbycircularcorrelation,reducingsamplingrate.Throughthecorrespondingexperiments,itshowsthatzeropaddingcailsolvethelimitationofdatawhichiSnotbasedon2州.modifiedacquisitionbycircularcorrelationcanreducethenumbersinvolvedinconvolution.reducingsamplingrateCanlightenthewholeloanofprogramcomputation.Andtheerrorsfromthethreeadvancedalgorithmareacceptableintheorywhichwon’tinfluencethefinalresult.InGPStracking,themodelsofPLL,DLL,FLLareproved.AtthesametimethePLLisimprovedusingFLLtoassistPLLintracking.Atbeginning,FLLandPLLworktogether,afterawhile.PLLworkssingly、)IrithoutFLL.nleresultshowsthefeasibilityandadvantageofthismodifiedmethod(FLLCanassistPLLtotrackthesatellitequicklytoavoidthecasenotinalockstate).Later,thekeypointsinprogrammingarediscussed.Atlast.theprincipleofVirtex2pisdiscussed.ThestructureandtheparameterconfigurationofXINLINXmodelsinSystemGeneratorarestudied.InordertoimplementtheGPSparallelacquisitionalgorithminFPGA.themethodofzeropaddingisusedtosolvethelimitationofdatawhichisnotbasedon2一.andreducingsamplingrateisusedtodecreasethetotalnumberofdata.basedontheSimulinkenvironment,thesoftwareSystemGeneratorisusedtosetup也eFFTmodule,multiplierofimaginarynumber,squaremoduleoftheimprovedacquisitionalgorithm,theinputsignaliSgeneratedbyMfilefromthesampledata,thetworesultsfromMatlabandfieldprogrammablegatearray(FPGA)arecomparedandanalyzed,itshowsthatthesameacquisitionfrequencyCanbegotinSystemGenerator,Thoughthecodephasedeviatesalittle,itisdemonstratedthattheerroriscausedbyzeroaddingandreducingsamplingrate,inall,algorithmrealizationfeasibilitybasedonFPGAisverified.Keywords:GPSreceiver;aequisition;tracking;FLL;FPGA;SystemGeneratorⅡ 目录摘要⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯一IABSTRACT⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯II目录⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯一III第一章绪论⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯11.1研究背景与意义⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..11.2国内外发展现状⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.21.3本文主要内容与结构⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯3第二章GPS接收机原理⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯52.1GPS信号⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..52.1.1C,A码⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯52.1.2GPS载波信号与调制⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.102.2GPS接收机前端⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..j⋯⋯...⋯⋯⋯⋯⋯122.2.1下变频⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.122.2.2采样⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..132.3GPS信号捕获与跟踪⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯一132.3.1GPS信号捕获⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..142.3.2GPS信号跟踪⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯152.4_、结⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯。15第三章GPS信号捕获算法及改进⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.163.1GPS捕获算法⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯一163.1.1中频采样器⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..163.1.2二维捕获⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.163.1.3串行捕获⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯。173.1.4并行捕获⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..183.1.5模型理论推导⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.193.2精细频率估计⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯一203.3捕获算法编程实现⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.223.4捕获算法的改进及实验结果⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..233.4.1补零计算⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯233.4.2循环相关改进⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.243.4.3降采样⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯273.5,J、结⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯27第四章GPS信号跟踪算法研究⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯,..⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯294.1GPS信号跟踪⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯294.1.1线性模型⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.294.2锁相环(PLL)⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯304.2.1PLL系统模型⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.304.2.2等效噪声宽度(NoiseEquivalentBandwidth)⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯344.2.3PLL鉴相器⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.354.2.4PLL编程实现⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.364.3延迟锁定环(DLL)⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯374.3.1DLL鉴相器的选择⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.37III 目录4.3.2DLL编程实现⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯384.4锁频环(FLL)⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯384.4.1FLL鉴相器⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.394.4.2FLL编程实现⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..394.4.2FLL与PLL结合⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯394.5实验结果分析⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..404.5.1纯PLL跟踪卫星结果⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯404.5.2等效噪声带宽、阻尼比对跟踪结果影响⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯414.5.3FLL辅助PLL跟踪实验分析⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯434.6卅、结⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..46第五章捕获算法的FPGA仿真实现⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.485.1FPGA开发平台⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯485.2基于SystemGenerator的FPGA开发⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯505.2.1FPGA开发优点⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.505.2.2SystemGenerator开发⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯515.2.3SystemGenerator模块介绍⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯一5l5.3实验测试⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.545.3.1FFT模块测试⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.545.3.2捕获算法仿真⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.575.4卅、结⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..59第六章结论与展望⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯606,1本文工作总结⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯606.2工作展望⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯60致谢⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.62参考文献⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯63攻读硕士期间发表论文⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯65IV 第一章绪论1.1研究背景与意义第一章绪论1901年无线电信号以莫尔斯码方式成功发送字母“S”跨越大西洋(从英格兰到达纽芬兰),预示着无线电世纪的到来,1903年美国怀特兄弟实现了航空飞行,航空也慢慢发展起来,如何应用无线电导航成为了一个热点研究方向【l】。GPS系统是基于美国在60年代研制使用的“子午仪(transit)卫星导航系统”和“时间导航(Timation)系统”,于70年代初投入开发的。从GPS计划的提出到该系统的建成使用,历经20余年,耗资数百亿美元【2】。截至2004年7月23日,在过去的近30年时间里,美国已经发射了50多颗GPS导航卫星,形成了目前为止世界上最为完善、应用最广泛的全球卫星导航系统,并且在海湾战争等一系列局部战争中发挥了重要的作用,使全世界重新开始认识卫星导航系统的战略意义【列。近几年,美国GPS的现代化,俄罗斯GLONASS的复兴和欧洲Galileo系统的出现即将带来下一代全球导航卫星定位系统(GNSS)。同样中国的北斗系统(BNTS)也正在慢慢发展中,BUTS覆盖范围有限,只能够为中国国内及周边地区的用户提供服务,以后也会通过更多的卫星组成区域性或者全球性的导航系统141。如今,国内导航领域对北斗系统(BNTS)的全面发展已经开始准备,为了能顺利设计、掌握本国自己的导航系统,接收机的研发已经义不容辞,现在国内高校、公司等开始慢慢研究接收机技术并努力将技术将用于实际的实践开发。自从1992年5月,在美国电信系统会议上,来自Mitre公司的JoeMitola首先提出了“SoftwareRadios”概念以来,软件接收机就被受到广泛的关注151。软件无线电的基本概念就是在一个通用硬件平台上,通过软件加载的方式用软件来实现所有无线电系统的通信功能。软件无线电的基本思想是将宽带模数变换器(A/D)及数模变换器(D/A)尽可能地靠近射频天线,建立一个具有“A/D—DSP-D/A”模型的通用的、开放的硬件平台,在这个硬件平台上尽量利用软件技术来实现电台的各种功能模块。目前GPS接收机由射频前端,用于信号处理的专用集成电路(ASIC)和进行位置解算的CPU组成。软件可以下载到CPU改变接收机的性能参数,然而预先设计的跟踪通道,相关器和控制环路参数已固化到ASIC中,其灵活性不强。相反,GNSS软件接收机通过软件实现其信号捕获和跟踪处理而不是硬件,由于软件接收机的开放性、全面可编程性、和灵活性的特点,在不需要更改硬件的前提下,通过对软件模块的调整和升级就可以满足不同用户的需要,因此,在整合GNSS各频段卫星导航数据中,有深远的意义[6-101。FPGA(FieldProgrammableGateArray)是一类高集成度的可编程逻辑器件,1985年起源于美国的XILINX公司,它是一种采用单元型结构的新型PLD器件,采用CMOS、SRAM工艺制作,在结构上与简单的阵列型PLD不同,它的内部由许多独立的可编程逻辑单元构成,各逻辑单元之间可以灵活地相互连接,具有密度高、速度高、编程灵活、可重新配置等优点。 第一章绪论在这二十几年的发展过程中,FPGA硬件系统和软件开发工具不断完善且日趋成熟。从最初的1200个可用门到现在的数百万至上千万的单片FPGA芯片。FPGA技术结合了微电子技术、电路技术、EDA技术,与专用的集成电路ASIC相比,FPGA具有灵活性高、设计周期短、成本低、风险小等优势,因而得到了广泛的应用111】,而且用FPGA替代一般的ASIC芯片进行设计已经成为一种发展趋势。一方面FPGA可以通过编写代码来实现复杂逻辑电路,另一方面其内部是由规则的逻辑阵列所组成,这样就可以开发出适应的专用芯片。最近几年里,FPGA已近成为数字信号处理系统的核心器件,尤其在数字通信、网络、视频和图像应用领域中112】。如今的FPGA不仅包含查表法、寄存器、多路复用器、分布式块存储器,而且嵌入了专用的快速加法器、乘法器和输入/输出设备。更重要的一点是FPGA具有实现高速并行运算的能力,这就使得FPGA成为高性能的数字信号处理方面的理想器件,如在数字滤波、快速傅立叶变换等方面,FPGA具有可重新编程的优点,比ASIC更实用f13】。传统的数字信号处理系统核心器件较多使用DSP处理器,因此数字信号处理系统的设计者和底层技术人员通常对C语言和汇编语言很熟悉,但是对硬件描述语言VHDL或Verilog并不熟悉,而且硬件描述语言最终要转换成硬件实现,这就要求工程师对硬件有一定的了解,使用XILlNUXSystemGeneratorforDSP可以使上述问题迎刃而解,SystemGenerator是一款理想的FPGA开发软件【141。本文主要以GPS为对象,详细研究了GPS信号捕获、跟踪以及基于软件SystemGenerator的FPGA开发,其思想可以贯通于其余导航系统,包括中国自制的北斗系统,与传统的接收机相比,软件接收机的优点主要有一下几点【15】:1、实时功率谱分析。可用于监视天线信号的频谱,检测窄带连续波干扰。2、中频数据重演。用户可以经常重复使用采集的原始射频信号,以优化算法和分析结果。3、多传感器组合。在软件层面上组合传感器数据;例如,允许用户利用惯性测量器件等的所有信息,获得“超紧耦合”的GPS/INS组合导航解。4、多相关器输出。允许用户采用先进的鉴相器与滤波器组合跟踪环路;在相关器层面对反射信号与多径干扰进行分析。总而言之,软件接收机为以后其他导航系统提供了方便的平台,将研究成本最低化,并显示出巨大的灵活性和商业潜力。而且为创新提供了一个极好的通道,同时为普通研究者一个理想的用于教学与研究的平台,能让更多的学者认知并投入其中,使之具有一个美好的未来。1.2国内外发展现状第一批GPS接收机研制于20世纪70年代,供DoD(美国国防部)验证GPS的可行性。1982年,为精密测量大地而设计的两款GPS接收机进入市场。麻省理工学院CharlesC.CounselmanxIII设计、Steinbrecher公司制造。1989年DoD开始发射数量足以布满星座的BlockII卫星,并发布了宣布系统运行的计划。从此,注意力开始向信号处理转移,专用集成电路(ASIC)被采用,最终实现了微型化发展Il】o经过多年的发展,基于AsIc硬件接收机技术早已成熟,近几年众多国内外学者开始研究软2 第一章绪论件接收机,并同时也取得了一系列明显的成就。理论知识已经慢慢趋于成熟,具有代表性的是PratapMisra(Lincolntaboratory)和PerEnge(StanfordUniversity)的GlobalPositioningSystem(Signals,Measurements,andPerformance),对GPS的基础、信号、接收机等做了详细的解释和理论推掣151。KaiBorre、DennisM.Akos等所著的ASoftware-DefinedGPSandGalileoReceive从信号处理的基本知识到在软件接收机的具体应用都描述的非常仔细【16l,国内也开始紧跟国外的理论发展。在基础知识之上,国外开始研究算法改进和及其理论分析。1997年8月,Ohio大学的DennisM.Akos在他的博士论文中讨论了GNSS软件接收机前端模拟信号的接收和模数转化(Front.End)的两种设计方案,并且事后处理并验正了卫星信号捕获的FFT算法的可行性和跟踪环路的稳定性。JAMESBAO-YENTSUI在FundamentalsofGlobalPositioningSystemReceiversASottwareApproach结合了matlab分析了软件接收机。并且提出了一种新的信号跟踪方法——_BASS(BlockAdjustmentofSynchronizingSignal)。基于理论知识的研究的深入,对算法的具体实现的研究也开始慢慢热起来,2005年在美国LongBeach,California的界国际卫星导航会议中Hun-SooChoSung-HyuckImGyu-InJee提出了基于SystemGenerator的软件接收机实现,提出软件在pc机中无法达到实时性,并对FPGA中实现理论分析。同样在最近的2007年的国际全球卫星导航会议中TaoHuangBinGuoMatthewTrinkle(澳大利亚)也类似的发了基于SystemGenerator的软件接收机实现问题的文章,主要做了跟踪环路的系统搭建并把它用于教学中。算法的移植和实时性技术仍待提高和改进【17】。在国内,对软件接收机的研究也开始慢慢增多,我国电子集团54所、航天704所、北京航空航天大学、国防科技大学、武汉大学、中科院等高校以及多家从事卫星导航设备开发的公司,都在GPS接收机的研制方面投入了较大的人力物力,并相继尝试开发GPS接收机,其中北航的软件接收机在pc机上的软件实现技术已经成熟。同样国内将FPGA大多应用于硬件接收机,也就是纯粹的用FPGA来实现ASIC电路,在用FPGA实现具体的软件接收机算法这块研究较少。目前GPS在我国的科研应用主要有如下明显缺点:(1)主要采用进口OEM板作为GPS接收机内核,并非自主研制;(2)主要是进行产品的二次开发,如GPS/GIS地理信息系统。总之而言,国内GNSS软件接收机的研究还处于起步水平【13捌】。1.3本文主要内容与结构本文主要介绍了GPS接收机发展背景、GPS接收机原理、FPGA芯片结构以及开发原理。在此基础上通过具体编程实验进行了进一步分析与改进。其中包括GPS信号捕获算法的改进,GPS信号跟踪环路的改进,加入了FLL来辅助PLL进行跟踪,最后在Simulink平台下用SystemGenerator软件仿真实现了捕获算法。全文共分六章,各部分结构如下:第一章:绪论介绍GNSS软件接收机、FPGA开发的研究背景、意义和国内外研究现状,概述论文主要内容和论文结构。第二章:GPS接收机原理对GPS信号的产生原理做了详细理论推导,包括C/A码发生器结构,GPS信号调制,接收机前端。.并介绍了GPS信号捕获与跟踪,为后面的信号处理打下了基础。 第一荦绪论第三章:GPS信号捕获算法及改进讨论了GPSC/A码信号捕获传统方法,包括串行、并行捕获,并在此基础上提出了三大改进方法,补零计算、循环相关改进、降采样。并用实验进行了验证。第四章:GPS信号跟踪算法研究主要分析了锁相环(PLL)、延迟锁定环(DLL)、锁频环(FLL)结构,详细推导了各自鉴别器理论依据。并改进了跟踪环路,采用了FLL辅助PLL方式。最后用相应实验进行了论证。第五章:捕获算法的FPGA仿真实现主要介绍了FPGA芯片结构原理,并详细论述了XILINX模块的参数配置,最后完成了相应实验。第六章:总结与展望论文完成工作的总结及后续研究的个人意见。4 第二章GPS接收机原理2.1GPS信号GPS卫星在不停的发射着两种波段的无线电波,分别是L1和L2波段,L波段覆盖的频率波段主要在1GHz和2GHz之间,L1和L2波段的中心频率分别是:LI:五l=1575.42MHz,L2:无2=1227.60MHz。其中L1中包含了两种信号,一个是给平面用的,另一个是需DoD(departmentofdefeme)批准的用户,L2上的信号则是专为DoD(departmentofdefense)批准的用户服务。GPS信号主要有3种组成:数据码(D码,或者基带信号)、测距码(C/A码、P码)和载波信号(L1和L2)。用户是用GPS接收机来接收GPS卫星信号,然后经过捕获跟踪等一系列相关处理来测出信号传播的时间延迟,从而得到相应的伪距(因为含有误差),从而完成定位等一系列功能。2.1.1C/A码GPS卫星信号主要有两种伪随机码(pseudo.randomnoise,PRN),他们分别是C/A(coarse/acquisition)码和P码,本文中主要讨论C/A码,C/A码是用于分址、捕获卫星信号和粗测距,具有一定的抗干扰能力,提供给民用。GPSC/A码是属于Gold码的伪随机码,信号是两个1023位的PRN序列Gl和(32产生的,其中,G1和G2都是由10位最大长线性移位寄存器组成,并且又同一个1.023MHz的时钟来驱动。r⋯⋯⋯⋯户K:。℃1发生器⋯~!11奄藿寄离幕—————:!驾巴』藕南爨i⋯⋯⋯⋯..皿.=Q;蕤器⋯⋯;图2.1GPSC/A码发生器两个产生器工作的基本原理一样,由带适当反馈的移位寄存器构成,如果移位寄存器位数为n,则产生的序列长度为2n.1。Gl和G2都是由10位寄存器组成,所以对应产生的序列长度为210.1=1023。反馈电路是由模2加法实现的。两个移位寄存器G1和G2的初值是全“l”且预先置入寄存器。卫星表示号(ID)是根据G2发生器的两个输出位置来决定的(图2.1)。总共有37个不同的输出序列,其中32个序列可为32颗卫星的C/A码所利用,且目前只有24颗卫星在运作,另外5个C/A码保留作为其他用途。 第二章GPS接收机原理表2.1C/A码相位分配规定卫星C/A码卫星C,A码卫星CIA码卫星C/A码PRN抽头PRN抽头PItN抽头PRN抽头号选择号选择号选择号选择l2o6113o42l5o83l30823o7125o6226o9324o93408136o723lo3335o1045o9147o8244o6344o105lo915809255o7351o7620616901026608362国87108171o4277o937401082o918205288olO930lO193o62910610203204o7302o7这组C/A码的码长、周期和数码率均相同。即:·码长:N=21001--1023bit周期:T=lms数码率:1.023Mbit/s由此可以推断出码元宽度为:to2斋嘉ms=0·97752ps,这样一个码元对应的距离为:3×10s×0.97752×10_6:293.3m。由于C/A码相对于P码比较短,所以易于捕获。在GPS定位中,为了捕获C/A码,以测定卫星信号的传播延迟,需要对所有的C/A码逐个搜索,通过C/A码捕获卫星后,获得导航电文后,便可以很容易地捕获P码(也是利用P码进行定位的思路)。C/A码的码元宽度较大,一个码元误差对应的测距误差为293.3m,由于精度较低,故C/A码也称为粗码。在用C语言或者Matlab进行C/A码发生器编程的时候,用两个长度为10的一维数组代替G1和G2且IJ可,然后根据具体的C/A码发生器结构进行具体的反馈操作,模2加法采用除2取余算法即可,如图2.1所示。6 第二章GPS接收机原理霄舌已铸零褥蠢图2.2C/AM的频谱图(将1023位扩h茈16367位后的C/A码)GPS信号采用C/A码是利用了其相关特性,该特性类似于数学中的三角函数的正交性,所谓的三角函数系【22J:l,COSX,sinx,cos2x,sin2x⋯,cosnx,sinnx,⋯在区间[一万,万】上正交,就是在三角函数系中任何不同的两个函数的乘积在区间【一万,万】上的积分等于零,即:ICOS/ocsinnx=O(k≠胛,k,刀=1,2,3,...)(2-1)其中区间卜刀,万】可以改成任何长度为2,r的区间。前面提过在对GPS信号进行捕获的时候,需要对所有的C/A码逐个搜索,这样做的目的是为了能搜索到可见星,因为不同的C/A码对应着不同的卫星,相当于一个对号入座的过程,恰恰类似与三角函数正交性的C/A码的相关特性提供了基础。如果码是正交的,则互相关的值就是零,Gold码虽然不是正交,但是接近于正交,这意味其互相关值不为零,但是非常小。从第K颗卫星得到的码的时间平均时问相关函数x∞(t)如下:'_Ro)=:Le础石‘。’o弦‘‘’o—f)西(2.2)1code”下面根据时间偏移和码元周期的关系来进行讨论【17】:首先,来看下时间偏移是码元周期的整数倍的情况,即f=ZZ:7 一.第二章GPS接收机原理—————————————————————————————————————————————————————————一一_尺p=f疋)=‘:声.c“x伪’(fh似’o—z乏)衍=}∑矗‰1巾code”o(2.3)巾、一。,=}(#agrePments一#disagrePments)上code2N(#agrePments一#disagree,咒ents).。.寸导结果只是简单的计数过程,即偏移后的波形和原波形极性相同的次数与极性不同的次数之差。很明显可以得到:R(r)≤尺(o)=1r广z2(f)沈1code=专@秽ements-#disagreements)(2-4)=1当f≠:iTc时,即时间延迟f落在f乏和(f+1)乏之间:R(r)=产f-x(f冷(卜r)衍2瓦1篇N-I山f£n+1)T‘xo)x(h)衍=瓦1篇N-IⅥfn+帅蚓枷(,一f)舢.(:nn+1)T—c—X(咖一f)衍)(2.5)=彳一1∑(%%+,幸(Tc—o—f互))+毛%+“。幸p—f乃))=R(iTc)(i+1一{})+R(o+1)乏)(若-一f)1C』C可见,相关函数尺(f乏(3-9)把I、Q两路得到的信号写成虚数形式:4P。D(t,一t)x(tt—f)exp【/(2嘶‘+△p)】(3·10)再经过与本地PRN码相关后:S=sL+jsQ=.、/PcDexp(jAO)R(Ar,%)】i(△f,%)=÷窆x(,,一f弦(‘一;)exp(j2rrAfDtt)(3-11)o1=11r..≈素lx(t-v)x(t-;:)exp(j2zcAfDt)dt』6为了得到(△f,蛎),可以通过i的幅度,并且要去除两个不能估计的变量(D,AO),最后选择下面的模糊度函数:’这样如式(3—11)所示,通过模糊度函数之后最后就剩下需要的评估的两个变量(△f,晚)。3.2精细频率估计由lms数据得到的频率分辨率大约为1KHz,这对于跟踪环来说过于粗糙。需要的频率分辨率应当在几十赫兹之内。通常,跟踪环的带宽仅为几个赫兹。用DFT寻找精细频率不太合适,因为要得到10Hz的分辨率,需要lOOms的数据(前面已经论证),如本实验中采用了16.367Mhz,lms数据有16367个采样点,这样lOOms数据量过大,FFT操作耗时太久,而且耗资源。通过相对关系可以得到精细频率分辨率。一旦将C/A码从输入信号中剥离掉,输入信号就变成了载波信号(cw)。如果lms数据中的最高频率分量在m时刻为Xm(k),k表示输入信号的频率分量。从DFT输出中得到输入信号的初始相位为口7】:∽,一_(器舞)p均IIll和Rc分别表示实部和虚部。假定在m时刻后很短时间的n时刻,lms输入信号的DFT分量以(Jj})也是最强分量,因为输入分量在很短时间内不会变化。N时刻输入信号的初始相位角和频率分量k为:啪,一。1(嚣舞)p∽2.£野蛎+巧2△野啦硝忙.卜足际r= 第三章GPS信号捕获算法与改进使用式(3.12)与式(3.13)两个相位角计算精频:厂:鱼:塑二生盟(3-14)2z(n一聊)式(3.14)给出了一个比从DFT精确的多得频率分辨率。为了保证其值得唯一性,OAk)-吒(七)得相位差必须小于2万。如果相位差为最大值2万,带宽就是1/(n.m)。其中,(n.m)是里两组输入信号之间的延时。如果每毫秒取DFT的第k个分量,他们之间相隔lkHz,精频测量的不确定宽度也是lkHz。如图3.4(砂给出了5个频率分量,他们间隔lld-Iz。如果输入信号如图3.4(b)落在两个频率分量之间,由于系统噪声的影响,将不能确定其相位。带宽。(a)频率间隔X(k一1)X(k)X(k+1)(b)输入信号图3.4精频捕获的不确定带宽为了去除这种不确定性,有两种解决方法。第一个是加速DFT的操作过程。如果每0.5ms执行一次DFT操作,不确定带宽是2kHz。在频率分辨率为lkHz和不确定带宽为2kHz的条件下,精频测量就不存在不确定性了。但这种方法使DFT操作增加一倍。第二种方法是,当输入连续信号时,采用一种幅值比较方案。如图3.4(b)所示,输入信号落在两个频率点之间,假定X(k)的幅值略高于X(k.1),将X仪)代入上式,得到精细频率。输入信号频率与X(k)相差近500Hz。正确的结果是输入频率比X(k)低500Hz,由于噪声的存在,可能错误地认为输入比x(k)高了500Hz。如果输入最高频率点是X(1(),且相位计算在不确定带宽内,则这个区域接近于X(1【)与X伥.1)的中心或者X(k)与X(1(+1)的中心,这时,如果X(1【.1)大于X(1(+1),输入频率就低于X(k),否则,认为输入信号频率高于X(k)。如此,精频的准确性由相位决定,但频率差值的符号有最高频率放量邻近的两个频率分量的幅值决定【27】。然而,考虑到两组连续输入信号可能由于导航电文引起了1800的相位偏移,这样,输入信号就不能看作是连续信号了。对lms的输入信号,当频移为+_250Hz时,由上式得其相应的相位角变化为±,r/2。假设频率偏移250Hz,其相应的相位角为/t"/2,但由于导航数据导致了相位的翻转,相位变为一/t"/2(1r/2一万),相当于频率偏移了.250Hz。假设不考虑导航数据导致的相位翻转,结果将有500Hz的误差。21 第三章GPS信号捕获算法与改进为了避免这个问题,频率不确定的最大值必须小于250Hz。由前人的实验经验,本系统最大频移设为+_200Hz,其相应的相位角差为±27r/5。若无相位翻转,则相位角差在2万/5之内;如有相位翻转,则产生相位角差绝对值为3丌/5(I±(2石/5)-T=I),这个值比2巧/5大得多。如果这样,减去兀就可以保证频率差小于2万/5,得到正确的相位差。为了保证最大频移在200Hz以内,X(1【一1),X(1(),X(k+1)的频率点间隔最大必须为400Hz。最后由上两式将x(1【)的实部和虚部转化为相位角,通常相位角范围在±7r之间,两个相位角的角度差可以是0~2万间的任意值。由于200kHz允许的最大相位差是2巧/5,这个角度差必须等于或小于2,r/5。如果结果大于2zr/5,加上或减去2,r,其绝对值就小于2万/5了。如果将噪声考虑进去,27r/5的门限值可以适当放宽,如用2.3万/5,这样处理后还大于门限值,就意味着两个连续毫秒数据间有相位偏移了,须从结果中减去尼。当然,得到的结果还要过加减2万,以保证最后得到的值小于门限。采用精捕获算法后测得的多普勒频率偏移得到很大提高,可以顺利进入跟踪环。3.3捕获算法编程实现本文中主要用Matlab和C++实现了捕获算法,编程思路与图3.3的思路略有变化,也就是前面提过的解扩与解调的顺序选择问题,在编程过程中,采用了同时进行,也就是先把本地载波乘以本地C/A码,然后再与输入GPS信号进行卷积操作。整体的思路如下:1g初始化初始化包括了:本地C/A码初始化,将原先1023位的采样成16367位,得到32*16367二维数组gold。初始化数字中频频率:.名=4.123968MHz。中频采样频率为:163.367667MHz。(由前端的具体参数而设置)。2:转化数据因为前端得到的采样点的存储方式为:Bit7Bit6Bit5Bit4BitsBit2BitlBitOISignllagSign弧agSignMagSign/lagI第一个采样点第二个采样点第三个采样点第四个采样点根据“00”代表+l,“01”代表+3,“10”代表.1,“11”代表一3原则将1字节转换成对应的4个采样点得到新的数据data.dat。3:读入6ms数据存放在一个数组中。4:设置多普勒频移步长af=IKHz,搜索范围为_+10KHz,总共有21种值。5:将C/A码乘以本地载波得到本地信号,将本地信号与输入GPS信号进行卷积运算,得到高峰值,并求出高峰值与旁边剩下的所有值的平均值的比值,判断是否超过预设的阀值。改变多普勒频移,循环至21种多普勒值结束。6:针对以捕获的星进行精频捕获。现分别用Matlab与C++对前端采集的数据进行捕获运算编程得,如图3.5,图3.6所示。 第三章GPS信号捕获算法与改进字节数:30008—冀,料料——蜥到的卫一星号⋯~一一■二二一鹬相莅2星:162914星:42745星:3571日星:752413星:641917星:780830屡:8976星参数载渡频率412579S4123哇日1哇1244.耋74126日3941223914121292|1124515图3.5C++计算结果‘书ChannelPRNFrequencyDopplerExactCAOffsetStatus掌露‘掌掌木幸木掌宰拳术枣木木木幸事术木宰枣木木掌采木掌木掌木木木枣木木木枣木搴掌事木年掌拳术章堆窜掌宰木事掌事木簟掌木木木牟c掌124.125796e+0061.82761le+00376P掌幸c掌244.123401e+006—5.669822e+00212093P章謇‘掌354.123534e+006-4.338817.e+00216010P幸掌‘球4104.126039e+0062.07.1368e+0038843P事木‘幸5134.122641e+006一1.326866e+0039948P掌簟‘木6174.121292e+006-2.675922e+0039359P木辜c幸7304.124516e+0065.47.7565e+0027.391P木章图3.6Matlab结果仔细将图3.5,图3.6对比可以发现(注意码相位只要相加为16367或者相同,都可以表示参数一样),有两个卫星得到的最终结果不同,5号星与13号星,不通的地方出现在载波频率,这是因为在捕获算法过程中,C++中定义的变量格式与Matlab不同,而且其实这2颗星的信号信噪比底,在后面的跟踪就没有跟踪上,也表示了虚捕获星。3.4捕获算法的改进及实验结果以上介绍了捕获算法的原理结构,但是在实际的运用中,需要综合多种情况来计划对应的方法,如FFT模块的编程,数据量的优化等,需要根据具体的实际情况来具体优化或者改动。3.4.1补零计算本文中的实验采用了北京东方联星公司的中频信号采样器NewStar210A作为GPS信号采集前端,此前端的中频采样率为16.367MHz,lms有16367个采样点,不是基于2的N次方或4的N次方,在用C++程序的时候采用了麻省理工的FFT函数DLL动态连接库,这样就可以不用考虑采样点的具体数目,因为该库可以很快的计算出任意多点的FFT结果,但是在将算法进行移植,如DSP、FPGA移植时,就要考虑FFT算法的实现问题,虽然DSP有自己的FFT核,但是前提条件是采样点的总数基于2的N次方或4的N次方,下面在matlab中对补零计算进行验证,进行补0操作,将16367个采样点加上17个O点,变成16384。根据上面捕获结果,图3.7表示了在补零前先对可见星10号星进行捕获结果(右图),和补零后的捕获结果(左图)。 第三章GPS信号捕获算法与改进图3.710号星捕获结果(补零)虽然,峰值下降(相关值与旁边值的平均值比值下降),但是最后得到了一样的参数:码相位△f=7524,载波频率f=4126039Hz对可见星依然可以明显的捕获到,但是捕获的结果码相位跟补零前的有0~17个采样点误差(基于具体的实验),如图3.8对可见星2的补零结果:图3.82号星捕获结果(补零)2号可见星的补零结果(左)与补零前(右)不一样,补零前:Ar=16291,f=4125796Hz.而补零后的结果是:△f=16308,f=4125796.可见,码相位相差了17个采样点,这是允许范围内的误差。该方法的优点是它弥补了采样点数不基于2的N次方或4的N次方这一瑕疵,这样为以后移植调用现成FFT算法库打下基础。3.4.2循环相关改进循环相关是并行捕获算法的核心和优于传统串行捕获算法的之处,循环相关改进主要是基于信号特征:24 第三章GPS信号捕获算法与改进————:=:=—————————■■:—●■:●●—■—●●————————————————————————————————————————一特征l:GPS输入信号为实数,这样在频谱上是对称的,也就是将输入信号lms数磊西行FFT变换得,可见在频谱上是完全对称的关系,如图3.9所示:频率/Hz图3.9GPS输入信号频谱分析(FFT变换)特征2:除了GPS输入信号的特点,本地信号(采用2号卫星进行示例分析)的频谱也具有一个重要的特点,可见信号的信息大部分处于前半频段内。如图3.10所示。频率/Hz图3.10本地信号频谱分析(FFT变换)有了上述的两个重要特点,现在将对整个程序进行改进: 第三章GPS信号捕获算法与改进1:对lmsGPS输入数据x(n)进行FFT运算得到对应的x(k),刀=0~16367.2:在X(k)中取前一半得X(k),k=0~8184,取复共轭,得到X(后)卑.3:在本地生成本地信号的时候,需经过21个步长,生成21组‘0)数据,每组都有16367个点。4:对一组16367采样点FFT,转换为频率中的L/(k).5:取0(后)前半段,即:zs(k),k=0-8184.然后将0(七)与x(七)·逐点相乘,得到结果R(七),k=0—8184.6:然后对R(尼),尼=0~8184进行IFFT操作,得到时域中的,.@).经过21个循环得到21×8184二维数组.7:最后进行阀值判断.最后得到的载波频率分辨是1KHz,没有改变,但是得到的码相位的分辨率变成而L×lms,现对2号卫星进行改进的循环捕获,如图3.11所示。1∞∞图3.11循环相关改进2号卫星捕获结果得到的载波频率为:f=-4125796Hz,△f=8147,将原先Ar=16291除以2得AT’=8146,可见误差在理论允许范围之内,这是由于该方法最后的码相位精度比原先方法低引起的。该方法的优点是在0(足)与x(七)幸相乘的时候,都只用了一半的数据,而且最后做IFFT运算的时候也相应的减少了一半的数据输出,这样节省了时间。为以后的算法移植打下基础。26锄姗砌姗砌伽。∞;;{弩水謇 第三章GPS信号捕获算法与改进3.4.3降采样由前面介绍可知,本文中的实验采用了北京东方联星公司的中频信号采样器NewStar210A作为GPS信号采集前端,此前端的中频采样率为16.367MHz,lms有16367个采样点,在对采样点进行FFT计算的时候,可以发现数据量过大,如果在进行算法移植的时候,16367个采样点会极大影响整个系统的运行速度,甚至出现系统瘫痪等现象。由于C/A码带宽只有2M左右,根据香农定律,只要高于4M采样即可。所以可以对16367个采样点降采样,这样就能减少数据量的大小,现在对lms数据进行8.1835MHz进行采样,也就是从第一个数据开始,中间每隔一个数据进行记录下来。把原来16367个采样点降采样为8184个新采样点,同样当GPS输入数据改变的时候,本地生成的信号也要对应降采样,就是把采样时间放大2倍。下面对2号可见星进行降采样,结果如图3.12所示。1∞∞图3.12降采样2号星捕获结果最后得到的两个参数大小分别为:f=4125796Hz,AT=8148,因为采样频率的下降直接导致码相位精度下降,变成甭≥×1嬲,将原先△r=16291除以2得mz"--8146,可见误差为而4×1聊。在误差范围之内。此方法的优点并不是在于将数据量大大减少,提高了计算速度,更重要的影响在于为以后前端A/D转换器的采样频率打下了基础,同时为软件接收机的后序数据处理提供了改变采样点的方法。3.5小结本章首先从GPS信号机制出发说明了信号捕获过程的作用,主要为了得到参数(f,厶)粗略值。介绍了实验前端东方联星公司的中频信号采样器NewStar210A的数据存储格式,同时从数学理论详细推导了整个捕获模型,以及精细频率的过程,为以后的算法实现与改进打27 第三荤GPS信号捕获算法与改进下基础。分别用Matlab与C++实现了并行捕获算法,阐述了算法编程实现的框架以及注意点,并将两者结果进行了对比。最后详细说明了捕获算法的改进,包括补零计算与循环相关改进,这些改进方法都是从算法移植的角度进行考虑,补零计算弥补了采样点数不基于2N的缺点,虽然在得到的载波频率依然没有改变,但是码相位出现0—17个采样点的误差。同样,循环相关改进减少了相关过程中的数据量,提高了运行速度,得到相同的载波频率参数,但是码相位的精度有所下降,变为熹×lms,是原先的2倍。最后根据时域采样定理(香农采样10j0,一、定理),通过降采样来改变前端的采样率,大大减少处理数据量,得到的分辨率为÷xlm$。16367同时用实际数据进行了系统的仿真实验。该章节为以后的跟踪与算法移植从理论上和实际算法编程实现打下了良好基础。 第四章GPS信号跟踪算法研究4.1GPS信号跟踪本文实验中主要采用了东方联星公司的采样前端,通过前端的采样和滤波之后,得到的信号可以表示如下:S:CD(tt—f)z(f,一r)cos[2n'(flF+厶)‘+硼】‘=曝,,=O,1,2,3⋯(4—1)GPS信号捕获提供码相位与载波频率即参数(n.厶)粗略值,GPS信号跟踪的目的是为了得到更精确地得到这些参数,继续跟踪可见星并解调出导航电文。跟踪信号的基本方法是根据具体的输入信号构造一个窄带滤波器,当输入信号的频率随时间变化时,滤波器的中心频率必须跟随信号而对应的变化,这样才能动态的得到具体的参数来剥离载波与随机码得到最后的导航电文。在实际的跟踪过程中,窄带滤波器的中心频率是固定的,但是本地信号要随着输入信号频率的变化而变化。通过鉴相器对输入信号与本地信号的相位进行比较,鉴相器的输出结果连接到一个窄波滤波器。由于跟踪电路的宽带很窄,与捕获方法相比,灵敏度相对要高。跟踪一个GPS信号一般需要两个跟踪环,一个环是用来载波频率,称为载波环;另一个用来跟踪C/A码,称为码环。分别用锁相环(PLL)和延迟锁定环(DLL)来完成。DLL使码相位的初始相位更加精确,并跟踪未来的变化。为此,DLL生成了卫星发射的PRN码的复制码,并使它和接收码对准。PLL作为载波跟踪环,不但保持本地信号频率与载波频率一致,而且同时也对载波相位进行估计。为此它必须调整复制信号的频率和相位,使之与输入信号的载波相位一致。同样,FLL是为了使多普勒频率的初始值更加精确,并跟踪未来的变化,一般用于高动态。4.1.1线性模型在对GPS信号跟踪进行分析的时候,首先要基于数学模型的理论推导,现将DLL、PLL、FLL抽象成一个控制模型,如图4.1所示:@(s)+岛(s)l嚣PGc(s)l控制对象q(s)2'(s)———◆@O)图4.1控制器模型其中,丁(s)=三p(,)>,O(J)=三{臼(f)},岛(J)=L{s。(,)),E-e(s)=三(岛O))。Z(s)为码延迟29 ——..翌婴量鱼!!笪量望壁簦鎏塑窒r(,)的拉普拉斯变换,o(s)为载波相位的变换,ET(J)和se(s)分别为码延迟和载波相位测量相关的噪声项。如PLL中,复制码的相位就是6(s)。它检测复制码的相位与接收机信号相位之差△(J)。产生控制量U(s),传给NCO来减小该误差。由经典控制理论【28】可知:器胡∽=揣㈣,丁(s)一l+Gc(s)GP(s)r纠等。日(J)为该DLL的闭环转换函数,同样也可以得到△(s)的转换函数:△(J)=丁(s)一争(s)叫烈l一静件3’筹卅川s)1(4-4)1+Gc(s)q(s)这样,通过式(4-2),式(4-4)能够从控制理论去分析跟踪环路,如阻尼系数、带宽的选择4.2锁相环(PLL)锁相环的目的是为了调整本地振荡器的频率使之与输入信号频率相匹配,表面上违背了PLL的初衷,PLL理论上是用调整载波相位的,但是在实际中PLL还要调整载波频率,下面将一一分析。4.2.1PLL系统模型图4.2时域系统结构 图4.3S域系统结构图4.2是锁相环的时域结构,而图4.3则是对应的频域结构。输入信号是BO),压控振荡器(VCO)输出为巳(f)。∑充当了鉴相器的功能,鉴相器的增益放大为‰,低通滤波器为了限制噪声。VCO时域上模型,输入电压%(f)控制输出频率口7】:Wo斫(f)=wo+岛“(,)1lD(4.5)式中,wo是VCO中心频率,白为VCO增益,甜(f)是单位阶跃函数㈣={≥歹菇㈤,对式(4.5)两边积分得到fWo=(t),dt=wot+Oy(D2嵋,+f毛“(f)%西(4.7)oat)。j:毛“(t)vodtp,(,)拉普拉斯变换为’够(加№)争(4-8)由式(4.8)得到VCO的频域模型鱼。根据经典控制理论可得耶)=鬻=雨kokiF丽(s)(4-9)、7包(s)J+‰岛F(J)r叫误差转移函数为红‘s’=1一㈣2丽S(4—10)S+‰尼,IS}’在本文中,采用二阶锁相环,锁相环的阶数主要由滤波器决定的,现取滤波器为 第四章GPS信号跟踪算法研究,(s):三出qs将式(4.11)代入式(4.9),转移函数变为(4-11)‰墨r:S.‰局耶)2刀T匝1面T1暑器㈣⋯4也一固有频率%=浮一咣=等。腻可燃域的结构图细化如图4.4。图4.4频域系统结构现输入单位阶跃函数q(J)=三与调频信号包(s):掣得最后的稳态误差都是0,这意味着二阶环路能跟踪调频信号,使鉴相器特征值回到零。频域讨论完了后,下面介绍怎么将该模型应用到具体的实际当中,在实际中,信号并非是连续信号,一般都是经过采样得到的离散信号,这样,整个系统必须向离散系统转换。大部分参考书通过双线性变换,使连续的S域模型转换为离散的z域模型一,1一一lJ=睾}与,T为采样间隔时间(4.13)』1_r彳现在先直接从结构图4.4将s域模型转换为离散的Z域模型如图4.5,乙肿l=A0.+l+I/啪l图4.5离散系统结构将图4.4与图4.5相比可以知道,只是将积分器三用离散积分器替代了。S32 将图4.5与4.6比较并假设图4.6离散线性简化系统心)=坠咎华F(z)具体机构如下图4.4所示:№)=筹将式(4.13)代入式(4.12)得q(z)=图4.7环路滤波器—(4考w.T+(wriT—)2)+2(w.T)2z-1+((嵋丁)2—4考%丁)z。2(4+4考%丁+(%丁)2)+(2(嵋r)2-8)z一1+(4—4善记丁l而≯甲沪(4-14)(4-15)(4-16)由图4.6得日0):鱼丝巡塑:堑坠鳋±刍!兰:l二鱼鱼刍兰(4·17)I+(KoKd(C;+C2)一2)z-1+(1一KoK.G)z-2将式(4.16)与(4—17)对比可得Cl:_L.堕堡三:1K局4+4考%丁+(%丁)2(4-18) 第四章GPS信号跟踪算法研究C2=面1石萌4(w丽.T)2(t44-l9)L,一一———————————————————=Il',-2K髟4+4考%丁+(%丁)2V~7式(4-18)与式(4—19)是关键公式,为编程实现的时候提供了参数修改理论依据。式中,%局为环路增益,考是阻尼比,%是自然频率。关于参数选择下面将分析。4.2.2等效噪声宽度(NoiseEquivalentBandwidth)由帕塞瓦尔定理得f27】气Ⅳ=2f只lX(f)[2df(4-20)式(4-20)该结果对所有实xO)都成立,IX(f)f2称为能量谱密度。由4.2.1节可知,PLL可以模拟成一个线性系统,则】,(厂)=日(/)X(厂)(4—21)将式(4.21)两边平方可得sr(f(厂)2)爿=X(f))2H(fI:&(/)(4-22)S(厂)爿)12&(/)、’S(厂)为输出信号的频谱密度,同样&(厂)为输入信号频谱密度。图4.8等效噪声宽带PLL的一个重要特种就是噪声等效宽带,如图4.8所示,噪声等效宽带为boxcar滤波器的宽带,该滤波器与研究中的滤波器可以让等量的噪声通过。通常,噪声等价带宽为%=丌未衙JcoIH(j2石力12矽将公式(4.23)应用到公式(4.12)得噪声等效带宽为%=瓮产%=等(4.23)(4.24) 一一.釜婴童鱼堕笪呈墨壁簦鎏塑窒一..——————————————————————————-—————————————————————一————这样,就可以通过选择等效噪声带宽%与阻尼比考来确定心,再根据(4-18),(4_19)可以确定cl与C2。4.2.3PLL鉴相器鉴相器在整个跟踪环路中是最难设计的一部分,它主要起到了对应误差的对比输出,由3.1.5节可知输入信号经过本地载波、本地C/A码相关之后得S=sL+jsQ=√尼Dexp(/△D)R(△f,尘呢)】{(觇晚):导壹xG—f弦(卜;)exp(j2rgAfn6)‘4彩)1t.≈{Ixo—f)x(f一7r)exp(j2rcAfDt)dt上6其中,复数相关值的实部来自于同相相关器,虚部来自于正交相关器,在f=玎£时相关器的输出记为乞。=季。+面。=sln+jsQ一4-771∞+jHQl,lZ,.。=Re{Z~。}=slm七ql雕乙,,,=Im{Z~。)=&,。+%一同样,超前相关结果为ZE2SE+r/g(4.26)蓉E=厄cDexp(jAO)R(A,-Tc/2,too)滞后相关结果为Z工=SL+77工(4.27)i工=√_Dexp(_『△8)j{(△f+毛/2,aft)鉴相器是为了能突显待估参数,又能同时抑制其他未知参数的影响。PLL鉴相器必须对载波相位误差△9非常敏感,但对其他未知参数如数据位D不敏感。这样,可以选择如式(4-29)签相器。35 第四章GPS信号跟踪算法研究Zo=Re{Ze}Im{Ze}=zl,Pzo,P=s∽sQP七写e:足R2(缸)sin,2。A0.+7。"/e(4.28)蚴-(△拶=△r删+面a艺'ofA8=0l△p+面日=ecA0+再8但是,在实际编程过程中,采用了著名的Costas环路,其中采用的PLL鉴相器为Z~:姆(4.29)0=————=,一k斗一Re{Ze}因为当码相位对齐的时候,I路出来的信号简单表示为D。(疗)c。s(嵋甩)c。s(w门+妒)=12D。(刀)c。s(9)+三2D。(疗)c。s(2嵋,妒)(4-30)其中cp为输入信号与本地信号的相位差,同样在O路乘积得到的信号可以简单表示为Dk(刀)c。s(嵋刀)sin(彬刀+缈)=三D。(,z)sin(妒)+三D七(,z)sin(2w,mp)(4—31)当这两路信号经过积分和累加器(等效于低通滤波器),滤除近似2嵋的第二项信号,得到Ik=12D‘(胛)c。s(9)(4-32)Qkz1D。(,z)s嘶)(4-33)将式(4.33)与式(4.32)相比可得—QFk:—D石k了(n工)—s—in=(iqo):tan(缈)(4.34)一=一=fD-L‘●-12D。@)cos(9)~则△p:taIl一-(旦掣),对数据位的翻转D不敏感。、Re{Z/,}。4.2.4PLL编程实现在用Matlab或者C++编程实现的时候,难点主要有两个:1.参数c1与c2的确定,在编程过程中,前30ms数据选择考=0.900,%=150,30ms愀_择考=0.700,%=15,这样做的目的是为了一开始能在比较大的带宽下跟踪上对应目标卫星,然后再缩小跟踪带宽,使精度变高。但是由公式(4.18)与公式(4.19)可知,为了能确定Cl与C2,还需要解决系数万二丁的大小,这也是靠具体实验来确定。上、^上、J 第四章GPS信号跟踪算法研究2.反馈方法,从PLL鉴相器得到载波相位误差后,怎么去反馈到本地载波发生器中,这是比较困难的一点,理论上得到的相位误差应该直接反馈到载波相位上,但实际编程的时候,先是通过得到的相位误差去反馈到载波频率,然后再通过载波频率去修改下一个毫秒的相位。它正是用了频率跟相位的关系,相位的导数是频率,频率的积分是相位。这样,只要1用一个比例系数将相位误差映射(求导的过程)成频率误差(系数去选择也需考虑这五0Kd点)。一4.3延迟锁定环(DLL)DLL为延迟锁定环,如图4.9t18】所示,在信号跟踪中采用DLL的目的是为了消除超前相关器与滞后相关器的差距,也就是使当前的码相位估计值与实际值对齐。输4.3.1DLL鉴相器的选择图4.9DLL结构图DLL鉴相器必须对码延迟误差△f非常敏感,但对未知的载波相位和数据位不敏感。这样,可以选择如式(4.30)非相干鉴相器。Z~,=附一时=I§£12一l§工12+石,=尼尺2(△f一毛/2)一尼R2(△f+疋/2)+石,⋯珐哆磐乱,惭t(4-35):o+孕△f+面,Zf=Zt轰她付仉同样在实际中,采用了的具体鉴相器为 第四章GPS信号跟踪算法研究。=盥(1;坦2糍122)(4.36)式(4—31)中丘为,路的当前路;绕为Q路的当前;五为,路的滞后路;骁为Q路的滞后路。当然还有其他的鉴相器选择,在这里不细分析。4.3.2DLL编程实现DLL编程实现是三个环路中最容易,也是最能好理解的环路,本文中主要将得到的码相位误差与一个预设好的阀值k进行比较(k的选择基于反复实验的验证),如果当DLL输出的码相位值△r>k或者AT<一k时,就相应地调整本地C/A码的位置。4.4锁频环(FLL)锁频环(FLL)为通过复现近似的频率以完成载波剥离过程,如图4.10t181,该结构同时可以使用于FLL与PLL,两者的区别就是载波环鉴别器的选择不同。所以两者可以统称为载波跟踪环(CTL)。图4.10载波跟踪环路由公式(3—5)至式(3.8)得I路的本地载波:cos[27r(f.,+厂D)‘+9】Q路的本地载波:sin[2zc(fzF+厂D)‘+D】通过低通滤波器后(积分),I、Q两路得到的信号:0PcD(;l—Ox(t,-t)cos(27rAf06+ao)4P。D(t,一f)x(‘一1:)sin(2m~fDtt+△8)妮=fo-fDA0=S0-0也就是锁频环使参数虢=fo一厶接近于零,典型情况下,允许输入载波信号相位的翻转。因此有时候锁频环也称为自动频率控制环(ACF),但是为了使GPS接收机锁频环对I和Q信号中的1800翻转不敏感,I和Q信号的采样时间不应该跨越数据比特的翻转,但是,在初始信号捕获的时候,接收机并不明确具体的数据跳变边界在哪里,在完成比特同步的同3R 第四章GPS信号跟踪算法研究时,一般保持频率锁定比相位锁定更容易,这是因为,锁频环鉴相器对某些I和Q信号确实跨越了数据比特跳变并不那么敏感。当预测积分时间较小时,受影响的积分区域就会很少。4.4.1FLL鉴相器同样FLL鉴相器的选择,类似与前面PLL鉴相器、DLL鉴相器。要对参数载波频率,而对其余的参数不敏感。同样在FLL鉴相器选择的时候,也有几种选择,在本文试验中,按需要选择的鉴相器如式%:竺::一!岛一‘(4—37)其中,足.1,Q,。表示‘时刻的采样,同样‘’2,绕,:表示稍后时刻如的采样,这两者相邻的采样应该在同一个数据比特时间区内。在码相位对准的时候,假设‘时刻的相位为魄,乞时刻的相位为仍,则式(4—36)可以表.,o—at—l7Vcos娩)sin(铣)一Cos(仍)sin(饵)、!%=—塑业器型业业(4铆38)厶一厶(.):丝二亟再结合式(3—8),这样就能得到参数%。只要相邻的I和Q采样是在同一个数据比特时间内完成的,那么在GPS接收机中,锁频环鉴相器便不会因数据跳变而引起频率模糊度。但是在高动态环境中,锁频环可能会锁定在错误的频率上,因此对于最初的锁频环闭合很短的预测检测积分时间是很重要的。4.4.2FLL编程实现在编程实现FLL鉴相器的时候,根据(4.37)来具体实现,其中主要注意的地方1.‘时刻对应数据厶’l,绕'l,f2时刻对应数据丘.2,Q。:。2.还有就是预检测积分时间的选择,由上面讨论可以知道,预检测积分时间尽量不要出现数据位跳转的时刻,同时应该较小,在本文实验中,选取,’一‘=lms。3.通过鉴相器得到的载波频率误差滤波器的选择,可以参考PLL中的滤波器,因为PLL,DLL.FLL三个环路的理论控制系统是一样的。4.4.2FLL与PLL结合由前面讨论可知,FLL与PLL都是载波跟踪,只是各自鉴相器目标参数不同,一个是载波频率,另一个则是载波相位,两者的联系非常紧密,就像载波频率与载波相位的关系一样39 第四章GPS信号跟踪算法研究密切,从某个角度可以认为两个环路是性质一样的两个环路。在锁频环(FLL)中,两个相邻时刻‘,如时刻的,,Q组成的矢量差直接正比于频率误差的速率旋转,当实际达到真正的实际频率锁定之后,该矢量停止旋转,但是可能停止在与,轴成任意角的地方。因此对锁频环不可能实现相干的码跟踪,因为其依赖于相位锁定。在相同的噪声宽带和C/Ⅳ0下,FLL比PLL动态应力性能要好的多。例如在噪声宽带为10Hz,C/No为dB.Hz下,FLL能够适应高达2409/s的加加速度,而PLL只能适应49/s[17】。所以在可靠GPS设计的时候,在环路初始闭合期间和在高动态应力期间失去相位锁定的时候,用FLL做PLL的备份129J,当低至中等动态的稳态期间则返回纯PLL,以产生最高精度的载波多普勒频移相位测量。而其FLL鉴相器要求在一个数据跳变间隔内有两个采样点,所以FLL最大的预检测积分时间不超过10ms。也就是说一般FLL其实是充当了辅助作用【30】,如图4.11【31J所示,1阶FLL辅助2阶PLL方案(滤波器部分)。△a(图4.11一阶FLL辅助二阶PLL如果PLL的误差变为O,那么图中的滤波器就变成纯FLL,相反,如果将FLL的误差输入置为0,则滤波器就变成了纯PLL,当FLL辅助的PLL,一开始对两个鉴相器的误差输入信号同时加以应用,一直到获得相位锁定之后,再转为纯PLL,一直到下一次相位锁定丢失。4.5实验结果分析本节主要对跟踪环路进行了对比实验分析。4.5.1纯PLL跟踪卫星结果对17可见星跟踪结果(跟踪上),如图4.12为I路当前输出,图4.13为Q路输出 时间/ms图4.12I路输出图4.13Q路输出4.5.2等效噪声带宽、阻尼比对跟踪结果影响1.在整个过程中设置毒=o.900,%=150不变,对17号可见星跟踪得到载波频率误差如图4.14所示。41 图4.14载波频率误差2.在整个过程中设置毒=o.700,%=5不变,对17号可见星跟踪得到载波频率误差如图4.15所示。图4.15载波频率误差其实已经失锁,说明过小的带宽将导致最后无法跟踪上目标卫星。3·设置前30ms数据选择考=o.900,%=150,30ms以后设置考=o.700,%=15,对17号可见星跟踪得到载波频率误差如图4.16所示。42 将图4.16与图4.14对比可得,小的等效噪声带宽会使噪声能量变小,得到明显精度更高的载波频率估计值。但是过小的等效噪声带宽会直接导致失锁,如图4.15所示,所以等效噪声带宽与最后的持续跟踪需要权衡的。4.5.3FLL辅助PLL跟踪实验分析1·先用纯PLL(前30ms善=o.900,%=150,30ms以后设置毒=o.700,%-15)跟踪,得到参数载波频率误差如图4.17所示。图4.17载波频率误差同样得到的载波相位误差如图4.18所示:43 第四章GPS信号跟踪算法研究时间/ms图4.18载波相位误差2.FLL+PLL(1),其中前30msFLL单独工作,30ms后PLL单独工作,得到的参数载波频率误差如图4.19所示。时间/Hz图4.19载波频率误差同样得到的载波相位误差,如图4.20所示。NH,辎曾}褂爨鲻赫 第四章GPS信号跟踪算法研究———————————————————————————————————————————————————————————————————————一一图4.20载波相位误差3.FLL+PLL(2),其中前30ms同时利用FLL和PLL的信息,也就是FLL与PLL同时工作,后30msPLL单独工作得到的参数载波频率误差如图4.2l所示。时间/ms图4.21载波频率误差同样得到的载波相位误差如图4.22所示。45NH,荆喽槲爨鲻旃 第四章GPS信号跟踪算法研究型暮榭嗤趔罂鲻镉图4.22载波相位误差FLL+PLL实验结论:通过纯PLL工作(前30ms毒=0.900,吃=150,30ms以后设置专=O.700,吃=15)、FLL+PLL(前30msFLL单独工作,30ms后PLL单独工作)、FLL+PLL(前30msFLL与PLL同时工作,后30msPLL单独工作)3中情况,可得到结论是1.在本实验数据中,PLL控制的精度比FLL高,纯PLL通过得到的相位差反馈载波频率最后得到的精度比较高。2.在本实验中,前30msFLL的功能等效于前30ms的(考=0.900,既=150)PLL,帮助后面窄带宽的PLL找到载波频率。因为如果直接上来用精细的PLL来跟踪,有可能导致完全失锁,如图4.15所示3.纯FLL一般不能用来全程的跟踪,因为FLL最后还要依赖于相位稳定(锁相位)4.6小结本章主要详细阐述了GPS信号跟踪环的结构,推导了锁相环PLL、延迟锁定环DLL、锁频环FLL的理论模型及各自鉴相器的选择理论依据。根据整个理论体系,分析了对应编程实现的难点和注意点,最后用具体的实验分析了跟踪环的跟踪结果、等效噪声带宽、阻尼比对跟踪环的影响、FLL辅助PLL跟踪。在整个章节中,强调突出了本文中跟踪环出现的疑点与难点。1.跟踪环整体的架构。由第三章内容,可以知道在跟踪环中,主要是处理(f,厶,甜)三个参数,这样也许对应的会想到分别用三个环路去单独控制这三个参数,但在具体编程实践的过程中,主要用PLL和DLL去完成跟踪环(高动态另行考虑),其中的原因在4.5节中已经分析。2.PLL的反馈问题,在PLL鉴相器得到载波相位误差后,应该怎么去反馈的问题,理论上应该用载波相位误差去修改本地信号发生器的载波相位,使载波相位误差越来越趋近于零,但在实际编程中并没有去反馈载波相位,真正反馈的是载波频率,利用了载波频率与载波相 第四章GPS信号跟踪算法研究位的关系,相位的求导即频率,频率的积分即相位。这样得到的精确度更高。——3.FLL辅助PLL目的。明确FLL辅助PLL的目的是非常重要的,在本文中,主要是用FLL来辅助PLL找到载波频率,这样为以后的精度相对高的PLL(等效噪声带宽低)提供了基础,防止失锁。最后本章同样细解了各鉴相器选择的思路,为以后的问题思考方式打下了良好的基础。47 第五章捕获算法的FPGA仿真实现GPS软件接收机已经被提出十余年之久,目前标准的GPS接收机主要基于ASIC和快速的微型处理器。ASIC优点主要在于它的高效率,但是灵活性不强不易重构,修改或改进算法将会非常耗资源。GPS软件接收机刚好弥补了这一缺点,它具有易重构、适应性强等优点。目前对软件接收机的算法基本都是基于PC机在进行研究,对算法的芯片移植,工程化研究甚少。在以FPGA为核心器件设计信号处理系统时,使用XILINUXSystemGeneratorforDSP可以减小FPGA开发的难度,对工程师的硬件知识要求下降,它主要用于建立数字信号处理系统的抽象算法,并将抽象的算法转化成可靠的硬件实现。这样为复杂算法的FPGA开发提供了良好的平台。本文利用该软件进行了相应的仿真开发。5.1FPGA开发平台FPGA是1985年美国Xilinx公司推出的一种采用单元型结构的新型PLD器件。Xilinx把基于查找表(LookUpTable,LUT)技术、SRAM工艺、要外挂配置用的EEPROM的PLD称为FPGAtl01。查找表(LookUpTable)简称LUT,LUT本质上就是一个RAM。目前XilinxFPGA中多采用4输入的LUT结构,所以每一个LUT可以看成一个有4为地址的16×1的RAM。当用户通过原理图或者HDL语言描述一个逻辑电路后,PLD/FPGA开发软件会自动计算逻辑电路的所有可能结果,并把结果事先写入RAM中。这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出结果即可【321。表5.1是一个4输入与门的例子。表5.1四输入与门逻辑电路的uJT实现实际逻辑电路LuT实现方式地址线a广——’a■b,,卜outbL16xl蝴.塑当◆CL(Ltrr).c[二:}—一d◆d[=:,—一a,b,c,d输入逻辑输出地址RAM中存储的内容000000000000010Oool0Olllllllll1XilinxFPGA器件是基于LUT结构设计的可编程逻辑芯片。简化的FPGA基本由6部分组成:可编程输入/输出单元、基本可编程逻辑单元、嵌入式块RAM、丰富的布线资源、底层嵌入功能单元和内嵌专用硬核【321。1.可编程输入/输出单元输入/输出简称I/O单元,FPGA的I/O单元被设计为可编程模式,即通过软件的灵活设置,可以匹配不同的电气标准与I/O物理特性,可以调整匹配阻抗特性、上下拉电阻、可以调整输出驱动电流大小。 第五章捕获算法的FPGA仿真实现2.基本可编程逻辑单元基本可编程逻辑单元是可编程逻辑的主体,可以根据设计灵活地改变其内部的连接与配置,完成不通的逻辑功能。FPGA一般基于SRAM工艺,其基本可编程单元通常是由查表法(LUT)和寄存器(Register)组成的。Xilinx可编程逻辑单元叫做Slice,由上下两部分构成,每个部分都由一个Register加一个LUT组成。3.嵌入式块RAM目前大多数FPGA都有内嵌的块RAM(BlockR/kM)。FPGA内部嵌入可编程RAM模块,大大地拓展了FPGA的应用范围和使用灵活性。一般可以灵活的配置为单口RAM、双口RAM、FIFO等常用存储器结构。4.丰富的布线资源布线资源连通FPGA内部所有单元,连线的长度和工艺决定着信号在连线上的驱动能力和传输速度。设计者通常不需要直接选择布线资源,实现过程中一般是由布局布线器自动根据输入的逻辑网表的拓扑结构和约束条件选择可用的布线资源连通所用的底层单元模块,所以设计者通常忽略布线资源。5.底层嵌入功能单元主要的功能模块为那些通用程度较高的嵌入式功能模块。比如PLL、DLL、DSP和CPU等。越来越多的高端FPGA产品将包含DSP或CPU等软处理核,从而FPGA将由传统的硬件设计手段逐步过渡到系统级设计工具。如本文试验中用的Virtex.IIPro开发板内部集成了PowerPC450的CPUCore。这些CPU或者DSP处理模块的硬件主要由一些加、乘、快速进位链、Pipelining和Mux等结构组成,加上用逻辑资源和块RAM实现的软核部分就组成了功能强大的软计算中心。这种CPU或DSP比较适合实现FIR滤波器、编码解码和FFT(快速傅立叶变换)等运算。6.内嵌专用硬核内嵌专用硬核是相对于前面的“底层嵌入单元”而言的,它主要指那些通用性相对较差,不为大多数FPGA器件所包含的硬核(HardCore)。FPGA主要有两类,一方面是通用性较强的,价格适中的。另一方面则是针对性较强的,价格比较昂贵的。如为了提高FPGA性能,适用高速通信总线与接口标准,很多高端FPGA集成了SERDES(串并收发器)等专用HardCore。本文主要采用Virtex2pxc2vp30.7ff896芯片的开发板,如图5.1所示。∞m柚嘴●●哪‘口q●●嘎坤妯删Ue口●翻nW‘t撕坩I珥■■■嘲●‘图5.1XUPVirtex-IIPro开发板49隰蓬卷一潲舞一赢蓬蝼麟童 第五章捕获算法的FPGA仿真实现XUPVirtex.IIPro开发板具有非常出色的硬件平台,它具有丰富的外围设备,这样就能很好地体现出Virtex.IIProFPGA芯片的性能优越性。该系列开发板资源如表5.2所示表5.2Virtex.IIPro开发板资源资源名称XC2VP30(型号)Slices13969ArraySize80×46DistributeRAM428KbMultiplierBlocks136BlockR挑2448KbDCMs(数字时钟管理器)8PowerPClUSCCores2Multi-GigabitTransceivers85.2基于SystemGenerator的FPGA开发SystemGenerator是一款理想的FPGA开发软件,它通过建立数学信号处理系统的系统构架,并将抽象算法转化成可靠的硬件实现,是数字信号处理高层系统设计与XilinxFPGA实现的“桥梁”。它在MATLAB/Simulink的环境下完成算法的建模,然后生成相应的工程。这样可以弥补对VHDL或者Verilog语言不熟悉的弱点,在SystemGenerator生成工程后,后序的开发与HDL语言开发基本一样,ISE可对工程进行仿真、综合、最后完成算法的硬件化,当然也可以直接由SystemGenerator直接生成位流文件,并下载到FPGAt"J。5.2.1FPGA开发优点随着FPGA的市场推广,研究人员技术的提高,从性能上面,FPGA可以完全替代当今市场流行的DSP、ARM等处理器,采用FPGA开发的主要优点有以下几点:1.并行性传统的数字信号处理系统大多用DSP处理器完成,这是由于DSP处理器有较高的主频以及专用的乘法、加法计算模块等资源,也是相当于一个小型的CPU。但是DSP处理在运行的时候是按指令顺序执行的,且数据位宽也是固定的,因而资源的利用率不高,限制了处理器的数据吞吐量,而且对信号频率也有限制,不可能来处理高于DSP本事系统频率的信号。其实DSP就相当于小型的单核奔腾CPU。但是,用FPGA在处理数据时候是并行方式执行的,当然,这根据你具体的配置来完成的,也可以配置成跟DSP一样的流水线操作,如果在并行处理数据的时候,相对于前面的流水线式大大提高了数据吞吐量。类似于多CPU处理。2.灵活性灵活性是FPGA的一个重大特点,这也类似于软件接收机区别与硬件接收机一样,灵活性来自于FPGA比较底层,因为在编程的时候直接接触到底层的资源分配与配置问题,而传统的DSP、ARM芯片一般基于高级语言C开发,越高级的语言虽带来了方便,但是在灵活性方面就逊色于FPGA,如FPGA可以改变具体数据的位宽,这样不仅节省资源而且提高运行速度,但是在传统的芯片开发,就不可以随意更改数据位宽。 第五章捕获算法的FPGA仿真实现5.2.2SystemGenerator开发SystemGenerator开发环境是基于Matlab中的Simulink平台,Simulink提供了一个可以创建和仿真动态系统的可视化的环境,在此环境下可以很方便地进行系统级的设计。而SystemGenerator作为一个工具箱包含在Simulink中,包括了XILlNXBlockset、XILINXReferenceBlockset和XILINXXtremeDSPKit三个库,由XILINX公司和MathWorks公司合作开发。使用SystemGenerator可以很方便的在Simulink中搭建系统模型并仿真,而且根据设计模型生成对应的ISE工程及可下载到FPGA的位流文件。如图5.2所示,说明了SystemGenerator整个系统开发过程【121。系统算法及模型工SimulinkMDL文件上自动代码生成I上RTL代码及IP核testbenehL.J上Xilinx执行流程(ise)仿真(modelsim)上Bit文件上下载到FPGA5.2.3SystemGenerator模块介绍图5.2SystemGenerator开发过程XILINXBlockset、XILINXRefefenceBlockset和XILINXXtremeDSPKit三个库中包含了许多模块,这些模块就是XILINX模块。SystemGenerator能够基于设计人员用HDL语言开发的功能模块和XILINXSmart.IP核完成数字系统的FPGA实现。这也许多对HDL语言不熟悉的开发着采用SystemGenerator软件的原因,利用现成的模块去搭建自己的数学算法。但是重要的一点是只有XILINX模块才会被在FPGA硬件中实现,也就是任何其他模块,如Simulink中本事自带的模块不可以被翻译成最后的Bit文件(位流文件)。在本文实验中,主要设计的模块有SystemGenerator、Gateway模块、FFT模块、虚数乘法模块(编程实现)、数据源模块(非XILlNX模块)。一.SystemGenerator模块5l 第五章捕获算法的FPGA仿真实现图5.3SystemGenerator模块如图5.3所示,SystemGenerator模块是一个最基本的模块,该模块主要的重点参数设置包括了一下几点:1.Compilation:设定编译类型,设置最后代码生成器的生成结果。2.Part:选择所使用的目标FPGA芯片类型。3.Hardwaredescriptionlanguage:设定设计编译时生成的硬件描述语言,可以选择VHDL或者VerilogHDL。4.FPGAclockperiod:以11s为单位设置硬件的时钟周期。5.Clockpinlocation:定义硬件时钟的管脚位置。6.Simulinksystemperiod:以秒为单位定义Simulink仿真系统周期。二.Gateway模块恒]GatewayIn,[j丑GatewayOut图5.4Gateway模块如图5.4所示,Gateway模块用来作为XILINX与非XINLIX模块的接口,使XILINX可以很方便的在Simulink中方便的完成仿真,Gateway模块有输入和输出两种,该模块的主要参数有1.Numberofbits:定点数的位数。2.Binarypoim:小数点的位置。3.overflow:当数据超出定义的数据范围后,溢出后的操作。4.quantization:当数据小于定义的范围后,即量化操作.5.samplepedod:设定特定的采样率对数据流进行进行处理,通常每个模块按照采样率对输入信号进行采样并按照采样率输出。三.FFT模块52 第五章捕获算法的FPGA仿真实现图5.5FFT模块如图5.5所示,FFT模块是本文实验中最重要的模块,也是最难设置的模块,该模块可以完成不同的模块功能(基于不同的设置),如FFT,IFFT。该模块的主要设置参数有输入端:1.xnre:输入数据流的实数部分。2.xrlim:输入数据流的虚数部分。3.strart:一组数据输入开始标记。当检测到一组输入数据中出现脉冲信号或某个一直为高的信号,则认为出现start信号。该信号必须是布尔型。4.fwd:如果为0,则是离散傅立叶反变换,如果是1,则是离散傅立叶变换。信号fwd必须是布尔型。5.fwd—we:当该信号有效时,读入fwd端口信号,决定下一帧输入数据的处理方式,该信号必须是布尔型。输出端:1.xkre:输出数据流的实数部分。2.】【kim:输出数据流的虚数部分。3.rout:标志着输出的数据是否有效,也就是输出的数据是否为处理好的数据。该信号为布尔型。四.虚数乘法模块(编程实现非XILINX自带)图5.6虚数乘法模块如图5.6所示,该虚数模块是运用XILINX提供的基本模块编写的,顺利地完成了虚数的乘法模块。五.数据源模块134](Simulink) 第五章捕获算法的FPGA仿真实现图5.7数据源模块(Simulink)如图5.7所示,数据源模块是Simulink中的模块,不属于XILINX模块,所以不能被编译成位流文件,但是在仿真的时候,可以充当了信号源的作用,而且这个模块的数据来源是一个当前工作环境下的一个具体变量,这样输入信号可以通过具体的M文件生成。为仿真系统提供了一个良好的接口。5.3实验测试在对SystemGenerator里面的模块分析之后,需要进行必要的测试与分析,下面主要对FFT模块、最后的捕获算法进行仿真实现。5.3.1FFT模块测试实验一:.第一个实验采用了Simulink中的正弦函数发生器作为信号发生源,然后采用了如图5.8的系统搭建编程。具体的参数设置的难点就是采样时间的设置。首先,将SystemGenerator模块里面的FPGAclockperiod设置为10ns,Simulinksystemperiod时间设为击s(这是由于FFT模块选择的是256点的采样点,也就是FFT模块设置了Z)o1主要采集到256个点就进行FFT计算一次,所以时间周期需是-击的倍数),这个参数是最难Z)O1设置的(后面M文件导入数据更复杂),这样对应的所有仿真采样时间都变为击s。蕈圈图5.8FFT测试系统1在运行的时候,将运行时间设为5s(主要考虑到FFT模块的延迟问题,放宽时间),最后通过WaveScope观测信号所得结果如图5.9所示。罟 第五章捕获算法的FPGA仿真实现图5.9FFT测试系统1结果可以发现这次运算5s时间内,FFT模块计算了3次256点的FFT计算,而且很明显看出xkre实部输出的延迟,也就是FFT模块的延迟时间。很遗憾的一点,就是结果并不是像Matlab仿真一样可以看出信号的频率分布,因为没有具体的坐标来区分。这也说明了SystemGenerator是个为硬件服务的软件,它只管信号的处理,但是对于信号的物理量并不关心,而且经过FFT运算出来的信号幅值是经过一个比例系数的(这个参数需自己去测量)放大或缩小的,下面的问题是怎么样把该模块用于实际的数字信号处理中。实验二:第二个实验是将数据通过Simulink中的FromWorkspace数据源模块导入进去,现在没有发现具体的参考书对此做过解析,本文实验参数设置是通过具体的例程总结出来。图5.10FFT测试实验系统2如图5.10为FFT测试实验系统2的结构图,通过图5.8与图5.10,可以看出实验二与实验一的明显区别就是数据源的不同,实验二的数据源来自于当前工作环境的具体变量。实验二的具体步骤如下:1.将FFT模块中的采样位数设置为1024位(就是采集到1024个采样点就做一次FFT计算)。2.在当前Matlab工作环境中,读入1023位的l号卫星C/A码放入全局变量code里面,最后通过补零得到1024位的全局变量codeb(因为FFT模块只支持基于2N的数据计算,在前面3.1.4的补零计算已经论证该方法的可行性)。输入数据可以任意选择。3.在得到1024x1维的eodeb变量以后,在变量eodeb里面加入采样时间标注【0:1023],变成1024x2维的变量inputb,其中时间标注由模块Gateway中的sampleperiod参数决定,如果Gateway中的samplepefiod参数设置为嚣丢,则对应的时间标注为【o:而面1:若芸】,采样55 第五覃捕获算法的FPGA仿真买现时间步长应该与Gateway对应,这样为了能让FFT模块得到预定的1024位采样点。这样变量inputb为1024x2维,其中inputb[:,1】(也就是第一列数据)为时间标注数据。为了方便在本实验中时间标注设为[O:1023】。4.设置模块FromWorkspace变量为inputb,在进入FFT模块之前加入增益模块,增益系数设为O.01(将数据缩小100倍,因为FFT只支持小数计算,本实验中FFT中支持小数位数设置为16位)。5.其余简单参数设置,统一整个系统samplingperiod等。运行时间设为4000(4000个Simulink仿真周期)。6.最后设置的是输出结果变量,从ToWorkspace模块中设置,分别设置为变量output与变量outputl。最后得到的Scope结果截图如图5.1l图5.11Scope显不结果如图5.11结果,Scope显示的vout信号表示了在时间t=2155s(这里的时间单位是相对的,因为实际仿真的时候便没有跑了4000s,只是代表了4000个Simulink仿真周期)时,FFT模块运算完了1024个采样点的傅立叶变换,便开始将结果输出,这样就可以通过这个重要的参数来分析后面的数据。Scopel显示的结果是傅立叶变换的实部结果(从t=2156s到t=3180s为有效数据),同样Scope2显示的结果为傅立叶变换的虚部结果。从当前工作环境中生成了新的两个变量output和outputl,都是4001×1维(运行时间为4000s,采样间隔时间为ls,这样就得到4000个点加上最后的延迟一个点,再次强调仿真中的时间秒数都是相对的),其中根据图5.1l中的Scope可以知道output[2156:3180】,outputl[2156:3180]为最后的有效结果。现将这两个有用结果用plot画出,如图5.12所示。 第五章捕获算法的FPGA仿真实现00图5.12SystemGenerator导出数据结果(横坐标为数组位数)现在Matlab中用fft()i吾句对inputb进行傅立叶变化结果,a=位(inputb),最后对a的实部和虚部plot()得到结果如图5.13所示。图5.13傅立叶变换理论结果(横坐标为数组位数)、由图5.13与图5.12对比可知,幅值相差了100倍,这是由于SystemGenerator里面的FFT只支持输入为小数的数据,在前面参数设置的时候将整个数据乘以了O.01增益系数,所以导致了最后的FFT结果对应缩小了100倍,同时得到的结果略有误差(在实际编程中,用得到具体的数据进行直接比较所得),但不影响后面捕获算法的仿真实验。5.3.2捕获算法仿真捕获算法实现的基础实验前面都一一分析,包括数据降采样、补零计算、SystemGeneratorFFT模块的应用等。根据这些实验基础结论得到一下实验步骤:1.对前端采集的数据进行读入,并进行降采样,把原来16367个采样点降采样为8184个新采样点。.2.采用补零法,将8184个点补成8192个点,这样数据个数基于2N,可以利用SystemGeneratorFFT模块进行傅立叶变换计算。3.有了输入数据,对捕获算法结构开始用SystemGenerator搭建。其中的注意点就是控制中间的数据格式,5.3.1实验已经说明FFT模块只支持小数计算。4.对最后仿真得到的数据进行放大恢复,因为前面在FFT模块中对数据进行缩小处理。57 第五章捕获算法的FPGA仿真实现5.最后用Matlab分析数据。根据3.1.4并行捕获结构用SystemGenerator搭建如图5.14。和州-,■脚●^图5.14SystemGenerator系统搭建SystemGenerator运行结果会自动保存到工作环境中的变量中,具体的参数变量可以进行设置,但是数据结果是整个系统运行时间的结果包括延迟导致的结果,所以要对其中无用的数据进行删除处理,然后对有用数据结果用Matlab绘图结果如图5.15所示。加嘎D图5.15SystemGenerator导出数据结果从导出的变量output和变量output2(总共21组)综合得到的参数为f=4125796Hz,Ar=8156,与原先Matlab的结果Ar=16291,f=4125796Hz,的误差主要是△f。原因如下:1.采用了降采样方法,说明两个Ar代表的精度不一样,SystemGenerator的出来的数据精度为琵刍×l聊s,而原先的精度为而b×1垅s,其实相互转换结果为16291/2=8146,这样还58砌御伽锄。吊鳅硝水罂. 第五苹捕获算法的FPGA仿真实现是有10个采样点的误差。2.由于补零引起的误差,补零引也会引起码相位的误差,得到的对齐位并不是真正的对齐,就是由于补零引起的。3.SystemGenerator的误差,因为整个SystemGenerator的系统是在小数下完成的,所以在幅值不断转换的时候也会引起误差,但是这误差对捕获的结果是没有影响的,只会影响具体峰值的大小而已。5.4小结本章主要介绍了FPGA芯片的特点,以及FPGA开发软件SystemGenerator的特点与优点,同时介绍了本文实验过程中涉及到的单元模块,最后在单元模块测试实验、前面的理论补零、降采样等实验的基础上完成了捕获算法的FPGA仿真实验。在整个章节的内容中,主要强调了SystemGenerator的模块配置,与数据源导入问题的解决。1.在SystemGenerator配置过程中的时间参数理解问题上,SystemGenerator模块中的FPGAclockperiod与Simulinksystemperiod参数的区别,其中FPGAclockperiod为硬件时钟周期,这个毫无疑问,难点是后面的Simulinksystemperiod参数,该参数的数值并不是真正代表了实际的采样周期,其实该参数的设置要基于Gateway模块的参数设置,Gateway模块是XILINX模块与非XILINX模块的接口,决定了后序进入XILINX模块的数据采样点的格式。2.本章重点实验在分析FFT模块上面,其实后面的捕获算法都是基于FFT模块的扩展,在FFT模块开发的时候,要理解导入数据的格式要求(没有使用说明,通过具体的例程分析而得),也就是采样时间的标注问题,然后也要理解导出数据的格式,它是基于具体的仿真周期决定的,一仿真时间周期对应一个输出数据。3.XILINX模块的延迟问题,这个整个系统同步以及对输入输出数据分析时候是非常重要的。59 第六章结论与展望美国GPS的现代化,俄罗斯GLONASS的复兴和欧洲Galileo系统的出现即将带来下一代全球导航卫星定位系统(GNSS)。同样中国的北斗系统(BNTS)也正在慢慢发展中,国内导航领域对北斗系统(BNTS)的全面发展已经开始准备,为了能顺利设计、掌握本国自己的北斗导航系统,接收机的研发已经义不容辞,现在国内高校、公司等开始慢慢研究接收机技术并努力将技术将用于实际的实践开发。在此背景下,本文主要研究了GPS软件接收机,以便为以后的北斗系统打下良好的基础。6.1本文工作总结本文在GPS接收机发展背景、GPS接收机原理、FPGA芯片结构以及开发原理的基础上对软件接收机算法的具体实现进行了研究,完成的主要工作如下:1.软件接收机理论模型推导。比较了GPS串行捕获、并行捕获算法差别,分析了捕获目标参数的选择依据;在跟踪环节中,分别对锁相环(PLL)、延迟锁定环(DLL)、锁频环(FLL)的鉴别器选择做了详细的推导;最后对跟踪环路整个控制系统进行了理论推导,并建立了FLL辅助PLL跟踪模型。2.在系统编程实现过程中,主要用C抖语言完成了捕获算法。3.在Matlab平台上完成了捕获算法改进仿真、跟踪环算法的改进仿真,在GPS捕获环节中,用Matlab完成了算法的改进包括补零计算、循环相关改进、降采样。分别在Matlab完成了半物理仿真实验,实验结果显示,补零计算可以弥补算法中采样点不基于2Ⅳ的不足,循环相关改进可以减少卷积的计算量,降采样可以减少整体计算数据量。并同时做了详细的误差数据分析。在GPS跟踪环路实现中,主要完成了FLL模块的建立与仿真;以及完成参数等效噪声带宽、阻尼比的影响实验;各种鉴别器的修改,如PLL反馈方式等;最后用Matlab实现了FLL辅助PLL模块,尝试了多种辅助方式,最后选择FLL辅助PLL的前期(具体在实验中取了30ms),就是同时利用FLL与DLL得到的误差信息进行反馈,在FLL辅助完之后,并由PLL独立完成后面的跟踪,一直到下次失锁。4.用SystemGenerator软件完成了FPGA的捕获算法仿真。在捕获算法的FPGA实现过程中,在Simulink环境下用软件SystemGenerator进行了GPS捕获算法的FPGA仿真,在整个开发过程中,采用了从简单到复杂,底层到上层的思路进行了相应的开发,完成了XILINX模块学习,最后创造性的将采集的数据通过Workspaee导入到系统中进行仿真,解决了信号源问题,而且没有失去仿真的真正意义,采用了真实的采样数据导入。其中的参数设置是通过具体的例程归纳总结而得。最后从FFT算法实现入手完成捕获算法的仿真实现。5.论文中所有的程序都采用东方联星的前端采集实际的数据进行了实验验证,实验结果表明算法和所开发程序的正确性。在完成相应的实验后,论文还进行了具体的误差分析,特别在捕获算法改进、FLL辅助PLL实验以及GPS捕获FPGA仿真的实验中,分析了具体的误差来源,提出可改进之处。6.2工作展望如今软件接收机研究越来越热,在本文实验的基础就软件接收机本身提出一下几点展望。1.虽然顺利完成了GPS信号捕获跟踪,但在具体实现过程中,基带信号数据处理计算量60 第六章结论与展望偏大,以后可以向粗捕获一LI—LL模型尝试,取消精捕获过程。2.在本地信号发生器中,原封不动的按照具体的公式产生本地信号,可以考虑结合程序设计平台优化编程,向实际接收机靠拢(借鉴实际接收机原理),采用查表法等技术减少乘法运算,以及中间变量的反复存储,提高实时性。3.改进跟踪环节的理论模型,在跟踪环在S域向Z域转换的过程中,鉴别器的最优化选择可考虑用更精确的离散积分环节去替代S域中的积分环节。同样尝试同时进行载波频率纠正与载波相位纠正措施(虽已经尝试,但是处于精度问题,没有达到具体的精度要求)。4.虽然用SystemGenerator完成了GPS捕获算法的FPGA仿真,可以考虑具体的产品开发,用底层语言HDL语言开发等措施来完成最后的产品【35也l。61\. 第六章结论与展望致谢衷心地感谢我的导师陈熙源教授在我读研期间对我的悉心指导和培养。为我的学习提供良好的平台和交流机会,使我大大开阔了视野。为以后的课题研究打下了良好的基础。在日常生活中,陈老师以自己严谨的工作作风、丰富的学识和实践经验来教育我,使我受益匪浅。他对工作的严格要求,对学生的关心和他热情爽朗的性格,都给我留下了深刻的印象。在此对陈老师表示感谢和敬意。感谢直序扩频接收机技术群里的各位老师和学者为我在理论知识理解方面提供的大量帮助。感谢导航课题组的徐晓苏教授、程向红教授和吴峻研究员,为整个实验室及学科发展所做的贡献,为我课题研究提供一个良好的环境。感谢张昆鹏、顾明武、陈建锋、祝雪芬等师兄师弟,在两年多的学习生活中给了我很多鼓励与帮助。同时感谢读研期间学习,生活过的所有朋友,与你们一起度过的美好时光让我终身难忘。最后要特别感谢我的父母和家人,感谢你们多年来的养育之恩,感谢你们物质和精神上对我无私的支持!谢谢162 参考文献【1】ElliottD.Kaplan,ChristopherJ.Hegarty.UnderstandingOPS[M],电子工业出版社,2007【2】PeterRinder,NicolajBertelsen.DesignofasinglefrequencyGPSsoftwarereceiver[M],AalborgUniversity,2004.【3】WayneSoehren,WesHawkinson.PrototypePersonalNavigationSystem[J],IEEEA&ESYSTEMSMAGAZD厄.APRIL2008【4】OLEKSIYV,KORNIYENKO,MOHAMMADS,SHARAWI.GPSsoftwarereceiverimplementation[C].Potentials,IEEE.May—June2007:42—46.【5】D.Akopian.FastFFTbasedGPSsatelliteacquisitionmethods[J].IEEProc.-RadarSonarNavig.,V01.152,No.4,August2005:277-286【6】NomiSonowal,RajeevYadavandS.kannan.RealTimeGPSSoftwareReceiverwithNewFastSignalTrackingMethod[J],IEEE,2008【7】W.H.Lin,W.L.Mat),H.W.Tsao,F.R.Chang,W.H.Huang.AcquisitionofGPSSoftwareReceiverUsingSplit-RadixFFT【J】,2006IEEEInternationalConferenceonSystems,Man,andCybemeticsOctober8.1l,2006【8】A.GDempster.NewGNSSSignals:ReceiverDesignChallenges[J],The2004InternationalSymposiumonGNSS/GPS.6_8December2004【9】L.L.Liou,D.M.Lin,J.B.TsuiJ.Scharnus.FrequencyCalibrationofA/DConverterinSoftwareGPSReceivers[J],IEEE,2005[10】沈涛,李传志等.XilinxFPGMCPLD设计初级教程[M】,西安:西安电子科技大学出版社,2009【1l】纪志成,高春能.FPGA数字信号处理设计教程【M】,西安:西安电子科技大学出版社,2008【12】李云松,宋锐等.XilinxFPGA设计基础【l川,西安:西安电子科技大学出版社,2008[13】张洪润,张亚凡等.FPGA/CPLD应用设计200例[M】,北京:北京航空航天大学出版社,2009【14】张雷,邓江平,王建宇.GPS软件接收机的模块设计与信号处理【J】,计算机工程,2009【15】袁安存.软件GNSS接收机【J】.船用导航雷达,2005.【l6】KJParkinson,AGDempster,PMumford,CRizos.FPGAbasedGPSreceiverdesignconsiderations[C],The2005InternationalSymposiumonGNSS/GPS.8—10December2005【17】PratapMisra,PerEnge.GlobalPositioningSystem[M],Ganga-JamunaPress,2001一。·‘【l8】KaiBorre,DennisM.Akos,NicolajBertelsen,eta1.ASoftware—DefinedGPSandGalileoReceiver[M].NewYork:BirkliuserBoston,2007.【19】TaoHuang,BinGuo,MatthewTrinkle.FPGAImplementationofGPSCarderandCodetrackingloops[J],IGNSSSymposium2007.【20】JAMESBAO,YENTSUI.GPS软件接收机基础口咽.陈军,潘高峰等译.北京:电子工业出版社,2007.9【21】ThorstenL'uck,MichaelBodenbach,ThomasPany.SoftwareversusFPGAbasedrealtimekinematicONSSreceiver—acomparison[J]【22】张国玳,徐海燕等.高等数序[M】.南京:南京航空航天大学,2004【23】PratapMisra,PerEnge.全球定位系统【M】.第二版.罗鸣,曹冲等译.北京:电子工业出版社,2008【24】东南大学自控系.数字信号处理【M】.【25】OlinkStar.NewStar210AGPSqb频信号采样器【s】.北京东方联星科技有限公司.【26】华涛,丁阳,石玉.基于FFT伪码快速捕获方法及其性能分析【J】.现代电子技术,2007【27】JAMESBAO·YENTSIJl.FundamentalsofGlobalPositioningSystemReceiversASoftwareApproach[M].USA:AWiley-intersciencepublication.2000【28】胡寿松.自动控制原理【M】.北京:科学出版社,200163 ——童耋奎整【29】沈锋,徐定杰等.基于FLL/PLL相结合的载波跟踪在导航接收机中的应用叨冲国航海,2004【30】王惠南.GPS导航原理与应用[M】.北京:科学出版社,2003【31】ElliottD.Kaplan,ChristopherJ.Hegarty.GPS原理与应用【M】.第二版.寇艳红译.北京:电子工业出版社,2007【32】王诚,薛小刚等.FPGA/CPLD设计工具XilinxISE适用详解[M】.北京:人民邮电出版社,2005【33】BobStewart,JeffWeintraub.TheXilinxDSPprimer【M】.Scotland:Xilinxprogram,August2007【34】张志涌,杨祖樱等.MATLAB教程【M】_匕京:北京航空航天大学出版社,2006【35】ErshenWang,ShufangZhang,ete.ImplementationofanEmbeddedGPSReceiverBasedonFPGAandMicroBlaze[J].IEEE,2008【36】刘钝,曹冲.GPs软件接收机的发展前景阴.全球定位系统,2003:23.26【37】HeinrichMeyr,MarcMoeneelaey.Digitalcommunicationreceivers[M].USA:AWiley-intersciencepublication.【38】魏敬法,胡永辉.GPS接收机中采样平均技术的FPGA实现【J】.时间频率学报,2004,27(1):16.21【39】马薇薇,黄其华等.基于DsP+FPGA的扩频接收机快捕技术【J】.电讯技术,2003【40】王尔申,张淑芳等.GPS接收机相关器技术研究及FPGA实现【J】.系统仿真学报,2008,20(13)【41】Hun-SooCho,Sung-HyuekIm.AFPGA—basedSoftwareGPSReceiverImplemntationUsingSimulinkandXilinxSystemGenerator[J].IONGNSS.2005【42】CliffordKelley,JoelBarnes.OpenSourceGPSopensourcesoftwareforlearningaboutGPS[J]. 攻读硕士期间发表论文汤新华.接收机捕获算法的DSP实现.东南大学校庆学术报告2009.65

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭