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(複数)バイトのデータを読み取ります:
①ホストはSDAを出力として設定します;
②ホストは開始信号を開始します;
③ホストはデバイスアドレスバイトを送信します。最下位ビットは0で、書き込み操作を示します
。④ホストはSDAをトライステートゲート入力として設定し、スレーブから応答信号を
読み取ります。⑤応答信号を正常に読み取り、ホストはSDA出力、1バイトアドレスのデータを送信します
。⑥ホストはSDAをトライステートゲート入力として設定し、スレーブから応答信号を読み取ります
。∥応答信号が正常に読み取られると、ホストはSDA出力を設定します。 。2バイトアドレスセグメントデバイスの場合、下位バイトアドレス番号
⑧データを転送します。1バイトアドレスセグメントデバイスの場合、このステップなしで;
⑨ホストが開始信号を開始します;
⑩ホストは、デバイスアドレスバイト(最下位ビット)を送信しますは1で、読み取り操作を示します
。⑪SDAをトライステートゲート入力として設定し、スレーブ信号からの応答を読み取ります
。⑫応答信号は正常に読み取られ、ホストはSDAをスリーステートゲート入力として設定し、1つを読み取ります。 SDAバス上のデータのバイト
⑬
応答信号を生成しない(ハイレベル)(ハイレベルを出力するように設定する必要はありません)、バスが自動的にハイにプルされるため)
⑮ホストは送信を終了するためにSTOPビットを生成します。 -
書き込み操作:バス上の指定スレーブの指定出力アドレスに指定データを1つ((複数))書き込むマスターの完全なシーケンスマスター
操作プロセス:
①マスターはSDAを出力として設定します;
②マスターは開始信号を開始します;
③マスタは最下位ビットが0のデバイスアドレスバイトを送信し、書き込み動作を示します
。④ホストはSDAをトライステートゲート入力として設定し、スレーブからの応答信号を読み取ります
。⑤応答信号が正常に読み取られると、ホストはSDAを出力として設定し、1バイトのアドレスデータを送信します
。⑥SDAホストトライステートゲート入力、スレーブ応答信号を
読み取ります。∥正常な読み取り応答信号、2つのデバイスの下位バイトアドレス、アドレスデータを送信します。バイト、アドレスフィールドデバイスの場合は1バイト、ホストに配置されたSDAは出力であり、書き込まれるデータを送信します
。⑧SDAをトライステートゲート入力として設定し、2バイトのアドレスセグメントのスレーブ応答信号を読み取ります。デバイスの場合は、手順9に進みます。1バイトアドレスセグメントデバイスの場合は、直接ジャンプします。手順11に進みます
。⑨応答信号を正常に読み取り、ホストはSDAを出力として設定し、書き込むデータを転送します(2バイトアドレスの場合)。セグメントデバイス);
⑩SDAをスリーステートゲート入力として設定し、スレーブ応答信号を読み取ります(2バイトアドレスセグメントデバイス);
⑪応答信号が正常に読み取られると、ホストはSTOPビットを生成して送信を終了します。
参考資料:「FPGAシステムの設計と検証の実用ガイド」
【注意】:個人学習メモ、間違いがありましたら、お気軽に教えてください、丁寧です~~~