링 카운터

**링 카운터**()는 시프트 레지스터로 연결된 플립플롭으로 구성된 계수기의 한 유형으로, 마지막 플립플롭의 출력이 첫 번째 플립플롭의 입력으로 연결되어 "원형" 또는 "링" 구조를 이룬다.

링 카운터에는 두 가지 유형이 있다.
*  **스트레이트 링 카운터**(straight ring counter)는 **[[원-핫]] 카운터**(one-hot counter)라고도 불리며, 마지막 시프트 레지스터의 출력을 첫 번째 시프트 레지스터 입력에 연결하여 하나의 1(또는 0) 비트를 링을 따라 순환시킨다.
*  **트위스티드 링 카운터**(twisted ring counter)는 **스위치-테일 링 카운터**(switch-tail ring counter), **워킹 링 카운터**(walking ring counter), **존슨 카운터**(Johnson counter), 또는 **[[뫼비우스의 띠|뫼비우스]] 카운터**(Möbius counter)라고도 불리며, 마지막 시프트 레지스터 출력의 보수를 첫 번째 레지스터의 입력에 연결하여 링을 따라 1이 연속된 다음 0이 연속되는 스트림을 순환시킨다.

## 4비트 링 카운터 시퀀스

## 속성
링 카운터는 유한 상태 기계를 만들기 위해 하드웨어 설계(예: ASIC 및 FPGA 설계)에 자주 사용된다. 이진 카운터는 링 카운터보다 훨씬 복잡하고 비트 수가 증가함에 따라 전파 지연이 더 높아지는 가산기 회로를 필요로 하는 반면, 링 카운터의 전파 지연은 비트 수에 관계없이 거의 일정하다.

스트레이트 및 트위스티드 형태는 서로 다른 속성과 상대적인 장단점을 가진다.

링 카운터의 일반적인 단점은 상태 번호의 일반적인 이진 인코딩보다 밀도가 낮은 코드라는 것이다. 이진 카운터는 코드의 비트 수를 N이라고 할 때 2N개의 상태를 나타낼 수 있는 반면, 스트레이트 링 카운터는 N개의 상태만 나타낼 수 있고 존슨 카운터는 2N개의 상태만 나타낼 수 있다. 이는 레지스터가 조합 논리보다 더 비싼 하드웨어 구현에서 중요한 고려 사항이 될 수 있다.

존슨 카운터는 동일한 수의 시프트 레지스터에서 두 배 많은 계수 상태를 제공하고, 시작 시 첫 번째 계수 비트를 외부에서 주입할 필요 없이 모든 0 상태에서 자체 초기화할 수 있기 때문에 선호되기도 한다. 존슨 카운터는 그레이 부호와 같이 인접한 상태가 한 비트만 다른(즉, 해밍 거리가 1인) 코드를 생성하는데, 이는 비트 패턴이 비동기적으로 샘플링될 경우 유용할 수 있다.

일부 시퀀스 컨트롤러에서와 같이 카운터 상태의 완전하게 디코딩되거나 원-핫 표현이 필요한 경우, 스트레이트 링 카운터가 선호된다. 원-핫 속성은 코드 세트가 최소 해밍 거리 2로 분리되어 있음을 의미하므로, 모든 단일 비트 오류를 감지할 수 있다(한 비트를 켜고 한 비트를 끄는 것 이외의 모든 오류 패턴도 감지할 수 있다).

때로는 양방향 시프트 레지스터(각 플립플롭의 입력을 왼쪽 또는 오른쪽 이웃에서 가져오기 위해 멀티플렉서를 사용)가 사용되어 양방향 또는 업-다운 링 카운터를 만들 수 있다.

## 논리도
스트레이트 링 카운터는 다음과 같은 논리 구조를 가진다.

[400px|border|4개의 [플립플롭#D 플립플롭|D형 플립플롭을 사용한 4비트 링 카운터. 동기식 클록 및 리셋 라인 표시.]]

초기 원-핫 패턴을 설정하는 리셋 라인 대신, 스트레이트 링은 때때로 마지막을 제외한 모든 출력에 분산 피드백 게이트를 사용하여 자체 초기화되도록 만들어지는데, 이는 마지막을 제외한 어떤 단계에도 1이 없을 때 입력에 1이 제공되도록 한다.

로버트 로이스 존슨의 이름을 딴 존슨 카운터는 반전이 있는 링이다. 다음은 4비트 존슨 카운터이다.

[400px|border|4개의 [플립플롭#D 플립플롭|D형 플립플롭을 사용한 4비트 존슨 카운터. 동기식 클록 및 리셋 라인 표시.]]

마지막 시프트 레지스터에서 나오는 Q 신호가 첫 번째 D 입력으로 피드백되기 전에 반전을 나타내는 작은 거품에 주목하라. 이것이 존슨 카운터이다.

## 역사

디지털 컴퓨팅 시대 이전에는 디지털 카운터가 방사성 붕괴와 같은 무작위 사건의 속도를 측정하는 데 사용되었다. 빠른 "프리스케일링" 카운터는 무작위 사건의 속도를 더 관리하기 쉽고 더 규칙적인 속도로 줄였다. 5상 링 카운터는 1940년 이전에 C. E. Wynn-Williams가 개발한 것과 같이 십진수(10의 거듭제곱) 스케일러를 만들기 위해 2로 나누는 스케일러와 함께 사용되었다.

초기 링 카운터는 각 단계에 하나의 활성 소자(진공관 또는 트랜지스터)만 사용했으며, 예를 들어 내셔널 캐시 레지스터 컴퍼니의 로버트 E. 맘마가 1941년에 특허를 출원한 것과 같이 원-핫 상태 이외의 상태를 억제하기 위해 로컬 바이안정 플립플롭 대신 글로벌 피드백에 의존했다. 윌콕스 P. 오버벡은 단일 진공관에 여러 개의 애노드를 사용하는 버전을 발명했다. 그의 업적을 기려 링 카운터는 때때로 "오버벡 링" (그리고 2006년 이후 위키백과가 2006년부터 2018년까지 해당 용어를 사용했기 때문에 때때로 "오버벡 카운터")라고 불리기도 한다.

에니악은 10진수 원-핫 링 카운터를 기반으로 한 10진수 산술을 사용했다. NCR의 맘마와 MIT의 오버벡의 연구는 특허청이 에니악 기술에 대한 J. 프레스퍼 에커트와 존 모클리의 특허를 무효화하는 데 사용된 선행 기술 연구 중 하나였다.

1950년대에는 각 단계에 두 개의 진공관 또는 쌍삼극 플립플롭을 사용하는 링 카운터가 등장했다.

로버트 로이스 존슨은 가장 간단한 피드백 논리로 다양한 수의 상태를 만들기 위해 여러 가지 시프트 레지스터 기반 카운터를 개발했으며, 1953년에 특허를 출원했다. 존슨 카운터는 이들 중 가장 간단한 것이다.

## 응용
링 카운터의 초기 응용 분야는 주파수 프리스케일러(예: 가이거 계수기 및 유사한 기기), 암호 해독에서 패턴 발생 횟수를 세는 카운터(예: 히스 로빈슨 (암호 해독 기계) 및 콜로서스 (컴퓨터)), 그리고 컴퓨터 및 계산기에서 이진화 십진법 (콜로서스와 같이) 또는 10상 원-핫 (에니악과 같이) 표현을 사용하는 십진수 산술을 위한 누산기 카운터 요소였다.

스트레이트 링 카운터는 완전하게 디코딩된 원-핫 코드를 생성하여 주기적인 제어 주기의 각 상태에서 특정 동작을 활성화하는 데 자주 사용된다. 원-핫 코드는 각 상태에 하나의 게이트를 사용하여 존슨 카운터에서도 디코딩할 수 있다.

원-핫 코드를 생성하고 주파수 프리스케일러를 생성하는 효율적인 대체 방법 외에도, 존슨 카운터는 그레이 부호와 같이 한 번에 한 비트만 변경되므로 글리치 없이 비동기적으로 샘플링할 수 있는 짝수 상태의 주기를 인코딩하는 간단한 방법이기도 하다. 초기 컴퓨터 마우스는 양방향(업-다운) 2비트 존슨 또는 그레이 인코딩을 사용하여 두 차원 각각의 움직임을 나타냈지만, 마우스에서는 이러한 코드가 일반적으로 플립플롭 링에 의해 생성되지 않았다(대신 전기-기계적 또는 광학 직교 인코더에 의해). 2비트 존슨 코드와 2비트 그레이 코드는 동일하며, 3비트 이상에서는 그레이 코드와 존슨 코드가 다르다. 5비트의 경우, 존슨 카운터의 코드는 "비계수 십진 코드 샤프트 디지타이저"에서 온 십진수에 대한 와 동일하다.

워킹 링 카운터(존슨 카운터라고도 함)와 몇 개의 저항기는 글리치 없는 정현파 근사치를 생성할 수 있다.
조정 가능한 프리스케일러와 결합하면, 이것은 아마도 가장 간단한 수치 제어 발진기일 것이다.
두 개의 워킹 링 카운터는 이중 톤 다중 주파수 신호 및 초기 모뎀 톤에 사용되는 연속 위상 주파수 편이 변조를 생성하는 가장 간단한 방법일 수 있다.

## 같이 보기
* 계수기
* 링 발진기
* 선형 되먹임 시프트 레지스터

## 내용주

## 각주

분류:디지털 회로
분류:디지털 레지스터