ATE SPI (シリアル周辺機器インタフェース)の理解

2010年03月01日

Figure 1

   

要約

大部分のAnalog Devices ATE (自動試験装置)製品は、デバイスの外部制御を可能にするシリアルインタフェースを備えています。このシリアルインタフェースは、重要で高い付加価値を持つ機能になっていますが、理解することがより難しいものの1つにもなっています。このアプリケーションノートでは、マキシムのATE SPI™インタフェースを説明し、そのアーキテクチャの体系的な設計手法を図解します。タイミング図がこのインタフェースをプログラムする仕組みを示します。

シリアル周辺機器インタフェース(SPI)の基礎

SPIは、Motorola®によって最初に構想された同期データリンクプロトコルです。この通信は、マスター/スレーブ動作として発生し、マスターが1つまたは多数のスレーブデバイス間の通信を開始します。このプロセスは、デバイス間でのデータの交換を可能にします。SPIインタフェースは、多種多様なアーキテクチャとともに進化してきましたが、これらのアーキテクチャはすべて共通の制御信号および出力セットを使用しています。最も単純化した手法は、図1に示すように、Shiftレジスタに基づいた3線式設計です。各信号は以下のように定義されます。

  • SCLK:DIN (データ)をShiftレジスタにクロックインするクロック信号
  • DIN:Shiftレジスタにシフトインされるデータ
  • DOUT:Shiftレジスタからシフトアウトされるデータ

Figure 1. Simple representation of an 8-bit SPI interface.

図1. 8ビットSPIインタフェースの単純な表現

SPIインタフェースの基本動作(図1)は、ShiftレジスタにSCLKの立上りまたは立下りのいずれかによってクロックインされるデータ(DIN)を書込むことです。このデータがレジスタにシフトインされると、Shiftレジスタの出力を製品内の制御信号として使用することができます。データは、複数のスレーブデバイスを制御する多数のインタフェースをデイジーチェーン接続することが可能な、DOUTピンからクロックアウトされます。

マキシムのATEシリアルインタフェースアーキテクチャ

マキシムATE (自動試験装置)製品の制御手法は、図1の最も単純な制御を拡張して、チップセレクト(/CS*)、負荷(/LD*)、およびリセット(/RST*)という3つの信号をさらに追加しています。さらに、このトポロジはデュアルランクアーキテクチャに変化しています。ランク1は第1レベルのラッチの追加を指し、ランク2は第2レベルのラッチを指します。このデュアルランクアーキテクチャは、2つのレベルまたはランクでデータを柔軟に転送およびラッチすることができます。ここでは、この実例およびタイミング図(それぞれ図2および3)を検討し、SPIの1チャネル8ビットワードの実際の動作について説明します。

セルおよび信号

8ビットShiftレジスタ


図2は、標準Shiftレジスタを示しており、この例では8つのレジスタ(SRBIT0~SRBIT7)を備えています。データ(DIN)はSCLKの立上りエッジでクロックインされます。全8ビットにシフトインするには8つのクロック信号が必要です。データは1/8クロック周期の立下りエッジでクロックアウトされます(DOUT)。また、/CSもShiftレジスタセルへの入力です。


Control Decode (制御の復号化)


Control Decodeブロックは、SCLKおよび/CS とともに、データワード内の制御ビットを復号化するカスタムロジックセルであり、ランク1ラッチがデータを保持するか、データをランク2ラッチに渡すことができます。このセルは、多くのランク1ラッチを制御するように設計することができます。これの例はMAX9979のデータシートに示されおり、ランク1レベルのInputレジスタおよびChannel Selectレジスタがカスタムロジックセルによって制御されています。この8ビット例の場合、制御ビットは存在しません。Shiftレジスタの8ビットはすべてランク1ラッチに渡されます。


8ビットラッチ


レベル、またはランク、または順序が異なる2つの同じラッチが存在します。この例の場合、これらは8ビットラッチです(SRBIT0~SRBIT7)。これらのラッチはトランスペアレントであり、自身の入力をラッチクロック入力の立下りエッジの出力に渡します。各ラッチの出力はラッチのクロック信号の立上りエッジで保持またはラッチされます。各出力は、ラッチのクロック入力がローに移行するまでラッチされたままとなります。ランク1ラッチのクロック信号は、SCLK、/CS、および制御ビットの復号化された信号です。ランク2ラッチのクロック信号は/LD信号です。


制御信号ライン


制御信号ラインは、ランク2ラッチの出力です。これらは、デバイス内の動作ファンクションまたはモードを制御するためのディジタル制御信号として使用されます。


「アクティブロー」


/CS、/LD、および/RSTの各信号は「アクティブロー」信号です。信号は、ローのときにアクティブである場合のみ、「アクティブロー」です。

Figure 2. Simple example of an 8-bit-word, dual-rank SPI interface.

図2. 8ビットワード、デュアルランクSPIインタフェースの単純な例

Figure 3. Detailed timing diagram of an 8-bit-word SPI example.

図3. 8ビットワードSPI例の詳細なタイミング図

動作

以下のシーケンスは、図2および3で示したSPI例に言及しています。この設計では、データをデバイスにクロックインするためにクロックの立上りエッジが選択されました。立下りエッジを使用することもできます。データは、MSB (最上位ビット)からLSB (最下位ビット)へクロックされることができます。以下のアプリケーションのように、データはLSBからMSBにすることもできます。

  • SCLKの立上りエッジでデータがShiftレジスタにクロックインされます。
  • データDINは、8½クロック周期後にSCLKの立下りエッジでインタフェースから(DOUTを通じて)クロックアウトされます。
  • /CSがSCLKでゲート制御されます。アクティブローの/CSの立下りエッジでデータがランク1ラッチに転送され、その後、/CSの立上りエッジでランク1ラッチにラッチされます。/CSがハイのままの場合、データはDOUTに移動するのみで、ランク1ラッチには現れません。
  • ランク2ラッチのロードが/LD制御信号と非同期に行われます。/LDバーがハイに保たれた場合、ランク1出力はランク2出力に渡されません。/LDがローに保たれた場合、ランク1出力はランク2ラッチから直接渡されます。ランク2出力が/LD制御信号の立上りエッジでラッチされます。
  • /RSTはシリアルインタフェース制御信号をデフォルト状態にリセットします。
  • 図3はシリアルインタフェースの全入力および出力の詳細なタイミングを示します。

SPIインタフェースが正常に動作するために、一定のタイミング仕様を満たす必要があります。これらの仕様はデバイスのデータシートに記載されています。表1は、図3に関連するこれらの仕様を定義したもので、参考用として一部の標準値を示しています。

表1. SPIのタイミング要件および定義(標準値仕様付き)
    Specifications  
Parameter Symbol Min Typ Max Units
Serial clock frequency fSCLK — — 50 MHz
SCLK pulse width high tCH 12 — — ns
SCLK pulse width low tCL 12 — — ns
SCLK fall to DOUT valid tDO — — 22 ns
CS-bar low to SCLK high setup tCSS0 10 — — ns
SCLK high to CS-bar high hold tCSH1 22 — — ns
SCLK high to CS-bar low hold tCSH0 0 — — ns
CS-bar high to SCLK high setup tCSS1 5 — — ns
DIN to SCLK high setup tDS 10 — — ns
DIN to SCLK high hold tDH 0 — — ns
CS-bar pulse width high tCSWH 10 — — ns
CS-bar high to LD-bar low setup tCLL 22 — — ns
LD-bar pulse width low tLDW 20 — — ns
RST-bar low pulse width tRST 10 — — ns

SPIインタフェース用のマスター/スレーブ構成

マスター/スレーブ構成を実装するには3つの方法があります。

  1. 1マスター/1スレーブ(図4参照)
  2. デイジーチェーントポロジの1マスター/多スレーブ(図5参照)
    この手法のメリット:

    1. マスターは1つのチップセレクトピンのみ必要
    2. DOUTピンを次のスレーブのDINにデイジーチェーン接続して、最後のスレーブのDOUTがマスターのリードバック用のDINポートにフィードバックする

    この手法のデメリット:

    1. 各スレーブに独立した制御が存在しない
    2. DATAワードが非常に長い
    3. チップセレクト信号がトリガ可能になる前にすべてのスレーブを更新する必要があるため、更新が遅くなる
  3. 各スレーブがそれぞれチップセレクトを持つ1マスター/多スレーブ(図6参照)
    この手法のメリット:

    1. 各スレーブの独立した制御
    2. 高速動作

    この手法のデメリット:

    1. マスターは多くのI/O制御ピンが必要
    2. DOUTをハイインピーダンスに置くことができない場合はリードバック能力がない

Figure 4. Single master/slave SPI interface.

図4. 単一マスター/スレーブSPIインタフェース

Figure 5. Single master and many slaves—daisy chain where one chip select controls all slaves.

図5. 単一マスター/多スレーブ―1つのチップセレクトが全スレーブを制御するデイジーチェーン

Figure 6. Single master and many slaves—individual chip select for each slave.

図6. 単一マスター/多スレーブ―スレーブごとに個別チップセレクト

一般的なSPIエラー

データシートから、DATAがクロックの正の立上りエッジまたは負の立下りエッジにクロックインされる必要があるかを判断します。異なるクロックエッジ整列を持つかもしれないスレーブを混在させないよう注意します。異なるクロック要件が存在する場合、ソフトウェアまたはハードウェアのいずれの場合も正しいインバージョンが行われるように保証します。

Figure 7

データシートから、ワードのMSBが先にクロックインされるか、LSBが先かを判断します。

Figure 8

/CSがクロックエッジに対してデータワードの近くで正しくゲート制御されているように保証します。

ワード長が8ビットまたは1バイトの倍数でない場合、必ず、ワードの開始または最後にゼロを追加します。これによって、マルチバイトワードが入力されるように保証します。一部のコントローラまたはマスターは一度に1バイトのみ出力します。これに相当する場合は、スレーブから実際のデータをシフトアウトしていないように保証します。特定のスレーブを制御するためには、これらのスレーブが完全データを持っているように保証します。

複数のDOUTは、ハイインピーダンス状態に移行するオプションを持っていない場合は、相互に接続しないでください。

データシートを熟読して、スレーブの特定の詳細が考慮されたことを確認してください。「ワード」はデータ、アドレス、および制御ビットを含むことができます。

多くのデバイスをデイジーチェーン接続すると、更新が低速になる可能性があることに注意してください。

SCLK信号は高速信号で多くの場所に経路設定されます。多くの経路を駆動するためには、この信号が正しくバッファされていることを保証することが重要です。これによって、誤ったクロックエラーが回避されます。すべての経路設定された信号は適切な駆動強度を持っている必要があります。

まとめ

マキシムのATE SPIシリアルインタフェースの基本動作およびタイミングが、6つの基本信号であるSCLK、/CS、DIN、/RST、/LD、およびDOUTの観点から説明されました。/RSTおよび/LDはオプションです。アーキテクチャは部分的に変更することができますが、6つの信号のタイミングがSPIインタフェースの外部動作を定義します。SPIの動作を6つの基本信号に関連させて説明するために、8ビットワードデュアルランクインタフェースが使用されました。このインタフェースは、マキシムのATE製品が採用しているトポロジです。各デバイスのデータシートを吟味すれば、さまざまなインタフェースの違いやエンハンスメントが明らかになりますが、上述したように、すべてがタイミングに付随するものです。ここで示された例を理解すれば、マキシムの多くのATEシリアルインタフェースを読み取って理解する上で役立つでしょう。

*注:接辞「/」(/CS、/LD、/RST)は、これらのピンのアクティブローファンクションを表します。



myAnalogに追加

myAnalog のリソース セクション、既存のプロジェクト、または新しいプロジェクトに記事を追加します。

新規プロジェクトを作成

この記事に関して

製品