Logische Operatoren
Teil des Abschnitts Grundlagen der Verilog-Journey von Coddy — Lektion 24 von 90.
Logische Operatoren arbeiten mit ganzen Werten und geben ein einzelnes Ergebnis zurück: 1 (wahr) oder 0 (falsch). Im Gegensatz zu bitweisen Operatoren, die Bit für Bit arbeiten, behandeln logische Operatoren den gesamten Wert entweder als wahr (nicht Null) oder falsch (Null).
| Typ | Beispiel | Ergebnis |
|---|---|---|
| Bitweises UND | 4'b1010 & 4'b1100 | 4'b1000 (mehrere Bits) |
| Logisches UND | (4'b1010 && 4'b1100) | 1 (einzelnes Bit) |
Verfügbare logische Operatoren
| Operator | Bedeutung | Beschreibung |
|---|---|---|
&& | Logisches UND | Wahr, wenn beide Operanden wahr sind (ungleich Null) |
|| | Logisches ODER | Wahr, wenn mindestens ein Operand wahr ist |
! | Logisches NICHT | Wahr, wenn der Operand falsch ist (Null) |
Wie sie funktionieren
Logisches UND (<strong>&&</strong>):
(5 && 3) // 1 (beide ungleich Null)
(5 && 0) // 0 (zweiter Wert ist Null)
(0 && 0) // 0 (beide Null)Logisches ODER (<strong>||</strong>):
(5 || 3) // 1 (mindestens eins ungleich Null)
(5 || 0) // 1 (erstes ungleich Null)
(0 || 0) // 0 (beide Null)Logisches NICHT (<strong>!</strong>):
!5 // 0 (Nicht-Null wird zu falsch)
!0 // 1 (Null wird zu wahr)Code-Beispiel
module logical_demo;
reg 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
endmoduleAusgabe:
5 && 0 = 0
5 || 0 = 1
!5 = 0Häufige Verwendung
Logische Operatoren werden in if-Anweisungen und Bedingungen verwendet:
if (a && b) // Wahr, wenn sowohl a als auch b ungleich Null sind
$display("Both true");
if (a || b) // Wahr, wenn mindestens eines ungleich Null ist
$display("At least one true");
if (!reset) // Wahr, wenn reset 0 ist
$display("Reset is inactive");Aufgabe
Schreiben Sie die korrekten logischen Ausdrücke für jede Aufgabe.
Was zu tun ist:
- Prüfen Sie, ob
value1UNDvalue2beide wahr sind, und speichern Sie das Ergebnis inand_out - Prüfen Sie, ob
value1ODERvalue2wahr ist, und speichern Sie das Ergebnis inor_out - Prüfen Sie, ob
value1falsch ist, und speichern Sie das Ergebnis innot_out
Spickzettel
Logische Operatoren behandeln ganze Werte als wahr (ungleich Null) oder falsch (Null) und geben ein einzelnes Bit als Ergebnis zurück.
| Operator | Bedeutung | Ergebnis |
|---|---|---|
&& | Logisches UND | 1, wenn beide Operanden ungleich Null sind |
|| | Logisches ODER | 1, wenn mindestens ein Operand ungleich Null ist |
! | Logisches NICHT | 1, wenn der Operand Null ist |
(5 && 3) // 1
(5 && 0) // 0
(5 || 0) // 1
(0 || 0) // 0
!5 // 0
!0 // 1Im Vergleich zu bitweisen Operatoren fassen logische Operatoren den gesamten Wert zusammen:
4'b1010 & 4'b1100 // 4'b1000 (bitweise, mehrere Bits)
4'b1010 && 4'b1100 // 1 (logisch, einzelnes Bit)Häufig in Bedingungen verwendet:
if (a && b) // wahr, wenn beide ungleich Null
if (a || b) // wahr, wenn mindestens einer ungleich Null
if (!reset) // wahr, wenn reset 0 istProbier es selbst
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
endmoduleDiese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Grundlagen
1Einführung
Was ist VerilogHardware vs. SoftwareAbstraktionsebenen im DesignDein erstes ModulKommentare4Operatoren Teil 1
Arithmetische OperatorenModulo-OperatorVergleichsoperatorenWiederholung – Einfache MathematikBitweise Operatoren7Zuweisung und Gatter
Kontinuierliche ZuweisungZuweisung mit OperatorenIntegrierte Gatter-PrimitiveAND OR NOT GatterXOR XNOR GatterZusammenfassung - Logikgatterschaltung10Entscheidungsfindung
If-AnweisungIf - ElseWiederholung - Einfacher KomparatorCase-AnweisungCasex und CasezWiederholung - ALU-Design5Operatoren Teil 2
Logische OperatorenReduktionsoperatorenShift-OperatorenVerkettungsoperatorBedingter OperatorZusammenfassung – Operator-Challenge11Schleifen
For-SchleifeWhile-SchleifeRepeat-SchleifeEndlosschleifeDisable-AnweisungRückblick – Schleifenmuster3Zahlensystem
Binäre DarstellungZahlen mit GrößenangabeZahlen ohne GrößenangabeNegative ZahlenSpezialwerte X und ZZusammenfassung – Zahlenformate6Module
ModulstrukturEingangs- und Ausgangs-PortsInout-PortsModul-InstanziierungPort-Mapping nach NamePort-Mapping nach ReihenfolgeZusammenfassung – Ein Modul erstellen