One-Hot-Validierung
Teil des Abschnitts RTL-Design und Verifikation der Verilog-Journey von Coddy. Lektion 3 von 38.
One-Hot-Daten haben genau ein gesetztes Bit. Ein Decoder erzeugt solche Daten, während die Validierung eingehende Daten vor ihrer Verwendung überprüft. Für bekannte Binärwerte ist ein Wert ungleich null One-Hot, wenn bits & (bits - 1) null ist. Dieser Abschnitt verwendet diese Abkürzung nicht, um X oder Z zu klassifizieren.
Relevanter Auszug; umgebende Deklarationen und Verbindungen werden in der Aufgabe bereitgestellt.
assign one_hot = (bits != 0) && ((bits & (bits - 1)) == 0);Die Prüfung auf einen Wert ungleich null schließt den Leerlaufzustand aus; der Bit-Trick weist mehrere gesetzte Bits zurück.
Unterscheide bei der Validierung von Anfragen zwischen null, genau einem gesetzten Bit und mehreren gesetzten Bits.
Aufgabe
MittelFür bekannte 4-Bit-Eingabe bits setze valid nur, wenn genau ein Bit high ist. Verwende die Nicht-Null-Prüfung zusammen mit bits & (bits - 1). Ausgabespalten: valid. Alle Stimuluswerte sind bekannte Binärwerte.
Vervollständige design.v und bewahre seine Modulnamen und Ports. Das gesperrte testbench.v liefert Eingabeänderungen und gibt die Ausgaben aus, nachdem sie sich stabilisiert haben. Es wählt ein Szenario mithilfe eines Simulatorarguments wie +CASE=1; es ist keine Standardeingabe erforderlich. Füge dem Design kein Drucken, keine Verzögerungen oder Simulationsbeendigung hinzu. Die erwartete Ausgabe ist eine Zeile mit Dezimalwerten pro Beobachtung, getrennt durch ein Leerzeichen und endend mit einem Zeilenumbruch.
Probier es selbst
module dut (input [3:0] bits, output valid);
// Ersetze diesen Platzhalter durch dein Design.
assign valid = 0;
endmoduleDiese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle 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ähler2Bitbreiten 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