(第一実施形態)
以下、第一実施形態を図1〜図12に従って説明する。
図1に示すように、ネットワークは、2つの送信装置(ソース装置)11,12と1つの受信装置(シンク装置)13を有している。送信装置11は、未接続状態のポート11aと、ケーブル14を介して受信装置13のポート13aと接続されたポート11bを有している。同様に、送信装置12は、ケーブル15を介して受信装置13のポート13bと接続されたポート12aと、未接続状態のポート12bとを有している。
送信装置11,12は、映像データや音声データ等のデジタルデータを送信する装置、例えばパーソナルコンピュータ、ハードディスク装置(HDD)、レコーダ、プリンタ、デジタルカメラ等である。各送信装置11,12は、所定の規格(例えば、IEEE1394規格)に対応するコントローラ(IEEE1394プロトコルコントローラ(IPC:IEEE1394 Protcol Controller))を有している。各送信装置11,12のコントローラは、所定の規格に従って他の装置とシリアル通信する。送信装置11,12はそれぞれ、映像データや音声データを送信する。なお、以下の説明において、各送信装置11,12が通信を行うように説明する。
受信装置13には、表示装置16,17とスピーカ18が接続されている。表示装置16,17は、例えば液晶表示パネル(LCD:Liquid Crysatl Display)である。表示装置16,17及びスピーカ18は出力装置の一例である。受信装置13は、出力装置がそれぞれ接続された処理装置21〜23を有している。表示装置16は処理装置21に接続され、表示装置17は処理装置22に接続され、スピーカ18は処理装置23に接続されている。処理装置21〜23は例えばプリント配線板(PCB)24に実装されている。各処理装置21〜23は、受信したデータを、対応する出力装置16〜18に出力する。
各処理装置21〜23は、送信装置11,12と同様に、所定の規格(例えば、IEEE1394規格)に対応するコントローラ(IEEE1394プロトコルコントローラ(IPC:IEEE1394 Protcol Controller))を有している。従って、各処理装置21〜23と送信装置11,12はそれぞれ、所定の規格(IEEE1394規格)のネットワークに含まれる装置(ノード)として機能する。各処理装置21〜23のコントローラは、所定の規格に従って他の装置とシリアル通信する。処理装置21〜23はそれぞれ、受信した映像データや音声データを、対応する出力装置に出力する。なお、以下の説明において、各処理装置21〜23が通信を行うように説明することがある。また、送信装置及び通信装置(処理装置)を単にノードとして説明することがある。
処理装置21〜23はそれぞれ、上記所定の規格に対応する2つのポートP0,P1を有している。第1の処理装置21のポートP0は、プリント配線板24に形成された配線24aと、受信装置13外部の伝送路であるケーブル14を介して送信装置11に接続されている。第1の処理装置21のポートP1は、装置内部の伝送路、例えばプリント配線板24に形成された配線24bを介して第2の処理装置22のポートP0に接続されている。第2の処理装置22のポートP1は、装置内部の伝送路(プリント配線板24に形成された配線24c)を介して第3の処理装置23のポートP0に接続されている。第3の処理装置23のポートP1は、プリント配線板24に形成された配線24dと、受信装置13外部の伝送路であるケーブル15を介して送信装置12に接続されている。
つまり、第1の処理装置21のポートP0と第3の処理装置23のポートP1は、受信装置13外部の伝送路に接続される外部接続ポートである。そして、第1の処理装置21のポートP1と、第2の処理装置22のポートP0,P1と、第3の処理装置23のポートP0は、受信装置13内部の伝送路(配線)と接続された内部接続ポートである。
また、各処理装置21〜23はそれぞれ、ポートP0,P1に対応する設定端子D0,D1を有している。各処理装置21〜23の設定端子D0,D1は、ポートP0,P1の接続状態に応じてプルアップ又はプルダウンされている。例えば、外部の伝送路と接続されるポートに対応する設定端子はプルアップされ、外部の伝送路と接続されないポートに対応する設定端子はプルダウンされる。
従って、第1の処理装置21のポートP0は、受信装置13外部の装置(送信装置11)と接続され、ポートP1は受信装置13内部の装置(処理装置22)と接続される。これらに対し、第1の処理装置21の設定端子D0はプルアップされ、設定端子D1はプルダウンされている。同様に、第2の処理装置22のポートP0,P1は内部の装置(処理装置21,23)にそれぞれ接続され、設定端子D0,D1はプルダウンされている。また、第3の処理装置23のポートP0は内部の装置(処理装置22)に接続され、ポートP1は外部の装置(送信装置12)に接続されている。従って、第3の処理装置23の設定端子D0はプルダウンされ、設定端子D1はプルアップされている。
各処理装置21〜23は、それぞれ設定端子D0,D1の状態(電圧レベル)に基づいて、対応するポートP0,P1の接続状態が、外部接続状態か内部接続状態かを判定する。そして、各処理装置21〜23はそれぞれ、バスのコンフィグレーションにおいて、ポートP0,P1の接続状態等に基づいて、自装置の状態(ノードID)を設定する。
バスのコンフィグレーションは、バス初期化(Bus−Initialize)、ツリー識別(Tree−Identfy)、自己識別(Self−Identfy)の各フェーズを含む。
バス初期化フェーズにおいて、バスリセットが発生し、すべてのノード(送信装置11,12及び処理装置21〜23)はトポロジに関する情報を消去する。
次いで、ツリー識別フェーズにおいて、各ノードは、各ノード間の親子関係を設定する。そして、接続形態等に応じて任意のノードがルートノード(許可装置)に決定される。次いで、自己識別フェーズにおいて、送信装置11,12は、所定のシーケンスに従って、それぞれ装置ID(ノードID)を取得する。例えば、図1に示すように、送信装置11は「1」の装置IDを取得し、送信装置12は「0」の装置IDを取得する。
処理装置21〜23は、ノードの決定(ルートノードか否か)、各ポートP0,P1の接続状態(外部接続状態,内部接続状態)、各ポートの親子関係(親ポート:Parent Port,子ポート:Child Port)に応じて、自己識別フェーズの処理を実行する。この自己識別フェーズにおいて、処理装置21〜23のうち、1つのノードが装置IDを取得し、他の2つのノードは装置IDを取得しない。
自己識別フェーズにおける処理は、以下の(a)〜(e)を含む。
(a)内部接続状態の親ポートから許可信号(Grant信号)を受信した場合、受信した親ポートに対してキャンセル信号(Cancel信号)を出力し、装置IDの取得を行わない。
(b)外部接続状態の親ポートからGrant信号を受信した場合は、セルフIDパケットを送信して装置IDを取得する。
(c)子ポートからCancel信号を受信した場合、その子ポートの識別(Identify)を完了する。なお、子ポートにおけるIdentifyの完了は、「非接続状態」、「Identifyの完了を示すIdent_done信号の受信」「Grant信号に対するCancel信号の受信」を含む。
(d)複数の子ポートを持つノードにおいて、Identifyが完了していない1つの子ポートからGrant信号を出力するとき、Identifyが完了していない他の子ポートにIdle信号を出力する。その後、Grant信号を出した子ポートからData_Prefix信号またはセルフIDパケットを受信した後、Identifyが完了していない他の子ポートに受信した信号(Data_Prefix信号又はセルフIDパケット)を出力する。Identifyが完了していない1つの子ポートからGrant信号を出力するとき、Identifyが完了している他の子ポートに対してData_Prefix信号を出力する。
(e)ルートノード(すべてのポートが子ポート)の場合は、セルフIDパケットを送信して装置IDを取得する。
上記(a)〜(e)の処理を含む自己識別フェーズを終了した処理装置21〜23は、例えば処理装置21は装置ID(=2)を持ち、処理装置22,23は装置IDを持たない(ID=non)。これにより、受信装置13は、1つの処理装置21が取得した装置ID(図1においてID=2)を有するノードとしてネットワーク中に存在することになる。
即ち、図1に示すネットワークは、3つのノード(送信装置11,12及び処理装置21)が装置IDをそれぞれ取得する。従って、すべてのノードが装置IDを取得する場合と比べ、バスのコンフィグレーションが短い時間で終了する。従って、例えばバスリセットが発生してから通信可能な状態となるまでの復帰時間が短くなる。
装置IDを取得した処理装置(ノード)は、自装置と装置IDの取得をキャンセルした処理装置に対しチャネルを設定し、設定したチャネル番号を送信装置11,12に通知する。送信装置11,12は、それぞれ設定されたチャネル番号とデータを含むデータパケットを送信する。処理装置21〜23は、自己のチャネル番号を含むデータパケットを受け取り、データパケットに含まれるデータを、接続された装置(図1では表示装置16,17、スピーカ18)に出力する。
各処理装置21〜23は互いに他の装置から独立しているため、それぞれの装置21〜23に含まれるインタフェースは、互いに干渉しない。このため、個々の処理装置21〜23に含まれる回路をそれぞれ独立して設計・開発・動作確認を行うことができる。
次に、コントローラの構成例を説明する。
図2に示すコントローラ30は、例えば図1に示す処理装置21に含まれる。コントローラ30は、処理装置21のポートP0に対応するポート回路40a(1394Port0と表記)と、ポートP1に対応するポート回路40b(1394Port1と表記)とを有している。
ポート回路40a内の受信回路41は、1394バス(図1に示す配線24a及びバスケーブル14)を介して相手ノード(送信装置11)と接続されている。この受信回路41は、送信装置11から受信する電気信号を装置内部で扱う電気信号に変換して物理層制御回路50に出力する。受信回路41は、送信装置11から受信するパケットデータ(セルフIDパケットやアイソクロナスパケット等)を物理層制御回路50のデータ再同期部51に出力するレシーバ回路41aと、送信装置11から受信するアービトレーション信号を物理層制御回路50のアービトレーション制御部52に出力するレシーバ回路41bとを有している。
ポート回路40a内の送信回路42は、物理層制御回路50から入力される電気信号を、IEEE1394規格の電気信号に変換して送信装置11に送信する。送信回路42では、出力制御部42aが、物理層制御回路50から入力されるパケットデータ又はアービトレーション制御部52から入力されるアービトレーション制御信号のいずれか一方を選択し、ドライバ回路42bを通じて送信装置11に出力する。
なお、図1に示す処理装置22と接続されるポート回路40bは、ポート回路40aと同様の構成を有しているため、同一の部材にそれぞれ同一の符号を付して示し、それら各要素についての説明を省略する。
物理層制御回路50は、バスの状態モニタ、バスリセット発生時のバスのコンフィグレーション、スピードシグナリングやアービトレーションなどを行う。なお、バスのコンフィグレーション(バスリセットシーケンス)では、トポロジ中のすべてのノードのバスに関する情報の初期化と、ルートノードの決定と、各ノードの物理ID(ノードID)の決定と、ノードIDを通知するためのセルフIDパケットの送信とが行われる。また、この物理層制御回路50は、ポート回路40a,40bから入力される電気信号をリンク層が扱う論理信号に変換し、インタフェース回路(PHY−Link Interface)60を通じてリンク層に出力する。一方、物理層制御回路50は、リンク層からインタフェース回路60を通じて入力される論理信号を電気信号に変換してポート回路40a,40bに出力する。なお、リンク層では、データCRCやヘッダCRCの生成、CRCチェックやパケットの送受信制御が行われる。ポート回路40a,40b、物理層制御回路50及びインタフェース回路60は、物理層回路に含まれる。
物理層制御回路50のデータ再同期部51は、アービトレーション制御部52からの制御信号に応答して、各レシーバ回路41aからの受信パケットデータをリンク層が扱う論理信号に変換してシリアルパラレル変換部53に出力する。また、データ再同期部51は、受信パケットデータをリピート転送するためにリピートデータとして選択回路56に出力する。データ再同期部51は、受信パケットデータの終了を示す終了信号(End of Packet)をアービトレーション制御部52に出力する。
シリアルパラレル変換部53は、データ再同期部51から入力される論理信号(シリアルデータ)をパラレルデータに変換してインタフェース回路60を介してリンク層回路に出力する。インタフェース回路60は、リンク層回路から出力されるパケットデータ(アイソクロナスパケット等)を選択回路55に出力する。
選択回路55には、SelfIDパケット生成部(パケット生成部)57からセルフIDパケットが供給される。選択回路55は、アービトレーション制御部52から入力される選択信号に応じて、パケットデータとセルフIDパケットとのいずれか一方を選択し、パラレルシリアル変換部54に出力する。
パラレルシリアル変換部54は、パケットデータ又はセルフIDパケットをシリアルデータに変換して送信パケットデータとして選択回路56に出力する。
選択回路56は、アービトレーション制御部52から入力される選択信号に応じて、パラレルシリアル変換部54からの送信パケットデータ又はデータ再同期部51からのリピートデータのいずれか一方を選択し、上記出力制御部42aに出力する。
アービトレーション制御部52は、物理層のメインコントローラである。このアービトレーション制御部52には、各レシーバ回路41bからのアービトレーション信号、データ再同期部51からの終了信号が入力される。そして、アービトレーション制御部52は、これらの信号に基づいて、リンク層からのアービトレーションのリクエストに対する応答、各ポート回路40a,40bの管理及び制御、バスのリセット及びコンフィグレーションなどを行う。
アービトレーション制御部52は、パケット生成部57にバスリセット信号(BusReset)を出力する。また、アービトレーション制御部52は、自ノードのセルフIDパケットの送信が許可されたことを示す送信許可信号(SelfID_TX)と、他ノードからセルフIDパケットを受信したことを示す受信信号(SelfID_RX)とを、パケット生成部57に出力する。
パケット生成部57は、セルフIDパケット(self−ID packet)を生成する。そして、パケット生成部57は、セルフIDパケットの数をカウントしたカウンタ値を記憶している。パケット生成部57は、バスリセット信号(BusReset)に応答してカウント値をクリア(=0)する。パケット生成部57は、受信信号(SelfID_RX)に応答してカウント値をインクリメント(+1)する。そして、パケット生成部57は、送信許可信号(SelfID_TX)に応答して、カウント値を設定した装置ID(Physical node ID)を含むセルフIDパケット(self−ID packet)を生成する。このように生成されたセルフIDパケットは、上記送信回路42等を通じて他ノードにブロードキャスト送信される。
アービトレーション制御部52は、図1に示す設定端子D0の接続に応じたレベルの接続情報信号SD0と、設定端子D1の接続に応じたレベルの接続情報信号SD1を入力する。接続情報信号SD0は、図1に示すポートP0、即ち図2に示すポート回路40aに対応し、その信号SD0のレベルはポート回路40aの接続状態を示す。同様に、接続情報信号SD1は、図1に示すポートP1、即ち図2に示すポート回路40bに対応し、その信号SD1のレベルはポート回路40bの接続状態を示す。
アービトレーション制御部52は、接続情報信号SD0のレベルに基づいて、対応するポート回路40a(図1に示すポートP0)の接続状態を判定する。図1に示すように、設定端子D0は、受信装置13外部の送信装置11に接続されたポートP0に対応してプルアップされる。設定端子D1は、受信装置13内部の処理装置22に接続されたポートP1に対応してプルダウンされる。従って、図2に示すアービトレーション制御部52は、Hレベルの接続情報信号SD0に基づいて、ポート回路40aが、外部接続状態にあると判定する。また、アービトレーション制御部52は、Lレベルの接続情報信号SD1に基づいて、ポート回路40bが、内部接続状態にあると判定する。そして、アービトレーション制御部52は、各ポート回路40a,40bの接続状態に基づいて、ネットワークの初期化を行うシーケンスのうち、自己識別シーケンスを実行する。
次に、アービトレーション制御部52の動作の概略を説明する。
図3に示すように、アービトレーション制御部52は、リセットやタイムアウトの発生、または1394バスの初期化信号であるバスリセット(BusReset)信号を受信すると、1394バスを初期化するバスリセット(BusReset)シーケンスを開始する。バスリセットシーケンスでは、R0:Reset StartとR1:Reset Waitの2つの状態が定義されている。ネットワーク全体が初期化シーケンスに入ったことを確認すると、トポロジの構築を行うツリー識別(Tree−Identify)シーケンスに進む。
ツリー識別シーケンスでは、T0:Tree ID start、T1:Child Handshake、T2:Parent Handshake、T3:Root Contentionの4つの状態が定義されている。このツリー識別シーケンスにおいて、1394バスケーブルを介して接続されたポートに対して、アービトレーション権限の上位側と下位側を決定する。各装置は、接続相手が上位(親)であるポートを親ポートとし、接続相手が下位(子)であるポートを子ポートとする。また、他の装置が接続されていないポートは「切(off)」に設定される。そして、すべてのポートが子ポートである装置がルート(Root)ノードに決定される。
トポロジの構築を完了すると、装置IDの割り当てを行う自己識別(Self Identify)シーケンスを開始する。図1に示す処理装置21〜23の自己識別シーケンスでは、S0:Self ID start、S1:Self ID Grant、S2:Self ID Receive、S3:Send Speed Capabilities、S4:Self ID Transmit、S5:Self ID Cancelの6つの状態が定義されている。
図1に示す送信装置11,12は、自己識別シーケンスにおいて、セルフIDパケットを送信し、装置IDを確定する。受信装置13に含まれる処理装置21〜23のうち、ルートノードに決定された処理装置、又は外部接続の親ポートを有する処理装置はセルフIDパケットを送信し装置IDを確定する。一方、処理装置21〜23のうち、内部接続の親ポートを有する処理装置は、装置IDの取得をキャンセルする。
自己識別シーケンスを完了すると、通常転送のアービトレーションを行う通常アービトレーション(Normal arbitration)シーケンスを開始する。通常アービトレーションでは、A0:Idle、A1:Request Test、A2:Request Delay、A3:Request、A4:Grant、A5:Receive、A6:Transmitの7つの状態が定義されている。送信装置11,12及び処理装置21〜23は、互いに通信を行い、データを送受信する。
次に、処理装置21〜23における自己識別シーケンスの各状態を説明する。
図4に示すように、初期状態である状態S0へは、ツリー識別シーケンスの状態T2から、遷移する。この状態S0において、ルートノード、又はGrant信号の受信を条件として状態S1へ遷移する。
状態S1では、図5に示すフローチャートに従って動作する。そして、状態S1において、Grant信号を出力した子ポートからData_Prefix信号の受信を条件として状態S2へ遷移する。
状態S2はSelf−IDパケットを受信している状態である。連結されたパケット(Concatenated_packet)を受信した場合、状態S2から状態S2へ遷移する。
状態S2において、Identifyの完了を示すIdent_done信号の受信を条件として状態S3へ遷移する。
状態S3において、SPEED_SIGNAL_LENGTHの経過を条件として状態S0へ遷移する。
状態S1において、Grant信号を出力したポートからパケットの始まりを示すData_prifix信号の受信を条件として状態S2へ遷移する。
状態S2において、Idle信号の受信、又はGrant信号の受信、又はData_Prefix信号の受信を条件として状態S0へ遷移する。
また、上記状態S1において、Grant信号を出力した子ポートからキャンセル(Cancel)信号の受信を条件として状態S3へ遷移する。キャンセル信号は、例えば1394a−2000の規格の[Arb_A_Tx,Arb_B_Tx]=[Z,0]、[Arb_A_Rx,Arb_B_Rx]=[0,0]である。
上記状態S1において、ルートノード、又は親ポートが外部接続状態であってすべての子ポートに対する識別(Identify)の完了を条件として状態S4へ遷移する。識別(Identify)の完了は、ポートが非接続であるか、Ident_done信号又はCancel信号の受信より成立する。
状態S4において、ルートノード、又はData_Prefix信号の受信を条件として、通常アービトレーション(Normal arbitration)シーケンスの状態A0へ遷移する。
上記状態S1において、ルートノード、又は親ポートが内部接続状態であってすべての子ポートに対する識別(Identify)の完了を条件として状態S5へ遷移する。識別(Identify)の完了は、ポートが非接続であるか、Ident_done信号又はCancel信号の受信より成立する。
状態S5において、Data_Prefix信号の受信を条件として、通常アービトレーション(Normal arbitration)シーケンスの状態A0へ遷移する。
[S1:Self−ID Grant]
次に、状態S1におけるSelf−ID Grantの処理を説明する。
図5に示すように、アービトレーション制御部52は、状態S1に遷移する(IN)と、ステップ71の処理を実行する。ステップ71において、Identifyの完了している子ポートにData_Prefix信号を出力する。また、ステップ71において、Identifyの完了していない最も小さなポート番号の子ポートにGrant信号を出力する。また、ステップ71において、上記以外、即ちIdentifyの完了していない子ポートのうち、最も小さなポート番号より大きなポート番号の子ポートにIdle信号を出力する。
次いで、すべての子ポートのIdentifyが完了したか否かを判定し(ステップ72)、完了した場合(判定:Yes)、自装置がルートノード(Root)であるか、または親ポートが外部接続であるかを判定する(ステップ73)。ルートノード、又は親ポートが外部接続である場合(判定:Yes)、状態S4へ遷移する。一方、ルートノード以外であり、親ポートが内部接続の場合(判定:No)、状態S5へ遷移する。
上記ステップ72において完了していない場合(判定:No)、Grant信号を出力した子ポートからData_Prefix信号を受信したか否かを判定する(ステップ74)。Data_Prefix信号を受信した場合(判定:Yes)、子ポートへのGrant信号の出力を停止(Idle信号を出力)し(ステップ75)、状態S2へ遷移する。
一方、ステップ74においてData_Prefix信号を受信していない場合、Grant信号を出力した子ポートからCancel信号を受信したか否かを判定する(ステップ76)。Cancel信号を受信した場合(判定Yes)、子ポートのIdentifyを完了に設定し、子ポートへのGrant信号の出力を停止(Idle信号を出力)し(ステップ77)、状態S3へ遷移する。
一方、ステップ76においてCancel信号を受信していないと判定した場合(判定:No)、ステップ74へ遷移する。
[S5:Self−ID Cancel]
次に、状態S5におけるSelf−ID Cancelの処理を説明する。
図6に示すように、アービトレーション制御部52は、状態S5に遷移する(IN)と、親ポートにキャンセル(Cancel)信号を出力し、親ポートにSpeed Capability Signalを出力し、子ポートにData_Prefix信号を出力する(ステップ81)。
次いで、SPEED_SIGNAL_LENGTHの経過を判定し(ステップ82)、経過するまで同ステップを繰り返す、つまりループする。
次いで、親ポートへのCancel信号の出力を停止(Idle信号を出力)し、親ポートへのSpeed Capability singalの出力を停止する(ステップ83)。
次いで、親ポートからData_Prefix信号を受信したかを判定し(ステップ84)、Data_Prefix信号を受信するまでループする。親ポートからData_Prefix信号を受信すると、通常アービトレーション(Normal arbitration)シーケンスの状態A0へ遷移する。
次に、ネットワークにおける各装置の動作を説明する。
なお、図1に示す送信装置11,12を、例えば図7(a)に示すように「装置1」「装置2」と表記する。また、図1に示す受信装置13を長方形破線枠で示し、各処理装置21,22,23を、「装置A」「装置B」「装置C」と表記する。そして、動作説明において、各表記を用いて説明する。また、以下の説明に対応する図において、親ポートを単に「親」、子ポートを単に「子」と表記する。
[接続例1]
図7(a)に示すように、受信装置は、直列に接続された装置A〜Cを含み、装置Aがルートノードに決定される。装置Aにおいて、外部接続状態の子ポートには装置1が接続され、装置Cにおいて、外部接続状態の子ポートには装置2が接続されている。
図7(a)に示すように、ルートノードに決定された装置Aは、子ポートのうちの1つ、例えば装置Bが接続された子ポートからGrant信号を出力する。装置Bは、親ポートから受信したGrant信号に応答して、子ポートからGrant信号を出力する。同様に、装置Cは、親ポートから受信したGrant信号に応答して、子ポートからGrant信号を出力する。つまり、装置B,Cは、Grant信号を転送(リピート)する。
図7(b)に示すように、親ポートからGrant信号を受信した装置2は、パケットの先頭を示すData_Prefix信号(D_prefixと表記)を出力する。D_prefix信号を受信した装置Cは状態S2へ遷移し、D_prefixを送信、つまり転送する。同様に、装置B,Aは、D_prefix信号を転送する。子ポートからD_prefix信号を受信した装置C,B,Aは、子ポートに対するGrant信号の出力を停止する。
次いで、装置2は、セルフIDパケットの数をカウントしたカウント値に従って、図7(c)に示すように、カウント値を設定した装置IDを含むセルフIDパケット(SelfID−P)を親ポートから送信し、装置ID(=0)を確定する。装置C,B,Aは、ID=0のセルフIDパケット(SelfID−P)を転送する。装置C,B,Aと装置1は、セルフIDパケット(SelfID−P)の受信を終了すると、図4に示す状態S2から状態S0へ遷移する。
次いで、装置2は、図7(d)に示すように、セルフIDの完了を示すIdent_done信号(Ident_Dと表記)を親ポートから出力する。Ident_D信号を受信した装置Cは、子ポートを、Identifyが完了したポートとして設定する。
ルートノードである装置Aは、図4に示す状態S0から状態S1へ遷移し、図7(e)に示すように、Grant信号を出力する。装置Bは、Grant信号を転送する。装置Cは、親ポートからGrant信号を受信すると、親ポートが内部接続状態であり子ポートのIdentifyが完了しているため、図5に示すフローチャート(ステップ72:Yes,ステップ73:No)に従って状態S5へ遷移し、図7(e)に示すように、子ポートからD_prefix信号を出力する。
また、状態S5へ遷移した装置Cは、図7(f)に示すように、親ポートからキャンセル信号(Cancel)を出力する。キャンセル信号(Cancel)を受信した装置Bは、図5に示すフローチャート(ステップ76:Yes,ステップ77)に従って、子ポートをIdentifyが完了したポートとして設定し、子ポートに対するGrant信号の出力を停止する。そして、装置Bは、図4に示す状態S1から状態S3へと遷移する。そして、装置Bは、SPEED_SIGNAL_LENGTHの経過後、状態S0へと遷移する。
状態S0へ遷移した装置Bは、親ポートから受信するGrant信号に応答して状態S1へ遷移する。このとき、装置Bは、子ポートのIdentifyが完了し、親ポートが内部接続であるため、図5に示すフローチャート(ステップ72,73)に従って状態S5へ遷移する。状態S5へ遷移した装置Bは、図6に示すフローチャートに従って、図7(f)に示すように、親ポートからキャンセル信号(Cancel)を出力する。このように、装置C,Bは、ネットワークの接続関係における上位側の装置(装置B、A)にキャンセル信号(Cancel)を伝達し、装置IDを持たない(ID=non)装置に確定する。
装置Bからキャンセル信号を受信した装置Aは、図5に示すフローチャート(ステップ76,77)に従って、子ポートをIdentify完了に設定し、図4に示す状態S1から状態S3へと遷移する。更に、装置Aは、SPEED_SIGNAL_LENGTHの経過後、状態S0へと遷移する。装置Aはルートノードであるため、図4に示す状態S0から状態S1へ遷移する。
状態S1において、装置Aは、装置Bに接続された子ポートにおけるIdentifyが完了しているため、図7(g)に示すように、他の子ポートからGrant信号を出力し、Identifyが完了した子ポートからD_prefix信号を出力する。装置B、CはD_prefix信号を転送する。
Grant信号を受信した装置1は、図8(a)に示すように、D_prefix信号を出力する。装置A〜Cは、D_prefix信号を転送する。更に、装置1は、セルフIDパケットの数をカウントしたカウント値に従って、図8(b)に示すように、カウント値を設定した装置IDを含むセルフIDパケット(SelfID−P)を送信し、装置ID(ID=1)を確定する。装置A〜Cは、セルフIDパケット(SelfID−P)を転送する。
次いで、装置1は、図8(c)に示すように、Identifyの完了を示すIdent_D信号を出力する。Ident_D信号を受信した装置Aは、図4に示す状態S2から状態S3へと遷移し、すべての子ポートのIdentifyが完了する。従って、装置Aは、図4に示す状態S0を経由して状態S1へ遷移する。状態S1に遷移した装置Aは、図5に示すフローチャートに従って、図8(d)に示すように、Identifyが完了した子ポートからD_prefix信号を出力する。装置B,Cは、D_prefix信号を転送する。
そして、装置Aは、図5に示すフローチャート(ステップ72,73:Yes)に従って、状態S1から状態S4へ遷移する。状態S4に遷移した装置Aは、セルフIDパケットの数をカウントしたカウント値に従って、図8(e)に示すように、カウント値を設定した装置IDを含むセルフIDパケット(SelfID−P)を各子ポートから送信し、装置ID(ID=2)を確定する。状態S4においてセルフIDパケットを送信した装置Aは、ルートノードであるため、セルフIDシーケンスを終了し、通常アービトレーションの状態A0へと遷移する。
上記の処理により、図8(f)に示すように、装置1と装置2はそれぞれ「1」,「0」の装置IDを取得する。ルートノードに決定された装置Aは「2」の装置IDを取得し、装置B,Cは装置IDを取得しない(ID=non)。従って、ネットワーク上では、受信装置に含まれる装置A〜Cのうち、装置Aのみが認識され、装置Bと装置Cは認識されない。その結果、受信装置13は、ネットワーク上において、装置Aが取得した装置ID(=2)を持つ1つの装置として認識される。
なお、図7(a)において、ルートノードに決定した装置AがGrant信号を装置1に出力した場合、装置1が最初に装置ID(=0)を取得する。そして、装置AがGrant信号を装置Bに出力すると、上記と同様にして装置2が「1」の装置IDを取得し、装置B,Cは装置IDを取得しない(ID=non)。そして、装置Aが「2」の装置IDを取得し、自己識別シーケンスを終了する。
また、装置Cがルートノードに決定した場合、装置Aがルートノードに決定した場合と同様に、装置Aは上記の装置Cと同様に動作して装置IDを取得しない(ID=non)。そして、装置Cが装置IDを取得し、自己識別シーケンスを終了する。また、装置Bがルートノードに決定した場合、装置A,Cは上記の装置Cと同様に動作して装置IDを取得しない(ID=non)。そして、装置Bが装置IDを取得し、自己識別シーケンスを終了する。
上記したように、受信装置13に含まれる装置A〜Cのうちの1つがルートノードに決定した場合、他の装置は内部接続状態の親ポートを持つ。その内部接続状態の親ポートを持つ装置は装置IDの取得をキャンセルする。そして、ルートノードに決定した装置は、装置IDを取得する。その結果、装置A〜Cを含む受信装置13は、ルートノードに決定した装置が取得した装置IDを持つ1つの装置として、ネットワーク中の他の装置から認識される。
[接続例2]
図9(a)に示すように、受信装置は、直列に接続された装置A〜Cを含み、装置Aがルートノードに決定される。装置Aにおいて、外部接続状態の子ポートには装置1が接続されている。装置Cにおいて、外部接続状態のポートは非接続状態にある。なお、装置Cは、親ポートが設定され、子ポートが設定されていないノードであるが、説明の便宜上、上記[接続例1]と同様に、子ポート(「子」と表記)として説明する。
図9(a)に示すように、ルートノードに決定された装置Aは、子ポートからGrant信号を出力する。装置Bは、Grant信号を転送する。Grant信号を受信した装置Cは、親ポートが内部接続状態であり、子ポートが非接続状態、つまり子ポートのIdentifyが完了しているため、図4に示す状態S1から状態S5へと遷移する。状態S5へ遷移した装置Cは、図9(b)に示すように、親ポートにキャンセル信号(Cancel)を出力する。装置Bは、キャンセル信号を転送する。従って、装置Bと装置Cは、図7(f)示す状態と同様に、装置IDを持たない装置(ID=non)に確定する。
ルートノードである装置Aは、図7(g)、図8(a)〜図8(f)と同様に、図9(c)〜図9(g),図10(a),図10(b)に示すように動作し、装置IDを取得する。同様に、装置1は、装置IDを取得する。
上記の処理により、図10(b)に示すように、装置1は「0」の装置IDを取得する。また、受信装置に含まれる装置Aは「1」の装置IDを取得し、装置B,Cは装置IDを取得しない(ID=non)。従って、ネットワーク上では、装置Aのみが認識される。その結果、受信装置13は、ネットワーク上において、装置Aが取得した装置ID(=2)を持つ1つの装置として認識される。
上記したように、装置Cはルートノードではなく、内部接続状態の親ポート以外のポートは非接続状態にある。つまり、装置IDを取得しない装置Cがリーフノード状態に接続されたネットワークにおいても、自己識別シーケンスを終了することができる。
なお、装置Bがルートノードに決定した場合、装置Cは、上記と同様に動作し、装置IDを取得しない。このようにネットワークが決定した場合であっても、自己識別シーケンスを終了することができる。
また、装置Cがルートノードに決定した場合、上記の接続例1と同様に、装置Aと装置Bは装置1と装置Cとの間に接続された装置であり、装置IDを取得しない(ID=non)。そして、ルートノードに決定した装置Cは、上記の接続例1と同様に、装置ID(=1)を取得し、自己識別シーケンスを終了する。
[接続例3]
図11(a)に示すように、受信装置は、直列に接続された装置A〜Cを含む。装置Aにおいて、外部接続状態の親ポートには装置1が接続され、装置Cにおいて、外部接続状態の子ポートには装置2が接続されている。装置1がルートノードに決定される。
この場合、装置Bは、内部接続状態の親ポートを持ち、子ポートに装置Cが接続されている。また、装置Cは、内部接続状態の親ポートを持ち、子ポートに装置2が接続されている。従って、装置Bと装置Cは、上記の接続例1の図7(a)〜図7(e)と同様に、図11(a)〜図11(e)に示すように動作し、装置IDを取得しない(ID=non)装置として確定する。
装置Aは、外部接続状態の親ポートを持ち、子ポートに装置Bが接続されている。従って、装置Aは、図11(f)に示すように、装置BからCancel信号を受信すると、子ポートのIdentifyが完了したポートとして設定する。そして、装置Aは、図4に示すように、状態S1から状態S3へと遷移し、SPEED_SIGNAL_LENGTHの経過後、状態S0へと遷移する。そして、図11(f)に示すように、ルートノードである装置1が出力するGrant信号を受信して、図4に示す状態S1へと遷移する。
状態S1に遷移した装置Aは、図5に示すフローチャートに従って、図11(g)に示すように、子ポートからD_prefix信号を出力する。また、装置Aは、すべての子ポートのIdentifyが完了し、親ポートが外部接続状態であるため、図5に示すフローチャートに従って、状態S1から状態S4へと遷移する。そして、装置Aは、セルフIDパケットの数をカウントしたカウント値に従って、図12(a)に示すように、装置IDを含むセルフIDパケット(SelfID−P)を送信し、装置ID(=1)を確定する。次いで、図12(b)に示すように、装置Aは、Ident_D信号を親ポートから出力する。
図12(c)に示すように、装置1は、子ポートからD_prefixを出力し、装置A〜CはD_prefix信号を転送する。次に、装置1は、セルフIDパケットの数をカウントしたカウント値に従って、図12(d)に示すように、装置IDを含むセルフIDパケット(SelfID−P)を送信し、装置ID(=2)を確定する。
上記の処理により、図12(e)に示すように、装置1と装置2はそれぞれ「2」,「0」の装置IDを取得する。外部接続状態のポートが親ポートに決定された装置Aは、「1」の装置IDを取得し、装置B,Cは装置IDを取得しない(ID=non)。従って、ネットワーク上では、受信装置に含まれる装置A〜Cのうち、装置Aのみが認識され、装置Bと装置Cは認識されない。その結果、受信装置13は、ネットワーク上において、装置Aが取得した装置ID(=1)を持つ1つの装置として認識される。
なお、装置2がルートノードに決定した場合、装置A,Bは内部接続状態の親ポートを持ち、装置Cは外部接続状態の親ポートを持つ。従って、装置A,Bは、上記の装置B,Cと同様にして装置IDを取得しない(ID=non)。そして、装置Cは、上記の装置Aと同様にして装置ID(=1)を取得する。そして、装置2が「2」の装置IDを取得し、自己識別シーケンスを終了する。
上記したように、受信装置13に含まれる装置A〜C以外の装置がルートノードに決定した場合、ルートノードに近い装置のポートが外部接続状態の親ポートに決定され、他の装置は内部接続状態の親ポートを持つ。その内部接続状態の親ポートを持つ装置は装置IDの取得をキャンセルする。そして、外部接続状態の親ポートを持つ装置は、装置IDを取得する。その結果、装置A〜Cを含む受信装置13は、外部接続状態の親ポートを持つ装置が取得した装置IDを持つ1つの装置として、ネットワーク中の他の装置から認識される。
以上記述したように、本実施形態によれば、以下の効果を奏する。
(1)送信装置11,12と接続された受信装置13は、表示装置16,17とスピーカ18が接続されている。受信装置13は、送信装置11,12から受信したデータに応じた信号を、表示装置16,17とスピーカ18に出力する。受信装置13は、表示装置16,17、スピーカ18とそれぞれ接続された処理装置21,22,23を有している。処理装置21〜23は送信装置11,12と通信可能であり、ネットワークに含まれる。
各処理装置21〜23は、ネットワークのトポロジ構築によって、ポートの親子関係が決定される。また、各処理装置21〜23は、ポートの接続状態、つまり、ポートが受信装置13の外部の装置と接続されている外部接続状態か、受信装置13の内部の装置と接続されている内部接続状態かを、端子D0,D1により設定されている。
各処理装置21〜23のうち、外部接続状態の親ポートを持つ処理装置は、トポロジ構築後の自己識別シーケンスにおいて、外部接続の親ポートから許可信号(Grant信号)を受信した場合、状態S4に遷移してセルフIDパケットを送信し、装置IDを取得する。また、内部接続状態の親ポートを持つ処理装置は、自己識別シーケンスにおいて、親ポートから許可信号(Grant信号)を受信した場合、状態S5へ遷移して親ポートにキャンセル信号を出力し、自己識別シーケンスを終了する。従って、内部接続状態の親ポートを持つ処理装置は、装置IDを取得しない。
従って、受信装置13に含まれる処理装置21〜23のうち、1つの処理装置が装置IDを取得し、他の2つの処理装置は装置IDを取得しない。この結果、受信装置13は1つの処理装置が取得した装置IDを持つ装置として、ネットワークに含まれる他の装置(送信装置11,12)に認識される。従って、全ての処理装置が装置IDを取得する場合と比べ、バスのコンフィグレーションが短い時間で終了する。従って、例えばバスリセットが発生してから通信可能な状態となるまでの復帰時間を短くすることができる。
(2)装置IDを取得した処理装置(ノード)は、自装置と装置IDの取得をキャンセルした処理装置に対しチャネルを設定し、設定したチャネル番号を送信装置11,12に通知する。送信装置11,12は、それぞれ設定されたチャネル番号とデータを含むデータパケットを送信する。処理装置21〜23は、自己のチャネル番号を含むデータパケットを受け取り、データパケットに含まれるデータを、接続された装置(図1では表示装置16,17、スピーカ18)に出力する。このように、装置IDを取得しない処理装置について、確実にデータの送受信を行うことができる。
(3)各処理装置21〜23は互いに他の装置から独立しているため、それぞれの装置21〜23に含まれるインタフェースは、互いに干渉しない。このため、個々の処理装置21〜23に含まれる回路をそれぞれ独立して設計・開発・動作確認を行うことができる。
(4)内部接続状態の親ポートを持ち、子ポートの識別(Identify)が完了した処理装置は、親ポートから受信した許可信号(Grant信号)に応答してキャンセル信号(Cancel)を親ポートから出力し、自己識別シーケンスを終了する。従って、装置IDを取得しない処理装置の子ポートに他の装置が接続されていないリーフノードであっても、自己識別シーケンスを正常に終了させることができる。
(第二実施形態)
以下、第二実施形態を図13〜図25に従って説明する。
なお、第一実施形態と同じ部材については同じ符号を付し、その説明のすべて又は一部を省略する。
図13に示すように、コントローラ100は、3つのポート回路40a,40b,40cと、物理層制御回路110と、インタフェース回路120を有している。
ポート回路40cは、他のポート回路40a,40bと同様の構成を有している。
物理層制御回路110は、図2に示す物理層制御回路50と同様に、データ再同期部51、シリアルパラレル変換部53、パラレルシリアル変換部54、選択回路55,56を有している。更に、物理層制御回路110は、ポート回路40a,40b,40cに対応する3つのレジスタ111a,111b,111c、アービトレーション制御部112、SelfIDパケット生成部(パケット生成部)113を有している。
第1のレジスタ111aには、第1のポート回路40aの接続状態に対応する接続状態情報が、上位の回路(例えば、処理装置全体を制御する制御回路)からインタフェース回路120を介して格納される。接続状態情報は、ポート回路40aが受信装置のポート接続された場合には例えば「1」の情報、ポート回路40aが受信装置に含まれる他の処理装置に接続されている場合には例えば「0」の情報である。
同様に、第2のレジスタ111bには、第2のポート回路40bの接続状態に対応する接続状態情報が格納される。また、第3のレジスタ111cには、第3のポート回路40cの接続状態に対応する接続状態情報が格納される。
アービトレーション制御部112は、各レジスタ111a〜111cに格納された接続状態情報を読み出し、対応する各ポート回路40a〜40cの接続状態を判定する。そして、アービトレーション制御部112は、各ポート回路40a〜40cの接続状態(外部接続,内部接続)と、ネットワークにおける各ポート回路40a〜40cの接続状態(親ポート、子ポート、非接続)に基づいて、装置IDを設定する。
パケット生成部113は、SelfIDパケット抽出部(パケット抽出部)114とChildポート数演算部(ポート数演算部)115を有している。パケット抽出部114は、シリアルパラレル変換部53から出力されるパラレルデータから接続ポート数を抽出してポート数演算部115に出力する。接続ポート数は、受信したセルフIDパケット(self−ID packet)に含まれるポートの状態を示すフィールドのうち、アクティブなフィールドの数である。ポート数演算部115は、パケット抽出部114から出力されるポート数に基づいて、自装置が含まれる装置が持つポート数を算出する。
例えば、図16(a)に示すように、1つの装置(受信装置)130は3つの装置(処理装置)A,B,Cを有し、各装置A〜Cは図13に示すコントローラ100を有している。従って、各装置A〜Cはそれぞれ、3つのポートを持つ。そして、装置A〜Cを含む受信装置130は、各装置A〜Cが持つポートのうち、外部接続状態に設定されたポートを持つ。例えば、図16(a)に示す受信装置130は、4つのポートを持つ装置として認識されなければならない。このため、コントローラ100のポート数演算部115は、自己識別のフェーズにおいて送信されるセルフIDパケットに基づいて、自装置が含まれる装置のポート数を算出する。
図15に示すように、セルフIDパケットSPは、先頭パケットSP1と、2つの連結パケットSP2,SP3を含む。なお、連結パケットの数は、セルフIDパケットを送信する装置が持つポートの数に依存する。ネットワークにおいて、最大4個のパケット(先頭パケットと3個の連結パケット)が送信される。
各パケットSP1〜SP3の先頭の「10」は、当該パケットがセルフIDパケットSPであることを示す。先頭パケットSP1には、送信元の物理IDを示すphy_ID(physical_ID)、リンク層とトランザクション層がアクティブであるか否かを示すL(link_active)等のフィールドが設けられている。また、先頭パケットSP1には、現在のPHY_Configuration.gap_countの値を示すgap_cnt(gap_count)、転送スピード能力を示すSP(PHY_SPEED)等のフィールドが設けられている。また、先頭パケットSP1には、ブリッジ能力を示すbrdg(bridge)、バス又はアイソクロナス・リソースマネージャ候補を示すc(CONTENDER)、パワークラスを示すpwr(POWER_CLASS)、ポートの接続状態を示すp0〜p2(NPORT)等のフィールドが設けられている。さらに、先頭パケットSP1には、バスリセットを発効したノードであることを示すi(initiated_reset)、「1」の場合にセルフIDパケットSPが続くことを示すm(more_packets)等のフィールドが設けられている。連結パケットSP2には、上記phy_ID、Extended self−ID packet Sequence numberを示すn、「0」に設定されるReservedビットであるrsv、ポートの接続状態を示すp3〜p10、上記m等のフィールドが設けられている。連結パケットSP3には、phy_IDフィールド、nフィールド、rsvフィールド、ポートの接続状態を示すp11〜p15フィールド、等が設けられている。
セルフIDパケットSPのp0〜p15フィールドには、ポートの状態に応じてアクティブ(Active)状態を示すデータ(「10」又は「11」)が格納される。図13に示すパケット抽出部114は、セルフIDパケットSPのp0〜P15フィールドを抽出し、このアクティブ状態であるポートの数をポート数演算部115に出力する。
ポート数演算部115は、図14に示すフローチャートに従って動作し、ポートの数を算出する。そして、パケット生成部113は、算出されたポート数の数だけアクティブ状態(「11」)に設定したp0〜p15フィールドを含むセルフIDパケットを生成する。
次に、ポート数演算部115が実行するポート数演算処理を説明する。
図14に示すように、ポート数Ch_Port_Numに「0」をセットする(ステップ141)。
次いで、図13に示すアービトレーション制御部112が出力する受信信号(SelfID_RX)が「1」か否かを判定する(ステップ142)。受信信号(SelfID_RX)は、他ノードからセルフIDパケットを受信したことを示す。従って、セルフIDパケットを受信するまで待機する。
セルフIDパケットを受信すると、図13に示すパケット抽出部114から出力される接続ポート数が「1」か否かを判定する(ステップ143)。接続ポート数が「1」の場合(判定YES)、ポート数演算部115は、ポート数Ch_Port_Numに「1」を加算し(ステップ144)、ステップ142へ移る。
ステップ143において、接続ポート数が「1」ではない場合(判定NO)、ポート数演算部115は、接続ポート数が「3」以上か否かを判定する(ステップ145)。接続ポート数が「3」以上の場合(判定YES)、接続ポート数から「2」を減算した値をポート数Ch_Port_Numから減算し、ステップ142へ移る。また、ステップ145において、接続ポート数が「3」以上ではない場合(判定NO)、ステップ142へ移る。
次に、ネットワークにおける各装置の動作を説明する。
[接続例4]
図16(a)に示すように、受信装置130は装置1〜4と接続されている。装置1〜4は、例えば送信装置である。装置1はルートノードである。受信装置130は装置(処理装置)A〜Cを有し、各装置A〜Cはそれぞれ、図13に示すコントローラ100を含む。
装置Aは、装置1に接続されたポート(外部接続状態)と、装置4に接続されたポート(外部接続状態)と、装置Bに接続されたポート(内部接続状態)を有している。装置Bは、装置Aに接続されたポート(内部接続状態)と、非接続状態のポート(外部接続状態)と、装置Cに接続されたポート(内部接続状態)を有している。装置Cは、装置Bに接続されたポート(内部接続状態)と、装置4に接続されたポート(外部接続状態)と、装置2に接続されたポート(外部接続状態)を有している。
ツリー識別シーケンスにおいて、各装置1〜4,A〜Cのポートの親子関係が決定され、装置1はルートノードに決定される。尚、以下の説明に対応する図において、親ポートを単に「親」、子ポートを単に「子」と表記する。また、装置Bにおいて、便宜上、非接続状態のポートに対して「子」と表記する。
図16(a)に示すように、ルートノードに決定した装置1は、子ポートからGrant信号を出力する。装置Aは、図5に示すフローチャートに従って、Identifyが完了していない最も小さなポート番号の子ポート(例えば、装置Bに接続された子ポート)にGrant信号を出力する。装置Bは、Identifyが完了していない子ポートにGrant信号を出力する。装置Cは、Identifyが完了していない最も小さなポート番号の子ポート(例えば、装置2に接続された子ポート)にGrant信号を出力する。なお、図示しないが、装置Aは、図5に示すフローチャートに従って、上記以外のIdentifyが完了していない子ポート(装置3が接続された子ポート)にIdle信号を出力する。同様に、装置Cは、上記以外のIdentifyが完了していない子ポート(装置4が接続された子ポート)にIdle信号を出力する。
図16(b)に示すように、装置2は、パケットの先頭を示すData_Prefix信号(D_prefixと表記)を出力する。装置C,B,Aは、D_prefix信号を転送する。また、装置Cと装置Aは、D_prefix信号を、装置4と装置3にそれぞれ出力する。
次いで、図16(c)に示すように、装置2は、セルフIDパケットの数をカウントしたカウント値に従って、図16(c)に示すように、カウント値を設定した装置IDを含むセルフIDパケット(SelfID−P)を親ポートから送信し、装置ID(=0)を確定する。装置Cは、ID=0のセルフIDパケット(SelfID−P)を、装置Bと装置4に送信する。装置Bは、ID=0のセルフIDパケット(SelfID−P)を装置Aに送信する。装置Aは、ID=0のセルフIDパケット(SelfID−P)を、装置1と装置3に送信する。
次いで、図16(d)に示すように、装置2は、セルフIDの完了を示すIdent_done信号(Ident_Dと表記)を親ポートから出力する。装置Cは、Ident_D信号を受信した子ポートを、Identifyが完了したポートとして設定し、図4に示す状態S3へ遷移する。装置A,Bは、図4に示す状態S0へ遷移する。
次いで、図17(a)に示すように、装置1は、Grant信号を出力する。装置A,BはGrant信号を転送する。装置Cは、親ポートからGrant信号を受信すると図4に示す状態S1へ遷移する。そして、装置Cは、図5に示すフローチャートに従って、Identifyが完了している子ポートから装置2にD_prefix信号を出力する。また、装置Cは、Identifyが完了していない子ポートから装置4にGrant信号を出力する。
装置4は、装置2と同様に、図17(b)に示すように、D_prefix信号を出力する。装置C,B,AはD_prefix信号を転送する。次いで、装置4は、図17(c)に示すように、装置ID(=1)を含むセルフIDパケットを送信する。装置C,B,AはセルフIDパケットを転送する。次いで、装置4は、図17(d)に示すように、Ident_D信号を送信する。装置Cは、Identify信号を受信した子ポートを、Identifyが完了したポートとして設定する。
次いで、図18(a)に示すように、装置1はGrant信号を出力する。装置A,BはGrant信号を転送する。装置Cは、Grant信号に応答して図4に示す状態S1へ遷移し、図5に示すフローチャートに従って、Identifyが完了した子ポートから装置2と装置4にD_prefix信号を出力する。
次いで、装置Cは、すべての子ポートのIdentifyが完了し、親ポートが内部接続状態であるため、図5に示すフローチャートに従って、図4に示す状態S5へ遷移する。状態S5へ遷移した装置Cは、図6に示すフローチャートに従って、図18(b)に示すように、親ポートから装置Bにキャンセル信号(Cancel)を送信する。
装置Bは、図18(a)に示すGrant信号の受信により、状態S1にある。キャンセル信号(Cancel)を受信した装置Bは、図5に示すフローチャート(ステップ76,77)に従って、子ポートをIdentify完了に設定し、図4に示す状態S1から状態S3へと遷移する。更に、装置Bは、状態S3から状態S0,状態S1を経て状態S5へと遷移し、装置Aにキャンセル信号(Cancel)を出力する。
このように、装置C,Bは、装置IDを持たない(ID=non)装置に確定する。
キャンセル信号(Cancel)を受信した装置Aは、図4に示す状態S1から状態S3へと遷移し、更に状態S0を経て状態S1へ遷移する。状態S1へ遷移した装置Aは、図18(b)に示すように、装置3にGrant信号を出力する。
Grant信号を受信した装置3は、図18(c)に示すように、D_prefix信号を出力する。次いで、装置3は、図18(d)に示すように、装置ID(=2)を含むセルフIDパケット(SelfID−P)を出力する。更に、装置3は、図19(a)に示すように、Ident_D信号を出力する。装置Aは、Ident_Dを受信した子ポートを、Identifyが完了した子ポートに設定する。
次いで、図19(b)に示すように、装置1は、Grant信号を出力する。Grant信号を受信した装置Aは、Identifyが完了した子ポートからD_prefix信号を出力する。
次いで、図19(c)に示すように、装置1は、Grant信号を出力する。Grant信号を受信した装置Aは、図4に示す状態S1から状態S4へと遷移し、装置1にD_prefix信号を出力する。次いで、装置Aは、図19(d)に示すように、装置ID(=3)を含むセルフIDパケット(SelfID−P)を送信する。次いで、装置Aは、図20(a)に示すように、Ident_D信号を装置1に出力する。装置1は、Ident_D信号を受信した子ポートを、Identifyが完了した子ポートに設定する。
次いで、装置1は、図20(b)に示すように、D_prefix信号を出力する。次いで、装置1は、図20(c)に示すように、装置ID(=4)を含むセルフIDパケット(SelfID−P)を送信する。
上記の処理により、図20(d)に示すように、ネットワークに含まれる各装置の装置IDが確定する。受信装置130に含まれる装置A〜Cのうち、装置Aが装置ID(=3)を取得し、装置B及び装置Cは装置IDを取得しない(ID=non)。従って、受信装置130は、装置Aが取得した装置ID(=3)を持つ装置として、ネットワーク上の他の装置1〜4に認識される。
また、装置IDを取得した装置Aは、図13に示すパケット生成部113(ポート数演算部115)により算出されたポート数(=4)に応じて、図15に示すp0〜p3フィールドにアクティブ状態を示すデータ(「11」)を格納したセルフIDパケットを送信する。従って、受信装置130は、4つのポートを持つ装置として、ネットワーク上の他の装置に認識される。
[接続例5]
図21(a)に示すように、受信装置130は装置1〜3と接続されている。受信装置130は装置(処理装置)A〜Cを有し、各装置A〜Cはそれぞれ、図13に示すコントローラ100を含む。
装置Aは、装置1に接続されたポート(外部接続状態)と、非接続状態のポート(外部接続状態)と、装置Bに接続されたポート(内部接続状態)を有している。装置Bは、装置Aに接続されたポート(内部接続状態)と、装置3に接続されたポート(外部接続状態)と、装置Cに接続されたポート(内部接続状態)を有している。装置Cは、装置Bに接続されたポート(内部接続状態)と、非接続状態のポート(外部接続状態)と、装置2に接続されたポート(外部接続状態)を有している。
ツリー識別シーケンスにおいて、各装置1〜3,A〜Cのポートの親子関係が決定され、装置Aはルートノードに決定されている。尚、装置A,Cにおいて、便宜上、非接続状態のポートに対して「子」と表記する。
装置Aは、子ポートからGrant信号を出力する。装置B,CはGrantを転送する。Grant信号を受信した装置2は、図21(b)に示すように、D_prefix信号を送信する。装置C,B,AはD_prefix信号を転送する。装置Bは装置3にD_prefix信号を出力する。次いで、装置2は、図21(c)に示すように、装置ID(=0)を含むセルフIDパケットを送信する。次いで、装置2は、図21(d)に示すように、Ident_D信号を出力する。装置Cは、Ident_D信号を受信した子ポートを、Identifyが完了した子ポートに設定する。
次いで、図22(a)に示すように、装置Aは、Grant信号を出力する。装置BはGrant信号を転送する。装置Cは、Identifyが完了した子ポートにD_prefix信号を出力する。また、装置Cは、図22(b)に示すように、親ポートにキャンセル信号(Cancel)を出力する。これにより、装置Cは、装置IDを持たない(ID=non)装置に確定する。
キャンセル信号を受信した装置Bは、Identifyの完了していない子ポートにGrant信号を出力する。Grant信号を受信した装置3は、図22(c)に示すように、D_prefix信号を出力する。次いで、装置3は、図22(d)に示すように、装置ID(=1)を含むセルフIDパケットを送信する。次いで、装置3は、図23(a)に示すように、Ident_D信号を出力する。装置Bは、Ident_D信号を受信した子ポートを、Identifyの完了した子ポートに設定する。
次いで、図23(b)に示すように、装置AはGrant信号を出力する。装置Bは、図4に示す状態S5へ遷移し、図23(c)に示すように、親ポートにキャンセル信号(Cancel)を出力する。これにより、装置Bは、装置IDを持たない(ID=non)装置に確定する。
次いで、装置Aは、装置1にGrant信号を出力する。装置1は、図23(d)に示すように、D_prefix信号を出力する。次いで、装置1は、図24(a)に示すように、装置ID(=2)を含むセルフIDパケット(SelfID−P)を送信する。次いで、装置1は、図24(b)に示すように、Ident_D信号を出力する。装置Aは、Ident_D信号を受信した子ポートを、Identifyの完了した子ポートに設定する。
次いで、装置Aは、図24(c)に示すように、D_prefix信号を出力する。次いで、装置Aは、図24(d)に示すように、装置ID(=3)を含むセルフIDパケット(SelfID−P)を送信する。
上記の処理におり、図25に示すように、ネットワークに含まれる各装置の装置IDが確定する。受信装置130のうち、ルートノードに決定した装置Aは装置ID(=3)を取得し、装置B及び装置Cは装置IDを取得しない(ID=non)。従って、受信装置130は、装置Aが取得した装置ID(=3)を持つ装置として、ネットワーク上の他の装置1〜4に認識される。
[ポート数の演算例]
次に、受信装置130が持つポート数の算出について説明する。
図13に示すポート数演算部115は、他の装置から出力されたセルフIDパケットの受信回数をカウントする。
例えば、図16(a)に示すように接続されたネットワークにおいて、ポート数演算部115は、装置2〜4が出力したセルフIDパケットに基づいて、ポート数Ch_Port_Numが「3」となる。従って、パケット生成部113は、図15に示すp0〜p3フィールドにアクティブ状態を示すデータを格納したセルフIDパケットを生成する。
また、図21(a)に示すように接続されたネットワークにおいて、ポート数演算部115は、装置2,3が出力したセルフIDパケットに基づいて、ポート数Ch_Port_Numが「2」となる。従って、パケット生成部113は、図15に示すp0〜p2フィールドにアクティブ状態を示すデータを格納したセルフIDパケットを生成する。
また、図26に示すように、ネットワークは、装置1〜8と受信装置130を含む。各装置1〜8が送信するセルフIDパケット、接続されたポートの数に対応する情報を含む。従って、装置1,2,5,7,8はポート数=1であり、装置3,4はポート数=2であり、装置6はポート数=3である。従って、図14に示すフローチャートにおいて、ステップ144の処理を5回実行し、ステップ146の処理を1回実行する。その結果、ポート数Ch_Port_Numは「4」(=(+1)×5ー(3−2)×1)となる。
なお、図26に示すネットワークの場合、ルートノードに決定した装置Aは、「8」の装置IDを取得する。従って、装置Aが出力するセルフIDパケットSPは、図27に示す先頭パケットSP1と連結パケットSP2を含む。先頭パケットSP1は、Phy_IDフィールドに「001000」が格納され、p0〜p2フィールドに「11」が格納され、mフィールドに「1」が格納されている。連結パケットSP2は、Phy_IDフィールドに「001000」が格納され、p3フィールドに「11」が格納され、mフィールドに「0」が格納されている。
以上記述したように、本実施形態によれば、第一実施形態の効果に加え、以下の効果を奏する。
(5)3つのポートを持つ処理装置(装置A〜C)を有する受信装置130において、1つの処理装置が装置IDを取得し、他の2つの処理装置は装置IDを取得しない。従って、受信装置130は、ネットワークに含まれる他の装置1〜4において、1つの装置IDを取得した装置として認識される。このため、例えばバスリセットが発生してから通信可能な状態となるまでの復帰時間を短くすることができる。
(6)セルフIDパケット生成部113は、パケット抽出部114と、ポート数演算部115を有する。パケット抽出部114は、受信したセルフIDパケットからポート数を抽出する。ポート数演算部115は、パケット抽出部114にて抽出されたポート数に基づいて、受信装置130が持つポート数を算出する。そして、パケット生成部113は、算出されたポート数に応じてアクティブに設定されたp0〜p15フィールドを含むセルフIDパケットを生成する。従って、複数の処理装置を有する受信装置130が持つポート数を容易に算出することができる。
(他の実施形態)
なお、上記実施形態は、これを適宜変更した以下の態様にて実施することもできる。
・上記第一実施形態において、1つ又は3つ以上のポート回路を有する装置としてもよい。また、第二実施形態において、2つ以下又は4つ以上のポート回路を有する装置としてもよい。
・上記各実施形態において、受信装置に含まれる処理装置の数を、2つ又は4つ以上に変更してもよい。また、各処理装置の接続は適宜変更されてもよい。例えば、図16(a)に示す受信装置130において、装置Bをブランチノードとする、つまり装置Bに3つの処理装置を接続してもよい。
・上記各実施形態におけるネットワーク内のノード数に特に制限はない。
・上記各実施形態では、複数の装置A〜Cを含む受信装置に具体化したが、送信装置や送受信装置に具体化してもよい。
・上記実施形態では、送信装置11〜14,A〜CをIEEE1394規格に準拠した装置に具体化したが、これに限らず、例えばIDB−1394規格やUSB規格に準拠した装置に具体化してもよい。
上記各実施形態に関し、以下の付記を開示する。
(付記1)
外部装置と接続される通信装置であって、
前記外部装置とともにネットワークに含まれる複数の内部装置を有し、
前記複数の内部装置のうちの1つの内部装置は、前記外部装置と接続されるポートと、前記複数の内部装置のうちの他の内部装置と接続されたポートを有し、
前記複数の内部装置はそれぞれ、
トポロジ構築後の自己識別シーケンスにおいて、前記トポロジ構築によって決定されたポートの親子関係と、前記決定されたポートに対応する接続情報とに基づいて、外部接続の親ポートから許可信号を受信した場合、セルフIDパケットを送信して装置IDを取得し、内部接続の親ポートから前記許可信号を受信した場合、前記親ポートにキャンセル信号を出力し、前記自己識別シーケンスを終了する物理層制御回路を有することを特徴とする通信装置。
(付記2)
前記物理層制御回路は、
前記キャンセル信号を受信した子ポートを、識別の完了した子ポートに設定する、ことを特徴とする付記1に記載の通信装置。
(付記3)
前記複数の内部装置のうち、全てのポートが子ポートに決定した前記内部装置は、全ての子ポートの識別が完了した場合に、前記セルフIDパケットを送信して装置IDを取得する、ことを特徴とする付記1又は2に記載の通信装置。
(付記4)
受信したセルフIDパケットからポート数を抽出するパケット抽出部と、
前記パケット抽出部にて抽出されたポート数に基づいて、前記外部装置と接続されるポート数を算出するポート数演算部と、
を含み、
前記ポート数演算部にて算出されたポート数に応じてポートを示すフィールドにアクティブに設定した前記セルフIDパケットを生成するパケット生成部を備えたことを特徴とする付記1〜3のうちの何れか一項に記載の通信装置。
(付記5)
前記ポート数演算部は、
「3」以上のポート数から「2」を減算した結果を、ポート数が「1」のセルフIDパケットの数から減算して前記外部装置と接続されるポート数を算出する、ことを特徴とする付記4に記載の通信装置。
(付記6)
外部装置と接続される通信装置であって、
前記外部装置とともにネットワークに含まれ、前記ネットワークのトポロジ構築によって親子関係が決定されたポートを持ち、前記決定されたポートに対応する接続情報が設定された複数の内部装置を有し、
前記複数の内部装置のうち、親ポートの接続情報が外部接続に設定された前記内部装置は、前記親ポートから許可信号を受信し、セルフIDパケットを送信して装置IDを取得し、
前記複数の内部装置のうち、親ポートの接続情報が内部接続に設定された前記内部装置は、前記親ポートから許可信号を受信し、前記親ポートにキャンセル信号を出力し、自己識別シーケンスを終了する、
ことを特徴とする通信装置。
(付記7)
トポロジ構築後の自己識別シーケンスにおいて、前記トポロジ構築によって決定されたポートの親子関係と、前記決定されたポートに対応する接続情報とに基づいて、外部接続の親ポートから許可信号を受信した場合、セルフIDパケットを送信して装置IDを取得し、内部接続の親ポートから前記許可信号を受信した場合、前記親ポートにキャンセル信号を出力し、装置ID割り当てシーケンスを終了する物理層制御回路を有することを特徴とする半導体装置。
(付記8)
トポロジ構築後の自己識別シーケンスにおいて、
前記トポロジ構築によって決定されたポートの親子関係と、前記決定されたポートに対応する接続情報とに基づいて、
外部接続の親ポートから許可信号を受信した場合、セルフIDパケットを送信して装置IDを取得して前記自己識別シーケンスを終了し、
内部接続の親ポートから前記許可信号を受信した場合、前記親ポートにキャンセル信号を出力し、前記自己識別シーケンスを終了する、
ことを特徴とする装置IDの設定方法。