(57)【要約】【課題】物理的にループ接続されたポートをスリープステートに遷移させつつも、ループ接続されたバスケーブルが物理的に切断されるときのフェールセーフを実現することのできるインターフェース装置及びトポロジ構築方法を提供する。【解決手段】インターフェース装置１０Ａは、バスリセット発生後にトポロジの変化を検出したときに、ループ検出によってスリープステートに遷移したポートのスリープ状態を解除するためのスリープ解除回路５０を備える。このスリープ解除回路５０は、ループ検出によってスリープステートに遷移したポートの存在を検出したときに第１検出信号Ｄ１を生成するループ検出回路６０と、トポロジの変化を検出したときに第２検出信号Ｄ２を生成するトポロジ監視回路７０とを備える。また、スリープ解除回路５０は、第１及び第２検出信号Ｄ１，Ｄ２に応答して、スリープ解除パケットＳＬを生成するスリープ解除制御回路８０を備える。【選択図】図１
2010056716.tif 000002
【特許請求の範囲】
【請求項１】
バスケーブルで接続された他ノードとの間でデータの送受信を行う自ノードに備えられたインターフェース装置であって、
前記バスケーブルによって他ノードのポートと接続されるポートと、
前記自ノードのポート毎に対応して設けられ、トポロジ中に当該ポートによるループが検出されると、ループ・ディスエーブルステートへ遷移させて当該ポートを論理的に切断された状態にし、さらにスリープステートに遷移させるステートマシンと、
前記トポロジの変化を検出したときに、前記スリープステートであるポートのスリープステートを解除するためのスリープ解除信号を送信するスリープ解除回路と、
を備えることを特徴とするインターフェース装置。
【請求項２】
前記スリープ解除回路は、
前記トポロジ内の全ノードの物理層レジスタ内に格納された、物理的な接続の有無を示すコネクトビット及び前記スリープステートを通知するスリープビットを全ポート分読み出し、これらコネクトビット及びスリープビットに基づいて、前記スリープステートのポートが存在することを検出したときに第１検出信号を生成する検出回路と、
前記トポロジ内のノード数がバスリセットの発生前後で減少したことを検出したときに第２検出信号を生成するトポロジ監視回路と、
前記第１検出信号及び前記第２検出信号に応答して、前記スリープ解除信号を送信するスリープ解除信号送信回路と、
を備えることを特徴とする請求項１に記載のインターフェース装置。
【請求項３】
前記ステートマシンは、前記スリープステートのときに、前記スリープ解除信号を受信すると、前記スリープステートからディスコネクトステートに遷移させることを特徴とする請求項１又は２に記載のインターフェース装置。
【請求項４】
前記検出回路は、前記コネクトビットが物理的に接続されていることを示す値で、且つ前記スリープビットがスリープステートであることを示す値を有するポートがトポロジ内に存在するときに、前記第１検出信号を生成することを特徴とする請求項２又は３に記載のインターフェース装置。
【請求項５】
前記検出回路は、前記トポロジ内に中断処理によってスリープステートに遷移されたポートが存在せず、且つ前記コネクトビットが物理的に接続されていることを示す値で、前記スリープビットがスリープステートであることを示す値を有するポートがトポロジ内に存在するときに、前記第１検出信号を生成することを特徴とする請求項２又は３に記載のインターフェース装置。
【請求項６】
前記検出回路は、
前記トポロジ内の全ての他ノードの全ポートに対応する前記コネクトビット及び前記スリープビットを読み出すためのリモートアクセスパケットを送信する読み出し回路と、
前記アクセスパケットに対する応答パケットを前記他ノードから受信し、該受信した応答パケットから前記コネクトビット及び前記スリープビットを取得する受信回路と、
を備えることを特徴とする請求項２〜５のいずれか１つに記載のインターフェース装置。
【請求項７】
複数のノードがポートにてループ接続されたときに、ループを切断するように論理的に接続されたポートを、ループ・ディスエーブルステートに遷移させ、さらにスリープステートに遷移させるトポロジ構築方法であって、
前記スリープステートに遷移されたポートが存在するトポロジにおいて、該トポロジが変化したときにスリープ解除回路から送信されるスリープ解除信号に応答して、前記スリープステートのポートをディスコネクトステートに遷移させることを特徴とするトポロジ構築方法。
【請求項８】
前記スリープ解除信号は、前記トポロジ内の全ポートに送信されるリジュームパケット、あるいは前記スリープステートが解除される対象のポートのみに送信されるリモートコマンドパケットであることを特徴とする請求項７に記載のトポロジ構築方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、インターフェース装置及びトポロジ構築方法に関するものである。
【背景技術】
【０００２】
従来、自動車のエレクトロニクス化が急速に進んでおり、ＩＥＥＥ１３９４ｂ−２００２規格をベースにして車載用のシリアルインターフェースとして開発されたＩＤＢ１３９４規格が注目されている。このＩＤＢ１３９４規格は、デジタル映像ストリームを多重伝送できるだけの十分な高伝送帯域を持っており、映像と音声の多重転送ができる車載マルチメディアネットワークに適した規格である。したがって、ＩＤＢ１３９４規格を利用した情報系ＬＡＮでは、ＤＴＶ（Ｄｉｇｉｔａｌ  ＴＶ）やＤＶＤ−Ｖｉｄｅｏの映像やＤＶＤ−Ａｕｄｉｏの音楽等を高品質なデジタルコンテンツとして鑑賞することができる。さらに、ＩＤＢ１３９４規格を利用した情報系ＬＡＮでは、前席及び後席で別々の映像を楽しむリアシートエンターテイメントシステムを構築することも可能である。
【０００３】
ところで、ＩＤＢ１３９４規格のベースであるＩＥＥＥ１３９４ｂ−２００２規格では、図９（ａ）に示すようなループ状のトポロジが許容されていない。このＩＥＥＥ１３９４ｂ−２００２規格において、誤ってループ状のトポロジが構築された場合には、ループテストにおいてそのループが検出され、例えば最後に接続されたバスケーブル（図９の例では、バスケーブル１ｃ）が論理的に切断される（例えば、特許文献１参照）。すなわち、バスケーブル１ｃに接続されたノードＢのポートＰ２Ｂ及びノードＣのポートＰ１Ｃを、論理的切断状態であるループ・ディスエーブル（Loop_disabled）ステートに遷移させる。これによって、ループ状のトポロジをデイジーチェーン型のトポロジに変更することができる。ただし、上記ループ・ディスエーブルステートでは、ポート間でお互いの接続を確認し合うトーン信号を送信するようになっている。
【０００４】
これに対して、ＩＤＢ１３９４規格の場合には、該ＩＤＢ１３９４規格のインターフェース回路への電源供給が自動車に搭載されたバッテリによって行われることから、できる限り低消費電力化する必要がある。そこで、ＩＤＢ１３９４規格では、物理的にループ接続されたときに論理的に切断されるポートＰ２Ｂ，Ｐ１Ｃを、上記ループ・ディスエーブルステートに遷移させ、さらにトーン信号も送信されないスリープ（Sleep）ステートに遷移させる機能が追加されている。したがって、このスリープステートでは、トーン信号を送信しない分だけ、ＩＥＥＥ１３９４ｂ−２００２規格のループ・ディスエーブルステートよりも消費電力を低減することができる。
【特許文献１】特開２００３−３７６１３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、ＩＥＥＥ１３９４ｂ−２００２規格のループ・ディスエーブルステートでは、バスリセットが検出されると自動的に他のステートに遷移される。これに対し、ＩＤＢ１３９４規格のスリープステートでは、バスリセットが検出されたとしても、他ノードのポートからのトーン信号が検出されない限り、他のステートに遷移されない。しかし、上述のように、物理的に接続された双方のポートＰ２Ｂ，Ｐ１Ｃがスリープステートに遷移されると、両ポートＰ２Ｂ，Ｐ１Ｃから互いにトーン信号が送信されないため、ポート状態を初期化しない限りスリープステートが継続されてしまう。このため、図９（ａ）の状態から図９（ｂ）に示すように、上記バスケーブル１ｃとは別のバスケーブル１ｂが何らかの原因によって物理的に切断されると、このときにバスリセットが検出されたとしても、論理的に切断されたポートＰ２Ｂ，Ｐ１Ｃのスリープステートが継続される。これによって、バスケーブル１ｃが物理的に接続されているにも関わらず、ノードＣがネットワークから切り離されるという問題が生じる。
【０００６】
本発明は上記問題点を解決するためになされたものであって、その目的は、物理的にループ接続されたポートをスリープステートに遷移させつつも、ループ接続されたバスケーブルが物理的に切断されるときのフェールセーフを実現することのできるインターフェース装置及びトポロジ構築方法を提供することにある。
【課題を解決するための手段】
【０００７】
上記目的を達成するため、請求項１に記載のインターフェース装置は、前記バスケーブルによって他ノードのポートと接続されるポートと、前記自ノードのポート毎に対応して設けられ、トポロジ中に当該ポートによるループが検出されると、ループ・ディスエーブルステートへ遷移させて当該ポートを論理的に切断された状態にし、さらにスリープステートに遷移させるステートマシンと、前記トポロジの変化を検出したときに、前記スリープステートであるポートのスリープステートを解除するためのスリープ解除信号を送信するスリープ解除回路と、を備える。
【０００８】
また、請求項７に記載のトポロジ構築方法は、スリープステートに遷移されたポートが存在するトポロジにおいて、該トポロジが変化したときにスリープ解除回路から送信されるスリープ解除信号に応答して、前記スリープステートのポートをディスコネクトステートに遷移させる。
【０００９】
これらによれば、トポロジの変化を検出したときに、スリープ解除回路から送信されるスリープ解除信号によってスリープステートを解除することができる、すなわちスリープステートを他のステートに遷移させることができる。スリープステートから他のステートに遷移させることさえできれば、その後は既存の遷移条件によって、そのスリープステートであったポートの論理的な切断を解除することができる。したがって、ポート状態を初期化しなくとも、スリープステートからポートにおける論理的な切断を自動的に解除することができる。このため、例えばループを形成するバスケーブルが何らかの原因によって切断された場合には、その切断によって生じるトポロジの変化が検出され、スリープ解除回路から送信されるスリープ解除信号によってスリープステートが解除される。これにより、そのスリープステートであったポートの論理的な切断が自動的に解除され、そのポート間が論理的に接続されることになる。この結果、論理的な切断によって所望のノードから切り離されるノードが発生することを抑制できるため、ループ接続されたバスケーブルが物理的に切断されたときのフェールセーフを実現することができる。
【００１０】
また、請求項２に記載のインターフェース装置における前記スリープ解除回路は、前記トポロジ内の全ノードの物理層レジスタ内に格納された、物理的な接続の有無を示すコネクトビット及び前記スリープステートを通知するスリープビットを全ポート分読み出し、これらコネクトビット及びスリープビットに基づいて、前記スリープステートのポートが存在することを検出したときに第１検出信号を生成する検出回路と、前記トポロジ内のノード数がバスリセットの発生前後で減少したことを検出したときに第２検出信号を生成するトポロジ監視回路と、前記第１検出信号及び前記第２検出信号に応答して、前記スリープ解除信号を送信するスリープ解除信号送信回路と、を備える。
【００１１】
上記構成によれば、検出回路では、ＩＤＢ１３９４規格で元々利用されているレジスタ値（コネクトビット及びスリープビット）に基づいて、トポロジ内にスリープステートのポートが存在するか否かを判断することができる。また、トポロジ監視回路では、ノード数の変化を検出することによって、トポロジの変化を検出することができる。
【００１２】
また、請求項３に記載のインターフェース装置では、前記ステートマシンは、前記スリープステートのときに、前記スリープ解除信号を受信すると、前記スリープステートからディスコネクトステートに遷移させる。この構成によれば、新たなステートや新たな遷移条件を追加せずに、スリープステートから既存のディスコネクトステートへ遷移させることができるため、既存のインターフェース装置との互換性を持たせることができる。
【００１３】
また、請求項４に記載のインターフェース装置では、前記検出回路は、前記コネクトビットが物理的に接続されていることを示す値で、且つ前記スリープビットがスリープステートであることを示す値を有するポートがトポロジ内に存在するときに、前記第１検出信号を生成する。この構成によれば、トポロジの変化が検出されたときに、物理的に接続されているが、論理的に切断されているポートのスリープステートのみを確実に解除することができる。
【００１４】
また、請求項５に記載のインターフェース装置では、前記検出回路は、前記トポロジ内に中断処理によってスリープステートに遷移されたポートが存在せず、且つ前記コネクトビットが物理的に接続されていることを示す値で、前記スリープビットがスリープステートであることを示す値を有するポートがトポロジ内に存在するときに、前記第１検出信号を生成する。この構成によれば、トポロジの変化が検出されたときに、ループの存在によってスリープステートに遷移されたポートのスリープステートのみを確実に解除することができる。
【００１５】
また、請求項６に記載のインターフェース装置では、前記検出回路は、前記トポロジ内の全ての他ノードの全ポートに対応する前記コネクトビット及び前記スリープビットを読み出すためのリモートアクセスパケットを送信する読み出し回路と、前記アクセスパケットに対する応答パケットを前記他ノードから受信し、該受信した応答パケットから前記コネクトビット及び前記スリープビットを取得する受信回路と、を備える。この構成によれば、読み出し回路から送信されるリモートアクセスパケットに対する応答パケットが受信回路で受信される。この受信した応答パケットからトポロジ内の全ての他ノードの全ポートに対応するコネクトビット及びスリープビットを取得することができる。
【００１６】
また、請求項８に記載のトポロジ構築方法では、前記スリープ解除信号は、前記トポロジ内の全ポートに送信されるリジュームパケット、あるいは前記スリープステートが解除される対象のポートのみに送信されるリモートコマンドパケットである。これらによれば、ＩＤＢ１３９４規格において、アクティブステートから一旦サスペンドステートに遷移されたポートをアクティブステートに復帰させるときに使用されるリジュームパケットやリモートコマンドパケットによって、スリープステートを解除することができる。
【発明の効果】
【００１７】
以上説明したように、インターフェース装置及びトポロジ構築方法によれば、物理的にループ接続されたポートをスリープステートに遷移させつつも、ループ接続されたバスケーブルが物理的に切断されるときのフェールセーフを実現することができるという効果を奏する。
【発明を実施するための最良の形態】
【００１８】
以下、本発明を具体化した一実施形態を図１〜図８にしたがって説明する。
図３は、シリアルインターフェースの車載用規格であるＩＤＢ１３９４規格に準拠したデータ転送を行うネットワークシステムを概略的に示すブロック図である。
【００１９】
図３に示すように、ネットワークシステムは、接続された複数（本実施形態では３つ）のノードＡ，Ｂ，Ｃにより構成されている。ノードＡは、インターフェース回路１０Ａに設けられた複数（本実施形態では２つ）の第１ポートＰ１Ａ及び第２ポートＰ２Ａを備える。ノードＢは、インターフェース回路１０Ｂに設けられた２つの第１ポートＰ１Ｂ及び第２ポートＰ２Ｂを備える。ノードＣは、インターフェース回路１０Ｃに設けられた２つの第１ポートＰ１Ｃ及び第２ポートＰ２Ｃを備える。
【００２０】
ノードＡの第１ポートＰ１Ａは、ＩＤＢ１３９４バスケーブル（バスケーブル）１ａによってノードＢの第１ポートＰ１Ｂと接続されている。ノードＡの第２ポートＰ２Ａは、バスケーブル１ｂによってノードＣの第２ポートＰ２Ｃと接続されている。ノードＢの第２ポートＰ２Ｂは、バスケーブル１ｃによってノードＣの第１ポートＰ１Ｃと接続されている。このように構成されたトポロジ（システム構成）では、ノードＡ〜Ｃ及びバスケーブル１ａ〜１ｃによってループが構成されている。
【００２１】
なお、ノードＡ〜Ｃは、例えばカーナビゲーション装置、ＤＶＤ再生装置やリアディスプレイ等の接続ポイントの総称である。本実施形態では、ノードＡがカーナビゲーション装置などの制御ノードで、且つ電力管理を行うパワーマネージャであり、ノードＢ，Ｃがリアディスプレイである。
【００２２】
次に、制御ノードであるノードＡが備えるインターフェース回路１０Ａについて図１にしたがって説明する。
図１に示すように、インターフェース回路１０Ａは、第１及び第２ポートＰ１Ａ，Ｐ２Ａ，物理層処理回路２０を含んで構成されている。各ポートＰ１Ａ，Ｐ２Ａは、それぞれデコーダとエンコーダを含み、データの受信時にはバスケーブル１ａ，１ｂを介して受け取る電気信号を装置内部で扱う電気信号に変換して物理層処理回路２０に出力する。また、各ポートＰ１Ａ，Ｐ２Ａは、データの送信時には内部で扱う電気信号をＩＤＢ１３９４規格の電気信号に変換して他のノードに送信する。
【００２３】
物理層処理回路２０は、第１ポートＰ１Ａと接続される第１データ転送制御回路３０ａと、第２ポートＰ２Ａと接続される第２データ転送制御回路３０ｂと、ループテスト処理回路４０と、スリープ解除回路５０とを備えている。なお、第１データ転送制御回路３０ａと第２データ転送制御回路３０ｂとは、同様の構成を有しているため、ここでは第１データ転送制御回路３０ａについて説明し、第２データ転送制御回路３０ｂの詳細な説明を省略する。
【００２４】
第１データ転送制御回路３０ａは、第１ポートＰ１Ａのデコーダ及びエンコーダとそれぞれ接続される解析回路３１ａ及び生成回路３２ａと、ポート監視回路３３ａと、レジスタ３４ａと、ステートマシン３５ａとを備えている。
【００２５】
解析回路３１ａは、ノードＢから第１ポートＰ１Ａのデコーダを介してデータパケットやループテストパケットを受信する。解析回路３１ａは、受信したパケットの種類、例えばデータパケットであるかループテストパケットであるかを判別する。解析回路３１ａは、データパケットを受信すると、受信したデータパケットをそのままステートマシン３５ａに出力する。
【００２６】
また、解析回路３１ａは、ループ状のトポロジを検出するためのループテスト時に送信されるループテストパケットを受信すると、受信したループテストパケットをそのままステートマシン３５ａに出力する。さらに、解析回路３１ａは、自ノードＡがループテストパケットを送信していた場合には、受信したループテストパケットと送信したループテストパケットとを比較して、その比較結果をステートマシン３５ａに出力する。
【００２７】
生成回路３２ａは、ステートマシン３５ａから入力されるデータパケットあるいはループテストパケットを、そのまま第１ポートＰ１Ａのエンコーダに出力する。また、生成回路３２ａは、ループテスト実行時にループテスト処理回路４０から入力される命令信号に基づいて、ループテストパケットを生成し、そのループテストパケットを第１ポートＰ１Ａのエンコーダに出力する。なお、上記エンコーダは、受信したデータパケットやループテストパケットをＩＤＢ１３９４規格の電気信号に変換してノードＢに送信する。
【００２８】
ポート監視回路３３ａは、第１ポートＰ１Ａの状態（接続状態等）を監視して、その状態変化に応じてレジスタ３４ａのコネクトビット（Ｃビット）やスリープビット（Ｓビット）を設定する。具体的には、ポート監視回路３３ａは、第１ポートＰ１Ａが他のポートと物理的に接続され、信号が送受信されている場合にＣビットを「１」に設定し、第１ポートＰ１Ａが他のポートと物理的に未接続の場合にＣビットを「０」に設定する。また、ポート監視回路３３ａは、第１ポートＰ１ＡがスリープステートＳＴ４（図４参照）に遷移した後、接続相手との切断を確実に行える時間だけ待った後にＳビットを「１」に設定し、第１ポートＰ１Ａがそれ以外の状態の場合にＳビットを「０」に設定する。このように、Ｃビットはポートが物理的に接続されているか否かを示すレジスタ値であり、Ｓビットはスリープステートを通知するためのレジスタ値である。
【００２９】
ステートマシン３５ａには、データ受信時に、第１ポートＰ１Ａから解析回路３１ａを介してデータパケットやループテストパケットが入力される。ステートマシン３５ａは、その入力したデータパケットをリンク層に出力し、入力したループテストパケットをスリープ解除回路５０に出力する。また、ステートマシン３５ａは、第１ポートＰ１Ａとは別の第２ポートＰ２Ａに他のポートが接続されている場合には、第１ポートＰ１Ａから入力したデータパケット等をステートマシン３５ｂに送信することで、第２ポートＰ２Ａに接続されたノードＣに送信する。一方、ステートマシン３５ａは、データ送信時に、リンク層から入力するデータパケットを、生成回路３２ａを介して第１ポートＰ１Ａに接続されたノードＢに送信する。
【００３０】
また、ステートマシン３５ａは、所定の遷移条件を満たしたときに、第１ポートＰ１Ａのステートを遷移させる。例えば、ステートマシン３５ａは、解析回路３１ａにて生成されるループテスト時の比較結果やバスリセットの検出に基づいて、第１ポートＰ１Ａのステートを遷移させる。
【００３１】
ループテスト処理回路４０は、ループテストを実行するときにループテストパケットを生成するための命令信号を生成回路３２ａに出力する。
スリープ解除回路５０は、バスリセット発生後にトポロジの変化を検出したときに、ループ検出によってスリープステートＳＴ４に遷移されたポートのスリープ状態を解除させるための回路である。このスリープ解除回路５０は、ループ検出回路６０と、トポロジ監視回路７０と、スリープ解除制御回路８０と、を備えている。
【００３２】
ループ検出回路６０は、トポロジ内の全ノードが備える全ポートのＣビット及びＳビットを読み出し、ループ検出によってスリープステートＳＴ４に遷移したポート（解除対象ポート）が存在するか否かを検出する。このループ検出回路６０は、解除対象ポートが存在することを検出したときに第１検出信号Ｄ１をスリープ解除制御回路８０に出力する。
【００３３】
トポロジ監視回路７０は、トポロジを監視し、トポロジ内のノード数の変化を検出する。このトポロジ監視回路７０は、バスリセットの発生前後においてトポロジ内のノード数が減少したときに、トポロジが変化したことを示す第２検出信号Ｄ２をスリープ解除制御回路８０に出力する。
【００３４】
スリープ解除制御回路８０は、ループ検出回路６０からの第１検出信号Ｄ１及びトポロジ監視回路７０からの第２検出信号Ｄ２の双方が入力されたときに、上記解除対象ポートのスリープステートＳＴ４を解除（ウェイクアップ）させるためのスリープ解除パケットＳＬを生成する。そして、スリープ解除制御回路８０は、生成したスリープ解除パケットＳＬ（スリープ解除信号）を解除対象ポートに送信する。なお、ステートマシン３５ａは、スリープステートのときに、スリープ解除パケットＳＬが入力されると、スリープステートからディスコネクトステートに遷移させる。
【００３５】
ここで、このステートマシン３５ａの状態遷移について図４にしたがって詳述する。ステートマシン３５ａは、ステートＳＴ１〜ステートＳＴ６に遷移する。ステートＳＴ１は、ディスコネクト（Disconnected）ステートであって、第１ポートＰ１Ａが他のポートと物理的に未接続状態、あるいは第１ポートＰ１Ａが他のポートと物理的に接続されてスピードネゴシエーションを行っている状態である。このディスコネクトステートＳＴ１では、ポート間でお互いの接続を確認し合うトーン信号の送受信が行われる。ステートＳＴ２は、アンテスト（Untested）ステートであって、第１ポートＰ１Ａが他のポート（ここでは、ノードＢの第１ポートＰ１Ｂ）と接続された結果、トポロジ中にループが形成されたか否かを判定するループテストが行われる状態である。ステートＳＴ３は、ループ・ディスエーブル（Loop_disabled）ステートであって、ループ検出によって第１ポートＰ１Ａが論理的に切断された状態である。すなわち、このループ・ディスエーブルステートＳＴ３は、第１ポートＰ１Ａが物理的に接続されているものの、論理的には切断されている状態である。ステートＳＴ４は、スリープ（Sleep）ステートであって、第１ポートＰ１Ａからのトーン信号を含む全ての信号の送信が停止され、トーン信号の受信のみが行われる、いわゆる低消費電力モードの状態である。ステートＳＴ５は、アクティブ（Active）ステートであって、第１ポートＰ１Ａがデータ転送可能な状態である。ステートＳＴ６は、サスペンド（Suspended）ステートであって、第１ポートＰ１Ａが中断状態（休止状態）である。
【００３６】
次に、ステートマシン３５ａにおける各ステートＳＴ１〜ＳＴ６間の遷移と、Ｃビット及びＳビットの設定とについて図４及び図５にしたがって説明する。
ステートマシン３５ａは、ディスコネクトステートＳＴ１のときに、接続相手からのトーン信号を検出した後、スピードネゴシエーションが正常に完了すると（遷移条件Ｔ１）、ステートＳＴ１からアンテストステートＳＴ２へ遷移させる。
【００３７】
ステートマシン３５ａは、アンテストステートＳＴ２のときに、ループテストにおいてループが検出され、第１ポートＰ１Ａが最後に物理的に接続されたポートの場合には（遷移条件Ｔ２）、ステートＳＴ２からループ・ディスエーブルステートＳＴ３へ遷移させる。ステートマシン３５ａは、ステートＳＴ３に遷移したときに、スリープ機能が有効な場合には（遷移条件Ｔ４）、直ちにステートＳＴ３からスリープステートＳＴ４へ遷移させる。このようにループ・ディスエーブルステートＳＴ３からスリープステートＳＴ４に遷移したときは、ポートが物理的に接続されているが、ループ検出によってスリープステートＳＴ４に遷移した状態である。したがって、このときのＣビット及びＳビットは共に「１」に設定されている（図５参照）。
【００３８】
一方、ステートマシン３５ａは、ループ・ディスエーブルステートＳＴ３のときに、第１ポートＰ１Ａが物理的に切断されると（遷移条件Ｔ４）、ステートＳＴ３からディスコネクトステートＳＴ１へ遷移させる。また、ステートマシン３５ａは、ループ・ディスエーブルステートＳＴ３のときに、バスリセットを検出すると（遷移条件Ｔ５）、ステートＳＴ３からアンテストステートＳＴ２へ遷移させる。
【００３９】
ステートマシン３５ａは、アンテストステートＳＴ２のときに、ループテストにおいてループが検出されない場合には（遷移条件Ｔ６）、ステートＳＴ２からアクティブステートＳＴ５に遷移させる。なお、このときは、ポートが物理的に接続されてパケット等が送受信されている状態であるため、Ｃビットが「１」に設定され、Ｓビットが「０」に設定されている（図５参照）。
【００４０】
ステートマシン３５ａは、アクティブステートＳＴ５のときに、第１ポートＰ１Ａが物理的に切断された場合、又はサスペンドコマンド等による中断処理が行われた場合には（遷移条件Ｔ７）、ステートＳＴ５からサスペンドステートＳＴ６へ遷移させる。ステートマシン３５ａは、サスペンドステートＳＴ６のときに、リジュームパケットやリモートコマンドパケットを受信すると（遷移条件Ｔ８）、ステートＳＴ６からアクティブステートＳＴ５に復帰させる。一方、ステートマシン３５ａは、物理的切断によってアクティブステートＳＴ５からサスペンドステートＳＴ６に遷移した場合には（遷移条件Ｔ９）、直ちにステートＳＴ６からディスコネクトステートＳＴ１へ遷移させる。また、ステートマシン３５ａは、中断処理によってアクティブステートＳＴ５からサスペンドステートＳＴ６に遷移した場合であって、スリープ機能が有効な場合には（遷移条件Ｔ１０）、直ちにステートＳＴ６からスリープステートＳＴ４へ遷移させる。このようにサスペンドステートＳＴ６からスリープステートＳＴ４に遷移したときは、ポートが物理的に接続されているが、中断処理によってスリープステートＳＴ４に遷移した状態である。したがって、このときのＣビットは「１」に設定され、Ｓビットは「１」に設定されている（図５参照）。
【００４１】
一方、ステートマシン３５ａは、ディスコネクトステートＳＴ１のときに、所定時間（例えば２００ｍｓ）内に接続相手が検知されないと（遷移条件Ｔ１１）、スリープステートＳＴ４に遷移させる。このようにディスコネクトステートＳＴ１からスリープステートＳＴ４に遷移したときは、ポートが物理的に未接続でスリープステートＳＴ４に遷移した状態である。したがって、このときのＣビットは「０」に設定され、Ｓビットは「１」に設定されている（図５参照）。
【００４２】
そして、ステートマシン３５ａは、スリープステートＳＴ４のときに、接続相手を検知した場合、あるいはスリープ解除回路５０から出力されたスリープ解除パケットＳＬを受信した場合に（遷移条件Ｔ１２）、ステートＳＴ４からディスコネクトステートＳＴ１へ遷移させる。
【００４３】
ステートマシン３５ａは、このように遷移条件に基づいて自身のステートを遷移させることによって、そのステートマシン３５ａに接続される第１ポートＰ１Ａの状態を制御している。換言すれば、ステートマシン３５ａは、自身のステートを遷移させることによって、第１ポートＰ１Ａの状態（ステート）を同様に遷移させる。具体的には、例えばステートマシン３５ａは、ループ・ディスエーブルステートＳＴ３に遷移させることによって、第１ポートＰ１Ａによるデータパケット及びループテストパケットの送受信を停止させて、その第１ポートＰ１Ａを論理的に切断させる。また、ステートマシン３５ａは、スリープステートＳＴ４に遷移させることによって、第１ポートＰ１Ａによるトーン信号の送信を停止させて、その第１ポートＰ１Ａを低消費電力モードにさせる。
【００４４】
以上説明したように、同じスリープステートＳＴ４であっても、そのスリープステートＳＴ４に遷移されるときの遷移条件によって（ポートが物理的に接続されているか否かによって）Ｃビット及びＳビットの値が変化する。このため、Ｃビット及びＳビットを取得することによって、物理的に接続されているにも関わらず、スリープステートＳＴ４に遷移されたポートであるか否か判定することができる。すなわち、Ｃビット及びＳビットが共に「１」であれば、物理的に接続されているにも関わらず、スリープステートＳＴ４に遷移されたポートであると判定することができる。但し、遷移条件Ｔ３によってループ・ディスエーブルステートＳＴ３からスリープステートＳＴ４に遷移された場合も、遷移条件Ｔ１０によってサスペンドステートＳＴ６からスリープステートＳＴ４に遷移された場合も、Ｃビット及びＳビットが共に「１」に設定される。すなわち、ループ検出によってスリープステートＳＴ４に遷移された場合だけでなく、パワーマネージャが消費電力を低減させるために意図的に行う中断処理によってスリープステートＳＴ４に遷移された場合にも、Ｃビット及びＳビットが共に「１」に設定される。このため、これらＣビット及びＳビットのレジスタ値からだけでは、そのスリープステートＳＴ４がループ検出によって遷移されたものであるかを判定することができない。そこで、本実施形態では、中断処理によりスリープステートＳＴ４に遷移させたポートを記憶し、さらにＣビット及びＳビットを取得することで、ループ検出によってスリープステートＳＴ４に遷移されたポートのスリープ状態のみを解除するようにした。以下に、その具体的構成を説明する。
【００４５】
図２に、スリープ解除回路５０を構成するループ検出回路６０、トポロジ監視回路７０及びスリープ解除制御回路８０の各々の内部構成を示した。図２に示すように、ループ検出回路６０は、外部レジスタ読み出し回路６１と、受信パケット判定回路６２と、コマンド判定回路６３と、レジスタ値判定回路６４とを備えている。
【００４６】
外部レジスタ読み出し回路６１には、ループテストパケットの受信に基づいて受信パケット判定回路６２にて生成される受信信号ＲＳが入力される。外部レジスタ読み出し回路６１は、受信信号ＲＳを受信することでループテストが実行されていると判断する。この外部レジスタ読み出し回路６１は、その受信信号ＲＳを受信後、ループテストが確実に終了する所定時間（例えば５００μｓ）が経過してから、全ての他ノードＢ，Ｃの全ポートのＣビット及びＳビットを読み出すためのリモートアクセスパケットを生成する。そして、外部レジスタ読み出し回路６１は、生成したリモートアクセスパケットを全ての他ノードＢ，Ｃに送信する。
【００４７】
受信パケット判定回路６２には、上記リモートアクセスパケットに対する応答パケットであるリモートリプライパケットが全ての他ノードＢ，Ｃから入力されるとともに、上記ループテストパケットがステートマシン３５ａ，３５ｂから入力される。受信パケット判定回路６２は、受信したパケットがリモートリプライパケットであるかループテストパケットであるかを判定する。そして、受信パケット判定回路６２は、リモートリプライパケットを受信すると、そのリモートリプライパケットから対応するポートのＣビット及びＳビットを取得し、取得したレジスタ値をレジスタ値判定回路６４に出力する。ここで、受信パケット判定回路６２は、全ての他ノードＢ，Ｃの全ポートに対応するリモートリプライパケットを受信するため、全ての他ノードの全ポートのＣビット及びＳビットを読み出すことができる。なお、受信パケット判定回路６２は、ループテストパケットを受信すると、そのループテストパケットを受信したことを示す上記受信信号ＲＳをループ検出回路６０に出力する。
【００４８】
コマンド判定回路６３は、パワーマネージャである自ノードＡが消費電力を低減させるために意図的に行う中断処理によってスリープステートＳＴ４に遷移させたポートを記憶している。コマンド判定回路６３は、その記憶している情報から、中断処理によってスリープステートＳＴ４に遷移させたポートが存在するか否かを判定し、そのポートが存在しない場合に第３検出信号Ｄ３をレジスタ値判定回路６４に出力する。
【００４９】
レジスタ値判定回路６４は、自ノードＡのレジスタ３４ａ，３４ｂにおけるＣビット及びＳビット、すなわち自ノードＡのポートＰ１Ａ，Ｐ２ＡのＣビット及びＳビット（レジスタ値）を読み出す。これにより、レジスタ値判定回路６４は、全ノードＡ〜Ｃの全ポートのレジスタ値、すなわち受信パケット判定回路６２から入力される全ての他ノードＢ，Ｃの全ポートにおけるレジスタ値、及び自ノードＡの全ポートにおけるレジスタ値を読み出すことができる。このレジスタ値判定回路６４は、コマンド判定回路６３からの第３検出信号Ｄ３が入力されているときに、上記読み出したレジスタ値の中にＣビット及びＳビットが共に「１」であるポートが存在するか否かを判定する。これにより、中断処理によってスリープステートＳＴ４に遷移されたポートではなく、且つＣビット及びＳビットが共に「１」であるポート、つまりループ検出によってスリープステートＳＴ４に遷移された解除対象ポートの有無を検出できる。そして、レジスタ値判定回路６４は、解除対象ポートの存在を検出したときに第１検出信号Ｄ１を生成する。
【００５０】
トポロジ監視回路７０は、トポロジ記憶回路７１と、トポロジ変化検出回路７２とを備えている。トポロジ記憶回路７１は、バスリセットプロセスにおいて各ノードから受信したセルフＩＤパケットの数をカウントし、そのカウント値からトポロジ内のノード数を取得する。このトポロジ記憶回路７１は、最新のバスリセットプロセスにおいて取得された最新のトポロジ内のノード数と、その１回前のバスリセットプロセスにおいて取得された前回のトポロジ内のノード数とを記憶している。
【００５１】
トポロジ変化検出回路７２は、トポロジ記憶回路７１から最新のトポロジ内のノード数と、前回のトポロジ内のノード数を読み出し、両者のノード数（バスリセットの発生前後のトポロジ）が変化しているか否かを検出する。このトポロジ変化検出回路７２は、前回のトポロジ内のノード数よりも最新のトポロジ内のノード数が減少している場合に、いずれかのケーブルが切断された可能性があると判断して第２検出信号Ｄ２を生成する。
【００５２】
スリープ解除制御回路８０は、スリープ解除パケット送信回路８１を備えている。スリープ解除パケット送信回路８１は、上記レジスタ値判定回路６４から第１検出信号Ｄ１が入力されるとともに、上記トポロジ変化検出回路７２から第２検出信号Ｄ２が入力される。このスリープ解除パケット送信回路８１は、これら第１及び第２検出信号Ｄ１，Ｄ２の双方の信号が入力されたときに、スリープステートＳＴ４を解除するためのスリープ解除パケットＳＬを生成する。すなわち、スリープ解除パケット送信回路８１は、バスリセット発生後にトポロジが変化したときに、トポロジ内に解除対象ポートが存在する場合に、スリープ解除パケットＳＬを生成する。そして、スリープ解除パケット送信回路８１は、生成したスリープ解除パケットＳＬを解除対象ポートに送信する。具体的には、スリープ解除パケット送信回路８１は、スリープ解除パケットＳＬとしてレジューム（Ｒｅｓｕｍｅ）パケットを生成し、そのレジュームパケットを全てのポートに送信する。あるいは、スリープ解除パケット送信回路８１は、リジューム処理（復帰処理）させるためのリモートコマンドパケットを解除対象ポートに送信する。
【００５３】
なお、ノードＢ，Ｃが備えるインターフェース回路１０Ｂ，１０Ｃは、スリープ解除回路５０を備えていないこと以外はインターフェース回路１０Ａと同様の構成であるため、ここでは説明を省略する。
【００５４】
次に、このように構成された制御ノードＡのスリープ解除回路５０によるスリープステートＳＴ４の解除方法について図６〜図８にしたがって説明する。図６は、ネットワークシステムの接続状態及び各ポートのレジスタ値を示し、図７及び図８は、ネットワークシステムの接続状態が図６のように変化したときのスリープ解除回路５０の動作を示すフローチャートである。
【００５５】
まず、解除対象ポート（ループ）の有無を判断するときのスリープ解除回路５０（ループ検出回路６０）の動作について図６及び図７にしたがって説明する。
図６（ａ）は、本実施形態のネットワークシステムの初期状態を示す。すなわち、図６（ａ）のトポロジは、ノードＡのポートＰ１ＡとノードＢのポートＰ１Ｂとがバスケーブル１ａによって接続され、ノードＡのポートＰ２ＡとノードＣのポートＰ２Ｃとがバスケーブル１ｂによって接続されている。なお、ノードＢのポートＰ２ＢとノードＣのポートＰ１Ｃとは、バスケーブルによって接続されていない。この初期状態のときに、ループ検出回路６０は、解除対象ポート（ループ）の有無を示すループフラグを「０」に初期設定する（図７のステップＳ１）。そして、この初期状態から、図６（ｂ）に示すように、ノードＢのポートＰ２ＢとノードＣのポートＰ１Ｃとがバスケーブル１ｃによって接続されると、ループ検出回路６０は、ステートマシン３５ａ，３５ｂからループテストパケットが受信されるまで待つ（ステップＳ２）。ループ検出回路６０は、ループテストパケットを受信すると、ループテストが終了するまで（所定時間が経過するまで）待つ（ステップＳ３）。このときのループテストについて以下に説明する。
【００５６】
上述のように、ノードＢのポートＰ２ＢとノードＣのポートＰ１Ｃとがバスケーブル１ｃによって接続され、スピードネゴシエーションが正常に終了すると、これらポートＰ２Ｂ，Ｐ１ＣがディスコネクトステートＳＴ１からアンテストステートＳＴ２に遷移する。すると、バスケーブルが最後に接続されたノードＢ，Ｃは、ネットワークシステムがループを構築していないか確認するためのループテストを実行する。このループテストは、所定のノード（例えばアービトレーションに勝ったノード）からループテストパケットが出力され、そのループテストパケットが再びそのノードに戻ってきたときに、ループが形成されていると判断するテストである。
【００５７】
すなわち、所定のノードＢのループテスト処理回路４０は、ループテストパケットを生成するための命令信号を一方のステートマシン（具体的には、最後に物理的に接続されたポートＰ２Ｂ以外のポートＰ１Ｂに対応するステートマシン３５ａ）に出力する。このステートマシン３５ａはその命令信号を生成回路３２ａに出力し、生成回路３２ａは、入力された命令信号に基づいてループテストパケットを生成して第１ポートＰ１ＢからノードＡの第１ポートＰ１Ａに送信する。
【００５８】
ノードＡの第１ポートＰ１Ａは、受信したループテストパケットをステートマシン３５ａに出力する。ステートマシン３５ａは、他のポートＰ２Ａにバスケーブルが接続されていることから、入力されたループテストパケットを他方のステートマシン３５ｂに出力する。なお、このとき、ステートマシン３５ａは、受信したループテストパケットをスリープ解除回路５０に出力する。これにより、ループ検出回路６０は、ループテストパケットを受信する（上記ステップＳ２でＹＥＳ）。そして、ステートマシン３５ｂは、入力されたループテストパケットを第２ポートＰ２ＡからノードＣの第２ポートＰ２Ｃに送信する。
【００５９】
ノードＣの第２ポートＰ２Ｃは、受信したループテストパケットをステートマシン３５ｂに出力する。ステートマシン３５ｂは、他のポートＰ１Ｃにバスケーブルが接続されていることから、入力されたループテストパケットを他方のステートマシン３５ａに出力する。ステートマシン３５ａは、そのループテストパケットを第１ポートＰ１ＣからノードＢの第２ポートＰ２Ｂに送信する。
【００６０】
ノードＢの第２ポートＰ２Ｂは、受信したループテストパケットを、解析回路３１ｂに出力する。ループテストパケットの送信を開始したノードＢにおける解析回路３１ｂでは、自ノードＡが送信したループテストパケットと受信したループテストパケットとが等しいか否かを判定する。そして、ノードＢは以上説明した処理を一定回数繰り返し、本例のように、送信したループテストパケットと受信したループテストパケットとが所定回数以上等しくなる場合には、ループ検出を示す信号が解析回路３１ｂからステートマシン３５ｂに出力される。このループ検出を示す信号に応答して、ノードＢのステートマシン３５ｂは、ノードＢの第２ポートＰ２Ｂをループ・ディスエーブルステートＳＴ３に遷移させ、さらにスリープステートＳＴ４に遷移させる。このとき、ノードＢのポート監視回路３３ｂは、レジスタ３４ｂのＣビット及びＳビットを共に「１」に設定する。これに伴って、ノードＣのステートマシン３５ａは、ノードＣの第１ポートＰ１Ｃをループ・ディスエーブルステートＳＴ３に遷移させ、さらにスリープステートＳＴ４に遷移させる。また、ノードＣのポート監視回路３３ａは、レジスタ３４ａのＣビット及びＳビットを共に「１」に設定する。これによって、ノードＢのポートＰ２Ｂ及びノードＣのポートＰ１ＣがスリープステートＳＴ４に遷移されて論理的に切断されるため、図６（ｂ）に示すネットワークシステムは、デイジーチェーン型のトポロジを形成していることに相当する。
【００６１】
なお、ノードＢの解析回路３１ｂは、送信したループテストパケットと受信したループテストパケットとが等しくない場合、あるいはループテストを開始してから所定時間経過してもループテストパケットを受信しない場合には、ループ非検出を示す信号をステートマシン３５ｂに出力する。
【００６２】
このようなループテストが終了すると（ステップＳ３でＹＥＳ）、ループ検出回路６０は、全ノードＡ，Ｂ，Ｃの全ポートにおけるＣビット及びＳビットを読み出す（ステップＳ４）。具体的には、ループ検出回路６０の外部レジスタ読み出し回路６１は、ループテストが終了してから生成したリモートアクセスパケットを全ての他ノードＢ，Ｃに送信する。すると、各ノードＢ，Ｃから応答パケットであるリモートリプライパケットがノードＡの受信パケット判定回路６２に入力される。受信パケット判定回路６２は、受信したリモートリプライパケットから全ての他ノードＢ，Ｃの全ポートのＣビット及びＳビットを取得し、取得したレジスタ値をレジスタ値判定回路６４に出力する。また、レジスタ値判定回路６４は、自ノードＡのポートＰ１Ａ，Ｐ２ＡにおけるＣビット及びＳビットをレジスタ３４ａ，３４ｂから読み出す。これにより、全ノードＡ〜Ｃの全ポートのレジスタ値（図６（ｂ）参照）が読み出される。
【００６３】
次に、ループ検出回路６０は、パワーマネージャ（ここでは、自ノードＡ）が中断処理によってスリープステートＳＴ４に遷移させたポートが存在するか否かを判定する（ステップＳ５）。すなわち、レジスタ値判定回路６４は、コマンド判定回路６３から第３検出信号Ｄ３が入力されているか否かを判定する。そして、レジスタ値判定回路６４は、第３検出信号Ｄ３が入力されていない場合には、ネットワークシステム内に上記ポートが存在すると判断し（ステップＳ５でＮＯ）、ステップＳ２に戻る。一方、本例のように、中断処理が行われておらず第３検出信号Ｄ３が入力されている場合には、レジスタ値判定回路６４は、ネットワークシステム内に上記ポートが存在しないと判断し（ステップＳ５でＹＥＳ）、ステップＳ６に移る。
【００６４】
続いて、ステップＳ６において、ループ検出回路６０は、上記ステップＳ４で読み出した全ポートのレジスタ値に基づいて、Ｃビット及びＳビットが共に「１」のポートが存在するか否かを判定する。すなわち、レジスタ値判定回路６４は、このステップＳ６と上記ステップＳ５とにおいて、ループ検出によってスリープステートＳＴ４に遷移された解除対象ポート（ループ）が存在するか否かを判定する。レジスタ値判定回路６４は、図６（ｂ）のように、Ｃビット及びＳビットが共に「１」のポートＰ２Ｂ，Ｐ１Ｃが存在する場合には（ステップＳ６でＹＥＳ）、上記解除対象ポートが存在すると判断する。そして、レジスタ値判定回路６４は、ループフラグを「１」に設定し、そのループフラグを上記第１検出信号Ｄ１としてスリープ解除制御回路８０に出力する（ステップＳ７）。
【００６５】
一方、レジスタ値判定回路６４は、図６（ａ）の初期状態のように、Ｃビット及びＳビットが共に「１」のポートがない場合には（ステップＳ６でＮＯ）、上記解除対象ポートが存在しないと判断する。そして、レジスタ値判定回路６４は、ループフラグを「０」に設定する（ステップＳ８）。
【００６６】
このようにループフラグが「１」あるいは「０」に設定されると、ステップＳ２に戻る。そして、ループテストが実施されるたびに上記ステップＳ３〜Ｓ８の各種処理が繰り返し実行される。
【００６７】
次に、このように検出した解除対象ポートのスリープステートＳＴ４を解除するときのスリープ解除回路５０の動作を図６及び図８にしたがって説明する。
今、図６（ｂ）の状態から図６（ｃ）に示すように、ループを形成するバスケーブル１ａ〜１ｃのうち、論理的に切断されたバスケーブル１ｃ以外のバスケーブル１ｂが何らかの原因によって物理的に切断される。すると、バスリセットが発生する。このようなバスリセットが検出されると（図８のステップＳ１０でＹＥＳ）、スリープ解除回路５０は、前回のバスリセットプロセス（ここでは、図６（ｂ）のトポロジ形成時に発生したバスリセットプロセス）のときに取得したノード番号（ノード数）をラスト・ノード番号に設定する（ステップＳ１１）。
【００６８】
次に、スリープ解除回路５０（トポロジ記憶回路７１）は、トポロジ内のノードからセルフＩＤパケットを読み出す（ステップＳ１２）。そして、トポロジ記憶回路７１は、読み出したセルフＩＤパケットの数からトポロジ内のノード数を取得し、そのノード数をノード番号に設定する（ステップＳ１３）。ここで、図６（ｃ）では、自ノードＡとノードＢのみによってトポロジが形成されているため、トポロジ記憶回路７１は、ノードＢのみからセルフＩＤパケットを受信し、トポロジ中のノード数が２つであると判断する。このため、ノード番号が「２」に設定される。なお、図６（ｂ）のトポロジ形成時に発生したバスリセットプロセスでは、スリープ解除回路５０は、ノードＢ，ＣからセルフＩＤパケットを受信し、トポロジ中のノード数が３つであると判断する。このため、上記ステップＳ１１において、ラスト・ノード番号が「３」に設定される。
【００６９】
続いて、ステップＳ１４において、スリープ解除制御回路８０は、ラスト・ノード番号よりもノード番号が小さいか否かを判定する。具体的には、トポロジ変化検出回路７２は、本例のように、ラスト・ノード番号（「３」）よりもノード番号（「２」）が小さいときには、物理的な切断が発生してトポロジに変化が起きた可能性があると判断し、第２検出信号Ｄ２をスリープ解除制御回路８０に出力する。したがって、スリープ解除制御回路８０は、トポロジ変化検出回路７２から第２検出信号が入力されると、ラスト・ノード番号よりもノード番号が小さいと判定する（ステップＳ１６でＹＥＳ）。
【００７０】
そして、さらにスリープ解除制御回路８０は、レジスタ値判定回路６４から入力されるループフラグが「１」であるか否かを判定する（ステップＳ１５）。スリープ解除制御回路８０は、本例のように、上記ステップＳ７でループフラグが「１」に設定されているときには（ステップＳ１５でＹＥＳ）、上記解除対象ポート（ここでは、ポートＰ２Ｂ，Ｐ１Ｃ）が存在すると判断する。このように、バスリセット発生後にトポロジが変化したときに、解除対象ポートが存在すると、スリープ解除パケット送信回路８１は、上記解除対象ポートのスリープステートＳＴ４を解除するためにスリープ解除パケットＳＬを送信する（ステップＳ１６）。ここで、このスリープ解除パケットＳＬは、例えば全ポート（ここでは、ポートＰ１Ａ，Ｐ２Ａ，Ｐ１Ｂ，Ｐ２Ｂ）に送信されるリジュームパケットや解除対象ポート（ここでは、ノードＢの第２ポートＰ２Ｂ）のみに送信されるリモートコマンドパケットである。いずれの場合においても、ノードＢの第２ポートＰ２Ｂに対応するステートマシン３５ｂがスリープ解除パケットＳＬを受信することによって（図４の遷移条件Ｔ１２）、上記ポートＰ２ＢがスリープステートＳＴ４からディスコネクトステートＳＴ１に遷移される。すると、そのポートＰ２Ｂからトーン信号がバスケーブル１ｃを介してノードＣの第１ポートＰ１Ｃに送信される。このノードＣの第１ポートＰ１Ｃは、ノードＢの第２ポートＰ２Ｂからのトーン信号を受信することで（図４の遷移条件Ｔ１２）、スリープステートＳＴ４からディスコネクトステートＳＴ１に遷移される。これにより、図６（ｄ）のように、ループ検出によってスリープステートＳＴ４に遷移されたポートＰ２Ｂ，Ｐ１ＣをディスコネクトステートＳＴ１に遷移させることができる。この後、これらポートＰ２Ｂ，Ｐ１Ｃは、スピードネゴシエーションなどが正常に終了し、さらにループが検出されないと判断されると、アクティブステートＳＴ５に遷移される。この結果、ノードＡ，Ｂ，Ｃによってデイジーチェーン型のトポロジが形成されることになる。このように、バスリセット発生後にトポロジの変化が検出されると、ループ検出によってスリープステートＳＴ４に遷移されたポートＰ２ＢとポートＰ１Ｃとが自動的に論理的に再接続される。この結果、従来のようにノードＣがノードＡ，Ｂから切り離されることを抑制することができる。
【００７１】
なお、ステップＳ１４においてノード番号がラスト・ノード番号以上のとき、もしくはステップＳ１５においてループフラグが「０」であるときには、スリープ解除制御回路８０は、スリープ解除パケットＳＬを送信する必要がないと判断し、ステップＳ１０に戻る。
【００７２】
以上説明した本実施形態によれば、以下の効果を奏することができる。
（１）制御ノードＡに、バスリセット発生後にトポロジが変化したことを検出したときに、ループ検出によってスリープステートＳＴ４に遷移されたポートのスリープ状態を解除するためのスリープ解除パケットＳＬを生成するスリープ解除回路５０を設けた。このスリープ解除回路５０から送信されるスリープ解除パケットＳＬを受信することによって、ステートマシン３５ａ，３５ｂを、スリープステートＳＴ４からディスコネクトステートＳＴ１に遷移させることができる。ディスコネクトステートＳＴ１に遷移されれば、既存の遷移条件Ｔ１によってアンテストステートＳＴ２に遷移されて、論理的な切断を解除することができる。したがって、電源を切るなどしてポート状態を初期化しなくとも、一旦スリープステートＳＴ４に遷移されたステートマシン（ポート）を、論理的な切断を解除したアンテストステートＳＴ２に遷移させて、自動的に論理的に再接続することができる。このため、例えばループを形成するバスケーブルが何らかの原因によって切断された場合には、その切断によって生じるトポロジの変化（ノード数の減少）が検出され、スリープ解除回路５０から送信されるスリープ解除信号によって解除対象ポートのスリープステートＳＴ４が解除される。これにより、その解除対象ポートの論理的な切断が自動的に解除され、そのポート間（本例では、ポートＰ２Ｂ，Ｐ１Ｃ）が論理的に接続されることになる。この結果、論理的な切断によって所望のノードから切り離されるノードが発生することを抑制できるため、ループ接続されたバスケーブルが物理的に切断されたときのフェールセーフを実現することができる。
【００７３】
（２）スリープステートＳＴ４のときに、スリープ解除回路５０から送信されるスリープ解除パケットＳＬを受信した場合に（遷移条件Ｔ１２）、ディスコネクトステートＳＴ１に遷移させる条件を追加した。但し、このスリープステートＳＴ４からディスコネクトステートＳＴ１に遷移させる遷移条件自体は、ＩＤＢ１３９４規格に元々存在する。このため、本実施形態では、ＩＤＢ１３９４規格に存在しない全く新たな遷移条件及びステートを追加することなく、スリープステートＳＴ４から他のステートに遷移させることができる。これによって、既存のインターフェース回路（ＩＤＢ１３９４規格のインターフェース回路）のステートマシンとの互換性を維持することができるため、既存のインターフェース回路と接続してデータの送受信を行うことができる。
【００７４】
（３）パワーマネージャが中断処理によってスリープステートＳＴ４に遷移させたポートを記憶し、さらにＣビット及びＳビットを取得するようにした。そして、中断処理によってスリープステートＳＴ４に遷移されたポートが存在せず、且つＣビット及びＳビットが共に「１」であるポートがトポロジ内に存在することを検出することで、ループ検出によってスリープステートＳＴ４に遷移されたポートを確実に検出することができる。これによって、ループ検出によってスリープステートＳＴ４に遷移されたポートのスリープステートのみを確実に解除することができる。
【００７５】
（４）スリープステートＳＴ４のときに、リジュームパケットやリモートコマンドパケット（スリープ解除パケットＳＬ）の受信によって、スリープステートＳＴ４からディスコネクトステートＳＴ１に遷移させるようにした。これにより、サスペンドステートＳＴ６からアクティブステートＳＴ５に復帰させるときにＩＤＢ１３９４規格で元々使用されているリジュームパケットやリモートコマンドパケットを利用して、スリープステートＳＴ４を解除することができる。
【００７６】
なお、上記実施形態は、これを適宜変更した以下の態様にて実施することもできる。
・上記実施形態におけるコマンド判定回路６３を省略してもよい。また、図７のステップＳ５を省略してもよい。
【００７７】
・上記実施形態では、ループ検出によってスリープステートＳＴ４に遷移されたポートのスリープステートＳＴ４のみを解除するようにしたが、全てのスリープステートＳＴ４を一旦解除するようにしてもよい。すなわち、Ｓビットのみによって解除対象ポートの有無を検出するようにしてもよい。
【００７８】
・上記実施形態では、ノードＡが、通信状態等を制御する制御ノードと、電力管理を行うパワーマネージャとの双方を担うようにした。これに限らず、制御ノードとパワーマネージャとを別々のノードが担うようにしてもよい。この場合、パワーマネージャとなるノードに、コマンド判定回路６３を備えるようにし、制御ノードＡに備えられたレジスタ値判定回路６４は、パワーマネージャのコマンド判定回路６３から第３検出信号Ｄ３を受信するようにすればよい。
【００７９】
・上記実施形態では、制御ノードとなるノードＡのみにスリープ解除回路５０を備えるようにしたが、ノードＢ，Ｃにもスリープ解除回路５０を設けるようにしてもよい。
・上記実施形態では、セルフＩＤパケットの数からトポロジ内のノード数を検出するようにしたが、トポロジ内のノード数を検出できればとくにこれに制限されない。
【００８０】
・上記実施形態では、トポロジ内のノード数の変化を検出することでトポロジの変化を検出するようにしたが、トポロジの変化を検出できればとくにこれに制限されない。
・上記実施形態における外部レジスタ読み出し回路６１では、ループテストパケットの受信後、所定時間待つことによってループテストの終了を確認したが、これに制限されない。例えばループテストの終了を知らせる信号を受信することによってループテストの終了を確認するようにしてもよい。
【００８１】
・上記各実施形態のループテストに特に制限されない。例えば、２種類のループテスト信号を用いてループテストを実行してもよい。
・上記実施形態におけるノードの数に特に制限はない。また、ループを形成するノード数についても、特に制限はなく、４つ以上であってもよい。
【００８２】
・上記各実施形態では、１つのインターフェース回路に２つのポートを設けたが、ポートを１つあるいは３つ以上設けるようにしてもよい。
・上記各実施形態では、ステートマシン３５ａ，３５ｂのステートが遷移条件に基づいて遷移するようにしていたが、例えばステートマシン３５ａ，３５ｂから出力されるステート遷移信号によって、ポートのステートを直接遷移させるようにしてもよい。
【００８３】
・上記実施形態では、解析回路３１ａ，３１ｂと、生成回路３２ａ，３２ｂと、ポート監視回路３３ａ，３３ｂと、レジスタ３４ａ，３４ｂとをポート毎に別々に設けるようにしたが、全てのポートに対して共通に設けるようにしてもよい。
【００８４】
以上の様々な実施の形態をまとめると、以下のようになる。
（付記１）
バスケーブルで接続された他ノードとの間でデータの送受信を行う自ノードに備えられたインターフェース装置であって、
前記バスケーブルによって他ノードのポートと接続されるポートと、
前記自ノードのポート毎に対応して設けられ、トポロジ中に当該ポートによるループが検出されると、ループ・ディスエーブルステートへ遷移させて当該ポートを論理的に切断された状態にし、さらにスリープステートに遷移させるステートマシンと、
前記トポロジの変化を検出したときに、前記スリープステートであるポートのスリープステートを解除するためのスリープ解除信号を送信するスリープ解除回路と、
を備えることを特徴とするインターフェース装置。
（付記２）
前記スリープ解除回路は、
前記トポロジ内の全ノードの物理層レジスタ内に格納された、物理的な接続の有無を示すコネクトビット及び前記スリープステートを通知するスリープビットを全ポート分読み出し、これらコネクトビット及びスリープビットに基づいて、前記スリープステートのポートが存在することを検出したときに第１検出信号を生成する検出回路と、
前記トポロジ内のノード数がバスリセットの発生前後で減少したことを検出したときに第２検出信号を生成するトポロジ監視回路と、
前記第１検出信号及び前記第２検出信号に応答して、前記スリープ解除信号を送信するスリープ解除信号送信回路と、
を備えることを特徴とする付記１に記載のインターフェース装置。
（付記３）
前記ステートマシンは、前記スリープステートのときに、前記スリープ解除信号を受信すると、前記スリープステートからディスコネクトステートに遷移させることを特徴とする付記１又は２に記載のインターフェース装置。
（付記４）
前記検出回路は、前記コネクトビットが物理的に接続されていることを示す値で、且つ前記スリープビットがスリープステートであることを示す値を有するポートがトポロジ内に存在するときに、前記第１検出信号を生成することを特徴とする付記２又は３に記載のインターフェース装置。
（付記５）
前記検出回路は、前記トポロジ内に中断処理によってスリープステートに遷移されたポートが存在せず、且つ前記コネクトビットが物理的に接続されていることを示す値で、前記スリープビットがスリープステートであることを示す値を有するポートがトポロジ内に存在するときに、前記第１検出信号を生成することを特徴とする付記２又は３に記載のインターフェース装置。
（付記６）
前記検出回路は、
前記トポロジ内の全ての他ノードの全ポートに対応する前記コネクトビット及び前記スリープビットを読み出すためのリモートアクセスパケットを送信する読み出し回路と、
前記アクセスパケットに対する応答パケットを前記他ノードから受信し、該受信した応答パケットから前記コネクトビット及び前記スリープビットを取得する受信回路と、
を備えることを特徴とする付記２〜５のいずれか１つに記載のインターフェース装置。
（付記７）
前記トポロジ監視回路は、
前記トポロジ内で発生するバスリセットプロセスにおいて前記他ノードから送信されるセルフＩＤパケットの数に基づいて、前記トポロジ内のノード数を検出し、そのノード数が前記バスリセットプロセスの前後で減少したときに、前記第２検出信号を生成することを特徴とする付記２〜６のいずれか１つに記載のインターフェース装置。
（付記８）
前記スリープ解除信号は、前記トポロジ内の全ポートに送信されるリジュームパケット、あるいは前記スリープステートが解除される対象のポートのみに送信されるリモートコマンドパケットであることを特徴とする付記１〜７のいずれか１つに記載のインターフェース装置。
（付記９）
複数のノードがポートにてループ接続されたときに、ループを切断するように論理的に接続されたポートを、ループ・ディスエーブルステートに遷移させ、さらにスリープステートに遷移させるトポロジ構築方法であって、
前記スリープステートに遷移されたポートが存在するトポロジにおいて、該トポロジが変化したときにスリープ解除回路から送信されるスリープ解除信号に応答して、前記スリープステートのポートをディスコネクトステートに遷移させることを特徴とするトポロジ構築方法。
（付記１０）
前記スリープ解除信号は、前記トポロジ内の全ポートに送信されるリジュームパケット、あるいは前記スリープステートが解除される対象のポートのみに送信されるリモートコマンドパケットであることを特徴とする付記９に記載のトポロジ構築方法。
【図面の簡単な説明】
【００８５】
【図１】インターフェース回路を示すブロック図。
【図２】スリープ解除回路を示すブロック図。
【図３】ネットワークシステムを示すブロック図。
【図４】状態遷移を説明するための説明図。
【図５】Ｃビット及びＳビットを説明するための説明図。
【図６】（ａ）〜（ｄ）は、ネットワークシステムの接続状態の遷移を説明するための説明図。
【図７】スリープステートの解除方法を説明するためのフローチャート。
【図８】スリープステートの解除方法を説明するためのフローチャート。
【図９】（ａ）、（ｂ）は、従来のネットワークシステムを示すブロック図。
【符号の説明】
【００８６】
Ａ，Ｂ，Ｃ  ノード
Ｐ１Ａ，Ｐ２Ａ，Ｐ１Ｂ，Ｐ２Ｃ  ポート
Ｐ２Ｂ，Ｐ１Ｃ  ポート（スリープステートに遷移されたポート）
１０Ａ，１０Ｂ，１０Ｃ  インターフェース回路（インターフェース装置）
１ａ，１ｂ，１ｃ  バスケーブル
３４ａ，３４ｂ  レジスタ（物理層レジスタ）
３５ａ，３５ｂ  ステートマシン
５０  スリープ解除回路
６０  ループ検出回路（検出回路）
６１  外部レジスタ読み出し回路（読み出し回路）
６２  受信パケット判定回路（受信回路）
７０  トポロジ監視回路
８０  スリープ解除制御回路
８１  スリープ解除パケット送信回路（スリープ解除信号送信回路）
【図１】
2010056716.tif 000003
【図２】
2010056716.tif 000004
【図３】
2010056716.tif 000005
【図４】
2010056716.tif 000006
【図５】
2010056716.tif 000007
【図６】
2010056716.tif 000008
【図７】
2010056716.tif 000009
【図８】
2010056716.tif 000010
【図９】
2010056716.tif 000011