Ana içeriğe geç

Blocking ve Non-Blocking Atamalar

· loading · loading · · ·
HDL Verilog HDL
Axolot Logic
Yazar
Axolot Logic
Sayısal Tasarım Mühendisi
Table of Contents
Verilog HDL Serisi - This article is part of a series.
Part 10: This Article

⛓️ Verilog’da Blocking ve Non-Blocking Atamalar
#

Verilog, always veya initial blokları içinde iki tür işlemsel (procedural) atama sağlar:


➡️ Blocking Atama (=)
#

  • Anında ve sıralı olarak çalışır
  • Her satır, tamamlanmadan bir sonrakine geçilmesini engeller
  • Genellikle kombinasyonel mantıkta kullanılır

✅ Örnek:
#

always @(*) begin
  a = b;
  c = a;  // güncellenmiş 'a' kullanılır
end

Böyle düşün: Normal programlama dillerindeki gibi adım adım ilerleyen atamalar.


Non-Blocking Atama (<=)
#

  • Atamayı planlar — hemen gerçekleşmez
  • Tüm sağ taraflar önce değerlendirilir, ardından sol taraflar güncellenir
  • Ardışıl (saatle çalışan) mantıkta kullanılır

✅ Örnek:
#

always @(posedge clk) begin
  a <= b;
  c <= a;  // 'a' henüz güncellenmedi, eski değeri kullanır
end

Böyle düşün: Flip-flop davranışı gibi — değerler saat döngüsünün sonunda güncellenir.


🧠 En İyi Uygulama
#

Bağlam Tercih Edilen Atama
Kombinasyonel mantık (always @(*)) = (blocking)
Ardışıl mantık (always @(posedge clk)) <= (non-blocking)

❗ Aynı always bloğu içinde = ve <= asla karıştırılmamalı — bu, karmaşık ve hatalı simülasyon sonuçlarına yol açabilir.


Verilog HDL Serisi - This article is part of a series.
Part 10: This Article

Related

Görev (Task) ve Fonksiyon (Function)
· loading · loading
HDL Verilog HDL
Hiyerarşik Referans
· loading · loading
HDL Verilog HDL
Komut Satırı Girdisi
· loading · loading
HDL Verilog HDL
Verilog Simülasyon Temelleri
· loading · loading
HDL Verilog HDL
Verilog Veri Tipleri
·635 kelime·3 dk· loading · loading
HDL Verilog Verilog HDL Veri Tipleri Mantık Seviyeleri Verilog Dizi
İsim Alanları
· loading · loading
HDL Verilog HDL