타이밍 분석과 CDC
5비트 그레이 코드 포인터를 사용하는 깊이 16워드의 비동기 FIFO에서, 쓰기 측에서 가득 참(full)을 판정하는 조건으로 올바른 것은?
- A쓰기 포인터와 동기화한 읽기 포인터의 상위 2비트가 각각 반대이고, 하위 3비트가 일치한다
- B쓰기 포인터와 동기화한 읽기 포인터의 5비트가 모두 일치한다
- C쓰기 포인터와 동기화한 읽기 포인터의 최상위 비트만 반대이고, 하위 4비트가 모두 일치한다
정답과 해설 보기
정답: A. 쓰기 포인터와 동기화한 읽기 포인터의 상위 2비트가 각각 반대이고, 하위 3비트가 일치한다
바이너리에서는 가득 찬 상태가 쓰기 포인터가 읽기 포인터보다 정확히 16 앞서 있는 상태로, 최상위 비트만 다릅니다. 이를 그레이 코드로 바꾸면 최상위 비트는 그대로 반전되고, 두 번째 비트는 최상위 비트와의 XOR로 만들어지므로 함께 반전되며, 하위 3비트는 같아집니다. 예를 들어 읽기가 00000이라면 가득 찼을 때의 쓰기는 11000입니다. 최상위 비트만 반대라는 것은 바이너리일 때의 조건이고, 5비트 모두 일치는 빈 상태(empty)의 조건입니다.