处理GPS信号的GPS接收机及方法 |
|||||||
申请号 | CN200610100300.2 | 申请日 | 1996-10-08 | 公开(公告)号 | CN1936616B | 公开(公告)日 | 2010-05-26 |
申请人 | 快速追踪有限公司; | 发明人 | N·F·克拉斯内尔; | ||||
摘要 | 一个 实施例 中的GPS接收机包括从 视野 中的卫星接收RF 频率 的GPS 信号 的天线;与天线连接的下 变频器 ,将接收GPS信号的RF频率降到中频(IF);与下变频器相连的数字化转换器,以预定速率对IF GPS信号抽样,产生抽样的IF GPS信号;与数字化转换器相边听 存储器 ,存储抽样的IF GPS信号(GPS信号的抽样转储);以及与存储器相连的 数字信号 处理器(DSP),按照存储的指令操作,藉此在抽样IF GPS信号上执行快速 傅立叶变换 (FFT)运算,提供伪距离信息。这些运算一般也包括GPS信号的预处理和后处理。在数据抽样转储完成之后,接收机前端掉电。在一个实施例中的GPS接收机也包括其它电源管理特性,并且在另一个实施例中也包括在它的 本振 中纠正错误的勇 力 ,用于对GPS信号抽样。伪距离的计算速度、以及运算的灵敏度通过视野中卫星的多普勒频移从一个外部源-诸如本 发明 的一个实施例中的基站-到该接收机的转移来增强。 | ||||||
权利要求 | 1.一种使用GPS接收机的方法,所述方法包括: |
||||||
说明书全文 | 1.发明领域本发明涉及能够确定卫星的位置信息的接收机,并且更具体地涉及这种在全球定位卫星(GPS)系统中得到应用的接收机。 2.背景领域 GPS接收机一般通过计算从多个GPS(或NAVSTAR)卫星同时发送的信号的相对到达时间来确定其位置。作为其消息的一部分,这些卫星发送卫星位置数据以及时钟定时数据,所谓“星历”数据。搜索并捕获GPS信号的过程、从多个卫星读取星历数据并且从这个数据计算该接收机的位置是很耗时的,常常需要几分钟。在很多情况下,这个很长的处理时间时不可接受的,而且在微小型化便携应用中大大限制了电池的寿命。 当前GPS接收机的另一个局限是它们的操作限于多个卫星在视野中很清晰、不受遮挡这样的情况,而且必须恰当地放置一个质量很好的天线去接收这种信号。正因为如此,在便携、随身放置的应用中、在有相当多树叶或建筑物遮盖的地区、以及在定内应用中一般是不能使用的。 GPS接收系统有两个主要功能:(1)到各个GPS卫星的伪距离的计算,以及(2)使用这些伪距离以及卫星定时和星历数据计算接收平台的位置。简单地说伪距离就是从每个卫星接收的信号与本地时钟之间测量的时延。一旦GPS信号被捕获并跟踪,卫星星历以及定时数据就从GPS信号中提取。如上所述,采集这种信息一般需要相对较长的时间(30秒到几分钟)并且必须用好的接收信号电平来完成一般实现低误码率。 实际上众所周知的GPS接收机利用相关的方法计算伪距离。这些相关方法通常用硬件相关器实时地完成。GPS信号包括高速率重复的信号,所谓伪随机(PN)序列。用于民用的码称为C/A码,具有1.023MHz的二进制相位反转速率,或“切普”速率,1毫秒的码周期的重复周期为1023个切普。家喻户晓的码序列是Gold码。每个GPS卫星用一种唯一的Gold码广播信号。 对于从给定GPS卫星接收的信号,下变频到基带的处理之后,相关接收机用包含于本地存储器中的恰当的Gold码的存储副本乘以所接收的信号,然后将所得乘积结果积分,或者低通滤波,以便得到信号出现的指示。这个过程的术语是“相关”运算。通过相对于接收信号连续地调整这个存储副本的相对定时,并且观察相关输出,接收机可以确定接收信号和本地时钟之间的时延。这种输出出现的最初确定被称之为“捕获”。一旦捕获发生,处理就进入“跟踪”阶段,其特征是少量调整本地参考的定时,以便维持高相关输出。跟踪阶段中的相关输出可以看作是去掉伪随机码的GPS信号,或者用通用术语来说,即“解扩”。这个信号是窄带的,相当于叠加在GPS波形上的每秒50比特的二进制相移键控数据信号的带宽。 相关振获过程是非常耗时的,特别是在接收信号很弱的时候。为了改善捕获时间,大多数GPS接收机利用多个相关器(一般多达12个),以便并行搜索相关峰。 一些现有的GPS接收机使用FFT技术确定所接收的GPS信号的多勒频率。这些接收机利用常规的相关运算,对GPS信号解扩并提供窄带信号,带宽一般在10kHz到30kHz的范围内。所得的窄带信号用FFT算法做傅立叶分析,确定载波频率。这种载波确定同时提供本地PN参考被调整到接收信号的正确相位的指示并提供了载波频率的精确测量。然后可以在接收机的跟踪操作中使用这个频率。 Johnson的U.S.专利No.5,420,592讨论了使用FFT算法在中央处理单元计算伪距离,而不是在移动单元。根据该方法,GPS接收机收集数据的抽样转储,然后通过数据链路发送到远端接收机,在那里进行FFT处理。但是,其中揭示的方法在执行该组相关时只计算了单个正向以及逆快速傅立叶变换(对应于四个PN周期)。 正如从本发明的如下描述中明显看到的,较高的灵敏度和较高的处理速度可以通过执行大量的FFT运算以及特殊的预处理和后处理运算来实现。 在这个专利中,常常用到术语相关、卷积和匹配滤波。术语“相关”当用于两个数字序列时意味着将两个序列中相应的部分逐项相乘,然后将序列相加。有时称为“串行相关”,并得到单个数的输出。在有些情况下,在连续的数据组上执行连续的相关运算。 术语“卷积”当用于两个数字序列时与本领域通用的用法相同并等效于长度为m的第二序列用一个滤波器滤波,该滤波器对应于具有长度为n的冲击响应的第一序列。其结果是长度为m+n-1的第三序列。术语“匹配滤波”是指卷积或滤波运算,其中上述滤波器的冲击响应是第一序列的时间反转的复共轭。术语“快速卷积”用于表示用有效的方式计算卷积运算的算法序列。 一些作者互换地使用术语相关和卷积;但是,为了清楚起见,在这个专利中,术语相关总是指上述的串行相关运算。 发明综述 本发明的一个实施例提供了一种方法,从基站通过一条数据通信链路向远端单元或移运GPS单元发送GPS卫星信息,包括多普勒,以便确定远端GPS接收机的位置。远端单元使用这个信息以及从视野中的卫星接收的GPS信号,随后计算出到该卫星的伪距离。然后将所计算的伪距离发送到基站,在那里计算远端单元的位置。也描述了完成这个方法的不同的设备实施例。 本发明的另一个实施例提供了一种GPS接收机,具有从视野中的卫星接收GPS信号的天线;以及将接收GPS信号的RF频率降到中频(IF)的下变频器。IF信号被数字并存储在存储器中以备接收机随后处理。在本发明的一个实施例中,这个处理一般使用可编程的数字信号处理器来完成,数字信号处理器执行在抽样IF GPS信号上完成快速卷积(例如FFT)运算所必须的指令,以便提供伪距离信息。这些运算一般也包括对GPS信号的存储版本或GPS信号的处理及存储版本进行预处理(在快速卷积之前)和后处理(快速卷积之后)。 本发明的另一个实施例提供了一种GPS接收机的电源管理方法,并提供了一种具有电源管理特性的GPS接收机。通过从视野中的卫星接收GPS信号;缓存这些信号;然后关闭GPS接收机来降低现有系统的功率消耗也描述了其它电源管理特性。 附图简述 本发明通过例子来阐述,但是不限于附图中的图,图中的标识表示类似的单元,其中: 图1A是使用本发明方法的远端或移动GPS接收系统的主要部件的框图,并且表示了可能在基站和远端之间存在的数据链路。 图1B是可选择的GPS移动单元的框图。 图1C是另一个可选的GPS移动单元的框图。 图2A和2B提供了作为本发明实施例的接收机的两个可选的RF和IF部分。 图3表示根据本发明的方法,可编程DSP处理器所执行的主要运算(例如,软件运算)的流程图。 图4说明根据本发明方法的各种处理阶段上的信号处理波形。 图5A说明本发明的一个实施例中的基站系统。 图5B说明本发明的一个可选实施例中的基站系统。 图6说明根据本发明的一个方面,具有本振校正或校准的GPS移动单元。 图7表示根据本发明的一个实施例的移动单元的电源管理方法。 发明详述 这个发明有关计算称动站、或远端站位置的装置和方法,其目的是得到具有很低电源消耗并能够以很低接收信号电平操作的远端硬件的一种方法。即,降低电源消耗同时提高接收机灵敏度。通过实现图1A中所示的远端接收功能、以及从分别放置的基站10向远端站或GPS移动单元20发送多普勒信息使之成为可能。 应该注意到可以用很多不同的方式使用伪距离计算远端站的地理位置。有三个例子是: 1.方法1:通过从基站10向远端站20重发卫星数据消息,远端站20可以将这个信息与伪距离测量结合计算其位置。例如,见U.S.专利No.5,365,450,在这里结合作为参考。典型地,远端单元20在远端站20中进行位置计算。 2.方法2:远端站20可以用本领域通用的一般方式从GPS信号接收中采集卫星星历数据。这个数据,一般在一到两个小时内有效,可以与伪距离测量结合,一般在远端单元中完成位置计算。 3.方法3:远端站20可以通过通信链路16将伪距离发送到基站10,基站将这个信息与卫星星历数据结合完成位置计算。例如,见U.S.专利No.5,225,842,在这里结合作为参考。 在途径(或方法)1和3中,假设基站10和远端站20对所讨论的所有卫星具有共同的视角并且彼此位置足够近,可以解决与GPS伪随机码的重复速率有关的时间模糊性问题。当基站10和远端站20之间的范围是光速乘以PN重复周期(1毫秒)的1/2,或大约150公里时可以满足该要求。 为了解释本发明,假设使用方法3完成位置计算。但是,当讨论这个说明时,本领域的技术人员将会理解到,可以与上三种方法中任何一个以及其它途径一起使用本发明的各种方面和实施例。例如,在方法1的变形中,卫星数据信息,例如卫星星历的数据表示,可以由基站发送到远端单元,而且这个卫星数据信息可以与从缓存的GPS信号中根据本发明计算出来的伪距离结合,提供远端单元的纬度和经度(而且在很多情况下也有高度)。可以理解的是从远端站接收的位置信息可以限于纬度和经度,或者可以是包括远端站的纬度、经度、高度、速度和方位在内的扩展信息。特别是,本发明的本振校正及/或电源管理方面可以在方法1的这个变形中使用。而且,多普勒信息可以发送到远端单元20并由远端单元20根据本发明的方面来使用。 在方法3中,基站10通过在如图1A所示的数据通信链路16上发送消息来命令远端站20进行测量。基站10也在这个消息内发送构成卫星数据信息的视野中卫星的多普勒信息。这个多普勒信息一般在频率信息格式中,而且该消息一般也说明了视野中特定卫星的标识或其它初始化数据。这个消息由作为远端单元20一部分的单独的调制解调器22来接收,并且存储在与低功耗微处理器26相连的存储器30中。微处理器26处理远端单元处理部件32-48与调制解调器22之间的数据信息传递,并且控制远端接收机20内的电源管理功能,正如随后讨论中所见的。一般,微处理器26将大多数或所有远端单元20的硬件设置为低功耗、或下电状态,进行伪距离及/或其它GPS计算时、或当提供可选电源时除外。但是,调制解调器的接收机部分至少要周期性地打开(至全功率),以便确定基站10是否发送了一条确定远端站位置的命令。 这个上述的多普勒信息持续时间很短,因为这种多普勒信息所需的精度不很高。例如,如果需10Hz精度而且最大多普勒频移大约±7kHz,那么视野中的每个卫星只要11比特定就足够了。如果视野中有8个卫星,那么需要88比特描述所有这些多普勒频移。使用这个信息避免了远端站20搜索这种多普勒频移的必要,藉此将其处理时间降低到十分之一以下。多普勒信息的使用也使GPS移动单元20更快地处理GPS信号抽样,而且这会趋于减少处理器32必须得到全功率以便计算位置信息的时间量。只这样就降低了远端单元20所消耗的功率并有助于改善灵敏度。附加信息也可以发送到远端站20,包括GPS消息中的数据时间点。 接收的数据链路信号可以使用精确的载波频率。远端站接收机20可以使用自动频率控制(AFC)环路锁定到这个载波上并藉此校准其本身的参考振荡器,如图6所示。10毫秒的滔滔息发送时间、20dB的接收信噪比,一般会使通过AFC的频率测量达到10Hz或更好的精度。这一般会超过本发明所需的精度。这个特性也将增强常规地或者使用本发明的快速卷积方法所进行的位置计算的精度。 在本发明的一个实施例中,通信链路16是商用的窄带射频通信媒体,诸如双向寻呼系统。这个系统可以用于远端站20和基站10之间发送的数据量较少的实施例中。多普勒频移以及其它数据(例如,如视野中卫星的标识这样的初始化数据)的发送所需的数据量较少,而且类似地,位置信息(例如,伪距离)所需的数据量也较少。因此,窄带系统对于这个实施例足够了。这不象那些需要在短时间段内发送大量数据的系统;这些系统可能需要较高带宽的射频通信媒体。 一旦远端站20接收到GPS处理的命令(例如,从基站10)以及多普勒信息,微处理器26就通过电池和电源管理器以及电源开关电路36(以及受控电源线21a、21b、21c和21d)激活RF到IF变频器42、模数转换器44以及数字抽样转储存储器46,藉此对这些部件提供全功率。这样,使来自GPS卫星、通过天线40接收的信号下变频到IF频率,随后进行数字化。将相邻的这样一组数据,一般对应于100毫秒到1秒(或者甚至更长)的持续时间,存储在抽样转储存储器46中。存储的数据量可以受微处理器26的控制,使得在保存电源不如得到更好的灵敏度重要的情况下,可以在存储器46中存储更多的数据(得到较好的灵敏度),而且当保存电源比灵敏度更重要的情况下可以存储较少的数据。一般,当妗号可能部分被遮盖时灵敏度就更重要些,当有丰富的电源(例如,汽车电池)提供时保存电源就不太重要。该存储器46存储该数据的寻址受到现场可编程门阵列(FPGA)集成电路48的控制。GPS信号的下变频使用频率合成器38完成,频率合成器38为变频器42提供本振信号39,正如下面进一步讨论的。 注意在这段时间中(当抽样转储存储器46被填入来自视野中卫星的数字化GPS信号时)DSP微处理器32可以保持在低功耗状态。RF到IF变频器42以及模数转换器44一般只打开很短的一段时间,足够采集并存储伪距离计算所需的数据即可。在数据采集完成之后,这些转换器电路关闭或者通过受控电源线21b和21c将功率降低(存储器46继续得到全功率),这样在实际的伪距离计算过程中不贡献附加的功耗。然后,在一个实施例中使用通用、可编程数字信号处理器IC 32(DSP)进行伪距离计算,例如备州仪器公司(Texas Instruments)的TMS320C30集成电路。在进行这种计算之前,这个DSP 32由微处理器26以及电路36通过受控电源线21e置于激活电源装态。 这个DSP 32不同于一些远端GPS单元中使用的其它类型,比较专门定制的数字信号处理IC而言,它是通用的而且可编程的。此外,DSP 32使利用快速傅立叶变换(FFT)算法成为可能,通过在本地产生的参考和接收信号之间快速完成大量的相关运算来实现非常快速的伪距离计算。一般,需要2046个这样的相关,以完成每个接收的GPS信号的时间点搜索。快速傅立叶变换算法允许对所有这样的位置进行同时以及并行的搜索,这样就可以将所需的计算过程加速到常规方法的10倍到100倍。 一旦DSP 32对每个视野中卫星完成为伪距离计算,在一个发明的实施例中,它将这个信息通过互连总线33发送到微片量器26。此时微处理器26可以通过向电池和电源管理器电路36发送适当的控制信号使DSP 32和存储器46再次进入低功耗状态。然扣为了最后的位置计算,微处理器26利用调制解调器22在数据链路16上向基站10发送伪距离数据。除了伪距离数据,可以同时向基站10发送时间标记,表示从在缓存器46中采集初始数据到数据通过数据链路16发送的时刻所经历的时间。这个时间标记提高了基站进行位置计算的能力,因为它允许在数据采集时间计算GPS卫星位置。作为一种可选的方案,根据上述方法上,DSP 32可以计算远端单元的位置(例如,纬度、经度或纬度、经度和高度)并将这个数据发送到微处理器26,后者类似地将这个数据通过调制解调器22中继到基站10。在这种情况下,通过DSP维持从卫星数据消息接收到缓存器数据采集开始时刻所经历的时间来减轻位置计算。这样改善了远端单元进行位置计算的能力,因为它允许在数据采集时刻进行GPS卫星位置的计算。 如图1A所示,在一个实施例中,调制解调器22使用单独的天线24通过数据链路16发送和接收消息。应该理解的是,调制解调器22包括一个通信接收机和一个通信发射机,交替耦合到天线24。类似地,基站10可以使用单独的天线14发送和接收数据链路消息,因此允许在基站10通过GPS天线12连续地接收GPS信号。 如所希望的,在典型的例子中,DSP 32中的位置计算将需要少于几秒的时间,根据存储在数字抽样转储存储器46中的数据量以及DSP或几个DSP的速度而定。 从上面讨论中可以清楚的是,如果来自基站10的位置计算命令不太频繁,远端单元20只需要将其高功耗电路激活一小段时间。可以预期的是,在至少很多情况下,这种命令只会使远端设备在大约1%或更少的时间内激活到它的高功耗状态。 这样就允许电池工作到其它可能会达到的时间长度的100倍。执行电源管理操作所必须的程序命令存储在EEPROM 28或其它合适的存储介质中。这种电源管理策略对于不同的供电环境都是可接受的。例如,当主电源可用时,位置确定可以连续地进行。 如上所示,数字抽样转储存储器46捕获对应于相当长时间的记录。这种使用快速卷积方法的大块数据的有效处理为本发明提供了以低接收电平处理信号的能力(例如,当由于建筑物、树木等的部分遮盖造成接收较差时)。所有可见GPS卫星的伪距离都使用这种同样缓存的数据进行计算。在信号幅度快速变化情况(例如城市遮盖条件下)下,相对于连续跟踪GPS接收机,这就提供了改善的性能。 图1B中所示的一个稍微不同的实现无需微处理器26及其外设(RAM 30和EEPROM 28)而且用更复杂的FPGA(现场可编程门阵列)49内所包含的附加电路来替换它们的功率。在这种情况下,FPAG 49,一个低功率器件,用于当通过到连19检测到调制解调器22的激活时醒DSP 32a芯片。互连19将调制解调器连接到DSP 32a以及FPGA 19。当唤醒DSP芯片32a时,它直接从调制解调器发送和接收数据/DSP 32a也通过它的互连18执行功率控制操作,互连18连接到电池和电源管理器以及开关36,为电路36提供电源开/关命令。DSP 32a根据诸如图7所示的电源管理方法,通过互连18提供给电路36的电源开/并命令,选择性地打开电源或降低不同器件的功率。电路36接收这些命令并选择性地为不同器件提供电源(或降低功率)。电路36通过互连17唤醒DSP 36通过选择性地通过可控电源线21a、21b、21c、21d以及21f中所选的一个进行电源切换,从而选择性地为不同器件提供电源。因此,例如,为了给变频器42和转换器44提供电源,可以通过线路21b和21c给这些转换器提供电源。类似地,调制解调器的电源通过可控的电源线21f提供。 低频晶振47连接到存储器和电源管理FPGA 49。在一个实施例中,存储器和电源管理FPGA 49包含一个包括低频振荡器47的低功率定时器。当FPGA49定时器超时时,FPGA 49就通过互连17向DSP 32a发送唤醒信号,然后DSP 32a就通过向电池和电源管理器以及电源开关电路36提供电源开/关命令来唤醒其它电路。其它电路通过电路36控制之下的可控电源线21a、21b、21c、21d以及21f上电,以便进行位置运算(例如确定诸如伪距离或纬度及经度之类的位置信息)。位置运算之后,DSP 32A复位FPGA定时器并降低其本身的功率,电路36也根据图7所示的方法降低其它器件的功率。应该理解的是,电池或多个电池通过受存储器及电源管理FPGA 49以及DSP 32a控制的电源线为所有功率可控的电路提供电源。也应该理解的是,不是直接通过控制到器件的电源线(例如21b)来降低功率,而是通过对该器件发信令(如图1B中所示的通过互连17的DSP 32a的情况)减少功率或唤醒至全功率,来减少器件所消耗的功率;当一个器件,例如一个集成电路,具有控制该器件的功率状态的输入时,而且该器件具有控制功率消耗所必须的内部逻辑(例如,降低该器件不同逻辑模块的功率的逻辑)时,这就常常是可能的。存储器及电源管理FPGA 49提供存储器控制和管理,包括数据从转换器44存储到存储器46时或当DSP器件32a从存储器46中读数据时的寻址操作。如果必要的话,FPGA 49也可以控制诸如存储器刷新之类的其它存储器功能。 图1C表示根据本发明的GPS移动单元的另一个实施例,包括很多与图1A和1B所示的GPS移动单元相同的器件。此外,图1C中所示的GPS移动单元包知电源管理器77,连接它以便从多个电池81以及可选的外部电源输入83和太阳能电池79接收功率。电源管理器77在可控电源线的控制下为所有电路提供电源,可控电源线由图1C中所示的DSP芯片32a和存储器及电源管理FPGA 49进行管理。太阳能电池79可以使用常规的充电技术对那些电池充电。除了对电池充电以外,太阳能电池79也可以对GPS移动单元提供电源。在图1C所示的实施例中,FPGA 49通过互连75对DSP芯片32a提供唤醒信号;这个信号使DSP芯片架到全功率,以便进行为DSP芯片32a所描述的各种功能。DSP芯片也可以通过来自调制解调器22的外部命令激活到全功率状态,调制解调器22通过互连19直接连接到DSP芯片。 图1C也表示了本发明的一个特性,即允许GPS移动单元为保存电源而折衷灵敏度。正如这里所描述的,GPS移动单元的灵敏度可以通过增加存储在存储器46中的缓存GPS信号量来增加。通过采集并数字化更多的GPS信号并将该数据存储在存储器46中可以实现。尽管这种增加的缓存造成了更多的功耗时,但改善了GPS移动单元的灵敏度。这种增加灵敏度模式可以通过GPS单元上的功率模式开关85来选择,该开关连接到总线19为DSP芯片32a提供进入增加灵敏度模式的命令。还可以通过采集较少的GPS信号的抽样转储并藉此在存储器46中存储较少量的GPS信号实现选择性地使这个功率模式开关85向DSP芯片32a发送保存更多的电源并提供较低灵敏度的命令。应该理解的是,这个功率模式选择也可以通过从基站向调制解调器22发送一个信号来实现,调制解调器22再通过互连19向DSP芯片32a传递这个命令。 移动GPS单元的RF到IF频率变换器以及数字化系统的一个代表性例子示于图2A。1575.42MHz的输入信号通过限带滤波器(BPF)50以及低噪声放大器(LNA)52传递并发送到频率转换级。这级中所用的本振(LO)56被锁相(通过PLL 58)到2.048MHz(或其谐波分量)的温补晶振(TCXO)60上。在优选的实施例中,LO频率是1531.392MHz,即2991×0.512MHz。所产生的IF信号以44.028MHz为中心。这个IF是所需要的,因为接近44MHz的低成本器件有供应。特别是,电视应用中用得很多的声表面波滤波器(SAW)是很容易得到的。当然,可以使用其它的限带器件,而不是SAW器件。 接收的GPS信号在混频器54中与LO信号混频,产生IF信号。这个IF信号通过SAW滤波器64,精确限带到2MHz带宽,然后送到I/Q下变频器68,将该信号转换成接近基带(标称4kHz中心频率)。这个下变频器的本振频率从2.048MHz的TCXO 60得到,为1.024MHz的43次谐波,即44.032MHz。 I/Q下变频器68一般是有供货的RF器件。它通常由两个混频器和低通滤器组成。在这种情况下,一个混频器的输入口馈入IF信号和LO信号,另一个混频器的输入口馈入相同的IF信号和相移了90°的LO信号。两个混频器的输出被低通滤波以消除反馈和其糨失真成分。 如图2A所示,如果需要,放大器62和66可以在限带操作之前和之后使用。 I/Q下变器68的两个输出送入两个匹配的A/D变换器44,以2.048MHz对该信号抽样。另一种实现用比较器(未示出)代替A/D变换器44,其中每一个根据输入信号的极性输出数据的二值(1比特)序列。熟知的是这种方法相对于多电平A/D变换器会导致接收机灵敏度损失大约1.96dB。但是,使用比较器而不是A/D变换器,而且在随后的抽样转储存储器46中减少对存储器的需求会节省相当多的成本。 下变频器和A/D系统的另一种实现示于图2,其中使用了带通抽样方法。所使用的TCXO 70在频率4.096MHz处(或者其谐波)。TCXO的输出可以用作A/D变换器44(或比较器)的抽样时钟,用于将信号转换到1.028MHz。这个频率是4.096MHz的11次谐波与输入IF频率44.028MHz之差。所产生的1.028MHz IF接近四分之一抽样速率,已知这在最小化抽样类型失真上是近乎理想的。与图2A中的I/Q抽样相比,这种单个抽样器提供了一个数据信道而不是两个,但是速率加倍了。此外,数据实际上是在1.028MHz的IF处。然后,通过将要描述的随后处理中的数字装置实现I/Q频率转换到接近0MHz。图2A和2B中的装置在成本和复杂度上都是可以比拟的;通常器件的供货决定了优选的方法。但是对于本领域的技术人员很显然的是,可以使用其它接收机配置实现类似的结果。 为了简化如下的讨论,下面假设使用图2A听I/O抽样而且抽样转储存储器46包括2.048MHz的两个数字化数据信道。 DSP 32中执行的信号处理的细节可以在图3流程图以及图4A、4B、4C、4D和4E中图示的帮助下理解。对于本领域技术人员显然的是,执行要描述的信号处理用的机器码、或其它合适的码存储在EPROM 34中。其它非易失存储器件也可以使用。该处理的目的是针对本地产生的波形确定接收波形的定时。此外,为了实现高灵敏度,要处理很长一段的这种波形、一般是100毫秒到1秒。 为了理解该处理,第一个应该注意的是每个接收的GPS信号(C/A模式)由高速(1MHz)重量的1023个符号的伪随机(PN)模式构造,通常称为“切普”。这些“切普”组成了图4A中所示的波形。这个模式上还加上了从卫星以50波特发送的低速数据。所有这些数据以在2MHz带宽内测量的很低信噪比接收。如果对载波频率和所有数据率的确知达到了很高的精度,而且没有数据出现,那么通过连续帧彼此相加,可以很大地改善信噪比并大大减少数据。例如,在1秒时间内有1000个PN帧。第一个这样的帧可以相干地加到下一帧,其结果再加到第三帧,等等。结果将是持续1023个切普的一个信号。然后可以将这个序列的相位与本地参考序列相比较,确定两个之间的相对定时,因此建立所谓伪距离。 上述处理必须从抽样转储存储器46中存储的同样一组接收数据中对视野中的每个卫星分别进行,因此,一般来自不同卫星的GPS信号具有不同的多普勒频移而且PN模式彼此不同。 因此载波频率的未知可能由于信号多普勒不确定造成超过5kHz、以及由于接收机本振不确定造成附加的未知量这个事实,上述处理就变得很困难。这些多普勒不确定性在本发明的一个实施例中,通过从同时监视来自视野中卫星的所有GPS信号的基站10发送这样的信息来去除。因此,就在远端站20中避免了多普勒搜索。本振的不确定性也通过使用基站到远端站的通偏信信号而执行的AFC操作而大大减少(到大约50Hz),如图6所示。 叠加在GPS信号上的50波特数据的出现还限制PN帧的相干相加不超过20毫秒的周期。即,在数据符号反转进一步限制处理增益之前,几乎有20帧可以相干相加。附加的处理增益可以通过匹配滤波和帧幅度(或幅度的平方)相加来实现,如下面段落所样述的。 图3的流程图在步骤100开始,来自基站10的一个命令启动GPS处理操作(在图3中称为“定位命令”)。这个命令包括,通过通信链路16发送视野中每个卫星的多普勒频移以及这些卫星的标识。在步骤102,远端单元20通过频率锁定到从基站10发送的信号来计算它的本振漂移。另一种方法是利用远端单元中的质量很好的温补晶振。例如,控制TCXO,所谓DCXO,目前可以实现的精确度是0.1个百万分之一,或对于L1GPS信号大约150Hz的差错。 在步骤104,远端单元的微处理器26打开接收机前端42、模数转换器44以及数字抽样转储存储器46的电源,并采集C/A码持续K个PN帧的数据的抽样转储,这里K一般为100到1000(相对于100毫秒到1秒的持续时间)。当足够数量的数据采集完之后,微处理器26关闭RF到IF变频器42和A/D转换器44。 然后如下计算每个卫星的伪距离。首先,在步骤106,为了处理给定GPS卫星信号,从EPROM 34获取相应的伪随机码(PN)。正如所简单讨论的,优选的PN存储格式实际上是这个PN码的傅立叶变换,每1023个PN比特以2048个抽样的速率抽样。 抽样转储存储器46中的数据以N个连续PN帧块处理,即2048N个复抽样块(N一般是范围5到10中的整数)。类似的操作在每块上进行,如图3底部循环(步骤108-124)所示。即,这个循环对于要处理的每个GPS信号执行总共K/N次。 在步骤108,块的2048N个数据字乘以一个复指数,去掉信号载波上的多普勒效应,以及接收机本振漂移的影响。为了说明起见,假设从基站10发送的多普勒频率加上本振偏称对应于fe Hz。那么,该数据的左乘取函数e-j2πfenT的形式,n=[0,1,2,...,2048N-1]+(B-1)×2048N,这里T=1/2.048MHz是抽样周期,块号B的范围从1到K/N。 然后,在步骤110,块内邻组的N(一般为10)帧数据彼此相干相加。即,抽样0,2048,4096,...2048(N-1)-1加在一起,然后1,2049,4097...2048(N-1)加在一起,等等。此时,该块只包含2048个复抽样。每个求和运算所产生的波形在4个PN帧情况下的例子示于图4B。这个求和运算可以认为是一种在快速卷积运算之前进行的预处理运算。 然后,在步骤112-118,每个平均的帧经过一次匹配滤波运算,其目的是确定包含在该数据块中的所接收的PN码和本地产生的PN参考信号之间的相对定时。同时,也补偿了抽样次数上的多普勒效应。在一个实施例中,通过使用诸如在某种意义上用于执行循环卷积的快速傅立叶变换算法这样的快速卷积运算可以大大加速这些运算,如现在所描述的。 为了简化讨论,开始忽略了上述多普勒补偿。 要执行的在本运算是将正处理的块(2048个复抽样)内数据与本地存储的类似的参考PN块相比较,该比较实际上通过将该数据块的每个元素(复)乘以该参考的相应元素并将结果求和。这个比较称为“相关”。但是,单个相关只能针对该数据块的一个特定开始时间来完成,而存在2048种可能提供较好匹配的位置。对于所有可能的开始位置的所有相关运算的集合被称为“匹配滤波”运算。在优选的实施例中需要完全匹配滤波运算。 PN块的其他时间通过将PN参考循环移位并重复执行相同的运算来检测。即,如果PN码被标为p(0)P(1)...P(2047),那么循环移位一个抽样得到p(1)P(2)...P(2047)p(0)。这个修改的序列检测确定该数据块是否包含以p(10开始的PN信号。类似地,该数据块可能以抽样p(2),p(3),等等开始,而且每个都可以通过将参考PN循环移位并重复执行该检测来测定。应该很明确的是完整的测试集应该需要2048×2047=4,194,304次运算,每次需要一次复数乘法和加法。 可以使用一种更有效的数学上等效的方法,利用快速傅立叶变换(FFT),只需要大约12×2048次复数乘法以及两倍的加法数目。在这种方法中,在步骤112,对该数据块和PN块进行FFT。在步骤114,该数据块的FFT乘以该参考的FFT的复共轭,并在步骤118对其结果进行逆傅叶变换。这样得到的最终数据长度为2048,包含该数据块和该PN块对所有可能位置的相关集合。每个前向或逆FFT运算需要P/2log2P次运算,这里P是正在转换的数据的大小(假设使用2-基FFT算法)。对于B=2048这种情况,每个FFT需要11×1024次复数乘法。但是,如果PN序列的FFT预存在EPROM 34中,正如在优选的实施例中那样,那么就不需要在滤波过程中计算FFT了。因此前向FFT、逆FFT以及FFT的乘积的复数乘法总数为(2×11+2)×1024=24576,比直接相关节省了171倍。图4C说明了这种匹配滤运算所产生的波形。 本发明的优选方法是使用在1023切普的PN周期上取2048个数据抽样这样的抽样速率。这就允许使用长度为2048的FFT算法。已知是2或4的方幂的FFT算法一般比其它大小更有效(而且2048=211)。因此,这样选择抽样速率就大大提高处理速度。优选的是FFT的抽样数等于一个PN帧的抽样数,这样可以实现恰当的循环卷积。即,这种情况允许对PN码的所有循环移位版本测试该数据块,如上面所讨论的。如果FFT的大小选择为与一个PN帧长度不同的抽样数,那么可以使用另一类方法,在本领域称为“重叠存储”或“重叠相加”。这些方法大约需要上述优选实现的计算数目的两倍。 本领域的计算人员应该清楚的是可以如何通过使用各种提供快速卷积运算的不同长度的FFT算法以及各种抽样速率来修改上述过程。此餐,一组快速卷积算法的存在,也具有需要的计算数与Blog2B,而不是直接相关中所需的B2成比例的特性。很多这种算法在标准参考书中列举,例如,H.J.Nussbaumer,”Fast Foruier Transform and Convolution Algorithms,”New York,Springer-Verlag,C1982。这种算法的重要例子是Agarwal-Cooley算法、拆分嵌套算法、递归多项式嵌套算法,以及Winograd-Fourier算法,前三种用于进行卷积,后一种用于进行傅立叶变换。这些算法可以用于替换上面提出的优选方法。 现在解释步骤116中所使用的时间多普勒补偿方法。在优选实现中,由于接收GPS信号上的多普勒效应以及本振不稳的影响,所使用的抽样速率可能不精确地对应于每PN帧2048个抽样。例如,已知多普勒频移可能产生±2700纳秒/秒的延迟误差。为了补偿这种效应,在上述描述中处理的数据块需要进行时间移位以便补偿这个误差。例如,如果所处理的块大小对应于5个PN帧(5毫秒),那么从一块到另一块的时间移位可能是±13.5纳秒。较小的时间称位是由于本振的不稳定造成的。这些称位可以通过将连续数据块时移单个数据块所需的时间移位的倍数来补偿。即,如果每块的多普勒时间移位是d,那么这些块被时间移位nd,n=0,1,2,....。 一般来说,这些时间移位是一个抽样的几分之一。使用数字信号处理方法直接执行这些运算会包括使用非整数的信号插值方法而且会产生很高的计算负担。另一种方法是本发明的优选方法,在快速傅立叶变换函数中加入该处理。众所周知d秒的时间移位等效于将一个函数的傅立叶变换乘以e-j2πfd,这里f是频率变量。因此,时间移位可以通过将数据块的FFT,对于n=0,1,2,...,1023就乘以e-j2πnd/Tf,对于n=1024,1025,...,2047就乘以e-j2π(n-2048)d/Tf,这里Tf是PN帧长度(1毫秒)。这个补偿只对与FFT处理有关的处理时间增加了大约8%。该补偿分成两半,以便保证相位补偿在过0Hz时的连续性。 在匹配滤波运算完成之后,在步骤120计算该块的复数的幅度、或幅度平方。哪一种选择都几乎工作得很好。这个运算去掉了50Hz数据相位翻转(如图4D所示)以及剩下的低频载波误差的影响。然后将2048个抽样的块加前面块的求和上,在步骤122处理。步骤122可以认为是后处理运算,在步骤112-118所提供的快速卷积运算之后进行。一直持续到所有K/N个块都处理完毕,如步骤124的判决模块所示,此时只乘下2048个抽样的一个块,从中可以计算伪距离。图4E说明了求和运算之后所得到的波形。 伪距离确定在步骤126进行。搜索本地计算的噪声电平之上的一个峰值。如果找到了这样的一个峰值,那么它相对于该块开始出现的时间就代表了与特定PN码及相关GPS卫星有关的伪距离。 在步骤126使用了一个插值程序寻找该峰值的位置,其精确度大于与抽样速率(2.048MHz)相关的精度。该插值程序依赖于远端接收机20的RF/IF部分中使用的预带通滤波。质量好的滤波器会得到近似三角形、底部宽度等于4个抽样的一个峰值。在这种情况下,在减去平均幅度(为了去掉DC基线)之后,最大的两个幅度可以用于更精确地确定峰值位置。假设这些幅度被标为Ap和Ap+1,不失一般性,这里Ap≤Ap+1,p是峰值幅度的索引。那么该峰值相对于与Ap对应的位置可以通过这个公式提供:峰值位置=p+Ap/(Ap+AP+1)。例如如果Ap=Ap+1,那么找到峰值位置是p+0.5,即,两个抽样索引中间的位置。在一些情况下,带通滤波可能在该峰值附近,而且三点多项式插值可能更合适。 在前面的处理中,用于门限的本地噪声参考可以在去掉几个最大的这种峰值之后,通过将最后平均的块中的所有数据平均来计算。 一旦找到伪距离,就在步骤128以类似的方法对视野中的另一个卫星继续该处理,除非所有这种卫星都处理完毕。对所有这种卫星的处理完成之后,处理在步骤130继续,将伪距离数据通过通信链路16发射到基站10,在这里进行远端站的最后位置计算(假设使用方法3)。最后,在步骤132,将远端站20的大部分电路置于低功耗状态,等待新的命令执行另一次位置运算。 现在提供上面描述的、并在图3中表示的信号处理的概要。来自一个或多个视野中GPS卫星的GPS信号使用远端GPS单元上的天线在远端GPS单元接收。这些信号被数字化并存储在远端GPS单元的缓存器中。这些信号存储之后,处理器进行预处理、快速卷积处理、以及后处理运算。这些处理运算包括: a)将存储数据分成连续块序列,每块的持续时间等于包含在GPS信号中的伪随机(PN)码的帧周期的倍数。 b)对于每一块,进行预处理步骤,通过将连续的数据子块-子块持续时间等于一个PN帧-相干相加产生长度等于伪随机码周期长度的压缩数据块;这个加法步骤意味着每个子块相应的抽样号彼此相加。 c)对于每个压缩块,利用快速卷积技术进行匹配滤波运算,确定包含在数据块内的所接收的PN码与本地产生的PN参考信号(例如,正处理的GPS卫星的伪随机序列)之间的相对定时。 d)通过在所述匹配滤波运算结果上进行幅度平方运算以及对其进行后处理确定伪距离,后处理是通过将幅度平方数据块加到一起产生一个峰值,从而将所有块的幅度平方数据合并成一个单数据块。 以及e)使用数字插值方法精度地定位所述单数据块的峰值,这里的位置是数据块的开始到所述峰值的距离,而且该位置代表了对应于正处理的伪随机序列的GPS卫星的伪距离。 一般,处理缓存的GPS信号中使用的快速卷积技术是快速傅立叶变换(FFT),而且卷积的结果由计算压缩块的前向变换和预存储的伪随机序列前向变换表示的乘积,以便产生一个第一结果,然后进行第一结果的逆傅立变换恢复该结果来产生。而且,多普勒所引起的时延和本振所引起的时间误差的影响在每个压缩数据块上进行补偿,方法是在前向和逆快速傅立叶变换运算之间插入压缩块的前向FFT与一个复指数的乘积,该复指数对应于抽样号的相位被调整为对应于该块所需的延迟补偿。 在前面的实施例中,来自每个卫星的GPS信号的处理时间上顺序时行,而不是并行的。在另一个实施例中,来自所有视野中卫星的GPS信号可以用并行方式及时地处理。 假设基站10对所有要处理的以及范围上与远端单元20足够接近的卫星有共同的视野,这样可以避免与C/A PN码的重复周期有关的模糊性。90英里的范围将满足这个标准。也假设基站10具有GPS接收机和很好的地理位置,这样视野中的所有卫星可以被连续地跟踪到很高精度。 尽管几处所描述的基站10的实施例表明在基站中使用诸如计算机这样的数据处理单元是为了为移动GPS单元计算诸如纬度和经度这样的位置信息,但是应该理解每个基站10可以仅将从移动GPS单元接收的诸如伪距离这样的信息中继到实际执行纬度和经度计算的中央单元或几个中央单元。用这种方式,可以通过从每个中继基站中去掉数据处理单元及其有关的器件来减少这些中继基站的成本和复杂性。一个中央单元,可能包括接收机(例如电信接收机)以及数据处理单元及其有关器件。特别是,在某些实施例中,基站可能是虚拟的,它可能是向远端单元发送多普勒信息的卫星,这样就可以在传输服务小区中去掉基站。 图5A和5B表示根据本发明的两个基站实施例。在图5A所示的在站中,GPS接收机501通过GPS天线501a接收GPS信号。可能是常规GPS接收机的GPS接收机501提供一个定时参考信号,一般其定时相对于GPS信号,并且提供相对于视野中卫星的多普勒信息。这个GPS接收机501连接到一个接收定时参考信号510的标准本振505上,并将其本身相位锁定到这个参考上。这个标准本振505具有一个提供给调制器506的输出。该调制器506也从该GPS移动单元视野中的每个卫星接收多普勒数据信息信号及/或其它卫星数据信息信号511。调制器506将多普勒及/或其它卫星数据信息调制到从标准本振505接收的本振信号上,以便为发射机503提供调制的信号513。发射机503通过互连514连接到数据处理单元502,这样数据处理单元可以控制发射机503的操作,以便产生通过发射机的天线503a向GPS移动单元的卫星数据信息的发送,例如多普勒信息。用这种方式,GPS移动单元可以接收多普勒信息,其信息源是GPS接收机501,而且也可以接收高精度本振载滤信号,用于校准GPS移动单元中的本振如图6所示。 图5A中所示的基站也包括接收机504,连接它以便通过通信天线504a从远端站或GPS移动单元接收通信信号。应该理解的是天线504a可能与发射机天线503a是同一天线,这样一个单个天线可以按照常规方式即可用于发射机也可用于接收机。接收机504连接到可能是常规计算机系统的数据处理单元502。处理单元502也可以包括一个互连512,从GPS接收机511接收多普勒及/或其它卫星数据信息。这些信息可以用于处理通过接收机504从移动单元接收的伪距离信息或其它信息。这个数据处理单元502连接到可能是常规CRT的显示设备508。该数据处理单元502也连接到海量存储器件507,其中包括GIS(地理信息系统)软件(例如,StrategicMapping,Inc.Of Santa Clara,California的Atlas GIS),用于在显示器508上显示地图。使用显示器地图,移动GPS单元的位置可以相对于所显求援地图在显示器上表示出来。 图5B所示的另一种基站包括很多与图5A所示相同的元件。但是,不是从GPS接收机得到多普勒及/或其它卫星数据信息,而是图5B的基站包括多普勒及/或其它卫星数据信息源552,用常规方式从电信链路或无线链路得到。这个多普勒及/或卫星信息通过互连553传输到调制器506。图5B所示的调制器506的另一个输入是来自诸如铯频标本振这样的参考质量本振的振荡器输出信号。这个参考本振551提供精确的载波频率,多普勒及/或其它卫星数据信息调制在其上,然后通过发射机503发射到移动GPS单元。 图6表示本发明的GPS移动单元的一个实施例,使用了通过类似于图1A所示的天线24的信道天线601接收的精确载波频率信号。天线601连接到调制解调器602,类似于图1A中的调制解调器22,而且这个调制解调器602连接到自动频率控制电路603,该电路锁定到这里根据本发明的一个实施例所描述的基站发送的精确载波频率信号上。自动频率控制电路603提供一个输出604,一般在频率上锁定到精确载波频率上。这个信号604通过比较器605与GPS本振606经过互连608的输出比较。比较器605所执行的比较结果是一个误差纠正信号610,提供给频率合成器609。用这种方法,频率合成器609提供质量较高的、校准的本振信号,通过互连612送到GPS下变频器614。应该理解的是通过互连612提供的信号类似于图1A中互连39提供给变频器42的本振信号;而且,变频器42类似于连接到GPS天线613接收GPS信号的GPS下变频器614。在另一个实施例中,比较器605所执行的比较结果可能通过互连610a输出,作为DSP器件620的误差纠正,该DSP类似于图1A所示的DSP芯片32。在这种情况下没有误差纠正信号610提供给频率合成器609。自动频率控制电路可以用多种常规技术实现,包括锁相环或频率跟踪环或块相位估计器。 图7表示根据本发明一个实施例的电源管理的特定序列。应该理解的是有多种本领域已知的方法可用于降低功率。这些包括将提供给同步的、时序器件的时钟变慢以及对特定部件完全关闭电源或者关掉一个部件的某部分电路而保留其它的。例如,应该理解到锁相环和振荡器电路需要启动及稳定时间,因此设计者可能不会决定完全(或者根本上)对这些部件掉电。图7所示的例子在步骤701开始,系统的各个部件在其中初始化并置于降低功率状态。或者周期性地或者在预定的一段时间之后,调制解调器22中的通信接收机要返回全功率,以便确定是否有从基站10发送的命令。在步骤703出现这种情况。如果在步骤705接收了来自基站单元的定位信息请,那么调制解调器22就在步骤707提示电源管理电路。此时,调制解调器22中的通信接收机或者可以关闭一段预定时间或者关闭、随后再周期性地打开,这在步骤709中表示。应该理解的是通信接收机可能保持在全功率状态而不是此时关闭。然后,在步骤711,电源管理电路通过打开变频器42和模数转换器44的电源,将移动单元的GPS接收机部分返回到全功率;如果频率振荡器38也掉电,此时将这个部件上电并返回全功率并允许一段稳定时间。然后,在步骤713,包括部件38、42和44的GPS接收机接收GPS信号。这个妗号缓存在当GPS接收机在步骤711返回全功率时也返回全功率的存储器46中。在抽样转储信息采集完毕之后,在步骤717,GPS接收机返回低功率状态;这一般包括降低变频器42和转换器44的功率,同时将存储器46保持在全功率。然后在步骤719,处理系统返回到全功率;在一个实施例中,这要包括给DSP芯片32全功率;但是应该理解的是如果DSP芯片32也提供电源管理功能,如图1C所示的实施例情况,那么DSP芯片32一般要在步骤707返回全功率。在图1A所示的实施例中,微处理器26进行电源管理功能,该处理系统,例如DSP芯片32可以在步骤719返回全功率。在步骤721,GPS信号根据本发明的方法处理,例如图3所示。然后,在GPS信号的处量完毕之后,该处理系统被置于低功率状态,如步骤23所示(除非该处理系统也为如上所示的控制电源管理)。然后,在步骤725,调制解调器22中的通信发射机返回全功率以便在步骤727将处理的GPS信号发回基站10。在处理的GPS信号一一例如伪距离信息或纠度和经度信息-发送完之后,在729,通信发射机返回低功率状态,而且在步骤731电源管理系统等待一段时间的延迟,例如一段预定的时间。这段延迟之后,调制解调器22中的通信接收机返回全功率以便确定是否有从基站发送的请求。 尽管本发明的方法和装置已经参考GPS卫星进行了描述,但是应该理解该概念可以同等地应用于使用伪星或卫星和伪星结合的定位系统。伪星是地基发射机,它广播调制在L波段载波信号上的PN码(类似于GPS信号)。一般同步于GPS时间。每个发射机可以指定一个唯一的PN码,以便使远端接收机能够识别。伪星在不能提供来自轨道卫星的GPS信号的情况下很有用,例如隧道、矿井、建筑物或其它封闭区域。这里使用的术语“卫星”意图包括伪星或伪星的等同物,而且这里使用的术语GPS信号意图包括来自伪星或伪星等同物的GPS类型的信号。 在前面的讨论中,发明参考全美全球定位卫星(GPS)系统方面的应用来描述。但是,显然这些方法可以同等地用于类似的卫星定位系统,而且特别是Russian Glonass系统。Glonass系统与GPS系统的主要区别是不同卫星的发射是通过使用略微不同的载波频率,而不是使用不同的伪随机码来彼此区别的。在这种情况下,实际上前面描述的所有电路和算法都可以使用,除了当处理新的卫星发射时使用不同的指数因子来预处理数据。这个运算可以与图3中方框108中的多普勒校正运算结合,而不需要任何附加的处理运算。在这种情况下只需要一个PN码,因此去掉模块106。这里使用的术语“GPS”包括这些其它的卫星定位系统,包括RussianGlonass系统。 尽管图1A、1B和1C表示了处理数字信号的多个逻辑模块(例如图1A中的46、32、34、36、30、28),但是应该理解的是这些模块中的一些或全部是集成在一个单片集成电路上的,同时还保持了这种电路的DSP部分的可编程性。这样一种实现可能对于低功率和成本敏感的应用很重要。 应该理解的是图3中的一个或几个运算可以由硬件逻辑完成,以便增加整体的处理速度,同时保持DSP处理器的可编程性。例如,模块108的多普勒校正功能可以由专用硬件完成,放置在数字抽样转储存储器46和DSP IC 32之间。在这种情况下,图3中的所有其它软件功能可以由DSP处理器来实现。而且,几个DSP可以一起在一个远端单元中使用,提供更高的处理能力。也会理解的是可以采集(抽样)多组GPS数据信号帧并如图3所示处理每一组,同时考到每组帧采集之间的时间。 已经建立了一个演示系统,作为本发明实施例的一个例子,验证这里描述的方法和算法中的运算,并且显示了使用这些方法和算法可能带来的灵敏度的改善。该演示系统包括GEC Plessey Semiconductors的GPS天线和RF下变频器,后面跟一个Gage Applied Sciences Inc.的数字化缓存板。天线和下变频器执行图1A的功能38、40、42和44,数字化缓存执行图1A的功能44、46和48。在IBM PC兼容机上使用运行在Window 95操作系统下的Pentium微处理器执行数字信号处理。这样仿真DSP芯片32和存储器外围器件34的功能。来自视野中卫星的多普勒信息作为信号处理程序的输入提供给信号处理软件,用以仿真调制解调器和微处理器22、24、25、26的功能。 这个演示系统的算法使MAYLAB编程语言开发。在各种阻塞情况下得到的真实GPS信号上进行了大量测试。这些测试已经验证该演示系统的灵敏度性能实际上超过了几种同时测试的商用GPS接收机。附录A提供了这些测试中使用的MATLAB机器码的详细清单并且作为本发明的快速卷积运算的一个例子(例如图4)。 在前面说明中,发明已经参考其特定示范实施例进行了描述。但是,显然的是可以在不背离所附权利要求中提出的发明更宽泛的精神和范围的情况下,对此进行各种修正和变更。因此该说明和附图被认为是说明性的而不是限制意义的。 附录A function{sv ,prange,snrin,snrout,svdoppler,outdata}= gps(filename,srate,codes,doppler,no_pred ,samplerange) % %function %{sv,prange,snrin,snrout,svdoppler,outdata }=gps(filename,srate,codes,doppler, %no_pred,samplerange) % %N.Krasner Feb.20,1996. %OPrecision Tracking,Inc.,San Jose,CA.95117 % %这个函数处理数字化数据并提供伪范围以及其它统计量作为输出,如下所述. % % %要处理的数据存贮在名为“filename”的文件中. % %这个函数工作在来自Gage数字化器的数据上,以3×2.048MHz(如果srate=0)的抽样率或以6×2.048MHz(如 %果srate=1)的抽样率. % %这里假设IF是35.42-(1400/45)=4.308889MHz.以下是程序输入和输出的定义: % %码是SV数;如果codes=0,那么使用所有的码. % %Doppler={dopper(1)doppler(2)...doppler(n)span},规定几个卫星中每个的平均多普 %勒加上搜索范围.如果没有span或=0那么搜索只在规定多普勒上进行. % %使用一个算法选择多普勒量化阶梯. %在某些情况下即使span非0,每个卫星将只使用一个多普勒频率. s搜索范围是相对于每个多普勒的范围. % %no_pred是预检测帧数. % %如果删除samplerange,就处理文件中所有数据. %但是如果出现有两个值并有如下表示: %samplerange={lower index,upper index}; %如果这些索引不在gage文件提供的范围内,那么就提供一条出错信息. % % %缺省是:如果多普勒只有一个值,那么doppler_span为0 % 如果未规定no_postd,使用所有数据. % 如果no_pred未规定,那么pred设为9. % 如果规定了no_pred,那么no_postd必须规定. % %输出是码号,伪范围,snrs和最佳多普勒. %伪范围以纳秒表示,snrs以dB表示. %检测的信号峰值必须超过15dB门限. %使用插值算法确定信号峰值位置. %如果没有找到码,返回的函数将是全0. % %输出数据是大小为2048的矢量,代表对每个检测的卫星交通工具进行后检测积分后的输出信号加上 %噪声,针对最佳的多普勒.这个数据用于找到伪范围. % %%%%%------------------------------------------------------------%%%% %首先打开文件,然后找到处理的buffersize和indices.如果没有在输入变量中规定就是所有数据. {filevals,rate}=gageopen(filename); buffsize=filevals(3); %文件中总抽样数 if nargin==6, lower_index=samplerange(1);upper_index=samplerange(2); if upper_index>buffsize-1, error(′Samplerange is out of bounds′); end else, lower_index=0;upper_index=buffsize-1; end %%%%------------------------------------------------------------------%%% %现在找多普勒的频点号;这些频点的中心称为dopps,参考于输入多普勒的中心. % if length(doppler)==length(codes),span==0; elseif length(doppler)==length(codes)+1, span=doppler(length(codes)+1); else, error(′Length of doppler vector must equal length of codes,or l more′); end if opan<0,error (′Span must be greater than zero′);end if srate==0,s_per_frame=6;else,s_per_freme=12;end if nargin==3,no_pred=min(9,fix(buffsize/(1024*s_per_freme)));end no_postd=fix(buffaize/(no_pred*1024*s_per_frame)); if no_pred<1,error{′Number of predetection frames muot be at least 1′};end if no_postd<1,error{′Number of postdetection fremes must be at least 1′};end deltaf=(1/3)*1000/no_pred; %得到大约1.5dB损失,最差情况是当真实频率处于频点中央时由 %两次独立检测产生. % if span<deltaf, dopps=0; %不必量化多普勒. else, dopps={0:-deltaf:-span }; dopps=sort({dopps deltaf:deltaf:span}); end %%%---------------------------------------------------------------%%% %现在得到码的FFT并以大为长度(码)×2048的矩阵放置它们. if codes==0,codes=1:28;end %搜索在这种情况下的所有码 codearray=zeros{length(codes),2048}; for k=1:l ength(codes), codearray(k,:)=gps_resampled(codes(k)); end %%%---------------------------------------------------------------%%% %在下面,以等于PN帧数的块输入数据,PN帧数等于no_pred.例如,如果no_pred=7,那么来自gage %的抽样数是2048×3×7=43008,这样在这种情况下整个4M字节采集重复大约93次.每次重复进行pred %求和、互相关、幅度平方运算以及与前块的求和,对于所有的多普勒和所有规定的卫星交通工具进行. blocksize=1024*s_per_frame*no_pred; start=lower_index-blocksize; lc=length(codes);1d=length(dopps); prdata=zeros(1c*1d,2048); no_blocks=fix((buffsize-10*s_per_frame)/blocksize); %超过60或120 samples %对重迭存储允许冲激响应到60或122;见if %_2_base m-file for n=1:no_t%,cks, start=start+blocksize; {data,count}=gageread(filevals,start,blocksize+10*s_per_frame); data=if_2_base(data,srate); %将数据转换到基带并抽取到2.048MHz. data=data(21:20+2048*no_pred); %抑制边缘效应数据(重迭存贮) for k=1:1c, %在SV上重复 ref=codearray(k,:); %用于SV码(k)的码 for d=1:1d, %在多普勒上重复 df=doppler(k)+dopps(d); rdata=data.*exp(-j*2*pi*df*(0:2048*no_pred-1)/2.048e6); rdata=sum(reshape(rdata,2048,no_pred)′); %进行pred求和 rdata=fft(rdata).*ref; %进行匹配滤波 %补偿每块的时间跳跃,fdopp/fo倍的时间,表示fdopp/fo是每秒的多普勒时 %间跳跃. timeslip=1e-3*no_pred*df/1575.42e6; phase=exp(-j*2*pi*timeslip*(n-1)*(0:1024)*1e3); rdata(1:1025)=rdata(1:1025).*phase; rdata(1025:2048)=rdata(1026:2048).*conj(phase(1024:-1:2)); rdata=ifft(rdata); rdata=real(rdate).^2+imag(rdata).^2; %幅度 prdata((k-1)*1d+d,:)=prdata((k-1)*1d+d,:)+rdata; end end end %%%---------------------------------------------------------------%%% sv=[];,prange=();,snrin=();snrout=();svdopper=();outdata=(); %现在找超过门限的峰值. for k=1:1c, %看所有的SV和dopps. zrprdata((k-1)*1d+(1:1d ),:); %SV#k和所有多普勒的数据矩阵. z=z-mean(mean(z)); noise=sqrt(mean(mean(z.^2))); %粗糙噪声rms threshold=5.7*noise; %使用所有28sv′s和每SV10个多普勒得到少于1e-4的Pfa indt=find(z<threshold); noise=sqrt(mean(mean(z(indt).^2))); %精确除去信号的噪声 d=z+0.2*max(mrotate (z,-1),mrotate(z,1)); %检测stat,去掉篱笆墙问题. % {maxd,indd}=max(d′);%找到每个多普勒的最大值和位置. {maxsv,indsv}=max(maxd); %对这个SV找全局峰值 if maxsv>threshold, %然后检测这个SV r=(maxsv/noise)^2; %峰值对离开峰值的噪声 snin=sqrt(r/(no_pred^2^no_postd));%通过N.K分析的snrin snrin={snrin 10*log10(snin)}; %现在在峰值找snrout snout==(no_pred^2*no_postd)*snin^2/(1+2*no_pred*snin);%通过N.K anal snrout={snrout 10*log10(snout)}; sv={sv codes(k)}; d=z(indsv,:);%最佳多普勒的数据 outdata=(outdata d); svdoppler=(svdoppler doppler(k)+dopps(indsv));%最佳多普勒 ind0=indd(indsv);%对最佳的最佳抽样 inds0=(ind0-4:ind0+4);%关于indo的9个数据抽样的块 nind s=find(inds0<=0); pinds=find(inds0>2048); if length(ninds)>0,%保持数据在范围内插值 inds0(ninds)=inda0(ninds)+2048; elseif length(pinds)>0, inds0(pinds)=inds0(pinds)-2048; end dint=interp(d(inds0),10);%到速率20MHz dint=interp(dint,10); %到速率200MHz dint=interp(dint,5); %到速率1GHz {emax,imax}=max(dint); %找最大 indmax=min(find(dint>0.8*emax)); %80%以上的最大 tmax=ind0+(indmax-2001)/500; %以抽样为单位的伪范围 if tmax>=2048, tmax=tmax-2048; elseif tmax<0, tmax=tmax+2048; end tmax==ax-500;%以纳秒为单位的伪范围 prange={prange tmax }; end end if length(sv)==0,%没有检测 sv=0;prenge=0;srrin=0;sarout=0;svdoppler=0;outdata=0; end fclose(′all′); functiony=gpscodes(num) %y=gpscodes(num) % %N,Krasner Jan.22,1996. %OPretision Tracking,Inc.,San Jose,CA.95117 % %在大小为37×1023的数组y中返回与卫星有关的全部1023比特码. %每行是与具有相应ID号的卫星相关的码. %行1是卫星1的PN(Gold)码,依次类推. % % %如果指定了号,那么只返回带该号码的码. %returned y1=pngen{(3,10),1023,ones(1,10)}; y2=pngen((2,3,6,8,9,10),1023,ones(1,10)); delays={5,67,8,17,19,139,140,141,251,252,254,255,255,257,253}; delays={delays,469,470,471,472,473,474,509 512,513,514,515,516}; %elays={delays,859 860 861 862 863 950 947 948 950}; if nargin==0, for k=1:length(delays), y(k,:)=xor(y1,rotate(y2,delays(k))); end else, y=xor(y1,rotate(y2,delays(num))); end function r-gps_rsmp(codcnumber) % %N.Krasner Feb.16,1996. %OPrecision Tracking,Inc.,San Jose,CA.95117 % %返回指定的1023比特GPS码的重抽样的傅立叶变换,重抽样为2048KHz %速率,以″sinc″函数加权.仿真包含一组方形脉冲的序列的变换 %被理想地低通滤波到第1零点(=1023kHz) % %如果codenumber为0,所有gps码在大小为37×2048的数组中返回. % %变换的数据包括实部和虚部,是在范围(-7,7)内的4比特有符号整数. %这是存贮在EPROM中的形式.这种量化使所有的存贮是最小化, %但是产生了不可忽略的性能损失. % %在函数gpscodes中,返回值包含37行,每个对应于相应的GPS码(行1包含码1, %等等),如果所有码都被语法2了.每行长度为2048,如上所述,包括一个复数, %其成份为范围(-15,15)内的一个整数. % %注意这个函数调用函数gpscodes, %产生不同的Gold码 if codenumber==0, y=gpscodes; else, y=gpscodes(codenumber); end %返回数组37×1023的GPS码 y=2*y-1; %变换到=1 if codenumber==0, z=zeroo(37,2048); for k=1:37, fyl=fft(stretch(y(k,:),2)); fyll=(fyl(1:1024).*sinc({0:1023}/1023)00); fyll=(fyll fyi(1025:2045).*sinc((1022:-1:1)/1023)); z(k,:)=conj(fyll);%需要匹配滤波器的共轭 end else, fyl=fft(stretch(y,2)); fyll=(fyl(1:1024).*sinc((0:1023)/1023)00); fyll=(fyll fyl(1025:2046).*sinc((1022:-1:1)/1023)); z=conj(fyll); %需要匹配滤波器的共轭 end end z=round(z/20);%因为最大为171.9,但是很少值大于140 rz=min(real(z),7);rz=max(rz,-7);%限制范围 iz=min(imag(z),7);iz=max(iz,-7);%限制范围 z=rz+j*iz; function data_out=if_2_base(data_in,rate) %data_out=if_2_base(data_in) % %N.Krasner Feb.20,1996. %OPrecision Tracking,Inc.,San Jose,CA.95117 % % %如果没有rate或等于0,那么输入rate假设为3×2048kHz, %如果rate等于1,那么为6×2048kHz. % %来自GAGE数字化器的数据,以3×2048kHz或6×2048kHz抽样, %中频为6.144MHz,中心在35.42-(1400/45)=4.308889MHz, %将其转换为复(I.Q)数据流,速率为2.048MHz,中心在0频 %(标称的).这个程序不补偿SV的任何多普勒移,或任何L0漂 %移,注意数据输出长度是1/3或2/3的输入长. % % if nargin==1,rate=0;end ifreg=35.42-(1400/45); %以MHz为单位 if rate==0, %抽样率为3×2048kHz的情况 srate=3*2.048;%以MHz为单位 %GAGE的抽样率 (u,v)=size(data_in);if u>v;data_in=data_in′;end;ld=length(data_in); c=exp(-j*2*pi*{0:ld-1}*ifreg/srate);%LO data_out=data_in.*c;clear data_in c %转换到0 h=firl(50,.9/3.072); data_out=filter(h,l,data_out); %滤波到=1MHz data_out=data_out(1:3:ld); %抽取,得到2.048MHz的波特率 else, %抽样率为6×2048kHz的情况 srate=6*2.048; %以MHz为单位 (u,vl=size(date_in);if u>v;data_in=data_in′{end;ld=length(data_in); c=exp(-j*2*pi*(0:1d-1)*ifreg/srate); %LO data_out=data_in.*c;clear data_in c %转换到0 h=firl(100,.9/5.144); data_out=filter(h,1,data_out); %滤波到=1MHz data_out=data_out(1:5:1d); %抽取,得到2.048MHz的波特率 end function y=mrotate(r,m) %y=mrotate(x,m);矩阵旋转m个单位 % %N.Krasner Feb.20,1996. %OPrecision Tracking,Inc.,San Jose,CA.95117 m=round(m); m=rem(m,1x); if m>0, y=(x(:,1x-m+1:1x)x(:,1:1x-m)); elseif m<0, y=(x(:,1-m:1x)x(:,1:-m)); else, y=x; end function y=pngen(taps,npts ,fill) %pngen(taps,npts,fill) % %N.Krasner Feb.13,1995. %ONorman.F.Krasner,san Carlos,CA.94070 % %PNGEN产生伪范围序列的″npts″点数以长度为n的移位寄存器定义,带反馈抽头. taps % ″taps″和初始填充的″fill″,PN(npts,taps, fill)returns a % 返回包括这个序列的长度npts的矢量 % 典型例子(1,6,8,14)for R14,fill={1 zeros(1,13)} % %如果在″taps″中只给一个数,理解为用十进制值表示抽头. Por %例如,一个码2767(十进制)=010 111 110 111. %这种情况=反馈抽头通过去掉第一个 %选择其余的找到,以得到位置. %此时,抽头为2 3 4 5 6 8 9 10 if length(tapa)==1, taps=sprintf(′%.0f′,taps);ntaps=(); if taps(1)==′1′,ntaps=(1); elseif taps(1)==′2′,ntaps=(10); elseif taps(1)==′3′,ntaps=(11); elseif taps(1)==′4′,ntaps=(100); elseif taps(1)==′5′,ntaps=(101); elseif taps(1)==′6′,ntaps=(110); elseif taps(1)==′7′,ntaps=(111); end for k=2:length(taps) if taps(k)==′0′,ntaps={ntaps 0 0 0}; elseif taps(k)==′1′,ntaps={ntaps 0 0 1}; elseif taps(k)==′2′,ntaps={ntaps 0 1 0); elseif taps(k)==′3′,ntaps={ntaps 0 1 1}; elseif taps(k)==′4′,ntaps={ntaps 1 0 0}; elseif taps(k)==′5′,ntaps={ntaps 1 0 1}; elseif taps(k)==′6′,ntaps={ntaps 1 1 0}; elseif taps(k)==′7′,ntaps={ntaps 1 1 1}; end end ntaps(1)=(); taps=find(ntaps); end n=max(taps); if nargin<=2,fill={1 zeros(1,n-1)};end if nargin==1,npts=(2^n)-1;end y=zeros(1,npts); x=zeros(1,n); x=fill(length(fill):-1:1); for i=1:npts y(i)=x(n); x=(rem(sum(x(taps)),2),x(1:n-1)); end function{file_vals,sample_rate}=gageopen(fllename) %读gpge格式文件以特定抽样数 % funnctiop{file_vals,sample_rate)=gageopen(filename) % %B.Wilson Jan.|I3,1996. %OPrecision Tracking,Inc.,San Jose,CA.95117 file_vals(1)=fopen(filename,′r′); {sample_rate,sample_depth,head_vals ,operation_mode)= rdgghead(file_vls(1)); file_vals(2)=operation_mode; file_vals(3)=sample_depth; file_vals(4:6)=head_vals(1:3) function(buf,count)=gageread(file_vala,otart,numsanples) %读gpge格式文件以特定抽样数 % function{buf,count}=gagcread(file_vals,start,nemsemples) %B.Wilson Jan.13,1996. %OPrecision Tracking,Inc.,San Jose,CA.95117 %fiies_vals % 1-file id % 2-operation_mode-if=1;文件是存贮器映射交叉存取 semple_depth long;=2 memory image % 3-sample_depth % ns2=numsamples/2; fid=file_vals(1); if(file_vals(2)==2) buf=zeros(numsemples,1); fresult=fseek(fid,512+start,-1);%文件数据部份的请求点 (buf,count)=fread(fid,numsamples,′uchar′); else buf=zeros(ns2,2); fresult=fseek(fid,512+(start/2),-1);%文件数据部份的请求点 (buf(:,1),cl)=fread(fid,ns2,′uchar′); fresult=fseek(fid,512+(start/2)+file_vals(3),-1);%移动到 BANK B,portion of memory image (buf(:,2),c2)=fread(fid,ns2,′uchar′); count=c1+c2; buf=reshape(buf′,numsamples,1); end % buf=buf-128; funetioo{sample_rate,sample_depth,bead_vala,operatioo_mode }- rdgghead(fid) %读gage格式头 %B.Wilson Jan.13,1996. %OPrecision Tr-acking,Inc.,San Jose,CA.95117 % % % %sample_rate= {1,2,5,10,20,50,100,200,500,1000,2000,5000,10000,20000,50000}; sample_rate_table= {1,2,4,5,10,12.5,20,25,30,40,50,60,100,120,125,150,200,250}; % fresult=fseek(fid,0,-1);%重定位文件 % tmp=fread(fid,14,′char′); s=setstr(tmp′); % fresult=fseek(fid,16,-1);%移到名字变量 tmp=fread(fid,9,′char′); sname=setstr(tmp′); % fresult=fseek(fid,287,-1);%移动抽样率表索引 veriable semplc_rate_index=fread(fid,1,′int16′); ′if(sample_rate_index==42)% %42是″外部的″. sample_rate=-1; elae sample_rate=sample_rotc_tabie(sample_rete_index-17); end % fresult=fseek(fid,289,-1);%move to index to operationmode vcrieblc ooeration_mode=fread(fid,i,′inti 6′) %% if(operation_mode==1) %% sample_rate=semple_rete/2; %%end % fresult=fseek(fid,301,-1);%移动sample_depth变量 sample_depth=fread(fid,1,′int32′) if(operation_mode==1) sampie_depth=sample_depth/2%对我来说象一个″bug″(错误) if(sample_depth==4194304) sample_depth=semple_depth/2 end end; % fresult=fseek(fid,313,-1);%移到starting_address bead_vais=fread(fid,3,′int32′); % fresult=fseek(fid,339,-1);%移到sample_depth变量 resolution_12_bits=fread(fid,1,′int16′); % fresult=fseek(fid,345,-1);%移到sample_depth变量 sample_offset=fread(fid,1,′int16′); % fresult=fseek(fid,349,-1);%移到sample_depth变量 sample_bits=fread(fid,1,′int16′); funetion y=rotate(x,q) %y=rotate(x,q) %矢量旋转q个位置 %11.Krasner Nov.28,1995. %ONorman Krasner,San Carlos,CA.94070 %如果删除q,将矢量的第一半和后一半互换来旋转该矢量, %如果矢量长度是奇数,中点放在新矢量的开始. % %If g is presentand>0this rotates the vector x right by q positions; e.g. %if_x=(1 1 0 1 0),then rotate(x,2)yields y=(1 0 1 1 0).If q is<0 %向左旋转X (m,n)=gize(x);mn=max(m,n); if nargit>1,q=rem(q,mn);end if m>1 % n>1,error(′This function works only for vectors,not matrices.′);end if m>1,x=x′;end if nargin==1, if rem(mn,2)==0, pivot=1+mn/2; else pivot=(mn+1)/2; end y={x(pivot:mn)x(1:pivot-1)}; elscif abs(q)>0, if q<0,q=q+mn;end %为左移固定 y=(x(mn-q+1:mn)x(1:mn-q)); else y=x; end end if m>1,y=y′;end function r=sinc(r) %z=sinc(x) %N.Krasner April 21,1991 %ONorman Krasner,San Carlos,CA.94070 % %定义:这里X是一个矢量/矩阵 %sinc(x)=1 if x=0 ind1=find(x==0); ind2=find(x-=0); z=x; x(ind1)=ones(1,length(ind1)); x(ind2)=sin(pi*x(ind2))./(pi*x(ind2)); z(:)=x; function r=stretch(signal,period) %function z=stretch(signal,period) % %N.Krasner March 12,1995 %ONorman Krasner,San Carlos,CA.94070 %这个函数通过替换每个元素为m相同的元素未扩展一个信号, %m由″period周期″限定 (u,v)=size(signal); if u>1 s v>1 error(′This function works only forvector inputs.′);end if u>1,signal=signal′;end a=ones(period,1)*signal; z=a(:)′;z=conj(z); if u>1,z=conj(z′);end function y=xor(a,b); %function y=xor(a,b); %逐项将两个矢量异或. %N.Krasner June 13,1994 %ONorman Krasner,San Carlos,CA.94070 y=(as-b)||(bs-n); 发明背景有关申请 这个申请涉及同一发明者在与这个申请同一天提交的两个专利申请;这两个申请是:An Improved GPS Receiver Utilizing a CommunicationLink(Serial No.08/612,582,1996年3月8日提交);An Improved GPSReceiver Having Power Management(Serial No.08/613,966,1996年3月8日提交)。 这个申请也涉及并藉此要求同一发明者Norman F.Krasner的监时专利申请的提交日期的权益,该申请题为Low Power,SensitivePseudorange Mesaurement Apparaatus and Method for Global PositioningSatellites Systems,Serial No.60/005,328,1995年10月9日提交。 这个专利文件揭示的一部分包括受到版权保护的材料。版权所有者不希望任何人传真复制该专利文件或专利揭示在专利及商标局专利文件或记录中出现的形式,而是保留其全部版权。 |