MO801 / MC912

Tópicos em Arquitetura e Hardware

Segundo Trabalho

O primeiro trabalho consiste em implementar um circuito contador de moedas restrito às moedas antigas de R$0,01, R$0,05, R$0,10, R$0,50 e R$1,00. Utilize a entidade abaixo:
entity contador is
port (clk : in std_logic;
resetn : in std_logic;
sensor : in std_logic_vector(0 to 4);
total : out natural
);
end entity contador;

Esquema do contador de moedas

Todos os nomes devem ser idênticos aos descritos acima. Use a seguinte convenção para os sinais:
clk
Clock ativo em borda de subida
resetn
Reset do circuito, ativo em zero. Quanto ocorrer um reset, o valor total deve ser transformado em zero
sensor Vetor dos sinais dos sensores. sensor(i) = '1' significa que existe um objeto bloqueando o i-ésimo sensor. 
total Valor total até o momento. O valor total deve ser atualizado sempre que,  e apenas quando, a moeda terminar de passar pelos sensores.

Seu circuito deve ser síncrono e só efetuar alterações na saída nos pulsos de subida de clk.

Debounce

Todos os sinais provenientes de sensores podem sofrer oscilações indesejadas durante as transições. Essas oscilações devem ser removidas através de um circuito especial para efetuar o debounce do sinal. Para elimina-las, o circuito de debounce deve apenas considerar estável um sinal que tenha o mesmo valor por n ciclos sucessivos. No caso deste trabalho, utilizaremos n=7. Faça seu circuito parametrizável (use generic).

Testbench

Implemente um Testbench para o seu circuito. Teste todos os casos que julgar necessários para comprovar a funcionalidade especificada.

Síntese

Seu circuito deve ser sintetizável com o Leonardo. Teste-o antes de entregar o trabalho. Para síntese, utilize a FPGA Xilinx Virtex v800hq240-4.

Relatório

Entregar um pequeno relatório sobre o trabalho.

Exemplo


Forma de onda de exemplo do contador de Moedas. Observe que:
  • O sensor 4 não pode ser considerado se trabalharmos com mais de 3 ciclos de debounce (em azul).
  • O sensor 0 não será considerado pela segunda vez se trabalharmos com mais de 2 ciclos de debounce (em amarelo).
  • A contagem da moeda só deve ser feita no tempo indicado em verde (assuma nesste caso que o debounce já foi feito).
Nesse exemplo, dado que o sensor 3 ficou estável por mais de n=7 ciclos, a moeda contada é de R$0,50.