アプリケーションノート : 7 シリーズ FPGA XAPP524 (v1.) 212 年 8 月 7 日 シリアル LVDS 高速 ADC インターフェイス著者 : Marc Defossez 概要 このアプリケーションノートでは 7 シリーズ FPGA が備える専用の SelectIO テクノロジデシリアライザーコンポーネント (ISERDESE2 プリミティブ ) を使用し シリアル LVDS ( 低電力差動信号 ) 出力を用いてアナログデジタルコンバーター (ADC) と接続する方法を説明します リファレンスデザインは 高速シリアル LVDS 出力を備えた ADC へ Kintex -7 FPGA を接続する基本の LVDS インターフェイスとなっています はじめに 最近の高速 ADC は 12 14 または 16 ビットの分解能を提供し 通常はシングルパッケージ内に複数個のコンバーターが含まれています パッケージ内の各コンバーターはスタンドアロンモードで使用できますが 複数のコンバーターを組み合わせてインターリーブモードで使用することで 変換 ( サンプル ) 速度 2 倍または 4 倍にできます スタンドアロンモードとインターリーブモードのいずれの場合でも インターフェイス先のデバイスへの接続として 物理的シリアル出力を 1 つまたは 2 つ使用できます 1 組の差動出力はデータレーンと呼ばれています 1 データレーンを使用するということは コンバーターが 1 ワイヤモードで使用され 2 データレーンでは 2 ワイヤモードで使用されることを意味します すべてのデータ出力の組み合わせには 常に高速ビットクロックとサンプルレートフレームクロックがそれぞれ 1 つずつあります 1 ワイヤモードは SDR および DDR コンフィギュレーションモードで使用されますが 2 ワイヤモードは DDR モードのみです 1 ワイヤモードでは内部接続数を抑えることが可能で 通常はパッケージ内の各コンバーターに対して 1 データレーンを使用します また このモードでは 1 つのコンバーターのデータを出力したり またはインターリーブ方式で 2 つのコンバーターのデータを出力できます 1 ワイヤモードでの 2 つのコンバーターの例 一方のコンバーターはビットクロックの立ち上がりエッジでデータを出力し もう一方はクロックの立ち下がりエッジでデータを出力する ビットクロックレートが 2 倍になるため これはあまり使用されない 2 ワイヤモードでは ADC とインターフェイス先のデバイス間の接続数が 2 倍になりますが ビットクロックを 2 分周することで大きな利点を得ることができます シングルコンバーターの場合 ビットクロックの周波数を変更せずにサンプルクロックを 2 倍にしたり ビットクロックを 2 分周してサンプルクロックレートをそのまま保持できます どちらの場合でも データは 2 つのデータレーンでインターリーブ方式で出力されます FPGA の SelectIO テクノロジによるデシリアライザーコンポーネントは ISERDESE2 プリミティブとして構成されます 2 つの ISERDESE2 を SDR モードで使用して DDR 信号をキャプチャします 一方の ISERDESE2 は ビットクロック (CLK) の立ち上がりエッジで もう一方の ISERDESE2 は立ち下がりエッジでクロックされます この方法では 各 ISERDESE2 が 8 ビットをキャプチャできるため 最大 16 ビットをキャプチャ可能です Copyright 212 Xilinx, Inc. Xilinx, the Xilinx logo, Artix, ISE, Kintex, Spartan, Virtex, Vivado, Zynq, and other designated brands included herein are trademarks of Xilinx in the United States and other countries. All other trademarks are the property of their respective owners. XAPP524 (v1.) 212 年 8 月 7 日 japan.xilinx.com 1
FPGA のリソース FPGA のリソース 7 シリーズ FPGA には HR (High Range) バンクと HP (High Performance) バンクがあります ADC インターフェイスで重要な点は ISERDESE2 ( 図 1) と IDELAYE2 ( 図 2) コンポーネントは HR と HP の両バンクで利用できるということです HR バンクは 2.5V の LVDS を HP バンクは 1.8V の LVDS をサポートします (V CCO レベル ) これらの HR/HP I/O バンク および ISERDESE2/IDELAYE2 コンポーネントに関する詳細は 7 シリーズ FPGA SelectIO リソースユーザーガイド (UG471) を参照してください X-Ref Target - Figure 1 SHIFTIN1 SHIFTIN2 OFB D DDLY CE1 CE2 RST BITSLIP CLK CLKB CLKDIV CLKDIVP DYNCLKDIVSEL DYNCLKSEL OCLK OCLKB SHIFTOUT1 SHIFTOUT2 O Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 ISERDESE2 INTERFACE_TYPE : string := "NETWORKING"; SERDES_MODE : string := "MASTER"; DATA_WIDTH : integer := 8; DATA_RATE : string := "DDR ; OFB_USED : string := "FALSE"; IOBDELAY : string := "NONE"; NUM_CE : integer := 2; DYN_CLKDIV_INV_EN : string := "FALSE"; DYN_CLK_INV_EN : string := "FALSE"; INIT_Q1 : bit := ''; INIT_Q2 : bit := ''; INIT_Q3 : bit := ''; INIT_Q4 : bit := ''; SRVAL_Q1 : bit := ''; SRVAL_Q2 : bit := ''; SRVAL_Q3 : bit := ''; SRVAL_Q4 : bit := '' 図 1 : ISERDESE2 X524_1_12912 X-Ref Target - Figure 2 DATAIN DATAOUT IDATAIN CNTVALUEIN [4:] CE CNTVALUEOUT [4:] INC LD LDPIPEEN REGRS C CINVCTRL ISERDESE2 CINVCTRL_SEL : string := FALSE ; DELAY_SRC : string := IDATAIN ; HIGH_PERFORMANCE_MODE : string ;= FALSE ; IDELAY_TYPE : string := FIXED ; IDELAY_VALUE : integer := ; PIPE_SEL : string := FALSE ; REFCLK_FREQUENCY : real := 2.; SIGNAL_PATTERN : string := DATA 図 2 : IDELAYE2 X524_2_12912 ADC LVDS インターフェイス 多くの ADC は シリアライズされた LVDS インターフェイスを使用して コンポーネントパッケージ内の各 ADC で 1 つまたは 2 つの LVDS チャネルを介して FPGA へデジタルデータを送ります 図 3 に アナログ入力信号 入力クロック ビットクロック およびフレームクロックを示します レイテンシ期間の終了後 アナログ信号の Sample N がデジタル形式に変換されて ADC 出力に現れます アナログ信号は 12 ビットの ADC 分解能でデジタル シリアルデータストリームに変換され 高速ビットクロックおよび同期 ( フレーム ) クロックと共に現れます XAPP524 (v1.) 212 年 8 月 7 日 japan.xilinx.com 2
ADC LVDS インターフェイス X-Ref Target - Figure 3 Input Signal Sample N t A Input Clock Bit Clock CLKM CLKP _P _M Latency Clocks T S = 1 ± F S Output Data Frame Clock DX_P DX_M FCLK_M FCLK_P D11 D1 D9 D8 D7 D6 D5 D4 D3 D2 D1 D D11 D1 D9 D8 D7 D6 D5 D4 D3 D2 D1 D Sample N 1 図 3 : シングルチャネルのコンバーターのセットアップ Sample N X524_3_32512 フレームクロック (FCLK) は ADC サンプルクロックがデジタル化されて位相シフトされた信号です FCLK はシリアルデータと位相が揃っており すべてのサンプルデータビットは 1 つのフレームクロック周期内に収まります 高速ビットクロック () は データおよび FCLK に対して 9 位相シフトした信号として現れます 1 ワイヤモードの場合 パッケージ内のコンバーターと同数のデータチャネルがあります 2 ワイヤモードの場合 データは各コンバーターで 2 つのデータチャネルに分かれます の周波数は ADC の分解能およびサンプルレートで決まります したがって ADC は パッケージ内の各コンバーターに対して 1 つまたは 2 つのデータレーンを提供しますが DCL と FCLK については 1 つずつしか提供しません LVDS I/O の最大速度は が FPGA ロジック内または ISERDESE2 内の FF をトグルできる最大速度で決まります したがって 1 ワイヤインターフェイスのシングルチャネル LVDS ADC の最大サンプル速度には制限があります 式 1 から 1 ワイヤ DDR モードのシングル ADC のビットクロックレートが求められます たとえば 16 ビット 1 ワイヤモード 15Ms/s デバイスのビットクロック周波数は (16 15) / 2 = 1,2 MHz となり 2.4Gb/s ビットレートに相当します 物理的に 1 データレーン (1 ワイヤ ) でこれらのクロックレートは すべての FPGA スピードグレードの LVDS I/O に対して高すぎます 2 ワイヤインターフェイスソリューションでは 各 ADC で 2 つの物理的データレーン (2 ワイヤ ) を使用します これにより データスループットレートは 2 倍になり ビットクロックレートを抑えることができます --------------------------------------------------------------------------------- ADC_resolution Sample_rate = 2 1 (wire) bit_clock (MHz) 式 1 シングルデータレーン 16 ビット 15Ms/s ADC を 2 ワイヤモード ( 各 ADC に対して物理的に 2 つのレーンを使用 ) で使用すると ビットクロックレートは 6MHz になります ( 式 2) このような高速 ADC は FPGA へ接続できます --------------------------------------------------------------------------------- ADC_resolution Sample_rate = 2 2 (wire) bit_clock (MHz) 式 2 XAPP524 (v1.) 212 年 8 月 7 日 japan.xilinx.com 3
ADC LVDS インターフェイス 図 4 に 1 ワイヤインターフェイスモードでの 14 ビット /16 ビット ADC のタイミング図を示します 図 5 には 2 ワイヤインターフェイスモードでの 14 ビット /16 ビット ADC のタイミング図を示します データは LVDS チャネルを介して ADC から転送され MSB または LSB 順にビット単位またはバイト単位で揃えられます X-Ref Target - Figure 4 Input Clock CLKP Frame Clock FCLKP at 1X 16X Serial Factor Bit Clock 8X P Output Data DX_P, DX_M (D) (D1) D13 (D2) D12 (D3) D11 (D4) D1 (D5) D9 (D6) D8 (D7) D7 (D8) D6 (D9) D5 (D1) D4 (D11) D3 (D12) D2 (D13) D1 () D () (D) (D1) D13 (D2) Sample N Data bit in MSB first mode Data bit in LSB first mode Sample N+1 X524_4_32512 図 4 : 1 ワイヤモードでの 14 ビット /16 ビット ADC - 4x ビットクロック出力の波形 X-Ref Target - Figure 5 FCLK Bytewise Mode DxP, DxM Dx1P, Dx1M D1 (D6) D9 () D (D7) D8 () D7 (D) (D8) D6 (D1) (D9) D5 (D2) D13 (D1) D4 (D3) D12 (D11) D3 (D4) D11 (D12) D2 (D5) D1 (D13) D1 (D6) D9 () D (D7) D8 () D7 (D) D (D8) D6 (D1) D (D9) Bitwise Mode DxP, DxM Dx1P, Dx1M D2 (D12) D9 (D14) D () D8 () (D) (D8) D12 (D2) D13 (D9) D1 (D4) D11 (D1) D8 (D6) D9 (D11) D6 (D8) D7 (D12) D4 (D1) D5 (D13) D2 (D12) D3 (D14) D () D1 () (D) (D8) D12 (D2) D14 (D9) X524_5_32512 図 5 : 2 ワイヤモードでの 14 ビット /16 ビット ADC - 4x ビットクロック出力の波形 1 ワイヤインターフェイスは 2 ワイヤインターフェイスよりも速度の問題に直面し易くなります 1 ワイヤモードのリファレンスデザインでは 最大 16 ビットの ADC 分解能をサポートし サンプリングレートは最大約 85Ms/s です 2 ワイヤモードのリファレンスデザインがサポートする ADC 分解能は 1 ワイヤモードと同じですが サンプリングレートは最大 16 Ms/s まで対応可能です リファレンスデザインは 柔軟性に優れた完全なモジュールデザイン手法を取り入れているため 周波数 分解能 またはチャネル数 あるいはこれらをすべて変更できます 注記 : ADC の設定は SPI から制御およびプログラムできます このアプリケーションノートでは SPI について説明していませんが リファレンスデザインには SPI リンク経由で ADC をプログラムできるように UART-USB リンクを介して FPGA を PC へ接続するサンプルデザインが含まれています XAPP524 (v1.) 212 年 8 月 7 日 japan.xilinx.com 4
ビットクロック ビットクロック ビットクロックレートは 式 1 から求められます 16 ビット 2 Ms/s の 1 ワイヤ ADC モードの場合 DDR ビットクロックレートは 1,6MHz です 注記 : 式 1 を用いて Adc_resolution および Bit_Clock からサンプルレートを計算する場合 ADC が 2 ワイヤモードのときは Wire_Interface を 2 に 1 ワイヤモードのときは 1 に設定してください 1 ワイヤの ADC ビットクロックレートは 7 シリーズ FPGA の CC ( クロック兼用 ) 入力ピンおよびこのデザインで使用されるリージョナルクロックツリーには速すぎます したがって ADC は 2 ワイヤモードで使用します 2 ワイヤモードの場合 ADC のデータは各コンバーターで 2 つの LVDS チャネルに分かれます つまり ビットクロックが 2 分周されます たとえば 2 ワイヤ ADC モードでコンバーターが 16 ビット 2Ms/s の場合 ビットクロックレートは 8MHz となります 表 1 に インターフェイスのワイヤ数 ADC 分解能別のビットクロック およびサンプルクロックのパラメーター別の関係を例として示します 式 1 を使用すると 既知のパラメーター値から値を簡単に計算できます 表 1 : ADC パラメーターの関係 分解能 ( ビット ) 12 14 16 サンプルレート (MHz) インターフェイスの種類 ビットクロック (MHz) コメント 8 1 ワイヤ 48 可 125 2 ワイヤ 375 可 125 1 ワイヤ 875 不可 (2 ワイヤモードが必要 ) 15 2 ワイヤ 525 可 125 2 ワイヤ 5 可 2 2 ワイヤ 8 可 ( 最速のスピードグレードが必要 ) 注記 : 14 ビット分解能の ADC は 16 ビット出力モードで動作する場合があります このとき 2 ビットのデータは ダミービットあるいはオーバーフローを示すために使用されます クロックレートの計算では 分解能パラメーターに 16 ビットを使用してください ADC から提供されるビットクロックは データ信号およびフレーム信号に対して 9 位相がずれています パッケージパッドから各 ISERDESE2 の D 入力までの遅延はすべての信号で同じになるため 設計者は PCB レイアウトを適切に設計して FPGA へ到達するまで常にこの位相関係を保つようにします FPGA グリッド内では配線やクロックバッファーの遅延があるため データ信号およびフレーム信号をキャプチャできるように の位置を調整する必要があります ( 図 6) XAPP524 (v1.) 212 年 8 月 7 日 japan.xilinx.com 5
ビットクロック X-Ref Target - Figure 6 IBUFDS SIGNAL_PATTERN = CLOCK IDELAYE2 IDATAIN DATAOUT IntBitClk IBUFIO BitClk_MonClkOut Clock Capable I/O C CE INC RST BUFR BitClk_RefClkOut BitClk ISERDESE2 Master-Slave SDR 8-bit BitClk_MonClkIn BitClk_RefClkIn D ISERDESE2 CLK CLKDIV Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Bit Clock Phase Alignment State Machine CLK DONE BitClk_MonClkOut BitClk_RefClkOut BitClk_MonClkIn BitClk_RefClkIn X524_6_6412 図 6 : ビットクロックのアライメントセットアップ ADC からの は さまざまなモードで使用される IDELAYE2 を介して BUFIO および BUFR の入力へ配線されます ( 図 6) は BitClk_MonClk ( 位相が揃えられた ) になり BitClk_RefClk は再構築されたフレームクロック (FCLK) になります また は IDELAYE2 と同じ I/O タイルにある ISERDESE2 の D 入力へもデータとして適用されます BitClk_MonClk と BitClk_RefClk は インターフェイスで使用されるすべての ISERDESE2 コンポーネントの CLK および CLKDIV 入力へ配線され また を使用する ISERDESE2 へデータ入力として配線されます 基本的に はその遅延バージョンをクロックとして使用する ISERDESE2 で それ自体をレジスタします これによって 設計者は の立ち上がりおよび立ち下がりエッジの位置を特定できるため ビットクロック位相アライメントステートマシンを用いて クロックサイクルのどこにでも ISERESE2 の CLK および CLKDIV 入力クロックを位置させることができます BitClk_MonClkOut および BitClk_RefClkOut は 高い階層レベルで ISERDESE2 すべての CLK および CLKDIV 入力と接続しており またビットクロックアライメント階層レベルの CLK および CLKDIV 入力へも接続しています このレベルの CLK 入力および CLKDIV 入力は BitClk_MonClkIn および BitClk_RefClkIn です 注記 : この資料内の BitClk_MonClk および BitClk_RefClk は BitClk_MonClkOut から BitClk_MonClkIn 間 および BitClk_RefClkOut から BitClk_RefClkIn 間の接続をそれぞれ示しています ビットクロック位相アライメントステートマシンは ISERDESE2 の出力およびデシリアライズされパラレルで取得されたクロックビットをモニタリングします 取得したすべてのビットが同じ ( すべて またはすべて 1) 場合 ステートマシンは IDELAY2 をインクリメント / デクリメントして内部クロックと外部クロックの位相を揃えます 遅延タップ数をインクリメントまたはデクリメントすることで ISERDESE2 の CLK に対する遅延が増減します XAPP524 (v1.) 212 年 8 月 7 日 japan.xilinx.com 6
ビットクロック ステートマシン動作の制御 ビットクロックアライメントステートマシンは CLKDIV (BitClk_RefClk) の立ち上がりエッジで動作し プリセットされたタップ 16 の IDELAYE2 遅延から開始します 7 シリーズ FPGA では IDELAYCTRL コンポーネントへ適用する基準周波数が 2MHz (±1 MHz) の場合 IDELAYE2 遅延ラインは 78ps 単位で最大 32 タップの遅延が可能です 基準周波数が 3MHz (±1 MHz) のときのタップ遅延は 57ps です (3MHz は スピードグレードが -2 で 3 コンポーネントの場合のみ ) この場合 各 IDELAYE2 の合計遅延は 2.5ns となります MMCME2 および IDELAYCTRL がロックされて準備が整った状態になると ステートマシンは の位置の検出を開始します ステートマシンの動作について説明する前に 次のことを知っておく必要があります は FCLK およびデータ信号に対して 9 位相がずれています ADC によって はデフォルトで有効なデータアイの中央に位置します FPGA への入力で データおよびフレーム信号が ISERDESE2 の D 入力へ配線され ビットクロックが BUFIO および BUFR の入力へ配線されます この場合 が BUFIO/BUFR を通って ISERDESE2 の CLK および CLKDIV 入力へ配線されると データおよびフレーム信号とは異なるスキューが生じます クロックはデータ有効アイの中央にデフォルトで位置するため それを変更する必要はありません つまり を元の位置に戻すだけで十分です ( 図 7) には若干のジッターがあります これは高精度のサンプルクロックから派生しているため ジッターはわずかです 78ps 単位で 32 タップの場合 IDELAYE2 は ~2.5ns (2.496ns) です (IDELAYCTRL の基準クロックが 2MHz の場合 ) つまり 4MHz でジッターのない完璧なクロックをサンプルできることになりますが 実際にそのようなジッターのないクロックは存在しません 35ps のジッターを考慮した場合 IDELAYE2 は特別な手法を使用せずに 47MHz のクロックをサンプル可能です クロックの位置をデータ有効アイの中央に再調整する必要がないため 2 つのクロックエッジの検出は不要です ビットクロックは すでにデータ有効アイの中央に位置しています 内部ビットクロックの位相が揃えられる外部ビットクロックのエッジは 必ずレジスタされる必要があります これは データをキャプチャする ISERDESE2 の後ろに配置されているマルチプレクサーの設定に必要です XAPP524 (v1.) 212 年 8 月 7 日 japan.xilinx.com 7
ビットクロック X-Ref Target - Figure 7 Position when entering the FPGA Data and Frame Data and Frame Data signal skew until ISERDESE2.D BitClk_MonClk BitClk_MonClk = delayed Clock skew though BUFIO until ISERDESE2.CLK Align the rising edge to one of the two edges X524_7_12912 図 7 : BUFIO および BUFR を通るクロックスキュー ケース 1 サンプリングは ジッター ( クロックの切り替わり ) 領域で行われ の 1/2 周期は 2.5ns です ( 図 8 の波形 A) すべての位相アライメント周期の開始点で ステートマシンは後方へシフトし ( タップ数の減少 ) 各シフトごとに ISERDESE2 の出力を測定して開始地点に戻ります 3 タップ分後ろへシフトすると 234ps となり 468ps ジッターに相当します これは 安定したクロックレベルステートを測定するのに十分です クロックの 2 つのステートが交差する領域で がサンプルされる場合 ジッターの影響によって ISERDESE2 の出力は常に異なります この際 BitClk_MonClk はすでに と位相が揃っています この BitClk_MonClk クロックの位相が の立ち上がりエッジまたは立ち上がりエッジのいずれに揃っているのかを把握しておくことが重要です デクリメント後 ISERDESE2 出力がすべて 1 になると BitClk_MonClk の位相は の立ち下がりエッジに揃っていることになります 反対に ISERDESE2 出力がすべて のときは BitClk_MonClk の位相が の立ち上がりエッジに揃っていることになります BitClk_MonClk クロックの位相が揃う のエッジは マルチプレクサーの設定に使用されるため アプリケーションに伝える必要があります 開始時点の ISERDESE2 の出力がすべて 1 で デクリメント後の ISERDESE2 の値が安定しない またはすべて になった場合 BitClk_MonClk クロックの位相は の立ち上がりエッジに揃っています ( 図 8 の波形 B) 開始時点の ISERDESE2 の出力がすべて で デクリメント後の ISERDESE2 の値が安定しない またはすべて 1 になった場合 BitClk_MonClk クロックの位相は の立ち下がりエッジに揃っています ( 図 8 の波形 C) XAPP524 (v1.) 212 年 8 月 7 日 japan.xilinx.com 8
ビットクロック 図 8 の波形 D は 図 8 の波形 C の反対です 最初は出力がすべて 1 で安定していますが デクリメント後の出力は不安定 またはすべて になります つまり の立ち上がりエッジが検出されます 開始時の と BitClk_MonClk は正確には位相が揃っていないため IDELAYE2 を元の開始位置へ戻すことはできません X-Ref Target - Figure 8 A) Start BitClk_MonClk B) Sample on the rising edge 13 1 16-3 taps From Q[8:1] unstable to Q[8:1] stable at. Rising edge found Start X524_8A_3212 BitClk_MonClk C) Sample on the rising edge Start 13 1 16-3 taps From Q[8:1] unstable to Q[8:1] stable at 1. Falling edge found X524_8B_3212 BitClk_MonClk Sample on the rising edge 13 1 16-3 taps From Q[8:1] stable at to Q[8:1] unstable or stable at 1. Falling edge found D) Start X524_8C_3212 BitClk_MonClk Sample on the rising edge 図 8 : サンプルエッジを直接検出 (A B C および D) 13 1 16-3 taps From Q[8:1] stable at 1 to Q[8:1] unstable or stable at. Rising edge found X524_8D_3212 XAPP524 (v1.) 212 年 8 月 7 日 japan.xilinx.com 9
ビットクロック ケース 2 の 1/2 周期は 2.5ns で 開始時点で ISERDESE2 の出力は安定しています ( すべて 1 またはすべて ) ( 図 9) 基本的に ケース 1 と同じですが 後方へシフトした場合 (IDELAYE2 の減少 ) ISERDESE2 の出力に変化がなく 値はすべて 1 またはすべて のまま変わりません は ステートが変化する領域から離れた位置でサンプルされます これら最初のステップの後 ISERDESE2 の出力が不安定になるまで IDELAYE2 のタップが増加して再び安定しますが 出力は反対になります つまり エッジが検出されたことを意味します ISERDESE2 の出力がすべて で不安定な領域を過ぎた後にすべて 1 を示した場合 立ち上がりエッジが検出されています 一方 すべて 1 の出力からすべて の出力になった場合は 立ち下がりエッジが検出されたことを示します ISERDESE2 の出力が不安定な動作を示した 2 つの領域の中間地点にクロックを位置させます BitClk_MonClk クロックがどの エッジに揃っているかを把握することは データを正しくキャプチャする上で非常に重要です この情報に基づいて ISERDESE2 の後に配置されているマルチプレクサーを設定します X-Ref Target - Figure 9 Start BitClk_MonClk Sample on the rising edge 13 1 16 x 3 2 Final point 4 図 9 : 一方向のサンプルエッジアライメント X524_8_3212 ケース 3 の 1/2 周期は 2.5ns で 開始時点で ISERDESE2 の出力は安定しています ( すべて 1 またはすべて ) ( 図 1) ケース 1 およびケース 2 と同様に 最初のステップで後方へシフトしてもクロックエッジは検出されず IDELAYE2 のタップを増加してもエッジはありません IDELAYE2 の最後のタップ 31 をレジスタし タップ 32 以降に進みます タップ へ戻り タップ数を増加していきます エッジが検出されると 両クロックが揃います 立ち上がりまたは立ち下がりのいずれのエッジであるかを検出する方法は 1 ページの ケース 2 と同じです XAPP524 (v1.) 212 年 8 月 7 日 japan.xilinx.com 1
フレームクロック X-Ref Target - Figure 1 Start BitClk_MonClk 4 x Final point 5 1 16 6 2 31 13 3 Sample on the rising edge 図 1 : 方向転換するサンプルエッジアライメント X524_1_3212 ケース 4 の 1/2 周期は 2.5ns よりもはるかに長く 安定したレベルでサンプルされています 開始点から IDELAYE2 の最終地点に到達し 方向転換してもエッジは検出されません ( 図 11) の周期は IDELAYE2 のスパンよりも長いことになります したがって データビットの遅延は IDELAYE2 のスパンよりもはるかに長くなります ユーザーは BitClk_MonClk クロックを IDELAYE2 タップ へ移動する必要があります のステート ( すべて 1 またはすべて ) をレジスタします 注記 : このアプリケーションノートでは高速 ADC を対象としているため 長いビット遅延に対応する低速 ADC については言及していません X-Ref Target - Figure 11 Start BitClk_MonClk Sample on the rising edge 13 4 3 5 1 16 2 31 図 11 : 予想されたサンプルエッジアライメント X524_11_3212 フレームクロック ADC からの LVDS フレームクロックは データ信号と位相が揃う低速動作クロックです このクロックは 既知で一定のパターンを伴うサンプルクロックのデジタルバージョンです パターンには インターフェイスに基づいて異なる数のデータビットが含まれます ( 図 4 および図 5) デザインでは FPGA 内でキャプチャされたデータをトレーニングおよび揃えるためにフレームクロックが使用されます 図 12 に 基本的なフレーム検出回路のブロックレベル図を示します XAPP524 (v1.) 212 年 8 月 7 日 japan.xilinx.com 11
フレームクロック X-Ref Target - Figure 12 FrameIn_p FrameIn_n [15:8] ISERDESE2 Multiplexer ISERDESE2 [7:] CLK CLKDIV RqrdPattern BitSlip_p BitSlip_n Captured Pattern SwapMux Frame Alignment State Machine MsbRegEna LsbRegEna X524_12_6712 図 12 : 基本的なフレーム検出回路 2 つの ISERDESE2 コンポーネントは NETWORKING SDR ( シングルデータレート ) モードで使用されます 各 ISERDESE2 は 位置調整されたビットクロック () の異なるエッジでクロックさます ビットクロック () が正しく揃えられると フレームクロックパターンの検出が開始されます 2 つの ISERDESE2 の出力は 予想されるフレームクロックパターンを示す固定値と比較されます この固定値が ISERDESE2 の出力と一致しない場合は フレーム信号とすべてのデータ信号に対して Bitslip の動作が開始します Bitslip は フレームクロックの ISERDESE2 コンポーネントの出力と予想されたフレームクロックのパターンが一致するまで適用されます この出力がプログラムされたパターンと一致すると フレームクロックとデータの両方に対する Bitslip の動作が停止します これで FPGA 内のデータおよびフレームクロック信号が有効と見なされます ただし これらは常に有効であるとは限りません Bitslip 動作が複数回実行された後 ISERDESE2 の構造上 出力は前のサイクルで現れた値と同じ値を示すことができるようになります トレーニングパターンがデータ内で実行されるような通常のソース同期デザインでは これは問題になりません 問題となるのは 同期にもかかわらず 追加で Bitslip 動作が必要な場合のみです 一般的な ADC インターフェイスでは トレーニングパターンを使用せずにフレームの同期化を実行するため 同じ値を 2 回出力する ISERDESE2 によって同期化プロセス全体に問題が生じます 予防措置を講じずに重複する出力が現れた場合 フレームキャプチャ回路は実際に同期していないフレームパターンと同期しているかのように動作します この間違ったフレーム同期による結果は キャプチャしたデータ内に影響します データをキャプチャする ISERDESE2 は フレームをキャプチャする ISERDESE2 と共にシフトされます このため フレームが間違った位置で同期と見なすと データ値が不正になります したがって フレームアライメント回路では この問題を回避するために重複ニブル検出ステートマシンを採用しています XAPP524 (v1.) 212 年 8 月 7 日 japan.xilinx.com 12
フレームクロック フレームパターンのキャプチャ フレームクロックは 一定のデータパターンを繰り返すデータストリームとしてキャプチャされます フレームチャネルとデータチャネルは位相が揃っているため フレームクロックはトレーニングパターンとしてまたは実際のデータレーン用の同期レーンとしての使用に適しています キャプチャしたパターンが既知のパターン ( 通常は必ずある ) と一致するように調整できる場合 受信データは確実に正しいフォーマットになります ADC インターフェイスが 2 ワイヤモードで動作する場合 フレームパターンは図 13 (16 ビット DDR 2 ワイヤ ) のようになります キャプチャしたフレームデータを揃えるインターフェイスでは固定パターンが検出されるため データチャネルでも正しいデータが受信されます X-Ref Target - Figure 13 Data D12 D1 D8 D6 D4 D2 D Data D13 D11 D9 D7 D5 D3 D1 FCLK 1 1 1 1 図 13 : フレームクロックのパターン X524_13_3212 DDR 入力は SDR モードに設定された 2 つの ISERDESE2 コンポーネントでキャプチャされます 開始時点では 最初にキャプチャされるビットは不明です 一方の ISERDESE2 が CLK の立ち上がりエッジで もう一方の ISERDESE2 が CLK の立ち下がりエッジでデータをキャプチャします 有効な Bitslip 動作の実行には まず 2 つのコンポーネントのいずれか一方を対象とします 2 つの ISERDESE2 コンポーネントでキャプチャされた値が予想フレームパターンと一致しない場合 もう 1 つの ISERDESE2 に Bitslip 動作を適用します これは ピンポン型 Bitslip 動作として考えることができます キャプチャしたデータが予想フレームパターン値と一致する場合は Bitslip の動作が停止し 正しいフレームとデータ値がキャプチャされます フレームキャプチャロジックは データキャプチャロジックと同じ構成です つまり ISERDESE1 の後にレジスタ マルチプレクサー レジスタ そしてワードアセンブルレジスタが配置されて アプリケーションでフレームパターンがチェックできるようになっています このロジックは必ずしも必要ではありません 必須ロジックは フレームステートマシンのみです Bitslip 動作 図 14 に Bitslip 動作を実行せずにビットをキャプチャする場合を示しています CLK によって 8 ビットがシリアル - パラレルレジスタにキャプチャされると データは CLKDIV でパラレル出力レジスタ (Q 出力 ) へ転送されます 8 ビットをキャプチャするために 正しいデータが適切なタイミングでロードされるように CLKDIV の周波数は CLK の 1/4 となります 図 15 (SDR 動作 ) に示すデータキャプチャは ビット値 7 から開始しています これらのビットは CLK のクロックレートでシリアル - パラレルレジスタへシフトされます 垂直方向に積み重なったブロックがこのレジスタを表しています これらのブロックでは ビット値 7 が最初にシフトされ 一番下に配置されて終わっています 最後にシフトされたビット値は D です 次の CLKDIV の立ち上がりエッジでは シリアル - パラレルレジスタのコンテンツすべてがパラレル出力ストレージレジスタへシフトします つまり このレジスタには DCBA987 が含まれるようになります 続けて新しいデータがシリアル - パラレルレジスタへシフトして その後パラレル出力レジスタへ転送されます このため CLKDIV の立ち上がりエッジごとに CLK の立ち上がりエッジでシリアル - パラレルレジスタへシフトした 8 ビットが ISERDESE2 出力に現れます XAPP524 (v1.) 212 年 8 月 7 日 japan.xilinx.com 13
フレームクロック X-Ref Target - Figure 14 Assume the ISERDESE2 captures 8-bit SDR data X W T S R P N M L K H G F... E D C B A 9 8 7 6...... X W T S R P...... X W T S R P N M L K H G F E N M L K H G F E Serial-to-Parallel D C B A 9 8 7 D C B A 9 8 7 Parallel CLK CLKDIV X524_14_6712 図 14 : Bitslip 動作なしのビットキャプチャ 注記 : 図 14 では CLK の立ち上がりエッジが 8 回到達した後 CLKDIV の立ち上がりエッジでデータがパラレルレジスタへ転送されます Bitslip を使用すると CLK のクロックレートでシリアル - パラレルレジスタにキャプチャされたデータが CLK の 1 サイクル遅れてパラレルレジスタへ転送されます その結果 シリアル - パラレルレジスタによって 1 ビット余計にレジスタへシフトするため 反対側の端にある 1 ビットが失われます つまり パラレルレジスタにキャプチャされたデータは 1 ビットシフトした状態で現れます 図 15 は図 14 と同じ動作ですが 2 番目のバイトがシリアル - パラレルレジスタにキャプチャされるときに Bitslip 動作が実行されます このため 8 番目のビットの受信後ではなく 9 ビットの後にパラレルレジスタへデータが転送されます パターンは 1 ビットシフトした状態で現れます シリアル - パラレルレジスタの一番下にある最初にシフトしたビットが失われます X-Ref Target - Figure 15 Assume the ISERDESE2 captures 8 bits of data X W T S R P N M L K H G F E D C B A 9 8 7 6 P N M L K H G F Because of the Bitslip E operation, one extra bit is shifted into the serial-to-parallel register (dark gray), and one bit is lost at the other end (black). P N M L K H G F The ISERDESE2 output now looks like this. CLK D C B A 9 8 7 D C B A 9 8 7 CLKDIV X524_15_6712 図 15 : Bitslip を使用したビットキャプチャ ISERDESE2 出力は同じデータを二度出力する場合があります この動作は データトレーニングパターンで同期化を行う一般的なソース同期インターフェイスには影響を与えません トレーニングパターンへの同期化に遅延が生じます 一方 ADC インターフェイスは 通常トレーニングパターンを使用しないため 大きな影響を受けます XAPP524 (v1.) 212 年 8 月 7 日 japan.xilinx.com 14
フレームクロック ADC インターフェイスは フレームクロック信号を使用して同期化されます 同期している間 その他すべての信号およびデータ入力はフレームパターンと共にシフトします したがって フレームパターンと同期しているとフレーム回路が誤って判断した場合 キャプチャしたデータが不正となります ISERDESE2 の Bitslip 動作は両方のコンポーネントに対して同時に実行されないため 一方の ISERDESE2 は もう一方の ISERDESE2 で Bitslip が実行される前に同じデータを二度出力する可能性があります この場合 同期化は事実上不可能です 図 16 にこれらの動作を示します 複数回 Bitslip 動作を実行した後 ISERDESE2 コンポーネントの出力は 3 と E となり 結果はバイト AD です 11_111 = 1 1 1 1 1 次の出力は C と 1 で バイト 52 となります _p で示されている ISERDESE2 が Bitslip 要求を受信し Bitslip 動作を実行します その結果は 1 と E で A9 となるはずですが SERDESE2 が C を 2 回出力して 結果のバイトは F8 (C と E) となっています 受信したバイトのニブルは Bitslip 要求を受信すべきときに受信しなかったため CLKDIV の 1 サイクル分遅延し 結果として混在したバイトとなっています 次の CLKDIV エッジでは 先の Bitslip 動作が ISERDESE2 出力で実行され 結果は 1 と 1 つまり 3 となります X-Ref Target - Figure 16 T X O FrmClkReSync /IntFrmSrdsOut_Isrds_p IntfrmSrdsOut_Isrds_n IntFrmSrdsOut IntFrmDat F 3 C 1 E 1 E 1 E 1 E 8 7 E 1 E 1 E 1 F F D5 2A AD 52 F8 3 FC 3 1 56 AB 54 AB 5 AA 7F F8 7 F8 52 A9 56 1 A9 FC 1 FE IntFrmDatSwp AA 7 F8 7 F8 52 1 A9 56 A9 FC 1 F FrmClkDat AA IntFrmEqu_d Start of explication 図 16 : 出力データの重複 X524_16_32612 重複ニブルの検出 先ほど説明した ISERDESE2 が同じデータを二度出力して何もなかったかのように動作を継続するといった問題を回避するために 小規模なステートマシンが用意されています ISERDESE2 の出力データは複数のレジスタを通って渡されます ISERDESE2 の前の出力と現在の出力が 1 つ目のレジスタの前後で比較されます ISERDESE2 が同じデータを二度出力する場合 前のデータと現在のデータは同じです この機能は デザイン内にあるコンパレータで実行されます 重複ニブルが検出されると その他のレジスタからデータの選択が行われて レジスタバンクの出力が連続したデータストリームを示します XAPP524 (v1.) 212 年 8 月 7 日 japan.xilinx.com 15
データ このアプリケーションノートに付属するリファレンスデザインには 全体の動作を示す MS Excel スプレッドシートが含まれています 図 17 に レジスタバンクがどのように構成されているかを示します X-Ref Target - Figure 17 DataIn IntRegOutOne IntSrlOut DataOut 5 addr SRLC32E FrmClkDiv IntAddr[4:] IntRstln_d IntRegOutOne DataIn COMPARE IntEqu State Machine IntAddr[4:] 図 17 : 重複ニブルレジスタバンク X524_17_32612 レジスタバンクは 1 つの SRL シフトレジスタで構成されています このシフトレジスタを使用することで レジスタバンクにあるレジスタの 1 つの出力を選択して それをマルチプレクサーを通して渡すことができます これは まさに重複ニブル機能に必要な要素です SRL はさらに デザインをいくつかの CLB に完全に収めることができます データ ADC は デジタル化したデータを 1 ワイヤモードまたは 2 ワイヤモードで提供します 1 ワイヤのインターフェイスでは 1 つの差動 LVDS ペアを用いてデータを FPGA へ送信しますが 2 ワイヤのインターフェイスでは 1 つのコンバーターに対して 2 つの LVDS チャネルを使用します コンバーターは 1 つまたは 2 つの LVDS データペアでデータを伝送する場合 異なるビットまたはバイト構成を使用します データは MSB または LSB から順に ビットまたはバイト方向に配列できます 多くの ADC は これらのモードを選択して使用するために SPI インターフェイスを介して設定されます 可能な限り多くの ADC に対応するため これらのパラメーターを利用するようにデータインターフェイスを設定することもできます 基本のデータインターフェイスは 2 つの LVDS データ入力を備えています したがって 2 ワイヤモードでシングルデータチャネル または 1 ワイヤモードでデュアルデータチャネルとして設定できます 基本的なインターフェイスのデータ出力は 1 ワイヤまたは 2 ワイヤの選択に従います 1 ワイヤモードの場合 32 ビット出力バスが 2 つの 16 ビットバスに分割されます 下位の 16 ビットがチャネル 上位の 16 ビットがチャネル 1 となります 2 ワイヤモードの場合 32 ビット出力は上位と下位の 16 ビットセグメントで 1 つのデータを表します リファレンスデザインでは 上位 16 ビット (MSB) が使用されています ( 図 18) XAPP524 (v1.) 212 年 8 月 7 日 japan.xilinx.com 16
データ X-Ref Target - Figure 18 DataIn_1_p DataIn_1_n DataIn p/n DataIn n BitSlip_p BitSlip_n SwapMux CLK CLKDIV ISERDESE1 ISERDESE1 ISERDESE1 ISERDESE1 Multiplexer Multiplexer Bit and Byte Ordering, MSB and LSB Ordering, etc. Parameters CLKDIV LsbRegEna MsbRegEna MSB LSB MSB LSB [31:24] [23:16] [15:8] [7:] [15:] [15:] DataOut [31:] X524_18_4912 アライメントは フレームクロックをパターントレーニングデータとして使用して行われます フレームクロックは ADC からのデータと位相が揃います フレームクロックが受信されてフレームパターンが認識されるとき 受信したデータはフレーム信号と共にシフトされるため 同様に位相が揃います データ反転とビットスワップのマルチプレクサー 注目すべき点 図 18 : 基本データインターフェイスのブロック図 この機能は デザイン内のフレームキャプチャと比較部分で利用でき キャプチャしたフレームパターンをアプリケーションへ示すために使用します ADC からの DDR データは SDR モードの 2 つの ISERDESE2 で受信されます この構成は FPGA ロジック (IBUFDS_DIFF_OUT) への差動出力と共に差動入力バッファーを使用する場合に可能です ISERDESE2 のシリアル - パラレルレジスタ内のデータは CLK の立ち上がりエッジと立ち下がりエッジでキャプチャされます 偶数ビット ( 2 4 6 8 1 12 14) は CLK の立ち上がりエッジでキャプチャされ 奇数ビットはこのクロックの立ち下がりエッジでキャプチャされることを前提とします 差動入力バッファーの出力では p 側に反転しないそのままのビット値が現れ n 側に反転したビット値が現れます したがって n 側のキャプチャデータは反転しています ( 図 19) インバーターは すでに使用されているロジックに入れることができます XAPP524 (v1.) 212 年 8 月 7 日 japan.xilinx.com 17
データ X-Ref Target - Figure 19 Data 1 1 1 1 1 IBUFDS_DIFF_OUT I O IB OB O = Incoming Data OB = Inverse of the Incoming Data O 1 1 1 1 1 OB 1 1 1 CLK Q Q1 Q2 Q3 Q4 Q5 Q6 Q7 The dotted bits must be inverted to get 11111 図 19 : ISERDESE2 出力のインバーター X524_19_4612 偶数ビットはクロックの立ち上がりエッジでキャプチャされ 奇数ビットは立ち下がりエッジでキャプチャされることを前提としますが これは保証されていません クロックの立ち下がりエッジで偶数ビットが p 側の ISERDESE2 へ入力されたり クロックの立ち上がりエッジで奇数ビットがキャプチャされる可能性があります 図 2 に このような状況を受けてマルチプレクサーがこれらのビットを並べ替える様子を示します ビットクロックアライメントのステートマシンのエッジ検出レジスタが マルチプレクサーの入力選択を制御します XAPP524 (v1.) 212 年 8 月 7 日 japan.xilinx.com 18
リファレンスデザイン X-Ref Target - Figure 2 Data 1 1 1 1 1 Q Q1 Q2 Q3 Q4 Q5 Q6 Q7 ISERDESE2_1 D Q1 Q2 Q3 Q4 CLK CLKDIV Q Q2 Q4 Q6 Multiplexer Q1 Q2 Q3 Q4 Q1 Q3 Q5 Q7 Multiplexer Q Q1 Q2 Q3 ISERDESE2_2 D Q1 Q2 Q3 Q4 Q1 Q3 Q5 Q7 Q4 Q5 Q6 Q7 Q1 Q2 Q3 Q4 Q4 Q5 Q6 Q7 CLK CLKDIV When ISERDESE2_1 is clocked When ISERDESE2_1 is clocked on the rising edge, the data on the falling edge, the data appears as shown in this multiplexer. appears at the ISERDES.Q bit swapped. A multiplexer is needed to properly re-order them. 図 2 : キャプチャデータとマルチプレクサー機能 X524_2_4712 リファレンスデザイン リファレンスデザインファイルは 次のサイトからダウンロードできます https://secure.xilinx.com/webreg/clickthrough.do?cid=189141 表 2 に リファレンスデザインの詳細を示します 表 2 : リファレンスデザインの詳細 パラメーター全般開発者ターゲットデバイスソースコードの提供ソースコードの形式使用した IP シミュレーション機能シミュレーションの実施タイミングシミュレーションの実施テストベンチの形式使用したシミュレータソフトウェアバージョン Marc Defossez Kintex-7 FPGA XC7K325T-2FFG9 あり VHDL なし あり 説明 なし VDHL ISIM 13.3 またはそれ以降 XAPP524 (v1.) 212 年 8 月 7 日 japan.xilinx.com 19
リファレンスデザイン 表 2 : リファレンスデザインの詳細 ( 続き ) パラメーター 説明 SPICE/IBIS シミュレーション なし インプリメンテーション 合成ツール / バージョン XST 13.3 またはそれ以降 インプリメンテーションツール / バージョン ISE Design Suite 13.3 またはそれ以降 スタティックタイミング解析の実施 あり ハードウェア検証 ハードウェア検証の実施 あり 検証に使用したハードウェアプラットフォーム KC75 ボード 表 3 : デバイス使用率 パラメーター 仕様 / 詳細 -1 6MHz 最大周波数 ( スピードグレードごと ) -2 7MHz Kintex-7 FPGA -3 7 デバイス使用率 ( テストベンチなし ) 2% デバイス使用率 ( テストベンチあり ) ( オプション ) QDR II SRAM 動作バス幅 I/O 規格 HDL 言語のサポート検証用のターゲットメモリデバイス N/A なしなし HP バンク :LVDS HR バンク : LVDS_25 VHDL なし 表 4 : リファレンスデザインの使用率 スライスロジックの使用率 使用済み 使用可能 使用されているリソース数 (%) FF 数 32 47,6 1% 占有スライスの数 132 5,95 1% ロジックとして使用されている数 168 356,16 1% メモリとして使用されている数 64 64, 1% シフトレジスタとして使用されている数 ルートスルーとして使用されている数 36 BUFG/BUFGCTRL 数 ISERDESE2 数 12 5 1% OSERDESE2 数 12 5 1% IODELAYE2 数 1 72 1% XAPP524 (v1.) 212 年 8 月 7 日 japan.xilinx.com 2
改訂履歴 表 4 : リファレンスデザインの使用率 ( 続き ) 使用されている スライスロジックの使用率 使用済み 使用可能 リソース数 (%) IDELAYCTRL 数 18 18 5% MMCM_ADV 数 1 % 改訂履歴 次の表に この文書の改訂履歴を示します 日付バージョン内容 212 年 8 月 7 日 1. 初版リリース Notice of Disclaimer The information disclosed to you hereunder (the Materials ) is provided solely for the selection and use of Xilinx products.to the maximum extent permitted by applicable law:(1) Materials are made available "AS IS" and with all faults, Xilinx hereby DISCLAIMS ALL WARRANTIES AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and (2) Xilinx shall not be liable (whether in contract or tort, including negligence, or under any other theory of liability) for any loss or damage of any kind or nature related to, arising under, or in connection with, the Materials (including your use of the Materials), including for any direct, indirect, special, incidental, or consequential loss or damage (including loss of data, profits, goodwill, or any type of loss or damage suffered as a result of any action brought by a third party) even if such damage or loss was reasonably foreseeable or Xilinx had been advised of the possibility of the same.xilinx assumes no obligation to correct any errors contained in the Materials or to notify you of updates to the Materials or to product specifications.you may not reproduce, modify, distribute, or publicly display the Materials without prior written consent.certain products are subject to the terms and conditions of the Limited Warranties which can be viewed at http://www.xilinx.com/warranty.htm; IP cores may be subject to warranty and support terms contained in a license issued to you by Xilinx.Xilinx products are not designed or intended to be fail-safe or for use in any application requiring fail-safe performance; you assume sole risk and liability for use of Xilinx products in Critical Applications:http://www.xilinx.com/warranty.htm#critapps. 本資料は英語版 (v1.) を翻訳したもので 内容に相違が生じる場合には原文を優先します 資料によっては英語版の更新に対応していないものがあります 日本語版は参考用としてご使用の上 最新情報につきましては 必ず最新英語版をご参照ください この資料に関するフィードバックおよびリンクなどの問題につきましては jpn_trans_feedback@xilinx.com までお知らせください いただきましたご意見を参考に早急に対応させていただきます なお このメールアドレスへのお問い合わせは受け付けておりません あらかじめご了承ください XAPP524 (v1.) 212 年 8 月 7 日 japan.xilinx.com 21