(57)【特許請求の範囲】
【請求項１】
１メモリセルあたりｍビット（ｍは２以上の整数）のデータを記憶するメモリ装置であって、当該データの誤り訂正を行うための誤り訂正符号をリード・ソロモン符号としたとき、
入力データを符号化してバイト単位のリード・ソロモン符号のデータに変換する符号化器と、
上記符号化器によって符号化されたバイト単位のリード・ソロモン符号のデータをｍビットのパラレルの書き込みデータに変換する第１のビット変換器と、
上記第１のビット変換器によって変換された上記ｍビットのパラレルの書き込みデータを書き込む複数のメモリセルを有したセルアレイと、
上記セルアレイからパラレルのｍビットのデータを読み出してバイト単位のパラレルの読み出しデータに変換する第２のビット変換器と、
上記第２のビット変換器によって変換された上記読み出しデータをバイト単位に復号化及び誤り訂正処理して出力データを得るリード・ソロモン符号復号器とを備えることを特徴とするメモリ装置。
【請求項２】
上記入力データおよび出力データは所定ビットのパラレルデータまたはシリアルデータであって、
上記符号化器の前段に、上記入力データを１バイトのパラレルデータに変換する前段用のビット変換器を設け、
上記リード・ソロモン符号復号器の後段に、この復号器より出力される１バイトのパラレルデータを上記所定ビットのパラレルデータまたはシリアルデータに変換する後段用のビット変換器を設けることを特徴とする請求項１に記載のメモリ装置。
【請求項３】
１メモリセルあたりｍビット（ｍは２以上の整数）のデータを記憶する複数のメモリセルを有するセルアレイを持つメモリ部と、
上記メモリ部に対してデータの書き込みや読み出しを行うためのコントローラとを備え、上記データの誤り訂正を行うための誤り訂正符号をリード・ソロモン符号としたとき、
上記コントローラは、
入力データを符号化してバイト単位のリード・ソロモン符号のデータに変換する符号化器と、
上記符号化器によって符号化されたバイト単位のデータをｍビットのパラレルの書き込みデータに変換して上記メモリセルに書き込む第１のビット変換器と、
上記メモリ部のセルアレイからパラレルのｍビットのデータを読み出してバイト単位のパラレルの読み出しデータに変換する第２のビット変換器と、
上記第２のビット変換器によって変換された上記読み出しデータをバイト単位に復号化及び誤り訂正処理して出力データを得るリード・ソロモン符号復号器とを有することを特徴とするメモリ装置。
【請求項４】
上記メモリ部は、１個または複数個のフラッシュメモリで構成されることを特徴とする請求項３に記載のメモリ装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、メモリ装置に関する。詳しくは、多ビットのデータを記憶するメモリセルからなるメモリに対する誤り訂正符号としてリード・ソロモン符号を用いることによって、少ない誤り訂正数で充分な性能を得、誤り訂正回路の回路規模を小さくすると共に、使用するメモリセルの数も少なくしようとしたメモリ装置に係るものである。
【０００２】
【従来の技術】
近年、メモリ装置として、フラッシュメモリ等の半導体メモリが広く使用されている。フラッシュメモリでは、半導体基板上に積層形成された浮遊ゲート（電荷蓄積層）および制御ゲートからなるメモリセルを多数並べてなるセルアレイ（通常は６５００万セル程度）を用いてデータの記憶を行っている（図５参照）。この場合、各セルアレイには、浮遊ゲートに蓄える電荷量の大きさによってデータが記憶される。
【０００３】
図６Ａ，Ｂは、フラッシュメモリに用いるメモリセル１００の構造を示している。すなわち、メモリセル１００は、半導体基板１０１に電荷蓄積層（浮遊ゲート）１０２および制御ゲート１０３が積層されて形成されている。メモリセル１００にデータを書き込む場合には、浮遊ゲート１０２に蓄える電荷量を制御し、記憶するデータ（“０”または“１”）に応じて、図７に示した２値のしきい電圧のいずれかにする。一方、メモリセル１００よりデータを読み出す場合には、２値のしきい電圧の中間に設けた基準電圧を用い、メモリセル１００のしきい電圧が基準電圧よりも高いか低いかによって、そのメモリセル１００のデータが“０”であるか“１”であるかの判断をする。
【０００４】
半導体メモリでは、高集積度化、高密度化に伴う種々の影響による信頼性低下を防ぐことが重要な課題となっている。特に、書き込み／消去数の増加に伴うセル不良のように経年変化によって起こる不良の防止のために、例えばハミング符号のような誤り訂正符号を用いた誤り訂正回路を半導体メモリの内部に組み込むことがしばしばある。
【０００５】
誤り訂正符号は、情報データに対して検査データと呼ばれる冗長なデータが付加されてなり、その検査データを用いることで符号内の誤りの訂正が行われる。例えば、情報データが５１２ビットの短縮化ハミング符号は、図８に示すように、１０ビットの検査データが付加されてなり、５２２ビットの符号の中に１つの誤りが生じても誤りを訂正することが可能になる。
【０００６】
図９は、ハミング符号を用いた誤り訂正回路を内部に組み込んだフラッシュメモリ１１０の構成を示している。このフラッシュメモリ１１０は、複数のメモリセルを有するセルアレイ１１１と、入力データＤinを短縮化ハミング符号に変換し、セルアレイ１１１に書き込むための書き込みデータＷＤを得る符号化器１１２と、セルアレイ１１１より読み出される読み出しデータＲＤに誤り訂正処理を施して出力データＤoutを得るハミング符号復号器１１３とを有している。この場合、符号化器１１２およびハミング符号復号器１１３は、誤り訂正回路を構成している。そして、符号化器１１２では、入力データＤinの５１２ビット毎に１０ビットの検査データが付加され、情報データが５１２ビットの短縮化ハミング符号が生成される。
【０００７】
図９に示すフラッシュメモリ１１０において、データの書き込みは、以下のように行われる。すなわち、入力データＤinは符号化器１１２に入力される。そして、この符号化器１１２では、入力データＤinが情報データが５１２ビットの短縮化ハミング符号に変換されて書き込みデータＷＤとされる。そして、符号化器１１２より出力される書き込みデータＷＤは、セルアレイ１１１に供給されて書き込まれる。
【０００８】
一方、データの読み出しは、以下のように行われる。セルアレイ１１１より読み出された読み出しデータＲＤはハミング符号復号器１１３に入力される。ハミング符号復号器１１３では、読み出しデータＲＤの１符号内に誤りがなければ情報データがそのまま出力データＤoutとして出力され、また読み出しデータＲＤの１符号内の誤りのビット数が１であるときは、誤りが訂正された後に情報データが出力データＤoutとして出力される。
【０００９】
次に、誤り訂正符号として２誤り訂正可能な短縮化ＢＣＨ符号（Bose-Chaudhuri-Hocquenghem code）を使用する場合を取り上げる。なお、ＢＣＨ符号および符号の短縮化については、例えば今井秀樹著「符号理論」（電子情報通信学会）等の文献に論じられている。例えば、情報データが５１２ビットの短縮化ＢＣＨ符号は、図１０に示すように、２０ビットの検査データが付加されてなり、５３２ビットの符号の中に２つの誤りが生じても誤りを訂正することが可能になる。
【００１０】
図１１は、ＢＣＨ符号を用いた誤り訂正回路を内部に組み込んだフラッシュメモリ１２０の構成を示している。このフラッシュメモリ１２０は、複数のメモリセルを有するセルアレイ１２１と、入力データＤinを短縮化ＢＣＨ符号に変換し、セルアレイ１２１に書き込むための書き込みデータＷＤを得る符号化器１２２と、セルアレイ１２１より読み出される読み出しデータＲＤに誤り訂正処理を施して出力データＤoutを得るＢＣＨ符号復号器１２３とを有している。この場合、符号化器１２２およびＢＣＨ符号復号器１２３は誤り訂正回路を構成している。そして、符号化器１２２では、入力データＤinの５１２ビット毎に２０ビットの検査データが付加され、情報データが５１２ビットの２誤り訂正可能な短縮化ＢＣＨ符号が生成される。
【００１１】
図１１に示すフラッシュメモリ１２０において、データの書き込みは以下のように行われる。すなわち、入力データＤinは符号化器１２２に入力される。そして、この符号化器１２２では、入力データＤinが情報データが５１２ビットの短縮化ＢＣＨ符号に変換されて書き込みデータＷＤとされる。そして、符号化器１２２より出力される書き込みデータＷＤは、セルアレイ１２１に供給されて書き込まれる。
【００１２】
一方、データの読み出しは以下のように行われる。セルアレイ１２１より読み出された読み出しデータＲＤはＢＣＨ符号復号器１２３に入力される。ＢＣＨ符号復号器１２３では、読み出しデータＲＤの１符号内に誤りがなければ情報データがそのまま出力データＤoutとして出力され、また読み出しデータＲＤの１符号内の誤りのビット数が１または２であるときは、誤りが訂正された後に情報データが出力データＤoutとして出力される。
【００１３】
図９、図１１に示すように、フラッシュメモリ１１０，１２０の内部に誤り訂正回路を組み込むことで、経年変化によってある程度のセル不良が起こっても、書き込んだデータの読出エラーが起こらないようにすることが可能になる。ただし、一般に誤り訂正符号では、多くの誤りを訂正するためには冗長なデータである検査データを多く持つ必要があり、使用するメモリセルの数が多くなると共に、誤り訂正回路の回路規模も大きくなる。
【００１４】
次に、複数のフラッシュメモリ（フラッシュメモリチップ）を用いたメモリカードについて述べる。１チップのフラッシュメモリでは扱えない量のデータを記憶するためのメモリ装置として、複数個のフラッシュメモリとコントローラとからなるメモリカードがある。
【００１５】
図１２は、ＢＣＨ符号を用いた誤り訂正回路をコントローラに備えるメモリカード１３０の構成を示している。このメモリカード１３０は、２個のフラッシュメモリ１３１，１３２と、これらフラッシュメモリ１３１，１３２に対してデータの書き込みや読み出しを行うためのコントローラ１３３とを備えている。
【００１６】
そして、コントローラ１３３は、カード外部とのデータのやり取りを行うためのカードインタフェース１３４と、入力データＤinを短縮化ＢＣＨ符号に変換し、フラッシュメモリ１３１，１３２に書き込むための書き込みデータＷＤを得る符号化器１３５と、フラッシュメモリ１３１，１３２より読み出される読み出しデータＲＤに誤り訂正処理を施して出力データＤoutを得るＢＣＨ符号復号器１３６と、フラッシュメモリ１３１，１３２に対するデータの書き込み／読み出しをコントロールするフラッシュインタフェース１３７とを有して構成されている。
【００１７】
この場合、符号化器１３５およびＢＣＨ符号復号器１３６は誤り訂正回路を構成している。そして、符号化器１３５では、入力データＤinの５１２ビット毎に２０ビットの検査データが付加され、情報データが５１２ビットの２誤り訂正可能な短縮化ＢＣＨ符号が生成される。
【００１８】
図１２に示すメモリカード１３０において、データの書き込みは以下のように行われる。すなわち、入力データＤinはカードインタフェース１３４によってカード内部に取り込まれて符号化器１３５に供給される。そして、この符号化器１３５では、入力データＤinが情報データが５１２ビットの短縮化ＢＣＨ符号に変換されて書き込みデータＷＤとされる。そして、符号化器１３５より出力される書き込みデータＷＤは、フラッシュインタフェース１３７のコントロールに従ってフラッシュメモリ１３１またはフラッシュメモリ１３２に書き込まれる。
【００１９】
一方、データの読み出しは以下のように行われる。フラッシュインタフェース１３７のコントロールに従ってフラッシュメモリ１３１またはフラッシュメモリ１３２より読み出された読み出しデータＲＤはＢＣＨ符号復号器１３６に入力される。ＢＣＨ符号復号器１３６では、読み出しデータＲＤの１符号内に誤りがなければ情報データがそのまま出力データＤoutとして出力され、また読み出しデータＲＤの１符号内の誤りのビット数が１または２であるときは、誤りが訂正された後に情報データが出力データＤoutとして出力される。このようにＢＣＨ符号復号器１３６より出力される出力データＤoutはカードインタフェース１３４を介してカード外部に出力される。
【００２０】
以上述べたように、複数個のフラッシュメモリを用いたメモリカードにおいても誤り訂正符号を用いることができる。コントローラで誤り訂正を行う場合、フラッシュメモリに内蔵する場合に比べて、より大きな誤り訂正回路を持つことができるため、より多くの誤りを訂正できるという特徴がある。
【００２１】
次に、フラッシュメモリの多値記録について述べる。近年、フラッシュメモリの記憶容量の増大を目的として、１つのセルに多ビットを記憶するフラッシュメモリが提案されている。例えば、４値の多値記録を行うフラッシュメモリのメモリセル１００では、図１３Ａ〜Ｄに示すように、浮遊ゲート１０２に蓄える電荷量を制御して、記憶するデータ（“１１”，“１０”，“０１”または“００”）に応じて、図１４に示した４値のしきい電圧のいずれかにする。データを読み出すには、各しきい電圧の間にそれぞれ設けた３値の基準電圧を用いる。メモリセル１００のしきい電圧と各基準電圧とを比較することによって、メモリセル１００のデータを読み取る。これによって１つのメモリセル１００で２ビットの情報を記憶できる。
【００２２】
多値記録のフラッシュメモリに対しても２値記録の場合と同様に誤り訂正回路を用いることができる。図１５は、ＢＣＨ符号を用いた誤り訂正回路を内部に組み込んだ１６値（４ビット）記録を行うフラッシュメモリ１４０の構成を示している。このフラッシュメモリ１４０は、複数のメモリセルを有するセルアレイ１４１と、入力データＤinを短縮化ＢＣＨ符号に変換し、セルアレイ１４１に書き込むための書き込みデータＷＤを得る符号化器１４２と、この符号化器１４２より出力される書き込みデータＷＤをシリアルデータから４ビットのパラレルデータに変換してセルアレイ１４１に供給する１ビット／４ビット変換器１４３とを有している。
【００２３】
また、フラッシュメモリ１４０は、セルアレイ１４１より読み出される読み出しデータＲＤを４ビットのパラレルデータからシリアルデータに変換する４ビット／１ビット変換器１４４と、この４ビット／１ビット変換器１４４でシリアルデータに変換された読み出しデータＲＤに誤り訂正処理を施して出力データＤoutを得るＢＣＨ符号復号器１４５とを有している。この場合、符号化器１４２およびＢＣＨ符号復号器１４５は誤り訂正回路を構成している。そして、符号化器１４２では、入力データＤinの５１２ビット毎に２０ビットの検査データが付加され、情報データが５１２ビットの２誤り訂正可能な短縮化ＢＣＨ符号が生成される。
【００２４】
図１５に示すフラッシュメモリ１４０において、データの書き込みは以下のように行われる。すなわち、入力データＤinは符号化器１４２に入力される。そして、この符号化器１４２では、入力データＤinが情報データが５１２ビットの短縮化ＢＣＨ符号に変換されて書き込みデータＷＤとされる。そして、符号化器１４２より出力される書き込みデータＷＤは、１ビット／４ビット変換器１４３でシリアルデータより４ビットのパラレルデータ（メモリセルに記憶するための４ビットデータ）に変換されてセルアレイ１４１に供給され、セルアレイ１４１を構成する各メモリセルに順次書き込まれる。
【００２５】
一方、データの読み出しは以下のように行われる。セルアレイ１４１より読み出された読み出しデータＲＤは４ビット／１ビット変換器１４４で４ビットのパラレルデータよりシリアルデータに変換されてＢＣＨ符号復号器１４５に供給される。ＢＣＨ符号復号器１４５では、読み出しデータＲＤの１符号内に誤りがなければ情報データがそのまま出力データＤoutとして出力され、また読み出しデータＲＤの１符号内の誤りのビット数が１または２であるときは、誤りが訂正された後に情報データが出力データＤoutとして出力される。
【００２６】
【発明が解決しようとする課題】
図１５に示すフラッシュメモリ１４０のように多値記録を行うフラッシュメモリでは、１つのセル不良によって複数ビットが誤りになるという特徴がある。従来のフラッシュメモリでは１つのメモリセルに１ビットを記憶していたために、誤り訂正符号としては、ビット誤りを訂正する符号が主に使われてきたが、１つのメモリセルの不良によって複数ビットが誤りになってしまうと、ビット単位の誤りを訂正する符号では効率が悪い。
【００２７】
例えば、１メモリセルで４ビットのデータの記憶を行うフラッシュメモリでは、１つのメモリセルにアクセス不能になってしまうと、その誤りを訂正するために４訂正の符号を用いなければならなくなるということが起こる。ここで、前述した通り、誤り訂正符号で多くの誤りを訂正しようとすると誤り訂正回路が大きくなるため、回路規模が増大するという問題が生じる。また多くの誤りを訂正するためには、より多くの冗長データを付加する必要があるため、多くのメモリセルが必要になるという問題も生じる。
【００２８】
そこで、この発明では、少ない誤り訂正数で充分な性能を得、誤り訂正回路の回路規模を小さくすると共に、使用するメモリセルの数も少なくし得るメモリ装置を提供することを目的とする。
【００２９】
【課題を解決するための手段】
この発明に係るメモリ装置は、１メモリセルあたりｍビット（ｍは２以上の整数）のデータを記憶するメモリ装置であって、当該データの誤り訂正を行うための誤り訂正符号をリード・ソロモン符号としたとき、入力データを符号化してバイト単位のリード・ソロモン符号のデータに変換する符号化器と、この記符号化器によって符号化されたバイト単位のリード・ソロモン符号のデータをｍビットのパラレルの書き込みデータに変換する第１のビット変換器と、この第１のビット変換器によって変換されたｍビットのパラレルの書き込みデータを書き込む複数のメモリセルを有したセルアレイと、このセルアレイからパラレルのｍビットの読み出しデータを読み出してバイト単位のパラレルの読み出しデータに変換する第２のビット変換器と、この第２のビット変換器によって変換された読み出しデータをバイト単位に復号化及び誤り訂正処理して出力データを得るリード・ソロモン符号復号器とを備えることを特徴とするものである。
【００３０】
また、この発明に係るメモリ装置は、１メモリセルあたりｍビット（ｍは２以上の整数）のデータを記憶する複数のメモリセルを有するセルアレイを持つメモリ部と、このメモリ部に対してデータの書き込みや読み出しを行うためのコントローラとを備え、データの誤り訂正を行うための誤り訂正符号をリード・ソロモン符号としたとき、コントローラは、入力データを符号化してバイト単位のリード・ソロモン符号のデータに変換する符号化器と、この符号化器によって符号化されたバイト単位のリード・ソロモン符号のデータをｍビットのパラレルの書き込みデータに変換してメモリセルに書き込む第１のビット変換器と、メモリ部のセルアレイからパラレルのｍビットのデータを読み出してバイト単位のパラレルの読み出しデータに変換する第２のビット変換器と、この第２のビット変換器によって変換された読み出しデータをバイト単位に復号化及び誤り訂正処理して出力データを得るリード・ソロモン符号復号器とを有することを特徴とするものである。
【００３１】
セルアレイの各メモリセルには、それぞれｍビット（ｍは２以上の整数）のデータが記憶される。書き込み時、入力データは符号化器によって書き込みデータとしてのリード・ソロモン符号に変換される。第１のビット変換器は、符号化器によって符号化されたバイト単位のリード・ソロモン符号のデータをｍビットのパラレルの書き込みデータに変換してセルアレイに書き込む。リード・ソロモン符号は、複数ビットをまとめて１バイトとし、バイト単位で誤り訂正を行う誤り訂正符号である。読み出し時、セルアレイの各メモリセルに記憶されていたｍビットのデータが第２のビット変換器に読み出される。第２のビット変換器は、セルアレイからパラレルのｍビットのデータを読み出してバイト単位のパラレルの読み出しデータに変換する。この読み出しデータに対してリード・ソロモン符号復号器で誤り訂正処理が施されて出力データが得られる。
【００３２】
このように、ｍビットのデータを記憶するメモリセルからなるメモリに対する誤り訂正符号としてバイト単位で誤り訂正を行うリード・ソロモン符号が用いられることで、少ない誤り訂正数で充分な性能を得、誤り訂正回路の回路規模を小さくすると共に、使用するメモリセルの数も少なくすることが可能となる。
【００３３】
【発明の実施の形態】
以下、図面を参照しながら、この発明の実施の形態について説明する。図１は、第１の実施の形態としてのフラッシュメモリ１０の構成を示している。このフラッシュメモリ１０は、２誤り訂正可能な短縮化リード・ソロモン符号（Reed-Solomon Code）を用いた誤り訂正回路を組み込んだ１６値（４ビット）記録を行うフラッシュメモリである。リード・ソロモン符号および短縮化リード・ソロモン符号は、複数ビットをまとめて１バイトとし、バイト単位で誤り訂正を行う符号である。なお、リード・ソロモン符号についても、その内容に関しては前掲の今井秀樹著「符号理論」（電子情報通信学会）等の文献で論じられている。
【００３４】
いま、８ビットを１バイトとし、情報データ数を１２８バイトとして、２誤り訂正可能な短縮化リード・ソロモン符号を例とする。この場合、図２に示すように、検査データは４バイトとなり、符号全体の長さは、１３２バイト＝１０５６ビットとなる。
【００３５】
図１において、フラッシュメモリ１０は、複数のメモリセルを有するセルアレイ１１と、８ビットのパラレルデータである入力データＤinを短縮化リード・ソロモン符号に変換し、セルアレイ１１に書き込むための書き込みデータＷＤを得る符号化器１２と、この符号化器１２より出力される書き込みデータＷＤを、図３に示すように、１バイト（８ビット）のパラレルデータから４ビットのパラレルデータ（メモリセルに記憶するための４ビットデータ）に変換してセルアレイ１１に供給する８ビット／４ビット変換器１３とを有している。
【００３６】
また、フラッシュメモリ１０は、セルアレイ１１より読み出される読み出しデータＲＤを、図３に示すように、４ビットのパラレルデータから１バイト（８ビット）のパラレルデータに変換する４ビット／８ビット変換器１４と、この４ビット／８ビット変換器１４で１バイトのパラレルデータに変換された読み出しデータＲＤに誤り訂正処理を施して出力データＤoutを得るリード・ソロモン符号復号器１５とを有している。この場合、符号化器１２およびリード・ソロモン符号復号器１５は誤り訂正回路を構成している。そして、符号化器１２では、入力データＤinの１２８バイト毎に４バイトの検査データが付加され、情報データが１２８バイトの２誤り訂正可能な短縮化リード・ソロモン符号が生成される。
【００３７】
図１に示すフラッシュメモリ１０において、データの書き込みは以下のように行われる。すなわち、８ビットのパラレルデータである入力データＤinは符号化器１２に入力される。そして、この符号化器１２では、入力データＤin（情報データ）が１２８バイトの短縮化リード・ソロモン符号に変換されて書き込みデータＷＤとされる。そして、符号化器１２より出力される書き込みデータＷＤは、８ビット／４ビット変換器１３で１バイト（８ビット）のパラレルデータより４ビットのパラレルデータに変換されてセルアレイ１１に供給され、セルアレイ１１を構成する各メモリセルに順次書き込まれる。
【００３８】
一方、データの読み出しは以下のように行われる。セルアレイ１１より読み出された読み出しデータＲＤは４ビット／８ビット変換器１４で４ビットのパラレルデータより１バイト（８ビット）のパラレルデータに変換されてリード・ソロモン符号復号器１５に供給される。リード・ソロモン符号復号器１５では、読み出しデータＲＤの１符号内に誤りがなければ情報データがそのまま出力データＤoutとしてバイト単位で出力され、また読み出しデータＲＤの１符号内の誤りのバイト数が１または２であるときは、誤りが訂正された後に情報データが出力データＤoutとしてバイト単位で出力される。
【００３９】
なお、入力データＤinや出力データＤoutが８ビットのパラレルデータでないときは、符号化器１２の前段に入力データＤinを８ビットのパラレルデータに変換するビット変換器が配置され、また、リード・ソロモン符号復号器１５の後段に８ビットパラレルデータを出力データＤoutに対応したパラレルデータまたはシリアルデータに変換するビット変換器が配置されればよい。
【００４０】
このように第１の実施の形態においては、４ビットデータを記憶するメモリセルからなるセルアレイ１１に対する誤り訂正符号としてバイト単位で誤り訂正を行うリード・ソロモン符号が用いられるものであり、少ない誤り訂正数で充分な性能を得ることができる。したがって、誤り訂正回路の回路規模を小さくできると共に、使用するメモリセルの数も少なくできる。
【００４１】
この第１の実施の形態における効果を例をあげて説明する。情報データ６５５３６セル分を１ブロックとし、セルアレイは１０２４ブロックで構成されているとして、メモリに対する書き込み／読み出しはブロック単位で行うものとする。いま、製造時に正常だったセルが１００万回の書き込み／消去後にアクセス不能な不良セルとなる確率が０．００１％であるとし、１００万回の書き込み／消去後にブロック不良が起こる確率を比較する。
【００４２】
１２８バイト、すなわち１０２４ビットの情報データに対して８誤り訂正可能な短縮化ＢＣＨ符号を用いると、検査データは８８ビットだけ必要になる。ここで１セルの不良に対し、４ビット分の訂正が必要であることから、８誤り訂正可能な符号によって２セル分までの不良を訂正することができる。また、１１１２ビットは２７８セルで記憶ができ、１ブロック中には２５６符号が含まれることになるから、この場合の不良ブロックの発生確率は、（１）式より、約０．００００９１％である。
【００４３】
【数１】
0004099844.tif 000002
【００４４】
次に、２誤り訂正可能な短縮化リード・ソロモン符号を用いた場合の不良ブロックの発生確率を求める。この場合は２バイトまでの不良を訂正することができる。ここで、４ビット／８ビットの変換により、１セルの誤りが複数バイトに影響を及ぼすことがないことに注意すると、２セル分の情報８ビットを１バイトとしたときのバイト誤り率は、（２）式に示すようになる。よって、不良ブロックの発生確率は、（３）式より、約０．００００７７％となる。
【００４５】
【数２】
0004099844.tif 000003
【００４６】
したがって、８誤り訂正可能な短縮化ＢＣＨ符号と２誤り訂正可能な短縮化リード・ソロモン符号は、ほぼ同等の誤り訂正能力を持っていることが分かる。しかし、ＢＣＨ符号と比べるとリード・ソロモン符号を用いる方が、訂正数が８訂正に対し２訂正と大幅に少ないために、誤り訂正回路の回路規模を小さくすることができる。また、冗長データも８８ビットに対し３２ビットと大幅に少ないために、使用するメモリセル数も少なくできる。
【００４７】
次に、この発明の第２の実施の形態について説明する。図４は第２の実施の形態としてのメモリカード２０の構成を示している。このメモリカード２０は、１６値（４ビット）記録を行うフラッシュメモリを２個使用すると共に、コントローラに２誤り訂正可能な短縮化リード・ソロモン符号を用いた誤り訂正回路を組み込んだメモリカードである。
【００４８】
図４において、メモリカード２０は、２個のフラッシュメモリ２１，２２と、これらフラッシュメモリ２１，２２に対してデータの書き込みや読み出しを行うためのコントローラ２３とを備えている。
【００４９】
そして、コントローラ２３は、カード外部とのデータのやり取りを行うためのカードインタフェース２４と、８ビットのパラレルデータである入力データＤinを短縮化リード・ソロモン符号に変換し、フラッシュメモリ２１，２２に書き込むための書き込みデータＷＤを得る符号化器２５と、この符号化器２５より出力される書き込みデータＷＤを、図３に示すように、１バイト（８ビット）のパラレルデータから４ビットのパラレルデータ（メモリセルに記憶するための４ビットデータ）に変換する８ビット／４ビット変換器２６とを有している。
【００５０】
また、コントローラ２３は、フラッシュメモリ２１，２２より読み出される読み出しデータＲＤを、図３に示すように、４ビットのパラレルデータから１バイト（８ビット）のパラレルデータに変換する４ビット／８ビット変換器２７と、この４ビット／８ビット変換器２７で１バイトのパラレルデータに変換された読み出しデータＲＤに誤り訂正処理を施して出力データＤoutを得るリード・ソロモン符号復号器２８と、フラッシュメモリ２１，２２に対するデータの書き込み／読み出しをコントロールするフラッシュインタフェース２９とを有している。
【００５１】
この場合、符号化器２５およびリード・ソロモン符号復号器２８は誤り訂正回路を構成している。そして、符号化器２５では、入力データＤinの１２８バイト毎に４バイトの検査データが付加され、情報データが１２８バイトの２誤り訂正可能な短縮化リード・ソロモン符号が生成される。
【００５２】
図４に示すメモリカード２０において、データの書き込みは以下のように行われる。すなわち、入力データＤinはカードインタフェース２４によってカード内部に取り込まれて符号化器２５に供給される。この符号化器２５では、入力データＤinが情報データが１２８バイトの短縮化リード・ソロモン符号に変換されて書き込みデータＷＤとされる。そして、符号化器２５より出力される書き込みデータＷＤは、８ビット／４ビット変換器２６で１バイト（８ビット）のパラレルデータより４ビットのパラレルデータに変換され、フラッシュインタフェース２９のコントロールに従ってフラッシュメモリ２１またはフラッシュメモリ２２に書き込まれる。
【００５３】
一方、データの読み出しは以下のように行われる。フラッシュインタフェース２９のコントロールに従ってフラッシュメモリ２１またはフラッシュメモリ２２より読み出された読み出しデータＲＤは、４ビット／８ビット変換器２７で４ビットのパラレルデータより１バイト（８ビット）のパラレルデータに変換されてリード・ソロモン符号復号器２８に供給される。リード・ソロモン符号復号器２８では、読み出しデータＲＤの１符号内に誤りがなければ情報データがそのまま出力データＤoutとしてバイト単位で出力され、また読み出しデータＲＤの１符号内の誤りのバイト数が１または２であるときは、誤りが訂正された後に情報データが出力データＤoutとしてバイト単位で出力される。このようにリード・ソロモン符号復号器２８より出力される出力データＤoutはカードインタフェース２４を介してカード外部に出力される。
【００５４】
なお、入力データＤinや出力データＤoutが８ビットのパラレルデータでないときは、符号化器２５の前段に入力データＤinを８ビットのパラレルデータに変換するビット変換器が配置され、また、リード・ソロモン符号復号器２８の後段に８ビットパラレルデータを出力データＤoutに対応したパラレルデータまたはシリアルデータに変換するビット変換器が配置されればよい。
【００５５】
このように第２の実施の形態においても、４ビットデータを記憶するメモリセルからなるセルアレイを持つメモリ部としてのフラッシュメモリ２１，２２に対する誤り訂正符号としてバイト単位で誤り訂正を行うリード・ソロモン符号が用いられるものであり、第１の実施の形態と同様に、少ない誤り訂正数で充分な性能を得ることができ、したがって誤り訂正回路の回路規模を小さくできると共に、使用するメモリセルの数も少なくできる。また、コントローラ２３で誤り訂正を行うものであり、誤り訂正回路をフラッシュメモリ２１，２２に内蔵する場合に比べて、より大きな誤り訂正回路を持つことができる。そのため、多値記録の影響で多くの誤りを発生するようになってもこれを訂正することが可能になる。
【００５６】
なお、上述実施の形態においては、２セル分のデータを１バイトとしたが、バイト化するセル数は２セルに限らず、例えば１セル分のデータを１バイトとしたり、あるいは３セル分のデータを１バイトとするなど種々の変形が考えられる。また、上述実施の形態においては、記憶システムとしてフラッシュメモリを例としたが、この発明は、フラッシュメモリに限らず、他の半導体メモリなど種々の記憶システムに対しても適用可能である。
【００５７】
【発明の効果】
この発明によれば、ｍビット（ｍは２以上の整数）のデータを記憶するメモリセルからなるメモリに対する誤り訂正符号としてバイト単位で誤り訂正を行うリード・ソロモン符号が用いられるものであり、少ない誤り訂正数で充分な性能を得、誤り訂正回路の回路規模を小さくすると共に、使用するメモリセルの数も少なくできるという効果がある。
【図面の簡単な説明】
【図１】第１の実施の形態としてのフラッシュメモリの構成を示すブロック図である。
【図２】短縮化リード・ソロモン符号の例を示す図である。
【図３】ビット変換の動作を説明するための図である。
【図４】第２の実施の形態としてのメモリカードの構成を示すブロック図である。
【図５】セルアレイの構造を示す図である。
【図６】メモリセルの構造を示す図である。
【図７】メモリセルの電圧分布を示す図である。
【図８】短縮化ハミング符号の例を示す図である。
【図９】短縮化ハミング符号を用いた誤り訂正回路を組み込んだフラッシュメモリの構成を示すブロック図である。
【図１０】短縮化ＢＣＨ符号の例を示す図である。
【図１１】ＢＣＨ符号を用いた誤り訂正回路を組み込んだフラッシュメモリの構成を示すブロック図である。
【図１２】短縮化ＢＣＨ符号を用いた誤り訂正回路をコントローラに備えるメモリカードの構成を示すブロック図である。
【図１３】多値記録を行う場合にメモリセルに与える電荷を示す図である。
【図１４】多値記録を行うメモリセルの電圧分布を示す図である。
【図１５】短縮化ＢＣＨ符号を用いた誤り訂正回路を組み込んだ多値記録フラッシュメモリの構成を示すブロック図である。
【符号の説明】
１０・・・フラッシュメモリ、１１・・・セルアレイ、１２・・・符号化器、１３・・・８ビット／４ビット変換器、１４・・・４ビット／８ビット変換器、１５・・・リード・ソロモン符号復号器、２０・・・メモリカード、２１，２２・・・フラッシュメモリ、２３・・・コントローラ、２４・・・カードインタフェース、２５・・・符号化器、２６・・・８ビット／４ビット変換器、２７・・・４ビット／８ビット変換器、２８・・・リード・ソロモン符号復号器、２９・・・フラッシュインタフェース
【図１】
0004099844.tif 000004
【図２】
0004099844.tif 000005
【図３】
0004099844.tif 000006
【図４】
0004099844.tif 000007
【図５】
0004099844.tif 000008
【図６】
0004099844.tif 000009
【図７】
0004099844.tif 000010
【図８】
0004099844.tif 000011
【図９】
0004099844.tif 000012
【図１０】
0004099844.tif 000013
【図１１】
0004099844.tif 000014
【図１２】
0004099844.tif 000015
【図１３】
0004099844.tif 000016
【図１４】
0004099844.tif 000017
【図１５】
0004099844.tif 000018