JESD204Bシリアル・データ・リンク・インターフェースは、高速コンバータの帯域幅拡大のニーズに対応するために開発されたものです。この第3世代の規格は、最大レーン・レートを向上させる一方で(チャンネルあたり最大12.5Gbps)、確定的遅延と高調波フレーム・クロッキングに対応しています。更に、市販のFPGAソリューションと共に使用可能で、それによる拡張も可能な高性能コンバータの利点を生かすことによって、大量のデータを容易に移動して処理できるようになりました。
FPGAプロバイダはこれまで長年にわたり、マルチギガビットのシリアライゼーション/デシリアライゼーション(SERDES)インターフェースについて論じてきました。しかし、これまでのほとんどのA/Dコンバータ(ADC)とD/Aコンバータ(DAC)にはこれらの高速シリアル・インターフェースが含まれておらず、FPGAやコンバータが、SERDESの高い帯域幅の利点を生かした共通規格とインターフェースを取ることはありませんでした。JESD204B準拠のコンバータはこの問題を解決できますが、この新しい機能についてはいくつかの疑問が生じます。
8b/10bエンコーディングとはどのようなもので、JESD204Bインターフェースにはなぜこのエンコーディングが必要なのでしょう。
ランダムなエンコードされていないシリアル・データを使用する差動チャンネルでは、信号が直流平衡であるという保証はありません。1または0のどちらかが他方よりも多く伝送されるという状態が容易に発生し得るからです。シリアル・リンクを使って送られるランダム・データでも、長時間にわたって無動作であったり、すべて0または1の状態が比較的長時間にわたって続いたりする場合があります。
この場合、コーディングされていないシリアル・データ・ストリームの直流平衡状態は、電源レールのどちらか一方の値へ傾きます。その時点でデータの動作が再開されると、ラインのバイアスも再開されるのでビット・エラーの可能性が高くなります。更に、長期的な観点で懸念されるのがエレクトロマイグレーションで、これは、ペアの一方の側で、他方を基準とした差動DC電圧が維持されることによって生じます。これらの問題に対処するために、JESD204Bを含む差動シリアル・データ・ストリームでは、8b/10bエンコーディング方式が広く使われています。
8b/10bエンコーディングでは、10個のビットを使って、オリジナルの8ビット情報をルックアップ・テーブルを介してソース・トランスミッタから送信します。この方式では、本質的に、25%(10b/8b = 1.25)の効率に寄与しないオーバーヘッドが生じます。更に、このエンコーディングでは、10ビット・シンボルあたり3ビット以上8ビット以下の遷移が可能です。これにより、基本データの動的な動作に関わらず、レシーバーが組み込みクロックを復元するための十分な遷移が確保されます。
シリアル・ストリーム内のバイナリ値0と1の個数の不一致は、8b/10bエンコーディングを使って±1以内に維持されるので、信号の直流平衡状態は時間が経過しても維持されます。10ビットから8ビットへの逆方向のデコーディングは、レシーバー側でデータ・ストリームに対して行い、逆方向ルックアップ・テーブルを使ってオリジナル・データを復元できるようにする必要があります。より効率的な64b/66bエンコーディングもこれと同じ動作原理ですが、オーバーヘッドが3.125%と小さく、より進歩した方法です。この方法は、将来世代のJESD204に使われる可能性があります。
コンバータに割り当てたJESD204Bレーンをシステム・ボード上のFPGAに配線することが容易ではありません。あらゆる場所でレーン同士が交差していて、全体としてクロストークの影響を受けやすくなっています。JESD204Bレーンの割り当てをやり直してレイアウトを容易にする方法はあるでしょうか。
コンバータには、番号、文字、その他の命名法で定義したJESD204Bシリアル・レーンを割り当てて、リンク全体の中で特定の関連性を指定することができますが、それらの割り当てが固定である必要はありません。仕様では、各レーンとデバイスに固有の識別名が定められていれば、最初の設定データにおけるこれらの割り当てをやり直すことができます。リンク設定データには、デバイスおよびレーンの動作を識別するために、それらの識別番号が含まれています。この情報により、複数レーン・トランスミッタでは、クロスバー・マルチプレクサを使って任意のデジタル論理シリアル・データを任意の物理出力レーンに簡単に割り当て直すことができます。
これは仕様が認めているオプション機能ですが、ADCのベンダが論理出力から物理出力への割り当てをやり直すためのクロスバー・マルチプレクサ機能を提供している場合は、最も簡単なレイアウトを実現する最適な順番でリンクI/Oを設定し直すことができます。FPGAレシーバーは同じ初期設定データを取得し、予定されていたレーン割り当てを変更してデータを復元することができます。この機能を使うことで、1つのデバイスから別のデバイスへのレーンのルーティングをはるかに容易に行うことができます。また、データシートに記載されたシリコン・ベンダによる最初の名前を使った割り当てに制約されることもありません。
JESD204Bマルチポイント・リンクを使用するシステムにコンバータを組み込む設計を考えています。シングル・リンクとはどのような違いがあるのでしょうか。
JESD204B仕様は、マルチポイント・リンク・インターフェースと呼ばれるものを規定しています。これは、3つ以上のJESD204Bデバイスを接続する通信リンクです。このリンク構成は、コンバータの使用方法によってはシングル・リンクでも有効な場合があります。
例えば、JESD204Bを使用するデュアルADCを考えてみます。ほとんどの場合、デュアルADCは、両方のコンバータに1つのクロック入力を使用します。このため、アナログ・サンプリングは同じ周波数で同時に行うことになります。しかし、アプリケーションによっては1つのデバイスが2つの独立した入力クロックを使用する場合があり、その場合はそれぞれのクロックが個々のADCを個別に駆動します。これにより、2つのADCのサンプリング位相を異なるものにすることができます。あるいは、それぞれのADCのサンプリングを他方のADCに対して非コヒーレントな周波数で行うことも可能です。後者の場合は1つのJESD204Bリンクに両方のコンバータからデータが送られるので、複雑なバックエンドFIFO方式を使わないと、そのリンクは正しく動作しません。
この問題に対する解決策は、デュアル・コンバータにマルチポイント・リンクのJESD204Bインターフェースを使用することです。この場合、各コンバータ・チャンネルは、そのチャンネル専用のシリアル・リンク出力を使用します。この場合、各ADCには非コヒーレントなクロックを使用でき、各シリアル・リンク出力はそれぞれ個別に、なおかつ簡単に別のFPGAやASICへルーティングすることができます。マルチポイント・リンク構成は、1つのFPGAから複数のDACに複数のデータ・ストリームを送る場合にも使用できます。マルチポイント構成ではリンク内のデバイス数が増えるので、デバイス・クロック分配スキューを最小限に抑えるのが更に難しくなる可能性があります。
JESD204Bの確定的遅延とは正確にはどのようなものでしょうか。コンバータの合計遅延と同じでしょうか。
ADCの合計遅延とは、ADCがアナログ・サンプルのクロック・インと処理を行い、これをデジタル・データとしてデバイスから出力するのに要する時間です。同様に、DACの合計遅延とは、デジタル・サンプル・データがDACにクロック・インされてから、対応するサンプルがアナログ出力からクロック・アウトされるまでの時間です。これらは共に周波数に依存するので、通常はサンプル・クロック周期を分解能として測定されます。基本的に、合計遅延の定義と、JESD204Bリンク実装に定義されている確定的遅延の定義は同じではありません。
JESD204Bリンクの確定的遅延は、パラレルでフレーム化されたデータがトランスミッタ(ADCまたはソースFPGA)に入力されてから、パラレルで非フレーム化されたデータがレシーバー(DACまたはレシーバーFPGA)から出力されるまでの間、そのリンクがデータを伝搬するのに要する時間によって定義されます。通常、この時間は、フレーム・クロックまたはデバイス・クロックの周期を分解能として測定されます(図1)。この定義には、ADCのアナログ・フロントエンド・コアとDACのバックエンド・アナログ・コアは含まれません。この遅延計算に関係するのはトランスミッタとレシーバーだけではなく、これらを接続するシリアル・データ信号のルーティングも関係します。これは、確定的遅延が、JESD204Bレーン・ルーティングの長さに応じて、マルチコンバータ・システム内またはマルチポイント・リンク内で増減し得ることを意味します。レシーバーのバッファ遅延は、ルーティングによる遅延の差を相殺する助けとなります。
JESD204Bではどのように、また何の目的でテール・ビットを使用しているのですか。
JESD204Bリンクでは、コンバータ・データや制御ビットを送信するために実際に必要な情報スペースよりも多くのスペースを割り当てることができます。特定のコンバータや設定のためのデータですべてのスペースが埋まらない場合、そのパディングにはテール・ビットとして定義されたものが使われます。例えば、スペースがN' = 16、送られる実際のデータが13ビット(N = 13+ CS = 0)で、スペースが余る場合を考えます。この場合は、未使用データ・スペースを埋めるために3つのテール・ビットが使われます(図2)。
テール・ビットは情報を持たないダミー・ビットで、未使用スペースを埋めるためにだけ使われます。すべてのテール・ビットに同一の固定値を割り当てると不要なスプリアス・ノイズが発生する可能性があるので、オプションで疑似乱数シーケンスとして表すこともできます。トランスミッタとレシーバーは共に、リンク設定に基づき、これらのビットには情報が含まれないことを認識している必要があります。したがって、レシーバーは、関連データのストリームに含まれるこれらのビットを単純に無視することができます。
リンク・パターンは正常に機能しますが、通常動作モードでコンバータ・データを送信できません。旧世代のコンバータでは、LVDS(低電圧差動伝送)やパラレル・インターフェースを使ってDACやADCの最下位ビット(LSB)ピンまたは最上位ビット(MSB)ピンのプローブ測定やデバッギングを行い、コンバータが正常に動作しているかどうかを簡単に確認することができました。JESD204Bインターフェース使用時のMSBやLSBのプローブ測定は、どのように行えばよいでしょう。
これは、JESD204Bインターフェースの数少ない欠点の1つです。LSB I/OやMSB I/Oの電気的なプローブ測定を行い、コンバータに対して正常に動作しているかどうかを確認するのは容易ではありません。これはサンプル・データがチャンネルごとにシリアル化されているためで、重み付けされた特定ビットの電気的なプローブ測定を行うのは容易ではありません。しかし、コンバータとの間で有効なデータが送受信されていて、そのデータがどのようなものであるかを迅速に知りたい場合、システムの問題をデバッグできるオプションがいくつかあります。
オシロスコープ・ベンダによっては、8b/10bデータをシリアルにデコードしてエンコード前のストリームをスクリーン上に表示する、リアルタイム・データ処理機能を持つオシロスコープを提供しています。スクランブルされていないデータはこのような方法でプローブ測定を行えるので、リンク上でどのような動作が実行されているかを知ることができます。
FPGAベンダは、システム設計者がFPGA内で送受信されるデータを観察できるように、内蔵プロービング・ソフトウェア・ツールを提供しています。このツールは、USBドングルを介してコンピュータに接続して使用します。また、いくつかのASICとコンバータは、リンクに関するデータ解読問題の解決に役立つ、シリアル・ループバック・セルフテスト・モードを内蔵しています。
リンクの他のパラメータが分かっている場合に、コンバータのレーン・レートを計算する方法を教えてください。
JESD204Bを使用するシステム設計者が使用するリンクのレーン数やレーン・レートを計算することは、コンバータ、ASIC、またはFPGAの他の重要な基準が分かっていれば、下に示すすべての基本的リンク・パラメータの間には数学的な関係が存在し、未知の変数が1つであれば、計算でその値を求めることができます。システム設計者はその結果に基づき、コンバータまたはFPGAのアーキテクチャの範囲内で、リンクの動作を変更する他のパラメータを選ぶことができます。
ここで、
Mはリンク上のコンバータ数、
N'は1つのサンプルで送信される情報ビット数(サンプル分解能ビット、制御ビット、テール・ビットを含む)、
fSはデバイス・クロックまたはサンプル・クロック、Lはレーン数、
Lはレーン数、
レーン・レートは1つのレーンのビット・レート、
10⁄8は、8b⁄10bエンコーディングにより生ずるリンク・オーバーヘッド。
例えば、N' = 16、fS = 235MHz、2レーンのデュアルADCを考えた場合、そのレーン・レートは以下のようになります。
アプリケーション層とはどのようなもので、何をするのでしょうか。
アプリケーション層とはJESD204Bで提供される方法の1つで、通常仕様の範囲外でサンプル・データをマップすることを可能にします。これは、リンクのN'と相対的に異なるサイズでデータ・サンプルを渡す必要があるようなコンバータ・モードに有効です。
他の方法では効率が悪くなるようなリンク構成も、アプリケーション層を使用することで、より少ないレーン数や低いレーン速度で、より効率的なものとすることができます。アプリケーション層は特定のコンバータ・モードごとにカスタマイズしたり独自に設計したりできるので、トランスミッタとレシーバーは、共に特定のアプリケーション層を認識できるように設定する必要があります。通常は4個のサンプルによって占有される1つのスペースに、5個のサンプルを割り当てる例を図3に示します。
1つ前の質問に対して示した式をアプリケーション層の計算に使用する場合は、実際のN'ではなく実効的なN'を使う必要があります。 例えば、下に示すアプリケーション層の場合、実際のJESD024BサンプルのN'は16ですが、5個のサンプルを送るのに64ビットが使われているので、ADCサンプルの実効的なN'の値を求めることができます。したがって、NEFF = 64/5 = 12.8です。他のすべての変数を同じ値に保った場合、レーン・レートは20%低下します。
今後の動向
データ・コンバータの市場でJESD204Bの採用が増え続けるのに従って、FPGAプラットフォームに関する知財(IP)能力が、その採用を促進するための手助けとなるでしょう。このテーマに関する議論は複雑さを増していくことが予想されますが、より多くのエンジニアが加わって新しいシステムの設計を開始するにつれて、この議論が広がりを見せることはあっても下火になることはないでしょう。