Liczniki nasycające
Część sekcji Projektowanie RTL i weryfikacja ścieżki Verilog w Coddy. Lekcja 17 z 38.
W podstawach użyto licznika z zawijaniem. Licznik nasycający zamiast tego zatrzymuje się na granicy, co jest przydatne w przypadku ograniczonych zliczeń. Dodaj jawny warunek ochronny do aktualizacji arytmetycznej i zachowaj niezależność działania sygnałów enable i reset od limitu.
Odpowiedni fragment; pozostałe deklaracje i połączenia są podane w wyzwaniu.
always @(posedge clk) begin
if(rst) count <= 0;
else if(en && count != 15) count <= count + 1;
endWartość maksymalna zostaje zachowana zamiast zawijać się do zera.
Jawnie zabezpieczaj aktualizacje granic, gdy licznik ma osiągnąć wartość graniczną zamiast zawijać się.
Wyzwanie
ŚredniUtwórz 4-bitowy licznik nasycający q. Synchroniczny rst zeruje go. Aktywne zbocza zwiększają wartość aż do 15, a następnie pozostaje ona równa 15; nieaktywne zbocza również nie zmieniają wartości. Reset ma priorytet. Kolumny wyjściowe: q. Wszystkie sygnały sterujące i dane są stabilne przed każdym narastającym zboczem zegara; wyniki są odczytywane po nim.
Uzupełnij design.v i zachowaj nazwy modułów oraz porty. Zablokowany plik testbench.v dostarcza zmiany sygnałów wejściowych i wyświetla 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 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 nowego wiersza.
Spróbuj swoich sił
module dut (input clk, input rst, input en, output reg [3:0] q);
// Zastąp ten kod zastępczy własnym 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