PRoblema con VHDL (Spartan 3 XC3S250)

Buenas tardes comunida tengo un un proyecto que me gustaria hacer con el Spartan 3 XC3S250 mas que nada lo que pretendo realizar en el es con codigo VHDL y el proyecto es simplemente controlar una banda trasportadora con 6 sensores.

Mi problema es que hay una parte que despues de que la banda empieza a funcionar y al ser detectada por el primer sensor la banda debe seguir moviendose 4 segundos mas despues de haber sido detectada.

Y no tengo idea como hacer eso y en mi poca investigacion he encontrado los RETRASOS los COTADORES y la CDM (Digital Clock Manager) si alguien podria darme un ejemplo de hacer el tiempo despues de haber sido detectado por el sensor se lo agradeceria mucho

mi correo:

 
Última edición por un moderador:
Si mandas una imagen esquematica del proyecto, por lo menos
para tener una idea de como funciona, porque la verdad no se te entiende
muy bien, y asi es dificil que podamos ayudarte. Saludos.
 
Te recomiendo implementar un divisor de tu señal de reloj que si no me equivoco sera de 25 0 50 MHz para que te de el tiempo que necesitas.
En este link encuentras un ejemplo del divisor
http://unelectronica.260mb.com/2009/11/divisor-vhdl/

Igual dejo el codigo del divisor
Código:
--instanciacion
 --component divisor_parmatrizado is 
-- generic(x : integer);
--rango a dividir
 -- Port ( CLKIN : in STD_LOGIC; -- CLKOUT : out STD_LOGIC);
 --end component;
 --mapeado:
 --m1:divisor_parmatrizado generic map(valor a dividir) port map(A,B);
 library IEEE; use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL; 
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity divisor_paramatrizado is generic(x : integer:=10);
--rango a dividir x*2 valor por default 20
  Port ( CLKIN : in STD_LOGIC;
         CLKOUT : out STD_LOGIC);
  end divisor_paramatrizado;
architecture Behavioral of divisor_paramatrizado is
   signal contador :integer range 0 to x:=1;
   signal clkt: std_logic:='0';
   begin process(CLKIN) 
    begin
     if CLKIN'event and CLKIN='1' then 
       if contador= x-1 then 
         contador<=0; clkt<=not clkt;
        else
         contador<=contador+1; 
       end if;
     end if;
   CLKOUT<=CLKT; 
  end process;
 end Behavioral;


Por cierto no se puede publicar el correo
 
Última edición:
Atrás
Arriba