(57)【要約】【課題】エラー検出機能を有するＥＥＰＲＯＭのデータ記憶方法においてＥＥＰＲＯＭに記憶するデータの量、即ち、ＥＥＰＲＯＭの記憶容量を削減する。【解決手段】入力データの変換テーブルが用意され、この変換データを用いて入力データを記憶データに変換し、当該変換したデータをＥＥＰＲＯＭ２０に記憶するとともに、ＥＥＰＲＯＭ２０から読み込んだデータを変換テーブルを用いて逆変換する。【選択図】　　　　図１
2004005179.tif 000002
【特許請求の範囲】
【請求項１】
入力データの変換テーブルを用意し、この変換データを用いて入力データを記憶データに変換し、当該変換したデータをＥＥＰＲＯＭに記憶するとともに、前記ＥＥＰＲＯＭから読み込んだデータを前記変換テーブルを用いて逆変換するようにしたことを特徴とするＥＥＰＲＯＭのデータ記憶方法。
【請求項２】
前記変換テーブルを用いて逆変換する際に、ＥＥＰＲＯＭから読み込んだデータに対応するデータがない場合はエラーが発生したとしてデフォルト値を設定するようにしたことを特徴とする請求項１に記載のＥＥＰＲＯＭのデータ記憶方法。
【請求項３】
記憶データにおけるデータ構成を、二進数での「０」と「１」の数を予め定めた数としたことを特徴とする請求項１に記載のＥＥＰＲＯＭのデータ記憶方法。
【請求項４】
前記二進数での「０」と「１」の数を同数としたことを特徴とする請求項３に記載のＥＥＰＲＯＭのデータ記憶方法。
【請求項５】
前記ＥＥＰＲＯＭから読み込んだデータが予め定めたデータ構成となっていない場合はエラーが発生したとしてデフォルト値を設定するようにしたことを特徴とする請求項３または４に記載のＥＥＰＲＯＭのデータ記憶方法。
【請求項６】
前記入力データは、年月日を表すデータであることを特徴とする請求項１〜５のいずれか１項に記載のＥＥＰＲＯＭのデータ記憶方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＥＥＰＲＯＭのデータ記憶方法に関するものである。
【０００２】
【従来の技術】
従来より、ＥＥＰＲＯＭにデータを記憶する方法として、記憶データのミラーデータを記憶する技術がある。記憶方法は、記憶データ＋記憶データの補数（詳しくは、１の補数）を１組としてＥＥＰＲＯＭの記憶領域に記憶する。この方法では、ＥＥＰＲＯＭの記憶領域の消費量は記憶する１データのバイト数の２倍となる。また、記憶データのエラー検出は、記憶データとミラーデータの和を確認して行う。
【０００３】
しかしながら、上記技術ではＥＥＰＲＯＭの記憶領域が、記憶するデータのサイズに依存しており、ＥＥＰＲＯＭに記憶するデータの量（ＥＥＰＲＯＭの記憶容量）を削減したいという要求がある。特に、バイト数は大きいが実際に取りうる値の数が小さなデータに対してはＥＥＰＲＯＭの使用効率が悪い。
【０００４】
例えば、製造年月日をＥＥＰＲＯＭに書き込む場合、年を表すのに必要なバイト数は２バイト（下２桁表示なら１バイトとなるが）、月を表すのに必要なバイト数は１バイト、日を表すのに必要なバイト数は１バイトである。そのため、全部でＥＥＰＲＯＭの使用量は（２＋１＋１）×２＝８バイト必要である。
【０００５】
しかし、実際に使用される値の範囲は、年については２０種類程度（生産開始年度〜２０年位）、月は１〜１２、日は１〜３１と非常に少ない。
このように従来技術では、データサイズは大きいが使用されるデータの範囲が狭い場合にはＥＥＰＲＯＭの記憶効率が悪くなる傾向がある。
【０００６】
【発明が解決しようとする課題】
本発明はこのような背景の下になされたものであり、その目的は、エラー検出機能を有するＥＥＰＲＯＭのデータ記憶方法においてＥＥＰＲＯＭに記憶するデータの量、即ち、ＥＥＰＲＯＭの記憶容量を削減することができるようにすることにある。
【０００７】
【課題を解決するための手段】
請求項１に記載のＥＥＰＲＯＭのデータ記憶方法においては、入力データの変換テーブルを用意し、この変換データを用いて入力データを記憶データに変換し、当該変換したデータをＥＥＰＲＯＭに記憶するとともに、前記ＥＥＰＲＯＭから読み込んだデータを前記変換テーブルを用いて逆変換するようにしている。よって、逆変換できないことはエラーが発生していることを意味し、これによりエラー検出することができる。その結果、エラー検出機能を有するＥＥＰＲＯＭのデータ記憶方法においてＥＥＰＲＯＭに記憶するデータの量としては、従来では記憶データとミラーデータの和であったが、本発明ではミラーデータの無いデータ（変換データ）であり、ＥＥＰＲＯＭに記憶するデータの量、即ち、ＥＥＰＲＯＭの記憶容量を削減することができる。
【０００８】
特に、請求項６に記載のように入力データが年月日を表すデータ等である場合、つまり、データサイズは大きいが使用されるデータ範囲が狭い場合においては使用されるデータ範囲での変換テーブルを用意すればよく、記憶データ（変換データ）の量、即ち、ＥＥＰＲＯＭの記憶容量をより削減することができる。
【０００９】
請求項２に記載のように、前記変換テーブルを用いて逆変換する際に、ＥＥＰＲＯＭから読み込んだデータに対応するデータがない場合はエラーが発生したとしてデフォルト値を設定するとよい。
【００１０】
請求項３に記載のように、記憶データにおけるデータ構成を、二進数での「０」と「１」の数を予め定めた数とし、例えば、請求項４に記載のように、二進数での「０」と「１」の数を同数とすることができる。
【００１１】
請求項５に記載のように、ＥＥＰＲＯＭから読み込んだデータが予め定めたデータ構成となっていない場合はエラーが発生したとしてデフォルト値を設定するとよい。
【００１２】
【発明の実施の形態】
以下、この発明を具体化した一実施の形態を図面に従って説明する。
本実施形態においては自動車用電子制御装置（自動車用ＥＣＵ）に適用しており、図１のＥＥＰＲＯＭ２０に同ＥＣＵの製造年月日を記憶するようにしている。
【００１３】
図１において、ＥＣＵはコントローラ１０とＥＥＰＲＯＭ２０とメモリ３０を備えている。コントローラ１０には入力データとして年月日を表すデータが入力される。メモリ３０には、テーブル３１，３２，３３が記憶されている。各テーブル３１，３２，３３は入力データをＥＥＰＲＯＭ記憶用データに変換するためのものであり、テーブル３１が年変換用、テーブル３２が月変換用、テーブル３２が日変換用である。具体的には、例えば年変換テーブル３１については、表１に示すように、入力データに対しＥＥＰＲＯＭ２０に記憶するデータとして、２進数での「０」の数と「１」の数を同じにして記憶させている。具体的には、８ビットのうち、「０」の数が４つ、「１」の数が４つである。
【００１４】
【表１】
2004005179.tif 000003
そして、本実施形態においては、入力データを直接、ＥＥＰＲＯＭ２０に記憶するのではなく、入力データ（記憶したいデータ）を、テーブルを用いて変換し、その変換したデータをＥＥＰＲＯＭ２０に記憶するようにしている。
【００１５】
つまり、データ書き込みの際には、図２に示すように、コントローラ１０はステップ１００で書き込みたいデータＡを算出する。詳しくは、入力データはＲＡＭ（図示略）に一時的に保存され、コントローラ１０はこのデータＡを読み出す。そして、コントローラ１０はステップ１０１でデータＡの値に対応する真の書き込みデータＢをテーブルＣから取得する（入力データをテーブルＣを用いて記憶データＢに変換する）。さらに、コントローラ１０はステップ１０２でデータＢをＥＥＰＲＯＭ２０へ記憶する。
【００１６】
データ読み出しの際には、図３に示すように、コントローラ１０はステップ２００でＥＥＰＲＯＭ２０からデータＢを読み込む。そして、コントローラ１０はステップ２０１でデータＢにおける「０」の数と「１」の数が同数か否か判定する。データＢにおける「０」の数と「１」の数が同数ならば、コントローラ１０はステップ２０２に移行してテーブルＣにおいてデータＢに対応するデータがあるか否か判定する。データＢに対応するデータがあると、コントローラ１０はステップ２０３に移行してテーブルＣにおけるデータＢに対応するデータＡを取り出して使用する。詳しくは、コントローラ１０はテーブルＣにより逆変換したデータＡをＲＡＭ（図示略）に保存し、これが使用される。
【００１７】
一方、コントローラ１０は、ステップ２０１でデータＢにおける「０」の数と「１」の数が同数でない場合、および、ステップ２０２でデータＢに対応するデータがない場合には、ステップ２０４に移行する。ステップ２０４においてコントローラ１０はデータＢはエラーと判定し、データＡにはデフォイル値を代入する。
【００１８】
次に、図２での製造年月日をＥＥＰＲＯＭ２０に書き込む場合について詳しく説明する。
記憶したい年，月，日を、Ｙ，Ｍ，Ｄとする。
【００１９】
年データＹに対して実際に記憶するデータをＥ＿Ｙ、同様に、月データＭについてはＥ＿Ｍ、日データＤについてはＥ＿Ｄとする。
ＹとＥ＿Ｙとの変換テーブルをＴ＿Ｙ、ＭとＥ＿Ｍとの変換テーブルをＴ＿Ｍ、ＤとＥ＿Ｄとの変換テーブルをＴ＿Ｄとする。
【００２０】
変換テーブルＴ＿＊（＊はＹまたはＭまたはＤ）は、入力データをＥＥＰＲＯＭ記憶用データに変換するテーブルであり、ＥＥＰＲＯＭ記憶用データとしては２進数化したときに「１」であるビットの数と、「０」であるビットの数が等しいデータの集合であり、入力と出力が常に１対１になるようにテーブルを設計している。これにより、ＥＥＰＲＯＭの書き込み／読み出しにエラーが生じた場合、変換テーブル中に存在しないデータとなり、エラーの検出を容易に行うことができる。
【００２１】
さらに、記憶するデータは、ビットの「１」の数と「０」の数が等しいため、エラー検出を行うことができる。
このように、図１のＥＥＰＲＯＭ２０のデータ記憶方法として、入力データの変換テーブル３１，３２，３３を用意し、この変換テーブル３１，３２，３３を用いて、図２のごとく入力データを記憶データに変換し、当該変換したデータをＥＥＰＲＯＭ２０に記憶するとともに、図３のごとくＥＥＰＲＯＭ２０から読み込んだデータを変換テーブル３１，３２，３３を用いて逆変換するようにした。よって、逆変換できないことはエラーが発生していることを意味し、これによりエラー検出することができる。その結果、エラー検出機能を有するＥＥＰＲＯＭ２０のデータ記憶方法においてＥＥＰＲＯＭ２０に記憶するデータの量としては、従来では記憶データとミラーデータの和であったが、本実施形態ではミラーデータの無いデータ（変換データ）であり、ＥＥＰＲＯＭ２０に記憶するデータの量、即ち、ＥＥＰＲＯＭ２０の記憶容量を削減することができる。
【００２２】
特に、入力データが年月日を表すデータである場合、つまり、データサイズは大きいが使用されるデータ範囲が狭い場合においては使用されるデータ範囲での変換テーブルを用意すればよく、記憶データ（変換データ）の量、即ち、ＥＥＰＲＯＭ２０の記憶容量をより削減することができる。
【００２３】
また、変換テーブル３１，３２，３３を用いて逆変換する際に、図３のステップ２０２においてＥＥＰＲＯＭ２０から読み込んだデータに対応するデータがない場合は図３のステップ２０４においてエラーが発生したとしてデフォルト値を設定するようにしたので、エラー発生時の対処として好ましい。
【００２４】
さらに、記憶データにおけるデータ構成を、二進数での「０」と「１」の数を予め定めた数とし、詳しくは、二進数での「０」と「１」の数を同数とした。そして、図３のステップ２０１においてＥＥＰＲＯＭ２０から読み込んだデータが予め定めたデータ構成となっていない場合は図３のステップ２０４においてエラーが発生したとしてデフォルト値を設定するようにした。よって、エラー発生時の対処として好ましいものとなる。
【００２５】
以下、より詳しく説明する。
２０００年から２０２０年までの製造年月日をＥＥＰＲＯＭに記憶する方法を例に挙げる。
（ｉ）前提条件として、年月日の各パラメータを、
年：ｕ２＿Ｙｅａｒ
月：ｕ１＿Ｍｏｎｔｈ
日：ｕ１＿Ｄａｔｅ
とする。また、ＥＥＰＲＯＭに記憶するパラメータ名を、それぞれ記憶する年月日パラメータに合わせて「Ｅ＿Ｙｅａｒ」，「Ｅ＿Ｍｏｎｔｈ」，「Ｅ＿Ｄａｔｅ」とする。
（ｉｉ）具体的動作としては次のようになる。
【００２６】
まず最初に、実際に使用するパラメータとＥＥＰＲＯＭに記憶するパラメータの対応表を作成し、そのパラメータ表を用いてｕ２＿ＹｅａｒとＥ＿Ｙｅａｒ、ｕ１＿ＭｏｎｔｈとＥ＿Ｍｏｎｔｈ、ｕ１＿ＤａｔｅとＥ＿Ｄａｔｅの対応をとる。
【００２７】
そのための第１段階として、ｕ２＿ＹｅａｒのＥＥＰＲＯＭ対応表を作成する。
具体的には、２０００年から２０２０年までを使用したい範囲としているので、ｕ２＿Ｙｅａｒがとりうるパラメータは全部で２１通りとなる。
【００２８】
１バイト＝８ビットであるから、８ビット中、４ビットが「１」となる組み合せは、
８Ｃ４＝７０＞２１
となり、１バイトで２０００年〜２０２０年までのデータに対する記憶データを作成可能である。そして、入力データｕ２＿Ｙｅａｒと記憶データＥ＿Ｙｅａｒの対応表を表２のように設定する。
【００２９】
このとき、Ｅ＿Ｙｅａｒのサイズは１バイトで十分である。
【００３０】
【表２】
2004005179.tif 000004
第２段階として、ｕ１＿Ｍｏｎｔｈおよびｕ１＿ＤａｔｅのＥＥＰＲＯＭ対応表を作成する。
【００３１】
具体的には、ｕ１＿Ｍｏｎｔｈおよびｕ１＿Ｄａｔｅについても、年パラメータと同様のアプローチで表３を作成する。ただし、月，日については表３を共用することができる。
【００３２】
このとき、Ｅ＿ＭｏｎｔｈおよびＥ＿Ｄａｔｅのサイズはそれぞれ１バイトで十分である。
【００３３】
【表３】
2004005179.tif 000005
第３段階として、その使用方法を説明する。
【００３４】
ＥＥＰＲＯＭへの記憶方法として、ＥＥＰＲＯＭに２００２年１１月１０日を記憶させる場合について述べる。
第１工程；ｕ２＿Ｙｅａｒ＝２００２、ｕ１＿Ｍｏｎｔｈ＝１１、ｕ１＿Ｄａｔｅ＝１０となる。
【００３５】
第２工程；表２から、ｕ２＿Ｙｅａｒ＝２００２に対応するＥＥＰＲＯＭ記憶値Ｅ＿Ｙｅａｒは「０ｘ１ｂ」となる。
表３から、ｕ１＿Ｍｏｎｔｈ＝１１に対応するＥＥＰＲＯＭ記憶値Ｅ＿Ｍｏｎｔｈは「０ｘ３５」となる。
【００３６】
表３から、ｕ１＿Ｄａｔｅ＝１０に対応するＥＥＰＲＯＭ記憶値Ｅ＿Ｄａｔｅは「０ｘ３３」となる。
よって、記憶パラメータは表４のようになり、ＥＥＰＲＯＭでの記憶領域として３バイトあればよい。
【００３７】
【表４】
2004005179.tif 000006
次に、ＥＥＰＲＯＭからの読み出し方法（ＥＥＰＲＯＭの記憶値からデータを読み出す場合）について述べる。
【００３８】
記憶データが正しい場合の例として、Ｅ＿Ｙｅａｒ＝０ｘ１７，Ｅ＿Ｍｏｎｔｈ＝０ｘ３５，Ｅ＿Ｄａｔｅ＝０ｘ５３の場合は次のようになる。
Ｅ＿Ｙｅａｒ，Ｅ＿Ｍｏｎｔｈ，Ｅ＿Ｄａｔｅを、表２，３を用いてｕ２＿Ｙｅａｒ，ｕ１＿Ｍｏｎｔｈ，ｕ１＿Ｄａｔｅに逆変換すると、
ｕ２＿Ｙｅａｒ＝２００１，ｕ１＿Ｍｏｎｔｈ＝１１，ｕ１＿Ｄａｔｅ＝２０
となる。
【００３９】
記憶データが間違っている場合の例として、Ｅ＿Ｙｅａｒ＝０ｘ１７，Ｅ＿Ｍｏｎｔｈ＝０ｘ３５，Ｅ＿Ｄａｔｅ＝０ｘ５４の場合は次のようになる。
Ｅ＿Ｙｅａｒ，Ｅ＿Ｍｏｎｔｈ，Ｅ＿Ｄａｔｅを、表２，３を用いてｕ２＿Ｙｅａｒ，ｕ１＿Ｍｏｎｔｈ，ｕ１＿Ｄａｔｅに逆変換すると、
ｕ２＿Ｙｅａｒ＝２００１，ｕ１＿Ｍｏｎｔｈ＝１１までは逆変換できるが、ｕ１＿Ｄａｔｅは対応するパラメータがないため、エラー処理を行う（図３のステップ２０４でデフォルト値を設定する）。
【００４０】
次に、従来手法について説明を加える。
今、入力データとして、
ｕ２＿Ｙｅａｒ；（年を記憶する２バイトのデータ）、
ｕ１＿Ｍｏｎｔｈ；（月を記憶する１バイトのデータ）、
ｕ１＿Ｄａｔｅ；（日を記憶する１バイトのデータ）
を想定する。
【００４１】
従来のミラー手法でＥＥＰＲＯＭに記憶する場合、記憶したいデータの領域と同等のミラー領域が必要となり、図４のようにＥＥＰＲＯＭに記憶される。この際、記憶に必要な領域は、
（２＋１＋１）・２＝８
より、８バイトである。
【００４２】
本実施形態における記憶可能なデータ数に関しては、次のようになる。
本実施形態ではＥＥＰＲＯＭで記憶するデータ領域をＮ−バイトとすると、Ｎ−バイトで記憶できる数は、
８・ＮＣ８・Ｎ／２
で表すことができる。
【００４３】
表５に、Ｎの値（Ｎ＝１，２，４）における、その記憶可能データ数を示す。即ち、例えば１バイトでは８Ｃ４＝７０となる。さらに表５においてミラー手法を使用した時の記憶データ数も併せて示す。即ち、ミラー手法では例えば１バイトでは８ビットのうち４ビットがミラーデータとして使用されることから記憶データ数は４ビット分の「１６」となる。
【００４４】
【表５】
2004005179.tif 000007
この表５から、同じバイト数であれば記憶データ数は本実施形態の方がミラー手法より多く、本実施形態の方が優れていることは明らかである。
【００４５】
さらに、使用効率に関しては、以下のようになる。
本実施形態での使用効率をＲＡＴＥ＿Ｅ、ミラー手法での使用効率をＲＡＴＥ＿Ｍとしたときに、Ｎ−バイトにおける各手法での使用効率を考える。
【００４６】
エラー検出機能を付けない場合（通常使用時）のＮ−バイトで表されるデータ数をＳＵＭ＿Ｎとし、本実施形態の手法で扱えるデータ数をＳＵＭ＿Ｅ、ミラー手法にて扱えるデータ数をＳＵＭ＿Ｍとしたとき、各手法での使用効率を
ＲＡＴＥ＿Ｅ＝｛（ＳＵＭ＿Ｅ）／（ＳＵＭ＿Ｎ）｝・１００（％）
ＲＡＴＥ＿Ｍ＝｛（ＳＵＭ＿Ｍ）／（ＳＵＭ＿Ｎ）｝・１００（％）
で表すと、各効率は表６のようになる。
【００４７】
【表６】
2004005179.tif 000008
この表６において、１バイトではＲＡＴＥ＿Ｅ＝２７．３％、ＲＡＴＥ＿Ｍ＝６．２５％であり、２バイトではＲＡＴＥ＿Ｅ＝１９．６％、ＲＡＴＥ＿Ｍ＝０．３９％である。よって、本実施形態での使用効率ＲＡＴＥ＿Ｅはミラー手法での使用効率ＲＡＴＥ＿Ｍに比べ格段に高いことが分かる。
【図面の簡単な説明】
【図１】実施の形態におけるＥＣＵの内部構成を示す図。
【図２】作用を説明するためのフローチャート。
【図３】作用を説明するためのフローチャート。
【図４】ミラー手法を用いた場合のＥＥＰＲＯＭのデータ記憶状態を示す図。
【符号の説明】
１０…コントローラ、２０…ＥＥＰＲＯＭ、３０…メモリ。
【図１】
2004005179.tif 000009
【図２】
2004005179.tif 000010
【図３】
2004005179.tif 000011
【図４】
2004005179.tif 000012