#はじめに
1500円 ZYNQ 基板( EBAZ4205 )で、内蔵 A/D コンバータ XADC の回路を修正して、使用できるようにします。
Xilinx の 7 シリーズ以降の FPGA (ZYNQ-7000 も含む)では、XADC を使って、内部温度や電圧がモニタできるようになっています。
標準で装備されている機能なので、XADC の回路を FPGA で作らなくても読めるはずなのですが、EBAZ4205 では読めません。
電圧はいつどれを計っても 0V ですし、温度は絶対零度(-273.1℃)を示します。
基板を修正して、正しく読めるようにしたいと思います。
#使用環境
- Windows10 Pro (20H2)
- Vivado 2020.1 (Windows 版)
- EBAZ4205
#参考資料
UG480 7 Series FPGAs and Zynq-7000 SoC XADC Dual 12-Bit 1 MSPS Analog-to-Digital Converter
#XADC が使えない原因
UG480 の Figure 1-2 に、XADC の回路例が記載されています。
・ADC の基準電圧に、高精度の外部電圧源(±0.2%)を使う方法 (左)
・FPGA 内部の基準電圧源(on-chip reference、±1%)を使う回路 (右)
EBAZ4205 の回路図を確認してみると、XADC の電源端子(VCCADC_0 = J9 ピン)に、電源が供給されていません。
下図で、C327 の 100nF だけが接続されています。
電源が供給されていないため、XADC が動作しなくなっています。
外部基準電圧源の回路も用意されていますが、部品は搭載されていません。
#回路の修正方法
今回は、内部の基準電圧源を使う回路で、XADC を動かします。
VCCADC_0 には 1.8V のアナログ電源を供給する必要があります。
基板上では、VCCA として 1.8V が生成されていますので、ここから供給します。
VCCADC_0(J9) ピンにアクセス可能なのは、C327 だけです。
ここに 1.8V 電源を接続します。
1.8V の供給元は、基板上で C327 の隣にある C2354 か R1493 が適当です。
例では、C2354 からジャンパで接続しました。
VREFP_0 と VREFN_0 の間も C664 で分離されてしまっています。
Figure 1-2 に合わせて、VREFP_0-VREFN_0 間を直結にします。
例では C664 の上からジャンパでショートしています。
(C664 を 0Ω 抵抗に交換しても良いです)
#XADC の動作確認
基板が改造できたら、動作を確認します。
システムモニタが有効になるのは、FPGA にダウンロードが完了してからです。
PetaLinux が起動すると、見えなくなってしまいます。
u-boot で止めるか、PetaLinux を起動せずに適当な .bit をダウンロードして観察します。
Vivado で Open Hardware Manager して、ダウンロードケーブルとデバイスを認識させると、右側の dashboard にシステムモニタのグラフが表示されます。
初期状態だと温度表示だけですが、各電圧の項目を追加することができます。
下は、u-boot で止めて、何もしていない時の温度と電圧の推移です。
・VCCINT/VCCBRAM/VCCPINT が 1.0V 付近
・VCCO_DDR が 1.5V 付近
・VCCAUX/VCCPAUX が 1.8V 付近
・温度が 44.7℃
となっていて、正しい値を示しています。
FPGA に何か処理させると、消費電流が増えて電源電圧が少し下がるのと、内部温度が上昇します。
下記は、EBAZ4205 で Zybo Z7-10 の HDMI デモを動かした時のシステムモニタ表示です。
電源電圧がそれぞれ少しづつ低くなり、温度は 60.2℃ を示しています。
グラフは 1 秒毎に更新されます。
FPGA 表面を指で触れると熱が吸収されて、すぐに表示温度が下がるのが観察できます。
#まとめ
EBAZ4205 基板を改造して、XADC が使用できるようになりました。