【実施例】
【0016】
本発明の実施例に係るフラッシュメモリの要部の内部構成を
図2に示す。但し、ここに示すフラッシュメモリの構成は例示であり、本発明は、必ずしもこのような構成に限定されるものではない。
【0017】
本実施例のフラッシュメモリ100は、複数のメモリセルが行列状に配列されたメモリアレイ110と、外部入出力端子I/Oに接続された入出力バッファ120と、入出力バッファ120からアドレスデータを受け取るアドレスレジスタ130と、入出力バッファ120からコマンドデータ等を受け取り、各部を制御するコントローラ140と、アドレスレジスタ130から行アドレス情報Axを受け取り、行アドレス情報Axをデコードし、デコード結果に基づきブロックの選択およびワード線の選択等を行うワード線選択回路150と、ワード線選択回路150によって選択されたページから読み出されたデータを保持したり、選択されたページにプログラムすべき入力データを保持するページバッファ/センス回路160と、アドレスレジスタ130から列アドレス情報Ayを受け取り、列アドレス情報Ayをデコードし、当該デコード結果に基づきページバッファ/センス回路160内の列アドレスのデータを選択する列選択回路170と、データの読出し、プログラムおよび消去等のために必要な種々の電圧(書込み電圧Vpgm、パス電圧Vpass、読出しパス電圧Vread、消去電圧Versなど)を生成する内部電圧発生回路180と、外部端子から供給される電源電圧Vccを監視し、電源電圧Vccの電圧レベルを検出する電圧検出部190と、クロック信号を発生するクロック発生回路200とを含んで構成される。
【0018】
メモリアレイ110は、列方向にm個のメモリブロックBLK(0)、BLK(1)、・・・、BLK(m-1)を有する。1つのメモリブロックには、複数のメモリセルを直列に接続したNANDストリングユニットが複数形成される。また、メモリセルアレイ110には、フラッシュメモリの動作のための電圧の設定やユーザーのオプションの設定などに関する設定情報を格納するフューズセルが含まれている。フューズセルは、ユーザーによってアクセスすることができない領域である。
【0019】
図3に、NANDストリングユニットNUを示す。NANDストリングユニットNUは、直列に接続された複数のメモリセルMCi(i=0、1、・・・、31)と、メモリセルMC31のドレイン側に接続されたビット線側選択トランジスタTDと、メモリセルMC0のソース側に接続されたソース線側選択トランジスタTSとを含み、ビット線側選択トランジスタTDのドレインは、対応する1つのビット線GBLに接続され、選択トランジスタTSのソースは、共通のソース線SLに接続される。
【0020】
メモリセルは、典型的に、Pウエル内に形成されたN型の拡散領域であるソース/ドレインと、ソース/ドレイン間のチャンネル上に形成されたトンネル酸化膜と、トンネル酸化膜上に形成されたフローティングゲート(電荷蓄積層)と、フローティングゲート上に誘電体膜を介して形成されたコントロールゲートとを含むMOS構造を有する。メモリセルは、1ビット(2値データ)を記憶するSLCタイプでもよいし、多ビットを記憶するMLCタイプであってもよい。
【0021】
メモリセルMCiのコントロールゲートは、ワード線WLiに接続され、選択トランジスタTD、TSのゲートは、選択ゲート線SGD、SGSに接続される。ワード線選択回路150は、行アドレスAxに基づき選択ゲート信号SGS、SGDを介して選択トランジスタTD、TSを選択的に駆動し、かつワード線WL0〜WL31を選択的に駆動する。
【0022】
読出し動作では、ビット線に正の電圧を印加し、選択ワード線に或る電圧(例えば0V)を印加し、非選択ワード線にパス電圧Vpass(例えば4.5V)を印加し、選択ゲート線SGD、SGSに正の電圧(例えば4.5V)を印加し、ビット線側選択トランジスタTD、ソース線側選択トランジスタTSをオンし、共通ソース線に0Vを印加する。プログラム(書込み)動作では、選択ワード線に高電圧のプログラム電圧Vpgm(15〜25V)を印加し、非選択ワード線に中間電位(例えば10V)を印加し、ビット線側選択トランジスタTDをオンさせ、ソース線側選択トランジスタTSをオフさせ、「0」または「1」のデータに応じた電位をビット線GBLに供給する。消去動作では、ブロック内の選択ワード線に0Vを印加し、Pウエルに高電圧(例えば20V)を印加し、フローティングゲートの電子を基板に引き抜くことで、ブロック単位でデータを消去する。
【0023】
電圧検出部190は、フラッシュメモリ100の外部端子に供給されるVcc電源電圧の電圧レベルを監視し、電圧レベルがパワーオン電圧レベルに到達したとき、パワーオン検出信号D
PWRをコントローラ140へ出力する。コントローラ140は、パワーオン検出信号D
PWRに基づきパワーオンモードであると判定し、パワーオンシーケンスを実行する。
【0024】
さらに電圧検出部190は、パワーオン電圧レベルに到達した後に、Vcc電源電圧がノイズや電力消費の影響により一時的に閾値以下に降下したことを検出し、かつVcc電源電圧が閾値以上に回復したことを検出し、その検出結果を表す電圧降下検出信号D
DRPをコントローラ140へ出力する。電圧検出部190は、例えば、電圧レベルが閾値以下であるとき、Hレベルの電圧降下信号D
DRPを出力し、電圧レベルが閾値を超えるとき、Lレベルの電圧降下信号D
DRPを出力する。閾値は、Vcc電源電圧あるいはターゲット電圧よりも低く、かつ、パワーオンシーケンスを維持することができる電圧(パワーオン電圧レベルまたはパワーダウン電圧レベル)よりも高い範囲内に設定される。
【0025】
コントローラ140は、
図4に示すように、CPU142やROM144などを含み、クロック信号CLKに同期した動作を行う。ROM144には、パワーオンシーケンス、読出し動作、プログラム動作、消去動作等を制御するためプログラムが格納されている。CPU142は、プログラムカウンタPCにセットされるアドレスに従いROM144から命令コードを読出し、読み出した命令コードをデコードし、デコードした命令に基づきワード選択回路150、ページバッファ/センス回路160、内部電圧発生回路180等の動作を制御する。一連の動作を実行するとき、プログラムカウンタにセットされるアドレスは、例えば、クロック信号の立ち上がりエッジに同期してインクリメントまたはデクリメントされる。また、コントローラ140は、必要に応じてプログラムカウンタのアドレスをブランチさせることができる。
【0026】
コントローラ140は、電圧検出部190からパワーオン検出信号D
PWRを受け取ると、パワーオン動作モードに移行し、パワーオンシーケンスを実行する。パワーオンシーケンスの1つに、メモリセルアレイ110のフューズセル読出しが含まれる。コントローラ140は、フューズセルから読み出した電圧設定情報や仕様情報をコンフィギュレーションレジスタ等にロードする。また、コントローラ140は、パワーオンシーケンスの実行中、電圧検出部190から電圧降下信号D
DRPを受け取り、電圧降下信号D
DRPに表される内容を低電圧フラグ146にセットする。
【0027】
クロック発生回路200は、クロック信号CLKをコントローラ140へ提供する。クロック発生回路200は、オンチップでクロック信号を生成するものであってもよいし、外部から供給される外部クロック信号に基づき内部クロック信号を生成するものであってもよい。コントローラ140は、クロック制御回路148を含み、クロック制御回路148は、クロック発生回路200からのクロック信号CLKを受け取り、クロックイネーブル信号CLKE、/CLKEに応じてクロック信号CLKをCPU142へ出力する。1つの実施態様では、クロック制御回路148は、クロック発生回路200からのクロック信号CLKと、低電圧フラグ146が保持する論理を反転したクロックイネーブル信号とを入力し、その論理積を出力するANDゲートを含む。低電圧フラグ146がHレベルのとき、すなわち、Vcc電源電圧が閾値以下に降下したとき、ANDゲートはクロック信号を非活性化したLレベルの信号をCPU142に出力する。他方、低電圧フラグ146がLレベルのとき、すなわち、電源電圧Vccが閾値を超えるとき、ANDゲートは、クロック信号CLKを活性化し、これをCPU142に出力する。
【0028】
次に、本実施例のパワーオンシーケンスについて
図5のタイミングチャートを参照して説明する。図の例は、電源投入後のパワーオンシーケンス中、時刻T2〜T3の期間にVcc電源電圧が降下したことを示している。時刻T1〜T2では、Vcc電源電圧は、閾値より高く、電圧検出部190から出力される電圧降下信号D
DRPはLレベルであり、コントローラ140は、低電圧フラグ146にLレベルをセットする。クロック制御回路148は、低電圧フラグ146からのクロックイネーブル信号/CLKEに応答して、クロック信号CLKを活性化し、CPU142にクロック信号CLKが供給される。CPU142は、例えば、クロック信号CLKの立ち上がりエッジに同期して動作し、すなわち、CPU142は、プログラムカウンタPCのアドレスに従いROM144からコードを読出し、読み出したコードをデコードし、動作を制御する。プログラムカウンタPCは、次のクロック信号に同期してインクリメントされ、CPU142は、ROM144から次のコードを読み出し、動作を制御する。
【0029】
時刻T2で、Vcc電源電圧が閾値以下に降下すると、電圧検出部190から出力される電圧降下信号D
DRPがHレベルに遷移する。これに応答して、コントローラ140は、低電圧フラグ146にHレベルをセットし、クロック制御回路148は、クロックイネーブル信号CLKEに応答してクロック信号CLKを非活性化し、Lレベルを出力する。これにより、CPU142にはクロック信号CLKが提供されず、CPU142の動作が事実上、停止する。
【0030】
時刻T3で、Vcc電源電圧が閾値を超える電圧まで回復すると、電圧検出部190から出力される電圧降下信号D
DRPがLレベルに遷移する。これに応答して、コントローラ140は低電圧フラグ146にLレベルをセットし、クロック制御回路148は、クロックイネーブル信号/CLKEに応答してクロック信号CLKを活性化させ、CPU142にクロック信号CLKが提供される。CPU142は、クロック信号CLKが供給されると、プログラムカウンタPCに保持されていたアドレスに従いROM144からコードを読出し、動作を再開する。
【0031】
このように本実施例によれば、パワーオンシーケンス中に、Vcc電源電圧の降下が検出された場合に、クロック信号CLKを非活性化させ、CPUによるROMコードの読出しを停止させ、Vcc電源電圧の回復が検出された場合に、クロック信号CLKを活性化させ、CPUによるROMコードの読出しを再開させるようにしたので、パワーオンシーケンスにおけるフューズセル読出し動作を安定化させることができ、パワーオンシーケンスの失敗の確率を低減させることができる。また、Vcc電源電圧の降下時に、クロック信号を非活性化させ、CPUの動作をサスペンドするので、パワーオンシーケンスの平均的な全体の消費電力を減少させることができる。
【0032】
次に、本発明の第2の実施例について説明する。Vcc電源電圧が降下したとき、CPU142の動作が停止されるが、動作によっては、その動作をそのまま再開させることが望ましくない場合がある。フューズセル読出しは、通常動作時のメモリセルアレイの読出しと同様に、ビット線プリチャージの動作を含み、ビット線プリチャージの期間は、クロック信号CLKのクロック数により管理される。ビット線プリチャージの動作中に、CPUの動作を停止させ、その後、動作が再開されると、ビット線をプリチャージする時間が通常よりも長くなる可能性がある。つまり、CPU142が停止する直前のコードの実行によりビット線がプリチャージされ、クロック数がカウントされ、その途中でプリチャージ動作が停止され、動作再開時に同じコードが実行されると、プリチャージされた状態にあるビット線が再びプリチャージされ、クロック数のカウントが開始されることになる。このような事態を回避するため、第2の実施例では、停止したときの動作を再開させることが妥当でない場合には、プログラムカウンタを分岐させ、動作停止の影響がない動作から開始させる。例えば、ビット線のプリチャージ動作中に停止した場合には、ビット線のプリチャージ期間が長くならないように、例えば、ビット線プリチャージよりも前の動作から再開されるようにプログラムカウンタのアドレスが変更される。どの動作から開始されるかは、予め設定しておくようにしてもよい。
【0033】
図6に、第2の実施例の動作を説明するフローチャートを示す。フラッシュメモリ100に電源が投入され、電圧検出部190によってパワーオン電圧レベルが検出されると、コントローラ140は、パワーオン検出信号D
PWRに基づきパワーオンシーケンスを実行する(S100)。その後、Vcc電源電圧が降下すると(S110)、クロック信号が非活性化され、CPU142によるパワーオンシーケンスの実行が中断される(S120)。再び、Vcc電源電圧が回復すると、コントローラ140は、停止した動作から動作を再開させるのが不適当かを判定する(S140)。具体的には、コントローラ140は、停止したときのプログラムカウンタPCのアドレスが、予め決められたアドレスに該当するか否か判定し、一致する場合には、停止した動作から動作を再開させるのは不適当と判定する。この場合、コントローラ140は、プログラムカウンタPCのアドレスを、当該動作が不適当とならないアドレスにブランチさせる。上記の例であれば、例えば、ビット線のプリチャージよりも前の動作を実行するようにアドレスに変更する(S150)。例えば、ルックアップテーブルに、停止したときのアドレスと、分岐させるアドレスとの関係を予め設定しておき、コントローラ140は、ルックアップテーブルを参照してプログラムカウンタのアドレスを変更する。停止したときの動作を再開することが適当であると判定した場合には(S140)、プログラムカウンタのアドレスはそのまま変更されない(S160)。
【0034】
このように本実施例によれば、CPUの動作を停止し、その後、再開させるときに、停止時の動作と再開時の動作との間に生じ得る不整合性を抑制することができる。
【0035】
次に、本発明の第3の実施例について説明する。パワーオンシーケンス中に、Vcc電源電圧が何度も降下する場合には、パワーオンシーケンスが失敗する可能性が高く、また、電力も無駄に消費される。このため、第3の実施例では、電圧降下の回数が一定数に到達した場合には、電力消費やノイズが少ないセーフティ動作から再開させる。
【0036】
図7に、第3の実施例の動作を説明するフローチャートを示す。ステップS100〜S130までは、第2の実施例のときと同様である。コントローラ140は、Vcc電源電圧が閾値以下となった降下した回数を保持し、あるいは閾値を超え回復した回数を保持し、動作を再開させるとき、n回目(nは、1以上の整数)の電圧降下であるか否か判定する(S200)。コントローラ140は、n回目の電圧降下である場合には、電力消費が少ないセーフティ動作から再開させるようにプログラムカウンタのアドレスを変更する(S210)。他方、n回目の電圧降下でなければ、停止した動作から動作を再開させるようにプログラムカウンタのアドレスは変更しない(S220)。
【0037】
このように本実施例によれば、電圧降下の回数が一定数に到達した場合には、電力消費が少ないセーフティ動作から再開させるようにすることで、パワーオンシーケンスを終了するまでの時間を短縮させ、無駄な消費電力を抑制することができる。
【0038】
上記実施例では、NAND型のフラッシュメモリを例示したが、本発明は、パワーオンシーケンスをCPUにより実行するような他の半導体メモリにも適用することができる。
【0039】
本発明の好ましい実施の形態について詳述したが、本発明は、特定の実施形態に限定されるものではなく、特許請求の範囲に記載された発明の要旨の範囲内において、種々の変形・変更が可能である。