(57)【要約】【課題】半導体記憶装置に書込まれたデータを正確に読出すことのできるデータ記憶制御装置を提供すること。【解決手段】不揮発性メモリに情報データを記憶させるデータ記憶制御装置ＡＡは、データ書込み部１０およびデータ読出し部２０を備える。データ書込み部１０は、情報データの誤りを検出するためのエラー検出データを情報データに付加して生成される書込みデータを、不揮発性メモリの複数のアドレスのうち書込みデータのビット数と同数のアドレスに、１ビットずつ回転させて書込む。データ読出し部２０は、書込みデータが書込まれた各アドレスの同一ビットからデータを読出し、読出したデータを情報データとエラー検出データとに分割し、情報データの誤りの有無をエラー検出データに基づいて判別し、誤りがないと判別した場合にこの情報データを読出しデータとする。【選択図】図１
2015035047.tif 000002
【特許請求の範囲】
【請求項１】
半導体記憶装置に情報データを記憶させるデータ記憶制御装置であって、
前記情報データの誤りを検出するためのエラー検出データを当該情報データに付加して生成される書込みデータを、前記半導体記憶装置の複数のアドレスのうち当該書込みデータのビット数と同数のアドレスに、１ビットずつ回転させて書込むデータ書込み手段と、
前記書込みデータが書込まれた各アドレスの同一ビットからデータを読出し、読出したデータを情報データとエラー検出データとに分割し、当該情報データの誤りの有無を当該エラー検出データに基づいて判別し、誤りがないと判別した場合に当該情報データを読出しデータとするデータ読出し手段と、を備えることを特徴とするデータ記憶制御装置。
【請求項２】
前記データ書込み手段は、前記複数のアドレスのうち最初に前記書込みデータを書込むアドレスについては、当該書込みデータの回転をさせないことを特徴とする請求項１に記載のデータ記憶制御装置。
【請求項３】
前記データ書込み手段は、ｎビットの書込みデータ（ただし、ｎは、ｎ≧２を満たす整数）を、ｎ個のアドレスのうち第１番目のアドレスを起点として第ｎ番目のアドレスまで順番に右方向に１ビットずつ回転させて書込み、
前記データ読出し手段は、前記ｎビットの書込みデータが書込まれた各アドレスのｐビット目（ただし、ｐは、０≦ｐ≦ｎ−１を満たす整数）からデータを読出した際に、
ｎ−ｐ−ａ＞０である場合（ただし、ａは、０≦ａ≦ｎ−１を満たす任意の整数）には、第（ｎ−ｐ−ａ）番目のアドレスのｐビット目のデータ値を、前記読出したデータの（ｎ−ａ−１）ビット目のデータ値とし、
ｎ−ｐ−ａ≦０である場合には、第（２ｎ−ｐ−ａ）番目のアドレスのｐビット目のデータ値を、前記読出したデータの（ｎ−ａ−１）ビット目のデータ値とすることを特徴とする請求項２に記載のデータ記憶制御装置。
【請求項４】
前記データ書込み手段は、ｍビットの書込みデータ（ただし、ｍは、ｍ≧２を満たす整数）を、ｍ個のアドレスのうち第１番目のアドレスを起点として第ｍ番目のアドレスまで順番に左方向に１ビットずつ回転させて書込み、
前記データ読出し手段は、前記ｍビットの書込みデータが書込まれた各アドレスのｑビット目（ただし、ｑは、０≦ｑ≦ｍ−１を満たす整数）からデータを読出した際に、
ｑ＋２＋ｂ≦ｍである場合（ただし、ｂは、０≦ｂ≦ｍ−１を満たす任意の整数）には、第（ｑ＋２＋ｂ）番目のアドレスのｑビット目のデータ値を、前記読出したデータの（ｍ−ｂ−１）ビット目のデータ値とし、
ｑ＋２＋ｂ＞ｍである場合には、第（ｑ＋２＋ｂ−ｍ）番目のアドレスのｑビット目のデータ値を、前記読出したデータの（ｍ−ｂ−１）ビット目のデータ値とすることを特徴とする請求項２に記載のデータ記憶制御装置。
【請求項５】
前記データ読出し手段は、前記同一ビットからの前記データの読出しを開始する起点を、アドレスごとにずらすことを特徴とする請求項１から４のいずれかに記載のデータ記憶制御装置。
【請求項６】
前記データ読出し手段は、
前記書込みデータが書込まれたアドレスごとにデータを読出し、読出したデータを情報データとエラー検出データとに分割し、当該情報データの誤りの有無を当該エラー検出データに基づいて判別し、誤りがないと判別した場合には、当該情報データを前記読出しデータとし、
誤りがあると判別した場合には、前記書込みデータが書込まれた各アドレスの同一ビットからデータを読出し、読出したデータを情報データとエラー検出データとに分割し、当該情報データの誤りの有無を当該エラー検出データに基づいて判別し、誤りがないと判別した場合に当該情報データを前記読出しデータとすることを特徴とする請求項１から５のいずれかに記載のデータ記憶制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体記憶装置にデータを記憶させるデータ記憶制御装置に関する。
【背景技術】
【０００２】
近年、自動車には多数の車載用制御装置が搭載されており、これら車載用制御装置は、車両制御や通信制御などに用いる情報データを半導体記憶装置に記憶させる。半導体記憶装置には、ＥＥＰＲＯＭ（Electrically  Erasable  Programmable  Read-Only  Memory）といった、電源が供給されていない状態でもデータを保持し続ける不揮発性メモリが利用される場合がある。
【０００３】
ＥＥＰＲＯＭには、ビット線故障や電気的な衝撃によって、記憶している情報データが書き換わってしまうおそれがある。そこで、ハード的な対策を施す手法や、ソフト的な対策を施す手法が提案されている。例えば特許文献１には、半導体記憶装置に情報データを書込む際と、半導体記憶装置から情報データを読出す際と、に特徴を有する手法が示されている。
【０００４】
まず、特許文献１に示された手法により半導体記憶装置に情報データを書込む場合について、図２を用いて以下に説明する。特許文献１に示された手法では、情報データを、半導体記憶装置の少なくとも異なる３つのアドレスに１ビットずつ回転させて書込む。なお、図２では、情報データが「１１１０」であり、この情報データを４つのアドレスに１ビットずつ右方向に回転させて書込んだ例を示している。
【０００５】
ここで、図２に示したように情報データが書込まれた半導体記憶装置において、図７に示すように、４つのアドレスの全ての３ビット目のデータが書き換わってしまったものとする。
【０００６】
次に、特許文献１に示された手法により半導体記憶装置から情報データを読出す場合について、図８を用いて以下に説明する。特許文献１に示された手法では、半導体記憶装置の各アドレスからデータを読出し、読出したデータを、書込み時と逆方向に同ビット数回転させた後に、各データの同一ビットごとにデータ値を比較し、そのビットごとのデータ値の多数値をもって、出力データとする。なお、図８では、図７に示したようにデータの書き換わった情報データを読出して回転させた例を示しており、出力データが図２における情報データと同じ「１１１０」になることを示している。
【０００７】
以上のように、特許文献１に示された手法によれば、半導体記憶装置に記憶されている情報データが上述のように書き換わってしまった場合でも、情報データを正しく読出すことができる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平３−２７６３５０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかし、特許文献１に示された手法では、情報データを読出す場合に、ビットごとのデータ値の多数値をもって出力データとする。このため、情報データを書込んだアドレス数の半分以上のビットでデータが書き換わってしまった場合には、上述の多数値は、情報データを示す正しい値ではなくなってしまう。
【００１０】
例えば図７では、４つのアドレスにおいて同一の１つのビットでデータが書き換わった例を示したが、４つのアドレスにおいて同一の２つ以上のビットでデータが書き換わってしまった場合には、情報データを読出す際の上述の多数値は、情報データを示す正しい値ではなくなる。このため、この場合には、特許文献１に示された手法では、情報データを正しく読出すことはできない。
【００１１】
そこで、本発明は、上述の課題に鑑みてなされたものであり、半導体記憶装置に書込まれたデータを正確に読出すことのできるデータ記憶制御装置を提供することを、目的とする。
【課題を解決するための手段】
【００１２】
本発明は、上記の課題を解決するために、以下の事項を提案している。なお、理解を容易にするために、本発明の実施形態に対応する符号を付して説明するが、これに限定されるものではない。
【００１３】
（１）  本発明は、半導体記憶装置（例えば、後述の不揮発性メモリに相当）に情報データを記憶させるデータ記憶制御装置（例えば、図１のデータ記憶制御装置ＡＡに相当）であって、前記情報データの誤りを検出するためのエラー検出データ（例えば、後述のチェックサムデータに相当）を当該情報データに付加して生成される書込みデータを、前記半導体記憶装置の複数のアドレスのうち当該書込みデータのビット数と同数のアドレスに、１ビットずつ回転させて書込むデータ書込み手段（例えば、図１のデータ書込み部１０に相当）と、前記書込みデータが書込まれた各アドレスの同一ビットからデータを読出し、読出したデータを情報データとエラー検出データとに分割し、当該情報データの誤りの有無を当該エラー検出データに基づいて判別し、誤りがないと判別した場合に当該情報データを読出しデータとするデータ読出し手段（例えば、図１のデータ読出し部２０に相当）と、を備えることを特徴とするデータ記憶制御装置を提案している。
【００１４】
この発明によれば、データ書込み手段により、情報データにエラー検出データを付加して生成される書込みデータを、この書込みデータのビット数と同数のアドレスに、１ビットずつ回転させて書込むこととした。また、データ読出し手段により、書込みデータが書込まれた各アドレスの同一ビットからデータを読出し、読出したデータを情報データとエラー検出データとに分割し、エラー検出データに基づいて情報データに誤りがないと判別した場合に、この情報データを読出しデータとすることとした。このため、例えば書込みデータが書き込まれた各アドレスのｘビット目（ただし、ｘは、ｘ≧２を満たす整数）のデータが書き換わっていなければ、このｘビット目から読出したデータから、誤りのない情報データを求めることができる。すなわち、書込みデータが書込まれた各アドレスの少なくとも１つの同一ビットでデータが書き換わっていなければ、読出しデータとして、半導体記憶装置に書込まれた情報データを読出すことができる。したがって、引用文献１に示されている手法と比べて、半導体記憶装置に書込まれた情報データを正確に読出すことができる。
【００１５】
（２）  本発明は、（１）のデータ記憶制御装置について、前記データ書込み手段は、前記複数のアドレス（例えば、図２のアドレス１から４に相当）のうち最初に前記書込みデータを書込むアドレス（例えば、図２のアドレス１に相当）については、当該書込みデータの回転をさせないことを特徴とするデータ記憶制御装置を提案している。
【００１６】
この発明によれば、（１）のデータ記憶制御装置において、データ書込み手段により、最初に書込みデータを書込むアドレスについては、書込みデータを回転させないこととした。このため、最初に書込みデータを書込むアドレスについても書込みデータを回転させる場合と比べて、データ書込み手段による処理量を軽減することができる。
【００１７】
（３）  本発明は、（２）のデータ記憶制御装置について、前記データ書込み手段は、ｎビットの書込みデータ（ただし、ｎは、ｎ≧２を満たす整数）を、ｎ個のアドレスのうち第１番目のアドレスを起点として第ｎ番目のアドレスまで順番に右方向に１ビットずつ回転させて書込み、前記データ読出し手段は、前記ｎビットの書込みデータが書込まれた各アドレスのｐビット目（ただし、ｐは、０≦ｐ≦ｎ−１を満たす整数）からデータを読出した際に、ｎ−ｐ−ａ＞０である場合（ただし、ａは、０≦ａ≦ｎ−１を満たす任意の整数）には、第（ｎ−ｐ−ａ）番目のアドレスのｐビット目のデータ値を、前記読出したデータの（ｎ−ａ−１）ビット目のデータ値とし、ｎ−ｐ−ａ≦０である場合には、第（２ｎ−ｐ−ａ）番目のアドレスのｐビット目のデータ値を、前記読出したデータの（ｎ−ａ−１）ビット目のデータ値とすることを特徴とするデータ記憶制御装置を提案している。
【００１８】
この発明によれば、（２）のデータ記憶制御装置において、データ書込み手段により、ｎビットの書込みデータを、ｎ個のアドレスのうち第１番目のアドレスを起点として第ｎ番目のアドレスまで順番に右方向に１ビットずつ回転させて書込むこととした。また、データ読出し手段により、ｎ−ｐ−ａ＞０である場合には、第（ｎ−ｐ−ａ）番目のアドレスのｐビット目のデータ値を、読出したデータの（ｎ−ａ−１）ビット目のデータ値とし、ｎ−ｐ−ａ≦０である場合には、第（２ｎ−ｐ−ａ）番目のアドレスのｐビット目のデータ値を、読出したデータの（ｎ−ａ−１）ビット目のデータ値とすることとした。このため、書込みデータを右方向に１ビットずつ回転させて半導体記憶装置に書込んだ場合にも、この半導体記憶装置から、この書込みデータに含まれていた情報データを正確に読出すことができる。
【００１９】
（４）  本発明は、（２）のデータ記憶制御装置について、前記データ書込み手段は、ｍビットの書込みデータ（ただし、ｍは、ｍ≧２を満たす整数）を、ｍ個のアドレスのうち第１番目のアドレスを起点として第ｍ番目のアドレスまで順番に左方向に１ビットずつ回転させて書込み、前記データ読出し手段は、前記ｍビットの書込みデータが書込まれた各アドレスのｑビット目（ただし、ｑは、０≦ｑ≦ｍ−１を満たす整数）からデータを読出した際に、ｑ＋２＋ｂ≦ｍである場合（ただし、ｂは、０≦ｂ≦ｍ−１を満たす任意の整数）には、第（ｑ＋２＋ｂ）番目のアドレスのｑビット目のデータ値を、前記読出したデータの（ｍ−ｂ−１）ビット目のデータ値とし、ｑ＋２＋ｂ＞ｍである場合には、第（ｑ＋２＋ｂ−ｍ）番目のアドレスのｑビット目のデータ値を、前記読出したデータの（ｍ−ｂ−１）ビット目のデータ値とすることを特徴とするデータ記憶制御装置を提案している。
【００２０】
この発明によれば、（２）のデータ記憶制御装置において、データ書込み手段により、ｍビットの書込みデータを、ｍ個のアドレスのうち第１番目のアドレスを起点として第ｍ番目のアドレスまで順番に左方向に１ビットずつ回転させて書込むこととした。また、データ読出し手段により、ｑ＋２＋ｂ≦ｍである場合には、第（ｑ＋２＋ｂ）番目のアドレスのｑビット目のデータ値を、読出したデータの（ｍ−ｂ−１）ビット目のデータ値とし、ｑ＋２＋ｂ＞ｍである場合には、第（ｑ＋２＋ｂ−ｍ）番目のアドレスのｑビット目のデータ値を、読出したデータの（ｍ−ｂ−１）ビット目のデータ値とすることとした。このため、書込みデータを左方向に１ビットずつ回転させて半導体記憶装置に書込んだ場合にも、この半導体記憶装置から、この書込みデータに含まれていた情報データを正確に読出すことができる。
【００２１】
（５）  本発明は、（１）から（４）のいずれかのデータ記憶制御装置について、前記データ読出し手段は、前記同一ビットからの前記データの読出しを開始する起点を、アドレスごとにずらすことを特徴とするデータ記憶制御装置を提案している。
【００２２】
この発明によれば、（１）から（４）のいずれかのデータ記憶制御装置において、データ読出し手段により、同一ビットからのデータの読出しを開始する起点を、アドレスごとにずらすこととした。このため、書込みデータが書込まれた際の回転の方向に応じて、半導体記憶装置からデータを適切に読出すことができる。
【００２３】
（６）  本発明は、（１）から（５）のいずれかのデータ記憶制御装置について、前記データ読出し手段は、前記書込みデータが書込まれたアドレスごとにデータを読出し、読出したデータを情報データとエラー検出データとに分割し、当該情報データの誤りの有無を当該エラー検出データに基づいて判別し、誤りがないと判別した場合には、当該情報データを前記読出しデータとし、誤りがあると判別した場合には、前記書込みデータが書込まれた各アドレスの同一ビットからデータを読出し、読出したデータを情報データとエラー検出データとに分割し、当該情報データの誤りの有無を当該エラー検出データに基づいて判別し、誤りがないと判別した場合に当該情報データを前記読出しデータとすることを特徴とするデータ記憶制御装置を提案している。
【００２４】
この発明によれば、（１）から（５）のいずれかのデータ記憶制御装置において、データ読出し手段により、書込みデータが書込まれたアドレスごとにデータを読出し、読出したデータを情報データとエラー検出データとに分割し、エラー検出データに基づいて情報データに誤りがないと判別した場合に、この情報データを読出しデータとすることとした。このため、２種類の方法で情報データを読出すことができるので、情報データの読出しエラー発生率を低下させることができる。
【発明の効果】
【００２５】
本発明によれば、半導体記憶装置に書込まれた情報データを正確に読出すことができる。
【図面の簡単な説明】
【００２６】
【図１】本発明の第１実施形態に係るデータ記憶制御装置のブロック図である。
【図２】前記実施形態に係るデータ記憶制御装置による情報データの書込み方法を説明するための図である。
【図３】前記実施形態に係るデータ記憶制御装置による情報データの書込み方法を説明するための図である。
【図４】前記実施形態に係るデータ記憶制御装置による情報データの読出し方法を説明するための図である。
【図５】前記実施形態に係るデータ記憶制御装置による情報データの読出し方法を説明するための図である。
【図６】本発明の第２実施形態に係るデータ記憶制御装置による情報データの読出し方法を説明するための図である。
【図７】従来例に係る情報データの書込み方法を説明するための図である。
【図８】従来例に係る情報データの読出し方法を説明するための図である。
【発明を実施するための形態】
【００２７】
以下、本発明の実施形態について、図面を用いて、詳細に説明する。
なお、本実施形態における構成要素は、適宜、既存の構成要素などとの置き換えが可能であり、また、他の既存の構成要素との組み合わせを含む様々なバリエーションが可能である。したがって、本実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。
【００２８】
＜第１実施形態＞
図１は、本発明の第１実施形態に係るデータ記憶制御装置ＡＡのブロック図である。データ記憶制御装置ＡＡは、不揮発性メモリにデータを書込んだり、不揮発性メモリからデータを読出したりする。このデータ記憶制御装置ＡＡは、データ書込み部１０およびデータ読出し部２０を備える。
【００２９】
データ書込み部１０は、不揮発性メモリに記憶させる情報データの誤りを検出するためのエラー検出データを生成し、このエラー検出データを情報データに付加して書込みデータを生成する。そして、不揮発性メモリの複数のアドレスのうち書込みデータのビット数と同数のアドレスに、書込みデータを１ビットずつ回転させて書込む。
【００３０】
データ読出し部２０は、書込みデータが書込まれた各アドレスの同一ビットからデータを読出し、読出したデータを情報データとエラー検出データとに分割する。そして、情報データの誤りの有無をエラー検出データに基づいて判別し、誤りがないと判別した場合にこの情報データを読出しデータとする。
【００３１】
以上のデータ書込み部１０およびデータ読出し部２０の動作について、図２から図５を用いて以下に詳述する。なお、以下では、情報データは、２ビットの「１１」であるものとする。
【００３２】
［データ書込み部１０の動作］
データ書込み部１０は、まず、情報データ「１１」のチェックサムを計算し、計算結果であるチェックサムデータ「１０」をエラー検出データとし、エラー検出データ「１０」を情報データ「１１」に付加して、４ビットの「１１１０」を書込みデータとする。
【００３３】
次に、書込みデータのビット数と同数の４つのアドレス（アドレス１、２、３、４）に、書込みデータを１ビットずつ回転させて書込む。なお、４つのアドレスのうち最初に書込みデータを書込むアドレス１については、書込みデータを回転させることなく書込む。
【００３４】
なお、書込みデータを１ビットずつ回転させる方向には、右方向と左方向との２つの方向がある。書込みデータを右方向に１ビットずつ回転させて書込んだ場合を、図２に示し、書込みデータを左方向に１ビットずつ回転させて書込んだ場合を、図３に示す。
【００３５】
ここで、上述のように書込みデータが書込まれた不揮発性メモリにおいて、あるビットのデータが書き換わってしまったものとする。具体的には、図２に示したように右方向に１ビットずつ回転させて書込みデータが書込まれた不揮発性メモリにおいて、図４に示すように、４つのアドレスの全ての３ビット目と２ビット目と１ビット目とにおいて、データが書き換わったしまったものとする。また、図３に示したように左方向に１ビットずつ回転させて書込みデータが書込まれた不揮発性メモリにおいて、図５に示すように、４つのアドレスの全ての２ビット目と１ビット目と０ビット目とにおいて、データが書き換わってしまったものとする。
【００３６】
［データ読出し部２０の動作］
（右方向に回転させて書込まれた書込みデータの読出し）
右方向に１ビットずつ回転させて書込まれた書込みデータを読出す場合について、以下に説明する。ここで、便宜上、書込みデータがｎビット（ただし、ｎは、ｎ≧２を満たす整数）であり、この書込みデータが書込まれた各アドレスのｐビット目（ただし、ｐは、０≦ｐ≦ｎ−１を満たす整数）からデータを読出すものとする。
【００３７】
すると、データ読出し部２０は、まず、ｎ−ｐ−ａ＞０である場合（ただし、ａは、０≦ａ≦ｎ−１を満たす任意の整数）には、第（ｎ−ｐ−ａ）番目のアドレスのｐビット目のデータ値を、読出したデータの（ｎ−ａ−１）ビット目のデータ値とする。一方、ｎ−ｐ−ａ≦０である場合には、第（２ｎ−ｐ−ａ）番目のアドレスのｐビット目のデータ値を、読出したデータの（ｎ−ａ−１）ビット目のデータ値とする。
【００３８】
具体的には、例えば、図４に示したデータを読出すものとする。この場合、データ読出し部２０は、まず、アドレス１からアドレス４の４つのアドレスのうち、それぞれの３ビット目のデータ値と、それぞれの２ビット目のデータ値と、それぞれの１ビット目のデータ値と、それぞれの０ビット目のデータ値と、を読出す。
【００３９】
４つのアドレスのそれぞれの３ビット目のデータ値を読出す場合には、ｎ＝４、ｐ＝３となる。この場合、ａ＝０にすると、アドレス１の３ビット目のデータ値が、読出したデータの３ビット目のデータ値になる。また、ａ＝１にすると、アドレス４の３ビット目のデータ値が、読出したデータの２ビット目のデータ値になる。また、ａ＝２にすると、アドレス３の３ビット目のデータ値が、読出したデータの１ビット目のデータ値になる。また、ａ＝３にすると、アドレス２の３ビット目のデータ値が、読出したデータの０ビット目のデータ値になる。以上によれば、４つのアドレスのそれぞれの３ビット目のデータ値を読出した場合、読出したデータは、「０００１」になる。
【００４０】
４つのアドレスのそれぞれの３ビット目以外のビットのデータ値を読出す場合にも、４つのアドレスのそれぞれの３ビット目のデータ値を読出す場合と同様に、データを読出す。これによれば、４つのアドレスのそれぞれの２ビット目および１ビット目のデータ値を読出した場合、読出したデータは「０００１」になる。また、４つのアドレスのそれぞれの０ビット目のデータ値を読出した場合、読出したデータは、「１１１０」になる。
【００４１】
データ読出し部２０は、次に、読出したデータのそれぞれについて、３ビット目および２ビット目を情報データとし、１ビット目および０ビット目をエラー検出データとする。
【００４２】
具体的には、例えば、上述の４つのアドレスのそれぞれの３ビット目と２ビット目と１ビット目とのデータ値を読出した場合のデータ「０００１」は、情報データ「００」と、エラー検出データ「０１」と、に分割される。また、上述の４つのアドレスのそれぞれの０ビット目のデータ値を読出した場合のデータ「１１１０」は、情報データ「１１」と、エラー検出データ「１０」と、に分割される。
【００４３】
データ読出し部２０は、次に、読出したデータのそれぞれについて、情報データのチェックサムデータを求め、エラー検出データと比較する。求めた情報データのチェックサムデータと、エラー検出データと、が一致しない場合には、情報データに誤りがあると判別し、これら２つのデータが一致する場合には、情報データに誤りがないと判別する。そして、誤りがないと判別した情報データを、読出しデータとする。
【００４４】
具体的には、例えば、情報データが「００」でエラー検出データが「０１」である場合には、情報データ「００」のチェックサムデータが「００」になるので、情報データのチェックサムデータは、エラー検出データとは一致しない。一方、情報データが「１１」でエラー検出データが「１０」である場合には、情報データ「１１」のチェックサムデータが「１０」になるので、情報データのチェックサムデータは、エラー検出データと一致する。このため、読出しデータは、データ書込み部１０により書込まれた書込みデータの情報データと同一の「１１」になる。
【００４５】
（左方向に回転させて書込まれた書込みデータの読出し）
左方向に１ビットずつ回転させて書込まれた書込みデータを読出す場合について、以下に説明する。ここで、便宜上、書込みデータがｍビット（ただし、ｍは、ｍ≧２を満たす整数）であり、この書込みデータが書込まれた各アドレスのｑビット目（ただし、ｑは、０≦ｑ≦ｍ−１を満たす整数）からデータを読出すものとする。
【００４６】
すると、データ読出し部２０は、まず、ｑ＋２＋ｂ≦ｍである場合（ただし、ｂは、０≦ｂ≦ｍ−１を満たす任意の整数）には、第（ｑ＋２＋ｂ）番目のアドレスのｑビット目のデータ値を、読出したデータの（ｍ−ｂ−１）ビット目のデータ値とする。一方、ｑ＋２＋ｂ＞ｍである場合には、第（ｑ＋２＋ｂ−ｍ）番目のアドレスのｑビット目のデータ値を、読出したデータの（ｍ−ｂ−１）ビット目のデータ値とする。
【００４７】
具体的には、例えば、図５に示したデータを読出すものとする。この場合、データ読出し部２０は、まず、アドレス１からアドレス４の４つのアドレスのうち、それぞれの３ビット目のデータ値と、それぞれの２ビット目のデータ値と、それぞれの１ビット目のデータ値と、それぞれの０ビット目のデータ値と、を読出す。
【００４８】
４つのアドレスのそれぞれの３ビット目のデータ値を読出す場合には、ｍ＝４、ｑ＝３となる。この場合、ｂ＝０にすると、アドレス１の３ビット目のデータ値が、読出したデータの３ビット目のデータ値になる。また、ｂ＝１にすると、アドレス２の３ビット目のデータ値が、読出したデータの２ビット目のデータ値になる。また、ｂ＝２にすると、アドレス３の３ビット目のデータ値が、読出したデータの１ビット目のデータ値になる。また、ｂ＝３にすると、アドレス４の３ビット目のデータ値が、読出したデータの０ビット目のデータ値になる。以上によれば、４つのアドレスのそれぞれの３ビット目のデータ値を読出した場合、読出したデータは、「１１１０」になる。
【００４９】
４つのアドレスのそれぞれの３ビット目以外のビットのデータ値を読出す場合にも、４つのアドレスのそれぞれの３ビット目のデータ値を読出す場合と同様に、データを読出す。これによれば、４つのアドレスのそれぞれの２ビット目と１ビット目と０ビット目とのデータ値を読出した場合、読出したデータは、「０００１」になる。
【００５０】
データ読出し部２０は、次に、読出したデータのそれぞれについて、３ビット目および２ビット目を情報データとし、１ビット目および０ビット目をエラー検出データとする。
【００５１】
データ読出し部２０は、次に、読出したデータのそれぞれについて、情報データのチェックサムデータを求め、エラー検出データと比較する。求めた情報データのチェックサムデータと、エラー検出データと、が一致しない場合には、情報データに誤りがあると判別し、これら２つのデータが一致する場合には、情報データに誤りがないと判別する。そして、誤りがないと判別した情報データを、読出しデータとする。これによれば、４つのアドレスのそれぞれの３ビット目のデータ値で構成されるデータ「１１１０」において、情報データ「１１」のチェックサムデータ「１０」がエラー検出データ「１０」と一致するため、読出しデータは、データ書込み部１０により書込まれた書込みデータの情報データと同一の「１１」になる。
【００５２】
以上のデータ記憶制御装置ＡＡによれば、以下の効果を奏することができる。
【００５３】
データ記憶制御装置ＡＡは、データ書込み部１０により、情報データの誤りを検出するためのエラー検出データを生成し、このエラー検出データを情報データに付加して書込みデータを生成し、この書込みデータを、この書込みデータのビット数と同数のアドレスに、１ビットずつ回転させて書込む。また、データ読出し部２０により、書込みデータが書込まれた各アドレスの同一ビットからデータを読出し、読出したデータを情報データとエラー検出データとに分割し、エラー検出データに基づいて情報データに誤りがないと判別した場合に、この情報データを読出しデータとする。このため、図４の０ビット目や図５の３ビット目のように、書込みデータが書込まれた各アドレスの中にデータの書き換わっていないビットがあれば、このビットから読出したデータから、誤りのない情報データを求めることができる。すなわち、書込みデータが書込まれた各アドレスの少なくとも１つの同一ビットでデータが書き換わっていなければ、読出しデータとして、不揮発性メモリに書込まれた情報データを読出すことができる。したがって、引用文献１に示されている手法と比べて、不揮発性メモリに書込まれた情報データを正確に読出すことができる。
【００５４】
また、データ記憶制御装置ＡＡは、データ書込み部１０により、最初に書込みデータを書込むアドレスについては、書込みデータを回転させることなく書込む。このため、最初に書込みデータを書込むアドレスについても書込みデータを回転させる場合と比べて、データ書込み部１０による処理量を軽減することができる。
【００５５】
また、データ記憶制御装置ＡＡは、データ書込み部１０により、書込みデータを右方向に１ビットずつ回転させて書込んだ場合と、書込みデータを左方向に１ビットずつ回転させて書込んだ場合とで、データ読出し部２０によるデータの読出し方を変える。このため、右方向に回転させて書込みデータを書込んだ場合でも、左方向に回転させて書込みデータを書込んだ場合でも、書込みデータに含まれていた情報データを正確に読出すことができる。
【００５６】
また、データ記憶制御装置ＡＡは、データ書込み部１０でもデータ読出し部２０でも、エラー検出データとして情報データのチェックサムデータを用いる。このため、情報データの誤りの有無を、エラー検出データに基づいて判別することができる。
【００５７】
また、データ記憶制御装置ＡＡは、データ読出し部２０により、同一ビットからのデータの読出しを開始する起点を、アドレスごとにずらす。このため、書込みデータが書込まれた際の回転の方向に応じて、不揮発性メモリからデータを適切に読出すことができる。
【００５８】
＜第２実施形態＞
以下に、本発明の第２実施形態に係るデータ記憶制御装置ＢＢについて説明する。データ記憶制御装置ＢＢは、図１に示した本発明の第１実施形態に係るデータ記憶制御装置ＡＡとは、データ読出し部２０の代わりにデータ読出し部２０Ａを備える点が異なる。なお、データ記憶制御装置ＢＢにおいて、データ記憶制御装置ＡＡと同一構成要件については、同一符号を付し、その説明を省略する。
【００５９】
データ読出し部２０Ａは、書込みデータが書込まれたアドレスからデータを読出し、読出したデータを情報データとエラー検出データとに分割する。そして、情報データの誤りの有無をエラー検出データに基づいて判別し、誤りがないと判別した場合にこの情報データを読出しデータとする。一方、誤りがあると判別した場合には、データ読出し部２０と同様の動作を行う。
【００６０】
［データ読出し部２０Ａの動作］
データ読出し部２０の動作とは異なるデータ読出し部２０Ａに特有の上述の動作について、図６を用いて以下に詳述する。
【００６１】
データ読出し部２０Ａは、まず、書込みデータが書込まれたアドレスごとにデータを読出し、これら各データを、データ書込み部１０において書込みデータが書込まれた際の回転の方向と逆方向に１ビットずつ回転させる。
【００６２】
データ読出し部２０Ａは、次に、回転させたアドレスごとのデータのそれぞれについて、３ビット目および２ビット目を情報データとし、１ビット目および０ビット目をエラー検出データとする。
【００６３】
データ読出し部２０Ａは、次に、回転させたアドレスごとのデータのそれぞれについて、情報データのチェックサムデータを求め、エラー検出データと比較する。求めた情報データのチェックサムデータと、エラー検出データと、が一致しない場合には、データ読出し部２０と同様の動作を行い、これら２つのデータが一致する場合には、情報データに誤りがないと判別する。そして、誤りがないと判別した情報データを、読出しデータとする。
【００６４】
例えば、図２に示したように右方向に１ビットずつ回転させて書込みデータが書込まれた不揮発性メモリにおいて、図６に示すように、４つのアドレスの３ビット目のデータ値が全て「１」に書き換わったしまったものとする。この場合、アドレス１、３、４から読出したデータを回転させたものは、「１１１０」になり、アドレス２から読出したデータを回転させたものは、「１１１１」になる。このため、アドレス１、３、４のそれぞれから読出したデータを回転させたものにおいて、情報データが「１１」になり、エラー検出データが「１０」になり、情報データのチェックサムデータがエラー検出データとは一致する。このため、読出しデータは、データ書込み部１０により書込まれた書込みデータの情報データと同一の「１１」になる。
【００６５】
以上のデータ記憶制御装置ＢＢによれば、データ記憶制御装置ＡＡが奏することのできる上述の効果に加えて、以下の効果を奏することができる。
【００６６】
データ記憶制御装置ＢＢは、データ読出し部２０Ａにより、書込みデータが書込まれたアドレスごとにデータを読出し、読出したデータを情報データとエラー検出データとに分割し、エラー検出データに基づいて情報データに誤りがないと判別した場合に、この情報データを読出しデータとする。このため、データ読出し部２０による方法と、データ読出し部２０Ａに特有の方法と、の２種類の方法で情報データを読出すことができるので、情報データの読出しエラー発生率を低下させることができる。
【００６７】
以上、この発明の実施形態につき、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計なども含まれる。
【００６８】
例えば、上述の各実施形態では、エラー検出データとして情報データのチェックサムデータを適用したが、これに限らず、例えば、情報データの反転データや、情報データのパリティチェックデータや、情報データの巡回冗長検査データを適用してもよい。ただし、エラー検出データとして適用するデータの種類は、データ書込み部とデータ読出し部とで同一のものを適応することとする。
【００６９】
また、上述の各実施形態では、データ書込み部１０により、エラー検出データの生成と、書込みデータの生成と、を行うこととしたが、これに限らず、これらデータの生成の少なくともいずれかをデータ記憶制御装置の外部で行うものとしてもよい。
【００７０】
また、上述の各実施形態では、情報データの後ろにエラー検出データが付加されるものとしたが、これに限らず、情報データの前にエラー検出データが付加されるものとしてもよい。
【符号の説明】
【００７１】
ＡＡ、ＢＢ；データ記憶制御装置
１０；データ書込み部
２０、２０Ａ；データ読出し部
【図１】
2015035047.tif 000003
【図２】
2015035047.tif 000004
【図３】
2015035047.tif 000005
【図４】
2015035047.tif 000006
【図５】
2015035047.tif 000007
【図６】
2015035047.tif 000008
【図７】
2015035047.tif 000009
【図８】
2015035047.tif 000010