(57)【要約】【課題】３ビット以上の誤りが発生した場合であっても、比較的高い割合で誤りが発生したことを検出する誤り検出回路を提供する。【解決手段】ＥＣＣコード生成回路４は、データ記憶領域３ａからの読み出しデータまたは書き込みデータに基づいてＥＣＣコードを生成する。カウンタ回路５は、読み出しデータまたは書き込みデータに対してカウント数を導出する。ＥＣＣコード比較回路６は、読み出しデータに対するＥＣＣコードと書き込みデータに対するＥＣＣコードとを比較する。カウント数比較回路７は、読み出しデータに対するカウント数と書き込みデータに対するカウント数とを比較する。誤り検出訂正回路８は、ＥＣＣコード比較回路６からの比較結果またはカウント数比較回路７からの比較結果に基づいて、読み出しデータの３ビット以上の誤りを検出する。【選択図】  図１
2005004288.tif 000002
【特許請求の範囲】
【請求項１】
記憶装置への書き込みデータまたは記憶装置からの読み出しデータに基づいてＥＣＣコードを生成するＥＣＣコード生成手段と、該ＥＣＣコード生成手段により生成された書き込みデータに対するＥＣＣコードと読み出しデータに対するＥＣＣコードとを比較するＥＣＣコード比較手段と、該ＥＣＣコード比較手段により比較された結果が入力されると共に、該比較結果が一致しない場合、該比較結果に基づいて読み出しデータの１ビットの誤り訂正または２ビットの誤り検出を行う誤り検出訂正手段とから成るＥＣＣ回路と、
記憶装置への書き込みデータまたは記憶装置からの読み出しデータに対して所定の演算により所定の値を導出する演算手段と、
該演算手段により導出された書き込みデータに対する導出値と読み出しデータに対する導出値とを比較する導出値比較手段とを備え、
上記誤り検出訂正手段は、該導出値比較手段により比較された結果が入力されると共に、該比較結果が一致しない場合、上記ＥＣＣコード比較手段による比較結果が一致する場合であっても、記憶装置からの読み出しデータの３ビット以上の誤りを検出することを特徴とする誤り検出回路。
【請求項２】
上記演算手段は、記憶装置への書き込みデータまたは記憶装置からの読み出しデータの各ビットの１または０をカウントするカウンタ手段から構成されることを特徴とする請求項１記載の誤り検出回路。
【請求項３】
上記カウンタ手段は、所定のカウント数までカウントすると、該カウント数をリセットすることを特徴とする請求項２記載の誤り検出回路。
【請求項４】
上記カウンタ手段は、記憶装置への書き込みデータまたは記憶装置からの読み出しデータを所定のブロック単位で１または０をカウントすることを特徴とする請求項３記載の誤り検出回路。
【請求項５】
上記誤り検出訂正手段により記憶装置からの読み出しデータの誤りが検出された場合、該読み出しデータに対応する記憶装置の領域への書き込みデータの書き込みを禁止する書き込み禁止手段を備えたことを特徴とする請求項１ないし４何れか１項記載の誤り検出回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、誤り訂正符号回路（ＥＣＣ回路）を備えた誤り検出回路に関するものである。
【０００２】
【従来の技術】
近年、記憶装置の記憶容量の増加に伴って、内蔵されている記憶素子のいずれかが故障する確率が増えてきている。当該記憶素子の故障に伴い、記憶装置に誤ったデータの書き込み、または、誤ったデータの読み出しが行われることがある。例えば、フラッシュメモリなどの不揮発性の記憶装置は、酸化膜を通じてＭＯＳトランジスタのフローティングゲートへの電荷の注入・引き抜きを行うことにより、書き込みや消去を行う。このため、書き込みの回数が増えると、メモリセルの酸化膜が劣化し、保持データの信頼性が低下する。このような問題を改善するため、ＥＣＣ（Ｅｒｒｏｒ  Ｃｈｅｃｋ  ａｎｄ  Ｃｏｒｒｅｃｔ）回路を搭載した記憶装置が提供されている。
【０００３】
このＥＣＣ回路とは、符号（コード）理論に基づいて設計された誤り訂正機能を有する回路である。符号化による誤りの訂正は、本来のデータから一定の規則に従ってＥＣＣコードを生成する一方、そのデータの読み出し時などに当該データに基づいて再度ＥＣＣコードを生成する。そして、当初生成したＥＣＣコードと、読み出し時に生成したＥＣＣコードとを比較することにより、正しいデータの読み出しを確認することができる。一般に、このようなＥＣＣ回路は、１ビットの誤り訂正と、２ビットの誤り検出が可能である。
【０００４】
以下では、ＥＣＣ回路の具体的な構成を説明する前に、８ビットのデータ
（Ｄ７，Ｄ６，Ｄ５，Ｄ４，Ｄ３，Ｄ２，Ｄ１，Ｄ０）
を例として、ＥＣＣ回路の原理について説明する。
【０００５】
まず前提として、２のＮ乗ビットのデータに対して、１ビットの訂正の機能を持たせるには、２×ＮビットのＥＣＣコードが必要である。つまり、８ビットのデータの場合、当該８ビットは２の３乗であるので、２×３＝６ビットのＥＣＣコードが必要である。６ビットのＥＣＣコード
（ＣＰ５，ＣＰ４，ＣＰ３，ＣＰ２，ＣＰ１，ＣＰ０）
は、次のような式で定義される。
【０００６】
【数１】
ＣＰ０＝Ｉｎｖ（Ｄ０＋Ｄ２＋Ｄ４＋Ｄ６）
ＣＰ１＝Ｉｎｖ（Ｄ１＋Ｄ３＋Ｄ５＋Ｄ７）
ＣＰ２＝Ｉｎｖ（Ｄ０＋Ｄ１＋Ｄ４＋Ｄ５）
ＣＰ３＝Ｉｎｖ（Ｄ２＋Ｄ３＋Ｄ６＋Ｄ７）
ＣＰ４＝Ｉｎｖ（Ｄ０＋Ｄ１＋Ｄ２＋Ｄ３）
ＣＰ５＝Ｉｎｖ（Ｄ４＋Ｄ５＋Ｄ６＋Ｄ７）
上記の式において、記号＋は、排他的論理和（Ｅｘｃｌｕｓｉｖｅ−ＯＲ）を表すものとする。また、Ｉｎｖ（Ｉｎｖｅｒｔｅｒ）は、論理否定演算（ＮＯＴ）を表すものとする。
【０００７】
さらに、上記ＣＰ０〜ＣＰ５を、次のように定義する。
【数２】
ＣＰ０＝（＊，＊，０）
ＣＰ１＝（＊，＊，１）
ＣＰ２＝（＊，０，＊）
ＣＰ３＝（＊，１，＊）
ＣＰ４＝（０，＊，＊）
ＣＰ５＝（１，＊，＊）
【０００８】
次に、上記の理論式に基づいた１ビットの誤り訂正について具体的に説明する。
【０００９】
まず８ビットのデータを、例えば、以下のようなデータ
（Ｄ７，Ｄ６，Ｄ５，Ｄ４，Ｄ３，Ｄ２，Ｄ１，Ｄ０）＝（１，０，０，１，０，０，１，１）
として考えると、上記データにおけるＥＣＣコードは、数１の式により、
（ＣＰ５，ＣＰ４，ＣＰ３，ＣＰ２，ＣＰ１，ＣＰ０）＝（１，１，０，０，１，１）
となる。
【００１０】
ここで、例えば、上記８ビットのデータのＤ２の１ビットが誤っている場合、（Ｄ７，Ｄ６，Ｄ５，Ｄ４，Ｄ３，Ｄ２，Ｄ１，Ｄ０）＝（１，０，０，１，０，１，１，１）
上記データにおけるＥＣＣコードは、数１の式より、
（ＣＰ５，ＣＰ４，ＣＰ３，ＣＰ２，ＣＰ１，ＣＰ０）＝（１，０，１，０，１，０）
となる。
【００１１】
互いのＥＣＣコードを比較すると、数１の式におけるＤ２が含まれているＥＣＣコード（ＣＰ４，ＣＰ３，ＣＰ０）がそれぞれ異なっている。そして、数２の式において定義した情報を割り当てると、
（ＣＰ４，ＣＰ３，ＣＰ０）＝（０，１，０）
となる。この値に２の重み付けを与えると、
（２の２乗×０）＋（２の１乗×１）＋（２の０乗×０）＝２
となり、２ビット目、すなわち、Ｄ２が誤っていることが検出される。そして、このＤ２を反転すると、当該ビットを正しいデータに訂正することができる。
【００１２】
すなわち、１ビットの訂正可能な条件としては、次の組み合わせにおける
（ＣＰ０，ＣＰ１）、（ＣＰ２，ＣＰ３）、（ＣＰ４，ＣＰ５）
のうち、いずれも、一方がエラーで、他方が正常の組み合わせとなることが条件である。
【００１３】
続いて、２ビットの誤り検出について具体的に説明する。
【００１４】
上記と同じように、８ビットのデータを、
（Ｄ７，Ｄ６，Ｄ５，Ｄ４，Ｄ３，Ｄ２，Ｄ１，Ｄ０）＝（１，０，０，１，０，０，１，１）
として考えると、上記データにおけるＥＣＣコードは、数１の式により、
（ＣＰ５，ＣＰ４，ＣＰ３，ＣＰ２，ＣＰ１，ＣＰ０）＝（１，１，０，０，１，１）
となる。
【００１５】
ここで、例えば、上記８ビットのデータのＤ２とＤ１の２ビットが誤っている場合、
（Ｄ７，Ｄ６，Ｄ５，Ｄ４，Ｄ３，Ｄ２，Ｄ１，Ｄ０）＝（１，０，０，１，０，１，０，１）
上記データにおけるＥＣＣコードは、数１の式より、
（ＣＰ５，ＣＰ４，ＣＰ３，ＣＰ２，ＣＰ１，ＣＰ０）＝（１，１，１，１，０，０）
となる。
【００１６】
互いのＥＣＣコードを比較すると、ＣＰ３，ＣＰ２，ＣＰ１，ＣＰ０がそれぞれ異なっている。つまり、次の組み合わせにおける
（ＣＰ０，ＣＰ１）、（ＣＰ２，ＣＰ３）、（ＣＰ４，ＣＰ５）
のうち、（ＣＰ０，ＣＰ１）と（ＣＰ２，ＣＰ３）との組み合わせは双方ともエラーが発生している。このように、比較結果に規則性が見られない場合、いずれかのビットが２ビット誤っていると検出することができる。
【００１７】
以下では、上記の原理に基づいたＥＣＣ回路の構成について具体的に説明する。
【００１８】
図２に示すように、ＥＣＣ回路１００は、Ｉ／Ｏ回路１０１、記憶装置１０２、ＥＣＣコード生成回路１０３、ＥＣＣコード比較回路１０４および誤り検出訂正回路１０５を備えている。また、記憶装置１０２は、データ記憶領域１０２ａと、ＥＣＣコード記憶領域１０２ｂとを有している。
【００１９】
Ｉ／Ｏ回路１０１は、ＥＣＣ回路１００の外部に配置される例えば図示しないＣＰＵからデータ入出力線１１０を介して入力される書き込みデータを、データ入力線１１１を介してデータ記憶領域１０２ａと、ＥＣＣコード生成回路１０３とに送る。ＥＣＣコード生成回路１０３は、データ入力線１１１から入力された書き込みデータに基づいて、この書き込みデータに対するＥＣＣコードを生成すると共に、生成したＥＣＣコードを、ＥＣＣコード入力線１１２を介してＥＣＣコード記憶領域１０２ｂに送る。これにより、データ記憶領域１０２ａには、データ入力線１１１から入力された書き込みデータが記憶されると共に、ＥＣＣコード記憶領域１０２ｂには、この書き込みデータに対するＥＣＣコードが記憶される。
【００２０】
そして、ＣＰＵからの指令により、データ記憶領域１０２ａに記憶されたデータを読み出す場合、この読み出されたデータは、データ出力線１１３を介してＥＣＣコード生成回路１０３と、誤り検出訂正回路１０５とに送られる。それと略同時に、このデータに対応したＥＣＣコードを、ＥＣＣコード記憶領域１０２ｂからＥＣＣコード出力線１１４を介してＥＣＣコード比較回路１０４に送る。ＥＣＣコード生成回路１０３は、データ出力線１１３からの読み出しデータに基づいて、当該データに対するＥＣＣコードを生成すると共に、生成したＥＣＣコードを、ＥＣＣコード比較回路出力線１１５を介してＥＣＣコード比較回路１０４に送る。
【００２１】
ＥＣＣコード比較回路１０４は、ＥＣＣコード出力線１１４から入力された書き込みデータに対するＥＣＣコードと、ＥＣＣコード比較回路出力線１１５から入力された読み出しデータに対するＥＣＣコードとを比較する。そして、ＥＣＣコード比較回路１０４は、当該比較結果を、誤り検出訂正回路出力線１１６を介して誤り検出訂正回路１０５に送る。誤り検出訂正回路１０５は、誤り検出訂正回路出力線１１６から入力された比較結果に基づいて、データ出力線１１３から入力された読み出しデータの１ビットの誤り訂正または２ビットの誤り検出を行う。
【００２２】
すなわち、誤り検出訂正回路１０５は、出力データ線１１３から入力された読み出しデータに誤りがなければそのデータを、読み出しデータに１ビットの誤りがあれば誤りの訂正を行ったデータを、Ｉ／Ｏ回路出力線１１７を介してＩ／Ｏ回路１０１に送る。また、誤り検出訂正回路１０５は、読み出しデータに２ビットの誤りがあれば当該データと、当該データが誤っていることを示す情報とをＩ／Ｏ回路出力線１１７を介してＩ／Ｏ回路１０１に送る。そして、Ｉ／Ｏ回路１０１は、データ入出力線１１０を介して、読み出したデータや誤りを示す情報をＣＰＵに送る。このようなＥＣＣ回路については、例えば、以下のような特許文献にそれぞれ開示されている。
【００２３】
【特許文献１】
特開平５−５４６９７（公開日平成５年３月５日）
【特許文献２】
特開２００１−２３３９４（公開日平成１３年１月２６日）
【００２４】
【発明が解決しようとする課題】
しかしながら、上記のようなＥＣＣ回路では、１ビットの誤り訂正と、２ビットの誤り検出を目的としているので、例えば、３ビット以上の誤りが発生した場合、以下のような問題を生じる。
【００２５】
すなわち、３ビット以上の誤りが発生すると、正常なビットの誤った訂正や誤りなしと誤判断することがある。具体的には、８ビットのデータを、例えば、以下のようなデータ
（Ｄ７，Ｄ６，Ｄ５，Ｄ４，Ｄ３，Ｄ２，Ｄ１，Ｄ０）＝（０，０，０，０，１，１，１，１）
として考えると、上記データにおけるＥＣＣコードは、数１の式により、
（ＣＰ５，ＣＰ４，ＣＰ３，ＣＰ２，ＣＰ１，ＣＰ０）＝（１，１，１，１，１，１）
となる。
【００２６】
ここで、例えば、上記８ビットのデータの上位４ビット（Ｄ７，Ｄ６，Ｄ５，Ｄ４）が誤っている場合、
（Ｄ７，Ｄ６，Ｄ５，Ｄ４，Ｄ３，Ｄ２，Ｄ１，Ｄ０）＝（１，１，１，１，１，１，１，１）
上記データにおけるＥＣＣコードは、数１の式より、
（ＣＰ５，ＣＰ４，ＣＰ３，ＣＰ２，ＣＰ１，ＣＰ０）＝（１，１，１，１，１，１）
となる。
【００２７】
このように、８ビットのデータの上位４ビットが誤っているにもかかわらず、同一のＥＣＣコードが生成されるため、誤りなしと誤判断する問題があった。
【００２８】
本発明は、上記の問題点に鑑みてなされたものであり、３ビット以上の誤りが発生した場合であっても、比較的高い割合で誤りが発生したことを検出する誤り検出回路を提供することを目的としている。
【００２９】
【課題を解決するための手段】
請求項１の発明に係る誤り検出回路は、上記の課題を解決するために、記憶装置への書き込みデータまたは記憶装置からの読み出しデータに基づいてＥＣＣコードを生成するＥＣＣコード生成手段と、該ＥＣＣコード生成手段により生成された書き込みデータに対するＥＣＣコードと読み出しデータに対するＥＣＣコードとを比較するＥＣＣコード比較手段と、該ＥＣＣコード比較手段により比較された結果が入力されると共に、該比較結果が一致しない場合、該比較結果に基づいて読み出しデータの１ビットの誤り訂正または２ビットの誤り検出を行う誤り検出訂正手段とから成るＥＣＣ回路と、記憶装置への書き込みデータまたは記憶装置からの読み出しデータに対して所定の演算により所定の値を導出する演算手段と、該演算手段により導出された書き込みデータに対する導出値と読み出しデータに対する導出値とを比較する導出値比較手段とを備え、上記誤り検出訂正手段は、該導出値比較手段により比較された結果が入力されると共に、該比較結果が一致しない場合、上記ＥＣＣコード比較手段による比較結果が一致する場合であっても、記憶装置からの読み出しデータの３ビット以上の誤りを検出することを特徴としている。
【００３０】
上記の構成によれば、ＥＣＣ回路のＥＣＣコード生成手段は、記憶装置への書き込みデータまたは記憶装置からの読み出しデータに基づいてＥＣＣコードを生成する。ＥＣＣコード比較手段は、生成された書き込みデータに対するＥＣＣコードと、読み出しデータに対するＥＣＣコードとを比較する。誤り検出訂正手段は、ＥＣＣコード比較手段による比較結果が入力されると共に、その比較結果が一致しない場合、その比較結果に基づいて読み出しデータの１ビットの誤り訂正または２ビットの誤り検出を行う。
【００３１】
また、演算手段は、記憶装置への書き込みデータまたは記憶装置からの読み出しデータに対して所定の演算により所定の値を導出する。導出値比較手段は、導出された書き込みデータに対する導出値と、読み出しデータに対する導出値とを比較する。そして、誤り検出訂正手段は、導出値比較手段による比較結果が入力されると共に、その比較結果が一致しない場合、ＥＣＣコード比較手段による比較結果が一致する場合であっても、記憶装置からの読み出しデータが３ビット以上誤っていることを検出する。
【００３２】
これにより、記憶装置からの読み出しデータに３ビット以上の誤りが発生した場合であっても、比較的高い割合で読み出しデータに誤りが発生したことを検出することができる。
【００３３】
請求項２の発明に係る誤り検出回路は、請求項１記載の発明の構成において、上記演算手段は、記憶装置への書き込みデータまたは記憶装置からの読み出しデータの各ビットの１または０をカウントするカウンタ手段から構成されることを特徴としている。
【００３４】
上記の構成によれば、演算手段は、記憶装置への書き込みデータまたは記憶装置からの読み出しデータの各ビットの１または０の個数をカウントする。これにより、書き込みデータに対するカウント数と読み出しデータに対するカウント数とが一致しない場合、書き込みデータに対するＥＣＣコードと読み出しデータに対するＥＣＣコードとが一致する場合であっても、記憶装置からの読み出しデータが３ビット以上誤っていることを検出することができる。
【００３５】
請求項３の発明に係る誤り検出回路は、請求項２記載の発明の構成において、上記カウンタ手段は、所定のカウント数までカウントすると、該カウント数をリセットすることを特徴としている。
【００３６】
上記の構成によれば、カウンタ手段は、所定のカウント数までカウントすると、このカウント数をリセット（クリア）する。これにより、例えば、０から９まで順にカウントし、９を超えると、この９をリセットして初めから（０から）カウントを行うので、カウンタ手段の回路構成を小さくすることができる。
【００３７】
請求項４の発明に係る誤り検出回路は、請求項３記載の発明の構成において、上記カウンタ手段は、記憶装置への書き込みデータまたは記憶装置からの読み出しデータを所定のブロック単位で１または０をカウントすることを特徴としている。
【００３８】
上記の構成によれば、カウンタ手段は、記憶装置への書き込みデータまたは記憶装置からの読み出しデータを、所定のブロック単位で、１または０の個数をカウントする。例えば、書き込みデータまたは読み出しデータを、８ビットや１６ビットなどのブロック単位でカウントする。これにより、カウンタ手段の回路構成を小さくすることができる。
【００３９】
請求項５の発明に係る誤り検出回路は、請求項１ないし４何れか１項記載の発明の構成において、上記誤り検出訂正手段により記憶装置からの読み出しデータの誤りが検出された場合、該読み出しデータに対応する記憶装置の領域への書き込みデータの書き込みを禁止する書き込み禁止手段を備えたことを特徴としている。
【００４０】
上記の構成によれば、書き込み禁止手段は、誤り検出訂正手段により記憶装置からの読み出しデータの誤りが検出された場合、読み出しデータに対応する記憶装置の領域への書き込みデータの書き込みを禁止する。これにより、記憶装置の故障した領域への書き込みを禁止することができる。
【００４１】
【発明の実施の形態】
本発明の実施の一形態について図１に基づいて説明すれば、以下の通りである。
【００４２】
すなわち、図１に示すように、本実施の形態に係る誤り検出回路１は、例えば、プログラマブル表示器などのＨＭＩ（Ｈｕｍａｎ  Ｍａｃｈｉｎｅ  Ｉｎｔｅｒｆａｃｅ）機器や情報処理装置などに組み込まれて使用されるものであって、Ｉ／Ｏ回路２、記憶装置３、ＥＣＣコード生成回路４、カウンタ回路５、ＥＣＣコード比較回路６、カウント数比較回路７および誤り検出訂正回路８を備えている。
【００４３】
Ｉ／Ｏ回路２は、誤り検出回路１の外部に配置される例えば図示しないＣＰＵとデータ入出力線１０を介してデータの入出力を行う。本実施の形態では、データ入出力線１０は、８ビットのバス幅から構成されると共に、ＣＰＵから８ビットのデータがＩ／Ｏ回路２に入出力される例を説明する。なお、データ入出力線１０のバス幅は、８ビットのバス幅に限定されるものではなく、１６または３２ビットのバス幅など、いかなるバス幅で構成してもよいことは勿論である。
【００４４】
記憶装置３は、例えば、フラッシュメモリなどの不揮発性のメモリであって、特に、メモリセルを複数個直列に接続してＮＡＮＤセル・ブロックを構成するＮＡＮＤ型のフラッシュメモリである。記憶装置３は、データ記憶領域３ａ、ＥＣＣコード記憶領域３ｂおよびカウント数記憶領域３ｃを有している。なお、記憶装置３は、フラッシュメモリに限定されるものではなく、データやプログラムを一時的に蓄え、必要な場合に取り出すことのできるものであれば、いかなる記憶装置３であってもよい。
【００４５】
データ記憶領域３ａは、Ｉ／Ｏ回路２からデータ入力線１１を介して８ビットの書き込みデータが入力される。例えば、データ入力線１１から以下のような書き込みデータが入力される場合を例にして説明する。
（Ｄ７，Ｄ６，Ｄ５，Ｄ４，Ｄ３，Ｄ２，Ｄ１，Ｄ０）＝（０，０，０，０，１，１，１，１）
【００４６】
データ記憶領域３ａは、ＣＰＵから入力される例えば列を選択するためのカラムアドレスと、行を選択するためのロウアドレスとにより特定されるメモリセルから順に上記の書き込みデータを記憶していく。なお、カラムアドレス、ロウアドレスに係る回路は、従来における通常の回路と同一であるので、ここではその説明を省略する。
【００４７】
ＥＣＣコード記憶領域３ｂは、後述するＥＣＣコード生成回路４からＥＣＣコード入力線１２を介してＥＣＣコードが入力される。ＥＣＣコード記憶領域３ｂは、データ記憶領域３ａに記憶された書き込みデータに対応してＥＣＣコードが記憶される。また、カウント数記憶領域３ｃは、後述するカウンタ回路５からカウント数入力線１３を介してカウント数が入力される。カウント数記憶領域３ｃは、データ記憶領域３ａに記憶された書き込みデータに対応してカウント数が記憶される。
【００４８】
ＥＣＣコード生成回路４は、データ入力線１１から入力された書き込みデータに基づいて、当該データに対するＥＣＣコードを生成する。ここでは、以下のような書き込みデータ
（Ｄ７，Ｄ６，Ｄ５，Ｄ４，Ｄ３，Ｄ２，Ｄ１，Ｄ０）＝（０，０，０，０，１，１，１，１）
が入力されるので、ＥＣＣコード生成回路４は、ＥＣＣ回路の原理における数１の式に基づいて、
（ＣＰ５，ＣＰ４，ＣＰ３，ＣＰ２，ＣＰ１，ＣＰ０）＝（１，１，１，１，１，１）
というＥＣＣコードを生成する。ＥＣＣコード生成回路４は、当該生成したＥＣＣコードを、ＥＣＣコード入力線１２を介してＥＣＣコード記憶領域３ｂに送る。
【００４９】
カウンタ回路５は、数をカウントするレジスタであって、例えば、フリップフロップを複数個接続して構成されている。カウンタ回路５は、データ入力線１１から入力された書き込みデータに対して、当該データにおける“１”のビットのカウントを行う。ここでは、以下のようなデータ
（Ｄ７，Ｄ６，Ｄ５，Ｄ４，Ｄ３，Ｄ２，Ｄ１，Ｄ０）＝（０，０，０，０，１，１，１，１）
が入力されるので、カウンタ回路５は、「４」というカウント数を導出する。カウンタ回路５は、当該導出したカウント数を、カウント数入力線１３を介してカウント数記憶領域３ｃに送る。
【００５０】
なお、カウンタ回路５は、所定のカウント数までカウントすると、このカウント数をリセットして初めからカウントを行う構成が望ましい。例えば、０から９まで順にカウントし、９を超えると、この９をリセットして０からカウントを行う構成である。これにより、例えば、ＣＰＵからデータ入出力線１０を介して全ビット“１”の８ビットの書き込みデータが５１２回連続して入力された場合（８×５１２＝４０９６ビット）、カウンタ回路５は、「４０９６」というカウント数を導出する必要がなく、「６」というカウント数を導出するだけでよい。したがって、４個のフリップフロップを用いるだけでカウンタ回路５を構成することができるので、カウンタ回路５の回路規模を小さくすることができる。
【００５１】
これにより、データ記憶領域３ａには、データ入力線１１から入力された以下の書き込みデータ
（Ｄ７，Ｄ６，Ｄ５，Ｄ４，Ｄ３，Ｄ２，Ｄ１，Ｄ０）＝（０，０，０，０，１，１，１，１）
が記憶される。また、ＥＣＣコード記憶領域３ｂには、この書き込みデータに対応させて、以下のＥＣＣコード
（ＣＰ５，ＣＰ４，ＣＰ３，ＣＰ２，ＣＰ１，ＣＰ０）＝（１，１，１，１，１，１）
が記憶される。さらに、カウント数記憶領域３ｃには、この書き込みデータに対応させて、カウント数「４」が記憶される。
【００５２】
ここで、データ記憶領域３ａに記憶された上記の書き込みデータが、例えば、記憶装置３におけるメモリセルの酸化膜の劣化などが原因で上位の４ビットが反転して以下のようなデータとして記憶された場合を例にして説明する。
（Ｄ７，Ｄ６，Ｄ５，Ｄ４，Ｄ３，Ｄ２，Ｄ１，Ｄ０）＝（１，１，１，１，１，１，１，１）
【００５３】
ＣＰＵからの指令により、データ記憶領域３ａに記憶された上記のデータを読み出す場合、この読み出されたデータは、データ出力線１４を介して、ＥＣＣコード生成回路４と、カウンタ回路５と、後述する誤り検出訂正回路８とに送られる。それと略同時に、このデータに対応したＥＣＣコードを、ＥＣＣコード記憶領域３ｂからＥＣＣコード出力線１５を介してＥＣＣコード比較回路６に送る。また、このデータに対応したカウント数を、カウント数記憶領域３ｃからカウント数出力線１６を介してカウント数比較回路７に送る。
【００５４】
上記ＥＣＣコード生成回路４は、データ出力線１１から入力された読み出しデータに基づいて、当該データに対するＥＣＣコードを生成する。ここでは、以下のような読み出しデータ
（Ｄ７，Ｄ６，Ｄ５，Ｄ４，Ｄ３，Ｄ２，Ｄ１，Ｄ０）＝（１，１，１，１，１，１，１，１）
が入力されるので、ＥＣＣコード生成回路４は、ＥＣＣ回路の原理における数１の式に基づいて、
（ＣＰ５，ＣＰ４，ＣＰ３，ＣＰ２，ＣＰ１，ＣＰ０）＝（１，１，１，１，１，１）
というＥＣＣコードを生成する。ＥＣＣコード生成回路４は、当該生成したＥＣＣコードを、ＥＣＣコード比較回路出力線１７を介してＥＣＣコード比較回路６に送る。
【００５５】
上記カウンタ回路５は、データ出力線１４から入力された読み出しデータに対して、当該データにおける“１”のビットのカウントを行う。ここでは、以下のような読み出しデータ
（Ｄ７，Ｄ６，Ｄ５，Ｄ４，Ｄ３，Ｄ２，Ｄ１，Ｄ０）＝（１，１，１，１，１，１，１，１）
が入力されるので、カウンタ回路５は、「８」というカウント数を導出する。カウンタ回路５は、当該導出したカウント数を、カウント数比較回路出力線１８を介してカウント数比較回路７に送る。
【００５６】
ＥＣＣコード比較回路６は、ＥＣＣコード出力線１５から入力された書き込みデータに対する以下のＥＣＣコード
（ＣＰ５，ＣＰ４，ＣＰ３，ＣＰ２，ＣＰ１，ＣＰ０）＝（１，１，１，１，１，１）
と、ＥＣＣコード比較回路出力線１７から入力された読み出しデータに対する以下のＥＣＣコード
（ＣＰ５，ＣＰ４，ＣＰ３，ＣＰ２，ＣＰ１，ＣＰ０）＝（１，１，１，１，１，１）
とを比較する。そして、ＥＣＣコード比較回路６は、当該比較結果を、ＥＣＣコード比較結果出力線１９を介して誤り検出訂正回路８に送る。ここでは、書き込みデータに対するＥＣＣコードと、読み出しデータに対するＥＣＣコードとが全てのビットで一致するので、その旨の情報を送る。
【００５７】
カウント数比較回路７は、カウント数出力線１６から入力された読み出しデータに対する「４」というカウント数と、カウント数比較回路出力線１８から入力された書き込みデータに対する「８」というカウント数とを比較する。そして、カウント数比較回路７は、当該比較結果を、カウント数比較結果出力線２０を介して誤り検出訂正回路８に送る。ここでは、書き込みデータに対するカウント数と、読み出しデータに対するカウント数とが一致しないので、その旨の情報を送る。
【００５８】
誤り検出訂正回路８は、ＥＣＣコード比較結果出力線１９を介して入力されたＥＣＣコードの比較結果と、カウント数比較結果出力線２０を介して入力されたカウント数の比較結果とに基づいて、データ出力線１４から入力された読み出しデータの１ビットの誤り訂正または２ビット以上の誤り検出を行う。ここでは、ＥＣＣコードの比較結果は一致しているが、カウント数の比較結果は一致していないので、データ記憶領域３ａに記憶された読み出しデータに３ビット以上の誤りが発生していることを検出する。
【００５９】
すなわち、表１に示すように、誤り検出訂正回路８は、ＥＣＣコードの比較結果とカウント数の比較結果とが一致している場合、読み出しデータには誤りが発生していないことを検出する。また、ＥＣＣコードの比較結果が一致していない場合、カウント数の比較結果が一致しているか否かに関わらず、上記で説明したＥＣＣ回路の原理における数１および数２の式に基づいて読み出しデータの１ビットの誤り訂正または２ビットの誤り検出を行う。さらに、ＥＣＣコードの比較結果が一致しており、カウント数の比較結果が一致していない場合、読み出しデータに３ビット以上の誤りが発生していることを検出する。
【００６０】
【表１】
2005004288.tif 000003
【００６１】
なお、読み出しデータに３ビット以上の誤りが発生した場合、ＥＣＣコードの比較結果が一致しない場合もある。このような場合、３ビット以上の誤りであるが、表１に示すように、ＥＣＣ回路の原理における数１および数２の式に基づいて読み出しデータの１ビットの誤り訂正または２ビットの誤り検出を行う。すなわち、３ビット以上の誤りが発生しているにも関わらず、１ビットの誤り訂正または２ビットの誤りが発生していることを検出する。要するに、読み出しデータに誤りが発生していることは検出できる。
【００６２】
上記誤り検出訂正回路８は、データ出力線１４から入力された読み出しデータに誤りがなければそのデータを、読み出しデータに１ビットの誤りがあれば誤りの訂正を行ったデータを、Ｉ／Ｏ回路出力線２１を介してＩ／Ｏ回路２に送る。
また、誤り検出訂正回路８は、読み出しデータに２ビット以上の誤りがあれば当該データと、当該データが誤っていることを示す情報とをＩ／Ｏ回路出力線２１を介してＩ／Ｏ回路２に送る。そして、Ｉ／Ｏ回路２は、データ入出力線１０を介して、読み出したデータや誤りを示す情報をＣＰＵに送る。なお、本実施の形態では、読み出しデータに２ビット以上の誤りがあれば当該データと、当該データが誤っていることを示す情報とをＣＰＵに送る例を説明したが、これに限るものではなく、読み出しデータが誤っていることを示す情報のみをＣＰＵに送ってもよい。
【００６３】
また、誤り検出訂正回路８は、読み出しデータの誤りの発生を検出した場合、その読み出しデータが読み出されたデータ記憶領域３ａの対応する領域への書き込みを禁止する指令をＩ／Ｏ回路出力線２１を介してＩ／Ｏ回路２に送ることもできる。Ｉ／Ｏ回路２は、その情報をＣＰＵに送ると共に、ＣＰＵは、その情報に基づいてデータ記憶領域３ａにおけるいわゆる故障した領域への書き込みを禁止することができる。なお、上記誤り検出訂正回路８および上記Ｉ／Ｏ回路２が、特許請求の範囲における書き込み禁止手段に対応している。
【００６４】
以上に述べたように、本実施の形態に係る誤り検出回路１は、ＥＣＣコード生成回路４において、データ記憶領域３ａへの書き込みデータまたはデータ記憶領域３ａからの読み出しデータに基づいてＥＣＣコードを生成する。ＥＣＣコード比較回路６は、生成された書き込みデータに対するＥＣＣコードと、読み出しデータに対するＥＣＣコードとを比較する。誤り検出訂正回路８は、ＥＣＣコード比較回路６による比較結果が入力されると共に、その比較結果が一致しない場合、その比較結果に基づいて読み出しデータの１ビットの誤り訂正または２ビットの誤り検出を行う。
【００６５】
また、カウンタ回路５は、データ記憶領域３ａへの書き込みデータまたはデータ記憶領域３ａからの読み出しデータに対してカウント数を導出する。カウント数比較回路７は、導出された書き込みデータに対するカウント数と、読み出しデータに対するカウント数とを比較する。そして、誤り検出訂正回路８は、カウント数比較回路７による比較結果が入力されると共に、その比較結果が一致しない場合、ＥＣＣコード比較回路６による比較結果が一致する場合であっても、データ記憶領域３ａからの読み出しデータが３ビット以上誤っていることを検出する。
【００６６】
これにより、データ記憶領域３ａからの読み出しデータに３ビット以上の誤りが発生した場合であっても、比較的高い割合で読み出しデータに誤りが発生したことを検出することができる。それゆえ、読み出しデータの信頼性が向上する。
【００６７】
また、カウンタ回路５は、データ記憶領域３ａへの書き込みデータまたはデータ記憶領域３ａへの読み出しデータを、８ビットのブロック単位で、“１”のビットのカウントを行う。これにより、カウンタ回路５の回路構成を小さくすることができる。それゆえ、カウンタ回路５の部品点数を少なくすることができると共に、効率よく書き込みデータまたは読み出しデータの各ビットの“１”をカウントすることができる。
【００６８】
さらに、誤り検出訂正回路８は、データ記憶領域３ａからの読み出しデータの誤りが検出された場合、読み出しデータに対応するデータ記憶領域３ａへの書き込みデータの書き込みを禁止する指令をＣＰＵに送る。これにより、データ記憶領域３ａの故障した領域への書き込みを禁止することができる。それゆえ、データ記憶領域３ａの適切な利用を図ることができる。
【００６９】
なお、本実施の形態では、カウンタ回路５は、データ入力線１１から入力された書き込みデータまたはデータ出力線１４から入力された読み出しデータにおける“１”のビットのカウントを行う例を説明したが、これに限るものではなく、“０”のビットをカウントしてもよいことは勿論である。また、カウンタ回路５を用いる代わりに、書き込みデータまたは読み出しデータの各ビットの論理積（ＡＮＤ）もしくは論理和（ＯＲ）をとってもよい。さらに、書き込みデータまたは読み出しデータにハッシュ関数を適用することにより、メッセージ・ダイジェストを作成してもよい。要するに、書き込みデータと、読み出しデータとを比較可能なものであれば、いかなる構成でもよい。
【００７０】
また、本実施の形態では、カウンタ回路５は、０から９まで順にカウントし、９を超えると、この９をリセットして０からカウントを行う構成を説明したが、これに限るものではなく、例えば、０からＦまでカウントしてもよい。要するに、所定のカウント数までカウントする構成であればよく、フリップフロップの個数には制限されない。
【００７１】
また、本実施の形態では、ＥＣＣ回路の原理として、数１に基づいてＥＣＣコードを生成し、数２に基づいて誤りの訂正を行う例を説明したが、これに限るものではない。例えば、本実施の形態では、ＥＣＣコードの生成において、論理否定演算（ＮＯＴ）を用いているが、論理否定演算（ＮＯＴ）を用いなくてもＥＣＣコードを生成できる。要するに、１ビットの誤り訂正または２ビットの誤り検出を行うことができるＥＣＣ回路であれば、いかなる理論式に基づいてもよい。
【００７２】
また、本実施の形態では、書き込みデータまたは読み出しデータを、８ビットのブロック単位で“１”のビットのカウントを行う例を説明したが、これに限るものではない。例えば、４ビット、１６ビット、３２ビットまたは４０９６ビット（５１２バイト）などのブロック単位で“１”のビットのカウントを行ってもよいことは勿論である。
【００７３】
さらに、本実施の形態では、Ｉ／Ｏ回路２、ＥＣＣコード生成回路４、カウンタ回路５、ＥＣＣコード比較回路６、カウント数比較回路７および誤り検出訂正回路８をハードウェアで構成する例を説明したが、これに限るものではなく、ソフトウェアで構成してもよい。但し、ソフトウェアで構成した場合、装置内部の回路基板を縮小することはできるが、プログラムをメモリから読み出して実行するため、装置全体の速度は遅くなる。
【００７４】
すなわち、上記実施例の説明は、本発明を説明するためのものであって、特許請求の範囲に記載の発明を限定し、あるいは、減縮するように解すべきではない。また、本発明の各構成は上記実施例に限らず、特許請求の範囲に記載の権利範囲内で種々の変形が可能であることは勿論である。
【００７５】
【発明の効果】
以上のように、請求項１の発明に係る誤り検出回路は、記憶装置への書き込みデータまたは記憶装置からの読み出しデータに基づいてＥＣＣコードを生成するＥＣＣコード生成手段と、該ＥＣＣコード生成手段により生成された書き込みデータに対するＥＣＣコードと読み出しデータに対するＥＣＣコードとを比較するＥＣＣコード比較手段と、該ＥＣＣコード比較手段により比較された結果が入力されると共に、該比較結果が一致しない場合、該比較結果に基づいて読み出しデータの１ビットの誤り訂正または２ビットの誤り検出を行う誤り検出訂正手段とから成るＥＣＣ回路と、記憶装置への書き込みデータまたは記憶装置からの読み出しデータに対して所定の演算により所定の値を導出する演算手段と、該演算手段により導出された書き込みデータに対する導出値と読み出しデータに対する導出値とを比較する導出値比較手段とを備え、上記誤り検出訂正手段は、該導出値比較手段により比較された結果が入力されると共に、該比較結果が一致しない場合、上記ＥＣＣコード比較手段による比較結果が一致する場合であっても、記憶装置からの読み出しデータの３ビット以上の誤りを検出する構成である。
【００７６】
これにより、記憶装置からの読み出しデータに３ビット以上の誤りが発生した場合であっても、比較的高い割合で読み出しデータに誤りが発生したことを検出することができる。これらの結果、読み出しデータの信頼性が向上するという効果を奏する。
【００７７】
請求項２の発明に係る誤り検出回路は、請求項１記載の発明の構成において、上記演算手段は、記憶装置への書き込みデータまたは記憶装置からの読み出しデータの各ビットの１または０をカウントするカウンタ手段から構成される構成である。
【００７８】
これにより、書き込みデータに対するカウント数と読み出しデータに対するカウント数とが一致しない場合、書き込みデータに対するＥＣＣコードと読み出しデータに対するＥＣＣコードとが一致する場合であっても、記憶装置からの読み出しデータが３ビット以上誤っていることを検出することができる。これらの結果、データをカウントするだけの簡単な構成で３ビット以上の誤りの発生を検出することができるという効果を奏する。
【００７９】
請求項３の発明に係る誤り検出回路は、請求項２記載の発明の構成において、上記カウンタ手段は、所定のカウント数までカウントすると、該カウント数をリセットする構成である。
【００８０】
これにより、例えば、０から９まで順にカウントし、９を超えると、この９をリセットして初めから（０から）カウントを行うので、カウンタ手段の回路構成を小さくすることができる。これらの結果、カウンタ手段の部品点数を少なくすることができるという効果を奏する。
【００８１】
請求項４の発明に係る誤り検出回路は、請求項３記載の発明の構成において、上記カウンタ手段は、記憶装置への書き込みデータまたは記憶装置からの読み出しデータを所定のブロック単位で１または０をカウントする構成である。
【００８２】
これにより、カウンタ手段の回路構成を小さくすることができる。これらの結果、カウンタ手段の部品点数を少なくすることができると共に、効率よく書き込みデータまたは読み出しデータの各ビットの１または０をカウントすることができるという効果を奏する。
【００８３】
請求項５の発明に係る誤り検出回路は、請求項１ないし４何れか１項記載の発明の構成において、上記誤り検出訂正手段により記憶装置からの読み出しデータの誤りが検出された場合、該読み出しデータに対応する記憶装置の領域への書き込みデータの書き込みを禁止する書き込み禁止手段を備えた構成である。
【００８４】
これにより、記憶装置の故障した領域への書き込みを禁止することができる。
これらの結果、記憶装置の適切な利用を図ることができるという効果を奏する。
【図面の簡単な説明】
【図１】本発明の実施の一形態の誤り検出回路における電気的構成を示すブロック図である。
【図２】従来のＥＣＣ回路における電気的構成を示すブロック図である。
【符号の説明】
１  誤り検出回路
２  Ｉ／Ｏ回路（書き込み禁止手段）
３  記憶装置
４  ＥＣＣコード生成回路
５  カウンタ回路（演算手段）
６  ＥＣＣコード比較回路
７  カウント数比較回路（導出値比較手段）
８  誤り検出訂正回路（書き込み禁止手段）
【図１】
2005004288.tif 000004
【図２】
2005004288.tif 000005