Menu
CoddyTech

Duyarlılık Listesi

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

Hassasiyet listesi, always bloğuna ne zaman çalışacağını söyler. @ simgesinden sonra parantez içinde yazılır.

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

Sözdizimi:

always @(sensitivity_list) begin
  // Listedeki sinyaller değiştiğinde kod çalışır
end

Duyarlılık Listesi Türleri

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 (sıralı)always @(posedge clk)Saatin yükselen kenarında
Birden çok kenaralways @(posedge clk or posedge reset)Saat kenarında veya sıfırlama kenarında

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 sinyalleri 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, bu sinyal değiştiğinde simülasyondaki çıktı güncellenmez; dolayısıyla simülasyon artık sentezlenmiş donanımla eşleşmez.

Seçenek 3: Kenar Tetiklemesi (posedge)

always @(posedge clk) begin
  q <= d;        // Saat sinyalinin 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

Saat kenarında veya sıfırlama kenarında çalışır.

Sık Yapılan Hatalar

HataNeden Yanlış
always @(a or b or c) ama d kullanılıyord eksik → simülasyonda çıktı güncelliğini yitirir (simülasyon/sentez uyuşmazlığı)
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ı için doğru duyarlılık listesini ekle. Blok, clk sinyalinin yükselen 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.

Temel Bilgiler bölümündeki tüm dersler

Kendi başına pratik yap: Online Verilog derleyicisi