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

상태 머신 설계 (State Machine Design)

Jan 05, 2016

Download

Documents

menefer

상태 머신 설계 (State Machine Design). 단원목차. 1. 상태 머신 2. 제어입력을 갖지 않는 상태 머신 3. 제어입력을 갖는 상태 머신 4. ‘ Normal Open ’ 푸쉬버튼에 대한 스위치 디바운서 5. 상태 머신에서의 무사용 상태 (Unused States) 6. 교통 신호등 제어. 상태 머신 정의. 상태 머신 (State Machine) : 순차 논리부와 조합 논리부로 구성되는 동기식 순차회로 . - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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절로 처리될 수 있다 .