타이밍 분석과 CDC

4비트 바이너리 0110(10진수 6)을 그레이 코드로 변환한 것은?

  1. A0111
  2. B0100
  3. C0101
정답과 해설 보기

정답: C. 0101

바이너리에서 그레이 코드로의 변환은 각 비트와 그 바로 위 비트의 XOR를 취합니다(최상위 비트는 그대로). 식으로 쓰면 g = b XOR (b >> 1)입니다. 0110을 1비트 오른쪽으로 시프트한 0011과 XOR를 취하면 0110 XOR 0011 = 0101이 됩니다. 0111은 5의, 0100은 7의 그레이 코드로, 6의 앞뒤 값입니다. 5→6→7로 진행하면 0111→0101→0100이 되어, 이웃한 값 사이에서 1비트만 바뀌는 것을 확인할 수 있습니다.

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

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

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