(57)【特許請求の範囲】
【請求項１】
複数の記憶素子に情報データと検査データとを記憶する記憶手段と、
前記情報データと前記検査データとに基づいて前記情報データの誤りを検出するための誤り検出手段と、
前記情報データと前記検査データとに基づいて前記情報データの誤りを修正する誤り修正手段と、
バースト破壊が前記複数の記憶素子に記憶されたデータに発生する位置を検出するバースト破壊位置検出手段と、
バースト破壊が発生したデータを変更するデータ変更手段とを具備し、
前記バースト破壊はカラム不良を含み、読み出し動作時において、カラム不良の有無に応じて、読み出しシーケンスを変更し、読み出しデータ中の誤りの数が訂正できる誤りの数よりも大きい場合には、読み出しデータから前記カラム不良に相当するアドレスのデータを変更したデータに対して誤り訂正することを特徴とする記憶システム。
【請求項２】
すべての可能なデータパターンが十分に試されるまでデータを変更するための反復手段を更に具備することを特徴とする請求項１に記載の記憶システム。
【請求項３】
情報データと検査データとを含むデータを複数の記憶素子に記憶する記憶手段と、
前記複数の記憶素子で発生するバースト破壊の位置を検出するバースト破壊位置検出手段と、
バースト破壊が発生したデータを変更するデータ変更手段と、
前記情報データと前記検査データとの関係に基づいて、前記データ変更手段によって変更されたデータの誤りを検出するための誤り検出手段と、
前記情報データと前記検査データとの関係に基づいて、前記データ変更手段によって変更されたデータの前記誤りを修正するための誤り修正手段とを具備し、
前記バースト破壊はカラム不良を含み、読み出し動作時において、カラム不良の有無に応じて、読み出しシーケンスを変更し、読み出しデータ中の誤りの数が訂正できる誤りの数よりも大きい場合には、読み出しデータから前記カラム不良に相当するアドレスのデータを変更したデータに対して誤り訂正することを特徴とする記憶システム。
【請求項４】
複数のバースト破壊が所定の数のビット誤りよりも大きいとき、ビット誤りの数がビット誤りの所定の数よりも大きいとき、又は、修正可能な誤りの数が修正可能な誤りの所定の数よりも大きいときに、読み出しデータが誤りを含むことを表す誤りフラッグを出力するための誤りフラッグ出力手段を更に具備することを特徴とする請求項１又は請求項３に記載の記憶システム。
【請求項５】
前記複数の記憶素子のそれぞれはＮ値（Ｎは１以上の整数である）の１つの値を記憶することを特徴とする請求項１又は請求項３に記載の記憶システム。
【請求項６】
前記Ｎ値の１つが帯電量の大きさによって与えられることを特徴とする請求項５に記載の記憶システム。
【請求項７】
前記複数の記憶素子のそれぞれは、半導体層上に電荷蓄積層とコントロールゲートを積層して形成される不揮発性メモリセルを含むことを特徴とする請求項６に記載の記憶システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、記憶システム、特に電気的書替え可能な不揮発性半導体メモリを用いた多値の記憶システムに関する。
【０００２】
【従来の技術】
近年、記憶システムとして、半導体メモリを用いた半導体記憶装置が広く使用されている。半導体記憶装置では、高集積度化、高密度化に伴う種々な影響による信頼性低下を防ぐことが重要な課題である。
【０００３】
このため、誤り検出／訂正を行う誤り検出／訂正符号が、半導体記憶装置へしばしば適応される。実用上、この誤り検出／訂正符号は次の全てを満足しなければならない。
【０００４】
（１）  エラー頻度が、半導体記憶装置に固有な許容エラー頻度以下であること。
【０００５】
（２）  高速な読み書き動作に伴い、高速な符号化及び復号化が可能なものであること。
【０００６】
（３）  符号構成に当たって、符号の冗長度はできるだけ小さいこと。
【０００７】
上記のような実用的な観点から、今日まで、１ビット誤りを訂正し、かつ、２ビット誤りを検出するＳＥＣ−ＤＥＤ符号が広く採用されている。
【０００８】
一層の高信頼度を狙いとして、２ビット誤りを訂正するＤＥＣ符号が応用されている。特に、メモリパッケージ単位、或いは複数ビット出力記憶素子単位の誤り検出／訂正を目的としたバイト誤り検出／訂正符号が重要である。このようなバイト単位でデータを扱う装置を具体的に実用化する観点から言えば、単一バイト誤りを訂正するだけでなく、２バイト誤り検出能力の高いＳｂＥＣ−ＤｂＥＤ符号が要求される。
【０００９】
電気的書替え可能な不揮発性半導体記憶装置（ＥＥＰＲＯＭ）では、半導体基板上に積層形成された電荷蓄積層及び制御ゲートからなるメモリセルを用いて、電荷蓄積層に蓄えられた複数の電荷量の大きさを離散的に設定する（すなわち、制御ゲートから見た複数のしきい電圧Ｖｔを離散的に設定する）ことによって、複数の情報を記憶することができる。
【００１０】
また、単位面積当たり格納できるデータ量を増やすために、多値記憶の方法が考えられている。例えば、３値セルを２個のセルで３ビットとする多値ＲＯＭが知られている。
【００１１】
多値メモリは、３つ以上の異なる電圧Ｖｔ分布をとることが可能なメモリセルによって構成される。電荷蓄積層に蓄えられた電荷量の大きさが０である時の電圧Ｖｔを中性電圧Ｖｔ0 とすれば、長時間放置後に、メモリセルに書き込まれた情報を示すしきい電圧Ｖｔの分布が、中性電圧Ｖｔ0 を含むような電圧分布に変わる場合がある。
【００１２】
そのため、多値メモリに対する誤り訂正方法が考えられている。
【００１３】
例えば、
（１）  多値ダイナミック型半導体メモリの場合には、１ソフトエラーで１セルデータは完全に破壊されるので、１セル当たりのビット数が救済できる訂正符号が必要である。
【００１４】
（２）  フラッシュメモリの場合には、読み出された多値データと書き込まれた多値データとの大きさは１だけしか変わり得ないので、隣接状態の対応する情報が１ビットだけ異なるように対応付けしておけば、状態が隣へ遷移した場合に、パリティ検出ができる。
【００１５】
３値メモリの場合には、例えば制御ゲートを共有する隣合うメモリセルで構成されるセル群がその基本要素である。この場合、１メモリセルは３値を有するので、１セル群は３×３＝９値を有する。そのうちの８値を使うことにより、２セル（すなわち１セル群）当たり３ビット情報を記憶できる。
【００１６】
高集積化可能な３値ＮＡＮＤ型ＥＥＰＲＯＭの構造とその動作を簡単に述べる。図２４は、ＮＡＮＤセル構造例を示す断面図であり、ＮＡＮＤセルは、ｐ基板１１と、浮遊ゲート１４と、制御ゲート１６と、層間絶縁膜１７と、ビット線１８と、ｎ型拡散層１９とを有する。
【００１７】
複数のメモリセルのうち隣接するメモリセルのソース及びドレインを共有する形で直列接続し、これを一単位としてビット線に接続して、ＮＡＮＤセルを構成する。メモリセルアレイは、ｐ型基板又はｎ型基板に形成されたｐ型ウェル内に集積形成される。ＮＡＮＤセルのドレイン側は選択ゲートを介してビット線に接続され、ソース側もドレイン側と同様に選択ゲートを介してソース線に接続される。メモリセルの制御ゲートは、行方向に連続的に配設されてワード線となる。
【００１８】
上記の３値ＮＡＮＤ型ＥＥＰＲＯＭの動作は次の通りである。
【００１９】
データの書き込みの動作は、ビット線から最も離れた位置のメモリセルから順に行われる。選択メモリセルの制御ゲートには高電圧Ｖpp（＝２０Ｖ程度）が印加され、選択メモリセルよりビット線側にあるメモリセルの制御ゲート及び選択ゲートに中間電圧Ｖm（＝１０Ｖ程度）が印加され、ビット線にデータに応じて０Ｖ、低電圧Ｖdd（＝２Ｖ程度）又は中間電圧が与えられる。ビット線に０Ｖ又は低電圧Ｖdd（＝２Ｖ程度）が与えられた時に、ビット線の電位は選択メモリセルのドレインまで伝達されて、ドレインから浮遊ゲートに電子注入が生じる。これにより、選択メモリセルのしきい電圧は正方向にシフトする。しかし、ビット線に低電圧Ｖddが与えられた時のシフト量はビット線に０Ｖが与えられた時のシフト量より小さくなる。ビット線に中間電圧が与えられた時は電子注入が起こらないので、しきい電圧は変化しない。
【００２０】
データ消去動作は、ＮＡＮＤセル内の全てのメモリセルに対して同時に行われる。すなわち、全ての制御ゲート、選択ゲートを０Ｖとし、ビット線及びソース線を浮遊状態として、ｐ型ウェル及びｎ型基板に高電圧Ｖpp（＝２０Ｖ程度）が印加される。これにより、全てのメモリセル浮遊ゲートの電子がｐ型ウェルに放出され、しきい電圧は負方向にシフトする。
【００２１】
データ読み出し動作は、２サイクルで行われる。第１のサイクルでは、選択メモリセルの制御ゲートを０Ｖ、それ以外のメモリセルの制御ゲート及び選択ゲートを電源電圧Ｖcc（＝５Ｖ程度）として、選択メモリセルで電流が流れるか否かを検出する。第２のサイクルでは、選択メモリセルの制御ゲートを低電圧Ｖdd（＝２Ｖ程度）とし、それ以外のメモリセルの制御ゲート及び選択ゲートを電源電圧Ｖcc（＝５Ｖ程度）として、選択メモリセルで電流が流れるか否かを検出する。ここで、３つのしきい電圧分布Ｖｔは、それぞれＶｔ＜０Ｖ、０Ｖ＝＜Ｖｔ＜Ｖdd、Ｖdd＝＜Ｖｔ＜Ｖccである。
【００２２】
多値の値を決める物理量（例えば、ＥＥＰＲＯＭのメモリセルのしきい電圧）の大きさを大きい順に並べた時のｉ番目のデータを多値データ“ｉ”として、読み出された多値データと書き込まれた多値データとの大きさが１だけ変わる場合を考慮する。その時、読み出される出力データが書き込まれた入力データと大きさが２以上異なる場合が存在する。その結果、入出力データを情報データとする誤り訂正／検出符号として、少なくともＳｂＥＣ符号が必要となる。更に、信頼度を２値記憶素子の場合のＳＥＣ−ＤＥＤ符号と同程度にするには、ＳｂＥＣ−ＤｂＥＤ符号が要求される。しかし、このＳｂＥＣ−ＤｂＥＤ符号はＳＥＣ−ＤＥＤ符号に比べ、高い冗長度、すなわち複雑な復号化回路を必要とする。
【００２３】
上記の大きさが２以上異なる場合を簡単に説明する。
【００２４】
表１は、３値セルの状態を”０”、”１”、”２”とした場合における２つのセルの状態の９通りの組合せのうち、”２””２”を除いた８通りを用いて３ビットとする多値メモリの情報と状態の対応関係を表す。３ビット情報と状態の組合せは、隣合う２つが１ビットだけ、又は、大きさ”１”だけ、それぞれ異なるように並べられて対応している。この時、状態が大きさ”１”だけ変わり得る場合を想定すると、状態の組合せでは入出力データ”４”に対応する状態”１””１”は、”１””２”、”１””０”、”０””１”及び”２””１”の４通りに変わり得るのに対して、３ビット情報の方は３ビットのうち１ビット異なる３通り（すなわち、入出力データ”３”、”５”及び”７”）にしか変わらない。従って、このような誤りのある場合に、情報ビットを訂正しようとすると、２ビット訂正可能な誤り訂正符号を用いなければならない。
【００２５】
0003866674.tif 000002
また、記憶データのカラム不良等のバースト誤りがある場合に、正味の誤り訂正／検出能力は低下する。このようなバースト誤りがある場合に、例えばバースト誤りのあるアドレス以外の１つの記憶データに誤りがある時にこれらを訂正したければ、少なくとも２ビット誤り訂正符号を適用しなければならない。
【００２６】
例えば、電気的書替え可能な不揮発性半導体記憶装置（ＥＥＰＲＯＭ）では、特有なカラム不良が生ずることがある。このカラム不良は、ビット線にリークがある場合、或いはブロック内の共通カラム中のメモリセルが過剰書き込み又は過剰消去された場合に起こる。このようなカラム不良がある場合に、更に別のカラムアドレスのメモリセルに誤りがある時には、ＳｂＥＣ符号などの単一ｂビットバイト誤り訂正符号によって誤りが訂正できず、例えば二重ｂビットバイト誤り訂正符号が必要である。しかし、この符号はＳｂＥＣ符号に比べ、高い冗長度、すなわち複雑な復号化回路を必要とする。
【００２７】
【発明が解決しようとする課題】
上記のように従来の記憶システムは、下記のような問題を有する。
【００２８】
多値の値を決める物理量の大きさを大きい順に並べた時のｉ番目のデータを多値データ“ｉ”として、読み出された多値データと書き込まれた多値データとの大きさが１だけ変わる場合に、読み出される出力データが書き込まれた入力データと大きさが２以上異なる場合が存在する。その結果、入出力データを情報データとする誤り訂正／検出符号として、少なくともＳｂＥＣ符号が必要である。更に、信頼度を２値記憶素子の場合のＳＥＣ−ＤＥＤ符号と同程度にするには、ＳｂＥＣ−ＤｂＥＤ符号が要求される。しかし、このＳｂＥＣ−ＤｂＥＤ符号はＳＥＣ−ＤＥＤ符号に比べ、高い冗長度、すなわち複雑な復号化回路を必要とする。
【００２９】
ＥＥＰＲＯＭは、特有なカラム不良が生ずることがあり、このようなカラム不良がある場合に更に別のカラムアドレスのメモリセルに誤りがある時に、ＳｂＥＣ符号などの単一ｂビットバイト誤り訂正符号によっては訂正できず、例えば二重ｂビットバイト誤り訂正符号が必要である。この符号はＳｂＥＣ符号に比べ、高い冗長度、すなわち複雑な復号化回路を必要とする。
【００３０】
本発明の目的は、多値の値を決める物理量の大きさを大きい順に並べた時のｉ番目のデータを多値データ“ｉ”として、読み出された多値データと書き込まれた多値データとの大きさが１しか変わらない場合に適した誤り検出／訂正手段を用いることによって、比較的低い冗長度、すなわち簡単な復号化回路を用いること及び２ビット誤り検出を完全に行い得る記憶システムを提供することである。
【００３１】
本発明の他の目的は、バースト誤りが生じて１符号語中に２ビット誤りが発生した場合でも、１ビット誤りを訂正し、更に、２ビット誤りを検出する符号を用いて２ビット誤りを訂正する可能性を有する記憶システムを提供することである。
【００３２】
【課題を解決するための手段】
本発明の第１の局面に係る記憶システムは、それぞれがデータ"０"、"１"、・・・、"ｎ−１"に対応するｎ値の記憶状態のいずれか１つの状態を記憶する複数の記憶素子を有し、ｎ値情報データを記憶する情報データ記憶手段と、検査データを記憶する検査データ記憶手段とを備えた記憶手段と、前記ｎ値情報データから中間バイナリ・コードに変換する変換手段と、前記中間バイナリ・コードと前記検査データとに基づいて前記中間バイナリ・コードの誤りを検出し、訂正する検出／訂正手段とを具備することを特徴とする。また、また、上記のｎ値の記憶は、複数の記憶素子の組み合わせにより行われるようにしている。
【００３３】
本発明の第１の局面に係る記憶システムの望ましい実施態様には、次のものがある。なお、下記の実施態様はそれぞれ独立に適用しても良いし、適宜組み合わせて適用しても良い。
【００３４】
（１）  情報データ記憶手段が、記憶すべきデータに対応するバイナリ・コードを用いて、誤り検出データ／訂正データ記憶手段の記憶素子に記憶すべきデータに対応する中間バイナリ・コードを発生させる手段と、中間バイナリ・コードに基づいて、記憶素子にｎ値記憶させる書き込み手段を備えたこと。
【００３５】
（２）  記憶素子の記憶データを、１ビットが“０”と“１”で構成される複数ビットのバイナリ・コードに変換して、情報データと誤り検出データ又は誤り訂正データから誤りを検出又は訂正し、バイナリ・コードから複数の記憶素子のデータの組み合わせで表されるデータ・コードを出力すること。
【００３６】
（３）  （２）において、データ・コードから変換された情報データ記憶手段の記憶素子が記憶すべきデータに対応するバイナリ・コードから、誤り検出データ／訂正データ記憶手段の記憶素子に記憶すべきデータに対応するバイナリ・コードを発生させ、このバイナリ・コードに基づいて、記憶素子にｎ値記憶させる書き込み手段を備えたこと。
【００３７】
（４）  記憶素子のデータ“ｉ”（ｉ＝０、１、…、ｎ−２）に対応するバイナリ・コードとデータ“ｉ＋１”に対応するバイナリ・コードは、バイナリ・コード中の１ビットのみ異なるようにされ、且つ記憶素子のデータ“ｉ”（ｉ＝１、…、ｎ−１）に対応する前記バイナリ・コードとデータ“ｉ−１”に対応するバイナリ・コードは、バイナリ・コード中の１ビットのみ異なるようにされること。
【００３８】
（５）  記憶素子は蓄えられた電荷量でｎ値記憶し、電荷量の大きさの順に、データ“０”、“１”、…、“ｎ−１”が対応していること。
【００３９】
（６）  記憶システムは不揮発性半導体記憶システムであり、記憶素子は半導体層上に電荷蓄積層と制御ゲートが積層形成され構成されたメモリセルであること。
【００４０】
（７）  前記記憶素子の記憶状態の遷移は１以下であること。
【００４１】
（８）  前記記憶手段は、Ｎ値（Ｎは３以上の整数）かつＭ個（Ｍは２以上の整数）の記憶素子の組合せで、ｎ＜２M の関係を有するｎビット（２n ＜ＮM ＜２n+1 ）情報を記憶すること。
【００４２】
多値の値を決める物理量の大きさを大きい順に並べた時のｉ番目のデータを多値データ“ｉ”として、読み出された多値データと書き込まれた多値データとの大きさが１しか変わらない場合に、多値データの大きさが１だけ異なるとき対応するコードが１ビット異なる（すなわちハミング距離１となる）ような中間バイナリ・コードを導入することによって、１ビット誤り訂正符号の適用が可能となる。これにより、比較的低い冗長度、すなわち簡単な復号化回路を用いることができ、更に２ビット誤り検出能力を持つ２ビット誤り検出符号に拡張することによって２ビット誤り検出を完全に行うことができる。
【００４３】
例えば、電気的書替え可能な不揮発性半導体記憶装置（ＥＥＰＲＯＭ）では、図２５に示すように、半導体基板（ｎ基板１１′上のｐウェル１１）上に積層形成された電荷蓄積層１４及び制御ゲート１６からなるメモリセルを用いて、電荷蓄積層１４に蓄えられた電荷量の大きさを離散的にすることによって、すなわち制御ゲート１６から見たしきい電圧Ｖｔを離散的にすることによって、情報を記憶することができる。多値メモリは、このＶｔ分布を３つ以上持たせたメモリセルによって構成される。
【００４４】
図２６は、３値メモリの場合のセルのしきい電圧レベルと多値“０”、“１”、“２”の対応例を示す。電荷蓄積層に蓄えられた電荷量の大きさが０である時の電圧Ｖｔを中性電圧Ｖｔ0 と呼び、この中性電圧Ｖｔ0 が“１”の電圧Ｖｔ分布内であれば、メモリセルに書き込まれた情報は、長時間放置後中性電圧Ｖｔ0 を含むＶｔ分布の対応する情報に変わってしまうことがある。この場合の情報の誤りの大きさは、高々“１”である。すなわち、情報の誤りは、“０”と“１”の間又は“１”と“２”の間のみに起こる。
【００４５】
図２７及び図２８は、それぞれＮＯＲ型ＥＥＰＲＯＭ、ＮＡＮＤ型ＥＥＰＲＯＭのセルアレイ部分を示す図である。３値メモリでは、例えば制御ゲートを共有した隣合うメモリセルで構成されるセル群をその基本要素とする。１メモリセルは３値を有するので、１セル群は９値を有する。そのうちの８値を使って、２セル当たり３ビットの情報を記憶できる。
【００４６】
３値データと中間バイナリ・コードとの対応関係を、例えば、表２のように多値データが大きさ１だけ異なる時に対応するバイナリ・コードがハミング距離１となるようにすることによって、誤りは１ビット誤り訂正符号の適用によって訂正できる。
【００４７】
0003866674.tif 000003
更に、４値、５値、８値の場合も同様に、多値データとバイナリ・コードの対応関係を、例えば下記の表３、表４、表５のようにすることによって達成できる。
【００４８】
表  ３
４値データ    バイナリ・データ
“０”          ００
“１”          ０１
“２”          １１
“３”          １０
表  ４
５値データ    バイナリ・データ
“０”        ０００
“１”        ００１
“２”        ０１１
“３”        １１１
“４”        １１０
表  ５
８値データ    バイナリ・データ
“０”        ０００
“１”        ００１
“２”        ０１１
“３”        ０１０
“４”        １１０
“５”        １００
“６”        １０１
“７”        １１１
本発明の第１の局面に係る記憶システムは、複数の記憶素子に情報データと検査データとを記憶する記憶手段と、前記情報データと前記検査データとに基づいて前記情報データの誤りを検出するための誤り検出手段と、前記情報データと前記検査データとに基づいて前記情報データの誤りを修正する誤り修正手段と、バースト破壊が前記複数の記憶素子に記憶されたデータに発生する位置を検出するバースト破壊位置検出手段と、バースト破壊が発生したデータを変更するデータ変更手段とを具備し、前記バースト破壊はカラム不良を含み、読み出し動作時において、カラム不良の有無に応じて、読み出しシーケンスを変更し、読み出しデータ中の誤りの数が訂正できる誤りの数よりも大きい場合には、読み出しデータから前記カラム不良に相当するアドレスのデータを変更したデータに対して誤り訂正することを特徴とする。
【００４９】
本発明の第２の局面に係る他の記憶システムは、情報データと検査データとを含むデータを複数の記憶素子に記憶する記憶手段と、前記複数の記憶素子で発生するバースト破壊の位置を検出するバースト破壊位置検出手段と、バースト破壊が発生したデータを変更するデータ変更手段と、前記情報データと前記検査データとの関係に基づいて、前記データ変更手段によって変更されたデータの誤りを検出するための誤り検出手段と、前記情報データと前記検査データとの関係に基づいて、データ変更手段によって変更されたデータの前記誤りを修正するための誤り修正手段とを具備し、前記バースト破壊はカラム不良を含み、読み出し動作時において、カラム不良の有無に応じて、読み出しシーケンスを変更し、読み出しデータ中の誤りの数が訂正できる誤りの数よりも大きい場合には、読み出しデータから前記カラム不良に相当するアドレスのデータを変更したデータに対して誤り訂正することを特徴とする。第２の局面に係る記憶システムにおいて、下記のような実施態様が好ましい。なお、下記の実施態様はそれぞれ独立に適用しても良いし、適宜組み合わせて適用しても良い。
【００５０】
（１）  考え得る全てバースト破壊位置のデータを用いて、前記データ再設定手段と前記誤り検出／訂正手段を繰り返し用いながら誤り検出又は訂正を行うこと。
【００５１】
（２）  すべての可能なデータパターンが十分に試されるまでデータを変更するための反復手段を更に具備すること。
【００５２】
（３）  複数のバースト破壊が所定の数のビット誤りよりも大きいとき、ビット誤りの数がビット誤りの所定の数よりも大きいとき、又は、修正可能な誤りの数が修正可能な誤りの所定の数よりも大きいときに、読み出しデータが誤りを含むことを表す誤りフラッグを出力するための誤りフラッグ出力手段を更に具備すること。
【００５３】
（４）  前記複数の記憶素子のそれぞれはＮ値（Ｎは１以上の整数である）の１つの値を記憶すること。
【００５４】
（５）  前記Ｎ値の１つが帯電量の大きさによって与えられること。
【００５５】
（６）  前記複数の記憶素子のそれぞれは、半導体層上に電荷蓄積層とコントロールゲートを積層して形成される不揮発性メモリセルを含むこと。
【００５６】
本発明の第２の局面に係る記憶システムによれば、電気的書替え可能な不揮発性半導体記憶装置（ＥＥＰＲＯＭ）において、固有なカラム不良等のバースト誤りが生じ、その結果１符号語中に２ビット誤りが発生しても、１ビット誤りを訂正し、２ビット誤りを検出する符号を用いて２ビット誤りを訂正する可能性を持たせることができる。
【００５７】
【発明の実施の形態】
図面を参照して本発明の実施の形態を説明する。
【００５８】
図１は、本発明の第１実施形態に係る記憶システムの概略構成図である。第１実施形態の記憶システムは、データ変換器１０と、検査データ演算器２０と、セルアレイ３０と、誤り検出器４０と、誤り訂正器５０と、データ逆変換器６０とを具備する。
【００５９】
データの書き込みは、次のように行われる。
【００６０】
データ変換器１０は、書き込みデータである入力データＤ１０を、多値の値を決める物理量の大きさを大きい順に並べた時のｉ番目のデータを多値データ“ｉ”として、読み出された多値データと書き込まれた多値データとの大きさが１だけ異なる場合にハミング距離１となるようなバイナリ・コードに変換する。その後、検査データ演算器２０は、バイナリ・コードから検査データＤ３０を生成する。この時、データ変換器１０で変換されたバイナリ・コードを情報データＤ２０として、情報データＤ２０と検査データＤ３０とが、書込データＤ４０として、書込データＤ４０がセルアレイ３０に書き込まれる。
【００６１】
データの読み出しは、次のように行われる。
【００６２】
セルアレイ３０から読み出された読出データＤ５０は、誤り検出器４０と誤り訂正器５０に入力される。セルアレイ３０から読み出されたデータに誤りがあった時に、誤り検出器４０は、誤りの数が許容能力の範囲であれば誤りを検出して、検出した誤りの位置を誤り訂正器５０に出力する。誤り訂正器５０は、誤り検出器４０で検出された誤りの数が許容能力の範囲であれば、セルアレイ３０から読み出された読出データＤ５０の誤りを訂正する。この時、誤り訂正器５０の出力はバイナリ・コードの多値情報データである。データ逆変換器６０は、この情報データを、セルアレイ３０からの読み出しデータである出力データＤ６０に逆変換して出力する。
【００６３】
上記のように第１実施形態によれば、多値の値を決める物理量の大きさを大きい順に並べた時のｉ番目のデータを多値データ“ｉ”として、読み出された多値データと書き込まれた多値データとの大きさが１しか変わらないことを前提として、多値の情報データをバイナリ・コードに変換し、多値データとバイナリ・コードの対応を多値データの大きさが１だけ異なる時にハミング距離１になるバイナリ・コードに変換する。このため、１ビット誤り訂正符号の適用が可能となり、比較的低い冗長度、すなわち簡単な復号化回路を用いることができる。更に、２ビット誤り検出能力を持つ２ビット誤り検出符号に拡張することによって２ビット誤り検出を完全に行うことができる。
【００６４】
図２は、本発明の第２実施形態に係る記憶システムの概略構成図である。図２において、図１と同一部分には同一符号を付して、その詳しい説明は省略する。第２実施形態は、第１実施形態における各構成要素が、ＣＰＵ１００とＥＥＰＲＯＭ２００のいずれに含まれるかを示す。
【００６５】
第２実施形態において、ＣＰＵ１００は、データ変換器１０と、検査データ演算器２０と、誤り訂正器５０と、誤り検出器４０と、データ逆変換器６０と、を有し、ＥＥＰＲＯＭ２００はセルアレイ３０のみを有する。本第２実施形態では、ＣＰＵ１００とＥＥＰＲＯＭ２００とでやりとりされるデータはバイナリ・コードである。
【００６６】
図３は、本発明の第３実施形態に係る記憶システムの概略構成図である。図３において、図１と同一部分には同一符号を付して、その詳しい説明は省略する。
【００６７】
第３実施形態は、第２実施形態において、ＥＥＰＲＯＭ２００が、ＣＰＵ１００と同様に、データ変換器１０と、データ逆変換器６０とを有する構成であり、この場合には、ＣＰＵ１００とＥＥＰＲＯＭ２００とでやりとりされるデータはバイナリ・コードでなく、通常の情報データである。但し、第３実施形態の場合には、読出データＤ５０に誤りが生じ、使用されないバイナリ・コードに変わった時に、その誤りを検出して、ＥＥＰＲＯＭ２００の外部に出力するために（例えばＥＥＰＲＯＭ２００の出力バッファを高いインピーダンス状態にするために）、ＥＥＰＲＯＭ２００内に禁止データ検出器７０が設けられる。
【００６８】
図４は、本発明の第４実施形態に係る記憶システムの概略構成図である。図４において、図１と同一部分には同一符号を付して、その詳しい説明は省略する。
【００６９】
第４実施形態は、本発明の第１実施形態におけるデータ変換器１０とデータ逆変換器６０を一体化したもので、基本的な動作は本発明の第１実施形態と同様である。但し、本実施形態は２n 値（ｎは２以上の整数）の場合に限定される。
【００７０】
書き込みは、次のように行われる。
【００７１】
入出力データ−多値データ変換器８０は、書き込みデータである入力データＤ１０を、多値の値を決める物理量の大きさを大きい順に並べた時のｉ番目のデータを多値データ“ｉ”として、読み出された多値データと書き込まれた多値データとの大きさが１しか変わらないことを前提として、多値の情報データをバイナリ・コードに変換し、多値データとバイナリ・コードの対応を多値データの大きさが１だけ異なる時にハミング距離１になるバイナリ・コードに変換する。その後、検査データ演算器２０は、バイナリ・コードから検査データＤ３０を生成する。この時、データ変換器１０で変換されたバイナリ・コードを情報データＤ２０として、情報データＤ２０と検査データＤ３０とが書込データＤ４０として、書込データＤ４０がセルアレイ３０に書き込まれる。
【００７２】
データの読み出しは、次のように行われる。
【００７３】
セルアレイ３０から読み出された読出データＤ５０は、誤り検出器４０と誤り訂正器５０に導入される。セルアレイ３０から読み出されたデータに誤りがあった時に、誤り検出器４０は、誤りの数が許容能力の範囲であれば誤りを検出して、検出した誤りのビット位置情報を誤り訂正器５０に出力する。誤り訂正器５０は、誤り検出器４０で検出された誤りの数が許容能力の範囲であれば、セルアレイ３０から読み出された読出データＤ５０の誤りを訂正する。誤り訂正器５０の出力はバイナリ・コードの多値情報データである。入出力データ−多値データ変換器８０は、この情報データを、読み出しデータである出力データＤ６０に逆変換して出力する。
【００７４】
図５は、本発明の第５実施形態に係る記憶システムの概略構成図である。図５において、図１と同一部分には同一符号を付して、その詳しい説明は省略する。
【００７５】
第５実施形態は、本発明の第２実施形態において、ＣＰＵ１００とＥＥＰＲＯＭ２００とでやりとりされるデータを多元多値データとした構成例を示し、基本的な動作は本発明の第２実施形態と同様である。
【００７６】
書き込み時には、書き込みデータである入力データＤ１０は、データ変換器１０によって、多値の値を決める物理量をその大きさ順に並べた時にｉ番目のものを多値データ“ｉ”とする時に、多値データが大きさ１だけ異なる時ハミング距離１となるようなバイナリ・データに変換される。その後、検査データ演算器２０は、バイナリ・コードから検査データＤ３０を生成する。更に、バイナリ・コードを情報データＤ２０とし、これらのデータは多元多値データ変換器９０に導入される。多元多値データ変換器９０は、入力データを多元多値データに変換して出力する。
【００７７】
上記の構成により、ＣＰＵ１００とＥＥＰＲＯＭ２００でやりとりされるデータは、多元多値データとなる。ＥＥＰＲＯＭ２００に入力された多元多値データは、書込データＤ４０として、セルアレイ３０に書き込まれる。
【００７８】
読み出し時には、セルアレイ３０から読み出された多元多値の読出データＤ５０はＣＰＵ１００の多元多値データ変換器９０に入力される。多元多値データ変換器９０は、入力された多元多値データをバイナリ・コードに変換する。その後、このデータは誤り検出器４０と誤り訂正器５０に入力される。セルアレイ３０から読み出されたデータに誤りがあった時に、誤り検出器４０は、誤りの数が許容能力の範囲であれば誤りを検出して、検出した誤りの位置情報を誤り訂正器５０に出力する。誤り訂正器５０は、誤り検出器４０で検出された誤りの数が許容能力の範囲であれば、セルアレイ３０から読み出された読出データＤ５０の誤りを訂正する。誤り訂正器５０の出力はバイナリ・コードの多値情報データである。データ逆変換器６０は、この情報データを、読み出しデータである出力データＤ６０に逆変換して出力する。
【００７９】
第６実施形態は、２つの３値メモリセルの状態の９通りの組合せのうち、８通りを用いて３ビットとする多値メモリを使った多値記憶システムの誤り訂正検出の具体例を示す。上記各実施形態は、記憶情報をバイナリ・コード（中間バイナリ・コードを含む）へ変換の後に、誤り訂正を行う実施形態を示したが、第６実施形態は、上記各実施形態において、バイナリ・コードとして、中間バイナリ・コードを用いて誤り訂正を行う具体的な実施形態を下記に示す。
【００８０】
図６は、３値セルのしきい電圧Ｖｔの分布（”０”、”１”及び”２”）が、それぞれ中間バイナリ・コード００、０１及び１１に対応する示す。図６において、各分布のしきい電圧Ｖｔは、それぞれＶｔ＝＜−１Ｖ、０Ｖ＝＜Ｖｔ＝＜１Ｖ、２Ｖ＝＜Ｖｔ＝＜３Ｖである。組み合わされる２つのメモリセルであるセル１とセル２の中間バイナリ・コードの８通りの組合せを中間バイナリ・コードと呼ぶことにし、入出力データとそれぞれに対応する８ビットの中間バイナリ・コードの関係を、表６のようにする。表６から、状態が大きさ”１”だけ変わり得る場合に、３ビット情報でなく、セルの情報から変換される中間バイナリ・コードに対して誤り訂正を行うことによって、１ビット誤り訂正符号が導入できることがわかる。
【００８１】
0003866674.tif 000004
図７は、２１ビットの中間バイナリ・コードの１ビット誤りを訂正し、６ビットの検査ビットを合わせた２７ビット中の２ビット誤りを検出する誤り訂正検出のための検査行列である。
【００８２】
図８は、情報データの中間バイナリ・コードへの変換とその逆変換を行うデータ変換回路１１０の回路図である。信号ＷＥは書き込み時にハイ、、信号ＲＥは読み出し時にハイになる。図８（ａ）において、バーのついた信号（例えば、／ＷＥ）は、その反転信号を示す。このデータ変換回路１１０により、書き込み時には情報データから中間バイナリ・コードへ変換が行われ、読み出し時には中間バイナリ・コードから情報データへの逆変換が行われる。１６ビットの情報データＩＯl （ｌ＝１〜１５）の１５ビット分のデータは、図８（ａ）に示すように３ビット毎に４ビットの中間バイナリ・コードＩＯＯk （ｋ＝１〜２０）に変換される。残りの情報データＩＯ16は、図８（ｂ）のようにそのままＩＯＯ21に変換される。そして、１６ビット情報そのものでなく、データ変換回路１１０によって変換された中間バイナリ・コードＩＯＯの２１ビットのデータが、誤り訂正符号の情報データとして扱われる。
【００８３】
上記のデータ変換回路１１０と、ＥＥＰＲＯＭ２００のデータ入出力ピンであるＩＯパッド１２０と、ＩＯバッファ１３０と、誤り訂正検出回路（ＥＣＣ）１４０と、書込／読出回路１５０との接続関係を図９に示す。
【００８４】
図９（ａ）では、データ変換回路１１０がＣＰＵ１００側にあり、ＥＥＰＲＯＭ２００は１６ビットの中間バイナリ・コードを入力する。図９（ｂ）では、ＥＥＰＲＯＭ２００が、データ変換回路１１０と、ＥＣＣ１４０と、読み書き回路１５９とを有し、ＥＥＰＲＯＭ２００は１６ビットの情報データを入出力する。図９（ｃ）では、ＣＰＵ１００がＥＣＣ１４０を有し、ＥＥＰＲＯＭ２００は、２１ビットの中間バイナリ・コードと６ビットの検査ビットを入出力する。
【００８５】
図１０〜図１２は、１６ビットの中間バイナリ・コードの１ビット誤りを訂正し、６ビットの検査ビットを合わせた２２ビット中の２ビット誤りを検出するＥＣＣ１４０の構成例を示す図である。このＥＣＣ１４０による誤り検出及び訂正は、図７の検査行列を用いて実現される。図１０（ａ）の回路によって、書き込み時に書き込み情報データＩk （ｋ＝１〜２１）は、入力Ｏk とされる。図１０（ｂ）の回路は、書き込み時に検査データを発生させ、読み出し時にシンドロームを発生させる回路である。この回路は６組あり、入力Ａ（ｉ）及び入力Ｂ（ｉ）は、それぞれ表７及び表８で与えられる。
【００８６】
0003866674.tif 000005
0003866674.tif 000006
図１１は、誤り訂正／検出回路の構成例を示す図である。図１１に示す誤り訂正回路は、読み出し時にシンドロームが図７のパターンで誤りビットを知らせる信号ＣＲＣＴk がハイになる場合に読み出し情報データＩk を反転させて、誤り訂正を行い、出力Ｏk を出力する。さもなければ、この誤り訂正回路は、読み出し情報データＩk をそのまま出力Ｏk とする。
【００８７】
図１２の回路は、シンドロームＳi （ｉ＝１〜６）のうち１つでも１（ハイ）となる場合に信号ＥＲＤＥＴを１として、誤りがあったことを知らせる回路である。この時、１となるシンドロームの数が偶数であるとき、信号ＥＶＥＮＥＲが１となり、偶数個の誤りが発生したことを知らせる。また、誤りが発生したが、誤りの訂正はされなかった場合には、信号ＮＯＴＣＲＣＴが１となる。
【００８８】
図１３は、Ｉ、Ｐと書込／読出回路１５０とビット線との接続関係を示し、図１４及び図１５は、それぞれ２入力及び１入力書込／読出回路１５０を表す。図１６は、カラムデコーダを示す。
【００８９】
図１３において、Ｉ1 とＩ2 は同一の書込／読出回路１５０ａに入出力され、それを介して１ビット線に接続される。図１３に示すように、図１４に示される２入力書込／読出回路１５０ａは、２０個のＩに対して１０個設けられる。Ｉ21とＰi （ｉ＝１〜６）はそれぞれ図１５に示す１入力書込／読出回路１５０ｂに入出力され、それを介して１ビット線に接続される。従って、図１５に示される１入力書込／読出回路１５０ｂは７個設けられる。図１６は、カラムデコーダであり、信号ＣＳＬn は選択されたアドレスに対してハイ、非選択のアドレスに対してローとなる。
【００９０】
図１７〜図２０を用いて、図１３〜図１６に示す回路の各制御信号とデータのタイミングを説明する。
【００９１】
はじめに、書き込み時の動作を説明する。
【００９２】
図１７は、書き込みデータの入力時のタイミングを示す図である。
【００９３】
書き込み信号ＷＥがハイになり、書き込み情報データがＩＯl （ｌ＝１〜１６）に出力されると、データ変換回路１１０が、書き込み中間バイナリ・コードＩＯＯk ＝ＩＯＩk ＝Ｏk ＝Ｉk （ｋ＝１〜２１）を出力する。それと同時に、検査データが発生されて、Ｐi （ｉ＝１〜６）として出力される。これらの書き込みデータＩk 及びＰi は選択されたカラムアドレスの書込／読出回路１５０に入力される。
【００９４】
図１８は、書き込み時における、書込／読出回路１５０の制御信号とセルの選択ゲートＳＧ１、ＳＧ２と制御ゲートＣＧ１〜ＣＧ８のタイミング図である。
【００９５】
２入力書込／読出回路１５０ａでは、書き込みデータが”０”の時、Ｉ2l、Ｉ2l-1は共に０であるので、内部ノードＮ1 及びＮ2 が０にラッチされる。信号φａ１、φａ２、φｐａ、ＰＢａ及びＶＲＦＹａがローのままで、ＶＢＨａが８Ｖ、ＶＢＭａが２Ｖ、ＶＢＬａが０Ｖになる。従って、”０”書き込み時には、ビット線ＢＬには、８Ｖが印加される。書き込みデータが”１”の時には、Ｎ1 ＝１、Ｎ2 ＝０、”２”の時、Ｎ1 ＝Ｎ2 ＝１がそれぞれラッチされるので、”１”及び”２”書き込み時にはビット線ＢＬにはそれぞれ２Ｖ及び０Ｖが印加される。
【００９６】
一方、データを書き込むメモリセルがワード線ＣＧ４に接続されている時、ワード線ＣＧ４には２０Ｖ、それ以外のワード線ＣＧ１〜ＣＧ３、ＣＧ５〜ＣＧ８及び選択線ＳＧ２には１０Ｖ、選択線ＳＧ１には０Ｖがぞれぞれ印加されるので、”０”、”１”、”２”書き込みのメモリセルには、ゲートとチャネル間にそれぞれＶg ＝１２Ｖ、１８Ｖ、２０Ｖが印加される。Ｖg ＝１２Ｖでは、トンネル電流は流れず、メモリセルのしきい電圧は変わらない。Ｖg ＝１８Ｖでは、トンネル電流が流れ、メモリセルのしきい電圧は正の方向に移動し、しきい電圧は０Ｖ以上１Ｖ以下になる。Ｖg ＝２０Ｖの時はＶg ＝１８Ｖの時よりもトンネル電流は大きく、しきい電圧は２Ｖ以上３Ｖ以下になる。
【００９７】
上記のようにして、３値の中間バイナリ・コード００、０１、１１をメモリセルに書き込むことができる。一方、１入力書込／読出回路１５０ｂは、２入力書込／読出回路１５０ａの第２センスアンプを除いたものである。書き込み時には、データの”０”、”１”に応じてそれぞれ８Ｖ、２Ｖが印加される。
【００９８】
次に、図１９及び図２０を参照して、読み出し動作を説明する。
【００９９】
２入力書込／読出回路１５０ａでは、読み出しは、２ステップで行われる。
【０１００】
第１のステップでは、”０”か否かの判定を行う。
【０１０１】
はじめにビット線ＢＬを１．８Ｖ、ダミービット線ＢＬＢを１．５Ｖに充電しておく。その後で、ワード線ＣＧ４以外のワード線ＣＧ１〜ＣＧ３、ＣＧ５〜ＣＧ８及び選択線ＳＧ１及びＳＧ１を４Ｖにする。読み出されるデータが”０”ならば、ビット線ＢＬに充電された電荷は放電され、ビット線の電位は１．５Ｖ以下になり、そうでなければ、１．８Ｖを保つ。最後に、これらの電圧は、ＱＰ１３、ＱＰ１４、ＱＰ１５、ＱＮ５７、ＱＮ５８、ＱＮ５９で構成される第１のセンスアンプに入力され、それらの電位差が増幅される。読み出されるデータが”０”ならば内部ノードＮ1 ＝０が、読み出されるデータが”１”又は”２”ならば内部ノードＮ1 ＝１がラッチされる。
【０１０２】
第２のステップでは、”２”か否かの判定を行う。第２のステップと第１のステップとの唯一の違いは、読み出すメモリセルのワード線ＣＧ４を２Ｖにすることである。今回は、ＱＰ１６、ＱＰ１７、ＱＰ１８、ＱＮ６２、ＱＮ６３、ＱＮ６４で構成される第２のセンスアンプが使用され、読み出されるデータが”２”ならば、内部ノードＮ2 ＝１が、読み出されるデータ”０”又は”１”ならば内部ノードＮ2 ＝０がラッチされる。
【０１０３】
上記のようにして、３値の中間バイナリ・コード００、０１、１１をメモリセルから読み出すことができる。１入力書込／読出回路１５０ｂでは、第１ステップのみ活性化し、ビット線電位のロー、ハイがそれぞれ”０”、”１”に対応する。
【０１０４】
図２０は、読み出しデータの出力時のタイミングを示す図である。
【０１０５】
読み出しデータは選択されたカラムアドレスの書込／読出回路１５０からＩk （ｋ＝１〜２１）、Ｐi （ｉ＝１〜６）に出力される。これらの２７ビットデータからシンドロームＳｉが計算され、誤りがあれば訂正して読み出し出力データ（中間バイナリ・コード）がＯk ＝ＩＯＩk ＝ＩＯＯk （ｋ＝１〜２１）に出される。最後に、読み出しデータＩＯＯk は、データの逆変換によって読み出し情報データＩＯl （ｌ＝１〜１６）とされる。
【０１０６】
上記のように、本発明は、情報データをバイナリ・コード（中間バイナリ・コードを含む）に変換した後に、誤り検出及び誤り訂正を行っているので、１ビット誤り訂正符号を適用できる。
【０１０７】
上記の第１〜第６実施形態において、２個のメモリセルによる３値メモリを考慮したが、Ｎ値メモリセルのＭ個の組合せも同様に適用可能である。この場合には、ＮM 個の状態ができるので、この中の２n （＜ＮM ）個の状態を使用して、ｎビットデータと１対１に対応させる。
【０１０８】
以下、本発明がＮ値メモリセルのＭ個の組合せに適用できる理由を説明する。
【０１０９】
各メモリセルのどの状態にも両端を除き２つの隣接状態がある。Ｍ個のセルの状態の組合せは、２M 通りである。
【０１１０】
もし、ｎ＜２M であれば、状態の組合せが隣の状態に遷移したときに、対応する情報が必ず１ビット変わるような状態の組合せと情報との対応関係はない。従って、上記の誤りに対して、少なくとも２ビット誤り訂正符号が必要となる。
【０１１１】
一方、２m ＞Ｎ＞２m-1 を満たすｍビット（ｍ＞＝２）で、Ｎ個の状態を、隣の状態に遷移したとき対応するｍビット表現（すなわち、中間バイナリ・コード）が必ず１ビットだけ変わるようなＮ状態と中間バイナリ・コードと対応関係は必ず存在する。これは、各セルのどの状態も高々２つの隣の状態があり、１ビットだけ異なる中間バイナリ・コードはｍ（＞＝２）個あることによる。
【０１１２】
従って、誤り検出／訂正は、中間バイナリ・コードに対して行えば、１ビット誤り訂正符号で充分である。
【０１１３】
図２１は、本発明の第７実施形態に係る記憶システムの概略構成図である。本実施形態において、第１実施形態と同じものには同じ符号を付し、詳細な説明は省略する。
【０１１４】
第７実施形態の記憶システムは、情報データ記憶部２１０と、検査データ記憶部２２０と、誤り検出器４０と、誤り訂正器５０と、バースト破壊位置検出部１６０と、データ再設定部１７０と、を具備する。情報データ記憶部２１０は、情報データＤ２０を記憶する。検査データ記憶部２２０は、誤り検出データ及び誤り訂正データを記憶する。バースト破壊位置検出部１６０は、前記各記憶部の記憶データのバースト破壊位置を検出する。データ再設定部１７０は、前記バースト破壊位置検出部１６０によって検出されるバースト破壊位置のデータを仮定して再設定する。上記の構成において、第１〜第６実施形態のように、セルアレイ３０が、情報データ記憶部２１０と、検査データ記憶部２２０とを有する構成としても良い。
【０１１５】
上記のように構成された第７実施形態の係る記憶システムの動作を図２２を参照して説明する。図２２は、本発明の第７実施形態における誤り検出／訂正のアルゴリズムを示すフローチャートである。
【０１１６】
各ステップ毎の動作の詳細を説明する前に、動作の概略を説明する。
【０１１７】
記憶されたデータの読み出しが始まると、カラム不良番地が検索される。カラム不良がなければ情報データＤ２０と検査データＤ３０が読み出され、これらのデータは誤り検出器４０と誤り訂正器５０にそれぞれ入力される。誤りがあった時、誤り検出器４０によってその許容能力範囲の数の誤りであれば誤りの検出が行われ、この時誤り訂正器５０によってその許容能力範囲の数の誤りであれば誤りの訂正が行われる。誤り数が誤り検出器４０の許容能力範囲より大きければ、確率的に誤りの検出を行う。これで読み出しが終了される。
【０１１８】
カラム不良が生じた場合には、不良カラムのアドレスにポインタが立てられる。その後、情報データＤ２０と検査データＤ３０が読み出され、これらのデータは誤り検出器４０に入力される。誤りの数が誤り検出器４０の許容能力範囲内にあれば、先の実施形態と同様に誤り検出／訂正が実行される。誤りの数が誤り検出器４０の許容能力範囲内になければ、不良カラムのアドレスにあるデータを変更し、このデータを再度誤り検出器４０に入力する。
【０１１９】
誤りの数と誤り検出器４０の検出可能な誤り数の大小関係に応じて、不良カラムのアドレスにあるデータの変更を考えられる全てのパターンに対して行われるまで、上述のアルゴリズムを繰り返す。これらのどのパターンに対しても誤りの数が誤り検出器４０の許容能力範囲内にあり、誤りの数が誤り訂正器５０の許容能力範囲内になければ、誤りがあったことを知らせるエラーフラグを出力する。
【０１２０】
図２２示す各ステップの内容を、以下に簡単に説明する。
【０１２１】
読み出し開始する（ステップＳ１）。カラム不良のあるアドレスを検索する（ステップＳ２）。ここで、カラム不良の数をｎとする。
【０１２２】
ｎが０か否か、すなわちカラム不良があるか否かを判断し（ステップＳ３）、カラム不良がある時にはステップＳ１１に進み、カラム不良がない時にはステップＳ４に進む。
【０１２３】
情報データＤ２０及び検査データＤ３０の読み出しを行う（ステップＳ４）。そして、誤り検出を行い、この時誤りの数をｍとする（ステップＳ５）。
【０１２４】
ステップＳ５で得られた誤りの数が訂正できる誤りの数以下であるか否かを判断し（ステップＳ６）、誤りの数が訂正できる誤りの数以下である場合にはステップＳ７に進み、誤りの数が訂正できる誤りの数以下でない場合にはステップＳ９へ進む。
【０１２５】
誤りの数が０であるか否かを判断し（ステップＳ７）、誤りの数が０である場合にはステップＳ１０に進み、読み出しを終了する（ステップＳ１０）。誤りの数が０でない場合にはステップＳ８に進み、誤りの訂正を行う（ステップＳ８）。
【０１２６】
ステップＳ６で誤りの数が訂正できる誤りの数以下でない判断された場合に訂正できない誤りがあったことを知らせるエラーフラグを出力し（ステップＳ９）、読み出しを終了する（ステップＳ１０）。
【０１２７】
ステップＳ３でカラム不良があると判断されたとき、その数が許容するカラム不良の数Ｎ以下であるか否かを判断し（ステップＳ１１）、カラム不良の数が許容するカラム不良の数以下である場合にはステップＳ１２に進み、その不良カラムのアドレスａi（ｉ＝１、…、ｎ）を出力し（ステップＳ１２）、そうでない場合にはステップＳ２０に進み、訂正できない誤りがあったことを知らせるエラーフラグを出力して（ステップＳ２０）、読み出しを終了する（ステップＳ２１）。
【０１２８】
情報データＤ２０及び検査データＤ３０の読み出しを行い（ステップＳ１３）、次に、誤り検出を行い、この時誤りの数をｍとする（ステップＳ１４）。
【０１２９】
ステップＳ１４で得られた誤りの数が完全に検出できる誤りの数Ｌ以下であるか否かを判断し（ステップＳ１５）、誤りの数が完全に検出できる誤りの数以下である場合にはステップＳ１６へ進み、更に誤りの数が訂正できる誤りの数以下であるか否かを判断する（ステップＳ１６）。ステップＳ１５において、誤りの数が完全に検出できる誤りの数以下でない場合にはステップＳ１９へ進み、訂正できない誤りがあったことを知らせるエラーフラグを出力して（ステップＳ１９）、読み出しを終了する（ステップＳ２１）。
【０１３０】
ステップＳ１６において、誤りの数が訂正できる誤りの数以下である場合にはステップＳ７へ進み、誤りの数が訂正できる誤りの数以下でない場合にはステップＳ１７へ進み、不良カラムアドレスのデータを変更する（ステップＳ１７）。
【０１３１】
そして、ステップＳ１７の不良カラムアドレスのデータ変更を考えられる全ての場合を行ったか否かを判断し（ステップＳ１８）、不良カラムアドレスのデータ変更を考えられる全ての場合を行ったと判断された場合ステップＳ５に進み、そうでない場合にはステップＳ１４に戻る。
【０１３２】
上記のフローチャートにおいて、許容する不良カラムの数Ｎは、望ましくは完全に検出できる誤りの数Ｌ以下にする。通常は、Ｎ＝Ｌ−Ｍ又はＮ＝１である。
【０１３３】
図２３は、第７実施形態における不良例を示すブロック図である。図中の斜線部は、それが位置するメモリセルに誤りが生じたことを示し、その数字はそれぞれの誤りの大きさを示している。以下では例として、１ビット誤り訂正２ビット誤り検出符号を適応した場合を述べる。
【０１３４】
ａ行が読み出された場合、誤りは一つもないので、そのまま正しく読み出される。
【０１３５】
ｂ行又はｄ行が読み出された場合、誤りは一つだけなので、誤り訂正器５０により訂正される。
【０１３６】
ｃ行が読み出された場合、誤りは二つであるので、誤り検出器４０により検出される。
【０１３７】
ｅ行が読み出された場合、誤りは不良カラム上に一つ、不良カラム外に一つであるので、まず誤り検出器４０により検出される。その後、不良カラム上のデータは取り得る可能なデータに変換され、もとの書き込みデータとされる誤りは不良カラム外の一つになる。ここで、このデータは誤り訂正器５０により訂正される。
【０１３８】
ｆ行が読み出された場合、誤りは不良カラム上に大きさ２の誤りであるので、誤り検出器４０により検出される。その後、上と同様にこのデータは誤り訂正器５０により訂正される。
【０１３９】
ｇ行が読み出された場合、誤りは不良カラム上に大きさ２の誤りが一つ、不良カラム外に一つである。この場合には、確率的に誤り検出器４０により検出される。検出された場合は、その後に上と同様にこのデータは誤り訂正器５０により訂正される。
【０１４０】
ｈ行が読み出された場合、誤りは不良カラム上に大きさ２の誤りが一つ、不良カラム外に二つ以上である。この場合は、確率的に誤り検出器４０により検出されるが、誤りは訂正され得ない。
【０１４１】
表９は、３値の場合における情報ビット数に対する検査ビット数の関係を示すものである。
【０１４２】
0003866674.tif 000007
バイナリ・コードにおいて単一２ビットバイト誤り訂正二重２ビットバイト誤り検出符号を適応する場合、真の情報データにおいて単一３ビットバイト誤り訂正二重３ビットバイト誤り検出符号を適応する場合、本発明によるバイナリ・コードにおいて１ビット誤り訂正２ビット誤り検出符号を適応する場合、を示している。表９から、本発明によるバイナリ・コードにおいて１ビット誤り訂正２ビット誤り検出符号を適応する場合に情報データ数に対する検査データ数を最小にすることが分かる。なお、表９中の括弧内の数字は、検査データ数に対応するメモリセルの数を表す。
【０１４３】
本発明は、上記各実施の形態に限ることなく、その他、実施段階ではその要旨を逸脱しない範囲で種々の変形を実施し得ることが可能である。さらに、上記各実施形態には、種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組合せにより種々の発明が抽出され得る。
【０１４４】
また、例えば各実施形態に示される全構成要件から幾つかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【０１４５】
【発明の効果】
本発明によれば次のような効果が得られる。
【０１４６】
上記のように、本発明によれば、多値を決める物理量をその大きさ順に並べた時にｉ番目のものを多値データ“ｉ”とするとき、読み出された多値データが書き込まれた多値データと高々大きさ１だけ変わり得る場合、多値データとバイナリ・コードの対応を多値データ大きさ１だけ異なるとき対応するバイナリ・コードがハミング距離１となるようにする手段を用いることによって、１ビット誤り訂正符号の適用が可能となる。これにより、比較的低い冗長度、すなわち簡単な復号化回路を用いることができ、更に２ビット誤り検出能力を持つ２ビット誤り検出符号に拡張することによって２ビット誤り検出を完全に行うことができる。
【０１４７】
また、バースト誤りが生じ、その結果として１符号語中に２ビット誤りが発生しても、１ビット誤りを訂正し、かつ、２ビット誤りを検出する符号を用いて２ビット誤りを訂正する可能性を持たせることができる。
【図面の簡単な説明】
【図１】  本発明の第１実施形態に係る記憶システムの概略構成図。
【図２】  本発明の第２実施形態に係る記憶システムの概略構成図。
【図３】  本発明の第３実施形態に係る記憶システムの概略構成図。
【図４】  本発明の第４実施形態に係る記憶システムの概略構成図。
【図５】  本発明の第５実施形態に係る記憶システムの概略構成図。
【図６】  ３値セルのしきい電圧Ｖｔの分布と中間バイナリ・コードとの対応を示す図。
【図７】  誤り訂正検出のための検査行列の例を示す図。
【図８】  データ変換回路の回路図例を示す図。
【図９】  データ変換回路と、ＩＯパッドと、ＩＯバッファと、誤り訂正検出回路（ＥＣＣ）と、書込／読出回路との接続関係を示す図。
【図１０】  ＥＣＣの構成例を示す図。
【図１１】  誤り訂正回路の構成例を示す図。
【図１２】  誤り報知回路例を示す図。
【図１３】  Ｉ、Ｐと書込／読出回路１５０とビット線との接続関係を示す図。
【図１４】  ２入力書込／読出回路例を示す図。
【図１５】  １入力書込／読出回路例を示す図。
【図１６】  カラムデコーダ例を示す図。
【図１７】  書き込みデータの入力時のタイミングを示す図。
【図１８】  書き込み時における、書込／読出回路の制御信号と、セルの選択ゲートＳＧ１、ＳＧ２と、制御ゲートＣＧ１〜ＣＧ８のタイミング図。
【図１９】  読み出し時における、書込／読出回路の制御信号と、セルの選択ゲートＳＧ１、ＳＧ２と、制御ゲートＣＧ１〜ＣＧ８のタイミング図。
【図２０】  読み出しデータの出力時のタイミングを示す図。
【図２１】  本発明の第７実施形態に係る記憶システムの概略構成図。
【図２２】  本発明の第７実施形態における誤り検出／訂正のアルゴリズムを示すフローチャート。
【図２３】  本発明の第７実施形態における不良例を示すブロック図。
【図２４】  ＮＡＮＤセルの断面構造例を示す図。
【図２５】  ＥＥＰＲＯＭのメモリセル構造を示す図。
【図２６】  ３値の場合のメモリセルのしきい電圧と“０”、“１”、“２”との対応関係を示す図。
【図２７】  ３値ＮＯＲ型ＥＥＰＲＯＭの回路構成を示す図。
【図２８】  ３値ＮＡＮＤ型ＥＥＰＲＯＭの回路構成を示す図。
【符号の説明】
１０…データ変換器、２０…検査データ演算器、３０…セルアレイ、
１１…ｐ型ウェル、１４…浮遊ゲート（電荷蓄積層）、１６…制御ゲート、
１７…層間絶縁膜、１８…ビット線、１９…ｎ型拡散層、４０…誤り検出器、
５０…誤り訂正器、６０…データ逆変換器、７０…禁止データ検出器、
８０…入出力データ−多値データ変換器、９０…多元多値データ変換器、
１００…ＣＰＵ、１１０…データ変換回路、１２０…ＩＯパッド、
１３０…ＩＯバッファ、１４０…ＥＣＣ、１５０…書込／読出回路、
１６０…バースト破壊位置検出部、１７０…データ再設定部、
２００…ＥＥＰＲＯＭ、２１０…情報データ記憶部、
２２０…検査データ記憶部、
Ｄ１０…入力データ、Ｄ２０…情報データ、Ｄ３０…検査データ、
Ｄ４０…書込データ、Ｄ５０…読出データ、Ｄ６０…出力データ。
【図１】
0003866674.tif 000008
【図２】
0003866674.tif 000009
【図３】
0003866674.tif 000010
【図４】
0003866674.tif 000011
【図５】
0003866674.tif 000012
【図６】
0003866674.tif 000013
【図７】
0003866674.tif 000014
【図８】
0003866674.tif 000015
【図９】
0003866674.tif 000016
【図１０】
0003866674.tif 000017
【図１１】
0003866674.tif 000018
【図１２】
0003866674.tif 000019
【図１３】
0003866674.tif 000020
【図１４】
0003866674.tif 000021
【図１５】
0003866674.tif 000022
【図１６】
0003866674.tif 000023
【図１７】
0003866674.tif 000024
【図１８】
0003866674.tif 000025
【図１９】
0003866674.tif 000026
【図２０】
0003866674.tif 000027
【図２１】
0003866674.tif 000028
【図２２】
0003866674.tif 000029
【図２３】
0003866674.tif 000030
【図２４】
0003866674.tif 000031
【図２５】
0003866674.tif 000032
【図２６】
0003866674.tif 000033
【図２７】
0003866674.tif 000034
【図２８】
0003866674.tif 000035