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