(57)【特許請求の範囲】
【請求項１】
通信路の上流側に配置されている第１の通信装置と通信を行うための第１のインタフェースと、
前記通信路の下流側に配置されている第２の通信装置と通信を行うための第２のインタフェースと、
データを蓄積するバッファと、
前記第１の通信装置に送信するデータを生成する処理手段と、
前記第２のインタフェースを介した前記第２の通信装置からの受信時に、前記第１のインタフェースを介して前記第１の通信装置への送信を行っているか否かを判断する判断手段と、
前記第２の通信装置から受信する前記データは送信先の識別情報を含んでおり、
前記第２の通信装置から受信したデータの該識別情報により認識される送信先が前記第１の通信装置でない場合は、前記受信したデータを破棄し、該受信したデータを前記第１のインタフェースを用いて送信せず、
前記第２の通信装置から受信したデータの該識別情報により認識される送信先が前記第１の通信装置であり、かつ、前記判断手段が前記第１のインタフェースを介して前記第１の通信装置への送信を行っていると判断した場合は、前記第２の通信装置から受信したデータを前記バッファに蓄積して該送信の終了後に該バッファに蓄積される該受信したデータを前記第１の通信装置へ送信し、
前記第２の通信装置から受信したデータの該識別情報により認識される送信先が前記第１の通信装置であり、かつ、前記判断手段が前記第１のインタフェースを介して前記第１の通信装置への送信を行っていないと判断した場合は、前記第２の通信装置から受信したデータを前記バッファに蓄積せずに、前記第２のインタフェースを介して該受信したデータを、前記第１の通信装置へ送信する制御手段と、を有することを特徴とする、
電子デバイス。
【請求項２】
前記制御手段は、前記バッファに前記第２の通信装置から受信したデータが蓄積されている場合に、前記処理手段で生成したデータと前記バッファに蓄積されているデータとを交互に前記第１の通信装置へ送信可能にすることを特徴とする、
請求項１記載の電子デバイス。
【請求項３】
前記第２の通信装置から受信した前記データは、先頭に前記送信先の識別情報が記述されていることを特徴とする、
請求項１記載の電子デバイス。
【請求項４】
通信路の上流側に配置されている第１の通信装置と通信を行うための第１のインタフェースと、
前記通信路の下流側に配置されている第２の通信装置と通信を行うための第２のインタフェースと、
データを蓄積するバッファと、
前記第１の通信装置に送信するデータを生成する処理手段と、
前記第２のインタフェースを介した前記第２の通信装置からの受信時に、前記第１のインタフェースを介して前記第１の通信装置への送信を行っているか否かを判断する判断手段と、
前記判断手段が前記第１のインタフェースを介して前記第１の通信装置への送信を行っていると判断した場合は、前記第２の通信装置から受信したデータを前記バッファに蓄積して該送信の終了後に該バッファに蓄積される該受信したデータを前記第１の通信装置へ送信し、前記判断手段が前記第１のインタフェースを介して前記第１の通信装置への送信を行っていないと判断した場合は、前記第２の通信装置から受信したデータを前記バッファに蓄積せずに、前記第２のインタフェースを介して該受信したデータを、前記第１の通信装置へ送信する制御手段と、
予め定めた時間間隔で送信要求を出力するタイマと、を備えており、
前記制御手段は、前記第１の通信装置への送信が可能である状態になると、前記送信要求の有無を確認し、前記送信要求が有る場合は前記処理手段で生成した前記データを前記第１の通信装置へ送信することを特徴とする、
電子デバイス。
【請求項５】
前記第１のインタフェースは、前記第１の通信装置とシリアル通信を行い、
前記第２のインタフェースは、前記第２の通信装置とシリアル通信を行うことを特徴とする、
請求項１〜４のいずれか１項記載の電子デバイス。
【請求項６】
前記シリアル通信は、送信線と受信線とからなる二線式のシリアル通信であることを特徴とする、
請求項５記載の電子デバイス。
【請求項７】
通信路の上流側に配置されている第１の通信装置と通信を行うための第１のインタフェースと、前記通信路の下流側に配置されている第２の通信装置と通信を行うための第２のインタフェースと、データを蓄積するバッファと、を備えた電子デバイスで実行される方法であって、
前記第１の通信装置に送信するデータを生成するステップと、
前記第２のインタフェースを介した前記第２の通信装置からの受信時に、前記第１のインタフェースを介して前記第１の通信装置への送信を行っているか否かを判断するステップと、
前記第２の通信装置から送信先の識別情報を含む前記データを受信するステップと、
前記第２の通信装置から受信したデータの該識別情報により認識される送信先が前記第１の通信装置でない場合は、前記受信したデータを破棄し、該受信したデータを前記第１のインタフェースを用いて送信しないステップと、
前記第２の通信装置から受信したデータの該識別情報により認識される送信先が前記第１の通信装置であり、かつ、前記第１のインタフェースを介して前記第１の通信装置への送信を行っていると判断した場合は、前記第２の通信装置から受信したデータを前記バッファに蓄積して該送信の終了後に該バッファに蓄積された該受信したデータを前記第１の通信装置へ送信するステップと、
前記第２の通信装置から受信したデータの該識別情報により認識される送信先が前記第１の通信装置であり、かつ、前記第１のインタフェースを介して前記第１の通信装置への送信を行っていないと判断した場合は、前記第２の通信装置から受信したデータを前記バッファに蓄積せずに、前記第２のインタフェースを介して該受信したデータを、前記第１の通信装置へ送信するステップと、を含むことを特徴とする、
通信制御方法。
【請求項８】
前記電子デバイスが、
前記第２の通信装置から、先頭に前記送信先の識別情報が記載されたデータを受信することを特徴とする、
請求項７記載の通信制御方法。
【請求項９】
通信路の上流側に配置されている第１の通信装置と通信を行うための第１のインタフェースと、前記通信路の下流側に配置されている第２の通信装置と通信を行うための第２のインタフェースと、データを蓄積するバッファと、を備えた電子デバイスで実行される方法であって、
前記第１の通信装置に送信するデータを生成するステップと、
前記第２のインタフェースを介した前記第２の通信装置からの受信時に、前記第１のインタフェースを介して前記第１の通信装置への送信を行っているか否かを判断するステップと、
前記第１のインタフェースを介して前記第１の通信装置への送信を行っていると判断した場合は、前記第２の通信装置から受信したデータを前記バッファに蓄積し、該送信の終了後に該バッファに蓄積された該受信したデータを前記第１の通信装置へ送信するステップと、
前記第１のインタフェースを介して前記第１の通信装置への送信を行っていないと判断した場合は、前記第２の通信装置から受信したデータを前記バッファに蓄積せずに、前記第２のインタフェースを介して該受信したデータを、前記第１の通信装置へ送信するステップと、
予め定めた時間間隔で送信要求を出力するステップと、
前記第１の通信装置への送信が可能である状態になると、前記送信要求の有無を確認し、前記送信要求が有る場合に前記生成したデータを前記第１通信装置へ送信するステップと、を含むことを特徴とする、
通信制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のマイクロプロセッサやＩＣ（Integrated Circuit）、あるいはこれらを実装した電子装置等の電子デバイスに関する。特に直列に接続された他の電子デバイスとの間で、シリアル通信によりデータの送受信を行う電子デバイスに関する。
【背景技術】
【０００２】
ホストコントローラとなる電子デバイスに対して、シリアル通信によってデータの送受信が可能な複数の電子デバイスを直列に接続することで通信システムを構成することがある。このような通信システムでは、例えば、１つの通信チャネルのシリアル通信信号線に、複数の通信対象となる電子デバイスが接続され、通信対象となる電子デバイスを切り替えながら通信が行われる。通信対象を明確にするために、シリアル通信信号線とは別にチップ選択信号線（ＣＳ信号線）を設けてもよいが、この場合、信号線の数が増大して通信システムの構成が複雑になる。そのために、データに通信対象を識別するための識別情報を付加して通信対象を明示したパケットを用いる、パケット通信が有効である。
【０００３】
パケット通信では、例えばホストコントローラに２つの電子デバイスが直列接続された通信システムにおいて、後段に位置する電子デバイスにパケットを送信する場合には、その前段に位置する電子デバイスがパケットを中継する。そのために、信号線数と信号配線長を最低限に抑えた通信システムを構築することが可能である。
【０００４】
特許文献１では、ホストコントローラに対して、シリアル通信信号を受信する中継子局と、中継子局からさらに直列接続された他の中継子局とによって構成される通信システムが開示される。このシステムでは、各中継子局に対して、ホストコントローラから透過的に通信可能である。
特許文献２では、ホストコントローラに対して複数個の電子デバイスが直列接続された制御システムが開示される。各電子デバイスは、自デバイス宛でないパケットを受信した場合に、入力信号を切り替えて後段に接続された他の電子デバイスへ該パケットを中継する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平１０−１９０６９７号公報
【特許文献２】特開２００２−４４０８９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
このようにホストコントローラに複数の電子デバイスを直列接続する通信システムは、少ない信号線数や短い信号線長により構成できる。このような構成では、ホストコントローラからの要求に応じて各電子デバイスが応答を返す通信形式であれば、ホストコントローラにより各電子デバイスからのデータの送信タイミングを調整できるために、データの衝突が発生しない。しかし、ホストコントローラ以外の電子デバイスから自発的にデータを送信可能とする場合には、各電子デバイスの送信タイミングが重なってしまい、データの衝突が発生して安定環境が提供できない可能性がある。
そのために、予め各電子デバイスが自発的な通信を開始するタイミングを規定する時分割通信により、データの衝突を防止する方法がある。しかしこのような時分割通信を行うと、実効通信レートが下がってしまうという問題がある。
【０００７】
本発明は、以上のような従来の問題に鑑み、直列に複数接続された電子デバイス間の通信を安定して行うことが可能な電子デバイスを提供することを主たる課題とする。
【課題を解決するための手段】
【０００８】
上記の課題を解決する本発明の電子デバイスは、通信路の上流側に配置されている第１の通信装置と通信を行うための第１のインタフェースと、前記通信路の下流側に配置されている第２の通信装置と通信を行うための第２のインタフェースと、データを蓄積するバッファと、前記第１の通信装置に送信するデータを生成する処理手段と、前記第２のインタフェースを介した前記第２の通信装置からの受信時に、前記第１のインタフェースを介して前記第１の通信装置への送信を行っているか否かを判断する判断手段と、前記第２の通信装置から受信する前記データは送信先の識別情報を含んでおり、前記第２の通信装置から受信したデータの該識別情報により認識される送信先が前記第１の通信装置でない場合は、前記受信したデータを破棄し、該受信したデータを前記第１のインタフェースを用いて送信せず、前記第２の通信装置から受信したデータの該識別情報により認識される送信先が前記第１の通信装置であり、かつ、前記判断手段が前記第１のインタフェースを介して前記第１の通信装置への送信を行っていると判断した場合は、前記第２の通信装置から受信したデータを前記バッファに蓄積して該送信の終了後に該バッファに蓄積される該受信したデータを前記第１の通信装置へ送信し、前記第２の通信装置から受信したデータの該識別情報により認識される送信先が前記第１の通信装置であり、かつ、前記判断手段が前記第１のインタフェースを介して前記第１の通信装置への送信を行っていないと判断した場合は、前記第２の通信装置から受信したデータを前記バッファに蓄積せずに、前記第２のインタフェースを介して該受信したデータを、前記第１の通信装置へ送信する制御手段と、を有することを特徴とする。
【０００９】
本発明の通信制御方法は、通信路の上流側に配置されている第１の通信装置と通信を行うための第１のインタフェースと、前記通信路の下流側に配置されている第２の通信装置と通信を行うための第２のインタフェースと、データを蓄積するバッファと、を備えた電子デバイスで実行される方法であって、前記第１の通信装置に送信するデータを生成するステップと、前記第２のインタフェースを介した前記第２の通信装置からの受信時に、前記第１のインタフェースを介して前記第１の通信装置への送信を行っているか否かを判断するステップと、前記第２の通信装置から送信先の識別情報を含む前記データを受信するステップと、前記第２の通信装置から受信したデータの該識別情報により認識される送信先が前記第１の通信装置でない場合は、前記受信したデータを破棄し、該受信したデータを前記第１のインタフェースを用いて送信しないステップと、前記第２の通信装置から受信したデータの該識別情報により認識される送信先が前記第１の通信装置であり、かつ、前記第１のインタフェースを介して前記第１の通信装置への送信を行っていると判断した場合は、前記第２の通信装置から受信したデータを前記バッファに蓄積して該送信の終了後に該バッファに蓄積された該受信したデータを前記第１の通信装置へ送信するステップと、前記第２の通信装置から受信したデータの該識別情報により認識される送信先が前記第１の通信装置であり、かつ、前記第１のインタフェースを介して前記第１の通信装置への送信を行っていないと判断した場合は、前記第２の通信装置から受信したデータを前記バッファに蓄積せずに、前記第２のインタフェースを介して該受信したデータを、前記第１の通信装置へ送信するステップと、を含むことを特徴とする。
【発明の効果】
【００１１】
本発明は、第２装置から受信した第１データのうち第１装置宛のものをバッファに蓄積しておくため、第１装置宛のデータ送出タイミングが自己と第２装置で重なった場合であっても、いわゆるデータの衝突を防止することができる。これにより、安定した通信環境を提供することができる。
【図面の簡単な説明】
【００１２】
【図１】本実施形態のシステムの構成図。
【図２】パケットのデータ構造の例示図。
【図３】送信先ＩＤの例示図。
【図４】応答コマンドＩＤの例示図。
【図５】ホストコントローラの受信処理の処理制御図。
【図６】前段の通信デバイスからホストコントローラへの送信処理の処理制御図。
【図７】前段の通信デバイスが後段の通信デバイス１４１からデータ受信する処理の処理制御図。
【図８】後段の通信デバイスからホストコントローラへの送信処理の処理制御図。
【図９】パケットの送信タイミングの説明図。
【図１０】パケットの送信タイミングの説明図。
【発明を実施するための形態】
【００１３】
以下、本発明の実施の形態を図面を参照しつつ詳細に説明する。
【００１４】
＜全体構成＞
図１は、本発明の電子デバイスの一例である通信デバイスを用いて構成された、シリアル通信路によりデータを送受信するシステムの構成図である。
このシステムは、各通信デバイス１２１、１４１の状態を監視するホストコントローラ１０１を備える。ホストコントローラ１０１は、各通信デバイス１２１、１４１に対して各種指示を与える動作の主体である。ホストコントローラ１０１には、シリアル通信によりデータを送受信する前段の通信デバイス１２１が直接接続される。通信デバイス１２１には、通信デバイス１２１を介してホストコントローラ１０１との間でデータを送受信する後段の通信デバイス１４１が接続される。なお、ホストコントローラ１０１もまた、電子デバイスの一例である。ホストコントローラ１０１と通信デバイス１２１、１４１との間で送受信されるデータには、パケットが用いられる。
【００１５】
ホストコントローラ１０１は、ＣＰＵ（Central Processing Unit）１０２により全体の動作が制御される。ＣＰＵ１０２は、ＲＯＭ（Read Only Memory）１０３から命令を読みだして逐次実行し、その実行結果をＲＡＭ（Random Access Memory）１０４に保存する。また、ホストコントローラ１０１は、ホストシリアルＩ／Ｆ（インタフェース）１０５により、通信デバイス１２１とのシリアル通信が可能である。
【００１６】
ホストシリアルＩ／Ｆ１０５は、全二重式の調歩同期シリアルインタフェースである。ホストシリアルＩ／Ｆ１０５は、ＣＰＵ１０２から書き込まれた送信データを内蔵のシフトレジスタによって１ｂｉｔずつ送信ポート１０６から送信する。送信ｂｉｔ列の前後には、スタートビット、パリティビット、ストップビットが付加される。
通信デバイス１２１からデータを受信する場合には、受信データを受信ポート１０７により１ｂｉｔずつサンプリングする。また、内蔵のシフトレジスタによって１バイトの受信データを受信完了したことをＣＰＵ１０２に通知する。ＣＰＵ１０２は、ホストシリアルＩ／Ｆ１０５で受信したデータを読み取ることで、通信デバイス１２１からのデータを取得することができる。ＣＰＵ１０２は、読み取ったデータをＲＡＭ１０４に保存する。
【００１７】
前段の通信デバイス１２１は、制御部１２２、タイマ１２３、上流シリアルＩ／Ｆ１２５、下流シリアルＩ／Ｆ１２８、バッファ１２４、及びポート１３１を有する。前段の通信デバイス１２１は、ハードウェアとしてこれらの構成を備えていてもよいが、ＣＰＵ、ＲＡＭ、ＲＯＭ、入出力インタフェースを有する汎用のコンピュータで本発明のコンピュータプログラムを実行することにより実現されてもよい。
【００１８】
上流シリアルＩ／Ｆ１２５は、上流送信ポート１２６と上流受信ポート１２７とを備え、ホストコントローラ１０１との間でデータを送受信する。上流シリアルＩ／Ｆ１２５は、ホストコントローラ１０１のホストシリアルＩ／Ｆ１０５と同じく全二重式の調歩同期シリアルインタフェースである。
【００１９】
下流シリアルＩ／Ｆ１２８は、後段の通信デバイス１４１に二線式シリアル信号線によって接続されており、通信デバイス１４１との間で全二重のシリアル通信を行う。下流シリアルＩ／Ｆ１２８は、下流送信ポート１２９と下流受信ポート１３０とを備える。下流送信ポート１２９により、通信デバイス１４１にデータが送信される。下流受信ポート１３０により、通信デバイス１４１からデータを受信する。
【００２０】
ポート１３１は、送信ポート１２６、１２９への論理の出力や、電圧状態を二値で取得することができるＩ／Ｏポートである。タイマ１２３は、所定の時間間隔、例えば２ミリ秒毎に、制御部１２２に対して送信要求を発する。
制御部１２２は、上流シリアルＩ／Ｆ１２５及び下流シリアルＩ／Ｆ１２８の通信状況を監視する。制御部１２２は、ホストコントローラ１０１に送信すべきデータを生成する。そのために生成されるデータは、送信先としてホストコントローラ１０１を指示する情報を含む。制御部１２２は、タイマ１２３からの送信要求を受けて、生成したデータを、上流シリアルＩ／Ｆ１２５を介してホストコントローラ１０１へ送信する。制御部１２２は、下流シリアルＩ／Ｆ１２８で受信したデータをデコードして、ポート１３１のデータの返信や、ポート１３１への所望の論理の出力等の処理を行う。
【００２１】
バッファ１２４は、下流シリアルＩ／Ｆ１２８で受信したデータが一時蓄積されるラインバッファである。バッファ１２４には、下流シリアルＩ／Ｆ１２８が通信デバイス１４１からホストコントローラ１０１宛のデータを受信した際に、上流シリアルＩ／Ｆ１２５からホストコントローラ１０１にデータを送信中であった場合に、受信したデータが蓄積される。上流シリアルＩ／Ｆ１２５が送信中でなければ、バッファ１２４を用いずに、下流シリアルＩ／Ｆ１２８から上流シリアルＩ／Ｆ１２５にそのままデータが送られる。また、バッファ１２４は、上流シリアルＩ／Ｆ１２５で受信したデータの蓄積には用いられない。
【００２２】
後段の通信デバイス１４１は、二線式のシリアル信号線によって前段の通信デバイス１２１に接続される。通信デバイス１４１は、制御部１４２、タイマ１４３、ポート１５１、及び後段シリアルＩ／Ｆ１４５を有する。
【００２３】
ポート１５１は、後段シリアルＩ／Ｆ１４５の送信ポート１４６への論理の出力や、電圧状態を二値で取得することができるＩ／Ｏポートである。タイマ１４３は、所定の時間間隔、例えば２ミリ秒毎に、制御部１４２に対して送信要求を発する。制御部１４２は、ホストコントローラ１０１から送信されたデータに応じて動作する。
制御部１４２は、ホストコントローラ１０１に送信すべきデータを生成する。そのために生成されるデータは、送信先としてホストコントローラ１０１を指示する情報を含む。制御部１２２は、タイマ１４３からの送信要求を受けて、生成したデータを、後段シリアルＩ／Ｆ１４５を介して、例えばホストコントローラ１０１宛に送信する。また、制御部１４２は、後段シリアルＩ／Ｆ１４５で受信したデータをデコードして、ポート１５１のデータの返信や、ポート１５１への所望の論理の出力等の処理を行う。
【００２４】
後段シリアルＩ／Ｆ１４５は、送信ポート１４６と受信ポート１４７とを備え、通信デバイス１２１とデータを送受信することができる。後段シリアルＩ／Ｆ１４５は、ホストコントローラ１０１のホストシリアルＩ／Ｆ１０５と同じく全二重式の調歩同期シリアルインタフェースである。
【００２５】
図２は、ホストコントローラ１０１、通信デバイス１２１、及び通信デバイス１４１の間で送受信されるデータであるパケットの構造の例示図である。
【００２６】
パケットは、先頭にパケットの宛先を示す値である送信先ＩＤ２０１を有する。図３は、送信先ＩＤの例示図である。この例では、ホストコントローラ１０１宛の場合は「００ｈ」、通信デバイス１２１宛の場合は「０１ｈ」、通信デバイス１４１宛の場合は「０２ｈ」が送信先ＩＤ２０１に設定される。送信先ＩＤ２０１の後段には、送信元ＩＤ２０２が付される。送信元ＩＤ０２０２は、パケットの送信元を示す値である。値には、送信先ＩＤ２０１と同じものが用いられる。
【００２７】
パケットは、送信元ＩＤ２０２の後段に、パケットＩＤ２０３を有する。パケットＩＤ２０３は、ホストコントローラ１０１及び通信デバイス１２１，１４１が各々送信するパケットに付される順序番号である。ホストコントローラ１０１及び通信デバイス１２１，１４１の各々が１つパケットを送信するたびに、１増加される。受信側は、パケットＩＤ２０３により、パケットの欠落を検出することができる。
【００２８】
パケットは、パケットＩＤ２０３の後段に、応答コマンドＩＤ２０４を有する。応答コマンドＩＤ２０４は、ホストコントローラ１０１と、通信デバイス１２１又は通信デバイス１４１との間における指示内容を表す。応答コマンドＩＤ２０４の内容を、図４に例示する。例えば、通信デバイス１２１又は通信デバイス１４１からホストコントローラ１０１に対してポート情報の変化を通知する場合は、応答コマンドＩＤ２０４が、ポート情報変化通知２２４を示す「９０ｈ」になる。ホストコントローラ１０１から通信デバイス１２１又は通信デバイス１４１に情報取得を要求する場合には、応答コマンドＩＤ２０４が、ポート情報取得要求２２２を示す「１０ｈ」になる。
パケットは、応答コマンドＩＤ２０４の後段に、データ部２０５を有する。データ部２０５は、例えば、通信デバイス１２１又は通信デバイス１４１からホストコントローラ１０１に対してポート情報の変化を通知する場合に、１６ｂｉｔのポートの二値検出情報を含む。
パケットは、データ部２０５の後段にチェックサム２０６を有する。チェックサム２０６は、パケットの誤り検出に用いられる値である。
【００２９】
一般的に、通信デバイス１２１及び通信デバイス１４１のように、複数段からなるカスケード接続を行う場合、通信デバイス１２１，１４１側からホストコントローラ１０１へのパケットについて、タイミングの衝突を防ぐ必要が有る。そのために、ホストコントローラ１０１側から通信対象の通信デバイスに、送信先ＩＤ２０１に通信対象の通信デバイスを明示し、応答コマンドＩＤ２０４にポート情報取得要求２２２を設定したパケットを送る。通信対象とされた通信デバイスは、これに応答する形でパケットを返信することが多い。
本実施形態では、通信デバイス１２１及び通信デバイス１４が、前述のように各々内蔵するタイマ１２３、１４３によって、任意のタイミングでパケットを送信可能である。これにより、通信デバイス１２１、１４１側の状態が変化した際の、ホストコントローラ１０１側での検知の応答性を高めている。
【００３０】
＜ホストコントローラ１０１の処理＞
ホストコントローラ１０１が、通信デバイス１２１又は通信デバイス１４１からパケットを受信する処理の制御フローについて図５を用いて説明する。以下の説明において、「Ｓ」は処理ステップを表す。
【００３１】
ホストコントローラ１０１のＣＰＵ１０２は、受信処理を開始すると、ホストシリアルＩ／Ｆ１０５による受信の有無を確認する（Ｓ３０１）。受信を検出するまで受信待ちを繰り返し（Ｓ３０１：N）、受信を検出した場合は、ホストシリアルＩ／Ｆ１０５によりパケットを受信する（Ｓ３０１：Y、Ｓ３０２）。
【００３２】
ＣＰＵ１０２は、受信したパケットの送信元ＩＤ２０２により、受信したパケットが前段の通信デバイス１２１からのものか、あるいは後段の通信デバイス１４１からのものかを確認する。具体的には、送信元ＩＤ２０２が「０１ｈ」か「０２ｈ」かを確認する。
【００３３】
送信元ＩＤ２０２が「０１ｈ」である場合には、前段の通信デバイス１２１からのデータ、例えばポート情報であるとして、受信したパケットのデータ部２０５の内容をＲＡＭ１０４に保存する（Ｓ３０３：Y、Ｓ３０４）。送信元ＩＤ２０２が「０２ｈ」である場合には、後段の通信デバイス１４１からのデータ、例えばポート情報であるとして、受信したパケットのデータ部２０５の内容をＲＡＭ１０４に保存する（Ｓ３０３：N、Ｓ３０５：Y、Ｓ３０６）。ＣＰＵ１０２は、パケットを、その送信元毎に分けてＲＡＭ１０４に保存する。
ＣＰＵ１０２は、送信元ＩＤ２０２が「０１ｈ」及び「０２ｈ」のいずれでもない場合には、不正なデータであるとして受信したパケットを破棄する（Ｓ３０３：N、Ｓ３０５：N、Ｓ３０７）。以上により、ホストコントローラ１０１によるパケットの受信に関する一連の処理が終了する。一連の処理の終了後に、ステップＳ３０１の処理に戻る。
【００３４】
＜前段の通信デバイス１２１の処理＞
前段の通信デバイス１２１がホストコントローラ１０１に対してデータの送信を行う処理の制御フローについて図６を用いて説明する。
【００３５】
通信デバイス１２１の制御部１２２は、ホストコントローラ１０１との通信状況を監視しており、送信可能状態になると、自デバイス内の通信要求の有無を確認する（Ｓ４０１）。制御部１２２は、タイマ１２３から発行された送信要求等の自デバイス内の通信要求が有る場合に、自デバイス内の通信要求に応じたパケットを生成し、上流シリアルＩ／Ｆ１２５を介してホストコントローラ１０１に送信する（Ｓ４０１：Y、Ｓ４０２）。
自デバイス内の通信要求が無い場合に制御部１２２は、下流シリアルＩ／Ｆ１２８に対して通信要求、つまり後段の通信デバイス１４１からの通信要求、の有無を問い合わせる（Ｓ４０１：N、Ｓ４０３）。下流シリアルＩ／Ｆ１２８からの通信要求が有る場合に制御部１２２は、下流シリアルＩ／Ｆ１２８から受信したパケットを中継して、上流シリアルＩ／Ｆ１２５を介してホストコントローラ１０１に送信する（Ｓ４０３：Y、Ｓ４０４）。
下流シリアルＩ／Ｆ１２８からの通信要求も無い場合には、再度自デバイスの通信要求の有無を確認する状態に戻る（Ｓ４０３：N、Ｓ４０１）。
【００３６】
自デバイスからのパケットの送信、あるいは通信デバイス１４１からのパケットを中継しての送信が終了すると（Ｓ４０５：Y）、制御部１２２は、バッファ１２４にパケットが蓄積されていないかを確認する（Ｓ４０６）。バッファ１２４にパケットが蓄積されている場合に制御部１２２は、バッファ１２４に蓄積されたパケットを上流シリアルＩ／Ｆ１２５を介してホストコントローラ１０１に送信する（Ｓ４０６：Y、Ｓ４０７）。パケットを送信し終えると（Ｓ４０８：Y）、あるいはバッファ１２４に蓄積されたパケットがない場合に（Ｓ４０６：N）、通信デバイス１２１からホストコントローラ１０１への一連の送信処理が終了する。一連の処理の終了後に、ステップＳ４０１の処理に戻る。
【００３７】
ステップＳ４０１〜Ｓ４０２、Ｓ４０６〜Ｓ４０７の処理により、前段の通信デバイス１２１と後段の通信デバイス１４１とから同時に通信要求を生じた場合であっても、通信デバイス１２１の通信要求を優先して行う。そのために、通信デバイス１２１、１４１の各パケットが衝突することはない。この場合、前段の通信デバイス１２１の上流シリアルＩ／Ｆ１２５からは、前段の通信デバイス１２１の通信要求によるパケットと後段の通信デバイス１４１の通信要求によるパケットとが、交互にホストコントローラ１０１に対して送信される。
【００３８】
前段の通信デバイス１２１が後段の通信デバイス１４１からパケットを受信して中継する処理の制御フローについて図７を用いて説明する。
【００３９】
通信デバイス１２１の制御部１２２は、後段の通信デバイス１４１との通信状況を監視しており、受信処理を開始すると、下流シリアルＩ／Ｆ１２８による受信の有無を確認する（Ｓ５０１）。受信が無い場合は、受信待ちを繰り返す（Ｓ５０１：N）。受信が有る場合に制御部１２２は、下流シリアルＩ／Ｆ１２８により、後段の通信デバイス１４１からのパケットを受信する（Ｓ５０１：Y、Ｓ５０２）。
【００４０】
パケットを受信し終えると、通信デバイス１２１の制御部１２２は、受信したパケットの送信先ＩＤ２０１を確認する。送信先ＩＤ２０１がホストコントローラ１０１宛を示す「００ｈ」の場合には、当該パケットの中継処理を行う（Ｓ５０３：Y）。「００ｈ」でない場合には、当該パケットを不正な宛先のパケットと判断して破棄する（Ｓ５０３：N、Ｓ５０４）。
【００４１】
パケットの中継処理において制御部１２２は、まず、上流シリアルＩ／Ｆ１２５が現在パケットを送信中であるか否かを確認する（Ｓ５０５）。送信中の場合に制御部１２２は、受信したパケットをバッファ１２４に蓄積する（Ｓ５０５：Y、Ｓ５０６）。バッファ１２４に蓄積した場合に制御部１２２は、バッファ１２４に蓄積されたパケットを、図６のステップＳ４０６以降の処理で説明した通り、現在送信中のパケットの送信完了後に送信する。
【００４２】
上流シリアルＩ／Ｆ１２５が現在パケットを送信していない場合に制御部１２２は、上流シリアルＩ／Ｆ１２５にパケットの送信要求を行う（Ｓ５０５：N、Ｓ５０７）。その後、パケットを送信する（Ｓ５０８）。パケットの送信を終了すると（Ｓ５０８：Y）、あるいはバッファ１２４に蓄積されたパケットの送信が終了すると、通信デバイス１４１からホストコントローラ１０１へパケットを中継する一連の処理が終了する。一連の処理の終了後に、ステップＳ５０１の処理に戻る。
【００４３】
ステップＳ５０５の処理では、中継送信に用いる上流シリアルＩ／Ｆ１２５の使用状況に合わせて、バッファ１２４にパケットを蓄積するか、直接スルー転送するかを判断する。そのために、ストアアンドフォワード方式のようにバッファを経由した転送よりも、高速な通信が実現できる。
【００４４】
＜後段の通信デバイス１４１の処理＞
後段の通信デバイス１４１がホストコントローラ１０１に対して送信を行う処理の制御フローについて、図８を用いて説明する。後段の通信デバイス１４１が直接接続されているのは前段の通信デバイス１２１である。そのために、通信デバイス１４１は、ホストコントローラ１０１宛のパケットを、前段の通信デバイス１２１に対して送信する。この場合、送信先ＩＤ２０１は、図３に示すようにホストコントローラ１０１を示す「００ｈ」である。
【００４５】
後段の通信デバイス１４１の制御部１４２は、タイマ１４３から発行された送信要求等の、自デバイス内の通信要求の有無を問い合わせる。制御部１４２は、自デバイス内の通信要求が有る場合（Ｓ６０１：Y）、自デバイス内の通信要求からなるパケットを生成して後段シリアルＩ／Ｆ１４５から送信する（Ｓ６０２）。パケットの送信が終了すると、通信デバイス１４１からホストコントローラ１０１へのパケットを送信する一連の処理が終了する（Ｓ６０３：Y）。一連の処理の終了後に、ステップＳ６０１の処理に戻る。
【００４６】
＜タイミングチャート＞
図９及び図１０を参照して、図５〜図８の各制御フローにおけるパケットの送信タイミングについて説明する。
【００４７】
図９は、前段の通信デバイス１２１からパケットを送信した後に、後段の通信デバイス１４１からパケットを送信する場合の、制御タイミングの説明図である。
シリアル信号ライン７０１は、前段の通信デバイス１２１からホストコントローラ１０１に接続される。シリアル信号ライン７０１により、パケットが、通信デバイス１２１の上流送信ポート１２６から送信されて、ホストコントローラ１０１の受信ポート１０７で受信される。
シリアル信号ライン７０２は、後段の通信デバイス１４１から前段の通信デバイス１２に接続される。シリアル信号ライン７０２により、パケットが、通信デバイス１４１の送信ポート１４６から送信され、通信デバイス１２１の下流受信ポート１３０で受信される。
【００４８】
タイミングＳ７０３で、前段の通信デバイス１２１からホストコントローラ１０１へパケット７０４が送信される。パケット７０４の送信終了後のタイミングＳ７０５において、後段の通信デバイス１４１から前段の通信デバイス１２１へパケット７０６が送信される。
【００４９】
パケット７０６を受信した前段の通信デバイス１２１は、パケット７０６の送信先ＩＤ２０１が、ホストコントローラ１０１宛を示す「００ｈ」であることを、図７のステップＳ５０３に従って確認する。送信先ＩＤ２０１は、パケット７０６のオフセットアドレス＋０に格納されるデータ７０７に含まれる。通信デバイス１２１は、送信先ＩＤ２０１が「００ｈ」であることを確認後、タイミングＳ７０８でホストコントローラ１０１に対して中継送信パケット７０９を中継送信する。中継送信パケット７０９の内容は、パケット７０６と同一である。
【００５０】
図１０は、後段の通信デバイス１４１が前段の通信デバイス１２１にパケットを送信したときに、前段の通信デバイス１２１からホストコントローラ１０１へパケットを送信中であった場合の、制御タイミングの説明図である。
シリアル信号ライン８０１は、シリアル信号ライン７０１と同様に、前段の通信デバイス１２１からホストコントローラ１０１に接続される。シリアル信号ライン８０２は、シリアル信号ライン７０２と同様に、後段の通信デバイス１４１から前段の通信デバイス１２に接続される。
【００５１】
タイミングＳ８０３で、前段の通信デバイス１２１からホストコントローラ１０１へパケット８０４が送信される。パケット８０４の送信が終了する前のタイミングＳ８０５において、後段の通信デバイス１４１から前段の通信デバイス１２１へパケット８０６が送信される。
パケット８０６を受信した前段の通信デバイス１２１は、パケット８０６の送信先ＩＤ２０１が、ホストコントローラ１０１宛を示す「００ｈ」であることを、図７のステップＳ５０３に従って確認する。送信先ＩＤ２０１は、パケット８０６のオフセットアドレス＋０に格納されるデータ８０７に含まれる。通信デバイス１２１は、送信先ＩＤ２０１が「００ｈ」であることを確認後に、パケット８０４を送信中であるために、タイミングＳ８０８で、バッファ１２４にパケット８０６を一時蓄積する。パケット８０４の送信終了後のタイミングＳ８０９に、通信デバイス１２１は、バッファ１２４に蓄積したパケット８０６を、順次中継送信パケット８１０として送信する。中継送信パケット８１０の内容は、パケット８０６と同一である。
【００５２】
以上示したよう、通信デバイス１２１が、通信デバイス１４１と通信タイミングが重なった場合に、通信デバイス１４１からのパケットをバッファ１２４に一時蓄積して、自デバイスからの送信終了後に一時蓄積したパケットを送信する。そのために、通信タイミングをずらすことができ、パケットが衝突せずに安定した通信可能になり、通信の応答性を両立した通信方式を実現することができる。
【００５３】
なお、ホストコントローラ１０１を用いない構成であってもよい。すなわち、３以上の通信デバイスをシリアル通信路に直列に接続して、直接接続されていない通信デバイス同士を透過的に扱う。２つの通信デバイス間に設けられて中継送信する通信デバイスが、一方の通信デバイスからのデータを一時保管するためのバッファを有する。中継送信する通信デバイスが他方の通信デバイスに自己を送信元とするデータを送信中に、一方の通信デバイスから他方の通信デバイス宛のデータを受け付けた場合に、受け付けたデータをバッファに一時蓄積する。このようにして、送信するデータの衝突を防止する。
【産業上の利用可能性】
【００５４】
本発明の通信デバイスは、複数のシリアル通信ＩＣやＡＳＩＣ（Application Specific
Integrated Circuit）、マイクロプロセッサによって構成されるシステムに適用可能である。このシステムでは、前段の通信デバイスに対してさらに後段に通信デバイスを接続し、ホストコントローラから後段の通信デバイスを透過的に扱うために前段の通信デバイスが中継送信する接続形態を取る通信システムにおいて、利用が可能である。
【符号の説明】
【００５５】
１０１…ホストコントローラ、１０２…ＣＰＵ、１０３…ＲＯＭ、１０４…ＲＡＭ、１０５…ホストシリアルＩ／Ｆ、１０６，１４６…送信ポート、１０７，１４７…受信ポート。１２１，１４１…通信デバイス、１２２，１４２…制御部、１２３，１４３…タイマ、１３１，１５１…ポート、１２４…バッファ。１２５…上流シリアルＩ／Ｆ、１２６…上流送信ポート、１２７…上流受信ポート、１２８…下流シリアルＩ／Ｆ、１２９…下流送信ポート、１３０…下流受信ポート、１４５…後段シリアルＩ／Ｆ。
【図１】
0005930767.tif 000002
【図２】
0005930767.tif 000003
【図３】
0005930767.tif 000004
【図４】
0005930767.tif 000005
【図５】
0005930767.tif 000006
【図６】
0005930767.tif 000007
【図７】
0005930767.tif 000008
【図８】
0005930767.tif 000009
【図９】
0005930767.tif 000010
【図１０】
0005930767.tif 000011