高速I/O
FPGAのトランシーバーとメモリインターフェースの仕組み、PCIe、Ethernet、DDR、HBM、JESD204がそれらに要求すること、そしてボード上のリンクが立ち上がるかどうかを決めるシグナルインテグリティの基礎を解説します。
概要
現代のFPGAに出入りするデータの大半は、少数の非常に高速なピンを通ります。ギガビットトランシーバーは、PCIe、Ethernet、JESD204、独自リンクを1レーンあたり数十Gb/sで運びます。メモリインターフェースはDDR4、DDR5、LPDDRを1ピンあたり数Gb/sで駆動します。最大級のデバイスでは、高帯域メモリが同じパッケージ内にあります。このハブは、そうしたレートでデータを動かさなければならない設計を持つエンジニアと、銅配線を動作させなければならないボード設計者のためのものです。
ここでのFPGAの役割は独特です。ハードのトランシーバーとメモリPHYは数百のコンフィギュレーションビットを持つ固定シリコンで、プロトコル層はベンダーIPか自作の論理で、ボードは自分のものです。立ち上がらないリンクはこの3つのレベルのどこででも失敗し得て、難しいのはどこで失敗しているかを見つけることです。
重要な考え方
トランシーバーは何をするか
トランシーバーチャネルは、ファブリックからの並列ワードを差動ペア上にシリアル化し、遠端で並列ワードを復元します。送信側ではチャネルを補償するためにプリエンファシスを加えます。受信側ではイコライザ(CTLEとDFE)がチャネルの損失を打ち消し、クロック・データ・リカバリ回路(CDR)がデータ自体からビットクロックを抽出し、デシリアライザがストリームをファブリック向けに32、64、または80ビットに戻します。ラインコーディング(8b/10b、64b/66b、PCIeでは128b/130b)はCDRのために十分な遷移を保ち、DCバランスを抑えます。1レーンあたり約28 Gb/sを超えると、ベンダーはNRZからPAM4信号方式に切り替えます。これはシンボルあたり2ビットを運ぶ代わりに、アイがはるかに小さくなります。本稿執筆時点で、112 Gb/s PAM4がAMD Versal Premium、Altera Agilex 7、Achronix Speedster7tで出荷されており、224 Gb/sがロードマップに載っています。
プロトコルとそのIP
PCIeはほとんどのミッドレンジ以上のデバイスにハードブロックとして搭載されており、Gen3の8 GT/s、Gen4の16 GT/s、Gen5の32 GT/sが一般的で、PAM4を使うGen6の64 GT/sが最新のデバイスに登場しています。ハードブロックはトランザクション層とデータリンク層を実装し、AXIまたはベンダー固有のストリーミングインターフェースを公開します。Ethernetは、ソフトの1G MACから、前方誤り訂正付きのハード10G、25G、100G、400G MACまであります。JESD204BとJESD204Cは、高速ADCとDACを決定論的なレイテンシのシリアルレーンで接続し、複数デバイスにまたがる慎重なクロック(SYSREF)分配が必要です。AuroraとAlteraのSerialLiteは、FPGA間リンク向けの軽量なポイントツーポイントプロトコルです。これらすべてのベンダーIPは当該ベンダーのデバイス上では無償で使え、そうでない場合はサードパーティのIPが存在します。
メモリインターフェース
外部DDRは、ハードまたはソフトのメモリPHYとコントローラを通ります。DDR4はほとんどのFPGAで3,200 MT/sまで、DDR5は最新のもので5,600 MT/s以上で動作し、LPDDR4とLPDDR5は電力に敏感なデバイスに登場します。コントローラは電源投入時のキャリブレーション、リフレッシュ、バンクスケジューリングを扱い、ピンよりはるかに幅広く低速なAXIまたはAvalonポートを提供します。HBMはメモリダイをFPGAダイの隣に同じパッケージ内で積層し、数千の接続と、本稿執筆時点で400 GB/sから800 GB/s超の帯域を、AMD Virtex UltraScale+ HBM、Versal HBM、Altera Agilex Mシリーズで実現しています。その帯域を必要とする設計は、多数の独立したチャネルを同時に使うように書かれなければなりません。
シグナルインテグリティ
10 Gb/sのリンクのユニットインターバルは100 psなので、配線損失、インピーダンス不連続、ビアスタブ、コネクタの反射のすべてが問題になります。ベンダーはI/OのIBISモデルとIBIS-AMIモデルを公開しており、ボード設計者は製作前にチャネルをシミュレーションできます。基準クロックには低ジッタが必要で、通常はファブリックの分周クロックではなく専用の発振器から供給します。すべてのトランシーバーにはアイスキャン機能があり、受信したアイ開口をチップ内部から報告します。リンクが失敗したら最初に実行すべきものです。DDRでは、長さ合わせ、フライバイトポロジ、終端はレイアウト時に決まり、FPGAツールのピンプランナはキャリブレーションできない組み合わせを拒否します。
どこから始めるか
- /learn/beginner/04-registers-clocks-and-state/は、クロックとクロック領域を扱います。あらゆるシリアルインターフェースはこれを増やします。
- /learn/beginner/09-memories-block-ram-and-fifos/は、あらゆる高速インターフェースをファブリックへバッファするFIFOを扱います。
- /learn/beginner/10-from-rtl-to-board/は、ピン制約とI/O規格を紹介します。
最初のトランシーバーループバック、1G Ethernet MAC、DDRコントローラの立ち上げに関する中級レッスンは準備中です。
ツールとベンダー
| ベンダー | トランシーバーファミリ | 最高レーンレート(本稿執筆時点) | PCIeハードブロック | メモリ | ハブ |
|---|---|---|---|---|---|
| AMD | GTH、GTY、GTM、GTYP | 112 Gb/s PAM4(GTM)、Versal Premium Gen 2で128 Gb/s | Gen3からGen5、Versal Premium Gen 2でGen6 | DDR4、DDR5、LPDDR5、HBM | /vendors/amd/ |
| Altera | E-tile、F-tile、R-tile、P-tile | 116 Gb/s PAM4(F-tile FHTレーン、IおよびMシリーズ) | Gen4、Gen5 | DDR4、DDR5、LPDDR5、HBM2e | /vendors/altera/ |
| Achronix | Speedster7t SerDes | 112 Gb/s PAM4 | Gen5 | GDDR6、DDR4 | /vendors/achronix/ |
| Microchip | PolarFire XCVR | 12.7 Gb/s | Gen2 | DDR4、LPDDR4 | /vendors/microchip/ |
| Lattice | CertusPro-NX SerDes | 10.3 Gb/s | Gen3 x4(ハード) | DDR4、LPDDR4 | /vendors/lattice/ |
レートと世代はファミリのリリースごとに変わります。最新のデータシートを確認してください。
よくある間違い
- 専用の低ジッタ源ではなく、ファブリックのPLL出力からトランシーバーの基準クロックを供給する。
- レイアウトで差動ペアの極性を入れ替えてしまい、トランシーバーがコンフィギュレーションで反転できることを知らない。
- バックドリルなしで25 Gb/sのペアにビアスタブを置く。
- PCIeハードブロックがDMAエンジンをくれると思い込む。くれるのはバスです。DMAは別のIPか自作です。
- DDRのキャリブレーションをベンチで一度だけ実行し、全温度範囲で実行しない。
- 2つの独立したクロックを持つリンクのエラスティックバッファとクロック補償の必要性を無視する。
さらに深く
- AMD UG576, UltraScale Architecture GTH Transceivers: 現代的なトランシーバーレーンの完全な解説。
- AMD UG583, UltraScale Architecture PCB Design: 実際のボード上でのトランシーバーとメモリのレイアウト規則。
- PCI-SIG specifications: PCIe基本仕様(全文には会員資格が必要)。
- IEEE 802.3 Ethernet working group: Ethernet規格とその改訂。
- JEDEC standards: DDR4、DDR5、LPDDR、HBM、JESD204はすべてJEDEC文書で、登録すれば無償。
- IBIS Open Forum: チャネルシミュレーションに使われるI/Oバッファモデルの仕様。