(57)【特許請求の範囲】
【請求項１】
初期メッセージに対する巡回冗長チェック値を計算し、前記初期メッセージと前記巡回冗長チェックとを組み合わせ、変換されたメッセージを生成し、変換されたメッセージをコード化（符合化）することによって生成されたシンボルのシーケンスをデコード（復号化）する方法であって、
前記デコードするステップは、ノードと分岐を含むトレリスを横切る複数の経路推定を生成することを含み、前記分岐は、前記ノード間の可能な遷移だけでなく前記シンボルのシーケンスに対する前記経路推定からの最も確率の高い経路推定の選択も示すシンボルのシーケンスをデコードする方法において、
前記ノードは、少なくとも前記コード化を実行した可能性が高いエンコーダのステートの集合と巡回冗長チェック値を計算した可能性が高い計算器のステートの集合との直積を表示しており、
第1エンコーダステートおよび第１計算器ステートに対応する第１ノードから第２エンコーダステートおよび第2計算器ステートに対応する第2ノードへの遷移は、
変換されたメッセージのビットの存在下で、
-  第1エンコーダステートにある前記エンコーダに変換されたメッセージにこのビットを印加する際に、前記エンコーダが、第2エンコーダステートに遷移した場合および
-  第１計算器ステートになっている前記計算器に変換されたメッセージのビットを印加する際に、前記計算器が、第2計算器ステートに遷移した場合に可能となることを特徴とするシンボルのシーケンスをデコードする方法。
【請求項２】
前記トレリスを横切る経路の選択は、ビタビアルゴリズムに基づく、請求項1に記載の方法。
【請求項３】
前記トレリスを横切る経路の選択は、SOVAアルゴリズムに基づく、請求項1に記載の方法。
【請求項４】
前記トレリスを横切る経路の選択は、BCJRアルゴリズムまたは簡略化されたBCJRアルゴリズムに基づく、請求項１に記載の方法。
【請求項５】
シンボルのシーケンスを生成する前記ステップは、前記変換されたメッセージをエンコードする前に前記変換されたメッセージに含まれていたスタッフィングビットの挿入を行っており、前記トレリスの分岐は、スタッフィングビットの存在下でしか使用できない条件遷移を表示する分岐を含み、前記第1ノードから前記第2ノードへの遷移は、
ビットスタッフィングの存在下で、
-  第1エンコーダステートにあるエンコーダにこのビットスタッフィングを印加する際に、エンコーダが、第2エンコーダステートに遷移した場合および
-  第１計算器ステートが第2計算器ステートに等しくなった場合に可能である請求項1〜４のいずれか１項に記載の方法。
【請求項６】
経路推定を構築する際に、スタッフィングビットの挿入が行われる条件が満たされた場合、スタッフィングビットが検出されたとみなす、前記請求項５に記載の方法。
【請求項７】
各経路推定には１つのステート変数が、関連しており、前記ステート変数は前記経路推定のすでに構築された経路推定に応じ経路推定を構築するよう前記ステート変数を更新し、前記スタッフィングビットの挿入が行われる条件が満たされるかどうかの判断をするよう前記ステート変数をモニターする請求項６記載の方法。
【請求項８】
前記初期メッセージは、1つまたはいくつかの冗長ビットを含み、このまたはこれらの冗長ビットに基づいて維持された経路推定の検証を含む、請求項１〜７のいずれか１項に記載の方法。
【請求項９】
前記シンボルのシーケンスは、例えば、衛星、特に低軌道衛星によって受信された、AIS信号から得られる、請求項１〜８のいずれか１項に記載の方法。
【請求項１０】
前記シンボルのシーケンスは、同時の、または時間的に重複したAISの複数の信号から得られたものである、請求項９に記載の方法。
【請求項１１】
コンピュータによってコンピュータプログラムを実行するときに、請求項1〜１０のいずれか１項に記載の方法を実施させる命令を含むコンピュータプログラム。
【請求項１２】
請求項１〜１０のいずれか１項に記載の方法を実施するよう構成されたデコーダ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シンボルのシーケンス、特にメッセージおよびメッセージから得られた巡回冗長チェックブロックを含むデータパケットをコード化（符号化）することによって得られたシンボルシーケンスをデコード（復号化）するための方法に関する。本発明はさらに、デコーダおよびデコード化方法を実施するためのコンピュータプログラムにも関する。
【背景技術】
【０００２】
図1は、従来の伝送連鎖図を示す。第1ステップ12では、巡回冗長チェック（CRC）のブロックを計算するため送信すべきメッセージ（オリジナルメッセージ）１０が、使用される。一般的に、冗長性を追加することにより、伝送誤りを検出するためにCRC技術が、使用される。（メッセージと冗長ブロックのバイナリシーケンスを連結することによって）オリジナルメッセージに冗長ブロックが、添付される。以下、冗長ブロックの添付によりまたは別の予備的変換によって得られたメッセージを「変換メッセージ」と称し、このメッセージとオリジナルメッセージとを区別する。本明細書に関連し、オリジナルメッセージを、情報メッセージまたはバイナリ形式で表示できる任意の別のメッセージとすることができる。
【０００３】
CRCブロックは、オリジナルメッセージのハッシュによって得られた所定長さのバイナリシーケンスである。所定長さのオリジナルメッセージで計算された長さnのＣＲＣブロックによって、nおよび、より長いすべてのバースト誤りの1-2-nの何分の1かを超えない長さを有する、バースト誤りを検出することが可能となる。CRCブロックは、多項式のモジュロ2除算をすることによって計算される。この目的のため、メッセージの多項式（以下M（x）と表示）が、オリジナルメッセージに関連付けされる。CRCブロックは、次数n+1の生成多項式(G(x)と表示)によりM（x）・xn＋１のM（x）の剰余R（x）に対応し、除算の商を無視することができる。剰余R(x)は、G（x）−1、例えばnの次数を超えることはできない。必要であれば、固定長のCRCブロックを作成するよう0値のビットを剰余R(x)に加える。ブロックCRCを計算するために、特に線形フィードバックシフトレジスタを使用できる。CRCブロックが添付されているオリジナルメッセージによって形成されたデータパケットを コードワードと称すことが時々ある。
【０００４】
オリジナルメッセージとCRCブロックとで構成されるデータパケットは、ステップ14でコード化（符号化）されたトレリス（trellis）である。このトレリスコード化は、例えば、畳み込みコード化、チャネルコード化からなっていてもよいし、連続位相変調の場合には、例えば、変調時に暗示的にすることができる。
【０００５】
コード化により得られたシンボルシーケンスは、次に伝送チャンネル18により伝送するため信号を変調（変調ステップ16）するのに使用される。
【０００６】
受信機側では、送信された信号は、コヒーレントな方法（すなわち、既知の搬送波位相を使用して）、または、非コヒーレントな方法で（すなわち、既知の搬送波位相を使用せずに）復調され（復調ステップ20）、デコードトレリスアルゴリズム、たとえばビタビアルゴリズム、またはSOVAアルゴリズム（ソフト出力ビタビアルゴリズム）、またはBCJRアルゴリズム（その発明者Bahl、Cocke、Jelinek,Raviv）または単純化されたBCJRアルゴリズムにより、デコードされる（デコード化ステップ22）。
【０００７】
伝送誤りを検出および/または訂正するために、受信機は、検証/訂正されたメッセージ、また訂正が不可能である場合には誤りメッセージをレリースする（ステップ２６）前にステップ24で送信されたメッセージのCRCを検証する。CRCを検証するための別の方法も知られている。これらの方法の一つとして、情報ビットの受信シーケンスでCRCを計算し、それと送信されるメッセージのCRCとを比較することからなる方法がある。より容易にハードウェアで実行することができる方法として、CRCに続くメッセージから成るバイナリシーケンスのCRCがゼロであり、次のように表すことができるというプロパティを使用する方法もある。
CRC（[data,CRC(data)]）＝０
ここで、CRC(.)は、CRCの計算結果を示し、[.,.]は、2つのバイナリシーケンスの連結を示す。したがって、この方法で送信されるメッセージのCRCは、（すなわち、情報ビットおよびデコードから得られた冗長ビットの集合で）計算する。結果が0である場合、メッセージが正常に送信されたと考える。誤りビットの位置の検出を可能にする別の方法も存在する。このタイプの方法は、特に次の論文、B.マクダニエル著、巡回冗長チェックの誤り訂正アルゴリズム、C / C + +ユーザージャーナル、2003年６頁に記載されている。この方法の発展により、いくつかの誤りビットの検出が可能となった（例えば、S. Babaie、A.K  Ｚadeh、S.H.Es-hagi,N.J.Nvimipour、「CRC法を用いたダブルビット誤り訂正」セマンティクスと知識とグリッドに関する国際会議、第5号、 254-257ページ、2009年およびC. Shi-yiおよびL.Yu-bai著、信頼宣言に基づく誤り訂正巡回冗長チェック、ITS通信議事録、第6号511〜514ページ、2006年を参照）。
【０００８】
図2は、冗長性も情報も示さないスタッフィングビットすなわちスタッフされたビットが変換されたメッセージ（ステップ13）内に挿入されるという点で図1と異なる、従来の伝送連鎖図を示す。これらのスタッフィングビットは、一般的には同じ値が連続するビットの数を制限し、補足的遷移（transition）を導入するために使用される。補足的な遷移は、特に、受信機のレベルで同期の問題を軽減するか、または特定の意味（たとえば、制御シーケンス）を有するバイナリシーケンスが発生することを防止するのに役立つ。HDLCプロトコル（ハイレベルデータリンク制御のための接頭略語）は、時間フレームの終了（HDLCの場合はバイナリシーケンス01111110に相当）のフラグの出現を避けるために、スタッフィングビットを使用する。 HDLCプロトコルに従って、時間フレームの端のフラグが、メッセージの中央に表示されないことを確実にするよう、値1が5つ連続するビット列の後ろに０ビットが挿入される。これについては、図3に示されている。スタッフィングビットは、当該プロトコルの仕様に応じて、値0および／または1を有することができる。HDLCまたはAIS（自動識別システムの接頭略語）の場合には、スタッフィングビットは、常に値0のビットである。なお、スタッフィングビットを挿入するという概念と所定の長さのバイナリシーケンスに到達するビットを挿入することからなるパディングの概念とを混同してはならないことにも留意すべきである。オリジナルメッセージを復元するために、デコードした後、スタッフィングビットは削除される（ステップ２３）が、CRCチェックの前は、CRCブロックは、おそらく変換メッセージに含まれる可能性があるスタッフィングビットを無視する。更に、CRCブロック自身が、チェックを防ぐことができるスタッフィングビットを含むことができる。
【０００９】
CRCブロックに基づいてメッセージをCRC検証したり、訂正するすべての公知の方法は、実施することができる前に、受信したメッセージからスタッフィングビットが、削除されると仮定されるので、このことは実用的な条件では重要性を低減している。
【発明の概要】
【発明が解決しようとする課題】
【００１０】
本発明の一つの目的は、適当なスタッフィングビットの存在下でも、CRCに基づいて誤りビットの訂正を可能にするデコード方法を提案することである。
【課題を解決するための手段】
【００１１】
本発明に係る方法は、シンボルのシーケンスのデコードに適用される。前記シーケンスは、オリジナルメッセージのための巡回冗長検査ブロックを計算し、オリジナルメッセージと巡回冗長チェックブロックを組み合わせ、転換されたメッセージを生成し、生成されたメッセージをコード化することによって生成される。デコード、はシンボルのシーケンスに対する、ノード間の可能な遷移だけでなく、経路推定（path hypothesis）からの最も確率の高い経路推定の選択も表示するノードおよび分岐を含むトレリス経路を横切る（across）複数の経路推定の生成を伴う。本発明に関連し、トレリスのノードは、少なくともコード化を行った可能性の高いエンコーダステートの集合とブロックCRCを計算した可能性が高い計算器ステートの集合との直積の要素を表示する。第１エンコーダステートおよび第１計算器ステートに対応する第１ノードから、第２エンコーダステートおよび第２計算器ステートに対応する第2ノードへの遷移は、
変換されたメッセージのビットの存在下で、
第1エンコーダステートにあるエンコーダに変換されたメッセージのこのビットを印加する際に、
-  エンコーダが、第2エンコーダステートに遷移する場合、および
-  第1計算器のステートになっている計算器に変換されたメッセージのこのビットを印加する際に、計算器が、第2計算器ステートに遷移する場合に可能である。
【００１２】
従って、そのノードが、異なるエンコーダステートだけでなく、CRCブロック計算器ステートも表す、「拡張」トレリスを、使用することを提案する。換言すれば、この「拡張」トレリスは、エンコーダおよびCRC計算器を備え、エンコーダ及びCRC計算器には、同一の入力が供給される。すなわち入力される同じバイナリシーケンスに応じステートを変更する有限ステートマシンである。
【００１３】
本発明の方法では、ビタビアルゴリズムあるいはSOVAアルゴリズムさえもが使用されているとき、維持されている経路推定は、エンコーダとCRC計算器のステートの最も確率の高いシーケンスを表す推定である。最も確率の高い経路推定は、通常シンボル&middot;シーケンスに対して最短距離（例えばハミング又はユークリッド距離）を示す推定である。 BCJRアルゴリズムを用いた場合、あるいは簡略化されたBCJRアルゴリズムさえも使用した場合、BCJR又は簡略BCJRアルゴリズムにより計算された確率のうち最も確率の高い受信されたビットが、推定として受け入れられる。
【００１４】
本発明に係る方法は、コード化の前に、オリジナルメッセージとCRCブロックを含むデータパケット（変換されたメッセージ）に、スタッフィングビットが挿入された場合に適合させることができる。この場合には、トレリスの特定の分岐は、スタッフィングビットが存在する場合にのみ行うことができる条件付き遷移を表示する。（第1エンコーダステートと第1CRC計算器ステートに対応する）第1ノードから（第2エンコーダステートと第2CRC計算器ステートに対応する）トレリスの第２ノードへの遷移は、
ビットスタッフィングの存在下で、
第1エンコーダステートにあるエンコーダにこのスタッフィングビットを印加する際に、
-  エンコーダが、第2エンコーダステートに遷移する場合、および
-  第1計算器ステートが第2計算器のステートに等しくなった場合にさらに可能である（条件付きの遷移の場合）。
【００１５】
この遷移は、（スタッフィングビットと同じ値の情報ビットまたはCRCの存在下でエンコーダが受けたであろうステート変化と同じ）ステート変化をコード化時にスタッフィングビットが生じさせたということを考慮したものであり、一方スタッフィングビットは、CRC計算器ステートに影響を及ぼさない。
【００１６】
好ましくは、スタッフィングビットの挿入が行われるための条件が満たされた場合、本方法が実行され、経路推定が構築されているとき、スタッフィングビットが検出されたとみなす。例えば、各経路推定では、その後、メッセージの送信前に、値1を有する5つの連続したビットの各シーケンスの直後に、１つのスタッフィングビットが挿入されていた場合、経路推定ごとに、値1を有する5つの連続したビットのシーケンスの直後に続くビットは、スタッフィングビットを示すと考えられる。
【００１７】
各経路推定にステート変数が関連することが好ましく、経路推定が構築されているときには、ステート関数を経路推定のすでに構築された部分の関数として更新する。その後、スタッフィングビットを挿入する条件が満たされているかどうかを判断するようにステート変数をモニターする。たとえば、このステート変数は、各経路推定に対して同じ値が連続するビットの数を表示できる。このスタッフィングビットの前に値1を有する5つのビットのシーケンスが先行することを条件に、ビット後方にスタッフィングビットを挿入する例では、トレリスにわたって経路推定が進行する際に、既存のビットに先行している値1のビットの数を表示する変数をモニターする。この変数の値が5に達した、直後の、次のビットは、ビットスタッフィングでなければならなく、対応する条件付き遷移が選択される。
【００１８】
オリジナルメッセージは、1つまたは複数の冗長ビット（例えばデコード時に使用されていないCRCブロック）を含む可能性があり、これに基づき、選択された経路推定の結果、得られたメッセージが誤りを含まないと判断できる。オリジナルメッセージがCRCを含む場合、これは変換されたメッセージを与えるために添付されたものと同じ生成多項式により計算されていてはならない。そうでない場合、後者は常にCRC([data，CRC(data)])を適用した結果として、常に0に等しくなる。
【００１９】
なお、本発明に係る方法は、AISメッセージを訂正するために使用できると理解できよう。例えば衛星、特に低軌道衛星によって受信されたAIS信号からシンボルのシーケンスが得られる。 このAIS信号は、他のAIS信号と同じ時間に（すなわち、同時にまたは時間が重なった状態で）と受信される。この場合、本発明に係る方法は、AIS信号に対しては、競合防止および復調方式、例えばSIC方式（逐次干渉除去）又は決定論的または適応ビーム形成方法と組み合わせることが好ましい。米国特許出願第2008/0304597号には、競合したAIS信号から複数の候補AISメッセージを生成するための方法が、記載されている。これらの候補メッセージは、本発明に係る方法においてシンボルシーケンスとして使用することができる。この方法は、衛星搭載または地上の受信機のレベルで使用できることに注目されたい。
【００２０】
本発明の態様は、コンピュータプログラムがコンピュータにより実行されるときに上述の方法を実行させる命令を含むコンピュータプログラムに関する。このコンピュータプログラムは、プログラムが記憶されているデータ記憶媒体（例えば、ハードディスク、フラッシュメモリ、USBキー、CD、DVD、RAMなど）を含むコンピュータプログラム製品の一部を構成することができる。
【００２１】
本発明の別の様相は、例えば本発明の方法を実施するための適当なコンピュータプログラムを有するよう構成されたデコーダにも関する。
添付の図面を参照すれば、本発明の他の特徴及び利点は、例示のために、以下に示すいくつかの好ましい実施例の詳細な説明から明らかになろう。
【図面の簡単な説明】
【００２２】
【図１】メッセージの従来の伝送連鎖図の概略図である。
【図２】スタッフィングビットの挿入/抑制をする従来の伝送連鎖図の概略図である。
【図３】スタッフィングビットの挿入図である。
【図４】本発明による方法を実施するためのデコーダの簡略図である。
【図５】拡張トレリスの構造の図である。
【図６】CRCトレリスとコード化（符号化）トレリスを示す。
【図７】CRCと図6のコード化トレリスに関連する拡張トレリス全体で経路推定構築の図である。
【図８】スタッフィングビットの受信に関連する遷移（条件付き遷移）を有する拡張トレリスの構造の図である。
【図９】AIS伝送連鎖図の受信側の概略図である。
【図１０】最適なGMSKの受信機のための本発明に係る方法を用いて受信機のための信号対雑音比の関数としてシミュレートされたパケット誤り率（PER）のグラフである。
【図１１】最適なGMSKの受信機のための本発明に係る方法を用いて受信機のための信号対雑音比の関数としてシミュレートされたビット誤り率（BER）のグラフである。
【発明を実施するための最良の形態】
【００２３】
図4は、本発明による方法を実施するためのデコーダ３０の簡略図を示す。このデコーダ３０は、（スタッフィングビットの抑制をしない変形例）の図1に示される従来の伝送連鎖図におけるデコード化ステージ２２およびCRC検証ステージ２４または（スタッフィングビットを抑制する変形例）のデコード化ステージ２２、スタッフィングビットのための抑制ステージ２３およびCRC検証ステージ２４を置き換えるようになっている。
【００２４】
（伝送プロトコルでスタッフィングビットの挿入が予測されていない場合にしか実施できない）スタッフィングビットの抑制をしない変形例についてまず検討する．
【００２５】
上記のように、本方法は、異なるエンコーダのステートを表示するだけでなく、CRCブロックの計算器のステートも示す「拡張」トレリスを使用する。例えば、ビタビアルゴリズムに関連し、エンコーダのステートと遷移を示すトレリスを使用することは、周知である。これと対照的に、本発明者は、CRC計算器に関連したトレリス（簡単に"CRCトレリス"と称す）がシンボルのシーケンスのデコードに関連し、かつ関連する伝送誤りを訂正するためにこれまで使用されていたことを知らなかった。したがって、"CRCトレリス"の意味を説明しなければならない。
【００２６】
CRCブロックは、線形フィードバックシフト生成多項式に関連しているレジスタを用いて繰り返し計算することができる。レジスタは、（通常は[00 .. 0]または[11 ... 1]）で初期化されるが、プロトコルによっては、他の任意のレジスタの初期ステートを、指定することもできる。レジスタには、オリジナルメッセージが、ビットごとに適用され、その後にはレジスタが含むのと同じ数の多くのゼロなどが続く。このようにして得られた最終ステートは、オリジナルメッセージに添付されているCRCブロックに対応する。CRCトレリスのステート（ノード）を表示するようCRC計算器の中間ステート（CRC生成多項式に関連した線形フィードバックシフトレジスタ）をイメージできる。これらのステートは、それが第１ステートにあるときに計算器に新しいビットを入力することにより得られる第2計算器ステートへ第１CRC計算器ステートが遷移することによるリンク（分岐）によって相互接続されている。
【００２７】
図5は、コード化トレリス３２およびCRCトレリス３４から拡張されたトレリス３６の構造を示す図である。 CRCトレリス３４は、CRC計算部が、4つの異なるステート、番号0、1、2、3となることができる場合に相当する。各ステートからの矢印は、CRCトレリスの枝に対応しており、印加された入力ビットが0または1であるかどうかに応じて、CRCの計算器の、次のステートを示す。コード化トレリス３２は、2つのステートを有する。
【００２８】
「拡張」トレリスは、エンコーダとCRC計算器とを含み、かつ、エンコーダとCRCの計算器に、同じ入力が供給され、入力される同じバイナリシーケンスによりステートを変える、有限ステートマシンのトレリスに対応する。従って、拡張トレリスノードの集合は、CRCトレリスのノードの集合｛0、1、2、3｝と、コード化トレリスのノードの集合｛A、B｝との直積｛（０、A）、（0、B）、（1、A）、...、（3,B）｝に対応する。第1計算器ステートα∈｛0, 1, 2,3｝および第1コード化ステートX∈｛A, B｝に対応する第1ノード（α；X）から第２計算器ステートβ∈｛0, 1, 2, 3｝および第２コード化ステートY∈｛A, B｝に対応する第２ノード（β；Y）への遷移は、CRCトレリスおよびコード化トレリスのそれぞれの遷移α→βおよびX→Yが同じ入力ビット（0または1）によって生じている場合に可能である。例えば、送信されたビットが0（または1）であるとき、コード化トレリスステートY(またはZ)は、ステートXとなり、送信されたビットが０（または１）であるとき、CRCトレリスステートβ(またはγ)は、ステートαとなり、送信されたビットが０（または１）であるとき、ステート（β；Y）(またはγ;Ｚ)は、ステート（α；X）となる。図5には、遷移を表す矢印ごとに遷移を生じるビットが記載されている。
【００２９】
拡張トレリスのステートの数は、コード化トレリスのノードの数とCRCトレリスのノードの数の積に達する。特にCRCトレリスは、非常に大きい数のノードを示すことができる。例えば264個の可能なステートを有するCRCトレリスに対応して６４ビットを有するCRCブロックが存在する。
【００３０】
ビタビアルゴリズムに基づく本発明の方法の実施形態の発展を説明するために、トレリスを横切る経路推定の構成を図示で説明できるよう、できるだけ短いCRC（1ビット）を選択した（図7参照）。図6には実施例で選択されたCRC符号およびトレリスが示されている。
【００３１】
オリジナルメッセージがバイナリシーケンス[0 1 1 0]と表示されると仮定する。このオリジナルメッセージのために計算されたCRCブロックは、[1]である。このCRCブロックは、オリジナルメッセージ内の1の数が偶数であるかどうかを示すパリティビットに対応する。オリジナルメッセージとCRCブロックとの連結によって得られたデータ&middot;パケット（変換メッセージ）は、[0 1 1 0 1]である。
【００３２】
図6のコード化トレリスを適用することにより、[0 1 1 0 1]をコード化（符号化）すると、シンボルシーケンス[00 01 11 10 01]が得られる。訂正が行われたことを示すために、第３のシンボルのレベルで1ビットの誤りが、追加される。デコーダの入力におけるシンボルシーケンスは、[00 01 01 10 01]であると推定される。
【００３３】
図7は、ビタビアルゴリズムに従った拡張トレリスを横切る経路推定の構築を示す。デコード時にはCRC計算器とエンコーダ（符号化器）の初期ステートが知られている。したがって、初めに、ステート（１；A）で始まらない経路推定を除外できる。別の例として、初期ステート（図7の表示に使用される解決案）とは異なるステートで始まる経路推定に無限距離の性質があると考える。これによってトレリスを横切って進行する過程でこれら経路推定を除外することを保証できる。図7は、この遷移が対応するシンボルを遷移ごとに表示する。シンボルの表示の次に観察シンボルと遷移が対応するシンボル間の距離（ハミング）が続く。経路推定がトレリスの同じノードに到着するたびに、最も短い累積距離を示す経路推定だけが、残る。他の経路推定は除外される。図7では除外された経路推定は、取消線で表示され、当該ノード上の残った経路推定の累積距離に注目する。次に時間（instant）kにおいて、ステート（α、X）における、累積距離は、Γ(k、α;X)と表示されている。
【００３４】
最終的なステートに到達すると、最短距離を有する経路推定が選択される。この例の場合、ノード（0；B）およびノード（1；0）に到達する経路推定は、同じ最短距離１を有していることに留意すべきである。このことから、CRCの計算器の最終的なステートは、0でなければならないので、プロパティのCRC（[data、CRC（data）]）が使用される。その結果、（0；B）のステートに至る経路推定が維持される。従って、発見されるメッセージは、[0 1 1 0 1]となる。こうして、伝送誤りが訂正される。
【００３５】
スタッフィングビットを抑制しない変形例
上述の例の手順は、CRCブロックの計算の後でスタッフィングビットが挿入されていた場合、実施されないことがある。
【００３６】
スタッフィングビットの（可能な）存在を考慮するために、拡張トレリスには特殊な遷移が入力される。これらの遷移は、１つのスタッフィングビットを受信した後に続き、エンコーダステートが続いた場合に情報ビットまたはCRCビットと同じようにスタッフィングビットを考慮するように定義されるのに対し、受信されたビットがスタッフィングビットのときには、CRC計算器ステートは、変わらない。
【００３７】
以下、HDLCプロトコルで定義されているようなスタッフィングビットが挿入されていると仮定する。すなわち、値0の1つのスタッフィングビットが値1の5つの連続したビットの各シーケンスの直後に挿入されていると仮定する。この選択案は、単に実際の例に関連させて本発明を説明するためなされているに過ぎないことに留意されたい。当業者であれば、スタッフィングビットの挿入を含む他のシナリオに本発明の方法を適応させることには困難はなかろう。
【００３８】
図8には、CRCトレリスとおよびコード化トレリスから始まるスタッフィングビットの条件付き遷移に拡張されたトレリス構造が示されている。CRCおよびコード化トレリスは、図5の場合と同様である。拡張トレリスノードの集合は、CRCトレリスのノードの集合｛0、1、2、3｝とコード化トレリスのノードの集合｛A、B｝との直積｛（０;A、（0;B）、（1;A）、...、（3;B ）｝に対応する。次に、（データパケットのうちの）情報ビットまたはCRCビットに関連する遷移を、スタッフィングビットに関連する条件遷移から区別することができる。情報ビットまたはCRCビットに関連する遷移は、図5と同じである。CRCトレリスおよびコーディングトレリスのそれぞれの遷移α→βおよびX→Yが入力に印加された同じ情報ビットまたは入力に印加されたCRCビット（0または1）によって生成された場合、第2計算器ステートβ∈｛0, 1, 2,3｝および第２コード化ステート∈｛A, B｝に対応する第2ノード(β；Y)への、第１計算器ステートα∈｛0, 1, 2,3｝および第1コード化ステートX∈｛A, B｝に対応する情報ビットまたは第1ノード（α;X）のCRCビットに関連する遷移が可能である。α=βであり、トレリススタッフィングビットBSと同じ値を有する情報ビットまたはCRCビットに対しコード化トレリスの遷移X→Yが可能であれば、第2計算器ステートβ∈｛0, 1, 2,3｝および第2コード化ステートY∈｛A, B｝に対応する第2ノード(β；Y)への、第１計算器ステートα∈｛0, 1, 2, 3｝および第1コード化ステートX∈｛A, B｝に対応するスタッフィングビットに関連する遷移が可能である。HDLCプロトコルで指定されているようスタッフィングビットが挿入されている場合、すべてのスタッフィングビットは、0の値を有することになる。
【００３９】
送信されたビットが、値０（または１）の情報ビットまたはCRCビットであるとき、コーディングトレリスステートY（またはZ）は、ステートXとなり、送信されたビットが、値が0（または1）の情報ビットまたはCRCビットであるとき、CRCトレリスのステートβ（またはγ）は、ステートαとなり、送信されたビットが、値が0（または1）の情報ビットまたはCRCビットであるとき、ステート（β；Y）(またはγ；Z)は、ステート（α；X）となる。上記の遷移を下記のように表示できる。
0005764670.tif 000002
スタッフィングビットBS（値0）の存在下では、この場合の遷移は、下記のようになる。
0005764670.tif 000003
【００４０】
トレリスでは、ビットスタッフィングが受信された場合にしか、条件付き遷移が行われない。経路推定を構築する過程でスタッフィングビットが発生することをモニターするために、"時間"kにおいて各ステート（α；X）に関連するステート変数P（k（α；X））が導入される（この例では、α= 0、1、2または3であり、X = AまたはBである）。kは、残った経路推定によって検討されたステートに到達する前にトレリスを横切ったステート（ノード）の数を示す。P（k（α；X））は、時間kにおいて、ステート（α；X）に達する直前に受信した値1が連続したビットの数を示す。導入された、別のステート変数S（k、（α；X））は、残った経路推定を通って時間kにおいてステート（α；X）に達する前に、トレリスで合流したスタッフィングビットの総数を示す。最終的に維持された経路推定の数Sによって、受信された情報ビットおよびCRCビットの数を推定できる。
0005764670.tif 000004
【００４１】
上記の表は、生じうるすべての状況における変数PおよびSの変化を示す。受信されたビットの値が、0の情報ビットまたはCRCビットである場合、変数Pは達成ステートのためにゼロにリセットされ、Sは同じままである。受信されたビットの値が1の情報ビットまたはCRCビットである場合、変数Pは、達成ステートのため1つの単位だけ増加し、Sは再び同じままである。受信されたビットがスタッフィングビット（P = 5）である場合、Sは、一単位しか増加されないのに対し、Pは、達成ステートのためゼロにリセットされる。
【００４２】
拡張トレリス全体で経路推定を構築する過程で、変数Pは、次のビットが情報ビット（またはCRCビット）であるか、またはスタッフィングビットであるかを示す。この例では、ビットがスタッフィングビットとして検出されるための必要十分条件は、値１の５の情報ビットまたはCRCビットの中断されないシーケンスがスタッフィングビットに先行するということである。経路推定のノードにおいて、Ｐの値が５に達したならば、次の遷移はスタフィングビットに関連した遷移であらねばならない。情報ビットあるいはＣＲＣビットに関連した遷移は、そのとき不可能である。変数Pが経路推定のノードで５未満の場合、次の遷移は、情報ビット又はＣＲビットに関連した遷移となるはずである。スタッフィングビットに関連する遷移が、このステートから開始することは、不可能である。実際には"無限"距離を付与することによって遷移が不可能であることを表示できる。ビタビアルゴリズムでは、無限遠の遷移によって拡張されており、経路推定は、残ることはできず、除外される。
【００４３】
最も確率が高い経路推定を選択するには、最終的なCRCの計算器ステートが0に等しく
0005764670.tif 000005
ここで、Sminとし、Smaxは、スタッフィングビットの最小数および最大数をそれぞれ示し、NminおよびNmaxは、情報ビットおよびCRCビットの最小数との最大数をそれぞれ示す。これらの数値を本願に関連して定義する。例えば、AISに対し、Smin=0とし、Smax=4
0005764670.tif 000006
【００４４】
コンピュータプログラムの例
前述の実施例に係る方法を実施するために使用されるコンピュータプログラムのソースコードを、以下に簡単に記載する。詳細な説明の末尾に参照するコンピュータプログラムエキスパートを付属書として添付する。
【００４５】
プログラムの最初のエキスパートは、変数の初期化に関連する。プログラムのコンテキストでは、拡張トレリスの初期ステートを（A;α）と示す。A（=CRC計算器の初期ステート）を通信プロトコルに従って初期化する。CRC-16を使用する、AISの場合、216−１に初期化する。αが未知である場合α（=初期のエンコーダのステート）のすべての可能な値に対し距離Γ(0,(A;α))をゼロに設定する。αが既知である場合、Γ(0,(A;α)) =0となる。ステート変数R(k, (θCRC ; θTC))は、ノード（θCRC、θTC））で残った経路推定の時間kにおける最終遷移に関連するビット（0、1、又はBS）に対応する。
【００４６】
プログラムの第2エキスパートでは、受信されたシンボルごとに遷移変数を更新する。
【００４７】
xkは、時間kで受信されたシンボルを示し、NSは、可能なシンボルの数を示し、Ssは、（可能なシンボルNS）のs番目のシンボルを示す。Distance(xk, Ss)は、時間kに受信されたシンボルとシンボルSsとの間の距離である。θCRCとθTCは、CRCブロック計算器およびエンコーダのそれぞれのステートである。 NCRCは、CRCトレリスの可能なステートの数を示し、NTCは、コード化トレリスの可能なステートの数を示す。 NextS（θTC、t）は、エンコーダがステートθTCで発見され、ビットt（tの値は、0、1、またはBSをとることができる）が受信されたときのシンボルの数を意味する。遷移変数Γtrans((θCRC;θTC ),t)は、Γ(k-1(θCRC;θTC ))の合計としての時間kと、時間ｋで受信されたシンボルとステート（θCRC；θTC）からスタートし、ビットtに関連する遷移に対応するシンボルとの間の距離とで定義される。遷移変数Strans（θCRC；θTC）は、時間kにおいて、スタッフィングビットがステート（θCRC；θTC）の後に受信された場合、1だけインクリメントされたS(k-1, （θCRC；θTC）)として時間kで定義される。遷移変数Ptrans（θCRC;θTC, t）は、ステート（θCRC；θTC）の後に時間kで1のビット(t=1)が続くときに、1だけインクリメントされたP(k-1, （θCRC；θTC）)として時間kで定義される。受信されたビットが、ビットスタッフィング（t≠BS）でない場合には、遷移変数は、従来のビタビアルゴリズムのように更新される。逆のケースでは、条件付き遷移だけが可能な状態のままである（無限距離は、情報ビットまたはCRCビットに関連する遷移には、無限距離の性質があると考える）。
【００４８】
プログラム情報の第３部は、ステート変数の計算を扱う。関数PrevθCRC（θCRC、t）は、ビットtが受信された場合のステートθCRCの前のCRC計算器のステートを意味する。関数PrevθTC（θTC、t）は、ビットtが受信された場合、ステートθTCに従うことができるエンコーダのステートを示す。
【００４９】
第４エキスパートでは、拡張トレリスを横切るように最適経路推定を再トレースする。
0005764670.tif 000007
逆方向に従うことによって前のステートを繰り返し決定する。情報ビットまたはCRCビット（時間t = 0または1）に対応する、遷移に続くたびに、対応するビットが変数Un内にセーブされる。シーケンス（Un）は、デコードされたメッセージを表示するが、このメッセージからは、スタッフィングビットが除去されている。
【００５０】
シミュレーションの結果
本発明に係る方法を実現するデコーダの性能を説明するために、図9に示されるように、AIS伝送連鎖図の場合についてシミュレーションを実施した。オリジナルメッセージは、１６８ビットの固定長であった。CRC１６のブロックを加えた後、（１のビットが5つ連続したシーケンスの後でAISプロトコルに従って）スタッフィングビットを挿入した。このようにして得られたフレームは、NRZI（非ゼロ復帰反転）コード化され、パラメータBT（周期シンボルとガウスフィルタの生成関数から-3 dBの周波数バンドの積）＝３およびLT（ガウスフィルタの半分の長さ）= 4でGMSK（ガウス最小シフトキーイング）変調された。私たちは、AWGN（加法性白色ガウス雑音）伝送チャンネルの推定を前提とする。この例では、NRZIコード化およびGMSK変調は、コード化トレリスを示す。 AISシステムの技術的特性に関するITU勧告ITU-R M.1371によれば、ブロックCRCを計算するための生成多項式は、G（x）= X16 + X12 + X5 + 1である。
【００５１】
本発明に係わるデコーダとビタビアルゴリズムに基づくコヒーレント復調を使用する最適なGMSK変調に基づく受信機とを比較する。当該NRZIデコードにおいて、0のビットに変化が関連しており、変化がない場合、1ビットが検出される。
【００５２】
図10は、信号対ノイズ比（Es/N0）の関数として、本発明に係るデコーダを用いる受信機と最適なGMSK受信機のパケット誤り率（送信パケットの総数に対する少なくとも一つの誤りビットを含む破損したパケットの比率として定義されるPER）を示す。提案された受信機が最適なGMSK受信機に対して2.5以上dBでの利得を示すことに留意すべきである。
【００５３】
図11は、信号対ノイズ比（Es/N0）の関数として、本発明のデコーダを使用する受信機と最適なGMSK受信機のビット誤り率（特定の期間中に送信されるビットの総数に対する誤りビットの比として定義されるBER）を示す。図11の高い誤り率は、破損したメッセージの誤り率が高いことを示している。換言すれば、メッセージが少なくとも1つの誤りを含む時、メッセージは平均として多くの誤りを含む。このことは、メッセージが誤りを含むかどうかを判断するためにデータの整合性の検証方法を使用できるようにする。デコードされたメッセージが破損されているとして拒絶するのにCRCブロックを使用することはできないので、このような方法の使用は、破損したメッセージの検出に有用であることが判明した。しかしながら、CRCブロックは、当初からオリジナルメッセージに含めることができるが、このブロックは、誤り訂正のために、本発明に係る方法が実行された後は、メッセージに誤りがないことを検証するのには使用されない。しかしながら、このCRCは、誤りを訂正するために使用されたCRCと同じ生成多項式を使用することはできない。そうでない場合、CRC（[data、CRC(data）]）= 0の実行の結果、第２CRCは、常に０に等しくなる。
コンピュータプログラムからの引用
パート1（初期化）
0005764670.tif 000008
パート2（遷移変数の計算）
0005764670.tif 000009
パート3（ステート変数の計算）
0005764670.tif 000010
パート4（経路を読み出す）
0005764670.tif 000011
【図１】
0005764670.tif 000012
【図２】
0005764670.tif 000013
【図３】
0005764670.tif 000014
【図４】
0005764670.tif 000015
【図５】
0005764670.tif 000016
【図６】
0005764670.tif 000017
【図７】
0005764670.tif 000018
【図８】
0005764670.tif 000019
【図９】
0005764670.tif 000020
【図１０】
0005764670.tif 000021
【図１１】
0005764670.tif 000022