Zachowywanie bitów przeniesienia
Część sekcji Projektowanie RTL i weryfikacja ścieżki Verilog w Coddy. Lekcja 6 z 38.
Szerokość sygnału określa, które bity można reprezentować. Wyraźnie określ zamierzony sposób wykonywania działań arytmetycznych, rozszerzając operandy przed wykonaniem działania. Dodanie dwóch 8-bitowych wartości bez znaku może wymagać dziewięciu bitów wyniku; przypisanie tylko ośmiu bitów zachowuje młodsze osiem i gubi bit przeniesienia.
Odpowiedni fragment; pozostałe deklaracje i połączenia podano w wyzwaniu.
wire [8:0] total;
assign total = {1'b0,a} + {1'b0,b};Każdy operand ma jawnie szerokość dziewięciu bitów, co odpowiada pełnej sumie.
Wybierz wymaganą szerokość wyniku i rozszerz operandy przed wykonaniem działań arytmetycznych.
Wyzwanie
ŚredniDodaj bez znaku 8-bitowe a i b, nie tracąc przeniesienia. Zwróć pełną 9-bitową sumę w total. Jawnie rozszerz oba operandy do dziewięciu bitów. Kolumny wyjściowe: total. 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 wyświetla wyjścia po ich ustabilizowaniu. Wybiera scenariusz za pomocą argumentu symulatora, takiego jak +CASE=1; standardowe wejście nie jest wymagane. Nie dodawaj do projektu wyświetlania, opóźnień ani zakończenia symulacji. Oczekiwane wyjście to jeden wiersz wartości dziesiętnych dla każdej obserwacji, oddzielonych pojedynczą spacją i zakończony znakiem nowej linii.
Spróbuj swoich sił
module dut (input [7:0] a, input [7:0] b, output [8:0] total);
// Zastąp ten kod zastępczy swoim projektem.
assign total = 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