(57)【特許請求の範囲】
【請求項１】
転送データの送受信を行う複数の転送用デバイスと、
前記複数の転送用デバイスの制御を行う制御用デバイスと、
前記制御用デバイスおよび前記各転送用デバイス同士を複数の信号線によって相互接続するバスと
を備え、
前記制御用デバイスからの制御コマンドに従って、前記制御コマンドで指示された前記複数の転送用デバイス間で前記バスを介して転送データの送受信を行うようになされたバス・インタフェースにおけるデータ転送方法であって、
前記制御用デバイスから、バス全体の基準となる基準クロック信号を前記バス上に出力すると共に、その基準クロック信号に同期して、前記制御コマンドを前記バス上に出力し、
前記各転送用デバイスにおいて、前記基準クロック信号に基づいてデータ転送用の他のクロック信号を生成し、その生成されたデータ転送用の他のクロック信号に同期して、前記複数の転送用デバイス間で前記転送データの送受信を行う
ことを特徴とするバス・インタフェースにおけるデータ転送方法。
【請求項２】
前記制御コマンドの出力と前記転送データの送受信とをパケット形式で行う
ことを特徴とする請求項１記載のバス・インタフェースにおけるデータ転送方法。
【請求項３】
転送データの送受信を行う複数の転送用デバイスと、
前記複数の転送用デバイスの制御を行う制御用デバイスと、
前記制御用デバイスおよび前記各転送用デバイス同士を複数の信号線によって相互接続するバスと
を備え、
前記制御用デバイスからの制御コマンドに従って、前記制御コマンドで指示された前記複数の転送用デバイス間で前記バスを介して転送データの送受信を行うようになされ、
前記制御用デバイスは、バス全体の基準となる基準クロック信号を前記バス上に出力すると共に、その基準クロック信号に同期して、前記制御コマンドを前記バス上に出力し、
前記各転送用デバイスは、前記基準クロック信号に基づいてデータ転送用の他のクロック信号を生成し、その生成されたデータ転送用の他のクロック信号に同期して、前記複数の転送用デバイス間で前記転送データの送受信を行う
ように構成されていることを特徴とするバス・インタフェース。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、映像信号、音声信号、圧縮信号またはデータ信号など、種々のデータの転送を行うためのバス・インタフェースおよびバス・インタフェースにおけるデータ転送方法に関する。
【０００２】
【従来の技術】
例えばコンピュータにおいては、ＣＰＵ（Central Processing Unit）と入出力制御装置などの各デバイス同士をバスと呼ばれる共通の伝送路で接続し、そのバスを介して、各デバイス間でデータの伝送が行われる。バスの代表的なものとしては、ＰＣＩ（Peripheral Component Interconnect）規格のバス（ＰＣＩバス）が知られている。ＰＣＩでのデータ転送は、マスタとターゲットとの間で行われる。一般には、ＣＰＵがマスタとなり、ターゲットとなるデバイスのアドレスを指定してデータの転送を行う。また、ＰＣＩバス上では、基本的にＣＰＵ経由でデータの転送を行っている。
【０００３】
【発明が解決しようとする課題】
しかしながら、ＰＣＩでは、バス全体として単一のクロック信号に基づいてデータ転送を行っているため、各デバイス間でのクロック信号の遅延差が生じやすくなる。このクロック信号の遅延差は、特に、物理的な延長を行った場合、および高クロックで高速なデータ転送を行う場合などに問題となってくる。このため、ＰＣＩでは、バスの物理的延長を行うこと、ならびに高速なデータ転送を安定して行うことなどに困難性がある。
【０００４】
本発明はかかる問題点に鑑みてなされたもので、その目的は、データ転送の高速化と安定化を図ると共に、バスの物理的な延長を容易に行うことができるバス・インタフェースにおけるデータ転送方法およびバス・インタフェースを提供することにある。
【０００５】
【課題を解決するための手段】
本発明によるバス・インタフェースにおけるデータ転送方法は、転送データの送受信を行う複数の転送用デバイスと、複数の転送用デバイスの制御を行う制御用デバイスと、制御用デバイスおよび各転送用デバイス同士を複数の信号線によって相互接続するバスとを備え、制御用デバイスからの制御コマンドに従って、制御コマンドで指示された複数の転送用デバイス間でバスを介して転送データの送受信を行うようになされたバス・インタフェースにおけるデータ転送方法であって、制御用デバイスと複数の転送用デバイスとにおいて、制御コマンドの出力と転送データの送受信とを異なるクロック信号に基づいて行うようにしたものである。
より具体的には、制御用デバイスから、バス全体の基準となる基準クロック信号をバス上に出力すると共に、その基準クロック信号に同期して、制御コマンドをバス上に出力し、各転送用デバイスにおいて、基準クロック信号に基づいてデータ転送用の他のクロック信号を生成し、その生成されたデータ転送用の他のクロック信号に同期して、複数の転送用デバイス間で転送データの送受信を行うようにしたものである。
【０００６】
本発明によるバス・インタフェースは、転送データの送受信を行う複数の転送用デバイスと、複数の転送用デバイスの制御を行う制御用デバイスと、制御用デバイスおよび各転送用デバイス同士を複数の信号線によって相互接続するバスとを備え、制御用デバイスからの制御コマンドに従って、制御コマンドで指示された複数の転送用デバイス間でバスを介して転送データの送受信を行うようにし、制御用デバイスと複数の転送用デバイスとにおいて、制御コマンドの出力と転送データの送受信とを異なるクロック信号に基づいて行うように構成したものである。
より具体的には、制御用デバイスが、バス全体の基準となる基準クロック信号をバス上に出力すると共に、その基準クロック信号に同期して、制御コマンドをバス上に出力し、各転送用デバイスが、基準クロック信号に基づいてデータ転送用の他のクロック信号を生成し、その生成されたデータ転送用の他のクロック信号に同期して、複数の転送用デバイス間で転送データの送受信を行うように構成されているものである。
【０００７】
本発明によるバス・インタフェースにおけるデータ転送方法およびバス・インタフェースでは、制御用デバイスと複数の転送用デバイスとにおいて、制御コマンドの出力と転送データの送受信とが異なるクロック信号に基づいて行われる。
【０００８】
異なるクロック信号は、以下のように出力される。制御用デバイスからは、バス全体の基準となる基準クロック信号が出力される。この基準クロック信号に同期して、制御コマンドがバス上に出力される。また、各転送用デバイスにおいて、基準クロック信号に基づいてデータ転送用の他のクロック信号が生成される。この他のクロック信号に同期して、複数の転送用デバイス間で転送データの送受信が行われる。
【０００９】
【発明の実施の形態】
以下、本発明の実施の形態について図面を参照して詳細に説明する。
【００１０】
本実施の形態に係るバス・インタフェースは、特に、画像データや通信データなどの大容量で高速性が要求されるデータを転送するのに適した汎用性のあるインタフェースである。このインタフェースの呼称は、仮に“ＳＭＡＳＨ  Ｂｕｓ”とする（ＳＭＡＳＨは、Sundry Material Associated Shower & Harvesterの略称）。
【００１１】
＜基本構造＞
図１は、本インタフェースの標準の構成例（標準バスモード）を示している。本インタフェースは、バス３０に、複数のインタフェース・デバイスを相互接続した構成となっている。各インタフェース・デバイスは、ＬＳＩ（Large Scale Integration）などにより構成されるものである。各インタフェース・デバイスは、初期化時に、バス・マスタ（Bus Master）１０またはアプリケーション（Application）２０（20-1,20-2,…20-N；（Ｎ＝１以上の整数））として設定される。バス・マスタ１０は、バス全体を制御するものである。複数のインタフェース・デバイスのうち、１つのデバイスのみがこのバス・マスタ１０として設定される。アプリケーション２０は、データの転送を目的としたものであり、複数のインタフェース・デバイスのうち、バス・マスタ１０以外の複数のデバイスが、アプリケーション２０として設定される。アプリケーション２０には、図示しないデータ転送装置またはデータ記録装置などが接続され、それらの装置との間でデータの入出力がなされるようになっている。
【００１２】
バス・マスタ１０およびアプリケーション２０は、図示しない外部ＣＰＵとの通信を行うための入出力インタフェースを有している。バス・マスタ１０およびアプリケーション２０となるデバイスのそれぞれには、バス・インタフェースの初期化時に、各デバイス同士を識別するための固有のＭＩＤ（Main ID）が設定されるようになっている。アプリケーション２０には、図５を用いて後述するように、複数の論理入出力チャンネルの設定が可能となっている。各論理入出力チャンネルには、その構成に応じて、固有のＳＩＤ（Sub ID）が設定されるようになっている。
【００１３】
図２は、図１に示した標準バスモードを拡張した構成（拡張バスモード）を示している。この構成は、標準バスモードのバス構成に、拡張バス４０を追加したものである。この拡張バスモードでは、バス・インタフェースの効率を上げるために、次のデータ転送の順番（優先度）を決めるためのステータス情報をステータスデータＳＤＡＴＡとして拡張バス４０（の拡張ステータスデータ・バス４１）で転送するようになっている。
【００１４】
ここで、本実施の形態において、バス・マスタ１０が、本発明における「制御用デバイス」の一具体例に対応する。また、アプリケーション２０が、本発明における「転送用デバイス」の一具体例に対応する。
【００１５】
図３は、本インタフェースの信号線の一覧を示している。図３において、「方向」のＭ（Master）の欄の“ｉｎ”は、その信号線上の信号がバス・マスタ１０側に入力されることを示す。また、「方向」のＭ（Master）の欄の“ｏｕｔ”は、その信号線上の信号がバス・マスタ１０側から出力されるものであることを示す。“ｉｎ／ｏｕｔ”は、信号の入出力が双方向であることを示す。同様に、「方向」のＡ（Application）の欄の“ｉｎ”は、その信号線上の信号がアプリケーション２０側に入力されることを示し、“ｏｕｔ”は、その信号線上の信号がアプリケーション２０側から出力されるものであることを示す。例えば、基準クロック信号ＣＬＫは、バス・マスタ１０側から出力（ｏｕｔ）され、アプリケーション２０側に入力（ｉｎ）される。
【００１６】
標準バスモードでのバス３０には、図１および図３に示したように、７種類の信号線が設けられている。すなわち、後述する制御コマンドＣＭＤおよびデータ（ＤＡＴＡ）の共通の信号線であるコマンド／データ・バス３１と、各制御用の信号ＣＬＫ，ＲＥＦ，ＦＲＡＭＥのための３つの信号線と、各割り込み信号ＴＩＮＴ，ＲＩＮＴ，ＢＥＲＲ用の３つの信号線との７種類の信号線が設けられている。コマンド／データ・バス３１は、標準として、３２ビット幅のデータバスである。なお、コマンド／データ・バス３１を、１６ビット幅のバスとして設定することもできる。
【００１７】
この標準バスモードでの各信号線に入出力される信号について簡単に説明すると、まず、基準クロック信号ＣＬＫは、バス３０の基準となるクロックであり、バス・マスタ１０からアプリケーション２０へと出力されるものである。データ転送用クロック信号ＲＥＦは、データ転送のためのクロックであり、このクロックに同期してコマンド／データ・バス３１上にデータが出力される。これらのクロック信号ＣＬＫ，ＲＥＦのクロック周期は、基本的に同じである。フレーム信号ＦＲＡＭＥは、コマンド／データ・バス３１上のデータの有効出力時間を示すものであり、コマンド／データ・バス３１がデータ転送に使用されているか否かを確認するための信号として用いられる。３種類の割り込み信号ＴＩＮＴ，ＲＩＮＴ，ＢＥＲＲは、緊急時にバス制御を変更したい場合などに用いられるものであり、アプリケーション２０からバス・マスタ１０へと出力される。このうち、送信側割り込み信号ＴＩＮＴは、送信側のアプリケーション２０から出力される割り込み信号である。受信側割り込み信号ＲＩＮＴは、受信側のアプリケーション２０から出力される割り込み信号である。バス・エラー割り込み信号ＢＥＲＲは、データ転送のエラーを知らせるための割り込み信号であり、受信側のアプリケーション２０から出力される。
【００１８】
一方、拡張バスモードの拡張バス４０には、図２および図３に示したように、データ転送の優先度に関連する制御コマンドおよびステータスデータＳＤＡＴＡの共通の信号線である拡張ステータスデータ・バス４１と、拡張バス４０における各制御用の信号ＳＲＥＦ，ＳＦＲＡＭＥ，ＳＣＭＤのための３つの信号線との４種類の信号線が設けられている。
【００１９】
この拡張バスモードでの各信号線に入出力される信号について簡単に説明すると、ステータス転送クロック信号ＳＲＥＦは、拡張バス４０におけるデータ転送のためのクロックであり、このクロックに同期して拡張ステータスデータ・バス４１上にデータが出力される。ステータス・フレーム信号ＳＦＲＡＭＥは、拡張ステータスデータ・バス４１上のデータの有効出力時間を示すものである。ステータス・コマンドＳＣＭＤは、拡張ステータスデータ・バス４１上の信号が、ステータスデータＳＤＡＴＡであるか、コマンド信号ＣＭＤであるかの判別に用いられる。
＜内部構造＞
【００２０】
バス・マスタ１０となるデバイスは、図４（Ａ）に示したように、ＩＣ(Integrated Circuit)化された制御回路部１１を備えている。制御回路部１１は、ステータスセンスデータ・メモリ（Status Sense Data Memory）８１、プライオリティセレクト・レジスタ（Priority Select Register）８２およびログ・メモリ（Log Memory）８３を有している。制御回路部１１はまた、タイムスタンプ・ジェネレータ（Time Stamp Generator）８４を有している。
【００２１】
ステータスセンスデータ・メモリ８１は、すべての転送元（送信側）となるアプリケーション２０のＭＩＤ，ＳＩＤの情報を格納するメモリである。ＭＩＤ，ＳＩＤの情報は、例えば外部ＣＰＵによって初期化設定時に書き込まれる。プライオリティセレクト・レジスタ８２は、後述するデータ転送の優先順位の情報を保持するメモリである。ログ・メモリ８３は、各種エラー情報を記録するためのメモリである。エラー情報は、後述するStatus SenseコマンドおよびActive ID Setコマンドなどに対するステータス応答がなかった場合や、後述するＣＲＣエラーが検出された場合などに記録される。タイムスタンプ・ジェネレータ８４は、例えば３２ｂｉｔのカウンタである。
【００２２】
アプリケーション２０となるデバイスは、図４（Ｂ）に示したように、ＩＣ化された制御回路部２１と、転送データが入出力される入出力ポート２２とを備えている。制御回路部２１は、バッファ・メモリ（Buffer Memory）９１およびPIDメモリ（PID Memory）９２を有している。制御回路部２１はまた、タイムスタンプ・ジェネレータ（Time Stamp Generator）９３と、レシーブドPIDメモリ（Recieved PID Memory）９４とを有している。
【００２３】
バッファ・メモリ９１は、送受信するパケットデータを一時的に格納するためのメモリである。PIDメモリ９２は、バッファ・メモリ９１に格納されているパケットデータの情報を格納するためのメモリであり、例えば、パケットデータのサイズやTime Stamp値などの情報を格納する。レシーブドPIDメモリ９４は、受信すべき送信側のアプリケーション２０のＭＩＤ，ＳＩＤの情報を格納するためのメモリである。受信すべきＭＩＤ，ＳＩＤの情報は、例えば初期化設定時に書き込まれる。タイムスタンプ・ジェネレータ９３は、バス・マスタ１０のタイムスタンプ・ジェネレータ８４と同様、例えば３２ｂｉｔのカウンタである。タイムスタンプ・ジェネレータ９３で生成されるTime Stamp値（ＴＭ）は、バス転送に要する時間を算出し、各データ間の相対時間差を演算する場合に用いられる。ＴＭは、リアルタイム性が要求される転送データ、例えばＭＰＥＧ（Moving Picture Experts Group）規格のデータ、特にＭＰＥＧ２−ＴＳ（Transport Stream）規格のデータを転送するときなどに利用される。
【００２４】
アプリケーション２０となる１つのデバイスには、入出力ポート２２として、物理入出力ポートが４つ（ポート１〜４）設けられている。また、これら４つの物理入出力ポートの組み合わせにより、バス幅の異なる複数パターンの論理入出力チャンネルの設定が可能となっている。また、各ポートには、論理入出力チャンネルの構成に応じて、その識別子となるＳＩＤが設定される。
【００２５】
すなわち、図５（Ａ）〜（Ｄ）に示したように例えば４種類の論理入出力チャンネルの設定が可能である。まず、各物理入出力ポートごとに設定された８ビットバス幅の４つの論理入出力チャンネルの構成（図５（Ａ））。次に、２つの物理入出力ポートによって構成された１つの１６ビットバス幅の論理入出力チャンネルと、他の２つの物理入出力ポートのそれぞれによって構成された２つの８ビットバス幅の論理入出力チャンネルとの構成（図５（Ｂ））。また、それぞれが２つの物理入出力ポートによって構成された２つの１６ビットバス幅の論理入出力チャンネルの構成（図５（Ｃ））。また、４つの物理入出力ポートによって構成された１つの３２ビットバス幅の論理入出力チャンネルの構成（図５（Ｄ））。それぞれの構成において、ＳＩＤは、図示したように各論理入出力チャンネルに対応して設定される。
【００２６】
図２０および図２１は、それぞれアプリケーション２０およびバス・マスタ１０におけるクロック関連の処理回路を示している。これらの図では、最終段または初段の回路のみを簡略化して示す。
【００２７】
図２０（Ａ）に示したように、アプリケーション２０の送信側（Transmission）の処理回路２０Ｔは、Ｆ／Ｆ回路（フリップフロップ回路）５１，５２，５３，５４を有している。Ｆ／Ｆ回路５１，５２，５３，５４は、それぞれ、ＦＲＡＭＥ，ＤＡＴＡ，ＴＩＮＴ，ＢＥＲＲの各信号の処理回路として設けられている。Ｆ／Ｆ回路５１，５２，５３，５４のクロック端子には、基準クロック信号ＣＬＫが入力される。送信側の処理回路２０Ｔは、また、データ転送用クロック信号ＲＥＦを遅延させるためのディレイ回路を有している。
【００２８】
図２０（Ｂ）に示したように、アプリケーション２０の受信側（Reception）の処理回路２０Ｒは、Ｆ／Ｆ回路５５，５６，５７，５８を有している。Ｆ／Ｆ回路５５，５６は、それぞれＦＲＡＭＥ，ＤＡＴＡの各信号の処理回路として設けられている。Ｆ／Ｆ回路５５，５６のクロック端子には、データ転送用クロック信号ＲＥＦが入力される。Ｆ／Ｆ回路５７，５８は、それぞれＲＩＮＴ，ＢＥＲＲの各信号の処理回路として設けられている。Ｆ／Ｆ回路５７，５８のクロック端子には、基準クロック信号ＣＬＫが入力される。
【００２９】
図２１に示したように、バス・マスタ１０は、Ｆ／Ｆ回路６１〜６７を有している。Ｆ／Ｆ回路６１，６２は、それぞれ、ＦＲＡＭＥ，ＤＡＴＡの各信号の最終段の処理回路として設けられている。Ｆ／Ｆ回路６３，６４は、それぞれ、ＦＲＡＭＥ，ＤＡＴＡの各信号の入力段の処理回路として設けられている。Ｆ／Ｆ回路６５，６６，６７は、それぞれＴＩＮＴ，ＲＩＮＴ，ＢＥＲＲの各信号の処理回路として設けられている。
【００３０】
＜ドライブ特性＞
従来、ＰＣＩなどの一般的なバスにおけるドライバとして、Ｃ−ＭＯＳ（Complementary  Metal-Oxide Semiconductor）やＬＶＴＴＬ（Low Voltage TTL）などの特性が使用されているが、これらは、本インタフェースのように高い動作周波数（１００ＭＨZ以上）のバス構成を考えた場合、ドライブ駆動能力や対ノイズ特性の点で不適切である。本インタフェースにおいては、１００ＭＨZを超えるような動作周波数を実現するために、バスドライバとしてＬＶＤＳ（Low Voltage Differential Signaling）またはＢＬＶＤＳ（Bus LVDS）を採用している。
【００３１】
図６に、ＬＶＤＳ，ＢＬＶＤＳおよびＣ−ＭＯＳの主要な特性を比較して示す。図６に示したように、ＬＶＤＳ，ＢＬＶＤＳは、Ｃ−ＭＯＳに比べて低電力、低ノイズであることなどの利点がある。例えばＢＬＶＤＳをドライバとして使用することにより、１チャンネル当たり最低でも２００Ｍｂｐｓの転送速度が保持できる。また、接続できるドライバ数も２０個以上になる。
【００３２】
図７（Ｂ）は、ＢＬＶＤＳを用いたバスの構成例を示している。この例では、バス１１３に一対のドライバ１１１とレシーバ１１２とが複数接続された構成となっている。バス１１３の両端は抵抗ＲTにより終端されている。ドライバ１１１は、図７（Ａ）に示したように、入力信号ＤIN，ＤＥに応じて信号ＤＯ＋，ＤＯ−を出力する。レシーバ１１２は、差動入力回路となっている。レシーバ１１２は、信号ＲＩ＋，ＲＩ−，ＲＥの入力に応じて信号ＲOUTを出力する。ドライバ１１１およびレシーバ１１２の出力は、共にトライステート（３ステート）となっている。図７（Ｂ）に示した構成により、マルチポイント間での双方向のデータ通信が可能となる。
【００３３】
＜主な仕様＞
図８（Ａ），（Ｂ）に、本インタフェースの特性および機能を、ＰＣＩバスと比較して示す。
【００３４】
図８（Ａ）に示したように、ＰＣＩにおいては信号の制御線が標準で１７本あるのに対し、本インタフェースでは、３本のみであり、制御の簡易化が図られている。これは、制御コマンドとデータとを共にコマンド／データ・バス３１上に出力するようにしたことによる。また、動作周波数（バスクロック）は１００ＭＨｚ以上であり、ＰＣＩに比べて高い周波数となっている。転送レートに関しては、３Ｇｂｐｓ以上の転送速度を有している。従って、本インタフェースは、ＰＣＩで標準的に用いられているバス幅３２ビット、クロック周波数３３ＭＨZの３倍以上の転送レートを有している。このスペックには余力があるため、より高速なデータ転送が可能である。データの転送方式は、ＰＣＩではバースト転送（複数バイトのデータのブロックを連続して一気に転送する方法）となっているが、本インタフェースでは、パケット方式となっている。
【００３５】
本インタフェースは、主として画像ならびに通信データなどの転送を最適に行うことができるように、図８（Ｂ）に示した機能を有している。以下、各機能の概略を説明する。
【００３６】
・複数の受信（Multi Cast）
本インタフェースでは、ある時間において、コマンド／データ・バス３１上に存在するデータは、１つの送信側のアプリケーション２０からのデータのみとなっている。しかし、その出力データは、複数の受信側のアプリケーション２０で受けることができる。そのため、受信側のアプリケーション２０は、必要なデータだけを受け取り、不必要なデータに関しては無視する機能を持っている。受信側のアプリケーション２０は、送られてきたパケットデータに含まれる送信側のアプリケーション２０のＭＩＤ，ＳＩＤの情報に応じて、必要であればデータを受信する。なお、ＰＣＩでは、データの送受信がデバイス間で１対１となっており、複数の受信には対応していない。
【００３７】
・多重化（Multiplex）
本インタフェースでは、複数の送信側のアプリケーション２０から出力されたデータを、バス上で時分割的に多重化して転送することができる。受信側のアプリケーション２０は、複数の別々の送信側のデータに対して、指定したデータのみを選択的に受信することができる。
【００３８】
・複数のデータ幅（Multi Width）
本インタフェースでは、データ幅は決まっておらず、可変となっている。従って、コマンド／データ・バス３１が例えば３２ビット幅の場合、データ幅を８ビットにすれば、同時に４つのデータが転送できることになる。同様に、データ幅を１６ビットにすれば２つのデータが転送できる。なお、ＰＣＩでは、例えばバス幅が３２ビットで、１６ビット幅のデータが複数ある場合、複数のデータを同時にまとめて転送することはできない。この場合、１６ビットのデータに「null」のデータを加えて形式上３２ビットのデータにし、複数回データ転送を行う必要がある。
【００３９】
・転送の優先指定（Data Priority）
複数のアプリケーション２０で送りたいデータがある場合、各データに優先度を付けることができる。これにより、あまり遅れては困るようなデータに対して高い優先度を与えておけば、そのデータを優先して転送することができる。優先度の情報は、各アプリケーション２０において生成され、それがステータスデータとしてバス・マスタ１０に送られる。優先度の情報は、図２７を用いて後述するように、バッファメモリ９１（図４（Ｂ））内におけるデータの格納状況などに基づいて生成される。
【００４０】
・ＭＰＥＧ２−ＴＳ対応
本インタフェースは、ＭＰＥＧ規格、特にＭＰＥＧ２−ＴＳのデータ転送にも対応している。ＭＰＥＧ２−ＴＳのデータ転送には、リアルタイム性が要求され、データ転送の時刻管理を行う必要がある。この時刻管理のために、Time Stampの機能が設けられている。
【００４１】
・伝送エラー対策
例えば、バス・マスタ１０からの各種制御コマンド（後述するStatus SenseコマンドおよびActive ID Setコマンドなど）に対する応答がない場合、ならびにデータ転送時にＣＲＣエラーが生じた場合などには、再度コマンドまたはデータの伝送を試みる処理（リトライ）を行う機能がある。また、リトライした状況をログ・メモリ８３に記録する機能がある。なお、ＰＣＩでは、伝送エラーの検出とその通知をする機能はあるものの、リトライを行う機能はない。
【００４２】
＜パケット構成＞
本インタフェースでは、転送時のデータ構成としてパケット形式を採用しており、転送速度が許容されれば任意のデータ長を転送可能となっている。図９（Ａ），（Ｂ）は、そのパケット構成を示している。パケット構成は、コマンド転送の場合（図９（Ａ））とデータ転送の場合（図９（Ｂ））とで異なっている。
【００４３】
コマンド転送の場合は、全体として３２ビットまたは６４ビット構成のパケットとなる。構成要素としては、制御コマンドが入るＣＭＤフィールドと、制御コマンドに付随するパラメータが入るＰＲ１，ＰＲ２フィールドとがある。ＰＲ２は、６４ビット構成の場合に設けられるものであり、３２ビット構成の場合は設けられない。
【００４４】
・ＣＭＤ
制御コマンドは８ビットで定義される。ただし、使用できるアドレス範囲はｈ００〜ｈＢＦ（０〜１１１１）までとなっている。ｈＣ０〜ｈＦＦまでは、データ転送のパケットに使用される。上位６ビットでコマンドの種類を表し、下位２ビットは、コマンドを実行するデバイスの範囲を示している。下位２ビットの意味は以下のとおりである。
ｂ００：すべてのデバイスとポートに対して実行する。
ｂ０１：ＰＲ１の中にあるＭＩＤで指定されたデバイスのみに実行する。
ｂ０２：ＰＲ１の中にあるＭＩＤで指定されたデバイスのＳＩＤで指定されたポートに対して実行する。
ｂ０３：未定義
・ＰＲ１，ＰＲ２
コマンドに付随するパラメータ。ＰＲ１は２４ビット、ＰＲ２は３２ビットで構成されている。ＰＲ１の基本構成は、上位７ビットがＭＩＤを、５ビットがＳＩＤを、下位１２ビットが実質的なパラメータを示している。ただし、ＰＲ１，ＰＲ２は、コマンドの種類によって内容が変わる。
【００４５】
データ転送の場合のパケット構成は、大まかに分類して、パケットの種類を示すheader部分と、データが格納されるpayload部分と、パケットが正常に転送されたか否かを確認するためのＣＲＣ部分とに分かれている。
【００４６】
header部分は、以下で説明するように、６４ビット構成の場合には、ＴＭフィールドが追加される。
【００４７】
・ｈｅａｄｅｒ
ＣＤ：Commmand/Data（２ｂｉｔ）……パケットがコマンド転送かデータ転送かを判断するためのコード。データ転送の場合は、ｂ１１が割り当てられている。
ＭＤ：Header Mode（２ｂｉｔ）……パケットのヘッダフォーマットのモードを決めるコード。以下の４つのコードがある。
０：ＬＮ＋ＭＩＤ＋ＳＩＤ（３２ｂｉｔ）……最小ヘッダフォーマット。転送に必要な最低限のパラメータが設定される。
１：ＬＮ＋ＭＩＤ＋ＳＩＤ＋ＴＭ（６４ｂｉｔ）……最小ヘッダフォーマットにＴＭが追加された追加ヘッダフォーマット。ＭＰＥＧ２−ＴＳのデータなど、入力と出力の同期を取りたいときなどに使用する。
２，３：未定義
ＬＮ：Length of Payload（１３ｂｉｔ）……payload部分の長さを設定する。単位はバイト単位で０〜８１１１１の値まで設定できる。
ＭＩＤ：Main ID（７ｂｉｔ）……このデータを出力したバス上に接続されているデバイスのMain IDを設定する。これにより、どのデバイスからのデータであるかを判断する。
ＳＩＤ：Sub ID（５ｂｉｔ）……このデータを出力したバス上に接続されているデバイスのSub IDを設定する。Main IDと合わせることにより、どのデバイスのどのポートからのデータであるかを判断する。
ＴＭ：Time Stamp（３２ｂｉｔ）……基本的には、ＭＰＥＧ２−ＴＳのデータを転送するときに使用される。Time Stampは、システムにおいて同時刻で同じ値を示すもので、データが、バス３０に接続されているデバイスに入力された時間を設定する。ＭＰＥＧ２−ＴＳに用いられる場合は、ＭＰＥＧ２−ＴＳのＰＣＲ（program clock reference）のbaseの下位２３ビットとextensionの９ビットを設定する。
【００４８】
・ｐａｙｌｏａｄ
転送するデータを格納するための領域。データの長さはヘッダのＬＮで指定される。８ビットを基本単位としているが、例えば図１０および図１１に示したようにデータの構成は任意に設定できる。最後のデータがバス幅に対して足りない長さである場合には、空いている部分に‘０’を入れて転送する。
【００４９】
・ＣＲＣ
正常にデータ転送が行われたか否かを確認するためのデータである。ＣＲＣにより、伝送上のビット・エラーを検出できる。データの生成方法は、８ビット単位で行う。コマンド／データ・バス３１として３２ビット幅のバスを使用している場合は、４つのＣＲＣのデータが生成され、それぞれ独立している。そのため、ＣＲＣの長さはバス幅で決まり、８ビット単位での拡張ができるような構成になっている。
【００５０】
ＣＲＣの計算方法は、以下のように、式（１）で表される生成多項式Ｇ（Ｘ）を用いて、［数１］で示したように行う。payloadで‘０’が入った場合は、それも含めて計算を行う。
【００５１】
Ｇ（Ｘ）＝Ｘ8＋Ｘ6＋Ｘ5＋Ｘ3＋１  ……（１）
【００５２】
【数１】
0003941096.tif 000002
【００５３】
図１２は、ＣＲＣの計算を行うための基本回路を示している。この基本回路は、マトリクス演算回路７１とシフトレジスタ７２とを備えて構成されている。シフトレジスタ７２の初期状態は、ｈＦＦである。マトリクス演算回路７１から出力されたデータＴは、シフトレジスタ７２を介してＯＤ（current data）として出力される。ＯＤは、マトリクス演算回路７１にも出力される。マトリクス演算回路７１では、ＩＤ（input data）とＯＤとに対して［数１］で示したような所定のマトリクス演算を施す。
【００５４】
ところで、本インタフェースにおいて、コマンド／データ・バス３１のバス幅は、標準で３２ビットであるが、１６ビット幅に設定することも可能である。データ転送の場合のパケット構成は、コマンド／データ・バス３１のバス幅とpayloadに格納されるデータの長さとに応じた構造となる。
【００５５】
図１０（Ａ）〜図１０（Ｄ）は、バス幅を３２ビットに設定してデータ転送を行う場合のパケット構造の例である。このうち、図１０（Ａ）は、payloadに８ビット幅のデータを１６バイト格納して転送する場合のデータの並びを示している。Ｄ１〜Ｄ１６が、payloadに格納されるデータである。Ｃ１〜Ｃ４は、ＣＲＣのデータを示す。図１０（Ｂ）は、payloadに８つの１６ビットデータ（Ｄ１〜Ｄ８）を格納して転送する場合のデータの並びを示している。図１０（Ｃ）は、payloadに５つの２４ビットデータ（Ｄ１〜Ｄ５）を格納して転送する場合のデータの並びを示している。この場合、最後のデータＤ５がバス幅に対して足りない長さとなるので、空き部分に‘０’が入る。図１０（Ｄ）は、payloadに４つの３２ビットデータ（Ｄ１〜Ｄ４）を格納して転送する場合のデータの並びを示している。
【００５６】
図１１（Ａ）〜図１１（Ｄ）は、バス幅を１６ビットに設定してデータ転送を行う場合のパケット構造の例である。このうち、図１１（Ａ）は、payloadに１６個の８ビットデータ（Ｄ１〜Ｄ１６）を格納して転送する場合のデータの並びを示している。図１１（Ｂ）は、payloadに８つの１６ビットデータ（Ｄ１〜Ｄ８）を格納して転送する場合のデータの並びを示している。図１１（Ｃ）は、payloadに５つの２４ビットデータ（Ｄ１〜Ｄ５）を格納して転送する場合のデータの並びを示している。この場合にも、図１０（Ｃ）の場合と同様、最後のデータＤ５の後に‘０’が入る。図１１（Ｄ）は、payloadに４つの３２ビットデータ（Ｄ１〜Ｄ４）を格納して転送する場合のデータの並びを示している。
【００５７】
図１０（Ａ）〜図１０（Ｄ）および図１１（Ａ）〜図１１（Ｄ）に示したパケット構造では、１つのパケット内に複数のデータが格納された構造となっているが、これら複数のデータは、同一種類のデータを分割したものであっても良いし、それぞれが異なる種類のデータであっても良い。このように、データ幅の設定を可変にし、１つのパケット内に同一または複数種類のデータを含めることで、同一または複数種類のデータを、複数個同時にバス上に出力することが可能になる。
【００５８】
また、図１０（Ａ）〜図１０（Ｄ）および図１１（Ａ）〜図１１（Ｄ）に示したパケット構造は、すべてバッファ・メモリ９１を利用して構築しても良いし、論理入出力チャンネルの設定に対応付けて構築するようにしても良い。例えば、図５（Ａ）に示したように論理入出力チャンネルの設定がなされていれば、図１０（Ａ）に示したパケット構造を簡単に実現できる。また例えば、図５（Ｃ）に示したように論理入出力チャンネルの設定がなされていれば、図１０（Ｂ）に示したパケット構造を簡単に実現できる。このように、論理入出力チャンネルの設定に応じて１つのパケット内に同一または複数種類のデータを含めることができる。
【００５９】
＜コマンドの概要＞
本インタフェースの制御は、バス・マスタ１０となるデバイスが制御コマンドを送り、各アプリケーション２０がそれを受け取り解釈・実行することで行われる。基本的な制御コマンドは、図１３に示したとおりである。図１３には、基本的な制御コマンドのみを示しているが、空いているコマンドのコードには他のものを定義することができる。
【００６０】
図１３に示したコマンドを大まかにグループ分けすると、初期化の場合に使用するコマンドとデータ転送のときに使用されていくコマンドとに分かれる。Initialize&Bus Control，PCR Control，Priority，Interruptのコマンドグループは、初期化の場合に使用する。また、Data Control，Statusは、データ転送のときに頻繁に使用する。
【００６１】
次に、以上のように構成されたバス・インタフェースの動作を説明する。
【００６２】
＜バス全体の基本動作＞
まず、図１の標準バスモードの接続例での基本的な動作について説明する。バス・マスタ１０からは、本インタフェース全体の基準となる基準クロック信号ＣＬＫがそれ用の信号線に出力されると共に、その基準クロック信号ＣＬＫに同期したバス制御コマンドがコマンド／データ・バス３１上に出力される。アプリケーション２０側は、入力された基準クロック信号ＣＬＫを基に、バス・マスタ１０から出力された制御コマンドを取り込み、そのコマンドに応じた処理を行う。制御コマンドの中には、アプリケーション２０側からコマンド／データ・バス３１上にデータを出力することを要求するものがある。その場合は、データ転送用クロック信号ＲＥＦに同期して、アプリケーション２０からコマンド／データ・バス３１上にデータが出力される。
【００６３】
バス・マスタ１０は、常時バス３０の占有状態などを監視しており、コマンド／データ・バス３１上でのデータ転送が終了しているか否かを確認して、制御コマンドの出力タイミングを見計らっている。この確認は、フレーム信号ＦＲＡＭＥを確認することにより行う。また、緊急時にバス制御を変更したい場合などには、アプリケーション２０側から割り込み信号ＴＩＮＴ，ＲＩＮＴ，ＢＥＲＲが出力される。この場合、バス・マスタ１０は、割り込み信号ＴＩＮＴ，ＲＩＮＴ，ＢＥＲＲに応じたバス制御を行う。
【００６４】
図２の拡張バスモードでは、さらに、バス３０の効率を上げるために、次のデータ転送の順番を決めるためのステータスデータＳＤＡＴＡが拡張ステータスデータ・バス４１上に出力される。この場合、バス・マスタ１０は、送信側のアプリケーション２０のステータスを読み込むためのコマンドを自動的に送出する。送信側のアプリケーション２０は、バス・マスタ１０からのコマンドに応答して、ステータスを拡張ステータスデータ・バス４１上に送出する。バス・マスタ１０は、拡張ステータスデータ・バス４１を介して読み込んだ送信側のアプリケーション２０のステータスから、優先度の情報を調べる。バス・マスタ１０は、最も優先度の高い送信側のアプリケーション２０からデータ転送を開始させるために、そのＭＩＤ，ＳＩＤを指定したActive ID Setコマンドをバス上に送出する。指定された送信側のアプリケーション２０は、Active ID Setコマンドに応答して、データをコマンド／データ・バス３１上に出力し始める。
【００６５】
ここで、本インタフェースの基本的な動作のアルゴリズムをまとめると、次のようになる。
【００６６】
動作１：各デバイスのリセット直後は、すべての信号出力は停止している。
動作２：バス・マスタ１０がコマンド信号ＣＭＤを出力する。
動作３：対応したアプリケーション２０がデータを出力する。もし、データがない場合は動作４に進む。
動作４：データの出力が終わったときには、動作２に戻る。
【００６７】
この基本動作は、３種類の割り込み信号ＴＩＮＴ，ＲＩＮＴ，ＢＥＲＲがアクティブになるか、バス・マスタ１０を強制的にとめる以外に変わらない。
【００６８】
＜タイミングチャート＞
次に、図１４〜図１８のタイミングチャートを参照して、バス・マスタ１０からのコマンド信号ＣＭＤとそれに対するデータ（ＤＡＴＡ，ＳＤＡＴＡ）の出力タイミングについて説明する。本インタフェースでは、データ転送に関し、バスを高速に使用するタイプ１（図１４、図１５）と安全性を考えたタイプ２（図１６、図１７）との２種類の転送方式がある。また、拡張バスモードにしたときのステータス転送に関しては、１種類（図１８）のみとなる。
【００６９】
図１４の例は、コマンド信号ＣＭＤに対して出力データが存在する場合である。最初のコマンド信号ＣＭＤ１（図１４（Ｄ））がコマンド／データ・バス３１を介してバス・マスタ１０から送られてきた場合、それに対するデータＤＡＴＡ１（図１４（Ｄ））は１クロックでアプリケーション２０から送られる。ＤＡＴＡ１は、例えば、標準的なバス幅である３２ビット幅なら３２ビット以下のデータ長ということになる。この最初のコマンド信号ＣＭＤ１からＤＡＴＡ１までは、コマンド／データ・バス３１に出力するデバイスがバス・マスタ１０からアプリケーション２０に切り替わるため、すなわち、コマンド信号ＣＭＤ１はバス・マスタ１０から出力され、ＤＡＴＡ１はアプリケーション２０から出力されるため、バスの切り替えの時間のために基準クロック信号ＣＬＫ（図１４（Ａ））で最低１クロックの間隔を空ける必要がある。同様に、最初のＤＡＴＡ１から次のコマンド信号ＣＭＤ２までも最低１クロックの間隔を空ける必要がある。
【００７０】
コマンド信号ＣＭＤ１およびＤＡＴＡ１に対応して、データ転送用クロック信号ＲＥＦ（図１４（Ｂ））は、一度ロー（Ｌ）レベルになってからハイ（Ｈ）レベルになる。また、データフレーム信号ＦＲＡＭＥ（図１４（Ｃ））は、コマンド信号ＣＭＤ１およびＤＡＴＡ１が出力されている期間ではローレベルになる。データ転送用クロック信号ＲＥＦならびにデータフレーム信号ＦＲＡＭＥは、信号を出力したデバイスから出力される。すなわち、バス・マスタ１０は、コマンド信号ＣＭＤ１と共に、信号ＲＥＦ，ＦＲＡＭＥを出力する。また、アプリケーション２０は、ＤＡＴＡ１と共に、信号ＲＥＦ，ＦＲＡＭＥを出力する。従って、各信号ＲＥＦ，ＦＲＡＭＥ，ＤＡＴＡを、同時刻に出力しているデバイス（アプリケーション２０）は一つであるということになる。
【００７１】
図１４において、２番目のコマンド信号ＣＭＤ２は、データ転送を１クロックでは送ることができなかったときの場合を示している。コマンド信号ＣＭＤ２とそれに対する最初のデータＤＡＴＡ２との間には、バスの切り替わり時間のため１クロック以上の間隔を空ける必要がある。ただし、この場合には、各データＤＡＴＡ２〜ＤＡＴＡ７の間には出力デバイスの切り替えはないため、アプリケーション２０は連続してＤＡＴＡの出力が可能となる。データ転送用クロック信号ＲＥＦならびにデータフレーム信号ＦＲＡＭＥに関しては、ＤＡＴＡの転送数が変化しても動作は変わらず、１クロック単位でＤＡＴＡに対して同じ動作を行う。
【００７２】
図１５の例は、コマンド信号ＣＭＤを連続して送る場合である。コマンド信号ＣＭＤはバス・マスタ１０しか出力しないため、連続して送ることができる。データ転送用クロック信号ＲＥＦならびにデータフレーム信号ＦＲＡＭＥに関しては、図１４の例と同様に動作する。すなわち、この例では、コマンド信号ＣＭＤが出力されている期間アクティブ（ローレベル）となるデータフレーム信号ＦＲＡＭＥがバス・マスタ１０から出力される。
【００７３】
図１６および図１７は、図１４および図１５のタイプ１に比べて若干データ転送のスピードは落ちるが、バスの転送を確実にするための転送方式である。図１６は、図１４の例と同様、コマンド信号ＣＭＤに対してＤＡＴＡが存在する場合であり、図１７は、図１５の例と同様、コマンド信号ＣＭＤを連続して送る場合である。この方式では、図１４および図１５のタイプ１に比べて、コマンド信号ＣＭＤならびにＤＡＴＡの転送の最後の部分に、１クロック分のデータフレーム信号ＦＲＡＭＥがハイレベルになるサイクルがある。このモードでは、データフレーム信号ＦＲＡＭＥがハイレベルで基準クロック信号ＣＬＫが供給されるときは、バス・インタフェースの初期化を行うようになっている。これにより、ノイズなどでバスの転送が一時的に乱れても、このパケットのみデータの転送の誤りが止まって、次の正常な処理を早急に行うことが可能となる。
【００７４】
図１８は、拡張バスモード（図２）でのステータス転送時のタイミングを示している。拡張バスモードでは、できるだけ高速な転送を心がけるために標準バスのタイプ２（図１６、図１７）のものはない。拡張バスモードでは、ステータスデータＳＤＡＴＡを非常に高速に転送するため、一度間違って転送されても再度読み込むことにより正確なステータスを読むことが可能となる。
【００７５】
拡張バスモードにおいて、バス・マスタ１０からのコマンド信号ＣＭＤとそれに応答するステータスデータＳＤＡＴＡ（図１８（Ｅ））は、基準クロック信号ＣＬＫ（図１８（Ａ））の１クロック単位で送られる。コマンド信号ＣＭＤからステータスデータＳＤＡＴＡまでの時間は、最低１クロック以上必要となる。ステータス転送クロック信号ＳＲＥＦ（図１８（Ｂ））およびステータス・フレーム信号ＳＦＲＡＭＥ（図１８（Ｃ））は、ＤＡＴＡ転送時におけるデータ転送用クロック信号ＲＥＦおよびデータフレーム信号ＦＲＡＭＥ（図１４（Ｂ），（Ｃ））の場合と同様、コマンド信号ＣＭＤおよびステータスデータＳＤＡＴＡが出力されている期間ではローレベルになる。
【００７６】
ステータス・コマンドＳＣＭＤ（図１８（Ｄ））は、拡張ステータスデータ・バス４１上にコマンド信号ＣＭＤが出力されている場合にはハイレベルとなり、ステータスデータＳＤＡＴＡが出力されている場合にはローレベルとなる。なお、他の信号の出力タイミングについては、図１４および図１５に示した標準バスモードと同様である。
【００７７】
＜クロック関連の動作＞
次に、クロック関連の処理について説明する。本インタフェースは、全体としては基準クロック信号ＣＬＫを基に動作している。このとき、データの転送が低速である場合には、基準クロック信号ＣＬＫとコマンド／データ・バス３１上に出力されるデータとの遅延の差は無視できる状態であるとみなされる。しかしながら、高速な転送である場合には、この遅延差は無視できなくなり、検討が必要になってくる。
【００７８】
まず、制御コマンドＣＭＤに関してであるが、これはバス・マスタ１０から出力される。また、基準クロック信号ＣＬＫも同じバス・マスタ１０から出力されるため、基準クロック信号ＣＬＫの信号線とコマンド／データ・バス３１とを平行に配線していけば、各アプリケーション２０に対しては基準クロック信号ＣＬＫとコマンドとが伝わっていく遅延量は、ほぼ等しくなってくる。このため、制御コマンドＣＭＤに関しては、基準クロック信号ＣＬＫを基準にしてアプリケーション２０に取り込んでも問題が生じないことになる。
【００７９】
一方、アプリケーション２０から出力されるデータに関しては、どのアプリケーション２０がデータを出力するかによって、バス・マスタ１０ならびに他のアプリケーション２０における、基準クロック信号ＣＬＫとデータとの遅延量が違ってきてしまう。これは、基準クロック信号ＣＬＫがバス・マスタ１０から出力されるのに対して、コマンド／データ・バス３１上のデータが任意のアプリケーション２０から出力されてしまうためである。このため、バスの物理的長さによっては基準クロック信号ＣＬＫの１周期以上のデータ遅延が生じてしまう場合も考えられる。本インタフェースでは、これを解決するために、任意のアプリケーション２０から出力されるデータに同期したデータ転送用のクロック信号ＲＥＦを作っている。これにより、コマンド／データ・バス３１上のデータに関してはデータ転送用クロック信号ＲＥＦを基準に取り込めば遅延に関する問題はなくなる。
【００８０】
以上のコマンド／データ・バス３１上に出力される制御コマンドＣＭＤおよびデータと、それを取り込むための基準となるクロック信号ＣＬＫ，ＲＥＦとの関係を、図１９にまとめて示す。
【００８１】
次に、図２０および図２１を参照して、各クロック信号の作用について説明する。
【００８２】
図２０（Ａ）に示したように、アプリケーション２０の送信側（Transmission）の回路２０Ｔにおいては、入力された基準クロック信号ＣＬＫを、ＤＡＴＡならびにフレーム信号ＦＲＡＭＥの最終段のＦ／Ｆ回路５１，５２のクロック信号とする。データ転送用クロック信号ＲＥＦは、基準クロック信号ＣＬＫにディレイ回路を通して作られる。このディレイ回路は、ＤＡＴＡとＦＲＡＭＥの出力端子までの遅延量とＲＥＦの遅延量とを合わせるためのものである。
【００８３】
図２０（Ｂ）に示したように、アプリケーション２０の受信側（Reception）の回路２０Ｒにおいては、入力されたデータ転送用クロック信号ＲＥＦを、初段のＦ／Ｆ回路５５，５６のクロック信号とする。Ｆ／Ｆ回路によりセットアップ時間のホールド時間を満足させる若干の調整が必要になってくるが、この時間は固定量であるため一定のディレイ回路で調整が可能である。
【００８４】
図２１に示したように、バス・マスタ１０においては、内部で発生した基準クロック信号ＣＬＫを、ＤＡＴＡとフレーム信号ＦＲＡＭＥの最終段のＦ／Ｆ回路６１，６２のクロック信号とする。また、バス・マスタ１０のデバイスをアプリケーション２０として使用する場合は、Receptionの回路が追加される。
【００８５】
割り込み信号ＴＩＮＴ，ＲＩＮＴ，ＢＥＲＲに関しては、基準クロック信号ＣＬＫと同期を取らなくても良いため、図２０（Ａ），（Ｂ）に示したように、アプリケーション２０では単純に、入力された基準クロック信号ＣＬＫを、最終段のＦ／Ｆ回路５３，５４，５７，５８のクロック信号として出力する。バス・マスタ１０においては、図２１に示したように、内部で発生した基準クロック信号ＣＬＫを、初段のＦ／Ｆ回路６５，６６，６７のクロック信号として入力信号をラッチする。
【００８６】
＜各機能によるデータ転送の例＞
次に、図２２〜図２４を参照して、図８（Ｂ）に示したMulti Width（複数のデータ幅）、Multi Cast（複数の受信）、Multiplex（多重化）の各機能を用いたデータ転送の例について説明する。ここでは、バス３０に、１つのバス・マスタ１０と、４つのアプリケーション20-1，20-2，20-3，20-4とが接続された構成の場合を例に説明する。バス・マスタ１０となるデバイスのＭＩＤ（Main ID）は０とする。アプリケーション20-1，20-2，20-3，20-4となるデバイスのＭＩＤはそれぞれ、ＭＩＤ１，ＭＩＤ２，ＭＩＤ３，ＭＩＤ４とする。各アプリケーション20-1，20-2，20-3，20-4は、複数の入出力ポートを有している。各アプリケーション20-1，20-2，20-3，20-4の入出力ポートには、その論理入出力チャンネルの設定（図５参照）に応じてＳＩＤが付されている。バス３０に接続しているデバイスの指定はＭＩＤによって行うことができる。また、ポートの指定はＳＩＤによって行うことができる。
【００８７】
図２２は、Multi Widthの機能を用いたデータ転送の例である。この例では、ＭＩＤ１のアプリケーション20-1のＳＩＤ０のポートから出力されたデータＤ１が、ＭＩＤ３のアプリケーション20-3のＳＩＤ０のポートへと転送される。また、アプリケーション20-1のＳＩＤ１のポートから出力されたデータＤ２が、ＭＩＤ４のアプリケーション20-4のＳＩＤ０のポートへと転送される。また、ＭＩＤ２のアプリケーション20-2のＳＩＤ０のポートから出力されたデータＤ３が、ＭＩＤ３のアプリケーション20-3のＳＩＤ２のポートへと転送される。また、アプリケーション20-2のＳＩＤ２のポートから出力されたデータＤ４が、ＭＩＤ４のアプリケーション20-4のＳＩＤ３のポートへと転送される。また、ＭＩＤ４のアプリケーション20-4のＳＩＤ２のポートから出力されたデータＤ５が、ＭＩＤ１のアプリケーション20-1のＳＩＤ３のポートへと転送される。
【００８８】
図２２の例において、アプリケーション20-1からは、２つのデータＤ１，Ｄ２が出力されているが、バス３０のコマンド／データ・バス３１が３２ビット幅であれば、データＤ１，Ｄ２のデータ幅をそれぞれ例えば１６ビットにすることにより、これらの２つのデータＤ１，Ｄ２を１つのパケットデータとして同時にバス上に出力することができる。これにより、バス幅を有効利用することができる。アプリケーション20-2から出力されるデータＤ３，Ｄ４についても同様である。
【００８９】
図２３は、Multi Castの機能を用いたデータ転送の例である。この例では、ＭＩＤ１のアプリケーション20-1のＳＩＤ１のポートから出力されたデータＤ１１が、ＭＩＤ３のアプリケーション20-3のＳＩＤ１のポートとＭＩＤ４のアプリケーション20-4のＳＩＤ３のポートとに転送される。また、ＭＩＤ２のアプリケーション20-2のＳＩＤ０のポートから出力されたデータＤ１２が、ＭＩＤ３のアプリケーション20-3のＳＩＤ２のポートとＭＩＤ４のアプリケーション20-4のＳＩＤ０のポートとに転送される。また、アプリケーション20-2のＳＩＤ２のポートから出力されたデータＤ１３が、ＭＩＤ３のアプリケーション20-3のＳＩＤ０のポートとＭＩＤ４のアプリケーション20-4のＳＩＤ２のポートとに転送される。
【００９０】
このように、Multi Castの機能により、１つのデバイスから出力されたデータを、複数のデバイスで受信することができる。この場合、送信側のデバイスは、転送データに自身のＩＤの情報を付加したパケットデータを送信する。受信側のデバイスは、送られてきたパケットデータに含まれる送信側のデバイスのＭＩＤ，ＳＩＤの情報に応じて、必要であればデータを受信する。不必要であればそのデータに関しては無視する。
【００９１】
図２４は、Multiplexの機能を用いたデータ転送の例である。この例では、ＭＩＤ３のアプリケーション20-3のＳＩＤ２のポートに、ＭＩＤ１のアプリケーション20-1のＳＩＤ０のポートから出力されたデータＤ１１と、アプリケーション20-1のＳＩＤ１のポートから出力されたデータＤ１２と、ＭＩＤ２のアプリケーション20-2のＳＩＤ２のポートから出力されたデータＤ２２とがバス上多重化されて転送される。また、ＭＩＤ４のアプリケーション20-4のＳＩＤ０のポートに、ＭＩＤ１のアプリケーション20-1のＳＩＤ２のポートから出力されたデータＤ１３と、ＭＩＤ２のアプリケーション20-2のＳＩＤ０のポートから出力されたデータＤ２１とがバス上で多重化されて転送される。また、ＭＩＤ４のアプリケーション20-4のＳＩＤ３のポートに、ＭＩＤ１のアプリケーション20-1のＳＩＤ０のポートから出力されたデータＤ１１と、アプリケーション20-1のＳＩＤ１のポートから出力されたデータＤ１２と、ＭＩＤ２のアプリケーション20-2のＳＩＤ２のポートから出力されたデータＤ２２と、アプリケーション20-2のＳＩＤ３のポートから出力されたデータＤ２３とが多重化されて転送される。
【００９２】
このように、Multiplexの機能により、複数のデータを、バス上で時分割的に多重化し、１または複数のデバイスで受信することができる。受信側のデバイスは、多重化されたデータの各パケットデータに含まれる送信側のデバイスのＭＩＤ，ＳＩＤの情報を見て、必要であればデータを受信する。不必要であればそのデータに関しては無視する。複数のデータは、バス・マスタ１０の制御により、優先度を示すステータス情報に基づいて、時分割的に各送信側のデバイスから出力される。このとき、各送信側のデバイスは、転送するデータと共に、そのデータを出力していることを示すフレーム信号ＦＲＡＭＥを同時に出力する。バス・マスタ１０は、フレーム信号ＦＲＡＭＥに基づいて、バス３０の占有状態を監視すると共に、バスの占有状態に応じて制御コマンドを出力し、バス上で転送データが時分割的に多重化されるよう、各送信側のデバイスの制御を行う。
【００９３】
＜バス初期化の手順＞
次に、図２５の流れ図に従って、本インタフェースの初期化動作について説明する。この初期化動作は原則として電源投入直後１回のみ実施される。
【００９４】
本インタフェースに電源が投入されると、まず、パワーオンリセット（ＩＤ取得）の処理が行われる（ステップＳ１）。電源投入後、各インタフェース・デバイスにはリセット信号が入り、各デバイスは初期状態になる。このとき、各デバイスのＩＤ（ＭＩＤ）が設定される。
【００９５】
次に、マスタ取得処理が行われる（ステップＳ２）。すなわち、外部ＣＰＵによって、バス３０に接続されているデバイスの一つが、バス・マスタ１０として設定される。次に、バスの転送方式の設定処理が行われる（ステップＳ３）。バス・インタフェースの初期化のためにバス・マスタ１０からResetコマンドが送られる場合がある。また、その次に、Transfer Protocol Setコマンドを送り、データ転送方式の決定を行う場合がある。
【００９６】
さらに、ＭＰＥＧ２−ＴＳ使用時には、システムＰＣＲの設定が行われる（ステップＳ４）。システム全体のＰＣＲを合わせるために、PCR，Time StampならびにTime Stamp Offsetを設定する。
【００９７】
＜データ転送の手順＞
図２６は、データ転送の基本的な手順の一例を示している。最初に、バス・マスタ１０は、送信側のデータの存在を調べるために、すべての送信側のアプリケーション２０のステータスを読み込み、そのステータスを調べる処理を行う。この処理を行うため、バス・マスタ１０は、まず、送信側のアプリケーション２０のステータスを読み込むためのコマンド（Status Senseコマンド）を自動的にバス上に送出する（ステップＳ１１）。送信側のアプリケーション２０は、このバス・マスタ１０からのコマンドに応答して、ステータスをバス３０（のコマンド／データ・バス３１または拡張ステータスデータ・バス４１）に送る。このステータスには、データの優先度を示す情報が入っている。
【００９８】
バス・マスタ１０は、送信側のアプリケーション２０から読み込んだステータスに含まれる優先度の情報を調べる（ステップＳ１２）。そして、バス・マスタ１０は、最も優先度の高い送信側のアプリケーション２０からデータ転送を開始させるために、そのＭＩＤ，ＳＩＤを指定したActive ID Setコマンドをバス上に送出する。指定されたＭＩＤ，ＳＩＤを持った送信側のアプリケーション２０は、データをコマンド／データ・バス３１に出力し始める（ステップＳ１３）。
【００９９】
受信側のアプリケーション２０は、送信側のアプリケーション２０から出力されたデータを内部に取り込む。このとき、受信側のアプリケーション２０は、パケット最後部のＣＲＣデータをチェックすることにより、データを正常に受信できたか否かをチェックする（ステップＳ１４）。ＣＲＣデータが正常な場合（ステップＳ１４；Ｙ）、１回目のデータ転送の処理は終了するが、送信側のアプリケーション２０は、次のデータ転送に備え、Active ID Setコマンドを待つ。また、バス・マスタ１０は、次のデータ転送を行うために、送信側のステータスを調べる処理を行う。
【０１００】
一方、エラーを検出した場合（ステップＳ１４；Ｎ）は、受信側のアプリケーション２０は、エラー割り込み信号ＢＥＲＲをアクティブにしてバス・マスタ１０にその旨を通知する。バス・マスタ１０は、エラー割り込み信号ＢＥＲＲを検出すると、前もって設定されているエラー復帰動作を開始する（ステップＳ１５）。このとき、場合によって再度データの読み込みが行われる。また、バス・マスタ１０は、送信側割り込み信号ＴＩＮＴを検出した場合、送信側のアプリケーション２０のステータスを読み出し、ステップＳ１２の処理に進む。
【０１０１】
以上のように、基本的には、バス・マスタ１０が送信側のアプリケーション２０のステータスを読み込んで優先度を調べ、データの転送を行わせる、という処理を繰り返す。これにより、順次データの転送が行われる。しかしながら、より高速なデータ転送を行う場合は、ステータスを読み込む時間が惜しまれる場合がある。その場合は、ステータスの情報を読み込んだものに対して、最優先のものだけではなく、２番目のもの、あるいは３番目のものについても調べておき、それらを順番に転送することによりステータスの読み込みの回数を減らすことができる。この場合、転送に問題が生じるエラーが発生したときには、ＴＩＮＴ，ＲＩＮＴならびにＢＥＲＲの割り込み信号により制御することになる。
【０１０２】
＜優先度に関するステータスデータ＞
転送データの優先度を決定するのは、各データのステータスを基に行う。ステータスは、例えば、以下のようなDevice Status，ＴＩＮＴ，Buffer Over，Priority StatusおよびData Existを含んで構成されている。
【０１０３】
・Device Status  ……デバイスの有無を確認する。
・ＴＩＮＴ  ……転送側の割り込みが発生したかどうかの状態を示す。
・Buffer Over（ＢＯ）  ……バッファにデータが入りきれなくなったかどうかの状態を示す。
・Buffer Full（ＢＦ）  ……バッファが満杯かどうかの状態を示す。
・Priority Status  ……データの優先度を示す。
・Data Exist（ＤＥ）  ……データがバッファにあるかどうかの状態を示す。
【０１０４】
Device Statusは、送られてきたステータスの有効性を示す。優先度としては、ＴＩＮＴが最も優先度が高く、次にBuffer Over、Buffer Fullの順となっている。Data Existでデータがあった場合、Priority Statusの優先度を比較して、優先度の高いものを先に転送する。
【０１０５】
図２７は、送信側のアプリケーション２０において行われる、上述の優先度を示すステータスの生成方法の例を示している。Data Existは、ＯＲ回路１０１にバッファ・メモリ９１（図４（Ｂ））内のパケット数を示すビットデータを入力することにより生成される。Data Existは、例えば１ビットのデータであり、フラグの状態は、データが存在すれば‘１’、データが存在しなければ‘０’となる。
【０１０６】
Priorityは、図示しない外部ＣＰＵまたはバス制御コマンドによって前もって設定された例えば８ビットのPriorityとバッファ・メモリ９１内に格納されたパケット数とを、乗算回路１０２によって乗算し、その結果得られた例えば下位８ビットのデータとする。
【０１０７】
Buffer Fullは、前もって設定されたValue of Buffer Fullの値とバッファ・メモリ９１内に格納されたパケット数とを、比較回路ＣＭＰ２によって比較することにより得られる。Buffer Fullは、例えば１ビットのデータであり、フラグの状態は、バッファが満杯とみなされれば‘１’、満杯でなければ‘０’となる。Buffer Overも、Buffer Fullと同様、例えば１ビットのデータであり、前もって設定されたValue of Buffer Overの値とバッファ・メモリ９１内に格納されたパケット数とを、比較回路ＣＭＰ１によって比較することにより得られる。
【０１０８】
ＴＩＮＴは、前もって設定されたＴＩＮＴ条件（割り込み条件）に基づいて生成される。ＴＩＮＴは、例えば１ビットのデータであり、フラグの状態は、割り込みがあれば‘１’、割り込みがなければ‘０’となる。
【０１０９】
図２７に示したステータス１１０のような構成にすることで、バス・マスタ１０において、各送信側のアプリケーション２０から得た複数のステータスデータの比較を行う場合、ＴＩＮＴ，Buffer Over，Priority StatusおよびData Existのすべてのビットをまとめて比較すれば良いことになる。これにより、バス・マスタ１０における比較用の回路の構成が非常に簡単になる。なお、あるステータスのすべてのビット値が‘０’である場合は、データがないと判断できる。
【０１１０】
＜個々の動作＞
次に、バス・マスタ１０およびアプリケーション２０の個々の動作についてより具体的に説明する。
【０１１１】
［バス・マスタの動作］
＜Status Senseコマンドの送出＞
図２８は、バス・マスタ１０によるStatus Senseコマンドの送出動作を示している。バス・マスタ１０は、送信側（データの転送元）のすべてのアプリケーション２０に対するStatus Senseコマンドを、コマンド／データ・バス３１上に送出する（ステップＳ２１）。拡張バスモードの場合には、拡張ステータスデータ・バス４１上に送出する。送信側のアプリケーション２０のＭＩＤ，ＳＩＤの情報は、初期化設定時にバス・マスタ１０内の所定のメモリ（ステータスセンスデータ・メモリ８１）に格納されている。
【０１１２】
バス・マスタ１０は、送信側のアプリケーション２０からステータスの応答が得られれば（ステップＳ２２；Ｙ）、この処理を終了する。一方、ステータスの応答が得られなかった場合（ステップＳ２２；Ｎ）には、バス・マスタ１０は、あらかじめ設定された回数だけ、Status Senseコマンドの送出処理を繰り返す処理を行う。すなわち、設定された回数内であれば（ステップＳ２３；Ｎ）、ステップＳ２１の処理に戻る。設定された回数を超えていれば（ステップＳ２３；Ｙ）、ステータスの読み込みに失敗したとみなし（ステップＳ２４）、その旨をエラー情報としてログ・メモリ８３（図４（Ａ））に記録する（ステップＳ２５）。
【０１１３】
Status Senseコマンドの送出によりステータスが得られたら、次に、送信側のアプリケーション２０に対してデータ転送を開始させるために、送信側のアプリケーション２０に対してActive ID Setコマンドを送出する。このActive ID Setコマンドの送出先を決定する処理には複数の方法がある。１つ目の方法としては、得られたステータスに基づいて優先順位を作成し、それをプライオリティセレクト・レジスタ８２に格納する。このプライオリティセレクト・レジスタ８２に格納された優先順位に基づいて、Active ID Setコマンドを送出する。他の方法として、優先順位によらないでする方法もある。この場合、ステータスセンスデータ・メモリ８１に格納されている順にStatus Senseコマンドを送出し、応答してきたステータス情報のＤＥフラグが１であれば、Active ID Setコマンドを送出する。さらに他の方法として、ステータスセンスデータ・メモリ８１に書き込まれている順にActive ID Setコマンドを送出する方法もある。この場合、Status Senseコマンドの送出は行わない。
【０１１４】
＜優先順位シーケンス＞
ここでは、優先順位に基づいて、Active ID Setコマンドを送出してデータ転送を開始させる方法について説明する。図２９に示したように、バス・マスタ１０は、常時、送信側割り込み信号ＴＩＮＴの監視を行っている。送信側割り込み信号ＴＩＮＴの検出がなされた場合（ステップＳ３１；Ｙ）には、後述するステップＳ４１以降の処理を行う。送信側割り込み信号ＴＩＮＴの検出がなされていない場合（ステップＳ３１；Ｎ）には、ステータスセンスデータ・メモリ８１から送信側のアプリケーション２０のＭＩＤ，ＳＩＤの情報を１つ得て（ステップＳ３２）、そのＭＩＤ，ＳＩＤのアプリケーション２０に対してStatus Senseコマンドを送出する（ステップＳ３３）。指定されたＭＩＤ，ＳＩＤを持つアプリケーション２０は、Status Senseコマンドに応答して、ステータスデータを送出する。
【０１１５】
応答してきたステータスデータのＤＥ（Data Exist）フラグ（図２７参照）が０であった場合（ステップＳ３４；Ｎ）、バス・マスタ１０は、ステータスセンスデータ・メモリ８１の次のアドレスに格納されているＭＩＤ，ＳＩＤの情報を得て、再びStatus Senseコマンドを送出する。より詳しくは、ステータスセンスデータ・メモリ８１のアドレスを示すポインタを＋１にし（ステップＳ３８）、次に、そのポインタの示すアドレスが最後のアドレスを超えているか否かの判断を行う（ステップＳ３９）。そのポインタの示すアドレスが最後のアドレスを超えておらず、有効なアドレス範囲内であれば（ステップＳ３９；Ｎ）、ステップＳ３２に戻り、ステータスセンスデータ・メモリ８１から、そのポインタの指し示すアドレスに格納されたＭＩＤ，ＳＩＤの情報を得て、再びStatus Senseコマンドを送出する。最後のアドレスを超えていれば（ステップＳ３９；Ｙ）、ステップＳ３１へ戻る。
【０１１６】
一方、応答してきたステータスデータのＤＥフラグが１であった場合（ステップＳ３４；Ｙ）は、転送すべきデータが存在しているということなので、バス・マスタ１０は、ステータスに含まれる優先度の情報に応じて、プライオリティセレクト・レジスタ８２の内容を更新する。この場合、バス・マスタ１０は、まず、プライオリティセレクト・レジスタ８２に格納されている他のＭＩＤ，ＳＩＤと優先順位を比較する（ステップＳ３５）。プライオリティセレクト・レジスタ８２は、優先度の高い４つの転送元の情報を格納しているので、優先順位の比較結果が４位以内であれば（ステップＳ３６；Ｙ）、プライオリティセレクト・レジスタ８２の順位（Ｏｒｄｅｒ）をあらたなものに変更し（ステップＳ３７）、ステップＳ３８の処理へ進む。優先順位の比較結果が４位以内でなければ（ステップＳ３６；Ｎ）、プライオリティセレクト・レジスタ８２の順位を変更することなく、ステップＳ３８の処理へ進む。
【０１１７】
以上のようにして、バス・マスタ１０は、ステータスセンスデータ・メモリ８１のメモリアドレスの最後に格納されているＭＩＤ，ＳＩＤになるまでStatus Senseコマンドを送出し、送信側の各アプリケーション２０のステータスを調べる。
【０１１８】
一方、送信側割り込み信号ＴＩＮＴが検出された場合（ステップＳ３１；Ｙ）、バス・マスタ１０は、ＴＩＮＴ処理要求（ＴＩＮＴ条件）のコマンドがオンであるか否かを調べる（ステップＳ４１）。ＴＩＮＴ処理要求のコマンドがオンである場合（ステップＳ４１；Ｙ）には、ステップＳ３２へ進む。ＴＩＮＴ処理要求のコマンドがオフであれば（ステップＳ４１；Ｎ）、どのアプリケーション２０からの割り込み要求であるのかを調べるための処理を行う。すなわち、まず、ステータスセンスデータ・メモリ８１のアドレスを示すポインタを０にし（ステップＳ４２）、ステータスセンスデータ・メモリ８１に格納されたＭＩＤ，ＳＩＤの情報を得て（ステップＳ４３）、Status Senseコマンドを送出する（ステップＳ４４）。
【０１１９】
応答してきたステータスデータの中のＴＩＮＴフラグが０であれば（ステップＳ４５；Ｎ）、バス・マスタ１０は、次のアドレスに格納されているＭＩＤ，ＳＩＤのステータスを調べるために、ステータスセンスデータ・メモリ８１のアドレスを示すポインタを＋１にし（ステップＳ４６）、ステップＳ４３に戻る。一方、応答してきたステータスデータの中のＴＩＮＴフラグが１であれば（ステップＳ４５；Ｙ）、バス・マスタ１０は、そのＭＩＤ，ＳＩＤに関して、ＴＩＮＴ処理要求のコマンドをオンにして（ステップＳ４７）、ステップＳ３１に戻る。
【０１２０】
図３０は、図２９の処理によって決定され、プライオリティセレクト・レジスタ８２に格納された優先度の情報に基づいて、送信側のアプリケーション２０に対してデータ転送を行わせる手順を示している。バス・マスタ１０は、プライオリティセレクト・レジスタ８２の中に、まだデータ転送を開始させていないものがあるか否かを調べる（ステップＳ５１）。未送出のデータがなければ（ステップＳ５１；Ｎ）、この判断を繰り返す。未送出のデータがあれば（ステップＳ５１；Ｙ）、プライオリティセレクト・レジスタ８２に格納されているもののうち、最も優先度の高いＭＩＤ，ＳＩＤの情報を得て（ステップＳ５２）、その得られたＭＩＤ，ＳＩＤのアプリケーション２０に対してActive ID Setコマンドを送出する（ステップＳ５３）。
【０１２１】
Active ID Setコマンドを送出後、所定の時間内に、指定されたＭＩＤ，ＳＩＤのアプリケーション２０からデータが転送開始されなければ（ステップＳ５４；Ｎ）、バス・マスタ１０は、あらかじめ設定された回数を超えるまで、Active ID Setコマンドを再送出する処理（リトライ）を繰り返す（ステップＳ５６；Ｎ）。データの転送が開始された場合（ステップＳ５４；Ｙ）であっても、データの受信側からエラー割り込み信号ＢＥＲＲの出力があれば（ステップＳ５５；Ｙ）、バス・マスタ１０は、リトライを行う。リトライの回数が設定回数を超えた場合（ステップＳ５６；Ｙ）には、ステップＳ５１に戻る。エラー割り込み信号ＢＥＲＲの出力がなければ（ステップＳ５５；Ｎ）、ステップＳ５１に戻る。以上の処理を繰り返すことにより、プライオリティセレクト・レジスタ８２に格納されたもののうち、優先度の高いＭＩＤ，ＳＩＤを持つアプリケーション２０から順にデータ転送が行われる。
【０１２２】
＜エラー処理＞
次に、伝送エラー対策としてバス・マスタ１０が行うエラー処理について説明する。ここでは伝送エラーとして、Status Senseコマンドに対する無応答およびActive ID Setコマンドに対する無応答、ならびにバス・エラー割り込み信号ＢＥＲＲが検出された場合のエラー処理について説明する。
【０１２３】
（１）Status Senseコマンドに対する無応答の場合のエラー処理
バス・マスタ１０は、Status Senseコマンドを送出しても、アプリケーション２０からそれに対するステータス応答がなかった場合、設定された回数までStatus Senseコマンドの送出処理に関してリトライを行う。そして、設定されたリトライ回数に達した場合は、以後そのＭＩＤ，ＳＩＤにはStatus Senseコマンドを送出しない。ただし、その後もStatus Senseコマンドを送出できるモードに設定することも可能である。また、リトライした状況はログ・メモリ８３に記憶しておく。ログ・メモリ８３の内容は、外部ＣＰＵから読み出すことが可能である。
【０１２４】
（２）Active ID Setコマンドに対する無応答の場合のエラー処理
バス・マスタ１０は、Active ID Setコマンドを送出してもアプリケーション２０からそれに対する応答がなかった場合、設定された回数までActive ID Setコマンドの送出処理に関してリトライを行う。そして、設定されたリトライ回数に達した場合は、以後そのＭＩＤ，ＳＩＤにはStatus SenseコマンドおよびActive ID Setコマンドを送出しない。ただし、その後もそれらのコマンドを送出できるモードに設定することも可能である。また、リトライした状況はログ・メモリ８３に記憶しておく。ログ・メモリ８３の内容は、外部ＣＰＵから読み出すことが可能である。
【０１２５】
（３）バス・エラー割り込み信号ＢＥＲＲが検出された場合のエラー処理
例えば、送信側のアプリケーション２０にActive ID Setコマンドを送出した後、受信側のアプリケーション２０でＣＲＣエラーが検出され、受信側のアプリケーション２０からバス・エラー割り込み信号ＢＥＲＲが送出されたとする。この場合、バス・マスタ１０は、設定された回数までActive ID Setコマンドの送出処理に関してリトライを行い、送信側のアプリケーション２０に再度、データ転送を行わせる。設定されたリトライ回数に達した場合は、以後そのＭＩＤ，ＳＩＤにはStatus SenseコマンドおよびActive ID Setコマンドを送出しない。ただし、その後もそれらのコマンドを送出できるモードに設定することも可能である。また、リトライした状況はログ・メモリ８３に記憶しておく。ログ・メモリ８３の内容は、外部ＣＰＵから読み出すことが可能である。
【０１２６】
［アプリケーションの動作］
＜コマンド処理＞
アプリケーション２０は、バス・マスタ１０からのコマンドを検出し、その処理を実行する。Active ID Setコマンドの場合は、コマンド／データ・バス３１上にデータの送信を開始する。Status Senseコマンドを受け付けた場合は、要求に応じたステータスデータをコマンド／データ・バス３１上に出力する。なお、拡張ステータスデータ・バス４１でStatus Senseコマンドを受け付けた場合は拡張ステータスデータ・バス４１へステータスデータを出力する。その他のコマンドを受け付けた場合は、即座に実行する。デバイス内に設定のないＳＩＤを指定したコマンドなど無効なコマンドを受け取った場合は、そのコマンドを無視する。
【０１２７】
＜受信パケット制御＞
レシーブドPIDメモリ９４（図４（Ｂ））に、受信すべき送信側のアプリケーション２０のＭＩＤ，ＳＩＤの情報をあらかじめ格納する。受信すべきＭＩＤ，ＳＩＤの情報は、例えば初期化設定時にバス・マスタ１０からコマンドに従って書き込まれる。コマンド／データ・バス３１上のパケットデータの受信は、このレシーブドPIDメモリ９４に格納されたＭＩＤ，ＳＩＤの情報とそのパケットデータに含まれるＭＩＤ，ＳＩＤとを比較して一致した場合に実行する。
【０１２８】
パケットデータの受信中はパケットデータに付加されているＣＲＣデータに基づいてＣＲＣ演算を実施する。データ受信終了直後、ＣＲＣエラーがなければ正常にデータを受信したものとする。ＣＲＣエラーが生じた場合は、バス・エラー割り込み信号ＢＥＲＲをアクティブにし、そのときのデータは受信しなかったものとする。また、正しくパケットデータを受信した場合、受信パケットデータの存在を示すため、PIDメモリ９２にそのパケットデータの情報を記録する。PIDメモリ９２に記録する情報としては、データサイズやTime Stamp値などである。
【０１２９】
［タイムスタンプ・ジェネレータを利用した転送時間の計測］
本インタフェースは、タイムスタンプ・ジェネレータ９３（図４（Ｂ））を利用することにより、転送データの送受信を行うのに要した時間を計測する機能を有している。次に、この転送時間の計測の機能について説明する。タイムスタンプ・ジェネレータ９３のリセットは、バス・マスタ１０からのリセット信号で行われる。バス・インタフェース全体として、Time Stampの値は同時刻で同じ値となる。すなわち、バス・マスタ１０のタイムスタンプ・ジェネレータ８４と各アプリケーション２０のタイムスタンプ・ジェネレータ９３は、互いに同期して動作し、それぞれ、同時刻において同一のタイムカウント値を出力する。
【０１３０】
以下、図３１を参照して、転送時間の計測の方法を具体的に説明する。ここでは、ＭＰＥＧ２−ＴＳ規格のパケットデータを転送する場合を例に説明する。送信側のアプリケーション２０Ｔは、外部からのパケットデータの入力が開始された時点におけるタイムスタンプ・ジェネレータ９３のTime Stampの値を、PIDメモリ９２に保存する。この値をTMinとする。この時、入力されたパケットデータのpayloadにはＭＰＥＧ規格での時刻管理情報であるＰＣＲが入っている。このＰＣＲの値をPCRinとする。送信側のアプリケーション２０Ｔは、これらTMinとPCRinとの値が含まれるパケットデータをコマンド／データ・バス３１上に出力する。
【０１３１】
受信側のアプリケーション２０Ｒは、受信したパケットデータを外部に出力するとき、その時点での自身のタイムスタンプ・ジェネレータ９３の値（TMgen）とパケットデータに付加されてきたTime Stampの値TMinとを比較し、その差（TMdiff＝TMgen−TMin）を求める。この求められた値TMdiffが、本インタフェースにおいてデータの送受信に要した時間、すなわち、データが送信側のアプリケーション２０Ｔに入力されてから、受信側のアプリケーション２０Ｒに転送され、出力されるまでの時間ということになる。
【０１３２】
受信側のアプリケーション２０Ｒはまた、パケットデータに含まれる時刻管理情報であるＰＣＲ値PCRinの補正を行う。すなわち、前述の計測時間TMdiffを、ＰＣＲ値PCRinに加算した値PCRoutを求める。
PCRout＝PCRin＋TMdiff
【０１３３】
最後に、バス全体のディレイ量を調整するために、あらかじめ設定されたTime Stamp Offset値（TMoffset）を、値PCRoutに加算する。これにより求められた値PCRrealが、実際に出力されるＰＣＲの値となる。
PCRreal＝PCRout＋TMoffset
【０１３４】
以上説明したように、本実施の形態に係るバス・インタフェースおよびそのデータ転送方法によれば、コマンド／データ・バス３１（および拡張ステータスデータ・バス４１）上での制御コマンドの出力と転送データの送受信とをパケット形式で行うようにしたので、例えばＰＣＩでのバースト転送と比較して、データの効率的な転送を行うことができる。
【０１３５】
また、制御コマンドと転送データとを、共にコマンド／データ・バス３１上で転送するようにしたので、例えばＰＣＩと比較して制御線の数を減らしたバス構成にすることができる。これにより、各デバイスの回路構成も含めてバス全体の構成をコンパクト化することが可能となると共に、バス制御の簡単化を図ることができる。
【０１３６】
また、バス・マスタ１０による制御コマンドの出力と、各アプリケーション２０における転送データの送受信とを別々のクロック信号ＣＬＫ，ＲＥＦに基づいて行うようにしたので、ＰＣＩのように単一のクロック信号のみに基づいて転送データの送受信を行う場合に比べて、データ転送の高速化と安定化を図ることができる。また、バスの物理的な延長も容易になる。
【０１３７】
また、１つのアプリケーション２０から送信された転送データを、複数の受信側のアプリケーション２０で受信する機能（Multi Cast機能）を有しているので、受信側のアプリケーション２０が複数ある場合であっても適切なデータ転送が可能となる。さらに、複数の送信側のアプリケーション２０から出力されたデータを、バス上で時分割的に多重化して転送する機能（Multiplex）を有しているので、特に、送信側のアプリケーション２０が複数ある場合であっても適切なデータ転送が可能となる。
【０１３８】
また、制御コマンドの出力処理または転送データの送受信処理にエラーが生じた場合に、伝送エラー対策として、それらの処理の再試行（リトライ）を行うようにしたので、データ転送のエラーに適切に対処することができる。
【０１３９】
また、送信側のアプリケーション２０から得たステータスデータに含まれる各転送データの優先度の情報に基づいて、バス・マスタ１０が、各転送データの転送の順番を決定し、その順番に従ってデータ転送が行われるよう、送信側のアプリケーション２０を制御するようにしたので、複数の転送データが存在する場合であっても、その優先度を考慮した適切なデータ転送を行うことができる。さらに、拡張バスモードでは、優先度を示す情報が含まれるステータスデータの送受信を、専用の拡張ステータスデータ・バス４１によって行うようにしたので、優先度の情報を効率的に転送することができ、転送データの送受信をより効率的に行うことができる。
【０１４０】
また、タイムスタンプ・ジェネレータ９３（図４（Ｂ））を利用することにより、転送データの送受信を行うのに要した時間を計測する機能を有しているので、リアルタイム性が要求されるデータ転送にも容易に対応できる。特に、その計測した時間に基づいて、ＭＰＥＧ２−ＴＳ規格のデータに含まれる時刻管理情報ＰＣＲの補正を行う機能をも有しているので、ＭＰＥＧ２−ＴＳ規格のデータに関して適切にデータ転送を行うことができる。
【０１４１】
また、データ幅の設定を可変にし、１つのパケット内に同一または複数種類のデータを複数含めることで、同一または複数種類のデータを、複数個同時にバス上に出力する機能（Multi Width）を有しているので、バス幅を有効利用して、データを効率的に転送することができる。例えば、個々の転送データの幅がバス幅より小さい場合などには、複数のデータを同時にバス上に出力することが可能になるので、ＰＣＩに比べて効率的なデータ転送を行うことができる。
【０１４２】
以上のことにより、映像信号、音声信号、圧縮信号、データ信号など、さまざまなデータを効率良く高速に転送することができ、また、転送時のエラーにも適切に対処できるなど、優れた機能を持つ汎用バスインタフェースを実現できる。
【０１４３】
【発明の効果】
以上説明したように、請求項１ないし３のいずれか１項に記載のバス・インタフェースにおけるデータ転送方法または請求項４記載のバス・インタフェースによれば、制御用デバイスと複数の転送用デバイスとにおいて、制御コマンドの出力と転送データの送受信とを異なるクロック信号に基づいて行うようにしたので、単一のクロック信号に基づいて転送データの送受信を行う場合に比べて、データ転送の高速化と安定化を図ることができると共に、バスの物理的な延長が容易になる。
【図面の簡単な説明】
【図１】本発明の一実施の形態に係るバス・インタフェースの標準的な構成例を示すブロック図である。
【図２】本発明の一実施の形態に係るバス・インタフェースの拡張された構成例を示すブロック図である。
【図３】本発明の一実施の形態に係るバス・インタフェースにおける信号線の一覧を示す説明図である。
【図４】本発明の一実施の形態に係るバス・インタフェースにおけるバス・マスタおよびアプリケーションの内部構成を示すブロック図である。
【図５】アプリケーションにおける論理入出力チャンネルの設定について示す説明図である。
【図６】各種バスドライバの特性を比較して示す説明図である。
【図７】ＢＬＶＤＳを用いたバスドライバの構成例を示す回路図である。
【図８】本発明の一実施の形態に係るバス・インタフェースの特性および機能を、ＰＣＩと比較して示す説明図である。
【図９】本発明の一実施の形態に係るバス・インタフェースにおいて転送されるコマンドおよびデータのパケット構造を示す説明図である。
【図１０】データバスを３２ビット幅に設定した場合の転送データのパケット構成の例を示す説明図である。
【図１１】データバスを１６ビット幅に設定した場合の転送データのパケット構成の例を示す説明図である。
【図１２】ＣＲＣの計算を行うための基本回路を示す回路図である。
【図１３】本発明の一実施の形態に係るバス・インタフェースにおいて使用される制御コマンドの概要を示した説明図である。
【図１４】バスを高速に使用する場合において、コマンドに対してデータが存在するときの各信号の出力タイミングを示すタイミングチャートである。
【図１５】バスを高速に使用する場合において、コマンドのみを連続して送る場合の各信号の出力タイミングを示すタイミングチャートである。
【図１６】データ転送の安全性を重視した場合において、コマンドに対してデータが存在するときの各信号の出力タイミングを示すタイミングチャートである。
【図１７】データ転送の安全性を重視した場合において、コマンドのみを連続して送る場合の各信号の出力タイミングを示すタイミングチャートである。
【図１８】拡張バスモードでの各信号の出力タイミングを示すタイミングチャートである。
【図１９】コマンド／データ・バス上に出力されるコマンドおよびデータと、それを取り込むための基準となるクロック信号との関係を示す説明図である。
【図２０】アプリケーションの送信側および受信側のクロック関連の処理回路の構成例を示す回路図である。
【図２１】バス・マスタにおけるクロック関連の処理回路の構成例を示す回路図である。
【図２２】  Multi Widthの機能について説明するためのブロック図である。
【図２３】  Multi Castの機能について説明するためのブロック図である。
【図２４】  Multiplexの機能について説明するためのブロック図である。
【図２５】本発明の一実施の形態に係るバス・インタフェースにおける初期化の手順を示す流れ図である。
【図２６】本発明の一実施の形態に係るバス・インタフェースにおけるデータ転送の基本的な手順を示す流れ図である。
【図２７】優先度を表すステータスの生成方法の例を示すブロック図である。
【図２８】  Status Senseコマンドの送出するときのバス・マスタの動作を示す流れ図である。
【図２９】データ転送の優先順位を決定するためのバス・マスタの動作を示す流れ図である。
【図３０】図２９の処理によって決定された優先順位に基づいて各アプリケーションにデータ転送を行わせるためのバス・マスタの動作を示す流れ図である。
【図３１】タイムスタンプ・ジェネレータを用いた転送時間の計測の機能について説明するためのブロック図である。
【符号の説明】
１０…バス・マスタ、１１，２１…制御回路部、２０（20-1，…20-N）…アプリケーション、２２…入出力ポート、３０…バス、３１…コマンド／データ・バス、４０…拡張バス、４１…拡張ステータスデータ・バス、８１…ステータスセンスデータ・メモリ、８２…プライオリティセレクト・レジスタ、８３…ログ・メモリ、８４，９３…タイムスタンプ・ジェネレータ、９１…バッファ・メモリ、９２…PIDメモリ、９４…レシーブドPIDメモリ。
【図１】
0003941096.tif 000003
【図２】
0003941096.tif 000004
【図３】
0003941096.tif 000005
【図４】
0003941096.tif 000006
【図５】
0003941096.tif 000007
【図６】
0003941096.tif 000008
【図７】
0003941096.tif 000009
【図８】
0003941096.tif 000010
【図９】
0003941096.tif 000011
【図１０】
0003941096.tif 000012
【図１１】
0003941096.tif 000013
【図１２】
0003941096.tif 000014
【図１３】
0003941096.tif 000015
【図１４】
0003941096.tif 000016
【図１５】
0003941096.tif 000017
【図１６】
0003941096.tif 000018
【図１７】
0003941096.tif 000019
【図１８】
0003941096.tif 000020
【図１９】
0003941096.tif 000021
【図２０】
0003941096.tif 000022
【図２１】
0003941096.tif 000023
【図２２】
0003941096.tif 000024
【図２３】
0003941096.tif 000025
【図２４】
0003941096.tif 000026
【図２５】
0003941096.tif 000027
【図２６】
0003941096.tif 000028
【図２７】
0003941096.tif 000029
【図２８】
0003941096.tif 000030
【図２９】
0003941096.tif 000031
【図３０】
0003941096.tif 000032
【図３１】
0003941096.tif 000033