USB CPLD Programmer

NEW

同期 bit bang モードで、TDOと期待値の比較が出来るようになりました。

初めに

CPLD のプログラムは、多くの方がレガシーポートの一つであるパラレルポートで行っています。 安価で簡単なケーブルを自作するだけで手軽にプログラムが出来るのが魅力です。 しかし、最近のパソコンにはパラレルポートがついていないため、古いパソコンを使い続けなければなりません。 USB を使って CPLD にプログラムするためのケーブルは、市場に存在します。しかし、アマチュアには高価であり、 手軽に手を出せるものではありませんでした。

そこで、手に入りやすい USB コントローラを使って XILINX の CPLD のプログラミングが出来ないかを考えてみました。 USB コントローラには、FT232R または FT245R を使用します。 XC9572XL への書き込みをテストしました。

ダウンロードケーブル

usb cpld programmer

ダウンロードケーブルは、市販の FT232R / FT245R を搭載したミニボードをそのまま利用できます。 D0/TXD に TDI、D1/RXD に TMS、D2/RTS# に TCK、D3/CTS# に TDO を繋ぎ、適切な電圧の電源を CPLD に繋ぎます。 自作する場合は、下の図を参考にして下さい。なお、VCCIO は、CPLD の電源電圧に合わせて下さい。

SVF ファイルの生成

本プログラマは、SVF ファイルを入力とします。SVF ファイルは、iMPACT で jed ファイルから生成できます。

iMPACT の GUI から SVF を生成するには、

  1. iMPACT のウィザードが起動したら、キャンセルする。
  2. Mode メニューでファイルモードに切り替える。
  3. SVF-STAPL-XSVF タブをクリックする。
  4. 右クリック -> Add Xilinx Device でデバイスを追加、Create SVF にチェックを入れ、OK。
  5. ダイアログで、生成する SVF のファイル名を入力。
  6. All device ... directed to the file ... のメッセージが出るので OK。
  7. xxx.jed ファイルを指定して、デバイスを追加する。
  8. Xilinx のチップの絵を右クリックし、Program... を選ぶ。
  9. オプション指定画面になるので OK 。
  10. Output メニューで SVF File -> Stop Writing SVF File を選ぶ。

とても面倒なので、バッチファイルを使ってコマンドプロンプトで生成すると楽です。

  1. 環境変数 XILINX に、ISE のあるディレクトリ(...XILINX\6\ISE 等)を設定しておく。
  2. iMPACT.exe のあるディレクトリ(...XILINX\6\ISE\bin\nt 等)にパスを通しておく。
  3. 以下のようなテキストファイル script.txt を作成する。

    setMode -bsfile
    setCable -port svf -file xxx.svf
    addDevice -position 1 -file xxx.jed
    Program -p 1 -e -v
    exit

  4. コマンドプロンプトで以下を実行する。

    impact -batch script.txt

D2XX ダイレクトドライバのダウンロード

ダウンロードケーブルを USB ポートに接続するとドライバのインストール画面が表示されますので、 FTDI 社のホームページからダウンロードした D2XX ダイレクトドライバをダウンロードし、解凍したドライバファイルを指定して下さい。 Windows XP の場合は、2.04.16、Windows 98 の場合は、3.01.04で動作確認しています。

Mac OS X の場合は、最新の 0.1.6 では動作しないようなので、0.1.0をインストールして下さい。

CPLD のプログラム

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 オプションを省くと、このメッセージは出ません。

ソフトウェアのダウンロード

USB CPLD Programmer

おわりに

XC9572XL にとある SVF ファイルをプログラムできることを確認しただけなので、他のデバイスや SVF ファイルでプログラム出来るかはわかりません。ソースコードが付属しているので、必要に応じて改良してお使い下さい。 本プログラムは、無保証です。