(57)【特許請求の範囲】
【請求項１】
他の通信装置と信号の送受信を行う送受信部と、
前記送受信部により、次に送信するデータのタイプを指定するプリアンブルが受信されて、そのプリアンブルに続いて受信された信号のビット列と、前記プリアンブルにより送信されることが指定されたタイプにおいて送信されるべきビット列とを比較することにより、エラーの発生を検出するエラー検出部と、
前記エラー検出部によりエラーの発生が検出された場合、前記プリアンブルに続いて所定ビット数に応じたクロックを送信するように、前記送受信部に対する指示を行うコンフリクト回避部と
を備える通信装置。
【請求項２】
前記コンフリクト回避部は、
前記送受信部により受信されたプリアンブルが、トークンおよびCRC（Cyclic Redundancy Check）5を含むCRCワードの送信を指定しているのに対して、前記プリアンブルに続いて受信された信号のビット列に基づいて、前記エラー検出部によりトークンエラーまたはCRCエラーが検出された場合、
前記プリアンブルに続いて、前記CRCワードのビット数、および、前記CRCワードのビット数と前記他の通信装置から読み出されるリードデータのビット数との差に対応する追加クロックのビット数に応じたクロックを送信させる
請求項１に記載の通信装置。
【請求項３】
前記コンフリクト回避部は、前記追加クロックを送信中に前記送受信部が受信した信号を無視する
請求項２に記載の通信装置。
【請求項４】
前記送受信部は、前記他の通信装置から前記リードデータが送信されてくるとしたときの、前記リードデータに続いて送受信される２ビットのプリアンブルの２ビット目のタイミングで、通信を途中で遮断することを指示するアボート信号を送信する
請求項３に記載の通信装置。
【請求項５】
前記コンフリクト回避部は、
前記送受信部により受信されたプリアンブルが、トークンおよびCRC（Cyclic Redundancy Check）5を含むCRCワードの送信を指定しているのに対して、前記プリアンブルに続いて受信された信号のビット列に基づいて、前記エラー検出部によりトークンエラーまたはCRCエラーが検出された場合、
前記トークン、前記CRC5、並びに、前記トークンおよび前記CRC5と前記他の通信装置からデータが読み出される際のビット数との差に対応するビット数のリザーブビットから構成されるフォーマットが用いられる前記CRCワードに対応するビット数のクロックを送信させる
請求項１に記載の通信装置。
【請求項６】
前記送受信部は、前記所定ビット数に応じたクロックを送信した後に、特定の通信モードの終了を指示するコマンドを送信する
請求項１に記載の通信装置。
【請求項７】
前記送受信部は、前記所定ビット数に応じたクロックを送信した後に、特定の通信モードにおける通信のリスタートを指示するコマンドを送信する
請求項１に記載の通信装置。
【請求項８】
前記エラー検出部は、前記データに含まれている２ビットのパリティのうち、一方を偶数パリティとし、他方を奇数パリティとして、前記送受信部が受信したデータに対するパリティチェックを行うことでエラーの発生を検出する
請求項１に記載の通信装置。
【請求項９】
前記送受信部は、通常の転送レートでデータ通信を行うSDR（Standard Data Rate）モード、および、SDRモードよりも高い転送レートでデータ通信を行うHDR（High Data Rate）モードで、信号の送受信を行うことができる
請求項１に記載の通信装置。
【請求項１０】
前記HDRモードは、少なくともDDR（Double Data Rate）モード、TSP(Ternary Symbol Pure-Bus)モード、および、TSL(Ternary Symbol Legacy-inclusive-Bus)モードの３つのモードを含む
請求項９に記載の通信装置。
【請求項１１】
前記送受信部は、１ビットずつ逐次的にシリアルデータを伝送するデータ信号線、および、所定の周波数のシリアルクロックを伝送するクロック信号線の２本の信号線を介して通信を行う
請求項１に記載の通信装置。
【請求項１２】
前記送受信部、I3C（Improved Inter Integrated Circuit）の規格に準じた通信を行う
請求項１に記載の通信装置。
【請求項１３】
他の通信装置と信号の送受信を行い、
次に送信するデータのタイプを指定するプリアンブルが受信されて、そのプリアンブルに続いて受信された信号のビット列と、前記プリアンブルにより送信されることが指定されたタイプにおいて送信されるべきビット列とを比較することにより、エラーの発生を検出し、
エラーの発生が検出された場合、前記プリアンブルに続いて所定ビット数に応じたクロックを送信する
ステップを含む通信方法。
【請求項１４】
他の通信装置と信号の送受信を行い、
次に送信するデータのタイプを指定するプリアンブルが受信されて、そのプリアンブルに続いて受信された信号のビット列と、前記プリアンブルにより送信されることが指定されたタイプにおいて送信されるべきビット列とを比較することにより、エラーの発生を検出し、
エラーの発生が検出された場合、前記プリアンブルに続いて所定ビット数に応じたクロックを送信する
ステップを含む通信処理をコンピュータに実行させるプログラム。
【請求項１５】
バスにおける制御の主導権を有する第１の通信装置と、
前記第１の通信装置による制御に従って通信を行う第２の通信装置と
を備え、
前記第１の通信装置が、
前記第２の通信装置と信号の送受信を行う送受信部と、
前記送受信部により、次に送信するデータのタイプを指定するプリアンブルが受信されて、そのプリアンブルに続いて受信された信号のビット列と、前記プリアンブルにより送信されることが指定されたタイプにおいて送信されるべきビット列とを比較することにより、エラーの発生を検出するエラー検出部と、
前記エラー検出部によりエラーの発生が検出された場合、前記プリアンブルに続いて所定ビット数に応じたクロックを送信するように、前記送受信部に対する指示を行うコンフリクト回避部と
を有する
通信システム。
【請求項１６】
前記コンフリクト回避部は、
前記送受信部により受信されたプリアンブルが、トークンおよびCRC（Cyclic Redundancy Check）5を含むCRCワードの送信を指定しているのに対して、前記プリアンブルに続いて受信された信号のビット列に基づいて、前記エラー検出部によりトークンエラーまたはCRCエラーが検出された場合、
前記プリアンブルに続いて、前記CRCワードのビット数、および、前記CRCワードのビット数と前記第２の通信装置から読み出されるリードデータのビット数との差に対応する追加クロックのビット数に応じたクロックを送信させる
請求項１５に記載の通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、通信装置、通信方法、プログラム、および、通信システムに関し、特に、より確実に通信を行うことができるようにした通信装置、通信方法、プログラム、および、通信システムに関する。
【０００２】
従来、複数のデバイスが実装されたボード内でバスを介したデバイス間の通信に用いられるバスＩＦ（Interface）として、例えば、I2C（Inter-Integrated Circuit）が多く利用されている。
【０００３】
また、近年、I2Cの高速化を実現することが求められており、次世代の規格としてI3C（Improved Inter Integrated Circuit）の規定が進行している。I3Cでは、マスタおよびスレーブは、２本の信号線を用いて双方向に通信を行うことができ、例えば、マスタからスレーブへのデータ転送（ライト転送）と、スレーブからマスタへのデータ転送（リード転送）とが行われる。
【０００４】
例えば、特許文献１には、ホスト・プロセッサとサブシステム・コントローラとを、I2Cにより相互接続するディジタル・データ処理システムが開示されている。また、特許文献２には、標準I2Cプロトコルの上部に層状に配置された通信プロトコルを実現する方法が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０００−９９４４８号公報
【特許文献２】特開２００２−１７５２６９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、上述したようなI3Cでは、例えば、マスタおよびスレーブにおいて、パリティやCRC（Cyclic Redundancy Check）などによるエラー検出が行われることが規定されているが、そのようなエラー検出が用意されていない信号の送受信も行われる。そのため、エラー検出が用意されていない信号にエラーが発生したときに、マスタおよびスレーブが、正常な通信を行うことができなくなることが懸念される。
【０００７】
本開示は、このような状況に鑑みてなされたものであり、より確実に通信を行うことができるようにするものである。
【課題を解決するための手段】
【０００８】
本開示の第１の側面の通信装置は、他の通信装置と信号の送受信を行う送受信部と、前記送受信部により、次に送信するデータのタイプを指定するプリアンブルが受信され、そのプリアンブルに続いて受信された信号のビット列と、前記プリアンブルにより送信されることが指定されたタイプにおいて送信されるべきビット列とを比較することにより、エラーの発生を検出するエラー検出部と、前記エラー検出部によりエラーの発生が検出された場合、前記プリアンブルに続いて所定ビット数に応じたクロックを送信するように、前記送受信部に対する指示を行うコンフリクト回避部とを備える。
【０００９】
本開示の第１の側面の通信方法またはプログラムは、他の通信装置と信号の送受信を行い、次に送信するデータのタイプを指定するプリアンブルが受信され、そのプリアンブルに続いて受信された信号のビット列と、前記プリアンブルにより送信されることが指定されたタイプにおいて送信されるべきビット列とを比較することにより、エラーの発生を検出し、エラーの発生が検出された場合、前記プリアンブルに続いて所定ビット数に応じたクロックを送信するステップを含む。
【００１０】
本開示の第１の側面においては、他の通信装置と信号の送受信が行われ、次に送信するデータのタイプを指定するプリアンブルが受信されて、そのプリアンブルに続いて受信された信号のビット列と、プリアンブルにより送信されることが指定されたタイプにおいて送信されるべきビット列とを比較することにより、エラーの発生が検出される。そして、エラーの発生が検出された場合、プリアンブルに続いて所定ビット数に応じたクロックが送信される。
【００１１】
本開示の第２の側面の通信システムは、バスにおける制御の主導権を有する第１の通信装置と、前記第１の通信装置による制御に従って通信を行う第２の通信装置とを備え、前記第１の通信装置が、前記第２の通信装置と信号の送受信を行う送受信部と、前記送受信部により、次に送信するデータのタイプを指定するプリアンブルが受信されて、そのプリアンブルに続いて受信された信号のビット列と、前記プリアンブルにより送信されることが指定されたタイプにおいて送信されるべきビット列とを比較することにより、エラーの発生を検出するエラー検出部と、前記エラー検出部によりエラーの発生が検出された場合、前記プリアンブルに続いて所定ビット数に応じたクロックを送信するように、前記送受信部に対する指示を行うコンフリクト回避部とを有する。
【００１２】
本開示の第２の側面においては、バスにおける制御の主導権を有する第１の通信装置と、第１の通信装置による制御に従って通信を行う第２の通信装置とにより通信が行われる。そして、第１の通信装置において、第２の通信装置と信号の送受信が行われ、次に送信するデータのタイプを指定するプリアンブルが受信されて、そのプリアンブルに続いて受信された信号のビット列と、プリアンブルにより送信されることが指定されたタイプにおいて送信されるべきビット列とを比較することにより、エラーの発生が検出される。そして、エラーの発生が検出された場合、プリアンブルに続いて所定ビット数に応じたクロックが送信される。
【発明の効果】
【００１３】
本開示の第１および第２の側面によれば、より確実に通信を行うことができる。
【図面の簡単な説明】
【００１４】
【図１】本技術を適用したバスＩＦの一実施の形態の構成例を示すブロック図である。
【図２】コンフリクトエラーについて説明する図である。
【図３】コンフリクトエラーを回避するフォーマットの一例を示す図である。
【図４】マスタのDDRモードでの通信処理を説明するフローチャートである。
【図５】マスタの構成例を示す回路図である。
【図６】コンフリクトエラーを回避するフォーマットの他の例を示す図である。
【図７】コンフリクトエラーを回避するフォーマットの他の例を示す図である。
【図８】本技術を適用したコンピュータの一実施の形態の構成例を示すブロック図である。
【発明を実施するための形態】
【００１５】
以下、本技術を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。
【００１６】
＜バスＩＦの構成例＞
【００１７】
図１は、本技術を適用したバスＩＦの一実施の形態の構成例を示すブロック図である。
【００１８】
図１に示されているバスＩＦ１１は、マスタ１２と３台のスレーブ１３−１乃至１３−３とが、データ信号線１４−１およびクロック信号線１４−２を介して接続されて構成される。
【００１９】
マスタ１２は、バスＩＦ１１における制御の主導権を有しており、データ信号線１４−１およびクロック信号線１４−２を介して、スレーブ１３−１乃至１３−３と通信を行うことができる。
【００２０】
スレーブ１３−１乃至１３−３は、マスタ１２による制御に従って、データ信号線１４−１およびクロック信号線１４−２を介して、マスタ１２と通信を行うことができる。なお、スレーブ１３−１乃至１３−３は、それぞれ同様に構成されており、以下、それらを区別する必要がない場合、単にスレーブ１３と称し、スレーブ１３を構成する各ブロックについても同様とする。
【００２１】
データ信号線１４−１およびクロック信号線１４−２は、マスタ１２およびスレーブ１３の間で信号を伝送するのに用いられる。例えば、バスＩＦ１１では、データ信号線１４−１を介して、１ビットずつ逐次的にシリアルデータ（SDA：Serial Data）が伝送され、クロック信号線１４−２を介して、所定の周波数のシリアルクロック（SCL：Serial Clock）が伝送される。
【００２２】
また、バスＩＦ１１では、I3Cの規格に準じて、通信速度が異なる複数の伝送方式が規定されており、マスタ１２は、それらの伝送方式を切り替えることができる。例えば、バスＩＦ１１では、データの転送レートに応じて、通常の転送レートでデータ通信を行うSDR（Standard Data Rate）モード、および、SDRモードよりも高い転送レートでデータ通信を行うHDR（High Data Rate）モードが規定されている。また、HDRモードでは、DDR（Double Data Rate）モード、TSP(Ternary Symbol Pure-Bus)モード、および、TSL(Ternary Symbol Legacy-inclusive-Bus)モードの３つのモードが規格で定義されている。なお、バスＩＦ１１では、通信を開始するときにはSDRモードで通信を行うことが規定されている。
【００２３】
マスタ１２は、送受信部２１、エラー検出部２２、確認信号検出部２３、およびコンフリクト回避部２４を備えて構成される。
【００２４】
送受信部２１は、データ信号線１４−１およびクロック信号線１４−２を介して、スレーブ１３と信号の送受信を行う。例えば、送受信部２１は、クロック信号線１４−２を駆動することにより送信するシリアルクロックのタイミングに合わせて、データ信号線１４−１に対する駆動を行う（電位をＨレベルまたはＬレベルに切り替える）ことにより、スレーブ１３に信号を送信する。また、送受信部２１は、クロック信号線１４−２のシリアルクロックのタイミングに合わせて、スレーブ１３がデータ信号線１４−１に対する駆動を行うことによって、スレーブ１３から送信されてくる信号を受信する。なお、クロック信号線１４−２に対する駆動は、常に、マスタ１２側により行われる。
【００２５】
エラー検出部２２は、送受信部２１が受信した信号に発生しているエラーを検出する。例えば、エラー検出部２２は、送受信部２１が受信した信号に対するパリティチェックや巡回冗長検査（CRC）などを行ったり、スレーブ１３からマスタ１２へ送信権を移行する際に発行されるトークンを確認したりすることで、エラーを検出することができる。そして、エラー検出部２２は、送受信部２１が受信した信号にエラーが発生していることを検出した場合、例えば、送受信部２１に対してスレーブ１３との通信を最初からやり直すように指示することができる。
【００２６】
例えば、エラー検出部２２は、スレーブ１３から送信されてくるデータに含まれている２ビットのパリティのうち、一方を偶数パリティとし、他方を奇数パリティとして、送受信部２１が受信したデータに対するパリティチェックを行うことでエラーの発生を検出する。これにより、エラー検出部２２は、マスタ１２およびスレーブ１３のどちらもデータ信号線１４−１に対する駆動が行われないような状態が発生しても、データが正しいものであるか否かを検出することができる。
【００２７】
確認信号検出部２３は、送受信部２１から送信された信号を受信したスレーブ１３から送信されてくるACK（受信確認信号）またはNACK（非受信確認信号）を検出することにより、スレーブ１３がコマンドやデータなどの受信に成功したか否かを確認する。例えば、バスＩＦ１１では、信号にエラーが発生せずに、スレーブ１３がコマンドやデータなどの受信に成功したときには、スレーブ１３からマスタ１２にACKを送信するように規定されている。また、バスＩＦ１１では、信号にエラーが発生して、スレーブ１３がコマンドやデータなどの受信に失敗したときには、スレーブ１３からマスタ１２にNACKを送信するように規定されている。
【００２８】
従って、確認信号検出部２３は、マスタ１２から送信されるコマンドやデータなどに対して、スレーブ１３から送信されてくるACKを検出した場合には、スレーブ１３がコマンドやデータなどを受信することに成功したと確認することができる。一方、確認信号検出部２３は、マスタ１２から送信されるコマンドやデータなどに対して、スレーブ１３から送信されてくるNACKを検出した場合には、スレーブ１３がコマンドやデータなどを受信することに失敗したと確認することができる。
【００２９】
コンフリクト回避部２４は、例えば、図３を参照して後述するように、送受信部２１により、CRCワードの送信を指示するプリアンブルが受信され、エラー検出部２２により、そのプリアンブルに続いて受信された信号にトークンエラーまたはCRCエラーの発生が検出された場合、プリアンブルに続いて所定ビット数に応じたクロックを送信した後に、通信を途中で遮断することを指示するアボート信号を送信するように、送受信部２１に対する指示を行う。これにより、コンフリクト回避部２４は、例えば、スレーブ１３から送信されるリードデータと、マスタ１２から送信されるHDR終了コマンドによりコンフリクトが発生することを回避することができる。
【００３０】
また、コンフリクト回避部２４は、例えば、確認信号検出部２３によりNACKが検出された場合、NACKに続く所定数のビットを無視した後に、通信を途中で遮断することを指示するアボート信号を送信するように、送受信部２１に対する指示を行う。これにより、コンフリクト回避部２４は、例えば、スレーブ１３から送信されるリードデータと、マスタ１２から送信されるHDR終了コマンドによりコンフリクトが発生することを回避することができる。
【００３１】
スレーブ１３は、送受信部３１およびエラー検出部３２を備えて構成される。
【００３２】
送受信部３１は、データ信号線１４−１およびクロック信号線１４−２を介して、マスタ１２と信号の送受信を行う。例えば、送受信部３１は、クロック信号線１４−２のシリアルクロックのタイミングに合わせて、マスタ１２がデータ信号線１４−１に対する駆動を行うことによって、マスタ１２から送信されてくる信号を受信する。また、送受信部３１は、クロック信号線１４−２のシリアルクロックのタイミングに合わせて、データ信号線１４−１に対する駆動を行うことによって、マスタ１２に信号を送信する。
【００３３】
エラー検出部３２は、マスタ１２のエラー検出部２２と同様に、送受信部３１が受信した信号に発生しているエラーを検出する。そして、エラー検出部３２は、送受信部３１が受信した信号にエラーが発生していない場合、その信号により伝送されるコマンドやデータなどの受信に成功したことを伝えるACKを、送受信部３１によりマスタ１２に送信させる。一方、エラー検出部３２は、送受信部３１が受信した信号にエラーが発生していた場合、その信号により伝送されるコマンドやデータなどの受信に失敗したことを伝えるNACKを、送受信部３１によりマスタ１２に送信させる。
【００３４】
さらに、エラー検出部３２は、例えば、送受信部３１が受信した信号にエラーが発生し、正常な通信を行うことができない場合には、その後の一切の通信を無視し、マスタ１２に対する応答を停止してスレーブ１３を待機状態とさせる。
【００３５】
以上のようにバスＩＦ１１は構成されており、マスタ１２およびスレーブ１３は、データ信号線１４−１およびクロック信号線１４−２を介して信号を送受信することができ、コンフリクト回避部２４によってコンフリクトの発生を回避して、より確実に通信を行うことができる。
【００３６】
＜コンフリクトの発生の説明＞
【００３７】
ここで、コンフリクト回避部２４によるコンフリクトの発生を回避する手法について説明する前に、図２を参照して、コンフリクトの発生について説明する。
【００３８】
バスＩＦ１１では、DDRモード時において、プリアンブルと呼ばれる２ビットの信号を使用して、次に送信するデータのタイプを指定するように規定されている。ところで、プリアンブルには、パリティやCRCによるエラー検出が用意されていないため、プリアンブルにエラーが発生した場合には、そのエラーを検出することができない。
【００３９】
例えば、スレーブ１３が、マスタ１２からのデータの読み出しを指示するリードコマンドに応じてリードデータを送信した後のプリアンブルでは、１ビット目はスレーブ１３により駆動され、２ビット目はＨレベルに維持する（High-Keeper）ように規定されている。そして、スレーブ１３は、その１ビット目によって、CRCワードおよびリードデータのいずれか一方が続いて送信されることをマスタ１２に通知することができる。例えば、プリアンブルに続いてCRCワードを送信する場合には、リードデータを送信した後のプリアンブルの１ビット目を０に駆動するように規定されている。一方、プリアンブルに続いてリードデータを送信する場合には、リードデータを送信した後のプリアンブルの１ビット目を１に駆動するように規定されている。
【００４０】
しかしながら、このプリアンブルの１ビット目において、１ビットの値が反転する１ビットエラーが発生した場合、例えば、マスタ１２は、リードデータが送信されてくることを、CRCワードが送信されてくるものと誤認識することになる。
【００４１】
即ち、図２の上側に示すように、スレーブ１３は、リードデータを送信する場合にはプリアンブルの１ビット目を１に駆動し、プリアンブルに続いて、リードデータ（DDR Data）の送信を行う。なお、図２において、グレーのハッチングが施されている部分は、スレーブ１３により駆動が行われていることを表しており、斜線のハッチングが施されている部分は、Ｈレベルに維持することを表している。
【００４２】
これに対し、プリアンブルの１ビット目に１ビットエラーが発生してしまい、図２の下側に示すように、プリアンブルの１ビット目が０になった場合、マスタ１２は、スレーブ１３からCRCワード（DDR CRC）が送信されてくるものと誤認識することになる。従って、この場合、マスタ１２は、CRCワードに対応する１０ビット（Token(0xC)、CRC5、およびPrepare=Setup）を受信した後、HDRモードによる通信を終了することを指示するHDR終了コマンド（HDR Exit）を送信することになる。
【００４３】
これにより、スレーブ１３から送信されるリードデータ（の後半部分）と、マスタ１２から送信されるHDR終了コマンドがコンフリクトすることが懸念される。従って、その後、マスタ１２がHDR終了コマンドを送信しても、スレーブ１３は、HDR終了コマンドを正常に受信することができないためHDRモードを終了させることができずに、バスＩＦ１１がデッドロックして、通信不能な状態となることが想定される。
【００４４】
そこで、バスＩＦ１１では、マスタ１２は、CRCワードの送信を指定するプリアンブルを受信したにもかかわらず、そのプリアンブルに続いて受信した信号がCRCワードに一致しない（即ち、トークンエラーまたはCRCエラーが発生した）場合、プリアンブルに１ビットエラーが発生したものと推定する。そして、この場合、マスタ１２は、CRCワードに続いて所定ビット数の追加クロックを送信した後に、通信を途中で遮断することを指示するアボート信号を送信するように規定される。これにより、上述したような１ビットエラーが発生したとしても、スレーブ１３から送信されるリードデータと、マスタ１２から送信されるHDR終了コマンドがコンフリクトすることを回避することができる。
【００４５】
＜コンフリクトの回避の説明＞
【００４６】
図３には、バスＩＦ１１において、リードデータを送信した後のプリアンブルの１ビット目に１ビットエラーが発生することによるコンフリクトを回避するように、マスタ１２が、コンフリクト防止用のクロックを追加するフォーマットが示されている。
【００４７】
図３に示すように、バスＩＦ１１では、マスタ１２が、スレーブ１３から送信されてきたリードデータ（DDR Data）に続くプリアンブルにエラーが発生したと推定した場合、CRCワードとリードデータとの差に対応する９ビットの追加クロックを送信するように規定される。そして、この追加クロックの送信中に受信したデータは無視される。
【００４８】
つまり、図２を参照して説明したように、リードデータに続くプリアンブルの１ビット目に１ビットエラーが発生して、スレーブ１３がリードデータを送信するにもかかわらず、マスタ１２はCRCワードが送信されてくるものと誤認識したとする。この場合、マスタ１２は、CRCワードに対応する９ビットにおいてトークンエラーまたはCRCエラーが発生することを検出するが、これらのエラーを、プリアンブルに１ビットエラーが発生したことによるものと推定することができる。
【００４９】
ここで、バスＩＦ１１では、スレーブ１３は、リードコマンド（READ CMD）を受信し、その後のプリアンブルに続いて１８ビットのリードデータ（DDR Data）を送信するように規定されている。さらに、バスＩＦ１１では、スレーブ１３からリードデータが送信された後のプリアンブルにおいて、１ビット目はスレーブ１３により駆動が行われ、２ビット目はマスタ１２により駆動が行われるように規定されている。そして、バスＩＦ１１では、このプリアンブルの２ビット目が０である場合、マスタ１２からスレーブ１３に対して通信を途中で遮断するマスターアボート（Master Abort）を指示するアボート信号として規定されている。なお、マスターアボートを確実に行うために、リードデータの後に送受信されるプリアンブルの２ビット目に対する駆動は、マスタ１２が常に行う。
【００５０】
従って、図３に示すように、追加クロックに続くプリアンブルの２ビット目が０に駆動された場合、スレーブ１３は、マスタ１２からアボート信号が送信されたことを検出して、リードデータの送信を中断することができる。これにより、このプリアンブルに続いて、マスタ１２が、HDR終了コマンド（HDR Exit）を送信すると、スレーブ１３は、HDR終了コマンドに従って、HDRモードを終了することができる。その後、マスタ１２およびスレーブ１３は、SDRモードから通信をやり直すことになる。
【００５１】
つまり、マスタ１２は、トークンエラーまたはCRCエラーを検出した場合には、プリアンブルエラーと推定する。そして、マスタ１２は、図２に示したように、CRCワードを受信した直後にHDR終了コマンドを送信するのではなく、図３に示すように、CRCワードに続いて追加クロックを送信して、追加クロックに続くプリアンブルを送信した後に、HDR終了コマンドを送信する。
【００５２】
これにより、マスタ１２が、リードデータを受信した後のプリアンブルの１ビット目が０であることを検出した場合でも、図２を参照して説明したようなコンフリクトの発生を回避することができる。つまり、スレーブ１３がリードデータを送信するプリアンブルを、マスタ１２がCRCワードを送信するプリアンブルと誤認識したとしても、バスＩＦ１１がデッドロックすることを回避することができ、より確実に通信を行うことができる。
【００５３】
＜コンフリクトの発生を回避する通信方法＞
【００５４】
図４は、マスタ１２が、HDRモードのひとつであるDDRモードでスレーブ１３からデータを読み出す通信処理（DDR Read）を説明するフローチャートである。
【００５５】
ステップＳ１１において、マスタ１２は、通信をSDRモードからHDRモードに切り替える処理を行う。具体的には、マスタ１２では、送受信部２１が、データ信号線１４−１およびクロック信号線１４−２を駆動して、SDRモードにおいて、バスＩＦ１１を構成する全てのスレーブ１３を対象として一斉にコマンドを送信することを通知するブロードキャストコマンド（0ｘ7E+R/W=0）を送信する。その後、マスタ１２では、確認信号検出部２３が、ブロードキャストコマンドの受信が成功したことを確認するためにスレーブ１３から送信されてくるACKを受信すると、送受信部２１が、HDRモードに入るためのコモンコマンドコード（ENTHDR CCC(0ｘ20)）を送信する。
【００５６】
ステップＳ１２において、マスタ１２の送受信部２１は、データ信号線１４−１およびクロック信号線１４−２を駆動して、リードコマンドを送信する。
【００５７】
ステップＳ１３において、送受信部２１は、ステップＳ１２で送信したリードコマンドに応じてスレーブ１３から送信されてくるリードデータを受信し、さらに、リードデータに続いて送信されてくるプリアンブルも受信する。
【００５８】
ステップＳ１４において、送受信部２１は、ステップＳ１３で受信したプリアンブルはリードデータおよびCRCワードのどちらの送信を指定しているかを判定する。
【００５９】
ステップＳ１４において、送受信部２１が、プリアンブルはリードデータの送信を指定していると判定した場合、処理はステップＳ１３に戻り、以下、同様の処理が繰り返される。一方、ステップＳ１４において、送受信部２１が、プリアンブルはCRCワードの送信を指定していると判定した場合、処理はステップＳ１５に進む。
【００６０】
ステップＳ１５において、送受信部２１は、ステップＳ１３で受信したプリアンブルに続いて送信されてくる信号を受信し、エラー検出部２２は、その信号にエラーが発生しているか否かを判定する。
【００６１】
ステップＳ１５において、エラー検出部２２が、CRCワードの送信を指定しているプリアンブルに続いて送信されてくる信号にエラーが発生していると判定した場合、処理はステップＳ１６に進む。即ち、この場合、エラー検出部２２によりトークンエラーまたはCRCエラーが検出されると、コンフリクト回避部２４は、プリアンブルにエラーが発生したものと推定する。
【００６２】
ステップＳ１６において、エラー検出部２２は、図３を参照して説明したような追加クロックを送信し、その後に、通信を途中で遮断することを指示するアボート信号を送信するように、送受信部２１に対する指示を行う。これに従い、送受信部２１は、追加クロックを送信した後、スレーブ１３にアボート信号を送信する。
【００６３】
ステップＳ１６の処理後、送受信部２１は、追加クロックに続いて、HDR終了コマンドを送信する。また、ステップＳ１５でエラーが発生していないと判定された場合も、ステップＳ１７において、送受信部２１は、HDR終了コマンドを送信する。これにより、マスタ１２がDDRモードでスレーブ１３からデータを読み出す通信処理（DDR Read）は終了される。
【００６４】
以上のように、バスＩＦ１１では、スレーブ１３が送信したリードデータの送信を指示するプリアンブルに１ビットエラーが発生したとしても、コンフリクトが発生することを回避して、より確実に通信を行うことができる。
【００６５】
＜マスタの回路図＞
【００６６】
次に、図５は、マスタ１２の構成例を示す回路図である。
【００６７】
図５に示すように、マスタ１２は、SCL駆動制御部５１、増幅部５２、Ｈレベル維持部５３、増幅部５４、シリアル変換部５５、コンフリクトエラー検出器５６、パリティエラー検出器５７、CRC5エラー検出部５８、パラレル変換部５９、トークンエラー検出器６０、ACK/NACK検出器６１、プリアンブルエラー検出器６２、およびステートマシン（FSM：Finite State Machine）６３を備えて構成される。
【００６８】
SCL駆動制御部５１は、ステートマシン６３から出力される基準となる周波数の信号に従って、クロック信号線１４−２を介してスレーブ１３に供給するシリアルクロックを生成して、クロック信号線１４−２の駆動を制御する。
【００６９】
増幅部５２は、SCL駆動制御部５１により生成されたクロック信号を、クロック信号線１４−２を介して伝送するのに必要な所定のレベルまで増幅し、クロック信号線１４−２に出力する。
【００７０】
Ｈレベル維持部５３は、データ信号線１４−１のレベルをＨレベルに維持する。
【００７１】
増幅部５４は、データ信号線１４−１を介して送信するシリアルデータを所定のレベルまで増幅して出力し、データ信号線１４−１を介して送信されてきたシリアルデータを、マスタ１２の内部での処理に必要なレベルに増幅する。
【００７２】
シリアル変換部５５は、ステートマシン６３から出力されるパラレルデータを、シリアルデータに変換して出力する。
【００７３】
コンフリクトエラー検出器５６は、シリアル変換部５５から出力されるシリアルデータと、データ信号線１４−１を介して送信されてきたシリアルデータとを比較することにより、データ信号線１４−１上のコンフリクトエラーを検出する。
【００７４】
パリティエラー検出器５７は、偶数または奇数に基づいてビットエラーを検出するために付加されるパリティビットを用いて、データ信号線１４−１を介して送信されてきたシリアルデータのエラーを検出し、そのエラー検出結果をステートマシン６３に通知する。
【００７５】
CRC5エラー検出部５８は、図１のエラー検出部２２に対応し、CRCに基づいてビットエラーを検出するために付加される5bitのデータを用いて、データ信号線１４−１を介して送信されてきたシリアルデータのエラーを検出し、そのエラー検出結果をステートマシン６３に通知する。
【００７６】
パラレル変換部５９は、データ信号線１４−１を介して送信されてきたシリアルデータを、パラレルデータに変換して出力する。
【００７７】
トークンエラー検出器６０は、図１のエラー検出部２２に対応し、パラレル変換部５９により変換されたパラレルデータに含まれているトークンのビット列を確認することで、トークンにエラーが発生しているか否かを検出し、そのエラー検出結果をステートマシン６３に通知する。
【００７８】
ACK/NACK検出器６１は、図１の確認信号検出部２３に対応し、スレーブ１３から送信されてくるACKまたはNACKを、パラレル変換部５９により変換されたパラレルデータから検出して、その検出結果（ACK/NACK）をステートマシン６３に通知する。
【００７９】
プリアンブルエラー検出器６２は、パラレル変換部５９により変換されたパラレルデータに含まれているプリアンブルにエラーが発生しているか否かを検出し、そのエラー検出結果をステートマシン６３に通知する。
【００８０】
ステートマシン６３は、入力条件と現在の状態によって、次の状態が決まる順序回路であり、例えば、図１の送受信部２１およびコンフリクト回避部２４として機能する。即ち、ステートマシン６３は、CRC5エラー検出部５８およびトークンエラー検出器６０によるエラー検出結果を入力として、トークンエラーおよびCRCエラーが発生していない場合には、通常通りに、HDRモードを終了する状態とする。一方、ステートマシン６３は、トークンエラーおよびCRCエラーが発生した場合には、CRCワードに続いて追加クロックを送信し、その後のプリアンブルの２ビット目によってアボート信号を送信する状態とする。
【００８１】
このようにマスタ１２は構成されており、上述したように、スレーブ１３が送信したリードデータの送信を指示するプリアンブルを、CRCワードを送信するプリアンブルと誤認識したとしても、バスＩＦ１１がデッドロックすることを回避することができ、より確実に通信を行うことができる。
【００８２】
ところで、バスＩＦ１１では、CRCワードのビット数が、リードデータのビット数（１８ビット）と異なる９ビット（トークンの４ビットおよびCRC5の５ビット）として規定されているとき、上述したようなコンフリクトが発生することになる。そこで、例えば、CRCワードのビット数が、リードデータのビット数と同一の１８ビットとなるようなフォーマットを規定したときには、コンフリクトの発生を回避することができる。
【００８３】
つまり、図６に示すように、CRCワードのフォーマットとして、トークン（Token(0xC)）とCRC5との間に、９ビットのリザーブビットが予め挿入された形式を採用してワードアラインを揃えることで、追加クロックの送信を行わなくてもよくなる。このリザーブビットのビット数は、トークンおよびCRC5のビット数（９ビット）と、リードデータのビット数（１８ビット）との差に対応する。そして、このようなフォーマットのCRCワードを用いる場合においても、マスタ１２は、０および１のビット列のプリアンブルを受信した後、トークンエラー、CRCエラー、および、所定長以下のCRCワードの受信のいずれかを検出した場合、スレーブ１３を安全に停止させるため、以後、通常のマスターアボートと同様に通信を終了させることができる。
【００８４】
また、図６に示すように、CRCワードの受信直後のビットから、データ信号線１４−１に対する駆動が、スレーブ１３からマスタ１２に切り替えられるようにすることで、安全に早く通信を終了させることができる。
【００８５】
なお、図３を参照して上述した実施の形態では、追加クロックを送信した後のプリアンブルに続いて、マスタ１２がHDR終了コマンドを送信する例について説明したが、コンフリクトを回避して通信を回復することができれば、HDR終了コマンドの送信に限定されることはない。
【００８６】
例えば、図７に示すように、追加クロックを送信した後のプリアンブルに続いて、図３のHDR終了コマンドに替えて、マスタ１２は、HDRモードにおける通信をリスタートすることを指示するHDRリスタートコマンド（HDR Restart）を送信してもよい。このように、バスＩＦ１１では、マスターアボートに従って通信を途中で遮断した後、HDRリスタートコマンドにより通信を再開することができる。
【００８７】
なお、例えば、コンフリクト回避部２４は、送受信部２１が、所定の長さのリードデータを受信することなく、CRCワードを受信した場合にもエラーが発生したものと推定し、上述したように追加クロックを送信した後にアボート信号を送信するように、送受信部２１に対する指示を行ってもよい。
【００８８】
なお、本技術は、I3Cの規格に従ったバスＩＦ１１に限定されることはなく、その他の規格に従ったバスＩＦ１１に適用することができる。また、図１に示すバスＩＦ１１では、スレーブ１３−１乃至１３−３が接続された構成例が示されているが、スレーブ１３は、例えば、１台または２台でもよく、あるいは、３台以上でもよい。
【００８９】
なお、上述のフローチャートを参照して説明した各処理は、必ずしもフローチャートとして記載された順序に沿って時系列に処理する必要はなく、並列的あるいは個別に実行される処理（例えば、並列処理あるいはオブジェクトによる処理）も含むものである。また、プログラムは、１のCPUにより処理されるものであっても良いし、複数のCPUによって分散処理されるものであっても良い。
【００９０】
また、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
【００９１】
また、上述した一連の処理は、ハードウエアにより実行することもできるし、ソフトウエアにより実行することもできる。一連の処理をソフトウエアにより実行する場合には、そのソフトウエアを構成するプログラムが、専用のハードウエアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、プログラムが記録されたプログラム記録媒体からインストールされる。
【００９２】
＜ハードウエアの構成例＞
【００９３】
図８は、上述した一連の処理をプログラムにより実行するコンピュータのハードウエアの構成例を示すブロック図である。
【００９４】
コンピュータにおいて、CPU（Central Processing Unit）１０１，ROM（Read Only Memory）１０２，RAM（Random Access Memory）１０３、およびEEPROM（Electronically Erasable and Programmable Read Only Memory）１０４は、バス１０５により相互に接続されている。バス１０５には、さらに、入出力インタフェース１０６が接続されており、入出力インタフェース１０６が外部（例えば、図１のデータ信号線１４−１およびクロック信号線１４−２）に接続される。
【００９５】
以上のように構成されるコンピュータでは、CPU１０１が、例えば、ROM１０２およびEEPROM１０４に記憶されているプログラムを、バス１０５を介してRAM１０３にロードして実行することにより、上述した一連の処理が行われる。また、コンピュータ（CPU１０１）が実行するプログラムは、ROM１０２に予め書き込んでおく他、入出力インタフェース１０６を介して外部からEEPROM１０４にインストールしたり、更新したりすることができる。
【００９６】
なお、本技術は以下のような構成も取ることができる。
（１）
他の通信装置と信号の送受信を行う送受信部と、
前記送受信部により、次に送信するデータのタイプを指定するプリアンブルが受信されて、そのプリアンブルに続いて受信された信号のビット列と、前記プリアンブルにより送信されることが指定されたタイプにおいて送信されるべきビット列とを比較することにより、エラーの発生を検出するエラー検出部と、
前記エラー検出部によりエラーの発生が検出された場合、前記プリアンブルに続いて所定ビット数に応じたクロックを送信した後に、通信を途中で遮断することを指示するアボート信号を送信するように、前記送受信部に対する指示を行うコンフリクト回避部と
を備える通信装置。
（２）
前記コンフリクト回避部は、
前記送受信部により受信されたプリアンブルが、トークンおよびCRC（Cyclic Redundancy Check）5を含むCRCワードの送信を指定しているのに対して、前記プリアンブルに続いて受信された信号のビット列に基づいて、前記エラー検出部によりトークンエラーまたはCRCエラーが検出された場合、
前記プリアンブルに続いて、前記CRCワードのビット数、および、前記CRCワードのビット数と前記他の通信装置から読み出されるリードデータのビット数との差に対応する追加クロックのビット数に応じたクロックを送信した後に、前記アボート信号の送信を行わせる
上記（１）に記載の通信装置。
（３）
前記コンフリクト回避部は、前記追加クロックを送信中に前記送受信部が受信した信号を無視する
上記（２）に記載の通信装置。
（４）
前記送受信部は、前記他の通信装置から前記リードデータが送信されてくるとしたときの、前記リードデータに続いて送受信される２ビットのプリアンブルの２ビット目のタイミングで前記アボート信号を送信する
上記（３）に記載の通信装置。
（５）
前記コンフリクト回避部は、
前記送受信部により受信されたプリアンブルが、トークンおよびCRC（Cyclic Redundancy Check）5を含むCRCワードの送信を指定しているのに対して、前記プリアンブルに続いて受信された信号のビット列に基づいて、前記エラー検出部によりトークンエラーまたはCRCエラーが検出された場合、
前記トークン、前記CRC5、並びに、前記トークンおよび前記CRC5と前記他の通信装置からデータが読み出される際のビット数との差に対応するビット数のリザーブビットから構成されるフォーマットが用いられる前記CRCワードに対応するビット数のクロックを送信した後に、前記アボート信号の送信を行わせる
上記（２）に記載の通信装置。
（６）
前記送受信部は、前記アボート信号に続いて、特定の通信モードの終了を指示するコマンドを送信する
上記（１）から（５）までのいずれかに記載の通信装置。
（７）
前記送受信部は、前記アボート信号に続いて、特定の通信モードにおける通信のリスタートを指示するコマンドを送信する
上記（１）から（５）までのいずれかに記載の通信装置。
（８）
前記送受信部から送信された信号を受信した前記他の通信装置から送信されてくる受信確認信号および非受信確認信号のいずれかを検出する確認信号検出部
をさらに備え、
前記コンフリクト回避部は、前記確認信号検出部により前記非受信確認信号が検出されたとき、前記非受信確認信号に続く所定数のビットを無視した後に前記アボート信号を送信するように、前記送受信部に対する指示を行う
上記（１）から（７）までのいずれかに記載の通信装置。
（９）
前記送受信部は、前記他の通信装置から読み出されるリードデータを受信し、前記リードデータの後に送受信されるプリアンブルの２ビット目に対する駆動を常に行う
上記（１）から（８）までのいずれかに記載の通信装置。
（１０）
前記送受信部は、前記他の通信装置がデータ信号線に対する駆動を行って送信するCRC（Cyclic Redundancy Check）ワードの受信直後のビットから、前記データ信号線に対する駆動を行う
上記（１）から（９）までのいずれかに記載の通信装置。
（１１）
前記エラー検出部は、前記データに含まれている２ビットのパリティのうち、一方を偶数パリティとし、他方を奇数パリティとして、前記送受信部が受信したデータに対するパリティチェックを行うことでエラーの発生を検出する
上記（１）から（１０）までのいずれかに記載の通信装置。
（１２）
前記送受信部は、通常の転送レートでデータ通信を行うSDR（Standard Data Rate）モード、および、SDRモードよりも高い転送レートでデータ通信を行うHDR（High Data Rate）モードで、信号の送受信を行うことができる
上記（１）から（１１）までのいずれかに記載の通信装置。
（１３）
前記送受信部は、１ビットずつ逐次的にシリアルデータを伝送するデータ信号線、および、所定の周波数のシリアルクロックを伝送するクロック信号線の２本の信号線を介して通信を行う
上記（１）から（１２）までのいずれかに記載の通信装置。
（１４）
前記送受信部、I3C（Improved Inter Integrated Circuit）の規格に準じた通信を行う
上記（１）から（１３）までのいずれかに記載の通信装置。
（１５）
他の通信装置と信号の送受信を行い、
次に送信するデータのタイプを指定するプリアンブルが受信されて、そのプリアンブルに続いて受信された信号のビット列と、前記プリアンブルにより送信されることが指定されたタイプにおいて送信されるべきビット列とを比較することにより、エラーの発生を検出し、
エラーの発生が検出された場合、前記プリアンブルに続いて所定ビット数に応じたクロックを送信した後に、通信を途中で遮断することを指示するアボート信号を送信する
ステップを含む通信方法。
（１６）
他の通信装置と信号の送受信を行い、
次に送信するデータのタイプを指定するプリアンブルが受信されて、そのプリアンブルに続いて受信された信号のビット列と、前記プリアンブルにより送信されることが指定されたタイプにおいて送信されるべきビット列とを比較することにより、エラーの発生を検出し、
エラーの発生が検出された場合、前記プリアンブルに続いて所定ビット数に応じたクロックを送信した後に、通信を途中で遮断することを指示するアボート信号を送信する
ステップを含む通信処理をコンピュータに実行させるプログラム。
（１７）
バスにおける制御の主導権を有する第１の通信装置と、
前記第１の通信装置による制御に従って通信を行う第２の通信装置と
を備え、
前記第１の通信装置が、
前記第２の通信装置と信号の送受信を行う送受信部と、
前記送受信部により、次に送信するデータのタイプを指定するプリアンブルが受信されて、そのプリアンブルに続いて受信された信号のビット列と、前記プリアンブルにより送信されることが指定されたタイプにおいて送信されるべきビット列とを比較することにより、エラーの発生を検出するエラー検出部と、
前記エラー検出部によりエラーの発生が検出された場合、前記プリアンブルに続いて所定ビット数に応じたクロックを送信した後に、通信を途中で遮断することを指示するアボート信号を送信するように、前記送受信部に対する指示を行うコンフリクト回避部と
を有する
通信システム。
【００９７】
なお、本実施の形態は、上述した実施の形態に限定されるものではなく、本開示の要旨を逸脱しない範囲において種々の変更が可能である。
【符号の説明】
【００９８】
１１  バスＩＦ，  １２  マスタ，  １３  スレーブ，  １４−１  データ信号線，  １４−２  クロック信号線，  ２１  送受信部，  ２２  エラー検出部，  ２３  確認信号検出部，  ２４  コンフリクト回避部，  ３１  送受信部，  ３２  エラー検出部，  ５１  SCL駆動制御部，  ５２  増幅部，  ５３  Ｈレベル維持部，  ５４  増幅部，  ５５  シリアル変換部，  ５６  コンフリクトエラー検出器，  ５７  パリティエラー検出器，  ５８  CRC5エラー検出部，  ５９  パラレル変換部，  ６０  トークンエラー検出器，  ６１  ACK/NACK検出器，  ６２  プリアンブルエラー検出器，  ６３  ステートマシン
【図１】
0006786871.tif 000002
【図２】
0006786871.tif 000003
【図３】
0006786871.tif 000004
【図４】
0006786871.tif 000005
【図５】
0006786871.tif 000006
【図６】
0006786871.tif 000007
【図７】
0006786871.tif 000008
【図８】
0006786871.tif 000009