Técnica de modelagem de Máquina de Estados em VHDL
Assunto Abordagem de alguns tópicos relacionados à implementação de máquina de estados finitos (MEF) em VHDL.
Introdução Basicamente uma MEF consiste de lógica combinacional, lógica seqüencial e saída lógica. A lógica combinacional normalmente é utilizada para a decisão de próximos estados, a lógica seqüencial para armazenar o estado corrente da MEF. A saída pode ser um misto de lógica seqüencial e lógica combinacional.
Estrutura geral de uma MEF
Estrutura alternativa para uma MEF
Tipos de máquinas de estado M.E. de Mealy: As saídas do sistema dependem do estado atual (corrente) e das entradas atuais. M.E. de Moore: As saídas dependem exclusivamente do estado corrente.
Tipos de codificação (representação) para estados Codificação binária: representação dos estados como um código binário normal. Ex.: (0000, 0001, 0010, 0011, ...) Codificação Gray: é aquela que modifica somente o valor de 1 bit entre dois dígitos decimais subseqüentes. Ex.: (0010, 0110, 0111, 0101, ...)
Tipos de codificação (representação) para estados One Hot: nesta representação um único bit da seqüência tem valor lógico 1. Ex. (0001, 0010, 0100, 1000) One Cold: nesta representação todos os bits, com exceção de um possuem valor lógico 1. Ex.: (1110, 1101, 1011, 0111)
Classificação das máquinas de estado implementadas. Podem ser classificadas como Seguras ou inseguras. As ferramentas de síntese otimizam estados que não podem ser alcançados, deixando-os “afastados” Algumas vezes a otimização não é aceitável
Máquinas de estado seguras Se o número de estados (N) é uma potência de 2 e é utilizada codificação binária ou algoritmo de código Gray, a máquina de estado pode ser considerada segura. Significa que se tem M número de registradores onde N=2M. Como nessa implementação todos os valores de estado possíveis são alcançáveis, ela pode ser considerada como segura.
Máquinas de estado inseguras Se o número de estados não é uma potência de 2 ou não é utilizada codificação binária ou algoritmo de código de Gray. Por exemplo, One Hot, é considerada implementação insegura. Segue um exemplo prático:
Exemplo de implementação de 4 estados através de One Hot.
Os estados na figura anterior: Como pode-se notar, existem 12 estados não definidos. Geralmente esses estados são acondicionados através da opção “others” (em VHDL) para a estrutura case. A operação default da ferramenta de síntese é otimizar, afastando os estados inalcançáveis, de forma a criar um circuito de alta performance. Mas essa otimização criará um circuito “inseguro”.