手法:
- シグナルライン (VPRG,GSCLK,BLANK,XLAT,SCLK,SIN) に 100Ωの抵抗を入れる.またはローパスフィルタを挟む.
- いくつかのモジュールごとに,74LS04 等でバッファする.その際も,出力側に100Ωの抵抗を入れる.
#誰か先生がいればよかったんだけど.
理由1:
SPI の Ringing について
http://e2e.ti.com/support/data_converters/precision_data_converters/f/73/t/74798.aspx
SPI で信号を伝える場合に,終端がちゃんとされていないと,高周波成分が反射して ringing という現象が起こるらしい.
理想的なデジタル信号は無限に高い周波数成分を含むので,配線長が少しでも長くなると ringing が無視できなくなる.
一番簡単には,ソース側に抵抗を入れる( Source Termination ) 事.これによりインピーダンス整合が行われ,ringing が小さくなるらしい.この抵抗は,コンデンサを入れてローパスフィルタにしても良い.ローパスフィルタの場合,SPI の信号を邪魔しないように十分小さなコンデンサを使うことになる.
抵抗が 100 Ωなのは,何かあった時に IC の保護の意味もある.これ以上大きくするとコンデンサが小さくなるのでよくない,小さくすると電流が流れすぎるので良くない,ということらしい.もちろん通常なら Input 側は Hi-Z 状態になっているので,電流が流れすぎることはない.
ただ,TLC5940 の場合,input 側から電流が流れ込んで ATMega328 もろとも死ぬということがあったので,100Ωは妥当な値だと思う.
理由2:
Termination を行っても,伝送路が長くなるといろんなノイズが載ってしまう.74xx04, 07 や 251 などを使って一旦バッファすると,そこで伝送路は一旦切れるため,綺麗な信号があとに続くことになる.
参考: (SPI Ringing,SPI Termination などで検索すると類似の結果は多数)
http://www.vagrearg.org/content/noloop
http://e2e.ti.com/support/data_converters/precision_data_converters/f/73/t/74798.aspx
No comments:
Post a Comment