Menu
Coddy logo textTech

Duyarlılık Listesi

Coddy'nin Verilog Journey'sinin Temel Bilgiler 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 listesi, always bloğunu tetikleyen sinyaller veya olaylar kümesidir. Listedeki herhangi bir sinyal değiştiğinde blok yürütülür.

Sözdizimi:

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

Duyarlılık Listesi Türleri

TürSözdizimiBlok Ne Zaman Çalışır
Tüm sinyaller (kombinasyonel)always @(*)İçerideki 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, 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

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

Yaygın Hatalar

HataNeden Yanlış
always @(a or b or c) kullanılıyor ancak d kullanılıyord eksik → simülasyonda çıktı güncelliğini yitirir (sim/synth 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ını sağlamak için doğru duyarlılık listesini ekleyin. 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