JP2005176244A - スポッティバイト誤り訂正・検出方法及び装置 - Google Patents

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

Info

Publication number
JP2005176244A
JP2005176244A JP2003416978A JP2003416978A JP2005176244A JP 2005176244 A JP2005176244 A JP 2005176244A JP 2003416978 A JP2003416978 A JP 2003416978A JP 2003416978 A JP2003416978 A JP 2003416978A JP 2005176244 A JP2005176244 A JP 2005176244A
Authority
JP
Japan
Prior art keywords
error
byte
bit
syndrome
error correction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2003416978A
Other languages
English (en)
Other versions
JP3743915B2 (ja
Inventor
Eiji Fujiwara
英二 藤原
Umanesan Ganesan
ウマネサン ガネサン
Tanoshi Ichikawa
愉 市川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Japan Aerospace Exploration Agency JAXA
Tokyo Institute of Technology NUC
Original Assignee
Japan Aerospace Exploration Agency JAXA
Tokyo Institute of Technology NUC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Japan Aerospace Exploration Agency JAXA, Tokyo Institute of Technology NUC filed Critical Japan Aerospace Exploration Agency JAXA
Priority to JP2003416978A priority Critical patent/JP3743915B2/ja
Publication of JP2005176244A publication Critical patent/JP2005176244A/ja
Application granted granted Critical
Publication of JP3743915B2 publication Critical patent/JP3743915B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Abstract

【課題】 ディジタルデータの誤り訂正・検出において、1バイトのスポッティバイト誤りを訂正するとともに、2バイトにまたがる2スポッティバイト誤りを検出する機能を有する誤り訂正・検出装置及び誤り訂正・検出方法を提供する。
【解決手段】 入力情報データ30に対して、符号を表現するパリティ検査行列Hと入力情報データ30とを基に生成した検査情報Cを付加することにより送信語31を生成する符号化回路2と、情報伝送路中に誤りを含んだ受信語32に対して、このパリティ検査行列Hを基に生成したシンドロームSを用いて誤りを訂正する復号回路4を設け、特に前記シンドロームSを構成する複数のビットを、パリティ検査行列Hの構成に対応して複数のグループに分けて、この各グループ毎のビット値を所定のロジックに従って順次判断していくことにより、パリティ検査行列Hや復号手順を統一的に扱うことが可能となり、誤りの発生状態に柔軟に対応できるようになる。
【選択図】 図1

Description

本発明は、スポッティバイト誤り訂正・検出方法及び装置に関し、より詳しくは、複数のビットをバイトとし、その複数のバイトから構成される語(ワード)に対して、任意のバイト中にビットの誤りが生じたときにその誤りを検出または訂正するために用いて好適なものである。
近年、情報化社会の進展や半導体技術の進歩等により、ディジタルデータの信頼性向上がますます重要なものになってきている。ディジタルデータの伝送または記録を正確に行おうとする場合、送信データが情報伝送経路中でノイズ等の影響を受けて誤って伝送されることを防止したり、その誤り箇所を検出・訂正する必要がある。この誤り箇所の検出・訂正を実現するために、符号理論を基礎とした誤り訂正符号技術が従来より様々に開発されてきている。
従来の誤り訂正符号技術として、例えば、bビット(bは2以上の整数)の塊りをバイトと称し、1バイト中の任意の誤りを訂正する符号(SbEC符号と称する)として優れたHong-Patel符号が発表されている(例えば、非特許文献1参照)。
また、高速半導体メモリシステムにおいて、従来最もよく使用された1ビット誤り訂正・2ビット誤り検出符号を包含する特徴を有した奇数重み列バイト誤り訂正符号が発表されている(例えば、非特許文献2参照)。
さらに、1バイト誤りを訂正し、また2バイト誤りを検出する符号(SbEC-DbED符号と称する)は、リードソロモン符号(Reed-Solomon符号)およびその改良した効率のよい符号として提案されており、多くの計算機システム等の主記憶装置にすでに採用されている(例えば、非特許文献3参照)。
また、バイト誤りを検出する符号としては、1ビット誤りを訂正し、かつ2ビット誤りを検出するとともに、1バイトの誤りをも検出する符号(SEC-DED-SbED符号と称する)が発表され、現在、計算機システムの主記憶装置に多く適用されている(例えば、非特許文献4参照)。なお、これら1980年代後半までの相互に関連した多くの符号の研究・開発の具体的な内容は、T.R.N.Rao and Eiji Fujiwara, “Error Control Coding for Computer Systems”, Prentice-Hall, 1989の本で総括的に述べられている。
その後、新しく開発された高速半導体メモリ用の符号としては、1バイトの誤りを訂正し、かつ2ビット誤りを検出する符号(SbEC-DEDと称する)が下記非特許文献5に、また、1バイトの誤りを訂正し、かつ1ビット誤りと1バイト誤りとの同時誤りを検出する符号(SbEC-(S+Sb)ED符号と称する)が下記非特許文献6に提案されている。さらに、1バイトの誤りを訂正するとともに2ビットの誤りがあればこれも訂正する符号(DEC-SbEC符号と称する)が下記非特許文献7に発表されている。
特に、本発明に最も関連する符号として、具体的には、bビットからなるバイト内のtビット(t≦b)までの誤りをt/b誤りまたはスポッティバイト誤りと称し、この1スポッティバイト誤りを訂正するSt/bEC符号、および1スポッティバイト誤りを訂正し、かつバイト内tビットを越える1バイト誤りを検出するSt/bED-SbED符号に関する発明が既に出願されている(特願2002−159714号)。また、特にSt/bEC符号については、下記非特許文献8に発表されている。
S.J.Hong and A.M.Patel,"A general Class of Maximal Codes for Computer Applications", IEEE Transactions on Computers, Vol.C-21, No.12, pp.1322-1331, 1972 E.Fujiwara,"Odd-Weight-Column b-Adjacent Error Correcting Codes", Transactions of the IECE Japan, Vol.E61, No.10, pp.781-787, 1978 S.Kaneda and E.Fujiwara,"Single Byte Error Correcting Double Byte Error Detecting Codes for Memory Systems", IEEE Transactions on Computers, Vol.C-31, No.7, pp.596-602, July 1982, 及びC.L.Chen and L.E.Grosbach,"Fault-Tolerant Memory Design in the IBM Application System/400TM", Proceedings of Annual International Symposium on Fault-Tolerant Computing, pp.393-400, June 1991 S.Kaneda,"A Class of Odd-Weight-Column SEC-DED-SbED Codes for Memory System Applications", IEEE Transactions on Computers, Vol.C-33, No.8, pp.737-739, Aug. 1984 E.Fujiwara and M.Hamada,"Single b-Bit Byte Error Correcting and Double Bit Error Detecting Codes for Memory Systems", IEICE Transactions on Fundamentals, Vol.E76-A, No.9, pp.1442-1448, Sept. 1993 M.Hamada and E.Fujiwara,"A Class of Error Control Codes for Byte Organized Memory Systems SbEC-(Sb+S)ED Codes ", IEEE Transactions on Computers, Vol.46, No.1, pp.105-109, Jan. 1997 G.Umanesan and E.Fujiwara,"Random Double Bit Error Correcting Single Byte Error Correcting (DEC-SbEC) Codes for Memory Systems", IEICE Transactions on Fundamentals, Vol.E85-A, No.1, pp.273-276, Jan. 2002 G.Umanesan and E.Fujiwara,"A Class of Codes for Correcting Single Spotty Byte Errors", IEICE Transactions on Fundamentals, Vol.E86-A, No.3, pp.704-714, March 2003
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ビット以上の誤りになることが知られている。
一方、DRAM素子内のアドレス回路、制御回路、電力回路等に用いられる共通回路で生ずる故障には、発生確率は非常に小さいものの、場合によってはバイト幅全部で誤りを有してしまうことがあることも考慮しておく必要がある。
以上のようなビット誤りの発生状況が多岐にわたっていることを踏まえれば、パラメータtおよびbに任意の値を与えて構成できる前記St/bEC-SbED符号は、8ビット以上のDRAM素子を使用したメモリ装置に用いる場合に非常に実用的な符号方式である。つまり、前記St/bEC-SbED符号は、バイト幅bより小さなtビット(このtの値は、誤りの傾向を調査して設計者が任意に決めることが可能である)までの1素子の誤りを訂正することが可能な機能、及び発生確率としては小さいもののtビットを超える1バイト誤りを検出することが可能な機能を備えた上で、従来のバイト単位で行う符号方式と比較して大幅に少ない数の検査ビットでビット誤りを訂正・検出することを実現することができるようになっている。
しかしながら、前記St/bEC-SbED符号においては、1バイト、即ち1素子内のビット誤りを対象としていて、任意の2素子(隣接した2素子に限らない)にまたがる誤りについては対処できないという問題を有していた。さらに、実用的観点より、1素子のt/b誤りを訂正するとともに、2素子のt/b誤りも検出する機能を有する符号(St/bEC-Dt/bED符号:Single t-bit within a b-bit byte Error Correcting Double t-bit within each b-bit byte Error Detecting Codeと称する)の開発が求められてきている。なお、前記“St/bEC-Dt/bED符号”を、簡単に“1スポッティバイト誤り訂正・2スポッティバイト誤り検出符号”とも称することとする。ここで、tは1≦t≦bを満足する整数である。
本発明はこのような事情に鑑みてなされたものであり、バイトをbビットの塊りとするとき、バイト内の1ビット以上tビットまでのすべての誤りを訂正する1バイト内tビット誤り訂正機能(St/bEC)、および任意の2バイトにおける各バイト内tビット誤りを検出する各2バイト内tビット誤り検出機能(Dt/bED)とを有する機能(St/bEC-Dt/bED)とともに、さらに1バイト内のtビットを越える誤りを検出する機能(SbED)を有した機能(St/bEC-Dt/bED-SbED符号と称する)を備えたスポッティバイト誤り訂正・検出方法及びその装置を提供することを目的としている。
要するに、本発明は、従来の符号技術では存在しない、bビットからなるバイト中の2ビット、3ビット等のtビット(tは1以上b以下の整数)までのビット誤りである1スポッティバイト誤りを訂正するとともに、任意の2バイトにおける2スポッティバイト誤りを検出する符号機能(St/bEC-Dt/bED)を備えることにより、従来よりも検査ビット数を少なくして符号化率を向上させ、またビット誤りの発生状態に柔軟に対応できる符号機能を提供することを目的としている。
本発明の誤り訂正・検出装置は、入力情報データを基に送信語を生成する符号化手段と、情報伝送路中で誤りが発生した前記送信語を受信語として入力して前記誤りを訂正または検出する復号手段とを備える誤り訂正・検出装置であって、前記符号化手段は、符号を表現するパリティ検査行列と前記入力情報データとを基に生成した検査情報を前記入力情報データに付加することにより前記送信語を生成し、前記復号手段は、前記パリティ検査行列を基に前記受信語のシンドロームを生成するシンドローム生成手段と、前記シンドローム生成手段により生成されたシンドロームを構成する複数のビットを、前記パリティ検査行列の構成に対応して複数のグループに分け、前記各グループ毎のビット値を基に前記受信語の誤りを訂正または検出する誤り訂正手段とを備えることを特徴としている。
また、前記パリティ検査行列は、b(bは2以上の整数)ビットを1バイトとした際、前記入力情報データが複数のバイトから構成される場合に、1バイト中の任意のt(tは1以上b以下の整数)ビット誤りを訂正する機能を有することを特徴としている。
また、前記パリティ検査行列は、b(bは2以上の整数)ビットを1バイトとした際、前記入力情報データが複数のバイトから構成される場合に、1バイト中の任意のt(tは1以上b以下の整数)ビット誤りを訂正する機能を有するとともに、任意の2バイトにおける各バイト内のtビット誤りを検出する機能を有することを特徴としている。
また、前記パリティ検査行列は、b(bは2以上の整数)ビットを1バイトとした際、前記入力情報データが複数のバイトから構成される場合に、1バイト中の任意のt(tは1以上b以下の整数)ビット誤りを訂正する機能、および任意の2バイトにおける各バイト内のtビット誤りを検出する機能を有するとともに、1バイト中のtビットを超える誤りを検出する機能を有することを特徴としている。
また、前記パリティ検査行列Hは、R行N列を有する次の行列Hであり、
Figure 2005176244
ただし、n=2(R-q)/2−1、0≦i≦n−1、0x×yはx行y列の零行列、Izはz×zの単位行列であり、前記H′は、H′=[h0′、h1′、…、hb-1′]に示すq次の列ベクトルhj′(0≦j≦b−1)から構成されるq行b列(q≦b)の2元行列であって3tまたはbのうちいずれか小さい値に等しいか大きいランク(Rank)を有し、すなわち、Rank(H′)≧Min(3t、b)を満足し、また、ランクがbに等しいときはランクbのb×b行列であり、ランクが3t<bのときは前記H′は最小ハミング距離3t+1を有するパリティ検査行列Hに等しくなり、
また、前記H″は、H″=[h0 、h1 、…、hb-1 ]に示すランクt以上のr行b列の2元行列であって、前記h0 、h1 、…、hb-1 はそれぞれ有限体(ガロア体)GF(2r)上の要素で2元r次の列ベクトルであり、t=bであれば前記H″はb×bのランクbの行列であり、t<bであれば最小ハミング距離t+1を有する2元(b、b−r)のパリティ検査行列Hに等しくなり、また、R≧b+2rとしγを2を底とする(R−q)/2次の有限体GF(2r(R-q)/2)の原始元であって、φを加法のもとでGF(2r)からGF(2(R-q)/2)への準同形写像とするときに、γiH″=[γiφ(h0 ) γiφ(h1 ) γiφ(h2 )・・γiφ(hb-1 )]が成立するように構成されることを特徴としている。
また、前記誤り訂正手段は、前記シンドロームを構成する複数のビットを区分した複数のグループのうち第1のグループに含まれるビット値を基に、b(bは2以上の整数)ビットを1バイトとした際のバイト単位のバイト誤りパターンを生成するバイト誤りパターン生成手段と、前記バイト誤りパターン生成手段により生成したバイト誤りパターン、及び前記第1のグループ以外のグループに含まれるビット値を基に、前記受信語の何れのバイトに誤りが含まれているかを検出するバイト誤りポインタと、前記検出されたバイト誤りポインタの示すバイト内で何れのビットが誤っているかを検出するビット誤りポインタとを出力するシンドロームデコード手段とを備えることを特徴としている。
また、前記誤り訂正手段は、前記シンドローム生成手段により生成されたシンドロームと、前記シンドロームデコード手段により出力されたバイト誤りポインタとを基に、前記バイト中に訂正することができないビット誤りを検出する誤り検出手段を備えることを特徴としている。
また、前記誤り検出手段は、前記受信語のビット誤りを訂正できないことを検出した場合に、訂正不可信号を出力することを特徴としている。
また、前記誤り訂正手段は、前記シンドロームデコード手段により出力されたビット誤りポインタを基に、誤りビットに該当する前記受信語のビット値を反転させることにより誤り訂正後の受信語を生成するビット反転手段を備えることを特徴としている。
本発明の誤り訂正・検出方法は、入力情報データを基に送信語を生成する符号化処理と、情報伝送路中で誤りが発生した前記送信語を受信語として入力して前記誤りを訂正または検出する復号処理とを備える誤り訂正・検出方法であって、前記符号化処理は、符号を表現するパリティ検査行列と前記入力情報データとを基に生成した検査情報を前記入力情報データに付加することにより前記送信語を生成し、前記復号処理は、前記パリティ検査行列を基に前記受信語のシンドロームを生成するシンドローム生成処理と、前記シンドローム生成処理により生成されたシンドロームを構成する複数のビットを、前記パリティ検査行列の構成に対応して複数のグループに分け、前記各グループ毎のビット値を基に前記受信語の誤りを訂正または検出する誤り訂正処理とを備えることを特徴としている。
本発明によれば、符号を表現するパリティ検査行列と入力データとを基に生成した検査情報を前記入力情報データに付加した送信語が、情報伝送路中で発生した誤りを訂正・検出する際に、誤りを有する可能性のある受信語に対し前記パリティ検査行列を基にシンドロームを生成するとともに、このシンドロームを構成する複数のビットを前記パリティ検査行列の構成に対応して複数のグループに分け、この各グループ毎のビット値を基に前記受信語の誤りを訂正または検出するようにしたもので、1バイト中の2ビット、3ビット等のtビットまでの誤りである1スポッティバイト誤りを訂正する機能(St/bEC)に加え、これまで存在しなかった各2バイトにまたがる2スポッティバイト誤りをも完全に検出する機能(Dt/bED)を有し、さらに1バイト内にtビットを越えるバイト誤りを検出する機能(SbED)を付加したSt/bEC-Dt/bED-SbEDの符号機能を実現することができた。これにより、誤りを検出または訂正する符号であるパリティ検査行列の構成や復号の処理手順を、誤りパターンの発生状況ごとに対応させる必要がなく統一的に扱うことが可能となり、本発明の符号機能におけるt値を任意に設定するだけで誤りの発生状態に柔軟に対応できる符号機能を提供することができる。
また、bビットであるバイト長よりも小さな整数ビット長tを選ぶことにより、従来のバイト誤り制御符号(t=bに相当)と比較して、検査ビット数を大幅に少なくすることが可能となる。これにより、符号長に対する検査ビット数の占める割合を小さくさせて符号化率を格段に向上することが可能となり、高効率かつ高信頼性のあるデータ伝送を実現することができる。
以下、本発明の好適な実施形態について図面を参照しながら詳細に説明する。
なお、本実施形態で対象とするディジタルデータとは、0と1との組合せの信号(2進化符号)であり、ビット誤りの発生とは、符号語(バイト)中の任意のビットが、0→1または1→0になることを意味することとする。また、バイト誤りの発生とは、bビットからなる符号語中のすべてのビットを含む任意のビットが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の全体動作>
ここでは、スポッティバイト装置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)33を生成する(ステップS203)。シンドローム(S)33の値は受信語(V′)32に応じて変化するため、受信語(V′)32に誤りが含まれているかを判断することが可能となる。
そこで、誤り訂正回路5は、前記シンドローム(S)の値に基づいて、まず誤りを検出したか否か(ステップS204)、検出した場合、誤り訂正が可能か否かを判断し(ステップS205)、前記判断の結果、訂正可能であれば誤りの訂正を行う(ステップ206)。そして、誤り訂正回路5は、受信語V′に対して1スポッティバイト誤りの訂正処理を施した場合、訂正後のV′を受信後出力情報データ(V*)34として出力する(ステップS207)。これに対して、ステップ205の判断の結果、訂正不可能な2スポッティバイト誤り等が検出された場合には、誤り訂正回路5は、訂正不可能な誤り検出信号としてのUCE(Uncorrectable Error)信号35を出力する(ステップS208)。
次に、前述した符号化回路2及び復号回路4で用いられるパリティ検査行列(H)の構成について詳細に説明する。本発明のパリティ検査行列H(Hマトリクス、符号マトリクス、または単に検査行列とも称される)は、バイトをbビットの塊りとするときに、バイト中のtビットの誤りを訂正する1バイト内tビット誤り訂正(St/bEC)、すなわち1スポッティバイト誤り訂正を行うとともに、2バイトにまたがる(隣接したバイトに限らない、以下同じ)2スポッティバイト誤り検出(Dt/bED)も合わせて行うことができる符号(St/bEC-Dt/bED符号)である。
本実施の形態では、任意のt(tは1以上b以下の整数)およびb(2以上の整数)に対して構成できる一般的な符号構成法を提示するとともに、その符号により実際に誤りの訂正・検出ができる方法を示し、またそのための符号化回路および復号回路を提示し、前記符号化回路および復号回路によって誤りが具体的に訂正・検出できることを示す。
なお、t=1のときに、本発明のパリティ検査行列(H)は従来の1ビット誤り訂正・2ビット誤り検出(SEC-DED)符号に一致し、t=bのときに、従来の1バイト誤り訂正・2バイト誤り検出(SbEC-DbED)符号に一致する。また、t=2のとき、パリティ検査行列(H)はt=2の1スポッティバイト誤りを訂正し、2バイト間にまたがるランダムな2ビット誤りを検出する機能(St/bEC-DED)を包含することは明らかである。
いま、Kビットの入力情報データ(D)30に対してRビットの検査情報(C)を付加し、ある機能を満足するN=K+Rビットの長さを有する送信語V(Nビットの行ベクトル)を構成することができたときに、この送信語(V)と、符号を規定するR行N列の2元パリティ検査行列(H)との間には、V・HT=0の関係が成立する。ここで、HTはパリティ検査行列(H)の行と列とを入れ替えて生成した転置行列であり、また、右辺の0はRビットの零行ベクトルを示している。
本実施形態では、1バイト内tビットの誤り(1スポッティバイト誤り、またはt/b誤り)を訂正し、任意の2バイトにまたがるスポッティバイト誤り(2スポッティバイト誤り、または2t/b誤り)を検出する符号である“St/bEC-Dt/bED符号”に用いるR行N列を有するパリティ検査行列(H)を、下記の(式1)に示すような構成にしている。
Figure 2005176244
ここで、n=2(R-q)/2−1、0≦i≦n−1、0x×yはx行y列の零行列、IZはz×zの単位行列である。
前記の(式1)から分かるように、パリティ検査行列Hは、情報部のビット列HRと、検査部に対応するビット列Iとに基本的に分けられ、つまりH=[HR I]という形で構成される。
前記の(式1)を構成する行列H′は、下記の(式2)に示すq次の列ベクトルhj′(0≦j≦b−1)から構成されるq行b列(q≦b)の2元行列であり、3tまたはbのうちいずれか小さい値に等しいか大きいランク(Rank)を有する。すなわち、Rank(H′)≧Min(3t、b)を満足する。
H′=[h0′、h1′、…、hb-1′] ……… (式2)
また、ランクがbに等しいときはランクbのb×b行列(例えば、b×bの単位行列)であり、ランクが3t<bのときは行列H′は最小ハミング距離3t+1を有する符号の検査行列、すなわち、tビット誤り訂正・2tビット誤り検出の機能を有する(b、b−q)符号のパリティ検査行列(H)に等しくなる。
また、前記の(式1)を構成する行列H″は、下記の(式3)に示すランクt以上のr行b列の2元行列であり、h0 、h1 、…、hb-1 はそれぞれ有限体(ガロア体)GF(2r)上の要素で2元r次の列ベクトルである。
H″=[h0 、h1 、…、hb-1 ] ……… (式3)
ここで、t=bであれば行列H″はb×bのランクbの行列(例えば、b×bの単位行列)であり、t<bであれば最小ハミング距離t+1を有する2元(b、b−r)符号の検査行列に等しい。すなわち、このときtビット誤り検出符号のパリティ検査行列Hに等しくなる。
次に、R≧b+2rとし、γを2を底とする(R−q)/2次の有限体GF(2(R-q)/2)の原始元とするとき、γiH″は下記の(式4)で定義できる。
γiH″=[γiφ(h0 ) γiφ(h1 ) γiφ(h2 )・・γiφ(hb-1 )]
……… (式4)
ここで、φは加法のもとでGF(2r)からGF(2(R-q)/2)への準同形写像(homomorphism)である。すなわち、φ:GF(2r)→GF(2(R-q)/2)である。また、バイトはbビットの長さを有するが、最後の2バイトは(R−q)/2ビットの長さを有する。(R−q)/2>bでは、bビットより大きな値を有するが、例外的にこれも他のバイトと同様にバイトとして扱うこととする。このとき、最大符号長Nは、N=b(2(R-q)/2−1)+R−qである。
次に、前記(式1)に示したパリティ検査行列(H)で表される符号が、前述したSt/bEC-Dt/bEDの機能(SbEDの機能を含む)を有していることを具体的に示す。
(1)1スポッティバイト誤り訂正(St/bEC)の機能を有している証明:
バイト中のtビットの誤りを訂正する1バイト内tビット誤り訂正である1スポッティバイト誤り訂正は、前述したシンドローム生成回路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に基づいて1スポッティバイト誤り訂正を行うことが可能か否かは、パリティ検査行列(H)と誤りパターン(E)とから計算されるE・HTの値の結果によって決定できるものである。
そこで、前述したように、行列H′がtビット誤り訂正・2tビット誤り検出符号のパリティ検査行列に等しいこと、および行列H″がtビット誤り検出符号の検査行列に等しいことから、1バイト中のtビットまでの誤りの集合をEt/bとするとき、これに含まれる任意の異なる誤りe1、e2およびi≠jに対して、下記の(式5)が明らかに成立することがわかる。
Figure 2005176244
また、語中の最後のそれぞれ(R−q)/2ビットを有する2バイトにおけるt/b誤りe10、e20と、この2バイトを除く他のbビット幅を有するバイトにおけるt/b誤りe1に関して、下記の(式6)〜(式8)に表されるシンドロームの関係も明らかに成立する。なお、e10及びe20のシンドロームとの値を比較したり(式8)、e10またはe20のシンドロームと最後の2バイト以外のバイトのシンドロームとの値を比較したり(式6、式7)しているのは、前記(式1)に示すパリティ検査行列Hの最後の2列が単位行列Iz及び零行列0x×yより構成されている特殊性を考慮して個別に証明することが必要なためである。
Figure 2005176244
受信語(V′)32が元々の送信語(V)31に対して誤りパターン(E)を含んでいない場合には(すなわち、E=0)、シンドローム(S)33は明らかにS=0となるので、シンドローム(S)が非零のときは、受信語(V′)32には誤りが含まれていることになる。そして前記証明では、1バイト中のt/b誤りの非零シンドロームは、他バイトにおけるt/b誤りの非零シンドロームと異なることが示された。これより、本実施形態の(式1)で示すパリティ検査行列(H)が、誤りを有した互いに異なるバイトにおけるt/b誤りを訂正するSt/bECの機能を有していることを証明できたことになる。
(2)2スポッティバイト誤り検出(Dt/bED)の機能を有している証明:
次に、このパリティ検査行列(H)が、2バイトのt/b誤り検出の機能を有していることを示すためには、1バイトにおけるt/b誤りのシンドロームが他の任意の2バイトのt/b誤りによるシンドロームと一致しないことを証明する必要がある。以下、これを4つの条件に分けて証明する。
(a)受信語V′を構成する最後の3バイト以外のバイト間での成立:
いま、受信語V′を構成する最後の3バイトを除いた他のバイト(各バイトのバイト幅はbビット)に対して、異なる3バイト間にe1、e2、e3のt/b誤りがそれぞれ生じたとき、シンドロームSとして下記の(式9)の関係が成立したと仮定する。
Figure 2005176244
前記の(式9)より、e1H′T+e2H′T=e3H′Tが成立し、行列H′がtビット誤り訂正・2tビット誤り検出符号のパリティ検査行列であることから、e1+e2=e3が成立する。この両辺に右からH″を乗算すれば、e1H″+e2H″=e3H″が得られる。
1H″、e2H″、e3H″をそれぞれx、y、zと表すと、前記の(式9)より次の(式10)〜(式12)の関係がそれぞれ成立することがわかる。
x+ y = z ……… (式10)
γix+γjy =γk z ……… (式11)
γ2ix+γ2jy =γ2kz ……… (式12)
前記(式11)の両辺を2乗すると、γ2i2+γ2j2=γ2k2となり、(式12)とから次の(式13)の関係が導かれる。
γ2i2+γ2j2=(γ2kz)z=(γ2ix+γ2jy)z …… (式13)
さらに、(式13)の右辺のzに対し、前記(式10)のzを代入することにより、最終的に次の(式14)が得られる。
γ2ixy+γ2jxy=0 ……… (式14)
前記(式14)よりi=jが導かれるが、これは前述した前提条件(i≠j)と矛盾した結果となってしまう。したがって、e1、e2、e3のt/b誤りに対するシンドロームSに関する前記(式9)に示した仮定が成立しない、つまり、1バイトにおけるt/b誤りのシンドロームが他の任意の2バイトのt/b誤りによるシンドロームと一致しないこととなる。これから、受信語(V′)32の最後の3バイトを除くbビット幅を有するバイト間において、2バイトのt/b誤りを検出することができることになる。
(b)受信語V′を構成する最後の3バイト中の1バイトと、他の2バイト間の成立:
次に、受信語(V′)32の最後の3バイト中の1バイトとこの3バイトを除くその他の2バイト(iバイト目及びjバイト目)間に、前記と同様な3バイトの誤りが生じたとき、そのシンドロームの関係として下記に示す(式15)〜(式17)が成立したと仮定する。ここで、e1、e2、e3は、bビット幅を有するEt/bに属するt/b誤りであり、e10、e20はそれぞれ(R−q)/2ビット幅を有する受信語(V′)32の最後の2バイトに対する誤りである。
Figure 2005176244
前述した(式9)から(式14)までの処理と同様に、各項をx、y、zに置き換えて変形操作を行えば、前記(式15)〜(式17)に示した関係式は、前記(式10)に示した関係x+y=zとともに、下記の(式18)及び(式19)に示す関係が成立する。
γ2ix+γ2jy =0 ……… (式18)
γ ix+γ jy =0 ……… (式19)
前記(式19)の両辺を2乗して変形し、さらに前記(式18)とから、下記の(式20)の関係が得られる。
γ2i2+γ2j2 =(γ2ix+γ2jy)x+γ2j2+γ2jyx
=γ2jy(y+x)=0 ……… (式20)
前記(a)の場合と同様、前記(式20)からx=yが導かれることとなり、前提条件(i≠j)と矛盾した結果となってしまう。したがって、e1、e2、e3およびe10、e20のt/b誤りに対するシンドロームSに関する前記(式15)〜(式17)に示した仮定が成立しないこととなる。これから受信語V′の最後の3バイトバイト中の任意の1バイトのt/b誤りのシンドロームは、この3バイトを除くその他の任意の2個のバイトにおけるt/b誤りによるシンドロームと一致することはなく、このような2バイトのt/b誤りを検出することができることになる。
(c)受信語V′を構成する最後の3バイト中の2バイトと、他の1バイト間の成立:
また、受信語V′の最後の3バイト中の2バイトのt/b誤りによるシンドロームとこの3バイトを除く他の1バイト(iバイト目)におけるt/b誤りのシンドロームとの関係において、下記の(式21)〜(式23)に示す関係が成立したとする。




Figure 2005176244
前記(式21)においてe3γ2iH″T=0、前記(式22)においてe3γiH″T=0、前記(式23)において、e3H′T=0(以上の0は2元列ベクトル)が成立するが、同様にこれらはいずれも矛盾した結果となっており、前記(式21)〜(式23)に示す関係は成立しないこととなる。よって、受信語V′の最後の3バイトにおける2バイトのt/b誤りのシンドロームは、この3バイトを除く他の1バイトにおけるt/b誤りのシンドロームと一致することはなく、この間の2バイトのt/b誤りを検出することができることになる。
(d)受信語V′を構成する最後の3バイト間の成立:
最後に、受信語V′の最後の3バイト間において、下記の(式24)に示す関係が成立したと仮定する。
Figure 2005176244
明らかに、この関係は矛盾した結果となっており、成立しないこととなる。よって、受信語V′の最後の3バイト間における2バイトのt/b誤りを検出することができることになる。
したがって、前述した(a)〜(d)における証明結果より、前記(式1)に示すパリティ検査行列(H)が、受信語(V′)32に対する任意の2バイト誤りを検出するDt/bEDの機能を有することを証明できた。
(3)1バイト内のtビットを越える誤りを検出する(SbED)の機能を有している証明:
前記(1)ではSt/bEC機能を、前記(2)ではDt/bEDの機能を有していることを証明したが、行列H′をb行b列の単位行列Ibとする場合、前記(式1)に示すパリティ検査行列(H)は、前述したSt/bEC-Dt/bEDの機能に加えて、単一のbビットのバイト誤りを検出する機能をも有している。これは、次のようにして証明することができる。
つまり、前記(式1)に示すパリティ検査行列(H)の第一行についてみれば、受信語(V′)32の最後の2バイトに相当する部分を除く要素にはすべて行列H′が存在しているが、この行列H′がb×bの単位行列Ibであれば、単一バイト内に生じたいかなる誤りパターン(E)に対しも、シンドロームSI=E・Ib=E≠0となる。
一方、前述したように、受信語(V′)32が誤りパターン(E)を含んでいない場合には(すなわち、E=0のとき)、シンドローム(S)は明らかにS=0となることから、シンドローム(S)が非零であれば、誤りが発生していると判断できる。したがって、行列H′をb行b列の単位行列Ibとした場合、単一バイト内に生じた誤りパターン(E)を検出することができるようになる。
特に、tより大きい1バイト誤りでは、誤りパターン(E)の重み(つまり、誤りパターン(E)に含まれている“1”の数)は明らかにtよりも大きいことから、t/b誤りにおけるシンドロームSIとは明らかに異なって1バイト内のtビットを越える誤りを検出することができることになる。また、最後の2バイトのうち、1バイトにtビットを越える誤りが生じたときも、同様の考えで明らかなように、1バイト内のtビットを越える誤りを検出することが可能である。
したがって、前記の(式1)に示すパリティ検査行列(H)において、H′=Ibとしたとき、(式1)に示すパリティ検査行列(H)が、受信語(V′)32に対して単一のbビットのバイト誤りを検出するSbEDの機能を有していることを証明できたことになる。
以上より、パリティ検査行列(H)は、H′=IbのときSt/bEC-Dt/bED-SbED機能を有する符号となることを証明することができた。
ここでは、具体的な符号パラメータを与えて、前記(式1)に示すパリティ検査行列(H)を構成できることを示す。なお、このパリティ検査行列(H)はあくまでも一例であってこれに限定されないことは言うまでもない。
いま、読み書きデータ幅として8ビットを有するメモリ素子を使用したメモリシステムを対象に、t=2、b=8のパラメータを与えてパリティ検査行列(H)を構成することとする。このとき、Min(3t,b)=Min(6,8)=6より、行列H′はランク6を有して符号長8ビットを有する6ビット誤り検出符号の検査行列を構成すればよい。この一例を下記の(式25)に示す7×8の行列とする。これは7ビット誤り検出の能力を有する符号の検査行列でもある。
Figure 2005176244
次に、行列H″はランクt=2以上の行列であり、最小ハミング距離が3の符号として1ビット誤り訂正符号(または2ビット誤り検出符号)の検査行列を使用することとする。その一例を下記の(式26)に示す4×8の行列とする。これは結果的に最小ハミング距離が4の符号となっている。
Figure 2005176244
次に、γを原始多項式g(x)=x4+x+1の根とすると、γは4次の列ベクトルγ=(0100)Tと表現できる。つまり、γのべき表示γiとべクトル表示との対応を示せば、次のようになる。
γ0=(1000)T、 γ1=(0100)T、 γ2=(0010)T
γ3=(0001)T、 γ4=(1100)T、 γ5=(0110)T
γ6=(0011)T、 γ7=(1101)T、 γ8=(1010)T
γ9=(0101)T、 γ10=(1110)T、 γ11=(0111)T
γ12=(1111)T、 γ13=(1011)T、 γ14=(1001)T
これより、前記の(式26)に示す行列H″は、H″=[γ0γ4γ8γ14γ10γ13γ12γ7]と表すことができる。よって、前記の(式1)に示したパリティ検査行列(H)は、このH′及びH″、γiを使用して、具体的な(136、121)S2/8EC-D2/8ED符号を構成することができるようになる。これを図3に示す。なお、図3に示すように、パリティ検査行列(H)のH′及びH″に相当するビット箇所を明確化するため、そのビット境の箇所には実線を引いて示している。
いま、パリティ検査行列(H)の構成要素であるγ2H″が、図3に示す実際のビット値と対応しているかを具体的に確認する。前述したように、H″=[γ0γ4γ8γ14γ10γ13γ12γ7]より、γ2H″=γ20γ4γ8γ14γ10γ13γ12γ7]=[γ2γ6γ10γ1γ12γ15γ14γ9]となる。このべき表示をベクトル表示(例えば、γ0=(1000)T等)に変換すれば図3に示すa部分に相当し、このa部分は明らかにパリティ検査行列(H)のγ2H″部分である。同様にして、パリティ検査行列(H)における他の構成要素についてもべクトル表示に変換すれば、全体として図3に示すビットの構成となる。
次に、b=8のもとで、t=3の場合のパリティ検査行列(H)を構成する。このとき、Min(3t、b)=Min(9,8)=8より、H′はランク8を有する行列として、8×8の単位行列を適用することができる。しかしながら、パリティ検査行列(H)における全体の検査ビットを削減する観点より、特例として、ランク7を有する前記の(式24)に示す行列を適用することにする。ここで、ランク7を有する前記の(式24)に示す行列を適用することが可能であるか否かについては、前述の証明に準じて適用可能であることを示すことができるが、ここではその証明を省略する。
次に、H″はランク3以上の行列であり、最小距離が4の符号として1ビット誤り訂正・2ビット誤り検出符号(または3ビット誤り検出符号)の検査行列を使用すればよい。このとき、前記の(式26)に示す行列H″は、最小距離が4の符号であることからこれを使用すればよい。以上より、b=6、t=3のパリティ検査行列(H)に対しては、b=8、t=2の場合の図3に示したパリティ検査行列H(136、121符号)と同一となる。
また、t=4に対しては、Min(3t、b)=8より、行列H′はランク8を有する8×8の単位行列を使用する。一方、H″はランク4を有する4ビット誤り検出符号の検査行列であり、一例として下記の(式27)に示す6×8の行列を構成することができる。
Figure 2005176244
このとき、行列H″は、GF(26)上の原始多項式、例えばg(x)=x6+x+1の根をγとして、前述したg(x)=x4+x+1のときと同様に構成することができる。
また、t=5、6、7については、行列H″としてtビット誤り検出符号を適用すればよい。そして、8列を有する行列を構成することから、これらすべてのtに対し、結果的に、前記の(式25)に示した7×8の7ビット誤り検出符号の検査行列をH″として使用すればよい。
なお、以上は最近最も使用されている、バイト幅b=8ビット入出力を有する半導体メモリ素子を対象としてパリティ検査行列H(符号)の一例を構成して説明したが、他にも多く使用されている多ビット入出力素子、例えば、b=16ビット入出力を有する素子等に対しても、St/bEC-Dt/bED符号を同様に構成することができることは明らかである。
このように、前記ではパリティ検査行列(H)の構成例を示したが、次に、このパリティ検査行列(H)を用いて処理する符号化と復号の具体的な方法とその回路構成について示す。
(1)符号化の方法及びこれを実現する回路の構成について
まず、図1に示す符号化回路2が行う符号化方法について説明する。
符号化回路2は、入力情報データD(行ベクトル)30と、パリティ検査行列(H)の情報部HRとを用いて、検査情報C(行ベクトル)を生成する。この検査情報(C)の生成は、下記の(式28)により求めることができる。
C=D・HR T ……… (式28)
具体的には、符号化回路2は、入力情報データ(D)30の情報ビット長64ビット、及び検査ビット長15ビットを基に、図3に示したパリティ検査行列Hである(136、121)S3/8EC-D3/8ED符号を生成した後、さらに、情報部の後半56ビットに相当する列ベクトル56列と検査部で重み1を有さない1列とを足し合わせた合計57列を削除した符号ビット長79ビット、情報ビット長64ビットを有する(79、64)S3/8EC-D3/8ED符号を生成する。図4は、前記(79、64)S3/8EC-D3/8ED符号を示している。
次に、前記の(式28)を基に、符号化回路2は15ビットの検査情報(C)を生成する。前記の(式28)に示すC=D・HR Tから明らかなように、例えば、検査情報(C)における検査ビットC0を作成するには、図4に示す(79、64)S3/8EC-D3/8ED符号の行列の1行目において、後ろの15×15の単位行列を除いた情報部HR部分で“1”が存在する箇所に対応する情報ビットのGF(2)上の和(すなわち、2を法とする和:mod2)をとる演算を行えばよい。
例えば、検査ビットC0を求める場合、情報部HR部分で“1”が存在しているのは、d0、d7、d8、d15、d16、d23、d24、d31、d32、d39、d40、d47、d48、d55、d56、d63であり、これら16個のビットについて2を法とする和(mod2)をとればよい。これを実現するには、図5に示すように、前記16ビットを多入力パリティチェック回路20(0)〜20(14)に入力する回路を構成すればよく、この多入力パリティチェック回路20(0)の出力が検査ビットC0となる。他の検査ビットC1〜C14についても検査ビットC0と同様にして生成することができ、C0〜C14を対象にした全部で15ビットの検査ビットを並列に生成する符号化回路2の構成を図5に示す。
そして、符号化回路2によって生成した検査情報(C)を、入力情報データ(D)30に付加して生成した情報[D、C]が符号語を構成し、これがメモリ3に書き込まれる送信語(V)31となる。
(2)復号の方法及びこれを実現する回路の構成について
次に、送信語(V)31に誤りが生じたとき(受信語32に誤りが含まれているとき)、その誤りに対する訂正・検出処理が、図4に示す(79、64)S3/8EC-D3/8ED符号を用いて生成されるシンドロームSの値に基づいて可能なことを示す。
前記(79、64)S3/8EC-D3/8ED符号が、前記の(式1)に示した3段構成を有するパリティ検査行列(H)を基礎にして構成されていることから、上段より得られるq=7ビットのシンドロームをSI、中段より得られる(R−q)/2=4ビットのシンドロームをSII、下段より得られる(R−q)/2=4ビットのシンドロームをSIIIとする。
これらの情報を用いて、次のように誤りの訂正、検出を行うようにしている。受信語(V′)32とパリティ検査行列(H)とから、シンドローム(S)33は下記の(式29)により求めることができる。
V′・HT=S=[SIIIIII] ……… (式29)
ここで、SI ∈GF(2q)はq次の行ベクトルであり、SII、SIII∈GF(2(R-q)/2)はそれぞれ(R−q)/2次の行ベクトルである。
このとき、t/b誤りパターン(E)とシンドローム(S)との間には、以下に示す関係が存在し、これによって復号回路4は誤りの訂正および検出ができる。
図6は、復号回路4における誤りの訂正および検出の処理ロジックを示したフローチャートである。
(1)SI=0のとき、
(1−1)SII=0、SIII=0の場合:受信語V′は正しいと判定する(ステップS601)。
(1−2)SII=0、SIII≠0の場合:最後のバイトに誤りが存在し、E=SIIIよりSIIIを用いて訂正できる(ステップS602)。
(1−3)SII≠0、SIII=0の場合:最後から2番目のバイトに誤りが存在し、E=SIIよりSIIを用いて訂正できる(ステップS603)。
(1−4)SII≠0、SIII≠0の場合:訂正できない誤りを検出したと判定する(ステップS604)。
(2)SI≠0のとき、
(2−1)SII≠0、SIII=0、またはSII=0、SIII≠0の場合の場合: 受信語V′中に訂正できない誤りを検出と判定する(ステップS606)。
(2−2)SII=0、SIII=0の場合:最後から3番目のバイトに誤りが存在したと判定する。このとき、E・H′T=SIを満足するt/b誤りEを求めることにより、このバイトを訂正できる。また、このような関係を満足しない誤りEであるとき、訂正できない誤りを検出したと判定する(ステップS607)。
(2−3)SII≠0、SIII≠0の場合:E・H′T=SI、E・(γiH”)T=SII、かつE・(γ2iH”)T=SIIIがすべて成立するとき、iバイト目にこれらの関係を満足するt/b誤りEが生じたと判定し、E・H′T=SIより誤りEを求めて訂正する。このとき、これらの関係を満足するiが見つからなかったとき、またはこのような関係を満足するt/b誤りEが求められなかったとき、訂正できない誤りを検出したと判定する(ステップS605)。
前述した復号方法を実現する復号回路4の概略構成を図7に示す。
図1に示したように、復号回路4は、シンドローム生成回路1および誤り訂正回路5等から構成されている。そして、図7に示すように、誤り訂正回路5は、シンドローム(S)を基にしてビット誤りポインタ37及びバイト誤りポインタ36を生成するシンドロームデコード回路6、前記バイト誤りポインタ36を基にして誤り訂正の可否を判断する誤り検出回路7、前記ビット誤りポインタ37を基にして所定のビット値を反転させる反転回路8を含んでいる。
次に、復号回路4で行われる動作手順の概略を説明する。まず、シンドローム生成回路1は、Nビットからなる受信語(V′)32を入力すると、Rビットのシンドローム(S)33を生成する。次に、生成されたRビットのシンドローム(S)33は、一方でシンドロームデコード回路6に入力され、他方で誤り検出回路7に入力される。
シンドロームデコード回路6では、詳細は後述するが、入力されたシンドローム(S)の多段構成S=[SIIIIII]を利用し、各Si(i=I、II、III)の値およびバイト幅のバイト誤りパターン(E)を基にして、[[N/b]]([[x]]はxを超える最小の整数)本のバイト誤りポインタ(EB0、EB1、……、EB[[N/b]]-1)36、および誤りのビットを指摘するKビットのビット誤りポインタ(e0、e1、……、ek-1)37を生成する。
他方、誤り検出回路7では、詳細は後述するが、シンドロームデコード回路6で生成されたバイト誤りポインタ36およびシンドローム33を基にして、図6に示すロジックに従って誤り訂正が可能であるか否かを判別する。前記判別の結果、誤り訂正が不可能とみなされたときは訂正不可能誤り検出信号であるUCE(Uncorrectable Error)35の値を出力するようにしている。例えば、前記UCE35の値が“1”であれば、誤り検出回路7は2個のt/b誤りを含む訂正不可能な誤りを検出したことを示している。
また、反転回路8は、シンドロームデコード回路6で生成されたKビットのビット誤りポインタ(e)37、および受信語(V′)32中のKビットからなる情報ビットを基にして、ビット誤りポインタ(e)37に対応した受信語(V′)32のビットを反転するようにしている。そして、反転回路8は、Kビットの誤り訂正された正しい情報語V*を出力情報データ34として出力する。
次に、シンドローム生成回路1、シンドロームデコード回路6、誤り検出回路7、および反転回路8の具体的な構成例を、図4に示すS3/8EC-D3/8ED符号を用いて説明する。
(1)シンドローム生成回路1の構成
ここでは、シンドローム生成回路1の構成について詳細に説明する。
まず、シンドローム生成回路1では、N=79(=64+15)ビットからなる受信語(V′)32を、下記の(式30)に示すように表現したとき、この受信語(V′)32を入力して下記の(式31)に示すようなS0、S1、…S14からなるR=15ビットのシンドロームSを生成する。前述したように、図4に示すS3/8EC-D3/8ED符号のパリティ検査行列が3段構成を有することから、これに対応してシンドロームSも3つの部分に区分けし、SI=(S0123456)、SII=(S78910)、SIII=(S11121314)とする。
V′=(d0′、d1′、…、d63′、c0′、c1′ …、c14′) ……(式30)
S=( SI | SII | SIII
=(S0123456|S78910|S11121314)…(式31)
前記の(式29)に示したように、シンドロームS=V′・HTより、転置したパリティ検査行列(HT)の各列は入力する情報に対応し、例えば、行列(HT)の第0列は入力情報のd0′に対応している。また、最後の単位行列は入力情報データ30の検査情報に対応し、例えば、この部分における最初の列は検査情報のc0′に対応している。そこで、シンドローム(S)の各ビットを生成するには、符号であるパリティ検査行列(HT)の各行方向ごとに、“1”を有するビットに対応する受信語(V′)32の受信情報をGF(2)上で加算(mod2の計算)すればよい。
図8は、図4に示したS3/8EC-D3/8ED符号のパリティ検査行列を基にして構成したシンドローム生成回路1の一例である。図8に示すように、本実施例では、シンドローム生成回路1は15個の多入力パリティチェック回路21(0)、…21(14)から構成され、各多入力パリティチェック回路21(x)、(x=0,…,14)には前記S3/8EC-D3/8ED符号のパリティ検査行列の対応する各行のビット“1”を有する受信情報(dy′およびcx′)、(y=0,…,63)が入力される。そして、前記入力された受信情報についてmod2の計算を行い、その結果をSxとして出力するようになっている。
なお、このシンドローム生成回路1の構成は、図5に示した検査情報(C)を生成するための符号化回路2の構成と基本的に同一である。検査情報(C)の生成とシンドローム(S)の生成とにおける唯一の違いは、符号化回路2の多入力パリティチェック回路20(x)が、入力情報データ(D)より選択された受信情報(つまり、dy)についてmod2の計算を行うのに対して、シンドローム生成回路1の多入力パリティチェック回路21(x)は、入力情報データ(D)の他に検査情報(C)より選択された受信情報(つまり、dy′およびcx′)についてmod2の計算を行うようにしている点にある。
具体的には例えば、シンドロームSのビットS5を作成するには、79ビットの受信語d0′、…、d63′、c0′、…、c14′のうち、図4に示すパリティ検査行列の上から第6行目において「1」が存在する箇所に相当する17ビットの受信情報d5′、d7′、d13′、d15′、d21′、d23′、d29′、d31′、d37′、d39′、d45′、d47′、d53′、d55′、d61′、d63′、c5′の値について、2を法とする和(mod2)をとればよい。図8の多入力パリティチェック回路21(5)は、前記17ビットの受信情報が入力されて値S5を出力していることを示している。シンドロームSの他のビットSXについても同様である。
(2)シンドロームデコード回路6の構成
次に、シンドロームデコード回路6について説明する。シンドロームデコード回路6の全体構成を図9に示す。図9に示すように、シンドロームデコード回路6は、誤りパターン生成回路61、バイト誤りポインタ生成回路62(0)…62(7)、62(P0)、62(P1)、62(P2)(以下、代表として62(x)と称する)、バイト内ビット誤りポインタ生成回路63(0)…63(7)(以下、代表として63(x)と称する)を備えている。
バイト誤りポインタ生成回路62(x)は、誤りがどのバイトに生じたかを出力する回路である。バイト誤りポインタ生成回路62(x)は、検査情報も含めてバイトごとに構成され、バイト誤りポインタ生成回路62(0)〜62(7)は、情報バイト0から情報バイト7に対応し、バイト誤りポインタEB0〜EB7を出力する。また、バイト誤りポインタ生成回路62(P0)、62(P1)62(P2)は、検査バイト0、検査バイト1、検査バイト2に対応し、バイト誤りポインタEBP0〜EBP2をそれぞれ出力する。
また、バイト内ビット誤りポインタ生成回路63(x)は、各バイト内のどのビットが誤りであるかを出力する回路である。バイト内ビット誤りポインタ生成回路63(x)は、情報バイト毎に構成され、対応するバイト誤りポインタEB0〜EB7をそれぞれ入力する。つまり、バイト内ビット誤りポインタ生成回路63(0)〜63(7)は、情報バイト0〜情報バイト7にそれぞれ対応し、各バイト内のどのビットが誤りかを指摘する各8ビットのバイト内ビット誤りポインタEb0〜Eb7を出力する。ここで、検査情報部分に生じた誤りについても、符号機能として当然ながら同様に訂正できるが、復号後において検査情報は一般的に使用しないことが多い。このため、本実施例では、検査情報部分に誤り発生している場合であってもあえて訂正せずに、シンドロームデコード回路6は検査情報に対応したビット誤りポインタを出力しないこととしている。このため、図9には、検査ビット誤りポインタが出力される記載になっていない。なお、シンドロームデコード回路6が検査情報に対応したビット誤りポインタを出力するように構成してもよい。
シンドロームデコード回路6は、複数個のバイト誤りポインタ生成回路62(x)及び複数個のバイト内ビット誤りポインタ生成回路63(x)をそれぞれに並列して動作させ、K=64ビットの情報ビット長を有する受信情報に対して、64ビットのビット誤りポインタを最終的に出力する。
また、誤りパターン生成回路61は、シンドロームSのSI部分を基にバイト幅の誤りパターンを作成する回路である。誤りパターン生成回路61からは、バイト幅(この例では8ビット)のバイト誤りパターンE38が出力される。なお、本実施例の場合、シンドロームSの上位7ビットがSI、中位4ビットがSII、下位4ビットがSIIIに相当している。
シンドロームデコード回路6の処理をより詳しくみると、図9に示すように、誤りパターン生成回路61は、R=15ビットのシンドロームSのうち、論理的処理を施した上位7ビットからなるSIを入力する。次に、誤りパターン生成回路61は、バイト誤りパターン(E)38を生成して、これをバイト誤りポインタ生成回路62(x)及びバイト内ビット誤りポインタ生成回路63(x)へ出力する。
一方、シンドロームSのうち、残りのSII、SIIIについては、バイト誤りポインタ生成回路62(x)に入力される。
バイト誤りポインタ生成回路62(x)は、入力されたバイト誤りパターン(E)38とSII、SIIIとから、バイト誤りポインタ(EB0〜EBp2)36を生成する。さらに、前記生成されたバイト誤りポインタ36のうちのEB0〜EB7とともに、バイト誤りパターン(E)38が、バイト内ビット誤りポインタ生成回路63(x)に入力され、64ビットのビット誤りポインタ(Eb0〜Eb7、つまりe0〜e63)が生成される。
次に、バイト誤りパターン生成回路61の構成例を具体的に示す。図10は、図4に示すS3/8EC-D3/8ED符号のパリティ検査行列に対し、得られた15ビットのシンドロームSのうち7ビットのシンドロームSI=(S0123456)を用いて、8ビットの誤りパターンE=(E01234567)を生成する回路である。
前述したように、この誤りパターン(E)とシンドローム(SI)との関係は、SI=E・H′Tが成り立っている。また、前記(式25)に示す7行8列の行列H′の構成より、次のことが言える。
この符号はt=3であることから、ある1バイトに3ビット以下の誤りが存在し、シンドロームSIの「1」の数(すなわち重み)が1,2または3のとき、8ビットのバイト誤り中最後のビットには誤りがなく(すなわちE7=0)、他の7ビットに誤りが存在してこれはシンドロームSIと一致する。つまり、E0=S0、E1=S1、E2=S2、E3=S3、E4=S4、E5=S5、E6=S6、E7=0となる。
これは、前記の(式25)に示す行列H′の構成が、前部に7×7の正方行列、後部にすべて「1」を要素とする1列が存在することによる。つまり、E7=0であって他の7ビット中に誤りがあれば、この誤りは7ビットのシンドロームSI=(S01…S6)のパターンに等しくなる。また、最後のビットに誤りがあって(すなわちE7=1)、他の7ビット中に1ビットまたは2ビットの誤りが存在するとき、他の7ビットの誤りパターンは前記7ビットからなるSIをそれぞれ反転したパターンに一致する。つまり、E0=<S0>、E1=<S1>、E2=<S2>、E3=<S3>、E4=<S4>、E5=<S5>、E6=<S6>、E7=1となる。ここで、<Si>はSi(i=0、1、…、6)を反転したビット情報を表す。すなわち、E7=1のときで他に1ビットまたは2ビットの誤りがあるとき、シンドロームSIの重みは6または5となるはずで、これを反転した<Si>の重みは1または2となる。また、この反転した<Si>が最後のビット誤りを除く7ビットの誤りパターンとなる。
以上の関係をハードウェア構成としての具体的な回路によって実現したものが図10に示す誤りパターン生成回路61である。図10に示す7×7ソート回路40a、40bは、入力される7ビットのシンドロームSI情報中の重み(「1」の数)を数え、その重みの数だけ出力の上位ビットから「1」を連続して表記する回路である。例えば、7ビットの入力情報であるSIに「1」が3個存在する場合、この回路の出力7ビットのうち上位3ビットはすべて「1」を、残りの4ビットはすべて「0」を出力する回路である。
7×7ソート回路40a、40bをさらに具体化した回路を図11に示す。図11に示すように、SIの入力情報であるS0からS6の7ビットの入力情報がソートされ、2入力ORゲート回路と2入力ANDゲート回路とが対になって構成された2入力2出力回路をセルとして、SIの7入力に対してこのセルを多段に接続して構成している。このソート回路は、一般に、nビット入力中に「1」の数がx個存在すれば、nビット出力のうち上位x個に「1」を出力し、残りの出力はすべて「0」を出力する回路である。なお、この回路の一般的構成は、S.J.Piestrak,”The Minimal Test Set for Multioutput Threshold Circuits Implemented as Sorting Networks” IEEE Transactions on Computers, Vol.42, No.6, pp700-712, June 1993に述べられている。
図10に示す7入力7出力の回路である7×7ソート回路40a、40bでは、このセルを16個(すなわち32ゲート)使用し、最大6段のセル(6ゲート段)で実現することが可能である。例えば、入力情報SIとして(S0123456)=(0010110)のような重み3の情報のとき、出力は(W0123456)=(1110000)となる。図10では、入力情報SIに重み1、2または3を有する場合(すなわちE7=0のとき)、および反転ゲート48でSIを反転した<SI>に重み1または2を有する場合(すなわちE7=1のとき)に対して、それぞれ7×7ソート回路40a、40bを適用する。
特に、図10の上部に示す7×7ソート回路40aは、SIを入力する場合のソート回路であり、出力としてW012の上位3ビットの論理和を3入力ORゲート回路41で実行する。ここで、W0、W1、W2の少なくとも何れか1つは「1」であり他のWiがすべて「0」の場合、7ビットのシンドロームSIは、2入力ANDゲート回路43、さらには2入力ORゲート回路42を通り、E0からE6の7ビットの誤りパターン(E)となる。
また、図10中の下部に示す7×7ソート回路40bは、反転ゲート回路48から出力されたSIの反転情報<SI>の7ビットを入力する場合のソート回路である。反転情報<SI>に1ビットまたは2ビットの「1」が存在するとき、7×7ソート回路40bの出力W0、W1の上位2ビットの論理和を2入力ORゲート回路42で実行する。ここで、W0、W1がの少なくとも何れか1つは「1」であり他のWiがすべて「0」の場合、<S0>から<S6>のパターンをANDゲート回路43、さらにはORゲート回路42を通ったE0からE6の7ビットの誤りパターン(E)を得ることができる。
また、E7=1が出力されるのは、バイト中8ビット目に1ビットの誤りがある場合、またはこの8ビット目とさらに他の1ビットまたは2ビットの誤りがある場合である。よって、前者の場合、SIはすべて「1」であり、したがって、7ビットのSIを入力した7入力ANDゲート回路44の出力が「1」のときである。また、後者の場合、SIの反転情報に重み1または2が存在する場合であり、これは7×7ソート回路40bの上位出力W0、W1のORゲート回路42の出力が「1」で、かつ、他のWiがすべて「0」であることを示すNORゲート回路45の出力が「1」のときである。
したがって、これらのいずれかのとき、ORゲート回路42を通してE7=1を得ることができる。その他の場合、E7=0である。
一方、前記の(式1)に示すパリティ検査行列(H)の最上段に、b×bの単位行列Ibを用いて構成する場合、例えば、S3/8EC-D3/8ED-S8ED符号の検査行列の場合、明らかにSI=Eとなり、E01234567はS0123456にそれぞれ一致することになる。したがって、この場合、図10に示すような構成を有する誤りパターン生成回路61を備える必要がなく、バイト幅のバイト誤りパターン(E)38は、入力情報であるシンドロームSIをそのまま使用して、バイト誤りポインタ生成回路62(x)およびバイト内ビット誤りポインタ生成回路63(x)に入力するようにすればよい。
次に、バイト誤りポインター生成回路62(x)の具体的な回路構成の一例を示す。図12は、図4に示したS3/8EC-D3/8ED符号のパリティ検査行列に対する、バイト誤りポインタ生成回路62(x)の構成例を示している。ここでは特に、バイト誤りポインター生成回路62(1)が、バイト誤りポインタEB1を出力する例で説明するが、他のバイト誤りポインター生成回路62(x)も同様であることは言うまでもない。
前述したように、バイト誤りポインター生成回路62(1)は、誤りパターン生成回路61によりシンドロームSのSIから生成されたバイト誤りパターン(E)38、およびシンドロームSII、SIIIを入力することにより、バイト誤りポインタ(EB1)を生成する。ここで、情報バイトiにおいては、SII=E・(γiH″)TおよびSIII=E・(γ2iH″)Tが成立することから、この両方の関係が成立するときにのみ、この情報バイトiに誤りが存在することになる。今、i=1として、このバイト誤りポインターEBiを「1」に設定し、行列H″として前記の(式26)に示す行列を使用する。また、GF(2)上の4次の原始多項式g(x)=x4+x+1の根をγとする。このとき、前記の(式26)に示すH″は、γのべき乗で表すと、前述したように、次の(式32)のように表される。
Figure 2005176244
したがって、γH″、γ2H″は、それぞれ次の(式33)、(式34)で表すことができる。
Figure 2005176244
前記(式33)、(式34)で表される行列は、図4に示した検査行列の情報バイト1に相当する2段目(図4に示すA部分)、3段目の行列(図4に示すB部分)に一致していることを確認することができる。
これから、SII=E・(γH″)Tは、次の(式35)に示す関係がすべて成立していなければならない。
Figure 2005176244
ここで、前記(式35)中におけるプラス記号を丸印で囲った記号は、2を法とする和を示している。
また、SIII=E・(γ2H″)Tは、次の(式36)に示す関係がすべて成立していなければならない。
Figure 2005176244
前記(式35)、(式36)を満足する回路構成例が図12に示すようなバイト誤りポインター生成回路62(1)となる。図12に示すバイト誤りポインタ(EB1)は、情報バイト1に対応する誤りポインタであり、50は8入力NORゲート回路である。51はパリティチェック回路51である。図のパリティチェック回路51は、シンドロームSII、SIIIおよびバイト誤りパターン(E)38を入力した際、前記の(式35)、(式36)がすべて成立するときに、情報バイト1誤りポインタ(EB1)が「1」となるように構成されている。また、他のバイト誤りポインタ(EBx)の生成の場合も同様な回路構成によって実現することができる。
次に、バイト内ビット誤りポインタ生成回路63(x)の構成について述べる。このバイト内ビット誤りポインタ生成回路63(x)は、情報バイト8バイトの各バイトに対して同一の構成からなる回路を備えている。本実施例では、その一例を図13に示す。図13のバイト内ビット誤りポインタ生成回路は、情報バイト1に対する回路63(1)の場合を示している。図13に示すe8からe15は、情報バイト1内のビット8からビット15に対するそれぞれのビット誤りポインタである。図13に示すように、バイト内ビット誤りポインタ生成回路63(1)は、図10に示す誤りパターン生成回路61により生成されたバイト内の誤りを具体的に示す8ビットのバイト誤りパターン(E)38と、図12に示すバイト誤りポインタ生成回路62(1)により生成されたバイト1誤りポインター(EB1)とから、ビット誤りポインタe8〜e15を出力する。
すなわち、図13に示すE0からE7は、誤りパターン生成回路61の8ビットの出力バイト誤りパターン(E)から得られるE0、…、E7であり、AND回路70によりバイト1誤りポインター(EB1)とのAND論理がそれぞれ施されて、ビット誤りポインタe8からe15が生成されるようになっている。ここでは、情報バイト1に対する回路63(1)を例にして説明したが、他の情報バイトのビット誤りポインタについてもまったく同様である。
(3)誤り検出回路7の構成
次に、誤り検出回路7について述べる。この誤り検出回路7は、受信語(V′)32中にt/b誤りをそれぞれに有している2バイトの誤り、およびバイト中にtビットを越える誤り等、訂正することが不可能な誤りを検出する機能を有している。誤り検出回路7が前述したような訂正不可能な誤りを検出したとき、UCEの信号35を「1」として出力するようにしている。このための論理は次のように考えればよい。シンドロームSが非零であり、かつ図9に示すバイト誤りポインタ生成回路62(x)からのバイト誤りポインタEBXがすべて「0」である情報が入力されたとき、誤り検出回路7は、符号として何らかの誤りを検出したにもかかわらず、すべてのバイトにおいて訂正できる誤りが存在していないケースと判断する。つまり、訂正できない誤りが存在してこれを検出した場合であることを表すために、UCEの信号35を「1」に設定する。
前記論理内容を具体的に構成する回路例を図14に示す。図14に示す回路は、本実施例における図4に示したS3/8EC-D3/8ED符号のパリティ検査行列に対する誤り検出回路7になっている。図14に示すように、検出回路7は、15ビットのシンドロームSが入力される入力ORゲート回路75と、情報データの8バイトに対応する8ビットのバイト誤りポインタEB0〜EB7および検査情報の3バイトに対応する3ビットのバイト誤りポインタEBP0〜EBP2の計11ビットが入力される11入力NORゲート回路76と、前記入力ORゲート回路75および11入力NORゲート回路76の出力の論理積を施すANDゲート回路77とから構成されている。
(4)反転回路8の構成
最後に、反転回路8の構成について述べる。例えば、情報バイト1に対して具体的に構成した反転回路8を図15に示す。図15に示す反転回路8は、誤りの箇所を具体的に指摘された入力ビットについて、現在のビット値の反転を行って受信語(V′)32を訂正する回路である。前述したように、Kビットからなる受信情報に対して、各入力ビットに誤りが存在するか否かを示すビット誤りポインタEbは、バイト内ビット誤りポインタ生成回路63(x)によって生成されるので、このビット誤りポインタEbを用いて反転回路を構成すればよい。具体的には例えば、図15には、情報バイト1に対する反転回路を示している。
図15において、d8′〜d15′は、受信語(V′)32′の情報バイト1に相当する8入力ビットであり、d8 *〜d15 *は、前記情報バイト1に相当する各8ビットに対する訂正後の出力ビットである。反転回路8は、複数の排他的論理和回路81を有している。排他的論理和回路81は、前記情報バイト1に相当する入力ビットd8′〜d15′のそれぞれのビットに対して、対応するビット誤りポインタei(i=8、…、15)との排他的論理和をとり、例えば、ビット誤りポインタが「1」のとき、入力ビット値が反転されて訂正されることになる。なお、反転回路8は、各情報バイトにそれぞれ対応するようにするため合計8個の排他的論理和回路81を備えて構成されるようにしている。したがって、K=64ビットの受信語(V′)32の情報に対しては64個の排他的論理和回路が必要となる。
前述したように、本発明では、バイト中にtビットまでの誤りを有する1スポッティバイトの誤りを訂正し、かつ各2バイト中にtビットまでの誤りを有する2スポッティバイト誤りを検出する符号機能等に対して一般性のある符号構成を与えるとともに、誤りの訂正・検出が実現できる回路である符号化・復号回路構成を示して、検査情報が具体的に生成できること、および誤りが具体的に訂正・検出できることを示した。
また、以上の説明では、主としてメモリ装置に着目して本発明の適用を述べたが、本発明はそれに限定されるものではなく、例えば、このようなバイト単位で物理的に独立した回路、モジュール、装置から構成され、この中で限定した数の誤りが生じる可能性の高い一般の情報システム等に適用可能である。また、光通信回路、バス線回路等の通信または伝送のための回路、装置またはシステムにも適用可能である。
また、本発明の目的は、本実施の形態のスポッティバイト誤り訂正・検出装置の機能を実現するソフトウェアのプログラムコードを記憶した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ(又はCPUやMPU)が記憶媒体に格納されたプログラムコードを読みだして実行することによっても、達成されることは言うまでもない。
この場合、記憶媒体から読み出されたプログラムコード自体が本実施の形態の機能を実現することとなり、そのプログラムコードを記憶した記憶媒体及び当該プログラムコードは本発明を構成することとなる。プログラムコードを供給するための記憶媒体としては、ROM、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、CD−R、磁気テープ、不揮発性のメモリカード等を用いることができる。
また、コンピュータが読みだしたプログラムコードを実行することにより、前記本実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているOS等が実際の処理の一部又は全部を行い、その処理によって本実施の形態の機能が実現される場合も含まれることは言うまでもない。
本発明の一実施形態であるスポッティバイト誤り訂正・検出装置の概略構成を示すブロック図である。 スポッティバイト誤り訂正・検出装置における全体動作の処理手順を示すフローチャートである。 パリティ検査行列の一例であって、符号長N=136ビット、情報長K=121ビット、検査長R=15ビット、バイト長b=8ビット、バイト内訂正ビット長t=3ビットの符号パラメータを有する(136、121)S3/8EC-D3/8ED符号のパリティ検査行列を示す図である。 図3に示すパリティ検査行列を短縮した符号の一例であって、符号長N=79ビット、情報長K=64ビット、検査長R=15ビット、バイト長b=8ビット、バイト内訂正ビット長t=3ビットの符号パラメータを有する短縮(79、64)S3/8EC-D3/8ED符号のパリティ検査行列を示す図である。 図4に示す(79、64)S3/8EC-D3/8ED符号をもとに構成した符号化回路の具体例であり、K=64ビットのデータ入力情報からパリティ検査行列により15ビットの検査情報を生成する回路の構成図である。 本実施形態の復号回路による誤りの訂正および検出の処理ロジックを示したフローチャートである。 本発明で開示された機能を有する符号に対する復号回路の概略構成を示すブロック図である。 図4に示す(79, 64)S3/8EC-D3/8ED符号をもとに具体的に構成したシンドローム生成回路を説明する概念図である。 図4に示す(79、64)S3/8EC-D3/8ED符号に対するシンドロームデコード回路の構成を示すブロック図である。 図4に示す(79、64)S3/8EC-D3/8ED符号に対する誤りパターン生成回路の一例を示す構成図である。 図10に示す7×7ソーティング回路の一例を示す構成図である。 図4に示す(79、64)S3/8EC-D3/8ED符号に対する情報バイト1誤りポインター生成回路の一例を示す構成図である。 図4に示す(79、64)S3/8EC-D3/8ED符号に対する情報バイト1内ビット誤りポインター生成回路の一例を示す構成図である。 図4に示す(79、64)S3/8EC-D3/8ED符号に対する誤り検出回路の一例を示す構成図である。 情報バイト1に対する反転回路の一例を示す構成図である。
符号の説明
1 シンドローム生成回路
2 符号化回路
3 メモリ(または情報伝送路)
4 復号回路
5 誤り訂正回路
6 シンドロームデコード回路
7 誤り検出回路
8 反転回路
20 多入力パリティチェック回路
21 多入力パリティチェック回路
30 入力情報データ
31 送信語
32 受信語
33 シンドローム
34 出力情報データ
35 訂正不可能誤り検出信号(UCE)
36 ビット誤りポインタ
37 バイト誤りポインタ
40a 7×7ソート回路
40b 7×7ソート回路
41 3入力論理和(ORゲート)回路
42 2入力論理和(ORゲート)回路
43 2入力論理積(ANDゲート)回路
44 7入力AND/NANDゲート回路
45 5入力NORゲート回路
50 8入力NORゲート回路
51 5入力パリティチェック回路
61 誤りパターン生成回路
62 バイト誤りポインタ生成回路
63 バイト内ビット誤りポインタ生成回路
70 2入力ANDゲート回路
75 15入力ORゲート回路
76 11入力NORゲート回路
77 2入力ANDゲート回路
81 排他的論理和回路

Claims (18)

  1. 入力情報データを基に送信語を生成する符号化手段と、情報伝送路中で誤りが発生した前記送信語を受信語として入力して前記誤りを訂正または検出する復号手段とを備える誤り訂正・検出装置であって、
    前記符号化手段は、符号を表現するパリティ検査行列と前記入力情報データとを基に生成した検査情報を前記入力情報データに付加することにより前記送信語を生成し、
    前記復号手段は、前記パリティ検査行列を基に前記受信語のシンドロームを生成するシンドローム生成手段と、
    前記シンドローム生成手段により生成されたシンドロームを構成する複数のビットを、前記パリティ検査行列の構成に対応して複数のグループに分け、前記各グループ毎のビット値を基に前記受信語の誤りを訂正または検出する誤り訂正手段とを備えることを特徴とする誤り訂正・検出装置。
  2. 前記パリティ検査行列は、b(bは2以上の整数)ビットを1バイトとした際、前記入力情報データが複数のバイトから構成される場合に、1バイト中の任意のt(tは1以上b以下の整数)ビット誤りを訂正する機能を有することを特徴とする請求項1に記載の誤り訂正・検出装置。
  3. 前記パリティ検査行列は、b(bは2以上の整数)ビットを1バイトとした際、前記入力情報データが複数のバイトから構成される場合に、1バイト中の任意のt(tは1以上b以下の整数)ビット誤りを訂正する機能を有するとともに、任意の2バイトにおける各バイト内のtビット誤りを検出する機能を有することを特徴とする請求項1に記載の誤り訂正・検出装置。
  4. 前記パリティ検査行列は、b(bは2以上の整数)ビットを1バイトとした際、前記入力情報データが複数のバイトから構成される場合に、1バイト中の任意のt(tは1以上b以下の整数)ビット誤りを訂正する機能、および任意の2バイトにおける各バイト内のtビット誤りを検出する機能を有するとともに、1バイト中のtビットを超える誤りを検出する機能を有することを特徴とする請求項1に記載の誤り訂正・検出装置。
  5. 前記パリティ検査行列Hは、R行N列を有する次の行列Hであり、
    Figure 2005176244
    ただし、n=2(R-q)/2−1、0≦i≦n−1、0x×yはx行y列の零行列、Izはz×zの単位行列であり、前記H′は、H′=[h0′、h1′、…、hb-1′]に示すq次の列ベクトルhj′(0≦j≦b−1)から構成されるq行b列(q≦b)の2元行列であって3tまたはbのうちいずれか小さい値に等しいか大きいランク(Rank)を有し、すなわち、Rank(H′)≧Min(3t、b)を満足し、また、ランクがbに等しいときはランクbのb×b行列であり、ランクが3t<bのときは前記H′は最小ハミング距離3t+1を有するパリティ検査行列Hに等しくなり、
    また、前記H″は、H″=[h0 、h1 、…、hb-1 ]に示すランクt以上のr行b列の2元行列であって、前記h0 、h1 、…、hb-1 はそれぞれ有限体(ガロア体)GF(2r)上の要素で2元r次の列ベクトルであり、t=bであれば前記H″はb×bのランクbの行列であり、t<bであれば最小ハミング距離t+1を有する2元(b、b−r)のパリティ検査行列Hに等しくなり、また、R≧b+2rとしγを2を底とする(R−q)/2次の有限体GF(2r(R-q)/2)の原始元であって、φを加法のもとでGF(2r)からGF(2(R-q)/2)への準同形写像とするときに、γiH″=[γiφ(h0 ) γiφ(h1 ) γiφ(h2 )・・γiφ(hb-1 )]が成立するように構成されることを特徴とする請求項1〜4の何れか1項に記載の誤り訂正・検出装置。
  6. 前記誤り訂正手段は、前記シンドロームを構成する複数のビットを区分した複数のグループのうち第1のグループに含まれるビット値を基に、b(bは2以上の整数)ビットを1バイトとした際のバイト単位のバイト誤りパターンを生成するバイト誤りパターン生成手段と、
    前記バイト誤りパターン生成手段により生成したバイト誤りパターン、及び前記第1のグループ以外のグループに含まれるビット値を基に、前記受信語の何れのバイトに誤りが含まれているかを検出するバイト誤りポインタと、前記検出されたバイト誤りポインタの示すバイト内で何れのビットが誤っているかを検出するビット誤りポインタとを出力するシンドロームデコード手段とを備えることを特徴とする請求項1〜5の何れか1項に記載の誤り訂正・検出装置。
  7. 前記誤り訂正手段は、前記シンドローム生成手段により生成されたシンドロームと、前記シンドロームデコード手段により出力されたバイト誤りポインタとを基に、前記バイト中に訂正することができないビット誤りを検出する誤り検出手段を備えることを特徴とする請求項6に記載の誤り訂正・検出装置。
  8. 前記誤り検出手段は、前記受信語のビット誤りを訂正できないことを検出した場合に、訂正不可信号を出力することを特徴とする請求項7に記載の誤り訂正・検出装置。
  9. 前記誤り訂正手段は、前記シンドロームデコード手段により出力されたビット誤りポインタを基に、誤りビットに該当する前記受信語のビット値を反転させることにより訂正後の受信語を生成するビット反転手段を備えることを特徴とする請求項6〜8の何れか1項に記載の誤り訂正・検出装置。
  10. 入力情報データを基に送信語を生成する符号化処理と、情報伝送路中で誤りが発生した前記送信語を受信語として入力して前記誤りを訂正または検出する復号処理とを備える誤り訂正・検出方法であって、
    前記符号化処理は、符号を表現するパリティ検査行列と前記入力情報データとを基に生成した検査情報を前記入力情報データに付加することにより前記送信語を生成し、
    前記復号処理は、前記パリティ検査行列を基に前記受信語のシンドロームを生成するシンドローム生成処理と、
    前記シンドローム生成処理により生成されたシンドロームを構成する複数のビットを、前記パリティ検査行列の構成に対応して複数のグループに分け、前記各グループ毎のビット値を基に前記受信語の誤りを訂正または検出する誤り訂正処理とを備えることを特徴とする誤り訂正・検出方法。
  11. 前記符号化処理は、b(bは2以上の整数)ビットを1バイトとした際、前記入力情報データが複数のバイトから構成される場合に、1バイト中の任意のt(tは1以上b以下の整数)ビット誤りを訂正する機能を有する前記パリティ検査行列を生成することを特徴とする請求項10に記載の誤り訂正・検出方法。
  12. 前記符号化処理は、b(bは2以上の整数)ビットを1バイトとした際、前記入力情報データが複数のバイトから構成される場合に、1バイト中の任意のt(tは1以上b以下の整数)ビット誤りを訂正する機能を有するとともに、任意の2バイトにおける各バイト内のtビット誤りを検出する機能を有する前記パリティ検査行列を生成することを特徴とする請求項10に記載の誤り訂正・検出方法。
  13. 前記符号化処理は、b(bは2以上の整数)ビットを1バイトとした際、前記入力情報データが複数のバイトから構成される場合に、1バイト中の任意のt(tは1以上b以下の整数)ビット誤りを訂正する機能、および任意の2バイトにおける各バイト内のtビット誤りを検出する機能を有するとともに、1バイト中のtビットを超える誤りを検出する機能を有する前記パリティ検査行列を生成することを特徴とする請求項10に記載の誤り訂正・検出方法。
  14. 前記符号化処理により生成されるパリティ検査行列Hは、R行N列を有する次の行列Hであり、
    Figure 2005176244
    ただし、n=2(R-q)/2−1、0≦i≦n−1、0x×yはx行y列の零行列、Izはz×zの単位行列であり、前記H′は、H′=[h0′、h1′、…、hb-1′]に示すq次の列ベクトルhj′(0≦j≦b−1)から構成されるq行b列(q≦b)の2元行列であって3tまたはbのうちいずれか小さい値に等しいか大きいランク(Rank)を有し、すなわち、Rank(H′)≧Min(3t、b)を満足し、また、ランクがbに等しいときはランクbのb×b行列であり、ランクが3t<bのときは前記H′は最小ハミング距離3t+1を有するパリティ検査行列Hに等しくなり、
    また、前記H″は、H″=[h0 、h1 、…、hb-1 ]に示すランクt以上のr行b列の2元行列であって、前記h0 、h1 、…、hb-1 はそれぞれ有限体(ガロア体)GF(2r)上の要素で2元r次の列ベクトルであり、t=bであれば前記H″はb×bのランクbの行列であり、t<bであれば最小ハミング距離t+1を有する2元(b、b−r)のパリティ検査行列Hに等しくなり、また、R≧b+2rとしγを2を底とする(R−q)/2次の有限体GF(2r(R-q)/2)の原始元であって、φを加法のもとでGF(2r)からGF(2(R-q)/2)への準同形写像とするときに、γiH″=[γiφ(h0 ) γiφ(h1 ) γiφ(h2 )・・γiφ(hb-1 )]が成立するように構成されることを特徴とする請求項10〜13の何れか1項に記載の誤り訂正・検出方法。
  15. 前記誤り訂正処理は、前記シンドロームを構成する複数のビットを区分した複数のグループのうち第1のグループに含まれるビット値を基に、b(bは2以上の整数)ビットを1バイトとした際のバイト単位のバイト誤りパターンを生成するバイト誤りパターン生成処理と、
    前記バイト誤りパターン生成処理により生成したバイト誤りパターン、及び前記第1のグループ以外のグループに含まれるビット値を基に前記受信語の何れのバイトに誤りが含まれているかを検出するバイト誤りポインタと、前記検出されたバイト誤りポインタの示すバイト内で何れのビットが誤っているかを検出するビット誤りポインタとを出力するシンドロームデコード処理とを含むことを特徴とする請求項10〜14の何れか1項に記載の誤り訂正・検出方法。
  16. 前記誤り訂正処理は、前記シンドローム生成処理により生成されたシンドロームと、前記シンドロームデコード処理により出力されたバイト誤りポインタとを基に、前記バイト中に訂正することができないビット誤りを検出する誤り検出処理を含むことを特徴とする請求項15に記載の誤り訂正・検出方法。
  17. 前記誤り検出処理は、前記受信語のビット誤りを訂正できないことを検出した場合に、訂正不可信号を出力することを特徴とする請求項16に記載の誤り訂正・検出方法。
  18. 前記誤り訂正処理は、前記シンドロームデコード処理により出力されたビット誤りポインタを基に、誤りビットに該当する前記受信語のビット値を反転させることにより訂正後の受信語を生成するビット反転を含むことを特徴とする請求項15〜17の何れか1項に記載の誤り訂正・検出方法。
JP2003416978A 2003-12-15 2003-12-15 スポッティバイト誤り訂正・検出方法及び装置 Expired - Fee Related JP3743915B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003416978A JP3743915B2 (ja) 2003-12-15 2003-12-15 スポッティバイト誤り訂正・検出方法及び装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003416978A JP3743915B2 (ja) 2003-12-15 2003-12-15 スポッティバイト誤り訂正・検出方法及び装置

Publications (2)

Publication Number Publication Date
JP2005176244A true JP2005176244A (ja) 2005-06-30
JP3743915B2 JP3743915B2 (ja) 2006-02-08

Family

ID=34736029

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003416978A Expired - Fee Related JP3743915B2 (ja) 2003-12-15 2003-12-15 スポッティバイト誤り訂正・検出方法及び装置

Country Status (1)

Country Link
JP (1) JP3743915B2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006095489A1 (ja) * 2005-03-04 2006-09-14 Tokyo Institute Of Technology 誤りバイト数を制限したバイト内複数スポッティバイト誤り訂正・検出方法及び装置
KR100833600B1 (ko) 2006-08-25 2008-05-30 삼성전자주식회사 에러 정정 회로, 그 방법 및 상기 회로를 구비하는 반도체메모리 장치
US8196011B2 (en) 2006-02-15 2012-06-05 Hitachi Ulsi Systems Co., Ltd. Error detection and correction circuit and semiconductor memory
CN109947674A (zh) * 2017-12-20 2019-06-28 瑞萨电子株式会社 数据处理器件和数据处理方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006095489A1 (ja) * 2005-03-04 2006-09-14 Tokyo Institute Of Technology 誤りバイト数を制限したバイト内複数スポッティバイト誤り訂正・検出方法及び装置
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
US8196011B2 (en) 2006-02-15 2012-06-05 Hitachi Ulsi Systems Co., Ltd. Error detection and correction circuit and semiconductor memory
KR100833600B1 (ko) 2006-08-25 2008-05-30 삼성전자주식회사 에러 정정 회로, 그 방법 및 상기 회로를 구비하는 반도체메모리 장치
CN109947674A (zh) * 2017-12-20 2019-06-28 瑞萨电子株式会社 数据处理器件和数据处理方法

Also Published As

Publication number Publication date
JP3743915B2 (ja) 2006-02-08

Similar Documents

Publication Publication Date Title
JP4036338B2 (ja) 誤りバイト数を制限したバイト内複数スポッティバイト誤り訂正・検出方法及び装置
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
US11740960B2 (en) Detection and correction of data bit errors using error correction codes
US20180019767A1 (en) Error correction and decoding
US8806295B2 (en) Mis-correction and no-correction rates for error control
US7996748B2 (en) ECC for single 4-bits symbol correction of 32 symbols words with 22 maximum row weight matrix
JP2589957B2 (ja) 単一サブブロック・エラーと単一ビット・エラー検出のための符号化方法及びメモリ・システム
JP2012050008A (ja) 誤り検出訂正方法および半導体メモリ装置
JP3743915B2 (ja) スポッティバイト誤り訂正・検出方法及び装置
Badack et al. Modified DEC BCH codes for parallel correction of 3-bit errors comprising a pair of adjacent errors
TWI664636B (zh) 錯誤檢查和糾正解碼器
Neelima et al. Half diagonal matrix codes for reliable embedded memories
Rao et al. Encoder and adaptive decoder for a (15, 6, 2) DEC-TED BCH code
JP2006101429A (ja) バイト内複数スポッティバイト誤り訂正・検出方法及び装置
Sim et al. Design of Two Interleaved Error Detection and Corrections Using Hsiao Code and CRC
JP2006060465A (ja) スポッティバイト誤り訂正・検出方法及び装置
JP3879082B2 (ja) バイト誤り訂正・検出装置
CN111782438B (zh) 一种改进的抗辐射加固矩阵码译码电路
KR102633829B1 (ko) 버스트 에러 정정 코드 생성 방법, 컴퓨터 판독 가능한 기록 매체, 컴퓨터 프로그램 및 장치
US20220190846A1 (en) Single error correct double error detect (secded) error coding with burst error detection capability
US20240106462A1 (en) G-ldpc decoder and g-ldpc decoding method
EP1724687B1 (en) ECC for single 4-bits symbol correction of 32 symbols words based on a matrix having a maximum row weight of 21
EP1724686B1 (en) ECC for single 4-bits symbol correction of 32 symbols words based on a matrix having a maximum row weight matrix of 22
JPH1165944A (ja) データ誤り検出装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20031215

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20031216

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20040521

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20040827

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20040827

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20040827

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050725

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050921

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20051017

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20051108

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091202

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091202

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101202

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101202

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101202

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101202

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111202

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111202

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121202

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121202

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121202

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121202

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131202

Year of fee payment: 8

LAPS Cancellation because of no payment of annual fees