Haz una pregunta
  Foros de Electrónica » Diseño digital » Interfaces y Programación
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

05/12/2010 #1


Ayuda de nuevo con semáforo VHDL
Ya anteriormente publique este semáforo pero ahora tengo un problema diferente, el mismo semáforo con menos estados funciono perfectamente, ahora lo que necesite fue aumentar el tiempo de 60 segundos a 80 segundos toda la transición de los colores, y a la hora de la simulación me tiro unos pequeños flancos en el color verde que no me gustaron para nada. En el color verde se le agrego una señal de reloj extra para que el parpadeo sea más rápido.

Código PHP:
library ieee;
use 
ieee.std_logic_1164.all;
use 
ieee.std_logic_unsigned.all;
entity semaforodobleconif is 
    port 
(clkalterninin std_logic;
        
RAVout std_logic);
end semaforodobleconif;
architecture contando of semaforodobleconif is
signal C1
C2C3std_logic_vector (6 downto 0);
begin
    process 
(clkCbegin
        
if (clk'event and clk = '1') then
            if C < 79 then
                C <= C + "0000001";
            else
                C <= "0000000";
            end if;
        end if;
    end process;
    process (C) begin
        if (C >= 0 and C <= 41) then
                    R <= '
1'; A <= '0'; V <= '0';
                elsif (C >= 42 and C <= 72) then
                    R <= '
0'; A <= '0'; V <= '1';
                elsif (C >= 73 and C <= 76) then
                    R <= '
0'; A <= '0'; V <= not alternin;
                else
                    R <= '
0'; A <= '1'; V <= '0';
        end if;
    end process;
end contando; 
Esta es la simulación del semáforo con 60 estados que funciono perfectamente.


Esta es la nueva simulación del semáforo con 80 estados que saca flancos raros.


Si alguien tiene idea a que se debe este ruido en la simulación le agradecería me saque de la duda, logre eliminarlo poniendo el código de la siguiente manera...

Código PHP:
process (Cbegin
        
if (>= and <= 42then
                    R 
<= '1'<= '0'<= '0';
                
elsif (>= 42 and <= 72then
                    R 
<= '0'<= '0'<= '1';
                
elsif (>= 73 and <= 76then
                    R 
<= '0'<= '0'<= not alternin;
                else
                    
<= '0'<= '1'<= '0';
        
end if;
end process
pero no me parece correcto ya que el rojo tiene que durar 42 segundos, el verde 35 con todo y los parpadeos y el amarillo 3 segundos, cualquier ayuda gracias de antemano.
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Buscar más temas sobre:
Lupa Interfaces y Programación

Lenguajes de programación, gestión y manejo de puertos

Cerrar
Foros de Electrónica » Diseño digital » Interfaces y Programación

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.