(57)【特許請求の範囲】
【請求項１】
全二重通信と半二重通信とが実行可能であり、全二重通信と半二重通信のうちのいずれかの通信方式を選択してデータ通信をハンドシェーク方式で実行する第１通信装置と第２通信装置とからなる通信システムであって、
前記第１通信装置は、
全二重通信において前記第１通信装置から前記第２通信装置にデータを送信するのに用いる通信路を用いて、前記第２通信装置にデータ通信を要求するためのコマンド信号を送出するコマンド信号送出手段と、
前記コマンド信号に対する応答信号を前記第２通信装置から受けて当該応答信号で指定される通信方式に基づいてデータ通信を実行し、前記通信方式として半二重通信が選択された場合、半二重通信によるデータ通信の終了時に全二重通信に戻す第１データ通信手段とを備え、
前記第２通信装置は、
前記第１通信装置から送出されたコマンド信号を格納するものであって、格納可能なコマンド信号の上限数が定められているコマンド信号格納手段と、
コマンド信号に対する応答信号であって、全二重通信か半二重通信かの通信方式を指定するための情報を含む応答信号を送出する応答信号送出手段と、
データ通信を実行する第２データ通信手段とを備え、
前記応答信号送出手段は、前記コマンド信号格納手段に格納されていてデータ通信が未実行のコマンド信号の数が前記上限数に達している場合に、半二重通信を指定する情報を含む応答信号を送出する
ことを特徴とする通信システム。
【請求項２】
前記第１通信装置は、更に、
前記上限数を保持する保持手段を備え、
前記コマンド信号送出手段が送出したコマンド信号であって、データ通信が実行されていないコマンド信号の数が、前記上限数と同数であり、かつ、データ通信を実行していないコマンド信号に対しての半二重通信を指定する応答信号を受けた場合に、
前記第１データ通信手段は、半二重通信でのデータ通信を実行する
ことを特徴とする請求項１記載の通信システム。
【請求項３】
前記第１通信装置は、更に、
前記上限数を保持する保持手段と、
前記コマンド信号送出手段が送出したコマンド信号であって、データ通信が実行されていないコマンド信号の数が、前記上限数と同数であり、かつ、データ通信を実行していないコマンド信号に対しての半二重通信を指定する応答信号を受けた場合に、半二重通信でのデータ通信を実行する旨を指示する指示信号を送出する指示信号送出手段とを備え、
前記第２通信装置は、前記指示信号で指定される通信方式でのデータ通信を了承する旨を示す了承信号を送出する了承信号送出手段を備え、
前記第１データ通信手段は、前記了承信号を受けて前記指示信号で指定される通信方式でのデータ通信を実行し、
前記第２データ通信手段は、前記了承信号を送出すると前記指示信号で指定される通信方式でのデータ通信を実行する
ことを特徴とする請求項１記載の通信システム。
【請求項４】
前記コマンド信号送出手段は、コマンド信号に特定の情報を含ませて送出し、
前記応答信号送出手段は、前記コマンド信号格納手段に格納されているコマンド信号の数が前記コマンド信号格納手段に格納できる上限数に達していなくとも、前記特定の情報を含むコマンド信号を受けた場合には、半二重通信でのデータ通信を指定する情報を含む応答信号を送出する
ことを特徴とする請求項１記載の通信システム。
【請求項５】
前記コマンド信号送出手段は、コマンド信号を送出する時点で、次に送出すべきコマンド信号がない場合に、コマンド信号に前記特定の情報を含ませて送出する
ことを特徴とする請求項４記載の通信システム。
【請求項６】
前記コマンド信号には、データ読み出しを要求する信号と、データ書き込みを要求する信号との２種類があり、
前記第２データ通信手段は、
前記コマンド信号格納手段に格納されているコマンド信号を、格納された順序に関係なく、データ読み出しとデータ書き込みのうちのいずれか一方のコマンド信号に対応するデータ通信を連続して実行する
ことを特徴とする請求項１記載の通信システム。
【請求項７】
他装置との間で全二重通信と半二重通信とを切り替えてデータの送受信を行う通信装置であって、
全二重通信において前記他装置にデータを送信するのに用いる通信路を用いて、第２通信装置にデータ通信を要求するためのコマンド信号を送出するコマンド信号送出手段と、
前記他装置が前記コマンド信号を保持することができる上限数の情報を前記他装置から取得する限界値取得手段と、
前記コマンド信号に対する応答信号を前記他装置から受けて当該応答信号で指定される通信方式に基づいてデータ通信を実行するデータ通信手段とを備え、
前記コマンド信号送出手段は、前記コマンド信号送出手段が送出したコマンド信号であって、前記データ通信手段によりデータ通信が実行されていないコマンド信号の数が、前記上限数に達している場合に、半二重通信での通信を要求する情報を前記コマンド信号に含ませ、
前記データ通信手段は、前記応答信号で指定される前記通信方式が半二重通信である場合に、半二重通信によるデータ通信の終了時に全二重通信に戻す
ことを特徴とする通信装置。
【請求項８】
他装置との間で全二重通信と半二重通信とを切り替えてデータの送受信を行う通信装置であって、
前記他装置から送出されたコマンド信号を格納するものであって、格納可能なコマンド信号の上限数が定められているコマンド信号格納手段と、
コマンド信号に対する応答信号であって、全二重通信か半二重通信かの通信方式を指定するための情報を含む応答信号を送出する応答信号送出手段と、
データ通信を実行する第２データ通信手段とを備え、
前記応答信号送出手段は、前記コマンド信号格納手段に格納されていてデータ通信が未実行のコマンド信号の数が前記上限数に達している場合に、半二重通信を指定する情報を含む応答信号を送出し、
前記第２データ通信手段は、前記応答信号で指定される前記通信方式が半二重通信である場合に、半二重通信によるデータ通信の終了時に全二重通信に戻す
ことを特徴とする通信装置。
【請求項９】
全二重通信と半二重通信とが実行可能であり、全二重通信と半二重通信のうちのいずれかの通信方式を選択してデータ通信をハンドシェーク方式で実行する第１通信装置と第２通信装置とからなる通信システムにおける通信方法であって、
全二重通信において前記第１通信装置から前記第２通信装置にデータを送信するのに用いる通信路を用いて、前記第２通信装置にデータ通信を要求するためのコマンド信号を送出するコマンド信号送出ステップと、
前記第１通信装置から送出されたコマンド信号を格納するものであって、格納可能なコマンド信号の上限数が定められているコマンド信号格納手段に前記第２通信装置が前記第１通信装置から受けたコマンド信号を格納する格納ステップと、
コマンド信号に対する応答信号であって、全二重通信か半二重通信かの通信方式を指定するための情報を含む応答信号を送出する応答信号送出ステップと、
前記第１通信装置が前記コマンド信号に対する応答信号を前記第２通信装置から受けて当該応答信号で指定される通信方式に基づいてデータ通信を実行するデータ通信ステップと、
前記データ通信ステップにおいて、前記通信方式として半二重通信が指定された場合に、半二重通信によるデータ通信の終了時に全二重通信に戻す復旧ステップとを含み、
前記応答信号送出ステップは、前記コマンド信号格納手段に格納されていてデータ通信が未実行のコマンド信号の数が前記上限数に達している場合に、半二重通信を指定する情報を含む応答信号を送出する
ことを特徴とする通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
ハンドシェーク方式で通信を実行する通信システムに関し、通信装置間の通信方式の選択に係る。
【背景技術】
【０００２】
装置間でデータのやり取りを実行する場合に、全二重通信（Full Duplex）あるいは半二重通信（Half Duplex）での通信を実行する装置がある。
全二重通信とは、双方向通信において、同時に双方からデータを送信したり、受信したりすることができる通信方式のことである。送受信の切替が不要で、制御が容易であり、いつでもデータの送受信が可能であるというメリットがある。
【０００３】
また、半二重通信とは、双方向通信において、同時に双方からデータを送信したり、受信したりすることができず、時間を区切って片方からの送信しかできない通信方式のことである。半二重通信は、全二重通信のようにデータを送信する際にデータ受信用の帯域を残さなくてもよく、全二重通信よりも通信帯域を広く使えることから、大容量データの転送の面で、全二重通信に対するアドバンテージがある。
【０００４】
双方それぞれにメリットがあることから、全二重通信と半二重通信とを切り替える通信装置及び通信方法が特許文献１に開示されている。特許文献１によれば、二つの通信装置のうち、一方のみがデータの送信要求を行っている場合には、半二重通信でのデータ通信を実行し、通信装置の双方がデータの送信要求を行っている場合には、全二重通信でのデータ通信を実行している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００２−９４６００号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、上記特許文献１の場合だと、一方のみの通信装置が送信要求を行っているときには、必ず半二重通信でのデータ通信を実行することになる。このため、この場合には、データ通信を実行している最中に、データ受信側の装置が新たなデータ通信を要求するためのコマンド信号を出力したくともできない状況になってしまうという問題が生じる。
そこで、本発明は上記問題に鑑みてなされたものであり、上述したように、データ通信を半二重通信で実行していたために新たなデータ通信を要求するコマンド信号を送出できないという不都合が発生しないように適切に全二重通信から半二重通信への切替が可能な通信システムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するため、本発明は、全二重通信と半二重通信とが実行可能であり、全二重通信と半二重通信のうちのいずれかの通信方式を選択してデータ通信をハンドシェーク方式で実行する第１通信装置と第２通信装置とからなる通信システムであって、前記第１通信装置は、全二重通信において前記第１通信装置から前記第２通信装置にデータを送信するのに用いる通信路を用いて、前記第２通信装置にデータ通信を要求するためのコマンド信号を送出するコマンド信号送出手段と、前記コマンド信号に対する応答信号を前記第２通信装置から受けて当該応答信号で指定される通信方式に基づいてデータ通信を実行する第１データ通信手段とを備え、前記第２通信装置は、前記第１通信装置から送出されたコマンド信号を格納するものであって、格納可能なコマンド信号の上限数が定められているコマンド信号格納手段と、コマンド信号に対する応答信号であって、全二重通信か半二重通信かの通信方式を指定するための情報を含む応答信号を送出する応答信号送出手段と、データ通信を実行する第２データ通信手段とを備え、前記応答信号送出手段は、前記コマンド信号格納手段に格納されていてデータ通信が未実行のコマンド信号の数が前記上限数に達している場合に、半二重通信を指定する情報を含む応答信号を送出することを特徴としている。
【０００８】
また、本発明における通信方法は、全二重通信と半二重通信とが実行可能であり、全二重通信と半二重通信のうちのいずれかの通信方式を選択してデータ通信をハンドシェーク方式で実行する第１通信装置と第２通信装置とからなる通信システムにおける通信方法であって、全二重通信において前記第１通信装置から前記第２通信装置にデータを送信するのに用いる通信路を用いて、前記第２通信装置にデータ通信を要求するためのコマンド信号を送出するコマンド信号送出ステップと、前記第１通信装置から送出されたコマンド信号を格納するものであって、格納可能なコマンド信号の上限数が定められているコマンド信号格納手段に前記第２通信装置が前記第１通信装置から受けたコマンド信号を格納する格納ステップと、コマンド信号に対する応答信号であって、全二重通信か半二重通信かの通信方式を指定するための情報を含む応答信号を送出する応答信号送出ステップと、前記第１通信装置が前記コマンド信号に対する応答信号を前記第２通信装置から受けて当該応答信号で指定される通信方式に基づいてデータ通信を実行するデータ通信ステップと含み、前記応答信号送出ステップは、前記コマンド信号格納手段に格納されていてデータ通信が未実行のコマンド信号の数が前記上限数に達している場合に、半二重通信を指定する情報を含む応答信号を送出することを特徴としている。
【発明の効果】
【０００９】
これにより、第２通信装置は、コマンド信号格納手段に格納されているコマンド信号の数がコマンド信号格納手段に格納できる上限に達している場合には、第２通信装置は、半二重通信での通信方式を指定する応答信号を送出する。第２通信装置は、受け付けて格納しておいたコマンド信号に対応するデータ通信を後で実行することになるが、コマンド信号格納手段に格納されているコマンド信号の数が上限に達している場合には、第２通信装置は、これ以上、コマンド信号を受け付けられない。その状況下においては第１通信装置から第２通信装置にコマンド信号を送出したとしても意味がないため、第１通信装置から第２通信装置にコマンド信号が送出できなくとも問題はなく、第２通信装置は、適切に半二重通信でのデータ通信を指定することができる。
【００１０】
また、前記通信システムにおいて、前記第１通信装置は、更に、前記上限数を保持する保持手段を備え、前記コマンド信号送出手段が送出したコマンド信号であって、データ通信が実行されていないコマンド信号の数が、前記上限数と同数であり、かつ、データ通信を実行していないコマンド信号に対しての半二重通信を指定する応答信号を受けた場合に、前記第１データ通信手段は、半二重通信でのデータ通信を実行することとしてよい。
【００１１】
これにより、第１通信装置は、第２通信装置側でコマンド信号格納手段が格納可能なコマンド信号の限界に達している場合に必ず半二重通信での通信を実行することができる。
また、前記通信システムにおいて、前記第１通信装置は、更に、前記上限数を保持する保持手段と、前記コマンド信号送出手段が送出したコマンド信号であって、データ通信が実行されていないコマンド信号の数が、前記上限数と同数であり、かつ、データ通信を実行していないコマンド信号に対しての半二重通信を指定する応答信号を受けた場合に、半二重通信でのデータ通信を実行する旨を指示する指示信号を送出する指示信号送出手段とを備え、前記第２通信装置は、前記指示信号で指定される通信方式でのデータ通信を了承する旨を示す了承信号を送出する了承信号送出手段を備え、前記第１データ通信手段は、前記了承信号を受けて前記指示信号で指定される通信方式でのデータ通信を実行し、前記第２データ通信手段は、前記了承信号を送出すると前記指示信号で指定される通信方式でのデータ通信を実行することとしてよい。
【００１２】
これにより、第１通信装置及び第２通信装置は、互いに通信の切替のタイミングを間違えることなく半二重通信でのデータ通信を実行できる。
また、前記通信システムにおいて、前記コマンド信号送出手段は、コマンド信号に特定の情報を含ませて送出し、前記応答信号送出手段は、前記コマンド信号格納手段に格納されているコマンド信号の数が前記コマンド信号格納手段に格納できる上限数に達していなくとも、前記特定の情報を含むコマンド信号を受けた場合には、半二重通信でのデータ通信を指定する情報を含む応答信号を送出することとしてよい。
【００１３】
これによりコマンド信号格納手段が格納可能なコマンド信号の上限数に達していなくとも、第１通信装置は、コマンド信号に特定の情報を含ませることで、第２通信装置に半二重通信でのデータ通信を選択させることができる。
また、前記通信システムにおいて、前記コマンド信号送出手段は、コマンド信号を送出する時点で、次に送出すべきコマンド信号がない場合に、コマンド信号に前記特定の情報を含ませて送出することとしてよい。
【００１４】
これにより、第２通信装置は、コマンド信号格納手段が格納可能なコマンド信号の上限数に達していなくとも、半二重通信でのデータ通信を指定する応答信号を送出することができる。第１通信装置から送出すべきコマンド信号が当面ない状況においては、半二重通信に切り替えても問題はないため、半二重通信でのデータ通信を行うことでデータ転送の高速化を図れる。
【００１５】
また、前記通信システムにおいて、前記コマンド信号には、データ読み出しを要求する信号と、データ書き込みを要求する信号との２種類があり、前記第２データ通信手段は、前記コマンド信号格納手段に格納されているコマンド信号を、格納された順序に関係なく、データ読み出しとデータ書き込みのうちのいずれか一方のコマンド信号に対応するデータ通信を連続して実行することとしてよい。
【００１６】
これにより、第２通信装置は、コマンド信号を受信した順序に関係なくデータ通信を実行することができ、データ書き込み、あるいはデータ読み出しのいずれか一方を先に集中的に実行することで、半二重通信での通信方向の切替回数を抑えることができるので、全体を通してデータ通信の速度向上を図れる。
また、本発明は、他装置との間で全二重通信と半二重通信とを切り替えてデータの送受信を行う通信装置であって、全二重通信において前記他装置にデータを送信するのに用いる通信路を用いて、前記第２通信装置にデータ通信を要求するためのコマンド信号を送出するコマンド信号送出手段と、前記他装置が前記コマンド信号を保持することができる上限数の情報を前記他装置から取得する限界値取得手段と、前記コマンド信号に対する応答信号を前記他装置から受けて当該応答信号で指定される通信方式に基づいてデータ通信を実行するデータ通信手段とを備え、前記コマンド信号送出手段は、前記コマンド信号送出手段が送出したコマンド信号であって、前記データ通信手段によりデータ通信が実行されていないコマンド信号の数が、前記上限数に達している場合に、半二重通信での通信を要求する情報を前記コマンド信号に含ませることを特徴としている。
【００１７】
これにより、通信装置は、当該通信装置がコマンド信号を送信する側で、他装置が受け付けることができるコマンド信号の上限を知りえている場合であって、送出したコマンド信号の数がその上限に達したときには、半二重通信への通信方式の切り替えを要求することができる。
また、本発明は、他装置との間で全二重通信と半二重通信とを切り替えてデータの送受信を行う通信装置であって、前記他装置から送出されたコマンド信号を格納するものであって、格納可能なコマンド信号の上限数が定められているコマンド信号格納手段と、コマンド信号に対する応答信号であって、全二重通信か半二重通信かの通信方式を指定するための情報を含む応答信号を送出する応答信号送出手段と、データ通信を実行する第２データ通信手段とを備え、前記応答信号送出手段は、前記コマンド信号格納手段に格納されていてデータ通信が未実行のコマンド信号の数が前記上限数に達している場合に、半二重通信を指定する情報を含む応答信号を送出することを特徴としている。
【００１８】
これにより、通信装置は、当該通信装置が他装置からのコマンド信号を受け付ける側で、受け付けたコマンド信号の数が自装置で保持できるコマンド信号の上限数に達した場合には、半二重通信での通信を要求することができる。
【図面の簡単な説明】
【００１９】
【図１】通信システムの全二重通信時の機能構成を示した機能ブロック図である。
【図２】通信システムの半二重通信時でマスタ１００からスレーブ２００にデータを送信する場合の機能構成を示した機能ブロック図である。
【図３】通信システムの半二重通信時でスレーブ２００からマスタ１００にデータを送信する場合の機能構成を示した機能ブロック図である。
【図４】コマンドパケット信号のデータフォーマット例を示す図である。
【図５】レスポンスパケット信号のデータフォーマット例を示す図である。
【図６】データパケット信号のデータフォーマット例を示す図である。
【図７】マスタ１００とスレーブ２００間のやり取りを示したタイミングチャートである。
【図８】スレーブ２００のコマンドパケット信号を受信したときの動作を示したフローチャートである。
【図９】コマンド信号キュー２５２に蓄積されたコマンドパケット信号の入れ替えを示した概念図である。図９（ａ）は入れ替え前の図であり、図９（ｂ）、（ｃ）は入れ替え後の図である。
【図１０】実施の形態２に係るスレーブ２００のコマンドパケット信号を受信したときの動作を示したフローチャートである。
【図１１】実施の形態３に係る通信システムの構成を示した図である。
【発明を実施するための形態】
【００２０】
以下、本発明の一実施形態である通信システムについて図面を用いて説明する。
＜実施の形態１＞
＜概要＞
ハンドシェーク方式で通信を実行する２つの通信装置間でデータを送受信するにあたり、両通信装置は、互いに全二重通信と、半二重通信のうちのいずれの通信方式を用いるのかをネゴシエートしあい、いずれかを選択してデータ通信を実行する。通信装置は、データ通信を要求するコマンドを格納するためのメモリ、またはメモリの領域を保持するが、一方の通信装置が他方の通信装置から受け付けることができるコマンドの数には、通信装置におけるコマンドを格納するためのメモリ、またはメモリの領域の容量の都合上限りがある。よって、一方の通信装置からのデータ通信の要求に対して、他方の通信装置は、受け取ったコマンド信号の数が、受領できるコマンド信号の数の上限に達している場合に、他方の通信装置は、データ通信を要求するコマンドパケット信号に対して半二重通信でのデータ通信の実行を要求するレスポンスパケット信号を送出し、両通信装置は、半二重通信でのデータ通信を実行する。
【００２１】
＜構成＞
図１は本発明に係る通信システムの機能構成を示した機能ブロック図である。
図１に示すように、通信システムは、通信装置（マスタ）１００と、通信装置（スレーブ）２００と、両通信装置を接続する通信路３００、３１０とを含んで構成される。以下、通信装置１００は、マスタ１００と記載し、通信装置２００は、スレーブ２００と記載する。また、図１においては、通信路３００及び通信路３１０について全二重通信を実行する場合の通信方向を示しているが、半二重通信の場合には、何れかの通信路の通信方向が反転することになる。なお、本実施の形態においては、通信路の通信方向についての切替をわかりやすくするために通信路３００と通信路３１０とを設けたが、実際には、例えば通信路が２ビットのデータラインとすると、全二重通信の場合には一方のデータラインをマスタ１００からスレーブ２００へのダウンリンク用に、他方のデータラインをスレーブ２００からマスタ１００へのアップリンク用に帯域を制御し、半二重通信の場合には、全２ビットの帯域をマスタ１００からスレーブ２００へのダウンリンクもしくはスレーブ２００からマスタ１００へのアップリンクに使用する。また、２ビット以上の通信路であれば、複数のデータラインを束ねてダウンリンクとアップリンクの方向制御を行うことになる。
【００２２】
図１は、全二重通信状態でのシステム図を示している。また、図２は、半二重通信での通信方向を示すものであって、マスタ１００からスレーブ２００にデータを送信する場合のシステム図である。図２に示すように、マスタ１００からスレーブ２００に半二重通信でデータを送信する場合には、切替部１６０は、送信部１４０から受け取った送信用データを通信路３００、３１０の両方に送出し、切替部２６０は、通信路３００、３１０を介して受け取ったデータを受信部２５０に伝達する。
【００２３】
一方、図３は、半二重通信での通信方向を示すものであって、マスタ１００がスレーブ２００からデータを読み出す場合のシステム図である。図３に示すように、マスタ１００がスレーブ２００から半二重通信でデータを読み出す場合には、切替部２６０は、送信部２４０から受け取った送信用データを通信路３００、３１０の両方に送出し、切替部１６０は、通信路３００、３１０を介して受け取ったデータを受信部１５０に伝達する。
【００２４】
マスタ１００は、制御部１１０と、限界値記憶部１２０と、処理部１３０と、送信部１４０と、受信部１５０と、切替部１６０とを含んで構成される。
制御部１１０は、通信要求部１１１と、通信モード選択部１１２を含んで構成され、送信するデータや受信するデータに係る処理を実行する機能を有する。ここでいう制御部１１０が実行するデータ処理とは、マスタ１００からスレーブ２００にデータを書き込む場合のデータの指定、マスタ１００がスレーブ２００からデータを読み出す場合のデータの指定及び受理したデータを自己のＨＤＤ等の記憶部（図示せず）に格納したりする処理のことをいう。
【００２５】
通信要求部１１１は、データ通信を要求することを示す信号を処理部１３０に伝達する機能を有する。当該データ通信の要求は、マスタ１００のオペレータによる指定、あるいは予め定められたプログラムが実行されることなどによりなされる。
通信モード選択部１１２は、マスタ１００からスレーブ２００へのデータ書き込みを実行したい場合に、送出するデータの総容量と、処理部１３０の送信部１４０へのデータパケット信号の蓄積速度と、通信路３００と３１０のデータ転送速度とから、全二重通信と半二重通信のいずれの通信方式でデータ通信を行うのかを選択する機能を有する。また、通信モード選択部１１２は、スレーブ２００からマスタ１００へのデータ読み出しを実行したい場合に、受信するデータの総容量と、処理部１３０の受信部１５０に蓄積されたデータパケット信号を処理する処理速度と、通信路３００と３１０のデータ転送速度とから、全二重通信と半二重通信のいずれの通信方式でデータ通信を行うのかを選択する機能を有する。また、通信モード選択部１１２は、マスタ１００から送出したコマンドパケット信号に対するレスポンスパケット信号の通信モードが異なる場合に、予め定められた優先順位に従って、全二重通信でのデータ通信か、半二重通信でのデータ通信かを選択する機能を有する。ここで予め定められた優先順位とは、例えば、マスタ１００優先、即ちマスタ１００が指定する通信方式が優先、あるいは半二重通信優先、などがあり、システムの使用環境に応じて設定される。
【００２６】
限界値記憶部１２０は、スレーブ２００のコマンド信号キュー２５２が保持可能なコマンドパケット信号数である上限数を記憶する機能を有する。当該上限数は、マスタ１００とスレーブ２００との初期通信時やリセット時、あるいはマスタ１００がスレーブ２００に対して要求したタイミングで、Ｉ／Ｏコマンドパケット信号に対するレスポンスパケット信号とに含ませて、スレーブ２００からマスタ１００に伝達され、記憶される。
【００２７】
処理部１３０は、制御部１１０から指示されたデータ送信、もしくはデータ受信に係るコマンドパケット信号を生成して送信部１４０に伝達する機能と、制御部１１０から伝達された送信用データをパケット単位のデータパケット信号にして、送信部１４０に伝達する機能と、受信部１５０のバッファ１５１に蓄積された受信データを処理し、制御部１１０に伝達する機能を有する。
【００２８】
送信部１４０は、バッファ１４１を含んで構成され、処理部１３０から伝達されたコマンドパケット信号、データパケット信号等をバッファ１４１に蓄積し、バッファ１４１に蓄積された信号を順次切替部１６０に伝達する機能を有する。
受信部１５０は、バッファ１５１を含んで構成され、切替部１６０から伝達されたレスポンスパケット信号、データパケット信号等をバッファ１５１に蓄積し、バッファ１５１に蓄積された信号を順次処理部１３０に伝達する機能を有する。
【００２９】
切替部１６０は、全二重通信と半二重通信の通信方式の切替を制御部１１０の指示に従い実行する機能を有し、全二重通信の場合には、送信部１４０から伝達された信号を通信路３００に送出し、通信路３１０を介して受信した信号を受信部１５０に伝達する機能を有する。また、切替部１６０は、半二重通信でデータを送信する場合には、送信部１４０から伝達されたデータを通信路３００と通信路３１０とに送出し、半二重通信でデータを受信する場合には、通信路３００及び通信路３１０から受信したデータを受信部１５０に伝達する機能を有する。なお、切替部１６０は、実際には、送信用の経路と受信用の経路の組を２組備えている。第１の組の経路の一端は、通信路３００に接続され、第１の組の経路の他端については、送信用の経路は送信部１４０と、受信用の経路は受信部１５０と接続されている。また、第２の組の経路の一端は、通信路３１０の両方に接続され、第２の組の経路の他端については、送信用の経路は送信部１４０と、受信用の経路は受信部１５０と接続されている。各経路は、その通信方向に応じて、電力が供給されていれば信号の通過を許可する例えばトランジスタなどのスイッチング素子をその経路上に備え、切替部１６０は当該素子への電力の供給を切り替える、即ち一方のスイッチング素子に電力を供給し、他方のスイッチング素子への電力の供給を断つことによって、送信と受信を切り替える。全二重通信と半二重通信の切り替えを実行する。
【００３０】
次にスレーブ２００の各部の機能について説明する。
スレーブ２００は、制御部２１０と、限界値記憶部２２０と、処理部２３０と、送信部２４０と、受信部２５０と、切替部２６０とを含んで構成される。
制御部２１０は、通信要求部２１１と、通信モード選択部２１２を含んで構成され、送信するデータや受信するデータに係る処理を実行する機能を有する。ここでいう制御部２１０が実行するデータ処理とは、マスタ１００からスレーブ２００にデータを書き込む場合のデータの指定、マスタ１００がスレーブ２００からデータを読み出す場合のデータの指定及び受理したデータを自己のＨＤＤ等の記憶部（図示せず）に格納したりする処理のことをいう。
【００３１】
通信要求部２１１は、データ通信を要求することを示す信号を処理部１３０に伝達する機能を有する。当該データ通信の要求は、マスタ１００のオペレータによる指定、あるいは予め定められたプログラムが実行されることなどによりなされる。
通信モード選択部２１２は、コマンドパケット信号で指定されるデータ通信が、通信路３００と３１０におけるデータ通信速度と、バッファ２５１の容量、ならびに処理部２３０がバッファ２５１に蓄積されたデータを処理する速度に応じて、半二重通信での通信が実行可能かどうかを判定し、全二重通信か、半二重通信を選択して、選択した通信方式を処理部２３０に伝達する機能を有する。通信モード選択部２１２は、コマンド信号キュー２５２が保持するコマンドパケット信号の数が限界値記憶部２２０が保持する上限数に達している場合には半二重通信を選択する。
【００３２】
限界値記憶部２２０は、スレーブ２００のコマンド信号キュー２５２が保持可能なコマンドパケット信号数である上限数を記憶する機能を有する。当該上限数は、マスタ１００とスレーブ２００との初期通信時やリセット時に、処理部２３０により読み出され、送信部２５０、切替部２６０を介して、マスタ１００に送出される。
処理部２３０は、コマンドパケット信号を解析し、当該コマンドパケット信号に対する応答であるレスポンスパケット信号を生成して送信部２４０に伝達する機能と、制御部２１０から伝達された送信用データをパケット単位のデータパケット信号にして送信部２４０に伝達する機能と、受信部２５０のバッファ２５１に蓄積された受信データを処理し、制御部２１０に伝達する機能とを有する。
【００３３】
送信部２４０は、バッファ２４１を含んで構成され、処理部２３０から伝達されたコマンドパケット信号、データパケット信号等をバッファ２４１に蓄積し、バッファ２４１に蓄積された信号を順次切替部２６０に伝達する機能を有する。
受信部２５０は、バッファ２５１とコマンド信号キュー２５２とを含んで構成され、切替部２６０から伝達されたコマンドパケット信号、データパケット信号等をバッファ２５１に蓄積し、バッファ２５１に蓄積された信号を順次処理部２３０に伝達する機能を有する。コマンド信号キュー２５２は、コマンドパケット信号を格納する機能を有し、ここでは格納できるコマンドパケット信号の上限数を３とする。
【００３４】
切替部２６０は、全二重通信と半二重通信の通信方式の切替を制御部２１０の指示に従い実行する機能を有し、全二重通信の場合には、送信部２４０から伝達された信号を通信路３１０に送出し、通信路３１０を介して受信した信号を受信部２５０に伝達する機能を有する。また、切替部２６０は、半二重通信でデータを送信する場合には、送信部２４０から伝達されたデータを通信路３００と通信路３１０とに送出し、半二重通信でデータを受信する場合には、通信路３００及び通信路３１０から受信したデータを受信部２５０に伝達する機能を有する。なお、切替部２６０は、実際には、送信用の経路と受信用の経路の組を２組備えている。第１の組の経路の一端は、通信路３００に接続され、第１の組の経路の他端は、送信用の経路は送信部２４０と、受信用の経路は受信部２５０と接続されている。また、第２の組の経路の一端は、通信路３１０の両方に接続され、第２の組の経路の他端については、送信用の経路は送信部２４０と、受信用の経路は受信部２５０と接続されている。各経路は、その通信方向に応じて、電力が供給されていれば信号の通過を許可する例えばトランジスタなどのスイッチング素子をその経路上に備え、切替部２６０は当該素子への電力の供給を切り替える、即ち一方のスイッチング素子に電力を供給し、他方のスイッチング素子への電力の供給を断つことによって、全二重通信と半二重通信の切り替えを実行する。
＜データ＞
以下、本実施の形態においてマスタ１００とスレーブ２００がやり取りする各信号のデータフォーマットについて説明する。
【００３５】
図４は、コマンドパケット信号のデータフォーマットの一例である。
コマンドパケット信号は、マスタ１００がスレーブ２００に対して、データ送信（データ書き込み）あるいはデータ受信（データ読み出し）を要求するために送出するパケット信号である。
コマンドパケット信号は、最初の２バイトは、ヘッダ部になっており、ヘッダ部は、先頭からの４ビットに「デバイスＩＤ」の情報、次の３ビットに「カテゴリ」の情報、次の１ビットに「Ｒ／Ｗ」の情報、次の８ビットに「トランザクションＩＤ」の情報を含んで構成される。
【００３６】
「デバイスＩＤ」は、スレーブ２００を示す情報である。本実施の形態においては、マスタ１００にはスレーブ２００のみが接続されている構成をとっているが、複数のスレーブが接続されている場合に、「デバイスＩＤ」で以ってコマンドパケット信号の送信先を示す。受信側、即ちスレーブは、「デバイスＩＤ」で示されるＩＤが自己を指定する場合に受信したコマンドパケット信号の処理を実行し、自己を指定していない場合には、受信したコマンドパケット信号を削除する。
【００３７】
「カテゴリ」は、コマンドパケット信号の種別を示す情報である。「カテゴリ」の種別には、「Ｉ／Ｏコマンド」、「メモリコマンド」、「レスポンス」、「データ」、「メッセージ」などがある。ここでいうコマンドパケット信号は、メモリコマンドのことである。図２が示すデータフォーマット例は、コマンドパケット信号なので、ここではカテゴリにはコマンドパケット信号であることを示す「００１」が入る。なお、「Ｉ／Ｏコマンド」は「０００」、「メモリコマンド」は「００１」、「レスポンス」は「０１０」、「データ」は「０１１」、「メッセージ」は「１１１」で表現される。「１００」〜「１１０」についてはリザーブド領域になっており、後々、新たな種別のパケットを定義したいときに用いられる領域である。
【００３８】
「Ｒ／Ｗ」は、当該コマンドパケット信号が、データの読み出し（Ｒ：Ｒｅａｄ）を指定しているのか、データの書込み（Ｗ：Ｗｒｉｔｅ）を指定しているのかを示す情報である。データ読み出しの場合には、「Ｒ／Ｗ」は「０」となり、データ書き込みの場合には、「Ｒ／Ｗ」は「１」になる。なお、データ書き込みあるいはデータ読み出しについては、本明細書では属性と呼称することもある。
【００３９】
「トランザクションＩＤ」は、複数のトランザクションを実行する場合に、各トランザクション処理を実行することが可能な場合、各トランザクションＩＤを識別するための情報である。
ヘッダ部に続いてアーギュメント部が後続する。アーギュメント部は、「通信モード」を２ビット、「Ｒｅｓｅｒｖｅｄ」を５ビット、アドレスフィールドが４バイトなのか８バイトなのかを示す「アドレス長」の情報を１ビット含む。
【００４０】
「通信モード」は、全二重通信でデータ通信を実行するのか、半二重通信でデータ通信を実行するのかを示す情報である。「通信モード」に全二重通信を指定する場合には「０１」を、「通信モード」に半二重通信を指定する場合には「１０」を、いずれの通信モードであってもよい場合には「１１」を指定する。なお、「００」はリザーブド領域で、後々、新たな通信モードを定義する場合に用いる。
【００４１】
「Ｒｅｓｅｒｖｅｄ」は後々、コマンドパケット信号に新たな定義を盛り込む場合に、その定義を示す情報が含まれる。なお、本実施例においては、当該コマンドパケット信号以降、当面パケット信号がマスタ１００からスレーブ２００に送出されないことを示す情報（ＦＬＡＳＨ）が含まれる場合がある。
「アドレス長」は、後続するアドレスフィールドが４バイト（３２ビット）であるのか、８バイト（６４ビット）であるのかを識別するための情報である。
【００４２】
そして「アドレス長」フィールドの後には、「アドレス」フィールドと「転送サイズ」フィールドが続く。
「アドレス」は、スレーブ２００のアクセスしたいメモリのアドレスを示す情報である。
「転送サイズ」は、データ通信において、実際に転送したいデータの転送サイズを示す情報である。
【００４３】
以上が、コマンドパケット信号の説明である。
図５は、レスポンスパケット信号のデータフォーマットの一例である。
レスポンスパケット信号は、マスタ１００から受信したコマンドパケット信号あるいはＩ／Ｏコマンドに対する応答である。マスタ１００は、当該レスポンスパケット信号をスレーブ２００から受け取ることによりデータ通信の実行可否を判断し、データ通信を実行できる。
【００４４】
図５に示すようにレスポンスパケット信号は、最初の２バイトは、ヘッダ部になっており、ヘッダ部は、先頭からの４ビットに「デバイスＩＤ」の情報、次の３ビットに「カテゴリ」の情報、次の１ビットに「Ｒ／Ｗ」の情報、次の８ビットに「トランザクションＩＤ」の情報を含んで構成される。
ヘッダ部の各項目については、コマンドパケット信号の場合と同様である。但し、カテゴリは、当該信号がレスポンスパケット信号であることを示すための情報である「０１０」となる。
【００４５】
ヘッダ部にはアーギュメント部が続き、レスポンスパケット信号の場合、アーギュメント部は、通信モードを２ビット、リザーブド領域に２ビット、ＡＣＫ領域に１ビット、エラー領域に３ビットのデータを保持する。
「通信モード」についてはコマンドパケット信号の場合と同様である。
「Ｒｅｓｅｒｖｅｄ」は、新たな定義をレスポンスパケット信号に盛り込む場合に用いられるための領域である。
【００４６】
「ＡＣＫ」ビットは、コマンドパケット信号を正しく受け付けて応答可能であることを示す応答可能（ＡＣＫ）か、アドレスエラーや転送サイズエラーなどのエラーがあったことを示す応答不能（ＮＡＣＫ）かを示す情報である。
そして、「ＡＣＫ」ビットがＮＡＣＫであった場合に、エラーの内容を示す情報となる「Ｅｒｒｏｒ」領域が後続する。
【００４７】
なお、当該レスポンスパケットがＩ／Ｏコマンドに対する応答であった場合には、アーギュメント部には、データペイロード部が後続し、例えば、限界値記憶部２２０に記憶されているコマンド信号キュー２５２に格納可能なコマンドパケット信号数のデータが付随したりする。
以上が、レスポンスパケット信号の説明である。
【００４８】
図６は、データパケット信号のデータフォーマットの一例である。
データパケット信号は、マスタ１００からスレーブ２００に送出される、もしくはスレーブ２００からマスタ１００に送出される実際のデータを転送するためのパケット信号である。
図６に示すようにデータパケット信号は、最初の２バイトは、ヘッダ部になっており、ヘッダ部は、先頭からの４ビットに「デバイスＩＤ」の情報、次の３ビットに「カテゴリ」の情報、次の１ビットに「Ｒ／Ｗ」の情報、次の８ビットに「トランザクションＩＤ」の情報を含んで構成される。
【００４９】
ヘッダ部の各項目については、コマンドパケット信号の場合と同様である。但し、カテゴリは、当該信号がデータパケット信号であることを示すための情報である「０１１」となる。
ヘッダ部にはアーギュメント部が続き、ここでは、データパケット信号では、アーギュメント部は「シーケンスＩＤ」の情報を含む。
【００５０】
「シーケンスＩＤ」は、実際に転送するデータが１パケット内に収まらない場合に、データを数パケットに分割して送受信することになるため、その場合に、当該データパケット信号が、その分割したデータの何番目かのデータを示す情報となる。
そしてアーギュメント部に後続してデータペイロード部があり、ここに実際のデータが格納される。
【００５１】
以上がデータパケット信号の説明である。
なお、Ｉ／Ｏコマンドや、メッセージパケットについては、本実施例においては、然程重要ではないため、簡単に説明する。
Ｉ／Ｏコマンドパケットは、マスタ１００とスレーブ２００の接続時、あるいはリセット時などや、通信における取り決めなどを設定するときのために用いるコマンドで、Ｉ／Ｏ領域のメモリにアクセスするためのメモリである。Ｉ／Ｏコマンドは、マスタ１００がスレーブ２００の処理能力を取得したり、データ通信における１パケットのデータ量を定めたりするのに用いられる。本実施例において、マスタ１００は、スレーブ２００のコマンド信号キュー２５２に格納可能なコマンドパケット信号の限界数もこのＩ／Ｏコマンドパケットに対するレスポンスパケットに付随するＩ／Ｏデータから取得する。
【００５２】
メッセージパケットは、マスタ１００とスレーブ２００との間でその他の各種制御を実行するために用いられるものであり、割込み通知のための割込みアサート、その割り込み要因が取り除かれたことを示すネゲート、伝達エラーが発生したことを示すＣＲＣエラー、転送中止を示すアボート、アイドル状態の消費電力を削減するための電力制御、及び初期化のためのリセット等に用いられる。
＜動作＞
次に、本実施の形態の動作を図７、８に示すフローチャートを用いて説明する。
【００５３】
図７は、マスタ１００とスレーブ２００との間のやり取りの一例を示したタイミングチャートである。
通常のデータ通信の流れをステップＳ７０１〜ステップＳ７０３で説明し、スレーブ２００が半二重通信を指定するレスポンスパケット信号を送出することをステップ７０４〜ステップＳ７１１で説明する。
【００５４】
マスタ１００は、コマンドパケット信号を送出する（ステップＳ７０１）。スレーブ２００は、当該コマンドパケット信号を受信して、レスポンスパケット信号を生成し、マスタ１００に送出する（ステップＳ７０２）。
マスタ１００は、スレーブ２００からレスポンスパケット信号を受信すると、当該レスポンスパケット信号に含まれる通信モードと、マスタ１００がステップＳ７０１で送出したコマンドパケット信号で指定した通信モードとを比較し、一致した場合には、その通信モードで、不一致だった場合には、予め定められている優先度にしたがって通信モードを確定し、確定した通信モードをスレーブ２００に通知して、当該通知に対する了承信号をスレーブ２００から受信して実際のデータ通信を実行する（ステップＳ７０３）。
【００５５】
マスタ１００は、スレーブ２００にコマンドパケット信号を送出する（ステップＳ７０４）。送出されたコマンドパケット信号は、スレーブ２００のコマンド信号キュー２５２に格納される。なお、当該コマンドパケット信号が格納されるまでに、コマンド信号キュー２５２に蓄積されていたコマンドパケット信号に対応するデータ通信は全て終了していたとする。
【００５６】
マスタ１００は、スレーブ２００にコマンドパケット信号を送出する（ステップＳ７０５）。送出されたコマンドパケット信号は、スレーブ２００のコマンド信号キュー２５２に格納される。
マスタ１００は、スレーブ２００にコマンドパケット信号を送出する（ステップＳ７０６）。送出されたコマンドパケット信号は、スレーブ２００のコマンド信号キュー２５２に格納される。
【００５７】
この時点でコマンド信号キュー２５２に格納されているコマンドパケット信号の数が、格納可能なコマンドパケット信号の上限数３に達したことになる。
すると、スレーブ２００は、この時点で以降コマンドパケット信号を受け付けられないので、半二重通信でのデータ通信を実行しても差し障りがないことから、半二重を指定する情報をレスポンスパケットに含ませて、ステップＳ７０４で受信したコマンドパケット信号に対するレスポンスパケット信号をマスタ１００に送出する。
【００５８】
マスタ１００は、スレーブ２００からの半二重通信を指定するレスポンスパケット信号を受けて、マスタ１００が送出したコマンドパケット信号であってデータ通信を実行していないコマンドパケット信号の数が限界値記憶部１２０に記憶されている上限数に達していることから、通信モードを半二重に変更する。また、スレーブ２００も、レスポンスパケット信号を送出すると通信モードを半二重に変更する（ステップＳ７０８）。
【００５９】
そして、マスタ１００とスレーブ２００は、半二重通信でのデータ通信を実行する（ステップＳ７０９）。
マスタ１００とスレーブ２００は、一のコマンドパケット信号に対応するデータ通信を終了すると、通信方式を全二重通信に戻す（ステップＳ７１０）。
そして、スレーブ２００は、ステップＳ７０５において受信したコマンドパケット信号に対するレスポンスパケット信号を送出し（ステップＳ７１１）、以降の処理を実行していく。
【００６０】
では、ここから、スレーブ２００の動作について説明する。
図８は、スレーブ２００のコマンドパケット信号を受信してレスポンスパケット信号を送出するまでの動作を示すフローチャートである。
図８に示すように、スレーブ２００は、通信路３００を介してマスタ１００からコマンドパケット信号を受信し、切替部２６０は、受信したコマンドパケット信号を受信部２５０に伝達する。受信部２５０は、切替部２６０から受け取ったコマンドパケット信号をコマンド信号キュー２５２に格納する（ステップＳ８０１）。
【００６１】
すると、処理部２３０は、受け取ったコマンドパケット信号のリザーブド領域を検出して、ＦＬＡＳＨの情報が挿入されているかを判定する（ステップＳ８０２）。
コマンドパケット信号にＦＬＡＳＨが挿入されていない場合には（ステップＳ８０２のＮＯ）、処理部２３０は、コマンド信号キュー２５２に格納されているコマンドパケット信号の数がフルになっているか否かを判定する（ステップＳ８０３）。
【００６２】
コマンド信号キュー２５２がフルになっていない場合には（ステップＳ８０３のＮＯ）、通信モード選択部２１２は、コマンドパケット信号の転送サイズで指定されるデータサイズと、受信バッファ２５１の容量、処理部２３０の処理能力とから全二重通信か、半二重通信か、何れであってもよいかを判定し、処理部２３０は、判定された結果の通信方式をレスポンスパケット信号の「通信モード」に設定したレスポンスパケット信号を生成して、マスタ１００に送出する（ステップＳ８０４）。
【００６３】
一方、コマンドパケット信号にＦＬＡＳＨが挿入されている場合（ステップＳ８０２のＹＥＳ）や、コマンド信号キュー２５２がフルになっている場合（ステップＳ８０３のＹＥＳ）には、処理部２３０は、通信モードとして半二重通信を指定するレスポンスパケット信号を生成しマスタ１００に送出する。
切替部２６０は、半二重通信でのレスポンスパケット信号を送出すると通信方式を半二重に切り替えて、送出したレスポンスパケット信号のトランザクションＩＤで指定されるデータ通信を実行する。
【００６４】
以上がコマンドパケット信号を受信してからレスポンスパケット信号を送出するまでのスレーブ２００の動作である。
なお、レスポンスパケット信号を受け取ったマスタ１００は、自機で送出したコマンドパケット信号であってデータ通信が未実行のコマンドパケット信号の数が限界値記憶部１２０に記憶されているコマンドパケット信号数と同値である場合にそのことを検出して、レスポンスパケット信号で示されるデータ通信を、半二重通信で実行する。
【００６５】
上述したように、本発明に係る通信システムは、全二重通信と半二重通信とを切り替えながらデータ通信を行うものであって、マスタ１００からスレーブ２００に送出したコマンドパケット信号の数がコマンド信号キュー２５２が格納できる上限数に達した場合に半二重通信に切り替えて通信を実行する。
本実施の形態に係る通信システムでは、通常は、データ転送における受信バッファでのデータフローなどが発生しないように状況に応じて全二重通信と半二重通信とを使い分けるのに対し、スレーブ２００のコマンド信号キュー２５２に保持されているコマンドパケット信号の数がコマンド信号キュー２５２が格納できる上限に達している場合には、必ず半二重通信を実行する。スレーブ２００のコマンド信号キュー２５２が保持できるコマンドパケット信号の数がその上限数に達したときには、それ以上コマンドパケット信号を受け付けられないため、通信路３００は、コマンドパケット信号の送信用の経路として確保しておく必要性が薄まる。そこで、本通信システムにおいては、そのような場合に、全二重通信から半二重通信に切り替えることによって、データ通信におけるデータ転送量を増やしてデータ転送時間を短縮できるので、特に、マスタ１００からスレーブ２００が保持する情報を読み出す場合、即ちコマンドパケット信号を送信する方向とは逆の方向の半二重通信を行う場合に本通信システムは効果的に作用する。
＜実施の形態２＞
＜概略＞
本実施の形態２においては、半二重通信と全二重通信との切替をできるだけ少なくすることを示す。上記実施の形態においては、Ｉｎ  Ｏｒｄｅｒ、つまりコマンドパケット信号を受信した順番で、各コマンドパケット信号で指定されるデータの通信を実行する場合を示したが、本実施の形態においては、Ｏｕｔ  ｏｆ  Ｏｒｄｅｒ、つまりコマンドパケット信号を受信した順序に関係なくデータの通信を実行する。
【００６６】
つまり、コマンド信号キュー内に蓄積されているコマンドパケット信号について、そのコマンドパケット信号で要求されているデータの読み出し、あるいはデータの書込みについて、順序を入れ替えて、読み出しならば読み出しを全部先に、書込みならば書き込みだけ先に全部実行すれば、通信方向の切替回数を少なくすることができる。よって、本実施の形態２においては、データ通信を実行する順序を入れ替えることを示す。
＜構成＞
本実施の形態２においては、通信システムのシステム構成は実施の形態１に示したものと変わらないのでその説明を省略する。
【００６７】
なお、スレーブ２００については、実施の形態１に示したものとは異なり、受信したコマンドパケット信号で指定されるデータ通信の実行順序を変更する機能を有する。
具体的には、コマンド信号キュー２５２に格納されているコマンドパケット信号の数が上限に達している、もしくは、ＦＬＡＳＨが挿入されたコマンドパケット信号を受け取った場合に、コマンド信号キュー２５２に格納されているコマンドパケット信号の順序をそのデータ書き込みか、データ読み出しかの属性に応じて入れ替えてデータ通信を実行する。
【００６８】
図９にコマンドパケット信号の順序の入れ替え方の例を示した。
図９（ａ）に示すように、コマンドパケット信号９０１、９０２、９０３、９０４、９０５をこの順に受信したとする。なお、ここでは、コマンド信号キュー２５２に格納可能なコマンドパケット信号数は、「５」としている。図９においては、データ読み出しを要求するコマンドは、「ＣＭＤ＿Ｒ」で、データ書き込みを要求するコマンドは、「ＣＭＤ＿Ｗ」で示している。
【００６９】
このとき、本実施の形態２においては処理部２３０は、コマンド信号キュー２５２に格納されているコマンドパケット信号の順序を入れ替える。
ここで、コマンド信号キュー２５２に一番最初に格納されたコマンドパケット信号９０１は、データ書き込みを要求するコマンドパケット信号であるので、データ書き込みを要求するコマンドパケット信号を優先することとし、処理部２３０は、データ通信を実行する順序を、図９（ｂ）に示すように、コマンドパケット信号９０１、９０４、９０２、９０３、９０５と変更する。
【００７０】
こうすることで、同方向のデータ通信については一度まとめて行われるため、その通信方向を切り替えるためのタイムラグを抑えることができる。
このようにコマンドパケット信号の順序を入れ替えて、データ通信を行なう際の通信方式の切り替えを実行する回数を減らすができる。複数のコマンドパケット信号で示される複数のデータ通信を実行する場合に、その順序を入れ替えて、連続して同じ属性のデータ通信を実行するので、データ通信の所要時間を短縮することができる。
＜動作＞
図１０に、実施の形態２におけるスレーブ２００の動作の流れを示すフローチャートを用意した。図８と比べれば分かるように、その相違点は、実施の形態１におけるステップＳ８０５の動作である。
【００７１】
そこで、本フローチャートでは、ステップＳ８０５の代わりに実行されるステップＳ１００１、Ｓ１００２の動作を説明し、その他のステップにおける動作については図８に示したものと同様であるため、説明を省略する。
コマンドパケット信号にＦＬＡＳＨが挿入されている場合（ステップＳ８０２のＹＥＳ）や、コマンド信号キュー２５２がフルになっている場合（ステップＳ８０３のＹＥＳ）には、スレーブ２００は、コマンド信号キュー２５２に格納されているコマンドパケット信号の順序を入れ替える。処理部２３０は、コマンド信号キュー２５２に最初に格納されたコマンドパケット信号がデータ書き込みを要求するものであるのか、データ読み出しを要求するものであるのかを検出し、検出された属性が優先されるようにコマンドパケット信号の順序を入れ替える（ステップＳ１００１）。
【００７２】
そして、半二重通信でのデータ通信を通信モードに指定し、かつ、リザーブド領域に、同属性のデータ通信を連続して行うことを示す情報を含ませたレスポンスパケット信号を生成し、マスタ１００に送出する（ステップＳ１００２）。ここでいうレスポンスパケット信号は、図９（ｂ）を例にとると、コマンドパケット信号９０１に対するレスポンスパケット信号である。そして、同属性のレスポンスパケット信号を続けて送出する（図９（ｂ）を例にとると、コマンドパケット信号９０４に対するレスポンスパケット信号）。その後通信方式を半二重通信に切り替えて、入れ替えた順序で実際のデータ通信を半二重方式で実行する。
【００７３】
マスタ１００は、当該レスポンスパケット信号を受け取り、当該レスポンスパケット信号で指定される通信モードが半二重通信であること、コマンド信号キュー２５２に格納されているコマンドパケット信号の数が上限数に達していることを検出して、通信方式を半二重通信に切り替えて、レスポンスパケット信号のトランザクションＩＤで指定されるデータ通信を実行する。
【００７４】
以上に説明してきたように、コマンドパケット信号で指定されるデータ通信の実行順序を入れ替えることが許されるのならば、その順序を入れ替えてデータ通信を実行する方向（マスタ１００からスレーブ２００へのデータ送信、あるいはスレーブ２００からマスタ１００へのデータ送信）の切替の回数を少なくしてデータ通信を実行する。通信方向の切替を少なくすることで、全体を通してのデータ通信速度の向上を図ることができる。
＜実施の形態３＞
実施の形態３においては、上記実施の形態１において示した通信装置についての一具体例を説明する。上記実施の形態１に係る通信装置は、実際には、例えば、ＳＤカードリーダとＳＤカードとの間の通信において用いられる。
【００７５】
上記実施の形態１におけるマスタ１００がＳＤカードリーダ、スレーブ２００がＳＤカードに該当する。
図１１は、そのような使用例を示す図である。
図１１に示すように実施の形態３に係る通信システムは、ＳＤカードリーダとＳＤカードとを含んで構成される。ＳＤカードリーダはＳＤカードを装填可能な機器であり、ＳＤカードが保持しているデータを読み取ったり、ＳＤカードに新たなデータを書き込むためのインタフェースである。
【００７６】
ＳＤカードリーダ１００ａや、ＳＤカード２００ａを構成する各機能部について、上記実施の形態１と同名、かつ同符号を振っており、同一の機能を果たすものとして、ここではその詳細な説明は省略する。
図示してはいないが、ＳＤカードリーダ１００ａは、例えばパソコンなどと接続、もしくはパソコンなどに内蔵されて、パソコンからの指示を受け付けて、ＳＤカード２００ａから読み取ったデータをパソコンに送信したり、データの書き込みを行なったりすることができる。
【００７７】
図１１においては、実施の形態１に示した通信システムとの対応をわかりやすくするために、通信路３００と通信路３１０とを残しているが、実際には、ピン１７０とピン２７０、そしてピン１７１とピン２７１とが直接接触して、通信路３００と通信路３１０を形成することになる。
このような使用形態において、上記実施の形態１において示したように、ＳＤカードリーダ１００ａは、ＳＤカード２００ａと、全二重と半二重との通信方式の切り替えを行い、ＳＤカード２００ａのコマンド信号キュー２５２に格納されているコマンドの数が、その上限値に達している場合であって、ＳＤカードリーダ１００ａと、ＳＤカード２００ａとは、全二重での通信を行なっていたときには、半二重通信に通信方式を切り替えてデータ転送を実行する。
＜補足＞
上記実施形態において、本発明の実施の手法について説明してきたが、本発明の実施形態がこれに限られないことは勿論である。以下、上記実施形態以外に本発明の思想として含まれる各種の変形例について説明する。
（１）上記実施の形態１において、スレーブ２００がコマンドパケット信号を受信して、コマンド信号キュー２５２がフルになった場合には、レスポンスパケット信号には通信モードとして半二重通信を指定するレスポンスパケットをスレーブ２００がマスタ１００に送出し、当該レスポンスパケットを受け付けてマスタ１００が自動的に半二重通信方式に切り替えてデータ通信を実行することを示した（図７、ステップＳ７０８、ステップＳ７０９参照）。しかし、これは以下のような手法をとってもよい。
【００７８】
即ち、図７のステップＳ７０３で説明したように、半二重通信を指定する情報を含むレスポンスパケット信号をスレーブ２００から受け取った場合に、マスタ１００は、半二重通信に通信方式を切り替えることを通知し、当該通知に対する了承信号を受け取ってから半二重通信に切り替えてデータ通信を実行する構成にしてもよい。
（２）上記実施の形態において、マスタ１００は、限界値記憶部１２０にスレーブ２００のコマンド信号キュー２５２に格納可能なコマンドパケット信号の限界数を記憶する構成としたが、マスタ１００が、スレーブ２００のコマンド信号キュー２５２に格納されていて、データ通信が実行されていないコマンドパケット信号の数が上限に達していることを示すレスポンスパケット信号を受け取ることで、マスタ１００がコマンド信号キュー２５２でコマンドパケット信号数が上限に達していることを認識する構成としてもよい。この場合、コマンド信号キュー２５２に格納されているコマンドパケット信号の数がフルになった状態で、返されるレスポンスパケット信号のリザーブド領域にコマンド信号キュー２５２がフルになっていることを示す情報を格納してもよいし、コマンドパケット信号を受け取れなかったことをＮＡＣＫにより通知することとしてもよい。
（３）上記実施の形態２で示したコマンドパケット信号の順序の入れ替えでは、最初にコマンド信号キュー２５２に格納されたコマンドパケット信号を優先することとした。しかし、これは、予め定めた優先順位に従った入れ替えであってもよい。
【００７９】
例えば、予めデータ書き込みを優先すると定めていてもよい。この場合には、図９（ｃ）に示すように、処理部２３０は、コマンドパケット信号９０２、９０３、９０５、９０１、９０４の順序に入れ替える。
（４）上記実施の形態２において、レスポンスパケット信号に連続して同属性のコマンドパケット信号に対応するデータ通信を実行することを示す情報を含ませることとしたが、同属性のコマンドパケット信号に対応するレスポンスパケット信号を連続してまとめて送出することでこの構成にかえてもよい。このとき、マスタ１００は、連続して受信したレスポンスパケット信号について、その属性が同一である限り、通信方向を切り替えることなく、レスポンスパケット信号で指定されるデータ通信を実行する。
【００８０】
また、ここで、連続して、データ通信を行うとしたが、１つのコマンドパケット信号に対するデータ通信を実行したのちに、一旦全二重通信に戻して、スレーブ２００が新たなコマンドパケット信号を受け付けられるようにする構成としてもよい。
（５）上記実施の形態においては時に記載しなかったが、コマンド信号キュー２５２に蓄積されているコマンドパケット信号は、データ通信を実行したものから削除する構成としてもよいし、削除せずにコマンドパケット信号ごとにデータ通信を実行したかどうかのフラグを設けて、データ通信を実行したコマンドパケット信号については新たなコマンドパケット信号で上書きする構成としてもよい。なお、コマンドパケット信号を削除しない場合には、スレーブ２００は、コマンドパケット信号の数が上限数に達しているか否かの判断は、データ通信を実行していないことを示すフラグを保持するコマンドパケット信号についての数をカウントして、その数が上限数に達しているかにより行う。
（６）上記実施の形態においては特に記載しなかったが、スレーブ２００がマスタとなり、マスタ１００がスレーブとなってデータ通信を実行してもよい。
（７）上記実施の形態において示した切替部１６０、２６０における切り替えの手法は、一手法に過ぎず、その切り替えの仕方には色々あり、全二重と半二重との通信方式を切り替えることができればどのような手法をとってもかまわない。
【００８１】
上記実施の形態１において示した切替手法以外の一例としては、例えば、以下に示すような方法も考えられる。まず、マスタとスレーブの送信部及び受信部が現在の通信方式がいずれの通信方式であるかを認識できるように構成する。そして、半二重の場合であって送信を行なうときには送信部が両通信路に対してデータを送信し、受信を行なうときには受信部が両通信路からのデータを受信し、全二重の場合にあっては、送信部は一方の通信路、例えば通信路３００からのみデータを受信し、受信部は、もう一方の通信路３１０からのみデータを受信し、例え通信路３００からデータを受信したとしてもそのデータを処理部に転送しない、即ちフィルタリングするような構成をとってもよい。
（８）上記実施の形態３において、ＳＤカードリーダ１００ａとＳＤカード２００ａは、２つのピンしかない状態を示しているが、ピンの本数は２つしかないのではなく、少なくとも２つあればよいのであって、何本あってもかまわない。通常のＳＤカードであれば、９本のピンを備えるし、miniＳＤ（登録商標）カードは、１１本のピンを備えている。これらのピンのうち少なくとも２本のピンを用いて、全二重と半二重を切り替えながら通信を実行すればよく、３本以上のピンを用いてデータ転送を行なってもよい。
【００８２】
また、上記実施の形態３では、ＳＤカードを一例として示したが、これはI/Oメモリカードの類であれば、ＳＤカードでなくともよく、その場合にＳＤカードリーダは、そのI/Oメモリカードにアクセスできるカードリーダに置き換わる。
（９）上記実施の形態において、通信路３００と通信路３１０が全二重通信の場合において、それぞれシリアル転送でのデータ通信を行なっているとすると、半二重通信の場合には、通信路を少なくとも２本使えるということで、差動信号方式でのデータ転送に切り替える構成にしてもよい。そして、全二重通信に戻す場合には、シリアル転送に戻す構成としてもよい。こうすることで、このような場合には、半二重通信の際にさらにデータ転送を早めることができる。
（１０）上記実施の形態１において、マスタ１００は、次に送出するコマンドパケット信号が、今まで送出したコマンドパケット信号であって、まだデータ通信が実行されていないコマンドパケット信号とあわせて、その合計数が限界値記憶部１２０が記憶している上限数に達する場合に、通信モードとして半二重通信を指定するコマンドパケット信号を送出することとしてもよい。
（１１）上記実施の形態におけるマスタ１００あるいはスレーブ２００の各機能部は、１または複数のＬＳＩ（Ｌａｒｇｅ Ｓｃａｌｅ Ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）によって実現されてもよく、複数の機能部が１のＬＳＩにより実現されてもよい。
【００８３】
また、集積化の手法としてはＬＳＩに限定されるものではなく、専用回路または汎用プロセッサで実現することとしてもよい。さらには、ＬＳＩ製造後にプログラムすることが可能なＦＰＧＡ（FieldProgrammable Gate Array）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンイギュラブル・プロセッサを利用してもよい。また、半導体技術の進歩又は派生する別技術により、ＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適応等が可能性としてあり得る。
（１２）上述の実施形態で示した通信に係る動作、通信方式を切り替える処理等を通信装置のプロセッサ、及びそのプロセッサに接続された各種回路に実行させるためのプログラムコードからなる制御プログラムを、記録媒体に記録すること、又は各種通信路等を介して流通させ頒布させることもできる。このような記録媒体には、ＩＣカード、ハードディスク、光ディスク、フレキシブルディスク、ＲＯＭ等がある。流通、頒布された制御プログラムはプロセッサに読み出され得るメモリ等に格納されることにより利用に供され、そのプロセッサがその制御プログラムを実行することにより、実施形態で示したような各種機能が実現されるようになる。
【産業上の利用可能性】
【００８４】
本発明は、マスタとスレーブとの間で互いの全二重通信と半二重通信の通信方式を指定しあってのデータ通信を実行するシステムにおいて、適切に半二重通信を選択してデータ通信の高効率化を図ることができ、有用である。
【符号の説明】
【００８５】
１００  通信装置（マスタ）
１００ａ  ＳＤカードリーダ
１１０、２１０  制御部
１１１、２１１  通信要求部
１１２、２１２  通信モード選択部
１２０、２２０  限界値記憶部
１３０、２３０  処理部
１４０、２４０  送信部
１４１、１５１、２４１、２５１  バッファ
１５０、２５０  受信部
１６０、２５０  切替部
１７０、１７１、２７０、２７１  ピン
２００  通信装置（スレーブ）
２００ａ  ＳＤカード
３００、３１０  通信路
【図１】
0005395075.tif 000002
【図２】
0005395075.tif 000003
【図３】
0005395075.tif 000004
【図４】
0005395075.tif 000005
【図５】
0005395075.tif 000006
【図６】
0005395075.tif 000007
【図７】
0005395075.tif 000008
【図８】
0005395075.tif 000009
【図９】
0005395075.tif 000010
【図１０】
0005395075.tif 000011
【図１１】
0005395075.tif 000012