(57)【要約】      （修正有）【課題】パケットベースの通信システムでの送信関連誤りの検出のための方法を提供する。【解決手段】等しい長さのばらばらのデータ・セグメントのシーケンスを処理する方法であって、シーケンスは、特定のデータ・パケットを含み、データ・セグメントのうちの１つの一部をマスクするステップであって、特定のデータ・パケットの一部は、データ・セグメントのうちの１つの中にあり、マスクされる部分の外にあるステップと、特定のデータ・パケットの始めおよび／または終りを変更するステップと、マスクされたセグメントおよび変更された特定のデータ・パケットに基づいて特定のデータ・パケットの巡回冗長検査を計算するステップとを含む。また計算された巡回冗長検査を０と比較するステップを含み、巡回冗長検査を計算するステップはデータ・パケットと共に送信された別の巡回冗長検査に少なくとも部分的に基づいて検査シーケンス値を計算するステップを含む。【選択図】図１Ａ
2014180025.tif 000002
【特許請求の範囲】
【請求項１】
等しい長さのばらばらのデータ・セグメントのシーケンスを処理する方法であって、前記シーケンスは、特定のデータ・パケットを含み、
前記データ・セグメントのうちの１つの一部をマスクするステップであって、特定のデータ・パケットの一部は、前記データ・セグメントのうちの前記１つの中にあり、前記マスクされる部分の外にある、ステップと、
前記特定のデータ・パケットの始めおよび／または終りを変更するステップと、
前記マスクされたセグメントおよび前記変更された特定のデータ・パケットに基づいて前記特定のデータ・パケットの巡回冗長検査を計算するステップと
を含む方法。
【請求項２】
前記計算された巡回冗長検査を０と比較するステップを含み、
巡回冗長検査を計算する前記ステップは、前記データ・パケットと共に送信された別の巡回冗長検査に少なくとも部分的に基づいて検査シーケンス値を計算するステップを含む
請求項１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケットベースの通信システムでの送信関連誤りの検出に関する。
【背景技術】
【０００２】
このセクションは、読者が本発明のさまざまな態様のよりよい理解を得るのを助ける可能性があるさまざまな態様を紹介するものであり、このセクションを、従来技術であるものまたは従来技術ではないものに関する言明を含むと理解してはならない。
【０００３】
通信システムの１つの目標は、所期の受信側によって受信されるメッセージが、送信されたメッセージの変更されないコピーであることを保証することである。そのために、通信システムは、しばしば、受信されたメッセージが伝送中に変更されたどうかを受信側が判定することを可能にする誤り検出技法を使用する。チャネルによって誘導されるメッセージ誤りを検出する１つの技法が、巡回冗長検査（ＣＲＣ）符号に基づくものである。ＣＲＣ符号は、通常、ディジタル検査シンボルのシーケンスを作るために、たとえばデータ・メッセージを表すディジタル・データシンボルのシーケンスを変換する。ディジタル検査シンボルのシーケンスは、ディジタル・データシンボルのシーケンスと共に送信され、受信側は、ディジタル検査シンボルのシーケンスを使用して、ディジタル・データシンボルの受信されたシーケンスが最初に送信されたものと同一のシーケンスであるかどうかを評価する。
【０００４】
いくつかのシステムは、そのようなディジタル検査シンボルのシーケンスを生成し、フィードバック・シフト・レジスタを使用することによってディジタル検査シンボルの送信されたシーケンスから伝送誤りを検出する。たとえば、２進ＣＲＣ符号を、排他的論理和（ＸＯＲ）論理を介するフィードバックによって制御されるシフト・レジスタを用いて実施することができる。シフト・レジスタのメモリ要素の内容は、通常、固定された生成多項式によるディジタル・データシンボルのシーケンスの除算によって作られる剰余シーケンスに対応する。剰余シーケンスは、通常、データ・パケットの受信側への送信のためにディジタル・データシンボルのシーケンスの末尾に付加される。そのようなシステムでは、剰余シーケンスは、通常、データ・パケットの送信の前にビットごとの基礎で直列に計算される。
【発明の概要】
【課題を解決するための手段】
【０００５】
一実施形態は、ばらばらのオリジナル・セグメントの第１シーケンス内に配置されたデータ・パケットを処理する第１の方法である。第１シーケンスの各オリジナル・セグメントは、同一の長さを有する。第１の方法は、その中の１つまたは複数のシンボルを変更することによって第１シーケンスのオリジナル・セグメントのうちの最初のセグメントを変更することを含む。データ・パケットの始めは、オリジナル・セグメントのうちの最初のセグメント内に配置され、その中の最初のディジタル・データシンボルの後に位置決めされる。第１の方法は、その中の１つまたは複数のディジタル・データシンボルを変更することによって第１シーケンスのオリジナル・セグメントのうちの最後のセグメントを変更することをも含む。データ・パケットの終りは、オリジナル・セグメントのうちの最後のセグメント内に配置され、その中の最後のディジタル・データシンボルの前に配置される。第１の方法は、第１シーケンスから導出されたばらばらのセグメントの第２シーケンスに対して多項式除算を効果的に実行することによって剰余シーケンスを判定することをも含む。第２シーケンスの各セグメントは、第１シーケンスのオリジナル・セグメントのうちの１つに対応し、これから導出される。第２シーケンスのセグメントは、第１シーケンスのオリジナル・セグメントの長さを有する。第２シーケンスの導出されたセグメントのうちの最初のセグメントは、オリジナル・セグメントのうちの変更された最初のセグメントである。第２シーケンスの導出されたセグメントのうちの最後のセグメントは、オリジナル・セグメントのうちの変更された最後のセグメントである。
【０００６】
第１の方法のいくつかの実施形態では、データ・パケットの始めまたは終りを含まない各導出されたセグメントは、オリジナル・セグメントの対応する１つと等しいものとすることができる。
【０００７】
第１の方法の任意の実施形態では、変更するステップは、オリジナル・セグメントのうちでデータ・パケットの外の部分が多項式除算によって判定される剰余に所定の量だけ寄与するように、前記部分をマスクすることを含むことができる。
【０００８】
第１の方法の任意の実施形態では、オリジナル・セグメントのうちの最初のセグメントの変更は、データ・パケットの始めのシンボルを変更することを含むことができる。いくつかのそのような実施形態では、変更するステップは、オリジナル・セグメントのうちでデータ・パケットの外のマスクされた部分が多項式除算によって判定される剰余に所定の量だけ寄与するように、前記部分をマスクすることを含むことができる。
【０００９】
第１の方法の任意の実施形態では、オリジナル・セグメントのうちの最後のセグメントの変更は、データ・パケットの終りのシンボルを変更することができる。いくつかのそのような実施形態では、変更するステップは、データ・パケットの巡回冗長検査が零になる時にオリジナル・セグメントのうちでデータ・パケットの外のマスクされた部分が多項式除算によって判定される剰余に寄与しなくなるように、前記部分をマスクすることを含むことができる。
【００１０】
第１の方法の任意の実施形態では、第１の方法は、さらに、第３シーケンス内に配置されるデータ・パケットが多項式除算に基づく誤り制御符号の有効な符号語になるように、第１シーケンスからのシンボルのシーケンスのシンボルごとの減算を実行することによって第３シーケンスを作ることをさらに含むことができる。上記方法のいくつかのそのような実施形態では、シンボルのシーケンスを、第２シーケンスに対して多項式除算を実行することによって判定される剰余から見つけることができる。
【００１１】
第１の方法の任意の実施形態では、第１の方法は、データ・パケットの終りが第１シーケンスのセグメントのうちの特定の１つ内にあることに応答して、第１シーケンスのセグメントのうちの特定の１つにデータ・パケットの巡回冗長検査の評価された値を書き込むことをさらに含むことができる。いくつかのそのような実施形態では、変更は、第１シーケンスのセグメントの特定の１つ内のパケットの終りの位置を示す数を受け取ることをさらに含むことができる。書き込むことは、受け取られた数に基づいて評価された値を書き込むべき位置を判定することをさらに含むことができる。
【００１２】
第２の方法の一実施形態は、等しい長さのばらばらのデータ・セグメントのシーケンスを処理することを含む。シーケンスは、特定のデータ・パケットを含む。第２の方法は、データ・セグメントのうちの１つの一部をマスクすることを含む。特定のデータ・パケットの一部は、データ・セグメントのうちの１つの中にあり、マスクされる部分の外にある。第２の方法は、特定のデータ・パケットの始めおよび／または終りを変更することと、マスクされたセグメントおよび変更された特定のデータ・パケットに基づいて特定のデータ・パケットの巡回冗長検査を計算することとを含む。
【００１３】
第２の方法のいくつかの実施形態では、第２の方法は、計算された巡回冗長検査を０と比較することを含むことができる。
【００１４】
第２の方法の実施形態のいずれにおいても、巡回冗長検査の計算は、データ・パケットと共に送信された別の巡回冗長検査に少なくとも部分的に基づいて検査シーケンス値を計算することを含むことができる。
【００１５】
第２の方法の実施形態のいずれにおいても、第２の方法は、データ・セグメントのうちの特定の１つ内のパケットの終りを識別することを含むことができる。
【００１６】
第２の方法の実施形態のいずれにおいても、第２の方法は、データ・パケットの始めの１つまたは複数のシンボルを逆数にすることを含むことができる。
【００１７】
第２の方法の実施形態のいずれにおいても、第２の方法は、データ・パケットの終りの１つまたは複数のシンボルを逆数にすることを含むことができる。
【００１８】
もう１つの実施形態は、ばらばらのオリジナル・セグメントの第１シーケンス内に配置されたデータ・パケットを処理するシステムである。第１シーケンスの各オリジナル・セグメントは、同一の長さを有する。このシステムは、第１シーケンスのオリジナル・セグメントのうちの最初のセグメント内の１つまたは複数のシンボルを変更するように構成されたマスキング・ユニットを含み、データ・パケットの始めは、オリジナル・セグメントのうちの最初のセグメント内に配置され、その中の最初のシンボルの後にある。マスキング・ユニットは、第１シーケンスのオリジナル・セグメントのうちの最後のセグメント内の１つまたは複数のシンボルを変更するように構成され、データ・パケットの終りは、オリジナル・セグメントのうちの最後のセグメント内に配置され、その中の最後のシンボルの前にある。このシステムは、ばらばらの連続するセグメントの第２シーケンスに対して多項式除算を実行することによって剰余を判定するように構成された巡回冗長検査計算ユニットを含む。第２シーケンスの各セグメントは、オリジナル・セグメントのうちの１つに対応し、オリジナル・セグメントのうちの１つから導出される。第２シーケンスのセグメントは、オリジナル・セグメントの長さを有する。第２シーケンスの導出されたセグメントのうちの最初のセグメントは、オリジナル・セグメントのうちの変更された最初のセグメントである。第２シーケンスの導出されたセグメントのうちの最後のセグメントは、オリジナル・セグメントのうちの変更された最後のセグメントである。
【００１９】
このシステムのいくつかの実施形態では、マスキング・ユニットは、データ・パケットの巡回冗長検査が零になる時にオリジナル・セグメントのうちでデータ・パケットの外の部分が多項式除算によって判定される剰余に寄与しなくなるように、前記部分をマスクするように構成され得る。
【００２０】
このシステムの上記の実施形態のいずれにおいても、マスキング・ユニットは、データ・パケットの始めのシンボルを変更することによってオリジナル・セグメントのうちの最初のセグメントを変更し、データ・パケットの終りのシンボルを変更することによってオリジナル・セグメントのうちの最後のセグメントを変更するように構成され得る。
【００２１】
さまざまな実施形態の利益は、次の詳細な説明を読み、図面を参照する時に明白になるものとすることができる。
【図面の簡単な説明】
【００２２】
【図１Ａ】誤り、たとえば物理通信チャネルを介してディジタル・データ・パケットを送信することによって作られる誤りの検出のためにＣＲＣ符号を使用するディジタル・データ通信システムを概略的に示す図である。
【図１Ｂ】たとえば図１Ａに示されたデータ通信システム内で、ＣＲＣ符号語の最終シーケンスを作るためにディジタル・データシンボルのシーケンスを処理する方法を概略的に示す図である。
【図２】シーケンスの送信が誤りを引き起こしたかどうかを判定するためにたとえば図１Ｂに示されたディジタル・データシンボルのシーケンスを復号する方法、たとえば図１Ａに示された受信器内で使用される方法を示す流れ図である。
【図３】ＣＲＣ検査シーケンスを付加された、たとえば図１Ｂに示されたディジタル・データシンボルのシーケンス内のメッセージ部分を符号化する方法、たとえば図１Ａに示された送信器内で使用される方法を示す流れ図である。
【図４Ａ】たとえば図１Ｂおよび３の方法を使用して、符号器が送信される各データ・パケットにＣＲＣ検査シーケンスを付加する、たとえば図１Ａに示された送信器のための、符号器の一実施形態を示すブロック図である。
【図４Ｂ】たとえば図１Ｂおよび２の方法を使用して、復号器が受信されたデータ・パケットが誤りを有するかどうかをＣＲＣ検査シーケンスに基づいて評価する、たとえば図１Ａの受信器のための、復号器の一実施形態を示すブロック図である。
【図５】たとえば図４Ａに示された符号器内および／または図４Ｂに示された復号器内の、図１Ｂ、２、および３の方法の一特定の実施形態による例のデータ・パケットの処理を示す図である。
【図６】たとえば図４Ａ〜４Ｂに示された符号器および復号器のいくつかの特定の実施形態で使用できる、組み合わされたマスキング・ユニットおよび部分剰余付加ユニットの一実施形態を示すブロック図である。
【図７】図６に示された組み合わされたマスキング・ユニットおよび部分剰余付加ユニットの動作を示す状態図である。
【図８】図４Ａに示された符号器のいくつかの実施形態で使用できる逆方向計算ユニットの特定の実施形態を示すブロック図である。
【発明を実施するための形態】
【００２３】
さまざまな実施形態は、ディジタル・データ・パケットベースの通信システムで伝送誤りを検出するシステム内で使用される装置、システム、および方法に関する。
【００２４】
図１Ａに、ディジタル・データ・パケット内で情報を送信する通信システム１０の一例を示す。通信システム１０は、送信器１２、受信器１４、および送信器１２を受信器１４に接続する物理通信チャネル１６を含む。送信器１２は、入力データ・プロセッサ１８および符号器４００Ａを含む。データ・プロセッサ１８は、送信のためのデータを受け取り、それからデータ・ディジタル・パケットのストリームを作る。各ディジタル・データ・パケットは、たとえば、ヘッダ、メッセージ部分、および予約済み部分を有することができる。符号器４００Ａは、物理通信チャネル１６への送信の前に、データ・パケットのうちの１つまたは複数の予約済み部分にＣＲＣ検査シーケンスを挿入する。受信器１４は、復号器４００Ｂおよび出力データ・プロセッサ２０を含む。復号器４００Ｂは、伝送誤りについて、受信されたデータ・パケットを、すなわちその中のＣＲＣ検査シーケンスに基づいて検査し、誤りを有することがわかったデータ・パケットを出力データ・プロセッサ２０に示す。出力データ・プロセッサ２０は、復号器４００Ｂによって誤りがないことが見出されたデータ・パケットのメッセージ部分からデータを抽出することができる。受信器１４を、復号器４００Ｂによって伝送誤りを有することが見つけられたデータ・パケットを再送信するように送信器１２にシグナリングするように構成することができる。物理通信チャネル１６は、送信器１２と受信器１４との間のデータ通信をサポートする。物理通信チャネル１６は、１つまたは複数の従来の光ファイバ伝送回線、無線伝送媒体、および／または有線伝送媒体、あるいはその組合せを含むことができる。通信システム１０を、たとえばＣＲＣ検査シーケンスベースの方法に加えて、データ・パケットならびに／あるいは誤り検出および／または誤り訂正の他の方法のためのオーバーヘッドの追加のパッケージングを提供するように構成することができる。
【００２５】
図１Ｂに、データ伝送誤りを検出するのに２進ＣＲＣ符号を使用する通信システム内でディジタル・データシンボルのストリームを処理する方法を概略的に示し、たとえば、この方法のステップを、図１Ａの送信器１２および／または受信器１４内で実行することができる。
【００２６】
この方法は、合計（ａ＋ｋ＋ｍ＋ｂ）個のディジタル・データシンボルを含む第１シーケンス３２に作用することを含む。第１シーケンス３２は、等しい長さの連続するセグメントから形成される。第１シーケンス３２は、関心を持たれているデータ・パケットのメッセージ部分および予約済み部分を形成する長さ（ｋ＋ｍ）のシーケンス３４を含む。メッセージ部分は、多項式Ｕ（ｔ）によって忠実に表され、予約済み部分は、多項式Ｆ（ｔ）によって忠実に表される。第１シーケンス内では、メッセージ部分に、「ａ」個のデータシンボルのシーケンスが先行し、予約済み部分に、「ｂ」個のデータシンボルのシーケンスが続く。
【００２７】
この方法は、多項式Ｖ（ｔ）によって忠実に表される第２シーケンス３６を作るために第１シーケンス３２をマスクすることを含む。第１実施形態では、マスキングは、第１シーケンス３２のうちでデータ・パケットのメッセージ部分または予約済み部分内に配置されていないビットに０をセットすることによって第２シーケンス３６を作る。代替の第２実施形態では、マスキングは、第１実施形態のマスキング・ステップを実行することと、第１シーケンス３２内のメッセージ部分の最初の「ｍ」個のビットおよび予約済み部分の「ｍ」個のビットの１の補数を形成することとによって、第２シーケンス３６を作る。図１Ｂでは、この２つの実施形態が、データ・パケットの適切なビット位置の下に「＋Ｉ（ｔ）」の挿入を示すことによって、すなわち、第２実施形態の余分なマスキング動作を示すために、概略的に示されている。
【００２８】
この方法は、ＣＲＣ生成多項式Ｇ（ｔ）に対応するシーケンスによるマスキングされた第２シーケンス３６の除算から剰余シーケンスの値を計算することを含む。剰余は、多項式Ｒ（ｂ）ｖ（ｔ）によって忠実に表されるシーケンスである。受信器では、剰余シーケンスの計算された値が、受信されたデータ・パケット内のいくつかのタイプのデータ伝送誤りの不在または存在を示す。
【００２９】
符号化の実施形態では、この方法は、送信器から受信器に送信される第３シーケンス３８を作ることを含む。第３シーケンス３８は、データ・パケットの予約済み部分４０を、ＣＲＣ検査シーケンス（上で説明した第１実施形態の）またはそのようなＣＲＣ検査シーケンス（上で説明した第１実施形態の）の１の補数によって置換することによって形成される。本明細書では、ＣＲＣ検査シーケンスまたはその１の補数は、多項式「Ｆ（ｔ）＋Ｄ（ｔ）」によって表され、ここで、多項式Ｆ（ｔ）は、第１シーケンス３２内の予約済み部分内のオリジナル・シーケンスを忠実に表し、Ｄ（ｔ）は、３４に符号語にならせる調整シーケンスを表す。下では、図１Ｂに示されたステップおよびその中の表記を、より詳細に説明する。
【００３０】
本明細書では、データ・パケットは、ばらばらのメッセージ部分および予約済み部分を含み、前記部分の両方が、有限記号アルファベットＡ内のディジタルシンボルの有限シーケンスによって形成される。アルファベットＡを、有限ガロア体、たとえば、ｍｏｄ  ２整数または固定された事前に選択された長さの１および０のストリングとすることができる。メッセージ部分は、ｋ個のディジタルシンボルのストリームｕｋ−１ｕｋ−２…ｕ１ｕ０であり、このストリームは、次の形のｋ次多項式Ｕ（ｔ）として忠実に表される。
Ｕ（ｔ）＝ｕｋ−１ｔｋ−１＋ｕｋ−２ｔｋ−２＋…＋ｕ１ｔ＋ｕ０
多項式Ｕ（ｔ）では、「ｔ」のべきが、第１ストリーム内の対応するディジタルシンボルの時間的位置を決定する。予約済み部分を、たとえば、メッセージ部分の直後に配置することができる。符号化の前に、予約済み部分は、ｍ個のディジタルシンボルのストリームｆｍ−１ｆｍ−２…ｆ１ｆ０を保持し、このストリームは、次の形のｍ次多項式Ｆ（ｔ）によって忠実に表される。
Ｆ（ｔ）＝ｆｋ−１ｔｍ−１＋ｆｍ−２ｔｍ−２＋…＋ｆ１ｔ＋ｆ０
符号化は、データ・パケットの予約済み部分を、固定長「ｍ」のＣＲＣ検査シーケンス部分またはその１の補数で書き直す。ＣＲＣ検査シーケンスは、形ｃｍ−１ｃｍ−２…ｃ１ｃ０∈Ａｍを有し、これは、次の形のＣＲＣ検査シーケンス多項式によって忠実に表される。
Ｃ（ｔ）＝ｃｍ−１ｔｍ−１＋ｃｍ−２ｔｍ−２＋…＋ｃ１ｔ＋ｃ０
たとえば図１Ｂに関して説明した第１実施形態では、対応するメッセージ部分およびＣＲＣ検査シーケンス部分は、シンボル長ｎ＝ｋ＋ｍの符号語を形成し、これは、多項式Ｘ（ｔ）によって忠実に表され、Ｘ（ｔ）は、次を満足する。
Ｘ（ｔ）＝Ｕ（ｔ）・ｔｍ＋Ｃ（ｔ）
多項式Ｘ（ｔ）では、高次の「ｔ」項が、ディジタル・データ・パケット自体のメッセージ部分のディジタル・データシンボルに対応し、低次の「ｔ」項が、ディジタル・データ・パケットのＣＲＣ検査シーケンス部分のディジタルシンボルに対応する。
【００３１】
本明細書では、符号語は、「ｔ」内の事前に選択され固定されたＣＲＣ生成多項式で正確に割り切れる「ｔ」内の多項式を指す、すなわち、この多項式は、非ゼロ剰余を伴わずに割り切れる。事前に選択され固定されたＣＲＣ生成多項式Ｇ（ｔ）を、
Ｇ（ｔ）＝ｇｍｔｍ＋ｇｍ−１ｔｍ−１＋ｇｍ−２ｔｍ−２＋…＋ｇ１ｔ＋ｇ０
と書くことができ、ここで、ｇｍ−１ｇｍ−２…ｇ０∈Ａｍ、ｇ０≠０、かつｇｍ≠０である。たとえば、有用なＣＲＣ生成多項式Ｇ（ｔ）は、特殊なＣＲＣ生成多項式
Ｇ（ｔ）＝ｔ３２＋ｔ２６＋ｔ２３＋ｔ２２＋ｔ１６＋ｔ１２＋ｔ１１＋ｔ１０＋ｔ８＋ｔ７＋ｔ５＋ｔ４＋ｔ２＋ｔ＋１    （１）
でる。式（１）のこの特殊なＣＲＣ生成多項式は、ＣＲＣ−３２多項式としても知られ、複数の標準規格、たとえばＩＥＥＥ  ８０２．３イーサネット（登録商標）標準規格によって指定される。本明細書で説明される方法および装置のさまざまな実施形態を、ＣＲＣ生成多項式としてＣＲＣ−３２多項式または別の多項式を使用するように構成することができる。
【００３２】
そのような第１実施形態では、ＣＲＣ検査シーケンス多項式Ｃ（ｔ）は、Ｕ（ｔ）・ｔｍ＋Ｃ（ｔ）がＣＲＣ生成多項式Ｇ（ｔ）で割り切れるように、すなわち、Ｕ（ｔ）・ｔｍ＋Ｃ（ｔ）が符号語になるように選択される。具体的には、ＣＲＣ生成多項式Ｇ（ｔ）によるＵ（ｔ）・ｔｍの除算の剰余Ｒ（ｔ）は、
【数１】
2014180025.tif 000003
によって定義される。ここで、剰余多項式Ｒ（ｔ）は、ディジタルシンボルシーケンスｒｍ−１ｒｍ−２…ｒ１ｒ０に対応する。したがって、ＣＲＣ検査シーケンス多項式は、Ｃ（ｔ）＝−Ｒ（ｔ）を満足することができ、ここで、すべての係数のマイナスは、代数Ａでの係数の反数である。２進ＣＲＣ符号では、２進ＣＲＣ符号の代数Ａが２を法とする整数であり、２を法とする整数について１＋１＝０なので、−Ｒ（ｔ）＝Ｒ（ｔ）である。したがって、ＣＲＣ検査シーケンス多項式は、この代数についてＲ（ｔ）である。
【００３３】
ＣＲＣ符号のそのような実施態様を使用するデータ通信システムでは、送信器、たとえば図１Ａに示された送信器は、ディジタル・データシンボルのストリームを送信する。このストリーム内では、各送信されるディジタル・データ・パケットが、メッセージ部分およびＣＲＣ検査シーケンス部分を含み、この２つの部分は、一緒に符号語Ｘ（ｔ）に対応する。各ディジタル・データ・パケットは、別々のパケット・ヘッダおよび／またはパケット・コンテナを含むこともでき、このパケット・ヘッダおよび／またはパケット・コンテナは、データ・パケットのメッセージ部分およびＣＲＣ検査シーケンス部分の一部ではない。符号語Ｘ（ｔ）に対応するデータ・パケットの送信に応答して、受信器は、多項式Ｙ（ｔ）に対応するディジタル・データシンボルのシーケンスを受信し、ここで、Ｙ（ｔ）＝Ｘ（ｔ）＋Ｅ（ｔ）である。ここで、Ｅ（ｔ）は、受信されたデータ・パケット内の誤りの位置および値を忠実に表す多項式である。伝送誤りが発生したかどうかを判定するために、受信器、たとえば図１Ａに示された受信器１４は、ＣＲＣ生成多項式Ｇ（ｔ）によるＹ（ｔ）の多項式除算の剰余を評価する。伝送誤りがないと、ＣＲＣ生成多項式Ｇ（ｔ）によって除算されたＹ（ｔ）の剰余は、ゼロ係数を有する多項式である、すなわち、Ｙ（ｔ）は符号語である。１つまたは複数の伝送誤りが存在すると、この除算の剰余は、非ゼロである可能性が高い、すなわち、誤りは、Ｅ（ｔ）自体が符号語でない限り、検出可能である。たとえば、ｍ次の特殊な生成多項式について、ｍ未満の次数の多項式の循環シフトであるすべての誤りシーケンスは、符号語ではない多項式Ｅ（ｔ）を作る。したがって、受信されたデータ・パケット内で、そのような誤りは、対応する多項式Ｙ（ｔ）が符号語であるかどうかの判定を介して検出可能である。
【００３４】
第２実施形態、たとえば図１Ｂに関して説明した第２実施形態では、符号化は、すべて１のシーケンスを用いて、剰余Ｒ（ｔ）を保持する「ｍ」個のメモリ要素を初期化することと、ＣＲＣ生成多項式Ｇ（ｔ）による多項式Ｕ（ｔ）・ｔｍ＋Ｉ（ｔ）・ｔｋの多項式除算の剰余Ｒ（ｔ）を効果的に評価することとを含み、ここで、Ｉ（ｔ）＝ｔｍ−１＋ｔｍ−２＋…＋ｔ＋１である。したがって、多項式Ｒ（ｔ）は、
【数２】
2014180025.tif 000004
を満足する。これらの第２実施形態では、データ・パケットのメッセージ部分および予約済み部分の第３シーケンスの送信される部分は、Ｘ（ｔ）＝Ｕ（ｔ）・ｔｍ＋Ｃ（ｔ）を満足する符号語Ｘ（ｔ）によって忠実に表され、ここで、Ｃ（ｔ）＝Ｒ（ｔ）＋Ｉ（ｔ）＝Ｆ（ｔ）＋Ｄ（ｔ）である。本明細書では、ＣＲＣコーディングのこれらの第２実施形態について、データ・パケットは、ＣＲＣ生成多項式Ｇ（ｔ）による多項式の除算が「ｍ」次のすべて１の多項式を作る場合に符号語であり、ここで、データ・パケットの予約済み部分は、長さ「ｍ」を有する。したがって、受信器は、すべて１のシーケンスを用いて、特にＣＲＣ検査シーケンス用のメモリ要素を初期化し、その後、ＣＲＣ生成多項式Ｇ（ｔ）によるＹ（ｔ）に対応する受信されたシーケンスすなわちＸ（ｔ）＋Ｅ（ｔ）の多項式除算の剰余がすべて０のシーケンスを作るかどうかを判定して、データ・パケットが伝送誤りを有するかどうかを判断することができる。ＩＥＥＥ  ８０２．３標準規格の媒体アクセス制御（ＭＡＣ）層は、式（１）の標準ＣＲＣ−３２生成多項式Ｇ（ｔ）と共にこの代替手順を使用する。
【００３５】
図２および３に、０および１に対するモジュロ加算（ｍｏｄｕｌｏ  ａｄｄｉｔｉｏｎ）によって定義される２進代数上での巡回冗長符号（ＣＲＣ）に基づくデータ・パケットを処理する方法２００、３００を示す。符号化方法３００は、データ・パケットのメッセージ部分についてＣＲＣ検査シーケンスを評価することによって送信のために各データ・パケットを準備することと、たとえば図１Ａに示された符号器４００Ａ内で、メッセージ部分にＣＲＣ検査シーケンスまたはその１の補数を付加することとを含む。付加するステップは、ＣＲＣ符号語に対応するシーケンスを形成する。復号方法２００は、たとえば図１Ａに示された復号器４００Ｂ内で、データ・パケットがＣＲＣ符号語に対応するかどうかを判定することによって、受信されたデータ・パケットがＣＲＣ検出可能伝送誤りを有するかどうかを判定することを含む。「符号語」の定義は、図１Ｂの第１実施形態および第２実施形態に関して既に説明した。
【００３６】
ステップ２１０および３１０では、方法２００、３００は、セグメントごとの形で、その中にディジタル・データ・パケットを有する第１シーケンスのセグメントを受け取ることを含み、たとえば、受け取ることは、図１Ａに示された符号器４００Ａまたは復号器４００Ｂ内で実行することができる。第１シーケンスは、「ｑ」個のセグメントのシーケンスであり、各セグメントは、同一の長さ「ｓ」を有する。
【００３７】
各第１シーケンスは、すなわち図２〜３のこれらの方法２００、３００では、そのビットのシーケンスが多項式Ｕ（ｔ）に対応するデータ・パケットのメッセージ部分と、その「ｍ」個のビットのシーケンスが多項式Ｆ（ｔ）に対応するデータ・パケットの予約済み部分とを含む。予約済み部分は、データ・パケットのメッセージ部分に直接に続くことができる。メッセージ部分および予約済み部分は、通常、データ・パケットのメッセージ部分内、たとえばパケット・ヘッダの後に配置される。第１シーケンス内では、「ａ」個のビットが、Ｕ（ｔ）ｔｍ＋Ｆ（ｔ）に対応するシーケンスに先行し、「ｂ」個のビットが、Ｕ（ｔ）ｔｍ＋Ｆ（ｔ）に対応するシーケンスに続く。したがって、ｑ・ｓ＝ｎ＋ａ＋ｂであり、「ｑ」は、第１シーケンス内のセグメントの個数であり、「ｓ」は、セグメント内のビットの場合の数であり、「ｎ」は、Ｕ（ｔ）ｔｍ＋Ｆ（ｔ）に対応するシーケンス内のビットの個数である。
【００３８】
ここで、整数「ａ」、「ｂ」、および「ｎ」の値は、第１シーケンス内のデータ・パケットの異なる可能な位置およびデータ・パケットの異なる可能な長さに起因して、データ・パケットごとに異なる可能性がある。下で説明する例では、各セグメントの長さは、２つを超えない連続するデータ・パケットのメッセージ部分が同一セグメント内に配置されることを保証するのに十分に短い。いくつかの他の実施形態では、セグメントをより長くすることができ、その結果、１つのデータ・パケットのメッセージ部分の一部と、０個、１個、または複数の後続データ・パケットのメッセージ部分（１つまたは複数）と、別のデータ・パケットのメッセージ部分の一部とが、１つのセグメント内にあることができるようになる。
【００３９】
ステップ２２０および３２０では、方法２００、３００は、セグメントが受信される時に第１シーケンスの「ｑ」個のセグメントを順次マスクすることを含み、たとえば、マスキングを、図１Ａに示された符号器４００Ａまたは復号器４００Ｂ内で実行することができる。セグメントごとの形で、マスキングは、セグメントの第２シーケンスを作り、この第２シーケンスでは、
ｉ）Ｕ（ｔ）ｔｍ＋Ｆ（ｔ）に対応するシーケンスに先行する「ａ」個のビットが、０であり、
ｉｉ）Ｕ（ｔ）ｔｍ＋Ｆ（ｔ）に対応するシーケンスに続く「ｂ」個のビットが、０である。
いくつかの特定の実施形態、たとえば図１Ｂに関して説明された上で説明した第２実施形態では、マスキング・ステップ２２０および３３０は、
ｉ）Ｕ（ｔ）ｔｍ＋Ｆ（ｔ）に対応するシーケンスの最初の「ｍ」個のビットを逆数にすること、および／または
ｉｉ）Ｕ（ｔ）ｔｍ＋Ｆ（ｔ）に対応するシーケンスの最後の「ｍ」個のビットを逆数にすること
をも含む。これらの特定の実施形態は、データ・パケットのメッセージ部分および予約済み部分の連結の最初の「ｍ」個のビットおよび最後の「ｍ」個のビットのこのオプションの逆数化（すなわち、１の補数化）を実行する。そのような実施形態では、セグメントの第２シーケンスは、次の形の多項式Ｖ（ｔ）によって忠実に表される。
Ｖ（ｔ）＝０・ｔｑｓ−１＋…＋０・ｔｎ＋ｂ＋（Ｕ（ｔ）・ｔｍ＋Ｉ（ｔ）・ｔｋ＋Ｆ（ｔ）＋Ｉ（ｔ））・ｔｂ＋０・ｔｂ−１＋…＋０・ｔ＋０    （４）
【００４０】
ステップ２３０および３３０では、方法２００、３００は、ＣＲＣ生成多項式Ｇ（ｔ）によって多項式Ｖ（ｔ）を再帰的に除算することに対応するセグメントごとの形で、多項式Ｖ（ｔ）に対応する第２シーケンスを処理することを含む。ステップ２３０および３３０は、ＣＲＣ生成多項式Ｇ（ｔ）による多項式Ｖ（ｔ）の除算の剰余である多項式
【数３】
2014180025.tif 000005
に対応する剰余シーケンスを計算することを含む。したがって、処理ステップ２３０、３３０は、効果的に、ＣＲＣ生成多項式Ｇ（ｔ）によるデータ・パケットのメッセージ部分Ｕ（ｔ）の除算を実行するのではなく、ＣＲＣ生成多項式Ｇ（ｔ）によるＶ（ｔ）の除算を実行する。
【００４１】
ステップ２４０では、方法２００は、ステップ２３０で計算された剰余に基づいて、第１シーケンスのうちでデータ・パケットのメッセージ部分および予約済み部分に対応する部分がＣＲＣ符号語を形成するかどうかを判定する。第１シーケンスのこの部分が符号語であると判定される場合には、方法２００は、２５０で、データ・パケットに伝送誤りがないことをシグナリングすることを含む。第１シーケンスのこの部分が符号語ではないと判定される場合には、方法２００は、２６０で、データ・パケットが伝送誤りを有することをシグナリングすることを含む。
【００４２】
ステップ３４０では、方法３００は、データ・パケットのメッセージ部分および予約済み部分がＣＲＣ符号語に対応するシーケンスを形成するようにデータ・パケットの予約済み部分を調整することを含む。ステップ３４０は、検査シーケンス差多項式Ｄ（ｔ）に対応するシーケンスを判定することと、データ・パケットのメッセージ部分および予約済み部分の最終シーケンスを作成することとを含むことができる。最終シーケンスは、多項式Ｕ（ｔ）・ｔｍ＋Ｄ（ｔ）＋Ｆ（ｔ）によって忠実に表される。
【００４３】
上で説明した第１実施形態では、Ｖ（ｔ）の形から、
【数４】
2014180025.tif 000006
になる。計算された剰余多項式
【数５】
2014180025.tif 000007
のシーケンスが、少なくとも長さｍのすべて０のシーケンスである場合には、Ｆ（ｔ）＝Ｃ（ｔ）であり、ステップ３４０は、Ｄ（ｔ）＝０であると判定する。その代わりに、計算された剰余多項式
【数６】
2014180025.tif 000008
が、その長さがｍ以下の非ゼロ多項式である場合には、Ｃ（ｔ）＝Ｆ（ｔ）＋Ｄ（ｔ）であり、ここで、非ゼロ検査シーケンス差多項式Ｄ（ｔ）は、
【数７】
2014180025.tif 000009
を満足する。ステップ３４０は、計算された剰余多項式
【数８】
2014180025.tif 000010
の計算されたシーケンスから検査シーケンス差多項式Ｄ（ｔ）のシンボルシーケンスを入手するために、逆方向計算を介して式（６）を解くことを効果的に含むことができる。
【００４４】
ステップ３４０は、多項式Ｖ（ｔ）のシーケンス内の末尾の０の異なる個数「ｂ」について剰余
【数９】
2014180025.tif 000011
に関する別の式を再帰的に解くことによって、計算された剰余多項式
【数１０】
2014180025.tif 000012
から多項式
【数１１】
2014180025.tif 000013
を逆方向計算することを含むことができる。具体的には、剰余に関する式を、逆順の生成多項式から逆順の形で書き直すことができる。たとえば、
【数１２】
2014180025.tif 000014
を、式
【数１３】
2014180025.tif 000015
を解くことによって、
【数１４】
2014180025.tif 000016
を含む剰余から入手することができる。すなわち、第（ｉ−δ）剰余多項式
【数１５】
2014180025.tif 000017
の係数は、逆順固定多項式Ｇ（ｔ−１）・ｔｍすなわちＧ（ｔ−１）・ｔｍ＝ｇ０ｔｍ＋ｇ１ｔｍ−１＋…＋ｇｍ−１ｔ＋ｇｍによって第ｉ逆順剰余多項式
【数１６】
2014180025.tif 000018
を割ることから入手される剰余と等しい。この理由から、上で説明した再帰プロセスを、計算された剰余多項式
【数１７】
2014180025.tif 000019
から
【数１８】
2014180025.tif 000020
を入手するために剰余の逆順の形を用いて実行することもできる。たとえば、ある範囲内の「ｂ」の値の任意の範囲についてこの計算を実行する１つの方法を、下で図８に関連してより詳細に説明する。
【００４５】
上で説明した第２実施形態では、検査シーケンス差多項式Ｄ（ｔ）は、多項式Ｒ（ｔ）＋Ｉ（ｔ）と多項式Ｆ（ｔ）との間の差であり、多項式Ｆ（ｔ）は、第１シーケンス内のデータ・パケットの予約済み部分に対応した。多項式Ｒ（ｔ）＋Ｉ（ｔ）は、ＣＲＣ生成多項式Ｇ（ｔ）によるデータ・パケットのメッセージ部分の多項式Ｕ（ｔ）＋Ｉ（ｔ）・ｔ（ｋ−ｍ）の除算の剰余の１の補数に対応する。この実施形態では、多項式Ｒ（ｔ）のシーケンスを、第２実施形態の上の式（４）に示された多項式Ｖ（ｔ）の逆数を説明する式６〜８の変更された版に基づいて計算された剰余多項式
【数１９】
2014180025.tif 000021
のシーケンスからの逆方向計算によって見つけることもできる。当業者は、式４〜８の上の説明に基づいて前記変更された式を簡単に判定できるはずである。
【００４６】
ステップ３４０で、方法３００は、データ・パケットがオリジナル・メッセージ部分を有し、メッセージ部分および予約済み部分が多項式Ｕ（ｔ）・ｔｍ＋Ｄ（ｔ）＋Ｆ（ｔ）によって忠実に表されるＣＲＣ符号語を形成する、最終シーケンスを、宛先受信器に順次送信もする。
【００４７】
下で説明する実施形態では、１「語」は、通常は「１バイト」である。
【００４８】
図４Ａおよび４Ｂに、それぞれ符号器４００Ａおよび復号器４００Ｂを示す。符号器４００Ａは、たとえば、図３の符号化方法３００を実行することができ、復号器４００Ｂは、たとえば図２の復号方法２００を実行することができる。符号器４００Ａおよび復号器４００Ｂは、たとえばゲート、フリップフロップ、レジスタ、加算器、および／または乗算器を含む回路から形成される、たとえば従来のディジタル・ハードウェア・デバイスである。図４Ａ〜４Ｂに示された符号器４００Ａおよび復号器４００Ｂは、たとえば、図１Ａに示されたそれぞれの符号器４００Ａおよび復号器４００Ｂとすることができる。符号器４００Ａおよび／または復号器４００Ｂを、有線、無線、または光のパケットベースの通信用のトランシーバのネットワーク・インターフェース・カード（ＮＩＣ）またはｔｒａｎｓｐｏｒｔ  ｎｅｔｗｏｒｋ  ｅｌｅｍｅｎｔ（ＴＮＥ）、たとえばイーサネット（登録商標）ＮＩＣまたはＴＮＥ内に配置することができる。
【００４９】
図４Ａおよび４Ｂに示されているように、符号器４００Ａおよび復号器４００Ｂは、ディジタル・データ処理ユニットのセットを含む。ディジタル・データ処理ユニットのセットは、セグメント化ユニット４１０、マスキング・ユニット４２０、部分剰余付加ユニット４２５、セグメント除算ユニット４３０、４３５、剰余処理ユニット４４０、および１つまたは複数のディジタル・バッファ４６０、４６２、４６４、４６６を含む。符号器は、逆方向計算ユニット４７０および検査シーケンス調整ユニット４８０をも有する。復号器４００Ｂは、検査シーケンス検証ユニット４９０をも有する。ディジタル処理ユニットのうちのさまざまな１つは、実質的に時間的に順次のセグメントごとの形でデータシンボルの受け取られたシーケンスを処理し、各セグメントは同一の長さを有する。
【００５０】
セグメント化ユニット４１０は、ディジタル・データシンボルのストリームを受け取り、各連続する等しい長さのセグメントをマスキング・ユニット４２０に、各セグメントに関する情報をマスキング・ユニット４２０および部分剰余付加ユニット４２５に連続的に送る。セグメント化ユニット４１０は、入力４０１でストリームを受け取り、出力４１２で前記ストリームのセグメントを出力する。データ・パケットごとに、セグメント化ユニット４１０は、「ｑ」個の連続するセグメントのシーケンスを出力し、「ｑ」は、データ・パケットごとに異なる可能性がある。しかし、各セグメントは、Ｓｗバイト長すなわちｓビットであり、ここで、ｓ＝ｗＳであり、ｗは、１語内のビット数である。下の説明では、セグメントがバイト整列されると仮定する。これらの結果を、語整列されないセグメントを処理するように簡単に拡張することができる。
【００５１】
セグメントごとに、セグメント化ユニット４１０は、セグメントに対応する情報を出力ポート４１４に送る。この情報は、対応するセグメント内に配置されたすべてのデータ・パケットの始めおよび／またはデータ・パケットの終りを識別し、突き止める。セグメントがデータ・パケットの始めを有する場合に、セグメント化ユニット４１０は、値１のパケットの始め（ＳＯＰ）信号と、セグメント内のデータ・パケットの始めの位置を識別するパケットの始めインデックス（ＳＰＩ）とを出力する。セグメントがデータ・パケットの始めを有しない場合に、セグメント化ユニット４１０は、値０のＳＯＰ信号を出力する。セグメントがデータ・パケットの終りを有する場合に、セグメント化ユニット４１０は、値１のパケットの終り（ＥＯＰ）信号と、セグメント内のデータ・パケットの終りの位置を識別するパケットの終りインデックス（ＥＰＩ）とを出力する。セグメントがデータ・パケットの終りを有しない場合に、セグメント化ユニット４１０は、値０のＥＯＰ信号を出力する。セグメント化ユニット４１０は、データ・パケットのパケット・ヘッダ内のパケット長識別子（ＰＬＩ）を読み取ることによって、データ・パケットの始めおよび／またはデータ・パケットの終りを識別し、突き止めることができる。
【００５２】
下では、セグメントの連続する語が、数字（Ｓ−１）から０までによって送出の順序でインデクシングされ、より大きいインデックスは、より早く送出された語に対応する。ＳＰＩ信号およびＥＰＩ信号を、２進数によって各インデックスを表す２進信号の長さ「ｊ」のベクトル（すなわち、２ｊ−１＜Ｓ≦２ｊ）によって表すことができる。ＳＰＩの値は、たとえばデータ・パケットのメッセージ部分すなわち、多項式Ｕ（ｔ）に対応する部分の最初の語を指し、ＥＰＩの値は、たとえばデータ・パケットの予約済み部分すなわちＣＲＣ検査シーケンス部分の最後の語を指す。
【００５３】
マスキング・ユニット４２０は、セグメントが出力４１２を介してセグメント化ユニット４１０から受け取られる時に、セグメントごとの形でセグメントのビットをマスクする。第１シーケンスの各ｑ個のセグメントすなわちその中にデータ・パケット全体を有するセグメントから、マスキング・ユニット４２０は、対応するセグメントの第２シーケンスを作り、第２シーケンスは、既に説明した多項式Ｖ（ｔ）に対応する。そのような第２シーケンス内で、マスキング・ユニット４２０は、データ・パケットのメッセージ部分および予約済み部分の外の各ビットに０をセットする、すなわち、Ｕ（ｔ）ｔｍ＋Ｆ（ｔ）に対応するシーケンスの前の各ビットに０をセットし、Ｕ（ｔ）ｔｍ＋Ｆ（ｔ）に対応するシーケンスの後の各ビットに０をセットする。したがって、マスキング・ユニット４２０は、第１シーケンスの最初の「ａ」個のビットに「０」をセットし、各第１シーケンスの最後の「ｂ」個のビットに「０」をセットする。また、上で説明した第２実施形態では、マスキング・ユニット４２０は、メッセージ部分および予約済み部分の連結に対応するシーケンスすなわち多項式Ｕ（ｔ）ｔｍ＋Ｆ（ｔ）に対応するシーケンスの最初の「ｍ」個のビットおよび最後の「ｍ」個のビットを逆数にする（すなわち、１の補数にする）。
【００５４】
マスキング・ユニット４２０は、第２シーケンスの各セグメントを部分剰余付加ユニット４２５に順次出力する。部分剰余付加ユニット４２５は、第２シーケンスの各非先頭セグメントの最上位「ｍ」ビットによって形成されるシーケンスに部分剰余を加算するために、長さ「ｍ」の部分剰余シーケンスをシフトする。ここで、各部分剰余シーケンスは、ＣＲＣ生成多項式Ｇ（ｔ）に対応するシーケンスによる同一の第２シーケンスの先行セグメントのセグメント除算ユニット４３０、４３５のうちの１つによる除算からの剰余である。そのような部分剰余は、剰余処理ユニット４４０から信号線４４１を介して部分剰余付加ユニット４２５にフィード・バックされる。
【００５５】
セグメント除算ユニット４３０、４３５は、順次のセグメントごとの形で各受け取られたセグメント、たとえばマスクされた多項式Ｖ（ｔ）のセグメントに対応する各セグメントに作用する。セグメントごとの除算を介して、セグメント除算ユニット（１つまたは複数）４３０、４３５は、部分剰余のシーケンスを出力する。セグメント除算ユニット４３０、４３５は、以前のセグメント除算からの適当にシフトされた部分剰余と組み合わされる非先頭セグメントを受け取るので、最終的な部分剰余すなわち第２シーケンスの最終セグメントの除算によってセグメント除算ユニット４３０、４３５のうちの１つで作られる部分剰余は、剰余多項式Ｒ（ｂ）ｖ（ｔ）のシーケンスに対応する。すなわち、セグメント除算ユニット（１つまたは複数）４３０、４３５によって出力される最終的な部分剰余シーケンスは、マスクされた多項式Ｖ（ｔ）をＣＲＣ生成多項式Ｇ（ｔ）によって除算することによって作られるはずの剰余に対応する。
【００５６】
いくつかの実施形態では、部分剰余付加ユニット４２５は、第２シーケンスのセグメントのセットを一方のセグメント除算ユニット４３０、４３５に出力し、次の第２シーケンスのセグメントを他方のセグメント除算ユニット４３５、４３０に出力する。これらの実施形態では、セグメント除算ユニットの一方４３０、４３５は、ＣＲＣ生成多項式Ｇ（ｔ）による、あるデータ・パケットの各そのようなセグメントの除算を実行し、セグメント除算ユニットの他方４３５、４３０は、ＣＲＣ生成多項式Ｇ（ｔ）によるストリーム内の次のデータ・パケットの各そのようなセグメントの除算を実行する。
【００５７】
他の実施形態では、部分剰余付加ユニット４２５は、処理されるデータ・パケットによって占められるセグメントの量に基づいてセグメント除算ユニット４３０、４３５にセグメントを選択的に送る。具体的には、セグメントがデータ・パケットの終りを有し、現在のデータ・パケットが次のデータ・パケットより多くのビットをその中に有する場合に、現在のデータ・パケットのセグメントは、第１セグメント除算ユニット４３０に送られ、次のデータ・パケットを有する短縮されたセグメントが、第２セグメント除算ユニット４３５に送られる。そうではなく、現在のデータ・パケットが、次のデータ・パケットより少ないビットを有する場合には、次のデータ・パケットのセグメントが、第１セグメント除算ユニット４３０に送られ、現在のデータ・パケットの残りを有する短縮されたセグメントが、第２セグメント除算ユニット４３５に送られる。
【００５８】
剰余処理ユニット４４０は、さらなる処理のために剰余多項式Ｒ（ｂ）ｖ（ｔ）のシーケンスを出力４４２にルーティングする。さらなる処理を、検査シーケンス検証ユニット４９０または逆方向計算ユニット４７０によって実行することができる。データ・パケットごとに、剰余処理ユニット４４０は、対応するデータ・パケットのＳＯＰ情報、ＳＰＩ情報、ＥＯＰ情報、およびＥＰＩ情報に基づいて、セグメント除算ユニット４３０、４３５のうちの１つからの剰余多項式Ｒ（ｂ）ｖ（ｔ）のシーケンスを選択する。既に説明したように、剰余処理ユニット４４０は、セグメント除算ユニット４３０、４３５からの部分剰余を部分剰余付加ユニット４２５にフィード・バックもする。
【００５９】
上で説明した第２実施形態では、データ・パケットの予約済み部分の終りが第２シーケンスの最終セグメントの始め付近に配置される時に、特殊な状況が発生する。そのような状況では、剰余処理ユニット４４０を、第２シーケンスの最終セグメントについてセグメント除算ユニット４３０、４３５のうちの１つによって評価された部分剰余に訂正項を加算するように構成することができる。より具体的には、訂正項は、対応する部分剰余が計算された時に逆数にされなければならなかったが、逆数にされなかった、第２シーケンスの最後から２番目のセグメント内の１つまたは複数のバイトを補償する。訂正項は、最後から２番目のセグメントの適当にシフトされたミスド・ワンズ・シーケンス（ｍｉｓｓｅｄ  ｏｎｅｓ  ｓｅｑｕｅｎｃｅ）をＣＲＣ生成多項式Ｇ（ｔ）によって除算することから生じる剰余である。当業者は、この特殊な状況でそのような訂正項を適用するのに剰余処理ユニット４４０が使用できるルック・アップ・テーブルまたは組合せ回路をたやすく製造できるはずである。
【００６０】
いくつかの実施形態（図４Ａ〜４Ｂには図示せず）では、部分剰余付加ユニット４２５は、存在せず、マスキング・ユニット４２０は、第２シーケンスの各セグメントをセグメント除算ユニット４３０、４３５のうちの１つに直接に順次出力する。その後、剰余処理ユニット４４０は、ＣＲＣ生成多項式Ｇ（ｔ）に対応するシーケンスによる第２シーケンスの最終セグメントのセグメント除算ユニット（１つまたは複数）４３０、４３５での除算によって作られた最終的な部分剰余を変更する。具体的には、この変更は、セグメント除算ユニット４３０、４３５による第２シーケンスのより以前のセグメントの除算の部分剰余から計算された訂正を加算することを含む。この調整は、剰余処理ユニット４４０が、それでも剰余多項式Ｒ（ｂ）ｖ（ｔ）すなわちＣＲＣ生成多項式Ｇ（ｔ）によるマスクされた第２シーケンスＶ（ｔ）の除算によって入手された剰余に対応する剰余シーケンスをポート４４２で出力するようにするために、最終的な部分剰余を訂正する。
【００６１】
マスクされた第２シーケンス内には、対応するデータ・パケットの一部ではない末尾の固定されたディジタル・データシンボル、たとえば多項式Ｖ（ｔ）の末尾の「０」に対応するエントリがある場合がある。既に述べたように、マスクされた多項式Ｖ（ｔ）のマスクされたシーケンスから計算される多項式Ｒ（ｂ）ｖ（ｔ）の剰余シーケンスは、データ・パケット自体のＣＲＣ剰余多項式Ｃ（ｔ）に対応しない場合がある。したがって、データ・パケットのうちのいくつかについて、逆方向計算ユニット４７０は、ＣＲＣ剰余多項式Ｒ（ｔ）の正しいＣＲＣ剰余シーケンスまたはたとえば上で述べた検査シーケンス差多項式Ｄ（ｔ）の異なるシーケンスの逆方向計算を実行することができる。逆方向計算ユニット４７０内では、これらの計算は、長さ「ｍ」の剰余多項式Ｒ（ｂ）ｖ（ｔ）に基づき、この剰余多項式Ｒ（ｂ）ｖ（ｔ）は、剰余処理ユニット４４０の出力ポート４４２から受け取られる。そのような逆方向計算は、既に説明したように、すなわち、信号線４６５から逆方向計算ユニット４７０によって受け取られるＥＯＰ信号およびＥＰＩ信号から知られる、Ｖ（ｔ）のシーケンス内の「ｂ」個の末尾の０の既知の固定された形にも基づく。
【００６２】
符号器４００Ａ内では、逆方向計算ユニット４７０が、ＣＲＣ剰余多項式Ｒ（ｔ）のＣＲＣ検査シーケンスまたは検査シーケンス差多項式Ｄ（ｔ）の異なるシーケンスを出力ポート４７２を介して検査シーケンス調整ユニット４８０に出力する。
【００６３】
符号器４００Ａ内では、検査シーケンス調整ユニット４８０が、物理通信チャネルへの送信用の変換された第１シーケンスを作るために、対応するデータ・パケットの予約済み部分に逆方向計算された検査シーケンスＲ（ｔ）を挿入する。変換された第１シーケンス内では、データ・パケットのメッセージ部分および予約済み部分のシーケンスが、多項式Ｕ（ｔ）・ｔｍ＋Ｆ（ｔ）によって忠実に表された入力シーケンスではなく、多項式Ｕ（ｔ）・ｔｍ＋Ｆ（ｔ）＋Ｄ（ｔ）によって忠実に表される。変換された第１シーケンスは、出力ポート４８２で出力される。データ・パケットごとに、検査シーケンス調整ユニット４８０は、逆方向計算ユニット４７０の出力ポート４７２から多項式Ｒ（ｔ）またはＤ（ｔ）のシーケンスを受け取る。
【００６４】
検査シーケンス調整ユニット４８０および逆方向計算ユニット４７０は、データ線４６９を介して適当な時にデータ・パケットのセグメントを受け取る。データ線は、適当な長さの遅延を提供するバッファ４６０、４６６を含む。検査シーケンス調整ユニット４８０、逆方向計算ユニット４７０、および剰余処理ユニット４４０は、データ線４６９を介して適当な時にデータ・パケットのＥＯＰ信号、ＥＰＩ信号、ＳＯＰ信号、ＳＰＩ信号を受け取る。制御線４６５は、適当な長さの遅延を提供するバッファ４６２、４６４を含む。
【００６５】
復号器４００Ｂ内では、検査シーケンス検証ユニット４９０が、対応するデータ・パケットが符号語であるかどうかを示す制御信号を出力４９２で出力する。検査シーケンス検証ユニット４９０は、剰余処理ユニット４４０から受け取られる多項式Ｒ（ｂ）ｖ（ｔ）のシーケンスの形に基づいて、出力される制御信号の値を決定する。多項式Ｒ（ｂ）ｖ（ｔ）が長さ「ｍ」のすべて０の多項式である場合には、検査シーケンス検証ユニット４９０は、通常、対応するデータ・パケットに伝送誤りがないことを示す信号を出力する。しかし、多項式Ｒ（ｂ）ｖ（ｔ）が長さ「ｍ」の別の多項式である場合には、検査シーケンス検証ユニット４９０は、通常、対応するデータ・パケットが伝送誤りを有することを示す信号を出力する。
【００６６】
短く要約すると、符号器４００Ａ内では、マスキング・ユニット４２０が、セグメント化ユニット４１０からのセグメントの第１シーケンスを、マスクされた多項式Ｖ（ｔ）に対応するマスクされたセグメントの第２シーケンスに変換する、たとえば式（５）。符号器４００Ａ内では、セグメント除算ユニット４３０、４３５および剰余処理ユニット４４０が、一緒に、たとえば式（６）に従って、剰余多項式
【数２０】
2014180025.tif 000022
に対応するセグメントのシーケンスを生成する。逆方向計算ユニット４７０は、たとえば式（９）に基づいて、剰余多項式
【数２１】
2014180025.tif 000023
からＣＲＣ検査シーケンス調整多項式Ｄ（ｔ）またはＣＲＣ剰余多項式Ｒ（ｔ）を有効に判定し、この多項式のシーケンスを、さらに、検査シーケンス調整ユニット４８０内で使用することができる。
【００６７】
代替実施形態では、他のディジタル・デバイスが、マスキング・ユニット４２０、部分剰余付加ユニット４２５、セグメント除算ユニット４３０、４３５、および剰余処理ユニット４４０の組合せを置換することができる。たとえば、セグメントが、多くとも１つのデータ・パケットの一部を含む場合には、２つのセグメント除算ユニット４３５、４３０および／または剰余処理ユニット４４０のいずれかを有することが必要ではない可能性がある。
【００６８】
上で説明したように、本明細書で説明される実施形態のうちの１つまたは複数は、データ・パケットのＣＲＣ検査シーケンスを生成し、生成されたＣＲＣシーケンスまたはその１の補数を送信の前にデータ・パケットに書き込むシステムまたは方法に関する。
【００６９】
セグメント処理の例および他の例の実施形態
図５に、図４Ａの符号器４００Ａのいくつかの実施形態を介する例のデータ・パケットの処理を示す。データ・パケットは、４つの連続するばらばらの等しい長さのセグメント５２２、５２４、５２６、５２８から形成されるディジタル・データシンボルの第１シーケンス５１０内に配置される。処理は、マスクされたセグメントの第２シーケンス５７０を生成することと、セグメントの第２のマスクされたシーケンスからＣＲＣ検査シーケンス５８０を計算することとを含む。下では、処理を図６に関して説明するが、図６は、図４Ａのマスキング・ユニット４２０および部分剰余付加ユニット４２５の例のブロック図である。マスキング・ユニット４２０部分剰余付加ユニット４２５は、図７に示された有限状態機械（ＦＳＭ）７００に基づいて動作させられる。
【００７０】
図５では、４つのセグメント５２２、５２４、５２６、５２８の第１シーケンス５１０は、データ・パケットを含み、このデータ・パケットは、メッセージ部分５１４と、ＣＲＣ検査シーケンス用の予約済み部分５１６とを有する。第１および第４のセグメント５２２、５２８は、データ・パケットすなわちデータ・パケットのデータ部分５１４および予約済み部分５１６に属さない部分５１２、５１８を有する。
【００７１】
図４Ａのセグメント化ユニット４１０、マスキング・ユニット４２０、部分剰余付加ユニット４２５、セグメント除算ユニット４３０、４３５、剰余処理ユニット４４０、および逆方向計算ユニット４７０を処理することを示す図５。セグメント化ユニット４１０は、第１シーケンス５１０のセグメント５２２、５２４、５２６、５２８と、その中のデータ・パケットの終りおよび始めの位置を定義する情報とをマスキング・ユニット４２０に順次出力する。マスキング・ユニット４２０は、第１シーケンス５１０のセグメント５２２、５２４、５２６、５２８を第２シーケンス５７０のマスクされたセグメント５３６、５４６、５５６、５５６に順次変換する。この変換は、第１シーケンス５１０の、データ・パケット内にない最初の部分および最後の部分５１２、５１８すなわちそれぞれ６バイトを０にマスクすることを含み、データ・パケットの同一個数の最初のバイトおよび最後のバイトすなわちこの例ではそれぞれ４バイトを１の逆数にすることを含むことができる（１バイトの逆数はダッシュによって示される）。部分剰余付加ユニット４２５は、先頭セグメント５２２、５２４、５２６の以前の多項式除算すなわちセグメント除算ユニット４３０、４３５内での除算からの中間剰余または部分剰余５３８、５４８、５５８を先頭ではないセグメント５２４、５２６、５２８の最上位バイトに加算する。そのような実施形態では、部分剰余５３８、５４８、５５８は、剰余処理ユニット４４０またはセグメント除算ユニット（１つまたは複数）４３０、４３５を介してマスキング・ユニット４２０にフィード・バックされる。各セグメント除算ユニット４３０、４３５は、各マスクされたセグメント５３６、５４６、５５６、５６６すなわち先頭ではないセグメント５２４、５２６、５２８の付加された部分剰余を有するセグメントを、ＣＲＣ生成多項式Ｇ（ｔ）に対応するシーケンスによって除算し、これによって部分剰余５３８、５４８、５５８、５６８を作る。剰余処理ユニット４４０は、剰余多項式Ｒ（ｂ）ｖ（ｔ）に対応する最終セグメントの部分剰余５６８を逆方向計算ユニット４７０に出力する。逆方向計算ユニット４７０は、ＣＲＣ剰余多項式Ｒ（ｔ）に対応するＣＲＣ検査シーケンス５８０または最終セグメント剰余５６８からの差多項式Ｄ（ｔ）に対応するＣＲＣ差シーケンスを計算する。
【００７２】
図６および８に、図４Ａ〜４Ｂのマスキング・ユニット４２０、部分剰余付加ユニット４２５、および逆方向計算ユニット４７０の特定の実施形態を示す。
【００７３】
図６を参照すると、セグメント化ユニット４１０は、長さｓすなわちＳｗまたは図５では２０バイトのセグメントをマスキング・ユニット４２０のマスキング・モジュール６２０、６３０、６４０に送る。マスキング・ユニット４２０は、データ・パケットの終了セグメント・インデックスおよび開始セグメント・インデックスの位置に関する情報を受け取るマスク生成モジュール６１０をも含むことができる。
【００７４】
マスク生成モジュール６１０は、図７に示された例の有限状態機械（ＦＳＭ）７００に従ってこの情報を解釈する。初期化時に、ＦＳＭは、ＩＮＩＴ／ＩＤＬＥ状態７１０にある。ＦＳＭは、ＳＯＰの受け取られる値が「０」である限り、ＩＮＩＴ／ＩＤＬＥ状態に留まる。後に受け取られる（ＳＯＰ，ＥＯＰ）対が、ＳＯＰ＝１およびＥＯＰ＝０を示す場合には、対応するセグメントは、データ・パケットの始まりを有する、たとえば図５のセグメント５２２。ＦＳＭは、たとえば図５のセグメント５２２のように、データ・パケットがデータ・パケットの終りをも有するのではない場合に、パケット始め（ＰＢ）状態７２０に変化する。ＦＳＭは、セグメントがデータ・パケットの終りをも有する場合すなわちＥＯＰ＝１である場合に、パケットフル（ＰＦ）状態７６０に変化する。ＰＢ状態７２０では、図６のマスキング・ユニット４２０は、データ・パケットの外のセグメントのすべての初期部分に０シーケンスをセットし、データ・パケット自体の最初のｍ個のビット、たとえば図５ではｍｗ＝４バイトを逆数にする。これらの変換を実行するために、マスク生成モジュール６１０は、ＳＰＩ信号の受け取られた値によって定義される形を有するためにマスクＭ（Ｓ）およびＸ（Ｓ）を作る。ＳＯＰおよびＥＯＰの値が次のセグメント、たとえば図５のセグメント５２４で０である場合には、ＦＳＭは、パケット中央（ＰＭ）状態７３０に変化する。ＦＳＭが初めてＰＭ状態になる時に、符号器は、現在のセグメントの最初の語を逆数にする（Ｘｐ（Ｓ）によって指定されるように、多くとも（（ｍ／ｗ）−１）語が逆数にされなければならない）ために、前のセグメントのマスクＸ（Ｓ）のすべての剰余がマスキング・ユニット６２０に供給されるようにするために、データ・パケットが最後のセグメントの終りで始まったかどうかを判定する。そうではない場合には、ＰＭ状態は、通常、セグメントのマスキングを実行しない。ＦＳＭ  ７００は、パケットの終りがセグメント内に配置されることを示すためにＥＯＰの値が１に変化するまで、ＰＭ状態７３０に留まる。
【００７５】
ＦＳＭは、ＥＯＰの値が１に変化するまで、ＰＭ状態７３０に留まる。ＳＯＰの値がまだ０である場合には、ＦＳＭは、ＥＯＰが１に変化することに応答してパケット終り（ＰＥ）状態７４０に変化する。ＰＥ状態７４０について、マスク生成モジュール６１０は、２つのマスクＭ（Ｅ）およびＸ（Ｅ）を作り、これらは、セグメントのうちでデータ・パケットの外の部分に０をセットし、データ・パケットの終りの長さｍの部分をビット単位で逆数にするために、マスキング・ユニット６２０に供給される。ＳＯＰの値がＥＯＰと一緒に１に変化する場合には、セグメントは、処理されつつあるデータ・パケットの終りと次のデータ・パケットの始めとを含む。ＥＯＰおよびＳＯＰのそのような値は、ＦＳＭにパケット二重（ＰＤ）状態７５０に変化させ、この状態では、両方のセグメント除算ユニット４３０、４３５が使用される。
【００７６】
ＰＤ状態７５０では、２つの処理ケースがある。第１のケースでは、セグメントは、セグメント内の次のデータ・パケットの開始部分より長い、データ・パケットの終了部分を有する。このケースでは、データ・パケットの終了部分は、ＰＥ状態７４０と同様にマスキング・ユニット６２０内で処理され、セグメント除算ユニット４３０は、マスクＭ（Ｅ）およびＸ（Ｅ）を使用する。このケースでは、Ｈ語未満を有する新しいデータ・パケットの開始部分は、マスキング・モジュール６４０およびセグメント除算ユニット４３５内ですなわち、ＰＢ状態７２０に似た形でマスクＭ（Ｓ）およびＸ（Ｓ）のＨ個の最下位ビットを使用して、並列に処理される。第２のケースでは、セグメントは、セグメント内の次のデータ・パケットの開始部分より短い、データ・パケットの終了部分を有する。このケースでは、Ｈ語未満を有するデータ・パケットの終りが、ＰＥ状態７４０に似て２つのマスクＭ（Ｅ）およびＸ（Ｅ）のＨ個の最上位ビットを使用してマスキング・モジュール６３０およびセグメント除算ユニット４３５内で処理される。このケースでは、新しいデータ・パケットの開始部分は、２つのマスクＭ（Ｓ）およびＸ（Ｓ）を使用してマスキング・モジュール６２０およびセグメント除算ユニット４３０内で、ＰＢ状態７２０に似て処理される。
【００７７】
最後に、ＦＳＭ  ７００が、ＩＮＩＴ／ＩＤＬＥ状態７１０またはＰＥ状態７４０にあり、ＳＯＰおよびＥＯＰの値が両方とも１になる場合に、ＦＳＭは、ＰＦ状態７６０に変化する。ＰＦ状態７６０では、パケット全体が、１つのセグメント内に含まれる。このケースでは、セグメントは、４つのマスクＭ（Ｓ）、Ｘ（Ｓ）、Ｍ（Ｅ）、およびＸ（Ｅ）の適用によってマスキング・モジュール６２０内で変更され、ＣＲＣ剰余は、セグメント除算ユニット４３０によって判定される。
【００７８】
ＦＳＭ  ７００は、パケットの始め（１つまたは複数）および／またはパケットの終り（１つまたは複数）に関する情報の妥当性を同時に検査することを含むことができる。たとえば、ＰＭ状態７３０で、ＦＳＭは、ＳＯＰが１になる場合にエラー・メッセージを送ることができ、その後、ＦＳＭは、ＩＮＩＴ／ＩＤＬＥ状態７１０に戻ることができる。ＦＳＭは、ＳＰＩ信号およびＥＰＩ信号の範囲の妥当性の他の検査を実行することを含むことができる。たとえば、ＰＤ状態７５０では、ＥＰＩ信号およびＳＰＩ信号は、データ・パケットの終りと次のデータ・パケットの先頭との間の距離が事前定義のパケット間ギャップ長以上であることを示さなければならない。
【００７９】
図６は、マスキング生成モジュール６１０とマスキング・モジュール６２０、６３０、および６４０との実施形態を示す。ＳＯＰ＝１の時には、マスク生成モジュール６１０は、パケットの始めインデックスｉＳを表すＳＰＩ信号を処理して、その構成要素が（Ｓ−１）から０までのインデックスを有するすなわちＳ語に対応する２進マスクＭ（Ｓ）を生成する。ｉＳより大きいインデックスを有する構成要素は、０であり、ｉＳ以下のインデックスを有する構成要素は、１である。マスク生成モジュール６１０は、どの語を逆数にしなければならないのかを示す２進マスクＸ（Ｓ）を生成する。２進マスクＸ（Ｓ）内では、ｍａｘ（ｉＳ−ｍ／ｗ＋１，０）までの構成要素ｉＳは１であり、他の構成要素は０である。（ｉＳ−ｍ／ｗ＋１）＜０の場合には、次のセグメントに対応する、２進マスクＸ（Ｓ）の構成要素（Ｓ−１）から（Ｓ−（ｉＳ−ｍ／ｗ＋１））までが、やはり１である。マスクＭ（Ｓ）およびＸ（Ｓ）は、マスキング・モジュール６２０、６３０、および６４０に分配され、ＦＳＭ  ７００の状態に依存する形で選択的に使用される。
【００８０】
一実施形態では、マスキングは、データ・パケット・リプレースの外の第１シーケンスの各ディジタル・データシンボルを０に置換し、データ・パケットの先頭および最後のディジタル・データシンボルを逆数にする。マスクＭ（Ｓ）の０値の構成要素は、セグメントのうちでデータ・パケット内ではない部分を識別し、マスクＭ（Ｓ）の１値の構成要素は、第１シーケンスのうちでデータ・パケット内である部分を識別する。第１シーケンスの１語を、Ｍ（Ｓ）の対応する構成要素によって制御されるｗ個のＡＮＤゲートを用いてその後を処理することによって、選択的に０にセットするか変更されないままにすることができる。Ｍ（Ｓ）の構成要素が０である場合には、ＡＮＤゲートは、対応する語を０に置換し、Ｍ（Ｓ）の構成要素が１である場合には、ＡＮＤゲートは、対応する語を変更しない。同様に、マスクＸ（Ｓ）の１値の構成要素は、セグメントのうちで逆数にされなければならない部分を識別する。第１シーケンスの１語は、Ｘ（Ｓ）の対応する構成要素によって制御されるｗ個のＸＯＲゲートを用いてそのように処理することによって、選択的に逆数になるようにセットされまたは変更されないままにされる。マスクＸ（Ｓ）の構成要素が１である場合には、ＸＯＲゲートは、１の逆数によって対応する語を置換し、マスクＸ（Ｓ）の構成要素が０である場合には、ＸＯＲゲートは、対応する語を変更しない。
【００８１】
図５では、長さ２０（バイト／語）のセグメント５２２が、６バイトがパケットの始めに先行することを示す情報と共にマスキング・ユニット４２０に入る。そのために、マスク生成モジュール６１０は、最初の６バイトを０に置換する。また、マスク生成モジュールは、セグメントのバイト７〜１０を逆数にさせる。
【００８２】
図６を参照すると、マスキング・ユニット４２０および部分剰余付加ユニット４２５の組合せは、マスク生成モジュール６１０内で新しいデータ・パケットの始めを検出することに応答して、剰余計算を再開始することができる。より具体的には、マスキング・モジュール６２０および６３０は、フィード・バックされた剰余とフィード・バックされた剰余としての０入力との間で選択するマルチプレクサを有することができる。ＳＯＰの値が１である時には、このマルチプレクサは、剰余多項式
【数２２】
2014180025.tif 000024
のシーケンスを評価するための多項式除算を再開始するために０入力を選択する。
【００８３】
図４Ａ、４Ｂ、５、および６をもう一度参照すると、部分剰余付加ユニット４２５および剰余処理ユニット４４０は、以前に計算された部分剰余５３８、５４８、５５８をその最上位部分に付加することによって、第２シーケンス５７０の非先頭セグメント５４６、５５６、５６６の更新を可能にすることができる。各部分剰余５３８、５４８、５５８、５６８の計算は、セグメント除算ユニット４３０、４３５内で固定された除数シーケンス、たとえばＣＲＣ生成多項式Ｇ（ｔ）によってそのように更新されマスクされたセグメント５３６、５４６、５５６、５６６を除算することを含む。この形で、マスキング・ユニット４２０、部分剰余付加ユニット４２５および剰余処理ユニット４４０は、個々のセグメント５３６、５４６、５５６、５６６に対する反復計算を介する、データ・パケットが複数のセグメントにまたがって延びる時の剰余多項式Ｒ（ｂ）ｖ（ｔ）の剰余の計算をサポートする。
【００８４】
たとえば、剰余は、図５の例では次のように反復して計算される。第１反復では、ＦＳＭ  ７００は、ＰＢ状態７２０に入り、第２シーケンス５７０の第１のマスクされたセグメント５３６を入手するために、Ｍ（Ｓ）マスク５３２およびＸ（Ｓ）マスク５３４を形成し、第１シーケンスのセグメント５２２に適用する。その後、マスクされたセグメント５３６は、第１部分剰余５３８を入手するためにセグメント除算ユニット４３０内で処理される。次の反復では、ＦＳＭ  ７００は、ＰＭ状態７３０に入り、マスキング・ユニット４２０は、入力として次のセグメント５２４をとり、第２セグメント５４６を形成するために所与のＦＳＭ状態用のマスクを生成し、これによって第２シーケンス５７０の第２セグメントを形成する。部分剰余５３８は、部分剰余付加ユニット４２５にフィード・バックされ、次のセグメント５４６の最上位部分に加算され、その後、セグメント除算ユニット４３０は、結果のセグメントを処理して、次の部分剰余５４８を判定する。次の反復では、ＦＳＭ  ７００は、ＰＭ状態７３０に入り、セグメント５２６が、ユニット４２０内で第２シーケンス５７０の第３セグメント５５６を入手するために処理される。部分剰余５４８は、部分剰余付加ユニット４２５にフィード・バックされ、次のセグメント５５６の最上位部分に加算され、その後、セグメント除算ユニット４３０は、結果のセグメントを処理して、次の部分剰余５５８を判定する。最後の反復では、ＦＳＭ  ７００は、ＰＥ状態７４０に変化し、第２シーケンス５７０の最終セグメント５６６を形成するために、Ｍ（Ｅ）マスク５６２およびＸ（Ｓ）マスク５６４を形成し、第１シーケンスのセグメント５２８に適用する。さらに、部分剰余５５８が、部分剰余付加ユニット４２５にフィード・バックされ、次のセグメント５６６の最上位部分に加算され、その後、セグメント除算ユニット４３０は、結果のセグメントを処理して次の部分剰余５６８を判定し、この部分剰余５６８は、マスクされた第２シーケンス５７０をＣＲＣ生成多項式Ｇ（ｔ）によって除算することによって作られるはずである。
【００８５】
上の手順は、セグメント除算ユニット４３０、４３５が、第１シーケンス５１０のセグメント５２２内のデータ・パケットの始めの位置に関わりなく同一の形で部分剰余５３８、５４８、５５８、５６８を計算することを可能にする。剰余処理ユニット４４０は、パケットの終りがセグメント内にあるかどうかを判定するために信号情報を使用することができ、これによって剰余を出力しなければならないかどうかを判定する。
【００８６】
マスク生成モジュール６１０は、ビット・レベル逆数化マスクＸ（Ｂ）を生成することができ、このビット・レベル逆数化マスクＸ（Ｂ）は、マスキング・モジュール６２０、６３０、６４０のうちの１つまたは複数に送られてもよい。ビット・レベル逆数化信号を使用して、パケット内に含まれる検査シーケンス・セグメントが２つのセグメントにまたがる場合に、マスキング・モジュール６２０、６３０、および６４０に、ビット・レベルでセグメントの（ｍ／ｗ）個の最上位語のそれぞれの部分の逆数化を実行するように命令することができる。
【００８７】
たとえば、データ・パケットの最後の（ｍ／ｗ）個の語が逆数にされなければならない実施形態では、ビット・レベル逆数化を、セグメントの最初の（（ｍ／ｗ）−１）個の語内のパケットの終りを説明するのに使用することができる。このビット・レベル逆数化が使用されるのは、逆数にされなければならなかった１つまたは複数の語が前のセグメントと共に処理されたので逆数にされなかったからである。ｌ個のマスク信号が、すべてのマスキング・モジュール６２０、６３０、６４０に結合されるものとして、ならびにそれぞれ幅Ｓ、（Ｓ−Ｈ）、およびＨを有するものとして図示されているが、代替実施形態では、ｌ個のマスクのうちのいくつかを、逆数にされる語数に含まれるマスキング・モジュールだけに結合することができる。
【００８８】
Ｓ語マスキング・モジュール６２０、（Ｓ−Ｈ）語マスキング・モジュール６３０、およびＨ語マスキング・モジュール６４０は、ＡＮＤゲートの複数のバンクおよびＸＯＲゲートの複数のバンクを含むことができる。ＡＮＤゲートのバンクおよびＸＯＲゲートのバンクは、語レベル・マスキングと、信号線４４１から第２シーケンスのセグメントへの部分剰余の加算とを可能にするように機能する。ＸＯＲゲートのバンクは、マスキング・モジュール６２０、６３０、６４０への着信ビットのうちの１つまたは複数の逆数化を可能にし、ＸＯＲゲートのバンクは、データ・セグメント４１２のうちでマスキング・モジュールに入る部分のすべてのビット（すなわち、語全体）の逆数化を可能にする。代替実施形態では、他の論理デバイスおよび／または構造が、そのようなマスキング機能を実現するためにＡＮＤゲートのバンクおよび／またはＸＯＲゲートのバンクを置換することができる。
【００８９】
上で説明したように、マスキング・ユニット４２０は、パケットに属さないセグメントの語に０をセットすることによってデータ・セグメントの語をマスクすることができ、かつあるいはデータ・パケットの始めおよび／またはデータ・パケットの終りの１つまたは複数の単語を１の逆数にすることができる。
【００９０】
図５を参照すると、処理は、第１シーケンスのセグメントを受け取ることによって始まる。次に、マスク生成モジュール６１０は、セグメント化ユニット４１０の出力ポート４１４からの情報および有限状態機械７００の現在の状態に基づいて、受け取られたセグメント内で新しいパケットが始まるかどうかを判定する。新しいパケットがセグメント、たとえばセグメント５２２内で始まる場合には、マスキング生成モジュール６１０は、新しいデータ・パケットの始めに先行するバイトをセットし、かつ／または新しいデータ・パケットの最初のｍ／ｗ語を逆数にするために、マスク・ベクトルを作ることができる。図５では、新しいデータ・パケットの始めは、セグメント５２２の第７バイトにあり、マスキング生成モジュール６１０は、マスキング・モジュール６２０内でセグメント５２２の最初の６語をマスクし、語７〜１０を逆数にするために、マスク・ベクトルＭ（Ｓ）５３４および逆数化マスク・ベクトルＸ（Ｓ）５３６を作る。
【００９１】
受け取られたセグメントが、新しいデータ・パケットの始めを有しない場合には、マスキング生成モジュール６１０は、状態ＰＭ  ７３０によって示されるように、データ・パケットの終りがセグメント内にあるかどうかを判定する。データ・パケットの終りが受け取られたセグメント内にない場合には、マスキング・ユニット６２０は、セグメントのバイトをマスクせず、逆数にしない。しかし、データ・パケットが、受け取られたセグメント内で終わる場合には、マスク生成モジュール６１０は、パケットの終りがセグメントの最初の（ｍ／ｗ）−１語内に含まれるかどうかを判定する（ＰＥ状態７４０およびＰＤ状態７５０）。
【００９２】
データ・パケットの終りがセグメントの最初の（ｍ／ｗ）−１語内に含まれる場合には、マスキング・ユニット４２０は、パケットの終りに続く語に０をセットすることによって前記語をマスクすることができ、かつ／またはデータ・パケットの最後の（ｍ／ｗ）語を逆数にすることができる。一実施形態では、マスキング・ユニット４２０は、マスクＭ（Ｅ）を用いてデータ・パケットの終りに続く語をマスクし、マスクＸ（Ｅ）を用いてデータ・パケットの最後の（ｍ／ｗ）語を逆数にする。
【００９３】
データ・パケットの終りがデータ・セグメントの最初の（ｍ／ｗ）−１語内に含まれる場合には、処理がＩＥＥＥ  ８０２．３または他の適切な標準規格に従う場合に逆数にされる１つまたは複数のバイトが、逆数化なしで前に処理された可能性がある。というのは、データ・パケットの終りが、逆数にされなければならなかった１つまたは複数の語を含むセグメント内に現れなかったからである。したがって、データ・パケットの終りがセグメント４１２の最初の（ｍ／ｗ）−１語内に現れる（たとえば、ＰＥ状態７４０およびＰＤ状態７５０で）場合には、マスキング・ユニット４２０は、パケットの終りに続く語をマスクする。
【００９４】
図４Ａ〜４Ｂを参照すると、剰余処理ユニット４４０は、その中にデータ・パケットの一部を有する最終セグメントの剰余を計算することができる。具体的には、ＰＥ状態７４０およびＰＦ状態７６０で、セグメント除算ユニット４３０は、既に説明した形で最終セグメントの剰余を計算する。剰余処理ユニット４４０が部分剰余をフィード・バックする場合に、最終データ・セグメントについてセグメント除算ユニット４３０によって計算される剰余が、データ・パケット全体ならびにデータ・パケットの終りに続くバイトを置換する０の剰余であることを了解されたい。剰余処理ユニット４４０は、パケットの終りに達した時に必ずそのような剰余を作る。剰余処理ユニット４４０が部分剰余をフィード・バックしない場合には、剰余処理ユニット４４０は、信号線４４１の剰余多項式に「ｔＳ」を乗じたものを判定し、その後、この計算からの結果の剰余が、セグメント除算ユニット４３０の出力ポートから加算されて、剰余多項式Ｒ（ｂ）ｖ（ｔ）のシーケンスを形成する。ＰＤ状態７５０では、マスキング・ユニット４２０は、最終パケットの剰余を判定するためにセグメント除算ユニット４３０、４３５のいずれかを選択し、剰余処理ユニット４４０は、剰余多項式Ｒ（ｂ）ｖ（ｔ）のシーケンスを判定するためにセグメント除算ユニット４３０、４３５のいずれかの出力を選択する。
【００９５】
データ・パケットの終りに続く余分な０を有するマスクされた多項式Ｖ（ｔ）から計算された剰余多項式Ｒ（ｂ）ｖ（ｔ）は、データ・パケットだけのＣＲＣ検査シーケンス多項式Ｒ（ｔ）とは異なる可能性がある。
【００９６】
図８を参照すると、逆方向計算ユニット４７０は、マスクされた多項式Ｖ（ｔ）内の末尾の０の影響を除去することによって、剰余多項式Ｒ（ｂ）ｖ（ｔ）からＣＲＣ検査シーケンス多項式Ｒ（ｔ）を逆方向計算するように構成される。より具体的には、逆方向計算ユニット４７０は、複数の逆方向計算モジュール８２０−０、８２０−１、…、８２０−（ｐ−１）を含み、各計算モジュール８２０−０、８２０−１、…、８２０−（ｐ−１）は、データ・パケットの終りを含むセグメントが信号線４４５からの制御信号によって指定される特定の量だけより短い場合に剰余がどうなるのかを計算するように構成される。たとえば、逆方向計算モジュール８２０−０は、多項式除算がセグメントの終りの１バイト前で停止した場合にＣＲＣ検査シーケンスがどうなるのかを計算するように構成される。一般に、逆方向計算モジュール８２０−ｋは、多項式除算がセグメントの終りの２ｋバイト前で停止した場合に検査シーケンスがどうなるのかを計算するように構成される。
【００９７】
図示の逆方向計算ユニット４７０は、ｐ個の直列に連結された逆方向計算モジュールを含むことができ、各そのようなモジュールは、０≦ｑ＜ｐを満足する「ｑ」の離散値について２ｑバイトを逆方向計算するように構成される。
【００９８】
逆方向計算モジュール８２０−０、８２０−１、…、８２０−（ｐ−１）の組合せを選択することによって、逆方向計算ユニット４７０は、０と２ｐ−１との間のｂの任意の値について、剰余多項式Ｒ（ｂ）ｖ（ｔ）からＣＲＣ検査シーケンス多項式Ｒ（ｔ）を選択的に逆方向計算することができる。より具体的には、図８に示された実施形態では、逆方向計算ユニット４７０は、０にマスクされる末尾バイトの個数の和すなわちｂに基づいて、選択された逆方向計算モジュール８２０−０、８２０−１、…、８２０−（ｐ−１）をアクティブ化しまたはバイパスするように動作する複数のマルチプレクサ８３０−０、８３０−１、…、８３０−（ｐ−１）を含む。ここで、逆方向計算モジュール８２０−ｋは、δ＝２ｋについて式（７）を実施するハードウェア・デバイスである。
【００９９】
たとえば、セグメント５２８の最後の７バイトが０にマスクされる場合には、パケットのＣＲＣ剰余またはＣＲＣ検査シーケンス多項式Ｒ（ｔ）５８０は、逆方向計算される７バイトである。すなわち、信号線４４５の信号は、２進数「００１１１」を示す。したがって、逆方向計算される１バイト、２バイト、および４バイトに対応するマルチプレクサ８３０−０、８３０−１、…、８３０−２が、アクティブ化され、８バイトおよび１６バイトを逆方向計算する逆方向計算モジュールが、バイパスされて、７バイトの全体的な逆方向計算が作られる。
【０１００】
剰余Ｒ（ｔ）の上記の逆方向計算は、最終的なマスクされたセグメントの終りの０が剰余の評価に決定論的に影響するので、実現可能である。そのために、実際のＣＲＣ検査シーケンスを、計算された剰余多項式Ｒ（ｂ）ｖ（ｔ）およびデータ・パケットの終りの位置から見つけることができる。さらに、逆方向計算ユニット４７０は、セグメント除算ユニット４３０、４３５がデータ・パケットの終りの位置に関わりなく同一の形で剰余計算を実行することを可能にすることができる。セグメント除算ユニット４３０、４３５は、連続する等しい長さのセグメントのシーケンスを処理し、これは、所望の剰余を判定するためにより多くの並列のまたは直列の除算ユニットを必要とする代替ＣＲＣ符号器に関して、図４Ａの符号器４００Ａの効率を改善し、かつ／またはサイズおよび製造コストを下げることができる。
【０１０１】
図４Ａをもう一度参照すると、ＣＲＣ剰余多項式Ｒ（ｔ）のシーケンスの逆方向計算の後に、逆方向計算ユニット４７０は、長さｍのＣＲＣ検査シーケンスまたは前に説明した差多項式Ｄ（ｔ）の長さｍのシーケンスを、出力ポート４７２を介して検査シーケンス・セグメント調整ユニット４８０に出力する。また、逆方向計算ユニット４７０は、データ・パケットの予約済み部分の位置に関する情報を、出力ポート４７４を介して検査シーケンス・セグメント調整ユニット４８０に出力する。検査シーケンス調整ユニット４８０は、この位置情報を使用して、遅延線４６９上のオリジナル・データ・ストリーム内のデータ・パケットの予約済み部分を識別し、対応するデータ・パケットの予約済み部分がその中にＣＲＣ検査シーケンスを有するデータ・ストリームを出力ポート４８２で作る。
【０１０２】
最後に、そのようなＣＲＣ検査シーケンスを付加されたデータ・パケットを、出力ポート４８２からさまざまな適切な送信器および送信プロトコル（たとえば、イーサネット（登録商標）、ギガビット・イーサネット（登録商標）、またはＥｖｏｌｕｔｉｏｎ  Ｖｏｉｃｅ／Ｄａｔａ  Ｏｎｌｙ）を介して通信チャネルに送信することができる。
【０１０３】
データ・パケットがその宛先に到着する時に、受信器は、図４Ｂの復号器４００Ｂを使用して、伝送中に発生した可能性がある誤りを識別する際に使用するためにデータ・パケットのＣＲＣ剰余を計算することができる。受信されたデータ・パケットがＣＲＣ符号語であることが見出されない場合には、パケットの１つまたは複数のビットが伝送中に変更された可能性が高い。
【０１０４】
本発明は、さまざまな修正形態および代替形態を許すことができるが、特定の実施形態を、例として図面に示し、本明細書で詳細に説明した。しかし、本発明が、開示された特定の形態に限定されることを意図されてないことを理解されたい。そうではなく、本発明は、次の添付された特許請求の範囲によって定義される本発明の趣旨および範囲に含まれるすべての修正形態、同等物、および代替形態を含まなければならない。
【図１Ａ】
2014180025.tif 000025
【図１Ｂ】
2014180025.tif 000026
【図２】
2014180025.tif 000027
【図３】
2014180025.tif 000028
【図４Ａ】
2014180025.tif 000029
【図４Ｂ】
2014180025.tif 000030
【図５】
2014180025.tif 000031
【図６】
2014180025.tif 000032
【図７】
2014180025.tif 000033
【図８】
2014180025.tif 000034