Artix Ultrascale+ を搭載する”AU-Card”では温度や電圧をモニタする機能を利用できます。
単純に温度だけ取得する場合、SYSMONE1 プリミティブのDRPポートを制御します。
得られるデータ(T)は10bitで、以下の変換式により摂氏(℃)温度になります。
温度(℃)={( T x 503.975 )÷1024}-273.15
※Tは10進に変換してください。
例えば、読み出したデータ T=0x270の場合、温度は34℃になります。
SYSMONE1インスタンシエイトの例
SYSMONE1 u_sysmon (
.DCLK (dclk),
.RESET(~rstn),
.DADDR(7’h00),
.DEN (start),
.DWE (1’b0),
.DI (16’h0000),
.DO (adout),
.DRDY (drdy),
.BUSY (),
.VP (),
.VN (),
.ALM (),
.OT ()
);
adoutは16bit。上位10ビットが有効値。アドレスDADDRは、温度読み出しの場合常に”0”。
DCLKはGPIF2メインクロックの100MHz。DEN(start)は1クロックパルス。
GPIF2回路の場合は、レジスタWR時に発生する regx_ena信号(xはレジスタ番号)をstartにする。
読み出したデータは、RegIn16回路ブロックに接続する。
これにより、温度を読みたい場合は、XレジスタにWR後、RegIn16回路データをRDすることで、温度データを取得できます。
※ System monitorですが、プリミティブはSYSMONE1です。SYSMON1ではエラーになります。