준안정성 및 교차 시계 영역 처리 방법
준안정성의 원인
디지털 시스템에서는 데이터 전송 중에 입력 데이터가 클록의 유효한 에지에 도달하기 전까지 일정 시간(설정 시간) 동안 유지되어야 합니다. 유효한 에지가 도달한 후에도 데이터가 수집되었는지 확인하기 위해 일정 기간(보류 시간: 보유 시간) 동안 데이터를 보관해야 합니다. Reset 신호나 Zeroing 신호의 경우 제거 시간(removal time)과 복구 시간(recovery time)은 유사합니다. 그렇지 않으면 플립플롭 출력은 유효한 클록 에지[1] 이후 일정 시간 동안 정의되지 않은 상태에 있습니다.
비동기 회로에서는 준안정성이 일반적입니다. 비동기식 리셋 회로는 일반적인 예입니다. 리셋 신호는 클록 신호와 동기화되지 않기 때문에 리셋 신호의 제거 시간과 복구 시간이 요구 사항을 충족한다고 보장할 수 없으며 이로 인해 리셋 실패가 발생할 수 있습니다. 데이터가 클럭 도메인을 통해 전송될 때 두 클럭 도메인의 비동기 신호 변경으로 인해 준안정성이 발생할 수도 있습니다.
일반적으로 비동기 회로 및 크로스 클럭 도메인 상황을 방지하려면 설계 과정에서 동기 회로를 최대한 많이 사용해야 합니다. 불가피한 상황에서는 준안정 상태의 확률을 최소화하기 위해 몇 가지 조치를 취해야 합니다.
다중 레벨 캐시 처리
다중 레벨 캐시 처리는 일반적으로 "몇 비트를 비트는 것"으로 알려져 있습니다. 두 비트를 비트는 것은 두 번째 레벨 캐시를 사용하는 것을 의미합니다. 예를 들어, 비동기 리셋 및 동기 해제는 리셋 회로에서 일반적입니다. 클럭 동기화의 펄스 검출 방법[2] 역시 다중 레벨 캐시 처리 방법이다.
비동기 듀얼 포트 장치
다중 비트 데이터의 크로스 클럭 도메인 전송을 위해 일반적으로 비동기 듀얼 포트 RAM[3] 또는 비동기 FIFO[4]가 사용됩니다. 비동기식 듀얼 포트 RAM은 동시 읽기 및 쓰기 작업을 지원하며 읽기 작업 및 쓰기 작업용 클럭은 비동기식입니다. 비동기식 FIFO는 기본적으로 RAM이지만 쓰기 포인터와 읽기 포인터가 필요하다는 차이점이 있습니다. 데이터를 쓸 때 쓰기 포인터는 순차적으로 1씩 증가하고, 맨 아래에 도달하면 시작 위치로 돌아갑니다. 데이터를 읽어올 때 읽기 포인터는 순차적으로 1씩 증가하고, 맨 아래에 도달하면 시작 위치로 돌아갑니다. 또한 비동기식 FIFO는 "readempty" 및 "write full"을 결정해야 하며, 이는 각각 기록된 데이터를 모두 읽었고 RAM이 가득 차서 데이터를 읽지 못한 상황에 해당합니다. 비동기식 FIFO의 설계 회로는 비동기식 듀얼 포트 RAM보다 복잡하지만 추가 주소 제어 라인이 필요하지 않으며 사용이 간단합니다.
참조 링크
1FPGA의 전이성 - 벗어날 곳이 없습니다.
blogs.com/linjie-swust/archive/2012/01/ 07/ywt. html
2 시계 동기화를 위한 펄스 감지 방법 blogs.com/aslmer/p/6114216.html