(57)【特許請求の範囲】
【請求項１】
複数のワード線と、各々がドレイン側及びソース側各々に電荷蓄積部を有し前記ワード線の各々にそのゲート端子が接続されたＭＯＳＦＥＴ構造を有する複数のメモリセルと、前記メモリセルの各々のドレイン端子及びソース端子に各々接続された複数のビット線と、を含む不揮発性半導体メモリ装置の前記メモリセル各々の前記電荷蓄積部に電荷を注入して前記電荷蓄積部毎の蓄積電荷量に対応する値を表すデータを書き込むデータ書き込み方法であって、
前記データに対応した書き込み前に、前記複数のメモリセル各々の前記ドレイン側及びソース側の電荷蓄積部に各々対応して前記ドレイン端子と前記ソース端子との間に流れる電流値を第１初期電流値及び第２初期電流値として測定する第１電流測定ステップと、
前記メモリセル毎に前記第１初期電流値と前記第２初期電流値とを大小比較する比較ステップと、
前記第１初期電流値が前記第２初期電流値より大であるという前記比較ステップの比較結果が得られたとき前記第１初期電流値に対応した前記ソース側の前記電荷蓄積部に電荷を注入して前記第１初期電流値を前記第２初期電流値に近づける第１電荷注入ステップと、
前記第２初期電流値が前記第１初期電流値より大であるという前記比較ステップの比較結果が得られたとき前記第２初期電流値に対応した前記ドレイン側の前記電荷蓄積部に電荷を注入して前記第２初期電流値を前記第１初期電流値に近づける第２電荷注入ステップと、を備えることを特徴とするデータ書き込み方法。
【請求項２】
前記複数のメモリセル全てについて測定された前記第１初期電流値及び前記第２初期電流値を含む前記初期電流値の平均値を算出して前記平均値を閾値電流とするステップと、
前記初期電流値のうちの最小値を検出してその最小値より若干前記平均値側の値を閾値最小電流とするステップと、
前記第１初期電流値が前記第２初期電流値より大であるという前記比較ステップの比較結果が得られたときに前記第１初期電流値が前記閾値電流より大でかつ前記第２初期電流値が前記閾値最小電流より大であるか否かを判別する第１判別ステップと、
前記第２初期電流値が前記第１初期電流値より大であるという前記比較ステップの比較結果が得られたときに前記第２初期電流値が前記閾値電流より大でかつ前記第１初期電流値が前記閾値最小電流より大であるか否かを判別する第２判別ステップと、を備え、
前記第１判別ステップにより前記第１初期電流値が前記閾値電流より大でかつ前記第２初期電流値が前記閾値最小電流より大であると判別されたとき前記第１電荷注入ステップは前記第１初期電流値に対応した前記ソース側の前記電荷蓄積部に電荷を注入し、
前記第２判別ステップにより前記第２初期電流値が前記閾値電流より大でかつ前記第１初期電流値が前記閾値最小電流より大であると判別されたとき前記第２電荷注入ステップは前記第２初期電流値に対応した前記ドレイン側の前記電荷蓄積部に電荷を注入することを特徴とする請求項１記載のデータ書き込み方法。
【請求項３】
前記第１電荷注入ステップ又は前記第２電荷注入ステップの実行後、その電荷注入されたメモリセルの前記ソース側及びソース側の電荷蓄積部に各々対応して前記ドレインと前記ソース端子との間に流れる電流値を新たな前記第１初期電流値及び前記第２初期電流値として測定する第２電流測定ステップと、
前記第２電流測定ステップの実行後、前記第１初期電流値及び前記第２初期電流値各々が前記閾値電流より小であること、又は前記第１初期電流値及び前記第２初期電流値のいずれか一方が前記閾値最小電流より小であることが検出されないとき電荷注入を繰り返すべく前記比較ステップを再度実行させる繰り返し判別ステップと、を備えることを特徴とする請求項２記載のデータ書き込み方法。
【請求項４】
前記第１電荷注入ステップ及び前記２電荷注入ステップは前記電荷注入を繰り返すときには電荷注入対象のメモリセルのゲート電圧をその繰り返し回数に応じて増加させることを特徴とする請求項３記載のデータ書き込み方法。
【請求項５】
前記繰り返し判別ステップは前記電荷注入の繰り返し回数が所定の回数に達したときには前記第１初期電流値及び前記第２初期電流値各々が前記閾値電流より小であること、又は前記第１初期電流値及び前記第２初期電流値のいずれか一方が前記閾値最小電流より小であることが検出されないときであっても電荷注入対象のメモリセルに対する電荷注入を終了させることを特徴とする請求項３又は４記載のデータ書き込み方法。
【請求項６】
前記データに対応した書き込みにおいて前記データが表す値に対応したソース・ドレイン間電圧及び閾値電流を設定する条件設定ステップと、
書き込み対象のメモリセルの電荷注入される電荷蓄積部に対応して前記ドレイン端子と前記ソース端子との間に流れる電流値を測定する第３電流測定ステップと、
前記第３電流測定ステップにより測定された前記電流値が前記条件設定ステップで設定された前記閾値電流に所定電流値を加えた加算閾値より小であるか否かを判別するステップと、
前記第３電流測定ステップにより測定された前記電流値が前記加算閾値以上であるとき前記条件設定ステップで設定された前記ソース・ドレイン間電圧をそのまま用いて前記書き込み対象のメモリセルの当該電荷蓄積部に電荷注入するように前記データを書き込み、前記電流測定ステップにより測定された前記電流値が前記加算閾値より小であるとき前記条件設定ステップで設定された前記ソース・ドレイン間電圧から所定電圧を差し引いて得られた電圧を実際に印加されるべき前記ソース・ドレイン間電圧として用いて前記書き込み対象のメモリセルの当該電荷蓄積部に電荷注入するように前記データを書き込みステップと、を備えることを特徴とする請求項１記載のデータ書き込み方法。
【請求項７】
前記データに対応した書き込みにおいて書き込み対象のメモリセルの前記ドレイン側及びソース側の電荷蓄積部に電荷注入する場合に、その双方の電荷蓄積部のいずれか一方の蓄積電荷量が、前記データが表す値に対応した電荷量に達するまでに前記双方の電荷蓄積部に交互に電荷注入を行うことを特徴とする請求項１記載のデータ書き込み方法。
【請求項８】
複数のワード線と、各々がドレイン側及びソース側各々に電荷蓄積部を有し前記ワード線の各々にそのゲート端子が接続されたＭＯＳＦＥＴ構造を有する複数のメモリセルと、前記メモリセルの各々のドレイン端子及びソース端子に各々接続された複数のビット線と、を含み、前記メモリセル各々の前記電荷蓄積部に電荷を注入して前記電荷蓄積部毎の蓄積電荷量に対応する値を表すデータを書き込む不揮発性半導体メモリ装置であって、
前記データの実際の書き込み前に、前記複数のメモリセル各々の前記ドレイン側及びソース側の電荷蓄積部に各々対応して前記ドレイン端子と前記ソース端子との間に流れる電流値を第１初期電流値及び第２初期電流値として測定する第１電流測定手段と、
前記メモリセル毎に前記第１初期電流値と前記第２初期電流値とを大小比較する比較手段と、
前記第１初期電流値が前記第２初期電流値より大であるという前記比較手段の比較結果が得られたとき前記第１初期電流値に対応した前記ソース側の前記電荷蓄積部に電荷を注入して前記第１初期電流値を前記第２初期電流値に近づける第１電荷注入手段と、
前記第２初期電流値が前記第１初期電流値より大であるという前記比較手段の比較結果が得られたとき前記第２初期電流値に対応した前記ドレイン側の前記電荷蓄積部に電荷を注入して前記第２初期電流値を前記第１初期電流値に近づける第２電荷注入手段と、を備えることを特徴とする不揮発性半導体メモリ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性半導体メモリ装置及びその不揮発性半導体メモリ装置のデータ書き込み方法に関する。
【背景技術】
【０００２】
１つのメモリセルに２つの電荷蓄積部を有し、各電荷蓄積部に論理データ（“０”又は“１”）を記憶することにより１つのメモリセル当たり２ビットの記憶容量を有する不揮発性半導体メモリ装置が知られている（特許文献２及び３参照）。このようなメモリ装置で使用されるメモリセルは例えばnMOSFET構造を有し、ドレイン端子側とソース端子側に互いに離間して形成された２つの電荷蓄積部を有する。電荷蓄積部に電荷が蓄積された状態を例えばデータ“０”に対応させ、電荷が蓄積されていない状態を例えばデータ“１”に対応させることにより各電荷蓄積部に１ビット、１メモリセル当たり２ビットのデータを記憶させることが可能となる。かかるメモリセルへのデータの書き込み、読み出し及び消去は、例えば以下の方法により行われる。
【０００３】
例えば、ドレイン端子側の電荷蓄積部にデータ“０”の書き込みを行う場合には、ドレイン端子およびゲート端子に正電圧を印加し、ソース端子を接地電圧とする。これにより、ドレイン側の電荷蓄積部にホットエレクトロンが注入され、これが保持されてデータ“０”が書き込まれる。
【０００４】
次に、ドレイン端子側の電荷蓄積部に記憶されたデータの読出しを行う場合には、ソース端子およびゲート端子に正電圧を印加し、ドレイン端子を接地電圧とする。この時ドレイン側の電荷蓄積部に電荷が蓄積されていない場合、すなわち当該電荷蓄積部にデータ“１”が記録されている場合、比較的大きな読出し電流が得られる。一方、ドレイン側の電荷蓄積部に電荷が蓄積されている場合、すなわち当該電荷蓄積部にデータ“０”が記録されている場合、蓄積された電荷の影響により読出し電流はデータ“１”が記録されている場合と比較して小さくなる。このように、電荷蓄積部内の電荷の有無によって、読み出し電流の大きさに差が表れるため、この読出し電流の大小を判定することによりデータの読み出しを行うことができる。
【０００５】
次に、ドレイン端子側の電荷蓄積部に記憶されたデータの消去を行う場合には、ドレイン端子に正電圧を印加し、ゲート端子に０又は負電圧を印加し、ソース端子をオープン状態とする。これにより、ドレイン領域近傍で発生したホットホールが電荷蓄積部に注入され、電荷蓄積部に蓄積されている電荷が中和されることによりデータの消去がなされる。
【０００６】
図１は、かかる２ビットの記憶容量を有するメモリセル（以下、２ビットメモリセルと称する）における理想的な読出し電流の分布を示すグラフであり、横軸が読み出し電流値、縦軸が頻度を示している。同図に示すように、読出し電流は、データ“０”および“１”の各々に対応する標準値を中心として一定の幅を持った分布をとる。このように互いに異なるデータ（“０”および“１”）に対応する各読出し電流分布の間の範囲を電流ウィンドウと称する。メモリセルに書き込まれたデータを精度良く読み出すためには、十分な幅の電流ウィンドウを確保する必要がある。つまり、データ“０”の読出し電流値とデータ“１”の読出し電流値とが近接していると正確な読出しを行うことが困難となる。
【０００７】
また、近年１つのメモリセルに２つの電荷蓄積部を有し、各電荷蓄積部に４値のデータ（“００”・“０１”・“１０”・“１１”）を記憶することにより１つのメモリセル（以下、４ビットメモリセルと称する）当たり４ビットの記憶容量を有する不揮発性半導体メモリの開発が進められている。各電荷蓄積部への４値（すなわち２ビット）のデータ記録は、各電荷蓄積部に蓄積させる電荷量をも制御して、蓄積電荷量を４値のデータの各々に対応させることにより行う。データの読出しの原理は、上記した２ビットメモリセルの場合と同様であり、読出し電流の値を読取ることで４値のデータの判別を行う（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１０−２７１６２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、４ビットメモリセルの場合には、読出し電流の分布では図２に示すように、図１に示した２ビットメモリセルの場合と比較して電流ウィンドウが狭くなる。このために電荷の有無のみを判別する２ビットメモリセルと比較して、蓄積電荷量の大小をも判別することを要する４ビットメモリセルの方が高い読出し精度が要求される。
【００１０】
高い読出し精度のために、各メモリセルにおいてドレイン端子側の電荷蓄積部及びソース端子側の電荷蓄積部とでデータ読み出しの際の読み出し電流値のばらつきを低減させることが望まれている。
【００１１】
そこで、本発明の目的は、かかる点を鑑みてなされたものであり、高い読出し精度が得られるようにデータの書き込みを行うことができる不揮発性半導体メモリ装置のデータ書き込み方法及び不揮発性半導体メモリ装置を提供することである。
【課題を解決するための手段】
【００１２】
本発明の不揮発性半導体メモリ装置のデータ書き込み方法は、複数のワード線と、各々がドレイン側及びソース側各々に電荷蓄積部を有し前記ワード線の各々にそのゲート端子が接続されたＭＯＳＦＥＴ構造を有する複数のメモリセルと、前記メモリセルの各々のドレイン端子及びソース端子に各々接続された複数のビット線と、を含む不揮発性半導体メモリ装置の前記メモリセル各々の前記電荷蓄積部に電荷を注入して前記電荷蓄積部毎の蓄積電荷量に対応する値を表すデータを書き込むデータ書き込み方法であって、前記データに対応した書き込み前に、前記複数のメモリセル各々の前記ドレイン側及びソース側の電荷蓄積部に各々対応して前記ドレイン端子と前記ソース端子との間に流れる電流値を第１初期電流値及び第２初期電流値として測定する第１電流測定ステップと、前記メモリセル毎に前記第１初期電流値と前記第２初期電流値とを大小比較する比較ステップと、前記第１初期電流値が前記第２初期電流値より大であるという前記比較ステップの比較結果が得られたとき前記第１初期電流値に対応した前記ソース側の前記電荷蓄積部に電荷を注入して前記第１初期電流値を前記第２初期電流値に近づける第１電荷注入ステップと、前記第２初期電流値が前記第１初期電流値より大であるという前記比較ステップの比較結果が得られたとき前記第２初期電流値に対応した前記ドレイン側の前記電荷蓄積部に電荷を注入して前記第２初期電流値を前記第１初期電流値に近づける第２電荷注入ステップと、を備えることを特徴としている。
【００１３】
本発明の不揮発性半導体メモリ装置は、複数のワード線と、各々がドレイン側及びソース側各々に電荷蓄積部を有し前記ワード線の各々にそのゲート端子が接続されたＭＯＳＦＥＴ構造を有する複数のメモリセルと、前記メモリセルの各々のドレイン端子及びソース端子に各々接続された複数のビット線と、を含み、前記メモリセル各々の前記電荷蓄積部に電荷を注入して前記電荷蓄積部毎の蓄積電荷量に対応する値を表すデータを書き込む不揮発性半導体メモリ装置であって、前記データの実際の書き込み前に、前記複数のメモリセル各々の前記ドレイン側及びソース側の電荷蓄積部に各々対応して前記ドレイン端子と前記ソース端子との間に流れる電流値を第１初期電流値及び第２初期電流値として測定する第１電流測定手段と、前記メモリセル毎に前記第１初期電流値と前記第２初期電流値とを大小比較する比較手段と、前記第１初期電流値が前記第２初期電流値より大であるという前記比較手段の比較結果が得られたとき前記第１初期電流値に対応した前記ソース側の前記電荷蓄積部に電荷を注入して前記第１初期電流値を前記第２初期電流値に近づける第１電荷注入手段と、前記第２初期電流値が前記第１初期電流値より大であるという前記比較手段の比較結果が得られたとき前記第２初期電流値に対応した前記ドレイン側の前記電荷蓄積部に電荷を注入して前記第２初期電流値を前記第１初期電流値に近づける第２電荷注入手段と、を備えることを特徴としている。
【発明の効果】
【００１４】
本発明のデータ書き込み方法及び不揮発性半導体メモリ装置によれば、メモリセル各々のドレイン側及びソース側の電荷蓄積部に各々対応してドレイン端子とソース端子との間に流れる電流値である第１初期電流値及び第２初期電流値をほぼ一致させることができる。よって、その後に実行されるデータ書き込み処理でデータが書き込まれた場合に、各メモリセルにおいてドレイン端子側の電荷蓄積部及びソース端子側の電荷蓄積部とでデータ読み出しの際の読み出し電流値のばらつきを低減させることができるので、高い読出し精度を得ることができる。
【図面の簡単な説明】
【００１５】
【図１】２ビットメモリセルにおける理想的な読み出し電流の分布を示すグラフである。
【図２】４ビットメモリセルにおける理想的な読み出し電流の分布を示すグラフである。
【図３】本発明が適用された不揮発性半導体メモリ装置の構成を示すブロック図である。
【図４】図３の装置中の各メモリセルの構造を示す断面図である。
【図５】図３の装置中のコントローラによるデータ書き込み処理動作を示すフローチャートである。
【図６】データ書き込み処理によるデータ値に対応した電荷蓄積を示す図である。
【図７】データ値毎の電荷注入の繰り返し時のゲート電圧の変化を示す図である。
【図８】図３の装置中のコントローラによる前処理動作を示すフローチャートである。
【図９】図３の装置中のコントローラによるデータ書き込み処理動作を示すフローチャートである。
【図１０】１つのメモリセルの双方の電荷蓄積部各々にデータ“０１”書き込みのための電荷注入方法を示す図である。
【発明を実施するための形態】
【００１６】
以下、本発明の実施例を図面を参照しつつ詳細に説明する。
【００１７】
図３は本発明の実施例として不揮発性半導体メモリ装置の構成を示している。この半導体メモリ装置は、不揮発性半導体メモリ１００、ロウデコーダ１０４、カラムデコーダ１０６、及びコントローラ１０８を備えている。
【００１８】
不揮発性半導体メモリ１００は、列方向に配列された複数のビット線ＢＬ及びこれと交差して行方向に配列された複数のワード線ＷＬが設けられている。ビット線ＢＬとワード線ＷＬの各交差部にはメモリセル１０が設けられ、これらによってメモリセルアレイが構成される。各メモリセル１０のゲート端子は、ワード線ＷＬに接続され、ソース端子およびドレイン端子はそれぞれビット線ＢＬに接続される。ドレイン側のビット線ＢＬとソース側のビット線ＢＬは対をなし、この１対のビット線間に書き込み電圧が供給されることにより各メモリセル１０のドレイン−ソース間に当該書き込み電圧が印加されることとなる。
【００１９】
複数のメモリセル１０各々は同一構造であり、ｎＭＯＳＦＥＴからなる。図４はメモリセル１０の主要部を示す断面図である。
【００２０】
メモリセル１０は、ｐ型のシリコン基板１２の上面にＳｉＯ２からなるゲート酸化膜２２を介してポリシリコンからなるゲート電極２４が形成されている。シリコン基板１２表面のゲート電極２４を挟む位置にｎ型不純物を高濃度に含有するソース領域１６およびドレイン領域１８が形成されている。ゲート電極２４直下のシリコン基板１２の表面領域はｎＭＯＳＦＥＴの動作時において電流路が形成されるチャンネル領域２０である。チャンネル領域２０とソース領域１６およびドレイン領域１８との間にはソース領域１６およびドレイン領域１８に隣接して比較的不純物濃度の低いｎ型のエクステンション領域２６および２８が形成される。このエクステンション領域２６および２８は、後述の第１および第２電荷蓄積部に効率的に電荷を注入するために設けられるものである。
【００２１】
ソース側のエクステンション領域２６の上部には第１電荷蓄積部３０が設けられ、ドレイン側のエクステンション領域２８の上部には第２電荷蓄積部３２が設けられている。第１および第２電荷蓄積部３０、３２は、シリコン酸化膜３０１、シリコン窒化膜３０３、シリコン酸化膜３０３からなるＯＮＯ積層絶縁膜により構成される。第１および第２電荷蓄積部３０および３２はそれぞれエクステンション領域２６および２８からゲート電極２４の側壁に亘って延在している。これにより、電荷の蓄積および保持を確実に行うことができる。また、第１電荷蓄積部３０と第２の電荷蓄積３２は、物理的に連続せず、つまり互いに離間して形成されているので、各電荷蓄積部に対して別個独立に電荷を蓄積保持できるようになっている。
【００２２】
ワード線ＷＬの各々はロウデコーダ１０４に接続され、ビット線ＢＬの各々はカラムデコーダ１０６に接続される。ロウデコーダ１０４およびカラムデコーダ１０６は、コントローラ１０８に接続される。
【００２３】
コントローラ１０８には、各メモリセル１０に対するデータの書込み、読み止しおよび消去を制御する演算部１０８Ａと、記録データを一時的に記憶する一時記憶部１０８Ｂと、後述するデータ書き込みプログラム等を記憶した不揮発性記憶部１０８Ｃと、が設けられている。コントローラ１０８は、不揮発性半導体メモリ１００に記録すべきデータが外部より入力されると、データ書き込みプログラムを実行してロウデコーダ１０４に対して記録先のアドレス情報およびワード線ＷＬに印加すべき電圧に関する情報を含む制御信号を供給する。また、カラムデコーダに対しては、記録先のアドレス情報および記録データに対応したビット線ＢＬに印加すべき電圧に関する情報を含む制御信号を供給する。
【００２４】
ロウデコーダ１０４は、コントローラ１０８より供給される制御信号に基づいてワード線ＷＬを選択し、選択した１のワード線ＷＬにゲート電圧Ｖｇｗを供給する。本実施例の不揮発性半導体メモリ１００によるデータ書き込み処理おいては、各メモリセルのゲート端子には、記録データの値にかかわらず共通のゲート電圧Ｖｇｗが供給される。
【００２５】
カラムデコーダ１０６は、コントローラ１０８より供給される制御信号に基づいて少なくとも１対のビット線ＢＬ（１つのメモリセルのドレイン端子及びソース端子に個別に接続されたビット線ＢＬ）を選択し、選択したビット線ＢＬの一方にドレイン電圧Ｖｄｗを印加し、他のビット線ＢＬにソース電圧Ｖｓｗを印加することによりそれのビット線ＢＬに接続されたメモリセルのドレイン−ソース端子間に書き込み電圧Ｖｄｓｗを供給する。各メモリセルのドレイン−ソース端子間には、記録すべき４値のデータ毎に異なった電圧レベルの書き込み電圧Ｖｄｓｗが供給されることとなる。すなわち、各メモリセルに注入される電荷量はビット線ＢＬを介して供給されるドレイン−ソース間電圧Ｖｄｓｗによって制御される。本実施例の不揮発性半導体メモリ１００によるデータ書き込み処理においては、共通のワード線ＷＬに接続された複数のメモリセルに対して、ビット線ＢＬを介して互いに異なる電圧レベルの書き込み電圧Ｖｄｓｗをドレイン−ソース間に印加することにより、互いに値の異なるデータを同時に書き込むことができるようになっている。
【００２６】
また、各メモリセル１０には、ソース−ドレイン領域間のチャネル形成領域（電流路）に流れる電流を検出する電流検出器６０を備え、その検出値は、コントローラ１０８に入力される。なお、図３には１つのメモリセル１０にのみ電流検出器６０が示されているが、実際にはメモリセル１０毎に電流検出器６０が設けられている。
【００２７】
次に、本実施例の不揮発性半導体メモリ装置において行われるデータ書き込み動作について図５および図６を参照しつつ説明する。図５は、本実施例に係る不揮発性半導体メモリ装置によるデータ書き込み処理の流れを示すフローチャート図である。図６は、共通のワード線に接続された２つのメモリセル１０ａおよび１０ｂにデータ書き込みを行う場合の各ステップを示した図であり、不揮発性半導体メモリを構成するメモリセルアレイの構成の一部が示されている。
【００２８】
本実施例に係るデータ書き込み処理は、ワード線ＷＬ毎に行われ、選択された１のワード線ＷＬに接続されたメモリセルがデータの書き込み対象となる。例えば、１つのワード線ＷＬが選択されると、同一のデータを書き込むべきメモリセルが選択され、その選択されたメモリセルに対して１つずつ順番に書き込むことが行われる。また、１つのメモリセルで第１電荷蓄積部３０と第２の電荷蓄積３２とに同一のデータを書き込むときには例えば、先ず、第１電荷蓄積部３０にデータを書き込んでから第２の電荷蓄積３２にデータを書き込むことが行われる。選択された１のワード線ＷＬに接続された全てのメモリセルに対して書き込み処理が完了すると、新たなワード線ＷＬが選択される。そして当該新たに選択されたワード線ＷＬに接続されたメモリセルが書き込み対象となる。かかるワード線の順次選択および書き込み処理は、記録すべきデータの記録が完了するか、メモリセルアレイ上の全てのメモリセルに対して書き込みが完了するまで繰り返し行われる。具体的なデータ書き込み方法について以下に詳述する。
【００２９】
コントローラ１０８は、不揮発性半導体メモリ１００に記録すべきデータが外部より入力されると、不揮発性記憶部１０８Ｃに記憶しているデータ書き込みプログラムを実行する。不揮発性半導体メモリ１００の各構成部分は、このデータ書き込みプログラムに従って動作する。
【００３０】
データ書き込み処理の第１ステップＳ１は、外部より順次入力される記録データを本実施例の不揮発性半導体メモリ１００への書き込みに対応させるために行われる入力データの分割処理である。コントローラ１０８の演算部１０８Ａは、順次供給される入力データの一部（例えば、１のワード線ＷＬに接続されたメモリセルの記憶容量に相当するデータ量のデータ）を一次保存部１０８Ａに保存する。演算部１０８Ａは、入力データを一次保存部１０８Ａから順次取り出してこれを２ビット毎のデータ片に分割するとともに、分割された各データ片にメモリセルアレイ上の記録先を示すアドレス情報を付加して一次保存部１０８Ａに保存する（ステップＳ１）。
【００３１】
データ書き込み処理の第２ステップＳ２は、データ“００”の先行書き込み処理である。本実施例では、図６に示すワード線ＷＬ１に接続されたメモリセル１０ａおよび１０ｂのソース側の第１電荷蓄積部３０ａおよび３０ｂにデータ“００”を書き込むものとする。コントローラ１０８は、分割された２ビットのデータ片のうち、読み出し電流の大きさが最も低いデータ“００”のみ一次保存部１０８Ａより抽出し、これらのデータに付随するアドレス情報によって示される記録先のメモリセルに書き込み処理を行うべく、ロウデコーダ１０４およびカラムデコーダ１０６に制御信号を供給する。
【００３２】
ロウデコーダ１０４は、コントローラ１０８より供給された制御信号に含まれるアドレス情報によって示されるデータ書き込み先のメモリセルに対応するワード線ＷＬ１に所定のゲート電圧Ｖｇｗを所定の書き込み時間（例えば、５００ｎｓｅｃ）だけ印加する。すなわち、ロウデコーダ１０４は、制御信号に基づいて、ワード線ＷＬ１を介してメモリセル１０ａおよび１０ｂのゲート端子にゲート電圧Ｖｇｗを印加する。
【００３３】
カラムデコーダ１０６は、コントローラ１０８より供給された制御信号に含まれるアドレス情報によって示されるデータ書き込み先のメモリセルに対応するビット線ＢＬ間に記録データ“００”に対応する所定の書き込み電圧Ｖｄｓｗを印加する。すなわち、カラムデコーダ１０６は、制御信号に基づいてメモリセル１０ａ（１０ｂ）の各ソース端子に接続されたビット線ＢＬにデータ“００”に応じた書き込み電圧Ｖｄｓｗを印加するとともに、これらのメモリセルの各ドレイン端子に接続されたビット線ＢＬを接地電位とする。これにより、メモリセル１０ａ（１０ｂ）のドレイン−ソース端子間にデータ“００”に応じた書き込み電圧Ｖｄｓｗが印加され、第１電荷蓄積部３０ａ（３０ｂ）には一定量の電荷が注入されることとなる。
【００３４】
各メモリセルに対して第１回目の電荷注入が完了すると、コントローラ１０８は、電荷注入が行われた書き込み対象のメモリセル１０ａ（１０ｂ）の読み出し電流を確認すべく、ロウデコーダ１０４およびカラムデコーダ１０６に制御信号を供給する。
【００３５】
ロウデコーダ１０４は、コントローラ１０８より供給された制御信号に含まれるアドレス情報によって示されるデータ読み出しの対象となるメモリセル１０ａ（１０ｂ）に対応するワード線ＷＬ１にデータ読み出しのための所定のゲート電圧Ｖｇｒを印加する。
【００３６】
カラムデコーダ１０６は、コントローラ１０８より供給された制御信号に含まれるアドレス情報によって示されるデータ読み出し対象となるメモリセル１０ａ（１０ｂ）に対応するビット線ＢＬに所定の読み出し電圧Ｖｄｓｒを印加する。具体的には、メモリセル１０ａ（１０ｂ）のドレイン端子に接続されたビット線ＢＬに所定の読み出し電圧Ｖｄｓｒを印加するとともに、ソース端子に接続されたビット線ＢＬを接地電位とする。これにより、メモリセル１０ａ（１０ｂ）のドレイン−ソース間に読み出し電流が流れる。
【００３７】
コントローラ１０８は、電流検出器６０から得られる読み出し電流の値を計測し、この読み出し電流値がデータ“００”に応じた所定値に達しているかどうかを判定する。コントローラ１０８は、読み出し電流の値が所定値に達していないと判定した場合には、第２回目の電荷注入処理を行うべく、ロウデコーダ１０４およびカラムデコーダ１０６に制御信号を供給し、これに応じて行われるメモリセル１０ａ（１０ｂ）の第１電荷蓄積部３０ａ（３０ｂ）に対する第２回目の電荷注入が完了すると、再度読み出し電流の計測および判定を行う。かかる電荷注入処理と読み出し電流の確認処理は、読み出し電流の値がデータ“００”に応じた所定値に達するまで複数回に亘って行われる。コントローラ１０８によって読み出し電流が所定値に達したと判定されるとデータ“００”の書き込み処理が完了する。
【００３８】
このように、各メモリセルに対するデータの書き込み処理は、電荷注入処理と読み出し電流の確認処理とを交互に繰り返し行うことで、書き込み対象の電荷蓄積部に対してデータ“００”に応じた電荷量の電荷注入が行われるのである。かかる書き込み方法によれば、記録データに対応する電荷量を一括で注入する場合と比較して、読み出し電流のセル間ばらつきを低減することができ、書き込みおよび読み出し精度の向上を図るとともに、過剰な電荷注入を防止して電流ウィンドウを確保することができる。図６（ａ）は、メモリセル１０ａ及び１０ｂの第１電荷蓄積部３０ａ及び３０ｂへのデータ“００”の書き込み処理が完了した状態を示している。
【００３９】
データ書き込み処理の第３ステップＳ３は、データ“０１”の書き込み処理である。コントローラ１０８は、ステップＳ３ではデータ“０１” を一次保存部１０８Ａより抽出し、このデータに付随するアドレス情報によって示される記録先のメモリセルに書き込み処理を行うべく、ロウデコーダ１０４およびカラムデコーダ１０６に制御信号を供給する。本実施例ではワード線ＷＬ１に接続されたメモリセル１０ａのドレイン側の第２電荷蓄積部３２ａにデータ“０１”を書き込むものとする。
【００４０】
この場合、ロウデコーダ１０４は、制御信号に基づいてワード線ＷＬ１に所定のゲート電圧Ｖｇｗを所定の書き込み時間（例えば、５００ｎｓｅｃ）だけ印加する。一方、カラムデコーダ１０６は、制御信号に基づいてメモリセル１０ａのドレイン端子に接続されたビット線ＢＬにデータ“０１”に対応する所定の書き込み電圧Ｖｄｗ、例えば、６Ｖを印加し、ソース端子に接続されたビット線ＢＬを接地電位とする。これにより、メモリセル１０ａのドレイン−ソース端子間にそれぞれデータ“０１”に応じた書き込み電圧Ｖｄｗが同時に印加され、第２電荷蓄積部３２ａには一定量の電荷が注入されることとなる。
【００４１】
各メモリセルに対して第１回目の電荷注入処理が完了すると、コントローラ１０８は、電荷注入が行われた書き込み対象のメモリセル１０ａの読み出し電流を確認すべく、ロウデコーダ１０４およびカラムデコーダ１０６に制御信号を供給する。
【００４２】
ロウデコーダ１０４は、コントローラ１０８より供給された制御信号に含まれるアドレス情報によって示されるデータ読み出しの対象となるメモリセル１０ａに対応するワード線ＷＬ１にデータ読み出しのための所定のゲート電圧Ｖｇｒを印加する。
【００４３】
カラムデコーダ１０６は、コントローラ１０８より供給された制御信号に含まれるアドレス情報によって示されるデータ読み出し対象となるメモリセル１０ａに対応するビット線ＢＬに所定の読み出し電圧を印加する。具体的には、メモリセル１０ａのソース端子に接続されたビット線ＢＬに所定の読み出し電圧Ｖｓｒを印加するとともに、ドレイン端子に接続されたビット線ＢＬを接地電位（Ｖｄｒ＝０Ｖ）とする。これにより、メモリセル１０ａのドレイン−ソース間に読み出し電流が流れる。
【００４４】
コントローラ１０８は、電流検出器６０から得られる読み出し電流の値を計測し、この読み出し電流値がデータ“０１”に応じた所定値に達しているかどうかを判定する。コントローラ１０８は、読み出し電流の値が所定値に達していないと判定した場合には、第２回目の電荷注入処理を行うべく、ロウデコーダ１０４およびカラムデコーダ１０６に制御信号を供給し、これに応じて行われるメモリセル１０ａの第２電荷蓄積部３２ａに対する第２回目の電荷注入が完了すると、再度読み出し電流の計測および判定を行う。かかる電荷注入処理と読み出し電流の確認処理は、読み出し電流の値がデータ“０１”に応じた所定値に達するまで複数回に亘って行われ、読み出し電流値がコントローラ１０８によって所定値に達したと判定されるとデータ“０１”の書き込み処理が完了する。
【００４５】
次に、データ書き込み処理の第４ステップＳ４は、データ“１０”の書き込み処理である。コントローラ１０８は、ステップＳ４ではデータ“１０” を一次保存部１０８Ａより抽出し、このデータに付随するアドレス情報によって示される記録先のメモリセルに書き込み処理を行うべく、ロウデコーダ１０４およびカラムデコーダ１０６に制御信号を供給する。本実施例ではワード線ＷＬ１に接続されたメモリセル１０ｂのドレイン側の第２電荷蓄積部３２ｂにデータ“１０”を書き込むものとする。
【００４６】
この場合、ロウデコーダ１０４は、制御信号に基づいてワード線ＷＬ１に所定のゲート電圧Ｖｇｗを所定の書き込み時間（例えば、５００ｎｓｅｃ）だけ印加する。一方、カラムデコーダ１０６は、制御信号に基づいてメモリセル１０ｂのドレイン端子に接続されたビット線ＢＬにデータ“１０”に対応する所定の書き込み電圧（Ｖｄｗ＝６Ｖ）を印加し、ソース端子に接続されたビット線ＢＬを接地電位（Ｖｓｗ＝０Ｖ）とする。これにより、メモリセル１０ｂのドレイン−ソース端子間にそれぞれデータ“１０”に応じた書き込み電圧が同時に印加され、第２電荷蓄積部３２ｂには一定量の電荷が注入されることとなる。
【００４７】
各メモリセル１０に対して第１回目の電荷注入処理が完了すると、コントローラ１０８は、電荷注入が行われた書き込み対象のメモリセル１０ｂの読み出し電流を確認すべく、ロウデコーダ１０４およびカラムデコーダ１０６に制御信号を供給する。
【００４８】
ロウデコーダ１０４は、コントローラ１０８より供給された制御信号に含まれるアドレス情報によって示されるデータ読み出しの対象となるメモリセル１０ｂに対応するワード線ＷＬ１にデータ読み出しのための所定のゲート電圧Ｖｇｒを印加する。
【００４９】
カラムデコーダ１０６は、コントローラ１０８より供給された制御信号に含まれるアドレス情報によって示されるデータ読み出し対象となるメモリセル１０ａに対応するビット線ＢＬに所定の読み出し電圧を印加する。具体的には、メモリセル１０ｂのソース端子に接続されたビット線ＢＬに所定の読み出し電圧Ｖｓｒを印加するとともに、ドレイン端子に接続されたビット線ＢＬを接地電位とする。これにより、メモリセル１０ｂのドレイン−ソース間に読み出し電流が流れる。
【００５０】
コントローラ１０８は、電流検出器６０から得られる読み出し電流の値を計測し、この読み出し電流値がデータ“１０”に応じた所定値に達しているかどうかを判定する。コントローラ１０８は、読み出し電流の値が所定値に達していないと判定した場合には、第２回目の電荷注入処理を行うべく、ロウデコーダ１０４およびカラムデコーダ１０６に制御信号を供給し、これに応じて行われるメモリセル１０ｂの第２電荷蓄積部３２ｂに対する第２回目の電荷注入が完了すると、再度読み出し電流の計測および判定を行う。かかる電荷注入処理と読み出し電流の確認処理は、読み出し電流の値がデータ“１０”に応じた所定値に達するまで複数回に亘って行われ、読み出し電流値がコントローラ１０８によって所定値に達したと判定されるとデータ“１０”の書き込み処理が完了する。
【００５１】
このように、各メモリセル１０に対するデータ“０１”と“１０”の書き込み処理は、上記したデータ“００”の場合と同様、電荷注入処理と読み出し電流の確認処理とを交互に繰り返し行うことで、書き込み対象の電荷蓄積部に対してデータ“０１”および“１０”に対応する電荷量の電荷注入が行われるのである。このような書き込み方法によれば、記録データに対応する電荷量を一括で注入する場合と比較して、読み出し電流のセル間ばらつきを低減することができ、書き込みおよび読み出し精度の向上を図るとともに、過剰な電荷注入を防止して電流ウィンドウを確保することができる。
【００５２】
また、本実施例においては、各メモリセルのドレイン端子およびソース端子に接続されるビット線ＢＬに印加する書き込み電圧Ｖｄｓｗを記録データに応じて変化させることにより４値のデータを記録するようにしたので、共通のワード線ＷＬに接続された複数のメモリセルに対して同時に書き込み処理を行うことが可能となる。このようにして、ワード線ＷＬ１に接続された全てのメモリセルに対するデータ書き込み処理が完了する。図６（ｂ）は、メモリセル１０ａの第２電荷蓄積部３２ａへのデータ“０１”の書き込み処理と、メモリセル１０ｂの第２電荷蓄積部３２ｂへのデータ“１０”の書き込み処理が完了した状態を示している。
【００５３】
データ書き込み処理の第５ステップＳ５は、全入力データの書き込み処理が完了したか否かの判定処理である。コントローラ１０８は、不揮発性半導体メモリ１００に記録すべき全入力データの書き込み処理が未完了であると判定した場合には、ステップＳ６に進み、全入力データの書き込み処理が完了したと判定した場合には、データ書き込み処理を終了する。
【００５４】
データ書き込み処理の第６ステップＳ６は、メモリセルアレイ上の全てのワード線が選択済みであるか否かの判定処理である。つまり、本ステップでは、メモリセルアレイ上の全メモリセルに対して書き込み処理が既に完了しているか否かの判定を行う。コントローラ１０８は、未選択のワード線ＷＬが存在すると判定した場合には、ステップＳ１に戻り、データ書き込み処理を継続する。この場合、新たなワード線の選択がなされ、これに接続された各メモリセルが書き込み対象となり、上記ステップＳ１からステップＳ４までの処理を経てデータ書き込み処理が行われる。本ステップにおいて、コントローラ１０８は、全てのワード線ＷＬが選択済みであると判定した場合には、データ書き込み処理を終了する。
【００５５】
なお、電荷蓄積部に電荷が蓄積されていない状態がデータ“１１”に対応するため、データ“１１”を書き込む場合には、具体的な処理を行うことを要しない。
【００５６】
図７は、上記第２〜第４ステップにおけるデータ書き込み処理において、各メモリセルにワード線ＷＬ１を介して各メモリセルのゲート端子に印加されるゲート電圧Ｖｇｗの時間推移を例示したものである。図中の各プロットは、データ書き込みの際に行われる複数回に亘る電荷注入処理の際の各電圧値を示しており、四角形のプロットはデータ“００”の書き込みの際の印加電圧を示し、丸形のプロットはデータ“０１”の書き込みの際の印加電圧を示し、Ｘ字形のプロットはデータ“１０”の書き込みの際の印加電圧を示している。
【００５７】
図７において、読み出し電流の最も低いデータ“００”の書き込みが先行して行われている。データ“００”の書き込みは、１０回に亘る電荷注入により完了する。このとき、ワード線ＷＬ１には、データ“００”に対応する９Ｖ〜１０Ｖのゲート電圧Ｖｇｗが注入回数を重ねる毎に順次ステップアップするように印加される。一方、メモリセル１０ａおよび１０ｂのソース−ドレイン端子間には、ビット線ＢＬを介して６．０Ｖ一定のドレイン電圧Ｖｄｗが印加される。
【００５８】
データ“００”の書き込み処理が完了するとデータ“０１”の書き込みが行われる。データ“０１”の書き込みは、２０回に亘る電荷注入により完了する。このとき、ワード線ＷＬ１には、データ“０１”に対応する７．５Ｖ〜９．４Ｖのゲート電圧Ｖｇｗが注入回数を重ねる毎に順次ステップアップするよう印加される。一方、メモリセル１０ａのドレイン−ソース端子間には、ビット線ＢＬを介して６．０Ｖ一定のドレイン電圧Ｖｄｗが印加される。
【００５９】
データ“０１”の書き込み処理が完了するとデータ“１０”の書き込みが行われる。データ“１０”の書き込みは、２０回に亘る電荷注入により完了する。このとき、ワード線ＷＬ１には、データ“１０”に対応する６．５Ｖ〜８．４Ｖのゲート電圧Ｖｇｗが注入回数を重ねる毎に順次ステップアップするよう印加される。一方、データ“１０”を書き込むべきメモリセル１０ａのドレイン−ソース端子間には、ビット線ＢＬを介して６．０Ｖ一定のドレイン電圧Ｖｄｗが印加される。
【００６０】
かかる不揮発性半導体メモリ装置においては、上記のデータの書き込み処理動作が実行される前に、前処理動作が実行される。次に、その前処理動作について説明する。
【００６１】
前処理動作においては、図８に示すように、先ず、メモリセル１０全ての初期電流の測定が行われる（ステップＳ１１）。この初期電流測定では予め定められた条件での各メモリセル１０のドレイン−ソース間に流れる電流が測定される。その条件はドレイン側の第２電荷蓄積部３２に対しては例えば、ゲート電圧Ｖｇｉ＝３．２Ｖ、ドレイン電圧Ｖｄｉ＝１．８Ｖ、ソース電圧Ｖｓｉ＝０Ｖであり、ソース側の第１電荷蓄積部３０に対してはドレイン電圧Ｖｄｉとソース電圧Ｖｓｉとが逆になる。
【００６２】
初期電流測定は、ワード線ＷＬ毎に行われ、選択された１のワード線ＷＬに接続されたメモリセルが順次、初期電流測定対象となる。コントローラ１０８からの制御信号に応じてロウデコーダ１０４によって１つのワード線ＷＬが選択されると、コントローラ１０８からの制御信号に応じてカラムデコーダ１０６によって１つのワード線ＷＬ上のメモリセルが１つずつ順番に第１電荷蓄積部３０及び第２電荷蓄積部３２各々に対する初期電流測定が行われる。コントローラ１０８は電流検出器６０から得られる読み出し電流の値を計測し、この読み出し電流値を初期電流値として保存テーブルとして保存する。保存テーブルには予め定められたメモリセル１０の順番、すなわちセル順番で第１電荷蓄積部３０及び第２電荷蓄積部３２各々に対する初期電流値が保存される。ここで、第１電荷蓄積部３０についての初期電流値を第１初期電流値とし、第２電荷蓄積部３２についての初期電流値を第２初期電流値とする。
【００６３】
次に、コントローラ１０８は初期電流値の平均値Ａｖｅを算出すると共に最小値Ｍｉｎを検出する（ステップＳ１２）。初期電流値の平均値Ａｖｅは全てのメモリセル１０の第１及び第２初期電流値の保存値から算出される。最小値Ｍｉｎはその第１及び第２初期電流値の保存値から検索される。そして、コントローラ１０８は閾値電流Ｉｒｅｆを平均値Ａｖｅに等しくさせ、閾値最小電流Ｉｒｅｆ＿ＭｉｎをＭｉｎ＋(Ａｖｅ−Ｍｉｎ)/ｂなる式によって算出する（ステップＳ１３）。閾値最小電流Ｉｒｅｆ＿Ｍｉｎの式のｂは例えば、４である。
【００６４】
コントローラ１０８は、閾値電流Ｉｒｅｆ及び閾値最小電流Ｉｒｅｆ＿Ｍｉｎを設定すると、メモリセルアレイの全メモリセル１０のうちからセル順番に従って１つのメモリセル１０を選択し、その選択メモリセルの第１及び第２初期電流値を保存テーブルから読み出す（ステップＳ１４）。そして、カウント値Ｃｏｕｎｔを０に設定し（ステップＳ１５）、カウント値Ｃｏｕｎｔに１を加算する（ステップＳ１６）。
【００６５】
コントローラ１０８は、ステップＳ１４で読み出した第１初期電流値が第２初期電流値より小であるか否かを判別する（ステップＳ１７）。第１初期電流値＜第２初期電流値であれば、第２初期電流値が閾値電流Ｉｒｅｆより大でありかつ第１初期電流値が閾値最小電流Ｉｒｅｆ＿Ｍｉｎより大であるか否かを判別する（ステップＳ１８）。一方、第１初期電流値≧第２初期電流値であれば、第１初期電流値が第２初期電流値より大であるか否かを判別する（ステップＳ１９）。第１初期電流値＞第２初期電流値であれば、第１初期電流値が閾値電流Ｉｒｅｆより大でありかつ第２初期電流値が閾値最小電流Ｉｒｅｆ＿Ｍｉｎより大であるか否かを判別する（ステップＳ２０）。なお、ステップＳ１７及びＳ１９が比較ステップである。
【００６６】
ステップＳ１８で第２初期電流値＞Ｉｒｅｆかつ第１初期電流値＞Ｉｒｅｆ＿Ｍｉｎであるならば、第２電荷蓄積部３２への電荷注入を行うべく書き込みを行う（ステップＳ２１）。ステップＳ１９で第１初期電流値＞Ｉｒｅｆかつ第２初期電流値＞Ｉｒｅｆ＿Ｍｉｎであるならば、第１電荷蓄積部３０への電荷注入を行うべく書き込みを行う（ステップＳ２２）。ステップＳ２１及びＳ２２の書き込みはステップＳ２〜Ｓ４各々の書き込み処理と同様である。ステップＳ２１の書き込みの場合にはゲート電圧Ｖｇｗはカウント値Ｃｏｕｎｔが１〜１０では５．０Ｖ、カウント値Ｃｏｕｎｔが１１〜２０では６．０Ｖ、カウント値Ｃｏｕｎｔが２１〜５０では７．０Ｖである。また、ドレイン電圧Ｖｄｗは４．０Ｖ一定、ソース電圧Ｖｓｗは０Ｖ一定である。ステップＳ２２の書き込みの場合にはゲート電圧Ｖｇｗは同じであるが、ドレイン電圧Ｖｄｗとソース電圧Ｖｓｗとは逆になる。更に、ステップＳ２１及びＳ２２の書き込み時間は５００ｎｓｅｃである。なお、ステップＳ２１が第２電荷注入ステップであり、ステップＳ２２が第１電荷注入ステップである。
【００６７】
ステップＳ２１又はＳ２２の実行後、選択メモリセルの読み出し電流値の測定がステップＳ１１と同様に行われる（ステップＳ２３）。ステップＳ２３ではコントローラ１０８は電流検出器６０から各々得られる読み出し電流値を新たな第１及び第２初期電流値とする。そして、その新たな第１及び第２初期電流値各々が閾値電流Ｉｒｅｆより小であるか、又は第１及び第２初期電流値の少なくとも一方が閾値最小電流Ｉｒｅｆ＿Ｍｉｎより小であるか否かを判別する（ステップＳ２４）。第１及び第２初期電流値＜Ｉｒｅｆ、又は第１又は第２初期電流値＜Ｉｒｅｆ＿Ｍｉｎであれば、第１初期電流値と第２初期電流値とはほぼ一致したとみなすことができる。この場合には、全メモリセル１０についての前処理動作が終了したか否かを判別する（ステップＳ２５）。全メモリセル１０についての前処理動作が終了していないならば、別のメモリセル１０を選択するためにステップＳ１４に戻って上記の動作が繰り返される。ステップＳ２４で、第１及び第２初期電流値＜Ｉｒｅｆ、と第１又は第２初期電流値＜Ｉｒｅｆ＿Ｍｉｎとのいずれかを満足できない場合には、カウント値Ｃｏｕｎｔが５０に等しいか否かを判別する（ステップＳ２６）。Ｃｏｕｎｔ＝５０ならば、ステップＳ２５に進んで全メモリセル１０についての前処理動作が終了したか否かが判別される。Ｃｏｕｎｔ＜５０ならば、ステップＳ１６に進んでカウント値Ｃｏｕｎｔをインクリメントした後、上記の動作が繰り返される。
【００６８】
このように、前処理動作が行われることにより、各メモリセルの第１及び第２初期電流値をほぼ一致させることができる。よって、その後に実行されるデータ書き込み処理でデータが書き込まれた場合に、各メモリセルにおいてドレイン端子側の電荷蓄積部及びソース端子側の電荷蓄積部とでデータ読み出しの際の読み出し電流値のばらつきを低減させることができる。
【００６９】
データ書き込み処理では書き込み過ぎを防止するために、上記したステップＳ２〜Ｓ４に代えて次のように行うことができる。
【００７０】
コントローラ１０８は、図９に示すように、先ず、カウント値Ｃｏｕｎｔを０に設定し（ステップＳ３１）、カウント値Ｃｏｕｎｔに１を加算する（ステップＳ３２）。そして、データ“００”の書き込みであるか否かを判別する（ステップＳ３３）。データ“００”の書き込みの場合には、書き込み用のドレイン電圧Ｖｄｗを６．０Ｖに設定し、閾値電流Ｉｒｅｆを１０μＡに設定する（ステップＳ３４）。データ“００”の書き込みでないならば、データ“０１”の書き込みであるか否かを判別する（ステップＳ３５）。データ“０１”の書き込みの場合には、書き込み用のドレイン電圧Ｖｄｗを６．０Ｖに設定し、閾値電流Ｉｒｅｆを２０μＡに設定する（ステップＳ３６）。データ“０１”の書き込みでないならば、データ“１０”の書き込みであるか否かを判別する（ステップＳ３７）。データ“１０”の書き込みの場合には、書き込み用のドレイン電圧Ｖｄｗを５．３Ｖに設定し、閾値電流Ｉｒｅｆを３０μＡに設定する（ステップＳ３８）。なお、ここではデータ書き込み処理の例としてドレイン端子側の電荷蓄積部、すなわち第２電荷蓄積部に電荷注入を行う場合について示しているが、ソース端子側の電荷蓄積部、すなわち第１電荷蓄積部に電荷注入を行う場合には書き込み用のドレイン電圧Ｖｄｗに代えて書き込み用のソース電圧Ｖｓｗが設定される。また、このステップＳ３４、Ｓ３６、又はＳ３８で設定される閾値電流Ｉｒｅｆは図２のデータ毎の電流ウィンドウの部分に位置する電流値である。
【００７１】
ステップＳ３４、Ｓ３６、又はＳ３８でドレイン電圧Ｖｄｗ及び閾値電流Ｉｒｅｆを設定した後、データを書き込むべきメモリセル１０のドレイン−ソース間に流れる電流を読み出す（ステップＳ３９）。ステップＳ３９の電流の読み出しでは、コントローラ１０８からの制御信号に応じてロウデコーダ１０４によって書き込み対象のメモリセル１０に接続されたワード線ＷＬに読み出し用のゲート電圧Ｖｇｒが印加され、カラムデコーダ１０６は、コントローラ１０８より供給された制御信号に含まれるアドレス情報によって示される書き込み対象となるメモリセル１０に対応するビット線ＢＬに所定の読み出し電圧を印加する。具体的には、メモリセル１０のソース端子に接続されたビット線ＢＬに所定の読み出し用のソース電圧Ｖｓｒを印加するとともに、ドレイン端子に接続されたビット線ＢＬを読み出し用のドレイン電圧Ｖｄｒとする。これにより、メモリセル１０のドレイン−ソース間に読み出し電流が流れる。コントローラ１０８は電流検出器６０から得られる読み出し電流の値を測定し、この測定した電流値を読み取り電流値Ｉとする。  
【００７２】
コントローラ１０８は読み取り電流値ＩがＩｒｅｆ＋αより小であるか否かを判別する（ステップＳ４０）。αは所定電流値であり、例えば、３μＡである。Ｉ≧Ｉｒｅｆ＋αであるならば、データの書き込みを行う（ステップＳ４１）。一方、Ｉ＜Ｉｒｅｆ＋αであるならば、ドレイン電圧Ｖｄｗをβだけ減少させる（ステップＳ４２）。βは所定電圧であり、例えば、０．５Ｖである。ステップＳ４２の実行後、データの書き込みを行う（ステップＳ４３）。
【００７３】
ステップＳ４１又はＳ４３では、ロウデコーダ１０４は、コントローラ１０８からの制御信号に基づいて選択されたワード線ＷＬ１にゲート電圧Ｖｇｗを所定の書き込み時間（例えば、５００ｎｓｅｃ）だけ印加する。ゲート電圧Ｖｇｗはカウント値Ｃｏｕｎｔが１〜１０では６．０Ｖ〜１０．０Ｖで段階的に上昇され、カウント値Ｃｏｕｎｔが１１〜６０では１０．０Ｖに固定される。一方、ゲート電圧Ｖｇｗの印加と同時にカラムデコーダ１０６は、コントローラ１０８からの制御信号に基づいてメモリセル１０ｂのドレイン端子に接続されたビット線ＢＬにデータに対応するドレイン電圧Ｖｄｗ（上記のステップＳ３４、Ｓ３６、又はＳ３８で設定された電圧）を印加し、ソース端子に接続されたビット線ＢＬを接地電位（Ｖｓｗ＝０Ｖ）とする。これにより、メモリセル１０ｂのドレイン−ソース端子間にそれぞれデータ“１０”に応じた書き込み電圧が同時に印加され、第２電荷蓄積部３２ｂには一定量の電荷が注入されることとなる。
【００７４】
ステップＳ４１又はＳ４３のデータの書き込み後、その書き込んだメモリセル１０のドレイン−ソース間に流れる電流を読み出す（ステップＳ４４）。この電流の読み出しは上記のステップＳ３９と同一である。コントローラ１０８はステップＳ４４の実行により得られた読み取り電流値ＩがＩｒｅｆより小であるか否かを判別する（ステップＳ４５）。ステップＳ４５でＩ＜Ｉｒｅｆであれば、データの書き込み処理が完了する。ステップＳ４５でＩ≧Ｉｒｅｆであれば、所望のデータの書き込みがされていないので、カウント値Ｃｏｕｎｔが６０に等しいか否かを判別する（ステップＳ４６）。Ｃｏｕｎｔ＜６０ならば、ステップＳ３２に進んでカウント値Ｃｏｕｎｔをインクリメントし、それ以降の書き込み処理動作が繰り返される。Ｃｏｕｎｔ＝６０ならば、データの書き込み処理が完了する。
【００７５】
このように、図９に示したデータ書き込み処理においてはデータが書き込まれるメモリセルの電荷蓄積部に対応した現在の読み出し電流値がＩ＜Ｉｒｅｆ＋αであるときにはＩ≧Ｉｒｅｆ＋αの場合に比して書き込み用のドレイン電圧Ｖｄｒを低く設定するので、書き込み後の読み出し電流値を適切な値にすることができ、いわゆる書き込まれ過ぎを防止することができる。
【００７６】
図１０(a)〜(e)は１つのメモリセルのソースＳ側の第１電荷蓄積部３１及びドレインＤ側の第２電荷蓄積部３２各々にデータ“０１”を書き込むための電荷注入方法を示している。この電荷注入方法において、図１０(a)に示す初期状態では第１電荷蓄積部３１及び第２電荷蓄積部３２各々には電荷が注入されていない各々がデータ“１１”に対応した電荷（電子）蓄積状態を示している。先ず、第１工程として、ドレインＤ側の第２電荷蓄積部３２に書き込み処理により所定量の電荷注入が行われる。この結果、図１０(b)に示すように、第２電荷蓄積部３２に所定量の電荷５０が蓄積される。この第２電荷蓄積部３２の電荷蓄積量ではデータ“０１”に対応しない。第２工程として、ソースＳ側の第１電荷蓄積部３１に書き込み処理により電荷注入が行われる。この結果、図１０(c)に示すように、第１電荷蓄積部３１に所定量の電荷５０が蓄積される。この電荷蓄積量ではデータ“０１”に対応しない。第３工程として、ドレインＤ側の第２電荷蓄積部３２に書き込み処理により電荷の追加注入が行われる。この結果、図１０(d)に示すように、第２電荷蓄積部３２に更に所定量の電荷５０が蓄積される。これにより第２電荷蓄積部３２の電荷蓄積量はデータ“０１”に対応する。第４工程として、ソースＳ側の第１電荷蓄積部３１に書き込み処理により電荷の追加注入が行われる。この結果、図１０(e)に示すように、第１電荷蓄積部３１に更に所定量の電荷５０が蓄積される。この電荷蓄積量はデータ“０１”に対応する。よって、第１電荷蓄積部３１及び第２電荷蓄積部３２各々へのデータ“０１”に対応したデータ書き込みが完了する。
【００７７】
このように、図１０に示した電荷注入においては、メモリセルの双方の電荷蓄積部に交互に電荷注入を行って双方の蓄積電荷量を徐々に増加させるので、メモリセルの双方の電荷蓄積部の電荷蓄積量の差が大きくなることがない。よって、メモリセルの一方の電荷蓄積部に電荷注入を行ってデータ“０１”に対応した電荷量が蓄積された後にメモリセルの他方の電荷蓄積部に電荷注入を行ってデータ“０１”に対応した電荷量が蓄積される従来の場合のように先に電荷注入した一方の電荷蓄積部についてのデータ“０１”に対応した読み出し電流量の低下が防止される。
【００７８】
なお、上記した実施例においては、メモリセル１０のドレイン電圧、ソース電圧及びゲート電圧が印加されることを示したが、実際にはバックゲート電圧Ｖｂも印加される。バックゲート電圧Ｖｂは通常、書き込み時及び読み出し時に０Ｖに設定される。
【００７９】
また、上記した実施例において、本発明のデータ書き込み方法をコントローラ１０８内のコンピュータ（図示せず）がソフトウエアの各命令を実行することによって達成するようにしても良いし、又はコントローラ１０８内のハードウエアの構成によって達成するようにしても良い。
【符号の説明】
【００８０】
１０  メモリセル
３１  第１電荷蓄積部
３２  第２電荷蓄積部
６０  電流検出器
１００  不揮発性半導体メモリ
１０４  ロウデコーダ
１０６  カラムデコーダ
１０８  コントローラ
【図１】
0005671335.tif 000002
【図２】
0005671335.tif 000003
【図３】
0005671335.tif 000004
【図４】
0005671335.tif 000005
【図５】
0005671335.tif 000006
【図６】
0005671335.tif 000007
【図７】
0005671335.tif 000008
【図８】
0005671335.tif 000009
【図９】
0005671335.tif 000010
【図１０】
0005671335.tif 000011