FPGAスタディノート_IICプロトコル

FPGAスタディノート

IICプロトコル

1. IIC协议概念
2. IIC协议原理
	2.1. 起始位,结束位
	2.2. 器件地址
	2.3. 存储器地址
	2.4. 应答位
	2.5. 读写时序

1. IICプロトコルの概念
IIC:集積回路間バス、集積回路バスは、シリアル通信バスであり、ほとんどがマスタースレーブ構造です。一般的に小さなデータの明るい機会に使用され、伝送距離は短いです。
特徴

  • 単純な接続:物理層では、IICプロトコルにはSCL(シリアルクロックライン)、SDA(シリアルデータライン)の2つのバスラインしかありません。
  • 双方向通信:2回線でデータの送受信を完了できます。
  • マルチマスターとマルチスレーブ:複数のマスターと複数のスレーブを1つのIICバスに接続できます。同時に、1つのホストのみがバスへの転送を開始できます。
  • 高速伝送速度:標準モードで100kbit / s、高速モードで400kbit / s、高速モードで3.4Mbit / s。マスターデバイスとスレーブデバイス間の双方向データ転送(バイト単位)。
  • 一意のID:バス上のすべてのデバイスには一意のIDがあります。バス上の送信がデバイスのIDと一致する場合にのみ、デバイスはバス上の送信に応答します。競合は発生しません。

2.IICプロトコルの原則

  • 2.1 スタートビット、エンドビット
    ここに画像の説明を挿入
    スタートビット:SCL信号がハイの場合、SDAは立ち下がりエッジになりますデータ転送開始
    ストップビット:SCLハイレベル、SDA立ち上がりエッジデータ転送
    バスアイドル状態の停止:SCLハイレベル; SDAハイレベル;
    SCL高レベル:SDAデータは安定しています; SCL低レベル:SDAデータの変更

  • 2.2。デバイスアドレス
    ここに画像の説明を挿入
    送信シーケンス:ハイからローへ
    例:チップセレクトビット:3'b100
    読み取り:1010_100_1
    書き込み:1010_100_0

  • 2.3。メモリアドレスの
    ここに画像の説明を挿入
    長さ:1または2バイト(デバイスのストレージユニットの数に関連)
    場所:ホストがACKを受信した後、ホストはストレージアドレスを送信します

  • 2.4。確認ビット
    ここに画像の説明を挿入
    送信者(画像:マスター)が8ビットデータの送信を終了すると、受信者(画像:スレーブ)がデータを受信したかどうかを示す応答信号を送信するのを待ちます。0:答える、1:答えない。(応答信号は、8ビットデータが送信された直後のクロックサイクルです(図:#9))

  • 2.5。読み取りと書き込みのタイミング

  1. 読み取り操作ここに画像の説明を挿入ここに画像の説明を挿入ホストコンピュータの完全なタイミングシーケンスは、バス上の指定されたスレーブの指定されたストレージアドレスから1(複数)バイトのデータを読み取ります
    ①ホストはSDAを出力として設定します;
    ②ホストは開始信号を開始します;
    ③ホストはデバイスアドレスバイトを送信します。最下位ビットは0で、書き込み操作を示します
    。④ホストはSDAをトライステートゲート入力として設定し、スレーブから応答信号を
    読み取ります。⑤応答信号を正常に読み取り、ホストはSDA出力、1バイトアドレスのデータを送信します
    。⑥ホストはSDAをトライステートゲート入力として設定し、スレーブから応答信号を読み取ります
    。∥応答信号が正常に読み取られると、ホストはSDA出力を設定します。 。2バイトアドレスセグメントデバイスの場合、下位バイトアドレス番号
    ⑧データを転送します。1バイトアドレスセグメントデバイスの場合、このステップなしで;
    ⑨ホストが開始信号を開始します;
    ⑩ホストは、デバイスアドレスバイト(最下位ビット)を送信しますは1で、読み取り操作を示します
    。⑪SDAをトライステートゲート入力として設定し、スレーブ信号からの応答を読み取ります
    。⑫応答信号は正常に読み取られ、ホストはSDAをスリーステートゲート入力として設定し、1つを読み取ります。 SDAバス上のデータのバイト

    応答信号を生成しない(ハイレベル)(ハイレベルを出力するように設定する必要はありません)、バスが自動的にハイにプルされるため)
    ⑮ホストは送信を終了するためにSTOPビットを生成します。

  2. 書き込み操作:バス上の指定スレーブの指定出力アドレスに指定データを1つ((複数))書き込むマスターの完全なシーケンスマスターここに画像の説明を挿入ここに画像の説明を挿入
    操作プロセス:
    ①マスターはSDAを出力として設定します;
    ②マスターは開始信号を開始します;
    ③マスタは最下位ビットが0のデバイスアドレスバイトを送信し、書き込み動作を示します
    。④ホストはSDAをトライステートゲート入力として設定し、スレーブからの応答信号を読み取ります
    。⑤応答信号が正常に読み取られると、ホストはSDAを出力として設定し、1バイトのアドレスデータを送信します
    。⑥SDAホストトライステートゲート入力、スレーブ応答信号を
    読み取ります。∥正常な読み取り応答信号、2つのデバイスの下位バイトアドレス、アドレスデータを送信します。バイト、アドレスフィールドデバイスの場合は1バイト、ホストに配置されたSDAは出力であり、書き込まれるデータを送信します
    。⑧SDAをトライステートゲート入力として設定し、2バイトのアドレスセグメントのスレーブ応答信号を読み取ります。デバイスの場合は、手順9に進みます。1バイトアドレスセグメントデバイスの場合は、直接ジャンプします。手順11に進みます
    。⑨応答信号を正常に読み取り、ホストはSDAを出力として設定し、書き込むデータを転送します(2バイトアドレスの場合)。セグメントデバイス);
    ⑩SDAをスリーステートゲート入力として設定し、スレーブ応答信号を読み取ります(2バイトアドレスセグメントデバイス);
    ⑪応答信号が正常に読み取られると、ホストはSTOPビットを生成して送信を終了します。


参考資料:「FPGAシステムの設計と検証の実用ガイド」

【注意】:個人学習メモ、間違いがありましたら、お気軽に教えてください、丁寧です~~~


おすすめ

転載: blog.csdn.net/weixin_50722839/article/details/113854191