(57)【要約】【課題】バスシステムにおけるライブ・ロックの発生を防止し、また、ライブ・ロック状態に陥った場合にこれを解消する。【解決手段】スレーブインタフェース内にスレーブ装置固有のリトライ設定値ＳＲＩを格納するレジスタと、乱数値ＲＮを発生する疑似乱数発生器を備え、マスタ装置からの転送要求ＲＥＱｂに対して否定応答するときにリトライ設定値ＳＲＩおよび乱数値ＲＮを含む否定応答付帯情報ＮＡＩＮＦｂをマスタインタフェース２ａへ送信する。マスタインターフェース２ａでは、否定応答付帯情報ＮＡＩＮＦｂからリトライ設定値ＳＲＩと乱数値ＲＮとを抽出し、加算してリトライ間隔値を算出し、リトライ間隔値に基づくリトライ間隔時間経過したときにスレーブ装置へ転送要求ＲＥＱｂを再送信する。リトライ間隔時間が毎回独立に決定されるのでライブ・ロックが防止される。【選択図】      図１
2005196808.tif 000002
【特許請求の範囲】
【請求項１】
スレーブユニットとバスとの間に設けられ、前記スレーブユニットに固有に定められたリトライ設定値を格納するリトライ設定値格納回路と、擬似的に乱数を生成する疑似乱数発生器とを備え、マスタユニットからの転送要求への応答を拒否するときに否定応答を送信するとともに前記リトライ設定値と前記疑似乱数発生器で生成した乱数値とを含む否定応答付帯情報を前記バスを介してマスタユニットへ送信するスレーブインタフェースと、
マスタユニットと前記バスとの間に設けられ、前記否定応答付帯情報から抽出された前記リトライ設定値と前記乱数値とを加算する加算器と、加算結果をリトライ間隔値として格納するリトライ間隔値格納回路とを備え、前記リトライ間隔値に基づいて転送要求を再送信するまでの時間を決定するマスタインターフェースと、
を有することを特徴とするバスシステム。
【請求項２】
前記乱数値は、スレーブインタフェース内で否定応答が発生する毎に疑似乱数発生器により更新されることを特徴とする請求項１記載のバスシステム。
【請求項３】
前記乱数値は、スレーブインタフェースが接続するスレーブユニットへの転送要求があることを検出する毎に疑似乱数発生器により更新されることを特徴とする請求項１記載のバスシステム。
【請求項４】
スレーブユニットとバスとの間に設けられ、
マスタユニットからの転送要求とアドレスとを前記バスを介して受信し前記スレーブユニットに対する転送要求であればアドレス条件検出信号を出力するアドレスデコーダと、
前記アドレス条件検出信号、マスタユニットからのコマンドおよび前記スレーブユニットの動作状態からマスタユニットからの転送要求に応答するか否かを判断し応答可能なときは前記バスに確認応答を出力し応答不可能なときは前記バスに否定応答を出力する応答条件判定回路と、
前記スレーブユニットに固有に定められたリトライ設定値を格納するリトライ設定値格納回路と、
所定の信号に起動されて擬似的に乱数を生成する疑似乱数発生器と、
前記否定応答が出力されたときに追随して前記リトライ設定値および前記疑似乱数発生器で発生させた乱数値を含む否定応答付帯情報を前記バスに出力する否定応答付帯情報生成回路と、を備えるスレーブインタフェースと、
前記バスとマスタユニットとの間に設けられ、
前記バスから前記否定応答付帯情報を入力し前記リトライ設定値と前記乱数値とを抽出して出力するリトライ情報抽出回路と、
前記リトライ設定値と前記乱数値とを加算してリトライ間隔値を算出する加算器と、
前記否定応答の受信によりクロックパルスの計数を開始し計数値が前記リトライ間隔値と等しくなったことを検出してリトライ時間通知信号を出力するリトライ間隔計数部と、
マスタユニットからの転送要求の受信により前記否定応答の受信回数の計数を開始し計数値が予め設定された許容リトライ回数より大きくなったことを検出してオーバーフロー信号を出力するリトライ回数計数部と、
前記オーバーフロー信号がインアクティブレベルで前記リトライ時間通知信号がアクティブレベルとなったことを検出して転送要求の再送信を起動するリトライ要求回路と、を備えるマスタインタフェースと、
を有することを特徴とするバスシステム。
【請求項５】
前記リトライ設定値は、コード化されたリトライ設定値であり、
前記リトライ情報抽出回路は、前記コード化されたリトライ設定値のデコード機能を有することを特徴とする請求項４記載のバスシステム。
【請求項６】
前記疑似乱数発生器を起動する所定の信号が、
前記応答条件判定回路からの否定応答であることを特徴とする請求項４または５記載のバスシステム。
【請求項７】
前記疑似乱数発生器を起動する所定の信号が、
アドレスデコーダからのアドレス条件検出信号であることを特徴とする請求項４または５記載のバスシステム。
【請求項８】
スレーブユニットとバスとの間に設けられ、前記スレーブユニットに固有に定められたリトライ設定値を格納するリトライ設定値格納回路を備え、マスタユニットからの転送要求への応答を拒否するときに否定応答を送信するとともに前記リトライ設定値を含む否定応答付帯情報を前記バスを介してマスタユニットへ送信するスレーブインタフェースと、
マスタユニットと前記バスとの間に設けられ擬似的に乱数を生成する疑似乱数発生器と、生成された乱数値と前記否定応答付帯情報から抽出された前記リトライ設定値とを加算する加算器と、加算結果をリトライ間隔値として格納するリトライ間隔値格納回路とを備え、前記リトライ間隔値に基づいて転送要求を再送信するまでの時間を決定するマスタインターフェースと、
を有することを特徴とするバスシステム。
【請求項９】
前記乱数値は、マスタインタフェース内で否定応答が受信される毎に疑似乱数発生器により更新されることを特徴とする請求項８記載のバスシステム。
【請求項１０】
前記乱数値は、マスタインタフェースからスレーブユニットへ転送要求を出力する毎に疑似乱数発生器により更新されることを特徴とする請求項８記載のバスシステム。
【請求項１１】
スレーブユニットとバスとの間に設けられ、
マスタユニットからの転送要求とアドレスとを前記バスを介して受信し前記スレーブユニットに対する転送要求であればアドレス条件検出信号を出力するアドレスデコーダと、
前記アドレス条件検出信号、マスタユニットからのコマンドおよび前記スレーブユニットの動作状態からマスタユニットからの転送要求に応答するか否かを判断し応答可能なときは前記バスに確認応答を出力し応答不可能なときは前記バスに否定応答を出力する応答条件判定回路と、
前記スレーブユニットに固有に定められたリトライ設定値を格納するリトライ設定値格納回路と、
前記否定応答が出力されたときに追随して前記リトライ設定値を含む否定応答付帯情報を前記バスに出力する否定応答付帯情報生成回路と、を備えるスレーブインタフェースと、
前記バスとマスタユニットとの間に設けられ、
前記バスから前記否定応答付帯情報を入力し前記リトライ設定値を抽出して出力するリトライ情報抽出回路と、
所定の信号に起動されて擬似的に乱数を生成する疑似乱数発生器と、
前記リトライ設定値と前記疑似乱数発生器により生成された乱数値とを加算してリトライ間隔値を算出する加算器と、
前記否定応答の受信によりクロックパルスの計数を開始し計数値が前記リトライ間隔値と等しくなったことを検出してリトライ時間通知信号を出力するリトライ間隔計数部と、
マスタユニットからの転送要求の受信により前記否定応答の受信回数の計数を開始し計数値が予め設定された許容リトライ回数より大きくなったことを検出してオーバーフロー信号を出力するリトライ回数計数部と、
前記オーバーフロー信号がインアクティブレベルで前記リトライ時間通知信号がアクティブレベルとなったことを検出して転送要求の再送信を起動するリトライ要求回路と、を備えるマスタインタフェースと、
を有することを特徴とするバスシステム。
【請求項１２】
前記リトライ設定値は、コード化されたリトライ設定値であり、
前記リトライ情報抽出回路は、前記コード化されたリトライ設定値のデコード機能を有することを特徴とする請求項１１記載のバスシステム。
【請求項１３】
前記疑似乱数発生器を起動する所定の信号が、
マスタインタフェースが受信した否定応答であることを特徴とする請求項１１または１２記載のバスシステム。
【請求項１４】
前記疑似乱数発生器を起動する所定の信号が、
マスタインタフェースがバスへ出力するスレーブユニットへの転送要求であることを特徴とする請求項１１または１２記載のバスシステム。
【請求項１５】
スレーブユニットとバスとの間に設けられ、前記スレーブユニットに固有に定められたリトライ設定値を格納するリトライ設定値格納回路と、擬似的に乱数を生成する疑似乱数発生器と、生成した乱数値と前記リトライ設定値とを加算してリトライ間隔値を生成する加算器とを備え、マスタユニットからの転送要求への応答を拒否するときに否定応答を送信するとともに前記リトライ間隔値を含む否定応答付帯情報を前記バスを介してマスタユニットへ送信するスレーブインタフェースと、
マスタユニットと前記バスとの間に設けられ、前記否定応答付帯情報から抽出された前記リトライ間隔値を格納するリトライ間隔値格納回路を備え、前記リトライ間隔値に基づいて転送要求を再送信するまでの時間を決定するマスタインターフェースと、
を有することを特徴とするバスシステム。
【請求項１６】
前記乱数値は、スレーブインタフェース内で否定応答が発生する毎に疑似乱数発生器により更新されることを特徴とする請求項１５記載のバスシステム。
【請求項１７】
前記乱数値は、スレーブインタフェースが接続するスレーブユニットへの転送要求があることを検出する毎に疑似乱数発生器により更新されることを特徴とする請求項１５記載のバスシステム。
【請求項１８】
スレーブユニットとバスとの間に設けられ、
マスタユニットからの転送要求とアドレスとを前記バスを介して受信し前記スレーブユニットに対する転送要求であればアドレス条件検出信号を出力するアドレスデコーダと、
前記アドレス条件検出信号、マスタユニットからのコマンドおよび前記スレーブユニットの動作状態からマスタユニットからの転送要求に応答するか否かを判断し応答可能なときは前記バスに確認応答を出力し応答不可能なときは前記バスに否定応答を出力する応答条件判定回路と、
前記スレーブユニットに固有に定められたリトライ設定値を格納するリトライ設定値格納回路と、
所定の信号に起動されて擬似的に乱数を生成する疑似乱数発生器と、
前記リトライ設定値と前記疑似乱数発生器で生成した乱数値とを加算してリトライ間隔値を算出する加算器と、
前記否定応答が出力されたときに追随して前記リトライ間隔値を含む否定応答付帯情報を前記バスに出力する否定応答付帯情報生成回路と、を備えるスレーブインタフェースと、
前記バスとマスタユニットとの間に設けられ、
前記バスから前記否定応答付帯情報を入力し前記リトライ間隔値を抽出して出力するリトライ情報抽出回路と、
前記否定応答の受信によりクロックパルスの計数を開始し計数値が前記リトライ間隔値と等しくなったことを検出してリトライ時間通知信号を出力するリトライ間隔計数部と、
マスタユニットからの転送要求の受信により前記否定応答の受信回数の計数を開始し計数値が予め設定された許容リトライ回数より大きくなったことを検出してオーバーフロー信号を出力するリトライ回数計数部と、
前記オーバーフロー信号がインアクティブレベルで前記リトライ時間通知信号がアクティブレベルとなったことを検出して転送要求の再送信を起動するリトライ要求回路と、を備えるマスタインタフェースと、
を有することを特徴とするバスシステム。
【請求項１９】
前記疑似乱数発生器を起動する所定の信号が、
前記応答条件判定回路からの否定応答であることを特徴とする請求項１８記載のバスシステム。
【請求項２０】
前記疑似乱数発生器を起動する所定の信号が、
アドレスデコーダからのアドレス条件検出信号であることを特徴とする請求項１８記載のバスシステム。
【請求項２１】
マスタ装置とスレーブ装置がバスを介して接続されたバスシステムにおいて、
前記スレーブ装置に固有に定められたリトライ設定値と疑似乱数生成した乱数値とを加算して得られるリトライ間隔値に基づいて前記マスタ装置から前記スレーブ装置へ転送要求を再送信するまでの時間を決定する手段を備えることを特徴とするバスシステム。
【請求項２２】
前記時間を決定する手段は、スレーブ装置内で前記乱数値を生成する手段と、マスタ装置内で前記リトライ設定値と前記乱数値とを加算する手段と、を有することを特徴とする請求項２１記載のバスシステム。
【請求項２３】
前記時間を決定する手段は、マスタ装置内で前記乱数値を生成して前記リトライ設定値と加算する手段を有することを特徴とする請求項２１記載のバスシステム。
【請求項２４】
前記時間を決定する手段は、スレーブ装置内で前記乱数値と前記リトライ設定値とを加算する手段を有することを特徴とする請求項２１記載のバスシステム。
【請求項２５】
請求項１から２４のバスシステムのうち何れか１つを搭載したことを特徴とする半導体集積回路。
【請求項２６】
請求項１から２４のバスシステムのうち何れか１つを有することを特徴とする情報処理装置。
【請求項２７】
請求項１から２４のバスシステムのうち何れか１つを搭載した半導体集積回路を有することを特徴とする情報処理装置。
【請求項２８】
マスタ装置とスレーブ装置がバスを介して接続されたバスシステムの転送要求のリトライ方法において、
前記スレーブ装置に固有に定められたリトライ設定値と疑似乱数生成した乱数値とを加算して得られるリトライ間隔値に基づいて前記マスタ装置から前記スレーブ装置へ転送要求を再送信するまでの時間を決定することを特徴とするリトライ方法。
【請求項２９】
スレーブ装置内で前記乱数値を生成しマスタ装置内で前記リトライ設定値と前記乱数値とを加算することを特徴とする請求項２８記載のリトライ方法。
【請求項３０】
マスタ装置内で前記乱数値を生成して前記リトライ設定値と加算することを特徴とする請求項２８記載のリトライ方法。
【請求項３１】
スレーブ装置内で前記乱数値と前記リトライ設定値とを加算することを特徴とする請求項２８記載のリトライ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バスシステムに関し、特に、マスタ装置からの転送要求がスレーブで拒否されたときのリトライ間隔についてライブ・ロックの発生を回避できるように適正化するバスシステムおよびリトライ方法に関する。
【背景技術】
【０００２】
図１２は従来のバスシステムの一例を示す図である。マスタユニット１−１およびマスタインタフェース９１−１からなる第１のマスタ装置と、マスタユニット１−２およびマスタインタフェース９１−２からなる第２のマスタ装置とが、コマンド、アドレス、ライトデータなどを転送するＣＷバス３に接続されている。また、スレーブユニット５およびスレーブインタフェース９２からなるスレーブ装置がＣＷバス３に接続されている。また、第１のマスタ装置のマスタインタフェース９１−１、第２のマスタ装置のマスタインタフェース９１−２およびスレーブ装置のスレーブインタフェース９２は、リードデータを転送するＲＤバス６に接続されている。
【０００３】
第１のマスタ装置のマスタユニット１−１からマスタインタフェース９１−１へ、転送要求ＲＥＱｍ１、コマンドＣＭＤｍ１、アドレスＡＤｍ１、ライトデータＷＤｍ１が送られる。逆方向に、マスタインタフェース９１−１からマスタユニット１−１へ、コマンドアクノリッジＣＡＣＫｍ１、バスエラー信号ＢＥＲｍ１が送られる。また、マスタインタフェース９１−１からＣＷバス３を介してスレーブ装置のスレーブインタフェース９２へ、転送要求ＲＥＱｂ、コマンドＣＭＤｂ、アドレス・ライトデータＡＤ／ＷＤｂが送られる。逆方向に、スレーブインタフェース９２からＣＷバス３を介してマスタインタフェース９１−１へ、確認応答ＡＣＫｂ、否定応答ＮＡＣＫｂが送られる。
【０００４】
同様に、第２のマスタ装置のマスタユニット１−２からマスタインタフェース９１−２へ、転送要求ＲＥＱｍ２、コマンドＣＭＤｍ２、アドレスＡＤｍ２、ライトデータＷＤｍ２が送られる。逆方向に、マスタインタフェース９１−２からマスタユニット１−２へ、コマンドアクノリッジＣＡＣＫｍ２、バスエラー信号ＢＥＲｍ２が送られる。また、マスタインタフェース９１−２からＣＷバス３を介してスレーブ装置のスレーブインタフェース９２へ、転送要求ＲＥＱｂ、コマンドＣＭＤｂ、多重化されたアドレス・ライトデータＡＤ／ＷＤｂが送られる。逆方向に、スレーブインタフェース９２からＣＷバス３を介してマスタインタフェース９１−２へ、確認応答ＡＣＫｂ、否定応答ＮＡＣＫｂが送られる。
【０００５】
スレーブ装置のスレーブインタフェース９２からスレーブユニット５へ、転送要求ＲＥＱｓ、コマンドＣＭＤｓ、アドレスＡＤｓ、ライトデータＷＤｓが送られる。逆方向に、スレーブユニット５からスレーブインタフェース９２へ、コマンドアクノリッジＣＡＣＫｓが送られる。
【０００６】
リードデータについては、スレーブユニット５からスレーブインタフェース９２へリードデータＲＤｓが送られる。スレーブインタフェース９２からＲＤバス６を介して第１のマスタ装置のマスタインタフェース９１−１または第２のマスタ装置のマスタインタフェース９１−２へリードデータＲＤｂが送られる。第１のマスタ装置ではマスタインタフェース９１−１からマスタユニット１−１へリードデータＲＤｍ１が送られ、第２のマスタ装置ではマスタインタフェース９１−２からマスタユニット１−２へリードデータＲＤｍ２が送られる。
【０００７】
ＣＷバス３の使用権を決めるために、調停回路７が設けられている。第１のマスタ装置のマスタインタフェース９１−１から調停回路７へバス使用権要求ＡＲＥＱｍ１が送られ、第２のマスタ装置のマスタインタフェース９１−２から調停回路７へバス使用権要求ＡＲＥＱｍ２が送られる。調停回路７が、第１のマスタ装置にＣＷバス３のバス使用権を与える場合にはグラント信号ＡＧＮＴｍ１をマスタインタフェース９１−１に送る。調停回路７が、第２のマスタ装置にＣＷバス３のバス使用権を与える場合にはグラント信号ＡＧＮＴｍ２をマスタインタフェース９１−２に送る。
【０００８】
図１３は、マスタインタフェース９１のＣＷバス３に関係する部分の内部ブロック図である。図１３では、ＲＤバス６に関係する部分すなわちリードデータの受信に関係する部分は省略されている。マスタプロトコル制御回路１１は、マスタユニット１からの転送要求およびコマンドを受け、プロトコルに基づいてマスタユニット１とスレーブ装置との間の通信を制御する。リトライ間隔値レジスタ１２には、予め設定されたリトライ間隔値ＲＩＮが格納される。リトライ間隔カウンタ１３は、否定応答ＮＡＣＫｂを受信すると計数値をリセットした後に、クロックＣＬＫのパルスを入力する毎に計数値をインクリメントしてクロックパルス数を計数する。比較器１４は、リトライ間隔カウンタ１３の計数値がリトライ間隔値ＲＩＮに一致したことを検出してリトライ時間通知信号ＲＴをアクティブレベルにする。リトライ回数レジスタ１５には予め許容リトライ回数ＰＲＣが格納される。リトライ回数カウンタ１６は、マスタユニット１からの転送要求ＲＥＱｍにより計数値をリセットした後に、否定応答ＮＡＣＫｂが受信される毎にインクリメントする。比較器１７は、計数値がリトライ回数レジスタ１５の許容リトライ回数ＰＲＣよりも大きい値になったことを検出してオーバーフロー信号ＯＦをアクティブレベルにする。リトライ要求回路１８は、オーバーフロー信号ＯＦがインアクティブレベルにあるときにリトライ時間通知信号ＲＴがアクティブレベルに変化したことを検出した場合には、リトライ起動要求信号ＲＲＱをマスタプロトコル制御回路１１に送る。リトライ起動要求信号ＲＲＱを受信したときには、マスタプロトコル制御回路１１は転送要求ＲＥＱｂ、コマンドＣＭＤｂ、アドレス（ＡＤ／ＷＤのアドレス部分）を再送する。バスエラー判定回路１９は、オーバーフロー信号ＯＦがアクティブレベルに変化したことを検出して、バスエラー信号ＢＥＲｍを出力する。
【０００９】
図１４（ａ）は、図１２および図１３で示した従来のバスシステムの動作シーケンス図である。図１４（ａ）では、２個のマスタ装置が前後して１個のスレーブ装置に対してリード転送要求を発信した場合の動作を示しており、これを参照して図１２の従来のバスシステムの動作を説明する。
【００１０】
時刻Ｔ１１において、マスタユニット１−１からマスタインタフェース９１−１へ転送要求ＲＥＱｍ１が送られる。同時にアドレスＡＤｍ１、コマンドＣＭＤｍ１などが同時にマスタインタフェース９１−１に渡される。
【００１１】
マスタインタフェース９１−１は、調停回路７にＣＷバス３のバス使用権を要求し、バス使用権が付与され且つＣＷバス３が未使用な状態になったときにＣＷバス３上に転送要求ＲＥＱｂを出す。マスタインタフェース９１−１内のリトライ回数カウンタ１６は０にリセットされる。
【００１２】
スレーブインタフェース９２は、ＣＷバス３を介してマスタユニット１−１からの転送要求ＲＥＱｂ、アドレス・ライトデータＡＤ／ＷＤｂ、コマンドＣＭＤｂを受信し、受信したコマンドＣＭＤｂおよびスレーブユニット５の状態に応じて、その転送要求ＲＥＱｂを受信するか拒否するかを判定する。スレーブユニット５は受信可能な状態なので、スレーブインタフェース９２はＣＷバス３上に確認応答ＡＣＫｂを出力するとともにスレーブユニット５に転送要求ＲＥＱｓを送信する。
【００１３】
マスタインタフェース９１−１は、確認応答ＡＣＫｂを受信すると、マスタユニット１−１にコマンドアクノリッジＣＡＣＫｍ１を送る。同時にデータフェーズの転送を開始する。データフェーズでは、マスタインタフェース９１−１は、ライトならばマスタユニット１−１にライトデータを要求し、受信したデータをＣＷバス３に出力するが、ここではリードであるので、ＣＷバス３を開放してリードデータが準備されるまでの所定の時間待つ。
【００１４】
一方、時刻Ｔ１２において、マスタユニット１−２からマスタインタフェース９１−２へ転送要求ＲＥＱｍ２が送られたとする。同時にアドレスＡＤｍ２、コマンドＣＭＤｍ２などがマスタインタフェース９１−２に渡される。
【００１５】
マスタインタフェース９１−２は、調停回路７にＣＷバス３のバス使用権を要求し、ＣＷバス３が使用中のため開放されるまで待ち、バス使用権が付与されると、ＣＷバス３上に転送要求ＲＥＱｂを出す。マスタインタフェース９１−２のリトライ回数カウンタ１６は０にリセットされる。
【００１６】
スレーブインタフェース９２は、ＣＷバス３を介してマスタユニット１−２からの転送要求ＲＥＱｂ、アドレスＡＤｂ、コマンドＣＭＤｂを受信する。しかしながら、スレーブユニット５はマスタユニット１−２からの転送要求の処理でビジー状態にあるので、スレーブインタフェース９２は、転送要求ＲＥＱｂを拒否すると判定し、否定応答ＮＡＣＫｂを返信する。
【００１７】
マスタインタフェース９１−２は、否定応答ＮＡＣＫｂを受信するとＣＷバス３を開放したのちに、リトライ回数カウンタ１６の計数値をインクリメントし、リトライ回数レジスタ１５に格納された許容リトライ回数ＰＲＣよりも大きいか否かを判定する。計数値が許容リトライ回数ＰＲＣを越えてしまった場合にはバスエラー判定回路１９がバスエラー信号ＢＥＲｍ１を出力するが、図１４（ａ）の場合には、計数値が許容リトライ回数ＰＲＣよりも小さい場合なので、マスタインタフェース９１−２は、リトライ間隔カウンタ１３がリトライ間隔値レジスタ１２に格納されたリトライ間隔値ＲＩＮの個数分のクロックパルスを計数するまでの時間（リトライ間隔時間）Ｔｒｉだけ待つ。
【００１８】
スレーブインタフェース９２では、マスタインタフェース１−１からの転送要求に対するリードデータの転送準備ができるとスレーブユニット５からリードデータＲＤｓを受信し、ＲＤバス６にリードデータＲＤｂを出力する。
【００１９】
マスタインタフェース９１−１は、ＲＤバス６を介してリードデータＲＤｂを受信してマスタユニット１−１へリードデータＲＤｍ１を送信する。時刻Ｔ１３に、マスタユニット１−１はリードデータＲＤｍ１を受信し、マスタユニット１−１のリード転送要求の処理を完了する。
【００２０】
一方、マスタインタフェース１−２では、リトライ間隔カウンタ１３の計数値がリトライ間隔値ＲＩＮに達したときに、プロトコル制御回路１１は、再度ＣＷバス３のバス使用権を調停回路７に要求する。バス使用権が付与されるとバス上に転送要求ＲＥＱｂを出力する。
【００２１】
スレーブインタフェース９２は、ＣＷバス３を介してマスタユニット１−２からの転送要求ＲＥＱｂ、アドレスＡＤｂ、コマンドＣＭＤｂを受信し、今回はスレーブユニット５が受信可能な状態にあるので、スレーブインタフェース９２はＣＷバス３上に確認応答ＡＣＫｂを出力するとともにスレーブユニット５に転送要求ＲＥＱｓを発信する。
【００２２】
マスタインタフェース９１−２は、確認応答ＡＣＫｂを受信すると、マスタユニット１−２にコマンドアクノリッジＣＡＣＫｍ２を送り、ＣＷバス３を開放してリードデータが準備されるまでの所定の時間待つ。スレーブインタフェース９２では、マスタインタフェース１−２からの転送要求に対するリードデータの転送準備ができるとスレーブユニット５からリードデータＲＤｓを受信し、ＲＤバス６にリードデータＲＤｂを出力する。マスタインタフェース９１−２は、ＲＤバス６を介してリードデータＲＤｂを受信してマスタユニット１−２へリードデータＲＤｍ２を送信する。時刻Ｔ１４に、マスタユニット１−２はリードデータＲＤｍ２を受信し、マスタユニット１−２のリード転送要求の処理を完了する。
【００２３】
図１４（ｂ）のタイミング図は、図１４（ａ）を用いて以上に説明した動作をタイミング図に示したものである。図１４（ｂ）では、マスタインタフェース９１−１から調停回路７へのバス使用権要求ＡＲＥＱｍ１およびこれに対する調停回路７からマスタインタフェース９１−１へのバス使用権付与のグラント信号ＡＧＮＴｍ１と、マスタインタフェース９１−２から調停回路７へのバス使用権要求ＡＲＥＱｍ２およびこれに対する調停回路７からマスタインタフェース９１−２へのバス使用権付与のグラント信号ＡＧＮＴｍ２とについても図示している。
【００２４】
従来のバスシステムでは、このようにして、複数のマスタユニットから１個のスレーブユニットへ転送要求が集中したときにおいても複数の転送要求を調整して応答することができる。
【発明の開示】
【発明が解決しようとする課題】
【００２５】
しかしながら、例えば図１２において、マスタユニット１−１からスレーブユニット５への転送要求ＡＣＫｂが周期的に発生し、これがマスタユニット１−２によりリトライ間隔値ＲＩＮに基づいて生成される転送要求ＡＣＫｂの周期と一致する場合には、マスタユニット１−２からの転送要求が拒否され続けて実行されない状況が続くことがある。これをライブ・ロックと称し、バスの転送効率を著しく低下させるため、発生を未然に防止し、発生した場合には速やかに解消させる必要がある。
【００２６】
図１５は、ライブ・ロックの発生を示す動作シーケンス図である。時刻Ｔ１で、マスタユニット１−１から転送要求ＲＥＱｍ１が発信され、時刻Ｔ２で、マスタユニット１−２から転送要求ＲＥＱｍ２が発信されたが、先に発信されたマスタユニット１−１からの転送要求が受け付けられてスレーブユニット５がビジー状態になるために、マスタユニット１−２からの転送要求はスレーブインタフェース９２において拒否され否定応答ＮＡＣＫｂがマスタインタフェース９１−２へ返信される。スレーブインタフェース９２は、否定応答ＮＡＣＫｂを受信してリトライ間隔時間Ｔｒｉの計時を始める。
【００２７】
一方、マスタユニット１−１の転送要求に対するリードデータＲＤｍ１がスレーブユニット５からＲＤバス６を介して時刻Ｔ３にマスタユニット１−１に転送され、リード処理が完了する。直後にマスタユニット１−１が次の転送要求ＲＥＱｍ１を発信するので、マスタユニット１−１からの転送要求が受け付けられてスレーブユニット５が再びビジー状態になる。
【００２８】
マスタインタフェース９１−２では、リトライ間隔時間Ｔｒｉが経過したことを検出して転送要求ＲＥＱｂをスレーブインタフェース９２に再送信するが、スレーブユニット５がビジー状態にあるため拒否されて、否定応答ＮＡＣＫｂがマスタインタフェース９１−２へ再度返信される。マスタインタフェース９１−２は、否定応答ＮＡＣＫｂを受信してリトライ間隔時間Ｔｒｉの計時を再度開始する。
【００２９】
図１５の場合には、マスタユニット１−１からの転送要求の発信周期が、マスタインタフェース９１−２の転送要求の再送信の周期と一致するため、以降はマスタユニット１−１からの転送要求のみが連続して実行される。マスタユニット１−２からの転送要求は拒否され続けるのでライブ・ロック状態となる。
【００３０】
ライブ・ロックが発生した場合にこれを解消するためには、周期的に転送要求の発信を行うマスタ装置（図１５ではマスタユニット１−１）の転送要求を一時停止させるか、または、ライブ・ロック状態にあるマスタ装置（図１５ではマスタインタフェース９１−２）が転送要求を再送信するまでのリトライ間隔時間を変更するかの何れかを行う必要がある。
【００３１】
周期的に転送要求するマスタ装置を一時停止させる方法をとるものとして、特開２０００−３１５１８８号公報に、バストランザクションを監視してライブ・ロックが発生したことを検出するとライブ・ロック状態のマスタ装置にバスを独占的に使用させるように制御する技術が開示されている。この技術を用いることにより確実にライブ・ロックを解消することが可能となるものの、バス使用権の調停回路内にライブ・ロック状態にあるか否かを検出するためのライブ・ロック検出回路を各マスタ装置に対応させて設け、またライブ・ロック状態が検出されたマスタ装置に対してバスの独占使用を設定する回路を設ける必要があるので、バス使用権調停回路のハードウェア量が大幅に増大してしまう。
【００３２】
ライブ・ロック状態にあるマスタ装置のリトライ間隔時間を変更するものとして、特開平９−１１４７５０号公報に、マスタ装置が複数のリトライ間隔時間レジスタを備え、第１のレジスタのリトライ間隔時間に設定したときに否定応答を所定の回数連続して受信した場合には、第２のレジスタに変更して異なるリトライ間隔時間とし、それでも所定回数の否定応答を受けた場合には第３のレジスタに変更して異なるリトライ間隔時間に順次設定する技術が開示されている。しかしながら、バスに複数のスレーブ装置が接続されている場合に、スレーブ装置のリード／ライトに要する時間は、スレーブ装置が高速のメモリであるか低速の周辺装置であるかなどスレーブ装置の機能により大きく異なる。このため、適切なリトライ間隔時間も転送要求対象のスレーブ装置毎に異なっている。したがって、バスに多数のスレーブ装置が接続される場合には、各マスタ装置内に、１個のスレーブ装置につき複数個のレジスタを含むレジスタグループとしたうえで複数個のスレーブ装置に対応して複数個のレジスタグループを設けなければならず、マスタ装置のハードウェア量が大幅に増大してしまう。
【００３３】
特開２０００−２５０８５０号公報には、スレーブ装置にリトライ間隔時間について基本のリトライ間隔時間を記憶した第１のタイムテーブルとこれより短いリトライ間隔時間を記憶した第２のタイムテーブルを備え、最初の否定応答を返信するときには第１のタイムテーブルのリトライ間隔時間をマスタ装置へ通知し、２回目以降の否定応答を返信するときには第２のタイムテーブルのリトライ間隔時間をマスタ装置へ通知する技術が開示されている。マスタ装置は、最初の否定応答を受けてから第１のタイムテーブルの基本リトライ間隔時間の経過を待って転送要求を再送信し、２回目以降は否定応答を受けてから第２のタイムテーブルのリトライ間隔時間の経過を待って転送要求を再送信する。この技術では、スレーブ装置が固有の基本リトライ間隔時間を記憶しているため、マスタ側でそれぞれのスレーブ装置に適合したリトライ間隔時間を記憶する必要がない点で前述の特開平９−１１４７５０号公報に開示された技術よりも改良されているが、第２のタイムテーブルのリトライ間隔時間が他のマスタ装置からの転送要求の周期と一致してライブ・ロックが発生する可能性があり、また、一旦ライブ・ロック状態になった場合にこれを解消するものでもない。但しこの技術では、第２のタイムテーブルのリトライ間隔時間を極めて短い時間に設定すれば実質的にバスの占有権を独占できるため、２回以上の否定応答を受けたマスタ装置からの転送要求が優先的に処理されることになり、ライブ・ロックの発生を未然に防止することが可能である。しかしながら、このようにするとバスが独占されるために転送要求対象のスレーブ装置が周辺装置のようにリード／ライトに時間がかかる装置であったときには、バスに接続された他のマスタ装置およびスレーブ装置間の送受信が長時間停止しバス使用効率が大幅に低下してしまう。
【００３４】
本発明の目的は、ライブ・ロックの発生を防止し、また、ライブ・ロック状態に陥った場合にもこれを解消することが可能で、且つ、これを実現するためのハードウェア量の増加が従来よりも小さくて済むバスシステムおよびリトライ方法を提供することにある。
【課題を解決するための手段】
【００３５】
本発明の第１の発明のバスシステムは、スレーブユニットとバスとの間に設けられ、前記スレーブユニットに固有に定められたリトライ設定値を格納するリトライ設定値格納回路と、擬似的に乱数を生成する疑似乱数発生器とを備え、マスタユニットからの転送要求への応答を拒否するときに否定応答を送信するとともに前記リトライ設定値と前記疑似乱数発生器で生成した乱数値とを含む否定応答付帯情報を前記バスを介してマスタユニットへ送信するスレーブインタフェースと、マスタユニットと前記バスとの間に設けられ、前記否定応答付帯情報から抽出された前記リトライ設定値と前記乱数値とを加算する加算器と、加算結果をリトライ間隔値として格納するリトライ間隔値格納回路とを備え、前記リトライ間隔値に基づいて転送要求を再送信するまでの時間を決定するマスタインターフェースと、を有して構成される。
【００３６】
第２の発明のバスシステムは、スレーブユニットとバスとの間に設けられ、マスタユニットからの転送要求とアドレスとを前記バスを介して受信し前記スレーブユニットに対する転送要求であればアドレス条件検出信号を出力するアドレスデコーダと、前記アドレス条件検出信号、マスタユニットからのコマンドおよび前記スレーブユニットの動作状態からマスタユニットからの転送要求に応答するか否かを判断し応答可能なときは前記バスに確認応答を出力し応答不可能なときは前記バスに否定応答を出力する応答条件判定回路と、前記スレーブユニットに固有に定められたリトライ設定値を格納するリトライ設定値格納回路と、所定の信号に起動されて擬似的に乱数を生成する疑似乱数発生器と、前記否定応答が出力されたときに追随して前記リトライ設定値および前記疑似乱数発生器で発生させた乱数値を含む否定応答付帯情報を前記バスに出力する否定応答付帯情報生成回路と、を備えるスレーブインタフェースと、前記バスとマスタユニットとの間に設けられ、前記バスから前記否定応答付帯情報を入力し前記リトライ設定値と前記乱数値とを抽出して出力するリトライ情報抽出回路と、前記リトライ設定値と前記乱数値とを加算してリトライ間隔値を算出する加算器と、前記否定応答の受信によりクロックパルスの計数を開始し計数値が前記リトライ間隔値と等しくなったことを検出してリトライ時間通知信号を出力するリトライ間隔計数部と、マスタユニットからの転送要求の受信により前記否定応答の受信回数の計数を開始し計数値が予め設定された許容リトライ回数より大きくなったことを検出してオーバーフロー信号を出力するリトライ回数計数部と、前記オーバーフロー信号がインアクティブレベルで前記リトライ時間通知信号がアクティブレベルとなったことを検出して転送要求の再送信を起動するリトライ要求回路と、前記オーバーフロー信号に基づいてバスエラーの発生を判定しマスタユニットへバスエラー信号を出力するバスエラー判定回路と、を備えるマスタインタフェースと、を有して構成される。
【００３７】
第３の発明のバスシステムは、スレーブユニットとバスとの間に設けられ、前記スレーブユニットに固有に定められたリトライ設定値を格納するリトライ設定値格納回路を備え、マスタユニットからの転送要求への応答を拒否するときに否定応答を送信するとともに前記リトライ設定値を含む否定応答付帯情報を前記バスを介してマスタユニットへ送信するスレーブインタフェースと、マスタユニットと前記バスとの間に設けられ擬似的に乱数を生成する疑似乱数発生器と、生成された乱数値と前記否定応答付帯情報から抽出された前記リトライ設定値とを加算する加算器と、加算結果をリトライ間隔値として格納するリトライ間隔値格納回路とを備え、前記リトライ間隔値に基づいて転送要求を再送信するまでの時間を決定するマスタインターフェースと、を有して構成される。
【００３８】
第４の発明のバスシステムは、スレーブユニットとバスとの間に設けられ、マスタユニットからの転送要求とアドレスとを前記バスを介して受信し前記スレーブユニットに対する転送要求であればアドレス条件検出信号を出力するアドレスデコーダと、前記アドレス条件検出信号、マスタユニットからのコマンドおよび前記スレーブユニットの動作状態からマスタユニットからの転送要求に応答するか否かを判断し応答可能なときは前記バスに確認応答を出力し応答不可能なときは前記バスに否定応答を出力する応答条件判定回路と、前記スレーブユニットに固有に定められたリトライ設定値を格納するリトライ設定値格納回路と、前記否定応答が出力されたときに追随して前記リトライ設定値を含む否定応答付帯情報を前記バスに出力する否定応答付帯情報生成回路と、を備えるスレーブインタフェースと、前記バスとマスタユニットとの間に設けられ、前記バスから前記否定応答付帯情報を入力し前記リトライ設定値を抽出して出力するリトライ情報抽出回路と、所定の信号に起動されて擬似的に乱数を生成する疑似乱数発生器と、前記リトライ設定値と前記疑似乱数発生器により生成された乱数値とを加算してリトライ間隔値を算出する加算器と、前記否定応答の受信によりクロックパルスの計数を開始し計数値が前記リトライ間隔値と等しくなったことを検出してリトライ時間通知信号を出力するリトライ間隔計数部と、マスタユニットからの転送要求の受信により前記否定応答の受信回数の計数を開始し計数値が予め設定された許容リトライ回数より大きくなったことを検出してオーバーフロー信号を出力するリトライ回数計数部と、前記オーバーフロー信号がインアクティブレベルで前記リトライ時間通知信号がアクティブレベルとなったことを検出して転送要求の再送信を起動するリトライ要求回路と、前記オーバーフロー信号に基づいてバスエラーの発生を判定しマスタユニットへバスエラー信号を出力するバスエラー判定回路と、を備えるマスタインタフェースと、を有して構成されている。
【００３９】
第５の発明のバスシステムは、スレーブユニットとバスとの間に設けられ、前記スレーブユニットに固有に定められたリトライ設定値を格納するリトライ設定値格納回路と、擬似的に乱数を生成する疑似乱数発生器と、生成した乱数値と前記リトライ設定値とを加算してリトライ間隔値を生成する加算器とを備え、マスタユニットからの転送要求への応答を拒否するときに否定応答を送信するとともに前記リトライ間隔値を含む否定応答付帯情報を前記バスを介してマスタユニットへ送信するスレーブインタフェースと、マスタユニットと前記バスとの間に設けられ、前記否定応答付帯情報から抽出された前記リトライ間隔値を格納するリトライ間隔値格納回路を備え、前記リトライ間隔値に基づいて転送要求を再送信するまでの時間を決定するマスタインターフェースと、を有して構成されている。
【００４０】
第６の発明のバスシステムは、スレーブユニットとバスとの間に設けられ、マスタユニットからの転送要求とアドレスとを前記バスを介して受信し前記スレーブユニットに対する転送要求であればアドレス条件検出信号を出力するアドレスデコーダと、前記アドレス条件検出信号、マスタユニットからのコマンドおよび前記スレーブユニットの動作状態からマスタユニットからの転送要求に応答するか否かを判断し応答可能なときは前記バスに確認応答を出力し応答不可能なときは前記バスに否定応答を出力する応答条件判定回路と、前記スレーブユニットに固有に定められたリトライ設定値を格納するリトライ設定値格納回路と、所定の信号に起動されて擬似的に乱数を生成する疑似乱数発生器と、前記リトライ設定値と前記疑似乱数発生器で生成した乱数値とを加算してリトライ間隔値を算出する加算器と、前記否定応答が出力されたときに追随して前記リトライ間隔値を含む否定応答付帯情報を前記バスに出力する否定応答付帯情報生成回路と、を備えるスレーブインタフェースと、前記バスとマスタユニットとの間に設けられ、前記バスから前記否定応答付帯情報を入力し前記リトライ間隔値を抽出して出力するリトライ情報抽出回路と、前記否定応答の受信によりクロックパルスの計数を開始し計数値が前記リトライ間隔値と等しくなったことを検出してリトライ時間通知信号を出力するリトライ間隔計数部と、マスタユニットからの転送要求の受信により前記否定応答の受信回数の計数を開始し計数値が予め設定された許容リトライ回数より大きくなったことを検出してオーバーフロー信号を出力するリトライ回数計数部と、前記オーバーフロー信号がインアクティブレベルで前記リトライ時間通知信号がアクティブレベルとなったことを検出して転送要求の再送信を起動するリトライ要求回路と、前記オーバーフロー信号に基づいてバスエラーの発生を判定しマスタユニットへバスエラー信号を出力するバスエラー判定回路と、を備えるマスタインタフェースと、を有して構成されている。
【００４１】
第７の発明のリトライ方法は、マスタ装置とスレーブ装置がバスを介して接続されたバスシステムの転送要求のリトライ方法において、前記スレーブ装置に固有に定められたリトライ設定値と疑似乱数生成した乱数値とを加算して得られるリトライ間隔値に基づいて前記マスタ装置から前記スレーブ装置へ転送要求を再送信するまでの時間を決定することを特徴としている。
【発明の効果】
【００４２】
本発明を適用することにより、ライブ・ロックの発生を未然に防止することができ、また、極めて希にライブ・ロック状態に陥ることが生じたとしてもこれを解消することが可能となる。また、リトライ設定値ＳＲＩはスレーブ装置に固有に設定された値を転送要求したスレーブ装置から送られて使用するので、転送準備に要する時間が大きく異なる種々のスレーブ装置がバスに接続される場合においても、リトライ間隔時間をそれぞれのスレーブ装置に対して適切な範囲に設定することできる。また、ライブ・ロックを回避するため追加するハードウェア量が特開平９−１１４７５０号公報に記載の技術によるバスシステムと比較して大幅に削減でき、特開２０００−２５０８５０号公報に記載された技術を用いてライブ・ロックを回避する場合に生じるバスの独占によるバス使用効率の低下も回避できる。
【発明を実施するための最良の形態】
【００４３】
本発明は、スレーブ装置に固有に定められたリトライ設定値と疑似乱数生成した乱数値とを加算して得られるリトライ間隔値に基づいてマスタ装置からスレーブ装置へ転送要求を再送信するまでの時間を決定する点が以下にあげる実施形態に共通する。以下、本発明について図面を参照して詳細に説明する。
【００４４】
図１、図２、図３は、本発明のバスシステムの第１実施形態を説明する図である。第１実施形態では、スレーブインタフェースで乱数値を生成してマスタインタフェースで加算する。図１はマスタインタフェースのブロック図であり、図２は、スレーブインタフェースのブロック図であり、図３は、バスシステムの一例を示す図である。
【００４５】
まず、バスシステム全体について図３を参照して説明する。第１実施形態のバスシステムは、図１２の従来のバスシステムにおけるスレーブインタフェース９２に替えて、スレーブインタフェース９２と同様の入出力に加えて否定応答付帯情報ＮＡＩＮＦｂを出力するスレーブインタフェース４を備えている。また、第１実施形態のバスシステムは、マスタインタフェース９１−１，９１−２に替えて、マスタインタフェース９１と同様の入出力に加え否定応答付帯情報ＮＡＩＮＦｂを入力するマスタインタフェース２−１，２−２を備えている。以下、バスシステムの構成を述べる。
【００４６】
マスタユニット１−１およびマスタインタフェース２−１からなる第１のマスタ装置と、マスタユニット１−２およびマスタインタフェース２−２からなる第２のマスタ装置とが、コマンド、アドレス、ライトデータなどを転送するＣＷバス３に接続されている。また、スレーブユニット５およびスレーブインタフェース４からなるスレーブ装置がＣＷバス３に接続されている。また、第１のマスタ装置のマスタインタフェース２−１、第２のマスタ装置のマスタインタフェース２−２およびスレーブ装置のスレーブインタフェース４は、リードデータを転送するＲＤバス６に接続されている。
【００４７】
第１のマスタ装置のマスタユニット１−１からマスタインタフェース２−１へ、転送要求ＲＥＱｍ１、コマンドＣＭＤｍ１、アドレスＡＤｍ１、ライトデータＷＤｍ１が送られる。逆方向に、マスタインタフェース２−１からマスタユニット１−１へ、コマンドアクノリッジＣＡＣＫｍ１、バスエラー信号ＢＥＲｍ１が送られる。コマンドアクノリッジＣＡＣＫｍ１はマスタインタフェース２−１がスレーブ装置から確認応答ＡＣＫｂを受信したことを通知する。また、マスタインタフェース２−１からＣＷバス３を介してスレーブ装置のスレーブインタフェース４へ、転送要求ＲＥＱｂ、コマンドＣＭＤｂ、アドレス・ライトデータＡＤ／ＷＤｂが送られる。逆方向に、スレーブインタフェース４からＣＷバス３を介してマスタインタフェース２−１へ、確認応答ＡＣＫｂ、否定応答ＮＡＣＫｂ、否定応答付帯情報ＮＡＩＮＦｂが送られる。
【００４８】
同様に、第２のマスタ装置のマスタユニット１−２からマスタインタフェース２−２へ、転送要求ＲＥＱｍ２、コマンドＣＭＤｍ２、アドレスＡＤｍ２、ライトデータＷＤｍ２が送られる。逆方向に、マスタインタフェース２−２からマスタユニット１−２へ、コマンドアクノリッジＣＡＣＫｍ２、バスエラー信号ＢＥＲｍ２が送られる。また、マスタインタフェース２−２からＣＷバス３を介してスレーブ装置のスレーブインタフェース４へ、転送要求ＲＥＱｂ、コマンドＣＭＤｂ、多重化されたアドレス・ライトデータＡＤ／ＷＤｂが送られる。逆方向に、スレーブインタフェース４からＣＷバス３を介してマスタインタフェース９１−２へ、確認応答ＡＣＫｂ、否定応答ＮＡＣＫｂ、否定応答付帯情報ＮＡＩＮＦｂが送られる。
【００４９】
スレーブ装置のスレーブインタフェース４からスレーブユニット５へ、転送要求ＲＥＱｓ、コマンドＣＭＤｓ、アドレスＡＤｓ、ライトデータＷＤｓが送られる。逆方向に、スレーブユニット５からスレーブインタフェース４へ、コマンドアクノリッジＣＡＣＫｓが送られる。コマンドアクノリッジＣＡＣＫｓはスレーブユニット５が次のコマンドを受信可能であることを通知する。
【００５０】
リードデータについては、スレーブユニット５からスレーブインタフェース４へリードデータＲＤｓが送られる。スレーブインタフェース４からＲＤバス６を介して第１のマスタ装置のマスタインタフェース２−１または第２のマスタ装置のマスタインタフェース２−２へリードデータＲＤｂが送られる。第１のマスタ装置ではマスタインタフェース２−１からマスタユニット１−１へリードデータＲＤｍ１が送られ、第２のマスタ装置ではマスタインタフェース２−２からマスタユニット１−２へリードデータＲＤｍ２が送られる。
【００５１】
ＣＷバス３の使用権を決めるために、調停回路７が設けられている。第１のマスタ装置のマスタインタフェース２−１から調停回路７へバス使用権要求ＡＲＥＱｍ１が送られ、第２のマスタ装置のマスタインタフェース２−２から調停回路７へバス使用権要求ＡＲＥＱｍ２が送られる。調停回路７が、第１のマスタ装置にＣＷバス３のバス使用権を与える場合にはグラント信号ＡＧＮＴｍ１をマスタインタフェース２−１に送る。調停回路７が、第２のマスタ装置にＣＷバス３のバス使用権を与える場合にはグラント信号ＡＧＮＴｍ２をマスタインタフェース２−２に送る。
【００５２】
次に、図１について説明する。図１は、第１実施形態のマスタインタフェース２ａのＣＷバス３に関係する部分の内部ブロックを示し、ＲＤバス６に関係する部分すなわちリードデータの受信に関係する部分は省略されている。
【００５３】
マスタインタフェース２ａにおいて、マスタプロトコル制御回路１１は、マスタユニット１からの転送要求ＲＥＱｍおよびコマンドＣＭＤｍを受け、プロトコルに基づいてマスタユニット１とスレーブ装置との間の通信を制御する。リトライ情報抽出回路３１は、スレーブインタフェース４ａより送信された否定応答付帯情報ＮＡＩＮＦｂからリトライ設定値ＳＲＩと乱数値ＲＮとを抽出する。リトライ設定値ＳＲＩがコード化されたものである場合にはデコードをも行う。例えば、４個のスレーブ装置のそれぞれのリトライ設定値ＳＲＩが、１０進数で１０、５０、１００、２００の場合には、スレーブ装置からは、１０が（００）、５０が（０１）、１００が（１０）、２００が（１１）のようにコード化されて送信され、リトライ情報抽出回路３１はデコード回路（またはデコード対照テーブル）を備えていてそれぞれを元のリトライ設定値１０、５０、１００、２００に復元する。この例では１０進数の２００をそのまま送信する場合には８ビット必要であるが、この例ではコード化することにより２ビットで送信可能である。加算器３２は、リトライ設定値ＳＲＩと乱数値ＲＮとを加算してリトライ間隔値ＲＩＮを出力する。
【００５４】
リトライ間隔計数部３３は、否定応答ＮＡＣＫｂを受信してからのクロックＣＬＫのパルスを計数し、リトライ間隔値ＲＩＮの個数に達したことを検出してリトライ時間通知信号ＲＴをアクティブレベルにする。リトライ間隔計数部３３は、例えば、リトライ間隔値ＲＩＮを保持するリトライ間隔値レジスタ１２と、否定応答ＮＡＣＫｂを受信すると計数値をリセットした後にクロックＣＬＫのパルスを入力する毎に計数値をインクリメントしてクロックパルス数を計数するリトライ間隔カウンタ１３と、リトライ間隔カウンタ１３の計数値がリトライ間隔値ＲＩＮに一致したことを検出してリトライ時間通知信号ＲＴをアクティブレベルにする比較器１４とによって構成される。なお、例えば加算等の回路動作によるクロック時間消費によるズレを考慮し、リトライ間隔値レジスタに設定する値を算出されたリトライ間隔値ＲＩＮに対して所定数αを増減して補正した値として設定してもよい。
【００５５】
リトライ回数計数部３４は、マスタユニット１からの転送要求ＲＥＱｍを受信してからの否定応答ＮＡＣＫｂの受信回数を計数し、計数値が予め設定された許容リトライ回数ＰＲＣよりも大きくなったことを検出してオーバーフロー信号ＯＦをアクティブレベルにする。リトライ回数計数部３４は、例えば、予め所定の許容リトライ回数ＰＲＣが格納されるにリトライ回数レジスタ１５と、マスタユニット１からの転送要求ＲＥＱｍにより計数値をリセットした後に否定応答ＮＡＣＫｂが受信される毎にインクリメントするリトライ回数カウンタ１６と、計数値がリトライ回数レジスタ１５の許容リトライ回数ＰＲＣよりも大きい値になったことを検出してオーバーフロー信号ＯＦをアクティブレベルにする比較器１７とによって構成される。
【００５６】
リトライ要求回路１８は、オーバーフロー信号ＯＦがインアクティブレベルにあるときにリトライ時間通知信号ＲＴがアクティブレベルに変化したことを検出した場合には、リトライ起動要求信号ＲＲＱをマスタプロトコル制御回路１１に送る。リトライ起動要求信号ＲＲＱを受信したときには、マスタプロトコル制御回路１１は転送要求ＲＥＱｂ、コマンドＣＭＤｂ、アドレス（ＡＤ／ＷＤのアドレス部分）を再送信する。バスエラー判定回路１９ａは、オーバーフロー信号ＯＦがアクティブレベルに変化したことを検出して、バスエラー信号ＢＥＲｍを出力する。また、バスエラー判定回路１９ａは、否定応答付帯情報ＮＡＣＫｂの否定応答原因情報部分を判定し、コマンドがスレーブ装置でサポートされていないなどの原因でリトライしても無駄である場合にもバスエラー信号ＢＥＲｍを出力する。
【００５７】
次に、図２について説明する。図２は、第１実施形態のスレーブインタフェース４ａのＣＷバス３に関係する部分の内部ブロックを示し、ＲＤバス６に関係する部分すなわちリードデータの受信に関係する部分は省略されている。
【００５８】
スレーブインタフェース４ａにおいて、アドレスデコーダ２１は、マスタユニット１からマスタインタフェース２ａおよびＣＷバス３を介して転送要求ＲＥＱｂと多重化されたアドレス・ライトデータＡＤ／ＷＤのアドレス部分とを受信し、スレーブユニット４ａ自身に対する転送要求であればアドレス条件検出信号ＡＣＤを出力する。スレーブプロトコル制御回路２２は、アドレス条件検出信号ＡＣＤ、マスタ装置からのコマンドＣＭＤｂを受け、プロトコルに基づいてマスタ装置とスレーブユニット５との間の通信を制御する。
【００５９】
スレーブ状態保持回路２３は、スレーブユニット５が転送要求を処理可能な状態であるか、または処理不能なビジー状態にあるかを示すスレーブ状態情報を入力し保持する。応答条件判定回路２４は、アドレス条件検出信号ＡＣＤ、コマンドＣＭＤｂ、スレーブ状態保持回路２３に保持されたスレーブ状態情報から転送要求ＲＥＱｂに応答するか否かを判断し、応答可能なときはＣＷバス３に確認応答ＡＣＫｂを出力し、応答不可能なときは否定応答ＮＡＣＫｂを出力する。
【００６０】
否定応答原因情報生成回路２５は、スレーブ状態保持回路２３に保持されたスレーブ状態情報を参照して否定応答ＮＡＣＫｂを返信する原因に関する情報を生成する。例えば、スレーブユニットがビジー状態にある、受信したコマンドがスレーブ装置でサポートされていない、などの情報がコード化されて生成される。
【００６１】
リトライ設定値格納回路であるリトライ設定値レジスタ４１は、スレーブユニットに固有に定められたリトライ設定値ＳＲＩｓを格納する。リトライ設定値がコード化されてスレーブユニットから送られる場合には、コード化された状態でリトライ設定値ＳＲＩｓを格納する。
【００６２】
疑似乱数発生器４２は、所定の信号に起動されて擬似的に乱数を生成する。図２では、所定の信号として否定応答ＮＡＣＫｂを用いているが、否定応答ＮＡＣＫｂに替えてアドレスデコーダ２１の出力であるアドレス条件検出信号ＡＣＤを用いても良い。アドレス条件検出信号ＡＣＤを用いた場合には、応答条件判定回路２４からの否定応答ＮＡＣＫｂの発信に先行して乱数値ＲＮｓの生成を行うことができるので、疑似乱数発生器４２には高速動作が要求されないという利点がある。応答判定結果が確認応答ＡＣＫｂであるときには生成済の乱数値ＲＮｓはそのまま廃棄される。
【００６３】
否定応答付帯情報生成回路４３は、否定応答ＮＡＣＫｂが出力されたときに追随して否定応答原因情報ＮＡＩ、リトライ設定値ＳＲＩｓおよび乱数値ＲＮｓを多重化して否定応答付帯情報ＮＡＩＮＦｂを生成しＣＷバス３へ出力する。否定応答付帯情報生成回路４３は、例えば、スレーブプロトコル制御装置により出力選択制御されるマルチプレクサ４４を用いて構成される。否定応答付帯情報ＮＡＩＮＦの転送では、一系統の信号線または信号線群により、否定応答原因情報ＮＡＩ、リトライ設定値ＳＲＩｓおよび乱数値ＲＮｓがスレーブプロトコル制御回路２２により設定された順序にしたがって順次転送される。
【００６４】
または、否定応答付帯情報ＮＡＩＮＦを構成する否定応答原因情報ＮＡＩ、リトライ設定値ＳＲＩｓおよび乱数値ＲＮｓが複数の系統の信号線または信号線群により別々に転送されるようにしてもよく、このように構成された場合には否定応答付帯情報生成回路４３を省略することができる。
【００６５】
次に、本発明の第１実施形態の動作について図１，２，３，４を参照して説明する。図４は、第１実施形態の動作シーケンス図である。従来例でライブ・ロックが発生する図１５の場合と同様に、マスタユニット１−１からスレーブユニット５への転送要求ＡＣＫｂが周期的に発生し、これがマスタユニット１−２によりリトライ間隔値ＲＩＮに基づいて生成される転送要求ＡＣＫｂの周期と一致するように初期設定されている場合を例として説明する。
【００６６】
時刻Ｔ１において、マスタユニット１−１からマスタインタフェース２−１に転送要求ＲＥＱｍ１が発生する。同時にアドレスＡＤＤｍ１、コマンドＣＭＤｍ１などがマスタインタフェース２−１に渡される。
【００６７】
マスタインタフェース２−１は、調停回路７にバス使用権を要求し、バス使用権が付与され且つＣＷバス３が未使用な状態になったときに、ＣＷバス３上に転送要求ＲＥＱｂを出す。同時に多重化されたアドレス・ライトデータＡＤ／ＷＤｂ、コマンドＣＭＤｂをＣＷバス３に出力する。マスタインタフェース２−１のリトライ回数カウンタ１６は０にリセットされる。
【００６８】
スレーブインタフェース４内のアドレスデコーダ２１は、アドレス・ライトデータＡＤ／ＷＤのアドレス部分をデコードし、自身がアドレスに指定されたスレーブ装置であることを検出した場合には、スレーブインタフェース４はＣＷバス３から転送要求ＲＥＱｂ、アドレス・ライトデータＡＤ／ＷＤｂ、コマンドＣＭＤｂを取り込む。
【００６９】
スレーブインタフェース４の応答条件判定回路２４では、受信したコマンドＣＭＤｂおよびスレーブ状態保持回路２３保持されたスレーブユニット５の状態に応じて、マスタユニット１−１からの転送要求ＲＥＱｂを受信するか拒否するかを判定する。図４では処理可能と判定したのでＣＷバス３上に確認応答ＡＣＫｂを出力するとともに、スレーブユニット５に転送要求ＲＥＱｂを送信する。
【００７０】
マスタインタフェース２−１は、確認応答ＡＣＫｂを受信すると、マスタユニット１−１にコマンドアクノリッジＣＡＣＫｍ１（図３参照）を送る。同時にデータフェーズの転送を開始する。データフェーズでは、マスタインタフェース２−１は、ライトならばマスタユニット１−１にライトデータを要求し、受信したデータをＣＷバス３に出力するが、図４ではリードであるので、ＣＷバス３を開放してリードデータが準備されるまでの所定の時間待つ。
【００７１】
一方、時刻Ｔ２において、マスタユニット１−２からマスタインタフェース２−２へ転送要求ＲＥＱｍ２が送られたとする。同時にアドレスＡＤｍ２、コマンドＣＭＤｍ２などがマスタインタフェース２−２に渡される。
【００７２】
マスタインタフェース２−２は、調停回路７にＣＷバス３のバス使用権を要求し、ＣＷバス３が使用中のため開放されるまで待ち、バス使用権が付与されると、ＣＷバス３上に転送要求ＲＥＱｂを出す。マスタインタフェース２−２のリトライ回数カウンタ１６は０にリセットされる。
【００７３】
スレーブインタフェース４内のアドレスデコーダ２１はアドレス・ライトデータＡＤ／ＷＤのアドレス部分をデコードし、自身がアドレスに指定されたスレーブ装置であることを検出した場合には、スレーブインタフェース４はＣＷバス３を介してマスタユニット１−２からの転送要求ＲＥＱｂ、アドレス・ライトデータＡＤ／ＷＤｂ、コマンドＣＭＤｂを取り込む。
【００７４】
スレーブインタフェース４の応答条件判定回路２４では、受信したコマンドＣＭＤｂおよびスレーブ状態保持回路２３保持されたスレーブユニット５の状態に応じて、マスタユニット１−１からの転送要求ＲＥＱｂを受信するか拒否するかを判定する。スレーブユニット５はマスタユニット１−２からの転送要求の処理でビジー状態にあるので、スレーブインタフェース４内の応答条件判定回路２４ではマスタユニット１−２からの転送要求ＲＥＱｂを拒否すると判定し、否定応答ＮＡＣＫｂをＣＷバス３を介して返信する。また、否定応答付帯情報生成回路４３から否定応答付帯情報ＮＡＩＮＦｂをＣＷバス３へ出力する。この第１回目の否定応答付帯情報ＮＡＩＮＦｂには、否定応答原因情報ＮＡＩとリトライ設定値ＳＲＩと乱数値ＲＮ（第１回目の乱数値ＲＮ１とする）とが含まれている。
【００７５】
マスタインタフェース２−２は、否定応答ＮＡＣＫｂおよび否定応答付帯情報ＮＡＩＮＦｂを受信するとリトライ回数カウンタ１６をカウントアップし、リトライ回数レジスタ１５に格納されている許容リトライ回数ＰＲＣよりも大きいか否かを判定する。リトライ回数カウンタの計数値は１であるのでオーバーフロー信号はインアクティブレベルを維持する。
【００７６】
また、マスタインタフェース２−２では、リトライ情報抽出回路３１により第１回目の否定応答付帯情報ＮＡＩＮＦｂからリトライ設定値ＳＲＩと乱数値ＲＮ（第１回目の乱数値ＲＮ１）を抽出し、加算器３２により加算しリトライ間隔値ＲＩＮ（第１回目のリトライ間隔値ＲＩＮ１＝ＳＲＩ＋ＲＮ１）を算出してリトライ間隔値レジスタ１２に格納する。なお、バス使用権は開放する。否定応答ＮＡＣＫｂをによりリトライ間隔カウンタ１３の計数値を一旦０にリセットしてからクロックパルス毎にインクリメントする。
【００７７】
一方、マスタユニット１−１の転送要求に対するリードデータＲＤｍ１がスレーブユニット５からＲＤバス６を介して時刻Ｔ３にマスタユニット１−１に転送され、リード処理が完了する。直後にマスタユニット１−１が次の転送要求ＲＥＱｍ１を発信するので、転送要求が受け付けられてスレーブユニット５が再びビジー状態になる。
【００７８】
マスタインタフェース２−２では、リトライ間隔カウンタ１３の計数値がリトライ間隔値レジスタ１２に格納された第１回目のリトライ間隔値ＲＩＮ１と等しくなると第１回目のリトライ間隔時間Ｔｒｉ１が経過したとして比較器１４からリトライ時間通知信号ＲＴがリトライ要求回路１８に送られてリトライ起動要求信号ＰＲＱが出力され、マスタプロトコル制御回路１１から転送要求ＲＥＱｂをスレーブインタフェース４に再送信する。
【００７９】
しかしながら、マスタインタフェース２−２から再送信された転送要求ＲＥＱｂはスレーブユニット５がビジー状態にあるため拒否され、否定応答ＮＡＣＫｂおよび第２回目の否定応答付帯情報ＮＡＩＮＦｂを送信する。第２回目の否定応答付帯情報ＮＡＩＮＦｂには、否定応答原因情報ＮＡＩとリトライ設定値ＳＲＩと乱数値ＲＮ（第２回目の乱数値ＲＮ２とする）が含まれている。マスタインタフェース２−２は、リトライ間隔値レジスタ１２に、第２回目のリトライ間隔値ＲＩＮ２＝ＳＲＩ＋ＲＮ２を格納し、否定応答ＮＡＣＫｂを受信して第２回目のリトライ間隔時間Ｔｒｉ２の計時を再度開始する。
【００８０】
第１回目の乱数値ＲＮ１と第２回目の乱数値ＲＮ２が異なった値である場合には、第２回目のリトライ間隔時間Ｔｒｉ２は第２回目のリトライ間隔時間Ｔｒｉ２とは異なった時間となる。第１回目のリトライ間隔時間Ｔｒ１がマスタユニット１−１からの転送要求の発信周期と一致した場合でも第２回目のリトライ間隔時間Ｔｒ２が第１回目のリトライ間隔時間Ｔｒｉ１とは（擬似的にではあるが）独立に決定されるため、第１回目のリトライ間隔時間Ｔｒ１とは異なる可能性が大きい。さらに第３回目以降のリトライ間隔時間についてもそれ以前のどのリトライ間隔時間に対しても独立に決定されるために、マスタインタフェース２−２のリトライ間隔時間とマスタユニット１−１からの転送要求の発信周期とが一致した状態が長期間継続することは実質的にあり得ないと容易に理解できる。したがって、本実施形態においては、ライブ・ロックの発生を防止し、また、ライブ・ロック状態に陥った場合にもこれを解消することが可能である。
【００８１】
図４は、リトライ間隔時間がＴｒｉ１＜Ｔｒｉ２＜Ｔｒｉ３となって発生した例であるが、３回目のリトライ間隔時間Ｔｒｉ３後のマスタインタフェース２−２からの転送要求ＲＥＱｂに対して時刻Ｔ４にスレーブインタフェース４から確認応答ＡＣＫｂが返信され、マスタユニット１−２からのリード転送要求に対するリードデータＲＤｍ２が、時刻Ｔ５にマスタユニット１−２に受信されている。
【００８２】
このように、本実施形態では、ライブ・ロックの発生を防止し、また、ライブ・ロック状態に陥った場合にもこれを解消することが可能である。また、リトライ設定値ＳＲＩはスレーブ装置に固有に設定された値を転送要求したスレーブ装置から送られて使用するので、転送準備に要する時間が大きく異なる種々のスレーブ装置がバスに接続される場合においても、リトライ間隔時間をそれぞれのスレーブ装置に対して適切な範囲に設定することできる。
【００８３】
また、例えばリトライ設定値を８ビットとし、生成する乱数値を４ビットとすると、疑似乱数発生器は４ビット分のフリップフロップと排他的ＯＲゲートとで構成でき、加算器は８ビットのリトライ設定値と４ビットの乱数値との加算が可能なものでよいので、本実施形態を構成するために追加されるハードウェア量は小さい。特に、多種類のスレーブ装置がバスに接続される場合には、特開平９−１１４７５０号公報に記載の技術によるバスシステムと比較して追加ハードウェア量を大幅に削減できる。
【００８４】
さらに、特開２０００−２５０８５０号公報に記載された技術を用いてライブ・ロックを回避する場合のように、特定のマスタ装置にバスが長期間占有され、他のマスタ装置がバスを使用できなくなることがあるという副作用も生じない。
【００８５】
なお、図１では、リトライ間隔計数部３３を、リトライ間隔値レジスタ１２、
リトライ間隔カウンタ１３および比較器１４で構成しているが、リトライ間隔カウンタ１３に替えて否定応答ＮＡＣＫｂを受信したときに加算器３２からリトライ間隔値をプリセットしクロックパルス毎にデクリメントするデクリメント型リトライ間隔カウンタとし、比較器１４に替えてデクリメントカウンタの計数値が０になったことを検出してリトライ時間通知信号ＲＴを出力するゼロ比較器としても良い。リトライ間隔計数部３３をこのように構成することにより、リトライ間隔値レジスタが不要になり、またゼロ比較器の回路が簡単化できる。
【００８６】
同様に、図１では、リトライ回数計数部３４を、リトライ回数レジスタ１５、
リトライ回数カウンタ１６および比較器１７で構成しているが、リトライ間隔カウンタ１３に替えてマスタユニットからの転送要求ＲＥＱｍを受信したときに所定の許容リトライ回数ＰＲＣに１を加えた値をプリセットし否定応答ＮＡＣＫｂを受信する毎にデクリメントするデクリメント型リトライ回数カウンタとし、比較器１７に替えてデクリメントカウンタの計数値が０になったことを検出してオーバーフロー信号ＯＦを出力するゼロ比較器としても良い。リトライ回数計数部３４をこのように構成することにより、リトライ回数レジスタが不要になり、またゼロ比較器の回路が簡単化できる。
【００８７】
次に、本発明の第２実施形態について説明する。図５は、第２実施形態のバスシステムのマスタインタフェース２ｂのブロック図であり、図６は、第２実施形態のバスシステムのスレーブインタフェース４ｂのブロック図である。バスシステム全体の構成は第１実施形態の図３と同様であるが、第２実施形態では、マスタインタフェース２ｂ内で疑似乱数発生を行いリトライ設定値と加算する。
【００８８】
図５のマスタインタフェース４ｂにおいて、マスタプロトコル制御回路１１は、マスタユニット１からの転送要求およびコマンドを受け、プロトコルに基づいてマスタユニット１とスレーブ装置との間の通信を制御する。リトライ情報抽出回路３１ａは、スレーブインタフェース４ｂより送信された否定応答付帯情報ＮＡＩＮＦｂからリトライ設定値ＳＲＩを抽出する。リトライ設定値ＳＲＩがコード化されたものである場合にはデコードを行うことは図１の第１実施形態におけるリトライ情報抽出回路３１と同様である。
【００８９】
疑似乱数発生器５１は、所定の信号を受信して乱数値ＲＮを生成し出力する。
なお、図５では、所定の信号として否定応答ＮＡＣＫｂを用いているが、否定応答ＮＡＣＫｂに替えてマスタプロトコル制御回路１１からＣＷバス３に出力される転送要求ＲＥＱｂを用いても良い。転送要求ＲＥＱｂを用いた場合には、否定応答ＮＡＣＫｂの受信に先行して乱数値ＲＮの生成を行うことができるので、疑似乱数発生器５１には高速動作が要求されないという利点がある。確認応答ＡＣＫｂを受信したときには生成済の乱数値ＲＮはそのまま廃棄される。加算器３２は、リトライ設定値ＳＲＩと乱数値ＲＮとを加算してリトライ間隔値ＲＩＮを算出して出力する。
【００９０】
リトライ間隔計数部３３は、否定応答ＮＡＣＫｂを受信してからのクロックＣＬＫのパルスを計数し、リトライ間隔値ＲＩＮの個数に達したことを検出してリトライ時間通知信号ＲＴをアクティブレベルにする。リトライ間隔計数部３３は、例えば、リトライ間隔値ＲＩＮを保持するリトライ間隔値レジスタ１２と、否定応答ＮＡＣＫｂを受信すると計数値をリセットした後にクロックＣＬＫのパルスを入力する毎に計数値をインクリメントしてクロックパルス数を計数するリトライ間隔カウンタ１３と、リトライ間隔カウンタ１３の計数値がリトライ間隔値ＲＩＮに一致したことを検出してリトライ時間通知信号ＲＴをアクティブレベルにする比較器１４とによって構成される。
【００９１】
リトライ回数計数部３４は、マスタユニット１からの転送要求ＲＥＱｍを受信してからの否定応答ＮＡＣＫｂの受信回数を計数し、計数値が予め設定された許容リトライ回数ＰＲＣよりも大きくなったことを検出してオーバーフロー信号ＯＦをアクティブレベルにする。リトライ回数計数部３４は、例えば、予め所定の許容リトライ回数ＰＲＣが格納されるにリトライ回数レジスタ１５と、マスタユニット１からの転送要求ＲＥＱｍにより計数値をリセットした後に否定応答ＮＡＣＫｂが受信される毎にインクリメントするリトライ回数カウンタ１６と、計数値がリトライ回数レジスタ１５の許容リトライ回数ＰＲＣよりも大きい値になったことを検出してオーバーフロー信号ＯＦをアクティブレベルにする比較器１７とによって構成される。
【００９２】
リトライ要求回路１８は、オーバーフロー信号ＯＦがインアクティブレベルにあるときにリトライ時間通知信号ＲＴがアクティブレベルに変化したことを検出した場合には、リトライ起動要求信号ＲＲＱをマスタプロトコル制御回路１１に送る。リトライ起動要求信号ＲＲＱを受信したときには、マスタプロトコル制御回路１１は転送要求ＲＥＱｂ、コマンドＣＭＤｂ、アドレス（ＡＤ／ＷＤのアドレス部分）を再送信する。バスエラー判定回路１９ａは、オーバーフロー信号ＯＦがアクティブレベルに変化したことを検出して、バスエラー信号ＢＥＲｍを出力する。また、バスエラー判定回路１９ａは、否定応答付帯情報ＮＡＣＫｂの否定応答原因情報部分を判定し、コマンドがスレーブ装置でサポートされていないなどの原因でリトライしても無駄である場合にもバスエラー信号ＢＥＲｍを出力する。
【００９３】
次に、図６について説明する。スレーブインタフェース４ｂにおいて、アドレスデコーダ２１は、マスタユニット１からマスタインタフェース２ｂおよびＣＷバス３を介して転送要求ＲＥＱｂと多重化されたアドレス・ライトデータＡＤ／ＷＤのアドレス部分とを受信し、スレーブユニット４ｂ自身に対する転送要求であればアドレス条件検出信号ＡＣＤを出力する。スレーブプロトコル制御回路２２は、アドレス条件検出信号ＡＣＤ、マスタ装置からのコマンドＣＭＤｂを受け、プロトコルに基づいてマスタ装置とスレーブユニット５との間の通信を制御する。
【００９４】
スレーブ状態保持回路２３は、スレーブユニット５が転送要求を処理可能な状態であるか、または処理不能なビジー状態にあるかを示すスレーブ状態情報を入力し保持する。応答条件判定回路２４は、アドレス条件検出信号ＡＣＤ、コマンドＣＭＤｂ、スレーブ状態保持回路２３に保持されたスレーブ状態情報から転送要求ＲＥＱｂに応答するか否かを判断し、応答可能なときはＣＷバス３に確認応答ＡＣＫｂを出力し、応答不可能なときは否定応答ＮＡＣＫｂを出力する。
【００９５】
否定応答原因情報生成回路２５は、スレーブ状態保持回路２３に保持されたスレーブ状態情報を参照して否定応答ＮＡＣＫｂを返信する原因に関する情報を生成する。
【００９６】
リトライ設定値格納回路であるリトライ設定値レジスタ４１は、スレーブユニットに固有に定められたリトライ設定値ＳＲＩｓを格納する。リトライ設定値がコード化されてスレーブユニットから送られる場合には、コード化された状態でリトライ設定値ＳＲＩｓを格納することは、図２の第１実施形態におけるリトライ設定値レジスタ４１と同様である。
【００９７】
否定応答付帯情報生成回路４３ａは、否定応答ＮＡＣＫｂが出力されたときに追随して否定応答原因情報ＮＡＩおよびリトライ設定値ＳＲＩｓを多重化して否定応答付帯情報ＮＡＩＮＦｂを生成しＣＷバス３へ出力する。否定応答付帯情報生成回路４３ａは、例えば、スレーブプロトコル制御装置により出力選択制御されるマルチプレクサ６１を用いて構成される。否定応答付帯情報ＮＡＩＮＦの転送では、一系統の信号線または信号線群により、否定応答原因情報ＮＡＩおよびリトライ設定値ＳＲＩｓがスレーブプロトコル制御回路２２により設定された順序にしたがって順次転送される。
【００９８】
または、否定応答付帯情報ＮＡＩＮＦを構成する否定応答原因情報ＮＡＩおよびリトライ設定値ＳＲＩｓが複数の系統の信号線または信号線群により別々に転送されるようにしてもよく、このように構成された場合には否定応答付帯情報生成回路４３ａを省略することができる。
【００９９】
第２実施形態では、スレーブインタフェース４ｂからリトライ設定値ＳＲＩを含む否定応答付帯情報ＮＡＩＮＦｂがマスタインタフェース２ｂに送られ、マスタインタフェース２ｂ内の疑似乱数発生器５１で生成された乱数値ＲＮと否定応答付帯情報ＮＡＩＮＦｂから抽出されたリトライ設定値ＳＲＩとを加算して算出したリトライ間隔値ＲＩＮに基づいて転送要求ＲＥＱｂを再送信するまでのリトライ間隔時間が決定される。この第２実施形態においてもリトライ設定値ＳＲＩと乱数値ＲＮとを加算してリトライ間隔値ＳＲＩとする点において第１実施形態と同様であるので、効果においても第１実施形態と同様であり、ライブ・ロックの発生を防止することができ、また、ライブ・ロック状態に陥ったとしてもこれを解消することが可能である。また、リトライ設定値ＳＲＩはスレーブ装置に固有に設定された値を転送要求したスレーブ装置から送られて使用するので、転送準備に要する時間が大きく異なる種々のスレーブ装置がバスに接続される場合においても、リトライ間隔時間をそれぞれのスレーブ装置に対して適切な範囲に設定することできる。
【０１００】
第２実施形態では、疑似乱数発生器と加算器とをマスタインタフェース内にのみ持つので、バスに接続するマスタ装置の個数が少なくスレーブ装置の個数が多い構成のバスシステムでは、第１実施形態よりもハードウェア量の増加を少なく抑えることができる。
【０１０１】
次に、本発明の第３実施形態について説明する。図７は、第３実施形態のバスシステムのマスタインタフェース２ｃのブロック図であり、図８は、第３実施形態のバスシステムのスレーブインタフェース４ｃのブロック図である。バスシステム全体の構成は第１実施形態の図３と同様であるが、第３実施形態では、スレーブインタフェース４ｃ内で乱数値を発生してリトライ設定値と加算してリトライ間隔値を算出し、リトライ間隔値をマスタインタフェース２ｃへ送る。
【０１０２】
図７のマスタインタフェース４ｃにおいて、マスタプロトコル制御回路１１は、マスタユニット１からの転送要求およびコマンドを受け、プロトコルに基づいてマスタユニット１とスレーブ装置との間の通信を制御する。リトライ情報抽出回路７１は、スレーブインタフェース４ｃより送信された否定応答付帯情報ＮＡＩＮＦｂからリトライ間隔値ＲＩＮを抽出する。
【０１０３】
リトライ間隔計数部３３は、否定応答ＮＡＣＫｂを受信してからのクロックＣＬＫのパルスを計数し、リトライ間隔値ＲＩＮの個数に達したことを検出してリトライ時間通知信号ＲＴをアクティブレベルにする。リトライ間隔計数部３３は、例えば、リトライ間隔値ＲＩＮを保持するリトライ間隔値レジスタ１２と、否定応答ＮＡＣＫｂを受信すると計数値をリセットした後にクロックＣＬＫのパルスを入力する毎に計数値をインクリメントしてクロックパルス数を計数するリトライ間隔カウンタ１３と、リトライ間隔カウンタ１３の計数値がリトライ間隔値ＲＩＮに一致したことを検出してリトライ時間通知信号ＲＴをアクティブレベルにする比較器１４とによって構成される。
【０１０４】
リトライ回数計数部３４は、マスタユニット１からの転送要求ＲＥＱｍを受信してからの否定応答ＮＡＣＫｂの受信回数を計数し、計数値が予め設定された許容リトライ回数ＰＲＣよりも大きくなったことを検出してオーバーフロー信号ＯＦをアクティブレベルにする。リトライ回数計数部３４は、例えば、予め所定の許容リトライ回数ＰＲＣが格納されるにリトライ回数レジスタ１５と、マスタユニット１からの転送要求ＲＥＱｍにより計数値をリセットした後に否定応答ＮＡＣＫｂが受信される毎にインクリメントするリトライ回数カウンタ１６と、計数値がリトライ回数レジスタ１５の許容リトライ回数ＰＲＣよりも大きい値になったことを検出してオーバーフロー信号ＯＦをアクティブレベルにする比較器１７とによって構成される。
【０１０５】
リトライ要求回路１８は、オーバーフロー信号ＯＦがインアクティブレベルにあるときにリトライ時間通知信号ＲＴがアクティブレベルに変化したことを検出した場合には、リトライ起動要求信号ＲＲＱをマスタプロトコル制御回路１１に送る。リトライ起動要求信号ＲＲＱを受信したときには、マスタプロトコル制御回路１１は転送要求ＲＥＱｂ、コマンドＣＭＤｂ、アドレス（ＡＤ／ＷＤのアドレス部分）を再送信する。バスエラー判定回路１９ａは、オーバーフロー信号ＯＦがアクティブレベルに変化したことを検出して、バスエラー信号ＢＥＲｍを出力する。また、バスエラー判定回路１９ａは、否定応答付帯情報ＮＡＣＫｂの否定応答原因情報部分を判定し、コマンドがスレーブ装置でサポートされていないなどの原因でリトライしても無駄である場合にもバスエラー信号ＢＥＲｍを出力する。
【０１０６】
次に、図８について説明する。スレーブインタフェース４ｃにおいて、アドレスデコーダ２１は、マスタユニット１からマスタインタフェース２ｃおよびＣＷバス３を介して転送要求ＲＥＱｂと多重化されたアドレス・ライトデータＡＤ／ＷＤのアドレス部分とを受信し、スレーブユニット４ｃ自身に対する転送要求であればアドレス条件検出信号ＡＣＤを出力する。スレーブプロトコル制御回路２２は、アドレス条件検出信号ＡＣＤ、マスタ装置からのコマンドＣＭＤｂを受け、プロトコルに基づいてマスタ装置とスレーブユニット５との間の通信を制御する。
【０１０７】
スレーブ状態保持回路２３は、スレーブユニット５が転送要求を処理可能な状態であるか、または処理不能なビジー状態にあるかを示すスレーブ状態情報を入力し保持する。応答条件判定回路２４は、アドレス条件検出信号ＡＣＤ、コマンドＣＭＤｂ、スレーブ状態保持回路２３に保持されたスレーブ状態情報から転送要求ＲＥＱｂに応答するか否かを判断し、応答可能なときはＣＷバス３に確認応答ＡＣＫｂを出力し、応答不可能なときは否定応答ＮＡＣＫｂを出力する。
【０１０８】
否定応答原因情報生成回路２５は、スレーブ状態保持回路２３に保持されたスレーブ状態情報を参照して否定応答ＮＡＣＫｂを返信する原因に関する情報を生成する。
【０１０９】
リトライ設定値格納回路であるリトライ設定値レジスタ４１は、スレーブユニットに固有に定められたリトライ設定値ＳＲＩｓを格納する。第３実施形態ではリトライ設定値ＳＲＩｓには実際の数値とし、コード化されたものは使用しない。
【０１１０】
疑似乱数発生器４２は、所定の信号に起動されて乱数値ＲＮｓを生成する。図８では、所定の信号として否定応答ＮＡＣＫｂを用いているが、否定応答ＮＡＣＫｂに替えてアドレスデコーダ２１の出力であるアドレス条件検出信号ＡＣＤを用いても良い。アドレス条件検出信号ＡＣＤを用いた場合には、応答条件判定回路２４からの否定応答ＮＡＣＫｂの発信に先行して乱数値ＲＮｓの生成を行うことができるので、疑似乱数発生器４２には高速動作が要求されないという利点がある。加算器８１は、リトライ設定値ＳＲＩｓと乱数値ＲＮｓを加算してリトライ間隔値ＲＩＮｓを生成する。
【０１１１】
否定応答付帯情報生成回路８２は、否定応答ＮＡＣＫｂが出力されたときに追随して否定応答原因情報ＮＡＩおよびリトライ間隔値ＲＩＮｓを多重化して否定応答付帯情報ＮＡＩＮＦｂを生成しＣＷバス３へ出力する。否定応答付帯情報生成回路８２は、例えば、スレーブプロトコル制御装置により出力選択制御されるマルチプレクサ８３を用いて構成される。否定応答付帯情報ＮＡＩＮＦの転送では、一系統の信号線または信号線群により、否定応答原因情報ＮＡＩおよびリトライ間隔値ＲＩＮｓがスレーブプロトコル制御回路２２により設定された順序にしたがって順次転送される。
【０１１２】
または、否定応答付帯情報ＮＡＩＮＦを構成する否定応答原因情報ＮＡＩおよびリトライ間隔値ＲＩＮｓが複数の系統の信号線または信号線群により別々に転送されるようにしてもよく、このように構成された場合には否定応答付帯情報生成回路８２を省略することができる。
【０１１３】
第３実施形態では、スレーブインタフェース４ｃ内で乱数値ＲＮとリトライ設定値ＳＲＩとを加算してリトライ間隔値ＲＩＮが算出され、マスタインタフェース２ｃに送られて、リトライ間隔値ＲＩＮに基づいて転送要求ＲＥＱｂを再送信するまでのリトライ間隔時間が決定される。第３実施形態においてもリトライ設定値ＳＲＩと乱数値ＲＮとを加算してリトライ間隔値ＳＲＩとする点では第１実施形態と同様であるので、効果においても第１実施形態と同様であり、ライブ・ロックの発生を防止することができ、また、ライブ・ロック状態に陥ったとしてもこれを解消することが可能である。また、リトライ設定値ＳＲＩはスレーブ装置に固有に設定された値を使用するので、転送準備に要する時間が大きく異なる種々のスレーブ装置がバスに接続される場合においても、リトライ間隔時間をそれぞれのスレーブ装置に対して適切な範囲に設定することできる。
【０１１４】
第３実施形態では、疑似乱数発生器と加算器とをスレーブインタフェース内にのみ持つので、バスに接続するスレーブ装置の個数が少なくマスタ装置の個数が多い構成のバスシステムでは、第１実施形態よりもハードウェア量の増加を少なく抑えることができる。
【０１１５】
なお、図５および図７では、リトライ間隔計数部３３を、リトライ間隔値レジスタ１２、リトライ間隔カウンタ１３および比較器１４で構成しているが、図１の場合と同様に、リトライ間隔カウンタ１３に替えて否定応答ＮＡＣＫｂを受信したときに加算器３２からリトライ間隔値をプリセットしクロックパルス毎にデクリメントするデクリメント型リトライ間隔カウンタとし、比較器１４に替えてデクリメントカウンタの計数値が０になったことを検出してリトライ時間通知信号ＲＴを出力するゼロ比較器としても良い。リトライ間隔計数部３３をこのように構成することにより、リトライ間隔値レジスタが不要になり、またゼロ比較器の回路が簡単化できる。
【０１１６】
同様に、図５および図７では、リトライ回数計数部３４を、リトライ回数レジスタ１５、リトライ回数カウンタ１６および比較器１７で構成しているが、図１の場合と同様に、リトライ間隔カウンタ１３に替えてマスタユニットからの転送要求ＲＥＱｍを受信したときに所定の許容リトライ回数ＰＲＣに１を加えた値をプリセットし否定応答ＮＡＣＫｂを受信する毎にデクリメントするデクリメント型リトライ回数カウンタとし、比較器１７に替えてデクリメントカウンタの計数値が０になったことを検出してオーバーフロー信号ＯＦを出力するゼロ比較器としても良い。リトライ回数計数部３４をこのように構成することにより、リトライ回数レジスタが不要になり、またゼロ比較器の回路が簡単化できる。
【０１１７】
図９は、本発明のバスシステムを搭載した半導体集積回路の一例を示す図である。半導体集積回路１０１は内部に本発明のバスシステム１００を搭載し、バスシステム１００は、ＣＰＵであるバスマスタ１−１がマスタインタフェース２−１を介してＣＷバス３に接続され、ＤＭＡ(Direct Memory Access)であるバスマスタ２−２がマスタインタフェース２−２を介してＣＷバス３に接続され、メモリであるスレーブユニット５−１がスレーブインタフェース４−１を介してＣＷバス３に接続され、外部との通信用Ｉ／Ｏであるスレーブユニット５−２がスレーブインタフェース４−２を介してＣＷバス３に接続されている。７は調停回路で、６はＲＤバスである。バスシステム１００を備えることにより、半導体集積回路１０１においては、ライブ・ロックの発生を未然に防止することができ、また、ライブ・ロック状態が生じたとしてもこれを解消することができる。
【０１１８】
図１０は、本発明のバスシステムを有する情報処理装置の一例を示す図である。情報処理装置１１０は内部に本発明のバスシステム１００ａを有し、バスシステム１００ａは、ＣＷバス３に接続するマスタインタフェース２−１を含むマイクロコンピュータチップ１１１と、ＣＷバス３に接続するマスタインタフェース２−２を含むＤＭＡチップ１１２と、ＣＷバス３に接続するスレーブインタフェース４−１を含むメモリチップ１１３と、ＣＷバス３に接続に接続するスレーブインタフェース４−２を含む通信用Ｉ／Ｏチップを備えて構成されている。図９と同様に、７は調停回路で、６はＲＤバスである。バスシステム１００ａを備えることにより、情報処理装置１１０においては、ライブ・ロックの発生を未然に防止することができ、また、ライブ・ロック状態が生じたとしてもこれを解消することができる。
【０１１９】
図１１は、本発明のバスシステムを搭載した半導体集積回路を有する情報処理装置の一例を示す図である。情報処理装置１２０は、本発明のバスシステム１００を搭載した半導体集積回路１０１ａと、外部バス１２２と、外部メモリ１２３とを有して構成されている。バスシステム１００はバスブリッジ１２１を介して外部バス１２２と接続され、バスシステム１００内のＣＰＵ（図９参照）はバスシステム内のＣＷバス３およびＲＤバス６と、バスブリッジ１２１と、外部バス１２２とを介して外部メモリ１２３にアクセスできる構成となっている。この情報処理装置１２０においても半導体集積回路１０１ａがバスシステム１００ａを備えていることにより、ライブ・ロックの発生を未然に防止することができ、また、ライブ・ロック状態が生じたとしてもこれを解消することができる。
【図面の簡単な説明】
【０１２０】
【図１】本発明の第１実施形態のマスタインタフェースのブロック図である。
【図２】本発明の第１実施形態のスレーブインタフェースのブロック図である。
【図３】本発明のバスシステムの一例を示す図である。
【図４】第１実施形態の動作シーケンス図である。
【図５】本発明の第２実施形態のマスタインタフェースのブロック図である。
【図６】本発明の第２実施形態のスレーブインタフェースのブロック図である。
【図７】本発明の第３実施形態のマスタインタフェースのブロック図である。
【図８】本発明の第３実施形態のスレーブインタフェースのブロック図である。
【図９】本発明を搭載した半導体集積回路の一例を示す図である。
【図１０】本発明を有する情報処理装置の一例を示す図である。
【図１１】本発明を搭載した半導体集積回路を有する情報処理装置の一例を示す図である。
【図１２】従来のバスシステムの一例を示す図である。
【図１３】従来のバスシステムにおけるマスタインタフェースのブロック図である。
【図１４】（ａ）は従来のバスシステムの動作シーケンス図であり、（ｂ）は動作タイミング図である。
【図１５】ライブ・ロックの発生を示す動作シーケンス図である。
【符号の説明】
【０１２１】
１    マスタユニット
２，２ａ，２ｂ，２ｃ    マスタインタフェース
３    ＣＷバス
４，４ａ，４ｂ，４ｃ    スレーブインタフェース
５    スレーブユニット
６    ＲＤバス
７    調停回路
１１    マスタプロトコル制御回路
１８    リトライ要求回路
１９，１９ａ    バスエラー判定回路
２１    アドレスデコーダ
２２    スレーブプロトコル制御回路
２３    スレーブ状態保持回路
２４    応答条件判定回路
２５    否定応答原因情報生成回路
３１，３１ａ，７１    リトライ情報抽出回路
３２，８１    加算器
３３    リトライ間隔計数部
３４    リトライ回数計数部
４１    リトライ設定値レジスタ
４２，５１    疑似乱数発生器
４３，４３ａ，８２    否定応答付帯情報生成回路
１００，１００ａ    バスシステム
１０１，１０１ａ    半導体集積回路
１１０，１２０    情報処理装置
１１１    マイクロコンピュータチップ
１１２    ＤＭＡチップ
１１３    メモリチップ
１１４    通信処理チップ
１２１    バスブリッジ
１２２    外部バス
１２３    外部メモリ
ＲＥＱｍ，ＲＥＱｂ，ＲＥＱｓ    転送要求
ＡＣＫｂ    確認応答
ＮＡＣＫｂ    否定応答
ＮＡＩＮＦｂ    否定応答付帯情報
【図１】
2005196808.tif 000003
【図２】
2005196808.tif 000004
【図３】
2005196808.tif 000005
【図４】
2005196808.tif 000006
【図５】
2005196808.tif 000007
【図６】
2005196808.tif 000008
【図７】
2005196808.tif 000009
【図８】
2005196808.tif 000010
【図９】
2005196808.tif 000011
【図１０】
2005196808.tif 000012
【図１１】
2005196808.tif 000013
【図１２】
2005196808.tif 000014
【図１３】
2005196808.tif 000015
【図１４】
2005196808.tif 000016
【図１５】
2005196808.tif 000017