(57)【要約】【課題】本発明は、メモリセルに記憶してあるデータを読出し、または書込む動作を高速に行なうことが可能で、２ビットのデータの誤りを訂正することができる半導体装置を提供する。【解決手段】本発明は、記憶したデータの誤りを訂正することが可能な半導体装置であって、メモリアレイ３１と、データ読出部３２と、ＥＣＣ回路（データ誤検出部、第２データ訂正部）４０と、データ訂正部（第１データ訂正部）３３とを備えている。ＥＣＣ回路４０が２ビットのデータの誤りを検出した場合に、データ読出部３２がメモリセル３１０からデータを読出すときの読出特性を変更して、１ビット以下のデータの誤りに訂正し、誤りが１ビットとなったデータを、誤り訂正符号を用いて訂正する。【選択図】図１
2012230730.tif 000002
【特許請求の範囲】
【請求項１】
記憶したデータの誤りを訂正することが可能な半導体装置であって、
データを記憶するメモリセルを行列状に配置してあるメモリアレイと、
前記メモリセルに記憶したデータを読出すデータ読出部と、
前記データ読出部で読出したデータに付してある誤り訂正符号を用いて、２ビットまでのデータの誤りを検出することが可能なデータ誤検出部と、
前記データ誤検出部が２ビットのデータの誤りを検出した場合に、前記データ読出部が前記メモリセルからデータを読出すときの読出特性を変更して、１ビット以下のデータの誤りに訂正する第１データ訂正部と、
前記第１データ訂正部での訂正により、誤りが１ビットとなったデータを、前記誤り訂正符号を用いて訂正する第２データ訂正部とを
備える半導体装置。
【請求項２】
前記データ読出部は、前記メモリセルに流れる電流値と基準値との比較に基づいて、読出すデータが“０”か“１”かを判定するセンスアンプを有し、
前記第１データ訂正部は、前記基準値を前記読出特性とし、前記基準値を変更して、１ビット以下のデータの誤りを訂正する、請求項１に記載の半導体装置。
【請求項３】
前記第１データ訂正部は、変更する前記基準値を保持する第１レジスタを有する、請求項２に記載の半導体装置。
【請求項４】
前記第１データ訂正部は、トランジスタで構成してある前記メモリセルのゲート電圧を前記読出特性とし、前記メモリセルのゲート電圧を変更して、１ビット以下のデータの誤りを訂正する、請求項１〜３のいずれか一項に記載の半導体装置。
【請求項５】
電圧を昇圧する昇圧回路を備え、
前記第１データ訂正部は、前記昇圧回路で前記ゲート電圧を昇圧して、前記ゲート電圧を変更する、請求項４に記載の半導体装置。
【請求項６】
前記第１データ訂正部は、変更する前記ゲート電圧の設定値を保持する第２レジスタを有する、請求項４または５に記載の半導体装置。
【請求項７】
前記データ誤検出部および前記第２データ訂正部は、ＥＣＣ回路である、請求項１〜６のいずれか一項に記載の半導体装置。
【請求項８】
誤りを訂正したデータを、他の前記読出したデータとともに書込み復元するための冗長領域を前記メモリアレイに有する請求項１〜７のいずれか一項に記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを記憶する半導体装置であって、特に、記憶したデータの誤りを訂正することが可能な半導体装置に関する。
【背景技術】
【０００２】
近年、マイコン（microcomputer）に、フラッシュメモリを内蔵したフラッシュ・マイコンが開発されている。フラッシュ・マイコンは、フラッシュメモリに書込んだプログラムを電気的に消去して、新らしいプログラムを書込むことができるため、製品出荷後にプログラムを変更することができる。
【０００３】
しかし、フラッシュメモリは、書込み回数がある一定回数以上になると、記憶しているデータを読出すときに誤りが発生しやすくなる。そのため、フラッシュメモリは、誤り検出や誤り訂正の機能を有する必要がある。
【０００４】
たとえば、マイコンに内蔵してあるフラッシュメモリには、誤り検出および誤り訂正の機能を実現するためにＥＣＣ回路を搭載してある。このＥＣＣ回路には、誤りを訂正する速度やチップに実装する面積に優れたハミング符号を用いる場合が多い。ＥＣＣ回路は、１ビットのデータの誤りを検出し、訂正することが可能で、さらに、機能を拡張することによって２ビットのデータの誤りを検出することが可能である。ＥＣＣ回路を用いた半導体装置の構成は、特許文献１〜４に開示してある。
【０００５】
特に、特許文献１に開示してある半導体装置では、ＥＣＣ回路を用い、データ領域を二つに分割し、それぞれのデータ領域に誤り訂正符号を設定することで、各々のデータ領域において１ビットのデータを訂正することができる。また、特許文献２に開示してある半導体装置では、記憶領域からデータを読み込んだ際、代替領域を検索してビットエラー情報があると判断する場合にビットエラー情報に基づきデータを修正する。
【０００６】
さらに、特許文献３に開示してある半導体装置では、１ビットの誤りが発生しているデータに対して、読出しの比較電圧を微調整して再度読出しを行なうことで誤り訂正を行なっている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００１−２０２７９３号公報
【特許文献２】特開２０１０−１４０２６１号公報
【特許文献３】特開２００１−３３２０９６号公報
【特許文献４】特許第４２３６４８５号
【発明の概要】
【発明が解決しようとする課題】
【０００８】
フラッシュメモリに記憶してあるデータに、誤りが発生する原因として、経時変化などによるメモリセルの閾値電圧の変化がある。閾値電圧の変化により発生するデータの誤りを訂正するには、ＥＣＣ回路によるデータの訂正を行なう以外に、何らかの内部処理を行なう必要があった。この内部処理に要する時間は、データを読出す時間に比べて長いので、ＥＣＣ回路でデータの誤りを訂正するたびに内部処理を行なうと、フラッシュメモリの処理量が多くなり高速に動作することができないという問題があった。なお、メモリセルの閾値電圧が変化する以外にもノイズによるデータの誤りも考えられ、内部処理とは別に再読出しの処理が必要となり、フラッシュメモリの処理量がさらに多くなる。
【０００９】
また、メモリセルの閾値電圧が変化した状態のまま、データの読出しを続けると、誤りが発生しているビット以外のビットでも誤りが発生し、２ビットのデータの誤りとなる。ＥＣＣ回路は、２ビットのデータの誤りを検出することはできるが、２ビットのデータの誤りを訂正することができない。そのため、フラッシュメモリは、２ビットのデータの誤りが発生すると、複数回読出しの処理を行なう以外に対策がなく、読出しエラーとなる問題があった。
【００１０】
それゆえに、本発明は、上記問題点を解決するためになされたものであり、メモリセルに記憶してあるデータを読出し、または書込む動作を高速に行なうことが可能で、２ビットのデータの誤りを訂正することができる半導体装置を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記課題を解決するために、本発明は、記憶したデータの誤りを訂正することが可能な半導体装置であって、データを記憶するメモリセルを行列状に配置してあるメモリアレイと、メモリセルに記憶したデータを読出すデータ読出部と、データ読出部で読出したデータに付してある誤り訂正符号を用いて、２ビットまでのデータの誤りを検出することが可能なデータ誤検出部と、データ誤検出部が２ビットのデータの誤りを検出した場合に、データ読出部がメモリセルからデータを読出すときの読出特性を変更して、１ビット以下のデータの誤りに訂正する第１データ訂正部と、１データ訂正部での訂正により、誤りが１ビットとなったデータを、誤り訂正符号を用いて訂正する第２データ訂正部とを備える。
【発明の効果】
【００１２】
本発明に係る半導体装置によれば、データ誤検出部が２ビットのデータの誤りを検出した場合に、データ読出部がメモリセルからデータを読出すときの読出特性を変更して、１ビット以下のデータの誤りに訂正し、誤りが１ビットとなったデータを、誤り訂正符号を用いて訂正するので、２ビットのデータの誤りを訂正することができる。また、本発明に係る半導体装置によれば、データ誤検出部が２ビットのデータの誤りを検出した場合のみ、データ読出部がメモリセルからデータを読出すときの読出特性を変更するので、フラッシュメモリの処理量を減らして高速に動作すことが可能である。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施の形態に係る半導体装置の構成を示す概略図である。
【図２】本発明の実施の形態に係るメモリアレイの一部の回路構成を示した回路図である。
【図３】本発明の実施の形態に係る半導体装置１のデータの誤り訂正の動作を示すフローチャートである。
【図４】メモリセルのゲート電圧Ｖｍｇを変更して、データの誤りを訂正する処理を説明するため概念図である。
【図５】センスアンプの基準値ｔｒｉｐを変更して、データの誤りを訂正する処理を説明するため概念図である。
【図６】誤りを訂正したデータを書込む復元書込み処理を説明するため概念図である。
【図７】誤りを訂正したデータを冗長領域に書込む復元書込み処理を説明するため概念図である。
【発明を実施するための形態】
【００１４】
以下、本発明に係る実施の形態について図面を参照して説明する。
（実施の形態）
図１は、本発明の実施の形態に係る半導体装置の構成を示す概略図である。図１に示す半導体装置１は、たとえば、フラッシュ・マイコンなどである。半導体装置１は、フラッシュメモリモジュール１０、フラッシュメモリモジュール１０の動作を制御する制御回路２０を含んでいる。
【００１５】
フラッシュメモリモジュール１０は、フラッシュメモリ３０、ＥＣＣ（Error  Checking  and  Correcting）回路４０を含んでいる。フラッシュメモリ３０は、メモリアレイ３１、データ読出部３２、データ訂正部３３、昇圧回路３４を含んでいる。
【００１６】
メモリアレイ３１は、データを記憶するメモリセルを行列状に配置してある。図２は、本発明の実施の形態に係るメモリアレイ３１の一部の回路構成を示した回路図である。図２に示すメモリアレイ３１には、行列状にメモリセル３１０を配置してある。メモリセル３１０は、トランジスタで構成され、信号線ＷＬや信号線ＢＬなどに選択信号を供給することで、データを読出したり、書込んだりすることができる。
【００１７】
図１に戻って、データ読出部３２は、メモリセル３１０に記憶したデータを読出す。データ読出部３２は、センスアンプ（ＳＡ）３２０を含んでいる。センスアンプ３２０は、メモリセル３１０に流れる電流値（トランジスタのドレイン−ソース間に流れる電流値Ｉｄｓ）と基準値ｔｒｉｐとの比較に基づいて、読出すデータが“０”か“１”かを判定する。なお、センスアンプ３２０の基準値ｔｒｉｐは、センスアンプ３２０の感度を表し、ｔｒｉｐポイントともいう。
【００１８】
データ訂正部３３は、データ読出部３２がメモリセル３１０からデータを読出すときの読出特性（たとえば、センスアンプ３２０の基準値ｔｒｉｐや、後述するメモリセル３１０のゲート電圧）を変更して、データの誤りに訂正（第１データ訂正部）する。データ訂正部３３は、レジスタ３３０を含んでいる。
【００１９】
レジスタ３３０は、データ訂正部３３が変更するセンスアンプ３２０の基準値ｔｒｉｐや、メモリセル３１０のゲート電圧の設定値を保持している。なお、レジスタ３３０で保持している設定値は、制御回路２０などから書換えることができる。また、レジスタ３３０は、センスアンプ３２０の基準値ｔｒｉｐを保持する第１レジスタと、メモリセル３１０のゲート電圧の設定値を保持する第２レジスタとに分けてもよい。さらに、レジスタ３３０は、データ訂正部３３内に含まれる場合に限定されるものではなく、他のフラッシュメモリモジュール１０内に含まれてもよい。データ訂正部３３は、レジスタ３３０に予めセンスアンプ３２０の基準値ｔｒｉｐや、メモリセル３１０のゲート電圧の設定値を複数保持させておくことで、半導体装置１の構成に合わせて、さまざまなセンスアンプ３２０の基準値ｔｒｉｐや、メモリセル３１０のゲート電圧に変更することができる。
【００２０】
昇圧回路３４は、メモリセル３１０のゲート電圧を昇圧する回路である。昇圧回路３４は、他の電圧を昇圧する回路と共用であっても、メモリセル３１０のゲート電圧を昇圧する専用の回路であってもよい。なお、メモリセル３１０のゲート電圧に、電源電圧ＶＤＤなどを用いる場合、メモリセル３１０のゲート電圧を昇圧するための昇圧回路３４は、不要である。
【００２１】
ＥＣＣ回路４０は、データ読出部３２で読出したデータに付してある誤り訂正符号を用いて、２ビットまでのデータの誤りを検出することが可能（データ誤検出部）で、誤り訂正符号を用いて１ビットのデータの誤りに訂正（第２データ訂正部）することができる。ＥＣＣ回路４０は、たとえばハミング符号を用いてデータの誤りを検出し、訂正を行なう。ハミング符号を用いる一般的なＥＣＣ回路は、１ビットのデータ誤りを検出し、訂正を行なうが、ＥＣＣ回路４０は、誤り訂正符号のビットを追加する拡張機能を利用することで、２ビットまでのデータの誤りを検出することが可能である。
【００２２】
制御回路２０は、たとえばＣＰＵなどであり、フラッシュメモリモジュール１０の動作を制御する。なお、制御回路２０は、フラッシュメモリモジュール１０の内部に設けた専用回路であっても、フラッシュメモリモジュール１０の外部に設けた共用回路であってもよい。
【００２３】
次に、本発明の実施の形態に係る半導体装置１のデータの誤り訂正の動作を説明する。図３は、本発明の実施の形態に係る半導体装置１のデータの誤り訂正の動作を示すフローチャートである。まず、ＥＣＣ回路４０は、データ読出部３２が読出したデータに２ビットの誤りを含むか否かを検出する（ステップＳ３０１）。ＥＣＣ回路４０が、読出したデータに２ビットの誤りを含むことを検出した場合（ステップＳ３０１：ＹＥＳ）、ＥＣＣ回路４０は、制御回路２０に対して処理の割込み要求Ａを出力する（ステップＳ３０２）。ＥＣＣ回路４０が、読出したデータに２ビットの誤りを含むことを検出できない場合（ステップＳ３０１：ＮＯ）、ＥＣＣ回路４０は、データ読出部３２が読出したデータに１ビットの誤りを含むか否かを検出する（ステップＳ３０３）。
【００２４】
ＥＣＣ回路４０が、読出したデータに１ビットの誤りを含むことを検出した場合（ステップＳ３０３：ＹＥＳ）、ＥＣＣ回路４０は、データ読出部３２で読出したデータに付してある誤り訂正符号を用いて１ビットのデータの誤りを訂正する（ステップＳ３０４）。ＥＣＣ回路４０が、読出したデータに１ビットの誤りを含むことを検出できない場合（ステップＳ３０３：ＮＯ）、半導体装置１は、データの誤り訂正の動作を終了する。
【００２５】
制御回路２０は、ステップＳ３０２で割込み要求Ａが入力された場合、フラッシュメモリモジュール１０に対して訂正読出し要求Ｂを出力する（ステップＳ３０５）。訂正読出し要求Ｂは、制御回路２０からフラッシュメモリモジュール１０に対して出力する信号やコマンド、またはフラッシュメモリモジュール１０に含まれるレジスタへの書込みによって行なわれる。
【００２６】
フラッシュメモリモジュール１０は、訂正読出し要求Ｂが入力された場合、データ読出部３２が読出した２ビットの誤りを訂正する訂正読出し処理を行なう（ステップＳ３０６）。具体的に、データ訂正部３３は、データ読出部３２がメモリセル３１０からデータを読出すときの読出特性（アナログ特性）を変更して、１ビット以下のデータの誤りに訂正する。データ訂正部３３の訂正処理により、１ビットのデータの誤りに訂正した場合、ＥＣＣ回路４０は、データ読出部３２で読出したデータに付してある誤り訂正符号を用いて残りの１ビットのデータの誤りを訂正する。なお、データ訂正部３３の訂正処理により、２ビットすべてのデータの誤りに訂正した場合、ＥＣＣ回路４０は、訂正の処理を行なわない。
【００２７】
さらに、データ訂正部３３の処理について説明する。まず、読出特性であるメモリセル３１０のゲート電圧を変更する場合について説明する。データ読出部３２は、メモリセル３１０のゲート電圧Ｖｍｇがメモリセル３１０の閾値電圧Ｖｔｈより小さい場合（Ｖｔｈ＞Ｖｍｇ）、“０”のデータを読出し、メモリセル３１０のゲート電圧Ｖｍｇがメモリセル３１０の閾値電圧Ｖｔｈより大きい場合（Ｖｔｈ＜Ｖｍｇ）、“１”のデータを読出す。
【００２８】
図４は、メモリセル３１０のゲート電圧Ｖｍｇを変更して、データの誤りを訂正する処理を説明するため概念図である。図４に示す横軸はメモリセル３１０の閾値電圧Ｖｔｈ、縦軸はビット数である。また、図４の右側（閾値電圧Ｖｔｈの大きい側）に“０”のデータの分布を、左側（閾値電圧Ｖｔｈの小さい側）に“１”のデータの分布をそれぞれ示してある。メモリセル３１０のゲート電圧Ｖｍｇを“Ｖｍｇ０”とした場合、“Ｖｍｇ０”と“０”のデータの分布または“１”のデータの分布との間に十分なマージン領域を設けてあるので、データ読出部３２が誤ってデータを読み出すことはない。
【００２９】
しかし、“０”のデータの分布に含まれるビットのうち、閾値電圧Ｖｔｈのシフトにより２ビットのデータに誤りが発生した場合、図４に示すように、“Ｖｍｇ０”よりも小さい閾値電圧Ｖｔｈを持つデータｅ１，ｅ２となる。そのため、メモリセル３１０のゲート電圧Ｖｍｇを“Ｖｍｇ０”とした場合、データｅ１，ｅ２は、ともに誤って“１”のデータとして読出される。
【００３０】
そこで、データ訂正部３３は、メモリセル３１０のゲート電圧Ｖｍｇを“Ｖｍｇ−”の方向、または“Ｖｍｇ＋”の方向に変更して、データｅ１，ｅ２のうち少なくとも一方のデータが“０”のデータとして読出されるように訂正する。図４に示す例では、メモリセル３１０のゲート電圧Ｖｍｇを“Ｖｍｇ−”に変更することで、データｅ２が“０”のデータとして読出されるように訂正することができる。
【００３１】
次に、読出特性であるセンスアンプ３２０の基準値ｔｒｉｐを変更する場合について説明する。データ読出部３２は、メモリセル３１０に流れる電流値（メモリセル３１０に含まれるトランジスタのドレイン−ソース間に流れる電流値）Ｉｄｓと基準値ｔｒｉｐとの比較に基づいて、読出すデータが“０”か“１”かを判定するセンスアンプ３２０を有している。センスアンプ３２０は、メモリセル３１０に流れる電流値Ｉｄｓが基準値ｔｒｉｐより小さい場合（Ｉｄｓ＜ｔｒｉｐ）、“０”のデータと判定し、メモリセル３１０に流れる電流値Ｉｄｓが基準値ｔｒｉｐより大きい場合（Ｉｄｓ＞ｔｒｉｐ）、“１”のデータと判定する。
【００３２】
図５は、センスアンプ３２０の基準値ｔｒｉｐを変更して、データの誤りを訂正する処理を説明するため概念図である。図５に示す横軸は、メモリセル３１０のゲート電圧Ｖｍｇ、縦軸はメモリセル３１０に流れる電流値Ｉｄｓである。また、図５の右側（ゲート電圧Ｖｍｇの大きい側）に“０”のデータの分布を、左側（ゲート電圧Ｖｍｇの小さい側）に“１”のデータの分布をそれぞれ示してある。メモリセル３１０のゲート電圧Ｖｍｇを“Ｖｍｇ０”とし、センスアンプ３２０の基準値ｔｒｉｐを“ｔｒｉｐ０”とした場合、“Ｖｍｇ０”と“ｔｒｉｐ０”との交点と“０”のデータが分布する境界線または“１”のデータが分布する境界線との間に十分なマージン領域を設けてあるので、センスアンプ３２０が誤ってデータを判定することはない。
【００３３】
しかし、“０”のデータの分布に含まれるビットのうち、２ビットのデータに誤りが発生した場合、図５に示すように、“Ｖｍｇ０”と“ｔｒｉｐ０”との交点よりも大きい電流値Ｉｄｓを持つデータｅ１，ｅ２となる。そのため、メモリセル３１０のゲート電圧Ｖｍｇを“Ｖｍｇ０”とし、センスアンプ３２０の基準値ｔｒｉｐを“ｔｒｉｐ０”とした場合、データｅ１，ｅ２は、ともに誤って“１”のデータとしてセンスアンプ３２０に判定される。
【００３４】
そこで、データ訂正部３３は、センスアンプ３２０の基準値ｔｒｉｐを“ｔｒｉｐ−”の方向、または“ｔｒｉｐ＋”の方向に変更して、データｅ１，ｅ２のうち少なくとも一方のデータが“０”のデータとしてセンスアンプ３２０に判定されるように訂正する。図５に示す例では、センスアンプ３２０の基準値ｔｒｉｐを“ｔｒｉｐ＋”に変更することで、データｅ２が“０”のデータとして読出されるように訂正することができる。
【００３５】
データ訂正部３３は、レジスタ３３０からセンスアンプ３２０の基準値ｔｒｉｐや、メモリセル３１０のゲート電圧Ｖｍｇの設定値を読出し、読出した設定値に基づいて、センスアンプ３２０の基準値ｔｒｉｐや、メモリセル３１０のゲート電圧Ｖｍｇを変更する。
【００３６】
なお、変更する読出特性は、センスアンプ３２０の基準値ｔｒｉｐや、メモリセル３１０のゲート電圧Ｖｍｇに限定されるものではなく、１ビット以下のデータの誤りに訂正することが可能な読出特性であれば、他の読出特性であってもよい。たとえば、読出特性は、メモリセル３１０に記憶したデータを読出す方式などがある。また、データ訂正部３３は、たとえば、センスアンプ３２０の基準値ｔｒｉｐのみを変更する場合に限定されるものではなく、センスアンプ３２０の基準値ｔｒｉｐとメモリセル３１０のゲート電圧Ｖｍｇとの組合わせのように、複数の読出特性を組合わせて変更してもよい。
【００３７】
図３に戻って、フラッシュメモリモジュール１０は、ステップＳ３０６での訂正読出し処理、またはステップＳ３０３でのＥＣＣ回路４０による訂正処理の処理が完了したか否かを判断する（ステップＳ３０７）。フラッシュメモリモジュール１０は、ステップＳ３０６またはステップＳ３０３での処理が完了したと判断した場合（ステップＳ３０７：ＹＥＳ）、フラッシュメモリモジュール１０は、制御回路２０に対して訂正読出し完了Ｃ１の通知を出力する（ステップＳ３０８）。なお、フラッシュメモリモジュール１０は、訂正読出し完了Ｃ１の通知を出力する際に、訂正したデータもあわせて制御回路２０に出力する。
【００３８】
フラッシュメモリモジュール１０は、ステップＳ３０６またはステップＳ３０３での処理が完了していないと判断した場合（ステップＳ３０７：ＮＯ）、フラッシュメモリモジュール１０は、制御回路２０に対して訂正読出しエラーＣ２の通知を出力する（ステップＳ３０９）。フラッシュメモリモジュール１０が、ステップＳ３０６またはステップＳ３０３での処理が完了していないと判断する場合、読出したデータに２ビットのデータの誤りがまだ存在し、データ訂正部３３やＥＣＣ回路４０では訂正することが不可能であるため、フラッシュメモリモジュール１０は、制御回路２０に対して訂正読出しエラーＣ２の通知を出力する。
【００３９】
次に、制御回路２０は、フラッシュメモリモジュール１０に対して復元書込み要求Ｄを出力する（ステップＳ３１０）。ステップＳ３０６での訂正読出し処理が完了した場合であっても、メモリセル３１０に記憶したデータは、誤りを含むデータである可能性が高い。そのため、制御回路２０は、必要に応じてメモリセル３１０に誤りを訂正したデータを書込む復元書込みをフラッシュメモリモジュール１０に対して要求する。
【００４０】
次に、フラッシュメモリモジュール１０は、復元書込み要求Ｄが入力された場合、誤りを訂正したデータをメモリセル３１０に書込む復元書込み処理を行なう（ステップＳ３１１）。具体的に、メモリアレイ３１は、“０”のデータが“１”のデータと読出される誤りの場合、誤りのデータをビット単位で“０”のデータとして書込みデータの復元を行なう。
【００４１】
図６は、誤りを訂正したデータを書込む復元書込み処理を説明するため概念図である。図６に示す構成は、図４に示した概念図と同じ構成であるため、詳細な説明を繰り返さない。図６では、閾値電圧Ｖｔｈのシフトにより“０”のデータが“１”のデータと読出される誤りのデータｅ１，ｅ２を、“０”のデータの分布に含まれるデータｅ１，ｅ２としてメモリセル３１０に書込み復元を行なっている。
【００４２】
メモリアレイ３１は、“１”のデータが“０”のデータと読出される誤りの場合、フラッシュメモリの書込み特性から、誤りのデータをビット単位で“１”のデータとして書込みデータの復元を行なうことができない。つまり、フラッシュメモリは、すべてのビットのデータを“１”にした後に、必要なビットに“０”のデータを書込むことで、データを書込む書込み特性を有している。そのため、誤りを訂正したデータは、他の読出したデータとともに、メモリアレイ３１に設けた冗長領域に書込み復元を行なう必要がある。
【００４３】
図７は、誤りを訂正したデータを冗長領域に書込む復元書込み処理を説明するため概念図である。図７では、誤りデータを有するメモリセル領域７１のデータをデータ読出部３２で読出し、データ訂正部３３およびＥＣＣ回路４０で誤りデータを訂正した後、誤りを訂正したデータと、他の読出したデータとをメモリアレイ３１に設けた冗長領域７２に書込んでいる。さらに、冗長領域７２にデータを書込んだ後、データ読出部３２は、読出し先を誤りデータを有するメモリセル領域７１から冗長領域７２に置換し、以降の処理では、冗長領域７２からデータを読出す。
【００４４】
なお、メモリアレイ３１に設けた冗長領域７２は、誤りを訂正したデータと、他の読出したデータとを書込む専用領域であっても、メモリテストで不良となったメモリセルと置換えることが可能な共用領域であってもよい。
【００４５】
図３に戻って、フラッシュメモリモジュール１０は、ステップＳ３１１での復元書込み処理が完了したか否かを判断する（ステップＳ３１２）。フラッシュメモリモジュール１０は、復元書込み処理が完了したと判断した場合（ステップＳ３１２：ＹＥＳ）、フラッシュメモリモジュール１０は、制御回路２０に対して復元書込み完了Ｅの通知を出力する（ステップＳ３１３）。フラッシュメモリモジュール１０は、復元書込み処理が完了していないと判断した場合（ステップＳ３１２：ＮＯ）、フラッシュメモリモジュール１０は、ステップＳ３１２の処理を繰返す。なお、半導体装置１は、復元書込み完了Ｅを制御回路２０に入力することで、データの誤り訂正の動作を終了する。
【００４６】
以上のように、本発明の実施の形態に係る半導体装置１は、ＥＣＣ回路（データ誤検出部）４０が２ビットのデータの誤りを検出した場合に、データ読出部３２がメモリセル３１０からデータを読出すときの読出特性を変更して、１ビット以下のデータの誤りに訂正し、誤りが１ビットとなったデータを、誤り訂正符号を用いて訂正するので、２ビットのデータの誤りを訂正することができる。また、本発明の実施の形態に係る半導体装置１は、ＥＣＣ回路（データ誤検出部）４０が２ビットのデータの誤りを検出した場合のみ、データ読出部３２がメモリセル３１０からデータを読出すときの読出特性を変更するので、フラッシュメモリの処理量を減らして高速に動作すことが可能となる。
【００４７】
さらに、本発明の実施の形態に係る半導体装置１は、データ訂正部３３が、センスアンプ３２０の基準値ｔｒｉｐを変更して、１ビット以下のデータの誤りを訂正するので、２ビットのデータの誤りを訂正することができる。
【００４８】
また、本発明の実施の形態に係る半導体装置１は、メモリセル３１０のゲート電圧Ｖｍｇを変更して、１ビット以下のデータの誤りを訂正するので、２ビットのデータの誤りを訂正することができる。
【００４９】
さらに、本発明の実施の形態に係る半導体装置１は、昇圧回路３４でゲート電圧Ｖｍｇを昇圧して、ゲート電圧Ｖｍｇを変更するので、電源電圧ＶＤＤなどの所定の電圧以外の電圧に変更することができる。
【００５０】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【００５１】
１  半導体装置、１０  フラッシュメモリモジュール、２０  制御回路、３０  フラッシュメモリ、３１  メモリアレイ、３２  データ読出部、３３  データ訂正部、３４  昇圧回路、４０  ＥＣＣ回路、７１  メモリセル領域、７２  冗長領域、３１０  メモリセル、３２０  センスアンプ、３３０  レジスタ。
【図１】
2012230730.tif 000003
【図２】
2012230730.tif 000004
【図３】
2012230730.tif 000005
【図４】
2012230730.tif 000006
【図５】
2012230730.tif 000007
【図６】
2012230730.tif 000008
【図７】
2012230730.tif 000009