If İfadesi
Coddy'nin Verilog Journey'sinin Temeller bölümünün bir parçası — ders 52 / 90.
if ifadesi, yalnızca bir koşul doğru olduğunda kod yürüten bir karar verme bloğudur. if ifadesi bir koşulu kontrol eder.
Eğer koşul doğru (1) ise, içerideki kod çalışır. Eğer koşul yanlış (0) ise, kod atlanır.
Sözdizimi:
if (condition) begin
// Koşul doğru olduğunda kod yürütülür
endBasit Örnek
if (reset) begin
count = 0;
endBu örnekte:
beginveend, kod bloğunun başlangıcını ve bitişini işaretlemek için kullanılır
- Eğer
reset1 (doğru) ise,beginveendiçindeki kod çalışır →count0 olur - Eğer
reset0 (yanlış) ise, içindeki kod atlanır → hiçbir şey olmaz
begin ve end, diğer programlama dillerindeki süslü parantezler { } gibi çalışır. İfadeleri bir araya getirirler, böylece Verilog hangi kodun if koşuluna ait olduğunu bilir. Burada sadece tek bir ifade olsa bile, begin ve end kullanmak tutarlılık açısından hala iyi bir uygulamadır.
Always Bloğu İçinde If İfadesi
always @(posedge clk) begin
if (reset)
count <= 0;
endNot: Tek bir ifade için, begin ve end isteğe bağlıdır. Örneğin, yukarıdaki always bloğunda if ifadesinden sonra begin/end gerekmez çünkü yalnızca bir ifadeye sahiptir.
Koşul Herhangi Bir İfade Olabilir
if (a > b) begin
max = a;
end
if (a && b) begin
out = 1;
end
if (data == 8'hFF) begin
match = 1;
endÖnemli Kurallar
| Kural | Açıklama |
|---|---|
| Koşul tek bir bit olmalıdır | Veya 0 ya da 1 olarak değerlendirilen ifade |
Birden fazla ifade için begin / end gereklidir | Diğer dillerdeki { } gibidir |
begin/end olmadan, sadece tek bir ifade takip eder | Sadece bir sonraki satır |
Görev
Yapılacaklar:
- Bunun çalışması için eksik olan
ififadesini ekleyin.
enabledeğeri1olduğunda,outdeğeria & bifadesine eşit olmalıdırenabledeğeri0olduğunda,outdeğeri0olarak kalmalıdır (değişmemelidir)
Başlangıç kodu out = 0 olarak başlatır ve her iki durumu da test eder.
Kopya kağıdı
if ifadesi, kodu yalnızca bir koşul doğru (1) olduğunda çalıştırır ve yanlış (0) olduğunda atlar.
if (condition) begin
// koşul doğru olduğunda çalışır
endTek bir ifade için, begin/end kullanımı isteğe bağlıdır:
always @(posedge clk) begin
if (reset)
count <= 0;
endKoşullar, 0 veya 1 olarak değerlendirilen herhangi bir ifade olabilir:
if (a > b) begin max = a; end
if (a && b) begin out = 1; end
if (data == 8'hFF) begin match = 1; endTemel kurallar:
- Birden fazla ifadeyi gruplandırmak için
begin/endkullanın (diğer dillerdeki{ }gibi) begin/endolmadan, yalnızca hemen sonraki satırififadesine aittir
Kendin dene
module if_challenge;
reg a, b, enable;
reg out = 0;
initial begin
a = 1;
b = 1;
// Test durumu 1: enable = 1
enable = 1;
// TODO: if ifadesi ekle (out = a & b)
$display("enable=1: out = %d (should be 1)", out);
// Test durumu 2: enable = 0
enable = 0;
out = 0;
// TODO: out 0 kalmalı
$display("enable=0: out = %d (should be 0)", out);
$finish;
end
endmoduleBu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Temeller bölümündeki tüm dersler
4Operatörler Bölüm 1
Aritmetik OperatörlerModül OperatörüKarşılaştırma OperatörleriÖzet - Basit MatematikBitsel Operatörler7Atama ve Kapılar
Sürekli AtamaOperatörlerle AtamaYerleşik Kapı PrimitifleriAND OR NOT KapılarıXOR XNOR KapılarıÖzet - Mantık Kapısı Devresi10Karar Yapıları
If İfadesiIf - ElseÖzet - Basit KarşılaştırıcıCase İfadesiCasex ve CasezÖzet - ALU Tasarımı5Operatörler Bölüm 2
Mantıksal Operatörlerİndirgeme OperatörleriKaydırma OperatörleriBirleştirme OperatörüKoşullu OperatörÖzet - Operatör Meydan Okuması11Döngüler
For DöngüsüWhile DöngüsüRepeat DöngüsüSonsuz DöngüDevre Dışı Bırakma İfadesiÖzet - Döngü Kalıpları3Sayı Sistemleri
İkilik GösterimBoyutlandırılmış SayılarBoyutlandırılmamış SayılarNegatif SayılarÖzel Değerler X ve ZÖzet - Sayı Formatları6Modüller
Modül YapısıGiriş ve Çıkış PortlarıInout PortlarıModül Örneklendirmeİsme Göre Port EşlemeSıraya Göre Port EşlemeÖzet - Bir Modül Oluşturun9Prosedürel Bloklar
Always BloğuInitial BloğuDuyarlılık ListesiEngelleyici AtamaEngelleyici Olmayan AtamaÖzet - Always vs Initial15Trafik Işığı Kontrolcüsü
Durumları TanımlamaDurum Makinesi Mantığı