Você está na página 1de 15

Aula

SISTEMAS DIGITAIS

Linguagem de Descrição de Hardware


VHDL – Maquinas de Estados

Prof. Fernanda Gusmão de Lima Kastensmidt


fglima@inf.ufrgs.br
Aula
Maquinas de Estado 7

Tipo Melay and Moore

LOGIC + Register
saida
Process(clk, reset)
Entrada Begin
f
Proximo
CASE entrada&estado IS
estado
......
clk WHEN ... =>
Reset
estado <= Proximo estado ;
Saida <= .....;
.....
End process;
estado

clk Registradores: saida e estado

Disciplina: Sistemas Digitais – Profa. Dra. Fernanda Gusmão de Lima Kastensmidt


Aula
Maquinas de Estado 7

Tipo Melay e Moore

LOGIC
saida
Process(entrada, estado)
Entrada Begin
f Proximo estado .....
Saida <= ...;
Proximo estado <= ....;
Reset .....
End process;

REGISTER
estado Process(clk, reset)
Begin
.....
clk estado <= Proximo estado ;
.....
Registradores: estado End process;

Disciplina: Sistemas Digitais – Profa. Dra. Fernanda Gusmão de Lima Kastensmidt


Aula
Maquinas de Estado 7

Tipo Moore LOGIC


Process(entrada, estado)
Begin
saida .....
Entrada Proximo estado <= ....;
f .....
Proximo estado
End process;
LOGIC
Reset Process(estado)
Begin
.....
saida <= ....;
REGISTER .....
estado Process(clk, reset) End process;
Begin
.....
clk estado <= Proximo estado ;
Registradores: estado .....
End process;

Disciplina: Sistemas Digitais – Profa. Dra. Fernanda Gusmão de Lima Kastensmidt


Process(clk, reset)
Aula
Maquinas de Estado Begin
If reset=‘1’ then 7
estado <= s0;
Exemplo 1: Moore
Elsif (clk’event and clk=‘1’) then
estado <= prox_estado;
Reset=1 End if;
A=0 End process;

Process(A, estado)
s0 Begin
CASE estado is
Z=0 When s0 => if A=‘0’ then prox_estado <= s0;
else prox_estado <= s1;
When s1 => if A=‘0’ then prox_estado <= s0;
A=0 A=1 else prox_estado <= s1;
END CASE;
s1 End process;

Z=1 Process(estado)
Begin
If estado = s0 then
Z<=0;
A=1 Else Z<=1;
End if;
End process;
Disciplina: Sistemas Digitais – Profa. Dra. Fernanda Gusmão de Lima Kastensmidt
Aula
Maquinas de Estado 7
Exemplo 1: Moore
Process(clk, reset)
Reset=1 Begin
A=0 If reset=‘1’ then
estado <= s0;
Elsif (clk’event and clk=‘1’) then
s0 estado <= prox_estado;
End if;
Z=0 End process;

Process(A, estado)
A=0 A=1 Begin
CASE estado is
s1 When s0 => Z<=‘0’;
if A=‘0’ then prox_estado <= s0;
Z=1 else prox_estado <= s1;
When s1 => Z<=‘1’;
if A=‘0’ then prox_estado <= s0;
else prox_estado <= s1;
A=1 END CASE;
End process;

Disciplina: Sistemas Digitais – Profa. Dra. Fernanda Gusmão de Lima Kastensmidt


Aula
Maquinas de Estado 7
Exemplo 2: Mealy
Process(clk, reset)
Begin
Reset=1
A=0 If reset=‘1’ then
estado <= s0;
Z=0
Elsif (clk’event and clk=‘1’) then
estado <= prox_estado;
s0 End if;
End process;

Process(A, estado)
A=0 A=1 Begin
Z=1 CASE estado is
Z=1 When s0 => if A=‘0’ then prox_estado <= s0; Z<=‘0’;
s1 else prox_estado <= s1; Z<=‘1’;
When s1 => if A=‘0’ then prox_estado <= s0; Z<=‘1’;
else prox_estado <= s1; Z<=‘0’;
END CASE;
End process;
A=1
Z=0
Disciplina: Sistemas Digitais – Profa. Dra. Fernanda Gusmão de Lima Kastensmidt
Aula
Maquinas de Estado 7
Exemplo 3: Mealy

Reset=1
A=0 Process(clk, reset)
Z=0 Begin
If reset=‘1’ then
estado <= s0;
s0 Elsif (clk’event and clk=‘1’) then
CASE estado is
When s0 => if A=‘0’ then estado <= s0; Z<=‘0’;
A=0 else estado <= s1; Z<=‘1’;
A=1
When s1 => if A=‘0’ then estado <= s0; Z<=‘1’;
Z=1 Z=1 else estado <= s1; Z<=‘0’;
END CASE;
s1
End process;

A=1
Z=0
Disciplina: Sistemas Digitais – Profa. Dra. Fernanda Gusmão de Lima Kastensmidt
Aula
Codificação FSM 7

• 1) Não defina previamente os estados com uma


codificação em binário, e sim deixe o nome do estado
textual

type T_STATE is (RESET, START, EXECUTE, FINISH);

signal estado, prox_estado : T_STATE ;

• 2) Deixe a ferramenta codificar o estado

Disciplina: Sistemas Digitais – Profa. Dra. Fernanda Gusmão de Lima Kastensmidt


Aula
Codificação de Estados 7

• Binária:
– Usa um baixo numero de bits para armazenar o estado. Ou seja, n bits
de armazenamento representa 2n estados.
– Pode ser na ordem crescente ou não
– Existem algoritmos para determinar a melhor ordem de codificação de
estados para minimizar área e maximizar o desempenho.
• One-hot
– Cada estado tem o seu bit na decodificação, logo uma máquina de n
estados vai precisar de n bits para armazenar o estado.
– Apenas um bit é setado por vez.
– Apresenta um baixo consumo de potencia na transíção de estados pois
apenas dois bits são alterados por transição.
– Pode apresentar maior confiabilidade a erros.
• Gray
– A codificação dos estado segue o codigo Gray, logo há apenas uma
transição de bit por estado o que reduz ainda mais a potencia na
transição de estados.

Disciplina: Sistemas Digitais – Profa. Dra. Fernanda Gusmão de Lima Kastensmidt


Aula
Exercicio 1: 7

• Represente a maquina de estados a seguir em VHDL e


sintetize no ISE com a opção de codificação: binaria, one-
hot e gray e compare area, desempenho e potencia.
Start=0, t=x
Start=1, t=x t=x, start=x t=0, start=x

Idle S1 S2 S3 done
S0
Resetr =1 Resetr =0 Resetr =0 Resetr =0 Resetr =0
Resetr =0
Resetd = 1 Resetd = 0 Resetd = 0 Resetd = 0 Resetd = 0
Resetd = 0
Resets = 1 Resets = 0 Resets = 0 Resets = 0 Resets = 0
Resets = 0
LDRaiz = 0 LDRaiz = 1 LDRaiz = 0 LDRaiz = 0 LDRaiz = 0
LDRaiz = 0
LDr = 0 LDr = 0 LDr = 1 LDr = 0 LDr = 0
LDr = 0
LDs = 0 LDs = 0 LDs = 0 LDs = 0 LDs = 1
LDs = 0
LDd = 0 LDd = 0 LDd = 0 LDd = 1 LDd = 0
LDd = 0
Ca = 0 Ca = 0 Ca = 0 Ca = 1 Ca = 1
Ca = 0
Cb = 00 Cb = 00 Cb = 01 Cb = 00 Cb = 10
Cb = 0
Cin = 0 Cin = 0 Cin = 0 Cin = 0 Cin = 1
Cin = 0

t=1, start=x
Disciplina: Sistemas Digitais – Profa. Dra. Fernanda Gusmão de Lima Kastensmidt
Aula
Exercicio 2: 7

• Implemente o datapath a seguir em VHDL


dado
Resetr Resetd Resets
LDRaiz LDr LDd LDS

Raiz r d s

2 1
0 1 00 01 10
Ca Cb

≤ Cin somador

t
Disciplina: Sistemas Digitais – Profa. Dra. Fernanda Gusmão de Lima Kastensmidt
Aula
Exercicio 3: 7

• Você acaba de implementar o controle ( a maquina de


estados ) e a parte operativa (datapath) do extrator de raiz
quadrada.

• Então una os dois modulos em um modulo de VHDL topo,


e simule o extrator de raiz quadrata.

Disciplina: Sistemas Digitais – Profa. Dra. Fernanda Gusmão de Lima Kastensmidt


Aula
Exercício 4: 7

• Lembrando que o algoritmo da extração de raiz quadrada


é: Ler X
-- inicialização
r=1; d=2; s=4;
Enquanto (t==1) {
r=r+1; Tente implementar em VHDL o
d=d+2; algoritmo usando apenas um
s=s+d+1; process
t=ac(s,x);
}
devolve(r);
}
ac(a,b)
semsinal a, b;
{
Se (a<=b) retorna (1); Senão retorna
(0);
Disciplina: Sistemas Digitais – Profa. Dra. Fernanda Gusmão de Lima Kastensmidt
}
Aula
Conclusão 7

• Você acaba de implemetar de duas maneiras diferentes o


mesmo circuito em VHDL.

• A primeira aboradagem é chamada de descrição RTL


(Register Transfer Level), ou seja, a parte de controle e a
parte operativa com os registradores esta toda muito bem
definida.

• A segunda implementação é chamada de “alto nível” pois


a implementação é mais em nível algoritmo e a ferramenta
de sintese terá que identificar os registradores e
operadores.

Disciplina: Sistemas Digitais – Profa. Dra. Fernanda Gusmão de Lima Kastensmidt