Menu
Coddy logo textTech

Sensitivity List

Parte de la sección Fundamentos del Journey de Verilog de Coddy. Lección 48 de 90.

La lista de sensibilidad indica al bloque always cuándo ejecutarse. Se escribe entre paréntesis después del símbolo @.

La lista de sensibilidad es un conjunto de señales o eventos que activan el bloque always. Cuando cualquier señal de la lista changes, el bloque executes.

Sintaxis:

always @(sensitivity_list) begin
  // El código se ejecuta cuando cambian las señales de la lista
end

Tipos de lista de sensibilidad

TipoSintaxisCuándo se ejecuta el bloque
Todas las señales (combinacional)always @(*)Cuando cambia cualquier señal dentro
Señales específicasalways @(a or b)Cuando a o b changes
Activación por flanco (secuencial)always @(posedge clk)En el rising edge del clock
Múltiples flancosalways @(posedge clk or posedge reset)En el edge del clock o el edge de reset

Opción 1: Todas las señales (*)

La opción más segura y común para la lógica combinacional.

always @(*) begin
  out = a & b;   // Se ejecuta cuando a o b cambian
end

El * incluye automáticamente todas las señales leídas en el bloque.

Opción 2: Señales específicas

always @(a or b) begin
  out = a & b;   // Se ejecuta cuando a o b cambian
end

Si olvidas una señal, el output no se actualiza en la simulación cuando esa señal changes, por lo que la simulación deja de coincidir con el hardware sintetizado.

Opción 3: Disparo por flanco (posedge)

always @(posedge clk) begin
  q <= d;        // Se ejecuta en el flanco ascendente del reloj
end

Usa posedge para el flanco rising, negedge para el flanco descendente.

Opción 4: Múltiples flancos

always @(posedge clk or posedge reset) begin
  if (reset)
    q <= 0;
  else
    q <= d;
end

Runs en clock edge o reset edge.

Errores comunes

ErrorPor qué es incorrecto
always @(a or b or c) pero usa dFalta d → la salida queda obsoleta en la simulación (desajuste entre sim/synth)
always @(posedge clk or reset)Falta posedge para reset
always @(clk)Debería usar posedge clk para flip-flops
challenge icon

Desafío

Qué hacer:

  1. Añade la lista de sensibilidad correcta para hacer funcionar este flip-flop. El bloque debe ejecutarse en el rising edge de clk.

Pruébalo tú mismo

module flipflop (
  input clk,
  input d,
  output reg q
);
  
  always @(______) begin
    q <= d;
  end

endmodule
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Fundamentos

Practica por tu cuenta: Compilador de Verilog online