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

Bloques initial en Verilog: Propósito, sintaxis y uso no sintetizable

Un conjunto de sentencias Verilog se ejecutan secuencialmente en simulación. Estas se colocan en un bloque procedimental. Hay dos tipos principales: initial y always.

Sintaxis

initial [sentencia única]
initial begin [múltiples sentencias] end

¿Para qué sirve el bloque initial?

Un bloque initial no es sintetizable y no puede convertirse en esquema hardware con elementos digitales. Por tanto, su propósito principal es simulación: inicializar variables y impulsar puertos de diseño con valores específicos.

¿Cuándo inicia y termina un bloque initial?

Inicia al comienzo de simulación en tiempo 0. Se ejecuta una sola vez durante toda la simulación. Termina cuando todas sus sentencias se ejecutan.

Bloques initial en Verilog: Propósito, sintaxis y uso no sintetizable

La imagen muestra módulo behave con señales internas a y b. El initial tiene una sentencia, no necesita begin/end. Asigna 2'b10 a a al inicio en tiempo 0.

¿Qué pasa si hay elemento de delay?

El código siguiente tiene sentencia adicional asignando valor a b tras 10 unidades desde sentencia anterior. a se asigna primero, luego tras 10 unidades b = 0.

Bloques initial en Verilog: Propósito, sintaxis y uso no sintetizable

¿Cuántos bloques initial permitidos en un módulo?

Sin límites. El código siguiente tiene tres bloques initial que inician a la vez y corren en paralelo. Según sentencias y delays, tiempo para terminar varía.

Bloques initial en Verilog: Propósito, sintaxis y uso no sintetizable

En el ejemplo, primer bloque delay 20, segundo total 50 (10+40), tercero 60. Simulación toma 60 unidades porque al menos un initial corre hasta 60.

$finish es tarea de sistema Verilog que dice al simulador terminar simulación actual.

Si el último bloque tuviera delay 30, simulación terminaría en 30 matando otros initial activos.

initial begin #30 $finish; end
Haz clic aquí para presentación con ejemplo de simulación !

Verilog

  1. Dominar Verilog: Tutorial completo para diseño de circuitos digitales
  2. Dominar la concatenación en Verilog: Guía práctica
  3. Verilog Esencial: Resumen conciso
  4. Comprender las asignaciones en Verilog: tipos, sintaxis y mejores prácticas
  5. Bloqueante vs. No bloqueante en Verilog: Diferencias clave explicadas
  6. Dominar las funciones en Verilog para diseño RTL eficiente
  7. Comprender las Tasks en Verilog: Funciones vs Tasks, sintaxis y uso
  8. Generador de reloj en Verilog: Guía de diseño e implementación
  9. Dominar las funciones matemáticas en Verilog para diseño de hardware eficiente
  10. Dominar $timeformat en Verilog: Control de precisión y visualización
  11. Comprender e imprimir timescales de Verilog en cualquier alcance