(57)【要約】【課題】必要となる記憶領域を削減し、短時間で切り替えが可能な符号化装置等を提供する。【解決手段】ブロック型検査行列を生成する検査行列生成手段１１と、入力されるメッセージからこの検査行列によって符号語を生成し出力する符号化手段１２とを有している。さらに、前記検査行列生成手段１１が、ブロック型検査行列の関数値を自己相反多項式の係数によって規定する次数割当部１１ａと、マスクパターンを用いてブロック型検査行列の各ブロックの成分の中で非零行列となる成分の数を規定する重み分布決定部１１ｂと、ブロック型検査行列の第ｋ＿ｒ列ブロックの成分の総和を巡回置換行列とする第１の次数変更部１１ｃと、ブロック型検査行列の該第ｋ＿ｒ列ブロックを除いた各列ブロックの成分の中で非零行列となる成分の行ブロック番号を規定する第２の次数変更部１１ｄとを有する。【選択図】図１
2011136089.tif 000002
【特許請求の範囲】
【請求項１】
擬似巡回型低密度パリティ検査符号を構成するための符号化装置において、
擬似巡回型低密度パリティ検査符号の、行数と列数がともにｑ−１の巡回置換行列もしくは零行列を成分とする（ｑは４以上で、かつ２のべき乗となる整数）、行ブロック数がｒ、列ブロック数がｑ＋１であり（ｒは４以上ｑ以下の整数）、かつ第ｉ行ブロック、第ｊ列ブロック成分が（ｉは０からｒ−１の間の整数、ｊは０からｑの間の整数とし、行列の左端の列を第０列、上端の行を第０行とする）整数ｊ−ｉを引数とする関数λ（ｊ−ｉ）の値を次数とする巡回置換行列もしくは零行列に一致するブロック型検査行列を生成する検査行列生成手段と、
入力されるメッセージから前記ブロック型検査行列によって符号語を生成して出力する符号化手段とを有し、
さらに、前記検査行列生成手段は、
ブロック型検査行列の関数値λ（ｊ−ｉ）を有限体ＧＦ（ｑ＾２）のｑ−１個の元を根とする自己相反多項式の係数によって規定する次数割当部と、
与えられたマスクパターンを用いてブロック型検査行列の各列ブロックの成分の中で非零行列となる成分の数と該ブロック型検査行列の各行ブロックの成分の中で非零行列となる成分の数とを規定する重み分布決定部と、
ブロック型検査行列の第ｋ＿ｒ列ブロック（ｋ＿ｒは（ｑ＋１−ｒ）／２の整数部分）の成分の総和を巡回置換行列とする第１の次数変更部と、ブロック型検査行列の該第ｋ＿ｒ列ブロックを除いた各列ブロックの成分の中で非零行列となる成分の行ブロック番号を規定する第２の次数変更部とを有することを特徴とする符号化装置。
【請求項２】
前記検査行列生成手段の前記重み分布決定部が、前記ブロック型検査行列のｑ＋１個の列ブロックの、右端ｒ−１個の列ブロックと前記第ｋ＿ｒ列ブロックを除くｑ＋１−ｒ個の列ブロックの中で、ｑ＋１−ｎ個の列ブロックの成分のすべてを零行列として定義すると共に、
前記検査行列生成手段が、成分のすべてが零行列であるｑ＋１−ｎ個の列ブロックを削除する列ブロック削除部を備えることを特徴とする、請求項１に記載の符号化装置。
【請求項３】
前記符号化手段が、
前記検査行列生成手段が生成した前記ブロック型検査行列および前記マスクパターンを記憶する行列データ保存用メモリと、
前記メッセージの情報ビット列と有限体ＧＦ（ｑ＾２）のｑ−１個の元を根とする自己相反多項式の係数によって規定した整数ｊ−ｉを引数とする関数λ（ｊ−ｉ）の値を次数とする巡回置換行列との行列積を算出するｒ個の行列乗算装置と、
前記行列乗算装置への入力信号を前記行列データ保存用メモリに保持された前記マスクパターンによって切り替えるためのセレクタと
を有することを特徴とする、請求項１または請求項２に記載の符号化装置。
【請求項４】
前記行列データ保存用メモリが、
複数の前記ブロック型検査行列のすべての列ブロックにおいて、該列ブロック中の成分が非零の巡回置換行列であるすべての行ブロックの行番号を保持する機能と、
前記セレクタへの入力信号を前記ブロック型検査行列の各々に対して変える機能とを備えることを特徴とする、請求項３に記載の符号化装置。
【請求項５】
擬似巡回型低密度パリティ検査符号を構成するための誤り訂正符号構成方法において、
検査行列生成手段により、擬似巡回型低密度パリティ検査符号の、行数と列数がともにｑ−１の巡回置換行列もしくは零行列を成分とする（ｑは４以上で、かつ２のべき乗となる整数）、行ブロック数がｒ、列ブロック数がｑ＋１であり（ｒは４以上ｑ以下の整数）、かつ第ｉ行ブロック、第ｊ列ブロック成分が（ｉは０からｒ−１の間の整数、ｊは０からｑの間の整数とし、行列の左端の列を第０列、上端の行を第０行とする）整数ｊ−ｉを引数とする関数λ（ｊ−ｉ）の値を次数とする巡回置換行列もしくは零行列に一致するブロック型検査行列を生成し、
前記符号化手段により、前記生成したブロック型検査行列によって、入力されるメッセージから符号語を生成して出力し、
さらに、ブロック型検査行列を生成する際、
次数割当部により、ブロック型検査行列の関数値λ（ｊ−ｉ）を有限体ＧＦ（ｑ＾２）のｑ−１個の元を根とする自己相反多項式の係数によって規定し、
重み分布決定部により、与えられたマスクパターンを用いてブロック型検査行列の各列ブロックの成分の中で非零行列となる成分の数と該ブロック型検査行列の各行ブロックの成分の中で非零行列となる成分の数とを規定し、
第１の次数変更部により、ブロック型検査行列の第ｋ＿ｒ列ブロック（ｋ＿ｒは（ｑ＋１−ｒ）／２の整数部分）の成分の総和を巡回置換行列とし、
第２の次数変更部により、ブロック型検査行列の該第ｋ＿ｒ列ブロックを除いた各列ブロックの成分の中で非零行列となる成分の行ブロック番号を規定することを特徴とする誤り訂正符号構成方法。
【請求項６】
前記検査行列生成手段が生成した前記ブロック型検査行列および前記マスクパターンを前記符号化手段の行列データ保存用メモリに記憶し、
前記行列データ保存用メモリに保持された前記マスクパターンによって入力信号を前記符号化手段のセレクタが切り替え、
前記メッセージの情報ビット列と有限体ＧＦ（ｑ＾２）のｑ−１個の元を根とする自己相反多項式の係数によって規定した整数ｊ−ｉを引数とする関数λ（ｊ−ｉ）の値を次数とする巡回置換行列との行列積を前記符号化手段の行列乗算装置が算出する
ことを特徴とする、請求項５に記載の誤り訂正符号構成方法。
【請求項７】
擬似巡回型低密度パリティ検査符号を構成するための誤り訂正符号構成プログラムにおいて、
コンピュータに、
擬似巡回型低密度パリティ検査符号の、行数と列数がともにｑ−１の巡回置換行列もしくは零行列を成分とする（ｑは４以上で、かつ２のべき乗となる整数）、行ブロック数がｒ、列ブロック数がｑ＋１であり（ｒは４以上ｑ以下の整数）、かつ第ｉ行ブロック、第ｊ列ブロック成分が（ｉは０からｒ−１の間の整数、ｊは０からｑの間の整数とし、行列の左端の列を第０列、上端の行を第０行とする）整数ｊ−ｉを引数とする関数λ（ｊ−ｉ）の値を次数とする巡回置換行列もしくは零行列に一致するブロック型検査行列を生成する機能と、
前記生成したブロック型検査行列によって、入力されるメッセージから符号語を生成して出力する機能とを実行させ、
さらに、前記コンピュータに、ブロック型検査行列を生成する際、
ブロック型検査行列の関数値λ（ｊ−ｉ）を有限体ＧＦ（ｑ＾２）のｑ−１個の元を根とする自己相反多項式の係数によって規定する機能と、
与えられたマスクパターンを用いてブロック型検査行列の各列ブロックの成分の中で非零行列となる成分の数と該ブロック型検査行列の各行ブロックの成分の中で非零行列となる成分の数とを規定する機能と、
ブロック型検査行列の第ｋ＿ｒ列ブロック（ｋ＿ｒは（ｑ＋１−ｒ）／２の整数部分）の成分の総和を巡回置換行列とする機能と、
ブロック型検査行列の該第ｋ＿ｒ列ブロックを除いた各列ブロックの成分の中で非零行列となる成分の行ブロック番号を規定する機能とを実行させることを特徴とする誤り訂正符号構成プログラム。
【請求項８】
前記コンピュータに、
前記生成した前記ブロック型検査行列および前記マスクパターンを行列データ保存用メモリに記憶する機能と、
前記行列データ保存用メモリに保持された前記マスクパターンによって入力信号を切り替える機能と、
前記メッセージの情報ビット列と有限体ＧＦ（ｑ＾２）のｑ−１個の元を根とする自己相反多項式の係数によって規定した整数ｊ−ｉを引数とする関数λ（ｊ−ｉ）の値を次数とする巡回置換行列との行列積を算出する機能と
を実行させることを特徴とする、請求項７に記載の誤り訂正符号構成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、符号化装置、誤り訂正符号構成方法およびそのプログラムに関し、特に少ない記憶領域で多くの種類の擬似巡回型（Quasi-Cyclic）低密度パリティ検査（Low-Density-Parity-Check）符号を構成する符号化装置等に関する。
【背景技術】
【０００２】
衛星通信、移動体通信、光学ディスクなど、デジタル信号の伝送および記憶においては、所要電力の低減、アンテナの小型化、伝送速度（または記憶容量）の向上などのようなことが常に要求されている。この要求を満たすため、大きな符号化利得を有する誤り訂正符号化技術の導入が行われている。中でも、低密度パリティ検査符号（Low-Density-Parity-Check: 以後ＬＤＰＣ符号という）は、大きな符号化利得を有する誤り訂正符号として知られており、前述の各種デジタル通信システムや記憶装置への導入が進んでいる。【０００３】
ＬＤＰＣ符号を利用する符号化装置では、擬似巡回型ＬＤＰＣ符号のブロック型検査行列を生成し、これを符号化器に転送する。符号化器ではこの検査行列を利用して、デジタル信号である入力メッセージに対して符号化処理を行い、符号語を生成して変調器に出力する。変調器ではこれを搬送波に乗せて、光ファイバなどの伝送路に向けて送出する。またはこの伝送路を、光学ディスクなどの記憶媒体に置き換えてもよい。【０００４】
ここで、ＬＤＰＣ符号は、単に一つの誤り訂正符号化方式を示すのではなく、検査行列が疎である（行列中の成分の多くが０であり、１である成分の数が少ない）という特徴をもった誤り訂正符号の総称である。中でも擬似巡回型ＬＤＰＣ符号は、非特許文献１〜２に記載されているような、サム・プロダクト（sum-product）アルゴリズムやミン・サム（min-sum）アルゴリズムなどの繰り返し復号方式を用いることにより、大きな符号化利得を持つ誤り訂正符号化方式を構成することが可能である。以下、このことについて詳しく説明する。【０００５】
数１は、ｒ×ｎのブロック行列を示しており（ｒとｎはｒ≦ｎとなる自然数、ｋ＝ｎ−ｒ）、擬似巡回型ＬＤＰＣ符号のブロック型検査行列を表している。数１のブロック行列の各成分である巡回置換行列において、その次数ｕ（ｉ，ｊ）は０からｍ−１の間の整数（ｍは１以上の整数）または記号−∞のいずれかを表す（ｉは０からｒ−１の間の整数、ｊは０からｎ−１の間の整数）。【０００６】
また、数２は数１に示したｍ×ｍの巡回置換行列Ｐを示す。Ｐは各行・各列に１が一つずつ存在し、それ以外は零となる置換行列である。かつ、Ｐの各行ベクトルは、その上段の行ベクトルを右に一つ巡回シフトした形となっており、最上段の行ベクトルは第１成分のみ１であり、それ以外の成分は０となる（最左端の成分を第０成分とする）。【０００７】
ｕが０からｍ−１の間の整数の時、Ｐ＾ｕは最上段の行ベクトルが第ｕ成分のみが１であり、それ以外は０であるような巡回置換行列を表す。ここではｕを巡回置換行列Ｐ＾ｕの次数と呼称する。次数ｕが零のときは、Ｐ＾ｕは対角成分のみが１となる単位行列になるため、これを特にＩと記す。また、記法を簡単にするため、次数−∞の巡回置換行列Ｐ＾−∞は、全ての成分が零である零行列を表すものとする。【０００８】
ちなみに本明細書では、数式以外の行では「Ａに上付き文字Ｂを付したもの（たとえばＡのＢ乗など）」を「Ａ＾Ｂ」と表記し、また「Ａに下付き文字Ｂを付したもの」を「Ａ＿Ｂ」と表記することにする。【０００９】
【数１】
2011136089.tif 000003
【００１０】
【数２】
2011136089.tif 000004
【００１１】
数１の形のブロック行列を検査行列とする擬似巡回型ＬＤＰＣ符号の符号長はｎ×ｍビットであり、ｎ×ｍビットのビット系列のなかで、数１との行列積が零となる系列を送信ビット列の集合とする。受信側では、受信ビット列と数１の検査行列の行列積が零であるか否かによって受信ビット列に誤りがあるか否かを判定する。誤りがある場合には、検査行列を用い、前述のサム・プロダクト、あるいはミン・サムアルゴリズムを利用して、誤りを訂正する復号処理を行う。【００１２】
以上より、数１で示される検査行列を有する擬似巡回型ＬＤＰＣ符号は、各（ｉ，ｊ）に関して、各次数ｕ（ｉ，ｊ）を如何に選択するかによって決定される。次数ｕ（ｉ，ｊ）を決定する上で、誤り訂正能力が高いこと、符号化処理が簡単に行えること、各次数ｕ（ｉ，ｊ）の値の保持に要する記憶容量が少ないことの三点を該次数ｕ（ｉ，ｊ）の決定指針としてあげることができる。前述の三点を満たす次数ｕ（ｉ，ｊ）の決定方法、及び決定された次数ｕ（ｉ，ｊ）によって定まる検査行列を持つＬＤＰＣ符号の効率的・経済的な符号化装置の提供が解決すべき技術的課題となる。【００１３】
このうち、第一の指針である誤り訂正能力については、検査行列の行、及び列ブロックに関する重み分布、及び長さの短いサイクルの数に依存することが知られている。検査行列の行ブロックに関する重み分布ｃ（ｗ）は、正整数ｗに関して、ｕ（ｉ，ｊ）≠−∞となる列ブロックｊの数がｗに一致する行ブロックｉの数を表し（ｉは０からｒ−１の間の整数、ｊは０からｎ−１の間の整数）、列ブロックに関する重み分布ｖ（ｗ）は、ｕ（ｉ，ｊ）≠−∞となる行ブロックｉの数がｗに一致する列ブロックｊの数を表す。【００１４】
誤り訂正能力の点で望ましい重み分布ｖ（ｗ）、ｃ（ｗ）は密度発展法等の方法によって算出できることが知られている。また、検査行列のサイクルは、検査行列の成分中の１を頂点と、頂点間を結ぶ枝によって構成される閉路を意味している。サイクル中の枝の数でそのサイクルの長さを表す。【００１５】
図１１は、検査行列の中のサイクル（閉路）の例を示す説明図である。図１１には、長さ４のサイクル８０１および長さ６のサイクル８０２が示されている。前述のサム・プロダクト、あるいはミン・サムアルゴリズムを利用する場合、サイクル８０１のような長さ４以下の短サイクルを持たないことが、高い誤り訂正能力を達成するための条件として挙げられる。即ち、第一の指針である誤り訂正能力に関しては、前述の重み分布だけでなく、短サイクル数をも考慮に入れる必要がある。【００１６】
前述の技術課題を解決するための技術として、非特許文献３に示された方法がある。この技術では、ｊ≧ｋとなる列ブロックｊについて（ｋはｎ−ｒを表す）、次数ｕ（ｉ，ｊ）を次の数３のように定める（ｌは０＜ｌ＜ｒ−１を満たす整数）。これによって、数１のブロック行列は次の数４の形に書き表すことができる。【００１７】
【数３】
2011136089.tif 000005
【００１８】
【数４】
2011136089.tif 000006
【００１９】
数３および数４において、次数ｂ＿０，ｂ＿１，…，ｂ＿ｒ１，ｘ，は、非特許文献４記載の符号化方法が容易に適用できるように定められる。上記以外の、０≦ｉ＜ｒ、０≦ｊ＜ｋに関する次数ｕ（ｉ，ｊ）の値については、まずｕ（ｉ，ｊ）＝−∞であるか否かが決定され、次いで、ｕ（ｉ，ｊ）≠−∞である（ｉ，ｊ）について、ｕ（ｉ，ｊ）の値が決定される。【００２０】
図１２は、非特許文献３〜４に記載の技術によるｕ（ｉ，ｊ）の決定方法の一例を表すフローチャートである。図１２に示す処理では、まず初めにｂ＿０，ｂ＿１，…，ｂ＿ｒ１，ｘ，ｙを決定し（ステップＳ９０１）、検査行列の行ブロックに関する前述の重み分布ｃ（ｗ）、列ブロックに関する重み分布ｖ（ｗ）を決定する（ｗは正整数）。これに引き続いて重み分布ｖ（ｗ）、ｃ（ｗ）を算出し（ステップＳ９０２）、この重み分布に従うように、ｕ（ｉ，ｊ）≠−∞となる行、及び列ブロックｉ，ｊを決定する（ステップＳ９０３）。【００２１】
なお、この行、列ブロックは必ずしも一意的に定まるわけではなく、また前述のように、ステップＳ９０２で算出される重み分布に従うものすべてが必ずしも高い誤り訂正能力を持っているわけではない。一般にはこの点に注意し、同一の重み分布に従うものの中から、乱数を用い、短サイクル数に注意して、ｕ（ｉ，ｊ）≠−∞となる行、及び列ブロックｉ，ｊを順次決定する。【００２２】
ステップＳ９０３までの処理によって、すべてのｕ（ｉ，ｊ）について、それが−∞であるか否かが定まる。これに引き続いて、重みの小さい順に列ブロックを順次選択し（ステップＳ９０４）、選択した列ブロックｊ＊に関して、ｕ（ｉ，ｊ＊）の数値を、数４の行列の持つ短サイクル数が少なくなるように決定する（ステップＳ９０５）。すべてのｕ（ｉ，ｊ）が決定するまで、ステップＳ９０４〜９０５の処理を繰り返す（ステップＳ９０６）。これによって、ｕ（ｉ，ｊ）≠−∞である（ｉ，ｊ）について、ｕ（ｉ，ｊ）の数値は順次決定される。【００２３】
このことに関連する特許文献として、たとえば以下の各々がある。その中でも特許文献１には、パリティ検査行列を特定のルールによってマスキング処理することによって符号化装置の回路規模を低減するという技術が記載されている。特許文献２には、マスク化疑似巡回行列と巡回置換行列とを所定位置に配置することで１つの検査行列で複数の複合化率を得るという検査行列生成方法が記載されている。特許文献３には、行及び列の重みにおいて一定の規則性を有するサブ行列によって構成されるパリティ検査行列を用いて符号化するという符号化／復号化方法が記載されている。
【先行技術文献】
【特許文献】
【００２４】
【特許文献１】再特ＷＯ２００７／０７２７２１号公報
【特許文献２】再特ＷＯ２００７／０８０８２７号公報
【特許文献３】特表２００８−５０８７７６号公報
【非特許文献】
【００２５】
【非特許文献１】RobertGallager, "Low-Density Parity-Check Codes"、IEEE Transactions on InformationTheory, １９６２年１月、第２１頁〜第２８頁
【非特許文献２】D.J.C.MacKay, "Good Error-Correcting Codes Based on very sparse matrices "、IEEE Transactions on InformationTheory,１９９９年３月、第３９９頁〜第４３１頁
【非特許文献３】Myung,Yang, Kim, "Quasi-Cyclic LDPC Codes for Fast Encoding"、IEEE Transactions on InformationTheory,２００５年８月、第２８９４頁〜第２９０１頁
【非特許文献４】Richardson,Urbanke, " Efficient Encoding Of Low-Density Parity-Check Codes "、IEEE Transactions on InformationTheory,２００１年２月、第６３８頁〜第６５６頁
【発明の概要】
【発明が解決しようとする課題】
【００２６】
上記の技術によって決定された数４の形を持つ検査行列は、一般に、各次数ｕ（ｉ，ｊ）の値の間に規則性がなくランダムなため、符号化、あるいは復号装置の構成において必要となる検査行列を保持するために、（ｋ＿ｒ）ｌｏｇ（２＿ｍ）という次元の記憶領域が必要となる。しかしながら、ｕ（ｉ，ｊ）の値の間に規則性があると、誤り率特性を劣化させることとなる。【００２７】
従って、該擬似巡回型ＬＤＰＣ符号の符号化装置と復号装置において必要となる検査行列の保持に、多くの記憶領域が必要となる。特に、通信路の状況等の要因に応じて、符号化率、フレーム長、誤り率特性等の異なる、複数のＬＤＰＣ符号を使い分ける通信システムにおいては、検査行列の保持により多くの記憶領域が必要となるとともに、符号化装置の切り替えに要する時間が大きくなるという問題が生じる。【００２８】
特許文献１および２は、以上の問題点を解決しようとするものではあり、複数のＬＤＰＣ符号を使い分ける際に必要となる記憶領域を削減する効果はある。しかしながら、その切り替えに要する時間を小さくするという点については特に考慮されていないし、その点について解決するものではない。この点は、特許文献３や非特許文献１〜４の技術においても考慮されていないので、それらの技術を組み合わせても解決されるものではない。【００２９】
本発明の目的は、複数の低密度パリティ検査符号（ＬＤＰＣ符号）を使い分ける際に必要であった記憶領域を削減し、かつその使い分けの際の切り替えに要する時間を小さくすることを可能とする符号化装置、誤り訂正符号構成方法およびそのプログラムを提供することにある。
【課題を解決するための手段】
【００３０】
上記目的を達成するため、本発明に係る符号化装置は、擬似巡回型低密度パリティ検査符号を構成するための符号化装置において、擬似巡回型低密度パリティ検査符号の、行数と列数がともにｑ−１の巡回置換行列もしくは零行列を成分とする（ｑは４以上で、かつ２のべき乗となる整数）、行ブロック数がｒ、列ブロック数がｑ＋１であり（ｒは４以上ｑ以下の整数）、かつ第ｉ行ブロック、第ｊ列ブロック成分が（ｉは０からｒ−１の間の整数、ｊは０からｑの間の整数とし、行列の左端の列を第０列、上端の行を第０行とする）整数ｊ−ｉを引数とする関数λ（ｊ−ｉ）の値を次数とする巡回置換行列もしくは零行列に一致するブロック型検査行列を生成する検査行列生成手段と、入力されるメッセージからブロック型検査行列によって符号語を生成して出力する符号化手段とを有し、さらに、前記検査行列生成手段が、ブロック型検査行列の関数値λ（ｊ−ｉ）を有限体ＧＦ（ｑ＾２）のｑ−１個の元を根とする自己相反多項式の係数によって規定する次数割当部と、与えられたマスクパターンを用いてブロック型検査行列の各列ブロックの成分の中で非零行列となる成分の数と該ブロック型検査行列の各行ブロックの成分の中で非零行列となる成分の数とを規定する重み分布決定部と、ブロック型検査行列の第ｋ＿ｒ列ブロック（ｋ＿ｒは（ｑ＋１−ｒ）／２の整数部分）の成分の総和を巡回置換行列とする第１の次数変更部と、ブロック型検査行列の該第ｋ＿ｒ列ブロックを除いた各列ブロックの成分の中で非零行列となる成分の行ブロック番号を規定する第２の次数変更部とを有することを特徴とする。【００３１】
上記目的を達成するため、本発明に係る誤り訂正符号構成方法は、擬似巡回型低密度パリティ検査符号を構成するための符号化方法において、検査行列生成手段により、擬似巡回型低密度パリティ検査符号の、行数と列数がともにｑ−１の巡回置換行列もしくは零行列を成分とする（ｑは４以上で、かつ２のべき乗となる整数）、行ブロック数がｒ、列ブロック数がｑ＋１であり（ｒは４以上ｑ以下の整数）、かつ第ｉ行ブロック、第ｊ列ブロック成分が（ｉは０からｒ−１の間の整数、ｊは０からｑの間の整数とし、行列の左端の列を第０列、上端の行を第０行とする）整数ｊ−ｉを引数とする関数λ（ｊ−ｉ）の値を次数とする巡回置換行列もしくは零行列に一致するブロック型検査行列を生成し、
前記符号化手段により、前記生成したブロック型検査行列によって、入力されるメッセージから符号語を生成して出力し、
さらにブロック型検査行列を生成する際、
次数割当部により、ブロック型検査行列の関数値λ（ｊ−ｉ）を有限体ＧＦ（ｑ＾２）のｑ−１個の元を根とする自己相反多項式の係数によって規定し、
重み分布決定部により、与えられたマスクパターンを用いてブロック型検査行列の各列ブロックの成分の中で非零行列となる成分の数と該ブロック型検査行列の各行ブロックの成分の中で非零行列となる成分の数とを規定し、
第１の次数変更部により、ブロック型検査行列の第ｋ＿ｒ列ブロック（ｋ＿ｒは（ｑ＋１−ｒ）／２の整数部分）の成分の総和を巡回置換行列とし、
第２の次数変更部により、ブロック型検査行列の該第ｋ＿ｒ列ブロックを除いた各列ブロックの成分の中で非零行列となる成分の行ブロック番号を規定することを特徴とする。【００３２】
上記目的を達成するため、本発明に係る誤り訂正符号構成プログラムは、擬似巡回型低密度パリティ検査符号を構成するための訂正符号構成プログラムにおいて、
コンピュータに、
擬似巡回型低密度パリティ検査符号の、行数と列数がともにｑ−１の巡回置換行列もしくは零行列を成分とする（ｑは４以上で、かつ２のべき乗となる整数）、行ブロック数がｒ、列ブロック数がｑ＋１であり（ｒは４以上ｑ以下の整数）、かつ第ｉ行ブロック、第ｊ列ブロック成分が（ｉは０からｒ−１の間の整数、ｊは０からｑの間の整数とし、行列の左端の列を第０列、上端の行を第０行とする）整数ｊ−ｉを引数とする関数λ（ｊ−ｉ）の値を次数とする巡回置換行列もしくは零行列に一致するブロック型検査行列を生成する機能と、
前記生成したブロック型検査行列によって、入力されるメッセージから符号語を生成して出力する機能とを実行させ、
さらに、前記コンピュータに、ブロック型検査行列を生成する際、
ブロック型検査行列の関数値λ（ｊ−ｉ）を有限体ＧＦ（ｑ＾２）のｑ−１個の元を根とする自己相反多項式の係数によって規定する機能と、
与えられたマスクパターンを用いてブロック型検査行列の各列ブロックの成分の中で非零行列となる成分の数と該ブロック型検査行列の各行ブロックの成分の中で非零行列となる成分の数とを規定する機能と、
ブロック型検査行列の第ｋ＿ｒ列ブロック（ｋ＿ｒは（ｑ＋１−ｒ）／２の整数部分）の成分の総和を巡回置換行列とする機能と、
ブロック型検査行列の該第ｋ＿ｒ列ブロックを除いた各列ブロックの成分の中で非零行列となる成分の行ブロック番号を規定する機能とを実行させることを特徴とする。
【発明の効果】
【００３３】
上述したように本発明は、ブロック型検査行列の第ｉ行、第ｊ列ブロックの成分が零行列でない場合、巡回置換行列の次数はλ（ｊ−ｉ）であり、第ｉ＋１行、第ｊ＋１列ブロックの成分についても、零行列でない場合には、次数がλ（ｊ−ｉ）の巡回置換行列となり、第ｉ＋２行、第ｊ＋２列ブロックの成分、第ｉ＋３行、第ｊ＋３列ブロックの成分、以下すべて同様である構成としたため、本発明によって生成された検査行列の保持に必要な記憶領域は(ｑ＋１−ｒ)×ｒビットという程度にまで削減することができる。そして、マスクパターンを利用することによって、同一のデータから符号化率の異なる多くの種類の検査行列を生成することが可能となり、さらにその検査行列の切り替えも瞬時に可能である。【００３４】
これによって、複数の低密度パリティ検査符号（ＬＤＰＣ符号）を使い分ける際に必要であった記憶領域を削減し、かつその使い分けの際の切り替えに要する時間を小さくすることが可能であるという、優れた特徴を持つ符号化装置、誤り訂正符号構成方法およびそのプログラムを提供することができる。
【図面の簡単な説明】
【００３５】
【図１】本発明の第１の実施形態に係る符号化装置を含む通信系統について示す説明図である。
【図２】図１で示した検査行列生成手段のより詳細な構成について示す説明図である。
【図３】図２で示した検査行列生成手段で行われるブロック型検査行列の生成の動作について示すフローチャートである。
【図４】図３のステップＳ１０４として示した第２の次数変更部による処理の詳細を示すフローチャートである。
【図５】図１で示した符号化手段の構成について説明する説明図である。
【図６】具体的な動作例で示した動作によって得られる検査行列の一例を示す説明図である。
【図７】具体的な動作例で示した動作によって得られる検査行列の別の例を示す説明図である。
【図８】本発明の第２の実施形態に係る符号化装置を含む通信系統について示す説明図である。
【図９】図８で示した検査行列生成手段のより詳細な構成について示す説明図である。
【図１０】図８で示した検査行列生成手段で行われるブロック型検査行列の生成の動作について示すフローチャートである。
【図１１】検査行列の中の長さ４および６のサイクル（閉路）の例を示す説明図である。
【図１２】非特許文献３〜４に記載の技術によるｕ（ｉ，ｊ）の決定方法の一例を表すフローチャートである。
【発明を実施するための形態】
【００３６】
（第１の実施形態）
以下、本発明の第１の実施形態の構成について添付図１に基づいて説明する。
最初に、本実施形態の基本的な内容について説明し、その後でより具体的な内容について説明する。
本実施形態に係る符号化装置１０は図１に示すように、擬似巡回型ＬＤＰＣ（低密度パリティ検査）符号の、行数と列数がともにｑ−１の巡回置換行列もしくは零行列を成分とする（ｑは４以上で、かつ２のべき乗となる整数）、行ブロック数がｒ、列ブロック数がｑ＋１であり（ｒは４以上ｑ以下の整数）、かつ第ｉ行ブロック、第ｊ列ブロック成分が（ｉは０からｒ−１の間の整数、ｊは０からｑの間の整数とし、行列の左端の列を第０列、上端の行を第０行とする）整数ｊ−ｉを引数とする関数λ（ｊ−ｉ）の値を次数とする巡回置換行列もしくは零行列に一致するブロック型検査行列を生成する検査行列生成手段１１と、入力されるメッセージからブロック型検査行列によって符号語を生成して出力する符号化手段１２とを有している。
さらに、検査行列生成手段１１は、ブロック型検査行列の関数値λ（ｊ−ｉ）を有限体ＧＦ（ｑ＾２）のｑ−１個の元を根とする自己相反多項式の係数によって規定する次数割当部１１ａと、与えられたマスクパターンを用いてブロック型検査行列の各列ブロックの成分の中で非零行列となる成分の数と該ブロック型検査行列の各行ブロックの成分の中で非零行列となる成分の数とを規定する重み分布決定部１１ｂと、ブロック型検査行列の第ｋ＿ｒ列ブロック（ｋ＿ｒは（ｑ＋１−ｒ）／２の整数部分）の成分の総和を巡回置換行列とする第１の次数変更部１１ｃと、ブロック型検査行列の該第ｋ＿ｒ列ブロックを除いた各列ブロックの成分の中で非零行列となる成分の行ブロック番号を規定する第２の次数変更部１１ｄとを有する。
【００３７】
また、符号化手段１２は、検査行列生成手段が生成したブロック型検査行列およびマスクパターンを記憶する行列データ保存用メモリ３３と、メッセージの情報ビット列と有限体ＧＦ（ｑ＾２）のｑ−１個の元を根とする自己相反多項式の係数によって規定した整数ｊ−ｉを引数とする関数λ（ｊ−ｉ）の値を次数とする巡回置換行列との行列積を算出するｒ個の行列乗算装置３１と、行列乗算装置への入力信号を行列データ保存用メモリに保持されたマスクパターンによって切り替えるためのセレクタ３２とを有する。
【００３８】
そして行列データ保存用メモリ３３が、複数のブロック型検査行列のすべての列ブロックにおいて、該列ブロック中の成分が非零の巡回置換行列であるすべての行ブロックの行番号を保持する機能と、セレクタへの入力信号をブロック型検査行列の各々に対して変える機能とを備える。
【００３９】
この構成を備えることにより、符号化装置１０は複数のＬＤＰＣ符号を使い分ける際に必要となる記憶領域を削減し、かつその切り替えに要するオーバーヘッドを小さくすることが可能となる。
以下、これをより詳細に説明する。
【００４０】
図１は、本発明の第１の実施形態に係る符号化装置１０を含む通信系統１について示す説明図である。通信系統１は、通信機器や記憶装置などから入力されるデジタル信号であるメッセージから符号語を生成する符号化装置１０と、符号化装置１０から出力される符号語を変調して搬送波に載せる変調器２１と、変調器２１から出力される搬送波を伝送する伝送路２２と、伝送路２２を介して伝送されてきた搬送波から符号語を抽出する復調器２３と、抽出された符号語を復号して元のメッセージを抽出する復号化装置２４とからなる。または、この伝送路２２を、たとえば光ディスクや磁気ディスクなどのような記憶媒体に置換してもよい。
【００４１】
符号化装置１０は、擬似巡回型ＬＤＰＣ符号のブロック型検査行列を生成する検査行列生成手段１１と、このブロック型検査行列を使用して、入力されるメッセージから符号語を生成する符号化手段１２とを含む。数５は、この検査行列生成手段１１が生成するブロック型検査行列について示す。
【００４２】
【数５】
2011136089.tif 000007
【００４３】
ちなみにこの数５は、前述の数１において、０≦ｉ＜ｒ、ｋ＜ｊ＜ｎに関するｕ（ｉ，ｊ）を、ｊ＝ｋ＋ｉ、もしくは、ｊ＝ｋ＋１＋ｉが成立する場合にのみｕ（ｉ，ｊ）＝０とし、それ以外の場合にはｕ（ｉ，ｊ）＝−∞としたものである。
【００４４】
以下では説明を容易にするため、以下ではｑを２のべき乗（ｑ＝２＾ｓ；ｓは２以上の整数）とし、ｒを４以上ｑ以下の正整数、ｋをｑ＋１−ｒとする。また前述の数２の巡回置換行列Ｐの行数、及び列数をｑ−１とする。数５は行ブロック数がｒ、列ブロック数ｎが（ｑ＋１）のブロック型行列である。
【００４５】
図２は、図１で示した検査行列生成手段１１のより詳細な構成について示す説明図である。また、図３は、図２で示した検査行列生成手段１１で行われるブロック型検査行列（数５）の生成の動作について示すフローチャートである。この動作は、数５に示したブロック型検査行列のｒ×（ｋ＋１）個の成分についてｕ（ｉ，ｊ）を決定するものである（ｉは０からｒ−１の間の整数、ｊは０からｋの間の整数）。
【００４６】
検査行列生成手段１１は、次数割当部１１ａ、重み分布決定部１１ｂ、第１の次数変更部１１ｃ、および第２の次数変更部１１ｄといった動作部を有する。
【００４７】
次数割当部１１ａはまず、すべてのｕ（ｉ，ｊ）に対してｕ（ｉ，ｊ）＝λ（ｊ−ｉ）と割り当てる（ステップＳ１０１）。ここで、整数ｔに対して、ｔ＋ｒ＋（ｑ／２）がｑ＋１で割り切れない場合、λ（ｔ）は次に説明する手順によって定まる正整数であり、ｔ＋ｒ＋（ｑ／２）がｑ＋１の倍数である場合、λ（ｔ）＝−∞であるとする。
【００４８】
整数ｔに対するλ（ｔ）の決定方法について説明する。βを有限体ＧＦ（ｑ＾２）の原始元とし、−（ｑ−２）／２≦ｈ≦（ｑ−２）／２となるすべての整数ｈに関して、β＾ｈを零として持つ次の数６の多項式をｇ（ｘ）とし、そのｔ次の項の係数をｇ＿ｔとする。
【００４９】
【数６】
2011136089.tif 000008
【００５０】
上記の数６の係数ｇ＿ｔは、ｇ＿０＝０であり、０＜ｔ≦ｑについては、ｇ＿ｔ＝ｇ＿（ｑ＋１−ｔ）となる。このように低次の項の係数と高次の項の係数を逆順にしても変わらない多項式を自己相反多項式と呼ぶ。また０＜ｔ≦ｑについて、係数ｇ＿ｔは前述の原始元βを用いて、β＾ｔのべき乗で表すことができる。このべき指数をμ（ｔ）と表す。即ち、ｇ＿ｔ＝（β＾（ｑ＋１））＾μ（ｔ）である。μ（ｔ）の引数ｔの範囲をｑ＋１の倍数を除くすべての整数に拡張して、μ（ｔ）＝μ（ｔ  ｍｏｄ（ｑ＋１））とする。さらに、この整数μ（ｔ）を用いて、ｔ＋ｒ＋（ｑ／２）がｑ＋１で割り切れない整数ｔについて、前述のλ（ｔ）を次の数７によって定義する。
【００５１】
【数７】
2011136089.tif 000009
【００５２】
また、ｔ＋ｒ＋（ｑ／２）がｑ＋１で割り切れる整数ｔについては便宜上λ（ｔ）＝−∞とする。以上の様に、ステップＳ１０１で整数値λ（ｔ）を算出し、すべてのｕ（ｉ，ｊ）について、ｕ（ｉ，ｊ）＝λ（ｊ−ｉ）と設定する。これによって前述の数１は、以下の数８の形で表すことができる。
【００５３】
【数８】
2011136089.tif 000010
【００５４】
次に重み分布決定部１１ｂは、上述の数８の検査行列の行ブロック、列ブロックに関する重み分布を決定する（ステップＳ１０２）。誤り訂正能力を高める観点から、通常、密度発展法を使用して重み分布を決定するが、ここでの手段は密度発展法に限定したものでない。但し、第ｋ＋１列ブロックから第ｑ列ブロックについては、すべて列重みは２とする。
【００５５】
既にステップＳ１０１によってすべてのｕ（ｉ，ｊ）はλ（ｊ−ｉ）に決定しているが、次に示すステップＳ１０３〜１０４によって、ステップＳ１０２で算出した重み分布に一致するように、一部のｕ（ｉ，ｊ）を−∞に変更することになる。
【００５６】
前述の数７によりλ（ｋ）＝λ（ｋ＋１）＝０であるから、０≦ｉ＜ｒ、ｋ＜ｊ＜ｎに関するｕ（ｉ，ｊ）を、ｊ≠ｋ＋ｉかつｊ≠ｋ＋１＋ｉの場合にｕ（ｉ，ｊ）＝−∞と変更すれば、数８の行列は数５の行列の形となる。従って、０≦ｉ＜ｒ、ｋ＜ｊ＜ｎに関するｕ（ｉ，ｊ）についてはｊ≠ｋ＋ｉかつｊ≠ｋ＋１＋ｉの場合にｕ（ｉ，ｊ）＝−∞と変更されているものとする。
【００５７】
第１の次数変更部１１ｃは、第ｋ＿ｒ列ブロックの成分の総和が巡回置換行列となるように、一部のｕ（ｉ，ｋ＿ｒ）を−∞に変更する（ステップＳ１０３）。ここで、ｋ＿ｒは次の数９に示す整数値を表す。
【００５８】
【数９】
2011136089.tif 000011
【００５９】
即ち、ｋ＿ｒは（ｑ＋１−ｒ）／２の整数部分を表す。第ｋ＿ｒ列ブロックの総和が巡回置換行列になるように一部のｕ（ｉ，ｋ＿ｒ）を−∞に変更する方法の一例については後述する。
【００６０】
第２の次数変更部１１ｄは、ステップＳ１０３で処理を行った第ｋ＿ｒ列ブロック以外の各列ブロックｊについて、一部のｕ（ｉ，ｊ）を−∞に変更する（ステップＳ１０４）。この時、ステップＳ１０２で定めた重み分布を満足し、さらに図１０で説明した短いサイクルの数がなるべく少なくなるようにする。ステップＳ１０４の処理の詳細についても後述する。
【００６１】
検査行列生成手段１１の動作についてさらに説明する。前述したように、検査行列生成手段１１は数５の検査行列におけるすべてのｕ（ｉ，ｊ）を決定する（ｉは０からｒ−１の間の整数、ｊは０からｋの間の整数）。前述のように、ステップＳ１０１では数７に示したλ（ｔ）によって、ｕ（ｉ，ｊ）＝λ（ｊ−ｉ）とする。これに続くステップＳ１０２では、与えられた検査行列の重み分布に従って、一部のｕ（ｉ，ｊ）をλ（ｊ−ｉ）から−∞に変更する。各ｉ、ｊについて、ｍ（ｉ，ｊ）を１あるいは０のいずれかとし、次の数１０の行列をＨ（ｍ）と記す。また、数１０において、ｕ（ｉ，ｊ）＊ｍ（ｉ，ｊ）は数１１の通りとする。
【００６２】
【数１０】
2011136089.tif 000012
【００６３】
【数１１】
2011136089.tif 000013
【００６４】
数１０および数１１から明らかなように、ｍ（ｉ，ｊ）は、その値によってｕ（ｉ，ｊ）の値をλ（ｊ−ｉ）から−∞に変更するか否かを指定していると見ることができる。即ち、各ｉ、ｊについて、ｍ（ｉ，ｊ）を前述の重み分布ｃ（ｗ）、ｖ（ｗ）に従うように設定することで、数１０のブロック行列Ｈ（ｍ）は所望の検査行列となる。正整数ｗに関して、行ブロックに関する重み分布ｃ（ｗ）は、ｕ（ｉ，ｊ）＊ｍ（ｉ，ｊ）≠−∞となる列ｊの数がｗに一致する行ｉの数を表し、列ブロックに関する重み分布ｖ（ｗ）は、ｕ（ｉ，ｊ）＊ｍ（ｉ，ｊ）≠−∞となる行ｉの数がｗに一致する列ｊの数を表す。ｍ（ｉ，ｊ）の値を変えることにより、行列Ｈ（ｍ）も変わるため、複数の検査行列を表現することができる。
【００６５】
前述のように、０≦ｉ＜ｒ、ｋ＜ｊ≦ｑに関するｍ（ｉ，ｊ）については、ｊ＝ｋ＋ｉ、あるいはｊ＝ｋ＋１＋ｉの場合にのみｍ（ｉ，ｊ）＝１とし、それ以外の場合はｍ（ｉ，ｊ）＝０と固定されているとする。従って一つの検査行列を表現するのに必要なビット数は、この場合、ｋ×ｒビットである。このようにｍ（ｉ，ｊ）は元の数５のブロック行列の各成分をマスクする役割を果たしており、ｍ（ｉ，ｊ）をマスクパターンと呼ぶ。
【００６６】
ステップＳ１０３で、第１の次数変更部１１ｃは第ｋ＿ｒ列（ｋ＿ｒは数９に示したとおり）について、ｕ（ｉ，ｋ＿ｒ）＝−∞とする行ｉを決定する。上記の記法を用いれば、すべての０≦ｉ＜ｒについて、ｍ（ｉ，ｋ＿ｒ）の値を決定することに等しい。第ｋ＿ｒ列の重みは３以上の奇数となるように設定する。説明を簡単にするため、第ｋ＿ｒ列の重みを３とし、数１０の行列Ｈ（ｍ）の第ｋ＿ｒ列ブロックの総和が巡回置換行列となるように、ｍ（ｉ，ｋ＿ｒ）の値を設定する方法について説明する。まず、ｒが奇数の場合にはｍ（ｉ，ｋ＿ｒ）の値を次の数１２によって定める。
【００６７】
【数１２】
2011136089.tif 000014
【００６８】
以上のように設定することにより、数１０の行列Ｈ（ｍ）の第ｋ＿ｒ列ブロックの各成分の総和は、次数がｕ（（ｒ＋１）／２，ｋ＿ｒ）の巡回置換行列となる。また、ｒが６以上の偶数の場合にはｍ（ｉ，ｋ＿ｒ）の値を次の数１３によって定める。
【００６９】
【数１３】
2011136089.tif 000015
【００７０】
この時、行列Ｈ（ｍ）の第ｋ＿ｒ列ブロックの各成分の総和は、次数がｕ（ｒ／２，ｋ＿ｒ）の巡回置換行列となる。最後にｒが４の場合にはｍ（０、ｋ＿４）＝１、ｍ（１、ｋ＿４）＝０、ｍ（２、ｋ＿４）＝１、ｍ（３、ｋ＿４）＝１とする。この時、Ｈ（ｍ）の第ｋ＿４列ブロックの各成分の総和は、次数がｕ（３，ｋ＿４）の巡回置換行列となる。
【００７１】
続くステップＳ１０４で、第２の次数変更部１１ｄは、第ｋ＿ｒ列以外のすべての列ｊについて、ｍ（ｉ，ｊ）の値を決定する。図４は図３のステップＳ１０４として示した第２の次数変更部１１ｄによる処理の詳細を示すフローチャートである。まず第２の次数変更部１１ｄは、初期状態としてｋ＿ｒ列以外のすべての列ｊについてｍ（ｉ，ｊ）＝０と設定する（ステップＳ２０１）。
【００７２】
続いて第２の次数変更部１１ｄは、各列ｊ毎に、ｍ（ｉ，ｊ）＝１とする行ｉを決めていく（ステップＳ２０２〜２０４）。はじめに、列ｊの重み（ｍ（ｉ，ｊ）＝１となる行ｉの数）が零である場合、数１０の行列Ｈ（ｍ）に関して、ｕ（ｉ，ｊ）≠−∞であり、かつＨ（ｍ）の行ブロックの中で最も重みが最も少ない行番号ｉを選択し（ｉは０からｒ−１の間の整数）、ｍ（ｉ，ｊ）＝１とする（ステップＳ２０５）。
【００７３】
次に、ｕ（ｉ，ｊ）≠−∞であり、行列Ｈ（ｍ）の最小サイクル長が最も大きく、なおかつ長さが最小であるサイクルの数が最も少なくなるような行番号ｉを選択してｍ（ｉ，ｊ）＝１とする（ステップＳ２０６）。尚、行番号ｉが一意的に定まらない場合には、前述条件を満たす行番号の中からランダムに選択する。
【００７４】
以下、列ｊの重み（ｍ（ｉ，ｊ）＝１となる行番号ｉの数）が、図３のステップＳ１０２において各列毎に定められた重み（図４では列ｊの重みをｗｔ（ｊ）と表している）に一致するまでステップＳ２０４〜２０６の処理を続ける（ステップＳ２０７〜２０８）。ここまでの処理を、列ｋ＿ｒを除くすべての列について行うことによって検査行列Ｈ（ｍ）を得る（ステップＳ２０９〜２１０）。
【００７５】
以上の手順によって算出された検査行列は、符号化処理を単純にするため、第ｋ＿ｒ列ブロックの総和が単位行列となるように、第ｋ＿ｒ列ブロックの各成分を一様に巡回シフトして得られた列ブロックと、第ｋ列ブロックを入れ替えて使用する。また、ｑ＋１に一致しない整数ｎに関するｒ×ｎのブロック型検査行列の生成については、ｎ＜ｑ＋１に関して上記の手段によって、ｒ×（ｑ＋１）ブロック型行列を生成し、ｑ＋１個の列ブロックの内、右端のｒ個の列ブロックを含むｎ個の列ブロックを選択することで、ｒ×ｎのブロック型検査行列を生成する。
【００７６】
図５は、図１で示した符号化手段１２の構成について説明する説明図である。以上で述べた検査行列の生成方法によれば、マスクパターンｍ（ｉ，ｊ）の変更のみで他のパラメータを持つ符号に変更できるため、次に説明するように、符号化手段１２はマスクパターンの交換のみによって対応可能となる構成とすることができる。
【００７７】
符号化手段１２は、数５に示した検査行列の行ブロック数ｒと同数の行列乗算装置３１＿０、３１＿１、…、３１＿（ｒ−１）を備え、これらｒ個の行列乗算装置３１への入力データを選択するためのセレクタ３２＿０、３２＿１、…、３２＿（ｒ−１）と、該セレクタの切り替え信号となるｒビットのデータを出力する行列データ保存用メモリ３３とを備える。また、ｒ個の行列乗算装置３１からの出力をまとめる排他的論理和演算装置３４、３５＿０、３５＿１、…、３５＿（ｒ−２）とセレクタ３６も備える。
【００７８】
また、符号化手段１２は、行列データ保存用メモリ３３に保持するデータに応じて、使用するＬＤＰＣ符号の検査行列を変えることができる。この場合、一つの行列データの保持に必要な記憶領域はｋ×ｒビットとなる。
【００７９】
以下、符号化手段１２が数１０に示した検査行列によって擬似巡回型ＬＤＰＣ符号によって入力メッセージの情報ビット列の符号化を行い、情報ビット数（ｑ−１）×ｋビットの入力に対して、（ｑ−１）×ｒビットのパリティビットを付加して出力する場合の例について説明する。この場合、情報ビットと冗長ビットで一フレームを構成し、一フレームの総ビット数は、前述のようにｋ＝ｑ＋１−ｒであるから、ｑ＾２−１ビットとなる。
【００８０】
この（ｑ−１）×ｒビットのパリティビットは、検査行列と該フレームの行列積が零となるように決定される。符号化手段１２は、情報ビット（ｑ−１）ビットずつｋ回に分けて入力し、各々をセレクタ３２を通して、ｒ個の行列乗算装置３１に入力する。
【００８１】
第ｉ番目の行列乗算装置３１＿ｉ（ｉは０からｒ−１の間の整数）は、内部にレジスタを持ち、ｋ回の情報ビット入力のうちのｊ番目のｑ−１ビットからなる情報ビット列がセレクタ３２に入力されると（ｊは０からｋ−１の間の整数）、このセレクタ３２の出力と行列Ｐ＾ｕ（ｉ，ｊ）との行列積を計算して、その計算結果と行列乗算装置３１ｌの内部レジスタが保持するデータとを加算した結果を同レジスタに保持する。
【００８２】
尚、この行列乗算装置３１ｌの内部レジスタの初期値は０とし、ここでの加算はビット毎の排他的論理和を意味する。また、セレクタ３２は、ｊ番目のｑ−１ビットからなる情報ビット列、零ビット、及び排他的論理和演算装置３４の出力を入力とし、行列データ保存用メモリ３３に保持されたマスクパターンｍ（ｉ，ｊ）を切替え信号とする。セレクタ３２は、ｍ（ｉ，ｊ）＝１の時には前述のように行列乗算装置３１ｌに第ｊ番目のｑ−１ビットからなる情報ビット列を出力し、ｍ（ｉ，ｊ）＝０の時は行列乗算装置３１ｌに零ビットを出力する。
【００８３】
（ｑ−１）×ｋビットの情報ビット列をａ＿０＾（ｊ），ａ＿１＾（ｊ），…，ａ＿（ｑ−２）＾（ｊ）、ｊ＝０，１，…，ｋ−１と書くと、全情報ビットを入力し終えた段階で行列乗算装置３１＿ｉの内部レジスタが保持するｑ−１ビットのデータｂ＿０＾（ｉ），ｂ＿１＾（ｉ），…，ｂ＿（ｑ−２）＾（ｉ），ｉ＝０，１，…，ｒ−１は次の数１４に行列表記されたデータと一致する。
【００８４】
【数１４】
2011136089.tif 000016
【００８５】
数１４で、Ｔは転置行列を表す。ｂ＿０＾（ｉ），ｂ＿１＾（ｉ），…，ｂ＿（ｑ−２）＾（ｉ），ｉ＝０，１，…，ｒ−１は排他的論理和３０４にてビット毎に加算され、数１５に示すｑ−１ビットのパリティビットｐ＿０＾（０），ｐ＿１＾（０），…，ｐ＿（ｑ−２）＾（０）となる。
【００８６】
【数１５】
2011136089.tif 000017
【００８７】
数１５のパリティビットｐ＿０＾（０），ｐ＿１＾（０），…，ｐ＿（ｑ−２）＾（０）はセレクタ３２＿ｉ（ｉは０からｒ−１の間の整数）に入力され、行列データ保存用メモリ３３から提供される切り替え信号ｍ（ｉ，ｋ）によって選択され、ｒ個の行列乗算装置３１へ入力される。この結果、行列乗算装置３１＿ｉ（ｉは０からｒ−１の間の整数）の内部レジスタが保持するデータｂ＿０＾（ｉ），ｂ＿１＾（ｉ），…，ｂ＿（ｑ−２）＾（ｉ），ｉ＝０，１，…，ｒ−１は次の数１６に示すように更新される。
【００８８】
【数１６】
2011136089.tif 000018
【００８９】
符号化手段１２は、これらの更新されたデータｂ＿０＾（ｉ），ｂ＿１＾（ｉ），…，ｂ＿（ｑ−２）＾（ｉ），ｉ＝０，１，…，ｒ−１を用いて、残りの（ｑ−１）×（ｒ−１）ビットからなるパリティビット列ｐ＿０＾（ｉ），ｐ＿１＾（ｉ），…，ｐ＿（ｑ−２）＾（ｉ），ｉ＝１，２，…，ｒ−１を次の数１７に示すように、後退代入法によって算出する。
【００９０】
【数１７】
2011136089.tif 000019
【００９１】
（ｑ−１）×ｋビットの情報ビット列ａ＿０＾（ｊ），ａ＿１＾（ｊ），…，ａ＿（ｑ−２）＾（ｊ）、ｊ＝０，１，…，ｋ−１と、それによって上記の手順で算出される（ｑ−１）×ｒビットのパリティビット列ｐ＿０＾（ｉ），ｐ＿１＾（ｉ），…，ｐ＿（ｑ−２）＾（ｉ），ｉ＝１，２，…，ｒ−１からなるベクトルと、数１０の検査行列との行列積は零になる。符号化手段１２は、このようにして行列データ保存用記憶装置に保持されたマスクパターンを変えることにより、ｋ×ｒビット分の記憶領域の増加のみによって、別の検査行列に対応した符号化装置とすることができる。
【００９２】
（具体的な動作例）
以下、具体的な数値例を用いて検査行列生成手段１１の動作内容について説明し、本実施形態の検査行列生成手段１１によって生成された検査行列の一例について説明する。ｑを２＾６（＝６４）とすると、検査行列生成手段１１は符号長がｑ＾２−１＝４０９５ビット以下であるＬＤＰＣ符号の検査行列を生成することができる。
【００９３】
βを有限体ＧＦ（２＾６）の原始元とし、β＾６＋β＋１＝０とする。この時、数７の多項式ｇ（ｘ）のｔ次の項の係数（ｔは１から６４の間の整数）ｇ＿ｔから導かれる６４個の整数μ（１），μ（２），…，μ（６４）は各々、０，６１，３９，５７，２２，１３，６０，４９，２５，４２，１７，２４，２３，５５，７，３３，２７，４８，５３，１９，６２，３２，５９，４６，３６，４４，４１，４５，３１，１２，５２，１，１，５２，１２，３１，４５，４１，４４，３６，４６，５９，３２，６２，１９，５３，４８，２７，３３，７，５５，２３，２４，１７，４２，２５，４９，６０，１３，２２，５７，３９，６１，０となる。
【００９４】
行ブロック数ｒを１８とすると、数７のλ（０），λ（１），…，λ（６４）は各々６，５４，２２，２３，１６，４１，２４，４８，５９，１２，２１，５６，３８，６０，６２，−∞，６２，６０，３８，５６，２１，１２，５９，４８，２４，４１，１６，２３，２２，５４，６，３２，２６，４７，５２，１８，６１，３１，５８，４５，３５，４３，４０，４４，３０，１１，５１，０，０，５１，１１，３０，４４，４０，４３，３５，４５，５８，３１，６１，１８，５２，４７，２６，３２となる。
【００９５】
ここで、図２〜３に示した次数割当部１１ａ（ステップＳ１０１）の動作にもあるように、すべてのｕ（ｉ，ｊ）について（０≦ｉ＜１８，０≦ｊ＜６５）、ｕ（ｉ，ｊ）＝λ（ｊ−ｉ）とする。尚、０≦ｉ＜１８、４８≦ｊ＜６５に関するｍ（ｉ，ｊ）については、ｊ＝４７＋ｉ、あるいはｊ＝４８＋ｉの場合にのみｍ（ｉ，ｊ）＝１とし、それ以外の場合はｍ（ｉ，ｊ）＝０と固定されているとする。
【００９６】
重み分布決定部１１ｂ（ステップＳ１０２）の重み分布をｖ（２）＝１７，ｖ（３）＝１２，ｖ（８）＝７，ｖ（０）＝２９，ｃ（７）＝１８とする。数９によってｋ＿１８＝２３であり、第２３列ブロック中の１８個の次数ｕ（０，２３），ｕ（１，２３），…，ｕ（１７，２３）は、各々、４８，５９，１２，２１，５６，３８，６０，６２，−∞，６２，６０，３８，５６，２１，１２，５９，４８，２４となる。
【００９７】
数１３によって、ｍ（ｉ，２３）はｉ＝０，９，１６の場合のみ１であり、それ以外の場合は０である。第２の次数変更部１１ｄ（ステップＳ１０４）によって、この第２３列ブロックを除いた第０列ブロックから第４７列ブロックに関するマスクパターンｍ（ｉ，ｊ）を決定する。
【００９８】
前述の重み分布よりｖ（０）＝２９であるから、全６５列ブロックの中で重み０の列ブロックが２９列あり、第０列ブロックから第２８列ブロック（第２３列ブロックは除く）、及び第４７列ブロックを零とする。これ以外の第２９列ブロックから第４６列ブロックまでの１８列ブロック分について、前述の重み分布に従うように図４に示した手順によって、ｍ（ｉ，ｊ）の各値を決定する。
【００９９】
そして、検査行列の前述第２３列ブロックの総和が単位行列になるように第２３列ブロックの各成分を一様に巡回シフトして得られた列ブロックと、第４７列ブロックを入れ替えて使用する。
【０１００】
図６は、以上の動作例によって得られる検査行列の一例を示す説明図である。記述を平易にするため、図６の行列の各成分は巡回置換行列Ｐの次数部分のみを記した。また空白は全零行列（次数＝−∞）を表すものとする。図６の検査行列は、符号長が２２６８ビット、情報長が１１３４ビットの符号化率１／２の擬似巡回型ＬＤＰＣ符号の検査行列となる。
【０１０１】
もう一つ、列ブロック数ｒを６とした時の検査行列の生成例を示す。前述の生成例と全く同様に、ｑを２＾６（＝６４）とし、β＾６＋β＋１＝０となるβを有限体ＧＦ（２＾６）の原始元として、数７の多項式ｇ（ｘ）から検査行列を生成する。数７よりλ（０），λ（１），…，λ（６４）は各々４０，４３，３５，４５，５８，３１，６１，１８，５２，４７，２６，３２，６，５４，２２，２３，１６，４１，２４，４８，５９，１２，２１，５６，３８，６０，６２，−∞，６２，６０，３８，５６，２１，１２，５９，４８，２４，４１，１６，２３，２２，５４，６，３２，２６，４７，５２，１８，６１，３１，５８，４５，３５，４３，４０，４４，３０，１１，５１，０，０，５１，１１，３０，４４となる。
【０１０２】
この系列は、図６に示したｒ＝１８の場合の系列を１２回分右方向へ巡回シフトして得られる系列と同一である。図２〜３に示した次数割当部１１ａ（ステップＳ１０１）の動作より、すべてのｕ（ｉ，ｊ）について（０≦ｉ＜６，０≦ｊ＜６５）、ｕ（ｉ，ｊ）＝λ（ｊ−ｉ）とする。尚、０≦ｉ＜６，６０≦ｊ＜６５に関するｍ（ｉ，ｊ）については、ｊ＝５９＋ｉ、あるいはｊ＝６０＋ｉの場合にのみｍ（ｉ，ｊ）＝１とし、それ以外の場合はｍ（ｉ，ｊ）＝０と固定されているとする。
【０１０３】
重み分布決定部１１ｂ（ステップＳ１０２）の重み分布をｖ（２）＝５，ｖ（３）＝２０，ｖ（６）＝１１，ｖ（０）＝２９，ｃ（２２）＝２，ｃ（２３）＝４とする。数９よりｋ＿６＝２９であり、第２９列ブロック中の６個の次数ｕ（０，２９），ｕ（１，２９），…，ｕ（５，２９）は、各々、６０，６２，−∞，６２，６０，３８となる。
【０１０４】
数１３より、ｍ（ｉ，２９）はｉ＝０，３，４の時のみ１であり、それ以外の時、０である。第２の次数変更部１１ｄ（ステップＳ１０４）によって、第２９列ブロックを除いた第０列ブロックから第５９列ブロックに関するマスクパターンｍ（ｉ，ｊ）を決定する。
【０１０５】
前述の重み分布よりｖ（０）＝２９であるから、全６５列ブロックの中で重み０の列ブロックが２９列あり、第０列ブロックから第２８列ブロックを零とする。また第２９列は前述のように決定しているため、第３０列ブロックから第５９列ブロックまでの３０列ブロック分について、前述の重み分布に従うように図４に一例を示した手順によって、ｍ（ｉ，ｊ）の各値を決定する。
【０１０６】
そして、検査行列の第２９列ブロックの総和が単位行列になるように第２９列ブロックの各成分を一様に巡回シフトして得られた列ブロックと、第５９列ブロックを入れ替えて使用する。図７は、以上の動作によって得られる検査行列の一例を示す説明図である。記述を平易にするため、図７の行列の各成分は巡回置換行列Ｐの次数部分のみを記した。また空白は全零行列（次数＝−∞）を表すものとする。図７の検査行列は、符号長が２２６８ビット、情報長が１８９０ビットの符号化率５／６の擬似巡回型ＬＤＰＣ符号の検査行列となる。
【０１０７】
図６は列ブロック数ｒが１８、図７は列ブロック数ｒが６の、符号化率の異なる２種類の検査行列であるが、いずれも本実施形態の検査行列生成手段１１によって生成された同一のデータに基づくものであり、−∞でない成分の数値は前述の多項式ｇ（ｘ）の係数によって規定される数列μ（１），μ（２），…，μ（６４）によって定められているため、マスクパターンｍ（ｉ，ｊ）を取り替えることにより、いずれも図５に示した符号化装置によって符号化処理を実行することができる。
【０１０８】
（第１の実施形態の全体的な動作）
次に、上記の実施形態の全体的な動作について説明する。本実施形態に係る誤り訂正符号構成方法は、擬似巡回型低密度パリティ検査符号の、行数と列数がともにｑ−１の巡回置換行列もしくは零行列を成分とする（ｑは４以上で、かつ２のべき乗となる整数）、行ブロック数がｒ、列ブロック数がｑ＋１であり（ｒは４以上ｑ以下の整数）、かつ第ｉ行ブロック、第ｊ列ブロック成分が（ｉは０からｒ−１の間の整数、ｊは０からｑの間の整数とし、行列の左端の列を第０列、上端の行を第０行とする）整数ｊ−ｉを引数とする関数λ（ｊ−ｉ）の値を次数とする巡回置換行列もしくは零行列に一致するブロック型検査行列を生成する検査行列生成手段と、入力されるメッセージからブロック型検査行列によって符号語を生成して出力する符号化手段とからなる符号化装置にあって、ブロック型検査行列の関数値λ（ｊ−ｉ）を有限体ＧＦ（ｑ＾２）のｑ−１個の元を根とする自己相反多項式の係数によって検査行列生成手段の次数割当部が規定し（図３・ステップＳ１０１）、マスクパターンを用いてブロック型検査行列の各列ブロックの成分の中で非零行列となる成分の数と該ブロック型検査行列の各行ブロックの成分の中で非零行列となる成分の数とを検査行列生成手段の重み分布決定部が規定し（図３・ステップＳ１０２）、ブロック型検査行列の第ｋ＿ｒ列ブロック（ｋ＿ｒは（ｑ＋１−ｒ）／２の整数部分）の成分の総和を検査行列生成手段の第１の次数変更部が巡回置換行列とし（図３・ステップＳ１０３）、ブロック型検査行列の該第ｋ＿ｒ列ブロックを除いた各列ブロックの成分の中で非零行列となる成分の行ブロック番号を検査行列生成手段の第２の次数変更部が規定する（図３・ステップＳ１０４）。
【０１０９】
そして、検査行列生成手段が生成したブロック型検査行列およびマスクパターンを符号化手段の行列データ保存用メモリに記憶し、行列データ保存用メモリに保持されたマスクパターンによって入力信号を符号化手段のセレクタが切り替え、メッセージの情報ビット列と有限体ＧＦ（ｑ＾２）のｑ−１個の元を根とする自己相反多項式の係数によって規定した整数ｊ−ｉを引数とする関数λ（ｊ−ｉ）の値を次数とする巡回置換行列との行列積を符号化手段の行列乗算装置が算出する。
【０１１０】
ここで、上記各動作ステップについては、これをコンピュータで実行可能にプログラム化し、これらを前記各ステップを直接実行するコンピュータである符号化装置１０に実行させるようにしてもよい。本プログラムは、非一時的な記録媒体、例えば、ＤＶＤ、ＣＤ、フラッシュメモリ等に記録されてもよい。その場合、本プログラムは、記録媒体からコンピュータによって読み出され、実行される。
この構成および動作により、本実施形態は以下のような効果を奏する。
【０１１１】
本実施形態によれば、ブロック型検査行列の第ｉ行、第ｊ列ブロックの成分が零行列でない場合、巡回置換行列の次数はλ（ｊ−ｉ）であり、第ｉ＋１行、第ｊ＋１列ブロックの成分についても、零行列でない場合には、次数がλ（ｊ−ｉ）の巡回置換行列となり、第ｉ＋２行、第ｊ＋２列ブロックの成分、第ｉ＋３行、第ｊ＋３列ブロックの成分、以下すべて同様であるため、本発明によって生成された検査行列の保持に必要な記憶領域は（ｑ＋１−ｒ）×ｒビットのオーダーであり、大幅に少ない記憶領域で済む。
【０１１２】
また、検査行列の成分が巡回置換行列であるか零行列であるかのみを選択しなおすことで、巡回置換行列である場合の次数を変えることなく、さまざまなタイプの擬似巡回型ＬＤＰＣ符号の検査行列を生成できるため、符号化率、フレーム長、誤り率特性等のパラメータの異なる、複数のＬＤＰＣ符号を使い分ける通信システムにおいても、符号化、復号装置の切り替えに要する時間（オーバーヘッド）を削減できるという効果がある。
【０１１３】
（第２の実施形態）
本発明の第２の実施形態に係る符号化装置１１０は、第１の実施形態に係る符号化装置１０の構成に加えて、検査行列生成手段の重み分布決定部１１１ｂが、ブロック型検査行列のｑ＋１個の列ブロックの、右端ｒ−１個の列ブロックと第ｋ＿ｒ列ブロックを除くｑ＋１−ｒ個の列ブロックの中で、ｑ＋１−ｎ個の列ブロックの成分のすべてを零行列として定義すると共に、検査行列生成手段が、成分のすべてが零行列であるｑ＋１−ｎ個の列ブロックを削除する列ブロック削除部１１１ｅを備えるという構成とした。
【０１１４】
この構成によっても、第１の実施形態と同一の効果を得ることができる。さらに、生成される検査行列の列ブロック数をｒ＋１以上、ｑ＋１以下の任意の数とすることができるので、より幅広い種類の検査行列を生成することが可能となる。
以下、これをより詳しく説明する。
【０１１５】
図８は、本発明の第２の実施形態に係る符号化装置１１０を含む通信系統１０１について示す説明図である。通信系統１０１は、符号化装置１０が符号化装置１１０に置き換えられている点以外は、本発明の第１の実施形態で説明した通信系統１と同一の構成を有する。符号化装置１１０は、検査行列生成手段１１１と、第１の実施形態と同一の符号化手段１２とを含む。
【０１１６】
図９は、図８で示した検査行列生成手段１１１のより詳細な構成について示す説明図である。また、図１０は、図８で示した検査行列生成手段１１１で行われるブロック型検査行列の生成の動作について示すフローチャートである。検査行列生成手段１１１は、第１の実施形態に係る検査行列生成手段１１の重み分布決定部１１ｂを重み分布決定部１１１ｂに置換し、また新たに列ブロック削除部１１１ｅを含む以外は、第１の実施形態に係る検査行列生成手段１１（図２で示した）と同一の構成を有する。
【０１１７】
検査行列生成手段１１１では、行ブロック数がｒであり、列ブロック数がｑ＋１であり（ｑは２のべき乗）、第ｉ行ブロック、第ｊ列ブロック（ｉは０〜ｒ−１間の整数、ｊは０〜ｑの間の整数）の成分が関数値λ（ｊ−ｉ）を次数とする行数と列数が共にｑ−１巡回置換行列かもしくは零行列となるブロック型検査行列を生成することができる。
【０１１８】
次数割当部１１ａ（ステップＳ１０１）の動作は、第１の実施形態に係る検査行列生成手段１１（図３で示した）と同一である。これを受けた重み分布決定部１１１ｂでは、右端ｒ−１個の列ブロックと、第ｋ＿ｒ列ブロックを除いた列ブロックのうち、重みがゼロの列ブロックを設定することによって、生成される検査行列の列ブロック数をｒ＋１以上、ｑ＋１以下の任意の数とすることができる（ステップＳ３０２）。
【０１１９】
これに続く第１の次数変更部１１ｃ、および第２の次数変更部１１ｄ（ステップＳ１０３〜１０４）の動作は、図２〜３で説明したものと同一である。そして、検査行列生成手段１１１の動作はこの後、重みゼロの列ブロックを列ブロック削除部１１１ｅにて削除して（ステップＳ３０５）終了する。
【０１２０】
このブロック型検査行列の成分となる巡回置換行列と零行列の行、及び列数をｑ−１の倍数である任意の数に設定した場合にもサイクルの長さの最小値に変化はないため、行、及び列数がｑ−１の正の任意の倍数である巡回置換行列もしくは零行列を成分とするブロック型検査行列を図８〜１０の手段によって生成することができる。
【０１２１】
さらに、この検査行列生成手段１１１によって生成された行ブロック数ｒ、列ブロック数ｎ、その成分となる巡回置換行列の行数と列数が共にｔ×（ｑ−１）の検査行列（ｔは正整数）は、図５に示した符号化手段１２によって、（ｎ−ｒ）×ｔ×（ｑ−１）ビットの情報ビットに対し、ｒ×ｔ×（ｑ−１）ビットの冗長ビットを算出し、出力することができる。
【０１２２】
これまで本発明について図面に示した特定の実施形態をもって説明してきたが、本発明は図面に示した実施形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができる。
【０１２３】
上述した各々の実施形態について、その新規な技術内容の要点をまとめると、以下のようになる。なお、上記実施形態の一部または全部は、新規な技術として以下のようにまとめられるが、本発明は必ずしもこれに限定されるものではない。
【０１２４】
（付記１）  擬似巡回型低密度パリティ検査符号を構成するための符号化装置において、擬似巡回型低密度パリティ検査符号の、行数と列数がともにｑ−１の巡回置換行列もしくは零行列を成分とする（ｑは４以上で、かつ２のべき乗となる整数）、行ブロック数がｒ、列ブロック数がｑ＋１であり（ｒは４以上ｑ以下の整数）、かつ第ｉ行ブロック、第ｊ列ブロック成分が（ｉは０からｒ−１の間の整数、ｊは０からｑの間の整数とし、行列の左端の列を第０列、上端の行を第０行とする）整数ｊ−ｉを引数とする関数λ（ｊ−ｉ）の値を次数とする巡回置換行列もしくは零行列に一致するブロック型検査行列を生成する検査行列生成手段と、入力されるメッセージからブロック型検査行列によって符号語を生成して出力する符号化手段とを有し、前記検査行列生成手段が、ブロック型検査行列の関数値λ（ｊ−ｉ）を有限体ＧＦ（ｑ＾２）のｑ−１個の元を根とする自己相反多項式の係数によって規定する次数割当部と、与えられたマスクパターンを用いてブロック型検査行列の各列ブロックの成分の中で非零行列となる成分の数と該ブロック型検査行列の各行ブロックの成分の中で非零行列となる成分の数とを規定する重み分布決定部と、ブロック型検査行列の第ｋ＿ｒ列ブロック（ｋ＿ｒは（ｑ＋１−ｒ）／２の整数部分）の成分の総和を巡回置換行列とする第１の次数変更部と、ブロック型検査行列の該第ｋ＿ｒ列ブロックを除いた各列ブロックの成分の中で非零行列となる成分の行ブロック番号を規定する第２の次数変更部とを有することを特徴とする。
【０１２５】
（付記２）  前記検査行列生成手段の前記重み分布決定部が、前記ブロック型検査行列のｑ＋１個の列ブロックの、右端ｒ−１個の列ブロックと前記第ｋ＿ｒ列ブロックを除くｑ＋１−ｒ個の列ブロックの中で、ｑ＋１−ｎ個の列ブロックの成分のすべてを零行列として定義すると共に、
前記検査行列生成手段が、成分のすべてが零行列であるｑ＋１−ｎ個の列ブロックを削除する列ブロック削除部を備えることを特徴とする、付記１に記載の符号化装置。
【０１２６】
（付記３）  前記符号化手段が、
前記検査行列生成手段が生成した前記ブロック型検査行列および前記マスクパターンを記憶する行列データ保存用メモリと、
前記メッセージの情報ビット列と有限体ＧＦ（ｑ＾２）のｑ−１個の元を根とする自己相反多項式の係数によって規定した整数ｊ−ｉを引数とする関数λ（ｊ−ｉ）の値を次数とする巡回置換行列との行列積を算出するｒ個の行列乗算装置と、
前記行列乗算装置への入力信号を前記行列データ保存用メモリに保持された前記マスクパターンによって切り替えるためのセレクタと
を有することを特徴とする、付記１または付記２に記載の符号化装置。
【０１２７】
（付記４）  前記行列データ保存用メモリが、
複数の前記ブロック型検査行列のすべての列ブロックにおいて、該列ブロック中の成分が非零の巡回置換行列であるすべての行ブロックの行番号を保持する機能と、
前記セレクタへの入力信号を前記ブロック型検査行列の各々に対して変える機能とを備えることを特徴とする、付記３に記載の符号化装置。
【０１２８】
（付記５）  擬似巡回型低密度パリティ検査符号を構成するための符号化方法において、検査行列生成手段により、擬似巡回型低密度パリティ検査符号の、行数と列数がともにｑ−１の巡回置換行列もしくは零行列を成分とする（ｑは４以上で、かつ２のべき乗となる整数）、行ブロック数がｒ、列ブロック数がｑ＋１であり（ｒは４以上ｑ以下の整数）、かつ第ｉ行ブロック、第ｊ列ブロック成分が（ｉは０からｒ−１の間の整数、ｊは０からｑの間の整数とし、行列の左端の列を第０列、上端の行を第０行とする）整数ｊ−ｉを引数とする関数λ（ｊ−ｉ）の値を次数とする巡回置換行列もしくは零行列に一致するブロック型検査行列を生成し、
前記符号化手段により、前記生成したブロック型検査行列によって、入力されるメッセージから符号語を生成して出力し、
さらにブロック型検査行列を生成する際、
次数割当部により、ブロック型検査行列の関数値λ（ｊ−ｉ）を有限体ＧＦ（ｑ＾２）のｑ−１個の元を根とする自己相反多項式の係数によって規定し、
重み分布決定部により、与えられたマスクパターンを用いてブロック型検査行列の各列ブロックの成分の中で非零行列となる成分の数と該ブロック型検査行列の各行ブロックの成分の中で非零行列となる成分の数とを規定し、
第１の次数変更部により、ブロック型検査行列の第ｋ＿ｒ列ブロック（ｋ＿ｒは（ｑ＋１−ｒ）／２の整数部分）の成分の総和を巡回置換行列とし、
第２の次数変更部により、ブロック型検査行列の該第ｋ＿ｒ列ブロックを除いた各列ブロックの成分の中で非零行列となる成分の行ブロック番号を規定することを特徴とする。
【０１２９】
（付記６）  前記検査行列生成手段が生成した前記ブロック型検査行列および前記マスクパターンを前記符号化手段の行列データ保存用メモリに記憶し、
前記行列データ保存用メモリに保持された前記マスクパターンによって入力信号を前記符号化手段のセレクタが切り替え、
前記メッセージの情報ビット列と有限体ＧＦ（ｑ＾２）のｑ−１個の元を根とする自己相反多項式の係数によって規定した整数ｊ−ｉを引数とする関数λ（ｊ−ｉ）の値を次数とする巡回置換行列との行列積を前記符号化手段の行列乗算装置が算出する
ことを特徴とする、付記５に記載の誤り訂正符号構成方法。
【０１３０】
（付記７）  擬似巡回型低密度パリティ検査符号を構成するための誤り訂正符号構成プログラムにおいて、コンピュータに、
擬似巡回型低密度パリティ検査符号の、行数と列数がともにｑ−１の巡回置換行列もしくは零行列を成分とする（ｑは４以上で、かつ２のべき乗となる整数）、行ブロック数がｒ、列ブロック数がｑ＋１であり（ｒは４以上ｑ以下の整数）、かつ第ｉ行ブロック、第ｊ列ブロック成分が（ｉは０からｒ−１の間の整数、ｊは０からｑの間の整数とし、行列の左端の列を第０列、上端の行を第０行とする）整数ｊ−ｉを引数とする関数λ（ｊ−ｉ）の値を次数とする巡回置換行列もしくは零行列に一致するブロック型検査行列を生成する機能と、
前記生成したブロック型検査行列によって、入力されるメッセージから符号語を生成して出力する機能とを実行させ、
さらに、前記コンピュータに、ブロック型検査行列を生成する際、
ブロック型検査行列の関数値λ（ｊ−ｉ）を有限体ＧＦ（ｑ＾２）のｑ−１個の元を根とする自己相反多項式の係数によって規定する機能と、
与えられたマスクパターンを用いてブロック型検査行列の各列ブロックの成分の中で非零行列となる成分の数と該ブロック型検査行列の各行ブロックの成分の中で非零行列となる成分の数とを規定する機能と、
ブロック型検査行列の第ｋ＿ｒ列ブロック（ｋ＿ｒは（ｑ＋１−ｒ）／２の整数部分）の成分の総和を巡回置換行列とする機能と、
ブロック型検査行列の該第ｋ＿ｒ列ブロックを除いた各列ブロックの成分の中で非零行列となる成分の行ブロック番号を規定する機能とを実行させることを特徴とする誤り訂正符号構成プログラム。
【０１３１】
（付記８）  前記コンピュータに、
前記検査行列生成手段が生成した前記ブロック型検査行列および前記マスクパターンを記憶する機能と、
前記行列データ保存用メモリに保持された前記マスクパターンによって入力信号を切り替える機能と、
前記メッセージの情報ビット列と有限体ＧＦ（ｑ＾２）のｑ−１個の元を根とする自己相反多項式の係数によって規定した整数ｊ−ｉを引数とする関数λ（ｊ−ｉ）の値を次数とする巡回置換行列との行列積を算出する機能と
を実行させることを特徴とする、付記７に記載の誤り訂正符号構成プログラム。
【０１３２】
以上、実施形態（及び実施例）を参照して本願発明を説明したが、本願発明は上記実施形態（及び実施例）に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【０１３３】
この出願は２０１０年４月２７日に出願された日本出願特願２０１０−１０２４７９を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用可能性】
【０１３４】
本発明は、各種通信システムにおける、ビット誤り率の低下による高信頼化、あるいは所要電力の低減などのシステム構成上の要件を満たすための誤り訂正技術として、あるいは磁気記録などの記憶装置に関する信頼性向上のための誤り訂正技術として適用可能である。
【符号の説明】
【０１３５】
１、１０１  通信系統
１０、１１０  符号化装置
１１、１１１  検査行列生成手段
１１ａ  次数割当部
１１ｂ、１１２ｂ  重み分布決定部
１１ｃ  第１の次数変更部
１１ｄ  第２の次数変更部
１２  符号化手段
２１  変調器
２２  伝送路
２３  復調器
２４  復号化装置
３０  行列乗算装置
３２、３６  セレクタ
３３  行列データ保存用メモリ
３４、３５  排他的論理和演算装置
１１１ｅ  列ブロック削除部
【図１】
2011136089.tif 000020
【図２】
2011136089.tif 000021
【図３】
2011136089.tif 000022
【図４】
2011136089.tif 000023
【図５】
2011136089.tif 000024
【図６】
2011136089.tif 000025
【図７】
2011136089.tif 000026
【図８】
2011136089.tif 000027
【図９】
2011136089.tif 000028
【図１０】
2011136089.tif 000029
【図１１】
2011136089.tif 000030
【図１２】
2011136089.tif 000031
【国際調査報告】
2011136089.tif 000032
2011136089.tif 000033
2011136089.tif 000034
2011136089.tif 000035