Ana içeriğe geç

Görev (Task) ve Fonksiyon (Function)

· 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 13: This Article

🔧 Verilog’ta Task ve Function Kullanımı
#

Task ve function yapıları, tekrarlayan kodları azaltmak ve yeniden kullanılabilir mantık blokları oluşturmak için kullanılır. Özellikle testbench ve simülasyon senaryolarında kodun okunabilirliğini artırır.


📌 task
#

Task yapıları, şu özelliklere sahiptir:

  • Birden fazla giriş ve çıkış alabilir.
  • Zamanlama kontrolleri içerebilir (#, @, wait gibi).
  • Diğer task veya function bloklarını çağırabilir.
  • Eğer yerel değişken tanımlanmazsa, global değişkenleri değiştirebilir.
  • assign içinde kullanılamaz.

✅ Örnek:
#

task convert;
  input  [7:0] adc_in;
  output [7:0] out;
  begin
    out = (9/5) * (adc_in + 32);
  end
endtask

🔔 Kullanım:
#

always @(adc_a) convert(adc_a, adc_a_conv);

📌 function
#

Function yapıları saf mantık işlemleri için kullanılır:

  • Sıfır zaman içinde çalışmalıdır.
  • Sadece tek bir değer döndürür.
  • İçinde #, @, wait, posedge gibi zamanlama ifadeleri kullanılamaz.
  • Sadece diğer function’ları çağırabilir, task çağrısı yapılamaz.
  • assign ifadelerinde kullanılabilir.

✅ Örnek:
#

function [7:0] myfunction;
  input [3:0] a, b, c, d;
  begin
    myfunction = ((a + b) + (c - d));
  end
endfunction

🔔 Kullanım:
#

assign f = myfunction(a, b, c, d) ? e : 8'd0;

🧠 Karşılaştırma Tablosu
#

Özellik task function
Dönüş Değeri output portlar ile (birden fazla olabilir) Tek bir değer döndürür
Zamanlama #, @, wait gibi ifadeler kullanılabilir Zamanlama ifadesi kullanılamaz
İfade içinde kullanım ❌ Kullanılamaz ✅ Kullanılabilir
Çağırma Diğer task/function çağrabilir Sadece function çağırabilir
Kullanım Amacı Prosedürel ve zamanlamalı işlemler Kombinasyonel mantık
Delay / Event Kullanılabilir Yasaktır

⚠️ En İyi Kullanım Önerileri
#

  • Zamanlama içeren prosedürler için task kullanın.
  • Kombinasyonel hesaplamalar için function tercih edin.
  • Blokları modüler ve kısa tutmaya çalışın (tercihen 20 satırdan az).

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

Related

Blocking ve Non-Blocking Atamalar
· 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