래치와 플립플롭, 트랜지스터로 값을 기억하는 원리

래치와 플립플롭, 트랜지스터로 값을 기억하는 원리

서점 직원 두 명이 마주 보고 서 있다고 해 보겠습니다. 한 명이 “오늘은 영업 중”이라고 말하면 다른 한 명이 반대로 “휴업 팻말은 내려 둠”이라고 답하고, 그 답을 들은 첫 번째 직원이 다시 뒤집어 “영업 중”이라고 확인합니다. 서로의 말을 뒤집어 돌려주는 동안 처음 상태가 흔들리지 않고 유지되는 이 모습이 래치와 플립플롭이 값을 붙잡는 방식의 기본 그림입니다.

트랜지스터로 만든 회로에서 이 두 직원에 해당하는 것이 인버터 두 개입니다. 래치(Latch)와 플립플롭(Flip-Flop)은 이 고리에 입력 경로를 붙여 값을 바꾸고 가두도록 만든 기억 소자이고, 이 글에서는 인버터 두 개에서 출발해 투명 래치와 마스터-슬레이브 구조까지 소자 수준으로 따라가 보겠습니다.

래치와 플립플롭의 출발점, 인버터 두 개의 맞물림

인버터 하나는 입력을 뒤집어 출력할 뿐 값을 기억하지 못합니다. 그런데 인버터 A의 출력을 인버터 B의 입력에, B의 출력을 다시 A의 입력에 연결해 고리로 만들면 사정이 달라집니다.

맞물린 두 인버터Q = INV(Qb), Qb = INV(Q)

이 식을 만족하는 안정한 상태는 (Q = 1, Qb = 0)과 (Q = 0, Qb = 1) 두 가지입니다. 한쪽에 놓이면 그 값을 스스로 계속 유지합니다.

왜 두 상태가 안정한지는 인버터의 전달 곡선으로 설명할 수 있습니다. 입력이 전환 구간에 있을 때 인버터의 이득은 절댓값이 1보다 크기 때문에, 작은 편차는 고리를 한 바퀴 돌 때마다 증폭되어 결국 한쪽 전원 레일로 끝까지 밀려갑니다. 두 출력이 정확히 같은 중간 전압인 균형점도 존재하지만, 이 점은 조금만 어긋나도 무너지는 불안정한 균형입니다.

가상 계산 예시, 편차가 증폭되는 모습두 인버터의 전환 구간 이득을 각각 −5라고 가정합니다. Q가 균형 전압보다 10 mV 높으면 Qb는 −5 × 10 mV = 50 mV만큼 낮아지고, 그 결과 Q는 다시 −5 × (−50 mV) = 250 mV만큼 높아집니다.

한 바퀴에 편차가 25배씩 커지는 셈이고, 선형 근사는 이 정도까지만 유효합니다. 이후에는 출력이 전원 레일에 닿아 포화됩니다.

값이 정해진 뒤에는 상태를 지키기 위해 전력을 거의 쓰지 않습니다. 두 인버터 중 하나는 꺼져 있어 전원에서 접지로 직통 경로가 없고, 누설 전류만 흐르기 때문입니다. 전원이 켜져 있는 한 값이 유지되므로 DRAM처럼 주기적으로 되살려 줄 필요가 없고, 전원이 꺼지면 사라지는 휘발성 소자입니다.

트랜지스터 4개로 만든 이 인버터 고리에 접근용 NMOS 두 개를 더한 것이 SRAM 한 비트를 만드는 6개 트랜지스터 셀입니다. DRAM이 트랜지스터 하나와 커패시터 하나에 전하를 가둔 뒤 새어 나가는 만큼 되살리는 방식이라면, SRAM은 고리가 스스로 값을 복원하는 방식입니다. 다만 이 고리만으로는 값을 바꿀 방법이 없으니, 입력 경로가 필요합니다.

SR 래치, 게이트 두 개로 만든 기억 소자

가장 단순한 입력 경로는 인버터 대신 NOR 게이트 두 개를 교차로 연결하는 것입니다. 식으로 쓰면 Q = NOR(R, Qb), Qb = NOR(S, Q)이고, 값을 1로 만드는 입력 S(Set)와 0으로 만드는 입력 R(Reset)을 갖습니다.

NOR로 만든 SR 래치의 동작

  • S = 0, R = 0: 이전 값을 그대로 유지합니다.
  • S = 1, R = 0: Q가 1이 됩니다 (Set).
  • S = 0, R = 1: Q가 0이 됩니다 (Reset).
  • S = 1, R = 1: 두 출력이 모두 0이 되어 Q와 Qb가 서로 반대라는 약속이 깨집니다. 금지 입력입니다.

금지 입력이 문제인 이유는 입력을 풀 때 드러납니다. S와 R을 동시에 0으로 돌리면 두 NOR가 동시에 출력을 1로 올리려 하고, 어느 쪽이 이길지는 두 게이트의 미세한 차이로 결정되어 예측할 수 없습니다. 그래서 설계에서는 S = R = 1이 들어오지 않도록 막아 둡니다.

NOR 게이트를 CMOS로 만들면 PMOS 둘을 직렬로, NMOS 둘을 병렬로 연결하는 구조가 됩니다. 기억 소자도 결국 이런 기본 게이트의 조합이라는 점이 중요합니다.

D 래치, 전달 게이트로 값을 받고 가두기

SR 래치는 입력이 둘이고 금지 조합이 있어 쓰기 불편합니다. D 래치는 데이터 입력 D 하나와 허용 신호(클록)만으로 동작하도록 바꾼 것입니다. 구현 방법은 여러 가지인데, 여기서는 전달 게이트를 쓰는 형태를 보겠습니다.

전달 게이트로 만든 D 래치 (구현 예 하나)입력 D → 전달 게이트 TG1 → 노드 X → 인버터 INV1 → 인버터 INV2 → 출력 Q, 그리고 Q → 전달 게이트 TG2 → 노드 X

CLK = 1일 때: TG1이 켜지고 TG2가 꺼져, D가 X와 Q로 그대로 전달됩니다. 이 상태를 투명(Transparent)하다고 합니다.

CLK = 0일 때: TG1이 꺼지고 TG2가 켜져, Q가 X를 밀어 주는 고리가 닫히면서 값을 유지합니다.

전달 게이트는 NMOS와 PMOS를 병렬로 묶어 두 트랜지스터를 함께 켜는 스위치입니다. NMOS 하나만 쓰면 0은 온전히 전달하지만 1은 약하게(VDD − Vth 근처까지만) 전달하고, PMOS는 그 반대입니다. 둘을 병렬로 두면 0과 1이 모두 손실 없이 통과합니다.

이 구조에서 트랜지스터 수는 전달 게이트 둘에 4개, 인버터 둘에 4개로 8개입니다. 투명한 구간에서 D가 계속 흔들리면 Q도 그대로 따라 흔들리는 것이 한계이고, 그 한계를 푸는 것이 다음 단계입니다.

D 플립플롭, 래치 두 개로 클록 에지를 잡는 방식

래치와 플립플롭은 같은 말이라고 생각하기 쉽지만 동작 시점이 다릅니다. 래치는 클록이 1인 동안(또는 0인 동안) 계속 투명한 레벨 동작이고, 플립플롭은 클록이 바뀌는 순간 한 번만 값을 잡는 에지 동작입니다. 요즘 교재에서는 플립플롭을 에지 트리거 소자에 한정해 부르는 경우가 많습니다.

에지 동작은 래치 두 개를 직렬로 이어 만들 수 있습니다. 앞 단인 마스터는 CLK = 0에서 투명하고, 뒷 단인 슬레이브는 CLK = 1에서 투명하도록 클록 위상을 반대로 줍니다. 상승 에지 동작을 순서대로 보면 이렇습니다.

마스터-슬레이브 D 플립플롭의 상승 에지 동작

  1. CLK = 0 구간: 마스터는 투명하게 D를 받아 두고, 슬레이브는 닫혀 이전 Q를 유지합니다.
  2. CLK가 0에서 1로 오르는 순간: 마스터가 닫히며 그 순간의 D 값을 가두고, 슬레이브가 열려 그 값을 Q로 내보냅니다.
  3. CLK = 1 구간: 마스터가 닫혀 있으므로 D가 바뀌어도 Q는 변하지 않습니다.
  4. CLK가 1에서 0으로 내리는 순간: 마스터가 다시 열리고 슬레이브는 닫혀 다음 에지를 기다립니다.

왜 문이 두 개여야 할까요. 서점 입구의 이중문을 떠올리면 쉽습니다. 문이 하나뿐이면 열려 있는 동안 바깥 공기가 안까지 들어오지만, 이중문은 두 문이 동시에 열리지 않아 어느 순간에도 바깥과 안이 직접 이어지지 않습니다. 마스터와 슬레이브도 한 번에 한 쪽만 열려 입력이 출력에 곧장 닿는 일이 없습니다.

가상 계산 예시, 트랜지스터 수 비교위의 래치가 8개이므로 마스터-슬레이브 두 단은 16개이고, 클록과 반전 클록을 만드는 인버터 2개를 더하면 18개입니다. 라이브러리 셀에 따라 구성과 개수는 다릅니다.

같은 한 비트를 저장하는 6개 트랜지스터 SRAM 셀보다 훨씬 많지만, 클록 에지에 맞춰 값을 갱신하는 동작을 이 셀 하나가 모두 해결합니다.

레지스터, 상태 기계, 파이프라인 단이 모두 이 플립플롭으로 만들어집니다. 래치는 클록 게이팅 셀에서 글리치를 걸러 내는 용도나, 한 단계의 남는 시간을 다음 단계로 빌려 주는 설계에 쓰이고, 전원을 끄는 동안 상태를 지키는 리텐션 플립플롭에도 같은 기억 고리가 들어 있습니다.

준안정성, 값이 어중간하게 걸리는 순간

마스터가 닫히는 바로 그 순간에 D가 막 바뀌고 있으면 고리 안의 전압이 전원 레일 어느 쪽에도 닿지 못하고 균형점 근처에 걸릴 수 있습니다. 앞에서 본 불안정한 균형점 근처에 머무는 이 상태를 준안정성(Metastability)이라 합니다.

균형점에서 벗어나는 속도는 고리의 이득이 정합니다. 편차가 시간에 따라 지수적으로 자라므로 언제 정착할지는 예측할 수 없지만, 오래 머물 확률은 시간이 지날수록 지수적으로 줄어듭니다. 시간을 더 주면 실패 확률이 급격히 낮아지는 구조입니다.

가상 계산 예시, 정착 시간과 실패 확률고리의 정착 시간 상수 τ가 20 ps라고 가정합니다. 정착에 쓸 수 있는 시간이 200 ps(τ의 10배)이면 아직 정착하지 못한 채 남을 확률은 e^−10 ≈ 4.5 × 10^-5배로 줄어듭니다.

여유 시간을 τ의 5배인 100 ps로 줄이면 e^−5 ≈ 6.7 × 10^-3으로 약 150배 커집니다. 단순화한 모델이고 실제 값은 소자와 조건에 따라 다릅니다.

이 문제는 두 가지 규칙으로 관리합니다. 클록 에지 전에 D가 미리 안정해 있어야 하는 시간이 셋업(Setup), 에지 뒤에도 입력이 유지되어야 하는 시간이 홀드(Hold)이고, 이를 어기면 준안정성이 생길 수 있습니다. 서로 다른 클록에서 들어오는 신호는 플립플롭 두 개를 직렬로 놓은 동기화기로 받는데, 첫 단이 흔들려도 한 클록 주기만큼 정착할 시간을 벌어 두 번째 단에 안정한 값이 전달되기 때문입니다.

SR 래치, D 래치, D 플립플롭 비교 표

구분SR 래치D 래치D 플립플롭
입력S와 R 두 개D 한 개와 허용(클록)D 한 개와 클록
값이 바뀌는 시점S 또는 R이 켜진 동안클록이 투명 레벨인 동안 계속클록 에지 순간에만
입력의 변화가 출력에 닿는가그렇습니다투명한 동안 그대로 닿습니다에지 외에는 닿지 않습니다
구성NOR 또는 NAND 두 개를 교차 연결전달 게이트와 인버터 고리 (예: 8개)D 래치 두 개를 마스터-슬레이브로 연결
주의할 점S = R = 1 금지 입력투명 구간의 레이스셋업과 홀드, 준안정성

핵심 정리

래치와 플립플롭은 모두 인버터 두 개가 서로의 출력을 뒤집어 돌려주며 값을 붙잡는 되먹임 고리에서 시작합니다. 여기에 입력 경로를 붙이면 SR 래치가 되고, 전달 게이트로 값을 받아 가두면 D 래치, 투명 구간이 서로 엇갈리는 래치 두 개를 이으면 에지에서만 값을 잡는 D 플립플롭이 됩니다.

서점의 두 직원처럼 서로 붙잡고 있으면 값은 흔들리지 않지만, 말을 바꾸는 순간에는 어중간한 상태가 생길 수 있습니다. 그 순간을 관리하는 규칙이 셋업과 홀드이고, 비유와 달리 실제 회로는 어중간한 전압이 지수적으로 정착한다는 점이 다릅니다. 이 흐름을 알면 타이밍 문제와 SRAM, 저전력 설계가 하나로 이어집니다.

면접 대비 질문

면접 대비 질문래치와 플립플롭의 차이를 트랜지스터 수준에서 설명하고, 플립플롭을 래치 두 개로 만드는 이유와 준안정성이 생기는 원리를 말해 보세요.

[답변 포인트] 두 인버터를 되먹임으로 연결하면 이득이 1보다 큰 양의 되먹임이 되어 두 안정 상태를 갖는다는 점에서 출발합니다. 래치는 클록 레벨 동안 투명해 입력이 출력에 그대로 닿고, 플립플롭은 마스터와 슬레이브가 반대 위상으로 열려 에지 순간에만 값을 잡는다고 구분합니다. 문이 하나면 열린 동안 입력이 출력으로 새고, 두 문이 번갈아 열리면 직접 통로가 생기지 않는다는 설명이 핵심입니다. 준안정성은 샘플링 순간 입력이 바뀌어 고리가 불안정한 균형점 근처에 걸리는 현상이며, 셋업과 홀드를 지키고 2단 동기화기로 정착 시간을 벌어 확률을 지수적으로 줄인다고 마무리합니다.