« Windows10でWindows7用のデバイスドライバを開発する | トップページ | Cosmo-Kのホームページを作成中 »

2017.08.31

JESD204BのデータをPCIe-DMAで受け取る

高速ADCコンバータから送られてくるJESD204Bの信号を、Kintex-7でデコードして、それをPCI Expressで受け取るサンプルデザインができました。うちのアルバイトさんが全部作ってくれました。

使っているADCボードは1Gsps 16bit 2chのHyperFADC 、PCI Experssボードは40Gbps光モジュールのついたCosmo-K+ です。

Hyadc1

デザインの全体は下の図のようになっています。PCI ExpressのブロックとJESD204BのブロックがBlockMemoryを共有してデータをやり取りする構成になっています。

Jesd1

PCIe BlockにはXDMAコアが入っていて、ホストPCからの指令によってAXIのバースト転送を発生させるようになっています。

Jesd2

JESDのブロックには、JESD204BのPHY、JESD→AXI Streamの変換コア、MicroBlaze、AXI DMAなどが入っています。

XILINXのJESDのコアは有料版ならばAXI出力ができるらしいのですが、無料版はPHYのみしかないようです。そこで、JESDのPHYのみXILINXのコアを使って、AXI Streamへの変換は自作しました。

JESD PHYの設定はこのようになっています。HyperFADCは10Gbps×4本で信号を出力してきますが、信号の受信は2.5Gbpsなので、送信は2.5G、受信は10Gと非対称な構成になっています。

Jesd4

MicroBlazeが入っている理由は、JESD204BをAXI Streamに変換した後、それをAXI MemoryMapに変換する「AXI DMA」の設定のためです。

MicroBlazeを入れるのはオーバースペックではないかと思ったのですが、AXI DMAは意外と設定することが多いので、ハードウェアのロジックでAXI Liteのトランザクションを発行して設定するよりも、MicroBlazeを入れてしまったほうが楽だそうです。

それに、ヒストグラムが乱れたら高速ADCにリセットをかけるなどというインテリジェントな動作もできます。

AXI DMAは、AXI StreamをMemoryMapに変換します。設定を次の図に示します。

Jesd5

こうして、JESD204Bで受信したデータを、AXI Stream→AXI MM→BlockRAMへと格納し、PCI ExpressからXDMAを使って読み出すデザインが出来上がりました。

|

« Windows10でWindows7用のデバイスドライバを開発する | トップページ | Cosmo-Kのホームページを作成中 »

コメント

コメントを書く



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




« Windows10でWindows7用のデバイスドライバを開発する | トップページ | Cosmo-Kのホームページを作成中 »