Integer und Real
Teil des Abschnitts Grundlagen der Verilog-Journey von Coddy. Lektion 8 von 90.
Zusätzlich zu wire und reg verfügt Verilog über weitere Datentypen für Zahlen mit unterschiedlichen Verwendungszwecken.
Integer
integer ist eine vielseitig einsetzbare Variable zum Zählen und Rechnen.
- Standardgröße ist 32 Bit
- Vorzeichenbehaftet (kann negative Zahlen speichern)
- Wird hauptsächlich in Testbenches und für Schleifen verwendet
Eine Ganzzahl deklarieren:
integer i; // 32-Bit-Variable mit Vorzeichen
integer count; // Kann negative Zahlen speichernInteger verwenden:
integer i;
initial begin
i = 0; // Beginnt bei 0
i = i + 1; // Zählt hoch
i = -5; // Kann negative Werte speichern
$display("i = %d", i); // Gibt aus: i = -5
endReal
real ist für Gleitkommazahlen (Zahlen mit Nachkommastellen).
- Speichert gebrochene Werte
- Wird in Testbenches für Berechnungen verwendet
- Kann nicht zu Hardware synthetisiert werden
Deklarieren einer Gleitkommazahl:
real pi; // Gleitkomma-Variable
real voltage;Verwendung von real:
real pi;
initial begin
pi = 3.14159; // Dezimalwert
pi = 22.0 / 7.0; // Divisionsergebnis
$display("pi = %f", pi); // Gibt aus: pi = 3.142857
endWo sie verwendet werden
In Testbenches: Ganzzahlen und reelle Zahlen werden häufig für Schleifenzähler, Berechnungen und zum Überprüfen erwarteter Werte verwendet. Sie erleichtern das Schreiben und Verstehen von Testcode.
In der Hardware: Der Typ real ist nicht synthetisierbar, das heißt, er kann nicht in eine tatsächliche Schaltung umgewandelt werden. Der Typ integer kann synthetisiert werden und wird oft als Schleifenzähler verwendet. Für die Signale der Hardware, die auf ein FPGA oder einen Chip kommt, solltest du jedoch reg und wire verwenden.
Aufgabe
Vervollständige den Code, damit die Testbench funktioniert.
Was zu tun ist:
- Deklariere eine Ganzzahl namens i (für den Schleifenzähler).
- Deklariere eine reelle Zahl namens value (für die Berechnung).
Probier es selbst
module test;
// Deklariere eine Ganzzahl namens i
// Deklariere eine Gleitkommazahl namens value
initial begin
i = 7;
value = i * 0.5;
$display("i = %0d, value = %f", i, value);
$finish;
end
endmoduleDiese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle 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