Parametry bezpieczne pod względem szerokości
Część sekcji Projektowanie RTL i weryfikacja ścieżki Verilog w Coddy. Lekcja 12 z 38.
W podstawach wprowadzono konfigurowalne szerokości. Wielokrotnego użytku układ RTL musi także obsługiwać najmniejszą dozwoloną szerokość, celowo dobierać rozmiar wyrażeń pośrednich i unikać zakodowanych na stałe pozycji bitów. Replikacja {WIDTH{1'b1}} tworzy maskę o dopasowanej szerokości. Parametry są stałymi elaboracji, a nie elementami sterującymi działającymi w czasie wykonywania.
Odpowiedni fragment; pozostałe deklaracje i połączenia są dostępne w wyzwaniu.
wire [WIDTH:0] sum;
assign sum = {1'b0,a} + {1'b0,b};
assign y = sum[WIDTH] ? {WIDTH{1'b1}} : sum[WIDTH-1:0];Zarówno pozycja przeniesienia, jak i wartość nasycenia dostosowują się do skonfigurowanej szerokości.
Przetestuj minimalną dopuszczalną szerokość i wyznacz każdy zależny od szerokości wycinek oraz stałą na podstawie parametrów.
Wyzwanie
ŚredniZbuduj inkrementator WIDTH-bitowy, który zwraca WIDTH najmłodszych bitów wartości a+1. Wejście b jest nieużywane. Ten sam moduł musi działać dla WIDTH=1, jak i dla większych szerokości. WIDTH jest dodatnie. Zablokowany moduł testujący tworzy instancje z wartościami WIDTH równymi 1, 4 i 8, używając najmłodszych bitów a i b w instancjach o mniejszej szerokości. Kolumny wyjściowe to y1, y4 i y8 w zapisie dziesiętnym.
Uzupełnij design.v i zachowaj nazwy modułów oraz portów. Zablokowany testbench.v dostarcza zmiany wejść i wyświetla 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 wyświetlania, opóźnień ani kończenia symulacji. Oczekiwane wyjście to jeden wiersz wartości dziesiętnych na każdą obserwację, rozdzielonych pojedynczą spacją i zakończonych znakiem nowego wiersza.
Spróbuj swoich sił
module dut #(parameter WIDTH=4) (input [WIDTH-1:0] a,b, output [WIDTH-1:0] y);
// Zaimplementuj układ parametryzowany.
assign y = 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 znakiem3Wielokrotnego użytku RTL
Funkcje kombinacyjneParametry bezpieczne pod względem szerokościPętle generateWarunkowe generatePodsumowanie – wielokrotnego użytku maska bitowaPoćwicz samodzielnie: Kompilator Verilog online