Autor Tema: duda  (Leído 6992 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Elena2000

  • PIC24F
  • *****
  • Mensajes: 722
RE: duda
« Respuesta #15 en: 07 de Junio de 2005, 02:51:00 »
Hola Fer! bienvenido a este subforo! Sonrisa

Realmente no hay un método único para describir el comportamiento de un sistema lógico en VHDL, sino que puedes usar muchas mecanismos y al final aplicar lo que más fácil te resulta, la experiencia va guiándote. Lo importante es que te animes a hacer cositas, las pruebes y ya verás que te funcionarán, seguro. Y si no, pregunta por aquí que haremos lo que podamos por ayudarte, además ahora tenemos un excelente moderador, Antoniof, que es un sol.
En cuanto al kit de desarrollo de Xilinx, personalmente no le conozco, pero te diré que siempre siempre he trabajado con xilinx, y son fenomenales, y yo creo que tienen los mejores dispositivos, sin duda, además de un excelente soporte. Yo los recomiendo.

Bueno, ya nos contarás!
Bye!
Elena
PD: Ah! el ejemplo que has descrito tú para el comportamiento de MyAnd también es perfectamente correcto.

Desconectado fer_zone

  • PIC12
  • **
  • Mensajes: 74
RE: duda
« Respuesta #16 en: 07 de Junio de 2005, 08:45:00 »
Gracias Elena, ya estare esperando tener el kit de desarrollo para poner "las manos en el horno" y empezar a tener un poco de experiencia con todo esto.
En cuanto tenga algo hecho lo posteare aqui en el foro.

Una pregunta más: cómo se maneja el asunto del reloj con los CPLD y FPGA, es como los micros? reloj externo nos da frec. de trabajo, o es diferente? Gracias.


Desconectado antoniof

  • Moderadores
  • PIC24F
  • *****
  • Mensajes: 729
RE: duda
« Respuesta #17 en: 08 de Junio de 2005, 03:43:00 »
En las FPGAS el reloj externo determina la frecuencia de trabajo. Después depende de como manejes el reloj internamente. En VHDL se programan mediante procesos. Un ejemplo:
Codigo:
divisor:process (clk,rst) begin

   if ( rst ="1" ) then                 
    contador <= 0;
   elsif (clk="1" and clk"event ) then
      if (contador = 62500) then
       contador <= 0;
       clk2 <= not clk2;
      else
         contador <= contador + 1;
      end if;
   end if;
end process divisor;


Este proceso es sensible a dos señales: el reloj "clk" y el reset "rst". Si se activa el reset, se pone a cero un contador. Si se da un flanco ascendente del reloj, este contador va aumentando hasta que llega a 62500 en cuyo caso se vuleve a poner a cero y se niega otra señal "clk2". Con esto hemos construido un divisor de frecuencia por 125000. Si la frecuencia del reloj de entrada es de 50MHz, la frecuencia de la señal "clk2" es de 400Hz. Esta señal de 400Hz se puede utilizar en otros procesos para realizar diferentes operaciones, por ejemplo, un PWM para un servo, lectura de un ADC, etc.

Hay FPGAs que tienen módulos DCM (Digital Clock Manager) con los que se puede programar una frecuencia de reloj mayor a la frecuencia de entrada, es decir, que a partir de una señal de 50MHz puedes generar otra de 80MHz por ejemplo o incluso de hasta 240MHz.

Si algo caracteriza a una FPGA es que son muy flexibles, para poder hacer con ellas lo que quieras.