Menu
Coddy logo textTech

Aktuelles Fenster leeren

Teil des Abschnitts RTL-Design und Verifikation der Verilog-Journey von Coddy. Lektion 33 von 38.

challenge icon

Aufgabe

Schwer

Erstelle in fünf Schritten einen Sample Monitor. Füge eine synchrone Löschung mit Priorität nach rst und vor en hinzu. clear setzt total zurück, ohne an dieser Flanke Daten zu übernehmen, selbst wenn en=1 ist. Behalte das Verhalten von Reset und Aktivierung bei. Behalte alles aus den vorherigen Schritten bei, einschließlich der Testbench und des bisherigen Ausgabeverhaltens. Alle Eingabewerte sind bekannt. Szenarien enthalten höchstens 40 Flanken, daher passt total in 16 Bit. Die feste Testbench gibt total für die Szenarien 1–9, total und count für die Szenarien 10–12 sowie total, count und alarm für die Szenarien 13–15 aus. Bewertet werden nur die für diesen Schritt aktivierten Szenarien.

Vervollständige design.v und bewahre seine Modulnamen und Ports. Die gesperrte testbench.v stellt Eingabeänderungen bereit und gibt die Ausgaben aus, nachdem sie sich stabilisiert haben. Sie wählt ein Szenario mithilfe eines Simulatorarguments wie +CASE=1 aus; eine Standardeingabe ist nicht erforderlich. Füge dem Design keine Ausgaben, Verzögerungen oder Simulationsbeendigung hinzu. Die erwartete Ausgabe besteht aus einer Zeile dezimaler Werte pro Beobachtung, getrennt durch ein Leerzeichen und mit einem abschließenden Zeilenumbruch.

Probier es selbst

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)total<=0;else if(en)total<=total+data;
        count<=0;
    end
    assign alarm=0;
endmodule

Alle Lektionen in RTL-Design und Verifikation

Übe selbstständig: Online-Verilog-Compiler