(57)【特許請求の範囲】
【請求項１】
Ｋ桁のメッセージのＬ桁の部分を、Ｐ個のパリティディジットを有するＮ桁の符号化メッセージに並列符号化するためのエンコーダモジュールであって、
前記Ｋ桁のメッセージの前記Ｌ桁の部分を受信するように構成された入力と、
前記Ｎ桁の符号化メッセージを出力するように構成された出力と、
Ｌ桁入力シフトレジスタ回路とを含み、前記Ｌ桁入力シフトレジスタの入力が、前記エンコーダモジュールの前記入力に連結され、前記Ｌ桁入力シフトレジスタの出力が、マルチプレクサを介して前記エンコーダモジュールの前記出力に連結され、
順次連結されたＰ／Ｌ個のパリティシフトレジスタを含み、前記Ｐ／Ｌ個のパリティシフトレジスタのうち最後のパリティシフトレジスタの入力が、前記エンコーダモジュールの前記入力に連結され、前記最後のパリティシフトレジスタの出力が、前記マルチプレクサを介して前記エンコーダモジュールの前記出力に連結され、
Ｐ／Ｌ個のパリティ生成モジュールを備えるフィードバック回路を含み、前記Ｐ／Ｌ個のパリティ生成モジュールの各々が、スイッチによって前記最後のパリティシフトレジスタの前記出力に連結され、さらに前記Ｐ／Ｌ個のパリティシフトレジスタのうち対応する１つのパリティシフトレジスタの入力に連結され、
前記Ｐ／Ｌ個のパリティ生成モジュールの各々は、前記スイッチが閉合されているときに、前記Ｐ／Ｌ個のパリティシフトレジスタのうち１つに対応するパリティシフトレジスタに格納されるべきＬ個のパリティディジットを生成するように構成され、
Ｌ，Ｋ，ＮおよびＰは正の整数であり、Ｌは１よりも大きく、ＰはＬの倍数である、エンコーダモジュール。
【請求項２】
（Ｋ／Ｌ）個のクロックサイクルの各々において、
前記フィードバック回路の前記スイッチは、閉合され、
前記エンコーダモジュールは、入力で受信した前記Ｋ桁のメッセージの前記Ｌ桁の部分のうち１つを、前記Ｌ桁入力シフトレジスタと、前記最後のパリティシフトレジスタの前記入力とに転送し、
前記最後のパリティシフトレジスタは、格納されたパリティディジットを、前記フィードバック回路の前記Ｐ／Ｌ個のパリティ生成モジュールの各々に転送し、前記Ｐ／Ｌ個のパリティ生成モジュールの各々は、前記Ｐ／Ｌ個のパリティシフトレジスタのうち１つに対応するパリティシフトレジスタに格納されるべきＬ個のパリティディジットを生成し、  前記最後のパリティシフトレジスタ以外の前記Ｐ／Ｌ個のパリティシフトレジスタの各々は、格納されたパリティディジットを前記Ｐ／Ｌ個のパリティシフトレジスタのうち次のパリティシフトレジスタに転送し、
前記Ｌ桁入力シフトレジスタは、格納されたデータを前記エンコーダモジュールの前記出力に転送し、当該データは、前記Ｋ桁のメッセージの前記Ｌ桁の部分のうち１つを含み、
（Ｋ／Ｌ）＋１クロックサイクルにおいて、
前記Ｌ桁入力シフトレジスタは、格納されたデータを前記エンコーダモジュールの前記出力に転送し、当該データは、前記Ｋ桁のメッセージの前記Ｌ桁の部分のうち１つを含み、
前記エンコーダモジュールは、入力で受信したゼロ入力を前記Ｌ桁入力シフトレジスタおよび前記最後のパリティシフトレジスタの前記入力に転送することによって、前記フィードバック回路の前記スイッチを開放し、
前記（Ｋ／Ｌ）＋２〜（Ｎ／Ｌ）＋１個のクロックサイクルの各々において、
前記最後のパリティシフトレジスタは、格納されたパリティディジットを前記エンコーダモジュールの前記出力に転送し、
前記最後のパリティシフトレジスタ以外の前記Ｐ／Ｌ個のパリティシフトレジスタの各々は、格納されたパリティディジットを前記Ｐ／Ｌ個のパリティシフトレジスタのうち次のパリティシフトレジスタに転送する、請求項１に記載のエンコーダモジュール。
【請求項３】
前記最後のパリティシフトレジスタの前記出力と前記Ｌ桁入力シフトレジスタの出力とは、マルチプレクサを介して前記エンコーダモジュールの前記出力に連結されている、請求項２に記載のエンコーダモジュール。
【請求項４】
前記（Ｋ／Ｌ）個のクロックサイクルの各々において前記最後のパリティシフトレジスタの前記入力に転送された前記Ｌ桁の部分は、同一クロックサイクルにおいて前記最後のパリティシフトレジスタに格納された前記パリティディジットと合併される、請求項２に記載のエンコーダモジュール。
【請求項５】
前記（Ｋ／Ｌ）個のクロックサイクルの各々において前記Ｐ／Ｌ個のパリティ生成モジュールの各々によって生成された前記Ｌ個のパリティディジットは、同一クロックサイクルにおいて対応するパリティシフトレジスタに格納された前記パリティディジットと合併される、請求項２に記載のエンコーダモジュール。
【請求項６】
前記（Ｋ／Ｌ）＋１クロックサイクルにおいて前記Ｐ／Ｌ個のパリティシフトレジスタの各々に格納された前記パリティディジットは、最終パリティディジット値である、請求項２に記載のエンコーダモジュール。
【請求項７】
前記Ｐ個のパリティディジットは、前記（Ｋ／Ｌ）＋２〜（Ｎ／Ｌ）＋１個のクロックサイクルにおいて、前記エンコーダモジュールによって出力される、請求項１に記載のエンコーダモジュール。
【請求項８】
前記Ｐ個のパリティディジットは、Ｌ桁の並列出力として出力される、請求項７に記載のエンコーダモジュール。
【請求項９】
前記Ｐ／Ｌ個のパリティシフトレジスタは、前記Ｐ／Ｌ個のパリティシフトレジスタの各々に連結された制御信号によって制御される、請求項１に記載のエンコーダモジュール。
【請求項１０】
前記エンコーダモジュールによって受信された前記Ｋ桁のメッセージの前記Ｌ桁の部分は、（Ｋ／Ｌ）＋１クロックサイクルにおいて、前記エンコーダモジュールによって出力される、請求項１に記載のエンコーダモジュール。
【請求項１１】
Ｋ桁のメッセージのＬ桁の部分を、Ｐ個のパリティディジットを有するＮ桁の符号化メッセージに並列符号化するためのエンコーダモジュールであって、
前記Ｋ桁のメッセージの前記Ｌ桁の部分を受信するように構成された入力と、
前記Ｎ桁の符号化メッセージを出力するように構成された出力とを含み、前記エンコーダモジュールの前記入力が、前記出力に結合され、
Ｐ／Ｌ段遅延器を含み、前記Ｐ／Ｌ段遅延器の入力は、前記エンコーダモジュールの前記入力に連結され、前記Ｐ／Ｌ段遅延器の出力は、マルチプレクサを通じて前記エンコーダモジュールの出力に連結され、
順次連結されたＰ／Ｌ個のパリティシフトレジスタを含み、前記Ｐ／Ｌ個のパリティシフトレジスタのうち最初のパリティシフトレジスタの入力が、前記エンコーダモジュールの前記入力に連結され、前記Ｐ／Ｌ個のパリティシフトレジスタのうち最後のパリティシフトレジスタの出力が、前記マルチプレクサを通じて前記エンコーダモジュールの前記出力に連結され、前記Ｐ／Ｌ個のパリティシフトレジスタの各々は、Ｌ個のパリティディジットを格納する容量を有し、
Ｐ／Ｌ個のパリティ生成モジュールを備えるフィードバック回路を含み、前記Ｐ／Ｌ個のパリティ生成モジュールの各々が、対応するスイッチによって、前記Ｐ／Ｌ個のパリティシフトレジスタのうち１つの対応するパリティシフトレジスタの出力に連結され、さらに、前記最初のパリティシフトレジスタの前記入力に連結され、前記Ｐ／Ｌ個のパリティ生成モジュールの各々は、対応するスイッチが閉合されているときに、前記最初のパリティシフトレジスタの前記入力への転送のためのＬ個のパリティディジットを生成するように構成され、
Ｌ，Ｋ，ＮおよびＰは正の整数であり、Ｌは１よりも大きく、ＰはＬの倍数であり、
前記エンコーダモジュールの前記入力は、前記Ｐ／Ｌ段遅延器および前記マルチプレクサを通じて前記出力に結合される、エンコーダモジュール。
【請求項１２】
（Ｋ／Ｌ）個のクロックサイクルの各々において、
前記フィードバック回路の前記対応するスイッチの各々は、閉合され、
前記エンコーダモジュールは、入力で受信した前記Ｋ桁のメッセージの前記Ｌ桁の部分のうち１つを、前記最初のパリティシフトレジスタと、前記エンコーダモジュールの前記出力とに転送し、
前記Ｐ／Ｌ個のパリティシフトレジスタの各々は、格納されたパリティディジットを前記Ｐ／Ｌ個のパリティ生成モジュールのうち対応する１つのパリティ生成モジュールに転送し、前記対応する１つのパリティ生成モジュールは、前記最初のパリティシフトレジスタに転送されるべき前記Ｌ個のパリティディジットを生成し、
前記最後のパリティシフトレジスタ以外の前記Ｐ／Ｌ個のパリティシフトレジスタの各々は、さらに、格納されたパリティディジットを前記Ｐ／Ｌ個のパリティシフトレジスタのうち次のパリティシフトレジスタに転送し、
（Ｋ／Ｌ）＋１〜（Ｐ／Ｌ）個のクロックサイクルの各々において、
前記エンコーダモジュールは、入力で受信したゼロ入力を、前記最初のパリティシフトレジスタに転送し、
前記フィードバック回路の１以上の前記対応するスイッチは、次々と開放され、
前記Ｐ／Ｌ個のパリティシフトレジスタの各々は、格納されたパリティディジットを、前記Ｐ／Ｌ個のパリティ生成モジュールのうち１つの対応するパリティ生成モジュールに転送し、
前記（（Ｋ／Ｌ）＋（Ｐ／Ｌ））〜（（Ｎ／Ｌ）＋（Ｐ／Ｌ））個のクロックサイクルの各々において、
前記最後のパリティシフトレジスタは、格納されたパリティディジットを前記エンコーダモジュールの前記出力に転送し、
前記最後のパリティシフトレジスタ以外の前記Ｐ／Ｌ個のパリティシフトレジスタの各々は、格納されたパリティディジットを前記Ｐ／Ｌ個のパリティシフトレジスタのうち次のパリティシフトレジスタに転送する、請求項１１に記載のエンコーダモジュール。
【請求項１３】
前記最後のパリティシフトレジスタの前記出力と前記エンコーダモジュールの前記入力とは、マルチプレクサを介して前記エンコーダモジュールの前記出力に連結されている、請求項１２に記載のエンコーダモジュール。
【請求項１４】
前記（Ｋ／Ｌ）個のクロックサイクルの各々において前記最初のパリティシフトレジスタの前記入力に転送された前記Ｌ桁の部分のうちの１つは、同一クロックサイクルにおいて前記最初のパリティシフトレジスタに格納された前記パリティディジットと合併される、請求項１２に記載のエンコーダモジュール。
【請求項１５】
前記（Ｋ／Ｌ）個のクロックサイクルの各々において前記Ｐ／Ｌ個のパリティ生成モジュールの各々によって生成された前記Ｌ個のパリティディジットは、前記最初のパリティシフトレジスタに格納された前記パリティディジットと合併される、請求項１２に記載のエンコーダモジュール。
【請求項１６】
前記エンコーダモジュールによって受信された前記Ｋ桁のメッセージの前記Ｌ桁の部分は、（Ｋ／Ｌ）個のクロックサイクルにおいて、前記エンコーダモジュールによって出力される、請求項１１に記載のエンコーダモジュール。
【請求項１７】
前記Ｐ個のパリティディジットは、前記（Ｋ／Ｌ）＋１〜（Ｐ／Ｌ）個のクロックサイクルにおいて、前記エンコーダモジュールによって出力される、請求項１１に記載のエンコーダモジュール。
【請求項１８】
前記Ｐ個のパリティディジットは、Ｌ桁の並列出力として出力される、請求項１７に記載のエンコーダモジュール。
【請求項１９】
前記Ｐ／Ｌ個のパリティシフトレジスタは、前記Ｐ／Ｌ個のパリティシフトレジスタの各々に連結された制御信号によって制御される、請求項１１に記載のエンコーダモジュール。
【請求項２０】
前記最初のパリティシフトレジスタの前記入力に関連付けられた加算器モジュールをさらに含む、請求項１１に記載のエンコーダモジュール。
【発明の詳細な説明】
【技術分野】
【０００１】
著作権のある資料の権利保留
開示された本特許文書の一部は、著作権保護の対象となる資料を含んでいる。著作権所有者は、特許商標庁の特許ファイルまたは記録に記載される特許文書または特許開示のファクシミリ複製に異議ないが、それ以外の全ての著作権を保留する。
【０００２】
出願の分野
本願は、一般に、非バイナリ線形ブロックコードの符号化に関し、特に、非バイナリ線形ブロックコードの並列符号化を実施するためのシステムおよび方法に関する。
【背景技術】
【０００３】
背景
線形前方誤り訂正（ＦＥＣ）コードは、データの整合性および正確性が保護されなければならない通信および大容量記憶システムにおいて、広く応用されている。線形ブロックＦＥＣは、データディジットのうち１つのブロックを取得し、冗長ディジットを追加することによってこのデータブロックを保護する。典型的には、エンコーダは、これらの冗長ディジットを計算するが、デコーダーは、冗長ディジットを用いて受信したデータブロックの正確性を判断し、可能な場合、冗長ディジットを用いてデータの誤ったブロックを訂正する。
【０００４】
線形ブロックコードは、ｋ桁のメッセージディジットがエンコーダモジュールによってｎ桁のディジットに符号化されたコードであり、（ｎ，ｋ）によって表記される。このように、エンコーダによって、ｎ−ｋ桁の冗長ディジットがｋ桁のメッセージディジット（たとえば、データブロック）に追加される。ｎ−ｋ桁の冗長ディジットは、パリティディジットとも呼ばれている。系統的符号化が実行される場合、ｎ桁の符号化ディジットは、単にｋ桁のメッセージディジット（たとえば、データブロック）の後方にｎ−ｋ桁パリティディジットが追加されたものである。
【０００５】
パリティディジットは、ガロア域（ＧＦ）において定義された生成多項式ｇ（ｘ）に基づき計算される。線形ブロックコードに対し、生成多項式ｇ（ｘ）は、二次ガロア域（ＧＦ（２））において定義される。非バイナリ線形ブロックコードに対し、生成多項式ｇ（ｘ）は、ｑｍ次のガロア域（ＧＦ（ｑｍ））において定義される。ｑは、素数である。リード・ソロモン（Reed Solomon（ＲＳ）)エンコーダは、非バイナリ線形ブロックコードの分類に該当する。
【０００６】
１０ギガビット毎秒のエンコーダに対し、達成可能な最大線形速度は、１０．０９ギガビット／秒である。１回に単一の入力を処理するシリアル入力を用いてこのような線形速度を達成する場合、１．１０９ＧＨｚ（＝１１．０９／ｍ）で動作するクロッキングを必要とする。パリティディジットを計算する際に複雑なロジックが関与されるため、シリアル入力を用いてこのような高線形速度を維持することは、非常に困難である。
【発明の概要】
【課題を解決するための手段】
【０００７】
概要
いくつかの実施形態によれば、Ｋ桁のメッセージのＬ桁の部分を、Ｐ個のパリティディジットを有するＮ桁の符号化メッセージに並列符号化するためのエンコーダモジュールは、Ｋ桁のメッセージのＬ桁の部分を受信するように構成された入力と、Ｎ桁の符号化メッセージを出力するように構成された出力と含み、エンコーダモジュールの入力は、その出力に連結される。また、エンコーダモジュールは、順次連結されたＰ／Ｌ個のパリティシフトレジスタを含み、パリティシフトレジスタのうち最初のパリティシフトレジスタの入力が、エンコーダモジュールの入力に連結され、最後のパリティシフトレジスタの出力が、エンコーダモジュールの出力に連結され、パリティシフトレジスタの各々が、Ｌ個のパリティディジットを格納するように構成される。さらに、エンコーダモジュールは、Ｐ／Ｌ個のパリティ生成モジュールを備えるフィードバック回路を含み、パリティ生成モジュールの各々は、スイッチによって、パリティシフトレジスタのうち対応する１つのパリティシフトレジスタの入力に連結されかつ最初のパリティシフトレジスタの出力に連結され、パリティ生成モジュールの各々は、対応するスイッチが閉合されているときに、最初のパリティシフトレジスタの入力に転送されるＬ個のパリティディジットを生成するように構成される。
【０００８】
他の実施形態によれば、Ｋ桁のメッセージのＬ桁の部分を、Ｐ個のパリティディジットを有するＮ桁の符号化メッセージに並列符号化するためのエンコーダモジュールは、Ｋ桁のメッセージのＬ桁の部分を受信するように構成された入力と、Ｎ桁の符号化メッセージを出力するように構成された出力と含み、エンコーダモジュールの入力は、その出力に連結される。また、エンコーダモジュールは、入力および出力に連結されたＰ／Ｌ段の遅延器と、順次連結されたＰ／Ｌ個のパリティシフトレジスタとを含み、パリティシフトレジスタのうち最初のパリティシフトレジスタの入力が、エンコーダモジュールの入力に連結され、パリティシフトレジスタのうち最後のパリティシフトレジスタの出力が、エンコーダモジュールの出力に連結され、パリティシフトレジスタの各々が、Ｌ個のパリティディジットを格納するように構成される。さらに、エンコーダモジュールは、Ｐ／Ｌ個のパリティ生成モジュールを備えるフィードバック回路を含み、パリティ生成モジュールの各々は、スイッチによって、パリティシフトレジスタのうち対応する１つのパリティシフトレジスタの入力に連結されかつ最初のパリティシフトレジスタの出力に連結され、パリティ生成モジュールの各々は、対応するスイッチが閉合されているときに、最初のパリティシフトレジスタの入力に転送されるＬ個のパリティディジットを生成するように構成される。
【０００９】
他の局面および特徴ならびにさらなる局面および特徴は、以下の実施形態の詳細な説明を読めば明白になるであろう。
【００１０】
図面は、実施形態の設計および効用を示している。図面において、同様の要素が共通の参照番号を付して参照される。これらの図面は、必ずしも一定の縮尺で描かれていない。上記のおよび他の利点および目的の達成をより明白に理解するために、添付の図面に例示されている実施形態のより具体的な説明を提供する。これらの図面は、代表的な実施形態のみを示すものであり、特許請求の範囲を限定するものとみなされるべきではない。
【図面の簡単な説明】
【００１１】
【図１】非バイナリ線形ブロックコードを直列符号化するための直列エンコーダモジュールを示す図である。
【図２】非バイナリ線形ブロックコードの並列符号化を実行するためのエンコーダモジュールを示す図である。
【図３】いくつかの実施形態に従った、非バイナリ線形ブロックコードの並列符号化を実行するためのエンコーダモジュールを示す図である。
【図４】いくつかの実施形態に従った、減少されたファンアウトを有する非線形ブロックコードの並列符号化を実行するためのエンコーダモジュールを示す図である。
【発明を実施するための形態】
【００１２】
詳細な説明
以下、図面を参照してさまざまな実施形態を説明する。注意すべきことは、図面が縮尺通りに描かれておらず、類似構造の要素または機能が図面の全体において同様の参照番号によって示されることである。なお、図面は、実施形態の説明を容易にすることを意図していることに注意すべきである。図面は、本発明の網羅的な説明または本発明の特許請求の範囲に対する限定を意図するものではない。また、図示された実施形態は、示された局面または利点をすべて備える必要がない。特定の実施形態に関連して説明した局面または利点は、必ずしもその実施形態に限定されるものではなく、図示されていなくでも、任意の他の実施形態に実施することができる。また、本明細書において、「いくつかの実施形態」または「他の実施形態」を言及する場合、実施形態に関連して説明された特定の特徴、構造、材料または特性が少なくとも１つの実施形態に含まれることを意味する。したがって、本明細書において、さまざまな箇所に現れる「いくつかの実施形態において」または「他の実施形態において」などの表現は、必ずしも同じ実施形態を指すではない。
【００１３】
線形ブロックコードは、ｋ桁のメッセージディジットがエンコーダモジュールによってｎ桁のディジットに符号化されたコードであり、（ｎ，ｋ）によって表記される。このように、エンコーダによって、ｎ−ｋ桁の冗長ディジットがｋ桁のメッセージディジット（たとえば、データブロック）に追加される。ｎ−ｋ桁の冗長ディジットは、パリティディジットとも呼ばれている。系統的符号化が実行される場合、ｎ桁の符号化ディジットは、単にｋ桁のメッセージディジット（たとえば、データブロック）の後方にｎ−ｋ桁パリティディジットが追加されたものである。パリティディジットは、ガロア域（ＧＦ）において定義された生成多項式ｇ（ｘ）に基づき計算される。線形ブロックコードについて、生成多項式ｇ（ｘ）は、二次ガロア域（ＧＦ（２））において定義される。非バイナリ線形ブロックコードについて、生成多項式ｇ（ｘ）は、ｑｍ次のガロア域（ＧＦ（ｑｍ））において定義される。ｑは、素数である。
【００１４】
例示のために、以下は、２１０次のガロア域（ＧＦ（２１０））において定義された生成多項式に関連して説明する。しかしながら、重要なのは、非線形ブロックコードを並列符号化するための方法およびシステムは、任意次数のガロア域において定義された生成多項式を包含するように拡張されてもよいということに留意すべきである。
【００１５】
符号化されるＫ桁のメッセージは、次のメッセージ多項式で表される。ｍＮ−Ｋは、２ｍ次のガロア域における桁数に対応する。
【００１６】
【数１】
0005978382.tif 000002
【００１７】
Ｎは、符号化されたメッセージの長さを表し、Ｐは、パリティディジットの長さ（Ｐ＝Ｎ−Ｋ）を表す。生成多項式は、２ｍ次のガロア域において定義されたｇ（ｘ）で表される。
【００１８】
ｎ桁の符号化メッセージは、以下の多項式で表される。式中、ｐ（ｘ）の係数は、パリティディジットであり、ｃ（ｘ）の係数は、最終に符号化されたディジットである。
【００１９】
【数２】
0005978382.tif 000003
【００２０】
(  )ｇ(ｘ)は、多項式ｇ（ｘ）に対するモジュロ演算を示す。
ｐ（ｘ）の計算は、以下のように展開することができる。
【００２１】
【数３】
0005978382.tif 000004
【００２２】
[a(x)b(x)]g(x)＝([a(x)]g(x)[b(x)]g(x))g(x)のため、式（４）を以下のような再帰式に書き換えることができる。
【００２３】
【数４】
0005978382.tif 000005
【００２４】
以下の擬似コードで示されるように、上記の再帰式を実行することができる。
【００２５】
【数５】
0005978382.tif 000006
【００２６】
説明したアルゴリズムは、図１に示された直列エンコーダモジュールを用いて実行することができる。図１は、非バイナリ線形ブロックコードを直列符号化するための直列エンコーダモジュール１００を示す。直列エンコーダモジュール１００は、Ｋ桁のメッセージのために、任意Ｐ個のパリティディジットを生成するように構成することができる。例示のために、図１の直列エンコーダモジュール１００は、Ｋ桁のメッセージのために、４個のパリティディジットを生成するように構成されている。
【００２７】
直列エンコーダモジュール１００は、入力Ｄｉｎと、出力Ｄｏｕｔと、４つの１桁パリティシフトレジスタ１０３／１０３′と、４つのパリティ生成モジュール１０７を備えるフィードバック回路１０５とを含む。図１の直列エンコーダモジュール１００は、４つのパリティ生成モジュール（たとえば、ガロア域乗算器）１０７および４つのパリティシフトレジスタ１０３／１０３′のみを含むが、直列エンコーダモジュールとしては、任意Ｐ個のパリティシフトレジスタと、生成されるＰ個のパリティディジットに対応する任意Ｐ個のパリティ生成モジュールとを含んでもよい。
【００２８】
エンコーダモジュール１００の入力Ｄｉｎは、Ｋ桁のメッセージをシリアル入力として受信するように構成される。直列エンコーダモジュール１００の出力Ｄｏｕｔは、Ｐ個のパリティディジットを有するＮ桁の符号化メッセージを出力するように構成される。以下で詳細に説明するように、フィードバック回路１０５のパリティ生成モジュール１０７は、パリティシフトレジスタ１０３／１０３′に格納されるパリティディジットを生成するように構成される。
【００２９】
４つのパリティシフトレジスタ１０３／１０３′は、１つのパリティシフトレジスタ１０３／１０３′の出力が（次のパリティシフトレジスタが存在する場合に）次のパリティシフトレジスタ１０３／１０３′の入力に連結されるように、順次連結されている。各パリティシフトレジスタ１０３／１０３′は、各パリティ生成モジュール１０７に対応しており、各パリティ生成モジュール１０７は、対応するパリティシフトレジスタ１０３／１０３′の入力に連結される。加算器モジュールＡが、複数のソース（たとえば、１つのパリティ生成モジュールおよび先行するパリティシフトレジスタ）に連結された各パリティシフトレジスタ１０３／１０３′に関連されてもよい。加算器モジュールＡは、パリティシフトレジスタ１０３／１０３′の入力で受信したデータを格納するために、データの合併を容易にする。４つのパリティシフトレジスタ１０３／１０３′のうち最後のパリティシフトレジスタ１０３′の出力は、エンコーダモジュール１００の入力Ｄｉｎに連結されかつフィードバック回路１０５の各パリティ生成モジュール１０７の出力に連結される。最後のパリティシフトレジスタ１０３′の出力はさらに、マルチプレクサを介してエンコーダモジュール１００の出力Ｄｏｕｔに連結される。追加的な加算器モジュールＡは、最後のパリティシフトレジスタ１０３′の出力に関連されてもよい。この追加の加算器モジュールＡは、最後のパリティシフトレジスタ１０３′の出力で受信したデータをフィードバック回路１０５のパリティ生成モジュール１０７に送信するために、データの合併を容易にする。同様に、エンコーダモジュール１００の入力Ｄｉｎは、マルチプレクサを介してエンコーダモジュール１００の出力Ｄｏｕｔに連結される。
【００３０】
フィードバック回路１０５は、スイッチＳをさらに含む。スイッチＳが閉合されると、フィードバック回路１０５が作動され、パリティ生成モジュール１０７が能動的にパリティディジットを生成する。スイッチＳが開放されると、フィードバック回路１０５の動作が停止され、パリティ生成モジュール１０７がパリティディジットを生成しなくなる。
【００３１】
最初のＫ個（たとえば、メッセージディジットの数）クロックサイクルにおいて、フィードバック回路１０５のスイッチＳは、閉合されている。最初のＫ個クロックサイクルの各クロックサイクルにおいて、Ｋ桁のメッセージのディジットは、エンコーダモジュール１００の入力Ｄｉｎで直列入力として受信され、最後のパリティシフトレジスタ１０３′の出力に転送され、その後フィードバック回路１０５の各パリティ生成モジュール１０７に転送される。フィードバック回路１０５の各パリティ生成モジュール１０７は、対応するパリティシフトレジスタ１０３，１０３′に格納される単一のパリティディジットを生成するように構成されている。各パリティ生成モジュール１０７は、再帰式（５）および上記の擬似コードに従って、Ｋ桁のメッセージの各ディジットのために、パリティディジットを生成するように構成されている。各クロックサイクルにおいて、各パリティ生成モジュール１０７によって生成されたパリティディジットは、各対応するパリティシフトレジスタ１０３／１０３′に格納されているデータと合併され、パリティディジットの最新セットを形成する。
【００３２】
また、最初のＫ個クロックサイクルの各クロックサイクルにおいて、各パリティシフトレジスタ１０３，１０３′は、（次のパリティシフトレジスタが存在する場合に）次のパリティシフトレジスタに格納されたデータを送信する。最後のパリティシフトレジスタ１０３′は、格納されたデータをフィードバック回路１０５の各パリティ生成モジュール１０７に送信する。各クロックサイクルにおいて、Ｋ桁のメッセージの新たなディジットが受信されると、パリティシフトレジスタ１０３／１０３′に格納される新たなパリティディジットがパリティ生成モジュール１０７により生成されるので、パリティシフトレジスタ１０３／１０３′に格納されたパリティディジットが更新される。上述したように、各クロックサイクルにおいて、新たに生成されたパリティディジットは、対応するパリティシフトレジスタ１０３／１０３′に格納されているデータと合併され、パリティディジットの最新セットを形成する。
【００３３】
同時に、最初のＫ個クロックサイクルにおいて、エンコーダモジュール１００の入力Ｄｉｎで受信したＫ桁のメッセージの各ディジットは、マルチプレクサを介してエンコーダモジュール１００の出力Ｄｏｕｔに転送され、よってエンコーダモジュール１００により出力される最初のＫ個のディジットがＫ桁のメッセージとなる。
【００３４】
Ｋ＋１〜Ｎ個のクロックサイクルにおいて、フィードバック回路のスイッチＳは、開放され、パリティシフトレジスタ１０３／１０３′に格納されている最終パリティディジット値が、エンコーダモジュール１００の出力Ｄｏｕｔに送信される。パリティシフトレジスタ１０３／１０３′に格納されている最終パリティディジット値は、各パリティシフトレジスタ１０３／１０３′に連結された制御信号ＣＥに応じて出力される。たとえば、Ｋ＋１クロックサイクルにおいて、最後のパリティシフトレジスタ１０３′に格納されたパリティディジットは、マルチプレクサを介してエンコーダモジュール１００の出力Ｄｏｕｔに送信されることができ、残りの各パリティシフトレジスタ１０３に格納されたパリティディジットは、各々の加算器モジュールを介して次のパリティシフトレジスタ１０３に送信されることもできる。この動作は、エンコーダモジュール１００がすべてのパリティディジットを出力するまで、第Ｎ個のクロックサイクルまで継続する。このようにして、エンコーダモジュール１００は、最初のＫ個のディジットがＫ桁のメッセージディジットでありかつ最後のＰ個のディジットがパリティディジットであるＮ桁の符号化メッセージを出力する。
【００３５】
しかしながら、図１のエンコーダモジュールが動作してＫ桁のメッセージをＰ個のパリティディジットを有するＮ桁の符号化メッセージに符号化するときに、いくつかの欠点がある。エンコーダモジュールが直列動作するので、高線形速度を達成するために、エンコーダモジュールが非常に高い周波数で動作しなければならない。しかしながら、パリティ生成モジュールの構成に関連するロジックが複雑であるため、符号化処理にさまざまなエラーを導入することなくおよび追加のコストなくでは、このような高い周波数を達成することができない。
【００３６】
非バイナリ線形ブロックコードの並列符号化を実行するエンコーダモジュールの１つの提案は、図２に示されている。図１の直列エンコーダモジュール１００は、各クロックサイクルにおいて、Ｋ桁のメッセージの単一のディジットしか処理できない。これに対し、図２のエンコーダモジュール２００は、各クロックサイクルにおいて、複数のディジット（Ｌ）を処理することができる。エンコーダモジュール２００は、Ｎ桁の符号化メッセージを形成するために、Ｋ桁のメッセージに対し任意Ｐ個のパリティディジットを生成するように構成されてもよい。そのＫ桁のメッセージは、Ｌ桁の並列入力として受信され、そのＮ桁の符号化メッセージは、Ｌ桁の並列出力として出力される。しかしながら、例示のため、図２のエンコーダモジュール２００は、Ｎ桁の符号化メッセージを形成するために、Ｋ桁のメッセージに対し１６個のパリティディジット（すなわち、Ｐ＝１６）を生成するように構成されている。そのＫ桁のメッセージは、４桁の並列入力（すなわち、Ｌ＝４）として受信され、そのＮ桁の符号化メッセージは、４桁の並列出力として出力される。ＫがＬの整数倍でない場合には、メッセージの全体長さがＬの倍数になるように、メッセージの先頭にゼロを挿入する。
【００３７】
エンコーダモジュール２００は、入力Ｄｉｎと、出力Ｄｏｕｔと、４つの４桁パリティシフトレジスタ２０３／２０３′と、４つのパリティ生成モジュール２０７を備えるフィードバック回路２０５とを含む。図２のエンコーダモジュール２００は、４つのパリティ生成モジュール２０７および４つの４桁パリティシフトレジスタ２０３／２０３′のみを含むが、エンコーダモジュール２００は、任意Ｐ／Ｌ個のＬ桁パリティシフトレジスタと、生成されるＰ個のパリティディジットに対応する任意Ｐ／Ｌ個のパリティ生成モジュールと、受信されるＬ桁の並列入力とを含んでもよい。
【００３８】
エンコーダモジュール２００の入力Ｄｉｎは、Ｋ桁のメッセージを４桁の並列入力として受信するように構成される。エンコーダモジュール２００の出力Ｄｏｕｔは、１６個のパリティディジットを有するＮ桁の符号化メッセージを４桁の並列出力として出力するように構成される。以下で詳細に説明するように、フィードバック回路２０５のパリティ生成モジュール２０７は各々、４桁パリティシフトレジスタ２０３／２０３′に格納される４つのパリティディジットを生成するように構成される。
【００３９】
４つのパリティシフトレジスタ２０３／２０３′は、１つのパリティシフトレジスタ２０３／２０３′の出力が（次のパリティシフトレジスタが存在する場合に）次のパリティシフトレジスタ２０３／２０３′の入力に連結されるように、順次連結されている。各４桁パリティシフトレジスタ２０３／２０３′は、各パリティ生成モジュール２０７に対応しており、各パリティ生成モジュール２０７は、対応するパリティシフトレジスタ２０３／２０３′の入力に連結される。加算器モジュールＡが、複数のソース（たとえば、１つのパリティ生成モジュールおよび先行するパリティシフトレジスタ）に連結された各パリティシフトレジスタ２０３／２０３′の入力に関連されてもよい。加算器モジュールＡは、パリティシフトレジスタ２０３／２０３′の入力で受信したデータを格納するために、データの合併を容易にする。４つの４桁パリティシフトレジスタ２０３／２０３′のうち最後のパリティシフトレジスタ２０３′の出力は、エンコーダモジュールの入力Ｄｉｎに連結されかつフィードバック回路２０５の各パリティ生成モジュール２０７の出力に連結される。最後のパリティシフトレジスタ２０３′の出力は、さらに、マルチプレクサを介してエンコーダモジュール２００の出力Ｄｏｕｔに連結される。追加の加算器モジュールＡは、最後のパリティシフトレジスタ２０３′の出力に関連されてもよい。追加の加算器モジュールＡは、最後のパリティシフトレジスタ２０３′の出力で受信したデータをフィードバック回路２０５のパリティ生成モジュール２０７に送信するために、データの合併を容易にする。同様に、エンコーダモジュール２００の入力Ｄｉｎは、マルチプレクサを介してエンコーダモジュール２００の出力Ｄｏｕｔに連結される。
【００４０】
フィードバック回路２０５は、スイッチＳをさらに含む。スイッチＳが閉合されると、フィードバック回路２０５が作動され、パリティ生成モジュール２０７が能動的にパリティディジットを生成する。スイッチＳが開放されると、フィードバック回路２０５の動作が停止され、パリティ生成モジュール２０７がパリティディジットを生成しなくなる。
【００４１】
図１の直列エンコーダモジュール１００は、それぞれ単一のディジットを格納するパリティシフトレジスタ１０３／１０３′を含む。これに対して、図２のエンコーダモジュール２００は、１回に４つのディジットを格納する４桁パリティシフトレジスタ２０３／２０３′を含む。同様に、図１のフィードバック回路１０５のパリティ生成モジュール１０７は、１回に単一のメッセージディジットを処理する。これに対して、図２のフィードバック回路のパリティ生成モジュールは、１回に４つのメッセージディジットを処理する。
【００４２】
非線形ブロックコードの並列符号化をサポートするために、パリティディジットを生成するための再帰式（５）は、Ｌ個のディジットの同時処理をサポートするように拡張することができる。修正された再帰式は、以下である。
【００４３】
【数６】
0005978382.tif 000007
【００４４】
【数７】
0005978382.tif 000008
【００４５】
これによって、フィードバック回路の各パリティ生成モジュールは、以下の擬似コードによって定義されたＰ×Ｌパリティ行列（ＰＭＡＴ）を用いて、１回にＬ個のパリティディジットを生成することができる。ＰＭＡＴの各Ｌ行は、１つのパリティ生成モジュールを形成する。
【００４６】
【数８】
0005978382.tif 000009
【００４７】
上記の再帰式（７）は、以下の擬似コードに示されたように実行することができる。
【００４８】
【数９】
0005978382.tif 000010
【００４９】
最初のＫ／Ｌ個のクロックサイクルにおいて、フィードバック回路２０５のスイッチＳは、閉合されている。Ｋ桁のメッセージの各４桁の部分は、エンコーダモジュール２００の入力Ｄｉｎで並列入力として受信され、最後のパリティシフトレジスタ２０３′の出力に転送され、その後フィードバック回路２０５の各パリティ生成モジュール２０７に転送される。フィードバック回路２０５の各パリティ生成モジュール２０７は、対応する４桁パリティシフトレジスタ２０３／２０３′に格納される４つのパリティディジット（たとえば、Ｌ個のパリティディジット）を生成するように構成されている。各パリティ生成モジュール２０７は、再帰式（７）、ＰＭＡＴ行列および上記の擬似コードに従って、Ｋ桁のメッセージの各Ｌ桁の部分に対しパリティディジットを生成するように構成されている。各クロックサイクルにおいて、各パリティ生成モジュール２０７によって生成されたパリティディジットは、各対応するパリティシフトレジスタ２０３／２０３′に格納されているデータと合併され、パリティディジットの最新セットを形成する。
【００５０】
また、最初のＫ／Ｌ個のクロックサイクルの各クロックサイクルにおいて、各パリティシフトレジスタ２０３，２０３′は、格納されたデータを（次のパリティシフトレジスタが存在する場合に）次のパリティシフトレジスタ２０３／２０３′に転送する。最後のパリティシフトレジスタ２０３′は、格納されたデータをフィードバック回路２０５の各パリティ生成モジュール２０７に送信する。各クロックサイクルにおいて、Ｋ桁のメッセージの新たなＬ桁の部分が受信されると、対応するパリティシフトレジスタ２０３／２０３′に格納される新たなパリティディジットがパリティ生成モジュール２０７に生成されるので、パリティシフトレジスタ２０３／２０３′に格納されたパリティディジットが更新される。上述したように、各クロックサイクルにおいて、新たに生成されたパリティディジットは、対応するパリティシフトレジスタ２０３／２０３′に格納されているデータと合併され、パリティディジットの最新セットを形成する。
【００５１】
同時に、最初のＫ／Ｌ個のクロックサイクルにおいて、エンコーダモジュール２００の入力Ｄｉｎで受信したＫ桁のメッセージの各４桁の部分は、マルチプレクサを介してエンコーダモジュール２００の出力Ｄｏｕｔに転送されるため、エンコーダモジュール２００により出力される最初のＫ個のディジットは、Ｋ桁のメッセージの４桁の並列出力となる。
【００５２】
（Ｋ／Ｌ）＋１〜Ｎ／Ｌ個のクロックサイクルにおいて、フィードバック回路のスイッチＳは、開放され、パリティシフトレジスタ２０３／２０３′に格納されている最終パリティディジット値が、エンコーダモジュール２００の出力Ｄｏｕｔに送信される。パリティシフトレジスタ２０３／２０３′に格納されている最終パリティディジット値は、各パリティシフトレジスタ２０３／２０３′に連結された制御信号ＣＥに応じて出力される。たとえば、（Ｋ／Ｌ）＋１クロックサイクルにおいて、最後のパリティシフトレジスタ２０３′に格納された４つのパリティディジットは、マルチプレクサを介してエンコーダモジュール２００の出力Ｄｏｕｔに送信されることができ、残りの各パリティシフトレジスタ２０３に格納された４つのパリティディジットは、各々の加算器モジュールを介して次のパリティシフトレジスタ２０３に送信されることもできる。この動作は、エンコーダモジュール２００がすべてのパリティディジットを出力するまで、第（Ｎ／Ｌ）個のクロックサイクルまで継続する。このようにして、エンコーダモジュール２００は、最初のＫ個のディジットがＫ桁のメッセージのディジットでありかつ最後のＰ個のディジットがパリティディジットであるＮ桁の符号化メッセージを出力する。
【００５３】
ＰＭＡＴ行列を用いたパリティディジットの生成は、ＸＯＲの和として効率よく計算することができる。単一のメッセージディジットがパリティ生成モジュール（たとえば、直列符号化）により処理されかつＧＦ（ｑｍ）ガロア域に定義された生成多項式ｇ（ｘ）がパリティディジットの生成に使用される場合、その行列の乗算は、最大ｍ−１個のＸＯＲが必要とする。Ｌ個のメッセージディジットがパリティ生成モジュールにより同時に処理されかつＧＦ（ｑｍ）ガロア域に定義された生成多項式ｇ（ｘ）がパリティディジットの生成に使用される場合、その行列の乗算は、最大ｍＬ−１個のＸＯＲが必要とする。
【００５４】
しかしながら、図２のエンコーダモジュール２００にとっては、各パリティ生成モジュール２０７が最後のパリティシフトレジスタ２０３′に連結された加算器モジュールを介してエンコーダモジュール２００の入力Ｄｉｎおよび最後のパリティシフトレジスタ２０３′の出力に連結されているため、フィードバック回路２０５の各パリティ生成モジュール２０７は、受信したＫ桁のメッセージの４桁の部分に対し行列乗算を実行するだけではなく、さらに最後のパリティシフトレジスタ２０３′の出力に対し行列乗算を実行する。したがって、各パリティ生成モジュール２０７を実行するために必要とされたＸＯＲは、ｍＬ−１個ではなく、２ｍＬ−１個となる。フィードバック回路は、Ｐおよびｍに応じて急速に成長するＰ＊ｍのような経路を含むことに留意することも重要である。したがって、各パリティ生成モジュールによるパリティディジットの生成は、Ｋ桁のメッセージをＮ桁の符号化メッセージに符号化することのできる速度を制限する臨界経路を形成し得る。また、図２の各パリティ生成モジュール２０７を実行するために必要とされた追加な計算ロジックは、ハードウェアリソースの需要増加をもたらすこともあり得る。
【００５５】
パリティ生成モジュールを実行するために必要とされた計算ロジックを減少するために、図２のエンコーダモジュール２００を修正することができる。図３は、いくつかの実施形態に従った、非バイナリ線形ブロックコードの並列符号化を実行するエンコーダモジュール３００を示す。図３のエンコーダモジュール３００は、パリティ生成モジュールを実行するために必要とされた計算ロジックを減少することによって、図２のエンコーダモジュール２００に必要とされた２ｍＬ−１個のＸＯＲに対して、パリティ生成モジュールを実行するために必要とされたＸＯＲがｍＬ−１個に減少される。
【００５６】
図２のエンコーダモジュールとよく似て、図３のエンコーダモジュール３００は、各クロックサイクルにおいて、Ｋ桁のメッセージの複数のディジット（Ｌ）を処理することができる。エンコーダモジュール３００は、Ｎ桁の符号化メッセージを形成するために、Ｋ桁のメッセージに対し任意Ｐ個のパリティディジットを生成するように構成されてもよい。Ｋ桁のメッセージは、Ｌ桁の並列入力として受信され、Ｎ桁の符号化メッセージは、Ｌ桁の並列出力として出力される。しかしながら、例示のため、図３のエンコーダモジュール３００は、Ｎ桁の符号化メッセージを形成するために、Ｋ桁のメッセージに対し１６個のパリティディジット（すなわち、Ｐ＝１６）を生成するように構成される。Ｋ桁のメッセージは、４桁の並列入力（すなわち、Ｌ＝４）として受信され、Ｎ桁の符号化メッセージは、４桁の並列出力として出力される。ＫがＬの整数倍でない場合には、メッセージの全体長さがＬの倍数になるように、メッセージの先頭にゼロを挿入する。
【００５７】
エンコーダモジュール３００は、入力Ｄｉｎと、出力Ｄｏｕｔと、４桁の入力シフトレジスタ３０１と、４つの４桁パリティシフトレジスタ３０３／３０３′と、４つのパリティ生成モジュール３０７を備えるフィードバック回路３０５とを含む。図３のエンコーダモジュール３００は、４つのパリティ生成モジュール３０７および４つの４桁パリティシフトレジスタ３０３／３０３′のみを含むが、エンコーダモジュール３００は、任意Ｐ／Ｌ個のＬ桁パリティシフトレジスタと、生成されるＰ個のパリティディジットに対応する任意Ｐ／Ｌ個のパリティ生成モジュールと、受信されたＬ桁の並列入力とを含んでもよい。
【００５８】
エンコーダモジュール３００の入力Ｄｉｎは、Ｋ桁のメッセージを４桁の並列入力として受信するように構成される。エンコーダモジュール３００の出力Ｄｏｕｔは、１６個のパリティディジットを有するＮ桁の符号化メッセージを４桁の並列出力として出力するように構成される。以下で詳細に説明するように、フィードバック回路３０５のパリティ生成モジュール３０７は各々、対応する４桁パリティシフトレジスタ３０３／３０３′に格納される４つのパリティディジットを１回に生成するように構成される。
【００５９】
入力シフトレジスタ３０１の入力は、エンコーダモジュール３００の入力Ｄｉｎに連結され、入力シフトレジスタ３０１の出力は、マルチプレクサを介して、エンコーダモジュール３００の出力Ｄｏｕｔに連結される。
【００６０】
４つの４桁パリティシフトレジスタ３０３／３０３′は、１つのパリティシフトレジスタ３０３／３０３′の出力が（次のパリティシフトレジスタが存在する場合に）次のパリティシフトレジスタ３０３／３０３′の入力に連結されるように、順次連結されている。各４桁パリティシフトレジスタ３０３／３０３′は、各パリティ生成モジュール３０７に対応しており、各パリティ生成モジュール３０７は、対応するパリティシフトレジスタ３０３／３０３′の入力に連結される。４つの４桁パリティシフトレジスタ３０３／３０３′のうち最後のパリティシフトレジスタ３０３′の入力は、エンコーダモジュール３００の入力Ｄｉｎに連結され、最後のパリティシフトレジスタ３０３′の出力は、フィードバック回路３０９の各パリティ生成モジュール３０７に連結される。加算器モジュールＡが、複数のソース（たとえば、パリティ生成モジュール３０７、先行するパリティシフトレジスタ３０３、およびエンコーダモジュール３００の入力Ｄｉｎ）に連結された各パリティシフトレジスタ３０３／３０３′の入力に関連されてもよい。加算器モジュールＡは、パリティシフトレジスタ３０３／３０３′の入力で受信したデータを格納するために、データの合併を容易にする。追加の加算器モジュールＡは、最後のパリティシフトレジスタ３０３′の出力に関連されてもよい。追加の加算器モジュールＡは、最後のパリティシフトレジスタ３０３′の出力で受信したデータをフィードバック回路３０５のパリティ生成モジュール３０７に送信するために、データの合併を容易にする。最後のパリティシフトレジスタ３０３′の出力は、さらに、マルチプレクサを介してエンコーダモジュール３００の出力Ｄｏｕｔに連結される。
【００６１】
フィードバック回路３０５は、スイッチＳをさらに含む。スイッチＳが閉合されると、フィードバック回路３０５が作動され、パリティ生成モジュール３０７が能動的にパリティディジットを生成する。スイッチＳが開放されると、フィードバック回路３０５の動作が停止され、パリティ生成モジュール３０７がパリティディジットを生成しなくなる。
【００６２】
最初のＫ／Ｌ個のクロックサイクルにおいて、フィードバック回路３０５のスイッチＳは、閉合されている。第１のクロックサイクルにおいて、Ｋ桁のメッセージの各４桁の部分は、エンコーダモジュール３００の入力Ｄｉｎで並列入力として受信され、最後のパリティシフトレジスタ３０３′の出力と入力シフトレジスタ３０１の入力との両方に転送される。第２のクロックサイクルにおいて、最後のパリティシフトレジスタ３０３′からのＫ桁のメッセージの４桁の部分は、フィードバック回路３０５のの各パリティ生成モジュール３０７に出力され、よって、各パリティ生成モジュール３０７は、対応するパリティシフトレジスタ３０３／３０３′に送信されかつ格納される４つのパリティディジットを生成する。各パリティ生成モジュール３０７は、以下の擬似コードに従って、Ｋ桁のメッセージの各ディジットに対しパリティディジットを生成するように構成されている。
【００６３】
【数１０】
0005978382.tif 000011
【００６４】
以下に示すように、上記の擬似コード用の式は、上記の式（４）を再整理することによって、式（８）を生成することができる。
【００６５】
【数１１】
0005978382.tif 000012
【００６６】
（４）に示された式は直列エンコーダモジュールに適用するが、当該式はエンコーダモジュールの並列実行にも適用できる。これは、エンコーダモジュールの入力で受信されたＫ桁のメッセージのＬ桁の部分が最後のパリティシフトレジスタの入力に入力されるべき、Ｋ桁のメッセージにゼロを加えるべきであることを示唆する。
【００６７】
また、第２のクロックサイクルにおいて、Ｋ桁のメッセージの４桁の部分は、入力シフトレジスタ３０１から、マルチプレクサを介してエンコーダモジュール３００の出力Ｄｏｕｔに出力される。この動作は、Ｋ桁のメッセージのすべての４桁の部分が受信されるまで継続する。
【００６８】
さらに、最初のＫ／Ｌ個のクロックサイクルの各クロックサイクルにおいて、各パリティシフトレジスタ３０３／３０３′は、格納されたデータを（次のパリティシフトレジスタが存在する場合に）次のパリティシフトレジスタ３０３／３０３′に転送する。最後のパリティシフトレジスタ３０３′は、格納されたデータをフィードバック回路の各パリティ生成モジュール３０７に送信する。各クロックサイクルにおいて、Ｋ桁のメッセージの新たなＬ桁の部分が受信されると、対応するパリティシフトレジスタ３０３／３０３′に格納される新たなパリティディジットがパリティ生成モジュール３０７に生成されるので、パリティシフトレジスタ３０３／３０３′に格納されたパリティディジットが更新される。各クロックサイクルにおいて、新たに生成されたパリティディジットは、対応するパリティシフトレジスタ３０３／３０３′に格納されているデータと合併され、パリティディジットの最新セットを形成する。
【００６９】
（Ｋ／Ｌ）＋１クロックサイクルにおいて、エンコーダモジュール３００の入力Ｄｉｎは、ゼロ入力を受信する。このゼロ入力によって、エンコーダモジュール３００がフィードバック回路３０５のスイッチＳを開放する。このクロックサイクルにおいて、入力シフトレジスタ３０１に格納されたＫ桁のメッセージの最後の４桁の部分は、エンコーダモジュールの出力Ｄｏｕｔに出力され、また、最後のパリティシフトレジスタ３０３′に格納されたＫ桁のメッセージの最後の４桁の部分は、フィードバック回路３０５の各パリティ生成モジュール３０７に出力され、フィードバック回路３０５のスイッチＳが開放される前に対応するパリティディジットを生成する。
【００７０】
（（Ｋ／Ｌ）＋２）クロックサイクル〜（（Ｎ／Ｌ）＋１）クロックサイクルの間に、フィードバック回路３０５のスイッチＳは、開放に維持され、パリティシフトレジスタ３０３／３０３′に格納された最終パリティディジット値は、エンコーダモジュール３００の出力Ｄｏｕｔに出力される。これらのパリティディジットは、パリティシフトレジスタ３０３／３０３′の各々に連結された制御信号ＣＥに応じて出力される。たとえば、（Ｋ／Ｌ）＋２クロックサイクルにおいて、最後のパリティシフトレジスタ３０３′に格納された４つのパリティディジットは、マルチプレクサを介してエンコーダモジュール３００の出力Ｄｏｕｔに送信されることができ、残りの各パリティシフトレジスタ３０３に格納された４つのパリティディジットは、次のパリティシフトレジスタ３０３／３０３′に送信されることもできる。
【００７１】
最後のパリティシフトレジスタ３０３′の出力をエンコーダモジュール３００の入力Ｄｉｎに連結するではなく、最後のパリティシフトレジスタ３０３′の入力をエンコーダモジュール３００の入力Ｄｉｎに連結することによって、各パリティ生成モジュール３０７によって実行される行列乗算の複雑さが低減される。行列乗算は、所定のクロック周期において受信されたＫ桁のメッセージの４桁の部分および最後のパリティシフトレジスタ３０３′の出力の両方に対して実行されるではなく、所定のクロック周期において最後のパリティシフトレジスタ３０３′の出力のみに対して実行される。したがって、各パリティ生成モジュール３０７を実行するために必要とされたＸＯＲは、２ｍＬ−１個ではなく、ｍＬ−１個のみになる。これによって、Ｋ桁のメッセージをＮ桁の符号化メッセージに符号化する速度を増加するとともに、ハードウェアリソースの需要を減少することもできる。
【００７２】
図３のエンコーダモジュール３００はさらに、ファンアウトを改善するために修正されてもよい。ファンアウトは、論理ゲート出力が接続されるゲート入力の数を指す。論理ゲート出力が接続されるゲート入力の数が減少されると、ファンアウトも減少される。図４は、いくつかの実施形態に従った、減少されたファンアウトを有する非線形ブロックコードの並列符号化を実施するためのエンコーダモジュールを示す。
【００７３】
図３のエンコーダモジュールとよく似て、図４のエンコーダモジュール４００は、各クロックサイクルにおいて、Ｋ桁のメッセージの複数のディジット（Ｌ）を処理することができる。エンコーダモジュール４００は、Ｎ桁の符号化メッセージを形成するために、Ｋ桁のメッセージに対し任意Ｐ個のパリティディジットを生成するように構成されてもよい。そのＫ桁のメッセージは、Ｌ桁の並列入力として受信され、そのＮ桁の符号化メッセージは、Ｌ桁の並列出力として出力される。しかしながら、例示のため、図４のエンコーダモジュール４００は、Ｎ桁の符号化メッセージを形成するために、Ｋ桁のメッセージに対し１６個のパリティディジット（すなわち、Ｐ＝１６）を生成するように構成される。そのＫ桁のメッセージは、４桁の並列入力（すなわち、Ｌ＝４）として受信され、そのＮ桁の符号化メッセージは、４桁の並列出力として出力される。ＫがＬの整数倍でない場合には、メッセージの全体長さがＬの倍数になるように、メッセージの先頭にゼロを挿入する。
【００７４】
エンコーダモジュール４００は、入力Ｄｉｎと、出力Ｄｏｕｔと、４段遅延器４０９と、４つの４桁パリティシフトレジスタ４０３／４０３′／４０３″と、４つのパリティ生成モジュール４０７を備えるフィードバック回路４０５とを含む。図４のエンコーダモジュール４００は、４つのパリティ生成モジュール４０７および４つの４桁パリティシフトレジスタ４０３／４０３′／４０３″のみを含むが、エンコーダモジュール４００は、任意Ｐ／Ｌ個のＬ桁パリティシフトレジスタと、生成されるＰ個のパリティ数字および受信されるＬ桁並列入力に対応する任意Ｐ／Ｌ個のパリティ生成モジュールとを含んでもよい。
【００７５】
エンコーダモジュール４００の入力Ｄｉｎは、Ｋ桁のメッセージを４桁の並列入力として受信するように構成される。エンコーダモジュール４００の出力Ｄｏｕｔは、１６個のパリティディジットを有するＮ桁の符号化メッセージを４桁の並列出力として出力するように構成される。以下で詳細に説明するように、フィードバック回路４０５のパリティ生成モジュール４０７は、４桁パリティシフトレジスタに格納されるパリティディジットを生成するように構成される。
【００７６】
４つの４桁パリティシフトレジスタ４０３／４０３′／４０３″は、１つのパリティシフトレジスタ４０３／４０３′／４０３″の出力が（次のパリティシフトレジスタが存在する場合に）次のパリティシフトレジスタ４０３／４０３′／４０３″の入力に連結されるように、順次連結されている。各４桁パリティシフトレジスタ４０３／４０３′／４０３″は、各パリティ生成モジュール４０７に対応しており、各パリティ生成モジュール４０７は、対応するパリティシフトレジスタ４０３／４０３′／４０３″の入力に連結される。最初のパリティシフトレジスタ４０３′の入力は、エンコーダモジュール４００の入力Ｄｉｎに連結されかつフィードバック回路の各パリティ生成モジュール４０７に連結される。加算器モジュールＡが、複数のソース（たとえば、パリティ生成モジュール４０７およびエンコーダモジュール４００の入力Ｄｉｎ）に連結された最初のパリティシフトレジスタの入力に関連されてもよい。加算器モジュールＡは、最初のパリティシフトレジスタ４０３′の入力で受信したデータを格納するために、データの合併を容易にする。
４つの４桁パリティシフトレジスタ４０３／４０３′／４０３″のうち最後のパリティシフトレジスタ４０３″の入力は、さらに、マルチプレクサを介してエンコーダモジュール４００の出力Ｄｏｕｔに連結される。
【００７７】
４段遅延器４０９は、エンコーダモジュール４００の入力Ｄｉｎに連結され、かつ、マルチプレクサを介してエンコーダモジュール４００の出力Ｄｏｕｔに連結されている。
【００７８】
フィードバック回路４０５は、４つのスイッチＳ１，Ｓ２，Ｓ３，Ｓ４をさらに含む。各スイッチＳ１，Ｓ２，Ｓ３，Ｓ４は、パリティ生成モジュール４０７に対応している。スイッチＳ１，Ｓ２，Ｓ３，Ｓ４が閉合されると、フィードバック回路４０５のパリティ生成モジュール４０７が作動され、パリティディジットを生成する。スイッチＳ１，Ｓ２，Ｓ３，Ｓ４が開放されると、フィードバック回路４０５のパリティ生成モジュール４０７の動作が停止され、パリティディジットを生成しなくなる。
【００７９】
最初のＫ／Ｌ個のクロックサイクルにおいて、フィードバック回路４０５の各スイッチＳ１，Ｓ２，Ｓ３，Ｓ４は、閉合されている。最初の（Ｋ／Ｌ）個のクロックサイクルの各クロックサイクルにおいて、Ｋ桁のメッセージの４桁の部分は、エンコーダモジュール４００の入力Ｄｉｎで受信され、最初のパリティシフトレジスタ４０３′の出力転送される。同時に、各パリティシフトレジスタ４０３／４０３′／４０３″は、格納されたデータを対応するパリティ生成モジュール４０７および（次のパリティシフトレジスタが存在する場合に）次のパリティシフトレジスタ４０３／４０３′／４０３″に転送する。各パリティ生成モジュール４０７は、最初のパリティシフトレジスタ４０３′にフィードバックされるパリティディジットを生成する。フィードバック回路４０５のパリティ生成モジュール４０７により生成された新たなパリティディジットが最初のパリティシフトレジスタ４０３′にフィードバックされるため、各パリティシフトレジスタ４０３／４０３′／４０３″に格納されたデータは、クロックサイクル毎に更新される。各パリティ生成モジュール４０７は、擬似コード（Ｌ＝４、Ｐ＝１６）に従って、Ｋ桁のメッセージの各ディジットに対しパリティディジットを生成するように構成されている。
【００８０】
【数１２】
0005978382.tif 000013
【００８１】
【数１３】
0005978382.tif 000014
【００８２】
パリティシフトレジスタ４０３／４０３′／４０３″に格納されたデータは、パリティディジットを形成する。擬似コードは、上記の微分式（８）と同様の方法で得られてもよい。任意所定のサイクルにおいて、すべてのＰ個のパリティディジットではなく、Ｌ個のパリティディジットのみが生成される。すべてのＰ個のパリティディジットは、Ｐ／Ｌ個のクロックサイクルに亘って生成される。
【００８３】
同時に、最初のＫ／Ｌ個のクロックサイクルの各クロックサイクルにおいて、エンコーダモジュール４００の入力Ｄｉｎで受信したＫ桁のメッセージの４桁の部分は、マルチプレクサを介してエンコーダモジュール４００の出力Ｄｏｕｔに転送される前に４段遅延器４０９を通るため、エンコーダモジュール４００により出力される最初のＫ個のディジットは、Ｋ桁のメッセージの４桁の並列出力となる。
【００８４】
（（Ｋ／Ｌ）＋１）〜（（Ｋ／Ｌ）＋（Ｐ／Ｌ））個のクロックサイクルの各クロックサイクルにおいて、エンコーダモジュール４００の入力Ｄｉｎは、ゼロ入力を受信する。各ゼロ入力によって、エンコーダモジュール４００は、フィードバック回路４０５のスイッチＳ１，Ｓ２，Ｓ３，Ｓ４を順次開放する。また、各クロックサイクルにおいて、各パリティシフトレジスタ４０３／４０３′は、格納されたデータを（対応するスイッチが閉合されている）パリティ生成モジュール４０７に送信する。対応するパリティ生成モジュール４０７は、最初のパリティシフトレジスタ４０３′に転送されるパリティディジットを生成する。この動作は、フィードバック回路４０５のスイッチＳ１，Ｓ２，Ｓ３，Ｓ４がすべて開放されるまで継続する。
【００８５】
（（Ｋ／Ｌ）＋（Ｐ／Ｌ））〜（（Ｎ／Ｌ）＋（Ｐ／Ｌ））個のクロックサイクルの各クロックサイクルにおいて、すべてのスイッチＳ１，Ｓ２，Ｓ３，Ｓ４は、開放に維持され、パリティシフトレジスタ４０３／４０３′／４０３″に格納されたパリティディジットは、パリティシフトレジスタ４０３／４０３′／４０３″の各々に連結された制御信号ＣＥに応じて出力される。たとえば、（Ｋ／Ｌ）＋（Ｐ／Ｌ）クロックサイクルにおいて、最後のパリティシフトレジスタ４０３″に格納された４つのパリティディジットは、マルチプレクサを介してエンコーダモジュール４００の出力Ｄｏｕｔに送信されることができ、残りの各パリティシフトレジスタ４０３／４０３′に格納された４つのパリティディジットは、次のパリティシフトレジスタ４０３′／４０３″に送信されることもできる。  
【００８６】
Ｋ桁のメッセージの各Ｌ桁の部分を各パリティ生成モジュール４０７に伝送するではなく、Ｋ桁のメッセージの各Ｌ桁の部分を最初のパリティシフトレジスタ４０３′に伝送することによって、エンコーダモジュール４００の入力Ｄｉｎの高ファンアウトが回避され得る。また、パリティ生成モジュール４０７が（Ｐ／Ｌ個の）異なるシフトレジスタ４０３／４０３′／４０３″から供給されるため、図２のエンコーダモジュール２００および図３のエンコーダモジュール３００に比べて、いずれかのシフトレジスタ４０３／４０３′／４０３″のファンアウトは、（Ｐ／Ｌ）の倍数で減少される。ファンアウトの減少は、高い最大周波数を達成することが可能にしながら、ルーティングアルゴリズムに与える過度負荷を低減する。
【００８７】
特定の実施形態が図示されおよび説明されてきたが、これらは請求される発明を限定する意図なく、当業者なら誰でも、本発明の精神および範囲を逸脱すること無く本発明にさまざまな変更や修正を加えることが可能であることは明らかである。したがって、明細書および図面は、限定的な意味ではなく例示的ものであるとみなされるべきである。請求される発明は、代替物、変形物および等価物を包含することが意図される。
【図１】
0005978382.tif 000015
【図２】
0005978382.tif 000016
【図３】
0005978382.tif 000017
【図４】
0005978382.tif 000018