説明

コード制御装置

【課題】略一定で且つ少ない記憶容量で、さらにコードステートの状態領域におけるどの位置に所望のコードステートが存在しても略一定の演算処理量でコードステートを設定するコード制御装置を提供する。
【解決手段】コードステート設定部1のステート演算部11は、入力されたチップ単位のコード位相量Kに基づき所望のコードステートCsの状態空間上の位置を検出する。ステート演算部11は、この検出結果から所定間隔でコードステートをジャンプする演算を状態遷移行列テーブル12に記憶されている状態遷移行列TFを用いて行い、コードステートCsに近い特定コードステートを取得する。コードステート演算部11は、取得したコードステートから1状態ずつコードステートを遅延させる処理か、遅延方向と逆方向に1状態ずつコードステートを遷移させる処理の適当な方を選択してコードステートを遷移させて所望のコードステートCsを得る。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、測位信号をコード変調する疑似雑音コードに対する装置内の基準コードを生成するコード制御装置、特に、GPSのL2CMコードおよびL2CLコードのような長い循環コードを部分的に切り取って用いたコードに対する基準コードを生成するコード制御装置に関するものである。
【背景技術】
【0002】
GPSを含むGNSS測位信号を受信して測位等を行うGNSS受信機では、測位信号を受信するために疑似雑音コード生成装置(本発明のコード制御装置に相当。以下、「コード制御装置」と称す。)が設置されている。
【0003】
コード制御装置は、コード位相計算部、コードステート設定部、コードNCO、およびコード発生器を備える。コード位相計算部で算出されたコード位相のチップ単位未満の位相量はコードNCOに入力され、コードNCOはコードイネーブル信号を生成してコード発生器に出力する。コード位相計算部で算出されたコード位相のチップ単位の位相量はコードステート設定部に入力され、コードステート設定部は入力された位相量から所望のコードステートを設定してコード発生器に出力する。
【0004】
コード発生器は、コードステート設定部から入力されたコードステートを用い、コードNCOから入力されたコードイネーブル信号に準じてコードを出力する。
【0005】
このような構成において、コードステート設定部は、予め全てのコードステートを記憶しておき、入力された位相量から適用するコードステートを検出することによりコードステートを設定する。
【0006】
しかしながら、従来のコード制御装置では、予め全てのコードステートを記憶しておかなければならないが、コードステート数はコードの長さに依存することから、長いコードの場合に膨大な記憶容量を要する。例えば、37個のL2CMコードとL2CLコードとのコードステートを全て記憶するには、L2CMコードが10230チップ、L2CLコードが10230×75チップで形成されることから、109.74Mバイトが必要となる。
【0007】
この問題を解決する方法として、非特許文献1には、全てのコードステートの内、所定間隔の複数のコードステートのみを予め記憶しておき、位相量に基づき、記憶したコードステートのうちの所望のコードステートに近い適当なコードステートを選択する方法が開示されている。この方法では、適当なコードステートは、所望のコードステートよりも前側(遅延処理方向と反対側)のステートであり、この適当なコードステートに設定した後に、シフトレジスタの状態を1状態ずつコードステートが進む方向(遅延処理方向)に変化させることで所望のコードステートを演算する。例えば、1024ステート毎にコードステートを記憶する場合を前述のL2CMコード、L2CLコードに適用すると、109.7kバイトの記憶容量となり、代わりに1ステート単位で遅延させる処理の演算量が最大で1023回となる。
【非特許文献1】岡田,内田,尾上,白川,「次世代衛星航法システム受信機のための疑似雑音符号生成器の構成」,信学技報CAS2002-29,社団法人電子情報通信学会
【発明の開示】
【発明が解決しようとする課題】
【0008】
しかしながら、非特許文献1に記載のコード制御装置では、制御する位相量毎に応じて設定する複数のコードステートを各測位信号、すなわち、各測位衛星に対して記憶しなければならない。従って、対象とする測位衛星数が多くなると、その増加量に応じて記憶するコードステート量が増加して記憶容量が増加してしまう。
【0009】
また、設定したコードステートから目的とするコードステートまでは、遅延処理により1状態ずつ遷移させていくため、設定された2つのコードステート間で後側(遅延側)に近いコードステートほど遅延処理演算量が増加しCPUの負荷が大きくなる。これは設定するコードステート間隔が広がるほど問題となる。すなわち、1024ステートの間隔があれば最大で1023回の演算処理が必要になる。ここで、コードステート間隔が狭くなれば解消されるが、コードステート間隔を狭くすると、その分記憶するコードステート量が増加して記憶容量が増加してしまう。すなわち、記憶容量抑圧のためにコードステート間隔を広く取りたいが、広く取りすぎると演算負荷が増加してしまう。
【0010】
したがって、この発明の目的は、対象とするコード数によらず略一定で且つ従来よりも少ない記憶容量で、さらにコードステートの状態領域におけるどの位置に目的とするコードステートが存在しても略一定の演算処理量でコードステートを設定してコードを発生するコード制御装置を提供することにある。
【課題を解決するための手段】
【0011】
この発明は、コード位相におけるチップ単位未満の位相量に基づいてコードイネーブル信号を生成するコードNCOと、チップ単位の位相量に基づいてコードステートを設定するコードステート設定手段と、コードイネーブル信号に同期してコードステートに基づくコードを発生するコード発生器と、を備えたコード制御装置において、コードステート設定手段に、チップ単位の位相量に基づいて、コードステートを所定数の状態だけ先に遷移させるジャンプ処理とコードステートを1状態だけ前後に遷移させるステップ処理とを組み合わせて所望のコードステートを演算するステート演算手段を備えたことを特徴としている。
【0012】
この構成では、コードステート設定手段のステート演算手段は、チップ単位の位相量に基づいて、コードステートの状態領域における所望のコードステートに最も近いコードステートへジャンプ処理を行う。このジャンプ処理とは、位相量を算出する際に用いたイニシャルステートに対して、コードステートを所定数の状態だけ先に遷移させる演算処理である。次に、ステート演算手段は、この演算されたコードステートに対して、1状態ずつコードステートが前後に遷移するステップ処理を行って所望のコードステートを演算する。この際、コードステートをシフトレジスタの遅延方向に1状態遷移させるステップフォワード処理と、前記遅延方向と反対方向に1状態遷移させるステップバック処理とが設定されている。そして、ジャンプ処理により設定されるコードステートと所望のコードステートとの状態空間上の位置関係により、ステップフォワード処理かステップバック処理のいずれかが選択されて実行される。
【0013】
また、この発明のコード制御装置のコードステート設定手段はコードステートの遷移演算に用いる状態遷移行列を記憶する記憶手段を備え、ステート演算手段は、状態遷移行列を用いてジャンプ処理を行うことを特徴としている。
【0014】
この構成では、コードステートを所定数の状態だけ先に遷移させる演算処理に状態遷移行列を用いる。状態遷移行列はコードステートのビット数の行と列を備える行列であり、遷移させる状態数にのみ行列の各要素が依存する。すなわち、異なるコードステートに、同じ状態遷移行列を演算すれば、同じ数だけ状態が遷移する。このため、全てのコードにおけるジャンプ処理に対して1組の状態遷移行列を記憶しておけばよい。
【0015】
また、この発明のコード制御装置の記憶手段は、状態遷移行列の行データまたは列データを1変数として記憶することを特徴としている。
【0016】
この構成では、状態遷移行列の各コードステートにビット演算を行う列を「0」,「1」からなるビット列で記憶するのではなく、行単位または列単位のビット列を例えば16進数で表す変数のような1つの変数として記憶する。このような処理を行うことで、例えば、27ビットのビット列が4バイト変数に変換される。
【0017】
また、この発明のコード制御装置のステート演算手段は、全コードステートを階層的に分割し、上層階層から順に下層階層へ階層別ジャンプ処理を繰り返すことでジャンプ処理を構成することを特徴としている。
【0018】
この構成では、全コードステート領域を所定間隔で複数の部分領域に分割する(第1階層)。そして、分割された部分領域をより細かい間隔で複数の部分領域に分割する(第2階層)。さらに、このような分割処理を繰り返すことで、コードステート領域を階層化する。そして、ステート演算手段は、まず第1階層において前述のジャンプ処理を行い、次に第2階層において、第1階層とは異なる間隔のジャンプ処理を行う、さらに下の階層、すなわち第2階層を分割する第3階層、第3階層を分割する第4階層等が存在すれば、順次、第3階層でのジャンプ処理、第4階層でのジャンプ処理等を順次行っていく。
【0019】
この際、各階層でのジャンプ間隔は同じであるので、各層に対して状態遷移行列を記憶しておけば良く、各層でそれぞれジャンプ位置に対して個別にコードステートを記憶するよりも、記憶する情報量が少なくなる。
【0020】
また、この発明のコード制御装置のステート演算手段は、全コードステート領域を第1ステート間隔で分割した第1階層ステート領域毎にジャンプする第1階層ジャンプ処理を行った後に、第1階層ステート領域を第2ステート間隔で分割した第2階層ステート領域毎にジャンプする第2階層ジャンプ処理を行うことで、ジャンプ処理を構成することを特徴としている。
【0021】
この構成では、前述の階層構造の具体例として、3層に階層化された場合を示す。この場合、まず、第1階層で大まかなジャンプ処理を行い、第2階層で細かいジャンプ処理を行う。そして、これら2つのジャンプ処理により所望のコードステートに近づけた後にステップ処理を行って所望のコードステートを演算する。例えば、L2CMコードは10230ステートからなり、第1階層で4096ステートのジャンプ処理を行い、第2階層で64ステートのジャンプ処理を行う。このように、階層数を3つにすることで、ジャンプ処理に利用する状態遷移行列の記憶容量と、ステップ処理での演算量とのバランスが適当になる。
【0022】
また、この発明のコード制御装置のコードステート設定手段は、予め設定されたジャンプ位置のコードステートを記憶する記憶手段を備え、ステート演算手段は、ジャンプ位置のコードステートと状態遷移行列とを用いてジャンプ処理を行うことを特徴としている。
【0023】
この構成では、いずれかの階層にコードステートを用いたジャンプ処理を用いる。例えば、階層全体でのジャンプ数が少ない第1階層でコードステートを用いたジャンプ処理を行う。これにより、若干の記憶容量の増加があってもジャンプ処理演算数が減少するので演算処理での負荷が低減する。
【発明の効果】
【0024】
この発明によれば、所望のコードステートを演算するのに、まずジャンプ処理で所望のコードステートに最も近い予め設定されたコードステートに状態移動し、ステップフォワード処理またはステップバック処理で細かく状態移動することで、従来のようにジャンプとステップフォワードを用いた場合よりコードステートの全状態領域で最適な処理演算量を実現することができる。
【0025】
また、この発明によれば、状態遷移行列を記憶して用いることで、従来のようにジャンプ先のコードステートを記憶する場合よりも記憶容量を低減することができる。特に、コードが長くなりジャンプ処理の設定数が増加すれば、より一層、記憶容量の低減効果が大きくなる。
【0026】
また、この発明によれば、状態遷移行列の行または列を変数化することで、さらに記憶容量を低減することができる。
【0027】
また、この発明によれば、コードステートの演算処理を階層化することで、ジャンプ処理も階層化されてコードステート演算効率が向上する。ここで、ジャンプ処理に状態遷移行列を用いれば、各階層に対して1組の状態遷移行列を記憶しておけばよいので、従来のジャンプ先のコードステートを記憶する場合よりも記憶容量を低減することができる。
【0028】
また、この発明によれば、特に、L2C信号のLC2MコードやL2CLコードでは、3階層で処理することで、処理演算量と記憶容量とのバランスが良くなり、効率良くコードステートを演算することができる。
【0029】
また、この発明によれば、状態遷移行列を用いるジャンプ処理とコードステートを用いるジャンプ処理との併用する、すなわち、階層毎にこれらの処理を適当に振り分けることで、より効率良くコードステートを演算することができる。
【発明を実施するための最良の形態】
【0030】
本発明の実施形態に係るコード制御装置について図1〜図6を参照して説明する。
図1は本実施形態のコード制御装置の概略構成を示すブロック図である。
本実施形態のコード制御装置は、コードステート設定部1、コード発生器2、コードNCO3、コード位相計算部4を備える。
【0031】
コード位相計算部4は、図示しない前段から入力され、所定の復調処理が行われたL2C信号のコード(L2CMコード、L2CLコード)と、予め設定した初期コードとを相関処理して、コード位相を検出する。このコード位相は、コードを形成する最小単位であるチップ単位の位相量Kと、チップ単位未満の位相量Dkとからなり、チップ単位の位相量Kがコードステート設定部1に出力され、チップ単位未満の位相量Dkがスケール変換されてコードNCO3に出力される。
【0032】
コードステート設定部1は、ステート演算部11、状態遷移行列テーブル12、および、ステートテーブル13を備える。
状態遷移行列テーブル12には後述するジャンプ処理を行う際に用いる状態遷移行列TFが記憶されている。ここで、状態遷移行列TFは各列データをそれぞれ1つの複数バイトの変数として記憶している。L2C信号に用いるL2CMコードやL2CLコードは27ビットのシフトレジスタ演算により形成されるので、状態遷移行列は27×27の行列となる。したがって、列を4バイト(32ビット)の変数として記憶する。この例では、各列データを1変数として記憶したが、各行データを1変数として記憶してもよい。
ステートテーブル13には、測位衛星毎に設定されたイニシャルステートIsおよびエンドステートEsが予め記憶されている。これら測位衛星毎のイニシャルステートIsおよびエンドステートEsは公開されており、この公開されたデータが予め記憶されている。ステート演算部11は、状態遷移行列テーブル12から状態遷移行列TFを読み出し、ステートテーブル13からイニシャルステートIsおよびエンドステートEsを読み出して、チップ単位の位相量Kに基づいて後述する方法で、L2C信号を変調したコードに対応するコードステートCsを演算してコード発生器2に出力する。
【0033】
コードNCO3は、チップ単位未満の位相量Dkと別途入力されるクロック信号CLOCKとに基づいて、コードイネーブル信号Ceを生成して、コード発生器2に出力する。
【0034】
コード発生器2は、コードステート設定部1から入力されるコードステートCsと、コードNCO3から入力されるコードイネーブル信号Ceと、別途入力されるクロック信号CLOCKとに基づいて、L2CMコードやL2CLコードに対応する基準コードを生成して出力する。
【0035】
そして、このコード制御装置を含む図示しないGPS受信機は、このように生成された基準コードを用いて受信したL2C信号を解析して、L2C信号に重畳された情報を取得する。また、コード発生器2から出力された基準コードは、再度コード位相計算部4に入力され、コード位相が計算される。そして、このコード位相に基づきコードを調整し続けることで、コードの捕捉および追尾を実現する。
【0036】
次に、コードステート設定部1でのコードステートの演算方法について、図を用いて、より詳細に説明する。
図2はコードステートの演算方法を示すフローチャートである。また、図3、図4はコードステート演算時の状態遷移を模式的に表した説明図である。ここで、図3は最終階層(第3階層)でステップフォワード処理を行う場合を示し、図4は最終階層(第3階層)でステップバック処理を行う場合を示す。
【0037】
ステート演算部11は、コード位相計算部4からチップ単位の位相量Kを取得するとともに、ステートテーブル13に記憶されているイニシャルステートIsを読み出す(S1→S2)。この際、読み出されるイニシャルステートIsは、このコード制御装置がコードの捕捉、追尾を行おうとする測位衛星に設定されたコードに対応するものである。
【0038】
ここで、ステート演算部11は、チップ単位の位相量Kが「0」であることを検出する、すなわち、入力されたコードがイニシャルステートIsにより実現されるコードであると検出すると、コードステートCsをイニシャルステートIsに設定してコード発生器2に出力する(S3→S18)。
【0039】
ステート演算部11は、チップ単位の位相量Kが「0」でないと検出すると、第1階層ジャンプ量m1を演算する(S4)。第1階層とは、図3、図4に示すように、イニシャルステートIsからエンドステートEsまでの全ステート数Lからなる状態空間を所定ステート間隔N1で分割してM1個の部分領域を形成した状態の階層である。そして、第1階層ジャンプ量m1は、分割されたM1個の部分領域の境界となるコードステートのうちで、設定コードステートCsに近いコードステートにステートをジャンプさせるための演算値である。第1階層ジャンプ量m1は、整数化演算をINTとすると、
m1=INT(K/N1)
により与えられる。
【0040】
ステート演算部11は、演算された第1階層ジャンプ量m1が「0」であれば、前進ステップ数Sfを演算する(S5→S14)。この場合の前進ステップ数Sfは、Sf=Kにより与えられる。
【0041】
そして、ステップ演算部11は、算出された前進ステップ数Sfを用いて、コードステートを遅延させる方向(コード発生用シフトレジスタにおけるシフト方向)のステート遷移演算、すなわち、ステップフォワード処理を行い、所望のコードステートCsを設定する(S15→S18)。
【0042】
ステート演算部11は、演算された第1階層ジャンプ量m1が「0」でなければ、算出された第1階層ジャンプ量m1に対応する状態遷移行列TF1を状態遷移行列テーブル12から読み出す(S5→S6)。状態遷移行列テーブル12には、それぞれの第1階層ジャンプ量m1に対応する状態遷移行列TF1が記憶されている。具体的には、これら状態遷移行列TF1は、コードステートを遅延方向に1ステップ状態遷移させる演算を行う基本状態遷移行列TF0を、第1階層ジャンプ量m1個乗算してなる行列であり、各第1階層ジャンプ量m1に対して設定されている。
ステート演算部11は、読み出した状態遷移行列TF1を用いて、第1階層ジャンプ処理を行う(S7)。第1階層のジャンプ処理とは、状態遷移行列TF1とイニシャルステートIsとを乗算することで、第2階層の初期ステートIs1に対応するコードステートを算出する演算処理である。これを行列演算式で表すと、
Is1=TF1・Is
となる。
【0043】
このようなジャンプ処理は状態遷移量に演算処理量が依存しない。図5はジャンプ処理およびステップ処理の演算処理量の状態遷移量依存性を示すグラフである。このグラフは、27ビットのシフトレジスタ演算により設定されるL2C信号のコードに対する状態遷移演算を示したものである。図5に示すように、状態遷移行列を用いたジャンプ処理は一回当たりの演算処理量は多いものの、状態遷移量に依存せずに常時一定である。一方、ステップ処理は、1ステップに対する演算処理量が少ないものの、状態遷移量(状態遷移ステップ数)に依存して演算処理量が線形に増加していく。このため、図5のような条件ではステップ数が30を超えれば、状態遷移行列を用いたジャンプ処理の方が演算処理量を少なくすることができる。
【0044】
次に、ステート演算部11は、算出された第2階層の初期ステートIs1を基準に、第2階層ジャンプ量m2を演算する(S8)。第2階層とは、図3、図4に示すように、初期ステートIs1から始まるステート数N1からなる状態空間を所定ステート間隔N2で分割してM2個の部分領域を形成した状態の階層である。そして、第2階層ジャンプ量m2は、分割されたM2個の部分領域の境界となるコードステートのうちで、設定コードステートCsに近いコードステートにステートをジャンプさせるための演算値である。第2階層ジャンプ量m2は、整数化演算をINTとし、剰余演算をMODとすると、
M1=MOD(K/N1)として、
m2=INT(M1/N2) ( M1−m2・N2<N2/2 ) −(1)
または、
m2=INT(M1/N2)+1 ( M1−(m2−1)・N2>N2/2 )
−(2)
により与えられる。
【0045】
すなわち、所望のコードステートCsを状態空間上で挟む、2つの第2階層の境界のコードステートを比較して、所望のコードステートCsに近い側のコードステートにジャンプするような第2階層ジャンプ量m2が選択される。例えば、最も近い境界のコードステートが所望のコードステートCsよりも小さい図3(C)に示すような場合には、式(1)から第2階層ジャンプ量m2が演算される。一方、最も近い境界のコードステートが所望のコードステートCsよりも大きい図4(C)に示すような場合には、式(2)から第2階層ジャンプ量m2(TF2またはTF’2に相当)が演算される。
【0046】
ステージ演算部11は、第2階層ジャンプ量m2が「0」であれば、前進ステップ数Sfを演算する(S9→S14)。この場合の前進ステップ数Sfは、Sf=M1により与えられる。そして、ステップ演算部11は、算出された前進ステップ数Sfを用いて、コードステートを遅延させる方向(コード発生用シフトレジスタにおけるシフト方向)のステート遷移演算を行い、所望のコードステートCsを設定する(S15→S18)。
【0047】
ステート演算部11は、演算された第2階層ジャンプ量m2が「0」でなければ、算出された第2階層ジャンプ量m2に対応する状態遷移行列TF2(またはTF’2)を状態遷移行列テーブル12から読み出す(S9→S10)。状態遷移行列テーブル12には、それぞれの第2階層ジャンプ量m2に対応する状態遷移行列TF2(またはTF’2)が記憶されている。具体的には、これら状態遷移行列TF2(またはTF’2)は、コードステートを遅延方向に1ステップ状態遷移させる演算を行う基本状態遷移行列TF0を、第2階層ジャンプ量m2個乗算してなる行列であり、各第2階層ジャンプ量m2に対して設定されている。
ステート演算部11は、読み出した状態遷移行列TF2(またはTF’2)を用いて、第2階層ジャンプ処理を行う(S11)。第2階層のジャンプ処理とは、状態遷移行列TF2(またはTF’2)と第2階層の初期ステートIs1とを乗算することで、第3階層の初期ステートIs2に対応するコードステートを算出する演算処理である。これを行列演算式で表すと、
Is2=TF2・Is1 または、 Is2=TF’2・Is1
となる。
【0048】
次に、ステート演算部11は、算出された第3階層の初期ステートIs2を基準に、ステップフォワード処理かステップバック処理かのいずれかを選択する。具体的には、式(1)で算出された第2階層ジャンプ量m2により初期ステートIs2が得られた場合にはステップフォワード処理を選択し、式(2)で算出された第2階層ジャンプ量m2により初期ステートIs2が得られた場合にはステップバック処理を選択する(S13)。
【0049】
ステート演算部11は、ステップフォワード処理を選択すると、前進ステップ数Sfを演算する(S14)。この場合の前進ステップ数Sfは、Sf=M1−m2・N2により与えられる。そして、ステップ演算部11は、算出された前進ステップ数Sfを用いて、コードステートを遅延させる方向(コード発生用シフトレジスタにおけるシフト方向)のステート遷移演算を行い、所望のコードステートCsを設定する(S15→S18)。
【0050】
ステート演算部11は、ステップバック処理を選択すると、後退ステップ数Sbを演算する(S16)。この場合の後退ステップ数Sbは、Sb=M1−(m2−1)・N2により与えられる。そして、ステップ演算部11は、算出された後退ステップ数Sbを用いて、コードステートを遅延させる方向と逆の方向(コード発生用シフトレジスタにおけるシフトと反対方向)のステート遷移演算を行い、所望のコードステートCsを設定する(S15→S18)。
【0051】
以上の処理を、図3、図4を用いて具体的な例で説明する。
まず、図3の場合、ステート演算部11は、コード位相Kが入力されると、全ステート数LをイニシャルステートIsからエンドステートEsまでを順にステート間隔N1で分割してなる第1階層で、そのステート位置を検出する。そして、第1階層ジャンプ量m1を演算して、これに対応する状態遷移行列TF1を読み出す。ステート演算部11は、この状態遷移行列TF1とイニシャルステートIsからジャンプステート位置2*N1のコードステートIs1を演算し、このコードステートIs1を、第2階層の初期ステートに設定する。ステート演算部11は、第1階層の各部分領域をステート間隔N1よりも細かいステート間隔N2で分割してなる第2階層で、コード位相Kに対応するステート位置を検出する。そして、第2階層ジャンプ量m2を演算して、これに対応する状態遷移行列TF2を読み出す。ステート演算部11は、この状態遷移行列TF2と第2階層の初期ステートIs1からジャンプステート位置3*N2のコードステートIs2を演算し、このコードステートIs2を、第3階層の初期ステートに設定する。ステート演算部11は、設定した第3階層の初期ステートIs2と、算出した前進ステップ数Sfとを用いてステップフォワード処理を行って、所望のコードステートCsを設定する。
【0052】
一方、図4の場合、ステート演算部11は、コード位相Kが入力されると、第1階層で、このコード位相Kに対応するステート位置を検出する。そして、第1階層ジャンプ量m1を演算して、これに対応する状態遷移行列TF’1を読み出す。ステート演算部11は、この状態遷移行列TF’1とイニシャルステートIsからジャンプステート位置2*N1のコードステートIs1を演算し、このコードステートIs1を、第2階層の初期ステートに設定する。ステート演算部11は、第2階層で、コード位相Kに対応するステート位置を検出する。そして、第2階層ジャンプ量m2を演算して、これに対応する状態遷移行列TF2’を読み出す。
【0053】
ステート演算部11は、この状態遷移行列TF’1とイニシャルステートIsからジャンプステート位置2*N1のコードステートIs1を演算し、このコードステートIs1を、第2階層の初期ステートに設定する。ステート演算部11は、第2階層で、コード位相Kに対応するステート位置を検出する。そして、第2階層ジャンプ量m2を演算して、これに対応する状態遷移行列TF’2を読み出す。ステート演算部11は、この状態遷移行列TF’2と第2階層の初期ステートIs1からジャンプステート位置4*N2のコードステートIs2を演算し、このコードステートIs2を、第3階層の最終ステートに設定する。ステート演算部11は、設定した第3階層の最終ステートIs2と、算出した後退ステップ数Sbとを用いてステップバック処理を行って、所望のコードステートCsを設定する。
【0054】
ここで、図3、図4に示した階層処理を具体的にL2C信号に適用した場合の記憶容量および演算処理量について説明する。図3、図4に示した階層処理では、L2C信号の各コードのイニシャルステートから任意のコードステートを演算には最大の計算量は162 +162+5.5×N2/2の演算回数が必要である。また、第1階層のジャンプ処理では(M1−1)個の状態遷移行列TF1、第2階層のジャンプ処理では(M2−1)個の状態遷移行列TF2を予め計算して記憶しておく必要があり、必要とする記憶容量は108×(M1+M2−2)バイトである。
【0055】
例えば、N1=4096、N2=64とする。L2CMコードはコード長が10230チップ、つまり全状態空間のステート数が10230なので、M1が3、M2が64となる。この場合、必要記憶容量は7020バイトとなり、最大演算処理量は500となる。L2CLコードは、コード長が10230×75チップ、つまり全状態空間のステート数が10230×75なので、M1が188、M2が64なる。この場合、必要記憶容量は27000バイトとなり、最大演算処理量はL2CMコードと同じ500となる。CMコードとCLコードは同一の疑似雑音コードから切り出されたものなので、状態遷移行列は同じになる。また、測位衛星数に対応する37個のCMコードとCLコードを発生するにはそれぞれのイニシャルステートとエンドステートとを記録しておく必要がある。これらのことを考慮すると、N1=4096、N2=64の3階層構造でL2C信号のコードステートを演算する際に、必要記憶容量は約27KByteとなり、最大演算処理量は500となる。このように、本実施形態の構成および処理を用いることで、従来よりも記憶容量、最大演算処理量ともに低減される。
【0056】
以上のような処理を行うことで、状態遷移量に演算処理量が依存することなく所定のコードステートが得られるジャンプ処理と、状態遷移量により演算処理量が依存するものの1ステート毎にコードステートが得られるステップフォワード処理およびステップバック処理とを、適当に用いることで、従来のように全てのステートを記憶するよりも記憶容量を大幅に低減することができる。また、イニシャルステートからステップフォワード処理でコードステートを演算する方法よりも最大演算処理量を、大幅に低減することができる。
【0057】
さらには、ステップフォワード処理とステップバック処理とを所望とするコードステートの位置によって選択して用いることで、非特許文献1のようにジャンプ処理した後に所望のコードステートをステップ演算する場合と比較して、このステップ演算を行う階層での演算処理量を半減することができる。
【0058】
また、ジャンプ処理の状態遷移行列を用いることで、非特許文献1のようなジャンプ位置のコードステートを記憶しておいてジャンプ処理する場合よりも、ジャンプ処理のための記憶容量を低減することができる。これは、状態遷移行列が遷移させるステップ数のみに依存し、状態空間のコードステートの位置によって異ならないため、イニシャルステートと各階層でのジャンプ量に応じた状態遷移行列とだけを記憶しておけばよいからである。そして、この効果は、コードに対する状態空間が広くなる、すなわちコードが長くなるほど有効となり、L2C信号に利用されるL2CMコードやL2CLコードに有効に活用することができる。さらに、コードは測位衛星毎に設定されているが、本実施形態の構成を用いることで、各コードのイニシャルステートと全ての共通の状態遷移行列とのみを記憶しておけばよい。これにより、従来では、測衛星が増加すれば大幅に記憶容量が増加したが、前述の構成ではイニシャルステートとエンドステートが増加するだけで状態遷移行列を新たに記憶する必要がない。この結果、記憶容量の低減効果がより発揮される。
【0059】
また、コードステートの演算を階層化することで、階層毎に状態遷移行列が記憶されるが、その階層内のどのステート位置であっても状態遷移量にのみ依存して状態遷移行列が用いられる。このため、階層毎に1組ずつの状態遷移行列を記憶しておけばよく、各階層でそれぞれのジャンプ位置に対してコードステート全てを記憶しておくよりも、記憶容量を低減させることができる。
【0060】
さらには、状態遷移行列の列データを所定複数バイトの一変数として記憶することで、単に列データを記憶するよりも記憶容量を低減させることができる。
【0061】
以上のように、本実施形態の構成および処理を用いることで、生成するコード数やコード長に影響されることなく略一定で且つ従来よりも少ない記憶容量で、所望のコードを生成することができる。さらに、コードステートの状態空間におけるどのステート位置に所望のコードステートが存在しても略一定の演算処理量でコードステートを設定してコードを発生することができる。
【0062】
なお、前述の実施形態では、第1階層、第2階層共にジャンプ処理を行う場合について説明したが、ジャンプするステート間隔が広い、すなわち、ジャンプ処理により得られるステート位置が少ない第1階層については、ジャンプ位置のコードステートを記憶しておき、コードステート読み出してジャンプ処理を行ってもよい。
【0063】
図6はコードステート演算時の状態移動を模式的に表した説明図である。
この構成では、図6に示すように、第1階層のジャンプ位置のコードステート(STn11,STn12,STn13,・・・)が予め記憶されており、入力されたコード位相Kとステート間隔N1とから適当なコードステートを検出する。そして、第2階層以下の処理は前述の実施形態と同じ処理を行う。図6はコードステート演算時の状態遷移を模式的に表した説明図である。
このような構成とすることで、ジャンプ処理のすべてを状態遷移行列で演算する場合よりも、第1階層に対する記憶容量が若干増加するが、状態遷移行列を用いた演算を行わずに、読み出したコードステートをそのまま適用すればよいため、処理演算量を低減させることができる。これにより、必要とする装置仕様に応じて最適な記憶容量および処理演算量を設定することができる。
【図面の簡単な説明】
【0064】
【図1】本発明のコード制御装置の概略構成を示すブロック図
【図2】コードステートの演算方法を示すフローチャート
【図3】コードステート演算時の状態遷移を模式的に表した説明図
【図4】コードステート演算時の状態遷移を模式的に表した説明図
【図5】ジャンプ処理およびステップ処理の演算処理量の状態遷移量依存性を示すグラフ
【図6】コードステート演算時の状態遷移を模式的に表した説明図
【符号の説明】
【0065】
1−コードステート設定部
11−ステート演算部
12−状態遷移行列テーブル
13−ステートテーブル
2−コード発生器
3−コードNCO
4−コード位相計算部

【特許請求の範囲】
【請求項1】
コード位相におけるチップ単位未満の位相量に基づいてコードイネーブル信号を生成するコードNCOと、
前記コード位相におけるチップ単位の位相量に基づいてコードステートを設定するコードステート設定手段と、
前記コードイネーブル信号に同期して前記コードステートに基づくコードを発生するコード発生器と、を備えたコード制御装置において、
前記コードステート設定手段は、前記チップ単位の位相量に基づいて、コードステートを所定数の状態だけ先に遷移させるジャンプ処理と、コードステートを1状態だけ前後に遷移させるステップ処理とを組み合わせて所望のコードステートを演算するステート演算手段を備えたことを特徴とするコード制御装置。
【請求項2】
前記コードステート設定手段はコードステートの遷移演算に用いる状態遷移行列を記憶する記憶手段を備え、
前記ステート演算手段は、状態遷移行列を用いて前記ジャンプ処理を行う請求項1に記載のコード制御装置。
【請求項3】
前記記憶手段は、前記状態遷移行列の行データまたは列データを1変数として記憶する請求項2に記載のコード制御装置。
【請求項4】
前記ステート演算手段は、全コードステートを階層的に分割し、上層階層から順に下層階層へ階層別ジャンプ処理を繰り返すことで前記ジャンプ処理を構成する請求項1〜3のいずれかに記載のコード制御装置。
【請求項5】
前記ステート演算手段は、全コードステート領域を第1ステート間隔で分割した第1階層ステート領域毎にジャンプする第1階層ジャンプ処理を行った後に、前記第1階層ステート領域を第2ステート間隔で分割した第2階層ステート領域毎にジャンプする第2階層ジャンプ処理を行うことで、前記ジャンプ処理を構成する請求項4に記載のコード制御装置。
【請求項6】
前記コードステート設定手段は、予め設定されたジャンプ位置のコードステートを記憶する記憶手段を備え、
前記ステート演算手段は、前記ジャンプ位置のコードステートと前記状態遷移行列とを用いて前記ジャンプ処理を行う請求項2〜請求項5のいずれかに記載のコード制御装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公開番号】特開2006−242616(P2006−242616A)
【公開日】平成18年9月14日(2006.9.14)
【国際特許分類】
【出願番号】特願2005−55621(P2005−55621)
【出願日】平成17年3月1日(2005.3.1)
【出願人】(000166247)古野電気株式会社 (441)
【Fターム(参考)】