(57)【特許請求の範囲】
【請求項１】
メモリアレイと、
前記メモリアレイから読み出したデータを保持し、または前記メモリアレイにプログラムするデータを保持する保持手段と、
データを入力する入力手段と、
前記入力手段からのデータが第１の特定のビット列または第２の特定のビット列である場合には、前記入力手段からのデータを前記保持手段へ提供し、前記入力手段からのデータが第１の特定のビット列および第２の特定のビット列のいずれでもない場合には、前記入力手段からのデータをスクランブルし、スクランブルしたデータを前記保持手段へ提供する符号化手段とを含み、
前記第１の特定のビット列は、前記メモリアレイを消去したときのデータに等しいものであり、第２の特定のビット列は、前記第１のスクランブル手段によりスクランブルされた場合に前記第１の特定のビット列になるものである、半導体記憶装置。
【請求項２】
半導体記憶装置はさらにデータを出力する出力手段と、
前記保持手段からのデータが前記第１の特定のビット列または前記第２の特定のビット列である場合には、前記保持手段からのデータを前記出力手段へ提供し、前記保持手段からのデータが前記第１の特定のビット列および第２の特定のビット列のいずれでもない場合には、前記保持手段からのデータをデスクランブルし、デスクランブルしたデータを前記出力手段へ提供する復号化手段とを含む、請求項１に記載の半導体記憶装置。
【請求項３】
前記符号化手段は、前記入力手段からのデータを受け取り、当該データに前記第１の特定のビット列が含まれるか否かを検出する第１の検出器と、前記入力手段からのデータを受け取り、当該データをスクランブルするスクランブル回路と、前記スクランブル回路によりスクランブルされたデータを受け取り、当該データに前記第２の特定のビット列が含まれるか否かを検出する第２の検出器と、前記第１の検出器および前記第２の検出器の検出結果に基づき前記入力手段からのデータまたは前記スクランブル回路によりスクランブルされたデータを選択部を含む、請求項１に記載の半導体記憶装置。
【請求項４】
前記復号化手段は、前記保持手段からのデータを受け取り、当該データに前記第１の特定のビット列が含まれているか否かを検出する第１の検出器と、前記保持手段からのデータを受け取り、当該データをデスクランブルするデスクランブル回路と、前記デスクランブル回路によりデスクランブルされたデータを受け取り、当該データに前記第２の特定のビット列が含まれるか否かを検出する第２の検出器と、前記第１の検出器および前記第２の検出器の検出結果に基づき、前記保持手段からのデータまたは前記デスクランブル回路によりデスクランブルされたデータを選択する選択部を含む、請求項２に記載の半導体記憶装置。
【請求項５】
前記第１の特定のビット列は、論理１からなるビット列である、請求項１ないし４いずれか１つに記載の半導体記憶装置。
【請求項６】
ＮＡＮＤ型のメモリアレイを有する半導体記憶装置のデータ処理方法であって、
外部からプログラムすべきデータを入力するステップと、
前記入力されたデータが第１の特定のビット列または第２の特定のビット列である場合には、前記入力されたデータを前記メモリアレイへ提供し、前記入力されたデータが第１の特定のビット列および第２の特定のビット列のいずれでもない場合には、前記入力されたデータをスクランブルし、スクランブルしたデータを前記メモリアレイへ提供する符号化ステップとを含み、
前記第１の特定のビット列は、前記メモリアレイを消去したときのデータに等しいものであり、第２の特定のビット列は、前記スクランブルされた場合に前記第１の特定のビット列になるものである、データ処理方法。
【請求項７】
データ処理方法はさらに、
前記メモリアレイからデータを読み出すステップと、
読み出されたデータが前記第１の特定のビット列または前記第２の特定のビット列である場合には、前記読み出されたデータを出力手段へ提供し、前記読み出されたデータが前記第１の特定のビット列および第２の特定のビット列のいずれでもない場合には、前記読み出されたデータをデスクランブルし、デスクランブルしたデータを前記出力手段へ提供する復号化ステップとを含む、請求項６に記載のデータ処理方法。
【請求項８】
前記符号化ステップは、前記入力されたデータに前記第１の特定のビット列が含まれるか否かを検出する第１の検出ステップと、前記入力されたデータをスクランブルするスクランブルステップと、スクランブルステップによりスクランブルされたデータに前記第２の特定のビット列が含まれるか否かを検出する第２の検出ステップと、前記第１の検出ステップおよび前記第２の検出ステップの検出結果に基づき前記入力されたデータまたは前記スクランブルされたデータを選択する選択ステップ部を含む、請求項６に記載のデータ処理方法。
【請求項９】
前記復号化ステップは、前記メモリアレイから読み出されたデータに前記第１の特定のビット列が含まれているか否かを検出する第１の検出ステップと、前記読み出されたデータをデスクランブルするデスクランブルステップと、前記デスクランブルされたデータに前記第２の特定のビット列が含まれるか否かを検出する第２の検出ステップと、前記第１の検出ステップおよび前記第２の検出ステップの検出結果に基づき、前記読み出されたデータまたは前記デスクランブルされたデータを選択する選択ステップを含む、請求項７に記載のデータ処理方法。
【請求項１０】
前記特定のビット列は、論理１からなるビット列である、請求項６ないし９いずれか１つに記載のデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＮＡＮＤ型フラッシュメモリ等の半導体記憶装置に関し、特にＮＡＮＤ型フラッシュメモリにおけるデータのスクランブル方法に関する。
【背景技術】
【０００２】
ＮＡＮＤ型フラッシュメモリは、複数のブロックから構成されたメモリアレイを有し、１つのブロックには、複数のメモリセルが直列に接続されたＮＡＮＤストリングが形成される。典型的にデータの読出しやプログラムは、ページ単位で行われ、データの消去はブロック単位で行われる。
【０００３】
特許文献１は、ＮＡＮＤ型フラッシュメモリの動作信頼性を向上させるデータの書込み方法を開示している。この書込み方法は、ワード線のアドレスに基づきスクランブル方式を選択し、選択したスクランブル方式に従い書込むべきデータをスクランブルし、スクランブルされたデータを対応するページに書込むものである。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−１９８２９９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ＮＡＮＤ型フラッシュメモリのメモリセルは、フローティングゲート（電荷蓄積層）とコントロールゲートとを備えたＮ型のＭＯＳ構造から構成される。フローティングゲートに電子が蓄積されると、メモリセルのしきい値が正方向にシフトし、この状態は、データ「０」である。他方、フローティングゲートから電子が放出されると、しきい値が負方向にシフトし、この状態は、データ「１」である。ブロックが一括消去されたとき、当該ブロック内のすべてのメモリセルは、データ「１」である。
【０００６】
このようなフラッシュメモリにおいて、プログラム（書込み）や消去が繰り返されたとき、データに依存した信頼性の悪化が生じ得る。例えば、プログラムするとき、データ「０」の割合がデータ「１」よりも圧倒的に多いような場合、またはそれと反対にデータ「１」の割合がデータ「０」よりも圧倒的に多いような場合である。メモリセルの微細化、高集積化により、メモリセル間の距離が短くなり、隣接するメモリセルが容量的に結合され、相互に干渉し得る状況にある。１つのメモリセルを取り囲む周辺のメモリセルが全てデータ「０」であれば、中心のメモリセルには、周辺のメモリセルの電荷が影響して全てデータ「１」の場合に比べしきい値が高くなる。さらに、データ「０」またはデータ「１」の偏在は、データを読み出すときのソースライン電圧の浮き電圧の相違によりセンスアンプの特性にも悪影響を及ぼしかねない。
【０００７】
それ故、信頼性の観点からすると、データ「０」とデータ「１」の割合はおおよそ０．５であることが望ましい。これを実現する１つの方法に、データスクランブルスキームがある。つまり、プログラムすべきデータを、乱数を用いてスクランブルし、スクランブルしたデータをメモリアレイにプログラムする。スクランブルは、例えば、プログラムするアドレスをシーズに用いてアドレス毎に乱数を変えることが可能であり、これにより、メモリアレイの行方向および列方向において、データ「０」とデータ「１」をランダムに配置させることができる。また、読出し動作では、メモリアレイから読み出されたデータをスクランブルしたときの乱数によりデスクランブルすることで、スクランブルされたデータは元のデータに変換される。
【０００８】
ＮＡＮＤ型フラッシュメモリでは、データを消去した後のメモリセルは、データ「１」であり、消去後の読出し動作では、例えば、「ＦＦｈ」のデータが出力されなければならない。このため、データスクランブルをＮＡＮＤ型フラッシュメモリに用いた場合には、消去後のデータがすべて「１」となるように、デスクランブルを禁止する必要がある。他方、確率的には非常に小さいが、データスクランブルによりプログラムされたデータがすべて「１」となることがある。このようなデータを読出す場合には、デスクランブルする必要がある。このような制約から、ＮＡＮＤ型フラッシュメモリでは、メモリアレイの冗長領域等に、当該ページが消去された状態のものか、またはプログラムされた状態のものかを判定するためのフラグビットを設けている。フラグビットは、当該ページを含むブロックが消去されたとき、データ「１」であり、当該ページがプログラムされたとき、データ「０」に変更される。
【０００９】
図１（Ａ）は、プログラム動作時のフロー、図１（Ｂ）は、読出し動作時のフローである。先ず、プログラム動作では、外部のコントローラからプログラムコマンドが受け取られ（Ｓ１０）、次いで、アドレスおよびプログラムすべきデータが受け取られる（Ｓ１２）。受け取られたデータは、スクランブルされ（Ｓ１４）、さらに選択されたページがプログラムされたことを示すようにフラグがデータ「１」から「０」に変更される（Ｓ１６）。次に、スクランブルされたデータおよびフラグが選択されたページにプログラムされる（Ｓ１８）。
【００１０】
読出し動作では、外部のコントローラから読出しコマンドおよびアドレスが入力されると（Ｓ２０）、メモリアレイの選択されたページからデータが読出され（Ｓ２２）、次に、フラグの判定が行われる（Ｓ２４）。フラグが「０」であれば、仮にすべてのデータが「１」であるにせよ、そのデータはプログラムされたデータであるから、読み出されたデータがデスクランブルされ（Ｓ２６）、元のデータに変換されて出力される（Ｓ２８）。一方、フラグが「１」であれば、読み出したデータは消去後のデータであるから、デスクランブル処理をすることなくそのままデータを出力する（Ｓ２８）。
【００１１】
このように従来のＮＡＮＤ型フラッシュメモリでは、データスクランブルスキームを実現するためには、消去されたデータかプログラムされたデータかを判別するためのフラグビットを格納するための記憶容量が必要となり、さらにはデータの読出し時にフラグビットを判定するために時間が余分にかかってしまうという課題がある。
【００１２】
本発明は、このような従来の課題を解決し、消去後のデータがプログラムされたデータかを識別する識別情報を付加することなくデータスクランブルを行い、かつ信頼性を向上させる半導体記憶装置を提供することを目的とする。
【課題を解決するための手段】
【００１３】
本発明の半導体記憶装置は、メモリアレイと、前記メモリアレイから読み出したデータを保持し、または前記メモリアレイにプログラムするデータを保持する保持手段と、データを入力する入力手段と、前記入力手段からのデータが第１の特定のビット列または第２の特定のビット列である場合には、前記入力手段からのデータを前記保持手段へ提供し、前記入力手段からのデータが第１の特定のビット列および第２の特定のビット列のいずれでもない場合には、前記入力手段からのデータをスクランブルし、スクランブルしたデータを前記保持手段へ提供する符号化手段とを含み、前記第１の特定のビット列は、前記メモリアレイを消去したときのデータに等しいものであり、第２の特定のビット列は、前記第１のスクランブル手段によりスクランブルされた場合に前記第１の特定のビット列になるものである。
【００１４】
好ましくは半導体記憶装置はさらにデータを出力する出力手段と、前記保持手段からのデータが前記第１の特定のビット列または前記第２の特定のビット列である場合には、前記保持手段からのデータを前記出力手段へ提供し、前記保持手段からのデータが前記第１の特定のビット列および第２の特定のビット列のいずれでもない場合には、前記保持手段からのデータをデスクランブルし、デスクランブルしたデータを前記出力手段へ提供する復号化手段とを含む。好ましくは前記符号化手段は、前記入力手段からのデータを受け取り、当該データに前記第１の特定のビット列が含まれるか否かを検出する第１の検出器と、前記入力手段からのデータを受け取り、当該データをスクランブルするスクランブル回路と、前記スクランブル回路によりスクランブルされたデータを受け取り、当該データに前記第２の特定のビット列が含まれるか否かを検出する第２の検出器と、前記第１の検出器および前記第２の検出器の検出結果に基づき前記入力手段からのデータまたは前記スクランブル回路によりスクランブルされたデータを選択部を含む。好ましくは前記復号化手段は、前記保持手段からのデータを受け取り、当該データに前記第１の特定のビット列が含まれているか否かを検出する第１の検出器と、前記保持手段からのデータを受け取り、当該データをデスクランブルするデスクランブル回路と、前記デスクランブル回路によりデスクランブルされたデータを受け取り、当該データに前記第２の特定のビット列が含まれるか否かを検出する第２の検出器と、前記第１の検出器および前記第２の検出器の検出結果に基づき、前記保持手段からのデータまたは前記デスクランブル回路によりデスクランブルされたデータを選択する選択部を含む。例えば、前記第１の特定のビット列は、論理１からなるビット列である。
【００１５】
本発明のデータ処理方法は、ＮＡＮＤ型のメモリアレイを有する半導体記憶装置のものであって、外部からプログラムすべきデータを入力するステップと、前記入力されたデータが第１の特定のビット列または第２の特定のビット列である場合には、前記入力されたデータを前記メモリアレイへ提供し、前記入力されたデータが第１の特定のビット列および第２の特定のビット列のいずれでもない場合には、前記入力されたデータをスクランブルし、スクランブルしたデータを前記メモリアレイへ提供する符号化ステップとを含み、前記第１の特定のビット列は、前記メモリアレイを消去したときのデータに等しいものであり、第２の特定のビット列は、前記スクランブルされた場合に前記第１の特定のビット列になるものである。
【００１６】
好ましくはデータ処理方法はさらに、前記メモリアレイからデータを読み出すステップと、読み出されたデータが前記第１の特定のビット列または前記第２の特定のビット列である場合には、前記読み出されたデータを出力手段へ提供し、前記読み出されたデータが前記第１の特定のビット列および第２の特定のビット列のいずれでもない場合には、前記読み出されたデータをデスクランブルし、デスクランブルしたデータを前記出力手段へ提供する復号化ステップとを含む。好ましくは前記符号化ステップは、前記入力されたデータに前記第１の特定のビット列が含まれるか否かを検出する第１の検出ステップと、前記入力されたデータをスクランブルするスクランブルステップと、スクランブルステップによりスクランブルされたデータに前記第２の特定のビット列が含まれるか否かを検出する第２の検出ステップと、前記第１の検出ステップおよび前記第２の検出ステップの検出結果に基づき前記入力されたデータまたは前記スクランブルされたデータを選択する選択ステップ部を含む。好ましくは前記復号化ステップは、前記メモリアレイから読み出されたデータに前記第１の特定のビット列が含まれているか否かを検出する第１の検出ステップと、前記読み出されたデータをデスクランブルするデスクランブルステップと、前記デスクランブルされたデータに前記第２の特定のビット列が含まれるか否かを検出する第２の検出ステップと、前記第１の検出ステップおよび前記第２の検出ステップの検出結果に基づき、前記読み出されたデータまたは前記デスクランブルされたデータを選択する選択ステップを含む。例えば前記特定のビット列は、論理１からなるビット列である。
【発明の効果】
【００１７】
本発明によれば、メモリアレイを消去したときと等しい第１の特定のビット列、およびスクランブルしたときに第１の特定のビット列となる第２の特定のビット列のいずれかに該当する場合には、入力されたデータをスクランブルせずにメモリアレイにプログラムし、メモリアレイから読出されたデータが第１の特定のビット列または第２の特定のビット列に該当する場合には、読み出されたデータをデスクランブルせずに出力するようにしたので、消去したときのデータかプログラムされたデータかを識別するためのフラグ等の識別情報を付加する必要がなくなる。このため、メモリアレイの記憶容量を他の資源に有効に活用することができ、かつデータスクランブルを実施したときのデータの読出し時間を短縮することができる。
【図面の簡単な説明】
【００１８】
【図１】データスクランブルを行うＮＡＮＤ型フラッシュメモリの動作フローであり、図１（Ａ）は、プログラム動作時のフロー、図１（Ｂ）は、読出し動作時のフローである。
【図２】本発明の実施例に係るＮＡＮＤ型フラッシュメモリの全体の概略構成を示す図である。
【図３】本発明の実施例に係るメモリセルアレイのＮＡＮＤストリングの構成を示す回路図である。
【図４】本発明の実施例に係るフラッシュメモリのプログラム時に各部に印加される電圧の一例を示す図である。
【図５】本発明の実施例によるスクランブル部の内部構成を示す図である。
【図６】図６（Ａ）は、書込みエンコーダのスクランブルの判定基準、図６（Ｂ）は、読出しデコーダのデスクランブルの判定基準を示す。
【図７】図７（Ａ）は、本実施例の書込みエンコーダの内部構成を示し、図７（Ｂ）は、本実施例による読出しデコーダの内部構成を示す。
【発明を実施するための形態】
【００１９】
以下、本発明の実施の形態について図面を参照して詳細に説明する。なお、図面は、分かり易くするために各部を強調して示してあり、実際のデバイスのスケールとは同一ではないことに留意すべきである。
【００２０】
本発明の実施例に係るフラッシュメモリの典型的な構成を図２に示す。但し、ここに示すフラッシュメモリの構成は例示であり、本発明は、必ずしもこのような構成に限定されるものではない。本実施例のフラッシュメモリ１０は、複数のメモリセルが行列状に配列されたメモリアレイ１００と、外部入出力端子Ｉ／Ｏに接続され入出力データを保持する入出力バッファ１１０と、メモリアレイ１００にプログラムするデータのスクランブルやそこから読み出されたデータのデスクランブルを行うスクランブル部１２０と、入出力バッファ１１０からのアドレスデータを受け取るアドレスレジスタ１３０と、入出力バッファ１１０からのコマンドデータや外部からの制御信号を受け取り、各部を制御する制御部１４０と、アドレスレジスタ１３０から行アドレス情報Ａｘを受け取り、行アドレス情報Ａｘをデコードし、デコード結果に基づきブロックの選択およびワード線の選択等を行うワード線選択回路１５０と、ワード線選択回路１５０によって選択されたページから読み出されたデータを保持したり、選択されたページへの書込みデータを保持するページバッファ／センス回路１６０と、アドレスレジスタ１３０から列アドレス情報Ａｙを受け取り、列アドレス情報Ａｙをデコードし、当該デコード結果に基づきページバッファ／センス回路１６０内のデータの選択等を行う列選択回路１７０と、データの読出し、プログラムおよび消去等のために必要な種々の電圧（書込み電圧Vpgm、パス電圧Vpass、読出しパス電圧Vread、消去電圧Versなど）を生成する内部電圧発生回路１８０とを含んで構成される。
【００２１】
メモリアレイ１００は、列方向に配置されたｍ個のメモリブロックBLK(0)、BLK(1)、・・・、BLK(m-1)を有する。ブロックBLK(0)に近接して、ページバッファ／センス回路１６０が配置される。このような構成以外にも、ページバッファ／センス回路１６０は、ブロックの他方の端部、あるいは両側の端部に配置されるものであってもよい。
【００２２】
１つのメモリブロックには、図３に示すように、複数のメモリセルを直列に接続したＮＡＮＤストリングユニットＮＵが複数形成され、１つのメモリブロック内にｎ＋１個のストリングユニットＮＵが行方向に配列されている。セルユニットＮＵは、直列に接続された複数のメモリセルMCi(i=０、１、・・・、３１)と、一方の端部であるメモリセルMC31のドレイン側に接続された選択トランジスタTDと、他方の端部であるメモリセルMC0のソース側に接続された選択トランジスタTSとを含み、選択トランジスタTDのドレインは、対応する１つのビット線GBLに接続され、選択トランジスタTSのソースは、共通のソース線SLに接続される。
【００２３】
メモリセルMCiのコントロールゲートは、ワード線WLiに接続され、選択トランジスタTD、TSのゲートは、ワード線WLと並行する選択ゲート線SGD、SGSに接続される。ワード線選択回路１５０は、行アドレスＡｘまたは変換されたアドレスに基づきブロックを選択するとき、ブロックの選択ゲート信号SGS、SGDを介して選択トランジスタTD、TSを選択的に駆動する。図３は、典型的なセルユニットの構成を示しているが、セルユニットは、ＮＡＮＤストリング内に１つまたは複数のダミーセルを包含するものであってもよい。
【００２４】
メモリセルは、典型的に、Ｐウエル内に形成されたＮ型の拡散領域であるソース／ドレインと、ソース／ドレイン間のチャンネル上に形成されたトンネル酸化膜と、トンネル酸化膜上に形成されたフローティングゲート（電荷蓄積層）と、フローティングゲート上に誘電体膜を介して形成されたコントロールゲートとを含むＭＯＳ構造を有する。フローティングゲートに電荷が蓄積されていないとき、つまりデータ「１」が書込まれているとき、しきい値は負状態にあり、メモリセルは、ノーマリオンである。フローティングゲートに電子が蓄積されたとき、つまりデータ「０」が書込まれているとき、しきい値は正にシフトし、メモリセルは、ノーマリオフである。但し、メモリセルは、１ビット（２値データ）を記憶するＳＬＣタイプでもよいし、多ビットを記憶するＭＬＣタイプであってもよい。
【００２５】
図４は、フラッシュメモリの各動作時に印加されるバイアス電圧の一例を示したテーブルである。読出し動作では、ビット線に或る正の電圧を印加し、選択されたワード線に或る電圧（例えば０Ｖ）を印加し、非選択ワード線にパス電圧Vpass（例えば４．５Ｖ）を印加し、選択ゲート線SGD、SGSに正の電圧（例えば４．５Ｖ）を印加し、ビット線選択トランジスタTD、ソース線選択トランジスタTSをオンし、共通ソース線に０Ｖを印加する。プログラム（書込み）動作では、選択されたワード線に高電圧のプログラム電圧Vprog（１５〜２０Ｖ）を印加し、非選択のワード線に中間電位（例えば１０Ｖ）を印加し、ビット線選択トランジスタTDをオンさせ、ソース線選択トランジスタTSをオフさせ、「０」または「１」のデータに応じた電位をビット線GBLに供給する。消去動作では、ブロック内の選択されたワード線に０Ｖを印加し、Ｐウエルに高電圧（例えば２０Ｖ）を印加し、フローティングゲートの電子を基板に引き抜くことで、ブロック単位でデータを消去する。
【００２６】
次に、本実施例のデータスクランブル処理の詳細について説明する。スクランブル部１２０は、図５に示すように、入出力バッファ１１０とページバッファ１６０との間に配置され、プログラム動作時、書込みエンコーダ２００が入出力バッファ１１０から入力されたデータをスクランブルし、スクランブルされたデータをページバッファ１６０へ提供し、読出し動作時、読出しデコーダ２２０がページバッファ１６０から読み出されたデータをデスクランブルし、デスクランブルされたデータを入出力バッファ１１０へ提供する。通常、スクランブル処理は、入力されたデータに対してアドレスなどから生成した乱数シードとＸＯＲ演算を行う。この場合、スクランブル処理されたデータに対して同一の乱数シードとのＸＯＲ演算を再度行うことにより、元の入力データ、すなわちデスクランブルされたデータを得ることができる。このため、スクランブル処理を行う書込みエンコーダ２００と、デスクランブル処理を行う読み出しデコーダ２２０は、同一の回路から構成され、それぞれスクランブル処理およびデスクランブル処理をすることが可能である。
【００２７】
ＮＡＮＤ型フラッシュメモリにおいてデータのスクランブルを実施する場合、消去後の読出しでは、データ「１」が出力されなければならない。従って、消去後のデータを読み出すとき、データのスクランブルは禁止される。他方、スクランブルされたデータがすべて「１」であるデータがプログラムされたとき、このデータは、消去後のデータと違って、スクランブルされた状態でメモリセルアレイに格納されており、読み出し時にはデスクランブルされなければならないため、消去後のデータと区別されなければならない。従来は、両者のデータを区別するためにフラグビットを用意したが、本実施例では、フラグビットを用いず、プログラムされるデータまたは読み出されるデータの構成に基づきスクランブルを制御する。
【００２８】
書込みエンコーダ２００は、上記したように、入出力バッファ１１０から入力されたプログラムすべきデータのスクランブルを行い、読出しデコーダ２２０は、ページバッファ１６０に保持された読出しデータのデスクランブルを行う。図６（Ａ）は、書込みエンコーダ２００のスクランブルの判定基準を示している。先ず、入出力バッファ１１０からの入力データがすべて「１」であるとき（ここでは、便宜上、ＦＦｈとする）、入力データ「ＦＦｈ」のスクランブルを行わず、入力データ「ＦＦｈ」がそのままメモリアレイにプログラムされる。入力データが「ＸＸｈ」である場合にも、入力データ「ＸＸｈ」のスクランブルを行わず、入力データ「ＸＸｈ」がそのままメモリアレイにプログラムされる。ここで、「ＸＸｈ」は、スクランブルされたときに「ＦＦｈ」になるデータである。入力データが、「ＦＦｈ」および「ＸＸｈ」のいずれでもないとき（これを、総称として「ＹＹｈ」で表している）、入力データ「ＹＹｈ」をスクランブルし、スクランブルされたデータ「ＺＺｈ」がメモリアレイにプログラムされる。
【００２９】
図６（Ｂ）は、読出しデコーダ２２０のデスクランブルの判定基準を示している。ページバッファ１６０に読み出されたデータが「ＦＦｈ」のとき、デスクランブルは行わず、そのまま「ＦＦｈ」が入出力バッファ１１０へ出力される。読み出されたデータが「ＸＸｈ」の場合にも、デスクランブルすることなく、そのまま「ＸＸｈ」が入出力バッファ１１０へ出力される。読み出されたデータが「ＹＹｈ」であるとき、読み出されたデータ「ＹＹｈ」をデスクランブルし、デスクランブルされたデータ「ＺＺｈ」が入出力バッファ１１０へ出力される。
【００３０】
図７（Ａ）は、書込みエンコーダ２００の構成例を示し、図７（Ｂ）は、読出しデコーダ２２０の構成例を示す。書込みエンコーダ２００は、入力データを受け取り、当該入力データが「ＦＦｈ」に該当するか否かを検出する第１の検出器２０２と、入力データを受け取り、当該入力データをスクランブルするスクランブル回路２０４と、スクランブル回路２０４から出力されたスクランブルされたデータを受け取り、当該スクランブルされたデータが「ＦＦｈ」に該当するか否かを検出する第２の検出器２０６と、第１の検出器２０２および第２の検出器２０６の検出結果を受け取り、その論理和を出力するオア回路２０８と、入出力バッファ１１０からの入力データおよびスクランブル回路２０４から出力されるデータを受け取り、オア回路２０８の出力に基づきいずれかのデータを選択するマルチプレクサ２１０とを有する。マルチプレクサ２１０は、オア回路２０８の出力がＨレベルのとき、すなわち、第１の検出器２０２または第２の検出器２０６のいずれかにより「ＦＦｈ」が検出されたとき、入力バッファ１１０からの入力データを選択し、選択したデータをページバッファ１６０へ出力し、オア回路２０８の出力がＬレベルのとき、スクランブル回路２０４によりスクランブルされたデータを選択し、選択したデータをページバッファ１６０へ出力する。
【００３１】
読出しデコーダ２２０は、書込みエンコーダ２００と同様の処理を行う。すなわち、読出しデコーダ２２０は、ページバッファ１６０からの読出しデータを受け取り、当該読出しデータが「ＦＦｈ」に該当するか否かを検出する第１の検出器２２２と、読出しデータを受け取り、当該読出しデータをデスクランブルするデスクランブル回路２２４と、デスクランブル回路２２４から出力されたデスクランブルされたデータを受け取り、当該デスクランブルされたデータが「ＦＦｈ」に該当するか否かを検出する第２の検出器２２６と、第１の検出器２２２および第２の検出器２２６の検出結果を受け取り、その論理和を出力するオア回路２２８と、ページバッファ１６０の読出しデータおよびデスクランブル回路２２４から出力されるデータを受け取り、オア回路２２８の出力に基づきいずれかのデータを選択するマルチプレクサ２３０とを有する。マルチプレクサ２３０は、オア回路２２８の出力がＨレベルのとき、すなわち、第１の検出器２２２または第２の検出器２２６のいずれかにより「ＦＦｈ」が検出されたとき、読出しデータを選択し、選択したデータを入出力バッファ１１０へ出力し、オア回路２２８の出力がＬレベルのとき、デスクランブル回路２２４によりデスクランブルされたデータを選択し、選択したデータを入出力バッファ１１０へ出力する。
【００３２】
本実施例では、プログラムすべきデータが「ＦＦｈ」であるとき、「ＦＦｈ」は、スクランブルされずにメモリアレイにプログラムされる。この場合、プログラムすべきデータ「ＦＦｈ」は、メモリアレイ内において消去後のデータと同じになるが、読出しデータが「ＦＦｈ」である場合には、「ＦＦｈ」がそのまま出力されるので、消去後のデータおよび「ＦＦｈ」のプログラムすべきデータの読出しには何ら問題が生じない。
【００３３】
また、プログラムすべきデータが「ＸＸｈ」であるとき、「ＸＸｈ」は、スクランブルされずにメモリアレイにプログラムされる。つまり、メモリアレイには、消去後のデータと同じ構成のデータがプログラムされないので、消去後のデータから区別される。例えば、あるブロックが消去されたとき、そのブロック内の各ページのメモリセルはすべてデータ「１」である。消去されたブロック内のある選択されたページに、プログラムデータ「ＸＸｈ」がプログラムされるとき、「ＸＸｈ」がそのまま選択されたページにプログラムされることになる。もし、「ＸＸｈ」がスクランブルされた場合には、「ＦＦｈ」がプログラムされることになり、そうすると、プログラムすべきデータ「ＦＦｈ」をプログラムしたときのデータと区別がつかなくなる。
【００３４】
このように本実施例では、データが「ＦＦｈ」、「ＸＸｈ」の場合にスクランブルをスキップすることで、従来のようにページ毎にフラグビットを書込み必要がなくなり、かつデータの読み出し時にはフラグを判定する必要がなくなるため、メモリアレイの記憶容量を他の資源に有効に利用することができ、データの読出し速度を向上させることができる。また、本実施例では、「ＦＦｈ」、「ＸＸｈ」のデータについてスクランブルを実施しないことになるが、これらのデータの発生頻度は非常に少なく、全体の信頼性に及ぼす影響は限定的である。
【００３５】
次に、本発明の他の実施例について説明する。ＮＡＮＤ型フラッシュメモリでは、同一ページにｎ回（ｎは、２以上の自然数）連続してデータをプログラムする機能（以下、便宜上、パーシャルページプログラムという）を実行することが可能である。メモリセルの高集積化が進むと、１ページのサイズも増加し、プログラムするデータ量が１ページのサイズに満たない場合がある。仮に、同一ページに１回しかデータをプログラムすることができないとなると、各ページの利用効率が低下し、その反面、１ページにプログラム可能な複数のデータがあるときに、それらのデータを複数のページにプログラムしなければならないのであれば、プログラムに要する時間が大幅に増加してしまう。他方、同一ページにｎ回連続してプログラムするということは、そのページにｎ回の高いプログラム電圧が印加されることになるため、プログラムの回数には制限がある。例えば、ｎ＝４であれば、同一ページに、４回連続してデータをプログラムすることができる。
【００３６】
パーシャルページプログラムは、例えば、外部のコントローラからプログラムコマンドを受け取った後に、行アドレスＡｘおよび列アドレスＡｙ１を受け取り、次に、パーシャルデータＤ１を受け取り、行アドレスＡｘによって選択されたページの列アドレスＡｙ１を先頭にパーシャルデータＤ１をプログラムし、次に、列アドレスＡｙ２およびパーシャルデータＤ２を受け取り、同一ページの列アドレスＡｙ２を先頭にパーシャルデータＤ２をプログラムし、このような処理がｎ回繰り返され、結果的に、１つのページには、ｎ個のパーシャルデータＤ１、Ｄ２、…、Ｄｎがプログラムされる。
【００３７】
このようなパーシャルページプログラムを実行可能なＮＡＮＤ型フラッシュメモリにおいて、データスクランブルスキームを採用した場合には、ページ内のパーシャルデータがプログラムされたものか、あるいは消去されたものであるかを判定しなければならない。パーシャルページプログラムによりプログラムされるパーシャスデータのサイズは、固定ではなく可変するため、パーシャルデータの境界が判明しなければ、データスクランブルを適切に実行することができない。
【００３８】
本実施例に係るスクランブル部１２０を用いた場合には、パーシャルページプログラムが実行された場合でも、パーシャルデータの境界を判別することなく、適切にデータスクランブルを実施することができる。
【００３９】
上記実施例では、入出力バッファ１１０とページバッファ１６０との間にスクランブル１２０を配置する例を示したが、スクランブル部１２０は、例えば、ページバッファ１６０内に設けられる構成であってもよい。
【００４０】
以上のように本発明の好ましい実施の形態について詳述したが、本発明は、特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００４１】
１０：フラッシュメモリ                  １００：メモリアレイ
１１０：入出力バッファ                  １２０：スクランブル部
１３０：アドレスレジスタ                １４０：制御部
１５０：ワード線選択回路                １６０：ページバッファ／センス回路
１７０：列選択回路                      １８０：内部電圧発生正回路
２００：書込みエンコーダ                ２０２：第１の検出器
２０４：スクランブル回路                ２０６：第２の検出器
２０８：オア回路                        ２１０：マルチプレクサ
２２０：読出しデコーダ                  ２２２：第１の検出器
２２４：スクランブル回路                ２２６：第２の検出器
２２８：オア回路                        ２３０：マルチプレクサ
【要約】
【課題】  消去後のデータがプログラムされたデータかを識別する識別情報を付加することなくデータスクランブルを行い、かつ信頼性を向上させる半導体記憶装置を提供する。
【解決手段】  本発明のフラッシュメモリは、入出力バッファ１１０とページバッファ１６０との間にデータのスクランブルを行うスクランブル部１２０を含む。スクランブル部１２０は、書込みエンコーダ２００と読出しデコーダ２２０を含み、書込みエンコーダ２００は、入力データが一定のビット列に該当する場合には、その入力データのスクランブルをスキップし、読出しデコーダ２２０は、ページバッファ１６０の読出しデータが一定のビット列に該当する場合には、その読出しデータのデスクランブルをスキップする。
【選択図】  図５【図１】
0005940704.tif 000002
【図２】
0005940704.tif 000003
【図３】
0005940704.tif 000004
【図４】
0005940704.tif 000005
【図５】
0005940704.tif 000006
【図６】
0005940704.tif 000007
【図７】
0005940704.tif 000008