INFORME PROYECTO 1.pdf

download INFORME PROYECTO 1.pdf

of 40

Transcript of INFORME PROYECTO 1.pdf

  • 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.