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 liefert den Rest nach einer Division.
Wenn du eine Zahl durch eine andere teilst, teilt dir der Modulo-Operator mit, 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 |
Codebeispiel
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 Verwendungen
Prüfen, ob eine Zahl gerade oder ungerade ist:
if (number % 2 == 0)
$display("Even");
else
$display("Odd");Einen Zähler umlaufen lassen (0 bis 9, dann zurück zu 0):
count = (count + 1) % 10;Erhalte die letzte Ziffer einer Zahl:
last_digit = value % 10; // 123 % 10 = 3Aufgabe
Berechne die Reste für jeden Ausdruck.
Was zu tun ist:
- Berechne
17 % 5und speichere das Ergebnis inmod1 - Berechne
22 % 7und speichere das Ergebnis inmod2 - Berechne
14 % 4und speichere das Ergebnis inmod3
Probier 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. SoftwareIhr erstes ModulKommentareAbstraktionsebenen des Designs4Operatoren Teil 1
Arithmetische OperatorenModulo-OperatorVergleichsoperatorenWiederholung – einfache MathematikBitweise Operatoren7Zuweisungen und Gatter
Kontinuierliche ZuweisungZuweisung mit OperatorenIntegrierte Gatter-GrundelementeUND-, ODER- und NICHT-GatterXOR- und XNOR-GatterRückblick – Logikgatter-Schaltung10Entscheidungsfindung
If-AnweisungIf – ElseRückblick – Einfacher KomparatorCase-AnweisungCasex und CasezRückblick – ALU-Entwurf13Zeitsteuerung und Verzögerungen
Was sind Verzögerungen?GatterverzögerungenZuweisungsverzögerungenTimescale-DirektiveTakterzeugungZusammenfassung – Zeitsteuerung2Datentypen
Wire-TypReg-TypInteger und RealVektorenArraysParameterZusammenfassung – Signale deklarieren5Operatoren Teil 2
Logische OperatorenReduktionsoperatorenSchiebeoperatorenVerkettungsoperatorBedingter OperatorRückblick – Operatoren-Herausforderung11Schleifen
For-SchleifeWhile-SchleifeWiederholungsschleifeEndlosschleifeAnweisung deaktivierenRückblick – Schleifenmuster3Zahlensystem
Binäre DarstellungZahlen mit fester BreiteZahlen ohne feste BreiteNegative ZahlenSpezialwerte X und ZZusammenfassung – Zahlenformate6Module
ModulstrukturInput- und Output-PortsInout-PortsModulinstanziierungPortzuordnung nach NamenPortzuordnung nach ReihenfolgeRückblick – Ein Modul erstellenÜbe selbstständig: Online-Verilog-Compiler