yeolyi.com성열의 컴퓨터공학

플립플롭

컴퓨터의 모든 회로는 클럭이라는 일정한 박자에 맞춰 동작합니다. 그렇다면 클럭에 맞춰 동작하는 메모리는 어떻게 구현할 수 있을까요? D 플립플롭(D Flip-Flop)을 살펴봅시다.

D 플립플롭

D 플립플롭은 D 래치처럼 데이터를 입력받아 저장하지만, 클럭의 특정 순간(엣지)에서만 데이터를 받아들입니다. 상승 엣지 혹은 하강 엣지 중 하나를 선택할 수 있습니다.

엣지의 그 순간에만 데이터를 받아들이므로, 입력이 아무리 요동쳐도 결과가 예측 가능하고 안정적입니다.

상승 엣지 D 플립플롭은 두 개의 D 래치를 사용해 아래와 같이 구현할 수 있습니다. 앞쪽 래치는 CLK=0일 때 열려 데이터를 받아들이고, 뒤쪽 래치는 CLK=1일 때 열려 앞쪽 래치의 값을 출력합니다. 두 래치가 동시에 열리지 않기 때문에 CLK가 0→1로 바뀌는 순간에만 데이터가 통과합니다.

다음 순서대로 조작해봅시다:

  1. D를 클릭해 1로 바꿉니다. CLK이 이미 1이지만 엣지(변화하는 순간)가 아니므로 Q는 변하지 않습니다.
  2. CLK를 클릭해 0으로 바꿉니다. 하강 엣지지만, 이 플립플롭은 상승 엣지에서만 반응하므로 Q는 그대로입니다.
  3. CLK를 다시 클릭해 1로 바꿉니다(상승 엣지). 이 순간 D의 값(1)이 Q에 저장됩니다.

마무리

두 D 래치를 엇갈려 연결해, 클럭의 엣지에서만 값을 받아들이는 D 플립플롭을 만들었습니다. 이제 회로는 계산 결과를 클럭의 박자에 맞춰 안정적으로 ‘기억’할 수 있습니다.

그런데 D 플립플롭 하나는 단 하나의 비트만 저장합니다. 다음 글에서는 플립플롭을 묶어 여러 비트를 저장하고, 그중 하나를 골라 읽고 쓰는 방법을 알아봅시다.