Saltar al contenido

¿Cuál es el uso de ‘evento en vhdl?

Nuestros programadores estrellas han agotado sus depósitos de café, en su búsqueda noche y día por la solución, hasta que Alexa halló la respuesta en Beanstalk por lo tanto ahora la compartimos con nosotros.

La lista de sensibilidad es principalmente un concepto utilizado por el simulador para programar la ejecución de procesos. Una herramienta de síntesis generalmente descartará la lista de sensibilidad.
¿Cuáles son los resultados al ejecutar los fragmentos de código anteriores a través de una herramienta de síntesis? La implementación sin 'event inferirá un pestillo, porque eso es lo que una herramienta de síntesis “ve” cuando mira el código.

Resultados de Xilinx XST para if clk'event and clk = '1' then:

Adders/Subtractors : 1  
8-bit adder        : 1  
Registers          : 1  
8-bit register     : 1 

Resultados de Xilinx XST para if clk = '1' then:

Adders/Subtractors : 1  
8-bit adder        : 1  
Latches            : 8  
1-bit latch        : 8

Los resultados anteriores se obtuvieron sintetizando un contador ascendente de 8 bits.

EDITAR (2015-06-11): En IEEE-1076.6-1999 “Estándar IEEE para la síntesis de nivel de transferencia de registro (RTL) VHDL” las expresiones que “representará un borde de reloj positivo cuando se use como una condición en un Si declaración” se definen explícitamente como:

  • RISING_EDGE( clk_signal_name )
  • clk_signal_name’EVENTO y clk_signal_name = ‘1’
  • clk_signal_name = ‘1’ y clk_signal_name’EVENTO
  • no clk_signal_name’ESTABLE y clk_signal_name = ‘1’
  • clk_signal_name = ‘1’ yno clk_signal_name’ESTABLE

Comenzando con la definición de VHDL de wikipedia

VHDL (Lenguaje de descripción de hardware VHSIC) es un lenguaje de descripción de hardware utilizado en la automatización del diseño electrónico para describir digital y
mixed-señal sistemas tales como arreglos de puertas programables en campo y circuitos integrados. VHDL también se puede utilizar como paralelo de propósito general lenguaje de programación.

VHDL se usa principalmente para describir circuitos digitales para ASIC o FPGA, pero se puede usar para sistemas analógicos digitales (mixed-señal) o incluso utilizarse para describir procesos paralelos.

‘evento significa un cambio en una señal digital, es decir, un borde. Combinado con ‘1’ tu defines un flanco ascendente. Esto es casi lo mismo que el borde_ascendente(clk) función. Aquí la ligera diferencia entre ellos (para usuarios avanzados).

Entonces, si no usa ‘event’, está describiendo un proceso activado durante el alto nivel de clk. Por ejemplo, para un ciclo de trabajo del 50 % de un reloj de 40 MHz, el reloj está en el estado ‘1’ durante 12,5 ns. ¿Qué sucede con el contador durante estos 12,5 ns? ¿Cuántas veces contará durante estos 12.5ns? Y lo mas importante, ¿El sistema en el que se han escrito estos códigos es capaz de incrementar un contador usando un nivel de reloj? Probablemente no, aunque tu simulador te da los mismos resultados. Tenga cuidado con los resultados del simulador, porque los simuladores son diferentes a los sintetizadores y pueden proporcionar resultados muy diferentes.

VHDL es un lenguaje generalista que se usa ampliamente para describir circuitos digitales. Entonces, cada fabricante tiene sus plantillas óptimas para describir contadores, registros, memorias… Y reloj’evento y reloj=’1′ o borde_ascendente(clk) son estándar de facto para describir un flanco ascendente de una señal incluida en la lista de sensibilidad. De la misma manera, si describe un reinicio asíncrono, coloca la señal de reinicio en la lista de sensibilidad y un nivel alto o bajo que inicializa el registro todo el tiempo que se afirma la señal, no en un instante definido con un borde.

process (clock, reset) 
begin
   if reset='1' then 
      count <= (others => '0');
   elsif clock='1' and clock'event then
       <=  + 1;
   end if;
end process;

Para resumir, cada fabricante de lógica programable utiliza un conjunto limitado y definido de definiciones VHDL para describir sus sistemas. Te recomiendo que busques las plantillas VHDL o Verilog para Xilinx o Altera. El sintetizador entiende correctamente estas plantillas para traducirlas a elementos de un chip lógico programable particular, o ASIC u otros sistemas.

Recuerda algo, que tienes permiso de añadir una tasación verdadera si diste con la contestación.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags :

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *