Menu
Coddy logo textTech

If İfadesi

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

if ifadesi, sadece bir condition true olduğunda kodu çalıştıran bir karar verme bloğudur. if ifadesi bir condition denetler.

Eğer condition true (1) ise, içindeki kod executes. Eğer condition 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 bitişini işaretlemek için kullanılır
  • Eğer reset 1 (true) ise, begin ve end arasındaki kod çalışır → count 0 olur
  • Eğer 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 gruplarlar. Burada yalnızca tek bir ifade olsa bile, tutarlılık açısından begin ve end kullanmak yine de iyi bir uygulamadır.

always Bloğunda If Statement

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

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

Condition 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
condition herhangi bir ifade olabilirSıfır olmayan (ve bilinen) değerler true, sıfır ise false olarak kabul edilir
Birden fazla statement için begin / end gereklidirDiğer dillerdeki { } gibi
begin/end olmadan, yalnızca tek bir statement gelirYalnızca sonraki satır
challenge icon

Görev

Ne yapılmalı:

  1. Bunun çalışması için eksik if ifadesini ekleyin.
  • enable değeri 1 olduğunda, out eşittir a & b olmalıdır
  • enable değeri 0 olduğunda, out değeri 0 kalmalıdır (değişmemelidir)

Başlangıç kodu out = 0 olarak ilklendirir 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.

Temeller bölümündeki tüm dersler