« Ubuntu on ZYNQで今までのZYNQのプログラムが動くようにする | トップページ | 復刻・Spartan-6 サンプルコード CD-ROM集 »

2017.05.11

1Gbps ADCの波形デコードに成功

ついに1Gs/s 16bit 2CHの高速ADC(TI社 ADS54J60)からのデータの受信ができるようになりました。

Csk_1g

使っているボードは、Cosmo-K+というKintex-7のPCI Expressボード。いまはPCI Expressには挿さずにスタンドアローンで動かしています。

ADCからのデータは、JESD204Bという規格で、10Gbps×4本で送られてきます。

1494561450_1g

トータルで40Gbpsの信号です。

この中にJESD204Bのデータが入っています。

何度かやってみると、毎回、4つあるGTXのフレームの先頭がずれるようですます。

次の図ではGTX1だけ1ワード遅れています。また、先頭にある11Cというコード(/R/)が2回見えています。

Zure1

GTXの中でチャネルボンディングとかしてうまく合わせられるはずなのですが、まだうまく行っていません。

とりあえず、このFPGA内蔵ロジアナで取り込んだデータをExcelにエクスポートしました。

Exp

これから解析ですよ。

16進に直して、Kコードを置換したり色を付けて見やすくします。

Kcode

/A//R//Q/で始まるILASフェーズが見えてきましたね。

トラ技によればILASフェースは14バイトとのことなのですが、上の解析データでは17バイトあります。これはSYSREFの周期の違いだそうで、後ろに無駄なデータが詰まっているだけなので問題はないようです。

データを見てみると、GTX1とGTX3は00とFFばかりです。つまり、AD変換結果の上位16bitなのでしょう。

Excelで各セルに

=MOD(HEX2DEC(K271)+HEX2DEC(P271)*255+32768,65536)-32768

みたいな式を書いて2つの16進数値を結合し、10進に直して、さらに時系列に並べます。

すると、生の波形が見えてきました。

Raw

これは入力に何もつながないときの波形です。ノイズのヒストグラムを取ってみます。

Hist

おお、釣り鐘型のヒストグラムが見えてきました。4つおきに大きな頻度になっているのはDNLが極端に悪いか、何かを間違っているためでしょう。

とりあえず、まだ波形は綺麗ではないのですが、何か正しそうなデータが受信できるようになりました。

あとは、弾性バッファを入れたり、チャネルボンディングとかをできるようにして、4つのGTXのフレームの先頭がぴったり合うようにしたいですね。

|

« Ubuntu on ZYNQで今までのZYNQのプログラムが動くようにする | トップページ | 復刻・Spartan-6 サンプルコード CD-ROM集 »

コメント

コメントを書く



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




« Ubuntu on ZYNQで今までのZYNQのプログラムが動くようにする | トップページ | 復刻・Spartan-6 サンプルコード CD-ROM集 »