« Spartan-6ボードのUSB-JTAGが速くなります | トップページ | Spartan-6のIODELAYのキャリブレーション »

2010.02.18

Spartan-6のOSERDESで汎用I/Oから1Gbps出力

Spartan-6には、ISERDES/OSERDESが内蔵されています。

ISERDES/OSERDESというのは、汎用I/Oに内蔵されたシリアライザ/デシリアライザで、すべての汎用I/Oに内蔵されています。つまり、スペック上は、LXTに内蔵されたGTPを使わなくても普通のSpartan-6LXで、ギガに迫る信号を入出力できるというのです。

本当かどうか、特電Spartan-6評価ボードを使って、実際に試してみました。

まず、Spartan-6に内蔵されたISERDES/OSERDESは、Virtex-4/5のものとだいぶん違うので、戸惑いました。
やりたいことは、OSERDESから信号を出して、ISERDESで受けてデコードすること。

試行錯誤の結果、Spartan-6に内蔵されたPLLを使って、50MHzの水晶クロックから1GHzと125MHzを作り、OSERDESで速度を8倍にして1Gpbを作りました。

Sp6gbps

上の写真の右上にある、ひょろっとした銅線にギガの信号が流れています。
まぁ、このようにインピーダンスも何も考慮していないのですが、今回は、本当にギガの信号が出るかどうかを試すのが目的なので、これで良しとしましょう。

そして、オシロ(500MHz帯域)で測った結果は次のようなものでした。

Sp6gbpsosc

おおっ、なんか出ているではないですか!
ちなみに、10101100というパターンを繰り返しで出しています。
11のところと00のところで振幅が大きく振れ、1010のところで小刻みに振れます。
スルーレートと帯域が足りないとこういう波形になるので、数G帯域のオシロを使えば、きっと綺麗に見えるでしょう。

さて、この波形は本当にGbpsクラスの信号として受け取れるのかを確認するにはどうすればよいでしょうか。
そうです、ISERDESにこの信号を受信させてみればいいのです。

というわけで、上の写真のひょろっとした銅線で出力ピンと入力ピンをつなぎます。そして、入力のところにISERDESをインプリメントします。

そして、8ビットのパターンをOSERDESから出力し、それをISERDESで受け取ってLEDに表示させるというテストを行いましたが、結果は芳しくなかったです。

それなりに正しいパターンを受け取っているのですが、銅線を指でつまむとビット間の干渉とかが起こったりします。基板のパターンやつないだ銅線が、高速差動信号を意識したものになっていないというのも理由のひとつなのですが、このような粗末な配線でも、距離が短いので1Gbps程度ならいけるような気がしています。

もう少し頑張ってみたいと思います。
おそらく、ISERDESが信号をサンプリングするタイミングが良くないんじゃないかと思います。だから、ISERDESの前にIDELAYを入れて、75psくらいの単位で遅延を調整すれば、確実に受信できるようなポイントがあるような気もしていますが、やってみないとわかりません。



手のひらに乗ったFPGAボードが(少なくともFPGA内部では)GHzクラスで動いているというのは、なんだかとても嬉しくなりました。XC6SLX16-2のPLLは1.2GHzまで生成可能だそうです。XC6SLX16-2におけるデータシート上ではOSERDESの最高速度は950Mb/sだそうです。

ISERDES/OSERDESで試行錯誤中のソースコードはこちらに置いておきます。ご興味おありの方は参考にしてください。

|

« Spartan-6ボードのUSB-JTAGが速くなります | トップページ | Spartan-6のIODELAYのキャリブレーション »

コメント

コメントを書く



(ウェブ上には掲載しません)




« Spartan-6ボードのUSB-JTAGが速くなります | トップページ | Spartan-6のIODELAYのキャリブレーション »