If İfadesi
Coddy'nin Verilog Journey'sinin Temeller bölümünün bir parçası — ders 52 / 90.
if ifadesi, sadece bir condition true olduğunda kodu çalıştıran bir karar verme bloğudur. if ifadesi bir condition denetler.
Eğer condition true (1) ise, içindeki kod executes. Eğer condition false (0) ise, kod atlanır.
Sözdizimi:
if (condition) begin
// Kod, condition true olduğunda çalışı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 (true) ise,beginveendarasındaki kod çalışır →count0 olur - Eğer
reset0 (false) ise, içindeki kod atlanır → hiçbir şey olmaz
begin ve end, diğer programlama dillerindeki süslü parantezler { } gibi çalışır. Verilog'un hangi kodun if koşuluna ait olduğunu bilmesi için ifadeleri bir araya gruplarlar. Burada yalnızca tek bir ifade olsa bile, tutarlılık açısından begin ve end kullanmak yine de iyi bir uygulamadır.
always Bloğunda If Statement
always @(posedge clk) begin
if (reset)
count <= 0;
endNot: Tek bir statement için, begin ve end isteğe bağlıdır. Örneğin, yukarıdaki always bloğunda, yalnızca tek bir statement bulunduğu için if sonrasında begin/end kullanılması gerekmez.
Condition 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 |
|---|---|
condition herhangi bir ifade olabilir | Sıfır olmayan (ve bilinen) değerler true, sıfır ise false olarak kabul edilir |
Birden fazla statement için begin / end gereklidir | Diğer dillerdeki { } gibi |
begin/end olmadan, yalnızca tek bir statement gelir | Yalnızca sonraki satır |
Görev
Ne yapılmalı:
- Bunun çalışması için eksik
ififadesini ekleyin.
enabledeğeri1olduğunda,outeşittira & bolmalıdırenabledeğeri0olduğunda,outdeğeri0kalmalıdır (değişmemelidir)
Başlangıç kodu out = 0 olarak ilklendirir ve her iki durumu da test eder.
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ığı