Vorzeichenbehaftete Vergleiche
Teil des Abschnitts RTL-Design und Verifikation der Verilog-Journey von Coddy. Lektion 7 von 38.
Dasselbe Bitmuster kann unterschiedliche signed- und vorzeichenlose Zahlen darstellen. Deklariere beide Operanden als signed, wenn du Zweierkomplementwerte vergleichst. Das Mischen von signed- und vorzeichenlosen Operanden kann die Interpretation des Vergleichs ändern. Konkatenationen sind vorzeichenlose Ausdrücke, selbst wenn sie signed-Signale enthalten.
Relevanter Auszug; die umgebenden Deklarationen und Verbindungen werden in der Aufgabe bereitgestellt.
wire signed [7:0] a,b;
assign less = a < b;Die signed-Deklarationen sorgen dafür, dass negative Werte unter nichtnegativen Werten verglichen werden.
Halte Vergleichsoperanden konsequent signed und erweitere signed-Werte mit ihrem Vorzeichenbit.
Aufgabe
MittelVergleiche signed 8-Bit-a und b. Gib less aus, wenn a kleiner als b ist, und equal, wenn sie gleich sind. Beide Eingaben sind vorzeichenbehaftete signed-Werte im Zweierkomplement. Ausgabespalten: less, equal. Alle Stimuluswerte sind bekannte Binärwerte.
Vervollständige design.v und bewahre die 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 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 signed [7:0] a, input signed [7:0] b, output less, output equal);
// Ersetzen Sie diesen Platzhalter durch Ihr Design.
assign less = 0;
assign equal = 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