비동기식 10진 카운터 - bidong-gisig 10jin kaunteo

2진 리플 카운터의 작동을 이해하기 위해 그림 14-7에 주어진 카운터 순차를 살펴보자. 가장 낮은 자리의 비트 A1은 매 클럭펄스마다 보수가 되어야 한다. A1의 값이 "1"에서 "0"으로 변할 때마다, A2의 값은 보수가 될 것이다. 또 A2의 값이 "1"에서 "0"으로 변할 때마다, A3의 값은 보수가 될 것이다. A4도 마찬가지가 될 것이다. 예를 들어, 계수 0111에서 1000으로의 전이를 검사해 보자. 표에서 화살표는 이 경우의 전이들을 강조해서 표시한 것이다. A1은 CP에 의해 보수가 된다. A1의 값이 "1"에서 "0"으로 변하므로, 이것은 A2의 레지스터를 작동시켜, A2가 보수를 취하게 된다. 따라서 A2의 값도 "1"에서 "0"으로 변하며, A3를 보수시키고, A3는 "1"에서 "0"으로 보수가 되면서, 다시 A4를 보수로 만든다. 만일 A4가 다시 다음 순서의 레지스터에 같은 식으로 연결되어 있다고 가정하면 A4의 출력 값의 전이는 다음 레지스터를 작동시킬 수 없다. 왜냐하면, A4의 출력값이 "0"에서 "1"로 변하기 때문이다. 그리하여 1000이 된다. 이 카운터의 플립플롭들은 한 번에 하나씩 빠르게 연결해서 변화한다. 신호는 리플 형태로 카운터를 통과하여 전달된다. 리플 카운터는 때때로 비동기식 카운터라 부르기도 한다.

2진 역방향 카운터 (binary down counter)

역순으로 카운트되는 2진 카운터(즉 1111에서 1110, 1101 순으로 감소하는 카운터)를 2진 역방향 카운터(binary down counter)라 한다. 역방향 카운터에서 2진 계수는 매 클럭펄스마다 1씩 감소하여 간다. 4비트 다운 카운터 계수는, 15의 2진수에서 출발해서 14, 13, 12, ..., 0으로 계속 계수되다가, 15로 되돌아가서 다시 감소하며 계수된다. 그림 14-7의 회로에서 출력들은 플립플롭의 보수 단자 Q에서 빼낸다면 이 회로는 2진 다운 카운터로써 쓸 수 있다. 만일 플립플롭의 정상 출력 Q밖에 얻을 수 없을 경우, 그 회로를 다운 카운터로 쓰려면 다음과 같이 수정하여야 한다. 2진 다운 카운터의 카운트 순차를 생각해 보면, 우선 가장 낮은 자리의 비트는 매 CP마다 보수가 되어야 한다는 것을 알 수 있다. 순차 내에 있는 어떤 다른 비트이든지, 그것보다 바로 낮은 비트의 값이 "0"에서 "1"로 변하면 이 비트는 보수로 되어야 한다. 그러므로 모든 플립플롭이 펄스의 상승 모서리에서 작동하도록 하여, (즉 플립플롭이 CP입력 단자에 있는 작은 원을 없애면) Q를 다음단 플립플롭의 CP로 사용하면 된다. 만일 플립플롭이 하강 모서리에서 작동한다면, 각 플립플롭의 CP 입력 단자에 바로 앞의 플립플롭의 출력 Q를 입력시키면 된다. 그렇게 되면, Q가 0에서 1로 변할 때, A는 1에서 0으로 변하게 되어 다음 플립플롭을 작동시킨다. 따라서 2진 카운터로서 사용할 수 있는 것이다.

비동기식 10진(BCD) 카운터

10진 카운터는 0에서 9까지 10개의 상태를 카운트하는 것으로 10진수를 2진 코드로 표현하는 데는 적어도 4비트가 필요하므로 10진 카운터의 대표적인 것은 BCD카운터이다.
10진 카운터의 카운트 순서는 2진 카운터와 비슷하다 단지 9에서 0으로 변화하도록 되어 있다.
그림 14-9는 10진(BCD) 카운터의 상태도를 보인다.

카운트 순서는 다음과 같다.

1. A플립플롭의 출력은 매 클록 펄스 때마다 상태를 바꾸므로 J와 K를 1로 하여 토글될 수 있도록 한다.

2. B플립플롭의 출력은 D플립플롭의 출력이 0이고 A플립필롭의 출력이 1에서 0으로 바뀌면 상태를 바꾸며, D출력이 1이고 A출력이 1이면 B플립플롭의 출력이 0이 된다.

3. C플립플롭의 출력은 B플립플롭의 출력이 1에서 0으로 변할 때 상태를 바꾼다.

4. D플립플롭의 출력은 B와 C가 1이고 A가 1에서 0으로 변할 때 상태를 1로 바꾸고 B, C가 0이고 A가 1에서 0으로 변하면 D플립플롭의 출력이 0이 됨을 알 수 있다.

이런 상황을 근거로 설계한 10진 비동기식 카운터를 그림 14-10에서 보여주고 있으며, 10진 카운터의 타이밍도를 그림 14-11에 나타내었다.

실험 과정

1. M-14의 회로-3에서 그림 14-12과 같이 2진 리플 카운터를 구성한다.

2. 디지털 멀티미터를 이용하여 표 14-3과 같이 클럭의 수에 따라 출력전압을 측정하여 Hihg이면 1, Low이면 0으로 기록하고 16진수로 변환하여 해당란에 기록한다. 또한 LED 점등 상태를 점검하여 점등 시 “1”, 소등 시 “0”으로 기록해도 좋을 것이다. 클럭을 인가하기 전에 먼저, CL 스위치를 한 번 눌러 출력을 모두 “0”으로 한다.

tab1

실험 14-3.1 비동기 16진/10 카운터 회로 실험 (M14의 Circuit-3 회로)

<비동기 16진>카운터 회로

1.1. 결선 방법
1.회로 결선

M14 보드의 Circuit-1에서 1a 단자와 Circuit-2의 2c 단자 간을 황색선으로 연결한다.

Circuit-3의 LED1(A)의 3b 단자와 중앙에 숫자표시기(7-Segment Display)에 있는 (A) 단자 간을, 와 LED2(B)의 3c 단자와 (B) 단자간, LED3(C)의 3d 단자와 (C) 단자 간, LED4(D)의 3e 단자와 (D) 단자 간을 황색선으로 연결한다.

카운터는 순서회로의 가장 대표적인 응용회로로서, 수를 헤아릴 수 있는 회로이다. 즉 플립플롭의 클록입력단자에 인가되는 주기적인 신호의 개수를 헤아린다. 주기적인 신호의 개수를 헤아린다는 것은 시간을 계산할 수 있음을 의미한다. 따라서 카운터는 디지털 시스템 설계 시에 매우 유용하게 이용되는 소자다.

일반적인 카운터의 종류는 세 가지 요소에 의해서 구분할 수 있다. 물론 이외에도 특별한 카운터가 있다. 세 가지 요소는 다음과 같이 나눌 수 있다.

(

동기식 카운터

)(

2진 카운터

)(

업(UP) 카운터

)

비동기식

10진 카운터

다운(DOWN) 카운터

동기식과 비동기식은 카운터의 출력이 하나의 입력 클록에 의해 동기 되는지의 여부에 의해 구분된다. 동기식은 모든 플립플롭이 하나의 입력 클록에 의해서 출력이 동기되기 때문에 플립플롭의 클록 입력단자에 인가되는 신호선이 같다. 반면에 비동기식은 플립플롭마다 클록입력단자에 인가되는 신호선이 서로 다르다.

2진과 10진은 카운터의 계수(計數) 범위에 의해서 결정된다. n비트(Bit) 2진 카운터의 계수 범위는 0 ~ (2n-1)인 반면에 10진 카운터의 계수 범위는 0~9이다. 따라서 카운터는 4비트 카운터이다.

카운터의 계수 값이 증가하면 업 카운터이고, 감소하면 다운 카운터이다.

세 가지 요소를 조합하여 총 8종류의 카운터로 나눌 수 있다. 우선 8종류의 일반적인 카운터에 대하여 알아보고 그 외의 특별한 기능이 있는 카운터에 대해서 알아보도록 하자.

10.1.1 비동기식 2진 업(up)/다운(down) 카운터

비동기식 카운터를 리플(Ripple)카운터라고 한다. 카운터 내의 플립플롭 출력이 동시에 발생되지 않고 순차적으로 발생한다고 해서 일컫는 말이다. 앞단의 플립플롭의 출력이 다음 단 플립플롭의 클록으로 인가되기 때문에 출력이 순차적으로 발생한다.

카운터 출력은 3비트이다. 즉 이다. 이때 가 MSB이다. 외부 클록입력은 첫 번째 단의 플립플롭 클록 입력단자에 인가되고 다음 단 플립플롭의 클록 입력단자에는 이전 단의 가 인가된다.

클록이 발생할 때마다 값은 증가된다. 계수 범위는 2진 카운터이므로 0~7이다.

초기에 이면 다음 클록에서는 로 증가한다. 이것을 그림으로 나타내면 아래 그림과 같고 순서 회로의 상태도와 같다.

[3비트 2진 업 카운터의 상태도]

3비트 2진 업 카운터의 동작 상태를 타이밍도로 나타내면 아래 그림과 같다.

[3비트 2진 업 카운터의 타이밍도]

카운터의 출력 변화를 나타내었다. 타이밍도의 가장 아래쪽에 나타낸 의 파형도는 3개의 신호 값들을 묶어서 2진 값으로 표현한 것이다. 여러 개의 신호선 들의 묶음을 버스(BUS)라고 하며 이러한 신호들의 타이밍도는 위와 같은 방법으로 표현하면 된다.

는 클록에 의해 동작하며, JK플립플롭의 입력이 모두 11이므로 클록의 모서리가 발생하면 이전 상태와 반대(토글)가 된다. 따라서 는 클록의 파형과 같다. 은 의 클록이 발생하면 토글이 된다. 왜냐하면 의 클록 입력이 이기 때문이다. 또한 의 출력도 의 클록에 의해서 토글된다. 비동기식은 출력이 순차적으로 발생하므로 클록이 발생한 이후 최대 출력 지연시간은 아래와 같다.

지연시간 = 플립플롭의 개수 × 플립플롭의 지연시간

위의 타이밍도에서는 111 → 000으로 변화할 때 이러한 최대 지연시간이 발생한다. 즉 클록이 발생한 위치에서 최종 출력이 발생할 때까지는 3개의 플립플롭 지연시간만큼 지연된다. 이것은 비동기식의 단점이기도 하다.

비동기식 2진다운 카운터의 동작은 업 카운터와 크게 다르지 않다. 차이점은 클록이 발생하면 카운터 값이 감소한다. 아래 그림은 3비트 비동기식 2진다운 카운터의 회로도이다.

[ 3비트 동기식 2진 다운 카운터의 회로도 ]

다운 카운터는 이전단의 보수 출력()이 다음단의 클록 입력단자로 인가된다. 카운터 값()은

7(111) → 6(110) → 5(101) → 4(100) → 3(011) → 2(010) → 1(001) → 0(000) → 7(111) → …

의 순서로 변한다. 즉 카운터 값이 감소한다.

10.1.2 비동기식 10진 업(up)/다운(down) 카운터

10진 카운터의 동작은 2진 카운터와는 달리, 계수 범위가 0~9이다. 따라서 10진 카운터의 비트 수는 최소한 4비트이다. 아래 그림은 4비트 비동기식 10진 업 카운터의 회로이다.

[4비트 비동기식 10진 카운터의 회로]

비동기식 10진 카운터는 2진 카운터와는 달리 회로가 약간 복잡하다. 는 클록마다 토글하고 은 입력 J값에 따라 토글하기도 하고 0이 되기도 한다. 는 의 클록마다 토글하며 는 좀더 복잡하여 입력 J와 클록 입력에 인가되는 값에 의해서 출력이 결정된다.

이러한 회로의 특성에 따라 타이밍도를 그려보면 카운터 값이 증가됨을 알 수 있다.

10.1.3 동기식 2진 업(up)/다운(down) 카운터

비동기식 카운터와는 달리 모든 동기식 카운터는 순서회로 설계방법에 의해서 설계가 가능하다. 왜냐하면 순서 회로의 플립플롭 블록의 클록이 모두 동일한 입력단자에 의해 연결되기 때문이다. 즉 하나의 입력 신호에 의해서 플립플롭의 출력이 동시에 발생한다.

[3비트 동기식 2진 업 카운터]

위 카운터에 대한 타이밍도는 아래와 같다.

[3비트 동기식 2진 업 카운터의 타이밍도]

카운터 출력은 클록의 상승 모서리가 발생하면 동시에 발생한다. 먼저 는 클록이 발생할 때 마다 토글한다. 은 값에 의해서 결정된다. 가 0이면 JK입력이 00이므로 이전 상태를 그대로 유지하고 1이면 11이므로 토글한다. 첫 번째 클록에서는 가 0이므로 은 0이 그대로 유지되고, 두 번째 클록에서는 가 1이므로 은 1로 토글된다. 마찬가지로 도 값에 의해서 결정된다. 따라서 의 동작도 의 동작과 동일하다.

동기식 카운터는 동일한 클록에 의해서 동시에 출력이 발생하므로 출력지연시간도 플립플롭 한 개의 지연시간과 같다. 비동기식 보다 출력이 보다 빨리 발생하는 장점이 있다.

10.1.4 링 카운터(ring count)

클록이 발생할 때마다 카운터 출력으로 1이 시프트(Shift, 이동)되는 카운터이다. 카운터 출력 중 오직 한 출력만 1이 발생하므로 카운터 값을 디코딩 하지 않아도 10진 변환이 가능하다. 아래 그림은 5단 링 카운터의 순차표 및 회로도이다.

[5단 링 카운터의 순차표 및 회로도]

초기 버튼을 이용하여 5개 플립플롭의 출력()를 10000으로 초기화 한다. 초기화하는 방법은 비동기 입력인 를 이용한다. 초기버튼에 0을 인가하면, 첫 단 플립플롭의 출력은 이므로 1이 된다. 나머지 플립플롭은 이므로 모두 0으로 초기화 된다. 이후에 초기버튼은 1로 하고 클록의 상승 모서리를 발생시키면 순차표와 같이 1이 한자리씩 이동한다. 링 카운터의 장점은 카운터의 출력을 디코딩하지 않아도 10진 변환이 가능하다는 점이다. 예를 들면 2진 업 카운터 값이 011인 경우 10진 변환을 하면 3일 때만 1이 나오도록 하면 된다.

즉 카운터 값이 000에서 클록이 3개 발생하면 카운터 값이 011이 되고 이때만 출력이 1이 나오도록 하는 것이다. 이 경우 일반 카운터를 사용하면 3비트 카운터 외에 AND게이트를 추가하여 10진수 3을 디코딩 해야 한다. 카운터 값의 모든 가능한 출력을 변환하려면 디코더 로직이 추가 되어야 한다.

링 카운터를 사용하면 이러한 디코딩 로직이 필요 없다. 그림에서 보는 바와 같이 클록이 발생하면 1이 이동하게 되므로 해당 10진 출력만 1이고 나머지는 모두 0이 된다. 따라서 출력 값만 보면 클록이 몇 개 발생했는지 알 수 있다. 가 1이면 클록이 발생하지 않은 경우이다. 즉 카운터 값 000을 디코딩 한 출력이다. 이 1이면 클록이 1개 발생한 경우이다. 즉 카운터 값이 001을 디코딩 한 출력이다. 이와 같이 링 카운터를 이용하면 일반 카운터 값의 10진 변환시에 매우 유용하다. 단점은 일반 카운터보다 플립플롭이 많이 사용된다. n비트 2진 카운터의 경우, 계수 범위가 0 ~ (2n-1)인 반면에 n비트 링 카운터의 계수 범위가 0 ~ (n-1)이다. 따라서 계수범위가 매우 작다. 동일한 계수 범위를 갖기 위해서는 링 카운터의 플립플롭 개수는 많이 필요하다.

10.1.5 존슨 카운터(Johnson count)

존슨 카운터는 시프트 카운터라고 말하며 이것은 특별한 순차를 만들어 낸다. 아래 그림은 4단 존슨 카운터의 순차표 및 회로도이다.

[4단 존슨 카운터의 순차표 및 회로도]

위 그림의 회로도를 보면 링 카운터의 회로도와 유사함을 알 수 있다. 링 카운터와 다른 점은 마지막 단 플립플롭의 출력이 첫 번째 단의 입력으로 인가된다. 존슨 카운터는 카운터 단의 크기만큼 1의 폭을 갖는 파형이 각단으로 이동한다.

[ 학습정리 ]

1. 일반적인 카운터의 종류는 세 가지 요소에 의해서 구분할 수 있다.

(

동기식 카운터

)(

2진 카운터

)(

업(UP) 카운터

)

비동기식

10진 카운터

다운(DOWN) 카운터

2. 비동기식 카운터를 리플(Ripple)카운터라고 하는데 이 말은 카운터 내의 플립플롭 출력이 동시에 발생되지 않고 순차적으로 발생한다고 해서 일컫는 말이다.

3. 순서 회로의 플립플롭 블록의 클록이 모두 동일한 입력단자에 의해 연결되기 때문에 비동기식 카운터와는 달리 모든 동기식 카운터는 순서회로 설계방법에 의해서 설계가 가능하다. 즉 하나의 입력 신호에 의해서 플립플롭의 출력이 동시에 발생한다.