Smart-USB Plus製品ファミリに共通の制御ソフトウエア「RefApp2.exe」、「RefApp3.exe」、「RefApp7.exe」にTCLスクリプト機能を追加しました。
RefApp2.exe バージョン2.0.2.0以上
RefApp3.exe バージョン1.2.1.0以上
RefApp7.exe バージョン1.0.3.0以上
従来、制御ソフトウエアのGUIを利用して操作する機能を、マクロ機能として各種コマンドをテキスト記述し、操作をバッチファイル形式にして利用できました。 このマクロ機能は、テキストエディタで記述したコマンドを一行ずつ順番に実行します。
(注意:RefApp7にはマクロ機能がありません。)
TCLスクリプト機能では、マクロ機能よりもさらに柔軟なボード制御を、制御ソフトウエアのカスタマイズをせずに実行することができます。
たとえば、TCLスクリプト機能を利用して、FPGAのハードウエアレジスタのバイナリデータを読み出し、その値を10進数に変換したり、演算操作をして制御ソフトウエアの「ログView」エリアに出力することができます。さらに演算結果の値をFPGA内のレジスタに書き込むこともできます。
この様な一連の操作をテキストエディタ上で記述し実行できるので、ハードウエア・デバッグやデモンストレーション時に、有効にご利用いただけます。
RefApp7でのTCLスクリプト実行画面。
例:FPGA外部の温度センサICとSPI制御するTCLスクリプト
8bitレジスタと16bitレジスタをFPGA内に構成し、制御アプリケーションからレジスタを操作してSPIデータを得、温度を表示するスクリプト。
----------------------
set result 0
set read 0
set sts 1
set temp 0
# TCLバージョンの表示(ログViewエリアに表示します)
TPRINT "TCL Version [info tclversion]"
if { $sts == "1" } {
set result [PSI_COMMAND "RW -a8 -w8 -d02"]
#このコマンドでレジスタ8のbit1をHレベルに設定し、SPIのCS信号をアクティブにします。FPGA内でCS信号は反転しCSnになります。
for { set i 0 } { $i<16 } { incr i } {
set result [PSI_COMMAND "RW -a8 -w8 -d03"]
set result [PSI_COMMAND "RW -a8 -w8 -d02"]
#この2つのコマンドを16回繰り返して、SPIクロックを16回発生させています。
}
set result [PSI_COMMAND "RW -a8 -w8 -d00"]
#SPI制御線をすべてインアクティブにします。
set $read [PSI_COMMAND "RR -a5 -w16"]
#SPIクロックでFPGAに取り込んだデータをS/P変換してレジスタ5に格納したので、レジスタ5を読み出し、変数readに格納します。
set temp [expr $read/32]
#レジスタ5の値を32(d)で割り算し、変数tempに格納
TPRINT "温度:[format %02d $temp]度"
#変数tempのデータを10進表記でログViewエリアに表示し、適切な温度を得ます。
}
TPRINT "TEST Successfly!!"
※ set result [ ]記述すると、[ ]内で指定したコマンドが正常に行われた場合、変数resultに"1"が返ります。失敗すると"0"が返ります。 単純に [ ] 内のコマンドだけを抜き出して、PSI_COMMAND "RW -a8 -w8 -d00" と記述しても動作します。
以下は、FPGA内部のブロック図
SPIインタフェースの様にクロックを16回生成させる場合は、for分を利用できます。
以下のTCL内容は、レジスタ8のbit0と1に接続したボードコネクタピンにCSnやCLK信号として出力する例です。
set result 0
set read 0
set sts 1
TPRINT "TCL Version [info tclversion]"
PSI_COMMAND "RW -a8 -w8 -d02"
for { set i 0 } { $i<16 } { incr i } {
PSI_COMMAND "RW -a8 -w8 -d03"
PSI_COMMAND "RW -a8 -w8 -d02"
}
PSI_COMMAND "RW -a8 -w8 -d00"
得られる波形データは、以下の通りです。クロック周波数は1KHz前後と考えてください(使用するPC環境で異なります)
TPRINT "TEST Successfly!!"