FTCJTAGのバグ取り

『Amontec JTAGkey-Tiny (FT2232) を Xilinx iMPACTから使う』という過去記事があります。これはUSBシリアルコンバータの半導体で有名なFTDIのチップFT2232を使って、FPGAやPROMなどのデバイスをJTAGでコンフィギュレーションしようというものなのですが、巷のツールと大きく異なりFPGAベンタのXilinxの純正書き込みツールであるiMPACTから扱えるため、意外と高評いただいています。それに関するお話です。

このツールですが、FTDIが提供しているJTAG制御ライブラリのFTCJTAGというものに依存しています。ところがこのFTCJTAG(現時点での最新バージョン2.0を元に話をします)には結果的にバグがありまして、PROMのコンフィギュレーションはうまくいくが、FPGAはうまくいかないことがある、という事態を引き起こしていました。ツールをより使いやすくするためにも、FTCJTAGのバグフィクスをしました。

問題はJTAGのTAPステートマシンに関するもので、例えばバッファを越えるような非常に長いビットを読み書きしたいがために、shift DR/IRの状態を維持したまま読み書き関数(JTAG_Write() / JTAG_Read() / JTAG_WriteRead())を抜けたいというところで発生します。通常の使い方は読み書きを抜ける際はさらに状態遷移を引き起こしてrun test idleまで遷移をするのが一般的でこの場合問題はおきないのですが、FPGAへビットストリームをダウンロードする際はビットストリームが長大であること、そしてその間どうやらshift DR状態を維持しなければならないこと(spartan3がそうでした)、というところで問題に気がつきました。そしてこの問題の症状は、関数呼び出し毎におけるデータストリームの最後1bitが、デバイスに送信されなくなります。

FTCJTAG_mod.png
青色が改修部分。

そこで上図のように、改修を加えました。読み書き関数が依存している大元の関数を修正してあります。FTDIで公開されているソース改修を加えたソース、および差分パッチ(FTCJTAG_src_20.patch)を公開します。

※iMPACTから使うツールについても、この修正版FTCJTAGを同梱したものに更新しました。ついでに高速版のFT2232H/4232Hにも対応しています。

March 19, 2010 18:28 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク

コメント

コメントする