Menu
Coddy logo textTech

Lista de sensibilidad

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

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

La sensitivity list es un conjunto de signals o eventos que activan el bloque always. Cuando cualquier señal en la list 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 Sensitivity List

TipoSintaxisWhen Block Executes
Todos los signals (Combinational)always @(*)When cualquier señal interna changes
signals específicosalways @(a or b)When a o b changes
Trigger por Edge (sequential)always @(posedge clk)En el rising edge del clock
Múltiples edgesalways @(posedge clk or posedge reset)En el clock edge o reset edge

Opción 1: Todas las Signals (*)

El más seguro 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 signals 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, la output no se actualiza en la simulación when esa señal changes — por lo que la simulación ya no coincide con el hardware sintetizado.

Opción 3: Flanco de disparo (posedge)

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

Usa posedge para flanco de subida, negedge para flanco de bajada.

Opción 4: Bordes múltiples

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

Runs en el edge de clock o edge de reset.

Errores comunes

ErrorPor qué es incorrecto
always @(a or b or c) pero usa dFalta d → la salida se desactualiza en la simulación (desajuste entre simulación y síntesis)
always @(posedge clk or reset)Falta posedge para el reset
always @(clk)Debería usar posedge clk para flip-flops
challenge icon

Desafío

Qué hacer:

  1. Agrega la sensitivity list correcta para que este flip-flop funcione. 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