AR# 51964

LogiCORE IP DisplayPort v3.2 - GTP 2 バイト モード インターフェイスのクロック供給構造

説明

DisplayPort v3.2 コアは GTP トランシーバーで 2 バイト インターフェイスを使用します。Spartan-6 FPGA をターゲットにしている場合、DisplayPort コアは 1 バイト インターフェイスのクロック供給構造を使用しますが、これは DisplayPort インプリメンテーションには不十分です。

『Spartan-6 FPGA GTP トランシーバー ユーザー ガイド』 (UG386) -- 「GTPCLKOUT Driving a GTP TX in 2-Byte Mode」のセクションに、2 バイト インターフェイス インプリメンテーションの正しいクロック供給構造が説明されています。

ソリューション

回避策 :

DisplayPort v3.2 コアを生成した後、次の方法に従って GTP の 2 バイト モードで使用するためにクロック供給方法を修正してください。

1) <project_directory>/src フォルダーで <core_name>_rx_phy.v(hd) を検索します。

2) DCM_SP インスタンシエーションを検索し、このセクションのコメントを外します。デフォルトではこの DCM_SP は次のようにコメントアウトされています。

    //---------------------------------------------------------------------
    // Uncomment this code if DCM_SP is to be used instead of BUFIO2
    //---------------------------------------------------------------------
    //     DCM_SP
    //     #(.CLKDV_DIVIDE          (5.000),
    //       .CLKFX_DIVIDE          (20),
    //       .CLKFX_MULTIPLY        (2),
    //       .CLKIN_DIVIDE_BY_2     ("TRUE"),
    //       .CLKIN_PERIOD          (3.704),
    //       .CLKOUT_PHASE_SHIFT    ("NONE"),
    //       .CLK_FEEDBACK          ("1X"),
    //       .DESKEW_ADJUST         ("SYSTEM_SYNCHRONOUS"),
    //       .PHASE_SHIFT           (0),
    //       .STARTUP_WAIT          ("FALSE"))
    //     rx_div2_inst
    //       // Input clock
    //      (.CLKIN                 (i_clkout0),
    //       .CLKFB                 (i_clkout2_buf),
    //       // Output clocks
    //       .CLK0                  (i_clkout2), // 135 / 81
    //       .CLK90                 (),
    //       .CLK180                (),
    //       .CLK270                (),
    //       .CLK2X                 (i_clkout0_dcm), // 270 / 162
    //       .CLK2X180              (),
    //       .CLKFX                 (),
    //       .CLKFX180              (),
    //       .CLKDV                 (),
    //       // Ports for dynamic phase shift
    //       .PSCLK                 (1'b0),
    //       .PSEN                  (1'b0),
    //       .PSINCDEC              (1'b0),
    //       .PSDONE                (),
    //       // Other control and status signals
    //       .LOCKED                (i_rec_clk_dcm_locked),
    //       .STATUS                (),
    //       .RST                   (~i_pll_lock_detect_tile_0),
    //       // Unused pin- tie low
    //       .DSSEN                 (1'b0));

3) BUFIO2 インスタンシエーションを検索し、このセクションをコメントアウトします。デフォルトでは DCM_SP の代わりに BUFIO2 が使用されます。たとえば次のようになります。
注記 : BUFIO2 を使用する場合は (ザイリンクス アンサー 56113) を参照してください。

   // Using BUFIO2 to generate RXUSRCLK2 from GTP rec clock
    BUFIO2 #(.DIVIDE_BYPASS("FALSE"),
             .DIVIDE(2))
    rx_div2_inst
    (
        .DIVCLK(i_clkout2),
        .IOCLK(),
        .SERDESSTROBE(),
        .I(gtp_rx_rec_clk)
    );

4) 次のロック信号をコメントアウトします。<core_name>_rx_phy.v(hd) には if generate 文がいくつかあるので、コードの spartan6 の箇所の次の信号を変更する必要があります (このモジュールの一番初めのもの)。
   
     assign i_rec_clk_dcm_locked = 1'b 1;

5) i_clkout0_dcm から入力が得られるように、clkout_0 信号の次の BUFG を変更します。

    元の BUFG (変更前) :

    BUFG clkout0_bufg_inst
    (
        .O              (i_clkout0_buf),
        .I              (i_clkout0)
    );

    これを次のように変更します (変更後)。

    BUFG clkout0_bufg_inst
    (
        .O                (i_clkout0_buf),
        .I                (i_clkout0_dcm)
    );

LogiCORE IP DisplayPort のリリース ノートおよび既知の問題は、(ザイリンクス アンサー 33258) を参照してください。

改訂履歴
2013/2/6 - 初版
2013/2/8 - BUFG およびロック信号に変更

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

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

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

関連アンサー レコード

Answer Number アンサータイトル 問題の発生したバージョン 修正バージョン
56113 Spartan-6 BUFIO2 のデザイン アドバイザリ - DIVIDE = 2 の問題 N/A N/A
AR# 51964
日付 06/06/2013
ステータス アーカイブ
種類 一般
デバイス
IP