Operator modulo
Część sekcji Podstawy ścieżki Verilog w Coddy. Lekcja 20 z 90.
Innym podstawowym operatorem arytmetycznym jest operator modulo (%). Zwraca resztę z dzielenia.
Gdy dzielisz jedną liczbę przez drugą, operator modulo informuje cię, ile zostaje.
| Wyrażenie | Wynik | Wyjaśnienie |
|---|---|---|
10 % 3 | 1 | 10 ÷ 3 = 3, reszta 1 |
15 % 4 | 3 | 15 ÷ 4 = 3, reszta 3 |
8 % 2 | 0 | 8 ÷ 2 = 4, reszta 0 |
Przykład kodu
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
endmoduleTypowe zastosowania
Sprawdź, czy liczba jest parzysta czy nieparzysta:
if (number % 2 == 0)
$display("Even");
else
$display("Odd");Owijanie licznika (od 0 do 9, a następnie z powrotem do 0):
count = (count + 1) % 10;Uzyskaj ostatnią cyfrę liczby:
last_digit = value % 10; // 123 % 10 = 3Wyzwanie
Oblicz reszty z dzielenia dla każdego wyrażenia.
Co zrobić:
- Oblicz
17 % 5i zapisz wynik wmod1 - Oblicz
22 % 7i zapisz wynik wmod2 - Oblicz
14 % 4i zapisz wynik wmod3
Spróbuj swoich sił
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
endmoduleTa lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Podstawy
1Wprowadzenie
Czym jest VerilogSprzęt a oprogramowanieTwój pierwszy modułKomentarzePoziomy abstrakcji projektu4Operatory, część 1
Operatory arytmetyczneOperator moduloOperatory porównaniaPowtórka — prosta matematykaOperatory bitowe7Przypisania i bramki
Przypisanie ciągłePrzypisanie z operatoramiWbudowane prymitywy bramekBramki AND, OR i NOTBramki XOR i XNORPodsumowanie — układ z bramek logicznych10Podejmowanie decyzji
Instrukcja ifIf-elsePowtórka – prosty komparatorInstrukcja caseCaseX i CaseZPowtórka – projektowanie ALU13Odmierzanie czasu i opóźnienia
Czym są opóźnieniaOpóźnienia bramekOpóźnienia przypisańDyrektywa timescaleGenerowanie zegaraPodsumowanie — kontrola czasu2Typy danych
Typ WireTyp RegLiczby całkowite i rzeczywisteWektoryTabliceParametryPowtórka — deklarowanie sygnałów5Operatory — część 2
Operatory logiczneOperatory redukcjiOperatory przesunięciaOperator konkatenacjiOperator warunkowyPowtórzenie — wyzwanie z operatorami11Pętle
Pętla forPętla whilePętla repeatPętla nieskończonaInstrukcja wyłączaniaPowtórka — wzorce pętli3System liczbowy
Reprezentacja binarnaLiczby o określonej szerokościLiczby o nieokreślonej szerokościLiczby ujemneWartości specjalne X i ZPodsumowanie — formaty liczb6Moduły
Struktura modułuPorty wejściowe i wyjściowePorty dwukierunkoweInstancjonowanie modułuMapowanie portów według nazwMapowanie portów według kolejnościPodsumowanie — zbuduj moduł9Bloki proceduralne
Blok alwaysBlok initialLista czułościPrzypisanie blokującePrzypisanie nieblokującePodsumowanie — always a initial12Projekt multipleksera
Projekt multipleksera 2 do 1Projekt multipleksera 4 do 115Sterownik sygnalizacji świetlnej
Definiowanie stanówLogika maszyny stanówPoćwicz samodzielnie: Kompilator Verilog online