Necesito prescalar un Spartan 3E

Hola comunidad

Me he topado con este problema
Los FPGA Spartan 3E cuentan con un cristal de 50 MHz y necesito sacar una frecuencia de 15.625 Hz y otra de 160 Hz.
He prescalado seNales pero al tanteo, nunca he necesitado de una con mucha presicion, espero su ayuda.

Gracias.


:)
 
Osea seria 50MHz/15.625Hz = 3,200,000 pasos

que seria en programacion algo asi

clk2<='1' when cont<="1100001101010000000000" else
0;

obvio que "cont" va a tener un contador en un process aparte
y "1100001101010000000000" serian los 3,200,000 pasos?
 
Si, eso!... perdon por la division, pero eso pasa por hacer las cosas con la calculadora !

Asegurate q los registros pueden contener un numero tan grande. (con un registro de 32 bits creo q alcanza).
si no, solo pon contadores en cascada.

Salu2
 
Hola que tal...
Son nuevo en esto de los FPGA y quisiera me pudieras ayudar.
Tengo una targeta Spartan3E XC3S500E-FG3200 la cual he querido programar por medio del impac y del Digilent Adep (rev 1.0.5) de digilent pero lo unic que consigo es un mensaje de error de conexion no se si tenga que mover algunos jumpers o ya no se que hacer.
Me baje los manuales de Xilinx he incluso instale un controlador y ni asi he podido tener acceso a ella.
Cualquier comentario es bienbenido

Tengo el windowa vista home edition
 
Lo mas probable es porque tienes Windows Vista, yo he programado mi FPGA sin problemas con Digilent. Verifica que estes eligiendo el componente correcto.
 
Ha... gracias por la ayuda.
Bueno, tengo la espartan 3E y el cable USB, el cual finalmente no pude hacer funcionar.
Sin embargo pude conseguir un cable JTAG y, buala ... en cuanto lo conecte lo reconocio
el adep, incluso con en win-vista....
Muchas gracias por tu ayuda.

y por cierto como vas con tu preescalador... aqui te evio algo que te puede ayudar

Código:
ENTITY señal IS
  port(
         clk: in std_logic;
         out: out std_logic
         );
END señal;

architecture  divisor of señal is
  type estados is (uno,dos,tres);
  signal estado1, Nestado1 : estados;
  signal estado2, Nestado2 : estados;
  signal salida1,salida2:std_logic;
begin
process(clk)
begin
 if(clk'event and ckl='1') then
    estado1 <= Nestado1;
 end if;
end process;

process(clk)
begin
  if(clk'event and clk='0') then
     estado2 <= Nestado2;
  end if
end process

process(estado1)
begin
 case estado1 is
   when uno =>
     salida1 <= '0';
     Nestado1 <= dos;
   when dos =>
     salida1 <= '1';
     Nestado1 <= tres;
   when tres =>
     salida1 <= '1';
     Nestado <= uno;
   end case
end process

process (estado2)
begin
  when uno =>
     salida2 <= '1';
     nestado2 <= dos;
  when dos =>
     salida2 <= '0';
      nestado2 <= tres;
  when tres =>
    salida2 <= '1';
    nestado uno;
  end case;
end process;
 out <= salida1 and salida2;
end divisor

basicamente es un juego con el reloj de 50MHZ
si te interesa te puedo pasar mas información a tu correo...
 
Última edición por un moderador:
Atrás
Arriba