© 2009–2010 Xilinx, Inc. XILINX, the Xilinx logo, Virtex, Spartan, ISE, and other designated brands included herein are trademarks of Xilinx in the United States and other
概要
Spartan®-6 は、 入力 SerDes (ISERDES) お よ び出力 SerDes (OSERDES) ブ ロ ッ ク を備え てい ます。 こ れ ら のプ リ ミ テ ィ ブに よ っ て、 よ り 高速な動作が実現 さ れ る と 同時に、 シ リ ア ラ イ ズ回路お よ びデシ リ ア ラ イ ズ回路の設計が簡単にな り ます。 こ のアプ リ ケーシ ョ ン ノ ー ト では、 こ れ ら のプ リ ミ テ ィ ブ を入 力遅延ブ ロ ッ ク や位相検出回路 と 併用 し なが ら 、 効率的に使用す る 方法について説明 し ます。ISERDES
お よび
OSERDES
の
ガ イ ド ラ イ ン
Spartan-6 Spartan-6 FPGA の各入力/出力ブ ロ ッ ク (IOB) には、4 ビ ッ ト の入力 SerDes と 4 ビ ッ ト の出 力 SerDes が 1 つずつあ り ます。 隣接す る 2 つの SerDes ブ ロ ッ ク (マ ス タ ー と ス レーブ) を カ ス ケー ド 接続す る と 、8 ビ ッ ト のブ ロ ッ ク を構成で き ます。 こ れに よ り 、I/O ク ロ ッ ク がシ ン グル レー ト と ダブ ルデー タ レー ト のいずれの場合で も 、出力 と 入力の両方で 2:1 ~ 8:1 の SerDes 機能が可能にな り ます。 差動信号規格は 2 つの SerDes レ ジ ス タ と 関連す る 2 つの IOB (マ ス タ ー と ス レーブ) を使用す る ため、 こ の規格の信号を使用 し てい る と き は、ISERDES ブ ロ ッ ク を カ ス ケー ド 接続 し て も 問題にな り ません。 つま り 、2 つの ISERDES を効果的に使用す る こ と でデザ イ ン コ ス ト を削減で き ます。 ただ し 、 シ ン グ ルエ ン ド 信号規格を使用す る 場合は、5 以上の SerDes 比ま たは位相検出モー ド を必要 と す る デザ イ ン で注意が必要です。 カ ス ケー ド 接続 さ れた SerDes を使用す る 場合、 マ ス タ ー IOB と ス レーブ IOB が 隣接 し てい る デバ イ ス に 2 つのデー タ ラ イ ンは入力で き ません。 こ の制限は、SerDes 比が 4 以下で位 相検出モー ド を使用 し ない場合には SerDes がカ ス ケー ド 接続 さ れないため、 該当 し ません。 一方、 位 相検出モー ド を使用 し ない と き は、 キ ャ リ ブ レーシ ョ ン中にデー タ 損失が生 じ る ため、 アプ リ ケーシ ョ ンで こ の損失を考慮す る 必要があ り ます。
デシ リ ア ラ イ ズ と
デー タ 受信
デシ リ ア ラ イ ザーのデザ イ ン と 関連す る ク ロ ッ キ ン グ プ リ ミ テ ィ ブは、入力 さ れ る 受信デー タ ス ト リ ー ムの フ ォーマ ッ ト に よ っ て異な り ます。 こ のデー タ は、 通常 3 つに分類 さ れます。 ケース 1 デー タ ス ト リ ームは入力 ク ロ ッ ク レー ト の倍数で、 ク ロ ッ ク 信号は受信デー タ の フ レー ミ ン グ信号 と し て使用 さ れます。 デー タ ラ イ ンの ス テー ト は ク ロ ッ ク の 1 周期間に複数回変化 し ます。 代表的な例 と し て、 カ メ ラ 、 フ ラ ッ ト パネル TV 、 モニ タ ーな ど で使用 さ れ る 7:1 イ ン タ ーフ ェ イ ス があ り ます。 こ れ以外に も 、Spartan-6 FPGA の ISERDES は 2:1、3:1、4:1 をサポー ト し 、 カ ス ケー ド 時には 5:1、6:1、 7:1、8:1 も 可能です。 こ の例では、 受信 ク ロ ッ ク は PLL で逓倍 さ れ、 生成 さ れた高速キ ャ プチ ャ ク ロ ッ ク は BUFPLL プ リ ミ テ ィ ブ を介 し て入力 ロ ジ ッ ク へ供給 さ れ ます。BUFPLL キ ャ プチ ャ ク ロ ッ ク は、 入力デー タ に対 し て常にシ ン グルデー タ レー ト (SDR) モー ド で使用 さ れ る よ う に設計 さ れてい ます。 た と えば、7:1 デー タ に伴 う 150MHzの入力 ク ロ ッ ク は、1050MHz (150 x 7) で動作す る ために PLL と BUFPLL を必要 と し ます。 こ の高速キ ャ プチ ャ ク ロ ッ ク を使用 し て受信デー タ を入力デシ リ ア ラ イ ザーへ送 り 、 デバ イ ス の全体を駆動で き ます。 その後、 元の入力 ク ロ ッ ク 速度で FPGA ロ ジ ッ ク にパ ラ レルデー タ が現れます。図1に、7:1 のデー タ フ ォーマ ッ ト の例を示 し てい ます。 ア プ リ ケーシ ョ ン ノ ー ト : Spartan-6 FPGA XAPP1064 (v1.1) 2010 年 6 月 3 日ソ ース同期のシ リ ア ラ イ ズおよびデシ リ ア ラ イ ズ
(
最大
1050Mb/s)
著者 : Nick Sawyerデシ リ ア ラ イ ズ と デー タ 受信 ケース 2 デー タ ス ト リ ームは入力 ク ロ ッ ク の 2 倍で、 こ れは一般にダブルデー タ レー ト (DDR) 受信 と し て知 ら れてい ます。図2 に、DDR デー タ ス ト リ ーム を示 し ます。 ク ロ ッ ク の各遷移は、 デー タ ラ イ ンの ス テー ト の変化を示 し てい ます。 こ の よ う なデー タ の受信には 2 つの方法があ り ます。1 つは PLL お よ び BUFPLL を使用す る 方法です (「ケース 1」 参照)。こ の場合、入力 ク ロ ッ ク を PLL で 2 逓倍 し 、BUFPLL を介す る こ と でデバ イ ス全体が使用可能にな り ます。も う 1 つは、BUFIO2 プ リ ミ テ ィ ブ を使用す る 方 法で、2 つの BUFIO2 を用いて DDR デー タ を受信 し ます。BUFIO2 が駆動で き る のは、 ク ロ ッ ク 入力 が位置 し てい る デバ イ ス の片側半分のみです。 デシ リ ア ラ イ ズ係数 (比) は、 ユーザーが選択で き ま す (2:1、4:1、6:1、8:1)。 パ ラ レル デー タ に必要な分周 ク ロ ッ ク は、 いずれか一方の BUFIO2 プ リ ミ テ ィ ブ を介 し て生成 さ れます。SDR のキ ャ プチ ャ ク ロ ッ ク を生成す る には、BUFIO2 プ リ ミ テ ィ ブ を 2 つ 使用 し て、 入力 さ れ る DDR ク ロ ッ ク を 2 逓倍す る 必要があ り ます。 ケース 3 デー タ ス ト リ ームの レー ト はレ シーバー ク ロ ッ ク と 同 じ (SDR) です。図3に、SDR デー タ ス ト リ ー ム を示 し ま す。 ク ロ ッ ク 遷移が 2 回生 じ る ご と にデー タ ビ ッ ト が 1 回、 通常は ク ロ ッ ク の立ち上が り エ ッ ジで変化 し ま す。 こ の よ う なデー タ ス ト リ ーム の受信には 2 つの方法が あ り ま す。1 つは受信 ク ロ ッ ク を PLL で 1 逓倍 し 、BUFPLL を 使用 し てデバ イ ス 全体でのデー タ を 受信 し ま す。 あ る いは、 BUFIO2 ま たは PLL を 1 つ使用 し て、 ク ロ ッ ク 入力が位置 し てい る デバ イ ス の片側半分の入力を駆動 し ます。BUFIO2 は、 デシ リ ア ラ イ ズ さ れたパ ラ レル デー タ で使用で き る よ う に、 受信 ク ロ ッ ク を分周 す る 場合に も 使用 さ れます。SDR では、2:1、3:1、4:1、5:1、6:1、7:1、 お よ び 8:1 が可能です。 X-Ref Target - Figure 1
図 1 : 低速 ク ロ ッ ク を使用する 7:1 デー タ ス ト リ ーム
X-Ref Target - Figure 2
図 2 : DDR を使用する 8:1 デー タ ス ト リ ーム
X-Ref Target - Figure 3
図 3 : SDR を使用する 8:1 デー タ ス ト リ ーム Receive 7 to 1 Data Receive Clock D0 D1 D2 D3 D4 D5 D6 x1064_01_092809 Receiver 8:1 Data Received Clock (Clock polarity is not important for DDR)
D0 D1 D2 D3 D4 D5 D6 D7
x1064_02_100509
Receiver 8:1 Data
Received Clock (Clock rising edge indicates the start of a data bit)
D0 D1 D2 D3 D4 D5 D6 D7
デシ リ ア ラ イ ズ と デー タ 受信
よ り 大き なデシ リ ア ラ イ ズ係数
デー タ 受信では、8:1 よ り 大 き な比率のデシ リ ア ラ イ ズが可能です。PLL を使用 し 、高速 I/O キ ャ プチ ャ ク ロ ッ ク と 低速パ ラ レル デー タ ク ロ ッ ク の中間速度を持つ 3 つ目の ク ロ ッ ク を生成で き ます。「 リ フ ァ レ ン スデザ イ ン フ ァ イ ル」 には、10:1、12:1、14:1、 お よ び 16:1 の SerDes を使用す る サンプルデザ イ ンが含まれてい ます。 こ の場合 も 基本的に、 入力 SerDes プ リ ミ テ ィ ブ を 5:1、6:1、7:1、 お よ び 8:1 モー ド で使用 し 、BUFPLL を介 し た PLL か ら の高速キ ャ プチ ャ ク ロ ッ ク でデー タ を受信 し ます。 受信 し たパ ラ レル デー タ は、 中間 ク ロ ッ ク ド メ イ ン で FPGA ロ ジ ッ ク へ転送 さ れ、 その後、 同 じ く FPGA ロ ジ ッ ク にあ る 2:1 ギ ア ボ ッ ク ス を用いて メ イ ン ク ロ ッ ク ド メ イ ンへ転送 さ れ ます。図4に、 こ の構 造を示 し ます。 こ れ ら 例の よ う に大 き なデシ リ ア ラ イ ズ比で PLL を使用す る 場合、 レ シーバー ク ロ ッ ク は SDR、DDR、 ま たは分周 ク ロ ッ ク が可能です。PLL
および
BUFPLL
を使用するデー タ 受信
PLL お よ び BUFPLL を使用す る デー タ 受信の ト ポ ロ ジはシ ン プルです。 必要に応 じ て レ シーバー ク ロ ッ ク を PLL で逓倍 し 、 シ ン グル デー タ レー ト の内部キ ャ プチ ャ ク ロ ッ ク を生成 し ます。 入力 ク ロ ッ ク 信号は、 入力遅延ブ ロ ッ ク (デー タ パ ス遅延のバ ラ ン ス を と る ため) と BUFIO2 プ リ ミ テ ィ ブ を通っ て PLL へ入力 さ れ る 必要があ り ます。 た と えば、7:1 のビデオデー タ の場合、受信 し た ピ ク セルク ロ ッ ク を 7 で逓倍 し ます。 ク ロ ッ ク 信号は、PLL か ら BUFPLL プ リ ミ テ ィ ブへ配線 さ れ、 デバ イ ス全体を 駆 動 し ま す。BUFPLL へ 高 速 キ ャ プ チ ャ ク ロ ッ ク を 駆 動 で き る 出 力 は、PLL の CLKOUT0 と CLKOUT1 のみです。BUFPLL には、 逓倍 さ れていない元の ソ ー ス ク ロ ッ ク と 同等の グ ロ ーバル ク ロ ッ ク 信号 (グ ロ ーバル バ ッ フ ァ ー (BUFG) を 介す る 任意の PLL 出力か ら 駆動可能) と PLL か ら の LOCKED 信号 (BUFPLL 内での同期に必要) が必要です。X-Ref Target - Figure 4
図 4 : デシ リ ア ラ イ ズ係数が大き い場合のデー タ 受信
serdes_1_to_n_clk_pll_s16_diff.v/vhd
Differential Clock IOB Calibration and
Bitslip State Machine Master ISERDES Slave ISERDES Master IDELAY Slave IDELAY (0) PLL BITSLIP BUFPLL BUFG BUFIO2 BUFIO2FB BUFG BITSLIP LVDS Clock P Parameters: S = serdes_factor PLLX = PLL multiplier CLKIN_PERIOD = Input clock period BS = TRUE/FALSE to use Bitslip (or not)
Parameters: D = Number of data lines S = serdes_factor LVDS Clock N
x1064_04_100509
Feedback
x1 Clock x2 Clock SerDesStrobe I/O Clock Feedback
serdes_1_to_n_data_s16_diff.v/vhd “D” Differential Data IOB
Calibration and Phase Detection State Machine Master ISERDES Slave ISERDES Master IDELAY Slave IDELAY BITSLIP D x S LVDS Data P LVDS Data N Gearbox DxS
デシ リ ア ラ イ ズ と デー タ 受信 BUFPLL への こ れ ら 3 つの入力信号に よ っ て、 デバ イ ス の同 じ 片側に あ る 入力遅延ブ ロ ッ ク お よ び SerDes プ リ ミ テ ィ ブへ高速レ シーバー ク ロ ッ ク を分配で き 、ま た位相が適切に揃え ら れた SerDes ス ト ロ ーブ信号を用い る こ と で、入力 SerDes か ら FPGA ロ ジ ッ ク へ低速パ ラ レルデー タ を確実に転送で き ます。 デー タ 受信に PLL を使用す る 場合は、PLL で ス キ ュ ー調整が必要です。BUFIO2FB プ リ ミ テ ィ ブ を利 用 し て、 ク ロ ッ ク 入力 ピ ン が あ る 入力 SerDes プ リ ミ テ ィ ブの I/O ク ロ ッ ク デ ス テ ィ ネーシ ョ ン か ら PLL へ戻 る よ う に フ ィ ー ド バ ッ ク ク ロ ッ ク 信号を配線 し ます。 こ れに よ っ て、 逓倍 し た ク ロ ッ ク と 元 の受信 ク ロ ッ ク の位相が一致 し ます。 デー タ のセ ン タ リ ン グお よ びキ ャ プチ ャ を確実に行 う 構造は、IODELAY2 プ リ ミ テ ィ ブ をベース と し てお り 、 入力遅延モー ド でのみ使用 さ れ ま す。 こ の構造については、「入力デー タ お よ び ク ロ ッ ク の遅 延」 で説明 し てい ます。図5に、 レ シーバーのブ ロ ッ ク 図を示 し ます。
BUFIO2
を
2
つ使用する
DDR
デー タ 受信
BUFIO2 を 2 つ使用す る DDR デー タ 受信の ト ポ ロ ジでは、PLL を介 さ ず、 入力 ク ロ ッ ク を使用 し て直 接デー タ を キ ャ プチ ャ し ます。 入力 ク ロ ッ ク は、 デー タ と ク ロ ッ ク の遅延のバ ラ ン ス を と る ために入力 遅延ブ ロ ッ ク を介 し て供給 さ れ ます。図6に示す よ う な差動信号の場合、True 信号 と Complement 信 号がマ ス タ ー入力遅延 と ス レーブ入力遅延 (共に 0 に設定) を通っ て 2 つの BUFIO2 プ リ ミ テ ィ ブに入 り ます。 最初の BUFIO2 は、True 入力 と Complement 入力を両方受信 し 、 こ れ ら を使用 し て適切な分 周 ク ロ ッ ク お よ び入力 SerDes プ リ ミ テ ィ ブの SerDes ス ト ロ ーブ信号を生成 し ます。 た と えば、 レ シー バーク ロ ッ ク が311MHz (622Mb/s デー タ) で 8:1 SerDes 機能を必要 と す る デザ イ ンでは、 分周値は 8 X-Ref Target - Figure 5図 5 : PLL および BUFPLL を使用するデー タ 受信
serdes_1_to_n_clk_pll_s8_diff.v/vhd
Differential Clock IOB Calibration and
Bitslip State Machine Master ISERDES Slave ISERDES Master IDELAY Slave IDELAY (0) PLL BITSLIP BUFPLL BUFG BUFIO2 BUFIO2FB BITSLIP LVDS Clock P Parameters: S = serdes_factor PLLX = PLL multiplier CLKIN_PERIOD = Input clock period BS = TRUE/FALSE to use Bitslip (or not)
Parameters: D = Number of data lines S = serdes_factor LVDS Clock N
x1064_05_100509
Feedback
x1 Clock SerDesStrobe I/O Clock Feedback
serdes_1_to_n_data_s8_diff.v/vhd “D” Differential Data IOB
Calibration and Phase Detection State Machine Master ISERDES (SDR Mode) Slave ISERDES (SDR Mode) Master IDELAY Slave IDELAY BITSLIP D x S LVDS Data P LVDS Data N
デシ リ ア ラ イ ズ と デー タ 受信 こ れ ら 2 つの ク ロ ッ ク は入力 SerDes で 2 逓倍 さ れて、622Mb/sデー タ 用の 622MHzサンプ リ ン グ ク ロ ッ ク が生成 さ れます。 BUFIO2 は、 ク ロ ッ ク 入力が位置 し てい る デバ イ ス の片側半分に配置 さ れ る 必要があ り 、 入力遅延を利 用す る 場合にデバ イ ス の も う 一方側ににあ る 別の BUFIO2 は同時に使用で き ません。 つま り 、 入力遅延 を利用す る 場合のデー タバ ス の受信は、 ク ロ ッ ク 入力のあ る 片側半分に限 ら れます。 デー タ のセ ン タ リ ン グお よ びキ ャ プチ ャ を確実に行 う 構造は、IODELAY2 プ リ ミ テ ィ ブ をベース と し てお り 、 入力遅延モー ド でのみ使用 さ れ ま す。 こ の構造については、「入力デー タ お よ び ク ロ ッ ク の遅 延」 で説明 し てい ます。図6 に、 レ シーバーのブ ロ ッ ク 図を示 し ます。
BUFIO2
を使用する
SDR
デー タ 受信
BUFIO2 を使用す る SDR デー タ 受信の ト ポ ロ ジ では、 入力 ク ロ ッ ク を 使用 し て直接デー タ を キ ャ プ チ ャ し ま す。 ク ロ ッ ク 信号は、 遅延ブ ロ ッ ク (0 に設定) を介 し て BUFIO2 に供給 さ れ ま す。BUFIO2 は、こ の入力 ク ロ ッ ク 使用 し て適切な分周 ク ロ ッ ク お よ び入力 SerDes プ リ ミ テ ィ ブの SerDes ス ト ロ ー ブ信号を生成 し ます。 た と えば、 レ シーバー ク ロ ッ ク が525MHz (525Mb/s デー タ) で 8:1 SerDes 機能 を 必 要 と す る デ ザ イ ン で は、 分 周 値 が 8 に 設 定 さ れ た BUFIO2 が 入 力 ク ロ ッ ク を 8 分 周 し て65.625MHz の ク ロ ッ ク を生成 し ます。 生成 さ れた I/O ク ロ ッ ク は、 デー タ キ ャ プチ ャ 用 と し て入力 SerDes プ リ ミ テ ィ ブへ配線 さ れます。 こ の場合の制限要因は、 ク ロ ッ ク 入力ピ ン を通過す る こ と がで き る 最大 ク ロ ッ ク 周波数です。 BUFIO2 は、 ク ロ ッ ク 入力が位置 し てい る デバ イ ス の片側半分に配置 さ れ る 必要があ り 、 入力遅延を利 用す る 場合にデバ イ ス の も う 一方側ににあ る 別の BUFIO2 は同時に使用で き ません。 つま り 、 入力遅延 を利用す る 場合のデー タ バ ス の受信は、 ク ロ ッ ク 入力のあ る 片側半分に限 ら れます。 デー タ のセ ン タ リ ン グお よ びキ ャ プチ ャ を確実に行 う 構造は、IODELAY2 プ リ ミ テ ィ ブ をベース と し てお り 、 入力遅延モー ド でのみ使用 さ れ ま す。 こ の構造については、「入力デー タ お よ び ク ロ ッ ク の遅 延」 で説明 し てい ます。図7に、 レ シーバーのブ ロ ッ ク 図を示 し ます。X-Ref Target - Figure 6
図 6 : BUFIO2 を 2 つ使用する DDR デー タ 受信
serdes_1_to_n_clk_ddr_s8_diff.v/vhd Differential Clock IOB IDELAYMaster
(0) Slave IDELAY (0) LVDS Clock P Parameters: S = serdes_factor Parameters: D = Number of data lines S = serdes_factor LVDS Clock N
x1064_06_100509
N I/O Clock SerDes
Strobe P I/O Clock System Clock
serdes_1_to_n_data_s8_ddr_diff.v/vhd “D” Differential Data IOB
Calibration and Phase Detection State Machine Master ISERDES (DDR Mode) Slave ISERDES (DDR Mode) Master IDELAY (DDR) Slave IDELAY (DDR) User BITSLIP D x S LVDS Data P LVDS Data N BUFG BUFIO2_2CLK BUFIO2
デシ リ ア ラ イ ズ と デー タ 受信
入力デー タ および ク ロ ッ クの遅延
Spartan-6 FPGA のデー タ キ ャ プチ ャ 構造は、入力遅延プ リ ミ テ ィ ブ (IODELSY2) がベース と な っ てい ます。 各遅延 タ ッ プは PVT に よ っ て変動す る ため、 定期的な キ ャ リ ブ レーシ ョ ン が必要です。 こ のセ ク シ ョ ンでは、 継続的にデー タ を キ ャ プチ ャ す る ためにキ ャ リ ブ レーシ ョ ン を定期的に行 う 構造につい て説明 し ます。図8 に、 入力遅延プ リ ミ テ ィ ブの構造を示 し ます。 こ の よ う なデー タ キ ャ プチ ャ では、 キ ャ プチ ャ ク ロ ッ ク と 入力デー タ の遅延が正確に一致す る こ と が重要です。 それには、 入力 ク ロ ッ ク が BUFIO2 へ配線 さ れ る 前、 ま たは BUFIO2 を介 し て PLL へ配線 さ れ る 前に、0 に設定 さ れた入力遅延 ブ ロ ッ ク を通過す る 必要があ り ます。 こ の方法に よ っ て、 ク ロ ッ ク パ ス と デー タ パ ス の挿入遅延が等 し く な り 、 デー タ ア イ の中央で確実にデー タ を キ ャ プチ ャ で き る よ う にデー タ 遅延を変更で き ます。 受信 ク ロ ッ ク と デー タ が到達す る エ ッ ジが一致す る こ と を前提 と し た場合、 ア イ の中央でデー タ がサン プ リ ン グ さ れ る よ う に、 デー タ 遅延を キ ャ プチ ャ ク ロ ッ ク 周期の半分に設定す る 必要があ り ます。 こ れ には、 入力遅延プ リ ミ テ ィ ブが備え る キ ャ リ ブ レーシ ョ ン機能が必要です。 キ ャ リ ブ レーシ ョ ン コ マ ン ド (CAL) が発行 (低速 ク ロ ッ ク の 1 サ イ ク ル分 CAL を High にアサー ト) さ れ る と 、入力遅延ブ ロ ッ ク はデー タ を 1/2 ビ ッ ト 周期分遅延 さ せ る のに必要な遅延 タ ッ プエ レ メ ン ト 数を内部で判断 し 、 こ の半分 の値 と な る よ う に遅延 ラ イ ン を設定 し ます。 高速キ ャ プチ ャ ク ロ ッ ク 自体は、 周波数の基準 と し て使用 さ れます。 た と えば、 キ ャ リ ブ レーシ ョ ン回路が入力キ ャ プチ ャ ク ロ ッ ク を判断 し 、 その時点の電圧 と 温度では、 入力 ビ ッ ト 周期が 24 遅延 タ ッ プに相当す る と し ま す。 遅延 タ ッ プ数 を 12 に設定す る と 、 デー タ を 1/2 ビ ッ ト 周期分遅延 さ せ る こ と がで き 、 デー タ が適切にキ ャ プチ ャ さ れます。 その後、 次の キ ャ リ ブ レーシ ョ ンで値がそれぞれ 26 と 13 に変更 さ れ る と 、 入力遅延の値が自動的に更新 さ れます。 入力遅延ブ ロ ッ ク でキ ャ リ ブ レーシ ョ ン プ ロ セ ス が進行 し てい る 間は受信デー タ が失われます。 こ れは 一部のプ ロ ト コ ルでは問題ではあ り ませんが、 デー タ が継続す る プ ロ ト コ ルでは問題 と な り ます。 キ ャ リ ブ レーシ ョ ン中のデー タ 損失を回避す る には、 入力遅延ブ ロ ッ ク に さ ら に位相検出モー ド を追加 し ま す。
X-Ref Target - Figure 7
図 7 : BUFIO2 を使用する SDR デー タ 受信
serdes_1_to_n_clk_sdr_s8_diff.v/vhd Differential Clock IOB
Master IDELAY (0) LVDS Clock P Parameters: S = serdes_factor Parameters: D = Number of data lines S = serdes_factor LVDS Clock N
x1064_07_100509
SerDes
Strobe I/O Clock
System Clock
serdes_1_to_n_data_s8_diff.v/vhd “D” Differential Data IOB
Calibration and Phase Detection State Machine Master ISERDES (SDR Mode) Slave ISERDES (SDR Mode) Master IDELAY Slave IDELAY User BITSLIP D x S LVDS Data P LVDS Data N BUFG BUFIO2
位相検出回路 と ボー ド のスキ ュ ー調整 位相検出モー ド では、 入力デー タ 信号が 2 つの入力遅延ブ ロ ッ ク へ同時に供給 さ れます。 こ れ ら のプ リ ミ テ ィ ブはマ ス タ ー と ス レーブ と し て扱われます。 こ のモー ド の場合、 ス レーブ入力遅延で、 それ自体 と マ ス タ ー入力遅延の両方の動作を制御す る よ う に設定 し ます。 受信デー タ はマ ス タ ー遅延ブ ロ ッ ク か ら 取得 し 、 位相検出回路で ス キ ュ ーを調整す る 必要がない場合には、 ス レーブ遅延ブ ロ ッ ク の出力は通 常無視 さ れます。 ス キ ュ ー調整機能については、「位相検出回路 と ボー ド の ス キ ュ ー調整」で説明 し てい ます。 前の例を用いて考え る と 、 キ ャ リ ブ レーシ ョ ン コ マ ン ド が発行 さ れ る と 、 ス レーブ入力遅延ブ ロ ッ ク は キ ャ プチ ャ ク ロ ッ ク の 1 周期分に相当す る タ ッ プ数を計算 し ます。 こ の場合 24 と な り 、 マ ス タ ー入力 遅延を こ の値の半分、12 に設定 し ます。 マ ス タ ー入力遅延の更新は、 入力デー タ ス ト リ ーム と 同期 さ れ る ため、 キ ャ リ ブ レーシ ョ ン中あ る いは遅延値の更新時にデー タ が失われ る こ と はあ り ません。 DDR モー ド の場合、 キ ャ リ ブ レーシ ョ ン用に測定お よ び使用 さ れ る キ ャ プチ ャ ク ロ ッ ク は、 実際は 2 つの I/O ク ロ ッ ク 信号が結合 さ れた信号 と な り ます。 た と えば、DDR デー タ のキ ャ プチ ャ に使用 さ れ る 311MHzの入力 ク ロ ッ ク は、 入力 SerDes と 入力遅延プ リ ミ テ ィ ブで 2 逓倍 さ れます。 つま り 、 入力 ビ ッ ト レー ト と 等 し い 622MHzの ク ロ ッ ク が生成 さ れます。 リ セ ッ ト (RST) お よ び CAL は、 設計者の ス テー ト マシ ンに基づいて動作 し ます。CAL を 1 ク ロ ッ ク 周期間アサー ト す る と キ ャ リ ブ レーシ ョ ンが実行 さ れ、 その時点の PVT での 1 ビ ッ ト 周期に相当す る 遅延 タ ッ プ数が決定 さ れます。RST を 1 ク ロ ッ ク 周期間アサー ト す る と 、 先ほ ど決定 し た値の半分が遅 延 ラ イ ンに ロ ー ド さ れます。 位相検出モー ド の場合、CAL フ ァ ン ク シ ョ ン を実行 し て も デー タ の イ ン テ グ リ テ ィ に影響を及ぼ し ません。RST は、 最初の CAL フ ァ ン ク シ ョ ン後にのみ High 駆動す る 必要が あ り 、 その後の CAL フ ァ ン ク シ ョ ンには必要あ り ません。
位相検出回路 と
ボー ド のスキ ュ ー
調整
Spartan-6 FPGA の位相検出回路には 2 つの定義があ り ます。 位相検出モー ド は、 キ ャ リ ブ レーシ ョ ン 中に ス レーブ入力遅延がマ ス タ ー入力遅延を効率的に制御 し て、マ ス タ ー遅延が (遅延は別 と し て) デー タ を変更す る こ と な く 受け渡す こ と がで き る よ う し 、 デー タ の損失を回避す る ために使用 さ れます。 位相検出回路は通常、 関連す る 入力 ク ロ ッ ク か ら 何 ら かの理由で ス キ ュ ーのあ る デー タ を受信で き る よ う にす る ために、 入力 SerDes プ リ ミ テ ィ ブ内の専用 ロ ジ ッ ク を使用 し ます。 外部ス テー ト マシ ンか ら 制御す る 必要があ る 位相検出 ロ ジ ッ ク の役割は、 入力遅延を適切に調節 し 、 レ シーバーのサンプ リ ン グ ク ロ ッ ク が受信デー タ のア イ の中央に位置す る よ う にす る こ と です。 こ れに よ り 、 サンプ リ ン グ回路の パフ ォーマ ン ス が最大化 し 、 エ ラ ーのない高ビ ッ ト レー ト のデー タ 受信が可能にな り ます。X-Ref Target - Figure 8
図 8 : 入力遅延プ リ ミ テ ィ ブ
DDR I/O Sampling Clock 1
DDR I/O Sampling Clock 2 Input Data Output Data before CAL and RST Output Data following CAL and RST SDR I/O Sampling Clock
or Sample Points Calibration Period x1064_08_100509 IODELAY2 System Clock CAL RST Output Data Input Data
位相検出回路 と ボー ド のスキ ュ ー調整
図9に、 位相 コ ン ト ロ ー ラ ーの動作を示 し ます。I/O サ ン プ リ ン グ ク ロ ッ ク は、BUFPLL や BUFIO2 を 1 つ使用する 場合、 あ る いは BUFIO2 を 2 つ使用 し て 2 つの ク ロ ッ ク が供給 さ れ る 場合のいずれで も 常に SDR と な り ます。入力デー タ の初期オ フ セ ッ ト 値は、最初の ト レースペアで示 し てい ます。キ ャ リ ブ レー ト さ れたマ ス タ ー入力遅延を通過す る デー タ は、1/2 ク ロ ッ ク 周期 (あ る いは、 個々の遅延 ラ イ ン で可能な限 り 1/2 ク ロ ッ ク 周期に近い値) 分の遅延が与え ら れ ます。 ス レーブ を通 る デー タ の初期遅 延値は 0 で、 こ れは結果 (VALID お よ び INCDEC) がそれぞれパ イ プ ラ イ ン化 さ れてい る 限 り 、 実際に は 1 ビ ッ ト 周期分の遅延を与え た こ と と 同 じ にな り ます。 こ の タ イ ミ ン グ図では、 わか り やす く す る た めに、 ス レーブ を通 る デー タ パ イ プ ラ イ ン ス テージは示 し てい ません。 図9の最初の ト レース ペアが示す と お り 、 サンプ リ ン グポ イ ン ト はデー タ ア イ の中央に位置 し てい ま せん。 さ ら に、 マ ス タ ー遅延 (マ ス タ ー入力 SerDes 内) か ら のサ ン プルは、 ス レーブ遅延 (ス レーブ入 力 SerDes 内) か ら のサンプル と 同 じ です。 入力デー タ の ス テー ト 変更後、 位相検出回路がテ ス ト さ れて い る 両方の信号が同 じ 値で あ る と 判断 し 、 マ ス タ ー入力 SerDes の 2 つの出力 ピ ン (VALID お よ び INCDEC) で こ れを示 し ます。 有効な遷移が検出 さ れた場合には、 常に VALID が High にアサー ト さ れ ます。INCDEC は、 サンプル ク ロ ッ ク をデー タ ア イ の中央へ移動す る ための遅延調整の方向を示 し ま す。 設計者 の ス テ ー ト マ シ ン は こ のデー タ に対 し て 作用 し 、 ス レ ー ブ 入力遅延 の CE ピ ン お よ び INCDEC ピ ンで、入力遅延プ リ ミ テ ィ ブへ適切に イ ン ク リ メ ン ト ま たはデ ク リ メ ン ト す る よ う に命令 し ます。CE は、 遅延調整に必要な方向が適切に設定 さ れた INCDEC と 共に、1 シ ス テ ム ク ロ ッ ク サ イ ク ル間 High にアサー ト さ れます。 図9の 2 つ目の ト レースペアは、ス レーブ入力 SerDes へデ ク リ メ ン ト コ マ ン ド が発行 さ れた結果を示 し てい ます。 遅延は 1 タ ッ プ分削減 さ れてい ます。 マ ス タ ー遅延は ½ MAX – 1 (MAX は 「入力デー タ お よ び ク ロ ッ ク の遅延」 で説明 し た キ ャ リ ブ レーシ ョ ンに よ っ て求め ら れた値であ り 、 有効な最大遅延 256 タ ッ プの こ と ではない) で、 ス レーブ入力遅延は MAX – 1 と な り ます。 サンプ リ ン グ回路は、2 つ のサ ン プル (マ ス タ ー と ス レーブ) が同 じ で あ る と 判断 し 、 ス レーブ入力遅延に も う 1 つデ ク リ メ ン ト コ マ ン ド を発行 し ます。 こ のデ ク リ メ ン ト 後の結果が図9 の 3 つ目の ト レース ペアで、 こ こ で も 2 つのサン プルが同 じ であ る ため、 デ ク リ メ ン ト コ マ ン ド が 1 つス レーブ入力遅延へ発行 さ れます。 図9 の 4 つ目の ト レース ペアでは、マ ス タ ー遅延が ½ MAX – 3 で、 ス レーブ遅延が MAX – 3 と な り 、 こ の と き に入力 SerDes プ リ ミ テ ィ ブで取得 し た 2 つのサンプルが異な り ます。 こ れは、 ス レーブ入力 遅延へ イ ン ク リ メ ン ト コ マ ン ド を発行す る 必要があ る こ と を、 制御ス テー ト マシ ンに指示 し てい ます。 こ の コ マ ン ド に よ っ て、 結果は図9の 3 つ目の ト レースペアの ス テー ト へ戻 る こ と にな り ます。 こ れ ら 2 つの点は、 サンプ リ ン グ ク ロ ッ ク がデー タ ア イ の中央に位置す る 理想的な条件に相当す る た め、 回路は こ れ ら 付近で移動 し ます。 実際のシ リ コ ン では、 入力 ク ロ ッ ク お よ びデー タ にはジ ッ タ ーが 生 じ ますが、 動作の本質は同 じ で、 サンプ リ ン グ ポ イ ン ト は常にア イ の中央付近を維持 し ます。 すべて のサンプルデザ イ ンには、32 ビ ッ ト の フ ィ ル タ ーを使用す る ス テー ト マシ ンが含まれてい る ため、ジ ッ タ ーがあ る 場合で も 遅延を適切に制御で き ます。 入力遅延は、 定期的に再キ ャ リ ブ レーシ ョ ン を行っ て電圧や温度に よ る 遅延の変化に対応す る 必要があ り ます。 キ ャ リ ブ レーシ ョ ン コ マ ン ド は、 デー タ の受信に影響を与え ませんが、 位相検出回路が認識す る サンプ リ ン グ ポ イ ン ト の現在の位置に影響を及ぼ し ます。 再キ ャ リ ブ レーシ ョ ンに よ っ てMAX 値は 変動 し ますが、 位相検出回路では新 し い MAX 値を用いて透過的に動作を継続 し ます。 し たがっ て、½ MAX は両方の遅延プ リ ミ テ ィ ブに ロ ー ド さ れます。
シ リ ア ラ イ ズ と デー タ 送信
シ リ ア ラ イ ズ と
デー タ 送信
デー タ 受信 と 同様、 シ リ ア ラ イ ズ回路お よ びそれに関連す る ク ロ ッ キ ン グプ リ ミ テ ィ ブのデザ イ ンは、 送信デー タ ス ト リ ームお よ び転送 ク ロ ッ ク の フ ォーマ ッ ト に よ っ て異な り ます。必要な出力転送 ク ロ ッ ク と デー タ ス ト リ ームが同時に ス テー ト を変更す る かや同 じ 送信 ク ロ ッ ク か ら 生成 さ れ る か、 あ る いは 必要な出力転送 ク ロ ッ ク が SDR で、 各ビ ッ ト 遷移で ス テー ト 変更が 2 回行われ る かに よ っ てデザ イ ン は違っ て き ます。 LVDS な ど一部の出力規格は、Spartan-6 デバ イ ス の上半分ま たは下半分でのみ使用で き ます ケース 4 必要な出力転送 ク ロ ッ ク と デー タ ス ト リ ームは同 じ タ イ ミ ン グで ス テー ト を変更 し 、同一の送信 ク ロ ッ ク か ら 生成 さ れます。図10に、 こ の よ う なデー タ ス ト リ ームの一般的な使用例を示 し ます。転送 ク ロ ッ ク は、 カ メ ラ 、 フ ラ ッ ト パネル TV 、 モニ タ ーな ど で使用 さ れ る 7:1 イ ン タ ーフ ェ イ ス です。 こ れ以外 に も 、出力 SerDes は 2:1、3:1、4:1 をサポー ト し 、 カ ス ケー ド 時には 5:1、6:1、7:1、8:1 も 可能です。 こ のケース には、図11 に示す 6:1 SerDes の DDDR ク ロ ッ ク の転送 も 含まれます。SDR 内部 ト ラ ン ス ミ ッ タ ー ク ロ ッ ク は、 内部 ト ラ ン ス ミ ッ タ ー ク ロ ッ ク の周波数 ソ ー ス に よ っ て、PLL と BUFPLL、 BUFIO2 を 1 つ、 ま たは BUFIO2 を 2 つ使用 し て生成で き ます。X-Ref Target - Figure 9
図 9 : 位相検出回路を使用 し た入力デー タ のスキ ュ ー調整
I/O Sampling Clock
Offset Input Data From Slave Delayed by 0 (= MAX) Offset Input Data From Master Delayed by ½MAX
MAX = Number of Taps in Bit Period
Decrement Delays Offset Input Data From Slave Delayed by (MAX – 1) Offset Input Data From Master Delayed by (½MAX – 1)
Decrement Delays Offset Input Data From Slave Delayed by (MAX – 2) Offset Input Data From Master Delayed by (½MAX – 2)
Decrement Delays Offset Input Data From Slave Delayed by (MAX – 3) Offset Input Data From Master Delayed by (½MAX – 3)
Increment Delays PCB or Other Data to Clock Skew
Sample Points
シ リ ア ラ イ ズ と デー タ 送信 ケース 5 必要な出力転送 ク ロ ッ ク は SDR で、 各ビ ッ ト 遷移で ス テー ト が二度変更 し ます。 こ の場合、2 つの方 法があ り ます。1 つ目の方法 (図12) では、 内部 ト ラ ン ス ミ ッ タ ー ク ロ ッ ク を 1 つ使用 し 、0101 な ど のパ タ ーン を送信す る こ と で SDR 転送 ク ロ ッ ク を生成 し 、 同 じ レー ト で各デー タ ビ ッ ト を 2 回送信 し ます。 デー タ は、2 回の ク ロ ッ ク 遷移に対 し て 一度 し か変更 し ていない よ う に見え ます。 こ の方法では、 内部 ト ラ ン ス ミ ッ タ ーク ロ ッ ク の周波数 ソ ース に よ っ て、PLL と BUFPLL、BUFIO2 を 1 つ、 ま たは BUFIO2 を 2 つ使用で き ます。 こ の場合のデ メ リ ッ ト は、 有効な出力 SerDes 比がカ ス ケー ド 接続を使 用 し た場合の 8 ではな く 4 であ る こ と です。 一方、BUFPLL を 1 つ し か使用 し ない点が メ リ ッ ト です。 2 つ目の方法 (図13) では、PLL を 1 つ と BUFPLL を 2 つを使用 し て 2 つの ト ラ ン ス ミ ッ タ ー ク ロ ッ ク を生成する 必要があ り ます。 一方の ト ラ ン ス ミ ッ タ ーク ロ ッ ク は SDR 転送 ク ロ ッ ク の生成に、 も う 一方 (速度は最初の ク ロ ッ ク の半分) は転送デー タ の生成に使用 さ れます。 こ の方法の メ リ ッ ト は、 出力 SerDes を カ ス ケー ド 接続 し た場合の最大出力 SerDes 比の 8 が利用で き る こ と です。 ただ し 、 デバ イ ス の各側にあ る 2 つの BUFPLL を共に使用す る 上、 グ ロ ーバル バ ッ フ ァ ー 1 つを追加で使用す る 必要が あ る と い う デ メ リ ッ ト があ り ます。
X-Ref Target - Figure 10
図 10 : 低速の転送 ク ロ ッ ク を使用する 7:1 出力デー タ ス ト リ ーム
X-Ref Target - Figure 11
図 11 : DDR 転送ク ロ ッ ク を使用する出力デー タ ス ト リ ーム
Transmitted 7-Bit Data Internal Transmitter Clock
D0 D1 D2 D3 D4 D5 D6
x1064_10_121409
Forwarded Clock = 1100001
Internal Global Clock
Parallel data loaded into internal transmitter clock domain Parallel data loaded into internal transmitter clock domain
Transmitted 6-Bit Data Internal Transmitter Clock
D0 D1 D2 D3 D4 D5
x1064_11_121409
Forwarded Clock = 010101
Internal Global Clock
Parallel data loaded into internal transmitter clock domain Parallel data loaded into internal transmitter clock domain
シ リ ア ラ イ ズ と デー タ 送信
X-Ref Target - Figure 12
図 12 : SDR の転送ク ロ ッ ク を使用する出力デー タ ス ト リ ーム (ト ラ ン ス ミ ッ タ ー ク ロ ッ クが 1 つの場合)
Transmitted 4:1 Data Internal Transmitter Clock
Master 4:1 OSERDES2
Forwarded Transmit Clock
Internal Transmit Clock
from BUFIO2 or PLL Cascade
Transmitted 4:1 Data 0 1 0 1 Slave 4:1 OSERDES2 Master 4:1 OSERDES2 Slave 4:1 OSERDES2 D0 D1 D2 D3 x1064_12_102709 ForwardedTransmit Clock Clock rising edge indicates the start of a data bit
Cascade 0 1 0 1 D3 D3 D2 D2 D1 D1 D0 D0
シ リ ア ラ イ ズ と デー タ 送信
よ り 大き な シ リ ア ラ イ ズ係数
デー タ 送信では、PLL を使用 し 、 高速送信 ク ロ ッ ク と 低速パ ラ レ ル デー タ ク ロ ッ ク の中間速度を持つ 3 つ目の ク ロ ッ ク を生成す る こ と で、8:1 よ り 大き な比率のシ リ ア ラ イ ズが可能です。「 リ フ ァ レ ン スデ ザ イ ン フ ァ イ ル」 には、10:1、12:1、14:1、 お よ び 16:1 の SerDes を使用す る サン プル デザ イ ン が含 まれてい ます。 こ の場合 も 基本的に、 出力 SerDes プ リ ミ テ ィ ブ を 5:1、6:1、7:1、 お よ び 8:1 モー ド で 使用 し 、BUFPLL を介 し た PLL か ら の高速 ク ロ ッ ク でデー タ を送信 し ます。 送信用のパ ラ レル デー タ は、FPGA ロ ジ ッ ク にあ る 2:1 ギ アボ ッ ク ス を用いて メ イ ン ク ロ ッ ク ド メ イ ンか ら 中間 ク ロ ッ ク ド メ イ ンへ転送 さ れ、中間 ク ロ ッ ク ド メ イ ンで FPGA ロ ジ ッ ク か ら 出力 SerDes へ転送 さ れます。図14 に、 こ の構造を示 し ます。PLL を使用す る 場合、 外部 ト ラ ン ス ミ ッ タ ー ク ロ ッ ク は SDR、DDR、 ま たは分 周 ク ロ ッ ク が可能です。X-Ref Target - Figure 13
図 13 : SDR の転送ク ロ ッ ク を使用する出力デー タ ス ト リ ーム (ト ラ ン ス ミ ッ タ ー ク ロ ッ クが 2 つの場合)
Transmitted 8:1 Data Internal x2 Transmitter Clock
Master 4:1 OSERDES2
Forwarded Transmit Clock
Internal x2 Transmit Clock from PLL Internal x1 Transmit Clock from PLL Cascade Transmitted 8:1 Data 0 1 0 1 Slave 4:1 OSERDES2 Master 4:1 OSERDES2 Slave 4:1 OSERDES2 D0 D1 D2 D3 D4 D5 D6 D7 x1064_13_102709 ForwardedTransmit Clock Clock rising edge indicates the start of a data bit Internal x1 Transmitter Clock
Cascade 0 1 0 1 D7 D6 D5 D4 D3 D2 D1 D0
シ リ ア ラ イ ズ と デー タ 送信
PLL
および
BUFPLL
を使用するデー タ 送信
PLL お よ び BUFPLL を使用す る デー タ 送信の ト ポ ロ ジはシ ン プルです。 必要に応 じ て ト ラ ン ス ミ ッ タ ーの ソ ース ク ロ ッ ク を PLL で逓倍 し 、SDR の ト ラ ン ス ミ ッ タ ー ク ロ ッ ク を生成 し ます。 た と えば、 7:1 の ビデオデー タ の場合、 内部の ピ ク セル ク ロ ッ ク を 7 で逓倍 し ます。 こ の ク ロ ッ ク は、PLL か ら BUFPLL プ リ ミ テ ィ ブへ配線 さ れ、 デバ イ ス全体を駆動 し ます。LVDS の送信は、 デバ イ ス の上半分ま た は下半分で のみ可能です。BUFPLL へ高速 ク ロ ッ ク を 駆動で き る 出力は、PLL の CLKOUT0 と CLKOUT1 のみです。BUFPLL には、 逓倍 さ れていない元の ソ ー ス ク ロ ッ ク と 同等の グ ロ ーバル ク ロ ッ ク 信号 (グ ロ ーバルバ ッ フ ァ ー (BUFG) を 介す る 任意の PLL 出力か ら 駆動可能) と PLL か ら の LOCKED 信号 (BUFPLL 内での同期に必要) が必要です。 こ れ ら 3 つの入力信号に よ っ て、 デバ イ ス の同 じ 片側に あ る 出力 SerDes プ リ ミ テ ィ ブへ高速送信 ク ロ ッ ク を分配で き 、ま た位相が適切に揃え ら れた SerDes ス ト ロ ーブ信号を用い る こ と で、FPGA ロ ジ ッ ク か ら 出力 SerDes への低速パ ラ レルデー タ を確実にキ ャ プチ ャ で き ます。 こ のパ ラ レルデー タ はその 後、 高速送信 ク ロ ッ ク を用いて出力用にシ リ ア ラ イ ズ さ れます。 転送 ク ロ ッ ク 出力は、 ク ロ ッ ク ラ イ ン に関連 し てい る 出力 SerDes へ一定値を送信す る こ と に よ っ て同 じ よ う に生成 さ れます。 た と えば、8:1 のデー タ に関連 し てい る 転送 DDR ク ロ ッ ク には、 パ タ ーン 10101010 が必要です。7:1ビデオ アプ リ ケーシ ョ ンの転送 ク ロ ッ ク には、1110000ま たは1111000が必要です。図15に、 必要な回路 と 出力 波形を示 し ます。X-Ref Target - Figure 14
図 14 : デシ リ ア ラ イ ズ係数が大き い場合のデー タ 送信
clock_generator_pll_s16_diff.v/vhd Differential Clock IOB
PLL LVDS Clock P
Parameters: S = serdes_factor PLLX = PLL multiplication factor CLKIN_PERIOD = Input clock period
Parameters: D = Number of data lines S = serdes_factor LVDS Clock N
SerDes Strobe
System Clock I/O Clock
X1 Clock
serdes_n_to_1_s16_diff.v/vhd D x S-Bit
Transmitter Data from FPGA Logic
Master OSERDES Slave OSERDES 2:1 Gearbox D Data Lines BUFPLL BUFG BUFG BUFIO2 Parameters D = 1 S = serdes_factor x1064_14_110609 serdes_n_to_1_s16_diff.v/vhd
Constant Data to Generate Appropriate Clock Output
Master OSERDES
Slave OSERDES 2:1
シ リ ア ラ イ ズ と デー タ 送信
デー タ 送信のためだけに PLL を使用す る 場合は、PLL での ス キ ュ ー調整は不要です。 し たがっ て、PLL の フ ィ ー ド バ ッ ク 用 OUT ピ ン を直接 IN ピ ンへ接続 し て内部フ ィ ー ド バ ッ ク を利用 し ます。
X-Ref Target - Figure 15
図 15 : PLL および BUFPLL を使用するデー タ 送信
clock_generator_pll_s8_diff.v/vhd Differential Clock IOB
PLL LVDS Clock P
Parameters: S = serdes_factor PLLX = PLL multiplication factor CLKIN_PERIOD = Input clock period
Parameters: D = Number of data lines S = serdes_factor LVDS Clock N
SerDes Strobe
System Clock I/O Clock
serdes_n_to_1_s8_diff.v/vhd D x S-Bit
Transmitter Data from FPGA Logic
Master OSERDES Slave OSERDES D Data Lines BUFPLL BUFG BUFIO2 Parameters: D = 1 S = serdes_factor x1064_15_121009 serdes_n_to_1_s8_diff.v/vhd
Constant Data to Generate Appropriate Clock Output
Master OSERDES Slave OSERDES Forwarded Clock
シ リ ア ラ イ ズ と デー タ 送信 1 つの FPGA で同 じ 規格のデー タ 受信 と デー タ 送信 を 実行 し て い る 場合、 送信 と 受信で PLL お よ び BUFPLL を共有で き ます。1 つの PLL は、 同 じ ク ロ ッ ク で 1 つ ま たは 2 つの BUFPLL を駆動で き ま す。PLL はデバ イ ス の上半分お よ び下半分にあ り ますが、 各 PLL はそれぞれの側に関連付け ら れてい ます。図16 に、 接続例を示 し ます。PLL が 4 つあ る いはそれ以下のデバ イ ス では、 その位置にかかわ ら ず、 ど の PLL も BUFPLL を駆動可能です。PLL が 5 つのデバ イ ス では、 デバ イ ス の上半分にあ る 真 ん中の PLL は BUFPLL を駆動で き ま せん。PLL の入力 ク ロ ッ ク は、BUFIO2 プ リ ミ テ ィ ブ を通 る ク ロ ッ ク 入力か ら 、 その ク ロ ッ ク ピ ンお よ び BUFIO2 と 同 じ 側 (デバ イ ス上部ま たは下部) に配置 さ れて い る PLL へ入 り ます。 ス キ ュ ー調整が必要な部分に フ ィ ー ド バ ッ ク 回路を設計す る 場合は、PLL への ク ロ ッ ク を駆動 し てい る BUFIO2 の隣にあ る BUFIO2 プ リ ミ テ ィ ブ を介す必要があ り ます。 フ ィ ー ド バ ッ ク は、PLL と 同 じ 側 (デバ イ ス上部ま たは下部) に配置 さ れてい る BUFIO2FB か ら のみ配線で き ま す。
X-Ref Target - Figure 16
図 16 : PLL と BUFPLL の接続 L6 BUFIO2 BUFIO2FB BUFPLL L7 L4 L5 L2 BUFIO2 BUFIO2FB L3 L0 L1 B7 BUFIO2 BUFIO2FB B5 B6 B4 T0 BUFIO2 BUFIO2FB T2 T1 T3 BUFPLL
Top-half PLLs can be driven by top-half BUFIO2 with feedback (if required) through top-half BUFIO2FB
Bottom-half PLLs can be driven by top-half BUFIO2 with feedback (if required) through bottom-half BUFIO2FB Can Drive Any BUFPLL PLL CLK2 CLK1 PLL CLK2 CLK1 PLL CLK2 CLK1 Can Drive Any BUFPLL Cannot Drive Any BUFPLL Cannot Drive Any BUFPLL Can Drive Any BUFPLL Can Drive Any BUFPLL PLL CLK2 CLK1 PLL CLK2 CLK1 PLL CLK2 CLK1 R1 BUFIO2 BUFIO2FB BUFPLL R0 R3 R2 T4 BUFIO2 BUFIO2FB T6 T5 T7 R5 BUFIO2 BUFIO2FB R4 R7 R6 B3 BUFIO2 BUFIO2FB B1 B2 B0 BUFPLL BUFPLL BUFPLL x1064_16_100509
シ リ ア ラ イ ズ と デー タ 送信
1
つの
PLL
と
2
つの
BUFPLL
を使用する
SDR
転送 ク ロ ッ ク に よ るデー タ 送信
こ のデー タ 送信方法の ト ポ ロ ジはシ ン プルです。 必要に応 じ て ト ラ ン ス ミ ッ タ ーの ソ ー ス ク ロ ッ ク を PLL で逓倍 し 、2つの SDR ト ラ ン ス ミ ッ タ ー ク ロ ッ ク を生成 し ます。 一方の ク ロ ッ ク の周波数は も う 一方の 2 倍です。 こ れ ら の ク ロ ッ ク は、 デバ イ ス の同 じ 片側にあ る PLL か ら 2 つの BUFPLL プ リ ミ テ ィ ブへ配線 さ れます。 それぞれは全体を駆動で き ますが、LVDS の送信は、 デバ イ ス の上半分ま たは 下 半 分 で の み 可 能 で す。BUFPLL へ 高 速 ク ロ ッ ク を 駆 動 で き る 出 力 は、PLL の CLKOUT0 と CLKOUT1 のみです。 デー タ 送信用の BUFPLL には、 逓倍 さ れていない元の ソ ース ク ロ ッ ク と 同等の グ ロ ーバル ク ロ ッ ク 信号 (グ ロ ーバルバ ッ フ ァ ー (BUFG) を介す る 任意の PLL 出力か ら 駆動可能) と PLL か ら の LOCKED 信号 (BUFPLL 内での同期に必要) が必要です。ま た、ク ロ ッ ク 送信用の BUFPLL には、 元の ク ロ ッ ク ソ ース の 2 倍の周波数で動作す る BUFG が必要で、 こ れは任意の PLL 出力か ら 生 成可能です。 BUFPLL への こ れ ら 3 つの入力信号に よ っ て、 デバ イ ス の同 じ 片側にあ る 出力 SerDes プ リ ミ テ ィ ブへ 高速送信 ク ロ ッ ク を分配で き 、 ま た位相が適切に揃え ら れた SerDes ス ト ロ ーブ信号を用い る こ と で、 FPGA ロ ジ ッ ク か ら 出力 SerDes への低速パ ラ レルデー タ を確実にキ ャ プチ ャ で き ます。 こ のパ ラ レル デー タ はその後、 高速送信 ク ロ ッ ク を用いて出力用にシ リ ア ラ イ ズ さ れます。 転送 ク ロ ッ ク 出力は、 ク ロ ッ ク ラ イ ン に関連 し てい る 出力 SerDes へ一定値を送信す る こ と に よ っ て同 じ よ う に生成 さ れ ま す が、 レー ト は内部 ク ロ ッ ク レー ト の 2 倍にな り ます。 た と えば、8:1 のデー タ に関連 し てい る 転送 DDR ク ロ ッ ク には、 パ タ ーン10101010が必要です。図17に、 必要な回路 と 出力波形を示 し ます。 デー タ 送信のためだけに PLL を使用す る 場合は、PLL での ス キ ュ ー調整は不要です。 し たがっ て、PLL の フ ィ ー ド バ ッ ク 出力ピ ン を直接出力ピ ンへ接続 し て内部フ ィ ー ド バ ッ ク を利用で き ます。X-Ref Target - Figure 17
図 17 : PLL および BUFPLL を使用する SDR デー タ 送信
Differential Clock IOB
PLL LVDS Clock P
LVDS Clock N
Internal x1 Transmit Clock and SerDes Strobe Internal x2 Transmit Clock and SerDes Strobe System Clock BUFPLL BUFPLL BUFG BUFIO2 x1064_17_092809
シ リ ア ラ イ ズ と デー タ 送信
BUFIO2
を
2
つ使用するデー タ 送信
送信に必要な ビ ッ ト レー ト の 1/2 の ソ ース ト ラ ン ス ミ ッ タ ー ク ロ ッ ク が利用可能な場合は、BUFIO2 プ リ ミ テ ィ ブ を 2 つ使用 し て出力デー タ と 転送 ク ロ ッ ク を生成で き ま す。 た と えば、311MHzの入力 ク ロ ッ ク は、622Mb/sでデー タ を生成 し 、311MHzの転送 ク ロ ッ ク を生成で き ます。 Spartan-6 FPGA の各入力 ク ロ ッ ク ピ ンは、 遅延プ リ ミ テ ィ ブが使用 さ れない限 り 、 一方のプ ラ イ マ リ BUFIO2 の非反転入力 と 、 も う 一方のプ ラ イ マ リ BUFIO2 の反転入力へ接続 さ れます。 こ れに よ り 、 位 相が 180℃ ずれた 2 つの ク ロ ッ ク が使用可能にな り ます。 こ れ ら の 2 つの ク ロ ッ ク は、 出力 SerDes と ク ロ ッ ク 入力がデバ イ ス の同 じ 片側にあ る 場合には、DDR 動作用に設定 さ れた各出力 SerDes 内で 2 倍 にで き ます。 さ ら に、 入力遅延プ リ ミ テ ィ ブが使用 さ れない こ と を前提 と す る と (通常、 デー タ 送信では使用 さ れな い)、 入力 ク ロ ッ ク はデバ イ ス の反対側にあ る BUFIO2 サ イ ト に も 供給可能なため、4 つの BUFIO2 を 使用 し てデバ イ ス全体を駆動す る こ と がで き ます。 BUFIO2 の一方を使用 し て、 内部パ ラ レル デー タ の低速 ク ロ ッ ク お よ び出力 SerDes プ リ ミ テ ィ ブで必 要な SerDes ス ト リ ーム ロ ーブキ ャ プチ ャ 信号を生成 し ま す。 低速 ク ロ ッ ク の出力は、 必要な SerDes 比で分周 さ れた後、 グ ロ ーバル バ ッ フ ァ を介 し て分配 さ れます。 た と えば、8:1 デー タ 伝送が必要な場 合は、311MHzの入力 ク ロ ッ ク が 8 分周 さ れます。 図18 に、 こ の例の回路 と 波形を示 し ます。X-Ref Target - Figure 18
図 18 : BUFIO2 を 2 つ使用するデー タ 送信
Differential Clock IOB
LVDS Clock P
Parameters D = Number of data lines S = serdes_factor LVDS Clock N System Clock serdes_n_to_1_s8_ddr_diff.v/vhd clock_generator_ddr_diff.v/vhd D x S-Bit Transmitter Data From FPGA Logic
Master OSERDES (DDR) Slave OSERDES (DDR) D Data Lines BUFG P I/O Clock SerDes Strobe N I/O Clock BUFIO2 (USE_DOUBLER=TRUE) BUFIO (I_INVERT=TRUE) Parameters D = 1 S = serdes_factor x1064_18_110609 serdes_n_to_1_s8_ddr_diff.v/vhd Constant Data to Generate Appropriate Clock Output Master OSERDES (DDR) Slave OSERDES (DDR) Forwarded Clock
シ リ ア ラ イ ズ と デー タ 送信
BUFIO2
を
1
つ使用するデー タ 送信
送信に必要な ビ ッ ト レー ト と 等 し い ソ ー ス ト ラ ン ス ミ ッ タ ー ク ロ ッ ク が利用可能な場合は、BUFIO2 プ リ ミ テ ィ ブ を 1 つ使用 し て出力デー タ と DDR 転送 ク ロ ッ ク を生成で き ます。 た と えば、622MHzの 入力 ク ロ ッ ク は、622Mb/sでデー タ を生成 し 、311MHzの転送 ク ロ ッ ク を生成で き ます。 入力 ク ロ ッ ク ピ ンは関連す る BUFIO2 へ接続 さ れ、デバ イ ス の同 じ 片側にあ る 関連す る 出力 SerDes す べて を駆動で き ます。 入力 ク ロ ッ ク はデバ イ ス の反対側にあ る BUFIO2 に も 供給可能です。 さ ら に、 入 力遅延プ リ ミ テ ィ ブが使用 さ れない こ と を前提 と す る と (通常、 デー タ 送信では使用 さ れない)、2 つの BUFIO2 を使用 し てデバ イ ス全体を駆動す る こ と がで き ます。 BUFIO2 を使用 し て、 内部パ ラ レ ル デー タ の低速 ク ロ ッ ク お よ び出力 SerDes プ リ ミ テ ィ ブで必要な SerDes ス ト リ ーム ロ ーブキ ャ プチ ャ 信号を生成 し ます。 低速 ク ロ ッ ク の出力は、 必要な SerDes 比で分 周 さ れた後、 グ ロ ーバル バ ッ フ ァ を介 し て分配 さ れ ま す。 た と えば、8:1 デー タ 伝送が必要な場合は、 622MHzの入力 ク ロ ッ ク を 8 分周 し ます。 図19 に、 こ の例の回路 と 波形を示 し ます。X-Ref Target - Figure 19
図 19 : BUFIO2 を 2 つ使用するデー タ 送信
Differential Clock IOB
LVDS Clock P
Parameters: D = Number of data lines S = serdes_factor LVDS Clock N System Clock serdes_n_to_1_s8_diff.v/vhd clock_generator_sdr_diff.v/vhd D x S-Bit Transmitter Data from FPGA Logic
Master OSERDES Slave OSERDES D Data Lines BUFG I/O Clock SerDes Strobe BUFIO2 Parameters: D = 1 S = serdes_factor x1064_19_110609 serdes_n_to_1_s8_diff.v/vhd Constant Data to Generate Appropriate Clock Output Master OSERDES Slave OSERDES Forwarded Clock
シ リ ア ラ イ ズ と デー タ 送信
2
つの
BUFPLL
を使用する
SDR
転送ク ロ ッ ク に よ るデー タ 送信
こ のデー タ 送信の ト ポ ロ ジ は、 デー タ 送信用に シ ン グ ルお よ びダ ブル レ ー ト モー ド で使用 さ れ る BUFIO2 と 、 関連す る SDR 転送 ク ロ ッ ク を組み合わせます。 ロ ーカル ト ラ ン ス ミ ッ タ ーの入力 ソ ース ク ロ ッ ク は 2 つの BUFIO2 へ接続 さ れ、 こ れ ら を使用 し て転 送 ク ロ ッ ク に関連 し てい る 出力 SerDes 内で 2 倍の ク ロ ッ ク が生成 さ れます。 一方、 出力デー タ ラ イ ン に関連 し てい る 出力 SerDes は 2 倍にな っ ていない ク ロ ッ ク を使用 し ます。 た と えば、622MHzの入力 ク ロ ッ ク が あ る 場合、 こ れ を デー タ 出力 SerDes プ リ ミ テ ィ ブへ接続 し 、 622Mb/sのデー タ を 生成で き ま す。 ま た、 両方の BUFIO2 ク ロ ッ ク と ク ロ ッ ク 出力 SerDes で DDR モー ド を使用す る こ と で、 一定値パ タ ーン 10101010 を用いて 622MHzの ク ロ ッ ク を再生成す る こ と も 可能です。BUFIO2 は、 必要な SerDes 比 と 等 し い分周パ ラ メ ー タ ーを設定す る こ と で、 分周 ク ロ ッ ク を提供す る よ う に設定 さ れます。 た と えば、622MHzの入力 ク ロ ッ ク を 8 分周す る と 内部シ ス テ ム ク ロ ッ ク が77.75MHz の 8:1 出力 SerDes 動作が実現 し ます。 図20 に、 こ の例の回路 と 波形を示 し ます。X-Ref Target - Figure 20
図 20 : BUFIO2 を 2 つ使用する SDR デー タ 送信
Differential Clock IOB
LVDS Clock P
Parameters: D = Number of data lines S = serdes_factor LVDS Clock N System Clock serdes_n_to_1_s8_ddr_diff.v/vhd clock_generator_ddr_s8_diff.v/vhd D x S-bit Transmitter Data from FPGA Logic
Master OSERDES Slave OSERDES D Data Lines BUFG BUFIO2 P I/O Clock N I/O Clock I/O Clock SerDes Strobe SerDes Strobe BUFIO2 (USE_DOUBLER=TRUE) BUFIO (I_INVERT=TRUE) Parameters: D = 1 S = serdes_factor x1064_20_110609 serdes_n_to_1_s8_diff.v/vhd Constant Data to Generate Appropriate Clock Output Master OSERDES Slave OSERDES Forwarded Clock
設計に関する考察事項
設計に関する考察
事項
シ ングルエ ン ド のデー タ および ク ロ ッ ク を使用する ト ラ ン ス ミ ッ タ ー
ト ラ ン ス ミ ッ タ ーの例すべてで、 差動 ク ロ ッ ク お よ びデー タ 信号を使用 し てい ます。 送信でシ ン グルエ ン ド の ク ロ ッ ク ま たはデー タ 信号が必要な場合、SerDes 係数が 4 よ り 大 き い場合に制約が生 じ ます。デ ザ イ ン フ ァ イ ル (serdes_n_to_1_s8_se.v/vhd) に、SerDes 係数が 2 ~ 8 の場合のシ ン グルエン ド 出力 (転送 ク ロ ッ ク ま たはデー タ のいずれか) 用のシ リ ア ラ イ ザーロ ジ ッ ク が含まれてい ます。SerDes 係数が 4 以下の場合、OSERDES2 を 1 つのみ使用 し て隣接す る デバ イ ス ピ ン で 1 つのデー タ バ ス を 形成 し ます。SerDes 係数が 5 ~ 8 の場合は、OSERDES2 が 2 つ必要 と な り 、 ア ク テ ィ ブな出力 (マ ス タ ー、つま り _pピ ン) の隣 り の ピ ンは、同期出力 と し て使用 し ない よ う にブ ロ ッ ク し ます (必要な ロ ジ ッ ク はすでに使用 さ れてい る ため)。シ ングルエ ン ド のデー タ および ク ロ ッ ク を使用する レ シーバー
レ シーバーの例すべてで、 差動 ク ロ ッ ク お よ びデー タ 信号を使用 し てい ます。 受信 し た ク ロ ッ ク/デー タ がシ ン グルエン ド 信号の場合、 制約が生 じ ます。 差動デー タ 信号 と 差動 ク ロ ッ ク 提供 さ れてい る すべてのデザ イ ン フ ァ イ ルお よ びテ ク ニ ッ ク が有効です。 シ ングルエ ン ド デー タ 信号 と 差動ク ロ ッ ク ク ロ ッ ク は、 前の例で示 し た よ う に受信 さ れます。 デー タ は、 デザ イ ン フ ァ イ ル (serdes_1_to_n_data_s8_se.v/vhd) を使用 し て受信 さ れ ま す。SerDes 係数が 4 以下で位相検出 回路を使用 し ない場合、 レ シーバーは ISERDES2 を 1 つのみ使用 し て隣接す る デバ イ ス ピ ンで 1 つの デー タバ ス を形成 し ます。SerDes 係数が 5 ~ 8 で位相検出回路を使用す る 場合は、ISERDES2 が 2つ 必要 と な り 、 ア ク テ ィ ブな入力 (マ ス タ ー、 つま り _pピ ン) の隣 り の ピ ンは、 同期入力 と し て使用 し な い よ う にブ ロ ッ ク し ます (必要な ロ ジ ッ ク はすでに使用 さ れてい る ため)。 差動デー タ 信号 と シ ングルエ ン ド ク ロ ッ ク デー タ は、 前の例で示 し た よ う に受信 さ れます。PLL ク ロ ッ キ ン グが必要な と き 、 ク ロ ッ ク は、 デザ イ ン フ ァ イ ル (serdes_1_to_n_clk_pll_s8_se.v/vhd) を使用 し て受信 さ れ ま す。SerDes 係数が 4 以下の場合 (ま たは ま っ た く 必要ない場合)、 ク ロ ッ ク レ シーバーは IISERDES2 を 1 つのみ使用 し て隣 接す る ク ロ ッ ク ピ ン を使用 し ます。SerDes 係数が 5 ~ 8 の場合は、ISERDES2 が 2 つ必要 と な り 、 ア ク テ ィ ブな ク ロ ッ ク 入力 (マ ス タ ー、つま り _pク ロ ッ ク ピ ン) の隣 り の ク ロ ッ ク ピ ンは、同期入力 と し て使用で き ません (必要な ロ ジ ッ ク はすでに使用 さ れてい る ため)。 ただ し 、 こ の ピ ンは ク ロ ッ ク 入力 と し て使用で き ます。 SDR の BUFIO2 デー タ 受信が必要な場合は、 フ ァ イ ル (serdes_1_to_n_clk_sdr_s8_se.v/vhd) を使用 し ま す。SerDes 係数が 4 以下の場合 (ま たは ま っ た く 必要な い場合)、 ク ロ ッ ク レ シーバーは IISERDES2 を 1 つのみ使用 し て隣接す る ク ロ ッ ク ピ ン を使用 し ます。SerDes 係数が 5 ~ 8 の場合は、 ISERDES2 が 2 つ必要 と な り 、 ア ク テ ィ ブな ク ロ ッ ク 入力 (マ ス タ ー、 つ ま り _pク ロ ッ ク ピ ン) の隣 り の ク ロ ッ ク ピ ンは、 同期入力 と し て使用で き ません (必要な ロ ジ ッ ク はすでに使用 さ れてい る ため)。 ただ し 、 こ の ピ ンは ク ロ ッ ク 入力 と し て使用で き ます。 DDR の BUFIO2 デー タ 受信は さ ら に複雑です。 シ ン グルエ ン ド ク ロ ッ ク ピ ンは、 入力遅延を介 し て BUFIO2 の 1 つに し か供給で き ないため、DDR 受信で必要 と な る 2 つの BUFIO2 へのア ク セ ス は制限 さ れます。 こ の場合の ソ リ ュ ーシ ョ ン と し て、 入力のシ ン グルエン ド ク ロ ッ ク を同時に 2 つの入力ピ ン へ供給 し ます。マ ス タ ー (_p) ピ ンは、入力遅延を介 し て 1 つ目の BUFIO2 へ直接接続 し 、 ス レーブ (_n) ピ ンは、IOB で ク ロ ッ ク を反転 さ せてか ら 2 つ目の入力遅延を介 し て 2 つ目の BUFIO2 へ接続 し ます。 こ の例のデザ イ ン フ ァ イ ルは、serdes_1_to_n_clk_ddr_s8_se.v/vhdです。レ シーバの タ イ ミ ング解析 シ ングルエ ン ド デー タ と ク ロ ッ ク 信号 デー タ は、 デザ イ ン フ ァ イ ル (serdes_1_to_n_data_s8_se.v/vhd) を使用 し て受信 さ れます。SSerDes 係数が 4 以下で位相検出 回路を使用 し ない場合、 レ シーバーは ISERDES2 を 1 つのみ使用 し て隣接す る デバ イ ス ピ ンで 1 つの デー タバ ス を形成 し ます。SerDes 係数が 5 ~ 8 で位相検出回路を使用す る 場合は、ISERDES2 が 2つ 必要 と な り 、 ア ク テ ィ ブな入力 (マ ス タ ー、 つま り _pピ ン) の隣 り の ピ ンは、 同期入力 と し て使用で き ません (必要な ロ ジ ッ ク はすでに使用 さ れてい る ため)。 SDR の BUFIO2 デー タ 受信が必要な場合は、 フ ァ イ ル (serdes_1_to_n_clk_sdr_s8_se.v/vhd) を使用 し ま す。SerDes 係数が 4 以下の場合 (ま たは ま っ た く 必要な い場合)、 ク ロ ッ ク レ シーバーは IISERDES2 を 1 つのみ使用 し て隣接す る ク ロ ッ ク ピ ン を使用 し ます。SerDes 係数が 5 ~ 8 の場合は、 ISERDES2 が 2 つ必要 と な り 、 ア ク テ ィ ブな ク ロ ッ ク 入力 (マ ス タ ー、 つ ま り _pク ロ ッ ク ピ ン) の隣 り の ク ロ ッ ク ピ ンは、 同期入力 と し て使用で き ません (必要な ロ ジ ッ ク はすでに使用 さ れてい る ため)。 ただ し 、 こ の ピ ンは ク ロ ッ ク 入力 と し て使用で き ます。 DDR の BUFIO2 デー タ 受信は さ ら に複雑です。 シ ン グルエ ン ド ク ロ ッ ク ピ ンは、 入力遅延を介 し て BUFIO2 の 1 つに し か供給で き ないため、DDR 受信で必要 と な る 2 つの BUFIO2 へのア ク セ ス は制限 さ れます。 こ の場合の ソ リ ュ ーシ ョ ン と し て、 入力のシ ン グルエン ド ク ロ ッ ク を同時に 2 つの入力ピ ン へ供給 し ます。マ ス タ ー (_p) ピ ンは、入力遅延を介 し て 1 つ目の BUFIO2 へ直接接続 し 、 ス レーブ (_n) ピ ンは、IOB で ク ロ ッ ク を反転 さ せてか ら 2 つ目の入力遅延を介 し て 2 つ目の BUFIO2 へ接続 し ます。 こ の例のデザ イ ン フ ァ イ ルは、serdes_1_to_n_clk_ddr_s8_se.v/vhdです。
レ シーバの タ イ ミ
ング解析
レ シーバーの タ イ ミ ン グ解析では、 タ イ ミ ン グのエ ラ ーやば ら つ き の さ ま ざ ま な要因を ビ ッ ト 周期か ら 差 し 引 き ます (単位はビ ッ ト レー ト に相当す る ピ コ 秒 (ps))。 こ の解析後に残っ た値が、 シ ス テ ム で有効 なマージ ン と な り ます。 こ の値が正の場合は、 シ ス テ ムには十分なマージ ンがあ り 、 正常に機能す る こ と を意味 し ます。 レ シーバース キ ュ ーマージ ン (RSKM) は、 同様のデシ リ ア ラ イ ズ機能を実行す る ASSP やその他のデ バ イ ス のデー タ シー ト で よ く 見かけ る 仕様です。 こ の値は、 ビ ッ ト 周期か ら レ シーバーに内在す る ば ら つ き のみを差 し 引いて、2 で除算 し た も のです。図21に、RSKM を示 し ます。X-Ref Target - Figure 21
図 21 : レ シーバースキ ュ ーマージ ン Bit Period Sample Window RSKM RSKM Clock Uncertainty/2 Clock Uncertainty/2 x1064_21_051710
レ シーバの タ イ ミ ング解析
位相検出回路を使用 し ない場合のばら つ き
こ のアプ リ ケーシ ョ ン ノ ー ト で説明 し てい る イ ン タ ーフ ェ イ ス で、 キ ャ リ ブ レーシ ョ ン回路を使用 し 、 位相検出回路は未使用の場合には、 次の よ う な も のが タ イ ミ ン グのば ら つ き の要因にな り ます。 • すべての不一致お よ びシ リ コ ンの特性に よ る 変動は、1 つのパ ラ メ ー タ ー (TSAMP_BUFIO2) で表 さ れ ま す。 こ の値は、LVDS 信号 を 使用す る Spartan-6 デバ イ ス すべて で特性評価で 480ps以内 と な っ てい ます。 こ の値には、IOB フ リ ッ プ フ ロ ッ プ内で同期化 さ れた ク ロ ッ ク に対 し てデー タ が有 効に現れ る タ イ ミ ン グ を示すデバ イ ス のセ ッ ト ア ッ プ/ホール ド ウ ィ ン ド ウ が含 ま れ ま す (UI (ユ ニ ッ ト イ ン タ ーバル) 遅延の 1/2 にな る よ う に入力デー タ ラ イ ン がキ ャ リ ブ レ ー ト さ れ る こ と を 前提 と す る)。 • パ ッ ケージス キ ュ ー こ の値は、パ ッ ケージにおけ る 入力 ラ イ ンの配置に よ っ て変動 し 、デザ イ ン を解析 し た際に TRACE か ら わか り ます。 • ク ロ ッ ク ツ リ ー ス キ ュ ー BUFIO2 の ク ロ ッ ク は、 完全な ク ロ ッ ク ツ リ ー方式で設計 さ れてい る ため、IOB ス キ ュ ーは非常 に小 さ く な り ます。 各デバ イ ス の正確な値お よ び配置は、FPGA Editor で得 る こ と がで き ます。 • ジ ッ タ ーお よ び タ イ ミ ン グのば ら つ きク ロ ッ キ ン グ ウ ィ ザー ド (ISE® の Core Generator™ ツールに含まれ る) が ト ラ ン ス ミ ッ タ ー PLL で累積 さ れたジ ッ タ ーの値を生成 し ます。
位相検出回路を使用する場合のばら つ き
こ のアプ リ ケーシ ョ ン ノ ー ト で説明 し てい る イ ン タ ーフ ェ イ ス で、 位相検出回路を使用す る 場合には、 次の よ う な も のが タ イ ミ ン グのば ら つ き の要因にな り ます。 • 位相検出機能の精度 FPGA ロ ジ ッ ク 内の位相検出回路お よ びス テー ト マシ ンのデザ イ ン に よ っ てサ ン プ リ ン グ ポ イ ン ト が決ま り 、 こ れは理想的なサンプ リ ン グポ イ ン ト の ±2 遅延 タ ッ プ以内です。PLL が生成す る サ ンプ リ ン グ ク ロ ッ ク の位相エ ラ ーは、 ば ら つ き の要因にな り ません。 • パ ッ ケージ ス キ ュ ー こ の値は、パ ッ ケージにおけ る 入力 ラ イ ンの配置に よ っ て変動 し 、デザ イ ン を解析 し た際に TRACE か ら わか り ます。 • ジ ッ タ ーお よ び タ イ ミ ン グのば ら つ きク ロ ッ キ ン グウ ィ ザー ド (ISE® の Core Generator™ ツールに含まれ る) が ト ラ ン ス ミ ッ タ ー PLL で累積 さ れたジ ッ タ ーの値を生成 し ます。 入力遅延 ラ イ ンは、 ア ク テ ィ ブな遅延 ラ イ ン で最大 32 回ま で使用 さ れ る 8 グループの タ ッ プ遅延で構 成 さ れてい ます (合計 256 タ ッ プ遅延に相当)。DS162 : 『Spartan-6 FPGA デー タ シー ト : DC 特性お よ びス イ ッ チ特性』 で、 各 タ ッ プの最大遅延値が指定 さ れてい ます。表1に、 計算例を示 し ます。 表 1 : タ ッ プ間における最大遅延の計算例 遅延値の例 計算 連続する 4 タ ッ プの総遅延
TTAP1 61ps TTAP1か ら TTAP5の遅延 170ps
TTAP2 77ps TTAP2か ら TTAP6の遅延 215ps
TTAP3 140ps TTAP3か ら TTAP7の遅延 203ps
ト ラ ン ス ミ ッ タ ーの タ イ ミ ング解析 表1 の例を解析 し た結果、4 タ ッ プ間の ワース ト ケース遅延値は 258psと な り ま し た。 こ の例に よ る と 、 位相検出機能を使用す る 場合には、±129psの遅延値をすべての計算に用い る こ と が推奨 さ れます。 別の RSKM 計算例 (表2) では、945Mb/sでデー タ 転送を行 う ために、135MHzで動作す る 入力 ク ロ ッ ク を用いて PLL で 945MHzま で逓倍 し てい ます。
ト ラ ン ス ミ ッ タ ー
の タ イ ミ ン グ解析
こ のアプ リ ケーシ ョ ン ノ ー ト で説明 し てい る イ ン タ ーフ ェ イ ス では、次の よ う な も のが タ イ ミ ン グのば ら つ き の要因にな り ます。 • パ ッ ケージ ス キ ュ ー こ の値は、パ ッ ケージにおけ る 入力 ラ イ ンの配置に よ っ て変動 し 、デザ イ ン を解析 し た際に TRACE か ら わか り ます。 • ジ ッ タ ーお よ び タ イ ミ ン グのば ら つ きク ロ ッ キ ン グ ウ ィ ザー ド (ISE の Core Generator ツールに含ま れ る) が ト ラ ン ス ミ ッ タ ー PLL で累 積 さ れたジ ッ タ ーの値を生成 し ます。
リ フ ァ レ ン ス
デザ
イ ン
フ ァ イル
こ のアプ リ ケーシ ョ ン ノ ー ト で説明 し たほぼすべてのサン プルデザ イ ンは、Verilog と VHDL の両方 で提供 さ れてい ま す (https://secure.xilinx.com/webreg/clickthrough.do?cid=140956)。 それぞれの フ ァ イ ル名は、 こ こ で説明 し た アプ リ ケーシ ョ ンの図中に記載 さ れてい ます。 フ ラ ッ ト パネルデ ィ ス プ レ イ やカ メ ラ で使用 さ れ る 7:1 イ ン タ ーフ ェ イ ス な ど頻繁に利用 さ れ る アプ リ ケーシ ョ ン用の最上位フ ァ イ ルお よ び タ イ ミ ン グ制約のサンプル も 含まれてい ます。 デー タ 入力モジ ュ ールお よ びデー タ 出力モジ ュ ールは、 入力幅 (入力ピ ン の数) と 深 さ (必要な SerDes 係数) を共にパ ラ メ ー タ ー指定可能で、 シ ン グルエン ド I/O と 差動 I/O の両方の対応 し ます。 ま た、 デー タ レ シーバー モジ ュ ールには、 入力バ ス の ス キ ュ ー調整が必要なサン プル デザ イ ンに位相検出 ロ ジ ッ ク の生成が必要か ど う か を示す信号が含まれてい ます。 位相検出モー ド を常に有効にす る こ と で、 デー タ 損失を起 こ さ ずに入力遅延のキ ャ リ ブ レーシ ョ ン を実行で き ま す。 位相検出 ロ ジ ッ ク を追加す る と 、 よ り 高いビ ッ ト レー ト で信頼性の高い動作が可能にな り 、入力デー タ の入力 ク ロ ッ ク に対す る 位相関係 が不明な場合に も 対応 し ます。 レ シーバー モジ ュ ールで生成 さ れ る パ ラ レ ル デー タ は、 出力ビ ッ ト 幅 が深 さ で乗算 さ れ ます。 た と えば、7:1 の 6 ビ ッ ト バ ス を受信 し た場合、 各シ ス テ ム ク ロ ッ ク サ イ ク ルで 42 ビ ッ ト を出力 し ます。 表3に リ フ ァ レ ン スデザ イ ンの概要を示 し 、表4にデバ イ ス の リ ソ ース使用率を示 し ます。TTAP7 343ps TTAP7 か ら TTAP3 の遅延 203ps
TTAP8 424ps TTAP8 か ら TTAP4 の遅延 258ps
表 2 : RSKM 計算例 945Mb/sでのビ ッ ト 周期 1058ps パ ッ ケージ ス キ ュ ー