説明

バイト内複数スポッティバイト誤り訂正・検出方法及び装置

【課題】
多重のバイト内複数スポッティバイト誤りを制御することができる機能を備えたバイト内複数スポッティバイト誤り訂正・検出装置を提供する。
【解決手段】
入力情報データを基に送信語を生成する符号化手段と、情報伝送路中で誤りが発生した前記送信語を受信語として入力して前記誤りを訂正または検出する復号手段とを備えるバイト内複数スポッティバイト誤り訂正・検出装置であって、前記符号化手段は、スポッティバイト誤り制御符号を表現するパリティ検査行列と、前記入力情報データとを基に生成した検査情報を前記入力情報データに付加することにより、前記送信語を生成し、前記復号手段は、前記パリティ検査行列を基に前記受信語のシンドロームを生成するシンドローム生成手段と、前記シンドローム生成手段により生成されたシンドロームを基に前記受信語の誤りを訂正または検出する誤り訂正手段とを備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、スポッティバイト誤り訂正・検出方法及び装置に関し、より詳しくは、複数のビットをバイトとし、その複数のバイトから構成される語(ワード)に対して、任意の1バイト中に複数のスポッティバイト誤りが生じたときに、その誤りを検出または訂正するために用いて好適なバイト内複数スポッティバイト誤り訂正・検出方法及び装置に関する。
【背景技術】
【0002】
近年、情報化社会の進展や半導体技術の進歩等により、ディジタルデータの信頼性向上がますます重要なものになってきている。ディジタルデータの伝送または記録を正確に行おうとする場合、送信データが伝送経路中でノイズ等の影響を受けて誤って伝送されたり、素子の故障、あるいは記録媒体等の欠陥等により生じた誤りを検出・訂正する必要がある。この誤りの検出・訂正を実現するために、符号理論を基礎とした誤り訂正・検出符号が従来より種々に開発されてきている。
【0003】
従来の誤り訂正符号として、例えば、bビット(bは2以上の整数)の塊りをバイトと称し、1バイト中の任意の誤りを訂正する符号(SEC符号と称する)として優れたHong-Patel符号が開示されている(例えば、非特許文献1参照)。
【0004】
また、高速半導体メモリシステムにおいて、従来最もよく使用された1ビット誤り訂正・2ビット誤り検出符号を包含する特徴を有した奇数重み列バイト誤り訂正符号が開示されている(例えば、非特許文献2参照)。
【0005】
さらに、1バイト誤りを訂正し、また2バイト誤りを検出する符号(SEC−DED符号と称する)は、リードソロモン符号(Reed−Solomon符号)、及びその改良した効率のよい符号として提案されており、多くの計算機システム等の主記憶装置にすでに採用されている(例えば、非特許文献3や非特許文献4参照)。
【0006】
また、バイト誤りを検出する符号としては、1ビット誤りを訂正し、かつ2ビット誤りを検出するとともに、1バイトの誤りをも検出する符号(SEC−DED−SED符号と称する)が発表され、現在、計算機システムの主記憶装置に多く適用されている(例えば、非特許文献5参照)。
【0007】
なお、これら1980年代後半までの相互に関連した多くの符号研究・開発に関する具体的な内容は、非特許文献6において総括的に述べられている。
【0008】
その後、新しく開発された高速半導体メモリ用の符号としては、1バイトの誤りを訂正し、かつ2ビット誤りを検出する符号(SEC−DED符号と称する)が下記非特許文献7に、また、1バイトの誤りを訂正し、かつ1ビット誤りと1バイト誤りとの同時誤りを検出する符号(SEC−(S+S)EC符号と称する)が非特許文献8に提案されている。さらに、1バイトの誤りを訂正するとともに2ビットの誤りがあれば、これも訂正する符号(SEC−DEC符号と称する)が非特許文献9に開示されている。
【0009】
特に、本発明に最も関連する符号として、具体的には、bビットからなるバイト内のtビット(t≦b)までの誤りをt/b誤りまたはスポッティバイト誤りと称し、この1スポッティバイト誤りを訂正するSt/bEC符号、及び1スポッティバイト誤りを訂正し、かつバイト内tビットを越える1バイト誤りを検出するSt/bEC−SED符号に関する発明が既に開示されている(特許文献1参照)。また、特にSt/bEC符号については、非特許文献10に開示されている。
【0010】
また、1スポッティバイト誤りを訂正し、かつ2スポッティバイト誤りを検出するSt/bEC−Dt/bED符号、及び1スポッティバイト誤りを訂正し、かつ2スポッティバイト誤りを検出し、かつバイト内tビットを越える1バイト誤りを検出するSt/bEC−Dt/bED−SED符号に関する発明が既に出願されている(特許文献2参照)。
【0011】
さらに、距離dに対する一般的なスポッティバイト誤り制御符号の構成法に関する発明が既に出願されている(特許文献3参照)。
【特許文献1】特開2004−7217号公報
【特許文献2】特願2003−416978号明細書
【特許文献3】特願2004−239392号明細書
【特許文献4】特開2002−374175号公報
【非特許文献1】エス.ジェイ.ホン(S.J.Hong)・エイ.エム.パテル(A.M.Patel)共著,『ア ゼネラル クラス オフ マックシマル コードズ フォー コンピュータ アプリケーションズ “A general Class ofMaximal Codes for Computer Applications”』,IEEE トランスアクションズ オン コンピュータズ(IEEETransactions on Computers),第C-21巻,第12号, p.1322-1331,1972年
【非特許文献2】イー.フジワラ(E.Fujiwara),『オッドーウエイトーコラム bーアジェイスント エラー コレクティング コードズ “Odd-Weight-Columnb-Adjacent Error Correcting Codes”』,トランスアクションズ オフ ザ IECE ジャパン(Transactions of the IECE Japan),第E61巻,第10号,p.781-787,1978年
【非特許文献3】エス.カネダ(S.Kaneda)・イー.フジワラ(E.Fujiwara)共著,『シングル バイト エラー コレクティングーダブル バイト エラー ディテクティング コードズ フォー メモリ システムズ “Single Byte ErrorCorrecting-Double Byte Error Detecting Codes for Memory Systems”』,IEEE トランスアクションズ オン コンピュータズ(IEEETransactions on Computers),第C-31巻,第7号,p.596-602,1982年7月
【非特許文献4】シー.エル.チェン(C.L.Chen)・エル.イー.グロバシュ(L.E.Grosbach)共著,『フォールトートレラント メモリ デザイン イン ザ IBM アプリケーション システム/400TM “Fault-Tolerant MemoryDesign in the IBM Application System/400TM”』,プロシーディングズ オフ アニュアル インターナショナル シンポジウム オン フォールトートレラント コンピューティング(Proceedingsof Annual International Symposium on Fault-Tolerant Computing),p.393-400,1991年6月
【非特許文献5】エス.カネダ(S.Kaneda),『ア クラス オフ オッドーウエイトーコラム SEC−DED−SbED コードズ フォー メモリ システム アプリケーションズ “A class ofOdd-Weight-Column SEC-DED-SbED Codes for Memory System Applications”』,IEEE トランスアクションズ オン コンピュータズ(IEEETransactions on Computers),第C-33巻,第8号,p.737-739,1984年8月
【非特許文献6】ティ.アール.エヌ.ラオ(T.R.N.Rao)・エイジ フジワラ(Eiji Fujiwara)共著,『エラー コントロール コーディング フォー コンピュータ システムズ “Error Control Codingfor Computer Systems”』,プレンティスーホール(Prentice-Hall),1989年
【非特許文献7】イー.フジワラ(E.Fujiwara)・エム.ハマダ(M.Hamada)共著,『シングル bービット バイト エラー コレクティング アンド ダブル ビット エラー ディテクティング コードズ フォー メモリ システムズ “Single b-Bit ByteError Correcting and Double Bit Error Detecting Codes for Memory Systems”』,IEICE トランスアクションズ オン ファンダメンタルズ(IEICETransactions on Fundamentals),第E76-A巻,第9号,p.1442-1448,1993年9月
【非特許文献8】エム.ハマダ(M.Hamada)・イー.フジワラ(E.Fujiwara)共著,『ア クラス オフ エラー コントロール コードズ フォー バイト オーガナイゼド メモリ システムズ―SbEC−(Sb+S)ED コードズ− “A Class of ErrorControl Codes for Byte Organized Memory Systems − SbEC−(Sb+S)ED Codes −”』,IEEE トランスアクションズ オン コンピュータズ(IEEETransactions on Computers),第46巻,第1号,p.105-109,1997年1月
【非特許文献9】ジー.ウマネサン(G.Umanesan)・イー.フジワラ(E.Fujiwara)共著,『ランダム ダブル ビット エラー コレクティングーシングル バイト エラー コレクティング(DEC−SbEC) コードズ フォー メモリ システムズ “Random Double BitError Correcting − Single Byte Error Correcting (DEC−SbEC) Codes for MemorySystems”』,IEICE トランスアクションズ オン ファンダメンタルズ(IEICETransactions on Fundamentals),第E85-A巻,第1号,p.273-276,2002年1月
【非特許文献10】ジー.ウマネサン(G.Umanesan)・イー.フジワラ(E.Fujiwara)共著,『ア クラス オフ コードズ フォー コレクティング シングル スポッティ バイト エラーズ “A Class of Codes forCorrecting Single Spotty Byte Errors”』,IEICE トランスアクションズ オン ファンダメンタルズ(IEICE Transactions on Fundamentals),第E86-A巻,第3号,p.704-714,2003年3月
【非特許文献11】エス.ビィー.ウィッカー(S.B.Wicker)・ヴィ.ケイ.バールガバ(V.K.Bhargava)共著,『リードソロモン コードズ アンド ゼア アプリケーションズ “Reed-Solomon Codes andTheir Applications”』,IEEE プレス(IEEEPress),1994年
【非特許文献12】エス.ジェイ.ピーストラク(S.J.Piestrak),『ザ ミニマル テスト セット フォー マルチアウトプット スレッショウルド サーキットズ インプレメンテド アズ ソーティング ネットワークス “The minimal Test Setfor Multioutput Threshold Circuits Implemented as Sorting Networks”』,IEEE トランスアクションズ オン コンピュータズ(IEEETransactions on Computers),第42巻,第6号,p.700-712,1993年6月
【発明の開示】
【発明が解決しようとする課題】
【0012】
1980年代半ばまでは、半導体メモリ素子にはデータ1ビットの入出力を有する素子が主に使用されたことから、1素子の誤りを訂正し2素子までの誤りを検出する1ビット誤り訂正・2ビット誤り検出符号(SEC−DED符号と称する)が多く使用されていた。ところが、1980年代半ばからメモリ素子の高集積化ニーズに対応して、データ4ビットの入出力を有する素子が主流となりはじめ、バイト幅b=4ビットである前述のSEC−DED符号やSEC−DED−SED符号が主に使用されるようになってきた。さらに、1990年代半ばからはデータ8ビット、16ビットの入出力を有する半導体メモリ素子が主流になりはじめた。
【0013】
しかしながら、従来のSEC−DED符号のバイト幅bにb=8またはb=16を適用する場合、全体の符号長に対する検査ビット数の占める割合がおよそ30%から40%と多大となって、符号化率が低下し、実用的に非常に大きな問題となっていた。
【0014】
ところで、これらの半導体メモリ素子(DRAM素子)を使用したメモリ装置では、ノイズやアルファ粒子等によって一時故障が発生したり、DRAM素子自体が劣化して動作しなくなる固定故障が発生したりする。最近のDRAM素子を用いた装置の80%以上は一時故障であると言われており、特に、8ビット以上の多ビットデータ入出力を有するDRAM素子ではバイト中の1、2、3ビット程度の比較的小さい数のビット誤りが大半であるとされている。
【0015】
中でも比較的エネルギーレベルの低い電磁ノイズやアルファ粒子による一時誤り、及びメモリセルの固定故障を原因とする1ビット誤りが最も多く、最近では、前記DRAM素子を搭載したモバイル機器が多用されていることから、電磁環境が悪い中での使用も考慮しなければならなくなっている。また、高い高度を飛行する航空機や軍用機で用いられる電子機器中のDRAM素子では、宇宙線に起因するエネルギーレベルの高い中性子粒子等の衝突により、2ビット、3ビット程度の誤りを有する一時故障が発生する可能性が高くなっている。さらに、衛星通信や宇宙通信で用いられる宇宙機器に搭載するDRAM素子では、エネルギーレベルの高い粒子との衝突によって大きなダメージを受けてしまうことを考慮する必要があり、この場合2ビット以上の誤りを考慮しなければならないことが知られている。
【0016】
以上のようなビット誤りの発生状況が多岐にわたっていることを踏まえれば、パラメータt及びbに任意の値を与えて構成できる前記St/bEC−SED符号は、8ビット以上のDRAM素子を使用したメモリ装置に用いる場合に、非常に実用的な符号方式である。つまり、前記St/bEC−SED符号は、バイト幅bより小さなtビット(このtの値は、誤りの傾向を調査して設計者が任意に決めることが可能である)までの1素子の誤り(スポッティバイト誤り)を訂正することが可能な機能、及び発生確率としては小さいもののtビットを超える1バイト誤りを検出することが可能な機能を備えることにより、従来のバイト単位で行うReed-Solomon符号等の誤り制御符号と比較して大幅に少ない数の検査ビットで誤りを訂正・検出することができる。
【0017】
また、任意の2素子(隣接した2素子に限らない)にまたがる誤りに対して、前記St/bEC−Dt/bED−SED符号は、8ビット以上のDRAM素子を使用したメモリ装置に用いる場合に非常に実用的な符号化方式である。つまり、前記St/bEC−Dt/bED−SED符号は、バイト幅bより小さなtビットまでの1素子の誤りを訂正することが可能な機能(1スポッティバイト誤り訂正、St/bEC)、2素子にまたがるスポッティバイト誤りを検出することが可能な機能(2スポッティバイト誤り検出、Dt/bED)、及び発生確率としては小さいもののtビットを超える1バイト誤りを検出することが可能な機能(1バイト誤り検出、SED)を備えた符号であり、従来のバイト単位で行う符号方式と比較して大幅に少ない数の検査ビットでビット誤りを訂正・検出することができる。
【0018】
さらに、2素子以上にまたがる誤りに対しては、理論上、一般にGF(2)上で距離dを有するスポッティバイト誤り制御符号を構成することにより誤りを訂正・検出することができるようになっている。
【0019】
しかしながら、前記GF(2)上で距離dを有するスポッティバイト誤り制御符号においては、1バイトにおけるtビットを超える誤りを訂正・検出(SED機能など)することができないという問題を有していた。そのため、1バイト内にtビットを超える誤り、すなわち、複数のスポッティバイト誤りが生じた場合においても訂正・検出する機能を有する符号の開発が求められてきている。
【0020】
また、前記St/bEC−Dt/bED符号等では訂正、検出ともにtの値は等しく、訂正、検出に異なるtの値を与えることができないという問題を有していた。
【0021】
ここで、前記GF(2)上で距離dを有するスポッティバイト誤り制御符号のように、1バイト内に1スポッティバイト誤りのみが生じる誤りを『バイト内単一スポッティバイト誤り』と称するのに対し、1バイト内に複数のスポッティバイト誤り(つまり、2以上のスポッティバイト誤り)が生じる誤りを『バイト内複数スポッティバイト誤り』と称する。
【0022】
本発明は、上述のような事情に鑑みてなされたものであり、本発明の目的は、多重のバイト内複数スポッティバイト誤りを制御することができる機能を備えたバイト内複数スポッティバイト誤り訂正・検出方法及び装置を提供することにある。
【0023】
また、本発明のもう一つの目的は、1バイト内に生じた大きさの異なる2種類のスポッティバイト誤りを制御することができる機能を備えたバイト内複数スポッティバイト誤り訂正・検出方法及び装置を提供することにある。
【課題を解決するための手段】
【0024】
本発明は、入力情報データを基に送信語を生成する符号化手段と、情報伝送路中で誤りが発生した前記送信語を受信語として入力して前記誤りを訂正または検出する復号手段とを備えるバイト内複数スポッティバイト誤り訂正・検出装置に関し、本発明の上述目的は、 前記符号化手段は、スポッティバイト誤り制御符号を表現するパリティ検査行列と、前記入力情報データとを基に生成した検査情報を前記入力情報データに付加することにより、前記送信語を生成し、前記復号手段は、前記パリティ検査行列を基に前記受信語のシンドロームを生成するシンドローム生成手段と、前記シンドローム生成手段により生成されたシンドロームを基に前記受信語の誤りを訂正または検出する誤り訂正手段とを備えることにより、或いは、前記入力情報データが、b(bは2以上の整数)ビットを1バイトとし、複数のバイトから構成される場合に、ここで、バイト内のtビット(1≦t≦b)までの誤りをスポッティバイト誤りと称し、1バイト内に複数の前記スポッティバイト誤りが生じる誤りをバイト内複数スポッティバイト誤りと称することを前提とし、前記パリティ検査行列で表現される前記スポッティバイト誤り制御符号は、距離dに対し、

を有することにより、或いは、前記t値、b値、d値を任意に設定することにより、或いは、前記情報伝送路は、情報通信システムであることにより、或いは、前記情報伝送路は、メモリシステムであることにより、或いは、前記情報伝送路は、バス線回路であることによって効果的に達成される。
【0025】
また、本発明の上述目的は、前記パリティ検査行列は、前記距離dを有するバイト内複数スポッティバイト誤り制御符号に用いる、R行N列を有する次の行列Hであり、

ただし、R=q+(d−2)r、N=bn、0≦i≦n−1、n=2−1であり、行列H’は、H’=[h’、h’、・・・、hb−1’]に示すq次の列ベクトルh’(0≦j≦b−1)から構成されるq行b列(q≦b)の2元行列であり、(d−1)tまたはbのうちいずれか小さい値に等しいか大きいランク(Rank)を有し、すなわち、Rank(H’)≧Min((d−1)t、b)を満足し、前記行列H’のランクがbに等しいとき、前記行列H’はランクbのb×b行列であり、前記行列H’のランクが(d−1)t<bのとき、前記行列H’は最小ハミング距離(d−1)t+1を有する符号の検査行列、すなわち、(d−1)tビット誤り検出機能を有する(b、b−q)符号のパリティ検査行列に等しくなり、また、行列H”は、H”=[h”、h”、・・・、hb−1”]に示すr次の列ベクトルh”(0≦j≦b−1)から構成されるr行b列(r≦b)の2元行列であり、

またはbのうちいずれか小さい値に等しいか大きいランク(Rank)を有し、すなわち、

を満足し、ここで、

はxを超えない最小の整数を表し、また、前記行列H”のランクがbに等しいとき、前記行列H”はランクbのb×b行列であり、前記行列H”のランクが

のとき、前記行列H”は最小ハミング距離

を有する符号の検査行列、すなわち、

ビット誤り検出機能を有する(b、b−r)符号のパリティ検査行列に等しくなり、γは2を底とするr次の拡大体GF(2)の原始元であって、γH”=[γ”、γ”、…、γb−1”]が成立するように構成されることによって効果的に達成される。
【0026】
また、本発明の上述目的は、前記パリティ検査行列は、前記距離dを有する伸長バイト内複数スポッティバイト誤り制御符号に用いる、R行N列を有する次の行列Hであり、

ただし、R≧q+(d−2)r、かつ(R−q)は(d−2)の倍数であり、N=b(n+1)+(R−q)/(d−2)、0≦i≦n−1、(R−q)は(d−2)の倍数とし、n=2(R−q)/(d−2)−1であり、行列H’は、H’=[h’、h’、・・・、hb−1’]に示すq次の列ベクトルh’(0≦j≦b−1)から構成されるq行b列(q≦b)の2元行列であり、(d−1)tまたはbのうちいずれか小さい値に等しいか大きいランク(Rank)を有し、すなわち、Rank(H’)≧Min((d−1)t、b)を満足し、前記行列H’のランクがbに等しいとき、前記行列H’はランクbのb×b行列であり、前記行列H’のランクが(d−1)t<bのとき、前記行列H’は最小ハミング距離(d−1)t+1を有する符号の検査行列、すなわち、(d−1)tビット誤り検出機能を有する(b、b−q)符号のパリティ検査行列に等しくなり、また、行列H”は、H”=[h”、h”、・・・、hb−1”]に示すr次の列ベクトルh”(0≦j≦b−1)から構成されるr行b列(r≦b)の2元行列であり、

またはbのうちいずれか小さい値に等しいか大きいランク(Rank)を有し、すなわち、

を満足し、前記行列H”のランクがbに等しいとき、前記行列H”はランクbのb×b行列であり、前記行列H”のランクが

のとき、前記行列H”は最小ハミング距離

を有する符号の検査行列、すなわち、

ビット誤り検出機能を有する(b、b−r)符号のパリティ検査行列に等しくなり、R≧q+(d−2)r、かつR−qはd−2の倍数とし、γは2を底とする(R−q)/(d−2)次の拡大体GF(2(R−q)/(d−2))の原始元であって、γH”=[γΦ(h
)、γΦ(h” )、・・・、γΦ(hb−1
)]が成立するように構成され、ここで、Φは加法のもとでGF(2)からGF(2(R−q)/(d−2))への準同型写像(homomorphism)であり、すなわち、Φ:GF(2)→GF(2(R−q)/(d−2))であることによって効果的に達成される。
【0027】
また、本発明の上述目的は、前記入力情報データが、b(bは2以上の整数)ビットを1バイトとし、複数のバイトから構成される場合に、ここで、バイト内のtビットまでの誤りをt/b誤りと称し、バイト内のt’ビットまでの誤りをt’/b誤りと称することを前提とし、ただし、1≦t、t’≦b、且つ、t≠t’であり、前記パリティ検査行列で表現される前記スポッティバイト誤り制御符号は、1バイト内に生じた大きさの異なる2種類のスポッティバイト誤り(つまり、前記t/b誤り及び前記t’/b誤り)を制御する機能を備えることにより、或いは、前記スポッティバイト誤り制御符号は、1個のt/b誤りを訂正し、且つ、(t/b+t’/b)誤り(つまり、t/b誤りとt’/b誤りの複合誤り)を検出する機能を有するSt/bEC−(St/b+St’/b)ED符号であり、前記St/bEC−(St/b+St’/b)ED符号に用いる前記パリティ検査行列は、R行N列を有する次の行列Hであり、

ただし、R≧q+2r、かつ(R−q)は2の倍数であり、また、N=b(n+1)+R−q、0≦i≦n−1、n=2(R−q)/2−1であり、行列H’は、H’=[h’、h’、・・・、hb−1’]に示すq次の列ベクトルh’(0≦j≦b−1)から構成されるq行b列(q≦b)の2元行列であり、2t+t’またはbのうちいずれか小さい値に等しいか大きいランク(Rank)を有し、すなわち、Rank(H’)≧Min(2t+t’、b)を満足し、また、行列H”は、H”=[h”、h”、・・・、hb−1”]に示すr次の列ベクトルh”(0≦j≦b−1)から構成されるr行b列(r≦b)の2元行列であり、tまたはt’のうちいずれか大きい値に等しいか大きいランク(Rank)を有し、すなわち、Rank(H”)≧Max(t、t’)を満足し、R≧q+2r、かつ(R−q)は2の倍数であり、γは2を底とする(R−q)/2次の拡大体GF(2(R−q)/2)の原始元であって、γH”=[γΦ(h”)、γΦ(h”)、・・・、γΦ(hb−1”)]が成立するように構成され、Φは加法のもとでGF(2)からGF(2(R−q)/2)への準同型写像(homomorphism)であることにより、或いは、前記スポッティバイト誤り制御符号は、1個のt/b誤りを訂正し、且つ、2個のt’/b誤りを検出する機能を有するSt/bEC−Dt’/bED符号であり、前記St/bEC−Dt’/bED符号に用いる前記パリティ検査行列は、R行N列を有する次の行列Hであり、

ただし、R≧q+2r、かつ(R−q)は2の倍数であり、また、N=b(n+1)+R−q、0≦i≦n−1、n=2(R−q)/2−1であり、行列H’は、H’=[h’、h’、・・・、hb−1’]に示すq次の列ベクトルh’(0≦j≦b−1)から構成されるq行b列(q≦b)の2元行列であり、2tまたはt+2t’のうちいずれか大きい値、及びbのうちいずれか小さい値に等しいか大きいランク(Rank)を有し、すなわち、Rank(H’)≧Min(Max(2t、t+2t’)、b)を満足し、また、行列H”は、H”=[h”、h”、・・・、hb−1”]に示すr次の列ベクトルh”(0≦j≦b−1)から構成されるr行b列(r≦b)の2元行列であり、tまたはt’のうちいずれか大きい値に等しいか大きいランク(Rank)を有し、すなわち、Rank(H”)≧Max(t、t’)を満足し、R≧q+2r、かつ(R−q)は2の倍数であり、γは2を底とする(R−q)/2次の拡大体GF(2(R−q)/2)の原始元であって、γH”=[γΦ(h”)、γΦ(h”)、・・・、γΦ(hb−1”)]が成立するように構成され、Φは加法のもとでGF(2)からGF(2(R−q)/2)への準同型写像(homomorphism)であることにより、或いは、前記スポッティバイト誤り制御符号は、(t/b+t’/b)誤りを訂正する機能を有する(St/b+St’/b)EC符号であり、前記(St/b+St’/b)EC符号に用いる前記パリティ検査行列は、R行N列を有する次の行列Hであり、

ただし、R≧q+3r、且つ、(R−q)は3の倍数であり、また、N=b(n+1)+(R−q)/3、0≦i≦n−1、n=2(R−q)/3−1であり、行列H’は、H’=[h’、h’、・・・、hb−1’]に示すq次の列ベクトルh’(0≦j≦b−1)から構成されるq行b列(q≦b)の2元行列であり、2t+2t’またはbのうちいずれか小さい値に等しいか大きいランク(Rank)を有し、すなわち、Rank(H’)≧Min(2t+2t’、b)を満足し、また、行列H”は、H”=[h”、h”、・・・、hb−1”]に示すr次の列ベクトルh”(0≦j≦b−1)から構成されるr行b列(r≦b)の2元行列であり、t+t’またはbのうちいずれか小さい値に等しいか大きいランク(Rank)を有し、すなわち、Rank(H”)≧Min(t+t’、b)を満足し、R≧q+3r、かつ(R−q)は3の倍数であり、γは2を底とする(R−q)/3次の拡大体GF(2(R−q)/3)の原始元であって、γH”=[γΦ(h”)、γΦ(h”)、・・・、γΦ(hb−1”)]が成立するように構成され、Φは加法のもとでGF(2)からGF(2(R−q)/2)への準同型写像(homomorphism)であることにより、或いは、前記スポッティバイト誤り制御符号は、2個のt/b誤りを訂正し、且つ、1個のt’/b誤り(t<t’)を訂正する機能を有するDt/bEC−St’/bEC符号であり、前記Dt/bEC−St’/bEC符号に用いる前記パリティ検査行列は、R行N列を有する次の行列Hであり、

ただし、R≧q+3r、且つ、(R−q)は3の倍数であり、また、N=b(n+1)+(R−q)/3、0≦i≦n−1、n=2(R−q)/3−1であり、行列H’は、H’=[h’、h’、・・・、hb−1’]に示すq次の列ベクトルh’(0≦j≦b−1)から構成されるq行b列(q≦b)の2元行列であり、4tまたは2t’のうちいずれか大きい値、及びbのうちいずれか小さい値に等しいか大きいランク(Rank)を有し、すなわち、Rank(H’)≧Min(Max(4t、2t’)、b)を満足し、また、行列H”は、H”=[h”、h”、・・・、hb−1”]に示すr次の列ベクトルh”(0≦j≦b−1)から構成されるr行b列(r≦b)の2元行列であり、2tまたはt’のうちいずれか大きい値、及びbのうちいずれか小さい値に等しいか大きいランク(Rank)を有し、すなわち、Rank(H”)≧Min(Max(2t、t’)、b)を満足し、R≧q+3r、かつ(R−q)は3の倍数であり、γは2を底とする(R−q)/3次の拡大体GF(2(R−q)/3)の原始元であって、γH”=[γΦ(h”)、γΦ(h”)、・・・、γΦ(hb−1”)]が成立するように構成され、Φは加法のもとでGF(2)からGF(2(R−q)/2)への準同型写像(homomorphism)であることによって効果的に達成される。
【0028】
また、本発明の上述目的は、前記誤り訂正手段は、前記シンドロームを基に前記受信語の何れのビットが誤っているかを検出するビット誤りポインタを生成し、生成された前記ビット誤りポインタを基に、誤りビットに該当する前記受信語のビット値を反転させることにより、前記受信語の誤りを訂正し、また、前記受信語のビット誤りを訂正できないことを検出した場合に、訂正不可能誤り検出信号を出力することにより、或いは、前記誤り訂正手段は、H’復号手段と、H”乗算手段と、GF(2)上の並列復号手段と、GF(2)上の誤り生成手段と、反転手段とから構成されることにより、或いは、前記H’復号手段は、前記シンドローム生成手段で生成された前記シンドロームの上位qビットを基にして、バイトごとの誤りの和(e)を生成し、前記H”乗算手段は、前記H’復号手段で生成された前記バイトごとの誤りの和(e)を基にして、前記シンドロームの上位qビットとH”の転置行列の積を生成し、前記GF(2)上の並列復号手段は、前記H”乗算手段で生成された前記シンドロームの上位qビットとH”の転置行列の積、及び前記シンドローム生成手段で生成された前記シンドロームの上位qビットを除く残りの下位ビットを基にして、GF(2)上のビット誤りポインタ、及びGF(2)上の並列復号において誤り訂正が不可能とみなされたときに出力される第1の訂正不可能誤り検出信号を生成し、前記GF(2)上の誤り生成手段は、前記H’復号手段で生成された前記バイトごとの誤りの和(e)、及び、前記GF(2)上の並列復号手段で生成された前記GF(2)上のビット誤りポインタを基にして、GF(2)上の誤りをGF(2)上の誤りに変換して、GF(2)上のビット誤りポインタ、及び誤り訂正が不可能とみなされたときに出力される第2の訂正不可能誤り検出信号を生成し、前記反転手段は、前記GF(2)上の誤り生成手段で生成された前記GF(2)上のビット誤りポインタを基にして、前記GF(2)上のビット誤りポインタに対応した前記受信語のビット値を反転させることにより、前記受信語の誤りを訂正することにより、或いは、前記誤り訂正手段では、前記GF(2)上の並列復号手段で生成された前記第1の訂正不可能誤り検出信号と、前記GF(2)上の誤り生成手段で生成された前記第2の訂正不可能誤り検出信号の論理和をとることにより、訂正能力を超えた誤りを検出したことを示す第3の訂正不可能誤り検出信号を出力することにより、或いは、前記GF(2)上の誤り生成手段は、シンドロームが非零であることを検出する誤りバイト検出手段と、前記GF(2)上のビット誤りポインタの1バイトから前記GF(2)上のビット誤りポインタの1バイトを出力するtビット誤り訂正復号手段と、入力信号の選択を制御信号に従って行うビットごと選択手段と、入力された信号のハミング重み1を検出するためのハミング重み検出手段とを備えることにより、或いは、前記GF(2)上の誤り生成手段は、誤りバイト検出手段と、tビット誤り訂正復号手段と、ビットごと選択手段と、ハミング重み検出手段とを備えており、前記誤りバイト検出手段は、前記GF(2)上のビット誤りポインタの1バイトを入力とし、1ビットのシンドローム検出信号を出力し、前記tビット誤り訂正復号手段は、前記GF(2)上のビット誤りポインタの所定の1バイトを入力とし、前記GF(2)上のビット誤りポインタの前記所定の1バイトに対応する1バイトを出力すると共に、訂正能力をこえた誤りを検出する検出信号をも出力し、前記ビットごと選択手段は、2つの入力信号の各ビットどうしを制御信号に従って選択し、前記ハミング重み検出手段は、前記誤りバイト検出手段から出力された前記シンドローム検出信号を入力とし、入力された前記シンドローム検出信号のハミング重みを計算し、前記ハミング重みが1の場合に1を出力し、そうでない場合に0を出力するように構成されることにより、或いは、前記tビット誤り訂正復号手段では、訂正能力をこえた前記誤りが、前記GF(2)上の誤りe’Iから写像されることのない前記GF(2)上の誤りeIであることにより、或いは、前記GF(2)上の誤り生成手段では、前記tビット誤り訂正復号手段から出力された前記検出信号を多入力ORゲート回路に入力し、前記多入力ORゲート回路は、入力された前記検出信号に基づいて、前記第2の訂正不可能誤り検出信号を出力し、また、前記GF(2)上の誤り生成手段では、前記ハミング重み検出手段から出力された信号と、前記誤りバイト検出手段から出力された前記シンドローム検出信号とをそれぞれ2入力ANDゲート回路に入力し、前記2入力ANDゲート回路から出力された信号を前記ビットごと選択手段の前記制御信号とし、前記ビットごと選択手段では、前記tビット誤り訂正復号手段から出力された信号、及び、前記バイトごとの誤りの和(e)の選択を前記制御信号に従って行い、選択された信号を集め、前記GF(2)上のビット誤りポインタを出力することによって効果的に達成される。
【0029】
更に、本発明は、入力情報データを基に送信語を生成する符号化処理ステップと、情報伝送路中で誤りが発生した前記送信語を受信語として入力して前記誤りを訂正または検出する復号処理ステップとを有するバイト内複数スポッティバイト誤り訂正・検出方法に関し、本発明の上述目的は、前記符号化処理ステップは、スポッティバイト誤り制御符号を表現するパリティ検査行列と、前記入力情報データとを基に生成した検査情報を前記入力情報データに付加することにより、前記送信語を生成し、前記復号処理ステップは、前記パリティ検査行列を基に前記受信語のシンドロームを生成するシンドローム生成処理ステップと、前記シンドローム生成処理ステップにより生成されたシンドロームを基に前記受信語の誤りを訂正または検出する誤り訂正処理ステップとを有することにより、或いは、前記誤り訂正処理ステップは、前記シンドロームを基に前記受信語の何れのビットが誤っているかを検出するビット誤りポインタを生成し、生成された前記ビット誤りポインタを基に、誤りビットに該当する前記受信語のビット値を反転させることにより、前記受信語の誤りを訂正し、また、前記受信語のビット誤りを訂正できないことを検出した場合に、訂正不可能誤り検出信号を出力することにより、或いは、前記誤り訂正処理ステップは、H’復号処理ステップと、H”乗算処理ステップと、GF(2)上の並列復号処理ステップと、GF(2)上の誤り生成処理ステップと、反転処理ステップとを有することにより、或いは、前記H’復号処理ステップは、前記シンドローム生成処理ステップで生成された前記シンドロームの上位qビットを基にして、バイトごとの誤りの和(e)を生成し、前記H”乗算処理ステップは、前記H’復号処理ステップで生成された前記バイトごとの誤りの和(e)を基にして、前記シンドロームの上位qビットとH”の転置行列の積を生成し、前記GF(2)上の並列復号処理ステップは、前記H”乗算処理ステップで生成された前記シンドロームの上位qビットとH”の転置行列の積、及び前記シンドローム生成処理ステップで生成された前記シンドロームの上位qビットを除く残りの下位ビットを基にして、GF(2)上のビット誤りポインタ、及びGF(2)上の並列復号において誤り訂正が不可能とみなされたときに出力される第1の訂正不可能誤り検出信号を生成し、前記GF(2)上の誤り生成処理ステップは、前記H’復号処理ステップで生成された前記バイトごとの誤りの和(e)、及び、前記GF(2)上の並列復号処理ステップで生成された前記GF(2)上のビット誤りポインタを基にして、GF(2)上の誤りをGF(2)上の誤りに変換して、GF(2)上のビット誤りポインタ、及び誤り訂正が不可能とみなされたときに出力される第2の訂正不可能誤り検出信号を生成し、前記反転処理ステップは、前記GF(2)上の誤り生成処理ステップで生成された前記GF(2)上のビット誤りポインタを基にして、前記GF(2)上のビット誤りポインタに対応した前記受信語のビット値を反転させることにより、前記受信語の誤りを訂正することにより、或いは、前記誤り訂正処理ステップでは、前記GF(2)上の並列復号処理ステップで生成された前記第1の訂正不可能誤り検出信号と、前記GF(2)上の誤り生成処理ステップで生成された前記第2の訂正不可能誤り検出信号の論理和をとることにより、訂正能力を超えた誤りを検出したことを示す第3の訂正不可能誤り検出信号を出力することによって効果的に達成される。
【0030】
また、本発明の上述目的は、前記GF(2)上の誤り生成処理ステップは、シンドロームが非零であることを検出する誤りバイト検出処理ステップと、前記GF(2)上のビット誤りポインタの1バイトから前記GF(2)上のビット誤りポインタの1バイトを出力するtビット誤り訂正復号処理ステップと、入力信号の選択を制御信号に従って行うビットごと選択処理ステップと、入力された信号のハミング重み1を検出するためのハミング重み検出処理ステップとを有することにより、或いは、前記GF(2)上の誤り生成処理ステップは、誤りバイト検出処理ステップと、tビット誤り訂正復号処理ステップと、ビットごと選択処理ステップと、ハミング重み検出処理ステップとを有し、前記誤りバイト検出処理ステップは、前記GF(2)上のビット誤りポインタの1バイトを入力とし、1ビットのシンドローム検出信号を出力し、前記tビット誤り訂正復号処理ステップは、前記GF(2)上のビット誤りポインタの所定の1バイトを入力とし、前記GF(2)上のビット誤りポインタの前記所定の1バイトに対応する1バイトを出力すると共に、訂正能力をこえた誤りを検出する検出信号をも出力し、前記ビットごと選択処理ステップは、2つの入力信号の各ビットどうしを制御信号に従って選択し、前記ハミング重み検出処理ステップは、前記誤りバイト検出処理ステップから出力された前記シンドローム検出信号を入力とし、入力された前記シンドローム検出信号のハミング重みを計算し、前記ハミング重みが1の場合に1を出力し、そうでない場合に0を出力することにより、或いは、前記tビット誤り訂正復号処理ステップでは、訂正能力をこえた前記誤りが、前記GF(2)上の誤りe’Iから写像されることのない前記GF(2)上の誤りeIであることにより、或いは、前記GF(2)上の誤り生成処理ステップでは、前記tビット誤り訂正復号処理ステップから出力された前記検出信号を多入力ORゲート回路に入力し、前記多入力ORゲート回路は、入力された前記検出信号に基づいて、前記第2の訂正不可能誤り検出信号を出力し、また、前記GF(2)上の誤り生成処理ステップでは、前記ハミング重み検出処理ステップから出力された信号と、前記誤りバイト検出処理ステップから出力された前記シンドローム検出信号とをそれぞれ2入力ANDゲート回路に入力し、前記2入力ANDゲート回路から出力された信号を前記ビットごと選択処理ステップに用いる前記制御信号とし、前記ビットごと選択処理ステップでは、前記tビット誤り訂正復号処理ステップから出力された信号、及び、前記バイトごとの誤りの和(e)の選択を前記制御信号に従って行い、選択された信号を集め、前記GF(2)上のビット誤りポインタを出力することによって効果的に達成される。
【発明の効果】
【0031】
本発明に係るバイト内複数スポッティバイト誤り訂正・検出方法及び装置によれば、符号を表現するパリティ検査行列と入力情報データとを基に生成した検査情報を前記入力情報データに付加した送信語が、情報伝送路中で発生した誤りを有する可能性のある受信語に対し、前記パリティ検査行列を基にシンドロームを生成するとともに、このシンドロームを基に前記受信語の誤りを訂正または検出するようにしているので、1バイト中の2ビット、3ビット等のtビットまでの誤りであるスポッティバイト誤りに対し、任意の数のバイト内複数スポッティバイト誤り(誤りの傾向を調査して設計者が任意に決めることができる)を訂正・検出する機能を有するバイト内複数スポッティバイト誤り制御符号を実現することができた。
【0032】
これにより、誤りを検出または訂正する符号であるパリティ検査行列の構成や復号の処理手順を、誤りの発生状況ごとに対応させる必要がなく統一的に扱うことが可能となり、本発明の符号機能におけるt値、b値、d値を任意に設定するだけで、パリティ検査行列Hや復号手順を統一的に扱うことが可能となり、誤りの発生状態に柔軟に対応できる符号機能を提供することができる。また、本発明による大きさの異なる2種類のスポッティバイト誤りを制御する符号により、誤りの発生状態にさらに柔軟に対応できる符号機能を提供することができる。
【0033】
さらに、bビットであるバイト長よりも小さな整数ビット長tを選ぶことにより、従来のバイト誤り制御符号(t=bに相当)と比較して、検査ビット数を大幅に減少することが可能となる。これにより、符号長に対する検査ビット数の占める割合を小さくさせて、符号化率を格段に向上することが可能となり、高効率且つ高信頼性のあるデータ転送を実現することができる。
【0034】
要するに、従来の符号技術では存在しない、『多重のバイト内複数スポッティバイト誤りを制御できる』といった優れた機能を備える本発明のバイト内複数スポッティバイト誤り訂正・検出方法及び装置によれば、従来のリードソロモン符号(Reed-Solomon符号)による多重バイト誤り制御符号と比較して、検査ビット数を少なくして符号化率を向上させることができ、また、ビット誤りの発生状態に柔軟に対応できる符号機能を提供することができるといった顕著な効果を奏する。
【0035】
また、『1バイト内に生じた大きさの異なる2種類のスポッティバイト誤りを制御することができる』といった機能を備える本発明のバイト内複数スポッティバイト誤り訂正・検出方法及び装置によれば、従来の大きさが一定であるスポッティバイト誤り制御符号、及びリードソロモン符号(Reed-Solomon符号)と比較して、検査ビット数を少なくして符号化率を向上させ、また、ビット誤りの発生状態に柔軟に対応できる符号機能を提供することができるといった顕著な効果を奏する。
【発明を実施するための最良の形態】
【0036】
以下、本発明を実施するための最良の形態について、図面を参照しながら詳細に説明する。
【0037】
本発明を説明するための用語を次のように定義する。まず、本発明の実施形態において、対象とするディジタルデータとは、0と1との組合せの信号(2進化符号)であり、ビット誤りの発生とは、符号語中の任意のビットが、0→1または1→0になることを意味することとする。また、スポッティバイト誤りの発生とは、bビットからなるバイト中のtビット(t≦b)までが0→1または1→0になることを意味することとする。なお、本実施の形態で、「誤り」とある場合、特に明記していない限り、前記「ビット誤り」、「スポッティバイト誤り」のすべてを包含していることとする。また、1バイト内に複数のスポッティバイト誤り(つまり、2以上のスポッティバイト誤り)が生じる誤りを『バイト内複数スポッティバイト誤り』と称する。
【0038】
まず、本発明に係るバイト内複数スポッティバイト誤り訂正・検出装置100の全体構成について説明する。図1は、本発明のバイト内複数スポッティバイト誤り訂正・検出装置100(以下、スポッティバイト装置100と略す)の概略構成を示すブロック図である。図1に示すように、スポッティバイト装置100は、符号化回路2、回路3、復号回路4等を備えた構成になっている。
【0039】
符号化回路2は、対象のディジタルデータ(以下、入力情報データ30と称する)に対して、誤りの訂正・検出を行う検査情報を生成する回路である。なお、検査情報は、任意個の検査ビットより構成されている。
【0040】
回路3は、メモリ等の通信路に相当し、本実施形態では、回路3を経たデータには誤りが含まれる可能性が存在する構成としている。つまり、符号化回路2より出力されて回路3に入力されるデータには誤りが生じていないのに対して、回路3から出力されるデータには、誤りが発生している場合を含んでいる。
【0041】
復号回路4は、シンドローム生成回路1と誤り訂正回路5とを備えた構成になっている。復号回路4は、受信語32に誤りが含まれているか否かを検出し、その誤り箇所を特定して訂正を行うための回路である。復号回路4の詳細な構成については、後述する復号処理で説明する。
【0042】
なお、後述する符号化処理及び復号処理では、ガロア体理論に基づいた行列演算を行うことから、符号化回路2、復号回路4、または通信路中における各データを、英字で付した行列、またはベクトルで表現する。具体的には、例えば、入力情報データD、符号(パリティ検査行列)H、検査情報C、送信語V、受信語V’、シンドロームSと表している。
【0043】
次に、本発明のスポッティバイト装置100の全体動作について説明する。図2は、図1に示された本発明のスポッティバイト装置100の全体動作の処理手順を示すフローチャートである。
【0044】
図2に示されるように、まず、符号化回路2では、入力情報データ(D)30が入力されると、詳細については後述するパリティ検査行列(H)を用いて検査情報(C)を生成する(ステップS200)。次に、符号化回路2では、この検査情報(C)を入力情報データ(D)30に付加して、送信語(V)31としてメモリ等の通信路である回路3に送出する(ステップS201)。そして、回路3を経て誤りを含む可能性のある受信語(V’)32は、復号回路4に入力される(ステップS202)。
【0045】
次に、復号回路4では、まず、符号化回路2で用いたパリティ検査行列(H)を利用して、入力された受信語(V’)32に誤りが発生しているか否かを調べる。具体的には、復号回路4のシンドローム生成回路1が、符号を表現しているパリティ検査行列(H)を転置させた転置行列(H)を、受信語(V’)32に対して乗算することによりシンドローム(S)を生成する(ステップS203)。シンドローム(S)33の値は受信語(V’)32に応じて変化するため、受信語(V’)32に誤りが含まれているかを判断することが可能となる。
【0046】
そこで、復号回路4の誤り訂正回路5は、前記シンドローム(S)33の値に基づいて、まず誤りを検出したか否か(ステップS204)、検出した場合に、誤り訂正が可能か否かを判断し(ステップS205)、前記判断の結果、訂正可能であれば誤りの訂正を行う(ステップS206)。そして、誤り訂正回路5は、受信語V’に対してスポッティバイト誤りの訂正処理を施した場合、訂正後のV’を受信語出力情報データ(V)34として出力する(ステップS207)。これに対して、ステップS205の判断の結果、訂正不可能なスポッティバイト誤り等が検出された場合には、誤り訂正回路5は、訂正不可能な誤り検出信号としてのUCE(Uncorrectable Error)信号35を出力する(ステップS208)。
【0047】
次に、前述した符号化回路2及び復号回路4で用いられるパリティ検査行列(H)の構成について、詳細に説明する。本発明のパリティ検査行列H(Hマトリクス、符号マトリクス、または単に検査行列とも称される)は、複数のスポッティバイト誤りを訂正・検出する機能を有する符号である。
【0048】
本実施の形態では、任意のd(dは3以上の整数)、t(tは1以上b以下の整数)、及びb(2以上の整数)に対して構成できる一般的な符号構成法を提示するとともに、その符号により実際に誤りの訂正・検出ができる方法を示し、またそのための符号化回路および復号回路を提示し、前記符号化回路及び復号回路によって誤りが具体的に訂正・検出できることを示す。
【0049】
なお、距離dに対し、

を有していることを具体的に示す。例えば、距離d=5の2重バイト内複数スポッティバイト誤り訂正符号の場合、

となる。
【0050】
また、本符号構成法において、t=bのとき、正確には後述するように、

のとき、従来のバイト誤り制御符号であるリード・ソロモン符号(RS符号)に一致する。
【0051】
いま、Kビットの入力情報データ(D)30に対してRビットの検査情報(C)を付加し、ある機能を満足するN=K+Rビットの長さを有する送信語V(Nビットの行ベクトル)を構成することができたときに、この送信語(V)と、符号を規定するR行N列の2元パリティ検査行列(H)との間には、V・H=0の関係が成立する。ここで、Hはパリティ検査行列(H)の行と列を入れ替えて生成した置換行列であり、また、右辺の0はRビットの零行ベクトルを示している。
【0052】
本実施形態では、距離dを有するバイト内複数スポッティバイト誤り制御符号に用いるR行N列を有するパリティ検査行列(H)を、下記数1に示すような構成としている。
【0053】
【数1】

ただし、R=q+(d−2)r、N=bn、0≦i≦n−1、n=2−1である。
【0054】
上記数1を構成する行列H’は、下記数2に示すq次の列ベクトルh’(0≦j≦b−1)から構成されるq行b列(q≦b)の2元行列であり、(d−1)tまたはbのうちいずれか小さい値に等しいか大きいランク(Rank)を有する。すなわち、Rank(H’)≧Min((d−1)t、b)を満足する。
【0055】
【数2】

ここで、行列H’のランクがbに等しいとき、行列H’はランクbのb×b行列(例えば、b×bの単位行列)であり、行列H’のランクが(d−1)t<bのとき、行列H’は最小ハミング距離(d−1)t+1を有する符号の検査行列、すなわち、(d−1)tビット誤り検出機能を有する(b、b−q)符号のパリティ検査行列に等しい。
【0056】
また、上記数1を構成する行列H”は、下記数3に示すr次の列ベクトルh”(0≦j≦b−1)から構成されるr行b列(r≦b)の2元行列であり、

またはbのうちいずれか小さい値に等しいか大きいランク(Rank)を有する。すなわち、

を満足する。ここで、

はxを超えない最小の整数を表す。
【0057】
【数3】

ここで、行列H”のランクがbに等しいとき、行列H”はランクbのb×b行列(例えば、b×bの単位行列)であり、行列H”のランクが

のとき、行列H”は最小ハミング距離

を有する符号の検査行列、すなわち、

ビット誤り検出機能を有する(b、b−r)符号のパリティ検査行列に等しい。
【0058】
次に、γを2を底とするr次の拡大体GF(2)の原始元とするときに、γH”は下記数4で定義することができる。
【0059】
【数4】

このとき、最大符号長Nは、N=b(2―1)である。
【0060】
上記数1に示したパリティ検査行列(H)は、パラメータ

とした場合に、H’及びH”はランクbを有することから、従来のRS符号のパリティ検査行列と一致する。
【0061】
また、本実施形態では、伸長符号を定義することができる。距離dを有する伸長バイト内複数スポッティバイト誤り制御符号に用いるR行N列を有するパリティ検査行列(H)は、下記数5に示すような構成とすることができる。
【0062】
【数5】

ただし、R≧q+(d−2)r、かつ(R−q)は(d−2)の倍数であり、N=b(n+1)+(R−q)/(d−2)、0≦i≦n−1、(R−q)は(d−2)の倍数とし、n=2(R−q)/(d−2)−1である。
【0063】
上記数5を構成する行列H’は、下記数6に示すq次の列ベクトルh’(0≦j≦b−1)から構成されるq行b列(q≦b)の2元行列であり、(d−1)tまたはbのうちいずれか小さい値に等しいか大きいランク(Rank)を有する。すなわち、Rank(H’)≧Min((d−1)t、b)を満足する。
【0064】
【数6】

ここで、行列H’のランクがbに等しいとき、行列H’はランクbのb×b行列(例えば、b×bの単位行列)であり、行列H’のランクが(d−1)t<bのとき、行列H’は最小ハミング距離(d−1)t+1を有する符号の検査行列、すなわち、(d−1)tビット誤り検出機能を有する(b、b−q)符号のパリティ検査行列に等しい。
【0065】
また、上記数1を構成する行列H”は、下記数7に示すr次の列ベクトルh”(0≦j≦b−1)から構成されるr行b列(r≦b)の2元行列であり、

またはbのうちいずれか小さい値に等しいか大きいランク(Rank)を有する。すなわち、

を満足する。
【0066】
【数7】

ここで、行列H”のランクがbに等しいとき、行列H”はランクbのb×b行列(例えば、b×bの単位行列)であり、行列H”のランクが

のとき、行列H”は最小ハミング距離

を有する符号の検査行列、すなわち、

ビット誤り検出機能を有する(b、b−r)符号のパリティ検査行列に等しい。
【0067】
次に、R≧q+(d−2)rかつR−qはd−2の倍数とし、γを2を底とする(R−q)/(d−2)次の拡大体GF(2(R−q)/(d−2))の原始元とするときに、γH”は下記数8で定義することができる。
【0068】
【数8】

ここで、Φは加法のもとでGF(2)からGF(2(R−q)/(d−2))への準同型写像(homomorphism)である。すなわち、Φ:GF(2)→GF(2(R−q)/(d−2))である。このとき、最大符号長Nは、N=b・2(R−q)/(d−2)+(R−q)/(d−2)である。また、R≧q+(d−2)rであることから、数5のHの2行目から下の行に用いるH”の行数r’はrより大きい値をとることができ、数5で表される符号は、(d−2)ビットずつ検査ビット数を増大させることにより、任意の符号長に対して構成できる符号であることに注意する必要がある。
【0069】
上記数5に示したパリティ検査行列(H)は、パラメータ

とした場合に、H’及びH”はランクbを有することから、従来の2次伸長RS符号のパリティ検査行列と一致する。
【0070】
次に、上記数1に示したパリティ検査行列(H)で表される符号が、距離dに対し、

を有していることを具体的に示す。一般に、

において、パリティ検査行列H=[H、H、・・・、Hn−1]が、以下に示す必要十分条件を満たしていることを示せばよい。ただし、HはR×bの小行列である。
【0071】
【数9】

【0072】
【数10】

【0073】
【数11】

ここで、1バイト中のtビットまでの誤りの集合をEt/bとし、eは誤りの集合Et/bに含まれる任意の誤りとする。また、i、i、・・・、i・・・、id−1(0≦i、i、・・・、i、・・・、id−1≦n−1)はすべて異なるものとする。
【0074】
スポッティバイト誤り訂正は、前述したシンドローム生成回路1が生成するシンドローム(S)33を用いて実行する。ここで、シンドローム(S)33と前記パリティ検査行列(H)との関係は、S=V’・Hで表される。いま、受信語(V’)32が元々の送信語(V)31に対して誤り(E)を含み、V’=V+Eで表されるとき、シンドローム(S)33は、S=V’・H=(V+E)・H=V・H+E・Hとなる。
【0075】
前述したように、V・H=0の関係が成立していることから、結局、シンドロームS=E・Hが成り立つ。つまり、シンドローム(S)33は、送信語(V)31に影響されずに誤り(E)のみで決まることから、シンドローム(S)33に基づいてスポッティバイト誤り訂正を行うことが可能か否かは、パリティ検査行列(H)と誤り(E)とから計算されるE・Hの値の結果によって決定できるものである。
【0076】
上記数9、数10、数11に示した必要十分条件は、距離dに対し、訂正・検出可能なすべてのバイト内複数スポッティバイト誤りのシンドロームと訂正可能な他のすべてのバイト内複数スポッティバイト誤りのシンドロームが異なることを示している。すなわち、m個以下のバイト内複数スポッティバイト誤りのシンドロームと他の

個以下のバイト内複数スポッティバイト誤りのシンドロームが異なればよい。よって、

個のバイト内複数スポッティバイト誤りのシンドローム和が0とならなければよい。
【0077】
数9は、m個のバイト内複数スポッティバイト誤りと

個のバイト内複数スポッティバイト誤りが、すべて同じバイトに生じた場合であり、それぞれのシンドロームが異なることを示している。
【0078】
また、数10は、m個のバイト内複数スポッティバイト誤りと

個のバイト内複数スポッティバイト誤りが生じ、うち2からd−2バイトにおいて、バイト内複数スポッティバイト誤りが同じバイトに生じている場合であり、これらのシンドロームが異なることを示している。
【0079】
さらに、数11は、m個のバイト内複数スポッティバイト誤りと

個のバイト内複数スポッティバイト誤りが、すべて異なるバイトに生じている場合であり、それぞれのシンドロームが異なることを示している。
【0080】
ここで、(e+・・・+ei+j)は、j個以下のバイト内複数スポッティバイト誤りを包含するため、(d−1)個のバイト内複数スポッティバイト誤りのシンドローム和が0とならないことを示すことにより、(d−1)個未満のバイト内複数スポッティバイト誤りのシンドロームが異なることを示すことができる。
【0081】
よって、数1に示すパリティ検査行列で表現される符号が、上記数9、数10、数11に示した必要十分条件を満たすことを示すことにより、距離dに対し、

を有していることを以下に示す。

<1>必要十分条件(数9)を満たしていることの証明
シンドロームSとして、下記数12の関係が成立していると仮定する。
【0082】
【数12】

数12において、H’はランクがMin((d−1)t、b)、かつe+e+・・・+ed−1≠0より(e+e+・・・+ed−1)・H’≠0。よって、数1で表される符号は、必要十分条件(数9)を満たしている。

<2>必要十分条件(数10)を満たしていることの証明
シンドロームSとして、下記数13の関係が成立したと仮定する。
【0083】
【数13】

数13の(e+e+・・・+ed−1)・H’=0において、H’はランクがMin((d−1)t、b)より、下記数14が得られる。
【0084】
【数14】

数14において、右からH”をかけると、下記数15が得られる。
【0085】
【数15】

数13、数15において、

をそれぞれx、x、・・・、xρ、ρ>1、とおくと、下記数16が得られる。ここで、

より、

となるiは、高々1個のみ存在する。H”はランク

より、x≠0、x≠0、・・・、xρ≠0(xは0となることもある)、ρ>1、となる。
【0086】
【数16】

数16において、上からρ(<d−1)個の式を行列の形で表すと、下記数17が得られる。
【0087】
【数17】

数17中のρ行ρ列の行列は、ヴァンデルモンドの行列の形をしているため、正則行列である。よって、数17の両辺に左からこの行列の逆行列を乗算すると、下記数18が得られる。
【0088】
【数18】

数18は、x=0、x=0、・・・、xρ=0、ρ>1、となり、前提であるx≠0、x≠0、・・・、xρ≠0に矛盾する。よって、数1で表される符号は、必要十分条件(数10)を満たしている。

<3>必要十分条件(数11)を満たしていることの証明
シンドロームSとして、下記数19の関係が成立したと仮定する。
【0089】
【数19】

数19の(e+e+・・・+ed−1)・H’=0において、H’はランクがMin((d−1)t、b)より、下記数20が得られる。
【0090】
【数20】

数20において、右からH”をかけると、下記数21が得られる。
【0091】
【数21】

数19、数21において、e・H”、e・H”、・・・、ed−1・H”をそれぞれx、x、・・・、xd−1

より、x≠0、x≠0、・・・、xd−1≠0)と表すと、下記数22が得られる。
【0092】
【数22】

数22を行列の形で表すと、下記数23が得られる。
【0093】
【数23】

数23中の(d−1)行(d−1)列の行列は、ヴァンデルモンドの行列の形をしているため、正則行列である。よって、上記数23の両辺に左から逆行列をかけると、下記数24が得られる。
【0094】
【数24】

数24は、x=0、x=0、・・・、xd−1=0となり、前提であるx≠0、x≠0、・・・、xd−1≠0に矛盾する。よって、数1で表される符号は、必要十分条件(数11)を満たしている。
【0095】
したがって、前述した<1>〜<3>における証明結果より、上記数1に示すパリティ検査行列(H)は、距離dに対し、受信語(V’)32に含まれる

個以下のバイト内複数スポッティバイト誤りを訂正し、m個以下のバイト内複数スポッティバイト誤りを検出する機能を有していることを証明することができた。
【0096】
また、上記数5に示したパリティ検査行列(H)で表される伸長符号も、同様に上記数9、数10、数11に示した必要十分条件を満たすことを示すことにより、距離dに対し、

を有していることを示すことができる。
【0097】
ここでは、具体的な符号パラメータを与えて、上記数1に示すパリティ検査行列(H)を構成できることを示す。なお、このパリティ検査行列(H)は、あくまで一例であって、本発明がこれに限定されないことは言うまでもない。
【0098】
いま、読み書きデータ幅として、8ビットを有するメモリ素子を使用したメモリシステムを対象に、d=5、t=2、b=8のパラメータを与え、バイト内2ビット以下の誤りをスポッティバイト誤りとして、2個のバイト内複数スポッティバイト誤りを訂正するD2/8EC符号のパリティ検査行列(H)を構成することとする。このとき、Min((d−1)t、b)=Min(8、8)=8より、行列H’として、ランク8を有する行列を構成すればよい。この一例として、下記数25に示す8×8(8行8列を意味する)単位行列を構成すればよい。
【0099】
【数25】

また、

より、行列H”として、ランク4を有する4ビット誤り検出符号の検査行列を構成すればよい。この一例として、下記数26に示す6×8行列を示す。
【0100】
【数26】

次に、γをGF(2)上の6次の原始多項式g(x)=x+x+1の根とすると、γは、6次の列ベクトルγ=(010000)と表現することができる。
【0101】
つまり、γのべき表示γとベクトル表示との対応を示すと、次のようになる。
γ=(100000)、 γ=(010000)、 γ=(001000)
γ=(000100)、 γ=(000010)、 γ=(000001)
γ=(110000)、 γ=(011000)、 γ=(001100)
γ=(000110)、 γ10=(000011)、γ11=(110001)
γ12=(101000)、γ13=(010100)、γ14=(001010)
γ15=(000101)、γ16=(110010)、γ17=(011001)
γ18=(111100)、γ19=(011110)、γ20=(001111)
γ21=(110111)、γ22=(101011)、γ23=(100101)
γ24=(100010)、γ25=(010001)、γ26=(111000)
γ27=(011100)、γ28=(001110)、γ29=(000111)
γ30=(110011)、γ31=(101001)、γ32=(100100)
γ33=(010010)、γ34=(001001)、γ35=(110100)
γ36=(011010)、γ37=(001101)、γ38=(110110)
γ39=(011011)、γ40=(111101)、γ41=(101110)
γ42=(010111)、γ43=(111011)、γ44=(101101)
γ45=(100110)、γ46=(010011)、γ47=(111001)
γ48=(101100)、γ49=(010110)、γ50=(001011)
γ51=(110101)、γ52=(101010)、γ53=(010101)
γ54=(111010)、γ55=(011101)、γ56=(111110)
γ57=(011111)、γ58=(111111)、γ59=(101111)
γ60=(100111)、γ61=(100011)、γ62=(100001)

これより、上記数26に示す行列H”は、H”=[γγγγγγγ18γ20]と表すことができる。よって、上記数1に示したパリティ検査行列(H)は、H’及びH”を用いて、具体的な(504、478)D2/8EC符号を構成することができる。この符号の最後から414列削除することによって得られた(90、64)D2/8EC符号の検査行列を図3に示す。
【0102】
なお、図3に示すように、パリティ検査行列(H)のH’及びH”に相当する行単位の箇所を明確化するため、その境界に実線を引いて示している。
【0103】
いま、パリティ検査行列(H)の構成要素であるγH”が、図3に示す実際のビット値と対応しているかを具体的に確認する。前述したように、H”=[γγγγγγγ18γ20]より、γH”=γ[γγγγγγγ18γ20]=[γγγγγγγ21γ23]となる。このべき表示をベクトル表示(例えば、γ=(100000)等)に変換すれば、図3に示すa部分に相当し、このa部分は明らかにパリティ検査行列(H)のγH”部分である。同様にして、パリティ検査行列(H)における他の構成要素についても、ベクトル表示に変換すれば、全体として図3に示すビット表現の26行90列の構成となる。
【0104】
ここで、t=3に対しては、Min((d−1)t、b)=8より、行列H’として、上記数25に示したランク8を有する8×8(8行8列を意味する)単位行列を構成すればよい。また、

より、行列H”として、ランク6を有し、また、符号長8ビットを有する6ビット誤り検出符号の検査行列を構成すればよい。この一例として、下記数27に示す7×8行列を構成することができる。
【0105】
【数27】

一方、t=4、5、6、7については、H’及びH”は8×8の単位行列に等しくなり、パリティ検査行列(H)は、RS符号のパリティ検査行列と一致する。
【0106】
なお、以上は最近最も使用されている、バイト幅b=8ビット入出力を有する半導体メモリ素子を対象として、パリティ検査行列H(符号)の一例を構成して説明したが、他にも多く使用されている多ビット入出力素子、例えば、b=16ビット入出力を有する素子等に対しても、また2以上の任意の整数値を有するbに対して、Dt/bEC符号を構成できることは明らかである。
【0107】
また、以上は距離d=5として、パリティ検査行列Hの一例を構成して説明したが、任意の距離dに対して、符号すなわちパリティ検査行列が構成できることも明らかである。
【0108】
このように、前記では、バイト内複数スポッティバイト誤り制御符号のパリティ検査行列(H)の構成法の一例を示したが、このパリティ検査行列(H)中のH’及びH”のランクを変化させることにより、大きさの異なる2種のバイト内複数スポッティバイト誤りを制御する符号を構成することができる。
【0109】
ここで、大きさの異なる2種のスポッティバイト誤り(t/b誤り及びt’/b誤り、1≦t、t’≦b)を考慮した4種のバイト内複数スポッティバイト誤り制御符号について説明する。
【0110】
具体的には、この4種のバイト内複数スポッティバイト誤り制御符号は、次のようになっている。
<I>St/bEC−(St/b+St’/b)ED符号
つまり、1個のt/b誤りを訂正し、且つ、(t/b+t’/b)誤り(t/b誤りとt’/b誤りの複合誤り)を検出する符号である。
<II>St/bEC−Dt’/bED符号
つまり、1個のt/b誤りを訂正し、且つ、2個のt’/b誤りを検出する符号である。
<III>(St/b+St’/b)EC符号
つまり、(t/b+t’/b)誤りを訂正する符号である。
<IV>Dt/bEC−St’/bEC符号
つまり、2個のt/b誤りを訂正し、且つ、1個のt’/b誤り(t<t’)を訂正する符号である。

ここで、大きさの異なる2種のスポッティバイト誤り(t/b誤り及びt’/b誤り、1≦t、t’≦b)を考慮した上記4種のバイト内複数スポッティバイト誤り制御符号を以下のように詳細に述べる。
<I>St/bEC−(St/b+St’/b)ED符号
t/bEC−(St/b+St’/b)ED符号に用いるR行N列を有するパリティ検査行列(H)を、下記数28に示すような構成としている。
【0111】
【数28】

ただし、R≧q+2r、かつ(R−q)は2の倍数であり、N=b(n+1)+R−q、0≦i≦n−1、n=2(R−q)/2−1である。
【0112】
上記数28を構成する行列H’は、下記数29に示すq次の列ベクトルh’(0≦j≦b−1)から構成されるq行b列(q≦b)の2元行列であり、2t+t’またはbのうちいずれか小さい値に等しいか大きいランク(Rank)を有する。すなわち、Rank(H’)≧Min(2t+t’、b)を満足する。
【0113】
【数29】

ここで、行列H’のランクがbに等しいとき、行列H’はランクbのb×b行列(例えば、b×bの単位行列)であり、行列H’のランクが2t+t’<bのとき、行列H’は最小ハミング距離2t+t’+1を有する符号の検査行列、すなわち、2t+t’ビット誤り検出機能を有する(b、b−q)符号のパリティ検査行列に等しい。
【0114】
また、上記数28を構成する行列H”は、下記数30に示すr次の列ベクトルh”(0≦j≦b−1)から構成されるr行b列(r≦b)の2元行列であり、tまたはt’のうちいずれか大きい値に等しいか大きいランク(Rank)を有する。すなわち、Rank(H”)≧Max(t、t’)を満足する。
【0115】
【数30】

ここで、行列H”のランクがt>t’のとき、行列H”は最小ハミング距離t+1を有する符号の検査行列、すなわち、tビット誤り検出機能を有する(b、b−q)符号のパリティ検査行列に等しい。また、行列H”のランクがt<t’のとき、行列H”は最小ハミング距離t’+1を有する符号の検査行列、すなわち、t’ビット誤り検出機能を有する(b、b−q)符号のパリティ検査行列に等しい。
【0116】
次に、R≧q+2r、かつ(R−q)は2の倍数であり、γを2を底とする(R−q)/2次の拡大体GF(2(R−q)/2)の原始元とするときに、γH”は下記数31で定義することができる。
【0117】
【数31】

ここで、Φは加法のもとでGF(2)からGF(2(R−q)/2)への準同型写像(homomorphism)である。
【0118】
次に、上記数28に示したパリティ検査行列(H)で表される符号が、1個のt/b誤りを訂正し、且つ、(t/b+t’/b)誤り(つまり、t/b誤りとt’/b誤りの複合誤り)を検出する機能を有していることを具体的に示す。パリティ検査行列H=[H、H、・・・、Hn−1]が以下に示す必要十分条件を満たしていることを示せばよい。ただし、HはR×bの小行列である。
【0119】
【数32】

【0120】
【数33】

【0121】
【数34】

【0122】
【数35】

ここで、Et/bを1バイト中のtビットまでの誤りの集合とし、Et’/bを1バイト中のt’ビットまでの誤りの集合とする。また、i、j、k(0≦i、j、k≦n−1)は、すべて異なるものとする。
【0123】
上記数9、数10、数11に示した必要十分条件と同様に、数32から数35までに示した条件を満たしていることを示すことができる。

<II>St/bEC−Dt’/bED符号
t/bEC−Dt’/bED符号に用いるR行N列を有するパリティ検査行列(H)を、下記数36に示すような構成としている。
【0124】
【数36】

ただし、R≧q+2r、かつ(R−q)は2の倍数であり、N=b(n+1)+R−q、0≦i≦n−1、n=2(R−q)/2−1である。
【0125】
上記数36を構成する行列H’は、下記数37に示すq次の列ベクトルh’(0≦j≦b−1)から構成されるq行b列(q≦b)の2元行列であり、2tまたはt+2t’のうちいずれか大きい値、及びbのうちいずれか小さい値に等しいか大きいランク(Rank)を有する。すなわち、Rank(H’)≧Min(Max(2t、t+2t’)、b)を満足する。
【0126】
【数37】

ここで、行列H’のランクがbに等しいとき、行列H’はランクbのb×b行列(例えば、b×bの単位行列)であり、行列H’のランクが2tのとき、行列H’は最小ハミング距離2t+1を有する符号の検査行列、すなわち、2tビット誤り検出機能を有する(b、b−q)符号のパリティ検査行列に等しい。また、行列H’のランクがt+2t’のとき、行列H’は最小ハミング距離t+2t’+1を有する符号の検査行列、すなわち、t+2t’ビット誤り検出機能を有する(b、b−q)符号のパリティ検査行列に等しい。
【0127】
また、上記数36を構成する行列H”は、下記数38に示すr次の列ベクトルh”(0≦j≦b−1)から構成されるr行b列(r≦b)の2元行列であり、tまたはt’のうちいずれか大きい値に等しいか大きいランク(Rank)を有する。すなわち、Rank(H”)≧Max(t、t’)を満足する。
【0128】
【数38】

ここで、行列H”のランクがt>t’のとき、行列H”は最小ハミング距離t+1を有する符号の検査行列、すなわち、tビット誤り検出機能を有する(b、b−q)符号のパリティ検査行列に等しい。また、行列H”のランクがt<t’のとき、行列H”は最小ハミング距離t’+1を有する符号の検査行列、すなわち、t’ビット誤り検出機能を有する(b、b−q)符号のパリティ検査行列に等しい。
【0129】
次に、R≧q+2r、かつ(R−q)は2の倍数であり、γを2を底とする(R−q)/2次の拡大体GF(2(R−q)/2)の原始元とするときに、γH”は下記数39で定義することができる。
【0130】
【数39】

ここで、Φは加法のもとでGF(2)からGF(2(R−q)/2)への準同型写像(homomorphism)である。
【0131】
次に、上記数36に示したパリティ検査行列(H)で表される符号が、1個のt/b誤りを訂正し、且つ、2個のt’/b誤りを検出する機能を有していることを具体的に示す。パリティ検査行列H=[H、H、・・・、Hn−1]が以下に示す必要十分条件を満たしていることを示せばよい。ただし、HはR×bの小行列である。
【0132】
【数40】

【0133】
【数41】

【0134】
【数42】

【0135】
【数43】

【0136】
【数44】

【0137】
【数45】

ここで、Et/bを1バイト中のtビットまでの誤りの集合とし、Et’/bを1バイト中のt’ビットまでの誤りの集合とする。また、i、j、k(0≦i、j、k≦n−1)は、すべて異なるものとする。
【0138】
上記数9、数10、数11に示した必要十分条件と同様に、数40から数45までに示した条件を満たしていることを示すことができる。

<III>(St/b+St’/b)EC符号
(St/b+St’/b)EC符号に用いるR行N列を有するパリティ検査行列(H)を、下記数46に示すような構成としている。ここで、一般性を失うことなく、t>t’とする。
【0139】
【数46】

ただし、R≧q+3r、かつ(R−q)は3の倍数であり、N=b(n+1)+(R−q)/3、0≦i≦n−1、n=2(R−q)/3−1である。
【0140】
上記数46を構成する行列H’は、下記数47に示すq次の列ベクトルh’(0≦j≦b−1)から構成されるq行b列(q≦b)の2元行列であり、2t+2t’またはbのうちいずれか小さい値に等しいか大きいランク(Rank)を有する。すなわち、Rank(H’)≧Min(2t+2t’、b)を満足する。
【0141】
【数47】

ここで、行列H’のランクがbに等しいとき、行列H’はランクbのb×b行列(例えば、b×bの単位行列)であり、行列H’のランクが2t+2t’<bのとき、行列H’は最小ハミング距離2t+2t’+1を有する符号の検査行列、すなわち、2t+2t’ビット誤り検出機能を有する(b、b−q)符号のパリティ検査行列に等しい。
【0142】
また、上記数46を構成する行列H”は、下記数48に示すr次の列ベクトルh”(0≦j≦b−1)から構成されるr行b列(r≦b)の2元行列であり、t+t’またはbのうちいずれか小さい値に等しいか大きいランク(Rank)を有する。すなわち、Rank(H”)≧Min(t+t’、b)を満足する。
【0143】
【数48】

ここで、行列H”のランクがbに等しいとき、行列H”はランクbのb×b行列(例えば、b×bの単位行列)であり、行列H”のランクがt+t’<bのとき、行列H”は最小ハミング距離t+t’+1を有する符号の検査行列、すなわち、t+t’ビット誤り検出機能を有する(b、b−q)符号のパリティ検査行列に等しい。
【0144】
次に、R≧q+3r、且つ、(R−q)は3の倍数であり、γを2を底とする(R−q)/3次の拡大体GF(2(R−q)/3)の原始元とするときに、γH”は下記数49で定義することができる。
【0145】
【数49】

ここで、Φは加法のもとでGF(2)からGF(2(R−q)/3)への準同型写像(homomorphism)である。
【0146】
次に、上記数46に示したパリティ検査行列(H)で表される符号が、(t/b+t’/b)誤りを訂正する機能を有していることを具体的に示す。パリティ検査行列H=[H、H、・・・、Hn−1]が、以下に示す必要十分条件を満たしていることを示せばよい。ただし、HはR×bの小行列である。
【0147】
【数50】

【0148】
【数51】

【0149】
【数52】

【0150】
【数53】

【0151】
【数54】

【0152】
【数55】

【0153】
【数56】

【0154】
【数57】

【0155】
【数58】

ここで、Et/bを1バイト中のtビットまでの誤りの集合とし、Et’/bを1バイト中のt’ビットまでの誤りの集合とする。また、

はすべて異なるものとする。
【0156】
上記数9、数10、数11に示した必要十分条件と同様に、数50から数58までに示した条件を満たしていることを示すことができる。

<IV>Dt/bEC−St’/bEC符号
t/bEC−St’/bEC符号に用いるR行N列を有するパリティ検査行列(H)を、下記数59に示すような構成としている。ここで、Dt/bEC符号は、1バイト内に生じた2tビットまでの誤りを訂正する機能を有するため、t’>2tとする。
【0157】
【数59】

ただし、R≧q+3r、かつ(R−q)は3の倍数であり、N=b(n+1)+(R−q)/3、0≦i≦n−1、n=2(R−q)/3−1である。
【0158】
上記数59を構成する行列H’は、下記数60に示すq次の列ベクトルh’(0≦j≦b−1)から構成されるq行b列(q≦b)の2元行列であり、4tまたは2t’のうちいずれか大きい値、及びbのうちいずれか小さい値に等しいか大きいランク(Rank)を有する。すなわち、Rank(H’)≧Min(Max(4t、2t’)、b)を満足する。
【0159】
【数60】

ここで、行列H’のランクがbに等しいとき、行列H’はランクbのb×b行列(例えば、b×bの単位行列)であり、行列H’のランクが4tのとき、行列H’は最小ハミング距離4t+1を有する符号の検査行列、すなわち、4tビット誤り検出機能を有する(b、b−q)符号のパリティ検査行列に等しい。また、行列H’のランクが2t’のとき、行列H’は最小ハミング距離2t’+1を有する符号の検査行列、すなわち、2t’ビット誤り検出機能を有する(b、b−q)符号のパリティ検査行列に等しい。
【0160】
また、上記数59を構成する行列H”は、下記数61に示すr次の列ベクトルh”(0≦j≦b−1)から構成されるr行b列(r≦b)の2元行列であり、2tまたはt’のうちいずれか大きい値、及びbのうちいずれか小さい値に等しいか大きいランク(Rank)を有する。すなわち、Rank(H”)≧Min(Max(2t、t’)、b)を満足する。
【0161】
【数61】

ここで、行列H”のランクがbに等しいとき、行列H”はランクbのb×b行列(例えば、b×bの単位行列)であり、行列H”のランクが2tのとき、行列H”は最小ハミング距離2t+1を有する符号の検査行列、すなわち、2tビット誤り検出機能を有する(b、b−q)符号のパリティ検査行列に等しい。また、行列H”のランクがt’のとき、行列H”は最小ハミング距離t’+1を有する符号の検査行列、すなわち、t’ビット誤り検出機能を有する(b、b−q)符号のパリティ検査行列に等しい。
【0162】
次に、R≧q+3r、かつ(R−q)は3の倍数であり、γを2を底とする(R−q)/3次の拡大体GF(2(R−q)/3)の原始元とするときに、γH”は下記数62で定義することができる。
【0163】
【数62】

ここで、Φは加法のもとでGF(2)からGF(2(R−q)/3)への準同型写像(homomorphism)である。
【0164】
次に、上記数59に示したパリティ検査行列(H)で表される符号が、2個のt/b誤りを訂正し、かつ1個のt’/b誤り(t<t’)を訂正する機能を有していることを具体的に示す。パリティ検査行列H=[H、H、・・・、Hn−1]が、以下に示す必要十分条件を満たしていることを示せばよい。ただし、HはR×bの小行列である。
【0165】
【数63】

【0166】
【数64】

【0167】
【数65】

【0168】
【数66】

【0169】
【数67】

ここで、Et/bを1バイト中のtビットまでの誤りの集合とし、Et’/bを1バイト中のt’ビットまでの誤りの集合とする。また、


はすべて異なるものとする。
【0170】
上記数9、数10、数11に示した必要十分条件と同様に、数63から数67までに示した条件を満たしていることを示すことができる。
【0171】
このように、上記では、バイト内複数スポッティバイト誤り制御符号のパリティ検査行列(H)の構成法の幾つかの例を示したが、次に、このパリティ検査行列(H)を用いて、処理する符号化と復号の具体的な方法とそれぞれの回路構成について、数1に示したバイト内複数スポッティバイト誤り制御符号を例に取って説明する。

<A>符号化の方法及びこれを実現する回路の構成について
まず、図1に示す符号化回路2が行う符号化方法について説明する。
【0172】
符号化回路2は、入力情報データD(行ベクトル)30と、図3に示すパリティ検査行列(H)を基本行変形して得られるパリティ検査行列(H)の情報部Hを用いて、検査情報C(行ベクトル)を生成する。この検査情報(C)の生成は、下記数68により求めることができる。
【0173】
【数68】

具体的には、符号化回路2は、入力情報データ(D)30の情報ビット長64ビット及び検査ビット長26ビットを基に、パリティ検査行列Hである(504、478)D2/8EC符号を構成した後に、後半414ビットに相当する列ベクトル414列を削除することにより、符号ビット長90ビット、情報長64ビットを有する図3に示す(90、64)D2/8EC符号が構成することができる。この符号のパリティ検査行列Hを基本行変形すると、組織符号としてのパリティ検査行列Hを構成することができる。図4は、(90、64)D2/8EC組織符号のパリティ検査行列を示している。
【0174】
図4に示す(90、64)D2/8EC組織符号のパリティ検査行列において、d〜d63が情報ビットに相当し、c〜c25が検査ビットに相当する。ここで、図4に示す(90、64)D2/8EC組織符号のパリティ検査行列において、情報ビットに相当するd〜d63の列ベクトルを集めた行列が、パリティ検査行列の情報部Hとなる。
【0175】
ここで、符号化では図4に示すパリティ検査行列を使用し、復号では図3に示すパリティ検査行列を使用する。基本行変形して得られた行列は、もとの行列と等価であり、図4に示すパリティ検査行列で表される符号は、図3に示すパリティ検査行列で表される符号と、その性質は全く変化しない。これより、符号化においては、図4に示すパリティ検査行列を使用することとする。
【0176】
次に、符号化回路2は、上記数68を基に、26ビットの検査情報(C)を生成する。上記数68に示すC=D・Hから明らかなように、例えば、検査情報(C)における検査ビットcを生成するには、図4に示す符号化用(90、64)D2/8EC符号の行列の1行目において、cに対応するビットを除いて“1”が存在する箇所に対応するビットのGF(2)上の和(すなわち、2を法とする和:mod2)をとる演算を行えばよい。
【0177】
例えば、検査ビットcを求める場合に、cに対応するビットを除いて“1”が存在しているのは、d、d、d、d、d、d11、d12、d20、d21、d24、d26、d31、d33、d37、d38、d39、d40、d41、d42、d43、d44、d47、d48、d52、d54、d55、d56、d57、d58であり、これら29個のビットについて、2を法とする和(mod2)をとればよい。
【0178】
これを実現するには、図5に示すように、前記29ビットを多入力パリティチェック回路20(0)を構成すればよく、この多入力パリティチェック回路20(0)の出力が検査ビットcとなる。他の検査ビットc〜c25についても、検査ビットcと同様にして生成することができる。26ビットの検査ビットc〜c25を並列に生成する符号化回路2(多入力パリティチェック回路20(0)〜20(25)からなる)の上位14ビットの構成を図5に、下位12ビットの構成を図6にそれぞれ示す。
【0179】
次に、符号化回路2によって生成した検査情報(C)を、入力情報データ(D)30に付加した符号語を下記数69に示す。これが回路3に送られる送信語(V)(90ビットのベクトル)となる。
【0180】
【数69】

<B>復号の方法及びこれを実現する回路の構成について
次に、送信語(V)31に誤りが生じたとき(すなわち受信語32に誤りが含まれているとき)に、その誤りに対する訂正・検出処理が、図3に示す(90、64)D2/8EC符号を用いて生成されるシンドローム(S)33の値に基づいて可能なことを示す。
【0181】
図3に示す(90、64)D2/8EC符号の検査行列は、距離d=5を有することから、上記数1に示すように、パリティ検査行列H’による4段構成を有する。これより、1段目より得られるq=8ビットのシンドロームをSI、2段目より得られるr=6ビットのシンドロームをSII、3段目より得られるr=6ビットのシンドロームをSIII、4段目より得られるr=6ビットのシンドロームをSIVとする。
【0182】
これらの情報を用いて、次のように誤りの訂正・検出を行う。受信語(V’)32とパリティ検査行列(H)とから、シンドローム(S)33は、下記数70により求めることができる。
【0183】
【数70】

ここで、SI∈GF(2)は、q次の行ベクトルである。また、SII、SIII、SIV∈GF(2)は、それぞれr次の行ベクトルである。
【0184】
上記数5に示す伸長符号の場合に、SI∈GF(2)は、q次の行ベクトルである。また、SII、SIII、SIV∈GF(2(R−q)/3)は、それぞれ(R−q)/3次の行ベクトルである。
【0185】
なお、シンドローム(S)33は、例えば、iI番目のバイトにeIの誤り、iII番目のバイトにeIIの誤りが生じているときに、下記数71となる。
【0186】
【数71】

Iに注目すると、下記数72が成り立つ。数72において、H’はランクMin((d−1)t、b)を有しているため、eI+eII(=eとする)を求めることができる。図3に示す(90、64)D2/8EC符号の場合に、H’は単位行列であるため、e=eI+eII=SIとなる。
【0187】
【数72】

次に、eI+eIIにH”を右から乗算し、乗算した結果をS’I∈GF(2)とする。つまり、下記数73の関係が成立する。
【0188】
【数73】

ここで、eI・H”、eII・H”(∈GF(2))をGF(2)上の誤りe’I、e’IIとし、S’=[S’IIIIIIIV]とすると、下記数74の関係が成り立つ。
【0189】
【数74】

数74に示すS’は、誤りe’I、e’IIを有する距離d=5のRS符号におけるシンドロームの式と一致する。よって、距離d=5を有するGF(2)上のRS符号の復号法を用いることで、誤り位置iI、iII及びGF(2)上の誤りe’I、e’IIを求めることができる。また、誤り位置が求まらない場合に、誤りの訂正が不可能として誤りを検出する。
【0190】
次に、GF(2)上の誤りe’I、e’IIから、GF(2)上の誤りeI、eIIを求める。前記RS符号の復号により得られたGF(2)上の誤りe’において、誤りe’I、e’IIが、2バイトに生じている場合と1バイトに生じている場合で場合分けする。
【0191】
e’I、e’IIが2バイトに生じている場合に、各バイトに1個ずつのスポッティバイト誤りが生じている。このとき、eI・H”=e’I、eII・H”=e’IIにおいて、H”は、ランクがMin(2t、b)=(4、8)=4より、eI→e’I、eII→e’IIは単射の関係となっているため、GF(2)上の誤りeI、eIIを求めることができる。
【0192】
また、e’I、e’IIが1バイトに生じている場合に、1バイトに1または2個のスポッティバイト誤りが生じている。このとき、上記数73から求めたe=eI+eIIが誤りとなるため、誤りも求めることができる。
【0193】
なお、一般的な距離d、つまり、任意所定の距離dに対しても、前記距離d=5の場合と同様に、前記RS符号の復号により得られたGF(2)上の誤りe’において、誤りが生じているバイト数による場合分けを行うことにより、GF(2)上の誤りを求めることができる。
【0194】
RS符号に対する復号は、距離dが小さい符号に対しては、並列復号法を用いて実現することができる。この並列復号法の一般的構成は、「バースト誤り生成方法及びバーストおよびバイト誤り検出・訂正装置」(特許文献4参照)に開示されている。
【0195】
しかしながら、特許文献4に開示された並列復号法は、高速な復号が可能であるが、符号の距離dが大きくなると、回路量が大きくなるという問題が生じる。距離dが大きい符号に対しては、例えば、バーレカンプ・マッシィ法などの逐次復号法を用いることができるが、逐次復号法による復号は、逐次(シリアル)に行われるため、復号が遅いといった問題が生じる。なお、バーレカンプ・マッシィ法を用いたRS符号の復号回路の構成は、非特許文献11に開示されている。
【0196】
特許文献4に開示された並列復号法によれば、例えば、d=5の符号に対しては、次のような手順により復号する。
【0197】
まず、RS符号のパリティ検査行列

に対し、R×2rの行列

を構成する。ただし、

はR×rの小行列である。
【0198】
次に、この行列

にR×(R−2r)の行列B(i,j)を付加し、R×Rの正則行列

を構成する。
【0199】
そして、A(i,j)の逆行列

を求めると、下記数75の関係が成り立つ。
【0200】
【数75】

ここで、

はr×Rの行列であり、

となる。ただし、

はr×rの単位行列である。また、

はr×Rの行列であり、

となる。また、

は2r×Rの行列であり、

となる。ただし、

は2r×2rの単位行列である。また、

は2r×Rの行列であり、

となる。
【0201】
前記

に対し、

となるバイト位置i,jが誤りの位置iI、iIIとなり、

が誤りの大きさe’I、e’IIとなる。これから、2バイトの誤りを訂正することができる。また、

となるバイト位置i,jが存在しない場合に、誤りの訂正が不可能として誤りを検出する。
【0202】
次に、本発明において、前述したd=5の符号に対する並列復号方法を実現する復号回路4の概略構成を図7に示す。
【0203】
図1に示したように、復号回路4は、シンドローム生成回路1と誤り訂正回路5とから構成されている。
【0204】
また、図7に示すように、誤り訂正回路5は、H’復号回路6と、H”乗算回路7と、GF(2)上の並列復号回路8と、GF(2)上の誤り生成回路9と、反転回路10とから構成されている。
【0205】
ここで、H’復号回路6は、シンドローム(S)33の上位qビットSI36を基にして、バイトごとの誤りの和(e)38を生成する。
【0206】
また、H”乗算回路7は、バイトごとの誤りの和(e)38を基にして、シンドローム(S)33の上位qビットSI36とH”の転置(H”)の積(S’I)39を生成する。
【0207】
次に、GF(2)上の並列復号回路8は、シンドローム(S)33の上位qビットSI36とH”の転置(H”)の積(S’I)39、及びシンドローム(S)33の下位3rビットSIIIIIIV37を基にして、GF(2)上のビット誤りポインタ(e’)40、及びGF(2)上の並列復号において誤り訂正が不可能とみなされたときに出力されるDS(0)(Detection Signal)41を生成する。
【0208】
そして、GF(2)上の誤り生成回路9は、バイトごとの誤りの和(e)38、及びGF(2)上のビット誤りポインタ(e’)40を基にして、GF(2)上の誤りをGF(2)上の誤りに変換して、GF(2)上のビット誤りポインタ(e)42、及び誤り訂正が不可能とみなされたときに出力されるDS(1)(Detection Signal)43を出力する。
【0209】
最後に、反転回路10は、GF(2)上のビット誤りポインタ(e)42を基にして、誤りビットに該当する受信語(V’)32のビット値を反転させることにより、受信語(V’)32の誤りを訂正する。
【0210】
次に、図7に示される復号回路4で行われる動作手順の概略を説明する。
【0211】
まず、シンドローム生成回路1では、Nビットからなる受信語(V’)32が入力されると、Rビットのシンドローム(S)33を生成する。
【0212】
次に、生成されたRビットのシンドローム(S)33は、上位qビットSI36と、下位3rビットSIIIIIIV37とに分けられる。シンドローム(S)33の上位qビットSI36は、H’復号回路6に入力される。また、シンドローム(S)33の下位3rビットSIIIIIIV37は、GF(2)上の並列復号回路8に入力される。
【0213】
そして、H’復号回路6では、詳細は後述するが、シンドローム生成回路1で生成されたシンドローム(S)33の上位qビットSI36を基にして、bビットのバイトごとの誤りの和(e)38を出力する。
【0214】
そして、H”乗算回路7では、詳細は後述するが、H’復号回路6で生成されたバイトごとの誤りの和(e)38を基にして、シンドローム(S)33の上位qビットSI36とH”の転置(H”)の積(S’I)39を出力する。
【0215】
また、GF(2)上の並列復号回路8では、詳細は後述するが、H”乗算回路7で生成されたシンドローム(S)33の上位qビットSI36とH”の転置(H”)の積(S’I)39、及びシンドローム生成回路1で生成されたシンドローム(S)33の下位3rビットSIIIIIIV37を基にして、GF(2)上の誤りを指摘する

ビットのGF(2)上のビット誤りポインタ

を生成する。ここで、

はyを超える最小の整数を示す。また、GF(2)上の並列復号回路8では、GF(2)上の並列復号において、誤り訂正が不可能とみなされたときに、訂正不可能誤り検出信号(DS(0))41を出力する。
【0216】
そして、GF(2)上の誤り生成回路9では、詳細は後述するが、H’復号回路6で生成されたバイトごとの誤りの和(e)38、及びGF(2)上の並列復号回路8で生成されたGF(2)上のビット誤りポインタ(e’)40を基にして、GF(2)上の誤りを指摘するNビットのGF(2)上のビット誤りポインタe=(e、e、・・・、eN−1)42を生成する。また、GF(2)上の誤り生成回路9では、誤り訂正が不可能とみなされたときに、訂正不可能誤り検出信号(DS(1))43を出力する。
【0217】
次に、反転回路10では、GF(2)上の誤り生成回路9で生成されたNビットのGF(2)上のビット誤りポインタ(e)42、及び受信語(V’)32を基にして、GF(2)上のビット誤りポインタ(e)42に対応した受信語(V’)32のビットを反転する。
【0218】
最後に、反転回路10では、Nビットの誤り訂正された受信語Vから、Kビットの情報語Dを取り出し、出力情報データ34として出力する。
【0219】
また、GF(2)上の並列復号回路8で生成された訂正不可能誤り検出信号(DS(0))41と、GF(2)上の誤り生成回路9で生成された訂正不可能誤り検出信号(DS(1))43の論理和をとることにより、訂正不可能誤り検出信号UCE(Uncorrectable Error)35の値を出力する。例えば、この訂正不可能誤り検出信号UCE35の値が“1”であれば、訂正能力を超えた誤りを検出したことを示している。
【0220】
なお、数5に示す伸長符号、及び数28、数36、数46、数59に示す大きさの異なる2種類のバイト内複数スポッティバイト誤りを制御する符号でも、それらの復号方法及び回路構成は、上述したことと基本的に同一である。
【0221】
次に、シンドローム生成回路1、H’復号回路6、H”乗算回路7、GF(2)上の並列復号回路8、GF(2)上の誤り生成回路9、及び反転回路10のそれぞれの具体的な構成例を、図3に示す(90、64)D2/8EC符号を用いて説明する。

<a>シンドローム生成回路1の構成
ここでは、シンドローム生成回路1の構成について詳細に説明する。
【0222】
まず、シンドローム生成回路では、N=90(=64+26)ビットからなる受信語(V’)32を、下記数76に示すように表現したとき、この受信語(V’)32を入力して、下記数77に示すS、S、・・・、S25からなるR=26ビットのシンドローム(S)33を生成する。
【0223】
前述したように、図3に示すD2/8EC符号のパリティ検査行列が4段構成を有することから、これに対応してシンドローム(S)33も4個の部分に区分けし、SI=(S)、SII=(S10111213)、SIII=(S141516171819)、SIV=(S202122232425)とする。
【0224】
【数76】

【0225】
【数77】

上記数68に示したように、シンドロームS=V’・Hより、転置したパリティ検査行列(H)の各行は、入力する情報に対応し、例えば、行列(H)の第0行は、入力情報のv’に対応している。そこで、シンドローム(S)33の各ビットを生成するには、符号であるパリティ検査行列(H)の各列方向に、“1”を有するビットに対応する受信語(V’)32の受信情報をGF(2)上で加算(mod2の計算)すればよい。
【0226】
図8及び図9は、図3に示した(90、64)D2/8EC符号のパリティ検査行列を基に構成したシンドローム生成回路1を示す図である。図8では、S、S、・・・、S13といったシンドローム(S)33の上位14ビット、また、図9では、S14、S13、・・・、S25といったシンドローム(S)33の下位12ビットをそれぞれ生成している。
【0227】
図8及び図9に示すように、本実施例では、シンドローム生成回路1において、まず、26個の多入力パリティチェック回路21(p)、(p=0、1、・・・、25)に、図3に示した(90、64)D2/8EC符号のパリティ検査行列の対応する各行のビット“1”を有する受信情報(v’)、(q=0、1、・・・、89)が入力する。
【0228】
次に、各多入力パリティチェック回路21(p)、(p=0、1、・・・、25)において、前記入力された受信情報(v’)に対して、2を法とする和(mod2)の計算を行い、その結果がSである。
【0229】
具体的に、例えば、シンドローム(S)33のビットSを生成するには、90ビットの受信語v’、v’、・・・、v89’のうち、図3に示すパリティ検査行列の第0行目において、“1”が存在する箇所に相当するv’、v’、v16’、v24’、v32’、v40’、v48’、v56’、v64’、v72’、v80’、v88’の12ビットについて、2を法とする和(mod2)をとればよい。図8の多入力パリティチェック回路21(0)は、前記12ビットの受信情報を入力として、値Sを出力するようになっている。シンドローム(S)33の他のビットS、(p=1、・・・、25)についても同様である。

<b>H’復号回路6の構成
次に、H’復号回路6について説明する。
【0230】
H’復号回路6を図10に示す。数72に示した(eI+eII)・H’=SIにおいて、H’はランクMin((d−1)t、b)を有しているため、eI+eII(=eとする)を求めることができる。よって、eI+eII→SIが単射の関係となっていることを利用し、論理合成を行うことにより、組み合わせ回路で実現することができる。
【0231】
図3に示す(90、64)D2/8EC符号の場合に、H’は単位行列であるため、e=eI+eII=SIとなる。すなわち、

I=(S)に対し、図10に示すように、

となる。
【0232】
一方、H’が単位行列でない場合に、<e>において後述する方法を用いる。

<c>H”乗算回路7の構成
次に、H”乗算回路7について説明する。
【0233】
H”乗算回路7を図11に示す。数73に示したS’I=(eI+eII)・H”=e・H”を計算する。下記数78に示すH”の対応する各行のビット“1”を有するeの情報がH”乗算回路7に入力される。そして、H”乗算回路7では、前記入力されたeの情報に対し、mod2の計算を行い、その結果をS’(p=0、1、・・・、5)として出力する。
【0234】
【数78】

具体的に、例えば、シンドローム(S)33の上位qビットSI36とH”の転置(H”)の積(S’I)39のビットS’を生成するには、8ビットの

のうち、数78に示すパリティ検査行列H”の第0行目において、“1”が存在する箇所に相当する2ビット

の値に対して、2を法とする和(mod2)をとればよい。
【0235】
図11において、排他的論理和回路22では、前記2ビットのeの情報(つまり、2ビット

の値)が入力されて、値S’を出力していることを示している。
【0236】
シンドローム(S)33の上位qビットSI36とH”の転置(H”)の積(S’I)39のほかのビットS’についても、同様に、排他的論理和回路22及び3入力パリティチェック回路23を用いて、構成することができる。
【0237】
ここで、S’は下記数79に示す構成とする。
【0238】
【数79】

<d>GF(2)上の並列復号回路8の構成
次に、GF(2)上の並列復号回路8について説明する。
【0239】
GF(2)上のビット誤りポインタ40を求めるために、並列復号法を用いる。GF(2)上の並列復号回路8の全体構成を図12に示す。
【0240】
図12に示されるように、GF(2)上の並列復号回路8は、12バイト中任意の2バイトの組

個を選び、i、j番目の2バイト(以下、(i、j)と表現することとする)に関する各々の誤りを生成する回路である(i、j)に対する誤り生成回路50(0)・・・50(65)、(以下、代表として50(m)、0≦m≦65、と称する)と、GF(2)上のビット誤りポインタ(e’)40を出力するGF(2)上の誤り算出回路51とから構成されている。
【0241】
まず、(i、j)に対する誤り生成回路50(m)は、バイト位置i、jに対して、上述した

を計算する回路である。要するに、(i、j)に対する誤り生成回路50(0)〜50(65)は、符号語の12バイト中のi、j(0≦i<j≦11)番目のバイトに対する前述した

を計算し、E’m、i、E’m、jになる誤り52(m)、0≦m≦65、0≦i<j≦11(それぞれrビットのベクトル)、及び訂正可能信号53(m)、0≦m≦65、を出力する。
【0242】
また、GF(2)上の誤り算出回路51は、GF(2)上のビット誤りポインタ(e’)40を出力する回路である。要するに、GF(2)上の誤り算出回路51は、誤り生成回路50(m)の出力である誤りE’m、i、E’m、jを入力とし、GF(2)上のビット誤りポインタ(e’)40を出力する。
【0243】
ここで、GF(2)上の並列復号回路8の処理をより詳しく説明すると、図12に示すように、まず、R=24ビットのS’(シンドローム(S)33の上位qビットSI36とH”の転置(H”)の積(S’I)39、及びシンドローム(S)33の下位3rビットSIIIIIIV37)を(i、j)に対する誤り生成回路50(m)に入力する。
【0244】
次に、(i、j)に対する誤り生成回路50(m)は、誤りE’m、i、E’m、jを生成し、そして、生成した誤りE’m、i、E’m、jをGF(2)上の誤り算出回路51に入力する。次に、GF(2)上の誤り算出回路51は、GF(2)上のビット誤りポインタ(e’)40を出力する。
【0245】
また、R=24ビットのS’(シンドローム(S)33の上位qビットSI36とH”の転置(H”)の積(S’I)39、及びシシンドローム(S)33の下位3rビットSIIIIIIV37)を24ビット入力ORゲート回路54に入力する。
【0246】
一方、(i、j)に対する誤り生成回路50(m)によって生成される訂正可能信号53(m)を、66入力NORゲート回路55に入力する。
【0247】
24ビット入力ORゲート回路54及び66入力NORゲート回路55からそれぞれ出力された2本の信号を2入力ANDゲート回路56に入力する。2入力ANDゲート回路56は、訂正不可能誤り検出信号(DS(0))41を出力する。これらの回路により、シンドロームが非零且つ訂正可能信号がすべて0の場合に、誤りを検出する。
【0248】
次に、(i、j)に対する誤り生成回路50(m)の構成例を具体的に示す。例として、(0、1)に対する誤り生成回路50(0)を図13に示す。図13に示されるように、(i、j)に対する誤り生成回路50(m)は、

計算回路60と、

計算回路61と、

計算回路62とを備える。
【0249】
ここで、

は下記数80に示すGF(2)上のRS符号の検査行列であり、符号長72ビットと検査ビット長24ビットとを有する。ただし、γはGF(2)の元であり、下記数81に示すように、生成多項式g(x)=x+x+1で定義される2元の6×6随伴行列(companion matrix)で表現される。
【0250】
【数80】

【0251】
【数81】

例えば、(0、1)に対する誤り生成回路50(0)では、

は、数80の第1列、第2列に相当し、それぞれ下記数82に示す24×6行列となる。
【0252】
【数82】

次に、

から24×12の行列

を構成し、

に24×12の行列B(0,1)を付加することにより、下記数83に示す24×24の正則行列

を構成する。ここで、B(0,1)はA(0,1)が正則行列となるように求めた24×12の行列であり、一例である。
【0253】
【数83】

次に、A(0,1)の逆行列

を求めると、下記数84の関係が成り立つ。

はそれぞれ下記数85、数86、数87に示す行列となる。
【0254】
【数84】

【0255】
【数85】

【0256】
【数86】

【0257】
【数87】


計算回路60では、

の各列が入力する情報に対応し、例えば、

の第0行が入力情報のS’に対応している。そこで、

の各ビットを生成するには、

の各行方向に、“1”を有するビットに対応するシンドロームS’の情報をGF(2)上で加算(mod2の計算)すればよい。
【0258】
要するに、

計算回路60は、まず、前記

の対応する各行のビット“1”を有するシンドローム情報(S’)、(p=0、1、・・・、23)をそれぞれ6個の多入力パリティチェック回路63(u)、(u=0、1、・・・、5)に入力する。次に、これらのシンドローム情報についてmod2の計算を行い、その結果をとしてE’0、0、E’0、1を出力する。
【0259】
具体的に、例えば、E’0、0の0ビット目を生成するには、24ビットのシンドロームS’=S’、S’、・・・、S’23のうち、上記数85に示すパリティ検査行列の第0行目において“1”が存在する箇所に相当する5ビットS’、S’、S’、S’21、S’23の値について、2を法とする和(mod2)をとればよい。図13の多入力パリティチェック回路63(0)は、この5ビットS’、S’、S’、S’21、S’23のシンドロームが入力される。また、多入力パリティチェック回路63(0)は、52(0)であるE’0、0の0ビット目を出力する。なお、E’0、0の他のビットについても同様である。
【0260】
また、図13に示されるように、

計算回路61は、6個の多入力パリティチェック回路64(w)、(w=0、1、・・・、5)で構成され、そして、

計算回路62は、12個の多入力パリティチェック回路65(z)、(z=0、1、・・・、11)で構成される。これらの計算回路は、

計算回路60と同様の方法で構成することができる。
【0261】
ここで、(0、1)に対する誤り生成回路50(0)の処理をより詳しく説明すると、図13に示すように、24ビットのシンドロームS’を多入力パリティチェック回路63(u)、(u=0、1、・・・、5)に入力することにより、E’0、0を生成する。また、24ビットのシンドロームS’を多入力パリティチェック回路64(w)、(w=0、1、・・・、5)に入力することにより、E’0、1を生成する。
【0262】
また、24ビットのシンドロームS’を多入力パリティチェック回路65(z)、(z=0、1、・・・、11)に入力する。多入力パリティチェック回路65(z)、(z=0、1、・・・、11)から出力される12ビットの信号を12入力NORゲート回路65に入力し、(0、1)に対する訂正可能信号53(0)を出力する。これらの回路は、

となるバイトの組(i、j)が誤りのバイトの組であるため、

であることを検出し、バイトの組(i、j)で訂正可能であることを意味する。
【0263】
また、(0、1)に対する訂正可能信号53(0)と多入力パリティチェック回路63、多入力パリティチェック回路64からの出力信号を2入力ANDゲート回路67に入力し、E’0、0及びE’0、1を出力する。これらの回路は、誤りが生じているバイトの組である場合に、誤りを出力し、そうでない場合に、0のパターンを出力するようにしている。
【0264】
以上より、(0、1)に対する誤り生成回路50(0)は、誤りE’0、0、E’0、152(0)、及び(0、1)に対する訂正可能信号53(0)を最終的に出力する。ここでは、(0、1)に対する誤り生成回路50(0)を例にして説明したが、他のバイト(i、j)に対しても同様である。
【0265】
次に、GF(2)上の誤り算出回路51の構成例を具体的に示す。GF(2)上の誤り算出回路51を図14に示す。
【0266】
図14に示されるように、GF(2)上の誤り算出回路51は、i番目のバイトに対応するすべての誤りE’m、iをビットごとOR演算回路68に入力し、GF(2)上のビット誤りポインタ(e’)40を最終的に出力する。これらの回路は、i番目に対応するバイトの組(i、j)からの誤りE’m、iを統合し、i番目の誤りe’を出力するようにしている。
【0267】
具体的に、例えば、GF(2)上のビット誤りポインタ(e’)40のe’を出力するには、(0、1)に対する誤り生成回路50(0)、(1、2)に対する誤り生成回路50(11)、・・・、及び(1、11)に対する誤り生成回路50(20)から出力されるE’0、1、E’11、1、・・・、E’20、1の0ビット目をビットごとのOR演算回路68に入力することにより得られる。ビットごとのOR演算回路68では、6ビットを有するE’0、1、E’11、1、・・・、E’20、1の0ビット目をそれぞれ11入力OR回路69に入力することにより、E’0、1、E’11、1、・・・、E’19、1の0ビット目を統合し、e’を出力している。
【0268】
以上では、GF(2)上のビット誤りポインタ(e’)40のe’を例にして説明したが、他のビット値e’、・・・、e’65についても、まったく同様である。

<e>GF(2)上の誤り生成回路9の構成
次に、GF(2)上の誤り生成回路9について説明する。GF(2)上の誤り生成回路9の全体構成を図15に示す。
【0269】
図15に示すように、GF(2)上の誤り生成回路9は、シンドロームが非零であることを検出する誤りバイト検出回路70と、GF(2)上のビット誤りポインタ(e’)40の1バイトからGF(2)上のビット誤りポインタ(e)42の1バイトを出力するtビット誤り訂正復号回路72と、入力信号の選択を行うビットごと選択回路75とをそれぞれ12個ずつ備えている。また、ハミング重み(1の数)が1の信号の場合、1を出力するハミング重み1を検出する回路71をも備えている。
【0270】
ここで、誤りバイト検出回路70は、GF(2)上のビット誤りポインタ(e’)40の1バイト(6ビット)を入力とし、1ビットのシンドローム検出信号を出力する。すなわち、6ビットの入力がすべて0である場合に、0が出力され、そうでない場合に、1が出力される。
【0271】
また、tビット誤り訂正復号回路(本例では、2ビット誤り訂正復号回路)72は、GF(2)上のビット誤りポインタ(e’)40を入力とし、1バイトからGF(2)上のビット誤りポインタ(e)42の1バイトを出力する。また、tビット誤り訂正復号回路72では、訂正能力をこえた誤りを検出する信号をも出力する。
【0272】
そして、ビットごと選択回路75は、それぞれ8ビットを有する2つの信号の各ビットどうしを制御信号に従って選択する。
【0273】
最後に、ハミング重み1を検出する回路71は、入力された信号のハミング重みを計算し、ハミング重みが1の場合に、1を出力し、そうでない場合に、0を出力する。
【0274】
ここで、GF(2)上の誤り生成回路9の処理をより詳しく説明すると、図15に示すように、GF(2)上のビット誤りポインタ(e’)40を6ビットずつに分け、誤りバイト検出回路70、及び2ビット誤り訂正復号回路72にそれぞれ入力する。
【0275】
次に、誤りバイト検出回路70から出力された検出信号を、ハミング重み1を検出する回路71に入力する。ハミング重み1を検出する回路71から出力された信号と、誤りバイト検出回路70から出力された検出信号とをそれぞれ2入力ANDゲート回路73に入力する。
【0276】
そして、2入力ANDゲート回路73から出力された信号をビットごと選択回路75の制御信号とし、ビットごと選択回路75では、2ビット誤り訂正復号回路72から出力された信号、及びバイトごとの誤りの和(e)38の選択をこの制御信号に従って行う。選択された信号を集め、90ビットのGF(2)上のビット誤りポインタ42を出力する。
【0277】
また、2ビット誤り訂正復号回路72から出力された検出信号は、12入力ORゲート回路74に入力される。12入力ORゲート回路74は、入力された検出信号に基づいて、訂正不可能誤り検出信号(DS(1))43を出力する。
【0278】
次に、誤りバイト検出回路70の構成例を具体的に示す。例として、GF(2)上のビット誤りポインタ(e’)40の2バイト目に対する誤りバイト検出回路70を図16に示す。
【0279】
図16に示すように、誤りバイト検出回路70では、GF(2)上のビット誤りポインタ(e’)40の2バイト目の信号e’6、e’7、e’8、e’9、e’10、e’11を6入力ORゲート回路80に入力することにより、シンドローム検出信号を出力する。
【0280】
次に、ハミング重み1を検出する回路71の構成例を図17に示す。
【0281】
図17に示すように、ハミング重み1を検出する回路71は、12入力ソート回路81を備えている。12入力ソート回路81は、入力される12ビットの情報中の重み(1の数)を数え、その重みの数だけ出力の上位ビットから1を連続して表記する回路である。例えば、12ビットの入力情報中に1が6個存在する場合、この回路の出力12ビットのうち上位6ビットはすべて1を、残りの6ビットはすべて0を出力する回路である。
【0282】
ここで、ハミング重み1を検出する回路71の処理をより詳しく説明すると、図17に示すように、12ビットの信号を12入力ソート回路81に入力する。12入力ソート回路81から出力される信号のうち、上位1ビットを除く11ビットをNOTゲート回路82に入力する。次に、12入力ソート回路81から出力される上位1ビットの信号と、NOTゲート回路82から出力される11ビットの信号とを12入力ANDゲート回路83に入力することにより、ハミング重み1の検出信号を出力する。
【0283】
次に、12入力ソート回路81の構成例を図18に示す。図18に示すように、12ビットの入力情報がソートされ、2入力ORゲート回路84、及び2入力ANDゲート回路85が対になって構成された2入力2出力回路をセルとして、12入力に対してこのセルを多段に接続して構成している。このソート回路は、一般に、nビット入力中に1の数がx個存在すれば、nビットの上位x個に1を出力し、残りの出力はすべて0を出力する回路である。なお、この回路の一般的な構成は、非特許文献12に述べられている。
【0284】
図18に示すように、12入力12出力の回路である12入力ソート回路81では、このセルを39個(すなわち、78ゲート)使用し、最大12段のセル(12ゲート段)で実現することが可能である。例えば、12ビットの入力情報として(001011001011)のような重み6の情報のとき、出力は(111111000000)となる。
【0285】
次に、2ビット誤り訂正復号回路72の構成例を具体的に示す。
【0286】
例として、2バイト目に対する2ビット誤り訂正復号回路72の上位4ビットを出力する回路を図19に、2バイト目に対する2ビット誤り訂正復号回路72の下位4ビットを出力する回路を図20に、また訂正能力をこえた誤りのときに“1”を出力する検出信号を出力する回路を図21にそれぞれ示す。
【0287】
2ビット誤り訂正復号回路72は、GF(2)上のビット誤りポインタ(e’)40の2バイト目を入力とし、GF(2)上のビット誤りポインタ(e)42の2バイト目と、検出信号とを出力する回路である。
【0288】
2ビット誤り訂正復号回路72は、GF(2)上の誤りeI、GF(2)上の誤りe’Iにおいて、eI→e’Iは単射の関係となっている。よって、論理合成を行うことにより、組み合わせ回路で実現することができる。
【0289】
具体的に、例えば、図19において、情報2バイト目では、eI・H’=eI’であり、H’は、数26に示すランク4を有する2ビット誤り訂正符号の検査行列であるため、重みが2以下のGF(2)上の誤りeI、及びGF(2)上の誤りeI’は一意に定まる。よって、重みが2以下のGF(2)上の誤りeI=(e101112131415)、及びGF(2)上の誤りeI’=(e’e’e’e’e10’e11’)は、下記表1に示す関係を有する。
【0290】
【表1】

ここで、GF(2)上の誤りeI’は37パターンあるが、残りの2−37=27パターンに対するeIは、訂正能力外誤りとして検出し、eIの出力はドントケア*とする。
【0291】
例えば、上記表1に示されたGF(2)上の誤りeIとGF(2)上の誤りeI’の対応関係から、情報2バイト目の1ビット目の値eは、eI’=(e’e’e’e’ e10’e11’)=(100000)、(110000)、(101000)、(100100)、(011100)、(100010)、(101111)、(100001)のときに、1となる。
【0292】
また、上記表1に示されたGF(2)上の誤りeIとGF(2)上の誤りeI’の対応関係において、残った27パターンのGF(2)上の誤りeI’=(e’e’e’e’e10’e11’)=(100110)、(110110)、(010110)、(011110)、(101110)、(110010)、(011010)、(111010)、(101010)、(100011)、(010011)、(011011)、(111011)、(101011)、(100111)、(110111)、(010111)、(111111)、(100101)、(110101)、(010101)、(011101)、(101101)、(110001)、(011001)、(111001)、(101001)に対する情報2バイト目の1ビット目の値eは、ドントケア*とする。
【0293】
これらの論理関数を簡単化すると、情報2バイト目の1ビット目の値eは、下記数88に示す論理式で表される。
【0294】
【数88】

ただし、



の否定で、



であり、また、

は論理和を、

は論理積を表す。
【0295】
よって、図19に示されるように、まず、GF(2)上のビット誤りポインタ40e’、e’、e’、e’、e’10、e’11をNOTゲート回路90に入力し、

を生成する。そして、

を3入力ANDゲート回路91に、

を4入力ANDゲート回路92に、

を5入力ANDゲート回路93に、

を4入力ANDゲート回路92に、

を4入力ANDゲート回路92にそれぞれ入力する。それぞれのANDゲート回路から出力された信号を5入力ORゲート回路94に入力することにより、情報2バイト目の1ビット目の値eが得られる。
【0296】
図19及び図20に示されるように、他のビットの値e、・・・、e15も、NOTゲート回路90、3入力ANDゲート回路91、4入力ANDゲート回路92、5入力ANDゲート回路93、5入力ORゲート回路94、6入力ORゲート回路95により、同様にして得られる。
【0297】
また、tビット誤り訂正復号回路(本例では、2ビット誤り訂正復号回路)72の検出信号出力部も同様にして、構成することができる。検出信号出力部は、GF(2)上の誤りe’Iから写像されることのないGF(2)上の誤りeIを訂正不可能な誤りとして検出する。例えば、2バイト目に対する検出信号出力部を図21に示す。
【0298】
具体的に、例えば、情報2バイト目において、上記表1に示されたGF(2)上の誤りeIとGF(2)上の誤りeI’の対応関係において、残った27パターンのGF(2)上の誤りeI’=(e’e’e’e’e10’e11’)=(100110)、(110110)、(010110)、(011110)、(101110)、(110010)、(011010)、(111010)、(101010)、(100011)、(010011)、(011011)、(111011)、(101011)、(100111)、(110111)、(010111)、(111111)、(100101)、(110101)、(010101)、(011101)、(101101)、(110001)、(011001)、(111001)、(101001)に対する検出信号の値を1にし、誤りを検出する。
【0299】
よって、これらの論理関数を簡単化すると、検出信号の値は、下記数89に示す論理式で表される。
【0300】
【数89】

よって、図21に示されるように、まず、GF(2)上のビット誤りポインタ40e’、e’、e’、e’、e’10、e’11をNOTゲート回路90に入力し、

を生成する。
【0301】
そして、

を合計14個の4入力ANDゲート92及び5入力ANDゲート93にそれぞれ入力する。
【0302】
最後に、それぞれのANDゲート回路から出力された信号を、14入力OR回路96に入力することにより、検出信号を出力する。
【0303】
なお、以上では、2バイト目におけるtビット誤り訂正復号回路72を例として詳細に説明したが、他のバイトについてもまったく同様である。
【0304】
最後に、ビットごと選択回路75の構成例を具体的に示す。
【0305】
図22に示すように、ビットごと選択回路75は、それぞれ8ビットを有する2つの信号の各ビットどうしを制御信号に従って選択する回路である。
【0306】
ここで、ビットごと選択回路75の処理をより詳しく説明すると、図22に示すように、8ビットの信号の中で0ビット目どうしを2入力マルチプレクサ86に入力する。2入力マルチプレクサ86では、制御信号が0の場合に、上の信号を出力し、制御信号が1の場合に、下の信号を出力する。0ビット目以外の信号に関しても同様に、制御信号により選択を行う。2入力マルチプレクサ86から出力された各信号をまとめて、最終的に8ビットの信号として出力する。
【0307】
以上では、距離d=5を有する符号を例として説明したが、d=5以外の距離を有する符号についても、バイトごとの誤りの和(e)とGF(2)上のビット誤りポインタとを用いて、GF(2)上の誤り生成回路中のビットごと選択回路75を用いて場合分けを行うことにより、同様に回路を構成することができる。

(f)反転回路10の構成
最後に、反転回路10の構成について説明する。
【0308】
例えば、2バイト目に対して、具体的に構成した反転回路10を図23に示す。図23に示す反転回路10は、誤りの箇所を具体的に指摘されたビット位置に対して、受信したビット値の反転を行って受信語(V’)32を訂正する回路である。図23において、v’〜v15’は、受信語(V’)32の2バイト目に相当する8ビットであり、v〜v15は訂正後の出力ビットである。
【0309】
反転回路10は、複数の排他的論理和回路を有している。図23に示された2バイト目における反転回路10において、合計8個の排他的論理和回路97は、8入力ビットv’〜v15’に対して、対応するビット誤りポインタe(i=8、9、・・・、15)との排他的論理和をとり、例えば、ビット誤りポインタが“1”のとき、入力ビット値が反転されて訂正されることになる。
【0310】
なお、反転回路10は、各バイトにそれぞれ対応するようにするため、N=90ビットの受信語(V’)に対しては、90個の排他的論理和回路が必要となる。反転回路10は、最後に、N=90ビットの受信語(V’)から、下記数90に示す64ビットの訂正語Dを得る。
【0311】
【数90】

以上では、図3に示す距離d=5を有する(90、64)D2/8EC符号を例にとり、距離dを有するバイト内複数スポッティバイト誤り制御符号における符号化・復号回路構成を詳細に説明した。ここで、GF(2)上の並列復号回路8において、前記バーレカンプ・マッシィ法を用いた逐次復号を行う場合に、誤り位置多項式および誤り評価多項式から、誤り位置および誤りを求める既存の手法を用いればよい。この手法の実現手段は、ハードウェアでもソフトウェアでもよい。
【0312】
また、d=5以外の距離dを有するバイト内複数スポッティバイト誤り制御符号に対しては、次のような考えで構成することができる。
【0313】
まず、符号化回路は、2元で表現したパリティ検査行列により、Rビットの検査情報を生成すればよく、全く同様に構成することができる。
【0314】
また、復号は、前述したように、前記RS符号の復号により得られたGF(2)上の誤りe’において、誤りが生じているバイト数による場合分けを行うことにより、GF(2)上の誤りを求めることができる。
【0315】
例えば、距離d=7の場合、行列H”がRank(H”)≧Min(3t、b)を満足する行列であることから、距離d=5の例における前記GF(2)上の誤り生成回路9において、tビット誤り訂正復号回路72の構成をtビット誤り訂正・2tビット誤り検出の訂正能力を有する符号の復号回路へ変更する。
【0316】
また、GF(2)上の誤りe’において、誤りが生じているバイトが1、2、3バイトの場合を、それぞれビットごと選択回路75を用いて場合分けを行う回路を構成することにより、同様に復号回路を構成することができる。従って、距離d=5、7以外の場合も、距離dを有するバイト内複数スポッティバイト誤り制御符号の復号回路を同様に構成できることは明らかである。
【0317】
さらに、上記数5に示された伸長バイト内複数スポッティバイト誤り制御符号に対しては、次のような考えで構成することができる。
【0318】
まず、符号化回路は、2元で表現したパリティ検査行列により、Rビットの検査情報を生成すればよく、全く同様に構成することができる。
【0319】
また、復号は、前記並列復号法やバーレカンプ・マッシィ法を用いた逐次復号法により、GF(2(R−r)/(d−2))上のRS符号の復号をすることにより、また、GF(2(R−r)/(d−2))上の誤りをGF(2)上の誤りに距離d=5の例と同様に変換することにより、同様に復号することができる。
【0320】
よって、復号回路も距離d=5の例における前記GF(2)上の並列復号回路8をGF(2(R−r)/(d−2))上で並列復号を行う回路に変更することにより、また、距離d=5の例における前記GF(2)上の誤り生成回路9において、rビットを(R−r)/(d−2)ビットに変更することにより、復号回路を同様に構成できることは明らかである。
【0321】
また、上記数28、数36、数46、数59に示された大きさの異なる2種類のバイト内複数スポッティバイト誤り制御符号に対しては、次のような考えで構成することができる。
【0322】
まず、符号化回路は、2元で表現したパリティ検査行列により、Rビットの検査情報を生成すればよく、全く同様に構成することができる。
【0323】
また、復号は、例えば、数28に示されたSt/bEC―(St/b+St’/b)ED符号では、GF(2)上の誤りe’において、誤りが生じている個所が1バイトである場合に、H”がRank(H”)≧Max(t、t’)を満足する行列であるため、bビットを有するバイト中のtビット以内の誤りであるeIに対し、eI・H’=eI’の関係式から誤りeIを求めることができる。また、GF(2)上の誤りe’において、誤りが生じている個所が2バイトである場合に、前記並列復号の際に検出することができる。
【0324】
よって、距離d=5の例における前記H’復号回路6、H”乗算回路7、及びtビット誤り訂正復号回路72を、それぞれRank(H’)≧Min(2t+t’、b)を満足する行列H’、Rank(H”)≧Max(t、t’)を満足する行列H”に対応させることにより、距離d=4のバイト内複数スポッティバイト誤り制御符号の復号回路と同様に復号回路を構成することが可能である。
【0325】
同様に、数36に示された大きさの異なる2種類のバイト内複数スポッティバイト誤り制御符号は、距離d=4のバイト内複数スポッティバイト誤り制御符号の復号回路と同様に構成できることは明らかである。
【0326】
また、数46、数59に示された大きさの異なる2種類のバイト内複数スポッティバイト誤り制御符号は、距離d=5のバイト内複数スポッティバイト誤り制御符号の復号回路と同様に構成可能できることは明らかである。
【0327】
前述したように、本発明では、バイト中にtビットまでの誤りを有するスポッティバイト誤りに対し、任意所定の距離dを有するバイト内複数スポッティバイト誤り制御符号の一般性のある符号構成、及び大きさの異なる2種類のバイト内複数スポッティバイト誤りを制御する符号の符号構成を与えるとともに、誤りの訂正・検出が実現できる回路である符号化・復号回路構成を示して、検査情報が具体的に生成できること、及び誤りが具体的に訂正・検出できることを示した。
【0328】
以上の説明では、主としてメモリ装置に注目して本発明の適用を述べたが、本発明は、それに限定されるものではなく、例えば、このようなバイト単位で物理的に独立した回路と、モジュールと、装置とから構成され、この中で限定した数の誤りが生じる可能性の高い一般の情報システム等に適用可能である。また、光通信回路やバス線回路等の通信または伝送のための回路、装置またはシステムにも適用可能である。
【0329】
また、本発明の目的は、本実施の形態のバイト内複数スポッティバイト誤り訂正・検出装置の機能を実現するソフトウェアのプログラムコードを記述した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ(又はCPUやMPU)が記憶媒体に格納されたプログラムコードを読み出して実行することによっても、達成されることは言うまでもない。
【0330】
この場合、記憶媒体から読み出されたプログラムコード自体が本実施の形態の機能を実現することとなり、そのプログラムコードを記憶した記憶媒体及び当該プログラムコードは本発明を構成することとなる。プログラムコードを供給するための記憶媒体としては、ROM、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、CD−R、磁気テープ、不揮発性のメモリカード等を用いることができる。
【0331】
また、コンピュータが読み出したプログラムコードを実行することにより、前記本実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているOS等が実際の処理の一部又は全部を行い、その処理によって本実施の形態の機能が実現される場合も含まれることは言うまでもない。
【図面の簡単な説明】
【0332】
【図1】本発明の一実施形態であるバイト内複数スポッティバイト誤り訂正・検出装置の概略構成を示すブロック図である。
【図2】図1に示された本発明のバイト内複数スポッティバイト誤り訂正・検出装置における全体動作の処理手順を示すフローチャートである。
【図3】本発明によるパリティ検査行列の一例であって、符号長N=90ビット、情報長K=64ビット、検査長R=26ビット、バイト長b=8ビット、バイト内訂正ビット長2ビットの符号パラメータを有する短縮(90、64)D2/8EC符号のパリティ検査行列を示す図である。
【図4】図3に示すパリティ検査行列を基本行変形して得られる符号化用(90、64)D2/8EC組織符号のパリティ検査行列を示す図である。
【図5】図4に示す符号化用(90、64)D2/8EC組織符号をもとに構成した符号化回路(上位14ビット)の具体例であり、K=64ビットの入力情報データからパリティ検査行列により26ビットの検査情報を生成する回路の概念図である。
【図6】図4に示す符号化用(90、64)D2/8EC組織符号をもとに構成した符号化回路(下位12ビット)の具体例であり、K=64ビットの入力情報データからパリティ検査行列により26ビットの検査情報を生成する回路の概念図である。
【図7】本発明で開示された機能を有する符号に対する復号回路の概略構成を示すブロック図である。
【図8】図3に示す(90、64)D2/8EC符号をもとに具体的に構成したシンドローム生成回路(上位14ビット)を説明するための概念図である。
【図9】図3に示す(90、64)D2/8EC符号をもとに具体的に構成したシンドローム生成回路(下位12ビット)を説明するための概念図である。
【図10】図3に示す(90、64)D2/8EC符号をもとに具体的に構成したH’復号回路の構成図である。
【図11】図3に示す(90、64)D2/8EC符号をもとに具体的に構成したH”乗算回路の構成図である。
【図12】図3に示す(90、64)D2/8EC符号に対するGF(2)上の並列復号回路の概略構成を示すブロック図である。
【図13】図12に示すGF(2)上の並列復号回路における(i、j)に対する誤り生成回路の一例の回路構成図である。
【図14】図12に示すGF(2)上の並列復号回路におけるGF(2)上の誤り算出回路の構成図である。
【図15】図3に示す(90、64)D2/8EC符号に対するGF(2)上の誤り生成回路の概略構成を示すブロック図である。
【図16】図15に示すGF(2)上の誤り生成回路における誤りバイト検出回路の構成図である。
【図17】図15に示すGF(2)上の誤り生成回路におけるハミング重み1を検出する回路の構成図である。
【図18】図16に示すハミング重み1を検出する回路における12入力ソート回路の構成図である。
【図19】図15に示すGF(2)上の誤り生成回路におけるtビット誤り訂正復号回路の例であり、1バイトに対してGF(2)上の誤りをGF(2)上の誤りに変換する回路(上位4ビット)の構成図である。
【図20】図15に示すGF(2)上の誤り生成回路におけるtビット誤り訂正復号回路の例であり、1バイトに対してGF(2)上の誤りをGF(2)上の誤りに変換する回路(下位4ビット)の構成図である。
【図21】図15に示すGF(2)上の誤り生成回路におけるtビット誤り訂正復号回路の例であり、1バイトに対して誤りを検出する回路の構成図である。
【図22】図15に示すGF(2)上の誤り生成回路におけるビットごと選択回路の構成図である。
【図23】図3に示す(90、64)D2/8EC符号に対する反転回路の一例であり、1バイトに対する反転回路の構成図である。
【符号の説明】
【0333】
1 シンドローム生成回路
2 符号化回路
3 回路(メモリ等の通信路)
4 復号回路
5 誤り訂正回路
6 H’復号回路
7 H”乗算回路
8 GF(2)上の並列復号回路
9 GF(2)上の誤り生成回路
10 反転回路
20 多入力パリティチェック回路
21 多入力パリティチェック回路
22 2入力排他的論理和回路
23 3入力パリティチェック回路
30 入力情報データ
31 送信語
32 受信語
33 シンドローム(S)
34 出力情報データ
35 訂正不可能誤り検出信号(UCE)
36 シンドローム(S)33の上位qビット(SI
37 シンドローム(S)33の下位3rビット(SIIIIIIV
38 バイトごとの誤りの和(e
39 シンドローム(S)33の上位qビットSI36とH”の転置(H”)の積(S’I
40 GF(2)上のビット誤りポインタ
41 訂正不可能誤り検出信号(DS(0))
42 GF(2)上のビット誤りポインタ
43 訂正不可能誤り検出信号(DS(1))
44 2入力ANDゲート回路
50 (i、j)に対する誤り生成回路
51 GF(2)上の誤り算出回路
52 (i、j)に対する誤り
53 (i、j)に対する訂正可能信号
54 24入力ORゲート回路
55 66入力NORゲート回路
56 2入力ANDゲート回路
60

61

62

63 多入力パリティチェック回路
64 多入力パリティチェック回路
65 多入力パリティチェック回路
66 12入力NORゲート回路
67 2入力ANDゲート回路
68 ビットごとOR演算回路
69 11入力ORゲート回路
70 誤りバイト検出回路
71 ハミング重み1を検出する回路
72 tビット誤り訂正復号回路
73 2入力ANDゲート回路
74 12入力ORゲート回路
75 ビットごと選択回路
80 6入力ORゲート回路
81 12入力ソート回路
82 NOTゲート回路
83 12入力ANDゲート回路
84 2入力ORゲート回路
85 2入力ANDゲート回路
86 2入力マルチプレクサ回路
90 NOTゲート回路
91 3入力ANDゲート回路
92 4入力ANDゲート回路
93 5入力ANDゲート回路
94 5入力ORゲート回路
95 6入力ORゲート回路
96 15入力ORゲート回路
97 排他的論理和回路
100 バイト内複数スポッティバイト誤り訂正・検出装置

【特許請求の範囲】
【請求項1】
入力情報データを基に送信語を生成する符号化手段と、情報伝送路中で誤りが発生した前記送信語を受信語として入力して前記誤りを訂正または検出する復号手段とを備えるバイト内複数スポッティバイト誤り訂正・検出装置であって、
前記符号化手段は、スポッティバイト誤り制御符号を表現するパリティ検査行列と、前記入力情報データとを基に生成した検査情報を前記入力情報データに付加することにより、前記送信語を生成し、
前記復号手段は、前記パリティ検査行列を基に前記受信語のシンドロームを生成するシンドローム生成手段と、前記シンドローム生成手段により生成されたシンドロームを基に前記受信語の誤りを訂正または検出する誤り訂正手段とを備えることを特徴とするバイト内複数スポッティバイト誤り訂正・検出装置。
【請求項2】
前記入力情報データが、b(bは2以上の整数)ビットを1バイトとし、複数のバイトから構成される場合に、ここで、バイト内のtビット(1≦t≦b)までの誤りをスポッティバイト誤りと称し、1バイト内に複数の前記スポッティバイト誤りが生じる誤りをバイト内複数スポッティバイト誤りと称することを前提とし、
前記パリティ検査行列で表現される前記スポッティバイト誤り制御符号は、距離dに対し、

を有する請求項1に記載のバイト内複数スポッティバイト誤り訂正・検出装置。
【請求項3】
前記t値、b値、d値を任意に設定する請求項2に記載のバイト内複数スポッティバイト誤り訂正・検出装置。
【請求項4】
前記情報伝送路は、情報通信システムである請求項1乃至請求項3のいずれかに記載のバイト内複数スポッティバイト誤り訂正・検出装置。
【請求項5】
前記情報伝送路は、メモリシステムである請求項1乃至請求項3のいずれかに記載のバイト内複数スポッティバイト誤り訂正・検出装置。
【請求項6】
前記情報伝送路は、バス線回路である請求項1乃至請求項3のいずれかに記載のバイト内複数スポッティバイト誤り訂正・検出装置。
【請求項7】
前記パリティ検査行列は、前記距離dを有するバイト内複数スポッティバイト誤り制御符号に用いる、R行N列を有する次の行列Hであり、

ただし、R=q+(d−2)r、N=bn、0≦i≦n−1、n=2−1であり、行列H’は、H’=[h’、h’、・・・、hb−1’]に示すq次の列ベクトルh’(0≦j≦b−1)から構成されるq行b列(q≦b)の2元行列であり、(d−1)tまたはbのうちいずれか小さい値に等しいか大きいランク(Rank)を有し、すなわち、Rank(H’)≧Min((d−1)t、b)を満足し、前記行列H’のランクがbに等しいとき、前記行列H’はランクbのb×b行列であり、前記行列H’のランクが(d−1)t<bのとき、前記行列H’は最小ハミング距離(d−1)t+1を有する符号の検査行列、すなわち、(d−1)tビット誤り検出機能を有する(b、b−q)符号のパリティ検査行列に等しくなり、また、行列H”は、H”=[h”、h”、・・・、hb−1”]に示すr次の列ベクトルh”(0≦j≦b−1)から構成されるr行b列(r≦b)の2元行列であり、

またはbのうちいずれか小さい値に等しいか大きいランク(Rank)を有し、すなわち、

を満足し、ここで、

はxを超えない最小の整数を表し、また、前記行列H”のランクがbに等しいとき、前記行列H”はランクbのb×b行列であり、前記行列H”のランクが

のとき、前記行列H”は最小ハミング距離

を有する符号の検査行列、すなわち、

ビット誤り検出機能を有する(b、b−r)符号のパリティ検査行列に等しくなり、γは2を底とするr次の拡大体GF(2)の原始元であって、γH”=[γ”、γ”、…、γb−1”]が成立するように構成される請求項2乃至請求項6のいずれかに記載のバイト内複数スポッティバイト誤り訂正・検出装置。
【請求項8】
前記パリティ検査行列は、前記距離dを有する伸長バイト内複数スポッティバイト誤り制御符号に用いる、R行N列を有する次の行列Hであり、

ただし、R≧q+(d−2)r、かつ(R−q)は(d−2)の倍数であり、N=b(n+1)+(R−q)/(d−2)、0≦i≦n−1、(R−q)は(d−2)の倍数とし、n=2(R−q)/(d−2)−1であり、行列H’は、H’=[h’、h’、・・・、hb−1’]に示すq次の列ベクトルh’(0≦j≦b−1)から構成されるq行b列(q≦b)の2元行列であり、(d−1)tまたはbのうちいずれか小さい値に等しいか大きいランク(Rank)を有し、すなわち、Rank(H’)≧Min((d−1)t、b)を満足し、前記行列H’のランクがbに等しいとき、前記行列H’はランクbのb×b行列であり、前記行列H’のランクが(d−1)t<bのとき、前記行列H’は最小ハミング距離(d−1)t+1を有する符号の検査行列、すなわち、(d−1)tビット誤り検出機能を有する(b、b−q)符号のパリティ検査行列に等しくなり、また、行列H”は、H”=[h”、h”、・・・、hb−1”]に示すr次の列ベクトルh”(0≦j≦b−1)から構成されるr行b列(r≦b)の2元行列であり、

またはbのうちいずれか小さい値に等しいか大きいランク(Rank)を有し、すなわち、

を満足し、前記行列H”のランクがbに等しいとき、前記行列H”はランクbのb×b行列であり、前記行列H”のランクが

のとき、前記行列H”は最小ハミング距離

を有する符号の検査行列、すなわち、

ビット誤り検出機能を有する(b、b−r)符号のパリティ検査行列に等しくなり、R≧q+(d−2)r、かつR−qはd−2の倍数とし、γは2を底とする(R−q)/(d−2)次の拡大体GF(2(R−q)/(d−2))の原始元であって、γH”=[γΦ(h
)、γΦ(h” )、・・・、γΦ(hb−1
)]が成立するように構成され、ここで、Φは加法のもとでGF(2)からGF(2(R−q)/(d−2))への準同型写像(homomorphism)であり、すなわち、Φ:GF(2)→GF(2(R−q)/(d−2))である請求項2乃至請求項6のいずれかに記載のバイト内複数スポッティバイト誤り訂正・検出装置。
【請求項9】
前記入力情報データが、b(bは2以上の整数)ビットを1バイトとし、複数のバイトから構成される場合に、ここで、バイト内のtビットまでの誤りをt/b誤りと称し、バイト内のt’ビットまでの誤りをt’/b誤りと称することを前提とし、ただし、1≦t、t’≦b、且つ、t≠t’であり、
前記パリティ検査行列で表現される前記スポッティバイト誤り制御符号は、1バイト内に生じた大きさの異なる2種類のスポッティバイト誤り(つまり、前記t/b誤り及び前記t’/b誤り)を制御する機能を備えた請求項1に記載のバイト内複数スポッティバイト誤り訂正・検出装置。
【請求項10】
前記情報伝送路は、情報通信システムである請求項9に記載のバイト内複数スポッティバイト誤り訂正・検出装置。
【請求項11】
前記情報伝送路は、メモリシステムである請求項9に記載のバイト内複数スポッティバイト誤り訂正・検出装置。
【請求項12】
前記情報伝送路は、バス線回路である請求項9に記載のバイト内複数スポッティバイト誤り訂正・検出装置。
【請求項13】
前記スポッティバイト誤り制御符号は、1個のt/b誤りを訂正し、且つ、(t/b+t’/b)誤り(つまり、t/b誤りとt’/b誤りの複合誤り)を検出する機能を有するSt/bEC−(St/b+St’/b)ED符号であり、
前記St/bEC−(St/b+St’/b)ED符号に用いる前記パリティ検査行列は、R行N列を有する次の行列Hであり、

ただし、R≧q+2r、かつ(R−q)は2の倍数であり、また、N=b(n+1)+R−q、0≦i≦n−1、n=2(R−q)/2−1であり、行列H’は、H’=[h’、h’、・・・、hb−1’]に示すq次の列ベクトルh’(0≦j≦b−1)から構成されるq行b列(q≦b)の2元行列であり、2t+t’またはbのうちいずれか小さい値に等しいか大きいランク(Rank)を有し、すなわち、Rank(H’)≧Min(2t+t’、b)を満足し、また、行列H”は、H”=[h”、h”、・・・、hb−1”]に示すr次の列ベクトルh”(0≦j≦b−1)から構成されるr行b列(r≦b)の2元行列であり、tまたはt’のうちいずれか大きい値に等しいか大きいランク(Rank)を有し、すなわち、Rank(H”)≧Max(t、t’)を満足し、R≧q+2r、かつ(R−q)は2の倍数であり、γは2を底とする(R−q)/2次の拡大体GF(2(R−q)/2)の原始元であって、γH”=[γΦ(h”)、γΦ(h”)、・・・、γΦ(hb−1”)]が成立するように構成され、Φは加法のもとでGF(2)からGF(2(R−q)/2)への準同型写像(homomorphism)である請求項9乃至請求項12のいずれかに記載のバイト内複数スポッティバイト誤り訂正・検出装置。
【請求項14】
前記スポッティバイト誤り制御符号は、1個のt/b誤りを訂正し、且つ、2個のt’/b誤りを検出する機能を有するSt/bEC−Dt’/bED符号であり、
前記St/bEC−Dt’/bED符号に用いる前記パリティ検査行列は、R行N列を有する次の行列Hであり、

ただし、R≧q+2r、かつ(R−q)は2の倍数であり、また、N=b(n+1)+R−q、0≦i≦n−1、n=2(R−q)/2−1であり、行列H’は、H’=[h’、h’、・・・、hb−1’]に示すq次の列ベクトルh’(0≦j≦b−1)から構成されるq行b列(q≦b)の2元行列であり、2tまたはt+2t’のうちいずれか大きい値、及びbのうちいずれか小さい値に等しいか大きいランク(Rank)を有し、すなわち、Rank(H’)≧Min(Max(2t、t+2t’)、b)を満足し、また、行列H”は、H”=[h”、h”、・・・、hb−1”]に示すr次の列ベクトルh”(0≦j≦b−1)から構成されるr行b列(r≦b)の2元行列であり、tまたはt’のうちいずれか大きい値に等しいか大きいランク(Rank)を有し、すなわち、Rank(H”)≧Max(t、t’)を満足し、R≧q+2r、かつ(R−q)は2の倍数であり、γは2を底とする(R−q)/2次の拡大体GF(2(R−q)/2)の原始元であって、γH”=[γΦ(h”)、γΦ(h”)、・・・、γΦ(hb−1”)]が成立するように構成され、Φは加法のもとでGF(2)からGF(2(R−q)/2)への準同型写像(homomorphism)である請求項9乃至請求項12のいずれかに記載のバイト内複数スポッティバイト誤り訂正・検出装置。
【請求項15】
前記スポッティバイト誤り制御符号は、(t/b+t’/b)誤りを訂正する機能を有する(St/b+St’/b)EC符号であり、
前記(St/b+St’/b)EC符号に用いる前記パリティ検査行列は、R行N列を有する次の行列Hであり、

ただし、R≧q+3r、且つ、(R−q)は3の倍数であり、また、N=b(n+1)+(R−q)/3、0≦i≦n−1、n=2(R−q)/3−1であり、行列H’は、H’=[h’、h’、・・・、hb−1’]に示すq次の列ベクトルh’(0≦j≦b−1)から構成されるq行b列(q≦b)の2元行列であり、2t+2t’またはbのうちいずれか小さい値に等しいか大きいランク(Rank)を有し、すなわち、Rank(H’)≧Min(2t+2t’、b)を満足し、また、行列H”は、H”=[h”、h”、・・・、hb−1”]に示すr次の列ベクトルh”(0≦j≦b−1)から構成されるr行b列(r≦b)の2元行列であり、t+t’またはbのうちいずれか小さい値に等しいか大きいランク(Rank)を有し、すなわち、Rank(H”)≧Min(t+t’、b)を満足し、R≧q+3r、かつ(R−q)は3の倍数であり、γは2を底とする(R−q)/3次の拡大体GF(2(R−q)/3)の原始元であって、γH”=[γΦ(h”)、γΦ(h”)、・・・、γΦ(hb−1”)]が成立するように構成され、Φは加法のもとでGF(2)からGF(2(R−q)/2)への準同型写像(homomorphism)である請求項9乃至請求項12のいずれかに記載のバイト内複数スポッティバイト誤り訂正・検出装置。
【請求項16】
前記スポッティバイト誤り制御符号は、2個のt/b誤りを訂正し、且つ、1個のt’/b誤り(t<t’)を訂正する機能を有するDt/bEC−St’/bEC符号であり、
前記Dt/bEC−St’/bEC符号に用いる前記パリティ検査行列は、R行N列を有する次の行列Hであり、

ただし、R≧q+3r、且つ、(R−q)は3の倍数であり、また、N=b(n+1)+(R−q)/3、0≦i≦n−1、n=2(R−q)/3−1であり、行列H’は、H’=[h’、h’、・・・、hb−1’]に示すq次の列ベクトルh’(0≦j≦b−1)から構成されるq行b列(q≦b)の2元行列であり、4tまたは2t’のうちいずれか大きい値、及びbのうちいずれか小さい値に等しいか大きいランク(Rank)を有し、すなわち、Rank(H’)≧Min(Max(4t、2t’)、b)を満足し、また、行列H”は、H”=[h”、h”、・・・、hb−1”]に示すr次の列ベクトルh”(0≦j≦b−1)から構成されるr行b列(r≦b)の2元行列であり、2tまたはt’のうちいずれか大きい値、及びbのうちいずれか小さい値に等しいか大きいランク(Rank)を有し、すなわち、Rank(H”)≧Min(Max(2t、t’)、b)を満足し、R≧q+3r、かつ(R−q)は3の倍数であり、γは2を底とする(R−q)/3次の拡大体GF(2(R−q)/3)の原始元であって、γH”=[γΦ(h”)、γΦ(h”)、・・・、γΦ(hb−1”)]が成立するように構成され、Φは加法のもとでGF(2)からGF(2(R−q)/2)への準同型写像(homomorphism)である請求項9乃至請求項12のいずれかに記載のバイト内複数スポッティバイト誤り訂正・検出装置。
【請求項17】
前記誤り訂正手段は、前記シンドロームを基に前記受信語の何れのビットが誤っているかを検出するビット誤りポインタを生成し、生成された前記ビット誤りポインタを基に、誤りビットに該当する前記受信語のビット値を反転させることにより、前記受信語の誤りを訂正し、また、前記受信語のビット誤りを訂正できないことを検出した場合に、訂正不可能誤り検出信号を出力する請求項1乃至請求項16のいずれかに記載のバイト内複数スポッティバイト誤り訂正・検出装置。
【請求項18】
前記誤り訂正手段は、H’復号手段と、H”乗算手段と、GF(2)上の並列復号手段と、GF(2)上の誤り生成手段と、反転手段とから構成される請求項7、請求項8、請求項13、請求項14、請求項15又は請求項16のいずれかに記載のバイト内複数スポッティバイト誤り訂正・検出装置。
【請求項19】
前記H’復号手段は、前記シンドローム生成手段で生成された前記シンドロームの上位qビットを基にして、バイトごとの誤りの和(e)を生成し、
前記H”乗算手段は、前記H’復号手段で生成された前記バイトごとの誤りの和(e)を基にして、前記シンドロームの上位qビットとH”の転置行列の積を生成し、
前記GF(2)上の並列復号手段は、前記H”乗算手段で生成された前記シンドロームの上位qビットとH”の転置行列の積、及び前記シンドローム生成手段で生成された前記シンドロームの上位qビットを除く残りの下位ビットを基にして、GF(2)上のビット誤りポインタ、及びGF(2)上の並列復号において誤り訂正が不可能とみなされたときに出力される第1の訂正不可能誤り検出信号を生成し、
前記GF(2)上の誤り生成手段は、前記H’復号手段で生成された前記バイトごとの誤りの和(e)、及び、前記GF(2)上の並列復号手段で生成された前記GF(2)上のビット誤りポインタを基にして、GF(2)上の誤りをGF(2)上の誤りに変換して、GF(2)上のビット誤りポインタ、及び誤り訂正が不可能とみなされたときに出力される第2の訂正不可能誤り検出信号を生成し、
前記反転手段は、前記GF(2)上の誤り生成手段で生成された前記GF(2)上のビット誤りポインタを基にして、前記GF(2)上のビット誤りポインタに対応した前記受信語のビット値を反転させることにより、前記受信語の誤りを訂正する請求項18に記載のバイト内複数スポッティバイト誤り訂正・検出装置。
【請求項20】
前記誤り訂正手段では、前記GF(2)上の並列復号手段で生成された前記第1の訂正不可能誤り検出信号と、前記GF(2)上の誤り生成手段で生成された前記第2の訂正不可能誤り検出信号の論理和をとることにより、訂正能力を超えた誤りを検出したことを示す第3の訂正不可能誤り検出信号を出力する請求項19に記載のバイト内複数スポッティバイト誤り訂正・検出装置。
【請求項21】
前記GF(2)上の誤り生成手段は、
シンドロームが非零であることを検出する誤りバイト検出手段と、
前記GF(2)上のビット誤りポインタの1バイトから前記GF(2)上のビット誤りポインタの1バイトを出力するtビット誤り訂正復号手段と、
入力信号の選択を制御信号に従って行うビットごと選択手段と、
入力された信号のハミング重み1を検出するためのハミング重み検出手段とを備えた請求項19又は請求項20に記載のバイト内複数スポッティバイト誤り訂正・検出装置。
【請求項22】
前記GF(2)上の誤り生成手段は、誤りバイト検出手段と、tビット誤り訂正復号手段と、ビットごと選択手段と、ハミング重み検出手段とを備えており、
前記誤りバイト検出手段は、前記GF(2)上のビット誤りポインタの1バイトを入力とし、1ビットのシンドローム検出信号を出力し、
前記tビット誤り訂正復号手段は、前記GF(2)上のビット誤りポインタの所定の1バイトを入力とし、前記GF(2)上のビット誤りポインタの前記所定の1バイトに対応する1バイトを出力すると共に、訂正能力をこえた誤りを検出する検出信号をも出力し、
前記ビットごと選択手段は、2つの入力信号の各ビットどうしを制御信号に従って選択し、
前記ハミング重み検出手段は、前記誤りバイト検出手段から出力された前記シンドローム検出信号を入力とし、入力された前記シンドローム検出信号のハミング重みを計算し、前記ハミング重みが1の場合に1を出力し、そうでない場合に0を出力するように構成される請求項19又は請求項20に記載のバイト内複数スポッティバイト誤り訂正・検出装置。
【請求項23】
前記tビット誤り訂正復号手段では、訂正能力をこえた前記誤りが、前記GF(2)上の誤りe’Iから写像されることのない前記GF(2)上の誤りeIである請求項22に記載のバイト内複数スポッティバイト誤り訂正・検出装置。
【請求項24】
前記GF(2)上の誤り生成手段では、前記tビット誤り訂正復号手段から出力された前記検出信号を多入力ORゲート回路に入力し、前記多入力ORゲート回路は、入力された前記検出信号に基づいて、前記第2の訂正不可能誤り検出信号を出力し、
また、前記GF(2)上の誤り生成手段では、前記ハミング重み検出手段から出力された信号と、前記誤りバイト検出手段から出力された前記シンドローム検出信号とをそれぞれ2入力ANDゲート回路に入力し、前記2入力ANDゲート回路から出力された信号を前記ビットごと選択手段の前記制御信号とし、
前記ビットごと選択手段では、前記tビット誤り訂正復号手段から出力された信号、及び、前記バイトごとの誤りの和(e)の選択を前記制御信号に従って行い、選択された信号を集め、前記GF(2)上のビット誤りポインタを出力する請求項23に記載のバイト内複数スポッティバイト誤り訂正・検出装置。
【請求項25】
入力情報データを基に送信語を生成する符号化処理ステップと、情報伝送路中で誤りが発生した前記送信語を受信語として入力して前記誤りを訂正または検出する復号処理ステップとを有するバイト内複数スポッティバイト誤り訂正・検出方法であって、
前記符号化処理ステップは、スポッティバイト誤り制御符号を表現するパリティ検査行列と、前記入力情報データとを基に生成した検査情報を前記入力情報データに付加することにより、前記送信語を生成し、
前記復号処理ステップは、前記パリティ検査行列を基に前記受信語のシンドロームを生成するシンドローム生成処理ステップと、前記シンドローム生成処理ステップにより生成されたシンドロームを基に前記受信語の誤りを訂正または検出する誤り訂正処理ステップとを有することを特徴とするバイト内複数スポッティバイト誤り訂正・検出方法。
【請求項26】
前記入力情報データが、b(bは2以上の整数)ビットを1バイトとし、複数のバイトから構成される場合に、ここで、バイト内のtビット(1≦t≦b)までの誤りをスポッティバイト誤りと称し、1バイト内に複数の前記スポッティバイト誤りが生じる誤りをバイト内複数スポッティバイト誤りと称することを前提とし、
前記パリティ検査行列で表現される前記スポッティバイト誤り制御符号は、距離dに対し、

を有する請求項25に記載のバイト内複数スポッティバイト誤り訂正・検出方法。
【請求項27】
前記t値、b値、d値を任意に設定する請求項26に記載のバイト内複数スポッティバイト誤り訂正・検出方法。
【請求項28】
前記情報伝送路は、情報通信システムである請求項25乃至請求項27のいずれかに記載のバイト内複数スポッティバイト誤り訂正・検出方法。
【請求項29】
前記情報伝送路は、メモリシステムである請求項25乃至請求項27のいずれかに記載のバイト内複数スポッティバイト誤り訂正・検出方法。
【請求項30】
前記情報伝送路は、バス線回路である請求項25乃至請求項27のいずれかに記載のバイト内複数スポッティバイト誤り訂正・検出方法。
【請求項31】
前記パリティ検査行列は、前記距離dを有するバイト内複数スポッティバイト誤り制御符号に用いる、R行N列を有する次の行列Hであり、

ただし、R=q+(d−2)r、N=bn、0≦i≦n−1、n=2−1であり、行列H’は、H’=[h’、h’、・・・、hb−1’]に示すq次の列ベクトルh’(0≦j≦b−1)から構成されるq行b列(q≦b)の2元行列であり、(d−1)tまたはbのうちいずれか小さい値に等しいか大きいランク(Rank)を有し、すなわち、Rank(H’)≧Min((d−1)t、b)を満足し、前記行列H’のランクがbに等しいとき、前記行列H’はランクbのb×b行列であり、前記行列H’のランクが(d−1)t<bのとき、前記行列H’は最小ハミング距離(d−1)t+1を有する符号の検査行列、すなわち、(d−1)tビット誤り検出機能を有する(b、b−q)符号のパリティ検査行列に等しくなり、また、行列H”は、H”=[h”、h”、・・・、hb−1”]に示すr次の列ベクトルh”(0≦j≦b−1)から構成されるr行b列(r≦b)の2元行列であり、

またはbのうちいずれか小さい値に等しいか大きいランク(Rank)を有し、すなわち、

を満足し、ここで、

はxを超えない最小の整数を表し、また、前記行列H”のランクがbに等しいとき、前記行列H”はランクbのb×b行列であり、前記行列H”のランクが

のとき、前記行列H”は最小ハミング距離

を有する符号の検査行列、すなわち、

ビット誤り検出機能を有する(b、b−r)符号のパリティ検査行列に等しくなり、γは2を底とするr次の拡大体GF(2)の原始元であって、γH”=[γ”、γ”、…、γb−1”]が成立するように構成される請求項26乃至請求項30のいずれかに記載のバイト内複数スポッティバイト誤り訂正・検出方法。
【請求項32】
前記パリティ検査行列は、前記距離dを有する伸長バイト内複数スポッティバイト誤り制御符号に用いる、R行N列を有する次の行列Hであり、

ただし、R≧q+(d−2)r、かつ(R−q)は(d−2)の倍数であり、N=b(n+1)+(R−q)/(d−2)、0≦i≦n−1、(R−q)は(d−2)の倍数とし、n=2(R−q)/(d−2)−1であり、行列H’は、H’=[h’、h’、・・・、hb−1’]に示すq次の列ベクトルh’(0≦j≦b−1)から構成されるq行b列(q≦b)の2元行列であり、(d−1)tまたはbのうちいずれか小さい値に等しいか大きいランク(Rank)を有し、すなわち、Rank(H’)≧Min((d−1)t、b)を満足し、前記行列H’のランクがbに等しいとき、前記行列H’はランクbのb×b行列であり、前記行列H’のランクが(d−1)t<bのとき、前記行列H’は最小ハミング距離(d−1)t+1を有する符号の検査行列、すなわち、(d−1)tビット誤り検出機能を有する(b、b−q)符号のパリティ検査行列に等しくなり、また、行列H”は、H”=[h”、h”、・・・、hb−1”]に示すr次の列ベクトルh”(0≦j≦b−1)から構成されるr行b列(r≦b)の2元行列であり、

またはbのうちいずれか小さい値に等しいか大きいランク(Rank)を有し、すなわち、

を満足し、前記行列H”のランクがbに等しいとき、前記行列H”はランクbのb×b行列であり、前記行列H”のランクが

のとき、前記行列H”は最小ハミング距離

を有する符号の検査行列、すなわち、

ビット誤り検出機能を有する(b、b−r)符号のパリティ検査行列に等しくなり、R≧q+(d−2)r、かつR−qはd−2の倍数とし、γは2を底とする(R−q)/(d−2)次の拡大体GF(2(R−q)/(d−2))の原始元であって、γH”=[γΦ(h
)、γΦ(h” )、・・・、γΦ(hb−1
)]が成立するように構成され、ここで、Φは加法のもとでGF(2)からGF(2(R−q)/(d−2))への準同型写像(homomorphism)であり、すなわち、Φ:GF(2)→GF(2(R−q)/(d−2))である請求項26乃至請求項30のいずれかに記載のバイト内複数スポッティバイト誤り訂正・検出方法。
【請求項33】
前記入力情報データが、b(bは2以上の整数)ビットを1バイトとし、複数のバイトから構成される場合に、ここで、バイト内のtビットまでの誤りをt/b誤りと称し、バイト内のt’ビットまでの誤りをt’/b誤りと称することを前提とし、ただし、1≦t、t’≦b、且つ、t≠t’であり、
前記パリティ検査行列で表現される前記スポッティバイト誤り制御符号は、1バイト内に生じた大きさの異なる2種類のスポッティバイト誤り(つまり、前記t/b誤り及び前記t’/b誤り)を制御する機能を備えた請求項25に記載のバイト内複数スポッティバイト誤り訂正・検出方法。
【請求項34】
前記情報伝送路は、情報通信システムである請求項33に記載のバイト内複数スポッティバイト誤り訂正・検出方法。
【請求項35】
前記情報伝送路は、メモリシステムである請求項33に記載のバイト内複数スポッティバイト誤り訂正・検出方法。
【請求項36】
前記情報伝送路は、バス線回路である請求項33に記載のバイト内複数スポッティバイト誤り訂正・検出方法。
【請求項37】
前記スポッティバイト誤り制御符号は、1個のt/b誤りを訂正し、且つ、(t/b+t’/b)誤り(つまり、t/b誤りとt’/b誤りの複合誤り)を検出する機能を有するSt/bEC−(St/b+St’/b)ED符号であり、
前記St/bEC−(St/b+St’/b)ED符号に用いる前記パリティ検査行列は、R行N列を有する次の行列Hであり、

ただし、R≧q+2r、かつ(R−q)は2の倍数であり、また、N=b(n+1)+R−q、0≦i≦n−1、n=2(R−q)/2−1であり、行列H’は、H’=[h’、h’、・・・、hb−1’]に示すq次の列ベクトルh’(0≦j≦b−1)から構成されるq行b列(q≦b)の2元行列であり、2t+t’またはbのうちいずれか小さい値に等しいか大きいランク(Rank)を有し、すなわち、Rank(H’)≧Min(2t+t’、b)を満足し、また、行列H”は、H”=[h”、h”、・・・、hb−1”]に示すr次の列ベクトルh”(0≦j≦b−1)から構成されるr行b列(r≦b)の2元行列であり、tまたはt’のうちいずれか大きい値に等しいか大きいランク(Rank)を有し、すなわち、Rank(H”)≧Max(t、t’)を満足し、R≧q+2r、かつ(R−q)は2の倍数であり、γは2を底とする(R−q)/2次の拡大体GF(2(R−q)/2)の原始元であって、γH”=[γΦ(h”)、γΦ(h”)、・・・、γΦ(hb−1”)]が成立するように構成され、Φは加法のもとでGF(2)からGF(2(R−q)/2)への準同型写像(homomorphism)である請求項33乃至請求項36のいずれかに記載のバイト内複数スポッティバイト誤り訂正・検出方法。
【請求項38】
前記スポッティバイト誤り制御符号は、1個のt/b誤りを訂正し、且つ、2個のt’/b誤りを検出する機能を有するSt/bEC−Dt’/bED符号であり、
前記St/bEC−Dt’/bED符号に用いる前記パリティ検査行列は、R行N列を有する次の行列Hであり、

ただし、R≧q+2r、かつ(R−q)は2の倍数であり、また、N=b(n+1)+R−q、0≦i≦n−1、n=2(R−q)/2−1であり、行列H’は、H’=[h’、h’、・・・、hb−1’]に示すq次の列ベクトルh’(0≦j≦b−1)から構成されるq行b列(q≦b)の2元行列であり、2tまたはt+2t’のうちいずれか大きい値、及びbのうちいずれか小さい値に等しいか大きいランク(Rank)を有し、すなわち、Rank(H’)≧Min(Max(2t、t+2t’)、b)を満足し、また、行列H”は、H”=[h”、h”、・・・、hb−1”]に示すr次の列ベクトルh”(0≦j≦b−1)から構成されるr行b列(r≦b)の2元行列であり、tまたはt’のうちいずれか大きい値に等しいか大きいランク(Rank)を有し、すなわち、Rank(H”)≧Max(t、t’)を満足し、R≧q+2r、かつ(R−q)は2の倍数であり、γは2を底とする(R−q)/2次の拡大体GF(2(R−q)/2)の原始元であって、γH”=[γΦ(h”)、γΦ(h”)、・・・、γΦ(hb−1”)]が成立するように構成され、Φは加法のもとでGF(2)からGF(2(R−q)/2)への準同型写像(homomorphism)である請求項33乃至請求項36のいずれかに記載のバイト内複数スポッティバイト誤り訂正・検出方法。
【請求項39】
前記スポッティバイト誤り制御符号は、(t/b+t’/b)誤りを訂正する機能を有する(St/b+St’/b)EC符号であり、
前記(St/b+St’/b)EC符号に用いる前記パリティ検査行列は、R行N列を有する次の行列Hであり、

ただし、R≧q+3r、且つ、(R−q)は3の倍数であり、また、N=b(n+1)+(R−q)/3、0≦i≦n−1、n=2(R−q)/3−1であり、行列H’は、H’=[h’、h’、・・・、hb−1’]に示すq次の列ベクトルh’(0≦j≦b−1)から構成されるq行b列(q≦b)の2元行列であり、2t+2t’またはbのうちいずれか小さい値に等しいか大きいランク(Rank)を有し、すなわち、Rank(H’)≧Min(2t+2t’、b)を満足し、また、行列H”は、H”=[h”、h”、・・・、hb−1”]に示すr次の列ベクトルh”(0≦j≦b−1)から構成されるr行b列(r≦b)の2元行列であり、t+t’またはbのうちいずれか小さい値に等しいか大きいランク(Rank)を有し、すなわち、Rank(H”)≧Min(t+t’、b)を満足し、R≧q+3r、かつ(R−q)は3の倍数であり、γは2を底とする(R−q)/3次の拡大体GF(2(R−q)/3)の原始元であって、γH”=[γΦ(h”)、γΦ(h”)、・・・、γΦ(hb−1”)]が成立するように構成され、Φは加法のもとでGF(2)からGF(2(R−q)/2)への準同型写像(homomorphism)である請求項33乃至請求項36のいずれかに記載のバイト内複数スポッティバイト誤り訂正・検出方法。
【請求項40】
前記スポッティバイト誤り制御符号は、2個のt/b誤りを訂正し、且つ、1個のt’/b誤り(t<t’)を訂正する機能を有するDt/bEC−St’/bEC符号であり、
前記Dt/bEC−St’/bEC符号に用いる前記パリティ検査行列は、R行N列を有する次の行列Hであり、

ただし、R≧q+3r、且つ、(R−q)は3の倍数であり、また、N=b(n+1)+(R−q)/3、0≦i≦n−1、n=2(R−q)/3−1であり、行列H’は、H’=[h’、h’、・・・、hb−1’]に示すq次の列ベクトルh’(0≦j≦b−1)から構成されるq行b列(q≦b)の2元行列であり、4tまたは2t’のうちいずれか大きい値、及びbのうちいずれか小さい値に等しいか大きいランク(Rank)を有し、すなわち、Rank(H’)≧Min(Max(4t、2t’)、b)を満足し、また、行列H”は、H”=[h”、h”、・・・、hb−1”]に示すr次の列ベクトルh”(0≦j≦b−1)から構成されるr行b列(r≦b)の2元行列であり、2tまたはt’のうちいずれか大きい値、及びbのうちいずれか小さい値に等しいか大きいランク(Rank)を有し、すなわち、Rank(H”)≧Min(Max(2t、t’)、b)を満足し、R≧q+3r、かつ(R−q)は3の倍数であり、γは2を底とする(R−q)/3次の拡大体GF(2(R−q)/3)の原始元であって、γH”=[γΦ(h”)、γΦ(h”)、・・・、γΦ(hb−1”)]が成立するように構成され、Φは加法のもとでGF(2)からGF(2(R−q)/2)への準同型写像(homomorphism)である請求項33乃至請求項36のいずれかに記載のバイト内複数スポッティバイト誤り訂正・検出方法。
【請求項41】
前記誤り訂正処理ステップは、前記シンドロームを基に前記受信語の何れのビットが誤っているかを検出するビット誤りポインタを生成し、生成された前記ビット誤りポインタを基に、誤りビットに該当する前記受信語のビット値を反転させることにより、前記受信語の誤りを訂正し、また、前記受信語のビット誤りを訂正できないことを検出した場合に、訂正不可能誤り検出信号を出力する請求項25乃至請求項40のいずれかに記載のバイト内複数スポッティバイト誤り訂正・検出方法。
【請求項42】
前記誤り訂正処理ステップは、H’復号処理ステップと、H”乗算処理ステップと、GF(2)上の並列復号処理ステップと、GF(2)上の誤り生成処理ステップと、反転処理ステップとを有する請求項31、請求項32、請求項37、請求項38、請求項39又は請求項40のいずれかに記載のバイト内複数スポッティバイト誤り訂正・検出方法。
【請求項43】
前記H’復号処理ステップは、前記シンドローム生成処理ステップで生成された前記シンドロームの上位qビットを基にして、バイトごとの誤りの和(e)を生成し、
前記H”乗算処理ステップは、前記H’復号処理ステップで生成された前記バイトごとの誤りの和(e)を基にして、前記シンドロームの上位qビットとH”の転置行列の積を生成し、
前記GF(2)上の並列復号処理ステップは、前記H”乗算処理ステップで生成された前記シンドロームの上位qビットとH”の転置行列の積、及び前記シンドローム生成処理ステップで生成された前記シンドロームの上位qビットを除く残りの下位ビットを基にして、GF(2)上のビット誤りポインタ、及びGF(2)上の並列復号において誤り訂正が不可能とみなされたときに出力される第1の訂正不可能誤り検出信号を生成し、
前記GF(2)上の誤り生成処理ステップは、前記H’復号処理ステップで生成された前記バイトごとの誤りの和(e)、及び、前記GF(2)上の並列復号処理ステップで生成された前記GF(2)上のビット誤りポインタを基にして、GF(2)上の誤りをGF(2)上の誤りに変換して、GF(2)上のビット誤りポインタ、及び誤り訂正が不可能とみなされたときに出力される第2の訂正不可能誤り検出信号を生成し、
前記反転処理ステップは、前記GF(2)上の誤り生成処理ステップで生成された前記GF(2)上のビット誤りポインタを基にして、前記GF(2)上のビット誤りポインタに対応した前記受信語のビット値を反転させることにより、前記受信語の誤りを訂正する請求項42に記載のバイト内複数スポッティバイト誤り訂正・検出方法。
【請求項44】
前記誤り訂正処理ステップでは、前記GF(2)上の並列復号処理ステップで生成された前記第1の訂正不可能誤り検出信号と、前記GF(2)上の誤り生成処理ステップで生成された前記第2の訂正不可能誤り検出信号の論理和をとることにより、訂正能力を超えた誤りを検出したことを示す第3の訂正不可能誤り検出信号を出力する請求項43に記載のバイト内複数スポッティバイト誤り訂正・検出方法。
【請求項45】
前記GF(2)上の誤り生成処理ステップは、
シンドロームが非零であることを検出する誤りバイト検出処理ステップと、
前記GF(2)上のビット誤りポインタの1バイトから前記GF(2)上のビット誤りポインタの1バイトを出力するtビット誤り訂正復号処理ステップと、
入力信号の選択を制御信号に従って行うビットごと選択処理ステップと、
入力された信号のハミング重み1を検出するためのハミング重み検出処理ステップとを有する請求項43又は請求項44に記載のバイト内複数スポッティバイト誤り訂正・検出方法。
【請求項46】
前記GF(2)上の誤り生成処理ステップは、誤りバイト検出処理ステップと、tビット誤り訂正復号処理ステップと、ビットごと選択処理ステップと、ハミング重み検出処理ステップとを有し、
前記誤りバイト検出処理ステップは、前記GF(2)上のビット誤りポインタの1バイトを入力とし、1ビットのシンドローム検出信号を出力し、
前記tビット誤り訂正復号処理ステップは、前記GF(2)上のビット誤りポインタの所定の1バイトを入力とし、前記GF(2)上のビット誤りポインタの前記所定の1バイトに対応する1バイトを出力すると共に、訂正能力をこえた誤りを検出する検出信号をも出力し、
前記ビットごと選択処理ステップは、2つの入力信号の各ビットどうしを制御信号に従って選択し、
前記ハミング重み検出処理ステップは、前記誤りバイト検出処理ステップから出力された前記シンドローム検出信号を入力とし、入力された前記シンドローム検出信号のハミング重みを計算し、前記ハミング重みが1の場合に1を出力し、そうでない場合に0を出力する請求項43又は請求項44に記載のバイト内複数スポッティバイト誤り訂正・検出方法。
【請求項47】
前記tビット誤り訂正復号処理ステップでは、訂正能力をこえた前記誤りが、前記GF(2)上の誤りe’Iから写像されることのない前記GF(2)上の誤りeIである請求項46に記載のバイト内複数スポッティバイト誤り訂正・検出方法。
【請求項48】
前記GF(2)上の誤り生成処理ステップでは、前記tビット誤り訂正復号処理ステップから出力された前記検出信号を多入力ORゲート回路に入力し、前記多入力ORゲート回路は、入力された前記検出信号に基づいて、前記第2の訂正不可能誤り検出信号を出力し、
また、前記GF(2)上の誤り生成処理ステップでは、前記ハミング重み検出処理ステップから出力された信号と、前記誤りバイト検出処理ステップから出力された前記シンドローム検出信号とをそれぞれ2入力ANDゲート回路に入力し、前記2入力ANDゲート回路から出力された信号を前記ビットごと選択処理ステップに用いる前記制御信号とし、
前記ビットごと選択処理ステップでは、前記tビット誤り訂正復号処理ステップから出力された信号、及び、前記バイトごとの誤りの和(e)の選択を前記制御信号に従って行い、選択された信号を集め、前記GF(2)上のビット誤りポインタを出力する請求項47に記載のバイト内複数スポッティバイト誤り訂正・検出方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate


【公開番号】特開2006−101429(P2006−101429A)
【公開日】平成18年4月13日(2006.4.13)
【国際特許分類】
【出願番号】特願2004−287810(P2004−287810)
【出願日】平成16年9月30日(2004.9.30)
【出願人】(304021417)国立大学法人東京工業大学 (1,821)
【出願人】(503361400)独立行政法人 宇宙航空研究開発機構 (453)
【Fターム(参考)】