ソフト・リセット・コントローラー (SRC) を使用する PCI® Express のAltera®・ハード IP 製品に問題があるため、必要な時間内にホット・リセット状態から離れない場合があります。
注: Quartus® リリース 13.1 以降の Gen2 デザイン、およびStratix® V および Arria®V GZ デバイスのすべての Gen 3 デザインでは、SRC を使用する必要があります。その他のデバイスは SRC を使用しません。
ホットリセットの手順は以下の通りです。
- PCIe ホストはホットリセットを開始し、ホットリセット状態に入ります。
- ハードIPはホットリセット状態に入ります。
- PCIe ホストがホットリセット状態を離れると、ハード IP はさらに 2 ミリ秒ホット リセットされたままになり、PCIe 仕様に従って Detect.Quiet に終了します。
しかし、SRC を使用するデザインでは、レシーバーがアクティブなレーンのいずれかでlocked_to_dataを切り替えると、2ms のタイムアウトが再起動されます。いずれかのレーンに過度のノイズが存在する場合、受信機は locked_to_dataを切り替えることができます。 locked_to_data が切り替わるたびに、2msのカウンタが再起動され、場合によっては永久に再起動され、ハードIPは常にホットリセット状態のままになります。
この問題を回避するには、次の手順を実行します。
ファイル altpcie_rs_serdes.v を開きます。
以下のコードを見つけてコメントアウトしてください
dl_ltssm_r <= ltssm;
dl_ltssm_rr <= dl_ltssm_r;
if ((dl_ltssm_r == 5\'h14) & (rx_signaldetect_sync[7:0]==8\'h0) & (hotreset_cnt>20\'h0)) が始まります
hotreset_cnt <= hotreset_cnt-20\'h1;
終わり
それ以外の場合は開始します
hotreset_cnt <= (test_sim==1\'b1)?20\'h10:(rc_inclk_eq_125mhz==1\'b1)?20\'h3D091:20\'h7A121;
終わり
hotreset_2ms <= (hotreset_cnt==20\'h1)?1\'b1:1\'b0;
次の行を挿入します。
dl_ltssm_r <= ltssm;
dl_ltssm_rr <= dl_ltssm_r;
if((dl_ltssm_r == 5\'h14) && (dl_ltssm_rr != 5\'h14)) begin
hotreset_cnt <= (test_sim==1\'b1)?20\'h10:(rc_inclk_eq_125mhz==1\'b1)?20\'h3D091:20\'h7A121;
終わり
if(hotreset_2ms == 1\'b1) が始まります
exits_hotreset <= 1\'b0;
終わり
else if ((dl_ltssm_r == 5\'h14) & (rx_signaldetect_sync[7:0]==8\'h0)) が始まります
exits_hotreset <= 1\'b1;
終わり
if ((exits_hotreset == 1\'b1) & (hotreset_cnt > 20\'h0)) が始まります
hotreset_cnt <= hotreset_cnt-20\'h1;
終わり
hotreset_2ms <= (hotreset_cnt==20\'h1)?1\'b1:1\'b0;