パスコンはどこに入れればよいか
DWM付録のARM基板を安定して動作させるためには、ディジタル系3.3V電源にパスコンを入れればよいということが、昨日の実験でわかってきました。
本当は0.47uFがいいのでしょうがあいにく手元になかったので、0.1uFを使うことにします。
さて、パスコンはどこに入れるのがベストでしょうか。
まずは、パスコンなしの波形を見てみます。

CPUの動作クロックにあわせて、VCCに大きなノイズが乗っています。LEDチカチカは10秒ほどで止まってしまいます。
次は、R4とSW1の間にパスコンを入れた場合です。なお、R4にはディジタル系の3.3Vがきています。

問題のLVDD端子よりも奥の方にパスコンがあるので、ノイズの改善効果は期待できるでしょう。
LEDチカチカがすぐに停止するということはなくなりました。
若干、ノイズが減っているのがわかります。
次は、基板の裏側にパスコンをつけた場合です。
LVDDからかなり近い位置になります。LVDD-パスコン-GNDの総配線長はおよそ15mmくらいでしょうか。
なお、この付録基板は、スルーホールの穴に薄いレジストがかかっているので、そのままでは半田が乗りません。付録基板のスルーホールに半田付けするにはレジストを削る必要があります。私は、ドリルの歯を手で持ってくるくると軽くまわして、レジストを削りました。
波形的には、だいぶん改善されてきました。VCCのノイズは、パスコンなしの場合の60%くらいの大きさになりました。LEDチカチカは正常に動いています。
最後は、ADuC7026の26番 & 27番端子に直接0.1μFのパスコンをつけた場合です。GNDは、直近のスルーホールから取ります。

ノイズは観測できないほど小さくなりました。

まだ若干のノイズは残っていますが、CPUの動作クロックと明確な相関はなさそうでした。
まとめ
パスコンをLVDD端子(27番ピン)の近くに配置すると、ノイズが抑制される傾向が見えてきました。デバイスの固体差にもよるのでしょうが、LVDD端子上のノイズ、すなわち3.3V VCCの電圧変動が大きいと、命令フェッチに失敗して止まってしまう、という現象が出るのだと思われます。
もし動作が不安定という方は、難しくない適当な場所にパスコンを入れてみてください。
これで思う存分、LEDチカチカできます。
| 固定リンク
コメント
初めまして。パスコン効果の実験、面白いですねぇ。知識としても知っているし、実感もしているけれど、きちんと記録を取って効果を確認したことはないですね。
これからもちょくちょく読ませてもらいます。
投稿: ereki | 2006.02.21 00:14
私は手元に0.47uFがないので0.1uFを使いましたが、パスコンは位置だけでなく、容量も大事です。
容量の小さいパスコンほどインピーダンスの極小となる周波数が高くなります。つまり、0.1uFのパスコンよりも0.01uFの方がより高い周波数で使え、0.01uFよりも0.001uFの方がより高い周波数で使えます。
ちょっと0.47uFというコンデンサの値は大きいのではないかな、と思ったりもします。
パスコンの容量は、大は小を兼ねません。
容量を変えたり、異なる容量のパスコンを組み合わせることでノイズの周波数成分を考慮した低減効果の実験ができれば面白いですね。
投稿: なひたふ | 2006.02.21 00:27
そうですねー。パスコンで0.47は使わないですね。0.1まで。
>容量を変えたり、異なる容量のパスコンを組み合わせることでノイズの周波数成分を考慮した低減効果の実験ができれば面白いですね。
レギュレータの直近に高周波対策のつもりで472など付けたりしますが、効果のほどを確かめたこともないですね。
最近はもっと大容量のチップセラコンが入手しやすくなったので、今までレギュレータの前後に使っていた電コンをセラコンに置き換えつつあります。長持ちしそうだから。でもオシロ当てて電コンとの比較をしたことないですねー(改めて書いてみると、手抜きしすぎてきた・・・)。
投稿: ereki | 2006.02.21 23:56
非常~に参考になりました。
私の環境下ではLEDは点滅していたのですが、GDBとstubの通信ができずに悩んでいました。
上記対策を施したところ解決できました。
本当にありがとうございました。
投稿: そら | 2006.05.11 09:51
以前調べた感じでは、電源の問題などが生じるとプリフェッチアボートという例外が発生するようです。
JTAGデバッガ等でプログラムをダウンロードして使う場合はRAM上から実行しますが、DWMの記事に従ってプログラムを書き込んだ場合はROM上から実行します。プリフェッチアボートが発生するのは、ROMかRAMかという違いもあるのかもしれませんが、詳しくは調べていません。
ただ、DWM記事のLEDチカチカは簡単なサンプルプログラムですから、例外の扱いなどは行わずに、リセットと同じく、プログラムを最初から実行します。
というわけで、例外が発生すると、リセットと同じ扱いになってチカチカは継続しているように見える、というのが、LEDチカチカ以上のことをやろうとした際に、違う現象が出る理由の一つとなっているのかもしません。
投稿: なひたふ | 2006.05.11 10:13