[CDC] 6_Multi Bit CDC: Asynchronous FIFO (Introduction)

2025. 12. 19. 01:58·VLSI/Design
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
'VLSI/Design' 카테고리의 다른 글
  • [CDC] 8_Multi Bit CDC: Asynchronous FIFO (Full/Empty Pessimistic Design)
  • [CDC] 7_Multi Bit CDC: Asynchronous FIFO (First-In First Out)
  • [CDC] 5_Multi Bit CDC: Gray Code
  • [CDC] 4_Multi Bit CDC: Handshake
리미와감자
리미와감자
공부한 내용을 포스팅합니다.
    반응형
    250x250
  • 리미와감자
    리미창고
    리미와감자
  • 전체
    오늘
    어제
    • 분류 전체보기 (213)
      • Programming (92)
        • Common (6)
        • C (3)
        • C++ (16)
        • Python (35)
        • Front End (8)
        • Linux (1)
        • Script (7)
        • Data Structure (5)
        • Tool (11)
      • Computer Science (0)
      • VLSI (30)
        • Common (4)
        • Design (15)
        • SystemVerilog (9)
        • UVM (2)
        • FPGA (0)
      • Embedded System (31)
        • Arduino (2)
        • STM32 (7)
        • Embedded Recipes (22)
      • Semiconductor (11)
        • Semiconductor Device (1)
        • Display (10)
      • Algorithm (8)
        • Image Processing (8)
        • AI (0)
      • Certificate (26)
        • ADsP (26)
      • 일상생활 (15)
        • 맛집 리뷰 (4)
        • 나는 오늘 무엇을 샀나 ! (5)
        • 국내여행 (5)
        • 나들이 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 최근 글

  • 최근 댓글

  • 태그

    군산가볼만한곳
    SystemVerilog
    Dither
    임베디드레시피
    SVA
    오블완
    UVM
    Clock Domain Crossing
    c++ 기초
    Bash
    systemverilog assertions
    디더링
    아두이노
    임베디드시스템
    Metastability
    tkinter
    Handshake
    Asynchronous FIFO
    git
    assertion
    파이참
    자료구조
    CDC
    openpyxl
    data structure
    arduino
    BeautifulSoup4
    STM32
    ADsP
    티스토리챌린지
  • 링크

    • chipverify
    • vlsiverify
    • iksciting
    • 오늘은 맑음
    • verificationguide
  • hELLO· Designed By정상우.v4.10.6
리미와감자
[CDC] 6_Multi Bit CDC: Asynchronous FIFO (Introduction)
상단으로

티스토리툴바