(57)【特許請求の範囲】
【請求項１】
シリアスバスに接続される情報処理装置であって、
特定の要求を前記シリアルバスに送信する送信手段と、
前記特定の要求に対応する応答に基づいて、同期転送を行うのに必要なサイクルマスタが前記シリアルバスにあるかどうかを判定する判定手段と、
前記サイクルマスタが前記シリアルバスにあると前記判定手段により判定された場合に、機器との間で行うデータ転送モードとして同期転送を選択し、前記サイクルマスタが前記シリアルバスにないと前記判定手段により判定された場合に、機器との間で行うデータ転送モードとして非同期転送を選択する制御手段とを有することを特徴とする情報処理装置。
【請求項２】
前記機器の種別を前記機器から取得する取得手段と、
前記取得手段により取得される前記機器の種別に従って、同期転送でデータ転送が行われる場合の帯域幅を設定する第１の設定手段とを有することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記取得手段により取得される前記機器の種別に従って、非同期転送でデータ転送が行われる場合のパケットサイズを設定する第２の設定手段を有することを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記サイクルマスタは、同期転送を行うために必要な同期パケットを定期的に送るノードであることを特徴とする請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
シリアルバスに接続される情報処理装置であって、
前記シリアルバスに、特定の要求を送信する送信手段と、
前記特定の要求に対応する前記シリアルバスにおけるバスマネージャからの応答に基づいて、同期転送を行うのに必要なサイクルマスタ機能があるかどうかを判定する判定手段と、
前記判定手段による判定結果に従って、同期転送及び非同期転送を含む複数の転送モードの中から、前記転送先の機器との間でデータ転送をする場合の転送モードを選択する選択手段とを有することを特徴とする情報処理装置。
【請求項６】
シリアスバスを介して接続される複数の機器間で行われる情報の転送を制御する情報処理方法であって、
特定の要求を前記シリアルバスに送信する送信ステップと、
前記特定の要求に対応する応答に基づいて、同期転送を行うのに必要なサイクルマスタが前記シリアルバスにあるかどうかを判定する判定ステップと、
前記サイクルマスタが前記シリアルバスにあると前記判定ステップで判定された場合に、複数の機器間のデータ転送に同期転送を選択し、前記サイクルマスタが前記シリアルバスにないと前記判定ステップで判定された場合に、複数の機器間のデータ転送に非同期転送を選択する制御ステップとを有することを特徴とする情報処理方法。
【請求項７】
データ転送の転送先の機器の種別に従って、同期転送でデータ転送が行われる場合の帯域幅を設定する第１の設定ステップを有することを特徴とする請求項６に記載の情報処理方法。
【請求項８】
データ転送の転送先の機器の種別に従って、非同期転送でデータ転送が行われる場合のパケットサイズを設定する第２の設定ステップを有することを特徴とする請求項７に記載の情報処理方法。
【請求項９】
前記サイクルマスタは、同期転送を行うために必要な同期パケットを定期的に送るノードであることを特徴とする請求項６乃至８のいずれか１項に記載の情報処理方法。
【請求項１０】
シリアルバスに接続される情報処理装置を制御する情報処理方法であって、
前記シリアルバスに、特定の要求を送信する送信ステップと、
前記特定の要求に対応する前記シリアルバスにおけるバスマネージャからの応答に基づいて、同期転送を行うのに必要なサイクルマスタ機能があるかどうかを判定する判定ステップと、
前記判定ステップによる判定結果に従って、同期転送及び非同期転送を含む複数の転送モードの中から、前記転送先の機器との間でデータ転送をする場合の転送モードを選択する選択ステップとを有することを特徴とする情報処理方法。
【請求項１１】
シリアスバスを介して接続される複数の機器間で行われる情報の転送を制御する情報処理システムであって、
特定の要求を前記シリアルバスに送信する送信手段と、
前記特定の要求に対応する応答に基づいて、同期転送を行うのに必要なサイクルマスタが前記シリアルバスにあるかどうかを判定する判定手段と、
前記サイクルマスタが前記シリアルバスにあると前記判定手段により判定された場合に、複数の機器間のデータ転送に同期転送を選択し、前記サイクルマスタが前記シリアルバスにないと前記判定手段により判定された場合に、複数の機器間のデータ転送に非同期転送を選択する制御手段とを有することを特徴とする情報処理システム。
【請求項１２】
データ転送の転送先となる機器の種別を当該機器から取得する取得手段と、
前記取得手段により取得される前記機器の種別に従って、同期転送でデータ転送が行われる場合の帯域幅を設定する第１の設定手段とを有することを特徴とする請求項１１に記載の情報処理システム。
【請求項１３】
前記取得手段により取得される前記機器の種別に従って、非同期転送でデータ転送が行われる場合のパケットサイズを設定する第２の設定手段を有することを特徴とする請求項１２に記載の情報処理システム。
【請求項１４】
前記サイクルマスタは、同期転送を行うために必要な同期パケットを定期的に送るノードであることを特徴とする請求項１１乃至１３のいずれか１項に記載の情報処理システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は情報処理装置、情報処理方法及び情報処理システムに関し、特に、ＩＥＥＥ１３９４等のインタフェースで接続される情報処理装置に用いて好適なものである。
【０００２】
【従来の技術】
従来、複数の機器同士をＩＥＥＥ１３９４インターフェースで接続する場合、例えば、プリンタとホスト（パーソナルコンピュータ、デジタルカメラなど）をＩＥＥＥ１３９４インターフェースで接続する場合、そのデータ転送方法として同期転送（アイソクロナス転送）と非同期転送（アシンク転送）の２種類が用いられている。
【０００３】
前記同期転送は、時間的に同期を取ることができ、一定時間のデータ量を規定することができる利点がある。しかしながら、同期転送を行うためには、同期を取るための同期パケット（サイクルスタートパケット）を定期的に送信するサイクルマスタがバスのノード内に必要となる。
【０００４】
それに対し、非同期転送は、時間的なデータ量を一定にすることができないが、サイクルマスタが不要なので、サイクルマスタを内蔵しないようにすることでプリンタ等の機器のコストを低く押さえることができる。
【０００５】
そこで、デジタルカメラのようなコンシューマー向けの機器に関しても、サイクルマスタ機能を搭載しないようにしてコストダウンを図るようにすることが考えられる。
【０００６】
【発明が解決しようとする課題】
サイクルマスタ機能を持たない機器同士が接続されても、そのバス内の他のノードにサイクルマスタ機能を持つノードが必要となる。しかし、バス内においてサイクルマスタ機能を持たない機器同士が接続される可能性も考えられる。このような場合、サイクルマスタが存在しないためにデータ転送自体を行うことができず、したがって、情報が得られないので印字を行うことができなくなってしまう問題があった。
【０００７】
本発明は前述の問題点にかんがみ、サイクルマスタ機能を持たない機器同士を接続した場合、あるいはバス内にサイクルマスタが存在しない場合でも、データ転送を行うことができるようにすることを目的とする。
【０００８】
【課題を解決するための手段】
本発明の情報処理装置は、シリアスバスに接続される情報処理装置であって、特定の要求を前記シリアルバスに送信する送信手段と、前記特定の要求に対応する応答に基づいて、同期転送を行うのに必要なサイクルマスタが前記シリアルバスにあるかどうかを判定する判定手段と、前記サイクルマスタが前記シリアルバスにあると前記判定手段により判定された場合に、機器との間で行うデータ転送モードとして同期転送を選択し、前記サイクルマスタが前記シリアルバスにないと前記判定手段により判定された場合に、機器との間で行うデータ転送モードとして非同期転送を選択する制御手段とを有することを特徴とする。
また、本発明の情報処理装置の他の特徴とするところは、シリアルバスに接続される情報処理装置であって、前記シリアルバスに、特定の要求を送信する送信手段と、前記特定の要求に対応する前記シリアルバスにおけるバスマネージャからの応答に基づいて、同期転送を行うのに必要なサイクルマスタ機能があるかどうかを判定する判定手段と、前記判定手段による判定結果に従って、同期転送及び非同期転送を含む複数の転送モードの中から、前記転送先の機器との間でデータ転送をする場合の転送モードを選択する選択手段とを有することを特徴とする。
【０００９】
本発明の情報処理方法は、シリアスバスを介して接続される複数の機器間で行われる情報の転送を制御する情報処理方法であって、特定の要求を前記シリアルバスに送信する送信ステップと、前記特定の要求に対応する応答に基づいて、同期転送を行うのに必要なサイクルマスタが前記シリアルバスにあるかどうかを判定する判定ステップと、前記サイクルマスタが前記シリアルバスにあると前記判定ステップで判定された場合に、複数の機器間のデータ転送に同期転送を選択し、前記サイクルマスタが前記シリアルバスにないと前記判定ステップで判定された場合に、複数の機器間のデータ転送に非同期転送を選択する制御ステップとを有することを特徴とする。
また、本発明の情報処理方法の他の特徴とするところは、シリアルバスに接続される情報処理装置を制御する情報処理方法であって、前記シリアルバスに、特定の要求を送信する送信ステップと、前記特定の要求に対応する前記シリアルバスにおけるバスマネージャからの応答に基づいて、同期転送を行うのに必要なサイクルマスタ機能があるかどうかを判定する判定ステップと、前記判定ステップによる判定結果に従って、同期転送及び非同期転送を含む複数の転送モードの中から、前記転送先の機器との間でデータ転送をする場合の転送モードを選択する選択ステップとを有することを特徴とする。
【００１０】
本発明の情報処理システムは、シリアスバスを介して接続される複数の機器間で行われる情報の転送を制御する情報処理システムであって、特定の要求を前記シリアルバスに送信する送信手段と、前記特定の要求に対応する応答に基づいて、同期転送を行うのに必要なサイクルマスタが前記シリアルバスにあるかどうかを判定する判定手段と、前記サイクルマスタが前記シリアルバスにあると前記判定手段により判定された場合に、複数の機器間のデータ転送に同期転送を選択し、前記サイクルマスタが前記シリアルバスにないと前記判定手段により判定された場合に、複数の機器間のデータ転送に非同期転送を選択する制御手段とを有することを特徴とする。
【００４６】
【作用】
本発明は前記技術手段を有するので、サイクルマスタが存在する場合には同期転送が選択されてデータ転送が行われる。また、サイクルマスタが存在しない場合には非同期転送が選択されて非同期によるデータ転送が行われることにより、サイクルマスタ機能を持たない機器同士が接続されてもデータ転送を行うことを行うことができるようになる。
【００４７】
【発明の実施の形態】
図１は、１３９４ネットワークの一例である。各ノードは、ワークステーション１（コンピュータ）を中心に、ビデオカメラ２、レーザービームプリンタ３、スキャナ４、インクジェットプリンタ４で構成され、ノード間は１３９４シリアルバスのケーブル６で結ばれている。この例の場合、ワークステーション１からプリンタ３（５）、スキャナ４からワークステーション１、スキャナ４からプリンタ３（５）、ビデオカメラ２からワークステーション１、ビデオカメラ２からプリンタ３（５）等のデータ入出力が考えられる。
【００４８】
〈ＩＥＥＥ１３９４の技術の概要〉
家庭用デジタルＶＴＲやＤＶＤの登場も伴って、ビデオデータやオーディオデータなどのリアルタイムでかつ高情報量のデータ転送のサポートが必要になっている。こういったビデオデータやオーディオデータをリアルタイムで転送し、パソコン（ＰＣ）に取り込んだり、またはその他のデジタル機器に転送を行うには、必要な転送機能を備えた高速データ転送可能なインタフェースが必要になってくるものであり、そういった観点から開発されたインタフェースがＩＥＥＥ１３９４−１９９５（Ｈｉｇｈ  Ｐｅｒｆｏｒｍａｎｃｅ  Ｓｅｒｉａｌ  Ｂｕｓ）（以下、１３９４シリアルバスとする）である。
【００４９】
図２に、１３９４シリアルバスを用いて構成されるネットワーク・システムの例を示す。このシステムは機器Ａ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆ，Ｇ，Ｈを備えており、Ａ−Ｂ間、Ａ−Ｃ間、Ｂ−Ｄ間、Ｄ−Ｅ間、Ｃ−Ｆ間、Ｃ−Ｇ間、及びＣ−Ｈ間をそれぞれ１３９４シリアルバスのツイスト・ペア・ケーブルで接続されている。この機器Ａ〜Ｈは例としてＰＣ、デジタルＶＴＲ、ＤＶＤ、デジタルカメラ、ハードディスク、モニタ等である。
【００５０】
各機器間の接続方式は、ディジーチェーン方式とノード分岐方式とを混在可能としたものであり、自由度の高い接続が可能である。
また、各機器は各自固有のＩＤを有し、それぞれが認識し合うことによって１３９４シリアルバスで接続された範囲において、１つのネットワークを構成している。
【００５１】
各デジタル機器間をそれぞれ１本の１３９４シリアルバスケーブルで順次接続するだけで、それぞれの機器が中継の役割を行い、全体として１つのネットワークを構成するものである。また、１３９４シリアルバスの特徴でもある、Ｐｌｕｇ＆Ｐｌａｙ機能でケーブルを機器に接続した時点で自動で機器の認識や接続状況などを認識する機能を有している。
【００５２】
また、図２に示したようなシステムにおいて、ネットワークからある機器が削除されたり、または新たに追加されたときなど、自動的にバスリセットを行い、それまでのネットワーク構成をリセットしてから、新たなネットワークの再構築を行う。この機能によって、その時々のネットワークの構成を常時設定、認識することができる。
【００５３】
また、データ転送速度は、１００／２００／４００Ｍｂｐｓと備えており、上位の転送速度を持つ機器が下位の転送速度をサポートし、互換をとるようになっている。
【００５４】
データ転送モードとしては、コントロール信号などの非同期データ（Ａｓｙｎｃｈｒｏｎｏｕｓデータ：以下Ａｓｙｎｃデータ）を転送するＡｓｙｎｃｈｒｏｎｏｕｓ転送モード、リアルタイムなビデオデータやオーディオデータ等の同期データ（Ｉｓｏｃｈｒｏｎｏｕｓデータ：以下Ｉｓｏデータ）を転送するＩｓｏｃｈｒｏｎｏｕｓ転送モードがある。このＡｓｙｎｃデータとＩｓｏデータは各サイクル（通常１サイクル１２５μＳ）の中において、サイクル開始を示すサイクル・スタート・パケット（ＣＳＰ）の転送に続き、Ｉｓｏデータの転送を優先しつつサイクル内で混在して転送される。
【００５５】
次に、図３に１３９４シリアルバスの構成要素を示す。
１３９４シリアルバスは全体としてレイヤ（階層）構造で構成されている。図３に示したように、最もハード的なのが１３９４シリアルバスのケーブルであり、そのケーブルのコネクタが接続されるコネクタポートがあり、その上にハードウェアとしてフィジカル・レイヤとリンク・レイヤがある。
ハードウェア部は実施的なインターフェイスチップの部分であり、そのうちフィジカル・レイヤは符号化やコネクタ関連の制御等を行い、リンク・レイヤはパケット転送やサイクルタイムの制御等を行う。
【００５６】
ファームウェア部のトランザクション・レイヤは、転送（トランザクション）すべきデータの管理を行い、ＲｅａｄやＷｒｉｔｅといった命令を出す。マネージメント・レイヤは、接続されている各機器の接続状況やＩＤの管理を行い、ネットワークの構成を管理する部分である。
このハードウェアとファームウェアまでが実質上の１３９４シリアルバスの構成である。
【００５７】
また、ソフトウェア部のアプリケーション・レイヤは使うソフトによって異なり、インタフェース上にどのようにデータをのせるか規定する部分であり、ＡＶプロトコルなどのプロトコルによって規定されている。
以上が１３９４シリアルバスの構成である。
【００５８】
次に、図４に１３９４シリアルバスにおけるアドレス空間の図を示す。
１３９４シリアルバスに接続された各機器（ノード）には必ず各ノード固有の、６４ビットアドレスを持たせておく。そしてこのアドレスをＲＯＭに格納しておくことで、自分や相手のノードアドレスを常時認識では、相手を指定した通信も行える。
【００５９】
１３９４シリアルバスのアドレッシングは、ＩＥＥＥ１２１２規格に準じた方式であり、アドレス設定は、最初の１０ｂｉｔがバスの番号の指定用に、次の６ｂｉｔがノードＩＤ番号の指定用に使われる。
【００６０】
それぞれの機器内で使用できる４８ビットのアドレスについても２０ビットと２８ビットに分けられ、２５６Ｍバイト単位の構造を持って利用される。
最初の２０ビットの０〜０ｘＦＦＦＦＤの部分はメモリ空間と呼ばれる。
０ｘＦＦＦＦＥの部分はプライベート空間と呼ばれ、機器内で自由に利用できるアドレスである。
【００６１】
０ｘＦＦＦＦＦの部分はレジスタ空間と呼ばれ、バスに接続された機器間で共通な情報が置かれ、各機器間のコミュニケーションに使われる。
レジスタ空間の最初の５１２バイトには、ＣＳＲアーキテクチャのコアになるレジスタ（ＣＳＲコア）がある。
【００６２】
次の５１２バイトにはシリアルバスのレジスタがある。
その次の１０２４バイトにはＣｏｎｆｉｇｕｒａｔｉｏｎ  ＲＯＭが置かれる。残りはユニット空間で機器固有のレジスタがある。
一般的には異種バスシステムの設計の簡略化のため、ノードは初期ユニット空間の最初の２０４８バイトだけを使うべきであり、この結果としてＣＳＲアーキテクチャの核（ＣＳＲコア）、シリアルバスのレジスタ、Ｃｏｎｆｉｇｕｒｒａｔｉｏｎ  ＲＯＭと、ユニット空間の最初の２０４８バイトの合わせて４０９６バイトで構成することが望ましい。
以上が１３９４シリアルバスの技術の概要である。
【００６３】
次に、１３９４シリアルバスの特徴といえる技術の部分を、より詳細に説明する。
〈１３９４シリアルバスの電気的仕様〉
図５に１３９４シリアルバス・ケーブルの断面図を示す。
１３９４シリアルバスで接続ケーブル内に、２組のツイストペア信号線の他に、電源ラインを設けている。これによって、電源を持たない機器や、故障により電圧低下した機器等にも電力の供給が可能になっている。
電源線内を流れる電源の電圧は８〜４０Ｖ、電流は最大電流ＤＣ１．５Ａは規定されている。
【００６４】
〈ＤＳ−Ｌｉｎｋ符号化〉
１３９４シリアルバスで採用されている、データ転送フォーマットのＤＳ−Ｌｉｎｋ符号化方式を説明するための図を図６に示す。
１３９４シリアルバスでは、ＤＳ−Ｌｉｎｋ（Ｄａｔａ／Ｓｔｒｏｂｅ  Ｌｉｎｋ）符号化方式が採用されている。このＤＳ−Ｌｉｎｋ符号化方式は、高速なシリアルデータ通信に適しており、この構成は、２本の信号線を必要とする。より対線のうち１本に主となるデータを送り、他方のより対線にはストローブ信号を送る構成になっている。
【００６５】
受信側では、この通信されるデータと、ストローブとの排他的論理和をとることによってクロックを再現できる。
このＤＳ−Ｌｉｎｋ符号化方式を用いるメリットとして、他のシリアルデータ転送方式に比べて転送効率が高いこと、ＰＬＬ回路が不要となるのでコントローラＬＳＩの回路規模を小さくできること、更には、転送すべきデータが無いときにアイドル状態であることを示す情報を送る必要が無いので、各機器のトランシーバ回路をスリープ状態にすることができることによって、消費電力の低減が図れる、などが挙げられる。
【００６６】
〈バスリセットのシーケンス〉
１３９４シリアルバスでは、接続されている各機器（ノード）にはノードＩＤが与えられ、ネットワーク構成として認識されている。
このネットワーク構成に変化があったとき、例えばノードの挿抜や電源のＯＮ／ＯＦＦなどによるノード数の増減などによって変化が生じて、新たなネットワーク構成を認識する必要があるとき、変化を検知した各ノードはバス上にバスリセット信号を送信して、新たなネットワーク構成を認識するモードに入る。このときの変化の検知方法は、１３９４ポート基盤上でのバイアス電圧の変化を検知することによって行われる。
【００６７】
あるノードからバスリセット信号が伝達されて、各ノードのフィジカルレイヤはこのバスリセット信号を受けると同時にリンクレイヤにバスリセットの発生を伝達し、かつ他のノードにバスリセット信号を伝達する。最終的にすべてのノードがバスリセット信号を検知した後、バスリセットが起動となる。
【００６８】
バスリセットは、先に述べたようなケーブル抜挿や、ネットワーク異常等によるハード検出による起動と、プロトコルからのホスト制御などによってフィジカルレイヤに直接命令を出すことによっても起動する。
また、バスリセットが起動するとデータ転送は一時中断され、この間のデータ転送は待たされ、終了後、新しいネットワーク構成のもとで再開される。
以上がバスリセットのシーケンスである。
【００６９】
〈ノードＩＤ決定のシーケンス〉
バスリセットの後、各ノードは新しいネットワーク構成を構築するために、各ノードにＩＤを与える動作に入る。このときの、バスリセットからノードＩＤ決定までの一般的なシーケンスを図７、図８、図９のフローチャートを用いて説明する。
【００７０】
図７のフローチャートは、バスリセットの発生からノードＩＤが決定し、データ転送が行えるようになるまでの、一連のバスの作業を示してある。
まず、ステップＳ１０１として、ネットワーク内にバスリセットが発生することを常時監視していて、ここでノードの電源ＯＮ／ＯＦＦなどでバスリセットが発生するとステップＳ１０２に移る。
【００７１】
ステップＳ１０２では、ネットワークがリセットされた状態から、新たなネットワークの接続状況を知るために、直接接続されている各ノード間において親子関係の宣言がなされる。ステップＳ１０３として、すべてのノード間で親子関係が決定すると、ステップＳ１０４として一つのルートが決定する。すべてのノード間で親子関係が決定するまで、ステップＳ１０２の親子関係の宣言を行い、またルートも決定されない。
【００７２】
ステップＳ１０４でルートが決定されると、次はステップＳ１０５として、各ノードにＩＤを与えるノードＩＤの設定作業が行われる。所定のノード順序で、ノードＩＤの設定が行われ、すべてのノードにＩＤが与えられるまで繰り返し設定作業が行われ、最終的にステップＳ１０６としてすべてのノードにＩＤを設定し終えたら、新しいネットワーク構成がすべてのノードにおいて認識されたので、ステップＳ１０７としてノード間のデータ転送が行える状態となり、データ転送が開始される。
【００７３】
このステップＳ１０７の状態になると、再びバスリセットが発生するのを監視するモードに入り、バスリセットが発生したらステップＳ１０１からステップＳ１０６までの設定作業が繰り返し行われる。
【００７４】
以上が、図７のフローチャートの説明であるが、図７のフローチャートのバスリセットからルート決定までの部分と、ルート決定後からＩＤ設定終了までの手順をより詳しくフローチャート図に表したものを、図８及び図９にそれぞれ示す。
【００７５】
まず、図８のフローチャートの説明を行う。
ステップＳ２０１としてバスリセットが発生すると、ネットワーク構成は一旦リセットされる。なお、ステップＳ２０１としてバスリセットが発生するのを常に監視している。
【００７６】
次に、ステップＳ２０２として、リセットされたネットワークの接続状況を再認識する作業の第一歩として、各機器にリーフ（ノード）であることを示すフラグを立てておく。更に、ステップＳ２０３として各機器が自分の持つポートがいくつ他ノードと接続されているのかを調べる。
【００７７】
ステップＳ２０４のポート数の結果に応じて、これから親子関係の宣言を始めていくために、未定義（親子関係が決定させてない）ポートの数を調べる。バスリセットの直後はポート数＝未定義ポート数であるが、親子関係が決定されていくにしたがって、ステップＳ２０４で検知する未定義ポートの数は変化していくものである。
【００７８】
まず、バスリセットの直後、はじめに親子関係の宣言を行えるのはリーフに限られている。リーフであるというのはステップＳ２０３のポート数の確認で知ることができる。リーフは、ステップＳ２０５として、自分に接続されているノードに対して、「自分は子、相手は親」と宣言し動作を終了する。
【００７９】
ステップＳ２０３でポート数が複数ありブランチと認識したノードは、バスリセットの直後はステップＳ２０４で未定義ポート数〉１ということなので、ステップＳ２０６へと移り、まずブランチというフラグが立てられ、ステップＳ２０７でリーフから親子関係宣言で「親」の受付をするために待つ。
【００８０】
リーフが親子関係の宣言を行い、ステップＳ２０７でそれを受けたブランチは適宜ステップＳ２０４の未定義ポート数の確認を行い、未定義ポート数が１になっていれば残っているポートに接続されているノードに対して、ステップＳ２０５の「自分が子」の宣言をすることが可能になる。
【００８１】
２度目以降、ステップＳ２０４で未定義ポート数を確認しても２以上あるブランチに対しては、再度ステップＳ２０７でリーフ又は他のブランチからの「親」の受付をするために待つ。
【００８２】
最終的に、いずれか１つのブランチ、又は例外的にリーフ（子宣言を行えるのにすばやく動作しなかった為）がステップＳ２０４の未定義ポート数の結果としてゼロになったら、これにてネットワーク全体の親子関係の宣言が終了したものであり、未定義ポート数がゼロ（すべて親のポートとして決定）になった唯一のノードはステップＳ２０８としてルートのフラグが立てられ、ステップＳ２０９としてルートとしての認識がなされる。
【００８３】
このようにして、図８に示したバスリセットから、ネットワーク内すべてのノード間における親子関係の宣言までが終了する。
次に、図９のフローチャートについて説明する。
まず、図８までのシーケンスでリーフ、ブランチ、ルートという各ノードのフラグの情報が設定されているので、これを元にして、ステップＳ３０１でそれぞれ分類する。
【００８４】
各ノードにＩＤを与える作業として、最初にＩＤの設定を行うことができるのはリーフからである。リーフ→ブランチ→ルートの順で若い番号（ノード番号＝０〜）からＩＤの設定がなされていく。
【００８５】
ステップＳ３０２としてネットワーク内に存在するリーフの数Ｎ（Ｎは自然数）を設定する。この後、ステップＳ３０３として各自リーフがルートに対して、ＩＤを与えるように要求する。この要求が複数ある場合には、ルートはステップＳ３０４としてアービトレーション（１つに調停する作業）を行い、ステップＳ３０５として勝ったノード１つにＩＤ番号を与え、負けたノードには失敗の結果通知を行う。
【００８６】
ステップＳ３０６としてＩＤ取得が失敗に終わったリーフは、再度ＩＤ要求を出し、同様の作業を繰り返す。ＩＤを取得できたリーフからステップＳ３０７として、そのノードのＩＤ情報をブロードキャストで全ノードに転送する。１ノードＩＤ情報のブロードキャストが終わると、ステップＳ３０８として残りのリーフの数が１つ減らされる。ここで、ステップＳ３０９として、この残りのリーフの数が１以上ある時はステップＳ３０３のＩＤ要求の作業からを繰り返し行い、最終的にすべてのリーフがＩＤ情報をブロードキャストすると、ステップＳ３０９がＮ＝０となり、次はブランチのＩＤ設定に移る。
ブランチのＩＤ設定もリーフの時と同様に行われる。
【００８７】
まず、ステップＳ３１０としてネットワーク内に存在するブランチの数Ｍ（Ｍは自然数）を設定する。この後、ステップＳ３１１として各自ブランチがルートに対して、ＩＤを与えるように要求する。これに対してルートは、ステップＳ３１２としてアービトレーションを行い、勝ったブランチから順にリーフに与え終わった次の若い番号から与えいく。
【００８８】
ステップＳ３１３として、ルートは要求を出したブランチにＩＤ情報又は失敗結果を通知し、ステップＳ３１４としてＩＤ取得が失敗に終わったブランチは、再度ＩＤ要求を出し、同様の作業を繰り返す。ＩＤを取得できたブランチからステップＳ３１５として、そのノードのＩＤ情報をブロードキャストで全ノードに転送する。１ノードＩＤ情報のブロードキャストが終わると、ステップＳ３１６として残りのブランチの数が１つ減らされる。
【００８９】
ここで、ステップＳ３１７として、この残りのブランチの数が１以上ある時はステップＳ３１１のＩＤ要求の作業からを繰り返し、最終的にすべてのブランチがＩＤ情報をブロードキャストするまで行われる。すべてのブランチがノードＩＤを取得すると、ステップＳ３１７はＭ＝０となり、ブランチのＩＤ取得モードも終了する。
【００９０】
ここまで終了すると、最終的にＩＤ情報を取得していないノードはルートのみなので、ステップＳ３１８として与えない番号で最も若い番号を自分のＩＤ番号と設定し、ステップＳ３１９としてルートのＩＤ情報をブロードキャストする。
【００９１】
以上で、図９に示したように、親子関係が決定した後から、すべてのノードのＩＤが設定されるまでの手順が終了する。
次に、一例として図１０に示した実際のネットワークにおける動作を図１２を参照しながら説明する。
【００９２】
図１０の説明として、（ルート）ノードＢの下位にはノードＡとノードＣが直接接続されており、更にノードＣの下位にはノードＤが直接接続されており、更にノードＤの下位にはノードＥとノードＦが直接接続された階層構造になっている。この、階層構造やルートノード、ノードＩＤを決定する手順を以下で説明する。
【００９３】
バスリセットがされた後、まず各ノードの接続状況を認識するために、各ノードの直接接続されているポート間において、親子関係の宣言がなされる。この親子とは親側が階層構造で上位となり、子側が下位となると言うことができる。
【００９４】
図１０では、バスリセットの後、最初に親子関係の宣言を行ったのはノードＡである。基本的にノードの１つのポートにのみ接続があるノード（リーフと呼ぶ）から親子関係の宣言を行うことができる。
【００９５】
これは自分には１ポートの接続のみということをまず知ることができるので、これによってネットワークの端であることを認識し、その中で早く動作を行ったノードから親子関係が決定されていく。こうして親子関係の宣言を行った側（Ａ−Ｂ間ではノードＡ）のポートが子と設定され、相手側（ノードＢ）のポートが親と設定される。こうして、ノードＡ−Ｂ間では子−親、ノードＥ−Ｄ間で子−親、ノードＦ−Ｄ間で子−親と決定される。
【００９６】
更に１階層あがって、今度は複数個接続ポートを持つノード（ブランチと呼ぶ）のうち、他ノードからの親子関係の宣言を受けたものから順次、更に上位に親子関係の宣言を行っていく。図１０ではまずノードＤがＤ−Ｅ間、Ｄ−Ｆ間と親子関係が決定した後、ノードＣに対する親子関係の宣言を行っており、その結果ノードＤ−Ｃ間で子−親と決定している。
【００９７】
ノードＤから親子関係の宣言を受けたノードＣは、もう一つのポートに接続されているノードＢに対して親子関係の宣言を行っている。これによってノードＣ−Ｂ間で子−親と決定している。
【００９８】
このようにして、図１０のような階層構造が構成され、最終的に接続されているすべてのポートにおいて親となったノードＢが、ルートノードと決定された。ルートは１つのネットワーク構成中に一つしか存在しないものである。
【００９９】
なお、この図１０においてノードＢがルートノードと決定されたが、これはノードＡから親子関係宣言を受けたノードＢが、他のノードに対して親子関係宣言を早いタイミングで行っていれば、ルートノードは他ノードに移っていたこともあり得る。すなわち、伝達されるタイミングによってはどのノードもルートノードとなる可能性があり、同じネットワーク構成でもルートノードは一定とは限らない。
【０１００】
ルートノードが決定すると、次は各ノードＩＤを決定するモードに入る。ここではすべてのノードが、決定した自分のノードＩＤを他のすべてのノードに通知する（プロードキャスト機能）。
自己ＩＤ情報は、自分のノード番号、接続されている位置の情報、持っているポートの数、接続のあるポートの数、各ポートの親子関係の情報等を含んでいる。
【０１０１】
ノードＩＤ番号の割り振りの手順としては、まず１つのポートにのみ接続があるノード（リーフ）から起動することができ、この中から順にノード番号＝０、１、２、、と割り当てられる。
【０１０２】
ノードＩＤを手にしたノードは、ノード番号を含む情報をブロードキャストで各ノードに送信する。これによって、そのＩＤ番号は『割り当て済み』であることが認識される。
【０１０３】
すべてのリーフが自己ノードＩＤを取得し終わると、次はブランチへ移りリーフに引き続いたノードＩＤ番号が各ノードに割り当てられる。リーフと同様に、ノードＩＤ番号が割り当てられたブランチから順次ノードＩＤ情報をブロードキャストし、最後にルートノードが自己ＩＤ情報をブロードキャストする。すなわち、常にルートは最大のノードＩＤ番号を所有するものである。
以上のようにして、階層構造全体のノードＩＤの割り当てが終わり、ネットワーク構成が再構築され、バスの初期化作業が完了する。
【０１０４】
《ノード管理のための制御情報》
ノード管理のためのＣＳＲアーキテクチャの基本的な機能として、図４に示したＣＳＲコアがレジスタ上に存在する。
それらのレジスタの位置と機能を図１１に示すが、図中のオフセットは０ｘＦＦＦＦＦ０００００００からの相対位置である。
ＣＳＲアーキテクチャでは、０ｘＦＦＦＦＦ００００２００からシリアルバスに関するレジスタが配置されていて、それらのレジスタの位置と機能を図１２に示す。
【０１０５】
また、０ｘＦＦＦＦＦ００００８００から始まる場所には、シリアルバスのノード資源に関する情報が配置されていて、それらのレジスタの位置と機能を図１３に示す。
【０１０６】
ＣＳＲアーキテクチャでは、各ノードの機能を表すためＣｏｎｆｉｇｕｒａｔｉｏｎ  ＲＯＭを持っているが、このＲＯＭには最小形式と一般形式があり、ｘＦＦＦＦＦ００００４００から配置される。
【０１０７】
最小形式では、図１４のようにベンダＩＤを表しているだけであり、このＩＤは２４ビットで表される全世界で固有の数値である。
一般形式では、図１５のような形式でノードに関する情報を持っているが、この場合のベンダＩＤはｒｏｏｔ＿ｄｉｒｅｃｔｏｒｙに持つことができる。
【０１０８】
また、ｂｕｓ＿ｉｎｆｏ＿ｂｌｏｃｋとｒｏｏｔ＿ｌｅａｆには、ベンダＩＤを含んだ６４ビットの全世界で固有な装置番号を持っている。
この装置番号は、バスリセットなどの再構成後に継続してノードを認識するために使用する。
【０１０９】
《シリアルバス管理》
ＩＥＥＥ１３９４バスのプロトコルは、図３に示すようにフィジカルレイヤ、リンクレイヤ、トランザクションレイヤから構成されている。
この中でのバス管理は、ＣＳＲアーキテクチャに基づいたノードの制御とバス資源管理の為の基本的な機能を提供している。
【０１１０】
バス管理を行うノードはバス上で唯一存在して動作するもので、このバス管理ノードはシリアルバス上の他のノードに管理可能を提供するが、この管理機能にはサイクルマスタの制御や、性能の最適化、電源管理、伝送速度管理、構成管理などがある。
【０１１１】
バス管理機能は大きく分けて、バスマネージャ、アイソクロノスリソースマネージャと、ノード制御の三つの機能から構成される。
はじめにノード制御とは、ＣＳＲによってフィジカルレイヤ、リンクレイヤ、トランザクションレイヤ、アプリケーションでのノード間通信を可能にする管理機能である。
【０１１２】
次に、アイソクロノスリソースマネージャとは、シリアルバス上で同期型のデータ転送を行うために必要となる管理機能で、アイソクロノスデータの転送帯域幅とチャネル番号の割り付けを管理するものである。この管理を行うノードはバス上に唯一存在するもので、バスの初期化フェーズ後にアイソクロノスリソースマネージャ機能を持ったノードの中から動的に選出される。
【０１１３】
また、このノードはバスマネージャノードの決定を行うものでもあるが、バス上にバスマネージャのノードが存在しない構成では、電源管理やサイクルマスタの制御のようなバスマネージャの一部の機能をアイソクロノスリソースマネージャノードが行う。
【０１１４】
更にバスマネージャとは、アプリケーションに対するバス制御のインターフェイスを提供するサービスを行う管理機能であり、その制御インターフェイスにはシリアルバス制御要求（ＳＢ＿ＣＯＮＴＲＯＬ．ｒｅｑｕｅｓｔ）、シリアルバス・イベント制御確認（ＳＢ＿ＣＯＮＴＲＯＬ．ｃｏｎｆｉｒｍａｔｉｏｎ）、シリアルバス・イベント通知（ＳＢ＿ＥＶＥＮＴ．ｉｎｄｉｃａｔｉｏｎ）がある。
【０１１５】
ＳＢ＿ＣＯＮＴＲＯＬ．ｒｅｑｕｅｓｔは、バスのリセット、バスの初期化、バスの状態情報などをアプリケーションからバス管理に要求する場合に利用するものであり、図２７において、ＳＢ＿ＣＯＮＴＲＯＬ．ｒｅｑで示される。
【０１１６】
ＳＢ＿ＣＯＮＴＲＯＬ．ｃｏｎｆｉｒｍａｔｉｏｎは、ＳＢ＿ＣＯＮＴＲＯＬ．ｒｅｑｕｅｓｔの結果は、バスマネージャからアプリケーションに確認通知するものであり、図２７において、ＳＢ＿ＣＯＮＴＲＯＬ．ｃｏｎｆで示される。
【０１１７】
ＳＢ＿ＥＶＥＮＴ．ｉｎｄｉｃａｔｉｏｎは、バスマネージャからアプリケーションに対して非同期に発生するイベントを通知する為のものであり、図２７において、ＳＢ＿ＥＶＥＮＴ．ｉｎｄで示される。
【０１１８】
《データ転送プロトコル》
ＩＥＥＥ１３９４でのデータ転送は、周期的に送信する必要のある同期データ（アイソクロナス・パケット）と、任意のタイミングでのデータ送受信が許容される非同期データ（アシンクロナス・パケット）とが同時に存在し、なおかつ同期転送データのリアルタイム性を保証している。
データ転送では、転送に先立ってバス使用権を要求し使用承諾件を得るために、バス・アービトレーションを行う。
【０１１９】
アシンクロナス転送においては、送信ノードＩＤと受信ノードＩＤが転送データと一緒にパケット・データとして送られるが、受信ノードは自分のＩＤを確認してパケットを受け取るとアクノリッジ信号を送信ノードに返すことで、一つのトランザクショが完了する。
【０１２０】
アイソクロナス転送においては、送信ノード側で伝送速度と一緒にアイソクロノス・チャネルを要求し、チャネルＩＤが転送データと一緒にパケットデータとして送られ、受信ノード側では自分が欲しいチャネルＩＤを確認してデータパケットを受け取る。
【０１２１】
必要となるチャネル数と伝送速度はアプリケーションレイヤで決定される。
これらのデータ転送プロトコルは、フィジカルレイヤ、リンクレイヤ、トランザクションレイヤの三つのレイヤによって定義される。
【０１２２】
フィジカルレイヤは、バスとの物理的・電気的インターフェイスや、ノード接続の自動認識、バス上のノード間のバス使用権（バス・アービトレーション）などを行う。
【０１２３】
リンクレイヤは、アドレッシング、データチェック、パケット送受信、そしてアイソクロナス転送の為のサイクル制御を行う。
トランザクションレイヤは、アシンクロナス・データに関する処理を行う。
以下に各レイヤにおける処理について説明する。
【０１２４】
〈フィジカルレイヤ〉
フィジカルレイヤにおける、バス・アービトレーションを説明するための図として図１６にバス使用要求、図１７にバス使用許可の図を示し、以下これを用いて説明する。
【０１２５】
アービトレーションが始まると、１つもしくは複数のノードが親ノードに向かって、それぞれバス使用権の要求を発する。図１６のノードＣとノードＦがバス使用権の要求を発しているノードである。これを受けた親ノード（図１６ではノードＡ）は更に親ノードに向かって、バス使用権の要求を発する（中継する）。この要求は最終的に調停を行うルートに届けられる。
【０１２６】
バス使用要求を受けたルートノードは、どのノードにバスを使用させるかを決める。この調停作業はルートノードのみが行えるものであり、調停によって勝ったノードにはバスの使用許可を与える。
【０１２７】
図１７では、ノードＣに使用許可が与えられ、ノードＦの使用は拒否された図である。アービトレーションに負けたノードに対してはＤＰ（ｄａｔａ  ｐｒｅｆｉｘ）パケットを送り、拒否されたことを知らせる。拒否されたノードのバス使用要求は次回のアービトレーションまで待たされる。
以上のようにして、アービトレーションに勝ってバスの使用許可を得たノードは、以降データの転送を開始できる。
ここで、アービトレーションの一連の流れをフローチャート図１８に示して、説明する。
【０１２８】
ノードがデータ転送を開始できる為には、バスがアイドル状態であることが必要である。先に行われていたデータ転送が終了して、現在バスが空き状態であることを認識するためには、各転送モードで個別に設定されている所定のアイドル時間ギャップ長（例．サブアクション・ギャップ）を経過する事によって、各ノードは自分の転送が開始できると判断する。
【０１２９】
ステップＳ４０１として、Ａｓｙｎｃデータ、Ｉｓｏデータ等それぞれ転送するデータに応じた所定のギャップ長が得られたか判断する。所定のギャップ長が得られない限り、転送を開始するために必要なバス使用権の要求はできないので、所定のギャップ長が得られるまで待つ。
【０１３０】
ステップＳ４０１で所定のギャップ長が得られたら、ステップＳ４０２として転送すべきデータがあるか判断し、ある場合はステップＳ４０３として転送するためにバスを確保するよう、バス使用権の要求をルートに対して発する。このときの、バス使用権の要求を表す信号の伝達は、図１６、図１７に示したように、ネットワーク内各機器を中継しながら、最終的にルートに届けられる。ステップＳ４０２で転送するデータがない場合は、そのまま待機する。
【０１３１】
次に、ステップＳ４０４として、ステップ４０３のバス使用要求を１つ以上ルートが受信したら、ルートはステップＳ４０５として使用要求を出したノードの数を調べる。ステップＳ４０５での選択値がノード数＝１（使用権要求を出したノードは１つ）だったら、そのノードに直後のバス使用許可が与えられることとなる。
【０１３２】
ステップＳ４０５での選択値がノード数〉１（使用要求を出したノードは複数）だったら、ルートはステップＳ４０６として使用許可を与えるノードを１つに決定する調停作業を行う。この調停作業は公平なものであり、毎回同じノードばかりが許可を得る様なことはなく、平等に権利を与えていくような構成となっている。
【０１３３】
ステップＳ４０７として、ステップＳ４０６で使用要求を出した複数ノードの中からルートが調停して使用許可を得た１つのノードと、敗れたその他のノードに分ける選択を行う。ここで、調停されて使用許可を得た１つのノード、またはステップＳ４０５の選択値から使用要求ノード数＝１で調停無しに使用許可を得たノードには、ステップＳ４０８として、ルートはそのノードに対して許可信号を送る。
【０１３４】
許可信号を得たノードは、受け取った直後に転送すべきデータ（パケット）を転送開始する。また、ステップＳ４０６の調停で敗れて、バス使用が許可されなかったノードにはステップＳ４０９としてルートから、アービトレーション失敗を示すＤＰ（ｄａｔａ  ｐｒｅｆｉｘ）パケットを送られ、これを受け取ったノードは再度転送を行うためのバス使用要求を出すため、ステップＳ４０１まで戻り、所定ギャップ長が得られるまで待機する。
以上がアービトレーションの流れを説明した、フローチャート図１８の説明である。
【０１３５】
〈トランザクションレイヤ〉
トランザクションの種類には、リード・トランザクション、ライト・トランザクション、ロック・トランザクションの３種類がある。
リード・トランザクションでは、イニシエータ（要求ノード）がターゲット（応答ノード）の特定アドレスのメモリのデータを読み取る。
ライト・トランザクションでは、イニシエータがターゲットの特定アドレスのメモリにデータを書き込む。
【０１３６】
ロック・トランザクションでは、イニシエータからターゲットに参照データと更新データを転送し、その参照データとターゲットのアドレスのデータを組み合わせて処理を行い、ターゲットの指定されたアドレスのデータを更新する。
【０１３７】
図１９は、トランザクションレイヤにおけるＣＳＲアーキテクチャに基づいた、読み出し（リード）、書き込み（ライト）、ロックの各コマンドの要求・応答プロトコルについて示したもので、図に示した要求・通知・応答・確認はトランザクションレイヤでのサービス単位になっている。
【０１３８】
トランザクション要求（ＴＲ＿ＤＡＴＡ．ｒｅｑｕｅｓｔ）は、応答ノードに対するパケットの転送、トランザクション通知（ＴＲ＿ＤＡＴＡ．ｉｎｄｉｃａｔｉｏｎ）は応答ノードに要求が届いたことの通知、トランザクション応答（ＴＲ＿ＤＡＴＡ．ｒｅｓｐｏｎｓｅ）はアクノリッジの送信、トランザクション確認（ＴＲ＿ＤＡＴＡ．ｃｏｎｆｉｒｍａｔｉｏｎ）はアクノリッジの受信である。
【０１３９】
〈リンクレイヤ〉
図２０は、リンクレイヤにおけるサービスを示した図で、応答ノードに対するパケットの転送を要求するリンク要求（ＬＫ＿ＤＡＴＡ．ｒｅｑｕｅｓｔ）、応答ノードにパケット受信を通知するリンク通知（ＬＫ＿ＤＡＴＡ．ｉｎｄｉｃａｔｉｏｎ）、応答ノードからのアクノリッジ送信のリンク応答（ＬＫ＿ＤＡＴＡ．ｒｅｓｐｏｎｓｅ）、要求ノードのアクノリッジ送信のリンク確認（ＬＫ＿ＤＡＴＡ．ｃｏｎｆｉｒｍａｔｉｏｎ）のサービス単位に分けられる。
【０１４０】
一つのパケット転送プロセスはサブアクションと呼ばれ、アシンクロナス・サブアクションとアイソクロナス・サブアクションの２つの種類がある。
各サブアクションの動作について、以下に説明する。
【０１４１】
《アシンクロナス・サブアクション》
アシンクロナス・サブアクションは、非同期データ転送である。図２１にアシンクロナス転送における時間的な遷移状態を示す。図２１の最初のサブアクション・ギャップは、バスのアイドル状態を示すものである。このアイドル時間が一定値になった時点で、転送を希望するノードはバスが使用できると判断して、バス獲得のためのアービトレーションを実行する。
【０１４２】
アービトレーションでバスの使用許可を得ると、次にデータの転送がパケット形式で実行される。データ転送後、受信したノードは転送されたデータに対しての受信結果のａｃｋ（受信確認用返送コード）をａｃｋ  ｇａｐという短いギャップの後、返送して応答するか、応答パケットを送ることによって転送が完了する。ａｃｋは４ビットの情報と４ビットのチェックサムからなり、成功か、ビジー状態か、ペンディング状態であるかといった情報を含み、すぐに送信元にノードに返送される。
【０１４３】
次に、図２２にアシンクロナス転送のパケットフォーマットの例を示す。
パケットには、データ部及び誤り訂正用のデータＣＲＣの他にはヘッダ部があり、そのヘッダ部には図２２に示したような、目的ノードＩＤ、ソースノードＩＤ、転送データ長さや各種コードなどが書き込まれ、転送が行われる。
【０１４４】
また、アシンクロナス転送は自己ノードから相手ノードへの１対１の通信である。転送元ノードから転送されたパケットは、ネットワーク中の各ノードに行き渡るが、自分宛てのアドレス以外のものは無視されるので、宛先の１つのノードのみが読込むことになる。
以上がアシンクロナス転送の説明である。
【０１４５】
《アイソクロナス・サブアクション》
アイソクロナス・サブアクションは同期データ転送である。１３９４シリアルバスの最大の特徴であるともいえるこのアイソクロナス転送は、特にＶＩＤＥＯ映像データや音声データといったマルチメディアデータなど、リアルタイムな転送を必要とするデータの転送に適した転送モードである。
【０１４６】
また、アシンクロナス転送（非同期）が１対１の転送であったのに対し、このアイソクロナス転送はブロードキャスト機能によって、転送元の１つのノードから他のすべてのノードへ一様に転送される。
【０１４７】
図２３は、アイソクロナス転送における時間的な遷移状態を示す図である。
アイソクロナス転送は、バス上一定時間毎に実行される。この時間間隔をアイソクロナスサイクルと呼ぶ。アイソクロナスサイクル時間は、１２５μＳである。この各サイクルの開始時間を示し、各ノードの時間調整を行う役割を担っているのがサイクル・スタート・パケットである。
【０１４８】
サイクル・スタート・パケットを送信するのは、サイクル・マスタと呼ばれるノードであり、１つ前のサイクル内の転送終了後、所定のアイドル期間（サブアクションギャップ）を経た後、本サイクルの開始を告げるサイクル・スタート・パケットを送信する。このサイクル・スタート・パケットの送信される時間間隔が１２５μＳとなる。
【０１４９】
また、図２３にチャネルＡ、チャネルＢ、チャネルＣと示したように、１サイクル内において複数種のパケットがチャネルＩＤをそれぞれ与えられることによって、区別して転送できる。これによって同時に複数ノード間でのリアルタイムな転送が可能であり、また、受信するノードでは自分が欲しいチャネルＩＤのデータのみを取り込む。このチャネルＩＤは送信先のアドレスを表すものではなく、データに対する論理的な番号を与えているに過ぎない。よって、あるパケットの送信は１つの送信元ノードから他のすべてのノードに行き渡る、ブロードキャストで転送されることになる。
【０１５０】
アイソクロナス転送のパケット送信に先立って、アシンクロナス転送同様アービトレーションが行われる。しかし、アシンクロナス転送のように１対１の通信ではないので、アイソクロナス転送にはａｃｋ（受信確認用返信コード）は存在しない。
【０１５１】
また、図２３に示したｉｏｓ  ｇａｐ（アイソクロナスギャップ）とは、アイソクロナス転送を行う前にバスが空き状態であると確認するために必要なアイドル期間を表している。この所定のアイドル期間を経過すると、アイソクロナス転送を行いたいノードはバスが空いていると判断し、転送前のアービトレーションを行うことができる。
【０１５２】
次に、図２４にアイソクロナス転送のパケットフォーマットの例を示し、説明する。
各チャネルに分かれた、各種のパケットにはそれぞれデータ部及び誤り訂正用のデータＣＲＣの他にヘッダ部があり、そのヘッダ部には図２４に示したような、転送データ長やチャネルＮＯ、その他各種コード及び誤り訂正用のヘッダＣＲＣなどが書き込まれ、転送が行われる。
以上がアイソクロナス転送の説明である。
【０１５３】
それぞれのパケットフォーマットにおける、パケットフィールドの詳細について図２５に示す。
〈バス・サイクル〉
実際の１３９４シリアルバス上の転送では、アイソクロナス転送と、アシンクロナス転送は混在できる。その時の、アイソクロナス転送とアシンクロナス転送が混在した、バス上の転送状態の時間的な遷移の様子を表した図を図２６に示す。
【０１５４】
アイソクロナス転送はアシンクロナス転送より優先して実行される。その理由は、サイクル・スタート・パケットの後、アシンクロナス転送を起動するために必要なアイドル期間のギャップ長（サブアクションギャップ）よりも短いギャップ長（アイソクロナスギャップ）で、アイソクロナス転送を起動できるからである。したがって、アシンクロナス転送より、アイソクロナス転送は優先して実行されることとなる。
【０１５５】
図２６に示した、一般的なバスサイクルにおいて、サイクル＃ｍのスタート時にサイクル・スタート・パケットがサイクル・マスタから各ノードに転送される。これによって、各ノードで時刻調整を行い、所定のアイドル期間（アイソクロナスギャップ）を待ってからアイソクロナス転送を行うべきノードはアービトレーションを行い、パケット転送に入る。図２６ではチャネルｅとチャネルｓとチャネルｋが順にアイソクロナス転送されている。
【０１５６】
このアービトレーションからパケット転送までの動作を、与えられているチャネル分繰り返し行った後、サイクル＃ｍにおけるアイソクロナス転送がすべて終了したら、アシンクロナス転送を行うことができるようになる。
【０１５７】
アイドル時間がアシンクロナス転送が可能なサブアクションギャップに達する事によって、アシンクロナス転送を行いたいノードはアービトレーションの実行に移れると判断する。
【０１５８】
ただし、アシンクロナス転送が行える期間は、アイソクロナス転送終了後から、次のサイクル・スタート・パケットを転送すべき時間（ｃｙｃｌｅ  ｓｙｎｃｈ）までの間にアシンクロナス転送を起動するためのサブアクションギャップが得られた場合に限っている。
【０１５９】
図２６のサイクル＃ｍでは３つのチャネル分のアイソクロナス転送と、その後アシンクロナス転送（含むａｃｋ）が２パケット（パケット１、パケット２）転送されている。このアシンクロナスパケット２の後は、サイクルｍ＋１をスタートすべき時間（ｃｙｃｌｅ  ｓｙｎｃｈ）にいたるので、サイクル＃ｍでの転送はここまでで終わる。
【０１６０】
ただし、非同期または同期転送動作中に次のサイクル・スタート・パケットを送信すべき時間（ｃｙｃｌｅ  ｓｙｎｃｈ）に至ったとしたら、無理に中断せず、その転送が終了した後のアイドル期間を待ってから次サイクルのサイクル・スタート・パケットを送信する。すなわち、１つのサイクルが１２５μＳ以上続いたときは、その分次サイクルは基準の１２５μＳより短縮されたとする。このようにアイソクロナス・サイクルは１２５μＳを基準に超過、短縮し得るものである。
【０１６１】
しかし、アイソクロナス転送はリアルタイム転送を維持するために毎サイクル必要であれば必ず実行され、アシンクロナス転送はサイクル時間が短縮されたことによって次以降のサイクルにまわされることもある。
【０１６２】
図２７は、ＩＥＥＥ１３９４のプロトコルアーキテクチャ図である。この図において、各レイヤ間のサービス、特にアプリケーションレイヤーと、トランザクションレイヤー、リンクレイヤーの間のサービスについて説明する。矢印は各レイヤー間のサービスを示す。
【０１６３】
ＴＲ＿ＤＡＴＡ．ｒｅｑｕｅｓｔは、データ・トランザクションサービスを示す。アプリケーションまたはバス管理は、このサービスを用いてＷＲＩＴＥ、ＲＥＡＤ、ＬＯＣＫのデータトランザクションを開始するものであり、図２７において、ＴＲ＿ＤＡＴＡ  ｒｅｑで示される。
【０１６４】
ＴＲ＿ＤＡＴＡ．ｃｏｎｆｉｒｍａｔｉｏｎは、トランザクション完了確認サービスを示す。トランザクション・データ・リクエスト完了時、トランザクションレイヤーは、このサービスを用いて、リクエスト側ノードにトランザクションの完了を通信するものであり、図２７において、ＴＲ＿ＤＡＴＡ  ｃｏｎｆで示される。
【０１６５】
ＴＲ＿ＤＡＴＡ．ｉｎｄｉｃａｔｉｏｎは、トランザクション・リクエスト受信表示サービスを示す。トランザクションレイヤーは、このサービスを用いて、トランザクションリクエストを受信したことをアプリケーション・ノード・コントローラ、バス・マネージャに表示する。これは、図２７において、ＴＲ＿ＤＡＴＡ．ｉｎｄで示される。
【０１６６】
ＴＲ＿ＤＡＴＡ．ｒｅｓｐｏｎｓｅは、トランザクション・データ応答サービスを示す。トランザクションレイヤーは、このサービスを用いて、受信したパケットに応答し、トランザクションを完了させる。これは、図２７において、ＴＲ＿ＤＡＴＡ．ｒｅｓｐで示される。
【０１６７】
ＬＫ＿ＩＳＯ＿ＣＯＮＴＯＲＯＬ．ｒｅｑｕｅｓｔは、アイソクロナス制御リクエストサービスを示す。アプリケーションレイヤーは、このサービスを使って、リンクレイヤーにアイソクロナスチャンネルのリストを通信する。これは、図２７において、ＬＫ＿ＩＳＯ＿ＣＯＮＴ．ｒｅｑで示される。
【０１６８】
ＬＫ＿ＣＹＣＬＥ．ｉｎｄｉｃａｔｉｏｎは、サイクル同期化表示サービスを示す。リンクレイヤーは、このサービスを用いて、アプリケーションレイヤーにサイクル同期化イベントを表示する。これは、図２７において、ＬＫ＿ＣＹＣＬＥ．ｉｎｄで示される。
【０１６９】
ＬＫ＿ＩＳＯ．ｒｅｑｕｅｓｔは、アイソクロナスリクエストサービスを示す。アプリケーションレイヤーは、このサービスを用いて、リンクレイヤーに１個のアイソクロナスパケットをバスに送信するようにリクエストする。これは、図２７において、ＬＫ＿ＩＳＯ．ｒｅｑで示される。
【０１７０】
ＬＫ＿ＩＳＯ．ｉｎｄｉｃａｔｉｏｎは、アイソクロナス表示サービスを示す。リンクレイヤーは、このサービスを用いて、アプリケーションレイヤーにアイソクロナスパケットを受信したことを表示する。これは、図２７において、ＬＫ＿ＩＳＯ．ｉｎｄで示される。
【０１７１】
〈１３９４アイソクロナスデータ転送を用いたプリンティングシステム（ホスト側）〉
図２８、図２９は、例えばＰＣのようなホスト（転送元ノード）から、アイソクロナスデータ転送を用いて印字データをプリンタ（転送先ノード）に転送する際の、ホスト側における印字シーケンスを示したフローチャートである。ホスト側で印字データ転送処理が始まるとき、まずホスト側は、ターゲットとなるプリンタにログインしなければならない。
【０１７２】
１３９４プリンタへのログインは、まずプリンタのログインレジスタをリードトランザクションにより読み取り（ステップ２００１）、ログインレジスタの値よりログイン可否を判定し（ステップ２００２）、ロックトランザクションにより、プリンタのログインレジスタを変更して（ステップ２００３）ログインする。ログインレジスタの値により現在ログイン不可能であれば、アプリケーションにその旨を通知し、データ転送処理を終了する。
【０１７３】
ログイン処理が正常に終了したら、次にリードトランザクションにより、プリンタのコンフィギュレーションＲＯＭ中のプリンタ種別を読み（ステップ２００４）、出力先のプリンタ種別を判定する。次に、ＩＳＯデータを転送可能かどうかをチェックする。このチェックの結果、ＩＳＯデータを転送可能であれば、ホスト側は、このプリンタ種別により、アイソクロナスリソースマネージャーに対して要求する帯域幅を判定する。
【０１７４】
帯域幅変更の目的は、１３９４ネットワーク全体のデータ転送帯域の最適化である。１３９４のアイソクロナス転送におけるプリントアウト処理の場合、プリンタのプリントアウト能力以上のデータ転送が可能である。またアイソクロナス転送は、転送データをプリンタがそのまま受けなければならない（パケットごとにエラー、リトライを繰り返すことができない）という性格上、データ転送能力をプリントアウト能力に応じて定めなければならない。
【０１７５】
例えばレーザビームプリンタとインクジェットプリンタでは、一般にプリントアウト能力に差があるため、本実施例のばあい、ホスト側がプリンタ側のレジスタを読み取り、レーザービームプリンタなら５Ｍ／ｓ、インクジェットプリンタなら２Ｍ／ｓのように、アイソクロナスリソースマネージャに要求するデータ転送帯域幅を定める。
【０１７６】
さらに、プリンタの種別により帯域幅を決定する他に、転送データがカラーであるか、モノクロであるか、など転送データ量に影響するパラメータも参照して、プリンタのプリントアウト能力を超えない最適なデータ転送帯域を確保しようとすることにより、１３９４ネットワーク全体のデータ転送帯域幅を最適に使用できる。
【０１７７】
具体的には、カラー印刷を行う場合は大量のデータを必要とするので、カラー印刷を行う際は、モノクロ印刷を行うより大きな帯域幅が設定される。また、モノクロデータはスピードを重視するため高速に印刷し、カラーデータは品位を重視するため低速に印刷する場合には、モノクロデータを転送する際には、カラーデータを転送する際より大きな帯域幅が設定される。
【０１７８】
帯域幅の決定に際しては、プリンタ種別を判定するのみならず、同一機種の場合でもドライバの設定（ドラフトモード、ファインモード）等により変更することが考えられる。その場合、アイソクロナスデータ転送に使用する帯域幅を獲得するには、まず始めにアイソクロナスリソースマネージャーから、リードトランザクションにより、現在割り当て可能な帯域幅の最大値を読み取る（ステップ２０１０）。
【０１７９】
次に、前記ステップ２００４〜２００９において決定された要求帯域幅を、前記ステップ２００９で読み取った割り当て可能帯域幅と比較する（ステップ２０１１）。割り当て可能であれば、ロックトランザクションにより、アイソクロナスリソースマネージャーから要求帯域幅を獲得する（ステップ２０１２）。もし要求帯域幅が獲得できなければ、アプリケーションにその旨を通知し、データ転送処理を終了する。
【０１８０】
帯域幅を獲得したら、次にアイソクロナス転送のための、チャンネル番号決定処理を行う。まず、アイソクロナスリソースマネージャーからリードトランザクションにより、現在のチャンネル番号使用状態を読み取る（ステップ２０１３）。次に、未使用チャンネル番号があるかどうかを調べ（ステップ２０１４）、もし未使用チャンネル番号があれば、ロックトランザクションにより、アイソクロナスリソースマネージャーからチャンネル番号を獲得する（ステップ２０１５）。もし未使用チャンネル番号がなければ、アプリケーションにその旨を通知し、データ転送処理を終了する。
【０１８１】
転送元ノード（この場合ＰＣ）は、アイソクロナスリソースマネージャーから帯域幅、チャンネル番号を獲得した後、チャンネル番号を転送先ノード（この場合プリンタ）のチャンネル番号レジスタに、ライトトランザクションを用いて書き込み、通知する（ステップ２０１６）。
【０１８２】
さらに、前記と同様に、プリント開始を転送先ノードのプリント開始レジスタに、ライトトランザクションを用いてプリント開始ビットを書き込み、通知して（ステップ２０１７）、アイソクロナスデータ転送を開始する（ステップ２０１８）。
【０１８３】
アイソクロナスデータ転送が終了したら（ステップ２０１９）、プリント終了を転送先ノードに通知する。この処理は転送先ノードのプリント開始レジスタに、ライトトランザクションを用いてプリント終了ビットを書き込むことによってなされる（ステップ２０２０）。
【０１８４】
ステップ２００５の判定でＩＳＯデータの転送が可能でない場合、ステップ２０２１へ進み、ＢＪＣ−１３９４であるかどうかをチェックする。このチェックの結果、ＢＪＣ−１３９４であれば、ステップ２０２２へ進んでＢＪプリンタ用データの非同期転送パケットサイズを設定する。
【０１８５】
また、ステップ２０２１のチェックの結果がＢＪＣ−１３９４でない場合にはステップ２０２３へ進み、ＬＢＰ−１３９４であるかどうかをチェックする。そして、ＬＢＰ−１３９４であれば、ステップ２０２４へ進み、ＬＢＰプリンタ用データの非同期転送パケットサイズを設定する。
【０１８６】
本実施形態においては、前述のようにして、それぞれのプリンタに適した非同期パケットのデータサイズを、ステップ２０２２、ステップ２０２２で決めることができる。
【０１８７】
次に、プリント開始を通知し（ステップ２０２５）、その後、非同期データの転送を開始する（ステップ２０２６）。そして、次のステップ２０２７でＡＳＹＮＣデータの転送を終了したら、次に、ステップ２０２８でプリント終了を通知する。
【０１８８】
ステップ２００５のＩＳＯデータ転送が可能であるかどうかの判定は、バス上にサイクルマスタがあるかどうかで判定される。サイクルマスタの有無は、図２７のＳＢ＿ＣＯＮＴ  ｃｏｎｆによって情報を得ることができる。
【０１８９】
図３０は第１の出力装置の構成を示す断面図であり、例えばレーザビームプリンタ（ＬＢＰ）の場合を示す。
図３０において、２０００はＬＢＰ本体であり、外部に接続されているホストコンピュータから供給される印刷情報（文字コード等）やフォーム情報あるいはマクロ命令等を入力して記憶するとともに、それらの情報に従って対応する文字パターンやフォームパターン等を作成し、記録媒体である記録紙等に像を形成する。
【０１９０】
２００１は操作のためのスイッチおよびＬＥＤ表示器等が配されている操作パネル、２０１２はＬＢＰ本体２０００全体の制御およびホストコンピュータから供給される文字情報等を解析するプリンタ制御ユニットである。このプリンタ制御ユニット２０１２は、主に文字情報を対応する文字パターンのビデオ信号に変換してレーザドライバ２００２に出力する。
【０１９１】
レーザドライバ２００２は半導体レーザ２００３を駆動するための回路であり、入力されたビデオ信号に応じて半導体レーザ２００３から発射されるレーザ光２００４をオン・オフ切り換えする。レーザ光２００４は回転多面鏡２００５で左右方向に振らされて静電ドラム２００６上を走査露光する。
【０１９２】
これにより、静電ドラム２００６上には文字パターンの静電潜像が形成されることになる。この潜像は、静電ドラム２００６周囲に配設された現像ユニット２００７により現像された後、記録紙に転写される。この記録紙にはカットシートを用い、カットシート記録紙はＬＢＰ２０００に装着した用紙カセット２００８に収納され、給紙ローラ２００９および搬送ローラ２０１０と搬送ローラ２０１１とにより、装置内に取り込まれて、静電ドラム２００６に供給される。また、ＬＢＰ本体２０００には、図示しないカードスロットを少なくとも１個以上備え、内蔵フォントに加えてオプションフォントカード、言語系の異なる制御カード（エミュレーションカード）を接続できるように構成されている。
【０１９３】
図３１は本実施形態のＬＢＰの構成を説明するブロック図である。
プリンタ２０００において、１２はプリンタＣＰＵで、ＲＯＭ１３のプログラム用ＲＯＭに記憶された制御プログラム等或いは外部メモリ１４に記憶された制御プログラム等に基づいてシステムバス１５に接続される各種のデバイスとのアクセスを総括的に制御し、印刷部インタフェース１６を介して接続される印刷部（プリンタエンジン）１７に出力情報としての画像信号を出力する。
【０１９４】
また、このＲＯＭ１３のプログラムＲＯＭには、制御プログラムが記憶されている。ＲＯＭ１３のフォント用ＲＯＭには上記出力情報を生成する際に使用するフォントデータ等を記憶し、ＲＯＭ１３のデータ用ＲＯＭにはハードディスク等の外部メモリ１４が無いプリンタの場合には、ホストコンピュータ上で利用される情報等を記憶している。
【０１９５】
なお、プリンタの各種情報は本実施形態の場合は１３９４インターフェースである入力部１８を介して外部機器からアクセスすることが可能である。これら情報には、用紙カセット２００８の紙残量警告などの情報が含まれる。これら情報のアクセスについては後述のプリンタ側１３９４シリアルバスインターフェースの構成で、シリアルバス用コンフィギュレーションＲＯＭならびにステータスレジスタの項目で説明する。
【０１９６】
１９はＣＰＵ１２の主メモリ、ワークエリア等として機能するＲＡＭで、図示しない増設ポートに接続されるオプションＲＡＭによりメモリ容量を拡張することができるように構成されている。なお、ＲＡＭ１９は、出力情報展開領域、環境データ格納領域、ＮＶＲＡＭ等に用いられる。前述したハードディスク（ＨＤ）、ＩＣカード等の外部メモリ１４は、ディスクコントローラ（ＤＫＣ）２０によりアクセスを制御される。外部メモリ１４は、オプションとして接続され、フォントデータ、エミュレーションプログラム、フォームデータ等を記憶する。また、１８は前述した操作パネルで操作のためのスイッチおよびＬＥＤ表示器等が配されている。
【０１９７】
また、前述した外部メモリは１個に限らず、少なくとも１個以上備え、内蔵フォントに加えてオプションフォントカード、言語系の異なるプリンタ制御言語を解釈するプログラムを格納した外部メモリを複数接続できるように構成されていても良い。さらに、図示しないＮＶＲＡＭを有し、操作パネル２００１からのプリンタモード設定情報を記憶するようにしても良い。
【０１９８】
〈インクジェットプリンタの構成〉
図３２は、本実施形態の第２の出力装置の構成を示す外観図であり、たとえばインクジェット記録装置の場合を示す。
図３２において駆動モータ２２１３の正逆回転に連動して駆動力伝達ギヤ２２１１、２２０９を介して回転するリードスクリュー２２０５のガイド溝２２０４に対して係合するキャリッジＨＣはピン（図示しない）を有し、矢印ａ，ｂ方向に往復移動される。このキャリッジＨＣにはインクカートリッジＩＪＣが搭載されている。
【０１９９】
このプリンタ用のＩＪＣとして装着可能なものには、カラーインクを具備したカラーインクジェットカートリッジＣＩＪＣと、ブラックインクのみを具備したモノクロインクジェットカートリッジＭＩＪＣが用意されている。２２０２は紙押さえ板であり、キャリッジ移動方向にわたって紙をプラテン２２００に対して押圧する。２２０７、２２０８はフォトカプラでキャリッジのレバー２２０６のこの行きでの存在を確認して、モータ２２１３の回転方向切り替えを行うためのホームポジション検出手段として機能する。
【０２００】
また、本プリンタには自動的に複数枚の紙を給紙可能とするオートシートフィーダが装着されている。現在印字されている、すなわちプラテン上にある紙が排紙されようとする際、オートシートフィーダは次の紙をプリンタの給紙挿入口にガイドする。プリンタは排紙後、給紙挿入口のペーパーセンサにより紙を検出すると、次の紙をプラテンにセットするべく給紙を行う。
【０２０１】
オートシートフィーダーのペーパートレイには紙残量センサが装着されており、シートフィーダーにセットされている紙量が所定の量よりも減少した場合には、センサーが反応する。
【０２０２】
２２１６は記録ヘッドの全面をキャップするキャップ部材２２２２支持する部材、２２１５はこのキャップ内を吸引する吸引手段でキャップ内開口２２２３を介して記録ヘッドの吸引回復を行う。２２１７はクリーニングブレードで部材２２１９により前後方向に移動可能となる。２２１８は本体支持板で上記２２１７、２２１９を支持する。２２１２は吸引回復の吸引を開始するためのレバーであり、キャリッジと係合するカム２２２０の移動に伴って移動し、駆動モーターからの駆動力がクラッチ切り替え等の公知の伝達手段で移動制御される。
【０２０３】
これらのキャッピング、クリーニング、吸引回復はキャリッジがホームポジション側領域に来たときにリードスクリュー２２０５の作用によってそれらの対応位置で所望の処理が行われる様に構成されているが周知のタイミングで所望動作を行うように構成されていればよい。
【０２０４】
図３３は、図３２に示した出力装置の制御構成を説明するためのブロック図である。
図３３において２３００はホストコンピュータの記録信号を入力するインターフェース部、２３０１はＭＰＵ、２３０２は前記ＭＰＵ２３０１が実行する制御プログラムやホスト印刷情報を格納するＲＯＭ、２３０３はＤＲＡＭで各種データ（上記記録信号やヘッドに供給される記録データ等）を保存しておく。
【０２０５】
２３０４は記録ヘッド２３０８に対する出力データの供給制御を行うゲートアレーでインターフェース２３００、ＭＰＵ２３０１、ＤＲＡＭ２３０３間のデータの転送制御も行う。２３１０は前記記録ヘッド２３０８を搬送するためのキャリアモータ、２３０９は記録用紙搬送のための搬送モータ、２３０５は前記記録ヘッドを駆動するヘッドドライバ、２３０７は前記キャリアモータ２３１０を駆動するモータドライバである。
【０２０６】
このように構成された上記記録装置において１３９４インターフェース２３００を介して後述するホストコンピュータより入力情報が入力されると、ゲートアレー２３０４とＭＰＵ２３０１との間で入力情報がプリント用の出力情報に変換される。そしてモータドライバ２３０６、２３０７が駆動されると共にヘッドドライバ２３０５に送られた出力情報に従って記録ヘッドが駆動され印字が実行される。
【０２０７】
なお、プリンタの各種情報は１３９４インターフェース２３００を介して外部機器からアクセスすることが可能である。これら情報には、前述のように本プリンタのＨＣに装着可能なヘッドの内、装着されているヘッドＩＪＣの種類、またオートシートフィーダーの紙残量警告などの情報が含まれる。これら情報のアクセスについては後述のプリンタ側１３９４シリアルバスインターフェースの構成で、コンフィギュレーションＲＯＭならびにステータスレジスタの項目で後述する。
【０２０８】
〈プリンタ側１３９４シリアルバスインターフェース部の構成〉
本実施形態の第１の出力装置であるＬＢＰ、第２の出力装置であるインクジェットプリンタはＩＥＥＥ１３９４シリアルバスを用いて機器間の接続が行われる。各装置におけるこのシリアルバスのインターフェースを行うブロック（以下１３９４Ｉ／Ｆブロック）は、ＬＢＰにおいては図３１中の入力部１８であり、インクジェットプリンタにおいては図３３中のインターフェースブロック２３００である。
【０２０９】
次に、１３９４Ｉ／Ｆブロックの構成について説明する。なお、ＬＢＰ、インクジェットプリンタ共に本ブロックの基本構成は同様である為、本説明は両プリンタに当てはまる。またプリンタ毎の固有な部分については随時説明する。
図３４は１３９４Ｉ／Ｆブロックの基本構成ブロック図である。
【０２１０】
図中２４０２は１３９４シリアルバスを直接ドライブするフィジカルレイヤー制御ＩＣ（ＰＨＹＩＣ）であり、前述の〈ＩＥＥＥ１３９４の技術の概要〉におけるフィジカルレイヤの機能を実現する。主な機能としては、バスイニシャル化とアービトレーション、送信データ符号のエンコード／デコード、ケーブル通電状態の監視ならびに負荷終端用電源の供給（アクティブ接続認識用）、リンクレイヤＩＣとのインターフェースである。
【０２１１】
２４０１はプリンタ本体とのインターフェースを行い、ＰＨＹＩＣのデータ転送をコントロールするリンクレイヤー制御ＩＣ（ＬＩＮＫＩＣ）であり、前述の〈ＩＥＥＥ１３９４の技術の概要〉におけるリンクレイヤの機能を実現する。
【０２１２】
本ＩＣが備える主な機能としてはＰＨＹＩＣを介する送信／受信データを一時格納する送受信ＦＩＦＯ、送信データのパケット化機能、ＰＨＹＩＣが受信データが本ノードアドレス、またはアイソクロナス転送データの場合は割り当てられたチャンネル向けのものであるかの判定機能、またそのデータのエラーチェックを行うレシーバー機能、そしてプリンタ本体とのインターフェースを行う機能がある。
【０２１３】
図中２４０３はコンフィギュレーションＲＯＭであり、各機器固有の識別、通信条件等が格納されている。本ＲＯＭのデータフォーマットはＩＥＥＥ１３９４規格で定められたフォーマットに準じているが、機器固有のデータはＬＢＰ、インクジェットプリンタそれぞれに固有のものが用意されている。図３５に本実施形態のＬＢＰのコンフィギュレーションＲＯＭの規納データ２５０１と、本実施形態のインクジェットプリンタのコンフィギュレーションＲＯＭの規納データ２５０２を示す。
【０２１４】
〈ＩＥＥＥ１３９４の技術の概要〉で説明したように、１３９４シリアルバスのアドレス設定のうち、最後の２８ビットはシリアルバスに接続される他のデバイスからアクセス可能な、各機器の固有データの領域として確保されている。図３６はこの２８ビットのアドレス空間を本実施形態のＬＢＰの場合とインクジェットプリンタの場合で表した図である。前述のコンフィギュレーションＲＯＭは図中４００番地から８００番地の領域に配置されている。
【０２１５】
８００番地以降の領域は各プリンタ本体の固有の動作に関連するレジスタが配置されている。これらレジスタは物理的にはそれぞれのプリンタの制御部分（インクジェットプリンタの場合）は図中のゲートアレー、ＬＢＰの場合は図中のＣＰＵの中に配置される。
【０２１６】
両プリンタ共通のレジスタとしては１０２０番地から始まる４つのレジスタがある。
ｃｈａｎｎｅｌレジスタはそれぞれのプリンターホスト間でアイソクロナスデータ転送を行う際にアロケートされたチャネル番号を格納するレジスタ、Ｐ＿ｓｔａｔｕｓレジスタはプリンタの基本動作ステータスが検知可能なレジスタ、ｐｒｉｎｔ＿ｌｏｇｉｎレジスタはホストによりそれぞれのプリンタに対してログインし、本プリンタのリソースを確保するためにアクセスする際、ログインビットをセットするためのレジスタ、そしてｐｒｉｎｔ＿ｓｔａｒｔレジスタはプリントデータの転送開始・終了に際し、ホストがビットセットするレジスタである。
【０２１７】
本実施形態のインクジェットプリンタ、ＬＢＰの場合、アドレス１０００番地以降にプリンタの動作状態がモニタ可能であるステータスレジスタ群、または制御可能であるコントロールレジスタ群が配置されている。図中にはこれらレジスタ群の一部を表示している。
【０２１８】
本実施形態のインクジェットプリンタの場合、例えばアドレス１００２番地のｈｅａｄ＿ＩＤレジスタではプリンタのヘッドとして装着されている記録ヘッドの種類に関する情報が格納されている（本例ではカラーヘッドＣＩＪＣの場合は１、モノクロヘッドの場合は０となる）。また、１００３番地には現在のプリンタ動作ステータスが表示されるが、本レジスタのビット０（Ｐ＿ｌｏｗ）はオートシートフィーダーにセットされている紙量の残量検出センサの値が表示される。オートシートフィーダの紙残量があらかじめ設定された量より低くなった場合はこの値が１にセットされる。
【０２１９】
本実施形態のＬＢＰの場合、例えばアドレス１０１０番地には現在の用紙カセット１２２８のステータスが表示されるが、本レジスタのビット０（Ｔｒａｙ＿ｌｏｗ）は用紙カセットにセットされている紙量の残量検出センサの値が表示される。この紙残量があらかじめ設定された量より低くなった場合はこの値が１にセットされる。
【０２２０】
以降、プリンタの印字処理についてフローチャートに従って詳細に説明する。図３７は印字処理を示したフローチャートで、ステップＳ４００１で初期化を行う。初期化は印字に必要なフラグレジスタ、１３９４インターフェースの初期化、プリンタの初期化処理を行う。
【０２２１】
次に、ステップＳ４００２へ進み、印字の開始を示すフラグレジスタｐｒｉｎｔ．ｓｔａｒｔがオンであるかどうかをチェックする。ｐｒｉｎｔ．ｓｔａｒｔフラグレジスタはホストＰＣから送られる非同期コマンドパケットでオン、オフされ印字イメージデータを受信できる状態であるかどうかを示す。
【０２２２】
ｐｒｉｎｔ．ｓｔａｒｔがオンであればステップＳ４００３へ進み、ＩＳＯデータであるかどうかを判定する。この判定の結果、ＩＳＯデータであればステップＳ４００４は進み、ＩＳＯデータ処理を行う。ＩＳＯデータ処理（ＩＳＯパケット処理）は、ホストＰＣから送られてくるイメージデータをアイソクロナスパケットデータとして１３９４インターフェースを介して受け取る処理で、図４１で詳細に説明する。
【０２２３】
一方、ステップＳ４００３の判定の結果がＩＳＯデータでない場合には、ステップＳ４００５へ進み、ＡＳＹＮＣデータ処理を行う。ＡＳＹＮＣデータ処理は、ホストＰＣから送られてくるイメージデータをアシクロナスパケットデータとして１３９４インターフェースから受け取る処理であり、図４３で詳細に説明する。
【０２２４】
ステップＳ４００２でｐｒｉｎｔ．ｓｔａｒｔがオンでなければステップＳ４００６へ進み、非同期パケット処理（ＡＳＹＮＣパケット処理）を行う。非同期パケット処理は、ホストＰＣから送られるコマンドのためのパケットデータでプリンタ内の情報設定や１３９４インタフェースの設定を行ったり、印字の開始、終了を指示する処理であり、詳細は図３８で説明する。
【０２２５】
図３８は、ＡＳＹＮＣパケット処理を示したフローチャートで、ホストＰＣからの情報の設定、印字の開始終了の指示を行う書き込み（ｗｒｉｔｅトランザクション）処理、プリンタの設定情報をホストが読み込む（ｒｅａｄトランザクション）処理、ホストＰＣからのデータの交換を行うｌｏｃｋトタンザクションを行う。まずステップＳ４０１１でＴＲ＿ＤＡＴＡ．ｉｎｄがセットされたかどうかをチェックする。
【０２２６】
ＴＲ＿ＤＡＴＡ．ｉｎｄはトランザクションレイアでトランザクションレイアに非同期パケット受け取られたことを示している。ステップＳ４０１１で非同期パケットが無ければ、ステップＳ４０１９へ進み、戻りとなる。この場合非同期パケットが無かったためになにも行わなかったことを示している。ステップＳ４０１１で非同期パケットがあればステップＳ４０１２へ進み、非同期パケットをトランザクションレイアから受け取る。パケット一般形式は図２４で示される。
【０２２７】
次に、ステップＳ４０１３へ進み、パケットがｗｒｉｔｅトランザクションであるかどうかをチェックする。パケットがどのトランザクションであるかはパケット内のｔｃｏｄｅにセットされる。図２４、図２５に示す。ｗｒｉｔｅトランザクションであるかどうかは、このｔｃｏｄｅにセットされた値で判定され、ｗｒｉｔｅトランザクションの指示であればステップＳ４０１４へ進み、ｗｒｉｔｅトランザクション処理を行う。ｗｒｉｔｅトランザクション処理はプリンタのユニット空間に情報を書き込む処理で、図３９で詳細に説明する。
【０２２８】
次に、戻りとなる。ステップＳ４０１３でｗｒｉｔｅトランザクションでなければステップＳ４０１５へ進み、ｒｅａｄトランザクションかどうかをチェックする。このチェックも非同期パケット内のｔｃｏｄｅの値で行われる。ｒｅａｄトランザクションであればステップＳ４０１６へ進み、ｒｅａｄトランザクションの処理を行う。
【０２２９】
ｒｅａｄトランザクション処理は、プリンタのコンフィグレーションＲＯＭ、ユニット空間に設定された値をアドレスとして指定して、ホストＰＣが読み込むための処理で、ホストＰＣから指定されたアドレスのデータを応答パケットとしてホストへ返送する。図４０でｒｅａｄトランザクションについて説明する。次に、戻りとなる。
【０２３０】
一方、ステップＳ４０１５でｒｅａｄトランザクションでなければ、ステップＳ４０１７へ進み、ｌｏｃｋトランザクションかどうかをチェックする。このチェックも非同期パケット内のｔｃｏｄｅの値で行われる。また、ｌｏｃｋトランザクションであればステップＳ４０１８へ進み、ｌｏｃｋトランザクションの処理を行う。
【０２３１】
ｌｏｃｋトランザクションは、ホストＰＣから書き込むデータと元のデータとを受け取り、元データの値が正しければ書き込みデータとの交換、設定を行う処理である。次に、戻りとなる。
【０２３２】
図３９はｗｒｉｔｅトランザクション処理を示したフローチャートでプリンタのユニット空間への書き込み処理を表す。ステップＳ４０２１で非同期パケットのｄｅｓｔｉｎａｔｉｏｎ  ｏｆｆｓｅｔがｐｒｉｎｔ．ｌｏｇｉｎを示しているかどうかをチェックする。
【０２３３】
非同期パケットは図２２に示されｄｅｓｔｉｎａｔｉｏｎ  ｏｆｆｓｅｔにはアドレスがセットされる。このアドレスがプリンタのユニット空間の特定のアドレスを示しており、このアドレスによりホストＰＣからの指定内容を知ることができる。ｐｒｉｎｔ．ｌｏｇｉｎはホストＰＣがプリンタに対して印字を行う際にまず初めの処理として行われあるホストＰＣが特定のプリンタを使用するための宣言となる。
【０２３４】
正しく宣言されたプリンタは以降宣言したホストのコマンドに対してのみ応答する。これはプリンタが複数のホストから同時に指示を受けないようにするためである。ステップＳ４０２１でｄｅｓｔｉｎａｔｉｏｎ  ｏｆｆｓｅｔがｐｒｉｎｔ．ｌｏｇｉｎを示していればステップＳ４０２２へ進み、すでにｐｒｉｎｔ．ｌｏｇｉｎがオンであるかどうかをチェックする。すでにｌｏｇｉｎされている場合このパケットは無効であるためステップＳ４０２３へ進み、ｉｎｖａｉｌｄを設定する。
【０２３５】
次に、ステップＳ４０２１４へ進み、ｉｎｖａｉｌｄの認識パケットを送信し、戻りとなる。ステップＳ４０２２でｐｒｉｎｔ．ｌｏｇｉｎがオンでなければ、ステップＳ４０２４へ進み、ｌｏｇｉｎ＿ＩＤをセットする。ｌｏｇｉｎ＿ＩＤは非同期パケット図２２のｄｅｓｔｉｎａｔｉｏｎ＿ＩＤで示されるホストのＩＤノード番号である。以降の非同期パケット処理ではｌｏｇｉｎ＿ＩＤと等しいＩＤのホストＰＣのパケットのみを処理する。
【０２３６】
次に、ステップＳ４０２５へ進み、ｐｒｉｎｔ．ｌｏｇｉｎをオンとする。正しくｌｏｇｉｎできたのでステップＳ４０２６へ進み、ｖａｉｌｄを設定する。次に、ステップＳ４０２１４へ進み、ｖａｉｌｄの認識パケットを送信し、戻りとなる。ステップＳ４０２１でｄｅｓｔｉｎａｔｉｏｎ  ｏｆｆｓｅｔがｐｒｉｎｔ．ｌｏｇｉｎでない場合、ステップＳ４０２７へ進み、ｐｒｉｎｔ．ｌｏｇｉｎがオンであるかどうかをチェックする。ｐｒｉｎｔ．ｌｏｇｉｎがオンでない場合ｌｏｇｉｎしていないのにｌｏｇｉｎ以外のパケットが送られてきたことになるので、ステップＳ４０２９へ進み、ｉｎｖａｉｌｄを設定する。
【０２３７】
次に、ステップＳ４０２１４へ進み、ｉｎｖａｉｌｄの認識パケットを送信し、戻りとなる。ステップＳ４０２７でｐｒｉｎｔ．ｌｏｇｉｎがオンならばステップＳ４０２８へ進み、パケット図２２のｓｏｕｒｃｅ＿ＩＤとｌｏｇｉｎ＿ＩＤが等しいかをチェックする。等しくない場合ｌｏｇｉｎしたホスト以外からのパケットであるため無効となりステップＳ４０２９へ進み、ｉｎｖａｉｌｄを設定する。
【０２３８】
次に、ステップＳ４０２１４へ進み、ｉｎｖａｉｌｄの認識パケットを送信し、戻りとなる。ステップＳ４０２８でｓｏｕｒｃｅ＿ＩＤとｌｏｇｉｎ＿ＩＤが等しい場合、ステップＳ４０２１０へ進み、ｄｅｓｔｉｎａｔｉｏｎ  ｏｆｆｓｅｔがｃｈａｎｎｅｌを示しているかどうかをチェックする。ｃｈａｎｎｅｌはアイソクロナスパケットの転送で使用されるｃｈａｎｎｅｌ番号を示している。
【０２３９】
ｃｈａｎｎｅｌであればステップＳ４０２１１へ進み、ｃｈａｎｎｅｌ  ＮＯをセットする。次に、有効なパケットだったのでステップＳ４０２１３へ進み、ｖａｉｌｄを設定する。
【０２４０】
次に、ステップＳ４０２１４へ進み、ｖａｉｌｄの認識パケットを送信し、戻りとなる。ステップＳ４０２１０でｃｈａｎｎｅｌの指定でない場合、ステップＳ４０２１２へ進み、ｄｅｓｔｉｎａｔｉｏｎ  ｏｆｆｓｅｔがｐｒｉｎｔ．ｓｔａｒｔを示しているかどうかをチェックする。ｐｒｉｎｔ．ｓｔａｒｔであればステップＳ４０２１２へ進み、ｐｒｉｎｔ．ｓｔａｒｔをセットする。ステップＳ４０２１３へ進み、ｖａｉｌｄを設定する。次に、ステップＳ４０２１４へ進み、ｖａｉｌｄの認識パケットを送信し、戻りとなる。
【０２４１】
図４０はｒｅａｄトランザクション処理を示したフローチャートでまず、ステップＳ４０３１でｄｅｓｔｉｎａｔｉｏｎ  ｏｆｆｓｅｔで示されるアドレスからｄａｔａ＿ｌｅｎｇｔｈ図２２で示される大きさのデータをｄａｔａ＿ｆｉｅｌｄで示される領域にセットしたパケットを作成する。つぎに作成したパケットを指示されたホストに送信する。
【０２４２】
以上図３８から図４０で非同期パケット（ＡＳＹＮＣパケット）に対する処理を説明した。これらのパケットによりイメージデータを受け取る間での各種設定処理が実行される。
【０２４３】
図４１は同期パケット（ＩＳＯパケット）処理の詳細を示したフローチャートでホストＰＣからイメージのデータをアイソクロナスパケットとして受け取り印字の動作を行う。ＩＳＯパケットの処理はｐｒｉｎｔ．ｓｔａｒｔがセットされた後行われ、まずステップＳ４０４１でｐｒｉｎｔ．ｒｅａｄｙフラグをセットする。ｐｒｉｎｔ．ｒｅａｄｙフラグはアイソクロナスパケットの受け取り準備が完了したことを示し、印字が行えることを示している。
【０２４４】
次に、ステップＳ４０４２へ進み、ＬＫ＿ＤＡＴＡ．ｉｎｄがセットされたかどうかをチェックする。ＬＫ＿ＤＡＴＡ．ｉｎｄは図２７で示されたリンクレイアがアイソクロナスパケットを受け取ったかどうかを示している。アイソクロナスパケットが受け取られるとＬＫ＿ＤＡＴＡ．ｉｎｄがセットされる。ステップＳ４０４２でＬＫ＿ＤＡＴＡ．ｉｎｄがセットされていなければ、ステップＳ４０４３へ進み、非同期パケットを受けているかどうかをチェックする。
【０２４５】
このチェックはＴＲ＿ＤＡＴＡ．ｉｎｄで行われ、同期パケット処理中の非同期パケットの受け取りは行わないため、ＴＲ＿ＤＡＴＡ．ｉｎｄがオンであればステップＳ４０４４へ進み、ｉｎｖａｉｌｄを設定する。次に、ステップＳ４０４５へ進み、ｉｎｖａｉｌｄの認識パケットを送信する。次に、ステップＳ４０４６へ進み、印字データの作成処理を行う。
【０２４６】
印字データの作成処理はインクエジェットプリンタであれば１ラインに印字するイメージデータをヘッドの形式に合わせて展開する。ＬＢＰのようなページプリンタでは１ページ分の印字データをページメモリに展開する。次に、ステップＳ４０４７へ進み、ｐａｃｋｅｔ．ｌａｓｔがオンかどうかをチェックする。ｐａｃｋｅｔ．ｌａｓｔホストとＰＣから送られてくるＩＳＯパケットの最終パケットであるかどうかを示したフラグで、ｐａｃｋｅｔ．ｌａｓｔがオンでなければステップＳ４０４２へ戻り繰り返しとなる。
【０２４７】
ステップＳ４０４８でｐａｃｋｅｔ．ｌａｓｔがオンならばステップＳ４０４８へ進み、ｐｒｉｎｔ．ｒｅａｄｙフラグをリセットし戻りとなる。ステップＳ４０４２でＬＫ＿ＤＡＴＡ．ｉｎｄがセットされていなければステップＳ４０４１０へ進み、ＩＳＯパケットを取得する。
【０２４８】
アイソクロナスパケットは図２４に示される。ステップＳ４０４１０で受け取ったＩＳＯパケットのイメージデータ部分ｄａｔａ＿ｆｉｌｅｄ図２４を一時的蓄えるバッファにセットする。ｄａｔａ＿ｆｉｌｅｄに格納されているデータが印字のイメジデータになる。次に、ステップＳ４０４１２へ進み、最終のＩＳＯパケットであるかどうかをチェックする。この判定はアイソクロナスパケット図２４のｓｙにセットされた値で行われ、判定することができる。
【０２４９】
ホストＰＣは最終のＩＳＯパケットには他のパケットとは異なる値をｓｙに設定する。ステップＳ４０４１２で最終パケットでなければステップＳ４０４２へ戻り、繰り返しとなる。ステップＳ４０４１２で最終パケットであればステップＳ４０４１３へ進み、ｐａｃｋｅ．ｌａｓｔをオンとしステップＳ４０４２へ戻り、繰り返しとなる。
【０２５０】
図４２に印字データの作成処理のフローチャートを示す。まずステップＳ４０５１でＬＫ＿ＤＡＴＡ．ｉｎｄがオンかどうかをチェックする。オンであればＩＳＯパケットがあるので印字データ作成処理を中断して戻りとなる。ステップＳ４０５１でＬＫ＿ＤＡＴＡ．ｉｎｄがオンでなければ、ステップＳ４０５３へ進み、ＴＲ＿ＤＡＴＡ．ｉｎｄがオンかどうかをチェックする。オンであればＡＳＹＮＣパケットがあるので印字データ作成処理を中断して戻りとなる。
【０２５１】
ステップＳ４０５３でＴＲ＿ＤＡＴＡ．ｉｎｄがオンでなければステップＳ４０５４へ進み、バッファ内にイメージデータがあるかどうかをチェックする。データがなければ戻りとなる。ステップＳ４０５４でデータがあれば、ステップＳ４０５５へ進み、バッファからデータを取り出す。バッファから取り出されたデータはイメージのデータとラインフィードなどの各種データから厚生される。ステップＳ４０５６でコマンドかどうかを判定し、コマンドであればステップＳ４０５７へ進み、各種コマンドの処理を実行する。
【０２５２】
次に、ステップＳ４０５１へ戻り繰り返しとなる。ステップＳ４０５６でコマンド以外の場合ステップＳ４０５８へ進み、イメージデータの処理を行う。イメージデータの処理で印字できるデータへの加工が行われる。次に、ステップＳ４０５１へ進み、繰り返しとなる。
【０２５３】
図４３は非同期データ処理（ＡＳＹＮＣデータ）処理の詳細を示したフローチャートであり、ホストＰＣからイメージのデータをアシンクロナスパケットとして受け取り印字の動作を行う。
【０２５４】
ＡＳＹＮＣデータの処理は、ｐｒｉｎｔ．ｓｔａｒｔがセットされた後は、まず、ステップＳ４０６１でｐｒｉｎｔ．ｒｅａｄｙフラグをセットする。前記ｐｒｉｎｔ．ｒｅａｄｙフラグは、アシンクロナスデータの受け取り準備が完了したことを示し、印字が行えることを示している。
【０２５５】
次に、ステップＳ４０６２へ進み、ＴＲ＿ＤＡＴＡ．ｉｎｄがセットされたかどうかをチェックする。ＴＲ＿ＤＡＴＡ．ｉｎｄは、図２７で示されたトランザクションレイヤがアシンクロナスパケットを受け取ったかどうかを示している。アシンクロナスパケットを受け取られると、ＴＲ＿ＤＡＴＡ．ｉｎｄがセットされる。
【０２５６】
ステップＳ４０６２でＴＲ＿ＤＡＴＡ．ｉｎｄがセットされていなければ、ステップＳ４０６３へ進み、印字データの作成処理を行う。印字データの作成処理は、インクジェットプリンタであれば、１ラインに印字するイメージデータをヘッドの形式に合わせて展開する。また、ＬＢＰのようなページプリンタであれば、１ページ分の印字データをページメモリに展開する。
【０２５７】
次に、ステップＳ４０６４へ進み、ｐａｃｋｅｔ．ｌａｓｔがオンかどうかをチェックする。ｐａｃｋｅｔ．ｌａｓｔは、ホストＰＣから送られてくるＡＳＹＮＣパケットの最終パケットであるかどうかを示したフラグで、ｐａｃｋｅｔ．ｌａｓｔがオンでなければ、ステップＳ４０６２に戻り繰り返しとなる。
【０２５８】
ステップＳ４０６４のチェックでｐａｃｋｅｔ．ｌａｓｔがオンならば、ステップＳ４０６５に進み、ｐｒｉｎｔ．ｒｅａｄｙフラグをリセットして戻りとなる。
【０２５９】
また、ステップＳ４０６２でＴＲ＿ＤＡＴＡ．ｉｎｄがセットされていなければ、ステップＳ４０６６へ進み、ＡＳＹＮＣパケットを取得する。アシンクロナスパケットは、図２２に示される。
【０２６０】
次に、ステップＳ４０６７へ進み、ｖａｌｉｄの認識パケットを送信する。ステップＳ４０６８で受け取ったＡＳＹＮＣパケットのイメージデータ部分ｄａｔａ＿ｆｉｌｅｄ（図２２）を一時的に蓄えるバッファにセットする。ｄａｔａ＿ｆｉｌｅｄに格納されているデータ印字のイメージデータになる。
【０２６１】
次に、ステップＳ４０６９へ進み、最終のＡＳＹＮＣパケットであるかどうかをチェックする。ステップＳ４０６９のチェックの結果、最終パケットでなければ、ステップＳ４０６２へ戻り、繰り返しとなる。また、ステップＳ４０６９のチェックの結果が最終パケットであればステップＳ４０７０へ進み、ｐａｃｋｅｔ．ｌａｓｔをオンとしてステップＳ４０６２へ戻り、繰り返しとなる。
【０２６２】
以上、図４１、図４２及び図４３の処理によりホストＰＣから送られてくるＩＳＯパケット、ＡＳＹＮＣパケットを処理しイメージデータと各種コマンドの処理を行って印字を実行する。
【０２６３】
（本発明の他の実施形態）
本発明は複数の機器（例えば、ホストコンピュータ、インタフェース機器、リーダ、プリンタ等）から構成されるシステムに適用しても１つの機器からなる装置に適用しても良い。
【０２６４】
また、前述した実施形態の機能を実現するように各種のデバイスを動作させるように、前記各種デバイスと接続された装置あるいはシステム内のコンピュータに対し、前記実施形態の機能を実現するためのソフトウェアのプログラムコードを供給し、そのシステムあるいは装置のコンピュータ（ＣＰＵあるいはＭＰＵ）に格納されたプログラムに従って前記各種デバイスを動作させることによって実施したものも、本発明の範疇に含まれる。
【０２６５】
また、この場合、前記ソフトウェアのプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコード自体、およびそのプログラムコードをコンピュータに供給するための手段、例えばかかるプログラムコードを格納した記憶媒体は本発明を構成する。かかるプログラムコードを記憶する記憶媒体としては、例えばフロッピーディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、磁気テープ、不揮発性のメモリカード、ＲＯＭ等を用いることができる。
【０２６６】
また、コンピュータが供給されたプログラムコードを実行することにより、前述の実施形態の機能が実現されるだけでなく、そのプログラムコードがコンピュータにおいて稼働しているＯＳ（オペレーティングシステム）あるいは他のアプリケーションソフト等の共同して前述の実施形態の機能が実現される場合にもかかるプログラムコードは本発明の実施形態に含まれることは言うまでもない。
【０２６７】
さらに、供給されたプログラムコードがコンピュータの機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに格納された後、そのプログラムコードの指示に基づいてその機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合にも本発明に含まれることは言うまでもない。
【０２６８】
本発明は、サイクルマスタの判定方法には限定されるものではない。また、本発明は１３９４と呼ばれるインターフェース以外のインターフェース、例えば、ＵＳＢと呼ばれるインターフェースでも適用できる。また、同期転送を行う場合に、同期転送のためのパケットを一定時間間隔で転送するインターフェースであれば、全て本発明を適用することができる。
【０２６９】
【発明の効果】
本発明は前述したように、本発明によれば、シリアルバス上にサイクルマスタとなるノードが存在する場合には同期転送でデータ転送を行い、また、サイクルマスタとなるノードが存在しない場合には非同期転送でデータ転送を行うようにすることができる。これにより、サイクルマスタを内蔵しない機器同士が接続されてもデータ転送を行うことができるので、サイクルマスタを内蔵しない機器同士が接続されてしまう場合に生じる不都合を考慮することなく、サイクルマスタ機能を省略することができる。したがって、例えば、プリンタにサイクルマスタ機能を内蔵しないようにすることで、プリンタのコストを低く押さえることが可能となる。
【図面の簡単な説明】
【図１】本発明の実施形態を示し、機器接続の構成を示した図である。
【図２】本発明の実施形態を示し、ネットワークの構成を示した図である。
【図３】本発明の実施形態を示し、１３９４シリアルバスの構成要素を示した図である。
【図４】本発明の実施形態を示し、１３９４シリアルバスのアドレス空間を示した図である。
【図５】本発明の実施形態を示し、１３９４シリアルバス・ケーブルの断面を示した図である。
【図６】本発明の実施形態を示し、ＤＳ−Ｌ  ｉｎｋ符号か方式を示した図である。
【図７】本発明の実施形態を示し、バスリセットからノードＩＤ決定までのシーケンスを示した図である。
【図８】本発明の実施形態を示し、バスリセットからノードＩＤ決定までのシーケンスを示した図である。
【図９】本発明の実施形態を示し、バスリセットからノードＩＤ決定までのシーケンスを示した図である。
【図１０】本発明の実施形態を示し、ネットワークの動作を示した図である。
【図１１】本発明の実施形態を示し、ＣＳＲアーキテクチャの機能を示した図である。
【図１２】本発明の実施形態を示し、シリアルバスに関するレジスタを示した図である。
【図１３】本発明の実施形態を示し、シリアルバスのノード資源に関するレジスタを示した図である。
【図１４】本発明の実施形態を示し、シリアルバスのＣｏｎｆｉｇｕｒａｔｉｏｎ  Ｒｏｍの最小形式を示した図である。
【図１５】本発明の実施形態を示し、シリアルバスのＣｏｎｆｉｇｕｒａｔｉｏｎ  Ｒｏｍの一般形式を示した図である。
【図１６】本発明の実施形態を示し、シリアルバスのバス使用要求を示した図である。
【図１７】本発明の実施形態を示し、シリアルバスのバス使用許可を示した図である。
【図１８】本発明の実施形態を示し、シリアルバスのアービトレーションの流れを示したフローチャートである。
【図１９】本発明の実施形態を示し、シリアルバスのトランザクションレイアのサービスを示した図である。
【図２０】本発明の実施形態を示し、シリアルバスのリンクレイアのサービスを示した図である。
【図２１】本発明の実施形態を示し、アシンクロナス転送の遷移状態を示した図である。
【図２２】本発明の実施形態を示し、アシンクロナス転送のパケットフォーマットを示した図である。
【図２３】本発明の実施形態を示し、アイソクロナス転送の遷移状態を示した図である。
【図２４】本発明の実施形態を示し、アイソクロナス転送のパケットフォーマットを示した図である。
【図２５】本発明の実施形態を示し、アイソクロナス転送のパケットフォーマットのフィールドの詳細を示した図である。
【図２６】本発明の実施形態を示し、アシンクロナス転送、アイソクロナス転送が混在した場合の遷移状態を示した図である。
【図２７】本発明の実施形態を示し、ＩＥＥＥ１３９４のプロトコルアーキテクチャを示した図である。
【図２８】本発明の実施形態を示し、ホスト側での印字シーケンスを示すフローチャートである。
【図２９】本発明の実施形態を示し、ホスト側での印字シーケンスを示すフローチャートである。
【図３０】本発明の実施形態を示し、出力装置ＬＢＰの構成を示した図である。
【図３１】本発明の実施形態を示し、出力装置ＬＢＰの構成を示したブロック図である。
【図３２】本発明の実施形態を示し、インクジェット出力装置の構成を示した図である。
【図３３】本発明の実施形態を示し、インクジェット出力装置の構成を示したブロック図である。
【図３４】本発明の実施形態を示し、１３９４Ｉ／Ｆの基  本構成を示したブロック図である。
【図３５】本発明の実施形態を示し、Ｃｏｎｆｉｇｕｒａｔｉｏｎ  Ｒｏｍ格納データの構成を示した図である。
【図３６】本発明の実施形態を示し、Ｃｏｎｆｉｇｕｒａｔｉｏｎ  Ｒｏｍ格納データの構成を示した図である。
【図３７】本発明の実施形態を示し、プリンタ側での印字処理を示したフローチャートである。
【図３８】本発明の実施形態を示し、ＡＳＹＮＣパケット処理を示したフローチャートである。
【図３９】本発明の実施形態を示し、Ｗｒｉｔｅトランザクション処理を示したフローチャートである。
【図４０】本発明の実施形態を示し、Ｒｅａｄトランザクション処理を示したフローチャートである。
【図４１】本発明の実施形態を示し、ＩＳＯパケット処理を示したフローチャートである。
【図４２】本発明の実施形態を示し、印字データ作成処理を示したフローチャートである。
【図４３】本発明の実施形態を示し、ＡＳＹＮＣデータ処理を示したフローチャートである。
【符号の説明】
１  コンピュータ
２  ビデオカメラ
３  レーザビームプリンタ
４  スキャナ
５  インクジェットプリンタ
６  ケーブル
【図１】
0003927647.tif 000002
【図２】
0003927647.tif 000003
【図３】
0003927647.tif 000004
【図４】
0003927647.tif 000005
【図５】
0003927647.tif 000006
【図６】
0003927647.tif 000007
【図７】
0003927647.tif 000008
【図８】
0003927647.tif 000009
【図９】
0003927647.tif 000010
【図１０】
0003927647.tif 000011
【図１１】
0003927647.tif 000012
【図１２】
0003927647.tif 000013
【図１３】
0003927647.tif 000014
【図１４】
0003927647.tif 000015
【図１５】
0003927647.tif 000016
【図１６】
0003927647.tif 000017
【図１７】
0003927647.tif 000018
【図１８】
0003927647.tif 000019
【図１９】
0003927647.tif 000020
【図２０】
0003927647.tif 000021
【図２１】
0003927647.tif 000022
【図２２】
0003927647.tif 000023
【図２３】
0003927647.tif 000024
【図２４】
0003927647.tif 000025
【図２５】
0003927647.tif 000026
【図２６】
0003927647.tif 000027
【図２７】
0003927647.tif 000028
【図２８】
0003927647.tif 000029
【図２９】
0003927647.tif 000030
【図３０】
0003927647.tif 000031
【図３１】
0003927647.tif 000032
【図３２】
0003927647.tif 000033
【図３３】
0003927647.tif 000034
【図３４】
0003927647.tif 000035
【図３５】
0003927647.tif 000036
【図３６】
0003927647.tif 000037
【図３７】
0003927647.tif 000038
【図３８】
0003927647.tif 000039
【図３９】
0003927647.tif 000040
【図４０】
0003927647.tif 000041
【図４１】
0003927647.tif 000042
【図４２】
0003927647.tif 000043
【図４３】
0003927647.tif 000044