上述した周波数サーチを伴なうスライディング相関と、DLL(Delay Locked Loop)およびコスタスループとにより、キャリアおよび拡散符号についての同期捕捉を行うと同時に同期保持動作をするという、従来の手法では、周波数サーチを伴なうスライディング相関の方法が、上述したように、原理的に高速同期には不向きであって、拡散符号およびキャリアの同期に時間を要するという問題があった。そして、このように拡散符号およびキャリアの同期に時間を要すると、GPS受信機の反応が遅くなり、使用上において不便を生ずる。
従来、実際のGPS受信機においては、この問題点を改善するため、多チャンネル化してパラレルに同期点を探索する必要があり、従来方式のままで大幅なチャンネル増を行うとGPS受信機の構成が複雑となると共に、コスト高となり、また、多チャンネルでパラレルに同期点を検索するものであるため、消費電力も大きくなっていた。消費電力の問題は、携帯型のGPS受信機の場合には大きな問題である。
また、上述の従来の手法の場合には、拡散符号およびキャリアの同期捕捉と同期保持とは、周波数サーチを伴なうスライディング相関と、DLL(Delay Locked Loop)およびコスタスループとにより、一体的に行っているので、例えばGPS衛星からの信号が途切れたときには、同期捕捉および同期保持を、再度、一体的に行う必要があり、再同期捕捉および再同期保持までの時間が長くなってしまうという問題もある。
さらに、上述の従来の場合には、拡散符号およびキャリアの同期捕捉と同期保持とは、周波数サーチを伴なうスライディング相関と、DLL(Delay Locked Loop)およびコスタスループとにより、一体的に行っているので、GPS受信機の感度を上げようとすると、原理的に同期捕捉および同期保持のための処理時間がかなり長くなってしまうことから、GPS受信機の感度を上げることが容易ではないという問題もあった。
以下に説明する実施形態は、上記の問題点を改善したものである。以下、この発明による測位用衛星信号の受信機の実施形態を、GPS受信機の場合を例にとって、図を参照しながら説明する。
[実施形態のGPS受信機の全体構成]
図1は、この実施形態のGPS受信機の構成例を示すブロック図であり、また、図2は、この実施形態のGPS受信機の外観を示す図である。図1に示すように、この実施形態のGPS受信機は、周波数変換部10と、同期捕捉部20と、同期保持部30と、制御演算部40と、GPSアンテナ1と、温度補償付き水晶発振回路からなる基準発振回路2と、タイミング信号生成回路3と、水晶発振回路4と、ディスプレイ5と、操作ボタン群6と、ジョグダイヤル7と、地図メモリ8とを備えて構成される。
制御演算部40は、CPU(Central Processing Unit)41に対して、プログラムROM(Read Only Memory)42と、ワークエリア用のRAM(Random Access Memory)43と、実時間(RTC(Real Time Clock))を計測するための時計回路44と、タイマ45と、軌道情報用メモリ46と、ディスプレイインターフェース47と、操作ボタンインターフェース48と、ジョグダイヤルデコーダ49と、地図メモリ8とが接続されて構成されている。
ディスプレイインターフェース47には、例えばLCD(Liquid Crystal Display)からなるディスプレイ5が接続される。後述するように、ディスプレイ5の画面には、CPU41の制御により、現在地などを表示するための地図が表示されると共に、操作メニューなどが表示される。
また、操作ボタンインターフェース48には、操作ボタン群6が接続される。操作ボタン群6には、この例では、図2に示すように、地図拡大ボタン61、地図縮小ボタン62、カーソル位置を前後左右に動かすためのカーソルボタン63が含まれる。
ジョグデコーダ49には、ジョグダイヤル7が接続される。ジョグダイヤル7は、アップダウンキーとしての役割と、決定キーとしての役割などの複数の役割を有する操作部である。この例の場合、ジョグダイヤル7は、図2のGPS受信機の外観図に示すように、回転が可能である円形のダイヤルつまみにより構成される。
そして、このダイヤルつまみの回転により、ジョグダイヤル7は、アップダウンキーとしての役割を果たす。また、ジョグダイヤル7は、半径方向に押下されることにより、ノンロック式の押ボタンとしての機能を有する。この押ボタンの機能は、決定キーとしての役割を果たすものである。
ジョグダイヤル7の操作入力は、ジョグダイヤルデコーダ49で検出され、その操作入力が、ダイヤルつまみの回転、ダイヤルつまみの押下、のどれであるかを示す情報が、ジョグダイヤルデコーダ49からCPU41に送られる。
CPU41は、ROM44に書き込まれているプログラムに操作ボタン入力情報やジョグダイヤルデコーダ49からのジョグダイヤル7の操作入力の情報を受け、その解析を行い、それに応じた処理をする。また、CPU41は、RAM43や軌道情報用メモリ46に、必要な情報の格納処理を行ったり、ディスプレイ5の表示画面に、所定の表示画像を表示するための情報を、ディスプレイインターフェース47を通じて送ったりするようにする。
また、CPU41は、同期捕捉部20に対して、モード切り換え信号等の制御信号を供給すると共に、同期捕捉部20から後述するような情報を受け取って、同期保持部30を制御したり、GPS衛星からの電波の状況を使用者に告知する処理等をしたりする。さらに、CPU41は、同期保持した4個以上の衛星からの電波に基づく測位演算処理を実行するようにする。すなわち、制御演算部40のCPU41は、このGPS受信機の全体を制御すると共に、測位演算をするためのものである。
タイマ45は、各部の動作に必要な各種タイミング信号の生成および時間参照に使用される。軌道情報用メモリ46は、不揮発性メモリとされ、これにはGPS衛星信号から抽出したアルマナック情報およびエフェメリス情報からなる軌道情報が記憶される。軌道情報用メモリ46に対して、エフェメリス情報は、例えば2時間毎に更新され、また、アルマナック情報は、例えば数日あるいは数ヶ月毎に更新される。
地図メモリ8は、この例では、地図データが格納された半導体メモリで構成されるが、着脱自在なカード型メモリを用いることもできる。
図1のGPS受信機において、基準発振回路2からの基準クロック信号は、逓倍/分周回路3に供給されると共に、後述するように、周波数変換部10の周波数変換用の局部発振回路15に供給される。逓倍/分周回路3は、基準クロック信号を逓倍して、また、分周して、同期捕捉部20、同期保持部30および制御演算部40などに供給するクロック信号を生成する。逓倍/分周回路3は、制御演算部40のCPU41により逓倍比や分周比が制御される。
なお、水晶発振回路4からのクロック信号は、制御演算部40の時計回路44用のものとされている。制御演算部40の時計回路44以外の部位のクロック信号は、逓倍/分周回路3からのクロック信号とされる。
[周波数変換部10の構成]
GPS衛星信号は、前述もしたように、各GPS衛星から送信される信号であり、50bpsの送信データを、送信信号速度が1.023MHzで、符号長が1023であって、GPS衛星ごとに決められているパターンのPN符号(拡散符号)によりスペクトラム拡散した信号(C/Aコード)により、周波数が1575.42MHzのキャリア(搬送波)をBPSK変調したものである。
アンテナ1にて受信された1575.42MHzのGPS衛星信号は、周波数変換部10に供給される。周波数変換部10では、アンテナ1にて受信されたGPS衛星信号が、低雑音増幅回路11にて増幅された後、バンドパスフィルタ12に供給されて、不要帯域成分が除去される。バンドパスフィルタ12からの信号は、高周波増幅回路13を通じて中間周波変換回路14に供給される。
また、基準発振回路2の出力が、PLL(Phase Locked Loop)シンセサイザ方式の局部発振回路15に供給され、この局部発振回路15より基準発振器2の出力周波数に対して周波数比が固定された局部発振出力が得られる。そして、この局部発振出力が中間周波変換回路14に供給されて、GPS衛星信号が、信号処理し易い中間周波数、例えば1.023MHzの中間周波信号に低域変換される。
中間周波変換回路14からの中間周波信号は、増幅回路16で増幅され、ローパスフィルタ17で帯域制限された後、A/D変換器18で1ビットのデジタル信号(以下、この信号をIFデータという)に変換される。このIFデータは、同期捕捉部20および同期保持部30に供給される。
すなわち、この実施形態では、IFデータは、従来のスライディング相関およびコスタスループ+DLLのような同期捕捉・同期保持一体化回路に供給されるのではなく、機能的に分離された同期捕捉部20と、同期保持部30に供給される。
この実施形態において、同期捕捉部20は、GPS衛星信号についての同期捕捉、つまり、GPS衛星信号の拡散符号の位相検出および中間周波信号の周波数(以下、IFキャリア周波数という)の検出を行う。同期保持部30は、同期捕捉部20で捕捉したGPS衛星信号の拡散符号とIFキャリアの同期保持を行う。
[同期捕捉部20と同期保持部30の構成]
この実施形態では、後述するように、同期捕捉部20では、周波数変換部10からのIFデータの所定時間分をメモリに取り込み、このメモリに取り込んだIFデータについて、GPS衛星信号の拡散符号と、GPS受信機が持つ個々のGPS衛星の拡散符号に対応する拡散符号との相関演算を行って、拡散符号の位相同期捕捉およびIFキャリア周波数の検出を行う。
拡散符号の位相同期捕捉に関しては、上述のようなスライディング相関の手法を用いることなく、スペクトラム拡散信号の同期捕捉を高速に行う方法として、マッチドフィルタを用いる方法がある。
マッチドフィルタは、トランスバーサルフィルタにより、デジタル的に実現可能である。また、近年は、DSP(Digital Signal Processor)に代表されるハードウエアの能力の向上によって、高速フーリエ変換(以下、FFT(Fast Fourier Transform)という)処理を用いたデジタルマッチドフィルタにより、拡散符号の同期を高速に行う手法が実現している。ただし、デジタルマッチドフィルタそのものは、拡散符号の同期を保持する機能を有しない。
後者のFFT処理を用いる方法は、古くから知られる相関計算の高速化方法に基づいており、受信機側の拡散符号と、受信信号の拡散符号との間に相関がある場合には、後述する図5に示すような相関のピークが検出され、ピークの位置が拡散符号の先頭の位相である。したがって、この相関のピークを検出することで、拡散符号の同期を捕捉、すなわち、受信信号における拡散符号の位相を検出することができる。
受信信号のキャリア(中間周波数)は、FFTを利用した方法で、FFTの周波数領域での操作により、拡散符号の位相とともに検出することができる。拡散符号の位相は、疑似距離に換算され、4個以上の衛星が検出されれば、GPS受信機の位置を計算することができる。また、キャリア周波数が検出されると、ドップラーシフト量が判り、これにより、GPS受信機の速度が計算できる。
以上のことから、この実施形態では、高速フーリエ変換(以下、FFT(Fast Fourier Transform)という)処理を用いたデジタルマッチドフィルタにより拡散符号についての相関計算を行い、その相関計算に基づいて同期捕捉処理を高速に行う。
アンテナ1で受信されるGPS衛星信号には、複数のGPS衛星からの信号が含まれているが、同期捕捉部20では、すべてのGPS衛星についての拡散符号の情報を用意しており、その用意されている拡散符号の情報を用いて、その時点でGPS受信機が利用可能な複数個のGPS衛星信号の拡散符号との相関を計算することにより、それらの複数個のGPS衛星信号の同期捕捉をすることが可能である。
同期捕捉部20では、いずれのGPS衛星用の拡散符号の情報を用いて同期捕捉したかにより、いずれのGPS衛星からの信号の同期捕捉をしたかを検知する。当該同期捕捉したGPS衛星の識別子としては、例えばGPS衛星番号が用いられる。
そして、同期捕捉部20は、同期捕捉したGPS衛星の衛星番号の情報と、同期捕捉により検出した拡散符号の位相の情報と、IFキャリア周波数の情報と、また、必要に応じて、相関の度合いを示す相関検出信号からなる信号強度の情報を、同期保持部30に渡すようにする。
同期捕捉部20で検出した衛星番号、拡散符号の位相、IFキャリア周波数、信号強度の情報を、同期保持部30へ渡す方法としては、データのフォーマット、割り込みの方法等を決めた上で、同期捕捉部20から同期保持部30へ直接渡す方法と、制御演算部40を介して渡す方法とがある。
前者の場合には、同期捕捉部20のDSP23で、同期保持部30に渡す情報を生成する。あるいは、同期保持部30に、例えばDSPで構成される制御部を設け、その制御部で、同期捕捉部20からの情報に基づいて、同期保持部30で必要な情報を生成する構成とする。
また、後者の場合には、制御演算部40のCPU41が制御し、CPU41を介して情報の受け渡し、またCPU41から同期捕捉部20および同期保持部30の制御を行うことができるので、後述する拡散符号の位相補正や、同期捕捉部20と同期保持部30の状況に応じた多様な同期手順を設定しやすくなる。
そこで、以下に説明する実施形態では、同期捕捉部20から、衛星番号、拡散符号の位相、IFキャリア周波数、信号強度の情報を、同期保持部30へ渡す方法としては、制御演算部40を介して渡す方法を採用している。
[同期捕捉部20の構成]
図3は、同期捕捉部20の構成例を示すものであって、この例では、サンプリング回路21と、データバッファ用のRAM(Random Access Memory)22と、DSP(Digital Signal Processor)23と、プログラムROM(Read Only Memory)と、ワークエリア用のRAMとからなるDSP23用のメモリ部24とを備えて構成される。DSP22およびDSP用のメモリ部24とは、制御演算部40のCPU41に接続されている。
サンプリング回路21では、周波数変換部10からの1.023MHzのIFデータを、2倍以上の所定の周波数でサンプリングし、各サンプリング値をRAM22に書き込む。RAM22は、所定時間長分のIFデータを記憶する容量を有する。DSP23では、このRAM22の容量分の時間長のIFデータ単位に同期捕捉処理を行う。
すなわち、この例では、DSP23は、RAM22に取り込んだIFデータについて、高速フーリエ変換(以下、FFT(Fast Fourier Transform)という)処理を用いたデジタルマッチドフィルタにより、拡散符号の同期捕捉を高速に行う。そして、DSP23は、その同期捕捉の結果として、同期捕捉したGPS衛星番号と、同期捕捉したGPS衛星信号の拡散符号の位相およびそのIFキャリア周波数とを検出する。
サンプリング回路21におけるサンプリング周波数により、拡散符号の位相の検出精度が決まる。このサンプリング周波数は、サンプリング定理からIF信号に含まれる最大周波数の2倍以上である必要があり、IFキャリア周波数の整数倍の周波数が望ましい。
また、RAM22の容量により決まるDSP23での処理単位の時間長により、IFキャリア周波数の検出精度が決まる。このDSP23での処理単位の時間長は、拡散符号の1周期の整数倍、後述のように、特に2のべき乗倍が望ましい。
ここで、サンプリング回路21でのサンプリング周波数を、拡散符号のチップレートのα倍、RAM22に取り込むIFデータの時間長を拡散符号の1周期のβ倍(βミリ秒)とすると、DSP23では、FFTの周波数領域での操作により、拡散符号の位相は1/αチップの精度で検出することができ、IFキャリア周波数は、1/βkHz(±1/2βkHz)の精度で検出することができる。
そして、この実施形態では、DSP23では、同期捕捉のサーチモード(以下、測位モードという)として、高速モードと、高感度モードとが選択可能とされている。高速モードは、後述するように、同期捕捉のサーチを粗く行って、拡散符号の位相およびIFキャリア周波数の検出を高速に行うようにするためのものであり、衛星からの電波が強いときに有効である。
高感度モードは、後述するように、同期捕捉のサーチを精細に行って、拡散符号の位相およびIFキャリア周波数の検出を確実に行うようにするためのものであり、衛星からの電波が弱い状況のときに有効である。
この2つのモードの切り換えは、この例では、自動(オートモード)の場合と、手動(マニュアルモード)の場合とが、選択可能とされている。そして、制御演算部40のCPU41は、自動により切り換え設定されるいずれかの測位モード、あるいは使用者の手動の切り換え操作により設定される測位モードで、同期捕捉のサーチ動作を行うように、同期捕捉部20のDSP23を制御するようにする。
オートモードにおいては、この例では、初期モードは常に高速モードとし、高速モードで衛星電波の受信(同期捕捉)ができなかったときに、高感度モードに自動切り換えするようにする。そして、高感度モードのときに、GPS衛星からの電波の受信電界強度が大きくなって、再び高速モードでの同期捕捉が可能になる状態に復帰したら、高速モードに戻すようにする。
なお、ユーザの設定により、オートモードの初期モードを、高感度モードと、高速モードのいずれかを指定することができるようにすることも勿論できる。
次に、DSP23におけるFFTを用いたデジタルマッチドフィルタによる同期捕捉のいくつかの例について詳述する。
〔デジタルマッチドフィルタによる同期捕捉の第1の例〕
この例においては、サンプリング回路21でのサンプリング周波数は、拡散符号のチップレートのほぼ4倍の4.096MHzとされる。そして、RAM22には、拡散符号の1周期分(1ミリ秒)である4096サンプル点のデータを記憶する。DSP23は、このRAM22に取り込まれた1ミリ秒単位のデータについて、GPS衛星信号の拡散符号とGPS受信機の拡散符号との相関を、FFTを用いた相関演算により計算して、同期捕捉を行う。拡散符号の1周期分は、1023チップであるから、1/4チップの精度で拡散符号の位相検出が可能となる。また、IFキャリア周波数の検出精度は、1ミリ秒単位のFFT処理であるので、1kHzである。
この例では、図3に示すように、DSP23では、RAM22に書き込まれた1ミリ秒単位のIFデータを読み出して、FFT処理部101でFFT処理し、そのFFT結果をメモリ102に書き込む。そして、メモリ102に書き込まれたFFT結果は、読み出しアドレス制御部109の読み出し制御にしたがって、順に読み出されて、乗算部103に供給される。この読み出しアドレス制御部109は、メモリ102からのFFT結果の順次読み出しだけを行うのではない。
この例では、読み出しアドレス制御部109には、相関点検出部108の出力が供給され、相関点検出部108で、相関のピークが得られなかったときには、メモリ102からのFFT結果の読み出しアドレスの初期値を、シフトするようにする制御をも行うものである。
一方、拡散符号発生部104から、GPS衛星からの受信信号に使用されている拡散符号と同じ系列と考えられる拡散符号を発生させる。実際的には、拡散符号発生部104からは、予め用意されている複数個のGPS衛星の拡散符号が順次に切り換えられて出力されることになる。
この拡散符号発生部104からの1周期分(1023チップ)の拡散符号は、FFT処理部105に供給されてFFT処理され、その処理結果がメモリ106に供給される。このメモリ106からは、読み出しアドレス制御部110の読み出し制御にしたがって、FFT結果が低い周波数から順に読み出されて乗算部103に供給される。この例では、この読み出しアドレス制御部110は、常に、メモリ106からFFT結果を、低い周波数から順に読み出すようにする処理のみを行う。
乗算部103では、メモリ102からの受信信号のFFT結果と、メモリ106からの拡散符号のFFT結果とが乗算され、周波数領域における受信信号と拡散符号との相関の度合いが演算される。ここで、乗算部105での乗算は、受信信号の離散フーリエ変換結果と、拡散符号の離散フーリエ変換結果とのどちらか一方の複素共役と他方とを乗算する演算となる。そして、その乗算結果は逆FFT処理部107に供給されて、周波数領域の信号が時間領域の信号に戻される。
逆FFT処理部107から得られる逆FFT結果は、受信信号と拡散符号との時間領域における相関検出信号となっている。この相関検出信号は、相関点検出部108に供給される。
この相関検出信号は、拡散符号の1周期分の各チップ位相における相関値を示すものとなっており、所定の強度以上である受信信号中の拡散符号と、拡散符号発生部104からの拡散符号とが同期している位相(拡散符号の1周期分単位の位相)においては、図5に示すように、1023チップのうちのある一つの位相での相関値が、予め定められるスレッショールド値を超えるようなピーク値を示す相関波形が得られる。このピーク値の立つチップ位相が、相関点の位相であり、GPS受信機側の拡散符号に対するGPS衛星信号の拡散符号の1周期の先頭の位相となる。
一方、受信信号が所定の強度以下である場合、受信信号中の拡散符号と、拡散符号発生部104からの拡散符号とが同期しても、図5のようなピーク値が立つ相関波形は得られず、いずれのチップ位相においても、予め定められるスレッショールド値を超えるようなピークは立たない。
相関点検出部108は、例えば、予め定めた値を超えるピーク値が、この相関点検出部108に供給される相関検出信号に存在するかどうかにより、受信信号と拡散符号との同期が取れたかどうかを検出する。
相関点検出部108で同期が取れたことを検出した場合には、前記ピーク値の位相を相関点、つまり、GPS衛星信号の拡散符号の位相として検出する。そして、DSP23は、そのときの拡散符号発生部104からの拡散符号がいずれのGPS衛星用のものであるかにより、GPS衛星番号を認識する。
また、図5に示した相関検出信号は時間領域のものであるが、後述する処理により中間周波受信信号におけるキャリア成分を正しく除去した場合にのみ相関のピークが検出される。
そして、除去を行ったキャリア成分の周波数が、前記の予め定めた値を超えるピーク値が立つ相関点に対応する、ドップラーシフト分を含めたIFキャリア周波数となる。したがって、このドップラーシフト分を含めたIFキャリア周波数が、相関点検出の結果としてDSP23において、検出される。
以上のようにして、一つのGPS衛星についての同期捕捉が完了すると、この例では、拡散符号発生部104から発生させる拡散符号を他のGPS衛星信号の拡散符号に対応するものに変更して、上記の処理を繰り返す。また、同期が取れなかった場合にも、DSP23では、拡散符号発生部104から発生させる拡散符号を他のGPS衛星信号の拡散符号に対応するものに変更して、上記の処理を繰り返す。
そして、DSP23では、サーチすべき全GPS衛星についての同期捕捉処理が終了したとき、あるいは制御演算部40のCPU41からの情報により、例えば4個以上のGPS衛星についての拡散符号の同期が取れたときに、以上の同期捕捉処理を終了する。
DSP23は、その同期捕捉の結果として検出した、同期捕捉したGPS衛星番号と、同期捕捉したGPS衛星信号の拡散符号の位相およびそのIFキャリア周波数とからなる情報を、制御演算部40に供給する。また、この例では、DSP23は、同期捕捉した各GPS衛星信号についての相関点のピーク値をも、制御演算部40に供給するようにしている。
以上の説明では、受信信号のキャリアの処理を考慮していないが、実際には、受信信号r(n)は、図48の式(3)に示すようにキャリアを含んでいる。この式(3)において、Aは振幅、d(n)はデータ、foは中間周波信号におけるキャリア角周波数、n(n)はノイズを表している。
サンプリング部21でのサンプリング周波数をfs 、拡散符号の1周期分についてのサンプリング数をN(したがって、0≦n<N)とすると、離散フーリエ変換後の離散周波数k(0≦k<N)と実周波数fとの関係は、
0≦k≦N/2ではf=k・fs /N、
N/2<k<Nではf=(k−N)・fs /N(f<0)
である。なお、離散フーリエ変換の性質により、R(k)、C(k)は、k<0およびk≧Nでは循環性を示す。
そして、受信信号r(n)から、データd(n)を得るためには、拡散符号c(n)とキャリアcos2πnf0との同期をとってキャリア成分を除去する必要がある。すなわち、後述する図48の式(2)で、R(k)のみにキャリア成分が含まれている場合には、図5にしたようなピークが立つ相関波形は得られない。
この実施の形態では、FFTによる周波数領域での処理のみの簡単な構成により、拡散符号c(n)とキャリアcos2πnf0との同期をとってキャリア成分を除去することができるようにしている。
すなわち、この実施の形態では、FFT処理部105から得られる拡散符号発生部104からの拡散符号のFFT結果は、演算制御部40の制御の元に、読み出しアドレス制御部110により、通常のように、常に、周波数が低い周波数成分から順にメモリ106から読み出して、乗算部103に供給する。
一方、FFT処理部101から得られるGPS衛星からの受信信号のFFT結果については、メモリ102からのFFT結果についての読み出し開始アドレスが、キャリア周波数に応じた分だけ最低周波数成分のアドレス位置よりもシフトしたアドレスとなるように、演算制御部40の制御の元に、読み出しアドレス制御部109により制御される。
すなわち、あるアドレス位相の周波数成分から始めて、メモリ102の全ての周波数成分を読み出しても、相関のピークが得られなかったときには、読み出しアドレス制御部109は、メモリ102からの読み出し開始アドレスを、シフト制御して、そのシフト制御したアドレスから順次FFT結果の再度の読み出しを行うようにする。
このとき、この実施形態では、読み出しアドレス制御部109は、制御演算部40からのモード切り換え制御を受けて、測位モードが高速モードのときには、読み出し開始アドレスの一回当たりのシフト量を大きくして、粗いサーチを行うようにし、また、測位モードが高感度モードのときには、読み出し開始アドレスの一回当たりのシフト量を最小(隣の周波数成分のアドレス位置にシフト)として、精細なサーチを行うようにする。
すなわち、メモリ102からは、読み出しアドレス制御部109からの制御に従って、読み出し開始アドレスがシフト制御されて、複数回、順次、受信信号のFFT結果が読み出される。このときのシフト制御量が、精細に変更されるのが高感度モードであり、粗く変更されるのが高速モードである。
つまり、高感度モードにおいては、ある読み出し開始アドレスからのFFT結果のメモリ102からの読み出しでは、相関のピークが得られなかったときには、読み出しアドレス制御部109は、メモリ102についての前記読み出し開始アドレスを、前回のものに隣接する、一つ高い周波数あるいは一つ低い周波数のアドレスにシフトして、FFT結果を読み出すようにする。そして、相関のピークが得られるようになるまで、そのような読み出し開始アドレスの精細なシフト制御を繰り返す。
これに対して、高速モードにおいては、ある読み出し開始アドレスからのFFT結果のメモリ102からの読み出しでは、相関のピークが得られなかったときには、読み出しアドレス制御部109は、メモリ102についての読み出し開始アドレスを、n個(nは2以上の整数)離れたアドレス位置にシフトして、n個離れた高い周波数あるいは低い周波数の成分から、FFT結果をメモリ102から読み出し開始するようにシフト制御する。そして、相関のピークが得られるようになるまで、そのような読み出し開始アドレスの粗いシフト制御を繰り返す。
拡散符号発生部104からの拡散符号と、受信信号に含まれる拡散符号とが同一の系列のものであれば、上記の読み出し開始アドレスのシフト制御により、いずれかの読み出し開始アドレスのときのメモリ102からのFFT結果と、メモリ106からのFFT結果とについて、相関のピークが得られる。
ところで、受信信号を得たGPS衛星についてのドップラーシフト量が正確に見積もられ、かつ、GPS受信機内部の発振周波数および時間情報を正確に校正することに基づいて検出された受信信号のキャリア周波数の情報が、GPS受信機内部で生成され、あるいは外部から取得される場合には、読み出しアドレス制御部109により、そのキャリア周波数分だけ、メモリ102の読み出し開始アドレスをシフトすることにより、相関点検出部108において、即座に相関のピークが得られる。
しかし、キャリア周波数が不明である場合には、上述のように、メモリ102からの読み出し開始アドレスを順次に、測位モードに応じたシフト量でシフトして、サーチを行い、相関のピークが得られる読み出し開始アドレスを検索する。
このように受信信号r(n)のFFT結果を、メモリ102から、受信信号のキャリア周波数分だけシフトして読み出すことにより、後述するように、キャリア成分を除去した受信信号のFFT結果と等価なFFT結果を得ることができ、そのキャリア成分を除去したFFT結果と、拡散符号の1周期分のFFT結果との乗算結果を逆拡散すれば、確実に図5のように相関点でピークを生じる相関検出出力が得られる。
なお、後述もするように、メモリ102からのFFT結果の読み出しアドレスを制御するのではなく、メモリ106からの拡散符号のFFT結果の読み出しアドレスを制御することにより、拡散符号のFFT結果に、受信信号r(n)のキャリア分を加え、乗算部103での乗算によって、上述と同様にして、キャリア成分の除去を行うようにすることもできる。
以下に、メモリ102またはメモリ106からの読み出しアドレスの制御によって、受信信号のキャリアと拡散符号との同期によるキャリア成分の除去について、DSP23でのデジタルマッチドフィルタの処理の動作説明と共に、さらに詳細に説明する。
この実施の形態において、DSP23では、デジタルマッチドフィルタの処理が行われるものであるが、このデジタルマッチドフィルタの処理の原理は、図48の式(1)に示すように、時間領域での畳み込みのフーリエ変換が周波数領域では乗算になるという定理に基づくものである。
この式(1)において、r(n)は時間領域の受信信号、R(k)はその離散フーリエ変換を表す。また、c(n)は拡散符号発生部からの拡散符号、C(k)はその離散フーリエ変換を表す。nは離散時間、kは離散周波数である。そして、F[]は、フーリエ変換を表している。
2つの信号r(n)、c(n)の相関関数を改めてf(n)と定義すると、f(n)の離散フーリエ変換F(k)は、図48の式(2)のような関係になる。したがって、r(n)を周波数変換部10からの信号とし、c(n)を拡散符号発生部104からの拡散符号とすれば、r(n)とc(n)の相関関数f(n)は、通常の定義式によらず、前記式(2)により以下の手順で計算できる。
・受信信号r(n)の離散フーリエ変換R(k)を計算する。
・拡散符号c(n)の離散フーリエ変換C(k)の複素共役を計算する。
・R(k)、C(k)の複素共役より、式(2)のF(k)を計算する。
・F(k)の逆離散フーリエ変換により相関関数f(n)を計算する。
ところで、前述したように、受信信号r(n)に含まれる拡散符号が、拡散符号発生部104からの拡散符号c(n)と一致していれば、上記手順により計算した相関関数f(n)は、図5のように相関点でピークを生ずる時間波形となる。上述したように、この実施の形態では、離散フーリエ変換および逆フーリエ変換に、FFTおよび逆FFTの高速化アルゴリズムを適用したので、定義に基づいて相関を計算するより、かなり高速に計算を行うことができる。
次に、受信信号r(n)に含まれるキャリアと拡散符号との同期について説明する。
前述したように、受信信号r(n)は、図48の式(3)に示すようにキャリアを含んでいる。受信信号r(n)から、データd(n)を得るためには、拡散符号c(n)とキャリアcos2πnf0との同期をとって除去する必要がある。すなわち、前述の図48の式(2)で、R(k)のみにキャリアが含まれている場合には、図5のような相関波形が得られない。
前述したように、ドップラーシフト量が正確に見積もられ、かつ、GPS受信機内部の発振周波数および時間情報が正確であれば、受信信号r(n)のキャリア周波数f0が既知となる。その場合には、図6に示すように、FFT処理部101の前段に乗算部121を設け、この乗算部121において受信信号r(n)と信号発生部122からの周波数f0のキャリアとを乗算して周波数変換することにより、FFTを行う前に受信信号r(n)からキャリア成分を除くことができる。
その場合には、メモリ102からは、そのキャリア成分が除去された受信信号r(n)のFFT結果が得られ、このFFT結果と、拡散符号c(n)のFFT結果とが乗算部103で乗算されるので、逆FFT処理部107の出力としては、図5のように相関点にピークを生じる時間波形が確実に得られる。
図6で括弧内に記載したように、受信信号r(n)からキャリア成分を除去するのではなく、拡散符号c(n)についてのFFT処理部105の前段に乗算部121を設けて、この乗算部121において拡散符号c(n)と信号発生部122からの周波数f0のキャリアとを乗算して周波数変換することにより、拡散符号にキャリア成分を加えるようにしても同様である。
すなわち、その場合には、メモリ102から読み出した受信信号のFFT結果に含まれるキャリア成分と、メモリ106から読み出した拡散符号のFFT結果に含まれる、加えられたキャリア成分とが同期しているため、逆FFT処理部107からは、図5のように相関点でピークを生じる相関検出出力が得られる。
しかし、この図6のように時間領域の信号にキャリア周波数の信号を乗算する方法による場合には、キャリア成分を除くための乗算部が特に必要になり、構成が複雑になると共に、その乗算演算の分だけ、処理速度が遅くなるという不利益がある。また、キャリア周波数が未知である場合には、信号発生部22を可変周波数発振器の構成として、周波数サーチを行う手段がさらに必要となる。
一方、FFTの性質として、上述のような周波数乗算は、図48の式(4)のように表すことができる。この式(4)で、F[]は離散フーリエ変換、φ0 はキャリアとの位相差、k0 はf0 に対応するkであって、f0 =k0 ・fs /Nである。この式(4)より、受信信号r(n)を図6のように周波数変換した信号のFFTは、r(n)のFFTであるR(k)を、キャリア周波数分k0だけシフトした形になる。
以上のことから、図6の構成は、図7のような構成に置換可能となる。すなわち、受信信号r(n)や拡散符号c(n)にキャリア周波数を乗算する代わりに、受信信号のFFT結果または拡散符号のFFT結果をメモリ102またはメモリ106からの読み出す際の読み出しアドレスを、キャリア周波数分だけシフトするようにするものである。
この場合に、図7で、受信信号r(n)をシフトする場合はダウンコンバージョンで、k0 >0とし、また、拡散符号c(n)をシフトする場合はアップコンバージョンで、k0 <0とする。
以上説明したように、式(4)に示したFFTの性質を利用すれば、図6の信号発生器122は不要になり、図7のように、FFT結果のメモリからの読み出しアドレス位相をシフトするだけでよくなり、構成が簡単になると共に、処理の高速化につながる。
なお、前述の式(4)における位相差φ0 は未知であるため、図7では無視しているが、例えば、図48の式(5)により計算されるF’(k)の逆FFTの演算結果として得られる相関関数f’(n)(0≦n<N)は複素数となり、その実部をfR’(n)、虚部をfI’(n)とすると、相関ピークの振幅|f’(n)|は、図48の式(6)に示すようにして得られ、位相φは、図48の式(7)に示すようにして得られるので、式(4)の右辺のexp(jφ0 )の乗算は省略してよい。なお、位相φ は、式(3)のデータd(n)の符号に対応したπだけ異なる2つの値に式(7)のφ0が加わった値となる。
GPS衛星信号のキャリア周波数が既知とした場合において、DSP23における同期捕捉処理の動作を図4のブロック図に反映させた構成図の例を図8に示す。この図8の各ブロックの出力には、上述したような信号出力r(n)、c(n)および演算結果R(k)、C(k)、f'(n)が示されている。この図8は、メモリ102における読み出し開始アドレスのアドレスシフト量が、丁度、キャリア周波数分に相当する分となっている状態におけるものである。
次に、キャリア周波数が未知である場合には、図4に示したように、読み出しアドレス制御部109は、相関点検出部108からの相関検出出力に基づいて読み出し開始アドレスをシフト制御する。すなわち、読み出しアドレス制御部109は、相関点検出部108の相関結果を解析し、相関のピークが得られるまで、メモリ102(またはメモリ106)の読み出し開始アドレスのシフト制御を行うものである。
この場合に、読み出しアドレス制御部109は、制御演算部40からの測位モードの情報により、そのときの測位モードが高速モードか、高感度モードかを認識し、認識結果の測位モードに応じたシフト量で、メモリ102(またはメモリ106)の読み出し開始アドレスのシフト制御を行うものである。
この場合において、メモリ102(またはメモリ106)のFFT結果の読み出し開始アドレスの初期値は、過去のデータから決定した予測アドレスとされる。すなわち、読み出しアドレス制御部109は、受信信号r(n)のFFT結果のメモリ102からの読み出し開始アドレスを、前記過去のデータから決定した予測アドレスを読み出し開始アドレスの初期値として、この初期値を中心に、測位モードに応じたシフト量で、相関点検出部108の相関検出出力に基づいて変更制御して、相関点検出部108で図5に示したようなピークが得られるようにする。
相関点検出部108で図5に示したようなピークが得られたときには、読み出しアドレス制御部109は、読み出し開始アドレスのシフト制御を、そのときのシフト量で停止するようにする。その停止したときのアドレスシフト位置により、拡散符号の位相およびキャリア周波数が求まる。
以上の同期捕捉の第1の例における同期捕捉部20での処理の流れを、図9〜図11のフローチャートを参照しながら説明する。なお、この図9〜図11のフローチャートは、主としてDSP23でのソフトウエア処理に対応するものである。
まず、周波数変換部10からのIFデータをサンプリング回路21でサンプリングし、信号r(n)としてRAM22に取り込む(ステップS1)。次に、この信号r(n)をFFT処理部101でFFT処理し、そのFFT結果R(k)をメモリ102に書き込む(ステップS2)。次に、信号を受信したGPS衛星に対応する拡散符号のFFT結果C(k)をメモリ106にセットする(ステップS3)。
次に、受信信号r(n)のFFT結果R(k)のメモリ102からの読み出し開始アドレスのシフト量の初期値k0’を、過去のデータから決定する(ステップS4)。そして、決定した初期値k0’を、メモリ102からのFFT結果の読み出し開始アドレスのシフト量k'として設定すると共に、シフト制御の変更回数vを初期値v=0にセットする(ステップS5)。
次に、メモリ102から、受信信号r(n)のFFT結果R(k)を、読み出し開始アドレスを、k'だけシフトして読み出す(ステップS6)。そして、読み出したFFT結果R(k−k')と、拡散符号のFFT結果C(k)の複素共役とを乗算して相関関数F’(k)を求める(ステップS7)。
次に、この相関関数F’(k)の逆FFTを行って時間領域の関数f’(n)を求める(ステップS8)。そして、この関数f’(n)について、ピーク値f’(np)を求め(ステップS9)、そのピーク値f’(np)が予め設定されているスレッショールド値fthより大きいかどうか判別する(図10のステップS11)。
ステップS11において、ピーク値f’(np)が、予め設定されているスレッショールド値fthより大きいと判別したときには、そのピーク値f’(np)を取る離散時間(拡散符号の位相)npを相関点として検出する(ステップS12)。
そして、検出した相関点npが、4個目であるか否か判別し(ステップS13)、4個目であると判別したときには、受信機位置計算処理を開始し、同期保持部30における同期保持処理をする(ステップS14)。その後、ステップS15に移行する。ステップS14の処理は、4個目以降でも行うにようにしてもよい。
なお、ステップS12で検出した相関点npが得られるときの読み出し開始アドレスのシフト量k'から、当該受信中のGPS衛星についてのドップラーシフト量およびGPS受信機の発振周波数の誤差を推定することができる。すなわち、受信信号のキャリア周波数を検知することができる。
ステップS13で、検出した相関点npが、4個目以外であると判別したときには、サーチすべきすべての衛星について、上述の拡散符号同期サーチ処理が終了したか否か判別し(ステップS15)、サーチすべきすべての衛星についての拡散符号同期サーチ処理が終了したと判別したときには、サーチ動作を終了する(ステップS16)。
また、ステップS15で、拡散符号同期サーチが終了していない衛星があると判別したときには、次に拡散符号同期サーチを行う衛星を選択し、その選択した衛星が用いる拡散符号c(n)に拡散符号を変更する(ステップS17)。そして、ステップS3に戻り、上述したステップS3以降の処理を実行する。
ステップS11での判別の結果、ピーク値f’(np)が、予め設定されているスレッショールド値fthより小さく、相関点が検出できなかったときには、現在モードは何であるかを判別する(図11のステップS21)。そして、現在モードが高感度モードであると判別したときには、シフト制御の変更回数vが予め設定された最大値vmaxよりも小さいかどうか判別する(ステップS22)。この最大値vmaxは、周波数に換算したときに、1kHzに相当する。
そして、シフト制御の変更回数vが予め設定された前記最大値vmaxよりも小さいと判別したときには、シフト制御の変更回数vを1だけインクリメント(v=v+1)すると共に、新たなシフト量k'を、
k'=k'+(−1)v×v
として設定し(ステップS23)、その後、図9のステップS6に戻る。そして、上述したステップS6以降の処理を繰り返す。
また、ステップS21で現在モードが高速モードであると判別したときには、高速モードでは、高感度モードのときのシフト量のn倍(nは2以上の整数)でメモリ102からの読み出し開始アドレスのシフトを行うことから、シフト制御の変更回数vのn倍が予め設定された最大値vmaxよりも小さいかどうか判別する(ステップS24)。
そして、シフト制御の変更回数vのn倍が予め設定された前記最大値vmaxよりも小さいと判別したときには、シフト制御の変更回数vを1だけインクリメント(v=v+1)すると共に、新たなシフト量k'を、
k'=k'+(−1)v×n×v
として設定し(ステップS25)、その後、図9のステップS6に戻る。そして、上述したステップS6以降の処理を繰り返す。
また、ステップS22で、シフト制御の変更回数vが、予め設定された前記最大値vmaxよりも大きいと判別したとき、また、ステップS24で、シフト制御の変更回数vのn倍が、予め設定された前記最大値vmaxよりも大きいと判別したときには、そのように大きいと判別された回数が、現在のRAM22のデータに対して予め定められた所定回数以上となったか否か判別し(ステップS26)、前記所定回数以上でなければ、ステップS1に戻り、RAM22に新たなデータを取り込んで、以上の処理を繰り返す。
また、ステップS26で、前記所定回数以上であると判別したときには、サーチすべきすべての衛星について、上述の拡散符号同期サーチ処理が終了したか否か判別し(ステップS27)、すべての衛星についての拡散符号同期サーチ処理が終了したと判別したときには、同期捕捉ができなかったことを、同期捕捉部20から制御演算部40に通知し(ステップS28)、サーチ動作を終了する(ステップS29)。
また、ステップS27で、拡散符号同期サーチが終了していないサーチすべき衛星があると判別したときには、次に拡散符号同期サーチを行う衛星を選択し、その選択した衛星が用いる拡散符号c(n)に拡散符号を変更する(ステップS30)。そして、ステップS3に戻り、上述したステップS3以降の処理を実行する。
以上説明したような同期捕捉の第1の例の処理動作を、図4のDSP23の内部構成のブロック図に反映させた構成図を図12に示す。この図12の各ブロックの出力には、上述したような信号出力および演算結果が示されている。
以上のように、DSP23での捕捉処理の第1の例によれば、GPS受信機において、FFTを利用してデジタルマッチドフィルタを構成する場合に、図12のように、受信信号のFFT結果のメモリからの読み出し開始アドレスを、キャリア周波数分だけ、シフトして、拡散符号と乗算する構成によって、所定の値以上のピークを示す相関点np を得ることができる。そして、4個のGPS衛星、つまり4種類の拡散符号c(n)について、相関点np が判れば、GPS受信機位置の計算が可能になる。
すなわち、第1の例によれば、FFTを利用したデジタルマッチドフィルタ処理を行う場合において、受信信号のキャリアと拡散符号との同期を取るために、時間領域で乗算を行うことなく、受信信号のFFT結果と拡散符号のFFT結果同士の周波数領域での乗算の際に、受信信号のFFT結果と拡散符号のFFT結果のうちの一方のFFT結果をシフトするという簡便な方法により、受信信号のキャリア成分を除去することができる。
なお、図8および図12では、受信信号のFFT結果R(k)の方の、メモリ102の読み出しアドレスをシフトさせたが、拡散符号のFFT結果C(k)の方のメモリ106の読み出しアドレスを、受信信号のFFT結果R(k)の場合とは逆方向にシフト(乗算器でのアップコンバージョンの形になる)しても良い。
また、上述の第1の例の説明においては、拡散符号発生器104とFFT処理部105とを別々に設けるようにしたが、それぞれのGPS衛星に対応する拡散符号を予めFFTしておいたものをメモリに記憶させておくことで、衛星信号の受信時における拡散符号c(n)のFFT計算を省略することができる。
[測位モードの設定処理]
次に、この例のGPS受信機における測位モードの設定処理について、図13およびその続きである図14のフローチャートを参照しながら説明する。この図13および図14のフローチャートの各ステップは、主として、制御演算部40のCPU41の処理動作を示すものである。
まず、電源の投入を待ち(ステップS41)、電源が投入されたら前回の最後の測位モードを検出する(ステップS42)。次に、検出した測位モードがオートモードであるかマニュアルモードであるか判別する(ステップS43)。
そして、マニュアルモードであると判別したときには、高速モードか高感度モードかを判別する(ステップS44)。このステップS44で、高速モードであると判別したときには、同期捕捉部20に高速モードを通知して、同期捕捉部20の測位モードを高速モードにする(ステップS45)。
次に、同期捕捉部20から、衛星電波を捕捉することができず、衛星電波の受信ができない旨の通知を受け取ったか否か判別し(ステップS46)、前記通知を受け取ったと判別したときには、図15に示すように、GPS受信機のディスプレイ5の画面に、例えば「高速モードで電波を受信できませんでした。」と表示して、現在モードが高速モードであること、および現在モードでは衛星電波を受信できないことをユーザに告知する(ステップS47)。
このとき、後述のオートモードの場合には、高感度モードへの切り換えについての問い合わせをするが、マニュアルモードでは、ユーザによる切り換えを促す趣旨であるため、上述のような告知を行うものである。勿論、図15の告知表示において、測位モードの変更を促したり、電波のより強い場所への移動を促したりする告知を併せて行うようにしてもよい。
この図15の告知表示を見て、ユーザは、測位モードを高感度モードに変更したり、電波の強い場所に移動したりすることができる。また、この告知表示により、GPS受信機の現在状況を知ることができるので、なかなか測位結果が表示されずにユーザがいらいらするという事態を防止することもできる。
ステップS46において、衛星電波の受信ができない旨の通知を受け取らなかったとき、また、ステップS47の次には、例えばジョグダイヤル7を用いたユーザによる測位モードの変更指示があったか否か判別し(ステップS48)、変更指示がなかったと判別したときには、電源がオフにされたか否か判別し(ステップS55)、電源がオフにされたときには、そのときの測位モードをラストモードとして不揮発性のメモリ(図示は省略)に記憶して(ステップS56)、この処理ルーチンを終了する。また、電源がオフにされなかったときには、ステップS45に戻る。
また、ステップS48で、測位モードの変更指示があったと判別したときには、測位モード選択変更処理を実行し(ステップS49)、変更結果として決定された測位モードを認識し(ステップS50)、その後、ステップS43に戻る。
また、ステップS44で、高感度モードであると判別したときには、同期捕捉部20に高感度モードを通知して、同期捕捉部20の測位モードを高感度モードにする(ステップS51)。
次に、同期捕捉部20から、衛星電波の受信ができたが、測位位置が正確でない可能性がある旨の通知を受け取ったか否か判別し(ステップS52)、前記通知を受け取ったと判別したときには、図16に示すように、GPS受信機のディスプレイ5の画面に、例えば「高感度モードですが、電波が弱く、位置が正確でない可能性があります。」と表示して、現在モードが高感度モードであること、および現在モードでは正確な測位位置を検出できないことをユーザに告知する(ステップS53)。この場合にも、図16の告知表示において、電波のより強い場所への移動を促したりする告知を併せて行うようにしてもよい。
この告知表示により、ユーザは、GPS受信機の現在状況を知ることができて、測位結果を的確に利用することができる。
ステップS52において、測位位置が正確でない可能性がある旨の通知を受け取らなかったとき、また、ステップS53の次には、例えばジョグダイヤル7を用いたユーザによる測位モードの変更指示があったか否か判別し(ステップS54)、変更指示がなかったと判別したときには、電源がオフにされたか否か判別し(ステップS57)、電源がオフにされたときには、そのときの測位モードをラストモードとして不揮発性のメモリ(図示は省略)に記憶して(ステップS58)、この処理ルーチンを終了する。また、電源がオフにされなかったときには、ステップS51に戻る。
また、ステップS54で、測位モードの変更指示があったと判別したときには、測位モード選択変更処理を実行し(ステップS49)、変更結果として決定された測位モードを認識し(ステップS50)、その後、ステップS43に戻る。
また、ステップS43において、測位モードがオートモードであると判別したときには、この例の場合には、オートモードの初期モードは高速モードとしているので、同期捕捉部20の測位モードを高速モードにする(図14のステップS61)。
次に、同期捕捉部20から、衛星電波を捕捉することができず、衛星電波の受信ができない旨の通知を受け取ったか否か判別し(ステップS62)、前記通知を受け取ったと判別したときには、図17に示すように、GPS受信機のディスプレイ5の画面に、例えば「高速モードで電波を受信できませんでした。これより高感度モードで受信を始めます」と表示して、現在モードがオートモードの高速モードであること、および現在モードでは衛星電波を受信できないので、高感度モードに変更することをユーザに告知する(ステップS63)。そして、同期捕捉部20の測位モードを高感度モードに変更する(ステップS64)。
その後、GPS受信機の位置が移動するなどして受信電界強度が上がったか否か判別し(ステップS65)、上がったときには、同期捕捉部20の測位モードを高感度モードに戻す(ステップS66)。そして、ステップS62に戻る。
また、ステップS65で、受信電界強度が上がっていないと判別したときには、ユーザによる測位モードの変更指示があったか否か判別し(ステップS67)、変更指示がなかったと判別したときにはステップS65に戻る。また、ステップS67で、測位モードの変更指示があったと判別したときには、測位モード選択変更処理を実行し(ステップS69)、変更結果として決定された測位モードを認識し(ステップS70)、その後、ステップS43に戻る。
また、ステップS62で衛星電波の受信ができない旨の通知を受け取らなかったときには、ユーザによる測位モードの変更指示があったか否か判別し(ステップS68)、変更指示がなかったと判別したときにはステップS62に戻る。また、ステップS68で、測位モードの変更指示があったと判別したときには、測位モード選択変更処理を実行し(ステップS69)、変更結果として決定された測位モードを認識し(ステップS70)、その後、ステップS43に戻る。
図14のオートモードについての動作処理は、図18のようにすることもできる。すなわち、この図18の例においては、図14のフローチャートにおけるステップS63の代わりに、ステップS71、ステップS72が設けられる。
そして、図18の例においては、ステップS62で、衛星電波の受信ができない旨の通知を受け取ったと判別したときには、図19に示すように、GPS受信機のディスプレイ5の画面に、例えば「高速モードで電波を受信できませんでした。これより高感度モードで受信を始めて良いですか?」と表示して、現在モードがオートモードの高速モードであること、および現在モードでは衛星電波を受信できないので、高感度モードに変更しても良いかどうかをユーザに問い合わせる告知をする(ステップS71)。このとき、図19に示すように、ディスプレイ5の画面には、問い合わせに対するユーザの応答入力を受け付ける表示として、例えば[YES]、[NO]を併せて表示する。
そして、ユーザの応答を判別し(ステップS72)、[YES]が選択操作されて高感度モードへの変更が承認されたときには、同期捕捉部20の測位モードを高感度モードに変更する(ステップS64)。
また、ユーザにより[NO]が選択操作されて、高感度モードへの変更が拒否されたときには、ステップS68に進んで、ユーザによる測位モードの変更指示があったか否か判別し、変更指示がなかったと判別したときにはステップS62に戻る。その他は、図14の例の場合と同様とする。
この図18の例によれば、オートモードであっても、ユーザの意志を反映した測位モードの切り換えを行うことができるようになり、便利である。
[測位モードの選択操作処理]
次に、上述の例におけるステップS49およびステップS69の測位モード選択変更処理について、図20のフローチャートを参照しながら説明する。この図20のフローチャートの各ステップは、主として、制御演算部40のCPU41の処理動作を示すものである。
まず、ユーザがジョグダイヤル7を回転させて、メニュー表示を選択し、そのメニューから測位モードを選択したか否か判別し(ステップS80)、測位モードが選択されると、制御演算部40のCPU41は、図21に示すように、ディスプレイ5の画面にメニューおよびオートモードとマニュアルモードとの選択肢を表示する(ステップS81)。
この状態で、ジョグダイヤル7あるいはカーソルボタン63により、オートモードとマニュアルモードとのいずれかのモードの選択肢の選択操作がなされたかどうかを判別し(ステップS82)、モードの選択肢が選択されないと判別したときには、ジョグダイヤル7により中止が選択されたか否か判別し(ステップS83)、中止が選択されたと判別したときには、この処理ルーチンを終了する。中止が選択されなかったと判別したときには、ステップS82に戻る。
そして、ステップS82で、モードの選択肢が選択されたと判別したときには、選択されたのはいずれであるかを判別する(ステップS84)。そして、選択されたのが、オートモードであると判別したときには、制御演算部40のCPU41は、同期捕捉部20の測位モードをオートモードと決定する(ステップS85)。
前述したように、この例においては、オートモードのときには、初期モードは、高速モードとするので、その旨を同期捕捉部20に通知する。そして、このステップS85の後は、ステップS80に戻る。この通知を受けた同期捕捉部20のDSP23は、高速モードに設定され、メモリ102の読み出しアドレスシフトを粗くして、同期捕捉動作を行う。
ステップS84でマニュアルモードが選択されたと判別したときには、図22に示すように、GPS受信機のディスプレイ5の画面に、高速モードと、高感度モードとの選択肢の表示を行う(ステップS86)。
この状態で、ジョグダイヤル7あるいはカーソルボタン63により、高速モードと高感度モードとのいずれかのモードの選択肢の選択操作がなされたかを判別し(ステップS87)、モードの選択肢が選択されないと判別したときには、ジョグダイヤル7により中止が選択されたか否か判別し(ステップS88)、中止が選択されたと判別したときには、ステップS80に戻る。ステップS88で中止が選択されなかったと判別したときには、ステップS87に戻る。
そして、ステップS87で、モードの選択肢が選択されたと判別したときには、選択されたのはいずれであるかを判別する(ステップS89)。そして、選択されたのが、高感度モードであると判別したときには、制御演算部40のCPU41は、同期捕捉部20の測位モードを高感度モードと決定し、その旨を同期捕捉部20に通知する(ステップS90)。また、選択されたのが、高速モードであると判別したときには、制御演算部40のCPU41は、同期捕捉部20の測位モードを高速モードと決定し、その旨を同期捕捉部20に通知する(ステップS91)。
通知を受けた同期捕捉部20は、前述したように、高感度モードのときには、メモリ102の読み出し開始アドレスのシフトを細かくして、同期捕捉動作を行い、高速モードのときには、メモリ102の読み出し開始アドレスのシフトを粗くして、同期捕捉動作を行う。ステップS90およびステップS91の後は、ステップS80に戻る。
以上のようにして、同期捕捉の第1の例によれば、GPS衛星からの受信信号のキャリア周波数が未知であっても、FFTによる周波数領域での処理を積極的に用いて、受信信号のキャリアと拡散符号との同期検出を行って、キャリア成分を除去することができる。したがって、FFTを利用したデジタルマッチドフィルタによるGPS受信信号と拡散符号との相関点の検出を、高速、かつ簡単な構成で実現することができる。そして、メモリ102の読み出し開始アドレスのシフト量から、IFキャリア周波数を検出することができる。
そして、上述の例によれば、GPS受信機は、高速モードと、高感度モードとの二つのモードを備えることにより、受信場所や受信環境に応じて、常に、迅速かつ正確に測位を行えるようにすることが可能になる。
そして、上述の例によれば、高速モードと、高感度モードとを、ユーザの手動操作により切り換え選択することができると共に、現在モードと、衛星電波の受信状況をユーザに告知するようにしたので、その告知に基づいて、ユーザは、適切な測位モードを選択することができるという効果がある。
また、上述の例のGPS受信機においては、衛星電波が弱く、高速モードでは受信しにくいときには、測位モードを、自動的に高感度モードに変更することができるので、使い勝手がよい。また、その際に、ユーザに告知されるので、ユーザは、GPS受信機の現在の受信状況を的確に把握することができる。
また、測位モードを高速モードから高感度モードに切り換える際に、ユーザに承認を得るようにした場合には、ユーザ毎の使い勝手を優先した測位モードのオートモードを実現することができる。
なお、GPS受信機のディスプレイ5の画面には、常に、現在の測位モードが何であるかを表示しておくようにしてもよい。
なお、上述の例において、それぞれの衛星に対応する拡散符号を予めFFTしておいたものをメモリに記憶させておくことで、衛星信号の受信時における拡散符号c(n)のFFT計算を省略することができる。つまり、図4の拡散符号発生部104およびFFT処理部105を省略することができる。
[測位モードの選択処理の他の例]
図23は、この例の場合におけるGPS受信機の外観を示すものである。この例においては、前述したジョグダイヤル7を用いて測位モードの選択切り換え設定ができるほか、「室内」、「戸外」、「ビルの谷間」などの受信位置を指示するための操作ボタン64,65,66を設け、それらの操作ボタン64,65,66のいずれかが押されると、GPS受信機は、それぞれの操作ボタンに対応して予め定められている測位モードで同期捕捉を行うようにするものである。
すなわち、この例においては、操作ボタン64は「室内」ボタンであり、この操作ボタン64が押されると、GPS受信機は、高感度モードで同期捕捉を行うように設定されている。また、操作ボタン65は「戸外」ボタンであり、この操作ボタン65が押されると、GPS受信機は、高速モードで同期捕捉を行うように設定されている。
さらに、操作ボタン66は「ビルの谷間」ボタンであり、この操作ボタン66が押されると、GPS受信機は、高速モードで同期捕捉を行うように設定されている。そして、ビルの谷間ではマルチパスが多いことから、より正確であろう電波を選択するように同期捕捉部20を制御する。
すなわち、同期捕捉部20では、受信電界強度が強い環境であって、かつ、マルチパスが多い環境では、複数個の電波を同時に捕捉する状態になる。この場合に、ビルなどに反射した電波は、衛星からの直接波に比べて遅延したものとなる。そこで、GPS受信機では、ビルの谷間ボタン66が操作されたときには、同時に捕捉した複数個の電波のうちの、相関の強さではなく、GPS受信機に最も早く到達したもの(位相的に最も遅延の小さいもの)を衛星からの直接波として捕捉するようにする。
図24は、この例の場合におけるGPS受信機の測位モード選択処理を説明するためのフローチャートである。このフローチャートにおける各ステップは、主として制御演算部40のCPU41が実行するものである。
まず、図20のステップS80と同様に、ユーザがジョグダイヤル7を回転させて、メニュー表示を選択し、そのメニューから測位モードを選択したか否か判別し(ステップS101)、測位モードが選択されると、前述の図20のステップS81以降の処理を行い、ステップS101に戻る。
そして、この例においては、ステップS101で、メニューからの測位モードの選択がなされないと判別されたときには、「室内」ボタン64が押されたか否か判別し(ステップS102)、押されたと判別したときには、制御演算部40のCPU41は、同期捕捉部20の測位モードを高感度モードと決定し、その旨を同期捕捉部20に通知する(ステップS103)。そして、ステップS101に戻る。
ステップS102で、「室内」ボタン64は押されなかったと判別したときには、「戸外」ボタン65が押されたか否か判別し(ステップS104)、押されたと判別したときには、制御演算部40のCPU41は、同期捕捉部20の測位モードを高速モードと決定し、その旨を同期捕捉部20に通知する(ステップS105)。そして、ステップS101に戻る。
ステップS104で、「戸外」ボタン65は押されなかったと判別したときには、「ビルの谷間」ボタン66が押されたか否か判別し(ステップS106)、押されたと判別したときには、制御演算部40のCPU41は、同期捕捉部20の測位モードを高速モードと決定し、その旨と、前述したマルチパスを考慮した同期捕捉処理を行うようにする指示とを同期捕捉部20に通知する(ステップS107)。そして、ステップS101に戻る。
この例によれば、ユーザは、高感度モードと、高速モードがどの環境に適応しているかを知らなくても、自分が現在、GPS受信機を使用している環境を示す操作ボタンを操作するだけで、GPS受信機を適切な測位モードに設定することができるという効果がある。
この例においても、ディスプレイ5の画面には、室内モード、戸外モード、ビルの谷間モード、あるいは、それらに対応する高感度モードまたは高速モードをそれぞれ示す表示して、現在モードが何であるかをユーザに報知するようにしてもよい。
〔デジタルマッチドフィルタによる同期捕捉の第2の例〕
上述したように、デジタルマッチドフィルタによって受信信号と拡散符号の相関点を検出する場合には、その相関点を検出する単位データ長は、拡散符号の1周期長とするのが通常である。
しかし、GPS衛星からの受信信号では、前述したように、データの1ビットは、拡散符号の20周期分であり、この20周期分では、すべて同じパターンの符号となっている。この同期捕捉の第2の例では、この特質を生かして、デジタルマッチドフィルタによって受信信号と拡散符号の相関点を検出する単位データ長は、拡散符号の複数周期長とする。サンプリング回路21におけるサンプリング周波数は、前述の例と同様でよい。
受信信号について、拡散符号の複数周期分単位でFFT演算処理をすることにより、この同期捕捉の第2の例によれば、IFキャリア周波数の検出精度が高くなると共に、受信感度が向上し、同じ時間領域の信号を累積加算する方法に比べて、拡散符号の同期捕捉およびIFキャリア周波数のサーチがし易くなる。以下、この同期捕捉の第2の例を、さらに説明する。
時間領域において、拡散符号のM周期(Mは2以上の整数)に渡って累積加算を行った1周期長のデータに対して相関点を検出する先行例がある(例えば米国特許4998111号明細書または「An Introduction to Snap TrackTM Server−Aided GPS Technology, ION GPS−98 Proceedings」参照)。
すなわち、図25に示すように、この先行例の方法においては、受信信号r(n)について、拡散符号との乗算結果を、M周期分に渡って累積加算するものである。この先行例の方法は、GPS衛星からの受信信号の周期性とノイズの統計的な性質とを利用してC/Nを高めるもので、受信信号のキャリアと拡散符号の同期が事前にとれている状態であれば、C/NがM倍に改善され、したがって受信感度(相関点の検出感度)はM倍に向上する。そして、キャリア周波数の検出精度のM倍に向上する。
しかし、受信信号のキャリアと拡散符号との同期がとれていないと位相の異なるM個のキャリアが加算合成されてしまい、累積加算した結果においては肝心のGPS信号が相殺されてしまって相関ピークは検出できなくなる。
このため、受信信号のキャリア周波数が未知の場合には、キャリア周波数をサーチする必要があり、サーチする各々の周波数毎に累計加算を行うといった効率の悪い操作を行わざるを得なくなる。
これに対して、上述した同期捕捉の第1の例では、上述したようにして周波数領域において、FFT結果のメモリからの読み出しアドレスをシフトするという簡便な方法により、受信信号のキャリアと拡散符号との同期がとれるので、累積加算の効果を最大限に発揮させることができる。
この同期捕捉の第2の例では、上述の第1の例と同様に、GPS衛星からの受信信号のキャリア周波数は未知として、キャリア周波数のサーチを行うのであるが、その場合に、受信信号r(n)については、拡散符号のM周期分毎にFFTを行うようにする。そして、この拡散符号のM周期分毎に、受信信号のFFT結果のメモリからの読み出しアドレスのシフト量の制御による受信信号のキャリア周波数のサーチを行う。
前述した図48の式(3)中のデータd(n)は、M≦20とすれば、拡散符号のM周期中では1または−1の固定値になるので無視できる。すると、式(3)は、
r(n)=A・c(n)cos2πnf0 +n(n)
となり、これをM周期長で離散フーリエ変換すると、データの数はM×N(Nは拡散符号の1周期分のデータ数)なので、離散フーリエ変換後のkと実周波数fの関係は、サンプリング周波数fs に対して
0≦k≦MN/2では、f=kfs /MN
となり、
MN/2<k<MNでは、f=(k−MN)fs /MN(ただしf<0)
となって、分解能がM倍になる。
しかし、拡散符号c(n)は周期信号であり、その1周期長の時間をT(GPSのC/AコードではT=1ミリ秒)とすると、f=1/T以下の精度の周波数成分はない。したがって、受信信号r(n)の離散フーリエ変換後のFFT結果R(k)(ただし、0≦k<MN)中の拡散符号c(n)の周波数成分はM個おき、すなわち、MN個のデータのうちのN個の点に集中し、その振幅は、M周期分が累積加算されるため、1周期長での同じ周波数成分のM倍になる。説明の簡単のため、M=4としたときのスペクトラム例を図26に示す。
図26の例では、信号のスペクトラムがM=4個おきにあり、それらの間には信号成分はない。N個の点以外では、拡散符号c(n)の周波数成分は0になる。一方、ノイズn(n)は、多くの場合、非周期信号であるから、MN個の全周波数成分にエネルギーが分散される。したがって、受信信号r(n)のFFT結果R(k)中における拡散符号c(n)のN個の周波数成分の総和において、時間領域での累積加算と同様に、C/NがM倍向上することになる。
受信信号r(n)中に、式(3)に示したキャリア成分cos2πnf0がなければ、FFT結果R(k)中の拡散符号c(n)の周波数成分は、k=i×M(ただし、0≦i<N)に集中するが、キャリア成分が存在するので、この第3の例では、メモリからのFFT結果R(k)の読み出しアドレスを、拡散符号の1周期当たりについて、k=(i×M)−k0 として、キャリア周波数分のk0 だけ循環的にシフトするようにする。
以上説明した第2の例のDSP23の構成は、図4に示したものと同様となるが、RAM22の容量は、拡散符号のM周期分、例えば16周期分(16ミリ秒)とされ、DSP23では、この拡散符号のM周期分のデータ単位で、捕捉処理動作を行う。上述の捕捉処理動作を、DSP23の内部構成に反映させた構成図を図27に示す。
すなわち、FFT処理部101からは、FFT演算処理単位を拡散符号のM周期とするFFT結果R(K)が得られ、メモリ104に書き込まれる。この図27では、0≦k<N、0≦K<MNとしている。
そして、このメモリ102から、読み出しアドレスがシフト制御されてFFT結果が読み出されて乗算部103に供給され、メモリ106からの拡散符号c(n)のFFT結果C(k)の複素共役と乗算される。
この第3の例の場合、この乗算部103から得られる相関関数F(k)は、図48の式(8)に示すようなものとなるようにされる。なお、式(8)で、kは、拡散符号のFFT結果C(k)の複素共役におけるkであり、k0 については、f0 =k0 ・fs /MNである。
このとき、図27において、逆FFT処理部107から得られる相関関数f’(n)のピークは、R(K)がM周期の拡散符号を含むので、0≦n<MNの範囲においてM個現れることになる。しかし、相関点の検出は、拡散符号の1周期についての1個でよいので、逆FFT処理部107での計算は、前述の第1および第2の実施の形態の場合と同様に、0≦n<Nの範囲だけで済み、N≦n<MNにおける計算は必要ない。
以上のようにして、この第2の例によれば、受信信号r(n)のFFTを拡散符号の1周期のM倍とすることにより、相関点の検出感度、したがって、受信感度を向上させることができる。この場合に、Mが大きいほど、受信感度が高くなるものである。したがって、Mの値を制御することにより、受信感度を制御することが可能になる。
以上のことから、この同期捕捉の第2の例を用いるGPS受信機の実施形態においては、この同期捕捉の第2の例を高感度モードのときに用いるようにし、高速モードのときには、通常のように、相関点を検出する単位データ長は、拡散符号の1周期長とするようにする。
なお、高感度モードのみでなく、高速モードにおいても、この同期捕捉の第2の例を用いるようにしてもよい。
さらに、高感度モードのみでなく、高速モードにおいても、この同期捕捉の第2の例を用いる場合において、相関点を検出する単位データ長を決める前記Mの値を、高感度モードでは、高速モードの場合よりも大きくするように構成してもよい。
なお、この同期捕捉の第2の例の場合においても、それぞれの衛星に対応する拡散符号をあらかじめFFTしておいたものをメモリに記憶させておくことで、衛星信号の受信時における拡散符号c(n)のFFT計算を省略することができる。
〔デジタルマッチドフィルタによる同期捕捉の第3の例〕
前述の同期捕捉の第2の例では、拡散符号のM周期(M>1)分を含む受信信号r(n)をFFT処理することで、未知のキャリア周波数のサーチを可能にすると共に、受信感度の向上を図ることができるものであるが、データサンプルの数が、拡散符号1周期分の場合のN個からM倍のMN個になるため、FFTの計算時間が長くなると共に、メモリ102の容量が大きくなる。同期捕捉の第3の例は、この問題を改善したものである。
図26に示したように、拡散符号のM周期(M>1)をFFT処理単位とした場合のFFT結果R(K)中の周波数成分はM個おきにしか存在しないので、それらのM個おきの周波数成分の間の成分は不要である。
ここで、FFT結果R(K)(ただし、0≦K<NM)を、R(i×M)、R(i×M+1)、R(i×M+2)、・・・、R(i×M+M−1)(0≦i<N)のM組に分ける。説明の簡単のため、M=4組に分けた場合の、それぞれの組の分割スペクトラムの例を図28〜図31に示す。キャリア周波数は未知であるが、M組のうちの1組に、相関を検出する対象となるGPS信号のエネルギーがある。図28〜図31の例では、図28のR(i×M)の組に、受信信号r(n)の周波数成分が含まれ、それ以外の3つの分割スペクトラムにはノイズしかない状態を表している。
なお、実際の信号ではキャリア周波数k0は、正確にはk'=k0でないため、例えばk0がk0’とk0’+1との間、つまり、k0’≦K<k0’+1であったとすると、k'=k0’と、k'=k0’+1との両方で相関が検出され、k0に近い方が大きな相関を示す。
FFT結果R(K)を前記のようにM組に分割した場合、Mが2のべき乗であれば、FFT計算手順の性質から、各組は、それぞれ独立に計算できる。
図32は、8個のデータg(0)〜g(7)のFFT計算の信号の流れ図である。図32のFFT結果G(K)を、4個おきのデータに分けるとすると、(G(0),G(4))、(G(1),G(5))、(G(2),G(6))、(G(3),G(7))の4組となる。この中の(G(0),G(4))に注目すると、図33に示す部分だけの計算でよいことが判る。そして、この計算の構造は、他の組(G(1),G(5))、(G(2),G(6))、(G(3),G(7))においても同様となるものである。
この4組のデータを1組ずつ調べることにすると、まず、(G(0),G(4))を計算し、調べ終わったら(G(0),G(4))を格納したメモリを開放して次の組に進む。(G(1),G(5))、(G(2),G(6))、(G(3),G(7))と、順次計算して調べ終わったらメモリを開放するという操作を行うことにより、メモリは、G(0)〜G(7)を一括してFFTを求めるのに比べて、1/4のメモリ容量でよくなる。乗算回数は、M個に分割して計算した場合と全体を一括してFFT計算をした場合とでは同じになる。
上記の例と同様のことが、Mを2のべき乗にすることで、R(i×M)、R(i×M+1)、R(i×M+2)、・・・、R(i×M+M−1)に適用でき、FFT結果を格納するメモリの容量は、MNの1/M、すなわち、Nで済む。また、R(i×M)、R(i×M+1)、R(i×M+2)、・・・、R(i×M+M−1)の順で相関を検出する際に、途中の組で相関点が検出できてしまえば、残る組については調べる必要がなくなるので、拡散符号のM周期毎の受信信号を一括してFFT処理して検出するより、処理時間が短くなると期待できる。
以上説明した同期捕捉の第3の例における同期捕捉部20での処理の流れを、図34および図35のフローチャートを参照しながら説明する。図34および図35の例ではFFTの回数を最小にするため、キャリア周波数のサーチを、各FFTの組毎に、対象とする衛星すべてについて相関検出を行うようにしている。なお、この図34および図35のフローチャートは、主としてDSP23でのソフトウエア処理に対応するものである。
まず、R(K)(ただし、0≦K<NMであり、K=i×M+u)の分割組数についての変数u(0≦u<M)を初期化し(ステップS111)、次に、周波数変換部10からのIFデータをサンプリング回路21でサンプリングし、そのサンプリングデータを、拡散符号のM周期分、例えば16周期分(16ミリ秒)、信号r(n)(ただし、0≦n≦MN)としてRAM22に取り込む(ステップS112)。次に、この信号r(n)をFFT処理部101でFFTし、そのFFT結果R(K)をメモリ102に書き込む(ステップS113)。次に、信号を受信したGPS衛星に対応する拡散符号のFFT結果C(k)をメモリ106にセットする(ステップS114)。
次に、受信信号r(n)のFFT結果R(K)のメモリ102からの読み出しアドレスのシフト量の初期値k0’を、例えば過去のデータから決定する(ステップS115)。そして、決定した初期値k0’を、メモリ102からのFFT結果の読み出しアドレスのシフト量k'として設定すると共に、シフト制御の変更回数vを、初期値v=0にセットする(ステップS116)。
次に、メモリ102から、受信信号r(n)のFFT結果R(K)を、その読み出しアドレスを、k'だけシフトして読み出す(ステップS117)。そして、読み出したFFT結果R(K−k')と、拡散符号のFFT結果C(k)の複素共役とを乗算して相関関数F’(k)を求める(ステップS118)。
次に、この相関関数F’(k)の逆FFTを行って時間領域の関数f’(n)を求める(ステップS119)。そして、この関数f’(n)について、ピーク値f’(np)を求め(ステップS120)、そのピーク値f’(np)が予め設定されているスレッショールド値fthより大きいかどうか判別する(図35のステップS121)。
ステップS121において、ピーク値f’(np)が、予め設定されているスレッショールド値fthより大きいと判別したときには、そのピーク値f’(np)を取る離散時間(拡散符号の位相)npを相関点として検出する(ステップS122)。
そして、検出した相関点npが、4個目であるか否か判別し(ステップS123)、4個目であると判別したときには、CPU41は、受信機位置計算処理を開始し、同期保持部30における同期保持処理をする(ステップS124)。その後、ステップS125に進む。ステップS124の処理は、4個目以降でも行うにようにしてもよい。
なお、ステップS122で検出した相関点npが得られるときのシフト量k'とR(k)の分割組数についての変数uから、当該受信中のGPS衛星についてのドップラーシフト量およびGPS受信機の発振周波数の誤差が推定することができる。
ステップS123で、検出した相関点npが、4個目以外であると判別したときには、サーチすべきすべての衛星について、上述の拡散符号同期サーチ処理が終了したか否か判別し(ステップS125)、すべての衛星についての拡散符号同期サーチ処理が終了したと判別したときには、変数uがその最大値Mより小さいかどうか判別し(ステップS127)、小さいときには、変数uをインクリメントし(ステップS128)、その後、ステップS113に戻り、このステップS113以降の処理を繰り返す。
また、ステップS127で、変数uが最大値Mに等しいあるいは最大値Mより大きいと判別したときには、サーチ動作を終了する(ステップS129)。
また、ステップS125で、拡散符号同期サーチが終了していない衛星があると判別したときには、次に拡散符号同期サーチを行う衛星を選択し、その選択した衛星が用いる拡散符号c(n)に拡散符号を変更する(ステップS126)。そして、ステップS114に戻り、上述したステップS114以降の処理を実行する。
ステップS121での判別の結果、ピーク値f’(np)が、予め設定されているスレッショールド値fthより小さく、相関点が検出できなかったときには、現在モードは何であるかを判別する(図11のステップS21)。そして、現在モードが高感度モードであると判別したときには、シフト制御の変更回数vが予め設定された最大値vmaxよりも小さいかどうか判別する(図36のステップS131)。この最大値vmaxは、周波数に換算したときに、1kHzに相当する。
そして、シフト制御の変更回数vが予め設定された最大値vmaxよりも小さいかどうか判別する(ステップS132)。この最大値vmaxは、周波数に換算したときに、1kHzに相当する。
そして、シフト制御の変更回数vが予め設定された最大値vmaxよりも小さいと判別したときには、シフト制御の変更回数vを1だけインクリメント(v=v+1)すると共に、新たなシフト量k'を、
k'=k'+(−1)v×v
として(ステップS133)、ステップS117に戻る。そして、上述したステップS117以降の処理を繰り返す。
また、ステップS132で、シフト制御の変更回数vが、予め設定された最大値mmaxよりも大きいと判別したときには、そのように大きいと判別された回数が、現在のRAM22のデータに対して予め定められた所定回数以上となったか否か判別し(ステップS136)、前記所定回数以上でなければ、ステップS112に戻り、RAM22に新たなデータを取り込んで、以上の処理を繰り返す。
また、ステップS136で、前記所定回数以上であると判別したときには、サーチすべきすべての衛星について、上述の拡散符号同期サーチ処理が終了したか否か判別し(ステップS137)、すべての衛星についての拡散符号同期サーチ処理が終了したと判別したときには、変数uがその最大値Mより小さいかどうか判別し(ステップS138)、小さいときには、変数uをインクリメントし(ステップS139)、その後、ステップS113に戻り、このステップS113以降の処理を繰り返す。
また、ステップS138で、変数uが最大値Mに等しいあるいは最大値Mより大きいと判別したときには、同期捕捉ができなかった旨を制御演算部40に通知し(ステップS140)、その後、サーチ動作を終了する(ステップS141)。
また、ステップS137で、拡散符号同期サーチが終了していない衛星があると判別したときには、次に拡散符号同期サーチを行う衛星を選択し、その選択した衛星が用いる拡散符号c(n)に拡散符号を変更する(ステップS142)。そして、ステップS114に戻り、上述したステップS114以降の処理を実行する。
なお、キャリア周波数が既知である場合には、R(i×M)、R(i×M+1)、R(i×M+2)、・・・、R(i×M+M−1)の中で該当するものだけを計算すれば、拡散符号の多周期分を含む時間分を単位として受信信号をFFTする方法は、同様に適用できる。
〔デジタルマッチドフィルタによる同期捕捉の第4の例〕
前述した同期捕捉の第2の例、第3の例の場合には、拡散符号のM周期分をRAM22に取り込み、当該M周期分のデータをDSP23が読み込んで、上述のようなFFT処理を行って、同期捕捉処理をするようにしている。このため、DSP23での処理データ量が多く、計算量が多くなり、処理速度が遅くなるおそれがある。
この同期捕捉の第4の例は、第2の例において説明したように、拡散符号のM周期分、例えば16周期分(16ミリ秒)のIFデータをRAM22に取り込み、当該M周期分のデータ単位で、FFT演算を伴なう同期捕捉処理を行うものであるが、FFT処理部101でFFT処理を行う前に、データサンプル数を低減する前処理を行って、処理の高速化を図るものである。なお、サンプリング回路21でのサンプリング周波数は、例えば4.096MHzとされる。
図37は、この第4の例におけるDSP23の構成例を示すものであり、この第4の例においては、FFT処理部101の前に、前処理部130を設ける。その他の構成は、前述の例と同様である。
前処理部130は、RAMを備え、そのメモリ容量は、拡散符号の1周期分とされる。すなわち、この第4の例においては、RAM22に取り込まれたM周期分のデータは、同じ拡散符号の1周期分のデータが、M回繰り返されるものに等しく、同期捕捉の第2の例において説明したように、周波数成分としては、拡散符号の1周期分のデータが備えるものしか存在しないことから、前処理部130においては、前記拡散符号のM周期分のデータ量から、拡散符号の1周期分のデータ量に減らす処理を行う。
この第4の例においては、その前処理として、M周期分のデータd(n)(0≦n<L、Lは拡散符号のM周期分の全データ数)の離散フーリエ変換の部分集合(S[0]、S[1]・・・S[N−1](ただし、Nは拡散符号の1周期分のサンプリングデータ数))を計算するアルゴリズムを行う。ここで、部分集合S[k](kは離散フーリエ変換後の離散周波数で、0≦k<N)は、次のように定義できる。
S[k]=D[k×M+r]
ただし、Dはデータdの離散フーリエ変換、
M=L/N、
rはドップラー周波数による定数、0≦r<M。
図38は、前処理部130で行われるアルゴリズムを実行するためのフローチャートである。
まず、変数kの初期化(k=0)を行い(ステップS151)、次に、部分集合S[k]を初期化するために、S[k]=0とする(ステップS152)。そして、繰り返しの変数t(0≦t<M)を初期化(t=0)する(ステップS153)。次に、次の(式Q1)を計算する(ステップS154)。
S[k]=S[k]old+d[t×N+k]×exp(2πj・r・t/M)
・・・(式Q1)
この(式Q1)の処理は、変数tの値が「1」だけ前の値S[k]oldに、現在の変数tの値についての次の項
d[t×N+k]×exp(2πj・r・t/M)
を加算する演算である。
データd(n)は、A/D変換器18からの1ビットのIFデジタルデータをサンプリングしたデータであるので、d[t×N+k]は+1または−1となる。そのため、(式Q1)の演算は、一つの足し算または引き算になる。
また、exp(2πj・r・t/M)においては、変数はtのみであり、tは、0からM−1の値しかとらないので、この項exp(2πj・r・t/M)の値を、M点のテーブルとして記憶しておき、そのテーブルを用いることにより、この項exp(2πj・r・t/M)をtの変更の度に毎回計算しなくてもよくなり、計算を早くすることができる。
ステップS154の(式Q1)の計算が終了したら、変数tを「1」だけインクリメントする(ステップS155)。そして、変数tがMより小さいか否か判別し(ステップS156)、変数tがMより小さいときには、ステップS154に戻って、前記(式Q1)の計算を繰り返す。変数tがM以上のときには、次の(式Q2)を計算する(ステップS157)。
S[k]=S[k]old×exp(2πj・r・k/L)
・・・(式Q2)
この(式Q2)の処理は、変数kの値が「1」だけ前の値S[k]oldに、現在の変数kの値についての次の項
exp(2πj・r・k/L)
を乗算する演算である。
ステップS157の(式Q2)の計算が終了したら、求めたS[k]の値を前処理部130が備えるメモリに書き込む(ステップS158)。次に、変数kを「1」だけインクリメントする(ステップS159)。そして、変数kがNより小さいか否か判別し(ステップS160)、変数kがNより小さいときには、ステップS152に戻って、以上の計算処理を繰り返す。変数kがN以上のときには、前処理を終了して、高速フーリエ変換処理を開始する。
以上の前処理により、FFTの対象となるのは、拡散符号のM周期分の全データ数のL点から、拡散符号の1周期分のN点に減るので、FFT演算を高速にすることができる。
〔デジタルマッチドフィルタによる同期捕捉の第5の例〕
この同期捕捉の第5の例は、第4の例と同様に、DSP23において、FFT処理部101でFFT処理を行う前に、データサンプル数を低減する前処理を行って、処理の高速化を図るものである。
この第5の例の場合におけるDSP23の構成例は、前述した第4の例の場合の図23に示したものと同じである。ただし、第5の例では、前処理部130で行う前処理の内容が第4の例とは異なる。
この第5の例も、RAM22に取り込まれたM周期分のデータは、同じ拡散符号の1周期分のデータが、M回繰り返されるものに等しく、同期捕捉の第2の例において説明したように、周波数成分としては、拡散符号の1周期分のデータが備えるものしか存在しないことから、前処理部130においては、前記拡散符号のM周期分のデータ量から、拡散符号の1周期分のデータ量に減らす処理を行う。
図39は、この第5の例の前処理を説明するための図である。図39の例においては、サンプリング回路21でのサンプリング周波数は、4.096MHzであり、また、M=16、つまり、16ミリ秒単位でRAM22にデータを取り込んで、FFT処理をする場合である。
図39に示すように、この例において、RAM22に記憶するIFデータは、拡散符号の1周期分の16個のデータ群d1(n)、d2(n)、d3(n)、・・・、d16(n)からなる。そして、この例の場合、データ群d1(n)、d2(n)、d3(n)、・・・、d16(n)のそれぞれは、4096点のポイントからなり、16ミリ秒分のデータ全体では、65536点のポイントからなる。
そして、16個のデータ群d1(n)、d2(n)、d3(n)、・・・、d16(n)のそれぞれの先頭から、同じポイント位置の値は、GPS衛星信号の場合には、拡散符号の同じ成分を有しているはずである。しかも、前述したように、各ポイントのデータは、1ビットである。
以上のことを考慮して、この第5の例の場合には、前処理部130に備えるメモリ130MEMとして、1ワードが16ビットで、4096ワード分の容量を有するメモリを用いる。
そして、16個の拡散符号1周期分のデータ群d1(n)、d2(n)、d3(n)、・・・、d16(n)のそれぞれの先頭から、同じポイント位置のデータは、1ワードを構成するように、メモリ130MEMの同じワードアドレスに書き込むようにする。この結果、16ミリ秒分のデータは、メモリ130MEMに、4096ワードのデータとして取り込まれる。
FFT演算処理は、この16ビット1ワードのデータについて実行するようにする。DSP23が、16ビット単位の処理が可能であるものであった場合には、FFTの際のメモリアクセス回数は、4096回となり、前処理を行わない場合の65536回に比較して、16分の1にすることができ、FFT処理を高速化することができる。
上述のことを、一般化すると、拡散符号の1周期分のデータ数がNであるデータのM周期分を処理単位としてFFT処理する場合において、前処理部130では、同じ拡散符号の成分となる位置のデータを、メモリ130MEMの同じワードアドレスに書き込むようにする。
すなわち、NM個のデータを[0]から順に番号をつけたとき、0,N,2N,・・・,(M−1)N番目のデータは、メモリMEMのワードアドレス「0」に書き込み、1,1+N,1+2N,・・・,1+(M−1)N番目のデータは、メモリMEMのワードアドレス「1」に書き込み、・・・・、(N−1),(N−1)+N,(N−1)+2N,・・・,(N−1)+(M−1)N番目のデータは、メモリMEMのワードアドレス「N−1」に書き込むようにするものである。
FFT演算処理は、このMビット1ワードのデータについて実行するようにする。DSP23が、wビット単位の処理が可能であるものであった場合には、FFTの際のメモリアクセス回数は、N×M/w回となり、前処理を行わない場合のNM回に比較して、w分の1にすることができ、FFT処理を高速化することができる。
以上説明した第1〜第5の例の同期捕捉方法は、従来の手法であるスライディング相関器が原理的に時間を要するのに対し、FFTを用いたデジタルマッチドフィルタによる処理を高速なDSPで行うようにしたことにより、処理時間の大幅な短縮が期待できる。特に、第2の例〜第5の例の場合には、拡散符号のM周期単位でFFT処理をするようにしたことにより、同期捕捉を高感度で行うことができる。
さらに、第3の例〜第5の例の場合には、拡散符号のM周期単位でFFT処理を、より高速に行うようにすることができる。
したがって、同期捕捉の第2の例を用いるGPS受信機の実施形態の場合と同様にして、同期捕捉の第3の例〜第5の例を高感度モードのときに用いるようにし、高速モードのときには、通常のように、相関点を検出する単位データ長は、拡散符号の1周期長とするようにすることができる。
また、高感度モードのみでなく、高速モードにおいても、この同期捕捉の第3の例〜第5の例を用いるようにしてもよい。
さらに、高感度モードのみでなく、高速モードにおいても、この同期捕捉の第3の例〜第5の例を用いる場合において、相関点を検出する単位データ長を決める前記Mの値を、高感度モードでは、高速モードの場合よりも大きくするように構成してもよい。
なお、以上の同期捕捉の例に用いたデジタルマッチドフィルタによる相関計算の方法は、GPS衛星からの信号に限らず、拡散符号でデータをスペクトラム拡散した信号により搬送波が変調されている受信信号の拡散符号およびキャリアの同期捕捉を行う場合に適用可能である。ただし、第2の例、第3の例、第4の例および第5の例は、GPS衛星信号のように、拡散符号の1周期の複数倍の周期がデータビットとなっていて、拡散符号の複数周期分の信号は、同じ信号となっている必要がある。
以上のような同期捕捉方法によって、同期捕捉部20で4個以上のGPS衛星からの信号の同期捕捉ができれば、GPS受信機としては、それらの拡散符号の位相とIFキャリア周波数とからGPS受信機の位置と速度を計算することが可能である。つまり、同期保持部30を設けなくても測位演算を行うことは可能である。
しかし、GPS受信機として十分な高精度の測位および速度計算を行うためには、高精度で拡散符号の位相とIFキャリア周波数を検出する必要があり、そのためには、サンプリング回路21におけるサンプリング周波数を高くする、RAM22に取り込むIFデータの時間長を長くするといったことが必要になる。
さらに、同期捕捉部20にデジタルマッチドフィルタを用いた構成とした場合には、デジタルマッチドフィルタ自身は、同期保持機能を有しないことをも考慮しなければならない。
また、GPS受信機の外部から航法メッセージを取得しないとすると、同期捕捉部20は、4個以上のGPS衛星の航法メッセージを20ms毎に復調する必要があり、DSP23は常に同期の検出と航法メッセージの復調をかなり高速に行う必要がある。
以上のように、同期捕捉部20のみにより、GPS受信機の位置計算および速度計算を十分な精度で行おうとすると、ハードウエアのサイズ増によるコストアップと消費電力増となり、GPS受信機を実際に製造する際の大きな問題となってしまう。
そこで、この実施形態では、粗い精度での同期捕捉を専用の同期捕捉部20で行い、複数のGPS衛星信号の同期保持および航法メッセージの復調は同期保持部30で行うものとしている。そして、同期捕捉部20は、検出したGPS衛星番号と、その拡散符号の位相と、IFキャリア周波数と、相関検出信号からなる信号強度の情報を、制御演算部40を通じて同期保持部30にデータとして渡し、後述するように、同期保持部30は、そのデータを初期値として動作を開始するようにする。
[同期保持部30の構成]
複数のGPS衛星信号の同期保持を並列して行うために、同期保持部30は、1つずつのGPS衛星信号を1チャンネルとして、複数チャンネル分を備える構成とされる。
図40は、この実施形態における同期保持部30の構成例を示す。この同期保持部30は、nチャンネル分のチャンネル同期保持部30CH1、30CH2、・・・、30CHnと、コントロールレジスタ33とからなる。チャンネル同期保持部30CH1、30CH2、・・・、30CHnのそれぞれは、コスタスループ31とDLL(Delay Locked Loop)32とを備える。
コントロールレジスタ33は、制御演算部40のCPU41に接続され、後述するように、コスタスループ31やDLL32のループフィルタのパラメータや、フィルタ特性を定めるためのデータを受け取り、CPU41により指示されるチャンネルの、CPU41により指示される部位に、そのデータを設定するようにする。また、コントロールレジスタ33は、コスタスループ31やDLL32のループフィルタからの相関値情報や周波数情報を受け取り、CPU41からのアクセスに応じてそれらの情報をCPU41に渡すようにする。
〔コスタスループ31と、DLL32の構成〕
図41はコスタスループ31の構成例を示すブロック図であり、また、図42は、DLL32の構成例を示すブロック図である。
コスタスループ31は、IFキャリア周波数の同期保持、送信データである航法メッセージの抽出を行う部分であり、DLL32は、GPS衛星信号の拡散符号の位相同期保持を行う部分である。そして、コスタスループ31とDLL32とが協働し、GPS衛星信号についてスペクトラム逆拡散を行って、スペクトラム拡散前の信号を得るとともに、このスペクトラム拡散前の信号を復調して航法メッセージを得て、制御演算部40のCPU41に供給する。以下、コスタスループ31とDLL32との動作について具体的に説明する。
〔コスタスループ31について〕
周波数変換部10からのIFデータは、乗算器201に供給される。この乗算器201には、図42に示すDLL32の拡散符号発生器320からの拡散符号が供給される。
DLL32の拡散符号発生部320からは、一致(プロンプト)拡散符号P、進み(アーリ)拡散符号E、遅れ(レート)拡散符号Lの、3つの位相の拡散符号が発生する。DLL32では、後述するように、進み拡散符号Eおよび遅れ拡散符号Lと、IFデータとの相関を計算し、それぞれの相関値が等しくなるように、拡散符号発生器320からの拡散符号の発生位相を制御し、これにより、一致拡散符号Pの位相が、GPS衛星信号の拡散符号の位相と一致するようにする。
コスタスループ31の逆拡散用の乗算器201には、拡散符号発生器320からの一致拡散符号Pが供給されて、逆拡散される。この乗算器201からの逆拡散されたIFデータは、乗算器202および203に供給される。
コスタスループ31は、図41に示すように、乗算器202および203と、ローパスフィルタ204,205と、位相検出器206と、ループフィルタ207と、NCO(Numerical Controlled Oscillator;数値制御型発振器)208と、相関検出器209と、2値化回路210と、ロック判定部211と、スイッチ回路212とからなっている。
ローパスフィルタ204,205のカットオフ周波数情報と、ループフィルタ207のフィルタ特性を定めるパラメータと、NCO208の発振中心周波数を定めるための周波数情報とは、後述するように、同期捕捉部20での同期捕捉結果に基づいて、CPU41からコントロールレジスタ33を通じて設定される。
スイッチ回路212は、コスタスループ31のループを開閉制御するためのもので、CPU41からの切り換え制御信号によりオンオフされる。なお、同期保持動作がスタートする前の初期的な状態では、スイッチ回路212はオフとされ、ループ開の状態とされ、後述するように、同期保持動作がスタートして、コスタスループの相関検出器209の相関出力が有意なレベルとなったときに、このスイッチ回路212がオンとされて、ループ閉とされるようにされる。
乗算器201において逆拡散された信号は、乗算器202、203に供給される。これら乗算器202,203には、制御演算部40のCPU41からの周波数情報により、ほぼIFキャリア周波数にされたNCO208からの、直交位相のI(Sine)信号と、Q(Cosine)信号とが供給される。
これら乗算器202および203の乗算結果は、ローパスフィルタ204および205を通じて位相検出器206に供給される。ローパスフィルタ204および205は、制御演算部40のCPU41からのカットオフ周波数情報の供給を受け、これに供給された信号の帯域外ノイズを除去するものである。
位相検出器206は、ローパスフィルタ204および205からの信号に基づいて、IFキャリアとNCO208からの周波数信号との位相誤差を検出し、この位相誤差をループフィルタ207を介してNCO208に供給する。これによりNCO208が制御されて、NCO208からの出力周波数信号の位相が、IFキャリア成分に同期するようにされる。
なお、ループフィルタ207は、制御演算部40のCPU41から供給されるパラメータに応じて、位相検出器206からの位相誤差情報を積分して、NCO208を制御するNCO制御信号を形成するものである。NCO208は、ループフィルタ207からのNCO制御信号によって、前述したように、NCO208からの出力周波数信号の位相が、IFキャリア成分に同期するようにされる。
また、コスタスループ31のローパスフィルタ204および205の出力は、相関検出器209に供給される。相関検出器209は、これに供給されるローパスフィルタ204および205の出力信号をそれぞれ自乗して加算して出力する。この相関検出器209の出力は、IFデータと拡散符号発生器320からの一致拡散符号Pとの相関値CV(P)示すものである。この相関値CV(P)は、コントロールレジスタ33を通じて制御演算部40のCPU41に渡される。
そして、ローパスフィルタ204の出力信号は2値化回路210に供給されており、この2値化回路210より航法メッセージデータが出力される。
また、相関検出器209からの相関値CV(P)出力は、ロック判定部211に供給される。ロック判定部211は、相関値CV(P)出力と、予め定められているスレッショールド値とを比較し、相関値CV(P)出力がスレッショールド値よりも大きいときには、同期保持がロック状態であることを示し、相関値CV(P)出力がスレッショールド値よりも小さいときには、同期保持がアンロック状態であることを示すロック判定出力を出力する。
この実施形態では、このロック判定出力は制御演算部40のCPU41に送られ、CPU41は、このロック判定出力から、同期保持部30のロック状態、アンロック状態を認識するようにする。
〔DLL32について〕
図42に示すように、DLL32においては、周波数変換部10からのIFデータは、乗算器301および311に供給される。そして、乗算器301には、拡散符号発生器320からの進み拡散符号Eが供給され、また、乗算器311には、拡散符号発生器320からの遅れ拡散符号Lが供給される。
乗算器301は、IFデータと進み拡散符号Eとを乗算することにより、スペクトラム逆拡散を行い、この逆拡散がなされた信号を乗算器302、303に供給する。そして、乗算器302には、前述のコスタスループ31のNCO208からのI信号が供給され、乗算器303には、NCO208からのQ信号が供給される。
乗算器302は、逆拡散されたIFデータとNCO208からのI信号とを乗算し、その結果をローパスフィルタ304を通じて相関検出器306に供給する。同様に、乗算器303は、逆拡散されたIFデータとNCO208からのQ信号とを乗算し、その結果をローパスフィルタ305を通じて相関検出器306に供給する。
なお、ローパスフィルタ304、305は、コスタスループ31のローパスフィルタ204,205と同様に、制御演算部40のCPU41からのカットオフ周波数情報の供給を受け、これに供給された信号の帯域外ノイズを除去するものである。
相関検出器306は、これに供給されるローパスフィルタ304,305からの出力信号をそれぞれ自乗して加算して出力する。この相関検出器306からの出力は、IFデータと、拡散符号発生器320からの進み拡散符号Eとの相関値CV(E)示すものである。この相関値CV(E)は、位相検出器321に供給されるとともに、コントロールレジスタ33に格納され、制御演算部40のCPU41が用いることができるようにされる。
同様に、乗算器311は、IFデータと遅れ拡散符号Lとを乗算することにより、スペクトラム逆拡散を行い、この逆拡散がなされた信号を乗算器312、313に供給する。乗算器312には、前述したように、NCO208からのI信号が供給され、乗算器313には、NCO208からのQ信号が供給される。
乗算器312は、逆拡散されたIFデータとNCO208からのI信号とを乗算し、その結果をローパスフィルタ314を通じて相関検出器316に供給する。同様に、乗算器313は、逆拡散されたIFデータとNCO208からのQ信号とを乗算し、その結果をローパスフィルタ315を通じて相関検出器316に供給する。ローパスフィルタ314、315は、前述のローパスフィルタ304、305と同様に、制御演算部40のCPU41からのカットオフ周波数情報の供給を受け、これに供給された信号の帯域外ノイズを除去するものである。
相関検出器316は、これに供給されるローパスフィルタ314,315からの出力信号をそれぞれ自乗して加算し、その演算結果を出力する。この相関検出器316からの出力は、IFデータと、拡散符号発生器320からの遅れ拡散符号Lとの相関値CV(L)を示すものである。この相関値CV(L)は、位相検出器321に供給されるとともに、コントロールレジスタ33に格納され、制御演算部40のCPU41が用いることができるようにされる。
位相検出器321は、相関検出器306からの相関値CV(E)と、相関検出器316からの相関値CV(L)との差分として、一致拡散符号とGPS衛星信号の拡散符号との位相差を検出し、その位相差に応じた信号をループフィルタ322を介してNCO323の数値制御信号として供給する。
拡散符号発生器320には、このNCO(Numerical Controlled Oscillator;数値制御型発振器)323の出力信号が供給されており、このNCO323の出力周波数が制御されることにより、拡散符号発生器320からの拡散符号の発生位相が制御される。
なお、NCO323は、後述するように、同期捕捉部20の同期捕捉結果に応じた制御演算部40のCPU41からの初期発振周波数を制御する周波数情報の供給を受ける。
以上のDLL32におけるループ制御により、NCO323が制御されて、拡散符号発生器320は、相関値CV(E)と相関値CV(L)とが同じレベルとなるように、拡散符号P、E,Lの発生位相を制御する。これにより、拡散符号発生器320から発生する一致拡散符号Pが、IFデータをスペクトラム拡散している拡散符号と位相同期するようにされ、この結果、一致拡散符号PによりIFデータが正確に逆スペクトラム拡散され、コスタスループ31において、2値化回路210から航法メッセージデータが復調されて出力される。
そして、その航法メッセージデータの復調出力は、図示しないデータ復調回路に供給されて制御演算部40で使用可能なデータに復調された後、制御演算部40に供給される。制御演算部40では、航法メッセージデータは、測位計算に用いられ、また、適宜、軌道情報(アルマナック情報やエフェメリス情報)が抽出されて、軌道情報用メモリ46に格納される。
なお、DLL32のループフィルタ322は、前述したコスタスループ31のループフィルタ207と同様に、制御演算部40のCPU41から供給されるパラメータに基づいて、位相検出器321からの位相誤差情報を積分して、NCO323を制御するNCO制御信号を形成するものである。
DLL32においても、ループフィルタ322と、NCO320との間に、ループの開閉制御用のスイッチ回路324が設けられ、CPU41からの切り換え制御信号によりオンオフされる。
なお、同期保持動作がスタートする前の初期的な状態では、スイッチ回路324はオフとされ、ループ開の状態とされ、後述するように、同期保持動作がスタートして、コスタスループの相関検出器209の相関出力が有意なレベルとなったときに、このスイッチ回路324がオンとされて、ループ閉とされるようにされる。
[同期捕捉から同期保持への移行について]
この実施形態では、前述したように、同期捕捉部20は、検出したGPS衛星番号と、その拡散符号の位相と、IFキャリア周波数と、信号強度の情報とを、データとして制御演算部40のCPU41に渡す。なお、信号強度の情報は、同期保持処理への移行のための情報としては、必須のものではない。
取得したデータに基づいて制御演算部40のCPU41は、同期保持部30に供給するデータを生成し、それを同期保持部30に渡す。同期保持部30はそのデータを初期値として同期保持動作を開始するようにする。
制御演算部40のCPU41から同期保持部30に渡されるデータは、DLL32の拡散符号発生器320からの拡散符号の発生位相を制御するNCO323の初期発振周波数(発振中心周波数)を決定するための数値情報と、コスタスループ31のNCO208の初期発振周波数(発振中心周波数)を決定するための数値情報と、ループフィルタ207および322のフィルタ特性を決定するためのパラメータと、ローパスフィルタ204,205,304,305,314,315のカットオフ周波数を決定して、その周波数帯域の広狭を決定するための係数情報である。
このとき、CPU41から同期保持部30に供給される情報は、同期保持部30で、拡散符号の同期保持およびIFキャリアの同期保持を開始するGPS衛星番号、位相や周波数、また、フィルタ特性を定めるための初期値データであるが、CPU41は、同期捕捉部20で同期捕捉した結果として検出された拡散符号の位相およびIFキャリア周波数の近傍から同期保持を開始するように、前記初期値データを生成する。
したがって、同期保持部30では、同期捕捉部20で検出された拡散符号の位相近傍および検出されたIFキャリア周波数の近傍から同期保持動作を開始して、迅速に同期保持のロック状態にすることができるようになる。
ところで、GPS受信機が位置および速度を計算するためには、同期捕捉開始から4個以上のGPS衛星に対して同期を確立し、保持しなければならない。同期捕捉部20と同期保持部30および両者を制御するCPU41とによって、4個以上のGPS衛星からの信号の同期を保持するまでの過程の一例を次に説明する。
〔同期捕捉・同期保持過程の一例〕
この例では、同期捕捉部20は、GPS衛星信号の一つを同期捕捉すると、すぐに、CPU41に、同期保持動作開始のための割り込み指示と、同期捕捉結果としてのGPS衛星番号、その拡散符号の位相、IFキャリア周波数、相関検出レベルを表わす信号強度を転送し、転送が終わると別のGPS衛星についての同期捕捉に移る。
CPU41は、同期捕捉部20からの割り込み指示を受け取る毎に、同期保持部30に対して独立のチャンネルの割り当てを行うと共に、初期値の設定を行って、同期保持動作を開始させるようにする。
図43は、この同期捕捉・同期保持過程の一例における同期捕捉部20での同期捕捉処理の流れを説明するためのフローチャートである。
まず、同期捕捉のための初期設定を行う(ステップS171)。この初期設定においては、同期捕捉のためにサーチするGPS衛星およびそのサーチの順番を、GPS受信機が軌道情報用メモリ46に記憶している有効な軌道情報に基づいて設定する。また、その軌道情報から、ドップラーシフトを考慮したキャリア周波数を計算して、サーチするIFキャリア周波数の中心と範囲を設定するようにする。
また、電源投入前の過去の動作で得た大体の発振器誤差が、GPS受信機で判明しているのであれば、GPS受信機位置を電源投入時に記憶されている位置、すなわち、前回電源を切る直前の位置と仮定して、軌道情報から計算したドップラーシフトに合わせて、サーチするIFキャリア周波数の中心と範囲を決めるようにすると、さらに同期保持に至るまでに要する時間を短縮できる。
初期設定が終了したら、サーチの順番に従って、同期捕捉する一つのGPS衛星を設定する(ステップS172)。これにより、同期捕捉対象の衛星番号が決まり、また、相関を検出しようとする拡散符号が決まる。
次に、同期捕捉部20では、RAM22に、サンプリング回路21でサンプリングしたIFデータの取り込みを開始し、この開始タイミングで、タイマをスタートさせる(ステップS173)。ここで、このタイマとしては、制御演算部40のタイマ45を用いるようにする。このタイマ45は、後述のように、同期保持処理スタートタイミングを設定する際にも用いられる。
次に、DSP23において、前述したデジタルマッチドフィルタを用いた同期捕捉の例のいずれかを用いて、ステップS172で設定したGPS衛星信号の拡散符号について相関検出処理を行う(ステップS174)。
そして、GPS衛星信号の拡散符号について相関が検出されたか否か、つまり、GPS衛星信号の同期捕捉ができたか否か判別し(ステップS175)、相関が検出できたときには、CPU41に対して割り込み指示を発生させると共に、同期捕捉の検出結果として、GPS衛星番号、拡散符号の位相、IFキャリア周波数、信号強度の情報をCPU41に渡す(ステップS176)。
そして、サーチすべきGPS衛星のすべてについての同期捕捉サーチが終了したか否か判別し(ステップS177)、未だサーチすべきGPS衛星が残っているときには、ステップS172に戻り、同期捕捉する次のGPS衛星を設定して、以上の同期捕捉処理を繰り返す。また、ステップS177で、サーチすべきすべてのGPS衛星についての同期捕捉が終了したと判別したときには、同期捕捉動作を終了して、同期捕捉部20を待機状態(スタンバイ状態)にする。
また、ステップS175で相関が検出できないと判別したときには、その状態が予め定めた所定時間以上経過したか否か判別し(ステップS178)、所定時間経過していなければ、ステップS175に戻って、相関検出を継続する。
ステップS178で、所定時間経過したと判別したときには、ステップS177に進み、サーチすべきGPS衛星のすべてについての同期捕捉サーチが終了したか否か判別し、未だサーチすべきGPS衛星が残っているときには、ステップS172に戻り、同期捕捉する次のGPS衛星を設定し、以上の同期捕捉処理を繰り返す。
また、ステップS177で、サーチすべきすべてのGPS衛星についての同期捕捉が終了したと判別したときには、同期捕捉動作を終了して、同期捕捉部20を待機状態(スタンバイ状態)にする。
この実施形態では、CPU41は、同期捕捉部20への電源供給のオンオフ制御、または、この同期捕捉部20に対する逓倍/分周回路3からの動作クロックの供給のオンオフ制御を行うことができるように構成されており、上記の同期捕捉部20のスタンバイ状態では、CPU41により、同期捕捉部20への電源の供給はオフ、または、動作クロックの供給が停止されて、不要な消費電力が抑えられている。
同期捕捉部20を、上述のように、デジタルマッチドフィルタで構成すると、DSP23でのFFT計算を速くするためには高いクロックで動作させることが望ましく、したがって、動作時の消費電力が大きくなるが、同期捕捉部20において、初期設定したすべてのGPS衛星からの信号の同期捕捉検出が終わり、同期保持部30で4個以上の同期保持ができていれば、同期捕捉部20の役割は終了する。
この実施形態では、上述のように、CPU41は、同期捕捉部20の役割終了後は、スタンバイ状態にしているので、同期捕捉部20における不要な消費電力が抑えられている。
なお、上記の例では、初期設定したすべてのGPS衛星についての同期捕捉が完了した後、CPU41は、同期捕捉部20をスタンバイ状態に移行させるようにしたが、同期保持部30で同期保持できたGPS衛星が4個以上になったことを確認してから、CPU41が同期捕捉部20をスタンバイ状態に移行させるようにしてもよい。
なお、CPU41は、一旦、スタンバイ状態になった同期捕捉部20を、再同期捕捉が必要な状態になったときに、動作状態に復帰させるようにすることができることは勿論である。
次に、同期捕捉部20からの割り込み指示を受けたCPU41による同期保持部30の制御処理について、図44および図45のフローチャートを参照しながら説明する。
図44は、CPU41が、同期捕捉部20から、割り込み指示および同期捕捉結果としての拡散符号の位相、IFキャリア周波数、GPS衛星番号、信号強度の情報を受け取ったときに、同期保持部30においてチャンネル割り当てし、同期保持スタートをさせるための処理である。また、図45は、CPU41が、同期保持スタートさせた同期保持部30の各1チャンネルにおいての同期保持処理制御のためのフローチャートである。まず、図44の同期保持スタート処理について説明する。
まず、GPS受信機への電源投入時などにおいて、CPU41は、同期保持部30のNCO、ローパスフィルタ、ループフィルタなどへ定数の初期設定を行っておく(ステップS181)。なお、このとき、コスタスループ31およびDLL32は、いずれも初期状態はループ開とされる。
次に、CPU41は、同期捕捉部20からの割り込み指示を監視し(ステップS182)、割り込み指示を検出したときには、同期捕捉部20から、GPS衛星番号、拡散符号の位相、IFキャリア周波数、信号強度の情報を受け取ると共に、同期保持部30に対して、受け取ったGPS衛星番号に対して独立のチャンネルを割り当てるようにする設定する(ステップS183)。
そして、CPU41は、同期捕捉部20から受け取った拡散符号の位相から、同期保持スタートタイミングを計算するとともに、同期保持部30の、割り当てられたチャンネル内の各部に供給する初期値を、同期捕捉部20から受け取ったIFキャリア周波数に基づいて生成する(ステップS184)。
そして、CPU41は、生成した初期値を、コントロールレジスタ33を通じて同期保持部30の、ステップS183で割り当てられたチャンネル内の各部に送ると共に、同期保持部30の、ステップS183で割り当てられたチャンネル内の拡散符号発生器320からの一致拡散符号Pの発生位相を、前記同期保持スタートタイミングとするように制御して、同期保持動作をスタートさせる(ステップS185)。なお、このとき、コスタスループ31およびDLL32のループは開のままとする。
以上のようにして、同期捕捉されたGPS衛星信号について、同期保持のためのチャンネルが割り当てられ、同期保持スタートを行ったら、ステップS182に戻り、次の割り込みを待つ。
次に、以上のようにしてスタートしたチャンネル毎の同期保持処理を、図45のフローチャートについて説明する。
CPU41は、まず、同期保持部30からの相関値CV(P)が有意なレベルになったか否か判別し(ステップS191)、相関値CV(P)が有意なレベルになったら、コスタスループ31およびDLL32のループを閉じて、同期保持動作を行う(ステップS192)。
次に、CPU41は、同期保持部30のコスタスループ31のロック判定部211からのロック判定出力を監視し(ステップS193)、同期保持部30のロックを確認したときには、同期保持しているGPS衛星の数を1だけインクリメントし(ステップS194)、同期保持状態を継続する(ステップS195)。
そして、CPU41は、この同期保持動作中において、コスタスループ31のロック判定部211からのロック判定出力を監視し(ステップS196)、同期保持のロックを確認したときには、ステップS195に戻って、同期保持状態を継続する。そして、ステップS196で同期保持のロックが外れたと判別したときには、同期保持しているGPS衛星の数を1だけデクリメントし(ステップS197)、同期保持が外れたときの処理を行うようにする。この同期保持が外れたときの処理については、後述する。
CPU41は、同期保持部30で4個以上のGPS衛星信号の同期保持ができたと判別したときには、GPS受信機の位置の計算および速度の計算を行うようにする。
ステップS191において、相関値CV(P)が有意なレベルにならないと判別したときには、その状態が予め定めた所定時間以上経過しかたどうか判別し(ステップS199)、所定時間以上経過したと判別したときには、図44のステップS183で割り当てた同期保持部30のチャンネルを空きチャンネルに戻し、当該チャンネルの同期保持を停止する(ステップS200)。
また、ステップS193において、ロック判定出力によりロック状態が検出できなかったときには、その状態が予め定めた所定時間以上経過しかたどうか判別し(ステップS201)、所定時間以上経過したと判別したときには、ステップS183で割り当てた同期保持部30のチャンネルを空きチャンネルに戻し、当該チャンネルの同期保持を停止する(ステップS200)。
ステップS199、ステップS201およびステップS200の部分は、次のような理由により設けられたものである。すなわち、同期捕捉部20が検出した相関が有意なレベルであっても、ノイズで偶々発生した偽の同期である場合もあり得る。突発的に生じたような持続性のない偽の同期に対しては、同期保持部30で同期が確立することはない。そこで、同期保持部30で一定のサーチ時間内に同期が確立できない場合には、同期保持動作を停止して、割り当てられたチャンネルを、空きチャンネルの状態に戻し、次の割り込みを待つようにしたものである。
ところで、前述の図44のステップS184では、CPU41は、同期捕捉部20で検出した拡散符号の位相に、同期保持部30の拡散符号発生器320からの拡散符号の位相を合わせるように、同期保持部30の同期保持スタートタイミングを計算する必要があるが、その計算の際には、同期捕捉部20で、一つのGPS衛星信号についての同期捕捉が完了するまでに所定時間が経過しており、ドップラーシフトと、GPS受信機の基準発振器2の誤差の影響を受けることを考慮する必要がある。
後者の問題は、IFキャリア周波数が、周波数変換部10からのIFデータのメモリに取り込むためのサンプリングクロックを生成している大元の基準発振器2の誤差を含むことによる。
なお、この実施形態では、同期捕捉部20と同期保持部30とが同じ基準発振器2を発信源とするクロックで動作しているので、同期捕捉部20と同期保持部30とでは、全く同じ周波数誤差を持つことになる。したがって、IFキャリアの同期に関しては、同期保持部30が同期捕捉部20で検出したIFキャリア周波数を初期値として動作を開始することに関しては、全く問題ない。
以上のようにして、同期捕捉部20は、CPU41が軌道情報から決めたGPS衛星を検出していく順番に従って有意な相関をサーチする。そして、同期捕捉部41が確実な信号強度で最初の衛星を検出できたら、CPU41は、第1の例と同様に、同期保持部30の1つのチャンネルを割当て、検出された衛星番号と拡散符号の位相、IFキャリア周波数を設定して、同期保持動作を開始する。
上述の実施形態によれば、同期捕捉と同期保持とを機能分離し、同期捕捉を高速化できるようにしたことで、従来のGPS受信機よりGPS信号との同期までに要する時間が短くなり、GPS受信機は、電源オン後に速やかに位置、速度を表示できるようになったので、高速モードと高感度モードとの2つのモードを有効に切り換え利用することができる。すなわち、高速モードおよび高感度モードのいずれであっても、測位までの時間が比較的短くなり、使用者にいらいら感を与えることを緩和することができる。
[その他の実施形態]
以上の実施形態の説明では、同期捕捉部20からの検出結果は、CPU41を介して同期保持部30に渡すようにしたが、前述したように、同期捕捉部20から、同期保持部30に直接的に渡すように構成することができるものである。
また、上述の例では、同期捕捉部20には、デジタルマッチドフィルタを用いた例としたが、この発明では、粗い精度の同期捕捉を同期捕捉部が行い、その結果を同期保持部に渡して、同期確立までを高速化することが目的であるので、同期捕捉部20は、デジタルマッチドフィルタを用いた例に限られるものではない。
また、デジタルマッチドフィルタには、上述の例のようなFFTを用いた例のみではなく、前述したように、トランスバーサルフィルタを用いた構成とすることができるものである。
なお、室内では高感度モード、戸外では高速モードとする場合において、GPS受信機に室内か戸外かを検出する手段を設けて、その検出結果に応じて、測位モードを自動的に設定するようにすることもできる。室内か戸外かの検出手段としては、例えば、GPS受信機の筐体に対して、回転軸を中心にして、常に、電波の放射方向が鉛直方向を向くように送信アンテナを取り付けると共に、その放射電波の反射波の受信手段とを取り付け、室内であれば、受信手段により放射電波の反射波が得られるが、戸外であれば、反射波が殆ど得られないことなどを利用することができる。
なお、以上は,GPS衛星信号の場合であるが、この出願は、GPS衛星信号に限らず、例えば欧州の各国が中心となって構築が進められているGALILEOなど、拡散符号を用いたものであれば、適用可能である。
10…周波数変換部、20…同期捕捉部、21…サンプリング回路、22…RAM、23…DSP、24…DSP用メモリ、30…同期捕捉部、31…コスタスループ、32…DLL、33…コントロールレジスタ、40…制御部、41…CPU、44…時計回路、45…タイマ、46…軌道情報用メモリ