Aktivierte Samples akzeptieren
Teil des Abschnitts RTL-Design und Verifikation der Verilog-Journey von Coddy. Lektion 32 von 38.
Aufgabe
SchwerErstelle in fünf Schritten einen Sample Monitor. Füge eine Enable-Steuerung hinzu: Nach der Reset-Priorität akzeptiert en=1 Daten und addiert sie zur Gesamtsumme; en=0 hält die Gesamtsumme. Behalte das gesamte bisherige Verhalten 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 die Gesamtsumme in 16 Bit. Die feste Testbench gibt für die Szenarien 1–9 die Gesamtsumme aus, für die Szenarien 10–12 die Gesamtsumme und den Zähler und für die Szenarien 13–15 die Gesamtsumme, den Zähler und den Alarm. Bewertet werden nur die für diesen Schritt aktivierten Szenarien.
Vervollständige design.v und bewahre die Modulnamen und Ports. Die gesperrte testbench.v liefert Eingangsänderungen und gibt die Ausgaben aus, nachdem sie sich stabilisiert haben. Sie wählt ein Szenario mithilfe eines Simulatorarguments wie +CASE=1; eine Standardeingabe ist nicht erforderlich. Füge dem Design keine Ausgaben, Verzögerungen oder Simulationsbeendigung hinzu. Die erwartete Ausgabe besteht aus einer Zeile mit Dezimalwerten 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 total<=total+data;
count<=0;
end
assign alarm=0;
endmoduleAlle Lektionen in RTL-Design und Verifikation
1Zuverlässige kombinatorische RTL
Standardwerte verhindern LatchesPrioritätsencoderOne-Hot-ValidierungSichere Case-DekodierungRückblick – Request-Router4Kontrolliertes sequentielles RTL
Priorität von Reset und EnableSättigungszählerPipelining von Daten und ValidErkennen abgetasteter FlankenRückblick – Ereigniszähler7Projekt – Beispielmonitor
Samples sammelnAktivierte Samples akzeptieren2Bitbreiten und vorzeichenbehaftete Arithmetik
Übertragsbits bewahrenVorzeichenbehaftete VergleicheArithmetische RechtsschiebungenÜberlauf und SättigungRückblick – vorzeichenbehaftete Differenz5Speicher und Nachschlagetabellen
Kombinatorische ROM-TabellenSpeicherung in Register-ArraysRegistrierte LeseportsRead-Write-WeiterleitungRückblick – Bank mit zwei Leseports8Abschließende Herausforderungen
Herausforderung – Paritäts-PipelineHerausforderung – MusterereignisseHerausforderung – Begrenzte SummeÜbe selbstständig: Online-Verilog-Compiler