AR# 39993

|

LogiCORE OBSAI v4.2 - GTX トランシーバー : Delay Aligner のエラッタおよび回避策

説明

LogiCORE OBSAI IP は、データ パスのレイテンシを確約するため、TX および RX バッファーの両方をバイパスします。(ザイリンクス アンサー 39430) で説明されている Virtex-6 GTX Delay Aligner のエラッタ項目が LogiCORE OBSAI IP に影響します。詳細は、エラッタ EN142 およびザイリンクス変更通知 XCN11009 を参照してください。

OBSAI IP を使用しているデザインは、TX および RX バッファーをバイパスする必要があり、またデータ パスのレイテンシを確約するため以下の回避策をインプリメントする必要があります。

次の手順に従うと、この問題を回避できます。

ソリューション

TX クロッキング

手順 1
Delay Aligner の問題を修正するには、GTX の TXOUTCLK がパスに BUFG がない状態で直接 MMCM を駆動する必要があります。デフォルトで、ラッパーの TXOUTCLK には BUFG が含まれているので、gtx_and_clocks.vhd の次の行を以下のように変更して、BUFG を削除する必要があります。

-- TX Clocking (MMCM generate txusrclk2 from GT refclk out)
tx_clk_gen_i : tx_clk_gen
port map (
refclk => refclkout_b,
reset => tx_clk_gen_reset,

-- DRP
dclk => aux_clk,
daddr => mmcm_drp_daddr,
den => mmcm_drp_den,
di => mmcm_drp_di,
dwe => mmcm_drp_dwe,
drdy => mmcm_drp_drdy,
do => mmcm_drp_do,

usrclk2 => txusrclk2,
clk_ok => tx_clk_ok
);

変更後 :

-- TX Clocking (MMCM generate txusrclk2 from GT refclk out)
tx_clk_gen_i : tx_clk_gen
port map (
refclk => txoutclk,
reset => tx_clk_gen_reset,

-- DRP
dclk => aux_clk,
daddr => mmcm_drp_daddr,
den => mmcm_drp_den,
di => mmcm_drp_di,
dwe => mmcm_drp_dwe,
drdy => mmcm_drp_drdy,
do => mmcm_drp_do,

usrclk2 => txusrclk2,
clk_ok => tx_clk_ok
);

手順 2
MMCM が TXOUTCLK を供給する MGT と同じ領域にあることを確認します。

RX クロッキング

Delay Aligner の問題を修正するには、GTX の出力クロックで駆動されている BUFR で GTX RXUSRCLK2 が駆動される必要があります。デフォルトでは、ラッパーの RXUSRCLK2 は既に BUFR で駆動されています。

Delay Aligner

Tx Delay Aligner および Rx Delay Aligner の両方を無効にするには、次の変更を行います。

手順 1
gtx_wrapper.vhd ファイルにある gtx0_gtx_wrapper_i のインスタンシエーションで、ジェネリック GTX_POWER_SAVE を 0000000100 から 0000110100 に変更します。

POWER_SAVE 属性を変更すると ISE 12.4、12.3、12.2 ソフトウェアで DRC エラーが発生します。同じエラーはシミュレーションでも発生します。これらの問題の回避策は (ザイリンクス アンサー 39434) を参照してください。



gtx_and_clocks.vhd で次のコードを変更して Tx Delay Aligner を無効にします。

手順 2

txdlyaligndisable をオフにします。

次の行を検索します。

tx_sync_i : TX_SYNC
port map (
TXENPMAPHASEALIGN => txenpmaphasealign,
TXPMASETPHASE => txpmasetphase,
TXDLYALIGNDISABLE => txdlyaligndisable,
TXDLYALIGNRESET => txdlyalignreset,
SYNC_DONE => tx_sync_done,
USER_CLK => txusrclk2,
RESET => tx_sync_reset
);

次のように変更します。

tx_sync_i : TX_SYNC
port map (
TXENPMAPHASEALIGN => txenpmaphasealign,
TXPMASETPHASE => txpmasetphase,
TXDLYALIGNDISABLE => open,
TXDLYALIGNRESET => txdlyalignreset,
SYNC_DONE => tx_sync_done,
USER_CLK => txusrclk2,
RESET => tx_sync_reset
);

txdlyaligndisable <= '1';


手順 3

rxdlyaligndisable をオフにします。

次の行を検索します。

rxdlyaligndisable <= '1' when (speed_select(1 downto 0) /= "00") else '0';

次のように変更します。

rxdlyaligndisable <= '1';

手順 4
aligner_reset をオフにします。

次の行を検索します。

-- Rx Delay Aligner reset held until Rx Phase Align completes
-- (and always held reset at lowest 2 line rates where it is not required)
aligner_reset <= '1' when (rx_sync_done = '0') or
(speed_select(1 downto 0) /= "00") else '0';

次のように変更します。

aligner_reset <= '1';


手順 5
aligner_lock をオフにします。

次の行を検索します。

-- Aligner lock term is needed at higher line rates when Aligner is used
aligner_lock_i <= '1' when (speed_select(1 downto 0) /= "00") else aligner_lock;

次のように変更します。

aligner_lock_i <= '1';

クロック構造

BUFG の遅延を正しく補正するために MMCM を使用する場合、MMCM の内部分周器を使用する必要があります。そのため、アンサー39430 で記述されているクロック構造は、OBSAI IP には使用できません。 clkout0 を使用してuserclk を駆動し、clkfbout ピンに 2 つめの BUFG を使用して、この BUFG の出力を MMCM の入力である clkfbin ピンに入力する必要があります。

example_design/gtx_and_clock ディレクトリにある tx_clk_gen.vhd ファイルを次のように変更します。

手順 6
clkfbout 信号を追加します。

signal clkfbout : std_logic;

手順 7
BUFG を clkfb に追加します。

clkfb_bufg : bufg
port map (
I => clkfbout,
O => clkfb);

手順 8
pll_i : MMCM_ADV のインスタンシエーションで次の行を検索します。

CLKFBOUT => clkfb,

次のように変更します。

CLKFBOUT => clkfbout,

アンサー レコード リファレンス

マスター アンサー レコード

Answer Number アンサータイトル 問題の発生したバージョン 修正バージョン
36971 LogiCORE IP OBSAI - リリース ノートおよび既知の問題 N/A N/A

関連アンサー レコード

Answer Number アンサータイトル 問題の発生したバージョン 修正バージョン
39430 Virtex-6 GTX トランシーバー - Delay Aligner のエラッタおよび回避策 N/A N/A
AR# 39993
日付 05/20/2012
ステータス アーカイブ
種類 既知の問題
デバイス 詳細 概略
ツール
IP
People Also Viewed