플립플롭과 레지스터
클럭 가장자리에서 값을 붙잡아 기억하는 플립플롭. 이것이 여러 개 모이면 MCU의 레지스터가 됩니다.
조합 회로는 기억하지 못합니다. 값을 기억하려면 출력이 다시 입력으로 돌아오는 구조가 필요하고, 그 기본 단위가 플립플롭입니다.
D 플립플롭
클럭이 0에서 1로 바뀌는 순간(상승 에지)의 D 입력 값을 Q 출력에 옮기고, 다음 에지까지 유지합니다. 그 사이에 D가 아무리 흔들려도 Q는 변하지 않습니다.
| 클럭 | D | Q |
|---|---|---|
| 상승 에지 | 0 | 0으로 바뀜 |
| 상승 에지 | 1 | 1로 바뀜 |
| 그 외 | 무관 | 유지 |
레지스터
D 플립플롭 32개를 같은 클럭에 묶으면 32비트 레지스터입니다. GPIO 출력 레지스터에 값을 쓰면 그 값이 플립플롭에 저장되어 핀 전압으로 계속 나가는 것입니다.
래치와의 차이
래치는 클럭이 1인 동안 계속 입력을 통과시키고, 플립플롭은 에지 순간에만 받습니다. 동기식 디지털 회로는 거의 플립플롭으로 설계해서 모든 값이 클럭에 맞춰 한꺼번에 바뀌게 합니다.