Spartan3の使い方発表 平成16年12月10日 Parallel III互換ケーブルでのJTAGトラブルシュートデザインウェーブマガジン基板は、XILINX Parallel III(互換を含む)ケーブルを使用した場合に、iMPACTから認識されないという不具合が良く聞かれます。 どうやら、パソコンの機種や、コンフィグROMの有無、ボードの個体差などによっても現象に差があるようです。
74AC125を使うことによって、Parallel III互換のケーブルで、2.5Vの電源でもiMPACTやMITOUJTAGから認識されるようになりました。下の写真1は、ヒューマンデータ様のXCKITで、ICソケットを用いて74AC125を装着した写真です。
下の写真2は、デザインウェーブ付録基板をJTAG接続している写真です。電源は3.3Vでも2.5Vでも正常に動作するようになりました。 (74HC125を使った場合は、3.3VとダイオードショートでOK、2.5Vでは不可でした)
より、確実に行うためには3.3Vから取ったほうが良いとは思われますが、現状では2.5Vでも動作しています。 私なりに考えた対策方法は次のとおりです。
ご参考 ヒューマンデータさんの実験記事 http://www.hdl.co.jp/XCKIT/dwbd/ (74HC14のバッファによる方法) なぜHC125では動作不具合が発生することがあるのですか? 74HCシリーズの動作速度が遅いということが理由の一つと考えられます。74HCよりも高速な74ACを使用することで、不具合の発生頻度を下げることができると推定されます。この不具合の原因は74HCの速度の問題だけではなく、もう一つの大きな要因、すなわちTCKの立上り速度も絡んでいるものと思われます。
なぜ74ACシリーズなのですか? 2.5V⇔3.3V、2.5V⇔5Vの変換を行うためには、本来は低電圧ロジックというものを使用するのが正当な方法だと思います。しかし、秋葉原などで簡単に購入でき、かつ、DIPパッケージが存在するものは限られてきます。昨今の低電圧ロジックは、アマチュアユースでの入手性が難しいことと、細かいはんだ付けがDIPより難しいという問題があります。
そういうわけで、74HC125よりも若干高速な74AC125という選択になりました。(私はRSコンポーネンツで購入しました。秋葉原で探すときは、鈴商、若松、千石、田中無線、その他ガード下などを探してみてください。)
これで確実に動作しますか? 本情報については、私、内藤竜治(なひたふ)は一切保証をいたしません。皆様の創意工夫によって動作の確認を行ってください。
さらに詳細は デザインウェーブマガジン付録基板は、私が設計した基板ではございませんので、本件についてはこれ以上の調査は行いません。 より詳細な情報をご希望の場合は、正式に調査のご依頼をいただければ喜んで調査させていただきますので、まずはお問い合わせください。→ nahitafu@nifty.com 平成16年12月24日
Spartan3のJTAGの注意Spartan3のデータシート(ds99)の第3章によれば、 M0-M2、CCLK、PROG_B、DONE、HSWAP_EN、TCK、TDI、TDO、TMS の各ピンには、VCCAUXに対してダイオードが内蔵されているそうです。
JTAGケーブルの出力に100Ωくらいの電流制限抵抗を直列に入れておけば、3.3Vの電圧を入れても大丈夫と思われます。それは、下の図のような電流の流れになっていると考えられます。
もし電流制限抵抗がなければ、パッドに内蔵されたダイオードが発熱し、故障に至る可能性があります。
なお、XILINXの代理店の公開している技術情報によれば、「3.3Vバウンダリ・スキャンテストを行う場合は接続ラインに直列で30Ωの制限抵抗を挿入します」とあります。挿入する抵抗は30Ωという説もありますが、56Ω以上という情報もあります。
詳細はXILINXのアンサー#20477もご覧下さい 「Spartan-3 コンフィギュレーション - 3.3V トレラント コンフィギュレーション インターフェイスの作成方法」http://www.xilinx.co.jp/xlnx/xil_ans_display.jsp?BV_UseBVCookie=yes&getPagePath=20477
ご参考までにXILINXのアンサー#20477もご覧下さい 「Spartan-3 - Are the Spartan-3 I/Os 5V-tolerant? Can I drive I/O with a higher voltage? 」http://www.xilinx.co.jp/xlnx/xil_ans_display.jsp?BV_UseBVCookie=yes&getPagePath=19146
抵抗で電圧を下げるには簡易的に低電圧ロジックに変換する方法では、150Ωくらいの抵抗を直列に入れ、その後に1000Ωの抵抗でプルダウンするという方法も考えられます。電圧は分圧されるので、1000/(150+1000)*3.3 = 2.86Vになり、ON時の電圧変換は大丈夫です。ON時の電流も3.3/1150=2.86mAと低く抑えられます。OFFも勿論大丈夫です。 これで波形が鈍るとお考えの方もいらっしゃるかもしれませんが、配線やパッドの静電容量と抵抗の値を考え、シミュレーションしてみてください。
上記の方法で上手くいく保証はありませんし、絶対に安全であるという保証もありません。 確実なのは、LVCやALVCや、その他の様々な低電圧ロジックを使って変換することです。しかし、店頭で1個単位で購入できるか、5Vトレラントがあるか、そしてDIPパッケージがあるかどうかは難しいところです。
製品を作る場合などの評価時には、ちゃんとしたレベル変換を行ったほうがよいのでしょうが、今扱っているものはそもそも評価基板です。趣味で使うのであれば、動かすまでの労力を削減してみるのもよいのではないでしょうか。
ALTERAのByteblasterでコンフィギュレーションする既にALTERAのByteBlasterをお持ちの方は、新たにJTAGケーブルを購入する必要はありません。MITOUJTAGというソフトウェアを使用すれば、ALTERAやLATTICEのJTAGケーブルを使って、Spartan3やXCF01Sをコンフィギュレーションすることができます。
下の写真では、ヒューマンデータ社のByteBlaster互換JTAGケーブル(BL3)を用いて、XCF01Sに書き込んでいます。ケーブルの電源は2.5Vではなく、ボード上の3.3Vから取っています。このようにすると、BL3の中の74HC244は3.3Vで動作するので、JTAG信号のTDI、TCK、TMSは3.3Vが出てきます。 Spartan3のJTAG信号は絶対最大定格2.5Vであり、3.3Vの信号を入れてはいけないことになっていますが、BL3の中には各信号に100Ωの直列抵抗が入っていて、ある程度緩衝してくれます。Spartan3の入力ダイオードはONしますが、電流は3mAくらいしか流れないでしょう。 もちろん、これは定格オーバーの使い方ですが、 評価ボードですから、これでいいのではないでしょうか? もちろん、製品を作ったりするときには、しっかり2.5Vロジックを使ってくださいね。
また、上記の使い方では、実際にはうまくいかないことが多いようです。オシロスコープをつなぐと上手くいったりいかなかったり、日や気温やケーブルの角度によってコンフィグが成功したり失敗したりします。どうやら、信号の反射が原因のようです。Spartan3は、JTAG信号の反射が激しいようなので、うまくいかない場合は、日を改めるか、JTAGケーブルの長さを極力短くしてください。 どうしてもダメな場合は、レベル変換用にバッファを入れてください。そうすると、結局、自分でJTAGケーブルを作成するのと同じことになってしまいますが。
乗算器の使い方と性能Spartan3の乗算器は、デフォルトで18×18ビットの符号付きで、符号無しの乗算は17ビット×17ビットまでです。 この乗算器は、「符号付き」という高度な演算が基本なのでお間違いないようにご注意ください。この乗算器は18ビットの符号無し数値を扱うことはできません。そのため、普通に a : signal std_logic_vector(17 downto 0); としておいて、 p <= a * b; などとすると、18ビットの符号無し演算を実現するために乗算器が3個使われてしまいます。
この問題を回避するには、VHDLファイルの先頭の use IEEE.STD_LOGIC_UNSIGNED.ALL; を、下記のように変更します。 use IEEE.STD_LOGIC_SIGNED.ALL;
このようにすると、std_logic_vectorは符号付きの数値として扱われるので、18×18ビットの乗算でも1つの乗算器で行われ、パフォーマンスは低下しません。
お問い合わせはnahitafu@nifty.comまでお願いします。 |
Copyright(C) 2004 NAITOU Ryuji. All rights reserved. 無断転載を禁ず