(57)【特許請求の範囲】
【請求項１】
動画像データをパケット化し、該パケット化したデータを、フレーム周期に同期させてユーザデータグラムプロトコル及びインターネットプロトコルを用いて送信するために、イーサネット並びにユーザデータグラムプロトコル及びインターネットプロトコルに対応した各ヘッダを付加して生成したパケットを伝送路上に送出する情報送出手段を備えた画像データ伝送装置において、
前記伝送路上に送出したデータの衝突をアプリケーション層から、前記情報送出手段の送受信時にエラー情報を書き込む内部レジスタを介して検出する衝突検出手段を備え、
前記情報送出手段は、該衝突検出手段により送出データの衝突が予め決められた所定の回数検出される毎に、前記パケット化したデータの、前記フレーム周期に対する送出位相を前記フレーム周期内において変更することを特徴とする画像データ伝送装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＬＡＮ（Local Area Network）に画像データを送出する画像データ伝送装置及びその制御方法に関し、特に、カメラで撮影した動画像などの連続するストリ−ムデータをリアルタイムで送出するものに関する。
【０００２】
【従来の技術】
ネットワーク画像伝送システムは、図１２に示すように、伝送装置（サーバ）１０１と、受信装置（クライアント）２０１と、これらを相互に接続するネットワークバス（例えばイーサネットのネットワークバス、以下「イーサネット」という）１００とで構成される。サーバ１０１は、カメラで撮影した映像信号をＭＰＥＧ（Motion Picture Expert Group）１若しくはＭＰＥＧ２で圧縮しパケット化してイーサネット１００に送出する。クライアント２０１では、このデータを受信して伸長し、表示モニタ３０１に表示する。以下にサーバ１０１の構成を説明する。
【０００３】
（１）伝送装置（サーバ）１０１の構成
図１３は、サーバ１０１の回路構成を示したものである。サーバ１０１は、入力ビデオ信号をＭＰＥＧ１若しくはＭＰＥＧ２に準拠した情報圧縮処理を行うＭＰＥＧエンコーダ回路１１１と、この圧縮されたデータ（エレメンタリーストリーム）をイーサネット１００に送出するイーサネット回路１１４と、ソフトウェア処理を行い全体的な制御を行うＣＰＵ（Central Processing Unit）１１２、ＤＲＡＭ（Dynamic Random Access Memory）１１３と、データバス１１５とで構成される。
【０００４】
このうちＭＰＥＧエンコーダ回路１１１は、主にＡ／Ｄ変換器（シンクセパレータ、同期回路を含む）１２１と、ＭＰＥＧ２エンコーダＬＳＩ１２２と、ＦＩＦＯ（First In First Out）メモリ１２３と、ＭＰＥＧインターフェース回路１２４とで構成される。
【０００５】
（２）ビデオデータの流れ
ここでは、入力されたビデオ信号がイーサネット１００に送出されるまでの過程を簡単に説明する。
図１３に示すサーバ１０１の回路構成において、入力されたビデオ信号は、ディジタルデータに変換された後、ＭＰＥＧ２エンコーダＬＳＩ１２２にて圧縮され、ＭＰＥＧ２のときはプログラムストリームのフォーマットで、またＭＰＥＧ１のときは、エレメンタリーストリームまたはシステムストリームのフォーマットで出力される（以下これらを「データストリームＤＳ」という）。このデータストリームＤＳは、一旦ＦＩＦＯメモリ１２３に保持され、ＣＰＵ１１２の制御によりデータバス１１５を介してＤＲＡＭ１１３に書き込まれる。更にここでＵＤＰ（User Datagram Protocol）やＩＰ（Internet Protocol）のヘッダなどの情報が付加されてイーサネット回路１１４に送られ、パケット毎にイーサネット１００上に送出される。以上がサーバ１０１におけるビデオデータの流れである。
【０００６】
（３）ＦＩＦＯメモリ１２３の書き込み・読み出し動作
ここでは、ＭＰＥＧエンコーダ回路１１１のＦＩＦＯメモリ１２３の書き込み・読み出し動作について説明する。
ＭＰＥＧ２エンコーダＬＳＩ１２２から出力されたデータストリームＤＳは、同ＬＳＩ１２２から出力されるライトリセット信号ＷＲやライトイネーブル信号ＷＥによって制御され、ＦＩＦＯメモリ１２３に書き込まれる。
【０００７】
ＦＩＦＯメモリ１２３に書き込まれたデータは、ＭＰＥＧインターフェース回路１２４から出力されるリードリセット信号ＲＲやリードイネーブル信号ＲＥの制御により読み出される。ＭＰＥＧインターフェース回路１２４は、ＣＰＵ１１２のデータバス１１５に接続されており、リードリセット信号ＲＲやリードイネーブル信号ＲＥの出力は、ＣＰＵ（ソフトウェア）１１２の命令にしたがって実行される。
【０００８】
以下に、ＦＩＦＯメモリ１２３の読み出し動作について、図１４のタイミングチャートも参照して説明する。
図１４（ａ）に示されたフレームパルスＦＰは、入力ビデオ信号のフレーム周期で切り替わる信号である。ＭＰＥＧインターフェース回路１２４（図１３参照）はこのフレームパルスＦＰからＭＰＥＧ割り込み要求パルスＭＩＲＱを生成し、出力している。そして、このＭＰＥＧ割り込み要求パルスＭＩＲＱは、ＣＰＵ１１２のハードウェア割り込み端子に入力されており、ＣＰＵ１１２に対し、１フレーム期間に１回ハードウェア割り込みを要求する。割り込みが発生すると、図１５（ａ）に示すＭＰＥＧ割り込みルーチンが実行され、ここでＦＩＦＯメモリ１２３に保持されたデータストリームＤＳの読み出し動作が行われる。
【０００９】
ＦＩＦＯメモリ１２３からの読み出しは、割り込み発生ごとに、１つのピクチャ（Ｉピクチャ、ＰピクチャまたはＢピクチャのいずれか）を構成するデータ数だけＦＩＦＯメモリ１２３から読み出す。１つのピクチャを構成するデータ量はフレームごとに異なる。そのため、ＭＰＥＧ２エンコーダＬＳＩ１２２は、ＦＩＦＯメモリ１２３に書き込まれたデータ数を図１４に示すフレーム周期の先頭で、内部レジスタ（以下「ＦＩＦＯリードレジスタ」という）にＸ１バイト、Ｘ２バイト、Ｘ３バイト．．．のように書き込む仕組みを備えている。
【００１０】
（４）イーサネットパケット生成までのプログラム動作
ＦＩＦＯメモリ１２３に保持されたデータストリームＤＳを読み出してイーサネットパケットを生成するまでのプログラム動作を、図１４のタイミングチヤートと図１５のフローチャートに沿って説明する。
【００１１】
入力ビデオ信号のフレーム周期で発生するハードウェア割り込み（ＭＰＥＧ割り込み）要求ＭＩＲＱにより、図１５（ａ）に示すＭＰＥＧ割り込みルーチン（フェーズＡ１、図１４参照）がスタートする。
ステップＳ１０１では、ＭＰＥＧ２エンコーダＬＳＩ１２２の内部レジスタであるＦＩＦＯリードレジスタの内容（図１４のＸ１バイト）を読み、現在のフレーム期間内に読み出すべきデータのバイト数を得る。
【００１２】
ステップＳ１０２では、このバイト数だけＦＩＦＯメモリ１２３からデータを読み出し、ＤＲＡＭ１１３上に確保したＭＰＥＧエリアに書き込む。
ステップＳ１０３では、ＭＰＥＧ送信アプリケーション（図１５（ｂ））をコールし、ＭＰＥＧ割り込みルーチンを終了する。
【００１３】
ステップＳ１０３によりＭＰＥＧ送信アプリケーションのフェーズＢ１がスタートする。図１６は、データストリームＤＳからパケットを生成する手順を示したものであり、図１５とともに参照する。
図１５（ｂ）のステップＳ１１１では、図１６に示すように、ＤＲＡＭ１１３のＭＰＥＧエリアから１４６０バイトのデータ（最後に読み出すデータは、１４６０バイト以下の揚合がある）を読み出し、８バイトのＵＤＰヘッダと２０バイトのＩＰヘッダを付加する。
【００１４】
次いでこのデータをイーサネット回路１１４のメモリに書き込み、送信開始手続きを行う（ステップＳ１１２）。この後、イーサネット回路１１４によるハードウェア処理となる。更にこのデータに１４バイトのイーサネットヘッダが付加され（図１６（ｄ））、１５０２バイトのパケットになる。このパケットがイーサネット１０２に送り出される。
【００１５】
図１５（ｂ）のステップＳ１１３では、ＤＲＡＭ１１３のＭＰＥＧエリアに書き込まれたデータがあるかどうかチェックし、データが残っているならステップＳ１１１に戻り、ステップＳ１１１〜Ｓ１１３の処理を繰り返す。このように、イーサネット回路１１４は、連続したデータをパケット（＝１５０２バイト）に分割して順次イーサネット１００に送出する。
【００１６】
ステップＳ１１３で、ＤＲＡＭ１１３のＭＰＥＧエリアから読み出すデータが無くなった場合は、ＭＰＥＧ送信アプリケーションを終了する。
ＭＰＥＧ送信アプリケーションが終了すると、イーサネット回路１１４では内部のメモリに複数のパケットが保持されており、このパケットをすべて送信し終わると、イーサネット回路１１４はＣＰＵ１１２にハードウェア割り込み要求（以下「イーサネット割り込み要求」という）を出し、再びソフトウェア処理に移る。この時、図１５（ｃ）に示すイーサネット割り込みルーチンがコールされ、以下の処理が行われる。
【００１７】
ステップＳ１２１では、送信終了割り込みかどうか判別し、送信終了割り込みでないときは、直ちに処理を終了する。送信終了割り込みであるときは、イーサネット回路１１４に対し、送信終了手続きを行い（ステップＳ１２２）、パケット送信の時に使用していたイーサネット回路１１４のメモリをクリアし（ステップＳ１２３）、イーサネット割り込みルーチンを終了する。
【００１８】
以上が１フレーーム期間内に行う処理である。次のフレームの割り込みが発生すると、ＭＰＥＧ割り込みルーチンのフェーズＡ２がスタートし、同様にステップＳ１０１から処理を行う。
このようなソフトウェア処理により、ＭＰＥＧ２エンコーダＬＳＩ１２２から随時出力されたデータストリームＤＳがパケット化され、イーサネット１００に送り出される。
【００１９】
【発明が解決しようとする課題】
図１７は、共有型ハブ４０１にサーバを複数台（図示例ではサーバ１０１，１０２及び１０３を）接続し、１つのクライアント２０１で受信・表示するシステムを示したものである。
【００２０】
このようなシステムにおいて、それぞれのサーバが画像データを送信すると、図１８に示すように、サーバ１０１とサーバ１０２のパケットの送出タイミングが一致する場合がある。共有型ハブ４０１では、データ線はバス状に接続されており、同時に複数のパケットを送信することができないため、これらのパケットは衝突を起こしてしまう。
【００２１】
イーサネット回路（主にイーサネットコントローラＬＳＩ）では、このような衝突が発生した場合に備え、データを送信する時にケーブル上の信号を監視しており、衝突が検出された湯合、ジャミング信号と呼ばれるユニークな信号を送信し、ネットワークに接続された他の機器に対し、パケットの衝突が起こったことを知らせる。
【００２２】
このジャミング信号を送信または検出した際は、ランダムに設定される時間だけ待機した後、再度送信を試みる。このような再送信を１５回繰り返しても衝突が起こってしまった場合（ここでは、「１６衝突」と呼ぶ）、送信に失敗したとみなし上位層のプロトコルに処理が委ねられる。
【００２３】
上位層のプロトコルは、動画像などの連続したストリームデータの伝送を目的としたサーバの場合、ＴＣＰ（Transmission Control Protocol）のようにパケットの再送機能があるとリアルタイム性が損なわれるため、一般的に再送信を行わないＵＤＰが使用される。つまり、このようなサーバではイーサネットコントローラにて１６衝突が検出されれば、データは送信されずに捨てられてしまう。この結果、クライアントではパケットをすべて受信することができないため、受信データを正常にデコード処理することができずに表示する画像が乱れてしまう。
【００２４】
本発明はこの問題を解決するためになされたものであり、画像データを送出する画像データ伝送装置が複数接続されたネットワークバス上において、データの衝突が連続して発生することを防止し、受信装置側での画像の乱れを最小限に抑制することができる画像データ伝送装置及び画像データ伝送システムを提供することを目的とする。
【００２５】
【課題を解決するための手段】
上記目的を達成するため請求項１に記載の発明は、動画像データをパケット化し、該パケット化したデータを、フレーム周期に同期させてユーザデータグラムプロトコル及びインターネットプロトコルを用いて送信するために、イーサネット並びにユーザデータグラムプロトコル及びインターネットプロトコルに対応した各ヘッダを付加して生成したパケットを伝送路上に送出する情報送出手段を備えた画像データ伝送装置において、前記伝送路上に送出したデータの衝突をアプリケーション層から、前記情報送出手段の送受信時にエラー情報を書き込む内部レジスタを介して検出する衝突検出手段を備え、前記情報送出手段は、該衝突検出手段により送出データの衝突が予め決められた所定の回数検出される毎に、前記パケット化したデータの、前記フレーム周期に対する送出位相を前記フレーム周期内において変更することを特徴とする。
【００２９】
【発明の実施の形態】
以下本発明の実施の形態を図面を参照して説明する。
（第１の実施形態）
図１は本発明の第１の実施形態にかかる画像データ伝送装置の構成を示すブロック図である。この装置は、図１３に示す従来の伝送装置と同一のハードウエア構成を有している。すなわち、図１に示す伝送装置（サーバ）１は、図１３に示すＭＰＥＧエンコーダ１１１、ＣＰＵ１１２、ＤＲＡＭ１１３、イーサネット回路１１４及びデータバス１１５と、同様の機能を有するＭＰＥＧエンコーダ１１、ＣＰＵ１２、ＤＲＡＭ１３、イーサネット回路１４及びデータバス１５で構成され、ＭＰＥＧエンコーダ１１は、Ａ／Ｄ変換器２１と、ＭＰＥＧ２エンコーダＬＳＩ２２と、ＦＩＦＯメモリ２３と、ＭＰＥＧインターフェース回路２４とで構成されている。
【００３０】
本実施形態は、動画像データの送信プロセスを改善し、１６衝突に至らない状態、つまりネットワークバス上のデータの衝突が連続１５回以下で検出された揚合（ここでは、以下「単一衝突」と呼ぶ）、パケットの送出タイミングを現在の位相（動画像の１フレームの周期を基準としたときの位相）からずらすことで、衝突が連続して発生することを回避するようにしたものである。以下に詳細を説明する。
【００３１】
（１）衝突検出の方法
はじめに、データの衝突を検出する方法について簡単に説明する。
イーサネット回路１４において、イーサネットコントローラＬＳＩが使用するメモリには、送信・受信したデータを書き込む領域の他に、送信・受信の際のエラー情報を書き込む領域（以下「ステータスワードレジスタ」と呼ぶ）が設けられている。このステータスワードレジスタ中には、前述した単一衝突や１６衝突が検出された場合にセットされるビットが設けられている。このビットのセットは、すべてハードウェアで行われ、通常はＵＤＰ／ＩＰの上層のアプリケーションでは管理していない。
【００３２】
そこで、本実施形態では、後述するイーサネット割り込み処理にてステータスワードレジスタの中の単一衝突が検出された場合にセットされる単一衝突ビットＳＣＢを読み出し、単一衝突が何回発生したかをカウントしてＤＲＡＭ１３上に確保した領域（以下「衝突カウントエリア」という）に保存しておく。この衝突カウントエリアの値ＣＣを他のアプリケーションで読み出して監視すれば、１６衝突になる前の段階の衝突を検出することができ、これに応じて、次の処理であるパケットの送信位相の変更を行うことができる。
【００３３】
（２）実際のプログラム動作
次に、図２に示されるように、図１に示したサーバ１と、このサーバ１と同様の構成を有する画像データ伝送装置（サーバ）２とが、共有型ハブ４１を介して接続され、共有型ハブ４１には、クライアント（受信装置）３１が接続されている画像データ伝送システムにおいて、これらのサーバ１，２のパケットの送出タイミングが一致した場合を例にとり、実際のプログラム動作を説明する。
【００３４】
図３は、サーバ１とサーバ２がほぼ同時にパケットを送出した場合に、イーサネット上で衝突が発生する様子を示したタイミングチャートである。
同図（ａ）（ｂ）には、サーバ１がフレーム信号ＦＰ１を基準に複数のパケットを送出している状態が示されており、また同図（ｃ）（ｄ）には、サーバ２がフレーム信号ＦＰ１と若干ずれたフレーム信号ＦＰ２を基準として、サーバ１と同一の位相でパケットを送出している状態が示されている。このような状態では、同図にＸで示した部分で衝突が発生する。そして、このまま同じ位相で送出し続ければ１６衝突に達してしまう。
【００３５】
そこで、１６衝突を回避するために、サーバ２では以下の処理を行う。
図４及び５は、それぞれ図３のフレーム期間ＴＦ１及びＴＦ２の拡大図であって、サーバ２で動作するプログラムの実行タイミングを示したものである。サーバ２では、ＭＰＥＧ割り込み信号をＡ〜Ｅのように１フレーム期間に５パルス出力することよって、ＭＰＥＧ割り込み処理を１フレーム期間に５回実行している。
【００３６】
１）フレーム期間ＴＦ１における処理
フレーム期間ＴＦ１のＭＰＥＧ割り込み信号ＭＩＲＱ（図４（ｂ））のパルスＡによって、最初のＭＰＥＧ割り込みルーチンのフェーズＡ１がスタートする（同図（ｃ））。
【００３７】
ＭＰＥＧ割り込みルーチンの動作を図７（ａ）のフローチャートに沿って説明する。
ステップＳ１では、ＭＰＥＧ２エンコーダＬＳＩ２２の内部レジスタであるＦＩＦＯリードレジスタの内容を読み、０かどうか確認する。０でない場合は、送信すべきデータがＦＩＦＯメモリ２３に蓄積されているためステップＳ２へ進む。０の場合は、何もせずに割り込みルーチンを終了する。
【００３８】
ステップＳ２では、ＤＲＡＭ１３上に確保した衝突カウントエリアに格納される衝突回数ＣＣを読み出し、次いでこの値ＣＣが５以上か否かを判別する（ステップＳ３）。その結果、衝突回数ＣＣが５以上ならば、衝突回数ＣＣを０にリセットして（ＤＲＡＭ１２の衝突カウントエリアに０を書き込んで）（ステップＳ７）、割り込みルーチンを終了する。フェーズＡ１の場合は、まだパケットを１つも送信していない状態であり、当然衝突も起こっていないので、ステップＳ４へ進む。
【００３９】
ステップＳ４では、ＦＩＦＯリードレジスタの値だけＦＩＦＯメモリ２３からデータを読み出し、ＤＲＡＭ１３上に確保したＭＰＥＧエリアに保存しておく。ステップＳ５では、ＦＩＦＯリードレジスタに０をセットする。これは、ＦＩＦＯメモリ２３からデータをすべて読み出したことを意味する。
【００４０】
ステップＳ６では、ＭＰＥＧ送信アプリケーション（図７（ｂ））をコールして、ＭＰＥＧ割り込みルーチンを終了する。
次に、ＭＰＥＧ送信アプリケーションのフェーズＡ２がスタートする（図４（ｄ））。
【００４１】
ステップＳ１１では、ＤＲＡＭ１３のＭＰＥＧエリアから１４６０バイトのデータ（最後に読み出すデータは、１４６０バイト以下の場合がある）を読み出し、８バイトのＵＤＰヘッダと２０バイトのＩＰヘッダを付加する。
ステップＳ１２では、ヘッダを付加したデータをイーサネット回路１４のメモリに書き込み、送信開始手続きを行う。
【００４２】
この後、イーサネット回路１４によるハードウェア処理に移り、更に１４バイトのイーサネットヘッダが付加され、１５０２バイトのパケットが生成される。このパケットがイーサネット１００に送り出される。この時にネット（バス）上で衝突が検出された場合は、ステータスワードレジスタＳＷの単一衝突ビットＳＣＢに１がセットされる。送信が終わると、イーサネット回路１４はＣＰＵ１２にハードウェア割り込み要求パルスＥＩＲＱを出力し、この割り込み要求パルスＥＩＲＱに応じて、ＣＰＵ１２は図７（ｃ）に示すイーサネット割り込みルーチンを実行する。
【００４３】
ステップＳ１３では、ＤＲＡＭ１３のＭＰＥＧエリアに書き込まれたデータがあるかどうかをチェックし、データが残っているならステップＳ１１に戻り、ステップＳ１１、Ｓ１２及びＳ１３の処理を繰り返す。このようにして連続したデータがパケット（＝１５０２バイト）化されて、順次イーサネット１００に送出される（図４（ｅ）参照）。
【００４４】
そして、ＤＲＡＭ１３のＭＰＥＧエリアから読み出すデータが無くなった場合は、ＭＰＥＧ送信アプリケーションを終了する。
ＭＰＥＧ送信アプリケーションの実行中、ステップＳ１２の実行後にコールされたイーサネット割り込みルーチンのフェーズＡ３がスタートする（図４（ｆ）参照）。
【００４５】
図７（ｃ）のステップＳ２１では、送信終了割り込みかどうか判別し、送信終了割り込みでないときは、直ちに処理を終了する。送信終了割り込みであるときは、ステップＳ２２に進み、イーサネット回路１４のメモリにあるステータスワードレジスタＳＷの内容を読み出す。次いで、この中の単一衝突ビットＳＣＢの値が１であるか否かを判別し、ＳＣＢ＝１ならば、ステップＳ２４に進み、ＳＣＢ＝０ならば、直ちにステップＳ２５に進む。
【００４６】
ステップＳ２４では、ＤＲＡＭ１３の衝突カウントエリアに格納されている衝突回数ＣＣを読み出し、その値を１だけインクリメントする。更新した衝突回数ＣＣは、再び衝突カウントエリアに書き込まれる。
ステップＳ２５では、イーサネット回路１４に対し、送信終了手続きを行う。ステップＳ２６では、パケット送信の時に使用していたイーサネット回路１４のメモリをクリアし、イーサネット割り込みルーチンを終了する。
【００４７】
イーサネット割り込みルーチンのフェーズＡ３が終了すると、図７（ｂ）のＭＰＥＧ送信アプリケーションの処理に戻り、ＤＲＡＭ１３のＭＰＥＧエリアにデータが残っている場合は、ステップＳ１１〜Ｓ１３の処理を繰り返し、１パケットずつ送信される。送信終了時に再びイーサネット割り込みルーチンがコールされ、フェーズＡ４が開始され、ステップＳ２１〜Ｓ２６が実行される。これらの処理をＤＲＡＭ１３のＭＰＥＧエリアのデータが無くなるまで繰り返され、同図ではフェーズＡ８まで実行される例が示されている。この間のパケット送出タイミングは、サーバ１とほぼ一致しているため、例えば衝突が５回検出されたとすると、同図に示すように衝突回数ＣＣが５になる。
【００４８】
次に、ＭＰＥＧ割り込み信号ＭＩＲＱのパルスＢによって、ＭＰＥＧ割り込み処理のフェーズＢ１がスタートする。
ステップＳ１では、ＦＩＦＯリードレジスタの内容を読み、０かどうか確認する。既にフェーズＡ１時にＦＩＦＯメモリ２３からデータを読み出しているため、ＦＩＦＯリードレジスタの値は０となっている。この時は、何もせずにＭＰＥＧ割り込みルーチンを終了する。
【００４９】
ＭＰＥＧ割り込み信号ＭＩＲＱのパルスＣ〜Ｅによって、ＭＰＥＧ割り込みルーチンのフェーズＣ１〜Ｅ１が実行されるが、ＦＩＦＯリードレジスタが０のため、何もせずにＭＰＥＧ割り込みルーチンを終了する。こうしてフレーム期間ＴＦ１における処理が終了する。
【００５０】
２）フレーム期間ＴＦ２における処理
次に、フレーム期間ＴＦ２が開始されると（図５参照）、フレーム期間ＴＦ２のＭＰＥＧ割り込み信号ＭＩＲＱのパルスＡによって、ＭＰＥＧ割り込みルーチンのフェーズＡ１がスタートする。以下のプログラム動作は、図７のフローチャートを参照して説明する。
【００５１】
ステップＳ１では、ＦＩＦＯリードレジスタの内容を読み、０かどうか確認する。０でない場合は、1フレームに送信すべきデータがＦＩＦＯメモリに蓄積されているため、ステップＳ２に進む。０の場合は、何もせずに割り込みを終了する。
【００５２】
ステップＳ２では、衝突回数ＣＣを読み出す。このとき衝突回数ＣＣは、５以上になっているので、ステップＳ３からステップＳ７に進み、衝突回数ＣＣを０にリセットする。フレーム期間ＴＦ１の処理によって、このタイミングにパケット送出すれば衝突が起こることわかっているので、パケットを送出せずにＭＰＥＧ割り込みルーチンを終了する。
【００５３】
次いでＭＰＥＧ割り込み信号ＭＩＲＱのパルスＢによって、ＭＰＥＧ割り込みルーチンのフェーズＢ１がスタートする。
フェーズＢ１では、衝突回数ＣＣ＝０となっているので、ステップＳ３からステップＳ４に進み、ＦＩＦＯリードレジスタの値だけＦＩＦＯメモリ２３からデータを読み出し、ＤＲＡＭ１３のＭＰＥＧエリアに保存し、次いでＦＩＦＯリードレジスタに０をセットし（ステップＳ５）、ＭＰＥＧ送信アプリケーションをコールする（ステップＳ６）。
【００５４】
これ以降は、ＭＰＥＧ送信アプリケーションのフェーズＢ２、イーサネット割り込みルーチンのフェーズＢ３〜Ｂ８が実行され、順次パケットが送出される。この結果、パケットの送出タイミングを最初の位相（サーバ１と一致した送出タイミング）からずらすことでき、衝突が連続して発生することを回避することが可能となる。
【００５５】
以上説明したサーバ２の動作をまとめると、図６に示すようになる。
サーバ１のパケット送出に対し、サーバ２もほぼ同じタイミングで送出が行われた場合、最初のフレーム期間ＴＦ１では、ＭＰＥＧ割り込み信号ＭＩＲＱのパルスＡのタイミングで送出されるため、衝突が検出される（例えば、衝突カウントエリアに格納される衝突回数ＣＣが５以上になる）（時刻ｔ１）。その結果、次のフレーム期間ＴＦ２では、衝突回数ＣＣが５以上になっていることから、ＭＰＥＧ割り込みＭＩＲＱのパルスＡのタイミング（時刻ｔ２）ではパケット送出を行わずに、パルスＢのタイミング（時刻ｔ３）から送出を開始することができる。従って、同図に示すようにフレーム期間ＴＦ２以降は、サーバ１が送出するパケットとの衝突を起こすことなく、サーバ２によるパケット送出を行うことができる。
【００５６】
このように、本実施形態によれば、衝突は何回か検出されるが、１６衝突に至る前に送出位相を変えることができるため、パケットの消失は起こらない。よって、クライアント（受信側装置）における再生画の乱れを最小限に抑えることができる。
【００５７】
（第２の実施形態）
第１の実施形態では、バス上での衝突を連続して検出した場合、パケット送出タイミングをずらすことを行ったが、本実施形態は、衝突の検出を行わずに、サーバ間でコマンドをやり取りすることによって、ＭＰＥＧデータの送出タイミングが一致しないようにしたものである。ハードウエア構成は、第１の実施形態と同一である。
【００５８】
本実施形態におけるサーバ１とサーバ２の動作の概略を説明すると、サーバ１はデータの送出優先権を有しており、第１の実施形態と同様にＭＰＥＧデータを送信し、この送信が終了した後、サーバ２に向けて送信許可コマンドを送る。サーバ２は、データの送出優先権を有しておらず、サーバ１から送信される送信許可コマンドを受信してから、ＭＰＥＧデータを送信する。これにより、サーバ１とサーバ２は、パケットの衝突を起こすことなく、交互に画像データ送出することができる。その結果、パケットが衝突することによってデータが消失することがなくなるため、クライアントにおける再生画像の乱れを防ぐことができる。
【００５９】
（１）実際のプログラム動作
図８は、サーバ１とサーバ２がＭＰＥＧデータを送信するタイミングを示したものであり、この図を適宜参照して、サーバ１とサーバ２の動作を説明する。
サーバ１は、図８（ａ）（ｂ）に示すように、フレーム信号ＦＰ１に同期して１つのピクチヤを構成するデータ量をパケット化して送信する。そして、送信が終了した時点で、送信許可コマンドをサーバ２に向けて送る（同図（ｃ））。
サーバ１のプログラム動作は、サーバ２と重複するところが多いため、サーバ２のプログラム動作を説明した後に説明する。まず、サーバ２のプログラム動作について説明する。
【００６０】
１）サーバ２の動作
サーバ２では、サーバ１と同様に１フレームに１回発生するＭＰＥＧ割り込み信号ＭＩＲＱによって、図９（ａ）に示すＭＰＥＧ割り込みルーチンが実行される。
ＭＰＥＧ割り込み信号ＭＩＲＱのパルスＡに応じて、ＭＰＥＧ割り込みルーチンのフェーズＡ１がスタートする（図８（ｆ）（ｇ）参照）。
【００６１】
図９（ａ）のステップＳ３１では、ＭＰＥＧ２エンコーダＬＳＩ２２の内部レジスタであるＦＩＦＯリードレジスタの値を読み出し、次いでそのＦＩＦＯリードレジスタの値だけＦＩＦＯメモリ２３からデータを読み出し、ＤＲＡＭ１３上に確保したＭＰＥＧエリアに保存する（ステップＳ３２）。続くステップＳ３３では、ＭＰＥＧ送信アプリケーションをコールして、ＭＰＥＧ割り込みルーチンを終了する。
【００６２】
次に、図９（ｂ）に示すＭＰＥＧ送信アプリケーションのフェーズＡ２がスタートする（図８（ｈ）参照）。
ステップＳ４１では、ＤＲＡＭ１３に格納した送信開始フラグＳＳＦが１かどうか調べる。この送信開始フラグＳＳＦは、サーバ１からの送信許可コマンドを受信した時に、後述するイーサネット割り込みルーチンの受信ルーチンにてセットされるフラグである。図８（ｈ）に示すフェーズＡ２の実行開始時点では、まだ送信許可コマンドが受信されてないため、サーバ１の送信が終わってないことがわかる。すなわち、この時送信開始フラグＳＳＦは０となっている。したがって衝突を避けるために、送信開始フラグＳＳＦが１になるまで待つ。
【００６３】
やがて、サーバ１からの送信許可コマンドが受信されると、サーバ２のイーサネット回路１４にてハードウェア割り込みが発生し、図１０に示すイーサネット割り込みルーチンが実行される。
ステップＳ５１では、送信終了割り込みか否かを判別し、違う場合はステップＳ５２に進む。ステップＳ５２では、受信割り込みか否かを判別し、受信割り込みでもないときは直ちに処理を終了し、受信割り込みであるときは、ステップＳ５３に進む（図８（ｅ）参照）。
【００６４】
イーサネット回路１４で受信されたパケットは、イーサネット回路１４が管理するメモリに保存されているので、ステップＳ５３ではここからデータを読み出し、ＤＲＡＭ１３上に確保した領域、すなわちＲＸデータエリアにコピーする。
【００６５】
ステップＳ５４では、ＤＲＡＭ１３のＲＸデータエリアからヘッダを検索し、ヘッダを除いたデータ部分を読み出す。そして、読み出したデータに“ＳｅｎｄＣｏｍｐｌｅｔｉｏｎ”の文字列があるか否かを判別する（ステップＳ５５）。“Ｓｅｎｄ  Ｃｏｍｐｌｅｔｉｏｎ”の文字列がある場合は、ＭＰＥＧデータではなく、サーバ１から送信された送信許可コマンドであること意味する。この場合には、ＤＲＡＭ１３の格納されている送信開始フラグＳＳＦを１にセットし（ステップＳ５６）、“Ｓｅｎｄ  Ｃｏｍｐｌｅｔｉｏｎ”の文字列が発見できない時は、送信開始フラグＳＳＦを０とし（ステップＳ５７）、イーサネット割り込みルーチンを終了する。
【００６６】
図９（ｂ）に戻り、ＭＰＥＧ送信アプリケーションは、送信開始フラグＳＳＦが１になったことを確認すると、ＭＰＥＧデータの送信手続きを開始し、ステップＳ４１からステップＳ４２に進む。ステップＳ４２では、ＤＲＡＭ１３のＭＰＥＧエリアから１４６０バイトのデータ（最後に読み出すデータは、１４６０バイト以下の揚合がある）を読み出し、８バイトのＵＤＰヘッダと２０バイトのＩＰヘッダを付加する。次いで、このデータをイーサネット回路１４のメモリに書き込み、送信開始手続きを行う（ステップＳ４３）。この後、イーサネット回路１４によるハードウェア処理となる。更にこのデータに１４バイトのイーサネットヘッダが付加され、１５０２バイトのパケットになる。このパケットがイーサネットに送り出される（図８（ｉ）参照）。
【００６７】
ステップＳ４４では、ＤＲＡＭ１３のＭＰＥＧエリアに書き込まれたデータがあるかどうかを判別し、データが残っているならステップＳ４２に戻り、ステップＳ４２〜Ｓ４４の処理を繰り返す。ＤＲＡＭ１３のＭＰＥＧエリアから読み出すデータが無くなった場合、送信開始フラグＳＳＦを０に戻し（ステップＳ４５）、ＭＰＥＧ送信アプリケーションを終了する。
【００６８】
ステップＳ４３の実行後においては、イーサネット回路１４では内部のメモリに複数のパケットが保持されており、このパケットをすべて送信し終わると、イーサネット回路１４はＣＰＵ１２にハードウェア割り込み要求パルスＥＩＲＱを出し、再びソフトウェア処理に移る。
【００６９】
イーサネット割り込みルーチンがコールされ、図１０のステップＳ５１，Ｓ５８，Ｓ５９の処理が実行される（図８（ｊ）参照）。すなわち、送信終了割り込みか否かを判別し（ステップＳ５１）、この場合、送信終了割り込みなので、ステップＳ５８に進む。ステップＳ５８では、イーサネット回路１４に対し、送信終了手続きを行い、次いでパケット送信の時に使用していたイーサネット回路１４のメモリをクリアし（ステップＳ５９）、イーサネット割り込みルーチンを終了する。
【００７０】
次のフレーム期間が始まると、ＭＰＥＧ割り込みルーチンのフェーズＢ１がスタートし、同様にステップＳ３１から処理が行われる。
このように、サーバ１からの送信許可コマンドを受信するまで、サーバ２は送信を待つことによって、サーバ１と同じタイミングで送信することを避けられる。すなわち、サーバ１及び２から送出されたイーサネット上のデータは、図８（ｋ）に示すようになる。従って、パケットの衝突によるデータの消失が発生しなくなり、クライアント（受信装置側）における再生画の乱れもなくなる。
【００７１】
２）サーバ１の動作
サーバ１の動作は、基本的にはサーバ２と同じである。サーバ１のＭＰＥＧ割り込みルーチン及びイーサネット割り込みルーチンの動作は、それぞれ図９（ａ）及び図１０のフローチャートと同様であるため、説明は省略する。
【００７２】
サーバ２と異なる動作は、ＭＰＥＧ送信アプリケーションにて送信開始フラグＳＳＦのチェックをせずにＭＰＥＧデータを送信する点と、１フレーム期間のＭＰＥＧデータの送信が終了した時点で送信許可コマンドをサーバ２に送信することである。
【００７３】
サーバ１のＭＰＥＧ送信アプリケーションの動作を図１１のフローチャートに沿って説明する。
ステップＳ６１では、ＤＲＡＭ１３のＭＰＥＧエリアから１４６０バイトのデータ（最後に読み出すデータは、１４６０バイト以下の場合がある）を読み出し、８バイトのＵＤＰヘッダと２０バイトのＩＰヘッダを付加する。
【００７４】
ステップＳ６２では、このデータをイーサネット回路１４のメモリに書き込み、送信開始手続きを行う。この後、イーサネット回路によるハードウェア処理となる。更にこのデータに１４バイトのイーサネットヘッダが付加され、１５０２バイトのパケットになる。このパケットがイーサネットに送り出される（図８（ｂ）参照）。
【００７５】
ステップＳ６３では、ＤＲＡＭ１３のＭＰＥＧエリアに書き込まれたデータがあるかどうかをチェックし、データが残っているならステップＳ６１に戻り、ステップＳ６１〜Ｓ６３の処理を繰り返す。このように、連続したデ−タをパケット（＝１５０２バイト）に分割して順次イーサネットに送出する。ＤＲＡＭ１３のＭＰＥＧエリアから読み出すデータが無くなった場合、ステップＳ６４へ進む。
【００７６】
ステップＳ６４では、1フレーム期間に行うＭＰＥＧ送信が終了したことをサーバ２に知らせるため、送信許可コマンドのパケットを生成する。パケットの生成手順は、図１６と同様に行い、ＭＰＥＧデータの代わりに文字列“Ｓｅｎｄ  Ｃｏｍｐｌｅｔｉｏｎ”をデータとしてＵＤＰヘッダ及びＩＰヘッダを付加する。文字列を使用した理由は、これを受信したサーバがＭＰＥＧデータと混同しないようにするために特殊なデータにするためである。
【００７７】
ステップＳ６５では、このデータをイーサネット回路１４のメモリに書き込み、送信開始手続きを行う。この後、イーサネット回路によるハードウェア処理となり、イーサネットヘッダが付加されて送信される（図８（ｃ）参照）。
以上のように本実施形態では、サーバ１に対して送出優先権を与え、サーバ１が１フレーム期間に対応したデータの送出完了後に、サーバ２に対して送信許可コマンドを送信し、サーバ２は、その送信許可コマンドを受信した後に、１フレーム期間に対応したデータの送出を実行するようにしたので、バス（イーサネット）上でのデータの衝突を未然に防止し、受信装置側での画像の乱れを無くすことができる。
【００７８】
なお本発明は上述した実施形態に限るものではなく、種々の変形が可能である。例えば、上述した実施形態では、２台のサーバが画像データを送出する場合を示したが、サーバの数はこれに限るものではなく、３台以上であってもよい。
【００７９】
【発明の効果】
以上詳述したように請求項１に記載の画像データ伝送装置によれば、衝突検出手段により伝送路上に送出したデータの衝突が予め決められた所定の回数検出される毎に、パケット化したデータの、前記フレーム周期に対する送出位相がフレーム周期内において変更されるので、データの衝突が連続して発生することを防止し、受信装置側での画像の乱れを最小限に抑制することができる。
【図面の簡単な説明】
【図１】本発明の一実施形態にかかる画像データ伝送装置の構成を示すブロック図である。
【図２】図１の画像データ伝送装置と同様の構成を有する画像データ伝送装置が２台含まれる画像データ伝送システムを示すブロック図である。
【図３】データの衝突を説明するためのタイミングチャートである。
【図４】図３の一部を拡大して示すタイミングチャートである。
【図５】図３の一部を拡大して示すタイミングチャートである。
【図６】第１の実施形態における動作をまとめて説明するためのタイミングチャートである。
【図７】サーバ２のＣＰＵで実行される処理のフローチャートである。
【図８】第２の実施形態における動作を説明するためのタイミングチャートである。
【図９】サーバ２のＣＰＵで実行される処理のフローチャートである。
【図１０】サーバ２のＣＰＵで実行される処理のフローチャートである。
【図１１】サーバ１のＣＰＵで実行される処理のフローチャートである。
【図１２】従来の画像データ伝送システムの構成を示すブロック図である。
【図１３】図１２の画像データ伝送装置の構成を示すブロック図である。
【図１４】図１３の装置の動作を説明するためのタイミングチャートである。
【図１５】図１３のＣＰＵで実行される処理のフローチャートである。
【図１６】パケットの構成を説明するための図である。
【図１７】複数のサーバ（画像データ伝送装置）とクライアントの接続を示すブロック図である。
【図１８】ネットワークバス上でのデータの衝突を説明するためのタイミングチャートである。
【符号の説明】
１，２  画像データ伝送装置
１１  ＭＰＥＧエンコーダ
１２  ＣＰＵ（情報送出手段、衝突検出手段）
１３  ＤＲＡＭ（情報送出手段、衝突検出手段）
１４  イーサネット回路（情報送出手段、衝突検出手段）
１５  データバス
１００  イーサネット（伝送路）
【図１】
0003719120.tif 000002
【図２】
0003719120.tif 000003
【図３】
0003719120.tif 000004
【図４】
0003719120.tif 000005
【図５】
0003719120.tif 000006
【図６】
0003719120.tif 000007
【図７】
0003719120.tif 000008
【図８】
0003719120.tif 000009
【図９】
0003719120.tif 000010
【図１０】
0003719120.tif 000011
【図１１】
0003719120.tif 000012
【図１２】
0003719120.tif 000013
【図１３】
0003719120.tif 000014
【図１４】
0003719120.tif 000015
【図１５】
0003719120.tif 000016
【図１６】
0003719120.tif 000017
【図１７】
0003719120.tif 000018
【図１８】
0003719120.tif 000019