Arithmetische Rechtsschiebungen
Teil des Abschnitts RTL-Design und Verifikation der Verilog-Journey von Coddy. Lektion 8 von 38.
Eine arithmetische Rechtsverschiebung verwendet >>> und reproduziert das Vorzeichenbit, wenn ihr linker Operand signed ist. Eine logische Rechtsverschiebung verwendet >> und füllt mit Nullen auf. Bei einem negativen ungeraden Wert ist eine arithmetische Rechtsverschiebung nicht dasselbe wie eine integer-Division, die gegen null abschneidet.
Relevanter Auszug; umgebende Deklarationen und Verbindungen werden in der Aufgabe bereitgestellt.
reg signed [7:0] value;
value = -3;
$display("%0d", value >>> 1);Das Ergebnis ist minus zwei, weil die Vorzeichenerweiterung die negative Interpretation im Zweierkomplement beibehält.
Verwende einen signed-linken Operanden mit >>>, wenn eine Vorzeichenerweiterung erforderlich ist.
Aufgabe
MittelArithmetische Rechtsverschiebung eines signed-8-Bit-Werts um den Betrag (0 bis 7). Gib das signed-8-Bit-Ergebnis y zurück. Negative Werte werden mit ihrem Vorzeichenbit aufgefüllt. Ausgabespalten: y. Alle Stimuluswerte sind bekannte Binärwerte.
Vervollständige design.v und bewahre seine Modulnamen und Ports. Die gesperrte Datei testbench.v liefert Eingabeänderungen 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, durch ein Leerzeichen getrennt und mit einem Zeilenumbruch endend.
Probier es selbst
module dut (input signed [7:0] value, input [2:0] amount, output signed [7:0] y);
// Ersetze diesen Platzhalter durch dein Design.
assign y = 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