ID bài viết: 000077043 Loại nội dung: Xử lý sự cố Lần duyệt cuối: 30/09/2015

Tại sao IP cứng của tôi cho PCI Express vẫn ở trạng thái đặt lại nóng trong hơn 2ms sau khi Máy chủ thoát?

Môi Trường

BUILT IN - ARTICLE INTRO SECOND COMPONENT
Mô tả

Do sự cố với các biến thể IP cứng Altera® cho PCI® Express sử dụng Bộ điều khiển đặt lại mềm (SRC), nó có thể không rời khỏi trạng thái đặt lại nóng trong thời gian yêu cầu.

Lưu ý: Các thiết kế Gen2 trong Quartus bản phát hành 13.1 trở lên và tất cả các thiết kế Gen 3, đối với các thiết bị Stratix® V và Arria® V GZ, đều yêu cầu sử dụng SRC. Các thiết bị khác không sử dụng SRC.

Trình tự thiết lập lại nóng như sau:

  • Máy chủ PCIe bắt đầu thiết lập lại nóng và chuyển sang trạng thái đặt lại nóng.
  • IP cứng vào trạng thái đặt lại nóng.
  • Khi máy chủ PCIe rời khỏi trạng thái đặt lại nóng, IP cứng sẽ vẫn ở chế độ đặt lại nóng thêm 2ms và sau đó thoát ra Detect.Quiet, theo đặc tả PCIe.

Tuy nhiên, trong các thiết kế sử dụng SRC, thời gian chờ 2ms sẽ được khởi động lại nếu bộ thu chuyển đổi locked_to_data trên bất kỳ làn nào đang hoạt động. Nếu tiếng ồn quá mức tồn tại trên bất kỳ làn đường nào, máy thu có thể chuyển locked_to_data. Mỗi lần chuyển đổi locked_to_data khiến bộ đếm 2ms được khởi động lại, có khả năng là mãi mãi, khiến IP cứng ở trạng thái đặt lại nóng liên tục.

Độ phân giải

Để khắc phục sự cố này, hãy thực hiện các bước sau.

Mở tệp altpcie_rs_serdes.v,

Tìm và bình luận mã bên dưới

dl_ltssm_r <= LTSSM;
dl_ltssm_rr <= dl_ltssm_r;
Nếu ((dl_ltssm_r == 5\'h14) &&; (rx_signaldetect_sync[7:0]==8\'h0) &&; (hotreset_cnt>20\'h0)) bắt đầu
hotreset_cnt <= hotreset_cnt-20\'h1;
Cuối
khác bắt đầu

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

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

Chèn các dòng sau:

dl_ltssm_r <= LTSSM;
dl_ltssm_rr <= dl_ltssm_r;
nếu((dl_ltssm_r == 5\'h14) &&; (dl_ltssm_rr != 5\'h14)) bắt đầu

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

Cuối
nếu(hotreset_2ms == 1\'b1) bắt đầu
exits_hotreset <= 1\'b0;
Cuối
else if ((dl_ltssm_r == 5\'h14) &&; (rx_signaldetect_sync[7:0]==8\'h0)) bắt đầu
exits_hotreset <= 1\'b1;
Cuối
Nếu ((exits_hotreset == 1\'b1) &&; (hotreset_cnt > 20\'h0)) bắt đầu
hotreset_cnt <= hotreset_cnt-20\'h1;
Cuối
hotreset_2ms <= (hotreset_cnt==20\'h1)?1\'b1:1\'b0;

Các sản phẩm liên quan

Bài viết này áp dụng cho 4 sản phẩm

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

Nội dung gốc bằng tiếng Anh trên trang này vừa do con người vừa do máy dịch. Nội dung này chỉ để cung cấp thông tin chung và giúp quý vị thuận tiện. Quý vị không nên tin đây là thông tin hoàn chỉnh hoặc chính xác. Nếu có bất kỳ mâu thuẫn nào giữa bản tiếng Anh và bản dịch của trang này, thì bản tiếng Anh sẽ chi phối và kiểm soát. Xem phiên bản tiếng Anh của trang này.