(57)【特許請求の範囲】
【請求項１】
第１書き込み方式と第２書き込み方式のいずれかで書き込み動作を行う半導体記憶装置と、
第１データと第１アドレスを受けて外部から書き込み指示を受けたとき、前記第１書き込み方式と前記第２書き込み方式のうち、前記第１アドレスに対応する書き込み方式を示すコマンドを前記半導体記憶装置に出力可能なコントローラと
を備え、
前記半導体記憶装置は、複数のメモリセルトランジスタと、
複数の前記メモリセルトランジスタに接続された複数のワード線と
を備え、
前記第１書き込み方式では、前記第１アドレスに対応する選択ワード線に正電圧が印加され、
前記第２書き込み方式では、前記第１アドレスに対応する選択ワード線に負電圧が印加されることを特徴とするメモリシステム。
【請求項２】
前記半導体記憶装置は、第１読み出し方式と第２読み出し方式のいずれかで読み出し動作を行い、
前記コントローラは、第２アドレスを受けて外部から読み出し指示を受けたとき、前記第１読み出し方式と前記第２読み出し方式のうち、前記第２アドレスに対応する読み出し方式を示すコマンドを前記半導体記憶装置に出力可能である
ことを特徴とする請求項１記載のメモリシステム。
【請求項３】
前記第１読み出し方式では、非選択ワード線に正電圧が印加され、
前記第２読み出し方式では、非選択ワード線に負電圧が印加される
ことを特徴とする請求項２記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
発明の実施形態は、メモリシステムに関する。
【背景技術】
【０００２】
メモリセルトランジスタが三次元に配列されたＮＡＮＤ型フラッシュメモリが知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−２１６４５５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
処理速度を向上出来るメモリシステムを提供する。
【課題を解決するための手段】
【０００５】
実施形態に係るメモリシステムは、半導体記憶装置とコントローラを備える。半導体記憶装置は、第１書き込み方式と第２書き込み方式のいずれかで書き込み動作を行う。コントローラは、第１データと第１アドレスを受けて外部から書き込み指示を受けたとき、第１書き込み方式と第２書き込み方式のうち、第１アドレスに対応する書き込み方式を示すコマンドを半導体記憶装置に出力可能である。半導体記憶装置は、複数のメモリセルトランジスタと、複数のメモリセルトランジスタに接続された複数のワード線とを含む。第１書き込み方式では、第１アドレスに対応する選択ワード線に正電圧が印加される。第２書き込み方式では、第１アドレスに対応する選択ワード線に負電圧が印加される。
【図面の簡単な説明】
【０００６】
【図１】図１は、第１実施形態に係るメモリシステムのブロック図である。
【図２】図２は、第１実施形態に係る半導体記憶装置のブロック図である。
【図３】図３は、第１実施形態に係るメモリセルアレイの回路図である。
【図４】図４は、第１実施形態に係るメモリセルアレイの断面図である。
【図５】図５は、第１実施形態に係るセンスアンプの回路図である。
【図６】図６は、第１実施形態に係るメモリセルトランジスタの閾値分布図である。
【図７】図７は、第１実施形態に係るポジティブモードプログラムを示す閾値分布図である。
【図８】図８は、第１実施形態に係るネガティブモードプログラムを示す閾値分布図である。
【図９】図９は、第１実施形態に係る書き込み状況テーブルである。
【図１０】図１０は、第１実施形態に係るプログラム時の動作の流れを示すフローチャートである。
【図１１】図１１は、第１実施形態に係るプログラム時の動作の流れを示すフローチャートである。
【図１２】図１２は、第１実施形態に係る“Ｅ”レベルのプログラム対象となるネガティブタイプの閾値を示す分布図である。
【図１３】図１３は、第１実施形態に係る“Ｅ”レベルと“ＬＭｐ”レベルの閾値分布図である。
【図１４】図１４は、第１実施形態に係る“Ｅ”レベル、または“ＬＭｐ”レベルからのプログラムを示すポジティブタイプの閾値分布図である。
【図１５】図１５は、第１実施形態に係る“Ｅ”レベルのプログラム対象となるポジティブタイプの閾値を示す分布図である。
【図１６】図１６は、第１実施形態に係る“Ｅ”レベルと“ＬＭｎ”レベルの閾値分布図である。
【図１７】図１７は、第１実施形態に係る“Ｅ”レベル、または“ＬＭｎ”レベルからのプログラムを示すネガティブタイプの閾値分布図である。
【図１８】図１８は、第１実施形態に係るポジティブモードプログラム時の各配線の電位を示すタイミングチャートである。
【図１９】図１９は、第１実施形態に係る導電膜に電荷が供給される様子を示すＮＡＮＤストリングの断面図である。
【図２０】図２０は、第１実施形態に係るプログラムの回数とＶＰＧＭｐの関係を示すグラフである。
【図２１】図２１は、第１実施形態に係るネガティブモードプログラム時の各配線の電位を示すタイミングチャートである。
【図２２】図２２は、第１実施形態に係る導電膜にホールが供給される様子を示すＮＡＮＤストリングの断面図である。
【図２３】図２３は、第１実施形態に係るプログラムの回数とＶＰＧＭｎの関係を示すグラフである。
【図２４】図２４は、第１実施形態に係る読み出し時の動作の流れを示すフローチャートである。
【図２５】図２５は、第１実施形態に係るメモリセルトランジスタＭＴに記憶されているデータを示すテーブルである。
【図２６】図２６は、第１実施形態に係るＮチャネル読み出し時の各配線の電位を示すタイミングチャートである。
【図２７】図２７は、第１実施形態に係るＰチャネル読み出し時の各配線の電位を示すタイミングチャートである。
【図２８】図２８は、第２実施形態に係るプログラム時におけるコントローラの動作を示すフローチャートである。
【図２９】図２９は、第２実施形態に係るプログラム時における各種信号のタイミングチャートである。
【図３０】図３０は、第２実施形態に係る読み出し動作におけるコントローラの動作を示すフローチャートである。
【図３１】図３１は、第２実施形態に係る読み出し時における各種信号のタイミングチャートである。
【図３２】図３２は、第３実施形態に係る第１の条件を用いたプログラムと第２の条件を用いたプログラムを適用した場合の閾値の変動を示すグラフである。
【図３３】図３３は、第３実施形態に係るポジティブタイプにおける第１のベリファイと第２のベリファイの閾値電圧を示す分布図である。
【図３４】図３４は、第３実施形態に係るネガティブタイプにおける第１のベリファイと第２のベリファイの閾値電圧を示す分布図である。
【図３５】図３５は、第３実施形態に係るプログラムのフローチャートである。
【図３６】図３６は、第３実施形態に係るポジティブモードプログラム時の各配線の電位を示すタイミングチャートである。
【図３７】図３７は、第３実施形態に係るネガティブモードプログラム時の各配線の電位を示すタイミングチャートである。
【図３８】図３８は、第４実施形態に係るセンスアンプの回路図である。
【図３９】図３９は、第４実施形態に係るＮチャネル読み出しにおけるノードＳＥＮの電圧とセンス時間の関係を示すグラフである。
【図４０】図４０は、第４実施形態に係るＮチャネル読み出しにおける各配線の電位を示すタイミングチャートである。
【図４１】図４１は、第４実施形態に係るＰチャネル読み出しにおける各配線の電位を示すタイミングチャートである。
【図４２】図４２は、第５実施形態に係るプログラム時の動作の流れを示すフローチャートである。
【図４３】図４３は、第５実施形態に係るプログラム時の動作の流れを示すフローチャートである。
【図４４】図４４は、第５実施形態に係るプログラム時の動作の流れを示すフローチャートである。
【図４５】図４５は、第５実施形態に係る“Ｅ”＿“ＬＭｐ”プログラムの対象を示す閾値分布図である。
【図４６】図４６は、第５実施形態に係る“Ｅ”＿“ＬＭｐ”プログラム時の各配線の電位を示すタイミングチャートである。
【図４７】図４７は、第５実施形態に係る“Ｅ”＿“ＬＭｎ”プログラム時の各配線の電位を示すタイミングチャートである。
【図４８】図４８は、第５実施形態に係るＮチャネル読み出し時の各配線の電位を示すタイミングチャートである。
【図４９】図４９は、第５実施形態に係るＰチャネル読み出し時の各配線の電位を示すタイミングチャートである。
【図５０】図５０は、第６実施形態に係るシフトテーブルの概念図である。
【図５１】図５１は、第６実施形態に係るデータ読み出し時のコントローラの動作を示すフローチャートである。
【図５２】図５２は、第６実施形態に係るポジティブタイプにおけるノーマルリードからリトライリードまでの読み出し電圧値の変化を示すタイミングチャートである。
【図５３】図５３は、第６実施形態に係るネガティブタイプにおけるノーマルリードからリトライリードまでの読み出し電圧値の変化を示すタイミングチャートである。
【図５４】図５４は、第６実施形態に係るポジティブタイプの閾値分布図である。
【図５５】図５５は、第６実施形態に係るネガティブタイプの閾値分布図である。
【図５６】図５６は、第７実施形態に係るプログラム時の動作の流れを示すフローチャートである。
【図５７】図５７は、第７実施形態に係るプログラム時の動作の流れを示すフローチャートである。
【図５８】図５８は、第８実施形態に係るメモリセルアレイ１１１の回路図である。
【図５９】図５９は、第８実施形態に係るメモリユニットＭＵの斜視図である。
【図６０】図６０は、第８実施形態に係るメモリセルアレイの平面図である。
【図６１】図６１は、図６０における５７−５７線に沿った断面図である。
【図６２】図６２は、図６０における５８−５８線に沿った断面図である。
【図６３】図６３は、図６０における５９−５９線に沿った断面図である。
【図６４】図６４は、第８実施形態に係るポジティブモードプログラム時の各配線の電位を示すタイミングチャートである。
【図６５】図６５は、第８実施形態に係るネガティブモードプログラム時の各配線の電位を示すタイミングチャートである。
【図６６】図６６は、第８実施形態に係るＮチャネル読み出し時の各配線の電位を示すタイミングチャートである。
【図６７】図６７は、第８実施形態に係るＰチャネル読み出し時の各配線の電位を示すタイミングチャートである。
【図６８】図６８は、第９実施形態に係る消去動作の流れを示すフローチャートである。
【図６９】図６９は、第９実施形態に係る対象ブロックのメモリセルトランジスタに電荷を注入する場合の各配線の電位を示すタイミングチャートである。
【図７０】図７０は、第９実施形態に係る対象ブロックのメモリセルトランジスタにホールを注入する場合の各配線の電位を示すタイミングチャートである。
【図７１】図７１は、第１変形例に係るメモリセルトランジスタＭＴの閾値分布図である。
【図７２】図７２は、第１変形例に係る“Ｅ”ｐｏｓプログラムを示す閾値分布図である。
【図７３】図７３は、第１変形例に係る“Ｅ”ｎｅｇプログラムを示す閾値分布図である。
【図７４】図７４は、第２変形例に係る“ＬＭｐ”プログラム時のＶＰＧＭｐと、メモリセルトランジスタＭＴの閾値の変動を示す図である。
【図７５】図７５は、第２変形例に係る“ＬＭｎ”プログラム時のＶＰＧＭｎと、メモリセルトランジスタＭＴの閾値の変動を示す図である。
【図７６】図７６は、第３変形例に係るＮチャネル読み出し時の各配線の電位を示すタイミングチャートである。
【図７７】図７７は、第３変形例に係るＰチャネル読み出し時の各配線の電位を示すタイミングチャートである。
【発明を実施するための形態】
【０００７】
以下、実施形態につき図面を参照して説明する。この説明に際し、全図にわたり、共通する部分には共通する参照符号を付す。
【０００８】
１．第１実施形態  
第１実施形態に係るメモリシステムについて説明する。以下では半導体記憶装置として、メモリセルトランジスタが半導体基板上に積層された三次元積層型ＮＡＮＤ型フラッシュメモリを例に挙げて説明する。
【０００９】
１．１  構成について  
１．１．１  メモリシステムの構成について  
まず、本実施形態に係る半導体記憶装置を含むメモリシステムの構成について、図１を用いて説明する。図１は、本実施形態に係るメモリシステムのブロック図である。
【００１０】
図示するようにメモリシステム１は、ＮＡＮＤ型フラッシュメモリ１００及びコントローラ２００を備えている。コントローラ２００とＮＡＮＤ型フラッシュメモリ１００は、例えばそれらの組み合わせにより一つの半導体装置を構成しても良く、その例としてはＳＤＴＭカードのようなメモリカードや、ＳＳＤ（solid state drive）等が挙げられる。
【００１１】
ＮＡＮＤ型フラッシュメモリ１００は、複数のメモリセルトランジスタを備え、データを不揮発に記憶する。ＮＡＮＤ型フラッシュメモリ１００の構成の詳細は後述する。
【００１２】
コントローラ２００は、外部のホスト機器からの命令（アクセス）に応答して、ＮＡＮＤ型フラッシュメモリ１００に対して読み出し、書き込み、消去等を命令する。また、ＮＡＮＤ型フラッシュメモリ１００のメモリ空間を管理する。
【００１３】
コントローラ２００は、ホストインターフェイス回路２１０、内蔵メモリ（ＲＡＭ）２２０、プロセッサ（ＣＰＵ）２３０、バッファメモリ２４０、ＮＡＮＤインターフェイス回路２５０、及びＥＣＣ回路２６０を備えている。
【００１４】
ホストインターフェイス回路２１０は、コントローラバスを介してホスト機器と接続され、ホスト機器との通信を司る。そして、ホスト機器から受信した命令及びデータを、それぞれＣＰＵ２３０及びバッファメモリ２４０に転送する。またＣＰＵ２３０の命令に応答して、バッファメモリ２４０内のデータをホスト機器へ転送する。
【００１５】
ＮＡＮＤインターフェイス回路２５０は、ＮＡＮＤバスを介してＮＡＮＤ型フラッシュメモリ１００と接続され、ＮＡＮＤ型フラッシュメモリ１００との通信を司る。そして、ＣＰＵ２３０から受信した命令をＮＡＮＤ型フラッシュメモリ１００に転送し、また書き込み時にはバッファメモリ２４０内の書き込みデータをＮＡＮＤ型フラッシュメモリ１００へ転送する。更に読み出し時には、ＮＡＮＤ型フラッシュメモリ１００から読み出されたデータをバッファメモリ２４０へ転送する。
【００１６】
ＣＰＵ２３０は、コントローラ２００全体の動作を制御する。例えば、ホスト機器から書き込み命令を受信した際には、それに応答して、ＮＡＮＤインターフェイスに基づく書き込み命令を発行する。読み出し及び消去の際も同様である。またＣＰＵ２３０は、ウェアレベリング等、ＮＡＮＤ型フラッシュメモリ１００を管理するための様々な処理を実行する。更にＣＰＵ２３０は、各種の演算を実行する。例えば、データの暗号化処理やランダマイズ処理等を実行する。
【００１７】
ＥＣＣ回路２６０は、データの誤り訂正（ＥＣＣ：Error Checking and Correcting）処理を実行する。すなわちＥＣＣ回路２６０は、データの書き込み時には書き込みデータに基づいてパリティを生成し、読み出し時にはパリティからシンドロームを生成して誤りを検出し、この誤りを訂正する。なお、ＣＰＵ２３０がＥＣＣ回路２６０の機能を有していても良い。
【００１８】
内蔵メモリ２２０は、例えばＤＲＡＭ等の半導体メモリであり、ＣＰＵ２３０の作業領域として使用される。そして内蔵メモリ２２０は、ＮＡＮＤ型フラッシュメモリ１００を管理するためのファームウェアや、各種の管理テーブル等を保持する。また、例えば、内蔵メモリ２２０は、ＮＡＮＤ型フラッシュメモリ１００の書き込み状況を記憶するテーブル（書き込み状況テーブル）を保持する。書き込み状況テーブルの詳細については、下記の１．１．４の項にて説明する。
【００１９】
１．１．２  半導体記憶装置の構成について  
次にＮＡＮＤ型フラッシュメモリ１００の構成について説明する。
【００２０】
１．１．２．１  半導体記憶装置の全体構成について  
図２は、本実施形態に係るＮＡＮＤ型フラッシュメモリ１００のブロック図である。図示するようにＮＡＮＤ型フラッシュメモリ１００は、大まかにはコア部１１０及び周辺回路１２０を備えている。
【００２１】
コア部１１０は、メモリセルアレイ１１１、ロウデコーダ１１２、センスアンプ１１３、ソース線ドライバ１１４、及びウェルドライバ１１５を備えている。
【００２２】
メモリセルアレイ１１１は、それぞれがワード線及びビット線に関連付けられた複数の不揮発性メモリセルトランジスタＭＴの集合である複数のブロックＢＬＫ（ＢＬＫ０、ＢＬＫ１、ＢＬＫ２、…）を備えている。ブロックＢＬＫはデータの消去単位となり、同一ブロックＢＬＫ内のデータは一括して消去される。ブロックＢＬＫの各々は、メモリセルが直列接続されたＮＡＮＤストリング１１６の集合である複数のストリングユニットＳＵ（ＳＵ０、ＳＵ１、ＳＵ２、…）を備えている。もちろん、メモリセルアレイ１１１内のブロック数や、１ブロックＢＬＫ内のストリングユニットＳＵ数は任意である。メモリセルアレイ１１１の詳細については後述する。
【００２３】
ロウデコーダ１１２は、ブロックアドレスやページアドレスをデコードして、対応するブロックＢＬＫのいずれかのワード線を選択する。そしてロウデコーダ１１２は、選択ワード線及び非選択ワード線に、適切な電圧を印加する。
【００２４】
センスアンプ１１３は、データの読み出し時には、メモリセルトランジスタＭＴからビット線ＢＬに読み出されたデータをセンス・増幅する。またデータの書き込み時には、書き込みデータをメモリセルトランジスタＭＴに転送する。メモリセルアレイ１１１へのデータの読み出し及び書き込みは、複数のメモリセルトランジスタＭＴ単位で行われ、この単位がページとなる。
【００２５】
ソース線ドライバ１１４は、ソース線に電圧を印加する。
【００２６】
ウェルドライバ１１５は、ＮＡＮＤストリング１１６が形成されるウェル領域に電圧を印加する。
【００２７】
周辺回路１２０は、シーケンサ１２１、チャージポンプ１２２、レジスタ１２３、及びドライバ１２４を備える。
【００２８】
シーケンサ１２１は、ＮＡＮＤ型フラッシュメモリ１００全体の動作を制御する。
【００２９】
チャージポンプ１２２は、外部から与えられる電源電圧を昇圧して、必要な電圧をドライバ１２４に供給する。
【００３０】
ドライバ１２４は、データの書き込み、読み出し、及び消去に必要な電圧を、ロウデコーダ１１２、センスアンプ１１３、ソース線ドライバ１１４、及びウェルドライバ１１５に供給する。
【００３１】
レジスタ１２３は、種々の信号を保持する。例えば、データの書き込みや消去動作のステータスを保持し、これによってコントローラに動作が正常に完了したか否かを通知する。または、レジスタ１２３は、種々のテーブルを保持することも可能である。
【００３２】
１．１．２．２  メモリセルアレイの構成について  
次に、上記メモリセルアレイ１１１の構成の詳細について説明する。図３は、ブロックＢＬＫ０の回路図である。他のブロックＢＬＫも同様の構成を有している。
【００３３】
図示するように、ブロックＢＬＫ０は例えば４つのストリングユニットＳＵ（ＳＵ０〜ＳＵ３）を含む。また各々のストリングユニットＳＵは、複数のＮＡＮＤストリング１１６を含む。
【００３４】
ＮＡＮＤストリング１１６の各々は、例えば８個のメモリセルトランジスタＭＴ（ＭＴ０〜ＭＴ７）と、選択トランジスタＳＴ１、ＳＴ２とを含んでいる。メモリセルトランジスタＭＴは、制御ゲートと電荷蓄積層とを含む積層ゲートを備え、データを不揮発に保持する。なお、メモリセルトランジスタＭＴの個数は８個に限られず、１６個や３２個、６４個、１２８個等であってもよく、その数は限定されるものではない。メモリセルトランジスタＭＴ０〜ＭＴ７は、その電流経路が直列接続される。この直列接続の一端側のメモリセルトランジスタＭＴ７の電流経路は選択トランジスタＳＴ１の電流経路の一端に接続され、他端側のメモリセルトランジスタＭＴ０の電流経路は選択トランジスタＳＴ２の電流経路の一端に接続されている。
【００３５】
ストリングユニットＳＵ０〜ＳＵ３の各々の選択トランジスタＳＴ１のゲートは、それぞれセレクトゲート線ＳＧＤ０〜ＳＧＤ３に共通接続される。他方で、選択トランジスタＳＴ２のゲートは、複数のストリングユニット間で同一のセレクトゲート線ＳＧＳに共通接続される。また、同一のブロックＢＬＫ０内にあるメモリセルトランジスタＭＴ０〜ＭＴ７の制御ゲートはそれぞれワード線ＷＬ０〜ＷＬ７に共通接続される。
【００３６】
すなわち、ワード線ＷＬ０〜ＷＬ７及びセレクトゲート線ＳＧＳは同一ブロックＢＬＫ内の複数のストリングユニットＳＵ０〜ＳＵ３間で共通に接続されているのに対し、セレクトゲート線ＳＧＤは、同一ブロックＢＬＫ内であってもストリングユニットＳＵ０〜ＳＵ３毎に独立している。
【００３７】
また、メモリセルアレイ１１１内でマトリクス状に配置されたＮＡＮＤストリング１１６のうち、同一行にあるＮＡＮＤストリング１１６の選択トランジスタＳＴ１の電流経路の他端は、いずれかのビット線ＢＬ（ＢＬ０〜ＢＬ（Ｋ−１）、（Ｋ−１）は１以上の自然数）に共通接続される。すなわちビット線ＢＬは、複数のブロックＢＬＫ間でＮＡＮＤストリング１１６を共通に接続する。また、選択トランジスタＳＴ２の電流経路の他端はソース線ＳＬに共通に接続されている。ソース線ＳＬは、例えば複数のブロック間でＮＡＮＤストリング１１６を共通に接続する。
【００３８】
図４は、本実施形態に係るメモリセルアレイ１１１の一部領域の断面図である。図示するように、Ｐ型ウェル領域２０上に複数のＮＡＮＤストリング１１６が形成されている。すなわち、ウェル領域２０上には、セレクトゲート線ＳＧＳとして機能する複数の配線層２５、ワード線ＷＬとして機能する複数の配線層２３、及びセレクトゲート線ＳＧＤとして機能する複数の配線層２４が形成されている。
【００３９】
そして、これらの配線層２３〜２５を貫通してＰ型ウェル領域２０に達するメモリホール２６が形成されている。メモリホール２６の側面には、ブロック絶縁膜２７、電荷蓄積層２８（絶縁膜）、及びトンネル絶縁膜２９が順次形成され、更にメモリホール２６内を導電膜３０が埋め込んでいる。導電膜３０は、ＮＡＮＤストリング１１６の電流経路として機能し、メモリセルトランジスタＭＴ並びに選択トランジスタＳＴ１及びＳＴ２の動作時にチャネルが形成される領域である。
【００４０】
各ＮＡＮＤストリング１１６において、複数（本例では４層）設けられた配線層２５は、電気的に共通に接続されて、同一のセレクトゲート線ＳＧＳに接続される。すなわち、この４層の配線層２５は、実質的に１つの選択トランジスタＳＴ２のゲート電極として機能する。配線層２４についても同様であり、４層の配線層２４が同一のセレクトゲート線ＳＧＤに接続され、実質的に１つの選択トランジスタＳＴ１のゲート電極として機能する。なお、配線層２４及び配線層２５の層数は１層以上設けられていればよく、その数は限定されるものではない。
【００４１】
以上の構成により、各ＮＡＮＤストリング１１６において、Ｐ型ウェル領域２０上に選択トランジスタＳＴ２、複数のメモリセルトランジスタＭＴ、及び選択トランジスタＳＴ１が順次積層されている。
【００４２】
なお、図４の例では選択トランジスタＳＴ１及びＳＴ２は、メモリセルトランジスタＭＴと同様に電荷蓄積層２８を備えている。しかし選択トランジスタＳＴ１及びＳＴ２は、実質的にデータを保持するメモリセルとして機能するものでは無く、スイッチとして機能する。この際、選択トランジスタＳＴ１及びＳＴ２がオン／オフする閾値は、電荷蓄積層２８に電荷を注入することによって制御されても良い。
【００４３】
配線層２４の上方の導電膜３０の領域には、Ｐ＋型不純物拡散層３１が形成される。そして、拡散層３１は、ビット線ＢＬとして機能する配線層３２に接続される。
【００４４】
ビット線ＢＬは、センスアンプ１１３に接続される。
【００４５】
更に、Ｐ型ウェル領域２０の表面内には、Ｎ＋型不純物拡散層３３及びＰ＋型不純物拡散層３４が形成されている。拡散層３３上にはコンタクトプラグ３５が形成され、コンタクトプラグ３５上には、ソース線ＳＬとして機能する配線層３６が形成される。ソース線ＳＬは、ソース線ドライバ１１４に接続される。また拡散層３４上にはコンタクトプラグ３７が形成され、コンタクトプラグ３７上には、ウェル配線ＣＰＷＥＬＬとして機能する配線層３８が形成される。ウェル配線ＣＰＷＥＬＬは、ウェルドライバ１１５に接続される。配線層３６及び３８は、セレクトゲート線ＳＧＤよりも上層であり、且つ配線層３２よりも下層のレイヤに形成される。
【００４６】
以上の構成が、図４を記載した紙面の奥行き方向に複数配列されており、奥行き方向に並ぶ複数のＮＡＮＤストリング１１６の集合によってストリングユニットＳＵが形成される。また、同一のストリングユニットＳＵ内に含まれる複数のセレクトゲート線ＳＧＳとして機能する配線層２５は、互いに共通に接続されている。つまり、隣接するＮＡＮＤストリング１１６間のＰ型ウェル領域２０上にもトンネル絶縁膜２９が形成され、拡散層３３に隣接する配線層２５及びトンネル絶縁膜２９は、拡散層３３近傍まで形成される。
【００４７】
従って、拡散層３３から導電膜３０に電荷が供給されると、メモリセルトランジスタＭＴ、及び選択トランジスタＳＴ１、ＳＴ２にはＮチャネルが形成され、これらはＮチャネルトランジスタとして動作する。また、拡散層３１から導電膜３０にホールが供給されると、メモリセルトランジスタＭＴ、及び選択トランジスタＳＴ１、ＳＴ２にはＰチャネルが形成され、これらはＰチャネルトランジスタとして動作する。このように本実施形態に係る構造は、メモリセルトランジスタＭＴ、及び選択トランジスタＳＴ１、ＳＴ２が２つのチャネルを形成可能な構造（これを以下、デュアルチャネル構造と呼ぶ）を有している。
【００４８】
なおメモリセルアレイ１１１の構成については、例えば、“三次元積層不揮発性半導体メモリ”という２００９年３月１９日に出願された米国特許出願１２／４０７，４０３号に記載されている。また、“三次元積層不揮発性半導体メモリ”という２００９年３月１８日に出願された米国特許出願１２／４０６，５２４号、“不揮発性半導体記憶装置及びその製造方法”という２０１０年３月２５日に出願された米国特許出願１２／６７９，９９１号、“半導体メモリ及びその製造方法”という２００９年３月２３日に出願された米国特許出願１２／５３２，０３０号に記載されている。これらの特許出願は、その全体が本願明細書において参照により援用されている。
【００４９】
１．１．２．３  センスアンプについて
次に、センスアンプ１１３の構成について説明する。本実施形態では、ビット線ＢＬの電圧変動をセンスする電圧センス方式のセンスアンプ１１３を例に説明する。電圧センス方式では、隣接するビット線をシールドしてセンス動作が行われる。すなわち、電圧センス方式では、偶数ビット線ＢＬｅ毎、及び奇数ビット線ＢＬｏ毎にデータを読み出す。従って、いずれかのブロックＢＬＫのいずれかのストリングユニットＳＵにおける、いずれかのワード線ＷＬに共通に接続された複数のメモリセルトランジスタＭＴのうち、偶数ビット線ＢＬｅ、または奇数ビット線ＢＬｏに接続されたメモリセルトランジスタＭＴの集まりが「ページ」と呼ばれる単位となる。そして、偶数ビット線ＢＬｅからデータを読み出す際には奇数ビット線ＢＬｏを一定電位に固定し（シールドする）、奇数ビット線ＢＬｏからデータを読み出す際には偶数ビット線ＢＬｅを一定電位に固定する。
【００５０】
図５は、２本のビット線に対応するセンスアンプユニットの回路図である。センスアンプ１１３は、２本のビット線ＢＬ毎に設けられた図５に示すセンスアンプユニットの集合体である。図示するように、１つのセンスアンプユニットが、偶数ビット線ＢＬｅ、と奇数ビット線ＢＬｏによって共有されている。
【００５１】
センスアンプユニットの各々は、プライマリ・データ・キャッシュ（Primary Data Cache： PDC）４３０、セカンダリ・データ・キャッシュ（Secondary Data Cache: SDC）４３１、３つのダイナミック・データ・キャッシュ（Dynamic Data Cache: DDC）４３３（４３３−１〜４３３−３）、及びテンポラリ・データ・キャッシュ（Temporary Data Cache: TDC）４３４を有している。なお、ダイナミック・データ・キャッシュ４３３及びテンポラリ・データ・キャッシュ４３４は、必要に応じて設けるようにすればよい。また、ダイナミック・データ・キャッシュ４３３は、書き込み時において、ビット線ＢＬに書き込むためのデータを保持するキャッシュとしても用いることができる。
【００５２】
プライマリ・データ・キャッシュ４３０は、クロックド・インバータＣＬＩ１及びＣＬＩ２並びにＮチャネルＭＯＳトランジスタＮＭＯＳ５を有している。セカンダリ・データ・キャッシュ４３１は、クロックド・インバータＣＬＩ３及びＣＬＩ４並びにＮチャネルＭＯＳトランジスタＮＭＯＳ６及びＮＭＯＳ７を有している。ダイナミック・データ・キャッシュ４３３は、ＮチャネルＭＯＳトランジスタＮＭＯＳ４及びＮＭＯＳ９を有している。また、テンポラリ・データ・キャッシュ４３４は、容量Ｃを有している。
【００５３】
ＮチャネルＭＯＳトランジスタＨＮ２ｅ及びＨＮ２ｏは、電流経路の一端が、対応する偶数ビット線ＢＬｅ及び奇数ビット線ＢＬｏにそれぞれ接続される。トランジスタＨＮ２ｅ及びＨＮ２ｏは、ゲートに、それぞれ信号線ＢＬＳｅ及びＢＬＳｏが入力され、電流経路の他端が、配線ＳＡＢＬを介してＮチャネルＭＯＳトランジスタＮＭＯＳ１０に共通に接続される。
【００５４】
また偶数ビット線ＢＬｅ及び奇数ビット線ＢＬｏには、ＮチャネルＭＯＳトランジスタＨＮ１ｅ及びＨＮ１ｏのソースが接続される。トランジスタＨＮ１ｅ及びＨＮ１ｏは、それぞれゲートに信号線ＢＩＡＳｅ及びＢＩＡＳｏが入力され、ドレインに信号線ＢＬＣＲＬが入力される。
【００５５】
トランジスタＮＭＯＳ１０は、ゲートに信号線ＢＬＣＬＡＭＰが接続され、電流経路の一端が、トランジスタＮＭＯＳ１１〜ＮＭＯＳ１３及びＮＭＯＳ１９の電流経路の一端と、トランジスタＮＭＯＳ１８のゲートと、テンポラリ・データ・キャッシュ４３４とに接続されている。
【００５６】
トランジスタＮＭＯＳ１１は、ゲートに信号線ＢＬＰＲＥが入力され、電流経路の他端が電源に接続され、電圧ＶＰＲＥを供給されている。ＶＰＲＥは、例えば、データの読み出しの際、ビット線ＢＬをプリチャージするためにセンスアンプ１１３に供給される電圧である。
【００５７】
トランジスタＮＭＯＳ１２は、ゲートに信号線ＲＥＧが入力され、電流経路の他端がダイナミック・データ・キャッシュ４３３に接続されている。
【００５８】
トランジスタＮＭＯＳ１３は、ゲートに信号線ＢＬＣ１が入力され、電流経路の他端がプライマリ・データ・キャッシュ４３０、ダイナミック・データ・キャッシュ４３３、及びＰチャネルＭＯＳトランジスタの電流経路の一端に接続されている。
【００５９】
トランジスタＮＭＯＳ１９は、ゲートに信号線ＢＬＣ２が入力され、電流経路の他端がセカンダリ・データ・キャッシュ４３１に接続されている。
【００６０】
なお、図５の例ではデータ・キャッシュにおいてデータの入出力を制御するトランジスタとしてンＮチャネルＭＯＳトランジスタを用いているが、ＰチャネルＭＯＳトランジスタを用いても良い。
【００６１】
また、プライマリ・データ・キャッシュ４３０、セカンダリ・データ・キャッシュ４３１、ダイナミック・データ・キャッシュ４３３及びテンポラリ・データ・キャッシュ４３４の回路構成は、図５に示すものに限定されるわけではなく、他の回路構成を採用することもできる。
【００６２】
１．１．３  メモリセルトランジスタの閾値分布について
次にメモリセルトランジスタＭＴの取りうる閾値分布について、例えば２ビットのデータを保持可能する場合について説明する。図６は、本実施形態に係るメモリセルトランジスタＭＴの取りうる閾値分布を示す。
【００６３】
本実施形態に係るメモリセルトランジスタＭＴの閾値電圧は、データが書き込まれた際に正の値となるポジティブタイプと、負の値となるネガティブタイプとを有する。そして、各タイプにおいて、２ビットデータ、すなわち“１１”、“０１”、“１０”、及び“００”データを保持可能である。
【００６４】
図示するように、“１１”データはデータの消去状態に対応し、その閾値電圧は、ポジティブタイプとネガティブタイプとで共通した“Ｅ”レベルである。“Ｅ”レベルは、正または負の値を有し、負電圧ＡＶＨｎより高く、正電圧ＡＶＨｐよりも低い値である。
【００６５】
ポジティブタイプにおける“０１”、“１０”、及び“００”データは、電荷蓄積層２８に電荷が注入されて、データが書き込まれた状態に相当する。そして、各データを保持する際のメモリセルトランジスタＭＴの閾値電圧は、それぞれ“Ａｐ”、“Ｂｐ”、及び“Ｃｐ”レベルである。そしてこれらの閾値電圧には、“Ｅ”レベル＜“Ａｐ”レベル＜“Ｂｐ”レベル＜“Ｃｐ”レベルの関係があり、“Ａｐ”、“Ｂｐ”、及び“Ｃｐ”レベルは正の値を有する。例えば“Ａｐ”レベルは、正電圧ＡＶＨｐより高く、正電圧ＢＶＨｐより低い電圧であり、“Ｂｐ”レベルは、正電圧ＢＶＨｐより高く、正電圧ＣＶＨｐより低い電圧であり、“Ｃｐ”レベルは、正電圧ＣＶＨｐより高い電圧である。
【００６６】
ネガティブタイプは、ポジティブタイプと逆の電圧関係を有する。すなわち、ネガティブタイプにおける“０１”、“１０”、及び“００”データは、電荷蓄積層２８にホールが注入されて、データが書き込まれた状態に相当する。そして、各データを保持する際のメモリセルトランジスタＭＴの閾値電圧は、それぞれ“Ａｎ”、“Ｂｎ”、及び“Ｃｎ”レベルである。そして閾値電圧には、“Ｅ”レベル＞“Ａｎ”レベル＞“Ｂｎ”レベル＞“Ｃｎ”レベルの関係があり、“Ａｎ”、“Ｂｎ”、及び“Ｃｎ”レベルは負の値を有する。例えば“Ａｎ”レベルは、負電圧ＡＶＨｎより低く、負電圧ＢＶＨｎより高い電圧であり、“Ｂｎ”レベルは、負電圧ＢＶＨｎより低く、負電圧ＣＶＨｎより高い電圧であり、“Ｃｎ”レベルは、負電圧ＣＶＨｎより低い電圧である。
【００６７】
なお、各データと閾値レベルとの関係は上記に限定されるものでは無く、適宜変更可能である。
【００６８】
次に書き込み動作による閾値の変動について説明する。本実施形態に係るＮＡＮＤ型フラッシュメモリ１００では、データの書き込み対象となるページの閾値がポジティブタイプであるかネガティブタイプであるかによって、書き込み方が異なる。この点につき、図７及び図８を用いて説明する。図７及び図８は、書き込み対象ページがそれぞれネガティブタイプ及びポジティブタイプの閾値を有していた場合における、データの書き込みに伴うメモリセルトランジスタＭＴの閾値電圧の変化を示すグラフである。
【００６９】
なお、以下の説明では、書き込み動作において電荷蓄積層２８に電荷またはホールを注入してメモリセルトランジスタＭＴの閾値を変動させる動作を「プログラム」と呼び、プログラムの結果としてメモリセルトランジスタＭＴの閾値がターゲットとなる閾値に達したか否かを判定する動作をベリファイと呼ぶ。そして、このプログラムとベリファイとの繰り返しによって、データがメモリセルトランジスタＭＴに書き込まれる。
【００７０】
まず図７を用いて、書き込み対象ページがネガティブタイプの閾値を有していた場合について説明する。図示するようにこの場合、書き込み後の閾値が正の値、すなわちポジティブタイプとなるように、プログラムが行われる。このようなプログラムを、「ポジティブモードプログラム」と呼ぶ。より具体的には、“Ｃｎ”レベル、“Ｂｎ”レベル、“Ａｎ”レベル、及び“Ｅ”レベルの閾値を有するメモリセルトランジスタＭＴは、その閾値が“Ｅ”レベル、“Ａｐ”レベル、“Ｂｐ”レベル、及び“Ｃｐ”レベルのいずれかを有するように、プログラムされる。
【００７１】
次に図８を用いて、書き込み対象ページがポジティブタイプの閾値を有していた場合について説明する。図示するようにこの場合、書き込み後の閾値が負の値、すなわちネガティブタイプとなるように、プログラムが行われる。このようなプログラムを、「ネガティブモードプログラム」と呼ぶ。より具体的には、“Ｃｐ”レベル、“Ｂｐ”レベル、“Ａｐ”レベル、及び“Ｅ”レベルの閾値を有するメモリセルトランジスタＭＴは、その閾値が“Ｅ”レベル、“Ａｎ”レベル、“Ｂｎ”レベル、及び“Ｃｎ”レベルのいずれかを有するように、プログラムされる。
【００７２】
以上のように、本実施形態では書き込み対象ページの閾値のタイプに応じて、ポジティブモードプログラムとネガティブモードプログラムとを使い分けて、データが書き込まれる（これを、デュアルモードプログラムと呼ぶ）。これによりメモリセルトランジスタＭＴは、ポジティブタイプとネガティブタイプの２つの閾値タイプによりデータを記憶することが出来る。
【００７３】
１．１．４  メモリセルトランジスタの書き込み状況テーブルについて
次に、前述した書き込み状況テーブルについて説明する。図９は、書き込み状況テーブルの概念図である。
【００７４】
図示するように、書き込み状況テーブルは、それぞれのページの閾値分布のタイプ（ポジティブタイプかネガティブタイプか）、データの有効性、及びデータの書き込み動作の累積回数を示す情報を保持する。
【００７５】
図９の例であると、例えばブロックＢＬＫ０のストリングユニットＳＵ０のワード線ＷＬ０において、偶数ビット線ＢＬｅに対応するページの保持するデータの閾値はネガティブタイプであり、そのデータは有効な状態にある。そして、当該ページに対する書き込み動作の累積回数は、７回である。また、例えばワード線ＷＬ０において奇数ビット線ＢＬｏに対応するページの保持するデータの閾値はポジティブタイプあり、そのデータは無効な状態にある。そして、当該ページに対する書き込み動作の累積回数は、１６回である。
【００７６】
コントローラ２００のＣＰＵ２３０は、ＮＡＮＤ型フラッシュメモリ１００にデータを書き込む度、またはブロック間でのデータコピーを行う度に、書き込み状況テーブルを更新する。そして、コントローラ２００のＣＰＵ２３０は、書き込み状況テーブルを用いて、各ページの書き込みの状態を管理する。
【００７７】
１．２  データの書き込み動作について  
本実施形態に係るデータの書き込み動作について説明する。
【００７８】
１．２．１  書き込み動作の全体的な流れについて
まずＮＡＮＤ型フラッシュメモリ１００におけるデータの書き込み動作の全体的な流れについて説明する。図１０及び図１１は、書き込み動作時におけるＮＡＮＤ型フラッシュメモリ１００の動作の流れを示すフローチャートである。
【００７９】
図示するように、例えばシーケンサ１２１は、コントローラ２００から書き込み命令、書き込み選択ページアドレス、及び書き込みデータを受信する。この際、コントローラ２００は、これらの情報に加えて、書き込み選択ページに現在の閾値分布のタイプに関する情報（以下、「タイプ情報」と呼ぶ）がある場合は、これも合わせて送信する。なお、書き込み選択ページにタイプ情報がない場合とは、例えば出荷状態、または消去後の場合等である。
【００８０】
するとシーケンサ１２１は、まずタイプ情報を受信したか確認をする（ステップＳ１００）。タイプ情報を受信していない場合（ステップＳ１００、Ｎｏ）、シーケンサ１２１は、予め優先的に実行するように設定されているプログラムモードを選択する（ステップＳ１０１）。
【００８１】
タイプ情報を受信している場合（ステップＳ１００、Ｙｅｓ）、シーケンサ１２１は、この情報に基づいて、選択ページの閾値がネガティブタイプであるかポジティブタイプであるかを確認する（ステップＳ１０２）。
【００８２】
選択ページがネガティブタイプの場合（ステップＳ１０３、Ｙｅｓ）、またステップＳ１０１において、ポジティブモードプログラムが選択された場合（ステップＳ１０１、Ｙｅｓ）、シーケンサ１２１は、ポジティブモードプログラムを選択する（ステップＳ１０４）。そして、シーケンサ１２１は、メモリセルトランジスタＭＴの閾値の状態を確認するためにネガティブ・プリベリファイを実行する（ステップＳ１０５）。
【００８３】
ネガティブ・プリベリファイとは、選択ページにおいて、“Ｅ”レベルに対応するある負電圧Ｖｎｅｇよりも低い閾値レベルのデータが含まれるか否かを判定する処理である。そして、当該選択ページに負電圧Ｖｎｅｇよりも低い閾値レベルのデータが含まれていなければ、当該選択ページはネガティブ・プリベリファイにパスする。他方で、例えば“Ａｎ”、“Ｂｎ”、及び“Ｃｎ”レベルのデータ、並びに“Ｅ”レベルであって且つＶｎｅｇより低いレベルのデータが含まれていれば、当該選択ページはネガティブ・プリベリファイにフェイルする。
【００８４】
引き続きシーケンサ１２１は、ステップＳ１０５におけるネガティブ・プリベリファイの結果に基づいて、“Ｅ”レベルのポジティブモードプログラム（以下、「“Ｅ”ｐｏｓプログラム」と呼ぶ）が必要か判断をする（ステップＳ１０６）。具体的には、ネガティブ・プリベリファイをパスした場合、シーケンサ１２１は、“Ｅ”ｐｏｓプログラムが不要と判断し（ステップＳ１０６、Ｎｏ）、“Ｅ”ｐｏｓプログラムをスキップする。これに対し、ネガティブ・プリベリファイをフェイルした場合、シーケンサ１２１は、“Ｅ”ｐｏｓプログラムが必要と判断し（ステップＳ１０６、Ｙｅｓ）、“Ｅ”ｐｏｓプログラムを実行する（ステップＳ１０７）。
【００８５】
“Ｅ”ｐｏｓプログラムは、閾値電圧がＶｎｅｇより低いメモリセルトランジスタＭＴに対してプログラムを実行することで、閾値を、“Ｅ”レベルであって且つＶｎｅｇ以上の値になるよう上昇させる動作である。またシーケンサ１２１は、ステップＳ１０７の後、ベリファイを実行する（ステップＳ１０８）。ベリファイとは、プログラム、または消去の際、プログラムまたは消去直後のメモリセルトランジスタＭＴの閾値と、ベリファイレベルとを比較し、目標とする閾値を有しているか否かを判定する処理である。ベリファイレベルとは、目標となる閾値レベルに対応した電圧であり、“Ｅ”ｐｏｓプログラムで使用されるベリファイレベルは、Ｖｎｅｇである。シーケンサ１２１は、ステップＳ１０８のベリファイにパスするか、予め設定された上限回数に達するまで、ステップＳ１０７及びＳ１０８の処理を繰り返す（以下、プログラムとベリファイを含む一連の処理を「プログラムループ」と呼ぶ）。
【００８６】
引き続きシーケンサ１２１は、コントローラ２００から受信した書き込みデータに基づいて、“ＬＭｐ”レベルのプログラム（以下、「“ＬＭｐ”プログラム」と呼ぶ）を実行する。
【００８７】
“ＬＭｐ”プログラムとは、閾値レベルを“ＬＭｐ”レベルに上昇させるためのプログラム動作である。“ＬＭｐ”レベルは、例えば“Ａｐ”レベルと“Ｂｐ”レベルの中間レベルの閾値であり、正電圧ＶＬＭｐ〜ＣＶＨｐの範囲内である。また“ＬＭｐ”プログラムでは、“Ｂｐ”及び“Ｃｐ”レベルへプログラムされるべきメモリセルトランジスタＭＴが対象となる。従って、対象となるメモリセルトランジスタＭＴがない場合、シーケンサ１２１は、“ＬＭｐ”プログラムが不要と判断し（ステップＳ１１０、Ｎｏ）、“ＬＭｐ”プログラムをスキップする。これに対し、対象となるメモリセルトランジスタＭＴがある場合、シーケンサ１２１は、“ＬＭｐ”プログラムが必要と判断し（ステップＳ１１０、Ｙｅｓ）、“ＬＭｐ”プログラムを実行する（ステップＳ１１１）。なお“ＬＭｐ”レベルは、例えば“Ａｐ”レベルと“Ｂｐ”レベルの中間レベルの閾値である。またシーケンサ１２１は、ステップＳ１１１の後、ベリファイを実行する（ステップＳ１１２）。この際のベリファイレベルは、ＶＬＭｐである。そしてシーケンサ１２１は、ステップＳ１１２のベリファイにパスするか、所定の回数に達するまで、ステップＳ１１１及びＳ１１２の処理を繰り返す。
【００８８】
次にシーケンサ１２１は、コントローラ２００から受信した書き込みデータに基づいて、“Ａｐ”、“Ｂｐ”、及び“Ｃｐ”レベルのプログラム（以下、「“Ａｐ”〜“Ｃｐ”プログラム」と呼ぶ）を実行する（ステップＳ１１４）。
【００８９】
“Ａｐ”〜“Ｃｐ”プログラムとは、選択ページにおける各メモリセルトランジスタＭＴの閾値を、書き込みデータに基づく所定の値まで上昇させるための動作である。この結果、コントローラ２００から受信したデータが選択ページに書き込まれる。
【００９０】
より具体的には、“０１”データを書き込むべきメモリセルトランジスタＭＴの閾値は、“Ｅ”レベルから“Ａｐ”レベルに上昇される。“１０”及び“００”データを書き込むべきメモリセルトランジスタＭＴの閾値は、“ＬＭｐ”レベルからそれぞれ“Ｂｐ”及び“Ｃｐ”レベルに上昇される。
【００９１】
ステップＳ１０１において、ネガティブモードプログラムを優先的に実行するように設定されている場合（ステップＳ１０１、Ｎｏ）、またはステップＳ１０３において、選択ページがポジティブタイプの場合（ステップＳ１０３、Ｎｏ）、シーケンサ１２１は、ネガティブモードプログラムを選択する（ステップＳ１１７）。そして、シーケンサ１２１は、メモリセルトランジスタＭＴの閾値の状態を確認するためにポジティブ・プリベリファイを実行する（ステップＳ１１８）。
【００９２】
ポジティブ・プリベリファイは、ステップＳ１０５で説明したネガティブ・プリベリファイとは逆に、選択ページにおいて、“Ｅ”レベルに対応するある正電圧Ｖｐｏｓよりも高い閾値レベルのデータが含まれるか否かを判定する処理である。含まれていなければ、当該選択ページはネガティブ・プリベリファイにパスし、含まれていればフェイルする。
【００９３】
引き続きシーケンサ１２１は、ステップＳ１１８におけるポジティブ・プリベリファイの結果に基づいて、“Ｅ”レベルのネガティブモードプログラム（以下、「“Ｅ”ｎｅｇプログラム」と呼ぶ）を実行する（ステップＳ１２０）。“Ｅ”ｎｅｇプログラムは、ステップＳ１０５で説明した“Ｅ”ｐｏｓプログラムとは逆の動作である。すなわち、閾値電圧がＶｐｏｓより高いメモリセルトランジスタＭＴに対してプログラムを実行することで、閾値を、“Ｅ”レベルであって且つＶｐｏｓ以下の値になるよう低下させる動作である。
【００９４】
引き続きシーケンサ１２１は、コントローラ２００から受信した書き込みデータに基づいて、“ＬＭｎ”レベルのプログラム（以下、「“ＬＭｎ”プログラム」と呼ぶ）を実行する（ステップＳ１２４）。
【００９５】
“ＬＭｎ”プログラムも、ステップＳ１１０で説明した“ＬＭｐ”プログラムと同様である。すなわち、“Ｂｎ”及び“Ｃｎ”レベルへプログラムされるべきメモリセルトランジスタＭＴの閾値を“ＬＭｎ”レベルに設定するプログラム動作である。“ＬＭｎ”レベルは、例えば“Ａｎ”レベルと“Ｂｎ”レベルの中間レベルの閾値であり、ＣＶＨｎ〜負電圧ＶＬＭｎの範囲内である。またベリファイを行う際のベリファイレベルは、ＶＬＭｎである。
【００９６】
次にシーケンサ１２１は、コントローラ２００から受信した書き込みデータに基づいて、“Ａｎ”、“Ｂｎ”、及び“Ｃｎ”レベルのプログラム（以下、「“Ａｎ”〜“Ｃｎ”プログラム」と呼ぶ）を実行する（ステップＳ１２７）。
【００９７】
本ステップもステップＳ１１４と同様であり、選択ページにおける各メモリセルトランジスタＭＴの閾値を、書き込みデータに基づく所定の値まで上昇させるための動作である。この結果、コントローラ２００から受信したデータが選択ページに書き込まれる。
【００９８】
１．２．２  書き込み動作の具体例について
次に、上記説明したネガティブ・プリベリファイ、“Ｅ”ｐｏｓプログラム、“ＬＭｐ”プログラム、“Ａｐ”〜“Ｃｐ”プログラム、ポジティブ・プリベリファイ、“Ｅ”ｎｅｇプログラム、“ＬＭｎ”プログラム、及び“Ａｎ”〜“Ｃｎ”プログラムについて、具体的な例を挙げ、また図１２乃至図１７を用いて説明する。図１２乃至図１７は、各動作における選択ページの閾値分布の変化を示すグラフである。
【００９９】
まず、ネガティブ・プリベリファイの例を図１２に示す。図示するようにシーケンサ１２１は、選択ページからデータを読み出し、メモリセルトランジスタＭＴ毎に、その閾値がＶｎｅｇ以下であるか否かを判定する。図１２において、斜線を付した分布の閾値を有するメモリセルトランジスタＭＴが選択ページに含まれていれば、当該ページはネガティブ・プリベリファイにフェイルする。
【０１００】
なお本例では、ＶｎｅｇはＡＶＨｎよりも高い電圧とされている。これは、“Ｅ”レベルの分布幅の拡がりを抑制するためであり、例えばＶｎｅｇ＝ＡＶＨｎであっても良い。
【０１０１】
次に“Ｅ”ｐｏｓプログラムにつき、同じく図１２を用いて説明する。図示するように、Ｖｎｅｇ未満の閾値を有するメモリセルトランジスタＭＴに対して、ポジティブモードプログラムが実行される。その結果、選択ページにおける全メモリセルトランジスタＭＴの閾値は、Ｖｎｅｇ〜ＡＶＨｐの範囲内の値に設定される。
【０１０２】
次に“ＬＭｐ”プログラムにつき図１３を用いて説明する。図示するように、“Ｂｐ”及び“Ｃｐ”レベルへプログラムされるべきメモリセルトランジスタＭＴに対して、ポジティブモードプログラムが実行される。その結果、プログラムされたメモリセルトランジスタＭＴの閾値は、ＶＬＭｐ〜ＣＶＨｐの範囲内の値に設定される。
【０１０３】
次に“Ａｐ”〜“Ｃｐ”プログラムにつき図１４を用いて説明する。図示するように、“Ｅ”レベルのメモリセルトランジスタＭＴの一部に対して、“Ａｐ”レベルへのポジティブモードプログラムが実行される。そして“ＬＭｐ”レベルのメモリセルトランジスタＭＴに対して、“Ｂｐ”レベルまたは“Ｃｐ”レベルへのポジティブモードプログラムが実行される。
【０１０４】
次にポジティブ・プリベリファイにつき図１５を用いて説明する。図示するように、閾値がＶｐｏｓ以上となる斜線を付した分布のメモリセルトランジスタＭＴが選択ページに含まれていれば、当該ページはポジティブ・プリベリファイにフェイルする。なおＶｐｏｓ＝ＡＶＨｐであっても良い。
【０１０５】
次に“Ｅ”ｎｅｇプログラムにつき、同じく図１５を用いて説明する。図示するように、Ｖｐｏｓ以上の閾値を有するメモリセルトランジスタＭＴに対して、ネガティブモードプログラムが実行される。その結果、選択ページにおける全メモリセルトランジスタＭＴの閾値は、ＡＶＨｎ〜Ｖｐｏｓの範囲内の値に設定される。
【０１０６】
次に“ＬＭｐ”プログラムにつき図１６を用いて説明する。図示するように、“Ｂｎ”及び“Ｃｎ”レベルへプログラムされるべきメモリセルトランジスタＭＴに対して、ネガティブモードプログラムが実行される。その結果、プログラムされたメモリセルトランジスタＭＴの閾値は、ＣＶＨｎ〜ＶＬＭｎの範囲内の値に設定される。
【０１０７】
次に“Ａｎ”〜“Ｃｎ”プログラムにつき図１７を用いて説明する。図示するように、“Ｅ”レベルのメモリセルトランジスタＭＴの一部に対して、“Ａｎ”レベルへのネガティブモードプログラムが実行される。そして“ＬＭｎ”レベルのメモリセルトランジスタＭＴに対して、“Ｂｎ”レベルまたは“Ｃｎ”レベルへのポジティブモードプログラムが実行される。
【０１０８】
１．２．３  書き込み時の電圧について
次に、上記データの書き込み時における配線の電圧関係について説明する。
【０１０９】
１．２．３．１  ポジティブモードプログラムの電圧について
まずポジティブモードプログラムにおける各配線の電圧関係について説明する。ポジティブモードプログラムでは、書き込み対象のページに対応するＮＡＮＤストリング１１６の選択トランジスタＳＴ１、ＳＴ２及びメモリセルトランジスタＭＴがＮチャネルトランジスタとして動作する。図１８は、ポジティブモードプログラム時の各配線の電位を示すタイミングチャートである。本チャートは、図１０及び図１１における“Ｅ”ｐｏｓプログラム、“ＬＭｐ”プログラム、または“Ａｐ”〜“Ｃｐ”プログラム時における各配線の電位を示す。
【０１１０】
図示するように、時刻ｔ１で、ロウデコーダ１１２は、セレクトゲート線ＳＧＳに電圧ＶＳＧｐ（例えば５Ｖ）を印加する。ＶＳＧｐは、ポジティブモードプログラムにおいて選択トランジスタＳＴ２をオン状態にする電圧である。
【０１１１】
次に時刻ｔ２で、ロウデコーダ１１２は、選択したページに対応する選択ワード線ＷＬと非選択ワード線ＷＬに電圧ＶＰＡＳＳｐ（例えば７Ｖ）を印加する。ＶＰＡＳＳｐは、ポジティブモードプログラムの際、メモリセルトランジスタＭＴの閾値に関わらず、メモリセルトランジスタＭＴをオン状態にする電圧である。
【０１１２】
この際のＮＡＮＤストリング１１６の様子を図１９に示す。図１９はＮＡＮＤストリング１１６の断面図である。図示するように、選択ワード線ＷＬと非選択ワード線ＷＬにＶＰＡＳＳｐが印加されると、容量カップリングにより導電膜３０の電位も同じＶＰＡＳＳｐに上がろうとする。しかし、選択トランジスタＳＴ２がオン状態のため、ソース線側（Ｐ型ウェル領域２０）から電荷が供給され、導電膜３０はソース線ＳＬと同じ０Ｖを維持する。そして導電膜３０に電荷が供給されることにより、メモリセルトランジスタＭＴ０〜ＭＴ７、及び選択トランジスタＳＴ２は、Ｎチャネルが形成され、これらのトランジスタはＮチャネルトランジスタとして動作する。
【０１１３】
図１８に戻って説明を続ける。引き続き時刻ｔ３で、ロウデコーダ１１２は、セレクトゲート線ＳＧＳの電位をＶＳＧｐから０Ｖにする。これにより、選択トランジスタＳＴ２がオフ状態となる。
【０１１４】
次に時刻ｔ４で、ロウデコーダ１１２は、セレクトゲート線ＳＧＤに正電圧、例えばＶＰＡＳＳｐを印加する。またセンスアンプ１１３は、データを書き込むビット線ＢＬに例えば０Ｖを印加し、選択トランジスタＳＴ１をオン状態とする。また、センスアンプ１１３は、書き込みを行わないビット線ＢＬにセレクトゲート線ＳＧＤと同電位の例えばＶＰＡＳＳｐを印加し、選択トランジスタＳＴ１をオフ状態とする。
【０１１５】
次に時刻ｔ５で、ロウデコーダ１１２は、選択ワード線ＷＬに電圧ＶＰＧＭｐを印加する。ＶＰＧＭｐは、ポジティブモードプログラムの際、選択ワード線ＷＬのゲートに印加する正の高電圧（例えば２０Ｖ）であり、ＶＰＧＭｐ＞ＶＰＡＳＳｐの関係がある。
【０１１６】
これにより、プログラム対象のメモリセルトランジスタＭＴでは、選択ワード線ＷＬと導電膜３０との電位差、すなわちゲートとチャネルの電位差が大きくなる。従って、ＦＮトンネリングにより電荷蓄積層２８に電荷が注入される。その結果、メモリセルトランジスタＭＴの閾値がプラス側に変動する。
【０１１７】
次に時刻ｔ６で、センスアンプ１１３は、ビット線ＢＬに０Ｖを印加する。ロウデコーダ１１２は、全ワード線ＷＬに０Ｖを印加する。これによりＦＮトンネル電流による電荷の注入は終了する。
【０１１８】
最後に時刻ｔ７で、ロウデコーダ１１２は、セレクトゲート線ＳＧＤに０Ｖを印加する。これによりプログラムは終了する。
【０１１９】
なお、この間（時刻ｔ１〜ｔ７）、ソース線ドライバ１１４は、ソース線ＳＬに０Ｖを印加する。ウェルドライバ１１５は、ウェル配線ＣＰＷＥＬＬに０Ｖを印加する。
【０１２０】
また、ロウデコーダ１１２は、非選択セレクトゲート線ＳＧＤに０Ｖを印加し、選択トランジスタＳＴ１をオフ状態とする。これにより、非選択セレクトゲート線ＳＧＤに接続されたＮＡＮＤストリング１１６では、選択ワード線ＷＬの電圧が上昇すると容量カップリングにより導電膜３０の電位も上昇する。よって、ゲートとチャネルの電位差が生じないため、ＦＮトンネル電流は流れずプログラムされない。すなわち、非対象のストリングユニットＳＵは、プログラムの対象から除外される。
【０１２１】
図２０は、プログラムループの回数とＶＰＧＭｐの関係を示すグラフである。図示するように、例えばＶＰＧＭｐは、プログラムループを繰り返す毎に電圧値をステップアップしても良い。このときのステップアップ電圧値はＤＶＰＧＭｐ（＞０Ｖ）である。
【０１２２】
１．２．３．２  ネガティブモードプログラムの電圧について
次にネガティブモードプログラムにおける各配線の電圧関係について説明する。ネガティブモードプログラムでは、書き込み対象のページに対応するＮＡＮＤストリング１１６の選択トランジスタＳＴ１、ＳＴ２及びメモリセルトランジスタＭＴがＰチャネルトランジスタとして動作する。図２１は、ネガティブモードプログラム時の各配線の電位を示すタイミングチャートである。本チャートは、図１０及び図１１における“Ｅ”ｎｅｇプログラム、“ＬＭｎ”プログラム、または“Ａｎ”〜“Ｃｎ”プログラム時における各配線の電位を示す。
【０１２３】
図示するように、時刻ｔ１で、ロウデコーダ１１２は、選択したページに対応するセレクトゲート線ＳＧＤに電圧Ｖｇｎ（例えば−３．３Ｖ）を印加する。Ｖｇｎは、プログラム時において、選択トランジスタＳＴ１またはＳＴ２がＰチャネルトランジスタとして動作する際に、オン状態とするためにセレクトゲート線ＳＧＤまたはＳＧＳに印加される電圧であり、Ｖｇｎ＜０Ｖである。センスアンプ１１３は、データを書き込むビット線ＢＬに例えば０Ｖを印加し、データを書き込まないビット線ＢＬに、セレクトゲート線ＳＧＤと同電位のＶｇｎを印加する。これにより、データを書き込むメモリセルトランジスタＭＴに対応した選択トランジスタＳＴ１は、オン状態となり、データを書き込まないメモリセルトランジスタＭＴに対応した選択トランジスタＳＴ１は、オフ状態となる。
【０１２４】
次に時刻ｔ２で、ロウデコーダ１１２は、選択ワード線ＷＬと非選択ワード線ＷＬに電圧ＶＰＡＳＳｎ（例えば−７Ｖ）を印加する。ＶＰＡＳＳｎは、ネガティブモードプログラムの際、メモリセルトランジスタＭＴの閾値に関わらず、メモリセルトランジスタＭＴをオン状態にする電圧である。
【０１２５】
この際のＮＡＮＤストリング１１６の様子を図２２に示す。図２２はＮＡＮＤストリング１１６の断面図である。図示するように、ポジティブモードプログラムの場合とは逆に、選択ワード線ＷＬと非選択ワード線ＷＬにＶＰＡＳＳｎが印加されると、ビット線側（Ｐ型拡散層３１）からホールが供給され、導電膜３０はビット線ＢＬと同じ０Ｖを維持する。そして導電膜３０にホールが供給されることによりメモリセルトランジスタＭＴ０〜ＭＴ７、及び選択トランジスタＳＴ１は、Ｐチャネルが形成され、これらのトランジスタはＰチャネルトランジスタとして動作する。
【０１２６】
図２１に戻って説明を続ける。次に時刻ｔ３で、ロウデコーダ１１２は、選択ワード線ＷＬに電圧ＶＰＧＭｎを印加する。ＶＰＧＭｎは、ネガティブモードプログラムの際、選択ワード線ＷＬのゲートに印加する負の高電圧（例えば−２０Ｖ）であり、ＶＰＧＭｎ＜ＶＰＡＳＳｎの関係がある。
【０１２７】
これにより、選択ワード線ＷＬとビット線ＢＬとの電位差が大きくなり、プログラム対象のメモリセルトランジスタＭＴにＦＮトンネル電流が流れ、ホールが注入される。その結果、メモリセルトランジスタＭＴの閾値がマイナス側に変動する。
【０１２８】
次に時刻ｔ４で、センスアンプ１１３は、ビット線ＢＬに０Ｖを印加する。またロウデコーダ１１２はセレクトゲート線ＳＧＤと全ワード線ＷＬに０Ｖを印加する。これにより、ＦＮトンネル電流によるホールの注入は終了し、書き込みは終了する。
【０１２９】
なお、この間（時刻ｔ１〜ｔ４）、ロウデコーダ１１２は、セレクトゲート線ＳＧＳに０Ｖを印加する。そして、ソース線ドライバ１１４はソース線ＳＬに０Ｖを印加し、ウェルドライバ１１５は、ウェル配線ＣＰＷＥＬＬに０Ｖを印加する。これにより、選択トランジスタＳＴ２は、オフ状態となる。またロウデコーダ１１２は、非選択セレクトゲート線ＳＧＤに０Ｖを印加し、選択トランジスタＳＴ１をオフ状態とする。これにより、非対象のストリングユニットＳＵは、プログラムの対象から除外される。
【０１３０】
図２３は、プログラムのループ回数とＶＰＧＭｎの関係を示すグラフである。図示するように、例えばＶＰＧＭｎは、プログラムのループを繰り返す毎に電圧値をステップダウンしても良い。このときのステップダウン電圧値はＤＶＰＧＭｎ（＜０Ｖ）である。
【０１３１】
１．３  データの読み出し動作について  
次に、本実施形態に係るデータの読み出し動作について説明する。本実施形態ではデータを読み出し方法にも２つのモードがある。１つは、選択トランジスタＳＴ１、ＳＴ２及びメモリセルトランジスタＭＴをＮチャネルトランジスタとして動作させてデータを読み出すモードである（以下、「Ｎチャネル読み出し」と呼ぶ）。もう１つは、選択トランジスタＳＴ１、ＳＴ２及びメモリセルトランジスタＭＴをＰチャネルトランジスタとして動作させてデータを読み出すモードである（以下、「Ｐチャネル読み出し」と呼ぶ）。Ｎチャネル読み出しとＰチャネル読み出しは、それぞれポジティブタイプとネガティブタイプの両方のデータを読み出すことができるが、以下では、ポジティブタイプのデータをＮチャネル読み出しで、ネガティブタイプのデータをＰチャネル読み出しで読み出す場合を例として説明する。
【０１３２】
また本例では、書き込み状況テーブルにタイプ情報がない場合、すなわちデータがポジティブタイプかネガティブタイプかわからない場合において、シーケンサ１２１は、優先的にＮチャネル読み出しを行い、Ｎチャネル読み出しでエラーとなった場合は、Ｐチャネル読み出しを行うように設定されている。
【０１３３】
１．３．１  読み出し動作の全体的な流れについて
ＮＡＮＤ型フラッシュメモリ１００におけるデータの読み出し動作について、図２４を用いて説明する。図２４は、読み出し動作時におけるＮＡＮＤ型フラッシュメモリ１００の動作の流れを示すフローチャートである。
【０１３４】
図示するように、例えばシーケンサ１２１は、コントローラ２００から読み出し命令と、読み出し対象のページアドレスを受信する。この際、コントローラ２００は、これらの情報に加えて、読み出し対象ページのタイプ情報がある場合は、これも合わせて送信する。
【０１３５】
するとシーケンサ１２１は、まずタイプ情報を受信したか確認をする（ステップＳ１３０）。タイプ情報がない場合（ステップＳ１３０、Ｎｏ）、シーケンサ１２１は、予め優先的に実行するように設定されている読み出し方法（本例ではＮチャネル読み出し）を選択する。
【０１３６】
タイプ情報がある場合（ステップＳ１３０、Ｙｅｓ）、シーケンサ１２１は、この情報に基づいて、選択ページの閾値がネガティブタイプであるかポジティブタイプであるかを確認する（ステップＳ１３１）
選択ページがネガティブタイプの場合（ステップＳ１３２、Ｙｅｓ）、シーケンサ１２１は、Ｐチャネル読み出しを行う（ステップＳ１３８）。
【０１３７】
選択ページがネガティブタイプではない場合（ステップＳ１３２、Ｎｏ）、すなわちポジティブタイプの場合、シーケンサ１２１は、Ｎチャネル読み出しを行う（ステップＳ１３３）。
【０１３８】
次にシーケンサ１２１は、Ｎチャネル読み出しを実行した後、読み出したデータがポジティブタイプか確認する（ステップＳ１３４）。具体的には、シーケンサ１２１は、例えばページのある領域に書き込まれているタイプ情報を示すデータの閾値、またはレジスタ１２３に記憶されている各ページのタイプ情報を確認し、ポジティブタイプであるか判定をする。
【０１３９】
ポジティブタイプであるか否かの判定方法の具体例を、図２５を用いて説明する。本例は、ページのある領域に閾値のタイプ情報が書き込まれている場合であり、図２５は、各ワード線ＷＬにおける各ビットの保持データを閾値で示したものである。
【０１４０】
図示するように、例えば、各ワード線のビット線ＢＬ０〜ＢＬ７に対応する８ビットがタイプ情報を記憶する領域として使用される。すなわち偶数ビット線ＢＬｅに対応したページでは、ビット線ＢＬ０、ＢＬ２、ＢＬ４、及びＢＬ６がタイプ情報を記憶する領域として使用され、奇数ビット線ＢＬｏに対応するページでは、ビット線ＢＬ１、ＢＬ３、ＢＬ５、及びＢＬ７がタイプ情報を記憶する領域として使用される。そして、ポジティブタイプを示す場合は、例えば“Ａｐ”レベルが書き込まれ、ネガティブタイプを示す場合は、例えば“Ａｎ”レベルが書き込まれる。また、出荷時またはデータが消去された場合等は、“Ｅ”レベルとなる。
【０１４１】
従って図２５の例であると、ワード線ＷＬ０の偶数ビット線ＢＬｅに対応するページはポジティブタイプのデータを保持し、奇数ビット線ＢＬｏに対応するページはネガティブタイプのデータを保持する。またワード線ＷＬ７の偶数ビット線ＢＬｅと奇数ビット線ＢＬｏにそれぞれ対応するページはデータを保持していないことが分かる。このように、読み込み対象のページのデータを読み込んだ際、例えば４ビットのデータにより、そのページのタイプを確認する。
【０１４２】
なお、タイプ情報を記憶するビット数は任意に設定可能である。更に、ここではポジティブタイプを示す場合、“Ａｐ”レベルを書き込むとしたが、“Ｂｐ”レベルでも“Ｃｐ”レベルでも良く、“Ｅ”レベルと区別が出来る閾値であれば良い。同様に、ネガティブタイプを示す場合、“Ａｎ”レベルを書き込むとしたが、“Ｂｎ”レベルでも“Ｃｎ”レベルでも良い。更に、ここでは４ビット全てが“Ａｐ”レベル、すなわちＡＶＨｐより大きい場合にポジティブタイプであると判定したが、４ビットのうち少なくとも１つが“Ａｐ”を示している場合においてもポジティブタイプであると判定しても良く、ポジティブタイプであると判定するのに必要なビット数は任意に設定され得る。また、ネガティブタイプを判定する場合も同様である。
【０１４３】
引き続き図２４について説明する。読み出したページのデータがポジティブタイプの場合（ステップＳ１３５、Ｙｅｓ）、シーケンサ１２１は、データ及びタイプ情報をコントローラ２００に送信する（ステップＳ１３６）。
【０１４４】
読み出したページのデータがポジティブタイプではない場合（ステップＳ１３６、Ｎｏ）、シーケンサ１２１は、コントローラ２００からポジティブタイプのタイプ情報を受信していた場合と、タイプ情報を受信していない場合とで異なる処理を行う。
【０１４５】
コントローラ２００から受信したタイプ情報が、当該ページがポジティブタイプであることを示している場合（ステップＳ１３７、Ｙｅｓ）、シーケンサ１２１は、読み出しエラーを、コントローラ２００に報告する（ステップＳ１４１）。すなわち、シーケンサ１２１は、実際のデータがポジティブタイプではないため、正常に読み出しが出来なかったと判断し、コントローラ２００にその旨を読み出しエラーとして
報告する。
【０１４６】
コントローラ２００からタイプ情報を受信していない場合（ステップＳ１３７、Ｙｅｓ）、シーケンサ１２１は、Ｐチャネル読み出しを行う（ステップＳ１３８）。すなわちシーケンサ１２１は、優先的にＮチャネル読み出しを行ったが、データがポジティブタイプでは無かったため、データがネガティブタイプであるとして、Ｐチャネル読み出しを行う。
【０１４７】
Ｐチャネル読み出しを実行した後、シーケンサ１２１は、読み出したデータがネガティブタイプか確認する（ステップＳ１３９）。具体的には、Ｐチャネル読み出しと同様に、シーケンサ１２１は、例えばページ内のある領域、またはレジスタ１２３に書き込まれたタイプ情報を示すデータを確認し、ネガティブタイプであるか判定をする。
【０１４８】
読み出したページのデータがネガティブタイプの場合（ステップＳ１４０、Ｙｅｓ）、シーケンサ１２１は、データ及びタイプ情報をコントローラ２００に送信する（ステップＳ１４２）。
【０１４９】
読み出したページのデータがネガティブタイプではない場合（ステップＳ１４０、Ｎｏ）、シーケンサ１２１は、読み出しに失敗したと判断し、その旨をコントローラ２００に報告する（ステップＳ１４１）。すなわち、コントローラ２００からネガティブタイプを示す情報を受信したが、実際のデータはネガティブタイプではない場合、またはコントローラ２００からタイプ情報を受信しておらず、実際のデータがポジティブタイプでもネガティブタイプでもないと判定された場合、シーケンサ１２１は、コントローラ２００に読み出しエラーと報告する。
【０１５０】
１．３．２  読み出し時の電圧について
次にデータの読み出しにおける配線の電圧関係について説明する。
【０１５１】
１．３．２．１  Ｎチャネル読み出しの電圧について
まず、Ｎチャネル読み出しにおける各配線の電圧関係について説明する。図２６は、Ｎチャネル読み出し時の各配線の電位を示すタイミングチャートである。ここで信号線ＢＬＣＬＡＭＰは、図５で説明したセンスアンプユニットのトランジスタＮＭＯＳ１０のゲートに信号を印加する信号線である。読み出し時において、シーケンサ１２１は、信号線ＢＬＣＬＡＭＰにより、ビット線ＢＬに印加するプリチャージ電圧の制御、及びビット線ＢＬの電圧をセンス（ストローブ）するタイミング制御を行う。
【０１５２】
図示するように、時刻ｔ１で、ロウデコーダ１１２は、選択したページに対応する選択トランジスタＳＴ１、ＳＴ２をオン状態にするため、セレクトゲート線ＳＧＤ、ＳＧＳに電圧ＶＳＧｐ（例えば５Ｖ）を印加する。ＶＳＧｐは、Ｎチャネル読み出しにおいて、選択トランジスタＳＴ１及びＳＴ２をオン状態にするための電圧である。
【０１５３】
次に時刻ｔ２で、ロウデコーダ１１２は、選択ワード線ＷＬに電圧ＶＣＧＲＶｐを印加し、非選択ワード線ＷＬに電圧ＶＲＥＡＤｐ（例えば７Ｖ）を印加する。これにより、ソース線側から導電膜３０に電荷が供給され、メモリセルトランジスタＭＴはＮチャネルトランジスタとして動作する。電圧ＶＣＧＲＶｐは、Ｎチャネル読み出しにおいて、読み出し対象データに応じた電圧である。電圧ＶＲＥＡＤｐは、Ｎチャネル読み出しにおいて、保持データに関わらずメモリセルトランジスタＭＴをオンさせる電圧であり、ＶＲＥＡＤｐ＞ＶＣＧＲＶｐである。
【０１５４】
次に時刻ｔ３で、シーケンサ１２１は、信号線ＢＬＣＬＡＭＰに電圧ＶＣＬＭＰを印加する。これにより、センスアンプ１１３は、ビット線ＢＬにプリチャージ電圧ＶＢＬ（例えば２Ｖ）を印加する。ＶＣＬＭＰは、ビット線ＢＬのプリチャージ電圧を制御するためにセンスアンプユニットのトランジスタＮＭＯＳ１０に印加される正電圧であり、図５で説明したＶＰＲＥよりも低い電圧である。またＶＢＬは、Ｎチャネル読み出しにおいて、ビット線ＢＬに印加されるプリチャージ電圧である。ＶＣＬＭＰとＶＢＬは、ＶＣＬＭＰ＝ＶＢＬ＋Ｖｔの関係となる。ＶｔはトランジスタＮＭＯＳ１０の閾値である。
【０１５５】
またソース線ドライバ１１４は、ソース線ＳＬに電圧ＶＳＲＣ（例えば０．３Ｖ）を印加する。そしてウェルドライバ１１５は、ウェル配線ＣＰＷＥＬＬに電圧ＶＳＲＣ（例えば０．３Ｖ）を印加する。ＶＳＲＣは、Ｎチャネル読み出しにおいて、ソース線ＳＬ及びウェル配線ＣＰＷＥＬＬに印加される電圧である。また、ＶＳＲＣはＶＢＬよりも低い電圧である。すなわち、ビット線ＢＬの方がソース線ＳＬより電位が高い。そのため、読み出し対象のメモリセルトランジスタＭＴがオン状態の場合、ビット線ＢＬからソース線ＳＬに電流が流れる。
【０１５６】
次に時刻ｔ４で、シーケンサ１２１は、信号線ＢＬＣＬＡＭＰに０Ｖを印加し、センスアンプユニットのＮＭＯＳ１０をオフ状態とする。これにより、センスアンプ１１３からビット線ＢＬへの電圧の印加が停止される。すると、メモリセルトランジスタＭＴの閾値がＶＣＧＲＶｐより高い場合、ビット線ＢＬからソース線ＳＬに電流は流れず、ビット線ＢＬの電位は低下しない。これに対し、メモリセルトランジスタＭＴの閾値がＶＣＧＲＶｐより低い場合は、ビット線ＢＬからソース線ＳＬに電流が流れ、その結果ビット線ＢＬの電位は低下する。
【０１５７】
次に時刻ｔ５で、シーケンサ１２１は、ＢＬＣＬＭＰに電圧Ｖｓｅｎ＿ｐｏｓを印加する。Ｖｓｅｎ＿ｐｏｓは、Ｎチャネル読み出しにおいて、ビット線ＢＬの放電の有無、すなわち、メモリセルトランジスタＭＴがオンしたかオフしたかを判定するためのセンス電圧である。これによりセンスアンプ１１３は、ビット線ＢＬの電圧をセンス（ストローブ）し、読み出されたデータが“０”か“１”かを判定する。本実施形態では、選択されたメモリセルトランジスタＭＴがオン状態となる場合（すなわちビット線ＢＬの電位が低下する場合）を、読み出しデータ＝“１”と定義し、逆にメモリセルトランジスタＭＴがオフ状態となる場合（すなわちビット線ＢＬの電位が維持される場合）を、読み出しデータ＝“０”と定義する。
【０１５８】
上記判定時の動作の一例を簡単に説明する。ビット線ＢＬをプリチャージする際（時刻ｔ３〜ｔ４）、同時に図５に示すテンポラリ・データ・キャッシュ４３４の容量ＣにはＶＰＲＥが充電されている。この状態において、シーケンサ１２１は、時刻ｔ５でＢＬＣＬＭＰにＶｓｅｎ＿ｐｏｓを印加する。すると、ビット線ＢＬの電位が（Ｖｓｅｎ＿ｐｏｓ−Ｖｔ）より高い場合、すなわちメモリセルトランジスタがオフ状態にありビット線ＢＬの電位が低下していない場合、トランジスタＮＭＯＳ１０はオフ状態となる。またビット線ＢＬの電位が（Ｖｓｅｎ＿ｐｏｓ−Ｖｔ）より低い場合、すなわちメモリセルトランジスタＭＴがオン状態にありビット線ＢＬの電位が低下している場合、トランジスタＮＭＯＳ１０はオン状態となり、容量Ｃが放電される。その結果がセカンダリ・データ・キャッシュ４３１に取り込まれる。
【０１５９】
次に時刻ｔ６で、センスアンプ１１３は、ビット線ＢＬに０Ｖを印加し、ロウデコーダ１１２は、セレクトゲート線ＳＧＤ、ＳＧＳ、及び全ワード線ＷＬに０Ｖを印加する。ソース線ドライバ１１４は、ソース線ＳＬに０Ｖを印加し、ウェルドライバ１１５は、ウェル配線ＣＰＷＥＬＬに０Ｖを印加する。これによりデータの読み出し動作は終了となる。また、この間（時刻ｔ１〜ｔ６）、ロウデコーダ１１２は、非選択のセレクトゲート線ＳＧＤに０Ｖを印加し、選択トランジスタＳＴ１をオフ状態とする。これにより、非対象のストリングユニットＳＵは、プログラムの対象から除外される。
【０１６０】
なお、図２６では１回のデータ読み出し時における電圧波形を示しているが、例えば多値のデータを読み出す場合など、データの読み出しを複数回行う。この場合、時刻ｔ３〜ｔ６の処理を繰り返し、その度にＶＣＧＲＶｐを異なる電圧とする。これにより、異なる閾値を有するデータを読み出せる。
【０１６１】
更に、上記Ｎチャネル読み出しは、図１０及び図１１で説明したネガティブ・プリベリファイ、ポジティブ・プリベリファイ、ポジティブモードプログラムのベリファイ、及びネガティブモードプログラムのベリファイにも適用出来る。
【０１６２】
１．３．２．２  Ｐチャネル読み出しの電圧について
次にＰチャネル読み出しにおける各配線の電圧関係について説明する。図２７は、Ｐチャネル読み出し時の各配線の電位を示すタイミングチャートである。
【０１６３】
図示するように、時刻ｔ１で、ロウデコーダ１１２は、選択したページに対応する選択トランジスタＳＴ１、ＳＴ２をオン状態にするため、セレクトゲート線ＳＧＤ、ＳＧＳに電圧ＶＳＧｎ（例えば−５Ｖ）を印加する。ＶＳＧｎは、Ｐチャネル読み出しにおいて、選択トランジスタＳＴ１及びＳＴ２をオン状態にするための電圧である。
【０１６４】
次に時刻ｔ２で、ロウデコーダ１１２は、選択ワード線ＷＬに電圧ＶＣＧＲＶｎを印加し、非選択ワード線ＷＬに電圧ＶＲＥＡＤｎ（例えば−７Ｖ）を印加する。これによりビット線側から導電膜３０にホールが供給され、メモリセルトランジスタＭＴはＰチャネルトランジスタとして動作する。電圧ＶＣＧＲＶｎは、Ｐチャネル読み出しにおいて、読み出し対象データに応じた電圧である。また電圧ＶＲＥＡＤｎは、Ｐチャネル読み出しにおいて、保持データに関わらずメモリセルトランジスタＭＴをオンさせる電圧であり、ＶＲＥＡＤｎ＜ＶＣＧＲＶｎである。
【０１６５】
次に時刻ｔ３で、シーケンサ１２１は、センスアンプユニットの信号線ＢＬＣＬＡＭＰにＶＣＬＭＰを印加する。これにより、センスアンプ１１３は、ビット線ＢＬにＶＢＬ（例えば２Ｖ）＋ｄＶｎｅｇを印加する。ｄＶｎｅｇは、Ｐチャネル読み出しにおいて、データを読み出す際の電圧の補正値であり、メモリセルトランジスタＭＴがＮチャネルトランジスタとして動作する場合とＰチャネルトランジスタとして動作する場合の閾値電圧の大きさの違いに応じて設定され得る。例えば、Ｎチャネルトランジスタとして動作する場合の閾値電圧をＶｔｎ（＞０Ｖ）、Ｐチャネルトランジスタとして動作する場合の閾値電圧をＶｔｐ（＜０Ｖ）とする。すると、｜Ｖｔｎ｜＜｜Ｖｔｐ｜の関係にある。よって、ｄＶｎｅｇ＝Ｖｔｐ＋Ｖｔｎ（＜０Ｖ）となる。
【０１６６】
またソース線ドライバ１１４は、ソース線にＶＳＲＣ（例えば０．３Ｖ）＋ｄＶｎｅｇを印加する。そしてウェルドライバ１１５は、ウェル配線ＣＰＷＥＬＬにＶＳＲＣ（例えば０．３Ｖ）＋ｄＶｎｅｇを印加する。ＶＳＲＣ＋ｄＶｎｅｇは、Ｎチャネル読み出し時にソース線ＳＬ及びウェル配線ＣＰＷＥＬＬに印加される電圧である。これにより、読み出し対象のメモリセルトランジスタＭＴがオン状態の場合、ビット線ＢＬからソース線ＳＬに電流が流れる。
【０１６７】
次に時刻ｔ４〜ｔ６で、図２６で説明した時刻ｔ４〜ｔ６と同様に、センスアンプ１１３は、ビット線ＢＬの電圧をセンス（ストローブ）し、“０”か“１”かを判定する。
【０１６８】
次に時刻ｔ６で、センスアンプ１１３は、ビット線ＢＬに０Ｖを印加し、ロウデコーダ１１２は、セレクトゲート線ＳＧＤ、ＳＧＳ、及び全ワード線ＷＬに０Ｖを印加する。ソース線ドライバ１１４は、ソース線に０Ｖを印加し、ウェルドライバ１１５は、ウェル配線ＣＰＷＥＬＬに０Ｖを印加する。これによりデータの読み出し動作は終了となる。また、この間（時刻ｔ１〜ｔ６）、ロウデコーダ１１２は、非選択のセレクトゲート線ＳＧＤに０Ｖを印加し、選択トランジスタＳＴ１をオフ状態とする。これにより、非対象のストリングユニットＳＵは、プログラムの対象から除外される。
【０１６９】
なお、Ｐチャネル読み出しの場合も、データ読み出しを複数回行う場合は、時刻ｔ３〜ｔ６を繰り返し、その度にＶＣＧＲＶｎを異なる電圧とする。これにより、異なる閾値を有するデータを読み出せる。
【０１７０】
更に、上記Ｐチャネル読み出しは、図１０及び図１１で説明したネガティブ・プリベリファイ、ポジティブ・プリベリファイ、ポジティブモードプログラムのベリファイ、及びネガティブモードプログラムのベリファイにも適用出来る。
【０１７１】
１．４  本実施形態に係る効果について  
本実施形態に係る構成であると、データの書き換えの際に、データの消去が不要となり、メモリシステムの処理速度を向上出来る。本効果につき、以下説明する。
【０１７２】
ＮＡＮＤ型フラッシュメモリでは、データ書き込み済みのメモリセルトランジスタＭＴに、データの書き込み（上書き）をしようとすると、一度データを消去した後、書き込み動作を実行する必要がある。従って、処理が複雑になり、処理時間が長くなるため、例えば、メモリセルトランジスタＭＴが半導体基板上に二次元に形成された平面ＮＡＮＤ型フラッシュメモリでは、データの上書きは行われないのが一般的である。
【０１７３】
これに対し、本実施形態に係る構成では、ＮＡＮＤストリング１１６がデュアルチャネル構造を有しており、ポジティブモードとネガティブモードの２つのプログラムを実行することが出来る。このため、データ書き込み済みのメモリセルトランジスタＭＴに対して、逆の閾値分布（ポジティブタイプであればネガティブタイプ、またはネガティブタイプであればポジティブタイプ）で、データを書き込む（上書きする）ことが出来る。従って、データの消去が不要となり、メモリシステムの処理速度を向上することが出来る。
【０１７４】
また、一般的な平面ＮＡＮＤ型フラッシュメモリであると、ブロック単位で消去が行われるので、データを消去する際に、消去対象ブロックにある有効なデータを他のブロックに退避（移動）させる必要がある。しかし、本実施形態では消去が不要となるため、データの退避も不要となる。従って、本実施形態では、データを退避させるためのブロックを確保する必要がないため、書き込みに使用できるメモリ領域を増やすことが出来る。また、従来のガーベージコレクションが不要になるので、コントローラの負荷を低減出来る。
【０１７５】
特に、平面ＮＡＮＤ型フラッシュメモリに比べてブロックサイズが格段に大きい三次元ＮＡＮＤ型フラッシュメモリでは本効果は極めて顕著である。
【０１７６】
２．第２実施形態
次に、第２実施形態に係るメモリシステムについて説明する。本実施形態は、上記第１実施形態で説明したＮＡＮＤ型フラッシュメモリ１００を制御するコントローラ２００の動作に関するものである。以下では第１実施形態と異なる点についてのみ説明する。
【０１７７】
２．１  プログラムについて
２．１．１  プログラム時のコントローラ２００の動作について
図２８は、プログラム時におけるコントローラ２００の動作を示すフローチャートである。
【０１７８】
図示するように、まずコントローラ２００のホストインターフェイス回路２１０は、ホスト機器よりデータの書き込みアクセスされる（ステップＳ２００）。
【０１７９】
この書き込み命令に応答してコントローラ２００のＣＰＵ２３０は、書き込み状況テーブルを参照する。例えばアドレスに既に書き込まれたデータの上書きに相当する命令を受信した場合、ＣＰＵ２３０は、該当のアドレスに対応するページを選択する。他方、上書きに相当する命令を受信していない場合は、参照結果に基づいてＣＰＵ２３０は、無効データを保持し、且つプログラムの累積回数が少ないページを選択する（ステップＳ２０１）。例えば、図９に示す書き込み状況テーブルの例であると、ページアドレス１、２、４、及び６は、無効データを保持している。さらにページアドレス４は、その中でプログラムの累積回数が最も少ない。そこでＣＰＵ２３０は、プログラム対象としてページアドレス４を選択する。
【０１８０】
次にコントローラ２００のＣＰＵ２３０は、選択したページのタイプ情報が書き込み状況テーブルにあるか確認する（ステップＳ２０２）。タイプ情報がない状況は、例えば、出荷時の段階、データ消去後、または不具合により書き込み状況テーブルに正常にタイプ情報が書き込まれていない場合が相当する。
【０１８１】
タイプ情報がない場合（ステップＳ２０２、Ｎｏ）、コントローラ２００のＣＰＵ２３０は、書き込み命令を発行する（ステップＳ２０３）。そしてＮＡＮＤインターフェイス回路２５０は、書き込み命令をＮＡＮＤ型フラッシュメモリ１００に送信する。そしてＮＡＮＤ型フラッシュメモリ１００は、予め優先的に実行する設定されたプログラムモード、例えばポジティブモードプログラムを実行する（ステップＳ２０７）。
【０１８２】
タイプ情報がある場合（ステップＳ２０２、Ｙｅｓ）、このタイプ情報に基づいて、コントローラ２００のＣＰＵ２３０は、選択されたページがポジティブタイプか確認する（ステップＳ２０４）。
【０１８３】
ページのタイプがポジティブタイプの場合（ステップＳ２０４、Ｙｅｓ）、コントローラ２００のＣＰＵ２３０は、ポジティブタイプを示すコマンド、例えば“ｘｘｈ”と、書き込み命令とを発行する（ステップＳ２０５）。ＮＡＮＤインターフェイス回路２５０は、コマンド”ｘｘｈ”と書き込み命令とをＮＡＮＤ型フラッシュメモリ１００に送信する。そしてＮＡＮＤ型フラッシュメモリ１００は、コマンド“ｘｘｈ”の受信に応答して、ネガティブモードでプログラムを実行する（ステップＳ２０８）。
【０１８４】
ページのタイプがネガティブタイプの場合（ステップＳ２０４、Ｎｏ）、ＣＰＵ２３０は、ネガティブタイプを示すコマンド、例えば“ｙｙｈ”、と書き込み命令とを発行する（ステップＳ２０６）。ＮＡＮＤインターフェイス回路２５０は、コマンド”ｙｙｈ”と書き込み命令とをＮＡＮＤ型フラッシュメモリ１００に送信する。そしてＮＡＮＤ型フラッシュメモリ１００は、コマンド“ｙｙｈ”の受信に応答して、ポジティブモードでプログラムを実行する（ステップＳ２０９）。
【０１８５】
２．１．２  書き込み動作のコマンドシーケンスについて
次に、プログラムの際、コントローラ２００とＮＡＮＤ型フラッシュメモリ１００との間で送受信される信号のシーケンスについて説明する。図２９は、プログラム時における各種信号のタイミングチャートである。
【０１８６】
コントローラ２００のＣＰＵ２３０は、チップイネーブル信号／ＣＥ、アドレスラッチイネーブル信号ＡＬＥ、コマンドラッチイネーブル信号ＣＬＥ、ライトイネーブル信号／ＷＥ、リードイネーブル信号／ＲＥを、ＮＡＮＤインターフェイス回路２５０からＮＡＮＤ型フラッシュメモリ１００へ送信する。また、ＮＡＮＤ型フラッシュメモリ１００は、レディ／ビジー信号Ｒ／ＢをＮＡＮＤインターフェイス回路２５０へ送信する。入出力信号Ｉ／Ｏ１〜Ｉ／Ｏ８は、コントローラ２００のＮＡＮＤインターフェイス回路２５０と、ＮＡＮＤ型フラッシュメモリ１００との間で送受信される例えば８ビットのデータである。
【０１８７】
チップイネーブル信号／ＣＥは、ＮＡＮＤ型フラッシュメモリ１００をイネーブルにするための信号であり、ｌｏｗレベルでアサートされる。アドレスラッチイネーブル信号ＡＬＥは、入出力信号Ｉ／Ｏ１〜Ｉ／Ｏ８がアドレスであることを示す信号であり、ｈｉｇｈレベルでアサートされる。コマンドラッチイネーブル信号ＣＬＥは、入出力信号Ｉ／Ｏ１〜Ｉ／Ｏ８がコマンドであることを示す信号であり、ｈｉｇｈレベルでアサートされる。ライトイネーブル信号／ＷＥは、ＮＡＮＤ型フラッシュメモリ１００に各データを書き込むための信号であり、ＣＰＵ２３０がコマンド、アドレス、及びデータ等を発行する度に、／ＷＥをｌｏｗレベルでアサートする。よって、／ＷＥがトグルされる度に、信号がＮＡＮＤ型フラッシュメモリ１００に取り込まれる。リードイネーブル信号／ＲＥは、ＣＰＵ２３０が、ＮＡＮＤ型フラッシュメモリ１００から各データを読み出すための信号であり、ｌｏｗレベルでアサートされる。レディ／ビジー信号Ｒ／Ｂは、ＮＡＮＤ型フラッシュメモリ１００がビジー状態であるか否か（コマンドを受信不可能な状態か可能な状態か）を示す信号であり、ビジー状態の際にｌｏｗレベルとなる。
【０１８８】
図示するように、ＣＰＵ２３０は、まず、ページのタイプ情報を示すコマンド“ｘｘｈ”または“ｙｙｈ”を発行すると共に、ＣＬＥをアサート（“Ｈ”レベル）する。なお、ページのタイプ情報を示すコマンドが発行されない場合、このステップは省略される。
【０１８９】
次にＣＰＵ２３０は、プログラムを実行することを通知するコマンド“８０ｈ”を発行するとともに、ＣＬＥをアサート（“Ｈ”レベル）する。
【０１９０】
次にＣＰＵ２３０は、アドレスデータ“Ａｄｄ”を発行すると共に、ＡＬＥをアサート（“Ｈ”レベル）する。なお図２９の例では、アドレスデータを１サイクルのデータとしたが、カラムアドレス及びページアドレス等を送信するため、複数のサイクルであっても良い。
【０１９１】
引き続きＣＰＵ２３０は、プログラムデータ“ＤＡＴ”を出力する。この間、ＡＬＥ及びＣＬＥはネゲート（“Ｌ”レベル）される。なお、ここでは、書き込むデータを１サイクルとしたが、複数のサイクルとなっても良い。
【０１９２】
更にＣＰＵ２３０は、プログラムコマンド“１０ｈ”を発行すると共に、ＣＬＥをアサートする。
【０１９３】
これらのコマンド、アドレス、及びデータは、ＮＡＮＤ型フラッシュメモリ１００の例えばレジスタ１２３に格納される。
【０１９４】
コマンド“１０ｈ”に応答して、ＮＡＮＤ型フラッシュメモリ１００は、データ“ＤＡＴ”のプログラムを開始し、ビジー状態となる（Ｒ／Ｂ＝“Ｌ”）。
【０１９５】
ＮＡＮＤ型フラッシュメモリ１００におけるプログラムが完了すると、Ｒ／Ｂは“Ｈ”レベルに復帰する。その後コントローラ２００のＣＰＵ２３０は、ステータス読み出しコマンド“７０ｈ”を発行して、データのタイプ情報及びプログラムが成功したか否かを示すステータス情報をレジスタ１２３から読み出す。
【０１９６】
コントローラ２００のＣＰＵ２３０は、ＮＡＮＤ型フラッシュメモリ１００から読み出したタイプ情報を元に、書き込み状況テーブルを更新する。
【０１９７】
２．２  読み出しについて
２．２．１  読み出し時のコントローラ２００の動作について
図３０は、読み出し時におけるコントローラ２００の動作を示すフローチャートである。
【０１９８】
図示するように、まずコントローラ２００のホストインターフェイス回路２１０は、ホスト機器より読み出しアクセスされる（ステップＳ２１０）。
【０１９９】
この読み出し命令に応答してコントローラ２００のＣＰＵ２３０は、選択したページのタイプ情報が書き込み状況テーブルにあるかを確認する（ステップＳ２１１）。
【０２００】
書き込み状況テーブルに、タイプ情報がない場合（ステップＳ２１２、Ｎｏ）、コントローラ２００のＣＰＵ２３０は、読み出し命令を発行する（ステップＳ２１３）。ＮＡＮＤインターフェイス回路２５０は、読み出し命令をＮＡＮＤ型フラッシュメモリ１００に送信する。そしてＮＡＮＤ型フラッシュメモリ１００は、予め優先的に実行するように設定された読み出しモード、例えば図２４のフローで説明したＮチャネル読み出しを実行する（ステップＳ２１７）。なお優先的に実行した読み出しモードで正常にデータの読み出しが出来なかった場合、ＮＡＮＤ型フラッシュメモリ１００は、もう１つの読み出しモード、図２４の例ではＰチャネル読み出しを実行する。
【０２０１】
書き込み状況テーブルに、タイプ情報がある場合（ステップＳ２１２、Ｙｅｓ）、ＣＰＵ２３０は、読み出し対象のページがポジティブタイプか確認をする（ステップＳ２１４）。
【０２０２】
ページのタイプがポジティブタイプの場合（ステップＳ２１４、Ｙｅｓ）、ＣＰＵ２３０は、ポジティブタイプを示すコマンド“ｘｘｈ”と、読み出し命令とを発行する（ステップＳ２１５）。ＮＡＮＤインターフェイス回路２５０は、コマンド”ｘｘｈ”と読み出し命令とをＮＡＮＤ型フラッシュメモリ１００に送信する。そしてＮＡＮＤ型フラッシュメモリ１００は、コマンド“ｘｘｈ”の受信に応答してＮチャネル読み出しを実行する（ステップＳ２１８）。
【０２０３】
ページの閾値タイプがネガティブタイプの場合（ステップＳ２１４、Ｎｏ）、ＣＰＵ２３０は、ネガティブタイプを示すコマンド“ｙｙｈ”と、読み出し命令とを発行する(ステップＳ２１６)。ＮＡＮＤインターフェイス回路２５０は、コマンド”ｙｙｈ”と書き込み命令とをＮＡＮＤ型フラッシュメモリ１００に送信する。そしてＮＡＮＤ型フラッシュメモリ１００は、コマンド“ｙｙｈ”の受信に応答してＰチャネル読み出しを実行する（ステップＳ２１９）。
【０２０４】
次にＮＡＮＤ型フラッシュメモリ１００は、データの読み出しが終了すると、読み出したデータとタイプ情報を、コントローラ２００のＮＡＮＤインターフェイス回路２５０に送信する。この際、読み出しが正常に完了しなかった場合は、エラー報告を行う（ステップＳ２２０）。
【０２０５】
次にＣＰＵ２３０は、ＮＡＮＤ型フラッシュメモリ１００から受信したタイプ情報に基づいて書き込み状況テーブルを更新し、ホストインターフェイス回路２１０より、データをホスト機器に送信する（ステップＳ２２１）。これにより読み出し動作は終了する。
【０２０６】
２．２．１  読み出し動作のコマンドシーケンスについて
次に、読み出しの際、コントローラ２００とＮＡＮＤ型フラッシュメモリ１００との間で送受信される信号のシーケンスについて説明する。図３１は、読み出し時における各種信号のタイミングチャートである。
【０２０７】
図示するように、コントローラ２００のＣＰＵ２３０は、ページのタイプを示すコマンド“ｘｘｈ”または“ｙｙｈ”を発行すると共に、ＣＬＥをアサート（“Ｈ”レベル）する。ページのタイプを示すコマンドが発行されない場合、このステップは省略される。
【０２０８】
次にコントローラ２００のＣＰＵ２３０は、読み出しを実行することを通知するコマンド“００ｈ”を発行するとともに、ＣＬＥをアサート（“Ｈ”レベル）する。
【０２０９】
次にコントローラ２００のＣＰＵ２３０は、アドレスデータ“Ａｄｄ”を発行すると共に、ＡＬＥをアサート（“Ｈ”レベル）する。なお、図３１の例ではアドレスデータを１サイクルのデータとしたが、複数のサイクルであっても良い。
【０２１０】
次にコントローラ２００のＣＰＵ２３０は、読み出しを実行するコマンド“３０ｈ”を発行するとともに、ＣＬＥをアサート（“Ｈ”レベル）する。
【０２１１】
これらのコマンド及びアドレスは、ＮＡＮＤ型フラッシュメモリ１００の例えばレジスタ１２３に格納される。
【０２１２】
次にＮＡＮＤ型フラッシュメモリ１００は、コマンド“３０ｈ”に応答して、読み出しを開始し、ビジー状態となる（Ｒ／Ｂ＝“Ｌ”）。
【０２１３】
その後、ＮＡＮＤ型フラッシュメモリ１００がレディ状態に復帰すると、読み出したデータ及びタイプ情報（または読み出しが成功しなかった場合はエラーを示すデータ）を示す“ＤＡＴ  ｏｕｔ”が、ＮＡＮＤ型フラッシュメモリ１００からコントローラ２００へ転送される。なお、図３１の例ではコントローラ２００に転送されるデータを１サイクルとしたが、複数のサイクルであっても良い。
【０２１４】
２．３  本実施形態に係る効果について
第１実施形態で説明した書き込み動作、及び読み出し動作は本実施形態に係る構成で制御することが出来る。
【０２１５】
３．第３実施形態
次に、第３実施形態に係るメモリシステムについて説明する。本実施形態は、第１及び第２実施形態において、１つの閾値レベルの書き込みを、閾値の変動量が異なる複数のプログラム条件を組み合わせて行うものである。以下では、第１及び第２実施形態と異なる点についてのみ説明する。
【０２１６】
３．１  書き込み動作について
まず、本実施形態における書き込み動作について大まかに説明する。本実施形態では、シーケンサ１２１は、プログラムとベリファイとを繰り返すプログラムループの過程において、目標の閾値レベルに対応した本来のベリファイレベルに加え、このベリファイレベルよりも絶対値の小さい電圧を用いたベリファイも行う。そして、絶対値の小さい電圧を用いたこのベリファイレベル（これを第１ベリファイレベルと呼ぶ）に到達するまでは、閾値の変動量の比較的大きいプログラム条件（以下、「第１の条件」）を用いてプログラムを行う。他方で、第１ベリファイレベルに達したビットに関しては、センスアンプ１１３が、非書き込みにならない程度にビット線電圧を上昇させることで、閾値変動量の比較的小さいプログラム条件（以下、「第２の条件」）でプログラムする。これにより、閾値の分布幅を細くすることが出来る。
【０２１７】
図３２は、第１及び第２の条件を用いたプログラムを適用した場合の閾値の変動を示すグラフであり、一例として、“Ｅ”レベルから“Ａｐ”レベルへの書き込みを行う場合について示している。なお図３２では、第１の条件または第２の条件を用いたプログラムによる閾値の変動量をわかりやすくするために、上段は第１の条件を用いたプログラムの場合、下段は第２の条件を用いたプログラムの場合、と分けて示している。
【０２１８】
図３２の上段に示すように、シーケンサ１２１は、閾値が第１のベリファイレベルＡＶＬｐに到達していないメモリセルトランジスタＭＴに対して第１の条件を用いてプログラムを実行する。具体的には、センスアンプ１１３は、プログラム対象のビット線ＢＬに、第１の条件に対応した電圧（例えば０Ｖ）を印加する。そしてロウデコーダ１１２は、選択ワード線に電圧ＶＰＧＭを印加する。これにより、データがプログラムされる。その後、ロウデコーダ１１２が選択ワード線に第１のベリファイレベルＡＶＬｐ及び第２のベリファイレベルＡＶＨｐ（＞ＡＶＬｐ）を印加することで、第１のベリファイ及び第２のベリファイが実行される。
【０２１９】
そして第１の条件を用いたプログラムは、メモリセルトランジスタの閾値が第１のベリファイレベルＡＶＬｐ以上となるまで、繰り返し行われる。図３２の上段の例では、シーケンサ１２１は、第１の条件を用いてプログラムを３回実行している。具体的には、１回目及び２回目のプログラムでは、シーケンサ１２１は、全てのメモリセルトランジスタＭＴの閾値がＡＶＬｐ未満のため、全メモリセルトランジスタＭＴを対象として第１の条件でのプログラムを行う。つまりセンスアンプ１１３は、全ビット線ＢＬに例えば０Ｖを印加する。そして、２回目のプログラムの結果、一部のメモリセルトランジスタＭＴの閾値がＡＶＬｐ以上になったとする。
【０２２０】
すると、３回目のプログラムでは、閾値がＡＶＬｐ未満のメモリセルトランジスタＭＴに対しては、第１の条件でプログラムが行われ、閾値がＡＶＬｐ以上のメモリセルトランジスタＭＴに対しては、第２の条件でプログラムが行われる。つまり、センスアンプ１１３は、閾値がＡＶＬｐ未満のメモリセルトランジスタＭＴに対応するビット線ＢＬには例えば０Ｖを印加し、閾値がＡＶＬｐ以上のメモリセルトランジスタＭＴに対応するビット線ＢＬには０Ｖよりも高い電圧を印加する。そして、３回目のプログラムで、全てのメモリセルトランジスタＭＴの閾値がＡＶＬｐ以上になったと仮定する。
【０２２１】
図３２の下段は、４回目以降のプログラムによる閾値変動の様子を示す。図示するように、第２の条件でのプログラムは、メモリセルトランジスタＭＴの閾値がＡＶＨｐ以上になるまで繰り返される。
【０２２２】
図示するように、図３２の上段で説明した３回目のプログラムに引き続く４回目のプログラムで、一部のメモリセルトランジスタＭＴの閾値がＡＶＨｐ以上になったとする。
【０２２３】
すると、５回目のプログラムでは、閾値がＡＶＨｐ未満のメモリセルトランジスタＭＴに対しては、引き続き第２の条件でプログラムが行われる。他方、閾値がＡＶＨｐ以上になったメモリセルトランジスタＭＴに対応するビット線ＢＬには、非書き込み電圧が印加されることで、当該メモリセルトランジスタＭＴへのプログラムは禁止される。６回目も同様である。そして、この６回目のプログラムの結果、全てのメモリセルトランジスタＭＴの閾値がＡＶＨｐ以上になると、“Ｅ”レベルから“Ａｐ”レベルへの書き込みが完了する。なお、第１の条件を用いたプログラムによる閾値の変動量をΔＶＴ１とし、第２の条件を用いたプログラムによる閾値の変動量をΔＶＴ２とすると、ΔＶＴ１とΔＶＴ２の関係は、｜ΔＶＴ１｜＞｜ΔＶＴ２｜となる。
【０２２４】
このように本実施形態における書き込み動作では、書き込み対象のメモリセルトランジスタＭＴの現在の閾値が、目標とする閾値レベルから大きく離れている場合は、閾値の変動量が大きい（粗い）条件を用いてプログラムを行う。そしてメモリセルトランジスタＭＴの現在の閾値が、目標とする閾値レベルに近づくと、閾値の変動量が小さい（細かい）条件を用いてプログラムを行うものである。
【０２２５】
次に本実施形態の書き込み動作を第１及び第２実施形態に適用する場合について説明する。
【０２２６】
図３３及び図３４は、ポジティブタイプ及びネガティブタイプにおける第１及び第２の条件を用いたプログラムの実施範囲を示す閾値分布である。図示するように、１つの閾値レベルに対して第１のベリファイと第２のベリファイを実行するため、それぞれの閾値レベルに２つのベリファイレベルが用意される。
【０２２７】
図３３に示すようにＡＶＬｐ、ＢＶＬｐ、及びＣＶＬｐは、“Ａｐ”、“Ｂｐ”、及び“Ｃｐ”レベルにおける第１のベリファイのベリファイレベルであり、メモリセルトランジスタＭＴの閾値がこれよりも低い場合は、第１の条件を用いてプログラムが実行される。同様に、ＡＶＨｐ、ＢＶＨｐ、及びＣＶＨｐは、第２のベリファイレベルであり、メモリセルトランジスタＭＴの閾値が、第１のベリファイレベル以上、且つ第２のベリファイレベルより小さい場合は、第２の条件を用いてプログラムが実行される。また、ＡＶＬｐ、ＢＶＬｐ、ＣＶＬｐ、ＡＶＨｐ、ＡＶＨｐ、及びＣＶＨｐの値は、０Ｖ＜ＡＶＬｐ＜ＡＶＨｐ＜ＢＶＬｐ＜ＢＶＨｐ＜ＣＶＬｐ＜ＣＶＨｐの関係にある。
【０２２８】
また図３４に示すように、ＡＶＬｎ、ＢＶＬｎ、及びＣＶＬｎは、“Ａｎ”、“Ｂｎ”、及び“Ｃｎ”レベルにおける第１のベリファイのベリファイレベルであり、メモリセルトランジスタＭＴの閾値がこれよりも大きい場合は、第１の条件を用いてプログラムが実行される。同様に、ＡＶＨｎ、ＢＶＨｎ、及びＣＶＨｎは、第２のベリファイのベリファイレベルであり、メモリセルトランジスタＭＴの閾値が、第１のベリファイレベルより小さく、且つ第２のベリファイレベル以上である場合、第２の条件を用いてプログラムが実行される。また、ＡＶＬｎ、ＢＶＬｎ、ＣＶＬｎ、ＡＶＨｎ、ＢＶＨｎ、及びＣＶＨｎの電圧値は、０Ｖ＞ＡＶＬｎ＞ＡＶＨｎ＞ＢＶＬｎ＞ＢＶＨｎ＞ＣＶＬｎ＞ＣＶＨｎの関係にある。
【０２２９】
次に、本実施形態における書き込み動作の流れについて図３５を用いて説明する。図３５は、本実施形態における書き込み時のフローチャートである。本例は、図１０及び図１１で説明した“Ａｐ”〜“Ｃｐ”プログラム（図１１のステップＳ１１４〜Ｓ１１６に相当）または“Ａｎ”〜“Ｃｎ”プログラム（図１１のステップＳ１２７〜Ｓ１２９に相当）に適用した場合について説明する。
【０２３０】
まず、シーケンサ１２１は、第１の条件を用いてプログラムを行う（ステップＳ１５０）。
【０２３１】
次にシーケンサ１２１は、第１のベリファイを行う（ステップＳ１５１）。第１のベリファイのベリファイレベルは、ポジティブモードプログラムの場合、ＡＶＬｐ、ＢＶＬｐ、及びＣＶＬｐ、ネガティブモードプログラムの場合、ＡＶＬｎ、ＢＶＬｎ、及びＣＶＬｎである。
【０２３２】
第１のベリファイをフェイルした場合（ステップＳ１５１、Ｎｏ）、シーケンサ１２１は、第１の条件を用いてプログラムを行う（ステップＳ１５０）。シーケンサ１２１は、第１のベリファイをパスするまで、またはプログラムループの回数が予め設定された上限回数に達するまで第１の条件を用いてプログラムを繰り返し行う。
【０２３３】
次に第１のベリファイをパスした場合（ステップＳ１５１、Ｙｅｓ）、シーケンサ１２１は、第２のベリファイを行う（ステップＳ１５２）。第２のベリファイのベリファイレベルは、ポジティブモードプログラムの場合、ＡＶＨｐ、ＢＶＨｐ、及びＣＶＨｐ、ネガティブモードプログラムの場合、ＡＶＨｎ、ＢＶＨｎ、及びＣＶＨｎである。
【０２３４】
第２のベリファイをフェイルした場合（ステップＳ１５２、Ｎｏ）、シーケンサ１２１は、第２の条件を用いてプログラムを行う（ステップＳ１５３）。シーケンサ１２１は、第２のベリファイをパスするまで、またはプログラムループの回数が予め設定された上限回数に達するまで第２の条件を用いてプログラムを繰り返し行う。
【０２３５】
そして、第２のベリファイをパスすると（ステップＳ１５２、Ｙｅｓ）、プログラムは終了となる。
【０２３６】
３．２  書き込み時の電圧について
次に本実施形態における書き込み時の各配線の電圧関係について説明する。
【０２３７】
３．２．１  ポジティブモードプログラムの電圧について
まずポジティブモードプログラムにおける各配線の電圧関係について説明する。第１実施形態と異なる点は、第１の条件と、第２の条件とでは、ビット線ＢＬに印加される電圧が異なる点である。図３６は、ポジティブモードプログラム時の各配線の電位を示すタイミングチャートである。
【０２３８】
図１８で説明したタイミングチャートと異なる点は、図３６に示すように、時刻ｔ４〜ｔ６の間、センスアンプ１１３が、第１の条件に対応するビット線ＢＬに例えば０Ｖを、第２の条件に対応するビット線ＢＬに電圧ＱＰＷｐを印加している点である。ＱＰＷｐは、ポジティブモードプログラムにおいてビット線ＢＬに印加される電圧であり、第１の条件におけるビット線ＢＬの電圧（例えば０Ｖ）より高い。従って、第２の条件では、選択ワード線ＷＬに印加されるＶＰＧＭｐとの電圧差は、第１の条件の場合よりも小さくなる。また、ＱＰＷｐは、選択トランジスタＳＴ１がオフ状態にならないように、セレクトゲート線ＳＧＤの電圧（例えばＶＰＡＳＳｐ）より低い値とする。すなわち、ＱＰＷｐの電圧値は、０Ｖ（第１の条件）＜ＱＰＷｐ（第２の条件）＜ＶＰＡＳＳｐ（セレクトゲート線ＳＧＤの電圧）の関係となる。これにより、第２の条件を適用したビット線ＢＬに対応するメモリセルトランジスタＭＴでは、ＦＮトンネル電流による電荷の注入量が、第１の条件を適用したビット線ＢＬに対応するメモリセルトランジスタＭＴより少なくなる。すなわち、第１の条件より第２の条件の方が閾値の変動量は小さくなる。
【０２３９】
３．２．２  ネガティブモードプログラムの電圧について
次にネガティブモードプログラムにおける各配線の電圧関係について説明する。ポジティブモードプログラムと同様に、第１の条件と、第２の条件とでは、ビット線ＢＬに印加される電圧が異なる。図３７は、ネガティブモードプログラム時の各配線の電位を示すタイミングチャートである。
【０２４０】
図２１で説明したタイミングチャートと異なる点は、図３７に示すように、時刻ｔ１〜ｔ４の間、センスアンプ１１３が、第１の条件に対応するビット線ＢＬに例えば０Ｖを、第２の条件に対応するビット線ＢＬに電圧ＱＰＷｎを印加している点である。ＱＰＷｎは、ネガティブモードプログラムにおいてビット線ＢＬに印加される電圧であり、第１の条件におけるビット線ＢＬの電圧（例えば０Ｖ）よりも低い。従って、第２の条件では、選択ワード線ＷＬに印加されるＶＰＧＭｎとの電位差は、第１の条件よりも小さくなる。また、ＱＰＷｎは、選択トランジスタＳＴ１がオフ状態にならないように、セレクトゲート線ＳＧＤの電圧（例えばＶｇｎ）より高い値とする。すなわち、ＱＰＷｎの電圧値は、０Ｖ（第１の条件）＞ＱＰＷｎ（第２の条件）＞Ｖｇｎ（セレクトゲート線ＳＧＤの電圧）の関係となる。これにより、第２の条件を適用したビット線ＢＬに対応するメモリセルトランジスタＭＴでは、ＦＮトンネル電流によるホールの注入量が、第１の条件を適用したビット線ＢＬに対応するメモリセルトランジスタＭＴより少なくなる。すなわち、第１の条件より第２の条件の方が閾値の変動量は小さくなる。
【０２４１】
３．３  ベリファイについて
本実施形態におけるベリファイでは、第１実施形態で説明したＮチャネル読み出しとＰチャネル読み出しの両方を適用出来る。
【０２４２】
例えばポジティブモードプログラムにおける第１または第２のベリファイを、Ｎチャネル読み出しで行う場合、図２６で説明したタイミングチャートを適用出来る。具体的には、図２６において、選択ワード線ＷＬに印加しているＶＣＧＲＶｐを、第１のベリファイの場合はＶＣＧＲＶｐ１とし、第２のベリファイの場合はＶＣＧＲＶｐ２とする。
【０２４３】
つまり、ＶＣＧＲＶｐ１は、一例としては、ベリファイレベルＡＶＬｐ、ＢＶＬｐ、及びＣＶＬｐとされ、ＶＣＧＲＶｐ２は、ベリファイレベルＡＶＨｐ、ＢＶＨｐ、及びＣＶＨｐとされる。そして、ＶＣＧＲＶｐ１とＶＣＧＲＶｐ２の関係は、ＶＣＧＲＶｐ１＜ＶＣＧＲＶｐ２である。
【０２４４】
また、例えばネガティブモードプログラムにおける第１または第２のベリファイをＰチャネル読み出しで行う場合、図２７で説明したタイミングチャートを適用出来る。具体的には、図２７において、選択ワード線に印加しているＶＣＧＲＶｎを、第１のベリファイの場合はＶＣＧＲＶｎ１とし、第２のベリファイの場合はＶＣＧＲＶｎ２とする。
【０２４５】
つまり、ＶＣＧＲＶｎ１は、一例としては、ベリファイレベルＡＶＬｎ、ＢＶＬｎ、及びＣＶＬｎとされ、ＶＣＧＲＶｎ２は、ベリファイレベルＡＶＨｎ、ＢＶＨｎ、及びＣＶＨｎとされる。そして、ＶＣＧＲＶｎ１とＶＣＧＲＶｎ２の関係は、ＶＣＧＲＶｐ１＞ＶＣＧＲＶｐ２である。このように、選択ワード線ＷＬに異なる電圧を印加し、第１及び第２のベリファイを実行する。
【０２４６】
３．４  本実施形態に係る効果
本実施形態に係る構成であると、上記第１及び第２実施形態と同様の効果が得られる。
【０２４７】
また、本実施形態に係る構成では、メモリセルトランジスタＭＴの閾値が目標のレベルから大きく離れている場合には、第１の条件を用いてプログラムを実行して閾値の変動を大きくする。これにより、プログラムのループ回数を少なくすることが出来る。また、メモリセルトランジスタＭＴの閾値が目標のレベルに近い場合には、第２の条件を用いてプログラムを実行して閾値の変動を小さくする。このように閾値の変動量を変えることにより、閾値の細かい制御が可能となり、閾値分布幅が小さくなるように書き込みをすることが出来る。従って、プログラム時の処理速度と信頼性が向上出来る。
【０２４８】
なお、第１及び／または第２の条件を用いたプログラムのループを繰り返す毎に、ポジティブモードプログラムの場合はプログラム電圧をステップアップし、ネガティブモードプログラムの場合はプログラム電圧をステップダウンしても良い。
【０２４９】
更に、本例では、第１と第２の２つの条件を用いてプログラムで行ったが、３つ以上の条件を用いてプログラムで実行しても良い。この場合、ベリファイもプログラムと同じ条件数に分けて行う。
【０２５０】
更に、ここでは、最初に第１の条件を用いてプログラムを行った（ステップＳ１５０）が、最初に第１のベリファイ（ステップＳ１５１）から実行して、第１の条件を用いてプログラムを実行するか、第２の条件を用いてプログラムを実行するか判断しても良い。
【０２５１】
更に、本例は、“Ａｐ”、“Ｂｐ”、及び“Ｃｐ”レベル、または“Ａｎ”、“Ｂｎ”、及び“Ｃｎ”レベルのデータをプログラムする場合について説明したが、“Ｅ”レベルのプログラムに適用しても良い。“Ｅ”ｐｏｓプログラムの場合、第１のベリファイのベリファイレベルをＶｎｅｇ１とし、第２のベリファイのベリファイレベルをＶｎｅｇ２とする。そしてＶｎｅｇ１とＶｎｅｇ２は、Ｖｎｅｇ１＜Ｖｎｅｇ２＜０Ｖの関係となるように設定する。また、“Ｅ”ｎｅｇプログラムの場合、第１のベリファイのベリファイレベルをＶｐｏｓ１とし、第２のベリファイのベリファイレベルをＶｐｏｓ２とする。そしてＶｐｏｓ１とＶｐｏｓ２は、０Ｖ＜Ｖｎｅｇ２＜Ｖｎｅｇ１の関係となるように設定する。
【０２５２】
更に、“ＬＭｐ”、“ＬＭｎ”レベルのプログラムにも適用できる。但し、“ＬＭｐ”、“ＬＭｎ”レベルは、後に“Ｂｐ”、“Ｃｐ”、または“Ｂｎ”、“Ｃｎ”レベルの書き込みを実行する前の仮の書き込みであるため、閾値分布幅は他のレベルより広くても良いため、第２の条件を用いたプログラムのような細かい閾値の変動を行わなくても良い。
【０２５３】
４．第４実施形態
次に、第４の実施形態に係るメモリシステムについて説明する。本実施形態は、第１及び第２実施形態において、第３実施形態と同様に、１つの閾値レベルの書き込みを、閾値の変動量が異なる複数のプログラム動作を組み合わせて行うものである。第３実施形態と異なる点は、センスアンプ１１３がビット線ＢＬを流れる電流をセンスする方式（以下、「電流センス方式」と呼ぶ。）を適用し、第１のベリファイと第２のベリファイで異なるセンス時間を設定して、それぞれの判定を行う点である。以下、第１及び第３実施形態と異なる点についてのみ説明する。なお、電流センス方式では、全ビット線ＢＬのデータを一括して読み出すことが出来る。従って、いずれかのブロックＢＬＫのいずれかのストリングユニットＳＵにおける、いずれかのワード線ＷＬに共通に接続された複数のメモリセルトランジスタＭＴが「ページ」と呼ばれる単位となる。よって、電流センス方式の場合、ページに含まれるメモリセルトランジスタＭＴの数は、電圧センス方式の場合の２倍となる。
【０２５４】
４．１  センスアンプについて
本実施形態に係るセンスアンプ１１３の構成について説明する。図３８は、電流センス方式のセンスアンプユニットである。電流センス方式のセンスアンプユニットは、ビット線１本毎に対応している。従って、ビット線の本数と同じ数のセンスアンプユニットがある。またセンスアンプ１１３は図３８に示すセンスアンプユニットの集合体である。図示するようにセンスアンプユニットは、センスアンプ部ＳＡ及びラッチ回路ＳＤＬを備えている。なお、個々のメモリセルトランジスタが２ビット以上のデータを保持する際等には、ラッチ回路は２つ以上設けられる。
【０２５５】
センスアンプ部ＳＡは、ビット線ＢＬに読み出されたデータをセンス・増幅し、またラッチ回路ＳＤＬの保持するデータに応じてビット線ＢＬに電圧を印加する。すなわちセンスアンプ部ＳＡは、ビット線ＢＬを直接的に制御するモジュールである。ラッチ回路ＳＤＬは、データを一時的に保持する。ラッチ回路ＳＤＬは、データの書き込み時には、コントローラ２００から受信した書き込みデータを保持する。データの読み出し時には、センスアンプ部ＳＡでセンス・増幅されたデータを保持し、コントローラ２００へ送信する。
【０２５６】
図３８に示すようにセンスアンプ部ＳＡは、ＮチャネルＭＯＳトランジスタ４０〜４８、ＰチャネルＭＯＳトランジスタ４９、及びキャパシタ素子５０を備えている。
【０２５７】
トランジスタ４０は、ゲートが信号線ＢＬＳに接続され、電流経路の一端が、対応するビット線ＢＬに接続される。トランジスタ４１は、電流経路の一端がトランジスタ４０の電流経路の他端に接続され、ゲートが信号線ＢＬＣに接続され、電流経路の他端がノードＳＣＯＭに接続される。トランジスタ４１は、対応するビット線ＢＬを、信号線ＢＬＣに印加された電位に応じてクランプするためのものである。
【０２５８】
トランジスタ４５は、電流経路の一端がノードＳＣＯＭに接続され、他端がノードＳＲＣＧＮＤ（例えば０Ｖ）に接続され、ゲートがノードＩＮＶ＿Ｓに接続される。トランジスタ４２は、電流経路の一端がノードＳＣＯＭに接続され、他端がノードＳＳＲＣに接続され、ゲートが信号線ＢＬＸに接続される。トランジスタ４９は、電流経路の一端がノードＳＳＲＣに接続され、他端は電圧ＶＤＤＳＡを供給する電源に接続され、ゲートがノードＩＮＶ＿Ｓに接続される。ＶＤＤＳＡは、センスアンプユニットに供給される電源電圧であり、周辺回路１２０に供給される電源電圧ＶＤＤよりも高い電圧である。トランジスタ４３は、電流経路の一端がノードＳＣＯＭに接続され、他端がノードＳＥＮに接続され、ゲートが信号線ＸＸＬに接続される。トランジスタ４４は、電流経路の一端がノードＳＳＲＣに接続され、他端がノードＳＥＮに接続され、ゲートが信号線ＨＬＬに接続される。
【０２５９】
トランジスタ４７は、電流経路の一端が接地され、ゲートがノードＳＥＮに接続される。トランジスタ４８は、電流経路の一端がトランジスタ４７の電流経路の他端に接続され、他端がバスＬＢＵＳに接続され、ゲートが信号線ＳＴＢに接続される。トランジスタ４６は、電流経路の一端がノードＳＥＮに接続され、他端がバスＬＢＵＳに接続され、ゲートが信号線ＢＬＱに接続される。キャパシタ素子５０は、一方電極がノードＳＥＮに接続され、他方電極にクロックＣＬＫが入力される。
【０２６０】
４．１．１  読み出し時のセンスアンプの動作について
次に、読み出し時におけるセンスアンプ部ＳＡの動作につき、引き続き図３８を用いて説明する。本例では、例えばトランジスタ４１〜４４の閾値をＶｔｈＮとし、トランジスタ４９の閾値をＶｔｈＰとする。そしてトランジスタ４１〜４４及び４９をオン状態とする際の信号線ＢＬＣ、ＢＬＸ、ＸＸＬ、ＨＬＬ、及びノードＩＮＶ＿Ｓの制御電圧をそれぞれＶ４１（例えば０．５Ｖ）＋ＶｔｈＮ、Ｖ４２（例えば０．７Ｖ）＋ＶｔｈＮ、Ｖ４３（例えば０．９Ｖ）＋ＶｔｈＮ、Ｖ４４（例えばＶＤＤＳＡ）＋ＶｔｈＮ、及びＶ４９（例えばＶＤＤＳＡ）−ＶｔｈＰとする。そしてＶ４１〜Ｖ４４の値は、Ｖ４１＜Ｖ４２＜Ｖ４３＜Ｖ４４の関係にある。すると、トランジスタ４９からノードＳＳＲＣにはＶＤＤＳＡが供給される。
【０２６１】
この関係において、まずシーケンサ１２１は、トランジスタ４０の信号線ＢＬＳを“Ｈ”レベルとし、信号線ＢＬＣの電位をＶ４１＋ＶｔｈＮ、信号線ＢＬＸの電位をＶ４２＋ＶｔｈＮとし、ノードＩＮＶ＿ＳをＶ４９−ＶｔｈＰとする。すなわちトランジスタ４０、４１、４２、４９をオン状態とすると、ビット線ＢＬの電圧はトランジスタ４１で制御され、最大でＶ４１（例えば０．５Ｖ）までプリチャージされる。また、シーケンサ１２１は、信号線ＨＬＬの電位をＶ４４（例えばＶＤＤＳＡ）＋ＶｔｈＮとし、トランジスタ４４をオン状態とする。これにより、キャパシタ素子５０を充電し、ノードＳＥＮの電位をＶ４４（例えば略ＶＤＤＳＡ）まで上昇させる。
【０２６２】
選択メモリセルトランジスタＭＴがオフ状態の場合、それに対応するプリチャージ中のビット線ＢＬには電流は流れない。従って、ビット線ＢＬの電位は、それが取り得る最大値である電圧Ｖ４１（例えば０．５Ｖ）となる。一方、選択メモリセルトランジスタＭＴがオン状態の場合、それに対応するビット線ＢＬには電流が流れる。従って、ビット線ＢＬは、ソース線ＳＬに流れる電流と、センスアンプ部ＳＡから供給される電流が釣り合う状態となる。この時、ビット線ＢＬの電位は、Ｖ４１（例えば０．５Ｖ）以下でソース線ＳＬよりも高い電位となる。
【０２６３】
その後、信号線ＨＬＬが“Ｌ”レベル（トランジスタ４４がオフ状態）とされ、信号線ＸＸＬが“Ｈ”レベル（トランジスタ４３がオン状態）とされると、対象となるメモリセルトランジスタＭＴがオン状態の場合、ノードＳＥＮが放電され、ノードＳＥＮの電位がＶ４２（例えば０．７Ｖ）まで低下する。すなわち、キャパシタ素子５０はＶ４４（例えばＶＤＤＳＡ）まで充電されており、更にＶ４３（例えば０．９Ｖ）の方がＶ４２（例えば０．７Ｖ）よりも電位が高いため、キャパシタ素子５０からトランジスタ４３の電流経路を介してビット線ＢＬに電流が流れ、ノードＳＥＮが放電される。そしてノードＳＥＮの電位がＶ４２（例えば０．７Ｖ）と同電位まで低下すると、電源からトランジスタ４２の電流経路を介してビット線ＢＬに電流が流れるため、ノードＳＥＮの電位はＶ４２と同電位に維持される。他方、対象となるメモリセルトランジスタＭＴがオフ状態であれば、ノードＳＥＮは放電されず、当初の電位をほぼ維持する。
【０２６４】
そして、信号線ＳＴＢが“Ｈ”レベルとされて、データがストローブされる。すなわち、読み出しデータがラッチ回路ＳＤＬに転送される。具体的には、ノードＳＥＮの電位が“Ｈ”レベルであればトランジスタ４７はオン状態であるから、ノードＬＢＵＳを介して“Ｌ”レベルがラッチ回路ＳＤＬに転送される。他方、ノードＳＥＮの電位が低下していればトランジスタ４７はオフ状態であるから、ノードＬＢＵＳは初期状態の“Ｈ”レベルを維持する。従ってラッチ回路ＳＤＬは、“Ｈ”レベルを保持するリセット状態を維持する。
【０２６５】
なお、上記動作においてノードＳＥＮを放電するタイミング、すなわち、トランジスタ４４をオフ状態にするタイミングで、トランジスタ４３はオン状態とされたが、トランジスタ４０、４１、４２、４４及び４９と同じタイミングでオン状態としても良い。この場合、Ｖ４３＞Ｖ４２のため、電源からトランジスタ４３を介した電流経路でビット線ＢＬはプリチャージされる。
【０２６６】
４．２  書き込み動作について
次に書き込み動作について説明する。本実施形態における書き込み動作の全体の流れ、及びプログラム時の各配線の電圧は、第３実施形態と同じであり、図３５乃至図３７で説明した通りである。
【０２６７】
４．２．１  ベリファイについて
次に、本実施形態における第１と第２のベリファイについて説明する。本例では、読み出しの期間、センスアンプが常に電流をビット線ＢＬに供給しているので、第３実施形態で説明した電圧センス方式とは異なり、ビット線ＢＬの電位は変動しない。このため、本例では、第１のベリファイと第２のベリファイを同じベリファイレベルとし、それぞれに異なるセンス時間を設定してベリファイのパス／フェイル判定を行う。本例におけるセンス時間とは、センスアンプユニットにおいて、トランジスタ４４をオフ状態にし、トランジスタ４３をオン状態として、ノードＳＥＮの放電を開始した時刻から、信号線ＳＴＢを“Ｈ”レベルとしてデータをストローブするまでの時間である。
【０２６８】
図３９は、Ｎチャネル読み出しにおけるノードＳＥＮの電圧の時間変化を示しており、センス開始時からの様子を示すグラフである。本例では、第１のベリファイで用いるセンス時間をＴｓ＿ｐｏｓ１、第２のベリファイで用いるセンス時間をＴｓ＿ｐｏｓ２とする。そしてセンス時間の長さは、Ｔｓ＿ｐｏｓ１＜Ｔｓ＿ｐｏｓ２の関係とする。
【０２６９】
図示するように、メモリセルトランジスタＭＴの閾値がベリファイレベルに対して十分に低い、すなわちメモリセルトランジスタの現在の閾値と、目標とする閾値レベルとの差が大きい場合、メモリセルトランジスタＭＴは強いオン状態（“１”状態）となる。そしてこのようなメモリセルトランジスタＭＴのゲートには、閾値より比較的高い電圧が印加されるため、ビット線ＢＬからソース線ＳＬに流れる電流量は比較的多くなる。従ってノードＳＥＮの電位は急激に低下する（図３９において、実線Ｌｉｎｅ−Ａとして示す）。よって、センス時間Ｔｓ＿ｐｏｓ１で電流をセンスした場合、センスアンプユニットは、トランジスタ４７がオフ状態となり、ラッチ回路ＳＤＬに“Ｌ”レベルを転送する。この結果、シーケンサ１２１は、第１のベリファイをフェイルしたと判定する。
【０２７０】
また、メモリセルトランジスタＭＴの閾値がベリファイレベルに対してわずかに低い場合、メモリセルトランジスタＭＴは弱いオン状態（“１”状態）となる。しかし、ゲートには閾値に近い電圧が印加されるため、ビット線ＢＬからソース線ＳＬに流れる電流量は比較的少なくなる。従って、ノードＳＥＮの電位はゆるやかに低下する（図３９において、破線Ｌｉｎｅ−Ｂとして示す）。よって、Ｔｓ＿ｐｏｓ１で電流をセンスした場合、センスアンプユニットは、トランジスタ４７がオン状態となり、ラッチ回路ＳＤＬに“Ｈ”レベルを転送する。この結果、シーケンサ１２１は、第１のベリファイをパスしたと判定する。しかしＴｓ＿ｐｏｓ２で電流をセンスした場合、ノードＳＥＮの電位が低下し、トランジスタ４７はオフ状態となる。このため、センスアンプユニットは、ラッチ回路ＳＤＬに“Ｌ”レベルを転送する。この結果、シーケンサ１２１は、第２のベリファイをフェイルしたと判定する。
【０２７１】
また、メモリセルトランジスタＭＴの閾値がベリファイレベルより高い場合、メモリセルトランジスタＭＴはオフ状態（“０”状態）のため、ビット線ＢＬからソース線ＳＬにほとんど電流は流れない。従って、トランジスタ４７は、Ｔｓ＿ｐｏｓ２においてもオン状態が維持される（図３９において、点線Ｌｉｎｅ−Ｃとして示す）。このため、センスアンプユニットは、ラッチ回路ＳＤＬに“Ｈ”レベルを転送する。この結果、シーケンサ１２１は、第２のベリファイをパスしたと判定する。
【０２７２】
このように、シーケンサ１２１は、あるセンス時間後のノードＳＥＮの電位によりトランジスタ４７がオフ状態である場合、ベリファイをフェイルしたと判定し、トランジスタ４７がオン状態である場合、ベリファイをパスしたと判定する。
【０２７３】
なお、Ｐチャネル読み出しの場合も、同様に第１のベリファイに用いるセンス時間をＴｓ＿ｎｅｇ１、第２のベリファイに用いるセンス時間をＴｓ＿ｎｅｇ２とし、Ｔｓ＿ｎｅｇ１＜Ｔｓ＿ｎｅｇ２とすることにより、第１及び第２のベリファイを実行出来る。
【０２７４】
４．３  ベリファイ時の電圧について
次にポジティブモードプログラム時のベリファイをＮチャネル読み出し、ネガティブモードプログラム時のベリファイをＰチャネル読み出しで実行する場合の各配線の電圧関係について説明する。第１実施形態と異なる点は、センスアンプ１１３内での電圧設定が異なる点である。以下、第１実施形態と異なる点についてのみ説明する。
【０２７５】
４．３．１  ベリファイをＮチャネル読み出しで行う場合の電圧について
まず、ベリファイをＮチャネル読み出しで行う場合における各配線の電圧関係について説明する。図４０は、Ｎチャネル読み出しで第１及び第２のベリファイを行う際の各配線の電位を示すタイミングチャートである。ノードＳＥＮ、信号線ＳＴＢ及び信号線ＨＨＬは、図３８で説明したセンスアンプユニットにおける配線の電位である。シーケンサ１２１は、信号線ＳＴＢにより、ノードＳＥＮの電位、すなわちビット線ＢＬからソース線ＳＬに流れた電流をセンスするタイミング制御を行う。また、シーケンサ１２１は、信号線ＨＨＬにより、キャパシタ素子５０、すなわちノードＳＥＮへの充電のタイミング制御を行う。
【０２７６】
図示するように時刻ｔ１〜ｔ３において、ビット線ＢＬ、ソース線ＳＬ、ウェル配線ＣＰＷＥＬＬ、セレクトゲート線ＳＧＤ、ＳＧＳ、選択ワード線ＷＬ、及び非選択ワード線ＷＬに印加される電圧は、図２６で説明した時刻ｔ１〜ｔ３と同じである。
【０２７７】
この状態において、メモリセルトランジスタＭＴがオフ状態（“０”状態）の場合、ビット線ＢＬからソース線側に電流が流れないため、ビット線ＢＬの電位はＶＢＬ（例えば２Ｖ）となる。またメモリセルトランジスタＭＴがオン状態（“１”状態）の場合、上記で説明した通り、ビット線ＢＬからソース線側に電流が流れるため、ビット線ＢＬの電位はＶＢＬ（例えば２Ｖ）以下となる。
【０２７８】
また時刻ｔ３で、シーケンサ１２１は、信号線ＨＨＬにＶ４４（例えばＶＤＤＳＡ）＋ＶｔｈＮを印加し、ノードＳＥＮ及びキャパシタ素子５０をＶ４４（例えばＶＤＤＳＡ）まで充電する。
【０２７９】
次に時刻ｔ４で、シーケンサ１２１は、信号線ＨＬＬに０Ｖを印加し、センスアンプユニットのトランジスタ４４をオフ状態とする。メモリセルトランジスタＭＴがオフ状態（“０”状態）の場合、ビット線ＢＬからソース線側に電流が流れないため、ノードＳＥＮの電位はＶ４４（例えばＶＤＤＳＡ）をほぼ維持する。一方、メモリセルトランジスタＭＴがオン状態（“１”状態）の場合、ビット線ＢＬからソース線ＳＬに電流が流れるためノードＳＥＮが放電され、Ｖ４２まで下がっていく。
【０２８０】
次に時刻ｔ５で、シーケンサ１２１は、信号線ＳＴＢにＶｓｔｂ＿ｐｏｓを印加する。Ｖｓｔｂ＿ｐｏｓは、Ｎチャネル読み出しにおいて、センスアンプユニットのトランジスタ４８をオン状態にするための正電圧である。これによりセンスアンプ１１３は、ビット線ＢＬの電流をセンス（ストローブ）する。すなわち、シーケンサ１２１は、時刻ｔ４〜ｔ５の間（センス時間Ｔｓ＿ｐｏｓ１）、ノードＳＥＮの放電を行い、センスアンプユニットのトランジスタ４７がオン状態かオフ状態かにより第１のベリファイの判定を行う。
【０２８１】
次に時刻ｔ６で、シーケンサ１２１は、第１のベリファイにフェイルしたビット線ＢＬに０Ｖを印加する。すなわちシーケンサは、図３８で説明した信号線ＢＬＸを“Ｌ”レベルにする。これにより、ノードＳＥＮも０Ｖまで放電される。
【０２８２】
次に時刻ｔ７〜ｔ９で、時刻ｔ３〜ｔ５と同様に、第１のベリファイをパスしたメモリセルトランジスタＭＴを対象とした第２のベリファイを行う。
【０２８３】
次に時刻ｔ１０で、ロウデコーダ１１２は、セレクトゲート線ＳＧＤ、ＳＧＳ，ワード線ＷＬに０Ｖを印加する。またセンスアンプ１１３は、全ビット線に０Ｖを印加する。またソース線ドライバ１１４は、ソース線ＳＬに０Ｖを印加する。またウェルドライバ１１５は、ウェル配線ＣＰＷＥＬＬに０Ｖを印加する。これにより第１及び第２のベリファイが終了する。
【０２８４】
４．３．２  ベリファイをＰチャネル読み出しで行う場合の電圧について
次にベリファイをＰチャネル読み出しで行う場合における各配線の電圧関係について説明する。図４１は、Ｐチャネル読み出しで第１及び第２のベリファイを行う際の各配線の電位を示すタイミングチャートである。
【０２８５】
図示するように、ビット線ＢＬと、センスアンプユニットにおけるノードＳＥＮ、信号線ＳＴＢ及びＨＨＬの各電圧は、図４０で説明した電圧と同じである。また、ソース線ＳＬ、ウェル配線ＣＰＷＥＬＬ、セレクトゲート線ＳＧＤ、ＳＧＳ、及びワード線ＷＬに印加される電圧は、図２７で説明した電圧と同じである。
【０２８６】
この状態において、シーケンサ１２１は、時刻ｔ５とｔ９で、信号線ＳＴＢにＶｓｔｂ＿ｎｅｇを印加する。Ｖｓｔｂ＿ｎｅｇは、Ｐチャネル読み出しにおいてセンスアンプユニットのトランジスタ４８をオン状態にするための電圧である。これにより、センスアンプ１１３は、ビット線ＢＬの電流をセンス（ストローブ）し、第１及び第２のベリファイを実行する。
【０２８７】
４．４  本実施形態に係る効果
本実施形態に係る構成であると、上記第１乃至第３実施形態と同様の効果が得られる。
【０２８８】
また、本実施形態に係る構成では、電流センス方式のセンスアンプを適用出来、またセンス時間を変更することにより、第１及び第２のベリファイを実行することが出来る。従って、電流センス方式のセンスアンプにおいても、閾値の細かな制御が可能となり、閾値分布幅が小さくなるように書き込みをすることが出来る。
【０２８９】
また、本実施形態に係る構成では、第１のベリファイをフェイルしたメモリセルトランジスタＭＴに対応するビット線ＢＬには０Ｖを印加して、第２のベリファイを実行することが出来る。これにより、第２のベリファイでは、ビット線ＢＬからソース線ＳＬに流れる電流を減らすことが出来るため、ソース線側の電圧変動を抑制し、読み出し精度を向上することが出来る。
【０２９０】
なお、本例では第１のベリファイと第２のベリファイを連続して実行する場合について説明したが、第１のベリファイ、または第２のベリファイだけを実行しても良い。例えば図３５で説明した通り、ステップＳ１５１において第１のベリファイをフェイルした場合、第２のベリファイを実行する必要が無い。また、ステップＳ１５２において第２のベリファイをフェイルした場合、第２のベリファイだけを実行すれば良い。このように必要なベリファイだけを実行することにより、書き込み時間を短くすることが出来る。
【０２９１】
更に、本例では、第１と第２の２段階のプログラムで行ったが、３段階以上のプログラムで実行しても良い。この場合、センス時間もプログラムと同じ段階に分けて行う。
【０２９２】
５．第５実施形態
次に、第５実施形態に係るメモリシステムについて説明する。本実施形態は、上記第１乃至第４実施形態において、異なる閾値の変動量を有する“Ｅ”レベルのプログラムと“ＬＭ”レベルのプログラムを、１つのプログラムのループでおこなうものである。以下では第１乃至第４実施形態と異なる点についてのみ説明する。
【０２９３】
５．１  データの書き込み動作について  
本実施形態に係るデータの書き込み動作について説明する。
【０２９４】
５．１．１  書き込み動作の全体的な流れについて
まず、書き込み動作の全体の流れについて説明する。図４２〜図４４は、プログラム時の動作の流れを示すフローチャートである。図示するように、図１０及び図１１と同様に、シーケンサ１２１は、コントローラ２００から書き込み命令を受信すると、タイプ情報の有無、及び選択されたページのタイプ情報がポジティブタイプかネガティブタイプかを確認する（ステップＳ１００〜Ｓ１０３）。そしてシーケンサ１２１は、ポジティブモードプログラム（ステップＳ１０４）、またはネガティブモードプログラム（ステップＳ１１７）を選択する。
【０２９５】
シーケンサ１２１は、ポジティブモードプログラムを選択する（ステップＳ１０４）と、まずネガティブ・プリベリファイを実行する（ステップＳ１０５）。
【０２９６】
次にシーケンサ１２１は、コントローラ２００から受信した書き込みデータと、ネガティブ・プリベリファイの結果から、“Ｅ”レベルを書き込むメモリセルトランジスタＭＴと、“ＬＭｐ”レベルを書き込むメモリセルトランジスタＭＴの両方があるか確認する（ステップＳ１６０）。
【０２９７】
図４５は、“Ｅ”レベルと“ＬＭｐ”レベルの書き込み対象を示す閾値分布図である。図示するように、“Ｅ”レベルを書き込む対象となるのは、ネガティブ・プリベリファイをフェイルした、すなわちＶｎｅｇ未満の閾値を有するメモリセルトランジスタＭＴのうち、“Ｅ”または“Ａｐ”レベルを書き込むべきメモリセルトランジスタＭＴである。また“ＬＭｐ”を書き込む対象となるのは、ネガティブ・プリベリファイの結果は関係なく、“Ｂｐ”または“Ｃｐ”レベルを書き込むべき全てのメモリセルトランジスタＭＴである。
【０２９８】
引き続き図４２〜図４４について説明する。つまりシーケンサ１２１は、ステップＳ１６０において、書き込みデータの中に、“Ｅ”レベルまたは“Ａｐ”レベルのいずれかと、“Ｂｐ”レベルまたは“Ｃｐ”レベルのいずれかの両方が含まれているか否かを確認する。そして含まれていた場合には、“Ｅ”レベルまたは“Ａｐ”レベルを書き込むべきメモリセルトランジスタＭＴの閾値がＶｎｅｇ未満であるか否かを確認する。そしてＶｎｅｇ未満であった場合に、シーケンサ１２１は、“Ｅ”レベルを書き込むメモリセルトランジスタＭＴと“ＬＭｐ”レベルを書き込むメモリセルトランジスタＭＴの両方がある、と判断する。
【０２９９】
“Ｅ”レベルと“ＬＭｐ”レベルを書き込むメモリセルトランジスタＭＴが両方ある場合（ステップＳ１６０、Ｙｅｓ）、シーケンサ１２１は、第１実施形態で説明した“Ｅ”ｐｏｓプログラムと“ＬＭｐ”プログラムを連続して行う（以下、「“Ｅ”＿“ＬＭｐ”プログラム」呼ぶ。）。この際、ロウデコーダ１１２は、それぞれのプログラムにおいて、選択ワード線ＷＬに異なるＶＰＧＭｐを印加し、異なる閾値の変動量とする（電圧の詳細については５．２で後述する）。
【０３００】
次にシーケンサ１２１は、“Ｅ”レベルと“ＬＭｐ”レベルのベリファイを実行する（ステップＳ１６２）。“Ｅ”＿“ＬＭｐ”プログラムと同様に、シーケンサ１２１は、“Ｅ”レベルと“ＬＭｐ”レベルのベリファイを連続して行う。この際、ロウデコーダ１１２は、それぞれのベリファイレベルＶｎｅｇ及びＶＬＭｐに対応して、選択ワード線ＷＬに異なるＶＣＧＲＶｐを印加する（電圧の詳細については５．３．１で後述する）。
【０３０１】
そして“Ｅ”レベルと“ＬＭｐ”レベルの両方のベリファイがフェイルしている場合（ステップＳ１６３、Ｎｏ）、シーケンサ１２１は、“Ｅ”レベルと“ＬＭｐ”レベルの少なくとも１つはベリファイをパスするか、予め設定された上限回数に達するまで、ステップＳ１６１及びＳ１６２の処理を繰り返す。
【０３０２】
また“Ｅ”レベルと“ＬＭｐ”レベルを書き込むメモリセルトランジスタＭＴの少なくとも一方がない場合（ステップＳ１６０、Ｎｏ）、シーケンサ１２１は、上記の“Ｅ”＿“ＬＭｐ”プログラムをスキップする。
【０３０３】
次にステップＳ１６２において、“ＬＭｐ”レベルのベリファイにはパスしたが“Ｅ”レベルのベリファイにフェイルした場合（ステップＳ１６４、Ｙｅｓ）、シーケンサ１２１は、“Ｅ”ｐｏｓプログラムを実行する（ステップＳ１０７〜Ｓ１０９）。ステップＳ１６０の判断においてＮｏと判断され、且つ書き込みデータに“Ｅ”または“Ａｐ”レベルが含まれている場合も同様である。そして、“Ｅ”ｐｏｓプログラムが完了する（ステップＳ１０９、Ｙｅｓ）と、シーケンサ１２１は、“Ａｐ”〜“Ｃｐ”プログラムを実行する（ステップＳ１１４〜Ｓ１１６）。
【０３０４】
他方で、ステップＳ１６２において、“Ｅ”レベルのベリファイにはパスしたが“ＬＭｐ”レベルのベリファイにフェイルした場合（ステップＳ１６４、Ｎｏ、ステップＳ１６５、Ｙｅｓ）、シーケンサ１２１は、“ＬＭｐ”プログラムを実行する（ステップＳ１１１〜Ｓ１１３）。ステップＳ１６０の判断においてＮｏと判断され、且つ書き込みデータに“Ｂｐ”または“Ｃｐ”レベルが含まれている場合も同様である。そして、“ＬＭｐ”プログラムが完了する（ステップＳ１１３、Ｙｅｓ）と、図１０及び図１１で説明したのと同様に、シーケンサ１２１は、“Ａｐ”〜“Ｃｐ”プログラムを実行する（ステップＳ１１４〜Ｓ１１６）。
【０３０５】
また、ステップＳ１６２において、“Ｅ”レベルのベリファイ及び“ＬＭｐ”レベルのベリファイの両方にパスした場合、つまり、“Ｅ”レベルへの書き込みと“ＬＭｐ”レベルへの書き込みとが両方に完了した場合（ステップＳ１６４、Ｎｏ、ステップＳ１６５、Ｎｏ）にはシーケンサ１２１は、ステップＳ１０７〜Ｓ１０９及びＳ１１１〜Ｓ１１３の処理を行うことなく、Ａｐ”〜“Ｃｐ”レベルへのプログラムを実行する。
【０３０６】
ステップＳ１０１及びステップＳ１０３において、ネガティブモードプログラムを選択した場合(ステップＳ１１７)、シーケンサ１２１は、ポジティブ・プリベリファイ（ステップＳ１１８）を実施し、“Ｅ”レベルと“ＬＭｎ”レベルへのプログラム（以下、「“Ｅ”＿“ＬＭｎ”プログラム」と呼ぶ）が必要か確認する（ステップＳ１６６）。つまりシーケンサ１２１は、書き込みデータの中に、“Ｅ”レベルまたは“Ａｎ”レベルのいずれかと、“Ｂｎ”レベルまたは“Ｃｎ”レベルのいずれかの両方が含まれているか否かを確認する。そして含まれていた場合には、“Ｅ”レベルまたは“Ａｎ”レベルを書き込むべきメモリセルトランジスタＭＴの閾値がＶｐｏｓ以上であるか否かを確認する。そしてＶｐｏｓ以上であった場合に、シーケンサ１２１は、“Ｅ”レベルを書き込むメモリセルトランジスタＭＴと“ＬＭｐ”レベルを書き込むメモリセルトランジスタＭＴの両方がある、と判断する。
【０３０７】
“Ｅ”レベルと“ＬＭｎ”レベルを書き込むメモリセルトランジスタＭＴが両方ある場合（ステップＳ１６６、Ｙｅｓ）、シーケンサは、“Ｅ”＿“ＬＭｐ”プログラムと同様に“Ｅ”＿“ＬＭｎ”プログラムを実行する（ステップＳ１６７〜Ｓ１６９）。
【０３０８】
“Ｅ”レベルか“ＬＭｎ”レベルのベリファイの少なくとも１つがパスした場合（ステップＳ１６９、Ｙｅｓ）、シーケンサ１２１は、“Ｅ”レベルベリファイをフェイルしていれば“Ｅ”ｎｅｇプログラム（ステップＳ１２０〜Ｓ１２２）を、“ＬＭｎ”レベルのベリファイをフェイルしていれば“ＬＭｎ”プログラム（ステップＳ１２４〜Ｓ１２６）を実行する。そして“Ｅ”レベルと“ＬＭｎ”レベルの両方の書き込みが完了すると、シーケンサ１２１は、図１０及び図１１で説明したのと同様に、“Ａｎ”〜“Ｃｎ”プログラムを実行する（ステップＳ１２７〜Ｓ１２９）。
【０３０９】
５．２  書き込み時の電圧について
次にデータの書き込み時における配線の電圧関係について説明する。
【０３１０】
５．２．１  “Ｅ”＿“ＬＭｐ”プログラムの電圧について
まず“Ｅ”＿“ＬＭｐ”プログラムにおける各配線の電圧関係について説明する。図４６は、“Ｅ”＿“ＬＭｐ”プログラム時の各配線の電位を示すタイミングチャートである。
【０３１１】
図示するように、本実施形態では、“Ｅ”レベルと“ＬＭｐ”レベルのプログラムを連続して行うため、図１８で説明したプログラムを２回連続して行う場合に相当する。従って、時刻ｔ１〜ｔ６における各配線の電圧は、図１８で説明した通りであり、時刻ｔ６〜ｔ９における各配線の電圧は、時刻ｔ３〜ｔ６と同じである。なお、本実施形態では、“Ｅ”を書き込む場合のＶＰＧＭをＶＰＧＭｐ１とし、“ＬＭｐ”を書き込む場合のＶＰＧＭをＶＰＧＭｐ２とする。そして、ＶＰＧＭｐ１とＶＰＧＭｐ２は、０＜ＶＰＧＭｐ１＜ＶＰＧＭｐ２の関係である。
【０３１２】
５．２．２  “Ｅ”＿“ＬＭｎ”プログラムの電圧について
次に“Ｅ”＿“ＬＭｎ”プログラムにおける各配線の電圧関係について説明する。図４７は、“Ｅ”＿“ＬＭｎ”プログラム時の各配線の電位を示すタイミングチャートである。
【０３１３】
図示するように、本実施形態では、“Ｅ”レベルと“ＬＭｎ”レベルの書き込みを連続して行うため、図２１で説明したプログラムを２回連続して行う場合に相当する。従って、時刻ｔ１〜ｔ４における各配線の電圧は、図２１で説明した通りである。時刻ｔ４〜ｔ５では、プログラムの対象となるビット線ＢＬが異なるため、センスアンプ１１３は、一旦、全てのビット線ＢＬに０Ｖを印加している。そして時刻ｔ５〜ｔ７における各配線の電圧は、時刻ｔ２〜ｔ３と同じである。なお、本実施形態では、“Ｅ”を書き込む場合のＶＰＧＭをＶＰＧＭｎ１とし、“ＬＭｎ”を書き込む場合のＶＰＧＭをＶＰＧＭｎ２とする。そして、ＶＰＧＭｎ１とＶＰＧＭｎ２は、０Ｖ＞ＶＰＧＭｎ１＞ＶＰＧＭｎ２の関係である。
【０３１４】
５．３  ベリファイについて  
本実施形態におけるベリファイでは、第１実施形態で説明したＮチャネル読み出しとＰチャネル読み出しの両方を適用出来る。本実施形態では、“Ｅ”＿“ＬＭｐ”プログラム、すなわちポジティブモードプログラムにおけるベリファイをＮチャネル読み出しで行う場合と、“Ｅ”＿“ＬＭｎ”プログラム、すなわちネガティブモードプログラムにおけるベリファイをＰチャネル読み出しで行う場合の各配線の電圧関係について説明する。なお、“Ｅ”＿“ＬＭｐ”プログラムのベリファイをＰチャネル読み出しで行っても良く、“Ｅ”＿“ＬＭｎ”プログラムのベリファイをＮチャネル読み出しで行っても良い。
【０３１５】
５．３．１  “Ｅ”＿“ＬＭｐ”プログラムのベリファイについて
“Ｅ”＿“ＬＭｐ”プログラムのベリファイをＮチャネル読み出しで行う場合における各配線の電圧関係について説明する。図４８は、読み出し時の各配線の電位を示すタイミングチャートである。
【０３１６】
図示するように、本実施形態では、“Ｅ”レベルのベリファイと“ＬＭｐ”レベルのベリファイを連続して行うため、図２６で説明したＮチャネル読み出しを２回連続して行う場合に相当する。従って、時刻ｔ１〜ｔ６における各配線の電圧は、図２６で説明した通りであり、時刻ｔ７〜ｔ１０における各配線の電圧は、時刻ｔ３〜ｔ６と同じである。なお、本実施形態では、“Ｅ”レベルのベリファイに対応するＶＣＧＲＶをＶＣＧＲＶｐ１とし、“ＬＭｐ”ベリファイの場合のＶＣＧＲＶをＶＣＧＲＶｐ２とする。ＶＣＧＲＶｐ１とＶＣＧＲＶｐ２は、それぞれのベリファイレベルに対応するため、それぞれ略Ｖｎｅｇと略ＶＬＭｐとされる。よって、Ｖｎｅｇ＜ＶＬＭｐの関係にあるため、ＶＣＧＲＶｐ１とＶＧＣＲＶｐ２もＶＣＧＲＶｐ１＜ＶＣＧＲＶｐ２の関係となる。
【０３１７】
５．３．２  “Ｅ”＿“ＬＭｎ”プログラムのベリファイについて
“Ｅ”＿“ＬＭｎ”プログラムのベリファイをＰチャネル読み出しで行う場合における各配線の電圧関係について説明する。図４９は、読み出し時の各配線の電位を示すタイミングチャートである。
【０３１８】
図示するように、本実施形態では、“Ｅ”レベルのベリファイと“ＬＭｐ”レベルのベリファイを連続して行うため、図２７で説明したＰチャネル読み出しを２回連続して行う場合に相当する。なお、本実施形態では、“Ｅ”レベルのベリファイの場合のＶＣＧＲＶをＶＣＧＲＶｎ１とし、“ＬＭｐ”ベリファイの場合のＶＣＧＲＶをＶＣＧＲＶｎ２とする。ＶＣＧＲＶｎ１とＶＣＧＲＶｎ２は、それぞれのベリファイレベルに対応するため、それぞれ略Ｖｐｏｓと略ＶＬＭｎとされる。よって、Ｖｐｏｓ＞ＶＬＭｎの関係にあるため、ＶＣＧＲＶｎ１とＶＣＧＲＶｎ２も、ＶＣＧＲＶｎ１＞ＶＣＧＲＶｎ２の関係となる。
【０３１９】
５．４  本実施形態に係る効果
本実施形態に係る構成であると、上記第１乃至第４実施形態と同様の効果が得られる。
【０３２０】
また、本実施形態に係る構成では、“Ｅ”レベルの書き込みと“ＬＭ”レベルの書き込みを連続しておこなうため、プログラムの処理速度を向上することが出来る。
【０３２１】
また、本実施形態に係る構成では、“Ｅ”レベルを書き込む際のＶＰＧＭと“ＬＭ”レベルを書き込む際のＶＰＧＭを異なる値とし、それぞれの１回の書き込みにおける閾値の変動量を変えることが出来る。よって、“ＬＭ”レベルの閾値の変動量を大きくすることでプログラムループ回数を低減し、書き込み速度を向上出来る。
【０３２２】
なお、ＶＰＧＭｐ１とＶＰＧＭｐ２は、プログラムループを繰り返す毎に電圧値をステップアップしても良い。このときのステップアップ幅ＤＶＰＧＭｐは、ＶＰＧＭｐ１とＶＰＧＭｐ２でそれぞれ異なっても良い。
【０３２３】
更にＶＰＧＭｎ１とＶＰＧＭｎ２は、プログラムループを繰り返す毎に電圧値をステップダウンしても良い。このときのステップダウン幅ＤＶＰＧＭｎは、ＶＰＧＭｎ１とＶＰＧＭｎ２でそれぞれ異なっても良い。
【０３２４】
更に本実施形態に係る構成において、電圧センス方式のセンスアンプ１１３を用いることも出来る。この場合、各配線の電圧は、図４０及び図４１で説明したタイミングチャートにおいて第１のベリファイと第２のベリファイで異なるＶＣＧＲＶｐとする。そして、ベリファイの対象ではないビット線ＢＬの電位を０Ｖとする。
【０３２５】
６．第６実施形態
次に、第６実施形態に係るメモリシステムについて説明する。本実施形態は、上記第１乃至第５実施形態において、データを読み出す際、メモリセルトランジスタＭＴの閾値の変動に対応して、選択ワード線に印加する電圧ＶＣＧＲＶをシフトさせるものである。以下、第１乃至第５実施形態と異なる点についてのみ説明する。
【０３２６】
６．１  シフトテーブルについて  
次に、本実施形態に係るコントローラ２００の保持するシフトテーブルについて説明する。図５０はシフトテーブルの概念図である。
【０３２７】
本実施形態に係るＮＡＮＤ型フラッシュメモリ１００は、コントローラ２００の命令に従って、データを読み出す際、通常の読み出し動作（以下、「ノーマルリード」と呼ぶ）に加えて、リトライリード（retry read）動作を実行する。リトライリード動作とは、長期間のデータの保持やディスターブ等によりメモリセルトランジスタＭＴの閾値が変動することに応じて、選択ワード線ＷＬに印加する電圧ＶＣＧＲＶをシフトさせつつデータの読み出しを繰り返す動作である。詳細は、６．２の読み出し動作の項で説明する。
【０３２８】
図示するようにシフトテーブルは、“Ａｐ”、“Ｂｐ”、及び“Ｃｐ”レベルと、“Ａｎ”、“Ｂｎ”、及び“Ｃｎ”レベルとにつき、各リトライリードにおけるＶＣＧＲＶのシフト量を保持している。具体的には、“Ａｐ”レベルに対応するシフト量を、リトライ回数ｉ（ｉは１〜Ｌの自然数で、Ｌは１以上の自然数）に応じてＶｓ＿Ａｐ＿ｉとする。そして“Ｂｐ”レベルに対応するシフト量をＶｓ＿Ｂｐ＿ｉとし、“Ｃｐ”レベルに対応するシフト量をＶｓ＿Ｃｐ＿ｉとする。ネガティブタイプの場合も同様に、“Ａｎ”レベルに対応するシフト量をＶｓ＿Ａｎ＿ｉとする。そして“Ｂｎ”レベルに対応するシフト量をＶｓ＿Ｂｎ＿ｉとし、“Ｃｎ”レベルに対応するシフト量をＶｓ＿Ｃｎ＿ｉとする。
【０３２９】
図５０において、例えばノーマルリード時における“Ａｐ”、“Ｂｐ”、及び“Ｃｐ”レベルのデータを読み出すＶＣＧＲＶｐを、ＶＣＧＲＶ＿Ａｐ、ＶＣＧＲＶ＿Ｂｐ、及びＶＣＧＲＶ＿Ｃｐとし、それぞれのリードレベルと同じとする。リードレベルとは、読み出すデータに応じた閾値電圧であり、“Ａｐ”、“Ｂｐ”、及び“Ｃｐ”レベルのリードレベルはＡＶＨｐ、ＢＶＨｐ、ＣＶＨｐである。従って、ＶＣＧＲＶ＿Ａｐ＝ＡＶＨｐ、ＶＣＧＲＶ＿Ｂｐ＝ＢＶＨｐ、及びＶＣＧＲＶ＿Ｃｐ＝ＣＶＨｐとする。すると、１回目のリトライリードでは、“Ａｐ”レベルの読み出し時に選択ワード線ＷＬに印加される電圧は、ＡＶＨｐからＶｓ＿Ａｐ＿１だけシフトされ、ＡＶＨｐ＋Ｖｓ＿Ａｐ＿１となる。同様“Ｂｐ”レベルの読み出し時に選択ワード線ＷＬに印加される電圧は、ＢＶＨｐ＋Ｖｓ＿Ｂｐ＿１となり、“Ｂｐ”レベルの読み出し時に選択ワード線ＷＬに印加される電圧は、ＣＶＨｐ＋Ｖｓ＿Ｃｐ＿１となる。
【０３３０】
ネガティブタイプの場合も同様に、“Ａｎ”、“Ｂｎ”、及び“Ｃｎ” のデータを読み出すＶＣＧＲＶｐを、ＶＣＧＲＶ＿Ａｎ、ＶＣＧＲＶ＿Ｂｎ、及びＶＣＧＲＶ＿Ｃｎとし、それぞれのリードレベルと同じとする。従って、ＶＣＧＲＶ＿Ａｎ＝ＡＶＨｎ、ＶＣＧＲＶ＿Ｂｎ＝ＢＶＨｎ、及びＶＣＧＲＶ＿Ｃｎ＝ＣＶＨｎとする。すると、１回目のリトライリードにおいて、“Ａｎ”レベルの読み出し時に選択ワード線ＷＬに印加される電圧は、ＡＶＨｎ＋Ｖｓ＿Ａｎ＿１となり、“Ｂｎ”レベルの読み出し時に選択ワード線ＷＬに印加される電圧は、ＢＶＨｎ＋Ｖｓ＿Ｂｎ＿１となり、“Ｃｎ”レベルの読み出し時に選択ワード線ＷＬに印加される電圧は、ＣＶＨｎ＋Ｖｓ＿Ｃｎ＿１となる。以下の説明において、各シフト量を区別しない場合には、単にＶshiftと表記する。
【０３３１】
６．２  データの読み出し動作について
次に、本実施形態におけるデータの読み出し動作について説明する。
【０３３２】
６．２．１  読み出し動作時の流れについて
図５１は、本実施形態におけるデータ読み出し時のコントローラ２００の動作を示すフローチャートである。
【０３３３】
まずコントローラ２００のＣＰＵ２３０は、ホスト機器から読み出しアクセスされると、読み出し命令を発行し、ＮＡＮＤインターフェイス回路２５０は、これをＮＡＮＤ型フラッシュメモリ１００に送信する（ステップＳ２３０）。なお、読み出し命令の発行に関するコントローラ２００の動作に関する詳細は、図３０で説明した通りである。
【０３３４】
これに応答してＮＡＮＤ型フラッシュメモリ１００のシーケンサ１２１は、ノーマルリードを実行する（ステップＳ２３１）。すなわちシーケンサ１２１は、図２４で説明したフローに従い、データの読み出しを実行する。
【０３３５】
次にステップＳ２３１で読み出されたデータは、ＮＡＮＤインターフェイス回路２５０を介してコントローラ２００の例えばバッファメモリ２４０に保持される。そしてＥＣＣ回路２６０が、読み出されたデータにおける誤りの有無をチェックし、誤りがあった場合にはそれを訂正する（ステップＳ２３２）。誤りが無いか、あるいは誤り数（不良ビット数）が規定数以下であり誤りの訂正が可能な場合には（ステップＳ２３２、Ｐａｓｓ）、ＣＰＵ２３０は、データをホスト機器の送信し、当該ページからのデータの読み出し動作は完了する。
【０３３６】
他方で、誤り数（不良ビット数）が規定数を超えた場合には、ＥＣＣ回路２６０は誤りを訂正出来ない（ステップＳ２３２、Ｆａｉｌ）。従ってＣＰＵ２３０は、リトライリードを実行する。ＣＰＵ２３０は、まずリトライ回数ｊ（ｊは１以上の自然数）が予め設定された上限回数（１〜（Ｌ−１））を超えていないか確認する（ステップＳ２３３）。リトライ回数ｊが上限回数を超えた場合（ステップＳ２３３、Ｎｏ）、ＣＰＵ２３０は、同該ページからのデータの読み出し動作は失敗したと判断する。
【０３３７】
リトライ回数ｊが上限回数を超えていない場合（ステップＳ２３３、Ｙｅｓ）、ＣＰＵ２３０は、内蔵メモリ２２０から、リトライリードに関するシフトテーブルを読み出す。そしてＣＰＵ２３０は、電圧シフト量Ｖshiftに関する情報とリトライリードコマンドを発行する（ステップＳ２３４）。そしてＮＡＮＤインターフェイス回路２５０は、これらをＮＡＮＤ型フラッシュメモリ１００に送信する。
【０３３８】
ＮＡＮＤ型フラッシュメモリ１００は、受信したコマンドに応答して、リトライリードを実行する（ステップＳ２３５）。この際、ロウデコーダ１１２は、受信した電圧シフト量Ｖshiftの情報に応じでＶＣＧＲＶｐまたはＶＣＧＲＶｎを変更する。
【０３３９】
ステップＳ２３５で読み出されたデータは、ＮＡＮＤインターフェイス回路２５０を介してコントローラ２００の例えばバッファメモリ２４０に保持される。そして、ステップＳ２３２に戻り、ＥＣＣ回路２６０は、読み出されたデータにおける誤りの有無をチェックする。そして、リトライ動作は、ＥＣＣチェックをパスするか、リトライ回数Ｌが上限回数を超えるまで、繰り返し行われる。
【０３４０】
６．２．２  読み出し動作時における選択ワード線の電圧の変化について
図５２は、ポジティブタイプにおけるノーマルリードからＬ回目のリトライリードまでのＶＣＧＲＶｐの電圧値の変化を示すタイミングチャートである。なお本例では、ＶＣＧＲＶｐがマイナス側にシフトし、閾値の低い“Ａｐ”レベルに対応するシフト量Ｖｓ＿Ａｐ＿ｉが最も小さく、閾値の高い“Ｃｐ”レベルに対応するＶｓ＿Ｃｐ＿ｉが最も大きい場合について説明する。すなわちシフト量Ｖｓ＿Ａｐ＿ｉ、Ｖｓ＿Ｂｐ＿ｉ、及びＶｓ＿Ｃｐ＿ｉは、０Ｖ＞Ｖｓ＿Ａｐ＿ｉ＞Ｖｓ＿Ｂｐ＿ｉ＞Ｖｓ＿Ｃｐ＿ｉの関係となる。
【０３４１】
図示するように、シフト量Ｖｓ＿Ａｐ＿ｉ、Ｖｓ＿Ｂｐ＿ｉ、及びＶｓ＿Ｃｐ＿ｉは、それぞれ負の値である。よって“Ａｐ”、“Ｂｐ”、及び“Ｃｐ”レベルのＶＣＧＲＶｐは、リトライリードを繰り返す度にステップダウンする。例えば、“Ａｐ”レベルに関して、選択ワード線ＷＬに印加される電圧は、ＶＣＧＲＶ＿Ａｐ＞ＶＣＧＲＶ＿Ａｐ＋Ｖｓ＿Ａｐ＿１＞ＶＣＧＲＶ＿Ａｐ＋Ｖｓ＿Ａｐ＿２＞…＞ＶＣＧＲＶ＿Ａｐ＋Ｖｓ＿Ａｐ＿Ｌとなる。“Ｂｐ”、“Ｃｐ”レベルも同様である。
【０３４２】
図５３は、ネガティブタイプにおけるノーマルリードからＬ回目のリトライリードまでのＶＣＧＲＶｎの電圧値の変化を示すタイミングチャートである。なお本例では、ＶＣＧＲＶｎはプラス側にシフトし、閾値の高い“Ａｎ”レベルに対応するシフト量Ｖｓ＿Ａｎ＿ｉが最も小さく、閾値の低い“Ｃｐ”レベルに対応するＶｓ＿Ｃｎ＿ｉが最も大きい場合について説明する。すなわちシフト量Ｖｓ＿Ａｎ＿Ｌ〜Ｖｓ＿Ｃｎ＿Ｌは、０Ｖ＜Ｖｓ＿Ａｎ＿ｉ＜Ｖｓ＿Ｂｎ＿ｉ＜Ｖｓ＿Ｃｎ＿ｉの関係となる。
【０３４３】
図示するように、シフト量Ｖｓ＿Ａｎ＿ｉ、Ｖｓ＿Ｂｎ＿ｉ、及びＶｓ＿Ｃｎ＿ｉは、それぞれ正の値である。よって“Ａｎ”、“Ｂｎ”、及び“Ｃｎ”レベルのＶＣＧＲＶｎは、リトライリードを繰り返す度にステップアップされる。例えば、“Ａｎ”レベルに関して、選択ワード線ＷＬに印加される電圧は、ＶＣＧＲＶ＿Ａｎ＜ＶＣＧＲＶ＿Ａｎ＋Ｖｓ＿Ａｎ＿１＜ＶＣＧＲＶ＿Ａｎ＋Ｖｓ＿Ａｎ＿２＜…＜ＶＣＧＲＶ＿Ａｎ＋Ｖｓ＿Ａｎ＿Ｌとなる。“Ｂｎ”、“Ｃｎ”レベルも同様である。
【０３４４】
６．３  本実施形態に係る効果
本実施形態に係る構成であると、上記第１乃至第５実施形態と同様の効果が得られる。
【０３４５】
また本実施形態に係る構成では、ポジティブタイプとネガティブタイプで読み出し電圧をシフトすることにより、誤ったデータの読み出しを抑制し、読み出し動作の信頼性を向上できる。以下、本効果について説明する。
【０３４６】
まず本実施形態に係るメモリセルトランジスタＭＴの取り得る閾値分布について説明する。図５４及び図５５は、ポジティブタイプとネガティブタイプの閾値分布をそれぞれ示す。
【０３４７】
図５４の例では、例えば長期間のデータの保持またはディスターブ等の影響により電荷蓄積層２８の電荷が消失した場合、“Ａｐ”、“Ｂｐ”、及び“Ｃｐ”レベルにあるメモリセルトランジスタＭＴの閾値は、Ｅ”レベル側にシフトする。すなわちメモリセルトランジスタＭＴの閾値が低下する。このため読み出しの際、ＶＣＧＲＶ、すなわちリードレベルがそのままだと、メモリセルトランジスタＭＴが誤動作し、正しいデータは読み出せなくなる場合がある。
【０３４８】
これに対し、本実施形態では、“Ａｐ”レベルのリードレベルを、メモリセルトランジスタＭＴの閾値の変動量に対応して、Ｖｓ＿Ａｐ＿ｉ（＜０Ｖ）だけ“Ｅ”レベル側にシフトさせ、ＡＶＨｐ＋Ｖｓ＿Ａｐ＿ｉとする。 “Ｂｐ”レベルと“Ｃｐ”レベルの場合も同様に、シフト量をＶｓ＿Ｂｐ＿ｉ（＜０Ｖ）、Ｖｓ＿Ｃｐ＿ｉ（＜０Ｖ）とし、リードレベルを、ＢＶＨｐ＋Ｖｓ＿Ｂｐ＿ｉとＣＶＨｐ＋Ｖｓ＿Ｃｐ＿ｉとする。図５４の例では電荷蓄積層２８への電荷の注入量が多いほうが、閾値の変動量は大きい傾向にあるため、閾値の変動量の大きさに応じたシフト量の大きさは、|Ｖｓ＿Ａｐ＿ｉ｜≦｜Ｖｓ＿Ｂｐ＿ｉ｜≦｜Ｖｓ＿Ｃｐ＿ｉ｜の関係となる。
【０３４９】
また図５５の例では、電荷蓄積層２８からホールが消失した場合、“Ａｎ”、“Ｂｎ”、及び“Ｃｎ”レベルにあるメモリセルトランジスタＭＴの閾値は、“Ｅ”レベル側にシフトする。従って、ネガティブタイプの場合も同様に、“Ａｎ”、“Ｂｎ”、及び“Ｃｎ”のリードレベルを閾値の変動量に応じて、ＡＶＨｎ＋Ｖｓ＿Ａｎ＿ｉ、ＢＶＨｎ＋Ｖｓ＿Ｂｎ＿ｉ、及びＣＶＨｎ＋Ｖｓ＿Ｃｎ＿ｉとする。この場合、シフト量の大きさは、０Ｖ＜Ｖｓ＿Ａｎ＿ｉ≦Ｖｓ＿Ｂｎ＿ｉ≦Ｖｓ＿Ｃｎ＿ｉの関係となる。このように、メモリセルトランジスタＭＴの閾値が変動に対応しても、リードレベルをシフトさせて、リトライリードを実行することにより誤ったデータの読み出しを抑制することが出来る。
【０３５０】
なお、本例では、一例としてＶＣＧＲＶとリードレベルを同じ値とする場合について説明したが、ＶＣＧＲＶとリードレベルは異なる値であっても良い。例えばＶＣＧＲＶの値は、導電膜３０（ソース線ＳＬ）の電圧も考慮して、ソース線の電圧にリードレベルを加えた電圧としても良い。例えばソース線ＳＬにＶＳＲＣが印加されている場合、ＶＣＧＲＶ＿Ａｐ＝ＶＳＲＣ＋ＡＶＨｐ、ＶＣＧＲＶ＿Ｂｐ＝ＶＳＲＣ＋ＢＶＨｐ、及びＶＣＧＲＶ＿Ｃｐ＝ＶＳＲＣ＋ＣＶＨｐとしても良い。
【０３５１】
更に、本例では、電荷蓄積層２８から電荷またはホールが消失し、“Ｅ”レベル側にシフトする場合について説明したが、例えば他のメモリセルトランジスタＭＴへデータを書き込み際のプログラムモードの影響により、電荷またはホールが注入され“Ｅ”レベルから遠ざかる方向へシフトする場合があっても良い。この場合、ポジティブタイプの閾値を有するメモリセルトランジスタＭＴの閾値はプラス側にシフトし、ネガティブタイプの閾値を有するメモリセルトランジスタＭＴはマイナス側にシフトする。
【０３５２】
７．第７実施形態
次に第７実施形態に係るメモリシステムについて説明する。本実施形態は、上記第１乃至第６実施形態において、あるレベルに対する書き込み動作を複数回繰り返す際、最初の任意の回数のプログラムに対応するベリファイをスキップするものである。以下では第１乃至第６実施形態と異なる点についてのみ説明する。
【０３５３】
７．１  書き込み動作時の流れについて
以下では、“Ｅ”ｐｏｓプログラムまたは“Ｅ”ｎｅｇプログラムにおいて、最初の複数回のプログラムに対するベリファイを省略する場合を例に挙げて、本実施形態を説明する。図５６及び図５７は、本実施形態におけるプログラム時の動作の流れを示すフローチャートである。
【０３５４】
図示するように、本実施形態に係る書き込み動作は、第１実施形態で説明した図１０及び図１１において、最初のｍ（ｍは１以上の自然数）回目までのプログラムに対応するベリファイ動作を省略したものである。
【０３５５】
７．２  本実施形態に係る効果
本実施形態に係る構成であると、上記第１乃至第６実施形態と同様の効果が得られる。
【０３５６】
また本実施形態に係る構成では、ベリファイをスキップすることにより、書き込み動作の処理速度を向上することが出来る。以下、本効果について説明する。
【０３５７】
ある書き込み対象のメモリセルトランジスタＭＴの現在の閾値と、目標とする書き込みレベル（本実施形態では“Ｅ”レベル）との差が、１回のプログラムによる閾値変動量よりも大きい場合、すなわち１回の書き込みでは、目標とする閾値レベルまで変動させることが出来ない場合、シーケンサ１２１は、プログラムループを複数回繰り返す必要がある。つまり、その回数まではベリファイをフェイルすることが確実である。
【０３５８】
そこで本実施形態では、少なくとも１回のプログラムでは、メモリセルトランジスタＭＴの閾値を目標とする値にセット出来ないことが分かっており、且つ最低限必要なプログラム回数が分かっている場合には、このプログラムに対するベリファイをスキップする。なぜなら、たとえベリファイを行ったとしても、ベリファイにフェイルすることは明らかだからである。これにより、無用なベリファイ動作を行う必要が無く、書き込み動作速度を向上出来る。
【０３５９】
なお、上記の例では“Ｅ”レベルの書き込みにベリファイのスキップを適用したが、“ＬＭｐ”、“ＬＭｎ”、“Ａｐ”、“Ｂｐ”、“Ｃｐ”、“Ａｎ”、“Ｂｎ”、及び“Ｃｎ”レベルの書き込みにも適用出来る。
【０３６０】
８．第８実施形態
次に第８実施形態に係るメモリシステムについて説明する。本実施形態は、上記第１乃至第７実施形態において、メモリセルアレイ１１１の構成を変形したものである、以下では、第１乃至第７実施形態と異なる点についてのみ説明する。
【０３６１】
８．１  メモリセルアレイの構成について
図５８は、本実施形態に係るメモリセルアレイ１１１の回路図であり、いずれか１個のブロック内の構成を示している。図示するようにメモリセルアレイ１１１は、各ブロックＢＬＫ内に複数のメモリユニットＭＵ（ＭＵ１、ＭＵ２）を備えている。図５８では２つのメモリユニットＭＵのみが図示されているが、３つ以上であっても良く、その数は限定されるものではない。
【０３６２】
メモリユニットＭＵの各々は、例えば４つのストリンググループＧＲ（ＧＲ１〜ＧＲ４）を備えている。もちろん、ストリンググループＧＲの数は４つに限らず、３つ以下でもあっても良いし、５つ以上であっても良い。なお、メモリユニットＭＵ１及びＭＵ２間で区別する際には、メモリユニットＭＵ１のストリンググループＧＲをそれぞれＧＲ１−１〜ＧＲ４−１と呼び、メモリユニットＭＵ２のストリンググループＧＲをそれぞれＧＲ１−２〜ＧＲ４−２と呼ぶ。
【０３６３】
ストリンググループＧＲの各々は、例えば３つのＮＡＮＤストリングＳＲ（ＳＲ１〜ＳＲ３）を備えている。もちろん、ＮＡＮＤストリングＳＲの数は３つに限らず、４つ以上であっても良い。ＮＡＮＤストリングＳＲの各々は、選択トランジスタＳＴ１及びＳＴ２、並びに４つのメモリセルトランジスタＭＴ（ＭＴ１〜ＭＴ４）を備えている。メモリセルトランジスタＭＴの数は４つに限らず、５つ以上であっても良いし、３つ以下であっても良い。メモリセルトランジスタＭＴは、選択トランジスタＳＴ１のソースと選択トランジスタＳＴ２のドレインとの間に直列接続されている。
【０３６４】
ストリンググループＧＲ内において、３つのＮＡＮＤストリングＳＲ１〜ＳＲ３は、半導体基板上方に順次積層されており、ＮＡＮＤストリングＳＲ１が最下層に形成され、ＮＡＮＤストリングＳＲ２が中間層に形成され、ＮＡＮＤストリングＳＲ３が最上層に形成される。そして、選択トランジスタＳＴ１のゲートは、セレクトゲート線ＧＳＬ２に共通に接続され、選択トランジスタＳＴ２のゲートは、セレクトゲート線ＧＳＬ１に共通に接続されている。さらに同一列に位置するメモリセルトランジスタＭＴの制御ゲートは同一のワード線ＷＬに接続されている。更に、あるストリンググループＧＲ内の３つの選択トランジスタＳＴ１のドレインは、ビット線ＢＬに共通に接続され、選択トランジスタＳＴ２のソースはそれぞれ異なるソース線ＳＬに接続されている。
【０３６５】
例えばメモリユニットＭＵ１に着目すると、ストリンググループＧＲ１−１のＮＡＮＤストリングＳＲ１〜ＳＲ３のドレイン端はビット線ＢＬ１に共通に接続され、ソース端はそれぞれソース線ＳＬ１〜ＳＬ３に接続されている。またストリンググループＧＲ２−１のＮＡＮＤストリングＳＲ１〜ＳＲ３のドレイン端はビット線ＢＬ２に共通に接続され、ソース端はそれぞれソース線ＳＬ１〜ＳＬ３に接続されている。更にストリンググループＧＲ３−１のＮＡＮＤストリングＳＲ１〜ＳＲ３のドレイン端はビット線ＢＬ３に共通に接続され、ソース端はそれぞれソース線ＳＬ１〜ＳＬ３に接続されている。同様に、ストリンググループＧＲ４−１のＮＡＮＤストリングＳＲ１〜ＳＲ３のドレイン端はビット線ＢＬ４に共通に接続され、ソース端はそれぞれソース線ＳＬ１〜ＳＬ３に接続されている。
【０３６６】
メモリユニットＭＵ２についても同様であり、ストリンググループＧＲ１−２〜ＧＲ４−２のドレイン端は、ビット線ＢＬ５〜ＢＬ８にそれぞれ接続されている。他方で、ストリンググループＧＲ１−２〜ＧＲ４−２のＮＡＮＤストリングＳＲ１〜ＳＲ３のソース端は、ソース線ＳＬ１〜ＳＬ３にそれぞれ接続されている。
【０３６７】
従って、各メモリユニットＭＵに対応しているビット線ＢＬの本数は、１つのメモリユニットＭＵに含まれるストリンググループＧＲの総数に対応する。
【０３６８】
上記構成において、各メモリユニットＭＵから１つずつ選択されたＮＡＮＤストリングＳＲにおける同一ワード線ＷＬに接続された複数のメモリセルトランジスタＭＴの集合が、「ページ」と呼ばれる単位となる。そして、データの書き込み及び読み出しはページ単位で行われる。
【０３６９】
図５９は、メモリユニットＭＵの斜視図であり、また、図６０は、メモリユニットＭＵの平面図であり、図６１は、図６０における６１−６１線に沿った断面図であり、図６２は、図６０における６２−６２線に沿った断面図であり、図６３は、図６０における６３−６３線に沿った断面図である。
【０３７０】
図示するように、半導体基板６０上には絶縁膜６１が形成され、絶縁膜６１上にメモリセルアレイ１１１が形成される。
【０３７１】
絶縁膜６１上には、半導体基板６０表面に対する垂直方向である第１方向に直交する第２方向に沿ったストライプ形状の、例えば４つのフィン型構造６４（６４−１〜６４−４）が形成されることで、１つのメモリユニットＭＵが形成されている。フィン型構造６４の各々は、交互に積層された絶縁膜６２（６２−１〜６２−４）及び半導体層６３（６３−１〜６３−３）を含む。このフィン型構造６４の各々が、図５８で説明したストリンググループＧＲに相当する。そして、最下層の半導体層６３−１がＮＡＮＤストリングＳＲ１の電流経路（チャネルが形成される領域）に相当し、最上層の半導体層６３−３がＮＡＮＤストリングＳＲ３の電流経路に相当し、その間に位置する半導体層６３−２がＮＡＮＤストリングＳＲ２の電流経路に相当する。
【０３７２】
フィン型構造６４の上面及び側面には、トンネル絶縁膜６５、電荷蓄積層６６、ブロック絶縁膜６７、及び導電膜６８が順次形成されている（図６１参照）。電荷蓄積層６６は例えば絶縁膜により形成される。また導電膜６８は例えば金属で形成され、ワード線ＷＬまたはセレクトゲート線ＧＳＬ１及びＧＳＬ２として機能する。ワード線ＷＬ及びセレクトゲート線ＧＳＬ１及びＧＳＬ２は、複数のメモリユニットＭＵ間で、複数のフィン型構造６４を跨ぐようにして形成される。
【０３７３】
図５９及び図６０に示すように本実施形態に係る構成は、複数のフィン型構造６４の一端部がメモリセルアレイ１１１の端部に引き出され、引き出された領域においてビット線ＢＬとそれぞれ接続され、他端部が共通に接続されて、且つソース線ＳＬに接続されたものである。
【０３７４】
より具体的には、フィン型構造６４−１〜６４−４の各々では、その一端側において、各半導体層６３−１〜６３−３を貫通し、これらの半導体層６３−１〜６３−３に接するコンタクトプラグＢＣ１〜ＢＣ４が形成される。そしてビット線ＢＬ１〜ＢＬ４は、これらのビット線コンタクトプラグＢＣ１〜ＢＣ４にそれぞれ接続されている（図６３参照）。
【０３７５】
他方で、フィン型構造６４−１〜６４−４の各々は、その他端部において、半導体層６３−１〜６３−３が階段状に引き出されている。そして、各半導体層６３−１〜６３−３の上面に、それぞれソース線コンタクトプラグＳＣ１〜ＳＣ３が形成され、これらはそれぞれソース線ＳＬ１〜ＳＬ３に接続されている（図６２参照）。
【０３７６】
また図６３に示すように、半導体層６３−１〜６３−３内にはＮ＋型拡散層６９及びＰ＋型拡散層７０が形成されている。より具体的には、Ｎ＋型拡散層６９は、選択トランジスタＳＴ１のドレイン領域として機能する。そしてビット線コンタクトＢＣは、Ｎ＋型拡散層６９を貫通し、Ｎ＋型拡散層６９に接するようにして設けられる。他方で、Ｐ＋型拡散層７０は、選択トランジスタＳＴ２のソース領域として機能する。そしてソース線コンタクトＳＣは、半導体層６３−１〜６３−３内の各Ｐ＋型拡散層７０上にそれぞれ設けられる。
【０３７７】
８．２  書き込み時の電圧について
次に本実施形態における書き込み動作時の各配線の電圧について説明する。本実施形態に係る書き込み動作の全体の流れは、第１実施形態と同じであり、そのフローチャートは図１０及び図１１に示す通りである。本実施形態に係る構成では、第１実施形態と異なり、ビット線側にＮ＋型拡散層６９が形成され、ソース線側にＰ＋型拡散層７０が形成されている。このため、書き込み動作時にビット線ＢＬ、ソース線ＳＬ、及びセレクトゲート線ＧＳＬ１、ＧＳＬ２に印加される電圧が第１実施形態と異なる。以下、第１実施形態と異なる点についてのみ説明する。
【０３７８】
８．２．１  ポジティブモードプログラム時の電圧について
まず本実施形態におけるポジティブモードプログラム時の各配線の電圧関係について説明する。図６４は、ポジティブモードプログラム時の各配線の電位を示すタイミングチャートである。
【０３７９】
図示するように、まず時刻ｔ１において、ロウデコーダ１１２は、セレクトゲート線ＧＳＬ２にＶｇｐ（例えば３．３Ｖ）を印加する。Ｖｇｐは、プログラム時において、選択トランジスタＳＴ１及びＳＴ２がＮチャネルトランジスタとして動作する際に、オン状態とするためにセレクトゲート線ＧＳＬ１またはＧＳＬ２に印加される正電圧である。そしてセンスアンプ１１３は、プログラム対象となるメモリセルトランジスタＭＴに対応するビット線ＢＬに、例えば０Ｖを印加し、プログラム対象ではないメモリセルトランジスタＭＴに対応するビット線ＢＬに、セレクトゲート線ＧＳＬ２と同電位のＶｇｐ（例えば３．３Ｖ）を印加する。これにより、プログラム対象のビット線ＢＬに対応する選択トランジスタＳＴ１はオン状態となり、プログラム対象ではないビット線ＢＬに対応する選択トランジスタＳＴ１はオフ状態となる。
【０３８０】
次に時刻ｔ２で、ロウデコーダ１１２は、全ワード線ＷＬにＶＰＡＳＳｐ（例えば７Ｖ）を印加する。これにより、プログラム対象のビット線ＢＬに対応するＮＡＮＤストリングＳＲでは、選択トランジスタＳＴ１がオン状態のため、半導体層６３に電荷が供給される。よってメモリセルトランジスタＭＴ１〜ＭＴ４、及び選択トランジスタＳＴ１には、Ｎチャネルが形成され、Ｎチャネルトランジスタとして動作する。一方、プログラム対象ではないビット線ＢＬに対応するＮＡＮＤストリングでは、選択トランジスタＳＴ１がオフ状態のため、半導体層６３に電荷が供給されない。
【０３８１】
次に時刻ｔ３で、ロウデコーダ１１２は、セレクトゲート線ＧＳＬ２に０Ｖを印加し、センスアンプ１１３は、全ビット線ＢＬに０Ｖを印加する。これにより全ての選択トランジスタＳＴ１はオフ状態となる。
【０３８２】
次に時刻ｔ４で、ロウデコーダ１１２は、セレクトゲート線ＧＳＬ１にＶＰＡＳＳｐ（例えば７Ｖ）を印加する。そしてソース線ドライバ１１４は、プログラム対象となるメモリセルトランジスタＭＴに対応するソース線ＳＬに、例えば０Ｖを印加し、プログラム対象ではないメモリセルトランジスタＭＴに対応するソース線ＳＬに、例えばセレクトゲート線ＧＳＬ１と同電位のＶＰＡＳＳｐを印加する。これにより、プログラム対象のソース線ＳＬに対応する選択トランジスタＳＴ２はオン状態となり、プログラム対象ではないソース線ＳＬに対応する選択トランジスタＳＴ２はオフ状態となる。
【０３８３】
次に時刻ｔ５で、ロウデコーダ１１２は、選択ワード線ＷＬにＶＰＧＭｐ（例えば２０Ｖ）を印加する。これにより、プログラム対象のメモリセルトランジスタＭＴでは、選択ワード線ＷＬと半導体層６３との電位差が大きくなる。よってＦＮトンネリングにより電荷蓄積層６６に電荷が注入される。一方、プログラム対象ではないメモリセルトランジスタＭＴでは、選択トランジスタＳＴ２がオフ状態のため、カップリングにより半導体層６３の電位も上昇する。このためＶＰＧＭｐを印加しても電位差は変わらず、電荷蓄積層６６に電荷が注入されない。
【０３８４】
次に時刻ｔ６で、ロウデコーダ１１２は、全ワード線ＷＬに０Ｖを印加し、ソース線ドライバ１１４は、プログラム対象ではないメモリセルトランジスタＭＴに対応するソース線ＳＬに０Ｖを印加する。これによりＦＮトンネリングによる電荷の注入は終了する。
【０３８５】
最後に時刻ｔ７で、ロウデコーダ１１２は、セレクトゲート線ＧＳＬ１に０Ｖを印加する。これによりプログラムは終了する。
【０３８６】
８．２．２  ネガティブモードプログラム時の電圧について
次に本実施形態におけるネガティブモードプログラム時の各配線の電圧関係について説明する。図６５は、ネガティブモードプログラム時の各配線の電位を示すタイミングチャートである。まず時刻ｔ１で、ロウデコーダ１１２は、セレクトゲート線ＧＳＬ１にＶｇｎ（例えば−３．３Ｖ）を印加する。そしてソース線ドライバ１１４は、選択されたページに対応するソース線ＳＬに例えば０Ｖを印加し、対応する選択トランジスタＳＴ２をオン状態とする。またソース線ドライバ１１４は、非選択のページに対応するソース線ＳＬに、セレクトゲート線ＧＳＬ１と同電位のＶｇｎ（例えば−３．３Ｖ）を印加し、対応する選択トランジスタＳＴ２をオフ状態とする。
【０３８７】
次に時刻ｔ２で、ロウデコーダ１１２は、全ワード線ＷＬにＶＰＡＳＳｎ（例えば−７Ｖ）を印加する。これにより、選択されたページに対応するＮＡＮＤストリングＳＲの半導体層６３には、ホールが供給される。よってメモリセルトランジスタＭＴ１〜ＭＴ４、及び選択トランジスタＳＴ２は、Ｐチャネルが形成され、Ｐチャネルトランジスタとして動作する。
【０３８８】
次に時刻ｔ３で、ロウデコーダ１１２は、セレクトゲート線ＧＳＬ１に例えば０Ｖを印加する。そしてソース線ドライバ１１４は、ソース線ＳＬに例えば０Ｖを印加する。これにより選択されたページに対応する選択トランジスタＳＴ２は、オフ状態となる。
【０３８９】
次に時刻ｔ４で、ロウデコーダ１１２は、セレクトゲート線ＧＳＬ２にＶＰＡＳＳｎ(例えば−７Ｖ)を印加する。またセンスアンプ１１３は、プログラム対象のビット線ＢＬに例えば０Ｖを印加し、プログラム対象ではないビット線ＢＬに、例えばセレクトゲート線ＧＳＬ２と同電位のＶＰＡＳＳｎ（例えば−７Ｖ）を印加する。これにより、プログラム対象のビット線ＢＬに対応する選択トランジスタＳＴ１はオン状態となり、プログラム対象ではないビット線ＢＬに対応する選択トランジスタＳＴ１はオフ状態となる。
【０３９０】
次に時刻ｔ５で、ロウデコーダ１１２は、選択ワード線ＷＬにＶＰＧＭｎを印加する。これにより、プログラム対象となるメモリセルトランジスタＭＴには、ホールが注入される（データが書き込まれる）。
【０３９１】
次に時刻ｔ６で、センスアンプ１１３は、ビット線ＢＬに０Ｖを印加する。ロウデコーダ１１２は、全ワード線ＷＬに０Ｖを印加する。これによりホールの注入は終了する。
【０３９２】
最後に時刻ｔ７で、ロウデコーダ１１２は、セレクトゲート線ＧＳＬ２に０Ｖを印加する。これによりプログラムは終了する。
【０３９３】
８．３  読み出し時の電圧について
次に本実施形態における読み出し動作時の各配線の電圧について説明する。本実施形態に係る読み出し動作の全体の流れは、第１実施形態と同じであり、そのフローチャートは図２４に示す通りである。以下、第１実施形態と異なる点についてのみ説明する。
【０３９４】
８．３．１  Ｎチャネル読み出しについて
まず本実施形態におけるＮチャネル読み出し時の各配線の電圧関係について説明する。図６６は、読み出し時の各配線の電位を示すタイミングチャートである。以下、第１実施形態と異なる点についてのみ説明する。
【０３９５】
図示するように、時刻ｔ１〜ｔ６で選択ワード線ＷＬ、非選択ワード線ＷＬ、セレクトゲート線ＧＳＬ２（図２６のＳＧＤ（選択）と同じ）、及びセレクトゲート線ＧＳＬ１（図２６のＳＧＳと同じ）に印加される電圧は図２６のｔ１〜ｔ６で説明した電圧と同じである。
【０３９６】
この状態において、時刻ｔ３で、シーケンサ１２１は、信号線ＢＬＣＬＡＭＰに電圧ＶＣＬＭＰを印加しトランジスタＮＭＯＳ１０をオン状態とする。この際、図５で説明したセンスアンプユニットにおいて、シーケンサ１２１は、電源に印加されるＶＰＲＥを例えば０Ｖとし、信号線ＢＬＰＲＥを“Ｈ”レベルにしてトランジスタＮＭＯＳ１１をオン状態とする。またソース線ドライバ１１４は、選択されたページに対応するソース線ＳＬに、ビット線ＢＬよりも高い電圧ＶＳＲＣ（例えば２Ｖ）を印加し、非選択のページに対応するソース線ＳＬに０Ｖを印加する。これにより、読み出し対象のメモリセルトランジスタＭＴがオン状態（“１”状態）の場合、ソース線ＳＬからビット線ＢＬに電流が流れる。よってビット線ＢＬは、ソース線側から供給される電流とセンスアンプ側に流れる電流が釣り合う状態となる。この時、ビット線ＢＬの電圧ＶＢＬ（例えば２Ｖ）は、最大でソース線ＳＬと同電位となる。またこの時、同時に図５に示すテンポラリ・データ・キャッシュ４３４の容量Ｃも最大でビット線ＢＬと同電位であるＶＢＬ（例えば２Ｖ）まで充電されている。また読み出し対象のメモリセルトランジスタＭＴがオフ状態（“０”状態）の場合、ソース線側から電流が供給されないため、ビット線ＢＬは０Ｖとなる。
【０３９７】
次に時刻ｔ４で、シーケンサ１２１は、信号線ＢＬＣＬＡＭＰに０Ｖを印加する。この際、信号線ＢＬＰＲＥにも０Ｖを印加する。そしてシーケンサ１２１はビット線ＢＬ、すなわち容量Ｃの電圧をセンスし、０”か“１”かを判定する。
【０３９８】
次に時刻ｔ５で、ソース線ドライバ１１４は、ソース線ＳＬに０Ｖを印加する。またシーケンサ１２１は、信号線ＢＬＣＬＡＭＰにＶＣＬＭＰを印加して、トランジスタＮＭＯＳ１１をオン状態にする。この際、シーケンサ１２１は、信号線ＢＬＰＲＥを“Ｈ”レベルにして、トランジスタＮＭＯＳ１１もオン状態にする。するとＶＰＲＥ(例えば０Ｖ)を印加する電源側に電流が流れ、ビット線ＢＬ及び容量Ｃは放電される。
【０３９９】
次に時刻ｔ６で、シーケンサ１２１は、信号線ＢＬＣＬＡＭＰ（及び信号線ＢＬＰＲＥ）に０Ｖを印加する。これによりデータの読み出しが完了する。
【０４００】
なお、ここでは１回のデータ読み出しについて説明しているが、例えば多値のデータを読み出す場合など、データの読み出しを複数回行う。この場合、時刻ｔ３〜ｔ６を繰り返し、ＶＣＧＲＶｐを異なる電圧とすることにより、異なる値の読み出しに対応出来る。
【０４０１】
更に本例では、時刻ｔ３〜ｔ４でセンスアンプユニットの信号線ＢＬＰＲＥを“Ｈ”レベルにして、ＶＰＲＥ(例えば０Ｖ)を印加する電源に電流を流す場合について説明したが、信号線ＢＬＰＲＥを“Ｌ”レベルにし、トランジスタＮＭＯＳ１１はオフ状態としても良い。この場合も容量ＣにはＶＢＬ（例えば２Ｖ）が充電される。
【０４０２】
８．３．２  Ｐチャネル読み出しについて
次に本実施形態におけるＰチャネル読み出し時の各配線の電圧関係について説明する。図６７は、読み出し時の各配線の電位を示すタイミングチャートである。以下、第１実施形態及び第１例と異なる点についてのみ説明する。
【０４０３】
図示するように、時刻ｔ１〜ｔ６で選択ワード線ＷＬ、非選択ワード線ＷＬ、セレクトゲート線ＧＳＬ２（図２７のＳＧＤ（選択）と同じ）、及びセレクトゲート線ＧＳＬ１（図２７のＳＧＳと同じ）に印加される電圧は図２７のｔ１〜ｔ６で説明した電圧と同じである。また、ビット線ＢＬ、ソース線ＳＬ、及び信号線ＢＬＣＬＡＭＰに印加される電圧は、図６６の時刻ｔ１〜ｔ６と同じである。
【０４０４】
８．４  本実施形態に係る効果
本実施形態に係る構成のメモリセルアレイを有する場合であっても、上記第１乃至第７実施形態と同様の効果が得られる。
【０４０５】
９．第９実施形態
次に、第９実施形態に係るメモリシステムについて説明する。本実施形態は、上記第１乃至第８実施形態におけるデータの消去動作に関するものである。本実施形態における消去動作とは、消去対象ブロックの全てのメモリセルトランジスタＭＴの閾値をネガティブタイプまたはポジティブタイプに統一させる動作のことを指す。
【０４０６】
上記第１乃至第８実施形態では、データが書き込みを繰り返すことで、１つのブロック内にネガティブタイプとポジティブタイプの閾値を有するメモリセルトランジスタＭＴが混在することになる。そこで本実施形態では、ホールの注入を行うことで消去対象ブロックの全てのメモリセルトランジスタＭＴの閾値をネガティブタイプとする。または、電荷を注入することにより、全てのメモリセルトランジスタＭＴの閾値をポジティブタイプとする。以下、第１乃至第８実施形態と異なる点についてのみ説明する。
【０４０７】
９．１  消去動作の流れについて
図６８は、ＮＡＮＤ型フラッシュメモリ１００における消去動作の流れを示すフローチャートである。
【０４０８】
図示するように、まずシーケンサ１２１は、コントローラ２００から消去命令を受信する（ステップＳ１８０）。シーケンサ１２１は、消去命令を受信すると、対象ブロックの消去をおこなう。すなわち、シーケンサ１２１は、全てのメモリセルトランジスタＭＴにホールまたは電荷を注入する（ステップＳ１８１）
次にシーケンサ１２１は消去ベリファイを実行する。消去ベリファイとは、消去が完了したか判定するためのベリファイ動作である。本実施形態では、例えばメモリセルトランジスタＭＴにホールを注入した場合、シーケンサ１２１は、メモリセルトランジスタＭＴの閾値がＡＶＨｐより小さい値であれば消去ベリファイをパスしたと判定し、ＡＶＨｐより大きい値であれば消去ベリファイをフェイルしたと判定する。また例えば、メモリセルトランジスタＭＴに電荷を注入した場合、シーケンサ１２１は、メモリセルトランジスタＭＴの閾値がＡＶＨｎより大きい値であればベリファイをパスしたと判定し、ＡＶＨｎより小さい値であればベリファイをフェイルしたと判定する。（ステップＳ１８２）。
【０４０９】
次に消去ベリファイをフェイルした場合（ステップＳ１８３、Ｎｏ）、ステップＳ１８１に戻り、再度消去を行う。以下、データの消去と消去ベリファイを含む一連の動作を消去ループと呼ぶ。消去ベリファイをパスするまで、あるいは予め設定された上限回数まで、消去ループは繰り返される。
【０４１０】
消去ベリファイをパスした場合（ステップＳ１８３、Ｙｅｓ）、シーケンサ１２１は、消去動作が完了したと判断する。
【０４１１】
そして、コントローラ２００のＣＰＵ２３０は、消去動作が正常に完了した場合、内蔵メモリ２２０の書き込み状況テーブルを更新する。例えばＣＰＵ２３０は、メモリセルトランジスタＭＴにホールを注入した場合には、タイプ情報をネガティブタイプに更新し、電荷を注入した場合には、タイプ情報をポジティブタイプに更新する。そして、ＣＰＵ２３０は、データの有効性を示す情報を“無効(Invalid)”に更新する。この場合、次にプログラムを行う際は、閾値のタイプ情報に基づいて、プログラムモードを決定する。
【０４１２】
あるいは、例えばＣＰＵ２３０は、消去動作により当該ブロックの閾値のタイプ情報を消去しても良い。すなわち、次にプログラムを行う際、書き込み状況テーブルにタイプ情報がないと、シーケンサ１２１は、予め設定されたプログラムを優先的に実行する。このため、消去動作の際、シーケンサ１２１は、優先的に実行されるように設定されたプログラムに対応できる閾値のタイプとなるように、ホールまたは電荷のどちらを注入するか選択する。具体的にはポジティブモードプログラムが優先的に実行されるように設定されている場合、シーケンサ１２１は、消去の際、閾値がネガティブタイプとなるようにホールを注入する。またネガティブモードプログラムが優先的に実行されるように設定されている場合、シーケンサ１２１は、消去の際、閾値がポジティブタイプとなるように電荷を注入する。
【０４１３】
９．２  消去動作時の電圧について
次に、本実施形態における消去動作時の各配線の電圧について説明する。図６９と図７０は、対象ブロックの全メモリセルトランジスタＭＴに電荷またはホールを注入する場合の各配線の電位をそれぞれ示すタイミングチャートである。図６９は、図１８で説明したポジティブモードプログラムにおいて、全セレクトゲート線ＳＧＤ及び全ワード線ＷＬが対象として選択されたものである。また図７０は、図２１で説明したネガティブモードプログラムにおいて、全セレクトゲート線ＳＧＤ及び全ワード線ＷＬが対象として選択されたものである。
【０４１４】
９．３  本実施形態に係る効果
本実施形態に係る構成を、上記第１乃至第８実施形態に適用出来る。
【０４１５】
また本実施形態における消去動作を適用することにより、ブロック内の閾値のタイプをポジティブタイプまたはネガティブタイプに統一することが出来る。従って、次にあるブロックの複数のページにプログラムを行う場合に、ポジティブモードプログラムまたはネガティブモードプログラムのいずれかを実行すれば良いため、シーケンサ１２１はプログラムモードを切り替えることなく、プログラムを実行出来る。従って、書き込み動作の処理速度を向上することが出来る。
【０４１６】
なお、本実施形態における消去動作は書き込み動作後に毎回行う必要はなく、例えば、定期的に決められた回数毎に実行しても良い。例えばあるブロックにおいて、特定のページが常にプログラムの対象となり、ページ間でプログラム回数が大きくばらつく状況が発生する場合がある。この場合、定期的に消去を行うことで、消去後は、書き込み回数が少ないページを選択できるようになる。よって、プログラム回数のばらつきが低減でき、プログラムの繰り返しによるメモリセルトランジスタＭＴの特性変動の差が、ページ間で大きくなるのを抑制することが出来る。従って、書き込み動作の信頼性を向上することが出来る。
【０４１７】
更に消去動作の際、消去対象となるブロックの全メモリセルトランジスタＭＴに、ホールまたは電荷を一括して注入したが、書き込み状況テーブルのタイプ情報に基づいて消去対象を選択しても良い。具体的には、消去の際、タイプ情報がネガティブタイプのページにだけ電荷を注入しても良いし、またはポジティブタイプのページにだけホールを注入するようにしても良い。
【０４１８】
更に、消去ベリファイをパスしたのち“Ｅ”レベルの書き込みを行っても良い。具体的には、消去によりメモリセルトランジスタＭＴの閾値がネガティブタイプの場合、“Ｅ”ｐｏｓプログラムを実行する。またメモリセルトランジスタＭＴの閾値がポジティブタイプの場合、“Ｅ”ｎｅｇプログラムを実行する。これにより、全てのメモリセルの閾値を“Ｅ”レベルとすることが出来る。
【０４１９】
１０．変形例等
上記実施形態に係るメモリシステムは、半導体記憶装置１００とコントローラ２００を備える（図１）。半導体記憶装置１００は、第１書き込み方式と第２書き込み方式のいずれかで書き込み動作を行う(図７及び図８)。コントローラ２００は、第１データと第１アドレスを受けて外部から書き込み指示を受けたとき、第１書き込み方式と第２書き込み方式のうち、第１アドレスに対応する書き込み方式を示すコマンドを半導体記憶装置１００に出力可能である（図２８）。
【０４２０】
上記実施形態を適用することにより、処理速度を向上したメモリシステムを提供出来る。
【０４２１】
なお、実施形態は上記説明した形態に限定されるものではなく、種々の変形が可能である。
【０４２２】
１０．１  第１変形例
まず第１変形例について説明する。上記実施形態において、“Ｅ”レベルをポジティブタイプとネガティブタイプで分けても良い。図７１は、本例におけるメモリセルトランジスタＭＴの閾値分布を示す。図示するように、ポジティブタイプの“Ｅ”レベルを“Ｅｐ”とし、ネガティブタイプの“Ｅ”レベルを“Ｅｎ”とする。“Ｅｐ”レベルは、０Ｖより大きく、ＡＶＨｐより小さい値を有し、“Ｅｎ”レベルは０Ｖより小さくＡＶＨｎより大きい値を有する。このように、ポジティブタイプとネガティブタイプで“Ｅ”レベルを別々に設定しても良い。
【０４２３】
図７２及び図７３は、“Ｅ”ｐｏｓプログラムと“Ｅ”ｎｅｇプログラムを示す閾値分布図である。図７２に示すように、“Ｅ”ｐｏｓプログラムの場合、ネガティブタイプの閾値を有する全てのメモリセルトランジスタＭＴが、プログラムの対象となる。従って、ネガティブ・プリベリファイを省略することが出来る。同様に、図７３に示すように、“Ｅ”ｎｅｇプログラムの場合、ポジティブタイプの閾値を有する全てのメモリセルトランジスタＭＴが、プログラムの対象となる。従って、ポジティブ・プリベリファイを省略することが出来る。
【０４２４】
具体的には、図１０、図１１、図４２〜図４４、図５６、及び図５７で説明したステップＳ１０５、Ｓ１１８を省略出来る。
【０４２５】
１０．２  第２変形例
次に第２変形例について説明する。上記実施形態において、“ＬＭｐ”プログラムの際、ＶＰＧＭｐのステップアップ幅と、閾値がＶＬＭｐを超えたメモリセルトランジスタ数をモニタすることにより、“Ａｐ”〜“Ｃｐ”プログラム時に印加するＶＰＧＭｐを補正しても良い（以下、補正したＶＰＧＭｐをＶＰＧＭｐ＿ＳＶとする）。図７４は、“ＬＭｐ”プログラムの際、選択ワード線ＷＬに印加するＶＰＧＭｐの電圧値と、メモリセルトランジスタＭＴの閾値の変動を示す図である。
【０４２６】
図示するように、本例ではＶＬＭｐよりも低いベリファイレベルＶＣＨＫｐを設定する。そして、閾値がＶＣＫＨｐ以上となるメモリセルトランジスタ数が規定値以上となった場合、その時のプログラムループ回数４回（図７４に示す4th pulse）と、ＶＰＧＭｐのステップアップ幅（ＤＶＰＧＭｐ×３（プログラムループ回数−１））と、閾値がＶＬＭｐを超えているメモリセルトランジスタ数とから、ＶＰＧＭｐ＿ＳＶを設定する。例えば、閾値がＶＬＭｐ以上となるメモリセルトランジスタ数が規定値よりも少ない場合は、ＶＰＧＭｐ＿ＳＶ＝ＶＰＧＭｐ＋ＤＶＰＧＭｐ×３とする。一方、閾値がＶＬＭｐ以上となるメモリセルトランジスタ数が規定値以上の多い場合は、ＶＰＧＭｐ＿ＳＶ＝ＶＰＧＭｐ＋ＤＶＰＧＭｐ×２．５とする。
【０４２７】
同様に、“ＬＭｎ”プログラムの際、プログラムループ回数と、ＶＰＧＭｎのステップダウン幅と、閾値がＶＬＭｎ以下となるメモリセルトランジスタ数をモニタすることにより、“Ａｎ”〜“Ｃｎ”プログラム時に印加するＶＰＧＭｎを補正しても良い（以下、補正したＶＰＧＭｎをＶＰＧＭｎ＿ＳＶとする）。図７５は、“ＬＭｎ”プログラムの際、選択ワード線ＷＬに印加するＶＰＧＭｎの電圧値と、メモリセルトランジスタＭＴの閾値の変動を示す図である。
【０４２８】
図示するように、本例ではＶＬＭｎよりも高いベリファイレベルＶＣＨＫｎを設定する。そして、“ＬＭｐ”プログラムと同様に、閾値がＶＣＫＨｎ以下となるメモリセルトランジスタ数が規定値以上となった場合、その時のプログラムループ回数４回（図７５に示す4th pulse）と、ＶＰＧＭｎのステップアップ幅（ＤＶＰＧＭｎ×３（プログラムループ回数−１））と、閾値がＶＬＭｎ以下となるメモリセルトランジスタ数とから、ＶＰＧＭｎ＿ＳＶを設定する。
【０４２９】
本例では、上記で説明した通り、ＶＰＧＭｐをＶＰＧＭｐ＿ＳＶとし、ＶＰＧＭｎをＶＰＧＭｎ＿ＳＶとすることにより、プログラムループの回数を低減することが出来る。従って、書き込み動作における処理速度を向上することが出来る。
【０４３０】
なお、本実施形態では、ＶＰＧＭｐ＿ＳＶの補正値を求める際、閾値がＶＣＨＫｐ以上となるメモリセルトランジスタ数が規定数以上となった場合のプログラムループ回数、ＶＰＧＭｐのステップアップ幅、閾値がＶＬＭｐ以上となるメモリセルトランジスタ数、の３つの条件を用いたが、２つ以下の条件でも良く、上記以外の条件を用いても良い。ＶＰＧＭｎ＿ＳＶの場合も同様である。
【０４３１】
１０．３  第３変形例
次に第３変形例について説明する。上記実施形態において、各配線に正電圧または負電圧のみを印加して、プリベリファイ及び“Ｅ”レベルのプログラムのベリファイを実行しても良い。図７６は、本例におけるネガティブ・プリベリファイ及び“Ｅ”ｐｏｓプログラムのベリファイをＮチャネル読み出しで行う際の各配線の電位を示すタイミングチャートである。また図７７は、本例におけるポジティブ・プリベリファイ及び“Ｅ”ｎｅｇプログラムのベリファイをＰチャネル読み出しで行う際の各配線の電位を示すタイミングチャートである。
【０４３２】
図７６に示すように、本例では、図２６で説明したタイミングチャートにおいて、ビット線ＢＬ、ソース線ＳＬ、ウェル配線ＣＰＷＥＬＬ、セレクトゲート線ＳＧＤ、ＳＧＳ、及び非選択ワード線ＷＬへの印加電圧に補正値として電圧Ｖｎｒが付加されている。Ｖｎｒは、Ｎチャネル読み出しにおいて各配線の電位を増加させるための補正値であり、Ｖｎｒ＞０である。Ｎチャネル読み出しでネガティブ・プリベリファイ及び“Ｅ”ｐｏｓプログラムのベリファイを実行する場合、ベリファイレベルであるＶｎｅｇが負の値であるため、ソース線ＳＬ（導電膜３０）の電位によっては、ＶＣＧＲＶｐが負の値となることがある。このような場合、Ｖｎｒを、Ｖｎｒ＞（｜Ｖｎｅｇ｜−ＶＳＲＣ）とする。これにより、導電膜３０には、｜Ｖｎｅｇ｜より大きな正電圧が印加されるため、ＶＣＧＲＶｐを正の値とすることが出来る。従って、各配線に印加される電圧は、全て０Ｖ以上の正電圧となる。この結果、ネガティブ・プリベリファイ、“Ｅ”ｐｏｓプログラム、及び“Ｅ”ｐｏｓプログラムのベリファイという一連の動作を行う際、各配線に印加される電圧は、全て０Ｖ以上の正電圧に出来る。
【０４３３】
またＰチャネル読み出しでポジティブ・プリベリファイ及び“Ｅ”ｎｅｇプログラムのベリファイを実行する場合、ビット線ＢＬ、ソース線ＳＬ、及びＶＣＧＲＶｎが、正電圧となる。これに対し本例では、図７７に示すように、選択ワード線ＷＬ以外の配線に、０Ｖではない電圧が印加される際、印加電圧の補正値として電圧Ｖｐｒが付加される。Ｖｐｒは、Ｐチャネル読み出しにおいて各配線の電位を減少せるための補正値であり、Ｖｐｒ＜０である。そしてビット線ＢＬの電位がＶｐｏｓより高い場合は、Ｖｐｒ＜−（ＶＢＬ＋ｄＶｎｅｇ）とする、またビット線ＢＬの電位がＶｐｏｓよりも低い場合は、Ｖｐｒ＜−Ｖｐｏｓとする。これにより、ビット線ＢＬ、ソース線ＳＬ、及びＶＣＧＲＶｐを負の値とすることが出来る。従って、各配線に印加される電圧は、全て０Ｖ以下の負電圧となる。この結果、ポジティブ・プリベリファイ、“Ｅ”ｎｅｇプログラム、及び“Ｅ”ｎｅｇプログラムのベリファイという一連の動作を行う際、各配線に印加される電圧は、全て０Ｖ以下の負電圧に出来る。
【０４３４】
上記で説明した通り、プリベリファイ及び“Ｅ”レベルの書き込み時に、本例におけるチャージポンプ１２２は、正電圧または負電圧のみを発生させれば良く、正電圧から負電圧または負電圧から正電圧への切り替えが不要となる。従ってチャージポンプ１２２は、電圧を発生させるセットアップ時間を短縮することが出来るため、プログラムの処理時間を短縮することが出来る。
【０４３５】
１０．４  その他の変形例
上記実施形態では、ポジティブモードプログラムとネガティブモードプログラムでは、注入するキャリアと、メモリセルトランジスタＭＴのチャネルが異なる。具体的には、ポジティブモードプログラムでは、メモリセルトランジスタＭＴはＮチャネルトランジスタとして動作し、電荷蓄積層２８に電荷が注入される。ネガティブモードプログラムでは、メモリセルトランジスタＭＴはＰチャネルトランジスタとして動作し、電荷蓄積層２８にホールを注入する。またメモリセルトランジスタＭＴは、Ｐチャネルトランジスタとして動作する場合の方が、Ｎチャネルトランジスタとして動作する場合よりも閾値の絶対値が大きくなる。
【０４３６】
このため、ベリファイレベルは、｜ＡＶＨｐ｜＜｜ＡＶＨｎ｜、｜ＢＶＨｐ｜＜｜ＢＶＨｎ｜、｜ＣＶＨｐ｜＜｜ＣＶＨｎ｜の関係とした方が好ましい。
【０４３７】
またＶＰＧＭｐとＶＰＧＭｎの大きさ（絶対値）を、｜ＶＰＧＭｐ｜＜｜ＶＰＧＭｎ｜の関係とした方が好ましい。
【０４３８】
またＤＶＰＧＭｐとＤＶＰＧＭｎの大きさ(絶対値)を、｜ＤＶＰＧＭｐ｜＜｜ＤＶＰＧＭｎ｜の関係とした方が好ましい。更に、“ＬＭｐ”プログラムと“ＬＭｎ”プログラムのプログラムループ回数が同じくらいになるように、ＤＶＰＧＭｐとＤＶＰＧＭｎの値を設定するとより好ましい。
【０４３９】
またＶＧＳｐとＶＳＧｎの大きさ（絶対値）は異なっていても良い。
【０４４０】
また第３実施形態における第１のベリファイにおいて、｜ＡＶＬｐ｜＜｜ＡＶＬｎ｜、｜ＢＶＬｐ｜＜｜ＢＶＬｎ｜、｜ＣＶＬｐ｜＜｜ＣＶＬｎ｜の関係とした方が好ましい。
【０４４１】
また第３及び第４実施形態において、第２の条件を用いたプログラム時にビット線ＢＬに印加する電圧の大きさ（絶対値）を、｜ＱＰＷｐ｜＜｜ＱＰＷｎ｜の関係とした方が好ましい。
【０４４２】
また変形例の第２例において、ＶＰＧＭｐ＿ＳＶとＶＰＧＭｎ＿ＳＶの値の大きさ（絶対値）を、｜ＶＰＧＭｐ＿ＳＶ｜＜｜ＶＰＧＭｎ＿ＳＶ｜の関係とした方が好ましい。
【０４４３】
また読み出し動作において、ＶＲＥＡＤｐとＶＲＥＡＤｎの大きさ（絶対値）は異なっていても良い。
【０４４４】
また読み出し動作において、電圧センス方式を用いるセンスアンプ１１３に印加するＶｓｅｎ＿ｐｏｓとＶｓｅｎ＿ｎｅｇの大きさは異なっていても良い。更に電流センス方式を用いるセンスアンプ１１３に印加するＶｓｔｂ＿ｐｏｓとＶｓｔｂ＿ｎｅｇの大きさは異なっていても良い。
【０４４５】
また読み出しに必要なセンス時間は、Ｐチャネル読み出しの方がＮチャネル読み出しよりも長い方がより好ましい。従って、センス時間Ｔｓ＿ｐｏｓとＴｓ＿ｎｅｇは、Ｔｓ＿ｐｏｓ＜Ｔｓ＿ｎｅｇの関係とした方が好ましい。
【０４４６】
また第６実施形態において、メモリセルトランジスタＭＴが電荷を保持している場合とホールを保持している場合では、閾値の変動量が異なる。このため、あるポジティブタイプにおけるシフト量の大きさとネガティブタイプにおけるシフト量の大きさは変えた方がより好ましい。例えば“Ａｐ”レベルのシフト量Ｖｓ＿Ａｐ＿Ｌと、“Ａｎ”レベルのシフト量Ｖｓ＿Ａｎ＿Ｌの大きさを比較すると、｜Ｖｓ＿Ａｐ＿Ｌ|≦｜Ｖｓ＿Ａｎ＿Ｌ｜の関係とした方が好ましい。“Ｂｐ”と“Ｂｎ”レベルのシフト量、または“Ｃｐ”と“Ｃｎ”レベルのシフト量の大きさの関係も同様である。
【０４４７】
更に上記第１、第２、第５乃至第９実施形態に、例えば図３８に示した電流センス方式のセンスアンプを用いることが出来る。
【０４４８】
更に上記実施形態において、“ＬＭｐ”レベルおよび“ＬＭｎ”レベルの書き込みを省略しても良い。例えば図１０及び図１１のフローチャートにおいて、ステップＳ１０８〜Ｓ１１１及びステップＳ１２１〜Ｓ１２３を廃しても良い。
【０４４９】
更に上記実施形態において、Ｎチャネル読み出しとＰチャネル読み出しは、どちらもポジティブタイプとネガティブタイプの両方のデータを読み出すことが出来る。従って、Ｎチャネル読み出しでネガティブタイプのデータを読み出しても良く、Ｐチャネル読み出しでポジティブタイプのデータを読み出しても良い。例えば、図２４ではポジティブタイプのデータをＮチャネル読み出しで、ネガティブタイプのデータをＰチャネル読み出しで行う場合について説明したが、ポジティブタイプのデータと、ネガティブタイプのデータの両方を例えばＮチャネル読み出しで行っても良い。この場合、ＶＣＧＲＶｐを、ポジティブタイプ及びネガティブタイプの閾値レベルに合わせたベリファイレベルとすることにより、データを読み出すことが出来る。Ｐチャネル読み出しの場合も同様である。
【０４５０】
更に上記実施形態において、電圧センス方式のセンスアンプ１１３を用いて多値のデータを読み出す際、センスアンプユニットは、各データに対応するビット線ＢＬの電圧をセンス（ストローブ）するタイミングに対応してビット線ＢＬのチャージを行っても良く、１回のチャージで、データ毎にタイミングを変えてビット線ＢＬの電圧をセンス（ストローブ）しても良い。
【０４５１】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことが出来る。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【０４５２】
なお、本発明に関する各実施形態において、以下の通りであっても良い。
【０４５３】
（１）閾値分布がポジティブタイプの場合の読み出し動作では、
Apレベルの読み出し動作に選択されたワード線に印加される電圧は、例えば0V〜0.55Vの間である。これに限定されることなく、0.1V〜0.24V、0.21V〜0.31V、0.31V〜0.4V、0.4V〜0.5V、0.5V〜0.55Vいずれかの間にしてもよい。
【０４５４】
Bpレベルの読み出し動作に選択されたワード線に印加される電圧は、例えば1.5V〜2.3Vの間である。これに限定されることなく、1.65V〜1.8V、1.8V〜1.95V、1.95V〜2.1V、2.1V〜2.3Vいずれかの間にしてもよい。
【０４５５】
Cpレベルの読み出し動作に選択されたワード線に印加される電圧は、例えば3.0V〜4.0Vの間である。これに限定されることなく、3.0V〜3.2V、3.2V〜3.4V、3.4V〜3.5V、3.5V〜3.6V、3.6V〜4.0Vいずれかの間にしてもよい。
【０４５６】
読み出し動作の時間（tR）としては、例えば25μs〜38μs、38μs〜70μs、70μs〜80μsの間にしてもよい。
【０４５７】
（２）書き込み動作は、上述したとおりプログラム動作とベリファイ動作を含む。ポジティブモードプログラムによる書き込み動作では、
プログラム動作時に選択されたワード線に最初に印加される電圧は、例えば13.7V〜14.3Vの間である。これに限定されることなく、例えば13.7V〜14.0V、14.0V〜14.6Vいずれかの間としてもよい
奇数番目のワード線を書き込む際の、選択されたワード線に最初に印加される電圧と、偶数番目のワード線を書き込む際の、選択されたワード線に最初に印加される電圧を変えてもよい。
【０４５８】
プログラム動作をISPP方式（Ｉｎｃｒｅｍｅｎｔａｌ Ｓｔｅｐ Ｐｕｌｓｅ Ｐｒｏｇｒａｍ）としたとき、ステップアップの電圧として、例えば0.5V程度が挙げられる。
【０４５９】
非選択のワード線に印加される電圧としては、例えば6.0V〜7.3Vの間としてもよい。この場合に限定されることなく、例えば7.3V〜8.4Vの間としてもよく、6.0V以下としてもよい。
【０４６０】
非選択のワード線が奇数番目のワード線であるか、偶数番目のワード線であるかで、印加するパス電圧を変えてもよい。
【０４６１】
書き込み動作の時間（tProg）としては、例えば1700μs〜1800μs、1800μs〜1900μs、1900μs〜2000μsの間にしてもよい。
【０４６２】
（３）電荷蓄積層にホールを注入する消去動作では、
半導体基板上部に形成され、かつ、上記メモリセルが上方に配置されたウェルに最初に印加する電圧は、例えば12V〜13.6Vの間である。この場合に限定されることなく、例えば13.6V〜14.8V、14.8V〜19.0V、19.0〜19.8V、19.8V〜21Vの間であってもよい。
【０４６３】
消去動作の時間（tErase）としては、例えば3000μs〜4000μs、4000μs〜5000μs、4000μs〜9000μsの間にしてもよい。
【０４６４】
（４）メモリセルの構造は、
半導体基板（シリコン基板）上に膜厚が４〜１０ｎｍのトンネル絶縁膜を介して配置された電荷蓄積層を有している。この電荷蓄積層は膜厚が２〜３ｎｍのＳｉＮ、またはＳｉＯＮなどの絶縁膜と膜厚が３〜８ｎｍのポリシリコンとの積層構造にすることができる。また、ポリシリコンにはＲｕなどの金属が添加されていても良い。電荷蓄積層の上には絶縁膜を有している。この絶縁膜は、例えば、膜厚が３〜１０ｎｍの下層Ｈｉｇｈ−ｋ膜と膜厚が３〜１０ｎｍの上層Ｈｉｇｈ−ｋ膜に挟まれた膜厚が４〜１０ｎｍのシリコン酸化膜を有している。Ｈｉｇｈ−ｋ膜はＨｆＯなどが挙げられる。また、シリコン酸化膜の膜厚はＨｉｇｈ−ｋ膜の膜厚よりも厚くすることができる。絶縁膜上には膜厚が３〜１０ｎｍの仕事関数調整用の材料を介して膜厚が３０ｎｍ〜７０ｎｍの制御電極が形成されている。ここで仕事関数調整用の材料はＴａＯなどの金属酸化膜、ＴａＮなどの金属窒化膜である。制御電極にはＷなどを用いることができる。
【０４６５】
また、メモリセル間にはエアギャップを形成することができる。
【０４６６】
なお、閾値分布がネガティブタイプの場合の読み出し動作、ネガティブモードプログラムによる書き込み動作、電荷蓄積層に電荷を注入する消去動作では、上記（１）〜（３）に記載の電圧値と絶対値の大きさが同じ負電圧を印加しても良い。
【符号の説明】
【０４６７】
１…メモリシステム、２０、６０…半導体基板、２７〜２９、６１、６２−１〜６２−４、６５〜６７…絶縁膜、２３〜２５、３２、３６、３８、６８…配線層、３０、３５、３７、６３−１〜６３−３…半導体層、６４…フィン型積層構造、３３、６９…Ｎ＋拡散層、３１、３４、７０…Ｐ＋拡散層、４０〜４８…ＮチャネルＭＯＳトランジスタ、４９…ＰチャネルＭＯＳトランジスタ、５０…キャパシタ、１００…ＮＡＮＤ型フラッシュメモリ、１１０…コア部、１１１…メモリセルアレイ、１１２…ロウデコーダ、１１３…センスアンプ、１１４…ソース線ドライバ、１１５…ウェルドライバ、１１６…ＮＡＮＤストリング、１２０…周辺回路部、１２１…シーケンサ、１２２…チャージポンプ、１２３…レジスタ、１２４…ドライバ、２００…コントローラ、２１０…ホストインターフェイス回路、２２０…内蔵メモリ、２３０…ＣＰＵ、２４０…バッファメモリ、２５０…ＮＡＮＤインターフェイス回路、２６０…ＥＣＣ回路
【図１】
0006266479.tif 000002
【図２】
0006266479.tif 000003
【図３】
0006266479.tif 000004
【図４】
0006266479.tif 000005
【図５】
0006266479.tif 000006
【図６】
0006266479.tif 000007
【図７】
0006266479.tif 000008
【図８】
0006266479.tif 000009
【図９】
0006266479.tif 000010
【図１０】
0006266479.tif 000011
【図１１】
0006266479.tif 000012
【図１２】
0006266479.tif 000013
【図１３】
0006266479.tif 000014
【図１４】
0006266479.tif 000015
【図１５】
0006266479.tif 000016
【図１６】
0006266479.tif 000017
【図１７】
0006266479.tif 000018
【図１８】
0006266479.tif 000019
【図１９】
0006266479.tif 000020
【図２０】
0006266479.tif 000021
【図２１】
0006266479.tif 000022
【図２２】
0006266479.tif 000023
【図２３】
0006266479.tif 000024
【図２４】
0006266479.tif 000025
【図２５】
0006266479.tif 000026
【図２６】
0006266479.tif 000027
【図２７】
0006266479.tif 000028
【図２８】
0006266479.tif 000029
【図２９】
0006266479.tif 000030
【図３０】
0006266479.tif 000031
【図３１】
0006266479.tif 000032
【図３２】
0006266479.tif 000033
【図３３】
0006266479.tif 000034
【図３４】
0006266479.tif 000035
【図３５】
0006266479.tif 000036
【図３６】
0006266479.tif 000037
【図３７】
0006266479.tif 000038
【図３８】
0006266479.tif 000039
【図３９】
0006266479.tif 000040
【図４０】
0006266479.tif 000041
【図４１】
0006266479.tif 000042
【図４２】
0006266479.tif 000043
【図４３】
0006266479.tif 000044
【図４４】
0006266479.tif 000045
【図４５】
0006266479.tif 000046
【図４６】
0006266479.tif 000047
【図４７】
0006266479.tif 000048
【図４８】
0006266479.tif 000049
【図４９】
0006266479.tif 000050
【図５０】
0006266479.tif 000051
【図５１】
0006266479.tif 000052
【図５２】
0006266479.tif 000053
【図５３】
0006266479.tif 000054
【図５４】
0006266479.tif 000055
【図５５】
0006266479.tif 000056
【図５６】
0006266479.tif 000057
【図５７】
0006266479.tif 000058
【図５８】
0006266479.tif 000059
【図５９】
0006266479.tif 000060
【図６０】
0006266479.tif 000061
【図６１】
0006266479.tif 000062
【図６２】
0006266479.tif 000063
【図６３】
0006266479.tif 000064
【図６４】
0006266479.tif 000065
【図６５】
0006266479.tif 000066
【図６６】
0006266479.tif 000067
【図６７】
0006266479.tif 000068
【図６８】
0006266479.tif 000069
【図６９】
0006266479.tif 000070
【図７０】
0006266479.tif 000071
【図７１】
0006266479.tif 000072
【図７２】
0006266479.tif 000073
【図７３】
0006266479.tif 000074
【図７４】
0006266479.tif 000075
【図７５】
0006266479.tif 000076
【図７６】
0006266479.tif 000077
【図７７】
0006266479.tif 000078