Disciplinas‎ > ‎2012_1‎ > ‎GSI013‎ > ‎Material de Apoio‎ > ‎

Especificação Trabalho FSM

Parte I - Especificação da Máquina

A máquina deve ser capaz de fornecer dois tipos de refrigerantes, denominados MEET e
ETIRPS. Estes estão disponíveis para escolha pelo usuário a partir de duas teclas no painel com o
nome dos refrigerantes. Ambos refrigerantes custam R$1,50 e existe na máquina uma fenda para
inserir moedas com uma mecânica capaz de reconhecer moedas de R$1,00, R$0,50 e R$0,25, e
capaz de devolver automaticamente qualquer outro tipo de moeda ou objeto não reconhecido. Além
disso, durante a compra, o usuário pode desistir da transação e apertar a tecla DEV que devolve as
moedas inseridas até o momento. Somente após acumular um crédito mínimo de R$1,50 o usuário
pode obter um refrigerante. A devolução de excesso de moedas é automática sempre que o valor
inserido antes de retirar um refrigerante ultrapassar R$1,50.

Parte II - Projeto da Máquina

O projeto inicial consiste em definir a interface do circuito de controle da máquina com o
mundo externo e definir o comportamento deste circuito segundo uma máquina de estados finita. A
interface pode ser depreendida a partir da especificação. Primeiro, cada tecla do painel corresponde
a uma entrada de um bit. Tecla apertada será bit em ‘1’ e tecla não apertada será bit em ‘0’. Isto
vale para as teclas de pedido de refrigerante (MEET e ETIRPS) e para a tecla de devolução do
dinheiro (DEV). O circuito de controle deve ser síncrono, e suponha que seu relógio será muito
rápido comparado com as ações do usuário. Logo, cada uma destas teclas, uma vez apertada, irá
gerar um sinal que fica muitos ciclos de relógio ativado. Outro ponto de entrada é a informação de
moedas inseridas na fenda.  Assim, isto corresponde a três outras entradas do circuito de controle,
denominadas M025, M050, M100, cada uma destas entradas recebendo um pulso em ‘1’ cada vez
que moedas válidas de R$0,25, R$0,50 e R$1,00 são inseridas, respectivamente. As saídas da
máquina correspondem a pulsos de devolução de moedas (D025, D050 e D100) e pulsos de
liberação de refrigerante (LMEET e LETIRPS). Logo a interface do circuito de controle está
completamente definida, tendo 8 entradas e 5 saídas. Esquematicamente, mostra-se o diagramde
blocos resultante desta discussão na Figura 1:

Diagrama de blocos da máquina de venda de refrigerantes, mostrando a interface com o mundo externo.
Figura 1 – Diagrama de blocos da máquina de venda de refrigerantes, mostrando a interface com o
mundo externo.

Note-se na Figura 1 a separação do circuito Codificador e Adaptador, este responsável por
realizar todas as tarefas das hipóteses simplificadoras estabelecidas aqui e na Parte II. A saída do
Codificador e Adaptador é um vetor de 3 bits que contém um Comando. Assuma a seguinte
codificação para este vetor: Comando=000 – nenhuma tecla apertada, Comando=001 – chegou
moeda de R$0,25, e assim por diante, na ordem de aparecimento das entradas na Figura 1, de cima
para baixo, terminando com Comando=110 – apertada a tecla de Pedido de lata de refrigerante
ETIRPS. O último código, Comando=111, nunca deve aparecer, constituindo-se assim em uma
condição de inespecificação, ou don´t-care. Este último pode e deve ser usado para simplificar o
projeto do circuito.
O próximo passo é definir a tabela de transição de estados para o circuito de controle. Para
fazer isto é necessário definir que informações serão usadas para indicar o estado da máquina. No
caso, usar o valor total inserido até o momento é uma escolha adequada. Assim, a cada instante do
tempo, podem ter sido inseridas moedas para perfazer qualquer valor entre R$0,00 e R$1,50, sem
esquecer que sempre que o valor total exceder R$1,50 moedas em excesso são imediatamente
devolvidas. Assim, a moeda de mais baixo valor (R$0,25) determina que precisaremos de 7 estados
ao todo para representar qualquer combinação de moedas inseridas, inclusive nenhuma. Para gerar a
tabela de transição de estados, basta definir as ações associadas a cada codificação do vetor
Comando. Não se esqueça de considerar a ação do circuito quando nenhuma das entradas está ativa
(entrada Nenhum). Assim, temos a Tabela 3, onde se mostra a tabela de transição de estados, onde
as posições desta estão apresentando o próximo estado seguido da geração de sinais de saída.
Atenção à convenção usada na Tabela 3: se nenhum sinal de saída aparece, isto significa que
todos são gerados com valor ‘0’ (por exemplo, quando se está no estado S000 e a entrada é
M025). Note ainda que muitas entradas da tabela não estão preenchidas.
Parte do trabalho de implementação consistirá em escolher uma codificação dos estados
internos. Perceba que esta escolha pode afetar o tamanho do hardware gerado. Cada codificação
distinta pode gerar um hardware combinacional distinto. É importante salientar que existem
codificações corretas e incorretas. Uma maneira simples de garantir a corretude de uma codificação
é simplesmente atribuir códigos distintos a estados distintos. No entanto, se 2 estados têm o mesmo comportamento em relação a entradas e estado atual, eles são ditos equivalentes, e não é necessário
que os dois existam, podendo-se reduzi-los a um único estado, ou, equivalentemente, a um único
código que os represente.

Tabela de transição de estados que descreve o comportamento da máquina de venda de
refrigerantes.
Em relação à Tabela acima, complete a tabela de transição de estados corretamente. Verifique se existem estados equivalentes na sua implementação. Caso existam, simplifique a máquina ao máximo antes de prosseguir.
Em seguida, simule o circuito, gerando um testbench realista, testando algumas condições, tais
como tentativa de tirar refrigerante sem crédito suficiente, tentativa de solicitar devolução de
moedas com crédito nulo, etc.

Para refletir:a máquina implementada é uma máquina de Mealy ou de Moore? Porquê?

Parte III - Prototipagem

Finalmente, implemente a máquina de refrigerantes na placa de prototipagem DE2 com o FPGA Cyclone II da Altera. Use dip switches para as entradas de moedas e leds vermelhos correspondentes para as saídas. A escolha dos refrigerantes MEET e ETIRPS, pode ser através de dip-switches também. O acionamento do reset  e do botão DEV deve ser feito usando os push-buttons. Use o clock de 50MHz da placa.

Valorização

O projeto da máquina de estados e sua simulação valem o equivalente a um dos trabalhos de participação previstos para a disciplina.

A prototipação do projeto completo na placa, com todas funcionalidades previstas, vale DEZ pontos ADICIONAIS á nota final da disciplina.

Obs: O trabalho pode ser em grupos (os mesmos do trabalho final), mas a avaliação para quem fizer a prototipagem será individual.
O
Comments