| アンサー # |
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.zip2 つのオプションがあります。
- 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 を追加