Rückblick – Operatoren-Herausforderung
Teil des Abschnitts Grundlagen der Verilog-Journey von Coddy. Lektion 29 von 90.
Aufgabe
Vervollständige den Code, indem du für jede Aufgabe die richtigen Ausdrücke schreibst. Diese Herausforderung behandelt alle Operatoren aus diesem Kapitel.
Aufgabe:
- Logisch: Überprüfe, ob sowohl
value1als auchvalue2ungleich null sind, und speichere das Ergebnis inlogic_out - Reduktion: Überprüfe, ob alle Bits von
vector1 sind, und speichere das Ergebnis inreduction_out - Verschiebung: Verschiebe
dataum 2 Bits nach links und speichere das Ergebnis inshift_out - Konkatenation: Kombiniere
highundlowzu einem 8-Bit-Wert und speichere das Ergebnis inconcat_out - Bedingt: Speichere den größeren Wert von `a` und `b` in
cond_out
Probier es selbst
module operator_challenge;
reg [3:0] value1, value2;
reg logic_out;
reg [3:0] vector;
reg reduction_out;
reg [7:0] data;
reg [7:0] shift_out;
reg [3:0] high, low;
reg [7:0] concat_out;
reg [3:0] a, b;
reg [3:0] cond_out;
initial begin
// Logisch
value1 = 4'd6;
value2 = 4'd0;
logic_out = ______; // Prüfe, ob sowohl value1 als auch value2 ungleich null sind
// Reduktion
vector = 4'b1111;
reduction_out = ______; // Check if all bits of vector are 1
// Shift
data = 8'b00001111;
shift_out = ______; // Verschiebe data um 2 Bits nach links
// Konkatenation
high = 4'b1010;
low = 4'b1100;
concat_out = ______; // Kombiniere high und low zu einem 8-Bit-Wert
// Konditional
a = 4'd7;
b = 4'd12;
cond_out = ______; // Speichere den größeren von `a` und `b`
$display("6 && 0 = %d", logic_out);
$display("&4'b1111 = %d", reduction_out);
$display("00001111 << 2 = %b", shift_out);
$display("{1010, 1100} = %b", concat_out);
$display("max(7, 12) = %d", cond_out);
$finish;
end
endmoduleAlle Lektionen in Grundlagen
1Einführung
Was ist VerilogHardware vs. SoftwareIhr erstes ModulKommentareAbstraktionsebenen des Designs4Operatoren Teil 1
Arithmetische OperatorenModulo-OperatorVergleichsoperatorenWiederholung – einfache MathematikBitweise Operatoren7Zuweisungen und Gatter
Kontinuierliche ZuweisungZuweisung mit OperatorenIntegrierte Gatter-GrundelementeUND-, ODER- und NICHT-GatterXOR- und XNOR-GatterRückblick – Logikgatter-Schaltung10Entscheidungsfindung
If-AnweisungIf – ElseRückblick – Einfacher KomparatorCase-AnweisungCasex und CasezRückblick – ALU-Entwurf13Zeitsteuerung und Verzögerungen
Was sind Verzögerungen?GatterverzögerungenZuweisungsverzögerungenTimescale-DirektiveTakterzeugungZusammenfassung – Zeitsteuerung2Datentypen
Wire-TypReg-TypInteger und RealVektorenArraysParameterZusammenfassung – Signale deklarieren5Operatoren Teil 2
Logische OperatorenReduktionsoperatorenSchiebeoperatorenVerkettungsoperatorBedingter OperatorRückblick – Operatoren-Herausforderung11Schleifen
For-SchleifeWhile-SchleifeWiederholungsschleifeEndlosschleifeAnweisung deaktivierenRückblick – Schleifenmuster3Zahlensystem
Binäre DarstellungZahlen mit fester BreiteZahlen ohne feste BreiteNegative ZahlenSpezialwerte X und ZZusammenfassung – Zahlenformate6Module
ModulstrukturInput- und Output-PortsInout-PortsModulinstanziierungPortzuordnung nach NamenPortzuordnung nach ReihenfolgeRückblick – Ein Modul erstellenÜbe selbstständig: Online-Verilog-Compiler