Menu
Coddy logo textTech

Schwellenwertalarm auslösen

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

challenge icon

Aufgabe

Schwer

Baue über fünf Schritte hinweg einen Sample Monitor. Setze den kombinatorischen Alarm auf High, sobald total mindestens dem vorzeichenlosen limit entspricht, einschließlich Gleichheit. Der Alarm spiegelt nach jeder Flanke den aktualisierten Wert von total wider und folgt Änderungen von limit. limit=0 setzt den Alarm auch dann auf High, wenn total=0 ist. Behalte das gesamte Akkumulations-, Enable-, Clear- und Zählverhalten bei. Übernimm alles aus den vorherigen Schritten, einschließlich des Testbenches und des bisherigen Ausgabeverhaltens. Alle Eingangswerte sind bekannt. Die Szenarien enthalten höchstens 40 Flanken, daher passt total in 16 Bit. Der feste Testbench gibt für die Szenarien 1–9 total, für die Szenarien 10–12 total und count sowie für die Szenarien 13–15 total, count und alarm aus. Nur die für diesen Schritt aktivierten Szenarien werden bewertet.

Vervollständige design.v und behalte dessen Modulnamen und Ports bei. Der gesperrte testbench.v liefert Eingangsänderungen und gibt die Ausgänge aus, nachdem sie sich stabilisiert haben. Er 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.

REQUIRED OUTPUT FORMAT: [Dein übersetzter Inhalt hier]

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

Alle Lektionen in RTL-Design und Verifikation

Übe selbstständig: Online-Verilog-Compiler