Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Verilog

Bloque inicial de Verilog

Un conjunto de declaraciones de Verilog generalmente se ejecutan secuencialmente en una simulación. Estas declaraciones se colocan dentro de un procedimiento bloquear. Existen principalmente dos tipos de procedimiento bloques en Verilog - inicial y siempre

Sintaxis

  
  
	initial 
		[single statement]

	initial begin
		[multiple statements]
	end

  

¿Para qué sirve el bloque inicial?

Un initial El bloque no es sintetizable y, por lo tanto, no se puede convertir en un esquema de hardware con elementos digitales. Por lo tanto, los bloques iniciales no sirven para mucho más que para ser utilizados en simulaciones. Estos bloques se utilizan principalmente para inicializar variables y controlar puertos de diseño con valores específicos.

¿Cuándo comienza y termina un bloque inicial?

Un initial El bloque se inicia al comienzo de una simulación en la unidad de tiempo 0. Este bloque se ejecutará una sola vez durante toda la simulación. Ejecución de un initial bloque finaliza una vez que se ejecutan todas las declaraciones dentro del bloque.

verilog-initial-block

La imagen que se muestra arriba tiene un module llamado comportarse que tiene dos señales internas llamadas a y b. El initial el bloque tiene solo una declaración y, por lo tanto, no es necesario colocar la declaración dentro de begin y end . Esta declaración asigna el valor 2'b10 a cuando el bloque inicial se inicia en el tiempo 0 unidades.

¿Qué sucede si hay un elemento de retraso?

El código que se muestra a continuación tiene una declaración adicional que asigna algún valor a la señal b. Sin embargo, esto sucede solo después de 10 unidades de tiempo desde la ejecución de la instrucción anterior. Esto significa que a a se le asigna primero el valor dado y luego, después de 10 unidades de tiempo, a b se le asigna 0.

verilog-initial-block-begin-end

¿Cuántos bloques iniciales se permiten en un módulo?

No hay límites para el número de initial bloques que se pueden definir dentro de un módulo.

El código que se muestra a continuación tiene tres initial todos los cuales se inician al mismo tiempo y se ejecutan en paralelo. Sin embargo, dependiendo de las declaraciones y los retrasos dentro de cada bloque inicial, el tiempo necesario para terminar el bloque puede variar.

verilog-multiple-initial-blocks

En este ejemplo, el primer bloque tiene un retraso de 20 unidades, mientras que el segundo tiene un retraso total de 50 unidades (10 + 40) y el último bloque tiene un retraso de 60 unidades. Por lo tanto, la simulación tarda 60 unidades de tiempo en completarse, ya que hay al menos un bloque inicial que sigue ejecutándose hasta las 60 unidades de tiempo.

$finish es una tarea del sistema Verilog que le dice al simulador que finalice la simulación actual.

Si el último bloque tuviera un retraso de 30 unidades de tiempo como se muestra a continuación, la simulación habría terminado en 30 unidades de tiempo, matando así a todos los demás initial bloques que están activos en ese momento.

  
  
	initial begin
		#30 $finish;
	end

  

Consulte el ejemplo de flash que se muestra a continuación para ver cómo un initial bloque se ejecuta en una simulación.

¡Haga clic aquí para ver una presentación de diapositivas con un ejemplo de simulación!


Verilog

  1. Tutorial de Verilog
  2. Concatenación Verilog
  3. Verilog - En pocas palabras
  4. Asignaciones de Verilog
  5. Bloqueo y no bloqueo de Verilog
  6. Funciones de Verilog
  7. Tarea Verilog
  8. Generador de reloj Verilog
  9. Funciones matemáticas de Verilog
  10. Formato de hora de Verilog
  11. Alcance de la escala de tiempo de Verilog