(57)【要約】【課題】データの信頼性及び経済性に応じてエラー訂正可能ビット数を変更可能とした半導体記憶装置を提供する。【解決手段】エラー検出訂正システムを備えた半導体記憶装置において、前記エラー検出訂正システムは、ＢＣＨコードを用いて２ビットエラー訂正を行う第１の動作モードと、１ビットエラー訂正を行う第２の動作モードとが、システムの主要部を共用して切り換え可能に設定される。【選択図】図１
2007305267.tif 000002
【特許請求の範囲】
【請求項１】
エラー検出訂正システムを備えた半導体記憶装置において、
前記エラー検出訂正システムは、ＢＣＨコードを用いて２ビットエラー訂正を行う第１の動作モードと、１ビットエラー訂正を行う第２の動作モードとが、システムの主要部を共用して切り換え可能に設定される
ことを特徴とする半導体記憶装置。
【請求項２】
前記第１及び第２の動作モードは、前記装置内の異なるデータ領域について切り換えて設定される
ことを特徴とする請求項１記載の半導体記憶装置。
【請求項３】
前記第１及び第２の動作モードは、前記装置の共通のデータ領域について選択的に設定される
ことを特徴とする請求項１記載の半導体記憶装置。
【請求項４】
前記エラー検出訂正システムは、
前記第１の動作モードではガロア体ＧＦ（２ｎ）のＢＣＨコードを用いた２ビットエラー訂正システムとして構成され、その記憶すべきデータに基づいてエラー検出のためのチェックビットを生成するエンコード部は、パリティチェック回路群と、その各パリティチェック回路への入力データを選択する入力回路とを備え、
第２の動作モードでは、前記パリティチェック回路群のうち第２の動作モードで必要とされる部分についてモード選択信号により入力回路構成が変更され、残りのパリティチェック回路は入力固定とされる
ことを特徴とする請求項１記載の半導体記憶装置。
【請求項５】
前記エラー検出訂正システムは、
前記第１の動作モードではガロア体ＧＦ（２ｎ）のＢＣＨコードを用いた２ビットエラー訂正システムとして構成され、読み出しデータからシンドロームを計算するシンドローム演算部は、パリティチェック回路群と、その各パリティチェック回路への入力データを選択する入力回路とを備え、
第２の動作モードでは、前記パリティチェック回路群のうち第２の動作モードで必要とされる部分についてモード選択信号により入力回路構成が変更され、残りのパリティチェック回路は入力固定とされる
ことを特徴とする請求項１記載の半導体記憶装置。
【請求項６】
前記エラー検出訂正システムは、
前記第１の動作モードではガロア体ＧＦ（２ｎ）のＢＣＨコードを用いた２ビットエラー訂正システムとして構成され、そのエラー位置検索回路は、２ｎ−１を法とする加減算を行う演算回路を有し、前記演算回路は、２ｎ−１を互いに素でかつできる限り差が小さい第１及び第２の整数に分解して、加減算の対象に第１の整数を乗じて第２の整数を法とした加減算を行う第１の加算回路と、加減算の対象に第２の整数を乗じて第１の整数を法とした加減算を行う第２の加算回路とを備えて、それらの並列演算の結果から２ｎ−１を法とする演算結果を得るものであって、
前記第２の動作モードでは、前記演算回路の一部が不活性とされる
ことを特徴とする請求項１記載の半導体記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、半導体記憶装置に係り、特にオンチップのエラー検出訂正システムに関する。
【背景技術】
【０００２】
電気的書き換え可能な不揮発性半導体メモリであるフラッシュメモリは、書き換え回数の増加に従ってエラー率が大きくなる。特に、大容量化と微細化が進むと、エラー率は上昇する。このため、フラッシュメモリチップ内に或いはこれを制御するメモリコントローラにＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）回路を搭載することが行われる（例えば、特許文献１参照）。
【０００３】
フラッシュメモリを利用するホストデバイス側で、フラッシュメモリで生じたエラーを検出し訂正するＥＣＣシステムを持つようにすると、エラー率が増えた場合にホストデバイスの負荷が大きいものとなる。例えば、２ビットエラー訂正可能なＥＣＣシステムは、計算規模が大きなものとなることが知られている（例えば、特許文献２参照）。
【０００４】
従ってホストデバイスの負荷増大を抑えると共にエラー率増大に対処するためには、フラッシュメモリ内に２ビットエラー訂正可能なＥＣＣシステムを搭載することが望まれる。その場合に要求されることは、ＥＣＣシステムの演算速度を高速化して、フラッシュメモリの読み出しや書き込み速度の犠牲を抑えることである。
【特許文献１】特開２０００−１７３２８９号公報
【特許文献２】特開２００４−１５２３００号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
この発明は、データの信頼性及び経済性に応じてエラー訂正可能ビット数を変更可能とした半導体記憶装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
この発明の一態様による半導体記憶装置は、エラー検出訂正システムを備えた半導体記憶装置であって、
前記エラー検出訂正システムは、ＢＣＨコードを用いて２ビットエラー訂正を行う第１の動作モードと、１ビットエラー訂正を行う第２の動作モードとが、システムの主要部を共用して切り換え可能に設定される。
【発明の効果】
【０００７】
この発明によると、データの信頼性及び経済性に応じてエラー訂正可能ビット数を変更可能とした半導体記憶装置を提供することができる。
【発明を実施するための最良の形態】
【０００８】
実施の形態の説明に先立って、この発明の概要を説明する。
【０００９】
半導体メモリのセルアレイの微細化と大容量化が進むと、データの信頼性を確保するために、エラー検出訂正システム（ＥＣＣシステム）が不可欠になる。しかし、ＥＣＣシステム搭載のためには、データ領域の他に検査ビット領域が必要であり、強力なＥＣＣシステムを実現するためには、それだけ検査ビット領域を大きく確保することが必要となる。
【００１０】
即ち、データの信頼性を確保するためには、それだけ余分な検査ビット領域をとらなければならず、その分データ領域が狭くなり、エラー訂正時間が長くかかることになる。即ち、データの信頼性と、データ領域効率及びエラー訂正速度とは互いに相反する要素となる。
【００１１】
例えば、２ビットエラー訂正可能なＢＣＨコードシステム（２ＥＣ−ＢＣＨシステム）では、例えば１２８の情報ビットに対して、１６の検査ビットを形成して、メモリセルに記憶する。このとき、２ＥＣ−ＢＣＨシステムのためにメモリに余分に必要とする領域は、１６／１２８＝０．１２５倍、即ちデータ保存に必要な領域に対して１２．５％増となる。
【００１２】
データの信頼性よりデータ保存量を優先するとすれば、ＥＣＣシステムを搭載しないか、エラー訂正可能数を減らせばよいが、データの信頼性によってはこのような選択は出来ない場合もある。そこで、メモリの使用状況によって必要な信頼性と経済性との兼ね合いでＥＣＣ効率（エラー訂正率）を選択できるようなシステムを本来のＥＣＣシステムの規模や処理速度を損なうことなく構築できる方法が望まれる。
【００１３】
この発明では、メモリの使用状況に応じてエラー訂正率を選択可能とする。具体的には例えば、２ＥＣ−ＢＣＨシステムを搭載し、使用状況に応じてこれを、１ビットエラー訂正２ビットエラー警告のパリティチェックコードシステム（１ＥＣ−２ＥＷシステム）として切り換えられるようにする。言い換えれば、２ＥＣ−ＢＣＨシステムの主要な回路要素をそのまま使用し、２ビットエラー訂正を行う第１の動作モードから、１ビットエラー訂正を行う第２の動作モードに切り換えられるようにした。
【００１４】
具体的なメモリシステムに着目すると、次の二つの態様が考えられる。
【００１５】
第１は、あるデータ領域について、２ＥＣ−ＢＣＨシステムを適用するか、１ＥＣ−２ＥＷシステムを適用するかのモード切り換えを可能とする。即ち、保存データに高信頼性が要求される場合は、２ＥＣ−ＢＣＨシステムを適用して、エラー訂正可能ビット数を増やす。信頼性よりも保存データ量がより要求される場合には、１ＥＣ−２ＥＷシステムを適用し、チェックビット領域をより小さくしてその分データビット領域を大きくする。これにより、２ＥＣ−ＢＣＨシステムの場合よりエラー訂正の時間も短くできる。この様に一つのデータ領域に、異なるＥＣＣシステムを切り換えて適用可能にする。
【００１６】
第２は、２ＥＣ−ＢＣＨシステムを適用する第１のデータ領域と、１ＥＣ−２ＥＷシステムを適用する第２のデータ領域とを併存させる。即ちメモリは、二つ以上の要求信頼度が異なるデータ領域を持って構成され、各データ領域へのアクセスの際に信頼度に合ったＥＣＣのエラー訂正可能ビット数を選択して動作させるものとする。
【００１７】
以上において例えば、要求信頼度が高いデータ領域には２値データ記憶方式を適用し、信頼度よりもデータ保存量が要求されるデータ領域には、多値データ記憶方式を適用することは有効である。
【００１８】
以下、図面を参照して、この発明の実施の形態を説明する。
【００１９】
図１は、ＢＣＨコードを用いた２ビットエラー訂正３ビット以上エラー警告（２ＥＣ−ＥＷ）の動作モード（或いはシステム）を基本とし、これをパリティチェックコードを用いた１ビットエラー訂正２ビットエラー警告（１ＥＣ−２ＥＷ）の動作モード（或いはシステム）への切り換え可能としたメモリシステムの概要を示す。
【００２０】
二つの動作モード（或いはシステム）は、回路要素の主要部を共用して、データ入力の切り換えやサブシステムのショートカットにより切り換えられる。以下の説明では、１ＥＣ−２ＥＷの動作モード（或いはシステム）、２ＥＣ−ＥＷの動作モード（或いはシステム）をそれぞれ単に、１ＥＣシステム、２ＥＣシステムという場合がある。
【００２１】
メモリコア１０ａは、１ＥＣ−２ＥＷシステム適用領域であり、メモリコア１０ｂは、２ＥＣ−ＥＷシステム適用領域である。即ちここでは、メモリコア１０ａ，１０ｂが一つのチップ内に別々に用意されて、これが用途に応じて使い分けられる場合を想定している。但しこれに限定されるわけではなく、メモリコア１０ａ，１０ｂが一体の領域であって、この一体のメモリ領域に対して１ＥＣ−２ＥＷシステムと２ＥＣ−ＥＷシステムとが選択的に適用されるものとしてもよい。
【００２２】
エンコード部１１では、記憶すべきデータとの関係で、そのデータのエラーを検出するに必要な検査ビット（チェックビット）を生成する。２ＥＣシステムの場合、データ多項式ｆ（ｘ）ｘ１６をコード生成多項式ｇ（ｘ）で割って、その剰余多項式ｒ（ｘ）の係数として１６ビットのチェックビットを求める。１ＥＣシステムの場合は、データ多項式ｆ（ｘ）ｘ１６をコード生成多項式ｈ（ｘ）で割って、その剰余多項式ｔ（ｘ）の係数として９ビットのチェックビットを求める。
【００２３】
求められたチェックビットが情報ビットと共にメモリコア１０ａ，１０ｂのセルアレイに選択的に書き込まれる。
【００２４】
多項式ν（ｘ）（２ＥＣシステムの場合）或いはξ（ｘ）（１ＥＣシステムの場合）で表されるメモリコア回路１０ａ，１０ｂからの読み出しデータは、デコード部即ちシンドローム演算部１２でエラーの有無を判定するためのシンドローム計算が行われる。２ＥＣシステムの場合、二つの８次の原始多項式ｍ１（ｘ），ｍ３（ｘ）での剰余計算によるシンドロームが求められる。
【００２５】
１ＥＣシステムの場合は、ここでは、ｍ３（ｘ）での剰余を求める計算に代わって、ｍ０（ｘ）での剰余を求める計算、即ちメモリから読み出した１２８＋９ビットのパリティを求める計算となるように、入力と出力の切り換えが行われる。
【００２６】
得られたシンドロームに基づきエラー位置検索を行うエラー位置検索部１３は、２段階のインデックス演算部１３ａ，１３ｂと、エラー訂正部１４のサブシステムに分けられている。２ＥＣシステムの場合に、本来の多項式の変数ｘに対してｘ＝ασ１ｙなる変換変数ｙを導入して、エラー位置対応のインデックスｙｎを求めるのが、最初の演算部１３ａであり、以下これを“ｙｎロケータ（ｌｏｃａｔｏｒ）”という。その演算結果に基づいて実際のエラービット位置ｉを求めるのが、次の演算部１３ｂであり、以下これを“ｉロケータ”という。
【００２７】
これらサブシステムとしてのロケータは、計算規模を小さくするために、２５５を法とする加算を、１７を法とする加算と１５を法とする加算の並列処理として実現する。エラー訂正部１４ではエラー位置のビットデータが反転される。
【００２８】
１ＥＣシステムの場合、ｙｎロケータ１３ａは、不要になる。そこでこの部分を非活性化してショートカットするため、この部分の駆動信号ＣＬＫをＶｓｓに固定すると同時に、次段への出力をインデックス“０”固定として、次段が誤った計算をしないようにする。ｉロケータ１３ｂの部分は、入力の一方が“０”固定されて加算器から実質的にはデコーダになること以外、回路的な変更はない。
【００２９】
２ＥＣシステム及び１ＥＣシステムの詳細を説明する前に、この実施の形態が適用されるメモリコアの具体構成を説明する。
【００３０】
図２は、通常のＮＡＮＤフラッシュメモリで用いられているのと同じメモリコアの構成を示している。このメモリコア回路は、セルアレイ１、センスアンプ回路２及びロウデコーダ３を有する。セルアレイ１は、直列接続されたメモリセルＭ０−Ｍ３１を有するＮＡＮＤセルユニット（ＮＡＮＤストリング）を配列して構成されている。ＮＡＮＤセルユニットＮＵの一端は選択ゲートトランジスタＳ１を介してビット線ＢＬｅ（ＢＬｏ）に、他端は選択ゲートトランジスタＳ２を介して共通ソース線ＣＥＬＳＲＣに接続されている。
【００３１】
メモリセルの制御ゲートは、ワード線ＷＬ０−ＷＬ３１に接続され、選択ゲートトランジスタＳ１，Ｓ２のゲートは選択ゲート線ＳＧＤ，ＳＧＳに接続されている。ワード線ＷＬ０−ＷＬ３１と選択ゲート線ＳＧＤ，ＳＧＳを選択駆動するのがロウデコーダ３である。
【００３２】
センスアンプ回路２は、同時書き込み及び読み出しを行う１ページ分のセンスユニットＳＡを有する。各センスユニットＳＡには、ビット線選択回路４により、隣接するビット線ＢＬｅ，ＢＬｏのいずれかが選択されて接続される。これにより、一つのワード線ＷＬｉと複数の偶数番ビット線ＢＬｅ（或いは複数の奇数番ビット線ＢＬｏ）により同時に選択されるメモリセルの集合が、同時に書き込み／読み出しが行われる１ページ（１セクタ）となる。非選択側のビット線は所定電位を与えたシールド線として利用することにより、選択ビット線間の干渉を防止することができる。
【００３３】
ワード線ＷＬ０−ＷＬ３１を共有するＮＡＮＤセルユニットの集合は、データ消去の単位とするブロックを構成し、図のようにビット線の方向に複数のブロックＢＬＫ０−ＢＬＫｎが配置される。
【００３４】
図３は、この発明が適用される、別の動作原理によるＮＡＮＤ型フラッシュメモリのメモリコアを示している。メモリセルアレイ１は、センスアンプ２を挟んで配置されたセルアレイ１ａ，１ｂに分けられている。センスアンプ回路２には、電流検出型の差動センスアンプが用いられ、セルアレイ１ａ，１ｂの一方から選択された“情報セル”と他方から選択された“参照セル”との間でセル電流差を検出してデータセンスする方式としている。
【００３５】
セルアレイ１ａには、一つのビット線ＢＬに、複数の情報セルＮＡＮＤストリング，Ｔ−ＮＡＮＤと、少なくとも一つの参照セルＮＡＮＤストリングＲ−ＮＡＮＤとが接続されている。セルアレイ１ｂには、セルアレイ１ａ側のビット線ＢＬと対をなすビット線ＢＢＬに、複数の情報セルＮＡＮＤストリング，Ｃ−ＮＡＮＤと、少なくとも一つの参照セルＮＡＮＤストリングＲ−ＮＡＮＤとが接続されている。
【００３６】
情報セルＴ−ｃｅｌｌ，Ｃ−ｃｅｌｌと参照セルＲ−ｃｅｌｌとは同じメモリセル構造を有する。そして、セルアレイ１ａ，１ｂの一方から情報セルＴ−ｃｅｌｌ（またはＣ−ｃｅｌｌ）が選択されたときに、他方からは参照セルＲ−ｃｅｌｌが選択される。
【００３７】
情報セルＮＡＮＤストリングＴ−ＮＡＮＤ，Ｃ−ＮＡＮＤ及び参照セルＮＡＮＤストリングＲ−ＮＡＮＤは、ビット線と直交する方向に複数個配列されて、セルブロックを構成する。セルブロックには共通に、ワード線ＴＷＬ，ＣＷＬ，ＲＷＬが配設される。
【００３８】
図４は、センスアンプＳＡＵに接続される情報セルＮＡＮＤストリングＴ−ＮＡＮＤ（またはＣ−ＮＡＮＤ）と参照セルＮＡＮＤストリングＲ−ＮＡＮＤの具体構成を示している。それぞれ、複数個の直列接続された、電気的書き換え可能な不揮発性メモリセルＭ０−Ｍ３１と、選択ゲートトランジスタＳＧ１，ＳＧ２とを有する。同じ不揮発性メモリセルＭ０−Ｍ３１を用いているが、情報セルＮＡＮＤストリングＴ−ＮＡＮＤ（またはＣ−ＮＡＮＤ）ではこれらが情報セルＴ−ｃｅｌｌ（またはＣ−ｃｅｌｌ）として、また参照セルＮＡＮＤストリングＲ−ＮＡＮＤでは参照セルＲ−ｃｅｌｌとして用いられる。
【００３９】
図５は、４値記憶を行う場合のメモリセルのデータレベル（しきい値レベル）分布を示している。情報セルＴ−ｃｅｌｌ，Ｃ−ｃｅｌｌには、４つのデータレベルＬ０，Ｌ１，Ｌ２，Ｌ３のいずれか一つが書かれる。参照セルＲ−ｃｅｌｌには、例えばデータレベルＬ０とＬ１の間に設定された参照レベルＬｒが書かれる。
【００４０】
４つのデータレベルＬ０−Ｌ３のビット割付は、情報セルＴ−ｃｅｌｌとＣ−ｃｅｌｌの間で異なる。例えば、４値データを上位ビットＨＢと下位ビットＬＢで（ＨＢ，ＬＢ）で表すものとして、セルアレイ１ａ側の情報セルＴ−ｃｅｌｌでは、Ｌ０＝（１，０），Ｌ１＝（１，１），Ｌ２＝（０，１），Ｌ３＝（０，０）とされ、セルアレイ１ｂ側の情報セルＣ−ｃｅｌｌでは、Ｌ０＝（０，０），Ｌ１＝（０，１），Ｌ２＝（１，１），Ｌ３＝（１，０）とされる。
【００４１】
図５には、読み出し時、情報セルＴ−ｃｅｌｌ，Ｃ−ｃｅｌｌに読み出すべきデータに応じて与えられる読み出し電圧Ｒ１，Ｒ２，Ｒ３及び参照セルＲ−ｃｅｌｌに与えられる読み出し電圧Ｒｒを示している。また、書き込み時、情報セルＴ−ｃｅｌｌ，Ｃ−ｃｅｌｌに書き込むべきデータに応じて与えられる書き込みベリファイ電圧Ｐ１，Ｐ２，Ｐ３及び参照セルＲ−ｃｅｌｌに与えられる書き込みベリファイ電圧Ｐｒを示している。
【００４２】
この様な４値データ記憶方式は、例えば画像データ等、大きなデータ保存量（大きなデータ領域）が要求される場合に好ましい。従ってこの方式では、チェックビット領域が小さい１ＥＣシステムとする。これに対して、データの高い信頼性が要求される場合には、２値データ記憶方式とすることが好ましく、またチェックビット領域が大きい２ＥＣシステムを適用する。
【００４３】
次に、２ＥＣ−ＥＷシステムと１ＥＣ−２ＥＷシステムの詳細を説明する。この実施の形態では、２ＥＣ−ＢＣＨシステムを１ＥＣにも対応できるようするので、まず基本となる２ＥＣ−ＢＣＨシステムを説明する。
【００４４】
（２ＥＣシステムのデータエンコーディング）
１２８ビットの情報データの２ビットエラーを検出訂正するに必要な２ＥＣ−ＢＣＨコードは、ガロア体ＧＦ（２８）であり、使用するビット長は、２８−１＝２５５であり、チェックビットとしては１６ビットが必要となる。
【００４５】
ガロア体ＧＦ（２８）の原始根をαとすると、これを根とする対応するＧＦ（２）上の８次の原始多項式はｍ１（ｘ）は、数１のように表される。即ち、αのべき乗とｍ１（ｘ）によるｘのべき乗の既約多項式がお互いに対応するＧＦ（２５６）の要素となる。また、αの３乗を根とする８次の既約多項式としてｍ１（ｘ）と互いに素な数１に示す多項式ｍ３（ｘ）を用いる。
【００４６】
【数１】
2007305267.tif 000003
【００４７】
これらの二つの原始多項式をもとに、２ビットエラー訂正可能なＥＣＣが構成される。書き込むべきデータに基づいてチェックビットを生成するには、コード生成多項式として、数２のようなｍ１（ｘ）とｍ３（ｘ）の積多項式ｇ（ｘ）を作る。
【００４８】
【数２】
2007305267.tif 000004
【００４９】
データとして利用できるビット数は、２３９ビットであり、これらをａ１６からａ２５４としたとき、数３のような２３８次の情報多項式ｆ（ｘ）を作る。
【００５０】
【数３】
2007305267.tif 000005
【００５１】
実際にはデータとして用いるのは、２３９ビット中例えば１２８ビットであり、このとき１１１ビットの係数は“０” に固定して対応する次数の項がない情報多項式となる。２３９の項数の情報多項式ｆ（ｘ）のうち、その係数を“０”に固定する１１１項として、どの次数を選ぶかによって、後述するデコード時のシンドローム計算の計算量が異なるのでこの選択のしかたが重要となる。
【００５２】
情報多項式ｆ（ｘ）からチェックビットを作るには、ｆ（ｘ）ｘ１６なる多項式をコード生成多項式ｇ（ｘ）で割った、数４に示すような１５次の剰余多項式ｒ（ｘ）を求める。
【００５３】
【数４】
2007305267.tif 000006
【００５４】
この剰余多項式ｒ（ｘ）の係数ｂ１５〜ｂ０をチェックビットとして用いる。即ち、２３９から選ばれた１２８の係数ａｉ（１４３）〜ａｉ（１６）を“情報ビット”とし、ｂ１５〜ｂ０の１６ビットを“チェックビット”として、下記数５に示す計１４４ビットがメモリに記憶させる“データビット”となる。
【００５５】
【数５】
2007305267.tif 000007
【００５６】
ａｉ（ｋ）はメモリに外部から書き込むデータであり、このデータをもとに内部でチェックビットｂｊが作られ同時に書き込まれる。
【００５７】
（２ＥＣシステムのデータデコーディング）
次に、メモリに記憶させた１４４ビットのデータからエラーを検出し２ビットのエラーまでを修正する方法について説明する。
【００５８】
ｆ（ｘ）ｘ１６なる２５４次のデータ多項式の係数をメモリに記憶させてエラーが生じたとすれば、そのエラーも２５４次多項式で表される。このエラー多項式をｅ（ｘ）とすれば、メモリから読み出したデータは、数６のような構造の多項式ν（ｘ）になる。
【００５９】
【数６】
2007305267.tif 000008
【００６０】
この数６のエラー多項式ｅ（ｘ）の係数が“１”の項がエラーとなる。即ち、ｅ（ｘ）を検出することがエラー検出と訂正を行なうことに相当する。
【００６１】
第一段階として、読み出しデータ多項式ν（ｘ）を原始多項式ｍ１（ｘ），ｍ３（ｘ）で割って各々の剰余をＳ１（ｘ），Ｓ３（ｘ）とする。数７に示すように、これは、ｅ（ｘ）をｍ１（ｘ），ｍ３（ｘ）で割った剰余に等しいことは、ν（ｘ）の構造から明らかである。
【００６２】
【数７】
2007305267.tif 000009
【００６３】
この剰余Ｓ１（ｘ）とＳ３（ｘ）をシンドローム（syndrome）多項式という。
【００６４】
２ビットのエラーがｉとｊビットにあるとすれば、エラー多項式は、ｅ（ｘ）＝ｘｉ＋ｘｊである。この実施の形態においては、ＧＦ（２５６）の要素であるｍ１（ｘ）＝０の根αの指数（インデックス）に関するＧＦ（２５６）内の計算でｉとｊを求める。
【００６５】
ｘｎのｍ１（ｘ）での剰余をｐｎ（ｘ）としたとき、αｎ＝ｐｎ（α）である。下記数８に示すように、エラーの次数の対応するαｉ，αｊのそれぞれをＸ１，Ｘ２とし、シンドロームＳ１（ｘ），Ｓ３（ｘ）に対してＳ１（α）とＳ３（α３）に対応する指数をσ１，σ３として、Ｓ１（α）とＳ３（α３）をそれぞれＳ１とＳ３とする。
【００６６】
【数８】
2007305267.tif 000010
【００６７】
ｍ３（α３）＝０であることから、次の数９の関係式が得られる。
【００６８】
【数９】
2007305267.tif 000011
【００６９】
第二段階として未知数Ｘ１とＸ２を根とする多項式ΛＲ（ｘ）を考えると、数１０のように、積Ｘ１Ｘ２がＳ１とＳ３で表現できるので、係数がsyndrome多項式から計算できる。
【００７０】
【数１０】
2007305267.tif 000012
【００７１】
第三段階としてΛＲ（ｘ）のＧＦ（２５６）での根となるαｎを見つければ、Ｘ１，Ｘ２＝αｎからエラービット位置ｉやｊがαｎのｎとして求められる。即ち、ΛＲ（αｎ）＝０を、ｎ＝０〜２５４で探索してヒットした指数ｎがエラービットとなる。
【００７２】
下記数１１に示すように、1ビットエラーの時は、Ｘ１＝Ｓ１，Ｘ１３＝Ｓ３＝Ｓ１３となり、エラー位置がＳ１からわかる。エラーがないときにはＳ１＝Ｓ３＝０となる。３ビット以上のエラーでその位置が計算出来ないときにはＳ１，Ｓ３の一方のみが０となるか、解となるｎが存在しない。
【００７３】
【数１１】
2007305267.tif 000013
【００７４】
（エラー位置検索）
エラー位置の検索は、ΛＲ（ｘ）＝０ となる根ｘ＝αｎのインデックスｎを求めることである。そのために、数１０に示すΛＲ（ｘ）を変形してインデックス関係だけでｎを求めることが出来るようにする。具体的に、ΛＲ（ｘ）＝０を解くことは、これにｘ＝ασ１ｙなる変数変換を施すことにより、下記数１２の変数ｙを求めることと等価になる。
【００７５】
【数１２】
2007305267.tif 000014
【００７６】
この式を用いることより、変数計算から決まる指数とシンドローム計算から決まる指数とを直接比較して、一致する変数を見つけることができる。具体的には、数１２を解くために、ｙにαｎを代入して、下記数１３のインデックスｙｎを求める。
【００７７】
【数１３】
2007305267.tif 000015
【００７８】
そして、下記数１４のように、シンドローム計算で求まるインデックスσ３−３σ１と変数計算から決まるインデックスｙｎとを比較して、一致したｎがエラー位置対応のｙのインデックスということになる。
【００７９】
【数１４】
2007305267.tif 000016
【００８０】
この変数ｙのインデックスを本来の変数ｘのインデックスに戻すためには、下記数１５のように、ασ１をｙに掛ければよい。
【００８１】
【数１５】
2007305267.tif 000017
【００８２】
数１５のαのインデックスσ１＋ｎが、エラー位置に対応するｘのインデックスであり、このｘに対して、ΛＲ（ｘ）＝０となる。
【００８３】
図１９は、インデックスｎとｙｎの対応関係をまとめたものである。ｎの順にｙｎを並べたものと、ｙｎの順にｎを並べたものを合わせて示したが、後者はｙｎ＝０の場合を除いて同一のｙｎに二つのｎが対応することを示している。なお、ｎが８５と１７０では対応するｙｎはない（即ちガロア体の要素０に対応する）。またｙｎの値が全ての２５５の剰余にわたっていないことが分かる。対応するｙｎがない場合にはΛＲ（ｘ）に解が存在しない。
【００８４】
エラー位置検索で必要な計算はインデックスの合同式を解くことであり、二つの合同式を解く必要がある。はじめにシンドロームのインデックスからｙ２＋ｙ＋１＝αｙｎのｙｎを求める。次にこのｙｎに対応するｙ＝αｎのインデックスｎを対応関係で見つけたあと、ｘ＝ασ1ｙによってｘのインデックスｉを合同式を解いて求める。
【００８５】
合同式はいずれもＧＦ（２５６）であるので２５５を法としたものである。この計算はまともに行なうと、２５５×２５５の規模の比較を行うことに相当し回路規模が大きくなる。そこで次のように計算を並列化する。
【００８６】
２５５を互いに素である二つの因子（整数）に分けて、これらを法とする二つの合同式に分離して、これらの合同式を同時に満たす数はもともとの合同式も満たすことを利用する。具体的に、２５５の二つの因子はできる限り差が小さいものとすることが好ましく、２５５＝１７×１５によって、１７と１５をそれぞれ法とする合同式を同時に解く。
【００８７】
まず、ｙｎを求めるには、数１６の合同式を用いる。即ち、１５倍したインデックス間の１７を法とした加減算と、１７倍したインデックス間の１５を法とした加減算とを同時並行させる。
【００８８】
【数１６】
2007305267.tif 000018
【００８９】
次に、インデックスｉを求めるには、数１７の合同式を用いる。ここでも、１５倍したインデックス間の１７を法とした加減算と、１７倍したインデックス間の１５を法とした加減算とを同時並行させる。
【００９０】
【数１７】
2007305267.tif 000019
【００９１】
図１では、数１６の加減算を並列的に行うのが、エラー位置検索部１３内のｙｎロケータ１３ａであり、数１７の加減算を並列的に行うのが、ｉロケータ１３ｂである。
【００９２】
次に、以上の２ＥＣ−ＢＣＨシステムに併用される1ビットエラー訂正２ビットエラー警告（１ＥＣ−２ＥＷ）システムを説明する。
【００９３】
（１ＥＣシステムのデータエンコーディング）
１ＥＣシステムでは、２ＥＣシステムの場合と同じ８次の原始多項式ｍ１（ｘ）と、αの０乗すなわち１を根とする１次の既約多項式としてｍ１（ｘ）と互いに素な多項式ｍ０（ｘ）＝ｘ＋１を用いる。
【００９４】
これらの多項式を用いて、データにチェックビットを付加してエンコードする方法は、まず数１８に示す、ｍ１（ｘ）とｍ０（ｘ）の積多項式ｈ（ｘ）を作る。
【００９５】
【数１８】
2007305267.tif 000020
【００９６】
データとして利用できるビット数は２３９ビットであり、これらをａ１６からａ２５４として、数１９に示す情報多項式ｆ（ｘ）を作る。
【００９７】
【数１９】
2007305267.tif 000021
【００９８】
２ＥＣシステムの場合と同様、実際にデータとして使うビットは、１２８とし、１１１ビットの係数は０固定する。情報データ多項式からチェックビットを作るには、数２０に示すように、ｆ（ｘ）ｘ１６なる多項式をｈ（ｘ）で割った8次の剰余多項式ｔ（ｘ）の係数をｃ８〜ｃ０として、これらの係数をチェックビットとして用いる。
【００９９】
【数２０】
2007305267.tif 000022
【０１００】
すなわち、下記数２１に示すように、２３９から選ばれた１２８の係数ａｉ（１４３）〜ａｉ（１６）と、ｃ８〜ｃ０の９ビットの計１３７ビットがメモリに記憶させるデータとなる。ａｉ（ｋ）がメモリに外部から書き込むデータでありこのデータをもとに内部でチェックビットｃｊが作られ同時に書き込まれる。
【０１０１】
【数２１】
2007305267.tif 000023
【０１０２】
数２１に示すように、１ＥＣシステムでは、２ＥＣシステムで用いられるチェックビットのうち、ｂ１５〜ｂ９は固定ビット“０”として、計１２８＋９ビットがメモリに記憶される。即ち、ｂ１５〜ｂ９の固定ビットはメモリには記憶させないので、２ＥＣシステムに比べて、チェックビット領域は半分近く減少する。
【０１０３】
（１ＥＣシステムのデータデコーディング）
２５４次多項式の係数をメモリに記憶させてエラーが生じたとすれば、このエラーも２５４次多項式で表される。これをｅ（ｘ）とすれば、メモリから読み出したデータは、数２２のような多項式ξ（ｘ）になる。
【０１０４】
【数２２】
2007305267.tif 000024
【０１０５】
エラー多項式ｅ（ｘ）に含まれる多項式の次数を検出することがエラー検出と訂正を行なうことに相当する。第一段階として、数２３に示すように、ξ（ｘ）をｍ１（ｘ），ｍ０（ｘ）で割って各々の剰余をＳ１（ｘ），ｐａｒｉｔｙとする。
【０１０６】
【数２３】
2007305267.tif 000025
【０１０７】
１ビットエラーの多項式をｅ（ｘ）＝ｘｉとして、ＧＦ（２５６）の要素であるｍ１（ｘ）の根αの指数（インデックス）計算でｉを求めると、これがエラー位置になる。ｘｎのｍ１（ｘ）での剰余をｐｎ（ｘ）とするとき、αｎ＝ｐｎ（α)であり、数２４に示すように、エラーの次数の対応するαｉ をＸ１とし、シンドロームＳ１（ｘ）に対してＳ１（α)に対応するインデックスをσ１として、Ｓ１（α)をＳ１とすると、Ｓ１＝Ｘ１，ｐａｒｉｔｙ＝ｅ（１）＝１という関係が得られる。
【０１０８】
【数２４】
2007305267.tif 000026
【０１０９】
ｐａｒｉｔｙはｅ（ｘ）がゼロも含めて偶数個の項を含むときは０となり、特に２ビットエラーでは、ｐａｒｉｔｙ＝１＋１＝０となる。
【０１１０】
第二段階として、Ｘ１＝Ｓ１をインデックスについて解く。これは２５５を法とする合同式ｎ≡σ１を満たすｎを見つけることであり、これを満たすｎ＝ｉがエラービットとなる。
【０１１１】
このエラー検索に２ＥＣのシステムをそのまま利用するので、２５５を互いに素である因数１７と１５に分けて、次の数２５の合同式を満たすインデックスを求める。
【０１１２】
【数２５】
2007305267.tif 000027
【０１１３】
この方法は、２ＥＣシステムの場合と同じであり、図１ではエラー位置検索回路１３のｉロケータ１３ｂの部分がその計算を行う。インデックスの和を計算する必要はないが、ゼロとの和を取る計算として実行できる。
【０１１４】
解の結果の判断は、数２６のようになる。
【０１１５】
【数２６】
2007305267.tif 000028
【０１１６】
ここまで、２ＥＣシステムと、これと併用される１ＥＣシステムの概要を説明したが、以下にはそれぞれのシステムの詳細な計算手法及び、２ＥＣシステムと１ＥＣシステムの切り換え手法の詳細を説明する。
【０１１７】
２３９の情報ビット全てを使用しないこの実施の形態のシステムでは、使用しないビットの選択がシンドローム計算等の計算量を決めることになる。デコードではシンドローム多項式の計算の後エラー位置を検索する演算などを行なうので、計算時間を短くするためにも計算量を出来るだけ少なくしたい。これは、情報多項式ｆ（ｘ）の中から、例えば最適な１２８個の項（次数）の選択を行なうことにより可能となる。
【０１１８】
シンドローム多項式は同時に並列に計算を行なう。各多項式の各次数の係数の計算は“１”のパリティチェックであるので、どの次数の係数の計算もバラツキなくほぼ同じ時間で行なわれれば計算量は減る。
【０１１９】
そのための選択の一つの方法は、シンドローム計算に用いられる７次の剰余多項式ｐｎ（ｘ）とｐ３ｎ（ｘ）の係数が“１”の総和を、各ｎについて求め、総和の数の少ない方から必要なデータビット数だけのｎを選択することである。２ＥＣシステムであれば、最初の１６個を検査ビットとしてｘ０〜ｘ１５の係数を使うので固定し、１７個目以降の選択に係数の“１”の総和の昇順選択をする。
【０１２０】
また、同じ総和の数のグループ内で選択が終了する際には、係数“１”がｐｎ（ｘ）とｐ３ｎ（ｘ）内で各次数の項の間に均等に分布するｎを基準に同じ次数項での“１”の重なりが少ない順に選択する。すなわち基準となるｎのｐｎ（ｘ），ｐ３ｎ（ｘ）の係数“１”の次数での項の係数の総和が少ない順に選択する。
【０１２１】
このような選択方法で選んだ２５４次のデータ多項式ｆ（ｘ）ｘ１６で１４４ビットデータを扱う場合に使用する、１４４個の次数ｎを、図６に示す。
【０１２２】
この選択方法は必ずしもパリティチェックを行なう多項式の各次数の係数“１”の数の最大のものを最も少なくするとは限らないが、全ての組合せの中から計算ステップが最小となるものを探索する様な大規模な計算を必要としないでシンドローム計算回路規模を減らしかつ、シンドローム計算のステップ数を減らす簡便な方法ではある。
【０１２３】
図７は、２ＥＣシステムの場合のコード生成多項式ｇ（ｘ）の剰余ｒｎ（ｘ）であって、選択されたｘｎの剰余ｒｎ（ｘ）の各次数での係数が“１”であるｎの表である。
【０１２４】
例えば、ｘ１５の係数が“１”であるｒｎ（ｘ）の次数ｎは、図のｍ＝１５の列の係数“１”の数が１から６２の欄に書かれている１７，１８，２２，…，２４５，２４９，２５０である。チェックビットのｘ１５の係数に相当するｂ１５は情報データ多項式ｆ（ｘ）ｘ１６の中のこの選択されたｎ次の項の係数のパリティチェックの結果として得られる。
【０１２５】
図８は、１ＥＣシステムの場合のコード生成多項式ｈ（ｘ）の剰余ｔｎ（ｘ）であって、選択されたｘｎの剰余ｔｎ（ｘ）の各次数での係数が“１”であるｎの表である。例えばｘ８の係数が“１”であるｔｎ（ｘ）のｎは表のｍ＝８の列の係数１の数の欄の値が１から６６に書かれている１８，２５，２６，…，２４９，２５０，２５３のｎである。
【０１２６】
チェックビットのｘ９の係数に相当するｃ８は情報データの多項式ｆ（ｘ）ｘ１６の中のこの選択されたｎ次の項の係数のパリティチェックの結果として得られる。
【０１２７】
この実施の形態では、エンコード部１１において、図７に示したｇ（ｘ）の剰余テーブルと図８のｈ（ｘ）の剰余テーブルとで、チェックビットを生成するためのパリティチェック回路の入力部を切り換えることになる。
【０１２８】
図９は、図１のエンコード部１１における、情報データ多項式ｆ（ｘ）ｘ１６から、ｇ（ｘ）またはｈ（ｘ）の剰余としてチェックビットを計算する際のパリティ・チェッカ・ラダー（parity checker ladder，以下ＰＣＬと略称する）２１とその入力回路２２である。
【０１２９】
“１ＥＣ”は生成多項式ｈ（ｘ）を使用する１ＥＣシステムの場合に“Ｈ”とするモード選択信号、“２ＥＣ”は生成多項式ｇ（ｘ）を使用する２ＥＣシステムの場合に“Ｈ”とするモード選択信号である。
【０１３０】
１６個の４ビットＰＣＬ２１は、チェックビットを表す多項式の各次数の係数の値を計算するためのＸＯＲ回路の集合で、生成多項式によるｘｎの剰余のテーブルに従って各次数で入力を選択してそのパリティを計算する。
【０１３１】
入力回路２２は、クロックＣＬＫでプリチャージされたノード２０と、入力信号（記憶すべきデータ）である情報データ多項式の１２８個の係数信号ａｉ（０）〜ａｉ（１２７）をインバータで反転した信号をゲート入力としてノード２０を放電するためのトランジスタＭＮ１とを有する。どの係数を放電信号として選択するかは２ＥＣシステムと１ＥＣシステムの場合で異なるので、モード選択信号２ＥＣと１ＥＣで選択されるトランジスタＭＮ３とＭＮ２を、トランジスタＭＮ１とノード２０との間に介在させている。
【０１３２】
２ＥＣシステムの場合は、チェックビット多項式は１５次、１ＥＣの場合は８次であるので、ｍ＝０〜８次までの４ビットＰＣＬ２１は、１ＥＣ，２ＥＣ共用である。従ってこの範囲では、入力信号をモード選択信号１ＥＣと２ＥＣで切り換える。即ちこれらのパリティチェック回路群の入力回路２２は、２ＥＣと１ＥＣとでその構成が変更される。
【０１３３】
ｍ＝９〜１５次は２ＥＣシステムの場合のみ入力が有効で、１ＥＣのときは入力固定状態即ち、プリチャージ状態から変化せずに働かないようにされる。
【０１３４】
図１０は、４ビットＰＣＬ２１の一例を示す。２ＥＣについての場合が主構成であり、これの初段入力が図９で説明した切り換え回路で１ＥＣと２ＥＣとで切り替わる。２ＥＣの場合、図７に示すように、ｘｍのｍ＝１１，５，２は、パリティチェックするビット数が最大の７２個であるので、ここではこの場合を例として示す。各ｍについて、図７の表からｎを選択し、係数ａｎを用いてパリティチェックを行なう。
【０１３５】
入力の数が４の剰余系のいずれに属するかによって用いるパリティ・チェッカ（ＰＣ）を組合せる。すなわち４で割り切れれば４ビットＰＣのみで、１が余れば２ビットＰＣの一方の入力端子をＶｄｄ にしたもの（すなわちインバータ）を加え、２が余れば２ビットＰＣを加え、３が余れば４ビットＰＣのひとつの入力端子をＶｄｄ にしたものを加える。
【０１３６】
ｍ＝１１，５，２の例では、７２入力であるので、初段は４ビットＰＣを１８個、２段目は１８入力となり４ビットＰＣを４個と２ビットＰＣを１個、３段目は５入力となるので４ビットＰＣを１個とインバータ、４段目は２入力なので２ビットＰＣで構成される。
【０１３７】
図１１（ａ），（ｂ）は、２ビットＰＣの回路構成とその回路記号である。これは、２ビットの信号ａ，ｂをＸＯＲ回路とＸＮＯＲ回路でロジック演算して、“１”の数が偶数のときに出力ノードＥＰに“１”（ｅｖｅｎ-ｐａｒｉｔｙ）を出力する。
【０１３８】
図１２（ａ），（ｂ）は、４ビットＰＣの回路構成とその回路記号を示している。これは、４ビットの信号ａ，ｂ，ｃ，ｄを、二つずつのＸＯＲ回路とＸＮＯＲ回路でロジック演算して、“１”の数が偶数であるときに、出力ノードＥＰに“１”を出力する。
【０１３９】
次に、読み出しデータのエラー検出のためのデコード部、即ちシンドローム演算部１２の詳細を説明する。
【０１４０】
図１３はシンドローム多項式Ｓ１（ｘ）の計算で使用する７次の剰余多項式ｐｎ（ｘ）の選択されたｎでの各次数の係数“１”のｎの表である。例えばｘ７の係数が“１”であるｐｎ（ｘ）の次数ｎは、表のｍ＝７の列の係数１の数の１から５６の欄に書かれている７，１１，１２，…，２３７，２４２，２４５である。シンドローム多項式Ｓ１（ｘ）のｘ７の係数はデータ多項式ν（ｘ）の中のこの選択されたｎ次の項の係数のパリティチェックの結果として得られる。
【０１４１】
図１４は、シンドローム多項式Ｓ３（ｘ）の計算で使用する、７次の剰余多項式ｐ３ｎ（ｘ）の選択されたｎにおける各次数の係数が“１”であるｎの表である。例えば、ｘ７の係数が“１”であるｐ３ｎ（ｘ）のｎは表のｍ＝７の列の係数１の数の欄の数が１から５８の行に書かれている４，８，１４，…，２４１，２４２，２４９である。Ｓ３（ｘ）のｘ７の係数に相当する（ｓ３）７は、データの多項式ν（ｘ）の中のこの選択されたｎ次の項の係数のパリティチェックの結果として得られる。
【０１４２】
１ＥＣの場合は１２８＋９ビットのデータのパリティチェックを行なうので、この数に等しい入力を持ったＰＣＬが必要である。図１４から分かるように、ｍ＝２とｍ＝５の入力はそれぞれ６４と７３なので、和が１３７の所望値になる。そこで１ＥＣの場合はこの次数の４ビットＰＣＬを利用してデータビットのパリティチェックを行なう。
【０１４３】
図１５は、図１のシンドローム演算部１２に用いられるパリティ・チェッカ・ラダー（ＰＣＬ）３１とその入力回路３２の構成であり、上述のように１ＥＣではｍ＝２とｍ＝５を利用してパリティチェックを行なう。即ち、ｍ＝２，５のＰＣＬ３１は、１ＥＣシステムと２ＥＣシステムとで共用され、それ以外のＰＣＬは２ＥＣシステム専用となる。
【０１４４】
ＰＣＬ３１の入力回路３２は、基本的に図９に示しチェックビット生成部と同じであり、クロックＣＬＫでプリチャージされたノード３０と、これに接続されて入力信号であるデータｄ０〜ｄ１５，ｄｉ（０）〜ｄｉ（１２７）をインバータで反転した信号をゲート入力とする、放電用トランジスタＭＮ１とを有する。どの係数を放電信号として選択するかは２ＥＣシステムと１ＥＣシステムの場合で異なるので、モード選択信号２ＥＣと１ＥＣで選択されるトランジスタＭＮ３とＭＮ２を、トランジスタＭＮ１とノード３０との間に介在させている。
【０１４５】
モード選択信号１ＥＣと２ＥＣで入力回路構成を変更するのは、ｍ＝２，５のラダー入力部であり、１ＥＣの場合その出力（ｓ３）２，（ｓ３）５は更に、２ビットＰＣに入力される。その出力は反転されているので、更にＮＡＮＤゲートで１ＥＣの場合のみ、ｐａｒｉｒｙ出力が得られるようになっている。２ＥＣの場合は、ＮＡＮＤゲートにより、常にｐａｒｉｔｙ＝“１”となる。
【０１４６】
１ＥＣの場合、その他のＰＣＬは入力が固定されて非活性とされる。またチェックビットは９ビットのみ用いられるので、入力データのうち、ｄ９〜ｄ１５は、“０”として扱われる。
【０１４７】
図１５に示したシンドローム形成用のパリティ・チェッカ・ラダー（ＰＣＬ）の具体的な例を２ＥＣの場合について図１６に示す。
【０１４８】
図１４から、ｘｍのｍ＝５は、パリティチェックするビット数が最大の７３個であるのでこの場合を例として示す。ｘ３ｎのｍ１（ｘ）の剰余多項式ｐ３ｎ（ｘ）のｍ次項の係数が“０”でないｎは表にしてあるので、各ｍについて表からｎを選択し、ｄｎを用いてパリティチェックを行なう。
【０１４９】
ｍ＝５の例では７３入力であるので、この場合も４段のパリティチェック回路で構成する。初段は、４ビットＰＣを１８個とインバータとで構成する。２段目は１９入力となるので、４ビットＰＣを４個と４ビットＰＣの一つの入力端をＶｄｄとしたものとで構成する。３段目は５入力となるので４ビットＰＣを１個とインバータで構成する。４段目は２入力となるので、２ビットＰＣ一つで構成する。４段目出力が、シンドローム係数（ｓ３）ｍとなる。
【０１５０】
図１７は、シンドローム多項式Ｓ１（ｘ）の計算で使用する、ｘｎのｍ１（ｘ）での剰余ｐｎ（ｘ）の選択されたｎでの各次数における係数が“１”であるｎの表であり、図１３と同じものを示しているが、１ＥＣの場合は、ν（ｘ）の中のｎ＝９から１５は“０”固定として扱うので、破線で囲んだ部分は使われない。
【０１５１】
図１８は、シンドロームＳ１（ｘ）の計算で用いられる４ビットＰＣＬの構成例を示す。ｘｍのｍ＝６，２は図１７からパリティチェックするビット数が最大の６６個であるのでこの場合を例として示している。各ｍについて表からｎを選択しｄｎを用いてパリティチェックを行なう。結果が係数（ｓ１）ｍとなる。
【０１５２】
入力の数が４の剰余系のいずれに属するかによって用いるパリティチェッカ（ＰＣ）を組合せる。すなわち４で割り切れれば４ビットＰＣのみで、１が余れば２ビットＰＣの一方の入力端子をＶｄｄ にしたものすなわち、インバータを加え、２が余れば２ビットＰＣを加え、３が余れば４ビットチＰＣのひとつの入力端子をＶｄｄにしたものを加える。
【０１５３】
ｍ＝６，２の例では６６入力であるので、最初の段は４ビットＰＣを１６個と２ビットＰＣを１個用いる。２段目は１７入力となり、４ビットＰＣを4個とインバータを1個、３段目は５入力となるので４ビットＰＣを1個とインバータ、４段目は２入力となるので２ビットＰＣで構成される。
【０１５４】
次に、シンドローム情報からエラー位置検索を行う図１のエラー位置検索部１３及びエラー訂正部１４の詳細を、図２０〜図２２を参照して説明する。
【０１５５】
図２０はｙｎロケータ１３ａ、図２１はｉロケータ１３ｂを示し、図２２はエラー訂正部１４を示している。それぞれの回路入力部には、プリデコーダを配置して、各回路規模が小さくなるようにしている。
【０１５６】
ｙｎロケータ１３ａは、図２０に示すように、シンドロームＳ１，Ｓ３をそれぞれデコードするプリデコーダ４１，４２と、そのデコード出力を並列演算する、１７を法とするインデックス加算部４３と１５を法とするインデックス加算部４４を有する。これらのインデックス加算部４３，４４は、数１６の二つの合同式を同時に解く部分、即ち２ＥＣのときの２つのエラーインデックスｙｎを計算する部分である。
【０１５７】
これらの加算部４３，４４は、ＮＡＮＤゲート４５によって、モード選択信号２ＥＣが“Ｈ”のときのみ活性になり、１ＥＣの時にはＥＣＣクロックが供給されず不活性とされる。
【０１５８】
一方のインデックス加算部４３は、シンドロームのプリデコード結果をデコードして、インデックスに直す１５σ３デコード部４３２と、−４５σ１デコード部４３１と、これらに対応したインデックス−バイナリ変換部４３４，４３３と、得られたバイナリデータを１７を法として加える５ビット（ｍｏｄ１７）加算器４３５とを有する。
【０１５９】
もう一方のインデックス加算部４４は、シンドロームのプリデコード結果をデコードして、インデックスに直す１７σ３デコード部４４２と、−５１σ１デコード部４４１と、これらに対応したインデックス−バイナリ変換部４４４，４４３と、得られたバイナリデータを１５を法として加える４ビット（ｍｏｄ１５）加算器４４５とを有する。
【０１６０】
プリデコーダ兼スイッチ５１は、５ビット加算器４３５の出力のうちの下位４ビット｛１５ｙｎ（１７）｝０−３と、４ビット加算器４４５の４ビット出力｛１７ｙｎ（１５）｝０−３のプリデコードを行う。ｙｎロケータ１３ａが不活性の時は、プリデコーダ兼スイッチ５１が、加算器４３５，４４５の出力を“０”に相当するように設定して、ｉロケータ１３ｂに渡す働きをする。
【０１６１】
図２１に示すｉロケータ１３ｂは、エラー位置のインデックスｉを計算する部分であり、前述のように２ＥＣと１ＥＣとで共通に用いられる。これは、数１７の二つの合同式を並列演算で解く部分であり、１７を法とするインデックス加算部５２と、１５を法とするインデックス加算部５３とを有する。
【０１６２】
インデックス加算部５２は、プリデコーダ５１の出力ＤＥＣ２と、５ビット加算器４３５の最上位ビット｛１５ｙｎ（１７）｝４をデコードするｙｎ（１７）デコード部５２１と、シンドロームＳ１のデコード出力ＤＥＣ１をデコードする１５σ１デコード部５２２と、これらに対応したインデックス−バイナリ変換部５２３，５２４，５２５と、そのバイナリデータを１７を法として加算する二つの５ビット（ｍｏｄ１７）加算器５２６，５２８とを有する。更に、変換部５２３の出力には、計算不可能状態（Ｎｏ-Ｉｎｄｅｘ１７）を検出するための検出部５２７が接続されている。
【０１６３】
もう一つのインデックス加算部５３は同様に、ｙｎ（１５）デコード部５３１と、１７σ１デコード部５３２と、これらに対応したインデックス−バイナリ変換部５３３，５３４，５３５と、そのバイナリデータを１５を法として加算する二つの４ビット（ｍｏｄ１５）加算器５３６，５３８と、変換部５３３の出力から、計算不可能状態（Ｎｏ-Ｉｎｄｅｘ１５）を検出する検出部５３７とを有する。
【０１６４】
エラー訂正部１４は、図２２に示すように構成される。即ち、ｉロケータ１３ｂの二つの５ビット加算器５２６，５２８の下位４ビット出力｛１５ｉ（１７）｝０−３と、２つの４ビット加算器５３６，５３８の４ビット出力｛１７ｉ（１５）｝０−３がプリデコーダ６１，６２でデコードされる。そのプリデコード出力と、二つの５ビット加算器５２６，５２８の最上位ビット出力｛１５ｉ（１７）｝４とが、エラー位置デコード部６３に入る。
【０１６５】
エラー位置デコード部６３の出力がエラービット位置であり、データ訂正回路６４においてメモリコアから読み出されたデータｄｋがその位置で訂正（反転）されて出力される。データ訂正回路６４には、計算不可能状態信号Ｎｏｎ-Ｉｎｄｅｘ（１７），（１５）、シンドロームＳ１，Ｓ３、１ＥＣｐａｒｉｔｙも入り、訂正不可能（Ｎｏｎ-ｃｏｒｒｅｃｔａｂｌｅ）信号を出力できるようになっている。
【０１６６】
プリデコーダ４１，４２，６１，６２は、８ビットで表される２５６のバイナリ信号状態を、Ａｉ，Ｂｉ，Ｃｉ，Ｄｉ（ｉ＝０〜３）の組合せとして表す変換を行うものであり、図２３に示すようにＮＡＮＤ回路で構成される。即ち８ビットのバイナリを２ビットずつ下位から区切り、４進数として表して、これらをＡｉ，Ｂｉ，Ｃｉ，Ｄｉとしている。これらのプリデコーダを用いることにより、次のデコーダのトランジスタ数を８から４に半減させることができる。
【０１６７】
１５σ３ デコード部４３２，−４５σ１デコード部４３１，１７σ３ デコード部４４２，−５１σ１ デコード部４４１，１５σ１ デコード部５２２は、全て図２４に示すように構成され、入力信号が異なるのみである。即ちプリデコード出力Ａｉ−Ｄｉを選択的にゲート信号とするトランジスタを直列したＮＡＮＤ回路を各剰余類に属する既約多項式の数だけ並列接続して構成される。
【０１６８】
クロックＣＬＫにより制御されるプリチャージトランジスタにより共通ノードをプリチャージし、その放電の有無で剰余類のインデックス信号“ｉｎｄｅｘ ｉ”とする。信号配線Ａｉ，Ｂｉ，Ｃｉ，Ｄｉ（ｉ＝０〜３）が配設され、これがＮＡＮＤ回路を構成するトランジスタのゲートにデコードのコードに従って接続される。
【０１６９】
インデックス−バイナリ変換部４３３，４３４，４４３，４４４，５２３−５２５，５３３−５３５は、剰余類のインデックス信号“ｉｎｄｅｘ ｉ”を、２進数表示に変換するもので、図２５のように構成される。変換されたバイナリ情報を保持するために、クロックＣＬＫでリセットされるラッチ回路２５１が設けられている。インデックスが入力されない場合は５バイナリ回路なら２進数の３１、４バイナリ回路なら、２進数の１５である全ての信号が“Ｈ”状態を維持する。
【０１７０】
図２６は、１７を法として、その剰余としての和を求める５ビット加算器（ｍｏｄ１７）４３５，５２６，５２８の構成を示し、図２７はその回路記号を示している。図示のように、この５ビット加算器は、５ビットの第１段加算回路７１と、その和が１７以上であることを検出して桁上げする桁上げ補正回路７２と、この桁上げ補正回路７２と共に、和が１７以上の場合に３２に対する１７の補数１５（＝３２−１７）を加えるための第２段加算回路７３とを有する。
【０１７１】
桁上げ補正回路７２は、第１段加算回路７１の出力状態に応じて、信号ＰＦ０を発生するものである。具体的にいえば、第１段加算回路７１の最上位ビット出力Ｓ４’が“１”でありかつ、それ以外のビット出力Ｓ０，Ｓ１’〜Ｓ３’の少なくとも一つが“１”であること、即ち和が１７以上であることを検出して、信号ＰＦ０（＝“Ｈ”）を発生するように構成されている。
【０１７２】
第２段加算回路７３は、第１段加算回路７１の出力が１７以上の場合に、１７の補数（０１１１１）を加えるというロジックが組まれている。
【０１７３】
図２８は、１５を法として、その剰余としての和を求める４ビット加算器（ｍｏｄ１５）４４５，５３６，５３８の構成を示し、図２９はその回路記号を示している。この４ビット加算器は、４ビットの第１段加算回路８１と、その和が１５以上であることを検出して桁上げする桁上げ補正回路８２と、この桁上げ補正回路８２と共に、和が１５以上の場合に１６に対する１５の補数１（＝１６−１５）を加えるための第２段加算回路８３とを有する。
【０１７４】
桁上げ補正回路８２は、第１段加算回路８１の出力状態に応じて、信号ＰＦ０を発生するものである。具体的にいえば、第１段加算回路８２の出力Ｓ０’〜Ｓ４’が“１”であること、即ち和が１５以上であることを検出して、信号ＰＦ０（＝“Ｈ”）を発生する。
【０１７５】
第２段加算回路８３は、第１段加算回路８１の出力が１５以上の場合に、１５の補数（０００１）を加えるというロジックが組まれている。
【０１７６】
図２６及び図２８に示す加算器は、クロック同期が必要でなく、入力が確定すれば出力も確定するように構成されている。これにより、システムのタイミング制御の負担を減らすことができる。
【０１７７】
図２６−２９に示した加算器に用いられるフルアダー及びハーフアダーはそれぞれ、図３０（ａ）（ｂ）及び図３１（ａ）（ｂ）に示されている。フルアダーは、加えるビットＡとＢをＸＯＲとＸＮＯＲ回路でロジック演算を行い、桁上げ信号Ｃｉｎとのロジックを更に取って出力としてＡ，Ｂ，Ｃｉｎの和Ｓｏｕｔと桁上げ信号Ｃｏｕｔを出力する。ハーフアダーは、一般的なロジックゲートで構成される。
【０１７８】
図３２は、ｙｎロケータ１３ａの出力段のプリデコーダ兼スイッチ５１の構成である。４ビット加算器（ｍｏｄ１５）４４５の４ビット出力と、５ビット加算器（ｍｏｄ１７）の下位４ビット出力とをデコーダするもので、その基本は図２３のプリデコーダと同様である。
【０１７９】
１ＥＣの場合は、ｙｎロケータ１３ａは不活性とされるので、インデックス−バイナリ変換部４４３，４４４の出力は１５、インデックス−バイナリ変換部４３３，４３４の出力は３１となる。このとき４ビット加算器４４５の出力は、１５＋１５≡０（ｍｏｄ１５）であり、５ビット加算器４３５の出力は、３１＋３１≡１１（ｍｏｄ１７）となる。従って、次のｉロケータ１３ｂに“０”を渡すためには、モード選択信号２ＥＣが入るＮＡＮＤゲートＧ１１，Ｇ１２を用いて、１ＥＣの場合には１１のプリデコードに相当するＣ３とＤ２を強制的に“０”とする。
【０１８０】
図３３は、ｉロケータ１３ｂのｙｎ（１７）デコード部５２１及びｙｎ（１５）デコード部５３１の構成を示している。これらは基本的に、ｙｎロケータ１３ａの１７σ３デコード部４４２と同じであるが、エラー数が二つの場合に相当して２つの剰余類インデックスが選択される。このため同時選択のインデックス信号がバスでぶつからないようにデコードする。即ち、同じ剰余類インデックス“ｉｎｄｅｘ ｉ”をindex i(bs1)とindex i(bs2)の二つに分ける。
【０１８１】
また剰余類の要素は１５と１７の剰余であるので、９ビットのバイナリで指定されるが、１７の剰余の１６のみで最上位ビットに相当する５ビット（１７）加算器の出力｛１５ｙｎ（１７）｝４が“１”であることを利用して、剰余類の要素が１６である場合には信号Ｃｉ，Ｄｉに代わって｛１５ｙｎ（１７）｝４を用いる。これにより、４段ＮＡＮＤでデコード部が構成される。
【０１８２】
剰余類インデックスがないときはエラー位置探索が出来ない場合であり、これを識別するのがno-index検出部５２７，５３７である。これらは図３４に示すように、インデックス−バイナリ変換出力の全ビットが“１”となることを検出するＮＡＮＤ回路で構成される。バスｂｓ１，ｂｓ２には必ず同時に信号が発生するので一方、例えばバスｂｓ１の状態のみをモニターしていれば十分である。
【０１８３】
図３５は、エラー訂正部１４におけるエラー位置デコーダ６３の構成を示している。ここでは、バスｂｓ１，ｂｓ２にプリデコードされた４ビット（１５）加算器５３６，５３８と、５ビット（１７）加算器５２６，５２８からの信号Ａｉ，ＢｉとＣｉ，Ｄｉ，｛１５ｉ（１７）｝４をデコードしてエラー位置信号αｉ（ｋ）を発生する。
【０１８４】
プリデコードしない５ビット（１７）加算器５２６，５２８の出力｛１５ｉ（１７）｝４も使用するのは、ｙｎ（１７）デコーダなどと同じ剰余類要素１６のためである。Ａｉ，Ｂｉ，Ｃｉ，Ｄｉの組合せはバスｂｓ１とｂｓ２によらないので、バス間のＡｉ，ＢｉとＣｉ，ＤｉのＮＡＮＤノード間を接続してデコードしている。
【０１８５】
図３６は、エラー訂正回路６４の構成である。これは、１ＥＣか２ＥＣかによって動作が異なる。２ＥＣの場合、シンドローム係数Ｓ１×Ｓ３が０でなければ１つ又は２つのエラーが発生しておりデータ訂正を行なう。Ｓ１×Ｓ３＝０の場合は二つに別れる。Ｓ１＝Ｓ３＝０であればエラー無しでデータを修正する必要は無い。Ｓ１又はＳ３の一方のみが０であれば、３ビット以上のエラーが発生しており修正は不可能である。またエラー位置探索が不可能なno-index(17)又はno-index(15)が“１”のときも３ビット以上のエラーが発生しており修正は不可能である。
【０１８６】
これらの場合の動作を判別するために、シンドローム多項式の係数（ｓ１）ｍと（ｓ３）ｍの係数がすべて“０”の場合を検出するＮＯＲゲートＧ１，Ｇ２が用いられている。３ビット以上のエラーがある場合は、ゲートＧ１，Ｇ２の一方の出力が“０”となる。これを受けて、ＮＯＲゲートＧ６が訂正不能（ｎｏｎ-ｃｏｒｒｅｃｔａｂｌｅ）を示す“１”を出力する。このとき、ＮＯＲゲートＧ５の出力は“０”となり、エラー訂正を行うデコード用ＮＡＮＤゲートＧ７を非活性にする。
【０１８７】
エラーがない場合は、ゲートＧ１，Ｇ２の出力が共に“１”となり、ＮＯＲゲートＧ４，Ｇ５ともに“０”を出力し、デコード用ＮＡＮＤゲートＧ７を非活性にする。
【０１８８】
１又は２ビットのエラーがある場合、ゲートＧ１，Ｇ２の出力は共に“０”となり、ＮＯＲゲートＧ５の出力“１”がデコード用ＮＡＮＤゲートＧ７を活性にする。αｉ（ｋ）で選択されたビット位置のデータｄｋを反転する反転回路として、２ビットパリティチェック回路３６１を用いて、エラーがない場合はｄｋをそのまま、エラー位置ではこれを反転して出力する。
【０１８９】
１ＥＣの場合は、シンドローム計算回路の設定から、シンドローム係数ｓ３がゼロになることはなく、信号No-Index (17), No-Index (15)が“０”に設定されるので、Ｓ１がゼロ以外の１ＥＣｐａｒｉｔｙ信号が“１”（即ち１ＥＣモード）のときに、ゲートＧ５の出力が“Ｈ”となりエラー訂正を行う。１ＥＣｐａｒｉｔｙが“０”のときは２ビットエラーであるので、訂正不能（ｎｏｎ−ｃｏｒｒｅｃｔａｂｌｅ）信号を発生する。
【０１９０】
図３７は、ｙｎロケータ１３ａ内の一方のインデックス加算部４３の具体構成例を示している。１７を法とするこのインデックス加算部４３では、シンドロームのインデックスσ３とσ１から剰余類インデックス１５σ３−４５σ１（ｍｏｄ１７）を求める。
【０１９１】
入力はインデックスσ３であり、シンドローム計算で得られた７次の多項式の係数（ｓ３）ｍ（ｍ＝０〜７）をデコード部４３２でデコードして、１５σ３の１７を法としての剰余類のインデックス位置の入力信号として選択する。そのインデックスをバイナリ変換部４３４で２進数に変換して、５ビットの数値をバス２０１に発生する。１７の剰余類なので選択回路数は１７個となる。
【０１９２】
制御入力はインデックスσ１であり、シンドローム計算で得られた７次の多項式の係数（ｓ１）ｍ（ｍ＝０〜７）をデコード部４３１でデコードして、−４５σ１の１７を法としての剰余類のインデックス位置の制御信号として選択する。そのインデックスをバイナリ変換部４３３で２進数に変換して、５ビットの数値をバス２０２に発生する。１７の剰余類なので選択回路数は１７個となる。
【０１９３】
バス２０１，２０２に得られた２進数データは、５ビット（１７）加算器４３５に入り、和が求められて、１７を法とした数値がバス２０３に出力される。即ち出力は、１５ｙｎの１７を法としての類を示すインデックスの２進数表示である。
【０１９４】
図３８は、既約剰余ｐｎ（ｘ）のインデックスｎを１５倍して法１７の剰余類１５ｎ（１７）として分類したものである。０から１６のインデックスで分類され、各々の類には１５個のｎが含まれこれらに対応するｐｎ（ｘ）の各次数の係数に従ってプリデコーダされた信号Ａｉ，Ｂｉ，Ｃｉ，Ｄｉの各ｉ（＝０〜３）を示した。
【０１９５】
これらの信号Ａｉ，Ｂｉ，Ｃｉ，Ｄｉでインデックス加算部４３のデコードトランジスタのゲートへの信号接続が決まる。例えばインデックス１においては並列にＮＯＲ接続されるＮＡＮＤのノードは、ｎが１６１，５９，２４６，１２７，４２，９３，１７８，１４４，２１２，２２９，１１０，１９５，８，７６，２５に相当し、ＮＡＮＤのトランジスタゲートへは対応するＡｉ，Ｂｉ，Ｃｉ，Ｄｉを接続する。
【０１９６】
図３９は、既約剰余ｐｎ（ｘ）のインデックスｎを−４５倍して法１７の剰余類−４５ｎ（１７）として分類したものである。０から１６のインデックスで分類され、各々の類には１５個のｎが含まれこれらに対応するｐｎ（ｘ）の各次数の係数に従ってプリデコーダされた信号Ａｉ，Ｂｉ，Ｃｉ，Ｄｉの各ｉ（＝０〜３）を示した。
【０１９７】
これらの信号Ａｉ，Ｂｉ，Ｃｉ，Ｄｉでインデックス加算部４３のデコードトランジスタのゲートへの信号接続が決まる。例えばインデックス１においては並列にＮＯＲ接続されるＮＡＮＤのノードは、ｎが８８，１７３，１２２，１５６，７１，２０，１９０，２０７，２４１，５４，３７，１３９，１０５，２２４，３に相当し、ＮＡＮＤのトランジスタゲートへは対応するＡｉ，Ｂｉ，Ｃｉ，Ｄｉを接続する。
【０１９８】
図４０は、ｙｎロケータ１３ａ内のもう一方のインデックス加算部４４の具体構成例を示している。１５を法とするこのインデックス加算部４４では、シンドロームのインデックスσ３とσ１から剰余類インデックス１７σ３−５１σ１（ｍｏｄ１５）を求める。
【０１９９】
入力はインデックスσ３であり、シンドローム計算で得られた７次の多項式の係数（ｓ３）ｍ（ｍ＝０〜７）をデコード部４４２でデコードして１７σ３の法１５の剰余類のインデックス位置の入力信号として選択する。これをバイナリ変換部４４４で２進数に変換してバス３０１に出力する。法が１５なので選択回路数は１５個である。
【０２００】
制御入力はインデックスσ１であり、シンドローム計算で得られた７次の多項式の係数（ｓ１）ｍ（ｍ＝０〜７）をデコード部４４１でデコードして、−５１σ１の法１５の剰余類のインデックス位置を選択し、これをバイナリ変換部４４３で２進数に変換してバス３０２に出力する。法が１５なので５１とは３を共通因子として含み、剰余類の数は１５／３＝５となり、その剰余類の法１５でのインデックスは０，３，６，９，１２となるので選択回路数は５個である。
【０２０１】
２進数に変換されたバス３０１，３０２上の数値は、４ビット（１５）加算器４４５に入り、和が求められて、１５を法とした数値がバス３０３に出力される。即ち出力は、１７ｙｎの１５を法としての類を示すインデックスの２進数表示である。
【０２０２】
図４１は、既約剰余ｐｎ（ｘ）のインデックスｎを１７倍して法１５の剰余類１７ｎ（１５）として分類したものである。０から１４のインデックスで分類され、各々の類には１７個のｎが含まれこれらに対応するｐｎ（ｘ）の各次数の係数に従ってプリデコーダされた信号Ａｉ，Ｂｉ，Ｃｉ，Ｄｉの各ｉ（＝０〜３）を示した。これらの信号Ａｉ，Ｂｉ，Ｃｉ，Ｄでインデックス加算部４４のデコードトランジスタのゲートへの信号の接続が決まる。
【０２０３】
例えばインデックス１においては並列にＮＯＲ接続されるＮＡＮＤのノードは、ｎが１７３，２３３，２０３，２３，８３，１５８，１８８，６８，３８，１２８，１４３，９８，５３，２１８，８，１１３，２４８に相当し、ＮＡＮＤのトランジスタゲートへは対応するＡｉ，Ｂｉ，Ｃｉ，Ｄｉを接続する。
【０２０４】
図４２は、既約剰余ｐｎ（ｘ）のインデックスｎを−５１倍して法１５の剰余類−１７ｎ（１５）として分類したものである。０，３，６，９，１２のインデックスで分類され、各々の類には５１個のｎが含まれ、これらに対応するｐｎ（ｘ）の各次数の係数に従ってプリデコーダされた信号Ａｉ，Ｂｉ，Ｃｉ，Ｄｉの各ｉ（＝０〜３）を示した。
【０２０５】
これらの信号Ａｉ，Ｂｉ，Ｃｉ，Ｄｉでインデックス加算部４４のデコードトランジスタのゲートへの信号の接続が決まる。例えば、インデックス３においては並列にＮＯＲ接続されるＮＡＮＤのノードは、ｎが２３２，２２，１１７，１２２，６２，…，４７，５２，２７，２に相当しＮＡＮＤのトランジスタゲートへは対応するＡｉ，Ｂｉ，Ｃｉ，Ｄｉを接続する。
【０２０６】
図４３は、ｉロケータ１３ｂ中の１７を法とするインデックス加算部５２即ち、シンドロームのインデックスσ１によって、エラーの実際位置を求めるための１５ｎ＋１５σ１（ｍｏｄ１７）を求める部分の構成を示している。
【０２０７】
入力は、剰余類のインデックスの２進数表示であるバス２０３，３０３の信号１５ｙｎ（１７），１７ｙｎ（１５）で、これをデコード部５２１でデコードし、バイナリ変換部５２３，５２４で１５ｎの１７を法としての剰余類インデックスの２進数表示に変換して、バス４０１，４０２に出力する。法が１７なので選択回路数は１７個である。
【０２０８】
１７ｙｎ（１５）と１５ｙｎ（１７）からは最大２つの対応する１５ｎ（１７）のインデックスが得られるので、２つの５ビット（１７）加算器５２６，５２８で計算する必要があり、これらの入力が同時選択されてバス上でぶつからないように、入力デコーダを構成する。
【０２０９】
制御入力はインデックスσ１であり、シンドローム計算で得られた7次の多項式の係数（ｓ１）ｍ（ｍ＝０〜７）をデコード部５２２でデコードして１５σ１の法１７での剰余類のインデックス位置を選択し、そのインデックスをバイナリ変換部５２５で２進数に変換してバス４０３に出力する。法が１７なので選択回路数は１７個である。
【０２１０】
バス４０１，４０２の数値とバス４０３の数値が加算器５２６，５２８に入る。それらの出力は、図３８に示した表の１５ｉ（１７）に相当する１５ｉの１７を法としての類を示すインデックスの２進数表示データであり、各々の加算器５２６，５２８からバスｂｓ１（４０４），ｂｓ２（４０５）に出力される。
【０２１１】
図４４は、剰余類インデックス１５ｙｎ（１７），１７ｙｎ（１５），１５ｎ（１７）の間の関係を示している。またこれらのインデックスに対応するｙｎとｎの類の要素を併せて示している。実際のデコードに利用されるのは剰余類インデックスのみである。
【０２１２】
また、１５ｎ（１７）の欄は二つのバスｂｓ１とｂｓ２に分けてそれぞれのバスにつなぐインデックスを示した。これはペア｛１５ｙｎ（１７），１７ｙｎ（１５）｝で同時に選択される二つの１５ｎ（１７）が必ず異なるバスに属するようにしたものである。但し例外として、｛１５ｙｎ（１７），１７ｙｎ（１５）｝＝｛０，０｝の時は1ビットエラーであるので、バスｂｓ１とｂｓ２に０を同時に送り、２つの加算器５２６，５２８で同じ計算をさせて誤った２ビットエラーにならないようにする。
【０２１３】
この例外を除いて、例えば剰余類１５ｎ（１７）＝５には、｛１５ｙｎ（１７），１７ｙｎ（１５）｝＝｛１１，１３｝，｛１３，５｝，｛１４，０｝，｛１６，１｝，｛０，９｝，｛４，８｝，｛４，１３｝，｛５，１｝，｛６，２｝，｛６，１４｝，｛１０，２｝，｛１１，６｝，｛１３，３｝，｛１４，１｝，｛１６，５｝が対応して、｛１１，１３｝，｛１３，５｝，｛１４，０｝，｛１６，１｝はバスｂｓ１につなぎ、残りはバスｂｓ２につなぐのでデコーダはこれのグループで分ける。
【０２１４】
また表には、１５ｙｎ（１７），１７ｙｎ（１５）をプリデコードしたＡｉ，Ｂｉ，Ｃｉ，Ｄｉのｉの値と１６に相当するビット｛１５ｙｎ（１７）｝４を{ }４として示した。
【０２１５】
この表に従って、二つの５ビット加算器のデコーダＮＡＮＤ部１５ｙｎ（１７），１７ｙｎ（１５）のゲートを接続することにより、バスｂｓ１，ｂｓ２に１５ｎ（１７）の２進数が出力される。
【０２１６】
図４５は、ｉロケータ１３ｂ内の１５を法とするもう一つのインデックス加算部５３即ち、シンドロームのインデックスσ１によってエラーの実際の位置を求めるため１７ｎ＋１７σ１（ｍｏｄ１５）を求める部分の構成を示す。
【０２１７】
入力は剰余類のインデックスの２進数表示であるバス２０３，３０３の信号で、これをデコード部５３１でデコードし、バイナリ変換部５３３，５３４で１７ｎの１５を法としての剰余類インデックスの２進数表示をバス５０１，５０２に出力し、これを４ビット加算器５３６，５３８用の入力とする。法が１５なので選択回路数は１５個である。
【０２１８】
１７ｙｎ（１５）と１５ｙｎ（１７）からは最大２つの対応する１７ｎ（１５）のインデックスが得られるので、２つの加算器５２６，５２８で計算する必要がありこれらの入力が同時選択されてバス上でぶつからないように入力デコーダを構成する。
【０２１９】
制御入力はインデックスσ１であり、シンドローム計算で得られた７次の多項式の係数（ｓ１）ｍ（ｍ＝０〜７）をデコード部５３２でデコードして、１７σ１の法１５での剰余類のインデックス位置を選択し、これをバイナリ変換部５３５で２進数に直してバス５０３に出力する。法が１５なので選択回路数は１５個である。
【０２２０】
バス５０１，５０２の出力とバス５０３の出力が二つの加算器５３６，５３８に入力される。その出力は図４１の１７ｉ（１５）に相当する１７ｉの１５を法としての類を示すインデックスの２進数表示であり、各々の４ビット加算器５３６，５３８から得られてバス（ｂｓ１）５０４，（ｂｓ２）５０５に出力される。
【０２２１】
図４６は、剰余類インデックス１５ｙｎ（１７），１７ｙｎ（１５），１７ｎ（１５）の間の関係を示している。またこれらのインデックスに対応するｙｎとｎの類の要素を併せて示している。実際のデコードに利用されるのは剰余類インデックスのみである。
【０２２２】
また、１７ｎ（１５）の欄は二つのバスｂｓ１とｂｓ２に分けてそれぞれのバスにつなぐインデックスを示した。これはペア｛１５ｙｎ（１７），１７ｙｎ（１５）｝で同時に選択される二つの１７ｎ（１５）が必ず異なるバスに属するようにしたものである。但し例外として、｛１５ｙｎ（１７），１７ｙｎ（１５）｝＝｛０，０｝の時は１ビットエラーであるのでバスｂｓ１とｂｓ２に０を同時に送り２つの加算器５３６，５３８で同じ計算をさせて誤った２ビットエラーにならないようにする。
【０２２３】
この例外を除いて、例えば剰余類１５ｎ（１７）＝３には、｛１５ｙｎ（１７），１７ｙｎ（１５）｝＝｛２，２｝，｛２，１３｝，｛１５，２｝，｛１５，１３｝，｛０，８｝，｛０，１３｝，｛１，２｝，｛３，０｝，｛３，１４｝，｛６，６｝，｛６，１４｝，｛１１，１４｝，｛１４，０｝，｛１４，１４｝，｛１６，２｝が対応して、｛２，２｝，｛２，１３｝，｛１５，２｝，｛１５，１３｝はバスｂｓ１につなぎ、残りはバスｂｓ２につなぐのでデコーダはこれのグループで分ける。
また表には１５ｙｎ（１７），１７ｙｎ（１５）をプリデコードしたＡｉ，Ｂｉ，Ｃｉ，Ｄｉのｉの値と１６に相当するビット｛１５ｙｎ（１７）｝４を{ }４として示した。
【０２２４】
この表に従って、２つの加算器５３７，５３８の図３３に示す１５ｙｎ（１７）デコード部及び１７ｙｎ（１５）デコード部のＮＡＮＤゲートを接続し、バスｂｓ１とｂｓ２に１７ｎ（１５）の２進数が出力される。
【０２２５】
図４７は、ｉロケータ１３ｂのインデックス加算部５２，５３の演算結果を統合して、エラー位置ｙを変換して実際のエラービット位置として検出する部分、即ち図２２のプリデコーダ６１，６２及びエラー訂正デコーダ６３の部分を示している。
それぞれのインデックス加算部５２，５３の出力１５ｉ（１７）と１７ｉ（１５）は、各々二つのバスｂｓ１とｂｓ２に出力され、これらのＮＡＮＤ−ＮＯＲによってｉを一意的に指定でき、ｋとｉと１５ｉ（１７）および１７ｉ（１５）の関係から｛１５ｉ（１７），１７ｉ（１５）｝の組でｋを指定できる。αｉが演算結果の最終的な出力となる。ｋは選択される場合１乃至２個選択され２ビットまでのエラー位置を示すことになる。
【０２２６】
図４８は、ｋとｉと１５ｉ（１７）および１７ｉ（１５）関係を示す表として、物理的なビット位置ｋの順番にビット位置のインデックスｉを並べたものである。また各ｉに対応する剰余類インデックス｛１５ｉ（１７），１７ｉ（１５）｝とこれらのプリデコード出力Ａｉ，Ｂｉ，Ｃｉ，Ｄｉのｉと１６に相当するビット｛１５ｉ（１７）｝４を{ }４として示した。
【図面の簡単な説明】
【０２２７】
【図１】この発明の実施の形態によるフラッシュメモリのエラー検出訂正システムを示す図である。
【図２】同フラッシュメモリのメモリコアの構成例を示す図である。
【図３】他のメモリコアの構成例を示す図である。
【図４】図３のメモリコアを用いた場合の読み出し法を説明するための図である。
【図５】図３のメモリコアを用いた場合の４値データしきい値分布を示す図である。
【図６】２ＥＣシステムで情報多項式のうちデータビットに使用するために選択された１４４の次数を示す図である。
【図７】同２ＥＣシステムで１５次の剰余多項式の各次数の係数が１であるｎの表である。
【図８】１ＥＣシステムで９次の剰余多項式の各次数の係数が１であるｎの表である。
【図９】図１のエンコード部を構成するパリティ・チェッカ・ラダー群とその入力回路を示す図である。
【図１０】図９に用いられるパリティ・チェッカ・ラダーの構成例を示す図である。
【図１１】図１０における２ビットパリティチェック回路とその回路記号である。
【図１２】図１０における４ビットパリティチェック回路とその回路記号である。
【図１３】シンドローム多項式Ｓ１（ｘ）の計算に使用する剰余多項式ｐｎ（ｘ）の選択されたｎでの各次数の係数１のｎの表である。
【図１４】シンドローム多項式Ｓ３（ｘ）の計算に使用する剰余多項式ｐ３ｎ（ｘ）の選択されたｎでの各次数の係数１のｎの表である。
【図１５】図１のシンドローム演算部を構成するパリティ・チェッカ・ラダー群とその入力回路を示す図である。
【図１６】図１５に用いられるパリティ・チェッカ・ラダーの構成例を示す図である。
【図１７】シンドローム多項式Ｓ１（ｘ）の計算に使用する剰余ｐｎ（ｘ）の選択されたｎでの各次数の係数１のｎの表である。
【図１８】シンドローム演算に用いられるパリティ・チェッカ・ラダーの構成を示す図である。
【図１９】インデックスｎとｙｎの対応関係を示す表である。
【図２０】図１のエラー位置検索回路のｙｎロケータの構成を示す図である。
【図２１】同じくｉロケータの構成を示す図である。
【図２２】同じくエラー訂正回路の構成を示す図である。
【図２３】プリデコーダの構成を示す図である。
【図２４】各ロケータに用いられるデコード部の構成を示す図である。
【図２５】各ロケータに用いられるインデックス−バイナリ変換部の構成を示す図である。
【図２６】各ロケータに用いられる５ビット（１７）加算器の構成を示す図である。
【図２７】同５ビット（１７）加算器の回路記号である。
【図２８】各ロケータに用いられる４ビット（１５）加算器の構成を示す図である。
【図２９】同４ビット（１５）加算器の回路記号である。
【図３０】各加算器に用いられるフルアダーを示す図である。
【図３１】各加算器に用いられるハーフアダーを示す図である。
【図３２】図２０におけるプリデコーダ兼スイッチの構成を示す図である。
【図３３】ｉロケータ内のｙｎデコーダの構成を示す図である。
【図３４】ｉロケータ内のｎｏ−ｉｎｄｅｘ検出回路の構成を示す図である。
【図３５】エラー訂正回路のエラー位置デコード部の構成を示す図である。
【図３６】同データ訂正回路の構成を示す図である。
【図３７】ｙｎロケータ内の一方のインデックス加算部の構成例を示す図である。
【図３８】既約剰余ｐｎ（ｘ）のインデックスｎを１５倍して法１７の剰余類１５ｎ（１７）として分類した表である。
【図３９】既約剰余ｐｎ（ｘ）のインデックスｎを−４５倍して法１７の剰余類−４５ｎ（１７）として分類した表である。
【図４０】ｙｎロケータ内の他方のインデックス加算部の構成例を示す図である。
【図４１】既約剰余ｐｎ（ｘ）のインデックスｎを１７倍して法１５の剰余類１７ｎ（１５）として分類した表である。
【図４２】既約剰余ｐｎ（ｘ）のインデックスｎを−５１倍して法１５の剰余類−１７ｎ（１５）として分類した表である。
【図４３】ｉロケータ中の１７を法とするインデックス加算部５２の構成を示す図である。
【図４４】剰余類インデックス１５ｙｎ（１７），１７ｙｎ（１５），１５ｎ（１７）の間の関係を示す図である。
【図４５】ｉロケータ内の１５を法とするもう一つのインデックス加算部の構成を示す図である。
【図４６】剰余類インデックス１５ｙｎ（１７），１７ｙｎ（１５），１７ｎ（１５）の間の関係を示す図である。
【図４７】図２２のプリデコーダ及びエラー訂正デコーダ部分の構成を示す図である。
【図４８】ｋとｉと１５ｉ（１７）および１７ｉ（１５）関係を示す表である。
【符号の説明】
【０２２８】
１０ａ，１０ｂ…メモリコア、１１…エンコード部、１２…シンドローム演算部、１３…エラー位置検索回路、１３ａ…ｙｎロケータ、１３ｂ…ｉロケータ、１４…エラー訂正回路、２１，３１…パリティ・チェッカ・ラダー、２２，３２…入力回路、２０，３０…プリチャージノード、１ＥＣ，２ＥＣ…モード選択信号、４１，４２，６１，６２…プリデコーダ、４３，４４，５２，５３…インデックス加算部、４３１，４３２，４４１，４４２，５２１，５２２，５３１，５３２…デコード部、４３３，４３４，４４３，４４４，５２３，５２４，５２５，５３３，５３４，５３５…インデックス−バイナリ変換部、４３５，５２６，５２８…５ビット（１７）加算器、４４５，５３６，５３８…４ビット（１５）加算器、６３…位置検出デコード部、６４…データ訂正回路。
【図１】
2007305267.tif 000029
【図２】
2007305267.tif 000030
【図３】
2007305267.tif 000031
【図４】
2007305267.tif 000032
【図５】
2007305267.tif 000033
【図６】
2007305267.tif 000034
【図７】
2007305267.tif 000035
【図８】
2007305267.tif 000036
【図９】
2007305267.tif 000037
【図１０】
2007305267.tif 000038
【図１１】
2007305267.tif 000039
【図１２】
2007305267.tif 000040
【図１３】
2007305267.tif 000041
【図１４】
2007305267.tif 000042
【図１５】
2007305267.tif 000043
【図１６】
2007305267.tif 000044
【図１７】
2007305267.tif 000045
【図１８】
2007305267.tif 000046
【図１９】
2007305267.tif 000047
【図２０】
2007305267.tif 000048
【図２１】
2007305267.tif 000049
【図２２】
2007305267.tif 000050
【図２３】
2007305267.tif 000051
【図２４】
2007305267.tif 000052
【図２５】
2007305267.tif 000053
【図２６】
2007305267.tif 000054
【図２７】
2007305267.tif 000055
【図２８】
2007305267.tif 000056
【図２９】
2007305267.tif 000057
【図３０】
2007305267.tif 000058
【図３１】
2007305267.tif 000059
【図３２】
2007305267.tif 000060
【図３３】
2007305267.tif 000061
【図３４】
2007305267.tif 000062
【図３５】
2007305267.tif 000063
【図３６】
2007305267.tif 000064
【図３７】
2007305267.tif 000065
【図３８】
2007305267.tif 000066
【図３９】
2007305267.tif 000067
【図４０】
2007305267.tif 000068
【図４１】
2007305267.tif 000069
【図４２】
2007305267.tif 000070
【図４３】
2007305267.tif 000071
【図４４】
2007305267.tif 000072
【図４５】
2007305267.tif 000073
【図４６】
2007305267.tif 000074
【図４７】
2007305267.tif 000075
【図４８】
2007305267.tif 000076