Professional Documents
Culture Documents
디8장
디8장
§ 카운터의 정의
– 입력(대부분 clock) 이 하나이며,
– 정해진 순서에 따라 출력이 결정
8. 카운터
§ 카운터의 주요 역할
– 상향 또는 하향 카운트
– 증가 또는 감소 카운트
– 시퀀스 이벤트(Sequence events)
– 주파수 분주
– 주소 지정 메모리(예 Program Counter, stack, DMA)
– 임시 메모리 등
카운터의 특징
리플 카운터
§ 비트수 (4비트, 8비트 등)
2진수 출력
§ 최대 카운트
클록 입력
– 4 비트 = 24 = 0000 ~ 1111 (2진수) 00
1 10
101
– 8 비트 = 28 = 0000 0000 ~ 1111 1111 (2진수)
§ 카운터의 계수(modulus of a count) Pulse 8
1
2
3
4
5
6
7
카운터가 카운트를 시작해서 완전히 한 바퀴를 돌아
카운트를 끝낸 다음 다시 처음 상태로 돌아올 때까지의 상태 수
– 십진 카운터
모든 J-K 플립플롭의 입력
– 4비트 은 1 이어서 토글모드
– 8비트 PS 와 CLR 입력은
§ 상향 또는 하향 카운터 비활성화 되어있다.
§ 비동기식 또는 동기식 카운터
§ 프리셋(Preset) 카운터 8번쨰의 클록 펄스에서는 플립플롭들은 4비트 카운터 는 16개의 상태를 가지며
차례로 H-L 펄스를 받기 때문에 2진수 0000 부터 1111까지 카운트한 후
§ 자동정지 카운터 모든 FF들이 토클한다. 다시 0000으로 돌아간다.
카운터에서 카운터의 리플을 주목하라. 이 카운터는 mod-16 카운터이다.
1
리플 카운터와 파형 십진 카운터
2진수 출력 2진수 출력
클록 입력 클록입력
01
0010
1 11
0 00
110
Pulse 5
1
2
3
4 Pulse 8
1
2
3
4
5
6
7
짧은 –(negative) 펄스
4
2
1
Pulse 5
3 2
3
4
Pulse 8
1
5
6
7
리플 상향 카운터와의 다른 점은
Q 출력 대신에 Q’ 출력을 3비트 하향식 카운터이다.
1s FF 는 토글 모드가 된다. (J & K = 1).
다음 FF의 CLK 입력으로 연결한다는 점이다.
카운트가 000으로 감소하면 J & K 입력이 OR 게이트에 의해 LOW가 되어
1s FF는 유지 모드가 된다 (J & K = 0). 카운트는 000에서 멈춘다.
2
카운터 분주(주파수 나누기) 7493 카운터 IC의 사용
• 카운터는 IC로 출시되어 있다.
¸4 • 대표적으로 리플 카운터 IC(7493 IC)와
¸8 200 Hz 동기식 카운터 IC(74192) 가 사용된다.
100 Hz 400 Hz
400
? Hz
Hz
50 Hz 100
? Hz
Hz 800
? Hz
Hz
¸2
¸ 16
클록 입력
1600 Hz
4비트 2진수
800 Hz
카운터로 구성된
7493 카운터 IC
카운터 회로의 문제 해결
• IC가 과열되었는지 확인한다.
• 연결이 끊어졌는지, 과열의 징후가 있는지 관찰한다.
• 과열로 인해 타는 냄새가 나는지 점검한다.
동기 순서 논리회로
• IC의 전원을 확인한다
• 논리구성도를 확인한다.
• 회로의 기본적인 동작을 이해한다.
3
• 순서논리회로의 블록도 • 무어머신과 밀리머신
출력 Y(t)는 현재
X(t) 상태의 입력 X(t)와 • 무어머신(Moore machine) : 순서논리회로의 출력이 플립플롭들의 현재
Y(t)
이전 상태의 출력 Y(t- 상태만의 함수인 회로. 출력이 상태 내에 결합되어 표시된다.
조합논리회로
1)에 의하여 결정 • 밀리머신(Mealy machine) : 출력이 현재 상태와 입력 모두의 함수인 회로.
출력은 상태간을 지나가는 화살선의 위에 표시된다.
Y(t-1)
• 순서논리회로는 신호의 타이밍(timing)에 따라 동기
순서논리회로와 비동기 순서논리회로로 분류. 1 1/0
메모리 소자
• 동기 순서회로에서 상태(state)는 단지
S0 S1
이산된(discrete) 각 시점 즉, 클록펄스가 들어오는
0 1 0/0 S0 S1 1/0
Clock Pulse
시점에서 상태가 변화하는 회로 0 1
• 클록펄스에 의해서 동작하는 회로를
동기순서논리회로 또는 단순히 동기순서회로라 한다. 0 0/1
•순서논리회로의 해석과 설계 관계 • 비동기 순서회로는 시간에 관계없이 단지 입력이
변화하는 순서에 따라 동작하는 논리회로 무어머신 밀리머신
해석 설계 사양
순서논리회로 (상태도 , 상태표 ,
설계
부울함수 )
동기 순서논리회로의 해석 과정 1. 변수명칭 부여
4
3. 상태표 작성 4. 상태도 작성
• 상태표(state table)는 현재상태와 외부 입력의 변화에 따라 차기상태와 • 상태표로부터 상태도를 그린다.
출력의 변화를 정의한 것
• 현재상태란 클록펄스(CP)의 인가 전을 나타내며, 차기상태란 클록펄스의 0/0
인가 후를 나타낸다.
00
1/0 1/1
차기상태 출력 1/0
현재상태 01 10
x=0 x=1 x=0 x=1 0/0
A B A B A B y y 0/0 0/0
11 x/y 출력
0 0 0 0 0 1 0 0
입력
0 1 1 1 0 1 0 0 1/0
1 0 1 0 0 0 0 1 상태도
1 1 1 0 1 1 0 0
상태표
B (t + 1) = AB x + ( A B + AB + AB) x SA = Bx R A = Bx
• 카르노 도표를 이용하여 간소화한 상태 방정식 S B = Ax RB = A x
A(t + 1) = B x + AB + A x B (t + 1) = Ax + AB + Bx
Bx
00 01 11 10
Bx 6. 회로의 동작설명
A A 00 01 11 10
0 1 0 1 1 1 • 순서논리회로의 동작은 상태도나 상태표를 이용하여 설명 가능
5
동기 순서논리회로의 설계 과정
6
D 플립플롭의 여기표 1. 회로 동작 기술
특성표 여기표
입력 현재상태 차기상태 현재상태 차기상태 요구입력 • 입력 변수만 있고 출력 변수는 없는 상태에서 상태 변화가 일어난다.
D Q(t) Q(t+1) Q(t) Q(t+1) D 0/
0 0 0 0 0 0
00
0 1 0 0 1 1 1/ 1/
1 0 1 1 0 0
1 1 1 1 1 1 01 11
1/ 0/
0/ 1/
T 플립플롭의 여기표 10 x/
0/ 입력
특성표 여기표
입력 현재상태 차기상태 현재상태 차기상태 요구입력
동기 순서논리회로에 대한 상태도
T Q(t) Q(t+1) Q(t) Q(t+1) T
0 0 0 0 0 0
0 1 1 0 1 1
1 0 1 1 0 1
1 1 0 1 1 0
2. 상태표 작성 3. 상태 축소 및 상태 할당
• 상태도로부터 상태표 유도 • 문자 기호에 의해서 표시된 상태를 가진 상태도로부터 간략화된 상태표를
유도하기 위한 절차에 대해서 알아보기로 한다.
차기상태 • 상태도로부터 얻어진 상태표는 하나 또는 그 이상의 불필요한
현재상태 상태(redundant state)를 가질 수 있다.
x=0 x=1
• 축소된 최소 상태표(minimal state table)를 유도하기 위한 과정은 상태
A B A B A B
축소와 상태 할당의 2단계에 의해서 수행된다.
0 0 0 0 0 1
0 1 1 0 0 1
• 상태 축소
1 0 1 0 1 1
1 1 1 1 0 0 • 순서논리회로에서 플립플롭의 수를 줄이는 것
• 플립플롭의 수가 m이라 가정하면, 이때 요구되는 상태는 2m 이 되므로
상태도 상태표 상태의 수를 줄임으로써 플립플롭의 수를 줄일 수 있다. 그러나 경우에
따라 상태의 수는 감소되지만 플립플롭의 수는 변화하지 않는 경우도 있다.
7
현재 차기상태 출력
0/0 상태 x=0 x=1 x=0 x=1
a 차기상태 출력 a a b 0 0 0/0
현재상태
0/0 0/0 x=0 x=1 x=0 x=1 b c d 0 0
1/0 a
0/0 0/0 a a b 0 0 c a d 0 0
b c
b c d 0 0 0/0 0/0
1/0 1/0 d e fd 0 1 1/0
c a d 0 0 e a fd 0 1
g d 0/0 e 0/0
1/1 d e f 0 1 f ge f 0 1 e b c
1/1 e a f 0 1
0/0 1/1 g a f 0 1 1/1 1/0
f f g f 0 1 1/0
최종 상태표 0/0
1/1 g a f 0 1
현재 차기상태 출력 d
상태 x=0 x=1 x=0 x=1 1/1
상태도 상태표 a a b 0 0
b c d 0 0 축소된 상태도
c a d 0 0
d e d 0 1
e a d 0 1
• 상태 할당 4. 플립플롭의 수와 형태의 결정
• 기호 형태로 표현된 각각의 상태에 대해서 2진수(2진 코드)의 값을
할당하는 과정 • 정의해야 할 상태의 수가 n가지이면 élog n ù 개의 플립플롭이 필요.
2
현재 차기상태 출력
상태 x=0 x=1 x=0 x=1
001 001 010 0 0
010 011 100 0 0
할당 1에 의한
011 001 100 0 0 최소 상태표
100 101 100 0 1
101 001 100 0 1
8
5. 상태 여기표의 유도 6. 플립플롭의 출력 함수 및 회로의 입력 함수 유도
조합회로의 입력 조합회로의 출력
차기상태
현재상태 입력 플립플롭 입력 Bx Bx
A B x A B JA KA JB KB A 00 01 11 10 A 00 01 11 10
0 0 0 0 0 0 x 0 x 0 1 0 X X X X
0 0 1 0 1 0 x 1 x
1 X X X X 1 1
0 1 0 1 0 1 x x 1
0 1 1 0 1 0 x x 0 J A = Bx K A = Bx
1 0 0 1 0 x 0 0 x
1 0 1 1 1 x 0 1 x Bx Bx
1 1 0 1 1 x 0 x 0 A 00 01 11 10 A 00 01 11 10
1 1 1 0 0 x 1 x 1 0 1 X X 0 X X 1
1 1 X X 1 X X 1
Q(t) Q(t+1) J K JB = x K B = Ax + A x = A Å x = A ⊙ B
0 0 0 x
J-K 플립플롭의 여기표
0 1 1 x
1 0 x 1
1 1 x 0
7. 논리 회로의 구현 동기 순서논리회로의 설계 예제
x • 상태도 q 상태표
JA Q A
0/0 차기상태 출력
현재상태
a x=0 x=1 x=0 x=1
0/0 0/0 a a b 0 0
KA Q 1/0
b c d 0 0
e b 0/0 c c a d 0 0
1/1 1/0 d e d 0 1
1/0
JB Q B 0/0 e a d 0 1
d
1/1
KB Q
• 상태할당 및 플립플롭 수 결정
CP • 제어하려는 상태의 수는 5가지이므로 3비트가 필요
• 3개의 S-R 플립플롭을 순서대로 A, B, C라고 정의
• 현재 상태 a, b, c, d, e에 각각 000, 001, 010, 011, 100을 할당.
9
• 순서제어회로의 상태 여기표 작성 • 플립플롭의 출력 함수 및 회로의 출력 함수 유도
현재상태 외부입력 차기상태 플립플롭의 입력 외부출력
Cx Cx Cx
ABC x ABC SA RA SB RB SC RC y AB 00 01 11 10 AB 00 01 11 10 AB 00 01 11 10
a
000 0 000 0 x 0 x 0 x 0 00 00 X X X X 00 1 1
000 1 001 0 x 0 x 1 0 0 01 1 01 X X X 01 X X
b
001 0 010 0 x 1 0 0 1 0 11 X X X X 11 X X X X 11 X X X X
001 1 011 0 x 1 0 x 0 0
10 X 10 1 1 X X 10 1 X X
c
010 0 000 0 x 0 1 0 x 0
010 1 011 0 x x 0 1 0 0 S A = BC x RA = A S B = Ax + BC
011 0 100 1 0 0 1 0 1 0
d
011 1 011 0 x x 0 x 0 1
Cx Cx Cx
e 100 0 000 0 1 0 x 0 x 0
AB 00 01 11 10 AB 00 01 11 10 AB 00 01 11 10
100 1 011 0 1 1 0 1 0 1 00 X X 00 1 X 00 X 1
101 0 xx x x x x x x x x 01 1 01 X 1
1 01 1 X
101 1 xx x x x x x x x x
11 X X X X 11 X X X X 11 X X X X
Don’t 110 0 xx x x x x x x x x
care 110 1 xx x x x x x x x x 10 X X X 10 1 X X 10 X X X
111 0 xx x x x x x x x x RB = B x RC = x
SC = x
111 1 xx x x x x x x x x
10
• 순서논리회로의 상태 여기표
입력 현재 상태 차기 상태 플립플롭 입력
상태표 JK F/F 사용 설계 x A B C A B C JA KA JB KB JC KC
0 0 1 0 0 1 1 0 × × 0 1 ×
0 0 1 1 0 1 1 0 × × 0 × 0
차기상태 0 1 0 0 1 0 0 × 0 0 × 0 ×
현재상태
x=0 x=1 0 1 0 1 1 0 1 × 0 0 × × 0
A B C A B C A B C 0 1 1 0 1 1 0 × 0 × 0 0 ×
0 1 0 0 1 1 0 1 0 0 1 1 1 1 0 1 × 0 × 1 × 0
0 1 1 0 1 1 1 1 1 1 0 1 0 0 1 0 0 × × 0 0 ×
1 0 0 1 0 0 1 1 0 1 0 1 1 1 1 1 1 × × 0 × 0
1 1 0 0 1 1 0 × 0 1 × 0 ×
1 0 1 1 0 1 1 0 0
1 1 0 1 1 0 0 × 0 0 × × 1
1 1 0 1 1 0 0 1 0 1 1 1 0 0 1 0 × 1 × 0 0 ×
1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 × 0 × 0 × 0
상태표
11
미사용 상태의 상태표
차기상태
카운터의 설계
현재상태
x=0 x=1
A B C A B C A B C • (예제1) 3 비트 2진 카운터 설계
0 0 0 0 0 1 0 1 0
000 현재상태 차기상태
0 0 1 0 0 1 1 0 1
111 001 A B C A B C
1
0 0 0 0 0 1
010 1
0 0 1 0 1 0
0 1 110 010 0 1 0 0 1 1
1
011 110 000 0 1 1 1 0 0
0 1 0 0 1 0 1
1 0 101 011 1 0 1 1 1 0
1
100 1 1 0 1 1 1
0
111 100 001 0 1 1 1 0 0 0
1 상태도
0
1 상태표
101 미사용 상태
1
0
KB = C JC = 1 KC = 1
상태 여기표
12
C B A (예제2) 3비트 2진 카운터를 T 플립플롭을 사용하여 구현
JC Q JB Q JA Q q 상태 여기표
KC Q KB Q KA Q
A B C A B C TA TB TC
0 0 0 0 0 1 0 0 1
CP
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
• 카르노 맵에 의한 간략화
BC BC BC
A 00 01 11 10 A 00 01 11 10 A 00 01 11 10
(예제3) J-K 플립플롭을 사용하여 아래의 상태도에 해당하는 카운터를
0 1 0 1 1 0 1 1 1 1
설계하고, 미사용 상태에 대한 상태도를 구하여라.
1 1 1 1 1 1 1 1 1 1
TA = BC TB = C TC = 1
000
• 3비트 2진 카운터 회로
101 001
C B A
1 TC Q TB Q TA Q
011 110
111
Q Q Q
CP
13
q 상태 여기표 BC
BC BC
현재상태 차기상태 플립플롭 입력 A 00 01 11 10 A 00 01 11 10 A 00 01 11 10
A B C A B C JA KA JB KB JC KC 0 X X 1 X 0 1 X X X 0 X 1 X
0 0 0 0 0 1 0 × 0 × 1 × 1 X X 1 X X X 1 1 X 1 X
0 0 1 1 1 0 1 × 1 × × 1
KB = A JC = 1 KC = B
0 1 1 1 0 1 1 × × 1 × 0
1 0 1 0 0 0 × 1 0 × × 1
1 1 0 1 1 1 × 0 × 0 1 ×
• 카운터 회로
1 1 1 0 1 1 × 1 × 0 × 0
A B C
q 카르노 맵에 의한 간략화
JA Q JB Q 1 JC Q
BC BC BC
A 00 01 11 10 A 00 01 11 10 A 00 01 11 10
CP CP CP
0 1 1 X 0 X X X X 0 1 X X
1 X X X X 1 X 1 1 1 X X X KA Q KB Q KC Q
JA = C KA = C CP
J B = AC
14
v 각 플립플롭은 클록 펄스의 하강 에지에서 변화한다.
v QA에서는 입력 클록 주파수의 1/2, QB에서는 1/4, QC에서는 1/8, QD에서는
4비트 2진 상향 카운터 1/16의 주파수를 갖는 구형파가 얻어진다.
QA(LSB) QB QC QD(MSB)
클록펄스 QD QC QB QA 10진수
1
1 0 0 0 0 0
J Q J Q J Q J Q
2 0 0 0 1 1
3 0 0 1 0 2 CP
4 0 0 1 1 3 논리 회로도
5 0 1 0 0 4 K Q K Q K Q K Q
6 0 1 0 1 5
7 0 1 1 0 6
8 0 1 1 1 7 CP
9 1 0 0 0 8
10 1 0 0 1 9 QA 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
11 1 0 1 0 10 QB 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0
12 1 0 1 1 11
13 1 1 0 0 12 QC 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 타이밍 도
14 1 1 0 1 13 QD 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0
15 1 1 1 0 14
16 1 1 1 1 15 상태 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0
4비트 2진 하향 카운터
0 1 2 3 4 5 6 7
계수 상태 상태도
클록펄스 QD QC QB QA 10진수 15 14 13 12 11 10 9 8
1 1 1 1 1 15
2 1 1 1 0 14
3 1 1 0 1 13 QA(LSB) QB QC QD(MSB)
4 1 1 0 0 12
5 1 0 1 1 11 1
6 1 0 1 0 10 J Q J Q J Q J Q
7 1 0 0 1 9
8 1 0 0 0 8 CP
9 0 1 1 1 7
10 0 1 1 0 6 K Q K Q K Q K Q
11 0 1 0 1 5
12 0 1 0 0 4 4비트 2진 하향 카운터(상승 에지 트리거)
13 0 0 1 1 3
14 0 0 1 0 2
15 0 0 0 1 1
16 0 0 0 0 0
15
비동기 상향/하향 카운터 비동기 10진 카운터(BCD 카운터, decade counter)
• S=0으로 하면 MUX의 입력 I0와 출력 O가 연결 : 상향 카운터 • 0에서 9까지의 카운트를 반복
• BCD 카운터를 구성하려면 4개의 플립플롭이 필요
• S=1로 하면 MUX의 입력 I1 과 출력 O가 연결 : 하향 카운터
• 16개의 상태 중에서 10개의 상태만을 사용
QA(LSB) QB QC QD(MSB)
상태표
1
J Q MUX J Q MUX J Q MUX J Q 클록펄스 QD QC QB QA 10진수
CP
I0
F
I0
F
I0
F
1 0 0 0 0 0
I1 I1 I1 2 0 0 0 1 1
K Q K Q K Q K Q 3 0 0 1 0 2
S 4 0 0 1 1 3
5 0 1 0 0 4
비동기 4비트 상향/하향 카운터 6 0 1 0 1 5
7 0 1 1 0 6
8 0 1 1 1 7
9 1 0 0 0 8
10 1 0 0 1 9
• 카운터 출력이 (목표하는 최고 카운트)+1에 도달한 순간을 포착하여 모든 • 3 자리 10진 카운터의 블록도
플립플롭을 0으로 Clear
• 3 자리 10진수인 000~999까지 카운트할 수 있는 카운터
• QB와 QD 출력을 NAND 게이트로 결합하고 그 출력을 모든 플립플롭이
clear 입력에 연결
QD QC QB QA QD QC QB QA QD QC QB QA
QA(LSB) QB QC QD(MSB)
1
K Q K Q K Q K Q
CLR CLR CLR CLR
CP
glitch는
QA 카운터의
glitch
QB 오동작
QC 원인이 될 수
QD 있다.
CLR
16
다양한 동기식 카운터 설계
10진 비동기 카운터 설계 • 플립플롭에서의 전파지연 tPD인 경우 n개의 플립플롭을 종속 연결한
비동기 카운터의 전체 전파지연은 n´tPD 가 된다.
• 이러한 지연 때문에 입력 클록펄스를 모든 플립플롭에 공통으로 인가하는
• glitch 없는 비동기 카운터 설계 동기식 카운터를 사용.
• 과제
• 동일한 clock을 사용하지 않아야 하므로 동작하는 2비트 동기식 2진 카운터
룰을 찾아라.
• 힌트 D F/F은 clk, C F/F은 D, B F/F은 C, A F/F은 ? 00 현재상태 차기상태 플립플롭 입력
QB QA QB QA JB KB JA KA
01 11 0 0 0 1 0 x 1 x
0 1 1 0 1 x x 1
1 0 1 1 x 0 1 x
10 1 1 0 0 x 1 x 1
상태도 상태 여기표
JA Q JB Q JC Q JD Q
1 X X 1 1 1 1 X 1 X 1
J B = QA K B = QA JA =1 KA =1
KA Q KB Q KC Q KD Q
FF-A FF-B FF-C FF-D
CP
1 QA(LSB) QB
CP 회로도
JA Q JB Q
QA 0 1 0 1 0 CP
QA 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
QB 0 0 1 1 0
KA Q KB Q QB 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0
FF-A FF-B
t1 t2 t3 t4 QC 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0
CP
QD 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0
2-비트 카운터 회로 및 타이밍 도 상태 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0
타이밍 도
17
• n-비트 동기 2진 카운터
4-비트 동기식 2진 카운터의 상태표 • 상태표로부터 플립플롭의 입력함수를 추정할 수 있다.
클록펄스 QD QC QB QA 10 진수 • 하위의 모든 출력이 1일 때, 각 출력은 0은 1로, 1은 0으로 변화한다.
• 토글동작이 필요할 때, J와 K 입력은 모두 1이 되어야 한다.
1 0 0 0 0 0
2 0 0 0 1 1 • 따라서 플립플롭의 입력 함수는 간단하게 하위비트의 논리적 AND이다.
3 0 0 1 0 2
4 0 0 1 1 3 JA = KA =1
5 0 1 0 0 4
6 0 1 0 1 5
J B = K B = QA
7 0 1 1 0 6
8 0 1 1 1 7
J C = K C = QB Q A
9 1 0 0 0 8
10 1 0 0 1 9
J D = K D = QC QB Q A
11 1 0 1 0 10
12 1 0 1 1 11
J E = K E = QD QC QB Q A
13 1 1 0 0 12
14 1 1 0 1 13
J F = K F = QE QD QC QB Q A
15 1 1 1 0 14
16 1 1 1 1 15
17 0 0 0 0 0
1000 0010 QD QC QB QA QD QC QB QA JD KD JC KC JB KB JA KA C
0 0 0 0 0 0 0 1 0 x 0 x 0 x 1 x 0
0 0 0 1 0 0 1 0 0 x 0 x 1 x x 1 0
0111 0011
0 0 1 0 0 0 1 1 0 x 0 x x 0 1 x 0
0 0 1 1 0 1 0 0 0 x 1 x x 1 x 1 0
0 1 0 0 0 1 0 1 0 x x 0 0 x 1 x 0
0110 0100 0 1 0 1 0 1 1 0 0 x x 0 1 x x 1 0
0101 0 1 1 0 0 1 1 1 0 x x 0 x 0 1 x 0
0 1 1 1 1 0 0 0 1 x x 1 x 1 x 1 0
1 0 0 0 1 0 0 1 x 0 x x 0 x 1 x 0
1 0 0 1 0 0 0 0 x 1 x x 0 x x 1 1
18
q 카르노 맵 QBQA QBQA QBQA
QDQC 00 01 11 10 QDQC 00 01 11 10 QDQC 00 01 11 10
QBQA QBQA QBQA 00 1 X X 1 00 X 1 1 X 00
QDQC 00 01 11 10 QDQC 00 01 11 10 QDQC 00 01 11 10
00 01 1 X X 1 01 X 1 1 X 01
00 X X X X 00 1
01 1 01 X X X X 11 X X X X 11 X X X X 11 X X X X
01 X X X X
11 X X X X 11 X X X X 10 1 X X X 10 X 1 X X 10 1 X X
11 X X X X
10 X X X X 10 1 X X 10 X X X X JA =1 KA =1 C = QD Q A
K C = QB Q A J B = Q DQA K B = Q DQA
19
q 카르노 맵 q 3비트 동기식 상향/하향 카운터의 회로도
QAx QAx QAx QA(LSB) QB QC
QCQB 00 01 11 10 QCQB 00 01 11 10 QCQB 00 01 11 10
00 1 00 X X X X 00 1 1 1
01 1 01 X X X X 01 X X X X
JA Q JB Q JC Q
11 X X X X 11 1 11 X X X X
10 X X X X 10 1 10 1 1
KA Q KB Q KC Q
J C = QB Q A x + Q B Q A x K C = QB Q A x + Q B Q A x J B = QA Å x
FF-A FF-B FF-C
x
CP
QAx QAx QAx
QCQB 00 01 11 10 QCQB 00 01 11 10 QCQB 00 01 11 10
00 X X X X 00 1 1 X X 00 X X 1 1
01 1 1 01 1 1 X X 01 X X 1 1
11 1 1 11 1 1 X X 11 X X 1 1
10 X X X X 10 1 1 X X 10 X X 1 1
K B = QA Å x JA =1 KA =1
m x n 분주회로
기타 카운터
mod-16 mod-m 링 카운터
QA ¸2 QA
mod-n
QB
• 임의의 시간에 한 개의 플립플롭만 논리 1이 되고 나머지 플립플롭은 논리
QB ¸4 CP QA 0이 되는 카운터
CP QC ¸8 MSB QB
QD ¸ 16 ¸m • 논리 1은 입력펄스에 따라 그 위치가 한쪽 방향으로 순환한다.
MSB
¸ (m ´ n) • 상태도
16진 카운터 블록도 (m´n)분주회로 개념도
1000
0100 0001
0010
20
• 카르노 맵
• 상태 여기표
QBQA QBQA
QDQC 00 01 11 10 QDQC 00 01 11 10
현재상태 차기상태 플립플롭 입력
00 X 1 X 00 X X
QDQCQBQA QDQCQBQA DD DC DB DA
01 X X X 01 X X X
1 0 0 0 0 1 0 0 0 1 0 0
11 X X X X 11 X X X X
0 1 0 0 0 0 1 0 0 0 1 0
0 0 1 0 0 0 0 1 0 0 0 1 10 X X X 10 1 X X X
0 0 0 1 1 0 0 0 1 0 0 0 DD = Q A DC = QD
QBQA QBQA
QDQC 00 01 11 10 QDQC 00 01 11 10
00 X X 00 X X 1
01 1 X X X 01 X X X
11 X X X X 11 X X X X
10 X X X 10 X X X
DB = QC D A = QB
• 처음에 Clear 단자를 논리 0으로 하여 모든 플립플롭의 출력을 0으로 한 • 링 카운터 응용 : 커피 자판기(vending machine)
다음 처음 플립플롭의 출력 을 1로 세트하고 Clear 단자를 다시 논리 1로
하면 링 카운터의 최초의 출력은 QD QC QB QA =1000이다. 동작순서
• 이 후부터 클록펄스가 입력될 때마다 클록펄스의 상승 에지에서 오른쪽으로 [단계 1] 동전이 들어오는 것을 기다린다.
한 자리씩 이동을 하며, QA 의 출력은 다시 DD 로 입력된다. [단계 2] 동전을 확인하고 적절한 잔돈을 돌려준다.
QD QC QB QA [단계 3] 선택스위치(블랙, 크림, 및 설탕)을 읽어라.
[단계 4] 공급창(커피를 빼내는 곳)에 종이컵을 떨어뜨린다.
[단계 5] 종이컵에 인스턴트 커피를 붓는다.
DD PR Q DC Q DB Q DA Q [단계 6] 선택된([단계 3])대로 크림이나(과) 설탕을 추가하라.
[단계 7] 컵에 뜨거운 물을 붓는다.
CP [단계 8] 물, 커피, 크림 및 설탕이 적절히 공급되었는지를 검사한다.
CLR
만약 적으면 적당한 메시지를 보이게 한다.
Clear [단계 9] 1 단계로 간다.
CP
QD
QC
QB
QA
21
• 처음에 CLEAR 를 논리 0으로 하여 QA=1이 되고 QB=QC=…QH=0이 된다. 존슨 카운터
이제 CLEAR 를 논리 1로 한다.
• n개의 플립플롭으로 구성된 링 카운터는 n 가지의 서로 다른 상태를 출력
• 존슨 카운터는 2n 가지의 서로 다른 상태를 출력
QA
Wait for coins
QB QD QC QB QA
Check coins
CP QC
Read Selection
QD
링 Drop cup
QE DD Q DC Q DB Q DA Q
카운터 Release coffee
QF
CLEAR Add cream/suger
QG CP Q
Fill up
QH
Check supplies
"Done" Pulse
링 카운터를 응용한 커피자판기 동작도 CP
QD
QC
QB
QA
5 1 1 1 1 15
6 0 1 1 1 7
7 0 0 1 1 3 LOAD
8 0 0 0 1 1
22
• 이제 LOAD=0으로 하면 카운트 시작. • Modulus 설정방법
시작
(프리세트 카운터의 modulus) = (최대 modulus 2n ) - (프리세트된 수)
000 001 010 011 100 101 110 111
여기서 n은 카운터에서의 플립플롭의 수
7490 핀 배치도
7493 핀 배치도
23
74163(Synchronous presettable mod-16 counter with synchronous clear) • ENP와 ENT 입력 및 RCO 출력은 더 높은 계수순서를 갖는 카운터를
설계할 때 사용
• 74163은 4-비트 동기 2진 카운터로서 4개의 D 플립플롭으로 구성되며, 4
D C B A D C B A
비트의 병렬입력과 병렬출력이 있다.
1 ENP RCO 1 ENP RCO
ENT ENT
1 CLEAR 1 CLEAR 8-비트 카운터
1 LOAD 74163/ 1 LOAD 74163/
74161 74161
CP
CLR LOAD ENP,ENT 기능
QD QC QB QA QD QC QB QA
0 X X 플립플롭이 clear된다.
1 0 X 병렬입력이 수행된다. • 임의의 modulus 카운터로 사용 가능
1 1 0 불변상태가 된다.
1 1 1 카운터가 동작한다. D C B A D C B A
QD QC QB QA
• 74162(Synchronous presettable BCD counter with asynchronous clear) • 74169(Synchronous presettable up/down mod-16 counter)
• 핀 기능, 동작, 사용법 등이 74163과 같으며, 74163은 4비트 동기 16진 • 16진 상향/하향 동기식 카운터이다.
카운터이지만, 74162는 4비트 10진 동기 카운터이다. • 제어입력 U/ D 를 논리 1로 하면 상향 카운터, 논리 0으로 하면 하향
카운터로 동작
• 프리세트 데이터 입력 DCBA는 LOAD 를 논리 0으로 할 때 클록펄스의
• 74161(Synchronous presettable mod-16 counter with asynchronous clear) 상승 에지에서 출력을 프리세트시킨다. 카운트가 일어나려면 ENP와
ENT가 둘 다 논리 0으로 되어야 한다.
• 핀 기능, 동작, 사용법 등이 74163과 같은 presettable 16진 동기식 상향
카운터이다. 또한 비동기적인 클리어 입력을 갖는다. • 출력 QD, QC, QB, QA가 상향 모드 시에는 1111, 하향 모드 시에는 0000에
도달하면 RCO(ripple carry output)가 논리 0이 된다.
24
• 74168(Synchronous presettable up/down BCD counter) • 74191(Presettable synchronous up/down mod-16 counter)
• 10진의 단일 modulus를 가지며 동작은 74169에 준한다. • 74191은 4-비트 16진 상향/하향 동기식 카운터로서 핀 배치도는 74190과
같다.
• 74190(Presettable synchronous up/down BCD counter) • CTEN =0이면 계수가능 상태이고, 1이면 계수정지 상태가 된다.
• D/ U =0이면 상향 카운터로 동작하고, 1이면 하향 카운터로 동작한다.
• 핀 기능, 동작, 사용법 등이 74163과 같은 presettable 16진 동기식 상향
카운터이다. 또한 비동기적인 클리어 입력을 갖는다. • 이 외의 모든 동작은 74190에 준한다.
74190 핀 배치도
수정 발진자
카운터의 응용 R1 R1
디지털 시계 R1
C C
R2 R2 R2
발진 분주 카운터 디코더 표시
회로 회로 회로 회로 회로
CR 발진회로 수정 발진자를 사용한 회로
25
1Hz
7492(÷6) 7490(÷10)
CP CLK
QD QC QB QA QD QC QB QA
RES 4020
7447 7447 분, 초 단위의 카운터 디코더 및
Q14 Q13 Q12 Q11 Q10 Q9 Q8 Q7 Q6 Q5 Q4 Q1
또는 또는 드라이브 회로
÷2 7448 7448
÷24 a b c d e f g a b c d e f g
÷210 ÷ 25
÷ 211
4020을 이용하여 1Hz 구형파를 얻는 회로
• 카운터 회로 QD QC QB QA QD QC QB QA
13
2
1
• t=10초이면 소수점을 한 자리 높인다.
12 11 9
Q Q Q Q
12 9 8 11
Q Q Q Q
12 11 9
Q Q Q Q
12 9 8 11
Q Q Q Q
12 11 9
Q Q Q Q
12 9 8 11
Q Q Q Q
• t=0.1초이면 소수점을 한 자리 낮춘다.
12 A B C D 7492 A B C D 7490 A B C D 7492 A B C D 7490 A B C D 7492 A B C D 7490
미지입력
10 R0 R0 R0 R0 R9 R9 R0 R0 R0 R0 R9 R9 R0 R0 R0 R0 R9 R9
11 9 A B (1) (2) A B (1) (2) (1) (2) A B (1) (2) A B (1) (2) (1) (2) A B (1) (2) A B (1) (2) (1) (2)
증폭기
14 1 6 7 14 1 2 3 6 7 14 1 6 7 14 1 2 3 6 7 14 1 6 7 14 1 2 3 6 7
8
3
카운터
4 6
5
7410 S1 S2
hour minite
클록
74HC04 : GND(7), Vcc(14)
74LS10 : GND(7), Vcc(14)
10
발진기 분주기 t
11
2 4 6
74LS47 : GND(8), Vcc(16) 1Hz 15 1 3 5
Q11
74LS90 : GND(10), Vcc(5)
2Hz 14 100K 74HC04
74LS92 : GND(10), Vcc(5) Q10
4020 : GND(8), Vcc(16) 0.01m
Gate Enable
4020 100K 주파수 카운터의 블록도
26
10Hz
74160 1Hz
100KHz 0.1Hz
÷10 ÷10 ÷10 ÷10 ÷10
OSC
+VCC t
미지입력
J Q 3
A1 7414
4 Gate
+VCC A2 Enable 7408
5
B
7476 R Q Count 파형정형
Gate 신호 K Q C
74121
Gate
RESET
CLK
27