JP2006060465A - スポッティバイト誤り訂正・検出方法及び装置 - Google Patents
スポッティバイト誤り訂正・検出方法及び装置 Download PDFInfo
- Publication number
- JP2006060465A JP2006060465A JP2004239392A JP2004239392A JP2006060465A JP 2006060465 A JP2006060465 A JP 2006060465A JP 2004239392 A JP2004239392 A JP 2004239392A JP 2004239392 A JP2004239392 A JP 2004239392A JP 2006060465 A JP2006060465 A JP 2006060465A
- Authority
- JP
- Japan
- Prior art keywords
- error
- bit
- error correction
- processing step
- rank
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Error Detection And Correction (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
【課題】
2スポッティバイト誤り以上の多重スポッティバイト誤りを制御することができる機能を備えたスポッティバイト誤り訂正・検出装置を提供する。
【解決手段】
入力情報データを基に送信語を生成する符号化手段と、情報伝送路中で誤りが発生した前記送信語を受信語として入力して前記誤りを訂正または検出する復号手段とを備えるスポッティバイト誤り訂正・検出装置であって、前記符号化手段は、符号を表現するパリティ検査行列と前記入力情報データとを基に生成した検査情報を前記入力情報データに付加することにより、前記送信語を生成し、前記復号手段は、前記パリティ検査行列を基に前記受信語のシンドロームを生成するシンドローム生成手段と、前記シンドローム生成手段により生成されたシンドロームを基に前記受信語の誤りを訂正または検出する誤り訂正手段とを備える。
【選択図】 図1
2スポッティバイト誤り以上の多重スポッティバイト誤りを制御することができる機能を備えたスポッティバイト誤り訂正・検出装置を提供する。
【解決手段】
入力情報データを基に送信語を生成する符号化手段と、情報伝送路中で誤りが発生した前記送信語を受信語として入力して前記誤りを訂正または検出する復号手段とを備えるスポッティバイト誤り訂正・検出装置であって、前記符号化手段は、符号を表現するパリティ検査行列と前記入力情報データとを基に生成した検査情報を前記入力情報データに付加することにより、前記送信語を生成し、前記復号手段は、前記パリティ検査行列を基に前記受信語のシンドロームを生成するシンドローム生成手段と、前記シンドローム生成手段により生成されたシンドロームを基に前記受信語の誤りを訂正または検出する誤り訂正手段とを備える。
【選択図】 図1
Description
本発明は、スポッティバイト誤り訂正・検出方法及び装置に関し、より詳しくは、複数のビットをバイトとし、その複数のバイトから構成される語(ワード)に対して、任意のバイト中にビット誤りが生じたときにその誤りを検出または訂正するために用いて好適なスポッティバイト誤り訂正・検出方法及び装置に関する。
近年、情報化社会の進展や半導体技術の進歩等により、ディジタルデータの信頼性向上がますます重要なものになってきている。ディジタルデータの伝送または記録を正確に行おうとする場合に、送信データが伝送経路中でノイズ等の影響を受けて誤って伝送されたり、素子の故障あるいは記録媒体等の欠陥等により生じた誤りを検出・訂正する必要がある。この誤りの検出・訂正を実現するために、符号理論を基礎とした誤り訂正・検出符号が従来より種々開発されてきている。
従来の誤り訂正符号として、例えば、bビット(bは2以上の整数)の塊りをバイトと称し、1バイト中の任意の誤りを訂正する符号(SbEC符号と称する)として、優れたHong-Patel符号が発表されている(例えば、非特許文献1参照)。
また、高速半導体メモリシステムにおいて、従来最もよく使用された1ビット誤り訂正・2ビット誤り検出符号を包含する特徴を有した奇数重み列バイト誤り訂正符号が開示されている(例えば、非特許文献2参照)。
さらに、1バイト誤りを訂正し、また2バイト誤りを検出する符号(SbEC−DbED符号と称する)は、リードソロモン符号(Reed-Solomon符号)及びその改良した効率のよい符号として提案されており、多くの計算機システム等の主記憶装置にすでに採用されている(例えば、非特許文献3や非特許文献4を参照)。
また、バイト誤りを検出する符号としては、1ビット誤りを訂正し、かつ2ビット誤りを検出するとともに、1バイトの誤りをも検出する符号(SEC−DED−SbED符号と称する)が発表され、現在、計算機システムの主記憶装置に多く適用されている(例えば、非特許文献5参照)。
なお、これら1980年代後半までの相互に関連した多くの符号研究・開発に関する具体的な内容は、非特許文献6において総括的に述べられている。
その後、新しく開発された高速半導体メモリ用の符号としては、1バイトの誤りを訂正し、かつ2ビット誤りを検出する符号(SbEC−DED符号と称する)が非特許文献7に、また、1バイトの誤りを訂正し、かつ1ビット誤りと1バイト誤りとの同時誤りを検出する符号(SbEC−(S+Sb)EC符号と称する)が非特許文献8に開示されている。さらに、1バイトの誤りを訂正するとともに2ビットの誤りがあれば、これも訂正する符号(SbEC−DEC符号と称する)が非特許文献9に開示されている。
特に、本発明に最も関連する符号として、具体的には、bビットからなるバイト内のtビット(t≦b)までの誤りをt/b誤りまたはスポッティバイト誤りと称し、この1スポッティバイト誤りを訂正するSt/bEC符号、及び1スポッティバイト誤りを訂正し、かつバイト内tビットを越える1バイト誤りを検出するSt/bEC−SbED符号に関する発明が既に開示されている(特許文献1参照)。また、特にSt/bEC符号については、非特許文献10に開示されている。
また、1スポッティバイト誤りを訂正し、かつ2スポッティバイト誤りを検出するSt/bEC−Dt/bED符号、及び1スポッティバイト誤りを訂正し、かつ2スポッティバイト誤りを検出し、かつバイト内tビットを越える1バイト誤りを検出するSt/bEC−Dt/bED−SbED符号に関する発明が既に出願されている(特許文献2参照)。
特開2004−7217号公報
特願2003−416978号明細書
特開2002−374175号公報
エス.ジェイ.ホン(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年
イー.フジワラ(E.Fujiwara),『オッドーウエイトーコラム bーアジェイスント エラー コレクティング コードズ "Odd-Weight-Columnb-Adjacent Error Correcting Codes"』,トランスアクションズ オフ ザ IECE ジャパン(Transactions of the IECE Japan),第E61巻,第10号,p.781-787,1978年
エス.カネダ(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月
シー.エル.チェン(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月
エス.カネダ(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月
ティ.アール.エヌ.ラオ(T.R.N.Rao)・エイジ フジワラ(Eiji Fujiwara)共著,『エラー コントロール コーディング フォー コンピュータ システムズ "Error Control Codingfor Computer Systems"』,プレンティスーホール(Prentice-Hall),1989年
イー.フジワラ(E.Fujiwara)・エム.ハマダ(M.Hamada)共著,『シングル bービット バイト エラー コレクティング アンド ダブル ビット エラー ディテクティング コードズ フォー メモリ システムズ "Single b-Bit Byte ErrorCorrecting and Double Bit Error Detecting Codes for Memory Systems"』,IEICE トランスアクションズ オン ファンダメンタルズ(IEICETransactions on Fundamentals),第E76-A巻,第9号,p.1442-1448,1993年9月
エム.ハマダ(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月
ジー.ウマネサン(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月
ジー.ウマネサン(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月
エス.ビィー.ウィッカー(S.B.Wicker)・ヴィ.ケイ.バールガバ(V.K.Bhargava)共著,『リードソロモン コードズ アンド ゼア アプリケーションズ "Reed−Solomon Codes andTheir Applications"』,IEEE プレス(IEEEPress),1994年
1980年代半ばまでは、半導体メモリ素子には、データ1ビットの入出力を有する素子が主に使用されたことから、1素子の誤りを訂正し2素子までの誤りを検出する1ビット誤り訂正・2ビット誤り検出符号(SEC−DED符号と称する)が多く使用されていた。ところが、1980年代半ばからメモリ素子の高集積化ニーズに対応して、データ4ビットの入出力を有する素子が主流となりはじめ、バイト幅b=4ビットである前述のS4EC−D4ED符号やSEC−DED−S4ED符号が主に使用されるようになってきた。さらに、1990年代半ばからは、データ8ビット又はデータ16ビットの入出力を有する半導体メモリ素子が主流になりつつある。
しかしながら、従来のSbEC−DbED符号のバイト幅bに、b=8またはb=16を適用する場合に、全体の符号長に対する検査ビット数の占める割合がおよそ30%から40%と多大となって、符号化率が低下し、実用的に非常に大きな問題となっていた。
ところで、これらの半導体メモリ素子(DRAM素子)を使用したメモリ装置では、ノイズやアルファ粒子等によって一時故障が発生したり、DRAM素子自体が劣化して動作しなくなる固定故障が発生したりする。最近のDRAM素子を用いた装置の80%以上は一時故障であると言われており、特に、8ビット以上の多ビットデータ入出力を有するDRAM素子では、バイト中の1、2、3ビット程度の比較的小さい数のビット誤りが大半であるとされている。
中でも比較的エネルギーレベルの低い電磁ノイズやアルファ粒子による一時誤り、及びメモリセルの固定故障を原因とする1ビット誤りが最も多く、最近では、前記DRAM素子を搭載したモバイル機器が多用されていることから、電磁環境が悪い中での使用も考慮しなければならなくなっている。また、高い高度を飛行する航空機や軍用機で用いられる電子機器中のDRAM素子では、宇宙線に起因するエネルギーレベルの高い中性子粒子等の衝突により、2ビット、3ビット程度の誤りを有する一時故障が発生する可能性が高くなっている。さらに、衛星通信や宇宙通信で用いられる宇宙機器に搭載するDRAM素子では、エネルギーレベルの高い粒子との衝突によって、大きなダメージを受けてしまうことを考慮する必要があり、この場合に2ビット以上の誤りを考慮しなければならないことが知られている。
以上のようなビット誤りの発生状況が多岐にわたっていることを踏まえれば、パラメータt及びbに任意の値を与えて構成できる前記St/bEC−SbED符号は、8ビット以上のDRAM素子を使用したメモリ装置に用いる場合に、非常に実用的な符号方式である。つまり、前記St/bEC−SbED符号は、バイト幅bより小さなtビット(このtの値は、誤りの傾向を調査して設計者が任意に決めることが可能である)までの1素子の誤り(スポッティバイト誤り)を訂正することが可能な機能、及び発生確率としては小さいもののtビットを超える1バイト誤りを検出することが可能な機能を備えることにより、従来のバイト単位で行うリードソロモン符号(Reed−Solomon符号)等の誤り制御符号と比較して、大幅に少ない数の検査ビットで誤りを訂正・検出することができる。
また、任意の2素子(隣接した2素子に限らない)にまたがる誤りに対して、前記St/bEC−Dt/bED−SbED符号は、8ビット以上のDRAM素子を使用したメモリ装置に用いる場合に、非常に実用的な符号化方式である。つまり、前記St/bEC−Dt/bED−SbED符号は、バイト幅bより小さなtビットまでの1素子の誤りを訂正することが可能な機能(1スポッティバイト誤り訂正、St/bEC)と、2素子にまたがるスポッティバイト誤りを検出することが可能な機能(2スポッティバイト誤り検出、Dt/bED)と、発生確率としては小さいもののtビットを超える1バイト誤りを検出することが可能な機能(1バイト誤り検出、SbED)とを備えた符号であり、従来のバイト単位で行う符号方式と比較して、大幅に少ない数の検査ビットで誤りを訂正・検出することができる。
しかしながら、前記St/bEC−Dt/bED−SbED符号においては、2素子にまたがる誤りを訂正することができないという問題を有していた。そのため、2素子のt/b誤り(2スポッティバイト誤り)を訂正する機能を有する符号(Dt/bEC符号:Double t−bit within a b−bit byte Error Correcting Codeと称する)の開発が求められてきている。また、2スポッティバイト誤り以上の誤りを制御する符号、すなわち、理論上、一般にGF(2b)上で距離dを有するスポッティバイト誤り訂正符号の構成が求められている。なお、前記“Dt/bEC符号”を、簡単にGF(2b)上でd=5を有する“2スポッティバイト誤り訂正符号”とも称することとする。ここで、tは1≦t≦bを満足する整数である。
本発明は、上述のような事情に鑑みてなされたものであり、本発明の目的は、2スポッティバイト誤り以上の多重スポッティバイト誤りを制御することができる機能を備えたスポッティバイト誤り訂正・検出方法及び装置を提供することにある。
本発明は、スポッティバイト誤り訂正・検出装置に関し、本発明の上述目的は、入力情報データを基に送信語を生成する符号化手段と、情報伝送路中で誤りが発生した前記送信語を受信語として入力して前記誤りを訂正または検出する復号手段とを備えるスポッティバイト誤り訂正・検出装置であって、前記符号化手段は、符号を表現するパリティ検査行列と前記入力情報データとを基に生成した検査情報を前記入力情報データに付加することにより、前記送信語を生成し、前記復号手段は、前記パリティ検査行列を基に前記受信語のシンドロームを生成するシンドローム生成手段と、前記シンドローム生成手段により生成されたシンドロームを基に前記受信語の誤りを訂正または検出する誤り訂正手段とを備えることにより、或いは、前記パリティ検査行列は、前記入力情報データが、b(bは2以上の整数)ビットを1バイトとし、複数のバイトから構成される語である場合に、ここで、バイト内のtビット(1≦t≦b)までの誤りをスポッティバイト誤りと称し、GF(2b)上で距離d(dは3以上の整数)を有する複数のスポッティバイト誤りを訂正・検出する機能を有することにより、或いは、前記パリティ検査行列は、前記距離dに対し、
個のスポッティバイト誤りを訂正すると共に、m個のスポッティバイト誤りを検出し、かつ、
を満たすことにより、或いは、前記t値、b値、d値を任意に設定することにより、或いは、前記情報伝送路は、情報通信システムであることにより、或いは、前記情報伝送路は、メモリシステムであることにより、或いは、前記情報伝送路は、バス線回路であることにより、或いは、前記パリティ検査行列は、前記距離dを有するスポッティバイト誤り制御符号に用いる、R行N列を有する次の行列Hであり、
ただし、R=(d−1)r、N=bn、0≦i≦n−1、n=2r−1であり、前記H’は、H’=[h0’、h1’、…、hb−1’]に示すr次の列ベクトルhj’(0≦j≦b−1)から構成されるr行b列(r≦b)の2元行列であって、2tまたはbのうちいずれか小さい値に等しいか大きいランク(Rank)を有し、すなわち、Rank(H’)≧Min(2t、b)を満足し、また、ランクがbに等しいときはランクbのb×b行列であり、ランクが2t<bのときは前記H’は最小ハミング距離2t+1を有するパリティ検査行列に等しくなり、γは2を底とするr次の拡大体GF(2r)の原始元であって、γiH’=[γih0’、γih1’、…、γihb−1’]が成立するように構成されることにより、或いは、前記パリティ検査行列は、前記距離dを有する伸長スポッティバイト誤り制御符号に用いる、R行N列を有する次の行列Hであり、
ただし、R≧(d−1)r、かつ、(R−r)は(d−2)の倍数であり、また、N=b(n+2)、0≦i≦n−1、n=2(R−r)/(d−2)−1であり、前記H’は、H’=[h0’、h1’、…、hb−1’]に示すr次の列ベクトルhj’(0≦j≦b−1)から構成されるr行b列(r≦b)の2元行列であって、2tまたはbのうちいずれか小さい値に等しいか大きいランク(Rank)を有し、すなわち、Rank(H’)≧Min(2t、b)を満足し、また、ランクがbに等しいときはランクbのb×b行列であり、ランクが2t<bのときは前記H’は最小ハミング距離2t+1を有するパリティ検査行列に等しくなり、R≧(d−1)rとし、γは2を底とする(R−r)/(d−2)次の拡大体GF(2(R−r)/(d−2))の原始元であって、γiH’=[γiΦ(h0’)、γiΦ(h1’)、…、γiΦ(hb−1’)]が成立するように構成され、ここで、Φは加法のもとでGF(2r)からGF(2(R−r)/(d−2))への準同型写像(homomorphism)であり、すなわち、Φ:GF(2r)→GF(2(R−r)/(d−2))であることにより、或いは、前記誤り訂正手段は、前記シンドロームを基に前記受信語の何れのビットが誤っているかを検出するビット誤りポインタを生成し、生成された前記ビット誤りポインタを基に、誤りビットに該当する前記受信語のビット値を反転させることにより、前記受信語の誤りを訂正し、また、前記受信語のビット誤りを訂正できないことを検出した場合に、訂正不可能誤り検出信号を出力することにより、或いは、前記誤り訂正手段は、並列復号手段と、誤り生成手段と、誤り検出手段と、反転手段とを備え、前記並列復号手段は、前記シンドロームを基にしてGF(2r)上の誤りを生成し、前記誤り生成手段は、前記並列復号手段で生成された前記GF(2r)上の誤りを変換し、前記受信語の何れのビットが誤っているかを検出するビット誤りポインタを生成し、前記誤り検出手段は、前記並列復号手段により訂正できない誤りを検出し、前記反転手段は、前記誤り生成手段から入力される前記ビット誤りポインタを基に、誤りビットに該当する前記受信語のビット値を反転させることにより、訂正後の受信語を生成することにより、或いは、Rank(H’)≧Min(2t、b)を満足する行列H’に成立するe・H’T=e’(ここで、H’TはH’の行と列を入れ替えた置換行列)の関係式から、GF(2r)上の誤りe’よりGF(2b)上の誤りeを決定することにより、或いは、前記誤り訂正手段は、並列復号手段と、誤り生成手段と、誤り検出手段と、反転手段とを備え、前記並列復号手段は、前記シンドロームを基にして、GF(2r)上の誤りを指摘する第1のビット誤りポインタと、GF(2r)上の並列復号において誤り訂正が不可能とみなされたときに出力される第1の訂正不可能誤り検出信号とを生成し、前記誤り生成手段は、前記並列復号手段から入力される前記第1のビット誤りポインタに基づいて、第2のビット誤りポインタを生成し、前記誤り検出手段は、前記並列復号手段で生成された前記第1のビット誤りポインタと前記第1の訂正不可能誤り検出信号とに基づいて、前記受信語の誤り訂正の可否を判断し、前記受信語のビット誤りを訂正できないことを検出した場合に、第2の訂正不可能誤り検出信号を出力し、前記反転手段は、前記誤り生成手段で生成された前記第2のビット誤りポインタ及び前記受信語を基にして、前記第2のビット誤りポインタに対応した前記受信語のビットを反転させることにより、前記受信語の誤りを訂正することによって効果的に達成される。
個のスポッティバイト誤りを訂正すると共に、m個のスポッティバイト誤りを検出し、かつ、
を満たすことにより、或いは、前記t値、b値、d値を任意に設定することにより、或いは、前記情報伝送路は、情報通信システムであることにより、或いは、前記情報伝送路は、メモリシステムであることにより、或いは、前記情報伝送路は、バス線回路であることにより、或いは、前記パリティ検査行列は、前記距離dを有するスポッティバイト誤り制御符号に用いる、R行N列を有する次の行列Hであり、
ただし、R=(d−1)r、N=bn、0≦i≦n−1、n=2r−1であり、前記H’は、H’=[h0’、h1’、…、hb−1’]に示すr次の列ベクトルhj’(0≦j≦b−1)から構成されるr行b列(r≦b)の2元行列であって、2tまたはbのうちいずれか小さい値に等しいか大きいランク(Rank)を有し、すなわち、Rank(H’)≧Min(2t、b)を満足し、また、ランクがbに等しいときはランクbのb×b行列であり、ランクが2t<bのときは前記H’は最小ハミング距離2t+1を有するパリティ検査行列に等しくなり、γは2を底とするr次の拡大体GF(2r)の原始元であって、γiH’=[γih0’、γih1’、…、γihb−1’]が成立するように構成されることにより、或いは、前記パリティ検査行列は、前記距離dを有する伸長スポッティバイト誤り制御符号に用いる、R行N列を有する次の行列Hであり、
ただし、R≧(d−1)r、かつ、(R−r)は(d−2)の倍数であり、また、N=b(n+2)、0≦i≦n−1、n=2(R−r)/(d−2)−1であり、前記H’は、H’=[h0’、h1’、…、hb−1’]に示すr次の列ベクトルhj’(0≦j≦b−1)から構成されるr行b列(r≦b)の2元行列であって、2tまたはbのうちいずれか小さい値に等しいか大きいランク(Rank)を有し、すなわち、Rank(H’)≧Min(2t、b)を満足し、また、ランクがbに等しいときはランクbのb×b行列であり、ランクが2t<bのときは前記H’は最小ハミング距離2t+1を有するパリティ検査行列に等しくなり、R≧(d−1)rとし、γは2を底とする(R−r)/(d−2)次の拡大体GF(2(R−r)/(d−2))の原始元であって、γiH’=[γiΦ(h0’)、γiΦ(h1’)、…、γiΦ(hb−1’)]が成立するように構成され、ここで、Φは加法のもとでGF(2r)からGF(2(R−r)/(d−2))への準同型写像(homomorphism)であり、すなわち、Φ:GF(2r)→GF(2(R−r)/(d−2))であることにより、或いは、前記誤り訂正手段は、前記シンドロームを基に前記受信語の何れのビットが誤っているかを検出するビット誤りポインタを生成し、生成された前記ビット誤りポインタを基に、誤りビットに該当する前記受信語のビット値を反転させることにより、前記受信語の誤りを訂正し、また、前記受信語のビット誤りを訂正できないことを検出した場合に、訂正不可能誤り検出信号を出力することにより、或いは、前記誤り訂正手段は、並列復号手段と、誤り生成手段と、誤り検出手段と、反転手段とを備え、前記並列復号手段は、前記シンドロームを基にしてGF(2r)上の誤りを生成し、前記誤り生成手段は、前記並列復号手段で生成された前記GF(2r)上の誤りを変換し、前記受信語の何れのビットが誤っているかを検出するビット誤りポインタを生成し、前記誤り検出手段は、前記並列復号手段により訂正できない誤りを検出し、前記反転手段は、前記誤り生成手段から入力される前記ビット誤りポインタを基に、誤りビットに該当する前記受信語のビット値を反転させることにより、訂正後の受信語を生成することにより、或いは、Rank(H’)≧Min(2t、b)を満足する行列H’に成立するe・H’T=e’(ここで、H’TはH’の行と列を入れ替えた置換行列)の関係式から、GF(2r)上の誤りe’よりGF(2b)上の誤りeを決定することにより、或いは、前記誤り訂正手段は、並列復号手段と、誤り生成手段と、誤り検出手段と、反転手段とを備え、前記並列復号手段は、前記シンドロームを基にして、GF(2r)上の誤りを指摘する第1のビット誤りポインタと、GF(2r)上の並列復号において誤り訂正が不可能とみなされたときに出力される第1の訂正不可能誤り検出信号とを生成し、前記誤り生成手段は、前記並列復号手段から入力される前記第1のビット誤りポインタに基づいて、第2のビット誤りポインタを生成し、前記誤り検出手段は、前記並列復号手段で生成された前記第1のビット誤りポインタと前記第1の訂正不可能誤り検出信号とに基づいて、前記受信語の誤り訂正の可否を判断し、前記受信語のビット誤りを訂正できないことを検出した場合に、第2の訂正不可能誤り検出信号を出力し、前記反転手段は、前記誤り生成手段で生成された前記第2のビット誤りポインタ及び前記受信語を基にして、前記第2のビット誤りポインタに対応した前記受信語のビットを反転させることにより、前記受信語の誤りを訂正することによって効果的に達成される。
また、本発明は、スポッティバイト誤り訂正・検出方法に関し、本発明の上述目的は、入力情報データを基に送信語を生成する符号化処理ステップと、情報伝送路中で誤りが発生した前記送信語を受信語として入力して前記誤りを訂正または検出する復号処理ステップとを有するスポッティバイト誤り訂正・検出方法であって、前記符号化処理ステップは、符号を表現するパリティ検査行列と前記入力情報データとを基に生成した検査情報を前記入力情報データに付加することにより前記送信語を生成し、前記復号処理ステップは、前記パリティ検査行列を基に前記受信語のシンドロームを生成するシンドローム生成処理ステップと、前記シンドローム生成処理ステップにより生成されたシンドロームを基に、前記受信語の誤りを訂正または検出する誤り訂正処理ステップとを有することにより、或いは、前記パリティ検査行列は、前記入力情報データが、b(bは2以上の整数)ビットを1バイトとし、複数のバイトから構成される語である場合に、ここで、バイト内のtビット(1≦t≦b)までの誤りをスポッティバイト誤りと称し、GF(2b)上で距離d(dは3以上の整数)を有する複数のスポッティバイト誤りを訂正・検出する機能を有することにより、或いは、前記パリティ検査行列は、前記距離dに対し、
個のスポッティバイト誤りを訂正すると共に、m個のスポッティバイト誤りを検出し、かつ、
を満たすことにより、或いは、前記t値、b値、d値を任意に設定することにより、或いは、前記情報伝送路は、情報通信システムであることにより、或いは、前記情報伝送路は、メモリシステムであることにより、或いは、前記情報伝送路は、バス線回路であることにより、或いは、前記パリティ検査行列は、前記距離dを有するスポッティバイト誤り制御符号に用いる、R行N列を有する次の行列Hであり、
ただし、R=(d−1)r、N=bn、0≦i≦n−1、n=2r−1であり、前記H’は、H’=[h0’、h1’、…、hb−1’]に示すr次の列ベクトルhj’(0≦j≦b−1)から構成されるr行b列(r≦b)の2元行列であって、2tまたはbのうちいずれか小さい値に等しいか大きいランク(Rank)を有し、すなわち、Rank(H’)≧Min(2t、b)を満足し、また、ランクがbに等しいときはランクbのb×b行列であり、ランクが2t<bのときは前記H’は最小ハミング距離2t+1を有するパリティ検査行列に等しくなり、γは2を底とするr次の拡大体GF(2r)の原始元であって、γiH’=[γih0’、γih1’、…、γihb−1’]が成立するように構成されることにより、或いは、前記パリティ検査行列は、前記距離dを有する伸長スポッティバイト誤り制御符号に用いる、R行N列を有する次の行列Hであり、
ただし、R≧(d−1)r、かつ、(R−r)は(d−2)の倍数であり、また、N=b(n+2)、0≦i≦n−1、n=2(R−r)/(d−2)−1であり、前記H’は、H’=[h0’、h1’、…、hb−1’]に示すr次の列ベクトルhj’(0≦j≦b−1)から構成されるr行b列(r≦b)の2元行列であって、2tまたはbのうちいずれか小さい値に等しいか大きいランク(Rank)を有し、すなわち、Rank(H’)≧Min(2t、b)を満足し、また、ランクがbに等しいときはランクbのb×b行列であり、ランクが2t<bのときは前記H’は最小ハミング距離2t+1を有するパリティ検査行列に等しくなり、R≧(d−1)rとし、γは2を底とする(R−r)/(d−2)次の拡大体GF(2(R−r)/(d−2))の原始元であって、γiH’=[γiΦ(h0’)、γiΦ(h1’)、…、γiΦ(hb−1’)]が成立するように構成され、ここで、Φは加法のもとでGF(2r)からGF(2(R−r)/(d−2))への準同型写像(homomorphism)であり、すなわち、Φ:GF(2r)→GF(2(R−r)/(d−2))であることにより、或いは、前記誤り訂正処理ステップは、前記シンドロームを基に前記受信語の何れのビットが誤っているかを検出するビット誤りポインタを生成し、生成された前記ビット誤りポインタを基に、誤りビットに該当する前記受信語のビット値を反転させることにより、前記受信語の誤りを訂正し、また、前記受信語のビット誤りを訂正できないことを検出した場合に、訂正不可能誤り検出信号を出力することにより、或いは、前記誤り訂正処理ステップは、並列復号処理ステップと、誤り生成処理ステップと、誤り検出処理ステップと、反転処理ステップとを有し、前記並列復号処理ステップは、前記シンドロームを基にしてGF(2r)上の誤りを生成し、前記誤り生成処理ステップは、前記並列復号処理ステップで生成された前記GF(2r)上の誤りを変換し、前記受信語の何れのビットが誤っているかを検出するビット誤りポインタを生成し、前記誤り検出処理ステップは、前記並列復号処理ステップで訂正できない誤りを検出し、前記反転処理ステップは、前記誤り生成処理ステップで生成された前記ビット誤りポインタを基に、誤りビットに該当する前記受信語のビット値を反転させることにより、訂正後の受信語を生成することにより、或いは、Rank(H’)≧Min(2t、b)を満足する行列H’に成立するe・H’T=e’の関係式から、GF(2r)上の誤りe’よりGF(2b)上の誤りeを決定することにより、或いは、前記誤り訂正処理ステップは、並列復号処理ステップと、誤り生成処理ステップと、誤り検出処理ステップと、反転処理ステップとを有し、前記並列復号処理ステップは、前記シンドロームを基にして、GF(2r)上の誤りを指摘する第1のビット誤りポインタと、GF(2r)上の並列復号において誤り訂正が不可能とみなされたときに出力される第1の訂正不可能誤り検出信号とを生成し、前記誤り生成処理ステップは、前記並列復号処理ステップで生成された前記第1のビット誤りポインタに基づいて、第2のビット誤りポインタを生成し、前記誤り検出処理ステップは、前記並列復号処理ステップで生成された前記第1のビット誤りポインタと前記第1の訂正不可能誤り検出信号とに基づいて、前記受信語の誤り訂正の可否を判断し、前記受信語のビット誤りを訂正できないことを検出した場合に、第2の訂正不可能誤り検出信号を出力し、前記反転処理ステップは、前記誤り生成処理ステップで生成された前記第2のビット誤りポインタ及び前記受信語を基にして、前記第2のビット誤りポインタに対応した前記受信語のビットを反転させることにより、前記受信語の誤りを訂正することによって効果的に達成される。
個のスポッティバイト誤りを訂正すると共に、m個のスポッティバイト誤りを検出し、かつ、
を満たすことにより、或いは、前記t値、b値、d値を任意に設定することにより、或いは、前記情報伝送路は、情報通信システムであることにより、或いは、前記情報伝送路は、メモリシステムであることにより、或いは、前記情報伝送路は、バス線回路であることにより、或いは、前記パリティ検査行列は、前記距離dを有するスポッティバイト誤り制御符号に用いる、R行N列を有する次の行列Hであり、
ただし、R=(d−1)r、N=bn、0≦i≦n−1、n=2r−1であり、前記H’は、H’=[h0’、h1’、…、hb−1’]に示すr次の列ベクトルhj’(0≦j≦b−1)から構成されるr行b列(r≦b)の2元行列であって、2tまたはbのうちいずれか小さい値に等しいか大きいランク(Rank)を有し、すなわち、Rank(H’)≧Min(2t、b)を満足し、また、ランクがbに等しいときはランクbのb×b行列であり、ランクが2t<bのときは前記H’は最小ハミング距離2t+1を有するパリティ検査行列に等しくなり、γは2を底とするr次の拡大体GF(2r)の原始元であって、γiH’=[γih0’、γih1’、…、γihb−1’]が成立するように構成されることにより、或いは、前記パリティ検査行列は、前記距離dを有する伸長スポッティバイト誤り制御符号に用いる、R行N列を有する次の行列Hであり、
ただし、R≧(d−1)r、かつ、(R−r)は(d−2)の倍数であり、また、N=b(n+2)、0≦i≦n−1、n=2(R−r)/(d−2)−1であり、前記H’は、H’=[h0’、h1’、…、hb−1’]に示すr次の列ベクトルhj’(0≦j≦b−1)から構成されるr行b列(r≦b)の2元行列であって、2tまたはbのうちいずれか小さい値に等しいか大きいランク(Rank)を有し、すなわち、Rank(H’)≧Min(2t、b)を満足し、また、ランクがbに等しいときはランクbのb×b行列であり、ランクが2t<bのときは前記H’は最小ハミング距離2t+1を有するパリティ検査行列に等しくなり、R≧(d−1)rとし、γは2を底とする(R−r)/(d−2)次の拡大体GF(2(R−r)/(d−2))の原始元であって、γiH’=[γiΦ(h0’)、γiΦ(h1’)、…、γiΦ(hb−1’)]が成立するように構成され、ここで、Φは加法のもとでGF(2r)からGF(2(R−r)/(d−2))への準同型写像(homomorphism)であり、すなわち、Φ:GF(2r)→GF(2(R−r)/(d−2))であることにより、或いは、前記誤り訂正処理ステップは、前記シンドロームを基に前記受信語の何れのビットが誤っているかを検出するビット誤りポインタを生成し、生成された前記ビット誤りポインタを基に、誤りビットに該当する前記受信語のビット値を反転させることにより、前記受信語の誤りを訂正し、また、前記受信語のビット誤りを訂正できないことを検出した場合に、訂正不可能誤り検出信号を出力することにより、或いは、前記誤り訂正処理ステップは、並列復号処理ステップと、誤り生成処理ステップと、誤り検出処理ステップと、反転処理ステップとを有し、前記並列復号処理ステップは、前記シンドロームを基にしてGF(2r)上の誤りを生成し、前記誤り生成処理ステップは、前記並列復号処理ステップで生成された前記GF(2r)上の誤りを変換し、前記受信語の何れのビットが誤っているかを検出するビット誤りポインタを生成し、前記誤り検出処理ステップは、前記並列復号処理ステップで訂正できない誤りを検出し、前記反転処理ステップは、前記誤り生成処理ステップで生成された前記ビット誤りポインタを基に、誤りビットに該当する前記受信語のビット値を反転させることにより、訂正後の受信語を生成することにより、或いは、Rank(H’)≧Min(2t、b)を満足する行列H’に成立するe・H’T=e’の関係式から、GF(2r)上の誤りe’よりGF(2b)上の誤りeを決定することにより、或いは、前記誤り訂正処理ステップは、並列復号処理ステップと、誤り生成処理ステップと、誤り検出処理ステップと、反転処理ステップとを有し、前記並列復号処理ステップは、前記シンドロームを基にして、GF(2r)上の誤りを指摘する第1のビット誤りポインタと、GF(2r)上の並列復号において誤り訂正が不可能とみなされたときに出力される第1の訂正不可能誤り検出信号とを生成し、前記誤り生成処理ステップは、前記並列復号処理ステップで生成された前記第1のビット誤りポインタに基づいて、第2のビット誤りポインタを生成し、前記誤り検出処理ステップは、前記並列復号処理ステップで生成された前記第1のビット誤りポインタと前記第1の訂正不可能誤り検出信号とに基づいて、前記受信語の誤り訂正の可否を判断し、前記受信語のビット誤りを訂正できないことを検出した場合に、第2の訂正不可能誤り検出信号を出力し、前記反転処理ステップは、前記誤り生成処理ステップで生成された前記第2のビット誤りポインタ及び前記受信語を基にして、前記第2のビット誤りポインタに対応した前記受信語のビットを反転させることにより、前記受信語の誤りを訂正することによって効果的に達成される。
本発明に係るスポッティバイト誤り訂正・検出方法及び装置によれば、符号を表現するパリティ検査行列と入力情報データとを基に生成した検査情報を前記入力情報データに付加した送信語が、情報伝送路中で発生した誤りを有する可能性のある受信語に対し、前記パリティ検査行列を基にシンドロームを生成するとともに、このシンドロームを基に前記受信語の誤りを訂正または検出するようにしているので、1バイト中の2ビット、3ビット等のtビットまでの誤りであるスポッティバイト誤りに対し、任意の数のスポッティ誤り(誤りの傾向を調査して設計者が任意に決めることができる)を訂正・検出する機能を有するスポッティバイト誤り制御符号を実現することができた。
これにより、誤りを検出または訂正する符号であるパリティ検査行列の構成や復号の処理手順を、誤りの発生状況ごとに対応させる必要がなく統一的に扱うことが可能となり、本発明の符号機能におけるt値、b値、d値を任意に設定するだけで、パリティ検査行列Hや復号手順を統一的に扱うことが可能となり、誤りの発生状態に柔軟に対応できる符号機能を提供することができる。
また、bビットであるバイト長よりも小さな整数ビット長tを選ぶことにより、従来のバイト誤り制御符号(t=bに相当)と比較して、検査ビット数を大幅に少なくすることが可能となる。これにより、符号長に対する検査ビット数の占める割合を小さくさせて符号化率を格段に向上することが可能となり、高効率かつ高信頼性のあるデータ転送を実現することができる。
要するに、従来の符号技術では存在しない、『多重スポッティバイト誤りを制御できる』といった優れた機能を備える本発明のスポッティバイト誤り訂正・検出方法及び装置によれば、従来のリードソロモン符号(Reed−Solomon符号)による多重バイト誤り制御符号と比較して、検査ビット数を少なくして符号化率を向上させることができ、また、ビット誤りの発生状態に柔軟に対応できる符号機能を提供できるといった顕著な効果を奏する。
以下、本発明を実施するための最良の形態について、図面を参照しながら詳細に説明する。
本発明を説明するための用語を次のように定義する。まず、本発明の実施形態において、対象とするディジタルデータとは、0と1との組合せの信号(2進化符号)であり、ビット誤りの発生とは、符号語中の任意のビットが、0→1または1→0になることを意味することとする。また、スポッティバイト誤りの発生とは、bビットからなるバイト中のtビット(t≦b)までが0→1または1→0になることを意味することとする。なお、本発明の実施形態において、「誤り」とある場合は、特に明記していない限り、前記「ビット誤り」、「スポッティバイト誤り」のすべてを包含していることとする。
まず、本発明に係るスポッティバイト誤り訂正・検出装置100の全体構成について説明する。図1は、本発明のスポッティバイト誤り訂正・検出装置100(以下、スポッティバイト装置100と略す)の概略構成を示すブロック図である。図1に示すように、スポッティバイト装置100は、符号化回路2、回路3、復号回路4等を備えた構成になっている。
符号化回路2は、対象のディジタルデータ(以下、入力情報データ30と称する)に対して、誤りの訂正・検出を行う検査情報を生成する回路である。なお、検査情報は、任意個の検査ビットより構成されている。
回路3は、メモリ等の通信路に相当し、本実施形態では、回路3を経たデータには誤りが含まれる可能性が存在する構成としている。つまり、符号化回路2より出力されて回路3に入力されるデータには誤りが生じていないのに対して、回路3から出力されるデータには、誤りが発生している場合を含んでいる。
復号回路4は、シンドローム生成回路1と誤り訂正回路5とを備えた構成になっている。復号回路4は、受信語32に誤りが含まれているか否かを検出し、その誤り箇所を特定して訂正を行うための回路である。復号回路4の詳細な構成については、後述する復号処理で説明する。
なお、後述する符号化処理及び復号処理では、ガロア体理論に基づいた行列演算を行うことから、符号化回路2、復号回路4、または通信路中における各データを、英字で付した行列、またはベクトルで表現する。具体的には、例えば、入力情報データD、符号(パリティ検査行列)H、検査情報C、送信語V、受信語V’、シンドロームSと表している。
次に、本発明のスポッティバイト装置100の全体動作について説明する。図2は、図1に示された本発明のスポッティバイト装置100の全体動作の処理手順を示すフローチャートである。
図2に示されるように、まず、符号化回路2では、入力情報データ(D)30が入力されると、詳細については後述するパリティ検査行列(H)を用いて検査情報(C)を生成する(ステップS200)。次に、符号化回路2では、この検査情報(C)を入力情報データ(D)30に付加して送信語(V)31として、メモリ等の通信路である回路3に送出する(ステップS201)。そして、回路3を経て誤りを含む可能性のある受信語(V’)32は、復号回路4に入力される(ステップS202)。
次に、復号回路4では、まず、符号化回路2で用いたパリティ検査行列(H)を利用して、入力された受信語(V’)32に誤りが発生しているか否かを調べる。具体的には、復号回路4のシンドローム生成回路1が、符号を表現しているパリティ検査行列(H)を転置させた転置行列(HT)を、受信語(V’)32に対して乗算することによりシンドローム(S)を生成する(ステップS203)。シンドローム(S)33の値は、受信語(V’)32に応じて変化するため、受信語(V’)32に誤りが含まれているかを判断することが可能となる。
そこで、復号回路4の誤り訂正回路5は、前記シンドローム(S)33の値に基づいて、まず誤りを検出したか否か(ステップS204)、検出した場合に、誤り訂正が可能か否かを判断し(ステップS205)、前記判断の結果、訂正可能であれば誤りの訂正を行う(ステップS206)。そして、誤り訂正回路5は、受信語V’に対してスポッティバイト誤りの訂正処理を施した場合、訂正後のV’を受信語出力情報データ(V*)34として出力する(ステップS207)。これに対して、ステップS205の判断の結果、訂正不可能なスポッティバイト誤り等が検出された場合には、誤り訂正回路5は、訂正不可能な誤り検出信号としてのUCE(Uncorrectable Error)信号35を出力する(ステップS208)。
次に、前述した符号化回路2及び復号回路4で用いられるパリティ検査行列(H)の構成について、詳細に説明する。本発明のパリティ検査行列H(Hマトリクス、符号マトリクス、または単に検査行列とも称される)は、複数のスポッティバイト誤りを訂正・検出する機能を有する符号である。
本実施の形態では、任意のd(dは3以上の整数)、t(tは1以上b以下の整数)、及びb(2以上の整数)に対して構成できる一般的な符号構成法を提示するとともに、その符号により実際に誤りの訂正・検出ができる方法を示し、またそのための符号化回路および復号回路を提示し、前記符号化回路及び復号回路によって誤りが具体的に訂正・検出できることを示す。
なお、本符号構成法において、t=bのとき、正確には後述するようにt≧b/2のとき、従来のバイト誤り制御符号であるリード・ソロモン符号(RS符号)に一致する。
いま、Kビットの入力情報データ(D)30に対してRビットの検査情報(C)を付加し、ある機能を満足するN=K+Rビットの長さを有する送信語V(Nビットの行ベクトル)を構成することができたときに、この送信語(V)と、符号を規定するR行N列の2元パリティ検査行列(H)との間には、V・HT=0の関係が成立する。ここで、HTはパリティ検査行列(H)の行と列を入れ替えて生成した置換行列であり、また、右辺の0はRビットの零行ベクトルを示している。
本実施形態では、距離dを有するスポッティバイト誤り制御符号に用いるR行N列を有するパリティ検査行列(H)を、下記数1に示すような構成としている。
次に、γを2を底とするr次の拡大体GF(2r)の原始元とするときに、γiH’は下記数3で定義することができる。
上記数1に示したパリティ検査行列(H)は、パラメータt≧b/2とした場合H’はランクbを有することから、従来のRS符号のパリティ検査行列と一致する。
また、本実施形態では、伸長符号を定義することができる。距離dを有する伸長スポッティバイト誤り制御符号に用いるR行N列を有するパリティ検査行列(H)は、下記数4に示すような構成とすることができる。
次に、R≧(d−1)rかつR−rはd−2の倍数とし、γを2を底とする(R−r)/(d−2)次の拡大体GF(2(R−r)/(d−2))の原始元とするときに、γiH’は下記数6で定義することができる。
上記数4に示したパリティ検査行列(H)は、パラメータt≧b/2とした場合に、H’がランクbを有することから、従来の2次伸長RS符号のパリティ検査行列と一致する。
次に、上記数1に示したパリティ検査行列(H)で表される符号が、距離dに対し、
を満たす訂正数
、検出数
を有していることを具体的に示す。例えば、距離d=5の2重スポッティバイト誤り訂正符号の場合に、
となる。一般に、
において、パリティ検査行列H=[H0、H1、…、Hn−1]が、以下に示す必要十分条件を満たしていることを示せばよい。ただし、HiはR×bの小行列である。
を満たす訂正数
、検出数
を有していることを具体的に示す。例えば、距離d=5の2重スポッティバイト誤り訂正符号の場合に、
となる。一般に、
において、パリティ検査行列H=[H0、H1、…、Hn−1]が、以下に示す必要十分条件を満たしていることを示せばよい。ただし、HiはR×bの小行列である。
スポッティバイト誤り訂正は、前述したシンドローム生成回路1が生成するシンドローム(S)33を用いて実行する。ここで、シンドローム(S)33と前記パリティ検査行列(H)との関係は、S=V’・HTで表される。いま、受信語(V’)32が元々の送信語(V)31に対して誤り(E)を含み、V’=V+Eで表されるとき、シンドローム(S)33は、S=V’・HT=(V+E)・HT=V・HT+E・HTとなる。
前述したように、V・HT=0の関係が成立していることから、結局、シンドロームS=E・HTが成り立つ。つまり、シンドローム(S)33は、送信語(V)31に影響されずに誤り(E)のみで決まることから、シンドローム(S)33に基づいてスポッティバイト誤り訂正を行うことが可能か否かは、パリティ検査行列(H)と誤り(E)とから計算されるE・HTの値の結果によって決定できるものである。
上記数7、数8、数9に示した必要十分条件は、距離dに対し、訂正・検出可能なすべてのスポッティバイト誤りのシンドロームと訂正可能な他のすべてのスポッティバイト誤りのシンドロームが異なることを示している。すなわち、m個以下のスポッティバイト誤りのシンドロームと他の
個以下のスポッティバイト誤りのシンドロームが異なればよい。よって、
個のスポッティバイト誤りのシンドローム和が0とならなければよい。
個以下のスポッティバイト誤りのシンドロームが異なればよい。よって、
個のスポッティバイト誤りのシンドローム和が0とならなければよい。
数7は、k個のスポッティバイト誤りのシンドロームが同じバイトに生じた他のk(2k≦d−1)個のスポッティバイト誤りのシンドロームと異なることを示している。また、数8は、m個のスポッティバイト誤りと
個のスポッティバイト誤りが生じ、うち
バイトにおいて異なる2個のスポッティバイト誤りが同じバイトに生じ、他のjバイトにおいてそれぞれ1個のスポッティバイト誤りが生じている場合であり、これらのシンドロームが異なることを示している。さらに、数9は、m個のスポッティバイト誤りと
個のスポッティバイト誤りがすべて異なるバイトに生じている場合であり、それぞれのシンドロームが異なることを示している。
個のスポッティバイト誤りが生じ、うち
バイトにおいて異なる2個のスポッティバイト誤りが同じバイトに生じ、他のjバイトにおいてそれぞれ1個のスポッティバイト誤りが生じている場合であり、これらのシンドロームが異なることを示している。さらに、数9は、m個のスポッティバイト誤りと
個のスポッティバイト誤りがすべて異なるバイトに生じている場合であり、それぞれのシンドロームが異なることを示している。
ここで、(ei+ei+1)は、1個のスポッティバイト誤りを包含するため、(d−1)個のスポッティバイト誤りのシンドローム和が0とならないことを示すことにより、(d−1)個未満のスポッティバイト誤りのシンドロームが異なることを示すことができる。
よって、数1に示すパリティ検査行列で表現される符号が、上記数7、数8、数9に示した必要十分条件を満たすことを示すことにより、距離dに対し
を満足する訂正数
、検出数
を有していることを以下に示す。
<1>必要十分条件(数7)を満たしていることの証明
シンドロームSとして、下記数10の関係が成立していると仮定する。
を満足する訂正数
、検出数
を有していることを以下に示す。
<1>必要十分条件(数7)を満たしていることの証明
シンドロームSとして、下記数10の関係が成立していると仮定する。
<2>必要十分条件(数8)を満たしていることの証明
シンドロームSとして、下記数14の関係が成立したと仮定する。
<3>必要十分条件(数9)を満たしていることの証明
シンドロームSとして、下記数18の関係が成立したと仮定する。
したがって、前述した<1>〜<3>における証明結果より、上記数1に示すパリティ検査行列(H)は、距離dに対し、受信語(V’)32に含まれる
個以下のスポッティバイト誤りを訂正し、m個以下のスポッティバイト誤りを検出する機能を有していることが証明できた。
個以下のスポッティバイト誤りを訂正し、m個以下のスポッティバイト誤りを検出する機能を有していることが証明できた。
また、上記数4に示したパリティ検査行列(H)で表される伸長符号も、同様に上記数7、数8、数9に示した必要十分条件を満たすことを示すことにより、距離dに対し、
を満たす訂正数
、検出数
を有していることを示すことができる。
を満たす訂正数
、検出数
を有していることを示すことができる。
ここでは、具体的な符号パラメータを与えて、上記数1に示すパリティ検査行列(H)を構成できることを示す。なお、このパリティ検査行列(H)は、あくまで一例であって、これに限定されないことは言うまでもない。
いま、読み書きデータ幅として、8ビットを有するメモリ素子を使用したメモリシステムを対象に、d=5、t=2、b=8のパラメータを与え、バイト内2ビット以下の誤りをスポッティバイト誤りとして、2スポッティバイト誤りを訂正するD2/8EC符号のパリティ検査行列(H)を構成することとする。このとき、Min(2t、b)=Min(4、8)=4より、行列H’としてランク4を有する4ビット誤り検出符号の検査行列を構成すればよい。この一例として、下記数22に示す6×8(6行8列を意味する)行列を示す。
つまり、γのべき表示γiとベクトル表示との対応を示すと、次のようになる。
γ0=(100000)T、 γ1=(010000)T、 γ2=(001000)T、
γ3=(000100)T、 γ4=(000010)T、 γ5=(000001)T、
γ6=(110000)T、 γ7=(011000)T、 γ8=(001100)T、
γ9=(000110)T、 γ10=(000011)T、γ11=(110001)T、
γ12=(101000)T、γ13=(010100)T、γ14=(001010)T、
γ15=(000101)T、γ16=(110010)T、γ17=(011001)T、
γ18=(111100)T、γ19=(011110)T、γ20=(001111)T、
γ21=(110111)T、γ22=(101011)T、γ23=(100101)T、
γ24=(100010)T、γ25=(010001)T、γ26=(111000)T、
γ27=(011100)T、γ28=(001110)T、γ29=(000111)T、
γ30=(110011)T、γ31=(101001)T、γ32=(100100)T、
γ33=(010010)T、γ34=(001001)T、γ35=(110100)T、
γ36=(011010)T、γ37=(001101)T、γ38=(110110)T、
γ39=(011011)T、γ40=(111101)T、γ41=(101110)T、
γ42=(010111)T、γ43=(111011)T、γ44=(101101)T、
γ45=(100110)T、γ46=(010011)T、γ47=(111001)T、
γ48=(101100)T、γ49=(010110)T、γ50=(001011)T、
γ51=(110101)T、γ52=(101010)T、γ53=(010101)T、
γ54=(111010)T、γ55=(011101)T、γ56=(111110)T、
γ57=(011111)T、γ58=(111111)T、γ59=(101111)T、
γ60=(100111)T、γ61=(100011)T、γ62=(100001)T
これより、上記数22に示す行列H’は、H’=[γ0γ1γ2γ3γ4γ5γ18γ20]と表すことができる。よって、上記数1に示したパリティ検査行列(H)は、このH’を用いて、具体的な(504、480)D2/8EC符号を構成することができる。この符号の最後から416列削除することによって得られた(88、64)D2/8EC符号の検査行列を図3に示す。
γ0=(100000)T、 γ1=(010000)T、 γ2=(001000)T、
γ3=(000100)T、 γ4=(000010)T、 γ5=(000001)T、
γ6=(110000)T、 γ7=(011000)T、 γ8=(001100)T、
γ9=(000110)T、 γ10=(000011)T、γ11=(110001)T、
γ12=(101000)T、γ13=(010100)T、γ14=(001010)T、
γ15=(000101)T、γ16=(110010)T、γ17=(011001)T、
γ18=(111100)T、γ19=(011110)T、γ20=(001111)T、
γ21=(110111)T、γ22=(101011)T、γ23=(100101)T、
γ24=(100010)T、γ25=(010001)T、γ26=(111000)T、
γ27=(011100)T、γ28=(001110)T、γ29=(000111)T、
γ30=(110011)T、γ31=(101001)T、γ32=(100100)T、
γ33=(010010)T、γ34=(001001)T、γ35=(110100)T、
γ36=(011010)T、γ37=(001101)T、γ38=(110110)T、
γ39=(011011)T、γ40=(111101)T、γ41=(101110)T、
γ42=(010111)T、γ43=(111011)T、γ44=(101101)T、
γ45=(100110)T、γ46=(010011)T、γ47=(111001)T、
γ48=(101100)T、γ49=(010110)T、γ50=(001011)T、
γ51=(110101)T、γ52=(101010)T、γ53=(010101)T、
γ54=(111010)T、γ55=(011101)T、γ56=(111110)T、
γ57=(011111)T、γ58=(111111)T、γ59=(101111)T、
γ60=(100111)T、γ61=(100011)T、γ62=(100001)T
これより、上記数22に示す行列H’は、H’=[γ0γ1γ2γ3γ4γ5γ18γ20]と表すことができる。よって、上記数1に示したパリティ検査行列(H)は、このH’を用いて、具体的な(504、480)D2/8EC符号を構成することができる。この符号の最後から416列削除することによって得られた(88、64)D2/8EC符号の検査行列を図3に示す。
なお、図3に示すように、パリティ検査行列(H)のH’に相当する行単位の箇所を明確化するため、その境界に実線を引いて示している。
いま、パリティ検査行列(H)の構成要素であるγ3H’が、図3に示す実際のビット値と対応しているかを具体的に確認する。前述したように、H’=[γ0γ1γ2γ3γ4γ5γ18γ20]より、γ3H’=γ3[γ0γ1γ2γ3γ4γ5γ18γ20]=[γ3γ4γ5γ6γ7γ8γ21γ23]となる。このべき表示をベクトル表示(例えば、γ0=(100000)T等)に変換すれば、図3に示すa部分に相当し、このa部分は明らかにパリティ検査行列(H)のγ3H’部分である。同様にして、パリティ検査行列(H)における他の構成要素についても、ベクトル表示に変換すれば、全体として図3に示すビット表現の24行88列の構成となる。
また、t=3に対しては、Min(2t、b)=6より、行列H’はランク6を有し、また、符号長8ビットを有する6ビット誤り検出符号の検査行列であり、一例として下記数23に示す7×8の行列を構成することができる。
なお、以上は最近最も使用されている、バイト幅b=8ビット入出力を有する半導体メモリ素子を対象として、パリティ検査行列H(符号)の一例を構成して説明したが、他にも多く使用されている多ビット入出力素子、例えば、b=16ビット入出力を有する素子等に対しても、また、2以上の任意の整数値を有するbに対して、Dt/bEC符号を構成できることは明らかである。
また、以上は距離d=5として、パリティ検査行列Hの一例を構成して説明したが、任意の距離dに対して、符号すなわちパリティ検査行列が構成できることも明らかである。
このように、前記ではパリティ検査行列(H)の構成例を示したが、次に、このパリティ検査行列(H)を用いて処理する符号化と復号の具体的な方法及びそれぞれの回路構成を示す。
<A>符号化の方法及びこれを実現する回路の構成について
まず、図1に示す符号化回路2が行う符号化方法について説明する。
<A>符号化の方法及びこれを実現する回路の構成について
まず、図1に示す符号化回路2が行う符号化方法について説明する。
符号化回路2では、入力情報データD(行ベクトル)30と、図3に示すパリティ検査行列(H)を基本行変形して得られるパリティ検査行列(H)の情報部HRを用いて、検査情報C(行ベクトル)を生成する。この検査情報(C)の生成は、下記数24により求めることができる。
図4に示す(88、64)D2/8EC組織符号のパリティ検査行列において、d0〜d63が情報ビットに相当し、c0〜c23が検査ビットに相当する。ここで、図4に示す符号化用(88、64)D2/8EC符号のパリティ検査行列において、情報ビットに相当するd0〜d63の列ベクトルを集めた行列が、パリティ検査行列の情報部HRとなる。
ここで、符号化では図4に示す検査行列を使用し、復号では図3に示す検査行列を使用する。基本行変形して得られた行列は、もとの行列と等価であり、図4に示す検査行列の符号は、図3に示す検査行列の符号とその性質は全く変化しない。これより、符号化においては、図4に示す検査行列を使用することとする。
次に、符号化回路2は、上記数24を基に、24ビットの検査情報(C)を生成する。上記数24に示すC=D・HR Tから明らかなように、例えば、検査情報(C)における検査ビットc0を生成するには、図4に示す符号化用(88、64)D2/8EC符号の行列の1行目において、c0に対応するビットを除いて“1”が存在する箇所に対応するビットのGF(2)上の和(すなわち、2を法とする和:mod2)をとる演算を行えばよい。
例えば、検査ビットc0を求める場合に、c0に対応するビットを除いて“1”が存在しているのは、d2、d3、d4、d5、d9、d10、d12、d18、d19、d24、d28、d29、d30、d35、d36、d37、d38、d39、d40、d41、d42、d46、d47、d50、d52、d54、d56であり、これら27個のビットについて2を法とする和(mod2)をとればよい。これを実現するには、図5に示すように、前記27ビットを多入力パリティチェック回路20(0)を構成すればよく、この多入力パリティチェック回路20(0)の出力が検査ビットc0となる。他の検査ビットc1〜c23についても、検査ビットc0と同様にして生成することができる。24ビットの検査ビットc0〜c23を並列に生成する符号化回路2(多入力パリティチェック回路20(0)〜20(23)からなる)の構成を図5に示す。
次に、符号化回路2によって生成した検査情報(C)を、入力情報データ(D)30に付加した符号語を下記数25に示す。これが回路3に送られる送信語(V)(88ビットのベクトル)となる。
次に、送信語(V)31に誤りが生じたとき(すなわち、受信語32に誤りが含まれているとき)に、その誤りに対する訂正・検出処理が、図3に示す(88、64)D2/8EC符号を用いて生成されるシンドローム(S)33の値に基づいて可能なことを示す。
図3に示す(88、64)D2/8EC符号の検査行列は、距離d=5を有することから、上記数1に示すように、パリティ検査行列H’による4段構成を有する。これより、1段目より得られるr=6ビットのシンドロームをSI、2段目より得られるr=6ビットのシンドロームをSII、3段目より得られるr=6ビットのシンドロームをSIII、4段目より得られるr=6ビットのシンドロームをSIVとする。
これらの情報を用いて、次のように誤りの訂正、検出を行う。受信語(V’)32とパリティ検査行列(H)とから、シンドローム(S)33は、下記数26により求めることができる。
なお、シンドローム(S)33は、例えば、iI番目のバイトにeIの誤り、iII番目のバイトにeIIの誤りが生じているときに、下記数27となる。
次に、GF(2r)上の誤りeI’、eII’からGF(2b)上の誤りeI、eIIを求める。eI・H’T=eI’、eII・H’T=eII’において、H’はランクがMin(2t、b)=(4、8)=4より、eI→eI’、eII→eII’は単射の関係となっている。よって、GF(2b)上の誤りeI、eIIを求めることができる。
RS符号に対する復号は、距離dが小さい符号に対して、並列復号法を用いて実現することができる。この並列復号法の一般的構成は、「バースト誤りパターン生成方法及びバーストおよびバイト誤り検出・訂正装置」(特許文献3参照)に開示されている。
特許文献3に開示された並列復号法によれば、例えば、d=5の符号に対しては、次のような手順により復号する。
まず、RS符号のパリティ検査行列
に対し、R×2rの行列
を構成する。ただし、
はR×rの小行列である。次に、この行列
にR×(R−2r)の行列B(i,j)を付加し、R×Rの正則行列
を構成する。そして、A(i,j)の逆行列
を求めると、下記数29の関係が成り立つ。
に対し、R×2rの行列
を構成する。ただし、
はR×rの小行列である。次に、この行列
にR×(R−2r)の行列B(i,j)を付加し、R×Rの正則行列
を構成する。そして、A(i,j)の逆行列
を求めると、下記数29の関係が成り立つ。
はr×Rの行列であり、
となる。ただし、Irはr×rの単位行列である。また、
はr×Rの行列であり、
となる。また、
は2r×Rの行列であり、
となる。ただし、I2rは2r×2rの単位行列である。また、
は2r×Rの行列であり、
となる。
前記
に対し、
となるバイト位置i,jが、誤りの位置iI、iIIとなり、
が誤りの大きさeI’、eII’となる。これから、2バイトの誤りを訂正することができる。また、
となるバイト位置i,jが、存在しない場合に、誤りの訂正が不可能として誤りを検出する。
に対し、
となるバイト位置i,jが、誤りの位置iI、iIIとなり、
が誤りの大きさeI’、eII’となる。これから、2バイトの誤りを訂正することができる。また、
となるバイト位置i,jが、存在しない場合に、誤りの訂正が不可能として誤りを検出する。
しかし、特許文献3に開示された並列復号法は、高速な復号が可能であるが、符号の距離dが大きくなると、回路量が大きくなるという問題が生じる。この場合、例えば、バーレカンプ・マッシィ法などの逐次復号法を用いることができるが、逐次復号法による復号はシリアルに行われるため、復号が遅いといった問題が生じる。なお、バーレカンプ・マッシィ法を用いたRS符号の復号回路の構成は、非特許文献11に開示されている。
一方、本発明において、前述したd=5の符号に対する並列復号方法を実現する復号回路4の概略構成を図6に示す。
図1に示したように、復号回路4は、シンドローム生成回路1と誤り訂正回路5とから構成されている。
また、図6に示すように、誤り訂正回路5は、GF(2r)上の並列復号回路6と、GF(2b)上の誤り生成回路7と、誤り検出回路8と、反転回路9とから構成されている。
ここで、GF(2r)上の並列復号回路6は、シンドローム(S)33を基にして、GF(2r)上のビット誤りポインタ(e’)37及びGF(2r)上の並列復号において誤り訂正が不可能とみなされたときに出力される訂正不可能誤り検出信号DS(Detection Signal)36を生成する。
また、GF(2b)上の誤り生成回路7は、GF(2r)上のビット誤りポインタ(e’)37に指摘されたGF(2r)上の誤りをGF(2b)上の誤りに変換して、GF(2b)上のビット誤りポインタ(e)38を出力する。
そして、誤り検出回路8は、並列復号回路6で訂正できない誤りを検出し、つまり、GF(2r)上のビット誤りポインタ(e’)37及び訂正不可能誤り検出信号(DS)36を基にして、誤り訂正の可否を判断する。
最後に、反転回路9は、GF(2b)上のビット誤りポインタ(e)38を基にして、誤りビットに該当する受信語(V’)32のビット値を反転させることにより、受信語(V’)32の誤りを訂正する。
次に、図6に示される復号回路4で行われる動作手順の概略を説明する。
まず、シンドローム生成回路1では、Nビットからなる受信語(V’)32が入力されると、Rビットのシンドローム(S)33を生成する。
次に、生成されたRビットのシンドローム(S)33は、GF(2r)上の並列復号回路6に入力される。
そして、GF(2r)上の並列復号回路6では、詳細は後述するが、シンドローム(S)33を基にして、GF(2r)上の誤りを指摘する
ビットのGF(2r)上のビット誤りポインタ
を生成する。ここで、
はyを越える最小の整数を示す。また、GF(2r)上の並列復号において誤り訂正が不可能とみなされたときに、訂正不可能誤り検出信号(DS)36を出力する。
ビットのGF(2r)上のビット誤りポインタ
を生成する。ここで、
はyを越える最小の整数を示す。また、GF(2r)上の並列復号において誤り訂正が不可能とみなされたときに、訂正不可能誤り検出信号(DS)36を出力する。
また、GF(2b)上の誤り生成回路7では、詳細は後述するが、eI→eI’、eII→eII’が単射の関係になっていることに基づき、GF(2r)上の並列復号回路6で生成されたGF(2r)上のビット誤りポインタ(e’)37からNビットのビット誤りポインタe=(e0、e1、…、eN−1)38を出力する。
次に、誤り検出回路8では、詳細は後述するが、GF(2r)上の並列復号回路6で生成された訂正不可能誤り検出信号(DS)36及びGF(2r)上のビット誤りポインタ(e’)37を基にして、受信語の誤り訂正の可否を判断し、受信語のビット誤りを訂正できないことを検出した場合に、最終的に、訂正不可能誤り検出信号UCE(Uncorrectable Error)35を出力する。例えば、訂正不可能誤り検出信号UCE35の値が“1”であれば、誤り検出回路8は、訂正能力を超えた誤りを検出したことを示している。
そして、反転回路9では、GF(2b)上の誤り生成回路7で生成されたNビットのGF(2b)上のビット誤りポインタ(e)38及び受信語(V’)32を基にして、GF(2b)上のビット誤りポインタ(e)に対応した受信語(V’)32のビットを反転する。
最後に、反転回路9は、Nビットの誤り訂正された受信語V*からKビットの情報語D*を取り出し、出力情報データ34として出力する。
なお、数4に示す伸長符号でも、その復号方法及び回路構成は、上述したことと基本的に同一である。
次に、シンドローム生成回路1、GF(2r)上の並列復号回路6、GF(2b)上の誤り生成回路7、誤り検出回路8、及び反転回路9のそれぞれの具体的な構成例を、図3に示す(88、64)D2/8EC符号を用いて説明する。
<a>シンドローム生成回路1の構成
ここでは、シンドローム生成回路1の構成について詳細に説明する。
<a>シンドローム生成回路1の構成
ここでは、シンドローム生成回路1の構成について詳細に説明する。
まず、シンドローム生成回路では、N=88(=64+24)ビットからなる受信語(V’)32を、下記数30に示すように表現したとき、この受信語(V’)32を入力して、下記数31に示すS0、S1、…、S23からなるR=24ビットのシンドローム(S)33を生成する。前述したように、図3に示すD2/8EC符号のパリティ検査行列が4段構成を有することから、これに対応してシンドローム(S)33も4個の部分に区分けし、SI=(S0S1S2S3S4S5)、SII=(S6S7S8S9S10S11)、SIII=(S12S13S14S15S16S17)、SIV=(S18S19S20S21S22S23)とする。
図7及び図8は、図3に示したD2/8EC符号のパリティ検査行列を基に構成したシンドローム生成回路1を示す図である。図7では、S0、S1、…、S11といったシンドローム(S)33の上位12ビットを、また、図8では、S12、S13、…、S23といったシンドローム(S)33の下位12ビットをそれぞれ生成している。
図7及び図8に示すように、本実施例では、シンドローム生成回路1において、まず、24個の多入力パリティチェック回路21(p)、(p=0、1、…、23)に、図3に示したD2/8EC符号のパリティ検査行列の対応する各行のビット“1”を有する受信情報(vq’)、(q=0、1、…、87)が入力される。
次に、各多入力パリティチェック回路21(p)、(p=0、1、…、23)において、前記入力された受信情報(vq’)に対して、2を法とする和(mod2)の計算を行い、その結果がSpである。
具体的に、例えば、シンドローム(S)33のビットS0を生成するには、88ビットの受信語v0’、v1’、…、v87’のうち、図3に示すパリティ検査行列の第0行目において、“1”が存在する箇所に相当するv0’、v6’、v8’、v14’、v16’、v22’、v24’、v30’、v32’、v38’、v40’、v46’、v48’、v54’、v56’、v62’、v64’、v70’、v72’、v78’、v80’、v86’の22ビットに対して、2を法とする和(mod2)をとればよい。図7の多入力パリティチェック回路21(0)では、前記22ビットの受信情報を入力として、値S0を出力するようになっている。シンドローム(S)33の他のビットSp、(p=1、…、23)についても同様である。
<b>GF(26)上の並列復号回路6の構成
次に、GF(26)上の並列復号回路6について説明する。
<b>GF(26)上の並列復号回路6の構成
次に、GF(26)上の並列復号回路6について説明する。
GF(26)上のビット誤りポインタ37を求めるために、並列復号法を用いる。GF(26)上の並列復号回路6の全体構成を図9に示す。
図9に示されるように、GF(26)上の並列復号回路6は、11バイト中任意の2バイトの組
個を選び、i、j番目の2バイト(以下、(i、j)と表現することとする)に関する各々の誤りを生成する回路である誤り生成回路40(0)…40(54)、(以下、代表として40(m)、0≦m≦54、と称する)と、GF(2r)上のビット誤りポインタ(e’)37を出力するGF(2r)上の誤り算出回路41とから構成されている。
個を選び、i、j番目の2バイト(以下、(i、j)と表現することとする)に関する各々の誤りを生成する回路である誤り生成回路40(0)…40(54)、(以下、代表として40(m)、0≦m≦54、と称する)と、GF(2r)上のビット誤りポインタ(e’)37を出力するGF(2r)上の誤り算出回路41とから構成されている。
まず、(i、j)に対する誤り生成回路40(m)は、バイト位置i、jに対して、上述した
を計算する回路である。要するに、(i、j)に対する誤り生成回路40(0)〜40(54)は、符号語の11バイト中のi、j(0≦i<j≦10)番目のバイトに対する前述した
を計算し、E’m、i、E’m、jになる誤り42(m)、0≦m≦54、0≦i<j≦10(それぞれrビットのベクトル)、及び訂正可能信号43(m)、0≦m≦54、を出力する。
を計算する回路である。要するに、(i、j)に対する誤り生成回路40(0)〜40(54)は、符号語の11バイト中のi、j(0≦i<j≦10)番目のバイトに対する前述した
を計算し、E’m、i、E’m、jになる誤り42(m)、0≦m≦54、0≦i<j≦10(それぞれrビットのベクトル)、及び訂正可能信号43(m)、0≦m≦54、を出力する。
また、GF(26)上の誤り算出回路41は、GF(26)上のビット誤りポインタ(e’)37を出力する回路である。要するに、GF(26)上の誤り算出回路41は、誤り生成回路40(m)の出力である誤りE’m、i、E’m、jを入力とし、GF(26)上のビット誤りポインタ(e’)37を出力する。
ここで、GF(26)上の並列復号回路6の処理をより詳しくみると、図9に示すように、まず、R=24ビットのシンドローム(S)33を(i、j)に対する誤り生成回路40(m)に入力する。次に、(i、j)に対する誤り生成回路40(m)は、誤りE’m、i、E’m、jを生成し、そして、生成した誤りE’m、i、E’m、jをGF(26)上の誤り算出回路41に入力する。GF(26)上の誤り算出回路41は、GF(26)上のビット誤りポインタ(e’)37を出力する。
また、R=24ビットのシンドローム(S)33を24ビット入力ORゲート回路44にも入力し、一方、(i、j)に対する誤り生成回路40(m)によって生成される訂正可能信号43(m)を55入力NORゲート回路45に入力する。
24ビット入力ORゲート回路44及び55入力NORゲート回路45からそれぞれ出力された2本の信号を2入力ANDゲート回路46に入力する。2入力ANDゲート回路46は、訂正不可能誤り検出信号(DS)36を出力する。これらの回路により、シンドローム(S)33が非零、かつ訂正可能信号がすべて0の場合に、誤りを検出する。
次に、(i、j)に対する誤り生成回路40(m)の構成例を具体的に示す。例として、(0、1)に対する誤り生成回路40(0)を図10に示す。図10に示されるように、(i、j)に対する誤り生成回路40(m)は、
計算回路50と、
計算回路51と、
計算回路52とを備える。
計算回路50と、
計算回路51と、
計算回路52とを備える。
ここで、
は下記数32に示すGF(26)上のRS符号の検査行列であり、符号長66ビットと検査ビット長24ビットとを有する。ただし、γはGF(26)の元であり、下記数33に示すように、生成多項式g(x)=x6+x+1で定義される2元の6×6随伴行列(companion matrix)で表現される。
は下記数32に示すGF(26)上のRS符号の検査行列であり、符号長66ビットと検査ビット長24ビットとを有する。ただし、γはGF(26)の元であり、下記数33に示すように、生成多項式g(x)=x6+x+1で定義される2元の6×6随伴行列(companion matrix)で表現される。
から24×12の行列
を構成し、
に24×12の行列B(0,1)を付加することにより、下記数35に示す24×24の正則行列
を構成する。ここで、B(0,1)はA(0,1)が正則行列となるように求めた24×12の行列であり、一例である。
の各列が入力する情報に対応し、例えば、
の第0行が入力情報のS0に対応している。そこで、
の各ビットを生成するには、
の各行方向に、“1”を有するビットに対応するシンドローム(S)33の情報をGF(2)上で加算(mod2の計算)すればよい。
要するに、
計算回路50は、まず、前記
の対応する各行のビット“1”を有するシンドローム情報(Sp)、(p=0、1、…、23)をそれぞれ6個の多入力パリティチェック回路53(u)、(u=0、1、…、5)に入力する。次に、これらのシンドローム情報に対してmod2の計算を行い、その結果としてE’0、0、E’0、1を出力する。
計算回路50は、まず、前記
の対応する各行のビット“1”を有するシンドローム情報(Sp)、(p=0、1、…、23)をそれぞれ6個の多入力パリティチェック回路53(u)、(u=0、1、…、5)に入力する。次に、これらのシンドローム情報に対してmod2の計算を行い、その結果としてE’0、0、E’0、1を出力する。
具体的に、例えば、E’0、0の0ビット目を生成するには、24ビットのシンドロームS0、S1、…、S23のうち、上記数37に示すパリティ検査行列の第0行目において、“1”が存在する箇所に相当する5ビットs0、s5、s9、s21、s23の値について、2を法とする和(mod2)をとればよい。
図10の多入力パリティチェック回路53(0)には、この5ビットs0、s5、s9、s21、s23のシンドロームが入力される。また、多入力パリティチェック回路53(0)は、42(0)であるE’0、0の0ビット目を出力する。なお、E’0、0の他のビットについても同様である。
また、図10に示されるように、
計算回路51は、6個の多入力パリティチェック回路54(w)、(w=0、1、…、5)で構成され、
計算回路52は、12個の多入力パリティチェック回路55(z)、(z=0、1、…、11)で構成されている。これらの計算回路は、
計算回路50と同様の方法で構成することができる。
計算回路51は、6個の多入力パリティチェック回路54(w)、(w=0、1、…、5)で構成され、
計算回路52は、12個の多入力パリティチェック回路55(z)、(z=0、1、…、11)で構成されている。これらの計算回路は、
計算回路50と同様の方法で構成することができる。
ここで、(0、1)に対する誤り生成回路40(0)の処理をより詳しくみると、図10に示すように、R=24ビットのシンドローム(S)33を多入力パリティチェック回路53(u)、(u=0、1、…、5)に入力することにより、E’0、0を生成する。また、R=24ビットのシンドローム(S)33を多入力パリティチェック回路54(w)、(w=0、1、…、5)に入力することにより、E’0、1を生成する。
また、R=24ビットのシンドローム(S)33を多入力パリティチェック回路55(z)、(z=0、1、…、11)に入力する。多入力パリティチェック回路55(z)、(z=0、1、…、11)から出力される12ビットの信号を12入力NORゲート回路56に入力し、(0、1)に対する訂正可能信号43(0)を出力する。これらの回路は、
となるバイトの組(i、j)が誤りのバイトの組であるため、
であることを検出し、バイトの組(i、j)で訂正可能であることを意味する。
となるバイトの組(i、j)が誤りのバイトの組であるため、
であることを検出し、バイトの組(i、j)で訂正可能であることを意味する。
また、(0、1)に対する訂正可能信号43(0)と多入力パリティチェック回路53、多入力パリティチェック回路54からの出力信号を2入力ANDゲート回路57に入力し、E’0、0、及びE’0、1を出力する。これらの回路は、誤りが生じているバイトの組である場合に、誤りを出力し、そうでない場合に、0のパターンを出力するようにしている。
以上より、(0、1)に対する誤り生成回路40(0)は、誤りE’0、0、E’0、142(0)、及び(0、1)に対する訂正可能信号43(0)を最終的に出力する。ここでは、(0、1)に対する誤り生成回路40(0)を例として説明したが、他のバイト(i、j)に対しても同様である。
次に、GF(26)上の誤り算出回路41の構成例を具体的に示す。GF(26)上の誤り算出回路41を図11に示す。
図11に示されるように、GF(26)上の誤り算出回路41は、i番目のバイトに対応するすべての誤りE’m、iをビットごとOR演算回路60に入力し、GF(26)上のビット誤りポインタ(e’)37を最終的に出力する。これらの回路は、i番目に対応するバイトの組(i、j)からの誤りE’m、iを統合し、i番目の誤りei’を出力するようにしている。
具体的に、例えば、GF(26)上のビット誤りポインタ(e’)37のe6’を出力するには、(0、1)に対する誤り生成回路40(0)、及び(1、2)に対する誤り生成回路40(10)、…、及び(1、10)に対する誤り生成回路40(18)から出力されるE’0、1、E’10、1、…、E’18、1の0ビット目をビットごとOR演算回路60に入力することにより得られる。ビットごとOR演算回路60では、6ビットを有するE’0、1、E’10、1、…、E’18、1の0ビット目をそれぞれ10入力OR回路61に入力することにより、E’0、1、E’10、1、…、E’18、1の0ビット目を統合し、e6’を出力している。
以上では、GF(26)上のビット誤りポインタ(e’)37のe6’を例として説明したが、他のビット値e0’、…、e65’についてもまったく同様である。
<c>GF(28)上の誤り生成回路7の構成
次に、GF(28)上の誤り生成回路7について述べる。GF(28)上の誤り生成回路7は、GF(26)上のビット誤りポインタ(e’)37を入力とし、GF(28)上のビット誤りポインタ(e)38を出力する回路である。
<c>GF(28)上の誤り生成回路7の構成
次に、GF(28)上の誤り生成回路7について述べる。GF(28)上の誤り生成回路7は、GF(26)上のビット誤りポインタ(e’)37を入力とし、GF(28)上のビット誤りポインタ(e)38を出力する回路である。
例として、2バイト目に対するGF(28)上の誤り生成回路7(上位4ビット)を図12に、また、2バイト目に対するGF(28)上の誤り生成回路7(下位4ビット)を図13にそれぞれ示す。
GF(28)上の誤りeI、GF(26)上の誤りeI’において、eI→eI’は、単射の関係となっている。よって、論理合成を行うことにより、組み合わせ回路で実現することができる。
具体的に、例えば、図12において、情報2バイト目では、eI・H’T=eI’であり、H’は、数22に示すランク4を有する2ビット誤り訂正符号の検査行列であるため、重みが2以下のGF(28)上の誤りeI、及びGF(26)上の誤りeI’は一意に定まる。よって、重みが2以下のGF(28)上の誤りeI=(e8e9e10e11e12e13e14e15)、及びGF(26)上の誤りeI’=(e6’e7’e8’e9’e10’e11’)は、下記表1に示す関係を有する。
例えば、上記表1に示されたGF(28)上の誤りeIとGF(26)上の誤りeI’の対応関係から、情報2バイト目の1ビット目の値e8は、eI’=(e6’e7’e8’e9’e10’e11’)=(100000)、(110000)、(101000)、(100100)、(011100)、(100010)、(101111)、(100001)のときに、1となる。
また、上記表1に示されたGF(28)上の誤りeIとGF(26)上の誤りeI’の対応関係において、残った27パターンのGF(26)上の誤りeI’=(e6’e7’e8’e9’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ビット目の値e8は、ドントケア*とする。
これらの論理関数を簡単化すると、情報2バイト目の1ビット目の値e8は、下記数40に示す論理式で表される。
よって、図12に示されるように、まず、GF(26)上のビット誤りポインタ37e6’、e7’、e8’、e9’、e10’、e11’をNOTゲート回路70に入力し、
を生成する。そして、
を3入力ANDゲート回路71に、
を4入力ANDゲート回路72に、
を5入力ANDゲート回路73に、
を4入力ANDゲート回路72に、
を4入力ANDゲート回路72にそれぞれ入力する。それぞれのANDゲート回路から出力された信号を5入力ORゲート回路74に入力することにより、情報2バイト目の1ビット目の値e8が得られる。
を生成する。そして、
を3入力ANDゲート回路71に、
を4入力ANDゲート回路72に、
を5入力ANDゲート回路73に、
を4入力ANDゲート回路72に、
を4入力ANDゲート回路72にそれぞれ入力する。それぞれのANDゲート回路から出力された信号を5入力ORゲート回路74に入力することにより、情報2バイト目の1ビット目の値e8が得られる。
図12及び図13に示されるように、他のビットの値e9、…、e15も、NOTゲート回路70、3入力ANDゲート回路71、4入力ANDゲート回路72、5入力ANDゲート回路73、5入力ORゲート回路74、6入力ORゲート回路75により、同様にして得られる。
なお、以上では、2バイト目におけるGF(28)上の誤り生成回路7を例として詳細に説明したが、他のバイトについてもまったく同様である。
<d>誤り検出回路8の構成
次に、誤り検出回路8について説明する。
<d>誤り検出回路8の構成
次に、誤り検出回路8について説明する。
誤り検出回路8は、GF(26)上のビット誤りポインタ(e’)37及び訂正不可能誤り検出信号(DS)36を入力とし、訂正不可能誤り検出信号(UCE)35を出力する回路である。つまり、誤り検出回路8では、GF(26)上の誤りeI’から写像されることのないGF(28)上の誤りeIを訂正不可能な誤りとして検出するようにしている。
例えば、2バイト目に対する誤り検出回路8を図14に示す。
具体的に、例えば、上記表1に示されたGF(28)上の誤りeIとGF(26)上の誤りeI’の対応関係において、残った27パターンのGF(26)上の誤りeI’=(e6’e7’e8’e9’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)に対する訂正不可能誤り検出信号(UCE)35の値を1にし、誤りを検出する。また、訂正不可能誤り検出信号(DS)36の値が1のときに、誤りを検出する。
よって、これらの論理関数を簡単化すると、訂正不可能誤り検出信号(UCE)35の値は、下記数41に示す論理式で表される。
を生成する。そして、
を合計14個の4入力ANDゲート回路72及び5入力ANDゲート回路73にそれぞれ入力する。
次に、これら合計14個のANDゲート回路からそれぞれ出力された信号と、訂正不可能誤り検出信号(DS)36とを15入力OR回路76に入力することにより、訂正不可能誤り検出信号(UCE)35を出力する。
以上では、図14に示された2バイト目における誤り検出回路8を誤り検出回路8の一例として説明したが、他のバイトについてもまったく同様である。
<e>反転回路9の構成
最後に、反転回路9の構成について説明する。
<e>反転回路9の構成
最後に、反転回路9の構成について説明する。
例えば、2バイト目に対して、具体的に構成した反転回路9を図15に示す。図15に示す反転回路9は、誤りの箇所を具体的に指摘されたビット位置に対して、受信したビット値の反転を行って受信語(V’)32を訂正する回路である。図15において、v8’〜v15’は、受信語(V’)32の2バイト目に相当する8ビットであり、また、v8 *〜v15 *は訂正後の出力ビットである。
反転回路9は、複数の排他的論理和回路を有している。図15に示された2バイト目における反転回路9において、合計8個の排他的論理和回路80は、8入力ビットv8’〜v15’に対して、対応するビット誤りポインタei(i=8、9、…、15)との排他的論理和をそれぞれとり、例えば、ビット誤りポインタが“1”のときに、入力ビット値が反転されて訂正されるようにする。
なお、反転回路9は、各バイトにそれぞれ対応するようにするため、例えば、N=88ビットの受信語(V’)に対しては、88個の排他的論理和回路80が必要となる。反転回路9は、最後に、N=88ビットの受信語(V’)から、下記数42に示す訂正語D*64ビットを得る。
また、以上の説明では、主としてメモリ装置に注目して本発明の適用を述べたが、本発明は、それに限定されるものではなく、例えば、このようなバイト単位で物理的に独立した回路とモジュールと装置とから構成され、この中で限定した数の誤りが生じる可能性の高い一般の情報システム等に適用可能である。また、光通信回路やバス線回路等の通信または伝送のための回路、装置またはシステムにも適用可能である。
また、本発明の目的は、本実施の形態のスポッティバイト誤り訂正・検出装置の機能を実現するソフトウェアのプログラムコードを記述した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ(又はCPUやMPU)が記憶媒体に格納されたプログラムコードを読み出して実行することによっても、達成されることは言うまでもない。
この場合、記憶媒体から読み出されたプログラムコード自体が本実施の形態の機能を実現することとなり、そのプログラムコードを記憶した記憶媒体及び当該プログラムコードは本発明を構成することとなる。プログラムコードを供給するための記憶媒体としては、ROM、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、CD−R、磁気テープ、不揮発性のメモリカード等を用いることができる。
また、コンピュータが読み出したプログラムコードを実行することにより、前述した本実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているOS等が実際の処理の一部又は全部を行い、その処理によって本実施の形態の機能が実現される場合も含まれることは言うまでもない。
1 シンドローム生成回路
2 符号化回路
3 回路(メモリ等の通信路)
4 復号回路
5 誤り訂正回路
6 GF(2r)上の並列復号回路
7 GF(2b)上の誤り生成回路
8 誤り検出回路
9 反転回路
20 多入力パリティチェック回路
21 多入力パリティチェック回路
30 入力情報データ
31 送信語
32 受信語
33 シンドローム
34 出力情報データ
35 訂正不可能誤り検出信号(UCE)
36 訂正不可能誤り検出信号(DS)
37 GF(2r)上のビット誤りポインタ
38 GF(2b)上のビット誤りポインタ
40 (i、j)に対する誤り生成回路
41 GF(2r)上の誤り算出回路
42 (i、j)に対する誤り
43 (i、j)に対する訂正可能信号
44 24入力ORゲート回路
45 55入力NORゲート回路
46 2入力ANDゲート回路
50
計算回路
51
計算回路
52
計算回路
53 多入力パリティチェック回路
54 多入力パリティチェック回路
55 多入力パリティチェック回路
56 12入力NORゲート回路
57 2入力ANDゲート回路
60 ビットごとOR演算回路
61 10入力ANDゲート回路
70 NOTゲート回路
71 3入力ANDゲート回路
72 4入力ANDゲート回路
73 5入力ANDゲート回路
74 5入力ORゲート回路
75 6入力ORゲート回路
76 15入力ORゲート回路
80 排他的論理和回路
100 スポッティバイト誤り訂正・校正検出装置
2 符号化回路
3 回路(メモリ等の通信路)
4 復号回路
5 誤り訂正回路
6 GF(2r)上の並列復号回路
7 GF(2b)上の誤り生成回路
8 誤り検出回路
9 反転回路
20 多入力パリティチェック回路
21 多入力パリティチェック回路
30 入力情報データ
31 送信語
32 受信語
33 シンドローム
34 出力情報データ
35 訂正不可能誤り検出信号(UCE)
36 訂正不可能誤り検出信号(DS)
37 GF(2r)上のビット誤りポインタ
38 GF(2b)上のビット誤りポインタ
40 (i、j)に対する誤り生成回路
41 GF(2r)上の誤り算出回路
42 (i、j)に対する誤り
43 (i、j)に対する訂正可能信号
44 24入力ORゲート回路
45 55入力NORゲート回路
46 2入力ANDゲート回路
50
計算回路
51
計算回路
52
計算回路
53 多入力パリティチェック回路
54 多入力パリティチェック回路
55 多入力パリティチェック回路
56 12入力NORゲート回路
57 2入力ANDゲート回路
60 ビットごとOR演算回路
61 10入力ANDゲート回路
70 NOTゲート回路
71 3入力ANDゲート回路
72 4入力ANDゲート回路
73 5入力ANDゲート回路
74 5入力ORゲート回路
75 6入力ORゲート回路
76 15入力ORゲート回路
80 排他的論理和回路
100 スポッティバイト誤り訂正・校正検出装置
Claims (26)
- 入力情報データを基に送信語を生成する符号化手段と、情報伝送路中で誤りが発生した前記送信語を受信語として入力して前記誤りを訂正または検出する復号手段とを備えるスポッティバイト誤り訂正・検出装置であって、
前記符号化手段は、符号を表現するパリティ検査行列と前記入力情報データとを基に生成した検査情報を前記入力情報データに付加することにより、前記送信語を生成し、
前記復号手段は、前記パリティ検査行列を基に前記受信語のシンドロームを生成するシンドローム生成手段と、前記シンドローム生成手段により生成されたシンドロームを基に前記受信語の誤りを訂正または検出する誤り訂正手段とを備えることを特徴とするスポッティバイト誤り訂正・検出装置。 - 前記パリティ検査行列は、前記入力情報データが、b(bは2以上の整数)ビットを1バイトとし、複数のバイトから構成される語である場合に、ここで、バイト内のtビット(1≦t≦b)までの誤りをスポッティバイト誤りと称し、GF(2b)上で距離d(dは3以上の整数)を有する複数のスポッティバイト誤りを訂正・検出する機能を有する請求項1に記載のスポッティバイト誤り訂正・検出装置。
- 前記t値、b値、d値を任意に設定する請求項3に記載のスポッティバイト誤り訂正・検出装置。
- 前記情報伝送路は、情報通信システムである請求項1乃至請求項4のいずれかに記載のスポッティバイト誤り訂正・検出装置。
- 前記情報伝送路は、メモリシステムである請求項1乃至請求項4のいずれかに記載のスポッティバイト誤り訂正・検出装置。
- 前記情報伝送路は、バス線回路である請求項1乃至請求項4のいずれかに記載のスポッティバイト誤り訂正・検出装置。
- 前記パリティ検査行列は、前記距離dを有するスポッティバイト誤り制御符号に用いる、R行N列を有する次の行列Hであり、
ただし、R=(d−1)r、N=bn、0≦i≦n−1、n=2r−1であり、
前記H’は、H’=[h0’、h1’、…、hb−1’]に示すr次の列ベクトルhj’(0≦j≦b−1)から構成されるr行b列(r≦b)の2元行列であって、2tまたはbのうちいずれか小さい値に等しいか大きいランク(Rank)を有し、すなわち、Rank(H’)≧Min(2t、b)を満足し、また、ランクがbに等しいときはランクbのb×b行列であり、ランクが2t<bのときは前記H’は最小ハミング距離2t+1を有するパリティ検査行列に等しくなり、
γは2を底とするr次の拡大体GF(2r)の原始元であって、γiH’=[γih0’、γih1’、…、γihb−1’]が成立するように構成される請求項2乃至請求項7のいずれかに記載のスポッティバイト誤り訂正・検出装置。 - 前記パリティ検査行列は、前記距離dを有する伸長スポッティバイト誤り制御符号に用いる、R行N列を有する次の行列Hであり、
ただし、R≧(d−1)r、かつ、(R−r)は(d−2)の倍数であり、
また、N=b(n+2)、0≦i≦n−1、n=2(R−r)/(d−2)−1であり、
前記H’は、H’=[h0’、h1’、…、hb−1’]に示すr次の列ベクトルhj’(0≦j≦b−1)から構成されるr行b列(r≦b)の2元行列であって、2tまたはbのうちいずれか小さい値に等しいか大きいランク(Rank)を有し、すなわち、Rank(H’)≧Min(2t、b)を満足し、また、ランクがbに等しいときはランクbのb×b行列であり、ランクが2t<bのときは前記H’は最小ハミング距離2t+1を有するパリティ検査行列に等しくなり、
R≧(d−1)rとし、γは2を底とする(R−r)/(d−2)次の拡大体GF(2(R−r)/(d−2))の原始元であって、γiH’=[γiΦ(h0’)、γiΦ(h1’)、…、γiΦ(hb−1’)]が成立するように構成され、ここで、Φは加法のもとでGF(2r)からGF(2(R−r)/(d−2))への準同型写像(homomorphism)であり、すなわち、Φ:GF(2r)→GF(2(R−r)/(d−2))である請求項2乃至請求項7のいずれかに記載のスポッティバイト誤り訂正・検出装置。 - 前記誤り訂正手段は、前記シンドロームを基に前記受信語の何れのビットが誤っているかを検出するビット誤りポインタを生成し、生成された前記ビット誤りポインタを基に、誤りビットに該当する前記受信語のビット値を反転させることにより、前記受信語の誤りを訂正し、また、前記受信語のビット誤りを訂正できないことを検出した場合に、訂正不可能誤り検出信号を出力する請求項1乃至請求項9のいずれかに記載のスポッティバイト誤り訂正・検出装置。
- 前記誤り訂正手段は、並列復号手段と、誤り生成手段と、誤り検出手段と、反転手段とを備え、
前記並列復号手段は、前記シンドロームを基にしてGF(2r)上の誤りを生成し、
前記誤り生成手段は、前記並列復号手段で生成された前記GF(2r)上の誤りを変換し、前記受信語の何れのビットが誤っているかを検出するビット誤りポインタを生成し、
前記誤り検出手段は、前記並列復号手段により訂正できない誤りを検出し、
前記反転手段は、前記誤り生成手段から入力される前記ビット誤りポインタを基に、誤りビットに該当する前記受信語のビット値を反転させることにより、訂正後の受信語を生成する請求項8又は請求項9に記載のスポッティバイト誤り訂正・検出装置。 - Rank(H’)≧Min(2t、b)を満足する行列H’に成立するe・H’T=e’(ここで、H’TはH’の行と列を入れ替えた置換行列)の関係式から、GF(2r)上の誤りe’よりGF(2b)上の誤りeを決定する請求項11に記載のスポッティバイト誤り訂正・検出装置。
- 前記誤り訂正手段は、並列復号手段と、誤り生成手段と、誤り検出手段と、反転手段とを備え、
前記並列復号手段は、前記シンドロームを基にして、GF(2r)上の誤りを指摘する第1のビット誤りポインタと、GF(2r)上の並列復号において誤り訂正が不可能とみなされたときに出力される第1の訂正不可能誤り検出信号とを生成し、
前記誤り生成手段は、前記並列復号手段から入力される前記第1のビット誤りポインタに基づいて、第2のビット誤りポインタを生成し、
前記誤り検出手段は、前記並列復号手段で生成された前記第1のビット誤りポインタと前記第1の訂正不可能誤り検出信号とに基づいて、前記受信語の誤り訂正の可否を判断し、前記受信語のビット誤りを訂正できないことを検出した場合に、第2の訂正不可能誤り検出信号を出力し、
前記反転手段は、前記誤り生成手段で生成された前記第2のビット誤りポインタ及び前記受信語を基にして、前記第2のビット誤りポインタに対応した前記受信語のビットを反転させることにより、前記受信語の誤りを訂正する請求項8又は請求項9に記載のスポッティバイト誤り訂正・検出装置。 - 入力情報データを基に送信語を生成する符号化処理ステップと、情報伝送路中で誤りが発生した前記送信語を受信語として入力して前記誤りを訂正または検出する復号処理ステップとを有するスポッティバイト誤り訂正・検出方法であって、
前記符号化処理ステップは、符号を表現するパリティ検査行列と前記入力情報データとを基に生成した検査情報を前記入力情報データに付加することにより前記送信語を生成し、
前記復号処理ステップは、
前記パリティ検査行列を基に前記受信語のシンドロームを生成するシンドローム生成処理ステップと、
前記シンドローム生成処理ステップにより生成されたシンドロームを基に、前記受信語の誤りを訂正または検出する誤り訂正処理ステップと、
を有することを特徴とするスポッティバイト誤り訂正・検出方法。 - 前記パリティ検査行列は、前記入力情報データが、b(bは2以上の整数)ビットを1バイトとし、複数のバイトから構成される語である場合に、ここで、バイト内のtビット(1≦t≦b)までの誤りをスポッティバイト誤りと称し、GF(2b)上で距離d(dは3以上の整数)を有する複数のスポッティバイト誤りを訂正・検出する機能を有する請求項14に記載のスポッティバイト誤り訂正・検出方法。
- 前記t値、b値、d値を任意に設定する請求項16に記載のスポッティバイト誤り訂正・検出方法。
- 前記情報伝送路は、情報通信システムである請求項14乃至請求項17のいずれかに記載のスポッティバイト誤り訂正・検出方法。
- 前記情報伝送路は、メモリシステムである請求項14乃至請求項17のいずれかに記載のスポッティバイト誤り訂正・検出方法。
- 前記情報伝送路は、バス線回路である請求項14乃至請求項17のいずれかに記載のスポッティバイト誤り訂正・検出方法。
- 前記パリティ検査行列は、前記距離dを有するスポッティバイト誤り制御符号に用いる、R行N列を有する次の行列Hであり、
ただし、R=(d−1)r、N=bn、0≦i≦n−1、n=2r−1であり、
前記H’は、H’=[h0’、h1’、…、hb−1’]に示すr次の列ベクトルhj’(0≦j≦b−1)から構成されるr行b列(r≦b)の2元行列であって、2tまたはbのうちいずれか小さい値に等しいか大きいランク(Rank)を有し、すなわち、Rank(H’)≧Min(2t、b)を満足し、また、ランクがbに等しいときはランクbのb×b行列であり、ランクが2t<bのときは前記H’は最小ハミング距離2t+1を有するパリティ検査行列に等しくなり、
γは2を底とするr次の拡大体GF(2r)の原始元であって、γiH’=[γih0’、γih1’、…、γihb−1’]が成立するように構成される請求項15乃至請求項20のいずれかに記載のスポッティバイト誤り訂正・検出方法。 - 前記パリティ検査行列は、前記距離dを有する伸長スポッティバイト誤り制御符号に用いる、R行N列を有する次の行列Hであり、
ただし、R≧(d−1)r、かつ、(R−r)は(d−2)の倍数であり、
また、N=b(n+2)、0≦i≦n−1、n=2(R−r)/(d−2)−1であり、
前記H’は、H’=[h0’、h1’、…、hb−1’]に示すr次の列ベクトルhj’(0≦j≦b−1)から構成されるr行b列(r≦b)の2元行列であって、2tまたはbのうちいずれか小さい値に等しいか大きいランク(Rank)を有し、すなわち、Rank(H’)≧Min(2t、b)を満足し、また、ランクがbに等しいときはランクbのb×b行列であり、ランクが2t<bのときは前記H’は最小ハミング距離2t+1を有するパリティ検査行列に等しくなり、
R≧(d−1)rとし、γは2を底とする(R−r)/(d−2)次の拡大体GF(2(R−r)/(d−2))の原始元であって、γiH’=[γiΦ(h0’)、γiΦ(h1’)、…、γiΦ(hb−1’)]が成立するように構成され、ここで、Φは加法のもとでGF(2r)からGF(2(R−r)/(d−2))への準同型写像(homomorphism)であり、すなわち、Φ:GF(2r)→GF(2(R−r)/(d−2))である請求項15乃至請求項20のいずれかに記載のスポッティバイト誤り訂正・検出方法。 - 前記誤り訂正処理ステップは、前記シンドロームを基に前記受信語の何れのビットが誤っているかを検出するビット誤りポインタを生成し、生成された前記ビット誤りポインタを基に、誤りビットに該当する前記受信語のビット値を反転させることにより、前記受信語の誤りを訂正し、また、前記受信語のビット誤りを訂正できないことを検出した場合に、訂正不可能誤り検出信号を出力する請求項14乃至請求項22のいずれかに記載のスポッティバイト誤り訂正・検出方法。
- 前記誤り訂正処理ステップは、並列復号処理ステップと、誤り生成処理ステップと、誤り検出処理ステップと、反転処理ステップとを有し、
前記並列復号処理ステップは、前記シンドロームを基にしてGF(2r)上の誤りを生成し、
前記誤り生成処理ステップは、前記並列復号処理ステップで生成された前記GF(2r)上の誤りを変換し、前記受信語の何れのビットが誤っているかを検出するビット誤りポインタを生成し、
前記誤り検出処理ステップは、前記並列復号処理ステップで訂正できない誤りを検出し、
前記反転処理ステップは、前記誤り生成処理ステップで生成された前記ビット誤りポインタを基に、誤りビットに該当する前記受信語のビット値を反転させることにより、訂正後の受信語を生成する請求項21又は請求項22に記載のスポッティバイト誤り訂正・検出方法。 - Rank(H’)≧Min(2t、b)を満足する行列H’に成立するe・H’T=e’の関係式から、GF(2r)上の誤りe’よりGF(2b)上の誤りeを決定する請求項24に記載のスポッティバイト誤り訂正・検出方法。
- 前記誤り訂正処理ステップは、並列復号処理ステップと、誤り生成処理ステップと、誤り検出処理ステップと、反転処理ステップとを有し、
前記並列復号処理ステップは、前記シンドロームを基にして、GF(2r)上の誤りを指摘する第1のビット誤りポインタと、GF(2r)上の並列復号において誤り訂正が不可能とみなされたときに出力される第1の訂正不可能誤り検出信号とを生成し、
前記誤り生成処理ステップは、前記並列復号処理ステップで生成された前記第1のビット誤りポインタに基づいて、第2のビット誤りポインタを生成し、
前記誤り検出処理ステップは、前記並列復号処理ステップで生成された前記第1のビット誤りポインタと前記第1の訂正不可能誤り検出信号とに基づいて、前記受信語の誤り訂正の可否を判断し、前記受信語のビット誤りを訂正できないことを検出した場合に、第2の訂正不可能誤り検出信号を出力し、
前記反転処理ステップは、前記誤り生成処理ステップで生成された前記第2のビット誤りポインタ及び前記受信語を基にして、前記第2のビット誤りポインタに対応した前記受信語のビットを反転させることにより、前記受信語の誤りを訂正する請求項21又は請求項22に記載のスポッティバイト誤り訂正・検出方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004239392A JP2006060465A (ja) | 2004-08-19 | 2004-08-19 | スポッティバイト誤り訂正・検出方法及び装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004239392A JP2006060465A (ja) | 2004-08-19 | 2004-08-19 | スポッティバイト誤り訂正・検出方法及び装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006060465A true JP2006060465A (ja) | 2006-03-02 |
Family
ID=36107587
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004239392A Pending JP2006060465A (ja) | 2004-08-19 | 2004-08-19 | スポッティバイト誤り訂正・検出方法及び装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2006060465A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8230292B2 (en) | 2005-03-04 | 2012-07-24 | Tokyo Institute Of Technology | Method and apparatus for correcting and detecting multiple spotty-byte errors within a byte occurred in a limited number of bytes |
CN109947674A (zh) * | 2017-12-20 | 2019-06-28 | 瑞萨电子株式会社 | 数据处理器件和数据处理方法 |
US10846171B2 (en) | 2018-11-06 | 2020-11-24 | Samsung Electronics Co., Ltd. | Error correction code decoders, semiconductor memory devices and memory systems |
-
2004
- 2004-08-19 JP JP2004239392A patent/JP2006060465A/ja active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8230292B2 (en) | 2005-03-04 | 2012-07-24 | Tokyo Institute Of Technology | Method and apparatus for correcting and detecting multiple spotty-byte errors within a byte occurred in a limited number of bytes |
CN109947674A (zh) * | 2017-12-20 | 2019-06-28 | 瑞萨电子株式会社 | 数据处理器件和数据处理方法 |
US10846171B2 (en) | 2018-11-06 | 2020-11-24 | Samsung Electronics Co., Ltd. | Error correction code decoders, semiconductor memory devices and memory systems |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4036338B2 (ja) | 誤りバイト数を制限したバイト内複数スポッティバイト誤り訂正・検出方法及び装置 | |
US10243589B2 (en) | Multi-bit error correction method and apparatus based on a BCH code and memory system | |
US11740960B2 (en) | Detection and correction of data bit errors using error correction codes | |
US7543212B2 (en) | Low-density parity-check (LDPC) encoder | |
US7962837B2 (en) | Technique for reducing parity bit-widths for check bit and syndrome generation for data blocks through the use of additional check bits to increase the number of minimum weighted codes in the hamming code H-matrix | |
US8806295B2 (en) | Mis-correction and no-correction rates for error control | |
JP2008165808A (ja) | 誤り訂正確率を減らすエラー訂正回路、その方法及び前記回路を備える半導体メモリ装置 | |
US8694872B2 (en) | Extended bidirectional hamming code for double-error correction and triple-error detection | |
KR20180085651A (ko) | 리스트 디코딩 생성을 통한 이진 bch 코드들의 bm-기반 빠른 체이스 디코딩에서 빠른 다항식 업데이트를 위한 방법을 수행하기 위한 asic | |
JPH0736717A (ja) | 単一記号エラーと単一ビット・エラー検出のためのエラー訂正方法及び装置 | |
US7093183B2 (en) | Symbol level error correction codes which protect against memory chip and bus line failures | |
TWI664636B (zh) | 錯誤檢查和糾正解碼器 | |
EP1102406A2 (en) | Apparatus and method for decoding digital data | |
US6536009B1 (en) | Technique for generating single-bit error-correcting, two-bit burst error-detecting codes | |
KR102532623B1 (ko) | Raid에 맞춤화된 bch 인코딩 및 디코딩 방법, 및 그 장치 | |
JP2006060465A (ja) | スポッティバイト誤り訂正・検出方法及び装置 | |
JP3743915B2 (ja) | スポッティバイト誤り訂正・検出方法及び装置 | |
Rao et al. | Encoder and adaptive decoder for a (15, 6, 2) DEC-TED BCH code | |
JP2006101429A (ja) | バイト内複数スポッティバイト誤り訂正・検出方法及び装置 | |
JP3879082B2 (ja) | バイト誤り訂正・検出装置 | |
JPH07226687A (ja) | 誤り訂正処理装置 | |
KR101226439B1 (ko) | 리드-솔로몬 디코더, 이를 포함하는 메모리 시스템 및 디코딩 방법 | |
US20230370092A1 (en) | Error Correction With Fast Syndrome Calculation | |
Anburaj et al. | Fault tolerant secured system using novel cellular automata |