Priorytet resetu i zezwolenia
Część sekcji Projektowanie RTL i weryfikacja ścieżki Verilog w Coddy. Lekcja 16 z 38.
Blok taktowany może przechowywać rejestr przez pominięcie przypisania na nieaktywnych zboczach. To celowe przechowywanie różni się od przypadkowego zatrzasku kombinacyjnego. Zapisz jawną kolejność priorytetów resetu, ładowania i aktywacji. Tutaj resety są synchroniczne: działają tylko na narastającym zboczu zegara.
Odpowiedni fragment; pozostałe deklaracje i połączenia są podane w wyzwaniu.
always @(posedge clk) begin
if(rst) q <= 0;
else if(en) q <= data;
endReset ma priorytet, gdy oba sygnały sterujące są aktywne, a zbocza bez resetu, przy wyłączonym sygnale en, zachowują wartość q.
Użyj jednego taktowanego łańcucha priorytetów i precyzyjnie określ zachowanie dla resetowania, ładowania, włączania i podtrzymywania.
Wyzwanie
ŚredniZaimplementuj 8-bitowy rejestr q z synchronicznym resetem aktywnym stanem wysokim rst i zezwoleniem en. Na zboczu narastającym reset ma pierwszeństwo i zeruje q; w przeciwnym razie zbocza przy włączonym zezwoleniu ładują a, a zbocza przy wyłączonym zezwoleniu zachowują q. Kolumny wyjściowe: q. Wszystkie sygnały sterujące i dane są stabilne przed każdym narastającym zboczem zegara; wyniki są odczytywane później.
Uzupełnij design.v i zachowaj nazwy modułów oraz portów. Zablokowany testbench.v dostarcza zmiany wejściowe i wypisuje wyjścia po ich ustabilizowaniu. Wybiera scenariusz za pomocą argumentu symulatora, takiego jak +CASE=1; standardowe wejście nie jest wymagane. Nie dodawaj do projektu wypisywania, opóźnień ani zakoń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 en, input [7:0] a, output reg [7:0] q);
// Zastąp ten symbol zastępczy swoim projektem.
initial q = 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