(57)【特許請求の範囲】
【請求項１】
メモリにデータを格納するための第１のアドレスに基づいて、前記データから生成された誤り検出符号を格納するための第２のアドレスを生成するアドレス変換回路と、
前記第１のアドレスに対して前記データの書き込みが要求された場合、前記第１のアドレスに前記データを書き込むとともに、前記第２のアドレスに前記誤り検出符号を書き込む書込回路と、
前記第１のアドレスに格納された前記データの読み出しが要求された場合、前記第１のアドレスから前記データを読み出すとともに、前記第２のアドレスから前記誤り検出符号を読み出し、当該データと当該誤り検出符号とに基づいてエラーを検出する読出回路と、を備え、
前記アドレス変換回路は、前記第１のアドレスの少なくとも１つのビットの値を変更し、前記誤り検出符号の格納位置が前記データの格納位置に対してオフセットされるようにするとともに、それ以外のビットのうちの所定数ビットの値の反転又は並べ替えをしたアドレスを前記第２のアドレスとして生成し、
第１のモードが指定されている場合、前記第１のアドレスの少なくとも１つのビット以外のビットの値を反転したアドレスを前記第２のアドレスとして生成し、
第２のモードが指定されている場合、前記第１のアドレスの少なくとも１つのビット以外のビットの値を反転し、下位から所定のオフセットビット数のビットを除くビットを、前記オフセットビット数だけ下位方向にシフトするとともに、上位から前記オフセットビット数のオフセットビットを、設定されたオフセット値に変更する、
半導体装置。
【請求項２】
前記アドレス変換回路は、前記所定数ビットの値を反転したアドレスを前記第２のアドレスとして生成する、
請求項１に記載の半導体装置。
【請求項３】
前記アドレス変換回路は、前記所定数ビットを並べ替えたアドレスを前記第２のアドレスとして生成する、
請求項１に記載の半導体装置。
【請求項４】
前記アドレス変換回路は、前記所定数ビットを上位方向又は下位方向にシフトしたアドレスを前記第２のアドレスとして生成する、
請求項３に記載の半導体装置。
【請求項５】
前記アドレス変換回路は、前記所定数ビットの並び順を反転したアドレスを前記第２のアドレスとして生成する、
請求項３に記載の半導体装置。
【請求項６】
前記アドレス変換回路は、前記第１のアドレスの少なくとも１つのビット以外のビットのうち、下位から所定のオフセットビット数のビットを除くビットを、前記オフセットビット数だけ下位方向にシフトするとともに、上位から前記オフセットビット数のオフセットビットを、設定されたオフセット値に変更したアドレスを前記第２のアドレスとして生成する、
請求項１に記載の半導体装置。
【請求項７】
前記アドレス変換回路は、前記第１のアドレスのうち、下位から所定のオフセットビット数のビットを除くビットを、前記オフセットビット数だけ下位方向にシフトするとともに、上位から前記オフセットビット数のオフセットビットを、設定されたオフセット値に変更したアドレスを前記第２のアドレスとして生成する、
請求項１に記載の半導体装置。
【請求項８】
メモリにデータを格納するための第１のアドレスに基づいて、前記データから生成された誤り検出符号を格納するための第２のアドレスを生成するアドレス変換回路と、
前記第１のアドレスに対して前記データの書き込みが要求された場合、前記第１のアドレスに前記データを書き込むとともに、前記第２のアドレスに前記誤り検出符号を書き込む書込回路と、
前記第１のアドレスに格納された前記データの読み出しが要求された場合、前記第１のアドレスから前記データを読み出すとともに、前記第２のアドレスから前記誤り検出符号を読み出し、当該データと当該誤り検出符号とに基づいてエラーを検出する読出回路と、を備え、
前記アドレス変換回路は、前記第１のアドレスの少なくとも１つのビットの値を変更し、前記誤り検出符号の格納位置が前記データの格納位置に対してオフセットされるようにするとともに、それ以外のビットのうちの所定数ビットの値の反転又は並べ替えをしたアドレスを前記第２のアドレスとして生成し、
第１のモードが指定されている場合、前記第１のアドレスの少なくとも１つのビット以外のビットを、所定のオフセットビット数だけ下位方向にシフトしたアドレスを前記第２のアドレスとして生成し、
第２のモードが指定されている場合、前記第１のアドレスの少なくとも１つのビット以外のビットのうち、下位から前記オフセットビット数のビットを除くビットを、前記オフセットビット数だけ下位方向にシフトするとともに、上位から前記オフセットビット数のオフセットビットを、設定されたオフセット値に変更したアドレスを前記第２のアドレスとして生成する、
半導体装置。
【請求項９】
メモリにデータを格納するための第１のアドレスに基づいて、前記データから生成された誤り検出符号を格納するための第２のアドレスを生成するアドレス変換回路と、
前記第１のアドレスに対して前記データの書き込みが要求された場合、前記第１のアドレスに前記データを書き込むとともに、前記第２のアドレスに前記誤り検出符号を書き込む書込回路と、
前記第１のアドレスに格納された前記データの読み出しが要求された場合、前記第１のアドレスから前記データを読み出すとともに、前記第２のアドレスから前記誤り検出符号を読み出し、当該データと当該誤り検出符号とに基づいてエラーを検出する読出回路と、を備え、
前記アドレス変換回路は、前記第１のアドレスの少なくとも１つのビットの値を変更し、前記誤り検出符号の格納位置が前記データの格納位置に対してオフセットされるようにするとともに、それ以外のビットのうちの所定数ビットの値の反転又は並べ替えをしたアドレスを前記第２のアドレスとして生成し、
第１のモードが指定されている場合、前記第１のアドレスの少なくとも１つのビット以外のビットの値を反転したアドレスを前記第２のアドレスとして生成し、
第２のモードが指定されている場合、前記第１のアドレスの少なくとも１つのビット以外のビットのうち、下位から所定のオフセットビット数のビットを除くビットを、前記オフセットビット数だけ下位方向にシフトするとともに、上位から前記オフセットビット数のオフセットビットを、設定されたオフセット値に変更したアドレスを前記第２のアドレスとして生成する、
半導体装置。
【請求項１０】
前記データの書き込みは、バスマスタから要求されるものであり、
前記バスマスタは、前記データの書き込みが行われる単位時間の間、前記データの書き込みを有効にするイネーブル信号を前記メモリに出力し、
前記半導体装置は、さらに、前記バスマスタからの前記データの書き込みを有効にするイネーブル信号に応じて、前記単位時間の間、前記バスマスタの動作を許容する第１のウエイト信号に代えて、前記バスマスタの動作を抑止する第２のウエイト信号を前記バスマスタに出力する制御回路を備え、
前記書込回路は、前記第２のウエイト信号の出力に応じて、前記第１のアドレスに前記データを書き込み、その後の前記第１のウエイト信号の出力に応じて、前記第２のアドレスに前記誤り検出符号を書き込む、
請求項１に記載の半導体装置。
【請求項１１】
前記メモリは、前記アドレス変換回路から入力されるアドレス信号が示すアドレスに、前記書込回路から入力されるライトデータを格納するものであり、
前記アドレス変換回路は、前記第２のウエイト信号の出力に応じて、前記第１のアドレスを示すアドレス信号を前記メモリに出力するとともに、その後の前記第１のウエイト信号の出力に応じて、前記第２のアドレスを示すアドレス信号を前記メモリに出力し、
前記書込回路は、前記第２のウエイト信号の出力に応じて、前記ライトデータとして、前記データをメモリに出力し、その後の前記第１のウエイト信号の出力に応じて、前記ライトデータとして、前記誤り検出符号をメモリに出力する、
請求項１０に記載の半導体装置。
【請求項１２】
前記第２のウエイト信号は、前記第１のアドレスの少なくとも１つのビットの値として利用され、
前記第１のウエイト信号は、前記第１のアドレスの少なくとも１つのビットの値の変更後の値として利用される、
請求項１０に記載の半導体装置。
【請求項１３】
前記データの読み出しは、バスマスタから要求されるものであり、
前記バスマスタは、前記データの読み出しが行われる単位時間の間、前記データの読み出しを有効にするイネーブル信号を前記メモリに出力し、
前記半導体装置は、さらに、前記バスマスタからの前記データの読み出しを有効にするイネーブル信号に応じて、前記単位時間の間、前記バスマスタの動作を許容する第１のウエイト信号に代えて、前記バスマスタの動作を抑止する第２のウエイト信号を、前記バスマスタに出力する制御回路を備え、
前記読出回路は、前記第２のウエイト信号の出力に応じて、前記第１のアドレスから前記データを読み出し、その後の前記第１のウエイト信号の出力に応じて、前記第２のアドレスから前記誤り検出符号を読み出す、
請求項１に記載の半導体装置。
【請求項１４】
前記読出回路は、前記第２のウエイト信号の出力に応じて、前記メモリから読み出したデータを保持し、その後の前記第１のウエイト信号の出力に応じて、前記メモリから読み出した誤り検出符号と、前記保持したデータとに基づいてエラーを検出する、
請求項１３に記載の半導体装置。
【請求項１５】
前記データの書き込み及び前記データの読み出しの各々は、バスマスタから前記第１のアドレスを示す第１のパケットを受信することで、前記バスマスタから要求されるものであり、
前記半導体装置は、さらに、
前記バスマスタから受信した第１のパケットを格納するバッファと、
前記第１のパケットが示すアドレスに基づいて、前記データの書き込み又は前記データの読み出しを実行するインタフェース回路と、を備え、
前記アドレス変換回路は、前記バッファに格納された第１のパケットが示す第１のアドレスに基づいて、前記第２のアドレスを示す第２のパケットを生成し、
前記書込回路は、前記バスマスタから受信した前記第１のパケットを前記インタフェース回路に送信し、前記アドレス変換回路が生成した前記第２のパケットを前記インタフェース回路に送信することで、前記第１のアドレスへの前記データの書き込みと、前記第２のアドレスへの前記誤り検出符号の書き込みとを実行し、
前記読出回路は、前記バスマスタから受信した前記第１のパケットを前記インタフェース回路に送信し、前記アドレス変換回路が生成した前記第２のパケットを前記インタフェース回路に送信することで、前記第１のアドレスからのデータの読み出しと、前記第２のアドレスからの前記誤り検出符号の読み出しとを実行する、
請求項１に記載の半導体装置。
【請求項１６】
前記アドレス変換回路は、前記所定数ビットの値を反転したアドレスを前記第２のアドレスとして生成し、
前記インタフェース回路は、セットアソシアティブ方式で前記メモリのデータをキャッシュするキャッシュメモリを有しており、
前記キャッシュメモリの各ウェイは、前記所定数ビットの少なくとも１ビットを含むウェイアドレスでタグ付けされている、
請求項１５に記載の半導体装置。
【請求項１７】
前記半導体装置は、さらに、前記第１のモード又は前記第２のモードを示す値が設定される記憶部を有し、前記記憶部に設定された前記第１のモード又は前記第２のモードを前記アドレス変換回路に指定するモード制御回路を備えた、
請求項８に記載の半導体装置。
【請求項１８】
メモリにデータを格納するための第１のアドレスに対して前記データの書き込みが要求された場合、前記第１のアドレスに前記データを書き込む第１の書込ステップと、
前記第１のアドレスに基づいて、前記データから生成された誤り検出符号を格納するための第２のアドレスを生成し、生成した第２のアドレスに前記誤り検出符号を書き込む第２の書込ステップと、
前記第１のアドレスに格納された前記データの読み出しが要求された場合、前記第１のアドレスから前記データを読み出す第１の読出ステップと、
前記第１のアドレスに基づいて前記第２のアドレスを生成し、生成した第２のアドレスから前記誤り検出符号を読み出し、当該データと当該誤り検出符号とに基づいてエラーを検出する第２の読出ステップと、を備え、
前記第２の書込ステップ及び前記第２の読出ステップの各々は、前記第１のアドレスの少なくとも１つのビットの値を変更し、前記誤り検出符号の格納位置が前記データの格納位置に対してオフセットされるようにするとともに、それ以外のビットのうちの所定数ビットの値の反転又は並べ替えをしたアドレスを前記第２のアドレスとして生成し、
第１のモードが指定されている場合、前記第１のアドレスの少なくとも１つのビット以外のビットの値を反転したアドレスを前記第２のアドレスとして生成し、
第２のモードが指定されている場合、前記第１のアドレスの少なくとも１つのビット以外のビットの値を反転し、下位から所定のオフセットビット数のビットを除くビットを、前記オフセットビット数だけ下位方向にシフトするとともに、上位から前記オフセットビット数のオフセットビットを、設定されたオフセット値に変更する、
メモリアクセス制御方法。
【請求項１９】
メモリにデータを格納するための第１のアドレスに対して前記データの書き込みが要求された場合、前記第１のアドレスに前記データを書き込む第１の書込ステップと、
前記第１のアドレスに基づいて、前記データから生成された誤り検出符号を格納するための第２のアドレスを生成し、生成した第２のアドレスに前記誤り検出符号を書き込む第２の書込ステップと、
前記第１のアドレスに格納された前記データの読み出しが要求された場合、前記第１のアドレスから前記データを読み出す第１の読出ステップと、
前記第１のアドレスに基づいて前記第２のアドレスを生成し、生成した第２のアドレスから前記誤り検出符号を読み出し、当該データと当該誤り検出符号とに基づいてエラーを検出する第２の読出ステップと、を備え、
前記第２の書込ステップ及び前記第２の読出ステップの各々は、前記第１のアドレスの少なくとも１つのビットの値を変更し、前記誤り検出符号の格納位置が前記データの格納位置に対してオフセットされるようにするとともに、それ以外のビットのうちの所定数ビットの値の反転又は並べ替えをしたアドレスを前記第２のアドレスとして生成し、
第１のモードが指定されている場合、前記第１のアドレスの少なくとも１つのビット以外のビットを、所定のオフセットビット数だけ下位方向にシフトしたアドレスを前記第２のアドレスとして生成し、
第２のモードが指定されている場合、前記第１のアドレスの少なくとも１つのビット以外のビットのうち、下位から前記オフセットビット数のビットを除くビットを、前記オフセットビット数だけ下位方向にシフトするとともに、上位から前記オフセットビット数のオフセットビットを、設定されたオフセット値に変更したアドレスを前記第２のアドレスとして生成する、
メモリアクセス制御方法。
【請求項２０】
メモリにデータを格納するための第１のアドレスに対して前記データの書き込みが要求された場合、前記第１のアドレスに前記データを書き込む第１の書込ステップと、
前記第１のアドレスに基づいて、前記データから生成された誤り検出符号を格納するための第２のアドレスを生成し、生成した第２のアドレスに前記誤り検出符号を書き込む第２の書込ステップと、
前記第１のアドレスに格納された前記データの読み出しが要求された場合、前記第１のアドレスから前記データを読み出す第１の読出ステップと、
前記第１のアドレスに基づいて前記第２のアドレスを生成し、生成した第２のアドレスから前記誤り検出符号を読み出し、当該データと当該誤り検出符号とに基づいてエラーを検出する第２の読出ステップと、を備え、
前記第２の書込ステップ及び前記第２の読出ステップの各々は、前記第１のアドレスの少なくとも１つのビットの値を変更し、前記誤り検出符号の格納位置が前記データの格納位置に対してオフセットされるようにするとともに、それ以外のビットのうちの所定数ビットの値の反転又は並べ替えをしたアドレスを前記第２のアドレスとして生成し、
第１のモードが指定されている場合、前記第１のアドレスの少なくとも１つのビット以外のビットの値を反転したアドレスを前記第２のアドレスとして生成し、
第２のモードが指定されている場合、前記第１のアドレスの少なくとも１つのビット以外のビットのうち、下位から所定のオフセットビット数のビットを除くビットを、前記オフセットビット数だけ下位方向にシフトするとともに、上位から前記オフセットビット数のオフセットビットを、設定されたオフセット値に変更したアドレスを前記第２のアドレスとして生成する、
メモリアクセス制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置及びメモリアクセス制御方法に関し、例えば、データと、そのデータから生成された誤り検出符号とをメモリに格納する技術に関する。
【背景技術】
【０００２】
特許文献１には、その図４において、従来例として、メモリ制御回路が開示されている。このメモリ制御回路は、アドレス／コントロール線制御回路と、ＥＣＣ回路とを有する。ＣＰＵからアドレス及びデータがメモリ制御回路に送られると、ＥＣＣ回路は、データからＥＣＣデータを生成し、メモリの指定されたアドレスに書き込む。データを読み出す際、ＥＣＣ回路は、メモリから読み出されたデータから新たなＥＣＣデータを作成し、メモリから読み出されたＥＣＣデータと新たに作成したＥＣＣデータとを比較して、データの誤り検出及び修正を行う。
【０００３】
しかしながら、このメモリ制御回路では、アドレス／コントロール線制御回路からメモリに対してアドレスを指定するためのアドレス信号線のいずれかにおいて、その値が固着する故障が発生した場合におけるアドレス間違いを検出することができないという問題がある。その理由は、メモリに対して指定されたアドレスに、データと、そのデータから作成したＥＣＣデータとを書き込むようにしているからである。そのため、期待と異なるアドレスから、データとＥＣＣデータとを読み出したとしても、読み出されたＥＣＣデータと新たに作成したＥＣＣデータとの比較で不一致として検出されることは無いからである。
【０００４】
ここで、この問題に対して、特許文献１に開示の計算機システムでは、データを書き込むアドレスと、ＥＣＣデータを書き込むアドレスとを別々に指定するようにしている。しかしながら、この技術は、上記のような問題を解決するために、本明細書において開示されている技術とは全く異なるものである。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平５−８８９９２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述したように、特許文献１に開示の技術では、メモリアクセスに関して、アドレス信号系の故障を検出することができないという問題があった。
【０００７】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００８】
一実施の形態によれば、半導体装置は、データを格納するための第１のアドレスの少なくとも１つのビットの値を変更し、誤り検出符号の格納位置がデータの格納位置に対してオフセットされるようにするとともに、それ以外のビットのうちの所定数ビットの値の反転又は並べ替えをしたアドレスを、誤り検出符号を格納するための第２のアドレスとして生成するものである。
【発明の効果】
【０００９】
前記一実施の形態によれば、メモリアクセスに関して、アドレス信号系の故障を検出することができる。
【図面の簡単な説明】
【００１０】
【図１】実施の形態１に係るＣＰＵシステムの構成を示すブロック図である。
【図２】実施の形態１に係るＩ／Ｆ変換回路の構成を示すブロック図である。
【図３】実施の形態１に係るＡＤＲ反転回路の構成を示すブロック図である。
【図４】実施の形態１に係る内蔵メモリのメモリマップのイメージ図である。
【図５】実施の形態１に係るＩ／Ｆ変換回路の動作を示す概念図である。
【図６】ＡＤＲ反転を行わない場合における動作を示す概念図である。
【図７】実施の形態１に係るＳｔｕｃｋ−ａｔ故障発生時のアドレス信号の値の変化を示す図である。
【図８】ＡＤＲ反転を行わない場合におけるＳｔｕｃｋ−ａｔ故障発生時のアドレス信号の値の変化を示す図である。
【図９】実施の形態２に係るＩ／Ｆ変換回路の構成を示すブロック図である。
【図１０】実施の形態２に係るＡＤＲローテーション回路の構成を示すブロック図である。
【図１１】実施の形態２に係る内蔵メモリのメモリマップのイメージ図である。
【図１２】実施の形態２に係るＩ／Ｆ変換回路の動作（第１の例）を示す概念図である。
【図１３】実施の形態２に係るＳｔｕｃｋ−ａｔ故障発生時のアドレス信号の値の変化（第１の例）を示す図である。
【図１４】実施の形態２に係るＩ／Ｆ変換回路の動作（第２の例）を示す概念図である。
【図１５】ＡＤＲ反転を行う場合における動作（第２の例）を示す概念図である。
【図１６】実施の形態２に係るＳｔｕｃｋ−ａｔ故障発生時のアドレス信号の値の変化（第２の例）を示す図である。
【図１７】ＡＤＲ反転を行う場合におけるＳｔｕｃｋ−ａｔ故障発生時のアドレス信号の値の変化（第２の例）を示す図である。
【図１８】実施の形態３に係るＡＤＲローテーション回路の構成を示すブロック図である。
【図１９】実施の形態３に係る内蔵メモリのメモリマップのイメージ図である。
【図２０】実施の形態３に係るＳｔｕｃｋ−ａｔ故障発生時のアドレス信号の値の変化を示す図である。
【図２１】実施の形態３に係る他のＳｔｕｃｋ−ａｔ故障発生時のアドレス信号の値の変化を示す図である。
【図２２】実施の形態４に係るＩ／Ｆ変換回路の構成を示すブロック図である。
【図２３】実施の形態４に係るＡＤＲビット順逆転回路の構成を示すブロック図である。
【図２４】実施の形態４に係る他のＡＤＲビット順逆転回路の構成を示すブロック図である。
【図２５】２ビットのアドレスのアドレスビット入れ替えのパターンを示す図である。
【図２６】３ビットのアドレスのアドレスビット入れ替えのパターンを示す図である。
【図２７】４ビットのアドレスのアドレスビット入れ替えのパターンを示す図である。
【図２８】アドレスビット入れ替えのパターン数を算出する式を示す図である。
【図２９】実施の形態５に係るＡＤＲローテーション回路の構成を示すブロック図である。
【図３０】実施の形態５に係る他のＡＤＲローテーション回路の構成を示すブロック図である。
【図３１】実施の形態５に係る内蔵メモリのメモリマップのイメージ図である。
【図３２】実施の形態６に係るＩ／Ｆ変換回路の構成を示すブロック図である。
【図３３】実施の形態６に係るＡＤＲシフト＆オフセット設定回路の構成を示すブロック図である。
【図３４】Ｎ＝４ビットの場合のＡＤＲシフト＆オフセット設定回路の構成を示すブロック図である。
【図３５】実施の形態６に係る内蔵メモリのメモリマップのイメージ図である。
【図３６】実施の形態６に係るＳｔｕｃｋ−ａｔ故障発生時のアドレス信号の値の変化を示す図である。
【図３７】実施の形態７に係るＩ／Ｆ変換回路におけるＡＤＲ変換回路の構成を示すブロック図である。
【図３８】実施の形態７に係るＡＤＲシフト＆オフセット設定回路の構成を示すブロック図である。
【図３９】実施の形態７に係る内蔵メモリのメモリマップのイメージ図である。
【図４０】実施の形態８に係るＡＤＲシフト＆オフセット設定回路の構成を示すブロック図である。
【図４１】実施の形態９に係るＩ／Ｆ変換回路の構成を示すブロック図である。
【図４２】実施の形態９に係るＡＤＲ反転シフト＆オフセット設定回路の構成を示すブロック図である。
【図４３】実施の形態１０に係るＡＤＲシフト＆オフセット回路の構成を示すブロック図である。
【図４４】実施の形態１０に係るＡＤＲ選択回路の構成を示すブロック図である。
【図４５】実施の形態１１に係るＣＰＵシステムの構成を示すブロック図である。
【図４６】実施の形態１１に係る変換回路の構成を示すブロック図である。
【図４７】実施の形態１１の効果を説明するための図である。
【図４８】実施の形態１２に係るＩ／Ｆ変換回路の構成を示すブロック図である。
【図４９】実施の形態１２に係る内蔵メモリのメモリマップのイメージ図である。
【図５０】実施の形態１２に係るアドレス変換によるアドレスの変化を示す図である。
【図５１】実施の形態１〜１２の概略構成となる半導体装置を示す図である。
【発明を実施するための形態】
【００１１】
以下に図面を参照しながら、好適な実施の形態について説明する。以下の実施の形態に示す具体的な数値等は、実施の形態の理解を容易とするための例示にすぎず、特に断る場合を除き、それに限定されるものではない。また、以下の記載及び図面では、説明の明確化のため、当業者にとって自明な事項については、適宜、省略及び簡略化がなされている。
【００１２】
＜実施の形態１＞
まず、実施の形態１について、図面を用いて、その構成と動作を説明する。図１を参照して、本実施の形態１に係るＣＰＵ（Central Processing Unit）システム１の構成について説明する。図１に示すように、ＣＰＵシステム１は、ＣＰＵ１０と、コントロール入力Ｉ／Ｆ１１と、コマンド出力Ｉ／Ｆ１２と、Ｉ／Ｆ変換回路１３と、内蔵メモリ１４と、ＤＭＡＣ（Direct Memory Access Controller）１５と、その他周辺回路１６と、その他Ｉ／Ｆ１７とを有する。
【００１３】
ＣＰＵ１０、コントロール入力Ｉ／Ｆ１１、コマンド出力Ｉ／Ｆ１２、Ｉ／Ｆ変換回路１３、ＤＭＡＣ１５、その他周辺回路１６、及び、その他Ｉ／Ｆ１７は、システムバスを介して相互に接続されている。また、内蔵メモリ１４は、Ｉ／Ｆ変換回路１３を介してシステムバスと接続されている。
【００１４】
本実施の形態１では、ＣＰＵシステム１が、自動車に搭載される車載制御システムである例について説明するが、これに限られない。ＣＰＵシステム１は、ＣＰＵシステム１に対してデータを入力する入力ユニットと、ＣＰＵシステム１が入力ユニットから入力されたデータに基づいて制御する制御ユニットとを有する任意の機器（例えば、自動車又はオートバイ等の輸送機器、重機等の建設機器、もしくは、製造ロボット等の産業機器）に搭載してもよい。また、ＣＰＵシステム１は、メモリと、メモリにアクセスする装置（例えばＣＰＵ）とを有する機器であれば、それ以外の機器（例えばパーソナルコンピューター又はスマートフォン等の情報機器）に搭載される情報処理システムであってもよい。
【００１５】
また、ＣＰＵシステム１は、例えば、マイクロコントローラ（半導体装置）に構築される。そして、このＣＰＵシステム１は、他のマイクロコントローラ（図１では「サブマイコン」）と連携をとり、自動車を制御することが可能である。
【００１６】
入力ユニットは、自動車に搭載されている装置である。入力ユニットは、ユーザから制御ユニットの制御を指示する入力を受ける。入力ユニットは、例えば、キーユニット又はスイッチ（図１では「ＳＷ」）等である。入力ユニットは、ユーザからの入力に応じて、その入力内容を示す入力データをＣＰＵシステム１に送信する。
【００１７】
制御ユニットは、自動車に搭載されている装置である。制御ユニットは、ＣＰＵシステム１によって制御される。制御ユニットは、例えば、ドア又はミラー等である。ＣＰＵシステム１は、入力ユニットから受信した入力データが示す入力内容に基づいて、制御ユニットの制御内容を示す制御データであるコマンドを生成し、制御ユニットに送信する。制御ユニットは、ＣＰＵシステム１からのコマンドに応じて、そのコマンドが示す制御内容で動作する。
【００１８】
ＣＰＵ１０は、入力ユニットからの入力データに基づいて、制御データを生成する。例えば、ＣＰＵ１０は、ドアに対する制御データであれば、制御内容として、ドアの開閉を指示する制御データを生成する。また、例えば、ＣＰＵ１０は、ミラーに対する制御データであれば、制御内容として、ミラーの位置の調整を指示する制御データを生成する。
【００１９】
コントロール入力Ｉ／Ｆ１１は、入力ユニットとシステムバスとを接続するインタフェース回路である。すなわち、コントロール入力Ｉ／Ｆ１１は、入力ユニットから制御ユニットを制御するための入力データが入力される。コマンド出力Ｉ／Ｆ１２は、制御ユニットとシステムバスとを接続するインタフェース回路である。すなわち、コマンド出力Ｉ／Ｆ１２は、制御ユニットを制御するためのコマンドを、制御ユニットに出力する。
【００２０】
Ｉ／Ｆ変換回路１３は、内蔵メモリ１４とシステムバスとを接続するインタフェース回路である。Ｉ／Ｆ変換回路１３は、ＣＰＵ１０及びＤＭＡＣ１５の各々からのデータの書き込みの要求に応じて、内蔵メモリ１４にデータを書き込む。Ｉ／Ｆ変換回路１３は、ＣＰＵ１０及びＤＭＡＣ１５の各々からのデータの読み出しの要求に応じて、内蔵メモリ１４からデータを読み出す。また、Ｉ／Ｆ変換回路１３は、ＣＰＵ１０及びＤＭＡＣ１５の各々からの要求に応じて、内蔵メモリ１４にアクセス（データの書き込み又はデータの読み出し）をする際に、データ信号系及びアドレス信号系の故障を検出するための処理を実行する。
【００２１】
より具体的には、Ｉ／Ｆ変換回路１３は、内蔵メモリ１４に対してデータを書き込む際に、そのデータから生成したＥＣＣ（Error Correcting Code：エラー訂正符号）も内蔵メモリ１４に書き込む。また、Ｉ／Ｆ変換回路１３は、内蔵メモリ１４からデータを読み出す際に、読み出したデータからＥＣＣを生成し、生成したＥＣＣと、そのデータと共に内蔵メモリ１４に書き込んでいたＥＣＣとを比較することで故障を検出する。本実施の形態１では、後述するように、データを格納するアドレスからＥＣＣを格納するアドレスを生成することで、データ信号系の故障のみならず、アドレス信号系の故障も検出可能とする。
【００２２】
内蔵メモリ１４は、各種データが格納される記憶回路である。すなわち、内蔵メモリ１４には、例えば、上述の入力データ、制御データ（コマンド）及びＥＣＣ等が格納される。
【００２３】
ＤＭＡＣ１５は、システムバスに接続された各回路１０〜１３、１６、１７の間でのデータ転送を実現する。例えば、ＤＭＡＣ１５は、入力ユニットからコントロールＩ／Ｆ１１に入力された入力データをＩ／Ｆ変換回路１３に転送し、転送した入力データの内蔵メモリ１４への書き込みをＩ／Ｆ変換回路１３に要求する。また、例えば、ＤＭＡＣ１５は、内蔵メモリ１４からのコマンドの読み出しをＩ／Ｆ変換回路１３に要求し、Ｉ／Ｆ変換回路１３が読み出したコマンドをコマンド出力Ｉ／Ｆ１２に転送する。これにより、コマンドが制御ユニットに出力される。
【００２４】
ここで、ＣＰＵ１０は、ＤＭＡＣ１５によって内蔵メモリ１４に格納された入力データの読み出しをＩ／Ｆ変換回路１３に要求し、Ｉ／Ｆ変換回路１３が読み出した入力データを取得する。ＣＰＵ１０は、取得した入力データに基づいてコマンドを生成し、生成したコマンドの内蔵メモリ１４への書き込みをＩ／Ｆ変換回路１３に要求する。これにより、内蔵メモリ１４に格納されたコマンドは、上述したようにＤＭＡＣ１５によって転送される。
【００２５】
ＣＰＵシステム１は、その他周辺回路１６として任意の回路を備えるようにしてよい。その他Ｉ／Ｆ１７は、サブマイコン等の車載制御システムが備える他のユニットとシステムバスとを接続するためのインタフェース回路である。
【００２６】
以上に説明したように、ＣＰＵ１０及びＤＭＡＣ１５は、バスマスタとして動作する。他の回路１１〜１３、１６、１７は、バススレーブとして動作する。
【００２７】
続いて、図２を参照して、本実施の形態１に係るＩ／Ｆ変換回路１３の構成について説明する。図２に示すように、Ｉ／Ｆ変換回路１３は、Ｉ／Ｆ制御回路１１０と、ＡＤＲ変換回路１２０と、ＷＤＴ変換回路１３０と、ＲＤＴ変換回路１４０とを有する。ここで、「ＡＤＲ」はアドレスを示し、「ＷＤＴ」は書き込みデータを示し、「ＲＤＴ」は読み出しデータを示す略称である。
【００２８】
バスマスタは、イネーブル（セレクト）信号、ライト／リード信号、アドレス信号及びライトデータを、システムバスを介してＩ／Ｆ変換回路１３に出力する。Ｉ／Ｆ変換回路１３は、ウエイト＃信号、リードデータ及びエラー通知信号を、システムバスを介してバスマスタに出力する。Ｉ／Ｆ変換回路１３及び内蔵メモリ１４は、クロック生成回路（図示せず）から入力されるクロック信号に基づいて動作する。なお、ウエイト＃信号の「＃」は、ウエイト＃信号がローアクティブな信号であることを示す記号である。
【００２９】
なお、ここでは、イネーブル信号が１ビットであり、ライト／リード信号が１ビットであり、アドレス信号がＮビットであり（Ｎは所定の正整数）、ライトデータが８ビットであり、ウエイト＃信号が１ビットであり、リードデータが８ビットであり、エラー通知信号が１ビットである例について説明する。
【００３０】
バスマスタは、内蔵メモリ１４に対してデータを書き込む場合、データの書き込みを要求する信号として、アサートしたイネーブル信号（例えば値は“１”）と、データの書き込みを指定するライト／リード信号（例えば値は“０”）と、データを書き込むアドレスを示すアドレス信号と、書き込むデータとなるライトデータとを、Ｉ／Ｆ変換回路１３に出力する。これに応じて、Ｉ／Ｆ変換回路１３は、内蔵メモリ１４のうち、アドレス信号が示すアドレスにライトデータを書き込む。また、この際、Ｉ／Ｆ変換回路１３は、そのライトデータから生成したＥＣＣも内蔵メモリ１４に書き込む。
【００３１】
また、バスマスタは、内蔵メモリ１４からデータを読み出す場合、アサートしたイネーブル信号（例えば値は“１”）と、データの読み出しを指定するライト／リード信号（例えば値は“１”）と、データを読み出すアドレスを示すアドレス信号とを、Ｉ／Ｆ変換回路１３に出力する。これに応じて、Ｉ／Ｆ変換回路１３は、内蔵メモリ１４のうち、アドレス信号が示すアドレスに格納されたデータを読み出し、リードデータとしてバスマスタに出力する。また、この際に、Ｉ／Ｆ変換回路１３は、そのデータに対応するＥＣＣを内蔵メモリ１４から読み出し、読み出したＥＣＣとデータとに基づいて、データに誤りが発生しているか否かを判定する。Ｉ／Ｆ変換回路１３は、この判定によってデータの誤りが検出された場合、エラーを通知するエラー通知信号をバスマスタに出力する。ただし、１ビット誤りの場合には、バスマスタに出力するリードデータを訂正する。
【００３２】
Ｉ／Ｆ制御回路１１０は、バスマスタが内蔵メモリ１４に対してアクセスする場合に、バスマスタに対して１クロックサイクル分だけウエイトをかけることで、そのアクセスを２クロックサイクルまで延ばす。そして、Ｉ／Ｆ制御回路１１０は、ＡＤＲ変換回路１２０、ＷＤＴ変換回路１３０及びＲＤＴ変換回路１４０を、１クロックサイクル目ではデータに関する動作を行わせ、２クロックサイクル目ではＥＣＣに関する動作を行わせるように制御する。すなわち、Ｉ／Ｆ制御回路１１０は、バスマスタからの信号の出力を２クロックサイクル目まで延ばすことで、２クロックサイクル目でその信号に基づいたＥＣＣに関する動作を可能とする。
【００３３】
Ｉ／Ｆ制御回路１１０は、イネーブル信号保持回路１１１と、ウエイト信号生成回路１１２とを有する。
【００３４】
イネーブル信号保持回路１１１は、バスマスタが内蔵メモリ１４に対してアクセスした際に、クロック信号に基づいて、１クロックサイクル目でアサートされたイネーブル信号の値を保持し、２クロックサイクル目で保持した値の反転出力となる信号をウエイト信号生成回路１１２に出力する。すなわち、バスマスタから出力されたイネーブル信号は、Ｉ／Ｆ変換回路１３を介して内蔵メモリ１４にそのまま入力されるとともに、Ｉ／Ｆ制御回路１１０にも入力される。イネーブル信号保持回路１１１は、例えば、ＦＦ（Flip-Flop）回路である。
【００３５】
すなわち、イネーブル信号保持回路１１１は、１クロックサイクル目では、その１クロックサイクル前のデアサートされたイネーブル信号（例えば値は“０”）に基づいて、その反転出力となる信号（例えば値は“１”）をウエイト信号生成回路１１２に出力する。次に、イネーブル信号保持回路１１１は、２クロックサイクル目では、その１クロックサイクル前（１クロックサイクル目）のアサートされたイネーブル信号（例えば値は“１”）に基づいて、その反転出力となる信号（例えば値は“０”）をウエイト信号生成回路１１２に出力する。
【００３６】
ここで、イネーブル信号は、データの書き込み及び読み出しを有効にするか無効にするかを指示する信号である。イネーブル信号は、データの書き込み及び読み出しを有効にする場合、アサートされる。イネーブル信号は、データの書き込み及び読み出しを無効にする場合、デアサートされる。
【００３７】
内蔵メモリ１４は、アサートされたイネーブル信号が入力されている場合、後述するようにＩ／Ｆ変換回路１３から入力されるライト／リード信号（書き込み指定）、アドレス信号及びライトデータに基づいて、内蔵メモリ１４にデータを書き込む。一方、内蔵メモリ１４は、デアサートされたイネーブル信号が入力されている場合、ライト／リード信号、アドレス信号及びライトデータの入力に関わらず、内蔵メモリ１４へのデータの書き込みは行わない。
【００３８】
また、内蔵メモリ１４は、アサートされたイネーブル信号が入力されている場合、後述するようにＩ／Ｆ変換回路１３から入力されるライト／リード信号（読み出し指定）及びアドレス信号に基づいて、内蔵メモリ１４からデータを読み出す。一方、内蔵メモリ１４は、デアサートされたイネーブル信号が入力されている場合、ライト／リード信号及びアドレス信号の入力に関わらず、内蔵メモリ１４からのデータの読み出しは行わない。
【００３９】
ウエイト信号生成回路１１２は、バスマスタから入力されるイネーブル信号と、イネーブル信号保持回路１１１から入力される信号のＮＡＮＤ演算結果となる信号を、ウエイト＃信号としてバスマスタに出力する。ウエイト信号生成回路１１２は、例えば、ＮＡＮＤ（否定的論理積）回路である。
【００４０】
すなわち、ウエイト信号生成回路１１２は、１クロックサイクル目では、アサートされたイネーブル信号（例えば値は“１”）と、イネーブル信号保持回路１１１からからの信号（例えば値は“１”）とに基づいて、アサートされたウエイト＃信号（例えば値は“０”）をバスマスタに出力する。このアサートされたウエイト＃信号が入力されている間、バスマスタは、その動作を停止する。次に、ウエイト信号生成回路１１２は、２クロックサイクル目では、アサートされたままのイネーブル信号（例えば値は“１”）と、イネーブル信号保持回路１１１からの信号（例えば値は“０”）とに基づいて、デアサートされたウエイト＃信号（例えば値は“１”）をバスマスタに出力する。このデアサートされたウエイト＃信号が入力されると、バスマスタは、その動作を再開する。
【００４１】
このように、バスマスタが内蔵メモリ１４にアクセスした際に、１クロックサイクル分だけ、アサートされたウエイト＃信号を入力することで、そのアクセスサイクルが延ばされる。そして、バスマスタによる内蔵メモリ１４に対するアクセスは、２クロックサイクルで完了することになる。よって、バスマスタが内蔵メモリ１４にアクセスする際における、イネーブル信号、ライト／リード信号、アドレス信号及びライトデータの出力は、２クロックサイクルの間、維持されることになる。
【００４２】
また、ウエイト＃信号は、ＡＤＲ変換回路１２０、ＷＤＴ変換回路１３０及びＲＤＴ変換回路１４０の動作を切り替えるデータ／ＥＣＣ信号としても機能する。すなわち、ウエイト信号生成回路１１２は、ウエイト＃信号を、データ／ＥＣＣ信号として、ＡＤＲ変換回路１２０、ＷＤＴ変換回路１３０及びＲＤＴ変換回路１４０の各々に出力する。
【００４３】
また、ウエイト＃信号は、内蔵メモリ１４にデータを書き込むアドレス、又は、内蔵メモリ１４からデータを読み出すアドレスの最上位ビットの値を示す信号としても機能する。すなわち、ウエイト信号生成回路１１２は、ウエイト＃信号を、アドレスの最上位ビットを示す信号として内蔵メモリ１４に出力する。
【００４４】
ＡＤＲ変換回路１２０は、１クロックサイクル目では、データを書き込む又は読み出すアドレスを内蔵メモリ１４に対して指定するために、バスマスタから入力されるアドレス信号をそのまま内蔵メモリ１４に出力する。一方、ＡＤＲ変換回路１２０は、２クロックサイクル目では、書き込むデータ又は読み出すデータとペアとなるＥＣＣを書き込む又は読み出すアドレスを内蔵メモリ１４に対して指定するために、バスマスタから入力されるアドレス信号に基づいて、ＥＣＣを書き込む又は読み出すアドレスを示すアドレス信号を生成し、内蔵メモリ１４に出力する。
【００４５】
ＡＤＲ変換回路１２０は、ＡＤＲ反転回路１２１と、セレクタ１２２とを有する。ＡＤＲ反転回路１２１には、バスマスタから出力されるアドレス信号が入力される。ＡＤＲ反転回路１２１は、入力されたアドレス信号が示すアドレスの全てのビットの各々の値を反転し、セレクタ１２２に出力する。セレクタ１２２は、バスマスタからのアドレス信号、及び、ＡＤＲ反転回路１２１からのアドレス信号が入力される。セレクタ１２２は、バスマスタからのアドレス信号、及び、ＡＤＲ反転回路１２１からのアドレス信号のうち、いずれか１つを選択し、内蔵メモリ１４に出力する。
【００４６】
セレクタ１２２は、ウエイト信号生成回路１１２からデータ／ＥＣＣ信号（例えば値は“０”）が入力されている１クロックサイクル目の場合、バスマスタから入力されるアドレス信号を選択し、内蔵メモリ１４に出力する。一方、セレクタ１２２は、ウエイト信号生成回路１１２からデータ／ＥＣＣ信号（例えば値は“１”）が入力されている２クロックサイクル目の場合、ＡＤＲ反転回路１２１から入力されるアドレス信号を選択し、内蔵メモリ１４に出力する。
【００４７】
これにより、最終的に内蔵メモリ１４に入力される（Ｎ＋１）ビットのアドレス信号のうち、下位Ｎビットは、ＡＤＲ変換回路１２０が出力するＮビットのアドレス信号となり、上位１ビットは、ウエイト信号生成回路１１２が出力するデータ／ＥＣＣ信号となる。
【００４８】
そして、内蔵メモリ１４は、１クロックサイクル目では、（Ｎ＋１）ビットのアドレス信号が示すアドレスに対して、データの書き込み又は読み出しを行う。内蔵メモリ１４は、２クロックサイクル目では、（Ｎ＋１）ビットのアドレス信号が示すアドレスに対して、ＥＣＣの書き込み又は読み出しを行う。
【００４９】
ＷＤＴ変換回路１３０は、１クロックサイクル目では、データを内蔵メモリ１４に対して書き込むために、バスマスタから入力されるライトデータをそのまま内蔵メモリ１４に出力する。一方、ＷＤＴ変換回路１３０は、２クロックサイクル目では、そのライトデータとペアとなるＥＣＣを内蔵メモリ１４に対して書き込むために、バスマスタから入力されるライトデータに基づいて、ＥＣＣを生成し、内蔵メモリ１４に出力する。
【００５０】
ＷＤＴ変換回路１３０は、ＥＣＣ生成回路１３１と、セレクタ１３２とを有する。ＥＣＣ生成回路１３１には、バスマスタからのライトデータが入力される。ＥＣＣ生成回路１３１は、入力されたライトデータからＥＣＣを生成し、セレクタ１３２に出力する。
【００５１】
セレクタ１３２は、バスマスタからのライトデータ、及び、ＥＣＣ生成回路１３１からのＥＣＣが入力される。セレクタ１３２は、バスマスタからのライトデータ、及び、ＥＣＣ生成回路１３１からのＥＣＣのうち、いずれか１つを選択し、内蔵メモリ１４に出力する。
【００５２】
セレクタ１３２は、ウエイト信号生成回路１１２からデータ／ＥＣＣ信号（例えば値は“０”）が入力されている１クロックサイクル目の場合、バスマスタから入力されるライトデータを選択し、内蔵メモリ１４に出力する。一方、セレクタ１３２は、ウエイト信号生成回路１１２からデータ／ＥＣＣ信号（例えば値は“１”）が入力されている２クロックサイクル目の場合、ＥＣＣ生成回路１３１から入力されるＥＣＣを選択し、内蔵メモリ１４に出力する。
【００５３】
これにより、内蔵メモリ１４は、データの書き込みを指定するライト／リード信号が入力されている場合、１クロックサイクル目では、バスマスタから入力されるライトデータを、（Ｎ＋１）ビットのアドレス信号が示すアドレスに格納する。内蔵メモリ１４は、２クロックサイクル目では、ＷＤＴ変換回路１３０から入力されるＥＣＣ（厳密には、後述するようにダミービットとＥＣＣを含むデータ）を、（Ｎ＋１）ビットのアドレス信号が示すアドレスに格納する。なお、バスマスタから出力されたライト／リード信号は、Ｉ／Ｆ変換回路１３を介して、そのまま内蔵メモリ１４に入力される。
【００５４】
一方、内蔵メモリ１４は、データの読み出しを指定するライト／リード信号が入力されている場合、１クロックサイクル目では、（Ｎ＋１）ビットのアドレス信号が示すアドレスに格納されたデータを、リードデータとしてＲＤＴ変換回路１４０に出力する。内蔵メモリ１４は、２クロックサイクル目では、（Ｎ＋１）ビットのアドレス信号が示すアドレスに格納されたＥＣＣをＲＤＴ変換回路１４０に出力する。
【００５５】
ＲＤＴ変換回路１４０は、バスマスタが内蔵メモリ１４からデータを読み出す際に、内蔵メモリ１４から入力されたリードデータ及びＥＣＣに基づいて、リードデータに誤りが発生しているか否かを判定する。ＲＤＴ変換回路１４０は、リードデータに誤りが発生していない場合、内蔵メモリ１４から入力されたリードデータを、そのままバスマスタに出力する。一方、ＲＤＴ変換回路１４０は、リードデータに誤りが発生している場合、内蔵メモリ１４から入力されたリードデータにおける誤りをＥＣＣに基づいて訂正してからバスマスタに出力する。
【００５６】
ＲＤＴ変換回路１４０は、データ保持回路１４１と、ＥＣＣチェック回路１４２と、エラー訂正回路１４３とを有する。
【００５７】
データ保持回路１４１は、バスマスタが内蔵メモリ１４に対してアクセスした際に、クロック信号に基づいて、１クロックサイクル目で内蔵メモリ１４から入力されたリードデータを取り込み、２クロックサイクル目で保持したリードデータをＥＣＣチェック回路１４２及びエラー訂正回路１４３に出力する。データ保持回路１４１は、例えば、ＦＦ回路である。
【００５８】
ＥＣＣチェック回路１４２は、１クロックサイクル目では動作せず、２クロックサイクル目で、データ保持回路１４１から入力されるリードデータと、内蔵メモリ１４から入力されるＥＣＣとに基づいて、データの誤りが発生しているか否かを判定する。
【００５９】
すなわち、ＥＣＣチェック回路１４２は、１クロックサイクル目で、ウエイト信号生成回路１１２からデータ／ＥＣＣ信号（例えば値は“０”）が入力されている場合、故障の判定は行わない。一方、ＥＣＣチェック回路１４２は、２クロックサイクル目で、ウエイト信号生成回路１１２からデータ／ＥＣＣ信号（例えば値は“１”）が入力されている場合、データの誤りが発生しているか否かを判定する。言い換えると、データ／ＥＣＣ信号は、ＥＣＣチェック回路１４２の動作を有効にするか無効にするかを指示するイネーブル信号として機能する。
【００６０】
ＥＣＣチェック回路１４２は、データのいずれか１ビットに誤りが発生していると判定した場合、そのビット位置を示すエラー訂正信号をエラー訂正回路１４３に出力する。ＥＣＣチェック回路１４２は、データに訂正不能な２ビット以上の誤りが発生していると判定した場合、エラーであることを通知する信号として、アサートされたエラー通知信号（例えば値は“１”）をバスマスタに出力する。一方、ＥＣＣチェック回路１４２は、データに訂正不能な２ビット以上の誤りが発生していないと判定した場合、エラーでないことを通知する信号として、デアサートされたエラー通知信号（例えば値は“０”）をバスマスタに出力する。
【００６１】
エラー訂正回路１４３は、データに誤りが発生していない場合、２クロックサイクル目でデータ保持回路１４１から入力されるリードデータを、そのままバスマスタに出力する。一方、エラー訂正回路１４３は、データに誤りが発生している場合、２クロックサイクル目でデータ保持回路１４１から入力されるリードデータの誤りを訂正してからバスマスタに出力する。より具体的には、エラー訂正回路１４３は、データ保持回路１４１から入力されるリードデータのうち、ＥＣＣチェック回路１４２から入力されるエラー訂正信号が示すビット位置の値を反転させた結果となるデータを、エラー訂正後のリードデータとしてバスマスタに出力する。エラー訂正回路１４３は、例えば、Ｎ個のＸＯＲ（排他的論理和）回路を有する。
【００６２】
続いて、図３を参照して、本実施の形態１に係るＡＤＲ変換回路１２０が有するＡＤＲ反転回路１２１の構成について説明する。図３に示すように、ＡＤＲ変換回路１２０は、Ｎ個のビット値反転回路１２１０を有する。ここでは、アドレス信号がＮビットである例について説明する。
【００６３】
Ｎ個のビット値反転回路１２１０の各々は、Ｎビットのアドレス信号の各ビットＡ０、Ａ１、Ａ２、・・・、Ａ（Ｎ−１）に対応する。Ｎ個のビット値反転回路１２１０の各々は、アドレス信号のうち、自身に対応するビットの値を反転し、反転後の値を出力する。Ｎ個のビット値反転回路１２１０の各々から出力された各ビットＡ’０、Ａ’１、Ａ’２、・・・、Ａ’（Ｎ−１）は、Ｎビットのアドレス信号としてまとめられ、内蔵メモリ１４に出力される。ここで、“Ａ”に続く数字は、数字が大きくなるほど上位のビットであることを示している。すなわち、Ｎ個のビットにおいて、“０”は最下位ビットであることを示し、“Ｎ−１”は最上位ビットであることを示している。以降も同様である。ビット値反転回路１２１０は、例えば、ＮＯＴ（論理否定）回路である。
【００６４】
続いて、図４を参照して、本実施の形態１に係る内蔵メモリ１４のメモリマップについて説明する。ここでは、内蔵メモリ１４のデータ幅は８ビットであり、内蔵メモリ１４のアドレス幅は（Ｎ＋１）ビットであり、内蔵メモリ１４のデータ容量が（８×２（Ｎ＋１））ビットであり、Ｎ＝３である例について説明する。
【００６５】
内蔵メモリ１４は、図４における下位半分を本来のデータを格納する領域、上位半分を本来のデータとペアになるＥＣＣを格納する領域として使用する。つまり、内蔵メモリ１４における領域は、そのアドレス空間において、アドレスの最上位ビット（図４ではＡ３）の値が“０”となる場合はデータが格納される領域として、“１”となる場合はＥＣＣが格納される領域として区別される。本実施の形態１では、データを格納するアドレスの下位Ｎビット（図４ではＡ２〜Ａ０）の値に対して、そのデータとペアになるＥＣＣを格納するアドレスの下位Ｎビットの値は、図３に示したＡＤＲ反転回路１２１の動作によりビット値を反転した値（図４においてＡ２〜Ａ０の値を「ＡＤＲ反転」と示している部分）になっている。
【００６６】
すなわち、図４に示すように、アドレスＡＤＲ−０（“００００”）のデータ（“ＤＡＴＡ０”）と、アドレスＡＤＲ−Ｆ（“１１１１”）のＥＣＣ（“ＥＣＣ０”）とがペアになる。アドレスＡＤＲ−１（“０００１”）のデータ（“ＤＡＴＡ１”）と、アドレスＡＤＲ−Ｅ（“１１１０”）のＥＣＣ（“ＥＣＣ１”）がペアになる。アドレスＡＤＲ−２（“００１０”）のデータ（“ＤＡＴＡ２”）と、アドレスＡＤＲ−Ｄ（“１１０１”）のＥＣＣ（“ＥＣＣ２”）がペアになる。アドレスＡＤＲ−３（“００１１”）のデータ（“ＤＡＴＡ３”）と、アドレスＡＤＲ−Ｃ（“１１００”）のＥＣＣ（“ＥＣＣ３”）がペアになる。アドレスＡＤＲ−４（“０１００”）のデータ（“ＤＡＴＡ４”）と、アドレスＡＤＲ−Ｂ（“１０１１”）のＥＣＣ（“ＥＣＣ４”）がペアとなる。アドレスＡＤＲ−５（“０１０１”）のデータ（“ＤＡＴＡ５”）と、アドレスＡＤＲ−Ａ（“１０１０”）のＥＣＣ（“ＥＣＣ５”）がペアとなる。アドレスＡＤＲ−６（“０１１０”）のデータ（“ＤＡＴＡ６”）と、アドレスＡＤＲ−９（“１００１”）のＥＣＣ（“ＥＣＣ６”）がペアとなる。アドレスＡＤＲ−７（“０１１１”）のデータ（“ＤＡＴＡ７”）と、アドレスＡＤＲ−８（“１０００”）の（“ＥＣＣ７”）がペアになる。
【００６７】
ここで、図４に示す「ＡＤＲ−ｎ」の「ｎ」にあたる部分は、アドレスを１６進数表記したものである。すなわち、「ＡＤＲ−０」は、アドレスが“００００”であることを意味し、「ＡＤＲ−Ｆ」は、アドレスが“１１１１”であることを意味する。
【００６８】
なお、８ビットのデータから生成されるＥＣＣは５ビットであるため、そのＥＣＣは上位３ビットにダミービット（例えば値は“０”）を付加して８ビットのデータとされた後で内蔵メモリ１４に格納される。
【００６９】
内蔵メモリ１４は、以上に説明したように構成されており、その内蔵メモリ１４に対して設けているＩ／Ｆ変換回路１３も以上に説明した通りに動作する。そのため、内蔵メモリ１４に書き込んだデータのいずれかのビットに誤りが発生した場合には、そのデータを読み出す際に、Ｉ／Ｆ変換回路１３のＲＤＴ変換回路１４０で、そのデータの誤りが検出される。そして、１ビット誤りが検出された場合には、エラーが訂正される。２ビット以上の誤りが検出された場合には、エラー通知信号でエラー訂正不能であることが通知される。
【００７０】
よって、Ｉ／Ｆ変換回路１３のＷＤＴ変換回路１３０から内蔵メモリ１４に出力するライトデータ（８ビット）の８本の信号線のうち、いずれか１本以上の故障（断線）によりＳｔｕｃｋ−ａｔ故障（０または１への固着）が発生した場合、相互にペアを成すデータとＥＣＣの両方において、故障した信号線に対応するビット位置の値が本来の値と異なる値（反転した値）になる。そのため、そのデータを読み出す際に、ＥＣＣチェック回路１４２で１ビットの誤り、または、２ビット以上の誤りとして、その値の変化が確実に検出される。Ｉ／Ｆ変換回路１３のＲＤＴ変換回路１４０が内蔵メモリ１４から入力するリードデータ（８ビット）の８本の信号線のうち、いずれか１本以上の故障（断線）によりＳｔｕｃｋ−ａｔ故障（０または１への固着）が発生した場合も同様である。
【００７１】
一方、Ｉ／Ｆ変換回路１３のＡＤＲ変換回路１２０から内蔵メモリ１４に入力するアドレス信号（Ｎビット）のＮ本の信号線のうち、いずれか１本以上の故障（断線）によりＳｔｕｃｋ−ａｔ故障（０または１に固着）が発生した場合については、以下に説明する通りとなる。
【００７２】
図５を参照して、内蔵メモリ１４に入力するアドレス信号（Ｎビット）のうち、Ａ２ビットにＳｔｕｃｋ−ａｔ１故障（１への固着）が発生した場合の動作について説明する。なお、内蔵メモリ１４は、図４に示したように、Ｎ＝３であるものとする。また、ここでは、以下の流れでデータの書き込みと読み出しが行われる場合について説明する。
【００７３】
（１）データ（“ＤＡＴＡ５”）がアドレスＡＤＲ−５（“０１０１”）に書き込まれており、そのデータとペアになるＥＣＣ（“ＥＣＣ５”）がアドレスＡＤＲ−Ａ（“１０１０”）に書き込まれている。図では、括弧付きで“ＤＡＴＡ５”と“ＥＣＣ５”を示している。
（２）新たに、データ（“ＤＡＴＡ１”）をアドレスＡＤＲ−１（“０００１”）に、そのデータとペアになるＥＣＣ（“ＥＣＣ１”）を、アドレスＡＤＲ−Ｅ（“１１１０”）に書き込む。
（３）ここで、アドレスのＡ２ビットに対応するアドレス信号線にＳｔｕｃｋ−ａｔ１故障が発生する。そのため、内蔵メモリ１４のアドレスＡＤＲ−０〜ＡＤＲ−３とＡＤＲ−８〜ＡＤＲ−Ｂのアドレスにはアクセスできなくなる。
（４）上記の（２）で書き込んだデータ（“ＤＡＴＡ１”）と、そのデータとペアになるＥＣＣ（“ＥＣＣ１”）を読み出そうとする。
（４）’このとき、実際には、上記の（３）で発生したアドレス信号線の故障により、データ（“ＤＡＴＡ１”）が格納されているアドレスＡＤＲ−１（“０００１”）からではなく、内蔵メモリ１４のアドレスＡＤＲ−５（“０１０１”）からデータ（“ＤＡＴＡ５”）が読み出される。一方、ＥＣＣ（“ＥＣＣ１”）が格納されているアドレスＡＤＲ−Ｅ（“１１１０”）は、このアドレス信号線の故障による影響を受けないため、正常にＥＣＣ（“ＥＣＣ１”）が読み出される。つまり、上記の（２）で書き込んだデータではないデータ（“ＤＡＴＡ５”）と、そのデータとはペアが崩れたＥＣＣ（“ＥＣＣ１”）が読み出される。
（５）その結果、ＲＤＴ変換回路１４０が有するＥＣＣチェック回路１４２で１ビットの誤り、又は、２ビット以上の誤りとして、Ｓｔｕｃｋ−ａｔ１故障が確実に検出される。このように、アドレス信号系の故障の検出も可能であるため、本実施の形態１は、機能安全の観点から優れていると言える。
【００７４】
また、図６を参照して、ＥＣＣを格納する領域に対して「ＡＤＲ反転」を行わないケース（つまり、図２に示したＩ／Ｆ変換回路１３におけるＡＤＲ変換回路１２０を無くしたケース）で、図５と同じデータの書き込みと読み出しが行われる場合の動作について説明する。
【００７５】
（１）データ（“ＤＡＴＡ５”）がアドレスＡＤＲ−５（“０１０１”）に書き込まれており、そのデータとペアになるＥＣＣ（“ＥＣＣ５”）がＡＤＲ−Ｄ（“１１０１”）に書き込まれている。図では、括弧付きで“ＤＡＴＡ５”と“ＥＣＣ５”を示している。
（２）新たに、データ（“ＤＡＴＡ１”）をアドレスＡＤＲ−１（“０００１”）に、そのデータとペアになるＥＣＣ（“ＥＣＣ１”）をアドレスＡＤＲ−９（“１００１”）に書き込む。
（３）ここで、アドレスのＡ２ビットに対応するアドレス信号線にＳｔｕｃｋ−ａｔ１故障が発生する。そのため、内蔵メモリ１４のアドレスＡＤＲ−０〜ＡＤＲ−３とＡＤＲ−８〜ＡＤＲ−Ｂのアドレスにはアクセスできなくなる。
（４）上記の（２）で書き込んだデータ（“ＤＡＴＡ１”）と、そのデータとペアになるＥＣＣ（“ＥＣＣ１”）を読み出そうとする。
（４）’このとき、実際には、上記の（３）で発生したアドレス信号線の故障により、データ（“ＤＡＴＡ１”）が格納されているアドレスＡＤＲ−１（“０００１”）からではなく、内蔵メモリ１４のアドレスＡＤＲ−５（“０１０１”）からデータ（“ＤＡＴＡ５”）が読み出される。また、ＥＣＣ（“ＥＣＣ１”）が格納されているアドレスＡＤＲ−９（“１００１”）も、このアドレス信号線の故障による影響を受けるため、内蔵メモリ１４のアドレスＡＤＲ−Ｄ（“１１０１”）からＥＣＣ（“ＥＣＣ５”）が読み出される。つまり、上記の（２）で書き込んだデータではないデータ（“ＤＡＴＡ５”）と、そのデータとペアを成すＥＣＣ（“ＥＣＣ５”）が読み出される。
（５）その結果、ＲＤＴ変換回路１４０が有するＥＣＣチェック回路１４２では、正常なデータ（“ＤＡＴＡ５”）とＥＣＣ（“ＥＣＣ５”）のペアに見えるため、データにビット誤りが発生していない限り、１ビットの誤り、又は、２ビット以上の誤りとして故障を検出することはできない。
【００７６】
なお、図５は、内蔵メモリ１４に入力するアドレス信号のうち、Ａ２ビットにＳｔｕｃｋ−ａｔ１故障（１への固着）が発生した場合の動作を示したものであった。しかし、そのＡ２ビットにＳｔｕｃｋ−ａｔ０故障（０への固着）が発生した場合や、他のアドレス（具体的には、Ａ１ビットとＡ０ビット）にＳｔｕｃｋ−ａｔ１故障またはＳｔｕｃｋ−ａｔ０故障が発生した場合であっても、本実施の形態１によれば同様にアドレス信号線の故障を検出可能である。
【００７７】
図７は、図４に示したＮ＝３の場合について、“ＤＡＴＡ０”と“ＥＣＣ０”、“ＤＡＴＡ１”と“ＥＣＣ１”、・・・、“ＤＡＴＡ７”と“ＥＣＣ７”という８通りのペアについて、アドレス信号の下位３ビットＡ２〜Ａ０の値を、８行（上から順番に“０”〜“７”と番号付け）にわたって示した表である。図７では、データを読み出す際に内蔵メモリ１４に入力されるアドレス信号が示すアドレスを「アドレス（データ）」として示し、ＥＣＣを読み出す際に内蔵メモリ１４に入力されるアドレス信号が示すアドレスを「アドレス（ＥＣＣ）」として示している。
【００７８】
この表の左から右に向かって、
（１）アドレスの全ビットに故障が発生していない場合
（２）アドレスのＡ２ビットにＳｔｕｃｋ−ａｔ１故障が発生した場合（これが、図５に示したものに相当する）、
（３）アドレスのＡ２ビットにＳｔｕｃｋ−ａｔ０故障が発生した場合
（４）アドレスのＡ１ビットにＳｔｕｃｋ−ａｔ１故障が発生した場合
（５）アドレスのＡ１ビットにＳｔｕｃｋ−ａｔ０故障が発生した場合
（６）アドレスのＡ０ビットにＳｔｕｃｋ−ａｔ１故障が発生した場合
（７）アドレスのＡ０ビットにＳｔｕｃｋ−ａｔ０故障が発生した場合
の７通りを示している。
【００７９】
なお、Ａ２〜Ａ０の値として、各ビット位置の値（０または１）を３つ並べて示しているが、故障により値が変わったビット位置の値には下線を付している。
【００８０】
図７に示した表の２行目（番号は１）は、図５の（２）において書き込むデータ（“ＤＡＴＡ１”）と、そのデータとペアになるＥＣＣ（“ＥＣＣ１”）の各々が格納されるアドレスを示した行になる。アドレスの全ビットに故障が発生していない場合のアドレスは、一番左に示している通り、それぞれ、ＡＤＲ−１の下位３ビット（“００１”）とＡＤＲ−Ｅの下位３ビット（“１１０”）となる。図７の表において、この２つのＡ２〜Ａ０の値のペアを実線で囲んで示している。
【００８１】
ここで、Ａ２ビットにＳｔｕｃｋ−ａｔ１故障が発生した場合のアドレスは、そのすぐ右に示している通り、アドレス（データ）のＡＤＲ−１は故障による影響を受けて別のＡＤＲ−５（下位３ビットは“１０１”）となり、アドレス（ＥＣＣ）のＡＤＲ−Ｅ（下位３ビットは“１１０”）は故障による影響を受けずにＡＤＲ−Ｅのままとなる。この２つのＡ２〜Ａ０の値のペアの故障による影響を受けた後の値を、表において破線で囲んで示すとともに、この２つのＡ２〜Ａ０の値のペアの故障による影響を受けた後の値の各々で実際にアクセスされるアドレス（データ）及びアドレス（ＥＣＣ）を、表において実線で囲むとともに太実線で接続して示している。これによって、データ（“ＤＡＴＡ５”）とＥＣＣ（“ＥＣＣ１”）がアクセスされる。すなわち、図５の（４）’で説明した通り、データとＥＣＣのペアが崩れていることが分かる。
【００８２】
同じく、さらに右に進むにつれて、他の例として、Ａ１ビットにＳｔｕｃｋ−ａｔ１故障が発生した場合と、Ａ０ビットにＳｔｕｃｋ−ａｔ１故障が発生した場合についても、２つのＡ２〜Ａ０の値のペアについて、上記と同様の形で示しているが、いずれの場合も、データとＥＣＣのペアが崩れていることが分かる。
【００８３】
また、さらに、他の例として、図７に示した表の７行目（番号は６）における、データ（“ＤＡＴＡ６”）と、そのデータとペアとなるＥＣＣ（“ＥＣＣ６”）の各々が格納されるアドレスに関して、同様に、Ａ２ビットにＳｔｕｃｋ−ａｔ０故障が発生した場合、Ａ１ビットにＳｔｕｃｋ−ａｔ０故障が発生した場合、Ａ０ビットにＳｔｕｃｋ−ａｔ０故障が発生した場合についても示している。そして、いずれの場合も、やはりデータとＥＣＣのペアは崩れている。この表から、アドレスのいずれかのビットにＳｔｕｃｋ−ａｔ故障が発生した場合には、確実に故障が検出できることが分かる。
【００８４】
また、図８は、ＥＣＣを格納する領域に対して「ＡＤＲ反転」を行わないケース（つまり、図２に示したＩ／Ｆ変換回路１３におけるＡＤＲ変換回路１２０を無くしたケース）で、図７と同様にアドレス（データ）とアドレス（ＥＣＣ）の下位３ビットであるＡ２〜Ａ０の値を示した表である。この表の２行目（番号は１）で左から２通り目にあるアドレスのＡ２ビットにＳｔｕｃｋ−ａｔ１故障が発生した場合が、図６に示したものに相当する。
【００８５】
このケースの場合、図８に示した表から、アドレスのいずれかのビットにＳｔｕｃｋ−ａｔ故障が発生した場合には、その影響によりアクセスできなくなるアドレスのデータとＥＣＣのペアは、それとは別のアドレスのデータとＥＣＣのペアとして認識される（つまり、アドレスが縮退される）。そのため、そのデータを読み出す際に、アドレス信号線の故障を検出することはできない。
【００８６】
以上の説明では、バスマスタから入力されるＮビットのアドレス信号の全てのビットの値を反転する例について説明したが、これに限られない。例えば、Ｎビットのアドレス信号のうちの所定数ビット（Ｎビット〜１ビットのいずれか）の値を反転するようにしても一定の効果が得られる。なお、この所定数ビットは、Ｎビットにおいて、上位から所定数のビットでもよく、下位から所定数のビットでもよい。また、この所定数ビットは、Ｎビットにおいて、連続したビットでもよく、非連続のビットでもよい。しかしながら、好ましくは、上述したように、Ｎビットのアドレス信号の全てのビットの値を反転することで、より多くの故障を検出することが可能となる。
【００８７】
以上に説明したように、本実施の形態１では、ＡＤＲ変換回路１２０は、内蔵メモリ１４にデータを格納するための第１のアドレスに基づいて、データから生成された誤り検出符号を格納するための第２のアドレスを生成する。ＷＤＴ変換回路１３０は、第１のアドレスに対してデータの書き込みが要求された場合、第１のアドレスにデータを書き込むとともに、第２のアドレスに誤り検出符号を書き込む。ＲＤＴ変換回路１０４は、第１のアドレスに対してデータの読み出しが要求された場合、第１のアドレスからデータを読み出すとともに、第２のアドレスから誤り検出符号を読み出し、そのデータとその誤り検出符号とに基づいてエラーを検出する。
【００８８】
ここで、Ｉ／Ｆ制御回路１１０は、第１のアドレス（（Ｎ＋１）ビットのアドレスに対応）の少なくとも１つのビットの値（（Ｎ＋１）ビットのアドレスの最上位ビットに対応）を変更し、誤り検出符号の格納位置がデータの格納位置に対してオフセットされるようにしている。ＡＤＲ変換回路１２０は、それ以外のビット（下位Ｎビットに対応）のうちの所定数ビットの値が反転したアドレスを第２のアドレスとして生成している。上述の例では、ＡＤＲ変換回路１２０は、それ以外のビットの全て（Ｎビット）の値を反転したアドレスを第２のアドレスとして生成するようにしている。
【００８９】
これによれば、データと、そのデータから生成したＥＣＣのペアを内蔵メモリ１４に書き込んだ後で、内蔵メモリ１４に対するアドレス信号線のいずれか１本にＳｔｕｃｋ−ａｔ故障（０または１への固着）が発生した場合、その書き込み済みのデータを読み出す際に、アドレス信号線の故障検出が可能となる。
【００９０】
これは、２本以上のアドレス信号線の故障に対しても同様に有効である。また、内蔵メモリ１４に入力するアドレス信号を生成して出力するＡＤＲ変換回路１２０や、内蔵メモリ１４の中のアドレス信号処理回路（図示せず）で起きたアドレスの値に影響が出る故障も検出可能である。
【００９１】
また、本実施の形態１では、バスマスタは、データの書き込み又は読み出しが行われる単位時間（クロックサイクルに対応）の間、データの書き込み又は読み出しを有効にするイネーブル信号を内蔵メモリ１４に出力する。Ｉ／Ｆ制御回路１１０は、バスマスタからのデータの書き込み又は読み出しを有効にするイネーブル信号に応じて、単位時間の間、バスマスタの動作を許容するウエイト信号に代えて、バスマスタの動作を抑止するウエイト信号をバスマスタに出力する。
【００９２】
ＷＤＴ変換回路１３０は、Ｉ／Ｆ制御回路１１０からのバスマスタの動作を抑止するウエイト信号に応じて、第１のアドレスにデータを書き込み（第１のクロックサイクルに対応）、その後のＩ／Ｆ制御回路１１０からのバスマスタの動作を許容するウエイト信号に応じて、第２のアドレスに誤り検出符号を書き込む（第２のクロックサイクルに対応）ようにしている。
【００９３】
ＲＤＴ変換回路１４０は、Ｉ／Ｆ制御回路１１０からのバスマスタの動作を抑止するウエイト信号に応じて、その後の第１のアドレスからデータを読み出し、Ｉ／Ｆ制御回路１１０からのバスマスタの動作を許容するウエイト信号に応じて、第２のアドレスから誤り検出符号を読み出すようにしている。
【００９４】
これによれば、バスマスタによるデータの書き込み又は読み出しの要求を継続させることができるとともに、その継続させた時間を利用して誤り検出符号を内蔵メモリ１４に書き込む又は内蔵メモリ１４から読み出すことができる。また、データの書き込みの要求の継続と、データの書き込み及び誤り検出符号の書き込みの切り替えとを、ウエイト信号を流用して、より簡易な構成で実現することができる。また、データの読み出しの要求の継続と、データの読み出し及び誤り検出符号の読み出しの切り替えとを、ウエイト信号を流用して、より簡易な構成で実現することができる。
【００９５】
また、本実施の形態１では、バスマスタの動作を抑止するウエイト信号は、第１のアドレスの少なくとも１つのビットの値として利用される。また、バスマスタの動作を許容するウエイト信号は、第１のアドレスの少なくとも１つのビットの値の変更後の値として利用されるようにしている。
【００９６】
これによれば、データの書き込み又は読み出しの要求の継続と、データの格納位置に対する誤り検出符号の格納位置のオフセットとを、ウエイト信号を流用して、より簡易な構成で実現することができる。
【００９７】
また、本実施の形態１では、ＲＤＴ変換回路１４０は、Ｉ／Ｆ制御回路１１０からのバスマスタの動作を抑止するウエイト信号に応じて、内蔵メモリ１４から読み出したデータを保持し、その後のＩ／Ｆ制御回路１１０からのバスマスタの動作を許容するウエイト信号に応じて、内蔵メモリ１４から読み出した誤り検出符号と、保持したデータとに基づいてエラーを検出するようにしている。
【００９８】
これによれば、データの書き込み又は読み出しの要求の継続と、エラー検出のための動作の切り替えとを、ウエイト信号を流用して、より簡易な構成で実現することができる。
【００９９】
＜実施の形態２＞
続いて、実施の形態２について、図面を用いて、その構成と動作を説明する。本実施の形態２に係るＣＰＵシステム１の構成と動作については、図１に示した実施の形態１に係るＣＰＵシステム１の構成と動作と基本的に同様であるため、その説明を省略する。ただし、本実施の形態２では、ＣＰＵシステム１が有するＩ／Ｆ変換回路１３の一部の構成と動作が、実施の形態１に係るＩ／Ｆ変換回路１３とは異なる。
【０１００】
続いて、図９を参照して、本実施の形態２に係るＩ／Ｆ変換回路１３の構成について説明する。本実施の形態２に係るＩ／Ｆ変換回路１３は、実施の形態１に係るＩ／Ｆ変換回路１３と比較して、ＡＤＲ変換回路１２０におけるＡＤＲ反転回路１２１に代えて、ＡＤＲローテーション回路１２３を有する。なお、本実施の形態２に係るＩ／Ｆ制御回路１１０、ＷＤＴ変換回路１３０及びＲＤＴ変換回路１４０の構成及び動作は、実施の形態１に係るそれらと同様である。
【０１０１】
ＡＤＲローテーション回路１２３には、バスマスタから出力されるアドレス信号が入力される。ＡＤＲローテーション回路１２３は、入力されたアドレス信号が示すアドレスの全てのビットをローテーション（シフト）して、セレクタ１２２に出力する。よって、本実施の形態２では、セレクタ１２２は、バスマスタから出力されるアドレス信号、及び、ＡＤＲローテーション回路１２３から出力されるアドレス信号のうち、いずれか１つを選択し、内蔵メモリ１４に出力する。
【０１０２】
続いて、図１０を参照して、本実施の形態２に係るＡＤＲ変換回路１２０が有するＡＤＲローテーション回路１２３の構成について説明する。ここでは、アドレス信号がＮビットである例について説明する。
【０１０３】
図１０に示すように、ＡＤＲローテーション回路１２３は、Ｎビットのアドレス信号の各ビットの位置を入れ替えるために、そのアドレス信号が示すアドレスを左方向に（上位ビット方向に）１ビットだけローテーションする。すなわち、ＡＤＲローテーション回路１２３は、アドレス信号のＮビットを１ビットだけ左シフトして溢れた最上位ビットを最下位ビットに移す。
【０１０４】
これは、図１０に示すように、ＡＤＲローテーション回路１２３において、Ｎビットのアドレス信号線の各々のビット位置を、入力段と出力段とでずらして接続することで実現する。すなわち、ＡＤＲローテーション回路１２３に入力されたＮビットのアドレス信号の各ビットＡ０、Ａ１、Ａ２、・・・、Ａ（Ｎ−１）を、ＡＤＲローテーション回路１２３から出力されるＮビットのアドレス信号の各ビットＡ’１、Ａ’２、・・・、Ａ’（Ｎ−１）、Ａ’０とする。なお、このＡＤＲローテーション回路１２３では、Ｎビットのアドレス信号線の各ビットの信号を、Ｎ個のバッファ１２３０の各々で受けた後に、その接続先のビット位置をずらすようにしている。
【０１０５】
続いて、図１１を参照して、実施の形態２に係る内蔵メモリ１４のメモリマップについて説明する。ここでは、図４に示した実施の形態１に係る内蔵メモリ１４と同様に、内蔵メモリ１４のデータ幅は８ビットであり、内蔵メモリ１４のアドレス幅は（Ｎ＋１）ビットであり、内蔵メモリ１４のデータ容量が（８×２（Ｎ＋１））ビットであり、Ｎ＝３である例について説明する。
【０１０６】
本実施の形態２では、データを格納するアドレスの下位Ｎビット（図１１ではＡ２〜Ａ０）の値に対して、そのデータとペアになるＥＣＣを格納するアドレスの下位Ｎビットの値は、図１０に示したＡＤＲローテーション回路１２３の動作により各ビット値が入れ替えられたもの（図１１においてＡ２〜Ａ０の値を「ＡＤＲローテーション」と示している部分）になっている。
【０１０７】
すなわち、図１１に示すように、アドレスＡＤＲ−０（“００００”）のデータ（“ＤＡＴＡ０”）と、アドレスＡＤＲ−８（“１０００”）のＥＣＣ（“ＥＣＣ０”）とがペアになる。アドレスＡＤＲ−１（“０００１”）のデータ（“ＤＡＴＡ１”）と、アドレスＡＤＲ−Ａ（“１０１０”）のＥＣＣ（“ＥＣＣ１”）がペアになる。アドレスＡＤＲ−２（“００１０”）のデータ（“ＤＡＴＡ２”）と、アドレスＡＤＲ−Ｃ（“１１００”）のＥＣＣ（“ＥＣＣ２”）がペアになる。アドレスＡＤＲ−３（“００１１”）のデータ（“ＤＡＴＡ３”）と、アドレスＡＤＲ−Ｅ（“１１１０”）のＥＣＣ（“ＥＣＣ３”）がペアとなる。アドレスＡＤＲ−４（“０１００”）のデータ（“ＤＡＴＡ４”）と、アドレスＡＤＲ−９（“１００１”）のＥＣＣ（“ＥＣＣ４”）がペアとなる。アドレスＡＤＲ−５（“０１０１”）のデータ（“ＤＡＴＡ５”）と、アドレスＡＤＲ−Ｂ（“１０１１”）のＥＣＣ（“ＥＣＣ５”）がペアとなる。アドレスＡＤＲ−６（“０１１０”）のデータ（“ＤＡＴＡ６”）と、アドレスＡＤＲ−Ｄ（“１１０１”）のＥＣＣ（“ＥＣＣ６”）がペアとなる。アドレスＡＤＲ−７（“０１１１”）のデータ（“ＤＡＴＡ７”）と、アドレスＡＤＲ−Ｆ（“１１１１”）のＥＣＣ（“ＥＣＣ７”）がペアになる。
【０１０８】
なお、実施の形態１と同様に、ＥＣＣは上位３ビットにダミービット（例えば値は“０”）を付加して８ビットのデータとされた後で内蔵メモリ１４に格納される。また、実施の形態１と同様に、Ｉ／Ｆ変換回路１３のＷＤＴ変換回路１３０が内蔵メモリ１４に出力するライトデータ（８ビット）の８本の信号線のうち、いずれか１本以上に故障（断線）によりＳｔｕｃｋ−ａｔ故障（０または１への固着）が発生した場合、相互にペアを成すデータとＥＣＣの両方において、故障した信号線に対応するビット位置の値が本来の値と異なる値（反転した値）になる。そのため、そのデータを読み出す際に、ＥＣＣチェック回路１４２で１ビットの誤り、または、２ビット以上の誤りとして、その値の変化が確実に検出される。Ｉ／Ｆ変換回路１３のＲＤＴ変換回路１４０が内蔵メモリ１４から入力するリードデータ（８ビット）の８本の信号線のうち、いずれか１本以上の故障（断線）によりＳｔｕｃｋ−ａｔ故障（０または１への固着）が発生した場合も同様である。
【０１０９】
一方、Ｉ／Ｆ変換回路１３のＡＤＲ変換回路１２０から内蔵メモリ１４に入力するアドレス信号（Ｎビット）のＮ本の信号線のうち、いずれか１本以上の故障（断線）によりＳｔｕｃｋ−ａｔ故障（０または１に固着）が発生した場合については、以下に説明する通りとなる。
【０１１０】
図１２を参照して、実施の形態１の場合の図５と同様に、内蔵メモリ１４に入力するアドレス信号（Ｎビット）のうち、Ａ２ビットにＳｔｕｃｋ−ａｔ１故障（１への固着）が発生した場合の動作について説明する。なお、内蔵メモリ１４は、図１１に示したように、Ｎ＝３であるものとする。また、ここでは、以下の流れでデータの書き込みと読み出しが行われる場合について説明する。
【０１１１】
（１）データ（“ＤＡＴＡ３”）がアドレスＡＤＲ−３（“００１１”）に、そのデータとペアになるＥＣＣ（“ＥＣＣ３”）がアドレスＡＤＲ−Ｅ（“１１１０”）に書き込まれている。また、データ（“ＤＡＴＡ５”）がアドレスＡＤＲ−５（“０１０１”）に、そのデータとペアになるＥＣＣ（“ＥＣＣ５”）がアドレスＡＤＲ−Ｂ（“１０１１”）に書き込まれている。図では、括弧付きでこれらを示している。
（２）新たに、データ（“ＤＡＴＡ１”）をアドレスＡＤＲ−１（“０００１”）に、そのデータとペアになるＥＣＣ（“ＥＣＣ１”）をアドレスＡＤＲ−Ａ（“１０１０”）に書き込む。
（３）ここで、アドレスのＡ２ビットに対応するアドレス信号線にＳｔｕｃｋ−ａｔ１故障が発生する。そのため、内蔵メモリ１４のアドレスＡＤＲ−０〜ＡＤＲ−３とＡＤＲ−８〜ＡＤＲ−Ｂのアドレスにはアクセスできなくなる。
（４）上記の（２）で書き込んだデータ（“ＤＡＴＡ１”）と、そのデータとペアになるＥＣＣ（“ＥＣＣ１”）を読み出そうとする。
（４）’このとき、実際には、上記の（３）で発生したアドレス信号線の故障により、データ（“ＤＡＴＡ１”）が格納されているアドレスＡＤＲ−１（“０００１”）からではなく、内蔵メモリ１４のアドレスＡＤＲ−５（“０１０１”）からデータ（“ＤＡＴＡ５”）が読み出される。また、ＥＣＣ（“ＥＣＣ１”）が格納されているアドレスＡＤＲ−Ａ（“１０１０”）からではなく、アドレスＡＤＲ−Ｅ（“１１１０”）からＥＣＣ（“ＥＣＣ３”）が読み出される。つまり、上記の（２）で書き込んだデータではないデータ（“ＤＡＴＡ５”）と、そのデータとはペアが崩れたＥＣＣ（“ＥＣＣ３”）が読み出される。
（５）その結果、ＲＤＴ変換回路１４０が有するＥＣＣチェック回路１４２で１ビットの誤り、又は、２ビット以上の誤りとして、Ｓｔｕｃｋ−ａｔ１故障が確実に検出される。このように、アドレス信号系の故障の検出も可能であるため、本実施の形態２は、機能安全の観点から優れていると言える。
【０１１２】
なお、図１２は、内蔵メモリ１４に入力するアドレス信号のうち、Ａ２ビットにＳｔｕｃｋ−ａｔ１故障（１への固着）が発生した場合の動作を示したものであった。しかし、そのＡ２ビットにＳｔｕｃｋ−ａｔ０故障（０への固着）が発生した場合や、他のアドレス（具体的には、Ａ１ビットとＡ０ビット）にＳｔｕｃｋ−ａｔ１故障またはＳｔｕｃｋ−ａｔ０故障が発生した場合であっても、本実施の形態２によれば同様にアドレス信号線の故障を検出可能である。
【０１１３】
図１３は、図１１に示したＮ＝３の場合について、“ＤＡＴＡ０”と“ＥＣＣ０”、“ＤＡＴＡ１”と“ＥＣＣ１”、・・・、“ＤＡＴＡ７”と“ＥＣＣ７”という８通りのペアについて、アドレス信号の下位３ビットＡ２〜Ａ０の値を、８行（上から順番に“０”〜“７”と番号付け）にわたって示した表である。図１３では、データを読み出す際に内蔵メモリ１４に入力されるアドレス信号が示すアドレスを「アドレス（データ）」として示し、ＥＣＣを読み出す際に内蔵メモリ１４に入力されるアドレス信号が示すアドレスを「アドレス（ＥＣＣ）」として示している。
【０１１４】
この表の左から右に向かって、
（１）アドレスの全ビットに故障が発生していない場合
（２）アドレスのＡ２ビットにＳｔｕｃｋ−ａｔ１故障が発生した場合（これが、図１２に示したものに相当する）、
（３）アドレスのＡ２ビットにＳｔｕｃｋ−ａｔ０故障が発生した場合
（４）アドレスのＡ１ビットにＳｔｕｃｋ−ａｔ１故障が発生した場合
（５）アドレスのＡ１ビットにＳｔｕｃｋ−ａｔ０故障が発生した場合
（６）アドレスのＡ０ビットにＳｔｕｃｋ−ａｔ１故障が発生した場合
（７）アドレスのＡ０ビットにＳｔｕｃｋ−ａｔ０故障が発生した場合
の７通りを示している。
【０１１５】
なお、Ａ２〜Ａ０の値として、各ビット位置の値（０または１）を３つ並べて示しているが、故障により値が変わったビット位置の値には下線を付している。
【０１１６】
図１３に示した表の２行目（番号は１）は、図１２の（２）において書き込むデータ（“ＤＡＴＡ１”）と、そのデータとペアになるＥＣＣ（“ＥＣＣ１”）の各々が格納されるアドレスを示した行になる。アドレスの全ビットに故障が発生していない場合のアドレスは、一番左に示している通り、それぞれ、ＡＤＲ−１の下位３ビット（“００１”）とＡＤＲ−Ａの下位３ビット（“０１０”）となる。図１３の表において、この２つのＡ２〜Ａ０の値のペアを実線で囲んで示している。
【０１１７】
ここで、Ａ２ビットにＳｔｕｃｋ−ａｔ１故障が発生した場合のアドレスは、そのすぐ右に示している通り、アドレス（データ）のＡＤＲ−１は故障による影響を受けて別のＡＤＲ−５（下位３ビットは“１０１”）となり、アドレス（ＥＣＣ）のＡＤＲ−Ａも故障による影響を受けて別のＡＤＲ−Ｅ（下位３ビットは“１１０”）となる。この２つのＡ２〜Ａ０の値のペアの故障による影響を受けた後の値を、表において破線で囲んで示すとともに、この２つのＡ２〜Ａ０の値のペアの故障による影響を受けた後の値の各々で実際にアクセスされるアドレス（データ）及びアドレス（ＥＣＣ）を、表において実線で囲むとともに太実線で接続して示している。これによって、データ（“ＤＡＴＡ５”）とＥＣＣ（“ＥＣＣ３”）がアクセスされる。すなわち、図１２の（４）’で説明した通り、データとＥＣＣのペアが崩れていることが分かる。
【０１１８】
同じく、さらに右に進むにつれて、他の例として、Ａ１ビットにＳｔｕｃｋ−ａｔ１故障が発生した場合と、Ａ０ビットにＳｔｕｃｋ−ａｔ１故障が発生した場合についても、２つのＡ２〜Ａ０の値のペアについて、上記と同様の形で示しているが、いずれの場合も、データとＥＣＣのペアが崩れていることが分かる。
【０１１９】
また、さらに、他の例として、図１３に示した表の７行目（番号は６）における、データ（“ＤＡＴＡ６”）と、そのデータとペアとなるＥＣＣ（“ＥＣＣ６”）の各々が格納されるアドレスに関して、同様に、Ａ２ビットにＳｔｕｃｋ−ａｔ０故障が発生した場合、Ａ１ビットにＳｔｕｃｋ−ａｔ０故障が発生した場合、Ａ０ビットにＳｔｕｃｋ−ａｔ０故障が発生した場合についても示している。そして、いずれの場合も、やはりデータとＥＣＣのペアは崩れている。この表から、アドレスのいずれかのビットにＳｔｕｃｋ−ａｔ故障が発生した場合には、確実に故障が検出できることが分かる。
【０１２０】
さらに、本実施の形態２では、Ｉ／Ｆ変換回路１３におけるＡＤＲ変換回路１２０が内蔵メモリ１４に入力するアドレス信号（Ｎビット）のＮ本の信号線のうち、いずれか１本に故障（断線）によりＳｔｕｃｋ−ａｔ故障（０または１への固着）が発生した後に、データの書き込みと読み出しが行われる場合であっても、以下に説明する通り、故障が検出できる。
【０１２１】
図１４を参照して、内蔵メモリ１４に入力するアドレス信号（Ｎビット）のうち、Ａ２ビットにＳｔｕｃｋ−ａｔ１故障（１への固着）が発生した後に、データの書き込みと読み出しが行われる場合の動作について説明する。なお、内蔵メモリ１４は、図１１に示したように、Ｎ＝３であるものとする。また、ここでは、以下の流れでデータの書き込みと読み出しが行われる場合について説明する。
【０１２２】
（１）データ（“ＤＡＴＡ３”）がアドレスＡＤＲ−３（“００１１”）に、そのデータとペアになるＥＣＣ（“ＥＣＣ３”）がＡＤＲ−Ｅ（“１１１０”）に書き込まれている。また、データ（“ＤＡＴＡ５”）がアドレスＡＤＲ−５（“０１０１”）に、そのデータとペアになるＥＣＣ（“ＥＣＣ５”）がＡＤＲ−Ｂ（“１０１１”）に書き込まれている。また、データ（“ＤＡＴＡ１”）がアドレスＡＤＲ−１（“０００１”）に、そのデータとペアになるＥＣＣ（“ＥＣＣ１”）がＡＤＲ−Ａ（“１０１０”）に書き込まれている。図では、括弧付きでこれらを示している。
（２）ここで、アドレスのＡ２ビットに対応するアドレス信号線にＳｔｕｃｋ−ａｔ１故障が発生する。そのため、内蔵メモリ１４のアドレスＡＤＲ−０〜ＡＤＲ−３とＡＤＲ−８〜ＡＤＲ−Ｂのアドレスにはアクセスできなくなる。
（３）新たに、データ（“ＤＡＴＡ２”）をアドレスＡＤＲ−２（“００１０”）に、そのデータとペアになるＥＣＣ（“ＥＣＣ２”）をアドレスＡＤＲ−Ｃ（“１１００”）に書き込もうとする。このとき、実際には、上記の（２）で発生したアドレス信号線の故障により、内蔵メモリ１４のアドレスＡＤＲ−２（“００１０”）ではなく、アドレスＡＤＲ−６（“０１１０”）にデータ（“ＤＡＴＡ２”）が書き込まれる。一方、ＥＣＣ（“ＥＣＣ２”）は正常にアドレスＡＤＲ−Ｃ（“１１００”）に書き込まれる。
（４）続いて、データ（“ＤＡＴＡ６”）をアドレスＡＤＲ−６（“０１１０”）に、そのデータとペアになるＥＣＣ（“ＥＣＣ６”）をアドレスＡＤＲ−Ｄ（“１１０１”）に書き込もうとする。このときは、上記の（２）で発生したアドレス信号線の故障を受けず、データ（“ＤＡＴＡ６”）とＥＣＣ（“ＥＣＣ６”）は両方とも正常なアドレスに書き込まれる。
（４）’このとき、上記の（３）でアドレスＡＤＲ−６（“０１１０”）に書き込まれたデータ（“ＤＡＴＡ２”）が、データ（“ＤＡＴＡ６”）で上書きされる。
（５）上記の（３）で書き込んだデータ（“ＤＡＴＡ２”）と、そのデータとペアになるＥＣＣ（“ＥＣＣ２”）を読み出そうとする。
（５）’このとき、実際には、データ（“ＤＡＴＡ２”）が格納されているはずのアドレスＡＤＲ−２（“００１０”）からではなく、内蔵メモリ１４のアドレスＡＤＲ−６（“０１１０”）からデータ（“ＤＡＴＡ６”）が読み出される。このアドレスＡＤＲ−６（“０１１０”）には、上記の（３）で一旦データ（“ＤＡＴＡ２”）が書き込まれたものの、上記の（４）’でデータ（“ＤＡＴＡ６”）に上書きされたためである。また、ＥＣＣ（“ＥＣＣ２”）が格納されているアドレスＡＤＲ−Ｃ（“１１００”）から正常にＥＣＣ（“ＥＣＣ２”）は読み出される。そのため、データ（“ＤＡＴＡ６”）と、そのデータとはペアが崩れたＥＣＣ（“ＥＣＣ２”）が読み出される。
（６）その結果、ＲＤＴ変換回路１４０が有するＥＣＣチェック回路１４２で１ビットの誤り、又は、２ビット以上の誤りとして、Ｓｔｕｃｋ−ａｔ１故障が確実に検出される。このように、アドレス信号系の故障の検出も可能であるため、本実施の形態２は、機能安全の観点から優れていると言える。
【０１２３】
また、図１５を参照して、ＥＣＣを格納する領域に対して「ＡＤＲ反転」を行う実施の形態１のケースで、図１４と同様にデータの書き込みと読み出しが行われる場合の動作について説明する。
【０１２４】
（１）データ（“ＤＡＴＡ５”）がアドレスＡＤＲ−５（“０１０１”）に、そのデータとペアになるＥＣＣ（“ＥＣＣ５”）がアドレスＡＤＲ−Ａ（“１０１０”）に書き込まれている。また、データ（“ＤＡＴＡ１”）がアドレスＡＤＲ−１（“０００１”）に、そのデータとペアになるＥＣＣ（“ＥＣＣ１”）がアドレスＡＤＲ−Ｅ（“１１１０”）に書き込まれている。図では、括弧付きでこれらを示している。
（２）ここで、アドレスのＡ２ビットに対応するアドレス信号線にＳｔｕｃｋ−ａｔ１故障が発生する。そのため、内蔵メモリ１４のアドレスＡＤＲ−０〜ＡＤＲ−３とＡＤＲ−８〜ＡＤＲ−Ｂのアドレスにはアクセスできなくなる。
（３）新たに、データ（“ＤＡＴＡ２”）をアドレスＡＤＲ−２（“００１０”）に、そのデータとペアになるＥＣＣ（“ＥＣＣ２”）をアドレスＡＤＲ−Ｄ（“１１０１”）に書き込もうとする。このとき、実際には、上記の（２）で発生したアドレス信号線の故障により、内蔵メモリ１４のアドレスＡＤＲ−２（“００１０”）ではなく、アドレスＡＤＲ−６（“０１１０”）にデータ（“ＤＡＴＡ２”）が書き込まれる。一方、ＥＣＣ（“ＥＣＣ２”）は正常にアドレスＡＤＲ−Ｄ（“１１０１”）に書き込まれる。
（４）続いて、データ（“ＤＡＴＡ６”）をアドレスＡＤＲ−６（“０１１０”）に、そのデータとペアになるＥＣＣ（“ＥＣＣ６”）をアドレスＡＤＲ−９（“１００１”）に書き込もうとする。このとき、実際には、上記の（２）で発生したアドレス信号線の故障により、内蔵メモリ１４のアドレスＡＤＲ−９（“１００１”）ではなく、アドレスＡＤＲ−Ｄ（“１１０１”）にＥＣＣ（“ＥＣＣ６”）が書き込まれる。一方、データ（“ＤＡＴＡ６”）は正常にアドレスＡＤＲ−６（“０１１０”）に書き込まれる。
（４）’このとき、上記の（３）でアドレスＡＤＲ−６（“０１１０”）に書き込まれたデータ（“ＤＡＴＡ２”）が、データ（“ＤＡＴＡ６”）で上書きされる。また、アドレスＡＤＲ−Ｄ（“１１０１”）に書き込まれたＥＣＣ（“ＥＣＣ２”）が、ＥＣＣ（“ＥＣＣ６”）で上書きされる。
（５）上記の（３）で書き込んだデータ（“ＤＡＴＡ２”）と、そのデータとペアになるＥＣＣ（“ＥＣＣ２”）を読み出そうとする。
（５）’このとき、実際には、データ（“ＤＡＴＡ２”）が格納されているはずのアドレスＡＤＲ−２（“００１０”）からではなく、内蔵メモリ１４のアドレスＡＤＲ−６（“０１１０”）からデータ（“ＤＡＴＡ６”）が読み出される。このＡＤＲ−６（“０１１０”）は、上記の（３）で一旦データ（“ＤＡＴＡ２”）が書き込まれたものの、上記の（４）’でデータ（“ＤＡＴＡ６”）に上書きされたためである。また、ＥＣＣ（“ＥＣＣ２”）が格納されているはずのアドレスＡＤＲ−Ｄ（“１１０１”）からＥＣＣ（“ＥＣＣ６”）が読み出される。このアドレスＡＤＲ−Ｄ（“１１０１”）には、上記の（３）で一旦ＥＣＣ（“ＥＣＣ２”）が書き込まれたものの、上記の（４）’でＥＣＣ（“ＥＣＣ６”）に上書きされたためである。そのため、上記の（３）で書き込んだデータではないデータ（“ＤＡＴＡ６”）と、そのデータとペアを成すＥＣＣ（“ＥＣＣ６”）が読み出される。
（６）その結果、ＲＤＴ変換回路１４０が有するＥＣＣチェック回路１４２では、正常なデータ（“ＤＡＴＡ６”）とＥＣＣ（“ＥＣＣ６”）のペアに見えるため、データにビット誤りが発生していない限り、１ビットの誤り、又は、２ビット以上の誤りとして故障を検出することはできない。
【０１２５】
なお、図１４は、内蔵メモリ１４に入力するアドレス信号のうち、Ａ２ビットにＳｔｕｃｋ−ａｔ１故障（１への固着）が発生した場合の動作を示したものであった。しかし、そのＡ２ビットにＳｔｕｃｋ−ａｔ０故障（０への固着）が発生した場合や、他のアドレス（具体的には、Ａ１ビットとＡ０ビット）にＳｔｕｃｋ−ａｔ１故障またはＳｔｕｃｋ−ａｔ０故障が発生した場合であっても、本実施の形態２によれば同様にアドレス信号線の故障を検出可能である。
【０１２６】
図１６は、図１１に示したＮ＝３の場合について、“ＤＡＴＡ０”と“ＥＣＣ０”、“ＤＡＴＡ１”と“ＥＣＣ１”、・・・、“ＤＡＴＡ７”と“ＥＣＣ７”という８通りのペアについて、アドレス信号の下位３ビットＡ２〜Ａ０の値を、８行（上から順番に“０”〜“７”と番号付け）にわたって示した表である。図１６では、データを読み出す際に内蔵メモリ１４に入力されるアドレス信号が示すアドレスを「アドレス（データ）」として示し、ＥＣＣを読み出す際に内蔵メモリ１４に入力されるアドレス信号が示すアドレスを「アドレス（ＥＣＣ）」として示している。この表の左から右に向かって、図１３と同様に、上記（１）〜（７）の７通りの故障が発生した場合について示している。この表の３行目（番号は２）で左から２通り目にあるアドレスのＡ２ビットにＳｔｕｃｋ−ａｔ１故障が発生した場合が、図１４に示したものに相当する。
【０１２７】
なお、Ａ２〜Ａ０の値として、各ビット位置の値（０または１）を３つ並べて示しているが、故障により値が変わったビット位置の値には下線を付している。
【０１２８】
図１６に示した表の３行目（番号は２）は、図１４の（３）において書き込むデータ（“ＤＡＴＡ２”）と、そのデータとペアになるＥＣＣ（“ＥＣＣ２”）の各々が格納されるアドレスを示した行になる。アドレスの全ビットに故障が発生していない場合のアドレスは、一番左に示している通り、それぞれ、ＡＤＲ−２の下位３ビット（“０１０”）とＡＤＲ−Ｃの下位３ビット（“１００”）となる。図１６の表において、この２つのＡ２〜Ａ０の値のペアを点線で囲んで示している。
【０１２９】
ここで、Ａ２ビットにＳｔｕｃｋ−ａｔ１故障が発生した場合のアドレスは、そのすぐ右に示している通り、アドレス（データ）のＡＤＲ−２は故障による影響を受けて別のＡＤＲ−６（下位３ビットは“１１０”）となり、アドレス（ＥＣＣ）のＡＤＲ−Ｃ（下位３ビットは“１００”）は故障による影響を受けずにＡＤＲ−Ｃのままとなる。この２つのＡ２〜Ａ０の値のペアの故障による影響を受けた後の値を、表において破線で囲んで示すとともに、この２つのＡ２〜Ａ０の値のペアの故障による影響を受けた後の値の各々で実際にアクセスされるアドレス（データ）及びアドレス（ＥＣＣ）を、表において実線で囲むとともに太実線で接続して示している。これによって、データ（“ＤＡＴＡ６”）とＥＣＣ（“ＥＣＣ２”）がアクセスされる。すなわち、図１４の（５）’で説明した通り、データとＥＣＣのペアが崩れていることが分かる。
【０１３０】
また、この３行目における２つのＡ２〜Ａ０の値のペアの故障による影響を受けた後の値に加えて、１行目、５行目及び７行目についても、２つのＡ２〜Ａ０の値のペアの故障による影響を受けた後の値を、表において破線で囲んで示している。しかしながら、これら４行に示されている２つのＡ２〜Ａ０の値のペアは、アドレス（データ）がＡＤＲ−６（その下位３ビットは“１１０”）またはＡＤＲ−４（その下位３ビットは“１００”）、アドレス（ＥＣＣ）がＡＤＲ−Ｃ（その下位３ビットは“１００”）またはＡＤＲ−Ｄ（その下位３ビットは“１０１”）である４通りの組み合わせになっている。そのため、図１４の（４）’で説明した通り、本来のペアとは異なるアドレス（データ）とアドレス（ＥＣＣ）にデータとＥＣＣのペアを書き込んだ場合であっても、本来のペアにおけるデータとＥＣＣのどちらか一方が上書きされてしまうことはあるが、データとＥＣＣの両方が上書きされてしまうことはない。
【０１３１】
同じ３行目の右の方には、他の例として、Ａ１ビットにＳｔｕｃｋ−ａｔ１故障が発生した場合と、Ａ０ビットにＳｔｕｃｋ−ａｔ１故障が発生した場合についても、２つのＡ２〜Ａ０の値のペアについて、上記と同様の形で示しているが、いずれの場合もデータとＥＣＣのペアが崩れていることが分かる。また、データとＥＣＣの両方に対する上書きは発生しないことが分かる。
【０１３２】
さらに、他の例として、図１６に示した表の６行目（番号は５）には、データ（“ＤＡＴＡ５”）と、そのデータとペアとなるＥＣＣ（“ＥＣＣ５”）の各々が格納されるアドレスに関して、同様に、Ａ２ビットにＳｔｕｃｋ−ａｔ０故障が発生した場合、Ａ１ビットにＳｔｕｃｋ−ａｔ０故障が発生した場合、Ａ０ビットにＳｔｕｃｋ−ａｔ０故障が発生した場合についても示している。そして、いずれの場合も、やはりデータとＥＣＣのペアは崩れている。また、本来のペアにおけるデータとＥＣＣの両方に対する上書きは発生しない。この表から、アドレスのいずれかのビットにＳｔｕｃｋ−ａｔ故障が発生した場合には、確実に故障が検出できることが分かる。
【０１３３】
また、図１７は、ＥＣＣを格納する領域に対して「ＡＤＲ反転」を行う実施の形態１のケースについて、図１６と同様にアドレス（データ）とアドレス（ＥＣＣ）の下位３ビットであるＡ２〜Ａ０の値を示した表である。この表の３行目（番号は２）で左から２通り目にあるアドレスのＡ２ビットにＳｔｕｃｋ−ａｔ１故障が発生した場合が、図１５に示したものに相当する。
【０１３４】
このケースの場合、図１７に示した表から、アドレスのいずれかのビットにＳｔｕｃｋ−ａｔ故障が発生した後に、データの書き込みと読み出しが行われる場合、アドレス（データ）とアドレス（ＥＣＣ）のペアが本来のペアとは異なるものとなるが、それとは違うもう１つのアドレス（データ）とアドレス（ＥＣＣ）のペアと一致してしまう（つまり、アドレスが縮退される）。そのため、そのデータを読み出す際に、アドレス信号線の故障を検出することができない場合がある。
【０１３５】
なお、このケースでは、２通りのアドレス（データ）とアドレス（ＥＣＣ）のペアが１つに縮退されることが原因で、アドレス信号線の故障を見逃す場合があることが分かる。しかし、その縮退される前の２通りのペアの各々のアドレス（データ）またはアドレス（ＥＣＣ）のＡ２〜Ａ０の３ビットのアドレスパリティを算出すると、一方は値が“０”となり、他方は値が“１”になる。そのため、これを利用することで、両者の区別が可能となる。すなわち、このケースでも確実に故障が検出できるように工夫することは可能である。
【０１３６】
例えば、５ビットのＥＣＣに対して上位３ビットに付加されるダミービットとして、このアドレスパリティの値（０または１）を３つ並べた３ビットを用いるようにする。すなわち、アドレス（データ）のＡ２〜Ａ０の３ビットのアドレスにおいて、“１”が奇数含まれている場合はダミービットとして“１１１”が生成され、“１”が偶数含まれている場合はダミービットとして“０００”が生成される。ＥＣＣチェック回路１４２は、ＥＣＣを読み出した際にその３ビットの各ビットの値において多数決で最も多い値をアドレスパリティの値として判定する。そして、ＥＣＣチェック回路１４２は、その判定した値が“０”なのか“１”なのかによって、データとＥＣＣのペアが正しいものなのか、それともアドレス信号線の故障により本来のペアにおけるデータとＥＣＣが両方とも上書きされてしまったものかどうかを識別して、アドレス信号線の故障を検出する。
【０１３７】
より具体的には、この故障検出方法を採用する場合には、バスマスタから入力されるアドレス信号を、ＥＣＣ生成回路１３１と、ＥＣＣチェック回路１４２にも入力されるようにする。そして、ＥＣＣ生成回路１３１は、入力されたアドレス信号が示すアドレスに基づいて、ダミービットを生成する。また、ＥＣＣチェック回路１４２は、入力されたアドレス信号が示すアドレスに基づいてアドレスパリティを生成し、生成したアドレスパリティと、内蔵メモリ１４から入力されたＥＣＣに付加されたダミービットから判定されたアドレスパリティが一致するか否かを判定する。そして、ＥＣＣチェック回路１４２は、比較したアドレスパリティが一致しない場合、アドレス信号線が故障していると判定し、エラーを通知するエラー通知信号（例えば値は“１”）を出力する。
【０１３８】
ここで、ＥＣＣ生成回路１３１は、３ビットのダミービットの全てではなく、いずれか１ビット又は２ビットにアドレスパリティの値を設定してもよい。そして、ＥＣＣチェック回路１４２は、その１ビット又は２ビットのいずれかの値を参照して、アドレスパリティの値を判定してもよい。しかしながら、この場合は、データは訂正可能であるが、アドレスパリティの値が変更されてしまう１ビットの誤りが発生した場合に、訂正不能な誤りが発生したことを通知するエラー通知信号（例えば値は“１”）が通知されてしまう。よって、好ましくは、上述したように、ダミービットの３ビットの全てにアドレスパリティの値を設定するとよい。
【０１３９】
以上の説明では、バスマスタから入力されるＮビットのアドレス信号の全てのビットをローテーション（シフト）する例について説明したが、これに限られない。例えば、Ｎビットのアドレス信号のうちの所定数ビット（Ｎビット〜１ビットのいずれか）をローテーションするようにしても一定の効果が得られる。なお、この所定数ビットは、上述同様に、上位のビットでもよく、下位のビットでもよく、連続したビットでもよく、非連続のビットでもよい。しかしながら、好ましくは、上述したように、Ｎビットのアドレス信号の全てのビットをローテーションすることで、より多くの故障を検出することが可能となる。
【０１４０】
以上に説明したように、本実施の形態２では、ＡＤＲ変換回路１２０は、第１のアドレス（Ｎ＋１ビットのアドレスに対応）の少なくとも１つのビットの値以外のビット（下位Ｎビットに対応）のうちの所定数ビットを並べ替えたアドレスを第２のアドレスとして生成している。上述の例では、ＡＤＲ変換回路１２０は、第１のアドレスの少なくとも１つのビットの値以外のビットの全て（Ｎビット）を並べ替えたアドレスを第２のアドレスとして生成している。より具体的には、ＡＤＲ変換回路１２０は、第１のアドレスの少なくとも１つのビットの値以外のビットの全て（Ｎビット）を上位方向に所定のビット数（上記例では１ビット）だけシフトしたアドレスを第２のアドレスとして生成するようにしている。
【０１４１】
これによれば、データと、そのデータから生成したＥＣＣのペアを内蔵メモリ１４に書き込んだ後で、内蔵メモリ１４に対するアドレス信号線のいずれか１本にＳｔｕｃｋ−ａｔ故障（０または１への固着）が発生した場合、その書き込み済みのデータを読み出す際に、アドレス信号線の故障検出が可能となる。
【０１４２】
これは、２本以上のアドレス信号線の故障に対しても同様に有効である。また、内蔵メモリ１４に入力するアドレス信号を生成して出力するＡＤＲ変換回路１２０や、内蔵メモリ１４の中のアドレス信号処理回路で起きたアドレスの値に影響が出る故障も検出可能である。
【０１４３】
さらに、本実施の形態２によれば、アドレス信号線のいずれか１本にＳｔｕｃｋ−ａｔ故障（０または１への固着）が発生した後に、データの書き込みと読み出しが行われる場合であっても、データとＥＣＣの両方が上書きされてしまうことによってアドレス信号線の故障を見逃すことはなく、確実に故障が検出できる。
【０１４４】
＜実施の形態３＞
続いて、本実施の形態３について、図面を用いて、その構成と動作を説明する。本実施の形態３に係るＣＰＵシステム１の構成と動作については、図１に示した実施の形態１に係るＣＰＵシステム１の構成と動作と基本的に同様であるため、その説明を省略する。また、本実施の形態３に係るＩ／Ｆ変換回路１３の構成と動作については、図９に示した実施の形態２に係るＩ／Ｆ変換回路１３の構成と動作と基本的に同様であるため、その説明を省略する。ただし、本実施の形態３では、Ｉ／Ｆ変換回路１３において、ＡＤＲ変換回路１２０が有するＡＤＲローテーション回路１２３の構成と動作が、実施の形態２に係るＡＤＲローテーション回路１２３とは異なる。
【０１４５】
続いて、図１８を参照して、本実施の形態３に係るＡＤＲローテーション回路１２３の構成について説明する。ここでは、アドレス信号がＮビットである例について説明する。以下、実施の形態２と実施の形態３とでアドレスのローテーションを区別するために、実施の形態３におけるアドレスのビットのローテーションを「ＡＤＲローテーション２」と示し、実施の形態２におけるアドレスのビットのローテーションを「ＡＤＲローテーション」と示す。
【０１４６】
実施の形態２に係るＡＤＲローテーション回路１２３では、Ｎビットのアドレス信号線の各ビットの位置を入れ替えるために、そのアドレス信号が示すアドレスを左方向に（上位ビット方向に）１ビットだけローテーションしていた。それに対して、本実施の形態３では、アドレスを逆方向にローテーションする。すなわち、本実施の形態３に係るＡＤＲローテーション回路１２３は、アドレスを右方向に（下位ビット方向に）１ビットだけローテーションするものである。
【０１４７】
これは、図１８に示すように、ＡＤＲローテーション回路１２３において、Ｎビットのアドレス信号線の各々のビット位置を、入力段と出力段とでずらして接続することで実現する。すなわち、ＡＤＲローテーション回路１２３に入力されたＮビットのアドレス信号の各ビットＡ０、Ａ１、Ａ２、・・・、Ａ（Ｎ−１）を、ＡＤＲローテーション回路１２３から出力されるＮビットのアドレス信号の各ビットＡ’（Ｎ−１）、Ａ’０、Ａ’１、・・・、Ａ’（Ｎ−２）とする。なお、このＡＤＲローテーション回路１２３でも、Ｎビットのアドレス信号線の各ビットの信号を、Ｎ個のバッファ１２３０の各々で受けた後に、その接続先のビット位置をずらすようにしている。
【０１４８】
続いて、図１９を参照して、実施の形態３に係る内蔵メモリ１４のメモリマップについて説明する。ここでは、図１１に示した実施の形態２に係る内蔵メモリ１４と同様に、内蔵メモリ１４のデータ幅は８ビットであり、内蔵メモリ１４のアドレス幅は（Ｎ＋１）ビットであり、内蔵メモリ１４のデータ容量が（８×２（Ｎ＋１））ビットであり、Ｎ＝３である例について説明する。
【０１４９】
本実施の形態３では、データを格納するアドレスの下位Ｎビット（図１９ではＡ２〜Ａ０）の値に対して、そのデータとペアになるＥＣＣを格納するアドレスの下位Ｎビットの値は、図１８に示したＡＤＲローテーション回路１２３の動作により各ビット値が入れ替えられたもの（図１９においてＡ２〜Ａ０の値を「ＡＤＲローテーション２」と示している部分）になっている。
【０１５０】
すなわち、図１９に示すように、アドレスＡＤＲ−０（“００００”）のデータ（“ＤＡＴＡ０”）と、アドレスＡＤＲ−８（“１０００”）のＥＣＣ（“ＥＣＣ０”）とがペアになる。アドレスＡＤＲ−１（“０００１”）のデータ（“ＤＡＴＡ１”）と、アドレスＡＤＲ−Ｃ（“１１００”）のＥＣＣ（“ＥＣＣ１”）がペアになる。アドレスＡＤＲ−２（“００１０”）のデータ（“ＤＡＴＡ２”）と、アドレスＡＤＲ−９（“１００１”）のＥＣＣ（“ＥＣＣ２”）がペアになる。アドレスＡＤＲ−３（“００１１”）のデータ（“ＤＡＴＡ３”）と、アドレスＡＤＲ−Ｄ（“１１０１”）のＥＣＣ（“ＥＣＣ３”）がペアとなる。アドレスＡＤＲ−４（“０１００”）のデータ（“ＤＡＴＡ４”）と、アドレスＡＤＲ−Ａ（“１０１０”）のＥＣＣ（“ＥＣＣ４”）がペアとなる。アドレスＡＤＲ−５（“０１０１”）のデータ（“ＤＡＴＡ５”）と、アドレスＡＤＲ−Ｅ（“１１１０”）のＥＣＣ（“ＥＣＣ５”）がペアとなる。アドレスＡＤＲ−６（“０１１０”）のデータ（“ＤＡＴＡ６”）と、アドレスＡＤＲ−Ｂ（“１０１１”）のＥＣＣ（“ＥＣＣ６”）がペアとなる。アドレスＡＤＲ−７（“０１１１”）のデータ（“ＤＡＴＡ７”）と、アドレスＡＤＲ−Ｆ（“１１１１”）のＥＣＣ（“ＥＣＣ７”）がペアになる。
【０１５１】
なお、実施の形態１、２と同様に、ＥＣＣは上位３ビットにダミービット（値が０）を付加して８ビットのデータとされた後で内蔵メモリ１４に格納される。また、実施の形態１、２と同様に、データを読み出す際に、ＥＣＣチェック回路１４２で１ビットの誤り、または、２ビット以上の誤りとして、ライトデータ（８ビット）の８本の信号線のうち、いずれか１本以上が故障（断線）による値の変化が確実に検出される。また、リードデータ（８ビット）の８本の信号線の故障（断線）に関しても同様である。
【０１５２】
図２０は、図１９に示したＮ＝３の場合について、“ＤＡＴＡ０”と“ＥＣＣ０”、“ＤＡＴＡ１”と“ＥＣＣ１”、・・・、“ＤＡＴＡ７”と“ＥＣＣ７”という８通りのペアについて、アドレス信号の下位３ビットＡ２〜Ａ０の値を、８行（上から順番に“０”〜“７”と番号付け）にわたって示した表である。図２０では、データを読み出す際に内蔵メモリ１４に入力されるアドレス信号が示すアドレスを「アドレス（データ）」として示し、ＥＣＣを読み出す際に内蔵メモリ１４に入力されるアドレス信号が示すアドレスを「アドレス（ＥＣＣ）」として示している。
【０１５３】
この表の左から右に向かって、
（１）アドレスの全ビットに故障が発生していない場合
（２）アドレスのＡ２ビットにＳｔｕｃｋ−ａｔ１故障が発生した場合
（３）アドレスのＡ２ビットにＳｔｕｃｋ−ａｔ０故障が発生した場合
（４）アドレスのＡ１ビットにＳｔｕｃｋ−ａｔ１故障が発生した場合
（５）アドレスのＡ１ビットにＳｔｕｃｋ−ａｔ０故障が発生した場合
（６）アドレスのＡ０ビットにＳｔｕｃｋ−ａｔ１故障が発生した場合
（７）アドレスのＡ０ビットにＳｔｕｃｋ−ａｔ０故障が発生した場合
の７通りを示している。
【０１５４】
なお、Ａ２〜Ａ０の値として、各ビット位置の値（０または１）を３つ並べて示しているが、故障により値が変わったビット位置の値には下線を付している。
【０１５５】
図２０に示した表の２行目（番号は１）は、データ（“ＤＡＴＡ１”）と、そのデータとペアになるＥＣＣ（“ＥＣＣ１”）の各々が格納されるアドレスを示した行になる。アドレスの全ビットに故障が発生していない場合のアドレスは、一番左に示している通り、それぞれ、ＡＤＲ−１の下位３ビット（“００１”）とＡＤＲ−Ｃの下位３ビット（“１００”）となる。図２０の表において、この２つのＡ２〜Ａ０の値のペアを実線で囲んで示している。
【０１５６】
ここで、Ａ２ビットにＳｔｕｃｋ−ａｔ１故障が発生した場合のアドレスは、そのすぐ右に示している通り、アドレス（データ）のＡＤＲ−１は故障による影響を受けて別のＡＤＲ−５（下位３ビットは“１０１”）となり、アドレス（ＥＣＣ）のＡＤＲ−Ｃ（下位３ビットは“１００”）は故障による影響を受けない。この２つのＡ２〜Ａ０の値のペアの故障による影響を受けた後の値を、表において破線で囲んで示すとともに、この２つのＡ２〜Ａ０の値のペアの故障による影響を受けた後の値の各々で実際にアクセスされるアドレス（データ）及びアドレス（ＥＣＣ）を、表において実線で囲むとともに太実線で接続して示している。これによって、データ（“ＤＡＴＡ５”）とＥＣＣ（“ＥＣＣ１”）がアクセスされる。すなわち、データとＥＣＣのペアが崩れていることが分かる。
【０１５７】
同じく、さらに右に進むにつれて、他の例として、Ａ１ビットにＳｔｕｃｋ−ａｔ１故障が発生した場合と、Ａ０ビットにＳｔｕｃｋ−ａｔ１故障が発生した場合についても、２つのＡ２〜Ａ０の値のペアについて、上記と同様の形で示しているが、いずれの場合もデータとＥＣＣのペアが崩れていることが分かる。
【０１５８】
また、さらに、他の例として、図２０に示した表の７行目（番号は６）には、データ（“ＤＡＴＡ６”）と、そのデータとペアとなるＥＣＣ（“ＥＣＣ６”）の各々が格納されるアドレスに関して、同様に、Ａ２ビットにＳｔｕｃｋ−ａｔ０故障が発生した場合、Ａ１ビットにＳｔｕｃｋ−ａｔ０故障が発生した場合、Ａ０ビットにＳｔｕｃｋ−ａｔ０故障が発生した場合についても示している。そして、いずれの場合も、やはりデータとＥＣＣのペアは崩れている。この表から、アドレスのいずれかのビットにＳｔｕｃｋ−ａｔ故障が発生した場合には、確実に故障が検出できることが分かる。
【０１５９】
また、図２１は、図１９に示したＮ＝３の場合について、“ＤＡＴＡ０”と“ＥＣＣ０”、“ＤＡＴＡ１”と“ＥＣＣ１”、・・・、“ＤＡＴＡ７”と“ＥＣＣ７”という８通りのペアについて、アドレス信号の下位３ビットＡ２〜Ａ０の値を、８行（上から順番に“０”〜“７”と番号付け）にわたって示した表である。図２１では、データを読み出す際に内蔵メモリ１４に入力されるアドレス信号が示すアドレスを「アドレス（データ）」として示し、ＥＣＣを読み出す際に内蔵メモリ１４に入力されるアドレス信号が示すアドレスを「アドレス（ＥＣＣ）」として示している。この表の左から右に向かって、図２０と同様に、上記（１）〜（７）の７通りの故障が発生した場合について示している。
【０１６０】
図２１に示した表の３行目（番号は２）は、データ（“ＤＡＴＡ２”）と、そのデータとペアになるＥＣＣ（“ＥＣＣ２”）の各々が格納されるアドレスを示した行になる。アドレスの全ビットに故障が発生していない場合のアドレスは、一番左に示している通り、それぞれ、ＡＤＲ−２の下位３ビット（“０１０”）とＡＤＲ−９の下位３ビット（“００１”）となる。図２１の表において、この２つのＡ２〜Ａ０の値のペアを点線で囲んで示している。
【０１６１】
ここで、Ａ２ビットにＳｔｕｃｋ−ａｔ１故障が発生した場合のアドレスは、そのすぐ右に示している通り、アドレス（データ）のＡＤＲ−２は故障による影響を受けて別のＡＤＲ−６（下位３ビットは“１１０”）となり、アドレス（ＥＣＣ）のＡＤＲ−９（下位３ビットは“００１”）も故障による影響を受けて別のＡＤＲ−Ｄ（下位３ビットは“１０１”）となる。この２つのＡ２〜Ａ０の値のペアの故障による影響を受けた後の値を、表において破線で囲んで示すとともに、この２つのＡ２〜Ａ０の値のペアの故障による影響を受けた後の値の各々で実際にアクセスされるアドレス（データ）及びアドレス（ＥＣＣ）を、表において実線で囲むとともに太実線で接続して示している。これによって、データ（“ＤＡＴＡ６”）とＥＣＣ（“ＥＣＣ３”）がアクセスされる。すなわち、データとＥＣＣのペアが崩れていることが分かる。
【０１６２】
また、この３行目における２つのＡ２〜Ａ０の値のペアの故障による影響を受けた後の値に加えて、４行目、７行目及び８行目についても、２つのＡ２〜Ａ０の値のペアの故障による影響を受けた後の値を、表において破線で囲んで示している。しかしながら、これら４行に示されている２つのＡ２〜Ａ０の値のペアは、アドレス（データ）がＡＤＲ−６（その下位３ビットは“１１０”）またはＡＤＲ−７（その下位３ビットは“１１１”）、アドレス（ＥＣＣ）がＡＤＲ−Ｄ（その下位３ビットは“１０１”）またはＡＤＲ−Ｆ（その下位３ビットは“１１１”）である４通りの組み合わせになっている。そのため、本来のペアとは異なるアドレス（データ）とアドレス（ＥＣＣ）にデータとＥＣＣのペアを書き込んだ場合であっても、本来のペアにおけるデータとＥＣＣのどちらか一方が上書きされてしまうことはあるが、データとＥＣＣの両方が上書きされてしまうことはない。
【０１６３】
同じ３行目の右の方には、他の例として、Ａ１ビットにＳｔｕｃｋ−ａｔ１故障が発生した場合と、Ａ０ビットにＳｔｕｃｋ−ａｔ１故障が発生した場合についても、２つのＡ２〜Ａ０の値のペアについて、上記と同様の形で示しているが、いずれの場合もデータとＥＣＣのペアが崩れていることが分かる。また、データとＥＣＣの両方に対する上書きは発生しないことが分かる。
【０１６４】
さらに、他の例として、図２１に示した表の６行目（番号は５）には、データ（“ＤＡＴＡ５”）と、そのデータとペアとなるＥＣＣ（“ＥＣＣ５”）の各々が格納されるアドレスに関して、同様に、Ａ２ビットにＳｔｕｃｋ−ａｔ０故障が発生した場合、Ａ１ビットにＳｔｕｃｋ−ａｔ０故障が発生した場合、Ａ０ビットにＳｔｕｃｋ−ａｔ０故障が発生した場合についても示している。そして、いずれの場合も、やはりデータとＥＣＣのペアは崩れている。また、本来のペアにおけるデータとＥＣＣの両方に対する上書きは発生しない。この表から、アドレスのいずれかのビットにＳｔｕｃｋ−ａｔ故障が発生した場合には、確実に故障が検出できることが分かる。
【０１６５】
なお、本実施の形態３でも、実施の形態２でも説明したように、Ｎビットのアドレス信号のうちの所定数ビット（Ｎビット〜１ビットのいずれか）をローテーションしてもよい。
【０１６６】
以上に説明したように、本実施の形態３では、ＡＤＲ変換回路１２０は、第１のアドレス（Ｎ＋１ビットのアドレスに対応）の少なくとも１つのビットの値以外のビット（下位Ｎビットに対応）のうちの所定数ビットを並べ替えたアドレスを第２のアドレスとして生成している。上述の例では、ＡＤＲ変換回路１２０は、第１のアドレスの少なくとも１つのビットの値以外のビットの全て（Ｎビット）を並べ替えたアドレスを第２のアドレスとして生成している。より具体的には、ＡＤＲ変換回路１２０は、第１のアドレスの少なくとも１つのビットの値以外のビットの全て（Ｎビット）を下位方向に所定のビット数（上記例では１ビット）だけシフトしたアドレスを第２のアドレスとして生成するようにしている。
【０１６７】
これによれば、実施の形態２と同じ効果が得られる。すなわち、データと、そのデータから生成したＥＣＣのペアを内蔵メモリ１４に書き込んだ後で、内蔵メモリ１４に対するアドレス信号線のいずれか１本にＳｔｕｃｋ−ａｔ故障（０または１への固着）が発生した場合、その書き込み済みのデータを読み出す際に、アドレス信号線の故障検出が可能となる。
【０１６８】
さらに、本実施の形態３によれば、アドレス信号線のいずれか１本にＳｔｕｃｋ−ａｔ故障（０または１への固着）が発生した後に、データの書き込みと読み出しが行われる場合であっても、データとＥＣＣの両方が上書きされてしまうことによってアドレス信号線の故障を見逃すことはなく、確実に故障が検出できる。
【０１６９】
＜実施の形態４＞
続いて、本実施の形態４について、図面を用いて、その構成と動作を説明する。本実施の形態４に係るＣＰＵシステム１の構成と動作については、図１に示した実施の形態１に係るＣＰＵシステム１の構成と動作と基本的に同様であるため、その説明を省略する。ただし、本実施の形態４では、ＣＰＵシステム１が有するＩ／Ｆ変換回路１３の一部の構成と動作が、実施の形態１に係るＩ／Ｆ変換回路１３とは異なる。
【０１７０】
続いて、図２２を参照して、本実施の形態４に係るＩ／Ｆ変換回路１３の構成について説明する。本実施の形態４に係るＩ／Ｆ変換回路１３は、実施の形態１に係るＩ／Ｆ変換回路１３と比較して、ＡＤＲ変換回路１２０におけるＡＤＲ反転回路１２１に代えて、ＡＤＲビット順逆転回路１２４を有する。なお、本実施の形態４に係るＩ／Ｆ制御回路１１０、ＷＤＴ変換回路１３０及びＲＤＴ変換回路１４０の構成及び動作は、実施の形態１に係るそれらと同様である。
【０１７１】
ＡＤＲビット順逆転回路１２４には、バスマスタから出力されるアドレス信号が入力される。ＡＤＲビット順逆転回路１２４は、入力されたアドレス信号が示すアドレスの全てのビットの並び順を反転して、セレクタ１２２に出力する。よって、本実施の形態４では、セレクタ１２２は、バスマスタから出力されるアドレス信号、及び、ＡＤＲビット順逆転回路１２４から出力されるアドレス信号のうち、いずれか１つを選択し、内蔵メモリ１４に出力する。
【０１７２】
続いて、図２３を参照して、本実施の形態４に係るＡＤＲ変換回路１２０が有するＡＤＲビット順逆転回路１２４の構成について説明する。ここでは、アドレス信号がＮビットである例について説明する。
【０１７３】
実施の形態２では、Ｎビットあるアドレス信号の各ビットを入れ替えるために、アドレスを左方向に（上位ビット方向に）１ビットだけローテーションし、実施の形態３では、アドレスを右方向に（下位ビット方向に）１ビットだけローテーションしていた。それに対し、本実施の形態４では、アドレス信号の各ビットの位置を上下逆方向に入れ替えて、ビット順を反転させる。すなわち、ＡＤＲビット順逆転回路１２４は、アドレス信号のＮビットの並び順を反転する。
【０１７４】
これは、図２３に示すように、ＡＤＲビット順逆転回路１２４において、Ｎビットのアドレス信号線の各々のビット位置を、入力段と出力段とでずらして接続することで実現する。すなわち、ＡＤＲビット順逆転回路１２４に入力されたＮビットのアドレス信号の各ビットＡ０、Ａ１、Ａ２、・・・、Ａ（Ｎ−２）、Ａ（Ｎ−１）を、ＡＤＲビット順逆転回路１２４から出力されるＮビットのアドレス信号の各ビットＡ’（Ｎ−１）、Ａ’（Ｎ−２）、・・・、Ａ’２、Ａ’１、Ａ’０とする。なお、このＡＤＲビット順逆転回路１２４では、Ｎビットのアドレス信号線の各ビットの信号を、Ｎ個のバッファ１２４０の各々で受けた後に、その接続先のビット位置をずらすようにしている。
【０１７５】
ただし、Ｎビットあるアドレスの全てのビットの位置が入れ替わるようにする必要がある。そのため、本実施の形態４ではＮが偶数であることを前提としている。例えば、Ｎ＝４の場合、ＡＤＲビット順逆転回路１２４は、図２４に示す構成になる。
【０１７６】
なお、本実施の形態４でも、実施の形態２及び実施の形態３でも説明したように、Ｎビットのアドレス信号のうちの所定数ビット（Ｎビット〜１ビットのいずれか）を並び替えるようにしてもよい。
【０１７７】
以上に説明したように、本実施の形態４では、ＡＤＲ変換回路１２０は、第１のアドレス（Ｎ＋１ビットのアドレスに対応）の少なくとも１つのビットの値以外のビット（下位Ｎビットに対応）のうちの所定数ビットを並べ替えたアドレスを第２のアドレスとして生成している。上述の例では、ＡＤＲ変換回路１２０は、第１のアドレスの少なくとも１つのビットの値以外のビットの全て（Ｎビット）を並べ替えたアドレスを第２のアドレスとして生成している。より具体的には、ＡＤＲ変換回路１２０は、第１のアドレスの少なくとも１つのビットの値以外のビットの全て（Ｎビット）の並び順を反転したアドレスを第２のアドレスとして生成するようにしている。
【０１７８】
これによれば、実施の形態２及び実施の形態３と全く同じ効果が得られることは明らかであるため、詳細な説明は省略する。
【０１７９】
なお、以上に説明した実施の形態２、実施の形態３及び実施の形態４では、データとペアになるＥＣＣに対するアドレスを、ＡＤＲローテーション回路１２３又はＡＤＲビット順逆転回路１２４というアドレス入替回路で変換している点が共通する。
【０１８０】
Ｎビットあるアドレスの全てのビットの位置が入れ替わるようにするアドレス入替えの方法は、複数通り存在する。ここで、その数をＳＮとする（ＳＮにおける「Ｎ」は、上述したＩ／Ｆ変換回路１３に入力されるアドレス信号のビット数である）。Ｎ＝２の場合は、図２５に示す１通りのみ（Ｓ２＝１）で、Ｎ＝３の場合は、図２６に示す２通り（Ｓ３＝２）である。図２６の上から１番目は実施の形態２で示した「ＡＤＲローテーション」に対応し、図２６の２番目は実施の形態３で示した「ＡＤＲローテーション２」に対応する。
【０１８１】
また、Ｎ＝４の場合は、図２７に示す９通り（Ｓ４＝９）となる。その左側の列の上から１番目が実施の形態２での「ＡＤＲローテーション」に相当し、２番目が実施の形態３での「ＡＤＲローテーション２」に相当し、３番目が実施の形態４での「ＡＤＲビット順逆転」に相当する。ここで、図２６の最下行に示した３通りは、２ビットずつアドレスのビットを入れ替えたものが２セットになっているものである。そのため、そのどちらかの１セットに含まれる２ビットのアドレス信号線の両方に故障が発生した場合には、故障検出が行えないという制約がある。
【０１８２】
なお、一般的に、Ｎビット（ただし、Ｎ≧３）のアドレスに対するアドレス入替えの方法の数は、図２８に示す式１の通りとなる。
【０１８３】
すなわち、ＡＤＲ変換回路１２０において実施するアドレスの各ビットの位置の入れ替えは、図２７でも例示するように、実施の形態２〜４で説明した「ＡＤＲローテーション」、「ＡＤＲローテーション２」及び「ＡＤＲビット順逆転」のみに限られない。次の実施の形態５として、図２７の最下行の真ん中で「ＡＤＲローテーション３」として示すアドレス入れ替え方法について説明する。
【０１８４】
＜実施の形態５＞
さらに、本実施の形態５について、図面を用いて、その構成と動作を説明する。本実施の形態５に係るＣＰＵシステム１の構成と動作については、図１に示した実施の形態１に係るＣＰＵシステム１の構成と動作と基本的に同様であるため、その説明を省略する。また、本実施の形態５に係るＩ／Ｆ変換回路１３の構成と動作については、図９に示した実施の形態２に係るＩ／Ｆ変換回路１３の構成と動作と基本的に同様であるため、その説明を省略する。ただし、本実施の形態５では、Ｉ／Ｆ変換回路１３において、ＡＤＲ変換回路１２０が有するＡＤＲローテーション回路１２３の構成と動作が、実施の形態２及び実施の形態３に係るＡＤＲローテーション回路１２３とは異なる。
【０１８５】
続いて、図２９を参照して、本実施の形態５に係るＡＤＲローテーション回路１２３の構成について説明する。ここでは、アドレス信号がＮビットである例について説明する。以下、本実施の形態５に係るアドレスのローテーションを「ＡＤＲローテーション３」と示す。
【０１８６】
実施の形態２に係るＡＤＲローテーション回路１２３では、Ｎビットのアドレス信号線の各ビットの位置を入れ替えるために、そのアドレス信号が示すアドレスを左方向に（上位ビット方向に）１ビットだけローテーションしていた。また、実施の形態３では、アドレスを右方向に（下位ビット方向に）１ビットだけローテーションしていた。しかし、本実施の形態５では、アドレスを右方向に（上位ビット方向に）２ビットだけローテーションする。
【０１８７】
これは、図２９に示すように、ＡＤＲローテーション回路１２３において、Ｎビットのアドレス信号線の各々のビット位置を、入力段と出力段とでずらして接続することで実現する。すなわち、ＡＤＲローテーション回路１２３に入力されたＮビットのアドレス信号の各ビットＡ０、Ａ１、Ａ２、・・・、Ａ（Ｎ−１）を、ＡＤＲローテーション回路１２３から出力されるＮビットのアドレス信号の各ビットＡ’（Ｎ−２）、Ａ’（Ｎ−１）、Ａ’０、Ａ’１、・・・、Ａ’（Ｎ−３）とする。なお、このＡＤＲローテーション回路１２３でも、Ｎビットのアドレス信号線の各ビットの信号を、Ｎ個のバッファ１２３０の各々で受けた後に、その接続先のビット位置をずらすようにしている。
【０１８８】
ここで、Ｎ＝４の場合は、図３０に示す構成になる。この図３０から明らかなように、Ｎ＝４の場合は、アドレスを左方向に（下位ビット方向に）２ビットだけローテーションすることと同等である。これは、ちょうど、図２７の最下行の真ん中で、「ＡＤＲローテーション３」として示したものに対応する。
【０１８９】
続いて、図３１を参照して、実施の形態５に係る内蔵メモリ１４のメモリマップについて説明する。ここでは、内蔵メモリ１４のデータ幅は８ビットであり、内蔵メモリ１４のアドレス幅は（Ｎ＋１）ビットであり、内蔵メモリ１４のデータ容量が（８×２（Ｎ＋１））ビットであり、Ｎ＝４である例について説明する。
【０１９０】
内蔵メモリ１４は、図３１における左半分を本来のデータを格納する領域として使用し、右半分を本来のデータとペアになるＥＣＣを格納する領域として使用する。つまり、内蔵メモリ１４における領域は、そのアドレス空間において、アドレスの最上位ビット（図３１ではＡ４）の値が、“０”となる場合はデータが格納される領域として、“１”となる場合はＥＣＣが格納される領域として区別される。
【０１９１】
本実施の形態５では、データを格納するアドレスの下位Ｎビット（図３１ではＡ３〜Ａ０）の値に対して、そのデータとペアになるＥＣＣを格納するアドレスの下位Ｎビットの値は、図３０に示したＡＤＲローテーション回路１２３の動作により各ビット値が入れ替えられたもの（図３１においてＡ３〜Ａ０の値を「ＡＤＲローテーション３」と示している部分、Ａ４＝１として右半分に示している領域）になっている。
【０１９２】
すなわち、図３１に示すように、アドレスＡＤＲ−００（“０００００”）のデータ（“ＤＡＴＡ０”）と、アドレスＡＤＲ−１０（“１００００”）のＥＣＣ（“ＥＣＣ０”）とがペアになる。アドレスＡＤＲ−０１（“００００１”）のデータ（“ＤＡＴＡ１”）と、アドレスＡＤＲ−１４（“１０１００”）のＥＣＣ（“ＥＣＣ１”）がペアになる。アドレスＡＤＲ−０２（“０００１０”）のデータ（“ＤＡＴＡ２”）と、アドレスＡＤＲ−１８（“１１０００”）のＥＣＣ（“ＥＣＣ２”）がペアになる。アドレスＡＤＲ−０３（“０００１１”）のデータ（“ＤＡＴＡ３”）と、アドレスＡＤＲ−１Ｃ（“１１１００”）のＥＣＣ（“ＥＣＣ３”）がペアになる。アドレスＡＤＲ−０４（“００１００”）のデータ（“ＤＡＴＡ４”）と、アドレスＡＤＲ−１１（“１０００１”）のＥＣＣ（“ＥＣＣ４”）がペアになる。アドレスＡＤＲ−０５（“００１０１”）のデータ（“ＤＡＴＡ５”）と、アドレスＡＤＲ−１５（“１０１０１”）のＥＣＣ５がペアになる。アドレスＡＤＲ−０６（“００１１０”）のデータ（“ＤＡＴＡ６”）とアドレスＡＤＲ−１９（“１１００１”）のＥＣＣ（“ＥＣＣ６”）がペアになる。アドレスＡＤＲ−０７（“００１１１”）のデータ（“ＤＡＴＡ７”）と、アドレスＡＤＲ−１Ｄ（“１１１０１”）のＥＣＣ（“ＥＣＣ７”）がペアになる。他のアドレスのデータ（“ＤＡＴＡ８”）〜（“ＤＡＴＡＦ”）の各々と、他のアドレスのＥＣＣ（“ＥＣＣ８”）〜（“ＥＣＣＦ”）の各々とがペアになる対応関係も、同様に、この図３１から分かるため、詳細な説明は省略する。
【０１９３】
実施の形態２及び実施の形態３では、Ｎ＝３とした場合、図１１及び図１９に示したように、内蔵メモリ１４が、データと、そのデータに対応するＥＣＣの各々を格納するアドレスとして８個（アドレスの下位３ビットＡ２〜Ａ０の組み合わせ）を有する例について説明した。それに対して、本実施の形態５では、Ｎ＝４とした場合、図３１に示すように、データと、そのデータに対応するＥＣＣの各々を格納するアドレスとして、その２倍の１６個を有する例を図示している。
【０１９４】
なお、本実施の形態５でも、実施の形態２及び実施の形態３でも説明したように、Ｎビットのアドレス信号のうちの所定数ビット（Ｎビット〜１ビットのいずれか）をローテーションするようにしてもよい。
【０１９５】
以上に説明したように、本実施の形態５では、ＡＤＲ変換回路１２０は、第１のアドレス（Ｎ＋１ビットのアドレスに対応）の少なくとも１つのビットの値以外のビット（下位Ｎビットに対応）のうちの所定数ビットを並べ替えたアドレスを第２のアドレスとして生成している。上述の例では、ＡＤＲ変換回路１２０は、第１のアドレスの少なくとも１つのビットの値以外のビットの全て（Ｎビット）を並べ替えたアドレスを第２のアドレスとして生成している。より具体的には、ＡＤＲ変換回路１２０は、第１のアドレスの少なくとも１つのビットの値以外のビットの全て（Ｎビット）を上位方向に所定のビット数（上記例では２ビット）だけシフトしたアドレスを第２のアドレスとして生成するようにしている。
【０１９６】
これによれば、実施の形態２〜実施の形態４と全く同じ効果が得られることは明らかであるため、詳細な説明は省略する。
【０１９７】
＜実施の形態６＞
続いて、本実施の形態６について、図面を用いて、その構成と動作を説明する。本実施の形態６に係るＣＰＵシステム１の構成と動作については、図１に示した実施の形態１に係るＣＰＵシステム１の構成と動作と基本的に同様であるため、その説明を省略する。ただし、本実施の形態６では、ＣＰＵシステム１が有するＩ／Ｆ変換回路１３の一部の構成と動作が、実施の形態１に係るＩ／Ｆ変換回路１３とは異なる。
【０１９８】
続いて、図３２を参照して、本実施の形態６に係るＩ／Ｆ変換回路１３の構成について説明する。本実施の形態６に係るＩ／Ｆ変換回路１３は、実施の形態１に係るＩ／Ｆ変換回路１３と比較して、ＡＤＲ変換回路１２０におけるＡＤＲ反転回路１２１に代えて、ＡＤＲシフト＆オフセット設定回路１２５を有する。なお、本実施の形態６に係るＩ／Ｆ制御回路１１０、ＷＤＴ変換回路１３０及びＲＤＴ変換回路１４０の構成及び動作は、実施の形態１に係るそれらと同様である。
【０１９９】
ＡＤＲシフト＆オフセット設定回路１２５には、バスマスタから出力されるアドレス信号と、２ビットのオフセット信号が入力される。ＡＤＲシフト＆オフセット設定回路１２５は、入力されたアドレス信号のうち、所定の複数ビットのビットをシフトし、他の複数ビットをオフセット信号が示すオフセット値に変更してから、そのアドレス信号をセレクタ１２２に出力する。よって、本実施の形態６では、セレクタ１２２は、バスマスタから出力されるアドレス信号、及び、ＡＤＲシフト＆オフセット設定回路１２５から出力されるアドレス信号のうち、いずれか１つを選択し、内蔵メモリ１４に出力する。
【０２００】
続いて、図３３を参照して、本実施の形態６に係るＡＤＲ変換回路１２０が有するＡＤＲシフト＆オフセット設定回路１２５の構成について説明する。ここでは、アドレス信号がＮビットであり、オフセット信号がＭビットであり、Ｍ＝２ビットである例について説明する。
【０２０１】
図３３に示すように、本実施の形態６に係るＡＤＲシフト＆オフセット設定回路１２５は、図２９に示した実施の形態５に係るＡＤＲローテーション回路１２３と比較して、下位２ビット（Ａ１、Ａ０）を上位２ビットに移動させるのではなく、その２ビットは使用せず、代わりにオフセット信号が示す２ビットを上位２ビットに使用する点が異なる。
【０２０２】
すなわち、ＡＤＲシフト＆オフセット設定回路１２５は、オフセット設定レジスタ１２５１を有している。オフセット設定レジスタ１２５１には、２ビットのオフセット信号がオフセット値として取り込まれる。オフセット設定レジスタ１２５１に格納される２ビットのオフセット値の各々は、Ｎビットのアドレス信号の上位２ビットとして、ＡＤＲシフト＆オフセット設定回路１２５から出力される。
【０２０３】
よって、ＡＤＲシフト＆オフセット設定回路１２５に入力されたＮビットのアドレス信号が示すアドレスのうち、上位（Ｎ−Ｍ）ビットの各々Ａ２、・・・、Ａ（Ｎ−１）を、ＡＤＲシフト＆オフセット設定回路１２５から出力されるＮビットのアドレス信号のうち、下位（Ｎ−Ｍ）ビットの各々Ａ’０、Ａ’１、・・・、Ａ’（Ｎ−３）とする。また、ＡＤＲシフト＆オフセット設定回路１２５に入力されたオフセット信号が示すオフセット値の各ビットＢ（Ｎ−２）、Ｂ（Ｎ−１）を、ＡＤＲシフト＆オフセット設定回路１２５から出力するＮビットのアドレス信号のうち、残りの上位Ｍビットの各々Ａ’（Ｎ−２）、Ａ’（Ｎ−１）とする。
【０２０４】
なお、このＡＤＲシフト＆オフセット設定回路１２５でも、Ａ２〜Ａ（Ｎ−１）までの（Ｎ−Ｍ）ビットのアドレス信号線の各ビットの信号を、（Ｎ−Ｍ）個のバッファ１２５０の各々で受けた後に、その接続先のビット位置をずらすようにしている。
【０２０５】
ここで、Ｎ＝４の場合、ＡＤＲシフト＆オフセット設定回路１２５は、図３４に示す通りの構成になる。すなわち、ＡＤＲシフト＆オフセット設定回路１２５に入力されるアドレス信号の上位２ビットＡ２、Ａ３の各々は、ＡＤＲシフト＆オフセット設定回路１２５から出力されるアドレス信号の下位２ビットＡ’０、Ａ’１となる。また、ＡＤＲシフト＆オフセット設定回路１２５に入力されるオフセット信号の２ビットＢ２、Ｂ３の各々は、ＡＤＲシフト＆オフセット設定回路１２５から出力されるアドレス信号の上位２ビットＡ’２、Ａ’３となる。
【０２０６】
続いて、図３５を参照して、実施の形態６に係る内蔵メモリ１４のメモリマップについて説明する。ここでは、内蔵メモリ１４のデータ幅は８ビットであり、内蔵メモリ１４のアドレス幅は（Ｎ＋１）ビットであり、内蔵メモリ１４のデータ容量が（８×２（Ｎ＋１））ビットであり、Ｎ＝４である例について説明する。
【０２０７】
内蔵メモリ１４は、図３５における左半分を本来のデータを格納する領域として使用し、右半分のうちの一部を本来のデータとペアになるＥＣＣを格納する領域として使用する。つまり、内蔵メモリ１４における領域は、そのアドレス空間において、アドレスの最上位ビット（図３５ではＡ４）の値が、“０”となる場合はデータが格納される領域として、“１”となる場合はＥＣＣが格納される領域として区別される。
【０２０８】
本実施の形態６では、データを格納するアドレスの下位Ｎビット（図３５ではＡ３〜Ａ０）の値に対して、そのデータとペアになるＥＣＣを格納するアドレスの下位Ｎビットの値は、図３４に示したＡＤＲシフト＆オフセット設定回路１２５の動作により各ビット値が変換されたもの（図３５においてＡ３〜Ａ０の値を「ＡＤＲシフト＆オフセット設定」と示している部分、Ａ４＝１として右半分のうちの一部に示している領域のうち、Ａ３＝１及びＡ２＝１として示している領域）になっている。すなわち、オフセット信号が示す２ビットのオフセット値の各ビットＢ２、Ｂ３が両方とも“１”に設定されている例について示している。
【０２０９】
すなわち、図３５に示すように、アドレスＡＤＲ−００（“０００００”）〜ＡＤＲ−０３（“０００１１”）のデータ（“ＤＡＴＡ０”〜“ＤＡＴＡ３”）と、アドレスＡＤＲ−１Ｃ（“１１１００”）のＥＣＣ（“ＥＣＣ０（０、１、２、３）”）とがペアになる。アドレスＡＤＲ−０４（“００１００”）〜ＡＤＲ−０７（“００１１１”）のデータ（“ＤＡＴＡ４”〜“ＤＡＴＡ７”）と、アドレスＡＤＲ−１Ｄ（“１１１０１”）のＥＣＣ（“ＥＣＣ１（４、５、６、７）”）がペアになる。アドレスＡＤＲ−０８（“０１０００”）〜ＡＤＲ−０Ｂ（“０１０１１”）のデータ（“ＤＡＴＡ８”〜“ＤＡＴＡＢ”）と、アドレスＡＤＲ−１Ｅ（“１１１１０”）のＥＣＣ（“ＥＣＣ２（８、９、Ａ、Ｂ）”）がペアになる。アドレスＡＤＲ−０Ｃ（“０１１００”）〜ＡＤＲ−０Ｆ（“０１１１１”）のデータ（“ＤＡＴＡＣ”〜“ＤＡＴＡＦ”）と、アドレスＡＤＲ−１Ｆ（“１１１１１”）のＥＣＣ（“ＥＣＣ３（Ｃ、Ｄ、Ｅ、Ｆ）”）がペアになる。すなわち、オフセット値の２ビットの各々が両方とも“１”に設定されているため、ＡＤＲ−１０（“１００００”）〜ＡＤＲ−１Ｂ（“１１０１１”）の１２アドレスは使用されない。
【０２１０】
ここで、実施の形態１〜実施の形態５では、８ビットのデータから５ビットのＥＣＣを生成し、その生成したＥＣＣの上位３ビットにダミービット（値は０）を付加して８ビットのデータとした後で内蔵メモリ１４に格納していた。しかし、本実施の形態６では、３２ビット（４アドレス）のデータから７ビットのＥＣＣを生成し、その生成したＥＣＣの上位１ビットにダミービット（値は０）を付加して８ビットとした後で内蔵メモリ１４に格納する。
【０２１１】
よって、本実施の形態６では、バスマスタは、３２ビットのデータを内蔵メモリ１４に書き込む場合、その３２ビットのデータを８ビットずつ４回に分けて連続したアドレスを指定して書き込む。例えば、３２ビットのデータ（“ＤＡＴＡ０”〜“ＤＡＴＡ３”）を内蔵メモリ１４に書き込む場合、１回目では、バスマスタは、アドレスＡＤＲ−００（“０００００”）を示すアドレス信号と、ライトデータ（“ＤＡＴＡ０”）をＩ／Ｆ変換回路１３に出力する。２回目では、バスマスタは、アドレスＡＤＲ−０１（“００００１”）を示すアドレス信号と、ライトデータ（“ＤＡＴＡ１”）をＩ／Ｆ変換回路１３に出力する。３回目では、バスマスタは、アドレスＡＤＲ−０２（“０００１０”）を示すアドレス信号と、ライトデータ（“ＤＡＴＡ２”）をＩ／Ｆ変換回路１３に出力する。４回目では、バスマスタは、アドレスＡＤＲ−０３（“０００１１”）を示すアドレス信号と、ライトデータ（“ＤＡＴＡ３”）をＩ／Ｆ変換回路１３に出力する。
【０２１２】
ＥＣＣ生成回路１３１は、４回の書き込みで入力された４つのライトデータを結合することで、３２ビットのデータを生成し、生成した３２ビットのデータに基づいて、ＥＣＣを生成する。ＥＣＣ生成回路１３１は、生成したＥＣＣを、最後（４回目）の書き込み時に出力することで内蔵メモリ１４に書き込む。よって、１回目〜３回目で不定の値が、ＡＤＲ−１Ｃ（“１１１００”）に書き込まれたとしても、４回目の書き込み時に３２ビットのデータから生成されたＥＣＣで上書きされるため問題はない。
【０２１３】
また、本実施の形態６では、バスマスタは、３２ビットのデータを内蔵メモリ１４から読み出す場合、その３２ビットのデータを８ビットずつ４回に分けて連続したアドレスを指定して読み出す。例えば、３２ビットのデータ（“ＤＡＴＡ０”〜“ＤＡＴＡ３”）を内蔵メモリ１４から読み出す場合、１回目では、バスマスタは、アドレスＡＤＲ−００（“０００００”）を示すアドレス信号をＩ／Ｆ変換回路１３に出力する。２回目では、バスマスタは、アドレスＡＤＲ−０１（“００００１”）を示すアドレス信号をＩ／Ｆ変換回路１３に出力する。３回目では、バスマスタは、アドレスＡＤＲ−０２（“０００１０”）を示すアドレス信号をＩ／Ｆ変換回路１３に出力する。４回目では、バスマスタは、アドレスＡＤＲ−０３（“０００１１”）をＩ／Ｆ変換回路１３に出力する。
【０２１４】
ＥＣＣチェック回路１４２及びエラー訂正回路１４３は、４回の読み出しで入力された４つのリードデータを結合することで、３２ビットのデータを生成する。ＥＣＣチェック回路１４２は、生成した３２ビットのデータに基づいてＥＣＣを生成し、生成したＥＣＣと、４回目で読み出したＥＣＣとに基づいて、その３２ビットのデータの誤りを検出する。そして、エラー訂正回路１４３は、ＥＣＣチェック回路１４２による判定結果に応じて、３２ビットのデータをそのまま、又は、３２ビットのデータを訂正してリードデータとしてバスマスタに出力する。ただし、本実施の形態６では、エラー訂正回路１４３から出力する３２ビットのリードデータは、８ビットずつ４回にわたってバスマスタに出力される。
【０２１５】
図３６は、図３５に示したＮ＝４の場合について、“ＤＡＴＡ０”〜“ＤＡＴＡ３”と“ＥＣＣ０”、“ＤＡＴＡ４”〜“ＤＡＴＡ７”と“ＥＣＣ１”、“ＤＡＴＡ８”〜“ＤＡＴＡＢ”と“ＥＣＣ２”、“ＤＡＴＡＣ”〜“ＤＡＴＡＦ”と“ＥＣＣ３”という４通りのペアについて、アドレス信号の下位４ビットＡ３〜Ａ０の値を、４行にわたって示した表である。図３６では、データを読み出す際に内蔵メモリ１４に入力されるアドレス信号が示すアドレスを「アドレス（データ）」として示し、ＥＣＣを読み出す際に内蔵メモリ１４に入力されるアドレス信号が示すアドレスを「アドレス（ＥＣＣ）」として示している。
【０２１６】
この表の左から右に向かって、
（１）アドレスの全ビットに故障が発生していない場合
（２）アドレスのＡ３ビットにＳｔｕｃｋ−ａｔ１故障が発生した場合
（３）アドレスのＡ３ビットにＳｔｕｃｋ−ａｔ０故障が発生した場合
（４）アドレスのＡ２ビットにＳｔｕｃｋ−ａｔ１故障が発生した場合
（５）アドレスのＡ２ビットにＳｔｕｃｋ−ａｔ０故障が発生した場合
（６）アドレスのＡ１ビットにＳｔｕｃｋ−ａｔ１故障が発生した場合
（７）アドレスのＡ１ビットにＳｔｕｃｋ−ａｔ０故障が発生した場合
の７通りを示している。
【０２１７】
なお、アドレスのＡ０ビットにＳｔｕｃｋ−ａｔ１故障が発生した場合、及び、アドレスのＡ０ビットにＳｔｕｃｋ−ａｔ０故障が発生した場合の各々は、アドレスのＡ１ビットにＳｔｕｃｋ−ａｔ１故障が発生した場合、及び、アドレスのＡ１ビットにＳｔｕｃｋ−ａｔ０故障が発生した場合の各々と同様となるため、この表から省略している。また、Ａ３〜Ａ０の値として、各ビット位置の値（０または１）を４つ並べて示しているが、故障により値が変わったビット位置の値には下線を付している。
【０２１８】
図３６に示した表の２行目（番号は４〜７）は、データ（“ＤＡＴＡ４”〜“ＤＡＴＡ７”）と、そのデータとペアになるＥＣＣ（“ＥＣＣ１”）の各々が格納されるアドレスを示した行になる。アドレスの全ビットに故障が発生していない場合のアドレスは、一番左に示している通り、それぞれ、ＡＤＲ−０４〜ＡＤＲ−０７の下位４ビット（“０１００”〜“０１１１”）とＡＤＲ−Ａの下位４ビット（“１１０１”）となる。図３６の表において、このアドレス（データ）の４アドレスと、アドレス（ＥＣＣ）の１アドレスとの２つのペアを実線で囲んで示している。
【０２１９】
ここで、Ａ３ビットにＳｔｕｃｋ−ａｔ１故障が発生した場合のアドレスは、アドレスＡＤＲ−０４〜ＡＤＲ−０７（その下位４ビットは“０１００”〜“０１１１”）が故障による影響を受けて別のＡＤＲ−０Ｃ〜ＡＤＲ−０Ｆ（その下位４ビットは“１１００”〜“１１１１”）となり、アドレスＡＤＲ−１Ｄ（その下位４ビットは“１１０１”）は故障による影響を受けない。このＡ３〜Ａ０の値の２つのペアの故障による影響を受けた後の値を、表において破線で囲んで示すとともに、このＡ３〜Ａ０の値の２つのペアの故障による影響を受けた後の値の各々で実際にアクセスされるアドレス（データ）及びアドレス（ＥＣＣ）を、表において実線で囲むとともに太実線で接続して示している。これによって示すように、４行目のデータ（“ＤＡＴＡＣ”〜“ＤＡＴＡＦ”）と、２行目のＥＣＣ（“ＥＣＣ２”）がアクセスされる。すなわち、データとＥＣＣのペアが崩れていることが分かる。
【０２２０】
同じ２行目の右の方には、他の例として、Ａ３ビットにＳｔｕｃｋ−ａｔ０故障が発生した場合についても、このＡ３〜Ａ０の値の２つのペアについて、上記と同様の形で示している。この場合は、アドレスＡＤＲ−１Ｄ（その下位４ビットは“１１０１”）が故障による影響を受けて別のアドレスＡＤＲ−１５（その下位４ビットは“０１０１”）となり、そのアドレスはＥＣＣ格納のために使用されないアドレスである。そのため、データとＥＣＣのペアが崩れていることが分かる。
【０２２１】
また、同じ２行目の一番右には、さらに、他の例として、Ａ１ビットにＳｔｕｃｋ−ａｔ０故障が発生した場合についても、このＡ３〜Ａ０の値の２つのペアについて、上記と同様の形で示している。この場合は、アドレスＡＤＲ−０４〜ＡＤＲ−０７（その下位４ビットは“０１００”〜“０１１１”）が、２つのアドレスＡＤＲ−０４、ＡＤＲ−０５（その下位４ビットは“０１００”、“０１０１”）に縮退される。よって、アドレスＡＤＲ−０６、ＡＤＲ０７に格納されているデータ（“ＤＡＴＡ６”）とデータ（“ＤＡＴＡ７”）が読み出し不能となるため、データとＥＣＣのペアが崩れることが分かる。
【０２２２】
また、さらに、他の例として、図３６に示した表の３行目における、データ（“ＤＡＴＡ８”〜“ＤＡＴＡＢ”）と、そのデータとペアになるＥＣＣ（“ＥＣＣ２”）の各々が格納されるアドレスに関して、同様に、Ａ２ビットにＳｔｕｃｋ−ａｔ１故障が発生した場合、Ａ２ビットにＳｔｕｃｋ−ａｔ０故障が発生した場合、Ａ１ビットにＳｔｕｃｋ−ａｔ１故障が発生した場合についても示している。そして、いずれの場合も、やはりデータとＥＣＣのペアは崩れている。この表から、アドレスのいずれかのビットにＳｔｕｃｋ−ａｔ故障が発生した場合には、確実に故障が検出できることが分かる。なお、オフセット（２ビット）が両方とも“１”に設定されている場合について説明したが、他の値“０”に設定されている場合であっても以上と同様になることは明らかであるため、詳細な説明は省略する。
【０２２３】
さらに、アドレスのいずれかのビットにＳｔｕｃｋ−ａｔ故障が発生した後に、データの書き込みと読み出しが行われる場合、アドレス（データ）とアドレス（ＥＣＣ）のペアが本来のペアとは異なるものとなるが、それとは違うもう１つのアドレス（データ）とアドレス（ＥＣＣ）のペアと一致してしまう（つまり、アドレスが縮退される）ことはないことも分かる。そのため、データとＥＣＣの両方に対する上書きは発生せず、アドレスのいずれかのビットにＳｔｕｃｋ−ａｔ故障が発生した後であっても、確実に故障が検出できることが分かる。
【０２２４】
以上に説明したように、本実施の形態６では、第１のアドレス（Ｎ＋１ビットのアドレスに対応）の少なくとも１つのビット以外のビット（下位Ｎビットに対応）のうち、下位から所定のオフセットビット数のビットを除くビットを、オフセットビット数だけ下位方向にシフトするとともに、上位からオフセットビット数のオフセットビット（Ｍビットに対応）を、設定されたオフセット値に変更したアドレスを前記第２のアドレスとして生成するようにしている。
【０２２５】
これによれば、実施の形態２〜実施の形態５と全く同じ効果が得られることは明らかであるため、詳細な説明は省略する。
【０２２６】
＜実施の形態７＞
続いて、本実施の形態７について、図面を用いて、その構成と動作を説明する。本実施の形態７に係るＣＰＵシステム１の構成と動作については、図１に示した実施の形態１に係るＣＰＵシステム１の構成と動作と基本的に同様であるため、その説明を省略する。また、本実施の形態７に係るＩ／Ｆ変換回路１３の構成と動作については、図３２に示した実施の形態６に係るＩ／Ｆ変換回路１３の構成と動作と基本的に同様であるため、その説明を省略する。ただし、本実施の形態７では、Ｉ／Ｆ変換回路１３において、ＡＤＲ変換回路１２０の一部の構成と動作が、実施の形態６に係るＡＤＲ変換回路１２０とは異なる。なお、本実施の形態７に係るＩ／Ｆ制御回路１１０、ＷＤＴ変換回路１３０及びＲＤＴ変換回路１４０の構成及び動作は、実施の形態６に係るそれらと同様である。
【０２２７】
続いて、図３７を参照して、本実施の形態７に係るＡＤＲ変換回路１２０の構成について説明する。
【０２２８】
図３７に示すように、本実施の形態７に係るＡＤＲ変換回路１２０は、実施の形態６に係るＡＤＲ変換回路１２０と比較して、さらに、ＡＤＲ範囲制限回路１２６を有する。
【０２２９】
ＡＤＲ範囲制限回路１２６は、アドレス（データ）を制限する回路である。バスマスタから入力されたアドレス信号は、ＡＤＲ範囲制限回路１２６に入力される。ＡＤＲ範囲制限回路１２６は、入力されたアドレス信号が示すアドレスが、データを格納可能であるとして予め定められた範囲に含まれない場合、その範囲内に収まるようにアドレスを変更し、変更後のアドレスを示すアドレス信号を、セレクタ１２２及びＡＤＲシフト＆オフセット設定回路１２５に出力する。一方、ＡＤＲ範囲制限回路１２６は、入力されたアドレス信号が示すアドレスが、データを格納可能であるとして予め定められた範囲に含まれる場合、そのアドレス信号を、そのままセレクタ１２２及びＡＤＲシフト＆オフセット設定回路１２５に出力する。
【０２３０】
続いて、図３８を参照して、本実施の形態７に係るＡＤＲシフト＆オフセット設定回路１２５の構成について説明する。ここでは、Ｎ＝４である例について説明する。
【０２３１】
図３８に示すように、本実施の形態７に係るＡＤＲシフト＆オフセット設定回路１２５は、図３４に示した実施の形態６に係るＡＤＲシフト＆オフセット設定回路１２５と比較して、オフセット設定レジスタ１２５１を有さない点が異なる。すなわち、本実施の形態７に係るＡＤＲシフト＆オフセット設定回路１２５では、実施の形態６では任意に設定可能としていたオフセット（２ビット）の各ビット値を、予め定められた値（ここでは“１”である場合を例示）に固定している。
【０２３２】
よって、ＡＤＲシフト＆オフセット設定回路１２５に入力されたＮビットのアドレス信号が示すアドレスのうち、上位（Ｎ−Ｍ）ビットの各々Ａ２、Ａ３を、ＡＤＲシフト＆オフセット設定回路１２５から出力されるＮビットのアドレス信号が示すアドレスのうち、下位（Ｎ−Ｍ）ビットの各々Ａ’０、Ａ’１とする。また、所定のオフセット値の各ビットＢ２、Ｂ３（どちらも値は“１”）を、ＡＤＲシフト＆オフセット設定回路１２５から出力するＮビットのアドレス信号のうち、残りの上位Ｍビットの各々Ａ’（Ｎ−２）＝Ａ’２、Ａ’（Ｎ−１）＝Ａ’３とする。
【０２３３】
続いて、図３９を参照して、本実施の形態７に係る内蔵メモリ１４のメモリマップについて説明する。ここでは、内蔵メモリ１４のデータ幅は８ビットであり、内蔵メモリ１４のアドレス幅はＮビットであり、内蔵メモリ１４のデータ容量が（８×２Ｎ）ビットであり、Ｎ＝４である例について説明する。すなわち、本実施の形態７では、ウエイト＃信号は、アドレスの最上位ビットを示す信号としては利用されない。
【０２３４】
内蔵メモリ１４は、図３９における先頭から１２アドレスをデータが格納される領域として使用し、それに続く４アドレスをＥＣＣが格納される領域として使用する。つまり、内蔵メモリ１４における領域は、データを格納するアドレスのＮビット（図３９ではＡ３〜Ａ０）の値に対して、そのデータとペアになるＥＣＣを格納するアドレスのＮビットの値は、図３８に示したＡＤＲシフト＆オフセット設定回路１２５の動作により変換されたもの（図３９においてＡ３〜Ａ０の値を「ＡＤＲシフト＆オフセット設定」と示している部分、末尾から４アドレスの領域）になっている。
【０２３５】
すなわち、図３９に示すように、アドレスＡＤＲ−０（“００００”）〜ＡＤＲ−３（“００１１”）のデータ（“ＤＡＴＡ０”〜“ＤＡＴＡ３”）と、アドレスＡＤＲ−Ｃ（“１１００”）のＥＣＣ（“ＥＣＣ０（０、１、２、３）”）がペアになる。アドレスＡＤＲ−４（“０１００”）〜ＡＤＲ−７（“０１１１”）のデータ（“ＤＡＴＡ４”〜“ＤＡＴＡ７”）と、アドレスＡＤＲ−Ｄ（“１１０１”）のＥＣＣ（“ＥＣＣ１（４、５、６、７）”）がペアになる。アドレスＡＤＲ−８（“１０００”）〜ＡＤＲ−Ｂ（“１０１１”）のデータ（“ＤＡＴＡ８”〜“ＤＡＴＡＢ”）と、アドレスＡＤＲ−Ｅ（“１１１０”）のＥＣＣ（“ＥＣＣ２（８、９、Ａ、Ｂ）”）がペアになる。最後のアドレスＡＤＲ−Ｆ（“１１１１”）の領域は使用されない。
【０２３６】
よって、ＡＤＲ範囲制限回路１２６は、アドレス信号が示すアドレスが、ＥＣＣが格納されるアドレスＡＤＲ−Ｃ（“１１００”）〜ＡＤＲ−Ｆ（“１１１１”）のいずれかのアドレスを示している場合、そのアドレスをデータが格納されるアドレスＡＤＲ−０（“００００”〜ＡＤＲ−Ｂ（“１０１１”）のうち、いずれかの予め定められたアドレスに変更する。
【０２３７】
以上に説明したように、本実施の形態７では、第１のアドレス（Ｎビットのアドレスに対応）のうち、下位から所定のオフセットビット数のビットを除くビットを、オフセットビット数だけ下位方向にシフトするとともに、上位からオフセットビット数のオフセットビット（Ｍビットに対応）を、設定されたオフセット値に変更したアドレスを第２のアドレスとして生成するようにしている。
【０２３８】
これによれば、実施の形態２〜実施の形態６と全く同じ効果が得られることは明らかであるため、詳細な説明は省略する。また、本実施の形態７によれば、内蔵メモリ１４において使用されないアドレスの領域を減らすことができる。
【０２３９】
また、本実施の形態７では、ＡＤＲ範囲制限回路１２６は、バスマスタから指定された第１のアドレスが、第２のアドレスが取り得る範囲として予め定められた範囲に含まれる場合、バスマスタから指定されたアドレスを、第１のアドレスが取り得るアドレスとして予め定められたアドレスに補正するようにしている。
【０２４０】
これによれば、本実施の形態７に係る構成のように、バスマスタがＥＣＣが格納されるアドレスを指定してデータの書き込みが可能であっても、バスマスタがＥＣＣが格納されるアドレスに対してＥＣＣ以外のデータを書き込むことを抑止することができる。
【０２４１】
＜実施の形態８＞
続いて、本実施の形態８について、図面を用いて、その構成と動作を説明する。本実施の形態８に係るＣＰＵシステム１の構成と動作については、図１に示した実施の形態１に係るＣＰＵシステム１の構成と動作と基本的に同様であるため、その説明を省略する。また、本実施の形態８に係るＩ／Ｆ変換回路１３の構成と動作については、図３２に示した実施の形態６に係るＩ／Ｆ変換回路１３の構成と動作と基本的に同様である。ただし、本実施の形態８では、Ｉ／Ｆ変換回路１３において、ＡＤＲ変換回路１２０が有するＡＤＲシフト＆オフセット設定回路１２５の一部の構成と動作が、実施の形態６に係るＡＤＲシフト＆オフセット設定回路１２５とは異なる。
【０２４２】
本実施の形態８では、ＥＣＣモードを、２つのＥＣＣモードのうちのいずれかに切り替え可能である。第１のＥＣＣモードは、バスマスタが内蔵メモリ１４に対して８ビットのデータの書き込み及び読み出しを行うものであり、その８ビットのデータに対して５ビットのＥＣＣが生成されて内蔵メモリ１４に格納される。第２のＥＣＣモードは、バスマスタが内蔵メモリ１４に対して３２ビットのデータの書き込み及び読み出しを行うものであり、その３２ビットのデータに対して７ビットのＥＣＣが生成されて内蔵メモリ１４に格納される。
【０２４３】
本実施の形態８に係るＡＤＲシフト＆オフセット設定回路１２５は、図２９に示した実施の形態５に係るＡＤＲローテーション回路１２３としての動作と、図３３に示した実施の形態６に係るＡＤＲシフト＆オフセット設定回路１２５としての動作とのいずれかに、その動作を切り替え可能である。
【０２４４】
すなわち、本実施の形態８に係るＡＤＲ変換回路１２０は、設定されたＥＣＣモードに応じて、「ＡＤＲローテーション」と「ＡＤＲシフト＆オフセット設定」のいずれかの動作に切り替え可能である。
【０２４５】
続いて、図４０を参照して、本実施の形態８に係るＡＤＲシフト＆オフセット設定回路１２５の構成について説明する。
【０２４６】
図４０に示すように、本実施の形態８に係るＡＤＲシフト＆オフセット設定回路１２５は、実施の形態６に係るＡＤＲシフト＆オフセット設定回路１２５と比較して、さらに、オフセット信号のビット数分のセレクタ１２５２を有する。アドレス信号がＮビットであり、オフセット信号がＭビットであり、Ｍ＝２である例について説明する。
【０２４７】
ＡＤＲシフト＆オフセット設定回路１２５に入力されるアドレス信号の下位ＭビットＡ０、Ａ１の各々は、２つのセレクタ１２５２の各々に入力される。オフセット設定レジスタ１２５１に格納された２ビットのオフセット値を示すオフセット信号Ｂ（Ｎ−２）、Ｂ（Ｎ−１）の各々は、２つのセレクタ１２５２の各々に入力される。
【０２４８】
セレクタ１２５２の各々は、バスマスタから入力されたアドレス信号の下位ＭビットＡ０、Ａ１の各々、及び、オフセット設定レジスタ１２５１から入力されたオフセット信号Ｂ（Ｎ−２）、Ｂ（Ｎ−１）の各々のいずれかを選択し、選択した信号をＡＤＲシフト＆オフセット設定回路１２５から出力するアドレス信号の上位ＭビットＡ’（Ｎ−２）、Ａ’（Ｎ−１）として出力する。
【０２４９】
セレクタ１２５２の各々には、ＥＣＣモードを指定するＥＣＣモード信号が入力される。セレクタ１２５２の各々は、第１のＥＣＣモードを指定するＥＣＣモード信号（“０”）が入力されている場合、アドレス信号の下位ＭビットＡ０、Ａ１の各々を選択する。一方、セレクタ１２５２の各々は、第２のＥＣＣモードを指定するＥＣＣモード信号（“１”）が入力されている場合、オフセット信号Ｂ（Ｎ−２）、Ｂ（Ｎ−１）の各々を選択する。
【０２５０】
ＡＤＲシフト＆オフセット設定回路１２５に入力されたアドレス信号のうち、上位（Ｎ−Ｍ）ビットＡ２、・・・、Ａ（Ｎ−１）の各々は、ＡＤＲシフト＆オフセット設定回路１２５から出力されるアドレス信号のうち、下位（Ｎ−Ｍ）ビットＡ’０、Ａ’１、・・・、Ａ’（Ｎ−３）の各々となる。すなわち、これについては、図２９に示した実施の形態５に係るＡＤＲローテーション回路１２３と、図３３に示した実施の形態６に係るＡＤＲシフト＆オフセット設定回路１２５と同様である。なお、このＡＤＲシフト＆オフセット設定回路１２５でも、Ａ０〜Ａ（Ｎ−１）までのＮビットのアドレス信号線の各ビットの信号は、Ｎ個のバッファ１２５０の各々で受けた後に使用するようにしている。
【０２５１】
以上に説明したように、本実施の形態８では、ＡＤＲシフト＆オフセット設定回路１２５は、第１のモードが指定されている場合、第１のアドレス（Ｎ＋１ビットのアドレスに対応）の少なくとも１つのビット以外のビットの全てを、所定のオフセットビット数だけ下位方向にシフトしたアドレスを第２のアドレスとして生成するようにしている。また、ＡＤＲシフト＆オフセット設定回路１２５は、第２のモードが指定されている場合、第１のアドレスの少なくとも１つのビット以外のビットのうち、下位からオフセットビット数のビットを除くビットを、オフセットビット数だけ下位方向にシフトするとともに、上位からオフセットビット数のオフセットビット（Ｍビットに対応）を、設定されたオフセット値に変更したアドレスを第２のアドレスとして生成するようにしている。
【０２５２】
これによれば、第１のＥＣＣモード時には、実施の形態５と全く同じ効果が選択的に得られることは明らかであるため、詳細な説明は省略する。また、第２のＥＣＣモード時にも、実施の形態６と全く同じ効果が選択的に得られることは明らかであるため、詳細な説明は省略する。
【０２５３】
＜実施の形態９＞
続いて、本実施の形態９について、図面を用いて、その構成と動作を説明する。本実施の形態９に係るＣＰＵシステム１の構成と動作については、図１に示した実施の形態１に係るＣＰＵシステム１の構成と動作と基本的に同様であるため、その説明を省略する。また、本実施の形態９に係るＩ／Ｆ変換回路１３の構成と動作については、図３２に示した実施の形態６に係るＩ／Ｆ変換回路１３の構成と動作と基本的に同様である。ただし、本実施の形態９では、Ｉ／Ｆ変換回路１３において、ＡＤＲ変換回路１２０の一部の構成と動作が、実施の形態６に係るＡＤＲ変換回路１２０とは異なる。
【０２５４】
続いて、図４１を参照して、本実施の形態９に係るＩ／Ｆ変換回路１３の構成について説明する。本実施の形態９に係るＩ／Ｆ変換回路１３は、実施の形態６に係るＩ／Ｆ変換回路１３と比較して、ＡＤＲ変換回路１２０におけるＡＤＲシフト＆オフセット設定回路１２５に代えて、ＡＤＲ反転シフト＆オフセット設定回路１２７を有する。なお、本実施の形態９に係るＩ／Ｆ制御回路１１０、ＷＤＴ変換回路１３０及びＲＤＴ変換回路１４０の構成及び動作は、実施の形態６に係るそれらと同様である。
【０２５５】
本実施の形態９では、ＥＣＣモードを、２つのＥＣＣモードのうちのいずれかに切り替え可能である。第１のＥＣＣモードは、バスマスタが内蔵メモリ１４に対して８ビットのデータの書き込み及び読み出しを行うものであり、その８ビットのデータに対して５ビットのＥＣＣが生成されて内蔵メモリ１４に格納される。第２のＥＣＣモードは、バスマスタが内蔵メモリ１４に対して３２ビットのデータの書き込み及び読み出しを行うものであり、その３２ビットのデータに対して７ビットのＥＣＣが生成されて内蔵メモリ１４に格納される。
【０２５６】
本実施の形態９に係るＡＤＲ反転シフト＆オフセット設定回路１２７は、図３に示した実施の形態１に係るＡＤＲ反転回路１２１としての動作と、入力されたアドレス信号のうち、下位から所定ビット数のビットを除くビットの値を反転してからその所定ビット数だけ下位にシフトするとともに、上位からその所定ビット数のビットをオフセット信号が示すオフセット値としてから、そのアドレス信号をセレクタ１２２に出力する動作とのいずれかに、その動作を切り替え可能である。よって、本実施の形態９では、セレクタ１２２は、バスマスタから出力されるアドレス信号、及びＡＤＲ反転シフト＆オフセット設定回路１２７から出力されるアドレス信号のうち、いずれか１つを選択し、内蔵メモリ１４に出力する。
【０２５７】
すなわち、本実施の形態９に係るＡＤＲ変換回路１２０は、設定されたＥＣＣモードに応じて、「ＡＤＲ反転」と「ＡＤＲ反転シフト＆オフセット設定」のいずれかの動作に切り替え可能である。
【０２５８】
続いて、図４２を参照して、本実施の形態９に係るＡＤＲ反転シフト＆オフセット設定回路１２７の構成について説明する。
【０２５９】
図４２に示すように、ＡＤＲ反転シフト＆オフセット設定回路１２７は、Ｎ個のビット値反転回路１２７０と、オフセット設定レジスタ１２７１と、Ｎ個のセレクタ１２７２とを有する。アドレス信号がＮビットであり、オフセット信号がＭビットであり、Ｍ＝２である例について説明する。
【０２６０】
Ｎ個のビット値反転回路１２７０の各々は、Ｎビットのアドレス信号の各ビットＡ０、Ａ１、Ａ２、・・・、Ａ（Ｎ−１）に対応する。Ｎ個のビット値反転回路１２７０の各々は、アドレス信号のうち、自身に対応するビットの値を反転し、反転後の値を出力する。ビット値反転回路１２７０は、例えば、ＮＯＴ回路である。
【０２６１】
ここで、アドレス信号のＮビットＡ０、Ａ１、・・・、Ａ（Ｎ−２）、Ａ（Ｎ−１）の反転後の値の各々は、アドレス信号のＮビットＡ’０、Ａ’１、・・・、Ａ’（Ｎ−２）、Ａ’（Ｎ−１）の各々を出力するＮ個のセレクタ１２７２の各々に入力される。また、アドレス信号の上位（Ｎ−Ｍ）ビットＡ２、Ａ３、・・・、Ａ（Ｎ−２）、Ａ（Ｎ−１）の反転後の値の各々は、アドレス信号の下位（Ｎ−Ｍ）ビットＡ’０、Ａ’１、・・・、Ａ’（Ｎ−４）、Ａ’（Ｎ−３）の各々を出力する（Ｎ−Ｍ）個のセレクタ１２７２の各々に入力される。
【０２６２】
オフセット設定レジスタ１２７１には、Ｍビットのオフセット信号がオフセット値として取り込まれる。オフセット設定レジスタ１２７１に格納されるＭビットのオフセット値の各々は、アドレス信号の上位ＭビットＡ’（Ｎ−２）、Ａ’（Ｎ−１）の各々を出力するＭ個のセレクタ１２７２の各々に入力される。
【０２６３】
アドレス信号の下位（Ｎ−Ｍ）ビットＡ’０、Ａ’１、・・・、Ａ’（Ｎ−４）、Ａ’（Ｎ−３）の各々を出力する（Ｎ−Ｍ）個のセレクタ１２７２の各々は、アドレス信号の下位（Ｎ−Ｍ）ビットＡ０、Ａ１、・・・、Ａ（Ｎ−４）、Ａ（Ｎ−３）の反転後の値の各々、及び、アドレス信号の上位（Ｎ−Ｍ）ビットＡ２、Ａ３、・・・、Ａ（Ｎ−２）、Ａ（Ｎ−１）の反転後の値の各々のいずれかを選択して出力する。
【０２６４】
セレクタ１２７２の各々には、ＥＣＣモードを指定するＥＣＣモード信号が入力される。上記（Ｎ−Ｍ）個のセレクタ１２７２の各々は、第１のＥＣＣモードを指定するＥＣＣモード信号（“０”）が入力されている場合、アドレス信号の下位（Ｎ−Ｍ）ビットＡ０、Ａ１、・・・、Ａ（Ｎ−４）、Ａ（Ｎ−３）の反転後の値の各々を選択する。一方、上記（Ｎ−Ｍ）個のセレクタ１２７２の各々は、第２のＥＣＣモードを指定するＥＣＣモード信号（“１”）が入力されている場合、アドレス信号の上位（Ｎ−Ｍ）ビットＡ２、Ａ３、・・・、Ａ（Ｎ−２）、Ａ（Ｎ−１）の反転後の値の各々を選択する。
【０２６５】
アドレス信号の上位ＭビットＡ’（Ｎ−２）、Ａ’（Ｎ−１）の各々を出力するＭ個のセレクタ１２７２の各々は、アドレス信号の上位ＭビットＡ（Ｎ−２）、Ａ（Ｎ−１）の反転後の値の各々、及び、オフセット値Ｂ（Ｎ−２）、Ｂ（Ｎ−１）の各々のいずれかを選択して出力する。
【０２６６】
上記Ｍ個のセレクタ１２７２の各々は、第１のＥＣＣモードを指定するＥＣＣモード信号（“０”）が入力されている場合、アドレス信号の上位ＭビットＡ（Ｎ−２）、Ａ（Ｎ−１）の反転後の値の各々を選択する。一方、上記Ｍ個のセレクタ１２７２の各々は、第２のＥＣＣモードを指定するＥＣＣモード信号（“１”）が入力されている場合、オフセット値Ｂ（Ｎ−２）、Ｂ（Ｎ−１）の各々を選択する。
【０２６７】
以上に説明したように、本実施の形態９では、ＡＤＲ反転シフト＆オフセット設定回路１２７は、第１のモードが指定されている場合、第１のアドレス（Ｎ＋１ビットに対応）の少なくとも１つのビット以外のビットの全ての値を反転したアドレスを第２のアドレスとして生成するようにしている。また、ＡＤＲ反転シフト＆オフセット設定回路１２７は、第２のモードが指定されている場合、第１のアドレスの少なくとも１つのビット以外のビットの全ての値を反転し、下位から所定のオフセットビット数のビットを除くビットを、オフセットビット数だけ下位方向にシフトするとともに、上位からオフセットビット数のオフセットビット（Ｍビットに対応）を、設定されたオフセット値に変更したアドレスを第２のアドレスとして生成するようにしている。
【０２６８】
これによれば、第１のＥＣＣモード時には、実施の形態１と全く同じ効果が選択的に得られることは明らかであるため、詳細な説明は省略する。また、第２のＥＣＣモード時にも、実施の形態６と全く同じ効果が選択的に得られることは明らかであるため、詳細な説明は省略する。
【０２６９】
＜実施の形態１０＞
続いて、本実施の形態１０について、図面を用いて、その構成と動作を説明する。本実施の形態１０に係るＣＰＵシステム１の構成と動作については、図１に示した実施の形態１に係るＣＰＵシステム１の構成と動作と基本的に同様であるため、その説明を省略する。また、本実施の形態１０に係るＩ／Ｆ変換回路１３の構成と動作については、図３２に示した実施の形態６に係るＩ／Ｆ変換回路１３の構成と動作と基本的に同様である。ただし、本実施の形態１０では、Ｉ／Ｆ変換回路１３において、ＡＤＲ変換回路１２０が有するＡＤＲシフト＆オフセット設定回路１２５の一部の構成と動作が、実施の形態６に係るＡＤＲシフト＆オフセット設定回路１２５とは異なる。
【０２７０】
本実施の形態１０では、ＥＣＣモードを、２つのＥＣＣモードのうちのいずれかに切り替え可能である。第１のＥＣＣモードは、バスマスタが内蔵メモリ１４に対して８ビットのデータの書き込み及び読み出しを行うものであり、その８ビットのデータに対して５ビットのＥＣＣが生成されて内蔵メモリ１４に格納される。第２のＥＣＣモードは、バスマスタが内蔵メモリ１４に対して３２ビットのデータの書き込み及び読み出しを行うものであり、その３２ビットのデータに対して７ビットのＥＣＣが生成されて内蔵メモリ１４に格納される。
【０２７１】
本実施の形態１０に係るＡＤＲシフト＆オフセット設定回路１２５は、図３に示した実施の形態１に係るＡＤＲ反転回路１２１としての動作と、図３３に示した実施の形態６に係るＡＤＲシフト＆オフセット設定回路１２５としての動作とのいずれかに、その動作を切り替え可能である。
【０２７２】
すなわち、本実施の形態１０に係るＡＤＲ変換回路１２０は、設定されたＥＣＣモードに応じて、「ＡＤＲ反転」と「ＡＤＲシフト＆オフセット設定」のいずれかの動作に切り替え可能である。
【０２７３】
続いて、図４３を参照して、本実施の形態１０に係るＡＤＲシフト＆オフセット設定回路１２５の構成について説明する。
【０２７４】
図４３に示すように、本実施の形態１０に係るＡＤＲシフト＆オフセット設定回路１２５は、実施の形態６に係るＡＤＲシフト＆オフセット設定回路１２５と比較して、さらに、Ｎ個のＡＤＲ選択回路１２５３を有する。アドレス信号がＮビットであり、オフセット信号がＭビットであり、Ｍ＝２である例について説明する。
【０２７５】
アドレス信号のＮビットＡ０、Ａ１、・・・、Ａ（Ｎ−２）、Ａ（Ｎ−１）の値の各々は、バッファ１２５０を介して、アドレス信号のＮビットＡ’０、Ａ’１、・・・、Ａ’（Ｎ−２）、Ａ’（Ｎ−１）の各々を出力するＮ個のＡＤＲ選択回路１２５３の各々に入力される。また、アドレス信号の上位（Ｎ−Ｍ）ビットＡ２、Ａ３、・・・、Ａ（Ｎ−２）、Ａ（Ｎ−１）の値の各々は、バッファ１２５０を介して、アドレス信号の下位（Ｎ−Ｍ）ビットＡ’０、Ａ’１、・・・、Ａ’（Ｎ−４）、Ａ’（Ｎ−３）の各々を出力する（Ｎ−Ｍ）個のＡＤＲ選択回路１２５３の各々に入力される。
【０２７６】
オフセット設定レジスタ１２５１には、Ｍビットのオフセット信号がオフセット値として取り込まれる。オフセット設定レジスタ１２５１に格納されるＭビットのオフセット値Ｂ（Ｎ−２）、Ｂ（Ｎ−１）は、アドレス信号の上位ＭビットＡ’（Ｎ−２）、Ａ’（Ｎ−１）の各々を出力するＭ個のＡＤＲ選択回路１２５３の各々に入力される。
【０２７７】
アドレス信号の下位（Ｎ−Ｍ）ビットＡ’０、Ａ’１、・・・、Ａ’（Ｎ−４）、Ａ’（Ｎ−３）の各々を出力する（Ｎ−Ｍ）個のＡＤＲ選択回路１２５３の各々は、アドレス信号の下位（Ｎ−Ｍ）ビットＡ０、Ａ１、・・・、Ａ（Ｎ−４）、Ａ（Ｎ−３）の反転後の値の各々、及び、アドレス信号の上位（Ｎ−Ｍ）ビットＡ２、Ａ３、・・・、Ａ（Ｎ−２）、Ａ（Ｎ−１）の値の各々のいずれかを選択して出力する。
【０２７８】
ＡＤＲ選択回路１２５３の各々には、ＥＣＣモードを指定するＥＣＣモード信号が入力される。上記（Ｎ−Ｍ）個のＡＤＲ選択回路１２５３の各々は、第１のＥＣＣモードを指定するＥＣＣモード信号（“０”）が入力されている場合、アドレス信号の下位（Ｎ−Ｍ）ビットＡ０、Ａ１、・・・、Ａ（Ｎ−４）、Ａ（Ｎ−３）の値の各々を選択し、選択した値を反転して出力する。ここで選択される値は、「第１の値」として後述する。一方、上記（Ｎ−Ｍ）個のＡＤＲ選択回路１２５３の各々は、第２のＥＣＣモードを指定するＥＣＣモード信号（“１”）が入力されている場合、アドレス信号の上位（Ｎ−Ｍ）ビットＡ２、Ａ３、・・・、Ａ（Ｎ−２）、Ａ（Ｎ−１）の値の各々を選択して出力する。ここで選択される値は、「第２の値」として後述する。
【０２７９】
アドレス信号の上位ＭビットＡ’（Ｎ−２）、Ａ’（Ｎ−１）の各々を出力するＭ個のＡＤＲ選択回路１２５３の各々は、アドレス信号の上位ＭビットＡ（Ｎ−２）、Ａ（Ｎ−１）の反転後の値の各々、及び、オフセット値Ｂ（Ｎ−２）、Ｂ（Ｎ−１）の各々のいずれかを選択して出力する。
【０２８０】
上記Ｍ個のＡＤＲ選択回路１２５３の各々は、第１のＥＣＣモードを指定するＥＣＣモード信号（“０”）が入力されている場合、アドレス信号の上位ＭビットＡ（Ｎ−２）、Ａ（Ｎ−１）の値の各々を選択し、選択した値を反転して出力する。ここで選択される値は、「第１の値」として後述する。一方、上記Ｍ個のＡＤＲ選択回路１２５３の各々は、第２のＥＣＣモードを指定するＥＣＣモード信号（“１”）が入力されている場合、オフセット値Ｂ（Ｎ−２）、Ｂ（Ｎ−１）の各々を選択して出力する。ここで選択される値は、「第２の値」として後述する。
【０２８１】
続いて、図４４を参照して、本実施の形態１０に係るＡＤＲ選択回路１２５３の構成について説明する。
【０２８２】
図４４に示すように、ＡＤＲ選択回路１２５３は、ＮＯＲ回路１２５３１と、ＡＮＤ回路１２５３２と、ＯＲ回路１２５３３とを有する。
【０２８３】
ＮＯＲ回路１２５３１は、第１の値とＥＣＣモード信号の値とのＮＯＲ（否定的論理和）演算結果となる信号をＯＲ回路１２５３３に出力する。ＡＮＤ回路１２５３２は、第２の値とＥＣＣモード信号の値とのＡＮＤ（論理積）演算結果となる信号をＯＲ回路１２５３３に出力する。ＯＲ回路１２５３３は、ＮＯＲ回路１２５３１から入力された信号と、ＡＮＤ回路１２５３２から入力された信号とのＯＲ（論理和）演算結果となる信号を出力する。
【０２８４】
以上に説明したように、本実施の形態１０では、ＡＤＲシフト＆オフセット設定回路１２５は、第１のモードが指定されている場合、第１のアドレス（Ｎ＋１ビットに対応）の少なくとも１つのビット以外のビットの全ての値を反転したアドレスを第２のアドレスとして生成するようにしている。また、ＡＤＲシフト＆オフセット設定回路１２５は、第２のモードが指定されている場合、第１のアドレスの少なくとも１つのビット以外のビットのうち、下位から所定のオフセットビット数のビットを除くビットを、オフセットビット数だけ下位方向にシフトするとともに、上位からオフセットビット数のオフセットビット（Ｍビットに対応）を、設定されたオフセット値に変更したアドレスを第２のアドレスとして生成するようにしている。
【０２８５】
これによれば、第１のＥＣＣモード時には、実施の形態１と全く同じ効果が選択的に得られることは明らかであるため、詳細な説明は省略する。また、第２のＥＣＣモード時にも、実施の形態６と全く同じ効果が選択的に得られることは明らかであるため、詳細な説明は省略する。
【０２８６】
＜実施の形態１１＞
続いて、本実施の形態１１について、図面を用いて、その構成と動作を説明する。図４５を参照して、本実施の形態１１に係るＣＰＵシステム１の構成について説明する。図４５に示すように、本実施の形態１１に係るＣＰＵシステム１は、図１に示した実施の形態１に係るＣＰＵシステム１と比較して、コントロール入力Ｉ／Ｆ１１、コマンド出力Ｉ／Ｆ１２、及びＩ／Ｆ変換回路１３を有さず、ハードウェアアクセラレータ２０、センサＩ／Ｆ２１、アクチュエータＩ／Ｆ２２、変換回路２３、ＤＤＲ Ｉ／Ｆ２４及びＤＤＲメモリ２５を有する。
【０２８７】
本実施の形態１１では、自動車は、自動車の周辺を観測し、観測結果を示すセンサデータを、入力データとしてＣＰＵシステム１に送信するセンサユニットが、入力ユニットとして搭載されている。センサユニットは、例えば、レーダー又はカメラ等である。
【０２８８】
また、自動車は、制御ユニットとして、ＣＰＵシステム１によって制御されるアクチュエータユニットが搭載されている。制御ユニットは、例えば、ステアリング又はブレーキ等である。
【０２８９】
本実施の形態１１に係るＣＰＵシステム１においては、ＣＰＵ１０は、マルチコア構成のＣＰＵである。ＣＰＵ１０は、センサユニットからのセンサデータに基づいて、制御データを生成する。例えば、ＣＰＵ１０は、ステアリングに対する制御データであれば、制御内容として、ステアリングの切れ角の変更を指示する制御データを生成する。また、例えば、ＣＰＵ１０は、ブレーキに対する制御データであれば、制御内容として、ブレーキ油圧の調整を指示する制御データを生成する。
【０２９０】
ハードウェアアクセラレータ２０は、マルチコア構成のハードウェアである。ＣＰＵ１０の処理を補助的に実行する。ハードウェアアクセラレータ２０は、例えば、ＧＰＵ（Graphics Processing Unit）又はＤＳＰ（Digital Signal Processor）等である。
【０２９１】
センサＩ／Ｆ２１は、センサユニットとシステムバスとを接続するインタフェース回路である。すなわち、センサＩ／Ｆ２１は、センサユニットからセンサデータが入力される。アクチュエータＩ／Ｆ２２は、アクチュエータユニットとシステムバスとを接続するインタフェース回路である。すなわち、アクチュエータＩ／Ｆ２２は、アクチュエータユニットを制御するためのコマンドを、アクチュエータユニットに出力する。
【０２９２】
変換回路２３は、ＤＤＲ Ｉ／Ｆ２４とシステムバスとを接続するインタフェース回路である。後述するように、変換回路２３は、実施の形態１〜１０に係るＩ／Ｆ変換回路１３と同様に、バスマスタ（ＣＰＵ１０、ＤＭＡＣ１５及びハードウェアアクセラレータ２０）の各々がシステムバス経由でＤＤＲ Ｉ／Ｆ２４を介してＤＤＲメモリ２５にアクセス（データの書き込み又はデータの読み出し）する際に、データ信号系及びアドレス信号系の故障を検出するための処理を実行する。
【０２９３】
より具体的には、変換回路２３は、ＤＤＲメモリ２５に対してデータを書き込む際に、そのデータから生成したＥＣＣもＤＤＲメモリ２５に書き込む。また、変換回路２３は、ＤＤＲメモリ２５からデータを読み出す際に、読み出したデータからＥＣＣを生成し、生成したＥＣＣと、そのデータと共にＤＤＲメモリ２５に書き込んだＥＣＣとを比較することで故障を検出する。本実施の形態１１でも、データを格納するアドレスからＥＣＣを格納するアドレスを生成することにより、データ信号系の故障のみならず、アドレス信号系の故障も検出可能とする。
【０２９４】
ＤＤＲ Ｉ／Ｆ２４は、バスマスタから変換回路２３を介して入力されたパケットに応じて、ＤＤＲメモリ２５へのデータの書き込み、又は、ＤＤＲメモリ２５からのデータの読み出しを実行する。すなわち、本実施の形態１１では、バスマスタは、パケットの形式で、ライトアドレスを示すデータ及びライトデータを示すデータを変換回路２３に出力することで、データの書き込みを実行する。また、バスマスタは、パケットの形式で、リードアドレスを示すデータを変換回路２３に出力することで、データの読み出しを実行する。
【０２９５】
ＤＤＲメモリ２５は、各種データが格納される記憶回路である。すなわち、ＤＤＲメモリ２５には、例えば、上述のセンサデータ、制御データ（コマンド）及びＥＣＣ等が格納される。
【０２９６】
続いて、図４６を参照して、本実施の形態１１に係る変換回路２３の構成について説明する。図４６に示すように、変換回路２３は、ＷＡＤＲ変換回路２１０と、ＲＡＤＲ変換回路２２０と、ＷＤＴ変換回路２３０と、ＲＤＴ変換回路２４０とを有する。ここで、「ＷＡＤＲ」は書き込みアドレス（ライトアドレス）を示し、「ＲＡＤＲ」は読み出しアドレス（リードアドレス）を示す。「ＷＤＴ」及び「ＲＤＴ」については、実施の形態１の説明で述べた通りである。
【０２９７】
バスマスタは、ライトアドレスを示すパケット、リードアドレスを示すパケット及びライトデータを示すパケットを、システムバスを介して変換回路２３に出力する。変換回路２３は、リードデータを示すパケット及びエラー通知信号を、システムバスを介してバスマスタに出力する。変換回路２３は、クロック生成回路（図示せず）から入力されるクロック信号に基づいて動作する。
【０２９８】
バスマスタは、ＤＤＲメモリ２５に対してデータを書き込む場合、データを書き込むアドレスとなるライトアドレスを示すパケットと、書き込むデータとなるライトデータを示すパケットとを、変換回路２３に出力する。これに応じて、変換回路２３は、それらのパケットとともに、そのライトデータに対応するＥＣＣの書き込むアドレスとなるＥＣＣアドレスを示すパケットと、そのＤＤＲメモリ２５に書き込むＥＣＣを示すパケットとを、ＤＤＲ Ｉ／Ｆ２４に出力する。
【０２９９】
ＤＤＲ Ｉ／Ｆ２４は、ＤＤＲメモリ２５のうち、変換回路２３からのパケットが示すライトアドレスに、変換回路２３からのパケットが示すライトデータを書き込む。また、ＤＤＲ Ｉ／Ｆ２４は、ＤＤＲメモリ２５のうち、変換回路２３からのパケットが示すＥＣＣアドレスに、変換回路２３からのパケットが示すＥＣＣを書き込む。
【０３００】
また、バスマスタは、ＤＤＲメモリ２５からデータを読み出す場合、データを読み出すアドレスとなるリードアドレスを示すパケットを変換回路２３に出力する。これに応じて、変換回路２３は、そのパケットとともに、その読み出すデータであるリードデータに対応するＥＣＣを読み出すアドレスとなるＥＣＣアドレスを示すパケットをＤＤＲ Ｉ／Ｆ２４に出力する。
【０３０１】
ＤＤＲ Ｉ／Ｆ２４は、ＤＤＲメモリ２５のうち、変換回路２３からのパケットが示すリードアドレスから、リードデータを読み出し、読み出したリードデータを示すパケットを変換回路２３に出力する。また、ＤＤＲ Ｉ／Ｆ２４は、ＤＤＲメモリ２５のうち、変換回路２３からのパケットが示すＥＣＣアドレスから、ＥＣＣを読み出し、読み出したＥＣＣを示すパケットを変換回路２３に出力する。
【０３０２】
そして、変換回路２３は、ＤＤＲ Ｉ／Ｆ２４からのパケットが示すリードデータと、ＤＤＲ Ｉ／Ｆ２４からのパケットが示すＥＣＣによるチェックによってデータの誤りが検出された場合、エラーを通知するエラー通知信号をバスマスタに出力する。
【０３０３】
図４６に示すように、ＷＡＤＲ変換回路２１０は、アドレスバッファ２１１と、ＥＣＣ用ＡＤＲ生成回路２１２と、切替制御回路２１３と、セレクタ２１４とを有する。
【０３０４】
アドレスバッファ２１１は、バスマスタからのライトアドレスを示すパケットを、セレクタ２１４に出力するとともに、その後も一時的に保持するメモリである。
【０３０５】
ＥＣＣ用ＡＤＲ生成回路２１２は、アドレスバッファ２１１に格納されたバケットが示すライトアドレスに基づいて、ＥＣＣアドレスを示すパケットを生成する。このライトアドレスからＥＣＣアドレスを生成する動作については、実施の形態１に係るＡＤＲ反転回路１２１と同様であるため、詳細な説明を省略する。ＥＣＣ用ＡＤＲ生成回路２１２は、生成したパケットをセレクタ２１４に出力する。ただし、本実施の形態１１では、実施の形態１ではウエイト＃信号によって切り替えていたアドレス信号の最上位ビットの値も、ＥＣＣ用ＡＤＲ生成回路２１２が切り替える。
【０３０６】
切替制御回路２１３は、アドレスバッファ２１１からライトアドレスを示すパケットがセレクタ２１４に出力されている間、そのパケットの選択をセレクタ２１４に指示する。より具体的には、切替制御回路２１３は、データ／ＥＣＣ信号（“０”）をセレクタ２１４に出力する。切替制御回路２１３は、アドレスバッファ２１１からライトアドレスを示すパケットのセレクタ２１４への出力の完了後、ＥＣＣ用ＡＤＲ生成回路２１２からＥＣＣアドレスを示すパケットがセレクタ２１４に出力されている間、そのパケットの選択をセレクタ２１４に指示する。より具体的には、切替制御回路２１３は、データ／ＥＣＣ信号（“１”）をセレクタ２１４に出力する。
【０３０７】
セレクタ２１４は、切替制御回路２１３からデータ／ＥＣＣ信号（“０”）が入力されている場合、アドレスバッファ２１１から入力されるパケットを選択し、ＤＤＲ Ｉ／Ｆ２４に出力する。一方、セレクタ２１４は、切替制御回路２１３からデータ／ＥＣＣ信号（“１”）が入力されている場合、ＥＣＣ用ＡＤＲ生成回路２１２から入力されるパケットを選択し、ＤＤＲ Ｉ／Ｆ２４に出力する。
【０３０８】
ＲＡＤＲ変換回路２２０の構成及び動作については、ＷＡＤＲ変換回路２１０の構成及び動作と同様であるため、説明を省略する。
【０３０９】
図４６に示すように、ＷＤＴ変換回路２３０は、データバッファ２３１と、ＥＣＣ生成回路２３２と、切替制御回路２３３と、セレクタ２３４とを有する。
【０３１０】
データバッファ２３１は、バスマスタからのライトデータを示すパケットを、セレクタ２３４に出力するとともに、その後も一時的に保持するメモリである。
【０３１１】
ＥＣＣ生成回路２３２は、データバッファ２３１に格納されたバケットが示すライトデータに基づいて、ＥＣＣを示すパケットを生成する。このライトデータからＥＣＣを生成する動作については、実施の形態１に係るＥＣＣ生成回路１３１と同様であるため、詳細な説明を省略する。ＥＣＣ生成回路２３２は、生成したパケットをセレクタ２３４に出力する。
【０３１２】
切替制御回路２３３は、データバッファ２３１からライトデータを示すパケットがセレクタ２３４に出力されている間、そのパケットの選択をセレクタ２３４に指示する。より具体的には、切替制御回路２３３は、データ／ＥＣＣ信号（“０”）をセレクタ２３４に出力する。切替制御回路２３３は、データバッファ２３１からライトデータを示すパケットのセレクタ２３４への出力の完了後、ＥＣＣ生成回路２３２からＥＣＣを示すパケットがセレクタ２３４に出力されている間、そのパケットの選択をセレクタ２３４に指示する。より具体的には、切替制御回路２３３は、データ／ＥＣＣ信号（“１”）をセレクタ２３４に出力する。
【０３１３】
セレクタ２３４は、切替制御回路２３３からデータ／ＥＣＣ信号（“０”）が入力されている場合、データバッファ２３１から入力されるパケットを選択し、ＤＤＲ Ｉ／Ｆ２４に出力する。一方、セレクタ２３４は、切替制御回路２３３からデータ／ＥＣＣ信号（“１”）が入力されている場合、ＥＣＣ生成回路２３２から入力されるパケットを選択し、ＤＤＲ Ｉ／Ｆ２４に出力する。
【０３１４】
ＲＤＴ変換回路２４０は、データバッファ２４１と、イネーブル制御回路２４２と、ＥＣＣチェック回路２４３と、エラー訂正回路２４４とを有する。
【０３１５】
データバッファ２４１は、ＤＤＲ Ｉ／Ｆ２４からのリードデータを示すパケットを、ＥＣＣチェック回路２４３及びエラー訂正回路２４４に出力するとともに、その後も一時的に格納するメモリである。また、データバッファ２４１は、ＤＤＲ Ｉ／Ｆ２４からのＥＣＣを示すパケットを格納する。
【０３１６】
イネーブル制御回路２４２は、データバッファ２４１にＥＣＣを示すパケットが格納された場合、データバッファ２４１に格納されるパケットが示すデータの誤りが発生しているか否かを判定するためのイネーブル信号を出力する。より具体的には、イネーブル制御回路２４２は、アサートされたイネーブル信号（“１”）をＥＣＣチェック回路２４３に出力する。なお、イネーブル制御回路２４２は、それ以外の場合には、デアサートされたイネーブル信号（“０”）をＥＣＣチェック回路２４３に出力している。例えば、イネーブル制御回路２４２は、後述のＥＣＣチェック回路２４３による判定が終了した場合、デアサートされたイネーブル信号（“０”）をＥＣＣチェック回路２４３に出力する。
【０３１７】
ＥＣＣチェック回路２４３は、イネーブル制御回路２４２からのアサートされたイネーブル信号（“１”）に応じて、データバッファ２４１に格納されるパケットが示すデータと、データバッファ２４１に格納されるパケットが示すＥＣＣとに基づいて、データの誤りが発生しているか否かを判定する。
【０３１８】
ＥＣＣチェック回路２４３は、データのいずれか１ビットに誤りが発生していると判定した場合、そのビット位置を示すエラー訂正信号をエラー訂正回路２４４に出力する。ＥＣＣチェック回路２４３は、データに訂正不能な２ビット以上の誤りが発生していると判定した場合、エラーを通知するエラー通知信号をバスマスタに出力する。
【０３１９】
エラー訂正回路２４４は、データに誤りが発生していない場合、データバッファ２４１から入力されるデータを示すパケットを、そのままリードデータとしてバスマスタに出力する。一方、エラー訂正回路２４４は、データに誤りが発生している場合、データバッファ２４１から入力されるパケットが示すデータの誤りを訂正してから、そのパケットをバスマスタに出力する。具体的なデータの誤り訂正の方法及びその構成については、実施の形態１に係るエラー訂正回路１４３と同様であるため、その説明は省略する。
【０３２０】
ここで、ＤＤＲメモリ２５は、列アドレス（Ｃｏｌｕｍｎアドレス）と行アドレス（Ｒｏｗアドレス）を指定することで、データを読み出す又はデータを書き込むアドレスが指定可能とされている。ＤＤＲ Ｉ／Ｆ２４は、パケットが示すアドレスを列アドレスと行アドレスとに分解し、各々のアドレスを示すアドレス信号を２回に分けてＤＤＲメモリ２５に送信することでＤＤＲメモリ２５へのアクセスを実現している。これにより、ＤＤＲ Ｉ／Ｆ２４とＤＤＲメモリ２５間のアドレス信号線の本数を低減している。ただし、例えば、ＤＤＲメモリ２５のデータ信号線の本数が３２本である場合、パケットが示すアドレスの下位２ビットは意味を持たないため、ＤＤＲメモリ２５に対しては出力されない。
【０３２１】
しかしながら、これは、そのアドレス信号線の１本にＳｔｕｃｋ−ａｔ故障が発生すると、アドレスが２ビット分のＳｔｕｃｋ−ａｔ故障の影響を受けることと等しくなる。しかしながら、本実施の形態１１によれば、上述したように、２ビット以上の誤りも検出可能としているため、このような故障も確実に検出することができる。
【０３２２】
ここで、図４７を参照して、本実施の形態１１の他の効果について説明する。より具体的には、図４７に示すように、ＤＤＲ Ｉ／Ｆ２４は、ＤＤＲ制御回路３１０と、キャッシュメモリ３２０とを有する。
【０３２３】
ＤＤＲ制御回路３１０は、変換回路２３からのリードアドレスを示すパケットに応じて、ＤＤＲメモリ２５のうち、そのリードアドレスに格納されたデータを読み出す。ＤＤＲ制御回路３１０は、そのデータがキャッシュメモリ３２０にキャッシュされている場合は、ＤＤＲメモリ２５からの読み出しに代えて、キャッシュメモリ３２０からデータを読み出す。そして、ＤＤＲ制御回路３１０は、読み出したデータをリードデータとして示すパケットを生成し、変換回路２３に出力する。
【０３２４】
キャッシュメモリ３２０は、セットアソシアティブ方式で管理されており、複数のウェイを有する。ｎウェイセットアソシアティブ方式が採用されている場合、キャッシュメモリ３２０は、各々に複数のデータが格納されるｎ個の領域を有している。このｎ個の領域の各々は、異なるｎ種類のウェイアドレスの各々でタグ付けされている。
【０３２５】
図４７では、４ウェイセットアソシアティブ方式が採用されており、４つの領域の各々が、“００”、“０１”、“１０”、“１１”の４種類のウェイアドレスの各々でタグ付けされている例について示している。ここで、ウェイアドレスとして、Ｎビットのリードアドレスのうち、上位２ビットを使用するものとする。
【０３２６】
本実施の形態１１では、ＲＡＤＲ変換回路２２０で、データを読み出すアドレスに対して、リードアドレスの（Ｎ＋１）ビットのうち、下位ＮビットのＥＣＣを読み出すアドレスのビット値を反転するようにしている。そのため、データを読み出すウェイアドレスが“００”の場合は、ＥＣＣを読み出すウェイアドレスは“１１”となる。つまり、本実施の形態１１によれば、データを格納するウェイのタグと、ＥＣＣを格納するウェイのタグは、下位１ビットの値が相互に異なるものとなる。
【０３２７】
よって、このアドレス信号線のうち、このウェイアドレスの下位１ビットに対応する信号線にＳｔｕｃｋ−ａｔ故障が発生した場合には、下位１ビットが同じ値のタグからデータとＥＣＣとが読み出されてしまうため、データとＥＣＣのペアが崩れることになる。したがって、ＲＤＴ変換回路２４０によって故障が検出される。つまり、本実施の形態１１は、このようなＤＤＲ Ｉ／Ｆ２４に対して、好適に適用することができることが分かる。
【０３２８】
以上の説明では、本実施の形態１１に係るパケットによりデータの書き込み及び読み出しを行う構成において、実施の形態１に係るアドレス変換を行う例について説明したが、これに限られない。本実施の形態１１に係るパケットによりデータの書き込み及び読み出しを行う構成において、他の実施の形態２〜１０のいずれかに係るアドレス変換を行うようにしてもよい。また、上述の所定数ビットとして、アドレス信号のうち、Ｎ未満のビット数のビットの値を反転又は並べ替えする場合には、キャッシュメモリ３２０の各ウェイは、アドレス信号のうち、その所定数ビットの少なくとも１つのビットを含むビットでタグ付けされるようにする。
【０３２９】
以上に説明したように、本実施の形態１１では、アドレスバッファ２１１は、バスマスタから受信した第１のアドレスを示す第１のパケットを格納する。ＷＡＤＲ変換回路２１０及びＲＡＤＲ変換回路２２０は、アドレスバッファ２１１に格納された第１のパケットが示す第１のアドレスに基づいて、第２のアドレスを示す第２のパケットを生成する。ＷＡＤＲ変換回路２１０は、バスマスタから受信した第１のパケットをＤＤＲ Ｉ／Ｆ２４に送信し、生成した第２のパケットをＤＤＲ Ｉ／Ｆ２４に送信することで、第１のアドレスへのデータの書き込みと、第２のアドレスへの誤り検出符号の書き込みとを実行する。ＲＡＤＲ変換回路２２０は、バスマスタから受信した第１のパケットをＤＤＲ Ｉ／Ｆ２４に送信し、生成した第２のパケットをＤＤＲ Ｉ／Ｆ２４に送信することで、第１のアドレスからのデータの読み出しと、第２のアドレスからの誤り検出符号の読み出しとを実行する。
【０３３０】
これによれば、バスマスタからパケットの形式でデータの書き込み及び読み出しが行われる場合であっても、アドレス信号系の故障を検出することができる。なお、データアクセス効率を高めるために、連続する複数個のアドレスを連続的にアクセスするバーストアクセスのモードを設ける場合には、１回のバーストアクセスでアクセスする範囲に対応するアドレスの下位複数ビットについては、ＷＡＤＲ変換回路２１０及びＲＡＤＲ変換回路２２０のＥＣＣ用ＡＤＲ生成回路２１２におけるアドレス変換の対象外として元の値を出力するようにしてもよい。このときでも、ＤＤＲ Ｉ／Ｆ２４とＤＤＲメモリ２５間のアドレス信号線の１本にＳｔｕｃｋ−ａｔ故障が発生した場合は、列アドレスと行アドレスとに分解された後、その下位複数ビットと同じアドレス信号線で送信される上位の対応する複数ビットの方もそのＳｔｕｃｋ−ａｔ故障の影響を受けるため、このような故障も検出することができる。
【０３３１】
また、本実施の形態１１では、ＤＤＲ Ｉ／Ｆ２４は、セットアソシアティブ方式でＤＤＲメモリ２５のデータをキャッシュするキャッシュメモリ３２０を有している。第１のアドレス（Ｎ＋１ビットのアドレスに対応）の少なくとも１つのビットの値以外のビット（下位Ｎビットに対応）のうち、所定数ビットの値を反転したアドレスを第２のアドレスとして生成している。キャッシュメモリ３２０の各ウェイは、上記所定数ビットの少なくとも１つを含むビットでタグ付けされている。
【０３３２】
これによれば、ＤＤＲ Ｉ／Ｆ２４のキャッシュメモリ３２０における機能を流用して、アドレス信号系の故障を検出することができる。
【０３３３】
＜実施の形態１２＞
続いて、本実施の形態１２について、図面を用いて、その構成と動作を説明する。本実施の形態１２に係るＣＰＵシステム１の構成と動作については、図１に示した実施の形態１に係るＣＰＵシステム１の構成と動作と基本的に同様であるため、その説明を省略する。ただし、本実施の形態１２では、ＣＰＵシステム１が有するＩ／Ｆ変換回路１３の一部の構成と動作が、実施の形態１に係るＩ／Ｆ変換回路１３とは異なる。
【０３３４】
続いて、図４８を参照して、本実施の形態１２に係るＩ／Ｆ変換回路１３の構成について説明する。本実施の形態１２に係るＩ／Ｆ変換回路１３は、実施の形態１０に係るＩ／Ｆ変換回路１３と比較して、さらに、ＥＣＣモード制御回路１５０を有する。
【０３３５】
ＥＣＣモード制御回路１５０は、ＥＣＣモード設定レジスタ１５１を有する。ＥＣＣモード設定レジスタ１５１は、ＥＣＣモードに関する各種設定値が格納される。ＥＣＣモード制御回路１５０は、ＥＣＣモード設定レジスタ１５１に格納された設定値に従って、ＥＣＣモードを有効又は無効にする制御、及び、ＥＣＣモードの有効時にＥＣＣモードを切り替える制御を行う。
【０３３６】
ここで、ＥＣＣモード設定レジスタ１５１には、例えば、設定値として、以下の（１）〜（４）が設定される。ここで、（２）〜（４）は、各々を対応付けた組を複数設定することが可能である。
【０３３７】
（１）ＥＣＣモードの有効／無効
（２）ＥＣＣモード
（３）ＥＣＣモードの範囲（例えば、その範囲の開始アドレスと終了アドレスで指定）
（４）データが格納される領域からＥＣＣが格納される領域までのオフセット
【０３３８】
ＥＣＣモード制御回路１５０は、ＥＣＣモードを無効とする設定値が、ＥＣＣモード設定レジスタ１５１に格納されている場合、Ｉ／Ｆ制御回路１１０、ＡＤＲ変換回路１２０、ＷＤＴ変換回路１３０及びＲＤＴ変換回路１４０において、ＥＣＣに関する処理（内蔵メモリ１４へのＥＣＣの書き込み、内蔵メモリ１４からのＥＣＣの読み出し、ＥＣＣによるデータの誤りの判定）を抑止する。
【０３３９】
例えば、ＥＣＣモード制御回路１５０は、デアサートされたＥＣＣイネーブル信号（“０”）をＩ／Ｆ制御回路１１０に出力する。Ｉ／Ｆ制御回路１１０は、ＥＣＣモード制御回路１５０からデアサートされたＥＣＣイネーブル信号（“０”）が入力されている場合、１クロックサイクル目でのアサートされたウエイト＃信号（“０”）の出力を抑止する。
【０３４０】
一方、ＥＣＣモード制御回路１５０は、ＥＣＣモードを有効とする設定値が、ＥＣＣモード設定レジスタ１５１に格納されている場合、Ｉ／Ｆ制御回路１１０、ＡＤＲ変換回路１２０、ＷＤＴ変換回路１３０及びＲＤＴ変換回路１４０において、ＥＣＣに関する処理（内蔵メモリ１４へのＥＣＣの書き込み、内蔵メモリ１４からのＥＣＣの読み出し、ＥＣＣによるデータの誤りの判定）を許容する。
【０３４１】
例えば、ＥＣＣモード制御回路１５０は、アサートされたＥＣＣイネーブル信号（“１”）をＩ／Ｆ制御回路１１０に出力する。Ｉ／Ｆ制御回路１１０は、ＥＣＣモード制御回路１５０からアサートされたＥＣＣイネーブル信号（“１”）が入力されている場合、１クロックサイクル目でのアサートされたウエイト＃信号（“０”）を出力する。
【０３４２】
また、バスマスタからＡＤＲ変換回路１２０に入力されるアドレス信号は、ＥＣＣモード制御回路１５０にも入力される。ＥＣＣモード制御回路１５０は、ＥＣＣモードが有効である場合、そのアドレス信号が示すアドレスが、上記（３）のＥＣＣモードの範囲に含まれるか否かを判定する。アドレス信号が示すアドレスが、ＥＣＣモードの範囲に含まれる場合、ＥＣＣモード制御回路１５０は、ＥＣＣモード設定レジスタ１５１において、そのＥＣＣモードの範囲に対応付けられて設定されているＥＣＣモードを指定するＥＣＣモード信号をＡＤＲ変換回路１２０に出力する。
【０３４３】
また、ＥＣＣモード制御回路１５０は、バスマスタから入力されるアドレス信号のうち、上位Ｌビットの値に対して、ＥＣＣモード設定レジスタ１５１において、そのＥＣＣモードの範囲に対応付けられて設定されている上記の（４）のオフセット値を加算した値に変更し、変更後の値を示す信号を内蔵メモリ１４に出力する。このＬビットの信号は、内蔵メモリ１４に入力される（Ｎ＋Ｌ）ビットのアドレス信号のうちの上位Ｌビットの信号として利用される。
【０３４４】
これによれば、図４９に示すように、内蔵メモリ１４のうち、特定の範囲に格納されたデータについては、第１のＥＣＣモードでそのデータに対応するＥＣＣを格納し、他の特定の範囲に格納されたデータについては、第２のＥＣＣモードでそのデータに対応するＥＣＣを格納することができる。
【０３４５】
また、これによれば、図５０に示すように、アドレスが変換される。すなわち、第１のＥＣＣモードでは、図５０の上図に示すように、（Ｎ＋Ｌ）ビットのアドレスのうち、上位Ｌビットの値に対してオフセットが加えられ、下位Ｎビットの値は反転される。また、第２のＥＣＣモードでは、図５０の下図に示すように、（Ｎ＋Ｌ）ビットのアドレスのうち、上位Ｌビットの値に対してオフセットが加えられる。そして、下位Ｎビットの値において、上位Ｍビットはオフセット設定レジスタ１２５１に設定されたオフセットに変更され、下位（Ｎ−Ｍ）ビットは上位（Ｎ−Ｍ）ビットが下位方向にシフトされた値となる。
【０３４６】
以上の説明では、本実施の形態１２に係るＥＣＣモード制御回路１５０を、実施の形態１０に係るＩ／Ｆ変換回路１３に適用した例について説明したが、これに限られない。本実施の形態１２に係るＥＣＣモード制御回路１５０を、実施の形態８、９のいずれかに係るＩ／Ｆ変換回路１３に適用してもよい。
【０３４７】
＜実施の形態の概略構成＞
続いて、図５１を参照して、上述した実施の形態１〜１２に係るＣＰＵシステム１の概略構成となる半導体装置９の構成について説明する。すなわち、実施の形態１〜１２に係るＣＰＵシステム１における特徴的構成の一部は、図５１に示すように抽出される。
【０３４８】
図５１に示すように、半導体装置９は、アドレス変換回路９１と、書込回路９２と、読出回路９３とを有する。
【０３４９】
アドレス変換回路９１は、メモリ９４にデータを格納するための第１のアドレスに基づいて、データから生成された誤り検出符号を格納するための第２のアドレスを生成する。アドレス変換回路９１は、ＡＤＲ変換回路１２０に対応する。
【０３５０】
書込回路９２は、第１のアドレスに対してデータの書き込みが要求された場合、第１のアドレスにデータを書き込むとともに、第２のアドレスに誤り検出符号を書き込む。書込回路９２は、ＷＤＴ変換回路１３０に対応する。
【０３５１】
読出回路９３は、第１のアドレスに対してデータの読み出しが要求された場合、第１のアドレスからデータを読み出すとともに、第２のアドレスから誤り検出符号を読み出し、データと誤り検出符号とに基づいてエラーを検出する。読出回路９３は、ＲＤＴ変換回路１４０に対応する。
【０３５２】
ここで、アドレス変換回路９１は、第１のアドレスの少なくとも１つのビットの値を変更し、誤り検出符号の格納位置がデータの格納位置に対してオフセットされるようにするとともに、それ以外のビットのうちの所定数ビットの値の反転又は並べ替えをしたアドレスを第２のアドレスとして生成する。
【０３５３】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
【０３５４】
上述した実施の形態１〜１２では、データの誤りを検出するための誤り検出符号として、１ビットの誤り訂正と２ビット以上の誤り検出を行うことができるＥＣＣ（エラー訂正符号）を利用する例について説明したが、これに限られない。誤り検出符号として、ＣＲＣ（Cyclic Redundancy Check）又はパリティ符号等を利用するようにしてもよい。しかしながら、好ましくは、上述したように、誤り検出のみでなく、誤り訂正も行うことができるＥＣＣを利用するとよい。
【０３５５】
また、上述の内蔵メモリ１４やＤＤＲ Ｉ／Ｆ２４のアドレス信号処理回路において、論理アドレスと物理アドレスとの間でアドレスを変換する処理が実行される場合であっても、本実施の形態は適用可能である。
【０３５６】
また、上述した各種信号のビット数及び値も、上述した例に限られない。例えば、イネーブル信号及びエラー通知信号は、アサートされた値を“０”とし、ネゲートされた値を“１”としてもよい。ウエイト＃信号は、ハイアクティブな信号としてもよい。ライト／リード信号は、書き込みを指定する値を“１”とし、読み出しを指定する値を“０”としてもよい。また、ウエイト＃信号は、アドレスの所定の上位数ビットを指定する複数ビットであってもよい。
【０３５７】
また、上述した内蔵メモリ１４のデータ幅、アドレス幅及びデータ容量も、上述した例に限られない。オフセット値のビット数Ｍも、上述した２ビットの例に限られない。オフセット値も、上述した値に限られない。
【符号の説明】
【０３５８】
１  ＣＰＵシステム
１０  ＣＰＵ
１１  コントロール入力Ｉ／Ｆ
１２  コマンド出力Ｉ／Ｆ
１３  Ｉ／Ｆ変換回路
１４  内蔵メモリ
１５  ＤＭＡＣ
１６  その他周辺回路
１７  その他Ｉ／Ｆ
２０  ハードウェアアクセラレータ
２１  センサＩ／Ｆ
２２  アクチュエータＩ／Ｆ
２３  変換回路
２４  ＤＤＲ Ｉ／Ｆ
２５  ＤＤＲメモリ
１１０  Ｉ／Ｆ制御回路
１１１  イネーブル信号保持回路
１１２  ウエイト信号生成回路
１２０  ＡＤＲ変換回路
１２１  ＡＤＲ反転回路
１２２、１３２、２１４、２３４、１２５２、１２７２  セレクタ
１２３  ＡＤＲローテーション回路
１２４  ＡＤＲビット順逆転回路
１２５  ＡＤＲシフト＆オフセット設定回路
１２６  ＡＤＲ範囲制限回路
１２７  ＡＤＲ反転シフト＆オフセット設定回路
１３０、２３０  ＷＤＴ変換回路
１３１、２３２  ＥＣＣ生成回路
１４０、２４０  ＲＤＴ変換回路
１４１  データ保持回路
１４２、２４３  ＥＣＣチェック回路
１４３、２４４  エラー訂正回路
２１０  ＷＡＤＲ変換回路
２１１  アドレスバッファ
２１２  ＥＣＣ用ＡＤＲ生成回路
２１３、２３３  切替制御回路
２３１、２４１  データバッファ
２２０  ＲＡＤＲ変換回路
２４２  イネーブル制御回路
３１０  ＤＤＲ制御回路
３２０  キャッシュメモリ
１２１０、１２７０  ビット値反転回路
１２３０、１２４０、１２５０  バッファ
１２５１、１２７１  オフセット設定レジスタ
１２５３  ＡＤＲ選択回路
１２５３１  ＮＯＲ回路
１２５３２  ＡＮＤ回路
１２５３３  ＯＲ回路
【図１】
0006605359.tif 000002
【図２】
0006605359.tif 000003
【図３】
0006605359.tif 000004
【図４】
0006605359.tif 000005
【図５】
0006605359.tif 000006
【図６】
0006605359.tif 000007
【図７】
0006605359.tif 000008
【図８】
0006605359.tif 000009
【図９】
0006605359.tif 000010
【図１０】
0006605359.tif 000011
【図１１】
0006605359.tif 000012
【図１２】
0006605359.tif 000013
【図１３】
0006605359.tif 000014
【図１４】
0006605359.tif 000015
【図１５】
0006605359.tif 000016
【図１６】
0006605359.tif 000017
【図１７】
0006605359.tif 000018
【図１８】
0006605359.tif 000019
【図１９】
0006605359.tif 000020
【図２０】
0006605359.tif 000021
【図２１】
0006605359.tif 000022
【図２２】
0006605359.tif 000023
【図２３】
0006605359.tif 000024
【図２４】
0006605359.tif 000025
【図２５】
0006605359.tif 000026
【図２６】
0006605359.tif 000027
【図２７】
0006605359.tif 000028
【図２８】
0006605359.tif 000029
【図２９】
0006605359.tif 000030
【図３０】
0006605359.tif 000031
【図３１】
0006605359.tif 000032
【図３２】
0006605359.tif 000033
【図３３】
0006605359.tif 000034
【図３４】
0006605359.tif 000035
【図３５】
0006605359.tif 000036
【図３６】
0006605359.tif 000037
【図３７】
0006605359.tif 000038
【図３８】
0006605359.tif 000039
【図３９】
0006605359.tif 000040
【図４０】
0006605359.tif 000041
【図４１】
0006605359.tif 000042
【図４２】
0006605359.tif 000043
【図４３】
0006605359.tif 000044
【図４４】
0006605359.tif 000045
【図４５】
0006605359.tif 000046
【図４６】
0006605359.tif 000047
【図４７】
0006605359.tif 000048
【図４８】
0006605359.tif 000049
【図４９】
0006605359.tif 000050
【図５０】
0006605359.tif 000051
【図５１】
0006605359.tif 000052