Porównania ze znakiem
Część sekcji Projektowanie RTL i weryfikacja ścieżki Verilog w Coddy. Lekcja 7 z 38.
Ten sam wzorzec bitów może reprezentować różne liczby ze znakiem (signed) i bez znaku. Zadeklaruj oba operandy jako signed, gdy porównujesz wartości w kodzie uzupełnień do dwóch. Mieszanie operandów ze znakiem (signed) i bez znaku może zmienić interpretację porównania. Konkatenacje są wyrażeniami bez znaku, nawet jeśli zawierają sygnały signed.
Odpowiedni fragment; pozostałe deklaracje i połączenia są podane w wyzwaniu.
wire signed [7:0] a,b;
assign less = a < b;Deklaracje signed sprawiają, że wartości ujemne są porównywane jako mniejsze od nieujemnych.
Utrzymuj operandy porównania konsekwentnie jako signed i rozszerzaj wartości signed o ich bit znaku.
Wyzwanie
ŚredniPorównaj 8-bitowe wartości a i b typu signed. Ustaw wyjście less, gdy a jest mniejsze od b, a equal, gdy są równe. Oba wejścia to wartości typu signed w kodzie uzupełnień do dwóch. Kolumny wyjściowe: less, equal. Wszystkie wartości pobudzające są znanymi wartościami binarnymi.
Uzupełnij design.v i zachowaj nazwy modułów oraz porty. Zablokowany testbench.v dostarcza zmiany wejść i wypisuje wyjścia po ich ustaleniu. Wybiera scenariusz za pomocą argumentu symulatora, takiego jak +CASE=1; standardowe wejście nie jest wymagane. Nie dodawaj do projektu wypisywania, opóźnień ani kończenia symulacji. Oczekiwane wyjście to jeden wiersz wartości dziesiętnych dla każdej obserwacji, oddzielonych pojedynczą spacją i zakończonych znakiem nowej linii.
Spróbuj swoich sił
module dut (input signed [7:0] a, input signed [7:0] b, output less, output equal);
// Zastąp ten kod zastępczy własnym projektem.
assign less = 0;
assign equal = 0;
endmoduleTa lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Projektowanie RTL i weryfikacja
1Niezawodna logika kombinacyjna RTL
Wartości domyślne zapobiegają zatrzaskomKoder priorytetowyWeryfikacja kodu one-hotBezpieczne dekodowanie casePodsumowanie — router żądań2Szerokości i arytmetyka ze znakiem
Zachowywanie bitów przeniesieniaPorównania ze znakiemArytmetyczne przesunięcia w prawoPrzepełnienie i nasyceniePodsumowanie — różnica ze znakiemPoćwicz samodzielnie: Kompilator Verilog online