56
1 HW (5 월 11 월 월월 ) P405 문문 7 a), d) 문문문 문문문 문문 문문문문 문문문문 문문문 문문문 문문 문문문문 문문문 문문문 문문 문문문문문 문문문문 . 문문문 MaxPlusII 문 문문문문 문문문 문문문 문문 문문문문 .

HW (5 월 11 일 제출 )

  • Upload
    abdalla

  • View
    157

  • Download
    0

Embed Size (px)

DESCRIPTION

HW (5 월 11 일 제출 ). P405 문제 7 a), d) 주어지 회로에 대한 상태표를 완성하고 주어진 입력에 대한 플립플롭 상태와 출력에 대한 타이밍도를 완성한다 . 그리고 MaxPlusII 를 이용하여 검증한 결과를 함께 제출한다. 7 장 순차회로 시스템의 설계. 플립플롭 설계 방법 동기식 카운터 설계 비동기 카운터 설계 상태표와 상태도의 유도. 예문 7,8,9. 예문 7 . - PowerPoint PPT Presentation

Citation preview

Page 1: HW (5 월  11 일 제출 )

1

HW (5 월 11 일 제출 )

P405

문제 7 a), d)

주어지 회로에 대한 상태표를 완성하고 주어진 입력에 대한 플립플롭 상태와 출력에 대한 타이밍도를 완성한다 .

그리고 MaxPlusII 를 이용하여 검증한 결과를 함께 제출한다 .

Page 2: HW (5 월  11 일 제출 )

2

7 장 순차회로 시스템의 설계

1) 플립플롭 설계 방법

2) 동기식 카운터 설계

3) 비동기 카운터 설계

4) 상태표와 상태도의 유도

Page 3: HW (5 월  11 일 제출 )

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 의 순서로 매 클럭마다 바뀌고 한 사이클이 끝나면 다시 반복하는 시스템

Page 4: HW (5 월  11 일 제출 )

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. 버스제어기 ( 생략 )

Page 5: HW (5 월  11 일 제출 )

5

동기 순차시스템 설계 절차

단계 1: 문제에 대한 설명으로부터 메모리에 저장되어야 하는 것을 결정한다 . 즉 가능한 상태가 무엇인지를 결정한다 .

단계 2: 필요하다면 입 , 출력을 2 진수로 코드화한다 .

단계 3: 시스템의 동작을 설명하기 위해 상태표나 상태도를 만든다 .

단계 4 : 입출력 관계는 같지만 상태의 개수가 적은 상태표를 만들기 위해 상태 축소화 기법 (9 장 ) 을 사용한다 .

단계 5 : 상태할당을 한다 . 즉 , 상태를 이진수로 코딩한다 .

단계 6: 플립플롭의 종류를 선택하고 플립플롭의 입력 맵 또는 표를 만든다 .

단계 7: 논리식을 구하고 회로도를 그린다 . ( 조합논리 설계 방식 )

Page 6: HW (5 월  11 일 제출 )

6

상태할당과 2 진수로 나타낸 상태표

그림 7.1 설계 예제 ( 그림 6.3)

표 7.1 상태할당 예

Page 7: HW (5 월  11 일 제출 )

7

설계 진리표

표 7.2 설계진리표 ( 상태표를 약간 변형 시킨 것 )

표 7.3 출력진리표

* Moore 시스템인 경우는 별도의 출력 진리표

* Mealy 시스템인 경우는 설계진리표에 별도의 열 (z) 를 추가하여 출력을 나타냄

* 열 q 가 꼭 필요치는 않으나 상태가 숫자의 크기순서가 아닌 경우 ( 표 7.1b, 표 7.1c) 는 도움이 된다 .

Page 8: HW (5 월  11 일 제출 )

8

다음 상태 맵 과 출력 맵

q1* = xq2 + xq1

q2* = xq2’ + xq1

z = q1q2

맵 7.1 다음 상태 맵 출력 맵

Page 9: HW (5 월  11 일 제출 )

9

예제 7.1 표 7.1b 의 상태할당

q1* = xq1’q2’ + xq1q2

q2* = xq1’ + xq2’

z = q1’q2

* 표 7.1a 의 할당에 비해 회로가 복잡

Page 10: HW (5 월  11 일 제출 )

10

7.1 플립플롭 설계 기술

플립플롭 입력에 대한 진리표 구하기 위해 필요한 것

• 설계에 사용할 플립플롭에 대한 설계표

• 차기 상태를 구하기 위한 설계 진리표

Page 11: HW (5 월  11 일 제출 )

11

플립플롭 설계표

플립플롭 설계표는 플립플롭 상태도에서 쉽게 얻을 수 있다 .

플립플롭의 상태표를 다르게 표현한 진리표는 각 행에 입력 , 현재 상태와 차기 상태가 나열되어 있다 .

이 표로 부터 한 상태에서 원하는 상태로 가기 위한 입력 값을 결정할 수 있다 .

표 7.4 플립플롭 설계표

Page 12: HW (5 월  11 일 제출 )

12

D 플립플롭 설계표

표 7.5 D 플립플롭 설계표

그림 7.2 D 플립플롭 상태도

Page 13: HW (5 월  11 일 제출 )

13

설계 진리표

표 7.2 설계진리표 ( 상태표를 약간 변형 시킨 것 )

• 설계 진리표는 플립플롭 입력 맵을 구하기 쉽게 상태표를 진리표 형식으로 변환한 것

• 즉 , 차기상태와 출력을 현재 상태와 입력에 대한 함수로 나타내는 것이다

Page 14: HW (5 월  11 일 제출 )

14

입력 맵과 입력 식

• 입력식은 다음과 같이 된다 .

D1 = xq2 + xq1

D2 = xq2' + xq1

Z = q1q2

• 앞의 표 7.2 로 부터 플립플롭 입력표를 만들어야 되는데

• D 플립플롭인 경우 D1 과 D2 가 q1* 과 q2

* 와 동일하므로

추가로 이 들에 대한 열이 필요 없다 .

입력 맵 ( 표 7.2 이용 )

그림 7.3 D 플립플롭 이용한 구현

Page 15: HW (5 월  11 일 제출 )

15

JK 플립플롭 설계표

그림 7.4 JK 플립플롭 상태도 표 7.6 JK 플립플롭 설계표

Page 16: HW (5 월  11 일 제출 )

16

JK 플립플롭으로 설계

• 설계 진리표에 플립플롭 입력들을 위한 4 개의 열이 추가 됨 .

• 음영 처리된 열 q1 과 q1*는 표 7.6 을 이용하여 음영 처리된 플립플롭 입력 열들을 만든다 .

표 7.7 플립플롭 입력표

Page 17: HW (5 월  11 일 제출 )

17

JK 입력 맵 및 최종 해

1 2 1

2 2 1

J xq K x

J x K x q

맵 7.2 JK 입력 맵

Page 18: HW (5 월  11 일 제출 )

18

T 플립플롭으로 설계 ( 예제 7.3)

상태도와 플립플롭 설계표

시스템 설계를 위한 진리표

Page 19: HW (5 월  11 일 제출 )

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

Page 20: HW (5 월  11 일 제출 )

20

진리표 없이 상태표로부터 직접 맵을 구하는 방법

그림에서 보여주는 상태표로 부터 직접 q1* 과 q2

* 를 위한 맵을 얻을 수 있다

그림 7.5 상태표에서 맵 구하기

* 주의할 점은 상태표의 현상태가 2 진 순서로 되어 있지만 , 맵 순서에 맞게 고쳐야 한다 .

Page 21: HW (5 월  11 일 제출 )

21

•J1 과 K1 의 두 번째 열을 얻기 위해 q1* 맵의 두 번째 열을 사용한다

•J1 과 K1 의 첫 번째 열을 얻기 위해 q1* 맵의 첫 번째 열을 사용한다

맵 7.4a J1 과 K1 의 첫 번째 열

맵 7.4b J1 과 K1 의 두 번째 열

Page 22: HW (5 월  11 일 제출 )

22

• q2 의 J 와 K 를 찾기 위해 q2* 의 맵과 q2 열을 사용한다

• 위와 같은 방법으로 다른 플립플롭에도 적용할 수 있다 .

맵 7.4c J2 와 K2 의 계산

Page 23: HW (5 월  11 일 제출 )

23

Quick method-JK 플립플롭에 대한 빠른 방법

-맵의 반이 무정의 ( 적색으로 표시 ) 이다 .

-맵의 모든 1 들은 관련된 변수가 없어지도록 무정의가 있다 .

맵 7.4 JK 플립플롭 입력에서 무정의와 1 의 쌍

Page 24: HW (5 월  11 일 제출 )

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' 을 위한 부분이다 .

Page 25: HW (5 월  11 일 제출 )

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 의 계산

Page 26: HW (5 월  11 일 제출 )

26

예제 7.4 설계

• 상태표와 상태 할당

• 상태 이름을 포함한 진리표를 생성

Page 27: HW (5 월  11 일 제출 )

27

출력과 D 플립플롭 입력

Z = x' + q1q2

D1 = x' + q1' + q2'

D2 = x'q2' + xq2

Page 28: HW (5 월  11 일 제출 )

28

JK 플립플롭의 진리표 및 식

•플립플롭의 입력 방정식

J1 = 1 K1 = xq2

J2 = x′ K2 = x′

Page 29: HW (5 월  11 일 제출 )

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 진 카운터

Page 30: HW (5 월  11 일 제출 )

30

D 플립플롭을 이용한 카운터

• D 플립플롭 입력에 대한 맵

맵 7.6 16 진 카운터를 위한 D 플립플롭 입력

DD = DC′ + DB′+ DA′ + D′CBA

DC = CB′ + CA′ + C′BA

DB = B′A + BA′

DA = A′

Page 31: HW (5 월  11 일 제출 )

31

JK 플립플롭을 이용한 카운터

• 입력식JD = KD = CBAJC = KC = BAJB = KB = AJA = KA = 1

• Quick method 를 사용

• J를 위한 맵은 다음 맵의 음영처리된 부분이다 . (K′ 는 나머지 부분이다 )

맵 7.7 JK 플립플롭 설계를 위한 맵

Page 32: HW (5 월  11 일 제출 )

32

카운터 회로

• 0 부터 31 까지 카운트하는 것은 E 플립플롭을 추가하여 다섯 개의 플립플롭 으로 설계할 수 있다 .

JE = KE = DCBA

그림 7.6 4 비트 카운터

Page 33: HW (5 월  11 일 제출 )

33

Up/down 카운터

x = 0 일 때 상향 카운트

x = 1 일 때 하향 카운트

표 7.9 상향 /하향 카운터

Page 34: HW (5 월  11 일 제출 )

34

맵 과 입력식

• quick mehod 를 위해 q = 0 인 부분을 음영처리

• JA = KA = 1

JB = KB = x′A + xA ′

JC = KC = x′BA + xB′A′

Page 35: HW (5 월  11 일 제출 )

35

회로도

• 4-,5- 비트 업 (up) 카운터에서처럼 패턴이 계속된다

JD = KD = x′CBA +xC′B′A′

JE = KE = x′DCBA + xD′C′B′A′

그림 7.7 상향 /하향 카운터

Page 36: HW (5 월  11 일 제출 )

36

예제 7.6 10 진 카운터

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, .....

Page 37: HW (5 월  11 일 제출 )

37

맵 및 입력 식

JD = CBA KD = A

JC = KC = BA

JB = D′A KB = A

JA = KA = 1

Page 38: HW (5 월  11 일 제출 )

38

예제 7.7 임의 순서의 카운터 설계

0, 3, 2, 4, 1, 5, 7, and repeat

• 수의 순서와 다르게 카운트하는 카운터의 설계

Page 39: HW (5 월  11 일 제출 )

39

SR 과 T 플립플롭에 대한 입력

• SR 과 T 플립플롭에 대한 입력 열을 표에 추가

Page 40: HW (5 월  11 일 제출 )

40

D 플립플롭의 입력 맵 및 식

• q1*, q2

* 와 q3* 열을 사용하여 구한 D 플립플롭의 입력에 대한 맵과 식

Page 41: HW (5 월  11 일 제출 )

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

Page 42: HW (5 월  11 일 제출 )

42

T 플립플롭의 입력 맵 및 식

Page 43: HW (5 월  11 일 제출 )

43

JK 플립플롭의 입력 맵 및 식

• 빠른 방법을 사용한 JK 플립플롭에 대한 맵과 식

Page 44: HW (5 월  11 일 제출 )

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

• 상태 다이어그램

Page 45: HW (5 월  11 일 제출 )

45

예제 7.8 up/down, cycling/saturating 카운터

2 비트 상향 / 하향 , 순환 / 포화 (cycling/saturating) 카운터의설계

X=0 : 상향 Y=0 : 순환 (cycling)

X=1 : 하향 Y=1 : 포화 (saturating)

Page 46: HW (5 월  11 일 제출 )

46

맵 및 입력 식

Page 47: HW (5 월  11 일 제출 )

47

7.3 비동기 카운터 설계

• 2 비트 비동기 카운터

• 비동기 카운터에서의 지연

Page 48: HW (5 월  11 일 제출 )

48

4 비트 비동기 카운터 회로 및 지연

• 4 비트 카운터에 대한 타이밍

Page 49: HW (5 월  11 일 제출 )

49

비동기 카운터 특징

장점 :

– 조합 논리회로가 필요 없을 정도로 하드웨어가 간단하다

단점 :

– 플립플롭들은 동일 클럭에 변하지 않고 , 한 플립플롭의 출력이 다른 플립플롭의 클럭으로 동작하기 때문에 지연시간이 길어지게 된다 .

– 시스템의 상태는 모든 플립플롭의 천이가 완료될 때까지 결정되지 않는다 .

Page 50: HW (5 월  11 일 제출 )

50

7.4 상태표와 상태도의 유도

예문 6 : 입력 x 와 출력 z 를 갖는 시스템으로 , 최소한 3 클럭 주기동안 연속하여 x 가 1 이었을 때만 z 가 1 이 된다 .

• 입력된 내용을 메모리에 저장하는 2 가지 방법

1. 이전 세 개의 입력을 저장

2. 연속된 1 의 갯 수를 메모리에 저장

Page 51: HW (5 월  11 일 제출 )

51

방법 1: 최근 세 입력 값을 저장

q1: 현재 입력보다 3 클럭 앞의 값

q2: 현재 입력보다 2 클럭 앞의 값

q3: 현재 입력보다 1 클럭 앞의 값

즉 . x 입력이 매 클럭마다 q3, q2, q1 로 shift 되어 들어간다 .

표 7.10 3 개의 플립플롭 상태표

Page 52: HW (5 월  11 일 제출 )

52

방법 2: 연속된 1 의 개 수의 상태를 저장

• 1 의 개 수에 대한 3 가지의 상태

A 없다 , 최근 입력이 0B 1 번C 2 번C 3 번 이상

그림 7.12 상태도와 상태표

Page 53: HW (5 월  11 일 제출 )

53

방법 1 과 방법 2 의 비교

• 방법 1

– 8 개의 상태 -> 3 개의 플립플롭 필요

– 연속된 1 의 수가 25 개일 때의 문제로 바뀌면 , 최근 25 개의 입력을 저장해야 하고 225 행의 상태 표가 필요 . -> 25 개의 플립플롭

• 방법 2

– 3 개의 상태 -> 2 개의 플립플롭 필요

– 연속된 1 의 수가 25 개일 때의 문제로 바뀌면 , 26 개 상태가 필요 .

-> 5 개의 플립플롭

Page 54: HW (5 월  11 일 제출 )

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

Page 55: HW (5 월  11 일 제출 )

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

Page 56: HW (5 월  11 일 제출 )

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 의 계산