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, yalnızca bir koşul doğru olduğunda kod yürüten bir karar verme bloğudur. if ifadesi bir koşulu kontrol eder.

Eğer koşul doğru (1) ise, içerideki kod çalışır. Eğer koşul yanlış (0) ise, kod atlanır.

Sözdizimi:

if (condition) begin
  // Koşul doğru olduğunda kod yürütülü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 (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 süslü parantezler { } gibi çalışır. İfadeleri bir araya getirirler, böylece Verilog hangi kodun if koşuluna ait olduğunu bilir. Burada sadece tek bir ifade olsa bile, begin ve end kullanmak tutarlılık açısından hala iyi bir uygulamadır.

Always Bloğu İçinde 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 if ifadesinden sonra begin/end gerekmez çünkü yalnızca bir ifadeye sahiptir.

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 tek bir bit olmalıdırVeya 0 ya da 1 olarak değerlendirilen ifade
Birden fazla ifade için begin / end gereklidirDiğer dillerdeki { } gibidir
begin/end olmadan, sadece tek bir ifade takip ederSadece bir sonraki satır
challenge icon

Görev

Yapılacaklar:

  1. Bunun çalışması için eksik olan if ifadesini ekleyin.
  • enable değeri 1 olduğunda, out değeri a & b ifadesine 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 olarak başlatır ve her iki durumu da test eder.

Kopya kağıdı

if ifadesi, kodu yalnızca bir koşul doğru (1) olduğunda çalıştırır ve yanlış (0) olduğunda atlar.

if (condition) begin
  // koşul doğru olduğunda çalışır
end

Tek bir ifade için, begin/end kullanımı isteğe bağlıdır:

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

Koşullar, 0 veya 1 olarak değerlendirilen herhangi bir ifade olabilir:

if (a > b) begin max = a; end
if (a && b) begin out = 1; end
if (data == 8'hFF) begin match = 1; end

Temel kurallar:

  • Birden fazla ifadeyi gruplandırmak için begin/end kullanın (diğer dillerdeki { } gibi)
  • begin/end olmadan, yalnızca hemen sonraki satır if ifadesine aittir

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