JESD204Bインターフェースを機能させる際の重要な問題を理解する

JESD204Bは最近承認されたJEDEC規格で、コンバータとデジタル処理デバイス間のシリアル・データ・インターフェースに関する仕様を規定しています。第3世代の規格として、JESD204Bでは前バージョンにおけるいくつかの制約が解消されています。このインターフェースの利点としては、データ・インターフェースの配線に要するボード面積の減少、セットアップおよびホールドに関するタイミング条件の緩和、コンバータおよびロジック・デバイス用パッケージの小型化が可能になったことなどが挙げられます。アナログ・デバイセズのAD9250など、様々なベンダーの新しいA/Dコンバータが、このインターフェースを使用しています。

JESD204Bには、既存のインターフェース・フォーマットやプロトコルとは異なる複雑さや把握しづらい点があるので、その利点を実現するには一定のトレードオフが求められます。どの規格にも言えることですが、シングル・データ・レートやダブル・データ・レートのCMOSあるいはLVDSなどのより一般的なインターフェースに対し、このインターフェースが受け入れられ、広く使われるようになるには、シームレスに機能しなければならないことは明らかです。JESD204B規格はJEDECにより文書化されていますが、この規格に関連する特定の情報の中には、解釈によって意味が異なったり、異なる基準で使われたりする可能性を持つものがあります。また、規格の概要、その仕組み、問題が生じた場合のトラブルシュート方法などを示した簡潔なガイドがあれば、非常に有用であることも明らかです。

本稿では、JESD204BによるADCからFPGAへのインターフェース、正しく機能しているかどうかの確認方法、および問題が生じた場合のトラブルシュート方法について説明します。中でも、最後に挙げたトラブルシュート方法は、恐らく最も重要な点になると思われます。ここで紹介するトラブルシューティング手法は、オシロスコープやロジック・アナライザを含む一般的に入手可能な試験装置や計測装置と、Xilinx®のChipScopeやAltera®のSignalTapといったソフトウェア・ツールを組み合わせて使用することができます。1つまたは複数の方法で信号伝達を可視化できるように、インターフェースでの信号伝達についても説明します。

JESD204Bの概要

JESD204B規格は、一般的なパラレル・データ転送より高速のシリアル・インターフェースを介して、1つまたは複数のデータ・コンバータからデジタル信号処理デバイス(通常はADCまたはDACからFPGA)へインターフェースを取る方法を提供します。このインターフェースは最大12.5Gbps/レーンで動作し、クロックとアライメント文字が組み込まれているフレーム化されたシリアル・データ・リンクを使用します。このインターフェースは、デバイス間のパターン数を減らし更にそれによってパターンのマッチングに関する条件を緩和すると共に、セットアップ時間とホールド時間の制約に関する問題を解消することで、高速コンバータのデータ・インターフェースの実装を容易にします。リンクはデータを転送する前に確立する必要があるので、インターフェースが正しく機能していることを確認し、もし正しく機能していない場合は何をすべきかを決定するという課題が生じ、この課題に対処するための手法が必要になります。

JESD204Bインターフェースは、コード・グループ同期(CGS)、初期レーン同期(ILAS)、およびデータ送信という3つのフェーズを使用して同期リンクを確立します。リンクに必要な信号は、共有リファレンス・クロック(デバイス・クロック)と、差動CML物理データ用の電気的接続(レーンと呼びます)が少なくとも1つ、およびその他の同期信号が少なくとも1つです(SYNC~と場合によってはSYSREF)。これらの信号はサブクラスに応じて使われます。

  • サブクラス 0 は、デバイス・クロック、レーン、およびSYNC~ を使用
  • サブクラス 1 は、デバイス・クロック、レーン、SYNC~、および SYSREF を使用
  • サブクラス 2 は、デバイス・クロック、レーン、およびSYNC~ を使用

多くの場合はサブクラス0で十分なので、本稿でもこれを中心に説明します。サブクラス1とサブクラス2は確定的遅延を確立する方法を提供します。これは、複数デバイスの同期、システム同期、あるいは固定遅延が求められるアプリケーションで重要になります(システムが、あるイベントに対して既知のサンプリング・エッジを必要とする場合や、イベントが、指定された時間内に出力信号に反応しなければならない場合など)。

送信デバイス(ADC)から受信デバイス(FPGA) へ のJESD204Bリンクの簡略図を図1に示します。1つのADCからのデータは1つのレーンを使って送られます。

図1. 1個のADCからレーン1つを経てFPGAへ至るJESD204Bリンクの図

図1. 1個のADCからレーン1つを経てFPGAへ至るJESD204Bリンクの図

JESD204B仕様には多くの変数がありますが、そのうちのいくつかはリンクの確立時に特に重要になります。仕様に定めるこれらの重要変数を以下に示します(これらの値は通常「X-1」と表されます)。

  • M:コンバータ数。
  • L:物理レーン数。
  • F:フレームあたりのオクテット数。
  • K:マルチフレームあたりのフレーム数。
  • N および N':N はコンバータの分解能、N' はサンプルあたりの使用ビット数(4の倍数)。N' の値は、N の値に制御ビットとダミー・ビットを加えた値です。

サブクラス0:同期ステップ

上に述べたように、多くのアプリケーションには比較的シンプルなサブクラス0の動作モードを使用できます。これは、確立することとリンクを確認することが最も容易なモードでもあります。サブクラス0は、CGSフェーズ、ILASフェーズ、およびデータ・フェーズという3つのフェーズを使って同期を確立し、それをモニタします。各フェーズに対応する図には、オシロスコープ、ロジック・アナライザ、あるいはXilinx ChipScopeやAltera SingalTapなどのFPGA仮想I/Oアナライザのどれを使ってデータを表示したかに応じ、異なるフォーマットでデータが示されています。

コード・グループ同期(CGS)フェーズ

リンク上で観察されるCGSフェーズの最も重要な部分を図2に示し、この図に関する5つの重要なポイントについて説明します。

  • レシーバーは、SYNC~ ピンをロー・レベルに駆動することによって同期の要求を行います。
  • トランシーバーはスクランブルされていない /K28.5/ シンボル(10 ビット / シンボル)を次のシンボルの開始時に送信します。
  • レシーバーは、少なくとも 4 個の連続した /K28.5/ シンボルをエラーなしで受信すると同期を行い、更に SYNC~ ピンをハイ・レベルに駆動します。
  • レシーバーは、少なくとも 4 個の 8B/10B 文字をエラーなしで受信する必要があります。エラーがあると同期は失敗し、リンクは CGS フェーズのままになります。
  • CGS フェーズが終了して ILAS フェーズが開始されます。
図2. CGSフェーズでのJESD204Bサブクラス0リンク信号のロジック出力(2レーン、デバイスが1個、ADCが2個の場合)

図2. CGSフェーズでのJESD204Bサブクラス0リンク信号のロジック出力(2レーン、デバイスが1個、ADCが2個の場合)

単に/K/とも呼ばれるJESD204B規格の/K28.5/文字は、図3のように表示できます。この規格ではニュートラル・ディスパリティを維持する必要があります。8B/10Bコーディングを使用すると、平均して1と0の数が等しい、バランスの取れたシーケンスとすることができます。それぞれの8B/10B文字は正(1が多い)または負(0が多い)のディスパリティとなる可能性があり、現在の文字のパリティは、それまでに送信された文字の合計によって決定されます。一般にこれは、正のパリティのワードとそれに続く負のパリティのワードを交互に送信することによって実現されます。図には正負両方のパリティを持つ/K28.5/シンボルを示してあります。

図3. /K28.5/文字のロジック出力とJESD204B Tx信号パス上の伝送方法

図3. /K28.5/文字のロジック出力とJESD204B Tx信号パス上の伝送方法

以下に重要なポイントを挙げます。

  • シリアル値は、レーンを介して送信される 10 ビットのデータのロジック・レベルを表します。これは、オシロスコープで物理インターフェースを測定することによって確認できます。
  • 8B/10B 値は、レーンを介して送信されるロジック値(10 ビット)を表します。これは、ロジック・アナライザで物理インターフェースを測定することによって確認できます。
  • データ値とデータ・ロジックは、8B/10B コーディング前の JESD204B トランシーバー・ブロック内のシンボルのロジック・レベルを表します。これは、Xilinx の ChipScope やAltera の SignalTap といった FPGA ロジック解析ツールで確認できます。
  • シンボルは送信される文字の 16 進値を表し、PHY 層のパリティを示します。
  • 文字は、JEDEC 仕様の規定に従って JESD204B 文字を示すため表示されます。

ILASフェーズ

ILASフェーズには4個のマルチフレームがあり、これらは、レシーバーがすべてのリンクからのレーンをアラインできるようにすると共に、リンク・パラメータを確認できるようにします。アライメントは、パターン長の違いとレシーバーで発生する文字スキューに対応するために必要です。連続するマルチフレームはそれぞれ、4個のうちの前の1個の直後に続きます(図4)。スクランブリング・リンク・パラメータがイネーブルされているか否かに関わらず、ILASは常にスクランブリングなしで送信されます。

図4. ILASフェーズでのJESD204Bサブクラス0リンク信号のロジック出力

図4. ILASフェーズでのJESD204Bサブクラス0リンク信号のロジック出力

ILASフェーズは、SYNC~のアサートが解除された(ハイ・レベルになった)後に開始されます。送信ブロックは、その内部で1つのマルチフレーム全体のトラックを完了させると(ADC内)、4個のマルチフレームの送信を開始します。すべてのマルチフレームが送信されるように、必要な文字の間にはダミー・サンプルが挿入されます(図4)。4個のマルチフレームは以下のように構成されます。

  • 文マルチフレーム 1:/R/ 文字[K28.0]で始まり、/A/ 文字[K28.3]で終了。
  • マルチフレーム 2:/R/ 文字で始まり、その後に /Q/[K28.4]文字と 14 個の構成オクテットからなるリンク構成パラメータが続いて(表 1)、/A/ 文字で終了。
  • マルチフレーム 3:マルチフレーム 1 と同じ。
  • マルチフレーム 4:マルチフレーム 1 と同じ。
図5. /K/文字[K28.5]、/R/文字[K28.0]、/A/文字[K28.3]、/Q/文字[K28.4]の図

図5. /K/文字[K28.5]、/R/文字[K28.0]、/A/文字[K28.3]、/Q/文字[K28.4]の図

表1. ILASマルチフレーム2のCONFIGの表(JESD204B設定パラメータを構成する14個のオクテット)
オクテット番号 ビット7(MSB) ビット6 ビット5 ビット4 ビット3 ビット2 ビット1 ビット0(LSB)
0 DID[7:0]
1 ADJCNT[3:0]
BID[3:0]
2 ADJDIR PHADJ LID[4:0]
3 SCR
L[4:0]
4 F[7:0]
5
K[4:0]
6 M[7:0]
7 CS[1:0]
N[4:0]
8 SUBCLASS[2:0]
N[4:0]
9 JESDV[2:0]
S[4:0]
10 HD
CF[4:0]
11 予備1
12 予備2
13 FCHK[7:0]

JESD204Bパラメータのフレーム長は次式で計算できます: (S) × (1/Sample Rate)

これを書き直すと次のようになります:

(サンプル数/コンバータ/フレーム) × (1/サンプル・レート)

例:

250MSPSで動作するコンバータが1サンプル/コンバータ/フレームでサンプリングを行う場合(この場合、「S」はバイナリ値 –1として符号化されるため0になります)、フレーム長は4nsになります。

数式 1

JESD204Bパラメータのマルチフレーム長は次式で計算できます:

数式 2

これを書き直すと次のようになります:

(サンプル数/コンバータ/フレーム) × (フレーム数/マルチフレーム) × (1/サンプル・レート)

例:

250MSPSで動作するコンバータが1サンプル/コンバータ/フレームでサンプリングを行い、フレーム数が32フレーム/マルチフレームの場合、マルチフレーム長は128nsになります。

数式 3

文字置換をイネーブルしたデータ・フェーズ

データ送信フェーズでは、制御文字を使ってフレーム・アライメントが監視されます。文字置換はフレームの終わりで行われます。データ・フェーズでは、データやフレームのアライメントに対応するためにオーバーヘッドが追加されることはありません。文字置換により、現在のフレームの最終文字を最終フレームの最終文字に置き換えることができる場合にのみ、フレーム境界でアライメント文字を発行できます。これにより、ILASシーケンス以後にアライメントが変化していないことを(時折)確認できる場合があります。

トランスミッタ内での文字置換は次の場合に行われます。

  • スクランブリングがディスエーブルされ、なおかつフレームまたはマルチフレームの最終オクテットが前のフレームのオクテット値と一致する場合。
  • スクランブリングがイネーブルされ、なおかつマルチフレームの最終オクテットが 0x7C である場合、またはフレームの最終オクテットが 0xFC である場合。

トランスミッタとレシーバーはそれぞれローカル・マルチフレーム・カウンタ(LMFC)を維持しており、このカウンタは、(F × K) – 1までカウントしてから「0」に戻ってカウントを再開する動作を永続的に繰り返します(内部ワード幅は無視)。すべてのトランスミッタとレシーバーには共通の(ソース)SYSREFが送信され、これらのトランスミッタとレシーバーは、このSYSREFを使って自分のLMFCをリセットします。その後は、すべてのLMFCを相互に同期する必要があります(1クロック以内)。

(すべてのデバイスから見て)SYNCが解除されると、トランスミッタは、(Tx)LMFCが次に「0」に戻るときにILASを開始します。F × Kが、(送信エンコード時間) + (ライン伝搬時間) +(レシーバー・デコード時間)より大きい値に正しく設定されていれば、受信データは次のLMFCの前にレシーバーのSERDESから出力されます。レシーバーはデータをFIFOへ渡し、FIFOは次の(Rx)LMFC境界でデータの出力を開始します。この、トランスミッタのSERDES入力とレシーバーのFIFO出力間の既知の関係が、確定的遅延と呼ばれるものです。

問題となり得る部分

JESD204Bには取り扱い上把握しづらい部分も多く、複雑なインターフェース規格となってしまう可能性があります。うまく機能しない原因を探るには、考え得る状況を十分に理解する必要があります。

CGSモードでの停止:SYNCがロジック・ローのままの場合、または4マルチフレームに達しないうちにパルス・ハイになる場合:

電源を切り、以下の点についてボードをチェック:

  • SYSREF 信号と SYNC~ 信号は DC 結合されている必要があります。
  • ボード電源を切り、SYNC~ のソース(一般に FPGA またはDAC)からSYNC~入力(一般にADCまたはFPGA)までのボード SYNC~ 接続に異常がなく、低インピーダンスであることを確認します。
  • プルダウン抵抗またはプルアップ抵抗がシグナリングに支配的な影響を与えていないことを確認します。例えば、値が小さすぎたり短絡したりしている場合は正しく駆動できません。
  • JESD204B リンクの差動ペア・パターン(ケーブルを使用している場合はケーブルも)のマッチングが取れていることを確認します。
  • パターンの差動インピーダンスが 100Ω であることを確認します。

電源を入れ、以下の点についてボードをチェック:

  • SYNC パスにバッファまたはトランスレータがある場合は、それが正しく動作していることを確認します。
  • SYNC~ ソースとボード回路(差動の場合は SYNC+ と SYNC–の両方)が、SYNC~ 受信デバイスに適合したロジック・レベルを生成するように正しく構成されていることを確認します。ロジック・レベルが適合していない場合は、ソース設定用と受信設定用の回路をチェックして問題の有無を確認します。もしくは、デバイスのメーカーに相談してください。
  • JESD204B シリアル・トランスミッタとボ ード回 路 が、JESD204B シリアル・データ・レシーバーに適合した正しいロジック・レベルを発生するように正しく構成されていることを確認します。ロジック・レベルが適合していない場合は、ソース設定用と受信設定用の回路をチェックして問題の有無を確認します。もしくは、デバイスのメーカーに相談してください。

SYNC~シグナリングの確認:

  • SYNC~ がロー・レベルで静止している場合、そのリンクはCGS フェーズより先に進みません。送信するデータに問題があるか、JESD204B レシーバーがサンプルを正常にデコーディングしていません。/K/文字が送信されているかどうかの確認、受信設定値の確認、SYNC~ ソースの確認、ボード回路の確認、SYNC~ 信号をオーバードライブして強制的にリンクを ILASモードにするなどの措置を講じ、問題がリンクのレシーバーに関するものなのか、トランシーバーに関するものなのかを切り分けます。もしくは、デバイスのメーカーに相談してください。
  • SYNC~ がハイ・レベルで静止している場合は、ソース・デバイスで SYNC~ ロジック・レベルが正しく設定されていることを確認します。更に、プルアップ抵抗とプルダウン抵抗を確認してください。
  • SYNC~ がハイ・レベルになり 6 マルチフレームに達しないうちに再びロー・レベルに戻る場合、その JESD204B リンクはCGS フェーズより先に進みますが、ILAS フェーズより先には進みません。これは、/K/ 文字には問題がないこと、およびCDR の基本機能は正しく作用していることを示唆しています。ILAS のトラブルシュート・セクションへ進んでください。
  • SYNC~ が 6 マルチフレーム以上にわたってハイ・レベルのままになる場合、そのリンクは ILAS フェーズより先に進みますが、データ・フェーズで不具合が生じます。トラブルシュートのヒントについては、データ・フェーズのセクションを参照してください。

シリアル・データの確認

  • トランシーバーのデータ・レートとレシーバーの予定レートが同じであることを確認します。
  • 高インピーダンスのプローブ(できれば差動プローブ)を使ってレーンを測定します。文字に異常がある場合は、レーンの差動パターンのマッチングが取られていること、PCB 上のリターン・パスが断線していないこと、およびデバイスが正しく PCB にハンダ付けされていることを確認します。ILAS およびデータ・フェーズの(見かけ上の)ランダム文字と異なり、CGS 文字はオシロスコープ上で容易に識別できます(十分に高速のオシロスコープの場合)。
  • 高インピーダンスのプローブを使って /K/ 文字を確認します。
    • /K/ 文字が正しければ、リンクのトランシーバー側は正常に動作しています。
    • /K/ 文字が正しくなければ、トランシーバー・デバイスまたはボード・レーン信号に問題があります。
  • DC 結合されている場合は、トランスミッタとレシーバーのコモンモード電圧がデバイスの仕様を満たしていることを確認します。
    • 実装に応じて、トランスミッタのコモンモード電圧の範囲は 490mV ~ 1135mV になります。
    • 実装に応じて、レシーバーのコモンモード電圧の範囲は490mV ~ 1300mV になります。
  • データ・レーン上のトランスミッタ CML 差動電圧を確認します(CML 差動電圧は、信号の各レグにおける電圧振幅の 2 倍として計算されます)。
    • トランスミッタ CML 差動電圧の範囲は、速度 3.125Gbpsまで 0.5Vp-p ~ 1.0Vp-p です。
    • トランスミッタ CML 差動電圧の範囲は、速度 6.374Gbpsまで 0.4Vp-p ~ 0.75Vp-p です。
    • トランスミッタ CML 差動電圧の範囲は、速度 12.5Gbpsまで 0.360Vp-p ~ 0.770Vp-p です。
  • データ・レーン上のレシーバー CML 差動電圧を確認します(CML 差動電圧は、信号の各レグにおける電圧振幅の 2 倍として計算されます)。
    • レシーバー CML 差動電圧の範囲は、速度 3.125Gbps まで 0.175Vp-p ~ 1.0Vp-p です。
    • レシーバー CML 差動電圧の範囲は、速度 6.374Gbps まで 0.125Vp-p ~ 0.75Vp-p です。
    • レシーバー CML 差動電圧の範囲は、速度 12.5Gbps まで0.110Vp-p ~ 1.05Vp-p です。
  • プリエンファシスをオプションで使用できる場合は、イネーブルしてデータ・パス沿いにデータ信号を観測します。
  • トランスミッタとレシーバーで M と L の値が一致していることを確認します。両者の値が一致していないとデータ・レートも一致しません。例えば M = 2、L = 2 にすると、M = 2、L = 1 の場合に比べてシリアル・インターフェースのデータ・レートが半分になります。
  • トランスミッタとレシーバーへ供給するデバイス・クロックが位相ロックされていること、および正しい周波数であることを確認してください。

約4マルチフレーム以上にわたってSYNCパルスがハイ・レベルのままになると、ILASモードより先へ進めない:

  • リンク・パラメータの競合
    • リンク・パラメータのオフセットが 1 でないことを確認します(多くのパラメータの値は –1 に指定されています)。
    • ILAS マルチフレームが正しく送信を行っていることを確認し、トランシーバー・デバイスとレシーバー・デバイスのリンク・パラメータ、および ILAS の 2 番目のマルチフレームで送信されるリンク・パラメータを確認します。
    • 予想 ILAS 長(tframe、tmultiframe、4 × tmultiframe)を計算し、約 4 マルチフレームのうちに ILAS が試みられたことを確認します。
  • すべてのレーンが正しく機能していることを確認します。マルチレーンまたはマルチリンクの競合がないことを確認します。

データ・フェーズに入るが、リンクが時折リセットされる(データ・フェーズへ戻る前にCGSとILASに戻る):

  • 周期的または間欠的な SYSREF 信号または SYNC~ 信号の無効なセットアップおよびホールド時間。
  • リンク・パラメータの競合。
  • 文字置換の競合。
  • スクランブリングに関する問題(スクランブリングを有効にしている場合)。
  • レーン・データの破損、ノイズ、またはジッタによるアイ・ダイアグラムの狭窄。
  • デバイス・クロックにおけるスプリアス・クロックまたは過度のジッタの発生。

リンクをトラブルシュートする際のその他の一般的ヒント:

  • 許容最低速度でコンバータとリンクを動作させます。これにより、入手し易い低帯域幅の計測機器を使用できるようになります。
  • M、L、K、S に許容される最小の組み合わせを設定します。
  • 可能な場合はテスト・モードを使用します。
  • サブクラス 0 を使ってトラブルシュートを行います。
  • トラブルシュート時はスクランブリングをディスエーブルします。

このトラブルシュート・ガイドですべての方法を網羅することはできませんが、JESD204Bリンクを使おうとしているエンジニアや学ぼうとしているエンジニアにとっては、役に立つ初歩的な基準となります。

ここに示したJESD204B仕様の概要は、このリンクについての実用的な情報で構成されています。この最新の高性能インターフェース規格を扱うエンジニアがトラブルシュートの必要に迫られた場合に、この資料が参考になり、問題解決の役に立てば幸いです。

Anthony DeSimone

Anthony DeSimone

アナログ・デバイセズの自動化、エネルギー、およびセンサー部門のアプリケーション・エンジニアとして、主に慣性センサーに関する業務を担当。ミックスド・シグナルのハードウェア設計やソフトウェア開発の経験も有し、 タフツ大学で MSEE を取得しています。

Michael Giancioppo

Michael Giancioppo

アナログ・デバイセズのアプリケーション・テクノロジー・グループに所属するアプリケーション・エンジニア・。1981年にマサチューセッツ大学アマースト校でBSEE/CSEを取得。