Menu
Coddy logo textTech

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;
end

Wartość maksymalna zostaje zachowana zamiast zawijać się do zera.

Jawnie zabezpieczaj aktualizacje granic, gdy licznik ma osiągnąć wartość graniczną zamiast zawijać się.

challenge icon

Wyzwanie

Średni

Utwó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;
endmodule
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Projektowanie RTL i weryfikacja

Poćwicz samodzielnie: Kompilator Verilog online