Verilog HDL ile Davranışsal Modelleme 2 (Koşullu İfadeler)

TOBB Ekonomi ve Teknoloji Üniversitesi
BİL264L Mantıksal Devre Tasarımı Lab
!
Verilog HDL Davranışsal Modelleme
Koşullu İfadeler
Verilog HDL ile Davranışsal Modelleme 2
(Koşullu İfadeler)$
Kapı seviyesinde tasarım yapılırken devrenin işlevi tamamen kapılar ile ifade edildiğinden koşullu ifadelere
gerek yoktu. Fakat bir devrenin davranışını anlatırken bazı sinyallerin değerlerine göre bazı devrelerin farklı
davranmasını isteyebiliriz. Verilog HDL kullanılırken koşullar 3 farklı şekilde ifade edilebilir. !
Üç Terimli Koşul (Ternary Operation)$
Kullanımı aynı C dilinde olduğu şekildedir: !
c = (a^b)? d|e : e&f;
Bu ifadede koşul a^b yani a!=b olur. Eğer koşul doğruysa yani a xor b işleminin sonucu 1 ise c = d | e;
değilse c = e & f işlemi yapılır. !
Bu kod gerçeklendiğinde 1 OR 1 AND 1 XOR kapısı ve 1 çoklayıcı kullanır. C gibi üst seviyeli dillerin aksine
burada her ifade bir devre parçasına denk geldiğinden her iki değer de hesaplanır ve arasından tercih yapılır.!
if - else if - else$
Üst seviye dillerde kullanıldığı gibi kullanılır ancak küme parantezi yerine begin-end yazılır. Örnek:!
if ( a ^ b
c = d
end
else if (a
c = f
end
else begin
c = h
end
!
) begin
| e;
& b) begin
& g;
^ ~i;
case$
Bir wire veya reg’in farklı değerleri için oluşan koşulları göstermede kullanılır. Kullanımı şu şekildedir:!
case (A) // A, 2 bitlik bir sayı olsun
2’b00: begin
x = 0;
y = 1;
end
2’b11: begin
x = 1;
y = 0;
end
default: begin
x = 0;
y = 0;
end
endcase
!
Örneklerde de görüldüğü şekilde case ve if-else yapısı birden fazla satırda yazılır. Bu yüzden bunları sadece
always bloklarının içinde kullanabiliriz. 3 terimli koşul ifadesi ise tek satırda yazılabildiği için hem assign hem
de always içinde kullanılabilir.