(57)【要約】【課題】読み出しエラーが発生する前の適切な時期にリフレッシュ動作を行うことが可能なフラッシュメモリを提供することを可能とする。【解決手段】制御部は、読み出し対象のメモリセルに、一方のビット線の電位を引き抜かせ、ビット線電位調整部に、第１の速度で他方のビット線の電位を引き抜かせながら、センスアンプに、データを読み出させる第１の読み出し動作と、読み出し対象のメモリセルに、一方のビット線の電位を引き抜かせ、ビット線電位調整部に、第１の速度よりも速い第２の速度で他方のビット線の電位を引き抜かせながら、センスアンプに、データを読み出させる第２の読み出し動作と、を行い、第１の読み出し動作で読み出したデータと、第２の読み出し動作で読み出したデータとが異なると判定した場合には、読み出し対象のメモリセルに記憶されているデータを、再度書き込むリフレッシュ動作を行う。【選択図】図１４
2018041515.tif 000002
【特許請求の範囲】
【請求項１】
複数のメモリセルと、
互いに異なる前記メモリセルと接続された一対のビット線と入力端で接続され、読み出し対象の前記メモリセルと接続された一方の前記ビット線の電位と、他方の前記ビット線の電位とに基づいて前記読み出し対象のメモリセルに記憶されているデータを読み出すセンスアンプと、
前記ビット線の電位を調整するビット線電位調整部と、
制御部と、
を備え、
前記制御部は、
前記読み出し対象のメモリセルに、前記一方のビット線の電位を引き抜かせ、前記ビット線電位調整部に、第１の速度で前記他方のビット線の電位を引き抜かせながら、前記センスアンプに、前記データを読み出させる第１の読み出し動作と、
前記読み出し対象のメモリセルに、前記一方のビット線の電位を引き抜かせ、前記ビット線電位調整部に、前記第１の速度よりも速い第２の速度で前記他方のビット線の電位を引き抜かせながら、前記センスアンプに、前記データを読み出させる第２の読み出し動作と、を行い、
前記第１の読み出し動作で読み出した前記データと、前記第２の読み出し動作で読み出した前記データとを比較する第１のデータ比較動作と、
前記第１の読み出し動作で読み出した前記データと、前記第２の読み出し動作で読み出した前記データとが異なると判定した場合には、前記読み出し対象のメモリセルに記憶されている前記データを、前記読み出し対象のメモリセルに再度書き込む第１のリフレッシュ動作と、を行う、
フラッシュメモリ。
【請求項２】
請求項１に記載のフラッシュメモリにおいて、
前記制御部は、
前記第１の読み出し動作で読み出した前記データと、前記第２の読み出し動作で読み出した前記データとが同一であると判定した場合には、
前記読み出し対象のメモリセルに、前記一方のビット線の電位を引き抜かせ、前記ビット線電位調整部に、前記第１の速度よりも遅い第３の速度で前記他方のビット線の電位を引き抜かせながら、前記センスアンプに前記データを読み出させる第３の読み出し動作を行い、
前記第１の読み出し動作で読み出した前記データと、前記第３の読み出し動作で読み出した前記データと、を比較し、
前記第１の読み出し動作で読み出した前記データと、前記第３の読み出し動作で読み出した前記データと、が異なると判定した場合には前記第１のリフレッシュ動作を行う、
フラッシュメモリ。
【請求項３】
請求項１に記載のフラッシュメモリにおいて、
前記制御部は、前記第１のリフレッシュ動作を行った後、前記読み出し対象のメモリセルに対し、前記第１の読み出し動作と、前記第２の読み出し動作と、前記第１のデータ比較動作と、を行う、
フラッシュメモリ。
【請求項４】
請求項２に記載のフラッシュメモリにおいて、
前記制御部は、前記第１のリフレッシュ動作を行った後、前記読み出し対象のメモリセルに対し、前記第１の読み出し動作と、前記第２の読み出し動作と、前記第１のデータ比較動作と、前記第３の読み出し動作と、前記第２のデータ比較動作と、を行う、
フラッシュメモリ。
【請求項５】
請求項１に記載のフラッシュメモリにおいて、
複数の前記メモリセルがマトリクス状に配置されたメモリマットを複数有するメモリアレイを備え、
前記ビット線は前記メモリマットごとに設けられ、
前記ビット線のそれぞれは、ビット線選択用スイッチング素子を介して複数の前記メモリマットに共通の共通ビット線と接続されている、
フラッシュメモリ。
【請求項６】
請求項５に記載のフラッシュメモリにおいて、
前記メモリマットでは、前記複数のメモリセルが、第１の方向及び第２の方向に沿ってマトリクス状に配置され、
前記第２の方向に沿った一列分の前記メモリセルごとに、前記ビット線が複数設けられ、
前記ビット線のそれぞれは、読み出しメモリセル選択用スイッチング素子を介して前記センスアンプの入力端と接続されている、
フラッシュメモリ。
【請求項７】
請求項６に記載のフラッシュメモリにおいて、
前記センスアンプは、一対の前記メモリマットごとに設けられ、
それぞれの前記メモリマットの前記ビット線は、前記センスアンプの入力端と接続されている、
フラッシュメモリ。
【請求項８】
請求項６に記載のフラッシュメモリであって、
それぞれの前記メモリマットにおける、前記第２の方向に沿った一列分の前記メモリセルの個数が同数である、
フラッシュメモリ。
【請求項９】
複数のメモリセルと、
前記メモリセルで記憶されているデータを読み出すセンスアンプと、
前記ビット線の電位を調整するビット線電位調整部と、
制御部と、
を備え、
一対の前記メモリセルでは、一方の前記メモリセルにデータが記憶され、他方の前記メモリセルに前記データを反転させた反転データが記憶されることにより前記データが記憶され、
前記センスアンプは、前記一対のメモリセルのそれぞれと接続された一対のビット線と入力端で接続され、前記一方のメモリセルと接続された一方の前記ビット線の電位と、前記他方のメモリセルと接続された他方の前記ビット線の電位と、に基づいて前記一対のメモリセルに記憶されている前記データを読み出し、
前記制御部は、
前記一方のメモリセルに、前記一方のビット線の電位を引き抜かせ、前記他方のメモリセルに、前記他方のビット線の電位を引き抜かせながら、前記センスアンプに、前記データを読み出させる第４の読み出し動作と、
前記一方のメモリセルに、前記一方のビット線の電位を引き抜かせ、前記他方のメモリセル及び前記ビット線電位調整部に、前記他方のビット線の電位を引き抜かせながら、前記センスアンプに、前記データを読み出させる第５の読み出し動作と、
前記第４の読み出し動作で読み出した前記データと、前記第５の読み出し動作で読み出した前記データと、を比較する第３のデータ比較動作と、を行い、
前記第３のデータ比較動作において、前記第４の読み出し動作で読み出した前記データと、前記第５の読み出し動作で読み出した前記データと、が異なると判定した場合には、前記一対のメモリセルに記憶されている前記データ及び前記反転データを、前記一対のメモリセルに再度書き込む第２のリフレッシュ動作と、を行う、
フラッシュメモリ。
【請求項１０】
請求項９に記載のフラッシュメモリにおいて、
前記制御部は、
前記第４の読み出し動作で読み出した前記データと、前記第５の読み出し動作で読み出した前記データとが同一であると判定した場合には、
前記一方のメモリセル及び前記ビット線電位調整部に、前記一方のビット線の電位を引き抜かせ、前記他方のメモリセルに、前記他方のビット線の電位を引き抜かせながら、前記センスアンプに前記データを読み出させる第６の読み出し動作と、
前記第４の読み出し動作で読み出した前記データと、前記第６の読み出し動作で読み出した前記データと、を比較する第４のデータ比較動作と、を行い、
前記第４のデータ比較動作において、前記第４の読み出し動作で読み出した前記データと、前記第６の読み出し動作で読み出した前記データと、が異なると判定した場合には前記第２のリフレッシュ動作と、を行う、
フラッシュメモリ。
【請求項１１】
請求項９に記載のフラッシュメモリにおいて、
前記制御部は、前記第２のリフレッシュ動作を行った後、前記一対のメモリセルに対し、前記第４の読み出しステップと、前記第５の読み出しステップと、前記第３のデータ比較動作と、を行う、
フラッシュメモリ。
【請求項１２】
請求項１０に記載のフラッシュメモリにおいて、
前記制御部は、前記第２のリフレッシュ動作を行った後、前記一対のメモリセルに対し、前記第４の読み出し動作と、前記第５の読み出し動作と、前記第３のデータ比較動作と、前記第３の読み出し動作と、前記第２のデータ比較動作と、を行う、
フラッシュメモリ。
【請求項１３】
複数のメモリセルと、
互いに異なる前記メモリセルと接続された一対のビット線と入力端で接続され、読み出し対象の前記メモリセルと接続された一方の前記ビット線の電位と、他方の前記ビット線の電位とに基づいて前記読み出し対象のメモリセルに記憶されているデータを読み出すセンスアンプと、
前記ビット線の電位を調整するビット線電位調整部と、
前記データに基づいてエラー訂正用データを生成し、前記センスアンプが読み出した前記データのエラーを訂正したエラー訂正後データを生成するエラー訂正部と、
制御部と、
を備え、
前記制御部は、
前記読み出し対象のメモリセルに、前記一方のビット線の電位を引き抜かせ、前記ビット線電位調整部に、第１の速度よりも速い第２の速度で前記他方のビット線の電位を引き抜かせながら、前記センスアンプに、前記データを読み出させる第２の読み出し動作と、
前記エラー訂正部に、前記第２の読み出し動作で読み出した前記データ及び前記エラー訂正用データに基づいて前記データのエラーを検出させる、第１のエラー検出動作と、を行い、
前記第１のエラー検出動作において、前記エラー訂正部が、前記第２の読み出し動作で読み出した前記データのエラーを検出した場合には、前記エラー訂正部に、前記第２の読み出し動作で読み出した前記データ及び前記エラー訂正用データに基づいてエラー訂正された、エラー訂正後データを生成させ、前記エラー訂正後データを前記読み出し対象のメモリセルに再度書き込む第３のリフレッシュ動作と、を行う、
フラッシュメモリ。
【請求項１４】
請求項１３に記載のフラッシュメモリにおいて、
前記制御部は、
前記第１のエラー検出動作において、前記第２の読み出し動作で読み出した前記データにエラーがないと判定した場合には、
前記読み出し対象のメモリセルに、前記一方のビット線の電位を引き抜かせ、前記ビット線電位調整部に、前記第１の速度よりも遅い第３の速度で前記他方のビット線の電位を引き抜かせながら、前記センスアンプに前記データを読み出させる第３の読み出し動作と、
前記エラー訂正部に、前記第３の読み出し動作で読み出した前記データ及び前記エラー訂正用データに基づいて前記データのエラーを検出させる、第２のエラー検出動作と、を行い、
前記第２のエラー検出動作において、前記エラー訂正部が、前記第３の読み出し動作で読み出した前記データのエラーを検出した場合には、前記エラー訂正部に、前記第３の読み出し動作で読み出した前記データ及び前記エラー訂正用データに基づいてエラー訂正された、エラー訂正後データを生成させ、前記エラー訂正後データを前記読み出し対象のメモリセルに再度書き込む第４のリフレッシュ動作と、を行う、
フラッシュメモリ。
【請求項１５】
請求項１３に記載のフラッシュメモリにおいて、
前記制御部は、前記第３のリフレッシュ動作を行った後、前記読み出し対象のメモリセルに対し、前記第２の読み出し動作と、前記第１のエラー検出動作と、を行う、
フラッシュメモリ。
【請求項１６】
請求項１４に記載のフラッシュメモリにおいて、
前記制御部は、前記第４のリフレッシュ動作を行った後、前記読み出し対象のメモリセルに対し、前記第２の読み出し動作と、前記第１のエラー検出動作と、前記第３の読み出し動作と、前記第２のエラー検出動作と、を行う、
フラッシュメモリ。
【請求項１７】
複数のメモリセルと、
前記メモリセルで記憶されているデータを読み出すセンスアンプと、
前記ビット線の電位を調整するビット線電位調整部と、
前記データに基づいてエラー訂正用データを生成し、前記センスアンプが読み出した前記データのエラーを訂正するエラー訂正部と、
制御部と、
を備え、
一対の前記メモリセルでは、一方の前記メモリセルにデータが記憶され、他方の前記メモリセルに前記データを反転させた反転データが記憶されることにより前記データが記憶され、
前記センスアンプは、前記一対のメモリセルのそれぞれと接続された一対のビット線と入力端で接続され、前記一方のメモリセルと接続された一方の前記ビット線の電位と、前記他方のメモリセルと接続された他方の前記ビット線の電位とに基づいて前記一対のメモリセルに記憶されている前記データを読み出し、
前記制御部は、
前記一方のメモリセルに、前記一方のビット線の電位を引き抜かせ、前記他方のメモリセル及び前記ビット線電位調整部に、前記他方のビット線の電位を引き抜かせながら、前記センスアンプに、前記データを読み出させる第５の読み出し動作と、
前記エラー訂正部に、前記第５の読み出し動作で読み出した前記データ及び前記エラー訂正用データに基づいて前記データのエラーを検出させる、第３のエラー検出動作と、を行い、
前記第３のエラー検出動作において、前記エラー訂正部が、前記第５の読み出し動作で読み出した前記データのエラーを検出した場合には、前記エラー訂正部に、前記第５の読み出し動作で読み出した前記データ及び前記エラー訂正用データに基づいてエラー訂正された、エラー訂正後データを生成させ、前記エラー訂正後データを前記一対のメモリセルに再度書き込む第５のリフレッシュ動作と、を行う、
フラッシュメモリ。
【請求項１８】
請求項１７に記載のフラッシュメモリにおいて、
前記制御部は、
前記第３のエラー検出動作において、前記第５の読み出し動作で読み出した前記データにエラーがないと判定した場合には、
前記一方のメモリセル及び前記ビット線電位調整部に、前記一方のビット線の電位を引き抜かせ、前記他方のメモリセルに、前記他方のビット線の電位を引き抜かせながら、前記センスアンプに前記データを読み出させる第６の読み出し動作と、
前記エラー訂正部に、前記第６の読み出し動作で読み出した前記データ及び前記エラー訂正用データに基づいて前記データのエラーを検出させる、第４のエラー検出動作と、を行い、
前記第４のエラー検出動作において、前記エラー訂正部が、前記第６の読み出し動作で読み出した前記データのエラーを検出した場合には、前記エラー訂正部に、前記第６の読み出し動作で読み出した前記データ及び前記エラー訂正用データに基づいてエラー訂正された、エラー訂正後データを生成させ、前記エラー訂正後データを前記一対のメモリセルに再度書き込む第６のリフレッシュ動作と、を行う、
フラッシュメモリ。
【請求項１９】
請求項１７に記載のフラッシュメモリにおいて、
前記制御部は、前記第５のリフレッシュ動作を行った後、前記読み出し対象のメモリセルに対し、前記第５の読み出し動作と、前記第３のエラー検出動作と、を行う、
フラッシュメモリ。
【請求項２０】
請求項１８に記載のフラッシュメモリにおいて、
前記制御部は、前記第６のリフレッシュ動作を行った後、前記読み出し対象のメモリセルに対し、前記第５の読み出し動作と、前記第３のエラー検出動作と、前記第６の読み出し動作と、前記第４のエラー検出動作と、を行う、
フラッシュメモリ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュメモリに関するものである。
【背景技術】
【０００２】
フラッシュメモリは、例えば、ＵＳＢメモリ、メモリカード等に用いられている。また、フラッシュメモリは、これら以外にも、例えばマイクロコントローラ等にも搭載され、マイクロコントローラ等で取り扱われるデータを記憶する。
【０００３】
フラッシュメモリは不揮発性メモリであり、書き換えられたデータはメモリセル内に記憶されている。しかし、データが書き換えられた後の条件によっては、メモリセル内の閾値電圧が大きく変動し、データが適切に読み出されなくなる場合がある。
【０００４】
例えば、特許文献１では、温度センサやタイマを備え、温度センサで測定された温度が閾値温度を超えた期間をタイマで計測し、計測された期間が閾値に到達するとリフレッシュが行われる不揮発性メモリが開示されている。
【０００５】
また、例えば、特許文献２では、不揮発性メモリに対する書き込み動作を実行してからの経過時間を計測するタイマーと、不揮発性メモリ近傍の温度を測定する温度センサーと、不揮発性メモリに対する書き込み動作の回数をカウントするカウンターと、タイマーによって計測される時間に対して、温度センサーによって測定される温度と、カウンターによってカウントされる書き込む動作の回数に基づく重み付けを行った後、タイマーによって計測される重み付けされた経過時間が所定時間を超えたときに、不揮発性メモリに対して再度書き込み動作を実行する不揮発性メモリを有する機器が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特表２０１２−５１４２４９号公報
【特許文献２】特開２０００−１１６７０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ところが、特許文献１では、電源が投入されていないと、不揮発性メモリが閾値温度を超えた期間が計測されないため、閾値温度を超えた期間を正確に計測することができない。また、特許文献２においても同様に、電源が投入されていないと、タイマーによる書き込み動作後の経過時間が計測されず、カウンターによる不揮発性メモリに対する書き込み動作の回数がカウントされない。このため、リフレッシュ動作のタイミングが遅れ、データが適切に読み出されなくなる可能性がある。また、期間（時間）でリフレッシュ動作のタイミングが規定されると、不必要なリフレッシュ動作が行われる可能性がある。
【０００８】
そこで、本発明は、読み出しエラーが発生する前の適切な時期にリフレッシュ動作を行うことが可能なフラッシュメモリを提供することを目的とする。
【課題を解決するための手段】
【０００９】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、以下のとおりである。
【００１０】
本発明の代表的な実施の形態によるフラッシュメモリは、複数のメモリセルと、互いに異なるメモリセルと接続された一対のビット線と入力端で接続され、読み出し対象のメモリセルと接続された一方のビット線の電位と、他方のビット線の電位とに基づいて読み出し対象のメモリセルに記憶されているデータを読み出すセンスアンプと、ビット線の電位を引き抜くビット線電位調整部と、制御部と、を備え、制御部は、読み出し対象のメモリセルに、一方のビット線の電位を引き抜かせ、ビット線電位調整部に、第１の速度で他方のビット線の電位を引き抜かせながら、センスアンプに、データを読み出させる第１の読み出し動作と、読み出し対象のメモリセルに、一方のビット線の電位を引き抜かせ、ビット線電位調整部に、第１の速度よりも速い第２の速度で他方のビット線の電位を引き抜かせながら、センスアンプに、データを読み出させる第２の読み出し動作とを行い、第１の読み出し動作で読み出したデータと、第２の読み出し動作で読み出したデータとを比較し、第１の読み出し動作で読み出したデータと、第２の読み出し動作で読み出したデータとが異なると判定した場合には、読み出し対象のメモリセルに記憶されているデータを、読み出し対象のメモリセルに再度書き込むリフレッシュ動作を行う。
【発明の効果】
【００１１】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下のとおりである。
【００１２】
すなわち、代表的な実施の形態によれば、読み出しエラーが発生する前の適切な時期にリフレッシュ動作を行うことが可能となる。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施の形態１に係るフラッシュメモリを搭載したマイクロコントローラの構成の一例を示すブロック図である。
【図２】マイクロコントローラにおけるアドレスマップの一例を示す図である。
【図３】本発明の実施の形態１に係るフラッシュメモリの構成の一例を示す図である。
【図４】本発明の実施の形態１に係るメモリアレイの構成の一例を示す図である。
【図５】本発明の実施の形態１に係るメモリマットの構成の一部を拡大して示す図である。
【図６】本発明の実施の形態１に係るメモリセルの構成の一例を示す断面図である。
【図７】各動作においてメモリセルに印加される電圧の一例を示す図である。
【図８】書き込み状態、消去状態におけるメモリセルの閾値電圧の概略を示す図である。
【図９】フラッシュメモリのデータ保持特性の概要を示す図である。
【図１０】データ保持特性の劣化の様子を示す図である。
【図１１】センスアンプ及びその周辺の回路構成の一例を示す図である。
【図１２】本発明の実施の形態１に係る各読み出し動作時におけるレジスタ出力の一覧を示す図である。
【図１３】各読み出し動作時におけるビット線の電位変化を示す図である。
【図１４】本発明の実施の形態１におけるフラッシュメモリのリフレッシュ方法に係るフローチャート図である。
【図１５】本発明の実施の形態２におけるフラッシュメモリのリフレッシュ方法に係るフローチャート図である。
【図１６】本発明の実施の形態３に係るフラッシュメモリの構成の一例を示す図である。
【図１７】センスアンプ及びその周辺の回路構成の一例を示す図である。
【図１８】イニシャライズ状態、書き込み状態におけるメモリセルの閾値電圧の概略を示す図である。
【図１９】本発明の実施の形態３に係る各読み出し動作時において電位引き抜き部に印加する電位の一覧を示す図である。
【図２０】本発明の実施の形態５に係るセンスアンプ及びその周辺の回路構成の一例を示す図である。
【図２１】本発明の実施の形態５に係る各読み出し動作時において電位引き抜き部に印加する電位の一覧を示す図である。
【図２２】本発明の実施の形態５におけるフラッシュメモリのリフレッシュ方法に係るフローチャート図である。
【図２３】本発明の実施の形態６に係るフラッシュメモリを搭載したマイクロコントローラの構成の一例を示すブロック図である。
【図２４】本発明の実施の形態６におけるフラッシュメモリのリフレッシュ方法に係るフローチャート図である。
【図２５】本発明の実施の形態７におけるフラッシュメモリのリフレッシュ方法に係るフローチャート図である。
【図２６】本発明の実施の形態８におけるフラッシュメモリのリフレッシュ方法に係るフローチャート図である。
【図２７】本発明の実施の形態９に係るメモリセルの回路構成の一例を示す図である。
【図２８】本発明の実施の形態９に係るメモリセルの構成の一例を示す断面図である。
【図２９】各動作においてメモリセルに印加される電圧の一例を示す図である。
【発明を実施するための形態】
【００１４】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全ての図において、同一部には原則として同一の符号を付し、その繰り返しの説明は省略する。
【００１５】
（実施の形態１）
＜マイクロコントローラの構成＞
図１は、本発明の実施の形態１に係るフラッシュメモリを搭載したマイクロコントローラの構成の一例を示すブロック図である。マイクロコントローラ３００は、図１に示すように、フラッシュメモリ１００、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３０１、ＤＭＡＣ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ）３０２、シーケンサ３０３、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）３０４、バスインタフェース（バスＩ／Ｆ）３０５、ＰＬＬ（Ｐｈａｓｅ  Ｌｏｃｋｅｄ  Ｌｏｏｐ）３０６、温度センサ３０７、タイマ３０８、ポート３０９、３１０、高速バス３１１、周辺バス３１２を備えている。
【００１６】
フラッシュメモリ１００、ＣＰＵ３０１、ＤＭＡＣ３０２、シーケンサ３０３、ＲＡＭ３０４、バスインタフェース３０５は、高速バス３１１を介して互いに接続され、これら各部の間では、高速バス３１１を介したデータの入出力が行われる。高速バス３１１では、周辺バス３１２と比較すると高速でデータの入出力が行われる。
【００１７】
フラッシュメモリ１００、バスインタフェース３０５、ＰＬＬ３０６、タイマ３０７、温度センサ３０７、タイマ３０８、ポート３０９、３１０は、周辺バス３１２を介して互いに接続され、これら各部の間では、周辺バス３１２を介したデータの入出力が行われる。
【００１８】
ＣＰＵ３０１は、マイクロコントローラ３００を構成する各部を制御する。例えば、ＣＰＵ３０１は、フラッシュメモリ１００との間でデータの入出力を行う。また、ＣＰＵ３０１は、後述するように、ＤＭＡＣ３０２を介して、フラッシュメモリ１００や周辺回路等との間でデータの入出力を行わせる。また、ＣＰＵ３０１は、シーケンサ３０３に対し、フラッシュメモリ１００への消去動作、書き換え（書き込み）動作、読み出し動作等の各動作に係るシーケンス制御を行なわせる。また、ＣＰＵ３０１は、バスインタフェース３０５を介し、周辺バス３１２と接続された各部との間でデータの入出力を行う。
【００１９】
ＤＭＡＣ３０２は、ＣＰＵ３０１等の指示に基づいて、ＣＰＵ３０１を介さずに、フラッシュメモリ１００、周辺回路等との間でデータの入出力を行う。
【００２０】
シーケンサ３０３は、フラッシュメモリ１００をシーケンス制御する。シーケンサ３０３は、例えば、ＣＰＵ３０１、ＤＭＡＣ３０２からの指示に基づいて、フラッシュメモリ１００における消去動作、書き換え（書き込み）動作、読み出し動作等の各動作に関し、後述するフラッシュメモリ１００を構成する各部に対してシーケンス制御を行う。
【００２１】
ＲＡＭ３０４では、例えば、ＤＲＡＭ、ＳＲＡＭ等の揮発性メモリである。ＲＡＭ３０４では、例えば、マイクロコントローラ１００を動作させる各種プログラムが展開される。展開されたプログラムを、ＣＰＵ３０１が実行することにより、プログラム中の各種機能が実現される。また、ＲＡＭ３０４では、ＣＰＵ３０１等で扱われる各種データが一時的に記憶される。
【００２２】
バスインタフェース３０５は、高速バス３１１と周辺バス３１２とを接続し、異なるバスを介して接続される各部との間でデータの入出力を行う。例えば、ＣＰＵ３０１及びＰＬＬ３０６が、バスインタフェース３０５を介して接続され、ＣＰＵ３０１には、ＰＬＬ３０６から出力されたクロック信号が入力される。また、ＣＰＵ３０１及び温度センサ３０７が、バスインタフェース３０５を介して接続され、ＣＰＵ３０１には、温度センサ３０７から出力された温度データ（例えば抵抗値）が入力される。また、ＣＰＵ３０１及びタイマ３０８が、バスインタフェース３０５を介して接続され、ＣＰＵ３０１には、タイマ３０８から出力された時間データが入力される。また、ＣＰＵ３０１及びポート３０９、３１０が、バスインタフェース３０５を介して接続され、外部装置へ入力されるデータがＣＰＵ３０１からポート３０９、３１０に出力され、外部装置から出力されたデータがＣＰＵ３０１に入力される。
【００２３】
ＰＬＬ３０６は、水晶発振子等を有する位相同期回路である。ＰＬＬ３０６は、入力側のＸＴＡＬ端子及び出力側のＥＸＴＡＬ端子と接続されている。ＰＬＬ３０６は、ＸＴＡＬ端子から入力された信号を基に、所定周波数のクロック信号を生成する。あるいは、ＰＬＬ３０６は、ＸＴＡＬ端子から入力された信号を基に、周波数がそれぞれ異なる複数のクロック信号を生成する。生成されたクロック信号は、周辺バス３１２を介してマイクロコントローラ３００の各部に入力される。
【００２４】
温度センサ３０７は、マイクロコントローラ３００の温度を測定する。例えば、温度センサ３０７は、例えば金属等の抵抗体等で構成され、抵抗値を温度データとしてＣＰＵ３０１に出力する。
【００２５】
タイマ３０８は、マイクロコントローラ１００の内部で発生させた又は外部から入力されたクロックに基づいて時間を計測する。例えば、タイマ３０８は、クロックのカウント数、クロックの周波数に基づいて所定時刻からの経過時間を計測する。タイマ３０８は、例えば、計測した経過時間を時間データとしてＣＰＵ３０１に出力する。
【００２６】
ポート３０９、３１０は、マイクロコントローラ１００と、図示しない外部装置とを接続させる外部インタフェースであり、ポート３０９、３１０を介して、マイクロコントローラ３００と外部装置との間でデータの入出力が行われる。例えば、ＣＰＵ３０１から出力されたデータは、ポート３０９、３１０を介して外部装置に入力される。また、外部装置から出力されたデータは、ポート３０９、３１０を介してＣＰＵ３０１に入力される。
【００２７】
また、マイクロコントローラ３００は、複数の電源端子を有しており、それぞれの電源端子を介して、高電位Ｖｃｃ、低電位Ｖｓｓが供給される。
【００２８】
また、マイクロコントローラ３００は、スタンバイ信号ＳＴＢＹが入力されるスタンバイ端子、リセット信号ＲＥＳが入力されるリセット端子を有している。スタンバイ信号ＳＴＢＹが有効になると、マイクロコントローラ３００はスタンバイ状態に遷移し、リセット信号ＲＥＳが有効になると、マイクロコントローラ３００は初期化される。
【００２９】
図２は、マイクロコントローラにおけるアドレスマップの一例を示す図である。マイクロコントローラ３００のアドレス空間は、例えば、図２に示すように、フラッシュメモリ１００のアドレスマップ、フラッシュメモリ１００以外のアドレスマップからなる。図２では、マイクロコントローラ３００の先頭アドレスが、フラッシュメモリ１００の先頭アドレスと一致している場合が例示されている。この場合には、フラッシュメモリ１００の先頭アドレス、すなわち、マイクロコントローラ３００の先頭アドレスからフラッシュメモリ３００の最終アドレスまでが、フラッシュメモリ１００のアドレス空間を構成し、フラッシュメモリ１００の最終アドレスの次のアドレスからマイクロコントローラ３００の最終アドレスまでがフラッシュメモリ１００以外のアドレス空間を構成する。
【００３０】
＜フラッシュメモリの構成＞
図３は、本発明の実施の形態１に係るフラッシュメモリの構成の一例を示す図である。フラッシュメモリ１００は、図３に示すように、読み出し系行セレクタ１０１、入力クロックド・インバータ１０２、入出力回路・電源制御回路・レジスタ１０３、電源回路１０４、ベリファイ・センスアンプ１０５、書き換え列セレクタ１０６、書き込みラッチ１０７、メモリアレイ１０８、出力バッファ１０９、書き換え系行セレクタ１１０、制御部１２０等を備えている。
【００３１】
読み出し系行セレクタ１０１は、例えば高速バス（アドレスバスと呼ぶ場合がある）３１１を介して入力されたアドレス信号のデコード結果に基づいて、メモリアレイ１０８における読み出し系の行（ワード）を選択する。
【００３２】
入力クロックド・インバータ１０２は、後述する入出力回路・電源制御回路・レジスタ１０３から入力される信号に基づいて、例えば、書込み動作、消去動作、読み出し動作等における各種タイミングを規定する信号を生成する。
【００３３】
入出力回路・電源制御回路・レジスタ１０３は、例えば周辺バス３１２を介して入力されたクロック信号に同期して、周辺バス３１２へのデータの入出力等の制御を行う。また、入出力回路・電源制御回路・レジスタ１０３は、後述する電源回路１０４の動作を制御する。また、入出力回路・電源制御回路・レジスタ１０３は、例えば高速バス３１１を介して入力された書き込み用データを書き込みラッチ１０７に出力する。また、入出力回路・電源制御回路・レジスタ１０３は、後述する制御部１２０から入力された書き込み用データを書き込みラッチ１０７に出力する。
【００３４】
電源回路１０４は、フラッシュメモリ１００内で使用される複数の種類の電圧を生成する。例えば、電源回路１０４は、高電位側電源Ｖｄｄ、低電位側電源Ｖｓｓ等の各電源における電位を生成する。
【００３５】
ベリファイ・センスアンプ１０５は、メモリアレイ１０８への書き込み動作を行う際に、書込み用データと書き込まれたデータとが同一であるかを確認するベリファイを行う。
【００３６】
書き換え列セレクタ１０６は、例えば、入力クロックド・インバータ１０２で生成された信号に基づいて、メモリアレイ１０８に対して書き込み動作を行う際における、書き換え列（共通ビット線）の選択を行う。
【００３７】
書き込みラッチ１０７は、入出力回路・電源制御回路・レジスタ１０３から出力された書き込み用データを一時的に保持する。書き込みラッチ１０７は、例えば、入力クロックド・インバータ１０２で生成された信号に基づいて、保持している書き込み用データを主ビット線に出力する。
【００３８】
メモリアレイ１０８は、複数のメモリマットが配列されて構成されている。メモリアレイ１０８の詳細については後述する。
【００３９】
出力バッファ１０９は、メモリアレイ１０８から読み出されたデータを、高速バス３１１を介して、例えばＣＰＵ３０１、ＤＭＡＣ３０２、ＲＡＭ３０４に出力する。また、出力バッファ１０９は、メモリアレイ１０８から読み出されたデータを、後述する制御部１２０に出力する。
【００４０】
書き換え系行セレクタ１１０は、例えば高速バス３１１を介して入力されたアドレス信号のデコード結果に基づいて、メモリアレイ１０８における書き換え系の行（例えば、メモリゲート線）を選択する。
【００４１】
制御部１２０は、後述する通常リード（第１の読み出し動作）で読み出したデータと、後述する１データ・マージンリード（第２の読み出し動作）で読み出したデータとを比較する。また、制御部１２０は、通常リードで読み出したデータと、１データ・マージンリードで読み出したデータとが異なると判定した場合には、後述する読み出し対象のメモリセル１４０に記憶されているデータを、読み出し対象のメモリセル１４０に再度書き込むリフレッシュ動作を行う。また、制御部１２０は、通常リードで読み出したデータと、１データ・マージンリードで読み出したデータとが同一であると判定した場合には、通常リードで読み出したデータと、後述する０データ・マージンリード（第３の読み出し動作）で読み出したデータとを比較する。また、制御部１２０は、通常リードで読み出したデータと、０データ・マージンリードで読み出したデータとが異なると判定した場合には、前述したフレッシュ動作を行う。
【００４２】
次に、メモリアレイ１０８について説明する。図４は、本発明の実施の形態１に係るメモリアレイの構成の一例を示す図である。図５は、本発明の実施の形態１に係るメモリマットの構成の一部を拡大して示す図である。図６は、本発明の実施の形態１に係るメモリセルの構成の一例を示す断面図である。
【００４３】
メモリアレイ１０８は、例えば図４に示すように、複数のメモリマットｍａｔを有する。メモリマットｍａｔでは、例えば図５に示すように、複数のメモリセル１４０が、列方向（第２の方向）及び行方向（第１の方向）に沿ってマトリクス状に配置され、列方向に沿った一列分のメモリセル１４０ごとに、ビット線１５１（１５１ｊ、１５１ｋ）が複数設けられている。
【００４４】
センスアンプＳＡは、例えば図４に示すように、一対のメモリマットｍａｔごとに設けられている。それぞれのメモリマットｍａｔのビット線１５１（１５１ｊ、１５１ｋ）は、図３に示すように、読み出しメモリセル選択用スイッチング素子１８０（１８０ｊ、１８０ｋ）を介してセンスアンプＳＡの入力端と接続されている。メモリセル選択用スイッチング素子１８０（１８０ｊ、１８０ｋ）は、例えば、ＭＯＳ（ｍｅｔａｌ−ｏｘｉｄｅ−ｓｅｍｉｃｏｎｄｕｃｔｏｒ）トランジスタからなる。メモリセル選択用スイッチング素子１８０（１８０ｊ、１８０ｋ）のゲートは、メモリセル選択線１８１（１８１ｊ、１８１ｋ）と接続されている。メモリセル選択線１８１（１８１ｊ、１８１ｋ）は、例えば、読み出し系行セレクタ１０１と接続されている。
【００４５】
ビット線１５１（１５１ｊ、１５１ｋ）のそれぞれは、例えば図３に示すように、ビット線選択用スイッチング素子１７０（１７０ｊ、１７０ｋ）を介して複数のメモリマットｍａｔに共通の共通ビット線１５０と接続されている。ビット線選択用スイッチング素子１７０（１７０ｊ、１７０ｋ）は、例えば、ＭＯＳトランジスタからなる。ビット線選択用スイッチング素子１７０（１７０ｊ、１７０ｋ）のゲートは、ビット線選択線１７１（１７１ｊ、１７１ｋ）と接続されている。ビット線選択は、例えば、書き換え系行セレクタ１１０と接続されている。
【００４６】
一対のメモリマットｍａｔは、例えば図４に示すように、階層センスアンプ単位を構成している。例えば、メモリマットｍａｔｊ０及びメモリマットｍａｔｋ０は、階層センスアンプ単位を構成し、メモリマットｍａｔｊ０とメモリマットｍａｔｋ０との間には、図４に示すように、センスアンプＳＡ０が設けられている。メモリマットｍａｔｊ１及びメモリマットｍａｔｋ１は、階層センスアンプ単位を構成し、メモリマットｍａｔｊ１とメモリマットｍａｔｋ１との間には、図４に示すように、センスアンプＳＡ１が設けられている。メモリマットｍａｔｊ２及びメモリマットｍａｔｋ２は、階層センスアンプ単位を構成し、メモリマットｍａｔｊ２とメモリマットｍａｔｋ２との間には、図４に示すように、センスアンプＳＡ２が設けられている。メモリマットｍａｔｊ３及びメモリマットｍａｔｋ３は、階層センスアンプ単位を構成し、メモリマットｍａｔｊ３とメモリマットｍａｔｋ３との間には、図４に示すように、センスアンプＳＡ３が設けられている。ここでは、８つのメモリマットｍａｔｊ０〜ｍａｔｊ３、ｍａｔｋ０〜ｍａｔｋ３と、これらのメモリマットｍａｔに対応する４つのセンスアンプＳＡ０〜ＳＡ３が設けられた場合について例示しているが、このような構成に限定されるものではない。
【００４７】
このように本実施の形態では、メモリアレイ１０８が、複数（例えば４つ）の階層センスアンプ単位に分割され、選択された階層センスアンプ単位において、後述する書きこみ動作、消去動作、読み出し動作が行われる。
【００４８】
なお、それぞれのメモリマットｍａｔにおける、列方向に沿った一列分のメモリセル１４０の個数は、同数であることが好ましい。このようにすれば、ビット線１５１（１５１ｊ、１５１ｋ）ごとの配線負荷のばらつきが抑えられ、センスアンプＳＡがデータを読み出す際におけるエラーの発生が抑えられる。
【００４９】
＜メモリセルの構成＞
メモリセル１４０は、図５、図６に示すように、選択トランジスタ１４１、メモリトランジスタ１４２を備えている。例えば、半導体基板１４０ａには、図６に示すように、複数のメモリセル１４０に共通のＷＥＬＬ領域１４０ｇが形成され、選択トランジスタ１４１、メモリトランジスタ１４２は、ＷＥＬＬ領域１４０ｇ上に形成されている。選択トランジスタ１４１は、例えばＭＯＳトランジスタからなる。具体的には、選択トランジスタ１４１は、図６に示すように、半導体基板（ｓｅｍｉｃｏｎｄｕｃｔｏｒ）１４０ａのＷＥＬＬ領域１４０ｇ上に、ゲート酸化膜（ｏｘｉｄｅ）１４１ｂ、コントロールゲート（ｍｅｔａｌ）１４１ｃが積層された構成となっている。
【００５０】
メモリトランジスタ１４２は、例えばＭＯＮＯＳ（ｍｅｔａｌ−ｏｘｉｄｅ−ｎｉｔｒｉｄｅ−ｏｘｉｄｅ−ｓｉｌｉｃｏｎ）型のトランジスタからなる。メモリトランジスタ１４２は、図６に示すように、ソース１４２ｆ付近の領域では、半導体基板（ｓｅｍｉｃｏｎｄｕｃｔｏｒ）１４０ａのＷＥＬＬ領域１４０ｇ上に、酸化膜（ｏｘｉｄｅ）１４２ｂ、窒化膜（ｎｉｔｒｉｄｅ）１４２ｃ、酸化膜（ｏｘｉｄｅ）１４２ｄ、メモリゲート（ｍｅｔａｌ）１４２ｅが積層されている。
【００５１】
また、選択トランジスタ１４１とメモリトランジスタ１４２との境界付近では、酸化膜（ｏｘｉｄｅ）１４２ｂ、窒化膜（ｎｉｔｒｉｄｅ）１４２ｃ、酸化膜（ｏｘｉｄｅ）１４２ｄは、コントロールゲート１４１ｃとメモリゲート１４２ｅとを分断するように鉛直上方に延在している。このように、メモリセル１４０は、コントロールゲート４１ｃとメモリゲート１４２ｅとが分断された、スプリットゲート型のＭＯＮＯＳ構造を有している。窒化膜１４２ｃは、絶縁膜である酸化膜１４２ｂ、１４２ｄに挟持され、電気的に絶縁された電荷捕獲層となっている。すなわち、メモリセル１４０は、電荷捕獲型メモリ方式で構成されている。
【００５２】
選択トランジスタ１４１のドレイン１４１ｄは、図５に示すように、ビット線１５１（１５１ｊ、１５１ｋ）と接続されている。選択トランジスタ１４１のコントロールゲート１４１ｃは、図５に示すように、ワード線１５２と接続されている。ワード線１５２は、メモリマット１０８の行ごとに設けられている。すなわち、ワード線１５２は、行方向（第１の方向）に沿った複数のメモリセル１４０と接続されている。ワード線１５２は、図３に示すように、例えば、読み出し系行セレクタ１０１と接続されている。メモリトランジスタ１４２のソース１４２ｆは、図５に示すように、複数のメモリセル１４０に共通のソース線１５３と接続されている。メモリトランジスタ１４２のメモリゲート１４２ｅは、図５に示すように、メモリゲート線１５４と接続されている。メモリゲート線１５４は、メモリマット１０８の行ごとに設けられている。すなわち、メモリゲート線１５４は、行方向（第１の方向）に沿った複数のメモリセル１４０と接続されている。メモリゲート線１５４は、図３に示すように、例えば、書き換え系行セレクタ１１０と接続されている。
【００５３】
図７は、各動作においてメモリセルに印加される電圧の一例を示す図である。図７では、書き込み動作、消去動作、読み出し動作における、ビット線１５１、コントロールゲート１４１ｃ、メモリゲート１４２ｅ、ソース線１５３、ＷＥＬＬ領域１４０ｇに印加される各電圧が示されている。図７（ａ）では、後述するＢＴＢＴＨＨ（Ｂａｎｄ−ｔｏ−ｂａｎｄ  Ｔｕｎｎｅｌｉｎｇ  Ｈｏｔ  Ｈｏｌｅ）と呼ばれる方式により消去動作を行う場合について示されている。  図７（ａ）によれば、書き込み動作時には、例えば、ビット線１５１に０Ｖ、コントロールゲート１４１ｃに１．５Ｖ、メモリゲート１４２ｅに１０Ｖ、ソース線１５３に６Ｖ、ＷＥＬＬ領域１４０ｇに０Ｖの各電圧が印加される。書込み動作時には、例えば、ＳＳＩ（Ｓｏｕｒｃｅ  Ｓｉｄｅ  Ｉｎｊｅｃｔｉｏｎ）と呼ばれる方式により、窒化膜１４２ｃに高効率のホットエレクトロン（電子）が注入される。書込み動作が実施されたメモリセル１４０は、データ「０」を記憶している。
【００５４】
また、消去動作時には、例えば、ビット線１５１はハイインピーダンス、コントロールゲート１４１ｃに１．５Ｖ、メモリゲート１４２ｅに−１０Ｖ、ソース線１５３に６Ｖ、ＷＥＬＬ領域１４０ｇに０Ｖの各電圧が印加される。消去動作は、例えば、複数のメモリセル１４０からなるブロック単位で実施される。消去動作時には、例えば、ＢＴＢＴＨＨ方式により、窒化膜１４２ｃにホットホール（ホール）が注入される。消去動作が実施されたメモリセル４０は、データ「１」を記憶している。
【００５５】
また、読み出し動作時には、例えば、ビット線１５１に１．５Ｖ、コントロールゲート１４１ｃに１．５Ｖ、メモリゲート１４２ｅに０Ｖ、ソース線１５３に０Ｖ、ＷＥＬＬ領域１４０ｇに０Ｖの各電圧が印加される。
【００５６】
図７(ｂ)では、後述するＦＮトンネル方式により消去動作を行う場合について示されている。図７（ｂ）によれば、書き込み動作、読み出し動作において各部に印加される電位は同じであるので、ここでは詳細な説明を省略する。消去動作時には、例えば、ビット線１５１はハイインピーダンス、コントロールゲート１４１ｃに１．５Ｖ、メモリゲート１４２ｅに１４Ｖ、ソース線１５３に０Ｖ、ＷＥＬＬ領域１４０ｇに０Ｖの各電圧が印加される。消去動作は、例えば、複数のメモリセル１４０からなるブロック単位で実施される。消去動作時には、例えば、ＦＮトンネル方式により、メモリゲート１４２ｅから窒化膜１４２ｃにトンネル現象によりホールが注入される。消去動作が実施されたメモリセル４０は、データ「１」を記憶している。
【００５７】
図８は、書き込み状態、消去状態におけるメモリセルの閾値電圧の概略を示す図である。メモリセル１４０では、窒化膜１４２ｃに電荷を注入することにより、メモリトランジスタ１４２の閾値電圧を変化させる。例えば、窒化膜１４２ｃに電子が注入された書き込み状態のメモリトランジスタ１４２の閾値電圧は、例えば図８に示すように、窒化膜１４２ｃに電子もホールも存在しない中性な状態における閾値電圧よりも高くなる。これに対して、窒化膜１４２ｃにホールが注入された消去状態のメモリトランジスタ１４２の閾値電圧は、例えば図８に示すように、中性な状態における閾値電圧よりも低くなる。
【００５８】
図９は、フラッシュメモリのデータ保持特性の概要を示す図である。図１０は、データ保持特性の劣化の様子を示す図である。メモリセル１４０では、データが書き換えられてから時間が経過するごとに閾値電圧が変動する。例えば、データ「１」を記憶している消去状態のメモリセル１４０では、図９に示すように、データの書き換え後、次第に閾値電圧が上昇する。また、データ「０」を記憶している書き込み状態のメモリセル１４０では、図９に示すように、データの書き換え後、次第に閾値電圧が低下する。このように、メモリセル１４０では、データが書き換えられてから時間が経過すると、データ保持特性が劣化する。
【００５９】
また、メモリセル１４０では、データの書き換えを繰り返すことによってもデータ保持特性が劣化する。具体的には、メモリセル１４０では、書き込み動作による電子注入、消去動作によるホール注入を繰り返すことによりデータの書き換えが行われる。しかし、書き換え回数が多くなると、酸化膜１４２ｂ、１４２ｄが劣化し、窒化膜１４２ｃによる電子、ホールのトラップ能力が低下する。
【００６０】
前述のＢＴＢＴＨＨ方式により消去動作が行われる場合には、酸化膜１４２ｂの劣化が大きく、例えば図１０（ａ）に示すように、電子、ホールが、主に酸化膜１４２ｂを介して窒化膜１４２ｃから抜けてゆく。また、前述のＦＮトンネル方式により消去動作が行われる場合には、酸化膜１４２ｄの劣化が大きく、例えば図１０（ｂ）に示すように、電子、ホールが、主に酸化膜１４２ｄを介して窒化膜１４２ｃから抜けてしまう。
【００６１】
そうすると、消去動作が行われても、図９に示すように、書き換え回数が多いメモリセル１４０では、書き換え回数が少ないメモリセル１４０よりも閾値電圧が高くなる。また
、書き込み動作が行われても、図９に示すように、書き換え回数が多いメモリセル１４０では、書き換え回数が少ないメモリセル１４０よりも閾値電圧が低くなる。このように、書き換え回数が多くなると、メモリセル１４０のデータ保持特性が劣化する。
【００６２】
このようなデータ保持特性の劣化は、図９に示すように、「１」データを保持しているメモリセル１４０において顕著である。また、これらのデータ保持特性の劣化は、フラッシュメモリ１００が高温環境下に置かれた場合に特に顕著である。
【００６３】
図１１は、センスアンプ及びその周辺の回路構成の一例を示す図である。センスアンプＳＡは、互いに異なるメモリセル１４０と接続された一対のビット線１５１（１５１ｊ、１５１ｋ）と入力端で接続されている。センスアンプＳＡは、読み出し対象のメモリセル１４０と接続された一方のビット線１５１（例えばビット線１５１ｊ）の電位と、他方のビット線１５１(例えばビット線１５１ｋ)の電位とに基づいて読み出し対象のメモリセル１４０に記憶されているデータを読み出す。例えば、センスアンプＳＡは、一方のビット線１５１ｊの電位と他方のビット線１５１ｋの電位との差分に基づき、読み出し対象のメモリセル１４０のデータを読み出す。
【００６４】
ビット線１５１ｊ、１５１ｋには、図１１に示すように、プリチャージ用のＭＯＳトランジスタ（例えば、ｐチャネル型ＭＯＳトランジスタ）Ｍ１１、Ｍ１２、Ｍ１３が接続されている。ビット線１５１ｊは、ＭＯＳトランジスタＭ１１を介して高電位側電源Ｖｄｄと接続されている。ビット線１５１ｋは、ＭＯＳトランジスタＭ１３を介して高電位側電源Ｖｄｄと接続されている。ビット線１５１ｊ及びビット線１５１ｋは、ＭＯＳトランジスタＭ１２を介して互いに接続されている。
【００６５】
読み出し動作を行う際には、ＭＯＳトランジスタＭ１１、Ｍ１２、Ｍ１３を介して、ビット線１５１ｊ、１５１ｋがプリチャージされる。具体的には、ＭＯＳトランジスタＭ１１、Ｍ１２、Ｍ１３のゲート電極にローレベルのプリチャージ信号ｐｃｎが入力されると、これらのＭＯＳトランジスタＭ１１、Ｍ１２、Ｍ１３がオンされ、ビット線１５１ｊ、１５１ｋにプリチャージが行われる。
【００６６】
ビット線１５１（１５１ｊ、１５１ｋ）には、ビット線１５１（１５１ｊ、１５１ｋ）の電位を調整するビット線電位調整部１９０が接続されている。ビット線電位調整部１９０は、電位引き抜き部１９１と、リファレンス電位発生部１９２とを備えている。
【００６７】
電位引き抜き部１９１は、ＭＯＳトランジスタＭ１４、Ｍ１６、Ｍ１５を有する。ビット線１５１ｊは、ＭＯＳトランジスタ（例えば、ｐチャネル型ＭＯＳトランジスタ）Ｍ１４を介してリファレンス用のＭＯＳトランジスタ（例えば、ｎチャネル型ＭＯＳトランジスタ）Ｍ１５のドレインと接続されている。
【００６８】
ビット線１５１ｋは、ＭＯＳトランジスタ（例えば、ｐチャネル型ＭＯＳトランジスタ）Ｍ１６を介してＭＯＳトランジスタＭ１５のドレインと接続されている。ＭＯＳトランジスタＭ１５のソースは、低電位側電源Ｖｓｓと接続されている。
【００６９】
ＭＯＳトランジスタＭ１４は、図１１に示すように、電位引き抜き切替信号ｒｅｆｄｃｊｎにより動作が制御され、ＭＯＳトランジスタＭ１６は、図１１に示すように、電位引き抜き切替信号ｒｅｆｄｃｋｎにより動作が制御される。ＭＯＳトランジスタＭ１５は、図１１に示すように、リファレンス信号ｕｒｅｆｍｏｓｇ＿ｓにより動作が制御される。リファレンス信号ｕｒｅｆｍｏｓｇ＿ｓのリファレンス電位Ｖｒｅｆは、後述するリファレンス電位発生部１９２において規定される。
【００７０】
リファレンス電位発生部１９２は、図１１に示すように、ＭＯＳトランジスタ（例えば、ｐチャネル型ＭＯＳトランジスタ）Ｍ１、Ｍ２、Ｍ４、Ｍ５、Ｍ７、Ｍ８、Ｍ９、Ｍ１０と、ＭＯＳトランジスタ（例えば、ｎチャネル型ＭＯＳトランジスタ）Ｍ３、Ｍ６と、レジスタＲＥＧとを備えている。
【００７１】
ＭＯＳトランジスタＭ１、Ｍ２、Ｍ３は、図１１に示すように、直列に接続され、ＭＯＳトランジスタＭ１のソースは、高電位側電源Ｖｄｄと接続され、ＭＯＳトランジスタＭ３のソースは、低電位側電源Ｖｓｓと接続されている。ＭＯＳトランジスタＭ２のゲート電極は、ＭＯＳトランジスタＭ３のドレインと接続されている。ＭＯＳトランジスタＭ３のゲート電極には、基準電流トリミング電位が供給されている。基準電流トリミング電位により、ＭＯＳトランジスタＭ２、Ｍ３を流れる電流が規定され、これにより、ＭＯＳトランジスタＭ２のゲート電極とＭＯＳトランジスタＭ３のドレインとを接続する配線のトリミング電位Ｖｔｒｉｍが規定される。
【００７２】
ＭＯＳトランジスタＭ４、Ｍ５は、図１１に示すように、直列に接続されている。ＭＯＳトランジスタＭ７、Ｍ８は直列に接続されている。ＭＯＳトランジスタＭ９、Ｍ１０は直列に接続されている。ＭＯＳトランジスタＭ４のゲート電極は、低電位側電源Ｖｓｓと接続されている。ＭＯＳトランジスタＭ７のゲート電極には、レジスタＲＥＧからのリファレンス電位切替信号Ｓ１が入力され、ＭＯＳトランジスタＭ９のゲート電極には、レジスタＲＥＧからのリファレンス電位切替信号Ｓ０が入力される。
【００７３】
レジスタＲＥＧは、例えば、ＭＯＳトランジスタＭ７、Ｍ９に対応する２ビット構成とされる。レジスタＲＥＧから出力されるリファレンス電位切替信号Ｓ０、Ｓ１により、ＭＯＳトランジスタＭ７、Ｍ９が個別にオン、オフされる。
【００７４】
ＭＯＳトランジスタＭ５、Ｍ８、Ｍ１０のゲート電極は、ＭＯＳトランジスタＭ２のゲート電極及びドレイン、ＭＯＳトランジスタＭ３のドレインと接続されている。ＭＯＳトランジスタＭ５、Ｍ８、Ｍ１０のドレインは、ＭＯＳトランジスタＭ６のドレインと接続されている。ＭＯＳトランジスタＭ６のソースは、低電位側電源Ｖｓｓと接続されている。ＭＯＳトランジスタＭ５、Ｍ８、Ｍ１０のドレイン及びＭＯＳトランジスタＭ６のドレインはＭＯＳトランジスタＭ１５のゲート電極と接続されている。リファレンス電位発生部１９２は、ＭＯＳトランジスタＭ５、Ｍ８、Ｍ１０のゲート電極に入力されるトリミング電位Ｖｔｒｉｍ、レジスタＲＥＧから出力されるリファレンス電位切替信号Ｓ０、Ｓ１に基づいて、ＭＯＳトランジスタＭ１５のゲート電極に入力されるリファレンス電位Ｖｒｅｆが生成される。
【００７５】
図１２は、本発明の実施の形態１に係る各読み出し動作時におけるレジスタ出力の一覧を示す図である。図１３は、各読み出し動作時におけるビット線の電位変化を示す図である。本実施の形態では、後述するリフレッシュ動作を行うかを判定するために、通常リード（第１の読み出し動作）、１データ・マージンリード（第２の読み出し動作）、０データ・マージンリード（第３の読み出し動作）という３種類の読み出し動作が行われる。なお、以下では、ビット線１５１ｊと接続されたメモリセル１４０を読み出し対象のメモリセル１４０として説明する。すなわち、ビット線１５１ｊがデータ側、ビット線１５１ｋがリファレンス側である。したがって、読み出し動作時には、電位引き抜き部１９１では、ＭＯＳトランジスタＭ１４のゲート電極に、ハイレベルの信号ｒｅｆｄｃｊｎが入力され、リファレンス側のＭＯＳトランジスタＭ１６のゲート電極に、ローレベルの信号ｒｅｆｄｃｋｎが入力される。
【００７６】
＜通常リード＞
通常リードとは、制御部１２０が、読み出し対象のメモリセル１４０に、ビット線（一方のビット線）１５１ｊの電位を引き抜かせ、ビット線電位調整部１９０に、第１の速度でビット線（他方のビット線）１５１ｋの電位を引き抜かせながら、センスアンプＳＡに、データを読み出させる動作をいう。
【００７７】
具体的には、通常リードでは、レジスタＲＥＧからのリファレンス電位切替信号Ｓ１はローレベル「Ｌ」、リファレンス電位切替信号Ｓ０はハイレベル「Ｈ」とされる。このとき、リファレンス電位発生部１９２では、ＭＯＳトランジスタＭ４、Ｍ７がオンされ、ＭＯＳトランジスタＭ４、Ｍ５の経路、Ｍ７、Ｍ８の経路を介して、高電位側電源Ｖｄｄから電流（中電流）が供給される。通常リードにおけるリファレンス電位Ｖｒｅｆは、後述する１データ・マージンリード及び０データ・マージンリードのそれぞれにおけるリファレンス電位Ｖｒｅｆの中間の電位（中電位）に設定される。例えば、通常リード時のリファレンス電位Ｖｒｅｆは、電位引き抜き部１９１のＭＯＳトランジスタＭ１４、Ｍ１６に流れる電流が、「０」データを記憶しているメモリセル１４０に流れる電流よりも大きく、「１」データを記憶しているメモリセル１４０に流れる電流よりも小さくなるように設定される。
【００７８】
通常リードでは、リファレンス側のビット線１５１ｋから低電位側電源Ｖｓｓ向かって、ＭＯＳトランジスタＭ１６、Ｍ１５にリファレンス電流Ｉｒｅｆが流れる。これにより、ビット線１５１ｋの電位は、図１３（ａ）に示すように、所定の速度（第１の速度）で次第に引き抜かれ低下する。
【００７９】
読み出し対象のメモリセル１４０が、例えば、「１」データを記憶している消去状態である場合には、上述したようにメモリトランジスタ１４２の閾値電圧が低くなっているので、データ側のビット線１５１ｊから低電圧側のソース線１５３に向かって、メモリセル１４０に電流が流れる。そうすると、データ側のビット線１５１ｊの電位は、図１３（ａ）に示すように、リファレンス側のビット線１５１ｋよりも速い速度で引き抜かれ低下する。その結果、データ側のビット線１５１ｊの電位は、リファレンス側のビット線１５１ｋの電位よりも低くなり、センスアンプＳＡは、ビット線１５１ｊの電位とビット線１５１ｋの電位との差分に基づいて「１」データを読み出す。
【００８０】
これに対して、メモリセル１４０が、例えば「０」データを記憶している書き込み状態である場合には、メモリトランジスタ１４２の閾値電圧が高くなっているので、データ側のビット線１５１ｊから低電圧Ｖｓｓのソース線に向かって、メモリセル１４０に流れる電流は、「１」データを記憶している場合と比較して少ない。その結果、データ側のビット線１５１ｊの電位は、リファレンス側のビット線１５１ｋの電位よりも高くなり、センスアンプＳＡは、メモリセル１４０から「０」データを読み出す。
【００８１】
＜１データ・マージンリード＞
１データ・マージンリードとは、制御部１２０が、読み出し対象のメモリセル１４０に、ビット線（一方のビット線）１５１ｊの電位を引き抜かせ、ビット線電位調整部１９０に、第１の速度よりも速い第２の速度でビット線（他方のビット線）１５１ｋの電位を引き抜かせながら、センスアンプＳＡに、データを読み出させる動作をいう。１データ・マージンリードは、「１」データのデータ保持特性が劣化したメモリセル１４０を検出するために行われる。
【００８２】
具体的には、１データ・マージンリードでは、レジスタＲＥＧからのリファレンス電位切替信号Ｓ１、Ｓ０はともにローレベル「Ｌ」とされる。このとき、リファレンス電位発生部１９２では、ＭＯＳトランジスタＭ４、Ｍ７、Ｍ９がオンされ、ＭＯＳトランジスタＭ４、Ｍ５の経路、Ｍ７、Ｍ８の経路、Ｍ９、Ｍ１０の経路を介して、高電位側電源Ｖｄｄから電流（高電流）が供給される。したがって、１データ・マージンリードにおけるリファレンス電位Ｖｒｅｆは、通常リードにおけるリファレンス電位Ｖｒｅｆよりも高い電位（高電位）に設定される。１データ・マージンリード時におけるリファレンス電位Ｖｒｅｆは、電位引き抜き部１９１のＭＯＳトランジスタＭ１４、Ｍ１６に流れる電流が、通用リード時よりも大きくなるように設定される。例えば、１データ・マージンリード時のリファレンス電位Ｖｒｅｆは、電位引き抜き部１９１のＭＯＳトランジスタＭ１４、Ｍ１６に流れる電流が、データ保持特性の劣化が進んだ「１」データを記憶しているメモリセル１４０に流れる電流より大きく、データ保持特性の劣化が進んでいない「１」データを記憶しているメモリセル１４０に流れる電流より少なくなるように設定される。
【００８３】
１データ・マージンリードでは、ビット線１５１ｋから低電位側電源Ｖｓｓ向かって、ＭＯＳトランジスタＭ１６に、通常リード時よりも多い所定のリファレンス電流Ｉｒｅｆが流れる。これにより、ビット線１５１ｋの電位は、図１３（ｂ）に示すように、通常リード時よりも早い速度（第２の速度）で引き抜かれ低下する。
【００８４】
「１」データを記憶しているメモリセル１４０のデータ保持特性の劣化が進み、メモリトランジスタ１４２の閾値電圧が上昇している場合には、データ保持特性の劣化が進んでいないメモリセル１４０と比較して、データ側のビット線１５１ｊから低電圧Ｖｓｓのソース線１５３に向かってメモリセル１４０に流れる電流が少なくなる。このため、ビット線１５１ｊの電位は、図１３（ｂ）に示すように、データ保持特性の劣化が進んでいないメモリセル１４０よりも遅い速度で引き抜かれ低下する。そうすると、リファレンス側のビット線１５１ｋの電位が低下する速度（第２の速度）が、データ側のビット線１５１ｊの電位が低下する速度よりも速くなる。その結果、ビット線１５１ｊの電位がビット線１５１ｋの電位よりも高くなり、センスアンプＳＡは、「１」データを記憶しているメモリセル１４０から「０」データを読み出す。
【００８５】
このように、１データ・マージンリードでは、センスアンプＳＡが、「１」データを記憶しているメモリセル１４０から、誤った「０」データを読み出すことにより、「１」データのデータ保持特性の劣化が進んだメモリセル１４０が検出される。
【００８６】
これに対して、メモリセル１４０が、例えば、「０」データを記憶している書き込み状態である場合には、１データ・マージンリードを行っても、ビット線１５１ｊの電位が、ビット線１５１ｋの電位より低くはならないので、センスアンプＳＡが誤ったデータを読み出すことはない。
【００８７】
＜０データ・マージンリード＞
０データ・マージンリードとは、制御部１２０が、読み出し対象のメモリセル１４０に、ビット線（一方のビット線）１５１ｊの電位を引き抜かせ、ビット線電位調整部１９０に、第１の速度よりも遅い第３の速度でビット線（他方のビット線）１５１ｋの電位を引き抜かせながら、センスアンプＳＡにデータを読み出させる動作をいう。０データ・マージンリードは、「０」データのデータ保持特性が劣化したメモリセル１４０を検出するために行われる。
【００８８】
具体的には、０データ・マージンリードでは、レジスタＲＥＧからのリファレンス電位切替信号Ｓ１、Ｓ０はともにハイレベル「Ｈ」とされる。このとき、リファレンス電位発生部１９２では、ＭＯＳトランジスタＭ４のみがオンされ、ＭＯＳトランジスタＭ４、Ｍ５の経路を介して、高電位側電源Ｖｄｄから電流（高電流）が供給される。したがって、０データ・マージンリードにおけるリファレンス電位Ｖｒｅｆは、通常リードにおけるリファレンス電位Ｖｒｅｆよりも低い電位（低電位）に設定される。０データ・マージンリード時におけるリファレンス電位Ｖｒｅｆは、電位引き抜き部１９１のＭＯＳトランジスタＭ１４、Ｍ１６に流れる電流が、通用リード時よりも小さくなるように設定される。例えば、０データ・マージンリード時のリファレンス電位Ｖｒｅｆは、電位引き抜き部１９１のＭＯＳトランジスタＭ１４、Ｍ１６に流れる電流が、データ保持特性の劣化が進んだ「０」データを記憶しているメモリセル１４０に流れる電流より小さく、データ保持特性の劣化が進んでいない「０」データを記憶しているメモリセル１４０に流れる電流より多くなるように設定される。
【００８９】
０データ・マージンリードでは、ビット線１５１ｋから低電位側電源Ｖｓｓ向かって、ＭＯＳトランジスタＭ１６に、通常リード時よりも少ない所定のリファレンス電流Ｉｒｅｆが流れる。これにより、ビット線１５１ｋの電位は、図１３（ｃ）に示すように、通常リード時よりも遅い速度（第３の速度）で引き抜かれ低下する。
【００９０】
「０」データを記憶しているメモリセル１４０のデータ保持特性の劣化が進み、メモリトランジスタ１４２の閾値電圧が低下している場合には、データ保持特性の劣化が進んでいないメモリセル１４０と比較して、データ側のビット線１５１ｊから低電圧Ｖｓｓのソース線１５３に向かってメモリセル１４０に流れる電流が多くなる。このため、ビット線１５１ｊの電位は、図１３（ｃ）に示すように、データ保持特性の劣化が進んでいないメモリセル１４０よりも速い速度で引き抜かれ低下する。そうすると、リファレンス側のビット線１５１ｋの電位が低下する速度（第２の速度）が、データ側のビット線１５１ｊの電位が低下する速度よりも遅くなる。その結果、ビット線１５１ｊの電位がビット線１５１ｋの電位よりも低くなり、センスアンプＳＡは、「０」データを記憶しているメモリセル１４０から「１」データを読み出す。
【００９１】
このように、０データ・マージンリードでは、センスアンプＳＡが、「０」データを記憶しているメモリセル１４０から、誤った「１」データを読み出すことにより、「０」データのデータ保持特性の劣化が進んだメモリセル１４０が検出される。
【００９２】
これに対して、メモリセル１４０が、例えば、「１」データを記憶している書き込み状態である場合には、０データ・マージンリードを行っても、ビット線１５１ｊの電位が、ビット線１５１ｋの電位より高くはならないので、センスアンプＳＡが誤ったデータを読み出すことはない。
【００９３】
＜フラッシュメモリのリフレッシュ方法＞
次に、フラッシュメモリ１００のリフレッシュ方法について説明する。本実施の形態では、データ保持特性の劣化が大きい「１」データを記憶しているメモリセル１４０を検出することによりリフレッシュ動作に関する一連の処理を行う。図１４は、本発明の実施の形態１におけるフラッシュメモリのリフレッシュ方法に係るフローチャート図である。本実施の形態では、図１４に示すように、ステップＳ１００１〜ステップＳ１０５２により、フラッシュメモリのリフレッシュ動作が行われる。
【００９４】
リフレッシュ動作は、例えば、マイクロコントローラ３００の電源投入時、再起動時、電源切断時、あるいは、ユーザによる指示時等のタイミングで行われる。
【００９５】
まず、ステップＳ１００１では、後述する通常リード、１データ・マージンリードを行う際の先頭アドレスが設定される。先頭アドレスは、不揮発性メモリのアドレス空間の先頭アドレスでもよいし、消去単位の先頭アドレスでもよい。例えば、図３の制御部１２０は、図２に示されたフラッシュメモリ１００の先頭アドレスを、読み出し動作を行う際の先頭アドレスに設定する。制御部１２０は、設定した先頭アドレスを、例えば、図３の読み出し系行セレクタ１０１に出力する。読み出し系行セレクタ１０１は、制御部１２０から入力された先頭アドレスに基づいてワード線１５２を選択し、選択されたワード線１５２と接続されたメモリセル１４０を、読み出し対象のメモリセル１４０として選択する。
【００９６】
ステップＳ１０１０は、制御部１２０が通常リードを行う、第１の読み出しステップである。具体的には、センスアンプＳＡは、ステップＳ１００１で選択された読み出し対象のメモリセル１４０に対して通常リードを行う。センスアンプＳＡは、読み出したデータを図３の出力バッファ１０９に出力し、出力バッファ１０９は、センスアンプＳＡから入力されたデータを増幅して制御部１２０に出力する。制御部１２０は、出力バッファ１０９から入力されたデータを、図示しないデータ保持部に保持させる。あるいは、制御部１２０は、出力バッファ１０９から入力されたデータを、図３の高速バス３１１を介して、例えばＲＡＭ３０４に出力し、ＲＡＭ３０４に保持させるようにしてもよい。
【００９７】
ステップＳ１０２０は、制御部１２０が１データ・マージンリードを行う、第２の読み出しステップである。具体的には、センスアンプＳＡは、直前のステップＳ１０１０で通常リードがなされたメモリセル１４０に対して１データ・マージンリードを行う。センスアンプＳＡは、読み出したデータを出力バッファ１０９に出力し、出力バッファ１０９は、センスアンプＳＡから入力されたデータを増幅して制御部１２０に出力する。制御部１２０は、出力バッファ１０９から入力されたデータを、図示しないデータ保持部に保持させる。あるいは、制御部１２０は、出力バッファから入力されたデータを、高速バス３１１を介して例えばＲＡＭ３０４に出力し、ＲＡＭ３０４に保持させるようにしてもよい。
【００９８】
ステップＳ１０３０は、制御部１２０が、第１の読み出しステップＳ１０１０で読み出したデータと、第２の読み出しステップＳ１０２０で読み出したデータとを比較する第１のデータ比較ステップ（第１のデータ比較動作）である。具体的には、制御部１２０は、図示しないデータ保持部に保持させている、第１の読み出しステップＳ１０１０で読み出したデータと、第２の読み出しステップＳ１０２０で読み出したデータとを比較する。あるいは、制御部１２０は、ＲＡＭ３０４に保持させている、第１の読み出しステップＳ１０１０で読み出したデータと、第２の読み出しステップＳ１０２０で読み出したデータとを読み出し、これらのデータを比較する。制御部１２０は、これらのデータを比較することにより、「１」データのデータ保持特性の劣化が進んだメモリセル１４０を検出する。
【００９９】
ステップＳ１０３０において、制御部１２０が、第１の読み出しステップＳ１０１０で読み出したデータと、第２の読み出しステップＳ１０２０で読み出したデータと、が異なると判定した場合には（Ｎｏ）、ステップＳ１０４０が行われる。
【０１００】
ステップＳ１０４０は、制御部１２０が、読み出し対象のメモリセル１４０に記憶されているデータを、読み出し対象のメモリセル１４０に再度書き込む第１のリフレッシュ動作を行う第１のリフレッシュステップである。例えば、制御部１２０は、通常リードで読み出したデータを、書き込み用データとして、図３の入出力回路・電源制御回路・レジスタ１０３に出力する。入出力回路・電源制御回路・レジスタ１０３は、入力された書き込み用データを、例えば、書き込みラッチ１０７に出力し保持させる。
【０１０１】
また、制御部１２０は、直前のステップＳ１０２０で１データ・マージンリードがなされたメモリセル１４０と接続された、メモリゲート線１５４を選択するメモリゲート選択信号を、図３の書き換え系行セレクタ１１０に出力する。書き換え系行セレクタ１１０は、入力されたメモリゲート選択信号に基づき、１データ・マージンリードがなされたメモリセル１４０、すなわちリフレッシュ動作が行われるメモリセル１４０と接続されたメモリゲート線１５４を選択する。そして、制御部１２０は、リフレッシュ動作が行われるメモリセル１４０の各部に対し、図７に示す書き込み動作用の電位を印加させる。そして、書き込みラッチ１０７は、例えば、入力クロックド・インバータ１０２から出力された信号に基づいて、保持していた書き込み用データを共通ビット線１５０に出力する。共通ビット線１５０に出力された書き込み用データは、ビット線選択用スイッチング素子１７０、ビット線１５１を介してメモリセル１４０に入力され書き込まれる。このように、リフレッシュ動作は、例えば、メモリアレイ１０８における行方向のワード線１５２ごとに行われる。
【０１０２】
第１のリフレッシュ動作が行われると、ステップＳ１００１に移行し、先頭アドレスから、データ保持特性の劣化が進んだメモリセル１４０の検出が再度行われる。先頭アドレスは、不揮発性メモリのアドレス空間の先頭アドレスでもよいし、消去単位の先頭アドレスでもよい。すなわち、制御部１２０は、第１のリフレッシュ動作を行った後、読み出し対象のメモリセル１４０に対し、第１の読み出しステップＳ１０１０（第１の読み出し動作）と、第２の読み出しステップＳ１０２０（第２の読み出し動作）と、第１のデータ比較ステップＳ１０３０（第１のデータ比較動作）とを行う。
【０１０３】
ステップＳ１０３０において、制御部１２０が、第１の読み出しステップＳ１０１０で読み出したデータと、第２の読み出しステップＳ１０２０で読み出したデータとが同一であると判定した場合には（Ｙｅｓ）、ステップＳ１０５１が行われる。
【０１０４】
ステップＳ１０５１では、アドレスのインクリメントが行われる。具体的には、制御部１２０は、次の読み出し対象のメモリセル１４０を選択するための新たなアドレスを設定する。
【０１０５】
ステップＳ１０５２では、ステップＳ１０５１で設定された新たなアドレスが最終アドレスを超えたのかを判定する。例えば、制御部１２０は、ステップＳ１０５１で設定したアドレスと、図２に示すフラッシュメモリ１００の最終アドレスとを比較する。制御部１２０が、例えば、ステップＳ１０５１で設定したアドレスが、図２に示すフラッシュメモリ１００の最終アドレスを超えておらず、フラッシュメモリ１００内のアドレスであると判定した場合には（Ｎｏ）、ステップＳ１０１０に移行し、新たなアドレスにより選択された読み出し対象のメモリセル１４０に対して、データ保持特性の劣化が進んだメモリセル１４０の検出、及びリフレッシュ動作が行われる。これらの処理は、メモリアレイ１０８の全てのメモリセル１４０に対して、データ保持特性の劣化が進んだメモリセル１４０の検出、及びリフレッシュ動作が行われる。
【０１０６】
これに対して、制御部１２０が、ステップＳ１０５１で設定したアドレスが、図２に示すフラッシュメモリ１００の最終アドレスを超え、フラッシュメモリ１００以外のアドレスとなっていると判定した場合には（Ｙｅｓ）、データ保持特性の劣化が進んだメモリセル１４０の検出、及びリフレッシュ動作が、全てのメモリセル１４０に対して行われたものと判断し、リフレッシュ動作に係る一連の処理を終える。
【０１０７】
＜本実施の形態による効果＞
本実施の形態によれば、制御部１２０は、読み出し対象のメモリセル１４０に、通常リード（第１の読み出し動作、第１の読み出しステップＳ１０１０）と、１データ・マージンリード（第２の読み出し動作、第２の読み出しステップＳ１０２０）とを行い、通常リードで読み出したデータと、１データ・マージンリードで読み出したデータとを比較し（第１のデータ比較動作、第１のデータ比較ステップＳ１０３０）する。そして、制御部１２０は、通常リードで読み出したデータと、１データ・マージンリードで読み出したデータとが異なると判定した場合には、第１のリフレッシュ動作（第１のリフレッシュステップＳ１０４０）を行う。
【０１０８】
この構成によれば、通常リードよりも「１」データの読み出し条件を厳しくした１データ・マージンリードにより、「１」データのデータ保持特性の劣化が進んだメモリセル１４０が検出されるので、読み出しエラーが発生する前の適切な時期にリフレッシュ動作が行われる。また、これにより、フラッシュメモリ１００の信頼性が向上し、フラッシュメモリ１００が搭載されたマイクロコントローラ３００の信頼性が向上する。
【０１０９】
また、この構成によれば、「０」データよりもデータ保持特性の劣化が大きい「１」データに特化して、データ保持特性の劣化が進んだメモリセル１４０の検出が行われるので、リフレッシュに要する時間を短縮することができる。
【０１１０】
また、本実施の形態によれば、複数のメモリセル１４０がマトリクス状に配置されたメモリマットｍａｔを複数有するメモリアレイ１０８を備え、ビット線１５１はメモリマットｍａｔごとに設けられ、ビット線１５１（１５１ｊ、１５１ｋ）のそれぞれは、ビット線選択用スイッチング素子１７０（１７０ｊ、１７０ｋ）を介して複数のメモリマットｍａｔに共通の共通ビット線１５０と接続されている。
【０１１１】
この構成によれば、センスアンプＳＡと接続されるビット線１５１（１５１ｊ、１５１ｋ）を短くすることができるので、読み出し動作時の配線負荷が低減される。これにより、ビット線１５１（１５１ｊ、１５１ｋ）からの電位の引き抜き時間が短縮され、センスアンプＳＡによるデータの読み出し時間が短縮される。また、これにより、リフレッシュ動作に係る所要時間が短縮される。
【０１１２】
また、本実施の形態によれば、メモリマットｍａｔでは、複数のメモリセル１４０が、行方向（第１の方向）及び列方向（第２の方向）に沿ってマトリクス状に配置され、列方向に沿った一列分のメモリセル１４０ごとに、ビット線１５１（１５１ｊ、１５１ｋ）が複数設けられ、ビット線１５１（１５１ｊ、１５１ｋ）のそれぞれは、読み出しメモリセル選択用スイッチング素子１８０（１８０ｊ、１８０ｋ）を介してセンスアンプＳＡの入力端と接続されている。
【０１１３】
この構成によれば、複数のビット線１５１（１５１ｊ、１５１ｋ）がセンスアンプＳＡを共用するので、センスアンプＳＡの個数が抑えられ、センスアンプＳＡ周辺の配線構造が簡略化される。これにより、フラッシュメモリ１００のチップ面積の増大が抑えられる。
【０１１４】
また、本実施の形態によれば、センスアンプは、一対のメモリマットｍａｔｊ、ｍａｔｋごとに設けられ、それぞれのメモリマットのビット線１５１（１５１ｊ、１５１ｋ）は、センスアンプＳＡの入力端と接続されている。
【０１１５】
この構成によれば、センスアンプＳＡの入力端には、読み出し対象ではないメモリセル１４０が属するメモリマットｍａｔｊのビット線１５１（例えばビット線１５１ｋ）が接続されるので、読み出し時におけるリファレンス側の制御が簡略化され、制御部１２０等各回路の負荷が軽減される。
【０１１６】
また、この構成によれば、センスアンプＳＡまでの配線長のばらつきが抑えられ、ビット線１５１（１５１ｊ、１５１ｋ）ごとの配線負荷のばらつきが抑えられる。これにより、配線負荷のばらつきに起因したデータの読み出しエラーの発生が抑えられる。また、これにより、フラッシュメモリ１００の信頼性が向上する。
【０１１７】
また、本実施の形態によれば、それぞれのメモリマットｍａｔ（ｍａｔｊ、ｍａｔｋ）における、列方向（第２の方向）に沿った一列分のメモリセルの個数が同数である。
【０１１８】
この構成によれば、各ビット線１５１（１５１ｊ、１５１ｋ）の長さがほぼ均等になるので、ビット線１５１（１５１ｊ、１５１ｋ）ごとの配線負荷のばらつきが抑えられる。これにより、配線負荷のばらつきに起因したデータの読み出しエラーの発生が抑えられる。また、これにより、フラッシュメモリ１００の信頼性が向上する。
【０１１９】
また、本実施の形態によれば、制御部１２０は、ワード線１５２ごとに第１のリフレッシュ動作を行う。
【０１２０】
この構成によれば、１回当りのリフレッシュ動作が行われるメモリセル１４０の個数が抑えられるので、第１のリフレッシュ動作に要する時間が短縮される。また、この構成によれば、１つのワード線１５２に、データ保持特性の劣化が進んだメモリセル１４０が接続されていなければリフレッシュ動作が行われないので、リフレッシュ動作に係る消費電力が低減される。
【０１２１】
また、本実施の形態によれば、制御部１２０は、第１のリフレッシュステップＳ１０４０において第１のリフレッシュ動作を行った後、読み出し対象のメモリセル１４０に対し、第１の読み出しステップＳ１０１０と、第２の読み出しステップＳ１０２０と、第１のデータ比較ステップＳ１０３０とを行う。
【０１２２】
この構成によれば、リフレッシュ動作がなされたメモリセル１４０に対して、データ保持特性の劣化が進んでいるかが再度チェックされるので、フラッシュメモリ１００の信頼性が向上する。また、これにより、フラッシュメモリ１００を搭載したマイクロコントローラ３００の信頼性が向上する。
【０１２３】
（実施の形態２）
次に、本発明の実施の形態２について説明する。本実施の形態では、リフレッシュ動作に係る処理において、１データ・マージンリードに加えて、０データ・マージンリードも行う場合について説明する。なお、以下の説明では、上述の実施の形態１と重複する内容については、原則として説明を省略する。
【０１２４】
図１５は、本発明の実施の形態２におけるフラッシュメモリのリフレッシュ方法に係るフローチャート図である。本実施の形態では、図１５に示すように、ステップＳ１００１〜ステップＳ１０５２、ステップＳ２０６０〜ステップＳ２０８０により、フラッシュメモリのリフレッシュ動作が行われる。
【０１２５】
ステップＳ１０３０では、制御部１２０が、第１の読み出しステップＳ１０１０で読み出したデータと、第２の読み出しステップで読み出した前記データとが同一であると判定した場合には（Ｙｅｓ）、ステップＳ２０６０が行われる。
【０１２６】
ステップＳ２０６０は、制御部１２０が０データ・マージンリードを行う、第３の読み出しステップである。具体的には、センスアンプＳＡは、ステップＳ１０１０、Ｓ１０２０で読み出し動作がなされたメモリセル１４０に対して０データ・マージンリードを行う。センスアンプＳＡは、読み出したデータを出力バッファ１０９に出力し、出力バッファ１０９は、センスアンプＳＡから入力されたデータを増幅して制御部１２０に出力する。制御部１２０は、出力バッファ１０９から入力されたデータを、図示しないデータ保持部に保持させる。あるいは、制御部１２０は、出力バッファから入力されたデータを、高速バス３１１を介して例えばＲＡＭ３０４に出力し、ＲＡＭ３０４に保持させるようにしてもよい。
【０１２７】
ステップＳ２０７０は、制御部１２０が、第１の読み出しステップＳ１０１０で読み出したデータと、第３の読み出しステップＳ１０２０で読み出したデータとを比較する第２のデータ比較ステップ（第２のデータ比較動作）である。具体的には、制御部１２０は、図示しないデータ保持部に保持させている、第１の読み出しステップＳ１０１０で読み出したデータと、第３の読み出しステップＳ２０６０で読み出したデータとを比較する。あるいは、制御部１２０は、ＲＡＭ３０４に保持させている、第１の読み出しステップＳ１０１０で読み出したデータと、第２の読み出しステップＳ２０６０で読み出したデータとを読み出し、これらのデータを比較する。制御部１２０は、これらのデータを比較することにより、「０」データのデータ保持特性の劣化が進んだメモリセル１４０を検出する。
【０１２８】
ステップＳ２０７０において、制御部１２０が、第１の読み出しステップＳ１０１０で読み出したデータと、第３の読み出しステップＳ２０６０で読み出したデータと、が異なると判定した場合には（Ｎｏ）、ステップＳ２０８０が行われる。ステップＳ２０８０は、第１のリフレッシュステップである。ステップＳ２０８０では、制御部１２０は、上述した第１のリフレッシュステップＳ１０４０と同様の処理を行うので、ここでは詳細な説明を省略する。
【０１２９】
第１のリフレッシュ動作が行われると、ステップＳ１００１に移行し、先頭アドレスから、データ保持特性の劣化が進んだメモリセル１４０の検出が再度行われる。先頭アドレスは、不揮発性メモリのアドレス空間の先頭アドレスでもよいし、消去単位の先頭アドレスでもよい。すなわち、制御部１２０は、リフレッシュ動作を行った後、読み出し対象のメモリセル１４０に対し、第１の読み出しステップＳ１０１０（第１の読み出し動作）と、第２の読み出しステップＳ１０２０（第２の読み出し動作）と、第１のデータ比較ステップＳ１０３０（第１のデータ比較動作）と、第３の読み出しステップＳ２０６０（第３の読み出し動作）と、第２のデータ比較ステップＳ２０７０（第２のデータ比較動作）とを行う。
【０１３０】
ステップＳ２０７０において、制御部１２０が、第１の読み出しステップＳ１０１０で読み出したデータと、第３の読み出しステップＳ２０６０で読み出したデータとが同一であると判定した場合には（Ｙｅｓ）、ステップＳ１０５１、Ｓ１０５２が順次行われる。これらのステップＳ１０５１、Ｓ１０５２における処理については、すでに説明しているので、詳細な説明を省略する。
【０１３１】
＜本実施の形態による効果＞
本実施の形態によれば、上述の実施の形態における効果に加え、以下の効果が得られる。
【０１３２】
本実施の形態によれば、制御部１２０は、第１のデータ比較動作（第１のデータ比較ステップＳ１０３０）において、通常リード（第１の読み出し動作、第１の読み出しステップＳ１０１０）で読み出したデータと、１データ・マージンリード（第２の読み出し動作、第２の読み出しステップＳ１０２０）で読み出したデータとが同一であると判定した場合には、読み出し対象のメモリセル１４０に、０データ・マージンリード（第３の読み出し動作、第３の読み出しステップＳ２０６０）を行う。そして、制御部１２０は、通常リードで読み出したデータと、０データ・マージンリードで読み出したデータとを比較し（第２のデータ比較ステップＳ２０７０）、通常リードで読み出したデータと、０データ・マージンリードで読み出したデータとが異なると判定した場合には第１のリフレッシュ動作（第１のリフレッシュステップＳ２０８０）を行う。
【０１３３】
この構成によれば、制御部１２０が、１データ・マージンリードを行った後、０データ・マージンリードも行うので、データ保持特性の劣化が進んだメモリセル１４０を検出する精度が向上する。これにより、フラッシュメモリ１００の信頼性がより向上し、フラッシュメモリ１００を搭載したマイクロコントローラ３００の信頼性が向上する。
【０１３４】
また、本実施の形態によれば、制御部１２０は、第１のリフレッシュ動作（第１のリフレッシュステップＳ２０８０）を行った後、第１のリフレッシュ動作が行われた読み出し対象のメモリセル１４０に対し、通常リード（第１の読み出し動作、第１の読み出しステップＳ１０１０）と、１データ・マージンリード（第２の読み出し動作、第２の読み出しステップＳ１０２０）と、第１のデータ比較動作（第１のデータ比較ステップＳ１０３０）と、０データ・マージンリード（第３の読み出し動作、第３の読み出しステップＳ２０６０）と、第２のデータ比較動作（第２のデータ比較ステップＳ２０７０）と、を行う。
【０１３５】
この構成によれば、０データ・マージンリードが行われる場合にも、第１のリフレッシュ動作がなされたメモリセル１４０に対して、データ保持特性の劣化が進んでいるかが再度チェックされるので、フラッシュメモリ１００の信頼性がより向上する。また、これにより、フラッシュメモリ１００を搭載したマイクロコントローラ３００の信頼性がより向上する。
【０１３６】
（実施の形態３）
次に、本発明の実施の形態３について説明する。本実施の形態では、一対のメモリセルにデータが記憶される、相補方式のフラッシュメモリについて説明する。なお、以下の説明では、上述の実施の形態１、２と重複する内容については原則として説明を省略する。
【０１３７】
＜フラッシュメモリの構成＞
図１６は、本発明の実施の形態３に係るフラッシュメモリの構成の一例を示す図である。図１７は、センスアンプ及びその周辺の回路構成の一例を示す図である。フラッシュメモリ１００Ａは、図３に示すように、読み出し系行セレクタ１０１、入力クロックド・インバータ１０２、入出力回路・電源制御回路・レジスタ１０３、電源回路１０４、ベリファイ・センスアンプ１０５、書き換え列セレクタ１０６、書き込みラッチ１０７、メモリアレイ１０８Ａ、出力バッファ１０９、書き換え系行セレクタ１１０、制御部１２０等を備えている。
【０１３８】
相補方式のフラッシュメモリ１００Ａでは、図１６に示す一対のメモリセル１４０（１４０ｐ、１４０ｎ）によりデータが記憶される。具体的には、一方のメモリセル１４０ｐにデータが記憶され、他方のメモリセル１４０ｎにデータを反転させた反転データが記憶されることによりデータが記憶される。なお、以下では、データを記憶するメモリセル１４０ｐをポジメモリとも称し、反転データを記憶するメモリセル１４０ｎをネガメモリとも称する。
【０１３９】
メモリアレイ１０８Ａでは、センスアンプＳＡが、例えば図４に示すように、一対のメモリマットｍａｔごとに設けられている。それぞれのメモリマットｍａｔのビット線２５１（例えば１５１ｊｐ、１５１ｊｎ、１５１ｋｐ、１５１ｋｎ）は、図１６、図１７に示すように、読み出しメモリセル選択用スイッチング素子１８０（１８０ｊｐ、１８０ｊｎ、１８０ｋｐ、１８０ｋｎ）を介してセンスアンプＳＡの入力端と接続されている。メモリセル選択用スイッチング素子１８０（１８０ｊｐ、１８０ｊｎ、１８０ｋｐ、１８０ｋｎ）は、例えば、ＭＯＳトランジスタからなる。メモリセル選択用スイッチング素子１８０（１８０ｊｐ、１８０ｊｎ、１８０ｋｐ、１８０ｋｎ）のゲートのそれぞれは、メモリセル選択線１８１（１８１ｊｐ、１８１ｊｎ、１８１ｋｐ、１８１ｋｎ）とそれぞれ接続されている。メモリセル選択線１８１（１８１ｊ、１８１ｋ）メモリセル選択線１８１（１８１ｊｐ、１８１ｊｎ、１８１ｋｐ、１８１ｋｎ）は、例えば、読み出し系行セレクタ１０１と接続されている。
【０１４０】
センスアンプＳＡは、一対のメモリセル１４０（１４０ｐ、１４０ｎ）のそれぞれと接続された一対のビット線と入力端で接続されている。一対のメモリセル１４０（１４０ｐ、１４０ｎ）は、例えば図１６に示すように、同一のワード線１５２上に設けられた２つのメモリセル１４０で構成されている。すなわち、一対のメモリセル１４０（１４０ｐ、１４０ｎ）は、例えば同一のメモリマットｍａｔ内に設けられ、読み出し動作時には、ビット線１５１ｊｐ、１５１ｊｎ（又は、ビット線１５１ｋｐ、１５１ｋｎ）が、一対のビット線としてセンスアンプＳＡの入力端にそれぞれ接続される。センスアンプＳＡは、メモリセル（一方のメモリセル）１４０ｐと接続されたビット線（一方のビット線）１５１ｊｐの電位と、メモリセル（他方のメモリセル）１４０ｎと接続されたビット線（他方のビット線）２６１ｊｎの電位とに基づいて一対のメモリセル１４０（１４０ｐ、１４０ｎ）に記憶されているデータを読み出す。
【０１４１】
ビット線電位調整部１９０Ａは、電位引き抜き部１９１を備えている。なお、ビット線電位調整部１９０Ａでは、図１１に示すリファレンス電位発生部１９２が設けられていない。このため、ＭＯＳトランジスタＭ１５のゲート電極には、図１７に示すように、所定の電位に設定されたリファレンス信号ｕｒｅｆｍｏｓｇ＿ｓが入力される。
【０１４２】
相補方式のフラッシュメモリにおいて、ビット線電位調整部１９０にリファレンス電位発生部１９２が設けられていないのは以下の理由による。相補方式では、センスアンプＳＡのそれぞれの入力端にメモリセル１４０（１４０ｐ、１４０ｎ）が接続されており、メモリセル１４０（１４０ｐ、１４０ｎ）に、ビット線１５１ｊｐ（１５１ｋｐ）、１５１ｊｎ（１５１ｋｎ）の電位を引き抜かせることによりデータを読み出すことができるからである。
【０１４３】
図１８は、イニシャライズ状態、書き込み状態におけるメモリセルの閾値電圧の概略を示す図である。書き込み動作が行われる前のイニシャライズ状態では、例えば図１８（ａ）に示すように、ポジメモリ１４０ｐ、ネガメモリ１４０ｎいずれの閾値電圧も、中性な状態における閾値電圧よりも低くなっている。
【０１４４】
「１」データが書き込まれる場合には、ネガメモリ１４０ｎに対してのみ書き込み動作が行われる。したがって、ポジメモリ１４０ｐの閾値電圧は、例えば図１８（ｂ）に示すように、中性な状態における閾値電圧よりも低くなっている。一方、ネガメモリ１４０ｎの閾値電圧は、例えば図１８(ｂ)に示すように、中性な状態における閾値電圧よりも高くなっている。
【０１４５】
これに対して、「０」データが書き込まれる場合には、ポジメモリ１４０ｐに対してのみ書き込み動作が行われる。したがって、ポジメモリ１４０ｐの閾値電圧は、例えば図１８（ｃ）に示すように、中性な状態における閾値電圧よりも高くなっている。一方、ネガメモリ１４０ｎの閾値電圧は、例えば図１８(ｃ)に示すように、中性な状態における閾値電圧よりも低くなっている。
【０１４６】
このように、相補方式では、図１８（ｂ）、（ｃ）に示すように、中性な状態よりも閾値電圧が低いメモリセル１４０では、「Ｌ」側データを記憶し、中性な状態よりも閾値電圧が高いメモリセル１４０では、「Ｈ」側データを記憶する。すなわち、「１」データを記憶している場合には、ポジメモリ１４０ｐが「Ｌ」側データを記憶し、ネガメモリ１４０ｎが「Ｈ」側データを記憶する。これに対して、「０」データを記憶している場合には、ポジメモリ１４０ｐが「Ｈ」側データを記憶し、ネガメモリ１４０ｎが「Ｌ」側データを記憶する。
【０１４７】
なお、ここでいう「Ｌ」とは、メモリセル１４０の閾値電圧が中性な状態よりも低い状態のことをいい、「Ｌ」側データとは、閾値電圧が中性な状態よりも低いメモリセル１４０に記憶されるデータのことをいう。また、ここでいう「Ｈ」とは、メモリセル１４０の閾値電圧が中性な状態よりも高い状態のことをいい、「Ｈ」側データとは、閾値電圧が中性な状態よりも高いメモリセル１４０に記憶されるデータのことをいう。
【０１４８】
次に、本実施の形態における読み出し動作について説明する。図１９は、本発明の実施の形態３に係る各読み出し動作時において電位引き抜き部に印加する電位の一覧を示す図である。
【０１４９】
本実施の形態では、後述するリフレッシュ動作を行うかを判定するために、通常リード（第４の読み出し動作）、１データ・マージンリード（第５の読み出し動作）、０データ・マージンリード（第６の読み出し動作）という３種類の読み出し動作が行われる。
【０１５０】
＜通常リード＞
通常リードとは、制御部１２０が、読み出し対象の一対のメモリセル１４０に対し、メモリセル（一方のメモリセル）１４０ｐに、ビット線（一方のビット線）１５１ｊｐ（１５１ｋｐ）の電位を引き抜かせ、メモリセル（他方のメモリセル）１４０ｎに、ビット線（他方のビット線）１５１ｊｎ（１５１ｋｎ）の電位を引き抜かせながら、センスアンプＳＡに、データを読み出させる動作をいう。したがって、通常リード時における電位引き抜き部１９１では、図１９に示すように、ＭＯＳトランジスタＭ１４、Ｍ１６のゲート電極に、ハイレベルの信号ｒｅｆｄｃｊｎ、ｒｅｆｄｃｋｎが入力される。
【０１５１】
読み出し対象の一対のメモリセル１４０が、例えば、「１」データを記憶している場合には、ポジメモリ１４０ｐが「Ｌ」側データを記憶し、ネガメモリ１４０ｎが「Ｈ」側データを記憶している。このとき、ポジメモリ１４０ｐでは、閾値電圧が低くなっているので、ビット線１５１ｊｐ（１５１ｋｐ）から低電圧側のソース線１５３に向かって、メモリセル１４０に電流が流れる。そうすると、ビット線１５１ｊｐ（１５１ｋｐ）の電位は引き抜かれ低下する。一方、ネガメモリ１４０ｎでは、閾値電圧が高くなっているので、ビット線１５１ｊｎ（１５１ｋｎ）からソース線１５３に向かって流れる電流は、ポジメモリ１４０ｐと比較して少ない。このため、ビット線１５１ｊｎ（１５１ｋｎ）の電位は、ビット線１５１ｊｐ（１５１ｋｐ）よりは引き抜かれず低下しない。その結果、ビット線１５１ｊｐ（１５１ｋｐ）の電位は、ビット線１５１ｊｎ（１５１ｋｎ）よりも低くなり、センスアンプＳＡは、ビット線１５１ｊｐ（１５１ｋｐ）の電位とビット線１５１ｊｎ（１５１ｋｎ）の電位との差分に基づいて「１」データを読み出す。
【０１５２】
これに対して、読み出し対象の一対のメモリセル１４０が、例えば、「０」データを記憶している場合には、ポジメモリ１４０ｐが「Ｈ」側データを記憶し、ネガメモリ１４０ｎが「Ｌ」側データを記憶している。このとき、ネガメモリ１４０ｎでは、閾値電圧が低くなっているので、ビット線１５１ｊｎ（１５１ｋｎ）から低電圧側のソース線１５３に向かって、メモリセル１４０に電流が流れる。そうすると、ビット線１５１ｊｎ（１５１ｋｎ）の電位は引き抜かれ低下する。一方、ポジメモリ１４０ｐでは、閾値電圧が高くなっているので、ビット線１５１ｊｐ（１５１ｋｐ）からソース線１５３に流れる電流は、ネガメモリ１４０ｎと比較して少ない。このため、ビット線１５１ｊｐ（１５１ｋｐ）の電位は、ビット線１５１ｊｎ（１５１ｋｎ）よりは引き抜かれず低下しない。その結果、ビット線１５１ｊｐ（１５１ｋｐ）の電位は、ビット線１５１ｊｎ（１５１ｋｎ）よりも高くなり、センスアンプＳＡは、ビット線１５１ｊｐ（１５１ｋｐ）の電位とビット線１５１ｊｎ（１５１ｋｎ）の電位との差分に基づいて「０」データを読み出す。
【０１５３】
＜１データ・マージンリード＞
１データ・マージンリードとは、制御部１２０が、読み出し対象の一対のメモリセル１４０に対し、メモリセル（一方のメモリセル）１４０ｐに、ビット線（一方のビット線）１５１ｊｐ（１５１ｋｐ）の電位を引き抜かせ、メモリセル（他方のメモリセル）１４０ｎ及びビット線電位調整部１９０に、ビット線（他方のビット線）１５１ｊｎ（１５１ｋｎ）の電位を引き抜かせながら、センスアンプＳＡに、データを読み出させる動作をいう。したがって、１データ・マージンリード時における電位引き抜き部１９１では、図１９に示すように、ＭＯＳトランジスタＭ１４のゲート電極にハイレベルの信号ｒｅｆｄｃｊｎが入力され、ＭＯＳトランジスタＭ１６のゲート電極にローレベルの信号ｒｅｆｄｃｋｎが入力される。
【０１５４】
１データ・マージンリード時のリファレンス信号ｕｒｅｆｍｏｓｇ＿ｓの電位は、例えば、「Ｈ」側データを記憶しているメモリセル１４０（ここではメモリセル１４０ｎ）に流れる電流と、電位引き抜き部１９１のＭＯＳトランジスタＭ１６に流れる電流との合計の電流が、データ保持特性の劣化が進んだ「Ｌ」側データを記憶しているメモリセル１４０（ここではメモリセル１４０ｐ）に流れる電流より大きくなるように設定される。
【０１５５】
まず、読み出し対象の一対のメモリセル１４０が、「１」データを記憶している場合について説明する。ポジメモリ１４０ｐでは、閾値電圧が低くなっているので、ビット線１５１ｊｐ（１５１ｋｐ）から低電圧側のソース線１５３に向かって、メモリセル１４０に電流が流れる。そして、ビット線１５１ｊｐ（１５１ｋｐ）の電位は引き抜かれ低下する。一方、ネガメモリ１４０ｎでは、ビット線１５１ｊｎ（１５１ｋｎ）からソース線１５３に向かって電流が流れる。ただし、ネガメモリ１４０ｎの閾値電圧が高くなっているので、ビット線１５１ｊｎ（１５１ｋｎ）からソース線１５３に向かって流れる電流は、ポジメモリ１４０ｐと比較して少ない。そして、ＭＯＳトランジスタＭ１６を介して、ビット線１５１ｊｎ（１５１ｋｎ）から低電位側電源Ｖｓｓに電流が流れる。これにより、ビット線１５１ｊｎ（１５１ｋｎ）では、電位が引き抜かれ低下する。
【０１５６】
「Ｌ」側データを記憶している、ポジメモリ１４０ｐデータ保持特性の劣化が進んでいる場合には、データ保持特性の劣化が進んでいない場合と比較して、ビット線１５１ｊｐから低電圧Ｖｓｓのソース線１５３に向かってメモリセル１４０に流れる電流が少なくなる。これにより、ビット線１５１ｊｐ（１５１ｋｐ）の電位が低下する速度が、ビット線１５１ｊｎ（１５１ｋｎ）の電位が低下する速度より遅くなる。そうすると、ビット線１５１ｊｐ（１５１ｋｐ）の電位が、ビット線１５１ｊｎ（１５１ｋｎ）の電位よりも高くなり、センスアンプＳＡは、「１」データを記憶している一対のメモリセル１４０から「０」データを読み出す。
【０１５７】
このように、１データ・マージンリードでは、センスアンプＳＡが、「１」データを記憶している一対のメモリセル１４０から、誤った「０」データを読み出すことにより、「１」データのデータ保持特性の劣化が進んだ一対のメモリセル１４０が検出される。
【０１５８】
そして、一対のメモリセル１４０が、例えば、「０」データを記憶している場合には、１データ・マージンリードを行っても、ビット線１５１ｊｐ（１５１ｋｐ）の電位は、ビット線１５１ｊｎ（１５１ｋｎ）の電位より低くはならないので、センスアンプＳＡが誤ったデータを読み出すことはない。
【０１５９】
＜０データ・マージンリード＞
０データ・マージンリードとは、制御部１２０が、読み出し対象の一対のメモリセル１４０に対し、メモリセル（一方のメモリセル）１４０ｐ及びビット線電位調整部１９０に、ビット線（一方のビット線）１５１ｊｐ（１５１ｋｐ）の電位を引き抜かせ、メモリセル（他方のメモリセル）１４０ｎに、ビット線（他方のビット線）１５１ｊｎ（１５１ｋｎ）の電位を引き抜かせながら、センスアンプＳＡにデータを読み出させる動作をいう。したがって、０データ・マージンリード時における電位引き抜き部１９１では、図１９に示すように、ＭＯＳトランジスタＭ１４のゲート電極にローレベルの信号ｒｅｆｄｃｊｎが入力され、ＭＯＳトランジスタＭ１６のゲート電極にハイレベルの信号ｒｅｆｄｃｋｎが入力される。
【０１６０】
０データ・マージンリード時のリファレンス信号ｕｒｅｆｍｏｓｇ＿ｓの電位は、例えば、データ保持特性の劣化が進んだ「Ｈ」側データを記憶しているメモリセル１４０（ここではメモリセル１４０ｐ）に流れる電流と、電位引き抜き部１９１のＭＯＳトランジスタＭ１４に流れる電流との合計の電流が、「Ｌ」側データを記憶しているメモリセル１４０（ここではメモリセル１４０ｎ）に流れる電流より大きくなるように設定される。
【０１６１】
まず、読み出し対象の一対のメモリセル１４０が、「０」データを記憶している場合について説明する。ポジメモリ１４０ｐでは、閾値電圧が高くなっているので、ビット線１５１ｊｐ（１５１ｋｐ）から低電圧側のソース線１５３に向かって、メモリセル１４０に電流が流れる。ただし、ポジメモリ１４０ｐの閾値電圧が高くなっているので、ビット線１５１ｊｐ（１５１ｋｐ）からソース線１５３に向かって流れる電流は、ネガメモリ１４０ｎと比較して少ない。そして、ＭＯＳトランジスタＭ１４を介して、ビット線１５１ｊｐ（１５１ｋｐ）から低電位側電源Ｖｓｓに電流が流れる。これにより、ビット線１５１ｊｐ（１５１ｋｐ）では、電位が引き抜かれ低下する。
【０１６２】
一方、ネガメモリ１４０ｎでは、ビット線１５１ｊｎ（１５１ｋｎ）からソース線１５３に向かって電流が流れる。そして、ビット線１５１ｊｎ（１５１ｋｎ）の電位は引き抜かれ低下する。
【０１６３】
「Ｈ」側データを記憶している、ポジメモリ１４０ｐデータ保持特性の劣化が進んでいる場合には、データ保持特性の劣化が進んでいない場合と比較して、ビット線１５１ｊｐから低電圧Ｖｓｓのソース線１５３に向かってメモリセル１４０に流れる電流が多くなる。これにより、ビット線１５１ｊｐ（１５１ｋｐ）の電位が低下する速度が、ビット線１５１ｊｎ（１５１ｋｎ）の電位が低下する速度より速くなる。そうすると、ビット線１５１ｊｐ（１５１ｋｐ）の電位が、ビット線１５１ｊｎ（１５１ｋｎ）の電位よりも低くなり、センスアンプＳＡは、「０」データを記憶している一対のメモリセル１４０から「１」データを読み出す。
【０１６４】
このように、０データ・マージンリードでは、センスアンプＳＡが、「０」データを記憶している一対のメモリセル１４０から、誤った「１」データを読み出すことにより、「０」データのデータ保持特性の劣化が進んだ一対のメモリセル１４０が検出される。
【０１６５】
そして、一対のメモリセル１４０が、例えば、「１」データを記憶している場合には、
０データ・マージンリードを行っても、ビット線１５１ｊｐ（１５１ｋｐ）の電位は、ビット線１５１ｊｎ（１５１ｋｎ）の電位より高くはならないので、センスアンプＳＡが誤ったデータを読み出すことはない。
【０１６６】
＜フラッシュメモリのリフレッシュ方法＞
次に、フラッシュメモリのリフレッシュ方法について説明する。本実施の形態においても、図１４のフローチャートに沿ってリフレッシュ動作に係る一連の処理を行う。
【０１６７】
まず、ステップＳ１００１では、後述する通常リード、１データ・マージンリードを行う際の先頭アドレスが設定される。先頭アドレスは、不揮発性メモリのアドレス空間の先頭アドレスでもよいし、消去単位の先頭アドレスでもよい。設定された先頭アドレスに基づいてワード線１５２が選択され、ワード線１５２と接続された一対のメモリセル１４０が、読み出し対象の一対のメモリセル１４０として選択される。
【０１６８】
ステップＳ１０１０は、制御部１２０が通常リードを行う、第４の読み出しステップである。具体的には、センスアンプＳＡは、ステップＳ１００１で選択された読み出し対象の一対のメモリセル１４０に対して通常リードを行う。
【０１６９】
ステップＳ１０２０は、制御部１２０が１データ・マージンリードを行う、第５の読み出しステップである。具体的には、センスアンプＳＡは、直前のステップＳ１０１０で通常リードがなされたメモリセル１４０に対して１データ・マージンリードを行う。
【０１７０】
ステップＳ１０３０は、制御部１２０が、第４の読み出しステップＳ１０１０で読み出したデータと、第５の読み出しステップＳ１０２０で読み出したデータとを比較する第３のデータ比較ステップ（第３のデータ比較動作）である。制御部１２０は、これらのデータを比較することにより、「１」データのデータ保持特性の劣化が進んだメモリセル１４０を検出する。
【０１７１】
ステップＳ１０３０において、制御部１２０が、第４の読み出しステップＳ１０１０で読み出したデータと、第５の読み出しステップＳ１０２０で読み出したデータと、が異なると判定した場合には（Ｎｏ）、ステップＳ１０４０が行われる。
【０１７２】
ステップＳ１０４０は、制御部１２０が、読み出し対象の一対のメモリセル１４０に記憶されているデータを、読み出し対象の一対のメモリセル１４０に再度書き込む第２のリフレッシュステップ（第２のリフレッシュ動作）である。例えば、制御部１２０は、通常リードで読み出したデータから反転データを生成し、これらのデータを書き込み用データとして、一対のメモリセル１４０（１４０ｐ、１４０ｎ）に書き込む。
【０１７３】
第２のリフレッシュ動作が行われると、ステップＳ１００１に移行し、先頭アドレスから、データ保持特性の劣化が進んだメモリセル１４０の検出が再度行われる。先頭アドレスは、不揮発性メモリのアドレス空間の先頭アドレスでもよいし、消去単位の先頭アドレスでもよい。すなわち、制御部１２０は、第２のリフレッシュ動作を行った後、読み出し対象の一対のメモリセル１４０に対し、第４の読み出しステップＳ１０１０（第４の読み出し動作）と、第５の読み出しステップＳ１０２０（第５の読み出し動作）と、第３のデータ比較ステップＳ１０３０（第３のデータ比較動作）とを行う。
【０１７４】
ステップＳ１０３０において、制御部１２０が、第４の読み出しステップＳ１０１０で読み出したデータと、第５の読み出しステップＳ１０２０で読み出したデータとが同一であると判定した場合には（Ｙｅｓ）、ステップＳ１０５１、Ｓ１０５２が順次が行われる。これらのステップＳ１０５１、Ｓ１０５２についてはすでに説明しているので、ここではその詳細については省略する。
【０１７５】
＜本実施の形態による効果＞
本実施の形態によれば、上述の実施の形態における効果に加え、以下の効果が得られる。
【０１７６】
本実施の形態によれば、制御部１２０は、読み出し対象の一対のメモリセル１４０ｐ、１４０ｎに対し、通常リード（第４の読み出し動作、第４の読み出しステップＳ１０１０）と、１データ・マージンリード（第５の読み出し動作、第５の読み出しステップＳ１０２０）とを行う。そして、制御部１２０は、通常リードで読み出したデータと、１データ・マージンリードで読み出したデータとを比較する第３のデータ比較動作（第３のデータ比較ステップＳ１０３０）と、を行う。そして、制御部１２０は、第３のデータ比較動作において、通常リードで読み出したデータと、１データ・マージンリードで読み出したデータとが異なると判定した場合には、第２のリフレッシュ動作（第２のリフレッシュステップＳ１０４０）を行う。
【０１７７】
この構成によれば、相補方式のフラッシュメモリ１００Ａにおいても、通常リードよりも「１」データの読み出し条件を厳しくした１データ・マージンリードにより、「１」データのデータ保持特性の劣化が進んだ一対のメモリセル１４０が検出されるので、読み出しエラーが発生する前の適切な時期にリフレッシュ動作が行われる。また、これにより、フラッシュメモリ１００Ａの信頼性が向上し、フラッシュメモリ１００Ａが搭載されたマイクロコントローラ３００の信頼性が向上する。
【０１７８】
また、本実施の形態によれば、制御部１２０は、第２のリフレッシュステップＳ１０４０において第２のリフレッシュ動作を行った後、読み出し対象の一対のメモリセル１４０ｐ、１４０ｎに対し、第４の読み出しステップＳ１０１０と、第５の読み出しステップＳ１０２０と、第３のデータ比較ステップＳ１０３０とを行う。
【０１７９】
この構成によれば、リフレッシュ動作がなされた一対のメモリセル１４０に対して、データ保持特性の劣化が進んでいるかが再度チェックされるので、フラッシュメモリ１００Ａの信頼性が向上する。また、これにより、フラッシュメモリ１００Ａを搭載したマイクロコントローラ３００の信頼性が向上する。
【０１８０】
また、本実施の形態によれば、一対のメモリセル１４０ｐ、１４０ｎが、同一のワード線１５２と接続されている。
【０１８１】
この構成によれば、複数のワード線を選択しなくても、消去動作、書き込み動作、読み出し動作を行うことができるので、これらの動作に係る負荷が軽減される。
【０１８２】
（実施の形態４）
次に、本発明の実施の形態４について説明する。本実施の形態では、リフレッシュ動作に係る処理において、１データ・マージンリードに加えて、０データ・マージンリードも行う場合について説明する。本実施の形態においても、図１５のフローチャートに沿ってリフレッシュ動作に係る一連の処理を行う。なお、以下の説明では、上述の実施の形態と重複する内容については、原則として説明を省略する。
【０１８３】
ステップＳ１０３０では、制御部１２０が、第４の読み出しステップＳ１０１０で読み出したデータと、第５の読み出しステップで読み出した前記データとが同一であると判定した場合には（Ｙｅｓ）、ステップＳ２０６０が行われる。
【０１８４】
ステップＳ２０６０は、制御部１２０が０データ・マージンリードを行う、第６の読み出しステップである。具体的には、センスアンプＳＡは、ステップＳ１０１０、Ｓ１０２０で読み出し動作がなされた一対のメモリセル１４０に対して０データ・マージンリードを行う。
【０１８５】
ステップＳ２０７０は、制御部１２０が、第４の読み出しステップＳ１０１０で読み出したデータと、第６の読み出しステップＳ１０２０で読み出したデータとを比較する第４のデータ比較ステップ（第４のデータ比較動作）である。制御部１２０は、これらのデータを比較することにより、「０」データのデータ保持特性の劣化が進んだ一対のメモリセル１４０を検出する。
【０１８６】
ステップＳ２０７０において、制御部１２０が、第４の読み出しステップＳ１０１０で読み出したデータと、第６の読み出しステップＳ２０６０で読み出したデータと、が異なると判定した場合には（Ｎｏ）、ステップＳ２０８０が行われる。ステップＳ２０８０は、第２のリフレッシュステップである。ステップＳ２０８０では、制御部１２０は、上述した第２のリフレッシュステップＳ１０４０と同様の処理を行うので、ここでは詳細な説明を省略する。
【０１８７】
第２のリフレッシュ動作が行われると、ステップＳ１００１に移行し、先頭アドレスから、データ保持特性の劣化が進んだ一対のメモリセル１４０の検出が再度行われる。先頭アドレスは、不揮発性メモリのアドレス空間の先頭アドレスでもよいし、消去単位の先頭アドレスでもよい。すなわち、制御部１２０は、リフレッシュ動作を行った後、読み出し対象の一対のメモリセル１４０に対し、第４の読み出しステップＳ１０１０（第４の読み出し動作）と、第５の読み出しステップＳ１０２０（第５の読み出し動作）と、第３のデータ比較ステップＳ１０３０（第３のデータ比較動作）と、第６の読み出しステップＳ２０６０（第６の読み出し動作）と、第４のデータ比較ステップＳ２０７０（第４のデータ比較動作）とを行う。
【０１８８】
ステップＳ２０７０において、制御部１２０が、第４の読み出しステップＳ１０１０で読み出したデータと、第６の読み出しステップＳ２０６０で読み出したデータとが同一であると判定した場合には（Ｙｅｓ）、ステップＳ１０５１、Ｓ１０５２が順次行われる。これらのステップＳ１０５１、Ｓ１０５２における処理については、すでに説明しているので、詳細な説明を省略する。
【０１８９】
＜本実施の形態による効果＞
本実施の形態によれば、上述の実施の形態における効果に加え、以下の効果が得られる。
【０１９０】
本実施の形態によれば、制御部１２０は、第３のデータ比較動作（第３のデータ比較ステップＳ１０３０）において、通常リード（第４の読み出し動作、第４の読み出しステップＳ１０１０）で読み出したデータと、１データ・マージンリード（第５の読み出し動作、第５の読み出しステップＳ１０２０）で読み出したデータとが同一であると判定した場合には、０データ・マージンリード（第６の読み出し動作、第６の読み出しステップＳ２０６０）を行う。そして、制御部１２０は、通常リードで読み出したデータと、０データ・マージンリードで読み出したデータとを比較する第４のデータ比較動作（第４データ比較ステップＳ２０７０）とを行う。そして、制御部１２０は、第４のデータ比較動作において、通常リードで読み出したデータと、０データ・マージンリードで読み出したデータとが異なると判定した場合には第２のリフレッシュ動作（第２のリフレッシュ動Ｓ２０８０）を行う。
【０１９１】
この構成によれば、相補方式のフラッシュメモリ１００Ａにおいても、制御部１２０が、１データ・マージンリードを行った後、０データ・マージンリードも行うので、データ保持特性の劣化が進んだ一対のメモリセル１４０を検出する精度が向上する。これにより、フラッシュメモリ１００Ａの信頼性がより向上し、フラッシュメモリ１００Ａを搭載したマイクロコントローラ３００の信頼性が向上する。
【０１９２】
また、本実施の形態によれば、制御部１２０は、第２のリフレッシュ動作（第２のリフレッシュステップＳ２０８０）を行った後、第２のリフレッシュ動作が行われた読み出し対象の一対のメモリセル１４０に対し、通常リード（第４の読み出し動作、第４の読み出しステップＳ１０１０）と、１データ・マージンリード（第５の読み出し動作、第５の読み出しステップＳ１０２０）と、第３のデータ比較動作（第３のデータ比較ステップＳ１０３０）と、０データ・マージンリード（第６の読み出し動作、第６の読み出しステップＳ２０６０）と、第４のデータ比較動作（第４のデータ比較ステップＳ２０７０）と、を行う。
【０１９３】
この構成によれば、０データ・マージンリードが行われる場合にも、第２のリフレッシュ動作がなされたメモリセル１４０に対して、データ保持特性の劣化が進んでいるかが再度チェックされるので、フラッシュメモリ１００Ａの信頼性がより向上する。また、これにより、フラッシュメモリ１００を搭載したマイクロコントローラ３００の信頼性がより向上する。
【０１９４】
（実施の形態５）
次に、本発明の実施の形態５について説明する。本実施の形態では、相補方式のフラッシュメモリにおけるリフレッシュ動作において、「Ｌ」側データを記憶するメモリセル１４０に対してマージンリードを行う場合について説明する。なお、以下の説明では、上述の実施の形態と重複する内容については、原則として説明を省略する。
【０１９５】
＜フラッシュメモリの構成＞
図２０は、本発明の実施の形態５に係るセンスアンプ及びその周辺の回路構成の一例を示す図である。ビット線電位調整部２９０は、図２０に示すように、電位引き抜き部１９１、読み出しデータ保持部２９２、電位引き抜きビット線選択部２９３を備えている。
【０１９６】
読み出しデータ保持部２９２は、ゲート回路２０１、ラッチ回路ＬＡＴを備えている。ゲート回路２０１の一方の入力端は、センスアンプＳＡのオン・オフを切り替えるイネーブル信号の入力端と接続されている。
【０１９７】
センスアンプＳＡは、ハイレベルのイネーブル信号が入力されるとオンされ、ローレベルのイネーブル信号が入力されるとオフされる。したがって、センスアンプＳＡがオンされている時には、ゲート回路２０１の一方の入力端には、ハイレベルのイネーブル信号が入力される。これに対して、センスアンプＳＡがオフされている時には、ゲート回路２０１の一方の入力端には、ローレベルのイネーブル信号が入力される。
【０１９８】
ゲート回路２０１の他方の入力端には、読み出しモード（通常リード、マージンリード）に応じた読み出しモード信号が入力される。通常リード時には、ゲート回路２０１の他方の入力端には、例えば、ハイレベルの読み出しモード信号が入力される。これに対して、後述する「Ｌ」側データ・マージンリード時には、ゲート回路２０１の他方の入力端には、例えば、ローレベルの読み出しモード信号が入力される。
【０１９９】
ゲート回路２０１の出力端は、ラッチ回路ＬＡＴのオン・オフを切り替えるラッチクロック信号入力端（ｅｎａｂｌｅ）と接続されている。
【０２００】
ゲート回路２０１は、一方の入力端にハイレベルのイネーブル信号が入力され、他方の入力端にハイレベルの読み出しモード信号が入力されると、ハイレベルのラッチクロック信号を出力する。これに対して、いずれかの入力端にローレベルの信号が入力されると、ゲート回路２０１は、ローレベルのラッチクロック信号を出力する。
【０２０１】
ラッチ回路ＬＡＴのデータ入力端（ｄａｔａ）は、センスアンプＳＡの出力端と接続されている。ラッチ回路ＬＡＴのデータ出力端（ｏｕｔ）は、後述する電位引き抜きビット線選択部２９３のゲート回路２１１の入力端と接続されている。
【０２０２】
ラッチ回路ＬＡＴは、センスアンプＳＡから出力されたデータを取り込んで記憶する。具体的には、ラッチ回路ＬＡＴのラッチクロック信号入力端にハイレベルのラッチクロック信号が入力されると、ラッチ回路ＬＡＴがオンされ、ラッチ回路ＬＡＴは、センスアンプＳＡが一対のメモリセル１４０（１４０ｐ、１４０ｎ）から読み出したデータを取り込んで記憶する。なお、センスアンプＳＡは、一対のメモリセル１４０（１４０ｐ、１４０ｎ）から「１」データを読み出した場合には、例えばハイレベルの信号を、読み出しデータとして出力し、「０」データを読み出した場合には、例えばローレベルの信号を、読み出しデータとして出力する。ラッチ回路ＬＡＴは、取り込んだデータを電位引き抜きビット線選択部２９３へ出力する。
【０２０３】
電位引き抜きビット線選択部２９３は、ゲート回路２１１〜２１４を備えている。ゲート回路２１１の入力端は、ラッチ回路ＬＡＴのデータ出力端（ｏｕｔ）と接続されている。ゲート回路２１１の出力端は、ゲート回路２１２の入力端及びゲート回路２１３の一方の入力端と接続されている。ゲート回路２１２の出力端は、ゲート回路２１４の一方の入力端と接続されている。ゲート回路２１３の他方の入力端及びゲート回路２１４の他方の入力端には、リファレンス電流クロック信号が入力される。
【０２０４】
リファレンス電流クロック信号は、後述する「Ｌ」側データ・マージンリード時にアクティブになる信号である。すなわち、「Ｌ」側データ・マージンリード時には、ハイレベルのリファレンス電流クロック信号が、ゲート回路２１３、２１４のそれぞれの他方の入力端に入力される。これに対して、「Ｌ」側データ・マージンリードを行わないときには、ローレベルのリファレンス電流クロック信号が、ゲート回路２１３、２１４のそれぞれの他方の入力端に入力される。
【０２０５】
次に、本実施の形態における読み出し動作について説明する。図２１は、本発明の実施の形態５に係る各読み出し動作時において電位引き抜き部に印加する電位の一覧を示す図である。図２１（ａ）は、通常リード時を示し、図２１（ｂ）は、「Ｌ」側データ・マージンリード時を示している。
【０２０６】
本実施の形態では、後述するリフレッシュ動作を行うかを判定するために、通常リード（第４の読み出し動作）、「Ｌ」側データ・マージンリード（第５の読み出し動作）が行われる。
【０２０７】
＜通常リード＞
通常リードとは、上述した実施の形態３〜４と同様に、制御部１２０が、読み出し対象の一対のメモリセル１４０に対し、メモリセル（一方のメモリセル）１４０ｐに、ビット線（一方のビット線）１５１ｊｐ（１５１ｋｐ）の電位を引き抜かせ、メモリセル（他方のメモリセル）１４０ｎに、ビット線（他方のビット線）１５１ｊｎ（１５１ｋｎ）の電位を引き抜かせながら、センスアンプＳＡに、データを読み出させる動作をいう。
【０２０８】
このときのビット線電位調整部２９０の動作について、以下で詳しく説明する。ゲート回路２０１の一方の入力端には、ハイレベルのイネーブル信号が入力される。また、ゲート回路２０１の他方の入力端には、ハイレベルの読み出しモード信号が入力される。これにより、ゲート回路２０１は、ハイレベルのラッチクロック信号を出力する。これにより、ラッチ回路ＬＡＴがオンされて、ラッチ回路ＬＡＴは、センスアンプＳＡから出力される信号を取り込んで記憶する。このとき、一対のメモリセル１４０（１４０ｐ、１４０ｎ）から読み出されたデータが「１」である場合には、ラッチ回路ＬＡＴは、例えば、ハイレベルの信号を記憶する。また、一対のメモリセル１４０（１４０ｐ、１４０ｎ）から読み出されたデータが「０」である場合には、ラッチ回路ＬＡＴは、例えば、ローレベルの信号を記憶する。また、ラッチ回路ＬＡＴは、記憶しているデータを電位引き抜きビット線選択部２９３へ出力する。
【０２０９】
電位引き抜きビット線選択部２９３のゲート回路２１１の入力端には、ラッチ回路ＬＡＴから出力された信号が入力される。これにより、ゲート回路２１３の一方の入力端には、ゲート回路２１１の入力端に入力された信号の反転信号が入力される。また、ゲート回路２１４の一方の入力端には、ゲート回路２１２でさらに反転された信号、すなわち、ゲート回路２１１の入力端に入力された信号と同じ信号が入力される。
【０２１０】
具体的には、センスアンプＳＡにより「１」データが読み出された場合には、ゲート回路２１１の入力端にハイレベルの信号が入力されるので、ゲート回路２１３の一方の入力端にはローレベルの信号が入力され、ゲート回路２１４の一方の入力端には、ハイレベルの信号が入力される。これに対して、センスアンプＳＡにより「０」データが読み出された場合には、ゲート回路２１１の入力端にローレベルの信号が入力されるので、ゲート回路２１３の一方の入力端にはハイレベルの信号が入力され、ゲート回路２１４の一方の入力端には、ローレベルの信号が入力される。
【０２１１】
通常リードでは、ゲート回路２１３、２１４の他方の入力端には、ローレベルのリファレンス電流クロック信号がそれぞれ入力される。このため、ゲート回路２１３、２１４は、図２１（ａ）に示すように、ハイレベルの電位引き抜き切替信号ｒｅｆｄｃｊｎ、ｒｅｆｄｃｋｎをそれぞれ出力する。したがって、ＭＯＳトランジスタＭ１４、Ｍ１６はオフされており、電位引き抜き部１９１を介したビット線１５１ｊｐ（１５１ｋｐ）、１５１ｊｎ（１５１ｋｎ）の電位引き抜きは行われない。
【０２１２】
＜「Ｌ」側データ・マージンリード＞
「Ｌ」側データ・マージンリードとは、制御部１２０が、通常リードにより読み出したデータに基づいて、一対のメモリセル１４０（１４０ｐ、１４０ｎ）のうち、閾値電圧が低いメモリセル１４０に、閾値電圧が低いメモリセル１４０と接続されたビット線１５１の電位を引き抜かせ、一対のメモリセル１４０（１４０ｐ、１４０ｎ）のうち、閾値電圧が高いメモリセル１４０及びビット線電位調整部２９０に、閾値電圧が高いメモリセル１４０と接続されたビット線１５１の電位を引き抜かせながら、センスアンプＳＡに、データを読み出させる。
【０２１３】
したがって、「Ｌ」側データ・マージンリード時において、電位引き抜き部１９１では、図２１（ｂ）に示すように、一対のメモリセル１４０（１４０ｐ、１４０ｎから読み出したデータに応じて、ＭＯＳトランジスタＭ１４、Ｍ１６のそれぞれのゲート電極に入力される電位引き抜き切替信号ｒｅｆｄｃｊｎ、ｒｅｆｄｃｋｎが切り替えられる。
【０２１４】
「Ｌ」側データ・マージンリードでは、ゲート回路２１３、２１４の他方の入力端には、ハイレベルのリファレンス電流クロック信号がそれぞれ入力される。センスアンプＳＡにより「１」データが読み出された場合には、ゲート回路２１３の一方の入力端にはローレベルの信号が入力され、ゲート回路２１４の一方の入力端には、ハイレベルの信号が入力される。このため、ゲート回路２１３は、図２１（ｂ）に示すように、ハイレベルの電位引き抜き切替信号ｒｅｆｄｃｊｎを出力し、ゲート回路２１４は、ローレベルの電位引き抜き切替信号ｒｅｆｄｃｋｎを出力する。これにより、ＭＯＳトランジスタＭ１４はオフされ、ＭＯＳトランジスタＭ１６はオンされる。したがって、ＭＯＳトランジスタＭ１４からは、ビット線１５１ｊｐ（１５１ｋｐ）の電位引き抜きは行われないが、ＭＯＳトランジスタＭ１６からは、ビット線１５１ｊｎ（１５１ｋｎ）の電位引き抜きが行われる。すなわち、ビット線１５１ｊｎ（１５１ｋｎ）は、「Ｈ」側データを記憶しているネガメモリ（メモリセル１４０ｎ）と接続されており、ＭＯＳトランジスタＭ１６から、メモリセル１４０ｎと接続されたビット線１５１ｊｎ（１５１ｋｎ）の電位が引き抜かれる。
【０２１５】
これに対して、センスアンプＳＡにより「０」データが読み出された場合には、ゲート回路２１３の一方の入力端にはハイレベルの信号が入力され、ゲート回路２１４の一方の入力端には、ローレベルの信号が入力される。このため、ゲート回路２１３は、図２１（ｂ）に示すように、ローレベルの電位引き抜き切替信号ｒｅｆｄｃｊｎを出力し、ゲート回路２１４は、ハイレベルの電位引き抜き切替信号ｒｅｆｄｃｋｎを出力する。これにより、ＭＯＳトランジスタＭ１４はオンされ、ＭＯＳトランジスタＭ１６はオフされる。したがって、ＭＯＳトランジスタＭ１６からは、ビット線１５１ｊｎ（１５１ｋｎ）の電位引き抜きは行われないが、ＭＯＳトランジスタＭ１４からは、ビット線１５１ｊｐ（１５１ｋｐ）の電位引き抜きが行われる。すなわち、ビット線１５１ｊｐ（１５１ｋｐ）は、「Ｈ」側データを記憶しているポジメモリ（メモリセル１４０ｐ）と接続されており、ＭＯＳトランジスタＭ１４から、メモリセル１４０ｐと接続されたビット線１５１ｊｐ（１５１ｋｐ）の電位が引き抜かれる。
【０２１６】
このように、「Ｌ」側データ・マージンリードでは、一対のメモリセル１４０が記憶するデータに関わらず、電位引き抜き部１９１から、「Ｈ」側データを記憶するメモリセル１４０と接続されたビット線１５１の電位が引き抜かれることとなる。
【０２１７】
＜フラッシュメモリのリフレッシュ方法＞
次に、フラッシュメモリのリフレッシュ方法について説明する。図２２は、本発明の実施の形態５におけるフラッシュメモリのリフレッシュ方法に係るフローチャート図である。本実施の形態では、図２２に示すように、通常リードを行った後、「Ｌ」側データ・マージンリードを行う。
【０２１８】
まず、ステップＳ１００１では、通常リード、「Ｌ」側データ・マージンリードを行う際の先頭アドレスが設定される。先頭アドレスは、不揮発性メモリのアドレス空間の先頭アドレスでもよいし、消去単位の先頭アドレスでもよい。設定された先頭アドレスに基づいてワード線１５２が選択され、ワード線１５２と接続された一対のメモリセル１４０が、読み出し対象の一対のメモリセル１４０として選択される。
【０２１９】
ステップＳ５０１０は、制御部１２０が通常リードを行う、第４の読み出しステップである。具体的には、センスアンプＳＡは、ステップＳ１００１で選択された読み出し対象の一対のメモリセル１４０に対して通常リードを行う。
【０２２０】
また、ラッチ回路ＬＡＴは、センスアンプＳＡが読み出したデータを取り込んで記憶する。また、ラッチ回路ＬＡＴは、記憶しているデータに基づいた信号を電位引き抜きビット線選択部２９３へ出力する。電位引き抜きビット線選択部２９３では、ゲート回路２１３、２１４のそれぞれの一方の入力端に、ラッチ回路ＬＡＴから出力された信号に基づいた信号が入力される。すなわち、「Ｌ」側データを記憶するメモリセル１４０側のＭＯＳトランジスタのゲート端子と接続されるゲート回路の一方の入力端にはローレベルの信号が入力される。これに対して、「Ｈ」側データを記憶するメモリセル１４０側のＭＯＳトランジスタのゲート端子と接続されるゲート回路の一方の入力端にはハイレベルの信号が入力される。
【０２２１】
ステップＳ５０２０は、制御部１２０が「Ｌ」側・マージンリードを行う、第７の読み出しステップである。具体的には、センスアンプＳＡは、直前のステップＳ５０１０で通常リードがなされたメモリセル１４０に対して常に「Ｌ」側データ・マージンリードを行う。
【０２２２】
ステップＳ５０３０は、制御部１２０が、第４の読み出しステップＳ５０１０で読み出したデータと、第７の読み出しステップＳ５０２０で読み出したデータとを比較する第５のデータ比較ステップ（第５のデータ比較動作）である。制御部１２０は、これらのデータを比較することにより、「Ｌ」側データのデータ保持特性の劣化が進んだメモリセル１４０を検出する。
【０２２３】
ステップＳ５０３０において、制御部１２０が、第４の読み出しステップＳ５０１０で読み出したデータと、第７の読み出しステップＳ５０２０で読み出したデータと、が異なると判定した場合には（Ｎｏ）、ステップＳ１０４０が行われる。ステップＳ１０４０における処理については、すでに実施の形態３において説明しているので、ここでは詳細な説明を省略する。
【０２２４】
ステップＳ５０３０において、制御部１２０が、第４の読み出しステップＳ５０１０で読み出したデータと、第７の読み出しステップＳ５０２０で読み出したデータとが同一であると判定した場合には（Ｙｅｓ）、ステップＳ１０５１、Ｓ１０５２が順次行われる。これらのステップＳ１０５１、Ｓ１０５２における処理については、すでに説明しているので、詳細な説明を省略する。
【０２２５】
＜本実施の形態による効果＞
本実施の形態によれば、上述の実施の形態における効果に加え、以下の効果が得られる。本実施の形態によれば、制御部１２０は、通常リードを行った後、「Ｌ」側データ・マージンリードを行う。
【０２２６】
この構成によれば、相補方式のフラッシュメモリにおいても、データ保持特性の劣化が大きい、「Ｌ」側データを記憶するメモリセル１４０に対してのみマージンリードが行われるので、データ保持特性の劣化が進んだメモリセル１４０が効率的に検出される。また、「Ｈ」側データを記憶するメモリセル１４０に対してマージンリードを行わないので、データ保持特性の劣化が進んだメモリセル１４０の検出に要する時間が短縮される。
【０２２７】
（実施の形態６）
次に、本発明の実施の形態６について説明する。本実施の形態では、後述するエラー訂正部を備えたフラッシュメモリについて説明する。なお、以下の説明では、上述の実施の形態と重複する内容については、原則として説明を省略する。また、以下の説明では、フラッシュメモリ１００に関する内容とフラッシュメモリ１００Ａに関する内容とを合わせて説明し、場合に応じてこれらを分離して説明することとする。
【０２２８】
＜フラッシュメモリの構成＞
図２３は、本発明の実施の形態６に係るフラッシュメモリを搭載したマイクロコントローラの構成の一例を示すブロック図である。フラッシュメモリ１００（１００Ａ）には、エラー訂正部５０１が接続され、フラッシュメモリ１００（１００Ａ）及びエラー訂正部５０１により、本実施の形態におけるフラッシュメモリ５００が構成されている。エラー訂正部５０１は、例えば、ＥＣＣ（Ｅｒｒｏｒ  Ｃｈｅｃｋ  ａｎｄ  Ｃｏｒｒｅｃｔ）回路で構成されている。
【０２２９】
エラー訂正部５０１は、図２３に示すように、高速バス３１１と接続されており、高速バス３１１を介してデータの入出力を行う。エラー訂正部５０１は、データに基づいてエラー訂正用データを生成し、センスアンプが読み出したデータのエラーを訂正したエラー訂正後データを生成する。なお、本実施の形態におけるエラーとは、メモリセルに書き込まれたデータと、センスアンプＳＡから読み出されたデータとが異なっていることをいう。
【０２３０】
エラー訂正部５０１は、例えば、高速バス３１１を介して入力された書き込み用データ、あるいは、メモリセル１４０に書き込まれたデータからエラー訂正用データを生成する。生成されたエラー訂正用データは、元のデータとともに、例えばメモリアレイ１０８（１０８Ａ）に記憶されてもよいし、例えば図示しない記憶装置に、元のデータとは別で記憶されてもよい。エラー訂正部５０１は、エラーが検出された場合には、センスアンプＳＡから読み出したデータ及びエラー訂正用データに基づいて、エラー訂正後データを生成する。
【０２３１】
エラー訂正部５０１は、制御部１２０の指示に基づいて、エラー訂正用データを生成したり、エラー訂正後データの生成を行うエラー訂正機能のオン・オフが切り替えられる。例えば、エラー訂正機能がオフされている場合には、エラー訂正部５０１は、高速バス３１１から入力されたデータをそのままフラッシュメモリ１００、１００Ａに出力し、センスアンプＳＡから読み出されたデータに対するエラー検出を行わない。すなわち、このような場合には、本実施の形態のフラッシュメモリ５００は、上述の実施の形態で説明したフラッシュメモリ１００、１００Ａと同等の機能を有することとなる。
【０２３２】
＜フラッシュメモリのリフレッシュ方法＞
次に、フラッシュメモリのリフレッシュ方法について説明する。図２４は、本発明の実施の形態６におけるフラッシュメモリのリフレッシュ方法に係るフローチャート図である。
【０２３３】
ステップＳ１００１についてはすでに説明しているので、詳細な説明を省略する。
【０２３４】
ステップＳ１０２０では、制御部１２０は、１データ・マージンリードを行う。フラッシュメモリ１００において、制御部１２０は、第２の読み出し動作により１データ・マージンリードを行う。また、フラッシュメモリ１００Ａにおいて、制御部１２０は、第５の読み出し動作により１データ・マージンリードを行う。
【０２３５】
次に、ステップＳ３０３０について説明する。フラッシュメモリ１００では、制御部１２０は、エラー訂正部５０１に、１データ・マージンリード（第２の読み出し動作）で読み出したデータ及びエラー訂正用データに基づいてデータのエラーを検出させる、第１のエラー検出動作を行う。すなわち、フラッシュメモリ１００におけるステップＳ３０３０は、第１のエラー検出ステップである。
【０２３６】
一方、フラッシュメモリ１００Ａでは、制御部１２０は、エラー訂正部５０１に、１データ・マージンリード（第５の読み出し動作）で読み出したデータ及びエラー訂正用データに基づいてデータのエラーを検出させる、第３のエラー検出動作を行う。すなわち、フラッシュメモリ１００ＡにおけるステップＳ３０３０は、第３のエラー検出ステップである。
【０２３７】
例えば、制御部１２０は、１データ・マージンリード（第２、第５の読み出し動作）で読み出したデータをエラー訂正部５０１に出力する。エラー訂正部５０１は、制御部１２０から出力されたデータと、メモリアレイ１０８（１０８Ａ）や図示しない記憶装置から読み出したエラー訂正用データとから、１データ・マージンリードで読み出したデータのエラーを検出する。
【０２３８】
ステップＳ３０３０（第１、第３のエラー検出ステップ）において、エラー訂正部５０１が、１データ・マージンリード（第２、第５の読み出し動作）で読み出したデータのエラーを検出した場合には（Ｙｅｓ）、ステップＳ３０４０が行われる。
【０２３９】
次に、ステップＳ３０４０について説明する。フラッシュメモリ１００では、制御部１２０は、エラー訂正部５０１に、１データ・マージンリード（第２の読み出し動作）で読み出したデータ及びエラー訂正用データに基づいてエラー訂正された、エラー訂正後データを生成させ、エラー訂正後データを読み出し対象のメモリセル１４０に再度書き込む第３のリフレッシュ動作を行う。すなわち、フラッシュメモリ１００におけるステップＳ３０４０は、第３のリフレッシュステップである。
【０２４０】
一方、フラッシュメモリ１００Ａでは、制御部１２０は、エラー訂正部５０１に、１データ・マージンリード（第５の読み出し動作）で読み出したデータ及びエラー訂正用データに基づいてエラー訂正された、エラー訂正後データを生成させ、エラー訂正後データを読み出し対象の一対のメモリセル１４０ｐ、１４０ｎに再度書き込む第５のリフレッシュ動作を行う。すなわち、フラッシュメモリ１００ＡにおけるステップＳ３０４０は、第５のリフレッシュステップである。
【０２４１】
ステップＳ３０４０で生成されるエラー訂正後データは、メモリセル１４０、一対のメモリセル１４０ｐ、１４０ｎに当初のデータを記憶させる際の書き込み用データと同様のものである。
【０２４２】
第３、第５のリフレッシュ動作が行われると、ステップＳ１００１に移行し、先頭アドレスから、データ保持特性の劣化が進んだメモリセル１４０、一対のメモリセル１４０ｐ、１４０ｎの検出が再度行われる。先頭アドレスは、不揮発性メモリのアドレス空間の先頭アドレスでもよいし、消去単位の先頭アドレスでもよい。すなわち、制御部１２０は、第３、第５のリフレッシュ動作を行った後、読み出し対象のメモリセル１４０、一対のメモリセル１４０ｐ、１４０ｎに対し、ステップＳ１０２０（第２、第５の読み出しステップ）と、ステップＳ３０３０（第１、第３のエラー検出ステップ）とを行う。
【０２４３】
ステップＳ３０３０において、エラー訂正部５０１が、ステップＳ１０２０（第２、第５の読み出しステップ）で読み出したデータのエラーを検出しなかった場合には（Ｎｏ）、ステップＳ１０５１、Ｓ１０５２が順次行われる。ステップＳ１０５１、Ｓ１０５２についてはすでに説明しているので、詳細な説明を省略する。
【０２４４】
＜本実施の形態による効果＞
本実施の形態によれば、上述の実施の形態における効果に加え、以下の効果が得られる。本実施の形態によれば、エラー訂正部５０１を備え、制御部１２０は、１データ・マージンリード（第２、第５の読み出し動作、第２、第５の読み出しステップＳ１０２０）と、エラー訂正部５０１に、１データ・マージンリードで読み出したデータ及びエラー訂正用データに基づいてデータのエラーを検出させる、第１、第３のエラー検出動作（第１、第３のエラー検出ステップＳ３０３０）と、を行う。そして、制御部１２０は、第１、第３のエラー検出動作において、エラー訂正部５０１が、１データ・マージンリードで読み出したデータのエラーを検出した場合には、エラー訂正部５０１に、１データ・マージンリードで読み出したデータ及びエラー訂正用データに基づいてエラー訂正された、エラー訂正後データを生成させ、エラー訂正後データを読み出し対象のメモリセル１４０、一対のメモリセル１４０ｐ、１４０ｎに再度書き込む第３、第５のリフレッシュ動作（第３、第５のリフレッシュステップＳ３０４０）を行う。
【０２４５】
この構成によれば、通常リードを行わなくてもよいので、センスアンプＳＡで読み出したデータのエラー検出に要する時間が短縮され、リフレッシュ動作に係る時間が短縮される。また、これにより、リフレッシュ動作に係る消費電力が低減される。
【０２４６】
また、本実施の形態によれば、制御部１２０は、第３、第５のリフレッシュ動作（第３、第５のリフレッシュステップＳ３０４０）を行った後、読み出し対象のメモリセル１４０、一対のメモリセル１４０ｐ、１４０ｎに対し、１データ・マージンリード（第２、第５の読み出し動作、第２、第５の読み出しステップＳ１０２０）と、第１、第３のエラー検出動作（第１、第３のエラー検出ステップＳ３０３０）とを行う。
【０２４７】
この構成によれば、リフレッシュ動作がなされたメモリセル１４０、一対のメモリセル１４０ｐ、１４０ｎに対して、データ保持特性の劣化が進んでいるかが再度チェックされるので、フラッシュメモリ１００、１００Ａ、すなわちフラッシュメモリ５００の信頼性が向上する。また、これにより、フラッシュメモリ５００を搭載したマイクロコントローラ３００の信頼性が向上する。
【０２４８】
（実施の形態７）
次に、本発明の実施の形態７について説明する。本実施の形態では、エラー訂正部５０１を備えたフラッシュメモリ５００（１００、１００Ａ）のリフレッシュ動作において、１データ・マージンリードに加えて、０データ・マージンリードも行う場合について説明する。図２５は、本発明の実施の形態７におけるフラッシュメモリのリフレッシュ方法に係るフローチャート図である。なお、以下の説明では、上述の実施の形態と重複する内容については、原則として説明を省略する。
【０２４９】
ステップＳ３０３０において、エラー訂正部５０１が、ステップＳ１０２０（第２、第５の読み出しステップ）で読み出したデータのエラーを検出しなかった場合には（Ｎｏ）、ステップＳ２０６０が行われる。
【０２５０】
ステップＳ２０６０では、制御部１２０は、０データ・マージンリードを行う。フラッシュメモリ１００において、制御部１２０は、第３の読み出し動作により０データ・マージンリードを行う。また、フラッシュメモリ１００Ａにおいて、制御部１２０は、第６の読み出し動作により０データ・マージンリードを行う。
【０２５１】
次に、ステップＳ４０７０について説明する。フラッシュメモリ１００では、制御部１２０は、エラー訂正部５０１に、０データ・マージンリード（第３の読み出し動作）で読み出したデータ及びエラー訂正用データに基づいてデータのエラーを検出させる、第２のエラー検出動作を行う。すなわち、フラッシュメモリ１００におけるステップＳ４０７０は、第２のエラー検出ステップである。
【０２５２】
一方、フラッシュメモリ１００Ａでは、制御部１２０は、エラー訂正部５０１に、０データ・マージンリード（第６の読み出し動作）で読み出したデータ及びエラー訂正用データに基づいてデータのエラーを検出させる、第４のエラー検出動作を行う。すなわち、フラッシュメモリ１００ＡにおけるステップＳ４０７０は、第４のエラー検出ステップである。
【０２５３】
例えば、制御部１２０は、０データ・マージンリード（第３、第６の読み出し動作）で読み出したデータをエラー訂正部５０１に出力する。エラー訂正部５０１は、制御部１２０から出力されたデータと、メモリアレイ１０８（１０８Ａ）や図示しない記憶装置から読み出したエラー訂正用データとから、０データ・マージンリードで読み出したデータのエラーを検出する。
【０２５４】
ステップＳ４０７０（第２、第４のエラー検出ステップ）において、エラー訂正部５０１が、０データ・マージンリード（第３、第６の読み出し動作）で読み出したデータのエラーを検出した場合には（Ｙｅｓ）、ステップＳ４０８０が行われる。
【０２５５】
次に、ステップＳ４０８０について説明する。フラッシュメモリ１００では、制御部１２０は、エラー訂正部５０１に、０データ・マージンリード（第３の読み出し動作）で読み出したデータ及びエラー訂正用データに基づいてエラー訂正された、エラー訂正後データを生成させ、エラー訂正後データを読み出し対象のメモリセル１４０に再度書き込む第４のリフレッシュ動作を行う。すなわち、フラッシュメモリ１００におけるステップＳ４０８０は、第４のリフレッシュステップである。
【０２５６】
一方、フラッシュメモリ１００Ａでは、制御部１２０は、エラー訂正部５０１に、０データ・マージンリード（第５の読み出し動作）で読み出したデータ及びエラー訂正用データに基づいてエラー訂正された、エラー訂正後データを生成させ、エラー訂正後データを読み出し対象の一対のメモリセル１４０ｐ、１４０ｎに再度書き込む第６のリフレッシュ動作を行う。すなわち、フラッシュメモリ１００ＡにおけるステップＳ４０８０は、第６のリフレッシュステップである。
【０２５７】
ステップＳ４０８０で生成されるエラー訂正後データは、メモリセル１４０、一対のメモリセル１４０ｐ、１４０ｎに当初のデータを記憶させる際の書き込み用データと同等のものである。
【０２５８】
第４、第６のリフレッシュ動作が行われると、ステップＳ１００１に移行し、先頭アドレスから、データ保持特性の劣化が進んだメモリセル１４０、一対のメモリセル１４０ｐ、１４０ｎの検出が再度行われる。先頭アドレスは、不揮発性メモリのアドレス空間の先頭アドレスでもよいし、消去単位の先頭アドレスでもよい。すなわち、制御部１２０は、第４、第６のリフレッシュ動作を行った後、読み出し対象のメモリセル１４０、一対のメモリセル１４０ｐ、１４０ｎに対し、ステップＳ１０２０（第２、第５の読み出しステップ）と、ステップＳ３０３０（第１、第３のエラー検出ステップ）、ステップＳ２０６０（第３、第６の読み出しステップ）、ステップＳ４０７０（第２、第４のエラー検出ステップ）を行う。
【０２５９】
ステップＳ４０７０において、エラー訂正部５０１が、ステップＳ２０６０（第３、第６の読み出しステップ）で読み出したデータのエラーを検出しなかった場合には（Ｎｏ）、ステップＳ１０５１、Ｓ１０５２が順次行われる。ステップＳ１０５１、Ｓ１０５２についてはすでに説明しているので、詳細な説明を省略する。
【０２６０】
＜本実施の形態による効果＞
本実施の形態によれば、上述の実施の形態における効果に加え、以下の効果が得られる。本実施の形態によれば、ステップＳ３０３０において、エラー訂正部５０１が、１データ・マージンリード（第２、第５の読み出し動作、第２、第５の読み出しステップＳ１０２０）で読み出したデータのエラーを検出しなかった場合には、制御部１２０は、０データ・マージンリード（第３、第６の読み出し動作、第３、第６の読み出しステップＳ２０６０）と、エラー訂正部５０１に、０データ・マージンリードで読み出したデータ及びエラー訂正用データに基づいてデータのエラーを検出させる、第２、第４のエラー検出動作（第２、第４のエラー検出ステップＳ４０７０）と、を行う。
【０２６１】
そして、制御部１２０は、第２、第４のエラー検出動作において、エラー訂正部５０１が、０データ・マージンリードで読み出したデータのエラーを検出した場合には、エラー訂正部５０１に、０データ・マージンリードで読み出したデータ及びエラー訂正用データに基づいてエラー訂正された、エラー訂正後データを生成させ、エラー訂正後データを読み出し対象のメモリセル１４０、一対のメモリセル１４０ｐ、１４０ｎに再度書き込む第４、第６のリフレッシュ動作（第４、第６のリフレッシュステップＳ４０８０）を行う。
【０２６２】
この構成によれば、制御部１２０が、１データ・マージンリードを行った後、０データ・マージンリードも行うので、データ保持特性の劣化が進んだメモリセル１４０、一対のメモリセル１４０ｐ、１４０ｎを検出する精度が向上する。これにより、フラッシュメモリ１００、１００Ａの信頼性がより向上し、フラッシュメモリ１００、１００Ａ、すなわちフラッシュメモリ５００の信頼性が向上する。また、これにより、フラッシュメモリ５００を搭載したマイクロコントローラ３００の信頼性が向上する。
【０２６３】
また、本実施の形態によれば、制御部１２０は、第４、第６のリフレッシュ動作（第４、第６のリフレッシュステップＳ４０８０）を行った後、読み出し対象のメモリセル１４０、一対のメモリセル１４０ｐ、１４０ｎに対し、１データ・マージンリード（第２、第５の読み出し動作、第２、第５の読み出しステップＳ１０２０）と、第１、第３のエラー検出動作（第１、第３のエラー検出ステップＳ３０３０）と、０データ・マージンリード（第３、第６の読み出し動作、第３、第６の読み出しステップＳ２０６０）と、第２、第４のエラー検出動作（第２、第４のエラー検出ステップＳ４０７０）と、を行う。
【０２６４】
この構成によれば、リフレッシュ動作がなされたメモリセル１４０、一対のメモリセル１４０ｐ、１４０ｎに対して、データ保持特性の劣化が進んでいるかが再度チェックされるので、フラッシュメモリ１００、１００Ａ、すなわちフラッシュメモリ５００の信頼性がより向上する。また、これにより、フラッシュメモリ５００を搭載したマイクロコントローラ３００の信頼性がより向上する。
【０２６５】
（実施の形態８）
次に、本発明の実施の形態８について説明する。本実施の形態では、エラー訂正部５０１を備えた相補方式のフラッシュメモリ５００（１００Ａ）のリフレッシュ動作において、通常リードと「Ｌ」側データ・マージンリードを行う場合について説明する。なお、以下の説明では、上述の実施の形態と重複する内容については、原則として説明を省略する。
【０２６６】
本実施の形態におけるフラッシュメモリ５００は、図２０に示すビット線電位調整部２９０を備えている。なお、ビット線電位調整部２９０については、すでに実施の形態５において説明しているので、ここでは詳細な説明を省略する。また、本実施の形態における通常リード、「Ｌ」側データ・マージンリードについても、すでに実施の形態５において説明しているので、ここでは詳細な説明を省略する。
【０２６７】
＜フラッシュメモリのリフレッシュ方法＞
次に、フラッシュメモリのリフレッシュ方法について説明する。図２６は、本発明の実施の形態８におけるフラッシュメモリのリフレッシュ方法に係るフローチャート図である。本実施の形態では、図２６に示すように、通常リードを行った後、「Ｌ」側データ・マージンリード行う。
【０２６８】
まず、ステップＳ１００１では、後述する通常リード、１データ・マージンリードを行う際の先頭アドレスが設定される。先頭アドレスは、不揮発性メモリのアドレス空間の先頭アドレスでもよいし、消去単位の先頭アドレスでもよい。設定された先頭アドレスに基づいてワード線１５２が選択され、ワード線１５２と接続された一対のメモリセル１４０が、読み出し対象の一対のメモリセル１４０として選択される。
【０２６９】
ステップＳ５０１０は、制御部１２０が通常リードを行う、第４の読み出しステップである。また、ステップＳ５０２０は、制御部１２０が「Ｌ」側データ・マージンリードを行う、第７の読み出しステップである。これらのステップＳ５０１０〜Ｓ５０２０については、実施の形態５において説明しているので、ここでは詳細な説明を省略する。
【０２７０】
ステップＳ６０３０は、制御部１２０が、エラー訂正部５０１に、「Ｌ」側データ・マージンリード（第７の読み出し動作）で読み出したデータ及びエラー訂正用データに基づいてデータのエラーを検出させる、第５のエラー検出動作を行うステップである。
【０２７１】
ステップＳ６０３０では、例えば、制御部１２０は、「Ｌ」側データ・マージンリードで読み出したデータをエラー訂正部５０１に出力する。エラー訂正部５０１は、制御部１２０から出力されたデータと、メモリアレイ１０８（１０８Ａ）や図示しない記憶装置から読み出したエラー訂正用データとから、「Ｌ」側データ・マージンリードで読み出したデータのエラーを検出する。
【０２７２】
ステップＳ６０３０において、エラー訂正部５０１が、「Ｌ」側データ・マージンリードで読み出したデータのエラーを検出した場合には（Ｙｅｓ）、ステップＳ６０４０が行われる。
【０２７３】
次に、ステップＳ６０４０について説明する。フラッシュメモリ１００Ａでは、制御部１２０は、エラー訂正部５０１に、「Ｌ」側データ・マージンリードで読み出したデータ及びエラー訂正用データに基づいてエラー訂正された、エラー訂正後データを生成させ、エラー訂正後データを読み出し対象の一対のメモリセル１４０に再度書き込む第７のリフレッシュ動作を行う。すなわち、ステップＳ６０４０は、第７のリフレッシュステップである。
【０２７４】
第７のリフレッシュ動作が行われると、ステップＳ１００１に移行し、先頭アドレスから、データ保持特性の劣化が進んだメモリセル１４０の検出が再度行われる。先頭アドレスは、不揮発性メモリのアドレス空間の先頭アドレスでもよいし、消去単位の先頭アドレスでもよい。すなわち、制御部１２０は、第７のリフレッシュ動作を行った後、読み出し対象の一対のメモリセル１４０（１４０ｐ、１４０ｎ）に対し、ステップＳ５０１０、Ｓ５０２０、Ｓ６０３０を行う。
【０２７５】
ステップＳ６０３０において、エラー訂正部５０１が、ステップＳ５０２０で読み出したデータのエラーを検出しなかった場合には（Ｎｏ）、ステップＳ１０５１、Ｓ１０５２が順次行われる。ステップＳ１０５１、Ｓ１０５２についてはすでに説明しているので、ここでは詳細な説明を省略する。
【０２７６】
＜本実施の形態による効果＞
本実施の形態によれば、上述の実施の形態における効果に加え、以下の効果が得られる。本実施の形態によれば、制御部１２０は、通常リードを行った後、「Ｌ」側データ・マージンリードを行う。
【０２７７】
この構成によれば、相補方式のフラッシュメモリにおいても、データ保持特性の劣化が大きい、「Ｌ」側データを記憶するメモリセル１４０に対してのみマージンリードが行われるので、データ保持特性の劣化が進んだメモリセル１４０が効率的に検出される。また、「Ｈ」側データを記憶するメモリセル１４０に対してマージンリードを行わないので、データ保持特性の劣化が進んだメモリセル１４０の検出に要する時間が短縮される。
【０２７８】
（実施の形態９）
次に、本発明の実施の形態９について説明する。上述の実施の形態では、メモリセル１４０が、選択トランジスタ１４１と、メモリトランジスタ１４２とからなる場合について説明したが、メモリセルはこのような構成に限定されるものではない。本実施の形態では、メモリセルがメモリトランジスタのみからなる場合について説明する。
【０２７９】
図２７は、本発明の実施の形態９に係るメモリセルの回路構成の一例を示す図である。図２８は、本発明の実施の形態９に係るメモリセルの構成の一例を示す断面図である。メモリセル９４０は、図２７、図２８に示すように、メモリトランジスタのみからなる。
【０２８０】
半導体基板９４０ａには、図２８に示すように、複数のメモリセル９４０に共通のＷＥＬＬ領域９４０ｇが形成され、メモリセル９４０は、ＷＥＬＬ領域９４０ｇ上に形成されている。メモリセル９４０は、例えばプレーナー型のＭＯＮＯＳ構造を有する。メモリセル９４０は、図２８に示すように、ソース９４２ｆとドレイン９４１ｄとの間の領域では、半導体基板（ｓｅｍｉｃｏｎｄｕｃｔｏｒ）９４０ａのＷＥＬＬ領域９４０ｇ上に、酸化膜（ｏｘｉｄｅ）９４２ｂ、窒化膜（ｎｉｔｒｉｄｅ）９４２ｃ、酸化膜（ｏｘｉｄｅ）９４２ｄ、メモリゲート（ｍｅｔａｌ）９４２ｅが積層されている。
【０２８１】
メモリセル９４０のドレイン９４１ｄは、図２７に示すように、ビット線１５１（１５１ｊ、１５１ｊｐ、１５１ｊｎ、１５１ｋ、１５１ｋｐ、１５１ｋｎ）と接続されている。メモリセル９４０のメモリゲート９４２ｅは、例えば、図２７に示すように、ワード線１５２と接続されている。なお、メモリセル９４０のメモリゲート９４２ｅは、例えば、メモリゲート線１５４と接続されてもよい。また、メモリトランジスタ９４０のソース９４２ｆは、図２７に示すように、複数のメモリセル９４０に共通のソース線１５３と接続されている。
【０２８２】
図２９は、各動作においてメモリセルに印加される電圧の一例を示す図である。図２９では、書き込み動作、消去動作、読み出し動作における、ビット線１５１（１５１ｊ、１５１ｊｐ、１５１ｊｎ、１５１ｋ、１５１ｋｐ、１５１ｋｎ）、メモリゲート９４２ｅ、ソース線１５３、ＷＥＬＬ領域９４０ｇに印加される各電圧が示されている。図２９では、ＦＮトンネル方式により各動作を行う場合について示されている。
【０２８３】
書き込み動作時には、例えば図２９に示すように、ビット線１５１（１５１ｊ、１５１ｊｐ、１５１ｊｎ、１５１ｋ、１５１ｋｐ、１５１ｋｎ）に−４Ｖ、メモリゲート９４２ｅ（すなわちワード線１５２）に６Ｖ、ソース線１５３に−４Ｖ、ＷＥＬＬ領域１４０ｇに−４Ｖの各電圧が印加される。書き込み動作時には、窒化膜９４２に対し、ＦＮ電子注入と呼ばれる方法によりチャネルから電子を注入し、窒化膜９４２ｃに電子がトラップされることで閾値電圧が高い状態を作り出す。
【０２８４】
また、消去動作時には、例えば図２９に示すように、ビット線１５１（１５１ｊ、１５１ｊｐ、１５１ｊｎ、１５１ｋ、１５１ｋｐ、１５１ｋｎ）に６Ｖ、メモリゲート９４２ｅ（すなわちワード線１５２）に−４Ｖ、ソース線１５３に６Ｖ、ＷＥＬＬ領域１４０ｇに６Ｖの各電圧が印加される。消去動作時には、ＦＮホール注入と呼ばれる方法によりチャネルからホールを注入し、窒化膜９４２ｃにホールがトラップされることで閾値電圧が低い状態を作り出す。
【０２８５】
また、読み出し動作時には、例えば図２９に示すように、ビット線１５１（１５１ｊ、１５１ｊｐ、１５１ｊｎ、１５１ｋ、１５１ｋｐ、１５１ｋｎ）に１．５Ｖ、メモリゲート９４２ｅ（すなわちワード線１５２）に１．５Ｖ、ソース線１５３に０Ｖ、ＷＥＬＬ領域１４０ｇに０Ｖの各電圧が印加される。
【０２８６】
書き換え回数が多くなると、窒化膜９４２ｃにおける電子、ホールのトラップ能力が劣化し、書き換え状態、消去状態における閾値電圧の変動が大きくなる。そこで、このような構成を有するメモリセル９４０においても、上述の実施の形態で説明したリフレッシュ動作に係る一連の処理を行う。
【０２８７】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明はこれまで記載した実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【０２８８】
以下に、本発明の好ましい主な態様について付記する。
【０２８９】
［付記１］
複数のメモリセルと、
前記メモリセルで記憶されているデータを読み出すセンスアンプと、
前記ビット線の電位を調整するビット線電位調整部と、
制御部と、
を備え、
一対の前記メモリセルでは、一方の前記メモリセルにデータが記憶され、他方の前記メモリセルに前記データを反転させた反転データが記憶されることにより前記データが記憶され、
前記センスアンプは、前記一対のメモリセルのそれぞれと接続された一対のビット線と入力端で接続され、前記一方のメモリセルと接続された一方の前記ビット線の電位と、前記他方のメモリセルと接続された他方の前記ビット線の電位と、に基づいて前記一対のメモリセルに記憶されている前記データを読み出し、
前記制御部は、
前記一方のメモリセルに、前記一方のビット線の電位を引き抜かせ、前記他方のメモリセルに、前記他方のビット線の電位を引き抜かせながら、前記センスアンプに、前記データを読み出させる第４の読み出し動作と、
前記第４の読み出し動作により読み出した前記データに基づいて、前記一対のメモリセルのうち、閾値電圧が低い前記メモリセルに、前記閾値電圧が低いメモリセルと接続された前記ビット線の電位を引き抜かせ、前記一対のメモリセルのうち、閾値電圧が高い前記メモリセル及び前記ビット線電位調整部に、前記閾値電圧が高いメモリセルと接続された前記ビット線の電位を引き抜かせながら、前記センスアンプに、前記データを読み出させる第７の読み出し動作と、
前記第４の読み出し動作で読み出した前記データと、前記第７の読み出し動作で読み出した前記データと、を比較する第５のデータ比較動作と、を行い、
前記第５のデータ比較動作において、前記第４の読み出し動作で読み出した前記データと、前記第７の読み出し動作で読み出した前記データと、が異なると判定した場合には、前記一対のメモリセルに記憶されている前記データ及び前記反転データを、前記一対のメモリセルに再度書き込む第２のリフレッシュ動作と、を行う、
フラッシュメモリ。
【０２９０】
［付記２］
複数のメモリセルと、
前記メモリセルで記憶されているデータを読み出すセンスアンプと、
前記ビット線の電位を調整するビット線電位調整部と、
前記データに基づいてエラー訂正用データを生成し、前記センスアンプが読み出した前記データのエラーを訂正するエラー訂正部と、
制御部と、
を備え、
一対の前記メモリセルでは、一方の前記メモリセルにデータが記憶され、他方の前記メモリセルに前記データを反転させた反転データが記憶されることにより前記データが記憶され、
前記センスアンプは、前記一対のメモリセルのそれぞれと接続された一対のビット線と入力端で接続され、前記一方のメモリセルと接続された一方の前記ビット線の電位と、前記他方のメモリセルと接続された他方の前記ビット線の電位とに基づいて前記一対のメモリセルに記憶されている前記データを読み出し、
前記制御部は、
前記一方のメモリセルに、前記一方のビット線の電位を引き抜かせ、前記他方のメモリセルに、前記他方のビット線の電位を引き抜かせながら、前記センスアンプに、前記データを読み出させる第４の読み出し動作と、
前記第４の読み出し動作により読み出した前記データに基づいて、前記一対のメモリセルのうち、閾値電圧が低い前記メモリセルに、前記閾値電圧が低いメモリセルと接続された前記ビット線の電位を引き抜かせ、前記一対のメモリセルのうち、閾値電圧が高い前記メモリセル及び前記ビット線電位調整部に、前記閾値電圧が高いメモリセルと接続された前記ビット線の電位を引き抜かせながら、前記センスアンプに、前記データを読み出させる第７の読み出し動作と、
前記エラー訂正部に、前記第７の読み出し動作で読み出した前記データ及び前記エラー訂正用データに基づいて前記データのエラーを検出させる、第５のエラー検出動作と、を行い、
前記第５のエラー検出動作において、前記エラー訂正部が、前記第７の読み出し動作で読み出した前記データのエラーを検出した場合には、前記エラー訂正部に、前記第７の読み出し動作で読み出した前記データ及び前記エラー訂正用データに基づいてエラー訂正された、エラー訂正後データを生成させ、前記エラー訂正後データを前記一対のメモリセルに再度書き込む第７のリフレッシュ動作と、を行う、
フラッシュメモリ。
【符号の説明】
【０２９１】
１００、１００Ａ…フラッシュメモリ、１０８、１０８Ａ…メモリアレイ、１２０…制御部、１４０、１４０ｐ、１４０ｎ…メモリセル、１５０…共通ビット線、１５１、１５１ｊ、１５１ｊｐ、１５１ｊｎ、１５１ｋ、１５１ｋｐ、１５１ｋｎ…ビット線、１７０、１７０ｊ、１７０ｋ…ビット線選択用スイッチング素子、１８０、１８０ｊ、１８０ｊｐ、１８０ｊｎ、１８０ｋ、１８０ｋｐ、１８０ｋｎ…読み出しメモリセル選択用スイッチング素子、１９０、１９０Ａ、２９０…ビット線電位調整部、３００…マイクロコントローラ、５００…フラッシュメモリ、５０１…エラー訂正部、ｍａｔ…メモリマット、ＳＡ…センスアンプ、Ｓ１０１０…第１のデータ読み出しステップ、Ｓ１０２０…第２のデータ読み出しステップ、Ｓ１０３０…第１のデータ比較ステップ、Ｓ１０４０…第１のリフレッシュステップ、第２のリフレッシュステップ、Ｓ２０６０…第３のデータ読み出しステップ、Ｓ２０７０…第２のデータ比較ステップ、Ｓ２０８０…第１のリフレッシュステップ、Ｓ３０３０…第１のエラー検出ステップ、第３のエラー検出ステップ、Ｓ３０４０…第３のリフレッシュステップ、第５のリフレッシュステップ、Ｓ４０７０…第２のエラー検出ステップ、第４のエラー検出ステップ、Ｓ４０８０…第４のリフレッシュステップ、第６のリフレッシュステップ、Ｓ５０１０…第４の読み出しステップ、Ｓ５０２０…第７の読み出しステップ、Ｓ５０３０…第５のデータ比較ステップ、Ｓ６０３０…第５のエラー検出ステップ、Ｓ６０４０…第７のリフレッシュステップ
【図１】
2018041515.tif 000003
【図２】
2018041515.tif 000004
【図３】
2018041515.tif 000005
【図４】
2018041515.tif 000006
【図５】
2018041515.tif 000007
【図６】
2018041515.tif 000008
【図７】
2018041515.tif 000009
【図８】
2018041515.tif 000010
【図９】
2018041515.tif 000011
【図１０】
2018041515.tif 000012
【図１１】
2018041515.tif 000013
【図１２】
2018041515.tif 000014
【図１３】
2018041515.tif 000015
【図１４】
2018041515.tif 000016
【図１５】
2018041515.tif 000017
【図１６】
2018041515.tif 000018
【図１７】
2018041515.tif 000019
【図１８】
2018041515.tif 000020
【図１９】
2018041515.tif 000021
【図２０】
2018041515.tif 000022
【図２１】
2018041515.tif 000023
【図２２】
2018041515.tif 000024
【図２３】
2018041515.tif 000025
【図２４】
2018041515.tif 000026
【図２５】
2018041515.tif 000027
【図２６】
2018041515.tif 000028
【図２７】
2018041515.tif 000029
【図２８】
2018041515.tif 000030
【図２９】
2018041515.tif 000031