Menu
Coddy logo textTech

Uruchamianie alarmu progowego

Część sekcji Projektowanie RTL i weryfikacja ścieżki Verilog w Coddy. Lekcja 35 z 38.

challenge icon

Wyzwanie

Trudny

Zbuduj jeden Monitor próbny w pięciu krokach. Ustawiaj alarm kombinacyjny na wysoki, gdy total jest większe lub równe limitowi bez znaku, także przy równości. Alarm odzwierciedla zaktualizowaną wartość total po każdym zboczu i reaguje na zmiany limitu. limit=0 powoduje, że alarm jest wysoki, nawet gdy total=0. Zachowaj całe dotychczasowe zachowanie akumulacji, włączania, czyszczenia i zliczania. Zachowaj wszystko z poprzednich kroków, w tym testbench i wcześniejsze zachowanie wyjścia. Wszystkie wartości wejściowe są znane. Scenariusze zawierają najwyżej 40 zboczy, więc total mieści się w 16 bitach. Stały testbench wypisuje total dla scenariuszy 1-9, total i count dla scenariuszy 10-12 oraz total, count i alarm dla scenariuszy 13-15. Oceniane są tylko scenariusze włączone dla tego kroku.

Uzupełnij design.v i zachowaj nazwy modułów oraz porty. Zablokowany testbench.v dostarcza zmiany wejść i wypisuje 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 wypisywania, opóźnień ani kończenia symulacji. Oczekiwanym wyjściem jest jeden wiersz dziesiętnych wartości dla każdej obserwacji, oddzielonych pojedynczą spacją i zakończony znakiem nowej linii.

Spróbuj swoich sił

module dut(input clk,rst,en,clear, input [7:0] data, input [15:0] limit, output reg [15:0] total, output reg [3:0] count, output alarm);
    always @(posedge clk)begin
        if(rst || clear)begin total<=0;count<=0;end
        else if(en)begin
            total<=total+data;
            if(count!=15)count<=count+4'd1;
        end
    end
    assign alarm=0;
endmodule

Wszystkie lekcje w sekcji Projektowanie RTL i weryfikacja

Poćwicz samodzielnie: Kompilator Verilog online