MAX 10 FPGAのADCで内部温度をモニター

アイキャッチ

動作確認

ここではファームウェアを用意せずに、QuartusのSystem Consoleを使ってレジスタの値を確認してみましょう。

sofファイルを書き込んだ状態で先に進んでください。

System Console 起動方法

メニューの Tools → System Debugging Tools → System Console と進むんでSystem Consoleを起動。

System Consoleコマンド

右下のTcl Consoleにコマンドを打ち込んでみましょう。

  1. set m [lindex [get_service_paths master] 0]
  2. open_service master $m
  3. master_write_32 $m 0x200 0x1
  4. set tempdata [master_read_32 $m 0x000 1]

1つ目のコマンドで、サービスを特定します。
ここでは、”get_service_paths master”の応答のうち、インデックス0のものを変数mに格納しています。(複数あるときは、JTAGを指すほうをmに格納してください。)

2つ目のコマンドで接続を開きます。

3つ目のコマンドで、レジスタにライト。
(アドレス0x200はPlatform Designerでsequencer_csrに指定したアドレスです。)

4つ目で、レジスタをリードします。
smple_store_csrのアドレス0x000を指定しています。ここにADC読み取ったTSDの値があります。

Tclコマンドについて、詳しくはユーザガイドなどを参考にしてください。

温度の読み取り

レジスタをリード

さきほど一覧表示した中の、最後のコマンドを実行するとADCで読み取った値が返ってきました。

set tempdata [master_read_32 $m 0x000 1]

この例では、0x0000_0e55 が返ってきています。

温度に変換

MAX 10 アナログ-デジタルのコンバーター・ユーザーガイドの 2-9ページ (PDFファイルの19ページ目)、表2-1にレジスタのコードと温度(℃)の変換表があります。

変換表のコードは10進表記なので、レジスタ値(16進数)を10進数にして、表を参照すると内部温度がわかります。

  1. 0x0000_0e55 (16進) → 3669 (10進)
  2. コード : 3669 → 温度 : 約28.3℃
(ユーザーガイドから抜粋)

まとめ

MAX 10 FPGAのADCは、電圧の読み取りと内部温度の検知ができます。この記事では温度を読み取ってみました。

外部の温度を測定したいときは、TMP36GT9Zのような温度センサICを通常のADCピンに接続して、電圧を読み取って温度を得るようにします。

IC温度センサ TMP36GT9Z: センサ一般 秋月電子通商-電子部品・ネット通販

電子部品,通販,販売,半導体,IC,マイコン,電子工作IC温度センサ TMP36GT9Z秋月電子通商 電子部品通信販売

この記事でADCモジュールの構成方法がわかりました。この内容をベースにして、Nios IIに組み込んだり、取得データをHWで処理したりすれば応用範囲が広がりそうです。

スポンサーリンク