(57)【要約】【課題】複数のバスマスタに転送エラーが発生した場合でも確実にその転送エラーの原因を特定することができるデータ処理装置を提供する。【解決手段】転送エラーを検出すると、エラー監視部４０は、その転送エラーを発生させたバスマスタ毎に、その転送に関する情報をバス１０から取り込んで、バスマスタ毎に格納領域を有する内部のエラーレジスタ群に格納するとともに、ＣＰＵであるバスマスタ２０＿１に対してＮＭＩを起動させる。【選択図】図１
2006155488.tif 000002
【特許請求の範囲】
【請求項１】
複数のバスマスタおよび複数のバススレーブが接続され、バスマスタとバススレーブ間のデータ転送を行うバスと、
前記複数のバスマスタにそれぞれ対応する複数のデータ格納領域を有するデータ格納部と、
転送エラーを検出する検出部と、
前記検出部による転送エラーの検出に応じて、当該転送エラーに係るバスマスタ、バススレーブ、および少なくとも当該バススレーブ上のアドレスを含む転送関連データを前記バス上のデータから特定し、特定されたバスマスタに対応するデータ格納領域に、前記バススレーブを特定するデータおよび前記転送関連データを格納する制御部と、
を有するデータ処理装置。
【請求項２】
前記検出部が転送エラーを検出したことを条件として、
前記複数のバスマスタのうち一のバスマスタは、前記データ格納部にアクセスする
請求項１記載のデータ処理装置。
【請求項３】
前記複数のバスマスタのデータ転送要求を調停し、一のバスマスタに対してデータ転送許可を与えるとともに、当該一のバスマスタを特定する第１データを前記バスへ送出する調停部、を有し、
前記データ転送許可を与えられたバスマスタは、バススレーブを特定する第２データ、当該バススレーブ上のアドレスを特定する第３データ、を前記バスへ送出し、
前記バスマスタに特定されたバススレーブは、データ転送が正常に行われているか否かを示す第４データを前記バスへ送出する
請求項１記載のデータ処理装置。
【請求項４】
前記検出部は、前記第４データに基づいて転送エラーを検出し、
前記制御部は、前記検出部による転送エラーの検出に応じて、前記第１データに基づいてバスマスタを特定し、当該バスマスタに対応するデータ格納領域に、前記第２および第３データを格納する
請求項３記載のデータ処理装置。
【請求項５】
前記制御部は、
前記第４データをデコードしてバスマスタを特定するためのデコード部と、
前記複数のデータ格納領域の中から、前記デコード部により特定されたバスマスタに対応するデータ格納領域をラッチするためのラッチ部と、
前記バスから前記第２および第３データを取得し、前記ラッチ部によりラッチされたデータ格納領域に格納するデータ取得手段と、
を含む
請求項４記載のデータ処理装置。
【請求項６】
前記バスマスタは、
データ転送のリード／ライトを特定する第５データ、前記データ転送に係るデータ量を特定する第６データ、前記データ転送の種類を特定する第７データ、のうち、少なくとも一のデータを前記バスへ送出し、
前記制御部は、対応するデータ格納領域に前記一のデータを格納する
請求項４記載のデータ処理装置。
【請求項７】
前記検出部が前記第４データに基づいて転送エラーを検出したことを条件として、
前記複数のバスマスタのうち一のバスマスタは、前記データ格納部にアクセスする
請求項３記載のデータ処理装置。
【請求項８】
複数のバスマスタと、複数のバススレーブとが接続されたバス上でデータ転送を処理するデータ処理方法であって、
転送エラーを検出するステップと、
当該転送エラーに係るバスマスタ、バススレーブ、および少なくとも当該バススレーブ上のアドレスを含む転送関連データを前記バス上のデータから特定するステップと、
特定されたバスマスタに対応するデータ格納領域に、前記バススレーブのデータおよび前記転送関連データを格納するステップと、
前記複数のバスマスタのうち一のバスマスタは、前記データ格納領域にアクセスするステップと、
を有するデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マスタとスレーブ間のデータ転送を制御するバスシステムなどのデータ処理装置およびデータ処理方法に関する。
【背景技術】
【０００２】
従来、システム構成においては、システムに必要なデータ通信のために共通データ経路（バス）を装備し、システムを構成する様々な装置をバスに接続して、装置間のデータ通信を行う、データ処理装置としてのバスシステムが広く利用されている。
【０００３】
バスシステムにおいては、様々なデータ通信の経路をバスで共有しているため、大規模なシステムでもそれぞれの装置間の接続線を増大させることなく、構成装置間の通信を可能とする一方、通信経路が共有されているため、様々なデータ通信は同時実行が困難であり、ぞれぞれのデータ通信は個別に順次実行される。
【０００４】
一般的なバス上のデータ通信は、バスにアクセスしてバスに対してバス信号（アドレス、制御信号、書込みデータなど）を送出する装置（以下、バスマスタと称する）と、バス信号を取得しバス信号が指示する内容に基づいてその処理を実行する装置（以下、バススレーブと称する）の２者間で行われる。
その手順としては、まず、バスマスタが要求する処理をバス信号としてバスに送出し、次に、バススレーブがバス信号を取得した後、バス信号が指示する処理を実行し、最後に、指示内容によっては実行結果をバスマスタに返信する。
【０００５】
このような従来のバスシステムでは、たとえば、存在しないバススレーブ上のアドレスに対してバスマスタがアクセスしようとした場合には、そのバススレーブはアクセス元のバスマスタに対して転送エラー信号を返す構成をとっている。
このとき、アクセス元のバスマスタがＣＰＵである場合には、その転送エラーが発生したアドレスを内部のレジスタに保持し、ＮＭＩ（Non Maskable Interrupt）処理等を行うため、転送エラーの原因を比較的特定しやすい。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ところで、従来のバスシステムでは、ＣＰＵ以外のバスマスタによるデータ転送によって転送エラーが生じた場合には、必ずしもその転送エラーの原因を特定することができないという問題がある。
たとえば、バスにアクセスしたバスマスタがＤＭＡＣ（Direct Memory Access Controller）である場合には、転送エラーが生じたという情報のみをＤＭＡＣに記憶し、ＣＰＵに対して割込み処理を行う場合があり、その場合には、転送エラーの原因を解析する（デバッグ）することができない。
【０００７】
特に、近年では、ＳｏＣ（System on Chip）といわれるように、コアの部分としてＣＰＵやその関連の回路を組み込み、各種ブロックを半導体チップ上で結合する「オンチップ・バス」のシステムでは、バスマスタの数が多く、かつ、複数のバスマスタが同時に動作することがあり、転送エラーが発生した場合のデバッグを困難にする。
また、このようなマルチマスタバスシステムでは、あるバスマスタによる転送エラーがその他のバスマスタの転送エラーを誘引することがあり、かかる複合的な転送エラーが発生すると、デバッグをより一層困難にする。
【０００８】
上述した観点に鑑みて、本発明の目的は、複数のバスマスタに転送エラーが発生した場合でも確実にその転送エラーの原因を特定することができるデータ処理装置を提供することにある。
【課題を解決するための手段】
【０００９】
上記課題を克服するために、本発明の第１の観点は、複数のバスマスタおよび複数のバススレーブが接続され、バスマスタとバススレーブ間のデータ転送を行うバスと、前記複数のバスマスタにそれぞれ対応する複数のデータ格納領域を有するデータ格納部と、転送エラーを検出する検出部と、前記検出部による転送エラーの検出に応じて、当該転送エラーに係るバスマスタ、バススレーブ、および少なくとも当該バススレーブ上のアドレスを含む転送関連データを前記バス上のデータから特定し、特定されたバスマスタに対応するデータ格納領域に、前記バススレーブを特定するデータおよび前記転送関連データを格納する制御部と、を有するデータ処理装置である。
【００１０】
好適には、前記検出部が転送エラーを検出したことを条件として、前記複数のバスマスタのうち一のバスマスタは、前記データ格納部にアクセスする。
【００１１】
特定的には、前記複数のバスマスタのデータ転送要求を調停し、一のバスマスタに対してデータ転送許可を与えるとともに、当該一のバスマスタを特定する第１データを前記バスへ送出する調停部、を有し、前記データ転送許可を与えられたバスマスタは、バススレーブを特定する第２データ、当該バススレーブ上のアドレスを特定する第３データ、を前記バスへ送出し、前記バスマスタに特定されたバススレーブは、データ転送が正常に行われているか否かを示す第４データを前記バスへ送出する。
【００１２】
特定的には、前記検出部は、前記第４データに基づいて転送エラーを検出し、前記制御部は、前記検出部による転送エラーの検出に応じて、前記第１データに基づいてバスマスタを特定し、当該バスマスタに対応するデータ格納領域に、前記第２および第３データを格納する。
【００１３】
上記課題を克服するために、本発明の第２の観点は、複数のバスマスタと、複数のバススレーブとが接続されたバス上でデータ転送を処理するデータ処理方法であって、転送エラーを検出するステップと、当該転送エラーに係るバスマスタ、バススレーブ、および少なくとも当該バススレーブ上のアドレスを含む転送関連データを前記バス上のデータから特定するステップと、特定されたバスマスタに対応するデータ格納領域に、前記バススレーブのデータおよび前記転送関連データを格納するステップと、前記複数のバスマスタのうち一のバスマスタは、前記データ格納領域にアクセスするステップと、を有するデータ処理方法である。
【００１４】
本発明に係るデータ処理装置の作用は、以下の通りである。
すなわち、検出部は、転送エラーを検出する。制御部は、転送エラーに係るバスマスタ、バススレーブ、および少なくとも当該バススレーブ上のアドレスを含む転送関連データを前記バス上のデータから特定し、さらに、特定されたバスマスタに対応するデータ格納領域に、前記バススレーブのデータおよび前記転送関連データを格納する。
【発明の効果】
【００１５】
それゆえ、本発明によれば、バスマスタに関わらず、すべてのバスマスタの転送に係る転送エラーの内容がそれぞれ独立に、対応するデータ格納領域に格納されるので、複数のバスマスタのいずれかに転送エラーが発生した場合でも確実にその転送エラーの原因を特定することができる。したがって、信頼性の高いシステムを構築することができる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明に係るデータ処理装置の一実施形態を添付図面に関連付けて説明する。
なお、以下の説明において、複数ビットからなる任意の信号Ａに対して、たとえば、信号Ａ［１：０］＝“０１”の場合とは、Ａ［１］＝“０”、かつ、Ａ［０］＝“１”である場合であることを示す。また、“１”はバス上でハイレベル、“０”はバス上でロウレベルの信号であることを示す。
【００１７】
図１は、本発明の一実施形態としてのバスシステム１の構成を示す図である。
図１に示すように、本実施形態に係るバスシステム１では、バス１０、複数のバスマスタからなるバスマスタ群２０、複数のバススレーブからなるバススレーブ群３０、エラー監視部４０、アービタ５０、を含んで構成される。
バスマスタ群２０は、バスマスタ２０＿１〜２０＿４を有する。バススレーブ群３０は、バススレーブ３０＿１〜３０＿５を有する。すなわち、バスシステム１は、マルチマスタバスシステムである。
【００１８】
アービタ５０は、本発明の調停部の一実施形態である。
また、以下の説明において、マスタ指定信号ＨＭＡＳＴＥＲ［３：０］、選択信号ＨＳＥＬｎ、アドレス信号ＨＡＤＤＲ［３１：０］は、それぞれ本発明の第１データ、第２データ、第３データの一実施形態である。
転送応答信号ＨＲＥＳＰ［１：０］は、本発明の第４データの一実施形態である。
転送方向信号ＨＷＲＩＴＥは、本発明の第５データの一実施形態である。
転送サイズ信号ＨＳＩＺＥ［２：０］は、本発明の第６データの一実施形態である。
バースト転送信号ＨＢＵＲＳＴ［２：０］は、本発明の第７データの一実施形態である。
【００１９】
一般に、バスマスタとしては、たとえば、ＣＰＵやＤＭＡＣ（Direct Memory Access Controller）、ＤＳＰ（Digital Signal Processor）などが考えられ、バススレーブとしては、たとえば、メモリや各種周辺装置などが考えられる。
【００２０】
図１に示すバスシステム１では、バスマスタ群２０のうち、バスマスタ２０＿１は、ＮＭＩ（Non Maskable Interrupt）端子を含み、ＮＭＩ処理等を行うことが可能なＣＰＵである。ＮＭＩによる割込みは、ソフトウエアによってマスクすることができない強制的な割込みである。
ＣＰＵとしてのバスマスタ２０＿１は、エラー監視部４０からＮＭＩ端子に与えられる所定のＮＭＩ命令信号に応じて、ＮＭＩによる割込みを行う。
【００２１】
エラー監視部４０は、バス１０上の信号をモニタすることで転送エラーを判別し、転送に係るバスマスタ毎に転送エラーが発生した転送に関する情報を記憶する。さらに、転送エラーを判別すると、バスマスタ２０＿１に対して所定のＮＭＩ命令信号を与える。
エラー監視部４０の具体的構成については、後に詳述する。
【００２２】
バス１０は、本実施形態では、一例としてＡＲＭ社のＡＭＢＡ仕様書に準拠したバスである。ＡＭＢＡ（Advanced Microcontroller Bus Architecture）は、ハードディスクなどのストレージのコントローラ、ネットワーク、各種周辺機器、携帯電話等の分野において、事実上標準規格化されているオンチップ・バス規格である。
【００２３】
バス１０による転送動作について、図２〜４に関連付けて以下に述べる。
図２は、アービタ５０に入出力される各種信号について図解した図である。図３は、各バスマスタ２０＿ｍ（本実施形態では、ｍ＝１〜４）に入出力される各種信号について図解した図である。図４は、各バススレーブ３０＿ｎ（本実施形態では、ｎ＝１〜５）に入出力される各種信号について図解した図である。
なお、バスマスタ２０＿ｍおよびバススレーブ３０＿ｎは、バス転送のタイミングをとるためのクロック信号、バスをリセットするためのリセット信号を入力するが、図２〜４では、これらの信号は省略している。
【００２４】
図２および図３に示すように、バスマスタ２０＿ｍとアービタ５０との間では、転送要求信号ＨＢＵＳＲＥＱと転送許可信号ＨＧＲＡＮＴが受け渡しされる。
【００２５】
バスマスタ２０＿ｍは、転送要求信号ＨＢＵＳＲＥＱによりアービタ５０に対してバス１０へのアクセス権を要求する。
アービタ５０は、所定のタイミングでこの転送要求信号ＨＢＵＳＲＥＱを取得し、調停アルゴリズムに基づいてバス１０にアクセスする優先順位を決定し、その結果バスマスタ２０＿ｍに対して、転送許可を示す転送許可信号ＨＧＲＡＮＴを与える。それと同時に、アービタ５０は、転送許可に係るバスマスタを特定する４ビットのマスタ指定信号ＨＭＡＳＴＥＲ［３：０］を、転送許可を与えたバスマスタを特定するように変更してバス１０へ送出する。すなわち、マスタ指定信号ＨＭＡＳＴＥＲ［３：０］は、その時点で最も優先順位が高いバスマスタを示す信号となっている。
【００２６】
アービタ５０により転送が許可されると、バスマスタ２０＿ｍは、アドレス信号と各種の制御信号をバス１０に送出して転送を開始する。
【００２７】
バス１０による転送は、３２ビットのアドレス信号ＨＡＤＤＲ［３１：０］を転送するアドレスフェーズと、それに続いて、リード／ライト用のデータを転送するデータフェーズとの２つのフェーズからなる。
バスマスタ２０＿ｍより送出されたアドレス信号ＨＡＤＤＲ［３１：０］は、図示しないアドレスデコーダに与えられて、転送に係るバススレーブを選択するための選択信号ＨＳＥＬｎ（本実施形態では、ｎ＝１〜５）が生成される。たとえば、選択信号ＨＳＥＬ２は、バススレーブ３０＿２を選択する信号である。
図４に示すように、対応するバススレーブは、アドレス信号ＨＡＤＤＲ［３１：０］と、選択信号ＨＳＥＬｎと、後述する制御信号とを取得する。
【００２８】
バスマスタ２０＿ｍは、上記アドレスフェーズにおいて、アドレス信号ＨＡＤＤＲ［３１：０］を送出するタイミングと同一のタイミングで制御信号を送出する。
制御信号としては、図３に示すように、転送方向を示す１ビットの転送方向信号ＨＷＲＩＴＥ、転送サイズを示す３ビットの転送サイズ信号ＨＳＩＺＥ［２：０］、３ビットのバースト転送信号ＨＢＵＲＳＴ［２：０］を含む。これらの制御信号は、本発明の転送関連データに対応する。
【００２９】
具体的に、転送方向信号ＨＷＲＩＴＥは、以下の通り定義される。
転送方向信号ＨＷＲＩＴＥ
（ｉ）ＨＷＲＩＴＥ＝“１”の場合：  書き込み転送（ライト）
（ｉｉ）ＨＷＲＩＴＥ＝“０”の場合：  読み出し転送（リード）
【００３０】
具体的に、転送サイズ信号ＨＳＩＺＥ［２：０］が示す転送サイズは、以下の通りとなる。
転送サイズ信号ＨＳＩＺＥ［２：０］
（ｉ）ＨＳＩＺＥ［２：０］＝“０００”の場合：  転送サイズ＝８ビット
（ii）ＨＳＩＺＥ［２：０］＝“００１”の場合：  転送サイズ＝１６ビット
（iii）ＨＳＩＺＥ［２：０］＝“０１０”の場合：  転送サイズ＝３２ビット
（iv）ＨＳＩＺＥ［２：０］＝“０１１”の場合：  転送サイズ＝６４ビット
（v）ＨＳＩＺＥ［２：０］＝“１００”の場合：  転送サイズ＝１２８ビット
（vi）ＨＳＩＺＥ［２：０］＝“１０１”の場合：  転送サイズ＝２５６ビット
（vii）ＨＳＩＺＥ［２：０］＝“１１０”の場合：  転送サイズ＝５１２ビット
（viii）ＨＳＩＺＥ［２：０］＝“１１１”の場合：  転送サイズ＝１０２４ビット
【００３１】
バス１０は、バースト転送に対応している。データ転送におけるバースト動作は、バスマスタから送出されるバースト転送信号ＨＢＵＲＳＴ［２：０］に応じて、以下の通りになる。
バースト転送信号ＨＢＵＲＳＴ［２：０］
（ｉ）ＨＢＵＲＳＴ［２：０］＝“０００”の場合：  単独転送（ＳＩＮＧＬＥ）
（ii）ＨＢＵＲＳＴ［２：０］＝“００１”の場合：  不定長のインクリメント式バースト転送（ＩＮＣＲ）
（iii）ＨＢＵＲＳＴ［２：０］＝“０１０”の場合：  ４ビートラップ式バースト転送（ＷＲＡＰ４）
（iv）ＨＢＵＲＳＴ［２：０］＝“０１１”の場合：  ４ビートインクリメント式バースト転送（ＩＮＣＲ４）
（v）ＨＢＵＲＳＴ［２：０］＝“１００”の場合：  ８ビートラップ式バースト転送（ＷＲＡＰ８）
（vi）ＨＢＵＲＳＴ［２：０］＝“１０１”の場合：  ８ビートインクリメント式バースト転送（ＩＮＣＲ８）
（vii）ＨＢＵＲＳＴ［２：０］＝“１１０”の場合：  １６ビートラップ式バースト転送（ＷＲＡＰ１６）
（viii）ＨＢＵＲＳＴ［２：０］＝“１１１”の場合：  １６ビートインクリメント式バースト転送（ＩＮＣＲ１６）
【００３２】
バスマスタ２０＿ｍが転送を開始した後、バススレーブは、その転送の状態を示す応答として、図４に示すように、２ビットの転送応答信号ＨＲＥＳＰ［１：０］をバス１０へ送出し、バスマスタ２０＿ｍは所定のタイミングでこの転送応答信号を取得する。
【００３３】
具体的には、転送応答信号ＨＲＥＳＰ［１：０］は、以下の通りである。
転送応答信号ＨＲＥＳＰ［１：０］
（ｉ）ＨＲＥＳＰ［１：０］＝“００”の場合：
転送状態がＯＫであり、転送が正常に進行していることを示す。
（ii）ＨＲＥＳＰ［１：０］＝“０１”の場合：
転送状態がＥＲＲＯＲであり、転送が失敗したことを示す。
【００３４】
次に、エラー監視部４０の構成について、図５に関連付けて説明する。
【００３５】
図５は、エラー監視部４０の構成を示すブロック図である。
図５に示すように、エラー監視部４０は、比較器４１、デコーダ４２，４４、エラーレジスタ群４３を有する。
なお、比較器４１は、本発明の検出部の一実施形態である。
エラーレジスタ群４３は、本発明のデータ格納部の一実施形態である。
エラー監視部４０は、本発明の制御部に対応する。
【００３６】
比較器４１は、バス上の転送応答信号ＨＲＥＳＰ［１：０］に基づいて転送状態がＥＲＲＯＲであるか否かを判別する。そして、転送状態がＥＲＲＯＲのとき、すなわち転送応答信号ＨＲＥＳＰ［１：０］が“０１”と一致する場合には、所定のエラー信号Ｓ４１をロウレベルからハイレベルとする。
このエラー信号Ｓ４１の出力は、バスマスタ２０＿１（ＣＰＵ）のＮＭＩ端子に与えられ、これにより、バスマスタ２０＿１では、エラーレジスタ群４３にアクセスするための強制的な割込処理がなされる。
【００３７】
デコーダ４２は、エラー信号Ｓ４１とバス上のマスタ指定信号ＨＭＡＳＴＥＲ［３：０］をデコードして、エラーレジスタ群４３を構成する各エラーレジスタ４３＿ｍ（本実施形態では、ｍ＝１〜４）をラッチするためのラッチ信号Ｓ４２＿ｍ（本実施形態では、ｍ＝１〜４）を生成する。
すなわち、マスタ指定信号ＨＭＡＳＴＥＲ［３：０］をデコードして、どのバスマスタ２０＿ｍがバス１０を使用しているか特定した信号を生成する。そして、この生成された信号とエラー信号Ｓ４１の論理和をとることで、ラッチ信号Ｓ４２＿ｍを出力する。
【００３８】
エラーレジスタ群４３は、バスマスタ群２０に対応する複数のエラーレジスタ４３＿ｍ（本実施形態では、ｍ＝１〜４）から構成される。すなわち、バスマスタ２０＿ｍ（ｍ＝１〜４）の各バスマスタに対応するエラーレジスタがエラーレジスタ４３＿ｍ（ｍ＝１〜４）となる。
【００３９】
図６は、エラーレジスタ群４３の構成を図解した図である。
図６に示すように、エラーレジスタ群４３の各エラーレジスタ４３＿ｍは、対応するバスマスタ毎に、以下に示す格納領域が含まれる。
（１）リード／ライト指定の格納領域（Ｒ／Ｗ）
（２）スレーブ番号の格納領域（Ｓｌａｖｅ  Ｎｏ．）
（３）アクセスパターンに関する格納領域（Ａｃｃｅｓｓ  Ｐａｔｔｅｒｎ）
（４）アドレスの格納領域（Ｅｒｒｏｒ  Ａｄｄｒｅｓｓ）
【００４０】
エラーレジスタ４３＿ｍがラッチ信号Ｓ４２＿ｍによってラッチされると、そのラッチされたタイミングで、エラー監視部４０は、バス１０上のアドレス信号、制御信号等を取り込んで、そのエラーレジスタ４３＿ｍに格納する。
具体的には、以下の通り行う。
【００４１】
エラー監視部４０は、バス１０上の転送方向信号ＨＷＲＩＴＥ（「１」：ライト、「０」：リード）を取り込んで、エラーレジスタ４３＿ｍにおけるリード／ライト指定の格納領域（Ｒ／Ｗ）に格納する。
【００４２】
エラー監視部４０は、バス１０上の選択信号ＨＳＥＬｎがデコーダ４４によりデコードされ、エラーレジスタ４３＿ｍは、そのデコードにより特定されたバススレーブ番号を、エラーレジスタ４３＿ｍにおけるスレーブ番号の格納領域（Ｓｌａｖｅ  Ｎｏ．）に格納する。
【００４３】
エラー監視部４０は、バス１０上の転送サイズ信号ＨＳＩＺＥ［２：０］およびバースト転送信号ＨＢＵＲＳＴ［２：０］を取り込んで、エラーレジスタ４３＿ｍにおけるアクセスパターンの格納領域（Ａｃｃｅｓｓ  Ｐａｔｔｅｒｎ）に格納する。
【００４４】
エラー監視部４０は、バス１０上のアドレス信号ＨＡＤＤＲ［３１：０］を取り込んで、エラーレジスタ４３＿ｍにおけるアドレスの格納領域（Ｅｒｒｏｒ  Ａｄｄｒｅｓｓ）に格納する。
【００４５】
次に、転送エラーが発生した場合のバスシステム１の動作について述べる。
動作例として、ＤＭＡＣとしてのバスマスタ２０＿２が、メモリとしてのバススレーブ３０＿１に対して、データの書き込みを行う場合を考える。
その場合、バスマスタ２０＿２は、まずアービタ５０に対して転送要求信号ＨＢＵＳＲＥＱを送出し、アービタ５０は、調停に基づいてその転送要求を許可し、転送許可信号ＨＧＲＡＮＴを送出する。同時に、アービタ５０は、マスタ指定信号ＨＭＡＳＴＥＲ［３：０］を、バスマスタ２０＿２を特定するコード、たとえば“００１０”に変更する。
【００４６】
転送許可がなされると、バスマスタ２０＿２は、まず、アドレスフェーズにおいて、バススレーブ３０＿１上のデータ転送先のアドレスを示す３２ビットのアドレス信号ＨＡＤＤＲ［３１：０］を送出するとともに、各種の制御信号（転送方向信号ＨＷＲＩＴＥ、転送サイズ信号ＨＳＩＺＥ［２：０］、バースト転送信号ＨＢＵＲＳＴ［２：０］）をバス１０へ送出する。
【００４７】
この動作例では、データの書き込みであるため、転送方向信号ＨＷＲＩＴＥは“１”である。また、転送サイズ信号ＨＳＩＺＥ［２：０］は、“０１０”（３２ビット）であり、バースト転送信号ＨＢＵＲＳＴ［２：０］は、“１００”（８ビートラップ式バースト転送）であるとする。
【００４８】
一方、図示しないアドレスデコーダは、アドレス信号ＨＡＤＤＲ［３１：０］に基づいて、バススレーブ３０＿１を指定した選択信号ＨＳＥＬ１を生成してバス１０へ送出する。
【００４９】
以上のアドレスフェーズの動作により、バススレーブ３０＿１は、バス１０から、アドレス信号ＨＡＤＤＲ［３１：０］、上記制御信号、および選択信号ＨＳＥＬ１を取得する。
【００５０】
次に、データフェーズに移り、バスマスタ２０＿２は、書き込み用データの転送を開始し、バススレーブ３０＿１は、その書き込み用データをバス１０上から取得してアドレス信号ＨＡＤＤＲ［３１：０］により指定されたアドレスに書き込みを開始する。
ここで、たとえば、アドレス信号ＨＡＤＤＲ［３１：０］により指定されたアドレスがメモリとしてのバススレーブ３０＿１に存在しない場合等には、データ転送を行うことができないので、バススレーブ３０＿１は、バスマスタ２０＿２に対して転送エラー（転送エラー）を通知すべく、転送応答信号ＨＲＥＳＰ［１：０］として“０１”（ＥＲＲＯＲ）をバス１０へ送出する。
【００５１】
本実施形態に係るバスシステム１では、エラー監視部４０が常時この転送応答信号ＨＲＥＳＰ［１：０］をモニタしており、デバッグに必要な情報をバス１０から取得する。
先ず、比較器４１は、転送応答信号ＨＲＥＳＰ［１：０］と“０１”とを比較し、一致すると判断して、エラー信号Ｓ４１をロウレベルからハイレベルに変化させる。これにより、ＣＰＵとしてのバスマスタ２０＿１のＮＭＩ端子がアクティブとなり、ＮＭＩ処理が開始される。
【００５２】
デコーダ４２は、エラー信号Ｓ４１と、バス１０上のマスタ指定信号ＨＭＡＳＴＥＲ［３：０］を取り込んで、デコードする。マスタ指定信号ＨＭＡＳＴＥＲ［３：０］は、バスマスタ２０＿２を特定するコード“００１０”に変化しており、また、エラー信号Ｓ４１がハイレベルであるため、デコーダ４２は、バスマスタ２０＿２に対応するエラーレジスタ４３＿２に対してラッチ信号Ｓ４２＿２を与える。
【００５３】
このラッチ信号Ｓ４２＿２をトリガとして、エラー監視部４０は、アドレス信号および制御信号をエラーレジスタ４３＿２に取り込む。
【００５４】
すなわち、エラー監視部４０は、バス１０上の転送方向信号ＨＷＲＩＴＥ（＝“１”）を取り込んで、エラーレジスタ４３＿２におけるリード／ライト指定の格納領域（Ｒ／Ｗ）に格納する。
バス１０上の選択信号ＨＳＥＬ２がデコーダ４４によりデコードされた後、エラー監視部４０は、そのデコードにより特定されたバススレーブ番号を、エラーレジスタ４３＿２におけるスレーブ番号の格納領域（Ｓｌａｖｅ  Ｎｏ．）に格納する。
エラー監視部４０は、バス１０上の転送サイズ信号ＨＳＩＺＥ［２：０］（＝“０１０”）およびバースト転送信号ＨＢＵＲＳＴ［２：０］（＝“１００”）を取り込んで、エラーレジスタ４３＿２におけるアクセスパターンの格納領域（Ａｃｃｅｓｓ  Ｐａｔｔｅｒｎ）に格納する。
エラー監視部４０は、バス１０上のアドレス信号ＨＡＤＤＲ［３１：０］を取り込んで、エラーレジスタ４３＿２におけるアドレスの格納領域（Ｅｒｒｏｒ  Ａｄｄｒｅｓｓ）に格納する。
【００５５】
エラー監視部４０から与えられるエラー信号Ｓ４１に基づいて、ＣＰＵ（バスマスタ２０＿１）は、ＮＭＩ処理を行い、その処理内でエラーレジスタ群４３をチェックする。これによって、バスマスタ２０＿２の転送に関する転送エラーを解析するための情報が外部から取得可能になる。
【００５６】
以上、単一のバスマスタの転送にエラーが発生した場合について説明したが、複数のバスマスタに関してそれぞれ転送エラーが発生した場合や、１つのバスマスタによる転送エラーが他のバスマスタの転送エラーを誘引するような場合についても同様である。
すなわち、エラー監視部４０内のデコーダ４２は、逐次、マスタ指定信号ＨＭＡＳＴＥＲ［３：０］に基づいて、エラーレジスタをラッチするためのラッチ信号を振り分けているので、アービタ５０によりマスタ指定信号ＨＭＡＳＴＥＲ［３：０］が更新される毎にラッチ対象となるエラーレジスタが切り替わる。それによって、順次、対応するエラーレジスタにアドレス等のデータが格納されていく。
【００５７】
以上説明したように、本実施形態に係るバスシステム１によれば、転送エラーを検出すると、エラー監視部４０は、その転送エラーを発生させたバスマスタ毎に、その転送に関する情報をバス１０から取り込んで、バスマスタ毎に格納領域を有するエラーレジスタ群４３に格納するとともに、ＣＰＵに対してＮＭＩによって通知するように構成したので、下記に述べる効果が得られる。
【００５８】
すなわち、バスマスタの種類に関わらず、転送エラーを解析するために必要な情報を保存することができる。つまり、従来のバスシステムのように、あるバスマスタ（たとえば、ＣＰＵ）には十分なエラー情報が保存されている一方で、他のバスマスタ（たとえば、ＤＭＡＣ等）には有益なエラー情報が保存されていない、ということがない。
【００５９】
また、本実施形態に係るバスシステム１では、バスマスタの種類に依存せずに、エラー監視部４０によって一元的に処理でき、かつ、比較的簡易な構成で、マルチマスタバスシステムの監視を行うことができる。
【００６０】
本実施形態に係るバスシステム１では、複合的な転送エラーが発生した場合、たとえば、あるバスマスタによる転送エラーが他のバスマスタの転送エラーを引き起こすような場合でも、バスマスタ毎にエラー情報を保存する。したがって、ＮＭＩによる割込みルーチンにおいてエラーレジスタをアクセスすることで、複雑なマルチマスタバスシステムであっても転送エラーのデバッグを容易に行うことができる。
【００６１】
本発明は、上述した実施形態の内容に限定されず、当業者であれば様々な実施形態の改変が可能である。
たとえば、上述した実施形態では、バス１０の仕様として、ＡＲＭ社のＡＭＢＡ仕様書に準拠したバスを一例として説明したが、これに限定されるものではない。
バス１０は、マルチマスタに対応したバスであれば、その仕様は問わない。転送エラーをバス上の信号から検出でき、バスを使用するバスマスタ、転送に係るバススレーブ、その転送で指定されるアドレスその他の転送情報を取得できれば、本発明を適用できることは明らかである。
【００６２】
上述した実施形態では、バスマスタ毎のエラーレジスタに、リード／ライトに関する情報、スレーブを特定する情報、アクセスパターンに関する情報、アドレス情報を格納するように構成したが、これに限定されるものではない。バス上から取得でき、かつ、転送エラーのためのデバッグに役立つ情報であれば、その他の情報を適宜エラーレジスタに格納するように、エラーレジスタを拡張してもよい。
【００６３】
上述した実施形態では、アドレスデコーダがバスマスタから送出されるアドレス信号ＨＡＤＤＲ［３１：０］をデコードし、データ転送に係るバススレーブを選択する選択信号ＨＳＥＬｎをバス１０へ送出する構成としたが、各バスマスタがバススレーブを指定する信号を直接バス１０へ送出するように構成してもよい。いずれにせよ、バススレーブを特定するための情報は、バスマスタから送出される。
【図面の簡単な説明】
【００６４】
【図１】本発明の一実施形態としてのバスシステム１の構成を示す図である。
【図２】アービタに入出力される各種信号について図解した図である。
【図３】各バスマスタに入出力される各種信号について図解した図である。
【図４】各バススレーブに入出力される各種信号について図解した図である。
【図５】エラー監視部の構成を示すブロック図である。
【図６】エラーレジスタ群の構成を図解した図である。
【符号の説明】
【００６５】
１…バスシステム、１０…バス、２０…バスマスタ群、３０…バススレーブ群、４０…エラー監視部、４１…比較器、４２，４４…デコーダ、４３…エラーレジスタ群、５０…アービタ。
【図１】
2006155488.tif 000003
【図２】
2006155488.tif 000004
【図３】
2006155488.tif 000005
【図４】
2006155488.tif 000006
【図５】
2006155488.tif 000007
【図６】
2006155488.tif 000008