Artikel-ID: 000077043 Inhaltstyp: Fehlerbehebung Letzte Überprüfung: 30.09.2015

Warum bleibt meine Hard IP für PCI Express länger als 2 ms im Hot-Reset-Zustand, nachdem der Host beendet wurde?

Umgebung

BUILT IN - ARTICLE INTRO SECOND COMPONENT
Beschreibung

Aufgrund eines Problems mit der Altera® Hard IP für PCI® Express-Varianten, die den Soft Reset Controller (SRC) verwenden, kann es vorkommen, dass der Hot-Reset-Status nicht innerhalb der erforderlichen Zeit verlassen wird.

Hinweis: Gen2-Designs in Quartus Version 13.1 oder höher und alle Gen-3-Designs für die Stratix® V- und Arria® V GZ-Geräte erfordern die Verwendung des SRC. Andere Geräte verwenden den SRC nicht.

Die Reihenfolge für den Hot-Reset ist wie folgt:

  • Der PCIe-Host initiiert einen Hot-Reset und wechselt in seinen Hot-Reset-Status.
  • Die Hard IP geht in den Hot-Reset-Zustand über.
  • Sobald der PCIe-Host seinen Hot-Reset-Status verlässt, sollte die Hard IP für weitere 2 ms im Hot-Reset bleiben und dann gemäß der PCIe-Spezifikation zu Detect.Quiet beendet werden.

In Designs, die den SRC verwenden, wird das 2-ms-Timeout jedoch neu gestartet, wenn die Empfänger in einer der aktiven Lanes locked_to_data umschalten. Wenn auf einer der Lanes übermäßiges Rauschen auftritt, schalten die Empfänger möglicherweise locked_to_data. Jeder Umschalter von locked_to_data bewirkt, dass der 2ms-Zähler neu gestartet wird, möglicherweise für immer, und die Hard IP in einem konstanten Hot-Reset-Zustand belässt.

Lösung

Führen Sie die folgenden Schritte aus, um dieses Problem zu umgehen.

Öffnen Sie die Datei altpcie_rs_serdes.v,

Suchen und kommentieren Sie den folgenden Code aus

dl_ltssm_r <= ltssm;
dl_ltssm_rr <= dl_ltssm_r;
Wenn ((dl_ltssm_r == 5\'h14) && (rx_signaldetect_sync[7:0]==8\'h0) && (hotreset_cnt>20\'h0)) beginnen
hotreset_cnt <= hotreset_cnt-20\'h1;
Ende
sonst beginnen

hotreset_cnt <= (test_sim==1\'b1)?20\'h10:(rc_inclk_eq_125mhz==1\'b1)?20\'h3D091:20\'h7A121;

Ende
hotreset_2ms <= (hotreset_cnt==20\'h1)?1\'b1:1\'b0;

Fügen Sie die folgenden Zeilen ein:

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;

Ende
if(hotreset_2ms == 1\'b1) begin
exits_hotreset <= 1\'b0;
Ende
sonst, wenn ((dl_ltssm_r == 5\'h14) && (rx_signaldetect_sync[7:0]==8\'h0)) beginnen
exits_hotreset <= 1\'b1;
Ende
Wenn ((exits_hotreset == 1\'b1) && (hotreset_cnt > 20\'h0)) beginnen
hotreset_cnt <= hotreset_cnt-20\'h1;
Ende
hotreset_2ms <= (hotreset_cnt==20\'h1)?1\'b1:1\'b0;

Zugehörige Produkte

Dieser Artikel bezieht sich auf 4 Produkte

เอฟพีจีเอ Arria® V GZ
เอฟพีจีเอ Stratix® V GS
เอฟพีจีเอ Stratix® V GT
เอฟพีจีเอ Stratix® V GX

Der Inhalt dieser Seite ist eine Kombination aus menschlicher und computerbasierter Übersetzung des originalen, englischsprachigen Inhalts. Dieser Inhalt wird zum besseren Verständnis und nur zur allgemeinen Information bereitgestellt und sollte nicht als vollständig oder fehlerfrei betrachtet werden. Sollte eine Diskrepanz zwischen der englischsprachigen Version dieser Seite und der Übersetzung auftreten, gilt die englische Version. Englische Version dieser Seite anzeigen.