Menu
Coddy logo textTech

Lista di sensibilità

Fa parte della sezione Fondamenti del percorso Verilog di Coddy. Lezione 48 di 90.

L’elenco di sensibilità indica al blocco always quando eseguire. Si scrive tra parentesi dopo il simbolo @.

L’elenco di sensibilità è un insieme di segnali o eventi che attivano il blocco always. Quando cambia un qualsiasi segnale nell’elenco, il blocco viene eseguito.

Sintassi:

always @(sensitivity_list) begin
  // Il codice viene eseguito quando cambiano i segnali nell'elenco
end

Tipi di lista di sensibilità

TipoSintassiQuando viene eseguito il blocco
Tutti i segnali (combinazionale)always @(*)Quando cambia un qualsiasi segnale al suo interno
Segnali specificialways @(a or b)Quando cambia a o b
Attivazione sul fronte (sequenziale)always @(posedge clk)Sul fronte di salita del clock
Più frontialways @(posedge clk or posedge reset)Sul fronte del clock o sul fronte di reset

Opzione 1: Tutti i segnali (*)

Il più sicuro e comune per la logica combinatoria.

always @(*) begin
  out = a & b;   // Si attiva quando a o b cambia
end

* include automaticamente tutti i segnali letti nel blocco.

Opzione 2: Segnali specifici

always @(a or b) begin
  out = a & b;   // Viene eseguito quando a o b cambia
end

Se dimentichi un segnale, l'output non si aggiorna nella simulazione quando quel segnale cambia, quindi la simulazione non corrisponde più all'hardware sintetizzato.

Opzione 3: Attivazione sul fronte (posedge)

always @(posedge clk) begin
  q <= d;        // Viene eseguito sul fronte di salita del clock
end

Usa posedge per il fronte di salita, negedge per il fronte di discesa.

Opzione 4: più fronti

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

Viene eseguito sul fronte di clock o sul fronte di reset.

Errori comuni

ErrorePerché è sbagliato
always @(a or b or c) ma usa dManca d → l'output diventa obsoleto nella simulazione (discordanza tra sim/synth)
always @(posedge clk or reset)Manca posedge per reset
always @(clk)Per i flip-flop si dovrebbe usare posedge clk
challenge icon

Sfida

Cosa fare:

  1. Aggiungi l'elenco di sensibilità corretto per far funzionare questo flip-flop. Il blocco deve essere eseguito sul fronte di salita di clk.

Provalo tu

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

endmodule
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Fondamenti

Esercitati da solo: Compilatore Verilog online