(57)【要約】【課題】略一定で且つ少ない記憶容量で、さらにコードステートの状態領域におけるどの位置に所望のコードステートが存在しても略一定の演算処理量でコードステートを設定するコード制御装置を提供する。【解決手段】コードステート設定部１のステート演算部１１は、入力されたチップ単位のコード位相量Ｋに基づき所望のコードステートＣｓの状態空間上の位置を検出する。ステート演算部１１は、この検出結果から所定間隔でコードステートをジャンプする演算を状態遷移行列テーブル１２に記憶されている状態遷移行列ＴＦを用いて行い、コードステートＣｓに近い特定コードステートを取得する。コードステート演算部１１は、取得したコードステートから１状態ずつコードステートを遅延させる処理か、遅延方向と逆方向に１状態ずつコードステートを遷移させる処理の適当な方を選択してコードステートを遷移させて所望のコードステートＣｓを得る。【選択図】  図１
2006242616.tif 000002
【特許請求の範囲】
【請求項１】
コード位相におけるチップ単位未満の位相量に基づいてコードイネーブル信号を生成するコードＮＣＯと、
前記コード位相におけるチップ単位の位相量に基づいてコードステートを設定するコードステート設定手段と、
前記コードイネーブル信号に同期して前記コードステートに基づくコードを発生するコード発生器と、を備えたコード制御装置において、
前記コードステート設定手段は、前記チップ単位の位相量に基づいて、コードステートを所定数の状態だけ先に遷移させるジャンプ処理と、コードステートを１状態だけ前後に遷移させるステップ処理とを組み合わせて所望のコードステートを演算するステート演算手段を備えたことを特徴とするコード制御装置。
【請求項２】
前記コードステート設定手段はコードステートの遷移演算に用いる状態遷移行列を記憶する記憶手段を備え、
前記ステート演算手段は、状態遷移行列を用いて前記ジャンプ処理を行う請求項１に記載のコード制御装置。
【請求項３】
前記記憶手段は、前記状態遷移行列の行データまたは列データを１変数として記憶する請求項２に記載のコード制御装置。
【請求項４】
前記ステート演算手段は、全コードステートを階層的に分割し、上層階層から順に下層階層へ階層別ジャンプ処理を繰り返すことで前記ジャンプ処理を構成する請求項１〜３のいずれかに記載のコード制御装置。
【請求項５】
前記ステート演算手段は、全コードステート領域を第１ステート間隔で分割した第１階層ステート領域毎にジャンプする第１階層ジャンプ処理を行った後に、前記第１階層ステート領域を第２ステート間隔で分割した第２階層ステート領域毎にジャンプする第２階層ジャンプ処理を行うことで、前記ジャンプ処理を構成する請求項４に記載のコード制御装置。
【請求項６】
前記コードステート設定手段は、予め設定されたジャンプ位置のコードステートを記憶する記憶手段を備え、
前記ステート演算手段は、前記ジャンプ位置のコードステートと前記状態遷移行列とを用いて前記ジャンプ処理を行う請求項２〜請求項５のいずれかに記載のコード制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、測位信号をコード変調する疑似雑音コードに対する装置内の基準コードを生成するコード制御装置、特に、ＧＰＳのＬ２ＣＭコードおよびＬ２ＣＬコードのような長い循環コードを部分的に切り取って用いたコードに対する基準コードを生成するコード制御装置に関するものである。
【背景技術】
【０００２】
ＧＰＳを含むＧＮＳＳ測位信号を受信して測位等を行うＧＮＳＳ受信機では、測位信号を受信するために疑似雑音コード生成装置（本発明のコード制御装置に相当。以下、「コード制御装置」と称す。）が設置されている。
【０００３】
コード制御装置は、コード位相計算部、コードステート設定部、コードＮＣＯ、およびコード発生器を備える。コード位相計算部で算出されたコード位相のチップ単位未満の位相量はコードＮＣＯに入力され、コードＮＣＯはコードイネーブル信号を生成してコード発生器に出力する。コード位相計算部で算出されたコード位相のチップ単位の位相量はコードステート設定部に入力され、コードステート設定部は入力された位相量から所望のコードステートを設定してコード発生器に出力する。
【０００４】
コード発生器は、コードステート設定部から入力されたコードステートを用い、コードＮＣＯから入力されたコードイネーブル信号に準じてコードを出力する。
【０００５】
このような構成において、コードステート設定部は、予め全てのコードステートを記憶しておき、入力された位相量から適用するコードステートを検出することによりコードステートを設定する。
【０００６】
しかしながら、従来のコード制御装置では、予め全てのコードステートを記憶しておかなければならないが、コードステート数はコードの長さに依存することから、長いコードの場合に膨大な記憶容量を要する。例えば、３７個のＬ２ＣＭコードとＬ２ＣＬコードとのコードステートを全て記憶するには、Ｌ２ＣＭコードが１０２３０チップ、Ｌ２ＣＬコードが１０２３０×７５チップで形成されることから、１０９．７４Ｍバイトが必要となる。
【０００７】
この問題を解決する方法として、非特許文献１には、全てのコードステートの内、所定間隔の複数のコードステートのみを予め記憶しておき、位相量に基づき、記憶したコードステートのうちの所望のコードステートに近い適当なコードステートを選択する方法が開示されている。この方法では、適当なコードステートは、所望のコードステートよりも前側（遅延処理方向と反対側）のステートであり、この適当なコードステートに設定した後に、シフトレジスタの状態を１状態ずつコードステートが進む方向（遅延処理方向）に変化させることで所望のコードステートを演算する。例えば、１０２４ステート毎にコードステートを記憶する場合を前述のＬ２ＣＭコード、Ｌ２ＣＬコードに適用すると、１０９．７ｋバイトの記憶容量となり、代わりに１ステート単位で遅延させる処理の演算量が最大で１０２３回となる。
【非特許文献１】岡田，内田，尾上，白川，「次世代衛星航法システム受信機のための疑似雑音符号生成器の構成」，信学技報CAS2002-29，社団法人電子情報通信学会
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、非特許文献１に記載のコード制御装置では、制御する位相量毎に応じて設定する複数のコードステートを各測位信号、すなわち、各測位衛星に対して記憶しなければならない。従って、対象とする測位衛星数が多くなると、その増加量に応じて記憶するコードステート量が増加して記憶容量が増加してしまう。
【０００９】
また、設定したコードステートから目的とするコードステートまでは、遅延処理により１状態ずつ遷移させていくため、設定された２つのコードステート間で後側（遅延側）に近いコードステートほど遅延処理演算量が増加しＣＰＵの負荷が大きくなる。これは設定するコードステート間隔が広がるほど問題となる。すなわち、１０２４ステートの間隔があれば最大で１０２３回の演算処理が必要になる。ここで、コードステート間隔が狭くなれば解消されるが、コードステート間隔を狭くすると、その分記憶するコードステート量が増加して記憶容量が増加してしまう。すなわち、記憶容量抑圧のためにコードステート間隔を広く取りたいが、広く取りすぎると演算負荷が増加してしまう。
【００１０】
したがって、この発明の目的は、対象とするコード数によらず略一定で且つ従来よりも少ない記憶容量で、さらにコードステートの状態領域におけるどの位置に目的とするコードステートが存在しても略一定の演算処理量でコードステートを設定してコードを発生するコード制御装置を提供することにある。
【課題を解決するための手段】
【００１１】
この発明は、コード位相におけるチップ単位未満の位相量に基づいてコードイネーブル信号を生成するコードＮＣＯと、チップ単位の位相量に基づいてコードステートを設定するコードステート設定手段と、コードイネーブル信号に同期してコードステートに基づくコードを発生するコード発生器と、を備えたコード制御装置において、コードステート設定手段に、チップ単位の位相量に基づいて、コードステートを所定数の状態だけ先に遷移させるジャンプ処理とコードステートを１状態だけ前後に遷移させるステップ処理とを組み合わせて所望のコードステートを演算するステート演算手段を備えたことを特徴としている。
【００１２】
この構成では、コードステート設定手段のステート演算手段は、チップ単位の位相量に基づいて、コードステートの状態領域における所望のコードステートに最も近いコードステートへジャンプ処理を行う。このジャンプ処理とは、位相量を算出する際に用いたイニシャルステートに対して、コードステートを所定数の状態だけ先に遷移させる演算処理である。次に、ステート演算手段は、この演算されたコードステートに対して、１状態ずつコードステートが前後に遷移するステップ処理を行って所望のコードステートを演算する。この際、コードステートをシフトレジスタの遅延方向に１状態遷移させるステップフォワード処理と、前記遅延方向と反対方向に１状態遷移させるステップバック処理とが設定されている。そして、ジャンプ処理により設定されるコードステートと所望のコードステートとの状態空間上の位置関係により、ステップフォワード処理かステップバック処理のいずれかが選択されて実行される。
【００１３】
また、この発明のコード制御装置のコードステート設定手段はコードステートの遷移演算に用いる状態遷移行列を記憶する記憶手段を備え、ステート演算手段は、状態遷移行列を用いてジャンプ処理を行うことを特徴としている。
【００１４】
この構成では、コードステートを所定数の状態だけ先に遷移させる演算処理に状態遷移行列を用いる。状態遷移行列はコードステートのビット数の行と列を備える行列であり、遷移させる状態数にのみ行列の各要素が依存する。すなわち、異なるコードステートに、同じ状態遷移行列を演算すれば、同じ数だけ状態が遷移する。このため、全てのコードにおけるジャンプ処理に対して１組の状態遷移行列を記憶しておけばよい。
【００１５】
また、この発明のコード制御装置の記憶手段は、状態遷移行列の行データまたは列データを１変数として記憶することを特徴としている。
【００１６】
この構成では、状態遷移行列の各コードステートにビット演算を行う列を「０」，「１」からなるビット列で記憶するのではなく、行単位または列単位のビット列を例えば１６進数で表す変数のような１つの変数として記憶する。このような処理を行うことで、例えば、２７ビットのビット列が４バイト変数に変換される。
【００１７】
また、この発明のコード制御装置のステート演算手段は、全コードステートを階層的に分割し、上層階層から順に下層階層へ階層別ジャンプ処理を繰り返すことでジャンプ処理を構成することを特徴としている。
【００１８】
この構成では、全コードステート領域を所定間隔で複数の部分領域に分割する（第１階層）。そして、分割された部分領域をより細かい間隔で複数の部分領域に分割する（第２階層）。さらに、このような分割処理を繰り返すことで、コードステート領域を階層化する。そして、ステート演算手段は、まず第１階層において前述のジャンプ処理を行い、次に第２階層において、第１階層とは異なる間隔のジャンプ処理を行う、さらに下の階層、すなわち第２階層を分割する第３階層、第３階層を分割する第４階層等が存在すれば、順次、第３階層でのジャンプ処理、第４階層でのジャンプ処理等を順次行っていく。
【００１９】
この際、各階層でのジャンプ間隔は同じであるので、各層に対して状態遷移行列を記憶しておけば良く、各層でそれぞれジャンプ位置に対して個別にコードステートを記憶するよりも、記憶する情報量が少なくなる。
【００２０】
また、この発明のコード制御装置のステート演算手段は、全コードステート領域を第１ステート間隔で分割した第１階層ステート領域毎にジャンプする第１階層ジャンプ処理を行った後に、第１階層ステート領域を第２ステート間隔で分割した第２階層ステート領域毎にジャンプする第２階層ジャンプ処理を行うことで、ジャンプ処理を構成することを特徴としている。
【００２１】
この構成では、前述の階層構造の具体例として、３層に階層化された場合を示す。この場合、まず、第１階層で大まかなジャンプ処理を行い、第２階層で細かいジャンプ処理を行う。そして、これら２つのジャンプ処理により所望のコードステートに近づけた後にステップ処理を行って所望のコードステートを演算する。例えば、Ｌ２ＣＭコードは１０２３０ステートからなり、第１階層で４０９６ステートのジャンプ処理を行い、第２階層で６４ステートのジャンプ処理を行う。このように、階層数を３つにすることで、ジャンプ処理に利用する状態遷移行列の記憶容量と、ステップ処理での演算量とのバランスが適当になる。
【００２２】
また、この発明のコード制御装置のコードステート設定手段は、予め設定されたジャンプ位置のコードステートを記憶する記憶手段を備え、ステート演算手段は、ジャンプ位置のコードステートと状態遷移行列とを用いてジャンプ処理を行うことを特徴としている。
【００２３】
この構成では、いずれかの階層にコードステートを用いたジャンプ処理を用いる。例えば、階層全体でのジャンプ数が少ない第１階層でコードステートを用いたジャンプ処理を行う。これにより、若干の記憶容量の増加があってもジャンプ処理演算数が減少するので演算処理での負荷が低減する。
【発明の効果】
【００２４】
この発明によれば、所望のコードステートを演算するのに、まずジャンプ処理で所望のコードステートに最も近い予め設定されたコードステートに状態移動し、ステップフォワード処理またはステップバック処理で細かく状態移動することで、従来のようにジャンプとステップフォワードを用いた場合よりコードステートの全状態領域で最適な処理演算量を実現することができる。
【００２５】
また、この発明によれば、状態遷移行列を記憶して用いることで、従来のようにジャンプ先のコードステートを記憶する場合よりも記憶容量を低減することができる。特に、コードが長くなりジャンプ処理の設定数が増加すれば、より一層、記憶容量の低減効果が大きくなる。
【００２６】
また、この発明によれば、状態遷移行列の行または列を変数化することで、さらに記憶容量を低減することができる。
【００２７】
また、この発明によれば、コードステートの演算処理を階層化することで、ジャンプ処理も階層化されてコードステート演算効率が向上する。ここで、ジャンプ処理に状態遷移行列を用いれば、各階層に対して１組の状態遷移行列を記憶しておけばよいので、従来のジャンプ先のコードステートを記憶する場合よりも記憶容量を低減することができる。
【００２８】
また、この発明によれば、特に、Ｌ２Ｃ信号のＬＣ２ＭコードやＬ２ＣＬコードでは、３階層で処理することで、処理演算量と記憶容量とのバランスが良くなり、効率良くコードステートを演算することができる。
【００２９】
また、この発明によれば、状態遷移行列を用いるジャンプ処理とコードステートを用いるジャンプ処理との併用する、すなわち、階層毎にこれらの処理を適当に振り分けることで、より効率良くコードステートを演算することができる。
【発明を実施するための最良の形態】
【００３０】
本発明の実施形態に係るコード制御装置について図１〜図６を参照して説明する。
図１は本実施形態のコード制御装置の概略構成を示すブロック図である。
本実施形態のコード制御装置は、コードステート設定部１、コード発生器２、コードＮＣＯ３、コード位相計算部４を備える。
【００３１】
コード位相計算部４は、図示しない前段から入力され、所定の復調処理が行われたＬ２Ｃ信号のコード（Ｌ２ＣＭコード、Ｌ２ＣＬコード）と、予め設定した初期コードとを相関処理して、コード位相を検出する。このコード位相は、コードを形成する最小単位であるチップ単位の位相量Ｋと、チップ単位未満の位相量Ｄｋとからなり、チップ単位の位相量Ｋがコードステート設定部１に出力され、チップ単位未満の位相量Ｄｋがスケール変換されてコードＮＣＯ３に出力される。
【００３２】
コードステート設定部１は、ステート演算部１１、状態遷移行列テーブル１２、および、ステートテーブル１３を備える。
状態遷移行列テーブル１２には後述するジャンプ処理を行う際に用いる状態遷移行列ＴＦが記憶されている。ここで、状態遷移行列ＴＦは各列データをそれぞれ１つの複数バイトの変数として記憶している。Ｌ２Ｃ信号に用いるＬ２ＣＭコードやＬ２ＣＬコードは２７ビットのシフトレジスタ演算により形成されるので、状態遷移行列は２７×２７の行列となる。したがって、列を４バイト（３２ビット）の変数として記憶する。この例では、各列データを１変数として記憶したが、各行データを１変数として記憶してもよい。
ステートテーブル１３には、測位衛星毎に設定されたイニシャルステートＩｓおよびエンドステートＥｓが予め記憶されている。これら測位衛星毎のイニシャルステートＩｓおよびエンドステートＥｓは公開されており、この公開されたデータが予め記憶されている。ステート演算部１１は、状態遷移行列テーブル１２から状態遷移行列ＴＦを読み出し、ステートテーブル１３からイニシャルステートＩｓおよびエンドステートＥｓを読み出して、チップ単位の位相量Ｋに基づいて後述する方法で、Ｌ２Ｃ信号を変調したコードに対応するコードステートＣｓを演算してコード発生器２に出力する。
【００３３】
コードＮＣＯ３は、チップ単位未満の位相量Ｄｋと別途入力されるクロック信号ＣＬＯＣＫとに基づいて、コードイネーブル信号Ｃｅを生成して、コード発生器２に出力する。
【００３４】
コード発生器２は、コードステート設定部１から入力されるコードステートＣｓと、コードＮＣＯ３から入力されるコードイネーブル信号Ｃｅと、別途入力されるクロック信号ＣＬＯＣＫとに基づいて、Ｌ２ＣＭコードやＬ２ＣＬコードに対応する基準コードを生成して出力する。
【００３５】
そして、このコード制御装置を含む図示しないＧＰＳ受信機は、このように生成された基準コードを用いて受信したＬ２Ｃ信号を解析して、Ｌ２Ｃ信号に重畳された情報を取得する。また、コード発生器２から出力された基準コードは、再度コード位相計算部４に入力され、コード位相が計算される。そして、このコード位相に基づきコードを調整し続けることで、コードの捕捉および追尾を実現する。
【００３６】
次に、コードステート設定部１でのコードステートの演算方法について、図を用いて、より詳細に説明する。
図２はコードステートの演算方法を示すフローチャートである。また、図３、図４はコードステート演算時の状態遷移を模式的に表した説明図である。ここで、図３は最終階層（第３階層）でステップフォワード処理を行う場合を示し、図４は最終階層（第３階層）でステップバック処理を行う場合を示す。
【００３７】
ステート演算部１１は、コード位相計算部４からチップ単位の位相量Ｋを取得するとともに、ステートテーブル１３に記憶されているイニシャルステートＩｓを読み出す（Ｓ１→Ｓ２）。この際、読み出されるイニシャルステートＩｓは、このコード制御装置がコードの捕捉、追尾を行おうとする測位衛星に設定されたコードに対応するものである。
【００３８】
ここで、ステート演算部１１は、チップ単位の位相量Ｋが「０」であることを検出する、すなわち、入力されたコードがイニシャルステートＩｓにより実現されるコードであると検出すると、コードステートＣｓをイニシャルステートＩｓに設定してコード発生器２に出力する（Ｓ３→Ｓ１８）。
【００３９】
ステート演算部１１は、チップ単位の位相量Ｋが「０」でないと検出すると、第１階層ジャンプ量ｍ１を演算する（Ｓ４）。第１階層とは、図３、図４に示すように、イニシャルステートＩｓからエンドステートＥｓまでの全ステート数Ｌからなる状態空間を所定ステート間隔Ｎ１で分割してＭ１個の部分領域を形成した状態の階層である。そして、第１階層ジャンプ量ｍ１は、分割されたＭ１個の部分領域の境界となるコードステートのうちで、設定コードステートＣｓに近いコードステートにステートをジャンプさせるための演算値である。第１階層ジャンプ量ｍ１は、整数化演算をＩＮＴとすると、
ｍ１＝ＩＮＴ（Ｋ／Ｎ１）
により与えられる。
【００４０】
ステート演算部１１は、演算された第１階層ジャンプ量ｍ１が「０」であれば、前進ステップ数Ｓｆを演算する（Ｓ５→Ｓ１４）。この場合の前進ステップ数Ｓｆは、Ｓｆ＝Ｋにより与えられる。
【００４１】
そして、ステップ演算部１１は、算出された前進ステップ数Ｓｆを用いて、コードステートを遅延させる方向（コード発生用シフトレジスタにおけるシフト方向）のステート遷移演算、すなわち、ステップフォワード処理を行い、所望のコードステートＣｓを設定する（Ｓ１５→Ｓ１８）。
【００４２】
ステート演算部１１は、演算された第１階層ジャンプ量ｍ１が「０」でなければ、算出された第１階層ジャンプ量ｍ１に対応する状態遷移行列ＴＦ１を状態遷移行列テーブル１２から読み出す（Ｓ５→Ｓ６）。状態遷移行列テーブル１２には、それぞれの第１階層ジャンプ量ｍ１に対応する状態遷移行列ＴＦ１が記憶されている。具体的には、これら状態遷移行列ＴＦ１は、コードステートを遅延方向に１ステップ状態遷移させる演算を行う基本状態遷移行列ＴＦ０を、第１階層ジャンプ量ｍ１個乗算してなる行列であり、各第１階層ジャンプ量ｍ１に対して設定されている。
ステート演算部１１は、読み出した状態遷移行列ＴＦ１を用いて、第１階層ジャンプ処理を行う（Ｓ７）。第１階層のジャンプ処理とは、状態遷移行列ＴＦ１とイニシャルステートＩｓとを乗算することで、第２階層の初期ステートＩｓ１に対応するコードステートを算出する演算処理である。これを行列演算式で表すと、
Ｉｓ１＝ＴＦ１・Ｉｓ
となる。
【００４３】
このようなジャンプ処理は状態遷移量に演算処理量が依存しない。図５はジャンプ処理およびステップ処理の演算処理量の状態遷移量依存性を示すグラフである。このグラフは、２７ビットのシフトレジスタ演算により設定されるＬ２Ｃ信号のコードに対する状態遷移演算を示したものである。図５に示すように、状態遷移行列を用いたジャンプ処理は一回当たりの演算処理量は多いものの、状態遷移量に依存せずに常時一定である。一方、ステップ処理は、１ステップに対する演算処理量が少ないものの、状態遷移量（状態遷移ステップ数）に依存して演算処理量が線形に増加していく。このため、図５のような条件ではステップ数が３０を超えれば、状態遷移行列を用いたジャンプ処理の方が演算処理量を少なくすることができる。
【００４４】
次に、ステート演算部１１は、算出された第２階層の初期ステートＩｓ１を基準に、第２階層ジャンプ量ｍ２を演算する（Ｓ８）。第２階層とは、図３、図４に示すように、初期ステートＩｓ１から始まるステート数Ｎ１からなる状態空間を所定ステート間隔Ｎ２で分割してＭ２個の部分領域を形成した状態の階層である。そして、第２階層ジャンプ量ｍ２は、分割されたＭ２個の部分領域の境界となるコードステートのうちで、設定コードステートＣｓに近いコードステートにステートをジャンプさせるための演算値である。第２階層ジャンプ量ｍ２は、整数化演算をＩＮＴとし、剰余演算をＭＯＤとすると、
Ｍ１＝ＭＯＤ（Ｋ／Ｎ１）として、
ｍ２＝ＩＮＴ（Ｍ１／Ｎ２）  （  Ｍ１−ｍ２・Ｎ２＜Ｎ２／２  ）    −（１）
または、
ｍ２＝ＩＮＴ（Ｍ１／Ｎ２）＋１  （  Ｍ１−（ｍ２−１）・Ｎ２＞Ｎ２／２  ）
−（２）
により与えられる。
【００４５】
すなわち、所望のコードステートＣｓを状態空間上で挟む、２つの第２階層の境界のコードステートを比較して、所望のコードステートＣｓに近い側のコードステートにジャンプするような第２階層ジャンプ量ｍ２が選択される。例えば、最も近い境界のコードステートが所望のコードステートＣｓよりも小さい図３（Ｃ）に示すような場合には、式（１）から第２階層ジャンプ量ｍ２が演算される。一方、最も近い境界のコードステートが所望のコードステートＣｓよりも大きい図４（Ｃ）に示すような場合には、式（２）から第２階層ジャンプ量ｍ２（ＴＦ２またはＴＦ’２に相当）が演算される。
【００４６】
ステージ演算部１１は、第２階層ジャンプ量ｍ２が「０」であれば、前進ステップ数Ｓｆを演算する（Ｓ９→Ｓ１４）。この場合の前進ステップ数Ｓｆは、Ｓｆ＝Ｍ１により与えられる。そして、ステップ演算部１１は、算出された前進ステップ数Ｓｆを用いて、コードステートを遅延させる方向（コード発生用シフトレジスタにおけるシフト方向）のステート遷移演算を行い、所望のコードステートＣｓを設定する（Ｓ１５→Ｓ１８）。
【００４７】
ステート演算部１１は、演算された第２階層ジャンプ量ｍ２が「０」でなければ、算出された第２階層ジャンプ量ｍ２に対応する状態遷移行列ＴＦ２（またはＴＦ’２）を状態遷移行列テーブル１２から読み出す（Ｓ９→Ｓ１０）。状態遷移行列テーブル１２には、それぞれの第２階層ジャンプ量ｍ２に対応する状態遷移行列ＴＦ２（またはＴＦ’２）が記憶されている。具体的には、これら状態遷移行列ＴＦ２（またはＴＦ’２）は、コードステートを遅延方向に１ステップ状態遷移させる演算を行う基本状態遷移行列ＴＦ０を、第２階層ジャンプ量ｍ２個乗算してなる行列であり、各第２階層ジャンプ量ｍ２に対して設定されている。
ステート演算部１１は、読み出した状態遷移行列ＴＦ２（またはＴＦ’２）を用いて、第２階層ジャンプ処理を行う（Ｓ１１）。第２階層のジャンプ処理とは、状態遷移行列ＴＦ２（またはＴＦ’２）と第２階層の初期ステートＩｓ１とを乗算することで、第３階層の初期ステートＩｓ２に対応するコードステートを算出する演算処理である。これを行列演算式で表すと、
Ｉｓ２＝ＴＦ２・Ｉｓ１  または、  Ｉｓ２＝ＴＦ’２・Ｉｓ１
となる。
【００４８】
次に、ステート演算部１１は、算出された第３階層の初期ステートＩｓ２を基準に、ステップフォワード処理かステップバック処理かのいずれかを選択する。具体的には、式（１）で算出された第２階層ジャンプ量ｍ２により初期ステートＩｓ２が得られた場合にはステップフォワード処理を選択し、式（２）で算出された第２階層ジャンプ量ｍ２により初期ステートＩｓ２が得られた場合にはステップバック処理を選択する（Ｓ１３）。
【００４９】
ステート演算部１１は、ステップフォワード処理を選択すると、前進ステップ数Ｓｆを演算する（Ｓ１４）。この場合の前進ステップ数Ｓｆは、Ｓｆ＝Ｍ１−ｍ２・Ｎ２により与えられる。そして、ステップ演算部１１は、算出された前進ステップ数Ｓｆを用いて、コードステートを遅延させる方向（コード発生用シフトレジスタにおけるシフト方向）のステート遷移演算を行い、所望のコードステートＣｓを設定する（Ｓ１５→Ｓ１８）。
【００５０】
ステート演算部１１は、ステップバック処理を選択すると、後退ステップ数Ｓｂを演算する（Ｓ１６）。この場合の後退ステップ数Ｓｂは、Ｓｂ＝Ｍ１−（ｍ２−１）・Ｎ２により与えられる。そして、ステップ演算部１１は、算出された後退ステップ数Ｓｂを用いて、コードステートを遅延させる方向と逆の方向（コード発生用シフトレジスタにおけるシフトと反対方向）のステート遷移演算を行い、所望のコードステートＣｓを設定する（Ｓ１５→Ｓ１８）。
【００５１】
以上の処理を、図３、図４を用いて具体的な例で説明する。
まず、図３の場合、ステート演算部１１は、コード位相Ｋが入力されると、全ステート数ＬをイニシャルステートＩｓからエンドステートＥｓまでを順にステート間隔Ｎ１で分割してなる第１階層で、そのステート位置を検出する。そして、第１階層ジャンプ量ｍ１を演算して、これに対応する状態遷移行列ＴＦ１を読み出す。ステート演算部１１は、この状態遷移行列ＴＦ１とイニシャルステートＩｓからジャンプステート位置２＊Ｎ１のコードステートＩｓ１を演算し、このコードステートＩｓ１を、第２階層の初期ステートに設定する。ステート演算部１１は、第１階層の各部分領域をステート間隔Ｎ１よりも細かいステート間隔Ｎ２で分割してなる第２階層で、コード位相Ｋに対応するステート位置を検出する。そして、第２階層ジャンプ量ｍ２を演算して、これに対応する状態遷移行列ＴＦ２を読み出す。ステート演算部１１は、この状態遷移行列ＴＦ２と第２階層の初期ステートＩｓ１からジャンプステート位置３＊Ｎ２のコードステートＩｓ２を演算し、このコードステートＩｓ２を、第３階層の初期ステートに設定する。ステート演算部１１は、設定した第３階層の初期ステートＩｓ２と、算出した前進ステップ数Ｓｆとを用いてステップフォワード処理を行って、所望のコードステートＣｓを設定する。
【００５２】
一方、図４の場合、ステート演算部１１は、コード位相Ｋが入力されると、第１階層で、このコード位相Ｋに対応するステート位置を検出する。そして、第１階層ジャンプ量ｍ１を演算して、これに対応する状態遷移行列ＴＦ’１を読み出す。ステート演算部１１は、この状態遷移行列ＴＦ’１とイニシャルステートＩｓからジャンプステート位置２＊Ｎ１のコードステートＩｓ１を演算し、このコードステートＩｓ１を、第２階層の初期ステートに設定する。ステート演算部１１は、第２階層で、コード位相Ｋに対応するステート位置を検出する。そして、第２階層ジャンプ量ｍ２を演算して、これに対応する状態遷移行列ＴＦ２’を読み出す。
【００５３】
ステート演算部１１は、この状態遷移行列ＴＦ’１とイニシャルステートＩｓからジャンプステート位置２＊Ｎ１のコードステートＩｓ１を演算し、このコードステートＩｓ１を、第２階層の初期ステートに設定する。ステート演算部１１は、第２階層で、コード位相Ｋに対応するステート位置を検出する。そして、第２階層ジャンプ量ｍ２を演算して、これに対応する状態遷移行列ＴＦ’２を読み出す。ステート演算部１１は、この状態遷移行列ＴＦ’２と第２階層の初期ステートＩｓ１からジャンプステート位置４＊Ｎ２のコードステートＩｓ２を演算し、このコードステートＩｓ２を、第３階層の最終ステートに設定する。ステート演算部１１は、設定した第３階層の最終ステートＩｓ２と、算出した後退ステップ数Ｓｂとを用いてステップバック処理を行って、所望のコードステートＣｓを設定する。
【００５４】
ここで、図３、図４に示した階層処理を具体的にＬ２Ｃ信号に適用した場合の記憶容量および演算処理量について説明する。図３、図４に示した階層処理では、Ｌ２Ｃ信号の各コードのイニシャルステートから任意のコードステートを演算には最大の計算量は１６２ +１６２+５．５×Ｎ２／２の演算回数が必要である。また、第１階層のジャンプ処理では（Ｍ１−１）個の状態遷移行列ＴＦ１、第２階層のジャンプ処理では（Ｍ２−１）個の状態遷移行列ＴＦ２を予め計算して記憶しておく必要があり、必要とする記憶容量は１０８×（Ｍ１＋Ｍ２−２）バイトである。
【００５５】
例えば、Ｎ１＝４０９６、Ｎ２＝６４とする。Ｌ２ＣＭコードはコード長が１０２３０チップ、つまり全状態空間のステート数が１０２３０なので、Ｍ１が３、Ｍ２が６４となる。この場合、必要記憶容量は７０２０バイトとなり、最大演算処理量は５００となる。Ｌ２ＣＬコードは、コード長が１０２３０×７５チップ、つまり全状態空間のステート数が１０２３０×７５なので、Ｍ１が１８８、Ｍ２が６４なる。この場合、必要記憶容量は２７０００バイトとなり、最大演算処理量はＬ２ＣＭコードと同じ５００となる。ＣＭコードとＣＬコードは同一の疑似雑音コードから切り出されたものなので、状態遷移行列は同じになる。また、測位衛星数に対応する３７個のＣＭコードとＣＬコードを発生するにはそれぞれのイニシャルステートとエンドステートとを記録しておく必要がある。これらのことを考慮すると、Ｎ１＝４０９６、Ｎ２＝６４の３階層構造でＬ２Ｃ信号のコードステートを演算する際に、必要記憶容量は約２７ＫＢｙｔｅとなり、最大演算処理量は５００となる。このように、本実施形態の構成および処理を用いることで、従来よりも記憶容量、最大演算処理量ともに低減される。
【００５６】
以上のような処理を行うことで、状態遷移量に演算処理量が依存することなく所定のコードステートが得られるジャンプ処理と、状態遷移量により演算処理量が依存するものの１ステート毎にコードステートが得られるステップフォワード処理およびステップバック処理とを、適当に用いることで、従来のように全てのステートを記憶するよりも記憶容量を大幅に低減することができる。また、イニシャルステートからステップフォワード処理でコードステートを演算する方法よりも最大演算処理量を、大幅に低減することができる。
【００５７】
さらには、ステップフォワード処理とステップバック処理とを所望とするコードステートの位置によって選択して用いることで、非特許文献１のようにジャンプ処理した後に所望のコードステートをステップ演算する場合と比較して、このステップ演算を行う階層での演算処理量を半減することができる。
【００５８】
また、ジャンプ処理の状態遷移行列を用いることで、非特許文献１のようなジャンプ位置のコードステートを記憶しておいてジャンプ処理する場合よりも、ジャンプ処理のための記憶容量を低減することができる。これは、状態遷移行列が遷移させるステップ数のみに依存し、状態空間のコードステートの位置によって異ならないため、イニシャルステートと各階層でのジャンプ量に応じた状態遷移行列とだけを記憶しておけばよいからである。そして、この効果は、コードに対する状態空間が広くなる、すなわちコードが長くなるほど有効となり、Ｌ２Ｃ信号に利用されるＬ２ＣＭコードやＬ２ＣＬコードに有効に活用することができる。さらに、コードは測位衛星毎に設定されているが、本実施形態の構成を用いることで、各コードのイニシャルステートと全ての共通の状態遷移行列とのみを記憶しておけばよい。これにより、従来では、測衛星が増加すれば大幅に記憶容量が増加したが、前述の構成ではイニシャルステートとエンドステートが増加するだけで状態遷移行列を新たに記憶する必要がない。この結果、記憶容量の低減効果がより発揮される。
【００５９】
また、コードステートの演算を階層化することで、階層毎に状態遷移行列が記憶されるが、その階層内のどのステート位置であっても状態遷移量にのみ依存して状態遷移行列が用いられる。このため、階層毎に１組ずつの状態遷移行列を記憶しておけばよく、各階層でそれぞれのジャンプ位置に対してコードステート全てを記憶しておくよりも、記憶容量を低減させることができる。
【００６０】
さらには、状態遷移行列の列データを所定複数バイトの一変数として記憶することで、単に列データを記憶するよりも記憶容量を低減させることができる。
【００６１】
以上のように、本実施形態の構成および処理を用いることで、生成するコード数やコード長に影響されることなく略一定で且つ従来よりも少ない記憶容量で、所望のコードを生成することができる。さらに、コードステートの状態空間におけるどのステート位置に所望のコードステートが存在しても略一定の演算処理量でコードステートを設定してコードを発生することができる。
【００６２】
なお、前述の実施形態では、第１階層、第２階層共にジャンプ処理を行う場合について説明したが、ジャンプするステート間隔が広い、すなわち、ジャンプ処理により得られるステート位置が少ない第１階層については、ジャンプ位置のコードステートを記憶しておき、コードステート読み出してジャンプ処理を行ってもよい。
【００６３】
図６はコードステート演算時の状態移動を模式的に表した説明図である。
この構成では、図６に示すように、第１階層のジャンプ位置のコードステート（ＳＴｎ１１，ＳＴｎ１２，ＳＴｎ１３，・・・）が予め記憶されており、入力されたコード位相Ｋとステート間隔Ｎ１とから適当なコードステートを検出する。そして、第２階層以下の処理は前述の実施形態と同じ処理を行う。図６はコードステート演算時の状態遷移を模式的に表した説明図である。
このような構成とすることで、ジャンプ処理のすべてを状態遷移行列で演算する場合よりも、第１階層に対する記憶容量が若干増加するが、状態遷移行列を用いた演算を行わずに、読み出したコードステートをそのまま適用すればよいため、処理演算量を低減させることができる。これにより、必要とする装置仕様に応じて最適な記憶容量および処理演算量を設定することができる。
【図面の簡単な説明】
【００６４】
【図１】本発明のコード制御装置の概略構成を示すブロック図
【図２】コードステートの演算方法を示すフローチャート
【図３】コードステート演算時の状態遷移を模式的に表した説明図
【図４】コードステート演算時の状態遷移を模式的に表した説明図
【図５】ジャンプ処理およびステップ処理の演算処理量の状態遷移量依存性を示すグラフ
【図６】コードステート演算時の状態遷移を模式的に表した説明図
【符号の説明】
【００６５】
１−コードステート設定部
１１−ステート演算部
１２−状態遷移行列テーブル
１３−ステートテーブル
２−コード発生器
３−コードＮＣＯ
４−コード位相計算部
【図１】
2006242616.tif 000003
【図２】
2006242616.tif 000004
【図３】
2006242616.tif 000005
【図４】
2006242616.tif 000006
【図５】
2006242616.tif 000007
【図６】
2006242616.tif 000008