HOME > 技術 > IEEE1394 とは > バスマネージメント

CQ出版社インターフェース誌に書いた特集からの抜粋です.

シリアルバス管理

シリアルバス管理には,バスマネージャ,ノードコントローラ,アイソクロノスリソースマネージャなどがあります.ノードは,バスマネージャ,およびアイソクロノスリソースマネージャを必須で持つ必要はありません.これらは,別のノードが分担して,持つことができます.バスマネージャが存在しない場合,アイソクロノスリソースマネージャがバスマネージャの機能の一部を肩代わりします.バスマネージャ,アイソクロノスリソースマネージャ,両方が存在しないことも認められています.しかし,その場合,アイソクロノス転送はできません.

バスマネージャ

バスマネージャは,以下のようなサービスを提供します.

  1. バスの電源管理
  2. スピードマップの提供
  3. トポロジマップの提供
  4. トポロジマップに基づいたバスの最適化

アイソクロノスリソースマネージャ

IEEE 1394バス管理には,バスの管理とIsochronous資源管理とノード制御があります.

管理 説明
ノード制御 CSRの実装によって,物理層,リンク層,トランザクション層,アプリケーションとの通信を可能にします.
Isochronous資源管理 IEEE 1394バスでは,Isochronous転送という同期型のデータ転送を行っており,そのためにIsochronousの帯域とチャネル番号の割り付け を管理するIsochronous資源管理ノードがシリアルバス上に1つ存在します.このノードは,バスの初期化フェーズ後,能力を持ったノードの中から 動的に選出されます.また,バス管理ノードの決定もこのノードによって行われます.
バス上にバス管理ノードが存在しない構成では,電源管理やサイクルマスターの制御のようなバス管理の一部の機能をIsochronous資源管理ノードが行います.
バス管理 バス管理ノードは,シリアルバス上の他のノードに管理機能を提供します.その管理機能には,サイクルマスターの制御や性能の最適化,電源管理,伝送速度管理,構成管理などがあります.

シリアルバス管理のサービス

シリアルバス管理層は,アプリケーションに対して,バスを制御するためのインタフェースを提供します.その制御インタフェースには,シリアルバス制御要求(SB_CONTROL.request),シリアルバス制御確認(SB_CONTROL.confirmation),シリアルバスイベント通知 (SB_EVENT.indication)があります.

シリアルバス制御要求

シリアルバス管理層に対して,シリアルバスの制御を依頼します.その要求には,次のような制御があります.

要求 説明
リセット 物理層はバスをリセットし,初期化します.リンク層とトランザクション層は,処理中の動作を中止します.シリアルバスからのデータは受信しなくなります.アプリケーションからのトランザクション要求は,全て拒否されるようになります.
この要求は,アイソクロナス転送の帯域幅の設定やアイソクロナス資源マネージャの活動化などの項目を指定します.
初期化 リンク層とトランザクション層は,処理中の動作を中止します.シリアルバスからのデータの受信を開始します.アプリケーションからのトランザクション要求を受け付けるようになります.
この要求は,アイソクロナス転送の帯域幅の設定やアイソクロナス資源マネージャの活動化などの項目を指定します.
Link-on 物理層へLink-onパケットの送信を依頼します.この要求は,6ビットのノードIDを含んでいます.
状態表示 シリアルバスの状態を得ます.状態情報は,『シリアルバス制御確認』でシリアルバス管理層より通知されます.
PHY configuration 物理層へPHY configurationパケットの送信を依頼します.
この要求は,強制的にルートノードになる指定やギャップ値を設定する指定があります.

シリアルバス制御確認

シリアルバス管理層より『シリアルバス制御要求』の結果を通知します.状態表示要求に対して,次のような項目が通知されます.

通知 説明
帯域幅 アイソクロナス転送の帯域幅であるBANDWIDTH_AVAILABLEレジスタの値が返されます.バスマネージャまたはアイソクロナス資源マネージャが存在するときのみ有効です.
バスマネージャID 6ビットのバスマネージャのノードIDが返されます.バスマネージャが存在しないときは,0x3Fが返されます.
サイクルマスタID 6ビットのサイクルマスタのノードIDが返されます.サイクルマスタが存在しないときは,0x3Fが返されます.
強制ルート 強制的にルートノードになる設定の状態を返します.
ギャップ値 ギャップ値を返します.
アイソクロナス
資源マネージャID
6ビットのアイソクロナス資源マネージャのノードIDが返されます.バスマネージャが存在しないときは,0x3Fが返されます.
物理ID 6ビットのノードIDを返します.
ルートID 6ビットのルートノードのノードIDが返されます.ルートノードが存在しないときは,0x3Fが返されます.

シリアルバスイベント通知

シリアルバス管理層が検出したイベントを通知します.通知するイベントには,次のようなものがあります.

イベント 説明
バス占有違反検出 1つのノードが, バスの占有時間を超えて占有しました.
バスリセット開始 バスリセットを開始しました.
バスリセット完了 バスリセットが完了しました.このイベントでは,シリアルバスが初期化され,構成情報が変わるために次のような項目が通知されます.
帯域幅 / バスマネージャID / 構成設定タイムアウト/サイクルマスタID / ギャップ値 / ギャップ値エラー/ケーブル電源容量不足 / アイソクロナス資源マネージャ/ノードID / ルートID / Self IDエラー /構成エラー
サイクル超過 最後のアイソクロナスサイクルが時間を超過しました.
ケーブル電源切断 ケーブルからの電源供給が停止しました.
重複チャネル検出 同じチャネル番号を使ったパケットを検出しました.
ヘッダCRCエラー検出 ヘッダのCRCチェックが不正なパケットを受信しました.
要求データエラー 要求パケットの送信がack_data_errorになりました.
応答失敗 応答パケットの送信が確認できませんでした.
応答データエラー 応答パケットの送信がack_data_errorになりました.
応答形式エラー 応答パケットの送信がack_type_errorになりました.
応答再送失敗 応答パケットの送信失敗が再送回数を超えました.
不正チャネル検出 アイソクロナス資源マネージャに登録されていないチャネル番号のパケットを受信しました.
未定義トランザクションコード
検出
定義されていないトランザクションコードのパケットが受信されました.
未対応応答 対応する要求パケットのない応答パケットが受信されました.