"記憶したデータの誤りを訂正することが可能な半導体装置であって、データを記憶するメモリセルを行列状に配置してあるメモリアレイと、前記メモリセルに記憶したデータを読出すデータ読出部と、前記データ読出部で読出したデータに付してある誤り訂正符号を用いて、2ビットまでのデータの誤りを検出することが可能なデータ誤検出部と、前記データ誤検出部が2ビットのデータの誤りを検出した場合に、前記データ読出部が前記メモリセルからデータを読出すときの読出特性を変更して、1ビット以下のデータの誤りに訂正する第1データ訂正部と、前記第1データ訂正部での訂正により、誤りが1ビットとなったデータを、前記誤り訂正符号を用いて訂正する第2データ訂正部とを備える半導体装置。前記データ読出部は、前記メモリセルに流れる電流値と基準値との比較に基づいて、読出すデータが0か1かを判定するセンスアンプを有し、前記第1データ訂正部は、前記基準値を前記読出特性とし、前記基準値を変更して、1ビット以下のデータの誤りを訂正する、請求項1に記載の半導体装置。前記第1データ訂正部は、変更する前記基準値を保持する第1レジスタを有する、請求項2に記載の半導体装置。前記第1データ訂正部は、トランジスタで構成してある前記メモリセルのゲート電圧を前記読出特性とし、前記メモリセルのゲート電圧を変更して、1ビット以下のデータの誤りを訂正する、請求項1~3のいずれか一項に記載の半導体装置。電圧を昇圧する昇圧回路を備え、前記第1データ訂正部は、前記昇圧回路で前記ゲート電圧を昇圧して、前記ゲート電圧を変更する、請求項4に記載の半導体装置。前記第1データ訂正部は、変更する前記ゲート電圧の設定値を保持する第2レジスタを有する、請求項4または5に記載の半導体装置。前記データ誤検出部および前記第2データ訂正部は、ECC回路である、請求項1~6のいずれか一項に記載の半導体装置。誤りを訂正したデータを、他の前記読出したデータとともに書込み復元するための冗長領域を前記メモリアレイに有する請求項1~7のいずれか一項に記載の半導体装置。フラッシュメモリに記憶してあるデータに、誤りが発生する原因として、経時変化などによるメモリセルの閾値電圧の変化がある。閾値電圧の変化により発生するデータの誤りを訂正するには、ECC回路によるデータの訂正を行なう以外に、何らかの内部処理を行なう必要があった。この内部処理に要する時間は、データを読出す時間に比べて長いので、ECC回路でデータの誤りを訂正するたびに内部処理を行なうと、フラッシュメモリの処理量が多くなり高速に動作することができないという問題があった。なお、メモリセルの閾値電圧が変化する以外にもノイズによるデータの誤りも考えられ、内部処理とは別に再読出しの処理が必要となり、フラッシュメモリの処理量がさらに多くなる。また、メモリセルの閾値電圧が変化した状態のまま、データの読出しを続けると、誤りが発生しているビット以外のビットでも誤りが発生し、2ビットのデータの誤りとなる。ECC回路は、2ビットのデータの誤りを検出することはできるが、2ビットのデータの誤りを訂正することができない。そのため、フラッシュメモリは、2ビットのデータの誤りが発生すると、複数回読出しの処理を行なう以外に対策がなく、読出しエラーとなる問題があった。それゆえに、本発明は、上記問題点を解決するためになされたものであり、メモリセルに記憶してあるデータを読出し、または書込む動作を高速に行なうことが可能で、2ビットのデータの誤りを訂正することができる半導体装置を提供することを目的とする。上記課題を解決するために、本発明は、記憶したデータの誤りを訂正することが可能な半導体装置であって、データを記憶するメモリセルを行列状に配置してあるメモリアレイと、メモリセルに記憶したデータを読出すデータ読出部と、データ読出部で読出したデータに付してある誤り訂正符号を用いて、2ビットまでのデータの誤りを検出することが可能なデータ誤検出部と、データ誤検出部が2ビットのデータの誤りを検出した場合に、データ読出部がメモリセルからデータを読出すときの読出特性を変更して、1ビット以下のデータの誤りに訂正する第1データ訂正部と、1データ訂正部での訂正により、誤りが1ビットとなったデータを、誤り訂正符号を用いて訂正する第2データ訂正部とを備える。本発明に係る半導体装置によれば、データ誤検出部が2ビットのデータの誤りを検出した場合に、データ読出部がメモリセルからデータを読出すときの読出特性を変更して、1ビット以下のデータの誤りに訂正し、誤りが1ビットとなったデータを、誤り訂正符号を用いて訂正するので、2ビットのデータの誤りを訂正することができる。また、本発明に係る半導体装置によれば、データ誤検出部が2ビットのデータの誤りを検出した場合のみ、データ読出部がメモリセルからデータを読出すときの読出特性を変更するので、フラッシュメモリの処理量を減らして高速に動作すことが可能である。以下、本発明に係る実施の形態について図面を参照して説明する。実施の形態図1は、本発明の実施の形態に係る半導体装置の構成を示す概略図である。図1に示す半導体装置1は、たとえば、フラッシュマイコンなどである。半導体装置1は、フラッシュメモリモジュール10、フラッシュメモリモジュール10の動作を制御する制御回路20を含んでいる。フラッシュメモリモジュール10は、フラッシュメモリ30、ECCErrorCheckingandCorrecting回路40を含んでいる。フラッシュメモリ30は、メモリアレイ31、データ読出部32、データ訂正部33、昇圧回路34を含んでいる。メモリアレイ31は、データを記憶するメモリセルを行列状に配置してある。図2は、本発明の実施の形態に係るメモリアレイ31の一部の回路構成を示した回路図である。図2に示すメモリアレイ31には、行列状にメモリセル310を配置してある。メモリセル310は、トランジスタで構成され、信号線WLや信号線BLなどに選択信号を供給することで、データを読出したり、書込んだりすることができる。図1に戻って、データ読出部32は、メモリセル310に記憶したデータを読出す。データ読出部32は、センスアンプSA320を含んでいる。センスアンプ320は、メモリセル310に流れる電流値トランジスタのドレイン-ソース間に流れる電流値Idsと基準値tripとの比較に基づいて、読出すデータが0か1かを判定する。なお、センスアンプ320の基準値tripは、センスアンプ320の感度を表し、tripポイントともいう。データ訂正部33は、データ読出部32がメモリセル310からデータを読出すときの読出特性たとえば、センスアンプ320の基準値tripや、後述するメモリセル310のゲート電圧を変更して、データの誤りに訂正第1データ訂正部する。データ訂正部33は、レジスタ330を含んでいる。レジスタ330は、データ訂正部33が変更するセンスアンプ320の基準値tripや、メモリセル310のゲート電圧の設定値を保持している。なお、レジスタ330で保持している設定値は、制御回路20などから書換えることができる。また、レジスタ330は、センスアンプ320の基準値tripを保持する第1レジスタと、メモリセル310のゲート電圧の設定値を保持する第2レジスタとに分けてもよい。さらに、レジスタ330は、データ訂正部33内に含まれる場合に限定されるものではなく、他のフラッシュメモリモジュール10内に含まれてもよい。データ訂正部33は、レジスタ330に予めセンスアンプ320の基準値tripや、メモリセル310のゲート電圧の設定値を複数保持させておくことで、半導体装置1の構成に合わせて、さまざまなセンスアンプ320の基準値tripや、メモリセル310のゲート電圧に変更することができる。昇圧回路34は、メモリセル310のゲート電圧を昇圧する回路である。昇圧回路34は、他の電圧を昇圧する回路と共用であっても、メモリセル310のゲート電圧を昇圧する専用の回路であってもよい。なお、メモリセル310のゲート電圧に、電源電圧VDDなどを用いる場合、メモリセル310のゲート電圧を昇圧するための昇圧回路34は、不要である。ECC回路40は、データ読出部32で読出したデータに付してある誤り訂正符号を用いて、2ビットまでのデータの誤りを検出することが可能データ誤検出部で、誤り訂正符号を用いて1ビットのデータの誤りに訂正第2データ訂正部することができる。ECC回路40は、たとえばハミング符号を用いてデータの誤りを検出し、訂正を行なう。ハミング符号を用いる一般的なECC回路は、1ビットのデータ誤りを検出し、訂正を行なうが、ECC回路40は、誤り訂正符号のビットを追加する拡張機能を利用することで、2ビットまでのデータの誤りを検出することが可能である。制御回路20は、たとえばCPUなどであり、フラッシュメモリモジュール10の動作を制御する。なお、制御回路20は、フラッシュメモリモジュール10の内部に設けた専用回路であっても、フラッシュメモリモジュール10の外部に設けた共用回路であってもよい。次に、本発明の実施の形態に係る半導体装置1のデータの誤り訂正の動作を説明する。図3は、本発明の実施の形態に係る半導体装置1のデータの誤り訂正の動作を示すフローチャートである。まず、ECC回路40は、データ読出部32が読出したデータに2ビットの誤りを含むか否かを検出するステップS301。ECC回路40が、読出したデータに2ビットの誤りを含むことを検出した場合ステップS301:YES、ECC回路40は、制御回路20に対して処理の割込み要求Aを出力するステップS302。ECC回路40が、読出したデータに2ビットの誤りを含むことを検出できない場合ステップS301:NO、ECC回路40は、データ読出部32が読出したデータに1ビットの誤りを含むか否かを検出するステップS303。ECC回路40が、読出したデータに1ビットの誤りを含むことを検出した場合ステップS303:YES、ECC回路40は、データ読出部32で読出したデータに付してある誤り訂正符号を用いて1ビットのデータの誤りを訂正するステップS304。ECC回路40が、読出したデータに1ビットの誤りを含むことを検出できない場合ステップS303:NO、半導体装置1は、データの誤り訂正の動作を終了する。制御回路20は、ステップS302で割込み要求Aが入力された場合、フラッシュメモリモジュール10に対して訂正読出し要求Bを出力するステップS305。訂正読出し要求Bは、制御回路20からフラッシュメモリモジュール10に対して出力する信号やコマンド、またはフラッシュメモリモジュール10に含まれるレジスタへの書込みによって行なわれる。フラッシュメモリモジュール10は、訂正読出し要求Bが入力された場合、データ読出部32が読出した2ビットの誤りを訂正する訂正読出し処理を行なうステップS306。具体的に、データ訂正部33は、データ読出部32がメモリセル310からデータを読出すときの読出特性アナログ特性を変更して、1ビット以下のデータの誤りに訂正する。データ訂正部33の訂正処理により、1ビットのデータの誤りに訂正した場合、ECC回路40は、データ読出部32で読出したデータに付してある誤り訂正符号を用いて残りの1ビットのデータの誤りを訂正する。なお、データ訂正部33の訂正処理により、2ビットすべてのデータの誤りに訂正した場合、ECC回路40は、訂正の処理を行なわない。さらに、データ訂正部33の処理について説明する。まず、読出特性であるメモリセル310のゲート電圧を変更する場合について説明する。データ読出部32は、メモリセル310のゲート電圧Vmgがメモリセル310の閾値電圧Vthより小さい場合Vth>Vmg、0のデータを読出し、メモリセル310のゲート電圧Vmgがメモリセル310の閾値電圧Vthより大きい場合Vth<Vmg、1のデータを読出す。図4は、メモリセル310のゲート電圧Vmgを変更して、データの誤りを訂正する処理を説明するため概念図である。図4に示す横軸はメモリセル310の閾値電圧Vth、縦軸はビット数である。また、図4の右側閾値電圧Vthの大きい側に0のデータの分布を、左側閾値電圧Vthの小さい側に1のデータの分布をそれぞれ示してある。メモリセル310のゲート電圧VmgをVmg0とした場合、Vmg0と0のデータの分布または1のデータの分布との間に十分なマージン領域を設けてあるので、データ読出部32が誤ってデータを読み出すことはない。しかし、0のデータの分布に含まれるビットのうち、閾値電圧Vthのシフトにより2ビットのデータに誤りが発生した場合、図4に示すように、Vmg0よりも小さい閾値電圧Vthを持つデータe1,e2となる。そのため、メモリセル310のゲート電圧VmgをVmg0とした場合、データe1,e2は、ともに誤って1のデータとして読出される。そこで、データ訂正部33は、メモリセル310のゲート電圧VmgをVmg-の方向、またはVmgの方向に変更して、データe1,e2のうち少なくとも一方のデータが0のデータとして読出されるように訂正する。図4に示す例では、メモリセル310のゲート電圧VmgをVmg-に変更することで、データe2が0のデータとして読出されるように訂正することができる。次に、読出特性であるセンスアンプ320の基準値tripを変更する場合について説明する。データ読出部32は、メモリセル310に流れる電流値メモリセル310に含まれるトランジスタのドレイン-ソース間に流れる電流値Idsと基準値tripとの比較に基づいて、読出すデータが0か1かを判定するセンスアンプ320を有している。センスアンプ320は、メモリセル310に流れる電流値Idsが基準値tripより小さい場合Ids<trip、0のデータと判定し、メモリセル310に流れる電流値Idsが基準値tripより大きい場合Ids>trip、1のデータと判定する。図5は、センスアンプ320の基準値tripを変更して、データの誤りを訂正する処理を説明するため概念図である。図5に示す横軸は、メモリセル310のゲート電圧Vmg、縦軸はメモリセル310に流れる電流値Idsである。また、図5の右側ゲート電圧Vmgの大きい側に0のデータの分布を、左側ゲート電圧Vmgの小さい側に1のデータの分布をそれぞれ示してある。メモリセル310のゲート電圧VmgをVmg0とし、センスアンプ320の基準値tripをtrip0とした場合、Vmg0とtrip0との交点と0のデータが分布する境界線または1のデータが分布する境界線との間に十分なマージン領域を設けてあるので、センスアンプ320が誤ってデータを判定することはない。しかし、0のデータの分布に含まれるビットのうち、2ビットのデータに誤りが発生した場合、図5に示すように、Vmg0とtrip0との交点よりも大きい電流値Idsを持つデータe1,e2となる。そのため、メモリセル310のゲート電圧VmgをVmg0とし、センスアンプ320の基準値tripをtrip0とした場合、データe1,e2は、ともに誤って1のデータとしてセンスアンプ320に判定される。そこで、データ訂正部33は、センスアンプ320の基準値tripをtrip-の方向、またはtripの方向に変更して、データe1,e2のうち少なくとも一方のデータが0のデータとしてセンスアンプ320に判定されるように訂正する。図5に示す例では、センスアンプ320の基準値tripをtripに変更することで、データe2が0のデータとして読出されるように訂正することができる。データ訂正部33は、レジスタ330からセンスアンプ320の基準値tripや、メモリセル310のゲート電圧Vmgの設定値を読出し、読出した設定値に基づいて、センスアンプ320の基準値tripや、メモリセル310のゲート電圧Vmgを変更する。なお、変更する読出特性は、センスアンプ320の基準値tripや、メモリセル310のゲート電圧Vmgに限定されるものではなく、1ビット以下のデータの誤りに訂正することが可能な読出特性であれば、他の読出特性であってもよい。たとえば、読出特性は、メモリセル310に記憶したデータを読出す方式などがある。また、データ訂正部33は、たとえば、センスアンプ320の基準値tripのみを変更する場合に限定されるものではなく、センスアンプ320の基準値tripとメモリセル310のゲート電圧Vmgとの組合わせのように、複数の読出特性を組合わせて変更してもよい。図3に戻って、フラッシュメモリモジュール10は、ステップS306での訂正読出し処理、またはステップS303でのECC回路40による訂正処理の処理が完了したか否かを判断するステップS307。フラッシュメモリモジュール10は、ステップS306またはステップS303での処理が完了したと判断した場合ステップS307:YES、フラッシュメモリモジュール10は、制御回路20に対して訂正読出し完了C1の通知を出力するステップS308。なお、フラッシュメモリモジュール10は、訂正読出し完了C1の通知を出力する際に、訂正したデータもあわせて制御回路20に出力する。フラッシュメモリモジュール10は、ステップS306またはステップS303での処理が完了していないと判断した場合ステップS307:NO、フラッシュメモリモジュール10は、制御回路20に対して訂正読出しエラーC2の通知を出力するステップS309。フラッシュメモリモジュール10が、ステップS306またはステップS303での処理が完了していないと判断する場合、読出したデータに2ビットのデータの誤りがまだ存在し、データ訂正部33やECC回路40では訂正することが不可能であるため、フラッシュメモリモジュール10は、制御回路20に対して訂正読出しエラーC2の通知を出力する。次に、制御回路20は、フラッシュメモリモジュール10に対して復元書込み要求Dを出力するステップS310。ステップS306での訂正読出し処理が完了した場合であっても、メモリセル310に記憶したデータは、誤りを含むデータである可能性が高い。そのため、制御回路20は、必要に応じてメモリセル310に誤りを訂正したデータを書込む復元書込みをフラッシュメモリモジュール10に対して要求する。次に、フラッシュメモリモジュール10は、復元書込み要求Dが入力された場合、誤りを訂正したデータをメモリセル310に書込む復元書込み処理を行なうステップS311。具体的に、メモリアレイ31は、0のデータが1のデータと読出される誤りの場合、誤りのデータをビット単位で0のデータとして書込みデータの復元を行なう。図6は、誤りを訂正したデータを書込む復元書込み処理を説明するため概念図である。図6に示す構成は、図4に示した概念図と同じ構成であるため、詳細な説明を繰り返さない。図6では、閾値電圧Vthのシフトにより0のデータが1のデータと読出される誤りのデータe1,e2を、0のデータの分布に含まれるデータe1,e2としてメモリセル310に書込み復元を行なっている。メモリアレイ31は、1のデータが0のデータと読出される誤りの場合、フラッシュメモリの書込み特性から、誤りのデータをビット単位で1のデータとして書込みデータの復元を行なうことができない。つまり、フラッシュメモリは、すべてのビットのデータを1にした後に、必要なビットに0のデータを書込むことで、データを書込む書込み特性を有している。そのため、誤りを訂正したデータは、他の読出したデータとともに、メモリアレイ31に設けた冗長領域に書込み復元を行なう必要がある。図7は、誤りを訂正したデータを冗長領域に書込む復元書込み処理を説明するため概念図である。図7では、誤りデータを有するメモリセル領域71のデータをデータ読出部32で読出し、データ訂正部33およびECC回路40で誤りデータを訂正した後、誤りを訂正したデータと、他の読出したデータとをメモリアレイ31に設けた冗長領域72に書込んでいる。さらに、冗長領域72にデータを書込んだ後、データ読出部32は、読出し先を誤りデータを有するメモリセル領域71から冗長領域72に置換し、以降の処理では、冗長領域72からデータを読出す。なお、メモリアレイ31に設けた冗長領域72は、誤りを訂正したデータと、他の読出したデータとを書込む専用領域であっても、メモリテストで不良となったメモリセルと置換えることが可能な共用領域であってもよい。図3に戻って、フラッシュメモリモジュール10は、ステップS311での復元書込み処理が完了したか否かを判断するステップS312。フラッシュメモリモジュール10は、復元書込み処理が完了したと判断した場合ステップS312:YES、フラッシュメモリモジュール10は、制御回路20に対して復元書込み完了Eの通知を出力するステップS313。フラッシュメモリモジュール10は、復元書込み処理が完了していないと判断した場合ステップS312:NO、フラッシュメモリモジュール10は、ステップS312の処理を繰返す。なお、半導体装置1は、復元書込み完了Eを制御回路20に入力することで、データの誤り訂正の動作を終了する。以上のように、本発明の実施の形態に係る半導体装置1は、ECC回路データ誤検出部40が2ビットのデータの誤りを検出した場合に、データ読出部32がメモリセル310からデータを読出すときの読出特性を変更して、1ビット以下のデータの誤りに訂正し、誤りが1ビットとなったデータを、誤り訂正符号を用いて訂正するので、2ビットのデータの誤りを訂正することができる。また、本発明の実施の形態に係る半導体装置1は、ECC回路データ誤検出部40が2ビットのデータの誤りを検出した場合のみ、データ読出部32がメモリセル310からデータを読出すときの読出特性を変更するので、フラッシュメモリの処理量を減らして高速に動作すことが可能となる。さらに、本発明の実施の形態に係る半導体装置1は、データ訂正部33が、センスアンプ320の基準値tripを変更して、1ビット以下のデータの誤りを訂正するので、2ビットのデータの誤りを訂正することができる。また、本発明の実施の形態に係る半導体装置1は、メモリセル310のゲート電圧Vmgを変更して、1ビット以下のデータの誤りを訂正するので、2ビットのデータの誤りを訂正することができる。さらに、本発明の実施の形態に係る半導体装置1は、昇圧回路34でゲート電圧Vmgを昇圧して、ゲート電圧Vmgを変更するので、電源電圧VDDなどの所定の電圧以外の電圧に変更することができる。今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。"