학습(공부)하는 블로그 :: 11. 카운터 - 동기식, 비동기식, 카운터의 응용
 

 
반응형
블로그 이미지
학습하고 공부한 것을 보고 싶을때 다시 볼려고 요약해서 정리한 블로그입니다. 좋은 정보는 서로 공유합시다. 깨비형
« 2026/6 »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

Archive»


Category»

Notice»

Recent Post»

Recent Comment»

Recent Trackback»

06-01 11:34

반응형

 

📋 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 플립플롭 카운터디지털 시계 회로전파지연 최대주파수디지털공학 카운터

반응형
: