LVDSのデフォルト状態に要注意
年末からZYNQ搭載のA/D変換ボード「Cosmo-Z」の納品用4号機を作っていたのですが、うまくADCが動かないというトラブルが起きていました。
ADCのチップ自体は動いていてテストパターンなどは送ってくるのですが、肝心のAD変換データを送ってこない・・
今までに動いていた1号機や2号機と徹底的に見比べていたのですが、ADCまわりにはどこにも差異はありませんでした。
で、ついに10日間悩んだ原因がわかりました。
![]()
FPGAが起動した後、AD変換器には100MHzのLVDS差動クロックが与えられます。
このクロックはFPGAで作った100MHzをクロック分配ICで8個のADCに配っています。
図にすると、以下のようになります。
正常に動作する個体では、FPGAが起動する前には、AD9633のクロックが停止していたのですが、異常な個体では、FPGAが起動する前に次のような波形が出力され、ADCに送られていたのです。
実は、このクロック分配IC「ADCLK854」は、CLK+入力とCLK-入力の内部のプルアップ/プルダウン抵抗の比がわずかに変えられていて、入力オープンの際にどちらかの値に落ち着くようになっているのだとは思いますが、

実際にはFPGAの内蔵プルアップ抵抗などのばらつきによって、ちょうど、2つの入力端子が同電位になってしまったのでしょう。
それゆえ、ノイズを拾ってしまい、上のようなふらふらとした波形になったようです。このふらふらしたクロックを受けてしまうと、AD9633は正常に動作できなくなってしまうというのが、今回のトラブルの原因のようでした。
とりあえず、CLK入力の片側をプルダウンすることでこの問題は回避しましたが、ベストなやり方は模索中です。
今日の教訓
FPGAが起動する前、LVDSは同電位になって、不安定な状態になっている可能性があるので注意が必要。
| 固定リンク






コメント
貴重な情報ありがとうございます。
当方もFPGAからADCへのクロック分配を初めて
設計しているところでした。
トラブルが起きた時に、こういったノウハウは
とても助かります。
投稿: tube-polisher | 2015.01.06 09:06
たまたま似たような疑問で調べていたのですが、+ を pull up、- を pull down するのがよいようです。TI AN-1194 "Failsafe Biasing of LVDS Interfaces" にそのような記述がありました。
調べてはいませんが、AD も似たような文書を出していそうです。メーカー差があるかもしれないので再確認した方が良さそうですが...
LVPECL なんかはどうなんでしょうね?
投稿: Seigo Tanimura | 2015.01.07 17:10
みなさん、コメントありがとうございます。
同じようなことで悩んでいるのですね。
プルアップやプルダウンすると、LVDSの平衡が崩れてしまって、デューティ比が崩れてしまい、高速伝送に向かなくなるのかなと思いました。
こういうクロックバッファは大概出力イネーブルピンがあるので、FPGAが起動するまではディゼーブルにしておくのが正解ではないかと思えてきました。
投稿: なひたふ | 2015.01.07 18:12