IC-UNICAMP Finite State Machines Mixed Style RTL Modeling Extraído da George Mason Univ. ECE 545 Lecture 5 MC 603/613 - 2006 1-1

Download Report

Transcript IC-UNICAMP Finite State Machines Mixed Style RTL Modeling Extraído da George Mason Univ. ECE 545 Lecture 5 MC 603/613 - 2006 1-1

IC-UNICAMP
Finite State Machines
Mixed Style RTL Modeling
Extraído da George Mason Univ.
ECE 545
Lecture 5
MC 603/613 - 2006
1-1
IC-UNICAMP
Finite State Machines (FSMs)
• Any Circuit with Memory Is a Finite State
Machine
– Even computers can be viewed as huge FSMs
• Design of FSMs Involves
– Defining states
– Defining transitions between states
– Optimization / minimization
• Above Approach Is Practical for Small FSMs
Only
MC 603/613 - 2006
1-2
Máquina de Estados
IC-UNICAMP
Circuito Sequencial Síncrono Genérico
Máquina de Moore
Máquina de Mealy
X
CC
Si+1
FF
X
Si
CC
Saída Y muda apenas
na transição do clock
MC 603/613 - 2006
Y
Y
CC
Si+1
FF
Si
Saída Y pode mudar em
qualquer instante, em
função da entrada X
1-3
IC-UNICAMP
Mealy
entr / saída
Síntese de uma máquina de estados
S0
Moore
entr
S3
S1
Estado

Entradas
Atual
Próximo
S0
S2
S1
Saídas
S2
Diagrama de Transição de Estados
MC 603/613 - 2006
Tabela de Transição de Estados
1-4
Síntese de uma máquina de estados
IC-UNICAMP
Estado
Atual
Próximo
00
01
10
Entradas
Saídas
Codificação dos estados
• S0 = 00 etc
Equações booleanas dos circuitos combinacionais
• Si+1 = fS (Si, X)
• Y = fY (Si, X)
(em maq. de Moore, só S)
• Sintetizar os CCs
• Elementos de memória podem ser
FF-D ou FF-JK
MC 603/613 - 2006
1-5
Moore FSM
IC-UNICAMP
• Output Is a Function of Present State Only
Inputs
Next State
function
Next State
clock
reset
Present State
Register
Output
function
MC 603/613 - 2006
Present State
Outputs
1-6
Mealy FSM
IC-UNICAMP
• Output Is a Function of a Present State and
Inputs
Inputs
Next State
function
Next State
clock
reset
Present State
Register
Output
function
MC 603/613 - 2006
Present State
Outputs
1-7
Moore Machine
IC-UNICAMP
transition
condition 1
state 1 /
output 1
MC 603/613 - 2006
state 2 /
output 2
transition
condition 2
1-8
Mealy Machine
IC-UNICAMP
transition condition 1 /
output 1
state 2
state 1
transition condition 2 /
output 2
MC 603/613 - 2006
1-9
Moore vs. Mealy FSM (1)
IC-UNICAMP
• Moore and Mealy FSMs Can Be Functionally
Equivalent
– Equivalent Mealy FSM can be derived from Moore
FSM and vice versa
• Mealy FSM Has Richer Description and
Usually Requires Smaller Number of States
– Smaller circuit area
MC 603/613 - 2006
1 - 10
Moore vs. Mealy FSM (2)
IC-UNICAMP
• Mealy FSM Computes Outputs as soon as
Inputs Change
– Mealy FSM responds one clock cycle sooner than
equivalent Moore FSM
• Moore FSM Has No Combinational Path
Between Inputs and Outputs
– Moore FSM is more likely to have a shorter critical
path
MC 603/613 - 2006
1 - 11
Moore FSM - Example 1
IC-UNICAMP
• Moore FSM that Recognizes Sequence “10”
0
1
S0 / 0
1
reset
Meaning
of states:
S0: No
elements
of the
sequence
observed
MC 603/613 - 2006
0
S1 / 0
0
S1: “1”
observed
1
S2 / 1
S2: “10”
observed
1 - 12
Mealy FSM - Example 1
IC-UNICAMP
• Mealy FSM that Recognizes Sequence “10”
0/0
1/0
S0
reset
Meaning
of states:
MC 603/613 - 2006
1/0
S1
0/1
S0: No
elements
of the
sequence
observed
S1: “1”
observed
1 - 13
IC-UNICAMP
Moore & Mealy FSMs – Example 1
clock
0
1
0
0
0
S0
S1
S2
S0
S0
S0
S1
S0
S0
S0
input
Moore
Mealy
MC 603/613 - 2006
1 - 14
FSMs in VHDL
IC-UNICAMP
• Finite State Machines Can Be Easily
Described With Processes
• Synthesis Tools Understand FSM Description
If Certain Rules Are Followed
• State transitions should be described in a process
sensitive to clock and asynchronous reset signals
only
• Outputs described as concurrent statements
outside the process
MC 603/613 - 2006
1 - 15
Moore FSM
IC-UNICAMP
process(clock, reset)
Inputs
Next State
function
Next State
clock
reset
concurrent
statements
MC 603/613 - 2006
Present State
Register
Present State
Output
function
Outputs
1 - 16
Mealy FSM
IC-UNICAMP
process(clock, reset)
Inputs
Next State
function
Next State
clock
reset
concurrent
statements
MC 603/613 - 2006
Present State
Present State
Register
Output
function
Outputs
1 - 17
IC-UNICAMP
FSM States (1)
architecture behavior of FSM is
type state is (list of states);
signal FSM_state: state;
begin
process(clk, reset)
begin
if reset = ‘1’ then
FSM_state <= initial state;
elsif (clock = ‘1’ and clock’event) then
case FSM_state is
MC 603/613 - 2006
1 - 18
FSM States (2)
IC-UNICAMP
case FSM_state is
when state_1 =>
if transition condition 1 then
FSM_state <= state_1;
end if;
when state_2 =>
if transition condition 2 then
FSM_state <= state_2;
end if;
end case;
end if; end process;
MC 603/613 - 2006
1 - 19
Moore FSM - Example 1
IC-UNICAMP
• Moore FSM that Recognizes Sequence “10”
0
1
S0 / 0
reset
MC 603/613 - 2006
1
0
S1 / 0
1
S2 / 1
0
1 - 20
Moore FSM in VHDL (1)
IC-UNICAMP
TYPE state IS (S0, S1, S2);
SIGNAL Moore_state: state;
U_Moore: PROCESS (clock, reset)
BEGIN
IF(reset = ‘1’) THEN
Moore_state <= S0;
ELSIF (clock = ‘1’ AND clock’event) THEN
CASE Moore_state IS
WHEN S0 =>
IF input = ‘1’ THEN
Moore_state <= S1;
ELSE
Moore_state <= S0;
END IF;
MC 603/613 - 2006
1 - 21
IC-UNICAMP
Moore FSM in VHDL (2)
WHEN S1 =>
IF input = ‘0’ THEN
Moore_state <= S2;
ELSE
Moore_state <= S1;
END IF;
WHEN S2 =>
IF input = ‘0’ THEN
Moore_state <= S0;
ELSE
Moore_state <= S1;
END IF;
END CASE;
END IF;
END PROCESS;
Output <= ‘1’ WHEN Moore_state = S2 ELSE ‘0’;
MC 603/613 - 2006
1 - 22
Mealy FSM - Example 1
IC-UNICAMP
• Mealy FSM that Recognizes Sequence “10”
0/0
1/0
S0
reset
MC 603/613 - 2006
1/0
S1
0/1
1 - 23
IC-UNICAMP
Mealy FSM in VHDL (1)
TYPE state IS (S0, S1);
SIGNAL Mealy_state: state;
U_Mealy: PROCESS(clock, reset)
BEGIN
IF(reset = ‘1’) THEN
Mealy_state <= S0;
ELSIF (clock = ‘1’ AND clock’event) THEN
CASE Mealy_state IS
WHEN S0 =>
IF input = ‘1’ THEN
Mealy_state <= S1;
ELSE
Mealy_state <= S0;
END IF;
MC 603/613 - 2006
1 - 24
IC-UNICAMP
Mealy FSM in VHDL (2)
WHEN S1 =>
IF input = ‘0’ THEN
Mealy_state <= S0;
ELSE
Mealy_state <= S1;
END IF;
END CASE;
END IF;
END PROCESS;
Output <= ‘1’ WHEN (Mealy_state = S1 AND input = ‘0’) ELSE ‘0’;
MC 603/613 - 2006
1 - 25
Moore FSM – Example 2: State diagram
IC-UNICAMP
resetn
w = 1
w = 0
A z = 0
B z = 0
w = 0
w = 1
w = 0
C z = 1
w = 1
MC 603/613 - 2006
1 - 26
Moore FSM – Example 2: State table
IC-UNICAMP
Next state
Present
state w = 0 w = 1
A
B
C
MC 603/613 - 2006
A
A
A
B
C
C
Output
z
0
0
1
1 - 27
Moore FSM
IC-UNICAMP
process(clock, reset)
Input: w
Next State
function
Next State
clock
resetn
concurrent
statements
MC 603/613 - 2006
Present State
Register
Present State: y
Output
function
Output: z
1 - 28
Moore FSM – Example 2: VHDL code (1)
IC-UNICAMP
USE ieee.std_logic_1164.all ;
ENTITY simple IS
PORT ( clock
resetn
w
z
END simple ;
: IN STD_LOGIC ;
: IN STD_LOGIC ;
: IN STD_LOGIC ;
: OUT STD_LOGIC ) ;
ARCHITECTURE Behavior OF simple IS
TYPE State_type IS (A, B, C) ;
SIGNAL y : State_type ;
BEGIN
PROCESS ( resetn, clock )
BEGIN
IF resetn = '0' THEN
y <= A ;
ELSIF (Clock'EVENT AND Clock = '1') THEN
MC 603/613 - 2006
1 - 29
Moore FSM – Example 2: VHDL code (2)
IC-UNICAMP
CASE y IS
WHEN A =>
IF w = '0' THEN
y <= A ;
ELSE
y <= B ;
END IF ;
WHEN B =>
IF w = '0' THEN
y <= A ;
ELSE
y <= C ;
END IF ;
WHEN C =>
IF w = '0' THEN
y <= A ;
ELSE
y <= C ;
END IF ;
END CASE ;
MC 603/613 - 2006
1 - 30
Moore FSM – Example 2: VHDL code (3)
IC-UNICAMP
END IF ;
END PROCESS ;
z <= '1' WHEN y = C ELSE '0' ;
END Behavior ;
MC 603/613 - 2006
1 - 31
Moore FSM
IC-UNICAMP
process
Input: w
(w,
y_present)
process
(clock,
resetn)
concurrent
statements
MC 603/613 - 2006
Next State
function
Next State: y_next
clock
resetn
Present State
Register
Output
function
Present State:
y_present
Output: z
1 - 32
Alternative VHDL code (1)
IC-UNICAMP
ARCHITECTURE Behavior OF simple IS
TYPE State_type IS (A, B, C) ;
SIGNAL y_present, y_next : State_type ;
BEGIN
PROCESS ( w, y_present )
BEGIN
CASE y_present IS
WHEN A =>
IF w = '0' THEN
y_next <= A ;
ELSE
y_next <= B ;
END IF ;
WHEN B =>
IF w = '0' THEN
y_next <= A ;
ELSE
y_next <= C ;
END IF ;
MC 603/613 - 2006
1 - 33
Alternative VHDL code (2)
IC-UNICAMP
WHEN C =>
IF w = '0' THEN
y_next <= A ;
ELSE
y_next <= C ;
END IF ;
END CASE ;
END PROCESS ;
PROCESS (clock, resetn)
BEGIN
IF resetn = '0' THEN
y_present <= A ;
ELSIF (clock'EVENT AND clock = '1') THEN
y_present <= y_next ;
END IF ;
END PROCESS ;
z <= '1' WHEN y_present = C ELSE '0' ;
END Behavior ;
MC 603/613 - 2006
1 - 34
Mealy FSM – Example 2: State diagram
IC-UNICAMP
resetn
w = 1 z = 0
w = 0 z = 0
A
B
w = 1 z = 1
w = 0 z = 0
MC 603/613 - 2006
1 - 35
Mealy FSM – Example 2: State table
IC-UNICAMP
Next state
Output z
Present
state
w= 0
w= 1
w= 0
w= 1
A
B
A
A
B
B
0
0
0
1
MC 603/613 - 2006
1 - 36
Mealy FSM
IC-UNICAMP
process(clock, reset)
Input: w
Next State
function
Next State
clock
resetn
concurrent
statements
MC 603/613 - 2006
Present State: y
Present State
Register
Output
function
Output: z
1 - 37
Mealy FSM – Example 2: VHDL code (1)
IC-UNICAMP
LIBRARY ieee ;
USE ieee.std_logic_1164.all ;
ENTITY Mealy IS
PORT ( clock : IN
resetn : IN
w
: IN
z
: OUT
END Mealy ;
STD_LOGIC ;
STD_LOGIC ;
STD_LOGIC ;
STD_LOGIC ) ;
ARCHITECTURE Behavior OF Mealy IS
TYPE State_type IS (A, B) ;
SIGNAL y : State_type ;
BEGIN
PROCESS ( resetn, clock )
BEGIN
IF resetn = '0' THEN
y <= A ;
ELSIF (clock'EVENT AND clock = '1') THEN
MC 603/613 - 2006
1 - 38
IC-UNICAMP
Mealy FSM – Example 2: VHDL code (2)
CASE y IS
WHEN A =>
IF w = '0' THEN
y <= A ;
ELSE
y <= B ;
END IF ;
WHEN B =>
IF w = '0' THEN
y <= A ;
ELSE
y <= B ;
END IF ;
END CASE ;
MC 603/613 - 2006
1 - 39
IC-UNICAMP
Mealy FSM – Example 2: VHDL code (3)
END IF ;
END PROCESS ;
WITH y SELECT
z <= w WHEN B,
z <= ‘0’ WHEN others;
END Behavior ;
MC 603/613 - 2006
1 - 40