6 / 37 · Konzept
Vektorindizes, Bitreihenfolge und Vorzeichen
Bitnummern, serielle Reihenfolge und arithmetische Interpretation beim Lesen des Datenpfads trennen.
Lektionen sind frei lesbar. Schreibe dich ein, um deinen Fortschritt zu speichern.
Indizes sind Namen; die Deklarationsrichtung bestimmt ihre Bedeutung
In logic [7:0] a; steht a[7] ganz links, in logic [0:7] b; dagegen b[0]. Nach Zuweisung von 8'h96 zeigen beide von links 10010110, aber die Bitindizes unterscheiden sich. „Bit 0 ist immer LSBLSB Bit mit dem niedrigsten Stellenwert. Darstellungsrichtung und Indexkonvention müssen gemeinsam geprüft werden.“ gilt erst nach Prüfung der Deklarationsrichtung.
Eine einheitliche Richtung über Schnittstellen erleichtert die Prüfung. Legen Sie auch Anzeigeordnung im Zeitdiagramm und Bitreihenfolge in Dateien fest. Die Eingabe-JSON-Arrays dieses Kurses beginnen beim LSB; RTL-Vektoren liest man gewöhnlich vom MSBMSB Bit mit dem höchsten Stellenwert. Sein Index hängt von der Deklarationsrichtung ab und ist nicht grundsätzlich der größte Index..
Die Schieberichtung an den Verbindungen prüfen
Bei q <= {q[1:0], din}; erhält q[2] das alte q[1], q[1] das alte q[0] und q[0] den Eingang din.
Welche Indizes welche Signale erhalten ist präziser als „im Bild nach links“.
Die Pfeile zeigen die Speicherpositionen eines Bits. Alle RegisterRegister Speichert einen Zustand aus mehreren Bits. Die synchronen Register dieses Kurses übernehmen festgelegte Eingaben an Taktflanken. Mehr erfahren lesen an derselben Flanke alte Werte; din passiert nicht bis q2 in nur einer Flanke.
- din: An dieser Flanke angenommenes Bit
- q0: din übernehmen
- q1: Bisheriges q0 übernehmen
- q2: Bisheriges q1 übernehmen
Arithmetisches und logisches Schieben
>> schiebt logisch nach rechts und füllt die frei werdenden linken, höchstwertigen Stellen mit 0. >>> kann bei signed linkem Operanden arithmetisch mit Vorzeichenerweiterung schieben. Gleiche Bitmuster können je nach signed-Deklaration verschiedene Ergebnisse liefern.
logic signed [7:0] x;
logic [7:0] logical_right, arithmetic_right;
assign logical_right = x >> 1;
assign arithmetic_right = x >>> 1;Für x=8'b11111000 (−8) ergeben sich 01111100 beziehungsweise 11111100. Arithmetisches Rechtsschieben negativer Zahlen folgt nicht immer der Rundungsregel ganzzahliger Division; prüfen Sie dies in numerischen Algorithmen gesondert.
Selbst ausprobieren
Bestimmen Sie für q=101, din=0 jeweils den Folgewert von q<={q[1:0], din} und q<={din, q[2:1]}.
Erklärung lesen
Beide ergeben 010: Für diese Eingabe stimmen die Richtungen zufällig überein. Mit q=001, din=0 ergeben sich 010 und 000; dies unterscheidet die Richtungen.