728x90
반응형
Asynchronous FIFO는서로 다른 클럭 도메인(src/dst) 사이에서 연속적인 멀티비트 데이터 스트림을 순서 깨짐 없이 안전하게 전달하기 위한 구조다.
지금까지 학습해왔던 CDC 기법은 단발성 이벤트 또는 상태 전달 정도만 가능했다. 하지만 Asynchronous FIFO는 데이터 스트림을 CDC하여 전달가능케 한다.
기존 CDC 기법의 한계
Handshake CDC의 한계
Handshake CDC는 단일 데이터 전송에는 안전하지만, 연속적인 스트림 전송에는 구조적으로 부적합하다.
SRC: data_valid → ack 기다림 → 다음 데이터
- 매 전송마다 ACK 대기 → Latency 큼
- Throughput = 1 / handshake
- 고속 파이프라인 불가
즉, 고속의 스트림 데이터에는 부적합하다.
Gray Code CDC의 한계
- 상태 전달 (counter, pointer, state)에는 최적
- 하지만 연속적인 데이터 (payload) 전달 한계
결국 데이터 저장 공간 + 상태 전달이 필요하다.
Async FIFO의 핵심 아이디어
Async FIFO는 위 한계를 다음 방식으로 해결한다.
데이터는 CDC하지 않고, 상태(포인터)만 CDC한다.
Async FIFO는 데이터를 직접 CDC하지 않는다. 데이터는 각 도메인에서만 접근 가능한 메모리에 저장하고, CDC되는 것은 오직 상태뿐이다.
구조적 핵심
- 데이터(payload)는 Memory에 저장
- Write Pointer / Read Pointer만 Gray Code CDC
- Full / Empty 판단도 포인터 비교로 수행
SRC domain:
write data → memory
write_ptr (Binary → Gray) → CDC
DST domain:
read_ptr (Binary → Gray) → CDC
read data ← memory
CDC되는 것은 오직 Gray Code 포인터뿐이다.
Async FIFO의 장점
| Item | Async FIFO |
| Fast → Slow | O |
| Slow → Fast | O |
| 데이터 무결성 | O |
| 순서 보장 | O |
| Throughput | ↑ |
| Latency | ↓ |
그래서 실무에서 “데이터 CDC면 생각하지 말고 FIFO부터 본다”라는 말이 나온다.
Async FIFO는 기존 Handshake CDC의 낮은 Throughput 문제와 Gray Code CDC의 데이터 전달 불가 문제를 동시에 해결한 구조다. 데이터는 메모리에 안전하게 저장하고, “어디까지 썼는지 / 어디까지 읽었는지”라는 상태만 Gray Code CDC로 전달함으로써 서로 다른 클럭 도메인 간에서도 연속적인 데이터 스트림을 높은 성능과 안정성으로 전달할 수 있다.
728x90
반응형
'VLSI > Design' 카테고리의 다른 글
| [CDC] 8_Multi Bit CDC: Asynchronous FIFO (Full/Empty Pessimistic Design) (0) | 2025.12.21 |
|---|---|
| [CDC] 7_Multi Bit CDC: Asynchronous FIFO (First-In First Out) (0) | 2025.12.20 |
| [CDC] 5_Multi Bit CDC: Gray Code (0) | 2025.12.15 |
| [CDC] 4_Multi Bit CDC: Handshake (1) | 2025.12.15 |
| [CDC] 3_Single Bit CDC: Simulation Result (0) | 2025.12.07 |