BSCANコンポーネントの使い方平成16年12月14日
|
component BSCAN_SPARTAN3 |
BSCANコンポーネントにはドキュメントがないようなので、タイミング等は独自に解析しました。その結果を次の図3、図4に載せます。
図3はUSER1命令を実行した場合のタイミングです。SEL1はUpdate-IRステートの、TCKの立下りタイミングでHに遷移します。逆に、BYPASS命令等を実行した場合、SELはTCKの立下りタイミングでLに戻ります。
図3
USER1命令をセットした場合のタイミング
図4はデータ系レジスタをシフトする際のタイミングです。CAPTURE等の信号はすべて、TCKの立下りタイミングで遷移します。Update-DRステートではDRCKは出力されませんので、ご注意ください。
図4
データレジスタシフト時のタイミング
実際に使用する場合は、いくつか注意すべき点があります。詳しくはお問い合わせください。
IEEE1149.1の標準からは外れますが、以下のような設計もあります。できるだけ使用しないほうが無難です。
UPDATEステートの扱い 影響度 ★☆☆
Update-DRの場合には、DRCKが出力されません。したがって、UPDATE信号をクロックとしてシフトレジスタからデータを取り出す必要があります。しかし、JTAGで送られてきた信号を使って、動作しているFPGAの内部に最終的にアクセスするためには、システムクロックに同期した信号にしなければなりません。
UPDATEでレジスタをコピーし、システムクロックに同期させてコピーすると、レジスタが2倍数必要になってしまいます。UPDATEを見ながらシステムクロックに同期させて取得すると、その辺を節約できますが、IEEE1149.1の標準からは外れます。
※システムクロックが入っていないとJTAGが使えないデバイスはこの理由が考えられる。
固定長ではないシフトレジスタ 影響度 ★★★
シフトレジスタの長さを可変にすることもできます。例えば、最初に入力された何ビットかを長さフィールドとして利用する場合や、データ中に特定のワードが現れた場合に最終部分と判断する方法などです。荒っぽい方法では、強制的にExit-DRステートに送るというのもあります。
図5
可変長のデータ
このような場合、CAPTUREステート以降のDRCKの数を数えることでうまくインタフェースが作れます。しかし、JTAGチェーンに別のデバイスが接続されると、全体のレジスタ長が変わってしまい、うまく動作しません。もちろん、IEEE1149.1の標準からは外れますが、TAPステートマシンを遷移させる必要がないので若干高速です。特定のボード限定など、ハードウェアが固定されている場合には有効でしょう。
※チェーン接続ができないと、データシートに明記されているデバイスはこの理由が考えられる。
シフトレジスタではないものがつながる 影響度 ★★★
JTAGでは、TDIから入ったデータは、何回かのシフトの後に必ずTDOから出てこなければなりません。ところが、フラッシュROMの書き換え完了フラグなど、1ビットのステータスだけが知りたい場合には、TDOにそのフラグを入れてしまう、という方法があります。もちろん、IEEE1149.1の標準からは外れますが、高速にフラグを参照することができます。
※チェーン接続ができないと、データシートに明記されているデバイスはこの理由が考えられる。
お問い合わせはnahitafu@nifty.comまでお願いします。
Copyright(C) 2004 NAITOU Ryuji. All rights reserved. 無断転載を禁ず