同期 bit bang モードで、TDOと期待値の比較が出来るようになりました。
CPLD のプログラムは、多くの方がレガシーポートの一つであるパラレルポートで行っています。 安価で簡単なケーブルを自作するだけで手軽にプログラムが出来るのが魅力です。 しかし、最近のパソコンにはパラレルポートがついていないため、古いパソコンを使い続けなければなりません。 USB を使って CPLD にプログラムするためのケーブルは、市場に存在します。しかし、アマチュアには高価であり、 手軽に手を出せるものではありませんでした。
そこで、手に入りやすい USB コントローラを使って XILINX の CPLD のプログラミングが出来ないかを考えてみました。 USB コントローラには、FT232R または FT245R を使用します。 XC9572XL への書き込みをテストしました。
ダウンロードケーブルは、市販の FT232R / FT245R を搭載したミニボードをそのまま利用できます。 D0/TXD に TDI、D1/RXD に TMS、D2/RTS# に TCK、D3/CTS# に TDO を繋ぎ、適切な電圧の電源を CPLD に繋ぎます。 自作する場合は、下の図を参考にして下さい。なお、VCCIO は、CPLD の電源電圧に合わせて下さい。
本プログラマは、SVF ファイルを入力とします。SVF ファイルは、iMPACT で jed ファイルから生成できます。
iMPACT の GUI から SVF を生成するには、
とても面倒なので、バッチファイルを使ってコマンドプロンプトで生成すると楽です。
setMode -bsfile
setCable -port svf -file xxx.svf
addDevice -position 1 -file xxx.jed
Program -p 1 -e -v
exit
impact -batch script.txt
ダウンロードケーブルを USB ポートに接続するとドライバのインストール画面が表示されますので、 FTDI 社のホームページからダウンロードした D2XX ダイレクトドライバをダウンロードし、解凍したドライバファイルを指定して下さい。 Windows XP の場合は、2.04.16、Windows 98 の場合は、3.01.04で動作確認しています。
Mac OS X の場合は、最新の 0.1.6 では動作しないようなので、0.1.0をインストールして下さい。
CPLD プログラマは、prog_cpld.exe で、コマンドラインから実行します。
prog_cpld -v -c xxx.svf
-v は、verbose モードであり、進捗を表示します。-c は、TDO の値を期待値と比較するオプションです。 -v は特に遅くなるため、必要なければ省略して下さい。 -c を省略するとさらに早くなりますが、正しく書き込まれたかどうかをチェック出来なくなります。
正しくプログラムされれば、
<<< All TDO outputs matched to the expected values! >>>
と表示されます。なお、-c オプションを省くと、このメッセージは出ません。
XC9572XL にとある SVF ファイルをプログラムできることを確認しただけなので、他のデバイスや SVF ファイルでプログラム出来るかはわかりません。ソースコードが付属しているので、必要に応じて改良してお使い下さい。 本プログラムは、無保証です。