Wykrywanie próbkowanych zboczy
Część sekcji Projektowanie RTL i weryfikacja ścieżki Verilog w Coddy. Lekcja 19 z 38.
Poziom może pozostawać wysoki przez wiele cykli, podczas gdy impuls zdarzenia powinien trwać jeden cykl. Zapisz poprzedni próbkowany poziom i porównaj go z bieżącym. Ten detektor zbocza zakłada, że wejście jest już zsynchronizowane z tym zegarem; nie jest to synchronizator przejścia między domenami zegarowymi.
Odpowiedni fragment; pozostałe deklaracje i połączenia są podane w wyzwaniu.
previous <= sig;
rising <= sig & ~previous;Poprzedni zapamiętany poziom powoduje pojedynczy impuls przy próbkowanej zmianie stanu.
Porównaj bieżące i poprzednie próbkowane poziomy; używaj tego detektora tylko z wejściem synchronicznym.
Wyzwanie
ŚredniDla sygnału sig już zsynchronizowanego z clk generuj zarejestrowany impuls trwający jeden cykl przy każdym próbkowanym przejściu z 0 do 1. Synchroniczny rst zeruje zapamiętany poprzedni poziom i impuls. Wysoki poziom sig na pierwszym zboczu, na którym nie jest aktywny reset, powoduje więc wygenerowanie impulsu. Kolumny wyjściowe: pulse. Wszystkie sygnały sterujące i dane są stabilne przed każdym narastającym zboczem zegara; wyniki są obserwowane później.
Uzupełnij design.v i zachowaj nazwy modułów oraz porty. Zablokowany plik 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 clk, input rst, input sig, output reg pulse);
// Zastąp ten kod zastępczy własnym projektem.
initial pulse = 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ń4Sterowany sekwencyjny RTL
Priorytet resetu i zezwoleniaLiczniki nasycającePotokowanie danych i sygnału validWykrywanie próbkowanych zboczyPodsumowanie — licznik zdarzeń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