Spartan-6のIODELAYのキャリブレーション
前回の実験の続きです。
前回、Spartan-6のOSERDESから1Gbpsの信号を出すことができました。オシロの帯域の問題で正確な波形は見ることができませんでしたが、その信号をISERDESに入れることによって、通信可能なものかどうかを確かめようとしています。しかし、配線を指で触っただけで不安定になるなど、問題も多いのです。
そこで、I/Oピンに内蔵された遅延コンポーネント「IODELAY」を使ってみることにしました。
まず、遅延調整しない場合の入力信号(para_in)を見てみましょう。出力信号(para_out)からは、0x65という固定値を出力しています。
送信しているパターンは0x65という固定値なので、固定の値が受信できるはずなのですが、bit1とbit3が変化しています。きっと、サンプリングするタイミングが合っていないのでしょう。
そこで、キャリブレーションシーケンスを実行します。すると、振動がぴたっと止ります。
IDELAYに内蔵されたキャリブレーション機能はアイの中央でサンプリングするように遅延を調整してくれるそうですが、ビット同期しかできません。シンボル同期は自分でロジックを組まなければなりません。
ビット同期とシンボル同期にかかる時間は合計200nsくらいでした。これなら気軽に行なえそうですね。
同期が合った後、バイナリカウンタを送信したらちゃんと受け取れていました。
詳しく見ると、送信したデータが受け取れるまでは約4シンボル(32ns)でした。
指で触ろうが、オシロのプローブをあてようが、そのくらいのことではびくともしません。
なお、特電Spartan-6ボードは、1Gbpsを通すためのそういう基板設計をしていないので、本気で工業製品に応用しようとしたりはしないでください。あくまでも趣味の範囲で楽しむようにしてください。
ビットエラー率とかはまだ測っていませんが、それは今後の楽しみに取っておきましょう。
手のひらに乗るFPGAボードで、ギガの信号を自由に出し入れできるのです。なんだかとても嬉しく思えます。そこにあるTP線で長距離を引き回してみたくなりました・・
| 固定リンク
コメント