핵심 인사이트 (3줄 요약)

  1. 본질: 존슨 카운터(Johnson Counter)는 링 카운터의 변형으로, 마지막 플립플롭의 출력 대신 부논리 출력(Q')을 첫 번째 플립플롭의 입력으로 되먹여(Feedback) 상태의 수를 2배로 늘린 특수 꼬임(Twisted) 카운터이다.
  2. 가치: $N$개의 플립플롭으로 $2N$개의 서로 다른 상태를 표현할 수 있어 링 카운터보다 면적 효율이 2배 좋으며, 비트가 한 번에 딱 1개씩만 변하는 성질 덕분에 글리치(Glitch) 노이즈를 물리적으로 차단한다.
  3. 판단 포인트: 복잡한 디코더 없이 게이트 1개만으로 원하는 상태를 즉시 뽑아낼 수 있어 고속 통신 시스템의 **다중 위상 클럭 분주기(Multi-phase Divider)**나 소형 십진수 제어 칩(Decade Counter)에 융합 채택된다.

Ⅰ. 개요 및 필요성

존슨 카운터는 '트위스티드 링 카운터(Twisted Ring Counter)'라고도 불린다. 링 카운터가 꼬리(Q)를 머리(D)에 그대로 물었다면, 존슨 카운터는 꼬리(Q')를 반대로 한 번 비틀어서 머리에 물린 뫼비우스의 띠 아키텍처다.

링 카운터의 '직관적 제어'는 훌륭했지만, 상태 개수만큼 플립플롭을 소모하는 끔찍한 면적 낭비가 불만이었다. "디코더를 없애는 장점은 살리면서, 플립플롭 개수를 절반으로 깎을 순 없을까?" 아키텍트들은 마지막 신호를 뒤집어 넣는 '트위스트' 기법으로 이를 해결했다. 이 간단한 NOT 연결선 하나 덕분에 상태 수는 2배($2N$)로 뻥튀기되었고, 노이즈까지 차단하는 안정성 융합을 이뤄냈다.

  • 📢 섹션 요약 비유: 존슨 카운터는 **'물이 차오르고 빠지는 수영장'**이다. 4개의 수로(플립플롭)가 순서대로 열리며 물이 꽉 차고(1111), 다 차면 다시 꼬임(반전)을 통해 순서대로 물을 빼서(0000) 빈 수영장을 만든다. 채우는 데 한 바퀴, 비우는 데 한 바퀴를 써서 링 카운터보다 2배 더 긴 박자를 센다.

Ⅱ. 아키텍처 및 핵심 원리

마지막 비트가 거꾸로 뒤집혀 돌아오는 뫼비우스 순환 구조를 시각화한다.

┌──────────────────────────────────────────────────────────────┐
│         존슨 카운터(Johnson Counter)의 반전 피드백 구조              │
├──────────────────────────────────────────────────────────────┤
│                                                              │
│   ┌──▶ [ FF 3 ] ──┬──▶ [ FF 2 ] ──┬──▶ [ FF 1 ] ──┬──▶ [ FF 0 ] ──┐
│   │      (Q3)     │      (Q2)     │      (Q1)     │      (Q0)   │
│   │               │               │               │             │
│   └── [ NOT ] ◀──┴───────────────┴───────────────┴─────────────┘
│         (마지막 출력을 '뒤집어서(Q')' 첫 번째 입력으로 꽂아 넣음!)      │
│                                                              │
│ * 상태 전이: 0000 ──▶ 1000 ──▶ 1100 ──▶ 1110 ──▶ 1111 (꽉 참)   │
│             1111 ──▶ 0111 ──▶ 0011 ──▶ 0001 ──▶ 0000 (다 비움) │
└──────────────────────────────────────────────────────────────┘

존슨 카운터는 '반전의 힘'이다. 처음이 0000이라면, 마지막 0이 뒤집혀서 1이 되어 들어오고, 이 1이 옆 칸으로 번지며 1111까지 꽉 채운다. 다 차고 나면 다시 마지막의 1이 뒤집혀 0이 되어 들어오며 앞에서부터 싹 비워낸다. 이 **'채움과 비움'**의 연속 리듬이 존슨 카운터의 본질이며, FF 4개로 8개의 박자를 완벽히 제어해 낸다.

  • 📢 섹션 요약 비유: 존슨 카운터는 **'뫼비우스의 띠'**를 도는 개미다. 띠를 한 번 꼬아서 연결했기 때문에, 한 바퀴를 돌아도 제자리로 오지 않고 반대쪽 면(반전 상태)으로 넘어가게 된다. 두 바퀴를 돌아야 비로소 처음 시작점(0000)으로 복귀하는 신비로운 2배 뻥튀기 순환 장치다.

Ⅲ. 비교 및 연결

이진 카운터와 링 카운터 사이의 절묘한 타협점을 찾는 아키텍트의 시선이다.

비교 항목이진 카운터 (Binary)링 카운터 (Ring)존슨 카운터 (Johnson)
상태 수 ($N$ FF 시)$2^N$ (가장 좁고 효율적)$N$ (최악의 낭비)$2N$ (절반의 타협)
디코더 로직 크기매우 거대함 (속도 지연)아예 없음 (직결)게이트 1개면 끝 (2-input AND)
상태 변화 특징여러 비트가 동시에 변함1개 비트만 이동함1번에 1비트씩만 변함 (안전)
글리치 노이즈최악 (스파이크 튐)없음절대 없음 (그레이 코드 특성)

가장 위대한 장점은 **'인접 상태 전이의 정숙성'**이다. 이진 카운터는 3(011)에서 4(100)로 갈 때 3개의 비트가 동시에 뒤집어지며 거대한 전기 노이즈(글리치) 스파이크를 뿜어낸다. 반면 존슨 카운터는 1100 -> 1110 처럼 어떤 상황에서도 무조건 딱 1개의 비트만 조용히 바뀐다. 이 단일 비트 변화 성질 덕분에 초정밀 통신 칩이나 오디오 칩에서 노이즈 없는 깨끗한 신호를 보장한다.

  • 📢 섹션 요약 비유: 존슨 카운터는 **'도미노 게임'**과 같다. 이진 카운터처럼 한 번에 여러 개가 와르르 무너지는 게 아니라, 옆 친구를 한 명씩 툭툭 건드려 차례대로 일어나게 하고, 다시 차례대로 눕게 한다. 주변 소음(노이즈)을 안 피우고 아주 질서 정연하게 박자를 세는 매너 있는 로봇 팀이다.

Ⅳ. 실무 적용 및 기술사 판단

순수 링 카운터보다 효율적이지만, 여전히 '유령 상태' 이탈의 저주는 존재한다.

체크리스트 및 판단 기준

  1. 자가 교정(Self-correction) 로직 융합: FF 4개는 16개의 상태를 가질 수 있는데, 존슨은 8개만 쓴다. 만약 노이즈를 맞아 나머지 8개의 '유령 상태(예: 0101)'로 궤도를 이탈하면 영원히 헤어 나오지 못한다. 피드백 전선에 간단한 조합 게이트(부트스트랩 로직)를 이식하여, 유령 상태 감지 즉시 강제로 0000 정상 궤도로 끌어내리는 생존 쉴드를 쳤는가?
  2. 다중 위상 클럭(Multi-phase Clock) 생성기: 고속 통신 칩(SerDes)에서 입력 데이터를 잘게 쪼개어 받을 때 0도, 45도, 90도씩 엇갈린 클럭들이 필요하다. 존슨 카운터의 각 플립플롭 출력이 정확히 한 박자씩 겹치면서 밀리는 파형을 형성한다는 점을 이용, 오차 0.1ns 밖의 정밀한 위상 편차 클럭 라우팅 엔진으로 뽑아내 활용했는가?

안티패턴

  • 칩 면적을 줄이겠다고 5개의 상태(Mod-5)를 세어야 할 때 존슨 카운터를 어거지로 욱여넣는 짓. 존슨 카운터는 구조상 $2N$, 즉 짝수(2, 4, 6...)의 상태를 세는 데 최적화되어 있다. 홀수를 세기 위해 피드백 선을 꼬고 중간에 플립플롭을 강제 리셋시키면 존슨 카운터 특유의 1비트 전이(글리치 프리) 특성이 깨지고 타이밍 병목만 커진다. 이럴 땐 이진 카운터 융합이 답이다.

  • 📢 섹션 요약 비유: 존슨 카운터는 **'자동 복구 오뚜기'**처럼 설계해야 합니다. 노이즈 때문에 중심을 잃고 쓰러져 유령 궤도로 빠지더라도, 꼬여있는 피드백 로직이 오뚜기의 무게중심 역할을 하여 단 1클럭 만에 다시 정상적인 0000 궤도로 벌떡 일어서게(자가 교정) 만들어야 칩이 안 죽습니다.


Ⅴ. 기대효과 및 결론

존슨 카운터는 상태 수 뻥튀기(2N)와 글리치 프리(단일 비트 전이)라는 두 마리 토끼를 잡으며, 무거운 디코더 없이 직관적인 제어 신호를 뽑아내는 임베디드 칩셋의 가장 사랑받는 분주기이자 타이머 아키텍처다.

실제로 수많은 초소형 전자 부품에서 숫자를 0부터 9까지 세고 LED를 켜는 역할(Decade Counter, CD4017 등)을 이 존슨 카운터 뼈대가 완벽히 독점하고 있다. 소프트웨어 코딩 한 줄 없이 오직 트랜지스터 꼬임만으로 에러 없는 정밀한 순서 제어를 해내는 하드웨어 지능의 위대한 승리다.

  • 📢 섹션 요약 비유: 링 카운터가 "너무 비싸고 넓은 집"이고 이진 카운터가 "너무 비좁고 시끄러운 고시원"이라면, 존슨 카운터는 면적도 반으로 줄이면서 소음(노이즈)도 완벽히 잡은 **"최적의 가성비 복층 오피스텔"**이다. 공학자들이 가장 좋아하는 중도 타협의 정수다.

📌 관련 개념 맵

개념연결 포인트
링 카운터 (Ring Counter)존슨 카운터의 형님. 꼬리를 그냥 머리에 물려 비싸지만 빠른 속도를 냈고, 존슨은 꼬리를 한 번 꼬아(NOT) 효율을 2배로 펌핑한 동생
디코더 (Decoder)일반 이진 카운터가 011 같은 암호를 뱉으면 이걸 3번 전선으로 풀어주는 번역기. 존슨 카운터는 2-입력 AND 게이트 딱 1개만으로 이 비싼 디코더를 대체해 버림
그레이 코드 (Gray Code)숫자가 바뀔 때 무조건 딱 1개의 비트만 바뀌게 만들어 칩의 전력 노이즈 스파이크를 없애는 수학적 룰. 존슨 카운터의 상태 변화가 바로 이 그레이 코드 성질을 띰

👶 어린이를 위한 3줄 비유 설명

  1. 존슨 카운터는 링 카운터(수건돌리기)의 업그레이드 버전인 **'마법의 색깔 물통 릴레이'**예요!
  2. 투명한 물통 4개가 있는데, 차례차례 파란 물이 채워지더니 다 차면 다시 첫 번째 물통부터 투명한 물로 싹 비워지기 시작해요.
  3. 채우는 데 한 바퀴, 비우는 데 한 바퀴를 쓰니까, 똑같은 물통 4개로 링 카운터보다 2배나 더 많은 순서를 똑똑하게 셀 수 있답니다!