日本ロジック設計    - VHDL ロジック記述サンプル -

TOPページ 


実機動作:Cmod A7-35T (Artix-7) XADC による内部温度/電源電圧モニター


  AI学習禁止
  無断転載禁止
  免責事項: 当サイトの情報を元に取った行動の結果について、一切の責任を負いません
  No unauthorized reproduction or AI training allowed.
  Unauthorized reproduction prohibited.
  Disclaimer: We are not responsible for any actions taken based on the information on this site.
  (C) 2025 JAPAN LOGIC DESIGN 日本ロジック設計



  Artix-7 内蔵のXADCを利用し、内部温度や電源電圧、アナログ入力電圧を読み取るVHDL記述サンプルを紹介する。
  XADCの内部レジスタ(00h~1Fh)の値をDRPインターフェイス経由で読み取り、16bitデータを16進数文字に変換してPCに送信する。
  PC側はターミナルソフト(Tera Term 5 推奨)でこれを受信/表示する。

[picture:pic_artix_7a_xadc_001]

  動作確認に使用した Digilent Inc.製、Cmod A7-35T (搭載FPGA:Artix-7)では、PCとはUSBで接続可能。
  ※シリアル-USB変換LSI、FT2232を搭載している。
  詳細については別ページ「実機動作:Cmod A7-35T (Artix-7) 基板とPCをUSB接続でシリアル通信」 参照。

[picture:pic_artix_7a_logicanalyzer_007]

  1. 主な仕様
    ・動作確認基板: Digilent Inc. 製 Cmod A7-35T、搭載FPGA: AMD Artix-7
    ・FPGA動作クロック: 基板実装:12MHz、MMCM(PLL)設定周波数:50MHz
    ・XADC-IP コア設定:
      ・動作周波数:50MHz
      ・動作モード:連続変換
      ・有効チャンネル設定:温度、VCCINT、VCCAUX、VP/VN、VREFP、VREFN、VCCBRAM、VAUXP-4、VAUXP-12
    ・読み出しレジスタ範囲:00h~1Fh (32ワード)
    ・動作確認用LED: クロック=50MHzで1秒サイクルで点滅
    ・(仮)RESETスイッチ: ボタン(BTN1)をRESETボタンに割り当て
    ・UART: 460800bps、スタートbit:1、データbit:8(LSBファースト)、ストップbit:1、パリティ:偶数
    ・データ送信内容:各レジスタ値を 16進数4桁にて32個分を送信、無限ループ

  3. XADC について
    詳細については、XILINX資料
    「7シリーズFPGAおよび Zynq-7000 SoC XADCデュアル12ビット 1MSPSアナログ-デジタルコンバーターユーザーガイド」 UG480 (v1.11)
    などを参照。 https://docs.amd.com/v/u/ja-JP/ug480_7Series_XADC

    概要を説明すると、
     ・XILINX(AMD)製の主要FPGAに内蔵されているADコンバーターモジュール。
     ・アナログ入力用端子の電圧の他、内部温度、電源電圧などのモニターにも使える。
     ※以下、参考図は上記 XILINX(AND) 資料より引用

[picture:pic_artix_7a_xadc_002]

     ・AD変換されたデータは、各レジスタに保存されるため、これを読み出せばよい。温度データはアドレス 00h、VCCINT電圧はアドレス 01h、など。

[picture:pic_artix_7a_xadc_009]

     ・レジスタの読み出しには、DRPインターフェイスを使用している。
      レジスタアドレス、R/W指定、イネーブル信号を 1-CLOCKで送信し、READY信号を待ってデータをラッチするだけ。
      AXIよりも簡単に使える。

[picture:pic_artix_7a_xadc_013]

     ・なお、レジスタから読み出した値はAD変換後の生データのため、温度、電圧の単位に変換するには計算が必要。
      計算用の表計算シートを作成した。※後述。

[picture:pic_artix_7a_xadc_010] [picture:pic_artix_7a_xadc_011]

  4. 外部アナログ入力について
    アナログ入力端子については、FPGAの型番、パッケージピン数などによって、使用可能な端子数が異なる。
    Cmod A7-35T に実装されている XC7A35TCPG236 では、
     ・VAUXP[4]、VAUXP[5]、VAUXP[6]、VAUXP[7]、VAUXP[12]、VAUXP[13]、VAUXP[14]、VAUXP[15]
    のみ使用可能。
    さらに、Cmod A7-35T の基板回路上では、
     ・VAUXP[4] : FPGAピン[G3]、DIPコネクタピン番号:15
     ・VAUXP[12]: FPGAピン[H2]、DIPコネクタピン番号:16
    の2ピンだけにアナログ入力用回路が組まれている。他のアナログ入力ピンは未使用。
    
    なお本サンプルでは汎用性を持たせるため、データ用レジスタ 00h~ 1Fh をすべて読みだすロジックになっている。
    
    以下注意点:
     ・外部アナログ入力端子の許容電圧は 1.8V まで ※3.3Vは接続不可
     ・電源電圧モニターのAD変換可能電圧はフルスケール 3V まで  ※3.3Vは変換不可
     ・XADCの分解能は、仕様上は 12bit のはずだが、レジスタは 16bit 分ある

    なお、Vivado バージョン 2025.1.1 (2026.02.12 現在)では、XADCは VIVADOシミュレーションでは動作しない。
    DRPインターフェイスは動くが、AD変換関連信号、BUSY、EOCなどの挙動がおかしい。
    実機では問題なく動いているため、シミュレーションモデルの問題と想像される。
    このため、XADCの動作確認には実機が必要となる。

  5. 全体ブロック図
    FPGAの全体構成は下記の通り。

[picture:pic_artix_7a_xadc_012]

  6. XADC-IPコアの組み込み手順
    6-1. IP Catalog から XADC Wizard を選択して起動する。

[picture:pic_artix_7a_xadc_003]

    6-2. 各項目を設定する。詳細は下図を参照。

[picture:pic_artix_7a_xadc_004]

[picture:pic_artix_7a_xadc_005]

[picture:pic_artix_7a_xadc_006]

[picture:pic_artix_7a_xadc_007]

    6-3. 設定したら右下の「OK」ボタンを押し、さらに「Generate」を実行する。
       この時、画面右上の処理中アイコンがグルグル回転している間は VIVADOには触れずに待つこと。
       画面の右上にあるため気づきにくいが、処理中に VIVADOを操作すると挙動がおかしくなる。
       MMCM(PLL)-IP等では一瞬で終わるが、XADC-IPは処理に数分間掛かる場合がある。

[picture:pic_artix_7a_xadc_008]

    6-4. VIVADOの処理が終了したら、プロジェクトに XADC-IPが登録される。
       登録後、Design Sources の「更新:Refresh」を行うことを忘れずに。

    6-5. 作成した XADC-IP をユーザーロジックから呼び出す手順については、
       別ページ 「DDS 正弦波生成ロジックサンプル MMCM(PLL)使用版」 等を参照。

  7. PCとの接続/起動方法
    ・Cmod A7-35T をPCと接続し、VIVADOからコンフィグレーションROMにロジックデータを書き込む。※後述プロジェクトファイル参照。
    ・Cmod A7-35T のUSB接続を一度抜き、再度接続する。LEDが1秒間隔で点滅すれば書き込みOK。
    ・PC側で Tera Term 5 を起動し、以下の設定を行う。
      ・シリアルポート選択(COM番号はPC環境に依存する)
      ・スピード:460800
      ・パリティ:EVEN
      ・ストップビット:1
     設定後は、設定値をファイルに保存しておくことを勧める。

「シリアル」ポート設定としてUSBを選択 (COM番号はPCに依存する)
[picture:pic_artix_7a_uart_term_003.jpg]

通信速度などのパラメータを設定
[picture:pic_artix_7a_logicanalyzer_002]

    ・Cmod A7-35T のUSBケーブルを抜き、再度接続する。
     正しく動作すれば、Tera Term 5 の画面にレジスタの読み出しデータが表示される。
     各データは16進数4桁、これが32個分表示され(00h~1Fh)、32個分の表示が終わると改行される。以下、無限ループ。

[picture:pic_artix_7a_xadc_001]

    ・読み出した値と ADC変換チャンネルの対応は以下の通り。

[picture:pic_artix_7a_xadc_014]

  6. XADC、MMCM(PLL)の代用ロジックについて
    VIVADO用のプロジェクトファイルには実機の XADC、MMCMが組み込まれているが、
    MODELSIMのプロジェクトにはダミーの XADC [xadc_wiz_0.vhd]、MMCM [clk_wiz_0_DUMMY.vhd] を作成してプロジェクトに組み込んである。
    シミュレーションを行う際、アルテラ(intel)の無料版 MODELSIMなどでは XILINXデバイス用ライブラリィが使えないための代用。

  7. 温度、電圧の計算
    レジスタから読み出したAD変換値を温度や電圧の単位に変換するため、計算用の表計算シートを作成した。
     ※参考 dds_generator_sine_wave_table.zip

  8. サンプルファイル
    ・MODELSIM用プロジェクトファイル:japanlogicdesign_vhdl_tips_artix_7a_xadc_modelsim.zip
    ・VIVADO用プロジェクトファイル:japanlogicdesign_vhdl_tips_artix_7a_xadc_vivado.zip
    ※注意:VIVADO プロジェクトファイルは参考にとどめ、新規に作成しなおすことを推奨する
          MODELSIM プロジェクトは相対パスではないため、ソースファイルの再登録が必要な場合あり
 中国プロテクト:天安門事件、法輪功、チベット