温度センサADT7420のPmodコントローラ(VHDL)

Logic Home

コードのダウンロード

温度センサPmodコントローラ(トップレベルファイル):pmod_temp_sensor_adt7420.vhd (10.4 KB)

I2C マスター(プロジェクトに含める必要があります):i2c_master.vhd (14.1 KB)

主な内容

  • DigilentのPmod TMP2、Rev. B(Analog DevicesのADT7420温度センサ用Pmod)への最新のインターフェースのVHDLソースコード
  • 最新の温度データをパラレルインターフェース上に常時出力
  • I2C通信により温度センサPmodからの全てのデータを取得
  • 温度センサの分解能の設定
  • システムクロックレートを設定可能

はじめに

本稿は図1に示すDigilentの温度センサADT7420 Pmodとのインターフェースを処理するVHDLコンポーネントの詳細を説明するものです。図2は、この温度センサPmodコントローラをシステムに組み込んだ典型的な例を示しています。このように、この温度センサPmodコントローラは、Pmodポートに接続し、温度センサの設定やデータ収集のためのトランザクションを実行します。データは常時更新され、ユーザーロジックやFPGAの出力ポートに接続可能なシンプルなパラレルインターフェース上に表示されます。

pmod_tmp2
図1.Digilent の温度センサADT4720 Pmod

block_diagram

図2.実装例

背景

Analog DevicesのADT7420は高精度のデジタル温度センサで、フル16ビットに設定した場合(この設計で行われたように)0.0078°Cの分解能を得ることが可能です。

動作理論

温度センサPmodコントローラは、主にステートマシンとI2Cマスターコンポーネントで構成されています。

ステートマシン

この設計では、図3に示すようなステートマシンを用いて、その動作を実現しています。起動すると、コンポーネントは直ちにstart状態になります。この状態を100ms維持し、Pmodの電源が立ち上がる時間を十分に確保します。それから、set_resolution状態に進み、温度センサの分解能を 16ビットに設定します。pause状態は、ADT7420データシートで要求されているように、I2Cトランザクション間に1.3usの「バスフリー時間」を挿入します。次のread_dataの状態では、Pmodの温度センサから最新の温度データを収集します。最後に、output_result状態で温度を出力します。その後、pauseread_dataoutput_resultの各状態を継続的に循環して、温度データを定期的に更新します。図には示していませんが、コンポーネントをリセットすると、いつでもコンポーネントはstart状態に戻ります。

state_diagram

図3.状態遷移図

I2Cマスター

set_resolutionおよびread_data状態の間、ステートマシンはI2Cマスターコンポーネントを制御して、Pmodの温度センサと通信します。I2Cマスターのドキュメントはこちらから入手できます。

温度センサPmodコントローラの構成

温度センサPmodコントローラは、エンティティの汎用パラメータを設定することで構成されます。

システムクロック周波数

汎用パラメータsys_clk_freqは、温度センサPmodコントローラのclkポートに供給されるシステムクロックの周波数に設定する必要があります。

Pmod I2Cアドレス

温度センサPmodコントローラは、通信するためにPmodの7ビットI2Cアドレスを持っている必要があります。最上位5ビットは「10010」で、次の2ビットはPmodのジャンパブロックJP2とJP1によってそれぞれ設定されます。ジャンパをオープンにするとビットが「1」になり、閉じると「0」になります。

汎用パラメータtemp_sensor_addrをこのアドレスに設定する必要があります。デフォルト値「1001011」は、両方のジャンパがオープン(VCCにプルアップされている)の状態に相当します。(注:Digilentのリファレンスマニュアルにミスプリがあり、このアドレスに誤って余分な「0」が挿入されています。

I2Cプルアップ抵抗

DigilentのほとんどのPmodボードとは異なり、上記の図2に示すI2Cプルアップ抵抗はPmod TMP2には含まれていません。これらがないと、I2Cバスは正常に動作しません。

ユーザーは、図のように回路に2.2kΩの抵抗を配線することでこの問題を解決できます。

ポートの説明

表1に温度センサPmodコントローラのポートを示します。

表1.ポートの説明

port_description

接続

このPmodには8ピンコネクタがあります。表2にこのコネクタのピン配置を示します。温度センサPmodコントローラのポートは、このコネクタに配線されているFPGAのピンに、リスト通りに割り当てる必要があります。J1コネクタの2列はPmodボード上で互いに接続されているため、FPGAに接続する必要があるのは片側だけです。

表2.温度センサPmodのピン配置と温度センサPmodコントローラへの接続

connections

Pmodにはまた2つのジャンパがあります。JP1、JP2でPmodのI2Cアドレスを設定します。詳細は上記のPmod I2Cアドレスの項を参照してください。

リセット

温度センサPmodコントローラコンポーネントが動作するためには、reset_n入力ポートがロジックハイである必要があります。 このポートをローレベルにするとコンポーネントが非同期でリセットされます。リセット中、コンポーネントはPmodとの現在のトランザクションを中止し、temperatureデータ出力とi2c_ack_err出力をクリアします。リセットが解除されると、温度センサPmodコントローラの動作を再開します。温度センサを再設定し、温度データの収集と出力を再開します。

終わりに

この温度センサADT7420 Pmodコントローラは、DigilentのPmod TMP2(温度センサADT7420 Pmod)にインターフェースするプログラマブルロジックコンポーネントです。このPmodとのすべての通信を処理して、Pmodの温度センサを構成し、更新された温度データの継続的なストリームを並列出力で提供します。

関連するトピック

I2C マスター(VHDL)

コンタクト先

コメント、返信、質問などはeewiki@digikey.comに送ってください。




オリジナル・ソース(English)