Escolar Documentos
Profissional Documentos
Cultura Documentos
2010
Proposta do Projeto:
O projeto é um sistema de 4 máquinas que visa controlar a entrada de carros a
partir da permissão ou não da entrada dos mesmos em um estacionamento dividido
em 2 setores com 6 vagas cada um. O mesmo possui:
-Duas máquinas que contam quantas vagas existem em cada setor e indicam
se existe ou não vagas no setor;
-Uma máquina que verifica a senha digitada pelo usuário emitindo um alarme
caso errada ou um sinal de correto caso certa;
-Uma máquina que verifica se há vagas no estacionamento em geral a partir
das indicações de existência de vaga das 2 máquinas que contam e informa se
existem vagas em cada setor e senha, também fechando o portão após receber um
sinal que o carro entrou e informando a partir do mesmo sinal se houve entrada não
permitida no estacionamento.
Contador 2
Estados:
A= existem 6 vagas, esperando sinal de entrada;
B=existem 5 vagas, esperanado sinal de entrada;
C=existem 4 vagas, esperanado sinal de entrada;
D=existem 3 vagas, esperanado sinal de entrada;
E=existem 2 vagas, esperanado sinal de entrada;
F=existe 1 vaga, esperanado sinal de entrada;
G=não existe vagas, esperando sinal de entrada;
H= não existe vagas, esperando sinal de entrada; (para caso um carro entre e saia
não dar problema de quando sair o estado voltar para F)
Mudança de estados (atual – futuro):
A-A:
A-B:
B-B:
B-A:
B-C:
C-C:
C-B:
C-D:
D-D:
D-C:
D-E:
E-E:
E-D:
E-F:
F-F:
F-E:
F-G:
G-G:
G-F:
G-H:
H-H:
H-G:
Contador 2
Contador 2
Contador 1
Estados:
A= existem 6 vagas, esperando sinal de entrada;
B=existem 5 vagas, esperanado sinal de entrada;
C=existem 4 vagas, esperanado sinal de entrada;
D=existem 3 vagas, esperanado sinal de entrada;
E=existem 2 vagas, esperanado sinal de entrada;
F=existe 1 vaga, esperanado sinal de entrada;
G=não existe vagas, esperando sinal de entrada;
H= não existe vagas, esperando sinal de entrada; (para caso um carro entre e saia
não dar problema de quando sair o estado voltar para F)
Verificador de senha, no caso 8147, aonde ele apresenta 2 saidas alarme (senha
errada) e senha (indica se esta certa);
Entradas:
Zero: botão que representa o valor 0 em decimal;
Um: botão que representa o valor 1 em decimal;
Dois: botão que representa o valor 2 em decimal;
Três: botão que representa o valor 3 em decimal;
Quatro: botão que representa o valor 4 em decimal;
Cinco: botão que representa o valor 5 em decimal;
Seis: botão que representa o valor 6 em decimal;
Sete: botão que representa o valor 7 em decimal;
Oito: botão que representa o valor 8 em decimal;
Nove: botão que representa o valor 9 em decimal;
Clk: clock.
Saídas:
Senha: (0 senha errada, 1 senha certa);
Alarme: (0 senha certa,1 senha errada).
Estados:
A:esperando a primeira entrada;
B:primeira entrada correta (recebeu 8 como entrada), esperando a segunda entrada;
C:primeira entrada errada, esperando a segunda entrada;
D:segunda entrada errada, esperando a teceira entrada;
E:segunda entrada correta (recebeu 1 como entrada), esperando a terceira entrada;
F: terceira entrada correta (recebeu 4 como entrada), esperando a quarta entrada;
G: terceira entrada errada, esperando a quarta entrada;
Verificador de senha
Verificador de senha
Verificador de senha
Portao de entrada
Maquina que controla a entrada dos carros a partir da verificação de se existem vagas
e da senha, abrindo ou não a porta de acesso indicando se existem vagas no
estacionamento e após abrir a porta espera o carro entrar para fechar a porta e
tocando um alarme caso o carro entre forçadamente.
Entradas:
Senha: (1 senha correta, 0 senha errada);
Vagas1: (1= há vaga(s) no setor 1, 0= não há vaga(s) no setor 1);
Vagas2: (1= há vaga(s) no setor 2, 0= não há vaga(s) no setor 2);
Entrou: (1 carro entrou, 0 carro não entrou);
Clk:Clock.
Saídas:
Existe_vagas: (1= existe(m) vaga(s) no estacionamento, 0= não existem
vagas);
Abrir_porta (1=abre a porta, 0= não abre a porta);
Fechar_porta: (1=fecha a porta, 0= não fecha a porta);
Alarme_invasao: (1= toca alarme devido acesso não permitido, 0= não toca o
alarme).
Estados:
A: esperando entrada;
B: recebeu informação da senha é correta (senha=1), esperando sinal vagas1 e
vagas2;
C: recebeu informação de que existe(m) vaga(s) (vagas1=1 e ou vagas2=1),
esperando sinal senha;
D: recebeu que existe(m) vaga(s) (vagas1=1 e ou vagas2=1 e de senha correta
(senha=1), esperando sinal entrou.
Portao de entrada
Portao de entrada
VHDL verificador do portao de entrada:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_unsigned.ALL;
WHEN A=>
IF senha='1' AND vagas1='0' AND vagas2='0' AND entrou='0' THEN
est <=B;
existe_vagas <= '0';
abrir_porta <='0';
fechar_porta <='0';
alarme_invasao <='0';
ELSE
est<=A;
existe_vagas <= '0';
abrir_porta <='0';
fechar_porta <='0';
alarme_invasao <='0';
END IF;
WHEN B=>
IF senha='1' AND vagas1='0' AND vagas2='0' AND entrou='0' THEN
est <=A;
existe_vagas <= '0';
abrir_porta <='0';
fechar_porta <='0';
alarme_invasao <='0';
ELSE
est<=B;
existe_vagas <= '0';
abrir_porta <='0';
fechar_porta <='0';
alarme_invasao <='0';
END IF;
WHEN C=>
IF senha='1' AND vagas1='0' AND vagas2='0' AND entrou='0' THEN
est <=D;
existe_vagas <= '1';
abrir_porta <='1';
fechar_porta <='0';
alarme_invasao <='0';
ELSE
est<=C;
existe_vagas <= '1';
abrir_porta <='0';
fechar_porta <='0';
alarme_invasao <='0';
END IF;
WHEN D=>
IF senha='1' AND vagas1='0' AND vagas2='0' AND entrou='0' THEN
est <=D;
existe_vagas <= '1';
abrir_porta <='0';
fechar_porta <='0';
alarme_invasao <='0';
ELSE
est<=D;
existe_vagas <= '1';
abrir_porta <='1';
fechar_porta <='0';
alarme_invasao <='0';
END IF;
END CASE;
END IF;
END PROCESS;
END funcionamento_portao;
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_unsigned.ALL;
WHEN A=>
IF oito='1' AND zero='0' AND um='0' AND dois='0' AND tres='0' AND quatro='0' AND
cinco='0' AND seis='0' AND sete='0' AND nove='0' THEN
est <=B;
senha <= '0';
alarme <='0';
ELSIF zero='1' AND um='0' AND dois='0' AND tres='0' AND quatro='0' AND cinco='0'
AND seis='0' AND sete='0' AND oito='0' AND nove='0' THEN
est <=C;
senha <= '0';
alarme <='0';
ELSIF um='1' AND zero='0' AND dois='0' AND tres='0' AND quatro='0' AND cinco='0'
AND seis='0' AND sete='0' AND oito='0' AND nove='0' THEN
est <=C;
senha <= '0';
alarme <='0';
ELSIF dois='1' AND zero='0' AND um='0' AND tres='0' AND quatro='0' AND cinco='0'
AND seis='0' AND sete='0' AND oito='0' AND nove='0' THEN
est <=C;
senha <= '0';
alarme <='0';
ELSIF tres='1' AND zero='0' AND um='0' AND dois='0' AND quatro='0' AND cinco='0'
AND seis='0' AND sete='0' AND oito='0' AND nove='0' THEN
est <=C;
senha <= '0';
alarme <='0';
ELSIF quatro='1' AND zero='0' AND um='0' AND dois='0' AND tres='0' AND cinco='0'
AND seis='0' AND sete='0' AND oito='0' AND nove='0' THEN
est <=C;
senha <= '0';
alarme <='0';
ELSIF cinco='1' AND zero='0' AND um='0' AND dois='0' AND tres='0' AND quatro='0'
AND seis='0' AND sete='0' AND oito='0' AND nove='0' THEN
est <=C;
senha <= '0';
alarme <='0';
ELSIF seis='1' AND zero='0' AND um='0' AND dois='0' AND tres='0' AND quatro='0' AND
cinco='0' AND sete='0' AND oito='0' AND nove='0' THEN
est <=C;
senha <= '0';
alarme <='0';
ELSIF sete='1' AND zero='0' AND um='0' AND dois='0' AND tres='0' AND quatro='0'
AND cinco='0' AND seis='0' AND oito='0' AND nove='0' THEN
est <=C;
senha <= '0';
alarme <='0';
ELSIF nove='1' AND zero='0' AND um='0' AND dois='0' AND tres='0' AND quatro='0'
AND cinco='0' AND seis='0' AND sete='0' AND oito='0' THEN
est <=C;
senha <= '0';
alarme <='0';
ELSE
est <=A;
senha <= '0';
alarme <='0';
END IF;
WHEN B=>
IF um='1' AND zero='0' AND dois='0' AND tres='0' AND quatro='0' AND cinco='0' AND
seis='0' AND sete='0' AND oito='0' AND nove='0' THEN
est <=E;
senha <= '0';
alarme <='0';
ELSIF zero='1' AND um='0' AND dois='0' AND tres='0' AND quatro='0' AND cinco='0'
AND seis='0' AND sete='0' AND oito='0' AND nove='0' THEN
est <=D;
senha <= '0';
alarme <='0';
ELSIF dois='1' AND zero='0' AND um='0' AND tres='0' AND quatro='0' AND cinco='0'
AND seis='0' AND sete='0' AND oito='0' AND nove='0' THEN
est <=D;
senha <= '0';
alarme <='0';
ELSIF tres='1' AND zero='0' AND um='0' AND dois='0' AND quatro='0' AND cinco='0'
AND seis='0' AND sete='0' AND oito='0' AND nove='0' THEN
est <=D;
senha <= '0';
alarme <='0';
ELSIF quatro='1' AND zero='0' AND um='0' AND dois='0' AND tres='0' AND cinco='0'
AND seis='0' AND sete='0' AND oito='0' AND nove='0' THEN
est <=D;
senha <= '0';
alarme <='0';
ELSIF cinco='1' AND zero='0' AND um='0' AND dois='0' AND tres='0' AND quatro='0'
AND seis='0' AND sete='0' AND oito='0' AND nove='0' THEN
est <=D;
senha <= '0';
alarme <='0';
ELSIF seis='1' AND zero='0' AND um='0' AND dois='0' AND tres='0' AND quatro='0' AND
cinco='0' AND sete='0' AND oito='0' AND nove='0' THEN
est <=D;
senha <= '0';
alarme <='0';
ELSIF sete='1' AND zero='0' AND um='0' AND dois='0' AND tres='0' AND quatro='0'
AND cinco='0' AND seis='0' AND oito='0' AND nove='0' THEN
est <=D;
senha <= '0';
alarme <='0';
ELSIF oito='1' AND zero='0' AND um='0' AND dois='0' AND tres='0' AND quatro='0' AND
cinco='0' AND seis='0' AND sete='0' AND nove='0' THEN
est <=D;
senha <= '0';
alarme <='0';
ELSIF nove='1' AND zero='0' AND um='0' AND dois='0' AND tres='0' AND quatro='0'
AND cinco='0' AND seis='0' AND sete='0' AND oito='0' THEN
est <=D;
senha <= '0';
alarme <='0';
ELSE
est <=B;
senha <= '0';
alarme <='0';
END IF;
WHEN C=>
IF zero='1' AND um='0' AND dois='0' AND tres='0' AND quatro='0' AND cinco='0' AND
seis='0' AND sete='0' AND oito='0' AND nove='0' THEN
est <=D;
senha <= '0';
alarme <='0';
ELSIF um='1' AND zero='0' AND dois='0' AND tres='0' AND quatro='0' AND cinco='0'
AND seis='0' AND sete='0' AND oito='0' AND nove='0' THEN
est <=D;
senha <= '0';
alarme <='0';
ELSIF dois='1' AND zero='0' AND um='0' AND tres='0' AND quatro='0' AND cinco='0'
AND seis='0' AND sete='0' AND oito='0' AND nove='0' THEN
est <=D;
senha <= '0';
alarme <='0';
ELSIF tres='1' AND zero='0' AND um='0' AND dois='0' AND quatro='0' AND cinco='0'
AND seis='0' AND sete='0' AND oito='0' AND nove='0' THEN
est <=D;
senha <= '0';
alarme <='0';
ELSIF quatro='1' AND zero='0' AND um='0' AND dois='0' AND tres='0' AND cinco='0'
AND seis='0' AND sete='0' AND oito='0' AND nove='0' THEN
est <=D;
senha <= '0';
alarme <='0';
ELSIF cinco='1' AND zero='0' AND um='0' AND dois='0' AND tres='0' AND quatro='0'
AND seis='0' AND sete='0' AND oito='0' AND nove='0' THEN
est <=D;
senha <= '0';
alarme <='0';
ELSIF seis='1' AND zero='0' AND um='0' AND dois='0' AND tres='0' AND quatro='0' AND
cinco='0' AND sete='0' AND oito='0' AND nove='0' THEN
est <=D;
senha <= '0';
alarme <='0';
ELSIF sete='1' AND zero='0' AND um='0' AND dois='0' AND tres='0' AND quatro='0'
AND cinco='0' AND seis='0' AND oito='0' AND nove='0' THEN
est <=D;
senha <= '0';
alarme <='0';
ELSIF oito='1' AND zero='0' AND um='0' AND dois='0' AND tres='0' AND quatro='0' AND
cinco='0' AND seis='0' AND sete='0' AND nove='0' THEN
est <=D;
senha <= '0';
alarme <='0';
ELSIF nove='1' AND zero='0' AND um='0' AND dois='0' AND tres='0' AND quatro='0'
AND cinco='0' AND seis='0' AND sete='0' AND oito='0' THEN
est <=D;
senha <= '0';
alarme <='0';
ELSE
est <=C;
senha <= '0';
alarme <='0';
END IF;
WHEN D=>
IF zero='1' AND um='0' AND dois='0' AND tres='0' AND quatro='0' AND cinco='0' AND
seis='0' AND sete='0' AND oito='0' AND nove='0' THEN
est <=G;
senha <= '0';
alarme <='0';
ELSIF um='1' AND zero='0' AND dois='0' AND tres='0' AND quatro='0' AND cinco='0'
AND seis='0' AND sete='0' AND oito='0' AND nove='0' THEN
est <=G;
senha <= '0';
alarme <='0';
ELSIF dois='1' AND zero='0' AND um='0' AND tres='0' AND quatro='0' AND cinco='0'
AND seis='0' AND sete='0' AND oito='0' AND nove='0' THEN
est <=G;
senha <= '0';
alarme <='0';
ELSIF tres='1' AND zero='0' AND um='0' AND dois='0' AND quatro='0' AND cinco='0'
AND seis='0' AND sete='0' AND oito='0' AND nove='0' THEN
est <=G;
senha <= '0';
alarme <='0';
ELSIF quatro='1' AND zero='0' AND um='0' AND dois='0' AND tres='0' AND cinco='0'
AND seis='0' AND sete='0' AND oito='0' AND nove='0' THEN
est <=G;
senha <= '0';
alarme <='0';
ELSIF cinco='1' AND zero='0' AND um='0' AND dois='0' AND tres='0' AND quatro='0'
AND seis='0' AND sete='0' AND oito='0' AND nove='0' THEN
est <=G;
senha <= '0';
alarme <='0';
ELSIF seis='1' AND zero='0' AND um='0' AND dois='0' AND tres='0' AND quatro='0' AND
cinco='0' AND sete='0' AND oito='0' AND nove='0' THEN
est <=G;
senha <= '0';
alarme <='0';
ELSIF sete='1' AND zero='0' AND um='0' AND dois='0' AND tres='0' AND quatro='0'
AND cinco='0' AND seis='0' AND oito='0' AND nove='0' THEN
est <=G;
senha <= '0';
alarme <='0';
ELSIF oito='1' AND zero='0' AND um='0' AND dois='0' AND tres='0' AND quatro='0' AND
cinco='0' AND seis='0' AND sete='0' AND nove='0' THEN
est <=G;
senha <= '0';
alarme <='0';
ELSIF nove='1' AND zero='0' AND um='0' AND dois='0' AND tres='0' AND quatro='0'
AND cinco='0' AND seis='0' AND sete='0' AND oito='0' THEN
est <=G;
senha <= '0';
alarme <='0';
ELSE
est <=D;
senha <= '0';
alarme <='0';
END IF;
WHEN E=>
IF quatro='1' AND zero='0' AND um='0' AND dois='0' AND tres='0' AND cinco='0' AND
seis='0' AND sete='0' AND oito='0' AND nove='0' THEN
est <=F;
senha <= '0';
alarme <='0';
ELSIF zero='1' AND um='0' AND dois='0' AND tres='0' AND quatro='0' AND cinco='0'
AND seis='0' AND sete='0' AND oito='0' AND nove='0' THEN
est <=G;
senha <= '0';
alarme <='0';
ELSIF um='1' AND zero='0' AND dois='0' AND tres='0' AND quatro='0' AND cinco='0'
AND seis='0' AND sete='0' AND oito='0' AND nove='0' THEN
est <=G;
senha <= '0';
alarme <='0';
ELSIF dois='1' AND zero='0' AND um='0' AND tres='0' AND quatro='0' AND cinco='0'
AND seis='0' AND sete='0' AND oito='0' AND nove='0' THEN
est <=G;
senha <= '0';
alarme <='0';
ELSIF tres='1' AND zero='0' AND um='0' AND dois='0' AND quatro='0' AND cinco='0'
AND seis='0' AND sete='0' AND oito='0' AND nove='0' THEN
est <=G;
senha <= '0';
alarme <='0';
ELSIF cinco='1' AND zero='0' AND um='0' AND dois='0' AND tres='0' AND quatro='0'
AND seis='0' AND sete='0' AND oito='0' AND nove='0' THEN
est <=G;
senha <= '0';
alarme <='0';
ELSIF seis='1' AND zero='0' AND um='0' AND dois='0' AND tres='0' AND quatro='0' AND
cinco='0' AND sete='0' AND oito='0' AND nove='0' THEN
est <=G;
senha <= '0';
alarme <='0';
ELSIF sete='1' AND zero='0' AND um='0' AND dois='0' AND tres='0' AND quatro='0'
AND cinco='0' AND seis='0' AND oito='0' AND nove='0' THEN
est <=G;
senha <= '0';
alarme <='0';
ELSIF oito='1' AND zero='0' AND um='0' AND dois='0' AND tres='0' AND quatro='0' AND
cinco='0' AND seis='0' AND sete='0' AND nove='0' THEN
est <=G;
senha <= '0';
alarme <='0';
ELSIF nove='1' AND zero='0' AND um='0' AND dois='0' AND tres='0' AND quatro='0'
AND cinco='0' AND seis='0' AND sete='0' AND oito='0' THEN
est <=G;
senha <= '0';
alarme <='0';
ELSE
est <=E;
senha <= '0';
alarme <='0';
END IF;
WHEN F=>
IF sete='1' AND zero='0' AND um='0' AND dois='0' AND tres='0' AND quatro='0' AND
cinco='0' AND seis='0' AND oito='0' AND nove='0' THEN
est <=A;
senha <= '1';
alarme <='0';
ELSIF zero='1' AND um='0' AND dois='0' AND tres='0' AND quatro='0' AND cinco='0'
AND seis='0' AND sete='0' AND oito='0' AND nove='0' THEN
est <=A;
senha <= '0';
alarme <='1';
ELSIF um='1' AND zero='0' AND dois='0' AND tres='0' AND quatro='0' AND cinco='0'
AND seis='0' AND sete='0' AND oito='0' AND nove='0' THEN
est <=A;
senha <= '0';
alarme <='1';
ELSIF dois='1' AND zero='0' AND um='0' AND tres='0' AND quatro='0' AND cinco='0'
AND seis='0' AND sete='0' AND oito='0' AND nove='0' THEN
est <=A;
senha <= '0';
alarme <='1';
ELSIF tres='1' AND zero='0' AND um='0' AND dois='0' AND quatro='0' AND cinco='0'
AND seis='0' AND sete='0' AND oito='0' AND nove='0' THEN
est <=A;
senha <= '0';
alarme <='1';
ELSIF quatro='1' AND zero='0' AND um='0' AND dois='0' AND tres='0' AND cinco='0'
AND seis='0' AND sete='0' AND oito='0' AND nove='0' THEN
est <=A;
senha <= '0';
alarme <='1';
ELSIF cinco='1' AND zero='0' AND um='0' AND dois='0' AND tres='0' AND quatro='0'
AND seis='0' AND sete='0' AND oito='0' AND nove='0' THEN
est <=A;
senha <= '0';
alarme <='1';
ELSIF seis='1' AND zero='0' AND um='0' AND dois='0' AND tres='0' AND quatro='0' AND
cinco='0' AND sete='0' AND oito='0' AND nove='0' THEN
est <=A;
senha <= '0';
alarme <='1';
ELSIF oito='1' AND zero='0' AND um='0' AND dois='0' AND tres='0' AND quatro='0' AND
cinco='0' AND seis='0' AND sete='0' AND nove='0' THEN
est <=A;
senha <= '0';
alarme <='1';
ELSIF nove='1' AND zero='0' AND um='0' AND dois='0' AND tres='0' AND quatro='0'
AND cinco='0' AND seis='0' AND sete='0' AND oito='0' THEN
est <=A;
senha <= '0';
alarme <='1';
ELSE
est <=F;
senha <= '0';
alarme <='0';
END IF;
WHEN G=>
IF zero='1' AND um='0' AND dois='0' AND tres='0' AND quatro='0' AND cinco='0' AND
seis='0' AND sete='0' AND oito='0' AND nove='0' THEN
est <=A;
senha <= '0';
alarme <='1';
ELSIF um='1' AND zero='0' AND dois='0' AND tres='0' AND quatro='0' AND cinco='0'
AND seis='0' AND sete='0' AND oito='0' AND nove='0' THEN
est <=A;
senha <= '0';
alarme <='1';
ELSIF dois='1' AND zero='0' AND um='0' AND tres='0' AND quatro='0' AND cinco='0'
AND seis='0' AND sete='0' AND oito='0' AND nove='0' THEN
est <=A;
senha <= '0';
alarme <='1';
ELSIF tres='1' AND zero='0' AND um='0' AND dois='0' AND quatro='0' AND cinco='0'
AND seis='0' AND sete='0' AND oito='0' AND nove='0' THEN
est <=A;
senha <= '0';
alarme <='1';
ELSIF quatro='1' AND zero='0' AND um='0' AND dois='0' AND tres='0' AND cinco='0'
AND seis='0' AND sete='0' AND oito='0' AND nove='0' THEN
est <=A;
senha <= '0';
alarme <='1';
ELSIF cinco='1' AND zero='0' AND um='0' AND dois='0' AND tres='0' AND quatro='0'
AND seis='0' AND sete='0' AND oito='0' AND nove='0' THEN
est <=A;
senha <= '0';
alarme <='1';
ELSIF seis='1'AND zero='0' AND um='0' AND dois='0' AND tres='0' AND quatro='0' AND
cinco='0' AND sete='0' AND oito='0' AND nove='0' THEN
est <=A;
senha <= '0';
alarme <='1';
ELSIF sete='1' AND zero='0' AND um='0' AND dois='0' AND tres='0' AND quatro='0'
AND cinco='0' AND seis='0' AND oito='0' AND nove='0' THEN
est <=A;
senha <= '0';
alarme <='1';
ELSIF oito='1' AND zero='0' AND um='0' AND dois='0' AND tres='0' AND quatro='0' AND
cinco='0' AND seis='0' AND sete='0' AND nove='0' THEN
est <=A;
senha <= '0';
alarme <='1';
ELSIF nove='1' AND zero='0' AND um='0' AND dois='0' AND tres='0' AND quatro='0'
AND cinco='0' AND seis='0' AND sete='0' AND oito='0' THEN
est <=A;
senha <= '0';
alarme <='1';
ELSE
est <=G;
senha <= '0';
alarme <='0';
END IF;
END CASE;
END IF;
END PROCESS;
END funcionamento;