카운터
일정한 순서의 값을 순환하는 회로를 카운터라고 합니다.
Shift Reg의 출력의 반전된 출력을 reg의 첫번째 FF과 피드백으로 연결해주면
존슨 카운터를 만들 수 있습니다.
위 카운터는 두개의 루프가 존재합니다.
1. 000 -> 100 -> 110 -> 111 -> 011 -> 001 -> 000
2. 010 -> 101 -> 010
카운터의 종류
- 동기형 카운터
1.FF들의 동작이 공통 클럭에 맞춰서 동작하며
2.FF들의 상태변화가 동시에 일어난다.
즉 클럭입력에 따라 모든 FF들의 상태가 변화된다고 할 수 있습니다.
- 비동기형 카운터
리플 카운터라고도 불리며, 한 개의 FF 상태변화가 다른 FF 상태를 변경하는 트리거 역할을 하는 회로입니다.
T-FF을 이용한 3비트 이진 카운터 설계
보여드릴 이진 카운터는 0부터 7까지 카운트 하고, 다시 0을 돌아가는 카운터입니다.
초기값은 0입니다.
초기 값은 $A=B=C=0$ 이라고 가정합니다.
먼저 현재 상태와 차기 상태에 대한 진리표를 작성해보고
그에 맞는 T-FF의 입력을 작성해보겠습니다.
현재상태 | 차기상태 | T-FF 입력 | ||||||
$C$ | $B$ | $A$ | $C^{+}$ | $B^{+}$ | $A^{+}$ | $T_C$ | $T_B$ | $T_A$ |
0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 |
0 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 1 |
0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 |
0 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 1 |
1 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 1 |
1 | 0 | 1 | 1 | 1 | 0 | 0 | 1 | 1 |
1 | 1 | 0 | 1 | 1 | 1 | 0 | 0 | 1 |
1 | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 1 |
T-FF은 입력으로 1을 주면 출력이 Toggle되고, 0을 주면 출력의 변화가 없습니다.
따라서 현재상태와 차기상태를 비교했을때, 변화된 위치에 T-FF의 입력을 1로 주고
변하지 않은 위치에는 0으로 입력을 주면 됩니다.
T-FF의 입력인 $T_C, T_B, T_A$에 대한 카노맵과 입력 함수를 구해보겠습니다.
$T_C$ | ||
BA | C=0 | C=1 |
00 | 0 | 0 |
01 | 0 | 0 |
11 | 1 | 1 |
10 | 0 | 0 |
$T_B$ | ||
BA | C=0 | C=1 |
00 | 0 | 0 |
01 | 1 | 1 |
11 | 1 | 1 |
10 | 0 | 0 |
$T_A$ | ||
BA | C=0 | C=1 |
00 | 1 | 1 |
01 | 1 | 1 |
11 | 1 | 1 |
10 | 1 | 1 |
카노맵을 통해 구한 입력 함수는 다음과 같습니다.
$T_C = AB$
$T_B = A$
$T_C = 1$
D-FF를 이용한 3비트 이진 카운터 설계
D-FF의 특성식은 $Q^{+} = D$ 이므로
차기 상태가 1로 바뀌면 D-FF의 입력도 1이며,
차기 상태가 0으로 바뀌면 D-FF의 입력도 0이 됩니다.
이제D-FF의 입력을 작성해보겠습니다.
D-FF 입력 | ||
$D_C$ | $D_B$ | $D_A$ |
0 | 0 | 1 |
0 | 1 | 0 |
0 | 1 | 1 |
1 | 0 | 0 |
1 | 0 | 1 |
1 | 1 | 0 |
1 | 1 | 1 |
0 | 0 | 0 |
이에 따라 카노맵과 그에 따른 입력 함수를 구해보겠습니다.
$D_C$ | ||
BA | C=0 | C=1 |
00 | 0 | 1 |
01 | 0 | 1 |
11 | 1 | 0 |
10 | 0 | 1 |
$D_B$ | ||
BA | C=0 | C=1 |
00 | 0 | 0 |
01 | 1 | 1 |
11 | 0 | 0 |
10 | 1 | 1 |
$D_A$ | ||
BA | C=0 | C=1 |
00 | 1 | 1 |
01 | 0 | 0 |
11 | 0 | 0 |
10 | 1 | 1 |
카노맵을 통해 구한 입력 함수는 다음과 같습니다.
$D_C = C'BA + CB' + CA' = C'BA + C(BA)' = C \oplus BA$
$D_B = BA' + B'A = A \oplus B$
$D_C = 1A' + 0A = A \oplus 1$
이에 따른 D-FF 이진 카운터의 설계 결과는 다음과 같습니다.
Up / Down 카운터
Up 카운터는 말 그대로 클럭입력의 에지에서 다음 상태가 현재 상태 + 1이 되는 카운터입니다.
Down 카운터는 반대로 클럭입력의 에지에서 다음 상태가 현재 상태 - 1 이 되는 카운터입니다.
지금부터 설계할 카운터는 U(Up)입력이 1이고 D(Down)입력이 0인 경우 Up 카운터로 동작하고
U(Up)입력이 0이고 D(Down)입력이 1인 경우 Down 카운터로 동작하는 카운터입니다.
$U=1, D=0$인 경우의 입력 함수는 D-FF 이진 카운터의 설계 부분을 참고해주세요.
$U=0, D=1$인 경우의 D-FF 이진 카운터를 설계해보겠습니다.
현재상태 | 차기상태 | D-FF 입력 | ||||||
$C$ | $B$ | $A$ | $C^{+}$ | $B^{+}$ | $A^{+}$ | $D_C$ | $D_B$ | $D_A$ |
0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 |
0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 1 |
0 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 0 |
1 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 1 |
1 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 0 |
1 | 1 | 0 | 1 | 0 | 1 | 1 | 0 | 1 |
1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 0 |
위 D-FF 입력에 따른 카노맵은 다음과 같습니다.
$D_C$ | ||
BA | C=0 | C=1 |
00 | 1 | 0 |
01 | 0 | 1 |
11 | 0 | 1 |
10 | 0 | 1 |
$D_B$ | ||
BA | C=0 | C=1 |
00 | 1 | 1 |
01 | 0 | 0 |
11 | 1 | 1 |
10 | 0 | 0 |
$D_A$ | ||
BA | C=0 | C=1 |
00 | 1 | 1 |
01 | 0 | 0 |
11 | 0 | 0 |
10 | 1 | 1 |
카노맵에 따른 입력 함수는 다음과 같습니다.
$D_C = C'B'A' + CB + CA = C'B'A' + C(B'A')' = C \oplus B'A'$
$D_B = A'B' + AB = B \oplus A'$
$D_A = A'1 + A0 = A \oplus 1$
$U=1, D=0$ 인 경우의 입력 함수는 다음과 같고
$D_C = C \oplus BA$
$D_B = A \oplus B$
$D_C = A \oplus 1$
이 둘을 합치면 다음과 같습니다.
$D_A = A \oplus (U + D)$
$D_B = B \oplus(UA + DA')$
$D_C = C \oplus(UBA + DB'A')$
이에 따른 D-FF Up / Down 이진 카운터의 구성은 다음과 같습니다.
'CS > 논리회로' 카테고리의 다른 글
[논리회로] 밀리머신과 출력 오류 현상 (0) | 2022.06.11 |
---|---|
[논리회로] 무어머신과 순차 패리티 체커 회로 (0) | 2022.06.11 |
[논리회로] 레지스터 (0) | 2022.06.10 |
[논리회로] 플립플롭 (0) | 2022.06.10 |
[논리회로] 래치와 투과성 문제 (0) | 2022.06.10 |