(57)【要約】【課題】誤ってライトされてしまったアドレスの特定及び訂正を効率的に行う。【解決手段】第１の記憶手段の所定のアドレスに対応付けて所定のデータを書き込む際、所定のアドレスと異なるアドレスに所定のデータが書き込まれると、所定のアドレスに基づいて異なるアドレスを特定するための候補となり得る候補アドレスを算出し、候補アドレスに対応付けて記憶されたデータと、第２の記憶手段に記憶されている所定のアドレスに対応付けて記憶されたデータとを比較し、両データが不一致の場合、候補アドレスに、第２の記憶手段に記憶されている所定のアドレスに対応付けて記憶されたデータを書き込む。【選択図】図６
2016076159.tif 000002
【特許請求の範囲】
【請求項１】
アドレスとデータとを対応付けて記憶する第１の記憶手段と、
前記第１の記憶手段に書き込むアドレスとデータとを対応付けて記憶すると共に、前記第１の記憶手段から読み出したアドレスとデータとを対応付けて記憶する第２の記憶手段と、
前記第１の記憶手段のアドレスに対応付けてデータを書き込むと共に、前記第１の記憶手段のアドレスに対応付けられたデータを読み出す制御手段と、を含み、
前記制御手段は、
前記第１の記憶手段の所定のアドレスに対応付けて所定のデータを書き込む際、前記所定のアドレスと異なるアドレスに前記所定のデータが書き込まれると、前記所定のアドレスに基づいて前記異なるアドレスを特定するための候補となり得る候補アドレスを算出し、前記候補アドレスに対応付けて記憶されたデータと、前記第２の記憶手段に記憶されている前記所定のアドレスに対応付けて記憶されたデータとを比較し、両データが不一致の場合、前記候補アドレスに、前記第２の記憶手段に記憶されている前記所定のアドレスに対応付けて記憶されたデータを書き込むことを特徴とする誤り訂正装置。
【請求項２】
前記両データが一致する場合、前記候補アドレスの次に候補となり得る候補アドレスに対応付けて記憶されたデータと、前記第２の記憶手段に記憶されている前記所定のアドレスに対応付けて記憶されたデータとを比較することを特徴とする請求項１に記載の誤り訂正装置。
【請求項３】
前記候補となり得る全ての候補アドレスについて前記比較が行われると、前記制御手段は、前記第１の記憶手段に対して全てのアドレスに対応付けられた全てのデータを書き込むことを特徴とする請求項２に記載の誤り訂正装置。
【請求項４】
前記候補アドレスは、前記所定のアドレスを示すビット列のうち１ビットを反転させた第一群アドレスであることを特徴とする請求項１から３の何れか１項に記載の誤り訂正装置。
【請求項５】
前記候補アドレスは、前記所定のアドレスを示すビット列のうち２ビットを反転させた第二群アドレスであることを特徴とする請求項１から３の何れか１項に記載の誤り訂正装置。
【請求項６】
前記第一群アドレスについて前記比較を行った後、前記第二群アドレスについて前記比較を行うことを特徴とする請求項５に記載の誤り訂正装置。
【請求項７】
前記候補アドレスは、前記所定のアドレスを示すビット列のうち、１のビットを０に反転させたものであることを特徴とする請求項１から６の何れか１項に記載の誤り訂正装置。
【請求項８】
アドレスとデータとを対応付けて記憶する第１の記憶手段と、前記第１の記憶手段に書き込むアドレスとデータとを対応付けて記憶すると共に、前記第１の記憶手段から読み出したアドレスとデータとを対応付けて記憶する第２の記憶手段と、前記第１の記憶手段のアドレスに対応付けてデータを書き込むと共に、前記第１の記憶手段のアドレスに対応付けられたデータを読み出す制御手段と、を含む誤り訂正装置の制御方法であって、
前記第１の記憶手段の所定のアドレスに対応付けて所定のデータを書き込む際、前記所定のアドレスと異なるアドレスに前記所定のデータが書き込まれると、前記所定のアドレスに基づいて前記異なるアドレスを特定するための候補となり得る候補アドレスを算出する工程と、
前記候補アドレスに対応付けて記憶されたデータと、前記第２の記憶手段に記憶されている前記所定のアドレスに対応付けて記憶されたデータとを比較する工程と、
前記比較する工程により、両データが不一致であると判断されると、前記候補アドレスに、前記第２の記憶手段に記憶されている前記所定のアドレスに対応付けて記憶されたデータを書き込む工程と、
を含むことを特徴とする制御方法。
【請求項９】
アドレスとデータとを対応付けて記憶する第１の記憶手段と、前記第１の記憶手段に書き込むアドレスとデータとを対応付けて記憶すると共に、前記第１の記憶手段から読み出したアドレスとデータとを対応付けて記憶する第２の記憶手段と、前記第１の記憶手段のアドレスに対応付けてデータを書き込むと共に、前記第１の記憶手段のアドレスに対応付けられたデータを読み出す制御手段と、を含む誤り訂正装置のコンピュータに、
前記第１の記憶手段の所定のアドレスに対応付けて所定のデータを書き込む際、前記所定のアドレスと異なるアドレスに前記所定のデータが書き込まれると、前記所定のアドレスに基づいて前記異なるアドレスを特定するための候補となり得る候補アドレスを算出する処理と、
前記候補アドレスに対応付けて記憶されたデータと、前記第２の記憶手段に記憶されている前記所定のアドレスに対応付けて記憶されたデータとを比較する処理と、
前記比較する処理により、両データが不一致であると判断されると、前記候補アドレスに、前記第２の記憶手段に記憶されている前記所定のアドレスに対応付けて記憶されたデータを書き込む処理と、
を実現させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、誤り訂正装置、誤り訂正装置の制御方法、及びプログラムに関する。
【背景技術】
【０００２】
デジタルデータ伝送方式においては、指定アドレスにデータをライトした後、同じアドレスをリードして、リードしたデータ（書かれたデータ）がライトしたデータ（書こうとしたデータ）に一致しているか否かを確認することで、ライト時のエラーを検出する技術が既に知られている。
【０００３】
特許文献１には、アドレスエラーを検出及び訂正することを目的として、ライト時はライトしようとするアドレス値に対してパリティデータ及びチェックビットを生成し、これらを演算することでアドレスエラーを検出し、エラーのあったビットが特定できるケースではアドレスを訂正し、特定できないケースでもエラー履歴を残す方法が開示されている。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、今までのライト後にリードする方法では、アドレスエラー、すなわち、指定アドレスが変化し、意図しないアドレスにライトされてしまうケースが発生した場合にエラーを検知することは可能であるが、誤ってライトされてしまったアドレスそのものを特定することは困難であり、結果としてエラー訂正に多くの時間を要するという問題があった。
【０００５】
特許文献１に開示された技術では、アドレスエラーを検出及び訂正しているが、アドレスエラーを検出及び訂正するため、図８に示すようなパリティデータやチェックビットを生成及び検査する回路を必要とする。図８は、パリティチェックを行うことにより誤り訂正を行う従来の誤り訂正装置の概略構成について説明するブロック図である。したがって、汎用の通信バスにハード的な追加工が必要となる一方、汎用の通信バスのみでは、誤ってライトされてしまったアドレスの特定及び訂正が困難であるという問題が依然として存在することになる。
【０００６】
そこで、本発明は、上記従来技術の問題点に鑑みてなされたものであって、誤ってライトされてしまったアドレスの特定及び訂正を効率的に行うことが可能な誤り訂正装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するため、請求項１に記載の本発明における誤り訂正装置は、アドレスとデータとを対応付けて記憶する第１の記憶手段と、前記第１の記憶手段に書き込むアドレスとデータとを対応付けて記憶すると共に、前記第１の記憶手段から読み出したアドレスとデータとを対応付けて記憶する第２の記憶手段と、前記第１の記憶手段のアドレスに対応付けてデータを書き込むと共に、前記第１の記憶手段のアドレスに対応付けられたデータを読み出す制御手段と、を含み、前記制御手段は、前記第１の記憶手段の所定のアドレスに対応付けて所定のデータを書き込む際、前記所定のアドレスと異なるアドレスに前記所定のデータが書き込まれると、前記所定のアドレスに基づいて前記異なるアドレスを特定するための候補となり得る候補アドレスを算出し、前記候補アドレスに対応付けて記憶されたデータと、前記第２の記憶手段に記憶されている前記所定のアドレスに対応付けて記憶されたデータとを比較し、両データが不一致の場合、前記候補アドレスに、前記第２の記憶手段に記憶されている前記所定のアドレスに対応付けて記憶されたデータを書き込むことを特徴とする。
【発明の効果】
【０００８】
本発明によれば、誤ってライトされてしまったアドレスの特定及び訂正を効率的に行うことが可能な誤り訂正装置を得ることができる。
【図面の簡単な説明】
【０００９】
【図１】本実施形態に係る誤り訂正装置の概略構成について説明するブロック図である。
【図２】本実施形態に係る誤り訂正装置において、Ｉ２Ｃ信号へ混入するノイズについて説明する模式図である。
【図３】本実施形態に係る誤り訂正装置を構成する出力回路の特徴について説明する概略ブロック図である。
【図４】Ｉ２Ｃ信号へ混入するノイズにより発生するアドレスエラーについて説明する図である。
【図５】誤ってライトされたアドレスを特定する原理について説明する図である。
【図６】本実施形態に係る誤り訂正装置を用いて誤ってライトされたアドレスエラーを訂正する動作フローについて説明する図である。
【図７】本実施形態に係る誤り訂正装置を用いてアドレスエラー訂正を行った場合の具体例について説明する図である。
【図８】パリティチェックを行うことにより誤り訂正を行う従来の誤り訂正装置の概略構成について説明するブロック図である。
【発明を実施するための形態】
【００１０】
次に、本発明を実施するための形態について図面を参照して詳細に説明する。なお、各図中、同一又は相当する部分には同一の符号を付しており、その重複説明は適宜に簡略化乃至省略する。
【００１１】
本発明は、シリアル通信において誤ってライトされてしまったアドレスの特定に際して、以下の特徴を有する。すなわち、誤ったアドレスにライトされる現象が発生する可能性の高い‘１’が‘０’に化けてしまう１ビットエラーを仮定し、誤ってライトされてしまったアドレスを推測することが特徴になっている。この本発明の特徴について、以下図面を用いて詳細に解説する。
【００１２】
まず、本実施形態に係る誤り訂正装置の概略構成について説明する。図１は、本実施形態に係る誤り訂正装置の概略構成について説明するブロック図である。図１において、マイクロコンピュータ１０１は、ＣＰＵ（Central Processing Unit）１０２及びＳＲＡＭ（Static Random Access Memory）１０３を内蔵しており、両者は内部バス１０４によって接続されている。ＣＰＵ１０２は、マイクロコンピュータ１０１の外部のＥＥＰＲＯＭ（Electrically Erasable Programmable Read Only Memory）１０５に、Ｉ２Ｃ（Inter-Integrated Circuit）バスで接続されている。Ｉ２Ｃバスは、ＳＣＬ１０６とＳＤＡ１０７とから構成されている。
【００１３】
ＣＰＵ１０２は、データ転送及びエラー検出に関連する全ての処理を制御する。ＳＲＡＭ１０３は、データ転送及びエラー検出に用いるデータを一時的に保持する揮発性メモリである。内部バス１０４は、ＳＲＡＭ１０３が保持するデータをＣＰＵ１０２に転送する経路である。
【００１４】
ＥＥＰＲＯＭ１０５は、アドレスと対応付けられたデータを保持した不揮発性メモリであり、ＣＰＵ１０２の制御するデータ転送処理によって、そのデータに対するリード／ライトのアクセスが行われる。ＳＣＬ１０６及びＳＤＡ１０７は、ＣＰＵ１０２とＥＥＰＲＯＭ１０５とがアクセスする際の信号伝送経路である。ＣＰＵ１０２及びＥＥＰＲＯＭ１０５は、オープンドレイン出力を行うことでＳＣＬ１０６及びＳＤＡ１０７の信号状態を変化させる。
【００１５】
本実施形態においては、周辺デバイスとのシリアル通信方式であるＩ２Ｃ通信について言及するので、信号伝送経路は、クロック信号用のＳＣＬ１０６及びデータ信号用のＳＤＡ１０７の２本となっている。だたし、信号伝送経路が２本でない通信方式に対しても、オープンドレイン出力回路の場合、本発明を適用することは可能である。
【００１６】
次に、本実施形態に係る誤り訂正装置において、Ｉ２Ｃ信号へ混入するノイズについて説明する。図２は、本実施形態に係る誤り訂正装置において、Ｉ２Ｃ信号へ混入するノイズについて説明する模式図である。
【００１７】
図２は、送信側のＣＰＵ１０２から、「００１１１０・・・」なる信号を、受信側のＥＥＰＲＯＭ１０５に送った場合、ＳＤＡ１０７に混入したノイズの影響により、信号が「０００１００・・・」に変化してしまった様子を示している。Ｉ２Ｃ通信の場合、ＳＣＬ１０６の立ち上がりでＳＤＡ１０７の値を参照して信号値としている。よって、ＳＤＡ１０７のノイズ混入で問題となるのは、図２のｐ２０３、ｐ２０４、ｐ２０７のように、ＳＣＬ１０６のクロックの立ち上がり時にノイズが印加された場合である。
【００１８】
ただし、デジタル回路においてはスレッショルドレベルｐ２００が存在するため、ＳＤＡ１０７にノイズが混入しても、そのスレッショルドレベルを越えなければ問題はない。図２において、ＳＣＬ１０６のクロック立ち上がり時にノイズを受けたｐ２０３、ｐ２０４、ｐ２０７のうち、ｐ２０４及びｐ２０７は、スレッショルドレベルｐ２００を越えたため、受信側の信号値が変化している。しかし、ｐ２０３は、スレッショルドレベルｐ２００を越えていないため、受信側の信号値は変化していない。
【００１９】
Ｉ２Ｃ通信で伝送される信号としては、アドレス信号及びデータ信号が、一般的に用いられている。アドレス信号の信号値が変化してしまうアドレスエラーが発生すると、本来アクセスしようとしていたアドレスとは異なるアドレスにアクセスしてしまう。これに対し、データ信号の信号値が変化してしまうデータエラーが発生すると、アクセスしたアドレスに対応するデータが本来の値と異なってしまう。
【００２０】
次に、本実施形態に係る誤り訂正装置を構成する出力回路の特徴について説明する。図３は、本実施形態に係る誤り訂正装置を構成する出力回路の特徴について説明する概略ブロック図である。
【００２１】
図３に示すオープンドレイン出力回路において、ＦＥＴ（Field Effect Transistor）３０１は、マイクロコンピュータ１０１に内蔵されており、ＣＰＵ１０２から送信する制御信号によってオンオフできるスイッチとして用いられる。プルアップ抵抗３０２は、ＳＤＡ１０７と電圧源Ｖｃｃとを接続している。ＥＥＰＲＯＭ１０５の内部も、マイクロコンピュータ１０１に示すようなＣＰＵやＦＥＴを内蔵する構成となっているが、以降の説明では簡単のためＥＥＰＲＯＭ１０５の出力は常にハイインピーダンス状態とする。また、スイッチング素子として、ＦＥＴ以外のものを用いる場合もある。
【００２２】
ＦＥＴ３０１がオンとなっている場合、ＳＤＡ１０７はＧＮＤにショートされ、信号状態は“Ｌｏｗ”となる。このとき、ＳＤＡ１０７とＧＮＤとの間のインピーダンスはＦＥＴ３０１によるが、オンとなっている状態ではインピーダンスはほぼ０となる。このように回路のインピーダンスが低い状態では、ＳＤＡ１０７にノイズが混入した際の電圧変動は小さくなる。
【００２３】
これに対して、ＦＥＴ３０１がオフとなっている場合、マイクロコンピュータ１０１とＥＥＰＲＯＭ１０５とは共にハイインピーダンス出力となり、ＳＤＡ１０７の信号状態は、プルアップ抵抗３０２を介した電圧源Ｖｃｃによって“Ｈｉｇｈ”となる。このとき、ＳＤＡ１０７とＶｃｃ間のインピーダンスはプルアップ抵抗３０２の値によるが、この抵抗値は、ＳＤＡ１０７に対する電流量制限やＥＥＰＲＯＭ１０５のＬｏｗレベル入力電圧確保のためにある程度大きい値となっている。すなわち、回路のインピーダンスは高くなっている。回路のインピーダンスが高い状態では、ＳＤＡ１０７にノイズが混入した際の電圧変動は大きくなる。
【００２４】
以上により、オープンドレイン出力回路では、ＳＤＡ１０７の信号状態が“Ｌｏｗ”のときはノイズによる電圧変動は小さく、ＳＤＡ１０７の信号状態が“Ｈｉｇｈ”のときはノイズによる電圧変動は大きくなる。この性質により、図２で説明したｐ２０３のように、ＳＤＡ１０７の信号状態が“Ｌｏｗ”のときにノイズが混入してもスレッショルドレベルｐ２００を越えることはない。しかし、ｐ２０４、ｐ２０７のように、ＳＤＡ１０７の信号状態が“Ｈｉｇｈ”のときにノイズが混入するとスレッショルドレベルｐ２００を越えてしまうケースが多い。
【００２５】
次に、Ｉ２Ｃ信号へ混入するノイズにより発生するアドレスエラーについて説明する。図４は、Ｉ２Ｃ信号へ混入するノイズにより発生するアドレスエラーについて説明する図である。
【００２６】
一般的に知られているデジタルデータ伝送のライト動作においては、データ伝送を制御するＣＰＵ１０２が、ＣＰＵ１０２に内部バス１０４を介して接続されたＳＲＡＭ１０３からライトデータを取得する。そして、データ伝送対象であるＥＥＰＲＯＭ１０５の指定アドレスに対して、同ライトデータを書き込む。
【００２７】
例えば、ＥＥＰＲＯＭ１０５のアドレス“０ｘ０２”にデータ“０ｘ１１”をライトする場合、正常に書込みが行われると、ＥＥＰＲＯＭ１０５のメモリの状態は図４の状態４０１のようになる。ＥＥＰＲＯＭ１０５では、アドレス“０ｘ０２”のデータが“０ｘｄ５”であったのに対し、状態４０１では、アドレス“０ｘ０２”のデータは“０ｘ１１”となっている。
【００２８】
これに対して、図２で説明したようにノイズが混入することで信号が化けてしまう現象により、データライト時にアドレスエラーが起きると、ＥＥＰＲＯＭ１０５のメモリの状態は状態４０２のようになる。これは指定アドレスが“０ｘ０２”から“０ｘ００”に化けてしまった場合であり、状態４０２では、本来データが書かれるはずのなかったアドレス“０ｘ００”に、ライトデータ“０ｘ１１”が書かれている。
【００２９】
このようなライト時のエラーを検出及び訂正する方法として、パリティチェック、ＣＲＣ（Cyclic Redundancy Check）等が一般的に知られているが、何れも専用の回路を必要とするので、汎用の通信ポートに対しての適用が困難である。
【００３０】
汎用の通信ポートにおいてエラーを検出する方法としては、ライト後に指定アドレスのデータをリードし、リードデータとライトデータとを比較する手法が一般的に知られている。図４の例の場合、ライト動作を行った後で、ＣＰＵ１０２が、ＥＥＰＲＯＭ１０５のアドレス“０ｘ０２”に対してリードを行う。そして、このリードデータと、ＳＲＡＭ１０３に記憶している、ライトデータ“０ｘ１１”とを比較し、一致しない場合にエラーとみなす。
【００３１】
ライト後のＥＥＰＲＯＭ１０５の状態が状態４０２であった場合、アドレス“０ｘ０２”のリードデータは“０ｘｄ５”であるので、ＳＲＡＭ１０３に記憶しているライトデータ“０ｘ１１”と不一致となり、エラー発生とみなされる。汎用の通信ポートにおいては、このような方法によってアドレスエラーを容易に検出することが可能であるが、エラー箇所を訂正するのは容易でない、という問題がある。
【００３２】
エラー訂正として最も一般的な方法は、エラー検出時にリライト（指定アドレスに対する再ライト）を行うものである。状態４０３は、状態４０２に対してリライトを行った状態である。この方法により、アドレス“０ｘ０２”には、本来書こうとしていたデータ“０ｘ１１”が正常に書き込めるため、発生したエラーがデータエラーであった場合は、これでエラー訂正が完了する。しかし、図４の状態４０２に示すようなアドレスエラーが発生した場合、リライトを行った後であっても、誤ってライトしてしまったアドレス“０ｘ００”が意図しない値“０ｘ１１”のままになってしまう。
【００３３】
誤ってライトされてしまったアドレス“０ｘ００”をも訂正しようとしても、そもそもＣＰＵ１０２は、誤ってライトされたアドレスが“０ｘ００”であることを認識できておらず、それを特定することは困難である。よって、誤ってライトされてしまったアドレスのデータを訂正するためには、結果的に全領域へアクセスするなど、膨大な時間がかかってしまう。
【００３４】
次に、誤ってライトされたアドレスを特定する原理について説明する。図５は、誤ってライトされたアドレスを特定する原理について説明する図である。
【００３５】
ＣＰＵ１０２が、ＥＥＰＲＯＭ１０５のあるアドレスに対してライト動作を行った際にアドレスエラーが起きたことを検出した場合、本来アクセスするはずのないアドレスに対して誤ってライトしてしまったことになる。汎用の通信ポートにおいては、ＣＰＵ１０２は、誤ってライトされたアドレスはどこなのかは知り得ない。しかし、本実施形態では、誤ってライトされた可能性が最も高い候補アドレスを“第一群”、第一群に次いで可能性の高い候補アドレスを“第二群”と定め、誤ってライトされたアドレスの特定に用いることとしている。
【００３６】
“第一群”のアドレスの定義は、本来書こうとしたアドレスを示すビット列の‘１'のビットを一つ‘０'に反転させたアドレスである。図５に示した例では、本来書こうとしたアドレスは“００００１１１１”であるので、第一群にあたるアドレスは、“０００００１１１”、“００００１０１１”、“００００１１０１”、“００００１１１０”の４つである。
【００３７】
この第一群のアドレスが、誤ってライトされたアドレスとして最も可能性が高いとする根拠は、次の二点である。一点目は、複数ビットエラーに比べて１ビットエラーが発生し易い、ということである。二点目は、オープンドレイン出力回路におけるノイズ印加では、‘０'から‘１'への変化より、‘１'から‘０'への変化が発生し易い、ということである。
【００３８】
一点目の、１ビットエラーが発生し易い、というのは、一般的なシリアル通信の通信レートに対して、ノイズの幅が非常に小さいことによる。一般的に知られており、１ビットエラーのみ検出及び訂正するような方法も多い。二点目の、‘１'から‘０'への変化が発生し易い、というのは、オープンドレイン出力回路の特徴によるものである。
【００３９】
図３で説明したように、オープンドレイン出力回路における通信バスの信号状態は、“Ｌｏｗ”から“Ｈｉｇｈ”には変化し難いが、“Ｈｉｇｈ”から“Ｌｏｗ”には変化し易い。すなわち、このような回路をデジタルデータ伝送に用いた場合、通信データは‘０'から‘１'には変化し難いが、‘１'から‘０'には変化し易いのである。
【００４０】
“第二群”のアドレスの定義は、本来書こうとしたアドレスを示すビット列の‘１'のビットを二つ‘０'に反転させたアドレスである。図５に示した例では、本来書こうとしたアドレスは“００００１１１１”である。よって、第二群にあたるアドレスは、“００００００１１”、“０００００１０１”、“０００００１１０”、“００００１００１”、“００００１０１０”、“００００１１００”の６つである。
【００４１】
第二群も第一群と同様に‘１'から‘０'への変化が発生し易いという性質を前提としているが、第一群が１ビットエラーを想定しているのに対し、第二群は２ビットエラーを想定している。１ビットエラーと２ビットエラーの発生頻度を考慮すると、誤ってライトされた可能性のあるアドレスとしては、第二群は第一群の次の候補という位置付けとなる。要するに、本実施形態では、オープンドレイン出力回路におけるデータ転送では‘１'から‘０'の変化が発生し易い、という性質を利用したものである。そして、１ビットエラーや２ビットエラーが起きた想定の下でも特に誤ってライトされた可能性の高いものを抽出することを特徴としている。
【００４２】
次に、本実施形態に係る誤り訂正装置を用いて誤ってライトされたアドレスエラーを訂正する動作フローについて説明する。図６は、本実施形態に係る誤り訂正装置を用いて誤ってライトされたアドレスエラーを訂正する動作フローについて説明する図である。
【００４３】
図６に示すライト時アドレスエラー訂正の手法では、誤ってライトしてしまった可能性の高いアドレスに対し、優先的に誤ってライトされているかを確認することで、本来膨大な時間を要する誤ってライトされた箇所の訂正を効率的に行うことが可能である。誤ってライトした可能性の高いアドレスの抽出においては、混入ノイズの影響によって通信バスの状態が“Ｈｉｇｈ”から“Ｌｏｗ”に変化し易いという、オープンドレイン出力回路の性質を利用していることを特徴とする。以下この手法について説明する。
【００４４】
図６（ａ）の動作フローは、最初のライト動作が行われる前に、１度だけ行われる処理である。本実施形態においては、この処理を、マイクロコンピュータ１０１及びＥＥＰＲＯＭ１０５を含むシステムの電源オン時に行うこととしている。それは、電源オン時は、同システムにおけるモータ等のノイズ源になり得る要素が稼動していないため、信号に比較的ノイズが混入し難いためである。
【００４５】
ステップ６０１の処理では、ＣＰＵ１０２が、ＥＥＰＲＯＭ１０５の全アドレスに対して、データのリードを行う。ステップ６０２の処理では、ステップ６０１の処理で取得したリードデータを、全てＳＲＡＭ１０３に保存する。よって、ステップ６０２の処理終了時には、ＳＲＡＭ１０３に、ＥＥＰＲＯＭ１０５の全アドレスのリードデータが保持された状態になる。
【００４６】
図６（ｂ）の動作フローは、ライト動作においてアドレスエラーが検出された際に行われる処理である。エラー検出自体は、図４において説明で示したように、書こうとしたアドレスをリードすることによって容易に実現できる。さらに、アドレスエラーとデータエラーとの切り分けに関しては、リードしたデータがライト前のデータと変化しているか否かを確認する等の方法によって実現することができる。
【００４７】
アドレスエラーが検出されると、ステップ６０３の処理では、ライトしようとしたアドレスの値から、第一群アドレス及び第二群アドレスの値を算出する。算出方法は、図５で説明した通りである。ステップ６０４の処理では、第一群及び第二群のアドレスのうち、後述するステップ６０５、及びステップ６０６のチェック処理を行っていないものがあるかどうかを確認する。全てのアドレスがチェック済みの場合（ステップ６０４：Ｙ）は、ステップＳ６０９の処理へ進み、チェックしていないアドレスがある場合（ステップ６０４：Ｎ）は、ステップ６０５に進む。
【００４８】
ステップ６０５の処理では、ステップ６０３の処理で算出された候補アドレスの一つに対して、データのリードを行う。ステップ６０６の処理では、ステップ６０２の処理でＳＲＡＭ１０３に保存されたデータのうち、ステップ６０５の処理でアクセスしたアドレスに対応するデータを、ステップ６０５の処理で取得した候補アドレスのデータと比較する。ステップ６０２の処理で保存されたＳＲＡＭ１０３のデータは、アドレスエラー発生前のＥＥＰＲＯＭ１０５のデータ値である。よって、ステップ６０５の処理でリードした候補アドレスのデータと一致しないアドレスは、誤ってライトされたアドレスであると判断することができる。ステップ６０５の処理でリードした候補アドレスのデータとステップ６０２の処理で保存されたデータとの両データが一致しない場合（ステップ６０６：Ｎ）はステップ６０７の処理に進み、一致する場合（ステップ６０６：Ｙ）はステップ６０８の処理に進む。
【００４９】
ステップ６０７の処理では、ステップ６０６の処理で使用したＳＲＡＭ１０３のデータを、ステップ６０５の処理でアクセスしたアドレスに対してライトする。これによって、誤ってライトされたアドレスのデータ値を、エラー発生前の値に訂正することが可能となる。
【００５０】
ステップ６０８の処理では、ステップ６０５、ステップ６０６のチェック処理を行う対象とするアドレスを、これまでチェックしたアドレスとは別の“第一群”又は“第二群”アドレスに変更する。ただし、既に“第一群”及び“第二群”の全てのアドレスがチェック済みの場合、変更は行わなくて良い。
【００５１】
ステップ６０９の処理では、ＥＥＰＲＯＭ１０５の全領域に対して、対応するＳＲＡＭ１０３のデータをライトする。誤ってライトされたアドレスのデータ値を、エラー発生前の値に訂正する。ステップ６１０の処理では、本来ライトしようとしていたアドレスに対して、リライトを行う。ステップ６１１の処理では、ステップ６０２の処理でＳＲＡＭ１０３に保存したデータのうち、ステップ６１０の処理で指定したアドレスに対応する保持データを、ステップ６１０の処理におけるライトデータに置き換える。
【００５２】
すなわち、汎用の通信ポートでは誤ってライトされたアドレスの特定が困難であるため、一般的には、ステップ６０９のように全領域へのアクセスによってしか誤ってライトされたアドレスの訂正ができない。これに対し、本実施形態では、ステップ６０３において誤ってライトされたアドレスの候補を推測し、ステップ６０５、ステップ６０６で候補アドレスをチェックする。これにより、誤ってライトされたアドレスを効率的に特定し、アドレスエラー訂正の時間を短縮することが可能となる。
【００５３】
次に、本実施形態に係る誤り訂正装置を用いてアドレスエラー訂正を行った場合の具体例について説明する。図７は、本実施形態に係る誤り訂正装置を用いてアドレスエラー訂正を行った場合の具体例について説明する図である。
【００５４】
図７において、図６のステップ６０１の処理、ステップ６０２の処理によって、アドレス“０ｘ０２”へのライトが行われる前の時点で、ＳＲＡＭ１０３には、ライト前の時点でのＥＥＰＲＯＭ１０５のメモリの値が保持データとして記憶されている。アドレスエラーが起きた状態４０２に対して、本実施形態におけるエラー検出を適用した場合の、図６で説明した処理内容を以下に示す。
【００５５】
ステップ６０３の処理では、ライトしようとしたアドレス“０ｘ０２”に対する第一群及び第二群を算出する。“０ｘ０２”に対する第一群は０ｘ００の一つだけで、第二群は存在しない。ステップ６０４の処理では、第一群のチェックが完了していない（ステップ６０４：Ｎ）ので、ステップ６０５の処理に進む。
【００５６】
状態７０１は、アドレスエラー検出後のＥＥＰＲＯＭ１０５の状態を表す（図４の状態４０３に等しい）。ステップ６０５の処理では、状態７０１において、候補アドレス“０ｘ００”のデータをリードし、データ“０ｘ１１”を得る。ステップ６０６の処理では、ステップ６０５の処理において得た候補アドレスのデータ“０ｘ１１”と、ＳＲＡＭ１０３の保持データのうちアドレス“０ｘ１１”に対応するデータ“０ｘ２ｂ”とを比較する。両者は不一致（ステップ６０６：Ｎ）なので、アドレス“０ｘ００”が誤ってライトされたアドレスであると特定することができた。そして、ステップ６０７の処理に進む。
【００５７】
ステップ６０７の処理では、アドレス“０ｘ００”に対して、ＳＲＡＭ１０３の保持データ“０ｘ２ｂ”をライトする。状態７０２は、このライトが完了した状態を表す。エラーが起こる前のＥＥＰＲＯＭ１０５のメモリ状態に一致する。
【００５８】
ステップ６１０の処理では、本来ライトしようとしていたアドレス“０ｘ０２”に、ライトデータ“０ｘ１１”をリライトする。状態７０３は、このリライトが完了した状態を表す。本来行おうとしていたアドレス“０ｘ０２”へのライトが完了している。以上により、本実施形態を適用することにより、状態４０２を、本来意図していたライト動作が完了した状態７０３に訂正することができた。
【００５９】
このように、本実施形態では、発生する可能性の高い、‘１’が‘０’に化ける１ビットエラーを仮定して誤ってライトされたアドレスを推測している。そして、そのアドレスを優先して誤ってライトされたか否かを確認するので、誤ってライトされたアドレスを効率的に特定することができる。
【００６０】
なお、図６に示した本実施形態に係る誤り訂正装置を用いて誤ってライトされたアドレスエラーを訂正する動作フローは、コンピュータ上のプログラムに実行させることもできる。すなわち、誤り訂正装置のマイクロコンピュータ１０１に内蔵されているＣＰＵ１０２が、ＥＥＰＲＯＭ１０５に格納されたプログラムをロードし、プログラムの各処理ステップが順次実行されることによって行われる。
【００６１】
以上説明したように、本発明によれば、誤ってライトされてしまったアドレスの特定及び訂正を効率的に行うことが可能な誤り訂正装置、誤り訂正装置の制御方法、及びプログラムを得ることができる。
【００６２】
以上、本発明の好適な実施形態により本発明を説明した。ここでは特定の具体例を示して本発明を説明したが、特許請求の範囲に定義された本発明の広範囲な趣旨及び範囲から逸脱することなく、これら具体例に様々な修正及び変更が可能である。
【符号の説明】
【００６３】
１０１    マイクロコンピュータ
１０２    ＣＰＵ
１０３    ＳＲＡＭ
１０４    内部バス
１０５    ＥＥＰＲＯＭ
１０６    ＳＣＬ
１０７    ＳＤＡ
３０１    ＦＥＴ
３０２    プルアップ抵抗
４０１、４０２、４０３、７０１、７０２、７０３    状態
【先行技術文献】
【特許文献】
【００６４】
【特許文献１】特開平０７−１０５１０２号公報
【図１】
2016076159.tif 000003
【図２】
2016076159.tif 000004
【図３】
2016076159.tif 000005
【図４】
2016076159.tif 000006
【図５】
2016076159.tif 000007
【図６】
2016076159.tif 000008
【図７】
2016076159.tif 000009
【図８】
2016076159.tif 000010