JTAGを使用した複数のFPGAのプログラミング


9

ISE iMPACTを使用してプログラムする4つのSpartan 6 FPGAを接続するJTAGチェーンがあります。ソフトウェアは、4つのFPGAの厳密なサブセットを連続して、任意の順序で正常にプログラムできます。ただし、4つすべての FPGA をプログラムしようとすると、最後のFPGAのDONEピンがHighにならず、プログラミングが失敗します。

この奇妙な行動の原因は何でしょうか?

ノート:

  1. 3つのFPGAをプログラミングした後、4番目のFPGAのステータスレジスタのINIT_Bビットは0ですが、INIT_Bピンはハイです。3番目のFPGAをプログラミングする直前は、そのビットは1でした。これは、4番目のFPGAがロックされていることを示しています。
  2. SelectMapを使用してプログラミングする場合、4つのFPGAをすべて問題なくプログラムできます。
  3. SelectMapを使用して3つのFPGAをプログラムしても、4番目のFPGAはJTAGを使用してプログラムできません。
  4. 4つの完了したピンのそれぞれは、4.7Kオームの抵抗を介して3V3にプルアップされ、その後一緒に接続されます。

私が試したこと

  1. チェーンからFPGAの1つを切断しても、残りの3つのFPGAをプログラムすることができます。

  2. 最後のFPGAの4.7Kオームのプルアップ抵抗を330オームの抵抗に交換しても問題は解決しません。


2
「最後のFPGA」とはどういう意味ですか?ユーザーガイドに記載されているのは"The first device in a serial daisy chain is the last to be configured."、チェーンの最後または構成の最後(チェーンの最初)という意味ですか?回路図を提供していただけませんか?
embedded.kyle

2
p59に関するこの発言は、私に別のことを考えさせます"If the Spartan-6 device is configured via JTAG, the configuration instructions occur independent from the mode pins."
embedded.kyle

ユーザーガイドに慣れてから(FPGAの作業を終えてから約6か月経ちました)、専門用語に少し戸惑いました。デイジーチェーンはシリアルプログラミングと組み合わせて使用​​されます。その場合、DONEピンは一緒に結ばれます。JTAGの場合、複数のデバイスプログラミングはバウンダリスキャンチェーンと呼ばれます。でChapter 3: Boundary-Scan and JTAG ConfigurationDONEピンについて言及しているのは次の"If JTAG is the only configuration mode, then PROGRAM_B, INIT_B, and DONE can be tied High to a 330 resistor."とおりです。DONEピンのローが唯一の問題ですか。正しくプログラムされていますか?
embedded.kyle


私はあなたが3を得ることができるが4を得ることができないという事実は手掛かりだと思います。:設計バウンダリスキャンシステムでのJTAGプログラマガイドの第4章チェックアウトxilinx.com/support/sw_manuals/2_1i/download/jtag.pdf
embedded.kyle

回答:


6

DONE:JTAGプログラミング中に使用してハイに接続することができないで、ピン

JTAGが唯一のコンフィギュレーションモードである場合、PROGRAM_B、INIT_B、およびDONEを330Ω抵抗にHighに接続できます。(p57)

ただし、シリアルプログラミングを使用する場合は、すべてのDONEピンを互いに接続しDriveDone、最初のデバイスを除くすべてのデバイスでを無効にする必要があります。

シリアルデイジーチェーン内のすべてのデバイスのDONEピンを接続することが重要です。DONEピンを接続しないと、コンフィギュレーションが失敗する可能性があります。(p135)

最初のものを除くすべてのデバイスは、DONEピンのドライバを無効にする必要があります。(p135)

両方を使用する場合、2つのオプションがあります。

または、すべてのDONEピンでドライバーを無効にし、すべてのデバイスが信号を解放した後、外部プルアップ抵抗を追加して信号をHighにすることができます。(p135)

デバッグの目的で、シリアルまたはJTAGインターフェイスを介してデバイスを個別に構成できるように、個々のDONEピンを共通のDONE信号から切断する方法が役立つことがよくあります。(p135)

あなたの場合、私はそれらを接続し、DONEピンを無効にしながらそれらをすべてハイに結ぶことが最善の方法だと思います。

すべてのページ番号はユーザーガイドを参照しています


うーん...あなたがINIT_Bハイに接続INIT_Bし、ステータスレジスタのビットが0である場合、それは私にハードウェア障害を示します。あなたがそうすることができると私が言ったと私が思うそのチップを独立してプログラムできない限り。DONE私は、ステータス・レジスタは、その点の間に何をするか分からないので、プログラム中のピンはハイインピーダンスになります。以前のFPGAステータスレジスタのLSBが1の場合、それはそのデバイスのCRCエラーを示し、次のプログラミングを妨げる可能性があります。
embedded.kyle

問題が見つかりました(私の解決策を参照してください)。ご協力ありがとうございました。
Randomblue 2012

3

犯人はINIT_Bピンだったことがわかった。最初にいくつかのFPGAがプログラムされたため、ハイにINIT_B引き上げられましたが、内部プルダウンのためにピンは徐々に低くなり、引き下げられました。

3つのFPGAがプログラムされた後INIT_B、4番目のFPGAがINIT_B論理Lowとして解釈できるようにピンを十分に引き下げたため、4 番目のFGPAがJTAGでプログラムされなくなりました。


Ω

INIT_Bプログラミング後にピンをプルダウンするのではなく、プルアップするように指定するbitgenオプションがあることがわかりました。
Randomblue
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.