상태 머신 설계 (state machine design)

49
1 상상 상상 상상 (State Machine Design)

Upload: menefer

Post on 05-Jan-2016

394 views

Category:

Documents


1 download

DESCRIPTION

상태 머신 설계 (State Machine Design). 단원목차. 1. 상태 머신 2. 제어입력을 갖지 않는 상태 머신 3. 제어입력을 갖는 상태 머신 4. ‘ Normal Open ’ 푸쉬버튼에 대한 스위치 디바운서 5. 상태 머신에서의 무사용 상태 (Unused States) 6. 교통 신호등 제어. 상태 머신 정의. 상태 머신 (State Machine) : 순차 논리부와 조합 논리부로 구성되는 동기식 순차회로 . - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 상태 머신 설계 (State Machine Design)

1

상태 머신 설계(State Machine Design)

Page 2: 상태 머신 설계 (State Machine Design)

2

단원목차

1. 상태 머신2. 제어입력을 갖지 않는 상태 머신3. 제어입력을 갖는 상태 머신4. ‘Normal Open’ 푸쉬버튼에 대한 스위치

디바운서 5. 상태 머신에서의 무사용 상태 (Unused States)6. 교통 신호등 제어

Page 3: 상태 머신 설계 (State Machine Design)

3

상태 머신 정의• 상태 머신 (State Machine) : 순차 논리부와 조합

논리부로 구성되는 동기식 순차회로 .• 출력과 내부 플립플롭은 클록이나 다른 제어입력에

따라 미리 정해진 순서상태로 진행한다 .• 상태변수 (State Variable) : 변수들은 현재상태를

결정하는 상태머신 ( 플립플롭 ) 에 유지된다 .• 기본적인 유한상태머신 (FSM) 은 머신의 현재상태 값을

지니고 있는 메모리 요소 ( 플립플롭 ) 와 머신의 다음상태를 제어하는 제어요소 ( 클록 , 입력 , 현재상태 ) 를 가진다 .

Page 4: 상태 머신 설계 (State Machine Design)

4

상태 머신 종류• 무어머신 (Moore Machine): 출력이 단지 FSM 의 순차로직 (FF) 에 의해서 만 결정되는 머신 .• 밀리머신 (Mealy Machine): 출력이 FSM의 순차로직과 조합로직 모두에 의존하는 머신 .• 카운터는 FSM 의 매우 단순한 형태이다 .• MPU 명령어 디코더와 시이퀀서는 FSM의 꽤 복잡한 예이다 .

Page 5: 상태 머신 설계 (State Machine Design)

5

무어 머신 (Moore Machine)

출력은 단지 머신 메모리부의 현재상태에 의해서만 결정된다 . 무어 머신의 출력은 시스템 클록에 동기화 된다 .

Page 6: 상태 머신 설계 (State Machine Design)

6

밀리 머신 (Mealy Machine)

출력은 조합 논리부 뿐만 아니라 , 순차 메모리 부로부터 결정된다 . 밀리 머신의 출력은 시스템 클록과 비동기적으로 바뀔 수 있다 .

Page 7: 상태 머신 설계 (State Machine Design)

7

FSM 설계 기법

• 고전적 설계 : 플립플롭의 입력제어로직을 결정하기 위해서 상태표 , 플립플롭 여기표 , 카르노 맵 등을 사용한다 .• VHDL 설계 : Case 문 또는 IF THEN ELSE 문 , 논리합성 툴을 사용한다 .

Page 8: 상태 머신 설계 (State Machine Design)

8

고전적 설계 방법• 실제 문제를 정의한다 .• 문제를 구현하기 위해 상태도를 그린다 .• 상태표를 작성한다 . 상태표에는 모든 현재상태와 이진순서의 입력이 기술되고 , 상태도에 따른 다음상태와 출력이 정의된다 .• 현재상태에서 다음상태로의 천이를 결정하는 플립플롭 입력을 결정하기 위해 플립플롭 여기표를 사용한다 .• 각 현재상태와 입력조합에 대한 출력 값을 찾는다 .• 부울식을 간략화 하여 플립플롭 입력과 출력 및 설계로직을 단순화 한다 .

Page 9: 상태 머신 설계 (State Machine Design)

9

FSM 설계 예 (Gray code counter)

Gray code encoder

State diagram

Based on state table

Page 10: 상태 머신 설계 (State Machine Design)

10

FF Input equations =>D0 = !Q2 !Q1 + Q2 Q1, D1 = Q1 !Q0 + !Q2 Q0, D2 = Q1 !Q0 + Q2 Q0

Draw a circuit diagram

Page 11: 상태 머신 설계 (State Machine Design)

11

그레이 코드 카운터의 FSM VHDL

Enumerated State (type STATE_TYPE)

Enumerated type : User-defined type in VHDL

Page 12: 상태 머신 설계 (State Machine Design)

12

열거형 (Enumerated Type) 예TYPE DIRECTION IS (up, down, left, right);

다음으로 type DIRECTION 을 position( 임의의 이름 ) 이름으로 signal 을 정의 할 수 있다 .

SIGNAL position : DIRECTION;

=> IF 문 이나 다른 구문으로 signal “position” 에 type DIRECTION 의 4 가지 중 하나를 할당 할 수 있다 .

IF (x=‘0’ and y=‘0’) THEN position <= down;

ELSIF (x=‘0’ and y=‘1’) THEN position <= left;

ELSIF (x=‘1’ and y=‘0’) THEN position <= up;

ELSE position <= right;

END IF;

Page 13: 상태 머신 설계 (State Machine Design)

13

Note the Output Assignments are made outside of the Process Concurrently

Page 14: 상태 머신 설계 (State Machine Design)

14

그레이 코드 카운터의 또 다른 FSM VHDL

Page 15: 상태 머신 설계 (State Machine Design)

15

Page 16: 상태 머신 설계 (State Machine Design)

16

제어입력을 갖는 FSM

Mealy machine

Page 17: 상태 머신 설계 (State Machine Design)

17

State table Flip-flop excitation table

State diagram

J = /Q•/in1 + Q•/in1 = /in1K = 1Out1 = /Q•/in1Out2 = Q•/in1 + Q•in1 = Q

Page 18: 상태 머신 설계 (State Machine Design)

18

Synchronized with system clock

Asynchronized with system clock

Page 19: 상태 머신 설계 (State Machine Design)

19

Modified circuit and Simulation results

Synchronized with system clock

Page 20: 상태 머신 설계 (State Machine Design)

20

상태 머신 펄서 (SM Pulser) VHDL

Page 21: 상태 머신 설계 (State Machine Design)

21

상태 머신 펄서 VHDL ( 계속 )

Page 22: 상태 머신 설계 (State Machine Design)

22

상태 머신 펄서의 시뮬레이션

Page 23: 상태 머신 설계 (State Machine Design)

23

단발 펄스 발생기 (Single Pulse Generator)

State diagram

present state input next state sync. input output Q(t) sync Q(t+1) D pulse

0 0 1 1 1 0 1 0 0 0 1 0 1 1 0 1 1 0 0 0

State table

D = /syncPulse = /Q•/sync Asynchronized with system clock

Page 24: 상태 머신 설계 (State Machine Design)

24

시뮬레이션 결과

디바운스 회로를 갖는 단발 펄스 발생기

Page 25: 상태 머신 설계 (State Machine Design)

25

수정된 단발 펄스 발생기

Synchronized with system clock

Page 26: 상태 머신 설계 (State Machine Design)

26

단발 펄스 발생기 VHDL

Page 27: 상태 머신 설계 (State Machine Design)

27

단발 펄스 발생기의 시뮬레이션

Page 28: 상태 머신 설계 (State Machine Design)

28

스위치 디바운스• 스위치 접촉으로부터의 기계적인 “진동 ( 바운스 )” 을 제거하기 위해 사용되는 디지털 회로 .• 스위치가 닫힐 때 , 접촉 바운스는 잘못된 천이를 야기 시킨다 .

Page 29: 상태 머신 설계 (State Machine Design)

29

쉬프트 레지스터 디바운스• 쉬프트 레지스터는 저속 클록 (T = 2.6mS) 으로 글리치 ( 바운스 )를 지연시키기 위해 사용될 수 있다 .• 쉬프트 레지스터 입력에 스위치가 연결되고 , 그 입력은 4- 비트 레지스터를 통해 클럭킹 된다 .• 쉬프트 레지스터의 출력은 입력과 비교된 후 , 만약 동일하면 쉬프 레지스터는 계속 로드된다 .• 스위치가 바운스할 때 , 쉬프트 레지스터의 입력과 출력이 서로 상이하면 , 레지스터는 지연을 삽입하기 위해 로딩을 중단한다 .• 쉬프트 레지스터의 로딩을 제어하기 위한 비교는 XNOR 게이트에 의해 수행된다 .• FSM 은 pb_in 과 pb_out 의 비교과정을 위해 사용된다 .• 스위치 접촉이 안정화될 때 , pb_in = pb_out 은 상태머신을 4가지 상태로 진행시킨다 .(S0, S1, S2, S3, S0).• 만약 스위치가 바운싱될 때 , pb_in pb_out 은 상태머신을 S0로 리셋 시킨다 .

Page 30: 상태 머신 설계 (State Machine Design)

30

쉬프트 레지스터 디바운스 회로pb_in

10ms

active-high synchronous load

타이밍 값은 arbitrary value 임 ( 무시 )

Page 31: 상태 머신 설계 (State Machine Design)

31

LPM 을 사용한 쉬프트 레지스터 디바운서 VHDL

Page 32: 상태 머신 설계 (State Machine Design)

32

쉬프트 레지스터 디바운서 VHDL( 계속 )

Page 33: 상태 머신 설계 (State Machine Design)

33

쉬프트 레지스터 디바운서 VHDL( 계속 )

Page 34: 상태 머신 설계 (State Machine Design)

34

쉬프트 레지스터 디바운서 시뮬레이션

Page 35: 상태 머신 설계 (State Machine Design)

35

쉬프트 레지스터 디바운서 행위적 (Behavioral) VHDL

• 만약 pb_in = pb_out 이면 , 머신은 다음상태로 진행한다 . 그러나 , 출력은 단지 S3 상태에서 반대상태로 바뀐다 . • 만약 pb_in pb_out 이면 , 머신은 초기상태로 회귀한다 .

Page 36: 상태 머신 설계 (State Machine Design)

36

쉬프트 레지스터 디바운서 행위적 VHDL( 계속 )

Page 37: 상태 머신 설계 (State Machine Design)

37

쉬프트 레지스터디바운서 행위적 VHDL( 계속 )

Page 38: 상태 머신 설계 (State Machine Design)

38

Switch debouncer

Page 39: 상태 머신 설계 (State Machine Design)

39

미사용 상태 (Unused States) • 일부 모듈러스 카운터 (MOD-10 과 같은 ) 는 카운터 순서 중 사용하지 않는 상태를 가진다 . • MOD-10 카운터는 4-bit 에 기초하여 6 개의 ‘ unused states (1010, 1011….1111)’ 를 가진다 . • FSM 또한 상태도에서 5 개의 버블만을 갖는 상태머신처럼 미사용 상태를 가질 수 있다 . 이러한 FSM 은 여전히 이들 5 가지 상태를 표현하기 위해 3 비트를 요구하고 , 3 가지는 미사용 상태로 남겨질 것이다 .• 이들 미사용 상태는 don’t cares (X) 또는 특정한 초기 값으로 규정될 수 있다 .

Page 40: 상태 머신 설계 (State Machine Design)

40

미사용 상태 예 (Two Pulse Generator)

States (111), (110),(101), (100), (011)=>Unconditionaltransition

표 10.6, Fig. 10.34 참조

D2 = /Q2•Q1•Q0

D1 = /Q2 •Q1 •/Q0 + /Q2 •/Q1 •/in1D0 = /Q2 •/Q0 •in1 + /Q2 •/Q1•in1Out1 = /Q2 •Q1 •Q0

Out2 = Q2 •/Q1 •/Q0

Two-pulse generator

Page 41: 상태 머신 설계 (State Machine Design)

41

Two pulse generator

조합회로 출력

Page 42: 상태 머신 설계 (State Machine Design)

42

Buried node

조합회로 출력 ( 약 1-clk 씩 먼저 출력 )

Page 43: 상태 머신 설계 (State Machine Design)

43

미사용 상태 VHDL (Two Pulse Generator)

Page 44: 상태 머신 설계 (State Machine Design)

44

계속 =>

Page 45: 상태 머신 설계 (State Machine Design)

45

GDF

VHDL

Page 46: 상태 머신 설계 (State Machine Design)

46

교통 신호등 FSM

• FSM 은 북 - 남 도로와 동 - 서 도로를 제어한다 . • 각 도로에 대해 각각 적 , 녹 , 황의 3 개의 출력을 발생한다 (nsr, nsy, nsg 와 ewr, ewy, ewg). 단 , Low = ON.• Timer 입력은 라이트 사이클의 지속시간을 제어한다 (timer = 1 은 S0에서 S1 으로 또는 S2 에서 S3 로의 천이 ).• 라이트가 녹색일 때 (S0(EW) 혹은 S2(NS)), 다른 신호등은 적색이다 .• 황색에서 적색 , 적색에서 녹색으로의 무조건 천이가 있다 .• 클록 사이클은 4-Clocks Green, 1-Clock Yellow, 5-Clocks Red 이다 .

N-SE-W

N-SE-W

N-SE-W

N-SE-W

Page 47: 상태 머신 설계 (State Machine Design)

47

RR

GG Y

Y

Altera UP-125.175MHz

0.75Hz

Timer

(s0) (s1) (s2) (s3) (s0)

N-SE-W

N-SE-W

N-SE-W

N-SE-W

Page 48: 상태 머신 설계 (State Machine Design)

48

MOD-5 카운터

TIMER

Page 49: 상태 머신 설계 (State Machine Design)

49

Summary

State machine 은 현재상태를 저장하는 메모리부와 다음상태로의 천이를 결정하는 제어부로 구성된 동기식 순차회로이다 .

State machine 상의 상태이름은 숫자적으로 (s0, s1, s2, …) 또는 문자적으로 (start,idle, read, write,…) 명명될 수 있다 . 상태이름은 상태변수의 값과는 무관하다 .

상태변수의 값은 enumerated type definition 으로 정의 될 수 있다 .

State machine 의 VHDL 구현에서 임의의 unused state 들은 CASE 문내의 others절로 처리될 수 있다 .