타이밍 분석과 CDC

깊이 16워드인 비동기 FIFO에서 쓰기 포인터와 읽기 포인터를 주소보다 1비트 많은 5비트로 하는 이유로 올바른 것은?

  1. A16워드의 주소를 나타내는 데 5비트가 필요하기 때문에
  2. B포인터가 일치했을 때 같은 바퀴면 빈 상태, 한 바퀴 차이면 가득 찬 상태로 구별할 수 있도록 하기 위해
  3. C여분의 비트를 패리티로 사용하여 포인터의 오류를 검출하기 위해
정답과 해설 보기

정답: B. 포인터가 일치했을 때 같은 바퀴면 빈 상태, 한 바퀴 차이면 가득 찬 상태로 구별할 수 있도록 하기 위해

16워드의 주소는 4비트로 나타낼 수 있지만, 4비트 포인터만으로는 읽기와 쓰기 주소가 일치했을 때 전부 다 읽은 빈 상태인지, 한 바퀴분을 써서 따라잡은 가득 찬 상태인지를 구별할 수 없습니다. 5번째 비트를 바퀴를 나타내는 비트로 추가하면, 바이너리로 비교하는 경우 5비트가 모두 일치하면 빈 상태, 최상위 비트만 다르면 가득 찬 상태로 판정할 수 있습니다. 그레이 코드 포인터에서는 가득 찬 상태를 판정하는 비교 방법이 조금 달라집니다. 패리티로 사용하는 것은 아닙니다.

이 분야 연습하기 분야로 돌아가기

타이밍 분석과 CDC의 다른 문제

  1. 5비트 그레이 코드 포인터를 사용하는 깊이 16워드의 비동기 FIFO에서, 쓰기 측에서 가득 참(full)을 판정하는 조건으로 올바른 것은?
  2. 비동기 FIFO에서는 상대의 포인터를 동기화해서 사용하므로, 보이는 포인터 값이 2~3사이클 오래된 값이 됩니다. 이 지연이 full/empty 판정에 미치는 영향으로 올바른 것은?
  3. 쓰기 측 100 MHz, 읽기 측 80 MHz인 비동기 FIFO에서 쓰기 측은 100워드의 버스트를 매 사이클 1워드씩 쓰고, 읽기 측은 매 사이클 1워드씩 읽습니다. 버스트 사이에는 충분한 휴지 기간이 있습니다. 넘치지 않기 위해 필요한 최소 깊이는 얼마입니까(동기화로 인한 지연은 무시합니다)?
  4. 쓰기 측은 200 MHz로 매 사이클 1워드씩 120워드의 버스트를 씁니다. 읽기 측은 150 MHz 클럭으로 3사이클 중 2사이클만 1워드씩 읽습니다. 넘치지 않기 위해 필요한 최소 깊이는 얼마입니까(동기화로 인한 지연은 무시합니다)?
  5. 쓰기 측 250 MHz, 읽기 측 200 MHz이며 둘 다 매 사이클 1워드씩 전송합니다. 64워드의 버스트를 받는 FIFO에 계산상 필요한 최소 깊이는 얼마입니까(동기화로 인한 지연은 무시하고, 소수점 이하는 올림합니다)?