ID บทความ: 000077043 ประเภทข้อมูล: การแก้ไขปัญหา การตรวจสอบครั้งล่าสุด: 30/09/2015

ทําไม Hard IP for PCI Express ของฉันจึงยังคงอยู่ในสถานะ Hot Reset เป็นเวลามากกว่า 2ms หลังจาก Host Exit

สิ่งแวดล้อม

BUILT IN - ARTICLE INTRO SECOND COMPONENT
คำอธิบาย

เนื่องจากปัญหากับตัวแปร Altera® Hard IP สําหรับ PCI® Express ที่ใช้ Soft Reset Controller (SRC) อาจทําให้ไม่สามารถรีเซ็ตได้ภายในเวลาที่กําหนด

หมายเหตุ: การออกแบบ Gen2 ใน Quartus รีลีส 13.1 หรือใหม่กว่า และการออกแบบ Gen 3 ทั้งหมดสําหรับอุปกรณ์ Stratix® V และ Arria® V GZ จําเป็นต้องใช้ SRC อุปกรณ์อื่นๆ ไม่ได้ใช้ SRC

ลําดับสําหรับ Hot Reset มีดังนี้:

  • โฮสต์ PCIe เริ่มการรีเซ็ตแบบ Hot Reset และเข้าสู่สถานะ Hot Reset
  • Hard IP เข้าสู่สถานะ Hot Reset ของ It\'s
  • เมื่อโฮสต์ PCIe ออกจากสถานะ Hot Reset ของ Hard IP ควรอยู่ในสถานะ Hot Reset สําหรับ 2ms เพิ่มเติม แล้วออกจาก Detect.Quiet ตามข้อกําหนด PCIe

อย่างไรก็ตาม ในการออกแบบที่ใช้ SRC การหมดเวลา 2ms จะเริ่มต้นใหม่ถ้าตัวรับสลับ locked_to_data บนเลนที่ใช้งานอยู่ หากมีเสียงรบกวนมากเกินไปบนเลนใดๆ ตัวรับอาจสลับ locked_to_data ได้ การสลับ locked_to_data แต่ละครั้งทําให้ตัวนับ 2ms รีสตาร์ทอาจตลอดไปโดยอาจปล่อยให้ Hard IP อยู่ในสถานะการรีเซ็ตที่ร้อนตลอดเวลา

ความละเอียด

เพื่อหลีกเลี่ยงปัญหานี้ ให้ทําตามขั้นตอนต่อไปนี้

เปิดไฟล์ altpcie_rs_serdes.v,

ค้นหาและแสดงความคิดเห็นเกี่ยวกับรหัสด้านล่าง

dl_ltssm_r <= ltssm;
dl_ltssm_rr <= dl_ltssm_r;
ถ้า ((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) เริ่มต้น

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;
สิ้น สุด
ถ้า ((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

เนื้อหาในหน้านี้เป็นการผสมผสานระหว่างการแปลเนื้อหาต้นฉบับภาษาอังกฤษโดยมนุษย์และคอมพิวเตอร์ เนื้อหานี้จัดทำขึ้นเพื่อความสะดวกของคุณและเพื่อเป็นข้อมูลทั่วไปเท่านั้นและไม่ควรอ้างอิงว่าสมบูรณ์หรือถูกต้อง หากมีความขัดแย้งใด ๆ ระหว่างเวอร์ชันภาษาอังกฤษของหน้านี้กับคำแปล เวอร์ชันภาษาอังกฤษจะมีผลเหนือกว่าและควบคุม ดูเวอร์ชันภาษาอังกฤษของหน้านี้