Wartości domyślne zapobiegają zatrzaskom
Część sekcji Projektowanie RTL i weryfikacja ścieżki Verilog w Coddy. Lekcja 1 z 38.
Wyjście kombinacyjne musi być przypisane dla każdej ścieżki wejściowej. Jeśli blok always pomija przypisanie wyjścia, wyjście zachowuje swoją poprzednią wartość, co może prowadzić do wnioskowania o zatrzasku. Przypisanie default, po którym następują nadpisania, uwidacznia pokrycie.
Odpowiedni fragment; pozostałe deklaracje i połączenia są podane w wyzwaniu.
always @* begin
y = 0;
if (en) y = data;
enddefault obejmuje ścieżkę, gdy sygnał jest wyłączony, więc wyjście zależy wyłącznie od bieżących wejść.
Przypisuj wartość każdemu wyjściu kombinacyjnemu na każdej ścieżce; używaj wartości domyślnych przed warunkowymi nadpisaniami.
Wyzwanie
ŚredniZaimplementuj bramkowane 8-bitowe wyjście: gdy en ma wartość jeden, y jest równe a; w przeciwnym razie y ma wartość zero. Przypisuj y na każdej ścieżce kombinacyjnej. Kolumny wyjściowe: y. Wszystkie wartości sygnałów wejściowych są znanymi wartościami binarnymi.
Uzupełnij design.v i zachowaj nazwy modułów oraz portów. Zablokowany plik testbench.v dostarcza zmiany sygnałów wejściowych 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 en, input [7:0] a, output reg [7:0] y);
// Zastąp ten tekst zastępczy własnym projektem.
initial 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 znakiemPoćwicz samodzielnie: Kompilator Verilog online