UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 60489

7 Series FPGAs Transceivers Wizard v3.2 以前のデザイン アドバイザリ - GTH/GTP プロダクションの RX リセット シーケンスが停止することがある

説明

GTPE2 + GTHE2 のウィザードの RX モジュールでは、(ザイリンクス アンサー 53779) および (ザイリンクス アンサー 53561) に記述されている 7 シリーズGTH および GTP プロダクション RX リセット シーケンス要件に従って、一連の DRP 操作が実行されます。
 
これらの操作は、次のとおりです。

(a) 内部データ幅の DRP 値を読み出します。
(b) DRP 値を書き込みます (16 ビット内部データ幅に強制)。
(c) (a) で読み出された DRP 値を書き込み、元の内部データ幅を復元します。
 
(b) の後、(c) の前にモジュールがユーザーによる別のリセットを受信すると、次の反復の (a) で 16 ビット内部データ幅が読み出され、シーケンスの最後で 16 ビット内部データ幅が復元されます。

そのため、トランシーバーが恒久的に 16 ビット モードになってしまい、元に戻すにはデバイスを再プログラムするしかありません。

ソリューション

この問題は、Vivado 2014.2 のウィザード v3.3 で修正されています。
 
v3.2 以前のウィザードでは、次の回避策を使用してください。

RX シーケンス モジュール ファイルの例がこのアンサーの末尾に添付されています。

 

1.  下のモジュールを RX シーケンス モジュールに追加します。
 
reg flag =1'b0;
reg [15:0] original_rd_data;
always @ (posedge DRPCLK)
begin
if( state == wr_16 || state == wait_pmareset || state == wr_20 || state == wait_wr_done1)
           flag <= 1'b1;
else if(state == wait_wr_done2)
           flag <= 1'b0;
end
always @ (posedge DRPCLK)
begin
if( state == wait_rd_data && DRPRDY == 1'b1 && flag == 1'b0)
            original_rd_data <= DRPDO;
end
 
2. センシティビティ リストにフラグと original_rd_data を追加します。

次のロジックを入力します。
 

always @ (DRPRDY or state or rd_data or DRPDO or gtrxreset_ss or flag or original_rd_data) begin

 
これを、次の部分と置き換えます。
 

always @ (DRPRDY or state or rd_data or DRPDO or gtrxreset_ss) begin


3. wait_rd_data ステートのロジックを置換します。

次のロジックを入力します。
 
wait_rd_data : begin
                                gtrxreset_i = 1'b1;
                if (DRPRDY && !flag) begin
                                next_rd_data = DRPDO;
               end
               else if (DRPRDY && flag) begin
                               next_rd_data = original_rd_data;
               end
               else  begin 
                              next_rd_data = rd_data;
               end
               end
 
これを、次の部分と置き換えます。
 
wait_rd_data : begin 
                                 gtrxreset_i = 1'b1;
                if (DRPRDY)
                                next_rd_data = DRPDO;
                else
                                next_rd_data = rd_data;
                end

影響を受ける IP :

影響を受ける各 IP の詳細は、IP のアンサーを参照してください。


改訂履歴
2014/08/15 - DisplayPort のアンサーを追加
2014/06/23 - Aurora 8B10B のアンサーを追加

2014/05/22 - 初版



添付ファイル

関連添付ファイル

タイトル サイズ ファイルタイプ
gtp_gtrxreset_seq.v 6 KB V

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

関連アンサー レコード

AR# 60489
日付 08/22/2014
ステータス アクティブ
種類 デザイン アドバイザリ
デバイス
  • Artix-7
  • Virtex-7
  • Virtex-7 HT
  • Zynq-7000
IP
  • 7 Series FPGAs Transceivers Wizard
このページをブックマークに追加