비동기 카운터: 작동, 유형, 타이밍의 상충

게시됨 11월 04, 2026

비동기 카운터는 계단식 플립플롭을 통해 클럭 펄스를 카운트하는데, 이 플립플롭은 첫 번째 단계만 외부 클럭을 받고 각 후속 단계는 이전 출력에서 트리거됩니다. 이 리플 전파는 설계를 단순하게 유지하지만, 누적 지연(표준 74HC 시리즈 논리에서는 보통 단계당 5-15ns)을 도입하여 주파수 분할과 저속 이벤트 카운팅에 적합하지만 모든 출력 비트가 동시에 업데이트되어야 할 때는 문제가 있습니다. 아래에서는 리플 메커니즘, 실용적인 타이밍 제약, 그리고 이 아키텍처가 여전히 타당한 부분에 대해 설명하겠습니다.

주요 요점:

  • 리플 딜레이는 스테이지 수에 따라 선형적으로 스케일링됩니다; 74HC73 플립플롭으로 구성된 4비트 비동기 카운터는 최악의 경우 전파 속도가 약 40 ns를 기록하여 ~10 MHz 이하의 신뢰성 작동을 제한합니다.
  • 비동기 카운터는 주파수 분할에 뛰어나며(각 단계가 입력 주파수를 절반으로 줄여줌), 모든 플립플롭에 고속 클럭 트리를 라우팅할 필요가 없습니다.
  • 다중 비트 전이 중 일시적인 글리치 상태(예: 0111→1000)는 출력 스트로브 현상이 없으면 다운스트림 로직에서 잘못된 트리거가 발생할 수 있습니다.
  • 동기식 카운터는 리플 지연과 글리치를 제거하지만, 더 많은 라우팅 자원을 요구하고 클럭을 모든 단계에 분배하는 데 더 많은 전력을 소비합니다.

리플 전파 작동 원리

첫 번째 플립플롭은 모든 입력 클럭 엣지에서 토글을 합니다. 출력은 두 번째 플립플롭을 클럭하며, 플립플롭은 토글 빈도의 절반을 맞춥니다. 그 출력이 3단계를 클럭하는 식으로 이어집니다. 각 단계는 이전 단계가 안정될 때까지 기다리기 때문에 최종 출력 비트가 마지막으로 업데이트되며, 이 연쇄 지연이 시그니처 리플 효과입니다.

실용적인 관점에서 오실로스코프에서 명확히 볼 수 있습니다: 최하위 비트(LSB)를 프로브하면 입력 클럭을 추적합니다; 4비트 카운터의 최상위 비트(MSB)를 탐색하면 약 4 전파 지연 후에 전이가 일어나는 것을 볼 수 있습니다. 이 단계별 타이밍은 /16 클럭 분할기를 생성하는 용도에는 괜찮지만, 모든 비트를 병렬로 샘플링하는 회로 - 예를 들어 마이크로컨트롤러가 카운트 값을 읽거나 비교기가 터미널 카운트를 확인하는 경우 - 를 깨뜨립니다.

유형과 수, 방향

업 카운터: 각 플립플롭은 이전 단계의 비역전 출력으로 클럭되므로, 카운트는 표준 이진 순서(0000, 0001, 0010, ..., 1111, 그리고 0000으로 감기)로 증가합니다.

다운 카운터: 각 플립플롭은 이전 단계의 보완 출력(Q̄)에 의해 클럭되며, 순서가 반전됩니다 (1111, 1110, 1101, ..., 0000).

선택은 어떤 플립플롭 출력을 다음 클럭 입력에 연결하느냐에 달려 있습니다. J-K와 T 플립플롭은 토글 모드가 외부 논리를 최소화하여 J와 K를 높게 묶거나 T를 높게 유지하는 것만으로 흔합니다. D 플립플롭은 작동하지만, 반전된 출력이 D 입력으로 다시 전달되어 게이트가 추가됩니다.

무시할 수 없는 타이밍 제약

누적 전파 지연: 각 플립플롭은 클럭에서 출력 지연(tp)을 더합니다. n비트 카운터의 경우, 최악의 경우 리플 시간은 n × tp입니다. 74HC73 플립플롭(≈5 V에서 10 ns) 4비트 카운터는 ~40 ns에 안정됩니다; 8비트 카운터는 80 ns를 밀어냅니다. 만약 애플리케이션이 카운트를 샘플링한 상태가 안정화되기 전에 산출된다면, 그건 쓰레기라고 읽는 겁니다.

글리치 상태: 0111→1000과 같이 여러 비트가 뒤집히는 전이 중간에서 잠시 불법 상태(0110, 0100, 0000, 1000 순차)를 보입니다. 마이크로컨트롤러 프로젝트에서 이런 오류, 즉 가짜 트리거 인터럽트 로직을 본 적이 있습니다. 해결책은 리플 완성을 기다리는 지연 활성화 신호로 출력을 스트로브하거나, 모든 비트가 함께 변경되는 동기식 카운터로 전환하는 것입니다.

최대 클럭 주파수: 입력 클럭 주기는 모든 다운스트림 로직의 총 리플 지연과 설정 시간을 초과해야 합니다. 4비트 74HC 카운터의 경우 실제 최대 입력 주파수는 약 10-12 MHz 정도입니다; 그 이상으로 밀면 메타안정성이나 놓친 카운트가 발생합니다.

Figure 1. Ripple delay accumulation in a 4-bit asynchronous counter

비동기 카운터가 여전히 의미가 있을 때

주파수 분할: 만약 MSB 출력만 신경 쓰고 중간 비트를 무시한다면 리플 지연은 중요하지 않습니다. 1 MHz 클럭으로 공급된 4비트 카운터는 MSB에서 깨끗한 62.5 kHz 사각파를 제공하며, 글리치나 동기화가 필요 없습니다. 저는 클럭 프리스케일러 회로에서 이 방식을 자주 사용합니다.

느린 입력을 이용한 이벤트 카운팅: 기계식 스위치 클로저, 센서 펄스, 또는 100 kHz 이하의 신호는 거의 타이밍 한계에 도달하지 않습니다. 74HC393 듀얼 4비트 카운터는 동기식 카운터의 일부에 불과하며 클럭 분배를 위한 PCB 공간이 필요하지 않습니다.

ASIC/FPGA의 낮은 게이트 개수: FPGA가 동기식 설계를 선호하지만, 비동기식 카운터는 초저전력 또는 면적이 제한된 블록에서 플립플롭을 절약할 수 있어 타이밍을 직접 관리할 수 있습니다.

그들이 못하는 점: 전체 카운트를 병렬로 읽거나(주소 생성, 디스플레이 다중화, 터미널 카운트 감지) 또는 몇 메가헤르츠 이상으로 동작하는 모든 애플리케이션. 그런 경우 리플 지연이 기능 오류를 일으키거나, 출력 래치, 스트로브 생성 등 외부 로직을 너무 많이 추가해야 해서 동기식 카운터가 더 단순해집니다.

디자인 체크리스트

→ 최악의 경우 리플 지연을 계산합니다: n × tp, 여기서 n은 단계 수이고 tp는 플립플롭 데이터시트에서 가져옵니다.
→ 입력 클럭 주기를 리플 지연 ≥ + 다운스트림 설정 시간 + 마진(저는 20% 마진을 사용)을 검증합니다.
→ 어떤 논리가 카운트를 샘플링한다면, 최소 리플 시간 지연된 출력 스트로브를 추가하거나 동기식 카운터를 사용하세요.
→ 2/2/나눗셈 응용 분야에서는 최종 단계를 탭하고 중간 출력은 무시하세요 - 리플은 중요하지 않습니다.
→ 플립플롭 계열(HC, AC, LV)이 속도와 전압 요구사항을 충족하는지 확인하세요; 구형 74LS 부품은 TP ≈ 20 ns를 가지고 있으며 4비트 구성에서는 10 MHz에 도달하지 못합니다.
→ 전체 카운트 시퀀스를 단순한 스코프가 아니라 논리 분석기로 테스트합니다; 스코프를 느리게 설정하면 글리치는 쉽게 놓칠 수 있습니다.

비동기식 vs. 동기식: 진짜 트레이드오프

측면 비동기식 동기식
클럭 분포 오직 첫 번째 단계까지만 모든 플립플랍
출력 타이밍 리플 딜레이, 비트가 순차적으로 업데이트됨 모든 비트는 같은 에지(클럭 스큐 내에서)에서 업데이트됩니다
최대 속도 n × tp로 제한됨 (일반적으로 4비트 시 <20 MHz) 단일 TP + 조합 논리로 제한 (100 MHz 초과 가능)
글리치 상태 다중 비트 전이 중 설계가 전반적으로 동기적일 경우 부재
게이트 카운트 n 플립플랍 다음 상태 x x 플립플롭 + 조합 논리
파워 (다이내믹) 더 낮게 - 토글 단계만 전류를 끌어 더 높은 곳 - 시계 트리와 모든 플립플롭은 매 사이클마다 토글
최고의 사용 사례 주파수 분배기, 느린 이벤트 카운터, 최소한의 보드 공간 프로세서 버스, 고속 데이터 경로, 모든 병렬 읽기

표는 비동기식 카운터가 느리지만 틈새 역할에서 지속되는 이유를 보여줍니다. UART의 10 MHz 시스템 클럭을 1 MHz로 나누는 경우, 비동기 카운터는 세 개의 플립플롭과 라우팅 혼잡 없이 역할을 합니다. 하지만 DRAM 리프레시용 주소 카운터나 CPU가 직접 읽는 타이머 주변기기를 만든다면, 동기식이 유일한 실용적인 선택입니다.

Figure 2. Comparison of output timing between asynchronous and synchronous 4-bit counters

실용 회로 노트

프리셋 및 클리어: 대부분의 카운터 IC(74HC393, 74HC4040)는 비동기 클리어 입력을 포함하며; 일부는 동기식 부하를 추가합니다. 비동기 클리어를 사용해 2의 거듭제곱이 아닌 모듈러스(예: 10년 카운터)를 설정하면 작동하지만, 터미널 카운트를 디코딩하고 클리어를 펄스하는 게이트가 필요합니다 - 클리어가 모든 단계가 터미널 상태로 리플링되기 전에 도달하는 레이스 컨디션을 주의 깊게 관찰하세요.

4비트 너머 캐스케이드: MSB 캐리 출력을 다음 패키지의 클럭 입력에 공급하여 4비트 카운터 IC를 연쇄할 수 있습니다. 4비트 단계가 추가될 때마다 추가로 40 ns의 지연이 발생하므로, 두 개의 74HC393으로 구성된 8비트 카운터는 ~80 ns 리플을 가지며 실제 최대 입력 주파수는 약 5 MHz 정도입니다.

마이크로컨트롤러와의 인터페이스: 마이크로컨트롤러로 비동기 카운터를 읽어야 한다면, MSB가 트리거하는 입력 캡처 타이머를 사용해 한 비트만 신경 쓰거나, 74HC373 투명 래치로 출력을 래칭하여 리플이 완료될 때까지 래치 활성화를 낮게 유지하세요. "무작위" 카운트 오류를 디버깅하느라 몇 시간씩 버텼는데, 그게 MCU 샘플링 중간에서 비롯된 거였어요.

산업이 향하는 방향

비동기식 카운터는 비용 민감 설계, 특히 LED 드라이버, 가전 타이머, 자동차 다스보드 회로에서 여전히 등장하지만, 동기식 아키텍처가 마이크로프로세서나 FPGA를 사용하는 모든 경우를 지배합니다. 74HC590(출력 레지스터 포함 8비트 바이너리 카운터)과 74HC4040(12비트 리플 카운터)은 여전히 생산 중이며, 이는 여전히 수요가 있음을 의미합니다. 하지만 새로운 IC 계열(예: TI의 SN74AUP 시리즈)은 동기식 토폴로지에 집중합니다. 이는 모바일 및 IoT 애플리케이션이 게이트 수보다 낮은 지연 시간을 중시하기 때문입니다.

디지털 설계를 가르친다면, 비동기 카운터는 전파 지연과 메타안정성을 구체적으로 드러내기 때문에 이해할 가치가 있습니다. 이는 완전 동기식 시스템에서도 중요한 개념입니다. 제품을 설계한다면, 제한이 중요하지 않은 곳에서만 사용하세요: 주파수 분할, 고립 이벤트 카운팅, 또는 리플 지연을 견딜 수 있거나 관찰하지 않는 곳 등. 그 외에는 동기식 카운터의 클린 타이밍이 플립플롭 클럭 부재를 감수할 만한 가치가 있습니다.