If - Else
Coddy'nin Verilog Journey'sinin Temeller bölümünün bir parçası — ders 53 / 90.
if-else ifadesi, bir koşula bağlı olarak iki farklı eylem arasında seçim yapmanıza olanak tanır. Koşul doğruysa bir blok çalışır. Yanlışsa diğer blok çalışır.
if-else ifadesi kodunuza bir karar noktası sağlar: koşul doğruysa bir şeyi yapın, koşul yanlışsa başka bir şeyi yapın.
Sözdizimi:
if (condition) begin
// Koşul doğru (1) olduğunda yürütülür
end else begin
// Koşul yanlış (0) olduğunda yürütülür
endBasit Örnek
if (reset) begin
count = 0;
end else begin
count = count + 1;
end- Eğer
reset1 ise →count0 olur - Eğer
reset0 ise →count1 artar
Birden Fazla İfade
Birden fazla ifadeniz olduğunda begin ve end kullanın:
if (enable) begin
out = data_in;
valid = 1;
end else begin
out = 0;
valid = 0;
endÇoklu Koşullu If-Else
if-else ifadelerini zincirleyebilirsiniz:
if (a > b) begin
max = a;
end else if (b > a) begin
max = b;
end else begin
max = a; // a ve b eşittir
endÖnemli Kurallar
| Kural | Açıklama |
|---|---|
else isteğe bağlıdır | else olmadan if kullanabilirsiniz |
else en yakın if ifadesine aittir | İç içe yerleştirme (nesting) konusunda dikkatli olun |
Birden fazla ifade için begin/end kullanın | Birden fazla satır için gereklidir |
Görev
Ne yapmalı:
- Bunun çalışması için eksik olan
if-elseifadesini ekleyin. enabledeğeri 1 olduğunda,outdeğeria & bdeğerine eşit olmalıdır.enabledeğeri 0 olduğunda,outdeğeria | bdeğerine eşit olmalıdır.
Kopya kağıdı
if-else ifadesi, bir koşula bağlı olarak iki bloktan birini yürütür:
if (condition) begin
// Koşul doğru (1) olduğunda yürütülür
end else begin
// Koşul yanlış (0) olduğunda yürütülür
endelse if ile birden fazla koşulu zincirleyin:
if (a > b) begin
max = a;
end else if (b > a) begin
max = b;
end else begin
max = a; // a ve b eşittir
endelseisteğe bağlıdır- Bir blokta birden fazla ifade olduğunda
begin/endkullanın elseher zaman en yakınififadesine aittir
Kendin dene
module ifelse_challenge;
reg a, b, enable;
reg out;
initial begin
a = 1;
b = 0;
enable = 1;
// TODO: if-else ifadesi ekleyin
// Eğer enable 1 ise: out = a & b
// Değilse: out = a | b
$display("out = %d (should be 0 because 1&0=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ığı