(57)【要約】【課題】リードモディファイライト回路の自己診断の信頼性を向上させることができるデータ処理装置を提供することである。【解決手段】本発明にかかるデータ処理装置は、メモリ４０と、メモリ４０へのアクセスを制御するアクセス制御信号ＣＴＲＬを出力してメモリ４０に対してアクセスを行う演算回路１０と、自己診断時に用いる第１のデータを格納する第１のデータ格納部３１と、第１のデータ格納部３１に格納されている第１のデータの一部を演算回路１０から出力されたモディファイデータで置き換えて第２のデータを生成するリードモディファイライト回路３２と、第２のデータと期待値とを比較することでリードモディファイライト回路３２の故障を診断する判定部と、を備える。【選択図】図２
2013250690.tif 000002
【特許請求の範囲】
【請求項１】
所定のデータを格納するメモリと、
前記メモリへのアクセスを制御するアクセス制御信号を出力して前記メモリに対してアクセスを行う演算回路と、
自己診断時に用いる第１のデータを格納する第１のデータ格納部と、
前記第１のデータ格納部に格納されている第１のデータの一部を前記演算回路から出力されたモディファイデータで置き換えて第２のデータを生成するリードモディファイライト回路と、
前記第２のデータと期待値とを比較することで前記リードモディファイライト回路の故障を診断する判定部と、を備える、
データ処理装置。
【請求項２】
前記第１のデータ格納部は、前記演算回路から出力されたデータを前記自己診断時に用いる第１のデータとして格納する、請求項１に記載のデータ処理装置。
【請求項３】
前記第１のデータ格納部は、前記自己診断時に用いる第１のデータを予め格納している、請求項１に記載のデータ処理装置。
【請求項４】
前記第２のデータを格納する第２のデータ格納部を更に備え、
前記判定部は前記演算回路に設けられていると共に、前記第２のデータ格納部から出力された前記第２のデータと前記期待値とを比較することで前記リードモディファイライト回路の故障を診断する、
請求項１に記載のデータ処理装置。
【請求項５】
前記アクセス制御信号が自己診断命令を示す信号である場合、前記演算回路から前記メモリに対して出力されるアドレスを無効にするイネーブル信号を生成するイネーブル信号生成回路を更に備える、請求項１に記載のデータ処理装置。
【請求項６】
前記第１および第２のデータ格納部の少なくとも一方は、前記メモリの自己診断用データ領域に設けられている、請求項１に記載のデータ処理装置。
【請求項７】
前記アクセス制御信号が自己診断命令を示す信号であり、且つ前記演算回路から出力されたアドレス信号が前記メモリの前記自己診断用データ領域以外の領域である通常データ領域を示す場合、前記演算回路から前記メモリに対して出力されるアドレスを無効にするイネーブル信号を生成するイネーブル信号生成回路を更に備える、請求項６に記載のデータ処理装置。
【請求項８】
前記イネーブル信号生成回路は、前記アクセス制御信号が通常動作を示す信号であり、且つ前記演算回路から出力されたアドレス信号が前記メモリの前記自己診断用データ領域を示す場合、前記演算回路から前記メモリに対して出力されるアドレスを無効にするイネーブル信号を生成する、請求項７に記載のデータ処理装置。
【請求項９】
前記自己診断は所定の間隔毎に実行される、請求項１に記載のデータ処理装置。
【請求項１０】
前記自己診断は前記演算回路が所定のプログラムを実行する毎に実行される、請求項１に記載のデータ処理装置。
【請求項１１】
前記自己診断は通常のリードモディファイライト処理の直後に実行される、請求項１に記載のデータ処理装置。
【請求項１２】
前記メモリは、第１のメモリと第２のメモリとを備え、
前記リードモディファイライト回路は、前記第１のメモリに対応して設けられた第１のリードモディファイライト回路と前記第２のメモリに対応して設けられた第２のリードモディファイライト回路とを備え、
前記データ処理装置は更に、
前記アクセス制御信号がリードモディファイライト処理を示す信号であるか、および前記演算回路から出力されたアドレス信号が前記第１および第２のメモリのいずれを示す信号であるかをモニタするモニタ回路と、
前記モニタ回路のモニタ結果に応じて前記第１および第２のリードモディファイライト回路の自己診断を制御する自己診断制御回路と、を備え、
前記自己診断制御回路は、前記アクセス制御信号がリードモディファイライト処理を示す信号である場合、前記リードモディファイライト処理が実行された方のメモリに対応したリードモディファイライト回路に対して自己診断を実行する、
請求項１に記載のデータ処理装置。
【請求項１３】
前記モニタ回路は、前記演算回路から出力されたアクセス制御信号およびアドレス信号に応じて拡張制御信号を生成し、当該拡張制御信号を用いて前記演算回路からの前記第１および第２のメモリへのアクセスを制御する、請求項１２に記載のデータ処理装置。
【請求項１４】
前記メモリに対してアクセスを行うマスタが複数ある場合、当該複数のマスタからメモリへのアクセスを調停するメモリアービタを更に備える、請求項１に記載のデータ処理装置。
【請求項１５】
請求項１に記載のデータ処理装置と、
前記データ処理装置の診断モードを制御するモード制御部と、を備える、マイクロコントローラ。
【請求項１６】
前記モード制御部は、自己診断処理を実行する自己診断モードと、最初の自己診断において故障であると判定された際に再度自己診断処理を実行する例外処理モードと、を設定可能に構成されている、請求項１５に記載のマイクロコントローラ。
【請求項１７】
前記マイクロコントローラは更に、
前記データ処理装置におけるエラー処理を管理するエラーマネジメントユニットを備え、
前記エラーマネジメントユニットは、前記例外処理モードにおいて故障であると判定された場合、前記リードモディファイライト回路が故障であると確定する、
請求項１６に記載のマイクロコントローラ。
【請求項１８】
請求項１に記載のデータ処理装置と、
センサから送信されたアナログ信号をデジタル信号に変換するＡＤコンバータと、
自動車の駆動部から送信された信号に基づいて前記自動車の速度を検出するタイマと、を備え、
前記データ処理装置は、前記ＡＤコンバータから出力された信号および前記タイマから出力された信号に基づき前記自動車を制御する、
マイクロコントローラ。
【請求項１９】
前記マイクロコントローラは更に、他のマイクロコントローラとＣＡＮ規格およびＦｌｅｘＲａｙ規格の少なくとも一方の規格によって通信を実施するインタフェースを備える、請求項１８に記載のマイクロコントローラ。
【請求項２０】
所定のデータを格納するメモリと、
前記メモリへのアクセスを制御するアクセス制御信号を出力して前記メモリに対してアクセスを行う演算回路と、
前記メモリに格納されているデータの一部を前記演算回路から出力されたモディファイデータで置き換えることで生成されたデータを前記メモリに書き込むリードモディファイライト回路と、を備えるデータ処理装置の故障診断方法であって、
前記アクセス制御信号が自己診断命令を示す信号である場合、自己診断に用いる第１のデータの一部を前記演算回路から出力されたモディファイデータで置き換えて第２のデータを生成し、
前記第２のデータと期待値とを比較することで前記リードモディファイライト回路の故障を診断する、
データ処理装置の故障診断方法。
【請求項２１】
前記演算回路は前記自己診断時に用いる第１のデータを第１のデータ格納部に格納する、請求項２０に記載のデータ処理装置の故障診断方法。
【請求項２２】
前記生成された第２のデータを第２のデータ格納部に格納し、
前記第２のデータ格納部から出力された前記第２のデータと期待値とを比較することで前記リードモディファイライト回路の故障を診断する、
請求項２０に記載のデータ処理装置の故障診断方法。
【請求項２３】
前記演算回路は、前記第１のデータおよび前記第２のデータの少なくとも一方を前記メモリの自己診断用データ領域に格納する、請求項２０に記載のデータ処理装置の故障診断方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ処理装置、マイクロコントローラ、およびデータ処理装置の自己診断方法に関し、特にリードモディファイライト処理を実行可能なデータ処理装置、マイクロコントローラ、およびデータ処理装置の自己診断方法に関する。
【背景技術】
【０００２】
演算回路（例えば、ＣＰＵ：Central Processing Unit）とメモリとを備えるデータ処理装置では、演算回路がメモリに対してアクセスすることで各種処理を実行することができる。データ処理装置の中にはリードモディファイライト処理を実行するリードモディファイライト回路を備えたデータ処理装置がある。ここで、リードモディファイライト処理とは、メモリから読み出したデータに修正を加えて修正後のデータをメモリに書き戻す処理である。このような処理を実現するリードモディファイライト回路をメモリの近傍に配置することで、データ処理装置のレイテンシを小さくすることができる。
【０００３】
昨今、このようなデータ処理装置は様々な機器に用いられており、高い信頼性が要求されている。例えば、データ処理装置が車載用のマイクロコンピュータとして用いられる場合は、機能安全の国際規格において高い自己診断率が要求されている。このため、データ処理装置の信頼性を向上させるためには、例えばデータ処理装置を二重化構成とする必要がある。
【０００４】
特許文献１には、二重化されたＣＰＵと、二重化されたＥＣＣ（Error Checking and Correction）回路とを含むマイクロコンピュータに関する技術が開示されている。特許文献１に開示されている技術では、二重化されたＥＣＣ回路の何れが故障しているかを判定することが可能であり、これによりマイクロコンピュータの信頼性を向上させている。
【０００５】
特許文献２には、リードモディファイライト処理を高速化することができるデータ処理装置に関する技術が開示されている。特許文献３には、メモリが出力するデータビットが複数である場合において、一部のメモリが故障してもエラー訂正できるメモリ制御回路に関する技術が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００９−２８２８４９号公報
【特許文献２】特開２００９−２８９１７０号公報
【特許文献３】特開平６−３２４９５０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
背景技術で説明したように、昨今、データ処理装置には高い信頼性が要求されており、これによりリードモディファイライト回路を備えたデータ処理装置においても高い信頼性が要求されている。よって、例えばリードモディファイライト回路に自己診断機能を設けることで、データ処理装置の信頼性を向上させることができる。
【０００８】
しかしながら、リードモディファイライト回路に自己診断機能を設けた場合であっても、メモリにアクセスするマスタが複数ある場合は、他のマスタからのアクセスの影響を受けるおそれがある。つまり、他のマスタのアクセスにより自己診断結果が改変されるおそれがあるため、リードモディファイライト回路の信頼性が低下するという問題がある。
【課題を解決するための手段】
【０００９】
本発明にかかるデータ処理装置は、メモリと、当該メモリに対してアクセスを行う演算回路と、第１のデータ格納部と、リードモディファイライト回路と、判定部と、を備える。そして、リードモディファイライト回路は、自己診断時に、第１のデータ格納部に格納されている第１のデータの一部を演算回路から出力されたモディファイデータで置き換えて第２のデータを生成する。判定部は、生成された第２のデータと期待値とを比較することでリードモディファイライト回路の故障を診断する。このような構成とすることで、他のマスタからのアクセスが自己診断結果に及ぼす影響を抑制することができ、リードモディファイライト回路の自己診断の信頼性を向上させることができる。
【００１０】
このとき、第１のデータ格納部は、演算回路から出力されたデータを自己診断時に用いる第１のデータとして格納してもよい。また、データ処理装置は、生成された第２のデータを格納する第２のデータ格納部を更に備えていてもよい。
【００１１】
また、第１および第２のデータ格納部は、メモリの自己診断用データ領域に設けられていてもよい。
【００１２】
また、メモリは第１のメモリと第２のメモリとを備えていてもよく、リードモディファイライト回路は第１のメモリに対応して設けられた第１のリードモディファイライト回路と第２のメモリに対応して設けられた第２のリードモディファイライト回路とを備えていてもよい。この場合、データ処理装置は更に、モニタ回路と、当該モニタ回路のモニタ結果に応じて第１および第２のリードモディファイライト回路の自己診断を制御する自己診断制御回路と、を備える。そして、自己診断制御回路は、自己診断時に、リードモディファイライト処理が実行された方のメモリに対応したリードモディファイライト回路に対して自己診断を実行する。このとき、モニタ回路は、演算回路から出力されたアクセス制御信号およびアドレス信号に応じて拡張制御信号を生成してもよい。
【００１３】
本発明にかかるデータ処理装置は、マイクロコントローラや車載用のマイクロコントローラに適用することができる。
【００１４】
また、本発明にかかるデータ処理装置の故障診断方法は、自己診断時に、自己診断に用いる第１のデータの一部を演算回路から出力されたモディファイデータで置き換えて第２のデータを生成し、生成された第２のデータと期待値とを比較することでリードモディファイライト回路の故障を診断する。
【発明の効果】
【００１５】
本発明により、リードモディファイライト回路の自己診断の信頼性を向上させることができるデータ処理装置、マイクロコントローラ、およびデータ処理装置の自己診断方法を提供することができる。
【図面の簡単な説明】
【００１６】
【図１】本発明にかかるデータ処理装置が適用されるマイクロコントローラの概略図である。
【図２】実施の形態１にかかるデータ処理装置を示すブロック図である。
【図３】アクセス制御信号ＣＴＲＬとアクセス制御回路の処理との関係を示す表である。
【図４】実施の形態１にかかるデータ処理装置が備える自己診断用データ格納部の一例を示す図である。
【図５】実施の形態１にかかるデータ処理装置が備える出力データ格納部の一例を示す図である。
【図６】実施の形態１にかかるデータ処理装置の自己診断時の動作を説明するためのフローチャートである。
【図７】実施の形態１にかかるデータ処理装置の自己診断時の動作を説明するためのタイミングチャートである。
【図８】実施の形態１にかかるデータ処理装置の自己診断時の動作を説明するためのタイミングチャートである。
【図９】実施の形態１にかかるデータ処理装置の自己診断時の動作を説明するためのタイミングチャートである。
【図１０Ａ】実施の形態１にかかるデータ処理装置における自己診断のタイミングを説明するための図である（所定の間隔毎）。
【図１０Ｂ】実施の形態１にかかるデータ処理装置における自己診断のタイミングを説明するための図である（プログラム実行毎）。
【図１０Ｃ】実施の形態１にかかるデータ処理装置における自己診断のタイミングを説明するための図である（ＲＭＷ処理実行毎）。
【図１１】実施の形態２にかかるデータ処理装置を示すブロック図である。
【図１２】実施の形態２にかかるデータ処理装置が備える判定部の一例を示す図である。
【図１３】実施の形態２にかかるデータ処理装置の自己診断時の動作を説明するためのフローチャートである。
【図１４】実施の形態３にかかるデータ処理装置を示すブロック図である。
【図１５】実施の形態３にかかるデータ処理装置の自己診断時の動作を説明するためのフローチャートである。
【図１６】実施の形態４にかかるデータ処理装置を示すブロック図である。
【図１７】実施の形態４にかかるデータ処理装置の自己診断時の動作を説明するためのフローチャートである。
【図１８】実施の形態５にかかるデータ処理装置を示すブロック図である。
【図１９】拡張制御信号ＣＴＲＬ_ＥＸとアクセス制御回路の処理との関係を示す表である。
【図２０】実施の形態５にかかるデータ処理装置の自己診断時の動作を説明するためのフローチャートである。
【図２１】実施の形態５にかかるデータ処理装置の自己診断時の動作を説明するためのタイミングチャートである。
【図２２】実施の形態６にかかるデータ処理装置を示すブロック図である。
【図２３】実施の形態６にかかるデータ処理装置の自己診断時の動作を説明するためのフローチャートである。
【図２４】実施の形態７にかかるデータ処理装置の自己診断時の動作を説明するためのフローチャートである。
【図２５】本発明にかかるデータ処理装置を車載用のマイクロコントローラに適用した場合の一例を説明するためのブロック図である。
【発明を実施するための形態】
【００１７】
本発明の実施の形態を詳細に説明する前に、本発明にかかるデータ処理装置が適用されるマイクロコントローラの概要について説明する。なお、本発明は、以下で説明するマイクロコントローラに適用されるものではあるが、説明するマイクロコントローラは一例であり、他のマイクロコントローラに本発明を適用することも可能である。
【００１８】
本発明にかかるデータ処理装置が適用されるマイクロコントローラの概略図を図１に示す。図１に示すように、本発明が適用されるマイクロコントローラは、データ処理装置１、ＤＭＡＣ（Direct Memory Access Controller）２、ＣＰＵ３、フラッシュメモリ４、モード制御部５、ＥＭＵ（Error Management Unit：エラーマネジメントユニット）６、Ｉ／Ｏ（Input/Output）７、およびシステムバス８を有する。ここで、データ処理装置１は、ＣＰＵ１０、メモリアービタ２０、アクセス制御回路３０、およびメモリ（ＲＡＭ）４０を有する。
【００１９】
データ処理装置１、ＤＭＡＣ２、ＣＰＵ３、フラッシュメモリ４、モード制御部５、ＥＭＵ６、およびＩ／Ｏ７はそれぞれシステムバス８と接続されており、これらは互いにシステムバス８を介してデータを送受信することができる。なお、システムバス８は、アドレスバス、データバス、およびコントロールバスを備えている。従って、例えば、バス８に接続するＣＰＵ１０は、アドレスバス、データバス、およびコントロールバスと接続されている。
【００２０】
ＣＰＵ１０は、例えばフラッシュメモリ４に格納されているプログラムを実行することができる。このとき、ＣＰＵ１０はメモリ４０をデータメモリとして用いてもよい。ＣＰＵ１０は二重化構成となっているので、ハードウェアとしての信頼性を向上させることができる。また、ＣＰＵ１０は二重化構成となっているが、ソフトウェア的には一つのプロセッサとして動作することができる。メモリアービタ２０は、ＣＰＵ１０、システムバス８、ＤＭＡＣ２、およびＣＰＵ３からのメモリ４０へのアクセスを調停する。
【００２１】
アクセス制御回路３０は、ＣＰＵ１０、システムバス８、ＤＭＡＣ２、およびＣＰＵ３からのメモリ４０へのアクセスを制御する回路である。また、アクセス制御回路３０はリードモディファイライト回路（不図示）を備えている。リードモディファイライト回路は、メモリ４０から読み出したデータに、ＣＰＵ１０から出力されたモディファイデータを用いて修正し、修正後のデータをメモリに書き戻す処理を実行することができる。このように、メモリ４０の近傍に配置されたアクセス制御回路３０にリードモディファイライト回路を配置することで、マイクロコントローラのレイテンシを小さくすることができる。
【００２２】
メモリ４０は、例えば外部から読み出したプログラムやＣＰＵ１０で処理されたデータを一時的に記憶する。ＤＭＡＣ２は、ＣＰＵ１０を介さずにメモリ４０との間のデータ転送を実施する。ＣＰＵ３は、所定のプログラムを実行可能なプロセッサである。フラッシュメモリ４は、例えばＣＰＵ１０で実行するプログラムを格納している。モード制御部５は、ＣＰＵ１０が実行するリードモディファイライト回路の診断モードを設定する回路である。ＥＭＵ６は、リードモディファイライト回路の自己診断処理で検出されたエラーを管理する回路である。Ｉ／Ｏ（７）は、外部機器からのデータの入力、外部機器へのデータの出力を実施するためのインタフェースである。
【００２３】
次に、本発明にかかるデータ処理装置の詳細について説明する。
【００２４】
＜実施の形態１＞
図２は、本発明の実施の形態１にかかるデータ処理装置を示すブロック図である。図２に示すように、本実施の形態にかかるデータ処理装置は、ＣＰＵ（演算回路）１０、メモリアービタ２０、アクセス制御回路３０、およびメモリ４０を有する。なお、データ処理装置を構成するＣＰＵ１０、メモリアービタ２０、アクセス制御回路３０、およびメモリ４０には、クロック生成回路９０から共通のクロック信号ＣＬＫが供給されている。また、図１に示した各回路要素にもクロック生成回路９０からクロック信号が供給されている。
【００２５】
ＣＰＵ１０は、所定のプログラムを実行する。ＣＰＵ１０が実行するプログラムは、例えば図１に示したフラッシュメモリ４に格納されている。この場合、ＣＰＵ１０は、フラッシュメモリ４からプログラムを読み出し、読み出したプログラムに応じて各種処理を実行する。また、ＣＰＵ１０は、実行するプログラムに応じてメモリ４０にアクセスする。ＣＰＵ１０がメモリ４０にアクセスする場合は、メモリ４０へのアクセスを制御するアクセス制御信号ＣＴＲＬを出力する。アクセス制御信号ＣＴＲＬはアクセス制路回路３０を制御するための信号である。また、ＣＰＵ１０は、メモリ４０にアクセスする際に、アドレス信号ＡＤＤ、ライトデータＷＤａを出力し、アクセス制御回路３０からリードデータＲＤｂを入力する。ここで、ＣＰＵ１０から出力されたアクセス制御信号ＣＴＲＬ、アドレス信号ＡＤＤ、およびライトデータＷＤａは、メモリアービタ２０を介してアクセス制御回路３０に出力される。また、アクセス制御回路３０から出力されたリードデータＲＤｂは、メモリアービタ２０を介してＣＰＵ１０に供給される。
【００２６】
また、ＣＰＵ１０はＥＣＣ回路１１を有する。ＥＣＣ回路１１は、ＥＣＣエンコーダとＥＣＣデコーダとを有する。ＥＣＣエンコーダは、ライトデータＷＤａに対するエラー訂正コードＥＣＣ（Error Correcting Code）を生成し、生成されたエラー訂正コードＥＣＣをライトデータＷＤａに付加する。また、ＥＣＣデコーダは、リードデータＲＤｂに含まれているエラー訂正コードＥＣＣを用いて、リードデータＲＤｂのエラーを検出し訂正する。
【００２７】
メモリアービタ２０は、メモリ４０にアクセスするマスタが複数ある場合、つまり、ＣＰＵ１０以外にもメモリ４０にアクセスするマスタ（例えば、図１に示したＤＭＡＣ２、ＣＰＵ３等）がある場合、各マスタからメモリ４０へのアクセス要求やメモリ４０（アクセス制御回路３０）から各マスタへのアクセス要求を調停する。なお、メモリ４０へのアクセスを調停する必要がない場合（例えば、ＣＰＵ１０以外にメモリ４０にアクセスするマスタがない場合）は、メモリアービタ２０を省略することができる。
【００２８】
メモリ４０は、アクセス制御回路３０から出力されたライトデータＷＤｂを格納し、アクセス制御回路３０にリードデータＲＤａを出力する。このとき、メモリ４０は、ライトデータＷＤｂに付加されたエラー訂正コードＥＣＣをライトデータＷＤｂに関連付けて格納する。また、メモリ４０は、ＣＰＵ１０から読み出しの指示がなされた場合、リードデータＲＤａと共にリードデータＲＤａと関連付けられたエラー訂正コードＥＣＣを出力する。
【００２９】
アクセス制御回路３０は、ＣＰＵ１０からメモリアービタ２０を介して出力されたアクセス制御信号ＣＴＲＬ、アドレス信号ＡＤＤ、およびライトデータＷＤａを入力し、ＣＰＵ１０にメモリアービタ２０を介してリードデータＲＤｂを出力する。また、アクセス制御回路３０は、メモリ４０にライトデータＷＤｂを書き込み、メモリ４０からリードデータＲＤａを読み出す。つまり、アクセス制御回路３０は、ＣＰＵ１０からメモリアービタ２０を介して出力されたアクセス制御信号ＣＴＲＬに基づき、ＣＰＵ１０とメモリ４０との間で行なわれるデータの送受信を制御する。
【００３０】
図３は、アクセス制御信号ＣＴＲＬとアクセス制御回路３０の処理との関係を示す表である。図３に示すように、アクセス制御信号ＣＴＲＬ（３ビットの信号）が"０００"のとき、アクセス制御回路３０はメモリ４０からリードデータＲＤａを読み出す処理を実行する。アクセス制御信号ＣＴＲＬが"００１"のとき、アクセス制御回路３０はＣＰＵ１０から出力されたライトデータＷＤａをメモリ４０に書き込む処理を実行する。アクセス制御信号ＣＴＲＬが"０１０"のとき、アクセス制御回路３０はリードモディファイライト処理（以降、ＲＭＷ処理とも記載する）を実行する。アクセス制御信号ＣＴＲＬが"１００"のとき、アクセス制御回路３０はＣＰＵ１０に自己診断用の出力データを出力する処理を実行する。アクセス制御信号ＣＴＲＬが"１０１"のとき、アクセス制御回路３０はＣＰＵ１０から出力された自己診断用データを書き込む処理を実行する。アクセス制御信号ＣＴＲＬが"１１０"のとき、アクセス制御回路３０はリードモディファイライト回路３２（以降、ＲＭＷ回路とも記載する）の自己診断を実行する。
【００３１】
アクセス制御回路３０は、自己診断用データ格納部（第１のデータ格納部）３１、ＲＭＷ回路３２、出力データ格納部（第２のデータ格納部）３７、イネーブル信号生成回路３８、およびセレクタＳＥＬ１〜ＳＥＬ３を備える。
【００３２】
自己診断用データ格納部３１は、自己診断時に用いる自己診断用データ（第１のデータ）を格納する。自己診断用データ格納部３１は、アクセス制御信号ＣＴＲＬが"１０１"のとき、ＣＰＵ１０から出力されたライトデータＷＤａを自己診断用データＳＣ_Ｄとして格納する。また、自己診断用データ格納部３１は、セレクタＳＥＬ３に自己診断用データＳＣ_Ｄを出力する。
【００３３】
図４は、自己診断用データ格納部３１の一例を示す図である。図４に示すように、自己診断用データ格納部３１はセレクタＳＥＬ４とフリップフロップＦＦ１とを備える。セレクタＳＥＬ４は、フリップフロップＦＦ１から出力された自己診断用データＳＣ_ＤまたはライトデータＷＤａをアクセス制御信号ＣＴＲＬに応じて選択し、フリップフロップＦＦ１に出力する。つまり、セレクタＳＥＬ４は、アクセス制御信号ＣＴＲＬが"１０１"のとき、ＣＰＵ１０から出力されたライトデータＷＤａを選択し、フリップフロップＦＦ１に出力する。フリップフロップＦＦ１は、クロック信号ＣＬＫに応じてライトデータＷＤａを自己診断用データＳＣ_Ｄとして格納する。また、フリップフロップＦＦ１は、クロック信号ＣＬＫに応じて自己診断用データＳＣ_Ｄを出力する。
【００３４】
すなわち、アクセス制御信号ＣＴＲＬが"１０１"のとき、セレクタＳＥＬ４はＣＰＵ１０から出力されたライトデータＷＤａを選択しているので、フリップフロップＦＦ１に自己診断用データＳＣ_ＤとしてライトデータＷＤａが書き込まれる（自己診断用データが更新される）。一方、アクセス制御信号ＣＴＲＬが"１０１"以外のとき、セレクタＳＥＬ４はフリップフロップＦＦ１から出力された自己診断用データＳＣ_Ｄを選択しているので、フリップフロップＦＦ１からはクロック信号ＣＬＫに応じて自己診断用データＳＣ_Ｄが出力される。
【００３５】
ＲＭＷ回路３２は、リードモディファイライト処理を実行するための回路である。ＲＭＷ回路３２は、ＥＣＣ回路３３、３４、３６、およびＲＭＷ処理部３５を備える。ＥＣＣ回路３３、３４はＥＣＣデコーダである。ＥＣＣ回路３３は、ＣＰＵ１０から出力されたモディファイデータＭＯＤ_Ｄに含まれているエラー訂正コードＥＣＣを用いて、モディファイデータＭＯＤ_Ｄのエラーを検出し訂正する。ＥＣＣ回路３４は、セレクタＳＥＬ３から出力された自己診断用データＳＣ_ＤまたはリードデータＲＤｂに含まれているエラー訂正コードＥＣＣを用いて、これらのデータ（ＳＣ_ＤまたはＲＤｂ）のエラーを検出し訂正する。
【００３６】
ＲＭＷ処理部３５は、セレクタＳＥＬ３で選択され、ＥＣＣ回路３４で処理された自己診断用データＳＣ_ＤまたはリードデータＲＤｂの一部を、ＥＣＣ回路３３で処理されたモディファイデータＭＯＤ_Ｄに基づいて修正し、修正後のデータ（出力データ）ＲＭＷ_ＤをＥＣＣ回路３６に出力する。ＥＣＣ回路３６はＥＣＣエンコーダであり、ＲＭＷ処理後の出力データＲＭＷ_Ｄに対するエラー訂正コードＥＣＣを生成し、生成されたエラー訂正コードＥＣＣを出力データＲＭＷ_Ｄに付加する。ＥＣＣ回路３６で処理された出力データＲＭＷ_Ｄは、出力データ格納部３７およびセレクタＳＥＬ２に出力される。
【００３７】
ＲＭＷ回路３２は、アクセス制御信号ＣＴＲＬが通常のリードモディファイライト処理を示す場合（アクセス制御信号ＣＴＲＬ＝"０１０"）、メモリ４０から読み出されたリードデータＲＤａの一部をモディファイデータＭＯＤ_Ｄで置き換えてリードモディファイライト処理を実行する。ここで、メモリ４０から読み出されたリードデータＲＤａは、セレクタＳＥＬ１およびセレクタＳＥＬ３で選択されてＲＭＷ回路３２に供給される。なお、図２では、セレクタＳＥＬ１で選択された後のリードデータＲＤａをリードデータＲＤｂと記載している。
【００３８】
また、ＲＭＷ回路３２は、アクセス制御信号ＣＴＲＬがＲＭＷ回路３２の自己診断命令を示している場合（アクセス制御信号ＣＴＲＬ＝"１１０"）、自己診断用データ格納部３１から出力された自己診断用データＳＣ_Ｄの一部をモディファイデータＭＯＤ_Ｄで置き換えてリードモディファイライト処理を実行する。
【００３９】
出力データ格納部３７は、ＲＭＷ回路３２から出力された出力データ（第２のデータ）ＲＭＷ_Ｄを格納する。つまり、出力データ格納部３７は、アクセス制御信号ＣＴＲＬがＲＭＷ回路３２の自己診断命令を示している場合（アクセス制御信号ＣＴＲＬ＝"１１０"）、ＲＭＷ回路３２から出力された出力データＲＭＷ_Ｄを格納する。また、出力データ格納部３７は、セレクタＳＥＬ１に出力データＲＭＷ_Ｄを出力する。
【００４０】
図５は、出力データ格納部３７の一例を示す図である。図５に示すように、出力データ格納部３７はセレクタＳＥＬ５とフリップフロップＦＦ２とを備える。セレクタＳＥＬ５は、フリップフロップＦＦ２から出力された出力データＲＭＷ_ＤまたはＲＭＷ回路３２から出力された出力データＲＭＷ_Ｄをアクセス制御信号ＣＴＲＬに応じて選択し、フリップフロップＦＦ２に出力する。つまり、セレクタＳＥＬ５は、アクセス制御信号ＣＴＲＬが"１１０"のとき、ＲＭＷ回路３２から出力された出力データＲＭＷ_Ｄを選択し、フリップフロップＦＦ２に出力する。フリップフロップＦＦ２は、クロック信号ＣＬＫに応じて出力データＲＭＷ_Ｄを格納する。また、フリップフロップＦＦ２は、クロック信号ＣＬＫに応じて出力データＲＭＷ_Ｄを出力する。
【００４１】
すなわち、アクセス制御信号ＣＴＲＬが"１１０"のとき、セレクタＳＥＬ５はＲＭＷ回路３２から出力された出力データＲＭＷ_Ｄを選択しているので、フリップフロップＦＦ２に格納されている出力データＲＭＷ_Ｄが更新される。一方、アクセス制御信号ＣＴＲＬが"１１０"以外のとき、セレクタＳＥＬ５はフリップフロップＦＦ２から出力された出力データＲＭＷ_Ｄを選択しているので、フリップフロップＦＦ２からはクロック信号ＣＬＫに応じて出力データＲＭＷ_Ｄが出力される。
【００４２】
イネーブル信号生成回路３８は、アクセス制御信号ＣＴＲＬが自己診断命令を示す信号である場合、イネーブル信号ＥＮとして不活性状態を示す信号（例えば、ロウレベルの信号"０"）をメモリ４０に出力する。ここで、自己診断命令を示すアクセス制御信号ＣＴＲＬとは、自己診断用の出力データＲＭＷ_Ｄを出力することを命令するアクセス制御信号ＣＴＲＬ"１００"、自己診断用データを書き込むことを命令するアクセス制御信号ＣＴＲＬ"１０１"、およびＲＭＷ回路３２の自己診断の実行を命令するアクセス制御信号ＣＴＲＬ"１１０"である。つまり、アクセス制御信号ＣＴＲＬの最上位ビットの値が"１"の場合である。ＣＰＵ１０がメモリ４０にアクセスする場合、ＣＰＵ１０はメモリアービタ２０を介してメモリ４０にアドレス信号ＡＤＤを出力する。しかし、ロウレベルのイネーブル信号ＥＮがメモリ４０に供給されると、メモリ４０は供給されたアドレス信号ＡＤＤを無効とする。このように、自己診断時にイネーブル信号生成回路３８がロウレベルのイネーブル信号ＥＮを出力することで、自己診断時におけるＣＰＵ１０からのメモリ４０へのアクセスを無効とすることができる。
一方、イネーブル信号生成回路３８は、アクセス制御信号ＣＴＲＬがリードデータの読み出し"０００"、ライトデータの書き込み"００１"、およびＲＭＷ処理の実行"０１０"を示す場合、イネーブル信号ＥＮとして活性状態を示す信号（例えば、ハイレベルの信号"１"）をメモリ４０に出力する。この場合は、イネーブル信号ＥＮがハイレベルであるので、メモリ４０に供給されたアドレス信号ＡＤＤは有効として扱われる。
【００４３】
セレクタＳＥＬ１は、出力データ格納部３７から出力された出力データＲＭＷ_Ｄおよびメモリ４０から読み出されたリードデータＲＤａのうちのいずれか一方をアクセス制御信号ＣＴＲＬに応じて選択し、選択されたデータをリードデータＲＤｂとして出力する。
【００４４】
セレクタＳＥＬ２は、ＲＭＷ回路３２から出力された出力データＲＭＷ_ＤおよびＣＰＵ１０から出力されたライトデータＷＤａのうちのいずれか一方をアクセス制御信号ＣＴＲＬに応じて選択し、選択されたデータをライトデータＷＤｂとして出力する。
【００４５】
セレクタＳＥＬ３は、自己診断用データ格納部３１から出力された自己診断用データＳＣ_ＤおよびセレクタＳＥＬ１から出力されたリードデータＲＤｂのうちのいずれか一方をアクセス制御信号ＣＴＲＬに応じて選択し、選択されたデータをＲＭＷ回路３２に出力する。
【００４６】
また、本実施の形態にかかるデータ処理装置のＣＰＵ１０は判定部を含んでいる。判定部は、アクセス制御信号ＣＴＲＬが自己診断命令を示す信号である場合、ＲＭＷ回路３２で生成された出力データＲＭＷ_Ｄと、期待値とを比較することでＲＭＷ回路３２の故障を診断する。
【００４７】
出力データ格納部３７に格納されている出力データＲＭＷ_Ｄは、セレクタＳＥＬ１を経由してリードデータＲＤｂとしてＣＰＵ１０に出力される。ＣＰＵ１０が備えるＥＣＣ回路１１のＥＣＣデコーダは、出力データＲＭＷ_Ｄに含まれているエラー訂正コードＥＣＣを用いて、出力データＲＭＷ_Ｄのエラーを検出し訂正する。ＥＣＣ回路１１で処理された後の出力データＲＭＷ_Ｄは、ＣＰＵ１０が備える判定部に出力される。ＣＰＵ１０が備える判定部は、出力データＲＭＷ_Ｄと期待値とが一致する場合、ＲＭＷ回路３２が正常であると判定することができる。一方、出力データＲＭＷ_Ｄと期待値とが一致しない場合、ＲＭＷ回路３２が故障していると判定することができる。
【００４８】
ここで、ＲＭＷ回路３２におけるＲＭＷ処理に使用される自己診断用データＳＣ_ＤおよびモディファイデータＭＯＤ_Ｄは、ＣＰＵ１０から出力されたデータである。よって、ＣＰＵ１０は既知の自己診断用データＳＣ_ＤおよびモディファイデータＭＯＤ_Ｄに基づき、出力データＲＭＷ_Ｄの期待値を求めることができる。
【００４９】
次に、本実施の形態にかかるデータ処理装置の動作について説明する。
まず、通常時の動作について説明する。ＣＰＵ１０がメモリ４０からリードデータを読み出す場合、ＣＰＵ１０はアクセス制御信号ＣＴＲＬ"０００"を出力する。また、ＣＰＵ１０は、アドレス信号ＡＤＤとして、リードデータのアドレスＡＤＤ_ｒｄを出力する。このとき、イネーブル信号生成回路３８はハイレベルのイネーブル信号ＥＮをメモリ４０に出力する。メモリ４０は、イネーブル信号ＥＮがハイレベルであるので、アドレスＡＤＤ_ｒｄに応じたリードデータＲＤａ（エラー訂正コードＥＣＣを含む）をセレクタＳＥＬ１に出力する。セレクタＳＥＬ１は、アクセス制御信号ＣＴＲＬが"０００"であるのでリードデータＲＤａを選択し、リードデータＲＤａをリードデータＲＤｂとしてメモリアービタ２０に出力する。ここで、リードデータＲＤｂは、セレクタＳＥＬ１で選択された方のデータを示しており、この場合リードデータＲＤｂはリードデータＲＤａと同一である。メモリアービタ２０は、リードデータＲＤｂをＣＰＵ１０に出力する。
【００５０】
ＣＰＵ１０がメモリ４０にライトデータを書き込む場合、ＣＰＵ１０はアクセス制御信号ＣＴＲＬ"００１"およびライトデータＷＤａ（エラー訂正コードＥＣＣを含む）を出力する。また、ＣＰＵ１０はアドレス信号ＡＤＤとしてライトデータの書き込み先のアドレスＡＤＤ_ｗｒを出力する。このとき、イネーブル信号生成回路３８はハイレベルのイネーブル信号ＥＮをメモリ４０に出力する。セレクタＳＥＬ２は、アクセス制御信号ＣＴＲＬが"００１"であるのでライトデータＷＤａを選択し、ライトデータＷＤａをライトデータＷＤｂとしてメモリ４０に出力する。ここで、ライトデータＷＤｂは、セレクタＳＥＬ２で選択された方のデータを示しており、この場合、ライトデータＷＤｂはライトデータＷＤａと同一である。メモリ４０は、イネーブル信号ＥＮがハイレベルであるので、アドレスＡＤＤ_ｗｒに対応したアドレスにライトデータＷＤｂ（エラー訂正コードＥＣＣを含む）を書き込む。
【００５１】
ＣＰＵ１０がＲＭＷ処理を実行する場合、ＣＰＵ１０はアクセス制御信号ＣＴＲＬ"０１０"を出力する。また、ＣＰＵ１０は、ライトデータＷＤａとしてモディファイデータＭＯＤ_Ｄ（エラー訂正コードＥＣＣを含む）を、アドレス信号ＡＤＤとしてＲＭＷ処理対象のデータが格納されているアドレスＡＤＤ_ｒｍｗを出力する。このとき、イネーブル信号生成回路３８はハイレベルのイネーブル信号ＥＮをメモリ４０に出力する。メモリ４０は、イネーブル信号ＥＮがハイレベルであるので、アドレスＡＤＤ_ｒｍｗに応じたリードデータＲＤａ（エラー訂正コードＥＣＣを含む）をセレクタＳＥＬ１に出力する。セレクタＳＥＬ１は、アクセス制御信号ＣＴＲＬが"０１０"であるのでリードデータＲＤａを選択し、リードデータＲＤａをリードデータＲＤｂとしてセレクタＳＥＬ３に出力する。セレクタＳＥＬ３は、アクセス制御信号ＣＴＲＬが"０１０"であるのでリードデータＲＤｂを選択し、ＲＭＷ回路３２に出力する。ＲＭＷ回路３２は、リードデータＲＤｂの一部をモディファイデータＭＯＤ_Ｄに基づいて修正し、修正後のデータ（出力データ）ＲＭＷ_Ｄを出力する。セレクタＳＥＬ２は、アクセス制御信号ＣＴＲＬが"０１０"であるのでＲＭＷ回路３２の出力データＲＭＷ_Ｄを選択し、選択した出力データＲＭＷ_Ｄをメモリ４０に出力する。メモリ４０は、イネーブル信号ＥＮがハイレベルであるので、アドレスＡＤＤ_ｒｍｗに対応したアドレスに出力データＲＭＷ_Ｄ（エラー訂正コードＥＣＣを含む）を書き込む。
【００５２】
次に、本実施の形態にかかるデータ処理装置の自己診断時の動作について説明する。
図６は、本実施の形態にかかるデータ処理装置の自己診断時の動作を説明するためのフローチャートである。まず、ＣＰＵ１０は自己診断用データ格納部３１に自己診断用データを格納する（ステップＳ１１）。このとき、ＣＰＵ１０はアクセス制御信号"１０１"を出力する。図７は、図６のステップＳ１１の動作を説明するためのタイミングチャートである。タイミングｔ１において、ＣＰＵ１０はアクセス制御信号"１０１"を出力する。また、ＣＰＵ１０はライトデータＷＤａとして自己診断用データＳＣ_Ｄを出力する。このとき、自己診断用データ格納部３１のセレクタＳＥＬ４（図４参照）は、アクセス制御信号が"１０１"であるので、入力パス（つまり、ライトデータＷＤａ）を選択している。よって、タイミングｔ２において、自己診断用データ格納部３１のフリップフロップＦＦ１に自己診断用データＳＣ_Ｄが格納される。その後、タイミングｔ３において、アクセス制御信号が"１０１"以外となり、自己診断用データの書き込み処理が終了する。
【００５３】
なお、アクセス制御信号ＣＴＲＬが"１０１"以外のとき、セレクタＳＥＬ４はフリップフロップＦＦ１から出力された自己診断用データＳＣ_Ｄを選択しているので、フリップフロップＦＦ１からはクロック信号ＣＬＫに応じて自己診断用データＳＣ_Ｄが出力される（つまり、セレクタＳＥＬ４とフリップフロップＦＦ１はループを形成している）。
【００５４】
また、ＣＰＵ１０が自己診断用データ格納部３１に自己診断用データを格納する動作（ステップＳ１１）は、例えばデータ処理装置の起動時等に一度だけ実施すればよい。自己診断用データ格納部３１に格納されている自己診断用データを更新する場合は、再度ステップＳ１１の処理を実行する。また、ステップＳ１１では、アクセス制御信号ＣＴＲＬが"１０１"であるのでイネーブル信号生成回路３８はロウレベルのイネーブル信号ＥＮをメモリ４０に出力する。よって、メモリ４０に供給されたアドレス信号ＡＤＤは無効とされ、メモリ４０への通常の書き込みは実行されない。
【００５５】
次に、ＲＭＷ回路３２は、自己診断用データＳＣ_ＤとモディファイデータＭＯＤ_Ｄとを用いてＲＭＷ処理を実行する（ステップＳ１２）。そして、ＲＭＷ処理後の出力データＲＭＷ_Ｄを出力データ格納部３７に格納する（ステップＳ１３）。このとき、ＣＰＵ１０はアクセス制御信号"１１０"を出力する。図８は、図６のステップＳ１２、Ｓ１３の動作を説明するためのタイミングチャートである。タイミングｔ１１において、ＣＰＵ１０はアクセス制御信号"１１０"を出力する。また、ＣＰＵ１０はライトデータＷＤａとしてモディファイデータＭＯＤ_Ｄを出力する。このとき、セレクタＳＥＬ３は、アクセス制御信号が"１１０"であるので、自己診断用データ格納部３１に格納されている自己診断用データＳＣ_Ｄを選択している。よって、ＲＭＷ回路３２は、自己診断用データＳＣ_Ｄの一部をモディファイデータＭＯＤ_Ｄに基づいて修正し、修正後のデータ（出力データ）ＲＭＷ_Ｄを出力する。出力データ格納部３７のセレクタＳＥＬ５（図５参照）は、アクセス制御信号が"１１０"であるので、入力パス（つまり、出力データＲＭＷ_Ｄ）を選択している。よって、タイミングｔ１２において、出力データ格納部３７のフリップフロップＦＦ２に出力データＲＭＷ_Ｄが格納される。その後、タイミングｔ１３において、アクセス制御信号が"１１０"以外となり、ＲＭＷ回路のＲＭＷ処理が終了する。
【００５６】
なお、アクセス制御信号ＣＴＲＬが"１１０"以外のとき、セレクタＳＥＬ５はフリップフロップＦＦ２から出力された出力データＲＭＷ_Ｄを選択しているので、フリップフロップＦＦ２からはクロック信号ＣＬＫに応じて出力データＲＭＷ_Ｄが出力される（つまり、セレクタＳＥＬ５とフリップフロップＦＦ２はループを形成している）。
【００５７】
また、ステップＳ１２では、アクセス制御信号ＣＴＲＬが"１１０"であるのでイネーブル信号生成回路３８はロウレベルのイネーブル信号ＥＮをメモリ４０に出力する。よって、メモリ４０に供給されたアドレス信号ＡＤＤは無効とされ、メモリ４０への通常のＲＭＷ処理は実行されない。
【００５８】
次に、ＣＰＵ１０が出力データ格納部３７に格納されている出力データＲＭＷ_Ｄを読み出し、ＣＰＵ１０の判定部においてＲＭＷ処理後の出力データＲＭＷ_Ｄと期待値とを比較する（ステップＳ１４）。このとき、ＣＰＵ１０はアクセス制御信号"１００"を出力する。図９は、図６のステップＳ１４の出力データＲＭＷ_Ｄの読み出し処理を説明するためのタイミングチャートである。タイミングｔ２１において、ＣＰＵ１０はアクセス制御信号"１００"を出力する。このとき、出力データ格納部３７のフリップフロップＦＦ２（図５参照）は、出力データＲＭＷ_Ｄを出力している。そして、セレクタＳＥＬ１はアクセス制御信号が"１００"であるので出力データＲＭＷ_Ｄを選択している。よって、リードデータＲＤｂとして出力データＲＭＷ_ＤがＣＰＵ１０に出力される。その後、タイミングｔ２２において、アクセス制御信号が"１００"以外となり、出力データＲＭＷ_Ｄの読み出し処理が終了する。
【００５９】
読み出された出力データＲＭＷ_Ｄは、ＣＰＵ１０の判定部において期待値と比較される。そして、出力データＲＭＷ_Ｄと期待値とが一致する場合（ステップＳ１５：Ｙｅｓ）、ＲＭＷ回路３２は正常であると判定される（ステップＳ１６）。一方、出力データＲＭＷ_Ｄと期待値とが不一致の場合（ステップＳ１５：Ｎｏ）、ＲＭＷ回路３２は故障と判定される（ステップＳ１７）。
【００６０】
図１０Ａ〜図１０Ｃは、本実施の形態にかかるデータ処理装置における自己診断のタイミングを説明するための図である。図１０Ａ〜図１０Ｃにおいて、"ＲＤ"はＣＰＵ１０がメモリ４０からリードデータを読み出す処理（アクセス制御信号＝"０００"）、"ＷＲ"はＣＰＵ１０がメモリ４０にライトデータを書き込む処理（アクセス制御信号＝"００１"）、"ＲＭＷ"は通常のＲＭＷ処理（アクセス制御信号＝"０１０"）、"ＳＣ"は自己診断処理（アクセス制御信号＝"１００"、"１０１"、"１１０"）を示している。なお、図１０Ａ〜図１０Ｃに示す"ＲＤ"、"ＷＲ"、"ＲＭＷ"、"ＳＣ"はそれぞれ、複数のクロックサイクルで処理される。
【００６１】
図１０Ａに示すように、データ処理装置における自己診断処理は、例えば、所定の間隔毎に実行することができる。つまり、間隔ＩＮＴ１、ＩＮＴ２、ＩＮＴ３はそれぞれ時間が等しく、それぞれの間隔に１回、自己診断処理"ＳＣ"を実行することで、所定の間隔に１回の割合で自己診断処理"ＳＣ"を実行することができる。このとき、間隔ＩＮＴ１、ＩＮＴ２、ＩＮＴ３を、ＲＭＷ回路３２が故障してからデータ処理装置を組み込んだマイクロコントローラが故障であると認識するまでに必要な時間よりも短い時間とすることで、ＲＭＷ回路３２の故障によりマイクロコントローラが誤動作することを抑制することができる。つまり、ＲＭＷ回路３２の故障をマイクロコントローラがより早く認識する必要がある場合は、間隔ＩＮＴ１、ＩＮＴ２、ＩＮＴ３をより狭く設定する。一方、マイクロコントローラがＲＭＷ回路３２の故障を認識するまでにある程度余裕を持たせることができる場合は、間隔ＩＮＴ１、ＩＮＴ２、ＩＮＴ３を比較的広く設定することができる。このように、間隔ＩＮＴ１、ＩＮＴ２、ＩＮＴ３はマイクロコントローラに要求される仕様に応じて任意に設定することができる。
【００６２】
また、図１０Ｂに示すように、データ処理装置における自己診断処理は、実行するプログラムＰｒｏｇ１、Ｐｒｏｇ２、Ｐｒｏｇ３毎に実行してもよい。図１０Ｂに示す例では、各プログラムの開始時に自己診断処理"ＳＣ"を実行している。このように、各プログラムの開始時に自己診断処理"ＳＣ"を実行することで、これから実行するプログラムにおいてエラーが発生することを抑制することができる。なお、自己診断処理"ＳＣ"は、プログラムの開始時以外にも、プログラムの終了時やプログラムの途中に実行してもよい。
【００６３】
また、図１０Ｃに示すように、データ処理装置における自己診断処理は、通常のＲＭＷ処理の直後に実行するようにしてもよい。このように、自己診断処理"ＳＣ"を通常のＲＭＷ処理の直後に実行することで、直前に実行した通常のＲＭＷ処理が正常に実行されたかを判定することができる。
【００６４】
なお、上記で説明したデータ処理装置における自己診断のタイミングは、データ処理装置を用いるマイクロコントローラに応じてＣＰＵ１０が設定することができる。
【００６５】
背景技術で説明したように、昨今、データ処理装置には高い信頼性が要求されており、これによりリードモディファイライト回路を備えたデータ処理装置においても高い信頼性が要求されている。よって、例えばリードモディファイライト回路に自己診断機能を設けることで、データ処理装置の信頼性を向上させることができる。
【００６６】
しかしながら、リードモディファイライト回路に自己診断機能を設けた場合であっても、メモリにアクセスするマスタが複数ある場合は、他のマスタからのアクセスの影響を受けるおそれがあった。つまり、他のマスタのアクセスにより自己診断結果が改変されるおそれがあるため、リードモディファイライト回路の信頼性が低下するという問題があった。
【００６７】
本実施の形態にかかるデータ処理装置では、自己診断時に用いる自己診断用データを自己診断用データ格納部３１に格納し、自己診断用データ格納部３１に格納されている自己診断用データとモディファイデータとを用いてリードモディファイライト処理を実行し、リードモディファイライト処理を実行した後の出力データを出力データ格納部３７に一時的に格納し、その後、この出力データと期待値とをＣＰＵ１０に設けられている判定部において比較することで、リードモディファイライト回路３２の故障を診断している。このような構成とすることで、メモリ４０にアクセスするマスタが複数ある場合であっても、他のマスタ（図１のＤＭＡＣ２、ＣＰＵ３）からのアクセスの影響を受けることなく、リードモディファイライト回路３２の自己診断を行うことができる。すなわち、他のマスタのアクセスにより診断データ（出力データＲＭＷ_Ｄ）が改変されることを抑制することができる。
【００６８】
また、データ処理装置の信頼性を向上させるために、データ処理装置が備えるリードモディファイライト回路を二重化することも想定される。しかしながら、リードモディファイライト回路を二重化すると、回路サイズや消費電力が増加するという問題があった。この問題は、ＣＰＵとメモリとの距離が離れている場合やメモリにアクセスするマスタが複数ある場合は顕著にあらわれる。このため、リードモディファイライト回路を二重化することなく、リードモディファイライト回路の自己診断を行うことができるデータ処理装置が必要とされていた。特に、処理頻度が低い周辺回路においてデータ処理装置が用いられる場合は、可能な限りデータ処理装置の回路サイズを抑える必要があるため、二重化することなくリードモディファイライト回路の自己診断を行うことができるデータ処理装置が必要とされていた。よって、本実施の形態にかかるデータ処理装置を用いることで、リードモディファイライト回路を二重化することなく、リードモディファイライト回路の自己診断を行うことができる。
【００６９】
以上で説明した本実施の形態にかかる発明により、リードモディファイライト回路の自己診断の信頼性を向上させることができるデータ処理装置およびデータ処理装置の自己診断方法を提供することができる。
【００７０】
＜実施の形態２＞
次に、本発明の実施の形態２について説明する。図１１は、本実施の形態にかかるデータ処理装置を示すブロック図である。図１１に示す本実施の形態にかかるデータ処理装置は、アクセス制御回路３０'が判定部３９を備える点、実施の形態１にかかるデータ処理装置が備えていた出力データ格納部３７およびセレクタＳＥＬ１を備えていない点、並びに自己診断用データ格納部３１'に自己診断用データが予め格納されている点が、図２に示した実施の形態１にかかるデータ処理装置と異なる。これ以外は実施の形態１にかかるデータ処理装置と同様であるので、同一の構成要素には同一の符号を付し、重複した説明は省略する。
【００７１】
自己診断用データ格納部３１'は、自己診断時に用いる自己診断用データＳＣ_Ｄ（第１のデータ）を予め格納している。また、自己診断用データ格納部３１'は、セレクタＳＥＬ３に自己診断用データＳＣ_Ｄを出力する。例えば、自己診断用データ格納部３１'はレジスタを内蔵しており、このレジスタに自己診断用データＳＣ_Ｄを格納することができる。
【００７２】
判定部３９は、ＲＭＷ回路３２から出力された出力データＲＭＷ_Ｄと、判定部に予め格納されている期待値とを比較し、ＲＭＷ回路３２の故障を診断する。図１２は、本実施の形態にかかるデータ処理装置が備える判定部３９の一例を示す図である。図１２に示すように、判定部３９は、セレクタＳＥＬ６と、フリップフロップＦＦ３と、期待値格納部５１と、比較器５２と、を備える。セレクタＳＥＬ６は、フリップフロップＦＦ３から出力された出力データＲＭＷ_ＤまたはＲＭＷ回路３２から出力された出力データＲＭＷ_Ｄをアクセス制御信号ＣＴＲＬに応じて選択し、フリップフロップＦＦ３に出力する。つまり、セレクタＳＥＬ６は、アクセス制御信号ＣＴＲＬが"１１０"のとき、ＲＭＷ回路３２から出力された出力データＲＭＷ_Ｄを選択し、フリップフロップＦＦ３に出力する。
【００７３】
フリップフロップＦＦ３は、クロック信号ＣＬＫに応じて出力データＲＭＷ_Ｄを格納する。また、フリップフロップＦＦ３は、クロック信号ＣＬＫに応じて比較器５２に出力データＲＭＷ_Ｄを出力する。このとき、フリップフロップＦＦ３は、最初に比較器５２に出力データＲＭＷ_Ｄを出力する際、有効ビットｖａｌ_ｂｉｔとして"１"を出力する。また、フリップフロップＦＦ３は、２回目以降、比較器５２に出力データＲＭＷ_Ｄを出力する際、有効ビットｖａｌ_ｂｉｔとして"０"を出力する。有効ビットｖａｌ_ｂｉｔは、比較器５２における比較の実施を指示するための信号である。
【００７４】
比較器５２は、有効ビットｖａｌ_ｂｉｔが"１"である場合、フリップフロップＦＦ３から出力された出力データＲＭＷ_Ｄと期待値格納部５１から出力された期待値ＥＸＰとを比較する。そして、出力データＲＭＷ_Ｄと期待値ＥＸＰとが一致する場合は、フラグ信号ＥＲＲ_ＦＬＧとして正常であることを示す"０"を出力する。一方、出力データＲＭＷ_Ｄと期待値ＥＸＰとが一致しない場合は、フラグ信号ＥＲＲ_ＦＬＧとして故障であることを示す"１"を出力する。なお、比較器５２は、有効ビットｖａｌ_ｂｉｔが"０"である場合は、出力データＲＭＷ_Ｄと期待値ＥＸＰとの比較を実施しない（つまり、故障判定を実施しない）。
【００７５】
ここで、期待値格納部５１に格納されている期待値ＥＸＰは、ＣＰＵ１０'が出力するモディファイデータＭＯＤ_Ｄと、自己診断用データ格納部３１に格納されている自己診断用データＳＣ_Ｄとに基づき決定される値である。よって、自己診断用データ格納部３１に格納する自己診断用データＳＣ_Ｄと、ＣＰＵ１０'が出力するモディファイデータＭＯＤ_Ｄとを固定値とすることで、期待値ＥＸＰも固定値とすることができる。
【００７６】
なお、リードモディファイライト回路３２、イネーブル信号生成回路３８、およびセレクタＳＥＬ２、ＳＥＬ３の構成については、実施の形態１で説明したデータ処理装置と同様であるので重複した説明は省略する。また、ＣＰＵ１０'については、判定部を備えていない点以外は実施の形態１で説明したデータ処理装置のＣＰＵ１０と同様である。
【００７７】
次に、本実施の形態にかかるデータ処理装置の自己診断時の動作について説明する。
図１３は、本実施の形態にかかるデータ処理装置の自己診断時の動作を説明するためのフローチャートである。まず、ＲＭＷ回路３２は、自己診断用データ格納部３１に格納されている自己診断用データＳＣ_Ｄと、ＣＰＵ１０'から出力されたモディファイデータＭＯＤ_Ｄとを用いてＲＭＷ処理を実行する（ステップＳ２１）。
【００７８】
ステップＳ２１の動作について詳細に説明する。まず、ＣＰＵ１０'はアクセス制御信号"１１０"を出力する。また、ＣＰＵ１０'はモディファイデータＭＯＤ_Ｄを出力する。このとき、セレクタＳＥＬ３は、アクセス制御信号が"１１０"であるので、自己診断用データ格納部３１'に格納されている自己診断用データＳＣ_Ｄを選択している。よって、ＲＭＷ回路３２は、自己診断用データＳＣ_Ｄの一部をモディファイデータＭＯＤ_Ｄに基づいて修正することで出力データＲＭＷ_Ｄを生成する（ＲＭＷ処理）。
【００７９】
生成された出力データＲＭＷ_Ｄは判定部３９に出力される（ステップＳ２２）。その後、判定部３９において出力データＲＭＷ_Ｄと期待値とが比較される（ステップＳ２３）。つまり、図１２に示す判定部３９のセレクタＳＥＬ６は、アクセス制御信号が"１１０"であるので、入力パス（つまり、出力データＲＭＷ_Ｄ）を選択している。よって、フリップフロップＦＦ３に出力データＲＭＷ_Ｄが格納される。フリップフロップＦＦ３は、クロック信号ＣＬＫに応じて比較器５２に出力データＲＭＷ_Ｄを出力する。このとき、フリップフロップＦＦ３は有効ビットｖａｌ_ｂｉｔとして"１"を出力する。
【００８０】
比較器５２は、有効ビットｖａｌ_ｂｉｔが"１"であるので、フリップフロップＦＦ３から出力された出力データＲＭＷ_Ｄと期待値格納部５１から出力された期待値ＥＸＰとを比較する。そして、出力データＲＭＷ_Ｄと期待値ＥＸＰとが一致する場合（ステップＳ２４：Ｙｅｓ）は、フラグ信号ＥＲＲ_ＦＬＧとして正常であることを示す"０"を出力する（ステップＳ２５）。一方、出力データＲＭＷ_Ｄと期待値ＥＸＰとが一致しない場合（ステップＳ２４：Ｎｏ）は、フラグ信号ＥＲＲ_ＦＬＧとして故障であることを示す"１"を出力する（ステップＳ２６）。
【００８１】
上記で説明したように、本実施の形態にかかるデータ処理装置では、自己診断時に用いる自己診断用データを自己診断用データ格納部３１'に予め格納し、自己診断用データ格納部３１'に格納されている自己診断用データとモディファイデータとを用いてリードモディファイライト処理を実行し、リードモディファイライト処理を実行した後の出力データと期待値とを判定部において比較することで、リードモディファイライト回路３２の故障を診断している。
【００８２】
よって、リードモディファイライト回路の自己診断の信頼性を向上させることができる。つまり、本実施の形態にかかるデータ処理装置では、メモリ４０にアクセスするマスタが複数ある場合であっても、他のマスタ（図１のＤＭＡＣ２、ＣＰＵ３）からのアクセスの影響を受けることなく、リードモディファイライト回路３２の自己診断を行うことができる。すなわち、他のマスタのアクセスにより診断データ（出力データＲＭＷ_Ｄ）が改変されることを抑制することができる。また、本実施の形態にかかるデータ処理装置では、リードモディファイライト回路を二重化することなく、リードモディファイライト回路の自己診断を行うことができる。
【００８３】
以上で説明した本実施の形態にかかる発明により、リードモディファイライト回路の自己診断の信頼性を向上させることができるデータ処理装置およびデータ処理装置の自己診断方法を提供することができる。
【００８４】
なお、以上で説明した実施の形態１および実施の形態２にかかるデータ処理装置は適宜組み合わせてもよい。例えば、実施の形態１にかかるデータ処理装置の自己診断用データ格納部３１を、実施の形態２にかかるデータ処理装置の自己診断用データ格納部３１'を用いて構成してもよい。つまり、自己診断用データ格納部３１がＣＰＵ１０から出力された自己診断用データＳＣ_Ｄを格納するのではなく、自己診断用データ格納部３１が予め自己診断用データＳＣ_Ｄを格納するように構成してもよい。また、実施の形態２では判定部３９をアクセス制御回路３０'の内部に設けたが、判定部３９をアクセス制御回路３０'の外に設けてもよい。
【００８５】
＜実施の形態３＞
次に、本発明の実施の形態３について説明する。図１４は、本実施の形態にかかるデータ処理装置を示すブロック図である。図１４に示すように、本実施の形態にかかるデータ処理装置は、ＣＰＵ１０、メモリアービタ２０、アクセス制御回路６０、およびメモリ７０を有する。なお、データ処理装置を構成するＣＰＵ１０、メモリアービタ２０、アクセス制御回路６０、およびメモリ７０には、クロック生成回路から共通のクロック信号ＣＬＫが供給されている。なお、本実施の形態にかかるデータ処理装置が備えるＣＰＵ１０およびメモリアービタ２０の構成および動作については、実施の形態１の場合と同様であるので重複した説明は省略する。また、これ以外の構成要素についても、実施の形態１と同様の部分については、同一の符号を付し、重複した説明は省略する。
【００８６】
メモリ７０は、アクセス制御回路６０から出力されたライトデータＷＤｂを格納し、アクセス制御回路６０にリードデータＲＤａを出力する。このとき、メモリ７０は、ライトデータＷＤｂに付加されたエラー訂正コードＥＣＣをライトデータＷＤｂに関連付けて格納する。また、メモリ７０は、ＣＰＵ１０から読み出しの指示がなされた場合、リードデータＲＤａと共にリードデータＲＤａと関連付けられたエラー訂正コードＥＣＣを出力する。
【００８７】
また、メモリ７０は、通常データ領域７２と自己診断用データ領域７３とを備える。通常データ領域７２は、通常のデータ（つまり、ＲＭＷ回路６２の自己診断に使用するデータ以外のデータ）を格納するための領域である。自己診断用データ領域７３は、ＲＭＷ回路６２の自己診断に使用するデータを格納するための領域である。通常データ領域７２に対応したアドレスおよび自己診断用データ領域７３に対応したアドレスは予め定められており、ＣＰＵ１０から出力されるアドレス信号ＡＤＤに応じて、ＣＰＵ１０がアクセスするデータ領域が決定される。
【００８８】
アクセス制御回路６０は、ＣＰＵ１０からメモリアービタ２０を介して出力されたアクセス制御信号ＣＴＲＬ、アドレス信号ＡＤＤ、およびライトデータＷＤａを入力し、ＣＰＵ１０にメモリアービタ２０を介してリードデータＲＤａを出力する。また、アクセス制御回路３０は、メモリ７０にライトデータＷＤｂを書き込み、メモリ７０からリードデータＲＤａを読み出す。つまり、アクセス制御回路６０は、ＣＰＵ１０からメモリアービタ２０を介して出力されたアクセス制御信号ＣＴＲＬに基づき、ＣＰＵ１０とメモリ７０との間で行なわれるデータの送受信を制御する。なお、アクセス制御信号ＣＴＲＬとアクセス制御回路６０の処理との関係は、実施の形態１の場合と同様である（図３参照）。
【００８９】
アクセス制御回路６０は、ＲＭＷ回路３２、イネーブル信号生成回路６８、およびセレクタＳＥＬ７を備える。ＲＭＷ回路３２については、実施の形態１の場合と同様であるので重複した説明は省略する。
【００９０】
イネーブル信号生成回路６８は、ＣＰＵ１０から出力されたアクセス制御信号ＣＴＲＬとアドレス信号ＡＤＤとに応じて、ＣＰＵ１０によるメモリ７０へのアクセスを有効／無効とするイネーブル信号ＥＮを生成する。具体的には、アクセス制御信号ＣＴＲＬが自己診断命令を示すアクセス制御信号ＣＴＲＬであり（つまり、アクセス制御信号ＣＴＲＬの最上位ビットの値が"１"）、且つ、アドレス信号ＡＤＤがメモリ７０の自己診断用データ領域７３に対応したアドレスである場合、イネーブル信号生成回路６８はハイレベルのイネーブル信号ＥＮをメモリ７０に出力する。この場合は、イネーブル信号ＥＮがハイレベルであるので、メモリ７０に供給されたアドレス信号ＡＤＤは有効として扱われる。つまり、ＣＰＵ１０によるメモリ７０の自己診断用データ領域７３へのアクセスが許可される。
一方、アクセス制御信号ＣＴＲＬの最上位ビットの値が"１"であり、且つ、アドレス信号ＡＤＤがメモリ７０の通常データ領域７２のアドレスである場合、イネーブル信号生成回路６８はロウレベルのイネーブル信号ＥＮをメモリ７０に出力する。この場合は、イネーブル信号ＥＮがロウレベルであるので、メモリ７０に供給されたアドレス信号ＡＤＤは無効とされる。つまり、ＣＰＵ１０によるメモリ７０の通常データ領域７２へのアクセスが禁止される。
【００９１】
また、アクセス制御信号ＣＴＲＬが通常のアクセスを示すアクセス制御信号ＣＴＲＬであり（つまり、アクセス制御信号ＣＴＲＬの最上位ビットの値が"０"）、且つ、アドレス信号ＡＤＤがメモリ７０の自己診断用データ領域７３に対応したアドレスである場合、イネーブル信号生成回路６８はロウレベルのイネーブル信号ＥＮをメモリ７０に出力する。この場合は、イネーブル信号ＥＮがロウレベルであるので、メモリ７０に供給されたアドレス信号ＡＤＤは無効とされる。つまり、ＣＰＵ１０によるメモリ７０の自己診断用データ領域７３へのアクセスが禁止される。
一方、アクセス制御信号ＣＴＲＬの最上位ビットの値が"０"であり、且つ、アドレス信号ＡＤＤがメモリ７０の通常データ領域７２のアドレスである場合、イネーブル信号生成回路６８はハイレベルのイネーブル信号ＥＮをメモリ７０に出力する。この場合は、イネーブル信号ＥＮがハイレベルであるので、メモリ７０に供給されたアドレス信号ＡＤＤは有効として扱われる。つまり、ＣＰＵ１０によるメモリ７０の通常データ領域７２へのアクセスが許可される。
【００９２】
イネーブル信号生成回路６８には、通常データ領域７２に対応するアドレスおよび自己診断用データ領域７３に対応するアドレスに関する情報が格納されている。
【００９３】
セレクタＳＥＬ７は、ＲＭＷ回路３２から出力された出力データＲＭＷ_ＤおよびＣＰＵ１０から出力されたライトデータＷＤａのうちのいずれか一方をアクセス制御信号ＣＴＲＬに応じて選択し、選択されたデータをライトデータＷＤｂとして出力する。
【００９４】
また、本実施の形態にかかるデータ処理装置のＣＰＵ１０は判定部を含んでいる。判定部は、アクセス制御信号ＣＴＲＬが自己診断命令を示す信号である場合、ＲＭＷ回路３２で生成された出力データＲＭＷ_Ｄと、期待値とを比較することでＲＭＷ回路３２の故障を診断する。
【００９５】
次に、本実施の形態にかかるデータ処理装置の動作について説明する。
まず、通常時の動作について説明する。ＣＰＵ１０がメモリ７０からリードデータを読み出す場合、ＣＰＵ１０はアクセス制御信号ＣＴＲＬ"０００"を出力する。また、ＣＰＵ１０は、アドレス信号ＡＤＤとして、リードデータのアドレスＡＤＤ_ｒｄ（通常データ領域７２に対応するアドレス）を出力する。このとき、イネーブル信号生成回路６８は、アクセス制御信号ＣＴＲＬの最上位ビットの値が"０"であり、且つ、アドレスＡＤＤ_ｒｄが通常データ領域７２のアドレスであるので、ハイレベルのイネーブル信号ＥＮをメモリ７０に出力する。メモリ７０は、イネーブル信号ＥＮがハイレベルであるのでアドレスＡＤＤ_ｒｄを有効として扱い、アドレスＡＤＤ_ｒｄに応じたリードデータＲＤａ（エラー訂正コードＥＣＣを含む）をメモリアービタ２０に出力する。メモリアービタ２０は、リードデータＲＤａをＣＰＵ１０に出力する。
【００９６】
ＣＰＵ１０がメモリ７０にライトデータを書き込む場合、ＣＰＵ１０はアクセス制御信号ＣＴＲＬ"００１"およびライトデータＷＤａ（エラー訂正コードＥＣＣを含む）を出力する。また、ＣＰＵ１０はアドレス信号ＡＤＤとしてライトデータの書き込み先のアドレスＡＤＤ_ｗｒ（通常データ領域７２に対応するアドレス）を出力する。このとき、イネーブル信号生成回路６８は、アクセス制御信号ＣＴＲＬの最上位ビットの値が"０"であり、且つ、アドレスＡＤＤ_ｗｒが通常データ領域７２のアドレスであるので、ハイレベルのイネーブル信号ＥＮをメモリ７０に出力する。セレクタＳＥＬ７は、アクセス制御信号ＣＴＲＬが"００１"であるのでライトデータＷＤａを選択し、ライトデータＷＤａをライトデータＷＤｂとしてメモリ７０に出力する。ここで、ライトデータＷＤｂは、セレクタＳＥＬ７で選択された方のデータを示しており、この場合、ライトデータＷＤｂはライトデータＷＤａと同一である。メモリ７０は、イネーブル信号ＥＮがハイレベルであるのでアドレスＡＤＤ_ｗｒを有効として扱い、メモリ７０の通常データ領域７２のアドレスＡＤＤ_ｗｒに対応したアドレスにライトデータＷＤｂ（エラー訂正コードＥＣＣを含む）を書き込む。
【００９７】
ＣＰＵ１０がＲＭＷ処理を実行する場合、ＣＰＵ１０はアクセス制御信号ＣＴＲＬ"０１０"を出力する。また、ＣＰＵ１０は、ライトデータＷＤａとしてモディファイデータＭＯＤ_Ｄ（エラー訂正コードＥＣＣを含む）を、アドレス信号ＡＤＤとしてＲＭＷ処理対象のデータが格納されているアドレスＡＤＤ_ｒｍｗ（通常データ領域７２に対応するアドレス）を出力する。このとき、イネーブル信号生成回路６８は、アクセス制御信号ＣＴＲＬの最上位ビットの値が"０"であり、且つ、アドレスＡＤＤ_ｒｍｗが通常データ領域７２のアドレスであるので、ハイレベルのイネーブル信号ＥＮをメモリ７０に出力する。メモリ７０は、イネーブル信号ＥＮがハイレベルであるのでアドレスＡＤＤ_ｒｍｗを有効として扱い、アドレスＡＤＤ_ｒｍｗに対応したリードデータＲＤａをＲＭＷ回路３２に出力する。ＲＭＷ回路３２は、リードデータＲＤａの一部をモディファイデータＭＯＤ_Ｄに基づいて修正し、修正後のデータ（出力データ）ＲＭＷ_Ｄを出力する。セレクタＳＥＬ７は、アクセス制御信号ＣＴＲＬが"０１０"であるのでＲＭＷ回路３２の出力データＲＭＷ_Ｄを選択し、選択した出力データＲＭＷ_Ｄをメモリ７０に出力する。メモリ７０は、アドレスＡＤＤ_ｒｍｗに対応したアドレスに出力データＲＭＷ_Ｄ（エラー訂正コードＥＣＣを含む）を書き込む。
【００９８】
次に、本実施の形態にかかるデータ処理装置の自己診断時の動作について説明する。
図１５は、本実施の形態にかかるデータ処理装置の自己診断時の動作を説明するためのフローチャートである。まず、ＣＰＵ１０はメモリ７０の自己診断用データ領域７３に自己診断用データを格納する（ステップＳ３１）。このとき、ＣＰＵ１０はアクセス制御信号"１０１"を出力する。
【００９９】
ステップＳ３１の動作について詳細に説明する。まず、ＣＰＵ１０はアクセス制御信号"１０１"を出力する。また、ＣＰＵ１０はライトデータＷＤａとして自己診断用データＳＣ_Ｄを、また、アドレス信号ＡＤＤとして、自己診断用データＳＣ_Ｄを格納するアドレスＡＤＤ_ｓｃ（自己診断用データ領域７３に対応するアドレス）をそれぞれ出力する。このとき、セレクタＳＥＬ７は、アクセス制御信号が"１０１"であるので、ライトデータＷＤａ（つまり、自己診断用データＳＣ_Ｄ）を選択している。また、イネーブル信号生成回路６８は、アクセス制御信号ＣＴＲＬの最上位ビットの値が"０"であり、且つ、アドレスＡＤＤ_ｓｃが自己診断用データ領域７３のアドレスであるので、ハイレベルのイネーブル信号ＥＮをメモリ７０に出力する。メモリ７０は、イネーブル信号ＥＮがハイレベルであるのでアドレスＡＤＤ_ｓｃを有効として扱い、自己診断用データ領域７３のアドレスＡＤＤ_ｓｃに自己診断用データＳＣ_Ｄを格納する。
【０１００】
次に、自己診断用データＳＣ_ＤとモディファイデータＭＯＤ_Ｄとを用いてＲＭＷ処理を実行する（ステップＳ３２）。そして、ＲＭＷ処理後の出力データＲＭＷ_Ｄをメモリ７０の自己診断用データ領域７３に格納する（ステップＳ３３）。
【０１０１】
ステップＳ３２、Ｓ３３の動作について詳細に説明する。まず、ＣＰＵ１０はアクセス制御信号"１１０"を出力する。また、ＣＰＵ１０は、ライトデータＷＤａとしてモディファイデータＭＯＤ_Ｄ（エラー訂正コードＥＣＣを含む）を出力する。また、ＣＰＵ１０は、自己診断用データＳＣ_Ｄが格納されているアドレスＡＤＤ_ｓｃを出力する。このとき、イネーブル信号生成回路６８は、アクセス制御信号ＣＴＲＬの最上位ビットの値が"１"であり、且つ、アドレスＡＤＤ_ｓｃが自己診断用データ領域７３のアドレスであるので、ハイレベルのイネーブル信号ＥＮをメモリ７０に出力する。メモリ７０は、イネーブル信号ＥＮがハイレベルであるのでアドレスＡＤＤ_ｓｃを有効として扱い、アドレスＡＤＤ_ｓｃに対応したリードデータＲＤａ（つまり、自己診断用データＳＣ_Ｄ）をＲＭＷ回路３２に出力する。ＲＭＷ回路３２は、自己診断用データＳＣ_Ｄの一部をモディファイデータＭＯＤ_Ｄに基づいて修正し、修正後のデータ（出力データ）ＲＭＷ_Ｄを出力する。セレクタＳＥＬ７は、アクセス制御信号ＣＴＲＬが"１１０"であるのでＲＭＷ回路３２の出力データＲＭＷ_Ｄを選択し、選択した出力データＲＭＷ_Ｄをメモリ７０に出力する。メモリ７０は、自己診断用データ領域７３のアドレスＡＤＤ_ｓｃに対応したアドレスに出力データＲＭＷ_Ｄ（エラー訂正コードＥＣＣを含む）を書き込む。
【０１０２】
次に、ＣＰＵ１０がメモリ７０の自己診断用データ領域７３に格納されている出力データＲＭＷ_Ｄを読み出し、ＣＰＵ１０の判定部においてＲＭＷ処理後の出力データＲＭＷ_Ｄと期待値とを比較する（ステップＳ３４）。
【０１０３】
すなわち、ＣＰＵ１０はアクセス制御信号ＣＴＲＬ"１００"を出力する。また、ＣＰＵ１０は、アドレス信号ＡＤＤとして、出力データＲＭＷ_Ｄが格納されているアドレスアドレスＡＤＤ_ｓｃ（自己診断用データ領域７３に対応するアドレス）を出力する。このとき、イネーブル信号生成回路６８は、アクセス制御信号ＣＴＲＬの最上位ビットの値が"１"であり、且つ、アドレスＡＤＤ_ｓｃが自己診断用データ領域７３のアドレスであるので、ハイレベルのイネーブル信号ＥＮをメモリ７０に出力する。メモリ７０は、イネーブル信号ＥＮがハイレベルであるのでアドレスＡＤＤ_ｓｃを有効として扱い、アドレスＡＤＤ_ｓｃに応じた出力データＲＭＷ_Ｄ（エラー訂正コードＥＣＣを含む）をメモリアービタ２０に出力する。メモリアービタ２０は、出力データＲＭＷ_ＤをＣＰＵ１０に出力する。
【０１０４】
そして、読み出された出力データＲＭＷ_Ｄは、ＣＰＵ１０の判定部において期待値と比較される。そして、出力データＲＭＷ_Ｄと期待値とが一致する場合（ステップＳ３５：Ｙｅｓ）、ＲＭＷ回路３２は正常であると判定される（ステップＳ３６）。一方、出力データＲＭＷ_Ｄと期待値とが不一致の場合（ステップＳ３５：Ｎｏ）、ＲＭＷ回路３２は故障と判定される（ステップＳ３７）。
【０１０５】
このように、本実施の形態にかかるデータ処理装置では、自己診断時に用いる自己診断用データをメモリ７０の自己診断用データ領域７３に格納し、自己診断用データ領域７３に格納されている自己診断用データとモディファイデータとを用いてリードモディファイライト処理を実行し、リードモディファイライト処理を実行した後の出力データをメモリ７０の自己診断用データ領域７３に一時的に格納し、その後、この出力データと期待値とをＣＰＵ１０に設けられている判定部において比較することで、リードモディファイライト回路３２の故障を診断している。
【０１０６】
よって、リードモディファイライト回路の自己診断の信頼性を向上させることができる。つまり、本実施の形態にかかるデータ処理装置では、メモリ７０に通常データ領域７２と区別された自己診断用データ領域７３を設け、またイネーブル信号生成回路６８を用いて自己診断用データ領域７３へのアクセスを制限しているので、メモリ７０にアクセスするマスタが複数ある場合であっても、他のマスタ（図１のＤＭＡＣ２、ＣＰＵ３）からのアクセスの影響を受けることなく、リードモディファイライト回路３２の自己診断を行うことができる。すなわち、他のマスタのアクセスにより診断データ（出力データＲＭＷ_Ｄ）が改変されることを抑制することができる。また、本実施の形態にかかるデータ処理装置では、リードモディファイライト回路を二重化することなく、リードモディファイライト回路の自己診断を行うことができる。
【０１０７】
なお、本実施の形態では、ＣＰＵ１０から自己診断用データＳＣ_Ｄを出力してメモリ７０の自己診断用データ領域７３に書き込む場合（図１５のステップＳ３１）について説明した。しかし、自己診断用データＳＣ_Ｄはメモリ７０の自己診断用データ領域７３に予め格納しておいてもよい。
【０１０８】
以上で説明した本実施の形態にかかる発明により、リードモディファイライト回路の自己診断の信頼性を向上させることができるデータ処理装置およびデータ処理装置の自己診断方法を提供することができる。
【０１０９】
＜実施の形態４＞
次に、本発明の実施の形態４について説明する。図１６は、本実施の形態にかかるデータ処理装置を示すブロック図である。図１６に示す本実施の形態にかかるデータ処理装置は、ＣＰＵが判定部を備えているのではなく、アクセス制御回路６０'が判定部３９を備えている点が図１４に示した実施の形態３にかかるデータ処理装置と異なる。これ以外は実施の形態３にかかるデータ処理装置と同様であるので、同一の構成要素には同一の符号を付し、重複した説明は省略する。
【０１１０】
判定部３９は、ＲＭＷ回路３２から出力された出力データＲＭＷ_Ｄと、判定部に予め格納されている期待値とを比較し、ＲＭＷ回路３２の故障を診断する。判定部３９の構成および動作は、実施の形態２で説明した判定部３９（図１２参照）と同様であるので、重複した説明は省略する。
【０１１１】
また、リードモディファイライト回路３２、イネーブル信号生成回路６８、およびセレクタＳＥＬ７の構成については、実施の形態３で説明したデータ処理装置と同様であるので重複した説明は省略する。また、ＣＰＵ１０'については、判定部を備えていない点以外は実施の形態３で説明したデータ処理装置のＣＰＵ１０と同様である。
【０１１２】
次に、本実施の形態にかかるデータ処理装置の自己診断時の動作について説明する。
図１７は、本実施の形態にかかるデータ処理装置の自己診断時の動作を説明するためのフローチャートである。まず、ＣＰＵ１０'はメモリ７０の自己診断用データ領域７３に自己診断用データを格納する（ステップＳ４１）。このとき、ＣＰＵ１０はアクセス制御信号"１０１"を出力する。ステップＳ４１の動作については、実施の形態３で説明したステップＳ３１の動作と同様である。
【０１１３】
次に、自己診断用データＳＣ_ＤとモディファイデータＭＯＤ_Ｄとを用いてＲＭＷ処理を実行する（ステップＳ４２）。そして、ＲＭＷ処理後の出力データＲＭＷ_Ｄを判定部３９に出力する（ステップＳ４３）。
【０１１４】
ステップＳ４２、Ｓ４３の動作について詳細に説明する。まず、ＣＰＵ１０'はアクセス制御信号"１１０"を出力する。また、ＣＰＵ１０'は、ライトデータＷＤａとしてモディファイデータＭＯＤ_Ｄ（エラー訂正コードＥＣＣを含む）を出力する。また、ＣＰＵ１０'は、自己診断用データＳＣ_Ｄが格納されているアドレスＡＤＤ_ｓｃを出力する。このとき、イネーブル信号生成回路６８は、アクセス制御信号ＣＴＲＬの最上位ビットの値が"１"であり、且つ、アドレスＡＤＤ_ｓｃが自己診断用データ領域７３のアドレスであるので、ハイレベルのイネーブル信号ＥＮをメモリ７０に出力する。メモリ７０は、イネーブル信号ＥＮがハイレベルであるのでアドレスＡＤＤ_ｓｃを有効として扱い、アドレスＡＤＤ_ｓｃに対応したリードデータＲＤａ（つまり、自己診断用データＳＣ_Ｄ）をＲＭＷ回路３２に出力する。ＲＭＷ回路３２は、自己診断用データＳＣ_Ｄの一部をモディファイデータＭＯＤ_Ｄに基づいて修正し、修正後のデータ（出力データ）ＲＭＷ_Ｄを判定部３９に出力する。
【０１１５】
判定部３９は、ＲＭＷ処理後の出力データＲＭＷ_Ｄと期待値とを比較する（ステップＳ４４）。つまり、図１２に示す判定部３９のセレクタＳＥＬ６は、アクセス制御信号が"１１０"であるので、入力パス（つまり、出力データＲＭＷ_Ｄ）を選択している。よって、フリップフロップＦＦ３に出力データＲＭＷ_Ｄが格納される。フリップフロップＦＦ３は、クロック信号ＣＬＫに応じて比較器５２に出力データＲＭＷ_Ｄを出力する。このとき、フリップフロップＦＦ３は有効ビットｖａｌ_ｂｉｔとして"１"を出力する。
【０１１６】
比較器５２は、有効ビットｖａｌ_ｂｉｔが"１"であるので、フリップフロップＦＦ３から出力された出力データＲＭＷ_Ｄと期待値格納部５１から出力された期待値ＥＸＰとを比較する。そして、出力データＲＭＷ_Ｄと期待値ＥＸＰとが一致する場合（ステップＳ４５：Ｙｅｓ）は、フラグ信号ＥＲＲ_ＦＬＧとして正常であることを示す"０"を出力する（ステップＳ４６）。一方、出力データＲＭＷ_Ｄと期待値ＥＸＰとが一致しない場合（ステップＳ４５：Ｎｏ）は、フラグ信号ＥＲＲ_ＦＬＧとして故障であることを示す"１"を出力する（ステップＳ４７）。
【０１１７】
上記で説明したように、本実施の形態にかかるデータ処理装置では、自己診断時に用いる自己診断用データをメモリ７０の自己診断用データ領域７３に格納し、自己診断用データ領域７３に格納されている自己診断用データとモディファイデータとを用いてリードモディファイライト処理を実行し、リードモディファイライト処理を実行した後の出力データと期待値とを判定部において比較することで、リードモディファイライト回路３２の故障を診断している。
【０１１８】
よって、リードモディファイライト回路の自己診断の信頼性を向上させることができる。つまり、本実施の形態にかかるデータ処理装置では、メモリ７０に通常データ領域７２と区別された自己診断用データ領域７３を設け、またイネーブル信号生成回路６８を用いて自己診断用データ領域７３へのアクセスを制限しているので、メモリ７０にアクセスするマスタが複数ある場合であっても、他のマスタ（図１のＤＭＡＣ２、ＣＰＵ３）からのアクセスの影響を受けることなく、リードモディファイライト回路３２の自己診断を行うことができる。すなわち、他のマスタのアクセスにより診断データ（出力データＲＭＷ_Ｄ）が改変されることを抑制することができる。また、本実施の形態にかかるデータ処理装置では、リードモディファイライト回路を二重化することなく、リードモディファイライト回路の自己診断を行うことができる。
【０１１９】
なお、本実施の形態では、ＣＰＵ１０'から自己診断用データＳＣ_Ｄを出力してメモリ７０の自己診断用データ領域７３に書き込む場合（図１７のステップＳ４１）について説明した。しかし、自己診断用データＳＣ_Ｄはメモリ７０の自己診断用データ領域７３に予め格納しておいてもよい。この場合、図１７のステップＳ４１は省略することができる。
【０１２０】
以上で説明した本実施の形態にかかる発明により、リードモディファイライト回路の自己診断の信頼性を向上させることができるデータ処理装置およびデータ処理装置の自己診断方法を提供することができる。
【０１２１】
＜実施の形態５＞
次に、本発明の実施の形態５について説明する。図１８は、本実施の形態にかかるデータ処理装置を示すブロック図である。図１８に示すように、本実施の形態にかかるデータ処理装置は、ＣＰＵ（演算回路）１１０、メモリアービタ１２０、アクセス制御回路１３０、メモリ１４０_１、１４０_２、および自己診断制御回路１５０を有する。なお、データ処理装置を構成するＣＰＵ１１０、メモリアービタ１２０、アクセス制御回路１３０、メモリ１４０_１、１４０_２、および自己診断制御回路１５０には、クロック生成回路から共通のクロック信号ＣＬＫが供給されている。
【０１２２】
ＣＰＵ１１０は、所定のプログラムを実行する。ＣＰＵ１１０が実行するプログラムは、例えば図１に示したフラッシュメモリ４に格納されている。この場合、ＣＰＵ１１０は、フラッシュメモリ４からプログラムを読み出し、読み出したプログラムに応じて各種処理を実行する。また、ＣＰＵ１１０は、実行するプログラムに応じてメモリ１４０_１、１４０_２にアクセスする。ＣＰＵ１１０がメモリ１４０_１、１４０_２にアクセスする場合は、メモリ１４０_１、１４０_２へのアクセスを制御するアクセス制御信号ＣＴＲＬを出力する。アクセス制御信号ＣＴＲＬはアクセス制路回路１３０を制御するための信号である。なお、ＣＰＵ１１０から出力されるアクセス制御信号ＣＴＲＬとアクセス制御回路１３０の処理との関係は、図３に示した場合と同様である。
【０１２３】
また、ＣＰＵ１１０は、メモリ１４０_１、１４０_２にアクセスする際に、アドレス信号ＡＤＤａおよびライトデータＷＤａを出力する。ここで、ＣＰＵ１１０から出力されたアクセス制御信号ＣＴＲＬ、アドレス信号ＡＤＤａ、およびライトデータＷＤａは、メモリアービタ１２０を介してアクセス制御回路１３０に出力される。また、アクセス制御回路１３０から出力されたリードデータＲＤａ_１、ＲＤａ_２は、メモリアービタ１２０を介してＣＰＵ１１０に供給される。
【０１２４】
また、ＣＰＵ１１０はＥＣＣ回路１１１を有する。ＥＣＣ回路１１１は、ＥＣＣエンコーダとＥＣＣデコーダとを有する。ＥＣＣエンコーダは、ライトデータＷＤａに対するエラー訂正コードＥＣＣ（Error Correcting Code）を生成し、生成されたエラー訂正コードＥＣＣをライトデータＷＤａに付加する。また、ＥＣＣデコーダは、リードデータＲＤｂに含まれているエラー訂正コードＥＣＣを用いて、リードデータＲＤｂのエラーを検出し訂正する。
【０１２５】
メモリアービタ１２０は、メモリ１４０_１、１４０_２にアクセスするマスタが複数ある場合、つまり、ＣＰＵ１１０以外にもメモリ１４０_１、１４０_２にアクセスするマスタがある場合（例えば、図１に示したＤＭＡＣ２、ＣＰＵ３等）、各マスタからメモリ１４０_１、１４０_２へのアクセス要求やメモリ１４０_１、１４０_２（アクセス制御回路１３０）から各マスタへのアクセス要求を調停する。
【０１２６】
メモリアービタ１２０は、モニタ回路１２１およびセレクタＳＥＬ２１、ＳＥＬ２２を有する。モニタ回路１２１は、ＣＰＵ１１０から出力されたアクセス制御信号ＣＴＲＬおよびアドレス信号ＡＤＤａを入力し、モニタ信号ＭＮＴを自己診断制御回路１５０に出力する。つまり、モニタ回路１２１は、アクセス制御信号ＣＴＲＬがＲＭＷ処理を指示する信号であるか、また、アドレス信号ＡＤＤａがメモリ１４０_１およびメモリ１４０_２のどちらのアドレスであるかを監視する。そして、アクセス制御信号ＣＴＲＬがＲＭＷ処理を指示する信号である場合、ＲＭＷ処理が実行されたこと、およびＲＭＷ処理が実行されたメモリ（１４０_１または１４０_２）に関する情報をモニタ信号ＭＮＴとして自己診断制御回路１５０に出力する。また、モニタ回路１２１は、アクセス制御信号ＣＴＲＬおよびアドレス信号ＡＤＤａ、ＡＤＤｂに応じて、アクセス制御信号ＣＴＲＬを拡張した拡張制御信号ＣＴＲＬ_ＥＸを生成する。
【０１２７】
セレクタＳＥＬ２１は、ＣＰＵ１１０から出力されたライトデータＷＤａと自己診断制御回路１５０から出力されたモディファイデータＭＯＤ_Ｄ（自己診断用）とを入力し、これらの一方をメモリ１４０_１のライトデータＷＤ_１またはメモリ１４０_２のライトデータＷＤ_２として出力する。また、セレクタＳＥＬ２２は、メモリ１４０_１から出力されたリードデータＲＤａ_１とメモリ１４０_２から出力されたリードデータＲＤａ_２とを入力し、これらの一方をＣＰＵ１１０に出力する。セレクタＳＥＬ２１およびセレクタＳＥＬ２２は、メモリアービタ１２０が備える制御回路（不図示）を用いて制御される。
【０１２８】
自己診断制御回路１５０は、ＲＭＷ回路１３２_１、１３２_２の自己診断の実行を制御する回路である。自己診断制御回路１５０は、モニタ回路１２１から出力されたモニタ信号ＭＮＴを入力する。そして、モニタ信号ＭＮＴとして、ＲＭＷ処理が実行されたこと及びＲＭＷ処理が実行されたメモリに関する情報が供給された場合、自己診断を命令するアクセス制御信号ＣＴＲＬ"１１０"および自己診断を実施するＲＭＷ回路（ＲＡＭ_１側またはＲＡＭ_２側）のアドレス信号ＡＤＤｂをモニタ回路１２１に出力する。このとき、自己診断制御回路１５０はモディファイデータＭＯＤ_Ｄ（自己診断用）をセレクタＳＥＬ２１に出力する。
【０１２９】
メモリ１４０_１は、アクセス制御回路１３０から出力されたライトデータＷＤｂ_１を格納し、アクセス制御回路１３０にリードデータＲＤａ_１を出力する。このとき、メモリ１４０_１は、ライトデータＷＤｂ_１に付加されたエラー訂正コードＥＣＣをライトデータＷＤｂ_１に関連付けて格納する。また、メモリ１４０_１は、ＣＰＵ１１０から読み出しの指示がなされた場合、リードデータＲＤａ_１と共にリードデータＲＤａ_１と関連付けられたエラー訂正コードＥＣＣを出力する。
【０１３０】
同様に、メモリ１４０_２は、アクセス制御回路１３０から出力されたライトデータＷＤｂ_２を格納し、アクセス制御回路１３０にリードデータＲＤａ_２を出力する。このとき、メモリ１４０_２は、ライトデータＷＤｂ_２に付加されたエラー訂正コードＥＣＣをライトデータＷＤｂ_２に関連付けて格納する。また、メモリ１４０_２は、ＣＰＵ１１０から読み出しの指示がなされた場合、リードデータＲＤａ_２と共にリードデータＲＤａ_２と関連付けられたエラー訂正コードＥＣＣを出力する。
【０１３１】
アクセス制御回路１３０は、メモリアービタ１２０から出力された拡張制御信号ＣＴＲＬ_ＥＸ、アドレス信号ＡＤＤａ、およびライトデータＷＤａを入力し、ＣＰＵ１１０にメモリアービタ１２０を介してリードデータＲＤａ_１、ＲＤａ_２を出力する。また、アクセス制御回路１３０は、メモリ１４０_１にライトデータＷＤｂ_１を書き込み、メモリ１４０_１からリードデータＲＤａ_１を読み出す。また、アクセス制御回路１３０は、メモリ１４０_２にライトデータＷＤｂ_２を書き込み、メモリ１４０_２からリードデータＲＤａ_２を読み出す。つまり、アクセス制御回路１３０は、メモリアービタ１２０から出力された拡張制御信号ＣＴＲＬ_ＥＸに基づき、ＣＰＵ１１０とメモリ１４０_１、１４０_２との間で行なわれるデータの送受信を制御する。
【０１３２】
図１９は、拡張制御信号ＣＴＲＬ_ＥＸとアクセス制御回路１３０の処理との関係を示す表である。アクセス制御信号ＣＴＲＬが"０００"であり、アドレス信号ＡＤＤａがメモリ１４０_１（ＲＡＭ_１）のアドレスである場合、モニタ回路１２１は拡張制御信号ＣＴＲＬ_ＥＸ（３ビットの信号）として"０００"を出力する。拡張制御信号ＣＴＲＬ_ＥＸが"０００"のとき、アクセス制御回路１３０はメモリ１４０_１（ＲＡＭ_１）からリードデータＲＤａ_１を読み出す処理を実行する。アクセス制御信号ＣＴＲＬが"００１"であり、アドレス信号ＡＤＤａがメモリ１４０_１（ＲＡＭ_１）のアドレスである場合、モニタ回路１２１は拡張制御信号ＣＴＲＬ_ＥＸとして"００１"を出力する。拡張制御信号ＣＴＲＬ_ＥＸが"００１"のとき、アクセス制御回路１３０はＣＰＵ１１０から出力されたライトデータＷＤｂ_１をメモリ１４０_１（ＲＡＭ_１）に書き込む処理を実行する。アクセス制御信号ＣＴＲＬが"０１０"であり、アドレス信号ＡＤＤａがメモリ１４０_１（ＲＡＭ_１）のアドレスである場合、モニタ回路１２１は拡張制御信号ＣＴＲＬ_ＥＸとして"０１０"を出力する。拡張制御信号ＣＴＲＬ_ＥＸが"０１０"のとき、アクセス制御回路１３０はＲＭＷ処理を実行する。自己診断制御回路１５０から出力されたアクセス制御信号ＣＴＲＬが"１１０"であり、アドレス信号ＡＤＤｂがメモリ１４０_１（ＲＡＭ_１）を示す場合、モニタ回路１２１は拡張制御信号ＣＴＲＬ_ＥＸとして"０１１"を出力する。拡張制御信号ＣＴＲＬ_ＥＸが"０１１"のとき、アクセス制御回路１３０はＲＭＷ回路１３２_１の自己診断を実行する。
【０１３３】
また、アクセス制御信号ＣＴＲＬが"０００"であり、アドレス信号ＡＤＤａがメモリ１４０_２（ＲＡＭ_２）のアドレスである場合、モニタ回路１２１は拡張制御信号ＣＴＲＬ_ＥＸとして"１００"を出力する。拡張制御信号ＣＴＲＬ_ＥＸが"１００"のとき、アクセス制御回路１３０はメモリ１４０_２（ＲＡＭ_２）からリードデータＲＤａ_２を読み出す処理を実行する。アクセス制御信号ＣＴＲＬが"００１"であり、アドレス信号ＡＤＤａがメモリ１４０_２（ＲＡＭ_２）のアドレスである場合、モニタ回路１２１は拡張制御信号ＣＴＲＬ_ＥＸとして"１０１"を出力する。拡張制御信号ＣＴＲＬ_ＥＸが"１０１"のとき、アクセス制御回路１３０はＣＰＵ１１０から出力されたライトデータＷＤｂ_２をメモリ１４０_２（ＲＡＭ_２）に書き込む処理を実行する。アクセス制御信号ＣＴＲＬが"０１０"であり、アドレス信号ＡＤＤａがメモリ１４０_２（ＲＡＭ_２）のアドレスである場合、モニタ回路１２１は拡張制御信号ＣＴＲＬ_ＥＸとして"１１０"を出力する。拡張制御信号ＣＴＲＬ_ＥＸが"１１０"のとき、アクセス制御回路１３０はＲＭＷ処理を実行する。自己診断制御回路１５０から出力されたアクセス制御信号ＣＴＲＬが"１１０"であり、アドレス信号ＡＤＤｂがメモリ１４０_２（ＲＡＭ_２）を示す場合、モニタ回路１２１は拡張制御信号ＣＴＲＬ_ＥＸとして"１１１"を出力する。拡張制御信号ＣＴＲＬ_ＥＸが"１１１"のとき、アクセス制御回路１３０はＲＭＷ回路１３２_１の自己診断を実行する。
【０１３４】
アクセス制御回路１３０は、自己診断用データ格納部（第１のデータ格納部）１３１、ＲＭＷ回路１３２_１、１３２_２、イネーブル信号生成回路１３８、判定部３９、およびセレクタＳＥＬ１１〜ＳＥＬ１５を備える。
【０１３５】
自己診断用データ格納部１３１は、自己診断時に用いる自己診断用データＳＣ_Ｄ（第１のデータ）を予め格納している。また、自己診断用データ格納部１３１は、セレクタＳＥＬ１２、ＳＥＬ１４に自己診断用データＳＣ_Ｄを出力する。例えば、自己診断用データ格納部１３１はレジスタを内蔵しており、このレジスタに自己診断用データＳＣ_Ｄを格納することができる。
【０１３６】
ＲＭＷ回路１３２_１、１３２_２は、リードモディファイライト処理を実行するための回路である。ＲＭＷ回路１３２_１は、ＥＣＣ回路１３３_１、１３４_１、１３６_１、およびＲＭＷ処理部１３５_１を備える。ＥＣＣ回路１３３_１、１３４_１はＥＣＣデコーダである。ＥＣＣ回路１３３_１は、ＣＰＵ１１０から出力されたモディファイデータＭＯＤ_Ｄ_１に含まれているエラー訂正コードＥＣＣを用いて、モディファイデータＭＯＤ_Ｄ_１のエラーを検出し訂正する。ＥＣＣ回路１３４_１は、セレクタＳＥＬ１２から出力された自己診断用データＳＣ_ＤまたはリードデータＲＤａ_１に含まれているエラー訂正コードＥＣＣを用いて、これらのデータ（ＳＣ_ＤまたはＲＤａ_１）のエラーを検出し訂正する。
【０１３７】
ＲＭＷ処理部１３５_１は、セレクタＳＥＬ１２で選択され、ＥＣＣ回路３４で処理された自己診断用データＳＣ_ＤまたはリードデータＲＤａ_１の一部を、ＥＣＣ回路１３３_１で処理されたモディファイデータＭＯＤ_Ｄ_１に基づいて修正し、修正後のデータ（出力データ）ＲＭＷ_Ｄ_１をＥＣＣ回路１３６_１に出力する。ＥＣＣ回路１３６_１はＥＣＣエンコーダであり、ＲＭＷ処理後の出力データＲＭＷ_Ｄ_１に対するエラー訂正コードＥＣＣを生成し、生成されたエラー訂正コードＥＣＣを出力データＲＭＷ_Ｄ_１に付加する。ＥＣＣ回路１３６_１で処理された出力データＲＭＷ_Ｄ_１は、セレクタＳＥＬ１１およびセレクタＳＥＬ１５に出力される。
【０１３８】
ＲＭＷ回路１３２_１は、拡張制御信号ＣＴＲＬ_ＥＸが通常のリードモディファイライト処理を示す場合（拡張制御信号ＣＴＲＬ_ＥＸ＝"０１０"）、メモリ１４０_１から読み出されたリードデータＲＤａ_１の一部をモディファイデータＭＯＤ_Ｄ_１で置き換えてリードモディファイライト処理を実行する。ここで、メモリ１４０_１から読み出されたリードデータＲＤａ_１は、セレクタＳＥＬ１２で選択されてＲＭＷ回路１３２_１に供給される。
【０１３９】
また、ＲＭＷ回路１３２_１は、拡張制御信号ＣＴＲＬ_ＥＸがＲＭＷ回路１３２_１の自己診断命令を示している場合（拡張制御信号ＣＴＲＬ_ＥＸ＝"１１１"）、自己診断用データ格納部１３１から出力された自己診断用データＳＣ_Ｄの一部をモディファイデータＭＯＤ_Ｄ_１で置き換えてリードモディファイライト処理を実行する。
【０１４０】
ＲＭＷ回路１３２_２は、ＥＣＣ回路１３３_２、１３４_２、１３６_２、およびＲＭＷ処理部１３５_２を備える。なお、ＲＭＷ回路１３２_２の構成および動作については、ＲＭＷ回路１３２_１の場合と同様であるので説明を省略する。
【０１４１】
イネーブル信号生成回路１３８は、拡張制御信号ＣＴＲＬ_ＥＸが自己診断命令を示す信号（"０１１"または"１１１"）である場合、イネーブル信号ＥＮ_１、ＥＮ_２として不活性状態を示す信号（例えば、ロウレベルの信号"０"）をメモリ１４０_１、１４０_２にそれぞれ出力する。ＣＰＵ１１０がメモリ１４０_１、１４０_２にアクセスする場合、ＣＰＵ１１０はメモリアービタ１２０を介してメモリ１４０_１、１４０_２にアドレス信号ＡＤＤａを出力する。しかし、ロウレベルのイネーブル信号ＥＮ_１がメモリ１４０_１に供給されると、メモリ１４０_１は供給されたアドレス信号ＡＤＤａを無効とする。同様に、ロウレベルのイネーブル信号ＥＮ_２がメモリ１４０_２に供給されると、メモリ１４０_２は供給されたアドレス信号ＡＤＤａを無効とする。このように、自己診断時にイネーブル信号生成回路１３８がロウレベルのイネーブル信号ＥＮ_１、ＥＮ_２を出力することで、自己診断時におけるＣＰＵ１１０からのメモリ１４０_１、１４０_２へのアクセスを無効とすることができる。
一方、イネーブル信号生成回路１３８は、アクセス制御信号ＣＴＲＬがリードデータの読み出し"０００"、"１００"、ライトデータの書き込み"００１"、"１０１"、およびＲＭＷ処理の実行"０１０"、"１１０"を示す場合、イネーブル信号ＥＮ_１、ＥＮ_２として活性状態を示す信号（例えば、ハイレベルの信号"１"）をメモリ１４０_１、１４０_２に出力する。この場合は、イネーブル信号ＥＮ_１、ＥＮ_２がハイレベルであるので、メモリ１４０_１、１４０_２に供給されたアドレス信号ＡＤＤａは有効として扱われる。
【０１４２】
セレクタＳＥＬ１１は、出力データＲＭＷ_Ｄ_１およびライトデータＷＤ_１のうちのいずれか一方を拡張制御信号ＣＴＲＬ_ＥＸに応じて選択し、選択されたデータをライトデータＷＤｂ_１として出力する。
【０１４３】
セレクタＳＥＬ１２は、自己診断用データ格納部１３１から出力された自己診断用データＳＣ_ＤおよびリードデータＲＤａ_１のうちのいずれか一方を拡張制御信号ＣＴＲＬ_ＥＸに応じて選択し、選択されたデータをＲＭＷ回路１３２_１に出力する。
【０１４４】
セレクタＳＥＬ１３は、出力データＲＭＷ_Ｄ_２およびライトデータＷＤ_２のうちのいずれか一方を拡張制御信号ＣＴＲＬ_ＥＸに応じて選択し、選択されたデータをライトデータＷＤｂ_２として出力する。
【０１４５】
セレクタＳＥＬ１４は、自己診断用データ格納部１３１から出力された自己診断用データＳＣ_ＤおよびリードデータＲＤａ_２のうちのいずれか一方を拡張制御信号ＣＴＲＬ_ＥＸに応じて選択し、選択されたデータをＲＭＷ回路１３２_２に出力する。
【０１４６】
セレクタＳＥＬ１５は、出力データＲＭＷ_Ｄ_１および出力データＲＭＷ_Ｄ_２のうちのいずれか一方を拡張制御信号ＣＴＲＬ_ＥＸに応じて選択し、選択されたデータを判定部３９に出力する。
【０１４７】
判定部３９は、セレクタＳＥＬ１５から出力された出力データ（ＲＭＷ_Ｄ_１またはＲＭＷ_Ｄ_２）と、判定部３９に予め格納されている期待値とを比較し、ＲＭＷ回路１３２_１、１３２_２の故障を診断する。なお、判定部３９の構成および動作は、図１２に示した判定部３９と同様である。
【０１４８】
次に、本実施の形態にかかるデータ処理装置の動作について説明する。
まず、通常時の動作について説明する。ＣＰＵ１１０がメモリ１４０_２からリードデータを読み出す場合、ＣＰＵ１１０はアクセス制御信号ＣＴＲＬ"０００"を出力する。また、ＣＰＵ１１０は、アドレス信号ＡＤＤａとして、リードデータが格納されているメモリ１４０_２のアドレスＡＤＤ_ｒｄ_２を出力する。モニタ回路１２１は、アクセス制御信号ＣＴＲＬが"０００"であり、アドレス信号ＡＤＤａがメモリ１４０_２のアドレスＡＤＤ_ｒｄ_２であるので、拡張制御信号ＣＴＲＬ_ＥＸとして"１００"を出力する。このとき、イネーブル信号生成回路１３８はハイレベルのイネーブル信号ＥＮ_２をメモリ１４０_２に出力する。メモリ１４０_２は、イネーブル信号ＥＮ_２がハイレベルであるので、アドレスＡＤＤ_ｒｄ_２に応じたリードデータＲＤａ_２（エラー訂正コードＥＣＣを含む）をセレクタＳＥＬ２２に出力する。セレクタＳＥＬ２２はリードデータＲＤａ_２を選択し、リードデータＲＤａ_２をリードデータＲＤｂとしてＣＰＵ１１０に出力する。ここで、リードデータＲＤｂは、セレクタＳＥＬ２２で選択されたデータを示しており、リードデータＲＤｂはリードデータＲＤａ_２と同一である。
【０１４９】
ＣＰＵ１１０がメモリ１４０_２にライトデータを書き込む場合、ＣＰＵ１１０はアクセス制御信号ＣＴＲＬ"００１"およびライトデータＷＤａ（エラー訂正コードＥＣＣを含む）を出力する。また、ＣＰＵ１１０はアドレス信号ＡＤＤａとしてライトデータの書き込み先のアドレスＡＤＤ_ｗｒ_２を出力する。モニタ回路１２１は、アクセス制御信号ＣＴＲＬが"００１"であり、アドレス信号ＡＤＤａがメモリ１４０_２のアドレスＡＤＤ_ｗｒ_２であるので、拡張制御信号ＣＴＲＬ_ＥＸとして"１０１"を出力する。このとき、イネーブル信号生成回路１３８はハイレベルのイネーブル信号ＥＮ_２をメモリ１４０_２に出力する。ＣＰＵ１１０から出力されたライトデータＷＤａは、セレクタＳＥＬ２１およびセレクタＳＥＬ１３で選択されて、ライトデータＷＤｂ_２としてメモリ１４０_２に出力される。ここで、ライトデータＷＤｂ_２は、セレクタＳＥＬ１３で選択されたデータを示しており、ライトデータＷＤｂ_２はライトデータＷＤａと同一である。メモリ１４０_２は、イネーブル信号ＥＮ_２がハイレベルであるので、アドレスＡＤＤ_ｗｒ_２に対応したアドレスにライトデータＷＤｂ_２（エラー訂正コードＥＣＣを含む）を書き込む。
【０１５０】
ＣＰＵ１１０がＲＭＷ処理を実行する場合、ＣＰＵ１１０はアクセス制御信号ＣＴＲＬ"０１０"を出力する。また、ＣＰＵ１１０は、ライトデータＷＤａとしてモディファイデータＭＯＤ_Ｄ_２（エラー訂正コードＥＣＣを含む）を、アドレス信号ＡＤＤａとしてＲＭＷ処理対象のデータが格納されているアドレスＡＤＤ_ｒｍｗ_２を出力する。モニタ回路１２１は、アクセス制御信号ＣＴＲＬが"０１０"であり、アドレス信号ＡＤＤａがメモリ１４０_２のアドレスＡＤＤ_ｒｍｗ_２であるので、拡張制御信号ＣＴＲＬ_ＥＸとして"１１０"を出力する。このとき、イネーブル信号生成回路１３８はハイレベルのイネーブル信号ＥＮ_２をメモリ１４０_２に出力する。メモリ１４０_２は、イネーブル信号ＥＮ_２がハイレベルであるので、アドレスＡＤＤ_ｒｍｗ_２に応じたリードデータＲＤａ_２（エラー訂正コードＥＣＣを含む）をセレクタＳＥＬ１４に出力する。セレクタＳＥＬ１４は、拡張制御信号ＣＴＲＬ_ＥＸが"１１０"であるのでリードデータＲＤａ_２を選択し、ＲＭＷ回路１３２_２に出力する。ＲＭＷ回路１３２_２は、リードデータＲＤａ_２の一部をモディファイデータＭＯＤ_Ｄ_２に基づいて修正し、修正後のデータ（出力データ）ＲＭＷ_Ｄ_２を出力する。セレクタＳＥＬ１３は、拡張制御信号ＣＴＲＬ_ＥＸが"１１０"であるのでＲＭＷ回路１３２_２の出力データＲＭＷ_Ｄ_２を選択し、選択した出力データＲＭＷ_Ｄ_２をメモリ１４０_２に出力する。メモリ１４０_２は、イネーブル信号ＥＮ_２がハイレベルであるので、アドレスＡＤＤ_ｒｍｗ_２に対応したアドレスに出力データＲＭＷ_Ｄ_２（エラー訂正コードＥＣＣを含む）を書き込む。
【０１５１】
なお、ＣＰＵ１１０がメモリ１４０_１からリードデータを読み出す場合、ＣＰＵ１１０がメモリ１４０_１にライトデータを書き込む場合、ＣＰＵ１１０がメモリ１４０_１に格納されているデータにＲＭＷ処理を実行する場合の動作も上記で説明した動作と基本的に同様である。
【０１５２】
次に、本実施の形態にかかるデータ処理装置の自己診断時の動作について説明する。
図２０は、本実施の形態にかかるデータ処理装置の自己診断時の動作を説明するためのフローチャートである。まず、モニタ回路１２１は、ＣＰＵ１１０からアクセス制御信号ＣＴＲＬとして通常のＲＭＷ処理を命令する信号（"０１０"）が出力された場合、ＣＰＵ１１０から出力されたアドレス信号ＡＤＤａがメモリ１４０_１およびメモリ１４０_２のどちらのアドレスであるかを自己診断制御回路１５０に通知する（ステップＳ５１）。
【０１５３】
自己診断制御回路１５０は、ＲＭＷ処理が実行されたこと及びＲＭＷ処理が実行されたメモリのアドレスを示すモニタ信号ＭＮＴが供給された場合、自己診断を命令するアクセス制御信号ＣＴＲＬ"１１０"および自己診断を実行するＲＭＷ回路のアドレス信号ＡＤＤｂをモニタ回路１２１に出力する。このとき、自己診断制御回路１５０はモディファイデータＭＯＤ_Ｄ（自己診断用）をセレクタＳＥＬ２１に出力する。これにより、ＲＭＷ回路（１３２_１または１３２_２）の自己診断が実行される（ステップＳ５２）。
【０１５４】
その後、ＲＭＷ回路（１３２_１または１３２_２）はＲＭＷ処理後の出力データ（ＲＭＷ_Ｄ_１またはＲＭＷ_Ｄ_２）を判定部３９に出力する（ステップＳ５３）。そして、判定部３９において出力データ（ＲＭＷ_Ｄ_１またはＲＭＷ_Ｄ_２）と期待値とを比較する（ステップＳ５４）。出力データ（ＲＭＷ_Ｄ_１またはＲＭＷ_Ｄ_２）と期待値とが一致する場合（ステップＳ５５：Ｙｅｓ）、ＲＭＷ回路は正常であると判定される（ステップＳ５６）。一方、出力データ（ＲＭＷ_Ｄ_１またはＲＭＷ_Ｄ_２）と期待値とが不一致の場合（ステップＳ５５：Ｎｏ）、ＲＭＷ回路は故障と判定される（ステップＳ５７）。
【０１５５】
次に、本実施の形態にかかるデータ処理装置の自己診断時の動作について、図２１に示すタイミングチャートを用いて詳細に説明する。まず、ＣＰＵ１１０はタイミングｔ３１において、アクセス制御信号ＣＴＲＬとして通常のＲＭＷ処理を命令する信号（"０１０"）を、アドレス信号ＡＤＤａとしてメモリ１４０_２のアドレスＲＡＭ２_ａｄｄ１を出力する。また、ＣＰＵ１１０はライトデータＷＤａとして、通常のＲＭＷ処理で用いるモディファイデータＭＯＤ_Ｄ_Ｎを出力する。
【０１５６】
モニタ回路１２１は、ＣＰＵ１１０からアクセス制御信号ＣＴＲＬ（"０１０"）およびメモリ１４０_２のアドレスＲＡＭ２_ａｄｄ１が出力されたので、自己診断制御回路１５０にモニタ信号ＭＮＴを出力する。このとき、モニタ信号ＭＮＴには、ＣＰＵ１１０が出力したアドレス信号ＡＤＤａに関する情報（ＲＡＭ２）が含まれている。
【０１５７】
また、モニタ回路１２１は、アクセス制御信号ＣＴＲＬが"０１０"であり、アドレス信号ＡＤＤａがメモリ１４０_２のアドレスであるので、拡張制御信号ＣＴＲＬ_ＥＸとして"１１０"（ＲＭＷ処理命令）を出力する。このとき、イネーブル信号生成回路１３８はハイレベルのイネーブル信号ＥＮ_２をメモリ１４０_２に出力する。メモリ１４０_２は、イネーブル信号ＥＮ_２がハイレベルであるので、アドレスＲＡＭ２_ａｄｄ１に応じたリードデータＲＤａ_２をセレクタＳＥＬ１４に出力する。セレクタＳＥＬ１４は、拡張制御信号ＣＴＲＬ_ＥＸが"１１０"であるのでリードデータＲＤａ_２を選択し、ＲＭＷ回路１３２_２に出力する。ＲＭＷ回路１３２_２は、リードデータＲＤａ_２の一部をモディファイデータＭＯＤ_Ｄ_Ｎに基づいて修正し、修正後のデータ（出力データ）ＲＭＷ_Ｄ_２_Ｎを出力する。セレクタＳＥＬ１３は、拡張制御信号ＣＴＲＬ_ＥＸが"１１０"であるのでＲＭＷ回路１３２_２の出力データＲＭＷ_Ｄ_２_Ｎを選択し、選択した出力データＲＭＷ_Ｄ_２_Ｎをメモリ１４０_２に出力する。メモリ１４０_２は、イネーブル信号ＥＮ_２がハイレベルであるので、アドレスＲＡＭ２_ａｄｄ１に対応したアドレスに出力データＲＭＷ_Ｄ_２_Ｎを書き込む。
【０１５８】
また、タイミングｔ３１において、自己診断制御回路１５０には、ＲＭＷ処理が実行されたこと及びＲＭＷ処理が実行されたメモリに関する情報を含むモニタ信号ＭＮＴが供給される。よって、タイミングｔ３２において、自己診断制御回路１５０は、自己診断を命令するアクセス制御信号ＣＴＲＬとして"１１０"を、自己診断を実施するＲＭＷ回路に関するアドレス信号ＡＤＤｂとして"ＲＡＭ２"をそれぞれ、モニタ回路１２１に出力する。このとき、自己診断制御回路１５０はモディファイデータＭＯＤ_Ｄとして"ＭＯＤ_Ｄ_ＳＣ"を出力する。また、モニタ回路１２１は、アクセス制御信号ＣＴＲＬが"１１０"であり、アドレス信号ＡＤＤｂがメモリ１４０_２のアドレスであるので、拡張制御信号ＣＴＲＬ_ＥＸとして"１１１"（ＲＭＷ回路の自己診断命令）を出力する。このとき、ネーブル信号生成回路１３８は、拡張制御信号ＣＴＲＬ_ＥＸが自己診断命令を示す信号であるので、イネーブル信号ＥＮ_２としてロウレベルの信号をメモリ１４０_２に出力する。ロウレベルのイネーブル信号ＥＮ_２がメモリ１４０_２に供給されると、メモリ１４０_２は供給されたアドレス信号ＡＤＤａを無効とする。これにより、自己診断時におけるＣＰＵ１１０からのメモリ１４０_２へのアクセスを無効とすることができる。
【０１５９】
また、タイミングｔ３２において、セレクタＳＥＬ１４は自己診断用データ格納部１３１から出力された自己診断用データＳＣ_Ｄを選択している。よって、ＲＭＷ回路１３２_２には、自己診断用データＳＣ_Ｄが供給される。また、セレクタＳＥＬ２１は、モディファイデータＭＯＤ_Ｄ_ＳＣを選択しているので、ＲＭＷ回路１３２_２には、モディファイデータＭＯＤ_Ｄ_ＳＣが供給される。ＲＭＷ回路１３２_２は、自己診断用データＳＣ_Ｄの一部をモディファイデータＭＯＤ_Ｄ_ＳＣに基づいて修正し、修正後のデータ（出力データ）ＲＭＷ_Ｄ_２_ＳＣを出力する。このとき、セレクタＳＥＬ１５は、ＲＭＷ回路１３２_２の出力データＲＭＷ_Ｄ_２_ＳＣを選択し、判定部３９に出力する。
【０１６０】
タイミングｔ３２において、判定部３９のセレクタＳＥＬ６（図１２参照）は入力パスを選択している。よって、タイミングｔ３３において、判定部３９のフリップフロップＦＦ３に出力データＲＭＷ_Ｄ_２_ＳＣが格納される。また、タイミングｔ３３において、有効ビットｖａｌ_ｂｉｔ"１"が出力されて、比較器５２において出力データＲＭＷ_Ｄ_２_ＳＣと期待値ＥＸＰとが比較される。そして、比較器５２は出力データＲＭＷ_Ｄ_２_ＳＣと期待値ＥＸＰとが一致する場合は、エラーフラグＥＲＲ_ＦＬＧとして"０"を出力する。一方、出力データＲＭＷ_Ｄ_２_ＳＣと期待値ＥＸＰとが一致しない場合は、エラーフラグＥＲＲ_ＦＬＧとして"１"を出力する。その後、タイミングｔ３４において、アクセス制御信号が"１１０"以外となり、自己診断処理が終了する。
【０１６１】
上記で説明したように、本実施の形態にかかるデータ処理装置では、自己診断時に用いる自己診断用データを自己診断用データ格納部１３１に格納し、自己診断用データ格納部１３１に格納されている自己診断用データとモディファイデータとを用いてリードモディファイライト処理を実行し、リードモディファイライト処理を実行した後の出力データと期待値とを判定部３９において比較することで、リードモディファイライト回路１３２_１、１３２_２の故障を診断している。
【０１６２】
よって、リードモディファイライト回路の自己診断の信頼性を向上させることができる。また、リードモディファイライト回路を二重化することなく、リードモディファイライト回路の自己診断を行うことができる。また、本実施の形態にかかるデータ処理装置では、ＣＰＵ１１０から出力されたアクセス制御信号ＣＴＲＬを監視するモニタ回路１２１と、モニタ回路１２１のモニタ結果に応じて自己診断を制御する自己診断制御回路１５０を備えているので、通常のＲＭＷ処理が実行された際に自動的にＲＭＷ回路１３２_１、１３２_２の自己診断を行うことができる。更に、本実施の形態にかかるデータ処理装置では、モニタ回路１２１において拡張制御信号ＣＴＲＬ_ＥＸを生成しているので、データ処理装置が複数のメモリ１４０_１、１４０_２を備えている場合であっても、複雑な回路を設けることなくＲＭＷ回路１３２_１、１３２_２の自己診断を行うことができる。なお、本実施の形態にかかるデータ処理装置では、２つのメモリ１４０_１、１４０_２を備えている場合について説明したが、データ処理装置は３つ以上のメモリを備えていてもよい。
【０１６３】
以上で説明した本実施の形態にかかる発明により、リードモディファイライト回路の自己診断の信頼性を向上させることができるデータ処理装置およびデータ処理装置の自己診断方法を提供することができる。
【０１６４】
＜実施の形態６＞
次に、本発明の実施の形態６について説明する。図２２は、本実施の形態にかかるデータ処理装置を示すブロック図である。図２２に示すように、本実施の形態にかかるデータ処理装置は、ＣＰＵ１１０、メモリアービタ１２０、アクセス制御回路１６０、メモリ１７０_１、１７０_２、および自己診断制御回路１５０を有する。なお、データ処理装置を構成するＣＰＵ１１０、メモリアービタ１２０、アクセス制御回路１６０、メモリ１７０_１、１７０_２、および自己診断制御回路１５０には、クロック生成回路から共通のクロック信号ＣＬＫが供給されている。
【０１６５】
本実施の形態にかかるデータ処理装置は、実施の形態３にかかるデータ処理装置（図１４参照）と実施の形態５にかかるデータ処理装置（図１８参照）とを組み合わせた構成である。ＣＰＵ１１０、メモリアービタ１２０、および自己診断制御回路１５０については、実施の形態５にかかるデータ処理装置（図１８参照）が備えるＣＰＵ１１０、メモリアービタ１２０、および自己診断制御回路１５０と同様であるので重複した説明は省略する。また、メモリ１７０_１、１７１_２については、実施の形態３にかかるデータ処理装置（図１４参照）が備えるメモリ７０と同様であるので重複した説明は省略する。
【０１６６】
アクセス制御回路１６０は、メモリアービタ１２０から出力された拡張制御信号ＣＴＲＬ_ＥＸ、アドレス信号ＡＤＤａ、およびライトデータＷＤａを入力し、ＣＰＵ１１０にメモリアービタ１２０を介してリードデータＲＤａ_１、ＲＤａ_２を出力する。また、アクセス制御回路１６０は、メモリ１７０_１にライトデータＷＤｂ_１を書き込み、メモリ１７０_１からリードデータＲＤａ_１を読み出す。また、アクセス制御回路１６０は、メモリ１７０_２にライトデータＷＤｂ_２を書き込み、メモリ１７０_２からリードデータＲＤａ_２を読み出す。つまり、アクセス制御回路１６０は、メモリアービタ１２０から出力された拡張制御信号ＣＴＲＬ_ＥＸに基づき、ＣＰＵ１１０とメモリ１７０_１、１７０_２との間で行なわれるデータの送受信を制御する。
【０１６７】
アクセス制御回路１６０は、ＲＭＷ回路１３２_１、１３２_２、イネーブル信号生成回路１６８、およびセレクタＳＥＬ２３〜ＳＥＬ２５を備える。ＲＭＷ回路１３２_１、１３２_２については、実施の形態５にかかるデータ処理装置が備えるＲＭＷ回路１３２_１、１３２_２と同様であるので重複した説明は省略する。
【０１６８】
イネーブル信号生成回路１６８は、拡張制御信号ＣＴＲＬ_ＥＸとアドレス信号ＡＤＤａとに応じて、メモリ１７０_１、１７０_２へのアクセスを有効／無効とするイネーブル信号ＥＮ_１、ＥＮ_２を生成する。具体的には、拡張制御信号ＣＴＲＬ_ＥＸが自己診断命令を示す拡張制御信号ＣＴＲＬ_ＥＸであり（つまり、拡張制御信号ＣＴＲＬ_ＥＸが"０１１"または"１１１"）、且つ、アドレス信号ＡＤＤａがメモリ１７０_１、１７０_２の自己診断用データ領域１７３_１、１７３_２に対応したアドレスである場合、イネーブル信号生成回路１６８はハイレベルのイネーブル信号ＥＮ_１、ＥＮ_２をメモリ１７０_１、１７０_２に出力する。例えば、イネーブル信号ＥＮ_１がハイレベルである場合、メモリ１７０_１に供給されたアドレス信号ＡＤＤａは有効として扱われる。つまり、メモリ１７０_１の自己診断用データ領域１７３_１へのアクセスが許可される。また、例えば、イネーブル信号ＥＮ_２がハイレベルである場合、メモリ１７０_２に供給されたアドレス信号ＡＤＤａは有効として扱われる。つまり、メモリ１７０_２の自己診断用データ領域１７３_２へのアクセスが許可される。
一方、拡張制御信号ＣＴＲＬ_ＥＸが"０１１"または"１１１"であり、且つ、アドレス信号ＡＤＤａがメモリ１７０_１、１７０_２の通常データ領域１７２_１、１７２_２のアドレスである場合、イネーブル信号生成回路１６８はロウレベルのイネーブル信号ＥＮ_１、ＥＮ_２をメモリ１７０_１、１７０_２に出力する。例えば、イネーブル信号ＥＮ_１がロウレベルである場合、メモリ１７０_１に供給されたアドレス信号ＡＤＤａは無効として扱われる。つまり、メモリ１７０_１の通常データ領域１７２_１へのアクセスが禁止される。また、例えば、イネーブル信号ＥＮ_２がロウレベルである場合、メモリ１７０_２に供給されたアドレス信号ＡＤＤａは無効として扱われる。つまり、メモリ１７０_２の通常データ領域１７２_２へのアクセスが禁止される。
【０１６９】
また、拡張制御信号ＣＴＲＬ_ＥＸが通常のアクセスを示す拡張制御信号ＣＴＲＬ_ＥＸであり（つまり、拡張制御信号ＣＴＲＬ_ＥＸが"０１１"または"１１１"以外であり）、且つ、アドレス信号ＡＤＤａがメモリ１７０_１、１７０_２の自己診断用データ領域１７３_１、１７３_２に対応したアドレスである場合、イネーブル信号生成回路１６８はロウレベルのイネーブル信号ＥＮ_１、ＥＮ_２をメモリ１７０_１、１７０_２に出力する。例えば、イネーブル信号ＥＮ_１がロウレベルである場合、メモリ１７０_１に供給されたアドレス信号ＡＤＤａは無効として扱われる。つまり、メモリ１７０_１の自己診断用データ領域１７３_１へのアクセスが禁止される。また、例えば、イネーブル信号ＥＮ_２がロウレベルである場合、メモリ１７０_２に供給されたアドレス信号ＡＤＤａは無効として扱われる。つまり、メモリ１７０_２の自己診断用データ領域１７３_２へのアクセスが禁止される。
一方、拡張制御信号ＣＴＲＬ_ＥＸが"０１１"または"１１１"以外であり、且つ、アドレス信号ＡＤＤａがメモリ１７０_１、１７０_２の通常データ領域１７２_１、１７２_２のアドレスである場合、イネーブル信号生成回路１６８はハイレベルのイネーブル信号ＥＮ_１、ＥＮ_２をメモリ１７０_１、１７０_２に出力する。例えば、イネーブル信号ＥＮ_１がハイレベルである場合、メモリ１７０_１に供給されたアドレス信号ＡＤＤａは有効として扱われる。つまり、メモリ１７０_１の通常データ領域１７２_１へのアクセスが許可される。また、例えば、イネーブル信号ＥＮ_２がハイレベルである場合、メモリ１７０_２に供給されたアドレス信号ＡＤＤａは有効として扱われる。つまり、メモリ１７０_２の通常データ領域１７２_２へのアクセスが許可される。
【０１７０】
イネーブル信号生成回路１６８には、通常データ領域１７２_１、１７２_２に対応するアドレスおよび自己診断用データ領域１７３_１、１７３_２に対応するアドレスに関する情報が格納されている。
【０１７１】
セレクタＳＥＬ２３は、出力データＲＭＷ_Ｄ_１およびライトデータＷＤ_１のうちのいずれか一方を拡張制御信号ＣＴＲＬ_ＥＸに応じて選択し、選択されたデータをライトデータＷＤｂ_１として出力する。セレクタＳＥＬ２４は、出力データＲＭＷ_Ｄ_２およびライトデータＷＤ_２のうちのいずれか一方を拡張制御信号ＣＴＲＬ_ＥＸに応じて選択し、選択されたデータをライトデータＷＤｂ_２として出力する。セレクタＳＥＬ２５は、出力データＲＭＷ_Ｄ_１および出力データＲＭＷ_Ｄ_２のうちのいずれか一方を拡張制御信号ＣＴＲＬ_ＥＸに応じて選択し、選択されたデータを判定部３９に出力する。
【０１７２】
次に、本実施の形態にかかるデータ処理装置の動作について説明する。
まず、通常時の動作について説明する。ＣＰＵ１１０がメモリ１７０_２からリードデータを読み出す場合、ＣＰＵ１１０はアクセス制御信号ＣＴＲＬ"０００"を出力する。また、ＣＰＵ１１０は、アドレス信号ＡＤＤａとして、リードデータが格納されているメモリ１７０_２のアドレスＡＤＤ_ｒｄ_２（通常データ領域１７２_２に対応するアドレス）を出力する。モニタ回路１２１は、アクセス制御信号ＣＴＲＬが"０００"であり、アドレス信号ＡＤＤａがメモリ１７０_２のアドレスＡＤＤ_ｒｄ_２であるので、拡張制御信号ＣＴＲＬ_ＥＸとして"１００"を出力する。このとき、イネーブル信号生成回路１６８は、拡張制御信号ＣＴＲＬ_ＥＸが"０１１"または"１１１"以外であり、且つ、アドレスＡＤＤ_ｒｄ_２が通常データ領域１７２_２のアドレスであるので、ハイレベルのイネーブル信号ＥＮ_２をメモリ１７０_２に出力する。メモリ１７０_２は、イネーブル信号ＥＮ_２がハイレベルであるのでアドレスＡＤＤ_ｒｄ_２を有効として扱い、アドレスＡＤＤ_ｒｄ_２に応じたリードデータＲＤａ_２（エラー訂正コードＥＣＣを含む）をセレクタＳＥＬ２２に出力する。セレクタＳＥＬ２２はリードデータＲＤａ_２を選択し、リードデータＲＤａ_２をリードデータＲＤｂとしてＣＰＵ１１０に出力する。ここで、リードデータＲＤｂは、セレクタＳＥＬ２２で選択されたデータを示しており、リードデータＲＤｂはリードデータＲＤａ_２と同一である。
【０１７３】
ＣＰＵ１１０がメモリ１７０_２にライトデータを書き込む場合、ＣＰＵ１１０はアクセス制御信号ＣＴＲＬ"００１"およびライトデータＷＤａ（エラー訂正コードＥＣＣを含む）を出力する。また、ＣＰＵ１１０はアドレス信号ＡＤＤａとしてライトデータの書き込み先のアドレスＡＤＤ_ｗｒ_２（通常データ領域１７２_２に対応するアドレス）を出力する。モニタ回路１２１は、アクセス制御信号ＣＴＲＬが"００１"であり、アドレス信号ＡＤＤａがメモリ１７０_２のアドレスＡＤＤ_ｗｒ_２であるので、拡張制御信号ＣＴＲＬ_ＥＸとして"１０１"を出力する。このとき、イネーブル信号生成回路１６８は、拡張制御信号ＣＴＲＬ_ＥＸが"０１１"または"１１１"以外であり、且つ、アドレスＡＤＤ_ｗｒ_２が通常データ領域１７２_２のアドレスであるので、ハイレベルのイネーブル信号ＥＮ_２をメモリ１７０_２に出力する。ＣＰＵ１１０から出力されたライトデータＷＤａは、セレクタＳＥＬ２１およびセレクタＳＥＬ２４で選択されて、ライトデータＷＤｂ_２としてメモリ１７０_２に出力される。ここで、ライトデータＷＤｂ_２は、セレクタＳＥＬ２４で選択されたデータを示しており、ライトデータＷＤｂ_２はライトデータＷＤａと同一である。メモリ１７０_２は、イネーブル信号ＥＮ_２がハイレベルであるのでアドレスＡＤＤ_ｗｒ_２を有効として扱い、アドレスＡＤＤ_ｗｒ_２に対応したアドレスにライトデータＷＤｂ_２（エラー訂正コードＥＣＣを含む）を書き込む。
【０１７４】
ＣＰＵ１１０がＲＭＷ処理を実行する場合、ＣＰＵ１１０はアクセス制御信号ＣＴＲＬ"０１０"を出力する。また、ＣＰＵ１１０は、ライトデータＷＤａとしてモディファイデータＭＯＤ_Ｄ_２（エラー訂正コードＥＣＣを含む）を、アドレス信号ＡＤＤａとしてＲＭＷ処理対象のデータが格納されているアドレスＡＤＤ_ｒｍｗ_２（通常データ領域１７２_２に対応するアドレス）を出力する。モニタ回路１２１は、アクセス制御信号ＣＴＲＬが"０１０"であり、アドレス信号ＡＤＤａがメモリ１７０_２のアドレスＡＤＤ_ｒｍｗ_２であるので、拡張制御信号ＣＴＲＬ_ＥＸとして"１１０"を出力する。このとき、イネーブル信号生成回路１６８は、拡張制御信号ＣＴＲＬ_ＥＸが"０１１"または"１１１"以外であり、且つ、アドレスＡＤＤ_ｒｍｗ_２が通常データ領域１７２_２のアドレスであるので、ハイレベルのイネーブル信号ＥＮ_２をメモリ１７０_２に出力する。メモリ１７０_２は、イネーブル信号ＥＮ_２がハイレベルであるのでアドレスＡＤＤ_ｒｍｗ_２を有効として扱い、アドレスＡＤＤ_ｒｍｗ_２に応じたリードデータＲＤａ_２（エラー訂正コードＥＣＣを含む）をＲＭＷ回路１３２_２に出力する。ＲＭＷ回路１３２_２は、リードデータＲＤａ_２の一部をモディファイデータＭＯＤ_Ｄ_２に基づいて修正し、修正後のデータ（出力データ）ＲＭＷ_Ｄ_２を出力する。セレクタＳＥＬ２４は、拡張制御信号ＣＴＲＬ_ＥＸが"１１０"であるのでＲＭＷ回路１３２_２の出力データＲＭＷ_Ｄ_２を選択し、選択した出力データＲＭＷ_Ｄ_２をメモリ１７０_２に出力する。メモリ１７０_２は、アドレスＡＤＤ_ｒｍｗ_２に対応したアドレスに出力データＲＭＷ_Ｄ_２（エラー訂正コードＥＣＣを含む）を書き込む。
【０１７５】
次に、本実施の形態にかかるデータ処理装置の自己診断時の動作について説明する。
図２３は、本実施の形態にかかるデータ処理装置の自己診断時の動作を説明するためのフローチャートである。以下では、メモリ１７０_２において自己診断が実行される場合を例として説明する。
【０１７６】
まず、ＣＰＵ１１０はメモリ１７０_２の自己診断用データ領域１７３_２に自己診断用データを出力する（ステップＳ６１）。このとき、ＣＰＵ１１０はアクセス制御信号"１０１"を出力する。また、ＣＰＵ１１０はライトデータＷＤａとして自己診断用データＳＣ_Ｄを、また、アドレス信号ＡＤＤとして、自己診断用データＳＣ_Ｄを格納するアドレスＡＤＤ_ｓｃ_２（自己診断用データ領域１７３_２に対応するアドレス）をそれぞれ出力する。
【０１７７】
モニタ回路１２１は、アクセス制御信号ＣＴＲＬが"１０１"であり、アドレス信号ＡＤＤａがメモリ１７０_２のアドレスＡＤＤ_ｓｃ_２であるので、拡張制御信号ＣＴＲＬ_ＥＸとして"１００１"（４ビットの信号）を出力する。ここで、拡張制御信号ＣＴＲＬ_ＥＸ"１００１"は、メモリ１７０_２に自己診断用データを書き込む際の制御信号である。なお、メモリ１７０_１に自己診断用データを書き込む際の拡張制御信号ＣＴＲＬ_ＥＸは、例えば"１０００"（４ビットの信号）とする。
【０１７８】
このとき、イネーブル信号生成回路１６８は、拡張制御信号ＣＴＲＬ_ＥＸが自己診断用データの格納を命令する"１００１"であり、また、アドレスＡＤＤ_ｓｃ_２が自己診断用データ領域１７３_２のアドレスであるので、ハイレベルのイネーブル信号ＥＮ_２をメモリ１７０_２に出力する。ＣＰＵ１１０から出力された自己診断用データＳＣ_Ｄは、セレクタＳＥＬ２１およびセレクタＳＥＬ２４で選択されて、メモリ１７０_２に出力される。メモリ１７０_２は、イネーブル信号ＥＮ_２がハイレベルであるのでアドレスＡＤＤ_ｓｃ_２を有効として扱い、自己診断用データ領域１７３_２のアドレスＡＤＤ_ｓｃ_２に対応したアドレスに自己診断用データＳＣ_Ｄ（エラー訂正コードＥＣＣを含む）を書き込む。
【０１７９】
自己診断制御回路１５０は、ＲＭＷ処理が実行されたこと及びＲＭＷ処理が実行されたメモリのアドレスを示すモニタ信号ＭＮＴが供給された場合、自己診断を命令するアクセス制御信号ＣＴＲＬ"１１０"および自己診断を実行するＲＭＷ回路のアドレス信号ＡＤＤｂをモニタ回路１２１に出力する（ステップＳ６２）。このとき、自己診断制御回路１５０はモディファイデータＭＯＤ_Ｄ（自己診断用）をセレクタＳＥＬ２１に出力する。これにより、ＲＭＷ回路１３２_２の自己診断が実行される（ステップＳ６３）。ＲＭＷ回路１３２_２における自己診断については、実施の形態５で説明した場合と同様である。
【０１８０】
その後、ＲＭＷ回路１３２_２はＲＭＷ処理後の出力データＲＭＷ_Ｄ_２を判定部３９に出力する（ステップＳ６４）。そして、判定部３９において出力データＲＭＷ_Ｄ_２と期待値とを比較する（ステップＳ６５）。出力データＲＭＷ_Ｄ_２と期待値とが一致する場合（ステップＳ６６：Ｙｅｓ）、ＲＭＷ回路１３２_２は正常であると判定される（ステップＳ６７）。一方、出力データＲＭＷ_Ｄ_２と期待値とが不一致の場合（ステップＳ６６：Ｎｏ）、ＲＭＷ回路１３２_２は故障と判定される（ステップＳ６８）。なお、判定部３９における処理の詳細については、実施の形態５で説明した場合と同様である。
【０１８１】
上記で説明したように、本実施の形態にかかるデータ処理装置では、自己診断時に用いる自己診断用データをメモリ１７０_１、１７０_２の自己診断用データ領域１７３_１、１７３_２に格納し、この自己診断用データとモディファイデータとを用いてリードモディファイライト処理を実行し、リードモディファイライト処理を実行した後の出力データと期待値とを判定部３９において比較することで、リードモディファイライト回路１３２_１、１３２_２の故障を診断している。
【０１８２】
よって、リードモディファイライト回路の自己診断の信頼性を向上させることができる。また、リードモディファイライト回路を二重化することなく、リードモディファイライト回路の自己診断を行うことができる。また、本実施の形態にかかるデータ処理装置では、ＣＰＵ１１０から出力されたアクセス制御信号ＣＴＲＬを監視するモニタ回路１２１と、モニタ回路１２１のモニタ結果に応じて自己診断を制御する自己診断制御回路１５０を備えているので、通常のＲＭＷ処理が実行された際に自動的にＲＭＷ回路１３２_１、１３２_２の自己診断を行うことができる。更に、本実施の形態にかかるデータ処理装置では、モニタ回路１２１において拡張制御信号ＣＴＲＬ_ＥＸを生成しているので、データ処理装置が複数のメモリ１７０_１、１７０_２を備えている場合であっても、複雑な回路を設けることなくＲＭＷ回路１３２_１、１３２_２の自己診断を行うことができる。なお、本実施の形態にかかるデータ処理装置では、２つのメモリ１７０_１、１７０_２を備えている場合について説明したが、データ処理装置は３つ以上のメモリを備えていてもよい。
【０１８３】
なお、本実施の形態では、ＣＰＵ１１０から自己診断用データＳＣ_Ｄを出力してメモリ１７０_１、１７０_２の自己診断用データ領域１７３_１、１７３_２に書き込む場合（図２３のステップＳ６１）について説明した。しかし、自己診断用データＳＣ_Ｄはメモリ１７０_１、１７０_２の自己診断用データ領域１７３_１、１７３_２に予め格納しておいてもよい。この場合、図２３のステップＳ６１は省略することができる。
【０１８４】
また、本実施の形態では、判定部３９において出力データ（ＲＭＷ_Ｄ_１またはＲＭＷ_Ｄ_２）と期待値とを比較することで、ＲＭＷ回路１３２_１、１３２_２の故障の判定を行なう場合を例として説明した。しかし、ＲＭＷ回路１３２_１、１３２_２の故障の判定は、ＣＰＵ１０において実施してもよい。この場合、例えば実施の形態３で説明した場合と同様に、出力データＲＭＷ_Ｄ_１、ＲＭＷ_Ｄ_２をメモリ１７０_１、１７０_２の自己診断用データ領域１７３_１、１７３_２に一時的に格納し、その後、ＣＰＵ１１０に出力データＲＭＷ_Ｄ_１、ＲＭＷ_Ｄ_２を出力するようにしてもよい。
【０１８５】
以上で説明した本実施の形態にかかる発明により、リードモディファイライト回路の自己診断の信頼性を向上させることができるデータ処理装置およびデータ処理装置の自己診断方法を提供することができる。
【０１８６】
＜実施の形態７＞
次に、本発明の実施の形態７について説明する。実施の形態７では、図１に示したモード制御部５が、データ処理装置の診断モードを切り替える場合について説明する。本実施の形態にかかる発明は、上記で説明した実施の形態１乃至６にかかるデータ処理装置に適用することができる。以下では、例として本実施の形態にかかる発明を実施の形態１にかかるデータ処理装置に適用した場合について説明する。なお、本実施の形態にかかるデータ処理装置は、モード制御部５が診断モードを切り替える点以外は、実施の形態１にかかるデータ処理装置と同様であるので重複した説明は省略する。
【０１８７】
図２４は、本実施の形態にかかるデータ処理装置の動作を説明するためのフローチャートである。診断モードが通常モードである場合（ステップＳ７１）、データ処理装置のＣＰＵ１０は自己診断を実行することなく所定のプログラムを実行する。そして、モード制御部５が自己診断モードに遷移すると（ステップＳ７２）、ＣＰＵ１０は自己診断命令を示すアクセス制御信号ＣＴＲＬを出力する（ステップＳ７３）。アクセス制御回路３０は、自己診断命令を示すアクセス制御信号ＣＴＲＬが出力されるとＲＭＷ回路３２の自己診断を実行する（ステップＳ７４）。そして、ＣＰＵ１０が備える判定部においてＲＭＷ処理後の出力データと期待値とを比較する。判定部は、ＲＭＷ処理後の出力データと期待値とが一致する場合、ＲＭＷ回路３２が正常である判定する（ステップＳ７５：Ｎｏ）。ＲＭＷ回路３２が正常であると判定された場合、モード制御部５は通常モードに遷移する（ステップＳ７６）。その後、データ処理装置のＣＰＵ１０は自己診断を実行することなく所定のプログラムを実行する（ステップＳ７１）。
【０１８８】
一方、判定部は、ＲＭＷ処理後の出力データと期待値とが一致しない場合、エラーと判定する（ステップＳ７５：Ｙｅｓ）。このとき、ＣＰＵ１０はＥＭＵ６にエラー信号を出力してエラーを通知する（ステップＳ７７）。エラー信号を受信したＥＭＵ６は、モード制御部５に例外処理モードになるように命令を出す（ステップＳ７８）。これにより、モード制御部５は例外処理モードに遷移する（ステップＳ７９）。そして、モード制御部５が例外処理モードに遷移すると、ＣＰＵ１０は再度、自己診断命令を示すアクセス制御信号ＣＴＲＬを出力する（ステップＳ８０）。アクセス制御回路３０は、自己診断命令を示すアクセス制御信号ＣＴＲＬが出力されると、ＲＭＷ回路３２の自己診断を再度実行する（ステップＳ８１）。そして、ＣＰＵ１０が備える判定部においてＲＭＷ処理後の出力データと期待値とを比較する。判定部は、ＲＭＷ処理後の出力データと期待値とが一致する場合、ＲＭＷ回路３２が正常であると判定する（ステップＳ８２：Ｎｏ）。ＲＭＷ回路３２が正常であると判定された場合、モード制御部５は通常モードに遷移する（ステップＳ７６）。その後、データ処理装置のＣＰＵ１０は自己診断を実行することなく所定のプログラムを実行する（ステップＳ７１）。つまり、この場合は一度目の自己診断結果に誤りがあったと判断される。
【０１８９】
一方、判定部は、ＲＭＷ処理後の出力データと期待値とが一致しない場合、エラーと判定する（ステップＳ８２：Ｙｅｓ）。このとき、ＣＰＵ１０はＥＭＵ６にエラー信号を出力してエラーを通知する（ステップＳ８３）。再度エラー信号を受信したＥＭＵ６は、データ処理装置のＲＭＷ回路３２が故障していると確定する（ステップＳ８４）。この場合、ＥＭＵ６は、例えばデータ処理装置の動作を停止し、ディスプレイ等に故障である旨の表示をしてユーザにＲＭＷ回路３２が故障していることを通知する。
【０１９０】
このように、本実施の形態にかかるデータ処理装置では、モード制御部５を用いてデータ処理装置の診断モードを切り替えている。よって、データ処理装置の診断モードを柔軟に変更することができる。なお、上記で説明した例は一例であり、本実施の形態にかかるデータ処理装置では、モード制御部５を用いてデータ処理装置の診断モードを任意に切り替えることができる。
【０１９１】
＜実施の形態８＞
次に、本発明の実施の形態８について説明する。実施の形態８では、上記で説明した実施の形態１乃至７にかかるデータ処理装置を車載用のマイクロコントローラに適用した場合について説明する。
【０１９２】
図２５は、実施の形態１乃至７にかかるデータ処理装置を車載用のマイクロコントローラ２００に適用した場合の一例を説明するためのブロック図である。図２５に示すように、マイクロコントローラ２００は、データ処理装置２０１、フラッシュメモリ２０２、ＡＤＣ（Analog to Digital Converter）２０３、タイマ２０４、２０５、ＣＡＮ（Controller Area Network）２０６、ＦｌｅｘＲａｙ２０７、およびシステムバス２０８を備える。
【０１９３】
データ処理装置２０１は、所定のプログラムを実行する。フラッシュメモリ２０２は、データ処理装置２０１で実行するプログラムを格納している。ＡＤＣ２０３はセンサ２１１と接続されており、センサから送信されたアナログ信号をデジタル信号に変換する。ここで、センサ２１１は、例えばヨーレートセンサ、加速度センサ（Ｇセンサ）である。ヨーレートセンサは、自動車の旋回方向への回転角の変化を検出するセンサである。加速度センサ（Ｇセンサ）は、自動車の前後および左右における加速度を測定するためのセンサである。
【０１９４】
タイマ２０４は駆動部２１０と接続されており、駆動部２１０から送信された信号に基づいて自動車の速度を検出する。タイマ２０４は、例えば車輪の回転速度に応じたパルス信号を受信し、所定の時間におけるパルス信号のパルス数を測定することで自動車の速度（車輪の回転速度）を検出することができる。
【０１９５】
タイマ２０５は、ブレーキ制御ユニット２１２に対してブレーキを制御するためのタイミング信号を出力する。ＣＡＮ２０６およびＦｌｅｘＲａｙ２０７は、車載ネットワーク規格であるＣＡＮおよびＦｌｅｘＲａｙを用いて、マイクロコントローラ２００を外部に設けられているゲートウェイ部２１３と接続するためのインタフェースである。ゲートウェイ部２１３は、他の車載用マイクロコントローラと接続されている。
【０１９６】
データ処理装置２０１、フラッシュメモリ２０２、ＡＤＣ２０３、タイマ２０４、２０５、ＣＡＮ２０６、およびＦｌｅｘＲａｙ２０７は、システムバス２０８を介して互いに接続されている。
【０１９７】
次に、本実施の形態にかかるマイクロコントローラの動作について説明する。データ処理装置２０１は、ＡＤＣ２０３およびタイマ２０４から出力された信号をそれぞれ入力することで、自動車のヨーレート、加速度、および速度をモニタしている。そして、自動車の走行中にブレーキをかけて自動車が減速した際に、車輪の回転が所定の減速度を超えた場合、タイマ２０５はブレーキ制御ユニット２１２に対してＡＢＳ（Antilock Brake System）制御を実施するための信号を出力する。ブレーキ制御ユニット２１２は、油圧発生装置（不図示）が発生する油圧を下げることでブレーキのＡＢＳ制御を実施する。このような制御により、車輪のスリップ率が目標スリップ率に近づくようにブレーキを制御することができ、タイヤのグリップ力を確保することができる。
【０１９８】
なお、本実施の形態では、マイクロコントローラ２００をブレーキ制御システムに適用した場合について説明した。しかし、本発明にかかるデータ処理装置を備えたマイクロコントローラは、ブレーキ制御システム以外にも用いることができる。
【０１９９】
以上、本発明を上記実施形態に即して説明したが、上記実施形態の構成にのみ限定されるものではなく、本願特許請求の範囲の請求項の発明の範囲内で当業者であればなし得る各種変形、修正、組み合わせを含むことは勿論である。
【符号の説明】
【０２００】
１  データ処理装置
２  ＤＭＡＣ
３  ＣＰＵ
４  フラッシュメモリ
５  モード制御部
６  ＥＭＵ
７  Ｉ／Ｏ
８  システムバス
１０  ＣＰＵ
１１  ＥＣＣ回路
２０  メモリアービタ
３０  アクセス制御回路
３１  自己診断用データ格納部
３２  リードモディファイライト回路
３３  ＥＣＣ回路
３４  ＥＣＣ回路
３５  リードモディファイライト処理部
３６  ＥＣＣ回路
３７  出力データ格納部
３８  イネーブル信号生成回路
３９  判定部
４０  メモリ
【図１】
2013250690.tif 000003
【図２】
2013250690.tif 000004
【図３】
2013250690.tif 000005
【図４】
2013250690.tif 000006
【図５】
2013250690.tif 000007
【図６】
2013250690.tif 000008
【図７】
2013250690.tif 000009
【図８】
2013250690.tif 000010
【図９】
2013250690.tif 000011
【図１０Ａ】
2013250690.tif 000012
【図１０Ｂ】
2013250690.tif 000013
【図１０Ｃ】
2013250690.tif 000014
【図１１】
2013250690.tif 000015
【図１２】
2013250690.tif 000016
【図１３】
2013250690.tif 000017
【図１４】
2013250690.tif 000018
【図１５】
2013250690.tif 000019
【図１６】
2013250690.tif 000020
【図１７】
2013250690.tif 000021
【図１８】
2013250690.tif 000022
【図１９】
2013250690.tif 000023
【図２０】
2013250690.tif 000024
【図２１】
2013250690.tif 000025
【図２２】
2013250690.tif 000026
【図２３】
2013250690.tif 000027
【図２４】
2013250690.tif 000028
【図２５】
2013250690.tif 000029