Menu
Coddy logo textTech

Duyarlılık Listesi

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

Duyarlılık listesi (sensitivity list), always bloğuna ne zaman çalışacağını söyler. @ sembolünden sonra parantez içinde yazılır.

Duyarlılık listesi (sensitivity list), always bloğunu tetikleyen bir sinyal veya olay kümesidir. Listedeki herhangi bir sinyal değiştiğinde blok çalışır.

Sözdizimi:

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

Duyarlılık Listesi Türleri (Types of Sensitivity List)

TürSözdizimiBlok Ne Zaman Çalışır
Tüm sinyaller (kombinasyonel)always @(*)İçindeki herhangi bir sinyal değiştiğinde
Belirli sinyalleralways @(a or b)a veya b değiştiğinde
Kenar tetiklemeli (ardışıl)always @(posedge clk)Saat sinyalinin yükselen kenarında
Birden fazla kenaralways @(posedge clk or posedge reset)Saat kenarında veya reset kenarında

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

Kombinezonel mantık için en güvenli ve en yaygın olanı.

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

*, blok içinde okunan tüm signals otomatik olarak dahil eder.

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 changes olduğunda (when) simülasyonda output güncellenmez — böylece simülasyon artık sentezlenen donanımla eşleşmez.

Seçenek 3: Kenar Tetikleyici (posedge)

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

rising edge için posedge, falling edge için negedge kullanın.

Seçenek 4: Çoklu Kenarlar

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

Saat kenarında veya reset kenarında çalışır.

Yaygın Hatalar

HataNeden Yanlış
always @(a or b or c) ancak d kullanıyord eksik → simülasyonda output bayat kalır (simülasyon/sentez uyumsuzluğu)
always @(posedge clk or reset)reset için posedge eksik
always @(clk)flip-flop'lar için posedge clk kullanılmalıdır
challenge icon

Görev

Yapılacaklar:

  1. Bu flip-flop'un çalışması için doğru hassasiyet listesini ekleyin. Blok, clk sinyalinin yükselen kenarında (posedge) ç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