CQ出版社インターフェース誌に書いた特集からの抜粋です.
シリアルバス管理
シリアルバス管理には,バスマネージャ,ノードコントローラ,アイソクロノスリソースマネージャなどがあります.ノードは,バスマネージャ,およびアイソクロノスリソースマネージャを必須で持つ必要はありません.これらは,別のノードが分担して,持つことができます.バスマネージャが存在しない場合,アイソクロノスリソースマネージャがバスマネージャの機能の一部を肩代わりします.バスマネージャ,アイソクロノスリソースマネージャ,両方が存在しないことも認められています.しかし,その場合,アイソクロノス転送はできません.
バスマネージャ
バスマネージャは,以下のようなサービスを提供します.
- バスの電源管理
- スピードマップの提供
- トポロジマップの提供
- トポロジマップに基づいたバスの最適化
アイソクロノスリソースマネージャ
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になりました. |
応答再送失敗 | 応答パケットの送信失敗が再送回数を超えました. |
不正チャネル検出 | アイソクロナス資源マネージャに登録されていないチャネル番号のパケットを受信しました. |
未定義トランザクションコード 検出 |
定義されていないトランザクションコードのパケットが受信されました. |
未対応応答 | 対応する要求パケットのない応答パケットが受信されました. |