(57)【要約】【課題】記憶容量を高い効率で利用すると共に、高い信頼性を有してデータを記憶することのできるデータ記憶装置を提供する。【解決手段】１つのデータが２ビット以上の所定のビット数からなる複数のメインデータＤＴと、メインデータＤＴの誤りを訂正可能な１つ又は複数の誤り訂正データＥＣと、メインデータＤＴ及び誤り訂正データＥＣの少なくとも１つに誤りがあるか否かを検出可能である１つの行誤り検出データＨＤと、からなる１つの行データセット１０を複数行備える。行データセット２０を構成する１つのデータの複数行に亘る集合である１つの列データセット２０に対して、少なくとも１つのデータに誤りがあるか否を検出可能な１つの列誤り検出データＶＤを、各列データセット２０に備える。【選択図】図２
2008084116.tif 000002
【特許請求の範囲】
【請求項１】
１つのデータが２ビット以上の所定のビット数からなる複数のメインデータと、
前記メインデータの誤りを訂正可能な１つ又は複数の誤り訂正データと、
前記メインデータ及び前記誤り訂正データの少なくとも１つに誤りがあるか否かを検出可能である１つの行誤り検出データと、からなる１つの行データセットを複数行備えると共に、
前記行データセットを構成する１つの前記データの複数行に亘る集合である１つの列データセットに対して、少なくとも１つの前記データに誤りがあるか否を検出可能な１つの列誤り検出データを、各列データセットに備えるデータ記憶装置。
【請求項２】
前記メインデータを１つの前記行データセットに３つ備える請求項１に記載のデータ記憶装置。
【請求項３】
前記誤り訂正データは、１つの前記行データセットの全ての前記メインデータの排他的論理和であり、当該行データセットに１つ備えられる請求項１又は２に記載のデータ記憶装置。
【請求項４】
前記誤り訂正データは、１つの前記行データセットの３つの前記メインデータのうちの２つの組合せのそれぞれの排他的論理和であり、当該行データセットに３つ備えられる請求項２に記載のデータ記憶装置。
【請求項５】
前記行誤り検出データは、１つの前記行データセットの前記メインデータ及び前記誤り訂正データを巡回符号方式で符号化したものである請求項１〜４の何れか一項に記載のデータ記憶装置。
【請求項６】
請求項１に記載のデータ記憶装置から、前記メインデータ、前記誤り訂正データ、前記行誤り検出データ、前記列誤り検出データの各データを読み出す読み出し工程と、
前記行誤り検出データ及び前記列誤り検出データに基づいて、誤りのあるデータを検出する誤り検出工程と、
前記メインデータの誤りが検出された場合に、当該メインデータが属する前記行データセットの前記誤り訂正データに基づいて、当該メインデータを訂正する訂正工程と、を備えるデータ読み出し方法。
【請求項７】
前記訂正工程は、誤りが検出された前記メインデータとは別の前記メインデータと、前記誤り訂正データとに基づいて、誤りが検出された前記メインデータを訂正する請求項６に記載のデータ読み出し方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶されたデータの読み取り時にデータの誤りを検出可能、且つ誤りが検出された場合にデータを復元することが可能な方式で、データを記憶するデータ記憶装置に関する。また、このデータ記憶装置からのデータの読み出し方法に関する。
【背景技術】
【０００２】
不揮発性のメモリなどのデータ記憶装置に記憶された所定のデータを制御装置などが読み出して使用することがある。このとき、メモリの不良などで読み出したデータに誤りがあると、正しい制御が損なわれる。このため、データがメモリに記憶される際には、信頼性を向上するために種々の対策が講じられている。
下記に出典を示す特許文献１には、このような対策の一例が示されている。これによれば、メモリは、３以上の領域に分割され、各領域には同一の情報が書き込まれる。つまり、少なくとも３以上に多重化して記憶される。そして、各領域のデータが全て同一であるか否かがチェックされる。同一でない場合には、多数決により、正しいデータが決定され、正しいデータと異なるデータが修正される。
【０００３】
【特許文献１】特開昭６３−４９８６０号公報（第２頁、第１、２図等参照）
【発明の開示】
【発明が解決しようとする課題】
【０００４】
異なる領域に記憶された３つ以上（例えば３つ）の同一データの内の過半数（例えば２つ）が同時に誤りデータとなる可能性は非常に低いと考えられる。従って、特許文献１の方法を用いれば、データの信頼性は大きく向上する。また、正しいデータが明らかであるから、誤ったデータの復元も容易である。
しかし、同一のデータを３つ以上の領域に記憶させる必要があるので、メモリなどの記憶装置の実効的な容量は１／３以下となってしまい、利用効率が低下する。
【０００５】
本発明は、このような課題に鑑みて創案されたものである。本発明の目的は、記憶容量を高い効率で利用すると共に、高い信頼性を有してデータを記憶することのできるデータ記憶装置を提供することにある。また、本発明は、当該データ記憶装置を用いて、高い信頼性を有して、データを読み出すことのできるデータ読み出し方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するための本発明に係るデータ記憶装置は、以下のように構成されることを特徴とする。
１つのデータが２ビット以上の所定のビット数からなる複数のメインデータと、
前記メインデータの誤りを訂正可能な１つ又は複数の誤り訂正データと、
前記メインデータ及び前記誤り訂正データの少なくとも１つに誤りがあるか否かを検出可能である１つの行誤り検出データと、からなる１つの行データセットを複数行備える。
さらに、前記行データセットを構成する１つの前記データの複数行に亘る集合である１つの列データセットに対して、少なくとも１つの前記データに誤りがあるか否を検出可能な１つの列誤り検出データを、各列データセットに備える。
【０００７】
この特徴構成によれば、本発明のデータ記憶装置から、データを読み出す際に、誤りのあるデータを容易に検出することができる。第１に、行誤り検出データに基づいて、誤ったデータの存在する行データセットを検出することができる。第２に、列誤り検出データに基づいて、誤ったデータの存在する列データセットを検出することができる。第３に、検出した行データセットと、列データセットとに基づいて、誤ったデータを検出することができる。
さらに、本特徴構成によれば、誤り訂正データを用いて、検出された誤りのあるデータを訂正することができる。従って、本発明のデータ記憶装置は、高い信頼性を有してデータを記憶することができる。
行データセットには、複数のメインデータと、１つ又は複数の誤り訂正データと、１つの行誤り検出データとが含まれる。メインデータ及び誤り訂正データが、各２つずつとすると、行データセットには、５つのデータが含まれる。この内、２つはメインデータであるから、データ記憶装置の容量の概ね２／５を利用することができる。従って、上述したように３つのデータを多重化する場合に比べて、高い利用効率で記憶容量を利用することができる。
【０００８】
また、本発明に係るデータ記憶装置は、前記メインデータを１つの前記行データセットに３つ備えることを特徴とする。
【０００９】
１つの行データセットに多くのメインデータが含まれた場合、複数のメインデータに誤りが発生する可能性が高くなり、信頼性が低下する可能性がある。一方メインデータが２つであると、データ記憶装置の利用効率が低くなる。つまり、１つの行データセットに含まれるメインデータの数は、信頼性と、利用効率との間でトレードオフの関係にある。本特徴構成のように、メインデータを３つとすると、信頼性と、利用効率との間のバランスがとれ、実用的である。
【００１０】
また、本発明に係るデータ記憶装置は、前記誤り訂正データが、１つの前記行データセットの全ての前記メインデータの排他的論理和であり、当該行データセットに１つ備えられることを特徴とする。
【００１１】
排他的論理和は、交換の法則、結合の法則を満足し、複数のデータの演算順序等に拘らず同じ結果が得られる演算子である。従って、本特徴構成によれば、１つの行データセットの全てのメインデータの演算結果を容易に得ることができる。また、本特徴構成によれば、１つの行データセットに誤り訂正データが１つ備えられる。従って、例えば、１つの行データセットに３つのメインデータが備えられる場合、データ記憶装置の記憶容量の３／５を利用することができる。つまり、データ記憶装置は、高い利用効率でメインデータを記憶することができる。
【００１２】
また、本発明のデータ記憶装置は、１つの前記行データセットに前記メインデータが３つ備えられる場合に、以下のように前記誤り訂正データを備えることを特徴とする。つまり、前記誤り訂正データが、１つの前記行データセットの３つの前記メインデータのうちの２つの組合せのそれぞれの排他的論理和であり、当該行データセットに３つ備えられることを特徴とする。
【００１３】
この特徴構成によれば、１つのメインデータに対して、２つの異なる誤り訂正データを備える。別の観点では、１つのメインデータが他の２つのメインデータの誤り訂正データに関連する。従って、３つの内の２つのメインデータに誤りが生じても、これら２つのメインデータを訂正することができる。つまり、残った１つのメインデータと、この１つのメインデータが関連する２つの誤り訂正データを利用して、誤りを生じている２つのメインデータを訂正することができる。従って、データ記憶装置は、高い信頼性を有することとなる。
本構成の場合、１つの行データセットには、３つのメインデータと、３つの誤り訂正データと、１つの行誤り検出データとの７つのデータが含まれる。７つの内、３つがメインデータであるから、データ記憶装置の容量の概ね３／７を利用することができる。従って、上述したように３つのデータを多重化する場合に比べて、高い利用効率で記憶容量を利用することができる。
【００１４】
また、本発明のデータ記憶装置は、前記行誤り検出データが、１つの前記行データセットの前記メインデータ及び前記誤り訂正データを巡回符号方式で符号化したものであることを特徴とする。
【００１５】
例えば、行誤り検出データは、巡回符号方式の他、チェックサムやパリティなどの方式を用いて符合化することもできる。しかし、チェックサムやパリティは、複数のデータが互いに反対論理への誤りを生じた場合などに、検出漏れが発生する可能性を有している。それに対し、巡回符号方式は、このような問題を生じる可能性が低い。従って、信頼性の高いデータ記憶装置を提供することができる。
また、前記行誤り検出データに加え、前記列誤り検出データを巡回符号方式で符号化してもよい。さらに、信頼性の高いデータ記憶装置を提供することができる。
【００１６】
また、本発明に係るデータ記憶装置からデータを読み出すデータ読み出し方法は、以下の工程を備えることを特徴とする。
即ち、当該データ読み出し方法は、
前記メインデータ、前記誤り訂正データ、前記行誤り検出データ、前記列誤り検出データの各データを読み出す読み出し工程と、
前記行誤り検出データ及び前記列誤り検出データに基づいて、誤りのあるデータを検出する誤り検出工程と、
前記メインデータの誤りが検出された場合に、当該メインデータが属する前記行データセットの前記誤り訂正データに基づいて、当該メインデータを訂正する訂正工程と、を備える。
【００１７】
このデータ読み出し方法によれば、誤りのあるデータを容易に検出することができる。第１に、行誤り検出データに基づいて、誤ったデータの存在する行データセットを検出することができる。第２に、列誤り検出データに基づいて、誤ったデータの存在する列データセットを検出することができる。第３に、検出した行データセットと、列データセットとに基づいて、誤ったデータを検出することができる。
さらに、誤り訂正データを用いて、検出された誤りのあるデータを訂正することができる。従って、高い信頼性を有して、データを読み出すことのできるデータ読み出し方法を提供することができる。
【００１８】
また、本発明に係るデータ読み出し方法は、前記訂正工程が、誤りが検出された前記メインデータとは別の前記メインデータと、前記誤り訂正データとに基づいて、誤りが検出された前記メインデータを訂正することを特徴とする。
【００１９】
１つの行データセットの中で、複数のメインデータに誤りが発生する可能性は低い。従って、誤りのあるメインデータ以外のメインデータと、誤り訂正データとに基づいて、訂正ができると信頼性の高い読み出しが可能となる。
尚、これら本発明に係るデータ読み出し方法は、上述したデータ記憶装置に関する作用効果、及び全ての追加的特徴とその作用効果を備えることができるものである。
【発明を実施するための最良の形態】
【００２０】
以下、本発明の実施形態を図面に基づいて説明する。図１は、本発明のデータ記憶装置が使用される制御システムの一例を模式的に示すブロック図である。
図に示すように、この制御システムは、制御手段としてのマイクロコンピュータ２と、本発明のデータ記憶装置としてのＥ2 ＰＲＯＭ１とを有する。マイクロコンピュータ２は、ＣＰＵ（ＣＰＵコア）３と、ＳＲＡＭ４とを備えている。ＳＲＡＭ４は、ＣＰＵ３による種々の演算のワークエリアとして用いられる。ＳＲＡＭ４は、演算途中の結果の他、一時的にプログラムや、プログラムに用いる各種パラメータを記憶する。
【００２１】
Ｅ2ＰＲＯＭ１は、プログラムや、プログラムに用いるパラメータを記憶している。一般的に、ＳＲＡＭやＤＲＡＭなどの揮発性メモリは、高速にアクセスすることができるが、バックアップ電源無しではデータを保持することができない。一方、Ｅ2ＰＲＯＭなどのＲＯＭや、フラッシュメモリなどの不揮発性メモリは、ＳＲＡＭやＤＲＡＭよりもアクセス速度が落ちるが、バックアップ電源無しでデータを保持することができる。
【００２２】
マイクロコンピュータ２は、プログラムを格納するための不揮発性メモリを内蔵するが、その容量には限りがある。また、プログラムは共通でも、用いるパラメータが被制御対象物によって異なる場合もある。従って、多品種展開が容易などの利用から、マイクロコンピュータ２に内蔵されないＥ2 ＰＲＯＭ１に一部のプログラムや、パラメータなどが記憶される。
Ｅ2ＰＲＯＭ１に記憶されたデータを都度マイクロコンピュータ２が読み出すと、マイクロコンピュータ２は頻繁に外部読出しプロセスを実行する必要がある。これにより、プログラムの実行速度が低下する可能性がある。そこで、マイクロコンピュータ２は、電源投入後の初期化時などに、Ｅ2 ＰＲＯＭ１に記憶されたデータを内蔵するＳＲＡＭ４に転記する。
【００２３】
このようなシステムが利用される例としては、自動車のセンサ制御システム、ブレーキ制御システム、エンジン制御システム、安全装置制御システムなどがある。また、エレベータ、工場用工作機械などに利用される場合もある。
【００２４】
〔第１実施形態〕
図２は、Ｅ2 ＰＲＯＭ（データ記憶装置）に記憶されるデータのデータマップを示す説明図である。
図中、ＤＴはメインデータ、ＥＣは誤り訂正データ、ＨＤは行誤り検出データ、ＶＤは列誤り検出データを示す。各データの添え字（末尾の番号）は、各データの識別番号を示す。本実施形態では、３つのメインデータＤＴ、１つの誤り訂正データＥＣ、１つの行誤り検出データＨＤ、の５つのデータで、１つの行データセット１０を構成する例を示している。行データセット１０は、複数行（ｎ行）備えられる。複数の行データセット１０に亘る１つのデータごとの集合が列データセット２０である。
【００２５】
メインデータＤＴは、１つのデータが２ビット以上の所定のビット数からなり、１つの行データセット１０に複数のメインデータＤＴが含まれる。誤り訂正データＥＣは、メインデータＤＴの誤りを訂正可能なデータである。誤り訂正データＥＣも、メインデータＤＴと同一の所定のビット数からなる。本実施形態では、１つの行データセット１０に１つであるが、複数備えられてもよい。行誤り検出データＨＤは、１つの行データセット１０において、３つのメインデータＤＴ及び誤り訂正データＥＣの少なくとも１つに誤りがあるか否かを検出可能なデータである。行誤り検出データＨＤは、メインデータＤＴと同一の所定のビット数からなり、１つの行データセット１０に１つ備えられる。
【００２６】
列誤り検出データＶＤは、１つの列データセット２０のデータの内の少なくとも１つのデータに誤りがあるか否かを検出可能なデータである。１つの列データセット２０に１つの列誤り検出データＶＤが備えられる。列誤り検出データＶＤの添え字（末尾の番号）は、識別番号を示す。行誤り検出データＶＤも、メインデータＤＴと同一の所定のビット数からなる。
【００２７】
図２に示した例では、全ての行データセット１０に亘って、列データセット２０が設けられる。従って、行データセット１０を構成する１つのデータごとに１つの列誤り検出データＶＤが備えられる。
しかし、この構成に限定されず、例えば図３に示すように、所定の行データセット１０に亘って、列データセット２０ａを設けてもよい。図３の構成では、Ｅ2 ＰＲＯＭ１の容量の内、列誤り検出データＶＤが示す割合が増加するため、メインデータＤＴの割合が相対的に低下する。従って、Ｅ2 ＰＲＯＭ１の利用効率はやや低下するが、少ないデータ数に対して列誤り検出データＶＤが設けられるので、信頼性は向上する。
行データセット１０の所定の行数は、利用効率や信頼性とのバランスで適宜決定することができる。図３には、理解を容易にするために、３行で列データセットを構成する例を示している。この例において、行データセット１０は、ｎ行（ｎ＝３の倍数）である。列誤り検出データＶＤは、行検出データ１０を構成する１つのデータに対する列データセット２０の分割数に合わせて、各ｍ個（ｍ＝ｎ／３）である。
【００２８】
誤り訂正データＥＣは、図２のように１つの行データセット１０に１つ備えられる場合には、１つの行データセット１０の全てのメインデータＤＴの排他的論理和である。例えば、１つのデータの所定ビット数が８ビットで、メインデータＤＴ１１がＤ６（Hex）、ＤＴ１２がＡＣ（Hex）、ＤＴ１３が６７（Hex）であれば、誤り訂正データＥＣ１は、１Ｄ（Hex）となる。
【００２９】
行誤り検出データＨＤは、１つの行データセット１０のメインデータＤＴ及び誤り訂正データＥＣを巡回符号方式（ＣＲＣ）で符号化したものである。ＣＲＣに限らず、チェックサム方式や、パリティ方式、ハミング符号方式などによって、符号化してもよい。
【００３０】
図４〜図８は、マイクロコンピュータ２がＥ2 ＰＲＰＭ１からデータを読み出す際に、データの誤りを検出する例を示している。誤り検出の詳細な手順については後述するが、まず、各例について簡単に説明する。
【００３１】
図４に示す例では、メインデータＤＴの１つであるＤＴ１２が誤りデータである。この場合、メインデータＤＴ１２を含む行データセット１１の行誤り検出データＨＤ１と、メインデータＤＴ１２を含む列データセット２２に対する列誤り検出データＶＤ２とによって、メインデータＤＴ１２の誤りが検出される。
メインデータＤＴ１２の誤りは、誤り訂正データＥＣ１によって訂正可能である。つまり、誤りが検出されたメインデータＤＴ１２とは別のメインデータＤＴ１１及びＤＴ１３と、誤り訂正データＥＣ１との排他的論理和を計算することによって、メインデータＤＴ１２を算出することができる。
【００３２】
図５に示す例では、誤り訂正データＥＣ１が誤りデータである。この場合、誤り訂正データＥＣ１を含む行データセット１１の行誤り検出データＨＤ１と、誤り訂正データＥＣ１を含む列データセット２４に対する列誤り検出データＶＤ４とによって、誤り訂正データＥＣ１の誤りが検出される。
誤り訂正データＥＣ１の誤りは、メインデータＤＴ１１、ＤＴ１２、ＤＴ１３の排他的論理和を再計算することによって訂正可能である。
【００３３】
図６に示す例では、行誤り検出データＨＤ１が誤りデータである。この場合、行誤り検出データＨＤ１を含む行データセット１１の行誤り検出データＨＤ１と、行誤り検出データＨＤ１を含む列データセット２５に対する列誤り検出データＶＤ５とによって、行誤り検出データＨＤ１の誤りが検出される。
行誤り検出データＨＤ１の誤りは、メインデータＤＴ１１、ＤＴ１２、ＤＴ１３、誤り訂正データＥＣ１からＣＲＣを再計算することによって訂正可能である。
【００３４】
図７に示す例では、メインデータＤＴ１２と、ＤＴ３２とが誤りデータである。図４と同様に、行誤り検出データＨＤ１と、列誤り検出データＶＤ２とによって、メインデータＤＴ１２の誤りが検出される。また、行誤り検出データＨＤ３と、列誤り検出データＶＤ２とによって、メインデータＤＴ３２の誤りが検出される。
本例の場合、同一の列データセット２２に複数の誤りデータを含んでいる。しかし、１つの行データセット１０（１１及び１３）には、それぞれ１つの誤りデータしか含まれない。従って、２つの誤りデータ（ＤＴ１２、ＤＴ３２）は、それぞれの行データセット１０の誤り訂正データ（ＥＣ１、ＥＣ３）によって訂正可能である。
また、図７の類型で、同一の列データセット２０において３つ以上のデータに誤りが生じた場合にも、同一の行データセット１０に２つ以上の誤りが生じなければ訂正可能である。
【００３５】
図８に示す例では、メインデータＤＴ１１と、ＤＴ３３とが誤りデータである。行誤り検出データＨＤ１と、列誤り検出データＶＤ１とによって、メインデータＤＴ１１の誤りが検出される。また、行誤り検出データＨＤ３と、列誤り検出データＶＤ３とによって、メインデータＤＴ３３の誤りが検出される。
本例の場合も、同一の行データセット１０（１１及び１３）はそれぞれ１つの誤りデータしか含まれない。従って、メインデータＤＴ１１の誤りは、誤り訂正データＥＣ１によって訂正可能である。メインデータＤＴ３３の誤りは、誤り訂正データＥＣ３によって訂正可能である。
尚、図８の類型で、メインデータＤＴ１１と、誤り訂正データＥＣ３とが誤りデータである場合にも勿論訂正可能である。また、２つのメインデータＤＴ１１、ＤＴ３３と、誤り訂正データＥＣ２とが誤りデータである場合など、３つの列データセット２０に誤りが生じても訂正可能である。
このように複数の列データセット２０に誤りが生じた場合にも、同一の行データセット１０に２つ以上の誤りが生じなければ訂正可能である。
【００３６】
また、列誤り検出データＶＤが誤りを検出し、全ての行データセット１０において誤りが検出されなければ、列誤り検出データＶＤが誤っていることが検出可能である。この場合は、該当する列データセット２０からＣＲＣを再計算することによって、列誤り検出データＶＤを訂正することができる。
このように、本実施形態のＥ2 ＰＲＯＭ１からデータを読み出す場合には、同一の行データセットにおいて２つ以上のデータに誤りが生じなければ、誤りデータの検出及び訂正が可能である。
【００３７】
尚、上記においては、メインデータＤＴの他、誤り訂正データＥＣと、行誤り検出データＨＤと、列誤り検出データＶＤとを訂正すると説明した。しかし、誤り訂正データＥＣと、行誤り検出データＨＤと、列誤り検出データＶＤとは必ずしも訂正する必要はない。これらのデータは、誤りの検出又は訂正を目的とするものである。マイクロコンピュータ２による制御には、メインデータＤＴが用いられる。従って、メインデータＤＴが誤りなく読み出せることが保証できれば充分であり、誤りの訂正はメインデータＤＴに対してのみ実施されてもよい。
但し、データ記憶装置（Ｅ2 ＰＲＯＭ１やフラッシュメモリなど）が基板上で書き換え可能であるような場合には、これらのデータを訂正して完全なデータをデータ記憶装置に書き戻すと信頼性が向上する。
【００３８】
以下、図９〜図１３のフローチャートを利用して、Ｅ2 ＰＲＯＭ１（データ記憶装置）からデータを読み出す手順を説明する。本実施形態では、図２に示したようなデータマップを有する場合を例として説明する。
図９に示すように、マイクロコンピュータ２は、Ｅ2 ＰＲＯＭ１から、メインデータＤＴ、誤り訂正データＥＣ、行誤り検出データＨＤ、列誤り検出データＶＤの各データを読み出す（＃１、読み出し工程）。マイクロコンピュータ２は、全てのデータを読み出すと、次に誤り検出工程（＃２〜＃３０）を実行する。
【００３９】
マイクロコンピュータ２は、まず、行誤り検出データＨＤの誤り検出を行う（列誤り検出工程、又は列誤り検出工程１）。全ての行誤り検出データＨＤｉ（ＨＤ１〜ＨＤｎ）に対して、巡回符号化が実施され、列誤り検出データＶＤ５に相当するＣ＿ＶＤ５が算出される（＃２）。次に、算出されたＣ＿ＶＤ５と、列誤り検出データＶＤ５とが一致しているか否かが判定される（＃３）。一致していなければ、列誤り検出レジスタＶＲＥＧに、列番号５が記録される（＃４）。
【００４０】
マイクロコンピュータ２は、次に、各行データセット１０を構成するデータの誤りを検出する（＃１０）。
マイクロコンピュータ２は、行データセット１０の行番号ｉを１にセットする（＃１１）。そして、行データセット１１（図２参照）のメインデータＤＴ１１、ＤＴ１２、ＤＴ１３、誤り訂正データＥＣ１に対して巡回符号化が実施され、行誤り検出データＨＤ１に相当するＣ＿ＨＤ１が算出される（＃１２）。次に、算出されたＣ＿ＨＤ１と、列誤り検出データＨＤ１とが一致しているか否かが判定される（＃１３）。一致していなければ、行誤り検出レジスタＨＲＥＧに、行番号ｉ（この場合は１）が記録される（＃１４）。
その後、行番号ｉがインクリメントされ（＃１５）、行番号がｎになるまで（＃１６）処理＃１２〜１６が繰り返され、全ての行データセット１０がチェックされる（＃１０、行誤り検出工程）。
【００４１】
マイクロコンピュータ２は、次に、行誤り検出データＨＤ以外の各列データセット２０を構成するデータの誤りを検出する（＃２０、列誤り検出工程、又は列誤り検出工程２）。
図１０に示すように、まず、全ての１列目のメインデータＤＴｉ１（ＤＴ１１〜ＤＴｎ１）に対して、巡回符号化が実施され、列誤り検出データＶＤ１に相当するＣ＿ＶＤ１が算出される（＃２１ａ）。次に、算出されたＣ＿ＶＤ１と、列誤り検出データＶＤ１とが一致しているか否かが判定される（＃２１ｂ）。一致していなければ、列誤り検出レジスタＶＲＥＧに、列番号１が記録される（＃２１ｃ）。
以下、全ての２列目のメインデータＤＴｉ２（ＤＴ１２〜ＤＴｎ２）、全ての３列目のメインデータＤＴｉ３（ＤＴ１３〜ＤＴｎ３）、全ての誤り訂正データＥＣｉ（ＥＣ１〜ＥＣｎ）に対しても、処理＃２１（＃２１ａ〜＃２１ｃ）と同様の誤り検出が実施される（＃２３、＃２５、＃２７）。
【００４２】
上述したように、誤ったデータの存在する行データセット１０と列データセット２０が、行誤り検出データＨＤ及び列誤り検出データＶＤに基づいて検出される。そして、図４〜図８を利用して説明したように、誤りデータ（ＥＤＡＴＡ）が特定される（＃３０）。
【００４３】
誤りデータＥＤＡＴＡが検出されると、マイクロコンピュータ２は誤りデータＥＤＡＴＡを訂正する訂正工程（＃４０〜＃８０）を実行する。
図１１に示すように、まず、１つの行データセット１０に誤りデータＥＤＡＴＡが１つ以下であるか否かが判定される（＃４０）。上述したように、１つの行データセット１０に２つ以上の誤りデータＥＤＡＴＡが存在すると、訂正できない。従って、マイクロコンピュータ２は、読み取り不良フラグを出力する（＃９２）。このフラグにより、マイクロコンピュータ２や、マイクロコンピュータ２のさらに上位のシステムは、Ｅ2 ＰＲＯＭエラーなどの報知出力を行うことができる。
【００４４】
〔メインデータの訂正〕
誤りデータＥＤＡＴＡが、１つの行データセットに１つ以下であると、誤りデータＥＤＡＴＡの訂正処理が実施される。まず、誤りデータＥＤＡＴＡが、メインデータＤＴであるか否かが判定され（＃５１）、メインデータＤＴである場合には、以下のように訂正される。
誤りデータＥＤＡＴＡが、１列目のメインデータＤＴｉ１であった場合には、当該メインデータＤＴｉ１とは別のメインデータＤＴｉ２及びＤＴｉ３と、誤り訂正データＥＣｉとに基づいて、当該メインデータＤＴｉ１が訂正される。具体的には、メインデータＤＴｉ２とＤＴｉ３と誤り訂正データＥＣｉとの排他的論理和を演算することによって、メインデータＤＴｉ１が訂正される（＃５２）。
上述したように、ＤＴ１１がＤ６（Hex）、ＤＴ１２がＡＣ（Hex）、ＤＴ１３が６７（Hex）であれば、誤り訂正データＥＣ１は、１Ｄ（Hex）である。ここで、ＤＴ１１がＤ６（Hex）以外の値に誤っていた場合、下式(1)によって、正しいＤＴ１１を算出することができる。
【００４５】
ＤＴ１１＝ＤＴ１２＾ＤＴ１３＾ＥＣ１＝ＡＣ＾６７＾１Ｄ＝Ｄ６  (1)
【００４６】
誤りデータＥＤＡＴＡが、２列目のメインデータＤＴｉ２であった場合や、３列目のメインデータＤＴｉ３であった場合も同様である（＃５２）。
【００４７】
メインデータＤＴの訂正が完了すると、訂正されたメインデータＤＴの検算が行われる。行データセット１０の行番号をｉ（＝１〜ｎ）、３つのメインデータＤＴを識別する列番号をｊ（＝１〜３）として、以下にこの検算について説明する。ここで、訂正されたメインデータは、ＤＴｉｊである。
まず、メインデータＤＴｉｊを含む行データセット１０に対して巡回符号化が実施され、行誤り検出データＨＤｉに対応するＣ＿ＨＤｉが算出される（＃５３）。また、当該メインデータＤＴｉｊを含む列データセット２０に対して巡回符号化が実施され、列誤り検出データＶＤｊに対応するＶ＿ＨＤｊが算出される（＃５３）。
次に、算出されたＣ＿ＨＤｉと行誤り検出データＨＤｉとの一致、算出されたＣ＿ＶＤｊと列誤り検出データＶＤｊとの一致が判定される。これらが共に一致した場合には、メインデータＤＴｉｊの訂正が適正に行われたと判定される（＃５４）。一致しなかった場合には、訂正が失敗したと判定され（＃５４）、マイクロコンピュータ２は、読み取り不良フラグを出力する（＃９２）。
【００４８】
訂正が適正に行われたと判定されると（＃５４）、全ての誤りデータＥＤＡＴＡの訂正が完了したか否かが判定される（＃８０）。完了していれば、マイクロコンピュータ２は、読み取りが正常に終了したことを示すフラグを出力し（＃９１）、データの読み出し処理を終了する。訂正が必要な誤りデータＥＤＡＴＡがまだ存在する場合には、処理＃５１に戻って訂正工程を続行する。
【００４９】
〔誤り訂正データの訂正〕
処理＃５１において、誤りデータＥＤＡＴＡがメインデータＤＴではないと判断された場合、＄２経由で図１２に示す処理が実行される。まず、誤りデータＥＤＡＴＡが、誤り訂正データＥＣであるか否かが判定される（＃６１）。誤りデータＥＤＡＴＡが、誤り訂正データＥＣであった場合には、当該行データセット１０の３つのメインデータＤＴｉから、誤り訂正データＥＣｉが再計算される（＃６２）。
【００５０】
次に、訂正された誤り訂正データＥＣｉの検算が行われる。まず、当該行データセット１０の３つのメインデータＤＴｉと、再計算した誤り訂正データＥＣｉとに対して、巡回符号化が実施され、Ｃ＿ＨＤｉが算出される（＃６３）。また、当該誤り訂正データＥＣｉを含む列データセット２０に対して、巡回符号化の演算が施され、Ｃ＿ＶＤ４が算出される（＃６３）。
次に、算出されたＣ＿ＨＤｉと行誤り検出データＨＤｉとの一致、算出されたＣ＿ＶＤ４と列誤り検出データＶＤ４との一致が判定される。これらが共に一致した場合には、メインデータＤＴｉの訂正が適正に行われたと判定される（＃６４）。一致しなかった場合には、訂正が失敗したと判定され（＃６４）、マイクロコンピュータ２は、読み取り不良フラグを出力する（＄５経由で図１１の＃９２へ）。
【００５１】
訂正が適正に行われたと判定されると（＃６４）、全ての誤りデータＥＤＡＴＡの訂正が完了したか否かが判定される（＄４経由で図１１の＃８０へ）。完了していれば、マイクロコンピュータ２は、読み取りが正常に終了したことを示すフラグを出力し（＃９１）、データの読み出し処理を終了する。訂正が必要な誤りデータＥＤＡＴＡがまだ存在する場合には、処理＃５１に戻って訂正工程を続行する。
【００５２】
〔行誤り検出データの訂正〕
処理＃６１において、誤りデータＥＤＡＴＡが誤り訂正データＥＣではないと判断された場合、＄３経由で図１３に示す処理が実行される。誤りデータＥＤＡＴＡは、メインデータＤＴでもなく、誤り訂正データＥＣでもないので、行誤り検出データＨＤである。
【００５３】
まず、図１０に示した処理の結果、即ち、列誤り検出データＶＤ１〜４の判定結果が格納されたレジスタＶＲＥＧを参照する。そして、レジスタＶＲＥＧに１〜４が未格納であることを確認する（＃７１）。レジスタＶＲＥＧに１〜４が格納されていると、メインデータＤＴ及び誤り訂正データＥＣの何れかにも誤りがある。この場合には、行誤り検出データＨＤを訂正することが困難である。
【００５４】
例えば、第ｕ行の行誤り検出データＨＤｕと、第ｖ行の行誤り検出データＨＤｖとが不一致であり、列誤り検出データＶＤ２が不一致であったとする。この時、第ｕ行のメインデータＤＴｕ２と、行誤り検出データＨＤｕとの何れかが誤りデータＥＤＡＴＡである。また、第ｖ行のメインデータＤＴｖ２と、行誤り検出データＨＤｖとの何れかが誤りデータＥＤＡＴＡである。列誤り検出データＶＤ２が不一致であるので、一方のメインデータＤＴは誤りデータＥＤＡＴＡである。しかし、行誤り検出データＨＤの一方も誤りデータＥＤＡＴＡであるから、行誤り検出データＨＤと列誤り検出データＶＤとによる検出結果のみによって誤りデータＥＤＡＴＡを特定することができない。
【００５５】
何れかが誤りデータＥＤＡＴＡであると仮定して、訂正を実施し、検算を行うことで誤りデータＥＤＡＴＡを特定し、訂正することは可能である。しかし、このような組み合わせがさらに多くなると、仮定を伴うこの方法は現実的ではない。
従って、このような場合には、マイクロコンピュータ２は、読み取り不良フラグを出力する（＄５経由で図１１の＃９２へ）。
【００５６】
但し、列誤り検出データＶＤ４のみが不一致である場合には、誤りがあるのは誤り訂正データＥＣであり、メインデータＤＴには誤りが無い。従って、マイクロコンピュータ２は、メインデータＤＴを利用して、通常の制御を行ってもよい。この時、訂正不可能な誤りデータＥＤＡＴＡを有したままであるので、警告フラグを出力する（不図示）などの処理を行ってもよい。
【００５７】
尚、処理＃７１の評価は、図９に示した処理＃２０と＃３０との間に実施してもよい。つまり、訂正不可能な誤りデータＥＤＡＴＡが存在するか否かを訂正工程の実施前に判定してもよい。
また、列誤り検出工程１（＃２〜＃４）において、列誤り検出データＶＤ５が不一致であることを検出した後、先に列誤り検出工程２（＃２０）を実施してもよい。列誤り検出データＶＤ５が不一致であり、列誤り検出データＶＤ１〜ＶＤ４の何れか１つ以上が不一致であれば、行誤り検出データＨＤを訂正することが困難であることが早期に判定可能である。特に、列誤り検出データＶＤ１〜ＶＤ３の何れか１つ以上が不一致であれば、直ちに読み取り不良フラグが出力されてもよい。
【００５８】
処理＃７１により、メインデータＤＴ、誤り訂正データＥＣに誤りがないと判定された場合には、行誤り検出データＨＤの訂正が可能である。しかし、より精確さを期すために、当該行データセット１０の３つのメインデータＤＴｉｊと、誤り訂正データＥＣｉとの関係が正しいか否かがチェックされる。まず、当該行データセット１０のメインデータＤＴｉ１、ＤＴｉ２、ＤＴｉ３の排他的論理和Ｃ＿ＥＣｉが算出される（＃７２）。そして、算出されたＣ＿ＥＣｉと、当該行データセット１０の誤り訂正データＥＣｉとの一致が確認される（＃７３）。不一致の場合には、行誤り検出データＨＤｉを訂正することができないので、読み取り不良フラグが出力される（＄５経由で図１１の＃９２へ）。
【００５９】
一致した場合には、当該行データセット１０の３つのメインデータＤＴｉ１、ＤＴｉ２、ＤＴｉ３と、誤り訂正データＥＣｉとに対して、巡回符号化が実施され（＃７４）、行誤り検出データＨＤｉが訂正される。
その後、訂正された行誤り検出データＨＤｉの検算が行われる。まず、訂正された行誤り検出データＨＤｉを用いて、列データセット２５に対して巡回符号化が実施され、Ｃ＿ＶＤ５が算出される（＃７５）。そして、この算出結果Ｃ＿ＶＤ５と、列誤り検出データＶＤ５との一致が確認される（＃７６）。不一致であれば、訂正が失敗していると判定され（＃７６）、読み取り不良フラグが出力される（＄５経由で図１１の＃９２へ）。一致していれば、訂正が適正に行われたと判定される（＃７６）。そして、全ての誤りデータＥＤＡＴＡの訂正が完了したか否かが判定される（＄４経由で図１１の＃８０へ）。以下、上述した手順と同様である。
【００６０】
以上、本発明によれば、図９〜図１３のフローチャートに基づいて詳述したように、図４〜図８に示す各種のデータ誤りを良好に検出し、訂正可能である。この手順は、一例であり、本発明の趣旨を逸脱しない範囲で適宜改変可能である。そして、そのような改変も本発明の技術的範囲に属するものである。
例えば、誤り検出工程において、列誤り検出データＶＤ１〜ＶＤ５の検証を行う前に行誤り検出データＨＤ１〜ＨＤｎが全て正常であることが確認できた場合には、直ちに読み取り正常終了フラグ（図１１＃９１）を出力するようにしてもよい。逆に、列誤り検出データＶＤ１〜ＶＤ５が全て正常であることが確認できた場合に直ちに読み取り正常終了フラグ（図１１＃９１）を出力してもよい。このようにすれば、誤りデータＥＤＡＴＡがない場合に、短時間で読み取りを完了することができる。
【００６１】
また、本発明によれば、上述した従来例のように３つのデータを多重化する場合に比べて、高い利用効率でデータ記憶装置の記憶容量を利用することができる。
３つのデータを多重化する場合には、記憶容量の約１／３の利用に留まる。しかし、図２からも明らかなように、本発明によれば、記憶容量の約３／５を利用することができる。また、メインデータＤＴの数が「２」であっても、記憶容量の約１／２（＝２／４）を利用することができる。従って、１つの行データセット１０に複数のメインデータＤＴを含む本発明のデータ記憶装置は、高い利用効率で記憶容量を利用することができる。１つの行データセット１０に含まれるメインデータＤＴの数を増すと、さらに利用効率を上げることが可能である。このように、上記実施形態におけるメインデータＤＴの数「３」は、本発明を限定するものではない。
但し、同じ行データセット１０において複数のデータに誤りが生じた場合には、データを訂正することができない。従って、メインデータＤＴの数は、利用効率と信頼性との関連により設定される。
尚、図３に示すデータマップの場合でも、利用効率は約９／２０であり、３つのデータを多重化する場合に比べて、高い利用効率である。
【００６２】
〔第２実施形態〕
図１４は、Ｅ2 ＰＲＯＭ１に記憶されるデータのデータマップの他の形態を示す説明図である。図２に示した第１実施形態のデータマップと比べて、誤り訂正データＥＣを複数有している点が異なる。また、図１４に示す第２実施形態の変形例として、当然図３に示したように構成することも可能である。
メインデータＤＴについては、第１実施形態と同様であるので、説明を省略する。また、行誤り検出データＨＤについても、巡回符号化の対象となるデータが増加する以外は同様であるので、説明を省略する。
【００６３】
誤り訂正データＥＣは、１つの行データセット１０Ａの３つのメインデータＤＴのうちの２つの組合せのそれぞれの排他的論理和である。メインデータＤＴが３つの場合、誤り訂正データＥＣは、図１４に示すように１つの行データセット１０Ａに３つ備えられる。
例えば、メインデータＤＴ１１がＤ６（Hex）、ＤＴ１２がＡＣ（Hex）、ＤＴ１３が６７（Hex）であれば、誤り訂正データＥＣは、以下のようになる。
メインデータＤＴ１１とＤＴ１２との排他的論理和である誤り訂正データＥＣ１＿１２は、７Ａ（Hex）となる。
メインデータＤＴ１２とＤＴ１３との排他的論理和である誤り訂正データＥＣ１＿２３は、ＣＢ（Hex）となる。
メインデータＤＴ１３とＤＴ１１との排他的論理和である誤り訂正データＥＣ１＿３１は、Ｂ１（Hex）となる。
【００６４】
このように、１つのメインデータＤＴに対して、２つの異なる誤り訂正データＥＣが備えられる。例えば、メインデータＤＴ１１に対しては、誤り訂正データＥＣ１＿１２とＥＣ１＿３１とが備えられる。別の観点では、１つのメインデータＤＴが他の２つのメインデータＤＴの誤り訂正データＥＣに関連する。上記例では、メインデータＤＴ１１は、誤り訂正データＥＣ１＿１２とＥＣ１＿３１とに関連するので、メインデータＤＴ１２とＤＴ１３とを訂正することができる。
【００６５】
これは、図１５に示すように、３つのメインデータＤＴの内の２つＤＴ１２とＤＴ１３とに誤りが生じても、残った１つのメインデータＤＴ１１によって、これら２つを訂正可能であることを示す。同様に、メインデータＤＴと誤り訂正データＥＣとの２つに誤りが生じた場合（図１６）や、２つの誤り訂正データに誤りが生じた場合（不図示）にもデータを訂正することができる。
【００６６】
その他、第１実施形態において図４〜図８に示した類型に関しても当然ながら良好に誤りデータの検出及び訂正が可能である。
また、第２実施形態のデータマップでデータが記憶されたＥ2 ＰＲＯＭ１からのデータ読み出し方法は、基本的に図９〜図１３に示した手順と同様である。例えば、１つの行データセットにおける誤りデータＥＤＡＴＡの数の制限が２となる（図１１＃４０）など、当然異なる点は存在する。しかし、当業者であればデータマップの仕様に併せて改変可能である。従って、第２実施形態に関して、読み出し方法の詳細な手順については説明を省略する。
【００６７】
尚、第２実施形態のデータマップでは、誤り訂正データＥＣを誤り検出データとして用いることも可能である。第１実施形態と同様の方法では、メインデータＤＴ１２に誤りが生じた場合、図１７に示すように行誤り検出データＨＤ１と、列誤り検出データＶＤ２とによって、メインデータＤＴ１２を特定する。第２実施形態では、誤り訂正データＥＣ１＿１２とＥＣ１＿２３とに基づいてメインデータＤＴ１２に誤りがあることを特定することができる（図１８）。つまり、メインデータＤＴ１２に誤りがあると、読み出したメインデータＤＴ１２を使って、ＤＴ１１及びＤＴ１３に対してそれぞれ算出した排他的論理和の結果と、誤り訂正データＥＣ１＿１２及びＥＣ１＿２３とが不一致となる。従って、これら２つの誤り訂正データＥＣに共通に関連するメインデータＤＴ１２が誤っていると特定される。
【００６８】
この方法では、行誤り検出データＨＤ、列誤り検出データなしでメインデータＤＴの誤り検出が可能である。但し、同一の行データセット１０Ａの誤りを１つしか許容できない点に留意する必要がある。例えば、簡易検出モードなどとして実行することが好ましい。
【００６９】
第２実施形態の場合、１つの行データセット１０Ａには、３つのメインデータＤＴと、３つの誤り訂正データＥＣと、１つの行誤り検出データＨＤとの７つのデータが含まれる。７つの内、３つがメインデータＤＴであるから、Ｅ2 ＰＲＯＭ１の容量の概ね３／７を利用することができる。従って、上述したように従来の３つのデータを多重化する場合（１／３）に比べて、高い利用効率で記憶容量を利用することができる。
尚、本実施形態の場合、誤り訂正データＥＣは、１つの行データセット１０Ａに含まれるメインデータＤＴの数に応じて増加する。その数は、下式(2)で示される。
【００７０】
誤り訂正データ数＝（メインデータ数×（メインデータ数−１））／２ (2)
【００７１】
従って、メインデータ数が４の場合には、誤り訂正データ数は６となり、メインデータ数が５の場合には、誤り訂正データ数は１０となる。メインデータ数が４の場合には、Ｅ2 ＰＲＯＭ１の記憶容量の約４／１１を利用可能である。従って、３つのデータを多重化する場合（１／３）に比べて、やや高い利用効率で記憶容量を利用することができる。メインデータ数が５になると、Ｅ2 ＰＲＯＭ１の記憶容量の５／１６しか利用できず、３つのデータを多重化する場合（１／３）に比べて、利用効率が低くなる。
このように、第２実施形態のデータマップを利用する場合には、メインデータ数が３の場合が最も効率がよい。
【００７２】
以上説明したように、本発明によって、記憶容量を高い効率で利用すると共に、高い信頼性を有してデータを記憶することのできるデータ記憶装置を提供することができる。また、当該データ記憶装置を用いて、高い信頼性を有して、データを読み出すことのできるデータ読み出し方法を提供することができる。
【図面の簡単な説明】
【００７３】
【図１】本発明のデータ記憶装置が使用される制御システムの一例を模式的に示すブロック図
【図２】本発明のデータ記憶装置に記憶されるデータのデータマップを示す説明図
【図３】図２のデータマップの変形例を示す説明図
【図４】図２のデータマップにおいてデータの誤りを検出する例１を示す説明図
【図５】図２のデータマップにおいてデータの誤りを検出する例２を示す説明図
【図６】図２のデータマップにおいてデータの誤りを検出する例３を示す説明図
【図７】図２のデータマップにおいてデータの誤りを検出する例４を示す説明図
【図８】図２のデータマップにおいてデータの誤りを検出する例５を示す説明図
【図９】本発明のデータ記憶装置からデータを読み出す手順（読み出し工程、誤り検出工程）を示すフローチャート
【図１０】図９の手順のサブルーチン（誤り検出工程）を示すフローチャート
【図１１】図９の手順の続き（訂正工程）を示すフローチャート
【図１２】図１１の手順から分岐した手順１（訂正工程）を示すフローチャート
【図１３】図１１の手順から分岐した手順２（訂正工程）を示すフローチャート
【図１４】本発明のデータ記憶装置に記憶されるデータのデータマップの他の形態を示す説明図
【図１５】図１４のデータマップにおいてデータの誤りを検出する例１を示す説明図
【図１６】図１４のデータマップにおいてデータの誤りを検出する例２を示す説明図
【図１７】図１４のデータマップにおいてデータの誤りを検出する例３を示す説明図
【図１８】図１４のデータマップにおいてデータの誤りを検出する例４を示す説明図
【符号の説明】
【００７４】
１０、１１、１３、１０Ａ：行データセット
２０、２１、２２、２３、２４、２５、２０Ａ：列データセット
ＤＴ：メインデータ
ＥＣ：誤り訂正データ
ＨＤ：行誤り検出データ
ＶＤ：列誤り検出データ
【図１】
2008084116.tif 000003
【図２】
2008084116.tif 000004
【図３】
2008084116.tif 000005
【図４】
2008084116.tif 000006
【図５】
2008084116.tif 000007
【図６】
2008084116.tif 000008
【図７】
2008084116.tif 000009
【図８】
2008084116.tif 000010
【図９】
2008084116.tif 000011
【図１０】
2008084116.tif 000012
【図１１】
2008084116.tif 000013
【図１２】
2008084116.tif 000014
【図１３】
2008084116.tif 000015
【図１４】
2008084116.tif 000016
【図１５】
2008084116.tif 000017
【図１６】
2008084116.tif 000018
【図１７】
2008084116.tif 000019
【図１８】
2008084116.tif 000020