상태 머신 설계 (State Machine Design)

Slides:



Advertisements
Similar presentations
13 강 논리회로 2 과목 전자계산기 구조 강사 이 민 욱. 13 강 논리회로  논리회로 1. 부울 대수 (Boolean Algebra) 에서 사용하는 기본 연산자 ① 논리부정 : NOT ( ` ) 논리부정은 F = NOT A 의 표현을 F =A` 로 표현 ② 논리곱.
Advertisements

레지스터 (Register) IT CookBook, 디지털 논리회로 11. 2/31 학습목표  네 가지 기본형 레지스터의 동작을 이해한다.  양방향 시프트 레지스터의 동작을 이해한다.  레지스터의 주요 응용분야를 이해한다.  MSI 시프트 레지스터 IC 의 외부접속.
레지스터 (Register) IT CookBook, 디지털 논리회로 학습목표 및 목차 네 가지 기본형 레지스터의 동작을 이해한다. 양방향 시프트 레지스터의 동작을 이해한다. 레지스터의 주요 응용분야를 이해한다. MSI 시프트 레지스터 IC 의 외부접속.
임진수 이현철. 회로 설계 과정 합성 ?  합성 도구가 주어진 HDL 코드를 Library 에 맞춰 회로로 변경시켜주는 과정  모든 코드가 합성되는 것은 아니다 !
10 카운터 (Counter) IT CookBook, 디지털 논리회로.
1 08 Simple Sequential Logic Design with Finite State Machines & Timing Design.
9 동기순서논리회로 IT CookBook, 디지털 논리회로.
VHDL 프로그램은 비동기 Reset을 갖는 D 플립플롭을 구현한 것이다
카르노 맵을 이용한 간략화 2) 입력변수가 n이면 2n 개의 빈칸 작성 3) 민텀은 “1”, 맥스텀은 “0”을 해당칸에 기입
5장. 순차 논리 회로 Lecture #5.
래치(latch) S R Q Q 1 기본적인 플립플롭(basic flip flop)으로 1비트의 정보를 저장할 수 있는 소자
Sequential logic circuit
순차로직 개요.
UNIT 15 Timer & Watch Dog 로봇 SW 교육원 조용수.
제4장 조합논리회로 내용 4.1 조합논리회로 설계 과정 4.2 산술회로 : 가산기(adder)/ 감산기(subtractor)
디지털논리실습 기본 논리 게이트 부울대수 조합회로.
Multiplexer 설계.
VHDL Description D-latch C=1 일 때 Q 는 D의 입력 값 이 전달된다.
오브젝트 플립플롭 IT CookBook, VHDL을 이용한 디지털 회로 입문.
19장. 원격 조정 로봇 설계 김용애 1조 김정은 이동한 이재흔.
Chapter 5 순차회로.
논리 회로 설계 기초 (2) Lecture #2.
순차회로 모델링 Sun, Hye-Seung.
VHDL Design : Barrel Shifter
오브젝트 조합 회로 IT CookBook, VHDL을 이용한 디지털 회로 입문.
쉬프트 레지스터 용어 Shift Register: N-bit 데이터를 직렬 혹은 병렬로 N-bit 레지스터에 이동 저장하는 동기식 순차회로. Left Shift: 쉬프트 레지스터에서의 데이터의 이동이 오른쪽에서 왼쪽으로 (MSB방향으로) 이동하는 동작으로 한 클록 펄스마다.
RS 및 D 플립플롭 RS Flip Flop 래치는 어떤 입력 레벨에 의해서 제어되는 데 플립플롭은 클록 입력이라고
JK 및 T 플립플롭 JK Flip-Flop JK 플립플롭은 디지털 시스템에서 가장 많이 사용되고 있는 플립플롭으로
디지털회로설계 16. 동기식 카운터.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
FSM 설계.
DK-128 ADC 실습 아이티즌 기술연구소
DK-128 실습 EEPROM 제어 아이티즌 기술연구소
Stop Watch <결과 보고서>
디지털논리실습.
2장 논리 회로와 활용 2장 논리회로와 활용.
학습 목표 비동기식, 동기식 카운터의 설계 과정 및 동작을 이해한다. 링 카운터와 존슨 카운터의 동작을 이해한다.
누산기를 이용한 직렬(Serial) 덧셈기
VHDL Mealy and Moore model
디지털회로설계 (15주차) 17. 시프트 레지스터와 카운터 18. 멀티바이브레이터 * RAM & ROM.
8장 대형 순차회로 문제의 해법 시프트 레지스터 카운터 ASM 도를 이용한 설계 One Hot encoding 복잡한 예제.
플립 플롭 회로.
6장 순차회로 시스템 상태표와 상태도 래치와 플립플롭 순차 시스템의 해석.
플립플롭, 카운터, 레지스터 순서회로 플립플롭 카운터 레지스터.
디지털회로설계_강의안1 1. NOT, OR, AND 게이트.
오브젝트 순서회로 IT CookBook, VHDL을 이용한 디지털 회로 입문.
동기식 카운터 설계.
9. 카운터 9-1 비동기 카운터 9-2 동기 카운터 9-3 업/다운 동기 카운터 9-4 동기카운터 설계
논리회로 설계 및 실험 5주차.
6 레지스터와 카운터.
DK-128 실습 내부 EEPROM 제어 아이티즌 기술연구소 김태성 연구원
안산1대학 제 2 장 디지털 논리회로.
제 15 장 디지털 회로 (Digital Circuits)
6. 레지스터와 카운터.
제4강 처리장치 1.
13장 CTC and DMA Slide 1 (of 10).
Chapter 03 순서 논리회로.
논리회로 설계 및 실험 6주차.
ATmega128의 특징 아이티즌 기술연구소
컴퓨터 계측 및 실습 디지털 출력 영남대학교 기계공학부.
DK-128 개발환경 설정 아이티즌 기술연구소
RAM RAM 읽기 동작(read) RAM 쓰기 동작(write) 1. 주소선을 통해 주소값 입력.
컴퓨터구조 (chap2 그림모음).
논리회로 설계 및 실험 4주차.
시리얼 UART 정리 정보통신•컴퓨터 공학부 송명규
디지털논리 회로 1차설계 예비보고서 2006 송만성 2007이상진 2007배정준 2007김효진.
컴퓨터는 어떻게 덧셈, 뺄셈을 할까? 2011년 10월 5일 정동욱.
아날로그 신호를 디지털 신호로 변환하는 A/D 변환기 A/D 변환 시 고려하여 할 샘플링 주파수 D/A 변환기
버스와 메모리 전송 버스 시스템 레지스터와 레지스터들 사이의 정보 전송을 위한 경로
디 코 더 n비트의 2진 코드를 입력으로 받아들여 최대 2n개의 서로 다른 정보로 바꿔 주는 조합 회로
Presentation transcript:

상태 머신 설계 (State Machine Design)

단원목차 1. 상태 머신 2. 제어입력을 갖지 않는 상태 머신 3. 제어입력을 갖는 상태 머신 4. ‘Normal Open’ 푸쉬버튼에 대한 스위치 디바운서 5. 상태 머신에서의 무사용 상태(Unused States) 6. 교통 신호등 제어

상태 머신 정의 상태 머신(State Machine) : 순차 논리부와 조합 논리부로 구성되는 동기식 순차회로. 출력과 내부 플립플롭은 클록이나 다른 제어입력에 따라 미리 정해진 순서상태로 진행한다. 상태변수(State Variable) : 변수들은 현재상태를 결정하는 상태머신(플립플롭)에 유지된다. 기본적인 유한상태머신(FSM)은 머신의 현재상태 값을 지니고 있는 메모리 요소(플립플롭)와 머신의 다음상태를 제어하는 제어요소(클록, 입력, 현재상태)를 가진다.

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

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

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

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

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

FSM 설계 예(Gray code counter) Gray code encoder State diagram Based on state table

FF Input equations => D0 = !Q2 !Q1 + Q2 Q1, D1 = Q1 !Q0 + !Q2 Q0, D2 = Q1 !Q0 + Q2 Q0 Draw a circuit diagram

그레이 코드 카운터의 FSM VHDL Enumerated type : User-defined type in VHDL Enumerated State (type STATE_TYPE)

열거형(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;

Note the Output Assignments are made outside of the Process Concurrently

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

제어입력을 갖는 FSM Mealy machine

State table Flip-flop excitation table State diagram J = /Q•/in1 + Q•/in1 = /in1 K = 1 Out1 = /Q•/in1 Out2 = Q•/in1 + Q•in1 = Q

Synchronized with system clock Asynchronized with system clock

Modified circuit and Simulation results Synchronized with system clock

상태 머신 펄서(SM Pulser) VHDL

상태 머신 펄서 VHDL (계속)

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

단발 펄스 발생기(Single Pulse Generator) State table 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 D = /sync Pulse = /Q•/sync Asynchronized with system clock

시뮬레이션 결과 디바운스 회로를 갖는 단발 펄스 발생기

수정된 단발 펄스 발생기 Synchronized with system clock

단발 펄스 발생기 VHDL

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

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

쉬프트 레지스터 디바운스 쉬프트 레지스터는 저속 클록(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로 리셋 시킨다.

쉬프트 레지스터 디바운스 회로 pb_in 10ms active-high synchronous load 타이밍 값은 arbitrary value 임(무시)

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

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

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

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

쉬프트 레지스터 디바운서 행위적(Behavioral) VHDL 만약 pb_in = pb_out 이면, 머신은 다음상태로 진행한다. 그러나, 출력은 단지 S3상태에서 반대상태로 바뀐다. 만약 pb_in  pb_out 이면, 머신은 초기상태로 회귀한다.

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

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

Switch debouncer

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

미사용 상태 예(Two Pulse Generator) States (111), (110), (101), (100), (011) => Unconditional transition 표10.6, Fig. 10.34 참조 D2 = /Q2•Q1•Q0 D1 = /Q2 •Q1 •/Q0 + /Q2 •/Q1 •/in1 D0 = /Q2 •/Q0 •in1 + /Q2 •/Q1•in1 Out1 = /Q2 •Q1 •Q0 Out2 = Q2 •/Q1 •/Q0

Two pulse generator 조합회로 출력

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

미사용 상태 VHDL (Two Pulse Generator)

계속 =>

GDF VHDL

교통 신호등 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-S E-W N-S E-W N-S E-W N-S E-W

Altera UP-1 25.175MHz 0.75Hz N-S E-W N-S E-W N-S E-W N-S E-W R G Y G Y Timer R G Y G Y R (s0) (s1) (s2) (s3) (s0)

MOD-5 카운터 TIMER

Summary State machine은 현재상태를 저장하는 메모리부와 다음상태로의 천이를 결정하는 제어부로 구성된 동기식 순차회로이다. State machine 상의 상태이름은 숫자적으로(s0, s1, s2, …) 또는 문자적으로(start, idle, read, write,…) 명명될 수 있다. 상태이름은 상태변수의 값과는 무관하다. 상태변수의 값은 enumerated type definition 으로 정의 될 수 있다. State machine의 VHDL 구현에서 임의의 unused state 들은 CASE 문내의 others 절로 처리될 수 있다.