本発明の実施形態は、全地球測位システム(「GPS」)信号を処理して、これらの処理されたGPS信号、および関連する機能(装置)を用いて、地理的位置を決定するシステムおよび方法の分野に属する。
(関連出願)
本出願は、下記の米国特許出願:
2000年2月7日出願の米国特許出願第09/498,893号;
2000年6月27日出願の米国特許出願第09/604,595号;
2003年2月20日出願の米国特許出願第10/369,853号;
2003年7月30日出願の米国特許出願第10/632,051号;
2002年7月12日出願の米国特許出願第10/194,627号;
2003年3月10日出願の米国特許出願第10/385,198号;
2002年5月22日出願の米国特許出願第10/155,614号;
2001年7月20日出願の米国特許出願第09/910,092号;
2001年7月20日出願の米国特許出願第09/910,404号;
2001年7月20日出願の米国特許出願第09/909,716号;
2002年9月16日出願の米国特許出願第10/244,293号;
2003年11月12日出願の米国特許出願第10/712,789号;
2003年9月18日出願の米国特許出願第10/666,551号;
2000年4月18日出願の米国特許出願第09/551,047号;
2000年4月18日出願の米国特許出願第09/551,276号;
2000年4月18日出願の米国特許出願第09/551,802号;
2000年4月18日出願の米国特許出願第09/552,469号;
2000年4月18日出願の米国特許出願第09/552,759号;
2000年12月7日出願の米国特許出願第09/732,956号;
2000年12月11日出願の米国特許出願第09/735,249号;
2001年6月20日出願の米国特許出願第09/886,427号;
2002年3月13日出願の米国特許出願第10/099,497号;
2002年3月18日出願の米国特許出願第10/101,138号;
2002年9月18日出願の米国特許出願第10/246,584号;
2002年10月2日出願の米国特許出願第10/263,333号;
2002年12月4日出願の米国特許出願第10/309,647号;
2002年12月16日出願の米国特許出願第10/320,932号;
2003年4月11日出願の米国特許出願第10/412,146号;
2003年4月25日出願の米国特許出願第10/423,137号;
2003年6月20日出願の米国特許出願第10/600,174号;
2003年6月20日出願の米国特許出願第10/600,190号;
2003年8月19日出願の米国特許出願第10/644,311号;
2003年9月2日出願の米国特許出願第60/499,961号;
2003年9月9日出願の米国特許出願第10/658,185号;
2003年10月28日出願の米国特許出願第10/696,522号;
2003年11月12日出願の米国特許出願第10/706,167号;
2003年11月18日出願の米国特許出願第10/715,656号;
2003年11月24日出願の米国特許出願第10/722,694号;
2004年1月22日出願の米国特許出願第10/762,852号;
2004年2月23日出願の米国特許出願第60/546,816号;
2004年2月23日出願の米国特許出願第60/547,384号;
2004年6月22日出願の米国特許出願第10/874,637号;
と、米国特許出願第60/499,961号および第60/546,816号に基づく優先権を主張している、2004年9月2日に出願された「衛星測位システム受信機用の制御と特徴」と称するPCT特許出願第PCT/US2004/028542号に関連しており、かつこれらの出願に基づく優先権を主張する。現在、これらの米国特許出願はすべて係属中である。
双方向無線、ページャ(ポケベル)、ポータブル・テレビ、パソコン(PC)、パーソナル通信システム(PCS)、携帯情報端末(PDA)、セルラー電話または携帯電話、Bluetooth(R)装置、衛星ラジオ受信機、NAVSTARとしても知られている全地球測位システム(GPS)などの衛星測位システム(SPS)、および、自動車テレマティック・システムのような無線装置の世界的利用が、急速に伸びている。その結果、現在の傾向は、できる限り多くの特徴的機能を、これらの無線装置に組み込むことを求めている。一例として、現在、SPSサービスを、広範囲の上記電子装置およびシステムに取り入れる要望がある。
GPS信号を処理するシステムを含むSPSシステムは、全体として、できる限り高い精度で、できる限り速く、GPS受信機を地理的に位置決めする作業を達成するように設計されている様々なハードウェア・コンポーネントやソフトウェア・コンポーネントを含む。GPSシステムは、まさに最初のGPSユニットが利用できるようになってから、注目すべきほどの能力を備えるようになってきた。半導体技術やマイクロプロセッサ技術の進歩は、このように向上した機能を実現可能にすることに役立った。さらに、小型で、高速のGPS対応の装置(例えば、E911適合のセルラー電話)に対する消費者および政府当局の要望も、GPSシステム設計の向上を推進するのに役立った。
本明細書に用いられるGPS機能とは、GPS信号を受信して、処理し、さらに、これらの処理されたGPS信号を使用して、正確な位置情報を生成する機能である。GPS機能を組み込んだ装置がますます増えている。それゆえ、広範な製品の製造者は、GPSのハードウェアやソフトウェアを、それらの製品設計に組み込めることを要望するか、または求めている。もちろん、GPSハードウェアは、できる限り小さな半導体ダイ・スペースを使用し、また、GPSのハードウェアおよびソフトウェア・システムは、メモリと電力の需要において、できる限り経済的であることが望ましい。
上記の制約条件の範囲内でGPSシステムを設計することにより、普通の場合、速度、サイズ、電力使用などの間で、一連の選択が強いられる。したがって、ほとんどの現行GPSシステム設計は、一組のトレードオフ(妥協点)を織り込んでいる。ほとんどの現行GPSシステムは、一度設計されると、柔軟性をほとんど、またはまったくもたらさない。例えば、これらのGPSシステムは、いつでも、もっとも効率的に働くように、異なる条件のもとに、異なるやり方でデータを処理または保存するために、すぐには再構成できない。一般に、GPSシステム(スタンドアロンGPSシステムにおいて、あるいは、セルラー電話などの他のシステムにおいて)が利用できるようになるメモリ容量は、実行される信号処理のタイプなどの要因や、利用できるメモリの絶対的な限度に大きく左右される。
多くの現行GPSシステムの他の欠点は、これらの現行GPSシステムが、許容タイムリミット内で位置を提供するために、支援データに関して、時間の大部分を他のシステムに頼ることである。例えば、セルラー電話におけるGPSシステムは、効率的に働くように、セルラー・ネットワークから、時間支援と、可能であれば他の支援を絶えず必要とすることがある。現行GPSシステムは、支援なしでは、所要の時間内にGPS信号を捕捉できないことがある。これは、その時間情報がいつも利用できる場合、また、その時間情報を提供しても他のシステムの性能面に影響を及ぼさない場合には、受け入れられることがある。しかしながら、性能要件を満たすために支援に頼るように設計されているシステムは、支援なしでは、満足のゆくように働くことができない。さらに、このようなシステムは、支援された場合でも、支援されない場合でも、充分な働きをするほど柔軟性はない。
少なくとも、ハードウェア・アーキテクチャ、制御ロジック、信号処理ロジック、メモリ管理ロジックの実施形態を含むGPSシステムおよび方法が述べられている。このGPSシステムおよび方法の実施形態は、動的に再構成可能である。例えば、メモリは、異なる条件のもとに、異なるやり方で、様々なサブシステムでアクセスされるように動的に再構成されることがある。GPSシステムおよび方法に利用できる総合的なメモリ・サイズの例が例示として述べられているが、述べられた同一原理を用いて、他のサイズも可能である。さらに、図示されたメモリのほかに、外部メモリへのアクセスも、述べられるハードウェアおよびソフトウェアを用いて可能である。
述べられるGPSシステムは、非常に速い速度で、GPSデータを処理する。これは、優れた衛星視認性(visibility)などの理想的な条件が欠けていても、支援なしに、このGPSシステムに優れた性能を持たせる一面である。このGPSシステムの一面では、極めて強力な時間領域整合フィルタリングを、高速フーリエ変換(「FFT」)と組み合わせれば、単位時間当たり、大量のデータが容易に処理できる。FFT演算を使用して、使用される信号サンプルの数に、15ないし20の係数を乗算する。一例として、このシステムは、200,000もの有効なリアルタイム相関器を生成する。従来のGPSシステムは、一般に、いくつかの物理的な相関器を通じて、直接にGPS信号を処理する。これらの物理的な相関器はそれぞれ、実際に、ロジックとして、1つの相関を行うのを専用としている。これにより、従来のGPSシステムは約40,000の有効な相関器に制限されている。
メモリ帯域幅の消費が約400メガバイト/秒であるGPSシステムを用いれば、このように性能が向上する。それゆえ、このGPSシステムは、わずか64キロバイトのメモリを用いて、これらの相関をもたらすことができる。従来のシステムのパワーと比較すると、このGPSシステムは、電力使用、サイクル・カウント、メモリ利用の点から、さらに効率的である。以下でさらに詳しく述べられるように、これは、複数のサブシステムを最適化し、かつ構成できることにより、部分的に可能となる。
述べられるGPSシステムは、状況にもっともふさわしいものとして、GPS信号の捕捉および処理の様々なモードで動作することができる。このGPSシステムは、ホスト・プロセッサで指示される通りに、自動的にモードを切換える。様々なサブシステムは、異なる動作モードで、異なるように構成されることがある。これらの動作モードは、後でさらに詳しく説明される。これらの動作モードは、「コールド・スタート」であるモード1、「粗支援捕捉(coarse-aided acquisition)」モードであるモード2、「高分解能」モードまたは「トラッキング(追跡)」モードであるモード3を含む。
図1は、無線周波数(「RF」)構成要素とベースバンド構成要素を含むGPSシステムの一実施形態のブロック図である。一実施形態では、RF構成要素とベースバンド構成要素は、OEM(相手先商標製造会社)バスを通じて、OEMプロセッサまたは「ホスト」プロセッサと、OEMメモリに接続する。以下に述べられるように、このベースバンド構成要素は、メモリ構成要素を含む。任意選択で、このOEMメモリには、ベースバンド構成要素がアクセスする必要はない。他の可能な配置構成は、GPS機能を実行するのに必要なメモリおよび処理パワーをすべて持っているRF構成要素とベースバンド構成要素のすべてを1チップ上に含む。このGPSシステムは、支援情報がなくとも、効果的に動作できる。あるいは、このGPSシステムは、様々な情報源からの支援情報を用いて動作することがある。
図1Aは、デジタル信号処理装置(「DSP」)、ARMプロセッサ、クロック構成要素、様々なメモリ構成要素、外部通信や内部通信用の様々なインターフェース構成要素などを含むベースバンド・チップの一実施形態のブロック図である。
図2は、入力サンプル・サブシステム、信号処理サブシステム、FFTサブシステム、メモリ・サブシステム、シーケンサ・サブシステム、および、他の「種々の」サブシステムを含むベースバンド・チップの一実施形態の有意なサブシステムを示すブロック図である。便宜上、本明細書では、これらのサブシステムは、次のように呼ばれる。
サブシステム1=入力サブシステム。
サブシステム2=信号処理サブシステム。
サブシステム3=FFTサブシステム。
サブシステム4=シーケンサ/制御サブシステム
サブシステム5=メモリ/アービトレーション・サブシステム
これらのサブシステム間でタスクまたは機能を分けることは、設計の選択である。本発明の異なる実施形態では、異なるサブシステムは、機能を異なるやり方で共用することがある。あるいは、サブシステムがさらに多いか、あるいはさらに少ないこともある。例えば、本明細書に図示されるいくつかの実施形態では、シーケンサ/制御サブシステムは、別個のサブシステムではない。もっと適切に言えば、シーケンサの機能の一部は、サブシステム2にあり、また、残りの機能は、サブシステム3にある。
図3は、一実施形態において、GPSシステムの全体データフローの概略を示し、さらに、様々なサブシステムの概念的配置構成も示すブロック図である。図示されるように、サブシステム1、サブシステム2、サブシステム3は、ランダム・アクセス・メモリ(「RAM」)へのアクセスのために、アービトレーション(調停)を行う。さらに以下で述べられるように、RAMは、論理的に4つの部分に分けられるが、ただし、様々な実施形態では、GPSシステム内か、GPSシステム外のいずれかに、物理メモリ素子がいくつあってもよい。
図4には、或るシステム実施形態用の信号フローが示されている。入力サンプル処理ブロック、すなわちサブシステム1でRF信号が受け取られる。サブシステム1は、入力サンプリングに対して時刻および周波数の基準を与える入力サンプリング・クロックおよび他のクロックから細かく分割したもの(ディバイド・ダウン、divide-down)であるカウンタ・チェーン(counter chain)を含む。
図5は、サブシステム1中の基本機能モジュールを示している。
図6は、サブシステム1中の基本機能モジュールの追加詳細図を示している。自動利得制御(「AGC」)は、入力サンプル・ブロックに入るRFサンプルを調べる。AGCには、ダウン・カウンタ(down-counter)がある。入力サンプルは1またはゼロの振幅を持っている。1の値は、強力信号に相当する。サンプルが1の値を持つときには、AGCがカウトダウンする。AGCが過大にカウトダウンする場合には、その信号は大きすぎるため、AGCは制御信号をRFに送って、RFにその利得を下げるように指示する。逆も同様である。
図7は、基本的なサブシステム1のデータフローの追加詳細図を示している。
図8は、サブシステム2である信号処理サブシステム中の様々なブロックを示している。
図9は、相互相関要素なしのサブシステム2の代替ブロック図である。
図10は、サブシステム2の一実施形態用のデータフローを示している。図10は、フロー制御用のパイプライン段階およびレジスタを示している。「メモリ・インターフェース」、「信号処理装置」などのようなタイトルの付けられた部分はそれぞれ、制御機構を持っており、それぞれ、それ自身が状態機械(state machine)として動作する。データが左から右に流れると、これらの部分間に受渡しがある。
図11は、タイミング分析で考慮に入れられるクリティカルパスを示すサブシステム2の一実施形態における他のデータフローの図である。
図12は、一実施形態におけるサブシステム2の制御フローを示す図である。マスタ・コントロールは、図12の左側にある。整合フィルタ・コントローラは、数ミリ秒の間、処理するようにプログラムされており、また、符号および搬送波NCOは、始動位置がプログラムされている。この整合フィルタ・コントローラは、データを、FIFO1から符号および搬送波NCOへ引き込み、次に、そのデータを信号処理装置に入れ、また、この信号処理装置から整合フィルタに送り、次にコヒーレント累算器(coherent accumulator)に送り、次に、コヒーレントRAMに送って、そこでコヒーレント累算を行う。
一実施形態では、異なるやり方で整合フィルタを構築して、その整合フィルタが数ミリ秒の間、データを処理するようにしている。この整合フィルタは、データの要求をストップするまで、信号処理装置からデータを引き出す。次に、この信号処理装置は、データを生成するのを止める。コヒーレント累算器は、整合フィルタが出力するものは何でも受け取って、その出力のコヒーレント累算を行う。この整合フィルタは、いつチャネルを変えて、異なるチャネルからのデータ、あるいは異なるサテライト・ビークルからのデータを処理するのか決定する。この整合フィルタは、その期間の処理を実行したときに、「処理のストップ」を有効に伝える。
図13は、図12の左側にあるコントローラの一実施形態のブロック図であって、異なるモジュール(例えば、信号処理装置、整合フィルタ、符号器など)とのやり取りに関して、さらに詳しく示している。このコントローラは、処理の初期設定を行う。サブシステム2制御モジュールによるRAMアクセスのチャネルRAM領域が存在する。これは、シーケンサの機能がサブシステム2とサブシステム3との間で分けられる一実施形態の一部である。このシーケンサのうち、サブシステム2において例示される部分が、ここで示されている。チャネルを初期設定するときには、この制御モジュールは、チャネルRAMにアクセスし、かつ、サブシステム2に必要となるチャネル・パラメータを引き入れて、その特定のチャネルを処理する。次に、この制御モジュールは、そのチャネルを処理するのに必要となるパラメータを用いて、信号処理装置、符号器、整合フィルタ、コヒーレント累算器をプログラムする。これらのパラメータが、例えば、整合フィルタに数ミリ秒の間処理を実行するように指示し、次に、その整合フィルタはその処理を実行すると、処理が終了したことをサブシステム2の制御モジュールに知らせて、そして、そのコントローラは次のチャネルに進むことができる。次のチャネルに用いるチャネルRAMの場所などを保存しているリンクされたリストが、そのチャネルRAM中にある。
一実施形態では、上に列挙された様々なモード(コールド・スタート・モード、粗支援捕捉モード、トラッキング・モード)で動作するように、様々なチャネルがプログラムされている。チャネルRAMに格納されているパラメータにより、これらのサブシステムは、特定のモードにおいて、特定のチャネルに対して適切にプログラムされる。これらのチャネルは、時間を多重化するやり方で、これらのサブシステムにアクセスする。
図14は、サブシステム2の一実施形態用のマスタ・コントローラの流れを示している。
図15は、高速フーリエ変換(「FFT」)サブシステム3の一実施形態の様々なモジュールとモジュール分割を示している。
図16は、サブシステム3の一実施形態をさらに詳しく示している。サブシステム3の制御モジュールは、図16の下側に示されており、機能的にサブシステム2の制御モジュールに類似している。破線はこのサブシステムとメモリとの境界線を表わしている。ピークRAM、NCS RAMなどはメモリ中の領域である。コヒーレントRAMもメモリ中の領域である。しかしながら、FIFO2は、サブシステム2とサブシステム3間で、メモリにアクセスする動作を制御するFIFO2制御構造である。例えば、FIFO2は、コヒーレントRAM中に処理すべきデータがあるときに、サブシステム3に知らせる。FIFO2はまた、サブシステム3がまだ使用してないデータをサブシステム2が上書きしようとするときに、サブシステム2に知らせる。これに対応するFIFO1がサブシステム1とサブシステム2の間にあり、入力サンプルRAMへのアクセスを制御する。
図17は、FIFO2を含むサブシステム3のデータフローを示している。サブシステム2からサブシステム3に進むデータは、FIFO2構造により制御される。実データは、FIFO2の真上のコヒーレントRAM中にある。FFTは、コヒーレントRAMからいくつかのサンプル入力を受け取って、これらのサンプル入力にFFTを実行する。FFTは、個々の処理モードに応じて決定されるいくつかの周波数を発生させる。一例として、8サンプル、16ポイントのFFTでは、このFFTは16の周波数を発生させる。16の周波数がすべて、重要であるとは限らない。例えば、外側周波数は有用でないこともある。集合モジュール(gather module)はプログラムされた数の周波数しか受け入れない。これらの周波数の数はプログラム可能である。
この集合モジュールは、所望の周波数を選択し、それらの周波数をさらに圧縮した形式で詰め込んで、それらの周波数を非コヒーレント累算器であるNCSに渡す。ここには図示されてないが、集合モジュールの出力は、トラック履歴RAM(「TH」)に進む。この集合モジュールの出力は、コヒーレント・データ(明確なI成分とQ成分をまだ持っている)である。非コヒーレント・データは、NCSに保存される。選択されたコヒーレント・データは、後にソフトウェアによって検査して処理するために、そのTHに保存される。この図の上側には、ソータしきい値モジュール(sorter しきい値 module)に進む線がある。大量の情報がNCSモジュールによって生成される。例えば初期捕捉モードにおいて、この情報を保存することが望ましくないことがある。特定のサテライト・ビークルに対して、奇数と偶数の1/2チップおよび複数の周波数(それぞれ、比較的に大きなデータ・アレイを生成する)を処理することが望ましいこともある。したがって、データが生成されると、そのデータは処理されて、ピークでソートされる。8つの最大値、並びに、それらの値がどこに現れたかに関する情報、例えば、どのタップ番号、どの周波数、さらに、該当周波数が奇数の1/2チップであったか、偶数の1/2チップであったかどうかが保存される。コンテキストの終了時には、すべてがピーク・ソータ(peak sorter)に保存される。
コンテキストは、ここでは、サブシステムに対して1チャネルを処理し終えたことを示すために使用される用語である。チャネルがサブシステム3に入ろうとするときに、あるいは、処理がほぼ終ったときに、このコンテキストの終了時点でピークが保存されて、ソフトウェアがそれらのピークを検査し、その決定を下せるようにしている。
図18は、サブシステム3の制御フロー用のタイミング信号を示している。ここでは、2つのタイミング分割の用語が使用されており、例えば、T1とPDI(すなわち、事前検出積算(pre-detect integration))が規定されている。T1は、基本的には、コヒーレント累算器でコヒーレント累算を行うのにかかる時間であって、整合フィルタの出力から送られる。
整合フィルタが、完全整合フィルタ・モードで動作しているとする。この整合フィルタの出力は、1ミリ秒全体に相当するコヒーレント累算である。このようなコヒーレント累算は、コヒーレント累算に割当てられた1ミリ秒全体を要する。処理が特定のタップ位置を含むたびに、もう1秒分のコヒーレント累算がもたらされることになる。このコヒーレント累算器は、第1の1ミリ秒分と第2の1ミリ秒分のコヒーレント累算を加算して、2ミリ秒分のコヒーレント累算を得る。2ミリ秒よりも長いか、または2ミリ秒よりも短いコヒーレント累算もプログラム可能である。タップに対してプログラムされた数ミリ秒のコヒーレント累算の完了は、T1に相当するコヒーレント累算を構成する。様々なモードに応じて、例えばT1のミリ秒単位の長さには変動がある。いくつかのモードでは、さらに微弱な信号を探すために、さらに長い累算を行うことが望ましい。コヒーレント累算が終ると、非コヒーレント累算がスタートする。
1/8整合フィルタ(低分解能モード)では、1/8に分割されたブロックのそれぞれがワン・ショット(単発)で1/8msの累算を行う。整合フィルタはこうして、信号を8回コヒーレント累算器に送り込み、1ms分のコヒーレント累算をもたらす。これは、所定数のmsのコヒーレント累算を得るために、必要なだけ繰り返される。
それぞれのT1は、FFTに入力される1サンプルを表わしている。例えば、8サンプル、16ポイントのFFTでは、FFTに送り込むのに8T1が必要となる。これは、PDIと呼ばれ、ワン・ショットでの8T1がPDIを構成している。
それぞれのT1は、FFTに入力されるサンプルを表わしている。しかしながら、多くのT1が同時にFFTに送り込まれ、それらがPDIを構成する。
図18は、T1境界とPDI境界を把握する必要性を示している。これは、「終了」信号により容易となる。図18は、FFTから始まって、集合モジュールを経て、NCSに至るパイプラインのフローを示している。サブシステム3のバックエンド・コントローラは、このサブシステムを起動する。pdiNext信号は、FFT処理データを始動させる。そして、NCSは、「PDIの処理を完了した、次は何をするのか?」をバックエンド・コントローラに知らせる必要がある。
図19は、時間とアドレスのカウンタを含むFFTコントローラの詳細を示している。このFFTコントローラは、FFTに送るのに必要となるコヒーレントRAM中のデータの場所を把握する。FFTコントローラは、FFTがどのサイクルにあるか、またFFTがどんな情報を必要としているのかを認識する。FFTコントローラは、FFT処理の状態の指標とアドレスを生成する。
FFTコアは、4ポイントのFFTを含む。16ポイントのFFTを構成するために、4ポイントのFFTを特定のパターンで繰り返して動作させて、16ポイントFFTを生成する。このコアは4ポイントのFFTであるから、一度に4つのT1の入力サンプルを必要とする。しかしながら、サブシステム2は線形的にT1を生成する。FFTはT1をビット逆順で必要とすることがある。例えばFFTは、最初のショットでは2、7、3、1のパターンとして、また次のショットでは他の何らかのパターンとして、8つのうちから一度に4つのT1を必要とすると仮定する。回転(twiddle)アルゴリズムは、サブシステム2の出力を4つの物理的に異なるRAMに最適なパターンで格納して、サブシステム3で必要とされるデータが、データの衝突なく、一度に4つのT1でアクセスできるようにしている。回転アルゴリズムを用いないで、RAMを4つの領域に分けると、さらに多くのメモリ読出しを行う必要があろう。この回転アルゴリズムは、FFTがどの4つのT1を同時に必要とするのかを認識して、それらの4つのT1を異なるRAM(またはRAM領域)に確実に格納できるようにする。図37〜図44は、一実施形態におけるFFTアドレス回転(FFT address twiddling)のハードウェア面とロジック面を示している。
図20は、一実施形態における基本的なサブシステム3のフローを示している。図示されるスケーリング・モジュールは、デスケーリング(descaling)を行う。データが以下のようにスケーリングされるために、このようなデスケーリングが必要である。コヒーレント累算器では、データを通すパイプラインは比較的に狭く、またダイナミックレンジは非常に広い。例えば、コヒーレントRAM中にメモリ空間があるIデータの8ビットとQデータの8ビットだけを考えると、このIとQの8ビットは指数すなわちスケールと関連づけられる。コヒーレント累算器がこの8ビットに対してオーバーフローに近づくと、この指数を1つだけ上げ、かつ、この8ビットを1つだけ縮小するような自動機能が存在する。サブシステム2がデータをコヒーレントRAMに送り込むと、サブシステム2によりスケーリングが行われる。それぞれのT1は、関連付けられたスケール値を持っている。一度に4つのT1をFFTに送り込むような、異なるスケール値をFFTに送り込むことはできない。したがって、このスケール・モジュールは、すべてのデータを、同一スケールに正規化する。そのFFTの出力は、それ自体のスケーリング機能を持っているNCSに渡される。こうして、コヒーレントと非コヒーレントのスケーリングが行われる。
図21は、サブシステム3のコントローラの制御のもとに、FFTがどのようにサイクル動作を続けるか示している。FFTが特定のチップ位置について処理を行い、そのFFTを完了させると、次のチップ位置に進むように指示される必要がある。これは、FFTコントローラの状態機械の詳細である。
図22は、サブシステム3のマスタ・コントローラ用のフローを示している。セマフォ・ワード(semaphore word)は、始動時に、これらのサブシステム間ですばやく配布されなければならない様々なデータを示している。このデータは、サブシステム2、サブシステム3、ソフトウェアという3つの準非同期な処理の間で交換される必要がある。それらの処理はそれぞれが独自に動作して、他から情報を得ることがある。このセマフォ・ワード中の情報は、100msレポート作成、実行されるべきサブシステム3における位相調整、あるサブシステムから他のサブシステムへの様々な状態フラグなどを含むことがある。これらのサブシステム、ハードウェア、ソフトウェアは、セマフォ・ワードを読み取って、決定を下す。
このコントローラは、サブシステム3とFIFO2を初期化(図中上側中央付近を参照のこと)して、基本的には、チャネルRAMにアクセスさせて、チャネル・パラメータを引き出し、そのチャネル用にサブシステム3をプログラムする。「FIFO2データが利用可能」とは、サブシステム3がコヒーレントRAMからのデータを必要とすることを意味しており、したがって、そのデータが利用可能かどうかを知る必要がある。そのデータが利用できなければ、そのデータが利用可能となるまで待機する。これは、サブシステム2とサブシステム3との間で、多くの順序付けを制御するラッピング・ルール(lapping rule)をともなう。サブシステム2とサブシステム3は、チャネルのリンクされたリストを処理する。サブシステム2はチャネルを処理して進み、次いで、サブシステム3はそのチャネルに入って、データを取り出して、そのデータを処理する。サブシステム2は、サブシステム3より先に進んではならない。サブシステム2は、サブシステム3に追いつくことができるが、サブシステム3のすぐ後でなければならない。
「FIFO2データが利用可能か?」の判断ブロックと、「サブシステム2中のチャネルか?」の判断ブロックは、上記ラッピング・ルールの一部である。データが利用できなければ、このチャネルをまだ離れないようにサブシステム3に指示する。なぜなら、サブシステム2がサブシステム3のためにデータを生成しているかもしれないからである。サブシステム2が離れれば、サブシステム3はそのチャネルから離れてもよい。
図には相互相関機能も示されている。一実施形態では、サブシステム2が基本的な相互相関データを生成し、そしてサブシステム3が実際にその相互相関データを除去する。
「FFTのT1が終ったか?」の判断ブロックを参照すると、PDI中の複数のT1オフセットに対して実行される処理におけるビット同期モードが存在する。ビット同期モードで処理を行わない場合には、毎回、例えば、8サンプル、16ポイントのFFT(これは、ビット同期モードではないであろう)であれば、8つのT1を処理してFFTに送り込んだ後で、次の完全な8つのT1、または次のPDIをFFTに送り込む。その一方、ビット同期モードでは20のT1がある。なぜなら、それぞれが1msであるからである。したがって、20の仮定ビット位置を算出する必要がある。これらのビット位置には、20msの曖昧さ(ambiguity)がある。GPSデータ・ビットは20msであり、またCA符号は1msごとに繰り返す。そのCA符号においては、位置合わせを実行できる。ビット同期を用いれば、20ms中の1msの曖昧さは除去される。異なる仮定に対して、異なるT1オフセットが試みられる。
PDIを完了すると、フローは図の右下側に進む。別の奇数または偶数、もしくは別の周波数が望まれるかどうかが決定される。サブシステム2はサブシステム3が処理する必要のある偶数または奇数の複数の周波数を発生させる。図の右側で真上に進むフローで示されるように、HWトラッキング・ループが繰り返され、いくらかスケーリングされ、バイアス・パラメータが更新される。図の左端のフローは、コンテキストが終ろうとするときの、チャネルに対するクリーンアップである。セマフォ・ワードが更新されて、そのチャネルに対して最終コンテキストの間に起ったものがすべて反映される。HWトラッキングとレポート(適宜、100msレポートまたはコンテキスト・レポート)の作成も行われる。そして、そのチャネルが停止され、セマフォ・ワード中のアクティブ(活動)ビットがゼロにセットされる。チャネルRAM中のリンクされたリストが探索されて、どのチャネルが次にハードウェアにアクセスするかが決定される。
図23は、FIFO2を介したサブシステム2とサブシステム3との間のやりとり(インタラクション)を示している。サブシステム5はメモリ・アービタ(memory arbiter)である。上述したように、図示されるRAMは4つのメモリ・ブロックに分けられる。一度にこれらのサブシステムのうちの1つだけ、あるいはサブシステム中の1つの機能だけが、RAMにアクセスする。これは、サブシステム2がコヒーレント・データを生成して、そのデータをRAMに書き込もうとすることと、サブシステム3が処理のためにデータを要求することを示している。サブシステム5は、どれがアクセスするのかを決定する。FIFO2は、RAMにアクセスしようとするそれぞれの要求の状態を、それぞれのサブシステムに知らせる。
図24は、サブシステム5の機能の詳細を示す他の図である。
図25は、一実施形態において、サブシステム3に実装されるシーケンサ・サブシステムの要素を示している。
図26、図27は、図22のフローチャートの一実施形態であるシーケンサ(順序付け)モジュールのブロック図である。このシーケンサ・モジュールは、制御要素を含み、さらに、レジスタ、データ・ストレージ、メモリとのインターフェースなども含む。しかしながら、図示されるシーケンサ・モジュールのインターフェースは、基本的にフロー制御である。算術論理演算装置(「ALU」)モジュールは、HWトラッキング機能用の専用算術能力を提供する。バックエンド・コントローラは、NCSモジュールがどこにあるか認識しており、FFTコントローラがFFTを制御するのと同じやり方で、NCSモジュールを制御する。
さらに、PDIレートで行われる機能と、コンテキスト・レートで(すなわち、チャネルの処理が完了する前に)行われる機能とを有するHWトラッカ(tracker)が存在する。このシーケンサは、ALUをそのナンバー・クランチャー(number cruncher)として使用し、HWトラッキング・ループの機能を制御する。
図28は、単一のモジュールにシーケンサの機能が入っている一実施形態のブロック図である。これは、サブシステム2とサブシステム3との間でシーケンサの機能を共用する先に述べられた実施形態に代るものである。
図29は、このシーケンサが果たす機能の一部を示すブロック図である。この機能には、データ・パス制御、ハードウェア・トラッキング・ループ、レポート制御がある。レポート制御は、ソフトウェアで使用する、100msレポート、コンテキスト・レポート、ピーク・レポートなどのような様々なレポートの作成を制御する。
図30は、様々なRAMの機能を示している。一実施形態では、これらのRAMの機能のすべてが、物理的に1つのRAMに組み込まれている。他の実施形態では、これらのRAMの機能は、物理的に異なるRAMの間で共用される。メモリ・サブシステムは、これらのRAMの機能にアクセスする要求のアービトレーションを扱っている。
図31は、FIFO1の一実施例の詳細を示している。図の左側にあるライン(line)信号、ブロック(Block)信号およびラップ(wrap)信号は、サブシステム1がデータをRAMに書き込もうとするときに使用するものである。図の右側の、ライン信号、ブロック信号およびラップ信号は、サブシステム2がデータをRAMから読み出そうとするときに使用するものである。
図32は、様々なタイプのRAMと、様々なサブシステムがそのRAMにどのようにアクセスするかを示すメモリ・データパス・フローのブロック図である。(図の左側において)サブシステム1はデータを入力サンプルRAMに書き込んでおり、また、サブシステム2はFIFO1の制御のもとにデータを読み出している。同様に、FIFO2はサブシステム2およびサブシステム3によるコヒーレントRAMへのアクセスを制御する。TH RAMは、先に述べられたように、トラック履歴をコヒーレント・データの形式で保存している。一実施形態において、ビット同期RAMはT1オフセットが複数存在する特定のチャネルに対するTH RAMの1タイプである。ソフトウェアは、複数のT1オフセットを使用して、データ・ビットのエッジがどこにあるか決定する。システムが動作している間、データ・サブシステムがこれらの様々なRAMにアクセスしようとする。このシーケンサは、おもにチャネルRAMにアクセスしようとするだけでなく、コヒーレントRAMにもアクセスしようとする(例えば、ポインタにアクセスしようとする)。ソフトウェアも、RAMにアクセスしようとする。ソフトウェアからチャネルRAMへ向かう矢印に注意されたい。ソフトウェアは、NCS RAM、TH RAM、ピークRAMを検査する。RAMアクセスのすべてが、サブシステム5のアービトレーションで扱われる。
図33は、サブシステム5とアービトレーション優先順位の一例を示すブロック図である。優先順位の可能な割当ての1つが、左下に列挙されている。通常は、サブシステム1は、制御できない速度でサテライト・ビークルからデータを受け取っているために、非常に高い優先順位を持っている。通常は中央演算処理装置(「CPU」)も、同様に優先順位が高い。
図34は、システム動作の間、特にモード3すなわちトラッキング・モードで行われる処理の一部を示している。例えば、この図の左側にはタイミング・チェーン(timing chain)があり、そして、入力RAMに入り込む入力ストレージがある。データはRAMの特定の位置に書き込まなければならない。一実施形態では、サブシステム1のタイマ・モジュール中にフリーラン(free-running)32ビット・カウンタがある。このカウンタは、ユーザ・タイムに関連づけられる。ユーザ・タイムは、RFから得られるサンプルをストローブする(strobe)レートを示している。ユーザ・タイムは、データを入力サンプルRAM中のどこに格納するかに関連している。サブシステム3は、入力サンプルRAM中のデータの場所が時間に関連づけられていることを認識している。サブシステム3はそのデータを引き出して整合フィルタに入れる。整合フィルタの前方にある信号処理装置(図示されてない)は、この整合フィルタに対して、信号のデシメーション(decimation)と循環を行う。
左上には、ユーザ・タイムを左側に、また処理タイムを右側に示している破線がある。概念上、左側の処理は、RFクロックと緊密な関係にある。イベントは、ユーザ・クロックの周期で起こらなければならない。右側には、どのような現実の周波数も有することができる信号処理装置のクロックがある。信号処理装置のクロック周波数が高くなればなるほど、それだけ多くのデータが単位時間当たりに処理される。
図35、図36は、システム動作の間、特にモード1、すなわちコールド・スタート・モードで行われる処理の一部を示している。モード1では、コヒーレントRAMはサブシステム2とサブシステム3との間のパス中には示されていない。モード1では、データは整合フィルタから直接FFTへ移動する。整合フィルタとFFTが互いにロックされているために、この整合フィルタは「ロック」モードにあると言える。このモードでは、整合フィルタは、フラクショナル(分数)モードにあって、4つの部分に分けられる。
モード1では、フラクショナル整合フィルタは、他のモードとは異なる態様で使用される。例えば、この整合フィルタは4つの部分に分けられて、それらの部分はそれぞれ、4サンプル、8ポイントのFFTへの別々の入力である。したがって、FFTは整合フィルタから直接に4つの入力を得る。これらのポイントまたはサンプルはそれぞれ、1/4秒分のコヒーレント積算値(coherent integration)である。FFTでは、それぞれのサンプルに対して、コヒーレント積算時間が短ければ、周波数またはビン(bin)の幅が広がる。コヒーレント累算がより長い周期に対して行われる(より長いT1周期があることを意味する)場合には、周波数ビンは狭くなる。狭い周波数ビンは、トラッキングには好ましいが、広範な探索においては望ましくない。
全体のシステム動作
サブシステム1では、タイミング・モジュール、RFから信号をメッセージとして送るデシメーション・モジュール、および、到来するRF信号を制御する自動利得制御(「AGC」)モジュールがある。
そして、デシメートされた信号は、FIFOタイプの制御を通って、RAMの或る部分に格納される。入力RAM、コヒーレントRAM、非コヒーレントRAMという3つのタイプのRAMが存在する。これら3つのタイプのRAMは、動的に複数の領域が割当てられた1つのRAMに物理的に構築されている。一実施形態では、このRAMは、FFTのために、またデータをFFTに送るために、4つのブロックに分けられる。回転アルゴリズムは、4つのデータが同時にこのRAMから得られるように、データを格納させる。4ブロックのRAMは、データの衝突(コンフリクト)を避けるのに役立ち、かつ、RAMへのアクセスのスループットを向上する。
3つのデータ・サブシステム(1、2、3)はすべて、4つのRAMと、これらのRAMのうち、入力サンプル、コヒーレント累算、および、非コヒーレント累算を格納する様々な領域へのアクセスを要求する。
サブシステム1を起動すると、サブシステム1はデシメートされたデータをサンプルRAMに格納する。一実施形態では2つの格納モードがある。一方のモードはアドレス空間の1領域がワン・ショットで満たされるワン・ショット・モードである。そして、残りのサブシステムがそのデータを処理する。他方のモードは特定領域も満たす巡回(cyclic)バッファ・モードである。その領域が満たされると、この書込み動作はサイクル動作して、その領域の始まりに戻って、格納されたデータを上書きし始める。巡回バッファ・モードでは、不特定数のチャネルがサブシステム2とサブシステム3の使用を時間的に多重化して、それぞれがサイクル動作を行って、それぞれがデータを処理する機会を得る。
このシステムの動作は、以下でさらに詳しく説明されるように、3つの動作モードの点で基本的に異なっている。しかしながら、いくつかの基本的な共通点が3つの動作モードのすべてに当てはまる。通常は、例えば、入力サンプルが保持され、相関が行われ、そして、スペクトラム拡散が移されて、整合フィルタ(「matched filter」)に対して逆拡散して、さらに、搬送波の位相が信号処理装置に移される。
一実施形態では、この整合フィルタの長さは1024であり、これは、長さが11である従来の整合フィルタよりも著しく長い。このFFTは32ポイントの変換を行う。また、このFFTは様々な異なるアレイ・サイズや形状に対していつでも使用できる。
不確実さが大きい場合(例えば、すべての衛星が見える訳ではない場合など)には、スペクトラム拡散処理はこの時間領域内で1024のチップ・オフセットの探索を必要とすることがある。複製(レプリカ)符号をこの受信信号に揃えると、整合と、最大出力を得ることができる。この符号が不揃いとなるときには、出力が低下する。この相関が正確に揃えられると、信号パワーのピークとなる。この整合フィルタは、特別な複製符号のコピーをレジスタに入れておいて、その信号をそのコピー越しにスライドさせる。ほぼ1msごとに1回、ピークが現れる。屋外環境では、強力な信号があるときには単一パルスをほぼ検出できるが、通常は多数のものを平均化しなければならない。その多くは合計され、また、オフセットごとに加算や、1msのスキップや、それとは異なる加算がある。符号オフセットごとに、1024の加算が保持されることもある。
一実施形態において、1ms全体の符号に対して積算を行う際の相関において有効な窓(window)は、約±500Hz(いくらか損失があるが)である。通常は、積算はそのクロース(close)の約2倍の回数行われる。たいして正確でない発振器(例えば、数十キロヘルツの誤差を持つかもしれないもの)を考えると、その周波数はその周波数領域内で調整されて、おそらく200回もの相関を繰り返す。したがって、この発振器が校正されてないときに、まさに或る符号を探索するためには、200Kの個々の探索ビンまたは400Kが扱われることがある。なぜなら、その符号は2サンプル/チップの間隔で配置されているからである。したがって、200の周波数に2000の相関を乗算することにより、400Kの個々のセルが探索されることになる。これらのセルは、複数回にわたって平均化されなければならない。このケースは、整合フィルタの機能を例証する一シナリオであるが、通常は、強力な信号を予想できる屋外環境に対して確保されている。
全体的なメモリとアービトレーションの側面
FIFO1は、アドレス生成器である。図面では、FIFO1は複数の概念的な入力とともに示されているが、一実施形態では、FIFO1を含むRAMは1つのポートを有している。RAMへのすべての入力がアービタを通る。FIFO1は、右側のサーキュラ・パターンでアドレスをカウントする。FIFO1は或るアドレスから開始して、バッファを或る一定の長さにするように指示されている。このカウンタは、開始アドレスから終了アドレスまでカウントし、その開始アドレスに戻ってデータの上書きを開始する。読出し側には、信号または論理チャネルが生成されるたびに再読込みする同様なアドレス・カウンタがある。したがって、FIFOが再読込みされ、いくつかのサンプルが扱われ、もう一度FIFOが再読込みされ、さらに多くのサンプルが扱われる。基本的には、50MHzのクロックを用いると、そのサンプルを使い切るか、あるいは上書きする前に、リアルタイムで約25回そのサンプルを再生することができる。このフローに付いていくために、約24チャネルが割当てられることもある。
FIFO1は、アドレスをカウントし、比較的に遅い速度で、おそらく128クロック・サイクルくらいごとに書き込み、かつ、別のサンプルをダンプする。FIFO1は63ビット・ラインにおいてアクセスされる。約8マイクロ秒ごとに、別のラインのサンプルが収集され、FIFO1が1メモリ・サイクルを要求する。FIFO1はアービタを通る。FIFO1は、優先順位が高いために、通常は、要求されたメモリ・サイクルを得る。それよりも高い優先順位はただ1つ−マイクロコントローラである。FIFO1は、このラインに書き込んで、続けて、他の32のサンプルの収集を開始する。
サブシステム2は、ほぼ同じことをする。シーケンサは、求めるサンプルのアドレスをFIFOに入れる。基本的に、探索中のそれぞれの衛星の遅延は、最初のサンプルが収集された時刻に影響する。入力されるサンプルをカウントするカウンタと、このシステムが開始したい位相との間で相関がある。FIFO中のロジックは、このサンプル・カウントをメモリ・アドレスに変える。FIFOは、1サイクルの読出しを要求して、32のサンプルの1ラインを得る。これを繰り返して、FIFOはそのデータを整合フィルタに送り込む。
図4を参照すると、データは比較的遅いレートで入力サブシステム1に入って、カウンタがアドレスをカウントし、またサブシステム2中の類似するカウンタが、ループにおいてアドレスをカウントしている。入力サンプル・バッファは、25回再読込みする、1つのバッファであることもある。また、その処理は、処理を必要とするサンプルが時間的にもっとも早くなるように、タイミングを合わせられている。処理の後、いくつかのサンプルがバッファからすでになくなっており、新たないくつかのサンプルが格納されている。その処理は、最初のパスをなすのにかかる時間(例えば、800マイクロ秒)とほぼ同じ時間をかけて実行されるように、タイミングを合わせられている。これらのサンプルはすべて時間的に広げられ、バッファには絶えず再読込みがなされる。合計処理は、RAMから前回のデータを読み取り、それに新たなデータを追加し、そのデータをRAMに戻す。これは、コヒーレント累算ブロックである。サンプルを生成するごとに、そのサンプルはメモリに追加される。またPDI全体が生成されると、このFFTブロックはそれぞれのサンプルに対して最初のチップ・オフセットを取得し、それを処理し、その振幅(正の実数)を取得して、それをそのオフセットに対するビンに追加する。PDIは7msであるかもしれず、7サンプル/各符号オフセットであるかもしれず、したがって、メモリは最初の1msに対して1024、2回目の1msに対して1024というように配置されるであろう。
これらのシーケンサ・ポートはメモリも読み取る。したがって、一定のデータ・パターンがあり、様々なサブシステムがメモリ・サイクルに対して要求を出している。このアービタは、サブシステムからの要求を受け取って、どれが最高の優先順位を持つのか決定し、メモリ・サイクルを許可する。一実施形態では、この優先順位は、図33に示されるように、配線で実現されている。データ・パスを切換えて適切なデータ・ポートをメモリにアクセスさせ、メモリ・バスを切換える。そして、このアービタは、次に高い優先順位に移行する。一実施形態では、それらの優先順位に従って、6〜8のポートが切換えられる。
全体的な順序付けの側面
このシーケンサは、一実施形態において、これらのチャネルのそれぞれの状態を保存するために割当てられたメモリの一部にデータを入れることがある。このシーケンサの仕事は、簡単に述べると、メモリ中のデータを受け取り、ハードウェアが実行することになっている限り、そのデータをそのハードウェアで実行することである。シーケンサが知る必要のある全てのことは、約256バイトのメモリに収まる。このシーケンサは、様々なサブシステムにおいて動作が行われると、リストを詳しく調べて、状態を読み込み、それを復元する。このシーケンサは、どのサブシステムにおいて、どんなデータが処理されているのかを把握していなければならない。通常は、RAMは状態用に確保されたいくつかのアドレスを持っている。しかしながら、一般に、どこにデータを保存すべきか、あるいは、どれだけの量のデータを保存すべきかについては、データが重複できないことを除けば、限定はない。
チャネルの状態は、そのチャネルの状態を正確に復元可能とするレポートとして、定期的に保存されている。これらのレポートは、そのチャネルがあった場所に関して正確な情報を記載している。これらのレポートは、通常、符号化された搬送波位相を取り出すために、ナノ秒もしくはピコ秒(搬送波の場合)の範囲内で正確である。これは、それぞれのサンプルについての角度と遅延に対して、大きく、高い分解能を示す数値である。このレポートは定期的に(例えば、20msごとに)ダンプされており、このレポートによってハードウェアが実際に行っている処理内容を辿ることができる。概念的には、これはDMA(direct memory access)エンジンに似ているが、例えばホスト・プロセッサからの外部指示のもとに追加機能を実行するロジックを含む。
このプロセッサはこのシーケンサに対して、あらゆるモードを含むこのシステムの状態、このシステムが前回終了したところからの搬送波符号NCOの位相を読み込んで、データのサンプルを処理するように指示する。そして、そのシーケンサは、次のチャネルに進むように指示される。わずかではあるが、識別すべきエラー状態や状態情報など、様々なデータがシーケンサによって生成される。チャネルがオンであるかどうか確認したり、いずれかの状態に(例えば、このシステムの処理を妨げるような)不具合があるかどうかを確認したり、位相を読み込んで、その位相と入力FIFOの状態の比較を試みたりといった、全体的な一連の動作が存在する。シーケンサが求めるサンプルがバッファ中にない場合には、シーケンサは動作しようとはしない。シーケンサは、サンプルとサンプルの間のマージン(margin)を調べて、マージンが最小値を超えるかどうか判定する。このマージンが最小値を超えない場合には、シーケンサは動作しない。このシーケンサは、それをすべて行った後で、次のチャネルまたは処理に移行する。ときには、そのバッファがすでにオーバーフローしており、復元の見込みがないことがある。その場合、シーケンサは、そのチャネルが完全に失われたことを理解して、さらなるエネルギーを浪費することなく、そのチャネルを停止することになる。ユーザが気づく前にその問題が解決されるように、シーケンサはホスト・プロセッサに割込みを送信する。
この順序付けはどれくらいのmsが特定のサブシステムにより処理されるのかによって決まる。さらに、これは、データの利用可能性に基づいている。この情報でシーケンサが読み込む部分は、チャネルを動作させるのに十分なサンプルがバッファ中にあるかどうかである。あるときにはシーケンサは共有されたバッファを指向し、あるときには専用のバッファを指向する。シーケンサは、特定の種類のFFTを行うのにどれだけのサンプルを必要とするのかと、バッファ中にどれだけのサンプルがあるのかとを、対比して調べる。シーケンサは、バッファ中に十分なサンプルが存在するようになるまで待機するように要請されたかどうか調べる。例えば、プロセッサがなおバッファに書き込んでいる場合、システムはバッファが書き込まれるのを待つか、すぐに手を引くかしなければならない。シーケンサが待機して、戻ってきて、なおかつ十分なサンプルがない場合には、シーケンサはすぐにスキップする。この種のロジックは、シーケンサ中で進行している。すなわち、(どのデータがどのチャネルで扱われるか)データをソートし;バッファのすべてのアドレスを再読込みし;バッファの状態をチェックし;システムが処理を実行できる場合に処理を実行し、システムが処理を実行できない場合にスキップし;他のサブシステムとの同期を維持する。一方のサブシステムがチャネルを先に処理しており、他方のサブシステムがいくつかの時点で過酷な作業負荷を有しているために、現実に遅延したデータを処理するようなシナリオが存在する。その後、その他方のサブシステムの作業負荷がなくなると、遅れを取り戻すことになる。一方のサブシステムの処理がより集中的(bursty)であり、他方のサブシステムの処理がより均一(regular)であるため、その遅れたサブシステムは、通常、その遅れを取り戻すことができる。他のシナリオでは、バッファがいっぱいになっており、さらに多くのデータをバッファに入れようとするサブシステムは停止しなければならない。このサブシステムは、それが必要とする次のデータがすでに失われてしまうほど長い期間、停止しなければならないことがある。これは、対処しなければならないエラー条件も発生させる。
シーケンサとプロセッサとの間には、メッセージのやり取りがある。一般に、このプロセッサは、ダンプされていく状態と、出て行くデータによって、何が起こっているのかを絶えず看視している。
このGPSシステムはさらに、過去の実績に基づいて、そのシステムを制御する上で利益をもたらすトラック履歴要素も含む。トラック履歴要素(「TH」)は、例えば図4、図16、図17に示されている。THデータは、例えば搬送波位相誤差を計算して、補正値を送るなど、様々な手法で分析され、使用される。これは、衛星が移動するか、あるいは発振器が移動するのに伴って、例えば周波数についての調整が行われるであろうから、有用である。
一実施形態では、THは、コヒーレント積算サンプルのバッファである。このコヒーレント積算サンプルは、比較的に長い。しかしながら、このコヒーレント積算サンプルの長さは、限られている。長い総和演算に対して、搬送波は長期間に亘って完全でなければならなず、これは事実上不可能である。その積分の長さは、変調時の1つのデータ・ビットのサイズである、約20msほどになることもある。
THの用途の1つは、観測のために、約4チップ(4サンプル/チップ、すなわち20msごとに16サンプルが存在する場合)の小さい窓を保つことである。THはおそらく200msごとに上書きを開始するであろう。この窓における履歴は、搬送波位相に何が起ったか、またそのデータに何が起ったか明らかにする。THデータは、リアルタイム・データよりも高度に「後処理」されて、近い過去におけるシステム性能についての有用な情報を提供することができる。
様々な動作モード
先に述べられたように、種々のサブシステムは、様々な動作モードにおいて様々に構成されることがある。改めて言うと、その動作モードは:「コールド・スタート」または「ロック」モードであるモード1;「粗支援捕捉(coarse-aided acquisition)」モードであるモード2;および「高分解能」または「トラッキング」モードであるモード3を含む。
「コールド・スタート」のモード1
モード1は、一般に、このGPSシステムが複合的に「迷子に」なるときに使用される。例えば、このGPSシステムは、衛星がどこにあるのか予測するのに用いられる時刻に関する情報がない場合、あるいは、衛星がどこにあるのかわかるほど充分には、その物理的位置が分からない場合には、迷子になるであろう。したがって、モード1は、ブラインド・サーチ(盲目的探索)である。この場合、一度に1つの衛星について400Kのオフセットを処理しながら、衛星のリスト全体について扱うことになる。32の衛星符号が存在する。このGPSシステムは、(上空の可視である部分に基づいて)どの24の衛星符号が利用可能であるか分かる場合もあるし、分からない場合もある。このブラインド・サーチには、何億もの個々の相関をともなう。モード1では、個々のビンをすべて、長期にわたって保存することはできない。しかしながら、このデータのわずかな一部分については、処理することができる。モード1では、おそらく100msもの信号を含む上記信号のワン・ショットでの取込みが、入力RAMに保存される。圧縮モード(×4の圧縮)Iが使用されると、100msの信号において100Kバイトのデータが存在する。出力部には8Kバッファが1つあり、そのバッファにおいてこの100ms信号が再生される。事実上、1Kの相関×8周波数(FFTは、1Kチップ・オフセットのそれぞれに対して8つの周波数を作り、それをRAMに保存する)が実行される。このバッファ中のデータが処理されて、また、強力な信号のピークだけが保存される。そしてこの処理を1/2チップ・オフセットを用いて繰り返す。モード1においては、多くの出力ビンが存在しており、長いサンプルは捕捉に必要とされるもっとも微弱な信号を見つけ出すのに役立つ。一実施形態では、モード1は約30DbHzに制限されている。これは、屋外環境には標準的なしきい値である。最終的に見つけられた信号が、時刻を設定して、後に続く探索に対する不確実さを改善しようとするために用いられる。最初の探索処理では、約25Kの相関×8、すなわち約200Kの相関が行われる。すなわち、実効的に、1秒当たり約200Kの1ms相関が行われている。これを200Kの実効相関器と呼ぶ。
一時的に図3を参照すると、モード1では、FIFO1は比較的広く構成されている。モード1では、サブシステム2とサブシステム3との間の破線で示すように、サンプルはFFTに直接的に送り込まれる。このFFTは原則として、FIFO2を通さずに、振幅(magnitude)を合計して出力RAMに入れて、8つの周波数を生成する。
「粗支援捕捉」モード2
次のモードである粗支援捕捉モード、すなわちモード2は、もっと感度の良いケースであり、広範なシナリオにおいて使用できる。例えば、ユーザがGPSシステムを持ち歩いて、地階または地下駐車場に入る場合には、GPSユニットは前回知られたデータ、すなわち最後に知られたデータを使用する。
モード2は、10ms以下などの控えめなサイズの入力サンプルを使用する。この入力バッファは、絶えず満たされて(もっと適切に言えば、スナップショット・バッファとして使用されて)、15〜20Kバイト程度、若しくは1つのFFTを実行するのに十分な程度の単一の共有されたコヒーレント・バッファとしてセットアップされる。例えば、そのシステムは、そのバッファが約14Kとなるように、そのバッファに(それぞれが2バイトの)1024の相関の7ミリ秒を保存することを望むかもしれない。14KBのサンプルは、個々の符号位相と見なされて、FFTに送られる。7つの時間的に遅延したサンプルが、一度にFFTに入る。16ポイントの変換が生成されて、これらの出力のいくつか、おそらく7つまたは9つの出力が、中心周波数ビンに保持される。モード2では、RAMの大部分を満たす出力バッファの複数のコピーが存在する。残りのRAMは、専用の非コヒーレント累算バッファに使用される。例えば、128KのRAMが与えられると、大きなアレイにおいて100Kの個々のビンが可能であり、それらのビンはそれぞれ、周波数または符号オフセットである。モード2では、128Kのメモリを例にすると、100Kの相関器のみが一度に探索可能であり、64Kのメモリの制限がある場合には、約40Kの相関器のみが探索可能である。この事は、40Kまたは100Kの相関器の、実効的にリアルタイムな、連続処理を意味する。その結果、バッファには7ミリ秒のサンプルのストリームが存在することになる。このストリームは、偶数と奇数のハーフチップ・オフセットに対して処理される。その相関器には1チップのスペースが存在し、その相関器はハーフチップ・オフセットを得るのに(完全整合フィルタ・モードで)2回再生されることもある。周波数の数はプログラム可能である。例えば、おそらく7つまたは9つの周波数が生成される。この結果、1Kチップによって9つの周波数の比較的大きなアレイが得られ、ハーフチップのシフトを用いて別のアレイが得られる。新たな周波数、すなわち新たな衛星に移行すると、その処理はそのメモリがいっぱいになるまで繰り返される。
モード2では、位置は少なくとも大陸規模の精度で知られており、時刻は少なくとも腕時計程度の精度で知られている。衛星なしにデータ・シーケンスを復元するには信号強度が弱すぎるため、通常は何らかの支援情報が必要とされる。支援情報は、衛星リスト、あるいは、相対的な衛星の位置を含むことがある。使用される発振器が高品質の発振器であれば、支援に対する要求は下がる。もちろん、1つまたは複数の情報が或る一定の精度で利用できるときには、その不確実さは低減する。
モード2では、このGPSシステムは、比較的小さな入力を有するように構成され、コヒーレント・バッファが存在し、出力用にできるだけ多くのメモリが確保され、さらに、処理が連続的に行われる。GPS信号間での切換えが行われ、これらのバッファの1つが満たされ、リスト全体が処理されて、シーケンサがそのバッファに戻ってくるまで7ミリ秒の新たなサンプルはそのバッファ内にある。その新たな7ミリ秒は、以前の7ミリ秒の上方に加えられる。これは微弱信号を検出可能な限り継続する。
「高分解能」または「トラッキング」モード3
次に、第3のモード、すなわち「高分解能」または「トラッキング」モード3が述べられる。非常に精密な支援が利用可能な場合、モード3は捕捉に適している。モード3は、捕捉後のトラッキングにも利用されることがある。モード3はまた、GPSシステムが非常に短い期間について遮断され、再捕捉することのみを必要とする場合にも利用される。一般に、モード3が適切であるためには、その時刻は100ミリ秒の範囲内あるいはそれ以上の精度で知られているべきであり、位置も30Kmの範囲内で知られているべきである。信号処理の観点からは、モード3の利点は、非常に小さなスペースを探索可能なことである。したがって、その探索は非常に高い分解能とすることができる。
モード3において、このGPSシステムは、コヒーレントRAMバッファと非コヒーレントRAMバッファが両方とも、チャネルごとに専用となるように、構成されている。比較的に短い入力RAMが使用される。この場合、入力RAMの長さは、PDIの長さよりもさらに短いこともある。例えば、PDIが20msである場合には、10回の反復において満たされる2msの専用バッファのみが必要とされる。しかしながら、通常、モード3では、他のモードに比べて、より少ない符号オフセットが探索される。
他のモードでは、通常は4―1のデータ圧縮が使用される。モード3では、データ圧縮は不要であり、4ビット処理が使用される。他のモードと比較して、損失は低減する。例えば、1Dbの感度は、高分解能の処理を行い、比較的に少ない符号オフセットを処理し、さらに、コヒーレント・バッファと非コヒーレント・バッファを専用とすることで、保存される。コヒーレント・バッファは、全PDIにわたって保存される。そして、そのPDIはFFTへ処理されて、加算される。様々なチャネルを通じて、同様のサイクルが循環的に繰り返される。
このGPSシステムは、モード3を使用することを決めた場合に、どこから探索を始めるべきかについて非常によいアイディアを持っているために、最低の損失で最良の信号処理を実現することができる。これは、そのシステムが提供可能な最長のコヒーレント積算時間を使用することを含む。一般に、モード3では、発振器は0.1PPMないし0.2PPMまで知られている。モード3においては、位置は絶えず更新されており、不確実さは事実上ゼロとなるべきである。それでもなお、このGPSシステムは探索して、誤ったトラッキングを引き起こす可能性があるマルチパス、自己相関、相互相関、あるいは誤ったピークがあるかどうかを判断する。このGPSシステムは、一度トラッキングを行うと、まだモード3ではない場合、通常はモード3に入る。このGPSシステムはピークを検査して、そのピーク上にいくつかの点を置き、その結果が良好な信号のようにみえるかどうか判定する。一例として、このGPSシステムは、2つの信号のコピー、すなわち直接的な信号のコピーと、建物から跳ね返った信号のコピーを得ることがある。これらの信号の一方が見えなくなって、このGPSシステムはその誤った信号をトラッキングすることがある。
このGPSシステムの実施例の利点は、約10チップの小さな窓を出力の周囲に配置して、付近の環境を観測し、マルチパスあるいは付近での相互相関が存在するかどうかを判定できるところにある。現実の信号を見失った場合においても、このGPSシステムは混乱せず、起こりうる再捕捉の処理が回避される。このGPSシステムは、絶えず処理されている異なるオフセットから構築された2つの実効的なチャネルを用いて、1つの信号の異なる2つの実効的な経路をトラッキングする。これと対照的に、従来の受信機はこのピークの周囲に窓を開いて、このピークを跨いで3つのサンプルを観測する。従来のシステムは、一般に、予備として1つの相関器を持っており、外部からの信号を探すために、定期的にこの相関器を動き回らせることもある。しかしながら、従来のシステムは継続的な可視特性を備えることはない。その一方で、本明細書で開示されるGPSシステムは、その窓をつねに開いた状態に維持して、誤ったトラッキングを速やかに検知し、そこから復帰することができる。
モード3は、一般に、ほぼすべての捕捉の最終段階として使用される。ときには、いくつかの強力な衛星が見出されることがあるが、ただし、そのような衛星がすべて見出されるとは限らない。これらの強力な衛星を用いて位置が生成されるが、それは最良な位置ではないかも知れない。理想的には、これらの利用可能な衛星は散らばって配置されており、視差により作られる誤差のマージンが最小限に抑えられる。それゆえ、このシステムは、まずいくつかの衛星を見出して、その後にその不確実さを最小限に抑えることから始める。モード3に入って、可能な限り最良な測定を行って、最良な位置を生成し、おそらくはその後に、弱すぎて他のモードにおいて見つけられなかったさらに多くの衛星を見出す。
衛星のすべてに対してエフェメリスが利用できる場合には、より微弱な衛星についても測定に使用することがある。モード3では、処理されたサンプルの振幅と総和を取得する前に、それらのサンプルを保存することもできる(これらの図面には示されていない)。これらのサンプルは、従来のトラッキングに使用される。
モードの選択
一実施形態では、プロセッサは、GPSシステムがどのように動作するかについて、高いレベルで、あらゆる決定を下す。このプロセッサの仕事は、データをRAM構造にロードすることによって、捕捉を開始することである。シーケンサの仕事は、GPSシステムを通るデータの流れを管理して、リスト全体をサイクルして、その間ずっと、状態を更新することである。状態が更新されると、このプロセッサは、その状態を調べて、次に何をなすべきか決定を下す。このプロセッサは、周波数ワードについての値を計算するだけでなく、ナビゲーションについての複雑な計算も行う。
このGPSシステムは、最後に知ったものを利用しようとする。エフェメリスは、約1時間の間だけ、最高の品質である。このエフェメリスは、約4時間の間は使用できるが、その時間の終り近くで劣化する。アルマナック・データは、衛星が存在しているであろう位置についての1ヶ月にわたる予測である。GPSシステムが時々起動する場合には、アルマナック・データは何年も使用できるかもしれないが、時が経過するにつれて衛星は移動する。普通は、そのアルマナックのみを用いてナビゲーションを行うことはできない。
このGPSシステムは、プロセッサの指示のもとに、そのセットアップ時の初期動作を、このGPSシステムが知っているもの、例えば、1時間前にそのGPSシステムが起動されたか、これらの衛星の何れかについてエフェメリスを有しているか、そのシステムにその位置についてのメッセージが送信されたか、といったことに基づかせる。これらの情報はすべて、シーケンスおよびレコード内にプログラムされた初期調査のセットに盛り込まれている。
このGPSシステムの利点は、自律環境に対して(128Kの利用可能なRAMの例を挙げると)、旧来のシステムでは1分を要した作業を、このGPSシステムでは1秒以内に実行できることである。例えば、最初にアルマナック・データのみが利用可能な場合、このGPSシステムは1秒でトラッキングすることができる。エフェメリス・データが利用可能な場合、このGPSシステムは、その位置について予め何の知識もなくても、1秒でナビゲーションすることができる。
プロセッサは、それが知っているすべてのことに基づいて、通常は、強力な信号に対するクイック・チェックを「場所を問わず」行うことによって、そのシーケンスを開始する。強力信号はより微弱な信号を妨害(jam)することもあるから、強力信号の存在に注目する。そして、任意の付加的な知っている情報を用いて、他の信号を見出すために、より感度の高い探索を実行する。いくつかの実施形態では、このデータ・シーケンスを復元することが可能な、完全な自律性についての限度(例えば、27DbHz)が存在する。このデータ・シーケンスは30秒ごとに繰り返し、ナビゲーションを実行するのに必要なデータ・ブロックを読み込むのに18秒かかるが、それは30秒ごとに現れる。アルマナックは、残りの12秒で繰り返す。このアルマナック全体をダウンロードするのに、約12分30秒かかる。このアルマナックに対しては、別の供給源が存在することが好ましい。なぜなら、このシステムは(アルマナックを)長めの時間をかけて収集しなければならず、このことは電力消費について負の影響をもたらすからである。同様な理由から、エフェメリスに対しても、別の供給源が存在することが好ましい。しかしながら、このGPSシステムの利点は、この信号処理が、従来の環境において、ほぼゼロからすべての衛星を捕捉できるくらい力強いことである。その後に、正確な位置を生成するために、もう30秒を必要とすることがある。アルマナックとエフェメリスのデータは、それらが再び収集されるまでの可能な間、保持されていることが好ましい。例えば、そのデータは1時間保持されて、その後に必要に応じて再収集される。アルマナックまたはエフェメリスのデータの何れかがまだ保存されている場合には、そのデータを再使用して、短時間で位置決定を行うが、最終的にはそのデータは再収集される。
GPSシステムをどのように動作させるかについての決定はすべて、以前のステップの結果に基づいている。例えば、いくつの衛星が見出されたか、捕捉されたデータは他の衛星を見出す上で利用できるかどうか、といったことである。このGPSシステムは、様々なタイプの探索を行うことがある。通常は、次のような全体シーケンスが完了するであろう。すなわち、まず最初に、強力信号があるかどうかを認識するためのコールド・スタート、それらの信号のいくつかを見出して、最低限の位置を取得することに基づく粗支援探索、および、トラッキングのみを行うモード3である。モード3がもっとも感度が高く、かつもっとも損失が小さく、したがって、信号がデータしきい値を下回ることがあっても、モード3がトラッキングに利用される。なぜなら、モード3は最良の、最も効果的なトラッキング・モードだからである。
このシステムが移動すると、信号は強くなったり、弱くなったりする。信号が十分に長く期間十分に強くなった場合、エフェメリスを収集することが可能であり、信号が弱くなると、そのエフェメリスを使用して、トラッキングが維持される。
代替実施形態
図面に示され、かつ本明細書に述べられる具体的なハードウェアおよびソフトウェア設計の多くの代替形態が可能である。例えば、RAMは、いくつかのシステムでは、2秒のスナップショットであるが、通常はオフチップである2MEGでは大きい。代替実施形態では、GPSシステムにメモリ・インターフェースが組み込まれており、8ビット・メモリを通じて、オフチップDRAMにアクセスする。これは、信号処理装置に対して十分な帯域幅を維持する。他の代替実施形態では、GPSシステムの外部に、非コヒーレント累算値を保存することもある。さらに他の実施例では、8ビット・メモリのほかに、他のタイプのメモリを使用することがある。
代替実施形態では、制御構造の要素を、デジタル信号処理装置(「DSP」)に置き換えて、その処理の一部とする。例えば、FFTコアまたはFFTアクセラレーションを有するDSPは、この制御ロジックを実行することもある。モード1の例外の可能性として、コールド・スタートが非常に高いデータ・レートを必要とするかもしれないが、DSPは制御機能を扱うこともできる。DSPはまた、相関器ではなくて、FFTの出力を扱うこともできる。言い替えれば、DSPはFFTを制御することになるが、FFTは自力でメモリ取出しを行ったり、自力で直接的な経路を取得することができる。さらに、この順序付けはDSPにより行われることもある。整合フィルタは、その作業の大部分に対して、その内部レジスタを使用することもある。図示された整合フィルタ設計に基づいて、整合フィルタのリソースを分けることができる。例えば、全整合フィルタ・モードでは、1024の相関器がすべて、単一のチップ位置に使用される。別の整合フィルタ・モードでは、整合フィルタ・リソースは、2分の1、4分の1、または8分の1に分けられ、その結果得られた整合フィルタ・セグメントのそれぞれにおいて、異なる分数チップ位置(例えば、1/2チップ(ハーフチップ)・オフセット、1/4チップ・オフセット、または、1/8チップ・オフセット)を相関させる。
さらに、これらの整合フィルタ・リソースは、高分解能の相関を生み出すように構成されることもある。例えば、整合フィルタを半分ずつに分ける場合には、2つのMSBを相関させるために上半分が使用され、2つのLSBを相関させるために下半分が使用される。そして、これらの2つの結果を加算して、より高い分解能の結果が得られる。別の例では、整合フィルタを4分の1ずつに分ける。下側の2つの1/4を使用して、1つの高分解能のハーフチップ間隔のMSBとLSBを相関させる。また、上側の2つの1/4を使用して、他の高分解能の1/2チップ間隔のMSBとLSBを相関させる。整合フィルタ・リソースを部分に分けて、それらの異なる部分を使用することが、まったく柔軟に行われる。
整合フィルタの構成は、最初に(チャネル毎を基準として、セットアップの際に)、高分解能モードが望まれているかどうか、また、特定の分数の符号間隔が望まれているかどうかに基づいて、決定される。整合フィルタは、それぞれのチャネルに対して、特定のモードで動作するように構成されている。これらのチャネルは、シーケンサの制御のもとに、時間多重化ベースで、特定のモードの整合フィルタにアクセスする。
一実施形態のGPSシステムは、RF処理部とベースバンド処理部との間のインターフェースを介した、RF電力制御メッセージの送信と、RF電力制御メッセージを送る方法を提供する。このインターフェースは、RF処理部とベースバンド処理部との間の汎用双方向メッセージ伝送をサポートしている。このインターフェースはさらに、このインターフェースに過度の複雑さを加えることなく、これら2つの処理部間のSPS信号サンプルの伝送もサポートしている。
一実施例では、このインターフェースは、メッセージ・シリアル・インターフェースとデータ・シリアル・インターフェースを含む。このデータ・シリアル・インターフェースは、SPS信号サンプル・データを、RF処理部からベースバンド処理部へ伝える。このメッセージ・シリアル・インターフェースは、RF処理部とベースバンド処理部との間で、電力制御メッセージを含むメッセージをやり取りする。
上記の通り、メッセージ・シリアル・インターフェースは、これらの処理部間で、電力制御メッセージをやり取りする。このメッセージ・シリアル・インターフェースは、メッセージ入力信号線、メッセージ出力信号線、メッセージ・クロック信号線を含むことがある。いくつかの実施例では、このメッセージ・シリアル・インターフェースはまた、スレーブ選択信号線も含むことがある。電力制御メッセージは、例えば、複数の電力制御ビットを含むことがある。それぞれの電力制御ビットは、RF処理部中の所定の回路に対して、電力状態(例えば、始動または停止)を指定する。
このデータ・シリアル・インターフェースの複雑さは、例えば、単一のデータ・ビット信号線を用いて、信号サンプルをRF処理部からベースバンド処理部にシリアルに運ぶことにより、減らされることがある。このデータ・シリアル・インターフェースはまた、信号サンプルにタイミングを与えるデータ・クロック信号線も含むことがある。特に、一例として、このデータ・クロック信号線は、公称16f0(ここで、f0=1.023MHz)で動作するデータ・クロック(立上りエッジと立下りエッジを含む)を運ぶが、一方、このデータ・ビット信号線は、シリアルに伝送されるデータ・ビットから成るデータ信号を運ぶ。一実施例では、第1のタイプのデータ・ビットは、このデータ・クロックの立上りエッジで有効であり、また、第2のタイプのデータ・ビットは、このデータ・クロックの立下りエッジで有効である。一例として、第1のタイプのデータ・ビットは符号ビットであることがあるが、一方、第2のタイプのデータ・ビットは振幅ビットであることがある。
図45は、衛星測位システムの受信部45−200を示している。受信部45−200は、RF―ベースバンド間インターフェース45−206を用いて、ベースバンド処理部45−204に結合されたRF処理部45−202を含む。RF処理部45−202は、RF入力部45−207で、SPS信号、例えば1575.42MHzのGPS信号を受信する。
受信部45−200は、一般に、RFフロントエンド45−224とベースバンド・バックエンド45−226を含むものと見なされることがある。RFフロントエンド45−224は、RF処理部45−202と、RF−ベースバンド間インターフェース45−206を含む。RFフロントエンド45−224は、一連のダウン・コンバージョン、自動利得制御、アナログ・デジタル変換を通じて、RF入力部45−207で受け取られたSPS信号を処理する。ベースバンド・バックエンド45−226は、ベースバンド処理部45−204とRF−ベースバンド間インターフェース45−206を含む。ベースバンド・バックエンド45−226は、(マイクロコントローラのコア、CPU、または他の制御ロジックを用いて)RFフロントエンド45−224で与えられたサンプリングされたデータを処理する。ベースバンド・バックエンド45−226は、この処理されたデータを、デジタル通信インターフェース45−222を含む1つまたは複数のアドレス信号、データ信号、制御信号、クロック信号を用いて、デジタル装置(例えば、デジタル信号処理装置、汎用マイクロコントローラまたはCPU、あるいは、ホストPC)に伝える。
RFフロントエンド45−224とベースバンド・バックエンド45−226の一方または両方は、例えば、個別の単一集積回路として構築されることがある。したがって、RFフロントエンド45−224は、RF入力部45−207(例えば、パッケージ上の特定の入力ピン)、RF処理部45−202、インターフェース45−206(例えば、以下でさらに詳しく述べられる一組のインターフェース・ピン)を含む単一パッケージである。同様に、ベースバンド・バックエンド45−226は、ベースバンド処理部45−204、インターフェース45−206、デジタル・インターフェース45−222を含む単一パッケージである。RF処理部45−204とベースバンド処理部45−204で行われる処理は、SiRFStar(R)、I、II、またはIIIのチップ・データシートにさらに詳しく記述されているであろう。一方、インターフェース45−206は、以下でさらに詳しく述べられる。SiRFStar(R)のチップセットは、San Jose CaliforniaのSiRF Technology,Inc.から入手できる。
図45に示されるように、RFフロントエンド45−224とベースバンド・バックエンド45−226との間の機能分割は、2つの別々の集積回路に分けられやすいが、他の多くの実施例も可能である。一例として、多数の個別論理素子と信号処理回路ブロックが、RF、ベースバンド、インターフェース45−206の機能を果たすことがある。追加的な例として、RFフロントエンド45−224とベースバンド・バックエンド45−226の機能の基礎になる回路はどれも、単一のパッケージ(例えば、複数の集積回路のダイを収容するもの)または集積回路、複数のパッケージまたは集積回路に組み込まれるか、あるいは、1つまたは複数の回路基板の全体に分散されることがある。これらの実施例では、個々の線、回路基板配線、あるいは、VLSIの金属層またはポリシリコン層は、RF処理回路とベースバンド処理回路との間で、インターフェース45−206の信号を運ぶ。
さらに、RFフロントエンド45−224とベースバンド・バックエンド45−226の機能の基礎になる回路はどれも、追加機能とともに、単一のパッケージまたは集積回路、複数のパッケージまたは集積回路に組み込まれるか、あるいは、1つまたは複数の回路基板の全体に分散されることがある。例として、RF回路とベースバンド回路は、セルラー電話、PDA操作、あるいは、自動車向けのエンジン、計器、または電子コントローラに用いる、デジタルまたはアナログ処理回路を持つダイ上に集積される。したがって、図45と、上に挙げられた例は、限定的なものではない。もっと適切に言えば、通常の当業者であれば、RF処理、ベースバンド処理、インターフェース45−206を実施する回路の具体的な実装形態、機能の分割、パッケージングは、そのときのアプリケーション、設計上考慮すべき事項、費用の問題などにより、多種多様であるものと理解されよう。
インターフェース45−206は、メッセージ・シリアル・インターフェース45−208と、データ・シリアル・インターフェース45−210を含む。メッセージ・シリアル・インターフェース45−208は、RF処理部45−202とベースバンド処理部45−204との間で、双方向に汎用メッセージをシリアルでやり取りできるようにする。これと対照的に、RF処理部45−202は、データ・シリアル・インターフェース45−210を使用して、SPS信号サンプルをベースバンド処理部45−204に送る。
当初の問題として、一般に、図45に示されるインターフェース45−206の信号は、CMOS対応のものであることに留意する。特に、入力は、ロジック1では0.7*VccVよりも高く、また、ロジック0では0.3*VccVよりも低い。出力は、ロジック1ではVcc−0.4Vよりも高く、また、ロジック0では0.4Vよりも低い。これらの入出力ピンは、一般に、所望の実装形態に応じて、2.5Vか、3.3Vのいずれかの電圧レンジで動作する。リアルタイム・クロック(RTC)入出力ピンは、1.5Vで動作するが、ただし、これらの入出力ピンは、要望があれば、3.3Vのレベルを許容するように設計されることがある。しかしながら、これらの信号はどれも、所望の実装形態に応じて、異なる定格電圧または仕様に合わせられる。
図45に示されるメッセージ・シリアル・インターフェース45−208は、メッセージ入力信号線(MSG_DO/MIと表記)、メッセージ出力信号線(MSG_DI/MOと表記)、メッセージ・クロック信号線(MSG_CLK/MKと表記)、スレーブ選択信号線(MSG_CEB/SS_N[0]と表記)を含む。これらのメッセージ信号線上のラベルは、RF処理部45−202/ベースバンド処理部45−204の視点から、データフローの方向を示している。例えば、メッセージ出力信号線(MSG_DI/MO)は、RF処理部45−202に入力され、かつ、ベースバンド処理部45−204により出力されるメッセージ・ビットを運ぶ。
データ・シリアル・インターフェース45−210は、データ・クロック信号線(ACQCLKと表記)とデータ・ビット信号線(SGNMAGと表記)を含む。データ・シリアル・インターフェース45−210は、一般に、単一のデータ・ビット信号線だけを使用して、データ・ビットをベースバンド処理部45−204にシリアルに伝える(図46に関して、以下でさらに詳しく説明される)。したがって、データ・シリアル・インターフェース45−210は、一般に、わずか2本の信号線、すなわち、データ・クロックに1本、またデータ・ビットに1本を含む。従って、データ・シリアル・インターフェース45−210は、RF処理部45−202とベースバンド処理部45−204との間のSPS信号サンプル・インターフェースについてのそれほど複雑でない解決策と言える。
図45に示される通り、受信部45−200は、RF処理側に、リアルタイム・クロック(RTC)発振器(OSC)およびモニタ部45−212も含む。32KHzの水晶発振器(または、他のクロック発生源)は、RTC OSC部45−212に対して、入力クロック45−214を与える。RTC OSC部45−212は、RTCLK/RIN信号線上にクロック出力を生成し、そのクロック出力をベースバンド処理部45−204が使用して、例えば、GPS時刻またはUTC時刻を保持する。このクロック出力は、例えば、32,768Hz 1.5V CMOS出力である。RTC OSC部45−212は、ベースバンド処理部45−204が正確な時刻基準を維持するのに役立つように、電力停止モードの間も、動作し続ける。
しかしながら、RTC OSC部45−212中のモニタ回路(例えば、クロック入力に接続され、かつ比較器が後続する整流器)は、入力クロック45−214が確実な動作をしている(例えば、停止している期間が10〜30クロック・サイクルを超えない)場合を特定する。このクロックの停止が長すぎる場合には、RF処理部45−202は、1ビットをセットして(例えば、フリップ/フロップ出力をセットするか、あるいは、マルチビット・ステータス・レジスタ中の1ビットをセットして)、そのクロック出力が確実なものではなかったこと(および、場合によっては、ベースバンド処理部45−204が、受信されたSPS信号の全領域にわたって探索して、正確な時刻を決定すべきであること)を知らせる。
RF処理部45−202はまた、水晶発振器45−216、あるいは外部クロック発生源45−218(例えば、無線装置において提供される周波数基準)のいずれかから、クロック入力を受け取る。それらのクロック入力45−216および45−218は、RF処理部45−202中のPLL分周器チェーンがACQCLK信号を作り出すために利用するクロック発生源を提供する。クロック入力45−216および45−218は、以下ではまとめてOSCCLKと称され、PLL分周器チェーンのクロックは、PLLCLKと称される。PLLCLKは通常、データ・クロック信号線であるACQCLKに、OSCCLK(あるいは内部の周波数基準)から生成される16F0の公称周波数(ここで、F0=1.023MHzである)を作り出すようにセットされる。
始動時、ACQCLKの出力にはOSCCLK(一般に5〜27MHzの範囲内にある)が現れている。メッセージ(後述する)がRF処理部45−202に指示し、ACQCLKをOSCCLKからPLLCLKへ、およびPLLCLKからOSCCLKへ切換える。ACQCLK信号は、(ACQCLKが長期にわたる低サイクルを備え得る、クロック発声源の切換え時を除き)45%〜55%のデューティ・サイクルを備える、2.5/3.3VのCMOS出力であってもよい。
電力制御信号(PWRUP/RFPWRUPと表記)を状況に応じて供給して、RF処理部45−202のどの部分を始動するかを制御することがある。例えば、電力制御信号はRF処理部45−202の電圧調整器有効化ピンに接続されて、RF処理部45−202中の回路の大部分についての粗い(coarse)始動/停止制御を可能にする。その一方、RTC OSC部45−212は、ベースバンド処理部45−204にクロックを供給し続けることができるように、独立して電力の供給を受ける。電力制御信号は、2.5/3.3VのCMOS信号であってもよい。ベースバンド処理側には、RTCロジック部45−220が含まれている。RTCロジック部45−220は、現在の時刻とSPS位置解を特定する上での支援として、RTC OSCおよびモニタ部45−212によって生成された入力クロックを受け入れる。
RTCロジック部45−220は更に、(ローでアサートされる)リセット信号GRFRST_N/RESET_Nを出力する。
リセット信号は、電源投入時に、RTC OSC部45−212とRF処理部45−202の制御レジスタの状態をリセットするために使用される。
例えば、GRFRST_Nがアサートされると、RF処理側のデジタル制御レジスタは、デフォルト状態にリセットされる。制御レジスタのデフォルト状態は、OSCCLKの回路が動作することを可能とし、(PWRUPがアサートされた場合)OSCCLKによってACQCLKの出力を生成することを可能にする。GRFRST_Nがアサートされていない場合、RF処理部45−202は内部ロジックの状態に従って動作する。
一実施例では、メッセージ・シリアル・インターフェース信号は2.5/3.3VのCMOS入出力信号である。MSG_CLK/MK、MSG_DI/MO、およびMSG_CEB/SS_N[0]の信号は、RF処理部45−202への入力である。MSG_DO/MI信号は、三状態制御を用いたRF処理部45−202からの出力である。MSG_CEB/SS_N[0]がロジック・ハイの場合、MSG_DO/MI出力は高インピーダンスであって、同じようにメッセージ・シリアル・インターフェース45−208に接続されている他の装置によって生起されることもある。従って、ベースバンド処理部45−204からのMSG_CEB/SS_N[0]出力はスレーブ選択信号として機能し、RF処理部45−202がMSG_DO/MI信号線上にデータを生成することを可能にする。更なる装置がメッセージ・シリアル・インターフェース45−208に取付けられる場合、ベースバンド処理部45−204は、どの装置をMSG_DO/MI信号線にデータを生成可能とするかを決定する、更なるスレーブ選択信号線を提供してもよい。
RF処理部45−202は更に、一つまたはそれ以上の外部アナログ・センサ(図示せず)の入力を含んでもよい。従って、RF処理部45−202にある複数チャネルのアナログ/デジタル(A/D)変換器は、アナログ入力信号を測定して、その結果をベースバンド処理部45−204に通信してもよい。アナログ入力は、温度入力、ジャイロ回頭角速度(turn rate)入力、ホイール・ティック(wheel tick)入力、あるいはバッテリ電圧入力などを含んでも良い。ただし、これらに限定されるものではない。
表1に、受信部45−200の動作モードをまとめる。
次いで図46には、データ・クロック46−302とデータ信号46−304の関係を表すタイミング図が示されている。データ信号46−304はベースバンド処理部45−204にSPS信号サンプルを提供する。SPS信号サンプルは、RF処理部45−202に接続されたアンテナによって受信されるSPS入力信号から得られる。ACQCLK信号線はデータ・クロック46−302を伝送し、SGNMAG信号線はデータ信号46−304を伝送する。データ信号46−304は、例えば2.5/3.3VのCMOS出力であってもよいが、符号ビット・データ46−306と振幅ビット・データ46−308を、SGNMAG信号線で送信する。一実施例では、データ信号46−304は、RF処理部45−202にあるA/D変換器によって特定された符号ビットと振幅ビットの情報を提供する。
他の実施例では、ベースバンド処理部45−204が送信されたデータを認識できるようにするために、データ・ビットに適用される(例えば擬似ランダム・ノイズ符号といった)所定のプロトコルまたは符号化技術に合わせて、追加の情報ビットまたは量子化ビットが提供されてもよい。更に、データ信号46−304は、RF処理部45−202が扱う様々なラジオ・チェーンに対する信号サンプルを送信する事ができる。例えば、RF処理部45−202がSPSデータを処理する場合、データ信号46−304はサンプル毎に二つのビット(上述した符号と振幅)のデータ対を運ぶことができる。その一方で、RF処理部45−202が別のRF信号(例えばブルートゥース信号)を処理する場合、データ信号46−304はそのRF信号を処理するために定められたガイドラインに従って、サンプル毎により多くの、またはより少ないビット(例えば、4つまたは6つのビット)を代わりに送信する。同様に、データ・クロック46−302も、RF処理部45−202がその時点で処理しているRF信号の処理に関するガイドラインに適合するように、周波数とデューティ・サイクルを変更することができる。
図46に示されるように、RF処理部45−202は、データ・クロック46−302がロジック・ハイの場合には、符号ビット46−306を出力し、データ・クロック46−302がロジック・ローの場合には、振幅ビット46−308を出力する。図46に示されるように、符号ビット46−306は、短くともデータ・クロック46−302の立下りエッジ46−310以前のTSETUP−Fの期間は有効である。同様に、振幅ビット46−308は、短くともデータ・クロック46−302の立上りエッジ46−312以前のTSETUP−Rの期間は有効である。
符号ビット46−306は、短くともデータ・クロック46−302の立下りエッジ46−310以降のTHOLD−Fの期間は有効であり続ける。振幅ビット46−308は、短くともデータ・クロック46−302の立上りエッジ46−312以降のTHOLD−Rの期間は有効であり続ける。上記のセットアップ時間とホールド時間は、実施例ごとに異なっていてもよい。一例として、セットアップ時間とホールド時間は約5〜10nsであってよい。
メッセージ・シリアル・インターフェース45−208は、さまざまな態様で実装することができる。一実施例では、メッセージ・シリアル・インターフェース45−208は下記の特徴を備えるが、他の実施例とすることも可能である。
RF処理部45−202のメッセージ・シリアル・インターフェースは、ベースバンド処理部45−204(あるいは下記の特徴にあてはまる他のマスタ・デバイス)のスレーブ・デバイスとして動作する。RF処理部45−202への(MSG_DI線上の)入力ビットは、MSG_CLKの支配下にあるRF処理部45−202の32ビット・シフト・レジスタにシフト・インされる。一実施例では、一つのメッセージ・ブロックにおいて最大32ビットが送信され、データはその最上位のビットから送受信される。同時に、MSG_DOの出力ビットは、その同じシフト・レジスタの反対側からシフト・アウトされる。RF処理部45−202からの出力が不要な場合、MSG_DOの出力は接続されなくても良い。一実施例では、MSG_CLKは最大20MHzで動作する。メッセージ・シリアル・インターフェース信号は、ロジック1では約0.8*VCC Vより高く、ロジック0では約0.2*VCC Vよりも低い。
スレーブ選択信号線(MSG_CEB)は、シリアル・データ送信ではローで有効化される。従って、MSG_DIとMSG_CLKは、予め選択された期間(例えば5ns)だけMSG_CEBがロジック・ハイである間は、無視されてもよい。データはMSG_CLKの立上りエッジでサンプリングされる。一実施形態では、MSG_DIもしくはMSG_DOの遷移は、MSG_CLKの立上りエッジから少なくとも5ns後には生起し、MSG_CLKの次の立上りエッジから少なくとも5[ns]前には安定する。そのデータは、MSG_CLKの立下りエッジでシフトされる。そして、MSG_CEB信号は、最初のMSG_CLKの立上りエッジから少なくとも10[ns]前には有効(ロジック0)になり、MSG_CLKの最後の立下りエッジから少なくとも10[ns]後まで有効(ロジック0)であり続ける。どちらの場合も、時間間隔は例えば1クロック・サイクルの半分である。その後、MSB_CEB信号は、少なくとも30[ns]の間は無効(ロジック1)となり、RF処理部45−202がデータをラッチする時間を提供する。
もしMSG_CEB信号がメッセージ・ブロックのすべてのデータが送信される前にロジック・ハイに遷移すれば、そのデータは破棄されてRF処理部45−202のレジスタには適用されない。メッセージ・ブロック内の未使用のビットはゼロにセットされている。しかしながら、短縮された1バイト・メッセージを許容するために、高速書込みモードが提供されている。8ビットを超えるビットが受信されるまでは、高速書込みモードが実行される。8ビットを超えるビットが受信されると、RF処理部45−202は有効なメッセージとなる32ビット全てを受信しようとする。
RF処理部45−202は、ベースバンド処理部45−204からデータを要求するメッセージを受信すると、ベースバンド処理部45−204へ(MSG_DO上に)データを出力する。そして、ベースバンド処理部45−204は、次のメッセージを送信し、RF処理部45−202のシフト・レジスタ内にある要求されたデータを、そのシフト・レジスタ内からシフト・アウトさせる。上記した次のメッセージは、独立した動作に関するメッセージであってもよいし、その要望されたデータをシフト・アウトさせるためだけのダミー・メッセージであってもよい。
図47は、スレーブ選択信号(MSG_CEB)47−402、メッセージ・クロック信号(MSG_CLK)47−404、およびメッセージ・データ・ビット信号(MSG_DOおよびMSG_DI)47−406の間の関連性を表すタイミング図47−400を示す。データ送信はスレーブ選択信号47−402の立下りの時点から開始する。送信されたデータは、スレーブ選択信号47−402の立上りの時点でラッチされる。
図47に示すように、メッセージ出力信号線(MSG_DI/MO)とメッセージ入力信号線(MSG_DO/MI)は、それぞれシリアル・ビット・ストリームを伝送する。メッセージ出力信号線上のシリアル・ビット・ストリームは、ベースバンド処理部45−204からRF処理部45−202へ送信される、予め定められたRF処理部のメッセージ群から選択されたメッセージを表現している。同様に、メッセージ入力信号線上のシリアル・ビット・ストリームは、RF処理部45−202からベースバンド処理部45−204へ送信される、予め定められたベースバンド処理部のメッセージ群から選択されたメッセージを表現している。
上記したメッセージは、特定の目的やフォーマットに限定されるものではない。以下に詳述するように、上記したメッセージはRF処理部の電力制御メッセージ、RF処理部のテスト・メッセージ、クロック状態メッセージ、アナログ測定メッセージ、チャネル変換回数メッセージ等を含むが、これに限定されるものではない。
一実施例では、4つの形式のメッセージ・ブロックが定義されている。(32ビットまたは8ビットの列における)データ[1:0]は、表2に示すように、4つのメッセージを定義するアドレス・ビットである。それぞれのメッセージ形式は、高速書込みモードと完全書込みモードの両方をサポート可能であって、両方のモードに対し余剰能力が定められる。
各メッセージの典型的な内容は、表3〜表8に詳細に示されている。表3はAGCと合成器の制御メッセージを示し、表4Aおよび表4Bは電力制御と合成器の制御メッセージを示し、表5は選択されたメッセージ形式に対する出力要求形式を示す。表6は出力メッセージ形式を示し、表7と表8は入力メッセージ形式を示す。縦の列は以下のように内容を定義する。1番目の縦列はビットと表記されており、メッセージ・データ・ビットを意味する。ここで、ビット“0”は最後に送信されたビットを指す。2番目の縦列はフィールド名称と表記されており、そのメッセージのフィールドの名称を示している。3番目の縦列は長さと表記されており、そのフィールドの長さを意味する。4番目の縦列はデフォルトと表記されており、電源が最初に投入された時点におけるRF処理部45−202のデフォルトのパラメータを示す。5番目の縦列は内容と表記され、そのフィールドが許容する内容を記述する。6番目の縦列は機能と表記され、そのフィールドが果たす機能を示す。そして、7番目の縦列は_Pwrと表記され、表4Aおよび表4Bに示されるどの電力領域制御ビット(もし存在すれば)を用いて、RF処理部45−202のインターフェース上でこれらのフィールドの出力を0とするのかを示す。
メッセージ形式2は、最大32種類の出力要求を特定するフィールドを用いて、出力要求を実施できるようにしている。メッセージ形式3は、入力メッセージ形式(あるいはアドレス)を、4から36まで拡張できるようにしている。以下の「合成器」についての説明は、RF処理部45−202におけるPLL合成器のクロック生成回路についての説明である。PLL合成器は、例えば、クロック分周値を設定することによって、入力される多種多様な基準周波数からPLLCLKを生成するように構成される。
出力メッセージ形式は表6に示されている。拡張や、RF処理部のテストに利用するために、予備のメッセージが定義されている。このデータはRF処理部45−202からメッセージ・インターフェースへの入力であるから、これらのフィールドには、例えばspareInAのように、入力を意味する名称が付けられている。データがシフト・アウトされると、そのデータは与えられたインデックス値を用いて出力データ・ストリームに位置付けられる。例えばspareInA[23:0]は、32ビットの出力フィールドにおいてシフト・アウトされる最後の24ビットに位置する。これによって、最上位ビットからシフト・アウトするという仕様に従い、最初に8つの“0”があり、その後にspareInA[23]からspareInA[0]が続くであろう。
Out_Dat[4:0]=4−8は、RF処理部45−202のデュアル・スロープA/D変換器によって測定される20ビットの測定値を示す。上述のように、A/D変換器は一つまたはそれ以上のアナログ測定装置に接続された複数のチャネルを備えてもよい。以下の通り、Out_Dat[4:0]=9は、RTC OSC部45−212によって維持されている有効なクロック・ビットを示す。
(テストや拡張の目的に有用な)予備のメッセージが表8に示されている。これらのデータは、メッセージ・インターフェースによるRF処理部45−202への制御ビット出力を表現するから、そのデータ・フィールドには、例えばSpareOutAのように、出力を意味する名称が付けられている。
SGNMAG出力信号線についてのテスト・メッセージも定義されている。TestSignMag[8]=1のとき、テスト・モードに入る。TestSignMag[8]=0のとき、テスト・モードは終了する。テスト・モードにおいては、ACQCLKがロジック・ハイであるときのTestSignMag[7]を発端に、ACQCLKが動作している限り、TestSignMag[7]において指定されるパターンが出力される。
Address[6:2]=5−8は、RF処理部45−202におけるデュアル・スロープA/D変換器のパラメータを示す。DS_ADC_PERメッセージは、20ビットの変換時間、A/D変換サイクルの全体の継続時間(PERIOD)をセットし、A/D変換器に供給される入力クロックの一つ(例えば、OSCCLKやPLLCLK)を選択し(CLK_SEL)、そのクロックを有効あるいは無効にする(CLK_ENB)。DS_ADC_SHメッセージは、任意の時刻基準に関連してA/D変換サイクルの位相を変化させるために、A/D変換器の制御回路が変換を開始する前のカウント・ダウン値として使用する、20ビットのシフト時間(SHIFT)を提供する。DS_ADC_PHは、デュアル・スロープA/D変換器に対する、20ビットの位相の1変換時間(例えば、積分時間の継続時間)を指定する。
DS_ADC_SEQメッセージは、A/D変換器が四つの入力チャネルそれぞれに対して変換を行う際の、順序を制御する24ビットを指定する。より具体的には、その24ビットは2ビットの12の対に分割される;それぞれの対は、A/D変換器より前方のアナログ・マルチプレクサに対し、次の入力チャネルを指示する。従って、そのビット対は、どのチャネルがA/D変換器によって次にデジタル化されるかを制御しており、それ故、四つの入力チャネルは異なるレートでサンプリングされ得る。
表8の説明を続けると、Address[6:2]=9は、RTC OSC部45−212におけるクロック状態ビットが、良好なクロックを意味するようにセットされることを示す。あるいは(もしビット8が“1”なら)、ベースバンド処理部45−204が、RF処理部45−202によるクロック状態ビットの出力を要求していることを示す。Address[6:2]=10は、RF処理部45−202がSGNMAG信号線上に提供する信号を(例えば、マルチプレクサを介して)制御する。デフォルト設定は符号ビットおよび振幅ビットの情報となっているか、あるいはその代わりにOSCCLK信号となっている。
表4に示されるメッセージ形式におけるビット2〜7は、電力制御ビットである。電力制御ビットは、RF処理部45−202中の特定のハードウェア要素を始動させるか、あるいは停止させるかを制御する。電力制御ビットは、RF処理部45−202内のシフト・レジスタから転送されて、特定のハードウェア要素に電力を与えたり電力を除去したりする電力制御回路に適用される。例えば、ビット4、すなわちPLL_Pwrビットは、RF処理部45−202中の位相ロック・ループ(PLL)回路と分周器用の電力を制御する。RF処理部45−202がビット4をクリアされているメッセージを受信すると、RF処理部45−202は、電流が流れるスイッチを開放したり、電力調整器の制御ピンを駆動したり、あるいは、他の機構を通じて、PLLと分周器の回路から電力を除去するであろう。同様に、RF処理部45−202がビット4をセットされているメッセージを受信すると、RF処理部45−202は、そのスイッチを閉じるか、その電力調整器を有効にするなどして、PLLと分周器の回路に電力を与えるであろう。
上記のメッセージ形式は(2、3、4、5、7)の5つの電力制御ビットを提供しているが、その実施形態に応じて、さらに多い、またはさらに少ない電力制御ビットが提供されることもある。それぞれのビットは、RF処理部45−202中のあらかじめ選択された回路の1つまたは複数の部分についての電力制御状態(例えば、始動または停止)を指定する。さらに、他の実施例では、複数のビットを使用して、複数の電力制御レベルを含む電力状態を指定することもある。したがって、例えば、RF処理部45−202中の特定の1セットの回路について、異なる4つの電力状態の1つを指定するために、2ビットが使用される。
表2〜8は、メッセージ形式の一例を挙げているが、他の多くの実施例も可能である。表9〜11に示されているものは、2ビット・メッセージ・ブロックの定義を使用せずに、54ビット・メッセージを使用する他の典型的な形式である。
表9〜表11は、メッセージの最後の8ビットが電力制御ビットである一実施例を示している。したがって、電力制御は先に記述された高速メッセージを通じて通信されるであろう。上述のように、電力制御ビットは、RF処理部45−202中の特定のハードウェア要素を始動させるか、あるいは停止させるかを特定する。電力制御ビットは、表10(または表4)に示されているハードウェア・ブロックの制御には限定されない。その代りに、その実施形態に応じて、電力制御ビットは、RF処理部45−202に組み込まれる任意の所望のハードウェア回路への電力を制御するために、メッセージ中に設定されることがある。
これによって、ベースバンド処理部45−204は、RF処理部45−202で消費される電力のきめ細かい制御を確立するであろう。言い換えれば、ベースバンド処理部45−204は、常に、RF処理部45−202中のハードウェア・ブロックのうちで動作するものと、停止するものを決定するであろう。その結果、RF処理部45−202は、すべてのハードウェア・ブロックが絶え間なく動作しているRF処理部よりも少ない平均電力を消費することになる。このような電力制御は、バッテリで動作する装置において、あるいは電力の供給が限られている他の如何なるSPSが使用可能な装置においても、極めて有用である。
図48を参照すると、RF処理部45−202とベースバンド処理部45−204をインターフェースする方法を説明するフローチャート48−500が示されている。具体的には、ベースバンド処理部45−204へのSPS信号サンプルのシリアル伝送に関し、RF処理部45−202はSGNMAG信号線に符号ビット46−306をセットし(ステップ48−502)、そしてACQCLK線上に立下りエッジ46−310を提供する(ステップ48−504)。その後、RF処理部45−202は、SGNMAG信号線上に振幅ビット46−308をセットし(ステップ48−506)、そしてACQCLK信号線上に立上りエッジ46−312を提供する(ステップ48−508)。この手順は、ベースバンド処理部45−204に送信される、符号ビットと振幅ビットのサンプルの対それぞれについて繰り返される。それによって、SPS信号データはベースバンド処理部45−204にシリアルに転送される。
RF処理部45−202とベースバンド処理部45−204の間のメッセージ送信に関し、マスタ・デバイス(たいていベースバンド処理部45−204)が、メッセージ・シリアル・インターフェース45−208上で、データを送信、あるいは受信する必要があるかを決定する(ステップ48−510)。もし必要であれば、ベースバンド処理部45−204は、そのメッセージが高速書込みメッセージかどうかを判断する(ステップ48−512)。もしそのメッセージが高速書込みメッセージであれば、ベースバンド処理部45−204(それがデータを送信する場合)、もしくはRF部45−202(それがデータを送信する場合)が、適切なシリアル・メッセージ・データ線上に8つのデータ・ビットをシリアルにセットする。それぞれのデータ・ビットは、各データ・ビットに対応したメッセージ・クロック47−404の遷移によって、シフト・インされる(ステップ48−514)。そうでない場合には、ベースバンド処理部45−204、もしくはRF処理部45−202は、あらゆるデータ・ビット(例えば32のデータ・ビットまたは56のデータ・ビット)を適切なシリアル・メッセージ線上にシリアルにセットし、しかも、それぞれのデータ・ビットにはメッセージ・クロック47−404の遷移を伴わせる(ステップ48−516)。
スレーブ選択信号線は、ベースバンド処理部45−204とRF処理部45−202の間で、タイミングを転送するために利用することができる。具体的には、COUNT[19:0]出力は(表6のOut_Dat=8参照)、RF処理部45−202に存在するカウンタの値を表しており、その値はRF処理部45−202のデュアル・スロープA/D変換器のサンプリングの位相を示す。スレーブ選択信号線は、RF処理部45−202におけるDSPタイミングをラッチする回路に接続されている。従って、COUNT値は、スレーブ選択信号線がCOUNTの出力を要求するメッセージを生起して、COUNT値を送信のためにシフト・レジスタにラッチする時点でのカウンタの値である。ベースバンド処理部45−204においては、スレーブ選択信号は、スレーブ選択信号が非アサートされている場合(それは、RF処理部45−202がCOUNTをラッチしている場合でもある)に、カウンタ(あるいは他の時刻を示すもの)をラッチする。
従って、A/Dサンプル・タイミングは、ベースバンド処理部45−204のタイミングに関連している。SHIFT[19:0]の入力(表8のAddress=6参照)は、A/Dタイミングを、ベースバンド処理部45−204のタイミングから所望のオフセットだけシフトさせるために使用される。その結果、ベースバンド処理部45−204は、余分なインターフェース線を使用せずに、RF処理部45−202のタイミングを変えることができる。
したがって、本発明のシステムおよび方法は、RF処理部45−202とベースバンド処理部45−204の間の電力制御メッセージ通信(および、インターフェースを動作させるか、あるいは提供する方法)を提供する。このようなメッセージ通信は、多種多様な目的で使用されることがある。また、このメッセージ通信は、平均電力消費を少なくして、電源寿命を延ばすための、SPS装置における全体的な電力制御の一部として特に有用である。
一般に、SPS信号サンプルを取得するときを除いて、RF処理部45−202をできるだけ多く停止させることは、平均電力消費を減らすのに役立つ。これらのサンプルの取得は、ときには、屋外での強力信号環境において10〜20ms、あるいは、屋外でのより不利な条件において48〜100ms程度のタイム・スパンを占めることもある。屋内では、RF処理部45−202はSPS信号サンプルを取得するのに、特に信号が微弱な場合に、数秒程度のタイム・スパンの間動作することがある。さらに、ベースバンド処理部45−204がそれ自体の停止モードに入るときにRF発振器45−212を停止させることによっても、電力消費を減らせることに留意されたい。
さらに具体的に言えば、電力制御を含む典型的な動作手順は、表12に示されるように進行することがある。
本明細書においては、電子システム、例えばGPSシステムの構成要素間でメモリを共有するために、そのシステムの構成要素間で1つまたは複数のメモリ領域を動的に再割当てする、透過的なメモリの共有が提供される。メモリ領域のあらかじめ指定されたメモリ・ブロックは、それらの構成要素のメモリ要求の変化に応じて、1つまたは複数の再割当て方法を利用して、システムの構成要素間において動的に再割当てされる。メモリの再割当て/共有は、ホスト・システムのソフトウェアに対して透過的である。例えば、メモリ・ブロックとも称するメモリの位置すなわちアドレスのグループは、第1のプロセッサおよび第2のプロセッサによって共有することができる。第1のプロセッサは、たとえば第1のメモリ領域にアクセスするように構成された中央処理装置またはマイクロプロセッサを含んでいる。一方、第2のプロセッサは、第2のメモリ領域にアクセスするように構成されたデジタル信号処理装置(DSP)を含んでいてもよい。メモリの共有は、以下に説明するように、第2のメモリ領域へのプロセッサの直接的なアクセス、間接的なアクセス、および直接的/間接的なアクセスの組み合わせを提供する。
図49は、一実施例における、電子システム49−100の構成要素間での共有のためのコア・メモリの再割当てを示すブロック図である。一般に、電子システム49−100は、例として第1のバス49−102に接続された第1のプロセッサ49−112および第1のメモリ領域49−114を有している。動作中、第1のプロセッサ49−112は、第1のメモリ領域49−114にプロセッサ・データを書き込み、第1のメモリ領域49−114から読み出しするために、第1のバス49−102を介して第1のメモリ領域49−114にアクセスする。
第2のプロセッサ49−122は、第2のバス49−104およびブリッジ・ユニット49−132の組み合わせを介して第1のバス49−102に接続されている。第2のプロセッサ49−122は、第2のメモリ領域49−124にも接続されている。動作中、第2のプロセッサ49−122は、第2のメモリ領域49−124に第2のプロセッサのデータを書き込み、第2のメモリ領域49−124から読み出しするために、第2のメモリ領域49−124に直接的にアクセスする。
ここに記載するコア・メモリの共有は、複数のメモリ再割当て方法のうちのいずれかを利用して、第1のプロセッサ49−112のデータを記憶する際に利用するために、第1のプロセッサ49−112が第2のメモリ領域49−124のいくつかのブロックを動的に再割当てすることを可能にする。本明細書でマッピング再割当てと称する1つのメモリ再割当て方法は、第2のバス49−104および第2のプロセッサ49−122を介した第1のプロセッサ49−112によるアクセスのために、ブリッジ・ユニット49−132を通して第2のメモリ領域49−124のあらかじめ指定されたメモリ位置49−124aをマッピングする。本明細書でスイッチング再割当てと称するメモリ再割当ての別の方法は、第1のプロセッサ49−112に、第1のバス49−102を介して第2のメモリ領域49−124のあらかじめ指定されたメモリ位置49−124aへ直接的にアクセスさせる。メモリ再割当ての追加的な方法は、第2のメモリ領域49−124のメモリ位置のマッピング再割当てとスイッチング再割当てを同時にサポートする。これらのメモリ再割当て方法およびこれらの対応するシステム構成は、後にさらに説明する。
プロセッサ49−112および49−122は、当該技術分野において周知のように、協同して動作する演算構成要素および演算デバイスの集合体を有している。プロセッサ49−112および49−122は、より大きなコンピュータ・システムまたはネットワークの内部の構成要素またはサブシステムであってもよい。プロセッサ49−112および49−122は、たとえば他のバス、コントローラ、メモリ・デバイスおよびデータ入力/出力(I/O)デバイス等の、当該の技術分野において周知のいかなる構成要素(図示しない)と、いかなる組み合わせによって接続されていてもよい。
同様に、第1のメモリ領域49−114および第2のメモリ領域49−124は、当該の技術分野において周知のように、順に配置および/または分配された態様で協同して動作するメモリ・デバイスまたはメモリ・デバイスの一部の集合体を有している。メモリ領域49−114および49−124は、より大きなコンピュータ・システムまたはネットワークの内部の構成要素またはサブシステムであってもよい。メモリ領域49−114および49−124は、たとえば他のバス、コントローラ、メモリ・デバイスおよびデータ入力/出力(I/O)デバイス等の、当該の技術分野において周知のいかなる構成要素(図示しない)と、いかなる組み合わせによって接続されていてもよい。
バス49−102および49−104は、処理システムや処理システムの構成要素の間でファイルを通信しまたは転送する、いかなる媒体を含んでいてもよい。従って、バス49−102および49−104によって表わされる経路は、無線接続、有線接続および/または配線接続、および無線/有線の複合接続を含んでいる。それらの経路は、ローカル・エリア・ネットワーク(LAN)、メトロポリタン・エリア・ネットワーク(MAN)、ワイド・エリア・ネットワーク(WAN)、占有ネットワークおよびオフィス間またはバックエンド・ネットワーク等の、別のシステムへの結合または接続も含んでいる。
また、電子システム49−100は、第1のプロセッサ49−112が中央処理装置(CPU)または同様なプロセッサ(たとえばARMマイクロプロセッサ(本明細書ではARMあるいはマイクロプロセッサと称する))を含むシステム構成である。さらに、第2のプロセッサ49−122は、デジタル信号処理装置(DSP)を有している。ただし、このように限定されているわけではない。この例の第1のメモリ領域49−114および第2のメモリ領域49−124は、ランダム・アクセス・メモリ(RAM)の領域またはメモリ位置を含んでいるが、当該の技術分野において周知である他の多くのタイプのメモリ/メモリ・デバイスの領域を含んでいてもよい。第1および第2のメモリ領域は、本実施例では2つの分離した領域または2つの分離したデバイスとして示されているが、ここで説明したものと異なるメモリの共有の実施例は、あらゆる数/組み合わせのメモリ・デバイスの間で分配されたあらゆる数のメモリ位置を含んでいてもよい。このシステム構成のプロセッサおよびDSPの間におけるコア・メモリの共有について、以下で説明する。
図50は、図49の実施例における、プロセッサ50−212およびDSP50−222のそれぞれに専用のメモリ領域50−214および50−224をそれぞれ有する電子システム50−200のブロック図である。一実施例のプロセッサは、ARMプロセッサ50−212であるが、本実施例は、これに限定されているわけではなく、本システム50−200においてあらゆるタイプのプロセッサ50−212を利用することができる。第1のデータ・バス50−202は、メモリ・コントローラであるオンRAM50−250を介してメモリ領域50−214にプロセッサ50−212を接続する。メモリ領域50−214は、本実施例では、プロセッサ・メモリ50−214またはそれに代えてARMランダム・アクセス・メモリ(RAM)50−214と称する。本実施例でプロセッサ・バス50−202とも称する第1のデータ・バス50−202は、単一のクロック・サイクルでプロセッサ・バス50−202によって接続されたデバイスの間での情報またはデータの転送をサポートするが、このように限定されているわけではない。
さらにプロセッサ・バス50−202は、ブリッジ・ユニットであるSBU2モジュール50−232および第2のデータ・バス50−204を介してプロセッサ50−212をDSP50−222に接続する。ブリッジ・ユニットであるSBU2モジュール50−232は、本実施例ではDSPブリッジ50−232とも称する。第2のデータ・バス50−204は、本実施例ではDSPバス50−204とも称する。DSP50−222はメモリ領域50−224に接続されている。本実施例では、メモリ領域50−224はDSPメモリ50−224と称する。一実施例のプロセッサ・メモリ50−214およびDSPメモリ50−224は、RAMデバイスであるが、このように限定されているわけではない。他の実施例は、あらゆるタイプのメモリ・デバイスおよび/またはあらゆる組み合わせのメモリ・デバイス/タイプを含むことができる。
DSP50−222およびDSPメモリ50−224は、プロセッサ50−212およびプロセッサ・バス50−202に接続されたデバイスの速度(プロセッサ・クロック・ドメインの速度)とは異なる速度(DSPクロック・ドメインの速度)でクロック制御される。一実施例においてDSP50−222およびDSPメモリ50−224のクロック速度/ドメインは、プロセッサ50−212より低速であるが、このように限定されているわけではない。従って、DSPバス50−204を介してのDSPブリッジ50−232からのデータの転送は、プロセッサ・バス50−202を介してのデータの転送に比べて低速である。さらに、プロセッサ・バス50−202に接続された構成要素とDSPバス50−204に接続された構成要素との間におけるクロック速度の相違のため、一実施例のDSPブリッジ50−232は非同期ブリッジであるが、このように限定されているわけではない。
他のさまざまな実施例では、あらゆるクロック速度/あらゆる組み合わせのクロック速度を利用してシステム50−200の構成要素をクロック制御することができ、たとえば1つの実施例としては、プロセッサ50−212、DSP50−222およびDSPメモリ50−224をほぼ等しいクロック速度でクロック制御してもよい。一方、別の実施例としては、プロセッサ50−212をDSP50−222および/またはDSPメモリ50−224よりも低い速度でクロック制御してもよい。
さらにシステム50−200は、プロセッサ・バス50−202に接続された少なくとも1つのメモリ・コンフィグレーション・レジスタであるRAM共有50−252を含んでいる。本実施例においてコンフィグレーション・レジスタ50−252とも称するメモリ・コンフィグレーション・レジスタ50−252は、第2のブリッジ・ユニットであるSBUモジュール50−234を介してプロセッサ・バス50−202に接続されており、後に説明するように、DSPメモリ50−224の構成を制御または管理する際に、プロセッサ50−212、デコーダ50−242およびDSPブリッジ50−232のうちの少なくとも1つによって利用される情報を記憶している。
デコーダ50−242は、プロセッサ・バス50−202、DSPブリッジ50−232およびメモリ・コントローラ50−250の間に接続されているが、このように限定されているわけではない。デコーダ50−242は、プロセッサ・バス50−202上のデータに関するアドレスを受信し、それに応じて、適切なメモリ領域へのデータの書き込み及びそこからのデータの読み出しを、メモリ・コンフィグレーション・レジスタ50−252の情報にしたがって制御または管理する。デコーダ50−242は、デコーダ50−242とメモリ・コントローラ50−250との間に接続された制御線50−243を介して、プロセッサ・メモリ50−214へのデータの読み出し/書き込みを制御する。デコーダ50−242は、必要に応じて、デコーダ50−242とDSPブリッジ50−232との間に接続された制御線50−244および制御線50−245を介して、DSPメモリ50−224へのデータの読み出し/書き込みを制御する。
一般に、このシステム50−200のDSPメモリの共有は、プロセッサ・バス50−202上でのDSPメモリ50−224への(プロセッサ・クロック・ドメインによる)直接的なアクセス及び/または、DSPバス50−204上での(DSPクロック・ドメインによる)DSPメモリ50−224への間接的なアクセスのいずれかを、プロセッサ50−212が実行できるようにする。直接的なアクセスは、DSPメモリ50−224の上側の32kバイトを、DSPクロック・ドメインからプロセッサ・クロック・ドメインへスイッチングすることによって達成される。間接的なアクセスは、DSPブリッジ50−232を介してDSPメモリ50−224の上側の部分からブロックをマッピングすることによって達成される。
DSPブリッジ50−232は、DSPメモリへのプロセッサ・ソフト・マッピング・アクセスとDSPコア・アクセスとのアービトレーション(調停)を行なう。さらにDSPブリッジ50−232は、アドレス0xC000_0000(プロセッサ・アドレスのソフト・マッピングなし)でプロセッサによるDSPメモリへの間接的なアクセスをサポートする。DSPブリッジ50−232は、ソフト・マッピングを介した0x6001_0000から0x6001_FFFFまでのアドレスの範囲におけるDSPメモリの上側の64kバイトのプロセッサによる間接的なアクセスもサポートする。加えて、DSPブリッジ50−232は、DSPメモリ共有制御ビットに基づいて、DSPメモリの読み出しまたは書き込みアクセス違反を検出し、必要に応じて違反状態ビットを生成し、読み出しまたは書き込みアクセス違反の間に、可能であれば、プロセッサ異常終了サイクルを生成する。
メモリ・コンフィグレーション・レジスタ50−252の構成情報は、あらかじめ指定されたメモリ共有の構成の情報を有しているが、このように限定されているわけではない。ソフトウェアの制御によって動作しているプロセッサ50−212は、システム50−200の状態に対して適切なメモリの構成を選択し、選択されたメモリの構成にしたがって、メモリ・コンフィグレーション・レジスタ50−252の少なくとも1つのレジスタのビットをセットする。一実施例においては、その構成情報はホスト電子システムの状態情報に対応しており、そのホスト・システムの異なった動作状態が異なったメモリ要求を有するときに、メモリがそのホスト・システムの異なった動作状態にしたがって再割当てされ、共有されるようにする。従って、ホスト・システムの構成要素の間におけるメモリ領域の再割当ては、ホスト・システムの動作状態の変化に応じて起こる。
上述のメモリの共有を利用する装置および/またはシステムの例としては、ホスト・システムが効率的なメモリ管理を必要とする1つまたは複数のプロセッサを含むシステムであってもよい。このような装置/システムの例としては、携帯可能な通信デバイス、携帯可能な位置追跡(トラッキング)デバイス、セルラー電話、位置追跡デバイスに接続され、かつ/または統合されたセルラー電話、モバイル電子デバイス、モバイル通信デバイス、携帯情報端末およびその他のプロセッサ・ベースのデバイスがあるが、これらに限定されているわけではない。
具体的な例として、全地球的測位システム(GPS)受信機のような測位システムを含むセルラー電話のようなモバイル通信デバイスを考慮されたい。このタイプのシステムにおいては、上記のプロセッサ50−212は、その通信デバイスの中央処理装置(CPU)に相当し、一方DSP50−222は、GPS信号および受信機情報を処理する専用の信号プロセッサに相当する。GPS受信機は、複数の動作モード(たとえばコールド・スタート、ウォーム・スタート、ホット・スタート等)を有し、これらのモードのすべては、非常に異なったメモリへの要求を有することがある。一実施例のメモリ再割当ておよび共有は、ホスト・デバイスの動作状態に応じて適切に、デバイス・メモリの少なくとも1つの領域を、CPUとDSPとの間での再割当てを可能にすることによって、このような携帯可能なデバイスの限られたメモリの効率的な利用を可能にする。このメモリ再割当てはホスト・デバイスのオペレーティング・システム・ソフトウェアに対して透過的であって、オペレーティング・システム・ソフトウェアはCPUメモリ・マップおよびDSPメモリ・マップを、ホスト・デバイスの状態に応じてメモリ・コンフィグレーション・レジスタ50−252によって構成されたものとして認識する。
図51は、図50の実施例における、電子システム50−200のスタート/ブートアップ後のメモリの構成のブロック図51−300である。ブートアップとも称するシステムのスタートの際には、プロセッサ・メモリ50−214は64キロバイト(kバイト)のメモリを(プロセッサ・メモリ・マップによって構成されたものとして)有しており、他方、DSPメモリ50−224は128kバイトのメモリを(DSPメモリ・マップによって構成されたものとして)有している。プロセッサ50−212は、0x6000_0000のベース・アドレスにおいてプロセッサ・メモリ50−214を認識する。しかし、他の実施例では、メモリ・タイプに対して適切であれば、プロセッサ・メモリ50−214にどのようなベース・アドレスを割当ててもよい。同様にDSP50−222は、0xC020_0000のベース・アドレスにおいてDSPメモリ50−224を認識する。しかし、その代わりの実施例は、メモリ・タイプに対して適切であれば、DSPメモリ50−224にどのようなベース・アドレスを割当ててもよい。
ここで説明するように、一実施例のメモリの共有は、プロセッサ50−212のDSPメモリ50−224からの読み出しおよびDSPメモリ50−224への書き込みをサポートする。その結果、プロセッサ50−212は、システムのブートアップの際に、DSPブリッジ50−232を介してDSPメモリ50−224を認識することができる。プロセッサは、たとえば0xC020_0000のベース・アドレスにおいてDSPメモリ50−224を認識する。しかし、他の実施例としては、DSPメモリ50−224に対してあらゆるベース・アドレスを利用することができる。
一実施例のメモリは、プロセッサ50−212および/またはDSP50−222が、特定のメモリの構成に応じたアドレスの境界を越えて各メモリのメモリ位置へのアクセスを試みたときに、ホスト・システムに警告を発するメモリ保護機能を有している。メモリ保護機能には、割り込みアドレス境界Int51−360を利用した割り込みの発生と、異常終了アドレス境界A51−362を利用した異常終了の発生があるが、これに限定されているわけではない。メモリ保護機能は、メモリ再割当ての例を参照しながら後に説明する。
動作時において、プロセッサ50−212がプロセッサ・データを記憶するために追加的なメモリを要求したとき、プロセッサ50−212は、プロセッサ・データを記憶する際に利用するために、DSPメモリ50−224のメモリ位置の少なくとも1つの領域またはセットを再割当てすることができる。一般に、DSPメモリ50−224を再割当てする2つの方法を利用することができる。第1の再割当て方法は、少なくとも1つのメモリ・マップを利用して、DSPブリッジ50−232を介して、DSPメモリ・アドレス空間からプロセッサ・メモリ・アドレス空間にあらかじめ指定されたアドレスをマッピングする。この第1の再割当て方法は、本実施例においてはマッピング再割当て方法と称する。DSPブリッジ50−232を介したメモリのマッピングは、各ブロックが最大で約8kバイトを有する8ブロック程度のメモリの付加的な再割当てをサポートする。しかし、実施例は、このように限定されているわけではない。プロセッサ50−212による再割当てされたメモリへのアクセスは、DSPブリッジ50−232、DSPバス50−204およびDSP50−222の構成要素(図示せず)を介して行われる。
第2の再割当て方法では、DSPバス50−204のDSPメモリ・アドレス空間からプロセッサ・バス50−202へ、あらかじめ指定されたメモリ・アドレスをスイッチングする。この第2の再割当て方法は、本実施例においてはスイッチング再割当て方法と称する。スイッチング再割当て方法は、メモリ・マッピングを利用して、連続するプロセッサ・メモリ・アドレス空間内への再割当てしたメモリの配置も行う。しかしながら、後に説明するように、このマッピングは、プロセッサ・バス50−202に直接接続されたメモリ・インターフェース(図56および図58を参照しながら後に説明する)を介して行われ、それによりマッピング再割当て方法よりも相対的に速い再割当てしたメモリへのアクセスをサポートする。スイッチング再割当て方法は、最大で約32kバイトを有するメモリのブロックの再割当てをサポートする。しかし、実施例は、このように限定されているわけではない。
さらなる再割当て方法および構成は、ここでの説明を利用したマッピング再割当て方法およびスイッチング再割当て方法の組み合わせによって実現することができる。例として、マッピング再割当て方法およびスイッチング再割当て方法の両方を利用したシステム構成について後に説明されているが、その代わりの実施例はこの構成に限定されるわけではない。
上述のように、一実施例のコア・メモリの共有は、マッピング再割当てを利用して、プロセッサ50−212のデータを記憶する際に利用するために、プロセッサ50−212がDSPメモリ50−224の一部を動的に再割当てし、または再構成することを可能にする。マッピング再割当ては、DSPバス50−204およびDSP50−222を介したプロセッサ50−212によるアクセスのために、DSPメモリ50−224のあらかじめ指定されたメモリ位置がDSPブリッジ50−232を通してマッピングされるシステムの構成を有している。図52は、図50の実施例において、DSPブリッジ50−232およびDSPバス50−204を介したプロセッサ50−212による利用のために、DSPメモリ52−424bのいくつかの部分を再割当てする電子システムの構成52−400のブロック図である。
一般に、システム52−400は、DSPブリッジ50−232を通してDSPメモリ・アドレス空間52−424からプロセッサ・メモリ・アドレス空間52−414にあらかじめ指定されたアドレスまたはブロック52−424bをマッピングするために、少なくとも1つのメモリ・マップを利用する。DSPメモリ52−424bの再割当ては、後に説明するように、コンフィグレーション・レジスタ50−252の情報に応じて行なわれる。一実施例の再割当ては、各ブロックが最大で約8kバイトのメモリを有する8ブロック程度のメモリの付加的な再割当てをサポートする。しかし、実施例は、このように限定されているわけではない。図53Aは、図52の実施例において、ブリッジ・ユニットを介してDSPアドレス空間52−424からプロセッサ・アドレス空間52−414にDSPメモリ52−424bのブロックを再割当てするメモリ再割当てのブロック図53−500である。図54Aは、図52の実施例において、ブリッジ・ユニットを介してDSPアドレス空間52−424からプロセッサ・アドレス空間52−414に、ブロック数n(この例においてはnは8である)のメモリを有するDSPメモリ52−424bのブロックを再割当てするメモリ再割当てのブロック図54−600である。
図53Aに関していうと、このマッピングの例は、DSPメモリ52−424からプロセッサ・メモリ52−414への8kバイトのメモリ・ブロック52−424bの再割当てを示している。図51によれば、この例のスタート時のメモリの構成は、128kバイトのDSPメモリ52−424および64kバイトのプロセッサ・メモリ52−414を含んでいるが、どのような構成のメモリも、ここに説明するように再割当てすることができる。再割当ての際に、メモリ・ブロック52−424b(8kバイト)がDSPメモリ52−424の最上部から取り出されるので、DSPはほぼ120kバイト(128kバイト−8kバイト=120kバイト)のサイズの連続するメモリのブロック52−424aを認識する。再割当てされたメモリ・ブロック52−424bはコア・プロセッサ・メモリ52−414に加えられ、プロセッサはほぼ72kバイト(64kバイト+8kバイト=72kバイト)のサイズの連続するメモリのブロック53−514を認識する。図53Bは、図53Aの実施例において、DSPアドレス空間52−424からプロセッサ・アドレス空間52−414にDSPメモリの8kバイトのブロックを再割当てした後におけるメモリの構成(メモリ・マップ)を示している。説明した実施例は、8kバイトのメモリ・ブロックを再割当てしているが、他の実施例では、異なるサイズのメモリ・ブロック、または異なるサイズを有するメモリ・ブロックの組み合わせを再割当てすることができる。
一実施例のメモリは、プロセッサおよび/またはDSPが特定のメモリの構成に応じたアドレスの境界を越えて各メモリのメモリ位置にアクセスしようとしたときに、ホスト・システムに警告を発するメモリ保護機能を有している。メモリ保護機能は、異常終了および割り込みのフラグを有しているが、このように限定されているわけではない。従って、メモリ保護機能のためのアドレスの境界は、メモリ再割当てをする間に調節される。
例として一実施例のシステムは、現在のメモリの構成に応じてあらかじめ指定された割り込みアドレス境界または限界を越えたメモリ位置にDSPがアクセスした場合に、割り込みフラグを発生させる。このようにしてシステムは、メモリ再割当てをする間に適切に、割り込みアドレス境界を調節する。図53Aと図53Bを参照しながらすでに説明した例に戻れば、DSPメモリ52−424からのメモリ・ブロック52−424bの取り出しを反映して、割り込みアドレス境界Int53−560はDSPメモリ52−424内で徐々に低いアドレスに調節される。他の実施例では、DSPメモリ52−424内のより高いアドレスに、またはメモリをアドレスする方式に対して適切に、徐々に割り込みアドレス境界を調節することができる。
他の例として、一実施例のシステムは、現在のメモリの構成に応じてあらかじめ指定された異常終了アドレス境界を越えて、プロセッサがメモリ位置にアクセスした場合、異常終了を発生させる。このようにしてシステムは、メモリ再割当てをする間に、適切に異常終了アドレス境界を調節する。図53Aと図53Bを参照しながらすでに説明した例に戻れば、コア・プロセッサ・メモリ52−414へのメモリ・ブロック52−424bへの追加を反映して、異常終了アドレス境界A53−562はプロセッサ・メモリ53−514内で徐々に高いアドレスに調節される。他の実施例では、メモリ内のより低いアドレスに、またはメモリをアドレスする方式に対して適切に、徐々に異常終了アドレス境界を調節することができる。
図54Aを参照しながら、メモリ再割当ての例を続ければ、メモリ再割当ての他の一つの実施例は、8個の8kバイトのメモリ・ブロック54−601〜54−608(64kバイト)を有するメモリ・ブロック52−424bを再割当てする。図51によれば、この例のスタート時のメモリの構成は、128kバイトのDSPメモリ52−424と64kバイトのプロセッサ・メモリ52−414を有するが、説明したように、あらゆる構成のメモリを再割当てすることができる。メモリ・ブロック52−424bが、DSPメモリ52−424の最上部から取り出され、コア・プロセッサ・メモリ52−414に再割当てされるので、DSPは約64kバイトのサイズ(128kバイト−64kバイト=64kバイト)の連続するメモリのブロック52−424aを認識する。再割当てされたメモリ・ブロック52−424bはコア・プロセッサ・メモリ52−414に加えられ、プロセッサは約128kバイトのサイズ(64kバイト+64kバイト=128kバイト)の連続するメモリのブロック54−614を認識する。割り込みおよび異常終了アドレスの境界は、上述したように、メモリをアドレスする方式に対して適切に調節される。図54Bは、図54Aの実施例において、DSPアドレス空間52−424からプロセッサ・アドレス空間52−414へ、DSPメモリの64kバイトのブロックを再割当てした後のメモリの構成(メモリ・マップ)を示している。上述の実施例は、合計で8個の8kバイトのメモリ・ブロックを再割当てするが、他の実施例では、異なった個数のメモリ・ブロックを再割当てしてもよく、メモリ・ブロックは、同じおよび/または異なったサイズであってもよい。
一実施例のメモリ・ブロックは、DSPメモリ52−424の最上部から取り出されたメモリがコア・プロセッサ・メモリ52−414の最上部に加えられるように、順番にマッピングされている。従って、DSPメモリ・アドレス空間は、上から下に向かって減少し、他方、プロセッサ・メモリのアドレス空間は、下から上に向かって増加する。しかし、他の実施例では、当該の技術分野において周知の他のマッピング方式を利用することができる。
メモリの再割当ては、DSPブリッジ50−232、DSPバス50−204およびDSP50−222を介したプロセッサ50−212によるDSPメモリ52−424bの再割当てされた部分へのアクセスをサポートする。プロセッサ50−212の情報は、デコーダ50−242の制御を受けて、再割当てされたDSPメモリ52−424bに送られる。再び図52を参照すると、デコーダ50−242は、プロセッサ・バス50−202を介してプロセッサから情報を受信する。受信された情報は、たとえば関連するメモリのアドレスにともなう命令および/またはデータを含んでいる。デコーダは、プロセッサ・バス50−202上の関連する情報がGPSデータであるかプロセッサ・データであるかを判定するために、アドレスの最初の4ビットを利用する。
バス50−202上の情報(データ)がGPSデータであるとデコーダ50−242が判定すると、デコーダ50−242は、(制御線50−244を利用して)DSPブリッジ50−232がGPSデータを読み出し/受信するように選択する。制御線50−244を介してデコーダ50−242によって選択される際には、DSPブリッジ50−232およびDSP50−222のいくつかの構成要素の組み合わせ(図示せず)によって、プロセッサ・バス50−202からDSPメモリの適切なメモリ位置にGPSデータが送られる。図55は、図52の実施例において、関連するメモリをロードする順序55−702および55−704にともなうメモリを再割当てされたDSPメモリのブロック図である。一実施例のGPSデータは、GPSデータのロード順序55−702にしたがってDSPメモリ52−424aに書き込まれる。
受信した情報(データ)がプロセッサ・データであるとデコーダ50−242が判定した場合、デコーダ50−242は、メモリ・コントローラ50−250とDSPブリッジ50−232のいずれかが、下記のアドレス・デコード方式にしたがって、それぞれ制御線50−243または制御線50−245を介して、プロセッサ・データを読み出し/受信するように選択する。アドレスが、6000_0000と6001_0000との間にあった場合、デコーダ50−242は、プロセッサ・メモリ52−414を(制御線50−243を利用して)選択し、プロセッサ・バス50−202およびメモリ・コントローラ50−250を介して関連する情報を受信させる。アドレスが、6001_0000と6002_0000との間にあった場合、デコーダ50−242は、DSPメモリの再割当てされたブロック52−424bを(制御線50−245を利用して)選択し、DSPバス50−204、DSPブリッジ50−232とDSP50−222の構成要素の組み合わせ(図示せず)を介して関連する情報を受信させる。他のさまざまな実施例では、制御線50−244および50−245の代わりに、あらゆる信号伝達線/信号伝達技術を利用して、DSPブリッジ50−232および/またはメモリ・コントローラ50−250を選択することができる。
デコーダ50−242が、DSPメモリの再割当てされたブロック52−424bがプロセッサ・バス50−202上の関連する情報(プロセッサ・データ)を受信することを選択すると、デコーダ50−242は、制御線50−245を利用してDSPブリッジ50−232を選択し、プロセッサ・データを読み出し/受信させる。デコーダ50−242によって選択される際には、DSPブリッジ50−232は、プロセッサ・バス50−202から再割当てされたDSPメモリ52−424bの適切なメモリ位置にプロセッサ・データを処理して送る。DSPブリッジ50−232によるデータの処理は、たとえばデータのアドレスの反転を含むが、実施例は、このように限定されているわけではない。再び図55を参照して、一実施例のプロセッサ・データは、SWアクセス・ロード順序55−704にしたがって、再割当てされたGPSメモリ52−424bに書き込まれる。
上述したように、一実施例のコア・メモリの共有は、スイッチング再割当ても含んでいる。スイッチング再割当ては、DSPバス50−204のDSPメモリ・アドレス空間からプロセッサ・バス50−202へ、あらかじめ指定されたメモリ・アドレスをスイッチングする。この再割当て方法は、再割当てされたメモリを連続するプロセッサ・メモリ・アドレス空間に配置するために、メモリ・マッピングも使用する。しかしながらこのマッピングは、上述のDSPブリッジ50−232を介したマッピングよりも高速な、再割当てされたメモリへのアクセスを提供するメモリ・インターフェースを介したものである。
図56は、図50の実施例において、メモリ・インターフェース56−802およびプロセッサ・バス50−202を介した、スイッチング再割当てを利用する、プロセッサ50−212による利用のために、DSPメモリ56−824の一部を再割当てする電子システムの構成56−800のブロック図である。システムの構成56−800は、プロセッサ・バス50−202に接続されたメモリ・インターフェース56−802を有している。メモリ・インターフェース56−802は、少なくとも1つのメモリ・マップ(図示せず)をホストするが、このように限定されているわけではない。メモリ・インターフェース56−802の構成要素は、メモリ・マップを利用して、DSPメモリ・アドレス空間56−824からプロセッサ・メモリ・アドレス空間56−814にあらかじめ指定されたアドレスまたはブロック56−824bをスイッチングする。DSPメモリ56−824bの再割当ては、後に説明するように、コンフィグレーション・レジスタ50−252の情報に応じて実行される。再割当てされたメモリ56−824bは、DSPバス50−204およびDSP50−222を介したアクセスと比べて比較的小さいクロック・サイクルで、プロセッサ・バス50−202およびメモリ・インターフェース56−802を介してプロセッサによって直接的にアクセスされる。
一実施例の再割当ては、最大で約32kバイトのメモリを有するDSPメモリのブロック56−824bの再割当てをサポートする。しかし、実施例は、このように限定されているわけではない。他の実施例では、あらゆる数/組み合わせのメモリ位置を有するあらゆる数のブロックを再割当てすることができる。図57Aは、図56の実施例において、メモリ・インターフェースを介してDSPアドレス空間56−824からプロセッサ・アドレス空間56−814に、DSPメモリのブロック56−824bが再割当てされたメモリの構成のブロック図57−900である。
図57Aを参照すると、以下のマッピングの例は、32kバイトのメモリ・ブロック56−824bの再割当てを示している。図51によれば、この例のスタート時のメモリの構成は、128kバイトのDSPメモリ56−824および64kバイトのプロセッサ・メモリ56−814を含んでいるが、すでに説明したように、あらゆる構成のメモリを再割当てすることができる。再割当ての際に、メモリ・ブロック56−824bはDSPメモリ56−824の最上部から取り出されるから、DSPは約96kバイトのサイズ(128kバイト−32kバイト=96kバイト)の連続するメモリのブロック56−824aを認識する。再割当てされたメモリ・ブロック56−824bは、コア・プロセッサ・メモリ56−814に加えられ、プロセッサは約96kバイトのサイズ(64kバイト+32kバイト=96kバイト)の連続するメモリのブロック57−914を認識する。図57Bは、図57Aの実施例において、DSPメモリ・アドレス空間56−824からプロセッサ・アドレス空間56−814へ、DSPメモリの32kバイトのブロックの再割当てをした後のメモリの構成(メモリ・マップ)を示している。上述の実施例では、32kバイトのメモリ・ブロックを再割当てしているが、他の実施例では、1または複数の異なるサイズのメモリ・ブロック及び/または異なるサイズを有するメモリ・ブロックの組み合わせを再割当てしてもよい。
一実施例のメモリは、プロセッサおよび/またはDSPが特定のメモリの構成に応じたアドレス境界を越えて各メモリのメモリ位置へのアクセスを試みた場合に、ホスト・システムに警告を発するメモリ保護機能を有している。メモリ保護機能は、異常終了および割り込みフラグを有しているが、このように限定されているわけではない。したがって、メモリ保護機能のためのアドレス境界は、メモリ再割当て時に調節される。図53A、図53B、図54Aおよび図54Bを参照しながらすでに説明したように、DSPメモリ56−824からのメモリ・ブロック56−824bの取り出しを反映して、割り込みアドレス境界Int57−960はDSPメモリ56−824内において徐々に低いアドレスに調節される。他の実施例では、メモリ内のより高いアドレスに、またはメモリをアドレスする方式に対して適切に、徐々に割り込みアドレス境界57−960を調節することができる。同様に、コア・プロセッサ・メモリ56−814へのメモリ・ブロック56−824bの追加を反映して、異常終了アドレス境界A57−962はプロセッサ・メモリ57−914内で徐々に高いアドレスに調節される。他の実施例では、メモリ内のより低いアドレスに、またはメモリをアドレスする方式に対して適切に、徐々に異常終了アドレス境界57−962を調節することができる。
上述したスイッチングおよび/またはマッピング再割当て方法の組み合わせによって、多数の追加的な再割当て方法および構成を実現することができる。たとえば、いくつかのシステム構成は、スイッチングおよびマッピング再割当ての両方を組み合わせることによって、メモリを再割当てすることができる。図58は、図50,52および56の実施例において、スイッチング再割当てを利用して1グループのDSPメモリ・アドレス58−1024cを再割当てし、マッピング再割当てを利用して他のグループのDSPメモリ・アドレス58−1024bを再割当てするシステムの構成58−1000の例のブロック図を示している。システム58−1000の構成要素は、メモリ・インターフェース58−1002およびプロセッサ・バス50−202を介したプロセッサ50−212による利用のためにDSPメモリの第1の部分58−1024cを再割当てし、DSPブリッジ50−232およびDSPバス50−204を介したプロセッサ50−212による利用のためにDSPメモリの第2の部分58−1024bを再割当てする。しかし、このように限定されているわけではない。
まず、DSPメモリの第1のブロック58−1024cのスイッチング再割当てに関していえば、システムの構成58−1000は、プロセッサ・バス50−202に接続されたメモリ・インターフェース58−1002を含んでいる。メモリ・インターフェース58−1002は、少なくとも1つのメモリ・マップ(図示せず)をホストするが、このように限定されているわけではない。メモリ・インターフェース58−1002の構成要素は、メモリ・マップを利用して、DSPメモリ58−1024からコア・プロセッサ・メモリ58−1014に、あらかじめ指定されたアドレスまたはブロック58−1024cをスイッチングする。DSPメモリの第1のブロック58−1024cの再割当ては、各ブロックが最大で約8kバイトのメモリを有する4ブロック程度のメモリの再割当てをサポートする。しかし、実施例がこのように限定されているわけではない。DSPメモリ58−1024cのスイッチング再割当ては、後に説明するように、コンフィグレーション・レジスタ50−252の情報に応じて実行される。再割当てされたメモリ58−1024cは、プロセッサ・バス50−202およびメモリ・インターフェース58−1002を介してプロセッサ50−212によって直接的にアクセスされる。
次にDSPメモリの第2のブロック58−1024bのマッピング再割当てでは、システム構成58−1000は、少なくとも1つのメモリ・マップを利用して、DSPブリッジ50−232を介してDSPメモリ58−1024からコア・プロセッサ・メモリ58−1014にあらかじめ指定されたアドレスまたはブロック58−1024bをマッピングする。DSPメモリ58−1024bの再割当ては、後に説明するように、コンフィグレーション・レジスタ50−252の情報に応じて実行される。DSPメモリの第2のブロック58−1024bの再割当ては、第1のブロック58−1024cのスイッチング再割当てと組み合わせて行なわれたときに、各ブロックが最大で約8kバイトのメモリを有する4ブロック程度のメモリの付加的な再割当てをサポートする。しかし、実施例が、このように限定されているわけではない。
図59Aは、図58の実施例において、メモリ・インターフェース58−1002およびDSPブリッジ50−232を介してDSPアドレス空間58−1024からコア・プロセッサ・アドレス空間58−1014に、DSPメモリのブロック58−1024cおよび58−1024bがそれぞれ再割当てされたメモリの構成のブロック図59−1100である。図51のように、この例のスタート時のメモリの構成は、128kバイトのDSPメモリ58−1024および64kバイトのプロセッサ・メモリ58−1014を有しているが、すでに説明したように、あらゆる構成のメモリを再割当てすることができる。
メモリ・インターフェース58−1002およびプロセッサ・バス50−202を介したプロセッサ50−212による利用のためのDSPメモリの第1の部分58−1024cの再割当ては、32kバイトのメモリ・ブロック58−1024cの再割当てを含んでいる。再割当ての際には、メモリ・ブロック58−1024cは、上述のように、メモリ・インターフェースの構成要素を介してメモリ・マッピングを利用することによって、DSPメモリ58−1024の最上部から取り出される。
同様に、DSPブリッジ50−232を介したプロセッサ50−212による利用のためのDSPメモリの第2のブロック58−1024bの再割当ては、4つの8kバイトのメモリ・ブロック59−1101〜59−1104(まとめて58−1024b)の再割当てを含んでいる。再割当ての際には、メモリ・ブロック58−1024bは、上述のように、DSPブリッジ50−232およびDSP50−222の構成要素を介してメモリ・マッピングを利用することによって、DSPメモリ58−1024から取り出される。
DSPメモリの第1のブロック58−1024cおよび第2のブロック58−1024bの再割当ての際には、まず、メモリ・ブロック58−1024c(32kバイト)が、コアDSPメモリ58−1024の最上部から取り出され、コア・プロセッサ・メモリ58−1014の最上部に加えられる。次に、メモリ・ブロック58−1024b(8kバイト×4ブロック=32kバイト)が、残っているコアDSPメモリ58−1024の最上部から取り出され、メモリ・ブロック58−1024cの最上部に加えられる。これらの2つの再割当て処理の後に、DSP50−222は、約64kバイト(128kバイト−32kバイト−32kバイト=64kバイト)のサイズの連続するメモリのブロック58−1024aを認識する。再割当てされたメモリ・ブロック58−1024cおよび58−1024bをコア・プロセッサ・メモリ58−1014へ加えた結果として、プロセッサは、約128kバイト(64kバイト+32kバイト+32kバイト=128kバイト)のサイズの連続するメモリのブロック59−1114を認識する。図59Bは、図59Aの実施例において、DSPアドレス空間58−1024からプロセッサ・アドレス空間58−1014にDSPメモリの第1および第2のブロックを再割当てした後のメモリの構成(メモリ・マップ)を示している。他の実施例では、異なったサイズの複数のメモリ・ブロックまたは異なったサイズを有する複数のメモリ・ブロックの組み合わせを再割当てしても良い。
ここで留意すべきは、DSPメモリを再割当てするときに、DSPメモリの第1の部分58−1024cのスイッチングが、DSPメモリの第2の部分58−1024bのマッピングより優先するということであるが、実施例がこのように限定されるわけではない。したがって、スイッチングおよびマッピング方法を組み合わせて利用するときには、プロセッサ50−212がメモリ・ブロック59−1101〜59−1104のうち1つまたは複数をマッピングし、次にメモリ・ブロック59−1101〜59−1104のうち1つまたは複数をスイッチングする場合と、プロセッサ50−212がメモリ・ブロック59−1101〜1104のうち1つまたは複数をスイッチングし、次にメモリ・ブロック59−1101〜59−1104のうち1つまたは複数をマッピングする場合の2つの状況が発生し得る。これら2つの状況のどちらであっても、既存のそれまでのデータの順序は、マッピングおよびスイッチング再割当て方法の間で処理されるときも保持されるに保存される。また、プロセッサが、DSPブリッジ50−232を介して、コア・プロセッサ・メモリ58−1014に、DSPメモリの第1の部分58−1024cのブロック59−1101〜59−1104のうちの1つまたは複数を以前にマッピングしていた場合には、後にメモリ・インターフェースを介してコア・プロセッサ・メモリ58−1014にブロックをマッピングするときに、これらのブロック59−1101〜59−1104内に記憶されたあらゆるデータがそのまま同じアドレスに残っている。
図53A,図53B,図54A、図54B、図57Aおよび図57Bを参照しながら既に説明したように、DSPメモリ58−1024からのメモリ・ブロック58−1024cおよび58−1024bの取り出しを反映して、割り込みアドレス境界Int59−1160はDSPメモリ58−1024内で徐々に低いアドレスとなるよう調節される。他の実施例では、メモリ内のより高いアドレスに、またはメモリをアドレスする方式に対して適切に、徐々に割り込みアドレス境界59−1160を調節することができる。同様に、コア・プロセッサ・メモリ58−1014へのメモリ・ブロック58−1024cおよび58−1024bの追加を反映して、異常終了アドレス境界A59−1162はメモリ内で徐々に高いアドレスとなるよう調節される。他の実施例では、メモリ内のより低いアドレスに、またはメモリをアドレスする方式に対して適切に、徐々に異常終了アドレス境界59−1162を調節することができる。
メモリ・スイッチングおよびマッピング再割当てを組み合わせたシステムの構成58−1000は、プロセッサ50−212によるプロセッサ・バス50−202およびメモリ・インターフェース58−1002を介したDSPメモリのスイッチングされた部分58−1024cへのアクセスをサポートし、さらにDSPブリッジ50−232、DSPバス50−204およびDSP50−222を介したDSPメモリのマッピングされた部分58−1024bへのアクセスをサポートする。プロセッサ50−212の情報(データ)は、デコーダ50−242の制御によって適切なメモリ位置へ送られる。再度、図58を参照すると、デコーダ50−242は、プロセッサ・バス50−202を介してプロセッサ50−212から情報(データ)を受信する。受信された情報は、たとえば関連するメモリ・アドレスにともなうデータおよび/または命令を含んでいる。デコーダ50−242は、関連する情報がGPSデータであるかプロセッサ・データであるかを判定するために、アドレスの最初の4ビットを利用する。
情報(データ)がGPSデータであるとデコーダ50−242が判定すると、デコーダ50−242は、(制御線50−244を利用して)DSPブリッジ50−232が、GPSデータを読み出し/受信するように選択する。制御線50−244を介してデコーダ50−242によって選択される際には、DSPブリッジ50−232およびDSP50−222のいくつかの構成要素の組み合わせ(図示せず)によって、プロセッサ・バス50−202からDSPメモリの適切なメモリ位置58−1024aにGPSデータを送る。図60は、図58の実施例において、関連するメモリをロードする順序60−1202および60−1204にともなうメモリを再割当てされたDSPメモリのブロック図である。一実施例のGPSデータは、GPSデータ・ロード順序60−1202にしたがって、GPSメモリ58−1024aに書き込まれる。
受信した情報(データ)がプロセッサ・データであるとデコーダ50−242が判定すると、デコーダ50−242は、メモリ・コントローラ50−250、DSPブリッジ50−232、メモリ・インターフェース58−1002のうちの1つが、下記のようなアドレス・デコード方式にしたがって、それぞれ制御線50−243または制御線50−245または制御線50−244を介して、プロセッサ・データを読み出し/受信するように選択する。アドレスが6000_0000と6001_8000との間であり、メモリの構成がスイッチングされたメモリ58−1024cを有するときは、デコーダは、(制御線50−244を利用して)スイッチングされたメモリ58−1024cを選択し、プロセッサ・バス50−202およびメモリ・インターフェース58−1002を介して関連する情報を受信させる。アドレスが6001_8000と6002_0000との間であり、メモリの構成がスイッチングされたメモリ58−1024cを有するときは、デコーダは、(制御線50−245を利用して)DSPメモリ58−1024のマッピングされたブロック58−1024bを選択し、DSPバス50−204およびDSPブリッジ50−232とDSP50−222のいくつかの構成要素の組み合わせ(図示せず)を介して関連する情報を受信させる。他のさまざまな実施例では、制御線50−243〜245の代わりに、プロセッサ・データを読み出し/受信するデバイスを選択するために、あらゆる数/タイプ/組み合わせの信号伝達方式を利用することができる。
デコーダ50−242がDSPメモリのマッピングされたブロック58−1024bを選択して、プロセッサ・バス50−202上の関連する情報を受信させたときには、デコーダ50−242は制御線50−245を利用してDSPブリッジ50−232を選択して、プロセッサ・データを読み出し/受信させる。デコーダ50−242によって選択された際には、DSPブリッジ50−232はプロセッサ・データを処理し、プロセッサ・バス50−202から再割当てされたDSPメモリ58−1024bの適切なメモリ位置に送る。DSPブリッジ50−232によるデータの処理は、たとえばデータのアドレスの反転を含むが、実施例がこのように限定されているわけではない。再度、図60を参照すると、一実施例のプロセッサ・データは、SWアクセス・ロード順序60−1204にしたがって、再割当てされたGPSメモリ58−1024bに書き込まれる。
上述したように、一実施例のメモリは、プロセッサ50−212および/またはDSP50−222が、特定のメモリの構成に応じたアドレスの境界を越えて各メモリのメモリ位置へのアクセスを試みたときに、ホスト・システムに警告を発するメモリ保護機能を有している。これらのメモリ保護機能は、たとえば異常終了および割り込みのフラグを有している。図61は、図58の実施例において、1グループのメモリ・アドレスをスイッチング再割当てを利用して再割当てし、他のグループのメモリ・アドレスをマッピング再割当てを利用して再割当てするシステムの構成61−1300のブロック図である。さらにこのシステム61−1300は、DSPブリッジ50−232と接続されたSWモニタ61−1302を含んでいるが、このように限定されているわけではない。SWモニタ61−1302は、プロセッサ50−212が、上述したようにメモリの構成に関連するあらかじめ指定された異常終了アドレス境界を越えたメモリ位置にアクセスした場合に、異常終了61−1304を発生させる。システム61−1300は、メモリの構成に対して適切に、少なくとも1つの異常終了アドレス境界を調節する。
システム61−1300は、DSP50−222およびDSPメモリ58−1024のうちの少なくとも一方に接続されたDSPモニタ61−1304を有している。実施例のDSPモニタ61−1304は、DSP50−222が、上述したようにメモリの構成に関連するあらかじめ指定された割り込みアドレス境界または限界を越えたメモリ位置にアクセスした場合に、割り込み61−1314を発生させる。システム61−1300は、メモリの構成に対して適切に、少なくとも1つの割り込みアドレス境界を調節する。
図50,52,56および58を参照しながら既に説明したシステムの構成は、DSPメモリにアクセスする際に利用するためのマルチプレクサを有することもできる。例えば、図62は、図50,52,56および58の実施例のいずれかにおいて、再割当てされたメモリX24およびマルチプレクサ62−1402を有する電子システム62−1400のブロック図である。マルチプレクサ62−1402は、メモリX24(“X”は対応する図/システムの番号を表わしており、図50では“メモリ50−224”、図4では“メモリ52−424”、図56では“メモリ56−824”、図58では“メモリ58−1024”を表す)およびDSP50−222に接続されているが、このように限定されているわけではない。メモリX24は、DSPメモリX24aおよび再割当てされたメモリ・ブロックX24bを有している。上述したように、再割当てされたメモリ・ブロックX24bは、プロセッサ50−212によって利用するために再割当てされている(図50,52,56および58参照)。
メモリX24への書き込み処理の間に、DSP50−222は、アドレスおよびメモリ・チップの選択情報(0,1,2または3)を含む情報をマルチプレクサ62−1402に転送する。他の実施例では、マルチプレクサ62−1402に追加的な情報を送ることができる。アドレスおよびチップの選択情報を利用して、マルチプレクサ62−1402は、書き込み処理のために、メモリ・ブロックX24aまたはX24bのうちの1つのメモリ位置を選択する。
メモリ読み出し処理の間に、DSP50−222は、すくなくともアドレス情報を含む情報をマルチプレクサ62−1402に送る。それに応答して、マルチプレクサ62−1402は、アドレス情報に応じた各メモリ・ブロックX24a、X24bのメモリ位置からデータを受信する。マルチプレクサは、アドレス情報を利用してメモリ・ブロックX24aから読み出された情報とメモリ・ブロックX24bから読み出された情報のいずれかを選択し、DSP50−222に選択された情報を送る。
上述したすべてのプロセッサ・メモリおよびDSPメモリへのアクセスは、バイト・ライン書き込み制御によって、バイト、ハーフ・ワードおよびワードでのアクセスを可能にする。この特徴属性は、スイッチングされたメモリについても、およびブリッジ・ユニットを介してマッピングされたメモリについてもあてはまるの両方に対して持続する。DSPメモリへのバイトの順序は、DSPのベース・アドレスへの順序、またはプロセッサのベース・アドレスを利用するマッピングされたまたはスイッチングされたブロックへの順序のいずれかと同じである。
前記のメモリの共有/再割当ては、ホスト電子システムの複数の構成要素またはモジュールを含むことができる。図50〜図62を参照しながら既に説明したシステムは、プロセッサ・バス50−202に接続された少なくとも1つのメモリ・コンフィグレーション・レジスタ50−252を有している。メモリ・コンフィグレーション・レジスタ50−252は、ブリッジ・ユニット50−234を介してプロセッサ・バス50−202に接続されており、メモリの構成を制御または管理する際に、プロセッサ50−212、デコーダ50−242、メモリ・インターフェース(図56では56−802、図58では58−1002)、DSPブリッジ50−232、マルチプレクサ(図62の62−1402)のうちの少なくとも1つによって利用される情報を記憶するレジスタを含んでいる。単独でおよび/またはホスト電子システムの別の構成要素との組み合わせにおいて、メモリ・コンフィグレーション・レジスタ50−252は、一般に、1つまたは複数の後に説明するレジスタ/レジスタ・フィールドを含んでいる。
一実施例のコンフィグレーション・レジスタ50−252は、上述したように、マッピング再割当てをサポートするための第1のレジスタ・フィールドの第1のセットを有している。このレジスタ・フィールドのセットは、DSPアドレス空間からプロセッサ・アドレス空間にメモリ・ブロックをマッピングする。このメモリ・ブロックは、最大8つの8kバイトのブロックを有しているが、他の実施例では、あらゆるサイズを組み合わせたあらゆる数のブロックを有していてもよい。それらのブロックは、DSPメモリの最上部から順にマッピングされる。一実施例の第1のレジスタ・フィールドの第1のセットは、1つまたは複数のレジスタ・フィールドを有している。
一実施例のコンフィグレーション・レジスタ50−252は、上述したように、スイッチング再割当てをサポートするための第2のレジスタ・フィールドの第2のセットを有している。この第2のレジスタ・フィールドの第2のセットは、DSPバスからプロセッサ・バスへのDSPメモリの最上部の32kバイトのスイッチングをサポートする。その32kバイトのブロックは、4つの8kバイトのブロックを有している。メモリの対応する4つの8kバイトのブロックのうち1つまたは複数が、マッピング再割当てによって、既に再割当てされているか、または後に再割当てされる場合、スイッチ制御が優先される。最初の4つのマッピングされた8kバイトのブロックおよび単独でスイッチングされた32kバイトのブロックのデータの内容は、どちらかの再割当て方法であってもと、同一のオフセットおよびバイト順序になる。一実施例の第2のレジスタ・フィールドの第2のセットは、1つまたは複数のレジスタ・フィールドを有している。
一実施例のコンフィグレーション・レジスタ50−252は、DSPメモリの読み出しおよび/または書き込みアクセス違反に対して、異常終了の発生を有効または無効にすることをサポートする第3のレジスタ・フィールドの第3のセットを有している。これらの異常終了の発生は、読み出しおよび書き込みのアクセスに対して、独立して、有効または無効にすることができる。割り込みに関しては、一実施例のシステムは、最初のDSPメモリ違反およびその後の割り込みを引き起こしたアドレスの保存をサポートする第4のレジスタ・フィールドの第4のセットを有している。一実施例の第3および第4のレジスタ・フィールドの第3のセットおよび第4のセットのそれぞれは、1つまたは複数のレジスタ・フィールドを有している。
図63は、一実施例における、メモリの共有のための制御レジスタ63−1500のブロック図である。コンフィグレーション・レジスタ50−252は、制御レジスタ63−1500を有するが、他の実施例では、ホスト・システムの別の構成要素および/または構成要素の組み合わせ内に制御レジスタ63−1500を有していても良い。このレジスタのビット0−15の機能の説明は、次のとおりである。
ビット15〜7:予備である。
ビット6:DSP32K_SWI_ENB:ロジック1=プロセッサ・バスを介したDSPメモリの上側の32kバイトへのプロセッサによる直接的なアクセスを有効にする。
ビット5〜3:MAP_BLK[2:0]:000−111は、DSP64K_MAP_ENB=1のときに、プロセッサ・ソフト・マッピング・アクセスのためにDSPメモリの上側の64kバイトの1個目から8個目までの8kバイトのブロックを選択する。これらのビットは、次のようにプロセッサ・ソフトMAPアドレスの境界を設定する。
000:≧0x6001_0000<0x6001_2000または≧0xC021_E000<0xC022_0000
001:≧0x6001_0000<0x6001_4000または≧0xC021_C000<0xC022_0000
010:≧0x6001_0000<0x6001_6000または≧0xC021_A000<0xC022_0000
011:≧0x6001_0000<0x6001_8000または≧0xC021_8000<0xC022_0000
49−100:≧0x6001_0000<0x6001_A000または≧0xC021_6000<0xC022_0000
101:≧0x6001_0000<0x6001_C000または≧0xC021_4000<0xC022_0000
110:≧0x6001_0000<0x6001_E000または≧0xC021_2000<0xC022_0000
111:≧0x6001_0000<0x6002_0000または≧0xC021_0000<0xC022_0000
ビット2:DSP64K_MAP_ENB:ロジック1=DSPバス・ブリッジを介して0x6001_0000以上でかつ0x6002_0000より小さいアドレスにおいて、DSPメモリの上側の64kバイトの1個目から8個目までの8kバイトのブロックのプロセッサ・ソフト・マッピングを可能にする。
ビット1:EN_CPU_WAB:ロジック1=プロセッサ書き込み違反における異常終了を有効にする。
ビット0:EN_CPU_RAB:ロジック1=プロセッサ読み出し違反における異常終了を有効にする。
制御レジスタ63−1500の制御ビットのさらに詳細な説明は次のとおりである。EN_CPU_RABビットは、プロセッサで利用するためにマッピングされているか、またはアクセスしたバス上に物理的に存在しないために、許可されていないアドレス範囲内でDSPメモリから読み出ししようとした場合に、プロセッサ50−212にアクセスを異常終了させる。たとえばSWI_ENB=0でありMAP_ENB=1であって、プロセッサ50−212が0x6001_C000から0x6001_FFFFのアドレス範囲から読み出そうとした場合、異常終了が発生する。同様にSWI_ENB=1であって、プロセッサ50−212が0xC021_E000から0xC021_FFFFの範囲から読み出そうとした場合、異常終了が発生する。しかし、ここで留意すべきは、SWI_ENB=0でありMAP_ENB=1であって、MAP_BLKが000以上である場合には、0x6001_0000から0x6001_1FFFと0xC021_E000から0xC021_FFFFの両方のアドレス範囲において、プロセッサ50−212はDSPブリッジ50−232を介してブロック0から読み出してもよいということである。
EN_CPU_WABビットは、プロセッサで利用するために特定のアドレス範囲がマッピングされているか、またはアクセスしたバス上に物理的に存在しないために、許可されていないアドレス範囲内でDSPメモリに書き込みをしようとした場合に、プロセッサ50−212にアクセスを異常終了させる。たとえばSWI_ENB=0でありMAP_ENB=1であって、プロセッサ50−212が0x6001_C000から0x6001_FFFFのアドレス範囲に書き込もうとした場合、異常終了が発生する。同様にSWI_ENB=1であって、プロセッサ50−212が0xC021_E000から0xC021_FFFFの範囲のアドレスに書き込もうとした場合、そのブロックはDSPバス上に存在しないので、異常終了が発生する。しかし、ここで留意すべきは、SWI_ENB=0でありMAP_ENB=1であって、MAP_BLKが000以上である場合には、0x6001_0000から0x6001_1FFFおよび0xC021_E000から0xC021_FFFFの両方のアドレス範囲において、プロセッサ50−212はDSPブリッジ50−232を介してブロック0に書き込んでもよいということである。
DSP64K_MAP_ENBビットは、MAP_BLK[2:0]に、DSPアドレス範囲からオンチップ・プロセッサ・メモリのすぐ上のアドレス範囲への8個の8kバイトのブロックのアドレス・マッピングを制御可能とさせる。このビットが無効とされている(ロジック“0”にセットされている)場合、マッピング・ビットであるMAP_BLK[2:0]は何の影響も及ぼさない。
MAP_BLK[2:0]ビットは、DSPアドレス範囲からオンチップ・プロセッサ・メモリのすぐ上のアドレス範囲への8個の8kバイトのブロックのマッピングを制御する。それらのバイトは、ブロック0から始まりMAP_BLK[2:0]によって指定されたブロックで終了するようにマッピングされるが、このように限定されているわけではない。ブロック0は、DSPアドレス範囲の最上部であって、プロセッサ・メモリの上のマッピングされた範囲の最下部にマッピングされる。この逆の積み重ねは、上側のブロックが取り出されるときに、残りのDSPメモリが連続するアドレス範囲となるように行われ、加えられたプロセッサ・メモリは、連続するアドレス範囲となるように、加えられたブロックそれぞれとともに上方に重ねられる。
DSP32K_SWI_ENBビットは、メモリ・ブロック0〜3をDSPバスからプロセッサ・バスにスイッチングする。4つのブロックは、プロセッサ・アドレス範囲に、逆の順序で積み重ねられ、開始部であるブロック0が、ちょうどオンチップ・プロセッサ・メモリのすぐ上にマッピングされる。これと同じマッピングが、MAP_BLK[2:0]がDSPブリッジ50−232を介してブロックをマッピングするときに利用される。
図64は、一実施例における、メモリの共有のための状態レジスタ64−1600のブロック図である。コンフィグレーション・レジスタ50−252は、状態レジスタ64−1600を有しているが、他の実施例では、ホスト・システムの別の構成要素および/または構成要素の組み合せが状態レジスタ64−1600を有していてもよい。このレジスタのビット0−15の機能の説明は次のとおりである。
ビット15〜2:予備
ビット1:CPUW_VIO:読み出し処理の間は、ロジック1=プロセッサの書き込み違反。書き込み処理の間は、ロジック1の書き込みによってビットがクリアされる。
ビット0:CPUR_VIO:読み出し処理の間は、ロジック1=プロセッサの読み出し違反。書き込み処理の間は、ロジック1の書き込みはによってビットがクリアされる。
状態レジスタ64−1600の各制御ビットのより詳細な説明は次のとおりである。CPUR_VIOビットは、プロセッサの読み出し違反が起こったときにセットされる。このビットは、EN_CPU_RABの状態に関係なくセットされる。CPUR_VIOビットは、プロセッサがロジック“1”を書き直したときにクリアされる。
CPUW_VIOビットは、プロセッサの書き込み違反が起こったときにセットされる。このビットは、EN_CPU_WABの状態に関係なくセットされる。CPUW_VIOビットは、プロセッサがロジック“1”を書き直したときにクリアされる。
図65は、一実施例における、メモリの共有のための書き込み/読み出し違反アドレス・レジスタ65−1700のブロック図である。コンフィグレーション・レジスタ50−252は、違反アドレス・レジスタ65−1700を有しているが、他の実施例では、ホスト・システムの別の構成要素および/または構成要素の組み合せが違反アドレス・レジスタ65−1700を有していてもよい。このレジスタのビット0−15の機能の説明は次のとおりである:
ビット15〜0:DSPW_INTまたはDSPR_INTパルスを初めに発生させたDSPアドレス。
図66Aおよび66Bは、一実施例における、メモリの共有のためのアドレス・マップ66−1800を示している。コンフィグレーション・レジスタ50−252は、アドレス・マップ66−1800を有しているが、他の実施例では、ホスト・システムの別の構成要素および/または構成要素の組み合せがアドレス・マップ66−1800を含んでいてもよい。メモリの共有のためのアドレス・マッピングの例を下記にいくつか提示するが、実施例がこれらの例に限定されるわけではない。
第1の例においては、ブロック=7、DSP32K_SWI_ENB=X、DSP64K_MAP_ENB=0、MAP_BLK[2:0]=XXXである。DSP50−222は、0x0001_0000から0x0001_FFFFのDSPアドレス範囲においてブロックにアクセスする。プロセッサ50−212は、0xC021_0000から0xC021_1FFFのDSP・ブリッジ・アドレスにおいてブロックにアクセスする。プロセッサ50−212は、プロセッサ・バス50−202においてこのブロックにアクセスすることはできない。
第2の例においては、ブロック=7、DSP32K_SWI_ENB=X、DSP64K_MAP_ENB=1、MAP_BLK[2:0]=110である。DSP50−222は、0x0001_0000から0x0001_FFFFのDSPアドレス範囲においてブロックにアクセスする。プロセッサ50−212は、0xC021_0000から0xC021_FFFFのDSPブリッジ・アドレスまたは0x6001_0000から0x6001_5FFFのソフト・マップ・アドレスにおいてブロックにアクセスする。プロセッサ50−212は、プロセッサ・バス50−202においてこのブロックにアクセスすることはできない。
第3の例においては、ブロック=7、DSP32K_SWI_ENB=X、DSP64K_MAP_ENB=1、MAP_BLK[2:0]=111である。DSP50−222は、一般的なDSPアドレス範囲である0x0001_0000から0x0001_FFFFの範囲においてブロックにアクセスする。プロセッサ50−212は、0x6001_0000から0x6001_7FFFのマッピングされたDSPブリッジ・アドレスにおいてブロックにアクセスする。プロセッサ50−212は、プロセッサ・バス50−202においてこのブロックにアクセスしない。DSP50−222がその一般的なDSPバス・アドレス範囲においてこのブロックにアクセスしようとすると、適切なDSP読み出しまたは書き込み割り込みが発生する。
一実施形態のGPSシステムは、動的なメモリの割当てと共有のためのシステムおよび方法を含むが、これに限定はされない。実施態様は、サイズが変化し、特定のサブシステムによりアクセスされ、特定のタイプのデータを保存する複数の様々な領域に、ランダム・アクセス・メモリ(RAM)を割当てる工程を含む。上記RAMの割当ては、信号処理システムなどのデータ処理システムの動作モードと共に変化する。一旦利用可能なメモリが割当てられると、上記の様々な領域は、種々のモードで同時に動作できる様々なサブシステムにより共有される。
様々な実施態様が、信号処理システム、特には全地球測位システム(GPS)において例示される。実施態様はこのようなシステムに限定されるものではなく、メモリが運用中に多数のサブシステムへ割当てられ、そして再度割当てられねばならない、制限されたリソースであるような、あらゆる電子システムにおいて有用である。実施態様の具体例は、衛星ビークル(SV)から個別のチャネルで受信された無線周波数(RF)信号を処理する信号処理コアを含む。信号処理コアは、GPSシステムが目視可能な衛星に関し、最初にどれだけの量の情報を有するかなど、多数の要因に依存して、いくつかの異なるモードで動作する。利用可能なメモリは、特定の動作モードにおいて最も効率的な利用のため効果的に割当てられる。さらに、利用可能なメモリは、チャネルごとに効果的に割当てられる。チャネルという用語は、ハードウェア・リソースの特定の使用を示すために使用される。チャネルは、1つまたは複数の特定の衛星からの、1つまたは複数の受信信号に対応することができる。様々なチャネルは、種々のモードで同時に使用するため、利用可能なメモリに割当てられる。本明細書で使用されるチャネルという用語は、信号処理システムによって処理される任意の離散的信号または離散的信号を提供するデータ・ストリームを示すこともある。
説明される実施態様は、連続的に複数のチャネルを受信し、時分割ベースで信号処理部において複数のチャネルを処理し、そして複数の動作モードの1つに対し信号処理部を構成する工程(様々なタイプのデータを保存するため、メモリを複数の領域に割当てる工程を含む)を含む複数のチャネルの信号処理方法を含む。特定のメモリ領域は、特定の信号処理サブシステムにより特定の様式でアクセスされ、信号処理部は様々なチャネルに対し、種々のモードで同時に動作するように構成される。信号処理部は、信号処理部の出力の評価に基づき連続的に再構成される。メモリは、データ・ワードがソフトウェアにより保存されるチャネル領域を含むようにさらに割当てられる。ソフトウェアは、制御プロセッサにより実行される。制御プロセッサとソフトウェアはどこにでも存在することができる。データ・ワードは、メモリを含む信号処理サブシステムを構成するのに必要な情報のすべてを含む。データ・ワードは、例えば、特定のサブシステムがメモリ領域のどこにアクセスしたかを示すアドレス・ポインタを保存し、ステータス情報を保存することにより、様々なサブシステムにより読み出され、様々なサブシステムにより更新される。
このようにして、メモリの交換とメモリの共有が生じるであろう。メモリの交換が、メモリのひとかたまりのブロックを用いるコア・プロセスと、そのブロックの様々なバッファ・サイズへの分割を有効化する。その様々なブロックは、動作モードに基づいてメモリの内部で再配置することもできる。コア・プロセスの外部で、メモリへのアクセスの仕方を制御する規則が設定されるであろう。プロセッサあるいはコントローラは、メモリへアクセスし、メモリを構成するために、高い優先順位を有するであろう。メモリ・ブロックは分離することができ、メモリ管理処理は別のブロックを制限することができる。
図67は、信号処理システム67−102を含むシステム67−100の一実施態様のブロック線図である。信号処理システム67−102は、無線周波数(RF)部とデジタル信号処理部を含む。一実施態様では、RF部67−103はGPS衛星または衛星ビークル(SV)からのRF信号を受信する。RF信号はデジタル化され、デジタル信号処理部67−101に伝送される。一実施態様では、RF部67−103とデジタル信号処理部67−101は、シリアル周辺インターフェース(SPI)を介して通信する。デジタル信号処理部67−101は、以下にさらに説明するようにRF信号を処理し、処理されたデータを、OEMバス67−104を介し外部OEMプロセッサ67−105に伝送する。デジタル信号処理部67−101は、OEMメモリ67−107とも通信する。以下にさらに説明するように、デジタル信号処理部67−101は、信号処理機能用のメモリを含む。本発明の実施態様は、デジタル信号処理部67−101上のメモリとOEMメモリ67−107を含む、限られた量のメモリを有するシステムにおいて特に好適である。通常、メモリはシステムにおいて限られているが、このことは携帯型または移動可能型デバイス内のシステムに特にあてはまる。
場合によっては、OEMメモリ67−107はデジタル信号処理部67−101によりアクセスされる必要はない。他の可能な配置としては、信号処理機能を実行するために必要なメモリと処理能力のすべてを含む1つの部品、またはチップ上にRF部67−103機能とデジタル信号処理部67−101機能のすべてが配置されたものを含む。システム67−100は、GPS支援情報無しで有効に動作する能力をもつか、あるいは、多種多様なソースからのGPS支援情報により動作することができる。
図68はデジタル信号処理部67−101の一実施態様のサブシステムを示すブロック線図であり、入力サンプル・サブシステム(SS1)68−211、信号処理サブシステム(SS2)68−213、高速フーリエ変換(FFT)サブシステム(SS3)68−215を含む。デジタル信号処理部67−101はメモリ・サブシステム68−201をさらに含み、以下にさらに説明されるように、一実施態様では様々なサブシステム間で動的に割当てられ、共有されるランダム・アクセス・メモリ(RAM)を含む。メモリ・サブシステム68−201は、単独のメモリ部品または装置でもよく、または複数のメモリ部品でもよい。メモリ・サブシステム68−201は、入力サンプルRAM68−203、コヒーレント・データRAM68−205、バックエンド保存RAM68−209、およびチャネルRAM68−207を含む。メモリ・サブシステム68−201は、入力サンプルRAM68−203、コヒーレントRAM68−205、チャネルRAM68−207、およびバックエンド保存RAM68−209のそれぞれが様々な動作モードでサイズが変化するように、動的に割当てられる。さらに、入力サンプルRAM68−203、コヒーレントRAM68−205、およびバックエンド保存RAM68−209はそれぞれ、様々なモードで様々なチャネルによりアクセスされ、様々なサブシステム間で同時に共有される。
入力サンプルRAM68−203は、FIFO1制御構造またはFIFO1 68−221と呼ばれる制御構造68−221により制御される。コヒーレントRAM68−205は、同様に、FIFO2制御構造またはFIFO2 68−223と呼ばれる制御構造68−223により制御される。以下にさらに説明されるように、FIFO1 68−221は、入力サンプルRAM68−203へのアクセスを制御し、FIFO2 68−223はコヒーレントRAM68−205へのアクセスを制御する。本明細書に用いられるように、用語「FIFO」は、ある実施態様においては、入力サンプルRAM68−203およびコヒーレントRAM68−205へのアクセスのファーストイン・ファーストアウトの性質を意味する。他の実施態様では、上記制御構造および入力サンプルRAMへのアクセスは、例えば、ラストイン・ファーストアウトを含む他の特徴を有することができる。図68では、FIFO1 68−221は入力サンプルRAM68−203に連結して示され、FIFO2 68−223はコヒーレントRAM68−205に連結して示される。通常は、FIFO1 68−221およびFIFO2 68−223はそれぞれのRAM領域に連結されないが、図68では例示のためにそのように示される。
デジタル信号処理部67−101は、デジタル信号処理部67−101における信号処理動作の順序付けを制御するシーケンサ68−217をさらに含む。シーケンサ68−217は個別部品として示されるが、他の部品に連結させることができる。例えば、以下に説明する実施態様では、シーケンサ68−217の機能の一部は信号処理サブシステム68−213上に、一部はFFTサブシステム68−215上に存在する。以下SW68−219と呼ばれるソフトウェア部68−219は、シーケンサ68−217を制御し、したがって、ワードをチャネルRAM68−207に保存することによりデジタル信号処理部67−101において信号処理動作を制御する。一実施態様では、SW68−219は、外部OEMプロセッサ67−105および/またはOEMメモリ67−107上にあるが、これは要件ではない。
デジタル信号処理部67−101は、デジタル化されたRFデータ・サンプルをRF部67−103から受信する。データ・サンプルは、SVからのデータ・ストリームのサンプルであり、それぞれは固有の擬似ランダム・ノイズ(PRN)符号を既知の様式で伝送する。概して言えば、デジタル信号処理部67−101はデータ・サンプルを処理し、どの衛星がそれを伝送したかを判断し、また上記サンプルからエフェメリスおよびアルマナックなどの情報を抽出する。当該技術分野で周知のように、4つのSVの絶対位置と、それらの受信機からの相対的な距離が受信機により認識されると、受信機の位置を知ることができる。デジタル信号処理部67−101は、現在の位置情報がどれだけ認識されているかによって、4つのモードの1つでデータ・サンプルを処理する。
入力サンプル・サブシステム68−211は、送信側によって決定される速度で入力RFデータ・サンプルを受信する。入力サンプル・サブシステム68−211は、FIFO1の制御下で、デジタル信号処理部67−101の動作モードに応じた様式でデータ・サンプルを入力サンプルRAM68−203内に保存する。入力サンプルRAM68−203のサイズもデジタル信号処理部67−101の動作モードにより決定される。信号処理サブシステム68−213は、FIFO1の制御下で、RAM68−203から演算すべきRF入力サンプルを取り込む。RF信号サンプルに行われる演算は、信号処理モードに応じて変更することができる。例えば、信号処理サブシステム68−213は、信号サンプルにデシメーション演算を行ってもよいし、行わなくてもよい。信号処理サブシステム68−213は、一実施態様では、整合フィルタを使用することにより、コヒーレントRAM68−205内にあるデータ・サンプルをコヒーレントに累算する。コヒーレントな累算は、指定の期間の間、I(同位相)およびQ(直交位相)のデータを有効に累算する。コヒーレントに累算されたデータ・サンプルは、FFT処理のためにFFTサブシステム68−215によりコヒーレントRAM68−205から取り込まれる。コヒーレントRAM68−205のサイズもデジタル信号処理部67−101の動作モードにより決定される。
1つの状況では、受信機の位置についての情報はほとんど知られていないか、全く知られていない。この状況では、どのSVが受信機にとって目視可能かについての情報はほとんどないか全く無く、利用できる時間情報は不正確である。この状況では、デジタル信号処理部67−101は、「コールド・スタート」モードでデータ・サンプルを処理する。コールド・スタート・モードでは、できるだけ多くのデータができるだけ速く低感度または低分解能で処理される。これはSV信号の探索空間が非常に大きく、最初の捕捉段階に焦点を合わせる現行データが存在しないからである。コールド・スタート・モードでは、コヒーレントな累算は発生せず、データ・サンプルは、信号処理サブシステム68−213から経路68−222を介してFFTサブシステム68−215へ直接に送信される。
コールド・スタート・モード以外のモードでは、FFTサブシステム68−215はコヒーレントRAMから一定数のデータ・サンプルを取り込み、FFT演算を行う。コールド・スタート・モードでは、FFTサブシステム68−215は、SS2 68−213から直接来るコヒーレント・データ・サンプルに演算を行う。SS3 68−215は、個々の処理モードによって規定される数の周波数を作成する。例として、8サンプル、16ポイントFFTでは、FFTは16の周波数を作成する。16の周波数すべてが対象であるわけではない。例えば、外側の周波数は有用ではないかもしれない。周波数の数はプログラム可能である。所望の周波数が選択され、よりコンパクトな形式で詰め込まれ、非コヒーレント・データ、すなわちIとQのデータから導き出される振幅を累算するバックエンド保存RAM68−209の非コヒーレント加算(NCS)領域内に保存される。以下にさらに説明するように、バックエンド保存RAM68−209は、ピーク値またはピークを保存するためにも使用される。一実施態様では、8つの最大の値だけでなく、それらがデータ・ストリーム内のどこで発生したかに関する情報(例えば、どんな符号オフセットで、そしてどんな周波数オフセットで)も保存される。トラック履歴(TH)情報は選択されたコヒーレント・データであり、SW68−219による検査のために保存される。一実施態様では、TH情報はギャザー(gather)モジュール(図示せず)の出力である。ギャザー・モジュールはFFTサブシステム68−215の周波数出力の中から選択して、不要な周波数を廃棄する。ギャザー・モジュールはデータをコヒーレント形式で維持する。SW68−219は、TH情報を検査することにより信号処理部67−101の構成に関する決定を行うことができる。バックエンド保存RAM68−209のサイズも、信号処理部67−101の動作モードにより決定される。
ここでは、T1、PDI、およびコンテキストを含む様々な用語を、処理エポックを説明するために使用する。T1は、チャネル用のコヒーレント累算器におけるコヒーレント累算に対し規定されたミリ秒単位の時間間隔である。T1の長さはプログラム可能であり、動作モードにより変化する。例えば、いくつかのモードでは、より微弱な信号を探すために、比較的長い期間の間、累算することが望ましい。したがって、信号処理サブシステム68−213はT1を基準としてコヒーレントに累算する。
PDIはプログラム可能なT1の数である。FFTサブシステム68−215内に一度に供給されるT1の数がPDIである。PDIにおけるT1の数は、FFTサブシステム68−215が、特定のモードにおいてデータを処理するために、どのように構成されるかにより決定される。上述のように、信号処理サブシステム68−213は、T1を基準としてコヒーレントに累算する。しかしながら、FFTサブシステム68−215は、PDIを基準としてデータに演算を行う。したがって、FFTサブシステム68−215は完全なPDIが利用可能になると、コヒーレントRAM68−205からデータを取り出せばよい。例えば、FFTサブシステム68−215が5サンプル、16ポイント、ゼロ詰めのFFTとして構成される場合、FFTサブシステム68−215は、コヒーレントRAM68−205からデータを取り出し始める前に、5つのサンプル、または5つのT1が完了してコヒーレントRAM68−205内に保存されるのを待つ。
様々なサブシステムの使用は、様々なチャネル間で時分割される。ここでコンテキストという用語は、特定のチャネルを処理する特定のサブシステムの使用を表現するのに用いられる。例えば、特定のチャネルに関し、チャネルが信号処理サブシステム68−213に入るとコンテキストは始まり、そのチャネルが信号処理サブシステム68−213を出ると当該コンテキストは終了する。これは、信号処理サブシステム68−213がプログラムされたミリ秒数の間動作し、入力サンプルRAM68−203からのデータを使用し、そしてその後停止してコンテキストが終了することを意味する。チャネルは、FFTサブシステム68−215に関しても同様なコンテキストを有する。
上述のように、SW68−219は、信号処理部67−101の演算を制御するチャネルRAM68−207にワードを保存する。保存されたワードがチャネル・レコードを構成する。一実施態様では、チャネル・レコードは、様々なタイプのデータを含む128本のラインのそれぞれであるが、基本的には信号処理部が使用するチャネル固有のデータのすべてを含む。チャネル・レコードは、当該特定チャネルに関するSW68−219からのプログラミング情報、ロード形式の情報、サイズ・パラメータと、入力サンプルRAM68−203、コヒーレントRAM68−205、バックエンド保存RAM68−209ならびにRAM68−201のその他の領域のサイズ割当てを含む。チャネル・レコードは、単一チャネルに関する符号位相、搬送波位相、搬送周波数、加速度、および他の処理パラメータすべてを含む。チャネルRAM68−207はまた、チャネルについての「スクラッチ・パッド」情報を記憶するスクラッチ・パッド領域を含む。スクラッチ・バッド・データはスクラッチ・バッド領域の任意の利用可能な部分に1つのチャネルによって書き込まれ、その後に別のチャネル(同一チャネルのこともある)がそのスクラッチ・パッド領域へ書き込むときに上書きされる。スクラッチ・パッド情報は、一つのコンテキストから次のコンテキストへのチャネルのカウンタを含む。信号処理サブシステム68−213およびFFTサブシステム68−215の使用は、異なるチャネル間で時分割されるので、それぞれのチャネルはその状態を保存しなければならない。
チャネルRAM68−207は、SW68−219により初期化されるが、その後、信号処理サブシステム68−213、FFTサブシステム68−215、そして時にはSW68−219により更新される。例えば、チャネルRAM68−207内には、信号処理サブシステム68−213、FFTサブシステム68−215、SW68−219間の通信のために用いられるセマフォ・ワードが存在する。セマフォ・ワードは、信号処理サブシステム68−213、FFTサブシステム68−215、SW68−219間の通信を同期させるためのメカニズムであって、準非同期で動作する。
チャネル・レコードは、本質的には、入力サンプルRAM68−203、コヒーレントRAM68−205、およびバックエンド保存RAM68−209を含む様々なRAM内の場所に対するポインタを含むリンクされたリストである。したがって、チャネル・レコードは、コンテキストに対して動的に割当てられたRAM68−201の構成を保存する。チャネル・レコードの最初のエントリは、次のチャネル・レコードに対するポインタである。コンテキストが始まると、動作モードとコンテキストに対するRAM割当てを決定するために、チャネルRAMがアクセスされる。コンテキストが間もなく終了する際に、更新されたチャネル情報がチャネル・レコード内に保存され、そして現在のチャネル・レコードのエントリにより指示される、次のチャネル・レコードのコンテンツの処理を続ける。チャネル・レコードには、入力データ・サンプルに関する現在のカウントと状態、符号位相情報、および時間調整についても含まれる。
チャネルが初期化されると、信号処理サブシステム68−213のシーケンサ69−313a(図69に示され、以下に説明される)は、チャネルRAM68−207にアクセスし、当該特定チャネルを処理する信号処理サブシステム68−213に必要なチャネル・パラメータを引き出す。シーケンサ69−313aもまた、当該チャネルを処理するために必要とされるパラメータにより、整合フィルタやコヒーレント累算器のような信号処理サブシステム68−213の様々な信号処理要素(図示せず)をプログラムする。上記パラメータは、例えば、整合フィルタが処理を行う間のミリ秒数を決定する。整合フィルタが処理を終了すると、整合フィルタはシーケンサ69−313aに処理が終了したことを信号伝達し、そしてシーケンサ69−313aは次のチャネルに移る。
チャネルRAM68−207は、次のチャネルに対するチャネルRAMの場所などを保存するリンクされたリストを含む。
FFTサブシステム68−215もまた、チャネルRAMにアクセスし、データの処理方法を決定するシーケンサ69−315a(図69に示され、以下に説明される)を含む。FIFO2 68−223は、FFTサブシステム68−215と信号処理サブシステム68−213の両方に対し、コヒーレントRAM68−205へのアクセスを制御する。例えば、FIFO2 68−223は、FFTサブシステム68−215に、演算するデータがコヒーレントRAM68−205内に存在する際に、そのことを知らせる。FIFO2 68−223はまた、信号処理サブシステム68−213に、FFTサブシステム68−215がまだ使用していないデータが上書きされようとしている際に、そのことを知らせる。
図69は、アービトレーション・ユニット69−327を含む付加的な要素を示す信号処理部67−101の一実施態様のブロック線図である。入力サンプル・サブシステム69−311と信号処理システム69−313は、FIFO1 69−321の制御下でメモリ・サブシステムまたはRAM69−301にアクセスする。一実施態様では、信号処理サブシステム69−313のシーケンサ機能は、SS2シーケンサ69−313aとして信号処理サブシステム69−313と連結される。シーケンサ69−313aの1つの機能は、RAM69−301のチャネルRAM領域にアクセスし、チャネル・パラメータを読み出すとともに、更新されたチャネル・パラメータを、RAM69−301のチャネルRAM領域へ書き込むことである。
信号処理サブシステム69−313とFFTサブシステム69−315は、FIFO2 69−323の制御下でRAM69−301にアクセスする。一実施態様では、FFTサブシステム69−315のシーケンサ機能は、SS3シーケンサ69−315aとしてFFTサブシステム69−315と連結される。FIFO1 69−321、SS2シーケンサ69−313a、FIFO2 69−323、およびSS3シーケンサ69−315aは、RAM69−301にアクセスするためにアービトレーション・ユニット69−327と通信する。
SW69−319のRAM69−301へのアクセスのために、アービトレーション・ユニット69−327は、中央処理装置(CPU)ブリッジ69−325を介してSW69−319とさらに通信する。
入力サンプル・サブシステム69−311は、RAM69−301へのアクセス要求をFIFO1 69−321を介して送信し、そしてアービトレーション・ユニット69−327から許可信号を受信する。許可信号が入力サンプル・サブシステム69−311により受信された後、入力サンプル・サブシステムは、入力サンプル・データをどこに保存するかを示すアドレスをFIFO1 69−321へ送信し、入力サンプル・データをRAM69−301内に保存する。
信号処理サブシステム69−313が、入力データ・サンプルを処理することを求める場合、RAM69−301の入力サンプル領域へのアクセス要求をFIFO1 69−321を介し送信し、アービトレーション・ユニット69−327から許可信号を受信する。許可信号が信号処理サブシステム69−313により受信された後、信号処理サブシステム69−313は、RAM69−301からデータ・サンプルを受信する。信号処理サブシステム69−313が、処理済みのコヒーレント・データをRAM69−301のコヒーレントRAM領域に保存することを求める場合、要求信号をFIFO2 69−323を介しアービトレーション・ユニット69−327へ送信する。チャネル・レコードから、シーケンサ69−313aは、コヒーレント・データを保存すべき適切なアドレスを決定する。信号処理サブシステム69−313は、アービトレーション・ユニット69−327から許可信号を受信し、そして保存アドレスが、信号処理システムによりRAM69−301へ送信される。保存されるコヒーレント・データも同様である。
FFTサブシステム69−315が、コヒーレント・データを処理することを求める場合、RAM69−301のコヒーレント・データ領域へのアクセス要求を、アービトレーション・ユニット69−327へFIFO2 69−323を介して送信する。要求が許可されると、アドレス(これもチャネル・レコードから分かる)はRAM69−301のコヒーレント・データ領域へ送信され、コヒーレント・データはFFTサブシステム69−315へ読み出される。
チャネルRAM領域内に信号処理部67−101の演算を指令するレコードを書くために、SW69−319はアービトレーション・ユニット69−327を介しRAM69−301へのアクセスを要求する。サブシステムの状態を示すとともに、チャネルRAM内のチャネル・レコードを介して信号処理部67−101で進行中のプログラミングに対する基準情報を提供するTHデータ、レポート・データ、エラー・データのようなデータを読み出すため、SW69−319は、アービトレーション・ユニット69−327を介しRAM69−301へのアクセスをさらに要求する。
図70は、一実施態様におけるアービトレーション・ユニット70−427を示すとともに、RAM70−401にアクセスする、様々なエンティティへの優先順位割当てを例示するブロック線図である。CPUブリッジ70−425を介し、RAM70−401へアクセスするOEMプロセッサ70−405は、最も高い優先順位、すなわち優先順位0を有する。これら優先順位は、より小さい数がより高い優先順位を示すように任意に指定されているが、他の指定も可能である。入力サンプル・サブシステム70−411は、次に高い優先順位1を有する。入力サンプル・サブシステム70−411は、RFデータ・ストリームをそれ自身の制御下にない速度で受信するので、入力サンプル・サブシステム70−411は、自身の処理速度を制御する他のサブシステムに比し低い能力を有し、したがってRAM70−401へのアクセスに対する高い優先順位を割当てられる。
信号処理サブシステム70−413は、シーケンサからのアクセス要求に対し優先順位2を、RAM70−401の入力サンプル領域からFIFOI 70−421を介し入力データ・サンプルを読み出すためのアクセス要求に対し優先順位5を、FIFO2 70−423を介しRAM70−401のコヒーレント・データ領域へコヒーレント・データを書き込むためのアクセス要求に対し優先順位6を割当てる。
FFTサブシステム70−415は、シーケンサからのアクセス要求に対して優先順位3を、RAM70−401のコヒーレント・データ領域からFIFO2 70−423を介しコヒーレント・データを読み出すためのアクセス要求に対して優先順位4を、RAM70−401のNCS領域へNCS、TH、レポート・データを書き込むことに対して優先順位7を割当てる。
図71は、入力サンプルRAM68−203へのアクセスを制御する際に発生するシグナリングのいくつかを示すFIFO1 71−521のブロック線図である。図71の左側を参照し、また図68を参照すると、入力サンプル・サブシステム68−211は、入力データ・サンプルを保存するために、RAM68−201の入力サンプルRAM領域68−203へのアクセスを要求する。信号処理サブシステム68−213は、入力データ・サンプルを読み出すために、RAM68−201の入力サンプルRAM領域68−203へのアクセスを要求する。
入力サンプル・サブシステム68−211は、FIFO1 71−521へSS1入力サンプル要求信号を送信し、入力データ・サンプルを書き込むことを要求する。FIFO1 71−521は、上記要求の受信を確認応答信号により承認する。入力サンプル・サブシステム68−211は、FIFO1 71−521へラップ・カウント71−501と開始ブロック番号71−503を送信する。循環バッファ・モード(信号処理部のコールド・スタート・モードを除く動作モードにおいて適用できる)では、入力サンプルRAM68−203は一杯になるまで書き込まれ、その後上書きされる。一実施態様では、入力サンプルRAM68−203は最下部から最上部まで埋められる。入力サンプルRAM68−203が一杯になると、上書きが最下部で始まる。入力サンプルRAM68−203が一杯になって上書きが始まるごとに、ラップ・カウント71−501はインクリメントする。開始ブロック番号71−503は、入力データ・サンプルのブロックの開始点を示す。開始ブロック番号71−503は入力サンプル・サブシステム68−211からのロード信号(SS1 Load)により変更される。ロード信号は書き込み動作を開始させる。ブロックが書き込まれると、FIFO1はインクリメント信号によりブロック・カウント71−503をインクリメントする。入力サンプル・サブシステム68−211からの書き込みラインは、ブロック内では7ビット・ラインであり、FIFO1への書き込み中はFIFO1へ書き込まれる。
図71の右側を参照し、また図68を参照すると、信号処理サブシステム68−213は、SS2信号処理要求信号により入力サンプルRAM68−203内のデータ・サンプルへのアクセスを要求する。FIFO1 71−521は、確認応答信号により上記要求を承認する。信号処理サブシステム68−213は、FIFOI 71−521へラップ・カウント71−505、開始ブロック・カウント71−506、ライン番号71−507を送信する。
循環バッファ・モード(信号処理部のコールド・スタート・モードを除く動作モードにおいて適用できる)では、入力サンプルRAM68−203は一杯になるまで書き込まれ、その後上書きされる。入力サンプルRAM68−203が一杯になり、上書きが始まるごとに、ラップ・カウント71−505はインクリメントする。開始ブロック番号71−506は、入力データ・サンプルのブロックの開始点を示す。開始ブロック番号71−506は信号処理サブシステム68−213からのロード信号(SS2 Load)により修正される。SS2ロード信号は読み出し動作を開始させる。
FIFO1 71−521はまた、オーバーフロー信号とアンダーフロー信号をシーケンサ68−217へ送信する。信号処理サブシステム68−213が、まだ書き込まれていない場所からデータを読み出そうとすると、アンダーフローが発生する。アンダーフローが発生すると、信号処理サブシステム68−213は待つかまたは休止しなければならない。循環書き込みモードの場合は、書き込みポインタが入力サンプルRAM68−203の最上部に達し、最下部へ戻り上書きを始めるが、信号処理サブシステム68−213がまもなく上書きされるかまたは既に上書きされたデータをまだ読み出していない場合に、オーバーフローが発生する。入力サンプル・サブシステム68−211により受信されるデータのストリーミング的性質のため、オーバーフロー状態は検知できるが回避できない。一実施態様では、オーバーフローがチャネルの処理中に発生すると、「有効な」データが再び利用可能になるまで「ごみ」すなわち無効データが処理される。チャネルが初期化中であって、しかもオーバーフローが発生すると、エラー信号がSW68−219へ送信され、チャネルはシャットダウンされ、そしてSW68−219が続行方法を決定する。
FIFO1 71−521の最上部を参照すると、FIFO1は要求信号71−540、アドレス(Addr)信号71−542、および確認応答信号71−544を用いることによりRAM68−201と通信する。
図72、73、74および75は、実施態様の様々な動作モードに対するメモリ割当てを含む信号処理部67−101の構成を例示するブロック線図である。例示された動作モードはコールド・スタート・モード、粗捕捉モード、ホット・スタート・モード及びトラッキング・モードを含む。
コールド・スタート・モードは、自身の位置に関し、信号処理部67−101が利用可能な情報がほとんど無いか全く無い場合に、適用可能である。例えば、GPS衛星を最後に捕捉した位置から、はるか離れたところまで運ばれた携帯用装置内に信号処理部67−101が組み付けられていると、信号処理部67−101はどの衛星が目視可能か分からなくなるであろう。したがって、衛星に対し、非常に広範な低感度の探索が実行されるので大量のデータの処理が必要となる。
粗捕捉モードは、信号処理部67−101の位置に関しいくらかの情報が知られている場合に適切である。通常は、目視可能な衛星の少なくともいくつかについての識別情報が知られている。
ホット・スタート・モードは、信号処理部67−101がその位置に関し、非常に有効ないくらかの情報を有する場合、適切である。例えば、当該の信号処理部が前日にナビゲートしていた場合、半径約100マイル内に位置決めされることがある。あるいは外部ソースがエフェメリス・データと衛星時刻を提供することもある。
トラッキング・モードは、信号処理部67−101がその位置について優れた情報を有し、既に捕捉した衛星を追跡(track)している場合、トラッキング・モードが適切である。トラッキング・モードでは、信号処理部67−101機能の大半を停止することができるので、より少ない電力を消費する。
図72を参照すると、コールド・スタート・モードにおけるメモリ割当てを含む信号処理部67−101の構成が例示されている。コールド・スタート・モードでは、コヒーレントRAM領域はない。利用可能なRAM領域は、スナップショットとして用いられる比較的大きな入力サンプル・バッファ72−603、すなわちワン・ショット(one-shot)入力サンプルRAMを含む。一実施態様では、入力サンプルRAM72−603のサイズはおよそ100Kバイトである。上述のように、入力サンプルRAM72−603はワン・ショット様式で用いられる。以下に説明するように、入力サンプルRAM72−603が一杯になった後、RF入力はもはや受信されず、様々なサブシステムが、入力サンプルRAM72−603内のデータの演算を複数回行う。これにより、入力サンプルRAM72−603が一杯になった後はRF受信機を停止することができ、消費電力が低減される。
入力サンプル・サブシステム72−611は、FIFO1 72−621の制御下で入力サンプルRAM72−603へ入力データ・サンプルを書き込む。信号処理サブシステム72−613は、FIFO1 72−621の制御下で入力サンプルRAM72−603から入力データ・サンプルを読み出す。信号処理サブシステム72−613は入力データ・サンプルを処理し、それらをコヒーレント・データとしてFFTサブシステム72−615へ直接、伝送する。
SV1と呼ぶ特定の衛星に対し、入力サンプルRAM72−603内に保存されたデータは、可能な全発振器範囲とドップラー範囲だけでなく、SV1が有するであろうあらゆる周波数に対して再処理または再生される。入力サンプルRAM72−603内の入力サンプル・データは、各衛星に対し20回ほどは再生することができる。その後、データは、非コヒーレントな加算データを保存したバックエンド保存RAM72−609に渡される。バックエンド保存RAM72−609は、NCSデータ「スクラッチ」領域とピーク領域とを含む。スクラッチ領域は非コヒーレント・データを循環的に保存しており、コールド・スタート・モードではない他のモードで動作するチャネルと共有できる。各衛星の最大の8ピークがピーク領域内に保存される。一実施態様のバックエンド保存RAM72−609は、スクラッチNCS領域用のおよそ8Kバイトと、約50のピークを保存するピーク領域用のおよそ2.4Kバイトとを含む。チャネルが完了すると、SW68−219はピーク・リストをくまなく調べ、どのピークが信号を表す可能性があるかを判断し、これらのみを検証するために選択する。拒絶されたピークにより解放されたピーク空間は、新しいピークで埋められる。
一例として、コールド・スタート・モードに対する信号処理部67−101の構成はおおよそ以下の値のパラメータ、すなわち1ミリ秒のPDI、実行処理当たり4kHzの周波数有効範囲、および28dbHzの感度(すなわち分解能)を含んでいる。
図73は、粗捕捉モードにおける、メモリ割当てを含む信号処理部67−101の構成のブロック線図である。粗捕捉モードでは、バックエンド保存RAM73−709にメモリの最大部分が割当てられており、入力サンプルRAM73−703は比較的小さい。例えば、一実施態様では、入力サンプルRAM73−703のサイズはおよそ10Kである。入力サンプルRAM73−703は短い循環バッファとして用いられる。コヒーレント・データ・サンプルを保存するコヒーレント・サンプルRAM73−705はスクラッチ・バッファして用いられる。
入力サンプル・サブシステム73−711は、入力データ・サンプルを受信し、それらを入力サンプルRAM73−703に保存する。粗捕捉モードでは、1つまたは2つの目視可能な衛星が通常は認識されている。したがって、これら既知の衛星を同時に探索することができる。信号処理サブシステム73−713は、入力サンプル・データを処理し、そしてコヒーレント・サンプルRAM73−705を1周波数/衛星の組合せを表わす7ミリ秒のデータで埋める。FFTサブシステム73−715は、コヒーレント・サンプルRAM73−705内に保存されたコヒーレント・データに演算を行い、結果として生じたNCSデータをバックエンド保存RAM73−709に保存する。NCSデータに関連するピークもバックエンド保存RAM73−709に保存される。このモードでは、バックエンド保存RAM73−709はチャネル間で共有されるが、様々な領域内の「専用NCS」メモリは、様々なチャネルからのNCSデータ専用となる。NCS1データはチャネル1用であり、NCS2データはチャネル2用であり、以下同様である。
粗捕捉モードでは、OEMプロセッサが演算されるNCSデータをより多く有すると、性能が改善されるので、できるだけ多くのメモリがバックエンド保存RAM73−709に充てられる。一例として、コールド・スタート・モードに対する信号処理部67−101の構成は、おおよそ以下の値のパラメータ、すなわち7ミリ秒のPDI、実行処理当たり750Hzの周波数有効範囲、および20dbHzの感度を含んでいる。粗捕捉モードでは、入力サンプルRAM73−703はPDIより大きく、コヒーレントRAM73−705はPDIより大きい。本明細書では、PDIより大きいこと、または小さいことは、割当てられたメモリ空間が、PDIの期間内に処理できるデータ量を越えて保存すること、またはそれ未満で保存することを意味する。
図74は、ホット・スタート・モードにおけるメモリ割当てを含む信号処理部67−101の構成のブロック線図である。ホット・スタート・モードでは、完全な符号位相探索は必要とされない。位置は、コールド・スタート・モードや粗捕捉モードの場合よりはるかに認識されている。例えば、時刻の不確実性はおよそ1マイクロ秒である。位置の不確実性はセルラー・ネットワークにおけるセル・サイトの半径であろう。ある支援情報が、初期の位置不確実性を狭めるために利用できることもある。
ホット・スタート・モードでは、入力サンプルRAM74−803は比較的短い循環バッファである。例えば、入力サンプルRAM74−803は5K〜20Kのメモリである。ホット・スタート・モードでは、入力サンプル・サブシステム74−811は入力データ・サンプルを受信し、それらを循環バッファ様式で入力サンプルRAMに保存する。信号処理サブシステム74−813は入力サンプル・データを処理し、それをコヒーレントRAM74−805に保存する。このモードでは、コヒーレントRAM74−805は個々の衛星用の小さな専用領域を多数含む。さらに、コヒーレントRAM74−805は、ホット・スタート・モード以外のモードでは、様々なチャネルにより同時に用いることができるスクラッチ・パッド、すなわちスクラッチ部分を含む。既に説明したように、スクラッチ・パッド・データは、スクラッチ・パッド領域の使用可能な任意の部分に1チャネル毎に書き込まれ、その後、別のチャネル(同じチャネルでもよい)が上記スクラッチ・パッド領域に書き込む際に上書きされる。その一方、専用領域は1つのSVに関連するデータだけを書き込むか、または上書きすることができる。
個々の衛星に対し、コヒーレントRAM74−805内の領域を専用化することにより、より小さな入力サンプル・バッファ74−803を可能にするとともに、比較的大きなPDIをさらに実行する能力を可能にする。このモードでは、入力サンプルRAM74−803はPDIより小さくてもよい。FFTサブシステム74−815は、コヒーレントRAM74−805からのコヒーレント・データを処理し、専用の様式でバックエンド保存RAM74−809に保存されたNCSデータを出力する。すなわち、バックエンド保存RAM74−809は、個々の衛星に対する専用領域であるNCS1、NCS2などに分割される。バックエンド保存RAM74−809はまた、専用ではなく、他のモードの他のチャネルにより同時に使用することができるスクラッチ部を含む。バックエンド保存RAM74−809はまた、SVごとにピークを保存する専用ピーク部を含む。一例として、コールド・スタート・モードに対する信号処理部67−101の構成は、おおよそ以下の値のパラメータ、すなわち10ミリまたは20ミリ秒のPDI、実行処理当たりの750Hzの周波数有効範囲、および15〜12dbHzの感度を含んでいる。
図75は、トラッキング・モードにおけるメモリ割当てを含む信号処理部67−101の構成のブロック線図である。トラッキング・モードでは、信号処理部67−101は、それ自身の位置に関し優れた情報を有しており、既に捕捉している衛星を追跡する。トラッキング・モードでは、信号処理部67−101機能の大半は停止することができ、従ってより少ない電力を消費する。
トラッキング・モードでは、入力サンプルRAM75−903は比較的小さい。例えば、一実施態様では、入力サンプルRAM75−903はおよそ20Kのメモリである。入力サンプルRAM75−903はPDIより小さく、例えば約5ミリ秒である。入力サンプル・サブシステム75−911は、入力データ・サンプルを入力サンプルRAM75−903に循環バッファ様式で保存する。信号処理サブシステム75−913は、入力サンプルRAM75−903からの入力データ・サンプルを処理し、それらをPDIより大きなコヒーレントRAM75−905に保存する。コヒーレントRAM75−905は、様々なモードの様々なチャネル間で同時に共有できるスクラッチ領域と、衛星ごとにコヒーレント・データを保存するための専用領域とを含む。FFTサブシステム75−915は、コヒーレントRAM75−905からのコヒーレント・データを処理し、バックエンド保存RAM75−909にNCSデータを保存する。FFTサブシステム75−915はさらに、必要に応じて追跡の調整の基準として評価し、使用されるデータ(信号上のデータ境界など)を信号処理サブシステム75−913へフィード・バックする。
バックエンド保存RAM75−909は、様々なモードの様々なチャネル間で同時に共有できるスクラッチ領域と、専用のピーク領域と、以下にさらに説明する様々なデータを保存するトラック履歴(TH)領域とを含む。専用のNCS領域は専用の領域に各衛星用のNCSデータを保存し、専用のピーク領域は専用の領域に各衛星用のピークを保存する。
トラッキング・モードは、他のモードでは保存されない追加TH出力データを保存する。このTHデータは様々に利用される。例えば、THは、ハードウェア・トラッキング装置(図示せず)により使用されるコヒーレント・データを含む。ハードウェア・トラッキング装置は、正しい信号が追跡されていることを確認するためにコヒーレント・データを調べる。調整は、必要に応じSW68−219とチャネルRAMを介して行うことができる。トラッキング・モードにおいても、小さな探索窓は、追加のデータをバックエンド保存RAM75−909に選択的に保存することにより開いたままにされる。探索窓は、信号処理サブシステムに間違った信号を追跡させるかもしれない偽物の大きな信号を探すために使用される。探索窓はまた、目視可能な衛星が変化するに従って、新しい目視可能な衛星を見つけるために使用される。
一例として、トラッキング・モードに対する信号処理部67−101の構成は、おおよそ以下の値のパラメータ、すなわち4ミリ、5ミリ、10ミリ、または20ミリ秒のPDI、100Hz〜750Hzの実行処理当たりの周波数有効範囲、および12〜50dbHzの感度を含んでいる。
図76は、どのようにしてデータが入力サンプルRAM76−1003内に保存されるかのいくつかの態様を示すブロック線図である。この線図は、動的に構成可能でかつ割当て可能なRAM68−201の領域が、入力サンプルRAM68−203にどのように割当てられるかを示す。書き込みポインタ76−1020は、入力サンプルRAM76−1003の左側に示され、読み出しポインタ76−1022は、入力サンプルRAM76−1003の右側に示される。透明な(クロスハッチされていない)領域として表わされる入力サンプルRAM76−1003の各ブロックは、入力サンプルRAM68−203に対して使用される実アドレス空間である。参照符号76−1005で表された領域は、潜在的に有効なデータと、ハッチングで示される無効データの部分領域76−1007とを含む。図76では、現在の有効データの領域は参照符号76−1050で示される。領域76−1050は、図示のように書き込みポインタ76−1020と読み出しポインタ76−1022が現在指す領域でもある。オーバーフロー状態とアンダーフロー状態は、読み出しポインタ76−1022の値と、書き込みポインタ76−1020の値とを比較することにより検知される。
各ブロック領域76−1005は、無効なブロック76−1007を有する全アドレス空間を表す。各ブロック領域76−1005は同じアドレスを含む。例えば、ラップ・ポインタがアドレスの最上部に結合されると、それが該線図を上へ進むにつれアドレスは増加し続ける。1つが物理的に最下部ブロック領域76−1005からそのすぐ上のブロック領域76−1005まで進むと、1つがアドレス空間の最下部へ行く。すなわち、同じアドレス空間が繰り返し積み重ねられる。クロスハッチされた無効ブロック領域76−1007は、完全なバイナリ範囲のうちの、バイナリ・アドレス指定のために使用できない部分である。無効なブロック領域76−1007はスキップされる。
入力サンプルRAM76−1003の右側に、有効なデータ領域76−1050と、所与の書き込みポインタ76−1020に対しアンダーフロー状態とオーバーフロー状態が発生するであろう領域とを含む様々な領域が示される。
図77は、コヒーレントRAM77−1105に対するオーバーフロー及びアンダーフローの状態を例示する線図である。図68を参照すると、FFTサブシステム68−215は、コヒーレントRAM68−205のアドレスの全範囲に一度にアクセスする。アドレス範囲が利用できない場合、FFTサブシステム68−215はアンダーフロー状態で停止する。図77の線図は、アドレス範囲へのアクセスを要求されたコヒーレントRAM77−1105におけるアンダーフロー及びオーバーフローの状態を示す。図77の左側にはオーバーフローが例示される。長方形77−1107は、wrap=nとラベルを付けられた領域で現在使用されるFFTサブシステム68−215のアドレス範囲を定義する。コヒーレントRAM77−1105に対する全アドレス範囲は、以前に図76と入力サンプルRAM76−1003を参照して説明したように、積み重ねられて、繰り返される。これは図77のラップ(wrap)番号により表わされる。左側に示されるSS2_topT1ポインタが、FFTサブシステム68−215(SS3)がそこからデータを読み出そうとしている領域に書き込もうとするとオーバーフローに達する。FFTサブシステム68−215(SS3)が読み出そうとする領域にSS2_top1ポインタが達すると、FFTサブシステム68−215は停止される。オーバーフローは、(SS2の最上部アドレス)=(SS3の最下部アドレス)の時発生する。コヒーレントRAMへのアクセスはFIFO2 68−223を介して制御可能なので、FFTサブシステム68−215を停止することができる。実際のRF入力は制御できないので、入力サンプルRAM68−203に対する制御はほとんどできない。
図77の右側はアンダーフロー状態を示す。長方形1109は、wrap=nとラベルを付けられた領域で現在使用されるFFTサブシステム68−215のアドレス範囲を定義する。ss2_bottomは、FFTサブシステム(SS3)68−215が必要とするアドレス範囲の最上部に達していない。必要な範囲はまだ「一杯」となっていない。アンダーフローは、(ss2最下部アドレス)<(ss3最上部アドレス)の時発生する。
図78は、トラッキング・モードのような2経路−高分解能モードにおけるコヒーレントRAM168−205に対するオーバーフロー及びアンダーフローの状態を例示する線図である。2経路モードでは、データはss2_bottomからss2_topまで書き込まれる。その後、該全範囲におけるデータは、最下部に戻り、該範囲の最下部から最上部までデータを再処理することにより再使用される。FFTサブシステム68−215はいくつものブロックのデータを使用し、したがって、全ブロックが使用可能になるのを待ってからデータを読み出して処理することを説明した。2経路モードでは、このことはまた、信号処理サブシステム68−213について当てはまる。2経路モードでは、信号処理システム68−213は、全ブロックまたは全アドレス範囲へのアクセスを、一度に必要とするものとして扱われる。従って、次に、このモードでは、信号処理サブシステム68−213がアクセスしようとする領域の最上部が、FFTサブシステム68−215がデータを読み出そうとする領域の最下部に達するとオーバーフローが発生する。信号処理サブシステム68−213は長方形領域78−1211全体へ書き込む。この書き込み動作は、実質的には蓄積であり、第1のパスで最下位ビット(LSB)が該範囲の最下部から最上部まで書き込まれ、第2のパスで最上位ビット(MSB)が該範囲の最下部から最上部まで加えられる。
図78の右側は、2経路−高分解能モードにおけるアンダーフロー状態を示す。長方形78−1209は、wrap=nとラベルを付けられた領域で現在使用されるFFTサブシステム68−215のアドレス範囲を定義する。長方形78−1213は、wrap=nとラベルを付けられた領域で現在使用される信号処理サブシステム68−213のアドレス範囲を定義する。SS3top_T1がSS2_bottomT1を追い越すと、アンダーフローが発生する。すなわち、FFTサブシステム68−215が、信号処理サブシステム68−213が書き込んでいる場所より上の場所を読み出そうとするとアンダーフローが発生する。
アンダーフローまたはオーバーフローの決定は、信号処理サブシステム68−213とFFTサブシステム68−215のアドレス・ポインタを比較することを含む。信号処理サブシステム68−213とFFTサブシステム68−215へのアクセスは、異なるチャネル間で時分割される。アドレス・ポインタが比較される際は、信号処理サブシステム68−213とFFTサブシステム68−215において単一のチャネルが動作しているかどうかを知る必要がある。信号処理サブシステム68−213とFFTサブシステム68−215の両方が同じチャネルにおいて同時に動作していれば、「ライブ」アドレス・ポインタが比較される。信号処理サブシステム68−213とFFTサブシステム68−215の両方が、同じチャネルにおいて同時に動作していない場合は、(チャネルRAM68−207からの)保存されたポインタが比較される。例えば、図77を参照すると、信号処理サブシステム68−213とFFTサブシステム68−215の両方が同じコヒーレント・バッファ領域でアクティブであれば、保存されたアドレス・ポインタの代わりにライブ・アドレス・ポインタが使用される。
いくつかの実例では、コヒーレントRAM68−205および/またはバックエンド保存RAM68−209が複数のチャネル間で共有される。このことは、複数のコヒーレントRAMと複数のバックエンド保存RAMを効果的に有するものと見なすことができる。これにより、複数のチャネルが、同じメモリ領域内で連続してコヒーレントに累算できる。すなわち、メモリを共有する様々なモードがあり、例えば1つのモードではコヒーレントRAMは、コンテキストの継続期間の間はチャネル専用であり、一方別のモードでは、コヒーレントRAMは様々なチャネル間で共有される(チャネルはコンテキストの期間中、特定のサブシステムを使用する)。しかしながら、信号処理サブシステム68−213とFFTサブシステム68−215が同一の共有コヒーレントRAMにアクセスしようとする場合は、ライブ・アドレス・ポインタが使用される。信号処理サブシステム68−213は、コヒーレントRAMに関するベース・アドレス・ポインタを調べることにより、同じコヒーレントRAM領域が使用されているかどうかを知る。
図79は、複数のチャネル間で共有される単一のコヒーレントRAMの例を例示するブロック線図である。これは、比較的大きなメモリ領域がコヒーレントRAMに割当てられているが、信号処理システムは特にメモリを制限されている場合の、メモリ利用の好適なモードである。図79の例は、円で囲まれた番号1〜3を示すラベルを付けられた3つの異なる時点におけるコヒーレントRAM79−1305を示す。時点1をまず参照すると、コヒーレントRAM79−1305aは最下部から最上部まで書き込まれる。チャネル1用領域とチャネル2用の部分的な領域が示される。信号処理サブシステム68−213(SS2)は、「ss2 書き込む」の矢印により示されるように、チャネル1データをチャネル1領域に書き込む。信号処理サブシステム68−213がそれを書き込んだ後、FFTサブシステム68−215(SS3)はチャネル1の領域からデータを読み出す。信号処理サブシステム68−213がチャネル1データの書き込みを終了すると、チャネル2領域へ移動し、チャネル2データを書き込み始める。参照符号79−1305aにより示される、物理的なコヒーレントRAM領域が一杯になると、信号処理サブシステムは、コヒーレントRAM領域の最下部に移り上書きを始める。これは矢印79−1300により示される。この矢印79−1300は、時点2においてコヒーレントRAM79−1305bの最下部にチャネル2データを書き込み続ける際の信号処理サブシステム68−213の経路を示す。
時点2では、チャネル2データが書き込まれ、信号処理サブシステムは「チャネル3」を示すラベルを付けられた領域内にチャネル3データを書き込み始める。チャネル3データは残りのコヒーレントRAM領域には適合しないので、時点3において信号処理サブシステム68−213はコヒーレントRAM領域の最下部に移り、矢印79−1301により示されるように、以前のチャネル2データに上書きを始める。すでに説明したように、FFTサブシステム68−215が、信号処理サブシステム68−213がまだ書き込んでいないデータを読み出そうとすることにより信号処理サブシステム68−213に追いつくと、FFTサブシステム68−215は停止されるか、またはアンダフローエラー状態が発生する。
一実施態様では、図79に例示されるように共有コヒーレントRAMモードを使用するためには、いくつかの条件が満たされなければならない。例えば、コヒーレントRAMを共有するチャネルは、異なる大きさのPDIを有してもよいが、同じ大きさのT1を有さなければならない。信号処理サブシステム68−213は、コンテキストを出る前に、1つのコンテキストのPDIを完全に書き込まなければならない。共有コヒーレントRAMを使用する各サブシステムは、それ自身の保存されたポインタで開始しなければならない。一実施態様では、ポインタはコヒーレントRAM自身の指定された領域内に保存される。共有コヒーレントRAMを出ると各チャネルはそれ自身の保存されたポインタを更新する。
他の実施態様では、コヒーレントRAM領域はまた、指定の物理メモリ領域をコールド・スタート・モードのバックエンド保存RAMと共有してもよい。これは可能である。というのは、コールド・スタート・モードではバックエンド保存RAMが一杯になってピークがそのデータから決定され、当該データはもう不要になるという意味でバックエンド保存RAMは「使い捨て」RAMであるからである。この場合、コヒーレント・データが使用された後、もしくは処理された後は、指定されたメモリ領域はNCSデータ用に使用されなければならない。この場合、NCSデータはコヒーレントRAM領域に書き込まれるが、コヒーレント・データ・ポインタはNCSの使用により更新されない。FFTサブシステムがそのメモリ領域外のデータを処理する可能性を回避するために、コヒーレント・データとNCSデータ用に指定された共有領域は、2PDI分のデータ未満でなければならない。
図80は、割当てられたコヒーレント・データ・メモリ領域、すなわちコヒーレントRAM内にデータを保存する、様々なモードを例示するブロック線図である。図80の左側で、第1のコヒーレントRAM保存モード0では、コヒーレントRAM80−1405aは、信号処理サブシステム68−213により最下部から最上部まで1度に1つのPDIずつ書き込まれる。コンテキストは任意の時点で完了できる。
コヒーレント保存モード1では、信号処理サブシステム68−213は、コヒーレントRAM80−1405bに、PDIの偶数ハーフチップ(even half−chip)を書き込み、次にPDIの奇数ハーフチップ(odd half−chip)を書き込む。当該コンテキストが終了すると、別のコンテキストからのデータの保存が、偶数ハーフチップとその後の奇数ハーフチップを用いて続けられる。コヒーレントRAM80−1405bの書き込みは最下部から始まり最上部まで続く。
コヒーレント保存モード2では、信号処理サブシステム68−213は、コヒーレントRAM80−1405c内に、1つのコンテキストに対して、複数のPDIの偶数ハーフチップと複数のPDIの奇数ハーフチップとを交互に保存する。次に、信号処理サブシステムは「コンテキスト」ラインから、別のコンテキスト内にデータを保存し続ける。特定のチャネルが信号処理サブシステム68−213を所有するコンテキスト中に、当該コンテキストラインは、データが信号処理サブシステム68−213によりどこに保存されるかを示す。
コヒーレント保存モード3では、信号処理サブシステム68−213は、コヒーレントRAM80−1405d内に、第1の周波数(freq 0)に対する複数のPDIの偶数ハーフチップを、次にfreq 0に対する複数のPDIの奇数ハーフチップを保存する。次に、信号処理サブシステム68−213は、次の周波数(freq 1)に対する複数のPDIの偶数ハーフチップを保存し、次にfreq 1に対する複数のPDIの奇数ハーフチップを保存し、以下同様である。
コヒーレント保存モード4では、信号処理サブシステム68−213はコヒーレントRAM80−1405e内に、T1 0に対するすべてのコヒーレント・データを、次にT1 1に対するすべてのコヒーレント・データを保存する。最後のT1に対するデータが保存されるまで、保存はこのようにして継続される。保存されるT1の数は、ソフトウェアにより予め定義される。コヒーレント保存モード4は、衛星のデータ・ストリームのデータ・ビット端の検出を容易にするために様々な符号オフセットが保存されるビット同期モードで有用である。コンテキストの保存はどこで終了してもよい。
図81は、バックエンド保存RAMの割当てられた領域内にデータを保存する様々なモードを例示するブロック線図である。図示のように、NCSモード0では、FFTサブシステム68−215(SS3)は、非コヒーレント・データをNCS領域内に保存し、特定のチャネルに対するピーク・データをピーク・エリア内に保存する。図示のように、PDIの終わりに、ピーク・データの保存は新しいピーク領域に移る。一実施態様では、バックエンド保存RAM81−1505aはピーク・エリア内に2つのピーク位置を有するが、他の実施態様では2つ以上を有することができる。
NCSモード1では、図示のようにFFTサブシステム68−215(SS3)は、非コヒーレント・データを、バックエンド保存RAM81−1505bのNCS領域内に保存し、関連するピーク・データをバックエンド保存RAM81−1505bのピーク・エリア内に保存する。上記ピークは、NCSデータが更新されると更新される。
NCSモード2では、バックエンド保存RAM81−1505cは、スクラッチ・バッファ領域として使用される。図示のように、FFTサブシステム68−215(SS3)は、非コヒーレント・データをバックエンド保存RAM81−1505cのNCS領域内に保存し、ピーク・データをバックエンド保存RAM81−1505cのピーク・エリア内に保存する。ピーク・データはそれぞれのPDIの終わりに更新されるが、書き込みポインタはNCSデータの終わりに進められる。NCS保存モード2はスクラッチ・モードであるので、NCSデータは、例えばハーフチップを基準として、周波数を基準として、等で上書きされる。
NCSモード3では、図示のように、FFTサブシステム68−215(SS3)は、T1を基準にして非コヒーレント・データをバックエンド保存RAM81−1505dのNCS領域内に保存し、ピーク・データをバックエンド保存RAM81−1505dのピーク・エリア内に保存する。ピーク・アドレス位置を含むピーク・データは、それぞれのPDIの終わりに更新される。矢印は、領域の最上部に達した際に書き込みポインタが移動する方向を示す。NCSモード3は、衛星のデータ・ストリームのデータ・ビット端の検出を容易にするために様々な符号オフセットが保存されるビット同期モードにおいて有用である。
NCSモード4では、図示のように、FFTサブシステム68−215(SS3)は、非コヒーレント・データの奇数および偶数ハーフチップをバックエンド保存RAM81−1505eのNCS領域内に保存し、ピーク・データをバックエンド保存RAM81−1505eのピーク・エリア内に保存する。1つの奇数PDIと1つの偶数PDIとがコンテキストごとに保存される。偶数および奇数PDIデータが保存された後、ピーク値は更新される。ピーク・アドレス位置は各PDIの終わりに更新される。矢印は、領域の最上部に達した際に書き込みポインタが移動する方向を示す。
例えば図68に示すように、トラック履歴(TH)データはバックエンド保存RAM68−209のTH領域内に保存される。図81のRAM81−1505fは、トラック履歴保存の1つのモードを示す。図示のように、トラック履歴(TH)はTH領域内に保存され、レポート情報(INFO)はINFO領域内に保存される。THデータは実際のコヒーレント・データである。INFOデータはレポート情報を含む。レポート情報は、コヒーレントなトラック履歴データを識別するとともに、処理されたPDIの数、時間タグ等を示すTHレポートのような様々なレポートを含む。バイアス合計は、すべてのPDIに対するバイアスの積分和である。ノイズ合計は、すべてのPDIに対するノイズ振幅の積分和である。別のレポートは、コンテキスト切り替え時に保存されるコンテキスト・レポートである。コンテキスト・レポートは時刻タグ、処理済みPDIの数、バイアス合計、ノイズ合計などを含む。
図81のRAM81−1505gは、トラック履歴保存の別のモードを示す。図示のように、トラック履歴(TH)はTH領域内に保存され、レポート情報(INFO)は、INFO領域内にT1を基準に保存される。THデータは、個別のT1に対する実際のコヒーレント・データである。INFOデータはレポート情報を含む。レポート情報は、(例えば位相オフセットと符号オフセットにより)コヒーレント・トラック履歴データを識別するとともに、処理済みPDIの数、時刻タグなどを示すTHレポートを含む様々なレポートを含む。バイアス合計は、すべてのPDIに対するバイアスの積分和である。ノイズ合計は、すべてのPDIに対するノイズ振幅の積分和である。別のレポートは、コンテキスト切り替え時に保存されるコンテキスト・レポートである。コンテキスト・レポートは時刻タグ、処理済PDIの数、バイアス合計、ノイズ合計などを含む。バックエンド保存RAM81−1505gのトラック履歴保存モードは、衛星のデータ・ストリームのデータ・ビット端の検出を容易にするために様々な符号オフセットが保存されるビット同期モードにおいて有用である。
図80と図81の保存モードは、シーケンサ68−217によってチャネルRAM68−207内に保存されたチャネル・パラメータにより指示される。
図82は、様々な動作モードにおけるRAM保存の様々なモードを例示する線図である。同線図の左側で、入力サンプルRAM82−1603は、入力サンプル・サブシステム(SS1)により入力データ・サンプルで埋められる。前に説明したように、入力サンプルRAMは循環モード、またはワン・ショット・モードで埋めることができる。信号処理サブシステム(SS2)82−1613は、入力サンプルRAM82−1603からデータを読み出し、そのデータを処理する。信号処理サブシステム82−1613は、信号処理システムの動作モードと構成に従い、いくつかの可能なデータ経路82−1604、82−1608、82−1610の1つへコヒーレント・データを出力する。
信号処理サブシステム82−1613の出力経路を再び参照すると、出力経路82−1604は、コヒーレントRAM82−1605の共有スクラッチ領域82−1630への経路を表す。スクラッチ領域82−1630は、SVごとに1回埋められる。チャネルは、それ自身のコヒーレントRAMを維持しない。このことはチャネルが以前の位置にかかわらず、毎回スクラッチ領域に書き込み(以前のチャネル・データに上書きし)、そして終了することを意味する。スクラッチ領域82−1630用に指定されたRAMの物理的領域も、バックエンド保存RAM(コールド・スタート・モード用)とコヒーレント・スクラッチRAM(他のすべてのモード用)との間で交互に切り替えることができる。
出力経路82−1608は、コヒーレントRAM82−1605のSV専用コヒーレント・データ領域への経路を表す。コヒーレント・データは、各SVに対し、82−1630a領域の最下部SV1データから始まり、82−1630n領域のSVnデータで終わる循環的な様式で保存される。これは、例えば各チャネルがそれ自身のコヒーレントRAMを維持し、以前抜け出たのと同じ場所でコヒーレントRAMに入る場合に適用可能であろう。SV専用領域82−1630もまた、時にはスクラッチ領域として使用することができる。
出力経路82−1610は、コヒーレントRAM82−1605をバイパスするFFTサブシステム82−1615(SS3)への直接経路を表わす。これはコールド・スタート・モードに適用可能である。コールド・スタート・モードでは、FFTサブシステム82−1615は、コヒーレント・データを処理し、経路82−1612を介しバックエンド保存RAM82−1609へNCSデータを送信する。
ここで、FFTサブシステム82−1615の右の領域を参照すると、バックエンド保存RAM82−1609の様々な構成が表されている。同線図の最も右側の円で囲まれた数字は、様々なタイプまたはモードのNCSの保存を示す。同線図の最下部の保存モード1は、各チャネルがそれ自身の専用のTHおよび非コヒーレント・データ保存領域を含む。FFTサブシステム82−1615は、経路82−1616a〜82−1616nを介し、バックエンド保存RAM82−1609の個々のチャネル領域へデータを送信する。チャネル専用のバックエンド保存RAM領域82−1618a〜82−1618nは、ピーク、ピーク情報、ビット同期データを含むNCSデータ、およびトラック履歴データを含む。
保存モード2を参照すると、各NCS領域82−1620a〜82−1620nは、それ自身の対応するピーク領域を有する。FFTサブシステム82−1615は、共有スクラッチ・コヒーレントRAM82−1630からNCS領域82−1620へ、経路82−1614aを介しデータを送信する。また、経路82−1614に対しても適切な代替NCS保存モードは、保存モード3である。保存モード3において、チャネル間で共有される単一のスクラッチ領域82−1622と、経路82−1614bを介したいくつかの専用ピーク領域82−1624a〜82−1624nとが存在する。
保存モード4は、複数のNCS領域82−1626a〜82−1626nを含み、各々がそれ自身の対応するピーク領域を備えるという点で保存モード2に類似している。FFTサブシステム82−1615は、経路82−1612aを介しバックエンド保存RAM領域82−1626内に、ビット同期データ、ピーク、およびピーク情報を含むNCSデータを保存する。経路82−1612に対しても適切である代替NCS保存モードは保存モード5である。保存モード5においては、チャネル間で共有される単一のスクラッチ領域82−1628と、経路82−1612bを介したいくつかの専用ピーク領域82−1630a〜82−1630nとが存在する。
デジタル信号処理部67−101の制御方法と装置のさらに詳細な説明を以下にする。デジタル信号処理部における信号処理動作の順序付けを制御するシーケンサについて、図68のシーケンサ68−217とデジタル信号処理部67−101とを参照して説明した。別の実施態様では、信号処理サブシステム用のシーケンサは、信号処理サブシステムに連結されており、FFTサブシステム用のシーケンサ機能は、FFTサブシステム連結されている。そのような実施態様を図69に示す。図83〜図93とそれらに関する説明は、上記のようなタイプの実施態様のいずれか、または図示されない代替実施態様に適用できる。前に説明したように、シーケンサは、ソフトウェアによりプログラムされたチャネルRAMからデータを読み出す。チャネルRAMは、デジタル信号処理部67−101のようなデジタル信号処理部の現在の状態に関する情報を保存する。チャネルRAMはまた、様々なハードウェア要素の構成がどのようにすべきかを含む、信号処理のどんな態様が次に発生しようとしているかについての情報を保存する。
図83は、一実施態様におけるチャネルRAM、およびそれと通信する要素を例示するブロック線図である。同線図の右側と左側の破線は、チャネルRAMとシーケンサとの間(同線図の左側)、およびチャネルRAMとデジタル信号処理部67−101のようなデジタル信号処理部の他の様々な要素との間(同線図の右側)の通信を概念的に示す。同線図における諸要素の相対位置、および破線に特別な意味はない。例えば、実際には、シーケンサは、図示のサブシステム群のいずれかと一緒に配置できるか、または、一部が1つのサブシステム2(SS2)と一緒に配置され、かつ一部がサブシステム3(SS3)と一緒に配置できるであろう。異なる要素の他の任意の相対配置も可能である。前に説明したように、SS2は信号処理サブシステムを示し、SS3はFFTサブシステムを示す。
チャネルRAMは、シーケンサ、信号処理サブシステム、FFTサブシステム、コヒーレント・データに割当てられたRAMの一部分、NCSデータに割当てられたRAMの一部分、およびトラック履歴(TH)やピーク等のデータに対し割当てられたRAMの他の部分へデータを送信し、かつ、それらからデータを受信する。
チャネルRAMは、レコード0からレコードNまでラベルを付けられた複数のチャネル・レコードを保存する。チャネル・レコードのそれぞれは、ワード0からワードNまでラベルを付けられた複数のデータ・ワードを含む。一実施態様では、各チャネル・レコードはおよそ68〜256バイトのデータを含む。各チャネル・レコードのワード0は、読み出すべき、または、書き込むべき次のチャネル・レコードへのポインタを含む。ポインタは、あるチャネル・レコードから別のチャネル・レコードへ移動するために使用される。また、チャネル・レコードは、可能なすべての動作モード、実行中の様々なタイプの信号処理、現在のカウントと状態、入力サンプルに関する符号位相と時刻調整を含む。この情報は、図示の様々な要素へ信号として送信され、処理を制御したり、あるいはエラー状況を伝えたりする。
シーケンサは、チャネル・レコードのワード0から開始し、コンテンツを「実行する」。チャネル・レコードのコンテンツ(ワード0からワードNまで)は、どこからデータを得るべきか、そしてどこへデータを書き込むべきかを示す、全ての関連するメモリ領域内のアドレスへのポインタを含む。シーケンサは、信号処理サブシステムとFFTサブシステムのどちらがチャネルRAMにアクセスするかを指示する。信号処理サブシステムとFFTサブシステムは、個別の実行スレッドとして走るが、完全に独立しているわけではない。例えば、信号処理サブシステムは、FFTサブシステムを使用するためのデータを生成する。以下にさらに説明するように、サブシステムの1つが他方のはるか先まで実行してはならない、または他方のはるか後を実行してはならない。
チャネル・レコードの最終ワード(ワードN)の読み出しは、コンテキストの完了に対応する。コンテキストが完了すると、完了したコンテキストにより更新された情報が、現在のチャネル・レコード内に保存され、シーケンサは、現在のチャネル・レコードのワード0において指示されるレコードへ移動する。
コヒーレント・データに割当てられたRAM領域は、コヒーレント・データ以外に、状態情報とさらなるポインタなどのパラメータを含むバッファ・ヘッダを保存する。信号処理サブシステムとFFTサブシステムは、ヘッダからそれぞれのチャネル特有の状態を読み出す。例えば、サブシステムは、最後にどこで信号処理を出たか、またはどれだけの量のサンプルを処理することになっているかを判断することができる。パラメータは1つのチャネルから次のチャネルへ渡されるので、これらのパラメータをコヒーレントRAM領域のヘッダに保存することが便利である。例えば、信号処理サブシステムが、次のチャネルのための複数のデータ・ブロックを配置して終了した場合、FFTサブシステムは、該複数のブロックをどこで読み出すべきかを認識していなければならない。一実施態様では、既知数のブロック(例えば7個)が常にチャネル用に保存される。当該データ・ブロックの対象となるサブシステムが入って来ると、サブシステムは7個のデータ・ブロックを確保し、そして出て行く際にさらに7つのデータ・ブロックが準備できていることをコヒーレントRAM領域のヘッダに書き込む。
図83のシーケンサによる、例えばデジタル信号処理部67−101といった信号処理部の制御は、構成要素間の通信と、セマフォ・ワードと割り込み信号を使用するソフトウェアを含む。信号処理部の制御の態様の1つは、信号処理サブシステム(SS2)、FFTサブシステム(SS3)、およびメモリまたはRAMを含む、ハードウェア・リソースを使用しなければならない様々なチャネルの順序付けである。図85は、左側にSS2処理、右側にSS3処理、そして2つのサブシステムの間に「制御区域」を示す。「時刻」から「1」までのラベルを付けられたバブルは、サブシステムのそれぞれに対する処理エポックの段階を表現する。処理エポックの間、チャネルはサブシステムを所有する。処理エポックの終わりで、かつ次の処理エポックの開始前に、シーケンサはいくつかの決定を行う。この決定はとりわけ、どのチャネルが処理用サブシステムを所有するか、どのサブシステムが様々に割当てられたRAM領域へのアクセス、およびRAMアクセスのためのアドレス位置を有するかを含む。
制御区域内には、SS2とSS3用のチャネルRAMポインタが示されている。チャネルRAMポインタとは、SS2とSS3のそれぞれに対するバッファ・ベース・ポインタと、チャネル・ポインタとを含む。バッファ・ベース・ポインタは、コヒーレントRAMにおける実際の位置を表わす。チャネル・ポインタは、チャネルRAM内に保存されたポインタである。図85に示すように、SS2ベース・ポインタは、SS3ベース・ポインタと比較され、SS2チャネル・ポインタは、SS3チャネル・ポインタと比較される。例えば、SS2内の「チャネル1」がSS2に入る際、そのチャネル・ポインタと「チャネル2」のチャネル・ポインタとを比較する。これは、ラッピング規則を参照し、以下に説明されるように、1つのサブシステムが別のサブシステムに重なることを回避するためである。
また制御区域内には、SS2とSS3それぞれのためのハードウェア・レジスタが示されている。各サブシステムに対し「アクティブ」レジスタと「休止」レジスタがある。これらのレジスタは、サブシステムがアクティブであること、サブシステムが処理を休止しなければならないことを示す信号ビットをそれぞれ保存する。
シーケンサは、信号処理サブシステムがFFTサブシステムに重なること、またはその逆を回避するラッピング規則を実行する。シーケンサはまた、アンダーフローとオーバーフロー状態を回避および/または検知する。アンダーフロー、オーバーフロー、およびラッピング規則は、前述されており、以下でより詳細に説明される、順序付けと制御の態様である。
FFTサブシステム(SS3)は、以下のように様々な状況下でアンダーフロー検知を実行する。SS3が入る際、信号処理サブシステム(SS2)がメモリ領域内に存在する場合は、SS3はライブSS2ポインタを使用する。SS2がこのメモリ領域内にまだ存在する限り、SS2は、SS2 T1メモリ空間(SS2BottomTlREG)の最下部である場所にライブ・ポインタを連続的にロードする。SS2が上記メモリ領域を出ると、SS3は、その場所SS2BottomT1Regにおいて最後に保存されたポインタを使用するよう切り替わる。
SS2は、SS3が出るまでチャネルに再び入ることはできない。
SS3が入る際にSS2がバッファ内に存在しない場合、SS3は保存されたSS2ポインタを読み出し、それをSS2BottomT1Regへロードする。次に、SS3は保存されたSS2BottomRegまで処理し、そして出る。
信号処理サブシステム(SS2)は、以下の様々な状況下でオーバーフロー検知を実行する。SS2が入る際にSS3がメモリ領域内に存在しなければ、SS2は保存されたSS3バッファ・ポインタを読み出し、それをSS3BottomT1Reg内へロードする。SS2は命じられる限りの数のT1を処理し、メモリ空間がなくなるとオーバーフローのために停止する。SS3が上記メモリ領域に入ると、ライブSS3ポインタが使用される。SS3が上記メモリ領域を出ると、SS3が別のチャネルを有する同じメモリ領域に戻るまでは最後に保存されたSS3BottomT1Regポインタが使用される。
SS2が入る際にSS3がバッファ内に存在する場合、SS2は、SS3が出るポイントまでライブSS3ポインタを使用し、そして最後に保存されたSS3BottomT1Regポインタへ切り替わる。SS2は、命じられる限りの数のT1を処理し、メモリ空間がなくなるとオーバーフローのために停止する。SS3が上記メモリ領域に入ると、ライブSS3ポインタが使用される。SS3が上記メモリ領域を出ると、最後に保存されたSS3BottomT1Regポインタは、SS3が別のチャネルを有する同じメモリ領域に戻るまで使用される。
図84は、SS2とSS3との相互作用におけるラッピング規則を例示する線図である。同図の一番上の円で囲まれた数は、期間の順序を示す。それぞれの水平方向の破線間には、その特定の期間におけるチャネルが存在する。
期間1を参照すると、SS2はチャネルに入るが、このことは、信号処理サブシステムがチャネルを所有し、チャネルに対するデータを処理するために使用されていることを意味する。SS2は、オーバーフロー状態が存在するかどうかを判断するために、コヒーレントRAM領域内に保存されたSS3ポインタを使用する。
ラッピング規則によれば、まずSS3がチャネル内に存在すれば、SS2は、SS3がチャネルを出るまで入ることができない。SS3がチャネル内に存在し、かつSS2がチャネル内に存在しないと、SS3は、当該チャネルに対するコヒーレントRAM内のすべてのデータ(SS2が当該チャネルのデータを処理した最後の時からSS2により保存されたデータ)を処理し、そして当該チャネルのすべてのデータが処理されると出る。
期間2に示すように、SS2がチャネル内に存在すると、SS3(FFTサブシステム)が、当該チャネル用の演算を行うべきコヒーレント・データを有する場合は、SS3はチャネルに入ることができる。ラッピング規則によると、SS3は、SS2がチャネルを出るまでチャネルを出てはならない。SS2とSS3が両方ともチャネル内に存在するので、SS2はオーバーフロー状態が存在するどうかを判断するために、ライブSS3ポインタを使用する。
前に説明したように、SS2チャネルRAMベース・ポインタは、シーケンサにより読み出され、レジスタ内にロードされ、そしてラッピングを回避するために対応するSS3ポインタと比較される。SS2がチャネル内にあり、かつSS3が同じチャネル内にあれば、SS3側のシーケンサは(SS2が同じチャネル内に存在するので)SS3が出ることができないことを認識する。一方、コヒーレントRAMのベース・ポインタは、データ処理のファーストイン・ファーストアウトを実施する。SS3は、SS3がチャネルに入るか、または出ることができるかというよりむしろ、SS3が処理するに十分なデータをSS2が作成したかどうかに関心を持つ。SS2は、SS2が未処理データに上書きしないように、SS3が十分なデータを処理したかどうかに関心を持つ(これはオーバーフローおよびアンダーフロー状態の回避および/または検知である)。
図84を再び参照すると、期間3では、SS2はチャネルに対するデータを処理し終えて、チャネルを出る。SS3はSS2がチャネルを出たポイントまでチャネルに対するデータを処理する。期間4において、SS2は再びチャネルに入る準備ができているが、SS3が出るまでそうしてはならない。
期間5では、SS3が出たので、SS2は再びチャネルに入る。期間6では、SS2は処理を終了したのでチャネルを出る。SS3がチャネルからの処理すべきデータをもはや有さない場合は、SS3がチャネルに入る必要はない。したがって図84は、1つ以上の特定のチャネルからのデータが、サブシステムにより相互に織り込まれた方式か、または時分割方式でどのように処理されるかを例示する。
シーケンサにより実行されるラッピング規則は、信号処理部の全体制御の一部を規定する。制御のその他の部分は(例えば、図69に示すように)FIFO2により規定される。一実施態様では、FIFO2は、SS3により読み出されたデータをSS2が保存する循環バッファである。SS2はT1からT2へとFIFO2を埋める。SS3は、読み出しとデータ処理を始める前に、完全なPDI(プログラムされたT1の数)が使用可能となることを要求する。PDIにおけるT1の数は、FFTサブシステムのFFT要素(図示せず)が要求するものにより決定される。FFTは、様々な数のT1について演算を行うように構成可能である。例として、FFTが5サンプル、16ポイントのFFTで構成された場合、データを読み出し始める前に、FFTは5つのサンプルすなわち完全な5つのT1を必要とする。FIFO2とラッピング規則の組合せが、信号処理サブシステムとFFTサブシステム間のフローを制御する。
信号処理サブシステム(SS2)は作成されるデータ量、すなわちどれだけの量のデータを作成すべきかを制御する。SS2は、各コンテキストに関し、一定のデータ量を作成するようにプログラムされる。ここでコンテキストは、チャネルがSS2に入ったことを意味し、当該コンテキストはSS2を出ると終了する。したがって、特定のコンテキストでは、SS2は数ミリ秒間実行するようにプログラムされ、処理するためにプログラムされたミリ秒間が終了するまで、FIFO1からデータを読み出す。
ラッピング規則
図84に例示されたシーケンサのラッピング規則は、次のように記述することができる。
1.SS2が処理したチャネルは相互に重なってはならない。
2.SS3が現在当該チャネルに関しアクティブな場合、SS2はチャネルに入って(アクティブになって)はならない(さもないとSS2はSS3状態に「重なる」)。
3.SS2が、現在当該チャネルに関しアクティブな場合、SS3は、チャネルを出てはならない(例えば、SS3の処理は、SS2の状態に従う必要があるかもしれず、SS2がアクティブな場合、データが利用可能になるとSS3はそれを処理する)。
4.SS2は、処理するようにプログラムされたミリ秒の間処理し(SW修正部分を含む)、そしてSS2の処理が完了するまで当該チャネルに留まる。
5.SS3は、そのバッファ(コヒーレントRAM領域)内で利用可能なだけのT1を処理する。SS3は、SS2がアクティブでなければ、保存されたSS2バッファ・ポインタまで、SS2がアクティブであれば、SS2が完了するポイントまで処理を行う。
6.待機セマフォまたは待機フラグにより、SS2とSS3が処理を続けることを回避できる。例えば、SS2は、「SS3コンテキスト完了」または「SS3 PDI完了」により停止することができ、SS3は「SS3 PDI完了」により停止することができる。
ラッピング規則を適用する際、チャネルが等しいかどうかを判断するためにチャネルRAMポインタが使用される。SS2とSS3が同一のコヒーレントRAM領域内に存在するかどうかを判断するためにコヒーレントRAMポインタと「アクティブ」フラグが使用される。共有コヒーレントRAM領域を使用することは、2つの異なるチャネルが同一のコヒーレントRAM領域でアクティブであることを意味し、共有コヒーレントRAM領域はあたかも1つのチャネルだけがそれにアクセスしようとしているかのように扱われる。
セマフォ・ワードと割り込み、そして信号処理部の動作を制御する際のそれらの役割について、ここではさらに詳細に説明する。図86は一実施態様のセマフォ・ワード構造の線図である。セマフォ・ワードの構造は、信号処理サブシステム(SS2)により制御された16ビットと、FFTサブシステム(SS3)により制御された16ビットを含む。セマフォ・ワード構造はさらに、図69のSW69−319のようなソフトウェア(SW)により制御される32ビットを含む。SWにより制御される32ビットは、以下にさらに説明されるように、SS2とSS3により制御されるビットに位置合わせされる。セマフォ・ワード構造は、SWにより制御される32ビット、およびSS2とSS3により制御されるビットの両方に位置合わせされる32のマスク・ビットをさらに含む。セマフォ・ワード構造は、他のワードのビットと位置合わせされない有効/休止ビットをさらに含む。
上述のように、セマフォ・ワードは、フラグのやり取りを有効にすることにより、相互には同期していないSS2、SS3、およびSW間の通信を容易にする。シーケンサ(例えばSS2シーケンサ)が初期化されると、シーケンサは、SS3またはSWフラグの何れかに対するセマフォ・ワードを読み出す。セマフォ・ワードは、シーケンサによりどの処置が行われるべきか、あるいは行われるべきでないかを判断する情報を提供する。図87は一実施態様におけるセマフォ・ワードの構成を示す。個々のビットの意味はビット・ラベルにより示される。「セマフォ前半」、「セマフォ後半」とラベルを付けられた32ビットは、図86のSS2ビット、SS3ビット、SWビットから構成される64ビットに対応する。32個の割り込み有効化ビットは図86の「マスク」ビットに対応する。各チャネルに対し、図87に示すようなセマフォ・ワードがある。
図示のように、セマフォ・ビットは、大部分は重複する。すなわち、特定の意味を有するSS2ビットは、対応するSS3ビットと、対応するSWビットとを有する。SS2、SS3、SW間のメッセージ通信は、対応する意味を有するハードウェア(HW)ビットとSWビットとのXOR及び/又はANDの実行を含む。HWは信号処理サブシステム(SS2)とFFTサブシステム(SS3)を含む。メッセージ通信は2方向に存在する。1方向では、HWはHWイベントが発生したことをSWに知らせる。命令のもう一方の方向では、SWはHWに行為を実行させる命令を送る。ビットはセマフォ「フラグ」として機能する。例として状態セマフォを用いると、HWがイベントについてSWに通知したい場合、HWは適切なビットの現在の状態を変化させる。2つの対応するビットの初期開始状態は同じであって、0または1のいずれかである。ビットの状態がHWにより変化されると、2つのビットのXORは1になる。こうしてSWがセマフォ・ワードを調べる際に、SWはXOR結果が1であるのでHWがフラグを設定したということが分かる。SWは、対応するビットの状態を、その制御下で変化させることにより応答する。当然ながら、これにより2つのビットの状態を再び同じにし、こうして2つのビットに対するXOR結果を0にし、フラグをクリアする。HWフラグ情報に対するSWの応答は、フラグの意味によって、確認応答、命令、リセットまたは初期化として解釈することができる。
もう一方の方向では、SWは、特定の意味のビット対に対するXOR結果を0にすることにより命令を作成する。一例は100MUTレポートを作成する命令である。上記命令を受信すると、HWはXOR結果をもう一度1にするためその制御下でビットを変化させることにより確認応答する。
図87を参照し、命令と確認応答の例として1組のビットを用いると、セマフォ前半のワードは、ソフトウェア制御されたss2AdjEndMsSWビット(円で囲む)を含む。セマフォ後半のワードは、HW制御された対応部分のss2AdjEndMsHW(同じく、円で囲む)を含む。ss2AdjEndMsSWビットは、HWに「通常のミリ秒数を処理する代わりに、追加のミリ秒を処理する」ように伝える。この特別の場合、SWは、その制御下で上記ビットの状態を変化させ、2つの対応ビットのXORを0にすることによりHWへの命令を作成する。HWが上記命令を完了した後、HWは、そのss2AdjEndMsHWビットの状態を変化させ、再びXORを1にすることにより確認応答を送信する。
状態フラグの例として、セマフォ前半ワードは、fifolOvrflwSW(円で囲む)を含む。セマフォ後半ワードは、HW制御の対応部分であるfifolOvrflwHW(同じく円で囲む)を含む。FIFO1のオーバーフロー状態が発生すると(SS2がデータを読み出す前に、SS1がそのデータの一部分に上書きしたことを意味する)、それは、HW制御下でビットの状態を変化させ、そして適用可能ならば、対応する割り込みを生成することにより、セマフォ・ワードを用いて通信する。
図87の第3行のビットは、特定チャネルに対する割り込み用の割り込み有効化マスク・ビットを含む。割り込みはこのセマフォ・ワードに関連する。HWが状態セマフォ・ビットの設定を望むイベントを有する場合、HWもまた割り込みを生成することができる。その割り込みはSS2から出るラインであるから、SWはどのチャネルが割り込みを生成したかを判断する。上記ラインは、割り込みが生成された時に、どのチャネルがサブシステム内に存在したかを示さない。SWは設定ビットを検知するために、全てのチャネルのセマフォ・ワードを読み出すことにより、これを行う。割り込みについては、以下にさらに詳細に説明する。
先ほど説明したXORメッセージ通信に従って動作しない特定ビットがいくつかある。その代り、これらのビットは3つのビットのANDとして動作する。SS2に対しこのような3ビット、SS3に対しこのような3ビットが存在する。これらビットは「オン」ビットと呼ばれ、当該チャネルが処理されるか否かを示す。例えば、SS3は3つの「オン」ビットを有し、その1つはSS2により制御され、その1つはSS3により制御され、その1つはSWにより制御される。それらのソースのいずれの1つも、その制御下でビットの状態を変化させることにより、「オン」ビットに「オフ」の意味を持たせること、すなわち、「オン」ビットをオフにすることができるであろう。サブシステムが初期化すると、まずサブシステムは休止すべきかどうかをセマフォ・ワードに基づいて判断する。次に、サブシステムは、サブシステムが処理を始めてよいかどうかを「オン」ビットに基づいて判断する。「オン」ビットがオフになると、サブシステムは出て行き、次のチャネルに対するポインタをロードする。
「オン」ビットをオフにする1つの状態は終了状態である。例えば、SS3が処理すべき数のPDIを処理すると、SS3はそれ自身の「オン」ビットと、制御するSS2の「オン」ビットとをオフにする。次いでSS2はそれ自身の「オン」ビットをオフにして、SS2が次にそのチャネルに来ると、それは「スキップ」される。
図88は、HW制御のセマフォ、SW制御のセマフォおよび「休止」セマフォ(これは図86の「有効/休止」ブロックに対応する)を含む、SS2、SS3、およびFIFO1のセマフォのリストである。
休止セマフォはエラーを含む多くの状況により有効にされ得る。チャネルを完了するSS2又はSS3によりチャネルを完了することにより、あるいはPDIの完了により、休止セマフォが有効にされると、SS2はその休止まで処理して、停止(stall)する。
休止セマフォに対する反応として、SWは必要とされるすべての処理を実行し、そして適切なパラメータを更新する。SWは完了したセマフォをクリアするために、チャネル・セマフォ・ワードのSW部を更新する。SS2の休止が有効になると、SWはHW休止レジスタをクリアする。SWは休止を促進する際にベース・チャネル・ポインタを読み出す。SWは休止レジスタもクリアする。
セマフォ・ワードが更新されて、もとのチャネル・バッファに保存されると、割り込みが生成される。一実施態様では、割り込みは、アービトレーション・ユニットによるセマフォの確認応答が書き込まれると有効になる。チャネル完了セマフォとPDIセマフォは、チャネルが完了するか、またはPDIが完了する度に切換えられる。チャネル完了セマフォは、セマフォ・ワード内のチャネル・アクティブ・ビットがクリアされると書き直される。
図示のように、様々な割り込みは様々な要素の制御下におかれる。タイマ割り込みはSS1により制御される。これらは、順序付けよりもむしろタイミングにより関連する。特に、タイマ割り込みは、FIFO1に書き込まれた入力データのタイミングに関連する。
前述のように、オーバーフロー状態は、1つのサブシステムが、別のサブシステムがまだ処理する機会のないデータに上書きを始めることを含む。オーバーフローは割り込みを生じさせるエラー状態である。SS2の制御下にある割り込みの1つは「FIFO1オーバーフロー」である。FIFO1オーバーフローがSS2の開始時に発生する場合、割り込みはチャネルをシャットダウンする効果を有する。チャネルはセマフォ・ワードを更新し、そして出る時に割り込みフラグを設定する(有効の場合)。
FIFO1オーバーフローがSS2処理中に発生する場合、チャネルはローカルのオーバーフロー・フラグを設定するとともに処理を継続し、そして結果として生ずるデータは「ごみデータ」として認識される。チャネルの処理が終了すると、チャネルはセマフォ・ワードを更新し、そして出る時に割り込みフラグを設定する(有効の場合)。チャネルはローカルのオーバーフロー・フラグをクリアする。
サブシステムがチャネル用のデータを処理し終えるときも、割り込みが生成される。例えば、SS2がチャネルに対するデータを処理し終えると、チャネルはセマフォ・ワードを更新し、そして出る時にSS2チャネル完了割り込みを設定する。SS3がチャネルに対するデータを処理し終えると、チャネルはセマフォ・ワードを更新し、そして出る時にSS3チャネル完了割り込みを設定する。
SS3がPDI分のデータの処理を終了し、チャネルもまた完了すると、S33はチャネルを出る時にSS3チャネル完了割り込みとPDI完了割り込み(有効の場合)の両方を設定する。SS3がPDIの処理を終了したが、チャネルは完了していない場合、PDI完了割り込みのみが設定され、セマフォ・ワードはもとのチャネル・バッファに書き込まれ、そしてSS3は停止する(有効の場合)。
シーケンサ機能の別の役目は、終了状態を決定することである。例えば、シーケンサは、SS2とSS3が必要な量の処理を完了したかどうかを判断する。図89は、SS2とSS3用の終了状態のリストである。SS2から見た終了状態は、FIFO1のオーバーフローである。これは、まだSS2によって処理されていないデータへの上書きをSS1が行ったときに発生する。この場合、SS2はそれ自身の「オン」ビットと、それが制御するSS3の「オン」ビットもシャットオフする。そして、SS2はまた、何が発生したかをSWに知らせる割り込みを送信する。それ以降は、上記順序付けがオーバーフローが発生したチャネルに達するごとに、それはスキップされる。これにより、SWが「オン」ビットを再プログラムする前に、中に入ってチャネルRAMを再プログラムする時間をSWに与える。
SS3の側から見ると、SS3がPDIカウントに達すると、または処理経路にオーバーフローが存在すると、または「早期終了イベント」が発生すると終了状態が発生する。SS3がPDIカウントに達すると、それにとって利用可能なデータの処理が終了する。SS3はPDIが利用可能である場合にそれを基にデータを処理することを思い出してほしい。SS3は特定の数のPDIに対し動作するようにプログラムすることができる。適用可能な数のPDIが処理され、SS3により非コヒーレントに累算されると、SS3は終了状態を知らせるためにセマフォ・ワード内のビットを設定する。
あるパラメータを越えることにより早期の終了を引き起こすことができる。例えば、コヒーレントRAMおよび非コヒーレント累算に関連するオート・スケール値が存在する(オート・スケール値は、非コヒーレント加算に関連する指数である)。その値がある範囲を越えると、またはそれが非常に急速に増大すると(大きな指数値に達するのにどれだけ多くの加算が必要となるかということは、これがどのように決定されるかということである。比較的大きな指数値に達するのに比較的少ない加算しか必要でなければ、その信号は非常に強力と言える)、それは強力信号を示すので100個のPDIすべてを数える必要はない。停止してSWを入れることができる。
SWはまた、チャネルを明確にシャットダウンするために、終了の命令を送ることができる。終了状態を作り出すことは、チャネル間でのRAMの共有を考慮するので、SWがチャネルを部分的にシャットダウンするための明確な方法である。FIFO2から当該データを取り出す前に、チャネルをシャットダウンすることは望ましくないであろう。FIFO2からのデータを実際に処理する必要はない。次のチャネルがこの共有ポインタを調べるので、当該領域を越えてそのポインタを進めるということが重要である。これにより、処理するはずであった場所を越えて、SWがそのポインタを進めた後に限り、SWはSS3にシャットダウンするよう命令を送ることができる。SS3は、SS2がSS3用バッファにどんなデータを入れたとしても処理するはずであり、このデータは、当該コンテキストを出る前にSS3によって取り出されなければならない。
終了と早期終了は、偶数および奇数の各半分の周波数を考慮する。例えば、10ミリ秒のSS2処理は、10ミリ秒の奇数ハーフチップ、次に10ミリ秒の偶数ハーフチップ、次に複数周波数ステップに対し、それぞれ10ミリ秒を意味するものとする。したがって、SS3は、SS2がどんなデータをメモリに入れたとしてもメモリから取り出さなければならない。SS3は、データが奇数か偶数か、どれだけのデータ量が存在するかを認識している。従って、SS3は、期待すべきデータの全てを取り出し、そして終了する。したがって、終了状態の具体的な特徴は、その時発生している処理のタイプにいくぶん依存している。
これまで、信号処理部67−101のような信号処理部における動作の順序付け、構成要素間のセマフォ・ワード・メッセージ通信の説明、割り込み、および終了状態を説明した。以下はシーケンサ要素とそれらの機能の実施態様の説明である。
図90は、信号処理サブシステムについての、図69のシーケンサ69−313aのような、シーケンサ(SS2シーケンサと表記される)の実施態様のブロック線図である。信号処理サブシステム・シーケンサは、それを介してチャネルRAMからデータを読み出す入力レジスタ、または入力ポートを含む。信号処理サブシステム・シーケンサはまた、出力レジスタまたは出力ポートを介しもとのチャネルRAMにデータを書き込む。一実施態様のマスタ・コントローラは、信号処理サブシステム・シーケンサを制御する状態機械である。データは、あるアドレス・ベースによりアドレス指定される。例えば、チャネルRAMに対するチャネル・ベース・アドレスがあり、そして割当てられた他の様々なRAM領域(コヒーレントRAM、NCS RAM等)に対するベース・アドレスがある。ベース・アドレスは処理中のチャネル・レコードと、そのベース・アドレスに関連するチャネル・レコードへのアクセスを示す。マスタ・コントローラは信号処理サブシステム・シーケンサの動作を制御する。入力ポートは各種パラメータを引き出し、そして必要に応じ、それらをマスタ・コントローラに保存する。処理の終わりに、シーケンサは更新されたパラメータを出力ポートを介しもとのチャネルRAMへ書き込む。
同線図の一番上に、信号処理サブシステムを制御するために用いられるデータが示される。前に説明したように、例えば図83を参照すると、チャネルRAMは、特定モードで動作するサブシステムを構成するために必要とされるパラメータを含む。セマフォ・ワードはまた、信号処理サブシステムを制御するために使用される。セマフォ・ワードは命令と状態情報を含む。セマフォ・ワードは、信号処理サブシステム、FFTサブシステム、ソフトウェア間の通信に使用され、アクセスを必要とするすべての要素によりアクセス可能な任意のメモリ領域に保存することができる。一実施態様では、セマフォ・ワードはチャネルRAMに保存される。
一実施態様によるRAMアドレスの生成が図91に例示され、バッファ(すなわちRAM領域)ベース・アドレスとチャネル・ベース・アドレスのうち1つがオフセット・アドレスと組み合わせられて、信号処理サブシステム・アクセス用の実際のRAMアドレス(ss2CntrlRAMAddr)をもたらすことを示す。バッファ・ベース・アドレスまたはチャネル・ベース・アドレスの選択は、マスタ・コントローラからマルチプレクサへの選択信号により行われる。
図92は図90のシーケンサの動作を図解するフローチャートである。「初期スタート」とラベルを付された点において、SS2はリセットされる。セマフォ・ワードがSWにより読み取られる。判断ブロック90−2802に示されるように、チャネルが休止されたら休止フラグがクリアされる。チャネルがオフでもなく休止もされないなら、チャネルは作動される。次いでSWは90−2804においてターン・オン時間を見て、処理すべきチャネルに対して入力FIFO(FIFO1)に十分なデータがあるかどうかを判断する。もしなければ、SWは次のチャネルに移行する。もしあれば、SS2は、チャネルRAM及び他のメモリ領域からデータを引き入れることを含めて初期化される。FIFO1及びFIFO2もまたそのチャネルに対して初期化される。SS2は調節可能なミリ秒数間、実行される。相互相関(xcorr)処理が生じるようにプログラムされていたら、90−2808に示されるように、それは偶数ハーフチップの最初の実行後に一度行われる。相互相関処理が生じるようにプログラムされていなかったら、90−2810に示されるように、処理すべき周波数が更にあるか判断される。もしあれば、SS2の「位置」は入ってくるデータに対して調節され、SS2、FIFO1、及びFIFO2は図示のようにそのチャネルに対して再び初期化される。
処理すべき周波数がもうなければ、即ち、所望数の偶数及び奇数ハーフチップ及び周波数状態が処理されると、停止状態が保存され、シーケンサはメモリに移行してセマフォ・ワードを更新し、割り込みを有効化する。チャネルは停止され、チャネル作動に対して設定されたフラッグがリセットされる。チャネルRAMベース・ポインタが更新され、92−2812において図90のマスタ・コントローラがまだオン、即ちSS2がリセットされる前に行うべき処理がまだあるかどうかが判断される。マスタ・コントローラがオンでなければ、SS2はリセットされる。
マスタ・コントローラがオンなら、92−2814においてチャネルがラッピングのために停止されるかどうかが判断される。もしそうなら、シーケンサはその状態に留まり、ラッピング状態がもはや存在しなくなるまで、ラッピング状態をチェックする。ラッピング状態がクリアされたら、シーケンスは再びセマフォ・ワードの読み出しに戻る。
判断ブロック92−2802を再び参照すると、チャネルがオフなら、原則的にSS2はチャネルRAMポインタを更新して処理を進めることにより次のチャネルに移行する。
判断ブロック92−2804を再び参照すると、ターン・オン時間のチェックが、十分なデータがないことを示すと、92−2806においてオーバーフロー状態が存在するかどうかが判断される。そうでない場合、チャネルは停止される。オーバーフロー状態が存在する場合、それを示すためにセマフォ・ワードは更新され、そのチャネルが停止される。
判断ブロック92−2808を再び参照すると、相互相関を実行すべき場合には、SS2及びFIFO2は相互相関に対して初期化される。相互相関器が稼動して、相互相関するSVが更にあるかどうかが判断される。もしあれば、SS2及びFIFO2は相互相関に対して再び初期化される。もしなければ、セマフォ・ワードが更新されて、処理は判断ブロック92−2810に戻る。
いくつかのパラメータがSS2の「実行」を開始するときに初期化される。それらは以下のパラメータを含んでもよい。
処理すべきミリ秒数
搬送波加速度
搬送周波数
搬送波位相
符号位相
T1内のミリ秒カウント
アドレス空間内及びラップ(wrap)内のT1カウント
現在のT1のベース・アドレス
現在のコヒーレント・バッファのベース・アドレス
オート・スケール及び飽和フラグ、及び
FIFO1のライン・ブロック及びラップ
図93は図69のシーケンサ69−315aのようなSS3についてのシーケンサの動作を例示するフローチャートである。概して言えば、PDIベースのデータ処理は破線の右側の動作/機能で表される。「初期スタート」とラベルを付された点において、SS3がリセットされる。
セマフォ・ワードはSWにより読み取られる。判断ブロック93−2902に示されるように、チャネルが休止されていると、休止フラグがクリアされる。チャネルがオフでもなく、休止もされていなかったら、そのチャネルは作動される。SS3及びFIFO2がそのチャネルに対して初期化される。判断ブロック93−2904において、利用可能なFIFO2データがあるかどうかが判断される。上述したように、この判断はラッピング規則の実行の一部である。利用可能なFIFO2データがあれば、判断ブロック93−2926において、相互相関を実行すべきかどうかが判断される。そうすべきでないなら、1つのT1又はPDIに対してFFTが有効化される。FFT処理は93−2908に示されるようにT1が終了するまで続く。T1に対するFFT処理が終了したら、93−2912に示されるように、PDIに対するFFT処理が終了したかどうかが判断される。PDIに対するFFT処理が終了したら、PDIの数、奇数及び偶数ハーフチップの数、及び周波数カウンタが更新される。ハードウェア・トラッキング・ループ(HWTL)が、図示された多数のパラメータを更新する。次いで93−2914において、PDI休止が有効化されるかどうかが判断される。もしそうでなければ、93−2916において、終了状態があるかどうかが判断される。終了状態があれば、SS2及びSS3に対するターン・オフ・フラグが設定される。次いで、処理は93−2904に戻る。終了状態がなければ、処理は93−2904に戻る。
PDI休止が有効化されると、あるいは休止フラグが設定されると、休止フラグはクリアされ、93−2916において終了が検出される。
93−2926を再び参照して、相互相関を実行すべきなら、93−2918において相互相関データが利用可能であるかどうかが判断される。もしそうでないなら、あたかも相互相関を実行すべきでないのと同じ結果となる。即ち、FFTの処理が有効化される。利用可能なデータがあれば、相互相関器とFFTが有効化され、次の相互相関ポインタが読み取られる。次いで処理は93−2908に戻る。
93−2910を再び参照すると、PDIが終了していなければ、93−2920において終了状態がチェックされる。終了状態が存在すれば、処理は93−2904に戻る。終了状態が存在しなければ、SS2及びSS3に対するターン・オフ・フラグが設定され、次いで処理は93−2904に戻る。
93−2904におけるFIFO2データの利用可能性の判断を再び参照すると、もし利用可能な十分なデータがなければ、93−2906においてチャネルがSS2にあるかどうか、またそれが停止されているかどうかが判定される。これはラッピング規則の更なる実行である。チャネルがSS2にありかつ停止されていない場合、処理は93−2904に戻る。チャネルがSS2になかったり、あるいはチャネルが停止されていない場合、コンテキスト・レポート、および(有効化されていれば)100MUT(100ミリ秒)レポートを含む、一連のレポートが生成される。図の右側の小さな破線内にラベルを付されて示されるハードウェア・トラッキング・ループ(HWTL)は、反復される。停止状態が保存される。セマフォ・ワードが更新され、割り込みが有効化される。チャネルが停止され、チャネルRAMベース・ポインタが更新される。
SS3シーケンサのマスタ・コントローラがオンなら、93−2922に示されるように、セマフォ・ワードが読み取られ、93−2902において処理が続く。マスタ・コントローラがオンでなければ、SS3がリセットされる。
93−2902を再び参照すると、チャネルがオンでなければ、93−2924においてチャネルがSS3にあるかどうか、また停止されていないかどうかが判断される。チャネルがSS3にない場合、あるいは停止されていない場合、チャネルがSS3にあるか、停止されるまで、処理は93−2924に留まる。そして、原則的には、SS3はチャネルRAMベース・ポインタを更新して、次のチャネルに移行する。
休止が有効化される場合、SWはサブシステムが何らかの分岐点で停止して、SWが入ってプログラミング又はデータ収集を変更することができることを望んでいることを知らせている。これは例えばPDIに基づいてもよいし、チャネルがサブシステムに入る際でもよい。
一実施例のGPSシステムはSPS衛星の捕捉及びトラッキングに使用する制御モジュールを含む。以下では典型的なモジュールについて説明する。ここでは次のような略語が使用される。即ち、Rxは受信機であり、NVMは不揮発性メモリ(non-volatile memory)であり、TTFFは初期測位時間(time to first fix)であり、ATXは捕捉トラッキング相互相関(acquisition track cross-correlation)である。
以下では強力な信号及び中程度の信号での動作のためのアーキテクチャについてのトラッキング・システムを詳述する。以下では次のような略語が使用されるであろう。即ち、Alpha、Betaは様々な事例において様々な値を取る包括的なフィルタ係数であり、SPSは衛星測位システムであり、HWTLはハードウェア・トラッキング・ループであり、NCOは数値制御された発振器(Numerically Controlled Oscillator)であり、PDIは予備検出積分(Pre Detection Integration)であり、RAMはランダム・アクセス・メモリであり、S_Gainはトラッキング・ループを正規化するために採用されるフィルタリングされた信号振幅推定値であり、SWTLはソフトウェア・トラッキング・ループであり、T1はサブシステム2に対する基本時刻エポック(Basic Time epoch)であり、しきい値、しきい値1、しきい値2は、様々な時刻において様々な値を取る包括的なしきい値である。
図94は遅延回路94−2002及び94−2004、Alpha乗算回路94−2006及び94−2008、及びBeta乗算回路94−2010及び94−2012を含むトラッキング・ループ94−2000示す。定数乗算部94−2014、比較回路94−2016、及び加算部94−2018及び94−2020も示されている。
トラッキング・ループ94−2000は符号状態への変更の正規化された進み(Early)−遅れ(late)のトリガに対する近似を記述する。Nは変更すべき符号状態における最下位ビット(LSB)の数である。
AGC正規化/オート・スケールは以下により与えられる。即ち、
S_Gain(t+1)=Alpha*S_Gain+Beta*(|Ip|+|Qp|)
ただし、S_Gainはループ係数を正規化するために用いられており、「t」は時刻インデックスである。S_Gainはまた、(進み−遅れ)の出力を正規化して、ハードウェアにおける符号状態の更新を決定するために用いられてもよい。
ソフトウェア・トラッキング・ループ:SWTLは、成功した捕捉プロセスの終わりにソフトウェア制御によりHWTLと同時に作動してもよい。SWTLは例えば、100msの速度で動作される。一つの実施例において、SWTLはPDI速度でのバッファされたレポートとNCO状態についてのレポートを含む。およそ100msごとに補正を行ってHWTLを調節するために、ソフトウェアはナビゲーション処理及び付加的に外部ソースからの支援情報を用いて、より正確な誤差推定値を計算してもよい。ある場合には、HWTLが無効化され、SWTLが自律的に動作して、100msとは異なる速度でハードウェアのNCOに対する補正値を生成してもよい。そして、ハードウェアはより高速で割り込みを供給してもよく、そのような場合、SWTLは100msより速い速度で動作する。HWTLは各チャネルに対して独立に制御ビットを用いて無効化される。
ハードウェア入力:ハードウェアは例えば100msの速度でNCSバッファ及びトラック履歴(TH)バッファに入力を供給する。入力は種々のオフセットに対する各PDIでのIとQの相関出力、PDIに対するノイズ合計、オート・スケール値、PDIごとにサンプリングされたNCO状態、測定レポートの時刻を表す時刻マーク、等々を含んでもよい。
状態初期化:以下の状態が捕捉段階からの情報を用いて初期化されてもよい。即ち、a)符号位相、b)搬送周波数、c)搬送波位相、d)S_Gain(例えば振幅推定値が利用可能な場合)である。
符号弁別器は、以下の式で与えられる。
D=|E|−|L|
|E|=Alpha*|Ee|+Beta*|Ee+|
|L|=Alpha*|Le|+Beta*|Le+|
ここで、Ee及びLeはプロンプトからタップ1つ離れた進み及び遅れのI値及びQ値であり、Ee+とLe+はプロンプトからタップ2つ離れた進み及び遅れのI値及びQ値であり、以下が成り立つ。
フィルタリングされた符号誤差=Alpha*フィルタリングされた符号誤差+Beta*D
搬送波位相弁別器は以下の式で与えられる。
φ=arctan(Qp,Ip)
ここで、φは各PDIに対して計算され、dφはソフトウェア内に維持される。
搬送周波数弁別器は以下の式で与えられてもよい。
δf=Alpha*(f+−f−)+Beta*(Ip(t+1)*Qp(t)−Ip(t)*Qp(t+1))
ここで、tは時刻インデックスである。
上記のアーキテクチャは、例えば100msごとにハードウェに補正値を戻して、所定の速度、例えばPDI速度でトラッキング方程式を反復してもよい。
位相トラッキング・ループ方程式は以下により与えられる。
搬送波位相+=搬送周波数+K1*dφ+Aid1
搬送周波数+=搬送周波数速度+K3*dφ++Aid2
搬送周波数速度+=K5*φ+Aid3
周波数トラッキング・ループ方程式は以下により与えられる。
搬送周波数+=搬送周波数速度+K4*δf+Aid2
搬送周波数速度+=K6*δf+Aid3
符号ループ方程式は以下により与えられる。
符号位相+=スケール*(搬送波位相(t)−搬送波位相(t−1))K7*D+Aid4
K7はKmax(高帯域幅値)に初期化され、以下のように更新される。
K7(t+1)=Alpha*K7+Beta*符号誤差推定値
K7>Kmaxなら、K7=Kmax
K7<Kminなら、K7=Kmin
トラッキング・ループ・モードの移行は、ゲインK1からK7を設定することにより制御されてもよい。AGC正規化に対して、以下が適用されてもよい。
S_Gain(t+1)=S_Gain_Rate*Gamma+Alpha*S_Gain+Beta*(|Ip|+|Qp|)
S_Gain_Rate(t+1)=Alpha*S_Gain_Rate+Beta*[(|Ip(t)|+|Qp(t)|)−(|Ip(t−1)|+(|Qp(t−1)|)]
ここで、S_Gain及びS_Gain_Rateは、その信号の振幅とその信号の振幅の変化率の推定値を表す。S_Gainパラメータは、トラッキング・ループ方程式のゲインを正規化するために利用されてもよい。
一つの実施例において、アーキテクチャはロック検出器の喪失を採用してもよい。例えば、符号ロックに対し、アーキテクチャは以下に従うレートで信号対ノイズ比(Signal to Noise Ratio)を決定してもよい。
ノイズ電力=Sum(In*In+Qn*Qn)
ここで、上記の合計(Sum)は例えば100msの期間にわたり行われ、In及びQnはPDI速度でのハードウェア・レポートにおけるノイズ合計からのI及びQ出力である。また、
信号電力=Sum(Ip*Ip+Qp*Qp)
ここで、上記の合計(Sum)は例えば100msの期間にわたり行われ、また
信号対ノイズ比=信号電力/ノイズ電力
フィルタリングされたSNR=Alpha*フィルタリングされたSNR+Beta*信号対ノイズ比+Gamma*SNR_Rate
SNR_Rate=Alpha*SNR_Rate+Beta*[信号対ノイズ比(t)−信号対ノイズ比(t−1)]
こうして、フィルタリングされたSNRがしきい値より小さければ、ロックの喪失が生じたことになる。
搬送波位相ロックに対し、上記のアーキテクチャはPDIごとに計算された2象限アーク・タンジェント関数を用いて、フィルタリングされた位相誤差を推定してもよい。例えば、
φ=arctan(Qp,Ip)
フィルタリングされたφ=Alpha*フィルタリングされたφ+Beta*φ
こうして、フィルタリングされたφがしきい値より大きければ、ロックの喪失を宣言する。
搬送周波数ロックに対し、上記のアーキテクチャはフィルタリングされた周波数誤差を推定してもよい。
δf=Alpha*(f+−f−)+Beta*(Ip(t+1)*Qp(t)−Ip(t)*Qp(t+1))
ここで、δfはPDI速度で計算される。また、
フィルタリングされたδf=Alpha*フィルタリングされたδf+Beta*δf
こうして、フィルタリングされたδf<しきい値であれば、ロックの喪失を宣言する。
ハードウェアに対する更新は、例えば100msごとのソフトウェアからの入力である、HWTL方程式に対する支援(Aid)の形式であってもよい。上記のアーキテクチャは以下に従ってAidを決定してよい。
ソフトウェアからハードウェアへのAid=ソフトウェア推定値−ハードウェア推定値
HWTLが無効化されるときは、位相、周波数及び速度に対して、ハードウェア推定値=0である。ハードウェアは、例えばソフトウェアが所定のハードウェア・レジスタに書き込むときに、支援を実装する。
一つの実施例において、ビット同期は例えば20〜100msの速度で動作する。そのビット同期は、ソフトウェアにおいて実施されてもよい。
上記のビット同期プロセスへの入力は、ハードウェアからの、(プログラム可能な)20個のオフセットに対する20msの累算(PDI)を含んでもよい。
そのとき、入力配列ヒストグラム[20]は20msのPDI電力累算を含んでもよい。
上記のヒストグラムは各衛星(SV)に対して以下の方程式を用いて累算されてもよい。
AccumHistogram[20]+=Histogram[20]
オフセット情報が利用可能であるときは、以下の方程式を用いて多数の衛星からのヒストグラムを累算する。
AccumHistogramMultipleSV[20]+=AccumHistogram[20+SVオフセット]
次いで、上記のアーキテクチャは図95に示される同期技術95−2100を用いて、同期に対するビット位置を出力する。先ず、ヒストグラムのピーク及び2番目のピークが検出される(ステップ95−2102)。次いで、((ヒストグラムのピーク>しきい値)かつ(ヒストグラムのピーク−ヒストグラムの2番目のピーク>しきい値))なら(ステップ95−2104)、ビット同期が完了し、ビット位置が出力される(ステップ95−2106)。そうでない場合、累算が続行される(ステップ95−2108)。
代わりのやり方として、図96に示される同期技術96−2200を用いて、同期に対するビット位置を出力してもよい。先ず、アーキテクチャは例えば20ms幅の三角形と累算されたヒストグラムの相関をとることにより、コスト関数を決定する(ステップ96−2202)。次いで、コスト関数(オフセット)=Sum(三角形(ms)*累算ヒストグラム(ms−オフセット))が、20個の値におよぶ合計を用いて決定される(ステップ96−2204)。そしてコスト関数(オフセット)に対する最大値がビット同期のオフセットを提供する。[{max(コスト関数(オフセット)>しきい値}かつ{max(コスト関数(オフセット))−2番目のmax(コスト関数(オフセット))>しきい値}]なら(ステップ96−2206)、ビット同期の成功を宣言する(ステップ96−2208)。
データ復調は、ソフトウェアでの実施により、例えば20〜100msの速度で動作してもよい。その復調はビット同期の成功の後に、入力として、ビット境界に位置合わせされた20msの間のIp及びQpを受け入れてもよい。その実施は以下に従って進行してもよい。即ち、搬送波位相ロックの場合、データ・ビット=sign(Ip)。そうでない場合、データ・ビット=sign[(Ip+j*Qp)*exp(j*搬送波位相の誤差推定値)]。ここで、jは複素係数である。このやり方は、搬送波位相の推定誤差が以前のビットから生成される場合において、ディファレンシャルに復号する、より一般的なケースである。
フレーム同期も、ソフトウェアでの実施により、例えば20〜100msの速度で動作してもよい。そのフレーム同期は、SVごとにバイナリ値の配列として供給される、データ復調後のビット・ストリーム上で、動作してもよい。
フレーム同期は以下に従って進行してもよい。即ち、コールド・スタート−プリアンブルの同期。ビットパターンにおいてプリアンブルを識別する。所定のハンド・オーバ・ワード(HOW)を復号する。6秒後に第2のプリアンブルを識別し、1だけずれた第2のHOWを識別する。
おおよその時刻が利用可能なときは、フレーム同期は以下に従って進行してもよい。即ち、1)プリアンブルを識別する。HOWを復号する。HOWが時刻の不確実性の範囲内にある場合、フレーム同期の完了を宣言する。2)フレーム同期を検査する−上記の識別処理を繰り返して、6秒のオフセットで1だけずれたHOWの変化を確認する。
支援情報が利用可能であり、1つのSVのフレーム同期を完了したら:最初のSVのフレーム同期からの時刻を用いて、フレーム同期を必要とするSVに対する予備測位を特定し;ローカル時刻に対する問題のSVに対するフレーム開始を特定し;フレーム同期情報を設定する。支援ビットが利用可能なときは、その利用可能な支援ビットを用いてコスト関数を決定する。即ち、コスト関数(オフセット)=Sum(支援ビット(ビット数)*ビット・ストリーム(ビット数+オフセット))であり、上記の合計(Sum)は例えば全ての利用可能な支援ビットにわたって行われる。そして、SVのオフセット情報が利用可能なら、以下の方程式を用いて多数のSVに対してコスト関数を組み合わせる。
組み合わされたコスト関数(オフセット)+=コスト関数(オフセット+SVオフセット)
[{max(組み合わされたコスト関数(オフセット))>しきい値}かつ{max(組み合わされたコスト関数(オフセット))−2番目のmax(組み合わされたコスト関数(オフセット))>しきい値}]なら、フレーム同期完了を宣言する。
多くの通信システムは一つ以上の無線周波数(RF)信号に頼っている。利用可能な周波数帯域が混雑してくるにつれ、異なる通信システムにより使用される多数の無線周波数が互いに干渉し始める。異なる通信システムにおいて直面する干渉の一つのタイプは搬送波(CW)干渉であり、より一般的にはCWジャミングと呼ばれる。
CWジャミングはCDMA携帯電話システム及び衛星測位システムのようなスペクトル拡散システムにおける干渉の原因である。スペクトル拡散通信システムは周波数スペクトルにわたって拡散する低電力信号を使用し、他の通信システムで使用される搬送波からの干渉にさらされる。CWジャミングの問題は更にスペクトル拡散によりカバーされる地理的領域が全地球、例えば合衆国の全地球測位システム(GPS)を含み得るので更に複雑である。
周波数使用を規制し、無線受信機に専用回路を付加することによりCWジャミング信号を除去する試みが成されてきた。付加的な回路が無線受信機に含まれることにより更なる電力消費と費用をもたらすことが多い。
従って、上記の欠点、及び以前に体験した他の欠点を克服するCWジャミング信号を識別及び除去する方法及びシステムが必要とされる。
本発明によるシステムは微弱信号と共にCWジャミング信号を含むスペクトル拡散信号を受信できる受信機を提供する。信号はCWジャミング信号を識別、トラッキング及び再生させる相互相関器を用いて処理される。複製されたジャミング信号は復調後の受信信号から減算されて微弱信号が処理されるようにする。
本発明の他のシステム、方法、特徴及び利点は図面及び以下の詳細な説明を調べれば当業者には明らかであり、また明らかとなるであろう。全てのそのような更なるシステム、方法、特徴及び利点はこの説明中に含まれ、また発明の範囲内にあり、また添付の特許請求の範囲により保護されるべきものと考える。
先ず図97に目を転ずれば、相互相関を使用する微弱なスペクトル拡散信号における強力信号の消去を描いたフローチャート97−4600が示される。CDMAスペクトル拡散システムで使用されるようなスペクトル拡散擬似ランダム・ノイズ(PRN)符号系列により与えられる強/弱又は近/遠の信号分離はその系列の種々の符号メンバ間の相互相関に依存する。GPS等の衛星測位システムの場合、同じ周波数(又は符号反復速度の倍数、この場合1KHz)の二つの信号の分離は約21乃至23dBである。二つの信号の相対強度がこの限界以上に異なれば、微弱な方の信号は拡散符号のみを用いては区別できない。微弱な方の信号をトラッキングすべき場合、強力な方の信号の効果を除去する方法が適用されてもよい。
GPS信号における粗捕捉符号(C/A)の場合、相対的に強弱のある信号間の相対的ドップラー周波数オフセットが1KHzの整数倍であるときに、相互相関効果はその最大となる。強いスペクトル拡散信号の存在の下での微弱信号のスペクトル拡散信号をトラッキングする問題に対する一般解は、微弱な方の信号からそれを除去するために強力信号干渉の全ての態様を測定あるいは計算できるという前提に基づいている。解決策はチャネルの周波数及び位相を制御する能力をもち、また所望の拡散符号を選択し、その符号の位相位置を設定する何れのマルチ・チャネル受信機においても実施できる。受信機は典型的には二つのチャネル、一つは微弱信号をトラッキングするためのチャネル、一つは干渉する強力信号をトラッキングするためのチャネルを採用する。しかしながら、強力信号の電力、符号位相及び周波数等の特性が代わりの手段により取得又は正確に推定でれば、強力信号をトラッキングするために使用されるチャネルは必要ない。
図97に一般的に示されるように、手順は97−4602で開始され、強力信号が、受信機の第1のチャネル内の強力信号をトラッキングすること等により捕捉される(97−4604)。チャネルは搬送波信号の位相や拡散符号と共に強力信号の信号強度の測定値を提供する。更なる強力信号(図97には図示せず)をトラッキングするために更なるチャネルを使用してもよい。
微弱な方の信号の拡散符号の符号位相はその受信された周波数及び信号位相と共に発明の属する技術において知られた方法により50Hzのナビゲーション・データ符号データ(D)に基づいて予測される(97−4606)。受信機の第2のチャネルは混成の搬送波信号の受信、及び予測された微弱信号成分のトラッキング(97−4608)専用である。
第2の受信機チャネルは入ってくる信号と、予測された周波数と信号位相の第2の符号との相関を取る。得られた同位相及び直交位相(I,Q)測定値は、微弱信号と強力信号の両方を含み、それぞれはそれらの独自の符号により拡散される。第2の信号、Code2Rに対する複製符号の乗算による入ってくる信号との相関は以下の積を生じる。
Code2R*(weak2*Code2+StrongX*CodeX+...)
ただし、weak2は微弱信号2の電力であり、Code2は微弱信号2を発する衛星2に対する実際の符号であり、StrongX(X=1,3,4,...)は強力信号Xの電力であり、CodeXは信号に含まれる衛星Xに対する実際の符号である。積Code2R*Code2は受信された符号2及び複製符号2の自己相関関数である。複製符号が受信された符号と整合すれば自己相関関数は1の値を有する。複製符号2と符号Xのこの相互相関(Code2R*CodeX)は混成信号から除去するために次に計算される(97−4610)。
符号1及び符号2は共にPRN符号系列のメンバであり、それらの自己相関及び相互相関の特性は既知である。従って、符号1の各ビットと符号2の(時間的に)対応するビットを単純に掛け算してそれらの相互相関値を作り出すことによりそれらの個々の位相の二つの符号の相互相関を計算することが可能である。二つの符号の間に相対的なドップラー周波数オフセットがあるので、符号の位相は時間経過により互いに通り過ぎて処理し、新しい相互相関関数を生成することになる。GPSシステムに対し、典型的に直面する最大のデルタ符号ドップラーは約±9KHzであり、これは秒当り6符号チップと等価であり(符号チップ当り1540搬送波サイクル)、従って相互相関値の最大再計算速度は大まかには秒当り6回である。
最大の相互相関はゼロ周波数オフセットにおいて生じ、ピークは1000Hzの間隔で生じる。周波数オフセットがゼロから離れるにつれて相互相関の減衰がある。この減衰は周知のsin(x)/x曲線に従う。10ms測定値がトラッキング又は捕捉に使用されるなら、減衰係数はsin(Δfreq*π/100 Hz)/(Δfreq*π/100 Hz)に等しくなる。これは約75Hzのデルタ周波数において−10dBの減衰を生じる。sin(x)/x曲線における他の局部ピーク(即ち、極小値減衰)は150Hz及び250Hzにおいて生じ、減衰は−13.5dB及び−18dBである。これは、10dBの所望の強力信号抑制に対して、sin(x)/x関数の最初のこぶ(lobe)を考慮するだけでよいことを意味する。しかしながら、更なる抑制が望まれるなら、曲線全体が考慮されてもよい。
次のステップは強力信号のそれぞれに対して強力信号振幅と計算された周波数の積と時間領域(符号位相)相互相関を計算すること(97−4612)を必要とする。微弱信号は最終的には混成信号からこの積を減算する(97−4614)ことにより抽出され、処理は完了する(97−4616)。こうして抽出された微弱信号は発明の属する技術において知られるように受信機回路において逐次処理される。
各強力信号の同位相(I)及び直交位相振幅(Q)はそれぞれの強力信号自身の個々の受信機チャネルにおける測定により、あるいは独立な手段による推定により得られる。強力信号は受信機の位相ロック・ループにより能動的にトラッキングされているので、強力信号の位相は0ラジアンに近いと見なされ、従ってほとんど全ての信号電力は同位相部分にある。
第2の符号Code2で変調された微弱信号w2と合計された第1の符号1で変調された強力信号S1を含む信号は(S1*code1+w2*Code2)を生じる。二つの信号の合計は第2の符号の複製Code2Rとの相関を取られてΣ{Code2R*(S1*Code1+w2*Code2)}を生じる。ただし、合計Σは微弱信号w2を変調するために使用されるPRN符号の全てのチップを含む。符号のそれ自身との自己相関は1であり、従って、前の式はΣ{S1*Code1*Code2+w2}と書くことができる。w2を得るためにS1*Code1*Code2が除去されたことが分かる。我々はCode1及びCode2を知っているからそれらの相互相関を容易に計算できる。これにより我々はS1の値を推定できるが、これは別個のチャネルで強力信号を独立にトラッキングすることにより、あるいは他の何れかの都合のよい手段により行うことができる。このS1*Code1*Code2の計算値は強力信号S1と微弱信号w2が同じ周波数であるなら十分であろう。しかしながら、ドップラー効果や前に列挙した他の要因により二つの信号は異なる周波数で受信される。
相互相関の強さがこれらの周波数間の差によりsin(x)/xの関係で変化することを我々は知っている。従って、我々は強力/微弱信号間の周波数差に基づいて減衰係数を計算し、それを計算された相互相関に適用してもよい。更に、強力信号が2つ以上存在する場合、減衰係数はそれぞれの強力信号に対して計算される。
相互相関係数の符号依存部はPRN符号生成器の既知の相対状態から計算されて単位電力とゼロ周波数オフセットの強力信号と微弱信号の間の相互相関を予測する。この係数は、復号信号から減算される前に、対応する強力信号の振幅が掛けられ、周波数減衰に対して調節される。
PRN信号を変調するために使用される種々のGold符号が全て二つの符号シーケンスG1及びG2から導き出され、この場合、二つの符号系列のビットは、選択されたGold符号によってG1に対して数ビットずらされた後にXOR演算により組み合わされる。二値数を用いたXOR演算が数学的には±1の掛け算と等価であることは知られている。これは±1の積に関して以下の方程式で表現することを可能にするが、現実には、実施は二値数を用いたXORについてであってもよい。
二つのC/A符号間の相関は一般的に以下のように表される。即ち、
ΣSat1G1(I)*Sat1G2(I)*Sat2G1(I−offset)*Sat2G2(I−offset)*e−jΔθI
ここで、
I=0乃至1022の範囲の加算インデックス
Sat1G1(I)=状態Iの衛星1のG1符号化チップの値。取り得る値は±1
Sat1G2(I)=状態Iの衛星1のG2符号化チップの値。取り得る値は±1
Sat2G1(I)=状態Iの衛星2のG1符号化チップの値。取り得る値は±1
Sat2G2(I)=状態Iの衛星2のG2符号化チップの値。取り得る値は±1
offset=衛星1と2のチップ単位の時刻差
Δθ* 衛星1と2のラジアン単位のチップ当りの位相変化
差(I−offset)が0未満の場合、1023がその差に加算されてその値を0乃至1022の範囲に維持することに注意されたい。言い換えれば、符号化チップ状態を戻す関数の領域は0乃至1022の範囲に限定される。
1023のビットごとの相関を計算するのに必要な計算時間は単一の制御部命令により8、16又は32ビット方式のXORを実行する標準の制御部命令を使用することにより加速することができる。以下は並列に8チップを計算する方法を示す。制御部のXOR演算に関し、他の都合の良いビット数に合うようにこの方式が容易に変形できることを当業者は直ちに認識するであろう。
G1及びG2の1023の状態は固定記憶装置に直線的に記憶されてもよい。こうして、所望のチップのアドレスとそれに整合するのに必要なズレを計算することにより単一の制御部ロード命令を用いて8、16、32又は何らかの他の都合の良いビット数を迅速に収集することができる。1023は31で割り切れるので32ビットは特に便利な数である。本実施例は従って、一度に32ビットを読み取り、C/A符号の1023チップにわたる33の間隔のそれぞれに対して一度にそれらの内の31個を使用する。31ビットの合計は8,8、8、及び7の4つの部分に分解され、7又は8ビットの合計にe−jΔθIが掛けられる(ただし、Iは各部に対して7.75チップだけ変化する)。合計の形式は以下の通り。即ち、
Σ(e−JΔθI*31*Σ(Sat1G1(I*31+J)*Sat1G2(I*31+J)*Sat2G1(I*31+Joffset)*Sat2G2(I*31*J−offset))+e−JΔθ(I*31+7.75)*Σ(Sat1G1(I*31+J+8)*Sat1G2(I*31+J+8)*Sat2G1(I*31+J+8−offset)*Sat2G2(I*31+J+8−offset))+e−jΔθ(I*31+15.5)*Σ(Sat1G1(I*31+J+16)*Sat1G2(I*31+J+16)*Sat2G1(I*31+J+16−offset)*Sat2G2(I*31+J+16−offset))+e−jΔθ(I*31+23.25)*Σ(Sat1G1(I*31+J+24)*Sat1G2(I*31+J+24)*Sat2G1(I*31+J+24−offset)*Sat2G2(I*31+J+24−offset)))
ここで、
I=0乃至32の範囲の外部インデックス
J=最初の三つの合計に対し0乃至7、最後の合計に対しては0乃至6の範囲の内部インデックス
内部合計は31ビット全てを含む32ビット・ワードを用い、ビット方式のXORを用いて掛け算を実行し、1ビット積を合計するためにずらして加算することにより並列に計算される。
上記の方程式におけるG1及びG2符号の掛け算の全てはビット方式XOR命令により実施されることに注意されたい。上記のアルゴリズムは正確な計算から多くとも−17dBだけ誤差があり、完成するには6000回の制御部動作を必要とする。
必要に応じて、周期的に、符号依存の相互相関係数が、小さい周波数差、即ち強弱の相互相関干渉を生じ得る周波数差を有する強力/微弱信号対の全てに対して計算される。本実施例では、強力信号はC/N0>40dBのものであり、微弱信号はC/N0>30dBのものである。I及びQ測定値の10msの積分は符号及び位相トラッキング・ループにより使用されるので、最大の「有意な」周波数差(モジュロ1000Hz)は90Hzである。好ましい実施例において、干渉するかも知れない信号対のそれぞれに対する符号依存の相互相関係数はトラッキング及び信号処理アルゴリズムが潜在的に使用し得る測定値のそれぞれに対して計算される。例えば、トラッキング・ループにより、進んだ測定値、定時の測定値、及び遅れた測定値が使用されるならば、これらの符号整合のそれぞれに対する相関係数が計算され、表に記憶される。
これらの表は、最大ドップラー差が9KHz未満、即ち秒当り6チップ未満であるので、10Hzの速度で更新するだけでよい。相互相関表を維持する以外に、周波数差による相互相関の周波数減衰が10Hzの速度で計算される。減衰は以下のように表される。即ち、
周波数減衰=sin(ΔF mod 1000*π/100)/(ΔF mod 1000*π/100)
ここで、
ΔF=強力信号と微弱信号の周波数差(Hz)、また
Mod=−500Hz乃至+500Hzの範囲を与えるモジュロ・オフセット
減衰は周波数差が5Hzを超えて変化する場合に計算し直すだけでよい。
強力信号の位相と振幅の推定値は相互相関を除去するために必要である。好ましい実施例において使用される方法はそれ自身の専用チャネルで強力信号をトラッキングし、微弱信号のI、Qサンプルが取得されるのと正確に同じ間隔にわたって出力されたI、Q測定値を収集することである。強力信号をトラッキングするために使用される複製信号の既知の位相と周波数は強力信号の実際の位相と周波数の優れた近似である。更に、強力信号は位相ロックされているので、I測定値の大きさは強力信号の振幅の良好な近似を与える。最後に、強力信号データ・ビットDの2位相変調は、データ・ビットが1から0に、あるいは0から1に移行するときは常に、強力信号の位相を180度回転させる。本実施例において、強力信号に対するI測定値の符号が負のときは常に強力信号の位相は複製信号の位相に180度を加えることにより補正される。
微弱信号をトラッキングするために割当てられたチャネルから10msごとにI,Q相関データの新しい組が利用可能である。干渉する強力信号の存在を予測するために相互相関係数の表がチェックされる。強力信号が予測されたら、以下の減算が実行されて強力信号を除去する。
相互相関:
FirstCodeOffset=WeakCodeState−StrongCodeState−StrongDoppler*△T−TableEntry0CodeState;
DeltaPhase=WeakCarrierPhase−StrongCarrierPhase−StrongDoppler*△T+DeltaKHz*StrongCodeState;
FirstPhase=FirstCorrelationPhase+DeltaPhase;
SecondPhase=SecondCorrelationPhase+DeltaPhase;
FirstMag=FirstCorrelationMag+FirstCodeOffsetFraction*StrongI*FrequencyAttentuation;
SecondMag=SecondCorrelationMag*(1−FirstCodeOffsetFraction)*StrongI*FrequencyAttenuation;及び
CorrectedWeakIQ=WeakIQ−FirstMag*e−jFistPhase−SecondMag*e−jSecondPhase
ここで、
WeakCodeState=微弱信号チャネルへの最新の出力の符号状態;
StrongCodeState=強力信号チャネルへの最新の出力の符号状態;
StrongDoppler=強力信号チャネルへの最新の出力のドップラー;
ΔT=微弱信号チャネルへの出力と強力信号チャネルへの出力間の時刻差;
TableEntry0CodeState=相互相関表の第1の要素の符号状態差;
WeakCarrierPhase=微弱信号チャネルへの最新の出力の搬送波位相角;
StrongCarrierPhase=強力信号チャネルへの最新の出力の搬送波位相角;
DeltaKHz=微弱信号チャネルおよび強力信号チャネルのドップラーの差の最も近い1KHzの整数倍(KHz単位);
FirstCorrelationPhase=FirstCodeOffsetで表示されるチップに対する相互相関表における位相入力;
SecondCorrelationPhase=FirstCodeOffset+1チップで表示されるチップに対する相互相関表における位相入力;
FirstCorrelationMag=FirstCodeOffsetで表示されるチップに対する相互相関表における振幅入力;
SecondCorrelationMag=FirstCodeOffset+1チップで表示されるチップに対する相互相関表における振幅入力;
FirstCodeOffsetFraction=FirstCodeOffsetにおけるチップの端数;
StrongI=強力信号チャネルからのI相関の絶対値;
FrequencyAttenuation=周波数オフセットによる減衰;
WeakIQ=微弱信号のチャネルからのIQ相関;及び
CorrectedWeakIQ=強力信号からの相互相関に対して補正されたIQ相関。
CorrectedWeakIQは、FirstCodeOffsetを適当に(例えばそれぞれチップの半分だけ)ずらすことにより進んだ相関器、定時の相関器および遅れた相関器に対して計算される。次いでこれらの修正された相関は通常は微弱信号に対して搬送波及び符号トラッキング・ソフトウェアで使用される。このアルゴリズムは微弱信号を減衰することなく少なくとも10dBだけ相互相関を減衰し、微弱信号と干渉しているかもしれないそれぞれの強力信号に対して繰り返される。
図97では異なるPRNを有する微弱信号からPRNを有する強力信号を消去するための相互相関を説明したが、CWジャミング信号を消去し、PRNを有する微弱信号を強調するように手順を修正してもよい。図98において、CWジャミング信号を識別及び除去する信号処理図が示され、この場合、図97の消去された信号はCWジャミング信号でもよい。受信機98−4700はアンテナ98−4702においてスペクトル拡散信号を受信する。相互相関器98−4704がCWジャミング信号を識別するようなモードに置かれる。そのモードにおいて、相互相関器はPRN符号に対して全て1を採用する。相互相関器98−4704は信号処理装置(SP)98−4706と、スペクトル拡散された信号を逆拡散する整合フィルタ(MF)98−4708とを有する。得られた信号はCWジャミング信号(強力信号)であり、トラッキング部98−4710においてトラッキングされる。本実施例のトラッキング部98−4710の例は位相ロック・ループ回路でもよい。
次いで、識別されたCWジャミング信号は複製CWジャミング信号98−4712を生成するために使用される。複製CWジャミング信号は信号処理装置98−4714と整合フィルタ98−4716を用いて作り出されてもよい。他の実施例において、所望の信号を生成する他のやり方が採用されてもよい。他のやり方の例には電圧制御発振器、デジタル信号処理、アナログ信号処理を含むが、これらには限定されない。
次いで、受信機98−4700により受信されたスペクトル拡散信号は、全て1ではない逆拡散符号を用いて相互相関器98−4714により処理される。スペクトル拡散信号内の受信された微弱信号は相互相関器98−4718内の信号処理装置により復調される。生成されたCWジャミング信号は消去部98−4720により微弱信号から消去される。次いで、得られた信号はトラッキング部98−4722によりトラッキングされる。トラッキング部98−4310によりトラッキングされているCWジャミング信号は、信号組合せ部98−4724によりトラッキングされたCWジャミング信号から所望の微弱信号を除去するように更に処理される。
CWジャミング信号の識別は三つの相互相関器98−4704、98−4718及び98−4712について生じるものとして説明された。しかし実際には、相互相関器を一つだけ使用して、その相互相関器にPRN符号を区別させ、CWジャミング信号を識別及び除去させてもよい。従って、所望でない信号(CWジャミング信号)の複製の生成は所望の信号の復調の間に生じる。
図99に目を転ずれば、図98の電気部品のブロック図が示される。微弱信号とCWジャミング信号を含むスペクトル拡散信号はアンテナ98−4702を介して受信機98−4700において受信される。スペクトル拡散信号は復調され、CWジャマ信号がジャマ・フィルタ99−4802によりフィルタリングされる。得られたCWジャミング信号はジャマ・トラッキング部99−4804によりトラッキングされる。次いで、トラッキングされたジャミング信号はジャマ複製波生成部98−4806により複製CWジャミング信号として複製される。CW信号は一定の位相の特性を有し、従って、複製されたCWジャミング信号はスケーリングされ、適当な位相まで回転されて(99−4808)、復調された微弱信号から減算される。微弱信号は復調部99−4810により復調される。次いで、位相及び振幅が複製されたCWジャミング信号は信号消去部99−4812により復調部99−4802からの微弱信号から減算される。次いで、得られた微弱信号はトラッキング制御回路99−4814によりトラッキングされる。トラッキング制御回路99−4814は復調部99−4810と二つの信号組合せ部99−4816及び99−4818に微弱信号を出力する。微弱信号は信号組合せ部99−4816によりCWジャマ信号から減算され、得られた信号は複製されたCWジャミング信号をスケーリング及び回転するために使用される。同様に、微弱信号は、より正確なCWジャミング信号がジャマ複製波生成部99−4806によって複製されるように、信号組合せ部99−4818によりCWジャミング信号から減算される。
本実施例は概ねCWジャミング信号について説明されたが、IS−95パイロット信号、ガリレオ(Galileo)信号、又は他の既知の搬送波等の個々の既知の信号が復調された所望の信号から識別、トラッキング及び除去されてもよいことは当業者には言うまでもない。信号処理の前、あるいは受信機のフロントエンドでCWジャミング信号を識別及び除去する他の既知の方法と違って、このやり方はCWジャミング信号をバックエンドにおいて識別及び除去する。これは、所望の信号がCDMA又は衛星測位システムのような低信号強度で受信されるときに有利である。そのような信号強度は所望の微弱信号を維持しながら信号の処理を支援するには十分でない。
図100に目を転ずれば、CWジャミング信号を識別及び除去するフローチャート100−4900が示される。手順が開始すると(100−4902)、受信機はスペクトル拡散信号を受信する(100−4904)。信号はフィルタリングされてもよく、相互相関器を用いてCWジャミング信号が識別される(100−4906)。CWジャミング信号が識別されると(100−4906)、それはトラッキングされる(100−4908)。次いで、トラッキングされたCWジャミング信号はジャマ複製波生成部により複製される(100−4910)。次いで、複製されたCWジャマ信号は受信された信号から減算される(100−4912)。CWジャミング信号は受信された信号から除去され、処理が完了する(100−4914)。
図101において、強力信号と中程度の信号の動作のためのトラッキング・システムの典型的で高レベルな実施例が示される。ハードウェア・トラッキング・ループ(「HWTL」)は予備検出積分(「PDI」)速度で動作する。この実施例はサブシステム3において行われる。実施の詳細はHWTL ASIC設計仕様書で利用可能である。ハードウェア(「HW」)は捕捉モードからトラッキング・モードに自分で移行して、自律的にHWTLを作動することはできない。HWTLを作動するモード遷移はソフトウェア(「SW」)制御の下にあり、捕捉処理の完了が成功したときに生じる。典型的には、ハードウェアからの入力は以下の通りである。
進んだタップと遅れたタップに対するIe、Qe及びIl、Ql、f+e及びf−e、f+l及びf−l;
Ie=進んだタップに対する同位相相関;
Qe=進んだタップに対する直交位相相関;
Il=遅れたタップに対する同位相相関;
Ql=遅れたタップに対する直交位相相関;
f+e=進んだタップに対する+1周波数ビン・オフセットに対する相関の大きさ;
f−e=進んだタップに対する−1周波数ビン・オフセットに対する相関の大きさ;
f+l=遅れたタップに対する+1周波数ビン・オフセットに対する相関の大きさ;
f−l=遅れたタップに対する−1周波数ビン・オフセットに対する相関の大きさ;及び
正規化を目的とするHWからのオート・スケール値
一例として、捕捉からの情報を利用して以下の状態が初期化されてもよい。即ち、1.符号位相、2.搬送周波数、3.搬送波位相、及び4.トラッキング・ループを正規化するために使用されるフィルタリングされた信号振幅推定値(「S_Gain」)(振幅推定値が利用可能な場合)。この例では、符号弁別器は以下により与えられてもよい。
D=|e|−|l|
|e|=sqrt(Ie*Ie+Qe*Qe)
|l|=sqrt(Il*Il+Ql*Ql)
搬送波位相弁別器は以下により与えられてもよい。
φ=sign(Ip)*Qp
Ip=Ie+Il
Qp=Qe+Ql
搬送波位相弁別器は以下により与えられてもよい。
δf=f+−f−
f+=f+e+f+l
f−=f−e+f−l
ここで、全ての計算は大きさあるいは大きさの近似値を用いて行われる。
サブシステム2の処理は
搬送波位相+=搬送周波数
搬送周波数+=搬送周波数速度
符号位相+=デルタ搬送波位相
により記述されてもよい。
一例として、トラッキング・ループ方程式は
搬送波位相+=K1*φ+K2*δf+Aid1
搬送周波数+=K3*φ+K4*δf+Aid2
搬送周波数速度+=K5*φ+K6*δf+Aid3
符号位相+=K7*D+Aid4
により記述されてもよい。
ゲインK1乃至K7は100msの速度でSWから入力されてもよい。HWTLモード遷移はこれらのゲインの値を通じて制御されてもよい。
一般的な例として、トラッキング・モード及びモード遷移は以下の説明により記述されてもよい。
ゲインK1〜K7の設定を通じて100msの速度でSWによる制御
初期モードにおいて、トラッキング・ループは広帯域幅(好ましくはPDIの反復速度のおよそ1/10で)周波数ループで初期化される。符号ループは、フィルタリングされた周波数誤差推定値<しきい値1であれば狭帯域幅周波数ループへの広帯域幅(好ましくは5Hz*捕捉誤差推定値で)遷移で初期化される。フィルタリングされた周波数誤差推定値<しきい値2であれば、広い搬送波位相ループへ遷移する。推奨されるPDIは4msである。好ましくは、FFTモードは8ポイントである。
初期モードから入った後の狭い周波数ループ。トラッキング・ループは狭帯域幅ループ(好ましくはPDI速度のおよそ1/20)に設定されてもよい。推定符号誤差<0.1チップなら、狭い符号ループ(好ましくは、およそ1/3Hzの帯域幅の)である。フィルタリングされた周波数誤差推定値<しきい値1なら、搬送波位相ループに遷移する。フィルタリングされた周波数誤差推定値>しきい値2なら、初期モードに遷移する。好ましくは、PDIは4msであり、FFTモードは8ポイントである。
初期モードから入った後の広い搬送波位相ループ。トラッキング・ループはK1〜K7を用いて広い搬送波(好ましくはPDI速度のおよそ1/4の帯域幅の)と狭い周波数の組合せループに設定されてもよい。推定符号誤差<0.1チップなら、狭い符号ループ(好ましくは、およそ1/3Hzの帯域幅の)である。(搬送波位相ロックが失われ、かつ、フィルタリングされた周波数誤差<しきい値1)なら、狭い周波数ループに遷移する。(搬送波位相ロックが失われ、かつ、フィルタリングされた周波数誤差<しきい値2)なら、初期モードに遷移する。フィルタリングされた位相誤差<しきい値なら、狭い搬送波ループに遷移する。好ましくはビット同期がなければおよそPDIは4msであり、ビット同期があれば20msであり、FFTモードは20ポイントである。
広い搬送波位相ループから入った後の狭い搬送波位相ループ。トラッキング・ループはK1〜K7を用いて狭い搬送波(好ましくは、PDI速度のおよそ1/10の帯域幅の)と狭い周波数の組合せループに設定される。推定符号誤差<0.1チップなら、狭い符号ループ(好ましくは、およそ1/3Hzの帯域幅の)である。(搬送波位相ロックが失われ、かつ、フィルタリングされた周波数誤差推定値<しきい値1)なら、狭い周波数ループに遷移する。(搬送波位相ロックが失われ、かつ、フィルタリングされた周波数誤差推定値<しきい値2)なら、初期モードに遷移する。好ましくは、ビット同期がなければおよそPDIは4msであり、ビット同期があれば20msであり、FFTモードは20ポイントである。
表13および表14に示すモード遷移表において、列は出発元のモードであり、行は行き先となるモードである。表中の記載は遷移条件を記述している。
符号と周波数ロックが失われた場合、全てのモードはトラッキング・システム外に遷移し、捕捉を開始してもよい。
図102はハードウェア更新を示す。サブシステム3に対する処理の終わりに、搬送波位相、搬送周波数、搬送周波数速度及び符号位相がサブシステム2状態において更新される。
符号状態は粗い分解能を有し、符号位相方程式は全ての小さな符号位相更新を累算し、符号lsbに達したら、サブシステム2の符号状態は更新される。これは以下の仕組みを用いて達成されるであろう。この仕組みは符号状態に対する変更の正規化された進んだ/遅れたトリガについての近似を記述する。Nは変更すべき符号状態におけるLSBの数である。
AGC正規化/オート・スケール
S_Gain(t+1)=Alpha * S_Gain+Beta*(|Ip|+|Qp|)
S_Gainはループ係数を正規化するために使用される。「t」は時間インデックスである。S_Gainはまた(進んだ出力−遅れた出力)を正規化してHWにおける符号状態に対する更新を決定するために使用されてもよい。
SWTLは成功した捕捉プロセスの終わりにSW制御によりHWTLと同時に作動される。SWTLは100msの速度で動作される。入力はPDI速度のバッファされたレポートとNCO状態についてのレポートから成る。SWはナビゲーション(NAV)及び/又は外部ソースからの支援を使用してより正確な誤差推定値を計算し、100msごとに一つの補正を行ってHWTLを調節することが期待される。特殊な場合、HWTLはまた無効化されてもよく、SWTLは自律的に動作して、100msとは異なる速度でHW・NCOに対する補正値を生成してもよい。HWはより高速で割込みを提供し、SWTLはそのような場合100msより速い速度で動作する。HWTLは各チャネルに対して一つの制御ビットを用いて無効化できる。
HWからの入力
100msの速度のNCSバッファ及びトラック履歴バッファ。内容:種々のオフセット、PDIに対するノイズ合計、オート・スケール値、PDIごとにサンプリングされたNCO状態、測定レポートの時刻を表す時刻マークに対する各PDIにおけるIとQの相関出力
状態初期化:
以下の状態が捕捉からの情報を用いて初期化される。
1.符号位相;
2.搬送周波数;
3.搬送波位相;及び
4.S_Gain(振幅推定値が利用可能な場合)
符号弁別器:
符号弁別器は以下の方程式で与えられる。
D=|E|−|L|
|E|=Alpha*|Ee|+Beta*|Ee+|
|L|=Alpha*|Le|+Beta*|Le+|
ここで、EeとLeはプロンプトからタップ1つ離れた進みのI及びQ値と遅れのI及びQ値であり、Ee+及びLe+はプロンプトからタップ2つ離れた進みのI及びQ値と遅れのI及びQ値である。
フィルタリングされた符号誤差=Alpha*フィルタリングされた符号誤差+Beta*D
搬送波位相弁別器:
φ=arctan(Qp,Ip)
φは各PDIに対して計算され、dφはソフトウェアにおいて維持される。
搬送周波数弁別器:
δf=Alpha*(f+−f−)+Beta*(Ip(t+1)*Qp(t)−Ip(t)*Qp(t+1))
ここで、tは時刻インデックスである。
トラッキング方程式:
トラッキング方程式はPDI速度で反復される。HWに戻される相関値は100msで生成される。
位相トラッキング・ループ:
搬送波位相+=搬送周波数+K1*dφ+Aid1
搬送周波数+=搬送周波数速度+K3*dφ+Aid2
搬送周波数速度+=K5*φ+Aid3
周波数トラッキング・ループ:
搬送周波数+=搬送周波数速度+K4*δf+Aid2
搬送周波数速度+=K6*δf+Aid3
符号ループ:
符号位相+=Scale*(搬送波位相(t)−搬送波位相(t−1))K7*D+Aid4
K7はKmax(高帯域幅値)に初期化されて、以下の通り更新される。
K7(t+1)=Alpha*K7+Beta*符号誤差推定値
K7>Kmaxなら、K7=Kmax
K7<Kminなら、K7=Kmin
トラッキング・ループ・モード遷移はゲインK1乃至K7を介して制御される。
AGC正規化:
S_Gain(t+1)=S_Gain_Rate*Gamma+Alpha*S_Gain+Beta*(|Ip|+|Qp|)
S_Gain_Rate(t+1)=Alpha*S_Gain_Rate+Beta*[(|Ip(t)|+|Qp(t)|)−(|Ip(t−1)|+|Qp(t−1)|)]
S_Gain及びS_Gain_Rateは信号の大きさと信号の大きさ変化の速度の推定値を表す。S_Gainはトラッキング・ループ方程式のゲインを正規化するために使用される。
ロック検出器の喪失
符号ロック
100msの信号対ノイズ比を計算する。計算は以下のように行われてもよい。
ノイズ電力=Sum(In*In+Qn*Qn),
ここで、合計は100msの期間にわたって行われる。In及びQnはPDI速度でのHWレポートにおけるノイズ合計からのI及びQ出力である。
信号電力=Sum(Ip*Ip+Qp*Qp),
ここで、合計は100msの期間にわたって行われる。
信号対ノイズ比=信号電力/ノイズ電力
フィルタリングされたSNR=Alpha*フィルタリングされたSNR+Beta*信号対ノイズ比+Gamma*SNR_Rate
SNR_Rate=Alpha*SNR_Rate+Beta*[信号対ノイズ比(t)−信号対ノイズ比(t−1)]
フィルタリングされたSNR<しきい値なら、ロックの喪失を宣言
搬送波位相ロック:
2象限アーク・タンジェント関数を用いたフィルタリングされた位相誤差の推定
φ=arctan(Qp,Ip)
PDIごとに計算
フィルタリングされたφ=Alpha*フィルタリングされたφ+Beta*φ
フィルタリングされたφ>しきい値なら、ロックの喪失を宣言
搬送周波数ロック:
フィルタリングされた周波数誤差の推定
δf=Alpha*(f+−f−)+Beta*(Ip(t+1)*Qp(t)−Ip(t)*Qp(t+1))
ここで、δfはPDI速度で計算される。
フィルタリングされたδf=Alpha*フィルタリングされたδf+Beta*δf
フィルタリングされたδf<しきい値なら、ロックの喪失を宣言
HWに対する更新はHWトラッキング・ループ方程式への支援の形を取ってもよい。これはソフトウェアからの入力として100msごとに実施されてもよい。支援は以下の一般的な方程式を用いて計算されてもよい。
SWからHWへの支援=ソフトウェア推定値−HW推定値
HWTLが無効なら、HW推定値=0
位相、周波数及び速度に対してHWはSWが該当するレジスタに書き込むときのみ一度支援を実施する。
測定レポート処理
擬似距離及び変化率の測定値はHWからSWへのインターフェースにおける記述のように構成されてもよい。
ビット同期は20〜100msの速度で動作してもよく、SWにおいて実施されてもよい。
入力:
HWは20個(プログラム可能)のオフセットに対して20msの累算(PDI)を提供する。入力配列ヒストグラム[20]は20msPDI電力累算から成っていてもよい。ヒストグラムは各SVに対して以下の方程式を用いて累算されてもよい。
AccumHistogram[20]+=Histogram[20]
オフセット情報が利用可能なら、多数のSVからのaccumHistogramが以下の方程式を用いて累算されてもよい。
AccumHistogramMultipleSV[20]+=AccumHistogram[20+SVオフセット]
やり方の第1の例:
ヒストグラムのピーク及び2番目のピークが検出される。
((ヒストグラムのピーク>しきい値)かつ(ヒストグラムのピーク−ヒストグラムの2番目のピーク)>しきい値)なら、ビット同期が完了し、ビット位置を出力
他の場合は累算を続行
やり方の第2の例:
20ms幅の三角形と累算されたヒストグラムの相関を取ることによりコスト関数を計算する。
コスト関数(オフセット)=Sum(triangle(ms)*AccumHistogram(ms−オフセット))
合計(Sum)は20個のミリ秒値にわたって行われる。コスト関数(オフセット)の最大値はビット同期オフセットを与える。
[{max(コスト関数(オフセット))>しきい値}かつ{max(コスト関数(オフセット))−2番目のmax(コスト関数(オフセット))>しきい値}]なら、ビット同期成功を宣言
データ復調:
データ復調は20〜10msの速度で動作してもよい。実施はSWにおいて行われる。
ビット同期成功後、20ms間のIp及びQpがビット境界に整合される。
搬送波位相ロックの場合、
データ・ビット=sign(Ip)
そうでない場合、
データ・ビット=sign[(Ip+j*Qp)*exp(j*搬送波位相の誤差推定値)]
ここで、jは複素係数である。このアルゴリズムは搬送波位相の推定誤差が以前のビットから生成される場合において、ディファレンシャルに復号する、より一般的なケースである。
フレーム同期:
フレーム同期は20〜10msの速度で動作し、SWにおいて実施されてもよい。
SVごとのバイナリ値の配列として与えられる、データ復調後のビット・ストリーム
やり方の例:
コールド・スタート(利用可能な情報なし)
プリアンブル同期。ビットパターンにおけるプリアンブルの識別。
HOWを復号。6秒ずれた第2のプリアンブルを識別し、1だけずれた第2のHOWを識別。
おおよその時刻が利用可能。
プリアンブルの識別。HOWを復号。HOWが時刻の不確定性の範囲内なら、フレーム同期完了を宣言。
フレーム同期確認。処理を繰り返し、HOWが6秒ずれて1だけ変化することを確認。
支援情報が利用可能で1SVがフレーム同期を完了。
以下のステップが実行されてもよい:
最初のSVフレーム同期からの時間を用いてフレーム同期を必要とするSVに対して予備測位を計算
ローカル時刻に対して問題のSVに対するフレーム開始を計算
フレーム同期情報を設定
支援ビットが利用可能
利用可能な支援ビットを用いてコスト関数を計算
コスト関数(オフセット)=Sum(支援ビット(ビット数)*ビット・ストリーム(ビット数+オフセット))
合計は利用可能なビットの全てにわたって行われる。
SVのオフセット情報が利用可能なら、以下の方程式を用いて多数のSVに対するコスト関数を組み合わせる。
組み合されたコスト関数(オフセット)+=コスト関数(オフセット+SVオフセット)
[{max(組み合わされたコスト関数(オフセット))>しきい値}かつ{max(組み合わされたコスト関数(オフセット))−2番目のmax(組み合わされたコスト関数(オフセット))>しきい値}]なら、フレーム同期完了を宣言。
一実施例のGPSシステムはクロック制御のためのシステム又は装置及びそれに関連する方法を含む。低電力リアルタイム・クロック(RTC)が全地球測位システム(GPS)受信機ユニットにおいて連続的に動作する。GPS受信機ユニットがGPS受信機ユニットの位置を計算するために使用される衛星情報を能動的に捕捉していない期間に、選択された構成要素を停止することによりGPS受信機ユニットが節電される。選択された構成要素が休止されるときは低電力時刻保持回路にあるK32(典型的には公称32,768Hz)発振器はGPS時刻を正確に保存する。K32発振器はRTC又は低電力クロックを生成する。低電力クロックとRTCという用語は本願では互換性をもたせて使用される。
RTCが起動時に使用されるほど十分に正確であるかどうかを決定する方法及び装置が開示される。一つの実施例において、例えばブラウンアウトが生じた場合のRTCクロック・サイクルの実際の喪失が検出される。一つの実施例において、RTCクロック発振器の出力は半波整流され、計算されたRC時定数を有する抵抗−コンデンサ(RC)回路への入力とされる。RC回路の出力は電圧比較器の一方の入力とされる。基準電圧が電圧比較器の他方の入力とされる。RTC発振器が所定数のサイクルを逸したら、電圧比較器に対するRC回路の出力電圧が崩壊し、比較器はクロック・サイクルの喪失を検出し、これが電圧比較器の出力に反映される。
図103は一つの実施例によるGPS受信機ユニット103−100のブロック図である。GPS受信機103−100は無線周波数(RF)機能を含み、本願ではこれはRFチップ103−103に存在するように示される。GPS受信機ユニット103−100は更にベースバンド機能を含み、本願ではこれはベースバンド・チップ103−105に存在するように示される。種々の機能を実行する種々の構成要素が本願ではある一定の配置で説明されるが、開示された発明は代わりの配置も予測している。例えば、ベースバンド・チップ103−105は図示のようにナビゲーション・プロセッサ104−210及びメモリ・デバイス104−220を含んでもよい。他の実施例において、ナビゲーション・プロセッサ及びメモリ・デバイスはベースバンド・チップ103−105になく、例えば周辺インターフェースを介してベースバンド・チップ103−105と通信してもよい。もっと他の実施例において、図示される構成要素と説明された機能の全てはワンチップ上にある。
RFチップ103−103はGPS発振器104−204を含み、これはGPS時刻を保持するために使用される高精度発振器である。以下は一つの実施例によるGPS受信機ユニット103−100の一般的動作の概要である。以下の概要において挙げられた構成要素が以下に示され説明される。GPS受信機ユニットがGPS受信機ユニットの位置を計算するために使用される衛星情報を能動的に捕捉していない期間中にGPS発振器104−204を含む選択された構成要素を停止することによりGPS受信機ユニット103−100が節電される。選択された構成要素が休止されるときは低電力時刻保持回路にあるK32(典型的には公称32.768Hz)発振器はGPS時刻を正確に保存する。
GPS発振器104−204は、複数の衛星から検出された信号に基づいてGPS時刻を正確に決定するために使用されるM11クロック信号と呼ばれるクロック信号を生成する。エッジ整列比率カウンタが、フリーラン・カウンタを用いてK32及びM11クロック信号を連続的にモニタし、K32クロック信号のエッジが所定の小さな許容値内でM11クロック信号と整合したときは、K32とM11のカウンタ値はラッチされる。T20エポックを生じるGPSタイミング生成器はM11クロックにより駆動されるので、フリーランのM11カウンタはまたT20エポックにおいてラッチされてそのカウンタとT20エポックの関係を確立する。こうして、GPS受信機ユニット103−100はK32クロック信号及びGPS M11クロック信号のタイミング及び速度とT20のタイミング・エポックとの相関を取ることができる。K32クロック信号、GPS M11クロック信号及びT20エポックの相関を取られたタイミングと速度はナビゲーション・プロセッサ104−210に供給され、それによりT20エポックにおけるGPS時刻の十分正確な推定値が計算されて捕捉された衛星PN符号信号の信号構造におけるPN符号期間の決定を可能にする。
GPS受信機ユニットの動作中に、ローカルGPS発振器とK32発振器の周波数が種々の動作温度で検出され、それにより、温度/周波数が両発振器に対して定められる。両方の温度/周波数表はメモリに記憶される。
次いで、GPS発振器を含むGPS受信機ユニットにある選択された構成要素は節電のために停止(作動停止)される。低電力時刻保持回路はオンのままである。周期的に、所定の期間の後に、アラーム・ユニットにより生成されたウェークアップ命令に応じてシステムが起動される。低電力時刻保持回路からのK32クロック信号はK32発振器の実際の動作温度とK32温度/周波数表からのデータに基づいて較正し直される。こうして、K32クロック速度は周期的に更新され、より正確にGPS時刻をトラッキングする。
特定の時点において、ナビゲーションの更新は特定のシステム応用の要求に従って実行される。周期的に較正し直されたK32クロック信号とGPSクロック温度/周波数表からのデータはM11クロック信号速度とGPS時刻を設定するために使用される。次いで、GPS衛星の位置が推定され、それにより受信された衛星信号から実際のGPS時刻が迅速に決定される。検出された衛星信号から正確なGPS時刻が決定されたら、M11及びK32信号は共にラッチされ、上記のようにT20エポックにおいて実際のGPS時刻と相関を取られて、更にそれらの温度較正表を改良及び更新する。次いで、選択された構成要素は節電するためにもう一度休止される。
上記のプロセスは必要なだけ繰り返され、それにより正確なGPS時刻が低電力時刻保持回路により維持される。GPS受信機ユニットのユーザが位置情報を要求するときは、GPS衛星位置及び距離がより正確な時刻保持に基づいて高精度で推定されるので、GPS受信機ユニットはGPS衛星から位置をより迅速に決定する。即ち、従来のプロセスを用いてGPS衛星に対する距離を推定するのに十分正確にGPS時刻を設定するためにサブフレーム・データを検出しかつサブフレーム・タイミングを決定するという、電力を浪費しかつ時間を浪費するプロセスが回避される。
再び図103に言及すれば、RFチップ103−103及びベースバンド・チップ103−105はシステム・インターフェースを介して通信する。一つの実施例において、システム・インターフェースはシリアル周辺(SPI)インターフェースであるが、他の実施例においては、システム・インターフェースは適当なメッセージング方式なら何でもよい。RFチップ103−103はアンテナ103−107を介して視野内の衛星から信号を受信する。衛星信号はサンプリングされ、SIGN/MAGラインによりシリアル・ストリームとしてナビゲーション・プロセッサに送られる。ベースバンド・チップ103−105とその構成要素は、GPS水晶振動子から生成されかつ典型的にはF0の倍数の周波数を有するACQCLK信号により動作する。種々の他の信号が図示のようなシステム・インターフェースを介して交換される。電力上昇(PWRUP)信号がRFチップ103−103に送られて、捕捉及びナビゲーションの前にRFチップ103−103の電力低下された構成要素の電力を上昇する。SPI_CLK信号が同期のためにベースバンド・チップ103−105からRFチップ103−103に送られる。データラインSPI_DI及びSPI_DOがデータをやり取りする。チップ有効化信号(RFRST)がRFRSTラインによりRFチップ103−103に送られ、リセット信号(SRESET_N)がRFRSTラインによりベースバンド・チップ103−105に送られる。他の実施例において、RFチップ103−103とベースバンド・チップ103−105間の情報を交換するために種々の異なるプロトコルが使用される。
図104は低電力時刻保持回路104−200を含むGPS受信機ユニット103−100の選択された構成要素を図解するブロック図である。GPS受信機ユニット103−100は少なくとも無線104−202、ローカルGPS発振器104−204、温度センサ104−206、複数のGPS信号プロセッサ・チャネル104−208(1乃至N)、ナビゲーション・プロセッサ104−210、整合フィルタ104−212、A/D変換器104−214、ローカルGPSクロック生成器104−216、エッジ整列比率カウンタ104−218、メモリ104−220及び低電力時刻保持回路104−200を含む。メモリ104−220は更にウェークアップ・アラーム論理104−222及びGPSクロック低電力時刻保持(LPTK)回路誤差の温度/周波数誤差表104−224のための割当て部を含む。図104は発明の動作と機能に関係する構成要素を図解することに限定される。図示されない他の構成要素にはGPS受信機ユニット103−100が含まれる。これらの構成要素は、この開示には動作及び機能の議論が不要であるので、省略される。
無線104−202は複数の衛星から複数のGPS信号を検出する。一つの実施例において、無線104−202はGPS L1周波数帯(1575.42MHz)を選択する。しかしながら、他の実施例は他の適当な信号を選択してもよい。無線104−202はまたローカルGPS発振器104−204から結線104−226を介してタイミング信号を受信する。タイミング信号は、一つの実施例において、実質的に10.949メガヘルツ(MHz)で発振する、M11クロック信号と呼ばれるローカルGPS発振器104−204にある水晶(図示せず)により生成される。他の実施例は発明の動作と機能から実質的に逸脱することなく異なる周波数のクロック信号で動作するローカルGPS発振器を採用してもよい。
受信されたGPS信号とM11タイミング信号は複数のGPS信号プロセッサ104−208と整合フィルタ104−212に送られる。複数のGPS信号プロセッサ104−208のそれぞれは特定の信号チャネルに対応する。図104はN個のGPS信号プロセッサがあることを示す。例えば、GPS受信機ユニット103−100のある実施例は12の信号チャネルを並列に処理するように較正された12個のGPS信号プロセッサ(N=12)を採用してもよい。
信号プロセッサ104−208及び整合フィルタ104−212はナビゲーション・プロセッサ104−210から結線104−230を介して、各信号プロセッサが探索すべき個々のGPS PN符号を指示する一連の予備測位命令を受信する。ナビゲーション・プロセッサ104−210により提供された情報は、ドップラー補正値、GPS発振器誤差補正値、PN符号位相情報及び/又は入ってくる衛星信号に関する他の関係情報を含んでもよい。
一つの実施例において、整合フィルタ104−212は検出信号の現在のPN符号位相を決定し、その情報を信号プロセッサ104−208に提供して信号プロセッサ・チャネルがその信号をより迅速に捕捉できるようにする。信号プロセッサ104−208の一つが、PN符号、符号位相および周波数補正が入ってくるGPS信号の一つのそれと整合するような信号をチャネルにより検出したら、GPS信号プロセッサは入ってくる衛星信号と同期し、それをトラッキングする。別の実施例は位置を決定するために整合フィルタ104−212のみを採用する(整合フィルタ104−212はある時点の信号の現在の符号位相を決定し、連続的にそれをトラッキングしないので精度が低いけれども)。この整合フィルタの実施例はまた、捕捉された衛星信号の全ての連続的で正確なトラッキングを可能にする整合フィルタの高速多重化を可能にする。
整合フィルタ104−212及び/又はGPS信号プロセッサ104−208は捕捉信号に関する符号位相情報をそれぞれ結線104−234及び/又は104−232を介してナビゲーション・プロセッサ104−210に提供する。次いで、ナビゲーション・プロセッサ104−210は少なくとも4つのGPS衛星信号から十分な情報が整合フィルタ104−212及び/又はGPS信号プロセッサ104−208により提供された後にGPS受信機ユニット103−100の位置を計算する。次いで、位置情報はインターフェース・システム(図示せず)に出力されて、ユーザはGPS受信機ユニット103−100の位置を知ることができる。
ローカルGPS発振器104−204は所定の発振周波数を有する信号を供給する。例えば、しかしこれに限定しないが、ローカルGPS発振器104−204の一つの実施例にある水晶(図示せず)の発振周波数は10.949296.875メガヘルツ(MHz)に等しくなるように構成される。ここで、発振周波数の正確な公称値は137F0/128に等しい。F0は10.23MHzに等しいGPSシステムの基本パラメータである。受信されたGPS信号のGPS L1周波数は154F0である。商用システムに使用されるクリア/捕捉(C/A)GPS PN符号のチップ速度はF0/10である。GPS発振器104−204の一つの実施例はM11クロック信号を出力するものとして言及されるが、この場合、用語「M11」は10.949296.875MHzの137F0/128周波数に対応する。軍事用受信機により使用される周波数及び符号を含むGPSシステムの他の信号もF0に関係する。
ローカルGPS発振器104−204は結線104−234を介してM11クロック信号をローカルGPSクロック生成器104−216に供給する。ローカルGPSクロック生成器104−216はM11クロック信号から複数のクロック信号を導き出す。これらのクロックはローカルGPS時刻基準に対応する。特に興味深いことに、複数のクロックの一つがローカル・タイミング・エポック、T20クロックとして知られている。T20クロックはそのクロック刻み幅が20msであることからその名前が由来する。GPS信号プロセッサ104−208と整合フィルタ104−212で測定された符号位相の多くは共通のT20エポックと参照される。ローカルGPSクロック生成器104−216により生成された選択されたクロック信号は結線104−236を通じてGPS信号プロセッサ104−208と整合フィルタ104−212に供給される。
以下に詳細に述べられる低電力時刻保持回路104−200はクロック信号を結線104−252を介してエッジ整列比率カウンタ104−218に供給する。クロック信号速度は一つの実施例において、実質的に32.768キロヘルツ(KHz)での水晶発振により供給され、K32クロック信号と呼ばれる。また、低電力時刻保持回路104−200はナビゲーション・プロセッサ104−210に情報を提供する(結線は図示せず)。典型的には、低電力時刻保持回路104−200によりナビゲーション・プロセッサ104−210に供給される情報はT20エポックでのGPS時刻の推定値である。他の実施例は発明の動作及び機能から実質的に逸脱することなく異なるクロック周波数を採用してもよい。
図105及び106に関連して以下により詳細に図示及び記述されるブラウンアウト検知回路104−235がRTCクロック・サイクルの喪失を検出する。以下により詳細に述べられるように、ブラウンアウト検知回路104−235はRTCクロック・サイクルの喪失がRTCを非常に不正確にし、それによりナビゲーション・プロセッサを起動及び通知できなくする状況を検出する。
エッジ整列比率カウンタ104−218は、(結線104−244を介して)ローカルGPSクロック生成器104−216に、(結線104−246を介して)整合フィルタ104−212に、及び(結線104−248を介して)低電力時刻保持回路104−200に入力を供給する。図解の都合により、結線104−244、104−246及び104−248は別個の結線として図解される。しかしながら、これらの結線の一つ以上を単一の結線として実施することもできる。エッジ整列比率カウンタ104−218はまた結線104−250を介して情報をナビゲーション・プロセッサ104−210に提供する。エッジ整列比率カウンタ104−218はK32及びM11クロック信号を連続的にカウント及びモニタし、K32クロック信号のエッジが所定の小さな許容値内でM11信号のエッジに整合したときに、K32及びM11カウンタ値がラッチされる。ラッチの時点において、エッジ整列比率カウンタ104−218は信号をローカルGPSクロック生成器104−216に供給し、それにより、現在のT20クロック・カウントが、K32及びM11カウントをT20エポックに関連付けるようにラッチされる。同様に、エッジ整列比率カウンタ104−218は結線104−248を介して信号を低電力時刻保持回路104−200に供給するが、これによりGPS時刻についての現在の低電力時刻保持回路104−200の推定値がラッチされる。こうしてGPS受信機ユニット103−100はK32クロック信号及びGPS M11クロック信号のタイミング及び速度とT20エポック及び現在の低電力時刻保持回路104−200のGPS時刻との相関を取ることができる。K32クロック信号、GPS M11クロック信号、低電力時刻保持回路104−200のGPS時刻及びT20エポック・カウントの相関を取られたタイミング及び速度がナビゲーション・プロセッサ104−210に供給されるときに、T20エポックにおけるGPS時刻についての低電力時刻保持回路104−200の推定値を計算でき、これら二つのクロックの相対速度をエッジ整列比率カウンタ104−218における二つのクロックのカウンタ比から推定できる。相対クロック周波数を推定するために、連続するエッジ整合イベントからの二組のカウンタ値の差分が取られ、差分の比が取られる。
全てのクロックの速度とタイミング位相が正確に関連付けられることに注意されたい。EARCフリーランM11カウンタ及びT20エポック生成器は共にM11クロックにより駆動される。従って、T20エポックでのM11のラッチはカウンタ値とT20エポック時刻を関連付ける。RTC時刻及びEARCフリーランK32カウンタは共にK32クロックにより駆動される。従って、RTCアラーム・イベントでのK32カウンタのラッチはカウンタ値とRTC時刻を関連付ける。RTCは所望のRTC時刻にラッチ信号として有用なパルスを生じるアラーム回路を有する。エッジ整合イベントにおいてフリーランのK32及びM11カウンタをラッチするためにEARCを使用することはK32及びM11カウンタ値を関連付ける。二つの整合イベントからの個々のK32及びM11カウンタ値の差分をとることにより、K32及びM11クロック速度が関連付けることができる。最後に、GPS信号がトラッキングされているときは、GPS解の計算はGPS時刻に対する正確なT20エポックでのGPS時刻とT20エポックでの速度を提供する。従って、K32及びM11クロック速度はGPSクロック速度に関連付けられ、RTC及びT20エポック時刻はGPS時刻に関連付けられる。
当業者は、GPS受信機ユニット103−100の上記の動作がGPS受信機ユニットの実施例により使用される一つのシステムの一般的な説明として意図されたものであることを認識するであろう。GPS受信機ユニット構成要素の全てが述べられ、あるいは図解されたわけではない。それはそれらの構成要素は必ずしも発明に関係しないからである。従って、GPS受信機ユニット103−100にある上記の構成要素は概ね発明の理解に必要な程度にこれらの構成要素の動作及び機能を説明することに限定される。更に、本発明を採用するGPS受信機ユニット又は他の処理システムは図104に示されるものとは異なった順序及び方式で接続された図104に示される構成要素を有してもよく、あるいは図104に示される構成要素の全てを含まなくてもよく、あるいは図104に示される構成要素に何らかの方式で接続された更なる構成要素を含んでもよい。本発明を利用するGPS受信機ユニット又は処理システムにおけるそのような如何なる変形もこの開示の範囲内にあり、また添付の特許請求の範囲により保護されると考える。
温度センサ104−206は結線14−238を介してローカルGPS発振器104−204の動作温度を検出する。次いで、感知された温度情報は結線104−240を通じてA/D変換器104−214に提供される。A/D変換器104−214は感知された動作温度情報を適当な形式に変換し、結線104−242を介してその情報をナビゲーション・プロセッサ104−210に提供する。温度センサ104−206とA/D変換器104−214は温度検出の技術において採用される周知の構成要素と技術を用いて実施してもよい。温度センサ104−206及び/又はA/D変換器104−214により行われる温度感知機能は温度感知の技術において広く採用される如何なるタイプの電子部品、半導体及び/又はファームウェア型「不良」の温度センサ又は手段で実行してもよい。本発明に採用されるそのような温度センサは温度感知の技術において広く採用される構成要素及び技術を用いたソフトウェア及びファームウェアの組合せにより実施される。温度センサ104−206とA/D変換器104−214の、それらの個々の構成要素を含む詳細な動作は発明の動作及び機能を理解するのに必要な程度以上に詳細には説明しない。当業者は、温度センサ104−206とA/D変換器104−214が発明の機能及び動作から実質的に逸脱することなく種々の周知の装置を用いて実施してもよいことを認識するであろう。
ナビゲーション・プロセッサ104−210は、受信した温度情報を処理して、ローカルGPS発振器104−204の動作温度によるGPS発振器信号の周波数誤差を決定する。この周波数誤差を決定するための典型的なプロセスは、ある範囲の動作温度についての温度および周波数誤差情報を有する表を使用する。一実施形態において、GPSクロック温度/周波数誤差表104−224は、不揮発性メモリ104−220に存在する。初めに、典型的な水晶発振器の温度の関数としての周波数誤差の多項式表現といった周波数/温度誤差アルゴリズムが使用されて、温度に関連した周波数誤差を概算する。GPS受信機ユニット103−100は経時的に運用されるので、温度/周波数誤差表104−224のGPSクロック・データのための部分は、種々の動作温度でのGPS衛星の距離(レンジ)およびレンジ・レート測定値に基づく周波数誤差の測定値に基づきローカルGPS発振器104−204について特定の動作温度での周波数誤差のより正確な情報が書き込まれている。GPSナビゲーション方程式の解法は、受信機の空間的な速度およびローカル発振器の周波数誤差(GPS時刻誤差の変化率)とともに、空間的な位置およびGPS時刻誤差の決定を可能にする。そうして決定された発振器の周波数誤差は、温度/周波数誤差表104−224における新しい更新点として現在の発振器温度と対にされる。
ナビゲーション・モードに入る前に、受信機は温度/周波数誤差表104−224を使用して衛星捕捉プロセスを支援する。現在の動作温度を受け取ると、ナビゲーション・プロセッサ104−210は、温度/周波数誤差表104−224に存在するGPSクロックの表情報を検索する。ローカルGPS発振器104−204の実際の動作温度は、ローカルGPS発振器104−204によって生成される信号の周波数誤差を推定するために温度/周波数誤差表104−224のデータと相関づけられる。このGPSクロック周波数誤差情報は、結線104−230を通じてGPS信号プロセッサ104−208および整合フィルタ104−212に供給される。その代わりに、温度/周波数誤差表104−224が部分的に記入されているだけで正確な現在の動作温度の十分なデータを含んでいない場合、周波数/温度誤差の外挿または補間アルゴリズムが、ローカルGPS発振器104−204の動作温度によるGPS発振器信号の誤差を推定するために使用されるかもしれない。このアルゴリズムは、使用しているタイプのGPSクロック水晶発振器の公称温度対周波数曲線の形状とともに現在の動作温度に最も近い温度での表の点を利用する。
図105は、GPS受信機ユニット103−100の付加的な詳細を例示しているブロック図である。低電力時刻保持回路104−200は、少なくともK32発振器105−302、信号ラッチ105−304、温度センサ105−308および、低電力クロックすなわちリアルタイム・クロック(RTC)105−306をさらに含む。
K32発振器105−302は、32.768kHzにほぼ等しい周波数を有するK32クロック信号とも称するRTCクロック信号を結線105−310を通じて出力する。K32発振器105−302は約30マイクロ秒に等しい32768Hzの時間分解能を有するK32クロック信号を供給するので、K32発振器105−302は、単一のPN符号周期の±0.5ミリ秒分解能の範囲内に十分に収まる周波数を有するクロッキング信号を供給する。
RTCクロック信号は結線105−310でブラウンアウト検知回路104−235に送られる。ブラウンアウト検知回路104−235については以下でさらに詳細に説明する。
K32発振器105−302は、その出力K32クロック信号を低電力クロック105−306内のカウンタおよびエッジ整列比率カウンタ104−216に供給する。K32クロック信号のエッジが所定の小さな許容範囲内でM11信号のエッジと整列したとエッジ整列比率カウンタ104−216が判定した時に、ラッチ信号が結線104−248を通じて信号ラッチ105−304に供給される。低電力クロック・カウンタ105−306の現在値は、エッジ整列信号が結線104−248を通じて受信された時に信号ラッチ105−304にラッチされる。信号ラッチ105−304にラッチされた値は、結線105−316を通じてナビゲーション・プロセッサ104−254に供給される。こうして結線105−316の信号は、低電力クロック信号またはRTCクロック信号である。エッジ整列比率カウンタ104−216は、エッジ整列比率カウンタのM11およびK32カウンタのラッチされた値を整列イベント・エポックにおいてナビゲーション・プロセッサ104−210に供給する。T20エポックはGPS発振器M11クロック(図示せず)に直接関連づけられるので、エッジ整列比率カウンタ104−216のM11カウンタ値は、所定の整数のM11クロック刻みのオフセットとして低電力クロック105−306におけるK32カウンタ値に関連づけられる。K32およびM11クロック・エッジが誤差の小さい(無視できる)窓範囲内で整列した時にカウンタ値はすべて取得されるので、クロック刻みの数は整数である(いかなる分数のクロック刻み成分も持たない)。低電力クロック105−306がGPSシステム時刻のタイミングおよびレートに厳密に較正されたので、低電力クロック105−306の値およびローカルGPS時刻線における特定のT20エポックのオフセットを知ることにより、低電力時刻保持回路104−200のGPS時刻はT20エポックに正確に転写され得る。全てのGPS測定信号処理はT20エポックと関連しているので、この場合、測定を正確なローカルGPS時刻推定に関して行うことができる。
K32発振器105−302および低電力クロック105−306は、それぞれ、特に以下で説明するようにして停止されるGPS受信機ユニット103−100に存在する所定の構成要素と比較した場合、相対的に極めて電力消費の低い装置である。さらに、K32発振器105−302および低電力クロック105−306は、市販されており比較的安価である。代替として、そして好ましくは、K32発振器105−302および低電力クロック105−306は、よりいっそうの低コスト、小型化およびより正確な時刻伝達性能を提供するためにGPS装置103−100に組み込むことができる。
図105に例示されたように、温度センサ105−308が結線105−318を通じてK32発振器105−302の動作温度を検出する。検知された温度情報はその後、結線105−320を通じてA/D変換器104−214に供給される。A/D変換器104−214は、検知された温度情報を適当な形式に変換し、K32動作温度情報を結線104−242を通じてナビゲーション・プロセッサ104−210に供給する。温度センサ105−308は、温度を検出する技術において使用される周知の構成要素および技法を用いて具体化され得る。温度センサ105−308によって実行される温度検知機能は、温度を検知する技術において一般に使用される如何なるタイプの電子部品、半導体またはファームウェア型の温度センサまたは手段により具体化され得る。本発明において使用されるそうした温度センサ105−308は、温度を検知する技術において一般に使用される構成要素および技法を用いてソフトウェアおよびファームウェアの組合せによって具体化されている。温度センサ105−308の詳細な動作は、本発明の動作および機能を理解するために必要な程度を超えては詳述しない。当業者は、温度センサ105−308が本発明の機能および動作を著しく逸脱することなく多様な周知の装置を用いて具体化され得ることを理解するであろう。本発明の一部として使用されている温度センサ105−308のあらゆるそうした実施形態は、この開示の範囲内であり添付する特許請求の範囲によって保護されることを意図する。
メモリ104−220に含まれた温度/周波数誤差表104−224の一部は、K32発振器105−302についての温度/周波数データを記憶するために使用される。ナビゲーション・プロセッサ104−210は、上述したローカルGPS発振器104−204の周波数誤差とほぼ同様に、K32発振器105−302の現在の動作温度に基づきK32発振器105−302からの信号に関係する周波数誤差を計算する。GPS受信機ユニット103−100が経時的に運用されるので、温度/周波数誤差表104−224には、種々の動作温度での周波数誤差の測定値に基づきK32発振器105−302について特定の動作温度での周波数誤差のより正確な情報が書き込まれる。M11 GPS発振器の場合と異なり、ナビゲーション・プロセッサ104−210は、K32発振器での誤差を測定する直接的な手段を持たない。しかし、ナビゲーションの間に、ナビゲーション・プロセッサ104−210はGPS発振器105−302からのM11信号の誤差を正確に推定することができ、その後、エッジ整列比率カウンタ104−216を使用してGPS時刻をT20エポックから、T20エポックからのほぼ整数のM11刻み幅の既知のオフセットを有するK32刻み幅での低電力クロック値に転写することができる。GPS距離測定がT20エポックに関して行われるので、T20エポックは、ナビゲーション解がGPS測定値から利用可能である時に正確に知ることができるGPS時刻誤差を有する。ナビゲーションの間にT20エポックのGPS時刻の精度を低電力クロック105−306に転写することは、現在のK32発振器105−302温度でのK32クロック信号を較正する。
代替として、温度/周波数誤差表104−224におけるK32発振器105−302のデータが部分的に書き込まれているだけの場合、本発明の実施形態は、典型的なK32水晶発振器105−302の温度の関数としての周波数誤差の多項式表現といった周波数/温度誤差アルゴリズムを使用して、有効な表の値を有する最も近い温度の値(単数または複数)からの外挿または補間に基づきK32クロック信号の温度に関連した周波数誤差を概算する。そのようなアルゴリズムは周波数誤差と動作温度とを数学的に相関づける。
電力を節約するために、GPS受信機ユニット103−100の構成要素のうちの多く、およびGPS装置の他の構成要素は、電源が切断される。スリープ期間またはスリープ・モードと呼ばれる構成要素が電力を節約するために電源を切断されている期間の間、本発明は後述の通りGPS時刻を正確に把握し続ける。従って、GPS受信機ユニット103−100が、「ウェークアップ・イベント」に応答して、または位置を決定すべきことを指示する別の信号に応答して、スリープ・モードを出る時に、GPS時刻は正確に維持されており、それによりGPS衛星をトラッキングしてGPS受信機ユニット103−100の場所を決定するために必要とされる時間を最小限にすることができる。
例えば、以下に限らないが、ローカルGPS発振器104−204、無線104−202、ローカルGPSクロック生成器104−216および/またはGPS信号プロセッサ104−208は、電力を節約するためにナビゲーション・プロセッサ104−210によって停止され得る。構成要素が入ってくるGPS衛星信号を能動的に処理することを要求されない時に所定の構成要素を停止することにより、GPS受信機ユニット103−100による全体の電力消費を低減し、それによって携帯型のGPS受信機ユニット103−100における限られた電源寿命を延長する。一般に、動作中に相対的に大きな電力量を消費する構成要素が停止に選定される。GPS受信機ユニット103−100の設計者が停止プロセスの間に電源を切断するべき構成要素を選定することが理解される。GPS受信機ユニット103−100には停止され得る極めて多数の構成要素が存在するので(それらの多くはまだ説明していない)、当業者は、停止され得る構成要素の詳細な説明および一覧が、都合よく列挙し詳述するにはあまりに数が多すぎることを理解するであろう。本発明に従って停止される構成要素のあらゆるそうした組合せは、この開示の範囲内であり、添付の特許請求の範囲によって保護されるように意図されている。
従来のGPS受信機において所定の構成要素を停止することは、GPS衛星信号のトラッキングの喪失をもたらす。そうした従来のGPS受信機がGPS衛星信号を失った後に始動する場合、GPS衛星信号の再捕捉および/またはそれらの信号を用いたナビゲーションのために十分な精度のGPS時刻の確立のために数秒は必要とされる。従来のGPS受信機における衛星信号および時刻の再捕捉に要求される時間は、それに応じた電力の使用をもたらす。従って、スリープ期間中にGPS時刻を正確に維持する低電力時刻保持回路104−200は、GPS受信機ユニット103−100がGPS衛星信号をより迅速に再捕捉することを可能にし、それによって電力リソースを節約する。
ウェークアップ・コマンドは、定期的にGPS受信機ユニット103−100に供給される。定期的なウェークアップ・コマンドの時間間隔は、低電力時刻保持回路104−200が具体化されるGPS受信機ユニット103−100の特定のアーキテクチャまたは用途に基づいて決定される。ウェークアップ・コマンドの時間間隔は、停止後にナビゲーション・プロセッサ104−210により推定されたローカル複製PN符号位相と入ってくるPN符号との間の累計時刻誤差が、入ってくるGPS衛星信号の実際のPN符号位相の±0.5ミリ秒以下であるように選定される。ナビゲーション・プロセッサ104−210によって推定されたPN符号が±0.5ミリ秒の判定基準を超えた場合、ナビゲーション・プロセッサ104−210は、GPS衛星情報を獲得するために従来のプロセスを開始する。一般に、受信機103−100は、考えられる誤差累計を推定し、それに応じて正しいアルゴリズムを選択しなければならない。選択されたアルゴリズムが(従来の捕捉ではなく高速捕捉を用いるには)楽観的すぎるかもしれないので、ナビゲーション・プロセッサ104−210は、結果として得られた位置および時刻誤差の解を推測的な仮定値と比較することによって時刻精度の仮説を確認しなければならない。組合わされた時刻および時刻と等価な位置誤差が実際に±0.5ミリ秒を超えている場合、結果として得られた解は一般に見分けがつくほど大きな誤差で推測値と異なっているであろう。誤差が±0.5ミリ秒より大きくなければ、GPS時刻は低電力時刻保持回路104−200によって十分な精度で維持されていたことになる。
アラーム・ユニット105−324は、定期的なナビゲーション更新とも称する定期的なウェークアップ・コマンドを具体化する機能を実行する。アラーム・ユニット105−324は、少なくともアラーム・レジスタ105−326および比較器105−328を含む。一実施形態において、シャットダウンの前に、ナビゲーション・プロセッサ104−210は、アラーム・ユニット105−324がGPS受信機ユニット103−100をウェークアップする定期的な時間を規定するためにウェークアップ・アラーム論理104−222を実行する。別の実施形態では、時間は事前に規定されている。
ウェークアップ・コマンドが発行される時を規定するこれらの期間は、結線105−330を通じてアラーム・レジスタ105−326に供給される。一実施形態において、期間はGPS時刻単位(TOWおよび週数)で規定される。別の実施形態では、実時間といった別の適切な時間が期間を規定するために使用される。
GPS受信機ユニット103−100がスリープ・モードに入ると、アラーム・ユニット105−324は、現在のスリープ・モード時間を決定するために低電力クロック105−306(スリープ・モード中もシャットダウンされない)から供給されるK32クロック信号を監視する。比較器105−328は、現在のスリープ・モード時間を、アラーム・ユニット105−324がGPS受信機ユニット103−100をウェークアップするべき定期的な時間と比較する。現在のスリープ・モード時間と定期的な時間が一致した時に、アラーム・ユニット105−324は定期的なウェークアップ・コマンドを生成する。この定期的なウェークアップ・コマンドは、スリープ期間中に停止されていた構成要素の始動を開始する。
一実施形態において、定期的なウェークアップ・コマンドは、特殊目的の専用ハードウェアを用いて始動を開始する。例えば、ウェークアップ・コマンドは、スリープ期間中に停止されていた構成要素が電力を供給されるように1つ以上の電力スイッチを作動させる。別の実施形態では、ウェークアップ・コマンドは、スリープ期間中に停止されていた構成要素をウェークアップするためにウェークアップ・アラーム論理が実行されるように、ナビゲーション・プロセッサ104−210に供給される。
アラーム・ユニット105−324およびその関係する構成要素は、ウェークアップ・コマンドを生成する技術において使用される周知の構成要素および技法を用いて具体化され得る。アラーム・ユニット105−324およびその関係する構成要素の詳細な動作は、本発明の動作および機能を理解するために必要な程度以外に詳述しない。当業者は、アラーム・ユニット105−324およびその関係する構成要素が、本発明の機能および動作を著しく逸脱することなく多様な周知の装置を用いて具体化され得ることを理解するであろう。本発明の一部として使用されているアラーム・ユニット105−324およびその関係する構成要素のあらゆるそうした実施形態は、この開示の範囲内であり添付する特許請求の範囲によって保護されるように意図されている。
代替実施形態は、停止および始動機能を実行する他の適切なプロセッサ(図示せず)を使用するかもしれない。そのようなプロセッサおよびその関連する構成要素は、スリープ期間中に停止されないであろう。そのような代替プロセッサは、定期的なウェークアップ・コマンドを生成するように機器構成されるであろう。プロセッサは、GPS受信機ユニット103−100に存在する(図103および104には図示されていない)別のシステムの構成要素であるかもしれないし、またはGPS受信機ユニット103−100に存在するスタンドアロンの専用プロセッサであるかもしれない。定期的なウェークアップ・コマンドを生成する機能を実行するためにGPS受信機ユニット103−100で実行されるあらゆるそうした代替実施形態は、この開示の範囲内であり添付する特許請求の範囲によって保護されるように意図されている。
また、ユーザは、位置照会に対応する手動で開始されたウェークアップ・コマンドを受け取った時点で構成要素を始動するように、GPS受信機ユニット103−100に命令することができる。例えば、GPS受信機ユニット103−100のユーザがGPS受信機ユニット103−100の現在位置を知りたい場合、ユーザは手動ウェークアップ・コマンドを開始する。ユーザがGPS受信機ユニット103−100に照会するための適切な手段が設けられる。ウェークアップ・コマンドを手動で開始する手段は、装置を作動させる技術において使用される周知の構成要素および技法を用いて具体化され得る。ウェークアップ・コマンドを手動で開始する手段の詳細な動作は、本発明の動作および機能を理解するために必要な程度を超えては詳述しない。当業者は、ウェークアップ・コマンドを手動で開始する手段が、本発明の機能および動作を著しく逸脱することなく多様な周知の装置を用いて具体化され得ることを理解するであろう。本発明の一部として使用されているウェークアップ・コマンドを手動で開始する手段のあらゆるそうした実施形態は、この開示の範囲内であり添付する特許請求の範囲によって保護されるように意図されている。
ウェークアップ・コマンドが起動を開始すると、ローカルGPSクロック生成器104−216によって供給されるクロッキング信号(例えばT20エポック)は、まず衛星信号を再捕捉し、次いでGPS衛星の距離測定のための共通ローカルGPS時刻フレームを再確立するために6秒のデータ・サブフレームを収集しなければ、GPS受信機ユニット103−100が位置更新を実行できるようにするために必要とされる精度の範囲内にはないはずである。しかし、低電力時刻保持回路104−200によって維持された時刻、および入ってくるPN符号に基づき、停止期間の終了後にナビゲーション・プロセッサ104−210によって推定されたPN符号が、入ってくるGPS衛星信号の実際のPN符号時刻の±0.5ミリ秒以下であるように維持できた場合、GPS衛星信号は迅速に再捕捉され、共通ローカルGPS時刻フレームに対する測定値が、GPS衛星信号を捕捉し共通時刻フレームを確立する従来プロセスを実行することなく得られ、ナビゲーションにおいて使用され得る。
停止される前に、K32、M11およびGPSクロック信号の間の時刻およびレートの関係がわかっていた。K32クロック信号の精度を維持することによって、K32クロック信号は、K32クロック信号およびM11信号をラッチするためにエッジ整列比率カウンタ104−218によって使用され、それによってM11信号および、それから導出されるT20エポックを再較正する。このように、GPS発振器104−204は再較正される。ナビゲーション・プロセッサ104−210はその後、可視であると計算された衛星のPN符号位相を獲得するために整合フィルタまたは信号プロセッサ・チャネルを調整する。調整された整合フィルタまたは信号プロセッサ・チャネルは、GPS発振器における周波数誤差を補償するために以前に記憶されたGPS発振器対温度データを利用する。符号位相測定値が得られると、これらの値は、PN符号周期におけるいずれのチップが現在受信されているかの知識から、全体のGPS信号構造におけるいずれのチップが受信されているかの知識に変換される。この変換は、全体の信号構造のいずれのPNチップが受信機に到達していなければならないかを計算するために仮定の現在のGPS時刻および受信機位置を用いて、また実際に到着しているチップが到着していなければならないものに最も近いPN符号周期におけるそのチップの例であると仮定して行われる。組合わされたローカルGPS時刻推定および時間と等価な受信機位置誤差が正しいという仮説であれば、全体のGPS信号構造への変換は正しいはずであり、GPS距離測定値の矛盾のない集合が決定されるであろう。言い換えれば、停止期間の終了後に(スリープ・モードを出た後に)ナビゲーション・プロセッサ104−210によって推定されたPN符号と入ってくるPN符号との誤差が入ってくるGPS衛星信号の実際のPN符号時刻の±0.5ミリ秒以下であれば、位置情報は正しく更新される。計算された位置および時刻は、誤差が実際に0.5ミリ秒より小さいことを確認するために事前の推定値と比較されなければならない。確認が失敗した場合、測定のために共通時刻フレームを確立するために6秒のサブフレームが収集されなければならない。
GPS受信機ユニット103−100によって獲得された位置および時刻誤差情報はその後、M11およびK32クロック誤差を更新するために使用される。GPS発振器104−204およびK32発振器105−302の両者は周波数誤差について更新される。K32低電力クロック105−306は正しいGPS時刻について更新される。GPS受信機ユニット103−100はその後、電力を節約するためにスリープ・モードに戻される。上述プロセスはその後、次のウェークアップ・コマンドを受け取った時に繰り返される。従って、この定期的な更新は、クロック信号の精度を維持しながら電力を節約し、それによりGPSユニットは従来プロセスを用いて衛星位置を再捕捉しなくてすむ。
ウェークアップ・コマンドが受信された時は常に、K32クロック信号はM11クロッキング信号を更新するために使用される。しかし、K32発振器105−302から導出されるK32クロック信号は、K32発振器105−302の周波数に温度依存性があるので多少の誤差を受ける。すなわち、様々な動作温度について、K32発振器105−302の周波数は様々である。一実施形態において、温度センサ105−308はK32発振器105−302の動作温度を検知する。ナビゲーション・プロセッサ104−210は、K32発振器105−302の検出された動作温度をLPクロック温度/周波数誤差表105−322に存在する情報と比較する。定期的なウェークアップ・コマンドの時間間隔およびK32発振器105−302の検知された動作温度に基づき、誤差補正係数が決定されて、それによりK32のタイミングおよびレートはK32発振器105−302の動作温度を明らかにするために補正される。すなわち、K32クロック信号の時刻は、K32発振器105−302の実際の動作温度を明らかにするために誤差係数により補正される。上述の通り、一実施形態において、LPクロック温度/周波数誤差表105−322のデータは、実際の動作中に収集された履歴データに基づいており、従って極めて正確である。
K32クロック信号が再較正されると、M11信号に関係する時刻が再較正される。一実施形態において、温度センサ104−206はGPS発振器104−206の温度を検知する。ナビゲーション・プロセッサ104−210は、GPS発振器104−206の検出された動作温度をGPSクロック温度/周波数誤差表104−224に存在する情報と比較する。ソフトウェアはその後、このレート補正を時間の経過とともに、各エポックで正しいGPS時刻推定を維持するためにM11クロックに基づきT20エポックの時間間隔をスケール変更するために使用する。さらに、ウェークアップ直後のT20エポックのGPS時刻の初期値は、前述の通りエッジ整列比率カウンタ104−216を用いてK32低電力クロック105−306からのGPS時刻をM11に基づくT20エポックへ転写することによって決定される。M11発振器はスリープ期間中オフであったので、その経過時間は、K32低電力クロック105−304の経過時間と同じ様にスケール変更されることはできない。上述の通り、一実施形態において、温度/周波数誤差表104−224のデータは実際の動作中に収集された履歴データに基づいており、従って極めて正確である。その場合、(現時点で温度補正された)K32クロック信号が(同じく温度補正された)M11クロック信号を更新するために使用される時、停止期間後にナビゲーション・プロセッサ104−210によって推定されるPN符号は、入ってくるGPS衛星信号の実際のPN符号時刻の±0.5ミリ秒以下である。
代替実施形態において、ウェークアップ・イベントは、ナビゲーション更新に要求されるよりもいっそう頻回に生起するようにプログラムされ得る。そのようなウェークアップ・イベントは、K32発振器の現在温度をサンプリングする目的に役立つだけであろう。現在および以前のウェークアップ・イベントの温度の平均に基づき、2つのウェークアップ・イベント間の経過時間は、温度の変化を補正するためにスケール変更される。結果として得られた補正は、低電力クロック105−306に適用されるか、または以後の計算が補正の使用を必要とするまで単に不揮発性メモリに記憶されるかのどちらかが可能である。さらに、この選択肢は動的なウェークアップ期間を付与するために改良されるかもしれない。すなわち、ウェークアップ・コマンドの時間間隔は、遭遇する特定の動作状態に応じて変化し得る。停止期間中のK32発振器105−302の合計の温度変化が既定のしきい値を超えた場合、ウェークアップ・コマンドの時間間隔は適切な長さだけ低減される。他方、合計の温度変化が既定の温度しきい値未満であれば、ウェークアップ・コマンドの時間間隔はいずれかの適切な長さだけ増大される。このようにして、正確な温度を維持するために消費される電力は、現在の熱力学的な環境の要件に対して最小限にされる。
前述の選択肢の増強として、ナビゲーション・プロセッサ104−210は、最後の定期的なウェークアップ・コマンドおよび現在の定期的なウェークアップ・コマンド以来のK32発振器の動作温度の全体の変化を考慮することができる。温度変化が既定のしきい値を超えた場合、ナビゲーション・プロセッサ104−210はただちにGPS衛星信号を再捕捉するためにナビゲーション更新プロセスを開始して、低電力クロック105−306の保全性が許容限度内に維持されることを保証する。
図106は、一実施形態に従ったブラウンアウト検知回路104−235の一実施形態のブロック図である。ブラウンアウト検知回路104−235は、検出回路104−237およびステータス回路104−239を含む。RTCクロック信号は線105−310で検出回路104−237に入力される。RTCクロック信号は、図示されたダイオードによって半波整流される。半波整流されたRTCクロック信号は、構成要素R1,R2および図示のコンデンサを含む抵抗−コンデンサ(RC)回路に入力される。ここで減衰電圧とも称する線104−241でのRC回路の出力は、電圧比較器104−281への1入力である。
RTC発振器が動作している限り、検出器104−237は比較器入力に何らかの平均的な直流電圧を維持する。電圧比較器104−281への他方の入力は基準電圧104−243であり、これはVDDおよび抵抗器R3によって形成された分圧器の出力である。基準電圧は、寿命の終わり近くのバッテリ電圧の下方範囲の大きさに設定される。これはまた、クロックが相当のサイクル数の間オフでない限り、ろ波され整流されたクロック電圧がこのしきい値より上に上昇するはずであることを保証する。これを達成するために、RC時定数は比較的長くされる。これは検出回路104−237を正確なバッテリ電圧に対して感応しないようにする。長い時定数はまた、発振器から検出回路104−237まで比較的に少ないエネルギーしか必要としないので、回路104−237の電力消費を低減する。
ステータス回路104−239はフリップ・フロップ104−283を含む。フリップ・フロップ104−283は、その出力104−259でローまたはハイの論理値を示す。以下に述べるように、検出回路の出力は、RTCが良好でない時にフリップ・フロップ104−283をクリアする。フリップ・フロップ104−283は、セット入力104−257の信号によってRTCが「良好」であることを示すように設定される。
電力が最初に供給された時に、検出回路104−237およびフリップ・フロップ104−238は、発振器が始動するのに要するよりも少ない時間で応答するはずであり、従って比較器104−281の入力における検出電圧はしきい値を超えるはずである。それゆえ、ステータス回路は、バッテリが取り外され交換された時に、「不良」にリセットされる。
RTC発振器クロックが十分に長時間停止した場合、比較器の入力電圧はしきい値以下に低下し、フリップ・フロップをクリアしてRTCクロックが「不良」であることを示す。
ステータス・フリップ・フロップ104−238は、RTC時刻を使用することなく、まずGPS衛星を捕捉し、次いで時刻および位置の解を生成する責任を有する、ナビゲーション・プロセッサまたは他のプロセッサによって、RTCクロックが「良好」であることを示すように設定される。プロセッサが時刻および位置の解を生成すると、プロセッサはRTCを設定し、RTCが時刻を正しく伝播していることを確認し、最後にフリップ・フロップ104−238をRTCクロックが「良好」であることを示すように設定する。RTC発振器が動作しRTCクロックを生成し続ける限り、電圧はしきい値を超えたままとなり、RTCステータスは「良好」のままであろう。
RTC発振器がいずれかの期間にわたり故障した場合、比較器入力の電圧は徐々に減衰するであろう。相当数の失われたクロックの後、フリップ・フロップ104−238は、RTCクロックが「不良」であることを示すように設定される。プロセッサが再び時刻を確立するまで、フリップ・フロップ104−238はこの状態のままである。検出回路104−235の主要な目的の1つは、バッテリ寿命の終了および/または温度変動による発振器の停止から保護することである。問題が寿命の終了の場合、予備バッテリは発振に必要なしきい値未満のままになりがちである。問題が温度である場合、温度に関係する時定数は比較的遅い。さらに、バッテリが低温にさらされていたために発振器が停止した場合、その発振器は再始動するために、おそらく、それが停止した時に供給されていた電圧(および電流)よりも高い電圧を必要とするであろう。それゆえ、数千サイクルをも要求する時定数が許容される。
検出回路104−235は、種々の実施形態において各種方式で読み書きされ得る。例えば、一部の実施形態において、検出回路104−235はRFチップ103−103上に存在し、他の実施形態ではベースバンド・チップ103−105上に存在する。ステータス回路104−239の出力104−259は、バスまたはインタフェース・プロトコルに従ってコマンドを用いて読み取られるかもしれないし、または直接監視されるかもしれない。同様に、ステータス回路104−239のセット入力104−257は、一実施形態の特定のアーキテクチャによれば、いずれかのソフトウェアまたはハードウェア機構によって切換えられてもよい。
例えば、マイクロプロセッサ・バス・インターフェースがフリップ・フロップ104−283を読み書きすることができる。この状況では、フリップ・フロップ104−283の読出しは、周辺バス・ストローブを有効にし、書き込み線を無効にし、周辺選択デコードに適切な選択信号を有効にさせ、ローカルRTCブロック・デコードに「RTC_GOOD」信号をアサートさせる必要があるかもしれない。バス・プロトコルに従ったフリップ・フロップ104−283の読み書きは、例えば、ブラウンアウト検知回路がベースバンド・チップ上に存在する場合に考えられる。
別の実施形態では、RTC発振器およびブラウンアウト検知回路104−235は、RFチップ上に存在する。これは発振器にとってより静かな環境を可能にし、RTC発振器を正確に較正する能力を増強し、この発振器を較正のために温度センサのより近くに配置できる。この場合、フリップ・フロップ104−283とのインターフェースは異なるであろう。例えば、シリアル入出力ポートからのメッセージ・デコードが、フリップ・フロップ104−283を読出しに選定し、そのビットをメッセージにラッチし、その後ポートによってベースバンド・チップ上のプロセッサにクロック・アウトされるであろう。
開示したブラウンアウト検知回路の範囲内に、多数の回路の変形形態がある。図示された特定の回路構成要素は、所要の機能を実行するための一実施形態にすぎない。多くの他の回路が具体的な環境にとって可能かつ実際的である。例えば、検出回路におけるコンデンサは、混成信号の統合のために極めて小さくなければならない。従って、単純なRC時定数は、実効キャパシタンスを増幅するためにいずれかの付加的なエレクトロニクスと代替されるかもしれない。同様に、フリップ・フロップ104−283との非同期設定インターフェースは実際上、プロセッサ・バスからの同期設定インターフェースであってもよい。これらは、回路サイズまたは電力消費を低減することによって概念を増強する既知の回路技法である。
図107は、実施形態に従ったブラウンアウト検知回路104−235の動作を示すフローチャートである。図示の通り、GPS受信機103−100の起動時に、ナビゲーション・プロセッサ104−210はRTCを読取る(107−602)。このRTC時刻はEARCに転写される(107−604)。RTCのステータスが検出器104−235の出力104−259を読取ることによって検査される(107−606)。RTCが「良好」であれば、ナビゲーション・プロセッサは捕捉を開始するために転写されたRTC時刻を使用し始める(107−610)。RTCが「不良」の場合、動作の1つの行程では、ナビゲーション・プロセッサ104−210がコールド・スタートに進む(107−612)。ナビゲーション・プロセッサ104−210は時刻および位置の解を生成する(107−614)。時刻の解より、ナビゲーション・プロセッサ104−210はRTCを設定する(107−616)。ナビゲーション・プロセッサ104−210は、動作しているRTCクロックを検証する(107−618)。RTCクロックが検証された場合、ナビゲーション・プロセッサ104−210は、ステータス回路104−239に信号を送ることによってRTCステータスを「良好」に設定する(107−620)。RTCクロックが検証されない場合、ナビゲーション・プロセッサ104−210は動作しているRTCクロックを再び検証しようとする(107−618)。
図107に例示されたブラウンアウト検知プロセスは、ここに記載された他のプロセスとともに実行されるプロセスの一実施形態である。例えば、図108A、108Bおよび108Cは、図107のプロセスとともに実行されると考えられるプロセスの実施形態を例示している。ここで図108A、108Bおよび108Cを参照すれば、フローチャート108−400は、M11クロック信号を更新するためにK32クロック信号を使用することを含むプロセスの実施形態を例示している。フローチャート108−400のプロセスは、推定されたGPS時刻がGPS受信機ユニット103−100の位置を捕捉するために十分に正確かどうかを決定することをさらに含む。停止期間中にナビゲーション・プロセッサ104−210によって推定されたPN符号と入ってくるPN符号との間の時刻誤差が入ってくるGPS衛星信号の実際のPN符号時刻の±0.5ミリ秒以下であれば、K32クロック信号およびM11クロック信号は更新される。フローチャート108−400のプロセスは、GPS発振器104−204と関係するM11クロック信号およびK32発振器105−302と関係するK32クロック信号を検出されたGPS衛星情報で更新することをさらに含む。そして更新後、GPS受信機ユニット103−100は、スリープ・モードまたは停止モードに戻る。
フローチャート108−400は、ウェークアップ・アラーム論理104−222の実施形態をさらに例示している。一部の別の具体化において、記載された機能はフローチャート108−400に述べた順序通りではなく生起するか、記載された機能は同時に生起するか、記載された機能の一部が削除されるか、または付加的な機能が含まれるかもしれない。
プロセスは、ウェークアップ・コマンドがアラーム・ユニット105−324によって生成された時に、ブロック108−402において開始する。代替として、プロセスはまた、位置情報(「ナビゲーション更新」)の提供をユーザがGPS受信機ユニット103−100に照会した時にも開始するかもしれない。
ブロック108−404で、始動の理由がウェークアップ・コマンドかまたはユーザからの位置照会であったかの決定がなされる。始動の理由が、低電力時刻保持回路104−200によって維持されたK32基準の時刻をGPS受信機ユニット103−100が更新するための、アラーム・ユニット105−324によるウェークアップ・コマンドの生成であった場合、プロセスはブロック108−406を続行する。しかし、始動の理由がユーザからの位置照会に応答して場所情報を提供することである場合、GPS受信機ユニット103−100はブロック108−422を続行することによってナビゲーション更新を開始する。
ブロック108−406で、後述の通りK32クロッキング信号の再較正において使用される所定の構成要素が始動される。GPS受信機ユニット103−100の他の構成要素は、電力を節約するためにブロック108−406では始動されない。例えば、GPS受信機ユニット103−100は、少なくとも決定した位置情報をユーザに示すディスプレイ(図示せず)を含むかもしれない。GPS受信機ユニット103−100が定期的なナビゲーション更新を実行している場合、ユーザは装置がナビゲーション更新を実行していることを知ることも、または位置情報を知ることも関心がないかもしれない。従って、ディスプレイ(図示せず)はブロック108−406では始動されず、それによって電力を節約する。
ブロック108−408で、温度センサ105−308がK32発振器105−302の温度を測定する。ブロック108−410で、GPS受信機ユニット103−100がスリープ・モードであった期間におけるK32発振器105−302の平均温度が決定される。ブロック108−412で、低電力時刻保持回路104−200によって維持されたK32基準の時刻がアクセスされる。ブロック108−414で時刻誤差に基づき、温度/周波数誤差表104−224の情報に基づいて、上述の補正係数が決定されたK32基準の時刻に適用される。この補正係数はその後ブロック108−416で、低電力時刻保持回路104−200によって維持されたK32基準の時刻を補正するために使用される。
一実施形態では、次のウェークアップ・コマンドの時間がブロック108−418で決定される。従って、ウェークアップ時間はアラーム・レジスタ105−326において更新される。代替として、他の実施形態は、定期的なウェークアップ・コマンド間の既定の時間間隔を使用し、かつ/または他の構成要素から定期的なウェークアップ・コマンドを供給する。
ブロック108−420で、(ブロック108−406で)始動された所定の構成要素は、停止される。低電力時刻保持回路104−200によって維持されたK32基準の時刻が更新されたので、これらの所定の構成要素は電力リソースを節約するために停止される。プロセスはブロック108−402に戻り、次のウェークアップ・コマンドまたはユーザからの位置照会を待つ。
位置照会をブロック108−404で受け取った場合、GPS受信機ユニット103−100は、GPS受信機ユニット103−100の場所を正確に決定しその場所をユーザに示さなければならないことを理解し、プロセスはブロック108−422を続行する。すなわち、ユーザはナビゲーション更新を要求する。
従って、後述するGPS受信機ユニット103−100の構成要素は、ブロック108−422で始動される。M11基準の時刻の更新に関係する構成要素は、ブロック108−422で始動される。例えば、無線104−202、GPS発振器104−204、温度センサ104−206、ナビゲーション・プロセッサ104−210、整合フィルタ104−212、A/D変換器104−214、ローカルGPSクロック生成器104−216、エッジ整列比率カウンタ104−218および/またはメモリ104−220が始動される。
さらに、GPS受信機ユニット103−100は、M11基準の時刻の更新とは関係しないがブロック108−422で始動される付加的な構成要素を含むかもしれない。例えば、ディスプレイ(図示せず)および関係する回路が、決定した位置情報をユーザに示すために使用されるかもしれない。従って、ディスプレイは始動されなければならない。対照的に、ディスプレイは、位置情報が上述の通り(ブロック108−406〜108−416)K32基準の時刻の更新の間は表示されなかったので、ブロック108−406で始動される必要はなかった。一実施形態において、これらの付加的な構成要素は、ブロック108−406で上述の構成要素と同時に始動される。
別の実施形態では、これらの付加的な構成要素の始動は、ナビゲーション更新が完了するまで遅延される。従って、ブロック108−422は2つの別個のブロックとして示され、付加的な構成要素の始動はフローチャート108−400における以後の箇所に新しいブロックが挿入されて示されるであろう。GPS受信機ユニット103−100が更新位置を決定した後、これらの付加的な所定の構成要素は、更新された位置がユーザに示されるように始動される。例えば、GPS受信機ユニット103−100は、少なくとも決定した位置情報をユーザに示すディスプレイ(図示せず)および関係する回路を含むかもしれない。位置更新が要求された場合にのみこれらの付加的な所定の構成要素の再給電を遅延させるそうした代替実施形態は、電力を節約するために特に有利である。すなわち、所定の付加的な構成要素がクロックの再較正および関係するナビゲーション更新に必要とされない場合、ウェークアップ・コマンドを受け取る時まで所定の構成要素をスリープ・モードに維持することは、電力をさらに節約する。
ブロック108−424で、温度センサ105−308が、K32発振器105−302の温度を測定し、低電力時刻保持回路104−200によって維持されたK32基準の時刻を、ブロック108−408〜108−416で上述のプロセスを用いて温度/周波数誤差表104−224から決定される補正係数を用いてその時刻を補正することによって補正する。すなわち、K32基準の時刻は、スリープ期間中に生起するあらゆる温度/周波数のずれについて補正される。
ブロック108−426で、更新されたK32基準の時刻は、エッジ整列比率カウンタ104−216によってM11基準の時刻に移される。このようにして、GPS受信機ユニット103−100は、その構成要素を始動し、GPS発振器104−204によって供給されたM11クロッキング信号からのGPS時刻を正確に更新するために低電力時刻保持回路104−200からの補正されたK32基準の時刻を使用した。しかし一実施形態において、M11クロッキング信号における誤差はGPS発振器104−204の温度変化のために生じたのかもしれない。従って、ブロック108−428で、温度センサ104−206はGPS発振器104−204の温度を測定する。ブロック108−430で、現在のGPS発振器104−204の温度が決定される。ブロック108−432で、M11周波数誤差が温度/周波数表から決定される。
ブロック108−436で、更新されたT20エポックは、可視GPS衛星103−102,103−104,103−106および/または103−108の位置およびドップラーを推定するために使用される。可視衛星103−102,103−104,103−106および/または103−108の推定された位置に基づき、GPS受信機ユニット103−100は、ブロック108−438で整合フィルタ104−212またはGPS信号プロセッサ104−208を使用して可視衛星103−102,103−104,103−106および/または103−108のPN符号位相(モジュロ1ミリ秒)を測定する。その後、ブロック108−440で、推定されたT20エポックは、衛星103−102,103−104,103−106および/または103−108の各々について、予測される現在の全PN符号位相を週の時刻(TOW)として計算するために使用される。すなわち、GPS受信機ユニット103−100は、予測される完全なPN符号位相を週の時刻として計算するためにモジュロ1ミリ秒のPN符号位相を正確に推定するためにGPS発振器104−204からの更新されたM11クロッキング信号を使用する。
ブロック108−443で、完全な符号位相は、測定されたPN符号位相(モジュロ1ミリ秒)に一致するように補正される。ブロック108−444で、ナビゲーション解は、推定され補正された全PN符号位相に基づいて計算される。次にブロック108−446で、計算されたナビゲーション解は時間の単位で以前のナビゲーション解と比較される。
ブロック108−448で、GPS受信機ユニット103−100の計算された位置が以前のナビゲーション解の時刻から±0.5ミリ秒未満(1PN符号未満)だけ変化したかどうかが決定される。決定した変化が±0.5ミリ秒より大きければ(NO状態)、プロセスはブロック108−450を続行し、それによりGPS受信機ユニット103−100はGPS時刻を確立するためにGPS衛星103−102,103−104,103−106および/または103−108の各々から6秒サブフレーム全体を収集する。ブロック108−452で、GPS受信機ユニット103−100は従来方法を使用してナビゲーション解を更新し、それによってGPS受信機ユニット103−100の位置を正確に決定する。
しかし、ブロック108−448で位置の変化が±0.5ミリ秒以下であると決定された場合(YES状態)、GPS受信機ユニット103−100は低電力時刻保持回路104−200によりGPS時刻を正確に維持していたことになる。従って、プロセスはブロック108−454を続行し、それにより補正されたT20エポックが使用されて上述のようにしてエッジ整列比率カウンタ104−218を用いて低電力時刻保持回路104−200のM11時刻を更新する。このようにして、K32クロッキング信号は、次の停止期間に備えて正確に決定されたGPS T20時刻と相関づけられる。
一実施形態において、温度/周波数誤差表104−224に存在するデータは、上で収集された温度および周波数情報で更新される。すなわち、この実施形態は、獲得した温度および周波数データを使用して温度/周波数誤差表104−224のデータを継続的に更新し、それによって温度/周波数誤差表104−224から決定される以降の補正係数の精度を向上させる。
ブロック108−458で、GPS受信機ユニット103−100がオンのままでいるべきか否かの決定がなされる。GPS受信機ユニット103−100がオンのままでいるべきであれば(YES状態)、プロセスはブロック108−460を続行し、それによりGPS受信機ユニット103−100は他の機能を実行する。そうした他の機能については、そのような機能が停止期間中に時刻を正確に維持することと必ずしも関連するわけではないので、ここでは詳述しない。これらの他の機能が実行された後、プロセスはブロック108−418へ戻り、上述の通りウェークアップ・コマンドの次の時間が決定される。
ブロック108−458でGPS受信機ユニット103−100がオンのままでいるべきいかなる理由も存在しないと決定された場合(NO状態)、プロセスは直接ブロック108−418に進む。すなわち、プロセスはブロック108−418を続行し、それによりGPS受信機ユニット103−100はエネルギーを節約するために停止されるが、低電力時刻保持回路104−200がGPS時刻を正確に維持する。
GPS受信機ユニット103−100の上述の実施形態は一般に、GPS発振器104−204が停止されている期間中に正確なGPS時刻が維持されるように、K32発振器105−302から導出されるK32クロック信号およびGPS発振器104−204から導出されるM11クロッキング信号を更新することとして説明される。他の実施形態は、GPS衛星からの場所の決定に関係する多様な他のクロッキング信号を更新する。さらに、GPS発振器104−204は、11MHzにほぼ等しい振動周波数を有する信号を供給するものとして説明した。同様に、K32発振器105−302は、32kHzにほぼ等しい振動の周波数を有する信号を生成するものとして説明した。GPS受信機ユニットの他の実施形態は、GPS発振器104−204およびK32発振器105−302の振動周波数と異なる振動の周波数を有する低電力時刻保持回路に存在するGPS発振器および/または発振器により具体化することができる。さらに、低電力時刻保持回路は、構成要素が電源を切断されている期間の間にGPS時刻精度を維持するために使用されるほぼ32kHzのクロッキング信号を供給するものとして説明した。他の実施形態において、低電力時刻保持回路104−200から供給されるクロッキング信号は、GPS受信機ユニットに存在する他の構成要素にクロッキング信号を供給するために使用される。しかし、そうした構成要素は、本発明の動作および機能を理解するために必要な程度を超えては詳述しない。
代替実施形態において、温度センサ104−206および105−308は、GPS発振器104−204およびK32発振器105−302の動作温度が検出されるように、適切に配置された単一の温度センサによって代替されるか、または組み込まれる。そのような温度センサはさらに、ナビゲーション・プロセッサ104−210に信号を直接供給するように機器構成してもよい。この実施形態は、構成要素の数を減らし、対応するコスト、サイズおよび電力消費の低減を提供するかもしれない。
図103および104における例示の便宜上、また本発明の動作および機能性を解説する便宜上、検知された温度を処理し、K32発振器105−302およびGPS発振器104−204からの信号における合計の周波数誤差を計算することは、ウェークアップ・アラーム論理104−222の一部として存在するロジックのような、ナビゲーション・プロセッサ104−210によるロジックの実行によって具体化されるものとして図示説明した。代替として、処理は異なるプロセッサによって具体化されることもできよう。さらに、検知された温度を処理するためのロジックおよびK32発振器105−302からの信号の合計の周波数誤差を計算するためのロジックは、メモリ104−220または別の適切なメモリに存在する専用論理モジュール(図示せず)に存在することもできよう。その上、LPクロック温度/周波数誤差表105−322および/またはGPSクロック温度/周波数誤差表104−224は、便宜上メモリ104−220に存在するものとして示した。検知温度表は、代替的な場所に、かつ/または適切な代替記憶媒体に存在することもできよう。あらゆるそうした代替的な具体化は、この開示の範囲内であり添付する特許請求の範囲によって保護されることを意図されている。
上記の説明に関して、一実施形態のGPSシステムは、後述の通りエッジ整列比率カウンタ(EARC)を含む。ここで使用されるいくつかの用語についての定義は以下の通りである。これらの定義は、代表的な例として提示されており、以下で実現される実施形態を限定するものとはみなされない。「サンプリング・エッジ」は、「サンプリング・ポイント」として指定された、「基準クロック」のエッジであって、立ち上がりエッジまたは立ち下がりエッジである。「サンプリング・ポイント」は、「サンプル・クロック」の値をサンプルするために使用される「基準クロック」のエッジである。「サンプル値」は、「サンプリング・ポイント」で得られた「サンプル・クロック」の論理値(0または1)である。「ターゲット・エッジ」は、「サンプリング・ポイント」が整列しようと試みる、「サンプル・クロック」のエッジであって、立ち上がりエッジまたは立ち下がりエッジである。「進み」は、以前の「サンプリング・ポイント」よりも「サンプル・クロック」のサイクルにおいて後に生起する「サンプリング・ポイント」である。
定義を続けて、「スルー」(slew)は、「基準クロックのサンプリング・エッジ」と「サンプル・クロックのターゲット・エッジ」との間のオフセットにおける変化である。スリップは、「スルー」の代替用語である。「コアース・スルー」は、R0およびR1によって生じた2つの「スルー」値のうちの小さいほうの「スルー」である。「ファイン・スルー」は、R0およびR1によって生じた2つの「スルー」値のうちの大きいほうの「スルー」である。「遅れ」は、以前の「サンプリング・ポイント」よりも「サンプル・クロック」のサイクルにおいて早期に「サンプリング・ポイント」が生起するものの後のスルーである。
さらに、「ロード・パルス」は、「ターゲット・エッジ」が「ファイン・スルー」の間に検出された時に「基準クロック」カウンタおよび「サンプル・クロック」カウンタの値を各自のレジスタに転送する。「マジック・ゲート」は「ロード・パルス」の別名である。
図109は、一実施形態のもとでのエッジ整列比率カウンタ(EARC)109−100のブロック図である。一般に、エッジ整列比率カウンタの目的は、第2のクロックに対する第1のクロックの周波数を測定することである。これは、第2のクロックの特定の数のサイクルC2の間、第1のクロックのサイクルC1をカウントすることによって行われ得る。その際、クロック周波数F1とクロック周波数F2との比は、R=F1/F2≒C2/C1である。この公式における近似は、2つのクロックが同期していなければ、指定された数のC2サイクルの間にカウントされたクロックC1の最大2サイクル分の曖昧さが常に存在するはずであるという事実から生じる。C1の最後の部分サイクルがどの程度経過したかが正確にはわからないので、不等式C2/(C1+2)≦R≦C2/C1は、測定の不確実性を表す。測定の精度を改善するために、測定間隔は増やすことができる。これは、測定時間および回路における電力消費を犠牲にして改善を提供する。
一実施形態のEARCは、2つのクロックのエッジが整列している時点の間で測定を行うように構成することによって、著しく短縮した測定時間とともに、測定精度を改善する。そうすることによって、クロック・サイクルの比は整数値の比となり、曖昧なサイクルが除去される。後述の通り、エッジはこの方法によって完全に整列されることはできないが、それらは一般にナノ秒未満の精度で整列され得る。しかし、実施形態はそのように限定されるものではない。達成され得る正確な整列精度は、クロック周波数のおおよその比および、ジッターや周波数の変動の範囲といったクロックの特性の関数である。
図109のEARC109−100に言及すれば、測定される2つのクロック信号は、基準クロック109−102およびサンプル・クロック109−104である。基準クロック109−102は、基準クロック・カウンタ109−106と称する第1のフリーラン連続カウンタを駆動する。サンプル・クロック109−104は、サンプル・クロック・カウンタ109−108と称する第2のフリーラン連続カウンタを駆動する。基準クロック・カウンタ109−106は関係する基準カウント・レジスタ109−116と結合し、サンプル・クロック・カウンタ109−108は関係するサンプル・カウント・レジスタ109−118と結合している。測定を行うために、基準カウント・レジスタ109−116およびサンプル・カウント・レジスタ109−118は、2つのクロック109−102および109−104のクロック・エッジが緊密に整列した瞬間にカウンタ値をロードされる。
基準カウント・レジスタ109−116およびサンプル・カウント・レジスタ109−118のロードの後、マイクロプロセッサ(図示せず)が基準カウント・レジスタ109−116およびサンプル・カウント・レジスタ109−118の値を読出す。周波数比を計算するために、2組のカウンタ値が読取られ、この場合カウンタ値の各組はエッジ整列の時点で得られる。その後、読取られた2つのカウンタ値の差異は、以下の公式を用いて周波数比を計算するために使用される。
R=(C2 Ref−C1 Ref)/(C2 Smp−C1 Smp)
ここで、
C1 Ref=整列時刻1での基準クロック・カウント値
C2 Ref=整列時刻2での基準クロック・カウント値
C1 Smp=整列時刻1でのサンプル・クロック・カウント値
C2 Smp=整列時刻2でのサンプル・クロック・カウント値
カウンタ値C2 Ref,C1 Ref,C2 Smp,C1 Smpは、2つのクロック・エッジが緊密に整列した時点で獲得されるので、サイクル・カウントの差異は整数値であり、結果は高精度である。
エッジが整列した時にカウンタ値C2 Ref,C1 Ref,C2 Smp,C1 Smpを獲得するために、ダウン・カウンタが基準クロック109−102を用いて特定の間隔を測定するために使用されるが、実施形態はそのように限定されるものではない。このダウン・カウンタは、ここでサンプリング・カウンタ109−120と呼ばれる。サンプリング・カウンタ109−120は、少なくとも1つのマルチプレクサ109−144を通じてR0レジスタ109−130およびR1レジスタ109−132の内容を受け取るために結合される。サンプリング・カウンタ109−120は、基準クロック109−102からの信号によりクロックされる。
動作中、サンプリング・カウンタ109−120は、それぞれ、R0レジスタ109−130またはR1レジスタ109−132からの2つのカウント値R0またはR1のうちの一方を用いてロードされる。サンプリング・カウンタ109−120のカウンタ値がゼロに達するごとに、サンプリング・カウンタ109−120は、サンプラ&エッジ検出器109−122に有効化信号Enbを供給し、それによって基準クロック109−102のエッジがサンプル・クロック109−104の値をサンプルするのを可能にする。サンプルは、後述の通りサンプル・クロック109−104のエッジを検出するために使用される。
図110は、図109の実施形態のもとでEARCを用いたサンプリングおよびエッジ検出110−200を示している。一番上の線110−202は、ダウン・カウンタが0値に当たった時に生起するサンプリング・イベントを示す。サンプリング・エッジ110−204で、サンプル・クロック109−104の値が基準クロック109−102のエッジによって獲得される。このサンプリング・プロセスの最初の例は、サンプル1のイベントで示されている。基準クロック109−102のサンプリング・エッジ110−204は、獲得されるサンプル・クロック109−104の値を指示して示されている。サンプル1のイベントにおいて、獲得された値は1である。
ダウン・カウントがゼロに達すると、サンプリング・カウンタ109−120は、サンプラ&エッジ検出器109−122の制御のもとでR0レジスタ109−130またはR1レジスタ109−132のどちらか一方からの値を再ロードされる。これが最初のサンプルであるので、いずれのエッジも検出されていない。この場合、最初のダウン・カウントは、ここでR0値と呼ぶR0レジスタ109−130からの値を使用すると仮定する。いずれのエッジも検出されなかったので、R0値が再びロードされるであろう。R0サイクルに等しい基準クロック109−102の多数のサイクルの後、サンプリング・カウンタ値は再びゼロになり、サンプル・クロック109−104はサンプル2のイベントに図示の通り110−204で再びサンプルされる。サンプル値は依然として1であるが、基準クロック109−102のサンプリング・ポイントがサンプル・クロック109−104に対してわずかに「進め」られていることに留意されたい。サンプル1およびサンプル2は両方とも同じ値(1)を有するので、いかなるエッジも検出されず、R0値が再びサンプリング・カウンタ109−120にロードされる。サンプル3およびサンプル4のイベントで、1の値が再び110−204でサンプルされ、R0値が再びサンプリング・カウンタ109−120にロードされる。
続いてサンプル5のイベントで、サンプル値はこの時にゼロである。立ち下がりエッジが検出されるべきターゲット・エッジであり、サンプル・フェーズが進みであるということがわかっていれば、1から0へのサンプル値の移行は立ち下がりエッジ110−210が検出されたことを意味する。立ち下がりエッジ110−210が検出されると、サンプリング・カウンタ109−120にロードされる値は切換えられる。R0値がそれまで使用中の値であったので、値は、ターゲット・エッジが検出された時に、R1値と呼ばれるR1レジスタ109−132からの値に切換えられる。
R1値は、ここで述べるようにサンプリング・カウンタ109−120へのロードのために選択されて、基準クロック109−102のサンプリング・フェーズを、サンプル・クロック109−104に対して反対方向110−220(ここでは「遅れ」方向110−220と称する方向)でスルーを生じさせる。このようにして、サンプル6のイベントで、サンプリング・フェーズは早くなる(すなわち、遅れる)。いかなるエッジも検出されなかった(このエッジは先行エッジと同じ値(0)である)ので、R1値が再びサンプリング・カウンタ109−120にロードされる。その後、サンプル7のイベントで、サンプル値は1に移行する。サンプル値の0から1への移行は、「遅れ」スルー値(R1値)が使用されているという事実と結びつき、「立ち下がり」エッジが検出されたことを指示する。従って、R0値が、カウント・ダウン値としての使用のためにサンプリング・カウンタ109−120にロードされる。
上記の例は、R0およびR1値の正しい選択を前提として、サンプリングの瞬間がサンプル・クロック109−104の所望のエッジにわたって前後にスルーできることを示している。従って、この例は、サンプリング・カウンタ109−120にロードされる値の関数としてサンプリングの瞬間を進める、遅らせるという概念を示している。また、R0およびR1値の各々のスルー増分が異なり得るという概念も実証されている。例示した例において、R0値はコアース・スルーでありR1値はファイン・スルーであり、この場合、コアース・スルーは、サンプリング・ポイントをファイン・スルーよりもサンプル・クロック期間に沿ってより遠くに移動させるが、実施形態はそのように限定されるものではない。
実施形態のEARC109−100において、基準クロック・カウンタ109−106およびサンプル・クロック・カウンタ109−108は、所望のエッジが検出された時にレジスタに格納される。実際上、ファイン・スルーを使用している間に生起するエッジ検出は、これらの値をラッチするために使用されるが、そのように限定されるものではない。この選択がなされるのは、ファイン・スルーがエッジ整列においてより小さい誤差をもたらし、サンプル・クロック測定期間において対応したより小さい誤差をもたらすからである。
EARCの例として、図111は本発明に従ったエッジ整列比率カウンタ装備を備えるパーソナル通信装置111−100のブロック図である。クロック分配カウンタ111−110は、レジスタ111−10およびレジスタ111−11を含む。また、レジスタ111−10およびレジスタ111−11からの入力値だけでなく検査中のクロックからのクロック信号CLK1の入力も交互に選択し受信する、制御信号発生器111−15も設けられている。これは例えば、電気通信受信機のクロック信号源(クロック)からのクロック信号としてよい。第2のクロック信号CLK2は、評価中の第2のクロック源から受信される。CLK2は例えば、全地球測位システム(GPS)受信機のクロック源からのクロック信号としてよい。レジスタ111−10および111−11に格納される値は事前に選定されている。これらの値の選定は以下でさらに詳細に検討する。制御信号発生器111−15は、カウント獲得部111−16に供給される制御信号S2を生成することによってこれらの入力に応答する。
図112は、本発明に従った分配カウンタ112−110の実施形態のより詳細な説明を示している。制御信号発生器111−15は、マルチプレクサ112−26、減分カウンタ112−17、フリップ・フロップ112−19およびパルス発生器112−20を含むことがわかる。マルチプレクサ112−26は、フリップ・フロップ112−19からのエッジ移行信号S1に従ってレジスタ111−10またはレジスタ111−11のどちらか一方からの入力間で選択するために使用される。どちらのレジスタ(111−10または111−11)がマルチプレクサ112−26によって選択されるかに応じて、選択されたレジスタ111−10または111−11の内容が減分カウンタ112−17に入力される。減分カウンタ112−17にロードされた値はその後、クロック信号CLK1の各パルスについて1ずつ減分される。減分カウンタ112−17の内容がゼロ(0)値に達すると、減分カウンタ112−17はフリップ・フロップ112−19に有効化信号112−22を送信する。フリップ・フロップ112−19はその後、クロック信号CLK1およびCLK2の入力に従って、エッジ移行信号S1を出力する。フリップ・フロップ112−19からのエッジ移行信号S1はまた、パルス発生器112−20にも供給される。エッジ移行出力S1に応答して、パルス発生器112−20は制御信号S2を生成する。制御信号S2はその後、それぞれ、増分カウンタ112−7および112−5の内容を受け取るために分子ラッチ112−1および分母ラッチ112−4を有効化するために使用される。分子ラッチ112−1および分母ラッチ112−4の内容は、読出され、クロック信号CLK1の周波数とクロック信号CLK2の周波数との間の分配を特定するために使用され得る。
図113は、クロック信号CLK1、クロック信号CLK2およびエッジ移行信号S1の関係を例示している。CLK1およびCLK2は両方とも、立ち上がりエッジ113−70および立ち下がりエッジ113−71を有する。検討の目的で、立ち上がりエッジ113−70および立ち下がりエッジ113−71は移行エッジであることが理解されるであろう。図113から、クロック信号CLK1およびクロック信号CLK2が、一致して互いに同期している移行エッジを有する瞬間が、常にではないが、再発するシナリオであることがわかる。図113は、点Aにおいて、クロック信号CLK2の立ち上がりエッジ113−70がローからハイへ移行し始めるのと同時に、クロック信号CLK1の立ち上がりエッジ113−70がローからハイへ移行し始めることを示している。それに応じて、フリップ・フロップ112−19からのエッジ移行信号S1はローからハイへ変わり、制御信号S2が生成される。同様に、点Bにおいて、クロック信号CLK2の立ち下がりエッジ113−71がハイからローへ移行し始めるのと同時に、クロック信号CLK1の立ち下がりエッジ113−71がハイからローへ移行し始める。それに応じて、フリップ・フロップ112−19からのエッジ移行信号S1はハイからローへ変わり、制御信号S2がやはり生成される。
図114に関して、携帯型の通信装置111−100の別の実施形態が例示されている。ここでは、本発明の比率カウンタ111−110が携帯型の通信装置111−100のベースバンド部114−150の一部として組み込まれていることがわかる。クロック信号CLK1をベースバンド部114−150の比率カウンタ111−110に供給する符号分割多元接続(CDMA)無線周波数(RF)部114−125が設けられている。さらに、第2のクロック信号CLK2をベースバンド部114−150の比率カウンタ111−110に供給する全地球測位システム(GPS)無線周波数部114−130が設けられている。比率カウンタの出力は、回路動作を最適化し電力消費の低減を可能にするために、携帯型の通信装置111−100の回路によって利用される。
パーソナル通信装置111−100において、2つのクロック信号CLK1およびCLK2の周波数間の比を示す情報が生成され、装置回路による使用のために出力される。レジスタ111−10またはレジスタ111−11のうちのいずれか一方は基準クロック周波数を表現する値を格納するために使用され、レジスタ111−10またはレジスタ111−11の他方は第2のクロックの周波数の厳密な近似を表現する値を格納するために使用される。これらの値はその後、減分カウンタ112−5および112−7のカウント値が獲得され、必要に応じて読出されるようにするための制御信号S2を生成するために交互に使用される。一般に、図114の携帯型の通信装置111−100において、CDMA RF部158−125を駆動するクロック信号CLK1は、相対的に安定しており、既知の周波数のものである。一方、GPS RF部114−130を駆動するGPSクロック信号CLK2は、たいてい水晶発振器によって生成され、あまり安定していないので、従っていずれかの任意の時点でのCLK2の周波数の精度は変化しがちである。これは、水晶発振器の振動数が温度の変化とともに変動する傾向があるという事実に起因する。この場合、レジスタ111−11はある値がロードされる。すなわち、GPSクロック信号CLK2の周波数の厳密な近似値が第2の値としてレジスタ111−11にロードされる。
本発明の好ましい実施形態において、レジスタ111−10およびレジスタ111−11にロードされる値は、連分数の収束の原理に基づく計算に従って選択される。より詳細には、連分数の収束が、実際の分配の有理数の近似値の系列を生成するために使用される。それらの分配はその後、それぞれ、レジスタ111−10およびレジスタ111−11に入力される値として使用される。
実数xの連分数展開は、次のような方程式によって表現される。
a0+[1/(a1+[1/(a2+...)])]
ここで、整数a1,a2,a3...は部分商である。有理数は有限個の部分商を有し、有理数は無限の連分数展開を有する。数xが部分商a0,a1,...を有するならば、初めのn個の部分商a0,a1,...,anを考慮することによって形成される有理数pn/qnは、xの第n次の収束と呼ばれる。その数の収束は、任意の実数に対し小さな分母を備える有理数の近似値を与える。連続的な収束は、正および負に振動する誤差を有しており、その誤差は例えばクロック信号CLK1の周波数とクロック信号CLK2の周波数との間の正確な比に順次収束していく。この観点から、連分数展開は、EARC111−100のレジスタ111−10およびレジスタ111−11にロードされるべき値(除数)を選定するために有用である。
図115は、本発明の2つのクロック周波数間の比を決定する方法を例示しているフローチャートである。第1のクロック信号の連続するクロック・パルスが所定の継続時間にわたりカウントされ(115−300)、第2のクロック信号の連続するクロック・パルスが継続時間にわたりカウントされる(115−302)。その後、第1のクロック信号の移行エッジが第2のクロック信号115−305の移行エッジと一致して同期しているかどうかが判定される。そうであれば、継続時間の経過を信号で知らせる制御信号が生成される。継続時間の経過時に第1のクロック信号115−310および第2のクロック信号115−312のクロック・パルスのカウントを読出す。
本発明の比率カウンタ111−110は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの組合せで具体化することができる。好ましい実施形態(単数または複数)において、本発明111−100は、メモリに記憶され、適切な命令実行システムによって実行されるソフトウェアまたはファームウェアにおいて具体化されている。代替実施形態におけるように、ハードウェアにおいて具体化される場合、本発明111−100は、すべて当該技術分野において周知である以下の技術のいずれか、または組合せにより具体化することができる。すなわち、データ信号に関して論理機能を具体化するための論理ゲートを有する個別論理回路(単数または複数)、適切な論理ゲートを有する特定用途向け集積回路、プログラマブル・ゲート・アレイ(PGA)(単数または複数)、完全にプログラム可能なゲート・アレイ(FPGA)、等々。
図115のフローチャートは、ソフトウェアにおける本発明の比率カウント方法の可能な具体化のアーキテクチャ、機能および動作を示している。これに関して、各ブロックは、特定の論理的機能(単数または複数)を具体化するための1つ以上の実行可能命令を含む、符号のモジュール、セグメントまたは部分を表している。また、一部の代替的な具体化において、ブロックに記載された機能が図115に記載された順序から外れて生起し得ることも留意しなければならない。例えば、図115において連続して示された2つのブロックが実際はほぼ同時に実行されるかもしれず、またはブロックが時には、以下でさらに明らかにされる通り、関与する機能に応じて、逆順で実行されるかもしれない。
CDMA信号環境では、補正する必要がある相互相関および/または自己相関の問題が生じる。一実施形態のGPSシステムは、検出された信号の信号強度が、受信機によって予想されたよりも微弱な場合に、ロックするために、信号強度を検査するシステムを含む。予測され特定された(ロッキング)信号が強力であるか、または少なくとも微弱ではない場合、検査はまったく必要ではない。しかし、信号対ノイズ比測定または他の方法によって、決定した信号が所定の信号強度を下回っているとわかった場合、受信機は不適切なロッキング信号を受信しているかもしれず、それゆえ受信機がロックしている信号が自己相関または相互相関のゴースト信号であるかもしれない。本発明は、そのような自己相関および/または相互相関の問題を低減または排除する方法を検討する。
図116は、典型的な符号分割多元接続(CDMA)信号のフローを例示している。例えばGPS受信機システム、セルラー電話システムなどの多くのシステム116−100において、CDMA入力信号116−102は、ベースバンド信号への変換のためにRFダウンコンバータ116−104に入る。これらのベースバンド信号はその後、CDMA入力信号116−102のデジタル・サンプルを得るためにサンプラ106においてサンプリングされる。一般に、特にGPS受信機システム116−100では、これらのサンプルはその後、相関器エンジン116−108に、それから中央処理装置(CPU)116−110に送られる。
本発明は、信号116−112がCPU116−110に到達するための別個の経路を可能にする。相関器エンジン116−108で使用されるものと同じサンプルである信号116−112は、CPU116−112に直接、または随意選択でバッファ116−114を介して送られる。信号116−112は処理のために同じCPU116−112(そのCPUは一般にARM7である)に直接送ることができるが、信号116−112は別個のデジタル信号プロセッサ(DSP)に、または代替として、単一の集積回路(IC)チップ上にDSPおよびARM7を組み込んでいるCPU116−112に送られ得る。さらに、相関器エンジン116−108、CPU116−110および随意選択のバッファ116−114は、システム116−100のより少ない電力消費、より小型のパッケージング等を可能にするために、単一のICチップ上に置くことができる。RFダウンコンバータ116−104もまた、必要に応じて単一のICチップシステム116−100を提供するために、相関器エンジン116−108、CPU116−110、サンプラ116−106および随意選択のバッファ116−114と統合されることができる。さらに、統合の容易さのために、CPU116−110は信号116−116および116−118を異なるポートで受け入れることができるし、または信号116−116および116−118が別個のCPU116−110に送られる、例えば信号116−116がDSPに送られ、信号116−118がARM7に送られることができる。単一または複数のCPU116−110が存在する他の機器構成が、本発明により実現され得る。図116は、本発明の範囲内の信号のフローの可能性を網羅的ではないが、例証している。
一般に、通信システムにおいて、GPS受信機システム116−100は、セルラー電話システム116−120といった伝送を可能にする別のシステムと同じ場所に配置される。一般にセルラー電話機に配置されるセルラー電話送受信機116−122は、無線またはハード・ワイヤード・リンクで信号116−124を送受信することができる。そのようなシステム116−120は、セルラー電話網、パーソナル通信システム(PCS)ネットワークにおいて具体化されるか、または、携帯情報端末(PDA)、ラップトップ・コンピュータまたは、無線またはハード・ワイヤード通信リンクによってデータを送信および/または受信できるいずれかの他の装置として具体化することもできる。
そのような通信システム116−120は、GPS受信機システム116−100と同じ場所に配置された時に、GPS受信機システム116−100を使用して場所を決定し、決定した場所を種々の目的(例えば、無線送受信機116−122の場所を決定または計算し、所定または所望の場所への方向を決定し、非常事態および/または法執行職員のために無線送受信機116−122の場所を正確に特定する、位置決めサービスなど)に使用する。
そうしたものとして、本発明は位置決めサービス・システムにおいて有用であり、その際、ユーザはおそらくセルラー電話の内部に配置されたそれぞれの移動GPS受信機システム116−100を使用して、方向を取得したり、何らかの種類のマッピング支援手段がなければ見つけることが難しいであろう近くの目的地、レストランまたは他の物理的な場所を見つけるための支援を取得したりする。セルラー電話または他のモバイル装置は、視覚的にまたは別の態様で、ユーザの位置、地図上のユーザの位置、ユーザの位置と所望の目的地との間の順路または順路の一部、または位置決めサービスに使用され得る任意の数の事柄を表示することができる。
さらに、本発明はまた、推測航法システムにおいても有用であり、その場合、ジャイロスコープ、走行距離計または他のセンサといった少なくとも1つのセンサがGPS受信機システム116−100への入力を供給してGPS受信機システム116−100の位置を計算するうえで選択的に支援する。そのようなシステムは一般に、トンネルや他の自然および人工構造物がGPS信号の受信を妨げる場所を走行する自動車において使用されるが、セルラー電話、無線送受信機または他の装置において、またはそれらとともに使用することもできる。
さらに、無線送受信機116−122およびGPS受信機システム116−100は両方とも一般に集積回路であることから、パッケージングの容易さ、電力消費の低減または他の理由で、GPS受信機システム116−100および無線送受信機116−122は、単一の集積回路に配置され得るか、または無線送受信機とGPS受信機システム116−100との間で回路を共用することができる。例えば、GPS受信機システム116−100は、CPU116−110の代わりに、またはそれと並行でのどちらかで、無線送受信機116−122の中央処理装置(CPU)116−126を使用して無線送受信機116−122の位置を測定するために必要とされる数理計算を実行することができる。さらに、無線送受信機116−122は、GPS受信機システム116−100に基準周波数116−128を供給するためにローカル発振器116−128といった回路の他の部分を共用することができ、基準周波数116−128は無線送受信機116−122によって使用される基準周波数と同じでも異なってもどちらでもよい。
無線送受信機116−122は、GPS受信機システム116−100からデータ116−130を受け入れるだけでなく、GPS受信機システム116−100にデータ116−130を供給することができる。無線送受信機によって受け入れられるデータ116−130は、生のGPSデータ、疑似距離または決定した位置を含む。無線送受信機によって供給されるデータ116−130は、エフェメリス情報、時刻情報および粗い位置情報を含む。
図117は、本発明に従った自己相関および相互相関の検査を例示している。
システム117−200は、システム117−200に入るRF信号117−202を図示しており、それはブロック117−204でデシメートされる。デシメート・ブロック117−204の結果は、ブロック117−206として図示されたRF信号117−202からの帯域幅が縮小されたサンプルである。これらのサンプル117−208は一般に、図160に示された相関器エンジン116−108に渡される。ローカル符号117−212はその後、ブロック117−210で到来サンプル117−208に対して相関づけられ、それはその後、システム117−200がRF入力信号117−202をトラッキングできるようにトラッカ117−214に渡される。
関連技術の設計では、トラッカ117−214が所望の信号の搬送波をトラッキングしているか、またはトラッカ117−214が相互相関スプールまたは自己相関スプールとしてよい偽信号をトラッキングしているかどうかを判断しない。本発明では、信号がナビゲーションでの使用のために検査される前に、トラッカ117−214が正しいまたは所望の信号をトラッキングしているかどうかを確認するための方法および装置を提供する。
トラッキングされている信号の信号強度はブロック117−216において検査される。信号強度が所定の強度より大きい、例えば35dB・Hzより大きければ、システム117−200は、その信号が偽信号ではない程度に十分に強力であることがわかり、そして信号はブロック117−218で確認されて、ブロック117−220でナビゲーション・システムに渡される。しかし、信号が十分な強度ではない場合、自己相関検査ブロック117−222に入れられる。ブロック117−222は相互相関検査のための同じブロックとすることができるし、またはコンピュータ符号、ハードウェア回路の異なるブロック、もしくはハードウェア、ソフトウェア、ファームウェアの統合、ここに説明したものに類似の機能を実行するための他の装置および方法とすることができる。さらに、ブロック117−222は、自己/相互相関状態が存在するかどうかを決定するためのしきい値による信号対ノイズ比(SNR)の検査または他のそうした検査とすることができる。そのような検査ブロックは、設計またはユーザの希望に応じて、検査される信号の1特性を有し得るか、検査するべき複数の特性を有し得るか、または自動または手動で選定された検査されるべき1つ以上の特性のうちから選ぶことができる。
サンプル117−206は、経路117−224およびブロック117−226によって示すようにメモリに記憶される。サンプルが十分なデータを含まない場合、例えば所定量のデータより少ないデータしかない場合、ブロック117−228はシステムに十分なデータが存在するまでループする。図161に示す通り、システム117−200は、処理すべき十分なデータが存在するまで、サンプル・データを記憶し続ける。例えば、GPSシステムでは、信号が適正な信号であるかどうかを判定するための処理を実行するために2ミリ秒のデータが望ましい。
ブロック117−230は、ブロック117−214でトラッキングされた(またはロックされた)信号が信号窓内の適正な信号であるかどうかを判定するために、記憶されたデータを処理することを示している。相互相関状況において、適正な信号は、所望の(または現在の)衛星符号との相関よりも強い、異なる衛星符号との相関によって決定され得る。自己相関状況では、適正な信号は、ローカルで生成された符号の遅延との相関よりも強い、同じ衛星符号の異なる遅延との相関によって決定され得る。判断ブロック117−232は、システム117−200が、再びSNR検査または他の方法によって信号が適正な信号であるか否かを検査することを示している。
到来信号に関連して第2の経路上にある検査信号に使用される相関方法は、サンプル・データと、同じPRN符号およびトラッキングされた信号(ロックされた信号)のローカル基準周波数の間の相関を計算することと、サンプル・データと、トラッキングされた信号と同じローカル基準周波数であるが異なるPRN符号との間の相関を計算することと、サンプル・データと、同じPRN符号およびトラッキングされた信号のPRN繰り返し周波数の倍数であるローカル基準周波数の間の相関を計算することと、サンプル・データと、異なるPRN符号およびロックされた信号のPRN繰り返し周波数の倍数である異なるローカル基準周波数の間の相関を計算することと、他の相関および方法を含む。信号が適正な信号であれば、信号は経路117−231によって検査され確認される。信号が適正な信号でなければ、トラッカ117−214は適正な信号(その適正な信号はブロック117−230で決定される)にリダイレクトされるか、または別の態様で制御される。
図118Aおよび図118Bは本発明の実施形態を例示している。
システム118−300は、CDMA信号を処理のためにベースバンドにダウンコンバートするダウンコンバータ116−104に入るGPS Clear/Acquisition(Coarse/Acquisitionとしても知られる)(C/A)(CDMA形式のRF信号)データ116−102を示している。ダウンコンバータは、サンプル・ブロック116−106の一部であるデシメータ117−204に信号を渡す。それらはシリアル・シフト・レジスタ118−302に渡されてから、各々、2つの付加的なレジスタ、パラレル・レジスタ118−304およびシフト・レジスタ118−306に並列に入れられる。シフト・レジスタ118−306はロードされた後レジスタ118−306からシフト・アウトされるのに対し、パラレル・レジスタ118−304はロードされた後CPU116−110によって直接読出される。パラレル・レジスタ118−304はCPU(マイクロプロセッサ)116−116に直接送信される信号116−116を供給するのに対し、シフト・レジスタ118−306は相関器エンジン116−108に信号を供給する。ドップラー・ローテータ118−308が、相関器116−108に供給される信号を周波数に関して正しく整列させるために使用される。
符号器117−212から発するローカル符号は、サンプラ116−106からのサンプル信号の範囲内にロックするべき適正な信号を決定する際に到来サンプルに対して相関づけるために使用される。信号は累算器118−310に累算され、ピーク検出器118−312が、トラッカに渡される信号(それは図116に示された信号116−118である)を決定する。符号器117−212は、相関を支援するために時間および/または位相に関してシフトされる。このシフトは一般に、別個の回路によって行われ、そして本発明では、到来信号が自己相関または相互相関している信号であると決定された時にデータ経路実行によって行われ得る。
図119は、本発明のサンプル・ブロックの詳細を例示している。
システム119−400は、データをシリアル・シフト・レジスタ118−304および118−306に並列で格納するシリアル・シフト・レジスタ118−302に供給するデシメータ117−204を図示している。明確さのために、パラレル・レジスタ118−304およびシフト・レジスタ118−306は、レジスタがIデータまたはQデータを含むかを指示するために、それぞれ、パラレル・レジスタ118−304Iおよび118−304Q、ならびにシフト・レジスタ118−306Iおよび118−306Qとして図示されている。シフト・レジスタ118−306はそのデータをドップラー・ローテータ118−308に渡すのに対して、パラレル・レジスタ118−304はそのパラレル・データを、すなわち信号116−116を直接CPU116−110に渡す。やはりCPU116−110は、ドップラー・ローテートされ相関した信号を処理する同じCPU、または別個のCPUとすることができる。さらに、たとえCPUが別個であるとしても、それらは必要に応じて単一のICチップ上に同じ場所で配置され得る。
付加的な制御線がCPU116−110をキャプチャ・クロック106(サンプラ)に結合している。線119−402Iおよび119−402Qは、それぞれ、CPU116−110が関係するシフト・レジスタ118−306Iおよび118−306Qからデータを読出した時を指示する。さらに、データ利用可能ステータス線119−404Iおよび119−404Qは、ハイまたはローどちらかの既知の値に設定されて、パラレル・レジスタ118−304Iおよび/または118−304Qが読出しに利用可能であることをCPU116−110に知らせる。パラレル・レジスタ118−304Iおよび/または118−304Qが読出されると、データ利用可能ステータスレジスタ119−404Iおよび/または119−404Qはクリアされる。
図120は、本発明を実施するために使用されるステップを例示しているフローチャートである。
ブロック120−500は、スキャンされた信号窓内に位置する到来CDMA信号を、第1のデータ経路上のローカルに生成された信号と相関づけることを例示している。
ブロック120−502は、スキャンされた信号窓内に位置する、第2のデータ経路上の到来CDMA信号を、第1のデータ経路上のロック信号に照らして確かめることを例示している。
ブロック120−504は、第2のデータ経路を用いて、到来CDMA信号が、ロック信号またはローカルに生成された信号を自己相関または相互相関している信号と区別する少なくとも1つの特性を有するかどうかを決定することを例示している。
ブロック120−506は、ロック信号がその少なくとも1つの特性を欠いている場合に、第2の到来CDMA信号を求めてスキャンされた信号窓を探索し続けることを例示している。
要約すれば、本発明に従った推測航法システムは、GPS受信機および少なくとも1つのセンサを備える。GPS受信機は第1のデータ経路および第2のデータ経路を備える。第1のデータ経路は、スキャンされた信号窓内に位置する到来GPS信号を、ローカルに生成された信号と相関づける。第2のデータ経路は、スキャンされた信号窓内に位置する到来GPS信号をロック信号に照らして確かめて、到来GPS信号を自己相関している信号と区別する少なくとも1つの特性を到来GPS信号が有するかどうかを判定する。GPS受信機は、到来GPS信号がその少なくとも1つの特性を欠いている場合に第2の到来GPS信号を求めてスキャンされた信号窓を探索し続けるために、ローカルで生成された信号を変更することができる。センサは、GPS受信機の位置を計算する際に使用するためにGPS受信機への推測航法入力を選択的に供給する。
GPSシステムの構成要素を無線通信システム(上述の通り、セルラー、ページング、双方向ページング、携帯情報端末、ブルートゥース、およびPCSシステムを含む)と統合する場合、GPSシステムは、典型的な無線通信システムのユーザが遭遇するはずである条件下でGPS衛星を捕捉しトラッキングする能力を有していなければならない。それらの条件の一部、例えば屋内での使用、衛星の観察を妨げる高層建築物を有する繁華街地域におけるような限られた天空視野を有する密集した市街化区域での使用などは、地上波ベースの無線通信システムについては管理可能であるが、GPSシステムにとっては難しい状況である。例えば、GPS受信機がGPS衛星からの信号を捕捉し、衛星をトラッキングし、必要に応じて、いずれの外部情報もGPSシステムに送達されることなくナビゲーションを実行する、例えば従来のスタンドアロン・モードGPSは、長い初期測位時間(TTFF:Time To First Fix)に伴う問題を抱えており、さらに、屋内または限られた天空視野条件下でのGPS衛星信号を捕捉する限られた能力を有する。何らかの付加的な情報があっても、エフェメリス・データがGPSシステム自体から獲得されなければならず、さらにそのような情報を確実に獲得するためには強力信号を必要とするので、TTFF時間は30秒を超えることもあり得る。GPSシステムのこれらの要件は、携帯型無線通信システム装置における電力消費と同様に位置解の可用性の信頼度に影響を及ぼす。
これらの問題を克服するために、本発明は、種々の要因に応じて複数の動作モードを可能にする。本発明のGPSシステムは、例えばGPS受信機が強力信号を受信している、最近のエフェメリスまたはアルマナック・データを有する、または正確な位置が要求されない場合、スタンドアロン・モードで使用することができる。しかし、本発明のGPSシステムが十分に強力なGPS信号を受信していない、例えば携帯型無線通信装置が屋内で使用されている場合、本発明のGPSシステムは、異なる動作モード、例えば無線通信システムがGPS受信機によって受信されたGPS信号および無線通信システムによって供給される付加的な情報を用いてGPSシステムが捕捉、トラッキングおよび/またはナビゲートするのを助けるまたは「支援する」動作モードに切換わることができる。この動作モードは「ネットワーク支援」モードと呼ばれる。さらに、本発明のGPSシステムは、いっそう粗雑な信号受信環境において使用されている時でも、GPS受信機または携帯電話機に位置情報を供給するために完全に無線通信システムに依存することができ、そして本発明のGPSシステムはその際、提供された無線通信ネットワークにおいて、または「ネットワークベースの」動作モードで動作するであろう。本発明のGPSシステムは、ユーザ選択の嗜好または要請とともに、いくつかの変数に基づきこれらの動作モード間で切換わることができ、ローカルまたは遠隔制御によって、またはGPSシステムに付与される自動または手動コマンドのどちらかによって切換わることができる。
実施形態のGPSシステムの態様は、フィールド・プログラマブル・ゲート・アレイ(FPGA)、プログラマブル・アレイ論理(PAL)装置、電気的にプログラム可能な論理記憶装置および標準的なセルベースの装置といったプログラム可能論理装置(PLD)だけでなく、特定用途向け集積回路(ASIC)を含む、多様な回路のいずれかにプログラムされた機能として具体化され得る。実施形態のGPSシステムの態様を具体化するための一部の他の可能性は以下を含む。(電子的に消去可能なプログラム可能な読出し専用メモリ(EEPROM)といった)メモリを備えるマイクロコントローラ、埋込み型マイクロプロセッサ、ファームウェア、ソフトウェア等々。さらに、実施形態のGPSシステムの態様は、ソフトウェア・ベースの回路エミュレーション、個別論理回路(順序型および組合せ型)、カスタム・デバイス、ファジー(ニューラル)論理、量子デバイス、および上記の装置形式のいずれかの混成物を有するマイクロプロセッサにおいて実施され得る。当然、基礎となる装置技術は、例えば、相補形金属酸化膜半導体(CMOS)のような金属酸化膜半導体電界効果トランジスタ(MOSFET)技術、エミッタ結合論理(ECL)のようなバイポーラ技術、ポリマー技術(例えばシリコン共役ポリマーおよび金属共役ポリマー−金属構造物)、アナログおよびデジタル混成などの多様な構成要素形式において提供され得る。
説明およびクレーム全体を通じて、文脈が明らかに別様に要求しない限り、「を備える」、「よりなる」などの語は、排他的または網羅的な意味ではなく包含的な意味において、すなわち「を含むが、限定されない」という意味において解釈しなければならない。また、単数または複数を使用している語は、それぞれ複数または単数も含む。さらに、単語「ここで」、「以下に」、「前に」、「後に」、および類似の趣旨の語は、ここで使用された場合、全体としてこの特許を指しており、この特許のいずれかの特定の部分を指しているのではない。単語「または」が2つ以上の項目の列挙に関して使用された場合、その語は単語の以下の解釈の全部を包括する。すなわち、列挙における項目のいずれか、列挙における項目の全部、および列挙における項目のいずれかの組合せ。
GPSシステムの例示した実施形態の上記の説明は、網羅的であるか、または本発明を開示した厳密な形態に限定するように意図されていない。GPSシステムの具体的な実施形態および実例を例証のためにここに記載したが、種々の等価な修正が、当業者には認識されるはずである通り、GPSシステムの範囲内で可能である。ここに提示されたGPSシステムの教示は、上述の電子システムのためだけでなく、他の電子システムにも適用することができる。
上述の種々の実施形態の要素および行為は、さらなる実施形態を提供するために組み合わせることができる。これらおよび他の変更が上記の詳細な説明に照らして実施形態のGPSシステムに行うことができる。
上記の引用文献、米国特許および特許出願の全部は参照によってここに採り入れられる。ここに記載された実施形態の態様は、必要に応じて、GPSシステムのさらに別な実施形態を提供するために上述の種々の特許および出願のシステム、機能および概念を使用するために修正することができる。
一般に、添付の特許請求の範囲において使用される用語は、GPSシステムをこの明細書および特許請求の範囲において開示された特定の実施形態に限定するように解釈してはならず、特許請求の範囲のもとで動作する全部の電子システムを包含するように解釈しなければならない。従って、GPSシステムは開示によって限定されるのではなく、むしろGPSシステムの範囲は、特許請求の範囲によって完全に決定されるべきである。
GPSシステムの特定の態様が特定の請求項形式で添付する特許請求の範囲に提示されるが、発明者らはあらゆる数の請求項形式におけるGPSシステムの種々の態様を想定している。従って、発明者らは、GPSシステムの他の態様に関するそうした付加的な請求項形式を追求するために本願を作成した後に付加的な請求項を追加する権利を留保している。
本発明の実施形態は、以下の図面を用いて説明されているが、これらに限定するものではない。これらの図面において、同じ参照番号は、同じ要素または働きを示す。
GPSシステムの一実施形態のブロック図である。
ベースバンド・チップ・システムの一実施形態のブロック図である。
ベースバンド・チップの一実施形態の有意なサブシステムを示すブロック図である。
一実施形態における、GPSシステムの全体データフローの概略を示すブロック図である。
GPSシステムの全体データフローをさらに詳しく示すブロック図である。
一実施形態における、サブシステム1の機能ブロックを示すブロック図である。
一実施形態における、サブシステム1の分割をさらに詳しく示すブロック図である。
サブシステム1の入力サンプルのフローの一実施形態を示すブロック図である。
一実施形態における、サブシステム2の機能ブロックを示すブロック図である。
サブシステム2のフローの他の実施形態を示すブロック図である。
サブシステム2のデータフロー制御の一実施形態を示すブロック図である。
サブシステム2のデータフロー制御の他の実施形態を示すブロック図である。
サブシステム2の制御フローの一実施形態を示すブロック図である。
サブシステム2の制御モジュール・インターフェースの一実施形態を示すブロック図である。
一実施形態における、サブシステム2のマスタ・コントローラのフローのブロック図である。
一実施形態における、サブシステム3のモジュールのブロック図である。
一実施形態における、サブシステム3の機能フローのブロック図である。
一実施形態における、サブシステム3の機能フローの他のブロック図である。
一実施形態における、サブシステム3の制御フローのブロック図である。
一実施形態における、サブシステム3のFFTコントローラのフローのブロック図である。
一実施形態における、サブシステム3のFFTのフローのブロック図である。
一実施形態における、サブシステム3のFFTコントローラのフローのブロック図である。
一実施形態における、サブシステム3のマスタ・コントローラのフローのブロック図である。
一実施形態における、サブシステム2/FIFO2/サブシステム3のフローのブロック図である。
一実施形態における、サブシステム2/FIFO2/サブシステム3/サブシステム5の配置構成のブロック図である。
一実施形態における、サブシステム3に実装されるシーケンサ・サブシステムの要素を示す。
一実施形態における、様々なサブシステム4のモジュールを示すブロック図である。
一実施形態における、サブシステム4のシーケンサ・モジュール・インターフェースの種々の面を示すブロック図である。
一実施形態により、サブシステム4のシーケンサのフローを示すブロック図である。
一実施形態により、サブシステム4のシーケンサ状態機械のフローを示すブロック図である。
一実施形態における、様々なサブシステム5のモジュールを示すブロック図である。
一実施形態における、FIFO1構造の種々の面を示すブロック図である。
一実施形態による、サブシステム5のメモリ・データ・パスのフローを示すブロック図である。
一実施形態による、サブシステム5のアービトレーション優先方式を示すブロック図である。
一実施形態による、トラッキング・モード(モード3)のプロセス・フローの種々の面を示すブロック図である。
一実施形態による、コールド・スタート・モード(モード1)のプロセス・フローの種々の面を示すブロック図である。
一実施形態による、相関器のデータ・パスを示すブロック図である。
一実施形態による、コヒーレントRAMのデータ・ストレージの種々の面を示すブロック図である。
一実施形態による、コヒーレントRAMのFFTアクセスの種々の面を示すブロック図である。
一実施形態による、FFTで必要となるデータの順序を示すブロック図である。
一実施形態による、コヒーレントRAMの入力回転(twiddle)選択アルゴリズムを示すブロック図である。
一実施形態による、回転生成のブロック図である。
一実施形態による、回転マルチプレクサの実施例を示すブロック図である。
一実施形態による、FIFO2出力アドレス生成を示すブロック図である。
一実施形態による、FFTアドレスの回転(twiddling)の種々の面を示すブロック図である。
メッセージ・シリアル・インターフェースとデータ・シリアル・インターフェースとを含むインターフェースによる、ベースバンド処理部に結合されるRF処理部を含む衛星測位システム受信機を示す。
データ・シリアル・インターフェースを形成するデータ・クロック信号線とデータ・ビット信号線でそれぞれ運ばれるデータ・クロックとデータ信号との間の関係を表わすタイミング図を示す。
このメッセージ・シリアル・インターフェースの一部を形成するメッセージ・クロック信号線とメッセージ・データ・ビット信号線でそれぞれ運ばれるメッセージ・クロックとメッセージ・データ・ビットとの間の関係を表わすタイミング図を示す。
RF処理部とベースバンド処理部とをインターフェースする方法を示す。
一実施形態のもとでの、複数のプロセッサを含む構成要素の間で分割および共用するコア・メモリをサポートする電子システムのブロック図である。
一実施形態のもとでの、中央演算処理装置とデジタル信号処理装置(DSP)のそれぞれに専用のメモリ領域を持つ電子システム構成のブロック図である。
一実施形態のもとでの、ホスト電子システムの始動/起動後のコア・メモリ構成のブロック図である。
一実施形態のもとでの、分割されて、中央演算処理装置とDSPとの間で共用するメモリを含む電子システムのブロック図である。
一実施形態のもとでの、マッピング再割当てを用いて、DSPメモリの第1のブロックを、DSPアドレス空間からプロセッサ・アドレス空間に再割当てするメモリ構成のブロック図である。
一実施形態のもとでの、DSPメモリの8キロバイト・ブロックを、DSPアドレス空間からプロセッサ・アドレス空間に再割当てした後のメモリ構成(メモリ・マップ)を示す。
一実施形態のもとでの、マッピング再割当てを用いて、DSPメモリのn個のメモリ・ブロックを、DSPアドレス空間からプロセッサ・アドレス空間に再割当てするメモリ構成のブロック図である。
一実施形態のもとでの、DSPメモリの64キロバイト・ブロックを、DSPアドレス空間からプロセッサ・アドレス空間に再割当てした後のメモリ構成(メモリ・マップ)を示す。
一実施形態のもとでの、関連するメモリ読込み順序とともに、分割および再割当ての後のメモリ領域のブロック図である。
一実施形態のもとでの、スイッチング再割当てを用いて、プロセッサで用いられるDSPに関連するメモリの或る部分を再割当てする電子システム構成のブロック図である。
一実施形態のもとでの、DSPメモリの1ブロックを、DSPアドレス空間から、メモリ・インターフェースを通じて、プロセッサ・アドレス空間に再割当てするメモリ構成のブロック図である。
一実施形態のもとでの、DSPメモリの32キロバイトのブロックを、DSPアドレス空間からプロセッサ・アドレス空間に再割当てした後のメモリ構成(メモリ・マップ)を示す。
一実施形態のもとでの、スイッチング再割当てを用いてメモリ・アドレスの1グループまたは1ブロックを再割当てし、また、マッピング再割当てを用いてメモリ・アドレスの他のグループを再割当てするシステム構成のブロック図である。
一実施形態のもとでの、スイッチング再割当てとマッピング再割当てを両方とも使用して、DSPメモリのブロックを、DSPアドレス空間からプロセッサ・アドレス空間に再割当てするメモリ構成のブロック図である。
一実施形態のもとでの、DSPメモリの第1のブロックと第2のブロックを、DSPアドレス空間からプロセッサ・アドレス空間に再割当てした後のメモリ構成(メモリ・マップ)を示す。
一実施形態のもとでの、関連するメモリ読込み順序とともに、分割および再割当ての後のメモリ領域のブロック図である。
代替実施形態のもとでの、スイッチング再割当てを用いてメモリ・アドレスの1グループを再割当てし、また、マッピング再割当てを用いてメモリ・アドレスの他のグループを再割当てするシステム構成のブロック図である。
一実施形態のもとでの、再割当てされたメモリとマルチプレクサを含む電子システムのブロック図である。
一実施形態のもとでの、メモリ共用をサポートする制御レジスタのブロック図である。
一実施形態のもとでの、メモリ共用をサポートする状態レジスタのブロック図である。
一実施形態のもとでの、メモリ共用をサポートする読出し/書込み違反のアドレス・レジスタのブロック図である。
一実施形態のもとでの、メモリ共用をサポートするアドレス・マップを示す。
一実施形態のもとでの、メモリ共用をサポートするアドレス・マップを示す。
信号処理システムを含むシステムの一実施形態のブロック図である。
信号処理部の一実施形態のサブシステムを示すブロック図である。
アービトレーション・ユニットを含む信号処理部の一実施形態のブロック図である。
RAMにアクセスするために、異なるエンティティに優先順位が割当てられる一実施形態を図示し、かつアービトレーション・ユニットを示すブロック図である。
入力サンプルRAMへのアクセスを制御する際に行われるシグナリングの一部を示す制御構造(FIFO1)のブロック図である。
コールド・スタート・モードの場合に、メモリ割当てを含む信号処理部の1構成を示すブロック図である。
粗捕捉モードの場合に、メモリ割当てを含む信号処理部の1構成を示すブロック図である。
ホット・スタート・モードの場合に、メモリ割当てを含む信号処理部の1構成を示すブロック図である。
トラッキング・モードの場合に、メモリ割当てを含む信号処理部の1構成を示すブロック図である。
入力サンプルRAMにデータを格納する方法のいくつかの面を示すブロック図である。
コヒーレントRAM用のオーバーフロー状態とアンダーフロー状態を示す図である。
トラッキング・モードなどの2経路−高分解能モードで、コヒーレントRAM78−1205用のオーバーフロー状態とアンダーフロー状態を示す図である。
複数のチャネル間で共用されている単一コヒーレントRAMの一例を示すブロック図である。
割当てられたコヒーレント・データ・メモリ領域、またはコヒーレントRAMにデータを格納する様々なモードを示すブロック図である。
割当てられたNCSデータ・メモリ領域、またはバックエンド保存RAMにデータを格納する様々なモードを示すブロック図である。
異なる動作モードで、RAMストレージの様々なモードの概念を示す図である。
一実施形態における、チャネルRAMと、チャネルRAMがやり取りする要素とを示すブロック図である。
信号処理サブシステム・シーケンサの一実施形態のブロック図である。
一実施形態における、信号処理サブシステム・シーケンサの機能を示すフローチャートである。
一実施形態のセマフォ・ワード構造の図である。
一実施形態における、セマフォ・ワードの構成を示す。
一実施形態における、HW制御されるセマフォ、SW制御されるセマフォ、「pause(ポーズ)」セマフォを含むSS2、SS3、FIFO1のセマフォのリストである。
一実施形態による、SS2およびSS3用の終了状態のリストである。
シーケンサの一実施形態のブロック図である。
一実施形態による、RAMアドレスを生成する要素のブロック図である。
シーケンサの動作を示すフローチャートである。
SS3用のシーケンサの動作を示すフローチャートである。
トラッキング・ループのブロック図を示す。
同期手法を示す。
同期手法を示す。
相互相関を用いての弱スペクトラム拡散信号における強力信号相殺を示すフローチャートである。
相殺された信号がCWジャミング信号であるかもしれない場合に、そのCWジャミング信号を特定して、除去する信号処理図を示す。
電気部品のブロック図を示す。
CWジャミング信号を特定して、除去するフローチャートを示す。
強力信号と中程度の信号で動作するトラッキング・システムの典型的で高レベルな実施例である。
ハードウェア更新のブロック図である。
GPS受信機の一実施形態のブロック図である。
このGPS受信機の実施形態の他のブロック図である。
このGPS受信機の実施形態の他のブロック図である。
ブラウンアウト検知回路の一実施形態のブロック図である。
一実施形態のブラウンアウト検知プロセスを示すフローチャートである。
RTCクロック信号を使用してGPSクロック信号を更新することと、推定GPS時刻が、GPS受信機の位置を捕捉するのに充分正確であるかどうか判定することを含むプロセスの一実施形態を示すフローチャートである。
RTCクロック信号を使用してGPSクロック信号を更新することと、推定GPS時刻が、GPS受信機の位置を捕捉するのに充分正確であるかどうか判定することを含むプロセスの一実施形態を示すフローチャートである。
RTCクロック信号を使用してGPSクロック信号を更新することと、推定GPS時刻が、GPS受信機の位置を捕捉するのに充分正確であるかどうか判定することを含むプロセスの一実施形態を示すフローチャートである。
一実施形態のもとでの、EARC(エッジ整列比率カウンタ)のブロック図である。
一実施形態のもとでの、サンプリングとエッジ検出を示す。
一実施形態のもとでの、通信装置のブロック図である。
一実施形態のもとでの、通信装置のブロック図である。
様々なクロック信号と、制御信号出力との間の関係を示すタイミング図である。
一実施形態のもとでの、通信装置のブロック図である。
一実施形態のもとでの、2つ以上のクロックの周波数間の関係を決定する方法のフローチャートである。
代表的なCDMA信号フローである。
一実施形態のもとでの、自己/相互相関チェックである。
一実施形態のもとでの、このシステムのブロック図である。
一実施形態のもとでの、このシステムのブロック図である。
一実施形態のもとでの、このシステムの他のブロック図である。
一実施形態のもとでの、微弱な信号システムにおける、自己/相互相関を低減する/排除するフローチャートである。