(57)【要約】      （修正有）【課題】２ビット以上のエラーに対処し得るエラー訂正回路を提供する。【解決手段】エラー訂正回路は、出力データの誤りビットの値を反転する選択ビット反転回路１０５と、メモリデータの１ビットの誤りを訂正するＥＣＣ回路１０８と、チェックビット生成回路１１１と、訂正データとチェックビットを格納するECCデータレジスタ１１３と、選択ビット反転回路からの出力データAとECCデータレジスタの出力データA'とをビット比較するビット比較回路１１５と、データＡとデータＡ’との不一致を検出した際に、当該メモリデータのアドレスを記憶するアドレス記憶部１２７（１２７ａから１２７ｘ）と、ビット比較回路がデータＡとデータＡ’との不一致を検出した際に、当該不一致ビット位置にビット不一致を示す情報を書き込む誤りデータ記憶部１２８（１２８ａから１２８ｘ）と、複数の誤りデータ記憶部に記憶された各データの論理ＯＲ演算を行って、第一の信号を生成するデータＯＲ回路１３４と、を備える。【選択図】図１
2005242797.tif 000002
【特許請求の範囲】
【請求項１】
第一の信号に基づいて記憶装置からのメモリデータとチェックデータから成る出力データの誤りビットの値を反転する選択ビット反転回路と、
前記選択ビット反転回路の出力データに基づいて前記メモリデータの１ビットの誤りを訂正するＥＣＣ回路と、
前記ECC回路の出力する訂正データに基づいてチェックビットを生成するチェックビット生成回路と、
前記訂正データと前記チェックビットを格納するECCデータレジスタと、
前記選択ビット反転回路からの出力データAと前記ECCデータレジスタの出力データA'とをビット比較するビット比較回路と、
前記ビット比較回路が前記データＡとデータＡ’との不一致を検出した際に、当該メモリデータのアドレスを記憶するアドレス記憶部と、
前記ビット比較回路が前記データＡとデータＡ’との不一致を検出した際に、当該不一致ビット位置にビット不一致を示す情報を書き込む誤りビット記憶回路を所定データ幅分備えた誤りデータ記憶部と、
前記複数の誤りデータ記憶部に記憶された各データの論理OR演算を行って、前記第一の信号を生成するデータＯＲ回路と、
を備えていることを特徴とするエラー訂正回路。
【請求項２】
請求項１記載のエラー訂正回路において、更に外部入力端子を備え、この外部入力端子から入力された信号が第一のレベルの信号である場合、請求項１記載のエラー訂正機能を無効とすることを特徴とするエラー訂正回路。
【請求項３】
請求項１記載のエラー訂正回路において、前記アドレス記憶部はアドレス比較回路を備えており、現在参照中のアドレスと既に記憶されているアドレスとが一致した場合に、当該アドレスに対応する前記誤りデータ記憶部の各記憶素子からの出力データを有効とすることを特徴とするエラー訂正回路。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、主としてフラッシュメモリを内蔵するマイクロコンピュータ等の集積回路において、フラッシュメモリのデータの信頼性向上を図る技術に関する。
【背景技術】
【０００２】
従来、フラッシュメモリを内蔵するマイクロコンピュータ（マイコンと略称する）等の集積回路は、フラッシュメモリに記憶したデータの信頼性向上を図るために、誤り検出・訂正（エラーチェッキング・アンド・コレクティング：ECCと略称する）回路を搭載していた。この理由は、フラッシュメモリはデータ・リテンションおよび書き込み・読み出し時の外乱などにより、記憶したデータが変化してしまう可能性があるためである。特に、マイコンの動作プログラムの記憶装置としてフラッシュメモリを使用する場合、１ビットでも誤ったデータをCPUが受け取ると、それにより誤動作するため、フラッシュメモリにはアドレス毎に本来のデータと共にデータ誤りチェック用のチェックビットが付加されて記憶される。例えば、３２ビット幅のメモリデータに対して、６ビットのチェックビットが付加されることになる。
【０００３】
ECC回路は、そのメモリデータとチェックビットとを受け取って、１ビットのエラーの訂正、または、２ビット以上のエラー検出を行い、CPUにデータを転送している。
【特許文献１】特開２０００−２０４０９
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、３２ビット幅のメモリデータに対して６ビットのチェックビットを付加するような従来のECC回路では、フラッシュメモリの同一アドレスの１ビットエラーは訂正できるが、２ビット以上のエラーは訂正出来ないという問題があり、マイコンのプログラムの記憶装置としてフラッシュメモリを使用している場合、同一アドレスに２ビット以上のエラーが発生した時点で、マイコンが誤動作するという問題があった。
【０００５】
本発明の課題は、前記問題点を解決して、２ビット以上のエラーに対処し得るエラー訂正回路を提供することにある。
【課題を解決するための手段】
【０００６】
この発明のエラー訂正回路は、前記課題を解決するために、第一の信号に基づいて記憶装置からのメモリデータとチェックデータから成る出力データの誤りビットの値を反転する選択ビット反転回路と、選択ビット反転回路の出力データに基づいてメモリデータの１ビットの誤りを訂正するＥＣＣ回路と、ECC回路の出力する訂正データに基づいてチェックビットを生成するチェックビット生成回路と、訂正データとチェックビットを格納するECCデータレジスタと、選択ビット反転回路からの出力データAとECCデータレジスタの出力データA'とをビット比較するビット比較回路と、ビット比較回路がデータＡとデータＡ’との不一致を検出した際に、当該メモリデータのアドレスを記憶するアドレス記憶部と、ビット比較回路がデータＡとデータＡ’との不一致を検出した際に、当該不一致ビット位置にビット不一致を示す情報を書き込む誤りビット記憶回路を所定データ幅分備えた誤りデータ記憶部と、複数の誤りデータ記憶部に記憶された各データの論理ＯＲ演算を行って、第一の信号を生成するデータＯＲ回路と、を備えている。
【発明の効果】
【０００７】
この発明によれば、従来の３２ビット幅のデータに６ビットのチェックビットを用いるECC回路だけでは訂正出来ない２ビット以上のエラー訂正が可能となる。従って、フラッシュメモリに動作プログラムを格納したマイコン等の集積回路は、同一アドレスに２ビット以上のエラーが発生しても誤動作することが無く、信頼性の向上を図ることができる。また、エラーデータのアドレスを格納するアドレス記憶部と誤りデータ記憶部の数を自由に変更することが出来るため、フラッシュメモリの信頼性に応じた適切な回路規模を選択出来る。
【発明を実施するための最良の形態】
【０００８】
以下、この発明の実施の形態について、図面を用いて詳細に説明する。尚、図中の各構成要素はこの発明が理解できる程度に概略的に示してあるにすぎない。
【実施例１】
【０００９】
図１は、実施例１の構成を示すブロック図であり、この実施例のエラー訂正回路は、CPU100、フラッシュメモリ１０１、選択ビット反転回路１０５、１ビットのエラー訂正を行うECC回路１０８、フラッシュメモリデータレジスタ１０９、チェックビット生成回路１１１、ECCデータを保持するECCデータレジスタ１１３、CPU100から出力されるアドレスを記憶するアドレスレジスタ１１４、ECCデータレジスタ１１３からの出力データとフラッシュメモリデータレジスタ１０９からの出力データとをビット比較するビット比較回路１１５、フラッシュメモリデータレジスタ１０９等の各部のデータ設定タイミングを制御するタイミング制御回路１１８、誤りビットを記憶する誤りデータ記憶部１２８ａ〜１２８ｘ、誤りの有ったアドレスを記憶するアドレス記憶部１２７ａ〜１２７ｘ、前記誤りデータ記憶部１２８ａ〜１２８ｘおよびアドレス記憶部１２７ａ〜１２７ｘへのデータの書き込みを制御する書き込み制御回路１２５、および誤りデータ記憶部１２８ａ〜１２８ｘから出力される各データの論理ＯＲ演算を行うデータＯＲ回路１３４により構成される。
【００１０】
図２は、書き込み制御回路１２５の回路図であり、図３は誤りデータ記憶部１２８ａ〜１２８ｘ内の１ビットの誤り情報を記憶する誤りビット記憶回路の回路図であり、図４は、アドレス記憶部１２７ａ〜１２７ｘの内部の回路図である。
【００１１】
以下、図１〜図４の回路図および図５のタイムチャートを用いて動作を説明する。
読み出しサイクル(1)において、CPU100はｔ０のタイミングでアドレスデータ１０２を出力する。タイミング制御回路１１８からのアドレスラッチ信号１２１がｔ１のタイミングで”L"レベルから”H"レベルに変化し、その立ち上がりエッジでアドレスデータ１０２がアドレスレジスタ１１４に格納され、アドレスレジスタ１１４の出力データは図示のように１ａとなる。
【００１２】
フラッシュメモリ１０１はアドレスデータ１０２を受けてｔ２のタイミングでメモリデータ１０３、チェックビットデータ１０４を出力する。メモリデータ１０３は、メモリの内容そのものであり、チェックビットデータ１０４はチェックビットを表すデータである。この時のメモリデータ１０３，チェックビットデータ１０４をデータAとし、メモリデータ１０３に１ビットの誤りがあるものとする。
【００１３】
この出力データは選択ビット反転回路１０５に入力され、信号１３５の内容に基づいてデータ１０３，１０４に対応するデータ１０６，１０７を出力する。このとき、初期状態では、誤りデータとそのアドレスが記憶されていないため、アドレス一致信号１３１（１３１ａ，１３１ｂ，・・・１３１ｘ）は全て”Ｌ”レベル（アドレス不一致：図４参照）となり、また、誤りデータ記憶部１２８ａ〜１２８ｘからの出力データ１３３（１３３ａ，１３３ｂ，・・・、１３３ｘ）も全て”L"レベルとなる（図３参照）。このため、ビットＯＲ回路１３４の出力信号である反転ビット選択信号１３５（この信号はメモリデータ幅＋チェックビット幅のデータ幅を有する信号である）は全て”L"レベルとなる。これにより、選択ビット反転回路１０５の出力データ１０６，１０７は反転されず、フラッシュメモリの出力データAと同一データとなる。
【００１４】
ECC回路１０８は、選択ビット反転回路１０５の出力データ１０６，１０７を入力し、データの１ビットの誤りを訂正して訂正データ１１０を出力する。この訂正データ１１０は、読み出しサイクル(1)においてCPU100に取り込まれる。
【００１５】
タイミング制御回路１１８からのフラッシュメモリデータレジスタ１０９に対するデータラッチ信号１１９がｔ３のタイミングで”L"レベルから”H"レベルに変化し、その立ち上がりエッジで選択ビット反転回路１０５の出力データ１０６，１０７の内容がフラッシュメモリデータレジスタ１０９に取り込まれ、その出力データ１１６はデータAとなる。
【００１６】
チェックビット生成回路１１１は、ECC回路１０８による訂正データ１１０を受けて所定数ビット（例えば６ビット）から成るチェックビットデータ１１２を出力する。このチェックビットデータは、例えば、下記の多項式を用いて訂正データ１１０（例えば３２ビット幅のデータ）から生成する。
2005242797.tif 000003
【００１７】
タイミング制御回路１１８からのECCデータラッチ信号１２０がｔ４のタイミングで”L"レベルから”H"レベルに変化し、その立ち上がりエッジで訂正データ１１０、およびチェックビット出力データ１１２の内容A'がECCデータレジスタ１１３に取り込まれ、その出力データ１１７はA'となる。
【００１８】
フラッシュメモリデータレジスタ１０９の出力データ１１６の内容AとECCデータレジスタ１１３の出力データ１１７の内容A'は、ビット比較回路１１５において比較され、A
とA'の差異の１ビット（データAの誤りビット）のみデータ”１”となり、その他のビットはデータ”０”として出力結果信号１２４が出力される。また、データAとA'に差異があることから、ビット比較回路１１５の誤り検出信号１２３が”L"レベルから”H"レベルに変化する。
【００１９】
タイミング制御回路１１８からの書き込みタイミング制御信号１２２がｔ５のタイミングで”L"レベルから”H"レベルに変化し、それに伴い、書き込みイネーブル信号１２９ａと書き込みビジー信号１２６が”L"レベルから”H"レベルに変化する。書き込みビジー信号１２６が”H"レベルに変化したのを受けて、タイミング制御回路１１８は、書き込みサイクルの開始と認識し、アドレスラッチ信号１２１、フラッシュメモリデータレジスタ１０９へのラッチ信号１１９，ECCデータレジスタ１１３へのデータラッチ信号１２０を”H"レベルから”L"レベルに変化させる。これらの信号は、書き込みサイクル中は”L"レベルに固定され、書き込みタイミング信号１２２は”H"レベルに固定される。
【００２０】
一方アドレス記憶部１２７ａの内部では、書き込みサイクル中は書き込みイネーブル信号１２９が”H"レベルとなり、アドレス記憶素子２０１の書き込みイネーブル信号（ＷＥ）が”H"レベルとなり、アドレスレジスタ１１４の内容がアドレス記憶素子２０１に書き込まれる。同時に、記憶素子２０５にデータ”１”が書き込まれる。
【００２１】
誤りデータ記憶部１２８ａにおいても書き込みサイクル中は書き込みイネーブル信号１２９ａが”H"レベルになっているので、ビット比較回路１１５の出力データ１２４内のエラービットに対応する誤りビット記憶回路の記憶素子４０１の書き込みイネーブル信号（ＷＥ）が”H"レベルの時に記憶素子４０１にデータ”１”が書き込まれる。尚、各誤りデータ記憶部内部の誤りビット記憶回路は、データ幅とチェックビット幅に相当する数の回路（図１では３２ビットのデータ幅と６ビットのチェックビットに対応して３８回路）が設けられている。
【００２２】
アドレス記憶部１２７ａ及び誤りデータ記憶部１２８ａへの書き込みが完了すると、タイミング制御部１１８は、書き込みタイミング制御信号１２２を”H"レベルから”L"レベルに変化させ、それに伴い、書き込みビジー信号１２６が”H"レベルから”L"レベルに変化し、書き込みサイクルが終了する。書き込みサイクル中に読み出しサイクルが有った場合は、フラッシュメモリデータレジスタ１０９、ECCデータレジスタ１１３、アドレスレジスタ１１４の各内容の更新が行われず、CPU100が必要な訂正データ１１０を取り込むのに影響は無い。
【００２３】
読み出しサイクル(2)においては、アドレス２ａのフラッシュメモリの出力メモリデータ１０３，１０４のデータＢに１ビットの誤りが無いため、読み出しサイクル(1)と同じ動作でフラッシュメモリデータレジスタ１０９及びECCデータレジスタ１１３に保持されたデータは共にBとなる。このため、書き込みタイミング信号１２２が”H"レベルとなった時に誤り検出信号１２３は”L"レベルのままとなるために書き込みビジー信号１２６も”L"レベルのままとなり、書き込み動作は発生しない。
【００２４】
読み出しサイクル(3)において、再び１ビットの誤りのあるアドレス１ａのフラッシュメモリメモリデータ１０３，１０４（データＡ）が出力された場合、アドレス記憶部１２７ａのアドレス比較回路２０２においてアドレス出力１０２の内容１ａと記憶素子２０１の内容が比較され、この場合両者が一致するのでアドレス一致信号１３１が”L"レベルから”H"レベルに変化する。アドレス一致信号１３１が”H"レベルになることにより、誤りデータ記憶部１２８ａにおいて既にデータ”１”を書き込まれている誤りビット記憶回路の出力が”L"レベルから”H"レベルに変化する。その他の誤りビット記憶回路の出力は”L"レベルのままであるため、誤りデータ記憶部１２８ａ〜１２８ｘの出力信号１３３ａ〜１３３ｘの論理ＯＲをとるデータＯＲ回路１３４の出力である反転ビット選択信号１３５は、全て”L"レベルの状態から前記１ビット誤りに対応するビットのみが”H"レベルに変化する。
【００２５】
選択ビット反転回路１０５は、反転ビット選択信号１３５を受けて、フラッシュメモリの出力メモリデータ１０３，１０４のエラービットのみを反転させ、選択ビット反転回路１０５の出力データ１０６，１０７にデータA'を出力する。その後は、前記サイクル(1)と同じ動作でフラッシュメモリデータレジスタ１０９及びECCデータレジスタ１１３に保持されたデータは共にA'となる。このため、読み出しサイクル(2)と同じ動作により書き込み動作は発生しない。
【００２６】
その後の読み出しサイクルで別のアドレスのフラッシュメモリの出力メモリデータ１０３，１０４に１ビットのエラーが有った場合は、読み出しサイクル(1)と同様の動作により、今度は書き込みイネーブル信号１２９ｂが”L"レベルから”H"レベルに変化し、書き込みサイクル中に当該アドレスがアドレス記憶部１２７ｂに書き込まれ、ビット比較回路１１５のビット比較結果出力信号１２４に現れたエラービット位置は、誤りデータ記憶部１２８ｂの対応する誤りビット記憶回路に書き込まれる。
【００２７】
尚、図１において、アドレス記憶部と誤りデータ記憶部は、フラッシュメモリの信頼性に応じて必要な数設けることが出来る。
【００２８】
アドレス１ａのフラッシュメモリメモリデータ１０３，１０４において別の１ビットがエラーとなり、合計２ビットエラーとなった場合にも、選択ビット反転回路１０５の出力データ１０６，１０７の内容は、読み出しサイクル(1)の場合と同様に１ビットエラーとなるので（サイクル(1)でエラーとなったビットは選択ビット反転回路１０５により正しい値に反転されているので、新たにエラーとなった１ビットのみが出力される）、ＣＰＵ１００にはＥＣＣ回路１０８で訂正された訂正データ１１０が供給される。その後は、読み出しサイクル(1)と同様に、ビット比較回路１１５におけるデータの差異により誤り検出信号１２３が”L"レベルから”H"レベルに変化するので、書き込み動作が発生する。但し、アドレス記憶部１２７ａには既にアドレスが書き込まれているので、ビット比較回路１１５の出力データ１２４の内１ビット誤りに該当するビット記憶回路の記憶素子４０１（図３参照）書き込みイネーブル信号（ＷＥ）が”H"レベルに変化し、記憶素子４０１にデータ”１”が書き込まれる。
【００２９】
このような動作を行うことにより、本発明によるエラー訂正回路においては、同一アドレスのフラッシュメモリの出力の全ビットがエラーとなってもＣＰＵ１００には正しく訂正されたデータ１１０を提供することが出来る。
【００３０】
以上説明したように、実施例１によれば、従来の３２ビット幅のデータに６ビットのチェックビットを用いるECC回路だけでは訂正出来ない２ビット以上のエラー訂正が可能となる。従って、フラッシュメモリに動作プログラムを格納したマイコン等の集積回路は、同一アドレスに２ビット以上のエラーが発生しても誤動作することが無く、信頼性の向上を図ることができる。また、書き込み制御回路１２５にわずかな変更を行うことにより、エラーデータのアドレスを格納するアドレス記憶部と誤りデータ記憶部の数を自由に変更することが出来るため、フラッシュメモリの信頼性に応じた適切な回路規模を選択出来る。
【実施例２】
【００３１】
図６は、本発明による誤り訂正回路の実施例２の構成を示すブロック図であり、外部入力端子６０１と、この端子から入力される入力信号６０２がタイミング制御回路１１８に入力されている点が実施例１の構成と異なっている。
以下、図６を参照して実施例２の誤り訂正回路の動作を説明する。
【００３２】
外部入力端子６０１からの入力信号６０２が”L"レベルの場合、タイミング制御回路１１８において、アドレスラッチ信号１２１、フラッシュメモリデータラッチ信号１１９、ECCデータレジスタ１１３のラッチ信号１２０及び書き込みタイミング制御信号１２２は、”L"レベル（無効レベル）に固定されるように制御される。これにより、アドレスレジスタ１１４、フラッシュメモリデータレジスタ１０９、ECCデータレジスタ１１３はそれぞれデータを保持しなくなり、また、書き込みタイミング制御信号１２２が”L"レベルに固定されることにより、書き込み制御回路１２５の出力データの全てが”L"レベルに固定されるため、書き込み動作が停止する。
【００３３】
一方、外部入力端子６０１からの入力信号６０２が”H"レベルの場合は、タイミング制御回路１１８において、アドレスラッチ信号１２１、フラッシュメモリデータラッチ信号１１９、ECCデータレジスタ１１３のラッチ信号１２０及び書き込みタイミング制御信号１２２は図５のタイムチャートに示されるように制御される。これにより、アドレスレジスタ１１４、フラッシュメモリデータレジスタ１０９、ECCデータレジスタ１１３はそれぞれのラッチ信号の立ち上がりエッジでデータを保持し、書き込みタイミング制御信号１２２が”H"レベルに変化することで書き込み制御回路１２５が動作し、書き込み動作が可能となる。
【００３４】
以上説明したように、実施例２のエラー訂正回路によれば、外部入力端子６０１からの入力信号６０２に基づいて実施例１に示した機能を停止させることが可能となるため、フラッシュメモリの出荷試験時や、仮のデータをフラッシュメモリに格納して動作させる場合などにアドレス記憶部や誤りデータ記憶部に不要なデータが書き込まれるのを防止することが出来る。
【図面の簡単な説明】
【００３５】
【図１】本発明の実施例１におけるエラー訂正回路の構成を示すブロック図である。
【図２】図１の書き込み制御回路の回路図である。
【図３】図１の誤りビット記憶回路の回路図である。
【図４】図１のアドレス記憶部の回路図である。
【図５】実施例１のエラー訂正回路のタイムチャートである。
【図６】本発明の実施例２におけるエラー訂正回路の構成を示すブロック図である。
【符号の説明】
【００３６】
１００              ＣＰＵ
１０１              フラッシュメモリ
１０５              選択ビット反転回路
１０８              ＥＣＣ回路
１０９              フラッシュメモリデータレジスタ
１１１              チェックビット生成回路
１１３              ECCデータレジスタ
１１４              アドレスレジスタ
１１５              ビット比較回路
１１８              タイミング制御回路
１２５              書き込み制御回路
１２７              アドレス記憶部
１２８              誤りデータ記憶部
１３４              データＯＲ回路
【図１】
2005242797.tif 000004
【図２】
2005242797.tif 000005
【図３】
2005242797.tif 000006
【図４】
2005242797.tif 000007
【図５】
2005242797.tif 000008
【図６】
2005242797.tif 000009