Modulo-Operator
Teil des Abschnitts Grundlagen der Verilog-Journey von Coddy — Lektion 20 von 90.
Ein weiterer grundlegender arithmetischer Operator ist der Modulo-Operator (%). Er gibt den Rest nach einer Division an.
Wenn man eine Zahl durch eine andere teilt, gibt der Modulo-Operator an, was übrig bleibt.
| Ausdruck | Ergebnis | Erklärung |
|---|---|---|
10 % 3 | 1 | 10 ÷ 3 = 3 mit Rest 1 |
15 % 4 | 3 | 15 ÷ 4 = 3 mit Rest 3 |
8 % 2 | 0 | 8 ÷ 2 = 4 mit Rest 0 |
Code-Beispiel
module modulo_demo;
reg [7:0] result;
initial begin
result = 10 % 3;
$display("10 %% 3 = %d", result); // 1
result = 15 % 4;
$display("15 %% 4 = %d", result); // 3
result = 8 % 2;
$display("8 %% 2 = %d", result); // 0
$finish;
end
endmoduleHäufige Anwendungen
Prüfen, ob eine Zahl gerade oder ungerade ist:
if (number % 2 == 0)
$display("Even");
else
$display("Odd");Einen Zähler umbrechen (0 bis 9, dann zurück auf 0):
count = (count + 1) % 10;Die letzte Ziffer einer Zahl ermitteln:
last_digit = value % 10; // 123 % 10 = 3Aufgabe
Berechne die Reste für jeden Ausdruck.
Was zu tun ist:
- Berechne
17 % 5und speichere inmod1 - Berechne
22 % 7und speichere inmod2 - Berechne
14 % 4und speichere inmod3
Spickzettel
Der Modulo-Operator (%) gibt den Rest nach der Division zurück:
10 % 3→ 1 (10 ÷ 3 = 3 Rest 1)8 % 2→ 0 (kein Rest)
result = 10 % 3; // 1Häufige Anwendungen:
// Prüfen auf gerade/ungerade
if (number % 2 == 0) $display("Even");
// Zähler umbrechen (0–9)
count = (count + 1) % 10;
// Letzte Ziffer ermitteln
last_digit = value % 10; // 123 % 10 = 3Probier es selbst
module modulo_challenge;
reg [7:0] mod1, mod2, mod3;
initial begin
mod1 = ______; // 17 % 5
mod2 = ______; // 22 % 7
mod3 = ______; // 14 % 4
$display("17 %% 5 = %d", mod1);
$display("22 %% 7 = %d", mod2);
$display("14 %% 4 = %d", mod3);
$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