Yalnız Mesajı Göster

Verilog İnitial Ve Always

Eski 08-20-2012   #1
Prof. Dr. Sinsi
Varsayılan

Verilog İnitial Ve Always




Initial ve Always
Verilog işlemini belirtmek için iki tane farklı anahtar kelime bulunmaktadır Bunlar "always" ve "initial" anahtar kelimeleridir "Always" sözcüğü durum kontrolü (@) ifadesiyle tetiklenen serbest çalışan işlemleri ifade eder"Initial" anahtar sözcüğü sadece bir kere yürütülen işlemler için kullanılır Her ikiside benzetimlik zamanının 0 anında "begin" yapısını kurar ve blok sonuna kadar yürütülür Blok sona ulaştığında tekrar sıraya alınır Genel düşünce "initial" bloğunun, "always'den" önce yürütüleceğinin varsayılmasıdır fakat "initial" bloğunun "always" bloğunun sadece bir kere çalıştıktan sonra duran özel bir durumu olarak düşünülmesi daha doğrudur

//Örnekler:
initial
begin
a = 1; // zaman 0 anında reg tipi değişkene değer ata
#1; // 1 birim zaman bekle
b = a; // reg a'yı reg b'ye ata
end

always @(a or b) // a veya b değiştiğinde aşağıdaki ifadeleri gerçekleştir
begin
if (a)
c = b;
else
d = ~b;
end // Bu blokla işlem bittiğinde tekrar yukarı dön (@ durum kontrolü)

always @(posedge a)// reg a pozitif kenar değeri aldığında çalıştır
a <= b;


Bunlar iki anahtar kelimenin klasik kullanımıdır Bunun dışında iki tane ek kullanım özelliği bulunmaktadır"Always" anahtar sözcüğünü @() duyarlılık listesini eklemeden de kullanabiliriz Örneğin:

always
begin // 0 zamanında yürütmeye başla ve hiçbir zaman durma
clk = 0;
#1; // 1 birim zaman bekle
clk = 1;
#1;
end // Yürütmeye devam ediyor - yukarıdan tekrar başlar

"Initial" kullanımının bir diğer kullanımı ise "forever" anahtar sözcüğü ile kullanımdır Aşağıdaki örnek işlemsel olarak yukarıdaki "always" örneği ile aynıdır

initial forever // 0 zamanında başla ve begin/end'i sürekli tekrarla
begin
clk = 0;
#1;
clk = 1;
#1;
end

Kaynak : Wikipedia

Alıntı Yaparak Cevapla