Menu
CoddyTech

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 uno qualsiasi dei segnali 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 (combinatori)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
Fronte multiploalways @(posedge clk or posedge reset)Sul fronte del clock o sul fronte del reset

Opzione 1: Tutti i segnali (*)

Il più sicuro e comune per la logica combinatoria.

always @(*) begin
  out = a & b;   // Viene eseguito 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;        // Si attiva 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

Si esegue sul fronte del clock o sul fronte del reset.

Errori comuni

ErrorePerché è sbagliato
always @(a or b or c) ma usa dManca d → l'output diventa obsoleto nella simulazione (incoerenza tra simulazione e sintesi)
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 la lista di sensibilità corretta 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