Menu
Coddy logo textTech

Lista de Sensibilidade

Parte da seção Fundamentos do Journey de Verilog da Coddy — lição 48 de 90.

A sensitivity list diz ao bloco always when executar. Ela é escrita dentro de parênteses após o símbolo @.

A sensitivity list é um conjunto de signals ou eventos que acionam o bloco always. Quando qualquer signal na list changes, o bloco executes.

Sintaxe:

always @(sensitivity_list) begin
  // O código é executado quando os sinais na lista mudam
end

Tipos de Lista de Sensibilidade

TipoSintaxeQuando o Bloco Executa
Todos os sinais (combinacional)always @(*)Quando qualquer sinal interno muda
Sinais específicosalways @(a or b)Quando a ou b muda
Gatilho de borda (sequencial)always @(posedge clk)Na borda de subida do clock
Múltiplas bordasalways @(posedge clk or posedge reset)Na borda do clock ou borda de reset

Opção 1: Todos os Sinais (*)

A mais segura e comum para lógica combinacional.

always @(*) begin
  out = a & b;   // Executa quando a ou b mudam
end

O * inclui automaticamente todos os sinais lidos no bloco.

Opção 2: Sinais Específicos

always @(a or b) begin
  out = a & b;   // Executa quando a ou b mudam
end

Se você esquecer um sinal, o output não atualiza na simulação when esse sinal changes — então a simulação não corresponde mais ao hardware sintetizado.

Opção 3: Edge Trigger (posedge)

always @(posedge clk) begin
  q <= d;        // Executa na borda de subida do clock
end

Use posedge para rising edge, negedge para falling edge.

Opção 4: Múltiplas Edges

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

Executa na borda do clock ou na borda do reset.

Erros Comuns

ErroPor que está errado
always @(a or b or c) mas usa dFalta d → a saída fica desatualizada na simulação (incompatibilidade entre simulação e síntese)
always @(posedge clk or reset)Falta posedge para o reset
always @(clk)Deve usar posedge clk para flip-flops
challenge icon

Desafio

O que fazer:

  1. Adicione a sensitivity list correta para fazer este flip-flop funcionar. O bloco deve ser executado na rising edge do clk.

Experimente você mesmo

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

endmodule
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Fundamentos