1
HW (5 월 11 일 제출 )
P405
문제 7 a), d)
주어지 회로에 대한 상태표를 완성하고 주어진 입력에 대한 플립플롭 상태와 출력에 대한 타이밍도를 완성한다 .
그리고 MaxPlusII 를 이용하여 검증한 결과를 함께 제출한다 .
2
7 장 순차회로 시스템의 설계
1) 플립플롭 설계 방법
2) 동기식 카운터 설계
3) 비동기 카운터 설계
4) 상태표와 상태도의 유도
3
예문 7,8,9
예문 7.
입력 (x ) 과 출력 (z) 이 각각 하나인 시스템으로 현재 입력이 1 이고 이전 2 클럭 동안에도 1 이었을 때만 1 을 출력하는 Mealy 시스템
예문 8.
입력 (x ) 과 출력 (z) 이 각각 하나인 시스템으로 연속하여 3 번 1 이 입력된 것보다 연속하여 3 번 0 이 입력된 것이 최근일 경우에만 1 을 출력하는 Moore 시스템
예문 9.
0 에서 7 까지의 수를 나타내는 3 비트 출력을 갖는 시스템으로 출력이 십진수로 0, 3, 2, 4, 1, 5, 7 의 순서로 매 클럭마다 바뀌고 한 사이클이 끝나면 다시 반복하는 시스템
4
예문 10, 11
예문 10.
2 개의 입력 (x1, x2) 과 3 개의 출력 (z1, z2, z3) 을 갖는 시스템으로 출력은 0 에서 7 사이의 수를 나타낸다 .
x1 =0 일 때는 상향 카운트 (up count),
x1 =1 일 때는 하향 카운트 (down count),
x2 =0 일 때는 카운트가 다시 반복되며 ,
x2 =1 일 때에 카운트가 끝나면 마지막 상태에 머무는 시스템
x1 = 0, x2 = 0: 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 . . . x1 = 0, x2 = 1: 0 1 2 3 4 5 6 7 7 7 7 7 7 7 7 7 . . . x1 = 1, x2 = 0: 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 . . . x1 = 1, x2 = 1: 7 6 5 4 3 2 1 0 0 0 0 0 0 0 0 0 . . .
( 물론 x1, x2 의 값이 어느 시점에 바뀌면 출력의 순서가 바뀌게 될 것이다 .)
예문 11. 버스제어기 ( 생략 )
5
동기 순차시스템 설계 절차
단계 1: 문제에 대한 설명으로부터 메모리에 저장되어야 하는 것을 결정한다 . 즉 가능한 상태가 무엇인지를 결정한다 .
단계 2: 필요하다면 입 , 출력을 2 진수로 코드화한다 .
단계 3: 시스템의 동작을 설명하기 위해 상태표나 상태도를 만든다 .
단계 4 : 입출력 관계는 같지만 상태의 개수가 적은 상태표를 만들기 위해 상태 축소화 기법 (9 장 ) 을 사용한다 .
단계 5 : 상태할당을 한다 . 즉 , 상태를 이진수로 코딩한다 .
단계 6: 플립플롭의 종류를 선택하고 플립플롭의 입력 맵 또는 표를 만든다 .
단계 7: 논리식을 구하고 회로도를 그린다 . ( 조합논리 설계 방식 )
6
상태할당과 2 진수로 나타낸 상태표
그림 7.1 설계 예제 ( 그림 6.3)
표 7.1 상태할당 예
7
설계 진리표
표 7.2 설계진리표 ( 상태표를 약간 변형 시킨 것 )
표 7.3 출력진리표
* Moore 시스템인 경우는 별도의 출력 진리표
* Mealy 시스템인 경우는 설계진리표에 별도의 열 (z) 를 추가하여 출력을 나타냄
* 열 q 가 꼭 필요치는 않으나 상태가 숫자의 크기순서가 아닌 경우 ( 표 7.1b, 표 7.1c) 는 도움이 된다 .
8
다음 상태 맵 과 출력 맵
q1* = xq2 + xq1
q2* = xq2’ + xq1
z = q1q2
맵 7.1 다음 상태 맵 출력 맵
9
예제 7.1 표 7.1b 의 상태할당
q1* = xq1’q2’ + xq1q2
q2* = xq1’ + xq2’
z = q1’q2
* 표 7.1a 의 할당에 비해 회로가 복잡
10
7.1 플립플롭 설계 기술
플립플롭 입력에 대한 진리표 구하기 위해 필요한 것
• 설계에 사용할 플립플롭에 대한 설계표
• 차기 상태를 구하기 위한 설계 진리표
11
플립플롭 설계표
플립플롭 설계표는 플립플롭 상태도에서 쉽게 얻을 수 있다 .
플립플롭의 상태표를 다르게 표현한 진리표는 각 행에 입력 , 현재 상태와 차기 상태가 나열되어 있다 .
이 표로 부터 한 상태에서 원하는 상태로 가기 위한 입력 값을 결정할 수 있다 .
표 7.4 플립플롭 설계표
12
D 플립플롭 설계표
표 7.5 D 플립플롭 설계표
그림 7.2 D 플립플롭 상태도
13
설계 진리표
표 7.2 설계진리표 ( 상태표를 약간 변형 시킨 것 )
• 설계 진리표는 플립플롭 입력 맵을 구하기 쉽게 상태표를 진리표 형식으로 변환한 것
• 즉 , 차기상태와 출력을 현재 상태와 입력에 대한 함수로 나타내는 것이다
14
입력 맵과 입력 식
• 입력식은 다음과 같이 된다 .
D1 = xq2 + xq1
D2 = xq2' + xq1
Z = q1q2
• 앞의 표 7.2 로 부터 플립플롭 입력표를 만들어야 되는데
• D 플립플롭인 경우 D1 과 D2 가 q1* 과 q2
* 와 동일하므로
추가로 이 들에 대한 열이 필요 없다 .
입력 맵 ( 표 7.2 이용 )
그림 7.3 D 플립플롭 이용한 구현
15
JK 플립플롭 설계표
그림 7.4 JK 플립플롭 상태도 표 7.6 JK 플립플롭 설계표
16
JK 플립플롭으로 설계
• 설계 진리표에 플립플롭 입력들을 위한 4 개의 열이 추가 됨 .
• 음영 처리된 열 q1 과 q1*는 표 7.6 을 이용하여 음영 처리된 플립플롭 입력 열들을 만든다 .
표 7.7 플립플롭 입력표
17
JK 입력 맵 및 최종 해
1 2 1
2 2 1
J xq K x
J x K x q
맵 7.2 JK 입력 맵
18
T 플립플롭으로 설계 ( 예제 7.3)
상태도와 플립플롭 설계표
시스템 설계를 위한 진리표
19
T 입력 맵 및 식
1 21 1
2 2 2 1
1
2
2
= +
= + +
=
T x q
T x q xq
Z
q
xq q
q
q
q
x
20
진리표 없이 상태표로부터 직접 맵을 구하는 방법
그림에서 보여주는 상태표로 부터 직접 q1* 과 q2
* 를 위한 맵을 얻을 수 있다
그림 7.5 상태표에서 맵 구하기
* 주의할 점은 상태표의 현상태가 2 진 순서로 되어 있지만 , 맵 순서에 맞게 고쳐야 한다 .
21
•J1 과 K1 의 두 번째 열을 얻기 위해 q1* 맵의 두 번째 열을 사용한다
•J1 과 K1 의 첫 번째 열을 얻기 위해 q1* 맵의 첫 번째 열을 사용한다
맵 7.4a J1 과 K1 의 첫 번째 열
맵 7.4b J1 과 K1 의 두 번째 열
22
• q2 의 J 와 K 를 찾기 위해 q2* 의 맵과 q2 열을 사용한다
• 위와 같은 방법으로 다른 플립플롭에도 적용할 수 있다 .
맵 7.4c J2 와 K2 의 계산
23
Quick method-JK 플립플롭에 대한 빠른 방법
-맵의 반이 무정의 ( 적색으로 표시 ) 이다 .
-맵의 모든 1 들은 관련된 변수가 없어지도록 무정의가 있다 .
맵 7.4 JK 플립플롭 입력에서 무정의와 1 의 쌍
24
Quick method 를 이용한 JK 계산
• JK 플립플롭의 함수 식에서
q* = Jq′ + K′q
q 가 0 일때
q* = J ㆍ 1 + K′ ㆍ 0 = J
q = 1 일때
q* = J ㆍ 0 + K′ ㆍ 1 = K′
• 즉 , 각 변수에 대한 q* 맵에서 그 변수가
0 인 부분은 J를 위한 부분이고 ,
1 인 부분은 K' 을 위한 부분이다 .
25
맵의 분리 ( 변수가 3 -> 2 로 줄어듬 )
• J2 와 K2 의 계산
• J1 와 K1 의 계산
J1 = xq2
K′1= x or K1 = x′
J2 = x
K2 = x′ + q1′
맵 7.5a 빠른 방법을 사용한 J1 과 K1 의 계산
맵 7.5b 빠른 방법을 사용한 J2 과 K2 의 계산
26
예제 7.4 설계
• 상태표와 상태 할당
• 상태 이름을 포함한 진리표를 생성
27
출력과 D 플립플롭 입력
Z = x' + q1q2
D1 = x' + q1' + q2'
D2 = x'q2' + xq2
28
JK 플립플롭의 진리표 및 식
•플립플롭의 입력 방정식
J1 = 1 K1 = xq2
J2 = x′ K2 = x′
29
7.2 동기식 카운터 설계
• 4 bit binary counter
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0, 1……
표 7.8 16 진 카운터
30
D 플립플롭을 이용한 카운터
• D 플립플롭 입력에 대한 맵
맵 7.6 16 진 카운터를 위한 D 플립플롭 입력
DD = DC′ + DB′+ DA′ + D′CBA
DC = CB′ + CA′ + C′BA
DB = B′A + BA′
DA = A′
31
JK 플립플롭을 이용한 카운터
• 입력식JD = KD = CBAJC = KC = BAJB = KB = AJA = KA = 1
• Quick method 를 사용
• J를 위한 맵은 다음 맵의 음영처리된 부분이다 . (K′ 는 나머지 부분이다 )
맵 7.7 JK 플립플롭 설계를 위한 맵
32
카운터 회로
• 0 부터 31 까지 카운트하는 것은 E 플립플롭을 추가하여 다섯 개의 플립플롭 으로 설계할 수 있다 .
JE = KE = DCBA
그림 7.6 4 비트 카운터
33
Up/down 카운터
x = 0 일 때 상향 카운트
x = 1 일 때 하향 카운트
표 7.9 상향 /하향 카운터
34
맵 과 입력식
• quick mehod 를 위해 q = 0 인 부분을 음영처리
• JA = KA = 1
JB = KB = x′A + xA ′
JC = KC = x′BA + xB′A′
35
회로도
• 4-,5- 비트 업 (up) 카운터에서처럼 패턴이 계속된다
JD = KD = x′CBA +xC′B′A′
JE = KE = x′DCBA + xD′C′B′A′
그림 7.7 상향 /하향 카운터
36
예제 7.6 10 진 카운터
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, .....
37
맵 및 입력 식
JD = CBA KD = A
JC = KC = BA
JB = D′A KB = A
JA = KA = 1
38
예제 7.7 임의 순서의 카운터 설계
0, 3, 2, 4, 1, 5, 7, and repeat
• 수의 순서와 다르게 카운트하는 카운터의 설계
39
SR 과 T 플립플롭에 대한 입력
• SR 과 T 플립플롭에 대한 입력 열을 표에 추가
40
D 플립플롭의 입력 맵 및 식
• q1*, q2
* 와 q3* 열을 사용하여 구한 D 플립플롭의 입력에 대한 맵과 식
41
SR 플립플롭의 입력 맵 및 식
S1 = q2'q3 + q2q3'
S2 = q1'q2'q3' + q1q2'q3
S3 = q2'
R1 = q2'q3' + q2q3 = S1'
= q2'q3' + q1q2
R2 = q1q2 + q2q3'
R3 = q2
42
T 플립플롭의 입력 맵 및 식
43
JK 플립플롭의 입력 맵 및 식
• 빠른 방법을 사용한 JK 플립플롭에 대한 맵과 식
44
상태 점검
• D 플립플롭인 경우에 상태 110 에 있다고 가정
q1=1, q2=1, q3=0 을 대치하였을 때의 입력 값
D1 = q2'q3 + q2q3' = 00+11 = 1
D2 = q1'q2'q3' + q1'q2q3 + q1q2'q3 = 001 + 011 +100 = 0
D3 = q2' = 0
• 상태 다이어그램
45
예제 7.8 up/down, cycling/saturating 카운터
2 비트 상향 / 하향 , 순환 / 포화 (cycling/saturating) 카운터의설계
X=0 : 상향 Y=0 : 순환 (cycling)
X=1 : 하향 Y=1 : 포화 (saturating)
46
맵 및 입력 식
47
7.3 비동기 카운터 설계
• 2 비트 비동기 카운터
• 비동기 카운터에서의 지연
48
4 비트 비동기 카운터 회로 및 지연
• 4 비트 카운터에 대한 타이밍
49
비동기 카운터 특징
장점 :
– 조합 논리회로가 필요 없을 정도로 하드웨어가 간단하다
단점 :
– 플립플롭들은 동일 클럭에 변하지 않고 , 한 플립플롭의 출력이 다른 플립플롭의 클럭으로 동작하기 때문에 지연시간이 길어지게 된다 .
– 시스템의 상태는 모든 플립플롭의 천이가 완료될 때까지 결정되지 않는다 .
50
7.4 상태표와 상태도의 유도
예문 6 : 입력 x 와 출력 z 를 갖는 시스템으로 , 최소한 3 클럭 주기동안 연속하여 x 가 1 이었을 때만 z 가 1 이 된다 .
• 입력된 내용을 메모리에 저장하는 2 가지 방법
1. 이전 세 개의 입력을 저장
2. 연속된 1 의 갯 수를 메모리에 저장
51
방법 1: 최근 세 입력 값을 저장
q1: 현재 입력보다 3 클럭 앞의 값
q2: 현재 입력보다 2 클럭 앞의 값
q3: 현재 입력보다 1 클럭 앞의 값
즉 . x 입력이 매 클럭마다 q3, q2, q1 로 shift 되어 들어간다 .
표 7.10 3 개의 플립플롭 상태표
52
방법 2: 연속된 1 의 개 수의 상태를 저장
• 1 의 개 수에 대한 3 가지의 상태
A 없다 , 최근 입력이 0B 1 번C 2 번C 3 번 이상
그림 7.12 상태도와 상태표
53
방법 1 과 방법 2 의 비교
• 방법 1
– 8 개의 상태 -> 3 개의 플립플롭 필요
– 연속된 1 의 수가 25 개일 때의 문제로 바뀌면 , 최근 25 개의 입력을 저장해야 하고 225 행의 상태 표가 필요 . -> 25 개의 플립플롭
• 방법 2
– 3 개의 상태 -> 2 개의 플립플롭 필요
– 연속된 1 의 수가 25 개일 때의 문제로 바뀌면 , 26 개 상태가 필요 .
-> 5 개의 플립플롭
54
방법 1 의 설계
• 상태할당은 이미 되 있음 .
• 플립플롭은 q1, q2, q3 로 이름
1) D 플립플롭인 경우D1 = q2, D2 = q3, D3 = x
2) JK 플립플롭인 경우
J1 = q2, J2 = q3, J3 = x
K1 = q2', K2 = q3', K3 = x'
출력 z = q1 q2 q3
55
방법 2 의 설계
• 표 7.2 의 상태할당 이용
• 해 ( 맵 7.1, 7.5a, 7.5b)
D1 = q1*, = xq2 + xq1 또는 J1 = xq2 K1 = x'
D2 = q2*, = xq2' + xq1 또는 J2 = x K2 = x' + q1'
z = q1 q2
56
Map 7.1, 7.5a, 7.5b
J1 = xq2
K′1= x or K1 = x′
J2 = x
K2 = x′ + q1′
맵 7.5a 빠른 방법을 사용한 J1 과 K1 의 계산
맵 7.5b 빠른 방법을 사용한 J2 과 K2 의 계산