Menu
Coddy logo textTech

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.

challenge icon

Wyzwanie

Średni

Poró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;
endmodule
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Projektowanie RTL i weryfikacja

Poćwicz samodzielnie: Kompilator Verilog online