Menu
Coddy logo textTech

If İfadesi

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

if ifadesi, kodu yalnızca bir koşul doğru olduğunda çalıştıran bir karar verme bloğudur. if ifadesi bir koşulu kontrol eder.

Koşul true (1) ise içindeki kod çalıştırılır. Koşul false (0) ise kod atlanır.

Sözdizimi:

if (condition) begin
  // Kod, condition true olduğunda çalışır
end

Basit Örnek

if (reset) begin
  count = 0;
end

Bu örnekte:

  • begin ve end, kod bloğunun başlangıcını ve sonunu belirtmek için kullanılır
  • Eğer reset 1 (doğru) ise, begin ve end içindeki kod çalışır → count 0 olur
  • Eğer reset 0 (yanlış) ise, içindeki kod atlanır → hiçbir şey olmaz

begin ve end, diğer programlama dillerindeki küme parantezleri { } gibi çalışır. İfadeleri birlikte gruplandırarak Verilog'un hangi kodun if koşuluna ait olduğunu bilmesini sağlarlar. Burada yalnızca bir ifade olsa da tutarlılık açısından begin ve end kullanmak yine de iyi bir uygulamadır.

Always Bloğunda If İfadesi

always @(posedge clk) begin
  if (reset)
    count <= 0;
end

Not: Tek bir ifade için begin ve end isteğe bağlıdır. Örneğin, yukarıdaki always bloğunda yalnızca bir ifade bulunduğundan if sonrasında begin/end gerekmez.

Koşul Herhangi Bir İfade Olabilir

if (a > b) begin
  max = a;
end

if (a && b) begin
  out = 1;
end

if (data == 8'hFF) begin
  match = 1;
end

Önemli Kurallar

KuralAçıklama
Koşul herhangi bir ifade olabilirSıfır olmayan (ve bilinen) değerler doğru, sıfır ise yanlış olarak değerlendirilir
Birden fazla ifade için begin / end gerekirDiğer dillerdeki { } gibidir
begin/end olmadan yalnızca bir ifade izlerYalnızca sonraki satır
challenge icon

Görev

Yapılacaklar:

  1. Bunun çalışmasını sağlamak için eksik if ifadesini ekle.
  • enable değeri 1 olduğunda, out değeri a & b değerine eşit olmalıdır
  • enable değeri 0 olduğunda, out değeri 0 olarak kalmalıdır (değişmemelidir)

Başlangıç kodu out = 0 değerini başlatır ve her iki durumu da test eder.

Kendin dene

module if_challenge;
  reg a, b, enable;
  reg out = 0;
  
  initial begin
    a = 1;
    b = 1;
    
    // Test durumu 1: enable = 1
    enable = 1;
    // TODO: if ifadesi ekle (out = a & b)
    $display("enable=1: out = %d (should be 1)", out);
    
    // Test durumu 2: enable = 0
    enable = 0;
    out = 0; 
    // TODO: out 0 kalmalı
    $display("enable=0: out = %d (should be 0)", out);
    
    $finish;
  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