JP2014068058A - 誤り位置検索回路、誤り検出訂正回路、及びメモリ装置 - Google Patents

誤り位置検索回路、誤り検出訂正回路、及びメモリ装置 Download PDF

Info

Publication number
JP2014068058A
JP2014068058A JP2012209772A JP2012209772A JP2014068058A JP 2014068058 A JP2014068058 A JP 2014068058A JP 2012209772 A JP2012209772 A JP 2012209772A JP 2012209772 A JP2012209772 A JP 2012209772A JP 2014068058 A JP2014068058 A JP 2014068058A
Authority
JP
Japan
Prior art keywords
circuit
error
bit
vector
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2012209772A
Other languages
English (en)
Inventor
Daisuke Fujiwara
大輔 藤原
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Priority to JP2012209772A priority Critical patent/JP2014068058A/ja
Priority to KR1020130096080A priority patent/KR102021560B1/ko
Priority to US14/034,803 priority patent/US9384083B2/en
Publication of JP2014068058A publication Critical patent/JP2014068058A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Detection And Correction Of Errors (AREA)
  • Error Detection And Correction (AREA)

Abstract

【課題】回路規模の縮小された誤り探索方程式一括処理回路(誤り位置検索回路)、誤り検出訂正回路、及びメモリ装置を提供することにある。
【解決手段】ガロア体GF(2)上(mは整数、以下同じ)のmビットによりベクトル表現される(2−1)個の元を誤り位置探索式へ代入し、各元に対応したデータ列のビットに誤りが有るか否かを示すエラー検出信号を生成する誤り位置検索回路であって、誤り位置探索式の次数毎に元を代入する複数の位置検索回路(SRC33_1、33_2、33_3、33_4)を含んで構成され、1ビットのみが1となる規定値の固定ベクトルにより表した元(x)を、複数の位置検索回路各々に代入し、代入して得られた各位置検索回路の結果i0,・・・,i510,j0,・・・,j510,k0,・・・,k510,l0,・・・,l510を元毎に排他的論理和を演算してエラー検出信号bch[510:0]とする。
【選択図】図7

Description

本発明は、誤り位置検索回路、誤り検出訂正回路、及びメモリ装置に関する。
電気的書き換え可能な不揮発性半導体記憶装置(EEPROM;Electrically Erasable and Programmable Read Only Memory)の一つとして、NAND型フラッシュメモリが知られている。NAND型フラッシュメモリは、複数のメモリセルを直列接続したNANDセルユニット(NANDストリング)を用いることにより、小さいチップ面積での大容量記憶を可能としている。
NAND型フラッシュメモリでは、多数回の書き換えに伴うトンネル酸化膜の劣化等に起因して、データ保持中に記憶素子(メモリセル)の保持特性が失われ、エラービットの発生率(エラー率)が大きくなる傾向がある。特に、NAND型フラッシュメモリでは、メモリセルの大容量化、すなわち製造プロセスにおける微細化が進むとエラー率は上昇してしまう傾向にある。そのため、記憶すべきデータに誤り訂正符号(Error Correcting Code)の冗長データを付加してデータ列としてフラッシュメモリに書込むと共に、読出し時には誤り訂正符号の冗長データを基にしてデータの訂正を行うことで、エラービットが発生したときのデータの補償を行っている。
例えば、特許文献1には、誤り検出訂正回路(ECC回路)を備えたNAND型フラッシュメモリが開示されている。特許文献1記載の誤り検出訂正回路では、チェン探索部において、受信情報(データ列)のうちのビットの位置をエラー位置探索方程式に代入し、当該ビットに誤りがあるか否かを検出する。データ列の出力時には、チェン探索部にアドレスを最下位から最上位まで全て代入する。そして、誤り訂正回路(誤り訂正部)では、各ビットに誤りがある場合はビットのデータを訂正して訂正後のデータを出力し、誤りがない場合は訂正しないでビットのデータをそのまま出力する。
特開2009−100369号公報
しかしながら、上述した特許文献1に記載された構成では、データ列のうち任意のアドレスのビットを読み出そうとする場合、誤り訂正回路の出力するビットを一端バッファメモリ等に記憶させ、その後、読み出すべきビットのアドレスをバッファメモリに対して供給しなければならない。つまり、従来においては、誤り検出訂正回路において、読み出すべきビットが含まれるデータ列の全てのビットに対するエラービットのデータの訂正処理が終了するまで、誤り訂正後のデータを高速に読み出すことができないという問題があった。
誤り訂正後のデータを外部に高速に出力するためには、読み出すべきビットが含まれるデータ列の全てのビットに対するエラービットのデータの訂正処理を高速に行う方策が考えられる。この方策として、チェン探索部にアドレスを最下位から最上位まで全て同時に一括して代入することが考えられる。しかしながら、誤り検出訂正回路のチェン探索部において、エラー位置探索方程式へアドレスを代入する回路(位置検索回路;SRC回路とも言う)をビット毎に対応して設ける必要がある。この点について、図面を参照して説明する。
図9は、従来のチェン探索部339の構成を示す図である。なお、ここでは、GF(2)のガロア体を利用し、4ビットの誤りが訂正可能なBCH符号を用いた誤り検出訂正回路を例にとって説明する。GF(2)のガロア体では、511ビットの中で4bitの誤りを訂正することができる。GF(2)のガロア体では、エラー位置探索方程式は下記の式で表わされる。
Λ(x)=e+e+e+ex+e・・・(1)
データの高速な訂正処理を目的に、511ビットに対して一括して訂正処理を行う場合、図9に示すように、位置検索回路339_1〜位置検索回路339_510各々において、エラー位置探索方程式の係数(e、e、e、e)とx(ビットのアドレス)のべき乗との乗算を行い、乗算結果の和を求める演算を行う。各位置検索回路339_i(i=0〜510)では、この演算結果が0である場合、例えばH(ハイ)レベルのエラー検出信号bch[i]を出力し、演算結果が1の場合、L(ロウ)レベルのエラー検出信号bch[i]を出力する。誤り検出訂正回路では、このエラー検出信号の論理レベルに応じて、任意のアドレスのビットのデータの誤り訂正処理を行う。
位置検索回路各々は、式(1)を演算するため4個の乗算器を有する。そして、この乗算器において、各項(係数とべき乗の積)を求めた後に排他的論理和回路(EXOR回路)により各項の足し算を演算処理を行う。係数(e、e、e、e)とx(ビットのアドレス)とは、ベクトル表現すると、それぞれ9ビットのベクトルであり、GF(2)のガロア体の異なる値の乗算(9ビット×9ビット)は、論理積回路(アンド回路)とEXOR回路の組み合わせ回路(164個の論理ゲート)により演算できる。
例えば、ビット0用の誤りエラー位置探索方程式にビットの位置を代入する位置検索回路339_0では、164×4(164論理ゲート×乗算器の個数)+9×4(各項9ビットの足し算4か所)=692個の論理ゲートが必要となる。
誤り探索方程式一括処理回路(チェン探索部)では、総計692×511=353612個の論理ゲートが必要となる。
このように、チェン探索部339を構成する論理ゲートの個数が莫大な個数となり、誤り検出訂正回路を半導体回路に搭載することがチップサイズの観点から困難となる。
そこで本発明が解決しようとする課題は、位置検索回路の回路規模を縮小し、回路規模の縮小された誤り探索方程式一括処理回路(誤り位置検索回路)、誤り検出訂正回路、及びメモリ装置を提供することにある。
本発明の誤り位置検索回路は、ガロア体GF(2)上(mは整数、以下同じ)のmビットによりベクトル表現される(2−1)個の元を誤り位置探索式へ代入し、各元に対応したデータ列のビットに誤りが有るか否かを示すエラー検出信号を生成する誤り位置検索回路であって、前記誤り位置探索式の次数毎に前記元を代入する複数の位置検索回路を含んで構成され、1ビットのみが1となる規定値の固定ベクトルにより表した前記元を、前記複数の位置検索回路各々に代入し、代入して得られた各位置検索回路の結果を前記元毎に排他的論理和を演算して前記エラー検出信号とすることを特徴とする。
また、本発明の誤り位置検索回路は、前記位置検索回路が、前記誤り位置探索式の係数であるmビットの係数ベクトルと、1ビットのみが1となるmビットの前記元を表す固定ベクトルとから、m個の第1ベクトルを生成する第1ベクトル生成回路と、前記第1ベクトルのうち複数個のベクトルの和で表される(2−m−1)個の第2ベクトルを生成する第2ベクトル生成回路と、を備え、前記第1ベクトル生成回路は、前記固定ベクトルのうち1となるビットに応じて、前記係数ベクトルの各ビットとまたは各ビットの組み合わせのうちから前記第1ベクトルの決定を並列に行うm個のビット決定部を有し、前記第2ベクトル生成回路は、前記第1ベクトル、及び前記第2ベクトルのうち2つのベクトルの和により前記第2ベクトルを演算する排他的論理和回路を有することを特徴とする。
また、本発明の誤り検出訂正回路は、データ列を格納するデータ格納部と、前記データ列からシンドロームを計算するシンドローム計算部と、前記シンドロームから前記誤り位置探索方程式の係数を算出する誤り係数計算部と、前記データ列のデータのビットの位置を示す前記元と、前記係数との乗算結果の排他的論理和を前記元毎に演算する排他的論理和演算部を有する上記誤り位置検索回路と、前記エラー検出信号により前記データ列におけるビットのデータの誤りを訂正して出力する誤り訂正部と、を備えることを特徴とする。
また、本発明のメモリ装置は、上記誤り検出訂正回路を備えたメモリ装置であって、前記データ格納部は記憶素子から読み出したデータ列を格納する回路であり、前記元は前記記憶素子のメモリにおける列の位置を示すカラムアドレスであることを特徴とする。
本発明の誤り位置検索回路では、(2−1)個の元を1ビットのみが1となる規定値により表わし、複数の位置検索回路各々に代入する。この(2−1)個の元のうち、(2−m−1)個については、m個の規定値のうち複数個の和で表すことができるため、元を求めるために、ガロア体の異なる値の乗算(mビット×mビット)の乗算を行なう論理積回路とEXOR回路の組み合わせ回路(乗算器)が不要となる。
この位置検索回路では、誤り位置探索式の係数であるmビットの係数ベクトルと、1ビットのみが1となるmビットの固定ベクトルとから、m個の第1ベクトルを生成する第1ベクトル生成回路と、第1ベクトルのうち複数個のベクトルの和で表される(2−m−1)個の第2ベクトルを生成する第2ベクトル生成回路と、を備える。また、第1ベクトル生成回路は、固定ベクトルのうち1となるビットに応じて、係数ベクトルの各ビットとまたは各ビットの組み合わせのうちから第1ベクトルの決定を並列に行うm個のビット決定部を有する。また、第2ベクトル生成回路は、第1ベクトル、及び第2ベクトルのうち2つのベクトルの和により第2ベクトルを演算する排他的論理和回路を有する。
ガロア体GF(2)においてm=9の場合を考えると、第1ベクトル生成回路において、各ビットの組み合わせを生成する回路(係数ベクトルを演算する回路)には、EXOR回路が8個必要となる。また、この係数ベクトルと固定ベクトルとからm個の第1ベクトルを生成する第1ベクトル生成回路は、固定ベクトルのうち1となるビットに応じて、係数ベクトルの各ビットとまたは各ビットの組み合わせのうちから第1ベクトルの決定を行なうため、アンド回路やEXOR回路といった論理ゲートが不要となる。一方、第1ベクトルのうち複数個のベクトルの和により表される第2ベクトルを演算する第2ベクトル生成回路には、(2−9−1)×9(元の個数×9ビット)=4518個のEXOR回路が必要となる(詳細後述)。
つまり、次数毎に設けられた位置検索回路では、論理ゲートの個数が、8+4518=4526個必要となる。4ビットの誤りが訂正可能なBCH符号を用いた誤り検出訂正回路を例にとる場合、チェン探索部における位置検索回路は4個であるので、4個の位置検索回路では、論理ゲートが4526×4=18104個必要となる。
また、この4個の位置検索回路各々の出力(9ビット×511個)の和をとって、エラー検出信号を生成するため、4×9×511=18396個のEXOR回路を必要とする。
従って、チェン探索部では、18428+18396=36824個の論理ゲートが必要となるが、上述の従来のチェン探索部が353612の論理ゲートを必要とすることに対して、論理ゲートの個数を約1/10にまで、大幅に削減することができる。
よって、本発明によれば、位置検索回路の回路規模を縮小し、回路規模の縮小された誤り探索方程式一括処理回路(誤り位置検索回路)、誤り検出訂正回路、及びメモリ装置を提供することができる。
不揮発性半導体記憶装置10であるNAND型フラッシュメモリの構成例を示す概略ブロック図である。 誤り検出訂正回路13の詳細な構成例を示す図である。 原始多項式として、X+X+1を採用した場合のガロア体GF(2)の元を示した図である。 X[8:0]とY[8:0]との乗算によりZ[8:0]を出力するときの条件を示した図である。 y[0]〜y[8]の組合せから、p[0]〜p[8]を求める際の論理式、及び論理演算を行うp生成回路20を示す図である。 規定元を用いてX[8:0]=(1、0、1、0、1、0、1、0、1)と係数ベクトルeとの積を求める場合の論理式を示す。 チェン探索部33の構成の一例を示す図である。 位置検索回路SRC33_1、SRC33_2、SRC33_3、SRC33_4の構成を示すブロック図である。 従来のチェン探索部339の構成を示す図である。 Z[8:0]のベクトル成分を示した図である。
以下、図面を参照して、本発明の実施の形態について説明する。
[概要]
まず、情報データ長256ビットを訂正単位とし、その中の4ビットの誤りが訂正可能なBCH符号で使われるガロア体GF(2)のシステムでの乗算について説明する。ここで、ガロア体GF(2)において、2つのベクトルX[8:0]、Y[8:0]の乗算を行ない、乗算結果Z[8:0]を求める場合について考える。
まず、2つのベクトルX[8:0]、Y[8:0]を、以下のようにベクトル表示する。
X[8:0]=(x8,x7,x6,x5,x4,x3,x2,x1,x0)
Y[8:0]=(y8,y7,y6,y5,y4,y3,y2,y1,y0)
これにより、2つのベクトルを、多項式表現する場合、以下の様に表すことができる。
X[8:0]=x8×X+x7×X+x6×X+x5×X+x4×X+x3×X+x2×X+x1×X+x0
Y[8:0]=y8×X+y7×X+y6×X+y5×X+y4×X+y3×X+y2×X+y1×X+y0
なお、上記X、x0〜x8、y0〜y8は、それぞれ0または1である。
X[8:0]とY[8:0]との乗算結果、すなわちZ[8:0]は下記の様になる。なお、各元の成分の乗算において、乗算記号「×」は省略して示すものとする。
Z[8:0]=(x8y8)×X16
+(x8y7+x7y8)×X15
+(x8y6+x7y7+x7y8)×X14
+(x8y5+x7y6+x6y7+x5y8)×X13
+(x8y4+x7y5+x6y6+x5y7+x4y8)×X12
+(x8y3+x7y4+x6y5+x5y6+x4y7+x3y8)×X11
+(x8y2+x7y3+x6y4+x5y5+x4y6+x3y7+x2y8)×X10
+(x8y1+x7y2+x6y3+x5y4+x4y5+x3y6+x2y7+x1y8)×X
+(x8y0+x7y1+x6y2+x5y3+x4y4+x3y5+x2y6+x1y7+x0y8)×X
+(x7y0+x6y1+x5y2+x4y3+x3y4+x2y5+x1y6+x0y7)×X
+(x6y0+x5y1+x4y2+x3y3+x2y4+x1y5+x0y6)×X
+(x5y0+x4y1+x3y2+x2y3+x1y4+x0y5)×X
+(x4y0+x3y1+x2y2+x1y3+x0y4)×X
+(x3y0+x2y1+x1y2+x0y3)×X
+(x2y0+x1y1+x0y2)×X
+(x1y0+x0y1)×X
+(x0y0)
図10は、Z[8:0]のベクトル成分を示した図である。図10(a)は、X[8:0]のベクトル成分とY[8:0]のベクトル成分との積を示す。また、図10(b)は、乗算結果Z[8:0]の各ビットを、EXOR回路を用いてa0〜a14から演算する場合の論理式を示す。
図10(a)において、X[8:0]のベクトル成分とY[8:0]のベクトル成分と各積を図10(a)の縦方向に足し合わせた論理和が、上記多項式表現における各次数の係数となっている。
ここで、Z[8:0]の多項式表現における各次数の係数を、図10(a)に示すように、X16〜X各々に対応してa16〜a0とする。すなわち、以下の各式が成り立つ。
a16=x8y8、
a15=x8y7+x7y8、
a14=x8y6+x7y7+x7y8、
a13=x8y5+x7y6+x6y7+x5y8、
a12=x8y4+x7y5+x6y6+x5y7+x4y8、
a11=x8y3+x7y4+x6y5+x5y6+x4y7+x3y8、
a10=x8y2+x7y3+x6y4+x5y5+x4y6+x3y7+x2y8、
a9=x8y1+x7y2+x6y3+x5y4+x4y5+x3y6+x2y7+x1y8、
a8=x8y0+x7y1+x6y2+x5y3+x4y4+x3y5+x2y6+x1y7+x0y8、
a7=x7y0+x6y1+x5y2+x4y3+x3y4+x2y5+x1y6+x0y7、
a6=x6y0+x5y1+x4y2+x3y3+x2y4+x1y5+x0y6、
a5=x5y0+x4y1+x3y2+x2y3+x1y4+x0y5、
a4=x4y0+x3y1+x2y2+x1y3+x0y4、
a3=x3y0+x2y1+x1y2+x0y3、
a2=x2y0+x1y1+x0y2、
a1=x1y0+x0y1、
a0=x0y0
つまり、Z[8:0]を、a16〜a0を用いて多項式表現すると、以下の式が得られる。
Z[8:0]=a16×X16+a15×X15+a14×X14+a13×X13+a12×X12+a11×X11+a10×X10+a9×X+a8×X+a7×X+a6×X+a5×X+a4×X+a3×X+a2×X+a1×X+a0・・・(2)
ここで、ガロア体GF(2)の既約多項式(原始多項式)として、X+X+1を採用した場合、X以上の高次の次数は、下記のようにX以下の低次の次数によって表わすことができる。
=X+1、
10=X×X=X+X、
11=X×X10=X+X
12=X×X11=X+X
13=X×X12=X+X
14=X×X13=X+X=X+X+1、
15=X×X14=X+X+X、
16=X×X15=X+X+Xである。
これらの、高次の次数を、上記式(2)に代入し、次数毎にまとめると、すなわち同じXのべき乗の項を纏めると、Z[8:0]は、以下のように多項式表現される。
Z[8:0]=(a8+a13)×X
+(a7+a12+a16)×X
+(a6+a11+a15+a16)×X
+(a5+a10+a14+a15)×X
+(a4+a9+a13+a14)×X
+(a3+a12)×X
+(a2+a11+a16)×X
+(a1+a10+a15)×X
+(a0+a9+a14)・・・(3)
ここで、本実施形態において、Z[8:0]をベクトル表現する場合、以下の様に表現する。
Z[8:0]=(z8,z7,z6,z5,z4,z3,z2,z1,z0)これにより、Z[8:0]を、多項式表現する場合、以下の様になる。
Z[8:0]=z8×X+z7×X+z6×X+z5×X+z4×X+z3×X+z2×X+z1×X+z0
これにより、上記式(3)から、Z[8:0]の各ビットZ[8]〜Z[0]は、それぞれ下記の様に表される。
z8=a8+a13、
z7=a7+a12+a16、
z6=a6+a11+a15+a16、
z5=a5+a10+a14+a15、
z4=a4+a9+a13+a14、
z3=a3+a12、
z2=a2+a11+a16、
z1=a1+a10+a15、
z0=a0+a9+a14・・・(4)
つまり、2つのベクトルの乗算を行う際、乗算結果のうちの下位8(=m)ビット以外の上位ビットの要素についてそれぞれ排他的論理和演算して求め、その演算結果を予め与えられる原始多項式により、下位mビットのベクトル表現に変換する。また、変換後のmビットの各要素を、乗算結果のうちの下位mビットの要素についてそれぞれ排他的論理和演算して求めた演算結果の各要素と排他的論理和演算する。
このようにして、乗算結果Z[8:0]の各ビットZ[0]〜Z[8]は、X[8:0]の各ビットとY[8:0]の各ビットとの乗算結果の和(a0〜a14のいずれか)を組み合わせ、これらの組み合せの和を求めた結果で表される。
X[8:0]の各ビットとY[8:0]の各ビットとの乗算を行うには、9×9=81個のアンド回路が必要になる。
また、X[8:0]の各ビットとY[8:0]の各ビットとの乗算結果の和(a0〜a14のいずれか)を求めるためには、EXOR回路が用いられる。a0〜a16を全て求めるには、上記それぞれ上記(アンド回路の個数−17)=64個のEXOR回路が必要になる。
また、a0〜a14のいずれかを組み合わせて乗算結果Z[8:0]の各ビットを求めるために、EXOR回路が用いられる。すなわち、上記(4)を求めるために、19個のEXOR回路が必要になる。
図10(b)は、乗算結果Z[8:0]の各ビットを、EXOR回路を用いてa0〜a14から演算する場合の論理式を示す。なお、図10(b)において、符号「^」は排他的論理和演算を示し、Z[8:0]の各ビットをZ[0]〜Z[8]で、Z[8:0]の各次数の係数に用いるa0〜a16をa[0]〜a[16]で示している。
以上より、乗算結果Z[8:0]の各ビットは、X[8:0]の各ビットとY[8:0]の各ビットとの乗算結果を求めるためのアンド回路(81個)、乗算結果の和(a0〜a14のいずれか)を求めるEXOR回路(64個)、図10(b)に示す排他的論理和演算を行うEXOR回路(19個)、合計164個の論理ゲートにより演算される。
ところで、データの高速な訂正処理を目的に、511ビットに対して一括して訂正処理を行う場合、図9に示すように、位置検索回路339_1〜位置検索回路339_510各々において、エラー位置探索方程式の係数(e、e、e、e)とx(ビットのアドレス)のべき乗との乗算を行い、乗算結果の和を求める演算を行う。
位置検索回路各々は、上述の通り、164個の論理ゲートにより演算できる。そのため、誤り探索方程式一括処理回路(誤り位置検索回路)では、総計692×511=353612個の論理ゲートが必要となる。
このように、チェン探索部339を構成する論理ゲートの個数が莫大な個数となり、誤り検出訂正回路を半導体回路に搭載することがチップサイズの観点から困難となる。
そこで、本実施形態では、誤り位置検索回路を、誤り位置探索式の次数毎に元を代入する複数の位置検索回路を含み、1ビットのみが1となる規定値により表した元を、複数の位置検索回路各々に代入し、代入して得られた各位置検索回路の結果を元毎に排他的論理和を演算する構成とする。
ここで、GF(2)のガロア体を利用し、4ビットの誤りが訂正可能なBCH符号を用いる場合の、ガロア体の元(上述のX[8:0])について、図面を参照して説明する。図3は、原始多項式として、X+X+1を採用した場合のガロア体GF(2)の元を示した図である。図3において、Powerはガロア体の元を、Polynominalは元の多項式表現を、Vectorはベクトル表現をそれぞれ示している。
図3に示すように、9(=m)個の元α〜αが、1ビットのみが1となる規定値(規定元)である。つまり、規定元α〜αは、ベクトル表示、及びバイナリ表示により下記の様に表される。
α=(0、0、0、0、0、0、0、0、1)=9’b000000001、
α=(0、0、0、0、0、0、0、1、0)=9’b000000010、
α=(0、0、0、0、0、0、1、0、0)=9’b000000100、
α=(0、0、0、0、0、1、0、0、0)=9’b000001000、
α=(0、0、0、0、1、0、0、0、0)=9’b000010000、
α=(0、0、0、1、0、0、0、0、0)=9’b000100000、
α=(0、0、1、0、0、0、0、0、0)=9’b001000000、
α=(0、1、0、0、0、0、0、0、0)=9’b010000000、
α=(1、0、0、0、0、0、0、0、0)=9’b100000000
である。これらの規定元は、互いに他の規定元を用いて表すことのできない(線形独立な)元である。
一方、図3に示す残りの502(=512−9−1)個の元α〜α510は、原始多項式によりα=α+1であることを用いて、各元を多項式表示すると、下記の様になる。
α=α+1、
α10=αα=(α+1)α=α+α、
α11=α10α=(α+α)α=α+α
α12=α11α=(α+α)α=α+α
α13=α12α=(α+α)α=α+α
α13=α12α=(α+α)α=α+α
α14=α13α=(α+α)α=α+α=α+α+1、
α15=α14α=(α+α+1)α=α+α+α、
α16=α15α=(α+α+α)α=α+α+α
α17=α16α=(α+α+α)α=α+α+α
α18=α17α=(α+α+α)α=α+α+α
=α+1+α+α
=α+1、
α19=α18α=(α+1)α=α+α
=α+α+1
・・・
α510=α509α=(α+α)α=α+α
である。
このように、規定元α〜αを除く残りの502個の元α〜α510は、規定元α〜αのうちの複数個の和で表すことができる。
従って、誤り位置探索式の次数毎に元を代入する複数の位置検索回路を用意し、1ビットのみが1となる規定値により表した元(係数と元との積)を、複数の位置検索回路各々に代入し、代入して得られた各位置検索回路の結果を元毎に排他的論理和を演算する構成とすれば、位置検索回路の回路規模を小さくすることができる。
続いて、1ビットのみが1となる規定値により表した元(係数と元との積)の生成方法について、引き続いて説明する。上述のベクトルX[8:0]とベクトルY[8:0]との乗算によりベクトルZ[8:0]を求める乗算方法が、係数と元との積を求める際に用いられる方法である。ベクトルX[8:0]が上述の元(α〜α510)であり、ベクトルY[8:0]が、各位置検索回路での誤り位置探索式の係数(次数に応じてe、e、e、eのいずれか)であり、乗算結果のベクトルZ[8:0]が(係数と元との積、次数に応じてex、e、e、e)である。ここでは、係数と元との積として、exを求める場合について説明する。
ベクトルZ[8:0]のうちZ[0]は、上述の通り、Z[0]=a0+a9+a14と表されるが(図10(b)参照)、これを、X[8:0]、及びY[8:0]の成分(要素)を用い、更にX[8:0]の成分毎に、すなわちx0〜x8毎にまとめると、Z[0]は以下の様に表される。
Z[0]=y0x0+y8x1+y7x2+y6x3+y5x4+y4x5+(y3+y8)x6+(y2+y7)x7+(y1+y6)x8
ここで、y3+y8=p0、y2+y7=p1、y1+y6=p2とすれば、Z[0]は、更に、X[8:0]の各ビット、Y[8:0]の各ビット、Y[8:0]のビットの組合せを用いて下記の様に表される。
Z[0]=y0x0+y8x1+y7x2+y6x3+y5x4+y4x5+p0x6+p1x7+p2x8
次に、Z[8:0]のうちZ[1]は、Z[1]=a1+a10+a15と表されるが(図10(b)参照)、これを、X[8:0]、及びY[8:0]の成分(要素)を用い、更にX[8:0]の成分毎に、すなわちx0〜x8毎にまとめると、Z[1]は以下の様に表される。
Z[1]=y1x0+y0x1+y8x2+y7x3+y6x4+y5x5+y4x6+(y3+y8)x7+(y2+y7)x8
ここで、上述のZ[0]と同様に、y3+y8=p0、y2+y7=p1とすれば、Z[1]は、更に、X[8:0]の各ビット、Y[8:0]の各ビット、Y[8:0]のビットの組合せを用いて下記の様に表される。
Z[1]=y1x0+y0x1+y8x2+y7x3+y6x4+y5x5+y4x6+p0x7+p1x8
次に、Z[8:0]のうちZ[2]は、Z[2]=a2+a11+a16と表されるが(図10(b)参照)、これを、X[8:0]、及びY[8:0]の成分(要素)を用い、更にX[8:0]の成分毎に、すなわちx0〜x8毎にまとめると、Z[2]は以下の様に表される。
Z[2]=y2x0+y1x1+y0x2+y8x3+y7x4+y6x5+y5x6+y4x7+(y3+y8)x8
ここで、上述のZ[0]、Z[1]と同様に、y3+y8=p0とすれば、Z[2]は、更に、X[8:0]の各ビット、Y[8:0]の各ビット、Y[8:0]のビットの組合せを用いて下記の様に表される。
Z[2]=y2x0+y1x1+y0x2+y8x3+y7x4+y6x5+y5x6+y4x7+p0x8
次に、Z[8:0]のうちZ[3]は、Z[3]=a3+a12と表されるが(図10(b)参照)、これを、X[8:0]、及びY[8:0]の成分(要素)を用い、更にX[8:0]の成分毎に、すなわちx0〜x8毎にまとめると、Z[3]は以下の様に表される。
Z[3]=y3x0+y2x1+y1x2+y0x3+y8x4+y7x5+y6x6+y5x7+y4x8
このように、Z[2]は、X[8:0]の各ビット、Y[8:0]の各ビットを用いて下記の様に表される。
Z[3]=y3x0+y2x1+y1x2+y0x3+y8x4+y7x5+y6x6+y5x7+y4x8
次に、Z[8:0]のうちZ[4]は、Z[4]=a4+a9+a13+a14と表されるが(図10(b)参照)、これを、X[8:0]、及びY[8:0]の成分(要素)を用い、更にX[8:0]の成分毎に、すなわちx0〜x8毎にまとめると、Z[4]は以下の様に表される。
Z[4]=y4x0+(y3+y8)x1+(y2+y7)x2+(y1+y6)x3+(y0+y5)x4+(y4+y8)x5+(y3+y7+y8)x6+(y2+y6+y7)x7+(y1+y5+y6)x8
ここで、上述のZ[0]と同様に、y3+y8=p0、y2+y7=p1、y1+y6=p2とし、また、y0+y5=p3、y4+y8=p4、y3+y7+y8=p5、y2+y6+y7=p6、y1+y5+y6=p7とすれば、Z[4]は、更に、X[8:0]の各ビット、Y[8:0]の各ビット、Y[8:0]のビットの組合せを用いて下記の様に表される。
Z[4]=y4x0+p0x1+p1x2+p2x3+p3x4+p4x5+p5x6+p6x7+p7x8
次に、Z[8:0]のうちZ[5]は、Z[5]=a5+a10+a14+a15と表されるが(図10(b)参照)、これを、X[8:0]、及びY[8:0]の成分(要素)を用い、更にX[8:0]の成分毎に、すなわちx0〜x8毎にまとめると、Z[5]は以下の様に表される。
Z[5]=y5x0+y4x1+(y3+y8)x2+(y2+y7)x3+(y1+y6)x4+(y0+y5)x5+(y4+y8)x6+(y3+y7+y8)x7+(y2+y6+y7)x8
ここで、上述のZ[4]と同様に、y3+y8=p0、y2+y7=p1、y1+y6=p2、y0+y5=p3、y4+y8=p4、y3+y7+y8=p5、y2+y6+y7=p6とすれば、Z[5]は、更に、X[8:0]の各ビット、Y[8:0]の各ビット、Y[8:0]のビットの組合せを用いて下記の様に表される。
Z[5]=y5x0+y4x1+p0x2+p1x3+p2x4+p3x5+p4x6+p5x7+p6x8
次に、Z[8:0]のうちZ[6]は、Z[6]=a6+a11+a15+a16と表されるが(図10(b)参照)、これを、X[8:0]、及びY[8:0]の成分(要素)を用い、更にX[8:0]の成分毎に、すなわちx0〜x8毎にまとめると、Z[6]は以下の様に表される。
Z[6]=y6x0+y5x1+y4x2+(y3+y8)x3+(y2+y7)x4+(y1+y6)x5+(y0+y5)x6+(y4+y8)x7+(y3+y7+y8)x8
ここで、上述のZ[4]、Z[5]と同様に、y3+y8=p0、y2+y7=p1、y1+y6=p2、y0+y5=p3、y4+y8=p4、y3+y7+y8=p5とすれば、Z[6]は、更に、X[8:0]の各ビット、Y[8:0]の各ビット、Y[8:0]のビットの組合せを用いて下記の様に表される。
Z[6]=y6x0+y5x1+y4x2+p0x3+p1x4+p2x5+p3x6+p4x7+p5x8
次に、Z[8:0]のうちZ[7]は、Z[7]=a7+a12+a16と表されるが(図10(b)参照)、これを、X[8:0]、及びY[8:0]の成分(要素)を用い、更にX[8:0]の成分毎に、すなわちx0〜x8毎にまとめると、Z[7]は以下の様に表される。
Z[7]=y7x0+y6x1+y5x2+y4x3+(y3+y8)x4+(y2+y7)x5+(y1+y6)x6+(y0+y5)x7+(y4+y8)x8
ここで、上述のZ[4]、Z[5]、Z[6]と同様に、y3+y8=p0、y2+y7=p1、y1+y6=p2、y0+y5=p3、y4+y8=p4とすれば、Z[7]は、更に、X[8:0]の各ビット、Y[8:0]の各ビット、Y[8:0]のビットの組合せを用いて下記の様に表される。
Z[7]=y7x0+y6x1+y5x2+y4x3+p0x4+p1x5+p2x6+p3x7+p4x8
次に、Z[8:0]のうちZ[8]は、Z[8]=a8+a13と表されるが(図10(b)参照)、これを、X[8:0]、及びY[8:0]の成分(要素)を用い、更にX[8:0]の成分毎に、すなわちx0〜x8毎にまとめると、Z[8]は以下の様に表される。
Z[8]=y8x0+y7x1+y6x2+y5x3+y4x4+(y3+y8)x5+(y2+y7)x6+(y1+y6)x7+(y0+y5)x8
ここで、上述のZ[4]、Z[5]、Z[6]、Z[7]と同様に、y3+y8=p0、y2+y7=p1、y1+y6=p2、y0+y5=p3とすれば、Z[8]は、更に、X[8:0]の各ビット、Y[8:0]の各ビット、Y[8:0]のビットの組合せを用いて下記の様に表される。
Z[8]=y8x0+y7x1+y6x2+y5x3+y4x4+p0x5+p1x6+p2x7+p3x8
このように、Y[8:0](他方の元)のビットのうちX[8:0](一方の元)のビットを同一とするビットY[8]〜Y[0]を排他的論理和演算してY[8:0]の各ビットの組み合わせを求める。
これにより、Z[8:0]のうちの各ビットZ[0]〜Z[8]は、2つのベクトルのうちX[8:0](元)の各ビットと、Y[8:0](係数)の各ビットとまたは各ビットの組み合わせとの論理積演算を行い、この論理積演算の演算結果を排他的論理和演算することにより得られることになる。この演算の乗算方法をまとめた図が、図4、及び図5である。図4は、X[8:0]とY[8:0]との乗算によりZ[8:0]を出力するときの条件を示した図である。また、図5は、y[0]〜y[8]の組合せから、p[0]〜p[8]を求める際の論理式、及び論理演算を行うp生成回路20を示す図である。
p生成回路20は、EXOR回路20_0、EXOR回路20_1、EXOR回路20_2、EXOR回路20_3、EXOR回路20_4、EXOR回路20_5、EXOR回路20_6、EXOR回路20_7から構成される。
EXOR回路20_0は、第1入力にY[8:0]のうちの1ビットY[3]が入力され、第2入力にY[8:0]のうちの1ビットY[8]が入力され、入力される2信号の排他的論理和演算を行い、p0(=y3+y8)を出力する。
EXOR回路20_1は、第1入力にY[8:0]のうちの1ビットY[2]が入力され、第2入力にY[8:0]のうちの1ビットY[7]が入力され、入力される2信号の排他的論理和演算を行い、p1(=y2+y7)を出力する。
EXOR回路20_2は、第1入力にY[8:0]のうちの1ビットY[1]が入力され、第2入力にY[8:0]のうちの1ビットY[6]が入力され、入力される2信号の排他的論理和演算を行い、p3(=y1+y6)を出力する。
EXOR回路20_3は、第1入力にY[8:0]のうちの1ビットY[0]が入力され、第2入力にY[8:0]のうちの1ビットY[5]が入力され、入力される2信号の排他的論理和演算を行い、p4(=y0+y5)を出力する。
EXOR回路20_4は、第1入力にY[8:0]のうちの1ビットY[4]が入力され、第2入力にY[8:0]のうちの1ビットY[8]が入力され、入力される2信号の排他的論理和演算を行い、p5(=y4+y8)を出力する。
EXOR回路20_5は、第1入力にEXOR回路20_0の出力信号であるp0(=y3+y8)が入力され、第2入力にY[8:0]のうちの1ビットY[7]が入力され、入力される2信号の排他的論理和演算を行い、p5(=y3+y7+y8)を出力する。
EXOR回路20_6は、第1入力にEXOR回路20_1の出力信号であるp1(=y2+y7)が入力され、第2入力にY[8:0]のうちの1ビットY[6]が入力され、入力される2信号の排他的論理和演算を行い、p6(=y2+y6+y7)を出力する。
EXOR回路20_7は、第1入力にEXOR回路20_2の出力信号であるp2(=y1+y6)が入力され、第2入力にY[8:0]のうちの1ビットY[5]が入力され、入力される2信号の排他的論理和演算を行い、p7(=y1+y5+y6)を出力する。
p生成回路20は、Y[8:0]のうちのY[0]〜Y[8]の組合せから、p[0]〜p[8]を演算する。
これにより、図4に示すように、Z[8:0]のうちの各ビットは、X[8:0]の各ビットx[0]〜x[8]と、Y[8:0]の各ビットy[0]〜y[8]またはp[0]〜p[8](y[0]〜y[8]の組合せ)により求めることができる。つまり、X[8:0]とY[8:0]との乗算によりZ[8:0]を求める際、ベクトルX[8:0]は9ビットになる。また、ベクトルY[8:0]は、Y[8:0]の9ビットのうちの複数ビットと、9ビットのうちいくつかを組合せた複数ビットとの併せて9ビットになる。
ここで、X[8:0]を、規定元(α〜α)とすれば、8ビットのベクトルで表されるX[8:0](元α〜α)各々と、同じく8ビットのベクトルで表されるY[8:0](以下、係数ベクトルe=(e18、e17、e16、e15、e14、e13、e12、e11、e10)とする)との積は、図4、及び図5を参照して、それぞれ以下の様に表される。
α=(e18、e17、e16、e15、e14、e13、e12、e11、e10
α=(e17、e16、e15、e14、(e13+e18)、e12、e11、e10、e18
α=(e16、e15、e14、(e13+e18)、(e12+e17)、e11、e10、e18、e17
α=(e15、e14、(e13+e18)、(e12+e17)、(e11+e16)、e10、e18、e17、e16
α=(e14、(e13+e18)、(e12+e17)、(e11+e16)、(e10+e15)、e18、e17、e16、e15
α=((e13+e18)、(e12+e17)、(e11+e16)、(e10+e15)、(e14+e18)、e17、e16、e15、e14
α=((e12+e17)、(e11+e16)、(e10+e15)、(e14+e18)、(e13+e17+e18)、e16、e15、e14、(e13+e18))
α=((e11+e16)、(e10+e15)、(e14+e18)、(e13+e17+e18)、(e12+e16+e17)、e15、e14、(e13+e18)、(e12+e17))
α=((e10+e15)、(e14+e18)、(e13+e17+e18)、(e12+e16+e17)、(e11+e15+e16)、e14、(e13+e18)、(e12+e17)、(e11+e16))
従って、規定元と係数eとの積は、係数ベクトルeの各ビットまたは各ビットの組合せの和により計算できる。なお、係数ベクトルの各ビットは、後述する誤り係数計算部32により演算される。そのため、次数xに対応して設けられる位置検索回路(SRC)では、係数ベクトルeの各ビットの組合せを演算する論理ゲート(EXOR回路)により構成される回路(図5(a)に示す演算を行う図5(b)に示すp生成回路20)が必要となる。なお、p生成回路20は、上述のように8個のEXOR回路で構成することができる。
以上、exを求める場合の規定元(α〜α)各々と係数eとの積について説明したが、残りの502個の元(α〜α510)各々と係数eとの積については、以下のように位置検索回路(SRC)において演算される。
図6は、規定元を用いてX[8:0]=(1、0、1、0、1、0、1、0、1)と係数ベクトルeとの積を求める場合の論理式を示す。
図3に示すように、X[8:0]=(1、0、1、0、1、0、1、0、1)は、規定元を用いて(α+α+α+α+α)と表すことができる。従って、X[8:0]=(1、0、1、0、1、0、1、0、1)と係数eとの積は、規定元(α〜α)と係数eを用いて、図6に示す論理式に示すように表すことができる。
X[8:0]×e=(1、0、1、0、1、0、1、0、1)×e
=eα+eα+eα+eα+eα
=(e18+e16+e14+(e12+e17)+(e10+e15)、
17+e15+(e13+e18)+(e11+e16)+(e14+e18)、
16+e14+(e12+e17)+(e10+e15)+(e13+e17+e18)、
15+(e13+e18)+(e11+e16)+(e14+e18)+(e12+e16+e17)、
14+(e12+e17)+(e10+e15)+(e13+e17+e18)+(e11+e15+e16)、
13+e11+e18+e16+e14
12+e10+e17+e15+(e13+e18)、
11+e18+e16+e14+(e12+e17)、
10+e17+e15+(e13+e18)+(e11+e16))
このように、502個の元(α〜α510)各々についても、位置検索回路(SRC)において、規定元(α〜α)と係数eを用いて表すことができることから、これらの元についても、係数ベクトルeの各ビットまたは各ビットの組合せの和により表すことができる。
なお、上記X[8:0]×eを生成するため、すなわち、規定元(α〜α)と係数eとの積の5つの和を演算するため、EXOR回路が4つ必要であるように見える。しかし、実際は、3ビットが1の元(α〜α510のいずれか)と2ビットが1の元(α〜α510のいずれか)との和を演算するか、あるいは、1ビットが1の規定元と4ビットが1の元(α〜α510のいずれか)との和を演算すれば求められるため、位置検索回路(SRC)におけるEXOR回路の個数としては9個で足りる。
例えば、図3に示す元のうち3ビットが1である元α14、α15、α16各々とeとの積eα14、eα15、eα16は、それぞれ以下のように表される。
α14=e(α+α+1)=e(α+α
α15=e(α+α+α)=e(α+α10
α16=e(α+α+α)=e(α+α11
これらの各積を演算するには、規定元を含む511個の元のいずれかの元と係数eとの積と、規定元を含む511個の元のいずれかの元と係数eとの積との和を求めればよいので、演算回路としてはそれぞれ9ビットの和をとる9個のEXOR回路があれば演算できる。
その他の元についても、各元と係数eとの積は、規定元を含む511個の元のうちの2つの元に対してそれぞれ係数eを乗じた9ビットの値の和をとることにより演算できるので、演算回路としてはそれぞれEXOR回路が9個あれば演算できる。
まとめると、9個の規定元と係数eとの積は、8個のEXOR回路で構成することができ、502個の規定元と係数eとの積は、9×502個のEXOR回路で構成することができ、併せて(8+9×502)=4526個のEXOR回路で構成することができる。
他の係数e、e、eと規定元を含む510個の元各々との積を求めるSRC33_2、SRC33_3、SRC33_4についても、SRC33_1と同様に4526個のEXOR回路で構成することができる。つまり、4個の位置検索回路では、論理ゲートを4526×4=18104個で構成することができる。
また、チェン探索部では、この4個の位置検索回路各々の出力(9ビット×511個)の和をとって、エラー検出信号を生成するため、4×9×511=18396個のEXOR回路を必要とする。
従って、チェン探索部では、18428+18396=36824個の論理ゲートが必要となるが、従来のチェン探索部が353612の論理ゲートを必要とすることに対して、論理ゲートの個数を約1/10にまで、大幅に削減することができる。
[メモリ装置の構成]
以下、図面を参照して、本発明の実施の形態について説明する。図1は、不揮発性半導体記憶装置10であるNAND型フラッシュメモリの構成例を示す概略ブロック図である。
不揮発性半導体記憶装置10は、メモリセルアレイ11、ページバッファ12、誤り検出訂正回路13、バッファ14、I/Oパッド15、制御回路16、アドレスデコーダ17、及びロウ及びブロックデコーダ18を含んで構成される。
メモリセルアレイ11は、複数のスタックゲート構造のトランジスタ、すなわち電気的書き換え可能な不揮発性メモリセル(記憶素子)をカラム方向(列方向)に直列接続して、ビット線毎に設けられたNANDセルストリングを、行方向(ビット線の配列方向)に複数個配置したブロックから構成される。このブロックは、ビット線の配線方向に複数個配置される。また、このブロックは、メモリセルのデータの消去単位で設けられている。各ブロックにおいては、同一行に配置された不揮発性メモリ各々のゲートには、ビット線に直行したワード線が接続される。
1本のワード線により選択される不揮発性メモリセルの範囲がプログラム及び読み出しの単位となる1ページである。
ページバッファ12は、ページ単位のデータのプログラム及び読み出しを行うため、ビット線毎に設けられたページバッファ回路から構成されている。このページバッファ12におけるページバッファ回路各々は、それぞれのビット線に接続され、接続されたビット線の電位を増幅して判定するセンスアンプ回路として用いるラッチ回路を有する。
ページバッファ12(データ格納部)は、不揮発性半導体記憶装置10のデータ読み出し動作において、メモリセルアレイ11の1ページ分のメモリセルが記憶するデータ(データ列)からなるセルデータCell Dataが入力され、このデータを増幅して誤り検出訂正回路13に対して出力する。一方、ページバッファ12は、不揮発性半導体記憶装置10のデータ書込み(プログラム)動作において、誤り検出訂正回路13から供給されるデータを内部のラッチ回路に格納し、ベリファイ動作を行いつつ、全てのデータを符号データCode Dataとして1ページ内のメモリセルに書き込む。
この符号データCode Dataには、誤り検出訂正回路13が生成するパリティデータParityが含まれる。なお、本実施形態において、例えば情報長32Byte (バイト)に対しBCH符号を用いて4Bit(ビット)訂正を行う誤り訂正システムを例に取るとき、1ページは、2K(=2048)バイト、すなわち、16k(=16384)ビットの通常データを各々記憶するメモリセルと、2304ビットのパリティデータを各々記憶するメモリセルから構成される。すなわち、セルデータCell Data、及び符号データCode Dataは、(16k+2304)ビットから構成される。また、1ページは、誤り検出訂正回路13の訂正の単位として、例えば64個のセクタに分割されている。つまり、1セクタに対応するデータは、32バイト(=256ビット)の通常データ、36ビットのパリティデータから構成される。
また、本実施形態において、メモリ外部よりのアクセスは、通常メモリに対して対応するカラムアドレスY[13:0]を入力することにより行われる。パリティデータは、通常データの訂正用に付加される内部データであり、外部からは直接アクセスされることはない。
誤り検出訂正回路13は、詳細については後述するが、不揮発性半導体記憶装置10のデータ読み出し動作において、ページバッファ12から読み出されたデータを、セクタ毎に処理して、エラー位置探索方程式の係数を算出し、内部のラッチに保持する。また、誤り検出訂正回路13は、読み出し動作において、カラムアドレスにより位置が示されるビットのデータの誤りを訂正し、バッファ14に書き込む。このバッファ14に書き込まれた訂正後のデータは、書き込み後において再びバッファ14をアクセスすることにより、I/Oパッド15を介して訂正済データCorrected Dataとして外部へ出力される。なお、I/Oパッド15と誤り検出訂正回路13との間に入出力回路を設けて、この入出力回路を介して外部へデータを出力してもよい。
また、誤り検出訂正回路13は、不揮発性半導体記憶装置10のデータ書き込み動作において、I/Oパッド15から入力される情報データInformation Dataを、バッファ14を介して受け取る。誤り検出訂正回路13は、受け取った情報データInformation DataからパリティデータParityを生成するとともに、受け取った情報データInformation Data、及びパリティデータParityをページバッファ12に対して出力する。ページバッファ12は、これらのデータを符号データCode Dataとして、選択されているページに接続されるメモリセルに書き込む。
制御回路16は、各種制御信号が入力され、不揮発性メモリセルに対するデータのプログラム、読み出し、消去などの動作、及びベリファイの動作の制御を行う。
例えば、制御信号は、外部クロック信号、チップイネーブル信号/CE、読み出しイネーブル信号/RE、プログラムイネーブル信号/WE、コマンドラッチイネーブル信号CLE、アドレスラッチイネーブル信号ALE、ライトプロテクト信号/WPなどである。制御回路16は、これらの制御信号と、I/Oパッド15から入力されるコマンドデータとが示す動作モードに応じて、各回路に対して内部制御信号を出力する。
例えば、制御回路16は、プログラムイネーブル信号/WEの立ち上がり時にコマンドラッチイネーブル信号CLEがロウ(L)レベルからハイ(H)レベルになることにより、I/Oパッド15からコマンドデータを取り込み、内部のレジスタに保持する。
アドレスデコーダ17は、I/Oパッド15から入力されるアドレス(ロウアドレス、ブロックアドレス、カラムアドレス)を制御回路16からの内部制御信号に基づいて保持する。また、アドレスデコーダ17は、保持したアドレスを、制御回路16からの内部制御信号に基づいて、ロウ及びブロックデコーダ18、ページバッファ12、及び誤り検出訂正回路13へ出力する。
例えば、制御回路16は、プログラムイネーブル信号/WEの立ち上がり時にアドレスラッチイネーブル信号ALEがロウ(L)レベルからハイ(H)レベルになることにより、I/Oパッド15からアドレスを取り込み、アドレスデコーダ17の内部レジスタに保持する。
ロウ及びブロックデコーダ18は、アドレスデコーダ17が保持し、出力するロウアドレス、及びブロックアドレスに応じて、メモリセルアレイ11のブロック、及びワード線の選択を行い、1ページ上のメモリセルを選択する。
また、アドレスデコーダ17は、内部に保持するカラムアドレスに応じて、メモリセルアレイ11のビット線及びページバッファ12の選択を行う。
本実施形態において、データ読み出し動作においては、ページバッファ12内のセルデータCell Dataが誤り検出訂正回路13に読み出され、エラー位置探索方程式の係数がセクタ毎に計算される。そして、セクタ毎に計算された係数とカラムアドレスとに応じて、カラムアドレスにより位置が示されるビットのデータ、すなわちメモリセルのデータ(16kビット)に誤りがあるか否かが検出され、誤りがある場合は訂正されて、バッファ14に書き込まれる。このバッファ14に書き込まれた訂正後のデータは、書き込み後において再びバッファ14をアクセスすることにより、訂正済データCorrected DataとしてI/Oパッド15から出力される。
また、データ書き込み動作においては、バッファ14にいったんページバッファ12内に格納されたセルデータCell Dataが読み出される。バッファ14は、例えばSRAM(Static Random Access Memory)により構成される。
バッファ14では、セルデータCell Dataのうち、入力されるカラムアドレスに対応する部分のデータが、I/Oパッド15からのデータInformation Dataに書き換えられる。また、誤り検出訂正回路13では、バッファ14の書き換え後のデータを含む1セクタ分のデータに対応したパリティデータが算出される。そして、これらのパリティデータを含む64セクタ分のデータが、符号データCode Dataとして、ページバッファ12を介して選択されているページに書き込まれる。
次に、図2は、誤り検出訂正回路13の詳細な構成例を示す図である。
本実施形態においては、誤り検出訂正回路(以下、ECC回路とも称する)13として、BCH符号(Bose−Chaudhuri Hocquenghem code)を用いたECC回路を例にとって説明する。ECC回路は、BCH符号で代表されるガロア体演算を利用したブロック符号である。なお、BCH符号の替りに、例えばHamming符号(Hamming code)、リードソロモン符号(Reed−Solomon code)を用いることも可能である。なお、以下の説明では、情報データ長32バイト(=256ビット)を訂正単位、すなわち1ページの1/64のセルのデータを訂正の単位とし、それぞれの訂正単位のうちの4ビットのデータの訂正が可能なBCH符号を用いたECC回路について説明する。
誤り検出訂正回路13は、データの復号を司るデコーダ部30と、訂正用パリティデータParityを生成し、訂正用パリティデータParityをセルへの書き込みデータに付加するエンコーダ部40とを含んで構成される。
このうち、エンコーダ部40は、パリティ生成回路41を有する。パリティ生成回路41は、バッファ14に書き込まれた情報データInformation Dataを生成多項式で除算して得られるパリティデータParityを生成する。また、パリティ生成回路41は、情報データInformation Dataに、生成したパリティデータParityを付加して、ページバッファ12に対して出力する。これらのデータは、不揮発性半導体記憶装置10のデータ書き込み時において、選択された1ページに書き込まれる符号データCode Dataとなる。なお、本実施形態では、不揮発性半導体記憶装置10からのデータ読み出し時において、誤り検出訂正回路13が高速にデータ訂正処理を行うことに特徴を有するものであり、以下ではデコーダ部30について詳細に説明する。
デコーダ部30は、シンドローム計算部31、誤り係数計算部32、チェン探索部33、及び誤り訂正部34を含んで構成される。
シンドローム計算部31は、不揮発性半導体記憶装置10のデータ読み出し時に、ページバッファ12に読み出されたセルデータCell Dataが、符号データとしてセクタ毎に入力され、この符号データを独立な最小多項式で除算することによりシンドロームを計算する。4ビットのデータの誤り訂正が可能なBCH符号で使用される独立な最小多項式は、4つである。シンドローム計算部31は、これら4つの最小多項式に対応して、4つのシンドローム算出回路31_1〜31_4を備えている。これらのシンドローム算出回路31_1〜31_4は、それぞれシンドロームS1、S3、S5、S7を計算する。
誤り係数計算部32は、これらのシンドロームS1、S3、S5、S7を使用して、セクタ毎のエラー位置探索方程式の係数e、e、e、e、及びeを計算する。係数e、e、e、e、及びeは、エラー位置探索方程式Λ(x)=e+e+e+e+eの係数である。エラー位置探索方程式Λ(x)は、ページバッファ12からセクタ毎に読み出されたビットに誤りがあるか否かを探索する際にチェン探索部33において用いられる。
次に、チェン探索部33の構成、及び動作について説明する。図7は、チェン探索部33の構成の一例を示す図である。
チェン探索部33は、4個の位置検索回路、及び排他的論理和演算部33_11を含んで構成される。
図7に示すように、4個の位置検索回路は、SRC(Calculation of every bit for ex)33_1、SRC(Calculation of every bit for e)33_2、SRC(Calculation of every bit for e)33_3、SRC(Calculation of every bit for e)33_4である。以下、これらを、それぞれ位置検索回路SRC33_1、SRC33_2、SRC33_3、SRC33_4と言う。
位置検索回路SRC33_1、SRC33_2、SRC33_3、SRC33_4がそれぞれ演算するex、e、e、eにおけるxは、符号データ、つまりページバッファに格納されたセルデータCell Dataの位置を示す値(図3に示す511個の9ビットの元α;s=0〜510)である。また、係数e、e、e、eは、それぞれ誤り係数計算部32から入力される9ビットのベクトルである。
位置検索回路SRC33_1は、係数eを取り込み、元α〜α510各々に係数eを乗じて、i0〜i510を演算する。
位置検索回路SRC33_2は、係数eを取り込み、元α〜α510各々に係数eを乗じて、j0〜j510を演算する。
位置検索回路SRC33_3は、係数eを取り込み、元α〜α510各々に係数eを乗じて、k0〜k510を演算する。
位置検索回路SRC33_4は、係数eを取り込み、元α〜α510各々に係数eを乗じて、l0〜l510を演算する。
排他的論理和演算部33_11は、係数eと、位置検索回路SRC33_1、SRC33_2、SRC33_3、SRC33_4の演算結果各々の排他的論理和を各元α毎に演算し、例えば元αであれば(i0+j0+k0+e)を演算し、エラー検出信号bch[510:0]を、誤り訂正部34に対して出力する。排他的論理和演算部33_11における演算は、エラー位置探索方程式Λ(x)=e+e+e+e+eに対して、x=α(s=0〜510)をそれぞれ代入する演算であり、Λ(x)の値が0である場合、エラー検出信号bch[x]はHレベルとなる。一方、Λ(x)の値が0でない場合、エラー検出信号bch[x]はLレベルとなる。
誤り訂正部34は、本実施形態において、511個のEXOR回路34_s(図2参照、s=0〜510)により構成される。EXOR回路34_sは、エラー検出信号bch[s]がHレベルであれば、元αによりビット線の位置が示されるビットのデータの論理(0または1)を反転して、バッファ14に対して書き込む。この訂正済データは、バッファ14をアクセスすることにより、Corrected Dataの1ビットとして出力される。一方、EXOR回路34_sは、エラー検出信号bch[s]がLレベルであれば、元αによりビット線の位置が示されるビットのデータの論理をそのまま、バッファ14に対して書き込む。この訂正されないデータは、バッファ14をアクセスすることにより、Corrected Dataの1ビットとして出力される。
図8は、位置検索回路SRC33_1、SRC33_2、SRC33_3、SRC33_4の構成を示すブロック図である。
図8に示すように、位置検索回路SRC33_i(i=1、2、3、4)は、係数eと規定元α〜α各々との積を演算する第1ベクトル生成回路33aと、係数eと規定元α〜α510各々との積を演算する第2ベクトル生成回路33bとから構成される。
第1ベクトル生成回路33aは、図5(b)に示すp生成回路20と、8個の選択回路(選択回路80_0〜80_8)とから構成される。
p生成回路20は、誤り係数計算部32から入力される係数ベクトルe=(ei8、ei7、ei6、ei5、ei4、ei3、ei2、ei1、ei0)から、p0〜p7を生成する。p0〜p7は、図5(a)に示す論理式においてy[0]〜y[8]を用いて求められる値である。ここで、y[0]〜y[8]の各々は、それぞれei0〜ei8である。p生成回路20は、入力されるei0〜ei8と生成したp0〜p7とを、選択回路80_0〜選択回路80_8に対して出力する。
選択回路80_0〜選択回路80_8は、予め設定された固定値である9’b000000001、9’b000000010、9’b000000100、9’b000001000、9’b000010000、9’b000100000、9’b001000000、9’b010000000、9’b100000000に応じて、ei0〜ei8とp0〜p7とのうちから、9個を選択して、eα〜eαを出力する。
このeα〜eαは、図4に示す論理式においてy[0]〜y[8]の各々を、それぞれei0〜ei8と置き換えたときのZ[8:0]である。
なお、これらの選択回路80_0〜選択回路80_8は、誤り係数計算部32が求めるei0〜ei8とp生成回路20が生成したp0〜p7とから、9個の値を固定値に応じて選択するだけの回路であるので、EXOR回路などの論理ゲートを必要としない。また、それぞれ9ビットのeα〜eαの出力先が排他的論理和演算部33_11のEXOR回路の入力と第2ベクトル生成回路33bのEXOR回路の入力とに決まっている。そのため、選択回路を用いず、p生成回路20の出力信号である係数eの組合せと、誤り係数計算部32の出力信号である係数との出力先を、既に決められたEXOR回路の入力先に、配線接続部を設けて接続してもよい。従って、選択回路80_0〜選択回路80_8または配線接続部を、規定元と係数との積を演算する決定部(第1ベクトル生成回路)と言うものとする。
第2ベクトル生成回路33bは、係数eと規定元α〜α510各々との積を演算する回路である。この回路は、EXOR回路81_i(図8(b)に示す)を(511−9)=502個備えている。EXOR回路81_iは、規定元を含む511個の元各々と係数eとの積(511個の乗算結果)のうち2つの乗算結果であるeαと乗算結果eα(それぞれ9ビットの値)との和を演算する。
例えば、係数eとα〜α510との積の演算結果は、以下の様になる(図3参照)。
(α^2=e(α)、
(α^2=e(α)、
(α^2=e(α)、
(α^2=e(α)、
(α^2=e(α)、
(α^2=e(α10)=e(α+α)、
(α^2=e(α12)=e(α+α)、
(α^2=e(α14)=e(α+α+1)=e(α+α)、
(α^2=e(α16)=e(α+α+α)=e(α+α11)、・・・
これらの演算は、第1ベクトル生成回路33a、または第2ベクトル生成回路33bにおいて行われる。上記演算結果のうち、e(α^2、e(α^2、e(α^2、e(α^2、e(α^2については、第1ベクトル生成回路33aにおいて演算され、第1ベクトル生成回路33aは、これらを第2ベクトル生成部33a、及び排他的論理和演算部33_11に対して出力する。排他的論理和演算部33_11では、これらを、それぞれj0、j1、j2、j3、j4として排他的論理和演算に用いる。
また、e(α^2、e(α^2、e(α^2、e(α^2については、第2ベクトル生成回路33bにおいて演算され、第2ベクトル生成回路33aは、これらを第2ベクトル生成部33a、及び排他的論理和演算部33_11に対して出力する。排他的論理和演算部33_11は、これらを、それぞれj5、j6、j7、j8として排他的論理和演算に用いる。
なお、第2ベクトル生成回路33bは、e(α^2、e(α^2、e(α^2、e(α^2の演算を、図8(b)に示すEXOR回路により、511個のうちの1つの元にeを乗算した値(9ビット)と511個のうちの1つの元にeを乗算した値(9ビット)との和を求める演算をする。上記例では、e(α^2=eα+eα、e(α^2=eα+eα、e(α^2=eα+eα、e(α^2=eα+eα11、・・・の様に、2つの入力で和を演算する。
つまり、第2ベクトル生成回路33bにおける各回路は、図3に示す規定元のうち複数元の和に対して係数eを乗じた値(9ビット)を出力する回路である。しかし、規定元以外の元502個各々に係数eを乗じた値は、規定元を含む元511個各々に係数eを乗じた値(計511個)のうちの2つの値の和により求めることができるので、第2ベクトル生成部ではEXOR回路が4518個(=502個×9ビット分)あれば演算を行なうことができる。
このように、本発明は、ガロア体GF(2)上(mは整数、以下同じ)のmビットによりベクトル表現される(2−1)個の元を誤り位置探索式へ代入し、各元に対応したデータ列のビットに誤りが有るか否かを示すエラー検出信号を生成する誤り位置検索回路(チェン探索部33)であって、誤り位置探索式の次数毎に元を代入する複数の位置検索回路(位置検索回路SRC33_1〜33_4)を含んで構成され、1ビットのみが1となる規定値の固定ベクトル(α〜α)により表した元を、複数の位置検索回路各々に代入し、代入して得られた各位置検索回路の結果(i0〜i510、j0〜j510、k0〜k510、l0〜l510、を元毎に排他的論理和を演算してエラー検出信号bch[510:0]とする。
また、位置検索回路は、誤り位置探索式の係数であるmビットの係数ベクトル(e〜e)と、1ビットのみが1となるmビットの元を表す固定ベクトル(9’b000000001〜9’b100000000)とから、m個の第1ベクトル(規定元と係数との積)を生成する第1ベクトル生成回路33aと、第1ベクトルのうち複数個のベクトルの和で表される(2−m−1)個の第2ベクトルを生成する第2ベクトル生成回路33bと、を備え、第1ベクトル生成回路33aは、固定ベクトルのうち1となるビットに応じて、係数ベクトルの各ビットとまたは各ビットの組み合わせのうちから第1ベクトルの決定を並列に行うm個のビット決定部(選択回路80_0〜80_8または配線接続部)を有し、第2ベクトル生成回路33bは、第1ベクトル、及び第2ベクトルのうち2つのベクトルの和により第2ベクトルを演算する排他的論理和回路(33_i)を有する。
本発明によれば、9個の規定元と係数(係数ベクトル)との積は、第1ベクトル生成回路33aにおいて8個のEXOR回路で構成することができる。また、502個の規定元と係数との積は、第2ベクトル生成回路33bにおいて9×502個のEXOR回路で構成することができる。つまり、位置検索回路SRC33_1〜33_4各々を、(8+9×502)=4526個のEXOR回路で構成することができる。
従って、4個の位置検索回路では、合計で論理ゲ ートを4526×4=18104個で構成することができる。
また、チェン探索部33における排他的論理和演算部33_11では、この4個の位置検索回路各々の出力(9ビット×511個)の和をとって、エラー検出信号を生成するため、4×9×511=18396個のEXOR回路を必要とする。
従って、チェン探索部33では、18428+18396=36824個の論理ゲートが必要となるが、上述の従来のチェン探索部339が353612の論理ゲートを必要とすることに対して、論理ゲートの個数を約1/10にまで、大幅に削減することができる。
よって、本発明によれば、位置検索回路の回路規模を縮小し、回路規模の縮小された誤り探索方程式一括処理回路(誤り位置検索回路)、誤り検出訂正回路、及びメモリ装置を提供することができる。
以上、この発明の実施形態を、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
10…不揮発性半導体記憶装置、11…メモリセルアレイ、12…ページバッファ、13…誤り検出訂正回路、14…バッファ、15…I/Oパッド、16…制御回路、17…アドレスデコーダ、18…ロウ及びブロックデコーダ、20…p生成回路、30…デコーダ部、31…シンドローム計算部、31_1,31_2,31_3,31_4…シンドローム算出回路、32…誤り係数計算部、33,339…チェン探索部、33a…第1ベクトル生成回路、33b…第2ベクトル生成回路、34…誤り訂正部、34_s,20_0,20_1,20_2,20_3,20_4,20_5,20_6,20_7,81_i…排他的論理和回路(EXOR回路)、40…エンコーダ部、41…パリティ生成回路、80_0,81_1,80_8…選択回路、SRC33_1,SRC33_2,SRC33_3,SRC33_4,339_0,339_1,339_510…位置検索回路、33_11…排他的論理和演算部

Claims (4)

  1. ガロア体GF(2)上(mは整数、以下同じ)のmビットによりベクトル表現される(2−1)個の元を誤り位置探索式へ代入し、各元に対応したデータ列のビットに誤りが有るか否かを示すエラー検出信号を生成する誤り位置検索回路であって、
    前記誤り位置探索式の次数毎に前記元を代入する複数の位置検索回路を含んで構成され、
    1ビットのみが1となる規定値の固定ベクトルにより表した前記元を、前記複数の位置検索回路各々に代入し、代入して得られた各位置検索回路の結果を前記元毎に排他的論理和を演算して前記エラー検出信号とすることを特徴とする誤り位置検索回路。
  2. 前記位置検索回路は、
    前記誤り位置探索式の係数であるmビットの係数ベクトルと、1ビットのみが1となるmビットの前記元を表す固定ベクトルとから、m個の第1ベクトルを生成する第1ベクトル生成回路と、
    前記第1ベクトルのうち複数個のベクトルの和で表される(2−m−1)個の第2ベクトルを生成する第2ベクトル生成回路と、
    を備え、
    前記第1ベクトル生成回路は、前記固定ベクトルのうち1となるビットに応じて、前記係数ベクトルの各ビットとまたは各ビットの組み合わせのうちから前記第1ベクトルの決定を並列に行うm個のビット決定部を有し、
    前記第2ベクトル生成回路は、前記第1ベクトル、及び前記第2ベクトルのうち2つのベクトルの和により前記第2ベクトルを演算する排他的論理和回路を有することを特徴とする請求項1に記載の誤り位置検索回路。
  3. データ列を格納するデータ格納部と、
    前記データ列からシンドロームを計算するシンドローム計算部と、
    前記シンドロームから前記誤り位置探索方程式の係数を算出する誤り係数計算部と、
    前記データ列のデータのビットの位置を示す前記元と、前記係数との乗算結果の排他的論理和を前記元毎に演算する排他的論理和演算部を有する請求項1または請求項2に記載の誤り位置検索回路と、
    前記エラー検出信号により前記データ列におけるビットのデータの誤りを訂正して出力する誤り訂正部と、を備えることを特徴とする誤り検出訂正回路。
  4. 請求項3に記載の誤り検出訂正回路を備えたメモリ装置であって、
    前記データ格納部は記憶素子から読み出したデータ列を格納する回路であり、
    前記元は前記記憶素子のメモリにおける列の位置を示すカラムアドレスであることを特徴とするメモリ装置。
JP2012209772A 2012-09-24 2012-09-24 誤り位置検索回路、誤り検出訂正回路、及びメモリ装置 Pending JP2014068058A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2012209772A JP2014068058A (ja) 2012-09-24 2012-09-24 誤り位置検索回路、誤り検出訂正回路、及びメモリ装置
KR1020130096080A KR102021560B1 (ko) 2012-09-24 2013-08-13 오류 위치 탐색 회로, 그리고 그것을 포함하는 오류 검출 정정 회로 및 메모리 장치
US14/034,803 US9384083B2 (en) 2012-09-24 2013-09-24 Error location search circuit, and error check and correction circuit and memory device including the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012209772A JP2014068058A (ja) 2012-09-24 2012-09-24 誤り位置検索回路、誤り検出訂正回路、及びメモリ装置

Publications (1)

Publication Number Publication Date
JP2014068058A true JP2014068058A (ja) 2014-04-17

Family

ID=50744092

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012209772A Pending JP2014068058A (ja) 2012-09-24 2012-09-24 誤り位置検索回路、誤り検出訂正回路、及びメモリ装置

Country Status (1)

Country Link
JP (1) JP2014068058A (ja)

Similar Documents

Publication Publication Date Title
JP5043562B2 (ja) エラー訂正回路、その方法及び前記回路を備える半導体メモリ装置
US7836377B2 (en) Semiconductor memory device
US9384083B2 (en) Error location search circuit, and error check and correction circuit and memory device including the same
US8990667B2 (en) Error check and correction circuit, method, and memory device
JP4836608B2 (ja) 半導体記憶装置
JP2007305267A (ja) 半導体記憶装置
KR102064508B1 (ko) 오류 검출 정정 회로 및 이를 포함하는 메모리 장치
JP4846384B2 (ja) 半導体記憶装置
US10498364B2 (en) Error correction circuits and memory controllers including the same
US9317352B2 (en) Galois field arithmetic operation circuit and memory device
US9152493B2 (en) Error check and correction circuit and semiconductor memory
JP2014033364A (ja) 誤り検出訂正回路、及びメモリ装置
US10133628B2 (en) Apparatuses and methods for encoding using error protection codes
KR102021560B1 (ko) 오류 위치 탐색 회로, 그리고 그것을 포함하는 오류 검출 정정 회로 및 메모리 장치
JP2014068058A (ja) 誤り位置検索回路、誤り検出訂正回路、及びメモリ装置
KR20210150149A (ko) 신드롬과 부분 계수 정보를 병렬적으로 생성하는 에러 정정 장치 및 방법
KR102027949B1 (ko) 에러 검출 정정 회로 및 반도체 메모리
KR102064857B1 (ko) 갈로아체 연산 회로 및 메모리 장치
JP2014064242A (ja) 誤り検出訂正回路及び半導体メモリ
JP2014116659A (ja) 誤り検出訂正回路、及び半導体記憶装置
JPS5953640B2 (ja) 記憶装置

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20141226