Menu
Coddy logo textTech

Blocking Assignment

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

Verilog'da iki tür prosedürel assignment vardır: bloklayan (=) ve bloklamayan (<=). Bu derste bloklayan assignment konusuna odaklanıyoruz.

Blocking assignment uses = operatörünü kullanır. Buna "engelleyici" denir çünkü mevcut assignment tamamlanana kadar sonraki ifadenin yürütülmesini engeller. Kod, step by step, sırayla çalışır.

Sözdizimi:

variable = expression;

Blocking assignment Ne Zaman Kullanılır

Blocking assignment (=), kombinasyonel mantık için kullanılır: girişler değiştiğinde çıkışların hemen değiştiği, saat sinyali ve bellek olmayan devreler.

Kombinasyonel mantık örnekleri:

  • AND / OR / XOR kapıları
  • Toplayıcılar ve çıkarıcılar
  • Çoklayıcılar
  • Kod çözücüler

Verilog örneği:

always @(*) begin
  sum = a + b;      // Bloklayan atama
  carry = a & b;    // Bloklayan atama
end

Always Bloklarında Blocking (Kombinasyonel Mantık)

always @(*) begin
  temp = a & b;    // Adım 1
  out = temp | c;  // Adım 2 (temp'i adım 1'den kullanır)
end

Sıra önemlidir. Bu, birleşimsel mantık için uygundur.

Blocking ve Non-Blocking

 Blocking (=)Non-blocking (<=)
YürütmeBirbiri ardınaHepsi aynı anda
Sonraki satır bekler mi?EvetHayır
UsesKombinasyonel mantıkSıralı mantık (flip-flop'lar)

Önemli: Flip-Flop'lar için Blocking Kullanmayın

challenge icon

Görev

x ve y değerlerini geçici bir değişken kullanarak değiştirmek için eksik blocking assignment ifadelerini ekleyin.

Yapılacaklar:

  1. x değerini temp'e Assign edin (x'i temp'e kaydedin)
  2. y değerini x'e Assign edin (y'yi x'e taşıyın)
  3. temp değerini y'ye Assign edin (kaydedilmiş x'i y'ye taşıyın)

Kendin dene

module swap;
  reg x, y;
  reg temp;
  
  initial begin
    x = 1;
    y = 0;
    
    $display("Before swap: x=%d, y=%d", x, y);
    
    // TODO: Adım 1 - x'i temp'e ata
    
    // TODO: Adım 2 - y'yi x'e ata
    
    // TODO: Adım 3 - temp'i y'ye ata
    
    $display("After swap: x=%d, y=%d", x, y);
    $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

Kendi başına pratik yap: Online Verilog derleyicisi