8/18/2019 INFORME PROYECTO 1.pdf
1/40
ESCUELA SUPERIOR POLITECNICA
DEL LITORAL
FACULTAD DE INGENIERIA ELECTRICA Y COMPUTACION
LABORATORIO DE SISTEMAS DIGITALES
PROYECTO #1
CONTROL DE ESTACIONAMIENTO POR CUPO
INTEGRANTES:
ROBERT POSLIGUA MUÑOZ
MARCOS DEL PEZO
PROFESOR:
ING. GABRIELA SANCHEZ
PARALELO: 11
II TERMINO 2015 - 2016
8/18/2019 INFORME PROYECTO 1.pdf
2/40
Control de estacionamiento por cupo Página 2
Contenido
Página
1 ESPECIFICACION DEL PROYECTO 3
2 DIAGRAMAS DE BLOQUES 4
3 DIAGRAMA ASM 9
4 DIAGRAMA DE TIEMPO 10
5 DIAGRAMA ESQUEMATICO/PARTICION FUNCIONAL 13
6 DESCRIPCION VHDL 18
7 REPORTE DE APROVECHAMIENTO 36
8 COMPONENTES UTILIZADOS 37
9 ASIGNACION DE PINES EN FPGA 38
10 RECOMENDACIONES Y CONCLUSIONES 40
8/18/2019 INFORME PROYECTO 1.pdf
3/40
Control de estacionamiento por cupo Página 3
1.
ESPECIFICACION DEL PROYECTO
Su funcionamiento consistirá en la activación de un sensor que proporcionará un ticket, alretirarse levantará la palanca que permanecerá arriba hasta que pase el vehículo. Elfuncionamiento será similar para la salida de vehículos del estacionamiento. El sensor detectará al automóvil, activará la señal para que pague, el usuario paga, selevanta la palanca y pasa el carro, se baja la palanca. Además tendrá la opción de que elusuario sea visitante o propietario, para lo cual existirán dos áreas de parqueodependiendo de su estatus. Características:
Cada estacionamiento se llenará con un máximo de 15 vehículos.
Con un led se indicará cuando el estacionamiento esté lleno y ya no darátickets
Si el estacionamiento no está lleno, el automovilista podrá tomar su ticket
y se levantará la palanca, ésta permanecerá arriba hasta que pase elautomóvil.
Al llegar el automóvil y después de verificar que hay lugar le preguntará sies propietario o visitante, si es propietario tendrá que teclear una clave depropietario (igual número asignado a todos los propietarios), si estácorrecta la pluma de sección propietario se levanta y lo deja pasar, y si esvisitante solo se le dará un ticket y al recogerlo se levantará la pluma desección visitante y lo dejará pasar.
Al salir el sensor detectará que hay un carro, se prende un led, que indicaque tiene que pagar, paga el dueño del carro, se apaga el led, se levanta lapalanca pasa el carro y se baja la palanca.
Restricciones: Se necesitará de un display el cual indicará cuantos carros hay en el interiordel estacionamiento el cual tendrá un límite y cuando llegue a este, ya no permitirá laentrada a ningún otro carro.
8/18/2019 INFORME PROYECTO 1.pdf
4/40
Control de estacionamiento por cupo Página 4
2.
DIAGRAMAS DE BLOQUES
Diagrama principal
Diagrama de conexión de diodos
8/18/2019 INFORME PROYECTO 1.pdf
5/40
Control de estacionamiento por cupo Página 5
Diagramas de displays
Diagrama de botoneras
Bloque divisor de frecuencia
8/18/2019 INFORME PROYECTO 1.pdf
6/40
Control de estacionamiento por cupo Página 6
Bloque comparador
Bloque comparador cuando están llenos los parqueaderos
Comparador 500
Este bloque sirve para el delay
8/18/2019 INFORME PROYECTO 1.pdf
7/40
Control de estacionamiento por cupo Página 7
Comparador clave
Mux 2 a 1
Decodificador bcd a 7 seg
Este bloque es un decodificador bcd a 7 seg anidado, osea que decodifica las unidades y decenas
para mostrar el numero de parqueos disponibles
Contador up
8/18/2019 INFORME PROYECTO 1.pdf
8/40
Control de estacionamiento por cupo Página 8
Delay
Antirrebote
Teclado
8/18/2019 INFORME PROYECTO 1.pdf
9/40
Control de estacionamiento por cupo Página 9
3.
DIAGRAMA ASM
8/18/2019 INFORME PROYECTO 1.pdf
10/40
Control de estacionamiento por cupo Página 10
4.
DIAGRAMA DE TIEMPO
Se realizara varias simulaciones debido a que no alcanza el diagrama de tiempo en el quartus para
hacerlo todo en una sola simulación
Primero tenemos la simulación, cuando ingresa un visitante:
Ahora cuando ingresa un propietario:
8/18/2019 INFORME PROYECTO 1.pdf
11/40
Control de estacionamiento por cupo Página 11
Ahora cuando está lleno parqueadero visitante, que será igual cuando esté lleno parqueadero
propietario
8/18/2019 INFORME PROYECTO 1.pdf
12/40
Control de estacionamiento por cupo Página 12
Finalmente cuando se va a simular cuando se va a sacar un carro del parqueadero, en este caso
visitante
8/18/2019 INFORME PROYECTO 1.pdf
13/40
8/18/2019 INFORME PROYECTO 1.pdf
14/40
Control de estacionamiento por cupo Página 14
8/18/2019 INFORME PROYECTO 1.pdf
15/40
Control de estacionamiento por cupo Página 15
K 1
f 2
g3
e4
d5
K 6
c8
DP7
b9
a10
DS?
Dpy Red-CC
K
f 2
g3
e4
d5
K
c8
DP7
b9
a10
DS?
Dpy Red-CC
IO, DIFFIO_B1p N3
IO, DIFFIO_B1n, (DM3B/BWS#3B)/(DM5B/BWS#5B) P3
IO, DIFFIO_B2p, (DQ3B)/(DQ5B) R3
IO, DIFFIO_B2n T3
IO, (DQS1B/CQ1B#,CDPCLK2)/(DQS1B/CQ1B#,CDPCLK2) T2
IO, PLL1_CLKOUTp R4
IO, PLL1_CLKOUTn T4
IO, DIFFIO_B4p, (DQ3B)/(DQ5B) N5
IO, DIFFIO_B4n, (DQ3B)/(DQ5B) N6IO, (DQ3B)/(DQ5B)
M6
IO, VREFB3N0 P6
IO, DIFFIO_B5p, (DQS3B/CQ3B#,DPCLK2)/(DQS3B/CQ3B#,DPCLK2) M7
IO, DIFFIO_B6p, (DQ3B)/(DQ5B) R5
IO, DIFFIO_B6n T5
IO, DIFFIO_B7p, (DQ3B)/(DQ5B) R6
IO, DIFFIO_B7n T6
IO, (DQ3B)/(DQ5B) L7
IO, DIFFIO_B8p, (DQ3B)/(DQ5B) R7
IO, DIFFIO_B8n, (DQS5B/CQ5B#,DPCLK3)/(DQS5B/CQ5B#,DPCLK3) T7
IO, DIFFIO_B9n, (DQ3B)/(DQ5B) L8
IO, DIFFIO_B10n, (DM5B/BWS#5B)/(DM5B/BWS#5B) M8
IO, DIFFIO_B11p, (DQ5B)/(DQ5B) N8
IO, DIFFIO_B12n, (DQ5B)/(DQ5B) P8
U?C
EP4CE22F17C6
12345678
161514131211109
1K
R?
Res Pack4
12345678
161514131211109
1K
R?
Res Pack4
GND
8/18/2019 INFORME PROYECTO 1.pdf
16/40
Control de estacionamiento por cupo Página 16
8/18/2019 INFORME PROYECTO 1.pdf
17/40
Control de estacionamiento por cupo Página 17
8/18/2019 INFORME PROYECTO 1.pdf
18/40
Control de estacionamiento por cupo Página 18
6.
DESCRIPCION VHDL
Código principal
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity maquinaparqueadero is
port(Resetn, Clock: in std_logic;
Smux, bp, bt, bvi, bpr, bs1, b2v, b2p : in std_logic;
b0,b1,b2,b3,b4,b5,b6,b7,b8,b9: in std_logic;
lep, let, lev, lepr, leplv, leplpr, ling, linc: out std_logic;
Q: out std_logic_vector (13 downto 0));
end maquinaparqueadero;
architecture estructural of maquinaparqueadero is
component b14seg
port (A: in std_logic_vector (3 downto 0);
B: out std_logic_vector (13 downto 0));
END component;
component Comparador
port(A: in std_logic_vector(3 downto 0);
AiguB: out std_logic);
END component;
component Comparador500
port(A: in std_logic_vector(8 downto 0);
AiguB: out std_logic);
end component;
component Comparador4
port(A: in std_logic_vector(2 downto 0);
AiguB: out std_logic);
end component;
component delay
port (clock,en: in std_logic;
8/18/2019 INFORME PROYECTO 1.pdf
19/40
Control de estacionamiento por cupo Página 19
reset: in std_logic;
Q: out std_logic_vector(8 downto 0));
end component;
component Mu2a1
port( A, B: in std_logic_vector(3 downto 0);s: in std_logic;
y: out std_logic_vector(3 downto 0));
end component;
component teclado
port (a,b,c,d,e,f,g,h,j,k: in std_logic;
reset,clock: in std_logic;
load,en: in std_logic;
cont: out std_logic_vector(2 downto 0);
Q: out std_logic_vector(13 downto 0));
end component;
component contu
port (clock, eni, eno: in std_logic;
reset: in std_logic;
Q: out std_logic_vector(3 downto 0));
end component;
component CLOCK_DIV is
PORT
( CLOCK_8MHz :IN STD_LOGIC;
CLOCK_1MHz :OUT STD_LOGIC;
CLOCK_100KHz :OUT STD_LOGIC;
CLOCK_10KHz :OUT STD_LOGIC;
CLOCK_1KHz :OUT STD_LOGIC;
CLOCK_100Hz :OUT STD_LOGIC;
CLOCK_10Hz :OUT STD_LOGIC;
CLOCK_1Hz :OUT STD_LOGIC);
end component;
component pantirebote
port ( clck,resetn, sr: in std_logic;
r: out std_logic);
end component;
component controlador
8/18/2019 INFORME PROYECTO 1.pdf
20/40
Control de estacionamiento por cupo Página 20
port ( resetn, clock, vio, pro, viq, prq: in std_logic;
ticket, pagar, clave, s1, s2v, s2p, v, p, cont4, cont500: in std_logic;
envi, enpi, envs, enps, lpagar, lticket, plumav, plumap, lv, lp, load,
delay,enc,lingrese,lincorrecto: out std_logic);
end component;
component comparador15
port(A:in std_logic_vector(3 downto 0);
AiguB: out std_logic);
end component;
component comparadorclave
port(A:in std_logic_vector(13 downto 0);
AiguB: out std_logic);
end component;
signal f100, f1m, f100k, f10k, f1k, f10, f1: std_logic;
signal pbr0, pbr1, pbr2, pbr3, pbr4, pbr5, pbr6, pbr7, pbr8, pbr9: std_logic;
signal pbp, pbt, pbv, pbpro, pbs1, pbs2v, pbs2p: std_logic;
signal iguc, igu0v, igu15v, igu0p, igu15p, ennvi, ennpi, ennvo, ennpo, loadt, c4,c500, endd,ennc :
std_logic;
signal c : std_logic_vector(13 downto 0);
signal qq : std_logic_vector(8 downto 0);
signal vo, po, qmux : std_logic_vector(3 downto 0);
signal contt: std_logic_vector(2 downto 0);
begin
-- clock
relojdiv: CLOCK_DIV port map (Clock, f1m, f100k, f10k, f1k, f100, f10, f1);
--tecladoantirebote
rebote0: pantirebote port map (f100,Resetn,b0, pbr0);
rebote1: pantirebote port map (f100,Resetn,b1, pbr1);
rebote2: pantirebote port map (f100,Resetn,b2, pbr2);
rebote3: pantirebote port map (f100,Resetn,b3, pbr3);
rebote4: pantirebote port map (f100,Resetn,b4, pbr4);
rebote5: pantirebote port map (f100,Resetn,b5, pbr5);
rebote6: pantirebote port map (f100,Resetn,b6, pbr6);
8/18/2019 INFORME PROYECTO 1.pdf
21/40
Control de estacionamiento por cupo Página 21
rebote7: pantirebote port map (f100,Resetn,b7, pbr7);
rebote8: pantirebote port map (f100,Resetn,b8, pbr8);
rebote9: pantirebote port map (f100,Resetn,b9, pbr9);
--antirebotebotones
rebotepagar: pantirebote port map (f100,Resetn,bp, pbp);reboteticket: pantirebote port map (f100,Resetn,bt, pbt);
tebotevisitante: pantirebote port map (f100,Resetn,bvi, pbv);
rebotepropietario: pantirebote port map (f100,Resetn,bpr, pbpro);
rebotes1: pantirebote port map (f100,Resetn,bs1, pbs1);
rebotes2v: pantirebote port map (f100,Resetn,b2v, pbs2v);
rebotes2p: pantirebote port map (f100,Resetn,b2p, pbs2p);
--teclado
teclado1: teclado port map
(pbr0,pbr1,pbr2,pbr3,pbr4,pbr5,pbr6,pbr7,pbr8,pbr9,Resetn,f100,loadt,ennc,contt,c);
--comparadorclave
comclave: comparadorclave port map (c,iguc);
--mss
mss: controlador port map (Resetn, f100, igu0v, igu0p, igu15v, igu0p, pbt, pbp, iguc, pbs1, pbs2v,
pbs2p, pbv, pbpro,c4,c500, ennvi, ennpi, ennvo, ennpo, lep, let, leplv, leplpr, lev, lepr,loadt,
endd,ennc,ling, linc);
--contadores
contv: contu port map (f100, ennvi, ennvo, Resetn, vo);
contp: contu port map (f100, ennpi, ennpo, Resetn, po);
--comparadorcero
comcerov: comparador port map (vo,igu0v);
comcerop: comparador port map (po,igu0p);
--comparadorquince
comquincev: comparador15 port map (vo,igu15v);
comquincep: comparador15 port map (po,igu15p);
8/18/2019 INFORME PROYECTO 1.pdf
22/40
Control de estacionamiento por cupo Página 22
--mux
mux1: mu2a1 port map (vo, po, Smux, qmux);
--binarioa14seg
seg: b14seg port map (qmux, Q);
--delay
temporizador: delay port map (f100,endd, Resetn, qq);
--
compara4: comparador4 port map (contt,c4);
compara500: comparador500 port map (qq,c500);
end estructural;
Código del controlador
library ieee;
use ieee.std_logic_1164.all;
entity controlador is
port ( resetn, clock, vio, pro, viq, prq: in std_logic;
ticket, pagar, clave, s1, s2v, s2p, v, p, cont4, cont500: in std_logic;
envi, enpi, envs, enps, lpagar, lticket, plumav, plumap, lv, lp, load,
delay,enc,lingrese,lincorrecto: out std_logic);
end controlador;
architecture solucion of controlador is
type estado is (ta, tb, tc, td, te, tf, tg, th, ti, tj, tk, tl, tm, tn,tp ,tq ,tr ,ts , tt, tu ,tv ,tw ,tx ,ty
,tz ,taa ,tab ,tac ,tad, tae, taf, tag, tah, tai, taj, tal, tam, tan, tap, taq, tar, tas, tat, tma, tmb, tva,
tvb);
signal y: estado;
begin process (resetn, clock)
begin
if resetn='1' then y
8/18/2019 INFORME PROYECTO 1.pdf
23/40
Control de estacionamiento por cupo Página 23
when tb => if prq='0' then if viq='0' then y
8/18/2019 INFORME PROYECTO 1.pdf
24/40
Control de estacionamiento por cupo Página 24
when tan => if pagar='0' then y
8/18/2019 INFORME PROYECTO 1.pdf
25/40
Control de estacionamiento por cupo Página 25
when tv => lingrese load delay
8/18/2019 INFORME PROYECTO 1.pdf
26/40
Control de estacionamiento por cupo Página 26
signal y: estado;
begin
process (resetn, clck)
begin
if resetn='1' then y
8/18/2019 INFORME PROYECTO 1.pdf
27/40
Control de estacionamiento por cupo Página 27
end delay;
architecture solucion of delay is
signal a,b: std_logic_vector(8 downto 0);
begin
process(clock,reset) is
beginb
8/18/2019 INFORME PROYECTO 1.pdf
28/40
Control de estacionamiento por cupo Página 28
CLOCK_10Hz :OUT STD_LOGIC;
CLOCK_1Hz :OUT STD_LOGIC);
END CLOCK_DIV;
ARCHITECTURE a OF CLOCK_DIV IS
SIGNAL count_1Mhz: STD_LOGIC_VECTOR(2 DOWNTO 0);SIGNAL count_100Khz, count_10Khz, count_1Khz: STD_LOGIC_VECTOR(2 DOWNTO 0);
SIGNAL count_100hz, count_10hz, count_1hz: STD_LOGIC_VECTOR(2 DOWNTO 0);
SIGNAL clock_1Mhz_int, clock_100Khz_int, clock_10Khz_int, clock_1Khz_int: STD_LOGIC;
SIGNAL clock_100hz_int, clock_10hz_int, clock_1hz_int: STD_LOGIC;
BEGIN
PROCESS
BEGIN
-- Divide by 8
WAIT UNTIL clock_8Mhz'EVENT and clock_8Mhz = '1'; -- 8 Mhz
IF count_1Mhz < 7 THEN
count_1Mhz
8/18/2019 INFORME PROYECTO 1.pdf
29/40
Control de estacionamiento por cupo Página 29
ELSE
count_100Khz
8/18/2019 INFORME PROYECTO 1.pdf
30/40
Control de estacionamiento por cupo Página 30
IF count_10hz /= 4 THEN
count_10hz
8/18/2019 INFORME PROYECTO 1.pdf
31/40
Control de estacionamiento por cupo Página 31
"11111101111001" when "0011",
"11111100110011" when "0100",
"11111101011011" when "0101",
"11111101011111" when "0110",
"11111101110000" when "0111",
"11111101111111" when "1000","11111101110011" when "1001",
"01100001111110" when "1010",
"01100000110000" when "1011",
"01100001101101" when "1100",
"01100001111001" when "1101",
"01100000110011" when "1110",
"01100001011011" when "1111",
"00000000000000" when others;
end solution;
Codigo teclado
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
use ieee.std_logic_unsigned.all;
entity teclado is
port (a,b,c,d,e,f,g,h,j,k: in std_logic;
reset,clock: in std_logic;
load,en: in std_logic;
cont: out std_logic_vector(2 downto 0);
Q: out std_logic_vector(13 downto 0));
end teclado;
architecture solucion of teclado is
signal i: std_logic_vector(2 downto 0);
signal l,m,n,o: std_logic_vector(13 downto 0);
begin
process(reset,clock) is
begin
8/18/2019 INFORME PROYECTO 1.pdf
32/40
Control de estacionamiento por cupo Página 32
if reset ='1' then
i
8/18/2019 INFORME PROYECTO 1.pdf
33/40
Control de estacionamiento por cupo Página 33
l
8/18/2019 INFORME PROYECTO 1.pdf
34/40
Control de estacionamiento por cupo Página 34
elsif i="010" then
if a='1' then
n
8/18/2019 INFORME PROYECTO 1.pdf
35/40
Control de estacionamiento por cupo Página 35
o
8/18/2019 INFORME PROYECTO 1.pdf
36/40
Control de estacionamiento por cupo Página 36
7.
REPORTE DE APROVECHAMIENTO
8/18/2019 INFORME PROYECTO 1.pdf
37/40
Control de estacionamiento por cupo Página 37
8.
COMPONENTES UTILIZADOS
Componentes Cantidad
FPGA 1Bus de datos de 40 entradas 2
Botoneras 18
displays 7 segmentos , CC 2
resistencias de 390 ohmios 24
resistencias de 82K ohmios 19
leds 8
Cables macho 50
Switch 1
8/18/2019 INFORME PROYECTO 1.pdf
38/40
Control de estacionamiento por cupo Página 38
9.
ASIGNACION DE PINES EN FPGA
8/18/2019 INFORME PROYECTO 1.pdf
39/40
Control de estacionamiento por cupo Página 39
8/18/2019 INFORME PROYECTO 1.pdf
40/40
10.
RECOMENDACIONES Y CONCLUSIONES
RECOMENDACIONES
Arme su circuito con cables jumpers ya que si lo hace con los tradicionales utp es muyprobable que tenga muchos errores de rebote o de contacto y en este tipo de proyectos
se debe cuidar mucho eso.
Verifique que su protoboard este en buenas condiciones antes de implementar su
proyecto. Simule su programa correctamente antes de implementarlo.
Verifique continuidad en los buses de datos que entregan en el laboratorio ya que muchos
son muy viejos y han tenido muchos usos y eso hizo que nos demoremos en la entrega de
este primer proyecto debido a que nos dimos cuenta que era un bus de datos que nos
ocasionaba rebotes en los pulsadores y se nos salte estados el programa y no funciones
correctamente.
CONCLUSIONES
Las tarjetas FPGA de Altera son muy útiles en este tipo de proyectos, para sistemas
digitales, debido a su funcionalidad y versatilidad.
Los sistemas digitales más complejos necesitarían otro tipo de controlador, mas avanzado,
ya que en este proyecto usamos los dos puertos JP1 y JP2 ya que tuvimos que hacer un
teclado para ingresar la contraseña y nos ocupo mas pines de E/S de la FPGA.
Top Related