If İfadesi
Coddy'nin Verilog Journey'sinin Temel Bilgiler bölümünün bir parçası. Ders 52 / 90.
if ifadesi, kodu yalnızca bir koşul doğru olduğunda çalıştıran bir karar verme bloğudur. if ifadesi bir koşulu kontrol eder.
Koşul true (1) ise içindeki kod çalıştırılır. Koşul 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 sonunu belirtmek 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 küme parantezleri { } gibi çalışır. İfadeleri birlikte gruplandırarak Verilog'un hangi kodun if koşuluna ait olduğunu bilmesini sağlarlar. Burada yalnızca bir ifade olsa da tutarlılık açısından begin ve end kullanmak yine de iyi bir uygulamadır.
Always Bloğunda 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 yalnızca bir ifade bulunduğundan if sonrasında begin/end gerekmez.
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 herhangi bir ifade olabilir | Sıfır olmayan (ve bilinen) değerler doğru, sıfır ise yanlış olarak değerlendirilir |
Birden fazla ifade için begin / end gerekir | Diğer dillerdeki { } gibidir |
begin/end olmadan yalnızca bir ifade izler | Yalnızca sonraki satır |
Görev
Yapılacaklar:
- Bunun çalışmasını sağlamak için eksik
ififadesini ekle.
enabledeğeri1olduğunda,outdeğeria & bdeğerine eşit olmalıdırenabledeğeri0olduğunda,outdeğeri0olarak kalmalıdır (değişmemelidir)
Başlangıç kodu out = 0 değerini başlatır 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.
Temel Bilgiler bölümündeki tüm dersler
4Operatörler Bölüm 1
Aritmetik OperatörlerMod Alma OperatörüKarşılaştırma OperatörleriTekrar - Basit MatematikBit Düzeyi Operatörleri7Atama ve Kapılar
Sürekli AtamaOperatörlerle AtamaYerleşik Kapı PrimitifleriAND, OR ve NOT KapılarıXOR ve XNOR KapılarıÖzet - Mantık Kapısı Devresi10Karar Verme
If İfadesiIf - ElseTekrar - Basit KarşılaştırıcıCase İfadesiCasex ve CasezTekrar - ALU Tasarımı2Veri Türleri
Wire TürüReg TürüTamsayı ve GerçelVektörlerDizilerParametrelerÖzet - Sinyalleri Tanımlama5Operatörler Bölüm 2
Mantıksal Operatörlerİndirgeme OperatörleriKaydırma OperatörleriBirleştirme OperatörüKoşullu OperatörTekrar - Operatör Meydan Okuması11Döngüler
For DöngüsüWhile DöngüsüTekrar DöngüsüSonsuz DöngüDevre Dışı Bırakma İfadesiTekrar - Döngü Kalıpları3Sayı Sistemi
İkili GösterimBoyutlu SayılarBoyutsuz SayılarNegatif SayılarÖzel X ve Z DeğerleriTekrar - Sayı Biçimleri6Modüller
Modül YapısıGiriş ve Çıkış PortlarıÇift Yönlü PortlarModül ÖrneklendirmeAda Göre Port EşlemeSıraya Göre Port EşlemeTekrar - Bir Modül Oluşturma9Prosedürel Bloklar
Always BloğuInitial BloğuDuyarlılık ListesiBloklayıcı AtamaBloklamayan AtamaTekrar - Always ve Initial Karşılaştırması15Trafik Işığı Denetleyicisi
Durumları TanımlamaDurum Makinesi MantığıKendi başına pratik yap: Online Verilog derleyicisi