Funkcje kombinacyjne
Część sekcji Projektowanie RTL i weryfikacja ścieżki Verilog w Coddy. Lekcja 11 z 38.
Funkcja function w Verilogu grupuje obliczenie bez upływu czasu, aby można było używać go ponownie w module. Zadeklaruj szerokość wartości zwracanej, argumenty wejściowe i zmienne lokalne, a następnie przypisz wynik do nazwy function za pomocą assign. Funkcje kombinacyjne nie zawierają opóźnień ani sterowania zdarzeniami; pętla o stałych granicach może opisywać powtarzaną logikę.
Odpowiedni fragment; pozostałe deklaracje i połączenia są dostępne w wyzwaniu.
function [7:0] gray;
input [7:0] value;
begin gray = value ^ (value >> 1); end
endfunctionWywołanie function oblicza wyrażenie bez dodawania czasu symulacji.
Przypisz wynik function na każdej ścieżce i nie umieszczaj instrukcji sterujących czasem w funkcjach kombinacyjnych.
Wyzwanie
ŚredniZaimplementuj funkcję Verilog function gray, która konwertuje bez znaku 8-bitową wartość binarną na kod Graya za pomocą operacji XOR wartości z tą samą wartością przesuniętą w prawo o jeden bit. Steruj sygnałem y, wywołując function z a. Kolumny wyjściowe: y. Wszystkie wartości pobudzające są znanymi wartościami binarnymi.
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 dla każdej obserwacji, oddzielonych pojedynczą spacją i zakończonych znakiem nowej linii.
Spróbuj swoich sił
module dut (input [7:0] a, output [7:0] y);
// Zastąp ten symbol zastępczy swoim projektem.
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