Engineering Note

플립플롭(Flip-Flop) 동작 원리 본문

Digital Logic Circuits

플립플롭(Flip-Flop) 동작 원리

Software Engineer Kim 2026. 8. 30. 15:17

 

플립플롭 블럭다이어그램

 

 

D-Flip-Flop 타이밍 다이어그

 

 

플립플롭(Flip-Flop) 동작 원리

  • 플립플롭 1비트를 저장하는 기본 메모리 소자

핀 구성

  • D(data): 저장하고 싶은 입력 값
  • CLK(Clock): 언제 그 값을 저장할 지 알려주는 신호
  • Q: 저장된 값이 출력 되는 곳

핵심 동작 원리

  • 플립플롭은 클럭의 상승 엣지(rising edge) 순간에만 D 입력값을 "스냅샷" 찍듯이 캡처해서 Q로 출력 => 엣지 트리거(edge-triggered) 방식
    • 클럭이 낮은(0) 동안이나 높은(1) 동안에는 D가 아무리 바뀌어도 Q는 그대로 유지
    • 클럭이 0->1로 올라가는 그 순간에만 D값을 보고 Q로 반영

Setup Time/ Hold Time

  • Setup Time : 클럭 엣지가 오기 전에 D가 미리 안정되어 있어야 하는 최소 시간
  • Hold Time : 클럭 엣지가 지나간 후에도 D가 바뀌지 않고 유지되어야 하는 최소 시간

SRAM과 차이

  • SRAM은 현재 데이터를 쓸지(write enalbe), 지금 읽을지(read enable)을 제어할 수 있지만, 플립플롭은 제어 선택권이 없이, 클럭 엣지가 올 때마다 무조건 D값이 새로 쓰여지고, Q는 항상 무조건 그 저장된 값을 내보내고 있는 구조 => write는 클럭에 종속, read는 항상 켜져있는 상태

CDC(Cross Domain Crossing)란?

  • 서로 다른 클럭(주파수가 다르거나, 같은 주파수라도 위상이 다르거나, 비동기 관계인 클럭)을 사용하는 모듈 간에 신호 데이터를 주고받는 상황을 의미
  • clkA에서 동작하는 회로의 신호가 clkB에서 동작하는 회로로 넘어갈 때 발생

Metastability란?

  • 서로 다른 클럭 도메인간 신호 전달 시 수신측 Flip-Flop이 setup/hod time 위반 상태로 샘플링하면 출력이 불안정해지는 현상
  • CDC 상황에서 비동기 클럭 때문에 setup/hold위반이 구조적으로 항상 발생 가능하므로, 메타스태빌리티는 CDC의 핵심리스크

플립플롭이 사용되는곳

  • Register
    • CPU안에서 계산 중간값이나, 데이터를 붙잡아두는 곳.
      • ex) 범용레지스터, 프로그램 카운터(PC), 상태 레지스터
    • 플립플롭을 여러 개 나라히 묶어놓은 것. 32bit register = D 플립플롭 32개
  • 파이프라인 스테이지 사이(Pipeline Register)
    • CPU 명령어를 Fetch -> Decode -> Execute -> Memory -> Writeback 처럼 여러 단계로 쪼개서 겹쳐 처리(파이프라이닝)하는데 각 단계 사이에 플립플롭을 넣어서 한 클럭마다 결과를 다음 단계로 출력
  • Counter(카운터)
    • 클럭분주기, 타이머 등에 사용
  • FSM(Finite State Machine)
    • UART 프로토콜 제어기, 신호등 컨트롤러, 버스 컨트롤러 처럼 "현재 어떤 상태인지"를 기억해야 하는 제어로직
  • Synchronizer(동기화 회로)
    • CDC용 2단 플립플롭. 비동기 신호
  • Shift Register
    • UART, SPI 같은 직렬 통신에서 비트를 한 클럭 마다 한 칸씩 밀어서 처리(직렬 <-> 병렬 변환)할 때 플립플롭 체인 사용

=> SRAM은 플립플롭 대비 대량 데이터를 저장하는데 사용하고, 플립플롭은 제어 로직의 현재 상태를 저장하는데 사용. CPU 설계에서 조합 논리(ALU, 디코더 등)와 플립플롭(레지스터, 파이프라인, FSM)을 번갈아 배치하는 게 디지털 회로 설계의 기본 골격

Comments