Zahlen mit fester Breite
Teil des Abschnitts Grundlagen der Verilog-Journey von Coddy. Lektion 14 von 90.
In Verilog gibt es eine Möglichkeit, eine Zahl mit einer bestimmten Größe zu deklarieren. Sie wird als Zahl mit festgelegter Größe bezeichnet. Das ist nützlich, weil es Verwirrung darüber verhindert, wie viele Bits deine Zahl hat, und sicherstellt, dass sich deine Hardware genau wie erwartet verhält.
Eine Zahl mit festgelegter Größe folgt diesem Format: [bits]'[format][value]
<strong>bits</strong>: die Anzahl der Bits (zum Beispiel8)<strong>'</strong>: ein Apostroph, das die Größe vom Format trennt (erforderlich)
<strong>format</strong>: die Basis der Zahl:bfür Binär,dfür Dezimal,hfür Hexadezimal oderofür Oktal<strong>value</strong>: die tatsächliche Zahl (zum Beispiel1010)
Zum Beispiel:
4'b1010: 4 Bits, binär 1010 (dezimal 10)8'd255: 8 Bits, dezimal 255 (binär 11111111)16'hFF: 16 Bits, hexadezimal FF (binär 0000000011111111)3'b1: 3 Bits, binär 001 (die linken Bits werden mit Nullen aufgefüllt)
Codebeispiel:
reg [7:0] data;
data = 8'b10101010; // 8 bits, binary 10101010
data = 8'd170; // 8 Bits, dezimal 170
data = 8'hAA; // 8 bits, hex AAAlle drei Beispiele weisen data denselben Wert zu.
Warum die Größe wichtig ist
Ohne Größenangabe:
reg [7:0] data;
data = 1; // Was bedeutet das? 1 Bit? 8 Bits?Verilog geht standardmäßig davon aus, dass kleine Zahlen 32 Bit groß sind, was Probleme verursachen kann.
Mit Größe:
reg [7:0] data;
data = 8'b00000001; // Clear: 8-bit value 1Nullauffüllung
Wenn du einem größeren Vektor einen kleineren Wert zuweist, füllt Verilog die Bits auf der linken Seite mit Nullen:
reg [7:0] data;
data = 4'b1010; // Becomes 8'b00001010Aufgabe
Vervollständige den Code, indem du die Zahlen mit der richtigen Größe einträgst.
Was zu tun ist:
- Setze
aauf eine 8-Bit-Binärzahl für die Dezimalzahl 170 (binär 10101010) - Setze
bauf eine 4-Bit-Binärzahl für die Dezimalzahl 12 (binär 1100) - Setze
cauf eine 16-Bit-Hexadezimalzahl für die Dezimalzahl 255 (hexadezimal FF)
Probier es selbst
module sized_challenge;
reg [7:0] a;
reg [3:0] b;
reg [15:0] c;
initial begin
a = ______; // 8-Bit-Binär für 170 (10101010)
b = ______; // 4-Bit-Binär für 12 (1100)
c = ______; // 16-Bit-Hex für 255 (FF)
$display("a = %b", a);
$display("b = %b", b);
$display("c = %h", c);
$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