LABORG VHDL Máquina de estados finitos
Sumário Introdução TRABALHO A FAZER A ENTREGAR 2
Na aula anterior vimos: Introdução VHDL pode ser vista não como uma, mas como várias linguagens modelagem/simulação/síntese e dentro de process/fora de process Processos paralelos são naturais em VHDL dentro e fora do comando process Process usado para hardware combinacional ou seqüencial, ou mistura de ambos Variáveis sinais sinais são fios, variáveis podem ou não ser implementadas com fios; sinais têm atribuição retardada até a próxima suspensão do processo, variáveis têm atribuição imediata Expressões com sinais usam o valor do sinal antes da suspensão do processo (valor antigo, se ele foi mudado em comando anterior) Exercícios iniciais de interpretação de comandos process 3
Elementos do Modelo Estado Máquina de estados Transição» Relógio Reset Determinismo Modelo determinístico Modelo não determinístico Tipos de Máquina Mealy versus Moore reset Representação de Máquina de Estados Finito Um processo com um único sinal representando o estado Dois processos, um representando a operação combinacional e outro representando o elemento de memorização para troca de estados E0 A A E1 4
Máquina de Moore Entrada Saída Circuito Combinacional Memória (FFs) Circuito Combinacional Saída muda somente na transição do relógio 5
entity Moore is port ( ck: in std_logic; entrada: in std_logic; saida: out std_logic ); end Moore; Máquina de estados architecture A_Moore of Moore is type STATE_TYPE is (S0, S1, S2, S3); signal estado: STATE_TYPE; begin process(ck, reset) begin if reset = '1' then estado <= S0; elsif ck'event and ck = '1' then end process; end A_Moore; << Máquina de estados >> 6
Máquina de estados case estado is when S0 => saida <= '0'; if entrada = '1' then estado <= S2; when S1 => saida <= '1'; if entrada = '0' then estado <= S0; else estado <= S2; when S2 => saida <= '1'; if entrada = '1' then estado <= S3; when S3 => saida <= '0'; if entrada = '1' then estado <= S1; end case; 7
Máquina de Mealy Saída muda em função da entrada e do estado corrente Entrada Saída Circuito Combinacional Memória (FFs) Circuito Combinacional 8
entity Mealy is port ( ck: in std_logic; entrada: in std_logic; saida: out std_logic ); end Mealy; Máquina de estados architecture A_Mealy of Mealy is type STATE_TYPE is (S0, S1, S2, S3); signal estado: STATE_TYPE; begin <PROCESSO DE CONTROLE DE ESTADO> <PROCESSO DE CONTROLE DE SAÍDA> end A_Mealy; 9
Máquina de estados Processo de controle de estado process(ck, reset) begin if reset = '1' then estado <= S0; elsif ck'event and ck = '1' then end process; << Máquina de estados >> case estado is when S0 => if entrada = '1' then estado <= S2; when S1 => if entrada = '0' then estado <= S0; else estado <= S2; when S2 => if entrada = '1' then estado <= S3; Processo de controle da saída when S3 => if entrada = '1' then estado <= S1; end case; Saída <= '1 when entrada = '1 and (estado = S1 or estado = S3) else 0 ; 10
Sumário Introdução TRABALHO A FAZER A ENTREGAR 11
TRABALHO A FAZER 1. Implemente o hardware para cronômetro de basquete 2. Especificação do cronômetro: Jogos de basquete atuais são compostos de 4 tempos de 15 minutos cada. Assim, o cronômetro deve contar até 15 minutos e saber em que tempo o jogo se encontra O cronômetro deve poder ser parado e reiniciado a qualquer instante, e deve poder ser reinicializado para o instante 00 minutos, 00 segundos e 00 centésimos do tempo 1 Como intuído no item anterior são 4 as saídas do cronômetro: minutos, segundos, centésimos e quarto Em situações excepcionais, tais como erros de arbitragem, o cronômetro deve poder ser inicializado para um instante qualquer de um tempo, com precisão máxima a nível de minutos e segundos inteiros. A seguir apresenta-se um diagrama da interface externa do cronômetro 12
TRABALHO A FAZER Cristal de 50MHz clock reset Novo_valor C_Minutos C_Segundos Quarto Minutos Val_Display Anodo Para_continua Novo_quarto Atenção: Todas as ações do sistema devem ser síncronas com o sinal de relógio!!! 13
Uma possível FSM de controle Não está no desenho, mas todos os estados tem uma condição default, que é permanecer no mesmo estado 14
Sumário Introdução TRABALHO A FAZER A ENTREGAR 15
A ENTREGAR T5 O projeto desta aula devidamente simulado, contendo: 1. O cronômetro: fonte VHDL 2. Relatório (PDF) contendo: Relatório descrevendo a implementação Estados implementados + Diagrama de blocos Testbench Formas de onda mostrando a funcionalidade 16