VHDL :: AvisaTodos Alarm


A Fortid não quer mais usar um processor PIC em seus carros, e prefere usar um dispositivo especifico para controlar o alarme de seus T-Models. Isso para diminuir os custos de produção. Nos carros utilizados por eles contem 3 sensores de movimentos (S3,S2 e S1) e para evitar que o alarme dispare por qualquer motivo, a politica utilizada pela empresa é acionar a sirene quando, no minimo, 2 sensores detectarem movimento.



Codigo base

Codigo: alarm.tar.gz
Solução iterativa: link


A tabela verdade dos sensores está descrito abaixo
S2 S1 S0 M
0 0 0 0
0 0 1 0
0 1 0 0
0 1 1 1
1 0 0 0
1 0 1 1
1 1 0 1
1 1 1 1



Componente Alarm_tb



Componente Alarm

A imagem abaixo mostra o diagrama de como deve ficar o hardware do componente Alarm.

A imagem abaixo mostra a maquina de estado do Alarm. Onde se inicia no estado E=00(desligado), e indica que o alarme está desligado. Neste estado mesmo que exista detecção de movimento, a sirene não é ligada. Se o sinal CC ficar em 1, então o Alarm vai para o estado=01 (ligado). Se existir algum movimento detectado, então o Alarm vai para o estado=10 e aciona a sirene. E somente é desligada quando o sinal CC voltar a 0.



A seguir segue as equações para a maquina de estado:

  1. E0 = ~E1.~E0.CC + ~E1.~E0.CC.~M
  2. E1 = ~E1.E0.CC.M + E1.CC
  3. sirene = E1


Analisa

m = S0.S1 + S1.S2 + S0.S2


Algoritmo

Parte 1

  1. - [alarm_tb.vhdl]: Declare o Componente Analisa;
  2. - [alarm_tb.vhdl]: Crie uma instancia do Componente Analisa;
    1. Ligue os sinais do alarm_tb no analisa. Lembre-se que o sinal SS é um vetor de 3 fios e a entrada do Componente Analisa sao S0,S1,S2 como std_logic;
  3. - Compile e veja o resultado;
  4. - [Makefile]: Adicione o arquivo analisa.vhdl na linha de compilação;
  5. - Compile e veja o resultado;

Parte 2

  1. - [analisa.vhdl]: No componente Analisa, faça a saida m receber a operação matematica definida pela tabela verdade dos sensores;
  2. - Compile e faça um teste;
    Verifique se o sinal M retorna;
    1. m=0, quando apenas 0 ou 1 sensores detectaram movimento;
    2. m=1, quando apenas 2 ou 3 sensores detectaram movimento;

Parte 3

  1. - [alarm_tb.vhdl]: Declare o Componente Alarm
  2. - [alarm_tb.vhdl]: Crie uma instancia do Componente Alarm
  3. - [Makefile]: Adicione na linha de compilação o arquivo alarm.vhdl
  4. - compile e verifique o resultado
  5. - [alarm.vhdl]: Crie o sinal e0 e o e1 como std_logic dentro do componente alarm
  6. - [alarm.vhdl]: Faça a lógica digital para o e0
  7. - [alarm.vhdl]: Faça a lógica digital para o e1
  8. - [alarm.vhdl]: Faça o sinal sirene receber a logica digital
  9. - compile e verifique o resultado
  10. - [alarm.vhdl]: Coloque as equações em um processo
  11. - [alarm.vhdl]: Coloque o sinal do clock na entrada de Alarm
  12. - compile e verifique o resultado
  13. - [Makefile]: Adicione na linha de compilação o arquivo alarm.vhdl
  14. - compile e verifique o resultado

Parte 4

  1. - Copie o projeto em uma nova pasta chamada alarm-mux
  2. - [alarm.vhdl]: Crie a maquina de estado do alarm usando um case


Comentários