(57)【要約】  通信方式の切替完了を認識した上で処理すべきデータの送受信を開始することのできるデータ通信システムを提供する。  データ通信システムはマスタ通信装置とスレーブ通信装置とからなり、半二重通信から全二重通信への切替が行われる際に、マスタとスレーブとの間で、切り替えを指示する旨の方向制御コードと切り替えが完了した旨のプリアンブルコードとのハンドシェイク、および当該プリアンブルコードと当該プリアンブルコードを受け取った旨のアクノリッジコードとのハンドシェイクを連続的に行うことで、互いの通信装置は相手通信装置の通信方式の切替完了を認識した上で、処理すべきデータの送受信を開始する。
2009153944.tif 000002
【特許請求の範囲】
【請求項１】
第１装置と第２装置とからなり、前記第１装置と前記第２装置とを接続する第１及び第２の通信路を用いて全二重通信と半二重通信とを切り替えて処理対象であるデータの送受信を行うデータ通信システムであって、
前記第１装置は、
半二重通信時に当該第１装置がデータ送信側である場合において、半二重通信から全二重通信への切り替えを示す指示コードを前記第１の通信路を介して前記第２装置へ送出する第１送出手段と、
前記第１及び前記第２の通信路と接続された第１インターフェース部を、前記第２の通信路によりデータを送信する構成から受信する構成へと切り替える第１切替制御手段と、
前記第１切替制御手段による切替が完了し、且つ全二重通信への切替完了を示す応答コードを前記第２の通信路を介して前記第２装置から受け付けた後、全二重通信により処理対象となるデータの送受信を開始する第１通信制御手段とを備え、
前記第２装置は、
前記第１装置から前記指示コードを前記第１の通信路を介して受け付けると、前記第１及び前記第２の通信路と接続された第２インターフェース部において、前記第２の通信路によりデータを受信する構成から送信する構成へと切り替える第２切替制御手段と、
前記第２切替制御手段による切替が完了した後、前記応答コードを前記第２の通信路を介して前記第１装置へ送出する第２送出手段と、
前記応答コードを送出後、全二重通信により処理対象となるデータの送受信を開始する第２通信制御手段とを備える
ことを特徴とするデータ通信システム。
【請求項２】
前記第１送出手段は、さらに、前記第１通信制御手段による処理対象となるデータの送受信の開始に先立って、前記応答コードを受信した旨を示し、且つ前記第２装置からのデータの受信の待ち受け状態である旨を示す応答受信コードを前記第２装置へ送出し、
前記第１通信制御手段は、前記第１送出手段による前記応答受信コードの送出後、処理対象のデータの送受信を開始し、
前記第２通信制御手段は、前記応答受信コードの受信後、処理対象のデータの送受信を開始する
ことを特徴とする請求項１に記載のデータ通信システム。
【請求項３】
前記データ通信システムは、
データ送信側がデータ送信を抑止する旨の抑止コードを、データ受信側が前記抑止コードの受信に対するメッセージコードを、それぞれ相手側の装置へ送信するフロー制御によるデータ通信を行い、
前記第１送出手段は、前記指示コードの送出に先立って、前記抑止コードを前記第１の通信路を介して前記第２装置へ送出し、その後、前記指示コードを送出し、
前記第２送出手段は、前記第２切替制御手段による前記切替が完了すると、前記応答コードの代わりに前記メッセージコードを送出し、
前記第１通信制御手段は、前記第２装置から前記応答コードとして前記メッセージコードを受け付ける
ことを特徴とする請求項２に記載のデータ通信システム。
【請求項４】
前記データ通信システムは、
データ送信側がデータ送信を抑止する旨の抑止コードを、データ受信側が前記抑止コードの受信に対するメッセージコードを、それぞれ相手側の装置へ送信するフロー制御によるデータ通信を行い、
前記第１送出手段は、半二重通信によるデータ通信時において、前記指示コードの代わりに前記抑止コードを前記第２装置へ送出し、
前記第２切替制御手段は、前記第１装置から前記指示コードとして前記抑止コードを受信し、
前記第２送出手段は、前記第２切替制御手段による前記切替が完了すると、前記応答コードの代わりに前記メッセージコードを送出し、
前記第１通信制御手段は、前記第２装置から前記応答コードとして前記メッセージコードを受け付ける
ことを特徴とする請求項１に記載のデータ通信システム。
【請求項５】
全二重通信時において、前記第１の通信路は前記第１装置から前記第２装置へデータを送信するよう用いられ、前記第２の通信路は前記第２装置から前記第１装置へデータを送信するよう用いられ、
前記第１送出手段は、全二重通信時において、前記第２装置へデータを送信する旨を示すコードと半二重通信にてデータ通信を行う旨を示すコードとを含む送信要求コードを前記第１の通信路を介して前記第２装置へ送出し、
前記第２送出手段は、前記送信要求コードを前記第１の通信路を介して受け取ると、当該送信要求コードを受け付けた旨を示す要求受信コードを前記第２の通信路を介して前記第１装置へ送出し、
前記第１切替制御手段は、前記要求受信コードを前記第２の通信路を介して受け取ると、前記第１インターフェース部において、前記第２の通信路によりデータを受信する構成から送信する構成へと切り替え、
前記第２切替制御手段は、前記要求受信コードの送出した後、前記第２インターフェース部において、前記第２の通信路によりデータを送信する構成から受信する構成へと切り替え、
前記第１通信制御手段は、前記要求受信コードを受け取ってから所定の時間が経過した後、半二重通信により処理対象となるデータの送信を開始する
ことを特徴とする請求項１に記載のデータ通信システム。
【請求項６】
前記データ通信システムは、
前記第１装置が前記送信要求コードを送信した場合において、前記第２装置が受信待ちである旨の待ち受けコードを、前記第１装置が前記待ち受けコードの受信に対するメッセージコードを、それぞれ相手側の装置へ送信するフロー制御によるデータ通信を行い、
前記第２送出手段は、前記第２切替制御手段による前記第２の通信路によりデータを送信する構成から受信する構成への切り替えに先立って、前記待ち受けコードを前記第２の通信路を介して前記第１装置へ送出し、
前記第１送出手段は、前記要求受信コードを受け取り後、さらに前記待ち受けコードを前記第２の通信路を介して受け取ると、通信方式を全二重通信から半二重通信へと切り替える旨の指示コードを前記第１の通信路を介して前記第２装置へ送出し、
前記第１切替制御手段は、前記待ち受けコードの受け取り後、前記第１インターフェース部を前記第２の通信路によりデータを受信する構成から送信する構成への切り替え、
前記第２切替制御手段は、通信方式を全二重通信から半二重通信へと切り替える旨の指示コードを前記第１の通信路を介して受け取ると、前記第２インターフェース部を前記第２の通信路によりデータを送信する構成から受信する構成への切り替え、
前記第１送出手段は、前記待ち受けコードを受け取ってから前記所定の時間の経過すると、前記第１通信制御手段による処理対象となるデータの送信の開始に先立って、前記メッセージコードを前記第１の通信路を介して前記第２装置へ送出し、
前記第１通信制御手段は、前記第１送出手段による前記メッセージコードを送出した後、半二重通信により処理対象のデータの送信を開始する
ことを特徴とする請求項５に記載のデータ通信システム。
【請求項７】
前記データ通信システムは、
前記第１装置が前記送信要求コードを送信した場合において、前記第２装置が受信待ちである旨の待ち受けコードを、前記第１装置が前記待ち受けコードの受信に対するメッセージコードを、それぞれ相手側の装置へ送信するフロー制御によるデータ通信を行い、
前記第２送出手段は、前記第２切替制御手段による第２インターフェース部を前記第２の通信路によりデータを送信する構成から受信する構成への切り替えに先立って、前記待ち受けコードを前記第２の通信路を介して前記第１装置へ送出し、
前記第２切替制御手段は、前記待ち受けコードが送出されると、前記第２インターフェース部を前記第２の通信路によりデータを送信する構成から受信する構成への切り替え、
前記第１送出手段は、前記要求受信コードの受け取り後、さらに前記待ち受けコードを前記第２の通信路を介して受け取ると、前記待ち受けコードの受け取りから前記所定の時間が経過すると、前記第１通信制御手段による処理対象となるデータの送信の開始に先立って、前記メッセージコードを前記第１の通信路を介して前記第２装置へ送出し、
前記第１通信制御手段は、前記第１送出手段による前記メッセージコードを送出した後、半二重通信により処理対象のデータの送信を開始する
ことを特徴とする請求項５に記載のデータ通信システム。
【請求項８】
全二重通信時において、前記第１の通信路は前記第１装置から前記第２装置へデータを送信するよう用いられ、前記第２の通信路は前記第２装置から前記第１装置へデータを送信するよう用いられ、
前記第１送出手段は、前記第２装置からデータを受信する旨のコードと半二重通信にてデータ通信を行う旨のコードとを含む受信要求コードを前記第１の通信路を介して前記第２装置へ送出し、
前記第２送出手段は、前記受信要求コードを前記第１の通信路を介して受け取ると、当該受信要求コードを受け付けた旨を示す要求受信コードを前記第２の通信路を介して前記第１装置へ送出し、
前記第１切替制御手段は、前記要求受信コードを受け取った後、第１インターフェース部を前記第１の通信路によりデータを送信する構成から受信する構成へと切り替え、
前記第２切替制御手段は、前記要求受信コードの送出後、第２インターフェース部を前記第１の通信路によりデータを受信する構成から送信する構成へと切り替え、
前記第２通信制御手段は、前記要求受信コードを送出してから所定の時間が経過した後、半二重通信により処理対象のデータの送信を開始する
ことを特徴とする請求項１に記載のデータ通信システム。
【請求項９】
前記データ通信システムは、
前記第１装置が前記受信要求コードを送信した場合において、前記第１装置が受信待ちである旨の待ち受けコードを、前記第２装置が前記待ち受けコードの受信に対するメッセージコードを、それぞれ相手側の装置へ送信するフロー制御によるデータ通信を行い、
前記第１送出手段は、前記要求受信コードを受け取った後、前記第１切替制御手段による第１インターフェース部を前記第１の通信路によりデータを送信する構成から受信する構成への切り替えに先立って、前記待ち受けコードを前記第１の通信路を介して前記第２装置へ送出し、
前記第２送出手段は、前記要求受信コードの送出後、さらに前記待ち受けコードを前記第１の通信路を介して受け取ると、全二重通信から半二重通信への通信方式の切り替える旨の指示コードを前記第２の通信路を介して前記第１装置へ送出し、
前記第１切替制御手段は、前記要求受信コードの受け取り後、さらに全二重通信から半二重通信への通信方式の切り替える旨の指示コードを前記第２の通信路を介して受け取ると、第１インターフェース部を前記第１の通信路によりデータを送信する構成から受信する構成へと切り替え、
前記第２送出手段は、前記待ち受けコードを受け取ってから前記所定の時間の経過すると、前記第２通信制御手段による処理対象となるデータの送信の開始に先立って、前記メッセージコードを前記第２の通信路を介して前記第１装置へ送出し、
前記第２通信制御手段は、前記メッセージコードの送出した後、半二重通信により処理対象のデータの送信を開始する
ことを特徴とする請求項８に記載のデータ通信システム。
【請求項１０】
前記データ通信システムは、
前記第１装置が前記受信要求コードを送信した場合において、前記第１装置が受信待ちである旨の待ち受けコードを、前記第２装置が前記待ち受けコードの受信に対するメッセージコードを、それぞれ相手側の装置へ送信するフロー制御によるデータ通信を行い、
前記第１送出手段は、前記要求受信コードを受け取った後、前記第１切替制御手段による前記第１インターフェース部を前記第１の通信路によりデータを送信する構成から受信する構成への切り替えに先立って、前記待ち受けコードを前記第１の通信路を介して前記第２装置へ送出し、
前記第１切替制御手段は、前記待ち受けコードが送出されると、第１インターフェース部を前記第１の通信路によりデータを送信する構成から受信する構成へと切り替え、
前記第２送出手段は、前記要求受信コードの送出した後、さらに前記待ち受けコードを前記第１の通信路を介して受け取ると、前記待ち受けコードを受け取ってから前記所定の時間が経過した後、前記第２通信制御手段による処理対象となるデータの送信の開始に先立って、前記メッセージコードを前記第２の通信路を介して前記第１装置へ送出し、
前記第２通信制御手段は、前記第２送出手段による前記メッセージコードの送出した後、半二重通信により処理対象となるデータの送信を開始する
ことを特徴とする請求項５に記載のデータ通信システム。
【請求項１１】
全二重通信から半二重通信への切り替えにおける前記所定の時間は、前記第２装置が前記第２切替制御手段により半二重通信から全二重通信への切り替えを開始してから前記第１装置との間で処理すべきデータの送受信を開始する状態となるまでに要した期間である
ことを特徴とする請求項８に記載のデータ通信システム。
【請求項１２】
半二重通信で前記第１装置が処理対象となるデータを受信する場合において、
前記第２送出手段は、半二重通信から全二重通信への切り替えを示す指示コードを前記第２の通信路を介して前記第１装置へ送出し、
前記第２切替制御手段は、第２インターフェース部を前記第１の通信路によりデータを送信する構成から受信する構成へと切り替え、
前記第１切替制御手段は、半二重通信から全二重通信への切り替えを示す前記指示コードを前記第１の通信路を介して受け付けると、第１インターフェース部を前記第１の通信路によりデータを受信する構成から送信する構成へと切り替え、
前記第１送出手段は、前記第１切替制御手段による切り替えが完了した後、全二重通信への切替完了を示す前記応答コードを前記第１の通信路を介して前記第２装置へ送出し、
前記第１通信制御手段は、全二重通信への切替完了を示す前記応答コードを送出した後、全二重通信により処理対象となるデータの送受信を開始し、
前記第２通信制御手段は、前記第１装置から全二重通信への切替完了を示す応答コードを前記第２の通信路を介して受け付けると、全二重通信により処理対象となるデータの送受信を開始する
ことを特徴とする請求項８に記載のデータ通信システム。
【請求項１３】
前記第１装置が前記指示コードの送出に用いる前記第１の通信路は、
当該第１装置が全二重通信時において前記第２装置へデータを送信するために用いる通信路である
ことを特徴とする請求項１に記載のデータ通信システム。
【請求項１４】
他装置との間で接続された第１及び第２の通信路を用いて全二重通信と半二重通信とを切り替えて処理対象であるデータの送受信を行うデータ通信装置であって、
半二重通信時に当該データ通信装置がデータ送信側である場合において、半二重通信から全二重通信への切り替えを示す指示コードを前記第１の通信路を介して前記他装置へ送出する送出手段と、
前記第１及び第２の通信路と接続された第１インターフェース部を、前記第２の通信路によりデータを送信する構成から受信する構成へと切り替える切替制御手段と、
前記切替制御手段による切り替えが完了し、且つ全二重通信への切替完了を示す応答コードを前記第２の通信路を介して前記他装置から受け付けると、全二重通信により処理対象となるデータの送受信を開始する通信制御手段とを備える
ことを特徴とするデータ通信装置。
【請求項１５】
前記切替制御手段は、当該データ通信装置が半二重通信時においてデータ受信側である場合に、前記他装置から半二重通信から全二重通信への切り替えを示す指示コードを前記第２の通信路を介して受け付けると、前記第１インターフェース部を、前記第１の通信路によりデータを受信する構成から送信する構成へと切り替え、
前記送出手段は、前記切替制御手段により前記第１インターフェース部において前記第１の通信路によりデータを受信する構成から送信する構成へと切り替えが完了した後、全二重通信への切替完了を示す応答コードを前記第１の通信路を介して前記他装置へ送出し、
前記通信制御手段は、全二重通信への切替完了を示す前記応答コードを送出後、全二重通信により処理対象となるデータの送受信を開始する
ことを特徴とする請求項１４に記載のデータ通信装置。
【請求項１６】
前記他装置は、データ通信に用いられる第１端子及び第２端子を備えており、
前記データ通信装置は、
データ通信に用いられる第３端子及び第４端子を有し、前記他装置と着脱可能であり、前記他装置への装着時に前記第１端子と前記第３端子とが、前記第２端子と前記第４端子とがそれぞれ接続されることで前記第１及び前記第２の通信路を形成するメモリカード又はＩ／Ｏカードである
ことを特徴とする請求項１５に記載のデータ通信装置。
【請求項１７】
第１装置と第２装置とからなり、前記第１装置と前記第２装置とを接続する第１及び第２の通信路を用いて全二重通信と半二重通信とを切り替えて処理対象であるデータの送受信を行うデータ通信システムで用いられる通信方法であって、
前記第１装置は、
半二重通信時に当該第１装置がデータ送信側である場合において、半二重通信から全二重通信への切り替えを示す指示コードを前記第１の通信路を介して前記第２装置へ送出し、
前記第１及び前記第２の通信路と接続された第１インターフェース部を、前記第２の通信路によりデータを送信する構成から受信する構成へと切り替え、
前記第１インターフェース部の切替が完了し、且つ全二重通信への切替完了を示す応答コードを前記第２の通信路を介して前記第２装置から受け付けた後、全二重通信により処理対象となるデータの送受信を開始し、
前記第２装置は、
前記第１装置から前記指示コードを前記第１の通信路を介して受け付けると、前記第１及び前記第２の通信路と接続された第２インターフェース部において、前記第２の通信路によりデータを受信する構成から送信する構成へと切り替え、
前記第２インタフェース部の切替が完了した後、前記応答コードを前記第２の通信路を介して前記第１装置へ送出し、
前記応答コードを送出後、全二重通信により処理対象となるデータの送受信を開始する
ことを特徴とする通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、全二重通信と半二重通信が可能な複数の通信路を介して接続された複数の通信装置を含む通信システムにおける通信方式の切り替えの技術に関する。
【背景技術】
【０００２】
近年の半導体微細化と高速化技術の進展に伴って、機器間あるいは機器内に搭載されるＬＳＩ間で通信するデータ量は益々増加傾向にあるが、その一方で、パッケージコストに影響するＬＳＩの端子（パッド）数には厳しい制約がある。【０００３】
このような制約のもとで用いられる通信方式としては、送受信の方向制御や送信権の調停制御が必要な半二重通信方式と、送受信を同時に処理できる全二重通信方式が挙げられる。【０００４】
これら通信方式を切り替えることで、処理すべきデータの送受信を効率的に行う技術が開示されている（特許文献１、２）。【０００５】
例えば、特許文献１では、送信あるいは受信の一方のみを行う場合には通信方式を半二重通信方式へ切り替え、送信及び受信の双方を行う場合には通信方式を全二重通信方式に切り替える技術が開示されている。【０００６】
また、特許文献２では、半二重通信方式への切り替え時においては、８ｂ／１０ｂのようなエンコード方式で規定される特殊な制御コードを用いて、送受信の方向制御や方向制御後のビット同期を行う技術が開示されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００２−９４６００号公報
【特許文献２】特開２００５−２６０３６１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ところで、通信方式の切り替え時に関して、従来、切り替え開始後、予め定められた期間（固定期間）が経過するとデータの送受信を開始するという手順が用いられている。なお、ここで、通信方式の切り替えとは、前記複数の通信路と接続され、データの入出力を行うインタフェース部が、切り替えられるべき通信方式に基づき、前記複数の通信路を用いてデータを受信すべき構成、データを送信すべき構成及びデータを疎受信すべき構成の何れかに切り替えることをいう。【０００９】
しかしながら、従来の手順では、例えば、固定期間を経過する前に装置間を接続する複数の通信路に対する通信方向の切り替えが完了している場合、データの送受信が行えるにも関わらず固定期間を経過していないためデータの送受信を開始しない。そのため、固定期間を経過するまでの待ち時間が無駄となる。また、逆に、固定期間が経過してもなお複数の通信路に対する通信方向の切り替えが完了していない場合、例えば、ある装置が複数の通信路に対する通信方向の切り替えが完了しておらず、処理すべきデータを受信できる状態でない場合、通信方向の切り替えが完了した他の装置は相手装置が受信できないにも関わらず固定期間を経過したためデータの送信を開始するので、  受信エラーの通知やそれに伴う再送処理のような無駄な通信が発生する。【００１０】
上記のような待ち時間や無駄な通信は、相手装置において接続された複数の通信路に対する通信方向の切替完了を認識していないために生じる問題である。【００１１】
そこで、本発明は、上記問題に鑑みてなされたものであり、通信方式の切替完了を認識した上で処理すべきデータの送受信を開始することのできるデータ通信システム、通信装置及び通信方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記にて示す目的を達成するために、本発明は、第１装置と第２装置とからなり、前記第１装置と前記第２装置とを接続する第１及び第２の通信路を用いて全二重通信と半二重通信とを切り替えて処理対象であるデータの送受信を行うデータ通信システムであって、前記第１装置は、半二重通信時に当該第１装置がデータ送信側である場合において、半二重通信から全二重通信への切り替えを示す指示コードを前記第１の通信路を介して前記第２装置へ送出する第１送出手段と、前記第１及び前記第２の通信路と接続された第１インターフェース部を、前記第２の通信路によりデータを送信する構成から受信する構成へと切り替える第１切替制御手段と、前記第１切替制御手段による切替が完了し、且つ全二重通信への切替完了を示す応答コードを前記第２の通信路を介して前記第２装置から受け付けた後、全二重通信により処理対象となるデータの送受信を開始する第１通信制御手段とを備え、前記第２装置は、前記第１装置から前記指示コードを前記第１の通信路を介して受け付けると、前記第１及び前記第２の通信路と接続された第２インターフェース部において、前記第２の通信路によりデータを受信する構成から送信する構成へと切り替える第２切替制御手段と、前記第２切替制御手段による切替が完了した後、前記応答コードを前記第２の通信路を介して前記第１装置へ送出する第２送出手段と、前記応答コードを送出後、全二重通信により処理対象となるデータの送受信を開始する第２通信制御手段とを備えることを特徴とする。
【発明の効果】
【００１３】
上記にて示す構成によると、データ通信システムにおける第１装置及び第２装置は、指示コードを送受信してから応答コードを送受信するまでの間、つまり、指示コードと応答コードとによるハンドシェイクが成立するまでの間、通信方式の切替完了とは認識しない。そのため、切替が完了していないにも関わらず誤って処理すべきデータの送受信を開始することはない。また、ハンドシェイクが成立するとデータの送受信を開始するので切替完了から通信開始までの待ち時間が発生することもない。【００１４】
ここで、前記第１送出手段は、さらに、前記第１通信制御手段による処理対象となるデータの送受信の開始に先立って、前記応答コードを受信した旨を示し、且つ前記第２装置からのデータの受信の待ち受け状態である旨を示す応答受信コードを前記第２装置へ送出し、前記第１通信制御手段は、前記第１送出手段による前記応答受信コードの送出後、処理対象のデータの送受信を開始し、前記第２通信制御手段は、前記応答受信コードの受信後、処理対象のデータの送受信を開始するとしてもよい。【００１５】
この構成によると、データ通信システムにおける第１装置及び第２装置は、指示コードと応答コードとによるハンドシェイクが成立に加え、応答コードと応答受信コードによるハンドシェイクが成立するまでの間、データの送受信を開始しない。つまり、データ通信システムは、第１装置が自身にて送出した指示コードが第２装置へ届いたかどうかを応答コードの受信で認識し、且つ第２装置が自身にて送出した応答コードが第１装置へ届いたかどうかを応答受信コードの受信で認識した上で、全二重通信でのデータの送受信を開始する。これにより、両装置は、２種類のハンドシェイクが成立することで、相手装置の通信方式の切替が完了したことを認識することができるので、全二重通信によるデータの送受信を確実に開始することができる。【００１６】
ここで、前記データ通信システムは、データ送信側がデータ送信を抑止する旨の抑止コードを、データ受信側が前記抑止コードの受信に対するメッセージコードを、それぞれ相手側の装置へ送信するフロー制御によるデータ通信を行い、前記第１送出手段は、前記指示コードの送出に先立って、前記抑止コードを前記第１の通信路を介して前記第２装置へ送出し、その後、前記指示コードを送出し、前記第２送出手段は、前記第２切替制御手段による前記切替が完了すると、前記応答コードの代わりに前記メッセージコードを送出し、前記第１通信制御手段は、前記第２装置から前記応答コードとして前記メッセージコードを受け付けるとしてもよい。【００１７】
この構成によると、データ通信システムは、フロー制御にてデータ通信を制御する場合、第１装置は抑止コードの送信を指示コードの送信の契機としており、抑止コードに対するメッセージコードを指示コードに対する応答コードとして第２装置から受け付けている。これにより、データ通信システムは、抑止コードに対する制御が完了し、且つ通信方式の切替が完了すると、データの送受信を開始するので、フロー制御を用いたデータ通信時においても効率よくデータの送受信を開始できる。【００１８】
ここで、前記データ通信システムは、データ送信側がデータ送信を抑止する旨の抑止コードを、データ受信側が前記抑止コードの受信に対するメッセージコードを、それぞれ相手側の装置へ送信するフロー制御によるデータ通信を行い、前記第１送出手段は、半二重通信によるデータ通信時において、前記指示コードの代わりに前記抑止コードを前記第２装置へ送出し、前記第２切替制御手段は、前記第１装置から前記指示コードとして前記抑止コードを受信し、前記第２送出手段は、前記第２切替制御手段による前記切替が完了すると、前記応答コードの代わりに前記メッセージコードを送出し、  前記第１通信制御手段は、前記第２装置から前記応答コードとして前記メッセージコードを受け付けるとしてもよい。【００１９】
この構成によると、データ通信システムは、フロー制御にてデータ通信を制御する場合、第１装置は指示コードの代わりに抑止コードを送信しており、第２装置は応答コードとして抑止コードに対するメッセージコードを送信している。これにより、データ通信システムは、抑止コードに対する制御が完了し、且つ通信方式の切替が完了すると、データの送受信を開始するので、フロー制御を用いたデータ通信時においても効率よくデータの送受信を開始できる。【００２０】
ここで、全二重通信時において、前記第１の通信路は前記第１装置から前記第２装置へデータを送信するよう用いられ、前記第２の通信路は前記第２装置から前記第１装置へデータを送信するよう用いられ、前記第１送出手段は、全二重通信時において、前記第２装置へデータを送信する旨を示すコードと半二重通信にてデータ通信を行う旨を示すコードとを含む送信要求コードを前記第１の通信路を介して前記第２装置へ送出し、前記第２送出手段は、前記送信要求コードを前記第１の通信路を介して受け取ると、当該送信要求コードを受け付けた旨を示す要求受信コードを前記第２の通信路を介して前記第１装置へ送出し、前記第１切替制御手段は、前記要求受信コードを前記第２の通信路を介して受け取ると、前記第１インターフェース部において、前記第２の通信路によりデータを受信する構成から送信する構成へと切り替え、前記第２切替制御手段は、前記要求受信コードの送出した後、前記第２インターフェース部において、前記第２の通信路によりデータを送信する構成から受信する構成へと切り替え、前記第１通信制御手段は、前記要求受信コードを受け取ってから所定の時間が経過した後、半二重通信により処理対象となるデータの送信を開始するとしてもよい。【００２１】
この構成によると、第１装置及び第２装置は、送信要求コードと要求受信コードとのハンドシェイクが成立すると、半二重通信への切替を開始するので、どちらか一方のみが誤って切替を開始することはない。また、通信方式の切替のタイミングは要求受信コードの送受信後であるため両装置とも同じようなタイミングで切り替えを開始することができ、切り替えられた第２の通信路の利用が同じようなタイミングで可能となる。【００２２】
ここで、前記データ通信システムは、前記第１装置が前記送信要求コードを送信した場合において、前記第２装置が受信待ちである旨の待ち受けコードを、前記第１装置が前記待ち受けコードの受信に対するメッセージコードを、それぞれ相手側の装置へ送信するフロー制御によるデータ通信を行い、前記第２送出手段は、前記第２切替制御手段による前記第２の通信路によりデータを送信する構成から受信する構成への切り替えに先立って、前記待ち受けコードを前記第２の通信路を介して前記第１装置へ送出し、前記第１送出手段は、前記要求受信コードを受け取り後、さらに前記待ち受けコードを前記第２の通信路を介して受け取ると、通信方式を全二重通信から半二重通信へと切り替える旨の指示コードを前記第１の通信路を介して前記第２装置へ送出し、前記第１切替制御手段は、前記待ち受けコードの受け取り後、前記第１インターフェース部を前記第２の通信路によりデータを受信する構成から送信する構成への切り替え、前記第２切替制御手段は、通信方式を全二重通信から半二重通信へと切り替える旨の指示コードを前記第１の通信路を介して受け取ると、前記第２インターフェース部を前記第２の通信路によりデータを送信する構成から受信する構成への切り替え、前記第１送出手段は、前記待ち受けコードを受け取ってから前記所定の時間の経過すると、前記第１通信制御手段による処理対象となるデータの送信の開始に先立って、前記メッセージコードを前記第１の通信路を介して前記第２装置へ送出し、前記第１通信制御手段は、前記第１送出手段による前記メッセージコードを送出した後、半二重通信により処理対象のデータの送信を開始するとしてもよい。【００２３】
この構成によると、データ通信システムは、フロー制御にてデータ通信を制御する場合、第１装置は第２装置からの待ち受けコードの受信を指示コードの送信の契機としている。通常、フロー制御では、データを送信する場合、相手装置から待ち受けコードを受信し、データ送信の準備が完了した後に、データの送受信が開始される。そこで、待ち受けコードの送受信を指示コードの送受信の契機とすることで、待ち受けコードの送信前に、誤って半二重通信への切替を行ってデータ受信側からの待ち受けコードの送信ができなくなるという事態を防ぐことができる。【００２４】
ここで、前記データ通信システムは、前記第１装置が前記送信要求コードを送信した場合において、前記第２装置が受信待ちである旨の待ち受けコードを、前記第１装置が前記待ち受けコードの受信に対するメッセージコードを、それぞれ相手側の装置へ送信するフロー制御によるデータ通信を行い、前記第２送出手段は、前記第２切替制御手段による第２インターフェース部を前記第２の通信路によりデータを送信する構成から受信する構成への切り替えに先立って、前記待ち受けコードを前記第２の通信路を介して前記第１装置へ送出し、前記第２切替制御手段は、前記待ち受けコードが送出されると、前記第２インターフェース部を前記第２の通信路によりデータを送信する構成から受信する構成への切り替え、前記第１送出手段は、前記要求受信コードの受け取り後、さらに前記待ち受けコードを前記第２の通信路を介して受け取ると、前記待ち受けコードの受け取りから前記所定の時間が経過すると、前記第１通信制御手段による処理対象となるデータの送信の開始に先立って、前記メッセージコードを前記第１の通信路を介して前記第２装置へ送出し、前記第１通信制御手段は、前記第１送出手段による前記メッセージコードを送出した後、半二重通信により処理対象のデータの送信を開始するとしてもよい。【００２５】
この構成によると、データ通信システムにおいて、フロー制御にてデータ通信を制御する場合、両装置は、待ち受けコードの送受信を半二重通信への切替の契機としている。通常、フロー制御では、データを送信する場合、相手装置から待ち受けコードを受信し、データ送信の準備が完了した後に、データの送受信が開始される。そこで、待ち受けコードの送受信を半二重通信へ切替の契機とすることで、待ち受けコードの送信前に、誤って半二重通信への切替を行ってデータ受信側からの待ち受けコードの送信ができなくなるという事態を防ぐことができる。【００２６】
ここで、全二重通信時において、前記第１の通信路は前記第１装置から前記第２装置へデータを送信するよう用いられ、前記第２の通信路は前記第２装置から前記第１装置へデータを送信するよう用いられ、前記第１送出手段は、前記第２装置からデータを受信する旨のコードと半二重通信にてデータ通信を行う旨のコードとを含む受信要求コードを前記第１の通信路を介して前記第２装置へ送出し、前記第２送出手段は、前記受信要求コードを前記第１の通信路を介して受け取ると、当該受信要求コードを受け付けた旨を示す要求受信コードを前記第２の通信路を介して前記第１装置へ送出し、前記第１切替制御手段は、前記要求受信コードを受け取った後、第１インターフェース部を前記第１の通信路によりデータを送信する構成から受信する構成へと切り替え、前記第２切替制御手段は、前記要求受信コードの送出後、第２インターフェース部を前記第１の通信路によりデータを受信する構成から送信する構成へと切り替え、前記第２通信制御手段は、前記要求受信コードを送出してから所定の時間が経過した後、半二重通信により処理対象のデータの送信を開始するとしてもよい。【００２７】
この構成によると、第１装置及び第２装置は、受信要求コードと要求受信コードとのハンドシェイクが成立すると、半二重通信への切替を開始するので、どちらか一方のみが誤って切替を開始することはない。また、通信方式の切替のタイミングは要求受信コードの送受信後であるため両装置とも同じようなタイミングで切り替えを開始することができ、切り替えられた第１の通信路の利用が同じようなタイミングで可能となる。【００２８】
ここで、前記データ通信システムは、前記第１装置が前記受信要求コードを送信した場合において、前記第１装置が受信待ちである旨の待ち受けコードを、前記第２装置が前記待ち受けコードの受信に対するメッセージコードを、それぞれ相手側の装置へ送信するフロー制御によるデータ通信を行い、前記第１送出手段は、前記要求受信コードを受け取った後、前記第１切替制御手段による第１インターフェース部を前記第１の通信路によりデータを送信する構成から受信する構成への切り替えに先立って、前記待ち受けコードを前記第１の通信路を介して前記第２装置へ送出し、前記第２送出手段は、前記要求受信コードの送出後、さらに前記待ち受けコードを前記第１の通信路を介して受け取ると、全二重通信から半二重通信への通信方式の切り替える旨の指示コードを前記第２の通信路を介して前記第１装置へ送出し、前記第１切替制御手段は、前記要求受信コードの受け取り後、さらに全二重通信から半二重通信への通信方式の切り替える旨の指示コードを前記第２の通信路を介して受け取ると、第１インターフェース部を前記第１の通信路によりデータを送信する構成から受信する構成へと切り替え、前記第２送出手段は、前記待ち受けコードを受け取ってから前記所定の時間の経過すると、前記第２通信制御手段による処理対象となるデータの送信の開始に先立って、前記メッセージコードを前記第２の通信路を介して前記第１装置へ送出し、前記第２通信制御手段は、前記メッセージコードの送出した後、半二重通信により処理対象のデータの送信を開始するとしてもよい。【００２９】
この構成によると、データ通信システムは、フロー制御にてデータ通信を制御する場合、第２装置は第１装置からの待ち受けコードの受信を、半二重通信への切り替える旨の指示コードの送信の契機としている。通常、フロー制御では、データを送信する場合、相手装置から待ち受けコードを受信し、データ送信の準備が完了した後に、データの送受信が開始される。そこで、待ち受けコードの送受信を、半二重通信への切り替える旨の指示コードの送受信の契機とすることで、待ち受けコードの送信前に、誤って半二重通信への切替を行ってデータ受信側からの待ち受けコードの送信ができなくなるという事態を防ぐことができる。【００３０】
ここで、前記データ通信システムは、前記第１装置が前記受信要求コードを送信した場合において、前記第１装置が受信待ちである旨の待ち受けコードを、前記第２装置が前記待ち受けコードの受信に対するメッセージコードを、それぞれ相手側の装置へ送信するフロー制御によるデータ通信を行い、前記第１送出手段は、前記要求受信コードを受け取った後、前記第１切替制御手段による前記第１インターフェース部を前記第１の通信路によりデータを送信する構成から受信する構成への切り替えに先立って、前記待ち受けコードを前記第１の通信路を介して前記第２装置へ送出し、前記第１切替制御手段は、前記待ち受けコードが送出されると、第１インターフェース部を前記第１の通信路によりデータを送信する構成から受信する構成へと切り替え、前記第２送出手段は、前記要求受信コードの送出した後、さらに前記待ち受けコードを前記第１の通信路を介して受け取ると、前記待ち受けコードを受け取ってから前記所定の時間が経過した後、前記第２通信制御手段による処理対象となるデータの送信の開始に先立って、前記メッセージコードを前記第２の通信路を介して前記第１装置へ送出し、前記第２通信制御手段は、前記第２送出手段による前記メッセージコードの送出した後、半二重通信により処理対象となるデータの送信を開始するとしてもよい。【００３１】
この構成によると、データ通信システムにおいて、フロー制御にてデータ通信を制御する場合、両装置は、待ち受けコードの送受信を半二重通信への切替の契機としている。通常、フロー制御では、データを送信する場合、相手装置から待ち受けコードを受信し、データ送信の準備が完了した後に、データの送受信が開始される。そこで、待ち受けコードの送受信を半二重通信への切替の契機とすることで、待ち受けコードの送信前に、誤って半二重通信への切替を行ってデータ受信側からの待ち受けコードの送信ができなくなるという事態を防ぐことができる。【００３２】
ここで、全二重通信から半二重通信への切り替えにおける前記所定の時間は、前記第２装置が前記第２切替制御手段により半二重通信から全二重通信への切り替えを開始してから前記第１装置との間で処理すべきデータの送受信を開始する状態となるまでに要した期間であるとしてもよい。【００３３】
この構成によると、データ通信システムは、所定の時間を、半二重通信から全二重通信への切替に要した時間とすることで、全二重通信から半二重通信への切替に必要な時間を最適なものにすることができる。【００３４】
ここで、半二重通信で前記第１装置が処理対象となるデータを受信する場合において、前記第２送出手段は、半二重通信から全二重通信への切り替えを示す指示コードを前記第２の通信路を介して前記第１装置へ送出し、前記第２切替制御手段は、第２インターフェース部を前記第１の通信路によりデータを送信する構成から受信する構成へと切り替え、前記第１切替制御手段は、半二重通信から全二重通信への切り替えを示す前記指示コードを前記第１の通信路を介して受け付けると、第１インターフェース部を前記第１の通信路によりデータを受信する構成から送信する構成へと切り替え、前記第１送出手段は、前記第１切替制御手段による切り替えが完了した後、全二重通信への切替完了を示す前記応答コードを前記第１の通信路を介して前記第２装置へ送出し、前記第１通信制御手段は、全二重通信への切替完了を示す前記応答コードを送出した後、全二重通信により処理対象となるデータの送受信を開始し、前記第２通信制御手段は、前記第１装置から全二重通信への切替完了を示す応答コードを前記第２の通信路を介して受け付けると、全二重通信により処理対象となるデータの送受信を開始するとしてもよい。【００３５】
この構成によると、第１装置及び第２装置は、指示コードと応答コードとによるハンドシェイクが成立するまでの間、通信方式の切替完了とは認識しない。そのため、切替が完了していないにも関わらず誤って処理すべきデータの送受信を開始することはない。また、ハンドシェイクが成立するとデータの送受信を開始するので切替完了から通信開始までの待ち時間が発生することもない。【００３６】
ここで、前記第１装置が前記指示コードの送出に用いる前記第１の通信路は、当該第１装置が全二重通信時において前記第２装置へデータを送信するために用いる通信路であるとしてもよい。【００３７】
この構成によると、データ通信システムは、前記第１装置が前記指示コードの送出に用いる前記第１の通信路を、当該第１装置が全二重通信時において前記第２装置へデータを送信するために用いる通信路としている。つまり、全二重通信への切替時に、切り替える必要のない第１の通信路を用いて指示コードを送出しているので、第１装置及び第２装置とも、指示コードの送出に用いられていない第２の通信路を切替の対象として特定することが容易にできる。【００３８】
また、本発明は、他装置との間で接続された第１及び第２の通信路を用いて全二重通信と半二重通信とを切り替えて処理対象であるデータの送受信を行うデータ通信装置であって、半二重通信時に当該データ通信装置がデータ送信側である場合において、半二重通信から全二重通信への切り替えを示す指示コードを前記第１の通信路を介して前記他装置へ送出する送出手段と、前記第１及び第２の通信路と接続された第１インターフェース部を、前記第２の通信路によりデータを送信する構成から受信する構成へと切り替える切替制御手段と、前記切替制御手段による切り替えが完了し、且つ全二重通信への切替完了を示す応答コードを前記第２の通信路を介して前記他装置から受け付けると、全二重通信により処理対象となるデータの送受信を開始する通信制御手段とを備えることを特徴とする。【００３９】
この構成によると、データ通信装置は、指示コードを送受信してから応答コードを送受信するまでの間、つまり、指示コードと応答コードとによるハンドシェイクが成立するまでの間、通信方式の切替完了とは認識しない。そのため、切替が完了していないにも関わらず誤って処理すべきデータの送受信を開始することはない。また、ハンドシェイクが成立するとデータの送受信を開始するので切替完了から通信開始までの待ち時間が発生することもない。【００４０】
ここで、前記切替制御手段は、当該データ通信装置が半二重通信時においてデータ受信側である場合に、前記他装置から半二重通信から全二重通信への切り替えを示す指示コードを前記第２の通信路を介して受け付けると、前記第１インターフェース部を、前記第１の通信路によりデータを受信する構成から送信する構成へと切り替え、前記送出手段は、前記切替制御手段により前記第１インターフェース部において前記第１の通信路によりデータを受信する構成から送信する構成へと切り替えが完了した後、全二重通信への切替完了を示す応答コードを前記第１の通信路を介して前記他装置へ送出し、前記通信制御手段は、全二重通信への切替完了を示す前記応答コードを送出後、全二重通信により処理対象となるデータの送受信を開始するとしてもよい。【００４１】
この構成によると、データ通信装置は、半二重通信時においてデータの受信側となっている場合においても、指示コードと応答コードとによる他装置とのハンドシェイクが成立するまでの間、通信方式の切替完了とは認識しない。そのため、切替が完了していないにも関わらず誤って処理すべきデータの送受信を開始することはない。また、ハンドシェイクが成立するとデータの送受信を開始するので切替完了から通信開始までの待ち時間が発生することもない。【００４２】
ここで、前記他装置は、データ通信に用いられる第１端子及び第２端子を備えており、前記データ通信装置は、データ通信に用いられる第３端子及び第４端子を有し、前記他装置と着脱可能であり、前記他装置への装着時に前記第１端子と前記第３端子とが、前記第２端子と前記第４端子とがそれぞれ接続されることで前記第１及び前記第２の通信路を形成するメモリカード又はＩ／Ｏカードであるとしてもよい。【００４３】
この構成によると、データ通信装置としてメモリカード又はＩ／Ｏカードを用いることができるので、これらカードは、通信方式の完了を認識できる状態である場合には、当該完了を認識した上で処理すべきデータの送受信を開始することができる。
【図面の簡単な説明】
【００４４】
【図１】通信システム１０の構成を示すブロック図である。
【図２】通信インタフェース部１０５の構成を示すブロック図である。
【図３】制御レジスタＴ１００のデータ構造の一例を示す図である。
【図４】各種パケットのヘッダ部のデータ構造の一例を示す図である。
【図５】メモリコマンドパケットのデータ構造の一例を示す図である。
【図６】Ｉ／Ｏコマンドパケットのデータ構造の一例を示す図である。
【図７】データパケットのデータ構造の一例を示す図である。
【図８】レスポンスパケットのデータ構造の一例を示す図である。
【図９】メッセージパケットのデータ構造の一例を示す図である。
【図１０】リンクパケットのデータ構造の一例を示す図である。
【図１１】Ｋコード一覧テーブルＴ２００を示す図である。
【図１２】通信インタフェース部１０６の構成を示すブロック図である。
【図１３】通信システム１０における処理の概要を示す流れ図である。
【図１４】（ａ）はマスタ１００側における通信モード通知処理の動作を示す流れ図であり、（ｂ）はスレーブ１０１側における通信モード通知処理の動作を示す流れ図である。
【図１５】全二重通信によるデータ通信について具体例を用いた流れ図である。
【図１６】通信モードの移行・復旧を含む半二重データ通信について具体例を用いた流れ図である。
【図１７】マスタ１００側における通信モード移行処理の動作を示す流れ図である。
【図１８】スレーブ１０１側における通信モード移行処理の動作を示す流れ図である。
【図１９】（ａ）は全二重通信から半二重通信への切り替える場合（マスタ１００がデータの送信側となる場合）、制御コードの送受信の流れを図である。（ｂ）は全二重通信から半二重通信への切り替える場合（マスタ１００がデータの受信側となる場合）、制御コードの送受信の流れを図である。
【図２０】マスタ１００側における通信モードの復旧処理の動作を示す流れ図である。
【図２１】スレーブ１０１側における通信モードの復旧処理の動作を示す流れ図である。
【図２２】（ａ）はマスタ１００がデータの送信側である半二重通信から全二重通信へと切り替える場合の制御コードの送受信の流れを示す図である。（ｂ）はマスタ１００がデータの受信側である半二重通信から全二重通信へと切り替える場合の制御コードの送受信の流れを示す図である。
【図２３】半二重通信時においてデータ受信側の通信装置からの割込みを通知するための動作を示す図である。
【図２４】通信モードの切替（半二重通信においてマスタが受信側となる場合）と、フロー制御と組み合わせた場合の動作を示す図である。
【図２５】通信モードの切替（半二重通信においてマスタが送信側となる場合）と、フロー制御と組み合わせた場合の動作を示す図である。
【図２６】通信システム１０ａの構成を示すブロック図である。
【図２７】半二重通信から全二重通信への切替を示すコード（ＦＤＸ）と、全二重通信から半二重通信への切替を示すコード（ＨＤＸ）とをＫコードに割り当てた場合のＫコード一覧テーブルＴ２０１の一例を示す図である。
【図２８】方向制御コードの送受信を、切替完了後におけるプリアンブルコードの送受信のトリガーとして用いた場合の制御コードの送受信の流れを示す図である。
【発明を実施するための形態】
【００４５】
１．実施の形態１
以下、本発明に係る通信システム１０について、図面を用いて説明する。
【００４６】
１．１  通信システム１０の構成
図１には、本発明の実施形態１に係る通信システム１０の全体構成を示す。
【００４７】
通信システム１０は、図１にて示すように、マスタ通信装置１００（以下、マスタ）とスレーブ通信装置１０１（以下、スレーブ）とから構成されている。マスタ１００とスレーブ１０１は、シリアル通信網１０２及びクロックライン１１５を介して接続されている。
【００４８】
マスタ１００はイニシエータ１０３と通信インタフェース部（通信Ｉ／Ｆ部）１０５とを備え、スレーブ１０１はターゲット１０４と通信Ｉ／Ｆ部１０６を備える。
【００４９】
マスタ１００及びスレーブ１０１は、通信Ｉ／Ｆ部１０５、１０６を用いてイニシエータ１０３とターゲット１０４との通信を行う。なお、本発明における処理対象のデータの送受信とは、通信インタフェース部１０５、１０６を用いてイニシエータ１０３とターゲット１０４との間で行われる通信（データの送受信）のことをいう。
【００５０】
通信Ｉ／Ｆ部１０５は、トランザクション制御部１０７とリンク制御部１０９と送受信部１１１とを備える。また、通信Ｉ／Ｆ部１０６も同様に、トランザクション制御部１０８とリンク制御部１１０と送受信部１１２とを備える。
【００５１】
トランザクション制御部１０７、１０８は、イニシエータ１０３とターゲット１０４との通信全体（トランザクション層）の制御を行う。
【００５２】
リンク制御部１０９、１１０は、通信する各種パケットの解析や伝送エラーのチェック、あるいは通信路の方向制御やビット同期などデータリンク層の制御を行う。
【００５３】
送受信部１１１、１１２は、トランスミッタ回路やレシーバ回路を含み、シリアル通信網１０２を用いた物理層の処理を行う。
【００５４】
シリアル通信網１０２は、図１にて示すように、第１通信路１１３（以下、ＤＡＴ０ラインともいう。）と第２通信路１１４（以下、ＤＡＴ１ラインともいう。）を含むシリアル通信路からなり、これら通信路を用いて全二重通信及び半二重通信が行われる。
【００５５】
全二重通信時において、ＤＡＴ０ライン１１３はマスタ１００からスレーブ１０１に向けたダウンリンク状態であり、ＤＡＴ１ライン１１４はスレーブ１０１からマスタ１００に向けたアップリンク状態となっている。リンク制御部１０９、１１０の制御によって、ＤＡＴ０ライン１１３及びＤＡＴ１ライン１１４のいずれもダウンリンクやアップリンクとした半二重通信モードとすることもできる。
【００５６】
１．２  マスタ１００について
ここでは、マスタ１００における通信Ｉ／Ｆ部１０５について説明する。
【００５７】
通信Ｉ／Ｆ部１０５は、上述したように、トランザクション制御部１０７とリンク制御部１０９と送受信部１１１とを備える。
【００５８】
以下、各構成要素について詳細に説明する。
【００５９】
（１）トランザクション制御部１０７
トランザクション制御部１０７は、図２にて示すように、デスクリプタ２０２と、パケット生成部２０３と、データを一時蓄積する送信バッファ２０４及び受信バッファ２０５とを備えている。
【００６０】
（１−１）デスクリプタ２０２
デスクリプタ２０２は、制御レジスタＴ１００を含み、当該制御レジスタを用いてイニシエータ１０３からの通信制御を行う。
【００６１】
デスクリプタ２０２に含まれる制御レジスタＴ１００には、例えば、図３に示すように、起動レジスタと、メモリ空間の先頭アドレスや転送サイズを設定するための３種類の設定レジスタとの組が、トランザクション毎に定義されている。ここでは、これらレジスタは４バイトから構成されているものとする。
【００６２】
起動レジスタＴ１０１には、Ｒ／Ｗフラグ３００、通信モードフラグ３０１及び起動フラグ３０２が含まれる。Ｒ／Ｗフラグ３００は、１ビットからなり、データの受信（Ｒｅａｄ）若しくは送信（Ｗｒｉｔｅ）のいずれかを示すものである。通信モードフラグ３０１は、データの送受信を行う通信モードが全二重通信モードか半二重通信モードか、あるいはそれらいずれも可能かを示すものである。起動フラグ３０２は、Ｒ／Ｗフラグ３００及び通信モードフラグ３０１の設定に応じて通信を起動するためのものである。
【００６３】
ここで、イニシエータ１０３から複数の通信（トランザクション）をエントリ可能とするため、図３の例では、２５６組の制御レジスタを備えており、それらトランザクションはＩＤ０からＩＤ２５５までのトランザクションＩＤで識別される。
【００６４】
（１−２）送信バッファ２０４、受信バッファ２０５
送信バッファ２０４はスレーブ１０１へ送信すべきデータを一時蓄積するものであり、受信バッファ２０５はスレーブ１０１から受信したデータを一時蓄積するものである。
【００６５】
（１−３）パケット生成部２０３
パケット生成部２０３は、デスクリプタ２０２の設定や送信バッファ２０４、受信バッファ２０５の状態に応じて、通信開始のトリガーとなるコマンドパケットやデータパケットを生成するものである。
【００６６】
イニシエータ１０３により、制御レジスタＴ１００のうち一のトランザクションＩＤに対応する各レジスタに必要な値が設定され、当該トランザクションＩＤに対応するトランザクションが起動されると、パケット生成部２０３は、送信すべき各種パケットを生成し、リンク制御部２０６に出力する。
【００６７】
以下、パケット生成部２０３にて生成される各種パケットについて説明する。
【００６８】
（１−２−１）共通
先ず、パケット生成部２０３にて生成される各種パケットに共通するデータ構造について、図４を用いて説明する。
【００６９】
各種パケットは、ヘッダ（共通）部４００とアーギュメント部４０１とを少なくとも含んでいる。このうち各種パケットに共有するデータ構造は、ヘッダ（共通）部４００である。
【００７０】
図４（ａ）は、ヘッダ部４００のデータ構造の一例を示す図である。ヘッダ部４００は、パケットの先頭２バイトからなり、デバイスＩＤ４１０、カテゴリ４１１、Ｒ／Ｗ４１２、及びトランザクションＩＤ４１３が含まれる。
【００７１】
デバイスＩＤ４１０は、図示していないが１つのマスタにハブを介して複数のスレーブが接続された場合においてパケットの送信対象となるスレーブを識別するために用いられる識別子である。
【００７２】
カテゴリ４１１はパケットの種別を示すものである。図４（ｂ）にて、パケットの種別を示す。例えば、値“０００”はＩ／Ｏコマンドパケットを、値“００１”はメモリコマンドパケットを、値“０１０”はレスポンスパケットを、値“１１１”はレスポンスパケットを、それぞれ示している。なお、ここでは、値“１００”から“１１０”までにはコマンド種別は割り当てられていないものとする。
【００７３】
Ｒ／Ｗ４１２は受信（Ｒｅａｄ）あるいは送信（Ｗｒｉｔｅ）のいずれかを示す。トランザクションＩＤ４１３は上述したようにイニシエータ１０３から起動されたトランザクションを識別するために用いられる。
【００７４】
（１−２−２）メモリコマンドパケット
次に、メモリコマンドパケットのデータ構造について、図５を用いて説明する。
【００７５】
メモリコマンドパケットは、“（１−２−１）共通”及び図５（ａ）にて示すように、ヘッダ部４００とアーギュメント部４０１とから構成されている。
【００７６】
ヘッダ部４００のデータ構造については、“（１−２−１）共通”にて説明しているので、ここでの説明は省略する。なお、ヘッダ部４００のカテゴリには、値“００１”が設定されている。
【００７７】
メモリコマンドパケットのアーギュメント部４０１は、通信モード４２０、アドレス長４２１、アドレス（下位３２ビット）４２３、アドレス（上位３２ビット）４２４及び転送サイズ４２５を含んでいる。
【００７８】
通信モード４２０にはデータ通信時の通信モードが格納されている。図５（ｂ）にて、通信モードの種別を示す。例えば、値“０１”は全二重通信で通信を行うことを示すモードであり、値“１０” は半二重通信で通信を行うことを示すモードであり、値“１１”はどちらの通信でもよい旨を示すモードである。なお、通信モードは、マスタ１００の通信の性能、及び送信若しく受信すべきデータのサイズ等に応じて決定される。
【００７９】
アドレス長４２２には、後続するアドレスフィールドが４バイト（３２ビット）か８バイト（６４ビット）かを識別するため値が格納されている。
【００８０】
アドレス４２３及びアドレス４２４には、送受信対象のデータの先頭アドレスが格納される。具体的には、アドレス長４２２にてアドレスフィールドが４バイトを示す値が格納されている場合には、アドレス４２３のみを用いてデータのアドレスが示される。また、アドレス長４２２にてアドレスフィールドが８バイトを示す値が格納されている場合には、データのアドレスのうち下位３２ビットがアドレス４２３にて示され、上位３２ビットがアドレス４２４にて示される。
【００８１】
転送サイズ４２５には、送受信対象のデータのサイズが格納される。
【００８２】
（１−２−３）Ｉ／Ｏコマンドパケット
次に、Ｉ／Ｏコマンドパケットについて説明する。
【００８３】
Ｉ／Ｏコマンドパケットは、マスタ１００とスレーブ１０１との間で、デスクリプタ２０２内の制御レジスタあるいはイニシエータ１０３やターゲット１０４内の制御レジスタなどがマッピングされた、Ｉ／Ｏ空間の通信を行うために用いられる。
【００８４】
Ｉ／Ｏコマンドパケットには、“（１−２−１）共通”“及び図６にて示すように、ヘッダ部４００とアーギュメント部４０１とに加えて、データペイロード４０２が含まれる。
【００８５】
ヘッダ部４００のデータ構造については、“（１−２−１）共通”にて説明しているので、ここでの説明は省略する。なお、ヘッダ部４００のカテゴリには、値“０００”が設定されている。
【００８６】
アーギュメント部４０１は、Ｉ/Ｏ空間に応じたアドレス長を示すＩ／Ｏアドレス４３１を含んでいる。
【００８７】
データペイロード４０２は、データの送信時であれば実際の通信内容であるＩ／Ｏデータ４３２を含んでいる。
【００８８】
通常、Ｉ／Ｏデータ４３２は、一般に制御レジスタの内容など、短い固定長のデータであることが多いので、本実施の形態では、Ｉ／Ｏコマンドパケットの送受信は、常に全二重通信モードで通信を行うこととする。
【００８９】
（１−２−４）データパケット
次に、データパケットについて説明する。
【００９０】
図７は、データパケットのデータ構造の一例を示す図である。
【００９１】
データパケットは、図７にて示すように、Ｉ／Ｏコマンドパケットと同様、ヘッダ部４００とアーギュメント部４０１とデータペイロード４０２とから構成されている。
【００９２】
データパケットは、メモリコマンドパケットにて設定した転送サイズのデータをマスタ１００とスレーブ１０１との間で送受信するためのものである。具体的には、メモリコマンドパケットにて設定した転送サイズのデータは、予めマスタとスレーブとの間でＩ／Ｏコマンドなどで事前共有したブロックサイズ（ＢＬＫ）毎に、１つ以上のデータブロックに分割（パケット化）される。そして、分割したデータブロック毎にデータパケットが生成される。
【００９３】
ヘッダ部４００のデータ構造については、“（１−２−１）共通”にて説明しているので、ここでの説明は省略する。なお、ヘッダ部４００のカテゴリには、値“０１１”が設定されている。
【００９４】
アーギュメント部４０１は、分割されたデータブロックの番号を示すシーケンスＩＤ４４０を含んでいる。これにより、データの受信側は、受け取ったデータブロックが何番目のものであるかを知ることができる。
【００９５】
データペイロード４０２は、シーケンスＩＤ４４０にて示されるデータブロックの番号に対応する、分割されたデータブロック４４１を含んでいる。
【００９６】
（１−２−５）レスポンスパケット
次に、レスポンスパケットについて説明する。
【００９７】
レスポンスパケットは、マスタ１００が発行したパケットに対する応答として、スレーブ１０１のトランザクション制御部１０８で生成および発行されるパケットである。
【００９８】
図８は、レスポンスパケットのデータ構造の一例を示す図である。
【００９９】
レスポンスパケットは、図８にて示すように、Ｉ／Ｏコマンドパケットと同様、ヘッダ部４００とアーギュメント部４０１とデータペイロード４０２とから構成されている。
【０１００】
ヘッダ部４００のデータ構造については、“（１−２−１）共通”にて説明しているので、ここでの説明は省略する。なお、ヘッダ部４００のカテゴリには、値“０１０”が設定されている。
【０１０１】
アーギュメント部４０１は、コマンドパケット同様の通信モード４５０、ＡＣＫビット４５２、エラーコード４５３を含んでいる。ＡＣＫビット４５２は、コマンドパケットを正しく受け付けて応答可能（ＡＣＫ）か、アドレスエラーや転送サイズエラーなどのエラーがあって応答不能（ＮＡＫ）かを示すものである。エラーコード４５３は、ＡＣＫビット４５２に“ＮＡＫ”を示す値が設定される場合に、そのエラーの種別を示すものである。
【０１０２】
データペイロード４０２には、Ｉ／Ｏコマンドパケットを受信した場合に対する応答においては、Ｉ／Ｏデータ４５４が付加される。
【０１０３】
（１−２−６）メッセージパケット
最後に、メッセージパケットについて説明する。
【０１０４】
メッセージパケットは、シリアル通信網１０２を用いて割込み等のサイドバンド信号を通信するためのパケットである。
【０１０５】
図９は、メッセージパケットのデータ構造の一例を示す図である。
【０１０６】
レスポンスパケットは、図９（ａ）にて示すように、ヘッダ部４００とアーギュメント部４０１とから構成されている。
【０１０７】
ヘッダ部４００のデータ構造については、ここでの説明は省略する。なお、ヘッダ部４００のカテゴリには、値“１１１”が設定されている。
【０１０８】
アーギュメント部４０１は、メッセージカテゴリ４６０、ＲＥＱ／ＡＣＫビット４６２、及びメッセージの詳細を示すメッセージインデックス４６３を含んでいる、
メッセージカテゴリ４６０は、メッセージの種別を示すものである。図９（ｂ）にてメッセージの種別を示す。例えば、値“００００”は割込みアサートを、値“０００１”は割込みネゲートを、値“００１０”はＣＲＣエラーを、値“００１１”はアボートを、値“１１１０”は電力制御を、値“１１１１”はリセットを、それぞれ示している。なお、ここでは、値“０１００”から“１１０１”までにはメッセージ種別は割り当てられていないものとする。
【０１０９】
ＲＥＱ／ＡＣＫビット４６２は、メッセージのリクエスト（ＲＥＱ）か、メッセージに対するアクノリッジ（ＡＣＫ）かを示すものである。
【０１１０】
ここで、割込みアサートは割込みを通知するものであり、割込みネゲートはその割込み要因が取り除かれたことを示すものである。ＣＲＣエラーは、伝送エラーが発生したことを示すものであり、アボートは転送中止を示すものである。電力制御はアイドル状態の消費電力の削減を指示するためのものであり、リセットは初期化を指示するものである。
【０１１１】
また、割込みアサート及び割込みネゲートの場合におけるメッセージインデックスは、Ｉ／Ｏ空間にマッピングされた割込み要因レジスタの番号を示す。ＣＲＣエラーの場合には、エラーがあったデータパケットのシーケンスＩＤを示す。アボートの場合には、アボート前に転送完了したデータパケットのシーケンスＩＤを示す。電力制御の場合には、電力制御対象が送受信部１１１、１１２やリンク制御部１０９、１１０であるか、あるいはトランザクション制御部１０７、１０８についても含むかを示す。
【０１１２】
（２）  リンク制御部１０９
リンク制御部１０９は、図２にて示すように、リンクパケット生成・解析部２０７、方向制御部２０８、同期制御部２０９及びＩ／Ｆ部２１０から構成されている。
【０１１３】
（２−１）リンクパケット生成・解析部２０７
リンクパケット生成・解析部２０７は、トランザクション制御部１０７のパケット生成部２０３にて生成された各種パケットについてのＣＲＣ演算を行う。
【０１１４】
そして、リンクパケット生成・解析部２０７は、ＣＲＣ演算を行ったパケットの末尾にフッタ部としてＣＲＣコードを付与して、リンクパケットを生成し、生成したリンクパケットを送受信部１１１へ出力する。
【０１１５】
図１０は、パケットサイズ“ＰＫＴ”であるパケットの末尾にフッタ部が付与されたリンクパケットのデータ構造の一例を示す図である。
【０１１６】
リンクパケットは、ヘッダ部４００、パケット部４０５及びフッタ部４０６から構成されている。
【０１１７】
ヘッダ部４００は、上述しているので、ここでの説明は省略する。
【０１１８】
パケット部４０５は、上述したアーギュメント部４０１を含むものである、若しくはアーギュメント部４０１とデータペイロード４０２とを含むものであるので、ここでの説明は省略する。
【０１１９】
フッタ部４０６は、ＣＲＣコード（例えば、１６ビット）を含んでいる。
【０１２０】
また、リンクパケット生成・解析部２０７は、送受信部１１１から入力されたリンクパケットに対して、そのリンクパケットに含まれるＣＲＣコードを用いて伝送エラーチェックを行う。その後、リンクパケット生成・解析部２０７は、ＣＲＣコードなどを取り除いて必要な部分のみトランザクション制御部１０７に出力する。
【０１２１】
（２−２）方向制御部２０８
方向制御部２０８は、全二重通信モードと半二重通信モードとの通信方式の切り替えに伴う通信路の方向制御を行う。
【０１２２】
具体的には、当該マスタ１００を処理すべきデータの受信側として、全二重通信から半二重通信への切り替えに伴う方向制御を行う場合には、方向制御部２０８は、ＤＡＴ０ライン１１３とＤＡＴ１ライン１１４に接続する通信路Ｉ／Ｆ部２５０において、ＤＡＴ０ライン１１３とＤＡＴ１ライン１１４との双方からデータを受信するよう通信路Ｉ／Ｆ部２５０の構成を変更する。また、当該マスタ１００を処理すべき送信側として、全二重通信から半二重通信への切り替えに伴う方向制御を行う場合には、方向制御部２０８は、通信路Ｉ／Ｆ部２５０において、ＤＡＴ０ライン１１３とＤＡＴ１ライン１１４との双方からデータを送信するよう通信路Ｉ／Ｆ部２５０の構成を変更する。半二重通信から全二重通信への切り替えに伴う方向制御を行う場合には、方向制御部２０８は、通信路Ｉ／Ｆ部２５０において、ＤＡＴ０ライン１１３からデータを送信し、ＤＡＴ１ライン１１４からデータを受信するよう通信路Ｉ／Ｆ部２５０の構成を変更する。
【０１２３】
なお、通信路Ｉ／Ｆ部２５０については後述する。
【０１２４】
（２−３）同期制御部２０９
同期制御部２０９は、初期化直後にビット同期やシンボル同期のための同期コード（プリアンブル）生成を行う。
【０１２５】
（２−４）Ｉ／Ｆ部２１０
Ｉ／Ｆ部２１０は、リンク制御部１０９と送受信部１１１との間のデータの入出力を行うものである。
【０１２６】
（３）送受信部１１１
送受信部１１１は、データ入出力制御部２１３、クロック生成部２１４、ＣＤＲ（Ｃｌｏｃｋ  Ｄａｔａ  Ｒｅｃｏｖｅｒｙ）回路２１５、Ｉ／Ｆ部２１２及び通信路Ｉ／Ｆ部２５０から構成されている。
【０１２７】
（３−１）クロック生成部２１４、ＣＤＲ回路２１５
クロック生成部２１４は、基準クロックを生成する。
【０１２８】
ＣＤＲ回路２１５は、シリアル通信路のデータに埋め込まれた高速クロックを、基準クロックとの位相合わせを行って抽出する。
【０１２９】
（３−２）通信路Ｉ／Ｆ部２５０
通信路Ｉ／Ｆ部２５０は、差動トランスミッタ２１６、２１７、２１９、差動レシーバ２１８、２２０を有している。
【０１３０】
各差動トランスミッタは、シリアル信号を差動信号に変換して、送信するものである。
【０１３１】
差動トランスミッタ２１６は、基準クロックをクロックライン１１５で送信する。
【０１３２】
差動トランスミッタ２１７はシリアルデータをＤＡＴ０ライン１１３を用いて送信し、差動トランスミッタ２１９はシリアルデータをＤＡＴ１ライン１１４で送信する。
【０１３３】
各差動レシーバは、受信した差動信号をシリアル信号に変換するものである。
【０１３４】
差動レシーバ２１８はシリアルデータをＤＡＴ０ライン１１３を用いて受信し、差動レシーバ２２０はシリアルデータをＤＡＴ１ライン１１４を用いて受信する。
【０１３５】
具体的には、全二重通信時には、差動トランスミッタ２１７と、差動レシーバ２２０とがそれぞれＤＡＴ０ライン１１３及びＤＡＴ１ライン１１４に接続されて、有効に動作している。この場合において、当該マスタ１００がデータを送信する側として、全二重通信から半二重通信へと切り替わる場合には、方向制御部２０８の制御により、ＤＡＴ１ライン１１４との接続先が差動レシーバ２２０から差動トランスミッタ２１９へと切り替えられることで、通信の方向が制御される。また、当該マスタ１００がデータを受信する側として、全二重通信から半二重通信へと切り替わる場合には、方向制御部２０８の制御により、ＤＡＴ０ライン１１３との接続先が差動トランスミッタ２１７から差動レシーバ２１８へと切り替えられることで、通信の方向が制御される。
【０１３６】
ここで、差動トランスミッタから差動レシーバへの切り替え、及び差動レシーバから差動トランスミッタへの切り替えの具体例について説明する。
【０１３７】
差動トランスミッタ２１７と差動レシーバ２１８とは、第１スイッチ回路（図示せず）を介して、電力を供給する電源部と接続されている。第１スイッチ回路は、方向制御部２０８の制御により差動トランスミッタ２１７と差動レシーバ２１８の何れかと接続されるものである。方向制御部２０８は、ＤＡＴ０ライン１１３を用いてデータをスレーブ１０１へ送信する場合には第１スイッチ回路を差動トランスミッタ２１７と接続するよう制御し、ＤＡＴ０ライン１１３を用いてデータをスレーブ１０１から受信する場合には第１スイッチ回路を差動レシーバ２１８と接続するよう制御する。
【０１３８】
差動トランスミッタ２１９と差動レシーバ２２０とは、第２スイッチ回路（図示せず）を介して、電源部と接続されている。第２スイッチ回路は、方向制御部２０８の制御により差動トランスミッタ２１９と差動レシーバ２２０の何れかと接続されるものである。方向制御部２０８は、ＤＡＴ１ライン１１４を用いてデータをスレーブ１０１へ送信する場合には第２スイッチ回路を差動トランスミッタ２１９と接続するよう制御し、ＤＡＴ１ライン１１４を用いてデータをスレーブ１０１から受信する場合には第２スイッチ回路を差動レシーバ２２０と接続するよう制御する。
【０１３９】
これにより、第１スイッチ回路と接続された差動トランスミッタ２１７若しくは差動レシーバ２１８は電力が供給されるので、利用できる有効な状態となり、接続されていない他方は無効な状態となる。
【０１４０】
また、同様に、第２スイッチ回路と接続された差動トランスミッタ２１９若しくは差動レシーバ２２０は電力が供給されるので、利用できる有効な状態となり、接続されていない他方は無効な状態となる。
【０１４１】
なお、以降において、差動レシーバ及び差動トランスミッタの有効な状態とは電力が供給された状態のことをいい、無効な状態とは電力が供給されていない状態のことをいう。
【０１４２】
（３−３）データ入出力制御部２１３
データ入出力制御部２１３は、符号化部２２４、復号化部２２５、パラレル／シリアル変換部（Ｐ／Ｓ変換部）２２６及びシリアル／パラレル変換部（Ｓ／Ｐ変換部）２２７から構成されている。
【０１４３】
（３−３−１）符号化部２２４、復号化部２２５
符号化部２２４は、シリアルデータに高速クロックを埋め込んで伝送するための８ｂ／１０ｂのようなエンコード方式でデータを符号化するものである。
【０１４４】
復号化部２２５は、８ｂ／１０ｂのようなエンコード方式で符号化されたデータを復号化するものである。
【０１４５】
通常、８ｂ／１０ｂ方式には、符号化の冗長性を活かした制御コード（Ｋコード）が定義されている。そこで、本実施の形態においては、符号化部２２４にはリンク制御部２０６からの指示によりＫコードを生成するコード生成部２２８を、復号化部２２５には復号化したパラレルデータからＫコードを検出するコード検出部２２９をそれぞれ含むものとする。
【０１４６】
ここで、本実施形態におけるＫコードの機能割当ての一例を図１１に示す。
【０１４７】
Ｋコード一覧テーブルＴ２００は、Ｋコード、シンボル、機能、元データ、Ｃｕｒｒｅｎｔ  ＲＤ−及びＣｕｒｒｅｎｔ  ＲＤ＋からなる組を１つ以上含んでいる。
【０１４８】
Ｋコードはコードを示すものであり、シンボルは対応するＫコードが示す機能を識別するものである。機能は対応するＫコードが示す機能を示すものであり、元データはリンク制御部２０６にてなされた指示を示すデータである。この元データとＫコードとが対応している。Ｃｕｒｒｅｎｔ  ＲＤ−及びＣｕｒｒｅｎｔ  ＲＤ＋は、０が多いコードと１が多いコードが交互に伝送されて信号のＤＣ（直流）成分のバランスをとるようにするために用いるコード属性である。
【０１４９】
リンク制御部２０６が、図１１に示す元データを送受信部１１１へ送信すると同時にＫコードへの変換を指示することで、符号化部２２４のコード生成部２２８は、Ｋコード一覧テーブルＴ２００の内容に基づいて、受信した元データに対応するＫコードを生成する。符号化部２２４は、生成したＫコードに対応するＣｕｒｒｅｎｔ  ＲＤ−及びＣｕｒｒｅｎｔ  ＲＤ＋を交互に送信する。
【０１５０】
また、コード検出部２２９は、復号したパラレルデータに含まれるＣｕｒｒｅｎｔ  ＲＤ−及びＣｕｒｒｅｎｔ  ＲＤ＋に基づいてＫコードを検出し、検出したＫコードに対応する機能を特定する。
【０１５１】
図１１に示す各種制御コードの使用方法は、後述する本実施形態の動作において説明する。
【０１５２】
（３−３−２）Ｐ／Ｓ変換部２２６、Ｓ／Ｐ変換部２２７
Ｐ／Ｓ変換部２２６は、符号化されたデータをパラレルデータからシリアルデータに変換するものである。変換したシリアルデータは、通信路Ｉ／Ｆ部２５０を介してスレーブ１０１へ送信される。
【０１５３】
Ｓ／Ｐ変換部２２７は、通信路Ｉ／Ｆ部２５０を介してスレーブ１０１から受け取ったシリアルデータをパラレルの符号化されたデータへと変換するものである。
【０１５４】
（３−４）Ｉ／Ｆ部２１２
Ｉ／Ｆ部２１２は、リンク制御部１０９と送受信部１１１との間のデータの入出力を行うものである。
【０１５５】
１．３  スレーブ１０１について
ここでは、スレーブ１０１における通信Ｉ／Ｆ部１０６について説明する。
【０１５６】
通信Ｉ／Ｆ部１０６は、図１２に示すように、マスタ１００の通信Ｉ／Ｆ部１０５と同様に、トランザクション制御部１０８とリンク制御部１１０と送受信部１１２とを備える。
【０１５７】
以下、各構成要素について詳細に説明する。
【０１５８】
トランザクション制御部１０８は、図１２に示すように、デスクリプタ１１０２、パケット生成部１１０３、送信バッファ１１０４及び受信バッファ１１０５から構成されている。これら構成要素は、マスタ１００のトランザクション制御部１０７にて示す各構成要素と同様であるので、ここでの説明は省略する。
【０１５９】
リンク制御部１１０は、図１２に示すように、リンクパケット生成・解析部１１０７、方向制御部１１０８、同期制御部１１０９及びＩ／Ｆ部１１１０から構成されている。これら構成要素は、マスタ１００のリンク制御部１０９にて示す各構成要素と同様であるので、ここでの説明は省略する。
【０１６０】
送受信部１１２は、データ入出力制御部１１１３、ＣＤＲ回路１１１４、Ｉ／Ｆ部１１１２及び通信路Ｉ／Ｆ部１１５０から構成されている。
【０１６１】
データ入出力制御部１１１３、ＣＤＲ回路１１１４及びＩ／Ｆ部１１１２のそれぞれは、マスタ１００が有するデータ入出力制御部２１３、ＣＤＲ回路２１５及びＩ／Ｆ部２１２のそれぞれと同様であるので、ここでの説明は省略する。
【０１６２】
ここでは、通信路Ｉ／Ｆ部１１５０の構成について説明する。
【０１６３】
通信路Ｉ／Ｆ部１１５０は、差動レシーバ１１１５、差動トランスミッタ１１１６、１１１８、差動レシーバ１１１７、１１１９を有している。
【０１６４】
差動レシーバ１１１５は、マスタ１００から送信された基準クロックをクロックライン１１５を介して受信する。
【０１６５】
差動トランスミッタ１１１６はシリアルデータをＤＡＴ０ライン１１３を用いて送信し、差動トランスミッタ１１１８はシリアルデータをＤＡＴ１ライン１１４で送信する。
【０１６６】
差動レシーバ１１１７はシリアルデータをＤＡＴ０ライン１１３を用いて受信し、差動レシーバ１１１９はシリアルデータをＤＡＴ１ライン１１４を用いて受信する。
【０１６７】
具体的には、全二重通信時には、差動レシーバ１１１７と、差動トランスミッタ１１１８とがそれぞれＤＡＴ０ライン１１３及びＤＡＴ１ライン１１４に接続されて、有効に動作している。この場合において、マスタ１００がデータを送信する側（つまり、当該スレーブ１０１がデータの受信側）として、全二重通信から半二重通信へと切り替わる場合には、方向制御部１１０８の制御により、ＤＡＴ１ライン１１４との接続先が差動トランスミッタ１１１８から差動レシーバ１１１９へと切り替えられることで、通信の方向が制御される。また、マスタ１００がデータを受信する側（つまり、当該スレーブ１０１がデータを送信する側）として、全二重通信から半二重通信へと切り替わる場合には、方向制御部１１０８の制御により、ＤＡＴ０ライン１１３との接続先が差動レシーバ１１１７から差動トランスミッタ１１１６へと切り替えられることで、通信の方向が制御される。
【０１６８】
なお、差動レシーバと差動トランスミッタとの切り替えについては、通信路Ｉ／Ｆ部２５０にて説明したように、電源部（図示せず）からの電力の供給の有無により実現できるので、ここでの説明は省略する。
【０１６９】
スレーブ１０１が上記のような構成要素を備え、例えばターゲット１０４がメモリデバイスとすることで、以下のような動作を行うことができる。トランザクション制御部１０８は、マスタ１００から受信したコマンドパケットからアドレスや転送サイズを抽出してデスクリプタ１１０２に登録する。そして、デスクリプタ１１０２は、送信バッファ１１０４及び受信バッファ１１０５を用いてターゲットであるメモリデバイスのアクセス準備を行う。デスクリプタ１１０２による準備ができると、パケット生成部１１０３はレスポンスパケットを生成し、マスタ１００に送信し、必要があれば通信方式を切り替え、その後、データ通信を開始することになる。
【０１７０】
１．４  動作
（１）通信システム１０の動作
ここでは、通信システム１０における全体の動作について、図１３にて示す流れ図を用いて説明する。
【０１７１】
まず、通信システム１０は、マスタ１００とスレーブ１０１との間でＩ／Ｏコマンドを送受信することでデータパケットのブロックサイズなどの制御情報を共有する、通信初期化を行う（ステップＳ５）。このとき、通信システム１０は、シリアル通信網１０２の内、ＤＡＴ０ライン１１３をマスタ１００からスレーブ１０１に向けたダウンリンク、ＤＡＴ１ライン１１４をスレーブ１０１からマスタ１００に向けたアップリンクとして全二重通信モードで通信可能な状態とする。
【０１７２】
次に、マスタ１００はＤＡＴ０ライン１１３を用いてコマンドパケットを送信することで、通信要求を行う（ステップＳ１０）。スレーブ１０１は、マスタ１００からＤＡＴ０ライン１１３を用いてコマンドパケットを受信すると、ＤＡＴ１ライン１１４を用いてレスポンスパケットを送信することで、通信応答を行う（ステップＳ１５）。このようにして、マスタ１００とスレーブ１０１との間でコマンドパケットとレスポンスパケットのハンドシェイクが成立する。ここで、マスタ１００及びスレーブ１０１それぞれは、送信すべきパケットをパケット生成部２０３（１１０３）及びリンクパケット生成・解析部２０７（１１０７）にて生成し、生成したパケットをデータ入出力制御部２１３（１１１３）にて符号化して相手装置へ送信する。以降において、パケットの送信時には、このような動作が行われるものとする。また、マスタ１００及びスレーブ１０１それぞれは、相手装置から各種パケットを受信すると、リンクパケット生成・解析部２０７（１１０７）にて伝送エラーチェックが行われ、その後、ＣＲＣコードなどを取り除いて必要な部分のみトランザクション制御部１０７（１０８）に出力する。トランザクション制御部１０７（１０８）にて受信したパケットの内容を解析し、その結果に基づく処理を行う。以降において、パケットの受信時には、このような動作が行われるものとする。
【０１７３】
マスタ１００は、データ通信を全二重通信モードで行うか、半二重通信モードに移行してから行うかを確定し、その結果をスレーブ１０１へ通知する（ステップＳ２０）。具体的には、通信モードの確定は、図５および図８にそれぞれ示すコマンドパケットとレスポンスパケットおけるアーギュメント部に含む通信モードフィールドに基づいて行われる。例えば、マスタ１００が発行するコマンドパケットの通信モードフィールドが全二重通信モードか半二重通信モードであればその通信モードで確定する。任意モードであればスレーブ１０１が発行するレスポンスパケットの通信モードフィールドに従って通信モードを確定する。そして、マスタ１００は、確定した通信モードが半二重通信である場合には図１１に示す制御コードの内、方向制御コード（ＤＩＲ）を通知し、全二重通信である場合にはアイドルコード（ＩＤＬ）を通知する。なお、本実施の形態においては、コマンドパケットとレスポンスパケットの双方に通信モードフィールドを含んでいるので、それらの示す通信モードに相違が発生することが考えられる。このため、マスタ１００は最終的に確定した通信モードをスレーブ１０１に通知する必要がある。しかしながら、本実施の形態のように、マスタ１００は、通信モードの切替が必要な場合には方向制御コードを送信し、必要ない場合にはアイドルコードを送信することで、スレーブ１０１は、通信モードの相違の有無に関わらず、受信した制御コード（ＤＩＲ若しくはＩＤＬ）にて切替が必要であるか否かを判断することができる。
【０１７４】
通信モードとして全二重通信が選定されると（ステップＳ２０における「全二重」）、通信システム１０は、全二重通信によるデータ通信を行う（ステップＳ２５）。その後、処理対象となるデータの通信が終了したか否かを判断する（ステップＳ４５）。終了していないと判断する場合（ステップＳ４５における「Ｎｏ」）、処理はステップＳ１０へ戻る。終了したと判断する場合（ステップＳ４５における「Ｙｅｓ」）、処理は終了する。
【０１７５】
通信モードとして半二重通信が選定されると（ステップＳ２０における「半二重」）、マスタ１００及びスレーブ１０１は、通信モードを全二重通信から半二重通信へと切り替える（移行する）処理を行う（ステップＳ３０）。全二重通信から半二重通信への切り替えが完了すると、半二重通信によるデータ通信を行う（ステップＳ３５）。通信システム１０は、ステップＳ３５にて送信対象のデータが送信されると、通信モードの復旧処理、つまり通信モードを半二重通信から全二重通信へと切り替える処理を行う（ステップＳ４０）。その後、ステップＳ４５が実行される。
【０１７６】
（２）通信モードの通知処理
ここでは、図１３にて示すステップＳ２０にて行われる通信モード通知の処理の手順をマスタ１００側、スレーブ１０１側に分けて図１４（ａ）及び（ｂ）にて示す流れ図を用いて説明する。
【０１７７】
図１４（ａ）は、マスタ１００側における処理の流れを示す流れ図である。
【０１７８】
マスタ１００は、確定した通信モードは半二重通信であるか否かを判断する（ステップＳ１００）。
【０１７９】
半二重通信であると判断する場合には（ステップＳ１００のおける「Ｙｅｓ」）、マスタ１００は、方向制御コード（ＤＩＲ）をＤＡＴ０ライン１１３を用いてスレーブ１０１へ送信する（ステップＳ１０５）。その後、アクノリッジコード（ＡＣＫ）を受信したか否かを判断する（ステップＳ１１０）。受信したと判断する場合には（ステップＳ１１０における「Ｙｅｓ」）、マスタ１００は、アイドルコード（ＩＤＬ）をＤＡＴ０ライン１１３を用いてスレーブ１０１へ送信する（ステップＳ１１５）。アクノリッジコードを受信していないと判断する場合には（ステップＳ１１０における「Ｎｏ」）、マスタ１００は、アクノリッジコードを受信するまでの間、方向制御コードの送信を継続する。ここで、マスタ１００及びスレーブ１０１は、方向制御コードやアクノリッジコードなどのＫコードの送信時には、コード生成部２２８（１１２７）にて送信すべきＫコードを生成し、符号化部２２４（１１２４）が符号化して相手装置へ送信する。またマスタ１００及びスレーブ１０１は、Ｋコードの受信時には、コード検出部２２９（１１２８）にてＫコードを検出する。以降において、Ｋコードの送信及び受信時には、このような動作が行われる。
【０１８０】
半二重通信でないと判断する場合には（ステップＳ１００のおける「Ｎｏ」）、マスタ１００は、アイドルコードをＤＡＴ０ライン１１３を用いてスレーブ１０１へ送信する（ステップＳ１１５）。
【０１８１】
図１４（ｂ）は、スレーブ１０１側における処理の流れを示す流れ図である。
【０１８２】
スレーブ１０１は、制御コードを受信したか否かを判断する（ステップＳ１５０）。
【０１８３】
受信していないと判断する場合には（ステップＳ１５０における「Ｎｏ」）、スレーブ１０１は、制御コードを受信するまでステップＳ１５０の判断を行う。
【０１８４】
受信したと判断する場合には（ステップＳ１５０における「Ｙｅｓ」）、スレーブ１０１は、受信した制御コードの種別を判定する（ステップＳ１５５）。
【０１８５】
受け取った制御コードが方向制御コード（ＤＩＲ）である場合には（ステップＳ１５５における「ＤＩＲ」）、スレーブ１０１は、アクノリッジコードをマスタ１００へ送信する（ステップＳ１６０）。その後、アイドルコードを受信したか否かを判断する（ステップＳ１６５）。
【０１８６】
受信したと判断する場合には（ステップＳ１６５における「Ｙｅｓ」）、スレーブ１０１は、処理を終了する。アイドルコードを受信していないと判断する場合には（ステップＳ１６５における「Ｎｏ」）、スレーブ１０１は、アイドルコードを受信するまでの間、アクノリッジコードの送信を継続する。
【０１８７】
ステップＳ１５０にて受け取った制御コードがアイドルコード（ＤＩＲ）である場合には（ステップＳ１５５における「ＩＤＬ」）、スレーブ１０１は、処理を終了する。
【０１８８】
このような手順により、切り替えの指示をリンク層の制御コード（方向制御コード、アクノリッジコード）によるハンドシェイクで確実に通知することができる。
【０１８９】
（全二重通信によるデータ通信）
ここで、全二重通信によるデータ通信について具体例を用いて説明する。
【０１９０】
全二重通信によるデータ通信は、図１５に示すように、マスタ１００とスレーブ１０１との間は、ダウンリンク状態のＤＡＴ０ライン１１３とアップリンク状態のＤＡＴ１ライン１１４とで接続されている。
【０１９１】
マスタ１００から通信モードを全二重通信モードとする送信コマンドパケットがスレーブ１０１へ送信され（ステップＳ２００）、スレーブ１０１は受信準備ができるとレスポンスパケットで応答する（ステップＳ２０５）。
【０１９２】
レスポンスパケットを受けたマスタ１００は、ダウンリンク状態のＤＡＴ０ライン１１３のみを用いてデータパケット（ＷＤＡＴ  ＰＫＴ  ０、１）の送信を行う（ステップＳ２１０、Ｓ２１５）。例えば、ステップＳ５における通信初期化にて共有したデータパケットのブロックサイズを５１２バイトとし、送信コマンドパケットで指定した転送サイズを１Ｋバイトとすると、２個の送信データパケットが送信される。
【０１９３】
同様に、マスタ１００は通信モードを全二重通信モードとする受信コマンドパケットをスレーブ１０１へ送信する（ステップＳ２２０）。スレーブ１０１は、送信準備ができるとレスポンスパケットで応答する（ステップＳ２２５）。そして、マスタ１００はアップリンク状態のＤＡＴ１ライン１１４のみを用いてデータパケット（ＲＤＡＴ  ＰＫＴ  ０、１）を受信する（ステップＳ２３０、Ｓ２３５）。
【０１９４】
（半二重通信によるデータ通信）
次に、図１３にて示すステップＳ２０において通信モードとして半二重通信が選定されると、まず、全二重通信モードから半二重通信モードに移行するためにステップＳ３０が実行され、その後、ステップＳ３５にて半二重通信でのデータ通信が行われる。それが完了すると、ステップＳ４０にて通信モードの復旧が行われる。このような通信モードの移行・復旧を含む半二重データ通信についての具体例を図１６を用いて説明する。
【０１９５】
まず、マスタ１００は、通信モードフィールドを半二重通信モードあるいは任意モードとした送信コマンドパケットをスレーブ１０１へ送信する（ステップＳ２５０）。スレーブ１０１は、半二重通信モードでの受信準備ができると通信モードフィールドを半二重通信モードとしたレスポンスパケットで応答する（ステップＳ２５５）。
【０１９６】
そして、マスタ１００及びスレーブ１０１は、方向制御コード（ＤＩＲ）とアクノリッジコード（ＡＣＫ）とのハンドシェイクにより、全二重通信から半二重通信への切り替えを行う（ステップＳ２６０）。この場合、アップリンク状態のＤＡＴ１ライン１１４がダウンリンク状態となるよう切り替えられる。
【０１９７】
切り替えが完了すると、マスタ１００は、ダウンリンク状態の２つの通信路を用い、データパケット（ＷＤＡＴ  ＰＫＴ  ０、１）の半二重送信を行う（ステップＳ２６５からＳ２８０）。マスタ１００は、例えば、ＤＡＴ０ライン１１３を用いて偶数バイトを、ＤＡＴ１ライン１１４を用いて奇数バイトをそれぞれ送信する。
【０１９８】
ステップＳ２５０にて送信された送信コマンドパケットに指定された転送サイズの送信を完了すると、マスタ１００及びスレーブ１０１は、再び全二重通信モードに復旧するため、アップリンク状態のＤＡＴ１ライン１１４をダウンリンク状態に切り替える（ステップＳ２８５）。
【０１９９】
半二重通信によるマスタ１００側がデータを受信する場合も同様に、コマンドパケットの送受信とレスポンスパケットの送受信とによるハンドシェイクが行われる（ステップＳ２９０、Ｓ２９５）。
【０２００】
そして、マスタ１００及びスレーブ１０１は、方向制御コード（ＤＩＲ）とアクノリッジコード（ＡＣＫ）とのハンドシェイクにより、全二重通信から半二重通信への切り替えを行う（ステップＳ３００）。この場合、ダウンリンク状態のＤＡＴ０ライン１１３がアップリンク状態となるように切り替えられる。
【０２０１】
そして、マスタ１００は、半二重通信によるデータパケット（ＲＤＡＴ  ＰＫＴ  ０、１）を受信する（ステップＳ３０５からＳ３２０）。その後、再び全二重通信モードに復旧するためアップリンク状態のＤＡＴ０ライン１１３はダウンリンク状態となるよう切り替えられる（ステップＳ３２５）。
【０２０２】
（３）通信モードの移行処理
ここでは、図１３にて示すステップＳ３０にて行われる通信モードの移行処理について、マスタ１００側及びスレーブ１０１側に分けて、図１７、図１８を用いて説明する。
【０２０３】
（マスタ１００側の動作）
図１７は、マスタ１００側における処理の流れを示す流れ図である。
【０２０４】
マスタ１００は、通信モードの通知（通信モードが半二重通信である旨）を完了すると、自装置がデータを送信するか受信するかを判断する（ステップＳ３５０）。具体的には、マスタ１００の方向制御部２０８は、送信したコマンドパケットに含まれるＲ／Ｗ４１２（図４参照）が示す種別に基づいて判断する。
【０２０５】
自装置がデータを送信すると判断する場合、つまりコマンドパケットに含まれるＲ／Ｗ４１２が書き込みを示す場合（ステップＳ３５０における「送信」）、マスタ１００の方向制御部２０８は、ＤＡＴ１ライン１１４をダウンリンク状態とするため、現在有効な状態である差動レシーバ２２０を無効な状態とし、現在無効な状態である差動トランスミッタ２１９を有効な状態に切り替える（ステップＳ３５５）。これにより、通信路Ｉ／Ｆ部２５０はＤＡＴ１ライン１１４を用いたデータを受信する構成からデータを送信する構成へと切り替えられる。その後、マスタ１００は、ＤＡＴ１ライン１１４を用いてプリアンブルコード（ＰＲＥ）をスレーブ１０１へ送信し、ビット同期や高速クロックの抽出を行って通信可能な状態とする（ステップＳ３６０）。
【０２０６】
自装置がデータを受信すると判断する場合、つまりコマンドパケットに含まれるＲ／Ｗ４１２が読み出しを示す場合（ステップＳ３５０における「受信」）、マスタ１００の方向制御部２０８は、ＤＡＴ０ライン１１３をアップリンク状態とするため、現在有効な状態にある差動トランスミッタ２１７を無効な状態にし、現在無効な状態にある差動レシーバ２１８を有効な状態に切り替える（ステップＳ３６５）。これにより、通信路Ｉ／Ｆ部２５０はＤＡＴ０ライン１１３を用いたデータを送信する構成からデータを受信する構成へと切り替えられる。その後、マスタ１００は、ＤＡＴ０ライン１１３を用いてスレーブ１０１側からプリアンブルコード（ＰＲＥ）を受信し、ビット同期や高速クロックの抽出を行って通信可能な状態とする（ステップＳ３７０）。
【０２０７】
（スレーブ１０１側の動作）
図１８は、スレーブ１０１側における処理の流れを示す流れ図である。
【０２０８】
スレーブ１０１は、通信モードの通知（通信モードが半二重通信である旨）を受け取ると、自装置がデータを送信するか受信するかを判断する（ステップＳ４００）。具体的には、スレーブ１０１の方向制御部１１０８は、受信したコマンドパケットに含まれるＲ／Ｗ４１２（図４参照）が示す種別に基づいて判断する。
【０２０９】
自装置がデータを受信すると判断する場合、つまり受信したコマンドパケットに含まれるＲ／Ｗ４１２が書き込みを示す場合（ステップＳ４００における「受信」）、スレーブ１０１の方向制御部１１０８は、ＤＡＴ１ライン１１４をダウンリンク状態とするため、現在有効な状態にある差動トランスミッタ１１１８を無効な状態にし、現在無効な状態にある差動レシーバ１１１９を有効な状態に切り替える（ステップＳ４０５）。これにより、通信路Ｉ／Ｆ部１１５０はＤＡＴ１ライン１１４を用いたデータを送信する構成からデータを受信する構成へと切り替えられる。その後、スレーブ１０１は、ＤＡＴ１ライン１１４を用いてマスタ１００からプリアンブルコード（ＰＲＥ）を受信し、ビット同期や高速クロックの抽出を行って通信可能な状態とする（ステップＳ４１０）。
【０２１０】
自装置がデータを送信すると判断する場合、つまり受信したコマンドパケットに含まれるＲ／Ｗ４１２が読み出しを示す場合（ステップＳ４００における「送信」）、スレーブ１０１の方向制御部１１０８は、ＤＡＴ０ライン１１３をアップリンク状態とするため、現在有効な状態である差動レシーバ１１１７を無効な状態とし、現在無効な状態である差動トランスミッタ１１１６を有効な状態に切り替える（ステップＳ４１５）。これにより、通信路Ｉ／Ｆ部１１５０はＤＡＴ０ライン１１３を用いたデータを受信する構成からデータを送信する構成へと切り替えられる。その後、スレーブ１０１は、ＤＡＴ０ライン１１３を用いてプリアンブルコード（ＰＲＥ）をマスタ１００へ送信し、ビット同期や高速クロックの抽出を行って通信可能な状態とする（ステップＳ４２０）。
【０２１１】
（全二重通信から半二重通信への切り替え）
図１９（ａ）は、全二重通信から半二重通信への切り替え時において、マスタ１００がデータの送信側となる場合における制御コードの送受信の詳細を示す図である。
【０２１２】
マスタ１００は、全二重通信から半二重通信への切り替え指示として方向制御コード（ＤＩＲ）をＤＡＴ０ライン１１３を用いてスレーブ１０１へ送信する。このとき、マスタ１００は、方向制御コードに対する応答としてアクノリッジコード（ＡＣＫ）をＤＡＴ１ライン１１４を用いてスレーブ１０１から受信するまでの間、方向制御コードの送信を継続する（ステップＳ４５０）。
【０２１３】
スレーブ１０１は、方向制御コードをＤＡＴ０ライン１１３を用いてマスタ１００から受信すると、アクノリッジコードをＤＡＴ１ライン１１４を用いてマスタ１００へ送信する。このとき、スレーブ１０１は、アクノリッジコードに対する応答としてアイドルコード（ＩＤＬ）をＤＡＴ０ライン１１３を用いてマスタ１００から受信するまでの間、アクノリッジコードの送信を継続する（ステップＳ４５１）。
【０２１４】
マスタ１００は、アクノリッジコードをＤＡＴ１ライン１１４を用いてスレーブ１０１から受信すると、アイドルコードをＤＡＴ０ライン１１３を用いてスレーブ１０１へ送信する。アイドルコードの送信は、ＤＡＴ１ライン１１４との同期が完了するまでの間、継続される（ステップＳ４５２）。
【０２１５】
マスタ１００は、アイドルコードの送信を開始すると、図１７のステップＳ３５５にて示したように、通信路Ｉ／Ｆ部２５０に対するＤＡＴ１ライン１１４の接続を切り替え、スレーブ１０１は、アイドルコードを受信すると、図１８のステップＳ４０５にて示したように、通信路Ｉ／Ｆ部１１５０に対するＤＡＴ１ライン１１４の接続を切り替える（ステップＳ４５３）。
【０２１６】
マスタ１００は、ＤＡＴ１ライン１１４に対する切替が完了すると、プリアンブルコード（ＰＲＥ）をＤＡＴ１ライン１１４を用いてスレーブ１０１へ送信する。なお、プリアンブルコードの送信は、ＤＡＴ０ライン１１３との同期が完了するまでの間、継続される（ステップＳ４５４）。
【０２１７】
同期が完了すると、マスタ１００とスレーブ１０１との間で半二重通信によるデータパケットの送受信が行われる（ステップＳ４５５）。
【０２１８】
ここで、プリアンブルコードの送受信は、マスタ１００及びスレーブ１０１の間で確実にビット同期が行えるよう固定長とする。プリアンブルコードの送受信が終了すると、処理対象のデータの送受信が行われる。ここで、データパケットは先頭にパケット先頭コード（ＳＯＰ）、末尾にパケット末尾コード（ＥＯＰ）が付加される。なお、アイドルコード（ＩＤＬ）の生成やパケット先頭、末尾コード（ＳＯＰ、ＥＯＰ）などの制御コードはリンク制御部２０６、１１０６で生成される。
【０２１９】
図１９（ｂ）は、全二重通信から半二重通信への切り替え時において、マスタ１００がデータの受信側となる場合における制御コードの送受信の詳細を示す図である。
【０２２０】
マスタ１００は、全二重通信から半二重通信への切り替え指示として方向制御コード（ＤＩＲ）をＤＡＴ０ライン１１３を用いてスレーブ１０１へ送信する。このとき、マスタ１００は、アクノリッジコード（ＡＣＫ）をＤＡＴ１ライン１１４を用いてスレーブ１０１から受信するまでの間、方向制御コードの送信を継続する（ステップＳ４６０）。
【０２２１】
スレーブ１０１は、方向制御コードをＤＡＴ０ライン１１３を用いてマスタ１００から受信すると、アクノリッジコードをＤＡＴ１ライン１１４を用いてマスタ１００へ送信する。このとき、スレーブ１０１は、アイドルコード（ＩＤＬ）をＤＡＴ０ライン１１３を用いてマスタ１００から受信するまでの間、アクノリッジコードの送信を継続する（ステップＳ４６１）。
【０２２２】
マスタ１００は、アクノリッジコードをＤＡＴ１ライン１１４を用いてスレーブ１０１から受信すると、アイドルコードをＤＡＴ０ライン１１３を用いてスレーブ１０１へ送信する。このとき、マスタ１００は、アイドルコードをＤＡＴ１ライン１１４を用いてスレーブ１０１から受信するまでの間、アイドルコードの送信を継続する（ステップＳ４６２）。
【０２２３】
スレーブ１０１は、アクノリッジコードに対する応答としてアイドルコードを受信すると、その応答としてアイドルコードを、ＤＡＴ１ライン１１４を用いてマスタ１００へ送信する。なお、この送信は、ＤＡＴ０ライン１１３との同期が完了するまでの間、継続される（ステップＳ４６３）。
【０２２４】
マスタ１００は、スレーブ１０１からアイドルコードを受信すると、図１７のステップＳ３６５にて示したように、通信路Ｉ／Ｆ部２５０に対するＤＡＴ０ライン１１３の接続を切り替え、スレーブ１０１は、アイドルコードの送信を開始すると、図１８のステップＳ４１５にて示したように、通信路Ｉ／Ｆ部１１５０に対するＤＡＴ０ライン１１３の接続を切り替える（ステップＳ４６４）。
【０２２５】
スレーブ１０１は、ＤＡＴ０ライン１１３に対する切替が完了すると、プリアンブルコード（ＰＲＥ）をＤＡＴ０ライン１１３を用いてマスタ１００へ送信する。なお、プリアンブルコードの送信は、ＤＡＴ１ライン１１４との同期が完了するまでの間、継続される（ステップＳ４６５）。ここで、プリアンブルコードの送受信は、上記と同様に固定長とする。
【０２２６】
同期が完了すると、マスタ１００とスレーブ１０１との間で半二重通信によるデータパケットの送受信が行われる（ステップＳ４６６）。
【０２２７】
ここで、図１９（ａ）及び（ｂ）において、方向制御コード（ＤＩＲ）及びアクノリッジコード（ＡＣＫ）は図１４のようなハンドシェイクを行う。そのため、そのハンドシェイクが確立するまでディスパリティが＋と−のＫコードを繰り返した可変長となる。なお、方向制御対象外の通信路はアイドルコード（ＩＤＬ）で埋められる。
【０２２８】
（４）通信モードの復旧処理
ここでは、図１３にて示すステップＳ４０にて行われる通信モードの復旧処理について、マスタ１００側及びスレーブ１０１側に分けて、図２０及び図２１を用いて説明する。
【０２２９】
（マスタ１００側の動作）
図２０は、マスタ１００側における処理の流れを示す流れ図である。
【０２３０】
マスタ１００は、処理対象のデータ通信が終了すると、自装置がデータの送信側であるか受信側であるかを判断する（ステップＳ５００）。具体的には、マスタ１００の方向制御部２０８は、通信要求時に送信したコマンドパケットに含まれるＲ／Ｗ４１２（図４参照）が示す種別に基づいて判断する。
【０２３１】
自装置がデータの送信側である判断する場合（ステップＳ５００における「送信」）、マスタ１００は、方向制御コード（ＤＩＲ）をＤＡＴ０ライン１１３を用いてスレーブ１０１へ送信する（ステップＳ５０５）。その後、マスタ１００は、方向制御部２０８の制御により、ＤＡＴ１ライン１１４をアップリンク状態とするため、現在有効な状態である差動トランスミッタ２１９を無効な状態とし、現在無効な状態である差動レシーバ２２０を有効な状態に切り替える（ステップＳ５１０）。これにより、通信路Ｉ／Ｆ部２５０はＤＡＴ１ライン１１４を用いたデータを送信する構成からデータを受信する構成へと切り替えられる。
【０２３２】
マスタ１００は、プリアンブルコードをＤＡＴ１ライン１１４を用いてスレーブ１０１から受信したか否かを判断する（ステップＳ５１５）。
【０２３３】
受信していないと判断する場合（ステップＳ５１５における「Ｎｏ」）、マスタ１００は方向制御コードをＤＡＴ０ライン１１３を用いてスレーブ１０１へ送信し（ステップＳ５２０）、処理はステップＳ５１５へ戻る。つまり、マスタ１００は、プリアンブルコードを受信するまでの間、方向制御コードの送信を継続する。なお、方向制御コードの送信の継続と、ステップＳ５１０にて行われるＤＡＴ１レシーバの切替は並列に行われるものとする。
【０２３４】
プリアンブルコードを受信したと判断する場合（ステップＳ５１５における「Ｙｅｓ」）、マスタ１００は、アクノリッジコード（ＡＣＫ）を、ＤＡＴ０ライン１１３を用いてスレーブ１０１へ送信する（ステップＳ５２５）。
【０２３５】
マスタ１００は、アイドルルコード（ＩＤＬ）をＤＡＴ１ライン１１４を用いてスレーブ１０１から受信したか否かを判断する（ステップＳ５３０）。
【０２３６】
受信していないと判断する場合（ステップＳ５３０における「Ｎｏ」）、処理はステップＳ５２５へ戻る。つまり、マスタ１００は、アイドルコードを受信するまでの間、アクノリッジコードの送信を継続する。
【０２３７】
受信したと判断する場合（ステップＳ５３０における「Ｙｅｓ」）、処理は終了する。
【０２３８】
自装置がデータの受信側である判断する場合（ステップＳ５００における「受信」）、マスタ１００は、方向制御コードをＤＡＴ１ライン１１４を用いてスレーブ１０１から受信したか否かを判断する（ステップＳ５３０）。
【０２３９】
受信していないと判断する場合（ステップＳ５３０における「Ｎｏ」）、処理は、ステップＳ５３０へ戻る。
【０２４０】
受信したと判断する場合（ステップＳ５３０における「Ｙｅｓ」）、マスタ１００は、方向制御部２０８の制御により、ＤＡＴ０ライン１１３をダウンリンク状態とするため、現在有効な状態である差動レシーバ２１８を無効な状態とし、現在無効な状態である差動トランスミッタ２１７を有効な状態に切り替える（ステップＳ５３５）。これにより、通信路Ｉ／Ｆ部２５０はＤＡＴ０ライン１１３を用いたデータを受信する構成からデータを送信する構成へと切り替えられる。
【０２４１】
マスタ１００は、プリアンブルコードをＤＡＴ０ライン１１３を用いてスレーブ１０１へ送信する（ステップＳ５４０）。
【０２４２】
マスタ１００は、アクノリッジコードをＤＡＴ１ライン１１４を用いてスレーブ１０１から受信したか否かを判断する（ステップＳ５４５）。
【０２４３】
受信していないと判断する場合（ステップＳ５４５における「Ｎｏ」）、処理はステップＳ５４０へ戻る。つまり、マスタ１００は、アクノリッジコードを受信するまでの間、プリアンブルコードの送信を継続する。
【０２４４】
アクノリッジコードを受信したと判断する場合（ステップＳ５４５における「Ｙｅｓ」）、マスタ１００は、アイドルコード（ＩＤＬ）を、ＤＡＴ０ライン１１３を用いてスレーブ１０１へ送信する（ステップＳ５５０）。
【０２４５】
（スレーブ１０１側の動作）
図２１は、スレーブ１０１側における処理の流れを示す流れ図である。
【０２４６】
スレーブ１０１は、処理対象のデータ通信が終了すると、自装置がデータの送信側であるか受信側であるかを判断する（ステップＳ５７０）。具体的には、スレーブ１０１は、通信要求時に受信したコマンドパケットに含まれるＲ／Ｗ４１２（図４参照）が示す種別に基づいて判断する。
【０２４７】
自装置がデータの受信側である判断する場合（ステップＳ５７０における「受信」）、スレーブ１０１は、方向制御コードをＤＡＴ０ライン１１３を用いてマスタ１００から受信したか否かを判断する（ステップＳ５７５）。
【０２４８】
受信していないと判断する場合（ステップＳ５７５における「Ｎｏ」）、処理は、ステップＳ５７５へ戻る。
【０２４９】
受信したと判断する場合（ステップＳ５７５における「Ｙｅｓ」）、スレーブ１０１は、方向制御部１１０８の制御により、ＤＡＴ１ライン１１４をアップリンク状態とするため、現在有効な状態である差動レシーバ１１１９を無効な状態とし、現在無効な状態である差動トランスミッタ１１１８を有効な状態に切り替える（ステップＳ５８０）。これにより、通信路Ｉ／Ｆ部１１５０はＤＡＴ１ライン１１４を用いたデータを受信する構成からデータを送信する構成へと切り替えられる。
【０２５０】
スレーブ１０１は、プリアンブルコードをＤＡＴ１ライン１１４を用いてマスタ１００へ送信する（ステップＳ５８５）。
【０２５１】
スレーブ１０１は、アクノリッジコードをＤＡＴ０ライン１１３を用いてマスタ１００から受信したか否かを判断する（ステップＳ５９０）。
【０２５２】
受信していないと判断する場合（ステップＳ５９０における「Ｎｏ」）、処理はステップＳ５８５へ戻る。つまり、スレーブ１０１は、アクノリッジコードを受信するまでの間、プリアンブルコードの送信を継続する。
【０２５３】
アクノリッジコードを受信したと判断する場合（ステップＳ５９０における「Ｙｅｓ」）、スレーブ１０１は、アイドルコード（ＩＤＬ）を、ＤＡＴ１ライン１１４を用いてマスタ１００へ送信する（ステップＳ５９５）。
【０２５４】
自装置がデータの送信側である判断する場合（ステップＳ５７０における「送信」）、スレーブ１０１は、方向制御コード（ＤＩＲ）をＤＡＴ１ライン１１４を用いてマスタ１００へ送信する（ステップＳ６００）。その後、スレーブ１０１は、方向制御部１１０８の制御により、ＤＡＴ０ライン１１３をダウンリンク状態とするため、現在有効な状態である差動トランスミッタ１１１６を無効な状態とし、現在無効な状態である差動レシーバ１１１７を有効な状態に切り替える（ステップＳ６０５）。これにより、通信路Ｉ／Ｆ部１１５０はＤＡＴ０ライン１１３を用いたデータを送信する構成からデータを受信する構成へと切り替えられる。
【０２５５】
スレーブ１０１は、プリアンブルコードをＤＡＴ０ライン１１３を用いてマスタ１００から受信したか否かを判断する（ステップＳ６１０）。
【０２５６】
受信していないと判断する場合（ステップＳ６１０における「Ｎｏ」）、スレーブ１０１は方向制御コードをＤＡＴ１ライン１１４を用いてマスタ１００へ送信し（ステップＳ６１５）、処理はステップＳ６１０へ戻る。つまり、スレーブ１０１は、プリアンブルコードを受信するまでの間、方向制御コードの送信を継続する。なお、方向制御コードの送信の継続と、ステップＳ６０５にて行われるＤＡＴ０レシーバの切替は並列に行われるものとする。
【０２５７】
プリアンブルコードを受信したと判断する場合（ステップＳ６１０における「Ｙｅｓ」）、スレーブ１０１は、アクノリッジコード（ＡＣＫ）を、ＤＡＴ１ライン１１４を用いてマスタ１００へ送信する（ステップＳ６１５）。
【０２５８】
スレーブ１０１は、アイドルルコード（ＩＤＬ）をＤＡＴ０ライン１１３を用いてマスタ１００から受信したか否かを判断する（ステップＳ６２０）。
【０２５９】
受信していないと判断する場合（ステップＳ６２０における「Ｎｏ」）、処理はステップＳ６１５へ戻る。つまり、スレーブ１０１は、アイドルコードを受信するまでの間、アクノリッジコードの送信を継続する。
【０２６０】
受信したと判断する場合（ステップＳ６２０における「Ｙｅｓ」）、処理は終了する。
【０２６１】
（半二重通信から全二重通信への切り替え）
図２２（ａ）は、マスタ１００がデータの送信側である半二重通信から全二重通信へと切り替える場合の、制御コードの送受信の詳細を示す図である。
【０２６２】
マスタ１００は、半二重通信から全二重通信への切り替え指示として方向制御コード（ＤＩＲ）をＤＡＴ０ライン１１３を用いてスレーブ１０１へ送信する。このとき、マスタ１００は、方向制御コードに対する応答としてプリアンブルコード（ＰＲＥ）をＤＡＴ１ライン１１４を用いてスレーブ１０１から受信するまでの間、方向制御コードの送信を継続する（ステップＳ６５０）。
【０２６３】
マスタ１００は、方向制御コードを送信した後、図２０のステップＳ５１０にて示したように、通信路Ｉ／Ｆ部２５０に対するＤＡＴ１ライン１１４の接続を切り替え、スレーブ１０１は、方向制御コードをＤＡＴ０ライン１１３を用いてマスタ１００から受信すると、図２１のステップＳ５８０にて示したように、通信路Ｉ／Ｆ部１１５０に対するＤＡＴ１ライン１１４の接続を切り替える（ステップＳ６５１）。
【０２６４】
その後、スレーブ１０１は、切替が完了すると、プリアンブルコードをＤＡＴ１ライン１１４を用いてマスタ１００へ送信する。このとき、スレーブ１０１は、プリアンブルコードに対する応答としてアクノリッジコード（ＡＣＫ）を受信するまでの間、プリアンブルコードの送信を継続する（ステップＳ６５２）。
【０２６５】
マスタ１００は、プリアンブルコードをＤＡＴ１ライン１１４を用いてスレーブ１０１から受信すると、その応答としてアクノリッジコードをＤＡＴ０ライン１１３を用いてスレーブ１０１へ送信する。このとき、マスタ１００は、アクノリッジコードの応答としてアイドルコード（ＩＤＬ）を受信するまでの間、アクノリッジコードの送信を継続する（ステップＳ６５３）。
【０２６６】
スレーブ１０１は、アクノリッジコードを受信すると、その応答としてアイドルコードをＤＡＴ１ライン１１４を用いてスレーブ１０１へ送信する（ステップＳ６５４）。
【０２６７】
図２２（ｂ）は、マスタ１００がデータの受信側である半二重通信から全二重通信へと切り替える場合の、制御コードの送受信の詳細を示す図である。
【０２６８】
スレーブ１０１は、半二重通信から全二重通信への切り替え指示として方向制御コード（ＤＩＲ）をＤＡＴ１ライン１１４を用いてマスタ１００へ送信する。このとき、スレーブ１０１は、プリアンブルコード（ＰＲＥ）をＤＡＴ０ライン１１３を用いてマスタ１００から受信するまでの間、方向制御コードの送信を継続する（ステップＳ６６０）。
【０２６９】
スレーブ１０１は、方向制御コードを送信した後、図２１のステップＳ６０５にて示したように、通信路Ｉ／Ｆ部１１５０に対するＤＡＴ０ライン１１３の接続を切り替え、マスタ１００は、方向制御コードをＤＡＴ１ライン１１４を用いてスレーブ１０１から受信すると、図２０のステップＳ５３５にて示したように、通信路Ｉ／Ｆ部２５０に対するＤＡＴ０ライン１１３の接続を切り替える（ステップＳ６６１）。
【０２７０】
マスタ１００は、切替が完了すると、プリアンブルコードをＤＡＴ０ライン１１３を用いてスレーブ１０１へ送信する。このとき、マスタ１００は、プリアンブルコードに対する応答としてアクノリッジコード（ＡＣＫ）を受信するまでの間、プリアンブルコードの送信を継続する（ステップＳ６６２）。
【０２７１】
スレーブ１０１は、プリアンブルコードをＤＡＴ０ライン１１３を用いてマスタ１００から受信すると、その応答としてアクノリッジコードをＤＡＴ１ライン１１４を用いてマスタ１００へ送信する。このとき、スレーブ１０１は、アクノリッジコードの応答としてアイドルコード（ＩＤＬ）を受信するまでの間、アクノリッジコードの送信を継続する（ステップＳ６６３）。
【０２７２】
マスタ１００は、アクノリッジコードを受信すると、その応答としてアイドルコードをＤＡＴ０ライン１１３を用いてスレーブ１０１へ送信する（ステップＳ６６４）。
【０２７３】
ここで、図２２（ａ）及び（ｂ）によると、方向制御コード（ＤＩＲ）とプリアンブルコード（ＰＲＥ）とのハンドシェイク、およびプリアンブルコードとアクノリッジコード（ＡＣＫ）とのハンドシェイクが連続的に行われていることがわかる。
【０２７４】
ここで、図２２（ａ）におけるスレーブ１０１や図２２（ｂ）におけるマスタ１００のようなデータ受信側の通信装置において、プリアンブルコードの送信開始から、アクノリッジコードを受けるまでのプリアンブルコードの送信数を記憶しておく。それ以降に通信モードを移行する場合、図１７及び図１８におけるプリアンブルコードの送信（ステップＳ３６０、Ｓ４１０）は、上記送信数と同等のプリアンブルコードを送信することで、実際にビット同期が確立した状態を実現することができる。つまり、固定長の期間を記憶しているプリアンブルコードの送信数を送信する期間とすることで、固定長の期間を適切なサイズとすることができる。
【０２７５】
さらに、そのプリアンブルコードの送信数は方向制御のオーバヘッドを示す。
【０２７６】
このため、コマンドパケットに含まれた転送サイズに比べてプリアンブルコードの送信数が十分に大きければ、通信モード確定ステップにおいて半二重通信モードが選択されないようにすることも可能である。なお、コマンドパケット内の転送サイズ分を送受信してから全二重通信モードに復旧する場合、最後のデータパケットの送受信完了が全二重通信モードへの復旧開始タイミングとなる。
【０２７７】
このため、必ずしも図２０、２１にて示す方向制御コードの送受信は必須ではない。しかしながら、例えば、半二重通信モードで受信側の通信装置は、連続するデータパケットを受信すると受信バッファのオーバーフローやＣＲＣエラーが発生する可能性がある。そのような、受信側の通信装置からの状態通知（割込み）を受けるため、送信側の通信装置はデータパケットの送信完了後に一時的に全二重通信モードに復旧させることが考えられ、この場合は明示的に方向制御コードを送信する必要がある。
【０２７８】
（半二重通信時におけるデータ受信側からの割込み動作）
以下では、上記に示すような、半二重通信時においてデータ受信側の通信装置からの割込みを通知するための動作について図２３を用いて説明する。
【０２７９】
まず、マスタ１００とスレーブ１０１との間でコマンドパケットとレスポンスパケットのハンドシェイクを行い（ステップＳ７００、Ｓ７０５）、その後、全二重通信から半二重通信への切り替えを行う（ステップＳ７１０）。切替が完了すると、マスタ１００は、図１６と同様に半二重通信モードでのデータパケット（ＷＤＡＴ  ＰＫＴ０）の送信を行う（ステップＳ７１５、Ｓ７２０）。ここでは、データパケット（ＷＤＡＴ  ＰＫＴ０）の送信後に、通信システム１０は、一時的に全二重通信モードに復旧、つまり半二重通信から全二重通信へ切り替えを行う（ステップＳ７２５）。これによりマスタ１００は、スレーブ１０１からの割込みを受け付け可能な状態になる。例えば、スレーブ１０１は、データパケット（ＷＤＡＴ  ＰＫＴ０）の受信時にＣＲＣエラーがあれば、メッセージカテゴリをＣＲＣエラーとしたメッセージパケットを発行し、発行したメッセージパケットをＤＡＴ１ライン１１４を用いてマスタ１００へ送信する（ステップＳ７３０）。
【０２８０】
マスタ１００は、メッセージパケットを受信すると、再び半二重通信モードへ切り替え（ステップＳ７３５）、データパケットの再送を行う（ステップＳ７４０、Ｓ７４５）。
【０２８１】
通信システム１０は、再度、一時的に全二重通信モードに復旧、つまり半二重通信から全二重通信へ切り替えを行う（ステップＳ７５０）。
【０２８２】
通信システム１０は、スレーブ１０１にて受信したデータパケットにＣＲＣエラーがなく、割込みが不要であれば、再び半二重通信モードに切り替える（ステップＳ７５５）。
【０２８３】
その後、マスタ１００は、半二重通信モードでのデータパケット（ＷＤＡＴ  ＰＫＴ１）の送信を行う（ステップＳ７６０、Ｓ７６５）。そして、データパケット（ＷＤＡＴ  ＰＫＴ１）の送信が完了すると、通信システム１０は、半二重通信から全二重通信へ切り替えを行う（ステップＳ７７０）。
【０２８４】
このとき、ステップＳ７５０にて行われる全二重通信モードへの切り替えにおけるスレーブ１０１は、図２１に示す復旧処理のステップＳ５９５にて行われるアイドルコードの送信の代わりに、例えば方向制御コード（ＤＩＲ）を送信することで割込み不要を通知できる。それを受けたマスタ１００は、即座に半二重通信モードに移行させることができる。また、同じくステップＳ７５０にて行われる切替時のスレーブ１０１は、即座に半二重通信モードに移行しても受信バッファの確保ができていない場合、その準備ができるまでアイドルコードを送信するの代わりにビジーコード（ＢＳＹ）を送信することで、フロー制御を実現できる。
【０２８５】
２．変形例１
上記実施の形態１における方向制御コードの送受信、通信路の切り替えを、フロー制御と組み合わせて行ってもよい。ここで、フロー制御とは、互いに通信が可能な状態かを確認してからデータ通信を開始する制御のことである。
【０２８６】
以下、フロー制御と組み合わせた場合における通信モードの切り替えの手順について説明する。
【０２８７】
２．１  データ読み込み時について
ここでは、マスタ１００が、スレーブ１０１からデータを読み出す場合、つまりスレーブ１０１がデータの送信側となる場合において、通信モードの切替と、フロー制御と組み合わせた場合について、図２４を用いて説明する。なお、ここでは、実施の形態１と同様に、全二重通信時には、ＤＡＴ０ライン１１３はダウンリンク状態にあり、ＤＡＴ１ライン１１４はアップリンク状態にあるものとする。
【０２８８】
マスタ１００は、コマンドパケットをＤＡＴ０ライン１１３を用いてスレーブ１０１へ送信する（ステップＳ８００）。ことき、コマンドパケットのＲ／Ｗ４１２（図４参照）には読み込み（Ｒｅａｄ）を示す値が格納されており、通信モード４２０（図５参照）には半二重通信（ＨＤ  ｍｏｄｅ）を示す値が格納されている。
【０２８９】
スレーブ１０１は、マスタ１００からコマンドパケットを受信すると、その応答としてレスポンスパケットをＤＡＴ１ライン１１４を用いてマスタ１００へ送信する（ステップＳ８０５）。このとき、レスポンスパケットのＲ／Ｗ４１２には読み込み（Ｒｅａｄ）を示す値が格納されており、通信モード４５０（図５参照）には半二重通信（ＨＤ  ｍｏｄｅ）を示す値が格納されている。
【０２９０】
データの受信側であるマスタ１００は、フロー制御におけるコードの１つである、通信（データ受信）の準備を示すＦＣＲＤＹコードをＤＡＴ０ライン１１３を用いてスレーブ１０１へ送信する（ステップＳ８１０）。なお、このＦＣＲＤＹには、半二重通信（ＨＤ  ｍｏｄｅ）を示す値が格納されているものとする。
【０２９１】
スレーブ１０１は、マスタ１００からＦＣＲＤＹコードを受信すると、方向切替コード（ＤＩＲ）を、ＤＡＴ１ライン１１４を用いてマスタ１００へ送信する（ステップＳ８１１）。このとき、スレーブ１０１は、所定期間の間、方向切替コードの送信を継続する（ステップＳ８１７）。なお、当該所定期間内において、フロー制御による通信開始の準備が完了しているものとする。
【０２９２】
マスタ１００は、ＦＣＲＤＹコードの送信後、ダウンリンク状態のＤＡＴ０ライン１１３がアップリンク状態となるように通信路Ｉ／Ｆ部２５０の構成の切り替えを行う（ステップＳ８１５）。また、ステップＳ８１５において、スレーブ１０１側では、マスタ１００からＦＣＲＤＹコードを受信すると、ダウンリンク状態のＤＡＴ０ライン１１３がアップリンク状態となるように通信路Ｉ／Ｆ部１１５０の構成の切り替えを行う。つまり、ステップＳ８１５では、通信路Ｉ／Ｆ部２５０と通信路Ｉ／Ｆ部１１５０との構成の切替が行われる。なお、切替の詳細は、実施の形態１にて示しているので、ここでの説明は省略する。
【０２９３】
スレーブ１０１は、通信路Ｉ／Ｆ部１１５０の構成の切り替えが完了すると、プリアンブルコードをＤＡＴ０ライン１１３を用いてマスタ１００へ送信する（ステップＳ８１６）。
【０２９４】
スレーブ１０１は、方向制御コードの送信開始から所定期間が経過し、且つ通信開始の準備が完了すると、当該方向制御コード及びプリアンブルコードの送信を抑止し、マスタ１００から受信したＦＣＲＤＹコードに対する応答としてＦＣＲＤＹコードをＤＡＴ１ライン１１４を用いてマスタ１００へ送信する（ステップＳ８２０）。なお、スレーブ１０１から送信されるＦＣＲＤＹコードも、マスタ１００から送信されるＦＣＲＤＹコードと同様に、半二重通信（ＨＤ  ｍｏｄｅ）を示す値が格納されている。
【０２９５】
スレーブ１０１からＦＣＲＤＹコードが送信された後、半二重通信にて、スレーブ１０１からデータの送信が行われる（ステップＳ８２５、Ｓ８３０、Ｓ８３５、Ｓ８４０）。
【０２９６】
その後、スレーブ１０１は、フロー制御におけるコードの１つである、通信の不可を示すＦＣＢＳＹコードをＤＡＴ１ライン１１４を用いてマスタ１００へ送信する（ステップＳ８４５）。
【０２９７】
マスタ１００は、ＦＣＢＳＹコードを受信すると、アップリンク状態のＤＡＴ０ライン１１３がダウンリンク状態となるように通信路Ｉ／Ｆ部２５０の構成の切り替えを行う（ステップＳ８５０）。また、ステップＳ８５０において、スレーブ１０１側では、マスタ１００へＦＣＢＳＹコードを送信した後と、アップリンク状態のＤＡＴ０ライン１１３がダウンリンク状態となるように通信路Ｉ／Ｆ部１１５０の構成の切り替えを、方向切替コードの送信（ステップＳ８１１、Ｓ８１７）と並行して行う。つまり、ステップＳ８１５では、通信路Ｉ／Ｆ部２５０と通信路Ｉ／Ｆ部１１５０との構成の切替が行われる。なお、切替の詳細は、実施の形態１にて示しているので、ここでの説明は省略する。
【０２９８】
また、スレーブ１０１は、ＦＣＢＳＹコードを送信した後、方向切替コード（ＤＩＲ）をＤＡＴ１ライン１１４を用いてマスタ１００へ送信する（ステップＳ８４６）。このとき、スレーブ１０１は、マスタ１００へ送信したＦＣＢＳＹコードに対する応答があるまでの間、方向切替コードの送信を継続する（ステップＳ８５２）。
【０２９９】
また、マスタ１００は、ステップＳ８５０にて通信路Ｉ／Ｆ部２５０の構成の切り替えが完了すると、受信したＦＣＢＳＹコートに対する応答の準備が完了するまでの間、プリアンブルコードをＤＡＴ０ライン１１３を用いてスレーブ１０１へ送信する（ステップＳ８５１）。
【０３００】
マスタ１００は、ＦＣＢＳＹコートに対する応答をＤＡＴ０ライン１１３を用いてスレーブ１０１へ送信する（ステップＳ８５５）。なお、マスタ１００は、ＦＣＢＳＹコートに対する応答として、スレーブ１０１からデータ通信が正常である場合にはＦＣＢＳＹコードを送信し、データ通信にエラーがある場合にはＣＲＣエラーコードを送信する。
【０３０１】
２．２  データ書き込み時について
ここでは、マスタ１００が、スレーブ１０１へデータを書き込む場合、つまりマスタ１００がデータの送信側となる場合において、通信モードの切替と、フロー制御と組み合わせた場合について、図２５を用いて説明する。なお、上述したように、全二重通信時には、ＤＡＴ０ライン１１３はダウンリンク状態にあり、ＤＡＴ１ライン１１４はアップリンク状態にあるものとする。
【０３０２】
マスタ１００は、コマンドパケットをＤＡＴ０ライン１１３を用いてスレーブ１０１へ送信する（ステップＳ９００）。ことき、コマンドパケットのＲ／Ｗ４１２（図４参照）には書き込み（Ｗｒｉｔｅ）を示す値が格納されており、通信モード４２０（図５参照）には半二重通信（ＨＤ  ｍｏｄｅ）を示す値が格納されている。
【０３０３】
スレーブ１０１は、マスタ１００からコマンドパケットを受信すると、その応答としてレスポンスパケットをＤＡＴ１ライン１１４を用いてマスタ１００へ送信する（ステップＳ９０５）。このとき、レスポンスパケットのＲ／Ｗ４１２には読み込み（Ｗｒｉｔｅ）を示す値が格納されており、通信モード４５０（図５参照）には半二重通信（ＨＤ  ｍｏｄｅ）を示す値が格納されている。
【０３０４】
データの受信側であるスレーブ１０１は、通信（データ受信）の準備を示すＦＣＲＤＹコードをＤＡＴ１ライン１１４を用いてマスタ１００へ送信する（ステップＳ９１０）。なお、このＦＣＲＤＹには、半二重通信（ＨＤ  ｍｏｄｅ）を示す値が格納されているものとする。
【０３０５】
マスタ１００は、スレーブ１０１からＦＣＲＤＹコードを受信すると、方向切替コード（ＤＩＲ）を、ＤＡＴ０ライン１１３を用いてスレーブ１０１へ送信する（ステップＳ９１１）。このとき、マスタ１００は、所定期間の間、方向切替コードの送信を継続する（ステップＳ９１５）。なお、当該所定期間内において、フロー制御による通信開始の準備が完了しているものとする。
【０３０６】
スレーブ１０１は、ＦＣＲＤＹコードの送信後、アップリンク状態のＤＡＴ１ライン１１４がアップリンク状態となるように通信路Ｉ／Ｆ部１１５０の構成の切り替えを行う（ステップＳ９１６）。また、ステップＳ９１６において、マスタ１００側では、スレーブ１０１からＦＣＲＤＹコードを受信すると、アップリンク状態のＤＡＴ１ライン１１４がアップリンク状態となるように通信路Ｉ／Ｆ部２５０の構成の切り替えを、方向切替コードの送信（ステップＳ８１１、Ｓ８１７）と並行して行う。つまり、ステップＳ９１６では、通信路Ｉ／Ｆ部２５０と通信路Ｉ／Ｆ部１１５０との構成の切替が行われる。なお、切替の詳細は、実施の形態１にて示しているので、ここでの説明は省略する。
【０３０７】
マスタ１００は、通信路Ｉ／Ｆ部２５０の構成の切り替えが完了すると、プリアンブルコードをＤＡＴ１ライン１１４を用いてスレーブ１０１へ送信する（ステップＳ９１７）。
【０３０８】
マスタ１００は、方向制御コードの送信開始から所定期間が経過すると、当該方向制御コード及びプリアンブルコードの送信を抑止し、スレーブ１０１から受信したＦＣＲＤＹコードに対する応答としてＦＣＲＤＹコードをＤＡＴ０ライン１１３を用いてスレーブ１０１へ送信する（ステップＳ９２０）。なお、マスタ１００から送信されるＦＣＲＤＹコードも、スレーブ１０１から送信されるＦＣＲＤＹコードと同様に、半二重通信（ＨＤ  ｍｏｄｅ）を示す値が格納されている。
【０３０９】
マスタ１００からＦＣＲＤＹコードが送信された後、半二重通信にて、マスタ１００からデータの送信が行われる（ステップＳ９２５、Ｓ９３０、Ｓ９３５、Ｓ９４０）。
【０３１０】
その後、マスタ１００は、ＦＣＢＳＹコードをＤＡＴ０ライン１１３を用いてスレーブ１０１へ送信する（ステップＳ９４５）。
【０３１１】
スレーブ１０１は、ＦＣＢＳＹコードを受信すると、ダウンリンク状態のＤＡＴ１ライン１１４がアップリンク状態となるように通信路Ｉ／Ｆ部１１５０の構成の切り替えを行う（ステップＳ９５１）。また、ステップＳ９５１において、マスタ１００側では、スレーブ１０１へＦＣＢＳＹコードを送信した後と、ダウンリンク状態のＤＡＴ１ライン１１４がアップリンク状態となるように通信路Ｉ／Ｆ部２５０の構成の切り替えを行う。つまり、ステップＳ９５１では、通信路Ｉ／Ｆ部２５０と通信路Ｉ／Ｆ部１１５０との構成の切替が行われる。なお、切替の詳細は、実施の形態１にて示しているので、ここでの説明は省略する。
【０３１２】
また、マスタ１００は、ＦＣＢＳＹコードを送信した後、方向切替コード（ＤＩＲ）をＤＡＴ０ライン１１３を用いてスレーブ１０１へ送信する（ステップＳ９４６）。このとき、マスタ１００は、スレーブ１０１へ送信したＦＣＢＳＹコードに対する応答があるまでの間、方向切替コードの送信を継続する（ステップＳ９５０）。
【０３１３】
また、スレーブ１０１は、ステップＳ９５１にて通信路Ｉ／Ｆ部１１５０の構成の切り替えが完了すると、受信したＦＣＢＳＹコートに対する応答の準備が完了するまでの間、プリアンブルコードをＤＡＴ１ライン１１４を用いてマスタ１００へ送信する（ステップＳ９５２）。
【０３１４】
スレーブ１０１は、ＦＣＢＳＹコートに対する応答をＤＡＴ１ライン１１４を用いてマスタ１００へ送信する（ステップＳ９５５）。なお、ＦＣＢＳＹコートに対する応答として、上述したようにＦＣＢＳＹコードやＣＲＣエラーコードがある。
【０３１５】
２．３  まとめ
図２４及び図２５にて示すように、半二重通信から全二重通信へと切り替える場合、現時点でデータの送信側である装置が、当該装置が全二重通信時にデータを送信するための通信路を用いて、ＦＣＢＳＹコードを送信している。そして、現時点でデータの受信側である他装置は、ＦＣＢＳＹコードを受信した通信路とは異なる他の通信路の切り替えを行っている。例えば、図２４では、半二重通信時ではスレーブ１０１がデータの送信側となり、スレーブ１０１が全二重通信時にデータを送信する通信路はＤＡＴ１ライン１１４となる。そこで、スレーブ１０１は、ＤＡＴ１ライン１１４を用いてＦＣＢＳＹコードを送信することで、他の通信路、ここではＤＡＴ０ライン１１３が方向切替の対象となることが分かる。
【０３１６】
つまり、半二重通信時においてデータの送信側の装置が方向切替の対象外の通信路から切替のトリガーとなるコード（ここでは、ＦＣＢＳＹコード）を送信することで、両装置とも切替対象となる通信路を特定することができる。
【０３１７】
また、上記変形例１に限らず、実施の形態１においても、図２２（ａ）、（ｂ）にて示すように、半二重通信から全二重通信へと切り替える場合も、上記と同様のことが言える。
【０３１８】
これによると、切替のトリガーとなるコードをデータの送信側の装置が方向切替の対象外の通信路を用いて送信するということを予め定めておくことで、図２０、２１にて示す送受信の判定は不要となる。
【０３１９】
３．変形例２
上記変形例１において、全二重通信から半二重通信へと切り替える場合、ＦＣＲＤＹコードの送受信を切り替えの契機としたが、これに限定されない。
【０３２０】
ＦＣＲＤＹコードの送受信後に、送受信される方向制御コード（ＤＩＲ）を、通信路の方向切替のトリガーをしてもよい。
【０３２１】
例えば、図２４において、マスタ１００は、ステップＳ８１１にてスレーブ１０１からＤＡＴ１ライン１１４を用いて出力される方向制御コードを受信すると、ステップＳ８１５による通信路Ｉ／Ｆ部２５０の構成の切り替えを行う。また、スレーブ１０１は、ステップＳ８１１にて方向切替コードを出力した後、ステップＳ８１５による通信路Ｉ／Ｆ部１１５０の構成の切り替えを行う。
【０３２２】
図２５においては、スレーブ１０１は、ステップＳ９１１にてマスタ１００からＤＡＴ０ライン１１３を用いて出力される方向制御コードを受信すると、ステップＳ９１６による通信路Ｉ／Ｆ部１１５０の構成の切り替えを行う。また、マスタ１００は、ステップＳ９１１にて方向切替コードを出力した後、ステップＳ９１６による通信路Ｉ／Ｆ部２５０の構成の切り替えを行う。
【０３２３】
このように、ＦＣＲＤＹコードの送受信後に、送受信される方向制御コード（ＤＩＲ）を、通信路の方向切替のトリガーとすることで、「２．３まとめ」にて記載したように、全二重通信から半二重通信へと切り替える際に、データの送信側となるべき装置が方向切替の対象外の通信路から切替のトリガーとなるコード（ここでは、ＦＣＲＤＹコード）を送信することで、両装置とも切替対象となる通信路を特定することができる。
【０３２４】
（補足）
（１）上記変形例２において、１シンボル（１つ）の方向制御コードを送受信した場合に、方向切替の契機としたが、これに限定されない。
【０３２５】
例えば、２シンボルの方向制御コードを送受信したことを切替の契機としてもよい。つまり、所定数の方向制御コードの送受信を切替の契機としてもよい。
【０３２６】
（２）実施の形態１において、全二重通信から半二重通信へと切り替える場合、図１９（ａ）、（ｂ）にて示すように、常にマスタ１００側から方向制御コードを送信したが、これに限定されない。
【０３２７】
上述したように、半二重通信時においてデータの送信側となるべき装置が方向切替の対象外の通信路から切替のトリガーとなるコード（ここでは、ＦＣＲＤＹコード）を送信するとしてもよい。
【０３２８】
この場合、マスタ１００から送信されるコマンドパケットによりどちらの装置が送信側となるか特定することができる。例えば、コマンドパケットのＲ／Ｗ４１２に書き込みを示す値が格納されている場合にはデータの送信側はマスタ１００となり、読み込みを示す値が格納されている場合にはデータの送信側はスレーブ１０１となる。そして、データの送信側として特定された装置が、方向切替の対象外の通信路から方向制御コードを送信する。
【０３２９】
これにより、切替のトリガーとなるコードをデータの送信側となるべき装置が方向切替の対象外の通信路を用いて送信するということを予め定めておくことで、図１７、１８にて示す送受信の判定は不要となる。
【０３３０】
（３）上記変形例１における半二重通信から全二重通信への切り替える場合、ＦＣＢＳＹコードの送受信を切り替えの契機としたが、これに限定されない。
【０３３１】
半二重通信から全二重通信への切り替える場合においても、変形例２と同様に、ＦＣＢＳＹコードの送受信後に、送受信される方向制御コード（ＤＩＲ）を、通信路の方向切替のトリガーをしてもよい。
【０３３２】
これによると、実施の形態１や変形例２と同様に、方向制御コードの送受信を、切替のトリガーをすることができる。
【０３３３】
また、ここでは、１シンボル（１つ）の方向制御コードを送受信した場合に、方向切替の契機としているが、上述したように、所定数の方向制御コードの送受信を切替の契機としてもよい。
【０３３４】
４．その他の変形例
なお、本発明を上記実施の形態に基づいて説明してきたが、本発明は、上記の実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
【０３３５】
（１）上記実施の形態１では、符号化部２２４、復号化部２２５は、８ｂ／１０ｂ方式をサポートするものとしたが、これに限定されない。符号化部２２４、復号化部２２５は、４ｂ／５ｂ、６４ｂ／６６ｂなど他のエンコード方式とサポートするものとしても良い。
【０３３６】
（２）上記実施の形態１では、マスタ１００が発行するコマンドパケット及びスレーブ１０１が発行するレスポンスコマンドの双方に、通信モードを設定したが、これに限定されない。
【０３３７】
マスタ１００が発行するコマンドパケットのみに通信モードを設定してもよい。これにより、図１３にて示すステップＳ１０による通信要求の送信により、一意に通信モードを確定させることができるので、図１４にて示す通信モード通知処理は不要とすることができる。
【０３３８】
（３）ここで、スレーブとなる装置を、マスタ１００と着脱可能なメモリカードやＩ／Ｏカードとしてもよい。例えば、メモリカードはＳＤカードであり、Ｉ／Ｏカードは他の装置と無線通信を行うための無線ＬＡＮカードである。
【０３３９】
ここで、スレーブをＳＤカードとした場合について説明する。
【０３４０】
図２６は、上記実施の形態１にて示すスレーブ１０１をＳＤカード１０１ａとした場合の通信システム１０ａの構成を示している。通信システム１０ａは、図２６にて示すように、マスタ１００ａとＳＤカード１０１ａとから構成されている。なお、以下の説明において、実施の形態１にて示すマスタ１００及びスレーブ１０１の構成要素と同一のものついては、同一の符号を付与し、その説明は省略する。
【０３４１】
マスタ１００ａは、図２６にて示すように、イニシエータ１０３、通信Ｉ／Ｆ部１０５及びピン１５０、１５１を備えている。通信Ｉ／Ｆ部１０５は、実施の形態１と同様に、トランザクション制御部１０７、リンク制御部１０９及び送受信部１１１を有している。
【０３４２】
ピン１５０、１５１は、ＳＤカード１０１ａと接続されるものである。また、ピン１５０、１５１の一端は、図２にて示す通信路Ｉ／Ｆ部２５０と接続されている。具体的には、ピン１５０は差動トランスミッタ２１７及び差動レシーバ２１８と接続され、ピン１５１は差動トランスミッタ２１９及び差動レシーバ２２０と接続されている。
【０３４３】
ＳＤカード１０１ａは、図２６にて示すように、スレーブ１０１の構成要素に加えて、ピン１５２、１５３を備えている。
【０３４４】
ピン１５２、１５３それぞれは、ＳＤカード１０１ａがマスタ１００ａに装着されることで、マスタ１００ａが備えるピン１５０、１５１に接続される。また、ピン１５２、１５３の一端は、図１２にて示す通信路Ｉ／Ｆ部１１５０と接続されている。具体的には、ピン１５２は差動トランスミッタ１１１６及び差動レシーバ１１１７と接続され、ピン１５３は差動トランスミッタ１１１８及び差動レシーバ１１１９と接続されている。
【０３４５】
つまり、ピン１５０とピン１５２とが接続されることで上述した通信路１１３が、ピン１５１とピン１５３とが接続されることで上述した通信路１１４が、それぞれ形成されることになる。
【０３４６】
したがって、これらの接続により、上記の実施の形態１と同様に、マスタ１００ａとＳＤカード１０１ａとが、通信路１１３及び１１４を介した全二重通信及び半二重通信によるデータ通信が実現できる。なお、図２６には図示していないが、マスタ１００ａは、ピン１５０、１５１とは異なるピン（ここでは、ピン１５５として説明する。）を、ＳＤカード１０１ａはピン１５２、１５３とは異なるピン（ここでは、ピン１５６として説明する。）をそれぞれ有しており、ピン１５５とピン１５６とが接続されることにより、図１にて示すクロックライン１１５が形成される。
【０３４７】
また、Ｉ／Ｏカードについても同様の構成にて実現できるので、ここでの説明は省略する。
【０３４８】
（４）上記実施の形態１において、Ｋコードには、切替を指示するための方向制御コードとして１種類のコード（ＤＩＲ）のみを割り当てたが、これに限定されない。
【０３４９】
例えば、半二重通信から全二重通信への切替を示すコード（ＦＤＸ）と、全二重通信から半二重通信への切替を示すコード（ＨＤＸ）とをそれぞれＫコードに割り当ててもよい。
【０３５０】
これらのコードをＫコードに割り当てたＫコード一覧テーブルＴ２０１の一例を図２７に示す。図２７では、Ｋコード「Ｋ２８．０」に“ＦＤＸ”を割り当て、Ｋコード「Ｋ２８．１」に“ＨＤＸ”を割り当てている。
【０３５１】
この場合、図１９（ａ）及び（ｂ）における“ＤＩＲ”の送受信を、“ＨＤＸ”の送受信に置き換えればよい。また、図２２（ａ）及び（ｂ）における“ＤＩＲ”の送受信を、“ＦＤＸ”の送受信に置き換えればよい。
【０３５２】
これにより、各装置は、何れの通信モードの切替かを確実に特定することができる。
【０３５３】
（５）上記実施の形態１において、半二重通信から全二重通信への切替時において、方向制御コード（ＤＩＲ）の送受信を、切替のトリガーとして用いたが、これに限定されない。
【０３５４】
方向制御コード（ＤＩＲ）の送受信を、切替完了後におけるプリアンブルコード（ＰＲＥ）の送受信のトリガーとして用いてもよい。
【０３５５】
この場合の、制御コードの送受信の詳細について、図２８にて示す。
【０３５６】
図２８（ａ）は、マスタ１００がデータの送信側である半二重通信から全二重通信へと切り替える場合の、制御コードの送受信の詳細を示す図である。
【０３５７】
マスタ１００は、ＤＡＴ０ライン１１３及びＤＡＴ１ライン１１４双方にてアイドルコード（ＩＤＬ）を送信中に全二重通信への切替が発生すると、マスタ１００及びスレーブ１０１にてＤＡＴ１ライン１１４の方向の切り替えを行う（ステップＳ１０００）。
【０３５８】
マスタ１００は、ＤＡＴ１ライン１１４の切り替え中に方向制御コード（ＤＩＲ）を、当該方向制御コードに対する応答があるまでの間、ＤＡＴ０ライン１１３を用いてスレーブ１０１へ送信する（ステップＳ１００１）。
【０３５９】
スレーブ１０１は、ＤＡＴ１ライン１１４の方向の切替が完了し、且つマスタ１００から方向制御コードを受信すると、その応答としてプリアンブルコード（ＰＲＥ）を、当該プリアンブルコードに対する応答があるまでの間、ＤＡＴ１ライン１１４を用いてマスタ１００へ送信する（ステップＳ１００２）。
【０３６０】
マスタ１００は、プリアンブルコードを受信すると、その応答としてアクノリッジコード（ＡＣＫ）を、当該アクノリッジコードに対する応答があるまでの間、ＤＡＴ０ライン１１３を用いてスレーブ１０１へ送信する（ステップＳ１００３）。
【０３６１】
スレーブ１０１は、アクノリッジコードを受信すると、その応答としてアイドルコード（ＩＤＬ）をＤＡＴ１ライン１１４を用いてマスタ１００へ送信する（ステップＳ１００４）。
【０３６２】
以降、全二重通信にて処理対象となるデータの送受信を行う。
【０３６３】
図２８（ｂ）は、マスタ１００がデータの受信側である半二重通信から全二重通信へと切り替える場合の、制御コードの送受信の詳細を示す図である。
【０３６４】
全二重通信への切替が発生すると、マスタ１００及びスレーブ１０１にてＤＡＴ０ライン１１３の方向の切り替えを行う（ステップＳ１１００）。
【０３６５】
スレーブ１０１は、ＤＡＴ０ライン１１３の切り替え中に方向制御コード（ＤＩＲ）を、当該方向制御コードに対する応答があるまでの間、ＤＡＴ１ライン１１４を用いてマスタ１００へ送信する（ステップＳ１１０１）。
【０３６６】
マスタ１００は、ＤＡＴ０ライン１１３の方向の切替が完了し、且つスレーブ１０１から方向制御コードを受信すると、その応答としてプリアンブルコード（ＰＲＥ）を、当該プリアンブルコードに対する応答があるまでの間、ＤＡＴ０ライン１１３を用いてスレーブ１０１へ送信する（ステップＳ１１０２）。
【０３６７】
スレーブ１０１は、ＤＡＴ０ライン１１３の方向の切替が完了し、且つプリアンブルコードを受信すると、その応答としてアクノリッジコード（ＡＣＫ）を、当該アクノリッジコードに対する応答があるまでの間、ＤＡＴ１ライン１１４を用いてマスタ１００へ送信する（ステップＳ１１０３）。
【０３６８】
マスタ１００は、アクノリッジコードを受信すると、その応答としてアイドルコード（ＩＤＬ）をＤＡＴ０ライン１１３を用いてスレーブ１０１へ送信する（ステップＳ１１０４）。
【０３６９】
以降、全二重通信にて処理対象となるデータの送受信を行う。
【０３７０】
ここで、図２８（ａ）及び（ｂ）によると、方向制御コード（ＤＩＲ）とプリアンブルコード（ＰＲＥ）とのハンドシェイク、およびプリアンブルコードとアクノリッジコード（ＡＣＫ）とのハンドシェイクが連続的に行われていることがわかる。
【０３７１】
（６）上記実施の形態では、マスタ１００とスレーブ１０１との関係が固定されているが、これに限定されない。双方の装置はイニシエータとターゲットとを備えた構成であってもよい。これによると、マスタとスレーブの関係が動的に入れ替わることができる。例えば、マスタとスレーブとの関係は１通信毎に切り替わっても良い。
【０３７２】
（７）上記実施の形態において、全二重通信から半二重通信へと切替が行われる場合、切り替え開始からプリアンブルコードの送信の終了までの期間として、半二重通信から全二重通信への切り替えに要した期間を用いてもよい。
【０３７３】
この場合、以下のような動作で実現できる。
【０３７４】
半二重通信から全二重通信へと切り替えが行われる際に、半二重通信時のデータ受信側の装置、例えば、図２２（ａ）におけるスレーブ１０１や図２２（ｂ）におけるマスタ１００のようなデータ受信側の通信装置は、方向制御コード（ＤＩＲ）を受信してから当該装置がプリアンブルコードの送信を終了するまで（相手装置からアクノリッジコードを受信するまで）にようした時間を計測して、その結果を記憶する。当該装置が半二重通信においてデータの送信側となる場合には、当該装置は、全二重通信から半二重通信への切り替えの際に、記憶している計測時間までの間、図１９（ａ）にて示すステップＳ４５３及びＳ４５４、若しくは図１９（ｂ）にて示すステップＳ４６４及びＳ４６５の実行を行う。
【０３７５】
または、半二重通信から全二重通信へと切り替えが行われる際に、半二重通信時のデータ送信側の装置、例えば、図２２（ａ）におけるマスタ１００や図２２（ｂ）におけるスレーブ１０１のようなデータ送信側の通信装置は、図２２（ａ）にて示すステップＳ６５０及びＳ６５３に要した時間を計測して、その結果を記憶しておく。当該装置が半二重通信においてデータの送信側となる場合には、当該装置は、全二重通信から半二重通信への切り替えの際に、記憶している計測時間までの間、図１９（ａ）にて示すステップＳ４５３及びＳ４５４、若しくは図１９（ｂ）にて示すステップＳ４６４及びＳ４６５の実行を行う。
【０３７６】
また、切り替えに要した期間を計測した時間としたが、送受信した制御コードの数であってもよい。
【０３７７】
この場合、以下のような動作で実現できる。
【０３７８】
半二重通信から全二重通信へと切り替えが行われる際に、半二重通信時のデータ受信側の通信装置が、相手装置からの方向制御コードを受信した数を記憶する。そして、当該装置が半二重通信においてデータの送信側となる場合には、当該装置は、全二重通信から半二重通信への切り替えの際に、記憶している数と同数のアイドルコードを図１９（ａ）にて示すステップＳ４５２若しくは図１９（ｂ）にて示すステップＳ４６３にて送出した後に処理すべきデータの送信を開始してもよい。また、当該装置は、方向制御コードを受信した数と相手装置からのアクノリッジコードを受信した数との合計数を記憶して、ステップＳ４６３にて送出するアイドルコードの数に適用してもよい。
【０３７９】
または、半二重通信から全二重通信へと切り替えが行われる際に、半二重通信時のデータ送信側の通信装置は、図２２（ａ）にて示すステップＳ６５０及びＳ６５３にて送信した方向制御コードの数を記憶しておく。当該装置が半二重通信においてデータの送信側となる場合には、当該装置は、全二重通信から半二重通信への切り替えの際に、記憶している数と同等の数のアイドルコードを送出して、その後、処理すべきデータの送信を開始してもよい。また、当該装置は、方向制御コードを送信した数とアクノリッジコードを送信した数との合計数を記憶して、ステップＳ４６３にて送出するアイドルコードの数に適用してもよい。
【０３８０】
（８）上記実施の形態において、差動トランスミッタと差動レシーバとの切り替えは、電力の供給の有無により実現したが、これに限定されない。
【０３８１】
例えば、図２にて示すＤＡＴ０ライン１１３に含まれるＤＡＴ０＋ラインの分岐点から差動トランスミッタ２１７及び差動レシーバ２１８までの経路それぞれにスイッチを設けてもよい。また、ＤＡＴ０ライン１１３に含まれるＤＡＴ０−ラインの分岐点から差動トランスミッタ２１７及び差動レシーバ２１８までの経路それぞれについても同様に、スイッチを設けてもよい。これにより、差動トランスミッタ２１７を有効とし、差動レシーバ２１８を無効にする場合には、ＤＡＴ０＋ラインと差動トランスミッタ２１７との間に設けられたスイッチを閉じ、ＤＡＴ０＋ラインと差動レシーバ２１８との間に設けられたスイッチを開く。さらに、ＤＡＴ０−ラインと差動トランスミッタ２１７との間に設けられたスイッチを閉じ、ＤＡＴ０−ラインと差動レシーバ２１８との間に設けられたスイッチを開く。
【０３８２】
また、ＤＡＴ１ライン１１４に含まれるＤＡＴ１＋ライン及びＤＡＴ１−ラインそれぞれに対して差動トランスミッタ２１７及び差動レシーバ２１８の間においても上記同様に、スイッチを設けてもよい。
【０３８３】
また、スレーブ１０１においても、ＤＡＴ０＋及びＤＡＴ０−それぞれに対して差動トランスミッタ１１１６及び差動レシーバ１１１７の間においても上記同様に、スイッチを設けてもよい。ＤＡＴ１＋及びＤＡＴ１−それぞれに対して差動トランスミッタ１１１８及び差動レシーバ１１１９の間においても上記同様に、スイッチを設けてもよい。
【０３８４】
（９）上記実施の形態において、半二重通信から全二重通信への切り替え時において（図２２（ａ）、（ｂ）参照）、アクノリッジコード（ＡＣＫ）は、プリアンブルコード（ＰＲＥ）を受信したことを示す応答コードとしたが、これに限定されない。プリアンブルコード（ＰＲＥ）を受信したことを示す応答コードとして、アイドルコード（ＩＤＬ）で代替させる構成であってもよい。その場合、方向制御コード（ＤＩＲ）とプリアンブルコード（ＰＲＥ）とのハンドシェイク、プリアンブルコード（ＰＲＥ）とアイドルコード（ＩＤＬ）とのハンドシェイクが連続的に行われることになる。さらに、アイドルコード（ＩＤＬ）は論理的なアイドル状態を示す８ｂ／１０ｂのコードである必要は無く、差動トランスミッタからの送信を停止した電気的なアイドル状態であってもよい。相手側に差動レシーバは、電気的なアイドル状態を検出すると、送信したプリアンブルコードに対する応答コードを受け取ったと認識する。
【０３８５】
（１０）本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
【０３８６】
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＢＤ（Ｂｌｕ−ｒａｙ  Ｄｉｓｃ）、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記デジタル信号であるとしてもよい。
【０３８７】
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
【０３８８】
また、本発明は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記録しており、前記マイクロプロセッサは、前記コンピュータプログラムにしたがって動作するとしてもよい。
【０３８９】
また、前記プログラムまたは前記デジタル信号を前記記録媒体に記録して移送することにより、または前記プログラムまたは前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
【０３９０】
（１１）上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
【産業上の利用可能性】
【０３９１】
本発明は、マスタとスレーブとの間で１通信毎に全二重通信か半二重通信かの通信モードを選択でき、また、それら通信モード切替え時の通信路の方向制御およびビット同期を高速かつ確実に行える特徴を有する。このため、機器間あるいは機器内の機能ブロック間で効率的なデータ転送を行う通信システムに適用でき、有用である。【０３９２】
本発明に係るマスタ通信装置及びスレーブ通信装置は、装置を製造、販売する産業において、経営的、つまり反復的かつ継続的に利用され得る。
【符号の説明】
【０３９３】
１０    通信システム
１００    マスタ通信装置（マスタ）
１０１    スレーブ通信装置（スレーブ）
１０２    シリアル通信網
１０３    イニシエータ
１０４    ターゲット
１０５、１０６    通信インタフェース（Ｉ／Ｆ）部
１０７、１０８    トランザクション制御部
１０９、１１０    リンク制御部
１１１、１１２    送受信部
１１３    第１通信路（ＤＡＴ０ライン）
１１４    第２通信路（ＤＡＴ１ライン）
１１５    クロックライン
【図１】
2009153944.tif 000003
【図２】
2009153944.tif 000004
【図３】
2009153944.tif 000005
【図４】
2009153944.tif 000006
【図５】
2009153944.tif 000007
【図６】
2009153944.tif 000008
【図７】
2009153944.tif 000009
【図８】
2009153944.tif 000010
【図９】
2009153944.tif 000011
【図１０】
2009153944.tif 000012
【図１１】
2009153944.tif 000013
【図１２】
2009153944.tif 000014
【図１３】
2009153944.tif 000015
【図１４】
2009153944.tif 000016
【図１５】
2009153944.tif 000017
【図１６】
2009153944.tif 000018
【図１７】
2009153944.tif 000019
【図１８】
2009153944.tif 000020
【図１９】
2009153944.tif 000021
【図２０】
2009153944.tif 000022
【図２１】
2009153944.tif 000023
【図２２】
2009153944.tif 000024
【図２３】
2009153944.tif 000025
【図２４】
2009153944.tif 000026
【図２５】
2009153944.tif 000027
【図２６】
2009153944.tif 000028
【図２７】
2009153944.tif 000029
【図２８】
2009153944.tif 000030
【手続補正書】
【提出日】平成22年1月28日(2010.1.28)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、全二重通信と半二重通信が可能な複数の通信路を介して接続された複数の通信装置を含む通信システムにおける通信方式の切り替えの技術に関する。
【背景技術】
【０００２】
近年の半導体微細化と高速化技術の進展に伴って、機器間あるいは機器内に搭載されるＬＳＩ間で通信するデータ量は益々増加傾向にあるが、その一方で、パッケージコストに影響するＬＳＩの端子（パッド）数には厳しい制約がある。
このような制約のもとで用いられる通信方式としては、送受信の方向制御や送信権の調停制御が必要な半二重通信方式と、送受信を同時に処理できる全二重通信方式が挙げられる。
【０００３】
これら通信方式を切り替えることで、処理すべきデータの送受信を効率的に行う技術が開示されている（特許文献１、２）。
例えば、特許文献１では、送信あるいは受信の一方のみを行う場合には通信方式を半二重通信方式へ切り替え、送信及び受信の双方を行う場合には通信方式を全二重通信方式に切り替える技術が開示されている。
【０００４】
また、特許文献２では、半二重通信方式への切り替え時においては、８ｂ／１０ｂのようなエンコード方式で規定される特殊な制御コードを用いて、送受信の方向制御や方向制御後のビット同期を行う技術が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００２−９４６００号公報
【特許文献２】特開２００５−２６０３６１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、通信方式の切り替え時に関して、従来、切り替え開始後、予め定められた期間（固定期間）が経過するとデータの送受信を開始するという手順が用いられている。なお、ここで、通信方式の切り替えとは、前記複数の通信路と接続され、データの入出力を行うインタフェース部が、切り替えられるべき通信方式に基づき、前記複数の通信路を用いてデータを受信すべき構成、データを送信すべき構成及びデータを疎受信すべき構成の何れかに切り替えることをいう。
【０００７】
しかしながら、従来の手順では、例えば、固定期間を経過する前に装置間を接続する複数の通信路に対する通信方向の切り替えが完了している場合、データの送受信が行えるにも関わらず固定期間を経過していないためデータの送受信を開始しない。そのため、固定期間を経過するまでの待ち時間が無駄となる。また、逆に、固定期間が経過してもなお複数の通信路に対する通信方向の切り替えが完了していない場合、例えば、ある装置が複数の通信路に対する通信方向の切り替えが完了しておらず、処理すべきデータを受信できる状態でない場合、通信方向の切り替えが完了した他の装置は相手装置が受信できないにも関わらず固定期間を経過したためデータの送信を開始するので、  受信エラーの通知やそれに伴う再送処理のような無駄な通信が発生する。
【０００８】
上記のような待ち時間や無駄な通信は、相手装置において接続された複数の通信路に対する通信方向の切替完了を認識していないために生じる問題である。
そこで、本発明は、上記問題に鑑みてなされたものであり、通信方式の切替完了を認識した上で処理すべきデータの送受信を開始することのできるデータ通信システム、通信装置及び通信方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記にて示す目的を達成するために、本発明は、第１装置と第２装置とからなり、前記第１装置と前記第２装置とを接続する第１及び第２の通信路を用いて全二重通信と半二重通信とを切り替えて処理対象であるデータの送受信を行うデータ通信システムであって、前記第１装置は、半二重通信時に当該第１装置がデータ送信側である場合において、半二重通信から全二重通信への切り替えを示す指示コードを前記第１の通信路を介して前記第２装置へ送出する第１送出手段と、前記第１及び前記第２の通信路と接続された第１インターフェース部を、前記第２の通信路によりデータを送信する構成から受信する構成へと切り替える第１切替制御手段と、前記第１切替制御手段による切替が完了し、且つ全二重通信への切替完了を示す応答コードを前記第２の通信路を介して前記第２装置から受け付けた後、全二重通信により処理対象となるデータの送受信を開始する第１通信制御手段とを備え、前記第２装置は、前記第１装置から前記指示コードを前記第１の通信路を介して受け付けると、前記第１及び前記第２の通信路と接続された第２インターフェース部において、前記第２の通信路によりデータを受信する構成から送信する構成へと切り替える第２切替制御手段と、前記第２切替制御手段による切替が完了した後、前記応答コードを前記第２の通信路を介して前記第１装置へ送出する第２送出手段と、前記応答コードを送出後、全二重通信により処理対象となるデータの送受信を開始する第２通信制御手段とを備えることを特徴とする。
【発明の効果】
【００１０】
上記にて示す構成によると、データ通信システムにおける第１装置及び第２装置は、指示コードを送受信してから応答コードを送受信するまでの間、つまり、指示コードと応答コードとによるハンドシェイクが成立するまでの間、通信方式の切替完了とは認識しない。そのため、切替が完了していないにも関わらず誤って処理すべきデータの送受信を開始することはない。また、ハンドシェイクが成立するとデータの送受信を開始するので切替完了から通信開始までの待ち時間が発生することもない。
【００１１】
ここで、前記第１送出手段は、さらに、前記第１通信制御手段による処理対象となるデータの送受信の開始に先立って、前記応答コードを受信した旨を示し、且つ前記第２装置からのデータの受信の待ち受け状態である旨を示す応答受信コードを前記第２装置へ送出し、前記第１通信制御手段は、前記第１送出手段による前記応答受信コードの送出後、処理対象のデータの送受信を開始し、前記第２通信制御手段は、前記応答受信コードの受信後、処理対象のデータの送受信を開始するとしてもよい。
【００１２】
この構成によると、データ通信システムにおける第１装置及び第２装置は、指示コードと応答コードとによるハンドシェイクが成立に加え、応答コードと応答受信コードによるハンドシェイクが成立するまでの間、データの送受信を開始しない。つまり、データ通信システムは、第１装置が自身にて送出した指示コードが第２装置へ届いたかどうかを応答コードの受信で認識し、且つ第２装置が自身にて送出した応答コードが第１装置へ届いたかどうかを応答受信コードの受信で認識した上で、全二重通信でのデータの送受信を開始する。これにより、両装置は、２種類のハンドシェイクが成立することで、相手装置の通信方式の切替が完了したことを認識することができるので、全二重通信によるデータの送受信を確実に開始することができる。
【００１３】
ここで、前記データ通信システムは、データ送信側がデータ送信を抑止する旨の抑止コードを、データ受信側が前記抑止コードの受信に対するメッセージコードを、それぞれ相手側の装置へ送信するフロー制御によるデータ通信を行い、前記第１送出手段は、前記指示コードの送出に先立って、前記抑止コードを前記第１の通信路を介して前記第２装置へ送出し、その後、前記指示コードを送出し、前記第２送出手段は、前記第２切替制御手段による前記切替が完了すると、前記応答コードの代わりに前記メッセージコードを送出し、前記第１通信制御手段は、前記第２装置から前記応答コードとして前記メッセージコードを受け付けるとしてもよい。
【００１４】
この構成によると、データ通信システムは、フロー制御にてデータ通信を制御する場合、第１装置は抑止コードの送信を指示コードの送信の契機としており、抑止コードに対するメッセージコードを指示コードに対する応答コードとして第２装置から受け付けている。これにより、データ通信システムは、抑止コードに対する制御が完了し、且つ通信方式の切替が完了すると、データの送受信を開始するので、フロー制御を用いたデータ通信時においても効率よくデータの送受信を開始できる。
【００１５】
ここで、前記データ通信システムは、データ送信側がデータ送信を抑止する旨の抑止コードを、データ受信側が前記抑止コードの受信に対するメッセージコードを、それぞれ相手側の装置へ送信するフロー制御によるデータ通信を行い、前記第１送出手段は、半二重通信によるデータ通信時において、前記指示コードの代わりに前記抑止コードを前記第２装置へ送出し、前記第２切替制御手段は、前記第１装置から前記指示コードとして前記抑止コードを受信し、前記第２送出手段は、前記第２切替制御手段による前記切替が完了すると、前記応答コードの代わりに前記メッセージコードを送出し、  前記第１通信制御手段は、前記第２装置から前記応答コードとして前記メッセージコードを受け付けるとしてもよい。
【００１６】
この構成によると、データ通信システムは、フロー制御にてデータ通信を制御する場合、第１装置は指示コードの代わりに抑止コードを送信しており、第２装置は応答コードとして抑止コードに対するメッセージコードを送信している。これにより、データ通信システムは、抑止コードに対する制御が完了し、且つ通信方式の切替が完了すると、データの送受信を開始するので、フロー制御を用いたデータ通信時においても効率よくデータの送受信を開始できる。
【００１７】
ここで、全二重通信時において、前記第１の通信路は前記第１装置から前記第２装置へデータを送信するよう用いられ、前記第２の通信路は前記第２装置から前記第１装置へデータを送信するよう用いられ、前記第１送出手段は、全二重通信時において、前記第２装置へデータを送信する旨を示すコードと半二重通信にてデータ通信を行う旨を示すコードとを含む送信要求コードを前記第１の通信路を介して前記第２装置へ送出し、前記第２送出手段は、前記送信要求コードを前記第１の通信路を介して受け取ると、当該送信要求コードを受け付けた旨を示す要求受信コードを前記第２の通信路を介して前記第１装置へ送出し、前記第１切替制御手段は、前記要求受信コードを前記第２の通信路を介して受け取ると、前記第１インターフェース部において、前記第２の通信路によりデータを受信する構成から送信する構成へと切り替え、前記第２切替制御手段は、前記要求受信コードの送出した後、前記第２インターフェース部において、前記第２の通信路によりデータを送信する構成から受信する構成へと切り替え、前記第１通信制御手段は、前記要求受信コードを受け取ってから所定の時間が経過した後、半二重通信により処理対象となるデータの送信を開始するとしてもよい。
【００１８】
この構成によると、第１装置及び第２装置は、送信要求コードと要求受信コードとのハンドシェイクが成立すると、半二重通信への切替を開始するので、どちらか一方のみが誤って切替を開始することはない。また、通信方式の切替のタイミングは要求受信コードの送受信後であるため両装置とも同じようなタイミングで切り替えを開始することができ、切り替えられた第２の通信路の利用が同じようなタイミングで可能となる。
【００１９】
ここで、前記データ通信システムは、前記第１装置が前記送信要求コードを送信した場合において、前記第２装置が受信待ちである旨の待ち受けコードを、前記第１装置が前記待ち受けコードの受信に対するメッセージコードを、それぞれ相手側の装置へ送信するフロー制御によるデータ通信を行い、前記第２送出手段は、前記第２切替制御手段による前記第２の通信路によりデータを送信する構成から受信する構成への切り替えに先立って、前記待ち受けコードを前記第２の通信路を介して前記第１装置へ送出し、前記第１送出手段は、前記要求受信コードを受け取り後、さらに前記待ち受けコードを前記第２の通信路を介して受け取ると、通信方式を全二重通信から半二重通信へと切り替える旨の指示コードを前記第１の通信路を介して前記第２装置へ送出し、前記第１切替制御手段は、前記待ち受けコードの受け取り後、前記第１インターフェース部を前記第２の通信路によりデータを受信する構成から送信する構成への切り替え、前記第２切替制御手段は、通信方式を全二重通信から半二重通信へと切り替える旨の指示コードを前記第１の通信路を介して受け取ると、前記第２インターフェース部を前記第２の通信路によりデータを送信する構成から受信する構成への切り替え、前記第１送出手段は、前記待ち受けコードを受け取ってから前記所定の時間の経過すると、前記第１通信制御手段による処理対象となるデータの送信の開始に先立って、前記メッセージコードを前記第１の通信路を介して前記第２装置へ送出し、前記第１通信制御手段は、前記第１送出手段による前記メッセージコードを送出した後、半二重通信により処理対象のデータの送信を開始するとしてもよい。
【００２０】
この構成によると、データ通信システムは、フロー制御にてデータ通信を制御する場合、第１装置は第２装置からの待ち受けコードの受信を指示コードの送信の契機としている。通常、フロー制御では、データを送信する場合、相手装置から待ち受けコードを受信し、データ送信の準備が完了した後に、データの送受信が開始される。そこで、待ち受けコードの送受信を指示コードの送受信の契機とすることで、待ち受けコードの送信前に、誤って半二重通信への切替を行ってデータ受信側からの待ち受けコードの送信ができなくなるという事態を防ぐことができる。
【００２１】
ここで、前記データ通信システムは、前記第１装置が前記送信要求コードを送信した場合において、前記第２装置が受信待ちである旨の待ち受けコードを、前記第１装置が前記待ち受けコードの受信に対するメッセージコードを、それぞれ相手側の装置へ送信するフロー制御によるデータ通信を行い、前記第２送出手段は、前記第２切替制御手段による第２インターフェース部を前記第２の通信路によりデータを送信する構成から受信する構成への切り替えに先立って、前記待ち受けコードを前記第２の通信路を介して前記第１装置へ送出し、前記第２切替制御手段は、前記待ち受けコードが送出されると、前記第２インターフェース部を前記第２の通信路によりデータを送信する構成から受信する構成への切り替え、前記第１送出手段は、前記要求受信コードの受け取り後、さらに前記待ち受けコードを前記第２の通信路を介して受け取ると、前記待ち受けコードの受け取りから前記所定の時間が経過すると、前記第１通信制御手段による処理対象となるデータの送信の開始に先立って、前記メッセージコードを前記第１の通信路を介して前記第２装置へ送出し、前記第１通信制御手段は、前記第１送出手段による前記メッセージコードを送出した後、半二重通信により処理対象のデータの送信を開始するとしてもよい。
【００２２】
この構成によると、データ通信システムにおいて、フロー制御にてデータ通信を制御する場合、両装置は、待ち受けコードの送受信を半二重通信への切替の契機としている。通常、フロー制御では、データを送信する場合、相手装置から待ち受けコードを受信し、データ送信の準備が完了した後に、データの送受信が開始される。そこで、待ち受けコードの送受信を半二重通信へ切替の契機とすることで、待ち受けコードの送信前に、誤って半二重通信への切替を行ってデータ受信側からの待ち受けコードの送信ができなくなるという事態を防ぐことができる。
【００２３】
ここで、全二重通信時において、前記第１の通信路は前記第１装置から前記第２装置へデータを送信するよう用いられ、前記第２の通信路は前記第２装置から前記第１装置へデータを送信するよう用いられ、前記第１送出手段は、前記第２装置からデータを受信する旨のコードと半二重通信にてデータ通信を行う旨のコードとを含む受信要求コードを前記第１の通信路を介して前記第２装置へ送出し、前記第２送出手段は、前記受信要求コードを前記第１の通信路を介して受け取ると、当該受信要求コードを受け付けた旨を示す要求受信コードを前記第２の通信路を介して前記第１装置へ送出し、前記第１切替制御手段は、前記要求受信コードを受け取った後、第１インターフェース部を前記第１の通信路によりデータを送信する構成から受信する構成へと切り替え、前記第２切替制御手段は、前記要求受信コードの送出後、第２インターフェース部を前記第１の通信路によりデータを受信する構成から送信する構成へと切り替え、前記第２通信制御手段は、前記要求受信コードを送出してから所定の時間が経過した後、半二重通信により処理対象のデータの送信を開始するとしてもよい。
【００２４】
この構成によると、第１装置及び第２装置は、受信要求コードと要求受信コードとのハンドシェイクが成立すると、半二重通信への切替を開始するので、どちらか一方のみが誤って切替を開始することはない。また、通信方式の切替のタイミングは要求受信コードの送受信後であるため両装置とも同じようなタイミングで切り替えを開始することができ、切り替えられた第１の通信路の利用が同じようなタイミングで可能となる。
【００２５】
ここで、前記データ通信システムは、前記第１装置が前記受信要求コードを送信した場合において、前記第１装置が受信待ちである旨の待ち受けコードを、前記第２装置が前記待ち受けコードの受信に対するメッセージコードを、それぞれ相手側の装置へ送信するフロー制御によるデータ通信を行い、前記第１送出手段は、前記要求受信コードを受け取った後、前記第１切替制御手段による第１インターフェース部を前記第１の通信路によりデータを送信する構成から受信する構成への切り替えに先立って、前記待ち受けコードを前記第１の通信路を介して前記第２装置へ送出し、前記第２送出手段は、前記要求受信コードの送出後、さらに前記待ち受けコードを前記第１の通信路を介して受け取ると、全二重通信から半二重通信への通信方式の切り替える旨の指示コードを前記第２の通信路を介して前記第１装置へ送出し、前記第１切替制御手段は、前記要求受信コードの受け取り後、さらに全二重通信から半二重通信への通信方式の切り替える旨の指示コードを前記第２の通信路を介して受け取ると、第１インターフェース部を前記第１の通信路によりデータを送信する構成から受信する構成へと切り替え、前記第２送出手段は、前記待ち受けコードを受け取ってから前記所定の時間の経過すると、前記第２通信制御手段による処理対象となるデータの送信の開始に先立って、前記メッセージコードを前記第２の通信路を介して前記第１装置へ送出し、前記第２通信制御手段は、前記メッセージコードの送出した後、半二重通信により処理対象のデータの送信を開始するとしてもよい。
【００２６】
この構成によると、データ通信システムは、フロー制御にてデータ通信を制御する場合、第２装置は第１装置からの待ち受けコードの受信を、半二重通信への切り替える旨の指示コードの送信の契機としている。通常、フロー制御では、データを送信する場合、相手装置から待ち受けコードを受信し、データ送信の準備が完了した後に、データの送受信が開始される。そこで、待ち受けコードの送受信を、半二重通信への切り替える旨の指示コードの送受信の契機とすることで、待ち受けコードの送信前に、誤って半二重通信への切替を行ってデータ受信側からの待ち受けコードの送信ができなくなるという事態を防ぐことができる。
【００２７】
ここで、前記データ通信システムは、前記第１装置が前記受信要求コードを送信した場合において、前記第１装置が受信待ちである旨の待ち受けコードを、前記第２装置が前記待ち受けコードの受信に対するメッセージコードを、それぞれ相手側の装置へ送信するフロー制御によるデータ通信を行い、前記第１送出手段は、前記要求受信コードを受け取った後、前記第１切替制御手段による前記第１インターフェース部を前記第１の通信路によりデータを送信する構成から受信する構成への切り替えに先立って、前記待ち受けコードを前記第１の通信路を介して前記第２装置へ送出し、前記第１切替制御手段は、前記待ち受けコードが送出されると、第１インターフェース部を前記第１の通信路によりデータを送信する構成から受信する構成へと切り替え、前記第２送出手段は、前記要求受信コードの送出した後、さらに前記待ち受けコードを前記第１の通信路を介して受け取ると、前記待ち受けコードを受け取ってから前記所定の時間が経過した後、前記第２通信制御手段による処理対象となるデータの送信の開始に先立って、前記メッセージコードを前記第２の通信路を介して前記第１装置へ送出し、前記第２通信制御手段は、前記第２送出手段による前記メッセージコードの送出した後、半二重通信により処理対象となるデータの送信を開始するとしてもよい。
【００２８】
この構成によると、データ通信システムにおいて、フロー制御にてデータ通信を制御する場合、両装置は、待ち受けコードの送受信を半二重通信への切替の契機としている。通常、フロー制御では、データを送信する場合、相手装置から待ち受けコードを受信し、データ送信の準備が完了した後に、データの送受信が開始される。そこで、待ち受けコードの送受信を半二重通信への切替の契機とすることで、待ち受けコードの送信前に、誤って半二重通信への切替を行ってデータ受信側からの待ち受けコードの送信ができなくなるという事態を防ぐことができる。
【００２９】
ここで、全二重通信から半二重通信への切り替えにおける前記所定の時間は、前記第２装置が前記第２切替制御手段により半二重通信から全二重通信への切り替えを開始してから前記第１装置との間で処理すべきデータの送受信を開始する状態となるまでに要した期間であるとしてもよい。
この構成によると、データ通信システムは、所定の時間を、半二重通信から全二重通信への切替に要した時間とすることで、全二重通信から半二重通信への切替に必要な時間を最適なものにすることができる。
【００３０】
ここで、半二重通信で前記第１装置が処理対象となるデータを受信する場合において、前記第２送出手段は、半二重通信から全二重通信への切り替えを示す指示コードを前記第２の通信路を介して前記第１装置へ送出し、前記第２切替制御手段は、第２インターフェース部を前記第１の通信路によりデータを送信する構成から受信する構成へと切り替え、前記第１切替制御手段は、半二重通信から全二重通信への切り替えを示す前記指示コードを前記第１の通信路を介して受け付けると、第１インターフェース部を前記第１の通信路によりデータを受信する構成から送信する構成へと切り替え、前記第１送出手段は、前記第１切替制御手段による切り替えが完了した後、全二重通信への切替完了を示す前記応答コードを前記第１の通信路を介して前記第２装置へ送出し、前記第１通信制御手段は、全二重通信への切替完了を示す前記応答コードを送出した後、全二重通信により処理対象となるデータの送受信を開始し、前記第２通信制御手段は、前記第１装置から全二重通信への切替完了を示す応答コードを前記第２の通信路を介して受け付けると、全二重通信により処理対象となるデータの送受信を開始するとしてもよい。
【００３１】
この構成によると、第１装置及び第２装置は、指示コードと応答コードとによるハンドシェイクが成立するまでの間、通信方式の切替完了とは認識しない。そのため、切替が完了していないにも関わらず誤って処理すべきデータの送受信を開始することはない。また、ハンドシェイクが成立するとデータの送受信を開始するので切替完了から通信開始までの待ち時間が発生することもない。
【００３２】
ここで、前記第１装置が前記指示コードの送出に用いる前記第１の通信路は、当該第１装置が全二重通信時において前記第２装置へデータを送信するために用いる通信路であるとしてもよい。
この構成によると、データ通信システムは、前記第１装置が前記指示コードの送出に用いる前記第１の通信路を、当該第１装置が全二重通信時において前記第２装置へデータを送信するために用いる通信路としている。つまり、全二重通信への切替時に、切り替える必要のない第１の通信路を用いて指示コードを送出しているので、第１装置及び第２装置とも、指示コードの送出に用いられていない第２の通信路を切替の対象として特定することが容易にできる。
【００３３】
また、本発明は、他装置との間で接続された第１及び第２の通信路を用いて全二重通信と半二重通信とを切り替えて処理対象であるデータの送受信を行うデータ通信装置であって、半二重通信時に当該データ通信装置がデータ送信側である場合において、半二重通信から全二重通信への切り替えを示す指示コードを前記第１の通信路を介して前記他装置へ送出する送出手段と、前記第１及び第２の通信路と接続された第１インターフェース部を、前記第２の通信路によりデータを送信する構成から受信する構成へと切り替える切替制御手段と、前記切替制御手段による切り替えが完了し、且つ全二重通信への切替完了を示す応答コードを前記第２の通信路を介して前記他装置から受け付けると、全二重通信により処理対象となるデータの送受信を開始する通信制御手段とを備えることを特徴とする。
【００３４】
この構成によると、データ通信装置は、指示コードを送受信してから応答コードを送受信するまでの間、つまり、指示コードと応答コードとによるハンドシェイクが成立するまでの間、通信方式の切替完了とは認識しない。そのため、切替が完了していないにも関わらず誤って処理すべきデータの送受信を開始することはない。また、ハンドシェイクが成立するとデータの送受信を開始するので切替完了から通信開始までの待ち時間が発生することもない。
【００３５】
ここで、前記切替制御手段は、当該データ通信装置が半二重通信時においてデータ受信側である場合に、前記他装置から半二重通信から全二重通信への切り替えを示す指示コードを前記第２の通信路を介して受け付けると、前記第１インターフェース部を、前記第１の通信路によりデータを受信する構成から送信する構成へと切り替え、前記送出手段は、前記切替制御手段により前記第１インターフェース部において前記第１の通信路によりデータを受信する構成から送信する構成へと切り替えが完了した後、全二重通信への切替完了を示す応答コードを前記第１の通信路を介して前記他装置へ送出し、前記通信制御手段は、全二重通信への切替完了を示す前記応答コードを送出後、全二重通信により処理対象となるデータの送受信を開始するとしてもよい。
【００３６】
この構成によると、データ通信装置は、半二重通信時においてデータの受信側となっている場合においても、指示コードと応答コードとによる他装置とのハンドシェイクが成立するまでの間、通信方式の切替完了とは認識しない。そのため、切替が完了していないにも関わらず誤って処理すべきデータの送受信を開始することはない。また、ハンドシェイクが成立するとデータの送受信を開始するので切替完了から通信開始までの待ち時間が発生することもない。
【００３７】
ここで、前記他装置は、データ通信に用いられる第１端子及び第２端子を備えており、前記データ通信装置は、データ通信に用いられる第３端子及び第４端子を有し、前記他装置と着脱可能であり、前記他装置への装着時に前記第１端子と前記第３端子とが、前記第２端子と前記第４端子とがそれぞれ接続されることで前記第１及び前記第２の通信路を形成するメモリカード又はＩ／Ｏカードであるとしてもよい。
【００３８】
この構成によると、データ通信装置としてメモリカード又はＩ／Ｏカードを用いることができるので、これらカードは、通信方式の切替完了を認識できる状態である場合には、当該完了を認識した上で処理すべきデータの送受信を開始することができる。
【図面の簡単な説明】
【００３９】
【図１】通信システム１０の構成を示すブロック図である。
【図２】通信インタフェース部１０５の構成を示すブロック図である。
【図３】制御レジスタＴ１００のデータ構造の一例を示す図である。
【図４】各種パケットのヘッダ部のデータ構造の一例を示す図である。
【図５】メモリコマンドパケットのデータ構造の一例を示す図である。
【図６】Ｉ／Ｏコマンドパケットのデータ構造の一例を示す図である。
【図７】データパケットのデータ構造の一例を示す図である。
【図８】レスポンスパケットのデータ構造の一例を示す図である。
【図９】メッセージパケットのデータ構造の一例を示す図である。
【図１０】リンクパケットのデータ構造の一例を示す図である。
【図１１】Ｋコード一覧テーブルＴ２００を示す図である。
【図１２】通信インタフェース部１０６の構成を示すブロック図である。
【図１３】通信システム１０における処理の概要を示す流れ図である。
【図１４】（ａ）はマスタ１００側における通信モード通知処理の動作を示す流れ図であり、（ｂ）はスレーブ１０１側における通信モード通知処理の動作を示す流れ図である。
【図１５】全二重通信によるデータ通信について具体例を用いた流れ図である。
【図１６】通信モードの移行・復旧を含む半二重データ通信について具体例を用いた流れ図である。
【図１７】マスタ１００側における通信モード移行処理の動作を示す流れ図である。
【図１８】スレーブ１０１側における通信モード移行処理の動作を示す流れ図である。
【図１９】（ａ）は全二重通信から半二重通信への切り替える場合（マスタ１００がデータの送信側となる場合）、制御コードの送受信の流れを示す図である。（ｂ）は全二重通信から半二重通信への切り替える場合（マスタ１００がデータの受信側となる場合）、制御コードの送受信の流れを示す図である。
【図２０】マスタ１００側における通信モードの復旧処理の動作を示す流れ図である。
【図２１】スレーブ１０１側における通信モードの復旧処理の動作を示す流れ図である。
【図２２】（ａ）はマスタ１００がデータの送信側である半二重通信から全二重通信へと切り替える場合の制御コードの送受信の流れを示す図である。（ｂ）はマスタ１００がデータの受信側である半二重通信から全二重通信へと切り替える場合の制御コードの送受信の流れを示す図である。
【図２３】半二重通信時においてデータ受信側の通信装置からの割込みを通知するための動作を示す図である。
【図２４】通信モードの切替（半二重通信においてマスタが受信側となる場合）と、フロー制御と組み合わせた場合の動作を示す図である。
【図２５】通信モードの切替（半二重通信においてマスタが送信側となる場合）と、フロー制御と組み合わせた場合の動作を示す図である。
【図２６】通信システム１０ａの構成を示すブロック図である。
【図２７】半二重通信から全二重通信への切替を示すコード（ＦＤＸ）と、全二重通信から半二重通信への切替を示すコード（ＨＤＸ）とをＫコードに割り当てた場合のＫコード一覧テーブルＴ２０１の一例を示す図である。
【図２８】方向制御コードの送受信を、切替完了後におけるプリアンブルコードの送受信のトリガーとして用いた場合の制御コードの送受信の流れを示す図である。
【発明を実施するための形態】
【００４０】
１．実施の形態１
以下、本発明に係る通信システム１０について、図面を用いて説明する。
１．１  通信システム１０の構成
図１には、本発明の実施形態１に係る通信システム１０の全体構成を示す。
通信システム１０は、図１にて示すように、マスタ通信装置１００（以下、マスタ）とスレーブ通信装置１０１（以下、スレーブ）とから構成されている。マスタ１００とスレーブ１０１は、シリアル通信網１０２及びクロックライン１１５を介して接続されている。
【００４１】
マスタ１００はイニシエータ１０３と通信インタフェース部（通信Ｉ／Ｆ部）１０５とを備え、スレーブ１０１はターゲット１０４と通信Ｉ／Ｆ部１０６を備える。
マスタ１００及びスレーブ１０１は、通信Ｉ／Ｆ部１０５、１０６を用いてイニシエータ１０３とターゲット１０４との通信を行う。なお、本発明における処理対象のデータの送受信とは、通信インタフェース部１０５、１０６を用いてイニシエータ１０３とターゲット１０４との間で行われる通信（データの送受信）のことをいう。
【００４２】
通信Ｉ／Ｆ部１０５は、トランザクション制御部１０７とリンク制御部１０９と送受信部１１１とを備える。また、通信Ｉ／Ｆ部１０６も同様に、トランザクション制御部１０８とリンク制御部１１０と送受信部１１２とを備える。
トランザクション制御部１０７、１０８は、イニシエータ１０３とターゲット１０４との通信全体（トランザクション層）の制御を行う。
【００４３】
リンク制御部１０９、１１０は、通信する各種パケットの解析や伝送エラーのチェック、あるいは通信路の方向制御やビット同期などデータリンク層の制御を行う。
送受信部１１１、１１２は、トランスミッタ回路やレシーバ回路を含み、シリアル通信網１０２を用いた物理層の処理を行う。
シリアル通信網１０２は、図１にて示すように、第１通信路１１３（以下、ＤＡＴ０ラインともいう。）と第２通信路１１４（以下、ＤＡＴ１ラインともいう。）を含むシリアル通信路からなり、これら通信路を用いて全二重通信及び半二重通信が行われる。
【００４４】
全二重通信時において、ＤＡＴ０ライン１１３はマスタ１００からスレーブ１０１に向けたダウンリンク状態であり、ＤＡＴ１ライン１１４はスレーブ１０１からマスタ１００に向けたアップリンク状態となっている。リンク制御部１０９、１１０の制御によって、ＤＡＴ０ライン１１３及びＤＡＴ１ライン１１４のいずれもダウンリンクやアップリンクとした半二重通信モードとすることもできる。
【００４５】
１．２  マスタ１００について
ここでは、マスタ１００における通信Ｉ／Ｆ部１０５について説明する。
通信Ｉ／Ｆ部１０５は、上述したように、トランザクション制御部１０７とリンク制御部１０９と送受信部１１１とを備える。
以下、各構成要素について詳細に説明する。
【００４６】
（１）トランザクション制御部１０７
トランザクション制御部１０７は、図２にて示すように、デスクリプタ２０２と、パケット生成部２０３と、データを一時蓄積する送信バッファ２０４及び受信バッファ２０５とを備えている。
（１−１）デスクリプタ２０２
デスクリプタ２０２は、制御レジスタＴ１００を含み、当該制御レジスタを用いてイニシエータ１０３からの通信制御を行う。
【００４７】
デスクリプタ２０２に含まれる制御レジスタＴ１００には、例えば、図３に示すように、起動レジスタと、メモリ空間の先頭アドレスや転送サイズを設定するための３種類の設定レジスタとの組が、トランザクション毎に定義されている。ここでは、これらレジスタは４バイトから構成されているものとする。
起動レジスタＴ１０１には、Ｒ／Ｗフラグ３００、通信モードフラグ３０１及び起動フラグ３０２が含まれる。Ｒ／Ｗフラグ３００は、１ビットからなり、データの受信（Ｒｅａｄ）若しくは送信（Ｗｒｉｔｅ）のいずれかを示すものである。通信モードフラグ３０１は、データの送受信を行う通信モードが全二重通信モードか半二重通信モードか、あるいはそれらいずれも可能かを示すものである。起動フラグ３０２は、Ｒ／Ｗフラグ３００及び通信モードフラグ３０１の設定に応じて通信を起動するためのものである。
【００４８】
ここで、イニシエータ１０３から複数の通信（トランザクション）をエントリ可能とするため、図３の例では、２５６組の制御レジスタを備えており、それらトランザクションはＩＤ０からＩＤ２５５までのトランザクションＩＤで識別される。
（１−２）送信バッファ２０４、受信バッファ２０５
送信バッファ２０４はスレーブ１０１へ送信すべきデータを一時蓄積するものであり、受信バッファ２０５はスレーブ１０１から受信したデータを一時蓄積するものである。
【００４９】
（１−３）パケット生成部２０３
パケット生成部２０３は、デスクリプタ２０２の設定や送信バッファ２０４、受信バッファ２０５の状態に応じて、通信開始のトリガーとなるコマンドパケットやデータパケットを生成するものである。
イニシエータ１０３により、制御レジスタＴ１００のうち一のトランザクションＩＤに対応する各レジスタに必要な値が設定され、当該トランザクションＩＤに対応するトランザクションが起動されると、パケット生成部２０３は、送信すべき各種パケットを生成し、リンク制御部２０６に出力する。
【００５０】
以下、パケット生成部２０３にて生成される各種パケットについて説明する。
（１−２−１）共通
先ず、パケット生成部２０３にて生成される各種パケットに共通するデータ構造について、図４を用いて説明する。
各種パケットは、ヘッダ（共通）部４００とアーギュメント部４０１とを少なくとも含んでいる。このうち各種パケットに共有するデータ構造は、ヘッダ（共通）部４００である。
【００５１】
図４（ａ）は、ヘッダ部４００のデータ構造の一例を示す図である。ヘッダ部４００は、パケットの先頭２バイトからなり、デバイスＩＤ４１０、カテゴリ４１１、Ｒ／Ｗ４１２、及びトランザクションＩＤ４１３が含まれる。
デバイスＩＤ４１０は、図示していないが１つのマスタにハブを介して複数のスレーブが接続された場合においてパケットの送信対象となるスレーブを識別するために用いられる識別子である。
【００５２】
カテゴリ４１１はパケットの種別を示すものである。図４（ｂ）にて、パケットの種別を示す。例えば、値“０００”はＩ／Ｏコマンドパケットを、値“００１”はメモリコマンドパケットを、値“０１０”はレスポンスパケットを、値“１１１”はメッセージパケットを、それぞれ示している。なお、ここでは、値“１００”から“１１０”までにはコマンド種別は割り当てられていないものとする。
【００５３】
Ｒ／Ｗ４１２は受信（Ｒｅａｄ）あるいは送信（Ｗｒｉｔｅ）のいずれかを示す。トランザクションＩＤ４１３は上述したようにイニシエータ１０３から起動されたトランザクションを識別するために用いられる。
（１−２−２）メモリコマンドパケット
次に、メモリコマンドパケットのデータ構造について、図５を用いて説明する。
【００５４】
メモリコマンドパケットは、“（１−２−１）共通”及び図５（ａ）にて示すように、ヘッダ部４００とアーギュメント部４０１とから構成されている。
ヘッダ部４００のデータ構造については、“（１−２−１）共通”にて説明しているので、ここでの説明は省略する。なお、ヘッダ部４００のカテゴリには、値“００１”が設定されている。
【００５５】
メモリコマンドパケットのアーギュメント部４０１は、通信モード４２０、アドレス長４２１、アドレス（下位３２ビット）４２３、アドレス（上位３２ビット）４２４及び転送サイズ４２５を含んでいる。
通信モード４２０にはデータ通信時の通信モードが格納されている。図５（ｂ）にて、通信モードの種別を示す。例えば、値“０１”は全二重通信で通信を行うことを示すモードであり、値“１０”は半二重通信で通信を行うことを示すモードであり、値“１１”はどちらの通信でもよい旨を示すモードである。なお、通信モードは、マスタ１００の通信の性能、及び送信若しく受信すべきデータのサイズ等に応じて決定される。
【００５６】
アドレス長４２２には、後続するアドレスフィールドが４バイト（３２ビット）か８バイト（６４ビット）かを識別するため値が格納されている。
アドレス４２３及びアドレス４２４には、送受信対象のデータの先頭アドレスが格納される。具体的には、アドレス長４２２にてアドレスフィールドが４バイトを示す値が格納されている場合には、アドレス４２３のみを用いてデータのアドレスが示される。また、アドレス長４２２にてアドレスフィールドが８バイトを示す値が格納されている場合には、データのアドレスのうち下位３２ビットがアドレス４２３にて示され、上位３２ビットがアドレス４２４にて示される。
【００５７】
転送サイズ４２５には、送受信対象のデータのサイズが格納される。
（１−２−３）Ｉ／Ｏコマンドパケット
次に、Ｉ／Ｏコマンドパケットについて説明する。
Ｉ／Ｏコマンドパケットは、マスタ１００とスレーブ１０１との間で、デスクリプタ２０２内の制御レジスタあるいはイニシエータ１０３やターゲット１０４内の制御レジスタなどがマッピングされた、Ｉ／Ｏ空間の通信を行うために用いられる。
【００５８】
Ｉ／Ｏコマンドパケットには、“（１−２−１）共通”“及び図６にて示すように、ヘッダ部４００とアーギュメント部４０１とに加えて、データペイロード４０２が含まれる。
ヘッダ部４００のデータ構造については、“（１−２−１）共通”にて説明しているので、ここでの説明は省略する。なお、ヘッダ部４００のカテゴリには、値“０００”が設定されている。
【００５９】
アーギュメント部４０１は、Ｉ/Ｏ空間に応じたアドレス長を示すＩ／Ｏアドレス４３１を含んでいる。
データペイロード４０２は、データの送信時であれば実際の通信内容であるＩ／Ｏデータ４３２を含んでいる。
通常、Ｉ／Ｏデータ４３２は、一般に制御レジスタの内容など、短い固定長のデータであることが多いので、本実施の形態では、Ｉ／Ｏコマンドパケットの送受信は、常に全二重通信モードで通信を行うこととする。
【００６０】
（１−２−４）データパケット
次に、データパケットについて説明する。
図７は、データパケットのデータ構造の一例を示す図である。
データパケットは、図７にて示すように、Ｉ／Ｏコマンドパケットと同様、ヘッダ部４００とアーギュメント部４０１とデータペイロード４０２とから構成されている。
【００６１】
データパケットは、メモリコマンドパケットにて設定した転送サイズのデータをマスタ１００とスレーブ１０１との間で送受信するためのものである。具体的には、メモリコマンドパケットにて設定した転送サイズのデータは、予めマスタとスレーブとの間でＩ／Ｏコマンドなどで事前共有したブロックサイズ（ＢＬＫ）毎に、１つ以上のデータブロックに分割（パケット化）される。そして、分割したデータブロック毎にデータパケットが生成される。
【００６２】
ヘッダ部４００のデータ構造については、“（１−２−１）共通”にて説明しているので、ここでの説明は省略する。なお、ヘッダ部４００のカテゴリには、値“０１１”が設定されている。
アーギュメント部４０１は、分割されたデータブロックの番号を示すシーケンスＩＤ４４０を含んでいる。これにより、データの受信側は、受け取ったデータブロックが何番目のものであるかを知ることができる。
【００６３】
データペイロード４０２は、シーケンスＩＤ４４０にて示されるデータブロックの番号に対応する、分割されたデータブロック４４１を含んでいる。
（１−２−５）レスポンスパケット
次に、レスポンスパケットについて説明する。
レスポンスパケットは、マスタ１００が発行したパケットに対する応答として、スレーブ１０１のトランザクション制御部１０８で生成および発行されるパケットである。
【００６４】
図８は、レスポンスパケットのデータ構造の一例を示す図である。
レスポンスパケットは、図８にて示すように、Ｉ／Ｏコマンドパケットと同様、ヘッダ部４００とアーギュメント部４０１とデータペイロード４０２とから構成されている。
ヘッダ部４００のデータ構造については、“（１−２−１）共通”にて説明しているので、ここでの説明は省略する。なお、ヘッダ部４００のカテゴリには、値“０１０”が設定されている。
【００６５】
アーギュメント部４０１は、コマンドパケット同様の通信モード４５０、ＡＣＫビット４５２、エラーコード４５３を含んでいる。ＡＣＫビット４５２は、コマンドパケットを正しく受け付けて応答可能（ＡＣＫ）か、アドレスエラーや転送サイズエラーなどのエラーがあって応答不能（ＮＡＫ）かを示すものである。エラーコード４５３は、ＡＣＫビット４５２に“ＮＡＫ”を示す値が設定される場合に、そのエラーの種別を示すものである。
【００６６】
データペイロード４０２には、Ｉ／Ｏコマンドパケットを受信した場合に対する応答においては、Ｉ／Ｏデータ４５４が付加される。
（１−２−６）メッセージパケット
最後に、メッセージパケットについて説明する。
メッセージパケットは、シリアル通信網１０２を用いて割込み等のサイドバンド信号を通信するためのパケットである。
【００６７】
図９は、メッセージパケットのデータ構造の一例を示す図である。
レスポンスパケットは、図９（ａ）にて示すように、ヘッダ部４００とアーギュメント部４０１とから構成されている。
ヘッダ部４００のデータ構造については、ここでの説明は省略する。なお、ヘッダ部４００のカテゴリには、値“１１１”が設定されている。
【００６８】
アーギュメント部４０１は、メッセージカテゴリ４６０、ＲＥＱ／ＡＣＫビット４６２、及びメッセージの詳細を示すメッセージインデックス４６３を含んでいる、
メッセージカテゴリ４６０は、メッセージの種別を示すものである。図９（ｂ）にてメッセージの種別を示す。例えば、値“００００”は割込みアサートを、値“０００１”は割込みネゲートを、値“００１０”はＣＲＣエラーを、値“００１１”はアボートを、値“１１１０”は電力制御を、値“１１１１”はリセットを、それぞれ示している。なお、ここでは、値“０１００”から“１１０１”までにはメッセージ種別は割り当てられていないものとする。
【００６９】
ＲＥＱ／ＡＣＫビット４６２は、メッセージのリクエスト（ＲＥＱ）か、メッセージに対するアクノリッジ（ＡＣＫ）かを示すものである。
ここで、割込みアサートは割込みを通知するものであり、割込みネゲートはその割込み要因が取り除かれたことを示すものである。ＣＲＣエラーは、伝送エラーが発生したことを示すものであり、アボートは転送中止を示すものである。電力制御はアイドル状態の消費電力の削減を指示するためのものであり、リセットは初期化を指示するものである。
【００７０】
また、割込みアサート及び割込みネゲートの場合におけるメッセージインデックスは、Ｉ／Ｏ空間にマッピングされた割込み要因レジスタの番号を示す。ＣＲＣエラーの場合には、エラーがあったデータパケットのシーケンスＩＤを示す。アボートの場合には、アボート前に転送完了したデータパケットのシーケンスＩＤを示す。電力制御の場合には、電力制御対象が送受信部１１１、１１２やリンク制御部１０９、１１０であるか、あるいはトランザクション制御部１０７、１０８についても含むかを示す。
【００７１】
（２）  リンク制御部１０９
リンク制御部１０９は、図２にて示すように、リンクパケット生成・解析部２０７、方向制御部２０８、同期制御部２０９及びＩ／Ｆ部２１０から構成されている。
（２−１）リンクパケット生成・解析部２０７
リンクパケット生成・解析部２０７は、トランザクション制御部１０７のパケット生成部２０３にて生成された各種パケットについてのＣＲＣ演算を行う。
【００７２】
そして、リンクパケット生成・解析部２０７は、ＣＲＣ演算を行ったパケットの末尾にフッタ部としてＣＲＣコードを付与して、リンクパケットを生成し、生成したリンクパケットを送受信部１１１へ出力する。
図１０は、パケットサイズ“ＰＫＴ”であるパケットの末尾にフッタ部が付与されたリンクパケットのデータ構造の一例を示す図である。
【００７３】
リンクパケットは、ヘッダ部４００、パケット部４０５及びフッタ部４０６から構成されている。
ヘッダ部４００は、上述しているので、ここでの説明は省略する。
パケット部４０５は、上述したアーギュメント部４０１を含むものである、若しくはアーギュメント部４０１とデータペイロード４０２とを含むものであるので、ここでの説明は省略する。
【００７４】
フッタ部４０６は、ＣＲＣコード（例えば、１６ビット）を含んでいる。
また、リンクパケット生成・解析部２０７は、送受信部１１１から入力されたリンクパケットに対して、そのリンクパケットに含まれるＣＲＣコードを用いて伝送エラーチェックを行う。その後、リンクパケット生成・解析部２０７は、ＣＲＣコードなどを取り除いて必要な部分のみトランザクション制御部１０７に出力する。
【００７５】
（２−２）方向制御部２０８
方向制御部２０８は、全二重通信モードと半二重通信モードとの通信方式の切り替えに伴う通信路の方向制御を行う。
具体的には、当該マスタ１００を処理すべきデータの受信側として、全二重通信から半二重通信への切り替えに伴う方向制御を行う場合には、方向制御部２０８は、ＤＡＴ０ライン１１３とＤＡＴ１ライン１１４に接続する通信路Ｉ／Ｆ部２５０において、ＤＡＴ０ライン１１３とＤＡＴ１ライン１１４との双方からデータを受信するよう通信路Ｉ／Ｆ部２５０の構成を変更する。また、当該マスタ１００を処理すべき送信側として、全二重通信から半二重通信への切り替えに伴う方向制御を行う場合には、方向制御部２０８は、通信路Ｉ／Ｆ部２５０において、ＤＡＴ０ライン１１３とＤＡＴ１ライン１１４との双方からデータを送信するよう通信路Ｉ／Ｆ部２５０の構成を変更する。半二重通信から全二重通信への切り替えに伴う方向制御を行う場合には、方向制御部２０８は、通信路Ｉ／Ｆ部２５０において、ＤＡＴ０ライン１１３からデータを送信し、ＤＡＴ１ライン１１４からデータを受信するよう通信路Ｉ／Ｆ部２５０の構成を変更する。
【００７６】
なお、通信路Ｉ／Ｆ部２５０については後述する。
（２−３）同期制御部２０９
同期制御部２０９は、初期化直後にビット同期やシンボル同期のための同期コード（プリアンブル）生成を行う。
（２−４）Ｉ／Ｆ部２１０
Ｉ／Ｆ部２１０は、リンク制御部１０９と送受信部１１１との間のデータの入出力を行うものである。
【００７７】
（３）送受信部１１１
送受信部１１１は、データ入出力制御部２１３、クロック生成部２１４、ＣＤＲ（Ｃｌｏｃｋ  Ｄａｔａ  Ｒｅｃｏｖｅｒｙ）回路２１５、Ｉ／Ｆ部２１２及び通信路Ｉ／Ｆ部２５０から構成されている。
（３−１）クロック生成部２１４、ＣＤＲ回路２１５
クロック生成部２１４は、基準クロックを生成する。
【００７８】
ＣＤＲ回路２１５は、シリアル通信路のデータに埋め込まれた高速クロックを、基準クロックとの位相合わせを行って抽出する。
（３−２）通信路Ｉ／Ｆ部２５０
通信路Ｉ／Ｆ部２５０は、差動トランスミッタ２１６、２１７、２１９、差動レシーバ２１８、２２０を有している。
【００７９】
各差動トランスミッタは、シリアル信号を差動信号に変換して、送信するものである。
差動トランスミッタ２１６は、基準クロックをクロックライン１１５で送信する。
差動トランスミッタ２１７はシリアルデータをＤＡＴ０ライン１１３を用いて送信し、差動トランスミッタ２１９はシリアルデータをＤＡＴ１ライン１１４で送信する。
各差動レシーバは、受信した差動信号をシリアル信号に変換するものである。
【００８０】
差動レシーバ２１８はシリアルデータをＤＡＴ０ライン１１３を用いて受信し、差動レシーバ２２０はシリアルデータをＤＡＴ１ライン１１４を用いて受信する。
具体的には、全二重通信時には、差動トランスミッタ２１７と、差動レシーバ２２０とがそれぞれＤＡＴ０ライン１１３及びＤＡＴ１ライン１１４に接続されて、有効に動作している。この場合において、当該マスタ１００がデータを送信する側として、全二重通信から半二重通信へと切り替わる場合には、方向制御部２０８の制御により、ＤＡＴ１ライン１１４との接続先が差動レシーバ２２０から差動トランスミッタ２１９へと切り替えられることで、通信の方向が制御される。また、当該マスタ１００がデータを受信する側として、全二重通信から半二重通信へと切り替わる場合には、方向制御部２０８の制御により、ＤＡＴ０ライン１１３との接続先が差動トランスミッタ２１７から差動レシーバ２１８へと切り替えられることで、通信の方向が制御される。
【００８１】
ここで、差動トランスミッタから差動レシーバへの切り替え、及び差動レシーバから差動トランスミッタへの切り替えの具体例について説明する。
差動トランスミッタ２１７と差動レシーバ２１８とは、第１スイッチ回路（図示せず）を介して、電力を供給する電源部と接続されている。第１スイッチ回路は、方向制御部２０８の制御により差動トランスミッタ２１７と差動レシーバ２１８の何れかと接続されるものである。方向制御部２０８は、ＤＡＴ０ライン１１３を用いてデータをスレーブ１０１へ送信する場合には第１スイッチ回路を差動トランスミッタ２１７と接続するよう制御し、ＤＡＴ０ライン１１３を用いてデータをスレーブ１０１から受信する場合には第１スイッチ回路を差動レシーバ２１８と接続するよう制御する。
【００８２】
差動トランスミッタ２１９と差動レシーバ２２０とは、第２スイッチ回路（図示せず）を介して、電源部と接続されている。第２スイッチ回路は、方向制御部２０８の制御により差動トランスミッタ２１９と差動レシーバ２２０の何れかと接続されるものである。方向制御部２０８は、ＤＡＴ１ライン１１４を用いてデータをスレーブ１０１へ送信する場合には第２スイッチ回路を差動トランスミッタ２１９と接続するよう制御し、ＤＡＴ１ライン１１４を用いてデータをスレーブ１０１から受信する場合には第２スイッチ回路を差動レシーバ２２０と接続するよう制御する。
【００８３】
これにより、第１スイッチ回路と接続された差動トランスミッタ２１７若しくは差動レシーバ２１８は電力が供給されるので、利用できる有効な状態となり、接続されていない他方は無効な状態となる。
また、同様に、第２スイッチ回路と接続された差動トランスミッタ２１９若しくは差動レシーバ２２０は電力が供給されるので、利用できる有効な状態となり、接続されていない他方は無効な状態となる。
【００８４】
なお、以降において、差動レシーバ及び差動トランスミッタの有効な状態とは電力が供給された状態のことをいい、無効な状態とは電力が供給されていない状態のことをいう。
（３−３）データ入出力制御部２１３
データ入出力制御部２１３は、符号化部２２４、復号化部２２５、パラレル／シリアル変換部（Ｐ／Ｓ変換部）２２６及びシリアル／パラレル変換部（Ｓ／Ｐ変換部）２２７から構成されている。
【００８５】
（３−３−１）符号化部２２４、復号化部２２５
符号化部２２４は、シリアルデータに高速クロックを埋め込んで伝送するための８ｂ／１０ｂのようなエンコード方式でデータを符号化するものである。
復号化部２２５は、８ｂ／１０ｂのようなエンコード方式で符号化されたデータを復号化するものである。
【００８６】
通常、８ｂ／１０ｂ方式には、符号化の冗長性を活かした制御コード（Ｋコード）が定義されている。そこで、本実施の形態においては、符号化部２２４にはリンク制御部２０６からの指示によりＫコードを生成するコード生成部２２８を、復号化部２２５には復号化したパラレルデータからＫコードを検出するコード検出部２２９をそれぞれ含むものとする。
【００８７】
ここで、本実施形態におけるＫコードの機能割当ての一例を図１１に示す。
Ｋコード一覧テーブルＴ２００は、Ｋコード、シンボル、機能、元データ、Ｃｕｒｒｅｎｔ  ＲＤ−及びＣｕｒｒｅｎｔ  ＲＤ＋からなる組を１つ以上含んでいる。
Ｋコードはコードを示すものであり、シンボルは対応するＫコードが示す機能を識別するものである。機能は対応するＫコードが示す機能を示すものであり、元データはリンク制御部２０６にてなされた指示を示すデータである。この元データとＫコードとが対応している。Ｃｕｒｒｅｎｔ  ＲＤ−及びＣｕｒｒｅｎｔ  ＲＤ＋は、０が多いコードと１が多いコードが交互に伝送されて信号のＤＣ（直流）成分のバランスをとるようにするために用いるコード属性である。
【００８８】
リンク制御部２０６が、図１１に示す元データを送受信部１１１へ送信すると同時にＫコードへの変換を指示することで、符号化部２２４のコード生成部２２８は、Ｋコード一覧テーブルＴ２００の内容に基づいて、受信した元データに対応するＫコードを生成する。符号化部２２４は、生成したＫコードに対応するＣｕｒｒｅｎｔ  ＲＤ−及びＣｕｒｒｅｎｔ  ＲＤ＋を交互に送信する。
【００８９】
また、コード検出部２２９は、復号したパラレルデータに含まれるＣｕｒｒｅｎｔ  ＲＤ−及びＣｕｒｒｅｎｔ  ＲＤ＋に基づいてＫコードを検出し、検出したＫコードに対応する機能を特定する。
図１１に示す各種制御コードの使用方法は、後述する本実施形態の動作において説明する。
【００９０】
（３−３−２）Ｐ／Ｓ変換部２２６、Ｓ／Ｐ変換部２２７
Ｐ／Ｓ変換部２２６は、符号化されたデータをパラレルデータからシリアルデータに変換するものである。変換したシリアルデータは、通信路Ｉ／Ｆ部２５０を介してスレーブ１０１へ送信される。
Ｓ／Ｐ変換部２２７は、通信路Ｉ／Ｆ部２５０を介してスレーブ１０１から受け取ったシリアルデータをパラレルの符号化されたデータへと変換するものである。
【００９１】
（３−４）Ｉ／Ｆ部２１２
Ｉ／Ｆ部２１２は、リンク制御部１０９と送受信部１１１との間のデータの入出力を行うものである。
１．３  スレーブ１０１について
ここでは、スレーブ１０１における通信Ｉ／Ｆ部１０６について説明する。
【００９２】
通信Ｉ／Ｆ部１０６は、図１２に示すように、マスタ１００の通信Ｉ／Ｆ部１０５と同様に、トランザクション制御部１０８とリンク制御部１１０と送受信部１１２とを備える。
以下、各構成要素について詳細に説明する。
トランザクション制御部１０８は、図１２に示すように、デスクリプタ１１０２、パケット生成部１１０３、送信バッファ１１０４及び受信バッファ１１０５から構成されている。これら構成要素は、マスタ１００のトランザクション制御部１０７にて示す各構成要素と同様であるので、ここでの説明は省略する。
【００９３】
リンク制御部１１０は、図１２に示すように、リンクパケット生成・解析部１１０７、方向制御部１１０８、同期制御部１１０９及びＩ／Ｆ部１１１０から構成されている。これら構成要素は、マスタ１００のリンク制御部１０９にて示す各構成要素と同様であるので、ここでの説明は省略する。
送受信部１１２は、データ入出力制御部１１１３、ＣＤＲ回路１１１４、Ｉ／Ｆ部１１１２及び通信路Ｉ／Ｆ部１１５０から構成されている。
【００９４】
データ入出力制御部１１１３、ＣＤＲ回路１１１４及びＩ／Ｆ部１１１２のそれぞれは、マスタ１００が有するデータ入出力制御部２１３、ＣＤＲ回路２１５及びＩ／Ｆ部２１２のそれぞれと同様であるので、ここでの説明は省略する。
ここでは、通信路Ｉ／Ｆ部１１５０の構成について説明する。
通信路Ｉ／Ｆ部１１５０は、差動レシーバ１１１５、差動トランスミッタ１１１６、１１１８、差動レシーバ１１１７、１１１９を有している。
【００９５】
差動レシーバ１１１５は、マスタ１００から送信された基準クロックをクロックライン１１５を介して受信する。
差動トランスミッタ１１１６はシリアルデータをＤＡＴ０ライン１１３を用いて送信し、差動トランスミッタ１１１８はシリアルデータをＤＡＴ１ライン１１４で送信する。
差動レシーバ１１１７はシリアルデータをＤＡＴ０ライン１１３を用いて受信し、差動レシーバ１１１９はシリアルデータをＤＡＴ１ライン１１４を用いて受信する。
【００９６】
具体的には、全二重通信時には、差動レシーバ１１１７と、差動トランスミッタ１１１８とがそれぞれＤＡＴ０ライン１１３及びＤＡＴ１ライン１１４に接続されて、有効に動作している。この場合において、マスタ１００がデータを送信する側（つまり、当該スレーブ１０１がデータの受信側）として、全二重通信から半二重通信へと切り替わる場合には、方向制御部１１０８の制御により、ＤＡＴ１ライン１１４との接続先が差動トランスミッタ１１１８から差動レシーバ１１１９へと切り替えられることで、通信の方向が制御される。また、マスタ１００がデータを受信する側（つまり、当該スレーブ１０１がデータを送信する側）として、全二重通信から半二重通信へと切り替わる場合には、方向制御部１１０８の制御により、ＤＡＴ０ライン１１３との接続先が差動レシーバ１１１７から差動トランスミッタ１１１６へと切り替えられることで、通信の方向が制御される。
【００９７】
なお、差動レシーバと差動トランスミッタとの切り替えについては、通信路Ｉ／Ｆ部２５０にて説明したように、電源部（図示せず）からの電力の供給の有無により実現できるので、ここでの説明は省略する。
スレーブ１０１が上記のような構成要素を備え、例えばターゲット１０４がメモリデバイスとすることで、以下のような動作を行うことができる。トランザクション制御部１０８は、マスタ１００から受信したコマンドパケットからアドレスや転送サイズを抽出してデスクリプタ１１０２に登録する。そして、デスクリプタ１１０２は、送信バッファ１１０４及び受信バッファ１１０５を用いてターゲットであるメモリデバイスのアクセス準備を行う。デスクリプタ１１０２による準備ができると、パケット生成部１１０３はレスポンスパケットを生成し、マスタ１００に送信し、必要があれば通信方式を切り替え、その後、データ通信を開始することになる。
【００９８】
１．４  動作
（１）通信システム１０の動作
ここでは、通信システム１０における全体の動作について、図１３にて示す流れ図を用いて説明する。
まず、通信システム１０は、マスタ１００とスレーブ１０１との間でＩ／Ｏコマンドを送受信することでデータパケットのブロックサイズなどの制御情報を共有する、通信初期化を行う（ステップＳ５）。このとき、通信システム１０は、シリアル通信網１０２の内、ＤＡＴ０ライン１１３をマスタ１００からスレーブ１０１に向けたダウンリンク、ＤＡＴ１ライン１１４をスレーブ１０１からマスタ１００に向けたアップリンクとして全二重通信モードで通信可能な状態とする。
【００９９】
次に、マスタ１００はＤＡＴ０ライン１１３を用いてコマンドパケットを送信することで、通信要求を行う（ステップＳ１０）。スレーブ１０１は、マスタ１００からＤＡＴ０ライン１１３を用いてコマンドパケットを受信すると、ＤＡＴ１ライン１１４を用いてレスポンスパケットを送信することで、通信応答を行う（ステップＳ１５）。このようにして、マスタ１００とスレーブ１０１との間でコマンドパケットとレスポンスパケットのハンドシェイクが成立する。ここで、マスタ１００及びスレーブ１０１それぞれは、送信すべきパケットをパケット生成部２０３（１１０３）及びリンクパケット生成・解析部２０７（１１０７）にて生成し、生成したパケットをデータ入出力制御部２１３（１１１３）にて符号化して相手装置へ送信する。以降において、パケットの送信時には、このような動作が行われるものとする。また、マスタ１００及びスレーブ１０１それぞれは、相手装置から各種パケットを受信すると、リンクパケット生成・解析部２０７（１１０７）にて伝送エラーチェックが行われ、その後、ＣＲＣコードなどを取り除いて必要な部分のみトランザクション制御部１０７（１０８）に出力する。トランザクション制御部１０７（１０８）にて受信したパケットの内容を解析し、その結果に基づく処理を行う。以降において、パケットの受信時には、このような動作が行われるものとする。
【０１００】
マスタ１００は、データ通信を全二重通信モードで行うか、半二重通信モードに移行してから行うかを確定し、その結果をスレーブ１０１へ通知する（ステップＳ２０）。具体的には、通信モードの確定は、図５および図８にそれぞれ示すコマンドパケットとレスポンスパケットおけるアーギュメント部に含む通信モードフィールドに基づいて行われる。例えば、マスタ１００が発行するコマンドパケットの通信モードフィールドが全二重通信モードか半二重通信モードであればその通信モードで確定する。任意モードであればスレーブ１０１が発行するレスポンスパケットの通信モードフィールドに従って通信モードを確定する。そして、マスタ１００は、確定した通信モードが半二重通信である場合には図１１に示す制御コードの内、方向制御コード（ＤＩＲ）を通知し、全二重通信である場合にはアイドルコード（ＩＤＬ）を通知する。なお、本実施の形態においては、コマンドパケットとレスポンスパケットの双方に通信モードフィールドを含んでいるので、それらの示す通信モードに相違が発生することが考えられる。このため、マスタ１００は最終的に確定した通信モードをスレーブ１０１に通知する必要がある。しかしながら、本実施の形態のように、マスタ１００は、通信モードの切替が必要な場合には方向制御コードを送信し、必要ない場合にはアイドルコードを送信することで、スレーブ１０１は、通信モードの相違の有無に関わらず、受信した制御コード（ＤＩＲ若しくはＩＤＬ）にて切替が必要であるか否かを判断することができる。
【０１０１】
通信モードとして全二重通信が選定されると（ステップＳ２０における「全二重」）、通信システム１０は、全二重通信によるデータ通信を行う（ステップＳ２５）。その後、処理対象となるデータの通信が終了したか否かを判断する（ステップＳ４５）。終了していないと判断する場合（ステップＳ４５における「Ｎｏ」）、処理はステップＳ１０へ戻る。終了したと判断する場合（ステップＳ４５における「Ｙｅｓ」）、処理は終了する。
【０１０２】
通信モードとして半二重通信が選定されると（ステップＳ２０における「半二重」）、マスタ１００及びスレーブ１０１は、通信モードを全二重通信から半二重通信へと切り替える（移行する）処理を行う（ステップＳ３０）。全二重通信から半二重通信への切り替えが完了すると、半二重通信によるデータ通信を行う（ステップＳ３５）。通信システム１０は、ステップＳ３５にて送信対象のデータが送信されると、通信モードの復旧処理、つまり通信モードを半二重通信から全二重通信へと切り替える処理を行う（ステップＳ４０）。その後、ステップＳ４５が実行される。
【０１０３】
（２）通信モードの通知処理
ここでは、図１３にて示すステップＳ２０にて行われる通信モード通知の処理の手順をマスタ１００側、スレーブ１０１側に分けて図１４（ａ）及び（ｂ）にて示す流れ図を用いて説明する。
図１４（ａ）は、マスタ１００側における処理の流れを示す流れ図である。
【０１０４】
マスタ１００は、確定した通信モードは半二重通信であるか否かを判断する（ステップＳ１００）。
半二重通信であると判断する場合には（ステップＳ１００のおける「Ｙｅｓ」）、マスタ１００は、方向制御コード（ＤＩＲ）をＤＡＴ０ライン１１３を用いてスレーブ１０１へ送信する（ステップＳ１０５）。その後、アクノリッジコード（ＡＣＫ）を受信したか否かを判断する（ステップＳ１１０）。受信したと判断する場合には（ステップＳ１１０における「Ｙｅｓ」）、マスタ１００は、アイドルコード（ＩＤＬ）をＤＡＴ０ライン１１３を用いてスレーブ１０１へ送信する（ステップＳ１１５）。アクノリッジコードを受信していないと判断する場合には（ステップＳ１１０における「Ｎｏ」）、マスタ１００は、アクノリッジコードを受信するまでの間、方向制御コードの送信を継続する。ここで、マスタ１００及びスレーブ１０１は、方向制御コードやアクノリッジコードなどのＫコードの送信時には、コード生成部２２８（１１２７）にて送信すべきＫコードを生成し、符号化部２２４（１１２４）が符号化して相手装置へ送信する。またマスタ１００及びスレーブ１０１は、Ｋコードの受信時には、コード検出部２２９（１１２８）にてＫコードを検出する。以降において、Ｋコードの送信及び受信時には、このような動作が行われる。
【０１０５】
半二重通信でないと判断する場合には（ステップＳ１００のおける「Ｎｏ」）、マスタ１００は、アイドルコードをＤＡＴ０ライン１１３を用いてスレーブ１０１へ送信する（ステップＳ１１５）。
図１４（ｂ）は、スレーブ１０１側における処理の流れを示す流れ図である。
スレーブ１０１は、制御コードを受信したか否かを判断する（ステップＳ１５０）。
【０１０６】
受信していないと判断する場合には（ステップＳ１５０における「Ｎｏ」）、スレーブ１０１は、制御コードを受信するまでステップＳ１５０の判断を行う。
受信したと判断する場合には（ステップＳ１５０における「Ｙｅｓ」）、スレーブ１０１は、受信した制御コードの種別を判定する（ステップＳ１５５）。
受け取った制御コードが方向制御コード（ＤＩＲ）である場合には（ステップＳ１５５における「ＤＩＲ」）、スレーブ１０１は、アクノリッジコードをマスタ１００へ送信する（ステップＳ１６０）。その後、アイドルコードを受信したか否かを判断する（ステップＳ１６５）。
【０１０７】
受信したと判断する場合には（ステップＳ１６５における「Ｙｅｓ」）、スレーブ１０１は、処理を終了する。アイドルコードを受信していないと判断する場合には（ステップＳ１６５における「Ｎｏ」）、スレーブ１０１は、アイドルコードを受信するまでの間、アクノリッジコードの送信を継続する。
ステップＳ１５０にて受け取った制御コードがアイドルコード（ＩＤＬ）である場合には（ステップＳ１５５における「ＩＤＬ」）、スレーブ１０１は、処理を終了する。
【０１０８】
このような手順により、切り替えの指示をリンク層の制御コード（方向制御コード、アクノリッジコード）によるハンドシェイクで確実に通知することができる。
（全二重通信によるデータ通信）
ここで、全二重通信によるデータ通信について具体例を用いて説明する。
全二重通信によるデータ通信は、図１５に示すように、マスタ１００とスレーブ１０１との間は、ダウンリンク状態のＤＡＴ０ライン１１３とアップリンク状態のＤＡＴ１ライン１１４とで接続されている。
【０１０９】
マスタ１００から通信モードを全二重通信モードとする送信コマンドパケットがスレーブ１０１へ送信され（ステップＳ２００）、スレーブ１０１は受信準備ができるとレスポンスパケットで応答する（ステップＳ２０５）。
レスポンスパケットを受けたマスタ１００は、ダウンリンク状態のＤＡＴ０ライン１１３のみを用いてデータパケット（ＷＤＡＴ  ＰＫＴ  ０、１）の送信を行う（ステップＳ２１０、Ｓ２１５）。例えば、ステップＳ５における通信初期化にて共有したデータパケットのブロックサイズを５１２バイトとし、送信コマンドパケットで指定した転送サイズを１Ｋバイトとすると、２個の送信データパケットが送信される。
【０１１０】
同様に、マスタ１００は通信モードを全二重通信モードとする受信コマンドパケットをスレーブ１０１へ送信する（ステップＳ２２０）。スレーブ１０１は、送信準備ができるとレスポンスパケットで応答する（ステップＳ２２５）。そして、マスタ１００はアップリンク状態のＤＡＴ１ライン１１４のみを用いてデータパケット（ＲＤＡＴ  ＰＫＴ  ０、１）を受信する（ステップＳ２３０、Ｓ２３５）。
【０１１１】
（半二重通信によるデータ通信）
次に、図１３にて示すステップＳ２０において通信モードとして半二重通信が選定されると、まず、全二重通信モードから半二重通信モードに移行するためにステップＳ３０が実行され、その後、ステップＳ３５にて半二重通信でのデータ通信が行われる。それが完了すると、ステップＳ４０にて通信モードの復旧が行われる。このような通信モードの移行・復旧を含む半二重データ通信についての具体例を図１６を用いて説明する。
【０１１２】
まず、マスタ１００は、通信モードフィールドを半二重通信モードあるいは任意モードとした送信コマンドパケットをスレーブ１０１へ送信する（ステップＳ２５０）。スレーブ１０１は、半二重通信モードでの受信準備ができると通信モードフィールドを半二重通信モードとしたレスポンスパケットで応答する（ステップＳ２５５）。
そして、マスタ１００及びスレーブ１０１は、方向制御コード（ＤＩＲ）とアクノリッジコード（ＡＣＫ）とのハンドシェイクにより、全二重通信から半二重通信への切り替えを行う（ステップＳ２６０）。この場合、アップリンク状態のＤＡＴ１ライン１１４がダウンリンク状態となるよう切り替えられる。
【０１１３】
切り替えが完了すると、マスタ１００は、ダウンリンク状態の２つの通信路を用い、データパケット（ＷＤＡＴ  ＰＫＴ  ０、１）の半二重送信を行う（ステップＳ２６５からＳ２８０）。マスタ１００は、例えば、ＤＡＴ０ライン１１３を用いて偶数バイトを、ＤＡＴ１ライン１１４を用いて奇数バイトをそれぞれ送信する。
ステップＳ２５０にて送信された送信コマンドパケットに指定された転送サイズの送信を完了すると、マスタ１００及びスレーブ１０１は、再び全二重通信モードに復旧するため、ダウンリンク状態のＤＡＴ１ライン１１４をアップリンク状態に切り替える（ステップＳ２８５）。
【０１１４】
半二重通信によるマスタ１００側がデータを受信する場合も同様に、コマンドパケットの送受信とレスポンスパケットの送受信とによるハンドシェイクが行われる（ステップＳ２９０、Ｓ２９５）。
そして、マスタ１００及びスレーブ１０１は、方向制御コード（ＤＩＲ）とアクノリッジコード（ＡＣＫ）とのハンドシェイクにより、全二重通信から半二重通信への切り替えを行う（ステップＳ３００）。この場合、ダウンリンク状態のＤＡＴ０ライン１１３がアップリンク状態となるように切り替えられる。
【０１１５】
そして、マスタ１００は、半二重通信によるデータパケット（ＲＤＡＴ  ＰＫＴ  ０、１）を受信する（ステップＳ３０５からＳ３２０）。その後、再び全二重通信モードに復旧するためアップリンク状態のＤＡＴ０ライン１１３はダウンリンク状態となるよう切り替えられる（ステップＳ３２５）。
（３）通信モードの移行処理
ここでは、図１３にて示すステップＳ３０にて行われる通信モードの移行処理について、マスタ１００側及びスレーブ１０１側に分けて、図１７、図１８を用いて説明する。
【０１１６】
（マスタ１００側の動作）
図１７は、マスタ１００側における処理の流れを示す流れ図である。
マスタ１００は、通信モードの通知（通信モードが半二重通信である旨）を完了すると、自装置がデータを送信するか受信するかを判断する（ステップＳ３５０）。具体的には、マスタ１００の方向制御部２０８は、送信したコマンドパケットに含まれるＲ／Ｗ４１２（図４参照）が示す種別に基づいて判断する。
【０１１７】
自装置がデータを送信すると判断する場合、つまりコマンドパケットに含まれるＲ／Ｗ４１２が書き込みを示す場合（ステップＳ３５０における「送信」）、マスタ１００の方向制御部２０８は、ＤＡＴ１ライン１１４をダウンリンク状態とするため、現在有効な状態である差動レシーバ２２０を無効な状態とし、現在無効な状態である差動トランスミッタ２１９を有効な状態に切り替える（ステップＳ３５５）。これにより、通信路Ｉ／Ｆ部２５０はＤＡＴ１ライン１１４を用いたデータを受信する構成からデータを送信する構成へと切り替えられる。その後、マスタ１００は、ＤＡＴ１ライン１１４を用いてプリアンブルコード（ＰＲＥ）をスレーブ１０１へ送信し、ビット同期や高速クロックの抽出を行って通信可能な状態とする（ステップＳ３６０）。
【０１１８】
自装置がデータを受信すると判断する場合、つまりコマンドパケットに含まれるＲ／Ｗ４１２が読み出しを示す場合（ステップＳ３５０における「受信」）、マスタ１００の方向制御部２０８は、ＤＡＴ０ライン１１３をアップリンク状態とするため、現在有効な状態にある差動トランスミッタ２１７を無効な状態にし、現在無効な状態にある差動レシーバ２１８を有効な状態に切り替える（ステップＳ３６５）。これにより、通信路Ｉ／Ｆ部２５０はＤＡＴ０ライン１１３を用いたデータを送信する構成からデータを受信する構成へと切り替えられる。その後、マスタ１００は、ＤＡＴ０ライン１１３を用いてスレーブ１０１側からプリアンブルコード（ＰＲＥ）を受信し、ビット同期や高速クロックの抽出を行って通信可能な状態とする（ステップＳ３７０）。
【０１１９】
（スレーブ１０１側の動作）
図１８は、スレーブ１０１側における処理の流れを示す流れ図である。
スレーブ１０１は、通信モードの通知（通信モードが半二重通信である旨）を受け取ると、自装置がデータを送信するか受信するかを判断する（ステップＳ４００）。具体的には、スレーブ１０１の方向制御部１１０８は、受信したコマンドパケットに含まれるＲ／Ｗ４１２（図４参照）が示す種別に基づいて判断する。
【０１２０】
自装置がデータを受信すると判断する場合、つまり受信したコマンドパケットに含まれるＲ／Ｗ４１２が書き込みを示す場合（ステップＳ４００における「受信」）、スレーブ１０１の方向制御部１１０８は、ＤＡＴ１ライン１１４をダウンリンク状態とするため、現在有効な状態にある差動トランスミッタ１１１８を無効な状態にし、現在無効な状態にある差動レシーバ１１１９を有効な状態に切り替える（ステップＳ４０５）。これにより、通信路Ｉ／Ｆ部１１５０はＤＡＴ１ライン１１４を用いたデータを送信する構成からデータを受信する構成へと切り替えられる。その後、スレーブ１０１は、ＤＡＴ１ライン１１４を用いてマスタ１００からプリアンブルコード（ＰＲＥ）を受信し、ビット同期や高速クロックの抽出を行って通信可能な状態とする（ステップＳ４１０）。
【０１２１】
自装置がデータを送信すると判断する場合、つまり受信したコマンドパケットに含まれるＲ／Ｗ４１２が読み出しを示す場合（ステップＳ４００における「送信」）、スレーブ１０１の方向制御部１１０８は、ＤＡＴ０ライン１１３をアップリンク状態とするため、現在有効な状態である差動レシーバ１１１７を無効な状態とし、現在無効な状態である差動トランスミッタ１１１６を有効な状態に切り替える（ステップＳ４１５）。これにより、通信路Ｉ／Ｆ部１１５０はＤＡＴ０ライン１１３を用いたデータを受信する構成からデータを送信する構成へと切り替えられる。その後、スレーブ１０１は、ＤＡＴ０ライン１１３を用いてプリアンブルコード（ＰＲＥ）をマスタ１００へ送信し、ビット同期や高速クロックの抽出を行って通信可能な状態とする（ステップＳ４２０）。
【０１２２】
（全二重通信から半二重通信への切り替え）
図１９（ａ）は、全二重通信から半二重通信への切り替え時において、マスタ１００がデータの送信側となる場合における制御コードの送受信の詳細を示す図である。
マスタ１００は、全二重通信から半二重通信への切り替え指示として方向制御コード（ＤＩＲ）をＤＡＴ０ライン１１３を用いてスレーブ１０１へ送信する。このとき、マスタ１００は、方向制御コードに対する応答としてアクノリッジコード（ＡＣＫ）をＤＡＴ１ライン１１４を用いてスレーブ１０１から受信するまでの間、方向制御コードの送信を継続する（ステップＳ４５０）。
【０１２３】
スレーブ１０１は、方向制御コードをＤＡＴ０ライン１１３を用いてマスタ１００から受信すると、アクノリッジコードをＤＡＴ１ライン１１４を用いてマスタ１００へ送信する。このとき、スレーブ１０１は、アクノリッジコードに対する応答としてアイドルコード（ＩＤＬ）をＤＡＴ０ライン１１３を用いてマスタ１００から受信するまでの間、アクノリッジコードの送信を継続する（ステップＳ４５１）。
【０１２４】
マスタ１００は、アクノリッジコードをＤＡＴ１ライン１１４を用いてスレーブ１０１から受信すると、アイドルコードをＤＡＴ０ライン１１３を用いてスレーブ１０１へ送信する。アイドルコードの送信は、ＤＡＴ１ライン１１４との同期が完了するまでの間、継続される（ステップＳ４５２）。
マスタ１００は、アイドルコードの送信を開始すると、図１７のステップＳ３５５にて示したように、通信路Ｉ／Ｆ部２５０に対するＤＡＴ１ライン１１４の接続を切り替え、スレーブ１０１は、アイドルコードを受信すると、図１８のステップＳ４０５にて示したように、通信路Ｉ／Ｆ部１１５０に対するＤＡＴ１ライン１１４の接続を切り替える（ステップＳ４５３）。
【０１２５】
マスタ１００は、ＤＡＴ１ライン１１４に対する切替が完了すると、プリアンブルコード（ＰＲＥ）をＤＡＴ１ライン１１４を用いてスレーブ１０１へ送信する。なお、プリアンブルコードの送信は、ＤＡＴ０ライン１１３との同期が完了するまでの間、継続される（ステップＳ４５４）。
同期が完了すると、マスタ１００とスレーブ１０１との間で半二重通信によるデータパケットの送受信が行われる（ステップＳ４５５）。
【０１２６】
ここで、プリアンブルコードの送受信は、マスタ１００及びスレーブ１０１の間で確実にビット同期が行えるよう固定長とする。プリアンブルコードの送受信が終了すると、処理対象のデータの送受信が行われる。ここで、データパケットは先頭にパケット先頭コード（ＳＯＰ）、末尾にパケット末尾コード（ＥＯＰ）が付加される。なお、アイドルコード（ＩＤＬ）の生成やパケット先頭、末尾コード（ＳＯＰ、ＥＯＰ）などの制御コードはリンク制御部２０６、１１０６で生成される。
【０１２７】
図１９（ｂ）は、全二重通信から半二重通信への切り替え時において、マスタ１００がデータの受信側となる場合における制御コードの送受信の詳細を示す図である。
マスタ１００は、全二重通信から半二重通信への切り替え指示として方向制御コード（ＤＩＲ）をＤＡＴ０ライン１１３を用いてスレーブ１０１へ送信する。このとき、マスタ１００は、アクノリッジコード（ＡＣＫ）をＤＡＴ１ライン１１４を用いてスレーブ１０１から受信するまでの間、方向制御コードの送信を継続する（ステップＳ４６０）。
【０１２８】
スレーブ１０１は、方向制御コードをＤＡＴ０ライン１１３を用いてマスタ１００から受信すると、アクノリッジコードをＤＡＴ１ライン１１４を用いてマスタ１００へ送信する。このとき、スレーブ１０１は、アイドルコード（ＩＤＬ）をＤＡＴ０ライン１１３を用いてマスタ１００から受信するまでの間、アクノリッジコードの送信を継続する（ステップＳ４６１）。
【０１２９】
マスタ１００は、アクノリッジコードをＤＡＴ１ライン１１４を用いてスレーブ１０１から受信すると、アイドルコードをＤＡＴ０ライン１１３を用いてスレーブ１０１へ送信する。このとき、マスタ１００は、アイドルコードをＤＡＴ１ライン１１４を用いてスレーブ１０１から受信するまでの間、アイドルコードの送信を継続する（ステップＳ４６２）。
【０１３０】
スレーブ１０１は、アクノリッジコードに対する応答としてアイドルコードを受信すると、その応答としてアイドルコードを、ＤＡＴ１ライン１１４を用いてマスタ１００へ送信する。なお、この送信は、ＤＡＴ０ライン１１３との同期が完了するまでの間、継続される（ステップＳ４６３）。
マスタ１００は、スレーブ１０１からアイドルコードを受信すると、図１７のステップＳ３６５にて示したように、通信路Ｉ／Ｆ部２５０に対するＤＡＴ０ライン１１３の接続を切り替え、スレーブ１０１は、アイドルコードの送信を開始すると、図１８のステップＳ４１５にて示したように、通信路Ｉ／Ｆ部１１５０に対するＤＡＴ０ライン１１３の接続を切り替える（ステップＳ４６４）。
【０１３１】
スレーブ１０１は、ＤＡＴ０ライン１１３に対する切替が完了すると、プリアンブルコード（ＰＲＥ）をＤＡＴ０ライン１１３を用いてマスタ１００へ送信する。なお、プリアンブルコードの送信は、ＤＡＴ１ライン１１４との同期が完了するまでの間、継続される（ステップＳ４６５）。ここで、プリアンブルコードの送受信は、上記と同様に固定長とする。
【０１３２】
同期が完了すると、マスタ１００とスレーブ１０１との間で半二重通信によるデータパケットの送受信が行われる（ステップＳ４６６）。
ここで、図１９（ａ）及び（ｂ）において、方向制御コード（ＤＩＲ）及びアクノリッジコード（ＡＣＫ）は図１４のようなハンドシェイクを行う。そのため、そのハンドシェイクが確立するまでディスパリティが＋と−のＫコードを繰り返した可変長となる。なお、方向制御対象外の通信路はアイドルコード（ＩＤＬ）で埋められる。
【０１３３】
（４）通信モードの復旧処理
ここでは、図１３にて示すステップＳ４０にて行われる通信モードの復旧処理について、マスタ１００側及びスレーブ１０１側に分けて、図２０及び図２１を用いて説明する。
（マスタ１００側の動作）
図２０は、マスタ１００側における処理の流れを示す流れ図である。
【０１３４】
マスタ１００は、処理対象のデータ通信が終了すると、自装置がデータの送信側であるか受信側であるかを判断する（ステップＳ５００）。具体的には、マスタ１００の方向制御部２０８は、通信要求時に送信したコマンドパケットに含まれるＲ／Ｗ４１２（図４参照）が示す種別に基づいて判断する。
自装置がデータの送信側である判断する場合（ステップＳ５００における「送信」）、マスタ１００は、方向制御コード（ＤＩＲ）をＤＡＴ０ライン１１３を用いてスレーブ１０１へ送信する（ステップＳ５０５）。その後、マスタ１００は、方向制御部２０８の制御により、ＤＡＴ１ライン１１４をアップリンク状態とするため、現在有効な状態である差動トランスミッタ２１９を無効な状態とし、現在無効な状態である差動レシーバ２２０を有効な状態に切り替える（ステップＳ５１０）。これにより、通信路Ｉ／Ｆ部２５０はＤＡＴ１ライン１１４を用いたデータを送信する構成からデータを受信する構成へと切り替えられる。
【０１３５】
マスタ１００は、プリアンブルコードをＤＡＴ１ライン１１４を用いてスレーブ１０１から受信したか否かを判断する（ステップＳ５１５）。
受信していないと判断する場合（ステップＳ５１５における「Ｎｏ」）、マスタ１００は方向制御コードをＤＡＴ０ライン１１３を用いてスレーブ１０１へ送信し（ステップＳ５２０）、処理はステップＳ５１５へ戻る。つまり、マスタ１００は、プリアンブルコードを受信するまでの間、方向制御コードの送信を継続する。なお、方向制御コードの送信の継続と、ステップＳ５１０にて行われるＤＡＴ１レシーバの切替は並列に行われるものとする。
【０１３６】
プリアンブルコードを受信したと判断する場合（ステップＳ５１５における「Ｙｅｓ」）、マスタ１００は、アクノリッジコード（ＡＣＫ）を、ＤＡＴ０ライン１１３を用いてスレーブ１０１へ送信する（ステップＳ５２５）。
マスタ１００は、アイドルルコード（ＩＤＬ）をＤＡＴ１ライン１１４を用いてスレーブ１０１から受信したか否かを判断する（ステップＳ５３０）。
【０１３７】
受信していないと判断する場合（ステップＳ５３０における「Ｎｏ」）、処理はステップＳ５２５へ戻る。つまり、マスタ１００は、アイドルコードを受信するまでの間、アクノリッジコードの送信を継続する。
受信したと判断する場合（ステップＳ５３０における「Ｙｅｓ」）、処理は終了する。
自装置がデータの受信側である判断する場合（ステップＳ５００における「受信」）、マスタ１００は、方向制御コードをＤＡＴ１ライン１１４を用いてスレーブ１０１から受信したか否かを判断する（ステップＳ５３０）。
【０１３８】
受信していないと判断する場合（ステップＳ５３０における「Ｎｏ」）、処理は、ステップＳ５３０へ戻る。
受信したと判断する場合（ステップＳ５３０における「Ｙｅｓ」）、マスタ１００は、方向制御部２０８の制御により、ＤＡＴ０ライン１１３をダウンリンク状態とするため、現在有効な状態である差動レシーバ２１８を無効な状態とし、現在無効な状態である差動トランスミッタ２１７を有効な状態に切り替える（ステップＳ５３５）。これにより、通信路Ｉ／Ｆ部２５０はＤＡＴ０ライン１１３を用いたデータを受信する構成からデータを送信する構成へと切り替えられる。
【０１３９】
マスタ１００は、プリアンブルコードをＤＡＴ０ライン１１３を用いてスレーブ１０１へ送信する（ステップＳ５４０）。
マスタ１００は、アクノリッジコードをＤＡＴ１ライン１１４を用いてスレーブ１０１から受信したか否かを判断する（ステップＳ５４５）。
受信していないと判断する場合（ステップＳ５４５における「Ｎｏ」）、処理はステップＳ５４０へ戻る。つまり、マスタ１００は、アクノリッジコードを受信するまでの間、プリアンブルコードの送信を継続する。
【０１４０】
アクノリッジコードを受信したと判断する場合（ステップＳ５４５における「Ｙｅｓ」）、マスタ１００は、アイドルコード（ＩＤＬ）を、ＤＡＴ０ライン１１３を用いてスレーブ１０１へ送信する（ステップＳ５５０）。
（スレーブ１０１側の動作）
図２１は、スレーブ１０１側における処理の流れを示す流れ図である。
【０１４１】
スレーブ１０１は、処理対象のデータ通信が終了すると、自装置がデータの送信側であるか受信側であるかを判断する（ステップＳ５７０）。具体的には、スレーブ１０１は、通信要求時に受信したコマンドパケットに含まれるＲ／Ｗ４１２（図４参照）が示す種別に基づいて判断する。
自装置がデータの受信側である判断する場合（ステップＳ５７０における「受信」）、スレーブ１０１は、方向制御コードをＤＡＴ０ライン１１３を用いてマスタ１００から受信したか否かを判断する（ステップＳ５７５）。
【０１４２】
受信していないと判断する場合（ステップＳ５７５における「Ｎｏ」）、処理は、ステップＳ５７５へ戻る。
受信したと判断する場合（ステップＳ５７５における「Ｙｅｓ」）、スレーブ１０１は、方向制御部１１０８の制御により、ＤＡＴ１ライン１１４をアップリンク状態とするため、現在有効な状態である差動レシーバ１１１９を無効な状態とし、現在無効な状態である差動トランスミッタ１１１８を有効な状態に切り替える（ステップＳ５８０）。これにより、通信路Ｉ／Ｆ部１１５０はＤＡＴ１ライン１１４を用いたデータを受信する構成からデータを送信する構成へと切り替えられる。
【０１４３】
スレーブ１０１は、プリアンブルコードをＤＡＴ１ライン１１４を用いてマスタ１００へ送信する（ステップＳ５８５）。
スレーブ１０１は、アクノリッジコードをＤＡＴ０ライン１１３を用いてマスタ１００から受信したか否かを判断する（ステップＳ５９０）。
受信していないと判断する場合（ステップＳ５９０における「Ｎｏ」）、処理はステップＳ５８５へ戻る。つまり、スレーブ１０１は、アクノリッジコードを受信するまでの間、プリアンブルコードの送信を継続する。
【０１４４】
アクノリッジコードを受信したと判断する場合（ステップＳ５９０における「Ｙｅｓ」）、スレーブ１０１は、アイドルコード（ＩＤＬ）を、ＤＡＴ１ライン１１４を用いてマスタ１００へ送信する（ステップＳ５９５）。
自装置がデータの送信側である判断する場合（ステップＳ５７０における「送信」）、スレーブ１０１は、方向制御コード（ＤＩＲ）をＤＡＴ１ライン１１４を用いてマスタ１００へ送信する（ステップＳ６００）。その後、スレーブ１０１は、方向制御部１１０８の制御により、ＤＡＴ０ライン１１３をダウンリンク状態とするため、現在有効な状態である差動トランスミッタ１１１６を無効な状態とし、現在無効な状態である差動レシーバ１１１７を有効な状態に切り替える（ステップＳ６０５）。これにより、通信路Ｉ／Ｆ部１１５０はＤＡＴ０ライン１１３を用いたデータを送信する構成からデータを受信する構成へと切り替えられる。
【０１４５】
スレーブ１０１は、プリアンブルコードをＤＡＴ０ライン１１３を用いてマスタ１００から受信したか否かを判断する（ステップＳ６１０）。
受信していないと判断する場合（ステップＳ６１０における「Ｎｏ」）、スレーブ１０１は方向制御コードをＤＡＴ１ライン１１４を用いてマスタ１００へ送信し（ステップＳ６１５）、処理はステップＳ６１０へ戻る。つまり、スレーブ１０１は、プリアンブルコードを受信するまでの間、方向制御コードの送信を継続する。なお、方向制御コードの送信の継続と、ステップＳ６０５にて行われるＤＡＴ０レシーバの切替は並列に行われるものとする。
【０１４６】
プリアンブルコードを受信したと判断する場合（ステップＳ６１０における「Ｙｅｓ」）、スレーブ１０１は、アクノリッジコード（ＡＣＫ）を、ＤＡＴ１ライン１１４を用いてマスタ１００へ送信する（ステップＳ６１５）。
スレーブ１０１は、アイドルルコード（ＩＤＬ）をＤＡＴ０ライン１１３を用いてマスタ１００から受信したか否かを判断する（ステップＳ６２０）。
【０１４７】
受信していないと判断する場合（ステップＳ６２０における「Ｎｏ」）、処理はステップＳ６１５へ戻る。つまり、スレーブ１０１は、アイドルコードを受信するまでの間、アクノリッジコードの送信を継続する。
受信したと判断する場合（ステップＳ６２０における「Ｙｅｓ」）、処理は終了する。
（半二重通信から全二重通信への切り替え）
図２２（ａ）は、マスタ１００がデータの送信側である半二重通信から全二重通信へと切り替える場合の、制御コードの送受信の詳細を示す図である。
【０１４８】
マスタ１００は、半二重通信から全二重通信への切り替え指示として方向制御コード（ＤＩＲ）をＤＡＴ０ライン１１３を用いてスレーブ１０１へ送信する。このとき、マスタ１００は、方向制御コードに対する応答としてプリアンブルコード（ＰＲＥ）をＤＡＴ１ライン１１４を用いてスレーブ１０１から受信するまでの間、方向制御コードの送信を継続する（ステップＳ６５０）。
【０１４９】
マスタ１００は、方向制御コードを送信した後、図２０のステップＳ５１０にて示したように、通信路Ｉ／Ｆ部２５０に対するＤＡＴ１ライン１１４の接続を切り替え、スレーブ１０１は、方向制御コードをＤＡＴ０ライン１１３を用いてマスタ１００から受信すると、図２１のステップＳ５８０にて示したように、通信路Ｉ／Ｆ部１１５０に対するＤＡＴ１ライン１１４の接続を切り替える（ステップＳ６５１）。
【０１５０】
その後、スレーブ１０１は、切替が完了すると、プリアンブルコードをＤＡＴ１ライン１１４を用いてマスタ１００へ送信する。このとき、スレーブ１０１は、プリアンブルコードに対する応答としてアクノリッジコード（ＡＣＫ）を受信するまでの間、プリアンブルコードの送信を継続する（ステップＳ６５２）。
マスタ１００は、プリアンブルコードをＤＡＴ１ライン１１４を用いてスレーブ１０１から受信すると、その応答としてアクノリッジコードをＤＡＴ０ライン１１３を用いてスレーブ１０１へ送信する。このとき、マスタ１００は、アクノリッジコードの応答としてアイドルコード（ＩＤＬ）を受信するまでの間、アクノリッジコードの送信を継続する（ステップＳ６５３）。
【０１５１】
スレーブ１０１は、アクノリッジコードを受信すると、その応答としてアイドルコードをＤＡＴ１ライン１１４を用いてスレーブ１０１へ送信する（ステップＳ６５４）。
図２２（ｂ）は、マスタ１００がデータの受信側である半二重通信から全二重通信へと切り替える場合の、制御コードの送受信の詳細を示す図である。
スレーブ１０１は、半二重通信から全二重通信への切り替え指示として方向制御コード（ＤＩＲ）をＤＡＴ１ライン１１４を用いてマスタ１００へ送信する。このとき、スレーブ１０１は、プリアンブルコード（ＰＲＥ）をＤＡＴ０ライン１１３を用いてマスタ１００から受信するまでの間、方向制御コードの送信を継続する（ステップＳ６６０）。
【０１５２】
スレーブ１０１は、方向制御コードを送信した後、図２１のステップＳ６０５にて示したように、通信路Ｉ／Ｆ部１１５０に対するＤＡＴ０ライン１１３の接続を切り替え、マスタ１００は、方向制御コードをＤＡＴ１ライン１１４を用いてスレーブ１０１から受信すると、図２０のステップＳ５３５にて示したように、通信路Ｉ／Ｆ部２５０に対するＤＡＴ０ライン１１３の接続を切り替える（ステップＳ６６１）。
【０１５３】
マスタ１００は、切替が完了すると、プリアンブルコードをＤＡＴ０ライン１１３を用いてスレーブ１０１へ送信する。このとき、マスタ１００は、プリアンブルコードに対する応答としてアクノリッジコード（ＡＣＫ）を受信するまでの間、プリアンブルコードの送信を継続する（ステップＳ６６２）。
スレーブ１０１は、プリアンブルコードをＤＡＴ０ライン１１３を用いてマスタ１００から受信すると、その応答としてアクノリッジコードをＤＡＴ１ライン１１４を用いてマスタ１００へ送信する。このとき、スレーブ１０１は、アクノリッジコードの応答としてアイドルコード（ＩＤＬ）を受信するまでの間、アクノリッジコードの送信を継続する（ステップＳ６６３）。
【０１５４】
マスタ１００は、アクノリッジコードを受信すると、その応答としてアイドルコードをＤＡＴ０ライン１１３を用いてスレーブ１０１へ送信する（ステップＳ６６４）。
ここで、図２２（ａ）及び（ｂ）によると、方向制御コード（ＤＩＲ）とプリアンブルコード（ＰＲＥ）とのハンドシェイク、およびプリアンブルコードとアクノリッジコード（ＡＣＫ）とのハンドシェイクが連続的に行われていることがわかる。
【０１５５】
ここで、図２２（ａ）におけるスレーブ１０１や図２２（ｂ）におけるマスタ１００のようなデータ受信側の通信装置において、プリアンブルコードの送信開始から、アクノリッジコードを受けるまでのプリアンブルコードの送信数を記憶しておく。それ以降に通信モードを移行する場合、図１７及び図１８におけるプリアンブルコードの送信（ステップＳ３６０、Ｓ４１０）は、上記送信数と同等のプリアンブルコードを送信することで、実際にビット同期が確立した状態を実現することができる。つまり、固定長の期間を記憶しているプリアンブルコードの送信数を送信する期間とすることで、固定長の期間を適切なサイズとすることができる。
【０１５６】
さらに、そのプリアンブルコードの送信数は方向制御のオーバヘッドを示す。
このため、コマンドパケットに含まれた転送サイズに比べてプリアンブルコードの送信数が十分に大きければ、通信モード確定ステップにおいて半二重通信モードが選択されないようにすることも可能である。なお、コマンドパケット内の転送サイズ分を送受信してから全二重通信モードに復旧する場合、最後のデータパケットの送受信完了が全二重通信モードへの復旧開始タイミングとなる。
【０１５７】
このため、必ずしも図２０、２１にて示す方向制御コードの送受信は必須ではない。しかしながら、例えば、半二重通信モードで受信側の通信装置は、連続するデータパケットを受信すると受信バッファのオーバーフローやＣＲＣエラーが発生する可能性がある。そのような、受信側の通信装置からの状態通知（割込み）を受けるため、送信側の通信装置はデータパケットの送信完了後に一時的に全二重通信モードに復旧させることが考えられ、この場合は明示的に方向制御コードを送信する必要がある。
【０１５８】
（半二重通信時におけるデータ受信側からの割込み動作）
以下では、上記に示すような、半二重通信時においてデータ受信側の通信装置からの割込みを通知するための動作について図２３を用いて説明する。
まず、マスタ１００とスレーブ１０１との間でコマンドパケットとレスポンスパケットのハンドシェイクを行い（ステップＳ７００、Ｓ７０５）、その後、全二重通信から半二重通信への切り替えを行う（ステップＳ７１０）。切替が完了すると、マスタ１００は、図１６と同様に半二重通信モードでのデータパケット（ＷＤＡＴ  ＰＫＴ０）の送信を行う（ステップＳ７１５、Ｓ７２０）。ここでは、データパケット（ＷＤＡＴ  ＰＫＴ０）の送信後に、通信システム１０は、一時的に全二重通信モードに復旧、つまり半二重通信から全二重通信へ切り替えを行う（ステップＳ７２５）。これによりマスタ１００は、スレーブ１０１からの割込みを受け付け可能な状態になる。例えば、スレーブ１０１は、データパケット（ＷＤＡＴ  ＰＫＴ０）の受信時にＣＲＣエラーがあれば、メッセージカテゴリをＣＲＣエラーとしたメッセージパケットを発行し、発行したメッセージパケットをＤＡＴ１ライン１１４を用いてマスタ１００へ送信する（ステップＳ７３０）。
【０１５９】
マスタ１００は、メッセージパケットを受信すると、再び半二重通信モードへ切り替え（ステップＳ７３５）、データパケットの再送を行う（ステップＳ７４０、Ｓ７４５）。
通信システム１０は、再度、一時的に全二重通信モードに復旧、つまり半二重通信から全二重通信へ切り替えを行う（ステップＳ７５０）。
通信システム１０は、スレーブ１０１にて受信したデータパケットにＣＲＣエラーがなく、割込みが不要であれば、再び半二重通信モードに切り替える（ステップＳ７５５）。
【０１６０】
その後、マスタ１００は、半二重通信モードでのデータパケット（ＷＤＡＴ  ＰＫＴ１）の送信を行う（ステップＳ７６０、Ｓ７６５）。そして、データパケット（ＷＤＡＴ  ＰＫＴ１）の送信が完了すると、通信システム１０は、半二重通信から全二重通信へ切り替えを行う（ステップＳ７７０）。
このとき、ステップＳ７５０にて行われる全二重通信モードへの切り替えにおけるスレーブ１０１は、図２１に示す復旧処理のステップＳ５９５にて行われるアイドルコードの送信の代わりに、例えば方向制御コード（ＤＩＲ）を送信することで割込み不要を通知できる。それを受けたマスタ１００は、即座に半二重通信モードに移行させることができる。また、同じくステップＳ７５０にて行われる切替時のスレーブ１０１は、即座に半二重通信モードに移行しても受信バッファの確保ができていない場合、その準備ができるまでアイドルコードを送信する代わりにビジーコード（ＢＳＹ）を送信することで、フロー制御を実現できる。
【０１６１】
２．変形例１
上記実施の形態１における方向制御コードの送受信、通信路の切り替えを、フロー制御と組み合わせて行ってもよい。ここで、フロー制御とは、互いに通信が可能な状態かを確認してからデータ通信を開始する制御のことである。
以下、フロー制御と組み合わせた場合における通信モードの切り替えの手順について説明する。
【０１６２】
２．１  データ読み込み時について
ここでは、マスタ１００が、スレーブ１０１からデータを読み出す場合、つまりスレーブ１０１がデータの送信側となる場合において、通信モードの切替と、フロー制御と組み合わせた場合について、図２４を用いて説明する。なお、ここでは、実施の形態１と同様に、全二重通信時には、ＤＡＴ０ライン１１３はダウンリンク状態にあり、ＤＡＴ１ライン１１４はアップリンク状態にあるものとする。
【０１６３】
マスタ１００は、コマンドパケットをＤＡＴ０ライン１１３を用いてスレーブ１０１へ送信する（ステップＳ８００）。ことき、コマンドパケットのＲ／Ｗ４１２（図４参照）には読み込み（Ｒｅａｄ）を示す値が格納されており、通信モード４２０（図５参照）には半二重通信（ＨＤ  ｍｏｄｅ）を示す値が格納されている。
スレーブ１０１は、マスタ１００からコマンドパケットを受信すると、その応答としてレスポンスパケットをＤＡＴ１ライン１１４を用いてマスタ１００へ送信する（ステップＳ８０５）。このとき、レスポンスパケットのＲ／Ｗ４１２には読み込み（Ｒｅａｄ）を示す値が格納されており、通信モード４２０（図５参照）には半二重通信（ＨＤ  ｍｏｄｅ）を示す値が格納されている。
【０１６４】
データの受信側であるマスタ１００は、フロー制御におけるコードの１つである、通信（データ受信）の準備を示すＦＣＲＤＹコードをＤＡＴ０ライン１１３を用いてスレーブ１０１へ送信する（ステップＳ８１０）。なお、このＦＣＲＤＹには、半二重通信（ＨＤ  ｍｏｄｅ）を示す値が格納されているものとする。
スレーブ１０１は、マスタ１００からＦＣＲＤＹコードを受信すると、方向制御コード（ＤＩＲ）を、ＤＡＴ１ライン１１４を用いてマスタ１００へ送信する（ステップＳ８１１）。このとき、スレーブ１０１は、所定期間の間、方向制御コードの送信を継続する（ステップＳ８１７）。なお、当該所定期間内において、フロー制御による通信開始の準備が完了しているものとする。
【０１６５】
マスタ１００は、ＦＣＲＤＹコードの送信後、ダウンリンク状態のＤＡＴ０ライン１１３がアップリンク状態となるように通信路Ｉ／Ｆ部２５０の構成の切り替えを行う（ステップＳ８１５）。また、ステップＳ８１５において、スレーブ１０１側では、マスタ１００からＦＣＲＤＹコードを受信すると、ダウンリンク状態のＤＡＴ０ライン１１３がアップリンク状態となるように通信路Ｉ／Ｆ部１１５０の構成の切り替えを行う。つまり、ステップＳ８１５では、通信路Ｉ／Ｆ部２５０と通信路Ｉ／Ｆ部１１５０との構成の切替が行われる。なお、切替の詳細は、実施の形態１にて示しているので、ここでの説明は省略する。
【０１６６】
スレーブ１０１は、通信路Ｉ／Ｆ部１１５０の構成の切り替えが完了すると、プリアンブルコードをＤＡＴ０ライン１１３を用いてマスタ１００へ送信する（ステップＳ８１６）。
スレーブ１０１は、方向制御コードの送信開始から所定期間が経過し、且つ通信開始の準備が完了すると、当該方向制御コード及びプリアンブルコードの送信を抑止し、マスタ１００から受信したＦＣＲＤＹコードに対する応答としてＦＣＲＤＹコードをＤＡＴ１ライン１１４を用いてマスタ１００へ送信する（ステップＳ８２０）。なお、スレーブ１０１から送信されるＦＣＲＤＹコードも、マスタ１００から送信されるＦＣＲＤＹコードと同様に、半二重通信（ＨＤ  ｍｏｄｅ）を示す値が格納されている。
【０１６７】
スレーブ１０１からＦＣＲＤＹコードが送信された後、半二重通信にて、スレーブ１０１からデータの送信が行われる（ステップＳ８２５、Ｓ８３０、Ｓ８３５、Ｓ８４０）。
その後、スレーブ１０１は、フロー制御におけるコードの１つである、通信の不可を示すＦＣＢＳＹコードをＤＡＴ１ライン１１４を用いてマスタ１００へ送信する（ステップＳ８４５）。
【０１６８】
マスタ１００は、ＦＣＢＳＹコードを受信すると、アップリンク状態のＤＡＴ０ライン１１３がダウンリンク状態となるように通信路Ｉ／Ｆ部２５０の構成の切り替えを行う（ステップＳ８５０）。また、ステップＳ８５０において、スレーブ１０１側では、マスタ１００へＦＣＢＳＹコードを送信した後、アップリンク状態のＤＡＴ０ライン１１３がダウンリンク状態となるように通信路Ｉ／Ｆ部１１５０の構成の切り替えを、方向制御コードの送信（ステップＳ８４６、Ｓ８５２）と並行して行う。つまり、ステップＳ８５０では、通信路Ｉ／Ｆ部２５０と通信路Ｉ／Ｆ部１１５０との構成の切替が行われる。なお、切替の詳細は、実施の形態１にて示しているので、ここでの説明は省略する。
【０１６９】
また、スレーブ１０１は、ＦＣＢＳＹコードを送信した後、方向制御コード（ＤＩＲ）をＤＡＴ１ライン１１４を用いてマスタ１００へ送信する（ステップＳ８４６）。このとき、スレーブ１０１は、マスタ１００へ送信したＦＣＢＳＹコードに対する応答があるまでの間、方向制御コードの送信を継続する（ステップＳ８５２）。
また、マスタ１００は、ステップＳ８５０にて通信路Ｉ／Ｆ部２５０の構成の切り替えが完了すると、受信したＦＣＢＳＹコートに対する応答の準備が完了するまでの間、プリアンブルコードをＤＡＴ０ライン１１３を用いてスレーブ１０１へ送信する（ステップＳ８５１）。
【０１７０】
マスタ１００は、ＦＣＢＳＹコートに対する応答をＤＡＴ０ライン１１３を用いてスレーブ１０１へ送信する（ステップＳ８５５）。なお、マスタ１００は、ＦＣＢＳＹコートに対する応答として、スレーブ１０１からデータ通信が正常である場合にはＦＣＢＳＹコードを送信し、データ通信にエラーがある場合にはＣＲＣエラーコードを送信する。
２．２  データ書き込み時について
ここでは、マスタ１００が、スレーブ１０１へデータを書き込む場合、つまりマスタ１００がデータの送信側となる場合において、通信モードの切替と、フロー制御と組み合わせた場合について、図２５を用いて説明する。なお、上述したように、全二重通信時には、ＤＡＴ０ライン１１３はダウンリンク状態にあり、ＤＡＴ１ライン１１４はアップリンク状態にあるものとする。
【０１７１】
マスタ１００は、コマンドパケットをＤＡＴ０ライン１１３を用いてスレーブ１０１へ送信する（ステップＳ９００）。ことき、コマンドパケットのＲ／Ｗ４１２（図４参照）には書き込み（Ｗｒｉｔｅ）を示す値が格納されており、通信モード４２０（図５参照）には半二重通信（ＨＤ  ｍｏｄｅ）を示す値が格納されている。
スレーブ１０１は、マスタ１００からコマンドパケットを受信すると、その応答としてレスポンスパケットをＤＡＴ１ライン１１４を用いてマスタ１００へ送信する（ステップＳ９０５）。このとき、レスポンスパケットのＲ／Ｗ４１２には読み込み（Ｗｒｉｔｅ）を示す値が格納されており、通信モード４２０（図５参照）には半二重通信（ＨＤ  ｍｏｄｅ）を示す値が格納されている。
【０１７２】
データの受信側であるスレーブ１０１は、通信（データ受信）の準備を示すＦＣＲＤＹコードをＤＡＴ１ライン１１４を用いてマスタ１００へ送信する（ステップＳ９１０）。なお、このＦＣＲＤＹには、半二重通信（ＨＤ  ｍｏｄｅ）を示す値が格納されているものとする。
マスタ１００は、スレーブ１０１からＦＣＲＤＹコードを受信すると、方向制御コード（ＤＩＲ）を、ＤＡＴ０ライン１１３を用いてスレーブ１０１へ送信する（ステップＳ９１１）。このとき、マスタ１００は、所定期間の間、方向制御コードの送信を継続する（ステップＳ９１５）。なお、当該所定期間内において、フロー制御による通信開始の準備が完了しているものとする。
【０１７３】
スレーブ１０１は、ＦＣＲＤＹコードの送信後、アップリンク状態のＤＡＴ１ライン１１４がダウンリンク状態となるように通信路Ｉ／Ｆ部１１５０の構成の切り替えを行う（ステップＳ９１６）。また、ステップＳ９１６において、マスタ１００側では、スレーブ１０１からＦＣＲＤＹコードを受信すると、アップリンク状態のＤＡＴ１ライン１１４がダウンリンク状態となるように通信路Ｉ／Ｆ部２５０の構成の切り替えを、方向制御コードの送信（ステップＳ９１１、Ｓ９１５）と並行して行う。つまり、ステップＳ９１６では、通信路Ｉ／Ｆ部２５０と通信路Ｉ／Ｆ部１１５０との構成の切替が行われる。なお、切替の詳細は、実施の形態１にて示しているので、ここでの説明は省略する。
【０１７４】
マスタ１００は、通信路Ｉ／Ｆ部２５０の構成の切り替えが完了すると、プリアンブルコードをＤＡＴ１ライン１１４を用いてスレーブ１０１へ送信する（ステップＳ９１７）。
マスタ１００は、方向制御コードの送信開始から所定期間が経過すると、当該方向制御コード及びプリアンブルコードの送信を抑止し、スレーブ１０１から受信したＦＣＲＤＹコードに対する応答としてＦＣＲＤＹコードをＤＡＴ０ライン１１３を用いてスレーブ１０１へ送信する（ステップＳ９２０）。なお、マスタ１００から送信されるＦＣＲＤＹコードも、スレーブ１０１から送信されるＦＣＲＤＹコードと同様に、半二重通信（ＨＤ  ｍｏｄｅ）を示す値が格納されている。
【０１７５】
マスタ１００からＦＣＲＤＹコードが送信された後、半二重通信にて、マスタ１００からデータの送信が行われる（ステップＳ９２５、Ｓ９３０、Ｓ９３５、Ｓ９４０）。
その後、マスタ１００は、ＦＣＢＳＹコードをＤＡＴ０ライン１１３を用いてスレーブ１０１へ送信する（ステップＳ９４５）。
スレーブ１０１は、ＦＣＢＳＹコードを受信すると、ダウンリンク状態のＤＡＴ１ライン１１４がアップリンク状態となるように通信路Ｉ／Ｆ部１１５０の構成の切り替えを行う（ステップＳ９５１）。また、ステップＳ９５１において、マスタ１００側では、スレーブ１０１へＦＣＢＳＹコードを送信した後と、ダウンリンク状態のＤＡＴ１ライン１１４がアップリンク状態となるように通信路Ｉ／Ｆ部２５０の構成の切り替えを行う。つまり、ステップＳ９５１では、通信路Ｉ／Ｆ部２５０と通信路Ｉ／Ｆ部１１５０との構成の切替が行われる。なお、切替の詳細は、実施の形態１にて示しているので、ここでの説明は省略する。
【０１７６】
また、マスタ１００は、ＦＣＢＳＹコードを送信した後、方向制御コード（ＤＩＲ）をＤＡＴ０ライン１１３を用いてスレーブ１０１へ送信する（ステップＳ９４６）。このとき、マスタ１００は、スレーブ１０１へ送信したＦＣＢＳＹコードに対する応答があるまでの間、方向制御コードの送信を継続する（ステップＳ９５０）。
また、スレーブ１０１は、ステップＳ９５１にて通信路Ｉ／Ｆ部１１５０の構成の切り替えが完了すると、受信したＦＣＢＳＹコートに対する応答の準備が完了するまでの間、プリアンブルコードをＤＡＴ１ライン１１４を用いてマスタ１００へ送信する（ステップＳ９５２）。
【０１７７】
スレーブ１０１は、ＦＣＢＳＹコートに対する応答をＤＡＴ１ライン１１４を用いてマスタ１００へ送信する（ステップＳ９５５）。なお、ＦＣＢＳＹコートに対する応答として、上述したようにＦＣＢＳＹコードやＣＲＣエラーコードがある。
２．３  まとめ
図２４及び図２５にて示すように、半二重通信から全二重通信へと切り替える場合、現時点でデータの送信側である装置が、当該装置が全二重通信時にデータを送信するための通信路を用いて、ＦＣＢＳＹコードを送信している。そして、現時点でデータの受信側である他装置は、ＦＣＢＳＹコードを受信した通信路とは異なる他の通信路の切り替えを行っている。例えば、図２４では、半二重通信時ではスレーブ１０１がデータの送信側となり、スレーブ１０１が全二重通信時にデータを送信する通信路はＤＡＴ１ライン１１４となる。そこで、スレーブ１０１は、ＤＡＴ１ライン１１４を用いてＦＣＢＳＹコードを送信することで、他の通信路、ここではＤＡＴ０ライン１１３が方向切替の対象となることが分かる。
【０１７８】
つまり、半二重通信時においてデータの送信側の装置が方向切替の対象外の通信路から切替のトリガーとなるコード（ここでは、ＦＣＢＳＹコード）を送信することで、両装置とも切替対象となる通信路を特定することができる。
また、上記変形例１に限らず、実施の形態１においても、図２２（ａ）、（ｂ）にて示すように、半二重通信から全二重通信へと切り替える場合も、上記と同様のことが言える。
【０１７９】
これによると、切替のトリガーとなるコードをデータの送信側の装置が方向切替の対象外の通信路を用いて送信するということを予め定めておくことで、図２０、２１にて示す送受信の判定は不要となる。
３．変形例２
上記変形例１において、全二重通信から半二重通信へと切り替える場合、ＦＣＲＤＹコードの送受信を切り替えの契機としたが、これに限定されない。
【０１８０】
ＦＣＲＤＹコードの送受信後に、送受信される方向制御コード（ＤＩＲ）を、通信路の方向切替のトリガーをしてもよい。
例えば、図２４において、マスタ１００は、ステップＳ８１１にてスレーブ１０１からＤＡＴ１ライン１１４を用いて出力される方向制御コードを受信すると、ステップＳ８１５による通信路Ｉ／Ｆ部２５０の構成の切り替えを行う。また、スレーブ１０１は、ステップＳ８１１にて方向制御コードを出力した後、ステップＳ８１５による通信路Ｉ／Ｆ部１１５０の構成の切り替えを行う。
【０１８１】
図２５においては、スレーブ１０１は、ステップＳ９１１にてマスタ１００からＤＡＴ０ライン１１３を用いて出力される方向制御コードを受信すると、ステップＳ９１６による通信路Ｉ／Ｆ部１１５０の構成の切り替えを行う。また、マスタ１００は、ステップＳ９１１にて方向制御コードを出力した後、ステップＳ９１６による通信路Ｉ／Ｆ部２５０の構成の切り替えを行う。
【０１８２】
このように、ＦＣＲＤＹコードの送受信後に、送受信される方向制御コード（ＤＩＲ）を、通信路の方向切替のトリガーとすることで、「２．３まとめ」にて記載したように、全二重通信から半二重通信へと切り替える際に、データの送信側となるべき装置が方向切替の対象外の通信路から切替のトリガーとなるコード（ここでは、ＤＩＲコード）を送信することで、両装置とも切替対象となる通信路を特定することができる。
【０１８３】
（補足）
（１）上記変形例２において、１シンボル（１つ）の方向制御コードを送受信した場合に、方向切替の契機としたが、これに限定されない。
例えば、２シンボルの方向制御コードを送受信したことを切替の契機としてもよい。つまり、所定数の方向制御コードの送受信を切替の契機としてもよい。
【０１８４】
（２）実施の形態１において、全二重通信から半二重通信へと切り替える場合、図１９（ａ）、（ｂ）にて示すように、常にマスタ１００側から方向制御コードを送信したが、これに限定されない。
上述したように、半二重通信時においてデータの送信側となるべき装置が方向切替の対象外の通信路から切替のトリガーとなるコード（ここでは、ＦＣＲＤＹコード）を送信するとしてもよい。
【０１８５】
この場合、マスタ１００から送信されるコマンドパケットによりどちらの装置が送信側となるか特定することができる。例えば、コマンドパケットのＲ／Ｗ４１２に書き込みを示す値が格納されている場合にはデータの送信側はマスタ１００となり、読み込みを示す値が格納されている場合にはデータの送信側はスレーブ１０１となる。そして、データの送信側として特定された装置が、方向切替の対象外の通信路から方向制御コードを送信する。
【０１８６】
これにより、切替のトリガーとなるコードをデータの送信側となるべき装置が方向切替の対象外の通信路を用いて送信するということを予め定めておくことで、図１７、１８にて示す送受信の判定は不要となる。
（３）上記変形例１における半二重通信から全二重通信への切り替える場合、ＦＣＢＳＹコードの送受信を切り替えの契機としたが、これに限定されない。
【０１８７】
半二重通信から全二重通信への切り替える場合においても、変形例２と同様に、ＦＣＢＳＹコードの送受信後に、送受信される方向制御コード（ＤＩＲ）を、通信路の方向切替のトリガーをしてもよい。
これによると、実施の形態１や変形例２と同様に、方向制御コードの送受信を、切替のトリガーをすることができる。
【０１８８】
また、ここでは、１シンボル（１つ）の方向制御コードを送受信した場合に、方向切替の契機としているが、上述したように、所定数の方向制御コードの送受信を切替の契機としてもよい。
４．その他の変形例
なお、本発明を上記実施の形態に基づいて説明してきたが、本発明は、上記の実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
【０１８９】
（１）上記実施の形態１では、符号化部２２４、復号化部２２５は、８ｂ／１０ｂ方式をサポートするものとしたが、これに限定されない。符号化部２２４、復号化部２２５は、４ｂ／５ｂ、６４ｂ／６６ｂなど他のエンコード方式とサポートするものとしても良い。
（２）上記実施の形態１では、マスタ１００が発行するコマンドパケット及びスレーブ１０１が発行するレスポンスパケットの双方に、通信モードを設定したが、これに限定されない。
【０１９０】
マスタ１００が発行するコマンドパケットのみに通信モードを設定してもよい。これにより、図１３にて示すステップＳ１０による通信要求の送信により、一意に通信モードを確定させることができるので、図１４にて示す通信モード通知処理は不要とすることができる。
（３）ここで、スレーブとなる装置を、マスタ１００と着脱可能なメモリカードやＩ／Ｏカードとしてもよい。例えば、メモリカードはＳＤカードであり、Ｉ／Ｏカードは他の装置と無線通信を行うための無線ＬＡＮカードである。
【０１９１】
ここで、スレーブをＳＤカードとした場合について説明する。
図２６は、上記実施の形態１にて示すスレーブ１０１をＳＤカード１０１ａとした場合の通信システム１０ａの構成を示している。通信システム１０ａは、図２６にて示すように、マスタ１００ａとＳＤカード１０１ａとから構成されている。なお、以下の説明において、実施の形態１にて示すマスタ１００及びスレーブ１０１の構成要素と同一のものついては、同一の符号を付与し、その説明は省略する。
【０１９２】
マスタ１００ａは、図２６にて示すように、イニシエータ１０３、通信Ｉ／Ｆ部１０５及びピン１５０、１５１を備えている。通信Ｉ／Ｆ部１０５は、実施の形態１と同様に、トランザクション制御部１０７、リンク制御部１０９及び送受信部１１１を有している。
ピン１５０、１５１は、ＳＤカード１０１ａと接続されるものである。また、ピン１５０、１５１の一端は、図２にて示す通信路Ｉ／Ｆ部２５０と接続されている。具体的には、ピン１５０は差動トランスミッタ２１７及び差動レシーバ２１８と接続され、ピン１５１は差動トランスミッタ２１９及び差動レシーバ２２０と接続されている。
【０１９３】
ＳＤカード１０１ａは、図２６にて示すように、スレーブ１０１の構成要素に加えて、ピン１５２、１５３を備えている。
ピン１５２、１５３それぞれは、ＳＤカード１０１ａがマスタ１００ａに装着されることで、マスタ１００ａが備えるピン１５０、１５１に接続される。また、ピン１５２、１５３の一端は、図１２にて示す通信路Ｉ／Ｆ部１１５０と接続されている。具体的には、ピン１５２は差動トランスミッタ１１１６及び差動レシーバ１１１７と接続され、ピン１５３は差動トランスミッタ１１１８及び差動レシーバ１１１９と接続されている。
【０１９４】
つまり、ピン１５０とピン１５２とが接続されることで上述した通信路１１３が、ピン１５１とピン１５３とが接続されることで上述した通信路１１４が、それぞれ形成されることになる。
したがって、これらの接続により、上記の実施の形態１と同様に、マスタ１００ａとＳＤカード１０１ａとが、通信路１１３及び１１４を介した全二重通信及び半二重通信によるデータ通信が実現できる。なお、図２６には図示していないが、マスタ１００ａは、ピン１５０、１５１とは異なるピン（ここでは、ピン１５５として説明する。）を、ＳＤカード１０１ａはピン１５２、１５３とは異なるピン（ここでは、ピン１５６として説明する。）をそれぞれ有しており、ピン１５５とピン１５６とが接続されることにより、図１にて示すクロックライン１１５が形成される。
【０１９５】
また、Ｉ／Ｏカードについても同様の構成にて実現できるので、ここでの説明は省略する。
（４）上記実施の形態１において、Ｋコードには、切替を指示するための方向制御コードとして１種類のコード（ＤＩＲ）のみを割り当てたが、これに限定されない。
例えば、半二重通信から全二重通信への切替を示すコード（ＦＤＸ）と、全二重通信から半二重通信への切替を示すコード（ＨＤＸ）とをそれぞれＫコードに割り当ててもよい。
【０１９６】
これらのコードをＫコードに割り当てたＫコード一覧テーブルＴ２０１の一例を図２７に示す。図２７では、Ｋコード「Ｋ２８．０」に“ＦＤＸ”を割り当て、Ｋコード「Ｋ２８．１」に“ＨＤＸ”を割り当てている。
この場合、図１９（ａ）及び（ｂ）における“ＤＩＲ”の送受信を、“ＨＤＸ”の送受信に置き換えればよい。また、図２２（ａ）及び（ｂ）における“ＤＩＲ”の送受信を、“ＦＤＸ”の送受信に置き換えればよい。
【０１９７】
これにより、各装置は、何れの通信モードの切替かを確実に特定することができる。
（５）上記実施の形態１において、半二重通信から全二重通信への切替時において、方向制御コード（ＤＩＲ）の送受信を、切替のトリガーとして用いたが、これに限定されない。
方向制御コード（ＤＩＲ）の送受信を、切替完了後におけるプリアンブルコード（ＰＲＥ）の送受信のトリガーとして用いてもよい。
【０１９８】
この場合の、制御コードの送受信の詳細について、図２８にて示す。
図２８（ａ）は、マスタ１００がデータの送信側である半二重通信から全二重通信へと切り替える場合の、制御コードの送受信の詳細を示す図である。
マスタ１００は、ＤＡＴ０ライン１１３及びＤＡＴ１ライン１１４双方にてアイドルコード（ＩＤＬ）を送信中に全二重通信への切替が発生すると、マスタ１００及びスレーブ１０１にてＤＡＴ１ライン１１４の方向の切り替えを行う（ステップＳ１０００）。
【０１９９】
マスタ１００は、ＤＡＴ１ライン１１４の切り替え中に方向制御コード（ＤＩＲ）を、当該方向制御コードに対する応答があるまでの間、ＤＡＴ０ライン１１３を用いてスレーブ１０１へ送信する（ステップＳ１００１）。
スレーブ１０１は、ＤＡＴ１ライン１１４の方向の切替が完了し、且つマスタ１００から方向制御コードを受信すると、その応答としてプリアンブルコード（ＰＲＥ）を、当該プリアンブルコードに対する応答があるまでの間、ＤＡＴ１ライン１１４を用いてマスタ１００へ送信する（ステップＳ１００２）。
【０２００】
マスタ１００は、プリアンブルコードを受信すると、その応答としてアクノリッジコード（ＡＣＫ）を、当該アクノリッジコードに対する応答があるまでの間、ＤＡＴ０ライン１１３を用いてスレーブ１０１へ送信する（ステップＳ１００３）。
スレーブ１０１は、アクノリッジコードを受信すると、その応答としてアイドルコード（ＩＤＬ）をＤＡＴ１ライン１１４を用いてマスタ１００へ送信する（ステップＳ１００４）。
【０２０１】
以降、全二重通信にて処理対象となるデータの送受信を行う。
図２８（ｂ）は、マスタ１００がデータの受信側である半二重通信から全二重通信へと切り替える場合の、制御コードの送受信の詳細を示す図である。
全二重通信への切替が発生すると、マスタ１００及びスレーブ１０１にてＤＡＴ０ライン１１３の方向の切り替えを行う（ステップＳ１１００）。
【０２０２】
スレーブ１０１は、ＤＡＴ０ライン１１３の切り替え中に方向制御コード（ＤＩＲ）を、当該方向制御コードに対する応答があるまでの間、ＤＡＴ１ライン１１４を用いてマスタ１００へ送信する（ステップＳ１１０１）。
マスタ１００は、ＤＡＴ０ライン１１３の方向の切替が完了し、且つスレーブ１０１から方向制御コードを受信すると、その応答としてプリアンブルコード（ＰＲＥ）を、当該プリアンブルコードに対する応答があるまでの間、ＤＡＴ０ライン１１３を用いてスレーブ１０１へ送信する（ステップＳ１１０２）。
【０２０３】
スレーブ１０１は、ＤＡＴ０ライン１１３の方向の切替が完了し、且つプリアンブルコードを受信すると、その応答としてアクノリッジコード（ＡＣＫ）を、当該アクノリッジコードに対する応答があるまでの間、ＤＡＴ１ライン１１４を用いてマスタ１００へ送信する（ステップＳ１１０３）。
マスタ１００は、アクノリッジコードを受信すると、その応答としてアイドルコード（ＩＤＬ）をＤＡＴ０ライン１１３を用いてスレーブ１０１へ送信する（ステップＳ１１０４）。
【０２０４】
以降、全二重通信にて処理対象となるデータの送受信を行う。
ここで、図２８（ａ）及び（ｂ）によると、方向制御コード（ＤＩＲ）とプリアンブルコード（ＰＲＥ）とのハンドシェイク、およびプリアンブルコードとアクノリッジコード（ＡＣＫ）とのハンドシェイクが連続的に行われていることがわかる。
（６）上記実施の形態では、マスタ１００とスレーブ１０１との関係が固定されているが、これに限定されない。双方の装置はイニシエータとターゲットとを備えた構成であってもよい。これによると、マスタとスレーブの関係が動的に入れ替わることができる。例えば、マスタとスレーブとの関係は１通信毎に切り替わっても良い。
【０２０５】
（７）上記実施の形態において、全二重通信から半二重通信へと切替が行われる場合、切り替え開始からプリアンブルコードの送信の終了までの期間として、半二重通信から全二重通信への切り替えに要した期間を用いてもよい。
この場合、以下のような動作で実現できる。
半二重通信から全二重通信へと切り替えが行われる際に、半二重通信時のデータ受信側の装置、例えば、図２２（ａ）におけるスレーブ１０１や図２２（ｂ）におけるマスタ１００のようなデータ受信側の通信装置は、方向制御コード（ＤＩＲ）を受信してから当該装置がプリアンブルコードの送信を終了するまで（相手装置からアクノリッジコードを受信するまで）にようした時間を計測して、その結果を記憶する。当該装置が半二重通信においてデータの送信側となる場合には、当該装置は、全二重通信から半二重通信への切り替えの際に、記憶している計測時間までの間、図１９（ａ）にて示すステップＳ４５３及びＳ４５４、若しくは図１９（ｂ）にて示すステップＳ４６４及びＳ４６５の実行を行う。
【０２０６】
または、半二重通信から全二重通信へと切り替えが行われる際に、半二重通信時のデータ送信側の装置、例えば、図２２（ａ）におけるマスタ１００や図２２（ｂ）におけるスレーブ１０１のようなデータ送信側の通信装置は、図２２（ａ）にて示すステップＳ６５０及びＳ６５３に要した時間を計測して、その結果を記憶しておく。当該装置が半二重通信においてデータの送信側となる場合には、当該装置は、全二重通信から半二重通信への切り替えの際に、記憶している計測時間までの間、図１９（ａ）にて示すステップＳ４５３及びＳ４５４、若しくは図１９（ｂ）にて示すステップＳ４６４及びＳ４６５の実行を行う。
【０２０７】
また、切り替えに要した期間を計測した時間としたが、送受信した制御コードの数であってもよい。
この場合、以下のような動作で実現できる。
半二重通信から全二重通信へと切り替えが行われる際に、半二重通信時のデータ受信側の通信装置が、相手装置からの方向制御コードを受信した数を記憶する。そして、当該装置が半二重通信においてデータの送信側となる場合には、当該装置は、全二重通信から半二重通信への切り替えの際に、記憶している数と同数のアイドルコードを図１９（ａ）にて示すステップＳ４５２若しくは図１９（ｂ）にて示すステップＳ４６３にて送出した後に処理すべきデータの送信を開始してもよい。また、当該装置は、方向制御コードを受信した数と相手装置からのアクノリッジコードを受信した数との合計数を記憶して、ステップＳ４６３にて送出するアイドルコードの数に適用してもよい。
【０２０８】
または、半二重通信から全二重通信へと切り替えが行われる際に、半二重通信時のデータ送信側の通信装置は、図２２（ａ）にて示すステップＳ６５０及びＳ６５３にて送信した方向制御コードの数を記憶しておく。当該装置が半二重通信においてデータの送信側となる場合には、当該装置は、全二重通信から半二重通信への切り替えの際に、記憶している数と同等の数のアイドルコードを送出して、その後、処理すべきデータの送信を開始してもよい。また、当該装置は、方向制御コードを送信した数とアクノリッジコードを送信した数との合計数を記憶して、ステップＳ４６３にて送出するアイドルコードの数に適用してもよい。
【０２０９】
（８）上記実施の形態において、差動トランスミッタと差動レシーバとの切り替えは、電力の供給の有無により実現したが、これに限定されない。
例えば、図２にて示すＤＡＴ０ライン１１３に含まれるＤＡＴ０＋ラインの分岐点から差動トランスミッタ２１７及び差動レシーバ２１８までの経路それぞれにスイッチを設けてもよい。また、ＤＡＴ０ライン１１３に含まれるＤＡＴ０−ラインの分岐点から差動トランスミッタ２１７及び差動レシーバ２１８までの経路それぞれについても同様に、スイッチを設けてもよい。これにより、差動トランスミッタ２１７を有効とし、差動レシーバ２１８を無効にする場合には、ＤＡＴ０＋ラインと差動トランスミッタ２１７との間に設けられたスイッチを閉じ、ＤＡＴ０＋ラインと差動レシーバ２１８との間に設けられたスイッチを開く。さらに、ＤＡＴ０−ラインと差動トランスミッタ２１７との間に設けられたスイッチを閉じ、ＤＡＴ０−ラインと差動レシーバ２１８との間に設けられたスイッチを開く。
【０２１０】
また、ＤＡＴ１ライン１１４に含まれるＤＡＴ１＋ライン及びＤＡＴ１−ラインそれぞれに対して差動トランスミッタ２１９及び差動レシーバ２２０の間においても上記同様に、スイッチを設けてもよい。
また、スレーブ１０１においても、ＤＡＴ０＋及びＤＡＴ０−それぞれに対して差動トランスミッタ１１１６及び差動レシーバ１１１７の間においても上記同様に、スイッチを設けてもよい。ＤＡＴ１＋及びＤＡＴ１−それぞれに対して差動トランスミッタ１１１８及び差動レシーバ１１１９の間においても上記同様に、スイッチを設けてもよい。
【０２１１】
（９）上記実施の形態において、半二重通信から全二重通信への切り替え時において（図２２（ａ）、（ｂ）参照）、アクノリッジコード（ＡＣＫ）は、プリアンブルコード（ＰＲＥ）を受信したことを示す応答コードとしたが、これに限定されない。プリアンブルコード（ＰＲＥ）を受信したことを示す応答コードとして、アイドルコード（ＩＤＬ）で代替させる構成であってもよい。その場合、方向制御コード（ＤＩＲ）とプリアンブルコード（ＰＲＥ）とのハンドシェイク、プリアンブルコード（ＰＲＥ）とアイドルコード（ＩＤＬ）とのハンドシェイクが連続的に行われることになる。さらに、アイドルコード（ＩＤＬ）は論理的なアイドル状態を示す８ｂ／１０ｂのコードである必要は無く、差動トランスミッタからの送信を停止した電気的なアイドル状態であってもよい。相手側に差動レシーバは、電気的なアイドル状態を検出すると、送信したプリアンブルコードに対する応答コードを受け取ったと認識する。
【０２１２】
（１０）本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＢＤ（Ｂｌｕ−ｒａｙ  Ｄｉｓｃ）、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記デジタル信号であるとしてもよい。
【０２１３】
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
また、本発明は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記録しており、前記マイクロプロセッサは、前記コンピュータプログラムにしたがって動作するとしてもよい。
【０２１４】
また、前記プログラムまたは前記デジタル信号を前記記録媒体に記録して移送することにより、または前記プログラムまたは前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
（１１）上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
【産業上の利用可能性】
【０２１５】
本発明は、マスタとスレーブとの間で１通信毎に全二重通信か半二重通信かの通信モードを選択でき、また、それら通信モード切替え時の通信路の方向制御およびビット同期を高速かつ確実に行える特徴を有する。このため、機器間あるいは機器内の機能ブロック間で効率的なデータ転送を行う通信システムに適用でき、有用である。
本発明に係るマスタ通信装置及びスレーブ通信装置は、装置を製造、販売する産業において、経営的、つまり反復的かつ継続的に利用され得る。
【符号の説明】
【０２１６】
１０    通信システム
１００    マスタ通信装置（マスタ）
１０１    スレーブ通信装置（スレーブ）
１０２    シリアル通信網
１０３    イニシエータ
１０４    ターゲット
１０５、１０６    通信インタフェース（Ｉ／Ｆ）部
１０７、１０８    トランザクション制御部
１０９、１１０    リンク制御部
１１１、１１２    送受信部
１１３    第１通信路（ＤＡＴ０ライン）
１１４    第２通信路（ＤＡＴ１ライン）
１１５    クロックライン
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第１装置と第２装置とからなり、前記第１装置と前記第２装置とを接続する第１及び第２の通信路を用いて全二重通信と半二重通信とを切り替えて処理対象であるデータの送受信を行うデータ通信システムであって、
前記第１装置は、
半二重通信時に当該第１装置がデータ送信側である場合において、半二重通信から全二重通信への切り替えを示す指示コードを前記第１の通信路を介して前記第２装置へ送出する第１送出手段と、
前記第１及び前記第２の通信路と接続された第１インターフェース部を、前記第２の通信路によりデータを送信する構成から受信する構成へと切り替える第１切替制御手段と、
前記第１切替制御手段による切替が完了し、且つ全二重通信への切替完了を示す応答コードを前記第２の通信路を介して前記第２装置から受け付けた後、全二重通信により処理対象となるデータの送受信を開始する第１通信制御手段とを備え、
前記第２装置は、
前記第１装置から前記指示コードを前記第１の通信路を介して受け付けると、前記第１及び前記第２の通信路と接続された第２インターフェース部において、前記第２の通信路によりデータを受信する構成から送信する構成へと切り替える第２切替制御手段と、
前記第２切替制御手段による切替が完了した後、前記応答コードを前記第２の通信路を介して前記第１装置へ送出する第２送出手段と、
前記応答コードを送出後、全二重通信により処理対象となるデータの送受信を開始する第２通信制御手段とを備える
ことを特徴とするデータ通信システム。
【請求項２】
前記第１送出手段は、さらに、前記第１通信制御手段による処理対象となるデータの送受信の開始に先立って、前記応答コードを受信した旨を示し、且つ前記第２装置からのデータの受信の待ち受け状態である旨を示す応答受信コードを前記第２装置へ送出し、
前記第１通信制御手段は、前記第１送出手段による前記応答受信コードの送出後、処理対象のデータの送受信を開始し、
前記第２通信制御手段は、前記応答受信コードの受信後、処理対象のデータの送受信を開始する
ことを特徴とする請求項１に記載のデータ通信システム。
【請求項３】
前記データ通信システムは、
データ送信側がデータ送信を抑止する旨の抑止コードを、データ受信側が前記抑止コードの受信に対するメッセージコードを、それぞれ相手側の装置へ送信するフロー制御によるデータ通信を行い、
前記第１送出手段は、前記指示コードの送出に先立って、前記抑止コードを前記第１の通信路を介して前記第２装置へ送出し、その後、前記指示コードを送出し、
前記第２送出手段は、前記第２切替制御手段による前記切替が完了すると、前記応答コードの代わりに前記メッセージコードを送出し、
前記第１通信制御手段は、前記第２装置から前記応答コードとして前記メッセージコードを受け付ける
ことを特徴とする請求項２に記載のデータ通信システム。
【請求項４】
前記データ通信システムは、
データ送信側がデータ送信を抑止する旨の抑止コードを、データ受信側が前記抑止コードの受信に対するメッセージコードを、それぞれ相手側の装置へ送信するフロー制御によるデータ通信を行い、
前記第１送出手段は、半二重通信によるデータ通信時において、前記指示コードの代わりに前記抑止コードを前記第２装置へ送出し、
前記第２切替制御手段は、前記第１装置から前記指示コードとして前記抑止コードを受信し、
前記第２送出手段は、前記第２切替制御手段による前記切替が完了すると、前記応答コードの代わりに前記メッセージコードを送出し、
前記第１通信制御手段は、前記第２装置から前記応答コードとして前記メッセージコードを受け付ける
ことを特徴とする請求項１に記載のデータ通信システム。
【請求項５】
全二重通信時において、前記第１の通信路は前記第１装置から前記第２装置へデータを送信するよう用いられ、前記第２の通信路は前記第２装置から前記第１装置へデータを送信するよう用いられ、
前記第１送出手段は、全二重通信時において、前記第２装置へデータを送信する旨を示すコードと半二重通信にてデータ通信を行う旨を示すコードとを含む送信要求コードを前記第１の通信路を介して前記第２装置へ送出し、
前記第２送出手段は、前記送信要求コードを前記第１の通信路を介して受け取ると、当該送信要求コードを受け付けた旨を示す要求受信コードを前記第２の通信路を介して前記第１装置へ送出し、
前記第１切替制御手段は、前記要求受信コードを前記第２の通信路を介して受け取ると、前記第１インターフェース部において、前記第２の通信路によりデータを受信する構成から送信する構成へと切り替え、
前記第２切替制御手段は、前記要求受信コードの送出した後、前記第２インターフェース部において、前記第２の通信路によりデータを送信する構成から受信する構成へと切り替え、
前記第１通信制御手段は、前記要求受信コードを受け取ってから所定の時間が経過した後、半二重通信により処理対象となるデータの送信を開始する
ことを特徴とする請求項１に記載のデータ通信システム。
【請求項６】
前記データ通信システムは、
前記第１装置が前記送信要求コードを送信した場合において、前記第２装置が受信待ちである旨の待ち受けコードを、前記第１装置が前記待ち受けコードの受信に対するメッセージコードを、それぞれ相手側の装置へ送信するフロー制御によるデータ通信を行い、
前記第２送出手段は、前記第２切替制御手段による前記第２の通信路によりデータを送信する構成から受信する構成への切り替えに先立って、前記待ち受けコードを前記第２の通信路を介して前記第１装置へ送出し、
前記第１送出手段は、前記要求受信コードを受け取り後、さらに前記待ち受けコードを前記第２の通信路を介して受け取ると、通信方式を全二重通信から半二重通信へと切り替える旨の指示コードを前記第１の通信路を介して前記第２装置へ送出し、
前記第１切替制御手段は、前記待ち受けコードの受け取り後、前記第１インターフェース部を前記第２の通信路によりデータを受信する構成から送信する構成への切り替え、
前記第２切替制御手段は、通信方式を全二重通信から半二重通信へと切り替える旨の指示コードを前記第１の通信路を介して受け取ると、前記第２インターフェース部を前記第２の通信路によりデータを送信する構成から受信する構成への切り替え、
前記第１送出手段は、前記待ち受けコードを受け取ってから前記所定の時間の経過すると、前記第１通信制御手段による処理対象となるデータの送信の開始に先立って、前記メッセージコードを前記第１の通信路を介して前記第２装置へ送出し、
前記第１通信制御手段は、前記第１送出手段による前記メッセージコードを送出した後、半二重通信により処理対象のデータの送信を開始する
ことを特徴とする請求項５に記載のデータ通信システム。
【請求項７】
前記データ通信システムは、
前記第１装置が前記送信要求コードを送信した場合において、前記第２装置が受信待ちである旨の待ち受けコードを、前記第１装置が前記待ち受けコードの受信に対するメッセージコードを、それぞれ相手側の装置へ送信するフロー制御によるデータ通信を行い、
前記第２送出手段は、前記第２切替制御手段による第２インターフェース部を前記第２の通信路によりデータを送信する構成から受信する構成への切り替えに先立って、前記待ち受けコードを前記第２の通信路を介して前記第１装置へ送出し、
前記第２切替制御手段は、前記待ち受けコードが送出されると、前記第２インターフェース部を前記第２の通信路によりデータを送信する構成から受信する構成への切り替え、
前記第１送出手段は、前記要求受信コードの受け取り後、さらに前記待ち受けコードを前記第２の通信路を介して受け取ると、前記待ち受けコードの受け取りから前記所定の時間が経過すると、前記第１通信制御手段による処理対象となるデータの送信の開始に先立って、前記メッセージコードを前記第１の通信路を介して前記第２装置へ送出し、
前記第１通信制御手段は、前記第１送出手段による前記メッセージコードを送出した後、半二重通信により処理対象のデータの送信を開始する
ことを特徴とする請求項５に記載のデータ通信システム。
【請求項８】
全二重通信時において、前記第１の通信路は前記第１装置から前記第２装置へデータを送信するよう用いられ、前記第２の通信路は前記第２装置から前記第１装置へデータを送信するよう用いられ、
前記第１送出手段は、前記第２装置からデータを受信する旨のコードと半二重通信にてデータ通信を行う旨のコードとを含む受信要求コードを前記第１の通信路を介して前記第２装置へ送出し、
前記第２送出手段は、前記受信要求コードを前記第１の通信路を介して受け取ると、当該受信要求コードを受け付けた旨を示す要求受信コードを前記第２の通信路を介して前記第１装置へ送出し、
前記第１切替制御手段は、前記要求受信コードを受け取った後、第１インターフェース部を前記第１の通信路によりデータを送信する構成から受信する構成へと切り替え、
前記第２切替制御手段は、前記要求受信コードの送出後、第２インターフェース部を前記第１の通信路によりデータを受信する構成から送信する構成へと切り替え、
前記第２通信制御手段は、前記要求受信コードを送出してから所定の時間が経過した後、半二重通信により処理対象のデータの送信を開始する
ことを特徴とする請求項１に記載のデータ通信システム。
【請求項９】
前記データ通信システムは、
前記第１装置が前記受信要求コードを送信した場合において、前記第１装置が受信待ちである旨の待ち受けコードを、前記第２装置が前記待ち受けコードの受信に対するメッセージコードを、それぞれ相手側の装置へ送信するフロー制御によるデータ通信を行い、
前記第１送出手段は、前記要求受信コードを受け取った後、前記第１切替制御手段による第１インターフェース部を前記第１の通信路によりデータを送信する構成から受信する構成への切り替えに先立って、前記待ち受けコードを前記第１の通信路を介して前記第２装置へ送出し、
前記第２送出手段は、前記要求受信コードの送出後、さらに前記待ち受けコードを前記第１の通信路を介して受け取ると、全二重通信から半二重通信への通信方式の切り替える旨の指示コードを前記第２の通信路を介して前記第１装置へ送出し、
前記第１切替制御手段は、前記要求受信コードの受け取り後、さらに全二重通信から半二重通信への通信方式の切り替える旨の指示コードを前記第２の通信路を介して受け取ると、第１インターフェース部を前記第１の通信路によりデータを送信する構成から受信する構成へと切り替え、
前記第２送出手段は、前記待ち受けコードを受け取ってから前記所定の時間の経過すると、前記第２通信制御手段による処理対象となるデータの送信の開始に先立って、前記メッセージコードを前記第２の通信路を介して前記第１装置へ送出し、
前記第２通信制御手段は、前記メッセージコードの送出した後、半二重通信により処理対象のデータの送信を開始する
ことを特徴とする請求項８に記載のデータ通信システム。
【請求項１０】
前記データ通信システムは、
前記第１装置が前記受信要求コードを送信した場合において、前記第１装置が受信待ちである旨の待ち受けコードを、前記第２装置が前記待ち受けコードの受信に対するメッセージコードを、それぞれ相手側の装置へ送信するフロー制御によるデータ通信を行い、
前記第１送出手段は、前記要求受信コードを受け取った後、前記第１切替制御手段による前記第１インターフェース部を前記第１の通信路によりデータを送信する構成から受信する構成への切り替えに先立って、前記待ち受けコードを前記第１の通信路を介して前記第２装置へ送出し、
前記第１切替制御手段は、前記待ち受けコードが送出されると、第１インターフェース部を前記第１の通信路によりデータを送信する構成から受信する構成へと切り替え、
前記第２送出手段は、前記要求受信コードの送出した後、さらに前記待ち受けコードを前記第１の通信路を介して受け取ると、前記待ち受けコードを受け取ってから前記所定の時間が経過した後、前記第２通信制御手段による処理対象となるデータの送信の開始に先立って、前記メッセージコードを前記第２の通信路を介して前記第１装置へ送出し、
前記第２通信制御手段は、前記第２送出手段による前記メッセージコードの送出した後、半二重通信により処理対象となるデータの送信を開始する
ことを特徴とする請求項５に記載のデータ通信システム。
【請求項１１】
全二重通信から半二重通信への切り替えにおける前記所定の時間は、前記第２装置が前記第２切替制御手段により半二重通信から全二重通信への切り替えを開始してから前記第１装置との間で処理すべきデータの送受信を開始する状態となるまでに要した期間である
ことを特徴とする請求項８に記載のデータ通信システム。
【請求項１２】
半二重通信で前記第１装置が処理対象となるデータを受信する場合において、
前記第２送出手段は、半二重通信から全二重通信への切り替えを示す指示コードを前記第２の通信路を介して前記第１装置へ送出し、
前記第２切替制御手段は、第２インターフェース部を前記第１の通信路によりデータを送信する構成から受信する構成へと切り替え、
前記第１切替制御手段は、半二重通信から全二重通信への切り替えを示す前記指示コードを前記第２の通信路を介して受け付けると、第１インターフェース部を前記第１の通信路によりデータを受信する構成から送信する構成へと切り替え、
前記第１送出手段は、前記第１切替制御手段による切り替えが完了した後、全二重通信への切替完了を示す前記応答コードを前記第１の通信路を介して前記第２装置へ送出し、
前記第１通信制御手段は、全二重通信への切替完了を示す前記応答コードを送出した後、全二重通信により処理対象となるデータの送受信を開始し、
前記第２通信制御手段は、前記第１装置から全二重通信への切替完了を示す応答コードを前記第１の通信路を介して受け付けると、全二重通信により処理対象となるデータの送受信を開始する
ことを特徴とする請求項８に記載のデータ通信システム。
【請求項１３】
前記第１装置が前記指示コードの送出に用いる前記第１の通信路は、
当該第１装置が全二重通信時において前記第２装置へデータを送信するために用いる通信路である
ことを特徴とする請求項１に記載のデータ通信システム。
【請求項１４】
他装置との間で接続された第１及び第２の通信路を用いて全二重通信と半二重通信とを切り替えて処理対象であるデータの送受信を行うデータ通信装置であって、
半二重通信時に当該データ通信装置がデータ送信側である場合において、半二重通信から全二重通信への切り替えを示す指示コードを前記第１の通信路を介して前記他装置へ送出する送出手段と、
前記第１及び第２の通信路と接続された第１インターフェース部を、前記第２の通信路によりデータを送信する構成から受信する構成へと切り替える切替制御手段と、
前記切替制御手段による切り替えが完了し、且つ全二重通信への切替完了を示す応答コードを前記第２の通信路を介して前記他装置から受け付けると、全二重通信により処理対象となるデータの送受信を開始する通信制御手段とを備える
ことを特徴とするデータ通信装置。
【請求項１５】
前記切替制御手段は、当該データ通信装置が半二重通信時においてデータ受信側である場合に、前記他装置から半二重通信から全二重通信への切り替えを示す指示コードを前記第２の通信路を介して受け付けると、前記第１インターフェース部を、前記第１の通信路によりデータを受信する構成から送信する構成へと切り替え、
前記送出手段は、前記切替制御手段により前記第１インターフェース部において前記第１の通信路によりデータを受信する構成から送信する構成へと切り替えが完了した後、全二重通信への切替完了を示す応答コードを前記第１の通信路を介して前記他装置へ送出し、
前記通信制御手段は、全二重通信への切替完了を示す前記応答コードを送出後、全二重通信により処理対象となるデータの送受信を開始する
ことを特徴とする請求項１４に記載のデータ通信装置。
【請求項１６】
前記他装置は、データ通信に用いられる第１端子及び第２端子を備えており、
前記データ通信装置は、
データ通信に用いられる第３端子及び第４端子を有し、前記他装置と着脱可能であり、前記他装置への装着時に前記第１端子と前記第３端子とが、前記第２端子と前記第４端子とがそれぞれ接続されることで前記第１及び前記第２の通信路を形成するメモリカード又はＩ／Ｏカードである
ことを特徴とする請求項１５に記載のデータ通信装置。
【請求項１７】
第１装置と第２装置とからなり、前記第１装置と前記第２装置とを接続する第１及び第２の通信路を用いて全二重通信と半二重通信とを切り替えて処理対象であるデータの送受信を行うデータ通信システムで用いられる通信方法であって、
前記第１装置は、
半二重通信時に当該第１装置がデータ送信側である場合において、半二重通信から全二重通信への切り替えを示す指示コードを前記第１の通信路を介して前記第２装置へ送出し、
前記第１及び前記第２の通信路と接続された第１インターフェース部を、前記第２の通信路によりデータを送信する構成から受信する構成へと切り替え、
前記第１インターフェース部の切替が完了し、且つ全二重通信への切替完了を示す応答コードを前記第２の通信路を介して前記第２装置から受け付けた後、全二重通信により処理対象となるデータの送受信を開始し、
前記第２装置は、
前記第１装置から前記指示コードを前記第１の通信路を介して受け付けると、前記第１及び前記第２の通信路と接続された第２インターフェース部において、前記第２の通信路によりデータを受信する構成から送信する構成へと切り替え、
前記第２インタフェース部の切替が完了した後、前記応答コードを前記第２の通信路を介して前記第１装置へ送出し、
前記応答コードを送出後、全二重通信により処理対象となるデータの送受信を開始する
ことを特徴とする通信方法。
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正の内容】
【図１】
2009153944.tif 000031
【図２】
2009153944.tif 000032
【図３】
2009153944.tif 000033
【図４】
2009153944.tif 000034
【図５】
2009153944.tif 000035
【図６】
2009153944.tif 000036
【図７】
2009153944.tif 000037
【図８】
2009153944.tif 000038
【図９】
2009153944.tif 000039
【図１０】
2009153944.tif 000040
【図１１】
2009153944.tif 000041
【図１２】
2009153944.tif 000042
【図１３】
2009153944.tif 000043
【図１４】
2009153944.tif 000044
【図１５】
2009153944.tif 000045
【図１６】
2009153944.tif 000046
【図１７】
2009153944.tif 000047
【図１８】
2009153944.tif 000048
【図１９】
2009153944.tif 000049
【図２０】
2009153944.tif 000050
【図２１】
2009153944.tif 000051
【図２２】
2009153944.tif 000052
【図２３】
2009153944.tif 000053
【図２４】
2009153944.tif 000054
【図２５】
2009153944.tif 000055
【図２６】
2009153944.tif 000056
【図２７】
2009153944.tif 000057
【図２８】
2009153944.tif 000058
【国際調査報告】
2009153944.tif 000059
2009153944.tif 000060
2009153944.tif 000061
2009153944.tif 000062