Mantıksal Operatörler
Coddy'nin Verilog Journey'sinin Temel Bilgiler bölümünün bir parçası. Ders 24 / 90.
Mantıksal işleçler tüm değerler üzerinde çalışır ve tek bir sonuç döndürür: 1 (doğru) veya 0 (yanlış). Bit düzeyinde çalışan bitsel işleçlerin aksine, mantıksal işleçler değerin tamamını doğru (sıfır olmayan) ya da yanlış (sıfır) olarak değerlendirir.
| Tür | Örnek | Sonuç |
|---|---|---|
| Bitsel VE | 4'b1010 & 4'b1100 | 4'b1000 (birden çok bit) |
| Mantıksal VE | (4'b1010 && 4'b1100) | 1 (tek bit) |
Kullanılabilir Mantıksal Operatörler
| Operatör | Anlamı | Açıklama |
|---|---|---|
&& | Mantıksal VE | Her iki işlenen de doğruysa (sıfırdan farklıysa) doğru |
|| | Mantıksal VEYA | En az bir işlenen doğruysa doğru |
! | Mantıksal DEĞİL | İşlenen yanlışsa (sıfırsa) doğru |
Nasıl Çalışırlar
Mantıksal VE (&&):
(5 && 3) // 1 (ikisi de sıfır değil)
(5 && 0) // 0 (ikincisi sıfır)
(0 && 0) // 0 (ikisi de sıfır)Mantıksal OR (||):
(5 || 3) // 1 (en az biri sıfır değil)
(5 || 0) // 1 (ilki sıfır değil)
(0 || 0) // 0 (ikisi de sıfır)Mantıksal DEĞİL (!):
!5 // 0 (sıfır olmayan değer false olur)
!0 // 1 (sıfır true olur)Kod Örneği
module logical_demo;
reg [3:0] a, b;
reg and_res, or_res, not_res;
initial begin
a = 5;
b = 0;
and_res = (a && b); // 5 && 0 = 0
or_res = (a || b); // 5 || 0 = 1
not_res = !a; // !5 = 0
$display("5 && 0 = %d", and_res);
$display("5 || 0 = %d", or_res);
$display("!5 = %d", not_res);
$finish;
end
endmoduleÇıktı:
5 && 0 = 0
5 || 0 = 1
!5 = 0Yaygın Kullanım
Mantıksal işleçler if ifadelerinde ve koşullarda kullanılır:
if (a && b) // Hem a hem de b sıfırdan farklıysa doğrudur
$display("Both true");
if (a || b) // En az biri sıfırdan farklıysa doğrudur
$display("At least one true");
if (!reset) // reset 0 olduğunda doğrudur
$display("Reset is inactive");Görev
Her görev için doğru mantıksal ifadeleri yaz.
Yapılacaklar:
value1VEvalue2değerlerinin ikisinin de doğru olup olmadığını kontrol et ve sonucuand_outdeğişkenine kaydetvalue1VEYAvalue2değerlerinden birinin doğru olup olmadığını kontrol et ve sonucuor_outdeğişkenine kaydetvalue1değerinin yanlış olup olmadığını kontrol et ve sonucunot_outdeğişkenine kaydet
Kendin dene
module logical_challenge;
reg [3:0] value1, value2;
reg and_out, or_out, not_out;
initial begin
value1 = 4'd12;
value2 = 4'd5;
and_out = ______; // value1 && value2
or_out = ______; // value1 || value2
not_out = ______; // !value1
$display("%d && %d = %d", value1, value2, and_out);
$display("%d || %d = %d", value1, value2, or_out);
$display("!%d = %d", value1, not_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