
📋 TL;DR — 이 글의 핵심 요약
· 카운터(Counter)란 입력 펄스의 수를 세는 순서 논리회로
· 비동기식(리플) 카운터 : 첫 FF만 클록 수신 → 출력이 다음 FF를 트리거 → 회로 간단, 속도 느림
· 동기식 카운터 : 모든 FF에 클록 동시 인가 → 회로 복잡, 속도 빠름
· Modulo-m 카운터 : m개의 상태만 순환 (예: BCD = mod-10)
· 링 카운터 vs 존슨 카운터 : n개 FF → 각각 n가지, 2n가지 상태 출력
01 카운터란 무엇인가?
카운터(Counter)는 플립플롭(Flip-Flop)의 가장 대표적인 응용 회로입니다. 단순히 입력 펄스의 수를 세는 것을 넘어, 디지털 계측기·주파수계·타이머·디지털 시계 등 거의 모든 디지털 시스템에 사용됩니다.
📖 카운터의 활용 예시
· 클록 주파수가 일정할 때 → 1초간 펄스 수를 세면 주파수·주기 측정 가능
· 수정 발진기 + 카운터 조합 → 두 시점 사이의 시간 간격 측정
· 디지털 시계, 자판기 동작 순서 제어, 주파수 분주 회로 등
카운터의 분류
| ⏱ 비동기식 카운터 (Ripple Counter) · 첫 번째 FF에만 클록 입력 · 각 FF의 출력 → 다음 FF의 클록 입력 · 플립플롭이 순차적으로 트리거됨 · 회로 구성이 간단하나 속도가 느림 · JK 또는 T 플립플롭 사용 |
⚡ 동기식 카운터 (Synchronous Counter) · 모든 FF에 클록 동시 인가 · 모든 플립플롭이 동시에 트리거됨 · 전파지연이 누적되지 않음 · 회로가 복잡하나 속도가 빠름 · 고속 동작에 적합 |
▼ 비동기식 vs 동기식 클록 연결 방식 비교 다이어그램

02 비동기식 카운터 (Ripple Counter)
① 4비트 비동기식 상향 카운터 (Up Counter)
JK 플립플롭 4개를 직렬로 연결합니다. 각 플립플롭의 J, K 입력을 모두 1(HIGH)로 고정하면 클록 입력 때마다 출력이 토글(toggle)됩니다. 각 FF는 클록펄스의 하강에지(↓)에서 변화합니다.
4비트 상향 카운터 상태표 (0 → 15 순환)
| 클록펄스 | QD (MSB) | QC | QB | QA (LSB) | 10진수 |
| 1 | 0 | 0 | 0 | 0 | 0 |
| 2 | 0 | 0 | 0 | 1 | 1 |
| 3 | 0 | 0 | 1 | 0 | 2 |
| 4 | 0 | 0 | 1 | 1 | 3 |
| … | … | … | … | … | … |
| 16 | 1 | 1 | 1 | 1 | 15 |
| 17 (→리셋) | 0 | 0 | 0 | 0 | 0 (순환) |
✓ 주파수 분주 효과
각 FF의 출력은 입력 클록의 절반 주파수의 구형파를 출력합니다.
· QA : 입력의 1/2 주파수
· QB : 입력의 1/4 주파수
· QC : 입력의 1/8 주파수
· QD : 입력의 1/16 주파수

② 4비트 비동기식 하향 카운터 (Down Counter)
⚠️ 상향 vs 하향 카운터의 차이
· 상향 카운터 : 각 FF의 Q 출력을 다음 FF의 클록 입력으로 사용
· 하향 카운터 : 각 FF의 Q 출력(반전 출력)을 다음 FF의 클록 입력으로 사용
반전 출력을 사용하면 상승에지에서 트리거되어 15 → 14 → 13 → … → 0 순서로 감소합니다.
🔺 시험 단골 함정! 단, 이 규칙은 플립플롭이 하강 에지(↓, Negative-edge)에서 동작한다는 전제하에 성립합니다. 만약 상승 에지(↑) 동작 FF를 사용한다면 Q와 Q의 역할이 반대가 됩니다.
③ 비동기식 카운터의 동작 속도 한계
비동기식 카운터는 FF의 출력이 물결처럼 전파되므로 전파지연(propagation delay)이 누적됩니다. 최대 클록 주파수는 다음과 같이 제한됩니다.
fmax ≤ 1 / (n × tpd)
n = 플립플롭 수 | tpd = FF당 전파지연 시간
✓ 계산 예시
tpd = 20ns, FF 4개인 4비트 카운터의 경우:
fmax = 1 / (4 × 20ns) = 12.5 MHz
→ 클록 주파수는 반드시 12.5MHz 이하여야 함
10비트 리플 카운터라면: 20ns × 10 = 200ns 지연 발생
④ 비동기식 Modulo-m 카운터 (BCD/10진 카운터)
Modulo-m(mod-m) 카운터는 m개의 상태만 순환하는 카운터입니다. 대표 예시는 BCD 카운터 (mod-10) — 0에서 9까지만 카운트하고 다시 0으로 돌아갑니다.

❌ glitch(글리치) 주의!
카운터 출력이 목표 카운트+1(예: 10)에 도달하는 순간을 NAND/AND 게이트로 감지해 모든 FF를 CLR합니다. 이 과정에서 아주 짧은 시간 동안 10이 출력되는 글리치(glitch)가 발생하며, 이것이 카운터 오동작의 원인이 될 수 있습니다.
03 동기식 카운터 (Synchronous Counter)
비동기식 카운터의 전파지연 문제를 해결하기 위해 모든 플립플롭에 클록펄스를 공통으로 인가하는 동기식 카운터를 사용합니다. 카르노 맵(Karnaugh Map)을 통해 각 FF의 입력 함수를 유도하여 설계합니다.
n비트 동기식 2진 카운터 — 입력 함수 패턴
동기식 카운터에서 JK 플립플롭은 하위 비트가 모두 1일 때 토글합니다. 따라서 입력 함수는 하위 비트들의 AND 연산으로 간단히 표현됩니다.
| 플립플롭 | J 입력 | K 입력 |
| FF-A (LSB) | JA = 1 | KA = 1 |
| FF-B | JB = QA | KB = QA |
| FF-C | JC = QB·QA | KC = QB·QA |
| FF-D | JD = QC·QB·QA | KD = QC·QB·QA |
▼ 3비트 동기식 2진 상향 카운터 회로도

동기식 BCD 카운터의 입력 함수
| FF | J 입력 | K 입력 |
| A | JA = 1 | KA = 1 |
| B | JB = QD·QA | KB = QD·QA |
| C | JC = QB·QA | KC = QB·QA |
| D | JD = QC·QB·QA | KD = QA |
📖 BCD 카운터의 특징
· FF-D의 K 입력이 KD = QA로 일반 2진 카운터와 다름
· 이로 인해 9(1001)에서 다음 클록에 0(0000)으로 돌아가는 mod-10 동작 구현
· 10~15 상태는 사용하지 않음 (don't care)
💡 카르노 맵 최적화 팁: 표에서 KB = QD·QA 로 적었지만, 카르노 맵에서 무관조건(Don't care)을 활용하면 KB = QA 로 간소화해도 동일하게 동작합니다. 상태 9(1001)일 때 QB는 이미 0이므로 KB가 1이 되어도 동작에 영향을 주지 않기 때문입니다. 실제 IC 설계 시 이 방식으로 게이트를 줄입니다.
04 링 카운터와 존슨 카운터
① 링 카운터 (Ring Counter)
📖 링 카운터란?
· 임의의 시간에 단 하나의 플립플롭만 논리 1이 되고 나머지는 모두 0
· 논리 1은 클록펄스에 따라 한 방향으로 계속 순환(shift)
· n개의 FF로 n가지 상태 출력 (4개 FF → 4상태: 1000, 0100, 0010, 0001)
· 최종 FF의 Q 출력을 최초 FF의 D 입력에 연결하는 것이 핵심!
▼ 4비트 링 카운터 회로 및 상태 순환
링 카운터 — 1이 오른쪽으로 순환


| 클록 순서 | QA | QB | QC | QD |
| 초기 (INIT) | 1 | 0 | 0 | 0 |
| CP↑ 1회 | 0 | 1 | 0 | 0 |
| CP↑ 2회 | 0 | 0 | 1 | 0 |
| CP↑ 3회 | 0 | 0 | 0 | 1 |
| CP↑ 4회 | 1 | 0 | 0 | 0 |
② 존슨 카운터 (Johnson Counter / Twisted Ring Counter)
| 🔄 링 카운터 · 최종 FF의 Q 출력 → 최초 FF D 입력 · n개 FF로 n가지 상태 · 4개 FF → 4가지 상태 · 1000 → 0100 → 0010 → 0001 → 1000 |
🔄 존슨 카운터 · 최종 FF의 Q (반전 출력) → 최초 FF D 입력 · n개 FF로 2n가지 상태 · 4개 FF → 8가지 상태 · 0000 → 1000 → 1100 → 1110 → 1111 → 0111 → 0011 → 0001 → 0000 |
▼ 링 카운터 vs 존슨 카운터 피드백 연결 비교

05 응용 — 디지털 시계
디지털 시계는 카운터의 가장 대표적인 응용 예입니다. 5단계 블록으로 구성됩니다.
| ① 발진 회로 안정된 클록 생성 |
→ | ② 분주 회로 1Hz 신호 생성 |
→ | ③ 카운터 회로 초·분·시 계수 |
→ | ④ 디코더 회로 BCD→7세그먼트 |
→ | ⑤ 표시 회로 7세그먼트 LED |
| 블록 | 설명 및 구현 방법 |
| ① 발진 회로 | 안정적인 클록 공급 · 방법1: 가정용 220V 전원의 60Hz 이용 · 방법2: CR 발진회로 · 방법3: 수정 발진자(Crystal Oscillator) — 가장 정밀 |
| ② 분주 회로 | 발진 주파수 → 1Hz 변환 · 60Hz 정현파 → 슈미트 트리거(구형파化) → ÷10 (7490) → ÷6 (7492) → 1Hz · 디지털 시계의 기본 단위 "1초"를 만드는 핵심 |
| ③ 카운터 회로 | 초(Second): 10진 카운터 (7490, ÷10) + 6진 카운터 (7492, ÷6) → 00~59 분(Minute): 초와 동일 구조 → 00~59 시(Hour): 12진 카운터 (7490+7492 조합) → 1~12 |
| ④ 디코더 회로 | BCD 코드 → 7세그먼트 표시용 신호 변환 · 7447 (액티브 LOW 출력) 또는 7448 사용 |
| ⑤ 표시 회로 | 7세그먼트 LED 디스플레이 (SND517 등) · a~g 세그먼트로 0~9 숫자 표시 |
▼ 60Hz → 1Hz 분주 과정


📌 핵심 정리
· 비동기식(리플) 카운터 : FF 직렬 연결, 출력이 물결처럼 전파, 속도 제한 (fmax ≤ 1/n×tpd)
· 동기식 카운터 : 모든 FF에 공통 클록, 카르노 맵으로 입력함수 유도, 고속 동작
· Modulo-m 카운터 : m상태 순환, CLR로 구현 (BCD=mod-10), glitch 주의
· 링 카운터 : 1이 순환, n FF → n상태, Q 출력을 첫 FF D에 피드백
· 존슨 카운터 : n FF → 2n상태, Q (반전 출력)을 첫 FF D에 피드백
· 디지털 시계 : 발진 → 분주(1Hz) → 카운터(초/분/시) → 디코더 → 표시 5단계
태그 : 비동기식 카운터란동기식 카운터 차이리플 카운터 동작BCD 카운터 설계링 카운터 존슨 카운터 차이modulo-m 카운터JK 플립플롭 카운터디지털 시계 회로전파지연 최대주파수디지털공학 카운터
'학과 수업 노트 > 디지털공학' 카테고리의 다른 글
| 12. 레지스터 (0) | 2026.05.31 |
|---|---|
| 10. 동기 순서논리회로 (0) | 2026.05.18 |
| 9. 플립플롭 - JK플립플롭, T플립플롭 (0) | 2026.05.08 |
| 8. 플립플롭 I - SR 래치, SR 플립플롭, D 플립플롭 (0) | 2026.05.01 |
| 7. 조합논리회로(2) - 멀티플렉서, 디멀티플렉서, 코드변환기, 비교기 (0) | 2026.04.17 |

