EZ-FPGA Controller 'ezfc' Version 1.01 説明書 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− 改訂履歴 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− 2006.3.2  jtagspi転送後、USERタップを閉じるように変更 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−  プログラム概要 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−  EZ-FPGA用の総合制御ソフトです。  EZ-FPGA上のFPGAのコンフィグレーション、コンフィグ後のJTAG通信、 及びコンフィグレーションROMの書き込み動作を制御できます。  EZFCON.EXEはWin32ベースのCUIプログラムです。 2.対応ハードウェア  1.EZ-FPGA + mini EZ-USB   EZ-USB用のデバイスドライバがインストールされている必要があります。  2.EZ-FPGA + XilinxParalellCableIII またはその互換ケーブル   I/Oポートを直接操作に、giveio.sysドライバのインストールされて  いる必要があります。 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−  コマンドライン −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− 起動方法1:コマンドプロンプトから、"ezfc [スクリプトファイル名]"と入力する。 起動方法2:Windowsエスプローラから、スクリプトファイルをezfc.exe       のアイコンにドラッグ&ドロップする。 起動方法3:予めスクリプトファイルの拡張子(".ezf")をezfc.exeに関連       ずけておき、スクリプトファイルをダブルクリックする。  コマンドラインで指定する[スクリプトファイル名]は、callスクリプト コマンドとして、実行されます。  予めテキストファイルにスクリプト命令を書いておき、そのファイル名 を起動パラメーターとして指定します。  スクリプト命令の実行中にエラーが発生すると、そこで実行を中断します。  スクリプトファイル内から他のスクリプトファイルを呼び出している場合でも、 エラーが発生した時点で実行は中断されます。  エクスプローラから起動した場合にはプログラムの終了と同時にウィンドウが 閉じるため、デフォルトではプログラム終了時にキー入力待ちをするようになっ ています。  コマンドプロンプトから起動する場合は、スクリプト命令"pause off"を実行 しておくことで、プログラム終了時のキー入力待ちをキャンセルできます。 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−  スクリプト命令 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− −−−−−−−−−−−−−−−−−−− 制御関連コマンド −−−−−−−−−−−−−−−−−−−  1)コメント   構文:# コメント   スクリプト命令中行の、'#'以降はすべて無視されます。  2)エコーメッセージ   構文:echo メッセージ   コンソールにメッセージを表示します。  3)JTAGプローブ指定&初期化   構文:jinit ポート番号   JATAGプローブを指定したポートで初期化します。   ポート番号16進数で指定し、上位4桁がデバイス番号、   下位4桁がマイナー番号です。    ポート番号に0を指定すると、下記の順番で自動検索します。     1.EZ-USB No.0 (ポート番号=00010000)     2.XilinxPAralellCableIII LPT1(ポート番号=00020378)   デバイス番号 0001xxxx : mini EZ-USB(AN2131SC/2135SC EEPROM無し)         下位4桁は、EZ-USBの通し番号 0002xxxx : XilinxPAralellCableIII(LPTポート)         下位4桁は、パラレルポートのI/Oベースアドレス   JTAG関連の操作を行う前に、まずこのコマンドを実行してプローブ  を初期化する必要があります。   例1:jinit 0 #EZ-USB No.0かLPT1(0x378)を指定   例1:jinit 00010002 #EZ-USB No.2をJTAGプローブ指定   例2:jinit 00020278 #XilinxPAralellCableIII 0x278で初期化  4)カレントディレクトリの変更   構文:cd パス load,saveなどファイル関連命令のカレントディレクトリになります。  5)一時停止   構文:wait time_msec   time_msec x 1msecの間、処理を停止します。  6)ポーズ指定   構文1:pause   構文2:pause on   構文3:pause off   構文1は、その場で任意のキー入力を待ちます。   構文2は、プログラム終了時にキー入力待ちするように指定し、構文3は  それを解除します。デフォルトは"pause on"になっています。  7)スクリプトファイル実行   構文1:call filename   構文2:filename   filenameで指定したスクリプトファイルを実行します。   filenameで指定したスクリプトファイルを実行し終わると、以下の命令に  処理が戻ります。   call命令は、ネストすることが出来ます。   構文2の場合は、filenameがスクリプトコマンドと重複してはいけません。   filenameがフルパス(文字':'及び'\'を含む場合)で指定された場合、スクリプト  ファイル実行時に、カレントディレクトリがfilenameのディレクトリに変更され、  スクリプトファイル実行後、実行前のカレントディレクトリに戻ります。 −−−−−−−−−−−−−−−−−−− ワークメモリ関連コマンド −−−−−−−−−−−−−−−−−−−  8)ワークメモリの割り当てと初期化   構文:fill start,size,data   ワークメモリのstartか[sizeまでをdataで初期化します。   指定範囲が、現在のワークメモリ空間を超える場合、指定された範囲   でワークメモリ空間を再確保されます。   ワークメモリを使用する前に、fill命令でワークメモリ空間を確保する  必要があります。   ワークメモリ空間は、プログラム終了時に自動的に解放されます。  9)ワークメモリの表示   構文:dump start,size   ワークメモリのstartからsizeまでの内容をダンプ表示します。 10)ワークメモリ間のコピー   構文: copy src,size,dst   ワークメモリのsrcからsizeバイトを、ワークメモリのdstへ  コピーします。 11)ワークメモリ間のコンペア   構文: cmp src1,size,src2   ワークメモリのsrc1とsrc2からsizeだけ、両者を比較します。   両者が完全に一致しない場合、エラーを発生してスクリプトの  実行を中断します。 12)ワークメモリの書き込み   構文:mw address,data[,data,...]   ワークメモリのaddressに、dataをバイト単位で書き込みます。   dataは最大15個連続して指定することができます。 13)ファイルをワークメモリにロードする。   構文:load filename,buf_dst [,size]   filenameのファイルをワークメモリのbuf_dstのアドレスから、  sizeバイトだけロードします。   filenameは拡張子によってロードするフォーマットが異なります。 拡張子とフォーマットの一覧   .bit : FPGAコンフィグデータとして、ヘッダ部を削除してロード その他:バイナリファイルとしてロード 14)ワークメモリをファイルにセーブする。   構文:save filename,buf_dst [,size]   ワークメモリのbuf_dstからsizeだけ、filenameにセーブします。   出力フォーマットはバイナリフォーマット固定です。 −−−−−−−−−−−−−−−−−−− FPGA関連コマンド −−−−−−−−−−−−−−−−−−− 15)FPGA(Spartan2)をコンフィグレーションする。   構文:config buf_start[,buf_size]   ワークメモリのbuf_startアドレスから、buf_sizeバイトで、  FPGAをコンフィグレーションします。   buf_sizeを省略すると、loadコマンドで最後に読み込まれた  拡張子.bitのデータ長が指定されます。 16)FPGA(Spartan2)をシャットダウンします。   構文:shutdown : FPGA shutdown 17)JTAG_SPI()モジュールと通信を行います。   構文1:xc2s_user1 src,size [,dst] : JTAG USER1 TX/RX   構文2:xc2s_user2 src,size [,dst] : JTAG USER2 TX/RX   ワークメモリのsrcからsizeバイトのデータをJTAG_SPIの  プロトコルでFPGAに送信し、ワークメモリのdstに受信データ  を書き込みます。   dstの指定がない場合は、送信のみ行います。   構文1はUSER1タップ、構文2はUSER2タップです。   xcf_load()モジュールにデータを送信する場合は、XCFxxS用の全データを  USER2タップへ送信します。 18)ワークメモリからJTAG_MEM()モジュールへ書き込みます。   構文:jmwr buf_src,size [,jmem_dst] : JTAG-Memory Write 19)JTAG_MEM()モジュールからワークメモリへ読み込みます。   構文:jmrd jmem_src,size [,buf_dst] : JTAG-Memory Read −−−−−−−−−−−−−−−−−−− コンフィグROM(XCF02S)関連コマンド −−−−−−−−−−−−−−−−−−− 20)コンフィグROMを選択します。   構文:xcfsel chain_number   TDI側から見て、chain_number番目のXCFxxSを対象とします。   EZ-FPGAではchain_numberには0を指定します。 21)コンフィグROM内のデータを消去します。   構文:xcf_erase   正常に消去されたかどうかの確認は行われません。 22)ワークメモリからコンフィグROMにデータを書き込みます。   構文:xcf_pgm start,end   ワークメモリのstartアドレスからendアドレスの範囲をセクター  単位に拡張して、XCFxxSに書き込みます。   書き込み後、ベリファイを行い一致しない場合はエラーを発生して  中断します。   サイズ指定は、メモリ制御コマンドのsizeではなくendアドレス  で指定します。 23)コンフィグROMからワークメモリにデータを読み込みます。   構文:xcf_read start,end   ワークメモリのstartアドレスからendアドレスの範囲をセクター  単位に拡張して、XCFxxSから読み込みます。   サイズ指定は、メモリ制御コマンドのsizeではなくendアドレス  で指定します。