(57)【特許請求の範囲】
【請求項１】
2ラインバスである共有バスと、
前記共有バスに結合されたスレーブデバイスと、
前記共有バスに結合され、前記共有バス上の通信を管理するように適合されたマスタデバイスと
を備え、
前記共有バスを介した前記スレーブデバイスまたは前記マスタデバイスの少なくとも1つからの送信が、送信のためにシンボルに次にトランスコーディングされる3進数に符号化される複数のビットであり、前記複数のビットにおける3桁の最下位ビットまたは最下位のもののいずれかが、前記送信のエラー検出のために使用され、
前記トランスコーディングすることが、送信のための現在の順次シンボルが前の順次シンボルと現在の遷移番号の関数である一時遷移番号とに基づいて取得される変換関数を使用することをさらに含み、
前記遷移番号が前記3進数の個々の桁であり、
前記現在の順次シンボルがトランスコーディングされることで、シンボル状態がシンボルサイクルごとに変化して、クロック情報をシンボル間遷移内に埋め込むとともに前記2ラインバスの両方のラインを使用してシンボルを転送する、デバイス。
【請求項２】
前記スレーブデバイスが、クロック信号内で誤ったクロックパルス消失と誤った余剰クロックパルスとを検出する、状態機械論理回路を実装する、請求項1に記載のデバイス。
【請求項３】
前記複数のビットが20ビットシーケンスである、請求項1に記載のデバイス。
【請求項４】
エラー検出のための前記3桁の最下位ビットの使用が、前記20ビットシーケンス全体におけるエラーの検出を保証する、請求項3に記載のデバイス。
【請求項５】
第2の最下位ビットおよび第3の最下位ビットの使用が、データ送信またはエラー検出のいずれかに柔軟に割り振られる、請求項1に記載のデバイス。
【請求項６】
エラー検出のための前記最下位ビットの使用が、時間の約50%のみで、20ビットシーケンス全体における単一シンボルエラーの検出を保証する、請求項5に記載のデバイス。
【請求項７】
前記最下位ビットのみがエラー検出のために使用されるとき、前記最下位ビットの値が「1」または「0」のいずれかの一定の2進値に設定される、請求項1に記載のデバイス。
【請求項８】
前記3桁の最下位ビットがエラー検出のために使用されるとき、前記3桁の最下位ビットの値が「000」または「111」のいずれかの一定の2進値に設定される、請求項4に記載のデバイス。
【請求項９】
送信機デバイス上で動作可能な方法であって、
2ラインバスである共有バスを介して送信されるべき複数のビットを取得するステップであって、前記複数のビットにおける3桁の最下位ビットまたは最下位のもののいずれかが、エラー検出のために使用されるステップと、
前記複数のビットを3進数に変換するステップと、
前記3進数の桁を順次シンボルに変換するステップであって、
前記3進数の桁を順次シンボルに変換するステップが、送信のための現在の順次シンボルが前の順次シンボルと現在の遷移番号の関数である一時遷移番号とに基づいて取得される変換関数を使用するステップをさらに含み、
前記遷移番号が前記3進数の個々の桁であり、
前記現在の順次シンボルがトランスコーディングされることで、シンボル状態がシンボルサイクルごとに変化して、クロック情報をシンボル間遷移内に埋め込むとともに前記2ラインバスの両方のラインを使用してシンボルを転送する、ステップと、
複数のシンボルを送信のためにワードに結合するステップと
を含む方法。
【請求項１０】
前記共有バスを介して受信デバイスへ前記ワードを送信するステップ
をさらに含む、請求項9に記載の方法。
【請求項１１】
前記送信されるビットのためのチェックサムを計算するステップと、
前記送信されるビットのための前記チェックサムを受信デバイスへ送信するステップと
をさらに含む、請求項9に記載の方法。
【請求項１２】
チェックサムが、受信デバイスへの送信のために、いずれかの任意のワード内に挿入される、請求項9に記載の方法。
【請求項１３】
送信機デバイスであって、
2ラインバスである共有バスに結合するためのバスインターフェースと、
前記バスインターフェースに結合される処理回路であって、
前記共有バスを介して送信されるべき複数のビットを取得することであって、前記複数のビットにおける3桁の最下位ビットまたは最下位のもののいずれかが、エラー検出のために使用されること、
前記複数のビットを3進数に変換すること、
前記3進数の桁を順次シンボルに変換することであって、
前記3進数の桁を順次シンボルに変換することが、送信のための現在の順次シンボルが前の順次シンボルと現在の遷移番号の関数である一時遷移番号とに基づいて取得される変換関数を使用することをさらに含み、
前記遷移番号が前記3進数の個々の桁であり、
前記現在の順次シンボルがトランスコーディングされることで、シンボル状態がシンボルサイクルごとに変化して、クロック情報をシンボル間遷移内に埋め込むとともに前記2ラインバスの両方のラインを使用してシンボルを転送する、こと、および
複数のシンボルを送信のためにワードに結合すること
を行うように構成された処理回路と
を備える送信機デバイス。
【請求項１４】
前記処理回路が、
前記共有バスを介して受信デバイスへ前記ワードを送信すること
を行うようにさらに構成される、請求項13に記載のデバイス。
【請求項１５】
受信機デバイスであって、
2ラインバスである共有バスに結合するためのバスインターフェースと、
前記バスインターフェースに結合される処理回路であって、
前記共有バスを介して複数のシンボルを受信すること、
前記複数のシンボルを桁に変換すること、
前記桁を3進数に結合すること、および
前記3進数をビットに変換することであって、
前記複数のビットにおける3桁の最下位ビットまたは最下位のもののいずれかが、エラー検出のために使用され、前記3進数をビットに変換することが、一時遷移番号が現在の順次シンボルと前の順次シンボルとから取得される変換関数を使用することをさらに含み、
前記一時遷移番号が現在の遷移番号の関数であり、
前記遷移番号が前記3進数の個々の桁であり、
前記現在の順次シンボルがトランスコーディングされることで、シンボル状態がシンボルサイクルごとに変化して、クロック情報をシンボル間遷移内に埋め込むとともに前記2ラインバスの両方のラインを使用してシンボルを転送する、こと
を行うように構成された処理回路と
を備える受信機デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本特許出願は、両方が本出願の譲受人に譲渡され、参照により明示的にに本明細書に組み込まれる、2013年10月9日に出願した「Error Correction Capability Over CCIe Bus」という名称の米国仮出願第61/889,030号、および、2014年2月28日に出願した「Bit Allocation Over A Camera Control Interface Extended Bus」という名称の米国仮出願第61/946,647号の優先権を主張するものである。
【０００２】
本開示は、共有バスを介して効率的な動作を可能にすることに関し、より詳細には、共有カメラ制御インターフェース拡張(CCIe)バスを介してエラー検出を容易にすることに関する。
【背景技術】
【０００３】
I2C(I2Cとも呼ばれる)は、マザーボード、埋込みシステム、携帯電話または他の電子デバイスに低速周辺装置を取り付けるために使用されるマルチマスタシリアルシングルエンドバスである。I2Cバスは、クロック(SCL)ラインと、7ビットアドレス指定を用いるデータ(SDA)ラインとを含む。バスは、デバイスに関する2つの役割、すなわち、マスタおよびスレーブを有する。マスタデバイスは、クロックを生成し、スレーブデバイスとの通信を開始するデバイスである。スレーブデバイスは、クロックを受信し、マスタによってアドレス指定されたときに応答するデバイスである。I2Cバスは、任意の数のマスタデバイスが存在できることを意味するマルチマスタバスである。加えて、マスタおよびスレーブの役割は、メッセージの間で(STOPが送られた後に)変更される場合がある。I2Cは、メッセージの基本タイプを定義し、それらの各々はSTARTで開始し、STOPで終了する。
【０００４】
カメラの実装形態との関連では、一方向送信を用いて、センサから画像を取り込み、そのような画像データをベースバンドプロセッサ内のメモリに送信することができ、一方、制御データは、ベースバンドプロセッサとセンサならびに他の周辺デバイスとの間で交換することができる。一例では、ベースバンドプロセッサとイメージセンサ(および/または1つもしくは複数のスレーブデバイス)との間のそのような制御データのために、カメラ制御インターフェース(CCI)プロトコルが使用される場合がある。一例では、CCIプロトコルは、イメージセンサとベースバンドプロセッサとの間のI2Cシリアルバスを介して実装される場合がある。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
バスを共有するデバイス間の送信におけるエラー検出を提供することが望ましいであろう。
【課題を解決するための手段】
【０００６】
共有バスと、スレーブデバイスと、マスタデバイスとを備えるデバイスを提供する。スレーブデバイスは、共有バスに結合され得る。マスタデバイスは、共有バスに結合され、共有バス上の通信を管理するように適応され得る。共有バスを介した送信は、送信のためにシンボルに次にトランスコーディングされる3進数に符号化される複数のビットであり、複数のビットにおける3桁の最下位ビットまたは最下位のもののいずれかが、送信のエラー検出のために使用される。
【０００７】
共有バスは2ラインバスであってよく、2ラインバスの両方のラインが、シンボルを転送するために使用される。クロック信号は、シンボル間遷移内に埋め込まれ得る。スレーブデバイスは、クロック信号内で誤ったクロックパルス消失と誤った余剰クロックパルスとを検出する、状態機械論理回路を実装することができる。
【０００８】
一例では、複数のビットは20ビットシーケンスであり得る。エラー検出のための3桁の最下位ビットの使用は、20ビットシーケンス全体におけるエラーの検出を保証する。加えて、第2の最下位ビットおよび第3の最下位ビットの使用が、データ送信またはエラー検出のいずれかに柔軟に割り振られ得る。3桁の最下位ビットがエラー検出のために使用されるとき、3桁の最下位ビットの値が「000」または「111」のいずれかの一定の2進値に設定され得る。
【０００９】
エラー検出のための最下位ビットの使用は、時間の約50%のみで、20ビットシーケンス全体における単一シンボルエラーの検出を保証する。一例では、最下位ビットのみがエラー検出のために使用されるとき、最下位ビットの値が「1」または「0」のいずれかの一定の2進値に設定される。
【００１０】
一態様によれば、バスインターフェースと処理回路とを備える送信機デバイスが提供される。バスインターフェースは、送信機デバイスを、(受信またはスレーブデバイスが結合される)共有バスに結合するように働き得る。送信機デバイスは、共有バスを介した通信を管理または制御することができる。処理回路は、(a)共有バスを介して送信されるべき複数のビットを取得することであって、複数のビットにおける3桁の最下位ビットまたは最下位のもののいずれかが、エラー検出のために使用されること、(b)複数のビットを3進数に変換すること、(c)3進数の桁を順次シンボルに変換すること、(d)複数のシンボルを送信のためにワードに結合すること、および/あるいは(e)共有バスを介して受信デバイスへワードを送信することを行うように構成され得る。クロックは、シンボル間遷移内に埋め込まれ得る。共有バスは2ラインバスであってよく、2ラインバスの両方のラインが、シンボルを転送するために使用される。処理回路は、(a)送信されるビットのためのチェックサムを計算すること、および/または(b)送信されるビットのためのチェックサムを受信デバイスへ送信することを行うようにさらに構成され得る。チェックサムは、受信デバイスへの送信のために、いずれかの任意のワード内に挿入され得る。
【００１１】
別の態様によれば、バスインターフェースと処理回路とを備える受信機デバイスが提供される。バスインターフェースは、その上で通信がマスタデバイスによって管理される共有バスに結合するように働き得る。処理回路は、(a)共有バスを介して複数のシンボルを受信すること、(b)複数のシンボルを桁に変換すること、(c)桁を3進数に結合すること、(d)3進数をビットに変換することであって、複数のビットにおける3桁の最下位ビットまたは最下位のもののいずれかが、エラー検出のために使用されること、および/あるいは(e)複数のビットにおける3桁の最下位ビットまたは最下位のもののいずれかに基づいて、受信された複数のビット内のエラーを確かめることを行うように構成され得る。クロックは、複数の受信されたシンボルのシンボル間遷移内に埋め込まれ得る。共有バスは2ラインバスであってよく、2ラインバスの両方のラインが、シンボルを転送するために使用される。受信機デバイスは、クロック信号内で誤ったクロックパルス消失と誤った余剰クロックパルスとを検出する、状態機械論理回路を実装することができる。
【００１２】
様々な特徴、性質、および利点は、同様の参照文字が全体を通じて対応して識別する図面と併せて読まれたとき、以下に記載の詳細な説明から明らかになる場合がある。
【図面の簡単な説明】
【００１３】
【図１】ベースバンドプロセッサおよびイメージセンサを有し、画像データバスおよびマルチモード制御データバスを実装するデバイスを示すブロック図である。
【図２】どのようにクロックがCCIeモードでシンボル間遷移内に埋め込まれ、それによって、データ送信のためにI2Cバスにおける2本のライン(すなわち、SDAラインおよびSCLライン)の使用を可能にし得るかを示す図である。
【図３】トランスコーディングされたシンボル内にクロック信号を埋め込むために、送信機においてデータビットをトランスコーディングし、トランスコーディングされたシンボルにするための例示的な方法を示すブロック図である。
【図４】遷移番号と順次シンボルとの間の例示的な変換を示す図である。
【図５】遷移番号と順次シンボルとの間の変換を示す図である。
【図６】最上位ビットから最下位ビットまで、2進ビットを3進数に変換するための方法を示す図である。
【図７】最上位ビットから最下位ビットまで、2進ビットを3進数に変換するための送信機側論理回路を示す図である。
【図８】最上位ビットから最下位ビットまで、3進数を2進ビットに変換するための方法を示す図である。
【図９】12桁の3進数を20ビットに変換するための受信機側論理回路を示す図である。
【図１０】ビット19(すなわち、ビットカウントが、ビット0である第1のビットにおいて開始するとき、第20のビット)が、CCIeプロトコルでは大抵使用されず、共有バス上のデバイス間のコマンドのために使用され得ることを、概念的に示す図である。
【図１１】共有バスがI2CモードからCCIeモードへ動作するように切り替え中であることをスレーブデバイスに示すために、共有バスを介してマスタデバイスによって送られ得る、CCIeモードエントリインジケータのための例示的な一般呼出し(general call)を示す図である。
【図１２】CCIeモードからI2Cモードへの遷移をすべてのCCIe可能デバイスに示すために、CCIeマスタデバイス(たとえば、I2Cモードである間に、図1におけるマスタデバイス)によって発行され得る、例示的なCCIe呼出しを示す図である。
【図１３】例示的なCCIeスレーブ識別子(SID)ワードフォーマットを示す図である。
【図１４】例示的なCCIeアドレスワードフォーマットを示す図である。
【図１５】例示的な書込みデータワードフォーマットを示す図である。
【図１６】例示的な読取り指定ワードフォーマットを示す図である。
【図１７】例示的な読取りデータワードフォーマットを示す図である。
【図１８】I2Cの1バイト書込みデータ動作の例示的なタイミング図である。
【図１９】SDAラインおよびSCLラインを介した送信のために、データビットが12シンボルにトランスコーディングされた、例示的なCCIe送信を示す図である。
【図２０】図2〜図10に示した符号化方式から得られた第20のビット(ビット19)の例示的なマッピングを示す図である。
【図２１】図20の第20のビット(ビット19)領域の例示的なマッピング内の下位領域の詳細を示す図である。
【図２２】発生し得る様々なシンボルエラー状態を示す図である。
【図２３】送信シンボルシーケンス0321_0321_0321(2進シーケンス0000_0000_0000_0000_0000および3進数0000_0000_00003に変換する)内の可能性があるエラーを示すテーブル、および、そのようなエラーが3桁の最下位ビット内でどのように検出可能であるかを示す図である。
【図２４】送信シンボルシーケンス2301_2301_2301(2進シーケンス0100_0000_1101_1111_1000および3進数1111_1111_11113に変換する)内の可能性があるエラーを示すテーブル、および、そのようなエラーが3桁の最下位ビット内でどのように検出可能であるかを示す図である。
【図２５】送信シンボルシーケンス3131_3131_3131(2進シーケンス1000_0001_1011_1111_0000および3進数2222_2222_22223に変換する)内の可能性があるエラーを示すテーブル、および、そのようなエラーが3桁の最下位ビット内でどのように検出可能であるかを示す図である。
【図２６】送信シンボルシーケンス0132_3101_3231内の可能性があるエラーを示すテーブル、および、そのようなエラーが3桁の最下位ビット内でどのように検出可能であるかを示す図である。
【図２７】送信シンボルシーケンス2030_2120_3021内の可能性があるエラーを示すテーブル、および、そのようなエラーが3桁の最下位ビット内でどのように検出可能であるかを示す図である。
【図２８】送信シンボルシーケンス3231_0132_3101内の可能性があるエラーを示すテーブル、および、そのようなエラーが3桁の最下位ビット内でどのように検出可能であるかを示す図である。
【図２９】CCIeワードが、エラー検出のために3桁の最下位ビットまたは最下位ビットをどのように使用することができるかを示す図である。
【図３０】8ビットのチェックサムがCCIeワード内でどのように実装され得るかを示す図である。
【図３１】8ビットチェックサム発生器の例示的な実装形態を示す図である。
【図３２】エラー検出を容易にする例示的なCCIeワードフォーマットを示す図である。
【図３３】本開示によるマスタ/スレーブデバイスの例示的な構成要素を示すブロック図である。
【図３４】プロトコル(たとえば、CCIeプロトコル)の1つまたは複数のエラー検出機能に従って通信を容易にする例示的な方法を示す図である。
【図３５】クロックエラーなしの例示的なCCIeワード送信を示す図である。
【図３６】単一クロック消失エラーありの例示的なCCIeワード送信を示す図である。
【図３７】ダブルクロック消失エラーありの例示的なCCIeワード送信を示す図である。
【図３８】余剰クロックエラーありの例示的なCCIeワード送信を示す図である。
【発明を実施するための形態】
【００１４】
以下の説明では、実施形態の完全な理解を提供するために、具体的な詳細が与えられる。ただし、実施形態はこれらの具体的な詳細なしに実施され得ることを当業者は理解されよう。たとえば、回路は、不必要な詳細で実施形態を不明瞭にしないために、ブロック図で示される場合がある。他の例では、よく知られている回路、構造、および技法は、実施形態を不明瞭にしないために、詳細に示されない場合がある。
【００１５】
《概要》
2進数を3進数に変換し、次に3進数が、以前よりも高い速度を可能にするために、2ラインI2Cバスを介した送信のためにクロックを埋め込まれたシンボルにトランスコーディングされる、CCIe(カメラ制御インターフェース拡張)と呼ばれるCCIの拡張が開発されている。2進数は、最初に3進数(すなわち、3進法の数)に変換される。次に、3進数の各桁がシンボルに変換され、そこで、いかなる2つの順次シンボルも繰り返さず、限られた数のシンボル(たとえば、4つのシンボル)のみが使用される。次に、それらのシンボルがバスを介して送信される。
【００１６】
3進数空間およびシンボルへの変換の使用は、余剰ビットが利用可能になる結果となる。一例では、この余剰ビットは最上位であり、3進数の領域が、さもなければ利用可能ではない他の機能をサポートするために利用可能になる場合がある。たとえば、エラー検出およびチェックサムが、この余剰ビット内に含まれ得る余剰情報のために、容易になり得る。
【００１７】
一態様によれば、各送信ワード(たとえば、20ビットワード)内の最下位ビットが、送信中に発生し得るエラーのほぼ半数を検出するために使用され得る。
【００１８】
第2の態様によれば、送信におけるエラーを検出するために、柔軟なチェックサムワードが通信プロトコルに追加される。チェックサムワードは、送信におけるいずれかの任意の点において挿入され得る。
【００１９】
第3の態様によれば、ワード内のビットは、3桁の最下位ビットがワード全体にわたるエラー検出のために利用可能であるように配置される。
【００２０】
第4の態様によれば、受信機デバイスは、エラーを検出するために、CCIeワードのシンボル間遷移内に埋め込まれたクロック信号内の消失したクロックパルスと余剰クロックパルスとを検出する助けとなる、状態機械論理回路を維持することができる。
【００２１】
《例示的な動作環境》
図1は、ベースバンドプロセッサ104およびイメージセンサ106を有し、画像データバス116およびマルチモード制御データバス108を実装するデバイス102を示すブロック図である。図1はカメラデバイス内のマルチモード制御データバス108を示すが、この制御データバス108が様々な異なるデバイスおよび/またはシステム内に実装され得ることは明らかであろう。画像データは、画像データバス116(たとえば、高速差動DPHYリンク)を介して、イメージセンサ106からベースバンドプロセッサ104に送られる場合がある。
【００２２】
一例では、制御データバス108は、2本の線、クロックライン(SCL)およびシリアルデータライン(SDA)を備える、I2Cバスであり得る。クロックラインSCLは、I2Cバス(制御データバス108)を介してすべてのデータ転送を同期させるために使用されるクロックを送るために使用され得る。データラインSDAおよびクロックラインSCLは、I2Cバス(制御データバス108)上ですべてのデバイス112、114、および118に結合される。この例では、制御データが、制御データバス108を介して、ベースバンドプロセッサ104とイメージセンサ106ならびに他の周辺デバイス118、122、および/または124との間で交換され得る。I2Cのための標準クロック(SCL)速度は、最高100KHzである。I2C高速モードにおける標準クロックSCL速度は、最高400KHzであり、I2C高速モードプラス(Fm+)では、最高1MHzである。I2Cバスを介したこれらの動作モードは、カメラの適用例に使用されるとき、カメラ制御インターフェース(CCI)モードと呼ばれる場合がある。
【００２３】
一態様によれば、カメラ動作をサポートするために、改善された(すなわち、1MHzよりも大きい制御データバス送信周波数を用いる)動作モードを、マルチモード制御データバス108を介して実装することができる。I2Cバスを介してのこの改善された動作モードは、カメラの適用例のために使用されるとき、カメラ制御インターフェース拡張(CCIe)モードと呼ばれる場合がある。CCIeモードでは、SCLラインおよびSDAラインは両方とも、それらの2本のラインを介したシンボル間遷移内にクロックが埋め込まれる間に、データを送信するために使用され得る。この例では、ベースバンドプロセッサ104はマスタデバイス112を含み、イメージセンサ106はスレーブデバイス114を含み、マスタデバイス112とスレーブデバイス114の両方は、制御データバス108に結合された他のレガシーI2Cデバイスの適切な動作に影響を与えることなく、制御データバス108を介してカメラ制御インターフェース拡張(CCIe)モードに従って動作することができる。一態様によれば、制御データバス108を介したこの改善されたモードは、CCIeデバイスとレガシーI2Cスレーブデバイスとの間にいかなるブリッジデバイスを用いることもなく、実装され得る。
【００２４】
I2C互換デバイスとCCIe互換デバイスとが共有制御データバス108に並行して結合されることを可能にするプロトコルが提供される。制御データバス108は、別個の通信プロトコル(たとえば、I2CモードおよびCCIeモード)に従った動作間で動的に切り替えることができる。前記のように、共有制御データバス108への通信および/またはアクセスは、マルチモードマスタデバイス112によって管理される。マスタデバイスは、制御データバス108がその通信プロトコルを第1のプロトコルモード(たとえば、I2Cモード)から第2のプロトコルモード(たとえば、CCIeモード)へ切り替えるべきであることを示すために、エントリ呼出し(entry call)を送信する。同様に、マスタデバイスは、制御データバス108がその通信プロトコルを第2のプロトコルモード(たとえば、CCIeモード)から第1のプロトコルモード(たとえば、I2Cモード)へ切り替えるべきであることを示すために、終了呼出し(exit call)を送信する。共有バス108に結合されたスレーブデバイスは、これらのエントリ呼出しと終了呼出しとを監視して、いつ共有バス108上で動作することができるかを確認する。
【００２５】
《例示的なCCIe符号化技法》
図2は、どのようにクロックがCCIeモードでシンボル間遷移内に埋め込まれ、それによって、データ送信のためにI2Cバスにおける2本のライン(すなわち、SDAラインおよびSCLライン)の使用を可能にし得るかを示す。一例では、このクロックの埋め込みは、遷移クロックトランスコーディングによって達成され得る。たとえば、物理リンク(線)を介して送信されるべきデータ204は、送信されるシンボルが、送信シンボル206のシンボルサイクルまたは遷移ごとに状態を変化させることを保証されるように、トランスコーディングされる。一例では、ビットのシーケンスが3進数に変換され、3進数の各桁が、送信のためにシンボルに変換される。順次シンボルは、3進数の2つの順次の桁が同じであるときでも、異なるように保証される。したがって、元のクロック202は、シンボルサイクルごとのシンボル状態の変化において埋め込まれ得る。受信機は、(送信シンボル206内の)各シンボルにおける状態遷移からクロック情報208を復元し、次に、送信シンボル206のトランスコーディングを逆転させて、元のデータ210を取得する。一例では、各シンボルが桁に変換され、複数の桁が3進数を構成し、次に、3進数が複数のビットに変換される。したがって、元のクロック202は、シンボルサイクルごとのシンボル状態の変化において埋め込まれ得る。これによって、I2Cバスの両方の線(図1における制御データバス108、SDAラインおよびSCLライン)がデータ情報を送るために使用されることが可能になる。加えて、クロック信号とデータ信号との間のセットアップ時間および保持時間を有する必要がもはやないので、シンボルレートが倍増され得る。
【００２６】
図3は、トランスコーディングされたシンボル内にクロック信号を埋め込むために、送信機においてデータビットをトランスコーディングし、トランスコーディングされたシンボルにするための例示的な方法を示すブロック図である。送信機302において、データビット304のシーケンスが3進(3進法の)数(すなわち、「遷移番号」)に変換され、次に、3進数が(順次)シンボルに変換され、それらのシンボルがクロックラインSCL312およびデータラインSDA314を介して送信される。
【００２７】
一例では、2進データの元の20ビットが、ビット-遷移番号変換器ブロック308に入力されて、12桁の3進数に変換される。12桁の3進数の各桁は、「遷移番号」を表す。2つの連続する遷移番号は、同じ数であってよい(すなわち、3進数の連続する桁が同じであってよい)。各遷移番号は、2つの連続する順次シンボルが同じ値を有することがないように、遷移-シンボルブロック310において順次シンボルに変換される。順次シンボルごとに遷移が保証されるので、そのような順次シンボル遷移は、クロック信号を埋め込むように働き得る。次に、各順次シンボル316が、2線式物理リンク(たとえば、SCLライン312とSDAライン314とを備えるI2Cバス)を介して送られる。
【００２８】
図4は、遷移番号402と順次シンボル404との間の例示的な変換を示す。遷移番号とも呼ばれる、3進数、3進法の数の個々の桁は、3つの可能な数字または状態、0、1または2のうちの1つを有することができる。3進数の2つの連続する桁において同じ数字が現れる場合があるが、2つの連続する順次シンボルは同じ値を有しない。遷移番号と順次シンボルとの間の変換は、連続する遷移番号が同じである場合でも、順次シンボルが(順次シンボルから順次シンボルへと)常に変化することを保証する。
【００２９】
この変換関数を図5に例示的に記載する。送信機側(TX:TからSへ)502では、遷移番号(T)が順次シンボル(S)に変換され得る。たとえば、現在の順次シンボル(Cs)は、前の順次シンボル(Ps)と、現在の遷移番号(T)の関数である一時遷移番号(Ttmp)とに基づいて、取得され得る。一時遷移番号(Ttmp)は、現在の遷移番号Tを0と比較することによって取得することができ、T=0のとき、一時遷移番号(Ttmp)は3に等しくなり、そうでない場合(Tが0に等しくないとき)、TtmpはTに等しくなる(すなわち、Ttmp=T=0?3:T)。現在の順次シンボルは、現在の順次シンボル(Cs)+前の順次シンボル(Ps)+一時遷移番号(Ttmp)の和として取得され得る(すなわち、Cs=Ps+Ttmp)。
【００３０】
受信機側(RX:SからTへ)504では、変換演算が逆にされて、現在の順次シンボル(Cs)および前の順次シンボル(Ps)から遷移番号が取得される。一時遷移番号(Ttmp)は、現在の順次シンボル(Cs)+4の和-前の順次シンボル(Ps)として取得され得る(すなわち、Ttmp=Cs+4-Ps)。現在の遷移番号(T)は一時遷移番号(Ttmp)に等しいが、一時遷移番号(Ttmp)が3と比較され、Ttmp=3のとき、一時遷移番号(Ttmp)は0に等しくなり、そうでない場合(Ttmpが3に等しくないとき)、TはTtmpに等しくなる(すなわち、T=Ttmp=3?0:T)。
【００３１】
テーブル506は、遷移番号と順次シンボルとの間の変換を示す。
【００３２】
再び図4を参照すると、遷移番号と順次シンボルとの間の変換の一例がその中に示されている。たとえば、第1のサイクル406では、現在の遷移番号(Ta)は2であり、そのためTtmpもまた2であり、前の順次シンボルPsは1であり、新しい現在の順次シンボルCsは現在3である。
【００３３】
第2のサイクル408では、遷移番号(Tb)は1である。遷移番号(Tb)は0に等しくないので、一時遷移番号Ttmpは、1である遷移番号(Tb)値に等しい。現在の順次シンボル(Cs)は、3である前の順次シンボル(Ps)値を、1である一時遷移番号Ttmpに加算することによって、取得される。加算演算の結果が、3よりも大きい4に等しいので、ロールオーバされた数0が現在の順次シンボル(Cs)になる。
【００３４】
第3のサイクル410では、現在の遷移番号(T)は1である。遷移番号Tが1であるので、一時遷移番号Ttmpもまた1である。現在の順次シンボル(Cs)は、0である前の順次シンボル(Ps)値を、1である一時遷移番号Ttmpに加算することによって、取得される。加算演算の結果が、3よりも大きくない1に等しいので、現在の順次シンボル(Cs)は1に等しい。
【００３５】
第4のサイクル412では、現在の遷移番号(T)は0である。遷移番号Tが0であるので、一時遷移番号Ttmpは3である。
【００３６】
現在の順次シンボル(Cs)は、1である前の順次シンボル(Ps)値を、3である一時遷移番号Ttmpに加算することによって、取得される。加算演算の結果が、3よりも大きい4であるので、ロールオーバされた数0が現在の順次シンボル(Cs)になる。
【００３７】
2つの連続する3進数の桁TbおよびTcが同じ数を有する場合でも、この変換は、2つの連続する順次シンボルが異なる状態値を有することを保証することに留意されたい。このため、順次シンボル404内の保証された遷移がクロック信号を埋め込むように働き、それによって、データ送信のためにI2Cバス内のクロックラインSCLを解放することができる。
【００３８】
図3を再び参照すると、受信機320において、このプロセスが逆にされて、トランスコーディングされたシンボルがビットに戻るように変換され、このプロセスにおいて、クロック信号がシンボル遷移から抽出される。受信機320は、2線式物理リンク(たとえば、SCLライン324およびSDAライン326を備えるI2Cバス)を介して、順次シンボル322のシーケンスを受信する。受信された順次シンボル322は、クロック-データ復元(CDR)ブロック328に入力されて、クロックタイミングが復元され、トランスコーディングされたシンボル(S)がサンプリングされる。次に、シンボル-遷移番号変換器ブロック330が、トランスコーディングされた(順次)シンボルを、遷移番号、すなわち、1つの3進数字に変換する。次に、遷移番号-ビット変換器332は、12個の遷移番号を変換して、12桁の3進数から20ビットの元のデータを回復させる。
【００３９】
2線式バスおよび12個の遷移番号について図3および図4に示した例は、n線式システムおよびm個の遷移番号に一般化され得る。T0〜Tm-1の1つのTあたりにr個の可能なシンボル遷移状態がある場合、m個の遷移がrm個の異なる状態を送ることができ、すなわち、r=2n-1個である。したがって、遷移T0...Tm-1は、(2n-1)m個の異なる状態を有することができるデータを含む。
【００４０】
本明細書で説明する本技法を使用して、I2C標準バスが提供し、本明細書でCCIeモードと呼ばれるものを超えて、制御バス108(図1)のリンクレートを高めることができる。一例では、制御データバス108に結合されるマスタデバイスおよび/またはスレーブデバイスは、同じ制御データバスを介して、標準I2Cバスを使用して可能であるよりも高いビットレートを達成するために、(図2、図3、図4、および図5に示すような)シンボル送信内にクロック信号を埋め込む送信機および/または受信機を実装することができる。
【００４１】
図6は、最上位ビットから最下位ビットまで、2進ビットを3進数に変換するための方法を示す。3進数の各桁は、受信デバイスに送信されるシンボルにトランスコーディング(変換)され得る。3進数を表すT0、T1...T11を有する12桁の3進数602では、T0は30の桁を表し(かつ、最下位桁であり)、T11は311の桁を表す(かつ、最上位桁である)。受信ビット(たとえば、20ビットのシーケンス)で開始すると、3進数602の最上位桁T11が最初に取得される。次に、次の最上位桁T10が次に取得される。このプロセスは、最下位桁T0が取得されるまで続く。3進数602の桁の各々はまた、「遷移番号」と呼ばれることもある。
【００４２】
図7は、最上位ビットから最下位ビットまで、2進ビットを3進数に変換するための送信機側論理回路を示す。図6および図7は、T11、T10、T9、...、T0の順序で送られる12桁の3進数602を示す。最上位ビットを最初に取得し、送ることによって、関連する論理および回路の複雑さが簡略化される。図6および図7における手法では、最上位の順次シンボルが受信デバイスに最初に送信され、したがって、MSS最優先(MSS first:most significant symbol first)と呼ばれる。本明細書で使用する「最下位シンボル」は、3進数602の最下位桁に対応するトランスコーディングされたシンボルを指す。たとえば、ならびに図4および図5の説明を参照すると、T0が順次シンボルにトランスコーディングされるとき、それは最下位の3進数の桁から発生したので、最下位シンボルである。同様に、本明細書で使用する「最上位シンボル」は、3進数602の最上位桁に対応するトランスコーディングされたシンボルを指す。たとえば、ならびに図4および図5の説明を参照すると、T11が順次シンボルにトランスコーディングされるとき、それは最上位の3進数の桁から発生したので、最上位シンボルである。また、シンボル-遷移番号変換器ブロック330(図3)が、後で、トランスコーディングされた(順次)シンボルを受信し、遷移番号、すなわち、3進数の桁に変換するとき、それは、最上位桁T11が最初に、最下位桁T0が最後になる。
【００４３】
図3に戻って参照すると、20ビットの元のデータが、逆順で3進数に変換され(すなわち、最上位ビットが変換器に最初に供給され)、次に、3進数の各桁(たとえば、各遷移番号)が、逆順で順次シンボルに変換(すなわち、トランスコーディング)され、これらのトランスコーディングされたシンボルが、バス上で逆順に(すなわち、最上位シンボルが最初に)送信される。
【００４４】
図8は、最上位ビットから最下位ビットまで、3進数を2進ビットに変換するための方法を示す。すなわち、この受信機側変換は、図6および図7に示した送信機側変換において実施された動作を逆にする。受信デバイス(たとえば、スレーブデバイス)は、逆順送信を受信し、クロック復元およびシンボルサンプリングを実施して、トランスコーディングされたシンボルを3進数に戻すように変換し、次に、3進数は逆順で図9における論理回路に供給され、論理回路は3進数を20ビットの2進の元データに戻すように変換する。図7は、論理デバイスへの単出力に結合された12個の入力を有するマルチプレクサを示す。
【００４５】
図9は、12桁の3進数を20ビットに変換するための受信機側論理回路を示す。
【００４６】
図10は、ビット19(すなわち、ビットカウントが、ビット0である第1のビットにおいて開始するとき、第20のビット)が、CCIeプロトコルでは大抵使用されず、共有バス上のデバイス間のコマンドのために使用され得ることを、概念的に示す。すなわち、図3〜図9に示した符号化方式の結果として、余分のビット(すなわち、ビット19)が現在、送信シンボル内で利用可能である。より具体的には、図10は、ビット19(すなわち、第20のビット)を示す。言い換えれば、コンピュータサイエンスにおいて典型的であるように、ビットワイズのカウントは0で開始し、ビット19は第20のビットである。ここで、ビット0〜18は、0000_0000_00003から2221_2201_20013の3進数範囲内で表される。2221_2201_20023から2222_2222_22223の範囲内の3進数は使用されない。したがって、3進数範囲2221_2201_20023から2222_2222_22223を使用して、ビット19(すなわち、第20のビット)を表すことができる。言い換えれば、2221,2201,20023 3進数は、10,000,000,000,000,000,000 2進数(0x80000 16進数)であり、2222_2222_22223 3進数(0x81BF0)は、可能な最大の12桁の3進数である。
【００４７】
《CCIeモードのための例示的なプロトコル》
図11は、共有バスがI2CモードからCCIeモードへ動作するように切り替え中であることをスレーブデバイスに示すために、共有バスを介してマスタデバイスによって送られ得る、CCIeモードエントリインジケータのための例示的な一般呼出しを示す。一般呼出し1102は、I2CモードからCCIeモードへの遷移をすべてのI2C互換デバイスに示すために、共有バスを介してI2Cマスタデバイス(たとえば、SDAラインおよびSCLラインを介して、I2Cモードである間、図1におけるマスタデバイス112)によって発行され得る。
【００４８】
I2Cモードでは、CCIeマスタデバイスは、このI2C一般呼出し1102を、「CCIeモード」バイトまたはインジケータ1104とともに発行する。CCIe互換スレーブデバイスは、一般呼出し1102の受信を肯定応答する。CCIe互換スレーブデバイスは、必要な場合、一般呼出し中に(制御データバス108の)SCLラインを低に保持することによって、待機サイクルを挿入することができる。
【００４９】
CCIeモードになると、すべてのCCIe互換デバイスは、CCIeマスタデバイスからの要求に応答することができる。CCIeモードをサポートしない共有制御データバス上のレガシーI2C互換スレーブデバイスの動作状態または任意の機能は、いかなるCCIeトランザクションによっても影響を受けない。
【００５０】
図12は、CCIeモードからI2Cモードへの遷移をすべてのCCIe可能デバイスに示すために、CCIeマスタデバイス(たとえば、I2Cモードである間に、図1におけるマスタ112)によって発行され得る、例示的なCCIe呼出し1202を示す。CCIeマスタデバイスは、CCIe SIDの代わりにこの終了呼出し1202を発行することができる。
【００５１】
CCIeモードで、CCIeモードにおける最後のデータおよび後続するSの後、CCIeマスタは、CCIeモードの終了とI2Cモードへ戻る遷移とを(たとえば、CCIe互換デバイスに)示すために、特殊なCCIe SIDコードである「終了」コード/インジケータ1204を送る。加えて、「終了」コード/インジケータ1204の後、CCIeマスタデバイスは、S(開始ビット)および後続する「一般呼出し」1206を、I2Cプロトコルに従って、I2Cプロトコル内の第2のバイトにおける「終了」コード1208とともに送る。すべてのCCIe対応スレーブは、一般呼出し1204に対して肯定応答しなければならない。
【００５２】
図13は、例示的なCCIeスレーブ識別子(SID)ワードフォーマットを示す。これは、CCIe SIDワードフォーマット1302の一部としての16ビットのスレーブ識別子(SID)1304の使用を示す。そのようなSIDワードフォーマットは、そのワードが制御データバス上に配置されるとき、特定のスレーブデバイスを識別するために使用されることになる。
【００５３】
図14は、例示的なCCIeアドレスワードフォーマット1402を示す。これは、各アドレスワード1406が16ビットのアドレス1404を含むことを示す。アドレスワード1406はまた、2ビットの制御コード1408と、1ビットのエラー検出定数1410とを含む。テーブル1412は、制御コードのための様々な可能な値を示す。
【００５４】
複数のアドレスワードが順次送られ得る。現在の制御ワードが「00」である場合、これは、アドレスワードが後続することになることを意味する。制御コードが「01」である場合、次のデータワードは、書込みデータワードである。制御コードが「10」である場合、次のデータワードは、1ワード読取りデータワードである。制御コード「11」は禁止される。
【００５５】
図15は、例示的な書込みデータワードフォーマット1500を示す。これは、各データワード1500が16ビットの書込みデータ部分1502を含むことを示す。書込みデータワード1500はまた、2ビットの制御コード1504と、1ビットのエラー検出定数1510とを含む。テーブル1514は、制御コードのための様々な可能な値を示す。
【００５６】
複数の書込みデータワードが順次送られ得る。現在の書込みワードの制御コードが「00」(シンボルC0)である場合、データは、前のアドレスに書き込まれるべきである。現在の書込みワードの制御コードが「01」(シンボルC1)である場合、データは、前のアドレス+1に書き込まれるべきである。制御コードが「10」(シンボルE)である場合、次のワードはSIDまたは終了コードになる。
【００５７】
図16は、例示的な読取り指定ワードフォーマット1600を示す。読取り指定データワード1600は、16ビットの読取りデータ値部分1604と、2ビットの制御コード1608と、3ビットのエラー検出定数1610とを含み得る。
【００５８】
最後のアドレスワード1607の後、「読取り指定」(RS)ワード1612が後続する。読取り指定(RS)ワード1612は、後続する読取りデータワードの数を指定する。テーブル1616に示すように、制御コード「00」は、同じアドレスからの読取りワードを示すために使用される。制御コード「01」は、増分アドレスからの読取りワードを示すために使用される。(そこからデータが読み取られている)スレーブデバイスは、「読取り指定」(RS)ワード1604によって指定されるよりも多くのデータワード(CHKワードを含まない)を送らないものとする。スレーブデバイスは、少なくとも1つの読取りワード(CHKワードを含まない)を送るものとする。スレーブデバイスは、「読取り指定」(RS)ワード1604によって指定された数のワードを送る前に、読取り転送を終了することができる。
【００５９】
図17は、例示的な読取りデータワードフォーマット1702を示す。読取りデータワード1702は、16ビットの読取りデータ値部分1704と、2ビットの制御コード1706と、1ビットのエラー検出定数1708とを含み得る。SID1707によってアドレス指定されたスレーブデバイスは、要求するマスタデバイスに戻すためのワードの数を決定する。テーブル1716に示すように、読取りワードが同じアドレスから続く場合、制御コードは「00」(シンボルR0)である。読取りワードが増分アドレスから続く場合、制御コードは「01」(シンボルR1)である。ワードが最後の読取りワードであり、その後、CHKがない場合、制御コードは「10」(シンボルE)である。制御コード「00」は禁止される。
【００６０】
《例示的な共有バスを介したI2C送信対CCIe送信》
図18は、I2Cの1バイト書込みデータ動作の例示的なタイミング図を示す。この例では、共有制御データバス108(図1)は、シリアルデータラインSDA1802とシリアルクロックラインSCL1804とを含む。図18に示す送信方式は、「I2Cモード」と呼ばれることがある。SCLライン1804は、マスタデバイスからすべてのスレーブデバイスへクロックを送るために使用されるが、SDAライン1802は、データビットを送信する。I2Cマスタデバイスは、I2Cバス上のどのスレーブデバイスにマスタデバイスがアクセスすることを望むかを示すために、SDAライン1802において7ビットのスレーブID1808を送り、次に、書込み動作を示すために1ビットを送る。そのIDが7ビットのスレーブID1808にマッチするスレーブデバイスのみが、意図されたアクションを引き起こすことができる。I2Cスレーブデバイスがそれ自体のIDを検出するために、マスタデバイスは、SDAライン上で少なくとも8ビット(または、SCLライン1804上で8個のクロックパルス)を送らなければならない。
【００６１】
I2C規格は、すべてのI2C互換スレーブデバイスが、(たとえば、SCLラインが高である間にSDAライン上の高から低への遷移によって示される)START条件1806を受信すると、それらのバス論理をリセットすることを必要とする。
【００６２】
CCIeプロトコルは、クロック信号をデータ送信内に埋め込みながら、SDAライン1802とSCLライン1804の両方をデータ送信のために使用する。たとえば、データビットは、次にラインを介して送信される複数のシンボルにトランスコーディングされ得る。クロック信号(図18におけるI2CバスではSCLライン)をシンボル送信内に埋め込むことによって、SDAライン1802とSCLライン1804の両方が、データ送信のために使用され得る。
【００６３】
図19は、SDAライン1902およびSCLライン1904を介した送信のために、データビットが12シンボルにトランスコーディングされた、例示的なCCIe送信を示す。図19に示す送信方式は、「CCIeモード」と呼ばれることがある。CCIeモードは、ソース同期であり、プッシュプルドライバによって駆動される。共有制御データバスを介してデータを送出するものはどれもまた、データ内(たとえば、シンボル間遷移内)に埋め込まれたクロック情報を送出する。したがって、制御データバス上のただ1つのデバイスが一度に共有制御データバスを駆動することが可能にされる。
【００６４】
同じバスを介してレガシーI2CデバイスとCCIeデバイスの両方をサポートするために、CCIeモード動作は、同じSTART条件1906、1908、1910を使用し、これによって、レガシーI2CスレーブデバイスがいかなるCCIe動作に反応することも防止される(たとえば、CCIeモード中の開始条件は、レガシーI2Cスレーブデバイスをリセットさせる)。この例では、START条件1906、1908、1910(すなわち、SCLライン1904が高である間に、SDAライン1902上の高から低への遷移によって示される)は、完全なスレーブID(すなわち、完全な7ビット)が送信される前に検出され、したがって、これは、不完全なスレーブID(7ビット未満)である。マスタデバイスが6個のSCLパルスを送り、次に、START条件1906、1908、1910を発行する場合、すべてのレガシーI2Cスレーブデバイスは、データをI2CスレーブIDとして認識する前に、それらのバス論理をリセットする。6ビットシーケンス(たとえば、2つおきのシンボルに対応する)が2つのSTART条件1906、1908、1910の間で送られるので、これらの6ビットシーケンスは、いかなるI2Cスレーブデバイスによっても有効なスレーブIDとして復号されない。したがって、レガシーI2Cスレーブデバイスは、不完全なスレーブIDに作用しないようになる。
【００６５】
このシステムでは、マスタデバイスは、バスへのアクセスを制御する。そのため、制御データバスを介して送信することを望むいかなるデバイスも、たとえば、割込み要求を発行することによって、マスタデバイスにそのようなアクセスを要求しなければならない。割込みを発行するための従来技術の機構は、専用の割込みラインまたは専用の割込みバスに依拠していた。しかしながら、そのような専用の割込みラインまたはバスは、そのような割込みラインまたはバスを収容するために、デバイスが少なくとも1つの追加のピンを含まなければならないことを意味する。そのような専用の割込みピンおよびライン/バスの必要性をなくすために、CCIe内の帯域内割込みのための機構が必要とされる。
【００６６】
帯域内割込みの使用はまた、バス競合または衝突を回避するべきである。たとえば、衝突を回避するために、スレーブデバイスは、マスタデバイスが制御データバスを駆動中である間に、IRQをアサートするために制御データバス(たとえば、SDAライン1902またはSCLライン1904のいずれか)を駆動することが可能にされるべきではない。
【００６７】
《例示的なビット19領域およびチェックサム》
図20は、図2〜図10に示した符号化方式から得られた第20のビット(ビット19)の例示的なマッピングを示す。諒解され得るように、利用可能な3進数は、マスタデバイスとスレーブデバイスとの間の特徴および能力を拡張するように働き得る。たとえば、ビット19内で利用可能なこの3進数空間(すなわち、そのビット19が「1」であるデータ領域)は、(a)スレーブ間送信、(b)送信のためのチェックサム、(c)スレーブデバイスへのマスタ動作ハンドオーバ、(d)ハートビートクロックなどを容易にするか、または示すように働き得る。
【００６８】
図21は、図20の第20のビット(ビット19)領域の例示的なマッピング内の下位領域の詳細を示す。
【００６９】
図22は、発生し得る様々なシンボルエラー状態を示す。タイミング図2202は、制御データバス(SDAラインおよびSCLライン)を介した正しい送信と、受信機クロック(RXCLK)とを示す。
【００７０】
受信機クロック(RXCLK)が2つのサイクル2212および2214を消失し、データビット2210が誤って検出されるようになる、クロック消失2204が示されている。同じ転送方向により多くの後続のワードがある場合、ワードデータエラーは、後続するワードにおいて検出される可能性が最も高い。同期(SYNC)消失もまた検出され得る。エラーが最後のワードにおいて発生する場合、マスタデバイスは、タイムアウト検出機能を必要とする。
【００７１】
受信機クロック(RXCLK)が、余剰クロックサイクル2220において検出された余剰シンボル「01」2216および2218を有する、余剰クロック2206が示されている。このエラーは、ワードまたは後続するワードにおいて検出される可能性が最も高い。同期消失もまた検出され得る。
【００７２】
受信機クロック(RXCLK)消失がないが、単一シンボルエラー2222が発生する、シンボルエラー2208が示されている。このエラーは、ワードまたは後続するワードにおいて検出される可能性が最も高い。チェックサムエラーが検出される可能性が最も高い。
【００７３】
《例示的な送信シンボル内のエラー検出》
図23〜図28は、様々なCCIeワードについて発生し得る様々なシンボルエラー状態(すなわち、シンボルスリップなしの単一シンボルエラー)を示す。図示のように、これらのエラーは、以下でさらに説明するように、3ビット(ビット0、1、および2)を使用することによって検出され得る。これらの例は、エラー検出のために3桁の最下位ビット(ビット[2:0])を使用する。
【００７４】
図23は、送信シンボルシーケンス0321_0321_0321内の可能性があるエラーを示すテーブル2300、および、そのようなエラーが3桁の最下位ビット内でどのように検出可能であるかを示す。図3、図4、図5、図6、図7および図8に示す方法を使用することによって、(ビット[19:0])0000_0000_0000_0000_0000の20ビットシーケンス2302が、3進数(T11...T0)0000_0000_00003 2304に変換され、次にこの3進数が、順次シンボル(S11...S0)0321_0321_0321 2306に変換される。この例では、3桁の最下位ビット2308がすべて0(000)である。元の順次シンボル0321_0321_0321 2306のシンボルのいずれかにおいて、送信中にエラーが導入される場合、これらは誤ったシンボル2310を生じる。たとえば、最後のシンボル「1」が「0」に変更される場合、これは、3桁の最下位ビットの「000」から「010」への変化を生じる。最後のシンボル「1」が「3」に変更される場合、これは、3桁の最下位ビットの「000」から「001」への変化を生じる。「0」である最初のシンボルが「2」に変更される場合、これは、3桁の最下位ビットの「000」から「100」への変化を生じる。テーブル2300は、3桁の最下位ビットが既知の定数(たとえば、「000」という固定定数)である限り、任意の単一シンボルの変化が3桁の最下位ビットによってどのように検出可能であるかの様々な他の例を示す。
【００７５】
図24は、送信シンボルシーケンス2301_2301_2301内の可能性があるエラーを示すテーブル2400、および、そのようなエラーが3桁の最下位ビット内でどのように検出可能であるかを示す。図3、図4、図5、図6、図7および図8に示す方法を使用することによって、(ビット[19:0])0100_0000_1101_1111_1000の20ビットシーケンス2402が、3進数(T11...T0)1111_1111_11113 2404に変換され、次にこの3進数が、順次シンボル(S11...S0)2301_2301_2301 2406に変換される。この例では、3桁の最下位ビット2408がすべて0(000)である。元の順次シンボル2301_2301_2301 2406のシンボルのいずれかにおいて、送信中にエラーが導入される場合、これらは誤ったシンボル2410を生じる。たとえば、最後のシンボル「1」が「3」に変更される場合、これは、3桁の最下位ビットの「000」から「111」への変化を生じる。最後のシンボル「1」が「2」に変更される場合、これは、3桁の最下位ビットの「000」から「001」への変化を生じる。「2」である最初のシンボルが「0」に変更される場合、これは、3桁の最下位ビットの「000」から「100」への変化を生じる。テーブル2400は、3桁の最下位ビットが既知の定数(たとえば、「000」という固定定数)である限り、任意の単一シンボルの変化が3桁の最下位ビットによってどのように検出可能であるかの様々な他の例を示す。
【００７６】
図25は、送信シンボルシーケンス3131_3131_3131内の可能性があるエラーを示すテーブル2500、および、そのようなエラーが3桁の最下位ビット内でどのように検出可能であるかを示す。図3、図4、図5、図6、図7および図8に示す方法を使用することによって、(ビット[19:0])1000_0001_1011_1111_0000の20ビットシーケンス2502が、3進数(T11...T0)2222_2222_22223 2504に変換され、次にこの3進数が、順次シンボル(S11...S0)3131_3131_3131 2506に変換される。この例では、3桁の最下位ビット2508がすべて0(000)である。元の順次シンボル3131_3131_3131 2406のシンボルのいずれかにおいて、送信中にエラーが導入される場合、これらは誤ったシンボル2510を生じる。たとえば、最後のシンボル「1」が「0」に変更される場合、これは、3桁の最下位ビットの「000」から「111」への変化を生じる。最後のシンボル「1」が「2」に変更される場合、これは、3桁の最下位ビットの「000」から「110」への変化を生じる。「3」である最初のシンボルが「0」に変更される場合、これは、3桁の最下位ビットの「000」から「001」への変化を生じる。テーブル2500は、3桁の最下位ビットが既知の定数(たとえば、「000」という固定定数)である限り、任意の単一シンボルの変化が3桁の最下位ビットによってどのように検出可能であるかの様々な他の例を示す。
【００７７】
図26は、送信シンボルシーケンス0132_3101_3231内の可能性があるエラーを示すテーブル2600、および、そのようなエラーが3桁の最下位ビット内でどのように検出可能であるかを示す。図3、図4、図5、図6、図7および図8に示す方法を使用することによって、(ビット[19:0])0001_1000_1111_0011_1000の20ビットシーケンス2602が、3進数(T11...T0)0120_1201_20123 2604に変換され、次にこの3進数が、順次シンボル(S11...S0)0132_3101_3231 2606に変換される。この例では、3桁の最下位ビット2608がすべて0(000)である。元の順次シンボル0132_3101_3231 2606のシンボルのいずれかにおいて、送信中にエラーが導入される場合、これらは誤ったシンボル2610を生じる。たとえば、最後のシンボル「1」が「0」に変更される場合、これは、3桁の最下位ビットの「000」から「111」への変化を生じる。最後のシンボル「1」が「2」に変更される場合、これは、3桁の最下位ビットの「000」から「110」への変化を生じる。「0」である最初のシンボルが「3」に変更される場合、これは、3桁の最下位ビットの「000」から「111」への変化を生じる。テーブル2600は、3桁の最下位ビットが既知の定数(たとえば、「000」という固定定数)である限り、任意の単一シンボルの変化が3桁の最下位ビットによってどのように検出可能であるかの様々な他の例を示す。
【００７８】
図27は、送信シンボルシーケンス2030_2120_3021内の可能性があるエラーを示すテーブル2700、および、そのようなエラーが3桁の最下位ビット内でどのように検出可能であるかを示す。図3、図4、図5、図6、図7および図8に示す方法を使用することによって、(ビット[19:0])0100_1010_1101_1010_1000の20ビットシーケンス2702が、3進数(T11...T0)1201_2012_01203 2704に変換され、次にこの3進数が、順次シンボル(S11...S0)2030_2120_3021 2706に変換される。この例では、3桁の最下位ビット2708がすべて0(000)である。元の順次シンボル2030_2120_3021 2706のシンボルのいずれかにおいて、送信中にエラーが導入される場合、これらは誤ったシンボル2710を生じる。たとえば、最後のシンボル「1」が「0」に変更される場合、これは、3桁の最下位ビットの「000」から「010」への変化を生じる。「2」である最初のシンボルが「0」に変更される場合、これは、3桁の最下位ビットの「000」から「011」への変化を生じる。テーブル2700は、3桁の最下位ビットが既知の定数(たとえば、「000」という固定定数)である限り、任意の単一シンボルの変化が3桁の最下位ビットによってどのように検出可能であるかの様々な他の例を示す。
【００７９】
図28は、送信シンボルシーケンス3231_0132_3101内の可能性があるエラーを示すテーブル2800、および、そのようなエラーが3桁の最下位ビット内でどのように検出可能であるかを示す。図3、図4、図5、図6、図7および図8に示す方法を使用することによって、(ビット[19:0])0101_1110_1101_0000_1000の20ビットシーケンス2802が、3進数(T11...T0)2012_0120_12013 2804に変換され、次にこの3進数が、順次シンボル(S11...S0)3231_0132_3101 2806に変換される。この例では、3桁の最下位ビット2808がすべて0(000)である。元の順次シンボル3231_0132_3101 2806のシンボルのいずれかにおいて、送信中にエラーが導入される場合、これらは誤ったシンボル2810を生じる。たとえば、最後のシンボル「1」が「3」に変更される場合、これは、3桁の最下位ビットの「000」から「111」への変化を生じる。「3」である最初のシンボルが「0」に変更される場合、これは、3桁の最下位ビットの「000」から「100」への変化を生じる。テーブル2800は、3桁の最下位ビットが既知の定数(たとえば、「000」という固定定数)である限り、任意の単一シンボルの変化が3桁の最下位ビットによってどのように検出可能であるかの様々な他の例を示す。
【００８０】
《第1の例示的なエラー検出の手法》
図23〜図28において言及したように、20ビットのCCIeワードの3桁の最下位ビットを使用して、クロック消失またはシンボルスリップなしのいずれかの単一シンボルエラーを検出することが可能である。
【００８１】
図29は、CCIeワード2902が、エラー検出のために3桁の最下位ビット2903または最下位ビット2905をどのように使用することができるかを示す。第1のCCIeワード2902(たとえば、20ビットシーケンス)では、3桁の最下位ビット2903は、固定定数(たとえば、「000」)に設定されてよく、受信された20ビットシーケンスが、固定定数(たとえば、「000」)以外の何かである3桁の最下位ビットを有する場合、エラーが受信デバイスにおいて検出される。CCIeワード内(たとえば、ワード内の12シンボルのいずれか内、または20ビット(16進の0x00000から0x81BF0までのビット[19:0])のいずれか内)のシンボルスリップなしのどの単一シンボルエラーも、この手法を使用することによって逃されず、それによって、いかなるそのような単一シンボルエラーも100%の検出が提供される。しかしながら、エラー検出のために20ビットの中から3ビットを使用することは、多くの実装形態にとってコストがかかりすぎる場合がある。
【００８２】
代替手法は、エラー検出のために3桁の最下位ビットの代わりに単一ビット(たとえば、最下位ビット0)を使用することを提供する。固定ビット0(たとえば、「0」に固定される)が、ほぼ半数の場合において、(クロック消失またはシンボルスリップなしの)シンボルエラーの検出を助けるために使用され得る。固定ビット0を使用することに加えて、順次CCIeワードのビット1および2のチェックサムが計算され(図31参照)、受信デバイスに送られて、送信されたCCIeワード内でエラーが発生したか否かが確かめられ得る。
【００８３】
第2のCCIeワード2904(たとえば、20ビットシーケンス)では、最下位ビット2905が固定定数(たとえば、「0」)に設定され得る。図23〜図28から諒解され得るように、最下位ビット2905は、対応するシンボルのシーケンス内にシンボルエラーがあるとき、時間の約半分で変化する。したがって、最下位ビットにおいて反映されたエラーについて、受信デバイスは、シーケンス内の最下位ビットが固定定数(たとえば、「0」)以外の何かである場合、受信された20ビットシーケンス内に単一シンボルエラー(クロック消失またはシンボルスリップなし)があることを成功裏に確かめることができる。
【００８４】
エラー検出のために最下位ビット2905を使用することに加えて、またはそれとともに、チェックサムメッセージが、CCIeワードのシーケンスを介した高度のエラー検出を提供するために使用され得る。そのようなチェックサムメッセージがエラーを検出しない唯一のシナリオは、チェックサムを計算するときに2つのシンボルエラーの影響が打ち消しになる場合である。
【００８５】
図30は、8ビットのチェックサムがCCIeワード内でどのように実装され得るかを示す。この例では、CCIeアドレスワード3004a、書込みワード3004b、および/または読取りワード3004cについて、CCIeフレーム内にチェックサム値を配置しながら、ビット19を「1」に、およびビット12を「0」に設定することによって、チェックサムワード3005が(20ビットシーケンス内で)示され得る(たとえば、各ワードのビット4〜11がチェックサムのために使用され得る)。8ビットのチェックサム値3003は、いくつかのCCIeワード送信を介して計算され得る。たとえば、このチェックサムワード3005は、CCIeワード送信のシーケンスの終了において送られ得る。
【００８６】
このチェックサムワードは、ビット19のために利用可能な追加の空間内で定義され得る(図20参照)。チェックサムワード3005は、書込みコマンド3006および/または読取りコマンド3010のアドレスまたはデータ部分内に挿入され得る。たとえば、書込みコマンド3006において、1つもしくは複数のアドレスワード3008a、3008b、ならびに/または、1つもしくは複数の書込みワード3008cおよび3008dが、チェックサム値を(たとえば、マスタデバイスからスレーブデバイスへ)搬送するために使用され得る。同様に、読取りコマンド3010において、1つもしくは複数のアドレスワード3012a、3012b、ならびに/または、1つもしくは複数の読取りワード3012cおよび3012dが、チェックサム値を搬送するために使用され得る。
【００８７】
他のチェックサム手法とは対照的に、本CCIeチェックサムワード3005は、送信側によって送信内のどこでもいつでも挿入され得る。
【００８８】
図31は、8ビットチェックサム発生器の例示的な実装形態を示す。チェックサム発生器3102は、チェックサム3104の8ビットの各々について、1ビットレジスタを含み得る。第1のCCIeワードN3110のビット2および1と、チェックサム3104内の最下位ビットとの排他的論理和(XOR)がとられる。次に、第2のCCIeワードN+1 3112のビット2および1と、チェックサム3104内の次の最下位ビットとの排他的論理和(XOR)がとられる。次に、第3のCCIeワードN+2 3114のビット2および1と、チェックサム3104内の次の最下位ビットとの排他的論理和(XOR)がとられる。次に、第4のCCIeワードN+3 3116のビット2および1と、チェックサム3104内の最上位ビットとの排他的論理和(XOR)がとられる。チェックサム値3104の最上位ビットに到達した後、次のCCIeワードN+4において、チェックサム発生器は、チェックサム3104の2桁の最下位ビットにおいて再度開始することができる。
【００８９】
このようにして、異なるCCIeワードからの寄与が、8ビットのチェックサムにわたるそれらの使用において伝播する。1ビットレジスタが、転送の開始ごと(たとえば、SIDの前、および/または読取りワードの開始前)に初期化され得る。CCIeチェックサムワードを実装するために、送信デバイスは、各CCIeワードが送られるときにチェックサム値を計算することができる。受信機デバイスでは、チェックサム値がまた、受信されたCCIeワードごとに同様にして計算される。次に、送信機デバイスは、受信機デバイスがそれ自体のチェックサム値と比較して、いずれかのシンボルエラーが発生したか否かを確かめることができる、直近のチェックサム値とともに、CCIeチェックサムワードを受信機デバイスに送ることができる。
【００９０】
チェックサムワード3005は、(a)CHKワード(CHKワードを繰り返す)、および/または(b)ハートビート/SYNCワードを含む、任意のCCIeワードに後続することができる。CCIe送信機および受信機は、チェックサム機能をサポートすることができる。たとえば、CCIe送信機は、CCIe受信機が次に使用するチェックサムワード3005を送ることができる。
【００９１】
受信機デバイスがチェックサム(CHK)エラーを検出する場合、(a)SYNCワードもしくはWAKEUPイベントまで、CCIeアクション(たとえば、レジスタ書込み)をサスペンドすることができ、(b)IRQを介してCHKエラーをレポートすることができ、(c)CHKエラーイベントを状態レジスタに設定することができ、かつ/または(d)チェックサムエラーを無視することができる。
【００９２】
チェックサム(CHK)ワードは、任意のワード境界に挿入され得る。これによって、チェックサムの使用が、異なるシステム/プロトコル内で容易にポータブルになり、また、スケーラブルなデータ品質になる(たとえば、信頼性がより低いバスを介して、より多くのCHKを使用する)。
【００９３】
いくつかの実装形態では、チェックサム(CHK)サポートは必須でなくてもよい。これによって、低層の製品にとっての負担がそれほど生じず、また、チェックサムの使用が必要とされない場合、なだらかな下落が可能になる。
【００９４】
《第2の例示的なエラー検出の手法》
図29〜図31に示すフォーマットを有するワード内のシステムエラーを検出することは、必ずしも信頼性が高いとは限らず、いくつかのシステムにとっては問題のある場合がある。たとえば、医療、自動車、航空宇宙、または軍事的使用など、高いデータの完全性を必要とするバスシステムでは、すべてのシンボルエラーをすぐに検出することが望ましいことが多い。この問題に対処するために、100%のシンボルエラー検出が達成可能である、代替CCIeワードフォーマットを開示する(すなわち、シンボルスリップなしのワードごとの単一シンボルエラー)。この目的で、まず、本明細書で開示する態様は、部分的に、図23〜図28における観測に依拠しており、これらの観測では、符号化ワードが、既知の定数を用いてすべてが固定されたそれらの3桁の最下位ビット(LSB)とともに送信されるとき、100%のシンボルエラー検出が達成され得ることに留意されたい。しかしながら、3桁のLSBを利用して、エラービット検出定数を表すには、3桁のLSBが、それらのビット値が制御され得るように柔軟であることが必要である。
【００９５】
図30におけるCCIeチェックサムワード3005では、たとえば、ビット1および2がCCIeワードのための制御コードに割り振られる。そのような制御コードは、ワードが読取り動作を含むか、書込み動作を含むかを識別し、CCIeワードの動作に影響を及ぼすことなく修正することはできない。
【００９６】
1つの解決策は、3桁のLSBが3ビットのエラー検出定数を表すことができるように、図30に示すCCIeワードフォーマットを修正することである。そのような修正の一例は、図13〜図15に提供されており、その例は、必要に応じて、データスループットまたはエラー検出を最適化することができる、柔軟なビット割振り方式を実装する。
【００９７】
図32は、エラー検出を容易にする例示的な柔軟なCCIeワードフォーマット3202を示す。この20ビットワード3202では、ビット[0]がエラー検出定数3204のために割り振られ、ビット[2,1]がデータのため、またはエラー検出定数を拡張するためのいずれか3206に割り振られ、ビット[4,3]が制御ビット3208のために割り振られ、ビット[18,5]が14ビットのデータフィールド3210のために割り振られ、ビット[19]が前述の「余剰」ビット3212のために割り振られる。すなわち、ビット[2,1]が、エラー訂正のために使用することができない制御コード3228のために使用され得る、代替CCIeワードフォーマット3220に対して、柔軟なCCIeワード3202は、2つの制御ビットをビット[2,1]から離して移動させ、それによって、データスループットを最適化するために(すなわち、ビット[18,5]およびビット[2,1]を介して、16ビットをデータのために割り振ることによって)データのために、または、エラー検出を最適化するために(すなわち、前述の100%エラー検出を達成するために、3桁のLSBをエラー検出定数のために割り振ることによって)、エラー検出定数拡張のために、ビット[2,1]を利用する柔軟性を提供する。したがって、ユーザは、必要に応じて、非100%のシンボルエラー検出とともに16ビットのデータを有する符号化ワードを送ること、または、100%のシンボルエラー検出とともに14ビットのデータを有する符号化ワードを送ることの間で選ぶことができる。
【００９８】
様々なビット割振り方式のいずれもが、本明細書で開示する態様の範囲内に入るように企図されることに留意されたい。たとえば、図32は、この特定の例では、LSBにより近く割り振るための(すなわち、より高い値のMSBにより近く割り振るのではない)、制御ビットのためのビット[4,3]の割振りを示すが、他のビット割振り方式は、これらの制御ビットを、ビット[18,3]内のビットの任意の組合せにおいて配置することを含み得る。また、図32は20ビットのCCIeワードフォーマットを示すが、ビット割振り方式は、任意のビット長さのワードについて同様に企図され、データまたはエラー検出定数拡張のために割り振られた固定数の最下位ビットが、適宜に増加/減少され得ることにも留意されたい。
【００９９】
さらに、本明細書で開示する態様は、第1のビット割振り方式と第2のビット割振り方式との間で動的に切り替えることを容易にすることができ、第1のビット割振り方式は、データ最適化(すなわち、データのための16ビットの割振り)に向けられ、第2のビット割振り方式は、エラー検出最適化(すなわち、エラー検出定数のための3桁のLSBの割振り)に向けられる。
【０１００】
《例示的なクロック/シンボルスリップエラー検出》
クロック消失または余剰クロックによって引き起こされるシンボルスリップエラーは、エラー検出定数および/またはチェックサムによって検出されない場合がある。しかしながら、これらのタイプのエラーの大多数は、受信機デバイスにおいて、次のワードにおいて、および/または状態機械を使用して検出され得る。
【０１０１】
図35は、クロックエラーなしの例示的なCCIeワード送信を示す。第1のライン(SDA)3502と第2のライン(SCL)3504とを備える共有バスを使用して、12個のシンボル3512(CCIeワードを構成する)が開始条件3508と3510との間で送信される。そのような開始条件3508および3510は、第2のライン(SCL)3504が高である間に、第1のライン(SDA)3502上の高から低への遷移において発生する。すべてのCCIe準拠デバイスは、これが、受信機デバイスの状態機械によって追跡され得る期待CCIeワード境界における、開始条件(すなわち、第2のライン(SCL)3504が高である間の第1のライン(SDA)3502上の高から低への遷移)であると理解する。加えて、シンボル間遷移内に埋め込まれたクロック3506も示されている。
【０１０２】
図36は、単一クロック消失エラーありの例示的なCCIeワード送信を示す。すなわち、この例では、クロックパルス3602が、受信機デバイスによって検出されておらず、それが、対応するシンボル「2」が無視されることを引き起こす。この状態3604は、シンボルスリップと呼ばれることがある。受信機デバイスがクロックを消失したので、受信機デバイスは、第1のライン3502および第2のライン3504からシンボルを読み取り続け、第2の開始条件3510をシンボルとして解釈することになり、次のシンボル3602が開始条件であると期待することになる。その次のシンボル3602は決して開始条件にならないので、クロック消失エラーが受信機デバイスによって検出されるのは、この点である。次に、受信機デバイスは、同期消失を仮定し、その受信機論理をリセットすることができる。
【０１０３】
図37は、ダブル消失クロックエラーありの例示的なCCIeワード送信を示す。すなわち、この例では、2つのクロックパルス3702が、受信機デバイスによって検出されず、それが、シンボル「2」および「3」3704が無視されることを引き起こす。この状態は、ダブルシンボルスリップと呼ばれることがある。受信機デバイスが2つのクロックを消失したので、受信機デバイスは、第1のライン3502および第2のライン3504からシンボルを読み取り続け、第2の開始条件3510をシンボルとして解釈することになる。9回中8回の場合について、受信機デバイス論理は、期待される開始条件が(次のワード3702の第1のシンボルと第2のシンボルとの間で)消失していることを認識し、したがって、ダブルクロック消失を検出することになる。受信機デバイスは、いつ開始条件が期待されるかを追跡するために、状態機械論理を含み得る。次のワード3702の第1のシンボルと第2のシンボルとの間の遷移が開始条件(すなわち、3から1へのシンボル遷移)として検出されることになる、9分の1の確率について、受信機デバイスは、次のワードにおいてこのダブルクロックエラーを検出することができる(すなわち、次のCCIeワードにおけるある点において、第1のシンボルと第2のシンボルとの間の遷移が開始条件にならず、受信機デバイスによってエラーが検出される)。
【０１０４】
図38は、余剰クロックエラーありの例示的なCCIeワード送信を示す。すなわち、この例では、余剰クロックパルス3802が、受信機デバイスによって検出されており、それが、余剰シンボル「1」が読み取られることを引き起こす。この状態3804下で、受信機デバイスは、最後の有効なシンボル遷移3806中に次の開始条件を期待することになる。9回中8回の場合では、CCIeワードの最後の2つのシンボルにおけるシンボルの組合せが開始条件を生じないことになるので、受信機デバイスは、同期エラーを認識することになる。9回中1回の場合では、CCIeワードの最後の2つのシンボルが、受信機デバイスによって開始条件(すなわち、3から1へのシンボル遷移)として認識されることになる。その状況では、受信機デバイスは、このエラーを検出するために、現在および/または次のCCIeワードのエラー検出定数に依拠することができる。
【０１０５】
《例示的な柔軟なエラー検出を用いるデバイス》
図33は、本開示によるマスタ/スレーブデバイスの例示的な構成要素を示すブロック図である。図示のように、マスタ/スレーブデバイス3314は、制御データバス3350を介してマスタ/スレーブデバイス3360に結合される。ここで、マスタ/スレーブデバイス3314またはマスタ/スレーブデバイス3360のいずれかが、本明細書で開示する前述の態様に従って、マスタまたはスレーブとして動作することができること、ならびに、マスタ/スレーブデバイス3314およびマスタ/スレーブデバイス3360が、実質的に同様の構成要素を有し得ることが企図される。
【０１０６】
この例では、マスタ/スレーブデバイス3314は、バス3302によって概略的に表される内部バスアーキテクチャを用いて実装され得る。バス3302は、マスタ/スレーブデバイス3314の具体的な適用例および全体的な設計制約に応じて、任意の数の相互接続するバスおよびブリッジを含む場合がある。バス3302は、(処理回路3304によって概略的に表される)1つまたは複数のプロセッサ、メモリ3305、および(コンピュータ可読媒体3306によって概略的に表される)コンピュータ可読媒体を含む様々な回路を互いにリンクさせる。バス3302は、タイミングソース、周辺機器、電圧調整器、および電力管理回路などの様々な他の回路をリンクさせることもできるが、これらの回路は当技術分野でよく知られており、したがって、これ以上は説明しない。バスインターフェース/回路3308は、制御データバス3350とマスタ/スレーブデバイス3314との間のインターフェースを提供する。
【０１０７】
本開示の一態様では、コンピュータ可読媒体3306は、本明細書で開示するようなCCIeプロトコル通信を容易にするために、様々な命令3306a、3306b、および/または3306cを含むように構成される。同様の態様では、そのような通信は、代わりに、処理回路3304を図示のように回路3320、3330、および/または3340のうちのいずれかに結合することによって、ハードウェアを介して実装され得る。代替的に、処理回路3304は、回路3320、3330、および/または3340のうちのいずれかを含み、かつ/または実装することができる。その上、CCIe通信は、命令3306a、3306b、および/または3306cの任意の組合せ、ならびに、回路3320、3330、および/または3340の任意の組合せによって容易にされ得ることが企図される。
【０１０８】
たとえば、エンコーダ/デコーダ命令3306aおよびエンコーダ/デコーダ回路3320は、CCIeプロトコルに従ってワードを符号化/復号することに向けられる。前述のように(図2〜図21参照)、そのような符号化/復号は、3進数を桁ごとに複数のシンボルに変換して(たとえば、12桁の3進数は12シンボルになる)、前述の「余剰ビット」(ビット19)を生じることを含み得る。
【０１０９】
本開示の別の態様では、エラー検出命令3306bおよびエラー検出回路3330は、図23〜図32において説明し、示したように、かつ/または、所望のCCIeワードフォーマットに従って、エラー検出を実施することに向けられる。この目的で、図31〜図32のように、本明細書で開示する、企図されたCCIeワードフォーマットは、符号化された20ビットワードを備え、3桁の最下位ビットがデータまたはエラー検出のために割り振られる。その上、エラー検出命令3306bおよび/またはエラー検出回路3330のいずれかは、柔軟なビット割振りを容易にするように構成されてよく、最下位ビットがエラー検出のために割り振られ、第2の最下位ビットおよび第3の最下位ビットの各々がデータまたはエラー検出のいずれかのために割り振られることが企図される。さらに、図23〜図30および図35〜図38のように、エラー検出命令3306bおよび/またはエラー検出回路3330のいずれかは、固定最下位ビットを使用して、および/もしくはプロトコルに追加されるチェックサムワードとともに、ならびに/または、消失した開始条件を検出する受信機デバイス論理を使用して、エラー検出を容易にするように構成され得ることが企図される。
【０１１０】
本開示の別の態様では、チェックサム命令3306cおよび/またはチェックサム回路3340が、バス3350から受信および/または送信されるワードのためのチェックサムを生成するように構成され得る。特に、チェックサム命令3306cおよび/またはチェックサム回路3340のいずれかは、CCIeチェックサムワードをサポートするために、チェックサム計算を容易にするように構成され得る。
【０１１１】
処理回路3304は、バス3302を管理すること(すなわち、デバイス3314がマスタデバイスであるとき)、および、コンピュータ可読媒体3306に記憶されたソフトウェアの実行を含む全体的な処理を担当することを諒解されたい。ソフトウェアは、処理回路3304によって実行されるとき、マスタ/スレーブデバイス3314に、任意の特定の装置のための下記で説明する様々な機能を実施させる。コンピュータ可読媒体3306は、ソフトウェアを実行するときに処理回路3304によって操作されるデータを記憶するために使用することもできる。
【０１１２】
処理回路3304内の1つまたは複数のプロセッサは、ソフトウェアを実行することができる。ソフトウェアは、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語と呼ばれるか、または他の名称で呼ばれるかどうかにかかわらず、命令、命令セット、コード、コードセグメント、プログラムコード、プログラム、サブプログラム、ソフトウェアモジュール、アプリケーション、ソフトウェアアプリケーション、ソフトウェアパッケージ、ルーチン、サブルーチン、オブジェクト、実行可能ファイル、実行スレッド、プロシージャ、機能などを意味するように広く解釈されるべきである。ソフトウェアは、コンピュータ可読媒体3306上に存在することができる。コンピュータ可読媒体3306は、非一時的コンピュータ可読媒体である場合がある。非一時的コンピュータ可読媒体には、例として、磁気ストレージデバイス(たとえば、ハードディスク、フロッピー(登録商標)ディスク、磁気ストリップ)、光ディスク(たとえば、コンパクトディスク(CD)またはデジタル多用途ディスク(DVD))、スマートカード、フラッシュメモリデバイス(たとえば、カード、スティック、またはキードライブ)、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、プログラマブルROM(PROM)、消去可能PROM(EPROM)、電気的消去可能PROM(EEPROM)、レジスタ、リムーバブルディスク、ならびに、コンピュータがアクセスし読み取ることができるソフトウェアおよび/または命令を記憶するための任意の他の適切な媒体が含まれる。コンピュータ可読媒体には、例として、搬送波、伝送路、ならびに、コンピュータがアクセスし読み取ることができるソフトウェアおよび/または命令を送信するための任意の他の適切な媒体も含まれ得る。コンピュータ可読媒体3306は、マスタ/スレーブデバイス3314の中に、マスタ/スレーブデバイス3314の外部に存在するか、またはマスタ/スレーブデバイス3314を含む複数のエンティティにわたって分散される場合がある。コンピュータ可読媒体3306は、コンピュータプログラム製品内で具現化される場合がある。例として、コンピュータプログラム製品には、パッケージング材料内のコンピュータ可読媒体が含まれ得る。当業者は、特定の適用例および全体的なシス
テムに課された設計制約全体に応じて、本開示全体にわたって提示された記載の機能を最もよく実装する方法を認識されよう。
【０１１３】
図34は、プロトコル(たとえば、CCIeプロトコル)の1つまたは複数のエラー検出機能に従って通信を容易にする例示的な方法を示す。3402で、共有バスを介して送信されるべき複数のビットが取得され、複数のビットにおける3桁の最下位ビットまたは最下位のもののいずれかが、エラー検出のために使用され得る。3404で、複数のビットが3進数に変換される。3406で、3進数の桁が順次シンボルに変換され、クロックがシンボル間遷移内に埋め込まれる。3408で、複数のシンボルが送信のためにワードに結合される。次に、3410で、ワードが共有バスを介して受信デバイスへ送信され得る。加えて、3412で、チェックサムが送信されるビットのために計算され得る。3414で、送信されるビットのためのチェックサムが受信デバイスへ送られ得る。
【０１１４】
一態様によれば、バスインターフェースと処理回路とを備える送信機デバイスが提供される。バスインターフェースは、送信機デバイスを、(受信またはスレーブデバイスが結合される)共有バスに結合するように働き得る。送信機デバイスは、共有バスを介した通信を管理または制御することができる。処理回路は、(a)共有バスを介して送信されるべき複数のビットを取得することであって、複数のビットにおける3桁の最下位ビットまたは最下位のもののいずれかが、エラー検出のために使用されること、(b)複数のビットを3進数に変換すること、(c)3進数の桁を順次シンボルに変換すること、(d)複数のシンボルを送信のためにワードに結合すること、および/あるいは(e)共有バスを介して受信デバイスへワードを送信することを行うように構成され得る。クロックは、シンボル間遷移内に埋め込まれ得る。共有バスは2ラインバスであってよく、2ラインバスの両方のラインが、シンボルを転送するために使用される。処理回路は、(a)送信されるビットのためのチェックサムを計算すること、および/または(b)送信されるビットのためのチェックサムを受信デバイスへ送信することを行うようにさらに構成され得る。チェックサムは、受信デバイスへの送信のために、いずれかの任意のワード内に挿入され得る。
【０１１５】
別の態様によれば、バスインターフェースと処理回路とを備える受信機デバイスが提供される。バスインターフェースは、その上で通信がマスタデバイスによって管理される共有バスに結合するように働き得る。処理回路は、(a)共有バスを介して複数のシンボルを受信すること、(b)複数のシンボルを桁に変換すること、(c)桁を3進数に結合すること、(d)3進数をビットに変換することであって、複数のビットにおける3桁の最下位ビットまたは最下位のもののいずれかが、エラー検出のために使用されること、および/あるいは(e)複数のビットにおける3桁の最下位ビットまたは最下位のもののいずれかに基づいて、受信された複数のビット内のエラーを確かめることを行うように構成され得る。クロックは、複数の受信されたシンボルのシンボル間遷移内に埋め込まれ得る。共有バスは2ラインバスであってよく、2ラインバスの両方のラインが、シンボルを転送するために使用される。受信機デバイスは、クロック信号内で誤ったクロックパルス消失と誤った余剰クロックパルスとを検出する、状態機械論理回路を実装することができる。
【０１１６】
図に示す構成要素、ステップ、特徴、および/または機能のうちの1つまたは複数は、並べ替えられてもよく、ならびに/あるいは、単一の構成要素、ステップ、特徴、または機能に組み合わされてもよく、またはいくつかの構成要素、ステップ、または機能で具現化されてもよい。また、本明細書で開示する新規の特徴から逸脱することなく追加の要素、構成要素、ステップ、および/または機能が、同様に追加され得る。図に示す装置、デバイス、および/または構成要素は、図に記載した方法、特徴、またはステップのうちの1つまたは複数を実施するように構成され得る。本明細書で説明する新規のアルゴリズムはまた、効率的にソフトウェアに実装され、および/またはハードウェアに埋め込まれ得る。
【０１１７】
さらに、実施形態は、フローチャート、流れ図、構造図、またはブロック図として示されるプロセスとして説明される場合があることに留意されたい。フローチャートは動作を順次プロセスとして説明する場合があるが、動作の多くは並行してまたは同時に実施され得る。さらに、動作の順序は並べ替えることができる。プロセスは、その動作が完了したとき、終了する。プロセスは、方法、関数、手順、サブルーチン、サブプログラムなどに対応し得る。プロセスが関数に対応するときには、その終了は、その関数が、呼出し関数またはメイン関数に戻ることに対応する。
【０１１８】
その上、記憶媒体は、読取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリデバイス、および/または情報を記憶するための他の機械可読媒体を含む、データを記憶するための1つまたは複数のデバイスを表す場合がある。「機械可読媒体」という用語は、限定はしないが、ポータブルまたは固定ストレージデバイス、光ストレージデバイス、ワイヤレスチャネル、ならびに命令および/またはデータを記憶するか、包含するか、または搬送することができる様々な他の媒体を含む。
【０１１９】
さらに、実施形態は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、またはそれらの任意の組合せによって実装され得る。ソフトウェア、ファームウェア、ミドルウェア、またはマイクロコードで実装されるとき、必要なタスクを実施するためのプログラムコードまたはコードセグメントは、記憶媒体または他のストレージなどの機械可読媒体に記憶され得る。プロセッサは必要なタスクを実施することができる。コードセグメントは、手順、関数、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、または命令、データ構造もしくはプログラムステートメントの任意の組合せを表すことができる。コードセグメントは、情報、データ、引数、パラメータ、またはメモリ内容を渡し、かつ/または受け取ることによって、別のコードセグメントまたはハードウェア回路に結合することができる。情報、引数、パラメータ、データなどは、メモリ共有、メッセージパッシング、トークンパッシング、ネットワーク送信などを含む任意の適切な手段を介して渡すことができるか、転送することができるか、または送信することができる。
【０１２０】
本明細書で開示する例に関して説明する様々な例示的な論理ブロック、モジュール、回路、要素、および/または構成要素は、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理構成要素、個別ゲートもしくはトランジスタ論理、個別ハードウェア構成要素、または本明細書で説明する機能を実施するように設計されたそれらの任意の組合せで実装または実施され得る。汎用プロセッサはマイクロプロセッサであり得るが、代替としてプロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサはまた、コンピューティング構成要素の組合せ、たとえば、DSPとマイクロプロセッサとの組合せ、いくつかのマイクロプロセッサ、DSPコアと連係した1つまたは複数のマイクロプロセッサ、あるいは他の任意のそのような構成として実装され得る。
【０１２１】
本明細書で開示する例に関して説明する方法またはアルゴリズムは、直接ハードウェアにおいて、プロセッサによって実行可能なソフトウェアモジュールにおいて、または両方の組合せにおいて、処理ユニット、プログラミング命令、または他の指示の形態で具現化されてよく、かつ、単一のデバイスに含まれてよく、または複数のデバイスにわたって分散されてよい。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当技術分野で知られている任意の他の形態の記憶媒体に存在することができる。記憶媒体は、プロセッサがその記憶媒体から情報を読み取り、かつその記憶媒体に情報を書き込むことができるように、プロセッサに結合され得る。代替として、記憶媒体は、プロセッサと一体化され得る。
【０１２２】
本明細書で開示する実施形態に関して説明する、様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装され得ることを当業者はさらに諒解されよう。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップを、上記では概してそれらの機能の観点から説明した。そのような機能がハードウェアとして実装されるか、またはソフトウェアとして実装されるかは、特定の適用例および全体的なシステムに課された設計制約によって決まる。
【０１２３】
本明細書で説明する本発明の様々な特徴は、本発明から逸脱することなく、異なるシステムにおいて実施され得る。上記の実施形態は例にすぎず、本発明を限定するものと解釈すべきではないことに留意されたい。実施形態の説明は、例示的なものであり、特許請求の範囲を限定するものではない。したがって、本教示は、他のタイプの装置に容易に適用することができ、多くの代替形態、変更形態、および変形形態が当業者には明らかであろう。
【符号の説明】
【０１２４】
102  デバイス
104  ベースバンドプロセッサ
106  イメージセンサ
108  マルチモード制御データバス、制御データバス、共有制御データバス、共有バス、制御バス
112  デバイス、マスタデバイス、マルチモードマスタデバイス、マスタ
114  デバイス、スレーブデバイス
116  画像データバス
118  デバイス、周辺デバイス
122、124  周辺デバイス
202  元のクロック
204  データ
206  送信シンボル
208  クロック情報
210  元のデータ
302  送信機
304  データビット
308  ビット-遷移番号変換器ブロック
310  遷移-シンボルブロック
316、322、404  順次シンボル
320  受信機
324  クロックラインSCL、SCLライン
326  データラインSDA、SDAライン
328  クロック-データ復元(CDR)ブロック
330  シンボル-遷移番号変換器ブロック
332  遷移番号-ビット変換器
402  遷移番号
406  第1のサイクル
408  第2のサイクル
410  第3のサイクル
412  第4のサイクル
502  送信機側(TX:TからSへ)
504  受信機側(RX:SからTへ)
506、1412、1514、1616、1716、2300、2400、2500、2600、2700、2800  テーブル
602  3進数
1102  一般呼出し、I2C一般呼出し
1104  「CCIeモード」バイトまたはインジケータ
1202  CCIe呼出し、終了呼出し
1204  「終了」コード/インジケータ、一般呼出し
1206  「一般呼出し」
1208  「終了」コード
1302  CCIe SIDワードフォーマット
1304  16ビットのスレーブ識別子(SID)
1402  CCIeアドレスワードフォーマット
1404  16ビットのアドレス
1406  アドレスワード
1408、1504、1608、1706  制御コード
1410、1510、1610、1708  エラー検出定数
1500  書込みデータワードフォーマット、データワード、書込みデータワード
1502  16ビットの書込みデータ部分
1600  読取り指定ワードフォーマット、読取り指定データワード
1604  16ビットの読取りデータ値部分、「読取り指定」(RS)ワード
1607  最後のアドレスワード
1612  「読取り指定」(RS)ワード
1702  読取りデータワードフォーマット、読取りデータワード
1704  16ビットの読取りデータ値部分
1707  SID
1802  シリアルデータラインSDA、SDAライン
1804  シリアルクロックラインSCL、SCLライン
1806、1906、1908、1910  START条件
1808  スレーブID
1902  SDAライン
1904  SCLライン
2202  タイミング図
2204  クロック消失
2206  余剰クロック
2208  シンボルエラー
2210  データビット
2212、2214  サイクル
2216、2218  余剰シンボル「01」
2220  余剰クロックサイクル
2222  単一シンボルエラー
2302  (ビット[19:0])0000_0000_0000_0000_0000の20ビットシーケンス
2304  3進数(T11...T0)0000_0000_00003
2306  順次シンボル(S11...S0)0321_0321_0321、順次シンボル0321_0321_0321
2308、2408、2508、2608、2708、2808  3桁の最下位ビット
2310、2410、2510、2610、2710、2810  誤ったシンボル
2402  (ビット[19:0])0100_0000_1101_1111_1000の20ビットシーケンス
2404  3進数(T11...T0)1111_1111_11113
2406  順次シンボル(S11...S0)2301_2301_2301、順次シンボル2301_2301_2301
2502  (ビット[19:0])1000_0001_1011_1111_0000の20ビットシーケンス
2504  3進数(T11...T0)2222_2222_22223
2506  順次シンボル(S11...S0)3131_3131_3131、順次シンボル3131_3131_3131
2602  (ビット[19:0])0001_1000_1111_0011_1000の20ビットシーケンス
2604  3進数(T11...T0)0120_1201_20123
2606  順次シンボル(S11...S0)0132_3101_3231、順次シンボル0132_3101_3231
2702  (ビット[19:0])0100_1010_1101_1010_1000の20ビットシーケンス
2704  3進数(T11...T0)1201_2012_01203
2706  順次シンボル(S11...S0)2030_2120_3021、順次シンボル2030_2120_3021
2802  (ビット[19:0])0101_1110_1101_0000_1000の20ビットシーケンス
2804  3進数(T11...T0)2012_0120_12013
2806  順次シンボル(S11...S0)3231_0132_3101、順次シンボル3231_0132_3101
2902  CCIeワード、第1のCCIeワード
2903  3桁の最下位ビット
2904  第2のCCIeワード
2905  最下位ビット
3003  チェックサム値
3004a  CCIeアドレスワード
3004b、3008c、3008d  書込みワード
3004c、3012c、3012d  読取りワード
3005  チェックサムワード
3006  書込みコマンド
3008a、3008b、3012a、3012b  アドレスワード
3010  読取りコマンド
3102  チェックサム発生器
3104  チェックサム、チェックサム値
3110  第1のCCIeワードN
3112  第2のCCIeワードN+1
3114  第3のCCIeワードN+2
3116  第4のCCIeワードN+3
3202  例示的な柔軟なCCIeワードフォーマット、20ビットワード、柔軟なCCIeワード
3204  エラー検出定数
3206  データのため、またはエラー検出定数を拡張するためのいずれか
3208  制御ビット
3210  14ビットのデータフィールド
3212  「余剰」ビット
3220  代替CCIeワードフォーマット
3228  制御コード
3302  バス
3304  処理回路
3305  メモリ
3306  コンピュータ可読媒体
3306a  命令、エンコーダ/デコーダ命令
3306b  命令、エラー検出命令
3306c  命令、チェックサム命令
3308  バスインターフェース/回路
3314  マスタ/スレーブデバイス、デバイス
3314  マスタ/スレーブデバイス
3320  回路、エンコーダ/デコーダ回路
3330  回路、エラー検出回路
3340  回路、チェックサム回路
3350  制御データバス、バス
3360  マスタ/スレーブデバイス
3502  第1のライン(SDA)、第1のライン
3504  第2のライン(SCL)、第2のライン
3506  クロック
3508  開始条件
3510  開始条件、第2の開始条件
3512  12個のシンボル
3602  クロックパルス、次のシンボル
3604、3804  状態
3702  2つのクロックパルス、次のワード
3704  シンボル「2」および「3」
3802  余剰クロックパルス
3806  シンボル遷移
【図１】
0006411480.tif 000002
【図２】
0006411480.tif 000003
【図３】
0006411480.tif 000004
【図４】
0006411480.tif 000005
【図５】
0006411480.tif 000006
【図６】
0006411480.tif 000007
【図７】
0006411480.tif 000008
【図８】
0006411480.tif 000009
【図９】
0006411480.tif 000010
【図１０】
0006411480.tif 000011
【図１１】
0006411480.tif 000012
【図１２】
0006411480.tif 000013
【図１３】
0006411480.tif 000014
【図１４】
0006411480.tif 000015
【図１５】
0006411480.tif 000016
【図１６】
0006411480.tif 000017
【図１７】
0006411480.tif 000018
【図１８】
0006411480.tif 000019
【図１９】
0006411480.tif 000020
【図２０】
0006411480.tif 000021
【図２１】
0006411480.tif 000022
【図２２】
0006411480.tif 000023
【図２３】
0006411480.tif 000024
【図２４】
0006411480.tif 000025
【図２５】
0006411480.tif 000026
【図２６】
0006411480.tif 000027
【図２７】
0006411480.tif 000028
【図２８】
0006411480.tif 000029
【図２９】
0006411480.tif 000030
【図３０】
0006411480.tif 000031
【図３１】
0006411480.tif 000032
【図３２】
0006411480.tif 000033
【図３３】
0006411480.tif 000034
【図３４】
0006411480.tif 000035
【図３５】
0006411480.tif 000036
【図３６】
0006411480.tif 000037
【図３７】
0006411480.tif 000038
【図３８】
0006411480.tif 000039