目次
動作確認
ここではファームウェアを用意せずに、QuartusのSystem Consoleを使ってレジスタの値を確認してみましょう。
sofファイルを書き込んだ状態で先に進んでください。
System Console 起動方法
メニューの Tools → System Debugging Tools → System Console と進むんでSystem Consoleを起動。
System Consoleコマンド
右下のTcl Consoleにコマンドを打ち込んでみましょう。
- set m [lindex [get_service_paths master] 0]
- open_service master $m
- master_write_32 $m 0x200 0x1
- 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進数にして、表を参照すると内部温度がわかります。
- 0x0000_0e55 (16進) → 3669 (10進)
- コード : 3669 → 温度 : 約28.3℃
まとめ
MAX 10 FPGAのADCは、電圧の読み取りと内部温度の検知ができます。この記事では温度を読み取ってみました。
外部の温度を測定したいときは、TMP36GT9Zのような温度センサICを通常のADCピンに接続して、電圧を読み取って温度を得るようにします。
IC温度センサ TMP36GT9Z: センサ一般 秋月電子通商-電子部品・ネット通販
電子部品,通販,販売,半導体,IC,マイコン,電子工作IC温度センサ TMP36GT9Z秋月電子通商 電子部品通信販売
この記事でADCモジュールの構成方法がわかりました。この内容をベースにして、Nios IIに組み込んだり、取得データをHWで処理したりすれば応用範囲が広がりそうです。
コメントを残す