JP2015512585A - 非バイナリ線形ブロックコードの並列符号化 - Google Patents

非バイナリ線形ブロックコードの並列符号化 Download PDF

Info

Publication number
JP2015512585A
JP2015512585A JP2015503189A JP2015503189A JP2015512585A JP 2015512585 A JP2015512585 A JP 2015512585A JP 2015503189 A JP2015503189 A JP 2015503189A JP 2015503189 A JP2015503189 A JP 2015503189A JP 2015512585 A JP2015512585 A JP 2015512585A
Authority
JP
Japan
Prior art keywords
parity
digit
shift register
encoder module
output
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2015503189A
Other languages
English (en)
Other versions
JP2015512585A5 (ja
JP5978382B2 (ja
Inventor
クリシュナン,カルヤナ
ターン,ハイ−ジョ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xilinx Inc
Original Assignee
Xilinx Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Xilinx Inc filed Critical Xilinx Inc
Publication of JP2015512585A publication Critical patent/JP2015512585A/ja
Publication of JP2015512585A5 publication Critical patent/JP2015512585A5/ja
Application granted granted Critical
Publication of JP5978382B2 publication Critical patent/JP5978382B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1131Scheduling of bit node or check node processing
    • H03M13/1134Full parallel processing, i.e. all bit nodes or check nodes are processed in parallel
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1131Scheduling of bit node or check node processing
    • H03M13/1137Partly parallel processing, i.e. sub-blocks or sub-groups of nodes being processed in parallel
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix
    • H03M13/1171Parity-check or generator matrices with non-binary elements, e.g. for non-binary LDPC codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/134Non-binary linear block codes not provided for otherwise
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1515Reed-Solomon codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/21Non-linear codes, e.g. m-bit data word to n-bit code word [mBnB] conversion with error detection or error correction
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6502Reduction of hardware complexity or efficient processing
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6561Parallelized implementations

Abstract

エンコーダモジュール(400)は、順次連結されたP/L個のパリティシフトレジスタ(403,403′,403″)を含む。パリティシフトレジスタ(403,403′,403″)のうち最初のパリティシフトレジスタ(403′)の入力が、エンコーダモジュール(400)の入力(Din)に連結されている。パリティシフトレジスタ(403,403′,403″)のうち最後のパリティシフトレジスタ(403″)の出力が、エンコーダモジュール(400)の出力(Dout)に連結されている。パリティシフトレジスタ(403,403′,403″)の各々は、L個のパリティディジットを格納するように構成されている。エンコーダモジュール(403)は、P/L個のパリティ生成モジュール(407)を備えるフィードバック回路(405)をさらに含む。パリティ生成モジュール(407)の各々は、スイッチ(S1,S2,S3,S4)によってパリティシフトレジスタ(403,403′,403″)のうち対応する1つのパリティシフトレジスタの出力に連結され、かつ、最初のパリティシフトレジスタ(403′)の入力に連結される。各パリティ生成モジュール(407)は、対応するスイッチ(S1,S2,S3,S4)が閉合されているときに、最初のパリティシフトレジスタ(403′)の入力に送信されるL個のパリティディジットを生成するように構成されている。

Description

著作権のある資料の権利保留
開示された本特許文書の一部は、著作権保護の対象となる資料を含んでいる。著作権所有者は、特許商標庁の特許ファイルまたは記録に記載される特許文書または特許開示のファクシミリ複製に異議ないが、それ以外の全ての著作権を保留する。
出願の分野
本願は、一般に、非バイナリ線形ブロックコードの符号化に関し、特に、非バイナリ線形ブロックコードの並列符号化を実施するためのシステムおよび方法に関する。
背景
線形前方誤り訂正(FEC)コードは、データの整合性および正確性が保護されなければならない通信および大容量記憶システムにおいて、広く応用されている。線形ブロックFECは、データディジットのうち1つのブロックを取得し、冗長ディジットを追加することによってこのデータブロックを保護する。典型的には、エンコーダは、これらの冗長ディジットを計算するが、デコーダーは、冗長ディジットを用いて受信したデータブロックの正確性を判断し、可能な場合、冗長ディジットを用いてデータの誤ったブロックを訂正する。
線形ブロックコードは、k桁のメッセージディジットがエンコーダモジュールによってn桁のディジットに符号化されたコードであり、(n,k)によって表記される。このように、エンコーダによって、n−k桁の冗長ディジットがk桁のメッセージディジット(たとえば、データブロック)に追加される。n−k桁の冗長ディジットは、パリティディジットとも呼ばれている。系統的符号化が実行される場合、n桁の符号化ディジットは、単にk桁のメッセージディジット(たとえば、データブロック)の後方にn−k桁パリティディジットが追加されたものである。
パリティディジットは、ガロア域(GF)において定義された生成多項式g(x)に基づき計算される。線形ブロックコードに対し、生成多項式g(x)は、二次ガロア域(GF(2))において定義される。非バイナリ線形ブロックコードに対し、生成多項式g(x)は、q次のガロア域(GF(q))において定義される。qは、素数である。リード・ソロモン(Reed Solomon(RS))エンコーダは、非バイナリ線形ブロックコードの分類に該当する。
10ギガビット毎秒のエンコーダに対し、達成可能な最大線形速度は、10.09ギガビット/秒である。1回に単一の入力を処理するシリアル入力を用いてこのような線形速度を達成する場合、1.109GHz(=11.09/m)で動作するクロッキングを必要とする。パリティディジットを計算する際に複雑なロジックが関与されるため、シリアル入力を用いてこのような高線形速度を維持することは、非常に困難である。
概要
いくつかの実施形態によれば、K桁のメッセージのL桁の部分を、P個のパリティディジットを有するN桁の符号化メッセージに並列符号化するためのエンコーダモジュールは、K桁のメッセージのL桁の部分を受信するように構成された入力と、N桁の符号化メッセージを出力するように構成された出力と含み、エンコーダモジュールの入力は、その出力に連結される。また、エンコーダモジュールは、順次連結されたP/L個のパリティシフトレジスタを含み、パリティシフトレジスタのうち最初のパリティシフトレジスタの入力が、エンコーダモジュールの入力に連結され、最後のパリティシフトレジスタの出力が、エンコーダモジュールの出力に連結され、パリティシフトレジスタの各々が、L個のパリティディジットを格納するように構成される。さらに、エンコーダモジュールは、P/L個のパリティ生成モジュールを備えるフィードバック回路を含み、パリティ生成モジュールの各々は、スイッチによって、パリティシフトレジスタのうち対応する1つのパリティシフトレジスタの入力に連結されかつ最初のパリティシフトレジスタの出力に連結され、パリティ生成モジュールの各々は、対応するスイッチが閉合されているときに、最初のパリティシフトレジスタの入力に転送されるL個のパリティディジットを生成するように構成される。
他の実施形態によれば、K桁のメッセージのL桁の部分を、P個のパリティディジットを有するN桁の符号化メッセージに並列符号化するためのエンコーダモジュールは、K桁のメッセージのL桁の部分を受信するように構成された入力と、N桁の符号化メッセージを出力するように構成された出力と含み、エンコーダモジュールの入力は、その出力に連結される。また、エンコーダモジュールは、入力および出力に連結されたP/L段の遅延器と、順次連結されたP/L個のパリティシフトレジスタとを含み、パリティシフトレジスタのうち最初のパリティシフトレジスタの入力が、エンコーダモジュールの入力に連結され、パリティシフトレジスタのうち最後のパリティシフトレジスタの出力が、エンコーダモジュールの出力に連結され、パリティシフトレジスタの各々が、L個のパリティディジットを格納するように構成される。さらに、エンコーダモジュールは、P/L個のパリティ生成モジュールを備えるフィードバック回路を含み、パリティ生成モジュールの各々は、スイッチによって、パリティシフトレジスタのうち対応する1つのパリティシフトレジスタの入力に連結されかつ最初のパリティシフトレジスタの出力に連結され、パリティ生成モジュールの各々は、対応するスイッチが閉合されているときに、最初のパリティシフトレジスタの入力に転送されるL個のパリティディジットを生成するように構成される。
他の局面および特徴ならびにさらなる局面および特徴は、以下の実施形態の詳細な説明を読めば明白になるであろう。
図面は、実施形態の設計および効用を示している。図面において、同様の要素が共通の参照番号を付して参照される。これらの図面は、必ずしも一定の縮尺で描かれていない。上記のおよび他の利点および目的の達成をより明白に理解するために、添付の図面に例示されている実施形態のより具体的な説明を提供する。これらの図面は、代表的な実施形態のみを示すものであり、特許請求の範囲を限定するものとみなされるべきではない。
非バイナリ線形ブロックコードを直列符号化するための直列エンコーダモジュールを示す図である。 非バイナリ線形ブロックコードの並列符号化を実行するためのエンコーダモジュールを示す図である。 いくつかの実施形態に従った、非バイナリ線形ブロックコードの並列符号化を実行するためのエンコーダモジュールを示す図である。 いくつかの実施形態に従った、減少されたファンアウトを有する非線形ブロックコードの並列符号化を実行するためのエンコーダモジュールを示す図である。
詳細な説明
以下、図面を参照してさまざまな実施形態を説明する。注意すべきことは、図面が縮尺通りに描かれておらず、類似構造の要素または機能が図面の全体において同様の参照番号によって示されることである。なお、図面は、実施形態の説明を容易にすることを意図していることに注意すべきである。図面は、本発明の網羅的な説明または本発明の特許請求の範囲に対する限定を意図するものではない。また、図示された実施形態は、示された局面または利点をすべて備える必要がない。特定の実施形態に関連して説明した局面または利点は、必ずしもその実施形態に限定されるものではなく、図示されていなくでも、任意の他の実施形態に実施することができる。また、本明細書において、「いくつかの実施形態」または「他の実施形態」を言及する場合、実施形態に関連して説明された特定の特徴、構造、材料または特性が少なくとも1つの実施形態に含まれることを意味する。したがって、本明細書において、さまざまな箇所に現れる「いくつかの実施形態において」または「他の実施形態において」などの表現は、必ずしも同じ実施形態を指すではない。
線形ブロックコードは、k桁のメッセージディジットがエンコーダモジュールによってn桁のディジットに符号化されたコードであり、(n,k)によって表記される。このように、エンコーダによって、n−k桁の冗長ディジットがk桁のメッセージディジット(たとえば、データブロック)に追加される。n−k桁の冗長ディジットは、パリティディジットとも呼ばれている。系統的符号化が実行される場合、n桁の符号化ディジットは、単にk桁のメッセージディジット(たとえば、データブロック)の後方にn−k桁パリティディジットが追加されたものである。パリティディジットは、ガロア域(GF)において定義された生成多項式g(x)に基づき計算される。線形ブロックコードについて、生成多項式g(x)は、二次ガロア域(GF(2))において定義される。非バイナリ線形ブロックコードについて、生成多項式g(x)は、q次のガロア域(GF(q))において定義される。qは、素数である。
例示のために、以下は、210次のガロア域(GF(210))において定義された生成多項式に関連して説明する。しかしながら、重要なのは、非線形ブロックコードを並列符号化するための方法およびシステムは、任意次数のガロア域において定義された生成多項式を包含するように拡張されてもよいということに留意すべきである。
符号化されるK桁のメッセージは、次のメッセージ多項式で表される。mN−Kは、2次のガロア域における桁数に対応する。
Figure 2015512585
Nは、符号化されたメッセージの長さを表し、Pは、パリティディジットの長さ(P=N−K)を表す。生成多項式は、2次のガロア域において定義されたg(x)で表される。
n桁の符号化メッセージは、以下の多項式で表される。式中、p(x)の係数は、パリティディジットであり、c(x)の係数は、最終に符号化されたディジットである。
Figure 2015512585
( )g(x)は、多項式g(x)に対するモジュロ演算を示す。
p(x)の計算は、以下のように展開することができる。
Figure 2015512585
[a(x)b(x)]g(x)=([a(x)]g(x)[b(x)]g(x))g(x)のため、式(4)を以下のような再帰式に書き換えることができる。
Figure 2015512585
以下の擬似コードで示されるように、上記の再帰式を実行することができる。
Figure 2015512585
説明したアルゴリズムは、図1に示された直列エンコーダモジュールを用いて実行することができる。図1は、非バイナリ線形ブロックコードを直列符号化するための直列エンコーダモジュール100を示す。直列エンコーダモジュール100は、K桁のメッセージのために、任意P個のパリティディジットを生成するように構成することができる。例示のために、図1の直列エンコーダモジュール100は、K桁のメッセージのために、4個のパリティディジットを生成するように構成されている。
直列エンコーダモジュール100は、入力Dinと、出力Doutと、4つの1桁パリティシフトレジスタ103/103′と、4つのパリティ生成モジュール107を備えるフィードバック回路105とを含む。図1の直列エンコーダモジュール100は、4つのパリティ生成モジュール(たとえば、ガロア域乗算器)107および4つのパリティシフトレジスタ103/103′のみを含むが、直列エンコーダモジュールとしては、任意P個のパリティシフトレジスタと、生成されるP個のパリティディジットに対応する任意P個のパリティ生成モジュールとを含んでもよい。
エンコーダモジュール100の入力Dinは、K桁のメッセージをシリアル入力として受信するように構成される。直列エンコーダモジュール100の出力Doutは、P個のパリティディジットを有するN桁の符号化メッセージを出力するように構成される。以下で詳細に説明するように、フィードバック回路105のパリティ生成モジュール107は、パリティシフトレジスタ103/103′に格納されるパリティディジットを生成するように構成される。
4つのパリティシフトレジスタ103/103′は、1つのパリティシフトレジスタ103/103′の出力が(次のパリティシフトレジスタが存在する場合に)次のパリティシフトレジスタ103/103′の入力に連結されるように、順次連結されている。各パリティシフトレジスタ103/103′は、各パリティ生成モジュール107に対応しており、各パリティ生成モジュール107は、対応するパリティシフトレジスタ103/103′の入力に連結される。加算器モジュールAが、複数のソース(たとえば、1つのパリティ生成モジュールおよび先行するパリティシフトレジスタ)に連結された各パリティシフトレジスタ103/103′に関連されてもよい。加算器モジュールAは、パリティシフトレジスタ103/103′の入力で受信したデータを格納するために、データの合併を容易にする。4つのパリティシフトレジスタ103/103′のうち最後のパリティシフトレジスタ103′の出力は、エンコーダモジュール100の入力Dinに連結されかつフィードバック回路105の各パリティ生成モジュール107の出力に連結される。最後のパリティシフトレジスタ103′の出力はさらに、マルチプレクサを介してエンコーダモジュール100の出力Doutに連結される。追加的な加算器モジュールAは、最後のパリティシフトレジスタ103′の出力に関連されてもよい。この追加の加算器モジュールAは、最後のパリティシフトレジスタ103′の出力で受信したデータをフィードバック回路105のパリティ生成モジュール107に送信するために、データの合併を容易にする。同様に、エンコーダモジュール100の入力Dinは、マルチプレクサを介してエンコーダモジュール100の出力Doutに連結される。
フィードバック回路105は、スイッチSをさらに含む。スイッチSが閉合されると、フィードバック回路105が作動され、パリティ生成モジュール107が能動的にパリティディジットを生成する。スイッチSが開放されると、フィードバック回路105の動作が停止され、パリティ生成モジュール107がパリティディジットを生成しなくなる。
最初のK個(たとえば、メッセージディジットの数)クロックサイクルにおいて、フィードバック回路105のスイッチSは、閉合されている。最初のK個クロックサイクルの各クロックサイクルにおいて、K桁のメッセージのディジットは、エンコーダモジュール100の入力Dinで直列入力として受信され、最後のパリティシフトレジスタ103′の出力に転送され、その後フィードバック回路105の各パリティ生成モジュール107に転送される。フィードバック回路105の各パリティ生成モジュール107は、対応するパリティシフトレジスタ103,103′に格納される単一のパリティディジットを生成するように構成されている。各パリティ生成モジュール107は、再帰式(5)および上記の擬似コードに従って、K桁のメッセージの各ディジットのために、パリティディジットを生成するように構成されている。各クロックサイクルにおいて、各パリティ生成モジュール107によって生成されたパリティディジットは、各対応するパリティシフトレジスタ103/103′に格納されているデータと合併され、パリティディジットの最新セットを形成する。
また、最初のK個クロックサイクルの各クロックサイクルにおいて、各パリティシフトレジスタ103,103′は、(次のパリティシフトレジスタが存在する場合に)次のパリティシフトレジスタに格納されたデータを送信する。最後のパリティシフトレジスタ103′は、格納されたデータをフィードバック回路105の各パリティ生成モジュール107に送信する。各クロックサイクルにおいて、K桁のメッセージの新たなディジットが受信されると、パリティシフトレジスタ103/103′に格納される新たなパリティディジットがパリティ生成モジュール107により生成されるので、パリティシフトレジスタ103/103′に格納されたパリティディジットが更新される。上述したように、各クロックサイクルにおいて、新たに生成されたパリティディジットは、対応するパリティシフトレジスタ103/103′に格納されているデータと合併され、パリティディジットの最新セットを形成する。
同時に、最初のK個クロックサイクルにおいて、エンコーダモジュール100の入力Dinで受信したK桁のメッセージの各ディジットは、マルチプレクサを介してエンコーダモジュール100の出力Doutに転送され、よってエンコーダモジュール100により出力される最初のK個のディジットがK桁のメッセージとなる。
K+1〜N個のクロックサイクルにおいて、フィードバック回路のスイッチSは、開放され、パリティシフトレジスタ103/103′に格納されている最終パリティディジット値が、エンコーダモジュール100の出力Doutに送信される。パリティシフトレジスタ103/103′に格納されている最終パリティディジット値は、各パリティシフトレジスタ103/103′に連結された制御信号CEに応じて出力される。たとえば、K+1クロックサイクルにおいて、最後のパリティシフトレジスタ103′に格納されたパリティディジットは、マルチプレクサを介してエンコーダモジュール100の出力Doutに送信されることができ、残りの各パリティシフトレジスタ103に格納されたパリティディジットは、各々の加算器モジュールを介して次のパリティシフトレジスタ103に送信されることもできる。この動作は、エンコーダモジュール100がすべてのパリティディジットを出力するまで、第N個のクロックサイクルまで継続する。このようにして、エンコーダモジュール100は、最初のK個のディジットがK桁のメッセージディジットでありかつ最後のP個のディジットがパリティディジットであるN桁の符号化メッセージを出力する。
しかしながら、図1のエンコーダモジュールが動作してK桁のメッセージをP個のパリティディジットを有するN桁の符号化メッセージに符号化するときに、いくつかの欠点がある。エンコーダモジュールが直列動作するので、高線形速度を達成するために、エンコーダモジュールが非常に高い周波数で動作しなければならない。しかしながら、パリティ生成モジュールの構成に関連するロジックが複雑であるため、符号化処理にさまざまなエラーを導入することなくおよび追加のコストなくでは、このような高い周波数を達成することができない。
非バイナリ線形ブロックコードの並列符号化を実行するエンコーダモジュールの1つの提案は、図2に示されている。図1の直列エンコーダモジュール100は、各クロックサイクルにおいて、K桁のメッセージの単一のディジットしか処理できない。これに対し、図2のエンコーダモジュール200は、各クロックサイクルにおいて、複数のディジット(L)を処理することができる。エンコーダモジュール200は、N桁の符号化メッセージを形成するために、K桁のメッセージに対し任意P個のパリティディジットを生成するように構成されてもよい。そのK桁のメッセージは、L桁の並列入力として受信され、そのN桁の符号化メッセージは、L桁の並列出力として出力される。しかしながら、例示のため、図2のエンコーダモジュール200は、N桁の符号化メッセージを形成するために、K桁のメッセージに対し16個のパリティディジット(すなわち、P=16)を生成するように構成されている。そのK桁のメッセージは、4桁の並列入力(すなわち、L=4)として受信され、そのN桁の符号化メッセージは、4桁の並列出力として出力される。KがLの整数倍でない場合には、メッセージの全体長さがLの倍数になるように、メッセージの先頭にゼロを挿入する。
エンコーダモジュール200は、入力Dinと、出力Doutと、4つの4桁パリティシフトレジスタ203/203′と、4つのパリティ生成モジュール207を備えるフィードバック回路205とを含む。図2のエンコーダモジュール200は、4つのパリティ生成モジュール207および4つの4桁パリティシフトレジスタ203/203′のみを含むが、エンコーダモジュール200は、任意P/L個のL桁パリティシフトレジスタと、生成されるP個のパリティディジットに対応する任意P/L個のパリティ生成モジュールと、受信されるL桁の並列入力とを含んでもよい。
エンコーダモジュール200の入力Dinは、K桁のメッセージを4桁の並列入力として受信するように構成される。エンコーダモジュール200の出力Doutは、16個のパリティディジットを有するN桁の符号化メッセージを4桁の並列出力として出力するように構成される。以下で詳細に説明するように、フィードバック回路205のパリティ生成モジュール207は各々、4桁パリティシフトレジスタ203/203′に格納される4つのパリティディジットを生成するように構成される。
4つのパリティシフトレジスタ203/203′は、1つのパリティシフトレジスタ203/203′の出力が(次のパリティシフトレジスタが存在する場合に)次のパリティシフトレジスタ203/203′の入力に連結されるように、順次連結されている。各4桁パリティシフトレジスタ203/203′は、各パリティ生成モジュール207に対応しており、各パリティ生成モジュール207は、対応するパリティシフトレジスタ203/203′の入力に連結される。加算器モジュールAが、複数のソース(たとえば、1つのパリティ生成モジュールおよび先行するパリティシフトレジスタ)に連結された各パリティシフトレジスタ203/203′の入力に関連されてもよい。加算器モジュールAは、パリティシフトレジスタ203/203′の入力で受信したデータを格納するために、データの合併を容易にする。4つの4桁パリティシフトレジスタ203/203′のうち最後のパリティシフトレジスタ203′の出力は、エンコーダモジュールの入力Dinに連結されかつフィードバック回路209の各パリティ生成モジュール207の出力に連結される。最後のパリティシフトレジスタ203′の出力は、さらに、マルチプレクサを介してエンコーダモジュール200の出力Doutに連結される。追加の加算器モジュールAは、最後のパリティシフトレジスタ203′の出力に関連されてもよい。追加の加算器モジュールAは、最後のパリティシフトレジスタ203′の出力で受信したデータをフィードバック回路205のパリティ生成モジュール207に送信するために、データの合併を容易にする。同様に、エンコーダモジュール200の入力Dinは、マルチプレクサを介してエンコーダモジュール200の出力Doutに連結される。
フィードバック回路205は、スイッチSをさらに含む。スイッチSが閉合されると、フィードバック回路205が作動され、パリティ生成モジュール207が能動的にパリティディジットを生成する。スイッチSが開放されると、フィードバック回路205の動作が停止され、パリティ生成モジュール207がパリティディジットを生成しなくなる。
図1の直列エンコーダモジュール100は、それぞれ単一のディジットを格納するパリティシフトレジスタ103/103′を含む。これに対して、図2のエンコーダモジュール200は、1回に4つのディジットを格納する4桁パリティシフトレジスタ203/203′を含む。同様に、図1のフィードバック回路205のパリティ生成モジュール207は、1回に単一のメッセージディジットを処理する。これに対して、図2のフィードバック回路のパリティ生成モジュールは、1回に4つのメッセージディジットを処理する。
非線形ブロックコードの並列符号化をサポートするために、パリティディジットを生成するための再帰式(5)は、L個のディジットの同時処理をサポートするように拡張することができる。修正された再帰式は、以下である。
Figure 2015512585
Figure 2015512585
これによって、フィードバック回路の各パリティ生成モジュールは、以下の擬似コードによって定義されたP×Lパリティ行列(PMAT)を用いて、1回にL個のパリティディジットを生成することができる。PMATの各L行は、1つのパリティ生成モジュールを形成する。
Figure 2015512585
上記の再帰式(7)は、以下の擬似コードに示されたように実行することができる。
Figure 2015512585
最初のK/L個のクロックサイクルにおいて、フィードバック回路205のスイッチSは、閉合されている。K桁のメッセージの各4桁の部分は、エンコーダモジュール200の入力Dinで並列入力として受信され、最後のパリティシフトレジスタ203′の出力に転送され、その後フィードバック回路205の各パリティ生成モジュール207に転送される。フィードバック回路205の各パリティ生成モジュール207は、対応する4桁パリティシフトレジスタ203/203′に格納される4つのパリティディジット(たとえば、L個のパリティディジット)を生成するように構成されている。各パリティ生成モジュール207は、再帰式(7)、PMAT行列および上記の擬似コードに従って、K桁のメッセージの各L桁の部分に対しパリティディジットを生成するように構成されている。各クロックサイクルにおいて、各パリティ生成モジュール207によって生成されたパリティディジットは、各対応するパリティシフトレジスタ203/203′に格納されているデータと合併され、パリティディジットの最新セットを形成する。
また、最初のK/L個のクロックサイクルの各クロックサイクルにおいて、各パリティシフトレジスタ203,203′は、格納されたデータを(次のパリティシフトレジスタが存在する場合に)次のパリティシフトレジスタ203/203′に転送する。最後のパリティシフトレジスタ203′は、格納されたデータをフィードバック回路205の各パリティ生成モジュール207に送信する。各クロックサイクルにおいて、K桁のメッセージの新たなL桁の部分が受信されると、対応するパリティシフトレジスタ203/203′に格納される新たなパリティディジットがパリティ生成モジュール207に生成されるので、パリティシフトレジスタ203/203′に格納されたパリティディジットが更新される。上述したように、各クロックサイクルにおいて、新たに生成されたパリティディジットは、対応するパリティシフトレジスタ203/203′に格納されているデータと合併され、パリティディジットの最新セットを形成する。
同時に、最初のK/L個のクロックサイクルにおいて、エンコーダモジュール200の入力Dinで受信したK桁のメッセージの各4桁の部分は、マルチプレクサを介してエンコーダモジュール200の出力Doutに転送されるため、エンコーダモジュール200により出力される最初のK個のディジットは、K桁のメッセージの4桁の並列出力となる。
(K/L)+1〜N/L個のクロックサイクルにおいて、フィードバック回路のスイッチSは、開放され、パリティシフトレジスタ203/203′に格納されている最終パリティディジット値が、エンコーダモジュール200の出力Doutに送信される。パリティシフトレジスタ203/203′に格納されている最終パリティディジット値は、各パリティシフトレジスタ203/203′に連結された制御信号CEに応じて出力される。たとえば、(K/L)+1クロックサイクルにおいて、最後のパリティシフトレジスタ203′に格納された4つのパリティディジットは、マルチプレクサを介してエンコーダモジュール200の出力Doutに送信されることができ、残りの各パリティシフトレジスタ203に格納された4つのパリティディジットは、各々の加算器モジュールを介して次のパリティシフトレジスタ203に送信されることもできる。この動作は、エンコーダモジュール200がすべてのパリティディジットを出力するまで、第(N/L)個のクロックサイクルまで継続する。このようにして、エンコーダモジュール200は、最初のK個のディジットがK桁のメッセージのディジットでありかつ最後のP個のディジットがパリティディジットであるN桁の符号化メッセージを出力する。
PMAT行列を用いたパリティディジットの生成は、XORの和として効率よく計算することができる。単一のメッセージディジットがパリティ生成モジュール(たとえば、直列符号化)により処理されかつGF(q)ガロア域に定義された生成多項式g(x)がパリティディジットの生成に使用される場合、その行列の乗算は、最大m−1個のXORが必要とする。L個のメッセージディジットがパリティ生成モジュールにより同時に処理されかつGF(q)ガロア域に定義された生成多項式g(x)がパリティディジットの生成に使用される場合、その行列の乗算は、最大mL−1個のXORが必要とする。
しかしながら、図2のエンコーダモジュール200にとっては、各パリティ生成モジュール207が最後のパリティシフトレジスタ203′に連結された加算器モジュールを介してエンコーダモジュール200の入力Dinおよび最後のパリティシフトレジスタ203′の出力に連結されているため、フィードバック回路205の各パリティ生成モジュール207は、受信したK桁のメッセージの4桁の部分に対し行列乗算を実行するだけではなく、さらに最後のパリティシフトレジスタ203′の出力に対し行列乗算を実行する。したがって、各パリティ生成モジュール207を実行するために必要とされたXORは、mL−1個ではなく、2mL−1個となる。フィードバック回路は、Pおよびmに応じて急速に成長するP*mのような経路を含むことに留意することも重要である。したがって、各パリティ生成モジュールによるパリティディジットの生成は、K桁のメッセージをN桁の符号化メッセージに符号化することのできる速度を制限する臨界経路を形成し得る。また、図2の各パリティ生成モジュール207を実行するために必要とされた追加な計算ロジックは、ハードウェアリソースの需要増加をもたらすこともあり得る。
パリティ生成モジュールを実行するために必要とされた計算ロジックを減少するために、図2のエンコーダモジュール200を修正することができる。図3は、いくつかの実施形態に従った、非バイナリ線形ブロックコードの並列符号化を実行するエンコーダモジュール300を示す。図3のエンコーダモジュール300は、パリティ生成モジュールを実行するために必要とされた計算ロジックを減少することによって、図2のエンコーダモジュール200に必要とされた2mL−1個のXORに対して、パリティ生成モジュールを実行するために必要とされたXORがmL−1個に減少される。
図2のエンコーダモジュールとよく似て、図3のエンコーダモジュール300は、各クロックサイクルにおいて、K桁のメッセージの複数のディジット(L)を処理することができる。エンコーダモジュール300は、N桁の符号化メッセージを形成するために、K桁のメッセージに対し任意P個のパリティディジットを生成するように構成されてもよい。K桁のメッセージは、L桁の並列入力として受信され、N桁の符号化メッセージは、L桁の並列出力として出力される。しかしながら、例示のため、図3のエンコーダモジュール300は、N桁の符号化メッセージを形成するために、K桁のメッセージに対し16個のパリティディジット(すなわち、P=16)を生成するように構成される。K桁のメッセージは、4桁の並列入力(すなわち、L=4)として受信され、N桁の符号化メッセージは、4桁の並列出力として出力される。KがLの整数倍でない場合には、メッセージの全体長さがLの倍数になるように、メッセージの先頭にゼロを挿入する。
エンコーダモジュール300は、入力Dinと、出力Doutと、4桁の入力シフトレジスタ301と、4つの4桁パリティシフトレジスタ303/303′と、4つのパリティ生成モジュール307を備えるフィードバック回路305とを含む。図3のエンコーダモジュール300は、4つのパリティ生成モジュール307および4つの4桁パリティシフトレジスタ303/303′のみを含むが、エンコーダモジュール300は、任意P/L個のL桁パリティシフトレジスタと、生成されるP個のパリティディジットに対応する任意P/L個のパリティ生成モジュールと、受信されたL桁の並列入力とを含んでもよい。
エンコーダモジュール300の入力Dinは、K桁のメッセージを4桁の並列入力として受信するように構成される。エンコーダモジュール300の出力Doutは、16個のパリティディジットを有するN桁の符号化メッセージを4桁の並列出力として出力するように構成される。以下で詳細に説明するように、フィードバック回路305のパリティ生成モジュール307は各々、対応する4桁パリティシフトレジスタ303/303′に格納される4つのパリティディジットを1回に生成するように構成される。
入力シフトレジスタ301の入力は、エンコーダモジュール300の入力Dinに連結され、入力シフトレジスタ301の出力は、マルチプレクサを介して、エンコーダモジュール300の出力Doutに連結される。
4つの4桁パリティシフトレジスタ303/303′は、1つのパリティシフトレジスタ303/303′の出力が(次のパリティシフトレジスタが存在する場合に)次のパリティシフトレジスタ303/303′の入力に連結されるように、順次連結されている。各4桁パリティシフトレジスタ303/303′は、各パリティ生成モジュール307に対応しており、各パリティ生成モジュール307は、対応するパリティシフトレジスタ303/303′の入力に連結される。4つの4桁パリティシフトレジスタ303/303′のうち最後のパリティシフトレジスタ303′の入力は、エンコーダモジュール300の入力Dinに連結され、最後のパリティシフトレジスタ303′の出力は、フィードバック回路309の各パリティ生成モジュール307に連結される。加算器モジュールAが、複数のソース(たとえば、パリティ生成モジュール307、先行するパリティシフトレジスタ303、およびエンコーダモジュール300の入力Din)に連結された各パリティシフトレジスタ303/303′の入力に関連されてもよい。加算器モジュールAは、パリティシフトレジスタ303/303′の入力で受信したデータを格納するために、データの合併を容易にする。追加の加算器モジュールAは、最後のパリティシフトレジスタ303′の出力に関連されてもよい。追加の加算器モジュールAは、最後のパリティシフトレジスタ303′の出力で受信したデータをフィードバック回路305のパリティ生成モジュール307に送信するために、データの合併を容易にする。最後のパリティシフトレジスタ303′の出力は、さらに、マルチプレクサを介してエンコーダモジュール300の出力Doutに連結される。
フィードバック回路305は、スイッチSをさらに含む。スイッチSが閉合されると、フィードバック回路305が作動され、パリティ生成モジュール307が能動的にパリティディジットを生成する。スイッチSが開放されると、フィードバック回路305の動作が停止され、パリティ生成モジュール307がパリティディジットを生成しなくなる。
最初のK/L個のクロックサイクルにおいて、フィードバック回路305のスイッチSは、閉合されている。第1のクロックサイクルにおいて、K桁のメッセージの各4桁の部分は、エンコーダモジュール300の入力Dinで並列入力として受信され、最後のパリティシフトレジスタ303′の出力と入力シフトレジスタ301の入力との両方に転送される。第2のクロックサイクルにおいて、最後のパリティシフトレジスタ303′からのK桁のメッセージの4桁の部分は、フィードバック回路305のの各パリティ生成モジュール307に出力され、よって、各パリティ生成モジュール307は、対応するパリティシフトレジスタ303/303′に送信されかつ格納される4つのパリティディジットを生成する。各パリティ生成モジュール307は、以下の擬似コードに従って、K桁のメッセージの各ディジットに対しパリティディジットを生成するように構成されている。
Figure 2015512585
以下に示すように、上記の擬似コード用の式は、上記の式(4)を再整理することによって、式(8)を生成することができる。
Figure 2015512585
(4)に示された式は直列エンコーダモジュールに適用するが、当該式はエンコーダモジュールの並列実行にも適用できる。これは、エンコーダモジュールの入力で受信されたK桁のメッセージのL桁の部分が最後のパリティシフトレジスタの入力に入力されるべき、K桁のメッセージにゼロを加えるべきであることを示唆する。
また、第2のクロックサイクルにおいて、K桁のメッセージの4桁の部分は、入力シフトレジスタ301から、マルチプレクサを介してエンコーダモジュール300の出力Doutに出力される。この動作は、K桁のメッセージのすべての4桁の部分が受信されるまで継続する。
さらに、最初のK/L個のクロックサイクルの各クロックサイクルにおいて、各パリティシフトレジスタ303/303′は、格納されたデータを(次のパリティシフトレジスタが存在する場合に)次のパリティシフトレジスタ303/303′に転送する。最後のパリティシフトレジスタ303′は、格納されたデータをフィードバック回路の各パリティ生成モジュール307に送信する。各クロックサイクルにおいて、K桁のメッセージの新たなL桁の部分が受信されると、対応するパリティシフトレジスタ303/303′に格納される新たなパリティディジットがパリティ生成モジュール307に生成されるので、パリティシフトレジスタ303/303′に格納されたパリティディジットが更新される。各クロックサイクルにおいて、新たに生成されたパリティディジットは、対応するパリティシフトレジスタ303/303′に格納されているデータと合併され、パリティディジットの最新セットを形成する。
(K/L)+1クロックサイクルにおいて、エンコーダモジュール300の入力Dinは、ゼロ入力を受信する。このゼロ入力によって、エンコーダモジュール300がフィードバック回路305のスイッチSを開放する。このクロックサイクルにおいて、入力シフトレジスタ301に格納されたK桁のメッセージの最後の4桁の部分は、エンコーダモジュールの出力Doutに出力され、また、最後のパリティシフトレジスタ303′に格納されたK桁のメッセージの最後の4桁の部分は、フィードバック回路305の各パリティ生成モジュール307に出力され、フィードバック回路305のスイッチSが開放される前に対応するパリティディジットを生成する。
((K/L)+2)クロックサイクル〜((N/L)+1)クロックサイクルの間に、フィードバック回路305のスイッチSは、開放に維持され、パリティシフトレジスタ303/303′に格納された最終パリティディジット値は、エンコーダモジュール300の出力Doutに出力される。これらのパリティディジットは、パリティシフトレジスタ303/303′の各々に連結された制御信号CEに応じて出力される。たとえば、(K/L)+2クロックサイクルにおいて、最後のパリティシフトレジスタ303′に格納された4つのパリティディジットは、マルチプレクサを介してエンコーダモジュール300の出力Doutに送信されることができ、残りの各パリティシフトレジスタ303に格納された4つのパリティディジットは、次のパリティシフトレジスタ303/303′に送信されることもできる。
最後のパリティシフトレジスタ303′の出力をエンコーダモジュール300の入力Dinに連結するではなく、最後のパリティシフトレジスタ303′の入力をエンコーダモジュール300の入力Dinに連結することによって、各パリティ生成モジュール307によって実行される行列乗算の複雑さが低減される。行列乗算は、所定のクロック周期において受信されたK桁のメッセージの4桁の部分および最後のパリティシフトレジスタ303′の出力の両方に対して実行されるではなく、所定のクロック周期において最後のパリティシフトレジスタ303′の出力のみに対して実行される。したがって、各パリティ生成モジュール307を実行するために必要とされたXORは、2mL−1個ではなく、mL−1個のみになる。これによって、K桁のメッセージをN桁の符号化メッセージに符号化する速度を増加するとともに、ハードウェアリソースの需要を減少することもできる。
図3のエンコーダモジュール300はさらに、ファンアウトを改善するために修正されてもよい。ファンアウトは、論理ゲート出力が接続されるゲート入力の数を指す。論理ゲート出力が接続されるゲート入力の数が減少されると、ファンアウトも減少される。図4は、いくつかの実施形態に従った、減少されたファンアウトを有する非線形ブロックコードの並列符号化を実施するためのエンコーダモジュールを示す。
図3のエンコーダモジュールとよく似て、図4のエンコーダモジュール400は、各クロックサイクルにおいて、K桁のメッセージの複数のディジット(L)を処理することができる。エンコーダモジュール400は、N桁の符号化メッセージを形成するために、K桁のメッセージに対し任意P個のパリティディジットを生成するように構成されてもよい。そのK桁のメッセージは、L桁の並列入力として受信され、そのN桁の符号化メッセージは、L桁の並列出力として出力される。しかしながら、例示のため、図4のエンコーダモジュール400は、N桁の符号化メッセージを形成するために、K桁のメッセージに対し16個のパリティディジット(すなわち、P=16)を生成するように構成される。そのK桁のメッセージは、4桁の並列入力(すなわち、L=4)として受信され、そのN桁の符号化メッセージは、4桁の並列出力として出力される。KがLの整数倍でない場合には、メッセージの全体長さがLの倍数になるように、メッセージの先頭にゼロを挿入する。
エンコーダモジュール400は、入力Dinと、出力Doutと、4段遅延器409と、4つの4桁パリティシフトレジスタ403/403′/403″と、4つのパリティ生成モジュール407を備えるフィードバック回路405とを含む。図4のエンコーダモジュール400は、4つのパリティ生成モジュール407および4つの4桁パリティシフトレジスタ403/403′/403″のみを含むが、エンコーダモジュール400は、任意P/L個のL桁パリティシフトレジスタと、生成されるP個のパリティ数字および受信されるL桁並列入力に対応する任意P/L個のパリティ生成モジュールとを含んでもよい。
エンコーダモジュール400の入力Dinは、K桁のメッセージを4桁の並列入力として受信するように構成される。エンコーダモジュール400の出力Doutは、16個のパリティディジットを有するN桁の符号化メッセージを4桁の並列出力として出力するように構成される。以下で詳細に説明するように、フィードバック回路405のパリティ生成モジュール407は、4桁パリティシフトレジスタに格納されるパリティディジットを生成するように構成される。
4つの4桁パリティシフトレジスタ403/403′/403″は、1つのパリティシフトレジスタ403/403′/403″の出力が(次のパリティシフトレジスタが存在する場合に)次のパリティシフトレジスタ403/403′/403″の入力に連結されるように、順次連結されている。各4桁パリティシフトレジスタ403/403′/403″は、各パリティ生成モジュール407に対応しており、各パリティ生成モジュール407は、対応するパリティシフトレジスタ403/403′/403″の入力に連結される。最初のパリティシフトレジスタ403′の入力は、エンコーダモジュール400の入力Dinに連結されかつフィードバック回路の各パリティ生成モジュール407に連結される。加算器モジュールAが、複数のソース(たとえば、パリティ生成モジュール407およびエンコーダモジュール400の入力Din)に連結された最初のパリティシフトレジスタの入力に関連されてもよい。加算器モジュールAは、最初のパリティシフトレジスタ403′の入力で受信したデータを格納するために、データの合併を容易にする。
4つの4桁パリティシフトレジスタ403/403′/403″のうち最後のパリティシフトレジスタ403″の入力は、さらに、マルチプレクサを介してエンコーダモジュール400の出力Doutに連結される。
4段遅延器409は、エンコーダモジュール400の入力Dinに連結され、かつ、マルチプレクサを介してエンコーダモジュール400の出力Doutに連結されている。
フィードバック回路405は、4つのスイッチS1,S2,S3,S4をさらに含む。各スイッチS1,S2,S3,S4は、パリティ生成モジュール407に対応している。スイッチS1,S2,S3,S4が閉合されると、フィードバック回路405のパリティ生成モジュール407が作動され、パリティディジットを生成する。スイッチS1,S2,S3,S4が開放されると、フィードバック回路405のパリティ生成モジュール407の動作が停止され、パリティディジットを生成しなくなる。
最初のK/L個のクロックサイクルにおいて、フィードバック回路405の各スイッチS1,S2,S3,S4は、閉合されている。最初の(K/L)個のクロックサイクルの各クロックサイクルにおいて、K桁のメッセージの4桁の部分は、エンコーダモジュール400の入力Dinで受信され、最初のパリティシフトレジスタ403′の出力転送される。同時に、各パリティシフトレジスタ403/403′/404″は、格納されたデータを対応するパリティ生成モジュール407および(次のパリティシフトレジスタが存在する場合に)次のパリティシフトレジスタ403/403′/403″に転送する。各パリティ生成モジュール407は、最初のパリティシフトレジスタ403′にフィードバックされるパリティディジットを生成する。フィードバック回路405のパリティ生成モジュール407により生成された新たなパリティディジットが最初のパリティシフトレジスタ403′にフィードバックされるため、各パリティシフトレジスタ403/403′/403″に格納されたデータは、クロックサイクル毎に更新される。各パリティ生成モジュール307は、擬似コード(L=4、P=16)に従って、K桁のメッセージの各ディジットに対しパリティディジットを生成するように構成されている。
Figure 2015512585
Figure 2015512585
パリティシフトレジスタ403/403′/403″に格納されたデータは、パリティディジットを形成する。擬似コードは、上記の微分式(8)と同様の方法で得られてもよい。任意所定のサイクルにおいて、すべてのP個のパリティディジットではなく、L個のパリティディジットのみが生成される。すべてのP個のパリティディジットは、P/L個のクロックサイクルに亘って生成される。
同時に、最初のK/L個のクロックサイクルの各クロックサイクルにおいて、エンコーダモジュール400の入力Dinで受信したK桁のメッセージの4桁の部分は、マルチプレクサを介してエンコーダモジュール400の出力Doutに転送される前に4段遅延器409を通るため、エンコーダモジュール400により出力される最初のK個のディジットは、K桁のメッセージの4桁の並列出力となる。
((K/L)+1)〜((K/L)+(P/L))個のクロックサイクルの各クロックサイクルにおいて、エンコーダモジュール400の入力Dinは、ゼロ入力を受信する。各ゼロ入力によって、エンコーダモジュール400は、フィードバック回路405のスイッチS1,S2,S3,S4を順次開放する。また、各クロックサイクルにおいて、各パリティシフトレジスタ403/403′は、格納されたデータを(対応するスイッチが閉合されている)パリティ生成モジュール407に送信する。対応するパリティ生成モジュール407は、最初のパリティシフトレジスタ403′に転送されるパリティディジットを生成する。この動作は、フィードバック回路405のスイッチS1,S2,S3,S4がすべて開放されるまで継続する。
((K/L)+(P/L))〜((N/L)+(P/L))個のクロックサイクルの各クロックサイクルにおいて、すべてのスイッチS1,S2,S3,S4は、開放に維持され、パリティシフトレジスタ403/403′/403″に格納されたパリティディジットは、パリティシフトレジスタ403/403′/403″の各々に連結された制御信号CEに応じて出力される。たとえば、(K/L)+(P/L)クロックサイクルにおいて、最後のパリティシフトレジスタ403″に格納された4つのパリティディジットは、マルチプレクサを介してエンコーダモジュール400の出力Doutに送信されることができ、残りの各パリティシフトレジスタ403/403′に格納された4つのパリティディジットは、次のパリティシフトレジスタ403′/403″に送信されることもできる。
K桁のメッセージの各L桁の部分を各パリティ生成モジュール407に伝送するではなく、K桁のメッセージの各L桁の部分を最初のパリティシフトレジスタ403′に伝送することによって、エンコーダモジュール400の入力Dinの高ファンアウトが回避され得る。また、パリティ生成モジュール407が(P/L個の)異なるシフトレジスタ403/403′/403″から供給されるため、図2のエンコーダモジュール200および図3のエンコーダモジュール300に比べて、いずれかのシフトレジスタ403/403′/403″のファンアウトは、(P/L)の倍数で減少される。ファンアウトの減少は、高い最大周波数を達成することが可能にしながら、ルーティングアルゴリズムに与える過度負荷を低減する。
特定の実施形態が図示されおよび説明されてきたが、これらは請求される発明を限定する意図なく、当業者なら誰でも、本発明の精神および範囲を逸脱すること無く本発明にさまざまな変更や修正を加えることが可能であることは明らかである。したがって、明細書および図面は、限定的な意味ではなく例示的ものであるとみなされるべきである。請求される発明は、代替物、変形物および等価物を包含することが意図される。

Claims (15)

  1. K桁のメッセージのL桁の部分を、P個のパリティディジットを有するN桁の符号化メッセージに並列符号化するためのエンコーダモジュールであって、
    前記K桁のメッセージの前記L桁の部分を受信するように構成された入力と、
    前記N桁の符号化メッセージを出力するように構成された出力と、
    前記入力と前記出力とに連結されたシフトレジスタ回路と、
    順次連結されたP/L個のパリティシフトレジスタとを含み、前記パリティシフトレジスタのうち最後のパリティシフトレジスタの入力が、前記エンコーダモジュールの前記入力に連結され、前記最後のパリティシフトレジスタの出力が、前記エンコーダモジュールの前記出力に連結され、
    P/L個のパリティ生成モジュールを備えるフィードバック回路を含み、
    前記パリティ生成モジュールの各々は、スイッチによって、前記最後のパリティシフトレジスタの前記出力に連結されかつ前記パリティシフトレジスタのうち対応する1つのパリティシフトレジスタの入力に連結され、
    前記パリティ生成モジュールの各々は、前記スイッチが閉合されているときに、前記パリティシフトレジスタのうち対応する1つのパリティシフトレジスタに格納されるL個のパリティディジットを生成するように構成される、エンコーダモジュール。
  2. 前記シフトレジスタ回路は、前記入力と前記出力とに連結されたL桁の入力シフトレジスタである、請求項1に記載のエンコーダモジュール。
  3. (K/L)個のクロックサイクルの各々において、
    前記フィードバック回路の前記スイッチは、閉合され、
    前記エンコーダモジュールは、入力で受信した前記K桁のメッセージの前記L桁の部分のうち1つを前記入力シフトレジスタおよび前記最後のパリティシフトレジスタの前記入力に転送し、
    前記最後のパリティシフトレジスタは、格納されたパリティディジットを前記フィードバック回路の前記パリティ生成モジュールの各々に転送し、前記パリティ生成モジュールの各々は、前記対応するパリティシフトレジスタに格納されるL個のパリティディジットを生成し、
    前記最後のパリティシフトレジスタ以外の前記各パリティシフトレジスタは、格納されたパリティディジットを前記パリティシフトレジスタのうち次のパリティシフトレジスタに転送し、
    前記入力シフトレジスタは、格納されたデータを前記エンコーダモジュールの前記出力に転送し、
    (K/L)+1クロックサイクルにおいて、
    前記入力シフトレジスタは、格納されたデータを前記エンコーダモジュールの前記出力に転送し、
    前記エンコーダモジュールは、入力で受信したゼロ入力を前記入力シフトレジスタおよび前記最後のパリティシフトレジスタの前記入力に転送することによって、フィードバック回路のスイッチを開放し、
    (K/L)+2〜(N/L)+1個のクロックサイクルの各々において、
    前記最後のパリティシフトレジスタは、格納されたパリティディジットを前記エンコーダモジュールの前記出力に転送し、
    前記最後のパリティシフトレジスタ以外の前記パリティシフトレジスタの各々は、格納されたパリティディジットを前記パリティシフトレジスタのうち次のパリティシフトレジスタに転送する、請求項2に記載のエンコーダモジュール。
  4. 前記最後のパリティシフトレジスタの前記出力と前記入力シフトレジスタの出力とは、マルチプレクサを介して前記エンコーダモジュールの前記出力に連結されている、請求項1から3のいずれか1項に記載のエンコーダモジュール。
  5. 前記(K/L)個のクロックサイクルの各々において前記最後のパリティシフトレジスタの前記入力に転送された前記L桁の部分は、同一クロックサイクルにおいて前記最後のパリティシフトに格納された前記パリティディジットと合併される、請求項1から3のいずれか1項に記載のエンコーダモジュール。
  6. 前記(K/L)個のクロックサイクルの各々において各パリティ生成モジュールによって生成された前記パリティディジットは、同一クロックサイクルにおいて対応するパリティシフトレジスタに格納された前記パリティディジットと合併される、請求項1から3のいずれか1項に記載のエンコーダモジュール。
  7. 前記(K/L)+1クロックサイクルにおいて前記パリティシフトレジスタの各々に格納された前記パリティディジットは、最終パリティディジット値である、請求項1から3のいずれか1項に記載のエンコーダモジュール。
  8. 前記P個のパリティディジットは、(K/L)+2〜(N/L)+1個のクロックサイクルにおいて、前記エンコーダモジュールよって出力される、請求項1および2のいずれか1項に記載のエンコーダモジュール。
  9. 前記P個のパリティディジットは、L桁の並列出力として出力される、請求項8に記載のエンコーダモジュール。
  10. 前記パリティシフトレジスタは、前記パリティシフトレジスタの各々に連結された制御信号によって制御される、請求項1および2のいずれか1項に記載のエンコーダモジュール。
  11. 前記エンコーダモジュールによって受信された前記K桁のメッセージの前記L桁の部分は、(K/L)+1クロックサイクルにおいて、エンコーダモジュールによって出力される、請求項1および2のいずれか1項に記載のエンコーダモジュール。
  12. 前記エンコーダモジュールの前記入力は、前記出力に連結され、
    前記シフトレジスタ回路は、前記入力と前記出力とに連結されたP/L段の遅延器であり、
    前記パリティシフトレジスタの各々は、L個のパリティディジットを格納するように構成される、請求項1に記載のエンコーダモジュール。
  13. (K/L)個のクロックサイクルの各々において、
    前記フィードバック回路の前記スイッチの各々は、閉合され、
    前記エンコーダモジュールは、入力で受信した前記K桁のメッセージの前記L桁の部分のうち1つを最初のパリティシフトレジスタおよび前記パリティシフトレジスタの前記出力に転送し、
    前記パリティシフトレジスタの各々は、格納されたパリティディジットを前記パリティ生成モジュールのうち対応する1つのパリティ生成モジュールに転送し、前記対応する1つのパリティ生成モジュールは、前記最初のシフトレジスタに送信されるL個のパリティディジットを生成し、
    前記最後のパリティシフトレジスタ以外の前記パリティシフトレジスタの各々は、格納されたパリティディジットを前記パリティシフトレジスタのうち次のパリティシフトレジスタに転送し、
    (K/L)+1〜(P/L)個のクロックサイクルの各々において、
    前記エンコーダモジュールは、入力で受信したゼロ入力を前記最初のパリティシフトレジスタに転送し、
    前記フィードバック回路の前記スイッチのうち1つ以上は、次第に開放され、
    前記各パリティシフトレジスタは、格納されたパリティディジットを前記パリティ生成モジュールのうち対応する1つのパリティ生成モジュールに送信し、
    ((K/L)+(P/L))〜((N/L)+(P/L))個のクロックサイクルの各々において、
    前記最後のパリティシフトは、格納されたパリティディジットを前記エンコーダの前記出力に送信し、
    前記最後のパリティシフトレジスタ以外の前記パリティシフトレジスタの各々は、格納されたパリティディジットを前記パリティシフトレジスタのうち次のパリティシフトレジスタに送信する、請求項12に記載のエンコーダモジュール。
  14. 前記P個のパリティディジットは、(K/L)+1〜(P/L)個のクロックサイクルにおいて、前記エンコーダモジュールによって出力される、請求項12に記載のエンコーダモジュール。
  15. 前記P個のパリティディジットは、L桁の並列出力として出力される、請求項14に記載のエンコーダモジュール。
JP2015503189A 2012-03-26 2012-11-26 非バイナリ線形ブロックコードの並列符号化 Active JP5978382B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/430,222 2012-03-26
US13/430,222 US8949703B2 (en) 2012-03-26 2012-03-26 Parallel encoding for non-binary linear block code
PCT/US2012/066554 WO2013147935A1 (en) 2012-03-26 2012-11-26 Parallel encoding for non-binary linear block code

Publications (3)

Publication Number Publication Date
JP2015512585A true JP2015512585A (ja) 2015-04-27
JP2015512585A5 JP2015512585A5 (ja) 2015-12-17
JP5978382B2 JP5978382B2 (ja) 2016-08-24

Family

ID=47470125

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015503189A Active JP5978382B2 (ja) 2012-03-26 2012-11-26 非バイナリ線形ブロックコードの並列符号化

Country Status (6)

Country Link
US (1) US8949703B2 (ja)
EP (1) EP2831999B1 (ja)
JP (1) JP5978382B2 (ja)
KR (1) KR101930583B1 (ja)
CN (1) CN104247274B (ja)
WO (1) WO2013147935A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102820892B (zh) * 2012-06-20 2016-06-01 记忆科技(深圳)有限公司 一种用于并行bch编码的电路、编码器及方法
US20150363263A1 (en) * 2014-06-12 2015-12-17 HGST Netherlands B.V. ECC Encoder Using Partial-Parity Feedback
KR20180059150A (ko) * 2016-11-25 2018-06-04 에스케이하이닉스 주식회사 1 클럭 인코딩이 가능한 에러 정정 코드 인코더 및 에러 정정 코드 인코딩 방법과, 그리고 그 에러 정정 코드 인코더를 포함하는 메모리 컨트롤러
KR102285940B1 (ko) 2015-05-29 2021-08-05 에스케이하이닉스 주식회사 데이터 처리 회로, 데이터 처리 회로를 포함하는 데이터 저장 장치 및 그것의 동작 방법
US11515897B2 (en) 2015-05-29 2022-11-29 SK Hynix Inc. Data storage device
US11611359B2 (en) 2015-05-29 2023-03-21 SK Hynix Inc. Data storage device
US10396827B2 (en) 2015-09-25 2019-08-27 SK Hynix Inc. Data storage device
US11177835B2 (en) 2015-09-25 2021-11-16 SK Hynix Inc. Data storage device
KR20220151742A (ko) * 2021-05-07 2022-11-15 한국전자통신연구원 병렬 리드솔로몬 부호화 장치 및 방법

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4293951A (en) * 1979-03-16 1981-10-06 Communications Satellite Corporation Method and apparatus for encoding/decoding a convolutional code to a periodic convolutional code block
US4777635A (en) * 1986-08-08 1988-10-11 Data Systems Technology Corp. Reed-Solomon code encoder and syndrome generator circuit
JP2001094440A (ja) * 1999-09-24 2001-04-06 Toshiba Corp 誤り訂正復号器
JP2002522943A (ja) * 1998-08-06 2002-07-23 サムスン エレクトロニクス カンパニー リミテッド 通信システムのチャネル符号/復号装置及び方法
US6493845B1 (en) * 1999-06-21 2002-12-10 Maxtor Corporation Parallel input output combined system for producing error correction code redundancy symbols and error syndromes
JP2004208282A (ja) * 2002-12-09 2004-07-22 Sony Corp データ処理装置
JP2011217138A (ja) * 2010-03-31 2011-10-27 Sony Corp 符号化装置、および符号化方法

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4410989A (en) * 1980-12-11 1983-10-18 Cyclotomics, Inc. Bit serial encoder
DE69315018T2 (de) * 1992-08-21 1998-04-30 Koninkl Philips Electronics Nv Hardware-effizientes Verfahren und Anordnung zur Kodierung von BCH-Kodes und insbesondere Reed-Solomon-Kodes
US5383204A (en) * 1993-06-29 1995-01-17 Mitsubishi Semiconductor America, Inc. Parallel encoding apparatus and method implementing cyclic redundancy check and Reed-Solomon codes
WO2001076077A2 (en) * 2000-03-31 2001-10-11 Ted Szymanski Transmitter, receiver, and coding scheme to increase data rate and decrease bit error rate of an optical data link
US6895545B2 (en) * 2002-01-28 2005-05-17 Broadcom Corporation System and method for generating cyclic codes for error control in digital communications
CN1849750A (zh) * 2004-01-15 2006-10-18 桑德布里奇技术公司 里得-所罗门编码和解码方法
US7565594B2 (en) * 2004-08-26 2009-07-21 Alcatel-Lucent Usa Inc. Method and apparatus for detecting a packet error in a wireless communications system with minimum overhead using embedded error detection capability of turbo code
US7395492B2 (en) * 2004-09-13 2008-07-01 Lucent Technologies Inc. Method and apparatus for detecting a packet error in a wireless communications system with minimum overhead using tail bits in turbo code
US7600176B2 (en) * 2006-03-07 2009-10-06 Broadcom Corporation Performing multiple Reed-Solomon (RS) software error correction coding (ECC) Galois field computations simultaneously
US7831895B2 (en) * 2006-07-25 2010-11-09 Communications Coding Corporation Universal error control coding system for digital communication and data storage systems
KR20080052039A (ko) * 2006-12-07 2008-06-11 삼성전자주식회사 순환 중복 검사에 의한 정정 에러를 검사하는 방법 및 그장치
US8286059B1 (en) * 2007-01-08 2012-10-09 Marvell International Ltd. Word-serial cyclic code encoder
US8151172B2 (en) * 2008-07-10 2012-04-03 Lsi Corporation Adjustable error-correction for a reed solomon encoder/decoder
CN101834615B (zh) * 2009-03-12 2012-12-26 高通创锐讯通讯科技(上海)有限公司 里德-索罗蒙编码器实现方法
CN102231631B (zh) * 2011-06-20 2018-08-07 深圳市中兴微电子技术有限公司 Rs编码器的编码方法及rs编码器

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4293951A (en) * 1979-03-16 1981-10-06 Communications Satellite Corporation Method and apparatus for encoding/decoding a convolutional code to a periodic convolutional code block
US4777635A (en) * 1986-08-08 1988-10-11 Data Systems Technology Corp. Reed-Solomon code encoder and syndrome generator circuit
JP2002522943A (ja) * 1998-08-06 2002-07-23 サムスン エレクトロニクス カンパニー リミテッド 通信システムのチャネル符号/復号装置及び方法
US6493845B1 (en) * 1999-06-21 2002-12-10 Maxtor Corporation Parallel input output combined system for producing error correction code redundancy symbols and error syndromes
JP2001094440A (ja) * 1999-09-24 2001-04-06 Toshiba Corp 誤り訂正復号器
JP2004208282A (ja) * 2002-12-09 2004-07-22 Sony Corp データ処理装置
JP2011217138A (ja) * 2010-03-31 2011-10-27 Sony Corp 符号化装置、および符号化方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
JPN6015052809; MATSUSHIMA, T.K. et al.: 'Parallel Architecture For High-Speed Reed-Solomon Codec' Telecommunications Symposium, 1998. ITS '98 Proceedings. SBT/IEEE International (Volume:2) , 199808, pp.468-473, IEEE *
JPN6015052812; QINGSHENG HU et al.: '10Gb/s RS-BCH Concatenated Codec with Parallel Strategies for Fiber Communications' Communications, Circuits and Systems (ICCCAS), 2010 International Conference on , 201007, pp.303-307, IEEE *

Also Published As

Publication number Publication date
US20130254639A1 (en) 2013-09-26
WO2013147935A1 (en) 2013-10-03
EP2831999B1 (en) 2019-01-09
US8949703B2 (en) 2015-02-03
EP2831999A1 (en) 2015-02-04
JP5978382B2 (ja) 2016-08-24
CN104247274A (zh) 2014-12-24
KR20140142320A (ko) 2014-12-11
CN104247274B (zh) 2019-04-16
KR101930583B1 (ko) 2018-12-18

Similar Documents

Publication Publication Date Title
JP5978382B2 (ja) 非バイナリ線形ブロックコードの並列符号化
JP6609352B2 (ja) 送信装置、送信方法、受信装置及び受信方法
US8108760B2 (en) Decoding of linear codes with parity check matrix
EP1449063A1 (en) Galois field multiplier system
US7870468B1 (en) Reed-solomon decoder using a configurable arithmetic processor
JPWO2004001701A1 (ja) 符号演算装置
US9065482B1 (en) Circuit for forward error correction encoding of data blocks
TWI631829B (zh) 用於進行重組解碼的低密度奇偶校驗解碼裝置及相關方法
JP3239522B2 (ja) データ消失訂正方法とその回路
Chen et al. A new inversionless Berlekamp-Massey algorithm with efficient architecture
US10879933B2 (en) Reed solomon decoder and semiconductor device including the same
Cho et al. A hardware implementation of word-parallel bit-serial polynomial basis multiplier
JPS61216041A (ja) 信号処理装置
Liu et al. A redundant matrix based cyclic encoder for ultra-high speed optical transport systems
Dinh et al. Design of a high-speed (255,239) RS decoder using 0.18/spl mu/m CMOS
Wai FPGA implementation of Reed Solomon codec for 40Gbps Forward Error Correction in optical networks
Fu et al. Error Control Coding for On-Chip Interconnects
JPS61216042A (ja) 信号処理装置
JP2004054384A (ja) 演算器

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151028

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151028

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20151028

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20151214

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160112

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160408

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160705

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160725

R150 Certificate of patent or registration of utility model

Ref document number: 5978382

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250