desktop

Problema con semaforo en VHDL por paralelo PLD

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.

PHP:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity semaforodobleconif is 
	port (clk, alternin: in std_logic;
		R, A, V: out std_logic);
end semaforodobleconif;
architecture contando of semaforodobleconif is
signal C1, C2, C3: std_logic_vector (6 downto 0);
begin
	process (clk, C) begin
		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...

PHP:
process (C) begin
		if (C >= 0 and C <= 42) 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;

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.
 
Atrás
Arriba