ID de l'article: 000077043 Type de contenu: Dépannage Dernière révision: 30/09/2015

Pourquoi mon IP matérielle pour PCI Express reste-t-elle dans l’état de réinitialisation à chaud pendant plus de 2 ms après la fermeture de l’hôte ?

Environnement

BUILT IN - ARTICLE INTRO SECOND COMPONENT
Descriptif

En raison d’un problème avec l’IP matérielle Altera® pour les variantes PCI® Express qui utilisent le contrôleur de réinitialisation logicielle (SRC), il est possible qu’elle ne quitte pas l’état de réinitialisation à chaud dans le délai requis.

Remarque : les conceptions Gen2 dans Quartus version 13.1 ou ultérieure, et toutes les conceptions Gen 3, pour les périphériques Stratix® V et Arria® V GZ, nécessitent l’utilisation du SRC. Les autres appareils n’utilisent pas le SRC.

La séquence de réinitialisation à chaud est la suivante :

  • L’hôte PCIe initie une réinitialisation à chaud et entre dans son état de réinitialisation à chaud.
  • L’IP matérielle entre dans son état de réinitialisation à chaud.
  • Une fois que l’hôte PCIe quitte son état de réinitialisation à chaud, l’IP matérielle doit rester en réinitialisation à chaud pendant 2 ms supplémentaires, puis quitter Detect.Quiet, conformément à la spécification PCIe.

Cependant, dans les conceptions qui utilisent le SRC, le délai d’attente de 2 ms sera redémarré si les récepteurs basculent locked_to_data sur l’une des voies actives. S’il existe un bruit excessif sur l’une des voies, les récepteurs peuvent basculer locked_to_data. Chaque bascule de locked_to_data provoque le redémarrage du compteur de 2 ms, potentiellement pour toujours, laissant l’IP dur dans un état constant de réinitialisation à chaud.

Résolution

Pour contourner ce problème, procédez comme suit.

Ouvrez le fichier altpcie_rs_serdes.v,

Trouvez et commentez le code ci-dessous

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)) begin
hotreset_cnt <= hotreset_cnt-20\'h1;
Fin
sinon commencer

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

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

Insérer les lignes suivantes :

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;

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

Produits associés

Cet article concerne 4 produits

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

Le contenu de cette page est une combinaison de traduction humaine et informatique du contenu original en anglais. Ce contenu vous est fourni pour votre commodité et à titre informatif seulement et ne saurait être totalement exact ou complet. En cas de contradiction entre la version anglaise de cette page et la traduction, c'est la version anglaise qui prévaut. Afficher la version anglaise de cette page.