Operatory porównania
Część sekcji Podstawy ścieżki Verilog w Coddy. Lekcja 21 z 90.
Operatory porównania porównują dwie wartości i zwracają 1 (prawda) albo 0 (fałsz).
Dostępne operatory porównania
| Operator | Znaczenie |
|---|---|
== | Równe |
!= | Różne |
> | Większe niż |
< | Mniejsze niż |
>= | Większe lub równe |
<= | Mniejsze lub równe |
Przykład kodu
module comparison_demo;
reg [3:0] a, b;
reg result;
initial begin
a = 5;
b = 3;
result = (a == b);
$display("5 == 3 : %d", result); // 0 (fałsz)
result = (a != b);
$display("5 != 3 : %d", result); // 1 (prawda)
result = (a > b);
$display("5 > 3 : %d", result); // 1 (prawda)
result = (a < b);
$display("5 < 3 : %d", result); // 0 (fałsz)
result = (a >= 5);
$display("5 >= 5 : %d", result); // 1 (prawda)
result = (a <= 3);
$display("5 <= 3 : %d", result); // 0 (fałsz)
$finish;
end
endmoduleWynik:
5 == 3 : 0
5 != 3 : 1
5 > 3 : 1
5 < 3 : 0
5 >= 5 : 1
5 <= 3 : 0Używanie porównań w warunkach
Porównania są często używane w instrukcjach if:
if (count == 10)
$display("Reached maximum");
if (value > threshold)
$display("Value is too high");Ważne uwagi
- Wyniki porównań to wartości 1-bitowe (0 lub 1)
- Porównania działają z dowolną szerokością bitową
- Uważaj na
==i!=, gdy sygnały zawierają X lub Z (zwrócą X)
Wyzwanie
Zapisz poprawne wyrażenia porównujące dla każdego zadania.
Co należy zrobić:
- Sprawdź, czy
ajest równeb, i zapisz wynik weq - Sprawdź, czy
ajest większe niżb, i zapisz wynik wgt - Sprawdź, czy
ajest mniejsze lub równeb, i zapisz wynik wle
Spróbuj swoich sił
module comparison_challenge;
reg [3:0] a, b;
reg eq, gt, le;
initial begin
a = 4'd7;
b = 4'd7;
eq = ______; // a jest równe b
gt = ______; // a jest większe od b
le = ______; // a jest mniejsze od b lub równe b
$display("a = %d, b = %d", a, b);
$display("a == b : %d", eq);
$display("a > b : %d", gt);
$display("a <= b : %d", le);
$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