Menu
Coddy logo textTech

Sensitivitätsliste

Teil des Abschnitts Grundlagen der Verilog-Journey von Coddy — Lektion 48 von 90.

Die Sensitivitätsliste sagt dem always-Block, wann er ausgeführt wird. Sie wird in Klammern nach dem @-Symbol geschrieben.

Die Sensitivity-Liste (Empfindlichkeitsliste) ist eine Reihe von Signalen oder Ereignissen, die den always-Block auslösen. Wenn sich ein beliebiges Signal in der Liste ändert, wird der Block ausgeführt.

Syntax:

always @(sensitivity_list) begin
  // Code wird ausgeführt, wenn sich Signale in der Liste ändern
end

Arten der Sensitivity List

TypSyntaxWhen Block Executes
Alle signals (combinational)always @(*)When jedes Signal darin changes
Spezifische signalsalways @(a or b)When a oder b changes
edge Trigger (sequential)always @(posedge clk)Bei rising edge des clock
Mehrere edgesalways @(posedge clk or posedge reset)Bei clock edge oder reset edge

Option 1: Alle Signale (*)

Am sichersten und gebräuchlichsten für kombinatorische Logik.

always @(*) begin
  out = a & b;   // Wird ausgeführt, wenn sich a oder b ändern
end

Das * fügt automatisch alle Signale hinzu, die in dem Block gelesen werden.

Option 2: Spezifische Signale

always @(a or b) begin
  out = a & b;   // Läuft, wenn a oder b sich ändern
end

Wenn Sie ein Signal vergessen, wird der Ausgang in der Simulation nicht aktualisiert, wenn sich dieses Signal ändert — sodass die Simulation nicht mehr mit der synthetisierten Hardware übereinstimmt.

Option 3: Edge Trigger (posedge)

always @(posedge clk) begin
  q <= d;        // Läuft bei steigender Taktflanke
end

Verwenden Sie posedge für die steigende Flanke (rising edge), negedge für die fallende Flanke.

Option 4: Mehrere Flanken

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

Wird bei Taktflanke oder Reset-Flanke ausgeführt.

Häufige Fehler

FehlerWarum falsch
always @(a or b or c) verwendet aber dFehlendes d → Ausgang veraltet in der Simulation (Sim/Synth-Abweichung)
always @(posedge clk or reset)Fehlendes posedge für reset
always @(clk)Sollte posedge clk für Flip-Flops verwenden
challenge icon

Aufgabe

Was zu tun ist:

  1. Füge die richtige Sensitivitätsliste hinzu, damit dieser Flipflop funktioniert. Der Block sollte bei der steigenden Flanke von clk ausgeführt werden.

Probier es selbst

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

endmodule
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Grundlagen