Menu
Coddy logo textTech

Sensitivity List

Coddy'nin Verilog Journey'sinin Temeller bölümünün bir parçası. Ders 48 / 90.

Duyarlılık listesi, always bloğuna ne zaman çalıştırılacağını bildirir. @ sembolünden sonra parantezlerin içinde yazılır.

Duyarlılık list, always bloğunu tetikleyen signals veya olaylar kümesidir. when list içindeki herhangi bir signals changes, blok executes.

Sözdizimi:

always @(sensitivity_list) begin
  // Kod, listedeki sinyaller değiştiğinde çalışır
end

Sensitivity List Türleri

TürSözdizimiwhen Block executes
Tüm signals (kombinasyonel)always @(*)İçerideki herhangi bir signals changes
Belirli signalsalways @(a or b)a veya b changes olduğunda
Edge tetikleyici (Sequential)always @(posedge clk)clock'un rising edge'inde
Birden çok edgealways @(posedge clk or posedge reset)clock edge'i veya reset edge'inde

Seçenek 1: Tüm Sinyaller (*)

Kombinasyonel mantık için en güvenli ve en yaygın olanıdır.

always @(*) begin
  out = a & b;   // a veya b değiştiğinde çalışır
end

*, blokta okunan tüm signals öğelerini otomatik olarak içerir.

Seçenek 2: Belirli Sinyaller

always @(a or b) begin
  out = a & b;   // a veya b değiştiğinde çalışır
end

Bir sinyali unutursanız, o sinyal değiştiğinde simülasyonda output güncellenmez; bu nedenle simülasyon artık sentezlenmiş donanımla eşleşmez.

Seçenek 3: Kenar Tetiklemeli (posedge)

always @(posedge clk) begin
  q <= d;        // Saatin yükselen kenarında çalışır
end

Yükselen kenar için posedge, düşen kenar için negedge kullanın.

Seçenek 4: Birden Fazla Kenar

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

Runs, clock edge veya reset edge üzerinde çalışır.

Yaygın Hatalar

HataNeden Yanlış
always @(a or b or c) kullanılır, ancak d kullanılırd eksik → simülasyonda output güncelliğini yitirir (sim/synth uyumsuzluğu)
always @(posedge clk or reset)reset için posedge eksik
always @(clk)flip-flop'lar için posedge clk kullanılmalı
challenge icon

Görev

Yapılacaklar:

  1. Bu flip-flop'un çalışmasını sağlamak için doğru duyarlılık listesini ekle. Blok, clk sinyalinin rising kenarında çalışmalıdır.

Kendin dene

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

endmodule
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Temeller bölümündeki tüm dersler

Kendi başına pratik yap: Online Verilog derleyicisi