UniPHY IP는 UniPHY IP에 대해 global_reset_n 또는 soft_reset_n 신호를 낮게 주장하고 해제한 후 교정을 완료하지 않습니다. EMIF 디버그 툴킷은 해당 인터페이스에 연결할 수 없습니다(프로젝트에 장치 연결). 나중에 여러 리셋이 발행되더라도 이 조건은 변경되지 않습니다. 이 조건은 장치를 재구성해야만 복구할 수 있습니다.
이러한 증상은 EMIF UniPHY IP의 내부 재설정 구조로 인해 발생할 수 있습니다. M20K RAM의 주소 버스를 구동하는 로직에 대한 비동기 재설정 어설션으로 비동기 로직 전파가 발생할 수 있습니다. 이는 M20K 주소 행/열 디코더의 기능에 영향을 미칠 수 있으며, 두 개 이상의 단어줄을 열면 비트 셀 간에 충전 공유가 발생하여 M20K의 내용이 손상됩니다. 비동기 재설정 어설션으로 인한 M20K 손상 가능성은 매우 낮습니다.
M20k 읽기 또는 쓰기 작업 중 PLL 재설정은 PLL 잠금 손실로 인해 재설정 중 클럭 결함이 발생할 수 있으므로 임베디드 RAM/ROM 손상에 기여할 수 있으며, 이는 M20K 주소 행/열 디코더의 기능에 영향을 줄 수 있습니다.
이 손상은 교정에 사용되는 Nios® II 프로세서가 포함되어 있고 프로세서의 프로그램 코드가 M20K RAM에 저장되어 있기 때문에 UniPHY IP에 영향을 미칩니다. Nios® II 프로그램 메모리 내에서 손상이 발생하면 Nios® II 시퀀서가 잠기게 되어 불완전한 교정이 발생할 수 있습니다. M20K 콘텐츠는 장치 프로그래밍 중에만 로드되기 때문에 이 상황에서 복구는 장치를 다시 프로그래밍해야만 가능합니다.
아래에 나열된 일반적인 EMIF 오류가 반드시 M20K RAM이 손상되었거나 Nios® II 시퀀서가 잠겨 있는 것은 아닙니다.
- 교정이 통과되지 않을 경우(즉, 교정이 항상 실패함).
- 교정 여백이 매우 슬림하고 때때로 교정에 실패하는 경우.
- 설계가 캘리브레이션을 통과한 경우, 설계를 실행하는 동안 가끔 데이터 오류가 관찰됩니다.
- 설계가 교정을 통과했다고 말하지만 설계가 예상대로 작동하지 않는 경우.
UniPHY IP 코어에는 두 개의 리셋 입력이 있습니다.
Global_reset_n: PLL을 포함한 UniPHY IP의 모든 것에 연결되어 있습니다.
Soft_reset_n: PLL을 제외한 UniPHY IP의 모든 것에 연결되어 있습니다.
1. Altera 항상 soft_reset_n만 사용하는 것이 좋습니다. 전원 켜기 재설정에만 global_reset_n 사용하십시오.
전원이 켜진 동안 PLL을 재설정하려면 다음 시퀀스를 사용하십시오.
a. 어설션 Global_reset_n(PLL 재설정)
B. 칩의 전원을 켜고 재구성합니다.
c. de-assert Global_reset_n
2. 수정은 동기화 리셋을 사용하기 위해 UNIPHY IP 코어의 내부 재설정 컨트롤러 및 재설정 구조를 변경하고 재설정 조건 중에 M20K clock_enable 포트를 선제적으로 해제합니다. 이렇게 하면 전이 가능한 전환이 M20K 주소 디코더로 전파되지 않습니다.
이 수정은 13.0dp1, 13.0sp1 및 모든 후속 버전의 Quartus의 일부로 제공됩니다. 사용자는 UnipHY IP를 재생성하고 디자인을 다시 컴파일해야 합니다. Altera 이러한 Quartus 버전 중 하나로 이동하는 것이 좋습니다.
수정이 더 시급하거나 Quartus 버전 12.1sp1에 수정이 필요한 경우 UniPHY IP 코어를 수동으로 업데이트할 수 있습니다. 다음 절차를 따라야 합니다.
설계 내에서 Altera UniPHY IP의 소스 파일을 찾습니다.
수정해야 하는 파일은 5개 있습니다.
altera_reset_synchronizer.v
altera_reset_controller.v
altera_mem_if_sequencer_mem_no_ifdef_params.sv
_if0_p0_reset.v
_if0_s0.v
단계
1. 다음 링크에서 altera-reset-syncer.v 를 다운로드하고 UniPHY IP 소스 파일과 동일한 디렉토리에 배치합니다. Altera_reset_syncer.v
2. 다음 링크에서 altera-reset-controller.v 를 다운로드하고 UniPHY IP 소스 파일과 동일한 디렉토리에 배치합니다. Altera_reset_controller.v
3. in altera_mem_if_sequencer_mem_no_ifdef_params.sv' - 입력 's1_clken'이 'the_altsyncram'의 'clocken0' 입력에 연결되었는지 확인합니다.
4. 예를 들어_if0_p0_reset.v – "dut_if0_p0_reset_sync" 인스턴스에 대한 defparam 문을 수정하여 첨부된 샘플 파일(dut_if0_p0_reset.v)에 따라 매개변수가 "RESET_SYNC_STAGES"과 "NUM_RESET_OUTPUT"로 설정되도록 합니다. (UniPHY IP 소스 파일 디렉토리에서 샘플 파일을 다운로드하지 마십시오)
5. _if0_s0.v
(UniPHY IP 소스 파일 디렉토리에서 샘플 파일 dut_if0_s0.v를 다운로드하지 마십시오)
dut-if0-s0.v(_if0_s0.v 샘플 파일)
– 최상위 레벨에 다음 포트를 추가합니다.
와이어 early_rst_controller_reset_out_reset;
- "rst_controller" 모듈의 출력 포트 "m20k_gate"를 'sequencer_mem' 모듈의 's1_clken' 입력에 연결합니다. M20k_gate 출력이 활성-낮기 때문에 다음과 같이 출력을 반전해야 합니다.
.s1_clken(~early_rst_controller_reset_out_reset), //sequencer_mem, 첨부된 샘플 파일의 785줄(dut_if0_s0.v)
.m20k_gate(early_rst_controller_reset_out_reset), //rst_controller, 첨부된 샘플 파일의 2572줄
6. 이러한 변경 사항이 발생하면 설계를 다시 컴파일해야 합니다.