Mantıksal Operatörler
Coddy'nin Verilog Journey'sinin Temeller bölümünün bir parçası — ders 24 / 90.
Mantıksal operatörler 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 bitwise operatörlerin aksine, mantıksal operatörler tüm değeri doğru (sıfır dışı/non-zero) veya yanlış (zero) olarak ele alır.
| Type | Example | Result |
|---|---|---|
| Bitwise AND | 4'b1010 & 4'b1100 | 4'b1000 (multiple bits) |
| Logical AND | (4'b1010 && 4'b1100) | 1 (single bit) |
Kullanılabilir Mantıksal Operatörler
| Operatör | Anlamı | Açıklama |
|---|---|---|
&& | Mantıksal AND (VE) | both işlenen de doğruysa (sıfır dışı) True |
|| | Mantıksal OR (VEYA) | En az one işlenen doğruysa True |
! | Mantıksal NOT (DEĞİL) | İşlenen yanlışsa (zero) True |
Nasıl Çalışırlar
Mantıksal AND (<strong>&&</strong>):
(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 (<strong>||</strong>):
(5 || 3) // 1 (en az bir sıfır olmayan)
(5 || 0) // 1 (ilk sıfır olmayan)
(0 || 0) // 0 (ikisi de sıfır)Mantıksal NOT (<strong>!</strong>):
!5 // 0 (sıfır olmayan 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 = 0Common Use
Mantıksal operatörler if ifadelerinde ve koşullarda kullanılır:
if (a && b) // a ve b'nin her ikisi de sıfır değilse doğru
$display("Both true");
if (a || b) // En az biri sıfır değilse doğru
$display("At least one true");
if (!reset) // reset 0 olduğunda doğru
$display("Reset is inactive");Görev
Her bir görev için doğru mantıksal ifadeleri yazın.
Yapılacaklar:
value1VEvalue2değerlerininbothdoğru olup olmadığınıcheckedin veand_outdeğişkenine kaydedinvalue1VEYAvalue2değerinin doğru olup olmadığınıcheckedin veor_outdeğişkenine kaydedinvalue1değerinin yanlış olup olmadığınıcheckedin venot_outdeğişkenine kaydedin
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.
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ığı