SRC(Soft Reset Controller)를 사용하는 PCI® Express 변형에 대한 Altera® 하드 IP의 문제로 인해 필요한 시간 내에 핫 리셋 상태를 벗어나지 않을 수 있습니다.
참고: Quartus 릴리스 13.1 이상의 Gen2 설계와 Stratix® V 및 Arria® V GZ 장치의 모든 Gen 3 설계에는 SRC를 사용해야 합니다. 다른 장치는 SRC를 사용하지 않습니다.
핫 리셋의 순서는 다음과 같습니다.
- PCIe 호스트가 핫 리셋을 시작하고 핫 리셋 상태로 들어갑니다.
- 하드 IP가 핫 리셋 상태로 들어갑니다.
- PCIe 호스트가 핫 리셋 상태를 벗어나면 하드 IP는 추가로 2ms 동안 핫 리셋 상태를 유지한 다음 PCIe 사양에 따라 Detect.Quiet로 종료되어야 합니다.
그러나 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)) 시작
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;
끝
else if ((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;