こんにちは、マス男です。
前回のコラムでは、「 Auto Detect 」で正しく JTAG 配線でき、かつ、デバイスが起動していることを確認しました。
しかし、 マス男の基板はコンフィグレーションが成功する時もあれば、失敗する時もあり、動作がとても不安定だったのです。
コンフィグレーション・エラーをモニタしてみた
下記の表はハチ先輩のコラム 『コンフィグレーション・シーケンス』 からの引用です。
信号名 | 属性 | 値 | 説明 |
nCONFIG | 入力 | High | コンフィグレーションを開始 |
Low | FPGA をリセット状態 ( POR を実施中 ) | ||
nSTATUS | 双方向オープンドレイン | 出力 = High | 正常なコンフィグレーション状態 |
出力 = Low | コンフィグレーション・エラー | ||
入力 = High | 正常なコンフィグレーション状態 | ||
入力 = Low | エラー・ステート | ||
CONF_DONE | 双方向オープンドレイン | 出力 = High (解放) | コンフィグレーション・データ受信完了 |
出力 = Low | コンフィグレーション前・コンフィグレーション中 |
オシロスコープで nCONFIG、 nSTATUS、CONF_DONE を観測しました( 図1 )。
図1. コンフィグレーション・失敗のシーケンス (右図は赤丸領域を拡大した様子)
・nCONFIG が High になるとコンフィグレーション開始です。
・nSTATUS はコンフィグレーションを監視する信号です。
図1より、 Low ( 失敗 )と High ( 再実行 )を繰り返し、コンフィグレーションが失敗し続けていることが分かります。
・CONF_DONE はコンフィグレーションデータ受信完了すると High になります。
図1 より、 常に Low のままで、コンフィグレーションが完了しない様子が分かります。
電源・GND 配線は基板の大動脈である
先輩 「 FPGA に接続する GND の配線、細いワイヤーだな。」
マス男 「細いワイヤーですけど、 GND にはちゃんとつながっていますよ?」
先輩 「電源・GND 配線の電流容量が小さいと、十分な電流を流すことができないから、基板全体が正常に動作できない。電源・GND 配線は基板の大動脈だよ。」
マス男の基板裏の配線の様子です( 図2 )。
FPGA に接続されている GND の配線が細いワイヤー( 青色 )であり、 GND がとても弱い設計でした。
図2. GND が弱い様子
2倍の太さのワイヤーを使用して電流容量を大きくし、GND を強化しました( 図3 )。
図3. GND 強化後
GND を強化したことにより、コンフィグレーションが常に成功し、基板動作が安定しました。
図4 は GND 強化後にオシロスコープで測定したコンフィグレーション・シーケンスです。
図4. コンフィグレーション成功のシーケンス
図4 より、コンフィグレーションデータ受信完了できたので CONF_DONE ピン が High になった様子が分かります。
先輩 「基板全体に必要な電流量を考慮して設計したの?」
マス男 「電圧については FPGA の絶対最大定格が規定されているので考慮しましたが、電流については何も考えていませんでした。」
先輩 「電流を考えないなんて、ダメな設計だな。基板が動くわけがないよ。」
学んだこと
電源・GND 配線は基板の大動脈である。
基板全体に必要な電流を供給できる電源・GND 配線を設計しなければならない。