33454 - Serial RapidIO v5.4 - Virtex-6 FPGA ハードウェア検証のアップデート

アンサー データベースの検索


 

Serial RapidIO v5.4 - Virtex-6 FPGA ハードウェア検証のアップデート

アンサー # 33454
パーツ IP-RapidIO-Serial
最終更新日 2009-11-06 00:00:00.0
ステータス Active
キーワード GTX, attributes, V6, hardware, link-up, 属性, ハードウェア, リンクアップ

問題の詳細

キーワード : GTX, attributes, V6, hardware, link-up, 属性, ハードウェア, リンクアップ

Virtex-6 FPGA の Serial RapidIO v5.4 コアはハードウェア検証テスト中です。このアンサーでは、検証中に問題が見つかった問題と、ユーザーが実行可能な修正方法を示します。

ソリューション

1) Virtex-6 FPGA に不正なクロック コレクション シーケンスが使用されます。このため、リンクが継続的にダウンしたりアップしたりし、port_initialized 信号がディアサートされます。GTX ラッパ ファイル (gtx_wrapper_gtx.v) で、次の属性を次のように変更する必要があります。

.CLK_COR_SEQ_1_1 (10'b0111111101),

この問題は、ISE 12.1 の RocketIO Virtex-6 GTX Wizard および RapidIO v5.5 コアで修正される予定です (CR 535430)。

2) Virtex-6 GTX FPGA クロック コレクションを 2 バイト シーケンスに変更し、各バイトを /R/ 文字 (K29.7) に変更する必要があります。これを変更する方法は、(Xilinx Answer 32188) に説明されている方法と同様です。

この問題は、ISE Design Suite 12.1 の RocketIO Virtex-6 GTX Wizard および RapidIO v5.5 コアで修正される予定です (CR 535314、CR 535221)。

3) x4 レーン、3.125Gbps、125MHz コアのみを使用する場合、クロック パラメータが不正です。このため、リンクが約 50% の時間しか確立されません。この問題を回避するには、<core_name>_clk.v(vhd) で次の行を次のように変更します。

.CLKFBOUT_MULT_F (5.000),

.CLKOUT0_DIVIDE_F (5.000),

.CLKOUT1_DIVIDE (20),

.CLKIN1_PERIOD (8.0),


4) 3.125Gbps、156MHz Virtex-6 FPGA コアの GTX ラッパ ファイルで、TX および RX PLL パラメータが不正です (CR 535503)。

この問題は、次のサイトからダウンロード可能な XCO ファイルを使用して RocketIO ウィザードでラッパ ファイルを生成することにより修正できます。

ftp://ftp.xilinx.com/pub/swhelp/coregen/33454_srio_xco_files.zip

2 つのオプションがあります。

- ISE ソフトウェア 11.4 の Virtex-6 GTX Wizard v1.4 を使用し、SELECT 行を次のように変更します。

SELECT Virtex-6_FPGA_GTX_Transceiver_Wizard family Xilinx,_Inc. 1.4

- 次の行を変更し、ISE 11.3 の Virtex-6 GTX Wizard v1.3 で生成します。

cc_seq_1_1=11111011 を cc_seq_1_1=11111101 に変更
cc_seq_1_2=00000000 を cc_seq_1_2=11111101 に変更
cc_seq_1_2_k=false を cc_seq_1_2_k=true に変更
cc_seq_1_2_mask=true を cc_seq_1_2_mask=false に変更
cc_sequence_length=1 を cc_sequence_length=2 に変更

x4 の場合 :
fifo_upper_bounds=22 を fifo_upper_bounds=24 に変更

x1 の場合 :
fifo_upper_bounds=16 を fifo_upper_bounds=18 に変更


5) x4 レーン コアにはチャネル ボンディングに問題があり、RX バッファ ポインタが十分に頻繁にリセットされず、レーンがチャネル ボンディングされません。各 MGT からの各 RXDATA バスを比較すると、MGT データが揃っておらず、x4 モードでは 60% の時間コアが x1 レーンに設定されます (CR 535500)。

この問題を修正するには、srio_gt_wrapper_v6_4x.v ファイルを次のように変更します。

- txreset1 および txreset3 信号が fall_txinhibit13_q ではなく fall_txinhibit02_q でリセットされるようにします。

変更前 :

always @(posedge RXUSRCLK2 or posedge GTPRESET) begin
if (GTPRESET)
RXBUFERR <= #Tcq 1'b0;
else begin
if (CHBONDDONE0 && CHBONDDONE1 && CHBONDDONE2 && CHBONDDONE3)
RXBUFERR <= #Tcq rxbuferr0 || rxbuferr1 || rxbuferr2 || rxbuferr3;
else if (rxelecidle0) //removed
RXBUFERR <= #Tcq rxbuferr2;
else
RXBUFERR <= #Tcq rxbuferr0;
end
end

変更後 :

always @(posedge RXUSRCLK2 or posedge GTXRESET) begin
if (GTXRESET)
RXBUFERR <= #Tcq 1'b0;
else begin
if (fall_txinhibit02_q || fall_txinhibit13_q) //added
RXBUFERR <= 1'b1;
else if (CHBONDDONE0 && CHBONDDONE1 && CHBONDDONE2 && CHBONDDONE3)
RXBUFERR <= #Tcq rxbuferr0 || rxbuferr1 || rxbuferr2 || rxbuferr3;
else
RXBUFERR <= #Tcq rxbuferr0;
end
end


- fall_txinhibit02_q または fall_txinhibit13_q がアサートされたときに RXBUFERR 信号がアサートされるようにします。

変更前 :

always @(posedge TXUSRCLK2 or posedge GTXRESET) begin
if (GTXRESET)
txreset0 <= #Tcq 1'b0;
else
txreset0 <= #Tcq txresetdone0 & (TXBUFSTATUS0[1] || fall_txinhibit02_q);
end

always @(posedge TXUSRCLK2 or posedge GTXRESET) begin
if (GTXRESET)
txreset1 <= #Tcq 1'b0;
else
txreset1 <= #Tcq txresetdone1 & (TXBUFSTATUS1[1] || fall_txinhibit13_q);
end

always @(posedge TXUSRCLK2 or posedge GTXRESET) begin
if (GTXRESET)
txreset2 <= #Tcq 1'b0;
else
txreset2 <= #Tcq txresetdone2 & (TXBUFSTATUS2[1] || fall_txinhibit02_q);
end

always @(posedge TXUSRCLK2 or posedge GTXRESET) begin
if (GTXRESET)
txreset3 <= #Tcq 1'b0;
else
txreset3 <= #Tcq txresetdone3 & (TXBUFSTATUS3[1] || fall_txinhibit13_q);
end

変更後 :

always @(posedge TXUSRCLK2 or posedge GTXRESET) begin
if (GTXRESET)
txreset0 <= #Tcq 1'b0;
else
txreset0 <= #Tcq txresetdone0 & (TXBUFSTATUS0[1] || fall_txinhibit02_q);
end

always @(posedge TXUSRCLK2 or posedge GTXRESET) begin
if (GTXRESET)
txreset1 <= #Tcq 1'b0;
else
txreset1 <= #Tcq txresetdone1 & (TXBUFSTATUS1[1] || fall_txinhibit02_q);
end

always @(posedge TXUSRCLK2 or posedge GTXRESET) begin
if (GTXRESET)
txreset2 <= #Tcq 1'b0;
else
txreset2 <= #Tcq txresetdone2 & (TXBUFSTATUS2[1] || fall_txinhibit02_q);
end

always @(posedge TXUSRCLK2 or posedge GTXRESET) begin
if (GTXRESET)
txreset3 <= #Tcq 1'b0;
else
txreset3 <= #Tcq txresetdone3 & (TXBUFSTATUS3[1] || fall_txinhibit02_q);
end


- rxelecidle 信号は正しく生成されず、使用されないので、ラッパ ファイルから削除する必要があります。

改訂履歴
2009 年 9 月 16 日 - 初期リリース
2009 年 10 月 27 日 - 問題 1 ~ 5 を追加

 
 
/csi/footer.htm