Verilog'da Always@ ve Initial Kullanımı
Ortak Özellikleri Nelerdir?
- Her ikisi de "reg" ile tanımladığımız değişkenler için kullanılır.
- Her ikisi de "begin" ile başlayıp "end" ile biten bloklardır.
- IniTial, tek seferlik çalışırken, always ise içerisindeki değişkenlerin aldığı değerlere göre tekrarlı bir çalışma gerçekleştirir.
- Initial sadece sabit değişkenlerle çalışır; always'de ise böyle bir zorunluluk yoktur.
Kullanımları:
Initial:
initial begin c=2'b11 & 2'b01; end
Görüldüğü gibi sadece sabit değerler kullanılarak ve "and" operatöründen faydalanılarak basit bir program gerçekleştirildi. Yukarıda belirttiğim gibi "initial" program başladığında sadece bir kez çalışmaktadır. Burada extra olarak şunu belirtebilir: c değişkenimiz burada gösterilmese bile programda output ve reg olarak tanımlanmalıdır. Aksi takdirde program hata vermektedir. C'nin tanımını aşağıdaki always örneğinde de görebilirsiniz.
always@:
`timescale 1ns / 1ps module conditionalOperators( input [2:0] A, input [2:0] B, output reg [2:0] C ); assign A =3'b110; assign B=3'b101; always@(*) begin C= A & B; end endmodule
Görüldüğü gibi, bu sefer oluşturduğumuz blok içerisine sabit bir değer değil değişken atadık ve içerisinde "and" operatörü yardımıyla bir işlem gerçekleştirdik. Burada always'ten sonra "*" kullanmayı tercih ettik fakat parantez içerisine değişken yazmak da tercih edilebilir. Ancak, genelde en makul ve kolay olan burada "*" sembolünü kullanmaktır.
Yazıyı okuduğunuz için teşekkürler...
İyi çalışmalar...
Hiç yorum yok