(57)【要約】  シリアル周辺インターフェースを通して結合されたデバイス間のハードウェアフロー制御を実装するためのシステム、方法、および装置。シリアル周辺インターフェースを使用して、情報を送信するための方法は、スレーブ選択ライン上で第1の電圧状態をアサートすることによって、シリアル周辺インターフェースバスの1つまたは複数のデータラインを介したデータの交換を開始するステップと、スレーブ選択ラインが第1の電圧状態のままである間、シリアル周辺インターフェースバスを介して、データとクロック信号とを送信するステップと、スレーブ選択ラインが第2の電圧状態に遷移するとき、シリアル周辺インターフェースバスを介して、データとクロック信号とを送信することを控えるステップと、スレーブ選択ラインが第1の電圧状態のままである間、スレーブデバイスにおいて、データを受信バッファに受信するステップと、受信バッファの占有がしきい値占有レベルに達するかまたはそれを超えるとき、スレーブ選択ライン上で第2の電圧状態をアサートするステップとを含む。
2018536942.tif 000002
【特許請求の範囲】
【請求項１】
装置であって、
マルチラインシリアル周辺インターフェースバスと、
前記シリアル周辺インターフェースバスに結合され、
前記シリアル周辺インターフェースバスの1つまたは複数のデータラインを介したデータの交換を開始するために、スレーブ選択ライン上で第1の電圧状態をアサートすること、
前記スレーブ選択ラインが前記第1の電圧状態のままである間、前記シリアル周辺インターフェースバスのクロックラインを介してクロック信号を送信することであって、前記データの交換が前記クロック信号と同期される、こと、および、
前記スレーブ選択ラインが第2の電圧状態である間、前記1つまたは複数のデータラインを介してデータを送信することを控えること
を行うように適合された、マスタデバイスと、
前記シリアル周辺インターフェースバスに結合されたスレーブデバイスであって、前記スレーブデバイスが受信バッファを有し、
前記スレーブ選択ラインが前記第1の電圧状態のままである間、データを前記受信バッファに受信すること、および
前記受信バッファの占有がしきい値占有レベルに達するかまたはそれを超えるとき、前記スレーブ選択ライン上で前記第2の電圧状態をアサートすること
を行うように適合される、スレーブデバイスと
を備える装置。
【請求項２】
前記マスタデバイスが、高インピーダンス出力を使用して、前記スレーブ選択ラインを前記第1の電圧状態に駆動するように構成された、第1のドライバ回路を備え、
前記スレーブデバイスが、低インピーダンス出力を使用して、前記スレーブ選択ラインを前記第1の電圧状態に駆動するように構成された、第2のドライバ回路を備える、請求項1に記載の装置。
【請求項３】
前記高インピーダンス出力が前記スレーブ選択ラインを前記第1の電圧状態に駆動することを試行中であるとき、前記スレーブ選択ラインを前記第2の電圧状態に駆動するために、前記低インピーダンス出力がイネーブルにされるように、前記第1のドライバ回路および前記第2のドライバ回路のインピーダンスが選択される、請求項2に記載の装置。
【請求項４】
前記マスタデバイスが、
前記スレーブ選択ラインを前記第1の電圧状態の方に駆動することを、ラインドライバに行わせること、および、
前記スレーブ選択ラインが前記第1の電圧状態を達成するとき、前記ラインドライバを開放回路動作モードに入らせること
によって、前記第1の電圧状態をアサートするように適合される、請求項1に記載の装置。
【請求項５】
前記マスタデバイスが、
前記ラインドライバが前記開放回路動作モードに入った後、前記スレーブ選択ラインのシグナリング状態を維持するように構成された、キーパー回路
を備える、請求項4に記載の装置。
【請求項６】
前記スレーブデバイスが、
前記スレーブ選択ライン上で前記第2の電圧状態をアサートした後、前記受信バッファの占有が前記しきい値占有レベルを下回るとき、前記スレーブ選択ライン上で前記第1の電圧状態をアサートすること
を行うように適合される、請求項1に記載の装置。
【請求項７】
前記スレーブデバイスが、
前記受信バッファの占有を監視すること、
前記スレーブ選択ラインの電圧状態を監視すること、および
前記スレーブ選択ラインの前記電圧状態が前記第1の電圧状態であり、前記占有が、前記しきい値占有レベルに等しいかまたはそれを超えるレベルであるとき、前記スレーブ選択ライン上で前記第2の電圧状態をアサートすることを、ラインドライバ回路に行わせること
を行うように構成された、フロー制御判定回路を備える、請求項1に記載の装置。
【請求項８】
前記フロー制御判定回路が、
前記第2の電圧状態をアサートすることを、前記ラインドライバ回路に行わせた後、および、前記占有が、前記しきい値占有レベル未満であるレベルに低下した後、前記スレーブ選択ラインを前記第1の電圧状態に戻すことを、前記ラインドライバ回路に行わせること
を行うように構成される、請求項7に記載の装置。
【請求項９】
シリアル周辺インターフェースを使用して、情報を送信するための方法であって、
マスタデバイスにおいて、スレーブ選択ライン上で第1の電圧状態をアサートすることによって、シリアル周辺インターフェースバスの1つまたは複数のデータラインを介したデータの交換を開始するステップと、
前記スレーブ選択ラインが前記第1の電圧状態のままである間、前記シリアル周辺インターフェースバスを介して、前記マスタデバイスから、データとクロック信号とを送信するステップと、
前記スレーブ選択ラインが前記第1の電圧状態から第2の電圧状態に遷移するとき、前記シリアル周辺インターフェースバスを介して、前記マスタデバイスから、データと前記クロック信号とを送信することを控えるステップと、
前記スレーブ選択ラインが前記第1の電圧状態のままである間、スレーブデバイスにおいて、データを受信バッファに受信するステップと、
前記スレーブデバイスによって、前記受信バッファの占有がしきい値占有レベルに達するかまたはそれを超えるとき、前記スレーブ選択ライン上で前記第2の電圧状態をアサートするステップと
を含む方法。
【請求項１０】
前記マスタデバイスが、高インピーダンス出力を使用して、前記スレーブ選択ラインを前記第1の電圧状態に駆動するように構成された、第1のドライバ回路を備え、
前記スレーブデバイスが、低インピーダンス出力を使用して、前記スレーブ選択ラインを前記第1の電圧状態に駆動するように構成された、第2のドライバ回路を備える、請求項9に記載の方法。
【請求項１１】
前記高インピーダンス出力が前記スレーブ選択ラインを前記第1の電圧状態に駆動することを試行中であるとき、前記スレーブ選択ラインを前記第2の電圧状態に駆動するために、前記低インピーダンス出力がイネーブルにされるように、前記第1のドライバ回路および前記第2のドライバ回路のインピーダンスが選択される、請求項10に記載の方法。
【請求項１２】
前記スレーブ選択ライン上で前記第1の電圧状態をアサートすることが、
前記スレーブ選択ラインを前記第1の電圧状態の方に駆動することを、前記マスタデバイスのラインドライバに行わせるステップと、
前記スレーブ選択ラインが前記第1の電圧状態を達成するとき、前記マスタデバイスの前記ラインドライバを開放回路動作モードに入らせるステップと
を含む、請求項9に記載の方法。
【請求項１３】
前記マスタデバイスが、
前記ラインドライバが前記開放回路動作モードに入った後、前記スレーブ選択ラインのシグナリング状態を維持するように構成された、キーパー回路
を備える、請求項12に記載の方法。
【請求項１４】
前記スレーブデバイスが前記スレーブ選択ライン上で前記第2の電圧状態をアサートした後、前記受信バッファの占有が前記しきい値占有レベルを下回るとき、前記スレーブデバイスのラインドライバを使用して、前記スレーブ選択ライン上で前記第1の電圧状態をアサートするステップ
をさらに含む、請求項9に記載の方法。
【請求項１５】
前記スレーブデバイスにおいて、前記受信バッファの占有を監視するステップと、
前記スレーブ選択ラインの電圧状態を監視するステップと、
前記スレーブ選択ラインの前記電圧状態が前記第1の電圧状態であり、前記占有が、前記しきい値占有レベルに等しいかまたはそれを超えるレベルであるとき、前記スレーブ選択ラインを前記第2の電圧状態に駆動することを、前記スレーブデバイスのラインドライバ回路に行わせるステップと
をさらに含む、請求項9に記載の方法。
【請求項１６】
前記第2の電圧状態をアサートすることを、前記ラインドライバ回路に行わせた後、および、前記占有が、前記しきい値占有レベル未満であるレベルに低下した後、前記スレーブ選択ラインを前記第1の電圧状態に戻すステップ
をさらに含む、請求項15に記載の方法。
【請求項１７】
装置であって、
シリアル周辺インターフェースバスのスレーブ選択ライン上で第1の電圧状態をアサートするための手段であって、前記シリアル周辺インターフェースバスの1つまたは複数のデータラインを介したデータの交換を開始するために、前記第1の電圧状態が前記スレーブ選択ライン上でアサートされる、手段と、
前記シリアル周辺インターフェースバスを介してデータとクロック信号とを送信するための手段であって、前記データと前記クロック信号とを送信するための前記手段が、
前記スレーブ選択ラインが前記第1の電圧状態のままである間、マスタデバイスからスレーブデバイスに前記データを送信すること、および
前記スレーブ選択ラインが前記第1の電圧状態から第2の電圧状態に遷移するとき、前記マスタデバイスから前記スレーブデバイスに前記データを送信することを控えること
を行うように構成される、手段と
を備え、
前記スレーブデバイスが、前記スレーブ選択ラインが前記第1の電圧状態のままである間、前記データを受信バッファに受信すること、および、前記受信バッファの占有がしきい値占有レベルに達するかまたはそれを超えるとき、前記スレーブ選択ライン上で前記第2の電圧状態をアサートすることを行うように構成される、装置。
【請求項１８】
前記マスタデバイスが、高インピーダンス出力を使用して、前記スレーブ選択ラインを前記第1の電圧状態に駆動するように構成された、第1のドライバ回路を備え、
前記スレーブデバイスが、低インピーダンス出力を使用して、前記スレーブ選択ラインを前記第1の電圧状態に駆動するように構成された、第2のドライバ回路を備える、請求項17に記載の装置。
【請求項１９】
前記高インピーダンス出力が前記スレーブ選択ラインを前記第1の電圧状態に駆動することを試行中であるとき、前記スレーブ選択ラインを前記第2の電圧状態に駆動するために、前記低インピーダンス出力がイネーブルにされるように、前記第1のドライバ回路および前記第2のドライバ回路のインピーダンスが選択される、請求項18に記載の装置。
【請求項２０】
前記スレーブ選択ライン上で前記第1の電圧状態をアサートするための前記手段が、
前記スレーブ選択ラインを前記第1の電圧状態の方に駆動することを、前記マスタデバイスのラインドライバに行わせること、および
前記スレーブ選択ラインが前記第1の電圧状態を達成するとき、前記マスタデバイスの前記ラインドライバを開放回路動作モードに入らせること
を行うように構成される、請求項17に記載の装置。
【請求項２１】
前記マスタデバイスが、
前記ラインドライバが前記開放回路動作モードに入った後、前記スレーブ選択ラインのシグナリング状態を維持するように構成された、キーパー回路
を備える、請求項20に記載の装置。
【請求項２２】
前記スレーブデバイスが、
前記スレーブデバイスにおいて、前記受信バッファの占有を監視すること、
前記スレーブ選択ラインの電圧状態を監視すること、および
前記スレーブ選択ラインの前記電圧状態が前記第1の電圧状態であり、前記占有が、前記しきい値占有レベルに等しいかまたはそれを超えるレベルであるとき、前記スレーブ選択ラインを前記第2の電圧状態に駆動すること
を行うように構成される、請求項17に記載の装置。
【請求項２３】
前記スレーブ選択ライン上で前記第1の電圧状態をアサートするための前記手段が、
前記スレーブデバイスが、前記スレーブ選択ラインを駆動することを中止した後、前記スレーブ選択ラインを前記第1の電圧状態に戻すこと
を行うように構成される、請求項22に記載の装置。
【請求項２４】
シリアル周辺インターフェースに結合されたスレーブデバイスであって、
前記シリアル周辺インターフェースのスレーブ選択ラインに結合された受信回路と、
低インピーダンスを用いて前記シリアル周辺インターフェースの前記スレーブ選択ラインを選択的に駆動するように構成されたラインドライバと、
前記シリアル周辺インターフェースからデータを受信するように構成された受信バッファと、
フロー制御論理であって、
前記シリアル周辺インターフェースを介して通信するために、いつ前記スレーブデバイスが選択されるかを決定するために、前記受信回路の出力を監視することであって、前記スレーブデバイスが、前記スレーブ選択ラインが第1の電圧レベルであるとき、通信するために選択される、こと、
前記スレーブデバイスにおいて、前記受信バッファの占有を監視すること、および
前記スレーブデバイスが通信するために選択され、前記受信バッファの前記占有が、しきい値占有レベルに等しいかまたはそれを超えるレベルであるとき、前記スレーブ選択ラインを第2の電圧レベルに駆動することを、前記ラインドライバに行わせること
を行うように構成された、フロー制御論理と
を備えるスレーブデバイス。
【請求項２５】
前記フロー制御論理が、
前記受信バッファの前記占有が、前記しきい値占有レベル未満であるレベルに低下した後、前記スレーブ選択ラインを前記第1の電圧レベルに戻させること
を行うように構成される、請求項24に記載のスレーブデバイス。
【請求項２６】
前記ラインドライバが、前記スレーブ選択ラインを前記第1の電圧レベルに駆動するためにマスタデバイスによって使用されたドライバの出力インピーダンスよりも低い、出力インピーダンスを用いて、前記スレーブ選択ラインを前記第2の電圧レベルに駆動するように構成される、請求項24に記載のスレーブデバイス。
【請求項２７】
前記フロー制御論理が、
前記受信バッファの占有が、前記しきい値占有レベル未満であるレベルであるとき、低インピーダンスを用いて前記スレーブ選択ラインを駆動するように、前記ラインドライバを構成すること、および
前記受信バッファの占有が、前記しきい値占有レベル未満であるレベルであるとき、開放回路動作モードに入るように、前記ラインドライバを構成すること
を行うように構成される、請求項24に記載のスレーブデバイス。
【請求項２８】
前記フロー制御論理が、
前記開放回路動作モードに入る前に、前記スレーブ選択ラインを前記第1の電圧レベルに駆動することを、前記ラインドライバに行わせること
を行うように構成される、請求項27に記載のスレーブデバイス。
【請求項２９】
キーパー回路が、前記ラインドライバが前記開放回路動作モードに入った後、前記スレーブ選択ラインのシグナリング状態を維持するように構成される、請求項27に記載のスレーブデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、2015年12月10日に米国特許商標庁に出願された仮出願第62/265,877号、および2016年11月10日に米国特許商標庁に出願された非仮出願第15/348,435号の優先権および利益を主張し、それらの内容全体が参照により本明細書に組み込まれる。
【０００２】
本開示は、一般にシリアル周辺インターフェースの動作に関し、より詳細には、シリアル周辺インターフェースにおけるハードウェアフロー制御の実装に関する。
【背景技術】
【０００３】
モバイル通信デバイスは、回路板、集積回路(IC)デバイス、および/またはシステムオンチップ(SoC)デバイスを含む、様々な構成要素を含み得る。構成要素は、シリアルバスを通して通信する処理デバイス、ユーザインターフェース構成要素、ストレージおよび他の周辺構成要素を含み得る。汎用シリアルインターフェースは、当業界において知られており、一般に、プロセッサと様々な周辺デバイスとの間の同期シリアル通信を提供するために、モバイル通信デバイス内に含まれる、シリアル周辺インターフェース(SPI)を含む。
【０００４】
一例では、SoCは、スレーブSPIデバイスとして構成された周辺デバイスに、SPIバスを通して結合された、SPIマスタデバイスとして動作する。マスタデバイスは、SPIバスのクロックライン上でクロック信号を与え、その場合、クロック信号は、マスタデバイスとスレーブデバイスとの間の同期シリアルデータ交換を制御する。データは、SPIバスの2つ以上のデータラインを使用して通信され得る。データラインのうちの1つまたは複数は、複数のスレーブデバイスによって共有され得るので、SPIバスは、共有データラインへのアクセスを制御するために、スレーブデバイスごとにスレーブ選択ラインを与える。
【０００５】
SPIバスを採用する従来のシステムは、ソフトウェアベースのフロー制御を実装し得、それによって、通信リンクにレイテンシがもたらされる。レイテンシは、ディスプレイオーバーレイタッチインターフェースのために使用されるなどのインターフェース、または、NOR-FLASHストレージへのSPIインターフェースを通して実装されるようなexecute in place(XIP)方法によるシステムにおいて問題になることがある。絶えず増大するリンクスループットおよび高速応答フロー制御要件を、現在のSPIインターフェース技術が満たすことは、ますます困難である。
【０００６】
モバイル通信デバイスが、より高いレベルの機能を含み続けているので、周辺装置とアプリケーションプロセッサとの間の低レイテンシ送信をサポートするために、改善されたシリアル通信技法が必要とされる。
【発明の概要】
【課題を解決するための手段】
【０００７】
本開示のいくつかの態様は、SPIバスを使用してマスタデバイスに結合されたスレーブデバイスのための、最適化された低レイテンシハードウェアフロー制御を提供することができる、システム、装置、方法、および技法に関する。ハードウェアフロー制御は、スレーブデバイスまたはマスタデバイス上に追加のピンを割り当てることなしに実装され得る。
【０００８】
本開示の様々な態様では、シリアル周辺インターフェースを使用して、情報を送信するための方法は、マスタデバイスにおいて、スレーブ選択ライン上で第1の電圧状態をアサートすることによって、シリアル周辺インターフェースバスの1つまたは複数のデータラインを介したデータの交換を開始するステップと、スレーブ選択ラインが第1の電圧状態のままである間、シリアル周辺インターフェースバスを介して、マスタデバイスから、データとクロック信号とを送信するステップと、スレーブ選択ラインが第2の電圧状態に遷移するとき、シリアル周辺インターフェースバスを介して、マスタデバイスから、データとクロック信号とを送信することを控えるステップと、スレーブ選択ラインが第1の電圧状態のままである間、スレーブデバイスにおいて、データを受信バッファに受信するステップと、スレーブデバイスによって、受信バッファの占有がしきい値占有レベルに達するかまたはそれを超えるとき、スレーブ選択ライン上で第2の電圧状態をアサートするステップとを含む。
【０００９】
いくつかの態様では、マスタデバイスは、高インピーダンス出力を使用して、スレーブ選択ラインを第1の電圧状態に駆動するように構成された、第1のドライバ回路を有し、スレーブデバイスは、低インピーダンス出力を使用して、スレーブ選択ラインを第1の電圧状態に駆動するように構成された、第2のドライバ回路を有する。高インピーダンス出力がスレーブ選択ラインを第1の電圧状態に駆動することを試行中であるとき、スレーブ選択ラインを第2の電圧状態に駆動するために、低インピーダンス出力がイネーブルにされるように、およびその逆も同様であるように、第1のドライバ回路および第2のドライバ回路のインピーダンスが選択される。
【００１０】
いくつかの態様では、スレーブ選択ライン上で第1の電圧状態をアサートすることは、スレーブ選択ラインを第1の電圧状態の方に駆動することを、マスタデバイスのラインドライバに行わせるステップと、スレーブ選択ラインが第1の電圧状態を達成するとき、マスタデバイスのラインドライバを開放回路動作モードに入らせるステップとを含む。マスタデバイスは、ラインドライバが開放回路動作モードに入った後、スレーブ選択ラインのシグナリング状態を維持するように構成された、キーパー回路を含み得る。
【００１１】
一態様では、方法は、スレーブデバイスがスレーブ選択ライン上で第2の電圧状態をアサートした後、受信バッファの占有がしきい値占有レベルを下回るとき、スレーブデバイスのラインドライバを使用して、スレーブ選択ライン上で第1の電圧状態をアサートするステップを含み得る。
【００１２】
いくつかの態様では、方法は、スレーブデバイスにおいて、受信バッファの占有を監視するステップと、スレーブ選択ラインの電圧状態を監視するステップと、スレーブ選択ラインの電圧状態が第1の電圧状態であり、占有が、しきい値占有レベルに等しいかまたはそれを超えるレベルであるとき、スレーブ選択ラインを第2の電圧状態に駆動することを、スレーブデバイスのドライバに行わせるステップとを含む。方法は、第2の電圧状態をアサートすることを、ラインドライバ回路に行わせた後、および、占有が、しきい値占有レベル未満であるレベルに低下した後、スレーブ選択ラインを第1の電圧状態に戻すステップを含み得る。
【００１３】
本開示の様々な態様では、装置は、マルチラインシリアル周辺インターフェースバスと、シリアル周辺インターフェースバスに結合されたマスタデバイスと、シリアル周辺インターフェースバスに結合されたスレーブデバイスとを有し、そこで、スレーブデバイスは受信バッファを有する。マスタデバイスは、シリアル周辺インターフェースバスの1つまたは複数のデータラインを介したデータの交換を開始するために、スレーブ選択ライン上で第1の電圧状態をアサートするように適合され得る。マスタデバイスは、スレーブ選択ラインが第1の電圧状態のままである間、シリアル周辺インターフェースバスのクロックラインを介してクロック信号を送信するように適合され得る。データの交換は、クロック信号と同期され得る。マスタデバイスは、スレーブ選択ラインが第2の電圧状態である間、1つまたは複数のデータラインを介してデータを送信することを控えるように適合され得る。スレーブデバイスは、スレーブ選択ラインが第1の電圧状態のままである間、データを受信バッファに受信すること、および、受信バッファの占有がしきい値占有レベルに達するかまたはそれを超えるとき、スレーブ選択ライン上で第2の電圧状態をアサートすることを行うように適合され得る。
【００１４】
いくつかの態様では、マスタデバイスは、高インピーダンス出力を使用して、スレーブ選択ラインを第1の電圧状態に駆動するように構成された、第1のドライバ回路を含み、スレーブデバイスは、低インピーダンス出力を使用して、スレーブ選択ラインを第1の電圧状態に駆動するように構成された、第2のドライバ回路を含む。高インピーダンス出力がスレーブ選択ラインを第1の電圧状態に駆動することを試行中であるとき、スレーブ選択ラインを第2の電圧状態に駆動するために、低インピーダンス出力がイネーブルにされるように、第1のドライバ回路および第2のドライバ回路のインピーダンスが選択され得る。
【００１５】
いくつかの態様では、マスタデバイスは、スレーブ選択ラインを第1の電圧状態の方に駆動することを、ラインドライバに行わせること、および、スレーブ選択ラインが第1の電圧状態を達成するとき、ラインドライバを開放回路動作モードに入らせることによって、第1の電圧状態をアサートするように適合され得る。マスタデバイスは、ラインドライバが開放回路動作モードに入った後、スレーブ選択ラインのシグナリング状態を維持するように構成された、キーパー回路を含み得る。
【００１６】
一態様では、スレーブデバイスは、スレーブ選択ライン上で第2の電圧状態をアサートした後、および、受信バッファの占有がしきい値占有レベルを下回るとき、スレーブ選択ライン上で第1の電圧状態をアサートするように適合される。
【００１７】
いくつかの態様では、スレーブデバイスは、受信バッファの占有を監視すること、スレーブ選択ラインの電圧状態を監視すること、および、スレーブ選択ラインの電圧状態が第1の電圧状態であり、占有が、しきい値占有レベルに等しいかまたはそれを超えるレベルであるとき、スレーブ選択ライン上で第2の電圧状態をアサートすることをラインドライバ回路に行わせることを、行うように構成された、フロー制御判定回路を含む。フロー制御判定回路は、第2の電圧状態をアサートすることを、ラインドライバ回路に行わせた後、および、占有が、しきい値占有レベル未満であるレベルに低下した後、スレーブ選択ラインを第1の電圧状態に戻すことを、ラインドライバ回路に行わせるように構成され得る。
【００１８】
本開示の様々な態様では、装置は、シリアル周辺インターフェースバスのスレーブ選択ライン上で第1の電圧状態をアサートするための手段と、シリアル周辺インターフェースバスを介してデータとクロック信号とを送信するための手段とを含む。シリアル周辺インターフェースバスの1つまたは複数のデータラインを介したデータの交換を開始するために、第1の電圧状態がスレーブ選択ライン上でアサートされ得る。データとクロック信号とを送信するための手段は、スレーブ選択ラインが第1の電圧状態のままである間、マスタデバイスからスレーブデバイスにデータを送信すること、および、スレーブ選択ラインが第1の電圧状態から第2の電圧状態に遷移するとき、マスタデバイスからスレーブデバイスにデータを送信することを控えることを行うように構成され得る。スレーブデバイスは、スレーブ選択ラインが第1の電圧状態のままである間、データを受信バッファに受信すること、および、受信バッファの占有がしきい値占有レベルに達するかまたはそれを超えるとき、スレーブ選択ライン上で第2の電圧状態をアサートすることを行うように構成され得る。
【００１９】
いくつかの態様では、マスタデバイスは、高インピーダンス出力を使用して、スレーブ選択ラインを第1の電圧状態に駆動するように構成された、第1のドライバ回路を含み得、スレーブデバイスは、低インピーダンス出力を使用して、スレーブ選択ラインを第1の電圧状態に駆動するように構成された、第2のドライバ回路を含み得る。高インピーダンス出力がスレーブ選択ラインを第1の電圧状態に駆動することを試行中であるとき、スレーブ選択ラインを第2の電圧状態に駆動するために、低インピーダンス出力がイネーブルにされるように、第1のドライバ回路および第2のドライバ回路のインピーダンスが選択され得る。
【００２０】
いくつかの態様では、スレーブ選択ライン上で第1の電圧状態をアサートするための手段は、スレーブ選択ラインを第1の電圧状態の方に駆動することを、マスタデバイスのラインドライバに行わせること、および、スレーブ選択ラインが第1の電圧状態を達成するとき、マスタデバイスのラインドライバを開放回路動作モードに入らせることを行うように構成され得る。マスタデバイスは、ラインドライバが開放回路動作モードに入った後、スレーブ選択ラインのシグナリング状態を維持するように構成された、キーパー回路を含み得る。
【００２１】
いくつかの態様では、スレーブデバイスは、スレーブデバイスにおいて受信バッファの占有を監視すること、スレーブ選択ラインの電圧状態を監視すること、および、スレーブ選択ラインの電圧状態が第1の電圧状態であり、占有が、しきい値占有レベルに等しいかまたはそれを超えるレベルであるとき、スレーブ選択ラインを第2の電圧状態に駆動することを行うように構成され得る。スレーブ選択ライン上で第1の電圧状態をアサートするための手段は、スレーブデバイスが、スレーブ選択ラインを駆動することを中止した後、スレーブ選択ラインを第1の電圧状態に戻すことを行うように構成され得る。
【００２２】
様々な態様では、シリアル周辺インターフェースに結合されたスレーブデバイスは、シリアル周辺インターフェースのスレーブ選択ラインに結合された受信回路と、低インピーダンスを用いてシリアル周辺インターフェースのスレーブ選択ラインを選択的に駆動するように構成されたラインドライバと、シリアル周辺インターフェースからデータを受信するように構成された受信バッファと、フロー制御論理とを有する。フロー制御論理は、シリアル周辺インターフェースを介して通信するために、いつスレーブデバイスが選択されるかを決定するために、受信回路の出力を監視すること、スレーブデバイスにおいて受信バッファの占有を監視すること、および、スレーブデバイスが通信するために選択され、受信バッファの占有が、しきい値占有レベルに等しいかまたはそれを超えるレベルであるとき、スレーブ選択ラインを第2の電圧レベルに駆動することをラインドライバに行わせることを、行うように構成され得る。スレーブデバイスは、スレーブ選択ラインが第1の電圧レベルであるとき、通信するために選択され得る。
【００２３】
一態様では、フロー制御論理は、受信バッファの占有が、しきい値占有レベル未満であるレベルに低下した後、スレーブ選択ラインを第1の電圧レベルに戻させるように構成され得る。ラインドライバは、スレーブ選択ラインを第1の電圧状態に駆動するためにマスタデバイスによって使用されたドライバの出力インピーダンスよりも低い、出力インピーダンスを用いて、スレーブ選択ラインを第2の電圧レベルに駆動するように構成され得る。
【００２４】
いくつかの態様では、フロー制御論理は、受信バッファの占有が、しきい値占有レベル未満であるレベルであるとき、低インピーダンスを用いてスレーブ選択ラインを駆動するように、ラインドライバを構成すること、および、受信バッファの占有が、しきい値占有レベル未満であるレベルであるとき、開放回路動作モードに入るように、ラインドライバを構成することを行うように適合され得る。フロー制御論理は、開放回路動作モードに入る前に、スレーブ選択ラインを第1の電圧レベルに駆動することを、ラインドライバに行わせるように構成され得る。キーパー回路は、ラインドライバが開放回路動作モードに入った後、スレーブ選択ラインのシグナリング状態を維持するように構成され得る。
【００２５】
本開示の様々な態様では、プロセッサ可読記憶媒体が開示される。記憶媒体は、非一時的記憶媒体であり得、1つまたは複数のプロセッサによって実行されたとき、スレーブ選択ライン上で第1の電圧状態をアサートすることによって、シリアル周辺インターフェースバスの1つまたは複数のデータラインを介したデータの交換を開始すること、スレーブ選択ラインが第1の電圧状態のままである間、シリアル周辺インターフェースバスを介して、マスタデバイスから、データとクロック信号とを送信すること、および、スレーブ選択ラインが第1の電圧状態から第2の電圧状態に遷移するとき、シリアル周辺インターフェースバスを介して、マスタデバイスから、データとクロック信号とを送信することを控えることを、1つまたは複数のプロセッサに行わせるコードを記憶し得る。スレーブ選択ラインが第1の電圧状態のままである間、データが、スレーブデバイスにおいて受信バッファに受信され得、スレーブデバイスは、受信バッファの占有がしきい値占有レベルに達するかまたはそれを超えるとき、スレーブ選択ライン上で第2の電圧状態をアサートするように構成され得る。
【００２６】
いくつかの態様では、マスタデバイスは、高インピーダンス出力を使用して、スレーブ選択ラインを第1の電圧状態に駆動するように構成された、第1のドライバ回路を含み得る。スレーブデバイスは、低インピーダンス出力を使用して、スレーブ選択ラインを第1の電圧状態に駆動するように構成された、第2のドライバ回路を含み得る。高インピーダンス出力がスレーブ選択ラインを第1の電圧状態に駆動することを試行中であるとき、スレーブ選択ラインを第2の電圧状態に駆動するために、低インピーダンス出力がイネーブルにされるように、第1のドライバ回路および第2のドライバ回路のインピーダンスが選択され得る。
【００２７】
いくつかの態様では、スレーブ選択ラインを第1の電圧状態の方に駆動することを、マスタデバイスのラインドライバに行わせること、および、スレーブ選択ラインが第1の電圧状態を達成するとき、マスタデバイスのラインドライバを開放回路動作モードに入らせることによって、第1の電圧状態がスレーブ選択ライン上でアサートされ得る。マスタデバイスは、ラインドライバが開放回路動作モードに入った後、スレーブ選択ラインのシグナリング状態を維持するように構成された、キーパー回路を含み得る。
【００２８】
いくつかの態様では、スレーブデバイスは、スレーブデバイスがスレーブ選択ライン上で第2の電圧状態をアサートした後、受信バッファの占有がしきい値占有レベルを下回るとき、ラインドライバを使用して、スレーブ選択ライン上で第1の電圧状態をアサートし得る。スレーブデバイスは、スレーブデバイスにおいて受信バッファの占有を監視すること、スレーブ選択ラインの電圧状態を監視すること、および、スレーブ選択ラインの電圧状態が第1の電圧状態であり、占有が、しきい値占有レベルに等しいかまたはそれを超えるレベルであるとき、スレーブ選択ラインを第2の電圧状態に駆動することを行うように構成され得る。スレーブデバイスが、第2の電圧状態をアサートした後、および、占有が、しきい値占有レベル未満であるレベルに低下した後、スレーブ選択ラインが第1の電圧状態に戻され得る。
【図面の簡単な説明】
【００２９】
【図１】複数の利用可能な規格のうちの1つに従って選択的に動作される、ICデバイス間のデータリンクを採用する装置を示す図である。
【図２】本明細書で開示するいくつかの態様に従って適合され得る、2データラインシリアル周辺インターフェースのいくつかの態様を示す図である。
【図３】本明細書で開示するいくつかの態様に従って適合され得る、クワッドシリアル周辺インターフェースのいくつかの態様を示す図である。
【図４】本明細書で開示するいくつかの態様による、ハードウェアフロー制御を行うように適合された2データラインシリアル周辺インターフェースを示す図である。
【図５】本明細書で開示するいくつかの態様による、ハードウェアフロー制御を行うために使用され得るライン駆動回路の一例を示す図である。
【図６】本明細書で開示するいくつかの態様に従って実装され得るフロー制御の第1の例を示す図である。
【図７】本明細書で開示するいくつかの態様に従って実装され得るフロー制御の第2の例を示す図である。
【図８】本明細書で開示するいくつかの態様に従って適合され得る処理回路を採用する装置の一例を示す図である。
【図９】本明細書で開示するいくつかの態様による、スレーブデバイスに複数の動的アドレスを取得させるように適合されたアプリケーションプロセッサのいくつかの動作を示すフローチャートである。
【図１０】本明細書で開示するいくつかの態様による、複数の動的アドレスに応答するように適合された装置のためのハードウェア実装形態の第1の例を示す図である。
【発明を実施するための形態】
【００３０】
添付の図面に関して以下に記載する詳細な説明は、様々な構成について説明するものであり、本明細書で説明する概念が実践され得る唯一の構成を表すものではない。詳細な説明は、様々な概念の完全な理解を与える目的で、具体的な細部を含む。しかしながら、当業者には、これらの概念が、これらの具体的な細部なしでも実践され得ることが明らかであろう。いくつかの事例では、そのような概念を不明瞭にすることを避けるために、よく知られている構造および構成要素がブロック図の形態で示される。
【００３１】
次に、様々な装置および方法を参照して、本発明のいくつかの態様を提示する。これらの装置および方法について、以下の詳細な説明において説明し、様々なブロック、モジュール、構成要素、回路、ステップ、プロセス、アルゴリズムなど(「要素」と総称される)によって添付の図面に示す。これらの要素は、電子ハードウェア、コンピュータソフトウェア、またはそれらの任意の組合せを使用して実装される場合がある。そのような要素がハードウェアとして実装されるか、またはソフトウェアとして実装されるかは、特定の適用例および全体的なシステムに課される設計制約に依存する。
【００３２】
概説
複数のSoCデバイスおよび他のICデバイスを含むデバイスは、プロセッサをモデムおよび他の周辺装置と接続するために、シリアルバスを採用することが多い。シリアルバスは、定義された複数のプロトコルに従って動作され得る。一例では、シリアル周辺インターフェース(SPI)が、データおよびクロック信号をサポートするバスに結合された複数のデバイスを相互接続するために使用され得る。マスタデバイスは、スレーブ選択信号を使用して、複数のスレーブデバイスのうちの1つを選択する。ポイントツーポイント通信は、マスタデバイスと選択されたスレーブデバイスとの間でトランザクションが行われる。様々な例では、SPIバスは、2データラインSPIインターフェースとして、または4データラインクワッドシリアル周辺インターフェース(QSPI)として構成され得る。2データラインSPIでは、データラインは単方向であるが、QSPIでは、データラインは双方向であり得る。QSPIは、2データラインSPIよりも高いデータレートを与えることができる。両方のSPIタイプは、すべてのスレーブに広がる専用クロックラインを使用する。両方のSPIタイプは、専用スレーブ選択ラインを使用し、マスタデバイスは、マスタデバイスが結合される先のスレーブデバイスごとに少なくとも1つのスレーブ選択を与える。
【００３３】
本明細書で開示するいくつかの態様によれば、SPIに結合されたデバイスは、マスタデバイスおよびスレーブデバイスにピンを追加することなしに、物理リンクレベルハードウェアフロー制御を行うように適合され得る。いくつかの事例では、マスタデバイスおよびスレーブデバイス上のスレーブ選択ラインは、スレーブ選択信号の使用がフロー制御信号として機能することを可能にするように適合され得る。本技法は、スレーブ選択ラインがアクティブ低またはアクティブ高であるとき、適用可能である。
【００３４】
シリアルデータリンクを採用する装置の例
いくつかの態様によれば、シリアルデータリンクは、セルラーフォン、スマートフォン、セッション開始プロトコル(SIP)電話、ラップトップ、ノートブック、ネットブック、スマートブック、携帯情報端末(PDA)、衛星ラジオ、全地球測位システム(GPS)デバイス、スマートホームデバイス、インテリジェント照明、マルチメディアデバイス、ビデオデバイス、デジタルオーディオプレーヤ(たとえば、MP3プレーヤ)、カメラ、ゲームコンソール、エンターテインメントデバイス、車両構成要素、ウェアラブルコンピューティングデバイス(たとえば、スマートウォッチ、ヘルスまたはフィットネストラッカ、アイウェアなど)、アプライアンス、センサー、セキュリティデバイス、自動販売機、スマートメーター、ドローン、マルチコプター、または任意の他の同様の機能デバイスなど、装置の下位構成要素である電子デバイスを相互接続するために使用され得る。
【００３５】
図1は、データ通信バスを採用し得る装置100の一例を示す。装置100は、複数の回路またはデバイス104、106、および/または108を有する処理回路102を含み得る。回路またはデバイス104、106、および/または108のうちの少なくともいくつかは、1つまたは複数のASIC内、あるいはSoC内で実装され得る。一例では、装置100は通信デバイスであり得、処理回路102は、ASIC104内に設けられた処理デバイスと、1つまたは複数の周辺デバイス106と、装置が無線アクセスネットワーク、コアアクセスネットワーク、インターネット、および/または別のネットワークと、アンテナ124を通して通信することを可能にする、トランシーバ108とを含み得る。
【００３６】
ASIC104は、1つまたは複数のプロセッサ112、1つまたは複数のモデム110、オンボードメモリ114、バスインターフェース回路116、および/あるいは他の論理回路または機能を有し得る。処理回路102は、1つまたは複数のプロセッサ112が、オンボードメモリ114、または処理回路102上に設けられた他のプロセッサ可読ストレージ122内に存在する、ソフトウェアモジュールを実行することを可能にする、アプリケーションプログラミングインターフェース(API)レイヤを提供する、オペレーティングシステムによって制御され得る。ソフトウェアモジュールは、オンボードメモリ114またはプロセッサ可読ストレージ122内に記憶された、命令およびデータを含み得る。ASIC104は、そのオンボードメモリ114、プロセッサ可読ストレージ122、および/または処理回路102の外部のストレージにアクセスし得る。オンボードメモリ114、および/またはプロセッサ可読ストレージ122は、読取り専用メモリ(ROM)もしくはランダムアクセスメモリ(RAM)、電気的消去可能プログラマブルROM(EEPROM)、フラッシュカード、または処理システム内およびコンピューティングプラットフォーム内で使用され得る任意のメモリデバイスを含み得る。処理回路102は、装置100および/または処理回路102を構成し動作させるために使用される動作パラメータおよび他の情報を維持することができる、ローカルデータベースまたは他のパラメータストレージを含み、実装し、またはそれらへのアクセスを有し得る。ローカルデータベースは、レジスタ、データベースモジュール、フラッシュメモリ、磁気媒体、EEPROM、ソフトディスクまたはハードディスクなどを使用して実装され得る。処理回路102はまた、構成要素の中でも、アンテナ124、ディスプレイ126などの外部デバイス、スイッチもしくはボタン128、130、および/または一体型もしくは外部キーパッド132などのオペレータ制御に動作可能に結合され得る。ユーザインターフェースモジュールは、専用通信リンクを通して、あるいは1つまたは複数のシリアルデータ相互接続を通して、タッチセンシティブであり得、ユーザ入力を受け入れ得るディスプレイ126、キーパッド132などとともに動作するように構成され得る。
【００３７】
処理回路102は、いくつかのデバイス104、106、および/または108が通信することを可能にする、1つまたは複数のバス118a、118b、120を提供し得る。一例では、ASIC104は、回路、カウンタ、タイマー、制御論理、および他の構成可能な回路またはモジュールの組合せを含む、バスインターフェース回路116を含み得る。一例では、バスインターフェース回路116は、いくつかの通信仕様またはプロトコルに従って動作するように構成され得る。処理回路102は、装置100の動作を構成および管理する、電力管理機能を含むか、または制御し得る。
【００３８】
シリアル周辺インターフェースの例
図2は、2データラインSPI200のいくつかの態様を示す。マスタデバイス202は、アプリケーションプロセッサ、ホストプロセッサ、または装置もしくはシステムの他の機能構成要素の働きをする、SoCに組み込まれ得る。マスタデバイス202は、マルチワイヤバス210を通して、複数のスレーブデバイス204、206、208に結合される。マスタデバイス202は、マルチワイヤバス210のマスタアウトスレーブインライン(MOSIライン216)を介して、スレーブデバイス204、206、208にデータを駆動する。スレーブデバイス204、206、208は、各々、マルチワイヤバス210の共有マスタインスレーブアウトライン(MISOライン214)を介して、マスタデバイス202にデータを駆動し得る。
【００３９】
マルチワイヤバス210は、スレーブデバイス204、206、208ごとに少なくとも1つのスレーブ選択ライン218、220、222を含む。図示のように、第1のスレーブ選択ライン218(SS1)は、第1のスレーブデバイス204によるバスアクセスを制御し、第2のスレーブ選択ライン220(SS2)は、第2のスレーブデバイス206によるバスアクセスを制御し、第3のスレーブ選択ライン222(SS3)は、第3のスレーブデバイス208によるバスアクセスを制御する。マスタデバイス202は、スレーブ選択ライン218、220、222をアサートして、対応するスレーブデバイス204、206、208に、MOSIライン216を介してデータを受信させること、および/または、MISOライン214上で送信するために対応するスレーブデバイス204、206、208に許可を与えることを行い得る。
【００４０】
一例では、低電圧レベルがスレーブ選択ライン218、220、222に印加されるとき、スレーブ選択ライン218、220、222はアサートされず、スレーブ選択ライン218、220、222は、スレーブ選択ライン218、220、222を高電圧レベルに(たとえば、電源レベルの方に)駆動することによってアサートされる。別の例では、高電圧レベル(たとえば、電源レベル)がスレーブ選択ライン218、220、222に印加されるとき、スレーブ選択ライン218、220、222はアサートされず、スレーブ選択ライン218、220、222は、スレーブ選択ライン218、220、222を低電圧レベルに駆動することによってアサートされる。スレーブ選択ライン218、220、222ごとに、マスタデバイス202内のドライバは、スレーブ選択ライン218、220、222のために望まれるアサーション状態に基づいて、スレーブ選択ライン218、220、222を充電および放電するように動作され得る。
【００４１】
データは、マルチワイヤバス210のクロックライン212上で与えられたクロック信号に従って、マスタデバイス202とスレーブデバイス204、206、208との間で送信される。データシグナリングは、MISOライン214およびMOSIライン216の各々において単方向である。データは、MOSIライン216を介して転送されたデータの方向とは反対の方向に、MISOライン214を介して転送される。MISOライン214およびMOSIライン216を介したデータ転送は、クロックライン212上で与えられたクロック信号に同期される。
【００４２】
図3は、クワッドシリアル周辺インターフェース(QSPI)300のいくつかの態様を示す。マスタデバイス302は、アプリケーションプロセッサ、ホストプロセッサ、または装置もしくはシステムの他の機能構成要素の働きをする、SoCに組み込まれ得る。マスタデバイス302は、マルチワイヤバス310を通して、複数のスレーブデバイス304、306、308に結合される。マスタデバイス302は、マルチワイヤバス310の4ワイヤデータチャネル314を介して、スレーブデバイス304、306、308とデータを交換する。4ワイヤデータチャネル314は、図2に示された2ワイヤ単方向シグナリング方式よりも高いデータ転送レートを与えるために採用され得る。
【００４３】
マルチワイヤバス310は、スレーブデバイス304、306、308ごとに少なくとも1つのスレーブ選択ラインを含む。図示のように、第1のスレーブ選択ライン316(SS1)は、第1のスレーブデバイス304によるバスアクセスを制御し、第2のスレーブ選択ライン318(SS2)は、第2のスレーブデバイス306によるバスアクセスを制御し、第3のスレーブ選択ライン320(SS3)は、第3のスレーブデバイス308によるバスアクセスを制御する。マスタデバイス302は、スレーブ選択ライン316、318、320をアサートして、データチャネル314を介してデータを送信または受信するために対応するスレーブデバイス304、306、308に許可を与え得る。
【００４４】
一例では、低電圧レベルがスレーブ選択ライン316、318、320に印加されるとき、スレーブ選択ライン316、318、320はアサートされず、スレーブ選択ライン316、318、320は、スレーブ選択ライン316、318、320を高電圧レベルに(たとえば、電源レベルの方に)駆動することによってアサートされる。別の例では、高電圧レベル(たとえば、電源レベル)がスレーブ選択ライン316、318、320に印加されるとき、スレーブ選択ライン316、318、320はアサートされず、スレーブ選択ライン316、318、320は、スレーブ選択ライン316、318、320を低電圧レベルに駆動することによってアサートされる。スレーブ選択ライン316、318、320ごとに、マスタデバイス302内のドライバは、スレーブ選択ライン316、318、320のために望まれるアサーション状態に基づいて、スレーブ選択ライン316、318、320を充電および放電するように動作され得る。
【００４５】
データは、マルチワイヤバス310のクロックライン312上で与えられたクロック信号に従って、マスタデバイス302とスレーブデバイス304、306、308との間で送信される。データチャネル314上のデータ転送は、クロックライン312上で与えられたクロック信号に同期される。
【００４６】
SPIのためのハードウェアフロー制御
本明細書で開示するいくつかの態様に従って適合されたSPIマスタデバイスおよびSPIスレーブデバイスは、SPIバスを通して通信するとき、ハードウェアフロー制御を実装するように構成され得る。本明細書で開示する技法は、2データラインSPI200およびQSPI300を含む、異なるタイプのSPIバスに適用可能である。ハードウェアフロー制御は、スレーブデバイスが、マスタデバイス202、302によって送信されたデータを受信するために準備完了であることを示すことを可能にする。たとえば、スレーブデバイス204、206、208、304、306、308は、スレーブデバイス204、206、208、304、306、308上の受信バッファがフルであるか、または新たに開始されたデータの送信を受信するための容量が不十分であるとき、データを受信する準備ができていないことを示し得る。
【００４７】
図4は、本明細書で開示するいくつかの態様に従って適合された2データラインSPI400を示す。マスタデバイス402は、少なくとも1つのスレーブデバイス404に結合される。この例では、スレーブ選択ライン(SS1ライン420)が、マスタデバイス402によって高電圧状態に駆動されて、スレーブデバイス404がマスタデバイス402と通信することが可能にされると仮定する。他の例では、SS1ライン420は、マスタデバイス402によって低電圧状態に駆動されて、スレーブデバイス404がマスタデバイス402と通信することが可能にされ得る。
【００４８】
この適合によって、SS1ライン420が、マスタデバイス402と対応するスレーブデバイス404の両方によって駆動されることが可能になる。マスタデバイス402は、マスタアウトスレーブインライン(MOSIライン414)を介して、スレーブデバイス404にデータを送信する。スレーブデバイス404は、SS1ライン420上のシグナリング状態によってイネーブルにされるとき、共有マスタインスレーブアウトライン(MISOライン412)を介して、マスタデバイス402にデータを駆動し得る。マスタデバイス402は、SS1ライン420上でイネーブルシグナリング状態をアサートして、スレーブデバイス404がデータを送信および/または受信することを可能にし得る。データは、クロックライン410上で与えられたクロック信号に従って、マスタデバイス402とスレーブデバイス404との間で送信される。
【００４９】
スレーブデバイス404を伴う読取りまたは書込み動作では、マスタデバイス402は、SS1ライン420を高電圧状態に駆動して、スレーブデバイス404を選択する。SS1ライン420は、高出力インピーダンスをもつドライバ406を使用して、マスタデバイス402によって駆動される。スレーブデバイス404は、SS1ライン420の読取りと駆動の両方を行うように適合され得る。スレーブデバイス404は、SS1ライン420のシグナリング状態を検出するように構成されたレシーバ418を含み得る。スレーブデバイス404は、低出力インピーダンスをもつラインドライバ416を使用して、SS1ライン420を低電圧状態に駆動することによって、フロー制御をアサートし得る。マスタデバイス402は、SS1ライン420のシグナリング状態を読み取るように構成されたラインレシーバ408を含む。マスタデバイス402は、スレーブデバイス404へのデータの送信を中止することによって、スレーブデバイス404によってアサートされた低電圧状態に応答し得る。
【００５０】
図5は、本明細書で開示するいくつかの態様による、SS1ライン420を駆動するために使用され得るラインインターフェース回路502、512の例500を示す。SS1ライン420は、スレーブデバイス404がフロー制御をアサートすることを望むとき、マスタデバイス402とスレーブデバイス404の両方によって同時に駆動され得る。マスタデバイス402におけるラインインターフェース回路502は、アサーションが高電圧状態へのものであるか、低電圧状態へのものであるかにかかわらず、高インピーダンス出力を有し、SS1ライン420を弱くアサートする、ラインドライバ(Txドライバ504)を含む。スレーブデバイス404におけるラインインターフェース回路512は、マスタデバイス402によるSS1ライン420の弱いアサーションを克服することができる、低インピーダンス出力を有する、ラインドライバ(RTSドライバ514)を含む。
【００５１】
マスタデバイス402におけるTxドライバ504は、値RTXを有する抵抗508として示された出力インピーダンスを示す。スレーブデバイス404のRTSドライバ514は、値RRTSを有する抵抗518として示された出力インピーダンスを示す。SS1ライン420上で観測された電圧VSS1は、抵抗508、518(RTXおよびRRTS)の間の関係によって決定される。たとえば、Txドライバ504の抵抗508が、Vddの電圧に結合されるとき、SS1ライン420上で観測された電圧VRXは、以下として計算され得る。
【００５２】
【数１】
2018536942.tif 000003
【００５３】
いくつかの実装形態では、ドライバ504、514は、SS1ライン420上で電圧状態をアサートした後、高インピーダンス状態にされ得る。キーパー回路528は、SS1ライン420上で最後にアサートされた電圧を維持するために、SS1ライン420に結合され得る。キーパー回路528は、Txドライバ504とRTSドライバ514の両方によって容易に克服される。これらの実装形態では、Txドライバ504は、SS1ライン420を解放する前に、SS1ライン420上でイネーブリング状態をアサートする。たとえば、イネーブリング状態は、論理1状態(高電圧または低電圧によって表される)であり得、キーパー回路528は、ドライバ504、514のうちの1つがSS1ライン420の状態を変化させるまで、論理1状態を保持する。スレーブデバイス404は、受信バッファが容量までいっぱいになるか、または容量に近いとき、RTSドライバ514にSS1ライン420の状態を変化させ得る。
【００５４】
スレーブデバイス404は、SS1ライン420の現在のシグナリング状態と、たとえば、スレーブデバイス404における受信バッファが、最大占有レベルを識別するバッファしきい値に達したかまたはそれを超えたか否かを示す、Rx_Buffer_Level入力526とを受信する、フロー制御判定論理520を含み得る。バッファしきい値に達した場合、スレーブデバイス404は、RTSドライバ514に、SS1ライン420を論理1状態(すなわち、スレーブデバイス404がマスタデバイス402によってイネーブルにされていたとき)から論理0状態に駆動させ得る。RTSドライバ514は、マスタデバイス402によって駆動された典型的な論理1を克服することができる、低インピーダンスドライバを採用する。マスタデバイスが、スレーブデバイス404のためのその内部イネーブル信号(SS522)をアサートしたとき、SS1ライン420のオーバーライドされた値は、マスタデバイス402における排他的NOR論理ゲート510の出力(FCF524)に、スレーブデバイス404が受信する準備ができていないことを示す論理0の値を仮定させる。SS1ライン420が論理1レベルであるとき、FCF524は、スレーブデバイス404がデータを受信する準備ができていることを示す論理1である。スレーブデバイス404が選択されないとき、SS522はアサートされず、SS1 420は、通常、高く、FCFは、スレーブデバイス404の準備ができていないことを示す論理0の値を有する。スレーブデバイス404は、SS1高状態をオーバーライドすることによって送信要求をシグナリングし、FCFを、スレーブデバイス404の準備ができていることを示す論理1に遷移させることができる。
【００５５】
フロー制御判定論理520は、SS1ライン420の状態とRx_Buffer_Level入力526とを監視するように、ならびに、本明細書で開示するインピーダンスベースのフロー制御手順およびプロトコルを実装するように構成された、状態機械、シーケンサ、または別の好適な論理回路を備え得る。いくつかの事例では、フロー制御判定論理520は、プロセッサ、またはプロセッサおよび論理回路の何らかの組合せを使用して実装され得る。スレーブデバイス404は、RTSドライバ514の出力インピーダンスを制御することが可能であり得る。いくつかの例では、スレーブデバイス404は、準備ができていない状況を示すために、必要なとき、RTSドライバ514をイネーブルにし得、スレーブデバイス404の準備ができているとき、RTSドライバ514をディセーブルにし得る。後者の例では、SS1ライン420は、Txドライバ504の内部抵抗508によって、またはキーパー回路528によって、論理1状態を表す電圧にプルされる。
【００５６】
キーパー回路528は、マスタデバイス402内、および/またはスレーブデバイス404内に設けられ得る。いくつかの事例では、キーパー回路528は、マスタデバイス402またはスレーブデバイス404がSS1ライン420上で状態変化を強制し得るように、マスタデバイス402またはスレーブデバイス404によって制御され得る。たとえば、フロー制御判定論理520は、SS1ライン420が低状態であるとき、キーパー回路528にシグナリングして、SS1ライン420を高状態に駆動し得、かつ/または、フロー制御判定論理520は、SS1ライン420が高状態であるとき、キーパー回路528にシグナリングして、SS1ライン420を低状態に駆動し得る。
【００５７】
マスタデバイス402は、FCF出力信号524が論理0である間、MOSIライン414上でデータを送信することを控え得る。マスタデバイス402は、クロックライン410上で送信されたクロック信号を休止させる、減速させる、またはゲーティングすることによって、データ送信を停止し得る。受信準備完了状態は、排他的NOR論理ゲート510への入力が同じアサートされた状態を有するとき、決定され得る。したがって、FCF出力信号524は、スレーブデバイス404がデータを受信する準備ができていることを知らせるために、バイナリ1状態に高にアサートされる。
【００５８】
マスタデバイス402およびスレーブデバイス404は、フロー制御を実装するための追加の論理および回路を含み得る。一例では、マスタデバイス402は、SS 522上でアサートされた状態とは異なり得る、SS1ライン420のシグナリング状態を監視するように構成された、ラインレシーバ(CTSレシーバ506)を含み得る。別の例では、スレーブデバイス404は、RTSドライバ514を通してスレーブデバイス404によってアサートされた状態とは異なり得る、SS1ライン420のシグナリング状態を監視するように構成された、ラインレシーバ(Rxレシーバ516)を含み得る。
【００５９】
図4および図5における例に関して説明したように、ハードウェアフロー制御は、SS1ライン420が高電圧状態であるとき、SS1ライン420が、デバイスをイネーブルにするスレーブ選択信号を搬送する、デバイスにおいて、または、SS1ライン420が低電圧状態であるとき、SS1ライン420が、デバイスをイネーブルにするスレーブ選択信号を搬送する、デバイスにおいて実装され得る。本明細書で開示する原理は、SS1ライン420上、および/またはマスタデバイス402もしくはスレーブデバイス404内の、シグナリング状態への論理レベルの任意の割当てを使用して実装され得る。以下のフローチャートでは、論理1が高電圧レベル(たとえば、Vddまたは電源電圧レベル)によって表されること、および論理0が低電圧レベル(たとえば、0ボルトまたは電源接地)によって表されることが仮定され得る。
【００６０】
図6は、状態機械、シーケンサ論理によって、および/またはプロセッサによって実装され得る、フロー制御600の一例を示す。この例では、SS1ライン420が、低電圧レベルによって表され得る論理0に設定されるとき、スレーブデバイス404は、SPIバス上の通信のためにイネーブルにされる。
【００６１】
ブロック602で、マスタデバイス402は、高抵抗値出力抵抗508を使用して、対応するスレーブデバイス404のためのSS1ライン420を論理0状態に駆動することを、そのTxドライバ504に行わせ得る。論理0は、接地電圧レベルとして表され得る。論理0状態は、Rxレシーバ516を通して、フロー制御判定論理520によって検出され得る。ブロック604で、フロー制御判定論理520は、Rx_Buffer_Level入力526の状態に基づいて、スレーブデバイス404における受信バッファの状態を決定し得る。スレーブデバイス404における受信バッファが、第1のしきい値占有レベル(たとえば、ウォーターマークしきい値)よりも低い場合、ブロック606で、スレーブデバイス404は、データを受信し得る。フロー制御判定論理520は、Rx_Buffer_Level入力526を監視し続ける。ある時点において、フロー制御判定論理520は、ブロック604で、スレーブデバイス404における受信バッファが、第1のしきい値占有レベルに達したかまたはそれを超えたと決定し得、ブロック608に進んで、フロー制御をアサートし得る。
【００６２】
ブロック608で、フロー制御判定論理520は、低抵抗値出力抵抗518を使用して、SS1ライン420を論理1状態に駆動することを、RTSドライバ514に行わせる。論理1は、電源電圧として表され得る。マスタデバイス402は、データ送信を休止し得る。フロー制御判定論理520は、Rx_Buffer_Level入力526を監視し続ける。ある時点において、フロー制御判定論理520は、ブロック610で、スレーブデバイス404における受信バッファが、第2のしきい値占有レベルを下回ったと決定し得、ブロック606でデータの受信を継続する前に、RTSドライバ514をディセーブルにするか、またはさもなければ、SS1ライン420を論理0状態に戻させ得る。第2のしきい値占有レベルは、第1のしきい値占有レベルと同じ値を有し得るか、または第1のしきい値占有レベルとは異なる値を有し得る。
【００６３】
図7は、状態機械、シーケンサ論理によって、および/またはプロセッサによって実装され得る、フロー制御700の一例を示す。この例では、SS1ライン420が、高電圧レベルによって表され得る論理1に設定されるとき、スレーブデバイス404は、SPIバス上の通信のためにイネーブルにされる。
【００６４】
ブロック702で、マスタデバイス402は、高抵抗値出力抵抗508を使用して、対応するスレーブデバイス404のためのSS1ライン420を論理1状態に駆動することを、そのTxドライバ504に行わせ得る。論理1は、電源電圧として表され得る。論理1状態は、Rxレシーバ516を通して、フロー制御判定論理520によって検出され得る。ブロック704で、フロー制御判定論理520は、Rx_Buffer_Level入力526の状態に基づいて、スレーブデバイス404における受信バッファの状態を決定し得る。スレーブデバイス404における受信バッファが、第1のしきい値占有レベル(たとえば、ウォーターマークしきい値)よりも低い場合、ブロック706で、スレーブデバイス404は、データを受信し得る。フロー制御判定論理520は、Rx_Buffer_Level入力526を監視し続ける。ある時点において、フロー制御判定論理520は、ブロック704で、スレーブデバイス404における受信バッファが、第1のしきい値占有レベルに達したかまたはそれを超えたと決定し得、ブロック708に進んで、フロー制御をアサートし得る。
【００６５】
ブロック708で、フロー制御判定論理520は、低抵抗値出力抵抗518を使用して、SS1ライン420を論理0状態に駆動することを、RTSドライバ514に行わせる。論理0は、接地電圧レベルとして表され得る。マスタデバイス402は、データ送信を休止し得る。フロー制御判定論理520は、Rx_Buffer_Level入力526を監視し続ける。ある時点において、フロー制御判定論理520は、ブロック710で、スレーブデバイス404における受信バッファが、第2のしきい値占有レベルを下回ったと決定し得、ブロック706でデータの受信を継続する前に、RTSドライバ514をディセーブルにするか、またはさもなければ、SS1ライン420を論理1状態に戻させ得る。第2のしきい値占有レベルは、第1のしきい値占有レベルと同じ値を有し得るか、または第1のしきい値占有レベルとは異なる値を有し得る。
【００６６】
処理回路および方法の例
図8は、SPIバスを採用する装置800のためのハードウェア実装形態の一例を示す図である。いくつかの例では、装置800は、本明細書で開示する1つまたは複数の機能を実行し得る。本開示の様々な態様によれば、本明細書で開示するような要素、もしくは要素の任意の部分、または要素の任意の組合せは、処理回路802を使用して実装されてもよい。処理回路802は、ハードウェアモジュールとソフトウェアモジュールの何らかの組合せによって制御される1つまたは複数のプロセッサ804を含み得る。プロセッサ804の例は、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ(DSP)、SoC、ASIC、フィールドプログラマブルゲートアレイ(FPGA)、プログラマブル論理デバイス(PLD)、状態機械、シーケンサ、ゲート論理、個別ハードウェア回路、および本開示全体にわたって説明する様々な機能を実行するように構成された他の好適なハードウェアを含む。1つまたは複数のプロセッサ804は、特定の機能を実行するとともにソフトウェアモジュール816のうちの1つによって構成、増強、または制御され得る、専用プロセッサを含み得る。1つまたは複数のプロセッサ804は、初期化中にロードされたソフトウェアモジュール816の組合せを通じて構成されてもよく、動作中に1つまたは複数のソフトウェアモジュール816をロードまたはアンロードすることによってさらに構成されてもよい。
【００６７】
図示の例では、処理回路802は、バス810によって概略的に表されるバスアーキテクチャを用いて実装され得る。バス810は、処理回路802の特定の適用例および全体的な設計制約に応じて、任意の数の相互接続バスおよびブリッジを含み得る。バス810は、1つまたは複数のプロセッサ804およびストレージ806を含む様々な回路を互いにリンクさせる。ストレージ806は、メモリデバイスおよび大容量記憶デバイスを含み得、本明細書ではコンピュータ可読媒体および/またはプロセッサ可読媒体と呼ばれる場合がある。バス810はまた、タイミングソース、タイマー、周辺装置、電圧調整器、および電力管理回路などの様々な他の回路をリンクさせ得る。バスインターフェース808は、バス810と1つまたは複数のトランシーバ812との間のインターフェースを提供し得る。トランシーバ812は、処理回路によってサポートされるネットワーキング技術ごとに設けられてよい。いくつかの事例では、複数のネットワーキング技術は、トランシーバ812の中に見られる回路構成または処理モジュールの一部または全部を共有し得る。各トランシーバ812は、伝送媒体を介して様々な他の装置と通信するための手段を提供する。装置800の性質に応じて、ユーザインターフェース818(たとえば、キーパッド、ディスプレイ、スピーカ、マイクロフォン、ジョイスティック)が設けられる場合もあり、直接またはバスインターフェース808を介してバス810に通信可能に結合される場合がある。
【００６８】
プロセッサ804は、バス810を管理すること、およびストレージ806を含み得るコンピュータ可読媒体に記憶されたソフトウェアの実行を含み得る一般的な処理を担い得る。この点において、プロセッサ804を含む処理回路802は、本明細書で開示する方法、機能、および技法のいずれかを実施するために使用され得る。ストレージ806は、ソフトウェアを実行するとき、プロセッサ804によって操作されるデータを記憶するために使用され得、ソフトウェアは、本明細書で開示する方法のうちの任意の1つを実施するように構成され得る。
【００６９】
処理回路802における1つまたは複数のプロセッサ804は、ソフトウェアを実行し得る。ソフトウェアは、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語と呼ばれるか、または他の名称で呼ばれるかどうかにかかわらず、命令、命令セット、コード、コードセグメント、プログラムコード、プログラム、サブプログラム、ソフトウェアモジュール、アプリケーション、ソフトウェアアプリケーション、ソフトウェアパッケージ、ルーチン、サブルーチン、オブジェクト、実行ファイル、実行スレッド、プロシージャ、関数、アルゴリズムなどを意味するように広く解釈されるべきである。ソフトウェアは、コンピュータ可読形態で、ストレージ806内、または外部コンピュータ可読媒体内に存在し得る。外部コンピュータ可読媒体および/またはストレージ806は、非一時的コンピュータ可読媒体を含み得る。非一時的コンピュータ可読媒体は、例として、磁気記憶デバイス(たとえば、ハードディスク、フロッピー(登録商標)ディスク、磁気ストリップ)、光ディスク(たとえば、コンパクトディスク(CD)またはデジタル多用途ディスク(DVD))、スマートカード、フラッシュメモリデバイス(たとえば、「フラッシュドライブ」、カード、スティック、またはキードライブ)、RAM、ROM、プログラマブル読取り専用メモリ(PROM)、EEPROMを含む消去可能PROM(EPROM)、レジスタ、リムーバブルディスク、ならびに、コンピュータによってアクセスおよび読取り可能なソフトウェアおよび/または命令を記憶するための任意の他の好適な媒体を含む。コンピュータ可読媒体および/またはストレージ806は、例として、搬送波、伝送線路、ならびに、コンピュータによってアクセスおよび読取り可能なソフトウェアおよび/または命令を送信するための任意の他の好適な媒体も含み得る。コンピュータ可読媒体および/またはストレージ806は、処理回路802内に存在するか、プロセッサ804内に存在するか、処理回路802の外部に存在するか、または処理回路802を含む複数のエンティティにわたって分散され得る。コンピュータ可読媒体および/またはストレージ806は、コンピュータプログラム製品において具現化され得る。例として、コンピュータプログラム製品は、パッケージング材料の中のコンピュータ可読媒体を含み得る。当業者は、特定の適用例および全体的なシステムに課される全体的な設計制約に応じて、本開示全体にわたって提示される、説明する機能を最善の形で実装する方法を認識するであろう。
【００７０】
ストレージ806は、本明細書ではソフトウェアモジュール816と呼ばれることがある、ロード可能なコードセグメント、モジュール、アプリケーション、プログラムなどにおいて維持および/または編成されるソフトウェアを維持し得る。ソフトウェアモジュール816の各々は、処理回路802上にインストールまたはロードされ、1つまたは複数のプロセッサ804によって実行されるとき、1つまたは複数のプロセッサ804の動作を制御するランタイムイメージ814に寄与する命令およびデータを含み得る。実行されるとき、いくつかの命令は、処理回路802に、本明細書で説明するいくつかの方法、アルゴリズム、およびプロセスに従って機能を実行させることができる。
【００７１】
ソフトウェアモジュール816のうちのいくつかは、処理回路802の初期化中にロードされてよく、これらのソフトウェアモジュール816は、本明細書で開示する様々な機能の実行を可能にするように処理回路802を構成し得る。たとえば、いくつかのソフトウェアモジュール816は、プロセッサ804の内部デバイスおよび/または論理回路822を構成し得、トランシーバ812、バスインターフェース808、ユーザインターフェース818、タイマー、数理コプロセッサなどの外部デバイスへのアクセスを管理し得る。ソフトウェアモジュール816は、割込みハンドラおよびデバイスドライバと対話し、処理回路802によって提供される様々なリソースへのアクセスを制御する、制御プログラムおよび/またはオペレーティングシステムを含み得る。リソースは、メモリ、処理時間、トランシーバ812へのアクセス、ユーザインターフェース818などを含み得る。
【００７２】
処理回路802の1つまたは複数のプロセッサ804は、多機能であってよく、それにより、ソフトウェアモジュール816のうちのいくつかがロードされ、異なる機能または同じ機能の異なるインスタンスを実行するように構成される。1つまたは複数のプロセッサ804は、追加として、たとえば、ユーザインターフェース818、トランシーバ812、およびデバイスドライバからの入力に応答して開始されるバックグラウンドタスクを管理するように適合され得る。複数の機能の実行をサポートするために、1つまたは複数のプロセッサ804は、マルチタスキング環境を提供するように構成されてもよく、それにより、複数の機能の各々は、必要または要望に応じて、1つまたは複数のプロセッサ804によってサービスされるタスクのセットとして実装される。一例では、マルチタスキング環境は、異なるタスク間でプロセッサ804の制御を渡す時分割プログラム820を使用して実装されてもよく、それにより、各タスクは、任意の未処理動作の完了後および/または割込みなどの入力に応答して、時分割プログラム820に1つまたは複数のプロセッサ804の制御を戻す。タスクが1つまたは複数のプロセッサ804の制御を有するとき、処理回路は、事実上、制御しているタスクに関連付けられた機能によって対処される目的に特化される。時分割プログラム820は、オペレーティングシステム、ラウンドロビンベースで制御を移すメインループ、機能の優先順位付けに従って1つもしくは複数のプロセッサ804の制御を割り振る機能、および/または、1つもしくは複数のプロセッサ804の制御を処理機能に提供することによって外部イベントに応答する割込み駆動のメインループを含み得る。
【００７３】
図9は、シリアル周辺インターフェースを使用して情報を交換するための方法のフローチャート900である。ブロック902で、マスタデバイス402は、スレーブ選択ライン上で第1の電圧状態をアサートすることによって、シリアル周辺インターフェースバスの1つまたは複数のデータラインを介したデータの交換を開始し得る。
【００７４】
ブロック904で、スレーブ選択ラインが第1の電圧状態のままである間、マスタデバイス402は、シリアル周辺インターフェースバスを介して、データとクロック信号とを送信し得る。
【００７５】
ブロック906で、マスタデバイス402は、スレーブ選択ラインが第2の電圧状態に遷移するとき、シリアル周辺インターフェースバスを介して、データとクロック信号とを送信することを控え得る。
【００７６】
ブロック908で、スレーブデバイス404は、スレーブ選択ラインが第1の電圧状態のままである間、データを受信バッファに受信し得る。
【００７７】
ブロック910で、スレーブデバイス404は、受信バッファの占有がしきい値占有レベルに達するかまたはそれを超えるとき、スレーブ選択ライン上で第2の電圧状態をアサートし得る。
【００７８】
いくつかの例では、マスタデバイス402は、高インピーダンス出力を使用して、スレーブ選択ラインを第1の電圧状態に駆動するように構成された、第1のドライバ回路を含み得る。スレーブデバイス404は、低インピーダンス出力を使用して、スレーブ選択ラインを第1の電圧状態に駆動するように構成された、第2のドライバ回路を含み得る。高インピーダンス出力がスレーブ選択ラインを第1の電圧状態に駆動することを試行中であるとき、スレーブ選択ラインを第2の電圧状態に駆動するために、低インピーダンス出力がイネーブルにされるように、第1のドライバ回路および第2のドライバ回路のインピーダンスが選択され得る。
【００７９】
いくつかの例では、スレーブ選択ライン上で第1の電圧状態をアサートすることは、スレーブ選択ラインを第1の電圧状態の方に駆動することを、マスタデバイス402のラインドライバに行わせること、および、スレーブ選択ラインが第1の電圧状態を達成するとき、マスタデバイス402のラインドライバを開放回路動作モードに入らせることを含む。マスタデバイス402および/またはスレーブデバイス404は、ラインドライバが開放回路動作モードに入った後、スレーブ選択ラインのシグナリング状態を維持するように構成された、キーパー回路528を含み得る。
【００８０】
一例では、スレーブデバイス404のラインドライバは、スレーブデバイス404がスレーブ選択ライン上で第2の電圧状態をアサートした後、受信バッファの占有がしきい値占有レベルを下回るとき、スレーブ選択ライン上で第1の電圧状態をアサートするために使用され得る。
【００８１】
いくつかの例では、スレーブデバイス404は、受信バッファの占有を監視し、スレーブ選択ラインの電圧状態を監視し、スレーブ選択ラインの電圧状態が第1の電圧状態であり、占有が、しきい値占有レベルに等しいかまたはそれを超えるレベルであるとき、スレーブ選択ラインを第2の電圧状態に駆動することを、スレーブデバイス404のドライバに行わせ得る。スレーブデバイス404は、第2の電圧状態をアサートすることを、ラインドライバ回路に行わせた後、および、占有が、しきい値占有レベル未満であるレベルに低下した後、スレーブ選択ラインを第1の電圧状態に戻し得る。
【００８２】
図10は、処理回路1002を採用する装置1000のためのハードウェア実装形態の簡略化された例を示す図である。装置は、本明細書で開示するいくつかの態様によるブリッジング回路を実装し得る。処理回路は、通常、1つまたは複数のマイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ、シーケンサ、および/または状態機械を含み得る、コントローラまたはプロセッサ1016を有する。処理回路1002は、バス1020によって概略的に表されるバスアーキテクチャを用いて実装され得る。バス1020は、処理回路1002の特定の適用例および全体的な設計制約に応じて、任意の数の相互接続バスおよびブリッジを含み得る。バス1020は、コントローラまたはプロセッサ1016、モジュールまたは回路1004、1006、および1008、ならびにコンピュータ可読記憶媒体1018によって表される、1つまたは複数のプロセッサおよび/またはハードウェアモジュールを含む様々な回路を互いにリンクさせる。装置は、物理レイヤ回路1014を使用して、マルチワイヤ通信リンクに結合され得る。物理レイヤ回路1014は、マルチワイヤ通信リンクをシリアル周辺インターフェースバス1012として動作させ得る。バス1020は、タイミングソース、周辺装置、電圧調整器、および電力管理回路などの様々な他の回路をリンクさせることもできるが、これらの回路は当技術分野でよく知られており、したがって、これ以上は説明しない。
【００８３】
プロセッサ1016は、コンピュータ可読記憶媒体1018上に記憶されたソフトウェア、コード、および/または命令の実行を含む、一般的な処理を担う。コンピュータ可読記憶媒体は、非一時的記憶媒体を含み得る。ソフトウェアは、プロセッサ1016によって実行されると、処理回路1002に、任意の特定の装置のための上記で説明した様々な機能を実行させる。コンピュータ可読記憶媒体は、ソフトウェアを実行するときにプロセッサ1016によって操作されるデータを記憶するために使用され得る。処理回路1002は、モジュール1004、1006、および1008のうちの少なくとも1つをさらに含む。モジュール1004、1006、および1008は、コンピュータ可読記憶媒体1018内に存在する/記憶される、プロセッサ1016内で実行しているソフトウェアモジュール、プロセッサ1016に結合された1つもしくは複数のハードウェアモジュール、またはそれらの何らかの組合せであり得る。モジュール1004、1006、および1008は、マイクロコントローラ命令、状態機械構成パラメータ、またはそれらの何らかの組合せを含み得る。
【００８４】
一構成では、装置1000は、シリアル周辺インターフェースバス1012の1つまたは複数のデータラインを介したデータの交換を開始するために、スレーブ選択ライン上で第1の電圧状態をアサートするように構成されたモジュールおよび/または回路1008を含む。装置1000は、受信バッファの占有を監視するように構成されたモジュールおよび/または回路1004と、受信バッファの占有がしきい値占有レベルに達するかまたはそれを超えるとき、スレーブ選択ライン上で第2の電圧状態をアサートするように構成されたモジュールおよび/または回路1006とを含み得る。
【００８５】
様々な例では、装置1000は、シリアル周辺インターフェースバス1012に結合された、マスタデバイス402および/またはスレーブデバイス404において配置され得る。一例では、シリアル周辺インターフェースバス1012に結合されたマスタデバイス402は、シリアル周辺インターフェースバス1012の1つまたは複数のデータラインを介したデータの交換を開始するために、スレーブ選択ライン上で第1の電圧状態をアサートすること、および、スレーブ選択ラインが第1の電圧状態のままである間、シリアル周辺インターフェースバス1012のクロックラインを介して、クロック信号を送信することを行うように適合され得る。データの交換は、クロック信号と同期され得る。マスタデバイス402は、スレーブ選択ラインが第2の電圧状態である間、1つまたは複数のデータラインを介してデータを送信することを控えるようにさらに適合され得る。マスタデバイス402は、スレーブ選択ラインを第1の電圧状態の方に駆動することを、ラインドライバに行わせること、および、スレーブ選択ラインが第1の電圧状態を達成するとき、ラインドライバを開放回路動作モードに入らせることによって、第1の電圧状態をアサートするように適合される。マスタデバイス402は、ラインドライバが開放回路動作モードに入った後、スレーブ選択ラインのシグナリング状態を維持するように構成された、キーパー回路528を含むか、またはそれに結合され得る。
【００８６】
別の例では、シリアル周辺インターフェースバス1012に結合されたスレーブデバイス404は、受信バッファを含み、スレーブ選択ラインが第1の電圧状態のままである間、データを受信バッファに受信するように適合され得る。スレーブデバイス404は、受信バッファの占有がしきい値占有レベルに達するかまたはそれを超えるとき、スレーブ選択ライン上で第2の電圧状態をアサートするように適合され得る。
【００８７】
マスタデバイス402は、高インピーダンス出力を使用して、スレーブ選択ラインを第1の電圧状態に駆動するように構成された、第1のドライバ回路を有し得、スレーブデバイス404は、低インピーダンス出力を使用して、スレーブ選択ラインを第1の電圧状態に駆動するように構成された、第2のドライバ回路を有し得る。高インピーダンス出力がスレーブ選択ラインを第1の電圧状態に駆動することを試行中であるとき、スレーブ選択ラインを第2の電圧状態に駆動するために、低インピーダンス出力がイネーブルにされるように、第1のドライバ回路および第2のドライバ回路のインピーダンスが選択され得る。スレーブデバイス404は、受信バッファの占有がしきい値占有レベルを超えたとき、スレーブ選択ライン上で第2の電圧状態をアサートした後、受信バッファの占有がしきい値占有レベルを下回るとき、スレーブ選択ライン上で第1の電圧状態をアサートするように適合され得る。スレーブデバイス404は、受信バッファの占有を監視すること、スレーブ選択ラインの電圧状態を監視すること、および、スレーブ選択ラインの電圧状態が第1の電圧状態であり、占有が、しきい値占有レベルに等しいかまたはそれを超えるレベルであるとき、スレーブ選択ライン上で第2の電圧状態をアサートすることをラインドライバ回路に行わせることを、行うように構成された、フロー制御判定回路520を含み得る。フロー制御判定回路520は、第2の電圧状態をアサートすることを、ラインドライバ回路に行わせた後、および、占有が、しきい値占有レベル未満であるレベルに低下した後、スレーブ選択ラインを第1の電圧状態に戻すことを、ラインドライバ回路に行わせるように構成され得る。
【００８８】
別の例では、マスタデバイス402は、シリアル周辺インターフェースバス1012のスレーブ選択ライン上で第1の電圧状態をアサートするように適合された、モジュールまたは回路と、シリアル周辺インターフェースバス1012を介して、データとクロック信号とを送信するように適合された、モジュールまたは回路とを含み得る。第1の電圧状態は、シリアル周辺インターフェースバス1012の1つまたは複数のデータラインを介したデータの交換を開始するために、スレーブ選択ライン上でアサートされ得る。データとクロック信号とを送信するように適合されたモジュールまたは回路は、スレーブ選択ラインが第1の電圧状態のままである間、マスタデバイス402からスレーブデバイス404にデータを送信すること、および、スレーブ選択ラインが第1の電圧状態から第2の電圧状態に遷移するとき、マスタデバイス402からスレーブデバイス404にデータを送信することを控えることを行うように構成され得る。スレーブデバイス404は、スレーブ選択ラインが第1の電圧状態のままである間、データを受信バッファに受信すること、および、受信バッファの占有がしきい値占有レベルに達するかまたはそれを超えるとき、スレーブ選択ライン上で第2の電圧状態をアサートすることを行うように構成され得る。
【００８９】
マスタデバイス402は、高インピーダンス出力を使用して、スレーブ選択ラインを第1の電圧状態に駆動するように構成された、第1のドライバ回路を含み得、スレーブデバイス404は、低インピーダンス出力を使用して、スレーブ選択ラインを第1の電圧状態に駆動するように構成された、第2のドライバ回路を含み得る。高インピーダンス出力がスレーブ選択ラインを第1の電圧状態に駆動することを試行中であるとき、スレーブ選択ラインを第2の電圧状態に駆動するために、低インピーダンス出力がイネーブルにされるように、第1のドライバ回路および第2のドライバ回路のインピーダンスが選択され得る。
【００９０】
スレーブ選択ライン上で第1の電圧状態をアサートするように適合されたモジュールまたは回路は、スレーブ選択ラインを第1の電圧状態の方に駆動することを、マスタデバイス402のラインドライバに行わせること、および、スレーブ選択ラインが第1の電圧状態を達成するとき、マスタデバイス402のラインドライバを開放回路動作モードに入らせることを行うように構成され得る。マスタデバイス402は、ラインドライバが開放回路動作モードに入った後、スレーブ選択ラインのシグナリング状態を維持するように構成された、キーパー回路528を有するか、またはそれに結合され得る。
【００９１】
スレーブデバイス404は、スレーブデバイス404において受信バッファの占有を監視すること、スレーブ選択ラインの電圧状態を監視すること、および、スレーブ選択ラインの電圧状態が第1の電圧状態であり、占有が、しきい値占有レベルに等しいかまたはそれを超えるレベルであるとき、スレーブ選択ラインを第2の電圧状態に駆動することを行うように構成され得る。
【００９２】
スレーブ選択ライン上で第1の電圧状態をアサートするように適合されたモジュールまたは回路は、スレーブデバイス404がスレーブ選択ラインを駆動することを中止した後、スレーブ選択ラインを第1の電圧状態に戻すように構成され得る。
【００９３】
別の例では、シリアル周辺インターフェースバス1012に結合されたスレーブデバイス404は、シリアル周辺インターフェースバス1012のスレーブ選択ラインに結合された受信回路と、低インピーダンスを用いてシリアル周辺インターフェースバス1012のスレーブ選択ラインを選択的に駆動するように構成されたラインドライバと、シリアル周辺インターフェースバス1012からデータを受信するように構成された受信バッファと、フロー制御論理とを有する。フロー制御論理は、たとえば、フロー制御判定回路520内に含まれ得る。フロー制御論理は、シリアル周辺インターフェースバス1012を介して通信するために、いつスレーブデバイス404が選択されるかを決定するために、受信回路の出力を監視すること、スレーブデバイス404において受信バッファの占有を監視すること、および、スレーブデバイス404が通信するために選択され、受信バッファの占有が、しきい値占有レベルに等しいかまたはそれを超えるレベルであるとき、スレーブ選択ラインを第2の電圧レベルに駆動することをラインドライバに行わせることを、行うように構成され得る。スレーブデバイス404は、スレーブ選択ラインが第1の電圧レベルであるとき、通信するために選択され得る。
【００９４】
フロー制御論理は、受信バッファの占有が、しきい値占有レベル未満であるレベルに低下した後、スレーブ選択ラインを第1の電圧レベルに戻させるように構成され得る。ラインドライバは、スレーブ選択ラインを第1の電圧状態に駆動するためにマスタデバイス402によって使用されたドライバの出力インピーダンスよりも低い、出力インピーダンスを用いて、スレーブ選択ラインを第2の電圧レベルに駆動するように構成され得る。フロー制御論理は、受信バッファの占有が、しきい値占有レベル未満であるレベルであるとき、低インピーダンスを用いてスレーブ選択ラインを駆動するように、ラインドライバを構成すること、および、受信バッファの占有が、しきい値占有レベル未満であるレベルであるとき、開放回路動作モードに入るように、ラインドライバを構成することを行うように構成され得る。フロー制御論理は、開放回路動作モードに入る前に、スレーブ選択ラインを第1の電圧レベルに駆動することを、ラインドライバに行わせるように構成され得る。キーパー回路528は、ラインドライバが開放回路動作モードに入った後、スレーブ選択ラインのシグナリング状態を維持するように構成され得る。
【００９５】
開示したプロセスにおけるステップの特定の順序または階層は、例示的な手法の例示であることを理解されたい。設計上の選好に基づいて、プロセスにおけるステップの特定の順序または階層は再構成される場合があることを理解されたい。さらに、いくつかのステップは、組み合わされるか、または省略される場合がある。添付の方法クレームは、様々なステップの要素を見本的な順序において提示したものであり、提示された特定の順序または階層に限定されるものではない。
【００９６】
上述の説明は、本明細書で説明した様々な態様を当業者が実施できるようにするために提供される。これらの態様への様々な変更が当業者には容易に明らかになり、本明細書において規定された一般原理は他の態様に適用され得る。したがって、特許請求の範囲は、本明細書に示す態様に限定されるものではなく、文言通りの特許請求の範囲と一致するすべての範囲を与えられるべきであり、単数形の要素への言及は、そのように明記されていない限り、「唯一無二の」ではなく、「1つまたは複数の」を意味するものとする。別段に明記されていない限り、「いくつかの」という用語は、1つまたは複数を指す。当業者に知られているか、後で知られることになる、本開示全体にわたって説明した様々な態様の要素のすべての構造的および機能的均等物は、参照により本明細書に明確に組み込まれ、特許請求の範囲によって包含されるものとする。その上、本明細書で開示するものは、そのような開示が特許請求の範囲において明示的に列挙されているかどうかにかかわらず、公に供されるものではない。いかなるクレーム要素も、要素が「ための手段」という句を使用して明確に列挙されていない限り、ミーンズプラスファンクションとして解釈されるべきではない。
【符号の説明】
【００９７】
100、800、1000  装置
102、802、1002  処理回路
104  回路またはデバイス、ASIC、デバイス
106  回路またはデバイス、周辺デバイス、デバイス
108  回路またはデバイス、トランシーバ、デバイス
110  モデム
112、804  プロセッサ
114  オンボードメモリ
116  バスインターフェース回路
118a、118b、120、810、1020  バス
122  プロセッサ可読ストレージ
124  アンテナ
126  ディスプレイ
128、130  スイッチもしくはボタン
132  一体型もしくは外部キーパッド、キーパッド
200、400  2データラインSPI
202、302、402  マスタデバイス
210、310  マルチワイヤバス
204、304  スレーブデバイス、第1のスレーブデバイス
206、306  スレーブデバイス、第2のスレーブデバイス
208、308  スレーブデバイス、第3のスレーブデバイス
212、312、410  クロックライン
214  MISOライン
216、414  MOSIライン
218、316  スレーブ選択ライン、第1のスレーブ選択ライン
220、318  スレーブ選択ライン、第2のスレーブ選択ライン
222、320  スレーブ選択ライン、第3のスレーブ選択ライン
300  クワッドシリアル周辺インターフェース(QSPI)、QSPI
314  4ワイヤデータチャネル、データチャネル
404  スレーブデバイス
406  ドライバ
408  ラインレシーバ
416  ラインドライバ
418  レシーバ
420  SS1ライン、SS1
502、512  ラインインターフェース回路
504  Txドライバ、ドライバ
506  CTSレシーバ
508  抵抗、内部抵抗、高抵抗値出力抵抗
510  排他的NOR論理ゲート
514  RTSドライバ、ドライバ
516  Rxレシーバ
518  抵抗、低抵抗値出力抵抗
520  フロー制御判定論理、フロー制御判定回路
522  SS
524  FCF、FCF出力信号
526  Rx_Buffer_Level入力
528  キーパー回路
600、700  フロー制御
806  ストレージ
808  バスインターフェース
812  トランシーバ
814  ランタイムイメージ
816  ソフトウェアモジュール
818  ユーザインターフェース
820  時分割プログラム
822  内部デバイスおよび/または論理回路
1012  シリアル周辺インターフェースバス
1016  コントローラまたはプロセッサ、プロセッサ
1018  コンピュータ可読記憶媒体
【図１】
2018536942.tif 000004
【図２】
2018536942.tif 000005
【図３】
2018536942.tif 000006
【図４】
2018536942.tif 000007
【図５】
2018536942.tif 000008
【図６】
2018536942.tif 000009
【図７】
2018536942.tif 000010
【図８】
2018536942.tif 000011
【図９】
2018536942.tif 000012
【図１０】
2018536942.tif 000013
【国際調査報告】
2018536942.tif 000014
2018536942.tif 000015
2018536942.tif 000016