Übertragsbits bewahren
Teil des Abschnitts RTL-Design und Verifikation der Verilog-Journey von Coddy. Lektion 6 von 38.
Die Signalbreite bestimmt, welche Bits dargestellt werden können. Mache die arithmetische Absicht deutlich, indem du Operanden vor einer Operation erweiterst. Das Addieren zweier vorzeichenloser 8-Bit-Werte kann neun Ergebnisbits erfordern; bei der Zuweisung von nur acht Bits bleiben die unteren acht Bits erhalten und der Übertrag geht verloren.
Relevanter Auszug; die umgebenden Deklarationen und Verbindungen werden in der Aufgabe bereitgestellt.
wire [8:0] total;
assign total = {1'b0,a} + {1'b0,b};Jeder Operand ist ausdrücklich neun Bit breit und entspricht damit der vollständigen Summe.
Wähle die erforderliche Ergebnisbreite und erweitere die Operanden vor der Arithmetik.
Aufgabe
MittelAddiere vorzeichenlose 8-Bit-Werte a und b, ohne den Übertrag zu verlieren. Gib die vollständige 9-Bit-Summe in total zurück. Erweitere beide Operanden ausdrücklich auf neun Bit. Ausgabespalten: total. Alle Stimuluswerte sind bekannte Binärwerte.
Vervollständige design.v und bewahre dessen Modulnamen und Ports. Das gesperrte testbench.v liefert Eingangsä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 Simulationsterminierung hinzu. Die erwartete Ausgabe besteht aus einer Zeile mit Dezimalwerten pro Beobachtung, durch jeweils ein Leerzeichen getrennt und mit einem Zeilenumbruch abgeschlossen.
Probier es selbst
module dut (input [7:0] a, input [7:0] b, output [8:0] total);
// Ersetzen Sie diesen Platzhalter durch Ihr Design.
assign total = 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