TEL:086-227-0113
info@gopher-tec.jp
TOP page 製品情報 FPGAサンプルコードリポジトリ I2C 8bit-LED output
I2C 8bit-LED output

ライトデータに基づき8ビットLED点灯制御出力を生成するI2Cスレーブのサンプルコードです。

I2Cからアクセス可能な内部レジスタを8ビット1本だけとすることで、レジスタアドレスの概念を省略。
さらに同レジスタをリード不可のライトオンリレジスタとすることで、I2Cリードサイクルのトラッキング
も省略し、シンプルな構成となっています。

I2Cバススピードは、100kHz以下のスタンダードモードと400kHz以下のファストモードに対応
しています。デバイスアドレスは7ビットモードのみ対応していますが、アドレスによらずリードには
応答しません(Nack応答となります)。

なお本コードでは、I2Cバスラインの負荷が大きく、信号の立ち上がり時間がデバイスの許容範囲を超えて
大きいこと(I2C規格上、立ち上がり時間はスタンダードモードで1usまで、ファストモードで300nsまで
許されており、条件によってはFPGA/CPLDに直結できないケースが多々あります)を想定し、I2Cの
SDA、SCLを外部のシュミットインバータで受け、その出力をFPGA/CPLDに接続する前提としています。
もし負荷が小さく、特にケアが必要ない場合には、I2Cバスと直結しつつ、コード中のSDA・SCLの
インバート部分を単なるバッファ回路へ変更してご使用下さい。

Name I/O  Description 
RESET in 非同期リセット入力です。パワーオン時、またはシステムリセット時にアサートして下さい。
CLK33M
in クロック入力です。本モジュールはこの信号の立ち上がりエッジで動作します。
33MHzを想定していますが、25~40MHzの範囲であれば特に問題はありません。
SDA_O out I2CのデータラインSDAへの出力です。I2Cの当該ラインへ直結して下さい。
SDA_IL in I2CのデータラインSDAの入力で、外部シュミットインバータで受けた信号を想定しています。
接続方法については機能概要欄の後半を参照下さい。
SCL_IL in I2CのデータラインSDAの入力で、外部シュミットインバータで受けた信号を想定しています。
接続方法については機能概要欄の後半を参照下さい。
MY_ADDR[7:1] in 本モジュールが応答すべきI2Cデバイスアドレスを固定入力して下さい。
LED_ON[7:0] out 8ビットLED点灯制御出力です。
I2Cデバイスアドレスに続いてライトするデータがそのまま出力されます。
※特に注記のない限り、信号は全て正論理です。
本ソースコードはVerilogを用意しています。
詳細は下記の資料ダウンロードをクリックください。

I2C 8bit-LED output
資料ダウンロード