HOME > 技術 > IEEE1394 とは > アドレスについて

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

IEEE1394のアドレッシング

IEEE 1394では,IEEE 1212の規格に従った64ビット固定アドレッシングを使用します.上位の16ビットはノードIDを表わします.16ビットですから,最大64kのノードアドレス空間を提供します.現実には,この16ビットは,上位10ビットのBus_IDと,下位6ビットのPhysical_IDに分割されます.どちらのIDも全ビットが"1"の場合は特別な意味を持ちます.このため,1023個のバスに,それぞれ63個のノードを提供する空間になります.残りの48 ビットを,それぞれの機器が使用することができます.ノードIDの表現は,若干曖昧です.バス内に閉じているとき,ノードIDと言う表現は,フィジカル IDと等価に扱われる場合が多いです.

IEEE1394のアドレス

バスIDとノードID

バスIDもノードIDも0-1023,0-63の全てが使用できるわけではありません.10ビットで表わされるバスIDで1023は,ローカルバスを示し機器が直接接続しているバスを指定していることになります.今回,試作したシステムでもバス間の通信は行いません.ですから,常に,バスIDは 1023(0x3FF)を使用します.

6ビットで表わされるノードIDの63(0x3F,全ビットオンの場合)は,ブロードキャストを示します.バスに接続している,全ての機器を対象にしていることとなります.このようなことから,IEEE1394では,最大64449台の機器が接続可能です.

機器内のアドレス構成

それぞれのノードで使用できるアドレス空間は2の48乗(256テラバイト)です.48ビットのアドレスについても20ビットと28ビットに分割し,256Mbyte単位の構造を持っています.

IEEE1394のアドレス空間
IEEE1394のアドレス空間

CSRアーキテクチャのコア・レジスタ

CSRアーキテクチャは,コアCSRの機能と,基本的なレジスタ空間によって標準化されています.これらのコア・レジスタのアドレスは,ノード空間からのオフセットによって定義されています.そのオフセットとは,0xFFFFF0000000からです.以降に,CSRアーキテクチャが定義する,コア・レジスタを示します.オフセット値は,バイト・オフセットを表わしています.

CSRアーキテクチャのコア・レジスタ

シリアル・バス依存のレジスタ

CSRアーキテクチャは,レジスタ空間の一部をバス依存の用途で予約します.これらのレジスタのアドレスは,ノード空間からのオフセットによって定義されています.そのオフセットとは,0xFFFFF0000000からです.以降に,バス依存のレジスタを示します.オフセット値は,バイト・オフセットを表わしています.

シリアル・バス依存のレジスタ

ユニット・レジスタ

CSRアーキテクチャは,0xFFFFF0000800より上の空間に定義されている,初期ユニットの空間の中に,ノード依存のリソースの空間を予約しています.これらの空間は,ノード空間からのオフセットによって定義されています.そのオフセットとは,0xFFFFF0000000からです.以降に,バス依存のレジスタを示します.オフセット値は,バイト・オフセットを表わしています.

ユニット・レジスタ

Configuration ROM

トランザクション対応のシリアル・バス・ノードは,コンフィグレーションROM を実装していなければなりません.コンフィグレーションROM は,最小コンフィグレーションROM と,一般コンフィグレーションROM の,2つのフォーマットがサポートされています. 最小コンフィグレーションROMでは,24ビットの会社識別子を指定します.一般コンフィグレーションROMでは,Bus_Block_InfoとRoot_Directory内の追加情報を指定します.以下に,これらのツリーの様子を示します.

コンフィグレーションROMのツリー

最小コンフィグレーションROM

最小形式では次のように会社IDを表わしているだけです.

最小形式のコンフィグレーションROM

一般コンフィグレーションROM

一般形式では,次のような情報ブロックの階層(ツリー)で構成されています.階層の中で,それより上位にあるブロックは,下位のブロックを指しています.最初のブロックの位置は,固定されています.それ以降のエントリ位置は,ベンダー依存ですが,それぞれのエントリからポイントされています.

一般形式のコンフィグレーションROM