文章 ID: 000077043 內容類型: 疑難排解 最近查看日期: 2015 年 09 月 30 日

為什麼我的 PCI Express 硬 IP 在主機退出後仍處於熱重設狀態超過 2 毫秒?

環境

BUILT IN - ARTICLE INTRO SECOND COMPONENT
描述

由於使用軟重定控制器 (SRC) 的 PCI® Express 變體的Altera®硬 IP 存在問題,它可能無法在所需時間內離開熱重設狀態。

注意:Quartus 13.1 版或更高版本中的第 2 代設計,以及適用于 Stratix® V 和 Arria® V GZ 器件的所有第 3 代設計,都需要使用 SRC。其他裝置不使用 SRC。

熱重定的順序如下:

  • PCIe 主機啟動熱重置並進入其熱重設狀態。
  • 硬 IP 進入其熱重設狀態。
  • 一旦 PCIe 主機離開其熱重設狀態,硬 IP 應保持熱重設狀態 2 毫秒,然後退出以偵測。

但是,在使用 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;
結束
否則如果 ((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;

相關產品

本文章適用於 4 產品

Arria® V GZ FPGA
Stratix® V GS FPGA
Stratix® V GT FPGA
Stratix® V GX FPGA

這個頁面的內容綜合了英文原始內容的人工翻譯譯文與機器翻譯譯文。本內容是基於一般資訊目的,方便您參考而提供,不應視同完整或準確的內容。如果這個頁面的英文版與譯文之間發生任何牴觸,將受英文版規範及管轄。 查看這個頁面的英文版。