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# 45859

PCI Express デザイン アシスタント - Virtex-6 Integrated Block for PCI Express を使用しているときのレシーバー検出バイパス方法

説明


レシーバーがリンクの一方にあるかどうかを検出するため、レシーバー検出がトランスミッターにより使用されます。Virtex-6 Integrated Block for PCI Express および GTX トランシーバーではこの機能がサポートされています。しかし、ボードのシグナル インテグリティやリンク パートナー レシーバーとの問題などの理由から、このレシーバー検出機能をバイパスして、コアを直接 LTSSM 収集 (POLLING) ステートに遷移させたほうがよい場合があります。

注記 :このアンサーは、PCI Express のザイリンクス ソリューション センタ (ザイリンクス アンサー 34536) の一部です。PCI Express のザイリンクス ソリューション センターには、PCIe に関するすべての質問が集められています。PCI Express を使用した新規デザインを開始したり、問題をトラブルシュートする場合には、この PCI Express のソリューション センターから正確な情報を入手してください。

ソリューション


DETECT ステートにあるとき、統合ブロックにより、GTX トランシーバーでレシーバー検出を実行するように指示するため、PIPETXRCVRDET がアサートされます。この信号の名前は変更され、gtx_wrapper_v6.v[hd] では TXDetectRx になっています。レシーバーが任意のレーンにある場合、GTX トランシーバーは RXSTATUS で 011b をアサートし、1 サイクル間 PHYSTATUS を High にアサートして応答します。

この GTX 応答をバイパスして、常にレシーバーがあるとブロックに指示したほうがよいケースがあります。これは、gtx_wrapper_v6.v[hd] ファイルに次のコードを追加して設定します。

この設定は PCI Express 仕様に準拠しているわけではありませんので注意してください。 しかし、現実的に考えて、これが原因で問題が発生する可能性はあまりありません。実際にレシーバーが任意のレーンにない場合、POLLING ステートへの遷移時にブロックは TS1 トレーニング セットを送信する必要があります。しかし、CONFIGURATION に入ると、ブロックはレーンが使用されていないことを認識し、GTX トランシーバーに未使用レーンに電気的アイドル信号を送信するよう指示を出します。

Verilog

//Add the following
wire [(NO_OF_LANES*3)-1:0] int_RxStatus;
reg [(NO_OF_LANES*3)-1:0] reg_RxStatus;

always @*
begin
if (TxDetectRx)
reg_RxStatus <= 24'b011011011011011011011011;
else
reg_RxStatus <= int_RxStatus;
end

assign RxStatus = reg_RxStatus;

// Change the following
.USER_RX_STATUS ( RxStatus[(3*i)+2:(3*i)] ), //O
// to
.USER_RX_STATUS ( int_RxStatus[(3*i)+2:(3*i)] ), //O

VHDL

//Add the following
signal int_RxStatus : std_logic_vector(((NO_OF_LANES * 3) - 1) downto 0);
signal reg_RxStatus : std_logic_vector(((NO_OF_LANES * 3) - 1) downto 0);

process (all)
begin
if (TxDetectRx = '1') then
reg_RxStatus <= "011011011011011011011011";
else
reg_RxStatus <= int_RxStatus;
end if;

RxStatus <= reg_RxStatus;
end process;

// Change the following
USER_RX_STATUS => RxStatus_v6pcie7((3 * i) + 2 downto (3 * i)), --O
// to
USER_RX_STATUS => int_RxStatus((3 * i) + 2 downto (3 * i)), --O

改訂履歴 :
2012/1/17 - 初版
AR# 45859
日付 03/06/2013
ステータス アクティブ
種類 一般
IP
  • Virtex-6 FPGA Integrated Block for PCI Express ( PCIe )
このページをブックマークに追加