38
1 8 장 장장 장장장장 장장장 장장 1) 장장장 장장장장 2) 장장장 3) ASM 장장 장장장 장장 4) One Hot encoding 5) 장장장 장장

8 장 대형 순차회로 문제의 해법

Embed Size (px)

DESCRIPTION

8 장 대형 순차회로 문제의 해법. 시프트 레지스터 카운터 ASM 도를 이용한 설계 One Hot encoding 복잡한 예제. 시프트 레지스터. 그림 8.1 간단한 시프트 레지스터. 추적 8.1 시프트 레지스터 타이밍. 부하 (load) 를 줄이는 NOT 게이트가 있는 시프트 레지스터. 클럭 부하 : 1 ( 앞에서는 4) 입력 x 부하 : 1 ( 앞에서는 2). 시프트 레지스터 저장장치. - PowerPoint PPT Presentation

Citation preview

Page 1: 8 장 대형  순차회로 문제의 해법

1

8 장 대형 순차회로 문제의 해법

1) 시프트 레지스터

2) 카운터

3) ASM 도를 이용한 설계

4) One Hot encoding5) 복잡한 예제

Page 2: 8 장 대형  순차회로 문제의 해법

2

시프트 레지스터

그림 8.1 간단한 시프트 레지스터

추적 8.1 시프트 레지스터 타이밍

Page 3: 8 장 대형  순차회로 문제의 해법

3

부하 (load) 를 줄이는 NOT 게이트가 있는 시프트 레지스터

– 클럭 부하 : 1 ( 앞에서는 4)– 입력 x 부하 : 1 ( 앞에서는 2)

Page 4: 8 장 대형  순차회로 문제의 해법

4

시프트 레지스터 저장장치

– LOAD = 0 → 데이터는 n 개의 플립 플롭 순회 (circular shift)– LOAD = 1 → 새로운 x 값이 저장

Page 5: 8 장 대형  순차회로 문제의 해법

5

74164 직렬입력 병렬출력 시프트 레지스터

– Active low 정적 클리어 입력 – 병렬 (parallel) 출력 – 모뎀 입력 포트에 사용

Page 6: 8 장 대형  순차회로 문제의 해법

6

병렬입력 (parallel-in) 시프트 레지스터

– 정적인 적재 (74165)• Load’ = 1, CLR’와 PRE’가 모두 1 → 시프트

• Load’ = 0 → 클럭 비활성화 , PRE’= IN2’, CLR’= IN2, 플립플롭 출력 = IN2 – 동기적인 적재 (74166)

• Enable’ = 0 → 클럭 전달 , 아니면 클럭이 인가되지 않음 • Enable’ = 0, Load’ = 0 → IN2 가 q2 에 저장 , • Load’가 1 → 시프트

– 직렬출력

Page 7: 8 장 대형  순차회로 문제의 해법

7

오른쪽 /왼쪽 시프트 레지스터 (74194)

Page 8: 8 장 대형  순차회로 문제의 해법

8

예제 8.1 입력 x 가 7 클럭 동안 계속 변경되면 출력 z 가 1 인 시스템

– 플립 플롭 - 최근 8 클럭 동안 x 값 저장– 가장 최근 것 A, 가장 오래된 것 H– 6 개만 필요

Page 9: 8 장 대형  순차회로 문제의 해법

9

카운터

• 74161 카운터

– 동기식 카운트 , 동기식 적재 (active low) , 비동기식 (active low) 클리어– 적재 (Load = 0) : D = IND

C = INC

B = INB

A = INA

– Count (ENP=1, ENT=1)– OV: 오버플로우 출력

Page 10: 8 장 대형  순차회로 문제의 해법

10

8- 비트 카운터 (74161 두개를 사용 )

– 처음 15 클럭 동안 : 우측 카운터 ( 낮은 자리 ) 만 활성화

– 카운터 =15(0000 1111) → 오버플로우 출력 (OV)=1. 좌측 카운터 활성화

– 다음 클럭 → 우측 카운터 = 0 (OV 도 0), 좌측 카운터는 1 증가 ( 카운터

=16)– 다음 15 클럭 동안 → 우측 카운터만 증가

– 카운터 =31(0001 1111), → 좌측 카운터 다시 활성화

– 다음 클럭 → 우측 카운터 = 0 (OV 도 0), 좌측 카운터는 1 증가 ( 카운터

=32)

Page 11: 8 장 대형  순차회로 문제의 해법

11

예제 8.2 : MOD-120 카운터 (74161: 비동기 클리어 )

– 74161 카운터 사용 , 정적 클리어– 최대값보다 하나 더 카운트하고 클리어 시킨다– 120 (01111000) 에서 NAND 게이트가 클리어 신호 생성– 정적 클리어 때문에 짧은 시간 동안 120 이 나타난다

Page 12: 8 장 대형  순차회로 문제의 해법

12

예제 8.3: MOD-120 카운터 (74163: 동기식 클리어 )

– 74163 카운터 , 동기화된 클리어 – 클리어 입력 활성화 , 클럭에 맞추어 모든 플립 플롭이 0 – 119 (01110111) 감지 , 다음 클럭 펄스에서 클리어– 카운터의 120 인 상태가 나타나지 않음

Page 13: 8 장 대형  순차회로 문제의 해법

13

74191 Down/Up´ 카운터

Page 14: 8 장 대형  순차회로 문제의 해법

14

7493 비동기 이진 카운터

– 7493 16 진 (2 x 8)• 클럭 X 점 연결 → 8 진 counter, 출력 D, C, B• 클럭 Y 점 연결 , A 점 X 점 연결 → 16 진 counter

– 7490 10 진 (2 x 5)– 7492 12 진 (2 x 6)

Page 15: 8 장 대형  순차회로 문제의 해법

15

예제 8.4 : 9 번째 클럭마다 한 개의 클럭펄스를 출력하는시스템 방법 1: 74163 ( 동기식 클리어 ) 사용

– 0 1 2 3 4 5 6 7 8 0 …– 상태 8 인 동안만 D=1 → 카운터 리세트

Page 16: 8 장 대형  순차회로 문제의 해법

16

- 9 까지 카운트하고 클리어

- 출력을 D 와 clock 을 AND 하여 발생 ( 방법 1 과 같이 )

– 상태 9 의 시작 부분에 glitch 발생

예제 8.4 방법 2: 74161( 비동기식 클리어 ) 사용

– Glitch 없애기 위해 7 이 될 때 출력을 발생

Page 17: 8 장 대형  순차회로 문제의 해법

17

– 동기식 적재– 8, 9, 10, 11, 12, 13, 14, 15, 0, 8 …– 카운터 = 0 일 때 출력 1, 카운터에 8

적재

예제 8.4 방법 3: 74163 을 이용한 다른 방법

Page 18: 8 장 대형  순차회로 문제의 해법

18

예제 8.4 방법 4: 74163 이용

– OV 출력 이용 – 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, …– 카운터 =15 → OV 출력 active low 적재 신호 , 카운터에 7 적재 ( 출력 1)

Page 19: 8 장 대형  순차회로 문제의 해법

ASM 도를 이용한 설계

19

• ASM (Algorithmic State Machine) 방법– Finite machine 을 설계할 때 사용되는 방법으로 , 상태도와

유사하고 이해하기가 쉽다 .• 3 가지 기본요소

– 상태 (state), 판단 (condition check), 조건부 출력 (conditional output)

Page 20: 8 장 대형  순차회로 문제의 해법

Moore 상태도와 ASM 도

20

Page 21: 8 장 대형  순차회로 문제의 해법

Mealy 상태도와 ASM 도

21

Page 22: 8 장 대형  순차회로 문제의 해법

Serial Adder

• A, B : 8bit 시프트 레지스터• 결과 : B 레지스터

22

Page 23: 8 장 대형  순차회로 문제의 해법

직렬 덧셈기에 대한 ASM 도

• 신호 s : 덧셈과정 시작• 신호 d : 계산완료• N: 3 bit counter

23

Page 24: 8 장 대형  순차회로 문제의 해법

One Hot Encoding

• One Hot: 한 bit 만 1 이 되는 경우 ( 반대는 One Cold)– Ex) decoder output

• 한 bit 만 1 이 되도록 encoding 하게 되면 플립플롭 수가 많아지지만 설계가 쉬워진다 .

• 아래 상태도에서 각 상태에 대하여 A, B, C, D 4 개의 플립플롭을 할당하면– A* = x (A+B+C+D)– B* = x A– C* = x B– D* = x (C+D)– z = D

24

Page 25: 8 장 대형  순차회로 문제의 해법

간단한 컴퓨터 설계

• 메모리 : 명령어와 데이터를 저장– 256(28) words (1 word = 12 bits)– Address lines: A0, … A7

– r’/w : read/write 제어선• 레지스터

– 사용자 주소지정 가능한 레지스터 : B, C– 내부 레지스터

• R : 12bit 명령어 레지스터 ( 교재의 I 와 R 은 동일한 것 )• P : Program Counter• T : 12 bit temporary register

25

Page 26: 8 장 대형  순차회로 문제의 해법

간단한 컴퓨터 설계

• 명령어 형식

– OP: 명령어 코드• 00 : 메모리에서 레지스터로 로드• 01 : 레지스터에서 메모리로 저장• 10 : 메모리 내용과 레지스터 내용을 더함• 11 : 점프

– N : 레지스터 선택 비트• 0 : B 레지스터• 1 : C 레지스터

– M : 주소지정방식• 0 : 직접 주소지정• 1 : 간접 주소지정

26

Page 27: 8 장 대형  순차회로 문제의 해법

명령어 실행 단계

• 명령어 fetch– PC 내용을 주소 선으로 보냄– Read 신호– 명령어 레지스터 ( R register ) 에 저장

• PC update• 명령어 decode, operand 결정• Operand 준비• 실행

27

Page 28: 8 장 대형  순차회로 문제의 해법

28

Page 29: 8 장 대형  순차회로 문제의 해법

One Hot Encoding 방식의 제어기

29

Page 30: 8 장 대형  순차회로 문제의 해법

30

복잡한 예제

• 입력으로 들어온 연속적인 1 을 추적하여 , 같은 수만큼 1 을 출력

– AND, OR, NOT 게이트 , JK 플립 플롭 , 74191 상향 /하향 카운터 이용– 카운터로 연속적인 1 의 갯 수를 카운트하고 ( 카운터 증가 ), – 1 이 출력되면서 카운터를 감소

Page 31: 8 장 대형  순차회로 문제의 해법

31

방법 1

– x=1 → D/U=0, 카운터 증가– X=0 → D/U =1, 카운터가 0 이 아닌 동안 감소 , 출력 =1– 카운터가 15 를 넘지 않을 때만 동작

Page 32: 8 장 대형  순차회로 문제의 해법

32

방법 2

– 15 개 이상의 입력에도 , 최대 15 개의 1 이 나오도록 출력 제한– 값 =15(1111) → x=1 이라도 카운터 비활성화

Page 33: 8 장 대형  순차회로 문제의 해법

33

방법 3: 1 의 출력 완료까지 입력 무시

•플립 플롭 Q, 카운터가 감소 중이고 x 가 무시

•x = 0 Q = 0 count = 0 EN = 0 z = 0 D/U = X•x = 0 Q = 0 count = 1 EN = 1 z = 1 D/U = 1•x = 0 Q = 0 count > 1 EN = 1 z = 1 D/U = 1 Q <- 1•x = 1 Q = 0 count ≠ 15 EN = 1 z = 0 D/U = 0•x = 1 Q = 0 count = 15 EN = 0 z = 0 D/U = X•x = X Q = 1 count > 1 EN = 1 z = 1 D/U = 1•x = X Q = 1 count = 1 EN = 1 z = 1 D/U = 1 Q <- 0

•J = x (D + C + B) K = D C B A•z = Q + x Q (D + C + B + A) = Q + x (D + C + B + A)•EN = x (A B C D) + z•D/U = Q + x (D + C + B + A)

Page 34: 8 장 대형  순차회로 문제의 해법

34

방법 4: 세 개의 오른쪽 /왼쪽 시프트 레지스터 이용

– 12- 비트 시프트 레지스터– x = 1 → S0 =1, S1 = 0, 오른쪽 시프트 , 가장 왼쪽 비트에는 1 이

들어간다 – x = 0 → 왼쪽 시프트 , 오른쪽에 0 을 적재– 레지스터 수보다 많은 1 입력도 처리

Page 35: 8 장 대형  순차회로 문제의 해법

35

예제 8.7: 16 상태 (1 2 4 7 11 0 6 13 5 14 8 3 15 12 10 9) 를 순회하는 카운터

카운터 상태표

Page 36: 8 장 대형  순차회로 문제의 해법

36

방법 1: JK 플립 플롭 4 개 사용

– JD = C A + C B + B A KD = C B + C A + B A– JC = D A + D B KC = D A + D B A – JB = D + A KB = D + A – JA = D C + D C KA = D B + C B + D C B

– 2- 입력 게이트 18 개 , 3- 입력 게이트 5 개 → 50 센트 IC 7 개 , 총 비용 =$5.50

Page 37: 8 장 대형  순차회로 문제의 해법

37

방법 2: 4- 비트 동기식 카운터 (74161 과 같은 ) 와 디코더 블럭 사용

디코더 블럭 진리표

Page 38: 8 장 대형  순차회로 문제의 해법

38

방법 2 계속

– W = C B A + D B A + C B A + D B A– X = D B + D B– Y = C A + C A– Z = B A + B A

– 2- 입력 게이트 9 개 , 3- 입력 게이트 4 개 , 4- 입력 게이트 1 개– 카운터 출력 (D, C, B, A) NOT 게이트 4 개– 총 패키지 수 =6, 비용 = $3.00 + 카운터 비용– 카운터 비용 < $2.50 → 이 방법이 더 저렴