Você está na página 1de 16

Universidade Federal de Santa Catarina

Centro Tecnolgico CTC


Departamento de Engenharia Eltrica
http://gse.ufsc.br

EEL7020 Sistemas Digitais

Prof. Eduardo Augusto Bezerra


Eduardo.Bezerra@eel.ufsc.br

Florianpolis, agosto de 2012.

Sistemas Digitais

Uso de FSMs no controle do fluxo


de execuo de sistemas digitais.
Estudo de caso: Projeto de Calculadora.

EEL7020 Sistemas Digitais

2/16

Objetivos do laboratrio
1. Entender o uso de FSMs como estrutura de controle do
fluxo de operaes de um circuito combinacional.
2. Implementar uma FSM em VHDL para controlar as
operaes da calculadora desenvolvida nas aulas
anteriores.

EEL7020 Sistemas Digitais

3/16

Tarefa a ser realizada na aula prtica

EEL7020 Sistemas Digitais

4/16

Definio do problema: calculadora com


entrada de dados reduzida
Para realizar as operaes, alguns componentes da
calculadora desenvolvida nas aulas anteriores utilizam:
as chaves SW(7..0) para leitura do operando A, e
as chaves SW(15..8) para leitura do operando B.
Visando reduzir a quantidade de chaves no projeto de
uma placa, solicita-se utilizar apenas um conjunto de 8
chaves, SW(7..0), para leitura dos dois operandos.
A seleo da operao desejada continua sendo
realizada pelas chaves SW(17..16).
EEL7020 Sistemas Digitais

5/16

Entrada de dados para realizar uma soma


Entrada de dados na calculadora original (aulas anteriores):

Operao
SW(17..16)

Operando B
SW(15..8)

Operando A
SW(7..0)

Enter Reset
Key(1) Key(0)

Entrada de dados na nova calculadora modificada:

Operao
SW(17..16)

Operando A
Operando B
SW(7..0)
EEL7020 Sistemas Digitais

Enter Reset
Key(1) Key(0)
6/16

Novo Registrador e FSM para controle do fluxo de operaes


No slide a seguir, um registrador (em vermelho) adicionado na
entrada para armazenar o primeiro operando para operaes
que necessitam dois operandos.
Algumas observaes:

No necessrio alterar o VHDL de nenhum componente.


No arquivo top_calc.vhd, deve ser includo um novo
componente Registrador, baseado nos existentes.
Devem ser realizadas alteraes em alguns port maps,
visando a conexo do novo registrador aos demais
componentes existentes, e tambm s entradas.

Notar tambm que os sinais de habilitao de registradores,


seleo de multiplexador, entre outros, foram desconectados,
visando a incluso de um controle automtico do fluxo de
operaes por intermdio de uma FSM.
EEL7020 Sistemas Digitais

7/16

8
8

Operandos

EN

F = A xor B

Decod.

7-seg

HEX1

SW(7 downto 0)

F1

00

F2

01

F3

Mux

F4

10

F(3..0)

11

EN

2
8

Decod.
7-seg

HEX0

sel
8

F= not A

F(7..0)
D

EN

Registrador

F(7..4)

Registrador

top_calc.vhd

Registrador

EN

F = A or B F = A + B

Registrador

LEDR(7 downto 0)

Enable_1

Clock

Reset
Seleo
daDigitais
operao
EEL7020
Sistemas

Enable_2

8/16

FSM para controle do fluxo de operaes da calculadora


No slide a seguir apresentado o diagrama de blocos do
circuito, incluindo o controlador (FSM) para gerenciar o fluxo de
operaes.
Sugesto de interface para o novo componente (FSM):
component FSMctrl
port (
Clk, Rst, Enter
: IN STD_LOGIC;
Operacao
: IN STD_LOGIC_VECTOR(1 downto 0);
Selecao
: OUT STD_LOGIC_VECTOR(1 downto 0);
Enable_1, Enable_2 : OUT STD_LOGIC
);
end component;

O top_calc.vhd passar a ter 12 componentes instanciados!


(9 Components no total).
EEL7020 Sistemas Digitais

9/16

TOPO:
SUGESTO I

top_calc.vhd
top_calc.vhd

HEX1

Operandos
SW(7 downto 0)
8

HEX0

LEDR
(7 downto 0)

Enable_1

Reset KEY(0)
Clock CLOCK_50
Enter KEY(1)
Operao SW(17..16)

Rst
Clk

Seleo

Enable_2

FSM

Mquina de estados com a funo de


Enter
controlador do fluxo de operaes
realizadas pela calculadora.
Operacao
EEL7020 Sistemas Digitais

10/16

Funcionamento da FSM (controlador)


No estado inicial, Esperando, as sadas da FSM esto desabilitadas
(Enable_1=0, Enable_2=0, Selecao=XX).
Isso garante que nenhuma atividade ocorrer na calculadora,
enquanto o usurio no fornecer os operandos e a operao.
Quando Enter (Key(1)) for 0, a FSM avana para o prximo estado,
para aguardar at o Enter voltar para 1 (boto no pressionado).
No estado Operao realizada uma transio para o prximo
estado, de acordo com a operao selecionada.
Se a operao for not A (apenas um operando), a operao
realizada, o resultado armazenado no registrador de sada
(Enable_2=1) e a FSM retorna para o estado inicial Esperando.
Para as demais operaes, a leitura do segundo operando realizada
em um estado adicional - Enable_1=1 no estado Operacao, seguido
por Enable_1=0 no estado adicional.
Para essas operaes, quando o Enter for pressionado pela segunda
vez (Key(1) = 0), o resultado escrito nos registradores de sada
(Enable_1=1), e a FSM retorna para o estado inicial Esperando.
EEL7020 Sistemas Digitais

11/16

Sugesto de FSM
Estado
Inicial
Rst = 0

EEL7020 Sistemas Digitais

12/16

library ieee; use ieee.std_logic_1164.all;


entity FSMctr is
port ( Clk, Rst, Enter : in std_logic;
Operacao: in std_logic_vector(1 downto 0);
Selecao: out std_logic_vector(1 downto 0);
Enable_1, Enable_2: out std_logicprocess (EA, Enter)
);
begin
end FSMctr;
case EA is
architecture FSM_beh of FSMctr is
when S0 =>
type states is (S0, S1, S2, S3, S4, S5,
if S6);
Enter = '1' then
signal EA, PE: states;
PE <= S0;
signal clock: std_logic;
else
signal reset: std_logic;
PE <= S1;
begin
end if;
clock <= Clk;
Enable_1='0';
reset <= Rst;
Enable_2='0';
process (clock, reset)
when S1 => ... (a fazer)
begin
when S2 =>
-- Operador
if reset = '0' then
Enable_1 <= '0'; Enable_2 <= '0';
EA <= S0;
if Operacao = "00" then
elsif clock'event and
PE <= S3; -- Fazer soma
clock = '1' then
elsif Operacao = "01" then
EA <= PE;
PE <= S4; -- Fazer or
end if;
elsif ... (a fazer)
end process;
end case;
end process;
end
FSM_beh;
EEL7020
Sistemas
Digitais
13/16

Sugesto para
implementao da
FSM em VHDL.

Controle do fluxo de operaes da calculadora


Para utilizar a calculadora necessrio:
1. Selecionar a operao desejada nas chaves SW(17..16).
2. Fornecer um valor nas chaves SW(7..0) - operando A.
3. Pressionar Enter - o botao KEY(1) ser 0 quando
pressionado.
4. Se for a operao not A, o resultado ser apresentado
nos displays de 7-segmentos e LEDs.
5. Se for operao de soma, xor ou or, fornecer o segundo
operando nas chaves SW(7..0), e pressionar Enter.
6. Aps apresentado o resultado, essa sequncia
reiniciada, voltando ao passo 1.

EEL7020 Sistemas Digitais

14/16

IMPLEMENTAO ALTERNATIVA DO TOPO!


Outra opo de implementao seria criar um novo TOPO (um
novo arquivo TOPO.vhd), contendo apenas dois componentes:
o A FSM (arquivo FSM.vhd)
o Os demais componentes (arquivo top_calc.vhd)
Essa alternativa de implementao est apresentada no
diagrama de blocos a seguir.
Notar que nessa implementao alternativa, pode ser necessrio
renomear os sinais de entrada e sada do top_calc.vhd, para
evitar o uso de SW, LEDR, HEX0 e HEX1, que passaro a ser os
integrantes da nova entity do novo arquivo TOPO.vhd
EEL7020 Sistemas Digitais

15/16

TOPO:
SUGESTO II

TOPO.vhd
top_calc.vhd
top_calc.vhd

HEX1

Operandos
SW(7 downto 0)
8

HEX0

LEDR
(7 downto 0)

Seleo

Enable_1
FSM.vhd

Reset KEY(0)
Clock CLOCK_50
Enter KEY(1)
Operao SW(17..16)

Enable_2

Rst
Clk

FSM

Mquina de estados com a funo de


Enter
controlador do fluxo de operaes
realizadas pela calculadora.
Operacao
EEL7020 Sistemas Digitais

16/16

Você também pode gostar