(57)【要約】【課題】より確実に通信を行う。【解決手段】マスタにおいて、送受信部は、スレーブと信号の送受信を行い、確認信号検出部は、送受信部から送信された信号を受信したスレーブから送信されてくる受信確認信号および非受信確認信号のいずれかを検出する。そして、マスタにおいて、コンフリクト回避部は、確認信号検出部により非受信確認信号が検出されたとき、非受信確認信号に続く所定数のビットを無視した後に、通信を途中で遮断することを指示するアボート信号を送信するように、送受信部に対する指示を行う。本技術は、例えば、I3Cの規格に準拠して通信を行うバスＩＦに適用できる。【選択図】図３
2017208712.tif 000002
【特許請求の範囲】
【請求項１】
他の通信装置と信号の送受信を行う送受信部と、
前記送受信部から送信された信号を受信した前記他の通信装置から送信されてくる受信確認信号および非受信確認信号のいずれかを検出する確認信号検出部と、
前記確認信号検出部により前記非受信確認信号が検出されたとき、前記非受信確認信号に続く所定数のビットを無視した後に、通信を途中で遮断することを指示するアボート信号を送信するように、前記送受信部に対する指示を行うコンフリクト回避部と
を備える通信装置。
【請求項２】
前記送受信部は、前記非受信確認信号が検出されたとき、前記所定数のクロックを送信する
請求項１に記載の通信装置。
【請求項３】
前記送受信部は、前記他の通信装置に対してデータの読み出しを指示するリードコマンドを送信したことに応じて、前記他の通信装置から送信されてくるリードデータのビット数に応じたクロックを送信し、少なくとも、そのクロックを送信する期間における信号を無視する
請求項２に記載の通信装置。
【請求項４】
前記送受信部は、前記他の通信装置から前記リードデータが送信されてくるとしたときの、前記リードデータに続いて送受信される２ビットのプリアンブルの２ビット目のタイミングで前記アボート信号を送信する
請求項３に記載の通信装置。
【請求項５】
前記送受信部は、前記アボート信号に続いて、特定の通信モードの終了を指示するコマンドを送信する
請求項１に記載の通信装置。
【請求項６】
前記送受信部は、前記アボート信号に続いて、特定の通信モードにおける通信のリスタートを指示するコマンドを送信する
請求項１に記載の通信装置。
【請求項７】
前記送受信部により、次に送信するデータのタイプを指定するプリアンブルが受信されて、そのプリアンブルに続いて受信された信号のビット列と、前記プリアンブルにより送信されることが指定されたタイプにおいて送信されるべきビット列とを比較することにより、エラーの発生を検出するエラー検出部
をさらに備え、
前記コンフリクト回避部は、前記エラー検出部によりエラーの発生が検出された場合、前記プリアンブルに続いて所定ビット数に応じたクロックを送信した後に、通信を途中で遮断することを指示するアボート信号を送信するように、前記送受信部に対する指示を行う
請求項１に記載の通信装置。
【請求項８】
前記送受信部は、前記他の通信装置から読み出されるリードデータを受信し、前記リードデータの後に送受信されるプリアンブルの２ビット目に対する駆動を常に行う
請求項１に記載の通信装置。
【請求項９】
前記エラー検出部は、前記データに含まれている２ビットのパリティのうち、一方を偶数パリティとし、他方を奇数パリティとして、前記送受信部が受信したデータに対するパリティチェックを行うことでエラーの発生を検出する
請求項７に記載の通信装置。
【請求項１０】
前記送受信部は、通常の転送レートでデータ通信を行うSDR（Standard Data Rate）モード、および、SDRモードよりも高い転送レートでデータ通信を行うHDR（High Data Rate）モードで、信号の送受信を行うことができる
請求項１に記載の通信装置。
【請求項１１】
前記送受信部は、１ビットずつ逐次的にシリアルデータを伝送するデータ信号線、および、所定の周波数のシリアルクロックを伝送するクロック信号線の２本の信号線を介して通信を行う
請求項１に記載の通信装置。
【請求項１２】
前記送受信部、I3C（Improved Inter Integrated Circuit）の規格に準じた通信を行う
請求項１に記載の通信装置。
【請求項１３】
他の通信装置と信号の送受信を行い、
送信された信号を受信した前記他の通信装置から送信されてくる受信確認信号および非受信確認信号のいずれかを検出し、
前記非受信確認信号が検出されたとき、前記非受信確認信号に続く所定数のビットを無視した後に、通信を途中で遮断することを指示するアボート信号を送信する
ステップを含む通信方法。
【請求項１４】
他の通信装置と信号の送受信を行い、
送信された信号を受信した前記他の通信装置から送信されてくる受信確認信号および非受信確認信号のいずれかを検出し、
前記非受信確認信号が検出されたとき、前記非受信確認信号に続く所定数のビットを無視した後に、通信を途中で遮断することを指示するアボート信号を送信する
ステップを含む通信処理をコンピュータに実行させるプログラム。
【請求項１５】
バスにおける制御の主導権を有する第１の通信装置と、
前記第１の通信装置による制御に従って通信を行う第２の通信装置と
を備え、
前記第１の通信装置が、
前記第２の通信装置と信号の送受信を行う送受信部と、
前記送受信部から送信された信号を受信した前記第２の通信装置から送信されてくる受信確認信号および非受信確認信号のいずれかを検出する確認信号検出部と、
前記確認信号検出部により前記非受信確認信号が検出されたとき、前記非受信確認信号に続く所定数のビットを無視した後に、通信を途中で遮断することを指示するアボート信号を送信するように、前記送受信部に対する指示を行うコンフリクト回避部と
を有する
通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、通信装置、通信方法、プログラム、および、通信システムに関し、特に、より確実に通信を行うことができるようにした通信装置、通信方法、プログラム、および、通信システムに関する。
【背景技術】
【０００２】
従来、複数のデバイスが実装されたボード内でバスを介したデバイス間の通信に用いられるバスＩＦ（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を検出した場合には、スレーブ１３がコマンドやデータなどを受信することに失敗したと確認することができる。
【００２９】
コンフリクト回避部２４は、例えば、図３を参照して後述するように、確認信号検出部２３によりNACKが検出された場合、NACKに続く所定数のビットを無視した後に、通信を途中で遮断することを指示するアボート信号を送信するように、送受信部２１に対する指示を行う。これにより、コンフリクト回避部２４は、例えば、スレーブ１３から送信されるリードデータと、マスタ１２から送信されるHDR終了コマンドによりコンフリクトが発生することを回避することができる。
【００３０】
また、コンフリクト回避部２４は、送受信部２１により、CRCワードの送信を指示するプリアンブルが受信され、エラー検出部２２により、そのプリアンブルに続いて受信された信号にトークンエラーまたはCRCエラーの発生が検出された場合、プリアンブルに続いて、CRCワードとリードデータとの差に対応するビット数に応じたクロックを送信した後に、通信を途中で遮断することを指示するアボート信号を送信するように、送受信部２１に対する指示を行う。これにより、コンフリクト回避部２４は、例えば、スレーブ１３から送信されるリードデータと、マスタ１２から送信されるHDR終了コマンドによりコンフリクトが発生することを回避することができる。
【００３１】
スレーブ１３は、送受信部３１およびエラー検出部３２を備えて構成される。
【００３２】
送受信部３１は、データ信号線１４−１およびクロック信号線１４−２を介して、マスタ１２と信号の送受信を行う。例えば、送受信部３１は、クロック信号線１４−２のシリアルクロックのタイミングに合わせて、マスタ１２がデータ信号線１４−１に対する駆動を行うことによって、マスタ１２から送信されてくる信号を受信する。また、送受信部３１は、クロック信号線１４−２のシリアルクロックのタイミングに合わせて、データ信号線１４−１に対する駆動を行うことによって、マスタ１２に信号を送信する。
【００３３】
エラー検出部３２は、マスタ１２のエラー検出部２２と同様に、送受信部３１が受信した信号に発生しているエラーを検出する。そして、エラー検出部３２は、送受信部３１が受信した信号にエラーが発生していない場合、その信号により伝送されるコマンドやデータなどの受信に成功したことを伝えるACKを、送受信部３１によりマスタ１２に送信させる。一方、エラー検出部３２は、送受信部３１が受信した信号にエラーが発生していた場合、その信号により伝送されるコマンドやデータなどの受信に失敗したことを伝えるNACKを、送受信部３１によりマスタ１２に送信させる。
【００３４】
さらに、エラー検出部３２は、例えば、送受信部３１が受信した信号にエラーが発生し、正常な通信を行うことができない場合には、その後の一切の通信を無視し、マスタ１２に対する応答を停止してスレーブ１３を待機状態とさせる。
【００３５】
以上のようにバスＩＦ１１は構成されており、マスタ１２およびスレーブ１３は、データ信号線１４−１およびクロック信号線１４−２を介して信号を送受信することができ、コンフリクト回避部２４によってコンフリクトの発生を回避して、より確実に通信を行うことができる。
【００３６】
＜コンフリクトの発生の説明＞
【００３７】
ここで、コンフリクト回避部２４によるコンフリクトの発生を回避する手法について説明する前に、図２を参照して、コンフリクトの発生について説明する。
【００３８】
バスＩＦ１１では、DDRモード時において、プリアンブルと呼ばれる２ビットの信号を使用して、次に送信するデータのタイプを指定するように規定されている。ところで、プリアンブルには、パリティやCRCによるエラー検出が用意されていないため、プリアンブルにエラーが発生した場合には、そのエラーを検出することができない。
【００３９】
例えば、マスタ１２が、スレーブ１３に対してデータの読み出しを指示するリードコマンドを送信した後のプリアンブルでは、１ビット目はマスタ１２により駆動され、２ビット目がスレーブ１３により駆動されるように規定されている。そして、スレーブ１３は、その２ビット目によって、ACKまたはNACKを送信することができる。例えば、リードコマンドの受信が成功したことを示すACKは、リードコマンドを送信した後のプリアンブルの２ビット目を０に駆動するように規定されている。一方、リードコマンドの受信が失敗したことを示すNACKは、リードコマンドを送信した後のプリアンブルの２ビット目を１に駆動するように規定されている。
【００４０】
しかしながら、このプリアンブルの２ビット目において、１ビットの値が反転する１ビットエラーが発生した場合、例えば、マスタ１２は、ACKとNACKとを誤認識することになる。
【００４１】
即ち、図２の上側に示すように、スレーブ１３は、リードコマンドの受信に成功した場合にはプリアンブルの２ビット目を０に駆動（即ち、ACKを送信）し、プリアンブルに続いて、リードデータ（DDR Data）の送信を行う。なお、図２において、ハッチングが施されている部分は、スレーブ１３により駆動が行われていることを表している。
【００４２】
これに対し、プリアンブルの２ビット目に１ビットエラーが発生してしまい、図２の下側に示すように、プリアンブルの２ビット目が１になった場合、マスタ１２は、スレーブ１３からNACKが送信されたものと誤認識することになる。従って、この場合、マスタ１２は、スレーブ１３がリードコマンドを受信することに失敗したという誤認識に応じて、HDRモードによる通信を終了することを指示するHDR終了コマンド（HDR Exit）を送信することになる。
【００４３】
これにより、スレーブ１３から送信されるリードデータと、マスタ１２から送信されるHDR終了コマンドとがコンフリクトすることが懸念される。従って、その後、マスタ１２がHDR終了コマンドを送信しても、スレーブ１３は、HDR終了コマンドを正常に受信することができないためHDRモードを終了させることができずに、バスＩＦ１１がデッドロックして、通信不能な状態となることが想定される。
【００４４】
そこで、バスＩＦ１１では、マスタ１２は、NACKを検出した場合、NACKに続く所定数のビットを無視した後に、通信を途中で遮断することを指示するアボート信号を送信するように規定される。これにより、上述したような１ビットエラーが発生したとしても、スレーブ１３から送信されるリードデータと、マスタ１２から送信されるHDR終了コマンドがコンフリクトすることを回避することができる。
【００４５】
＜コンフリクトの回避の説明＞
【００４６】
図３には、バスＩＦ１１において、リードコマンドを送信した後のプリアンブルの２ビット目に１ビットエラーが発生することによるコンフリクトを回避するように、マスタ１２がNACKを受信した際のフォーマットが示されている。
【００４７】
図３に示すように、バスＩＦ１１では、マスタ１２が、リードコマンド（READ CMD）を送信した後のプリアンブルの２ビット目が１であることを検出した場合、リードコマンドの後に送られるプリアンブルに続く１８ビット（リードコマンドに応じて送信されてくるリードデータと同一のビット数）がコンフリクト防止クロック期間として規定される。そして、バスＩＦ１１では、マスタ１２は、コンフリクト防止クロック期間と、コンフリクト防止クロック期間に続くプリアンブルの１ビット目と（即ち、NACKに続く１９ビット）を無視して、それらのビット数に応じたクロックを送信した後、そのプリアンブルの２ビット目を０に駆動するように規定される。
【００４８】
ここで、バスＩＦ１１では、スレーブ１３は、リードコマンドを受信すると、その後のプリアンブルに続いて１８ビットのリードデータを送信するように規定されている。さらに、バスＩＦ１１では、スレーブ１３からリードデータが送信された後のプリアンブルにおいて、１ビット目はスレーブ１３により駆動が行われ、２ビット目はマスタ１２により駆動が行われるように規定されている。そして、バスＩＦ１１では、このプリアンブルの２ビット目が０である場合、マスタ１２からスレーブ１３に対して通信を途中で遮断するマスターアボート（Master Abort）を指示するアボート信号として規定されている。なお、マスターアボートを確実に行うために、リードデータの後に送受信されるプリアンブルの２ビット目に対する駆動は、マスタ１２が常に行う。
【００４９】
従って、図３に示すように、コンフリクト防止クロック期間に続くプリアンブルの２ビット目が０に駆動された場合、即ち、マスタ１２が、スレーブ１３からリードデータが送信されてくるとしたときの、リードデータに続いて送受信される２ビットのプリアンブルの２ビット目のタイミングでアボート信号を送信することで、スレーブ１３は、マスタ１２からアボート信号が送信されたことを検出して、リードデータの送信を中断することができる。これにより、このプリアンブルに続いて、マスタ１２が、HDR終了コマンド（HDR Exit）を送信すると、スレーブ１３は、HDR終了コマンドに従って、HDRモードを終了することができる。その後、マスタ１２およびスレーブ１３は、SDRモードから通信をやり直すことになる。
【００５０】
つまり、マスタ１２は、図２に示したように、NACKを検出した直後にHDR終了コマンドを送信するのではなく、図３に示すように、NACKを検出した後、コンフリクト防止クロック期間に対応するクロックを追加して送信し、コンフリクト防止クロック期間に続くプリアンブルの後に、HDR終了コマンドを送信する。
【００５１】
これにより、マスタ１２が、リードコマンドを送信した後のプリアンブルの２ビット目が１であること（即ち、NACK）を検出した場合でも、図２を参照して説明したようなコンフリクトの発生を回避することができる。つまり、スレーブ１３が送信したACKをマスタ１２がNACKと誤認識したとしても、バスＩＦ１１がデッドロックすることを回避することができ、より確実に通信を行うことができる。
【００５２】
＜コンフリクトの発生を回避する通信方法＞
【００５３】
図４は、マスタ１２が、HDRモードのひとつであるDDRモードでスレーブ１３からデータを読み出す通信処理（DDR Read）を説明するフローチャートである。
【００５４】
ステップＳ１１において、マスタ１２は、通信をSDRモードからHDRモードに切り替える処理を行う。具体的には、マスタ１２では、送受信部２１が、データ信号線１４−１およびクロック信号線１４−２を駆動して、SDRモードにおいて、バスＩＦ１１を構成する全てのスレーブ１３を対象として一斉にコマンドを送信することを通知するブロードキャストコマンド（0ｘ7E+R/W=0）を送信する。その後、マスタ１２では、確認信号検出部２３が、ブロードキャストコマンドの受信が成功したことを確認するためにスレーブ１３から送信されてくるACKを受信すると、送受信部２１が、HDRモードに入るためのコモンコマンドコード（ENTHDR CCC(0ｘ20)）を送信する。
【００５５】
ステップＳ１２において、マスタ１２の送受信部２１は、データ信号線１４−１およびクロック信号線１４−２を駆動して、リードコマンドを送信する。
【００５６】
ステップＳ１３において、確認信号検出部２３は、リードコマンドを送信した後のプリアンブルの２ビット目の値を検出し、スレーブ１３からACKおよびNACKのどちらが送信されてきかを判定する。即ち、確認信号検出部２３は、確認信号検出部２３リードコマンドを送信した後のプリアンブルの２ビット目が０であることを検出した場合、スレーブ１３からACKが送信されてきたと判定する。一方、確認信号検出部２３は、リードコマンドを送信した後のプリアンブルの２ビット目が１であることを検出した場合、スレーブ１３からNACKが送信されてきたと判定する。
【００５７】
ステップＳ１３において、確認信号検出部２３が、スレーブ１３からACKが送信されてきたと判定した場合、処理はステップＳ１４に進み、送受信部２１は、プリアンブルに続いて送信されてくるリードデータを受信する。さらに、送受信部２１は、リードデータに続いて送信されてくるプリアンブルも受信する。
【００５８】
その後、処理はステップＳ１５に進み、送受信部２１は、HDRモードでの通信を終了するか否かを判定する。例えば、リードデータに続いて送信されてくるプリアンブルが、そのプリアンブルに続いてリードデータが送信されることを示している場合、送受信部２１は、HDRモードでの通信を終了しないと判定し、処理はステップＳ１４に戻って、HDRモードでの通信が継続される。一方、例えば、リードデータに続いて送信されてくるプリアンブルが、そのプリアンブルに続いてCRCワードが送信されることを示している場合、送受信部２１は、HDRモードでの通信を終了すると判定して、CRCワードを受信した後、処理はステップＳ１７に進む。
【００５９】
一方、ステップＳ１３において、確認信号検出部２３が、スレーブ１３からNACKが送信されてきたと判定した場合、処理はステップＳ１６に進む。
【００６０】
ステップＳ１６において、コンフリクト回避部２４は、NACKに続く所定数のビットを無視した後に、通信を途中で遮断することを指示するアボート信号を送信するように、送受信部２１に対する指示を行う。これに従い、図３を参照して上述したように、送受信部２１は、スレーブ１３にアボート信号を送信する。
【００６１】
ステップＳ１６の処理後、処理はステップＳ１７に進み、送受信部２１は、アボート信号に続いてHDR終了コマンドを送信する。また、ステップＳ１５で通信をHDRモードからSDRモードに切り替えると判定された場合も、ステップＳ１７において、送受信部２１は、HDR終了コマンドを送信する。これにより、マスタ１２がDDRモードでスレーブ１３からデータを読み出す通信処理（DDR Read）は終了される。
【００６２】
以上のように、バスＩＦ１１では、マスタ１２においてNACKが検出された場合に、そのNACKがACKの１ビットエラーによるものであったとしても、コンフリクトが発生することを回避して、より確実に通信を行うことができる。
【００６３】
＜マスタの回路図＞
【００６４】
次に、図５は、マスタ１２の構成例を示す回路図である。
【００６５】
図５に示すように、マスタ１２は、SCL駆動制御部５１、増幅部５２、Ｈレベル維持部５３、増幅部５４、シリアル変換部５５、コンフリクトエラー検出器５６、パリティエラー検出器５７、CRC5エラー検出部５８、パラレル変換部５９、トークンエラー検出器６０、ACK/NACK検出器６１、プリアンブルエラー検出器６２、およびステートマシン（FSM：Finite State Machine）６３を備えて構成される。
【００６６】
SCL駆動制御部５１は、ステートマシン６３から出力される基準となる周波数の信号に従って、クロック信号線１４−２を介してスレーブ１３に供給するシリアルクロックを生成して、クロック信号線１４−２の駆動を制御する。
【００６７】
増幅部５２は、SCL駆動制御部５１により生成されたクロック信号を、クロック信号線１４−２を介して伝送するのに必要な所定のレベルまで増幅し、クロック信号線１４−２に出力する。
【００６８】
Ｈレベル維持部５３は、データ信号線１４−１のレベルをＨレベルに維持する。
【００６９】
増幅部５４は、データ信号線１４−１を介して送信するシリアルデータを所定のレベルまで増幅して出力し、データ信号線１４−１を介して送信されてきたシリアルデータを、マスタ１２の内部での処理に必要なレベルに増幅する。
【００７０】
シリアル変換部５５は、ステートマシン６３から出力されるパラレルデータを、シリアルデータに変換して出力する。
【００７１】
コンフリクトエラー検出器５６は、シリアル変換部５５から出力されるシリアルデータと、データ信号線１４−１を介して送信されてきたシリアルデータとを比較することにより、データ信号線１４−１上のコンフリクトエラーを検出する。
【００７２】
パリティエラー検出器５７は、偶数または奇数に基づいてビットエラーを検出するために付加されるパリティビットを用いて、データ信号線１４−１を介して送信されてきたシリアルデータのエラーを検出し、そのエラー検出結果をステートマシン６３に通知する。
【００７３】
CRC5エラー検出部５８は、CRCに基づいてビットエラーを検出するために付加される5bitのデータを用いて、データ信号線１４−１を介して送信されてきたシリアルデータのエラーを検出し、そのエラー検出結果をステートマシン６３に通知する。
【００７４】
パラレル変換部５９は、データ信号線１４−１を介して送信されてきたシリアルデータを、パラレルデータに変換して出力する。
【００７５】
トークンエラー検出器６０は、パラレル変換部５９により変換されたパラレルデータに含まれているトークンのビット列を確認することで、トークンにエラーが発生しているか否かを検出し、そのエラー検出結果をステートマシン６３に通知する。
【００７６】
ACK/NACK検出器６１は、図１の確認信号検出部２３に対応し、スレーブ１３から送信されてくるACKまたはNACKを、パラレル変換部５９により変換されたパラレルデータから検出して、その検出結果（ACK/NACK）をステートマシン６３に通知する。
【００７７】
プリアンブルエラー検出器６２は、パラレル変換部５９により変換されたパラレルデータに含まれているプリアンブルにエラーが発生しているか否かを検出し、そのエラー検出結果をステートマシン６３に通知する。
【００７８】
ステートマシン６３は、入力条件と現在の状態によって、次の状態が決まる順序回路であり、例えば、図１の送受信部２１およびコンフリクト回避部２４として機能する。即ち、ステートマシン６３は、ACK/NACK検出器６１によるACKまたはNACKの検出結果を入力として、ACK/NACK検出器６１による検出結果がACKである場合には、リードデータを受け取る状態とする。一方、ステートマシン６３は、ACK/NACK検出器６１による検出結果がNACKである場合には、コンフリクト防止クロック期間と、コンフリクト防止クロック期間に続くプリアンブルの１ビット目とを無視して、アボート信号を送信する状態とする。
【００７９】
このようにマスタ１２は構成されており、上述したように、スレーブ１３が送信したACKをNACKと誤認識したとしても、バスＩＦ１１がデッドロックすることを回避することができ、より確実に通信を行うことができる。
【００８０】
なお、上述した実施の形態では、コンフリクト防止クロック期間の後のプリアンブルに続いて、マスタ１２がHDR終了コマンドを送信する例について説明したが、コンフリクトを回避して通信を回復することができれば、HDR終了コマンドの送信に限定されることはない。
【００８１】
例えば、図６に示すように、コンフリクト防止クロック期間の後のプリアンブルに続いて、図３のHDR終了コマンドに替えて、マスタ１２は、HDRモードにおける通信をリスタートすることを指示するリスタートコマンド（HDR Restart）を送信してもよい。このように、バスＩＦ１１では、マスターアボートに従って通信を途中で遮断した後、マスタ１２がリスタートコマンドを送信することによって、HDRモードでの通信を再開することができる。
【００８２】
なお、本技術は、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１０４にインストールしたり、更新したりすることができる。
【００９０】
なお、本技術は以下のような構成も取ることができる。
（１）
他の通信装置と信号の送受信を行う送受信部と、
前記送受信部から送信された信号を受信した前記他の通信装置から送信されてくる受信確認信号および非受信確認信号のいずれかを検出する確認信号検出部と、
前記確認信号検出部により前記非受信確認信号が検出されたとき、前記非受信確認信号に続く所定数のビットを無視した後に、通信を途中で遮断することを指示するアボート信号を送信するように、前記送受信部に対する指示を行うコンフリクト回避部と
を備える通信装置。
（２）
前記送受信部は、前記非受信確認信号が検出されたとき、前記所定数のクロックを送信する
上記（１）に記載の通信装置。
（３）
前記送受信部は、前記他の通信装置に対してデータの読み出しを指示するリードコマンドを送信したことに応じて、前記他の通信装置から送信されてくるリードデータのビット数に応じたクロックを送信し、少なくとも、そのクロックを送信する期間における信号を無視する
上記（２）に記載の通信装置。
（４）
前記送受信部は、前記他の通信装置から前記リードデータが送信されてくるとしたときの、前記リードデータに続いて送受信される２ビットのプリアンブルの２ビット目のタイミングで前記アボート信号を送信する
上記（３）に記載の通信装置。
（５）
前記送受信部は、前記アボート信号に続いて、特定の通信モードの終了を指示するコマンドを送信する
上記（１）から（４）までのいずれかに記載の通信装置。
（６）
前記送受信部は、前記アボート信号に続いて、特定の通信モードにおける通信のリスタートを指示するコマンドを送信する
上記（１）から（４）までのいずれかに記載の通信装置。
（７）
前記送受信部により、次に送信するデータのタイプを指定するプリアンブルが受信されて、そのプリアンブルに続いて受信された信号のビット列と、前記プリアンブルにより送信されることが指定されたタイプにおいて送信されるべきビット列とを比較することにより、エラーの発生を検出するエラー検出部
をさらに備え、
前記コンフリクト回避部は、記エラー検出部によりエラーの発生が検出された場合、前記プリアンブルに続いて所定ビット数に応じたクロックを送信した後に、通信を途中で遮断することを指示するアボート信号を送信するように、前記送受信部に対する指示を行う
上記（１）から（６）までのいずれか記載の通信装置。
（８）
前記送受信部は、前記他の通信装置から読み出されるリードデータを受信し、前記リードデータの後に送受信されるプリアンブルの２ビット目に対する駆動を常に行う
上記（１）から（７）までのいずれか記載の通信装置。
（９）
前記エラー検出部は、前記データに含まれている２ビットのパリティのうち、一方を偶数パリティとし、他方を奇数パリティとして、前記送受信部が受信したデータに対するパリティチェックを行うことでエラーの発生を検出する
上記（７）に記載の通信装置。
（１０）
前記送受信部は、通常の転送レートでデータ通信を行うSDR（Standard Data Rate）モード、および、SDRモードよりも高い転送レートでデータ通信を行うHDR（High Data Rate）モードで、信号の送受信を行うことができる
上記（１）から（９）までのいずれかに記載の通信装置。
（１１）
前記送受信部は、１ビットずつ逐次的にシリアルデータを伝送するデータ信号線、および、所定の周波数のシリアルクロックを伝送するクロック信号線の２本の信号線を介して通信を行う
上記（１）から（１０）までのいずれかに記載の通信装置。
（１２）
前記送受信部、I3C（Improved Inter Integrated Circuit）の規格に準じた通信を行う
上記（１）から（１１）までのいずれかに記載の通信装置。
（１３）
他の通信装置と信号の送受信を行い、
送信された信号を受信した前記他の通信装置から送信されてくる受信確認信号および非受信確認信号のいずれかを検出し、
前記非受信確認信号が検出されたとき、前記非受信確認信号に続く所定数のビットを無視した後に、通信を途中で遮断することを指示するアボート信号を送信する
ステップを含む通信方法。
（１４）
他の通信装置と信号の送受信を行い、
送信された信号を受信した前記他の通信装置から送信されてくる受信確認信号および非受信確認信号のいずれかを検出し、
前記非受信確認信号が検出されたとき、前記非受信確認信号に続く所定数のビットを無視した後に、通信を途中で遮断することを指示するアボート信号を送信する
ステップを含む通信処理をコンピュータに実行させるプログラム。
（１５）
バスにおける制御の主導権を有する第１の通信装置と、
前記第１の通信装置による制御に従って通信を行う第２の通信装置と
を備え、
前記第１の通信装置が、
前記第２の通信装置と信号の送受信を行う送受信部と、
前記送受信部から送信された信号を受信した前記第２の通信装置から送信されてくる受信確認信号および非受信確認信号のいずれかを検出する確認信号検出部と、
前記確認信号検出部により前記非受信確認信号が検出されたとき、前記非受信確認信号に続く所定数のビットを無視した後に、通信を途中で遮断することを指示するアボート信号を送信するように、前記送受信部に対する指示を行うコンフリクト回避部と
を有する
通信システム。
【００９１】
なお、本実施の形態は、上述した実施の形態に限定されるものではなく、本開示の要旨を逸脱しない範囲において種々の変更が可能である。
【符号の説明】
【００９２】
１１  バスＩＦ，  １２  マスタ，  １３  スレーブ，  １４−１  データ信号線，  １４−２  クロック信号線，  ２１  送受信部，  ２２  エラー検出部，  ２３  確認信号検出部，  ２４  コンフリクト回避部，  ３１  送受信部，  ３２  エラー検出部，  ５１  SCL駆動制御部，  ５２  増幅部，  ５３  Ｈレベル維持部，  ５４  増幅部，  ５５  シリアル変換部，  ５６  コンフリクトエラー検出器，  ５７  パリティエラー検出器，  ５８  CRC5エラー検出部，  ５９  パラレル変換部，  ６０  トークンエラー検出器，  ６１  ACK/NACK検出器，  ６２  プリアンブルエラー検出器，  ６３  ステートマシン
【図１】
2017208712.tif 000003
【図２】
2017208712.tif 000004
【図３】
2017208712.tif 000005
【図４】
2017208712.tif 000006
【図５】
2017208712.tif 000007
【図６】
2017208712.tif 000008
【図７】
2017208712.tif 000009