Weryfikacja kodu one-hot
Część sekcji Projektowanie RTL i weryfikacja ścieżki Verilog w Coddy. Lekcja 3 z 38.
Dane one-hot mają dokładnie jeden ustawiony bit. Dekoder generuje takie dane, a walidacja sprawdza dane wejściowe przed ich użyciem. Dla znanych wartości binarnych wartość różna od zera jest one-hot, gdy bits & (bits - 1) wynosi zero. Ta sekcja nie używa tego skrótu do klasyfikowania X ani Z.
Odpowiedni fragment; pozostałe deklaracje i połączenia są podane w wyzwaniu.
assign one_hot = (bits != 0) && ((bits & (bits - 1)) == 0);Sprawdzenie, czy wartość jest niezerowa, wyklucza stan bezczynności; sztuczka bitowa odrzuca wiele ustawionych bitów.
Rozróżniaj zero, dokładnie jeden ustawiony bit i wiele ustawionych bitów podczas walidacji żądań.
Wyzwanie
ŚredniW przypadku znanych 4-bitowych bitów wejściowych ustaw valid tylko wtedy, gdy dokładnie jeden bit jest ustawiony. Użyj sprawdzenia, czy wartość jest niezerowa, wraz z bits & (bits - 1). Kolumny wyjściowe: valid. 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 ustaleniu się ich wartości. Wybiera scenariusz za pomocą argumentu symulatora, takiego jak +CASE=1; standardowe wejście nie jest wymagane. Nie dodawaj wyświetlania, opóźnień ani kończenia symulacji do projektu. 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 [3:0] bits, output valid);
// Zastąp ten element zastępczy własnym projektem.
assign valid = 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