Menu
CoddyTech

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 denetler.

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
  // condition true olduğunda kod çalışır
end

Basit Örnek

if (reset) begin
  count = 0;
end

Bu örnekte:

  • begin ve end, kod bloğunun başlangıcını ve bitişini belirtmek için kullanılır
  • reset 1 (true) ise, begin ve end arasındaki kod çalıştırılır → count 0 olur
  • reset 0 (false) ise, içindeki kod atlanır → hiçbir şey olmaz

begin ve end, diğer programlama dillerindeki süslü parantezler { } gibi çalışır. Verilog’un hangi kodun if koşuluna ait olduğunu bilmesi için ifadeleri bir araya getirirler. 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 olduğu için 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ış kabul edilir
Birden fazla ifade için begin / end gerekirDiğer dillerdeki { } gibi
begin/end olmadan yalnızca tek bir ifade izlerYalnızca sonraki ifade if yapısına aittir
challenge icon

Görev

Yapılacaklar:

  1. Bunun çalışmasını sağlamak için eksik if ifadesini ekle.
  • enable 1 olduğunda, out değeri a & b olmalıdır.
  • enable 0 olduğunda, out 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 deyimini ekleyin (out = a & b)
    $display("enable=1: out = %d (should be 1)", out);
    
    // Test durumu 2: enable = 0
    enable = 0;
    out = 0; 
    // TODO: out 0 olarak 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