以下、添付の図面を参照して本発明の好適な実施形態を説明する。
以下の実施形態では、カメラ一体型VTRとプリンタとの接続にデジタルインターフェース(DーI/F)を用いた例を説明するが、これに先立ち、本実施形態で採用可能なDーI/Fの代表技術として、IEEE1394を説明する。
《IEEE1394の技術の概要》
民生用デジタルVCRやDVDプレーヤの登場に伴なって、ビデオデータやオーディオデータなどを通信するために、リアルタイムで、かつ高情報量のデータ転送のサポートが必要になっている。こういったビデオデータやオーディオデータをリアルタイムで転送し、パソコン(PC)に取り込んだり、またはその他のデジタル機器に転送を行なうには、必要な転送機能を備えた高速データ転送可能なインタフェースが必要になってくる。そういった観点から開発されたインタフェースが、IEEE1394−1995(HighPerformance Serial Bus、以下1394シリアルバスという)である。
図7は、1394シリアルバスを用いて構成されるネットワーク・システムの構成例を示す図である。このシステムは機器A,B,C,D,E,F,G,Hを備えており、A−B間、A−C間、B−D間、D−E間、C−F間、C−G間、及びC−H間はそれぞれ1394シリアルバスのツイスト・ペア・ケーブルで接続されている。これらの機器A〜Hは、例えばパソコン、デジタルVTR、DVD、デジタルカメラ、ハードディスク、モニタ、チューナー等である。
各機器間の接続方式は、ディジーチェーン方式とノード分岐方式とを混在可能としたものであり、自由度の高い接続が可能である。また、各機器は各自固有のIDを有し、それぞれが認識し合うことによって1394シリアルバスで接続された範囲において、1つのネットワークを構成している。各デジタル機器間をそれぞれ1本の1394シリアルバスケーブルで順次接続するだけで、それぞれの機器が中継の役割を行い、全体として1つのネットワークを構成するものである。また、1394シリアルバスはPlug&Play機能を有し、ケーブルを機器に接続した時点で自動的に機器の認識や接続状況などを認識する機能を有している。
また、図7に示したようなシステムにおいて、ネットワークからある機器が削除されたり、または新たに追加されたときなどには、自動的にバスリセットを行い、それまでのネットワーク構成をリセットしてから、新たなネットワークの再構築を行なう。この機能によって、その時々のネットワークの構成を常時設定、認識することができる。
またデータ転送速度は、100/200/400Mbpsを備えており、上位の転送速度を持つ機器が下位の転送速度をサポートし、互換をとるようになっている。データ転送モードとしては、コントロール信号などの非同期データ(Asynchronousデータ:以下Asyncデータという)を転送するAsynchronous転送モードとリアルタイムなビデオデータやオーディオデータ等の同期データ(Isochronousデータ:以下Isoデータという)を転送するIsochronous転送モードがある。このAsyncデータとIsoデータは、各サイクル(通常1サイクル125μs)の中において、サイクル開始を示すサイクル・スタート・パケット(CSP)を転送した後、Isoデータの転送をAsyncデータより優先しつつサイクル内で混在して転送される。
図8は1394シリアルバスの構成要素を示す図である。1394シリアルバスは全体としてレイヤ(階層)構造で構成されている。図8に示したように、1394シリアルバスのケーブルとコネクタが接続されるコネクタポートがあり、その上にハードウェアとしてフィジカル・レイヤとリンク・レイヤを位置づけしている。
ハードウェア部は実質的なインターフェイスチップの部分であり、そのうちフィジカル・レイヤは符号化やコネクタ関連の制御等を行い、リンク・レイヤはパケット転送やサイクルタイムの制御等を行なう。
ファームウェア部のトランザクション・レイヤは、転送(トランザクション)すべきデータの管理を行ない、Read、Write、Lockの命令を出す。シリアルバスマネージメントは、接続されている各機器の接続状況やIDの管理を行ない、ネットワークの構成を管理する部分である。以上のハードウェア及びファームウェアまでが実質上の1394シリアルバスの構成である。
またソフトウェア部のアプリケーション・レイヤは、使用するアプリケーションソフトによって異なり、インタフェース上にのせるデータを規定する部分であり、プリンタプロトコルやAVCプロトコルなどが規定されている。以上が1394シリアルバスの構成である。
図9は、1394シリアルバスにおけるアドレス空間を示す図である。1394シリアルバスに接続された各機器(ノード)には必ず各ノード固有の64ビットアドレスを持たせておく。そしてこのアドレスをROMに格納しておくことで、自分や相手のノードアドレスを常時認識できるとともに、相手を指定した通信も行なえる。1394シリアルバスのアドレッシングは、IEEE1212規格に準じた方式であり、アドレス設定は、最初の10bitがバスの番号の指定用に、次の6bitがノードID番号の指定用に使われる。そして、残りの48bitが機器に与えられたアドレス幅になり、それぞれ固有のアドレス空間として使用できる。なお、48bit中の後半の28bitは固有データの領域として、各機器の識別や使用条件の指定の情報などを格納する。
以上が1394シリアルバスの技術の概要である。次に、1394シリアルバスの特徴といえる技術の部分を、より詳細に説明することにする。
《1394シリアルバスの電気的仕様》
図10は1394シリアルバス・ケーブルの断面図である。1394シリアルバスでは接続ケーブル内に6ピン、即ち2組のツイストペア信号線の他に、電源ラインを設けている。これによって、電源を持たない機器や、故障により電圧低下した機器等にも電力の供給が可能になっている。なお、電源線内を流れる電源の電圧は8〜40V、電流は最大電流DC1.5Aと規定されている。なお、DVケーブルと呼ばれる規格では電源を省いた4ピンで構成されている。
《DS−Link符号化》
図11は、1394シリアルバスで採用されている、データ転送フォーマットのDS−Link符号化方式を説明するための図である。1394シリアルバスでは、DS−Link(Data/Strobe Link)符号化方式が採用されている。このDS−Link符号化方式は、高速なシリアルデータ通信に適しており、その構成は、2本の信号線を必要とする。より対線のうち1本に主となるデータを送り、他方のより対線にはストローブ信号を送る構成になっている。受信側では、この通信されるデータと、ストローブとの排他的論理和をとることによってクロックを再現する。このDS−Link符号化方式を用いるメリットとして、8/10B変換に比べて転送効率が高いこと、PLL回路が不要となるのでコントローラLSIの回路規模を小さくできること、更には、転送すべきデータが無いときにアイドル状態であることを示す情報を送る必要が無いので、各機器のトランシーバ回路をスリープ状態にすることができることによって、消費電力の低減が図れる、などが挙げられる。
《バスリセットのシーケンス》
1394シリアルバスでは、接続されている各機器(ノード)にはノードIDが与えられ、ネットワーク構成として認識されている。このネットワーク構成に変化があったとき、例えばノードの挿抜や電源のON/OFFなどによるノード数の増減などによって変化が生じて、新たなネットワーク構成を認識する必要があるとき、変化を検知した各ノードはバス上にバスリセット信号を送信して、新たなネットワーク構成を認識するモードに入る。このときの変化の検知方法は、1394ポート基板上でのバイアス電圧の変化を検知することによって行われる。
あるノードからバスリセット信号が伝達されると、各ノードのフィジカルレイヤはこのバスリセット信号を受けると同時にリンクレイヤにバスリセットの発生を伝達し、かつ他のノードにバスリセット信号を伝達する。最終的にすべてのノードがバスリセット信号を検知した後、バスリセットが起動される。バスリセットは、先に述べたようなケーブル抜挿や、ネットワーク異常等によるハード検出によって起動されるが、プロトコルからのホスト制御などによってフィジカルレイヤに直接命令を出すことによっても起動される。また、バスリセットが起動するとデータ転送は一時中断され、データ転送は当該バスリセットの処理の間待たされることになる。そして、バスリセットの終了後、新しいネットワーク構成のもとで再開される。以上がバスリセットのシーケンスである。
《ノードID決定のシーケンス》
バスリセットの後、各ノードは新しいネットワーク構成を構築するために、各ノードにIDを与える動作に入る。このときの、バスリセットからノードID決定までの一般的なシーケンスを図19、20、21のフローチャートを用いて説明する。
図19は、バスリセットの発生からノードIDが決定し、データ転送が行えるようになるまでの、一連のバスの作業を示すフローチャートである。まず、ステップS101において、ネットワーク内にバスリセットが発生することを常時監視し、ここでノードの電源ON/OFFなどによってバスリセットが発生するとステップS102に移る。ステップS102では、ネットワークがリセットされた状態から、新たなネットワークの接続状況を知るために、直接接続されている各ノード間において親子関係の宣言がなされる。ステップS103において、すべてのノード間で親子関係が決定されたと判断されると、ステップS104へ進み、一つのルートを決定する。なお、すべてのノード間で親子関係が決定するまでは、ステップS102の親子関係の宣言をおこない、またルートも決定されない。
ステップS104でルートが決定されると、ステップS105において、各ノードにIDを与えるノードIDの設定作業が行われる。所定のノード順序で、ノードIDの設定が行われ、すべてのノードにIDが与えられるまで繰り返し設定作業が行われる(ステップS106)。最終的にすべてのノードにIDを設定し終えると、新しいネットワーク構成がすべてのノードにおいて認識されたことになる。よって、処理はステップS106からステップS107へ進み、ノード間のデータ転送が行える状態となり、データ転送が開始される。
そして、このステップS107の状態になると、再びバスリセットが発生するのを監視するモードに入り、バスリセットが発生したらステップS101からステップS106までの設定作業が繰り返し行われる。
以上が、図19のフローチャートの説明であるが、図19のフローチャートのバスリセットからルート決定までの部分と、ルート決定後からID設定終了までの手順を図20及び図21を参照して更に詳しく説明する。図20は、各ノードにおけるバスリセットからルート決定までの処理を説明するフローチャートである。また、図21は、ルート決定後からID設定終了までの手順を示すフローチャートである。
まず、図20を参照して説明を行う。ステップS201においてバスリセットが発生すると、ネットワーク構成は一旦リセットされ、処理はステップS202へ進む。なお、ステップS201では、バスリセットが発生するのを常に監視している。次に、ステップS202において、リセットされたネットワークの接続状況を再認識する作業の第一段階として、各機器にリーフ(ノード)であることを示すフラグを立てておく。
次に、ステップS203において、各機器が自分の持つポートがいくつ他ノードと接続されているのかを調べる。ステップS204では、ポート数に基づいて親子関係の宣言を始めていくために、未定義(親子関係が決定されてない)ポートの数を調べる。バスリセットの直後はポート数=未定義ポート数であるが、親子関係が決定されていくにしたがって、ステップS204で検知する未定義ポートの数は変化していくものである。
まず、バスリセットの直後、はじめに親子関係の宣言を行えるのはリーフに限られている。リーフであるというのはステップS203のポート数の確認で知ることができる。即ち、リーフは、親子関係が未定義の段階で未定義ポート数が1のものである。リーフは、ステップS205において、自分に接続されているノードに対して、「自分は子、相手は親」と宣言し動作を終了する。
ステップS203でポート数が複数ありブランチと認識したノードは、バスリセットの直後はステップS204で未定義ポート数>1ということになるので、ステップS206へ移り、ブランチというフラグが立てられる。そして、ステップS207でリーフからの親子関係宣言で「親」の受付をするために待つ。リーフである他のノードが親子関係の宣言を行い、ステップS207でそれを受けたブランチは、適宜ステップS204の未定義ポート数の確認を行う。ここで、未定義ポート数が1になっていれば残っているポートに接続されているノードに対して、ステップS205の「Child(自分が子)」の宣言をすることが可能になる。2度目以降のステップS204の処理で未定義ポート数を確認しても2以上あるブランチに対しては、再度ステップS207でリーフ又は他のブランチからの「親」の受付をするために待つ。
最終的に、いずれか1つのブランチ、又は例外的にリーフ(子宣言を行えるのにすばやく動作しなかった為)がステップS204の未定義ポート数の確認の結果としてゼロになったら、これにてネットワーク全体の親子関係の宣言が終了したものであり、未定義ポート数がゼロ(すべて親のポートとして決定)になった唯一のノードはステップS208においてルートのフラグが立てられ、ステップS209においてルートとしての認識がなされる。このようにして、図20に示したバスリセットから、ネットワーク内すべてのノード間における親子関係の宣言までが終了する。
つぎに、図21のフローチャートについて説明する。
まず、図20までのシーケンスでリーフ、ブランチ、ルートという各ノードのフラグの情報が設定されているので、これを元にして、ステップS301でそれぞれ分類する。各ノードにIDを与える作業として、最初にIDの設定を行うことができるのはリーフからである。リーフ→ブランチ→ルートの順で若い番号(ノード番号=0〜)からIDの設定がなされていく。
ステップS302において、ネットワーク内に存在するリーフの数N(Nは自然数)を設定する。この後、ステップS303において各リーフがルートに対してIDを与えるように要求する。この要求が複数ある場合には、ルートはステップS304においてアービトレーションを行い、ステップS305において勝ったノード1つにID番号を与え、負けたノードには失敗の結果通知を行う。ステップS306においてID取得が失敗に終わったリーフは、再度ID要求を出し、同様の作業を繰り返す。
IDを取得できたリーフはステップS307においてそのノードのID情報をブロードキャストで全ノードに転送する。1ノードID情報のブロードキャストが終わると、ステップS308において残りのリーフの数Nが1つ減らされる。ここで、ステップS309において、この残りのリーフの数Nが1以上ある場合はステップS303からのID要求の作業を繰り返し行う。そして、最終的にすべてのリーフがID情報をブロードキャストすると、ステップS309においてN=0となり、ブランチのID設定のためにステップS310に移る。
ブランチのID設定もリーフの時と同様に行われる。まず、ステップS310においてネットワーク内に存在するブランチの数M(Mは自然数)を設定する。この後、ステップS311として各ブランチがルートに対して、IDを与えるように要求する。これに対してルートは、ステップS312においてアービトレーションを行い、勝ったブランチから順に、リーフに与え終った番号の次に若い番号から与えていく。ステップS313において、ルートは要求を出したブランチにID情報又は失敗結果を通知する。ステップS314において、ID取得が失敗に終わったブランチは、再度ID要求を出し、同様の作業を繰り返す。
IDを取得できたブランチからステップS315へ進み、そのノードのID情報をブロードキャストで全ノードに転送する。1ノードID情報のブロードキャストが終わると、ステップS316において、残りのブランチの数Mが1つ減らされる。ここで、ステップS317において、この残りのブランチの数Mが1以上ある場合はステップS311からのID要求の作業を繰り返し、最終的にすべてのブランチがID情報をブロードキャストするまで行われる。すべてのブランチがノードIDを取得すると、ステップS317においてM=0となり、ブランチのID取得モードが終了する。
ここまで終了すると、最終的にID情報を取得していないノードはルートのみなので、ステップS318において与えていない番号で最も若い番号を自分のID番号と設定し、ステップS319としてルートのID情報をブロードキャストする。
以上で、図21に示したように、親子関係が決定した後から、すべてのノードのIDが設定されるまでの手順が終了する。
次に、一例として、図12に示した実際のネットワークにおけるバスリセット時のネットワーク構築動作を説明する。
図12は、バスリセット時のネットワーク構築動作を説明するための図である。図12において、ノードB(ルート)の下位にはノードAとノードCが直接接続されており、更にノードCの下位にはノードDが直接接続されており、更にノードDの下位にはノードEとノードFが直接接続された階層構造になっている。このような、階層構造やルートノード、ノードIDを決定する手順を以下で説明する。
バスリセットがされた後、まず各ノードの接続状況を認識するために、各ノードの直接接続されているポート間において、親子関係の宣言がなされる。この親子とは親側が階層構造で上位となり、子側が下位となると言うことができる。
図12ではバスリセットの後、最初に親子関係の宣言を行なったのはノードAである。基本的にノードの1つのポートにのみ接続があるノード(リーフと呼ぶ)から親子関係の宣言を行なうことができる。これは、自分には1ポートの接続のみしかない、ということをまず知ることができるので、これによってネットワークの端であることを認識し、その中で早く動作を行なったノードから親子関係が決定されていく。こうして親子関係の宣言を行なった側(A-B間ではノードA)のポートが子と設定され、相手側(ノードB)のポートが親と設定される。こうして、ノードA−B間では子−親、ノードE−D間で子−親、ノードF−D間で子−親と決定される。
さらに1階層あがって、今度は複数個接続ポートを持つノード(ブランチと呼ぶ)のうち、他ノードからの親子関係の宣言を受けたものから順次、更に上位に親子関係の宣言を行なっていく。図12ではまずノードDがD−E間、D−F間と親子関係が決定した後、ノードCに対する親子関係の宣言を行っており、その結果ノードD−C間で子−親と決定している。
ノードDからの親子関係の宣言を受けたノードCは、もう一つのポートに接続されているノードBに対して親子関係の宣言を行なっている。これによってノードC−B間で子−親と決定している。
このようにして、図12のような階層構造が構成され、最終的に、接続されているすべてのポートにおいて親となったノードBが、ルートノードと決定されることになる。ルートは1つのネットワーク構成中に一つしか存在しないものである。
なお、この図12においてノードBがルートノードと決定されたが、これはノードAから親子関係宣言を受けたノードBが、他のノードに対して親子関係宣言を早いタイミングで行なっていれば、ルートノードは他ノードに移っていたこともあり得る。すなわち、伝達されるタイミングによってはどのノードもルートノードとなる可能性があり、同じネットワーク構成でもルートノードは一定とは限らない。
ルートノードが決定すると、次は各ノードIDを決定するモードに入る。ここではすべてのノードが、決定した自分のノードIDを他のすべてのノードに通知する(ブロードキャスト機能)。自己ID情報は、自分のノード番号、接続されている位置の情報、持っているポートの数、接続のあるポートの数、各ポートの親子関係の情報等を含んでいる。
ノードID番号の割り振りの手順としては、まず1つのポートにのみ接続があるノード(リーフ)から起動することができ、この中から順にノード番号=0、1、2…と割り当てられる。ノードIDを獲得したノードは、ノード番号を含む情報をブロードキャストで各ノードに送信する。これによって、そのID番号は『割り当て済み』であることが認識される。
すべてのリーフが自己ノードIDを取得し終ると、次はブランチへ移りリーフに引き続いたノードID番号が各ノードに割り当てられる。リーフと同様に、ノードID番号が割り当てられたブランチから順次ノードID情報をブロードキャストし、最後にルートノードが自己ID情報をブロードキャストする。すなわち常にルートは最大のノードID番号を所有するものである。
以上のようにして、階層構造全体のノードIDの割り当てが終わり、ネットワーク構成が再構築され、バスの初期化作業が完了する。
《アービトレーション》
1394シリアルバスでは、データ転送に先立って必ずバス使用権のアービトレーション(調停)を行なう。1394シリアルバスは個別に接続された各機器が、転送された信号をそれぞれ中継することによって、ネットワーク内すべての機器に同信号を伝えるように、論理的なバス型ネットワークであるので、パケットの衝突を防ぐ意味でアービトレーションは必要である。これによってある時間には、たった一つのノードのみ転送を行なうことができる。
図13は1394シリアルバスにおけるアービトレーションを説明する図である。特に、図13の(a)はバス使用要求の流れを示し、図13の(b)はバス使用許可の流れを示す。
アービトレーションが始まると、1つもしくは複数のノードが親ノードに向かって、それぞれバス使用権の要求を発する。図13(a)のノードCとノードFがバス使用権の要求を発しているノードである。これを受けた親ノード(図13ではノードA)は更に親ノードに向かって、バス使用権の要求を発する(中継する)。この要求は最終的に調停を行なうルートに届けられる。
バス使用要求を受けたルートノード(ノードB)は、どのノードにバスを使用させるかを決める。この調停作業はルートノードのみが行なえるものであり、調停によって勝ったノードにはバスの使用許可が与えられる。図13の(b)ではノードCに使用許可が与えられ、ノードFの使用要求は拒否されたことを示している。アービトレーションに負けたノードに対してはDP(data prefix)パケットを送り、要求が拒否されたことを知らせる。要求が拒否されたノードのバス使用要求は次回のアービトレーションまで待たされる。
以上のようにして、アービトレーションに勝ってバスの使用許可を得たノードは、以降データの転送を開始できる。ここで、アービトレーションの一連の流れをフローチャート図22を参照して説明する。図22はアービトレーションの処理手順を表すフローチャートである。
ノードがデータ転送を開始できる為には、バスがアイドル状態であることが必要である。先に行われていたデータ転送が終了して、現在バスが空き状態であることを認識するためには、各転送モードで個別に設定されている所定のアイドル時間ギャップ長(例.サブアクション・ギャップ)を経過する事によって、各ノードは自分の転送が開始できると判断する。
ステップS401において、Asyncデータ、Isoデータ等それぞれ転送するデータに応じた所定のギャップ長が得られたか判断する。所定のギャップ長が得られない限り、転送を開始するために必要なバス使用権の要求はできないので、所定のギャップ長が得られるまで待つ。ステップS401で所定のギャップ長が得られたら、ステップS402において転送すべきデータがあるかを判断し、あればステップS403へ進む。
ステップS403では、データ転送をするためにバスを確保するよう、バス使用権の要求をルートに対して発する。このときの、バス使用権の要求を表す信号の伝達は、図13の(a)に示したように、ネットワーク内の各機器を中継しながら、最終的にルートに届けられる。一方、ステップS402で転送するデータがない場合は、そのまま待機する。
次に、ステップS404において、ルートノードはステップS403で発行されたバス使用要求を受信する。そして、ステップS405において、ルートは使用要求を出したノードの数を調べる。ステップS405で使用要求を出したノードの数が1(使用権要求を出したノードが1つ)だったら、そのノードに直後のバス使用許可が与えられることとなる。一方、ステップS405において、ノード数>1(使用要求を出したノードは複数)だったら、ルートはステップS406において使用許可を与えるノードを1つに決定する調停作業を行う。この調停作業は公平なものであり、毎回同じノードばかりが許可を得る様なことはなく、平等に権利を与えていくような構成となっている(フェア・アービトレーション)。
次に、ステップS407において、ステップS406で使用要求を出した複数ノードの中からルートが調停して使用許可を得た1つのノードと、敗れたその他のノードに分ける選択を行う。ここで、調停されて使用許可を得た1つのノード、またはステップS405において使用要求ノード数=1で調停無しに使用許可を得たノードには、ステップS408として、ルートはそのノードに対して許可信号を送る。許可信号を得たノードは、受け取った直後に転送すべきデータ(パケット)を転送開始する。また、ステップS406の調停で敗れて、バス使用が許可されなかったノードには、ステップS409において、ルートから、アービトレーション失敗を示すDP(data prefix)パケットを送られ、これを受け取ったノードは再度転送を行うためのバス使用要求を出すため、ステップS401まで戻り、所定ギャップ長が得られるまで待機する。
以上が1394シリアルバスによるアービトレーションの流れである。
《アシンクロナス(Asynchronous、非同期)転送》
アシンクロナス転送は、非同期転送である。図14はアシンクロナス転送における時間的な遷移状態を示す図である。図14の最初のサブアクション・ギャップは、バスのアイドル状態を示すものである。このアイドル時間が一定値になった時点で、転送を希望するノードはバスが使用できると判断してバス使用要求を発行し、バス獲得のためのアービトレーションが実行される。
アービトレーションでバスの使用許可を得ると、次にデータの転送がパケット形式で実行される。データ転送後、当該データを受信したノードは、転送されたデータに対しての受信結果のack(受信確認用返送コード)をack gapという短いギャップの後、返送して応答するか、応答パケットを送ることによって転送が完了する。ackは4ビットの情報と4ビットのチェックサムからなり、成功か、ビジー状態か、ペンディング状態であるかといった情報を含み、すぐに送信元ノードに返送される。
次に、アシンクロナス転送のパケットフォーマットを説明する。図15はアシンクロナス転送のパケットフォーマットの例を示す図である。
パケットには、データ部及び誤り訂正用のデータCRCの他にヘッダ部がある。ヘッダ部には図15に示したような、目的ノードID、ソースノードID、転送データ長さや各種コードなどが書き込まれ、転送が行なわれる。また、アシンクロナス転送は自己ノードから相手ノードへの1対1の通信である。転送元ノードから転送されたパケットは、ネットワーク中の各ノードに行き渡るが、自分宛てのアドレス以外のものは無視されるので、宛先の1つのノードのみが読込むことになる。以上がアシンクロナス転送の説明である。
《アイソクロナス(Isochronous、同期)転送》
アイソクロナス転送は同期転送である。1394シリアルバスの最大の特徴であるともいえるこのアイソクロナス転送は、特に映像データや音声データといったマルチメディアデータなど、リアルタイムな転送を必要とするデータの転送に適した転送モードである。また、アシンクロナス転送(非同期)が1対1の転送であったのに対し、このアイソクロナス転送はブロードキャスト機能によって、転送元の1つのノードから他のすべてのノードへ一様にデータが転送される。
図16はアイソクロナス転送における、時間的な遷移状態を示す図である。アイソクロナス転送は、バス上一定時間毎に実行される。この時間間隔をアイソクロナスサイクルと呼ぶ。アイソクロナスサイクル時間は、125μsである。この各サイクルの開始時間を示し、各ノードの時間調整を行なう役割を担っているのがサイクル・スタート・パケットである。サイクル・スタート・パケットを送信するのは、サイクル・マスタと呼ばれるノードであり、1つ前のサイクル内のデータ転送終了後、所定のアイドル期間(サブアクションギャップ)を経た後、本サイクルの開始を告げるサイクル・スタート・パケットを送信する。このサイクル・スタート・パケットの送信される時間間隔が125μsとなる。
また、図16にチャネルA、チャネルB、チャネルCと示したように、1サイクル内において複数種のパケットがチャネルIDをそれぞれ与えられることによって、区別して転送できる。これによって同時に複数ノード間でのリアルタイムな転送が可能であり、また受信するノードでは自分が欲しいチャネルIDのデータのみを取り込む。このチャネルIDは送信先のアドレスを表すものではなく、データに対する論理的な番号を与えているに過ぎない。よって、あるパケットの送信は1つの送信元ノードから他のすべてのノードに行き渡る、ブロードキャストで転送されることになる。
アイソクロナス転送のパケット送信に先立って、アシンクロナス転送同様アービトレーションが行われる。しかし、アシンクロナス転送のように1対1の通信ではないので、アイソクロナス転送にはack(受信確認用返信コード)は存在しない。
また、図16に示した iso gap(アイソクロナスギャップ)とは、アイソクロナス転送を行なう前にバスが空き状態であると認識するために必要なアイドル期間を表している。この所定のアイドル期間を経過すると、アイソクロナス転送を行ないたいノードはバスが空いていると判断し、転送前のアービトレーションを行なうことができる。
つぎに、アイソクロナス転送のパケットフォーマットについて説明する。図17はアイソクロナス転送のパケットフォーマットの例を示す図である。
各チャネルに分かれた、各種のパケットにはそれぞれデータ部及び誤り訂正用のデータCRCの他に、ヘッダ部がある。そのヘッダ部には図17に示したような、転送データ長やチャネルNO.、その他各種コード及び誤り訂正用のヘッダCRCなどが書き込まれ、転送が行なわれる。以上がアイソクロナス転送の説明である。
《バス・サイクル》
実際の1394シリアルバス上の転送では、アイソクロナス転送と、アシンクロナス転送は混在できる。図18は、アイソクロナス転送とアシンクロナス転送とが混在した、バス上の転送状態の時間的な遷移の様子を表した図である。
アイソクロナス転送はアシンクロナス転送より優先して実行される。その理由は、サイクル・スタート・パケットの後、アシンクロナス転送を起動するために必要なアイドル期間のギャップ長(サブアクションギャップ)よりも短いギャップ長(アイソクロナスギャップ)で、アイソクロナス転送を起動できるからである。したがって、アシンクロナス転送より、アイソクロナス転送は優先して実行されることとなる。
図18に示した一般的なバスサイクルにおいて、サイクル#mのスタート時にサイクル・スタート・パケットがサイクル・マスタから各ノードに転送される。これによって、各ノードで時刻調整を行ない、所定のアイドル期間(アイソクロナスギャップ)を待ってからアイソクロナス転送を行なうべきノードはアービトレーションを行い、パケット転送に入る。図18ではチャネルeとチャネルsとチャネルkが順にアイソクロナス転送されている。
このアービトレーションからパケット転送までの動作を、与えられているチャネル分繰り返し行なった後、サイクル#mにおけるアイソクロナス転送がすべて終了したら、アシンクロナス転送を行うことができるようになる。
アイドル時間がアシンクロナス転送が可能なサブアクションギャップに達することによって、アシンクロナス転送を行いたいノードはアービトレーションの実行に移れると判断する。ただし、アシンクロナス転送が行える期間は、アイソクロナス転送終了後から、次のサイクル・スタート・パケットを転送すべき時間(cycle synch)までの間に、アシンクロナス転送を起動するためのサブアクションギャップが得られた場合に限っている。
図18のサイクル#mでは3つのチャネル分のアイソクロナス転送と、その後アシンクロナス転送(ackを含む)が2パケット(パケット1、パケット2)転送されている。このアシンクロナスパケット2の後は、サイクルm+1をスタートすべき時間(cycle synch)にいたるので、サイクル#mでの転送はここまでで終わる。
ただし、非同期または同期転送動作中に次のサイクル・スタート・パケットを送信すべき時間(cycle synch)に至ったとしても、無理に中断せず、その転送が終了した後のアイドル期間を待ってから次サイクルのサイクル・スタート・パケットを送信する。すなわち、1つのサイクルが125μs以上続いたときは、その分次サイクルは基準の125μsより短縮されたとする。このようにアイソクロナス・サイクルは125μsを基準に超過、短縮し得るものである。しかし、アイソクロナス転送はリアルタイム転送を維持するために毎サイクル必要であれば必ず実行され、アシンクロナス転送はサイクル時間が短縮されたことによって次以降のサイクルにまわされることもある。こういった遅延情報も含めて、サイクル・マスタによって管理される。
(第1の実施形態)
図1は、インクジェット方式のプリンタと液晶モニタ付カメラ一体型デジタルVTRがIEEE1394シリアルバスを介して接続された状態を示すブロック図である。図中、91は液晶モニタ付カメラ一体型デジタルVTR(以下「デジタルVTR」という)、92はプリンタである。
デジタルVTR91において、93は磁気テープ、94は磁気テープの記録/再生を行うヘッド、95はデジタルVTRの操作指示入力を行う操作部、96はデジタルVTRをマイコン制御するシステムコントローラ、97はヘッド94により記録再生された映像データを記録再生処理する記録再生処理回路、98は映像データを圧縮伸張する圧縮伸張回路、99は表示させる文字等を発生させるためのCG(キャラクタジェネレータ)回路である。100はデジタルVTRに搭載されている液晶モニタ表示部(LCDモニタ)であり、液晶としてはTFT液晶またはSTN液晶が好ましい。120はLCDモニタ100に搭載された液晶パネル、121は蛍光ランプによるバックライトである。また、102は伸張処理回路98からの出力を記憶するフレームメモリ、101は撮影モードと再生モード切り換えるスイッチ、103はデジタルVTRに搭載のIEEE1394シリアルバスI/F部、107はIEEE1394ケーブルである。
プリンタ92において、104はIEEE1394のI/F部、108はプリント画像を形成する画像メモリ、109はプリントの色調整を行う色調整回路、110はプリントの階調処理を行う階調処理回路、111は階調処理回路の出力画像をプリンタヘッド117に印加するヘッドドライバ回路、118は画像が記録される紙、112はプリンタをマイコン制御するシステムコントローラ、113はプリンタヘッドを移動させるモータ駆動回路、116は紙送りのモータを駆動させるモータ駆動回路、114は電源を入れたりキー操作をするためのメインSW、115はプリンタに関する情報を表示する表示装置、119は図示しない紙センサの出力に基づいて紙詰まり等を検知する紙ジャム検出回路である。
なお、ヘッド117における記録ヘッドにおいて、インクを吐出するためのエネルギーを発生するエネルギー発生手段として、ピエゾ素子などの電磁機械変換体を用いたもの、あるいは発熱抵抗体を有する電気熱変換素子によって液体を加熱させるものなどがあるが、この実施形態では、熱エネルギーを利用(膜沸騰現象を利用)して液体を吐出させる方式の記録ヘッドを用いる。
次に、図1のシステムの動作を説明する。パソコンを経由しない、所謂ダイレクトプリントを行うために、まず操作部95によって所定の入力操作を行うことにより、デジタルVTR91を再生モードにする。このとき、システムコントローラ96によりスイッチ101が切り換えられ、磁気テープ93に記録してある映像データを磁気ヘッド94で再生する。このとき、所望の映像の選択は、操作部95から入力された情報に応じて、サーボ回路125によりキャプスタン及びピンチローラのモータが駆動され、磁気テープ93が搬送され、映像データを再生するようにシステムコントローラ96が制御する。再生された映像データは、周知のDV方式であるDCT(離散コサイン変換)、量子化及びVLC(可変長符号化)を用いて圧縮して記録されているので、これを圧縮伸長回路98内の伸張処理回路で伸張処理を行うべく可変長復号処理、逆量子化、逆DCTを行う。伸長された映像データは、D/Aコンバータを経てアナログ信号に変換され、LCDモニタ100に表示される。さらに、CG回路99をシステムコントローラで制御し、文字等を映像データに多重して表示することが可能である。
ここで、再生映像データをプリントする場合は、ID検出回路126によりテープ上に記録されたIDをサーチし、記録再生処理回路97からの映像データの出力を圧縮伸長回路98で復号処理してから一旦フレームメモリ102に蓄えた後、デジタルVTR91のI/F部103に送り、IEEE1394ケーブル107を経由して、プリンタ92のI/F部104にアイソクロナス転送する。プリンタ92に転送された映像データは、画像メモリ108でプリント画像に形成され、インクジェット型プリンタヘッド109が可動しプリントされる。システムコントローラ112は、メモリ108の書き込み/読み出し、プリンタヘッド109の動作、そして紙送りなどを行うヘッドドライバ111の動作などを制御する。
このようにして、デジタルVTR91から再生された映像データは、プリンタ92にIEEE1394ケーブル107を経て伝送され、ヘッドドライバ111等を動作させてダイレクトプリントされる。
また、紙ジャム検出回路116からの紙ジャム検出信号に応じて、システムコントローラ112はI/F部104に警告コマンドをデジタルVTR91側へ送信するように命令する。なお、紙ジャムの検出方法としては、給紙動作を開始してから用紙先端がセンサに到達するまでの時間が規定の時間内におさまっているかをタイマによって検出し、時間を超えている場合にジャム発生と判断する方法が挙げられる。
図2は通信システム内の機器において、データを受信する部分の構成を示すブロック図である。上記の例によれば、受信機器11はプリンタ、送信機器12はデジタルVTRであり、入出力ポート(図示せず)はデータを入力又は出力するための2組のツイストペアケーブルで構成されたIEEE1394ケーブル13で接続されている。
送信機器12から送信されたデータは、IEEE1394ケーブル13を経て受信機器11の受信器14へ入力される。受信器14には、FIFO15からFIFO状態信号dが入力されている。そして、このFIFO状態信号dが“Full”でなければ、受信器14は受信信号cをFIFO15に書き込むことができる。受信器14は、受信信号cのパケットのヘッダからそのパケットが同期型パケットか非同期型パケットかを識別する。そして、受信信号cが非同期型パケットであり、それをFIFO15に書き込むことができれば、送信機器12に対して受信OKを示す“OK Ack(Acknowledge:肯定応答)”を返送し、FIFO状態信号dが“Full”のため、受信した非同期型データをFIFO15に書き込めなかったときは、送信機器12へ“Busy Ack”を返送する。
FIFO15に書き込まれたパケットは、書き込まれた順にセパレータ16により読み出され、パケットのヘッダを基に同期型データaと非同期型データbに分離される。そして、同期型データaはIsochronousデータ処理ブロック17へ、非同期型データbはAsynchronousデータ処理ブロック18へ夫々入力される。プリンタは、このようなデータ処理された同期型/非同期型受信データに応じて、プリント動作を実行する。
次に、デジタルVTRの静止画のサーチについて、説明する。民生用デジタルVTRで規格化されたDVフォーマットでは、静止画を高速サーチするためのPP IDと、静止画記録部分の中から所望の静止画を探し出すためのINDEX IDの2つのID信号を記録している。このようなPP ID及びINDEX IDが記録されたテープをデジタルVTRに装填し、これらのID信号に基づいて実際にサーチを行う場合の動作を図3のフローに従って説明する(なお、本実施形態における静止画サーチ方法をPP MARKサーチと言う)。
図3は静止画サーチの手順を説明するフローチャートである。この図において、まず、ユーザーからサーチ要求が出されたかどうかをチェックし(ステップST1)、サーチ要求が出されたときは、これがPP MARKサーチの要求であるかどうかを調べる。YESのときは、まず、テープを高速走行させてサブコード部にPP IDが記録されている静止画部分を高速で探し出す(ステップST3及び4)。静止画部分を見つけ出したら、テープ速度を落としてPP IDの記録開始点までテープを巻き戻し(ステップST5)、次に、INDEX IDを検出するまでテープを低速で前進させて所望の静止画を探し出す(ステップST6〜ステップST8からなるループを繰り返す)。所望の静止画記録位置に到達したら静止画の再生(1フレーム再生)を実行し、これをFC(Frame Change)信号の値が「1」に変化する静止画記録部分の終端まで行う(ステップST9,ステップST10)。
静止画記録部分の終端に到達したらテープ走行を停止してこの間に画像メモリに記憶された静止画再生出力を反復読出して液晶表示モニタ上に静止画を表示する(ステップST11)。一方、ステップST6〜ステップST8のループを繰り返してもINDEX IDが見つからなかったときには、次の静止画記録部分を探し出すためにステップST3の高速サーチに戻る(ステップST8)。なお、ステップST2の判断結果がNOであった場合は、従来の動画のINDEXサーチ要求であるかどうかを調べ(ステップST12)、これがYESのときには高速でサブコード部をサーチしてINDEX IDが打ち込まれている部分を探し出す(ステップST13及びステップST14)。この部分を探し出したら、更にこの部分にPP IDが打ち込まれているかどうかを調べ(ステップST15)、打ち込まれていなければこの部分が目的とする動画のサーチ部分であると判断して、INDEXIDの記録開始点まで巻き戻してから画像再生動作を開始する(ステップST16)。
ステップST15において、PP IDが打ち込まれていたときには、この部分は静止画サーチ用に指定された部分であって目的とする動画サーチに指定された部分ではないから画像の再生動作は行わない。また、ステップST12においてNOのときは、ユーザーが指示する上記以外のサーチ(例えば、記録年月日等によるサーチ)を実行するフローへ移行する。
次に、実際のプリント動作について説明する。図4A、図4Bは、本実施形態によるプリント動作の流れを示すフローチャートである。まず、デジタルVTRの本体、またはリモコンでプリントの命令を実行する(ステップS1)。次にデジタルVTRを再生することにより、デジタル画像データがパケット化され、送信パケットとしてそのヘッダが識別される(ステップS2)。この結果、Isochronousデータかどうかの判別がなされ(ステップS3)、Isochronousデータであれば、1フレームの画像データをIsochronous転送で、送り先であるプリンタへ転送する(ステップS4)。一方、Isochronousデータでない、例えばコマンドデータは、Asynchronous転送でプリンタへ転送する(ステップS5)。
データを受信したプリンタはプリントを開始する(ステップS6)。プリンタ92は所定枚数プリントを続けるが、紙ジャムが発生した場合(ステップS7)もしくは紙無しが検出された場合(ステップS8)にはユーザへの警告を行うための処理が行なわれることになる。一方、紙ジャムや紙無しが検出されない限り、通常のプリントが行われる。そして、ステップS23において、印刷の終了が検出されると、本処理を終了する。
ステップS7において紙ジャムが検出された場合、パケット化された警告コマンドデータをAsynchronous転送するために、送信パケットヘッダを識別する(ステップS9)。Isochronousデータかどうかの判別がなされ(ステップS10)、送信パケットがIsochronousデータでなければ、警告コマンドデータをデジタルVTR側へAsynchronous転送する(ステップS11)。一方、Isochronousデータだったら、送信パケットがAsynchronousとなるまで待つ(ステップS9〜10を繰り返す)。
次に、デジタルVTR側では、受信した警告コマンドを、デジタルVTRに搭載されているLCDモニタ100に表示させる(ステップS12)。図5AはデジタルVTRにおける警告表示例を示す図である。同図のように、「紙ジャム発生です!」というような警告表示をLCDモニタ100にてユーザに知らせれば、プリンタの状態が送信側でわかり、プリント作業の操作性が向上する。
また、警告表示と合わせてデジタルVTRのテープにマークされたINDEXのサーチを停止する(ステップS13)。これは、プリントしたかった静止画シーンを再度すぐプリントできる状態に保つためである。次にフレームメモリ102の書き替えを停止する(ステップS14)。異常の場合は、データを再送するために、メモリの書き替えはプリント動作が終了するまで行わないようにする。
次に紙ジャムを除去し、紙のセットが完了すれば(ステップS22、S15)、プリンタの駆動機構等をホームポジションに初期化する(ステップS18)。次いで、プリンタ側よりデータの再送要求コマンドをAsynchronous転送し(ステップS19)、フレームメモリに格納されているデータを読み出す(ステップS20)。そして、データを再送し(ステップS21)、プリントを実行する(ステップS1に戻る)。
ステップS22でジャム紙を除去した後に紙の未セットが検出された場合は、ステップS15からステップS16へ進む。ステップS16では、紙の未セットの警告コマンドをAsynchronous転送する。ここで、警告コマンドのAsynchronous転送は、Asynchronous転送期間を待つ必要があるので、上述のステップS9、S10のごとき処理を実行することになる。一方、ステップS8で紙なしを検出した時は、上述の紙ジャム検出時と同様の手順で警告コマンドがAsynchronous転送で送出される。デジタルVTRは、この警告を表示する。プリンタに紙が補充されると、ステップS1に戻り、上述のプリント処理を行う。紙なしが発生しない場合は、ステップS8では、何も処理されない。
次に、LCDモニタに警告コマンドを表示させる(ステップS17)。この表示は、図5Bのように示され、「紙は未セットです!」のように警告表示すれば、ユーザにとって親切な機能になる。なお、紙のセットが完了したら、LCDモニタに「完了です!」というメッセージを表示させるようにしても良い。また、プリンタに設けられている表示装置115にも同様に、上記警告表示を表示させてもよい。
(第2の実施形態)
図6は第2の実施形態によるデジタルVTRのモニタ制御の手順を説明するフローチャートである。バックライト第2の実施形態では、省電力モードを考慮した実施形態として図6のフローチャートを参照しながら説明する。まず、デジタルVTRの本体、またはリモコンでプリントの命令を実行する(ステップS50)。すると、第1の実施形態で説明した如き手順でデジタルVTRからプリンタへの画像データの通信が開始される(ステップS51)。そして、デジタルVTRに設けられたLCDモニタ100のバックライト101の電源をOFFにする(ステップS52)。これによりデジタルVTR側の省電力化が実現できる。特にデジタルVTRがリチウムイオン等の充電式バッテリー駆動でプリントを行う場合には好適である。
データを受信したプリンタはプリントを開始し、所定枚数のプリントを行っている間に紙ジャムの発生が検出された場合(ステップS53)、デジタルVTRに対して警告コマンドが転送される。この場合のプリンタ側からの警告コマンドの転送は第1の実施形態で説明したとおりである。警告コマンドによって紙ジャムの通知を受けたデジタルVTRは、画像データの通信を停止する(ステップS54)。そして、LCDモニタ100のバックライト121をONし(ステップS55)、図5Aに示したような警告表示を行う(ステップS56)。一方、紙ジャムが発生しない限りは通常のプリントが行われ、この間はバックライト121の電源はOFFの状態となる。
このように、画像データの通信中はバックライトの電源をOFFにして、警告コマンドのデータを受信したらバックライトの電源をONとするように制御することで、デジタルVTRの省電力化が実現できる。
なお、上記実施形態では、カメラ一体型VTRを例に説明したが、半導体を記憶媒体とする静止画記録のデジタルカメラを用いてもかまわない。また、プリンタの状態を表す情報として、本実施形態では紙ジャム、紙無しを例にとって説明したがこれに限られるものではない。例えば、
1.記録ヘッドやインクタンクが装着されてない場合
2.記録ヘッドの温度が異常に上昇した場合
3.プリンタの各種モータが駆動異常の場合
4.プリンタの電源またはバッテリーを着脱した場合
5.プリンタの電源と連動したカバーの開閉を行った場合
等の情報をカメラ一体型VTRのモニタに表示しても構わない。さらに、表示と共に警告音を発生させてもよい。
また、上記実施形態では伸張処理を施して伝送したが、プリンタ側でハード的またはソフト的に伸張処理を行える構成にすれば、圧縮されたデータをそのままIEEE1394インターフェースを経由して送っても構わない。圧縮方式としては、DV方式のほかにMPEG方式やその他ウエーブレット、フラクタル符号化等であっても構わない。また、画像入力装置として、デジタルVTRを例に揚げたが、スキャナ等であっても良い。更に、プリンタとしてインクジェット方式のものを用いたが、プリンタはレーザービーム方式のプリンタ等であっても良いことはいうまでもない。
なお、本発明は、複数の機器(例えばホストコンピュータ,インタフェイス機器,リーダ,プリンタなど)から構成されるシステムに適用しても、一つの機器からなる装置(例えば、複写機,ファクシミリ装置など)に適用してもよい。
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記憶媒体に格納されたプログラムコードを読出し実行することによっても、達成されることは言うまでもない。
この場合、記憶媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
プログラムコードを供給するための記憶媒体としては、例えば、フロッピディスク,ハードディスク,光ディスク,光磁気ディスク,CD−ROM,CD−R,磁気テープ,不揮発性のメモリカード,ROMなどを用いることができる。
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
さらに、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
以上説明したように、上記実施形態によれば、プリンタの紙ジャム情報を撮像装置に設けられたLCDモニタに表示可能としたことで、ユーザがプリンタの情報を容易に確認できるため、プリント作業の操作性が大幅に向上する。
また、画像データを送信している期間はバックライトの電源をOFFにし、警告表示するときはバックライトの電源をONにすることで、カメラ一体型デジタルVTRの省電力化が実現できる。