处理GPS信号的GPS接收机及方法

申请号 CN200710085825.8 申请日 1996-10-08 公开(公告)号 CN101093254A 公开(公告)日 2007-12-26
申请人 快速追踪有限公司; 发明人 N·F·克拉斯内尔;
摘要 一个 实施例 中的GPS接收机包括从 视野 中的卫星接收RF 频率 的GPS 信号 的天线;与天线连接的下 变频器 ,将接收GPS信号的RF频率降到中频(IF);与下变频器相连的数字化转换器,以预定速率对IF GPS信号抽样,产生抽样的IF GPS信号;与数字化转换器相边听 存储器 ,存储抽样的IF GPS信号(GPS信号的抽样转储);以及与存储器相连的 数字信号 处理器(DSP),按照存储的指令操作,藉此在抽样IF GPS信号上执行快速 傅立叶变换 (FFT)运算,提供伪距离信息。这些运算一般也包括GPS信号的预处理和后处理。在数据抽样转储完成之后,接收机前端掉电。在一个实施例中的GPS接收机也包括其它电源管理特性,并且在另一个实施例中也包括在它的 本振 中纠正错误的勇 力 ,用于对GPS信号抽样。伪距离的计算速度、以及运算的灵敏度通过视野中卫星的多普勒频移从一个外部源—诸如本 发明 的一个实施例中的基站—到该接收机的转移来增强。
权利要求

1.在确定远端单元位置的方法中,一种处理包括:
在所述远端单元接收来自蜂窝通信系统中的传输网孔的所述远 端单元视野中卫星的多普勒信息;以及
在所述远端单元中通过使用所述多普勒信息计算所述卫星的位 置信息,而无需接收及使用卫星星历信息。
2.根据权利要求1的处理,还包括:
从基站到所述远端单元发射所述卫星的所述多普勒信息。
3.根据权利要求2的处理,其特征在于所述多普勒信息在所述 基站从GPS接收机得到。
4.根据权利要求2的处理,其特征在于所述位置信息包括到所 述远端单元视野中的多个卫星、包括所述的卫星的伪距离。
5.根据权利要求4的处理,还包括:
从所述远端单元到所述基站发射所述伪距离,而且所述基站计 算表示所述远端单元位置的纬度和经度。
6.根据权利要求1的方法,其特征在于处理单元利用所述多普 勒信息以补偿来自所述卫星的GPS信号的多普勒频移。
7.根据权利要求1的方法,其特征在于所述远端单元未使用卫 星星历信息以确定所述位置信息。
8.根据权利要求1的方法,其特征在于所述远端单元未接收卫 星星历信息以确定所述多普勒信息。
9.根据权利要求1的方法,其特征在于所述远端单元未解调 含有卫星星历信息的信号以确定所述多普勒信息。
10.使用表示GPS信号的数据提供所述远端单元位置的移动单 元,所述移动单元包括:
在所述移动单元中的接收机,所述接收机用于通过传送网孔中 的一条蜂窝通信链路连接以便接收所述移动单元视野中卫星的多普 勒信息;
在所述移动单元中的处理单元,所述处理单元连接到所述接收 机,以便接收所述多普勒信息,并通过使用所述多普勒信息计算所 述卫星的位置信息,而无需接收及使用卫星星历信息。
11.根据权利要求10的移动单元,其特征在于所述处理单元使 用所述多普勒信息补偿来自所述卫星的GPS信号的多普勒频移。
12.根据权利要求11的移动单元,其特征在于所述通信链路包 括射频通信介质。
13.根据权利要求11的移动单元,还包括:
连接到所述处理单元的发射机,所述发射机发射所述位置信息。
14.根据权利要求13的移动单元,其特征在于所述位置信息包括 到所述移动单元视野中多个卫星的伪距离。
15.根据权利要求11的移动单元,其特征在于所述处理单元包括 数字信号处理集成电路(DSP),而且所述DSP使用快速卷积算法处理所 述GPS信号和所述多普勒信息。
16.根据权利要求15的移动单元,还包括:
连接到所述处理单元的发射机,所述发射机发射所述位置信息。
17.使用基站提供到移动GPS单元的一条通信链路的方法,所 述方法包括:
确定所述移动GPS单元视野中卫星的多普勒信息,其中所述移 动GPS单元使用所述多普勒信息确定所述卫星的位置信息;
从蜂窝通信系统中的传送网孔发射所述视野中卫星的所述多普 勒信息给所述移动GPS单元,而且所述移动GPS单元无需接收及使 用卫星星历信息而确定所述位置信息。
18.根据权利要求17的方法,其特征在于所述多普勒信息代表 从所述卫星到所述基站的GPS信号的多普勒频移。
19.根据权利要求18的方法,其特征在于所述多普勒信息近似 地代表从所述卫星到所述移动GPS单元的GPS信号的多普勒频移。
20.根据权利要求17的方法,其特征在于所述多普勒信息在所 述基站中从GPS接收机得到,而且所述多普勒信息代表从所述卫星 到所述基站的GPS信号的多普勒频移。
21.根据权利要求20的方法,其特征在于所述多普勒信息近似 地代表从所述卫星到所述移动GPS单元的GPS信号的多普勒频移。
22.根据权利要求21的方法,还包括:
从所述移动GPS单元接收位置信息,所述位置信息在所述基站 接收,使得所述基站可以得到表示所述移动GPS单元位置的纬度和 经度。
23.根据权利要求22的方法,其特征在于所述位置信息包括到 所述移动GPS单元视野中的多个卫星、包括所述的卫星的伪距离, 而且所述基站从所述伪距离计算所述纬度和经度。
24.根据权利要求22的方法,其特征在于所述位置信息包括所 述纬度和经度。
25.根据权利要求17的方法,其特征在于所述基站未发射可以 提取卫星位置信息的卫星数据消息。
26.提供到移动GPS单元的蜂窝通信链路的基站,所述基站包括:
所述移动GPS单元视野中卫星的多普勒信息的源;以及
连接到所述多普勒信息的所述源的发射机,所述发射机通过发送 网孔中所述蜂窝通信链路向所述移动GPS单元发射所述多普勒信息, 其中所述移动GPS单元无需接收及使用卫星星历信息而确定位置信息。
27.根据权利要求26的基站,其特征在于所述多普勒信息的所述 源是连接到所述基站的存储单元,所述存储单元存储预先计算的所述 卫星的近似多普勒信息。
28.根据权利要求27的基站,还包括:
从所述移动GPS单元接收位置信息的接收机;以及
连接到所述接收机的处理器。
29.根据权利要求26的基站,其特征在于所述多普勒信息表示从 所述卫星到所述基站的GPS信号的多普勒频移。
30.根据权利要求29的基站,其特征在于所述多普勒信息近似地 表示从所述卫星到所述移动GPS单元的GPS信号的多普勒频移。
31.根据权利要求26的基站,其特征在于所述多普勒信息从所述 基站的包括GPS接收机的所述源得到,而且所述多普勒信息表示从所 述卫星到所述基站的GPS信号的多普勒频移。
32.根据权利要求31的基站,其特征在于所述多普勒信息近似地 表示从所述卫星到所述移动GPS单元的GPS信号的多普勒频移。
33.根据权利要求28的基站,其特征在于所述位置信息在所述基 站接收,使得所述基站得到表示所述移动GPS单元位置的纬度和经度。
34.根据权利要求33的基站,其特征在于所述位置信息包括到所 述移动GPS单元视野内多个卫星、包括所述的卫星的伪距离,而且所 述基站的所述处理器从所述伪距离中计算所述纬度和经度。
35.根据权利要求29的基站,其特征在于所述基站和所述移动GPS 单元彼此相距大约150公里以内。
36.一种确定远端单元位置的方法,包括如下步骤:
从基站通过一条蜂窝链路向远端单元经蜂窝通信系统中的发送网 孔发射包括多普勒信息在内的GPS卫星信息;
在所述远端单元接收所述卫星信息并从视野中卫星接收GPS信 号;
在远端单元中利用所述多普勒信息计算到所述的视野中卫星的伪 距离,其中所述远端单元无需接收及使用卫星星历信息而确定所述伪 距离;
从所述远端单元通过所述蜂窝数据链路向所述基站发射所述伪距 离;并
在所述基站,使用所述伪距离计算所述远端单元的位置。
37.一种GPS接收机的电源管理方法,所述方法包括如下步骤:
在所述GPS接收机接收来自视野中卫星的GPS信号,而且接收 所述GPS信号时所述GPS接收机的GPS接收部分以第一速率消耗功 率;
将所述GPS信号数字化,以便给出所述GPS信号的数字表示;
在数字存储器中缓存所述GPS信号的所述数字表示;
在缓存所述数字表示之后,降低所述GPS接收机的所述GPS接 收部分所消耗的功率为小于所述第一速率的第二速率,其中所述GPS 接收部分将GPS射频信号下变频到中频;
通过检索所述数字存储器中的所述数字表示处理所述数字表示 并处理所述数字表示以给出至少一个伪距离信息,所述处理是在所 述降低功率之后被执行,所述处理包括对缓存于存储器中的所述GPS 信号的所述数字表示的一个快速卷积运算;
其中,缓存于所述存储器中的所述GPS信号的所述数字表示的 数量可以改变以便牺牲灵敏度而换取功耗的降低。
38.根据权利要求37的方法,其特征在于可以缓存较少的所述 GPS信号的所述数字表示以便节省更多的功率。
39.一种GPS接收机的电源管理方法,所述方法包括如下步骤:
在所述GPS接收机接收来自视野中卫星的GPS信号,而且接收 所述GPS信号时所述GPS接收机的GPS接收部分以第一速率消耗功 率;
将所述GPS信号数字化,以便给出所述GPS信号的数字表示;
在数字存储器中缓存所述GPS信号的所述数字表示;
在缓存所述数字表示之后,降低所述GPS接收机的所述GPS接 收部分所消耗的功率为小于所述第一速率的第二速率,其中所述GPS 接收部分将GPS射频信号下变频到中频;
通过检索所述数字存储器中的所述数字表示处理所述数字表示 并处理所述数字表示以给出至少一个伪距离信息,所述处理是在所 述降低功率之后被执行,所述处理包括对缓存于存储器中的所述GPS 信号的所述数字表示的一个快速卷积运算;并且
在所述GPS接收机接收从所述GPS接收机的度而言卫星的多 普勒信息,
其中,缓存于所述数字存储器中的所述GPS信号的数量可以改 变以便牺牲灵敏度而换取功耗的降低。
40.根据权利要求39的方法,其特征在于可以缓存较少的所述 GPS信号的所述数字表示以便节省更多的功率。
41.一个具有降低功率状态的GPS移动单元,所述GPS移动单 元包括:
从视野中卫星接收GPS信号的接收机;
连接到所述接收机存储所述GPS信号的数字表示的存储器;
连接到所述存储器的处理器,所述处理器处理所述GPS信号的 所述数字表示,以便根据所述数字表示提供至少一个伪距离信息;
连接到所述接收机的GPS接收部分的电源管理电路,所述电源 管理电路降低所述GPS移动单元的所述接收机的所述GPS接收部分 所消耗的功率,所述功耗是从接收所述GPS信号时所用的第一速率 去到存储所述数字表示之后所用的第二速率,其中,所述GPS接收 部分将GPS射频信号下变频到中频信号,而且所述电源管理电路增 加所述处理器所耗的功率,使其从接收所述GPS信号时所用的第三 速率去到所述数字表示存储于所述存储器中之后所用的第四速率, 从而处理所述GPS信号。
42.根据权利要求41的GPS移动单元,还包括连接到所述电源 管理电路的通信接收机和通信发射机。
43.根据权利要求41的GPS移动单元,其特征在于所述电源管 理电路降低所述处理器消耗的功率。
44.根据权利要求42的GPS移动单元,其特征在于在所述GPS 移动单元置于低功率状态之后,在从所述通信接收机接收到一个信 号之后,所述电源管理电路将所述GPS移动单元返回到增加的功率 消耗状态。
45.根据权利要求41的GPS移动单元,还包括一个电池和一个 太阳能电池以及一个连接到所述电池和所述太阳能电池和所述电源 管理电路的电源管理器,所述太阳能电池对所述电池充电。
46.根据权利要求41的GPS移动单元,还包括:
连接到所述接收机和所述电源管理电路的第一受控电源互连;
连接到所述存储器和所述电源管理电路的第二受控是源互连, 其中所述电源管理电路通过控制经由所述第一受控电源互连提供给 所述接收机的功率、以及通过控制经由所述第二受控电源互连提供 给所述存储器的功率,来降低功率。
47.根据权利要求41的GPS移动单元,其特征在于所述电源管 理电路包括一个微处理器和多个电源开关
48.根据权利要求41的GPS移动单元,其特征在于所述电源管 理电路包括数字信号处理器件中的电源控制逻辑,而且所述处理器 包括所述数字信号处理器件。
49.根据权利要求48的GPS移动单元,其特征在于所述电源管 理电路还包括连接到所述电源控制逻辑的多个电源开关。
50.根据权利要求41的GPS移动单元,还包括一个接收含有所 述GPS接收机视野中卫星的多普勒信息的卫星数据信息的通信接收 机。
51.根据权利要求41的GPS移动单元,其特征在于在所述GPS 移动单元置于低功率状态之后,所述电源管理电路将所述GPS移动 单元返回到增加的功率消耗状态。
52.根据权利要求41的GPS移动单元,还包括接收含有表示卫 星星历数据的卫星数据信息的通信接收机。
53.根据权利要求41的GPS移动单元,其特征在于所述处理器 通过在所述GPS信号的所述数字表示上进行快速卷积运算来处理所 述GPS信号。
54.根据权利要求53的GPS移动单元,其特征在于在所述存储 器中存储了所述GPS信号的所述数字表示之后,降低所述接收机消 耗的功率。
55.根据权利要求53的GPS移动单元,其特征在于在进行所述 快速卷积运算之前,在所述GPS信号的所述数字表示上进行预处理 运算。
56.根据权利要求55的GPS移动单元,其特征在于在进行所述 快速卷速运算之后,在所述快速卷积运算的结果上进行后处理运算。
57.根据权利要求41的GPS移动单元,还包括连接到所述接收 机的本振,所述本振提供第一参考信号,并包括连接到所述本振的 通信接收机,所述通信接收机提供精确的载波频率信号,以便校准 用于捕获所述GPS信号的所述本振。
58.备有移动GPS接收机和基本单元的GPS系统中的一种操作GPS 系统的方法,其中所述移动GPS接收机处于低功率状态,所述方法 包括以下步骤:
在移动GPS接收机接收通信信号,其中所述通信信号包括卫星 信息;
在接收所述通信信号后,将GPS接收机从所述低功率状态置于 高功率状态;
收集并存储GPS数据,并在存储了所述GPS数据后降低所述移 动GPS接收机的功率;
给基本单元发送GPS信号数据的表示;
在基本单元中计算移动GPS接收机的最后位置;并且
使用微处理器控制GPS接收机灵敏度的电平,以响应移动GPS 接收机的一个所选的功耗级。
59.根据权利要求58的方法,其特征在于移动GPS接收机灵敏 度受控于所述至少一个存储器中所储存的数据量。
60.根据权利要求59的方法,其特征在于移动GPS接收机灵敏 度随着微处理器在所述至少一个存储器中储存更多数据而增加。
61.一种用于确定移动卫星定位系统(SPS)接收机的位置的方 法,所述方法包括以下步骤:
在所述移动SPS接收机从一个来源接收表示SPS消息中的数据 的一个时间点,该消息从一个SPS卫星发送,所述来源有别于所述SPS 卫星;
在所述移动SPS接收机中捕获来自所述SPS卫星的SPS信号, 以确定到所述SPS卫星的伪距离,其中所述时间点是用来捕获所述SPS 信号。
62.根据权利要求61的方法,其特征在于所述方法还包括以下 步骤:
相对于所述移动SPS接收机确定至少一个视野中卫星所用的多 普勒信息,并且
所述至少一个多普勒信息是用来捕获所述SPS信号。
63.根据权利要求61的方法,其特征在于所述方法还包括以下 步骤:
接收至少一个视野中SPS卫星所用的相对于所述移动SPS接收 机的多普勒信息,所述至少一个多普勒信息由连接于所述移动SPS 接收机的蜂窝通信系统所接收,而且所述至少一个多普勒信息是用 来捕获所述SPS信号。
64.根据权利要求61的方法,其特征在于所述方法还包括以下 步骤:
在蜂窝通信系统中接收卫星数据信息,所述蜂窝通信系统连接 于所述移动SPS接收机,以便给所述移动SPS接收机提供所述卫星 数据信息。
65.根据权利要求61的方法,其特征在于所述卫星数据信息至 少包括卫星年历或表示至少一个SPS卫星的星历的数据其中之一。
66.根据权利要求65的方法,其特征在于视野中SPS卫星所用 的至少一个多普勒信息是根据所述卫星数据信息来确定。
67.根据权利要求61的方法,其特征在于所述移动SPS接收机 确定多个包括所述伪距离的伪距离,并且所述多个伪距离被发送到 远端处理系统,用以确定所述移动SPS接收机的位置。
68.一种有助于确定移动卫星定位系统(SPS)接收机的位置的方 法,所述方法包括以下步骤:
从一个非SPS卫星源发送从SPS卫星发送的SPS消息中的数据 时间点,其中所述时间点用来捕获移动SPS接收机中的SPS信号。
69.根据权利要求68的方法,其特征在于所述非SPS卫星源包 括一个备有GPS接收机的基站。
70.根据权利要求69的方法,其特征在于所述基站至少连接于 一个网孔站。
71.根据权利要求86的方法,其特征在于还包括以下步骤:
发送至少一个相对于所述移动SPS接收机的视野中SPS卫星所 用的多普勒信息,其中所述至少一个多普勒信息是用来捕获所述SPS 信号。
72.根据权利要求68的方法,其特征在于还包括以下步骤:
给所述移动SPS接收机发送一个卫星数据信息。
73.根据权利要求72的方法,其特征在于所述卫星数据信息至 少包括卫星年历或表示至少一个SPS卫星的星历的数据其中之一。
74.根据权利要求73的方法,其特征在于视野中SPS卫星所用 的至少一个多普勒信息是根据所述卫星数据信息来确定。
75.根据权利要求68的方法,其特征在于还包括以下步骤:
从所述移动SPS接收机接收多个伪距离,并根据所述多个伪距 离确定所述移动SPS接收机的位置。
76.根据权利要求75的方法,其特征在于所述方法在连接于至 少一个网孔站的基站中进行。
77.一种移动设备,包括:
用来接收表示从SPS卫星发送的SPS消息中的数据时间点的信 息的蜂窝通信系统,其中所述数据表示从无线网孔站发送的所述时 间点;
连接于所述蜂窝通信系统的移动卫星定位系统(SPS)接收机,其 中所述移动SPS接收机捕获来自所述SPS卫星的SPS信号以确定到所 述SPS卫星的伪距离,而所述时间点用来捕获所述SPS信号。
78.根据权利要求77的设备,其特征在于至少一个相对于所述 移动SPS接收机的视野中卫星所用的多普勒信息是用来捕获所述SPS 信号。
79.根据权利要求78的设备,其特征在于所述至少一个多普勒 信息由所述蜂窝通信系统接收。
80.根据权利要求77的设备,其特征在于所述蜂窝通信系统接 收用于所述移动SPS接收机的卫星数据信息,以捕获所述SPS信号。
81.根据权利要求80的移动设备,其特征在于所述卫星数据信 息至少包括卫星年历或表示至少一个SPS卫星的星历的数据其中之 一。
82.根据权利要求81的移动设备,其特征在于视野中SPS卫星 所用的至少一个多普勒信息是根据所述卫星数据信息来确定。
83.  根据权利要求77的移动设备,其特征在于所述移动SPS 接收机确定多个包括所述伪距离的伪距离,而且所述多个伪距离由 所述蜂窝通信系统发送到所述无线网孔站。
84.一种基站设备,包括:
用于接收卫星定位系统(SPS)信号并确定从SPS卫星发送的SPS 信号中数据的时间点的GPS接收机;以及
连接于所述GPS接收机的发射机,所述发射机发送由远端移动 SPS接收机在捕获所述移动SPS接收机中的SPS信号时所用的所述时 间点。
85.根据权利要求84的基站设备,其特征在于所述基站确定卫 星数据信息并将所述卫星数据信息发送给所述远端移动SPS接收机 使用。
86.根据权利要求85的基站动设备,其特征在于所述卫星数据 信息包括至少一个卫星年历或表示星历的数据或视野中SPS卫星的 多普勒信息。
87.一种基站设备,包括:
用于接收卫星定位系统(SPS)信号并确定从SPS卫星发送的SPS 消息中数据的时间点的GPS接收机;以及
连接于所述GPS数据处理接收机的发射机,所述发射机发送由 远端移动SPS接收机在捕获所述移动SPS接收机中的SPS信号时所用 的所述时间点。
88.根据权利要求61的方法,其特征在于所述时间点被接收用 于至少一个在所述移动SPS接收机的视野中的SPS卫星。
89.根据权利要求61的方法,其特征在于所述移动SPS接收机 确定多个包括所述伪距离的伪距离,而且所述多个伪距离用于确定 所述移动SPS接收机的位置。
90.根据权利要求68的方法,其特征在于所述时间点是用于至 少一个在所述SPS接收机的视野中的SPS卫星。
91.根据权利要求61的方法,其特征在于还包括以下步骤:
确定多个伪距离并确定根据所述多个伪距离确定所述移动SPS 接收机的位置。
92.根据权利要求77的移动设备,其特征在于所述时间点被接 收用于至少一个在所述移动SPS接收机的视野中的SPS卫星。
93.根据权利要求77的移动设备,其特征在于所述移动SPS接 收机确定多个包括所述伪距离的伪距离,而且所述多个伪距离用于 确定所述移动SPS接收机的位置。
94.根据权利要求84的基站设备,其特征在于所述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 Ins truments)的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所示,在一4实施例中,调制解调器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个百万分之一,或对于L1 GPS信 号大约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发送的多普勒频率加上本振偏称对应于feHz。那么,该数据的左乘取 函数e-j2πfenT的形式,n=[0,1,2,...,2048N-1]+(B-1)×2048N,这里 T=1/2.048 MHz是抽样周期,块号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(地理信息系统)软件(例如,Strategic Mapping,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开始,系统的各个部件在其中初始化 并置于降低功率状态。或者周期性地或者在预定的一段时间之后,调制解 调器2 2中的通信接收机要返回全功率,以便确定是否有从基站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”包括这些其它的卫星定位系统,包括Russian Glonass系统。

尽管图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

%This function processes digitized data and provides pseudoranges as outputs

%together with other statistical quanitites,as described below.

%Data to be processed is stored in a file named′filename′.

%This function works on data from Gage digitizer at either sample rate

%3×2.048MHz(if srate==0)or at sample rate 6×2.048MHz(if srate==1).

%where it is asaumed that IF is 35.42-(1400/45)=4.308889MHz.

%The following are definitions of inputs and outputs of the routine:

%Codes are the SV numbers;if codes=0,then all codes will be used;

%Doppler =[dopper(1) doppler(2)...doppler(n)span],apecifies the mean

%doppler of esch of the n satellite plus a span to be searched over;if span

%is missing or=0),then search is only done at the specified doppler.

%An alqorithm is used to select the quantization size of doppler steps.

%In some cases even if span is nonzero,only one doppler frequency per

satellite %will be used.The search range is rspan relative to each doppler.

%no_pred is number of predetection frames

%All data in the file is processed if samplerange is deleted.Bowevr,if

%it is present it is two value and has the notation:

%            sanplerange={lower_index,upper_index];

%If these indices are not within range of that provided in the gage file,

%then an error message is provided.

%Defaults are:if doppler has only one value,then doppler_apan will be zero

%              if no_postd is not specified,then all data will be ued

%              if no_pred is not specified,then pred will be set to 9

%              if no_pred is specified,then no_postd must be specified

%Outputs are codenumbers,pseudranges,snrs and best doppler

%with the pseudoranges expressed in naec and anrs in dB.

%A signal peak must exceed 15 dB threshold for detection.An

%interpolation algorithm is uaed to determine signal peak location.

%If no codes are found,the the returned function will be all zeros.

%Outdata is a vector of size 2048 that represents the output signal plus

%noise after postdetection integration for each detected satellite vehicle,

%for the best doppler.This data was used to find peudoranges

%%%%%------------------------------------------------------------%%%%

%First open the file and find the buffersize and indices to

%process,which may be all data if not specified in input arguments

[filevals,rate]=gageopen(filename);

buffsize=filevals(3);     %total number of samples in file

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

%%%%-----------------------------------------------------------------%%%

%Now find number of doppler bins;the center of these bins are

%called dopps and they are referenced to the center of the input dopplers

if length(doppler)==length(codes),span==0;

else if length(doppler)==length(codes)+1,

     span=doppler(length(codes)+1);

else,

     error(′Length of doppler vector must equal length of codes,or 1 more′);

end

if span<0,error(′Span must be greater than zero′);end

if srste==0,s_per_frame=6;else,s_per_frame=12;end

if nargin==3,no_pred=min(9,fix(buffsize/(1024*s_per_frame)));end

no_postd=fix(buffsize/(no_pred*1024*s_per_frame)):

if no_pred<1,error(′Nunber of predetection frames must be at least 1′);end

if nopostd<1,error(′Nunber of postdetection frames must be at least 1′);end

 deltaf=(1/3)*1000/no_pred;  %yields about 1.5 dB loss which ia made up

                               %worst case by two independent detections for

                               %wnen true freq is midway between bins

 if span<deltaf,

     dopps=0;%no need to quantize doppler

 else,

     dopps=[0:-deltaf:-span];

     dopps=sort((dopps deltaf:deltaf:span));

end

%%%---------------------------------------------------------------%%%

%Now get the FFT of codes and put them in a matrix of aize length(codes)X2048

if codes==0,codes=1:28;end                %search all codes in this case

codearray=zeros(length(codes),2048);

for k=1:length(codes),

    codearray(k,:)=gps_resampled(codes(k));

end

%%%---------------------------------------------------------------%%%

%In the  following we input data in blocks equal to a  number of PN

%frames equal to no_pred.For example if no_pred=7,the the number

%of samples from the gage is 2048*3*7=43008.so that in this case

%a full 4 Mbyte collection wou1d take about 93 iterations.Each

%iteration then performs the pred summation.cross-correlation,mag-

%squared operation and summation with previous blocks for all dopplers

%and a1l satellite vehicles specified.

blocksize=102*s_per_frame*no_pred;

start=lower_index-blocksize;

1c=length(codes);1d=length(dopps);

prdata=zeros(1c*ld,2048);

no_blocks=fix((buffsize-10*s_per_frame)/blocksize);%extra 60 or 120

samples

                                   %for overlap-save allows impulse response  to

                                   %60 or 120;see if_2_base m-file

for n=1:no_blocks,

  start=start+blocksize;

  {data,count}=gageread(filevals,start,blocksize+10*s_per_frame);

  data=if_2_base(data,srate);%Converts deta to baseband and decimates to

                                %2.048MHz

  data=data(21:20+2048*no_pred);%reject edge effect data(overlaps save)

  for k=1:1c,%Iterate over SV

      ref=codearray(k,:);     %code to be uaed for SV code(k)

      for d=1:1d,%Iterate over dopplers

          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));%does pred summation

          rdata=fft(rdata).*ref;%does matched filter

             %compensate for time slip per block which is fdopp/fo times time

             %noting that fdoop/fo is doppler time slip per second

          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(1026:2048)=rdata(1026:2048).*conj(phase(1024:-1:2));

          rdata=ifft(rdata);

          rdata=real(rdata).^2+imag(rdata).^2;%magnitude

          prdata((k-1)*1d+d,:)=prdata((k-1)*1d+d,:)+rdata;

      end

   end

end

%%%---------------------------------------------------------------%%%

sv={};,prange={};,anrin={};snrout={};svdopper={};outdata={};

%Now we look for peaks exceeding threshold

for k=1:1c,%look at all SV′s and dopps

    z=prdata((k-1)*1d+{1:1d),:);%data matrix for sv#k and all dopplers

    z=z-mean(mean(z));

    noise=sqrt(mean(mean(z.^2)));%coarse noise rme

    threshold=5.7*noise;

                               %yields Pfa less than 1e-4 per using all

                               %28 av′s and 10 dopplers per SV

    indt=find(z<threshold);

    noise=sqrt(mean(mean(z(indt).^2)));%refined noise getting rid of aignal

    d=z+0.2*max(nrotate(z,-1),mrotate(z,1));%detection atat.eliminating

                                                 %picket fence problem

    {maxd,indd}=max(d);%finds max and location for each doppler

    {maxsv,indsv}=max(maxd);%find global peak for this sv

    if maxsv>threshold,      %then we detect this svl

       r=(maxsv/noise)^2;    %peak to noise away from peak

       snin=sqrt(r/(no_pred^2*no_postd));%snrin via N.K analysis

       snrin=(snrin 10*log10(snin));

                                           %now find snrout at peak

       snout=(no_pred^2*no_postd)*snin^2/(1+2*no_pred*snin);%via N.Kanal.

       snrout={snrout 10*log10(snout)};

       sv={sv codes(k)};

       d=z(indsv,:); %data for best doppler

       outdata=(outdata d};

       svdoppler=(svdoppler doppler(k)+dopps(indsv));%best doppler

       ind0=indd(indsv);%best sample for best

       inds0=[ind0-4:ind0+4);%block of 9 data samples about ind0;

       ninds=find(inds0<=0);

       pinds=find(inds0>2048);

       if length(ninds)>0,%keep data to interpolate within range

           inds0(ninds)=inds0(ninds)+2048;

       elseif length(pinds)>0,

           inds0(pinds)=inds0(pinds)-2048;

       end

       dint=interp(d(inds0),10);%go to rate 20MHz

       dint=interp(dint,10);%go to rate 200MHz

       dint=interp(dint,5);%go to rate 1GBz

      [amax,imax]=max(dint);%find max

      indmax=min(find(dint>0.8*amax));%max above 80%

      tmax=ind0+(indmax-2001)/500;%pseudorange in samples

      if tmax>=2048,

           tmax=tmax-2048;

      elseif tmax<0,

           tmax=tmax+2048;

      end

      tmax=tmax*500;%pseudorange in unita of nsec

      prange=[prange tmax];

   end

end

if length(av)==0,            %then there were no detections

    av=0;prange=0;snrin=0;snrout=0;svdoppler=0;outdata=0;

end

fclose(′all′);

fumctlon y=gpscodes(num)

%y=gpscodes(num)

%N.Krasner Jan.22,1996.

%OPrecision Tracking,Inc.,San Jose,CA.95117

%Returns all 1023 bit codes associated with satellite in an

%array y of size  37×1023.Each row is the code associated

%with the satellite having the corresponding ID number.That

%is row 1 is the PN(Gold)code of satellite 1,etc.

%If num is specified then only one code with that number is

%returned

y1=pngen((3,10),1023,ones(1,10));

y2=pngen((2,3,6,8,9,10),1023,ones(1,10));

delays=(5,6 7,8,17,18,139,140,141,251,252,254,255,255,257,258);

delays=(delays,469,470,471,472,473,474,509 512,513,514,515,516);

delays=(delays,859 860 861 862 863 950 947 948 950);

if nargin==0,

  for k=1:length(delays),

      y(k,:1)=xor(y1,rotate(y2,delays(k)));

  end

  else,

  y=xor(y1,rotate(y2,delays(num)));

end

function r=gps_rsmp(codenumber)

%N.Krasner Feb.16,1996.

%OPrecision Tracking,Inc.,San Jose,CA.95117

%Returns the resampled Fourier transform of specified 1023 bit

%GPS code,resampled to at rate 2048kHz and weighted

%with a ″sinc″function to emulate the transform of the

%sequences consisting of a set of square pulses,which

%is ideally bandpass filtered to the first nulls(=1023kHz).

%If codenumber is 0,then all gps codes are returned in a matrix

%of size 37×2048.

%The transformed data contains real and imaginary components

%each of which is rounded to 4 bit signed integers in the range

%[-7,7].This is the form stored in EPROM.This quanitization

%minimizes required storage,but results in negligible lose of

%performance.

%As in the function gpscodes,the returned value contains 37

%rows each corresponding to the corresponding GPS code (row 1

%contains code 1,etc.)if all codes are requested.Each row is

%of lenth 2048 and,as stated above contains complex words whose

%compoments are integers in the range [-15,15].

%Note that this function calls the function gpacodes to create

%the various Gold codes.

if codenumber==0,

    y=gpscodes;

elae,

    y=gpscodes(codenumber);

end

%returns matrix 37×1023 of GPS codes

y=2*y-1;                                       %convert.to z1

if codenumber==0,

  z=zeros(37,2048);

  for k=1:37,

    fyl=fft(stretch(y(k,:),2));

    fyll=[fyl(1:1024).*sinc([0:1023)/1023) 0 0];

    fyll=[fyll fyl(1025:2046).″sinc([1022:-1:1]/1023)];

    z(k,:)=conj(fyll);%need conjugate for matched filter

  end

  else,

    fyl=fft(stretch(y,2));

    fyll=[fyl(1:1024).*sinc([0:1023]/1023)0 0];

    fyll=[fyll fyl(1025:2046).*sinc((1022:-1:1]/1023)];

    z=conj(fyll);%need conjugate for matched filter

  end

end

z=round(z/20);%since max is 171.9 but few values are above 140

rz=min(real(z),7);rz=max(rz,-7);%limit range

iz=min(imag(z),7);iz=max(iz,-7);%limit range

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

%If rate is missing or equals 0,then the input rate is assumed

%to be 3*2048kHz.If rate equals 1,then it is 6*2048kHz.

%Converts data from GAGE digitizer sampled at either 3*2048kHz

%or 6*2048kHz with IF 6.144MHz (3*2.048) centered at

%35.42 -(1400/45)=4.308889MHz to a complex(I,Q) stream

%of data with sample rate 2.048MHz centered at 0

%frequency(nominally).This routine does not compensate for

%any doppler shifts on SV′s,nor any LO drifts.Note that the output

%data length is either 1/3 or 2/3 that of the input.

if nargin==1, rate=0;end

ifreq=35.42-(1400/45);%in MHz

if rate==0,%case where sample rate is 3*2048kHz

    srate=3*2.048;% in MHz  %sample rate for GAGE

    [u,v]=size(data_in);if u>v;data_in=data_in′;end;1d=length(data_in);

    c=exp(-j*2*pi*[0:1d-1]*ifreq/srate);%LO

    data_out=data_in.*c;clear data_in c                 %convert to 0

    h=firl(50,.9/3.072);

    data_out=filter(h,1,data_out);%filter to =1MHz

    data_out=data_out(1:3:1d);    %decimate to yield 2.048MHz srate

else,                              %case where sample rate is 6*2048kHz

    srate=6*2.048; % in MHz

    [u,v]=size(data_in);if u>v;data_in=data_in′;end;1d=lenqth(data_in);

    c=exp(-j*2*pi*[0:1d-1]*ifreq/srate);%LO

    data_out=data_in.*c;clear data_in c                %convert to 0

    h=firl(100,.9/6.144);

    data_out=filter(h,1,data_out);      %filter to ±1MBz

    data_out=data_out(1:6:1d);   %decimate to yield 2.048MHz arate

end

fumction y=mrotate(x,m)

%y=mrotate(x,m);matrix rotation by m units

%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 generates ″npts″number of points of the psuedo random

%       sequence defined by a shift register of length n with feedback

taps

%′taps′and initial fill′fill′.PN(npta,taps,

fill)returns a

%      vector of length npts containing this sequence.

%                     A typical example [1,6,8,14]for R14 fill=[1

zeros(1,13)]

%   If a single number is given in″taps″it is interpreted as

%       the octal value specifying the taps,as in Petereonand Weldon.

Por

%   example a code 2767(octal)=010 111 110 111.We delete the

leading 0

%   to get the polynamial 10 111 110 111.The feedback tapa for this

case

%   are found by ignoring the first one and choosing the remaining

″ones″

%   to get position,For this case the taps are thua 2 3 4 5 6 8 9 10.

if length(taps)==1,

    taps=sprintf(′%,0f′,taps);ntaps=[];

    if taps(1)==′1′,ntaps={1};

    elseif taps(1)==′2′,ntaps={1  0};

    elseif taps(1)==′3′,ntaps={1  1};

    elseif taps(1)==′4′,ntaps={1  0  0};

    elseif taps(1)==′5′,ntaps={1  0  1};

    elaeif taps(1)==′6′,ntaps={1  1  0};

    elseif taps(1)==′7′,ntaps={1  1  1};

    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(filcoame)

%Read gage formatted file,with particular number of samples

%    function[file_vals,sample_rate)=gageopen(filename)

%3.Wilson Jan.13,1996.

%OPrecision Tracking,Inc.,San Jose,CA.95117

file_vals(1)=fopen(filename,′r′);

[sample_rate,sample_depth,head_vals,operation_mode]=

rdgghead(file_vala(1));

file_vals(2)=operation_mode;

file_vals(3)=sample_depth;

file_vals(4:6)=head_vals(1:3)

function[buf,count]=gagercad(file_vals,atart,numsamples)

%Read gage formatted file,with particular number of samples

%    function(buf,count)=gageread(file_vals,start,numsamples)

%B.Wilson Jan.13,1996.

%OPrecision Tracking,Inc.,San Jose,CA.95117

%files_vals

%    1-file id

%    2-operation_mode-if=1;file is memory image interleave

sample_depth long;=2 memory image

%    3-sample_depth

ns2 =numsamples/2;

fid =file_vals(1);

if(file_vals(2)==2)

      buf=zeros(numsamples,1);

      fresult=fseek(fid,512+start,-1);%move to requested point in

data portion of file

-     [buf,count]=fread(fid,numsamples,′uchar′);

elae

      buf=zeros(ns2,2);

      fresult=fseek(fid,512+(start/2),-1);%move to reguested

point in data portion of  file

      [(buf(:,1),c1]=fread(fid,ns2,′uchar′);

      fresult=fseek(fid,512+(start/2)+file_vals(3),-1);%move to

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;

fumction(sample_ratc,sample_depth,head_vals,operatioa_sode)=

rdggbead(fid)

%Read gage formatted header

%B.Wilson Jan.13,1996.

%OPreciaion Tracking,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);%rewind the file

tmp=fread(fid,14,′char′);

s=setatr(tmp′);

fresult=fseek(fid,16,-1);%move to name variable

tmp=fread(fid,9,′char′);

sname=setstr(tmp′);

fresult=fseek(fid,287,-1);%move to index to sample rate table

variable

sample_rate_index=fread(fid,1,′int16′);

if(sample_rate_index==42)%42 is′external′

sample_rate=-1;

else

sample_rate=sample_rate_table(sample_rate_index-17);

end

fresult=fseek(fid,289,-1);    %move to index to operation mode variable

operation_mode=fread(fid,1,′int16′)

%%if(operation_mode==1)

%%    sample_rate=sample_rate/2;

%%  end

fresult =fseek(fid,301,-1);%move to sample_depth veriable

sample_depth=fread(fid,1,′int32′)

if(operation_mode==1)

    sample_depth=sample_depth/2 % seems like a′bug′to me

    if(sample_depth==4194304)

      sample_depth=sample_depth/2

    end

end;

fresult=fseek(fid,313,-1 );%move to starting_address

head_vals=fread(fid,3,′int32′);

fresult=fseek(fid,339,-1);%move to sample_depth variable

resolution_12_bits=fread(fid,1,′int16′);

fresult=fseek(fid,345,-1);%move to sample_depth variable

sample_offset=fread(fid,1,′int16′);

fresult=fseek(fid,349,-1);%move to sample_depth variable

sample_bits=fread(fid,1,′int16′);

function y=rotate(x,q)

%y=rotate(x,q)

%Rotates vector by q placeg

%N.Krasner Nov.28,1995.

%ONorman Krasner,San Carlos,CA.94070

%If q is deleted this rotates a vector by interchanging the first and

last half

%of the vector.If the vector is odd in length the mid point is

%placed at the beginning of the new vector.

%If q is present and>0 this 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

then

%this rotates x to the left.

{m,n}=size(x);mn=max(m,n);

if nargin>1,q=rem(q,mn);end

if m>16n>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)};

elseif abs(q)>0,

    if q<0,q=q+mn;end    %fix for shifts left

       y=[ x(mn-q+1:mn)x(1:mn-q));

    else y=x;

    end

end

if m>1,y=y′;end

function z=sinc(x)

%z=sinc(x)

%N.Krasner April 21,1991

%ONorman Krasner,San Carlos,CA.94070

%Definition:  sinc(x)=sin(pi*x)/(pix),where x is a vector/matrix.

%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;

fumction z=atretch(signal,period)

%function z=stretch(aignal,period)

%N.Krasner March 12,1995

%ONorman Krasner,San Carlos,CA.94070

%This function stretchs a signal by replacing each element

%with m identical elements;m is specified by *period.*

(u,v)=size(signal);

if u>1 6 v>1 error(′This function works only for vector inputs.′);end

if u>1,aignal=signal′;end

a=ones(period,1)*signal;

z=a(:)′;z=conj(z);

ifu>1,z=conj(z′);end

function y=xor(a,b);

%function y=xor(a,b);

%Exclusive or,term by term,of two vectors

%N,Krasner June13,1994

%ONorman Krasner,San Carlos.CA.94070

y=(a6-b)|(b6-a);

发明背景

有关申请
这个申请涉及同一发明者在与这个申请同一天提交的两个专利申 请;这两个申请是:An Improved GPS Receiver Utilizing a Communication Link(Serial No.08/612,582,1996年3月8日提交);An Improved GPS Receiver Having Power Management(Serial No.08/613,966,1996年 3月8日提交)。
这个申请也涉及并藉此要求同一发明者Norman F.Krasner的监时 专利申请的提交日期的权益,该申请题为Low Power,Sensitive Pseudorange Mesaurement Apparaatus and Method for Global Positioning Satellites Systems,Serial No.60/005,328,1995年10月9日提交。
这个专利文件揭示的一部分包括受到版权保护的材料。版权所有者 不希望任何人传真复制该专利文件或专利揭示在专利及商标局专利文件或 记录中出现的形式,而是保留其全部版权。
QQ群二维码
意见反馈