Altifigence Academy

7 / 37 · Konzept

Breiten von Slices, Konkatenation und Wiederholung

Datenpfade durch Berechnung der Gesamtbreite und Werterhaltungsbedingungen aufbauen.

Konkatenation ist keine Addition

{a,b} hängt die Bits von b hinter a. Bei Breiten M und N beträgt die Ergebnisbreite M+N. Für unsigned-BitfolgenUnsigned Interpretation einer Bitfolge als nichtnegative Ganzzahl. Der n-Bit-Bereich ist 0 bis 2^n−1 und kann sich von der signed-Interpretation derselben Bits unterscheiden. Mehr erfahren gilt numerisch:

{a,b}=a⋅2N+b\{a,b\}=a\cdot2^N+b

a=2'b10, b=3'b101 ergeben 5'b10101, also 21, nicht die arithmetische Summe 7.

Die Bits von a rücken um die Breite von b nach oben. KonkatenationKonkatenation Hängt Bitfolgen aneinander. Die Ergebnisbreite ist die Summe der Operandenbreiten; dies ist keine Zahlenaddition. bedeutet hier a×2³+b statt a+b.

Bits verketten und Zahlen addieren
  1. a = 10: Breite 2 Bit, Ganzzahl 2
  2. b = 101: Breite 3 Bit, Ganzzahl 5
  3. {a,b} = 10101: Breite 5 Bit, 2×8+5=21

Die Breite neben den Ausdruck schreiben

SystemVerilog
logic [7:0] word;
logic [3:0] upper, lower;
logic [7:0] swapped;
assign upper = word[7:4];
assign lower = word[3:0];
assign swapped = {lower, upper};

Bei 8'hA3 wird swapped zu 8'h3A. Ein falscher Slice-BereichSlice Auswahl eines zusammenhängenden Bitbereichs aus einem Vektor. Der Bereich bestimmt Breite und Reihenfolge des Ergebnisses. ändert Breite oder Wert. Ein Teilvektor kann auch aus einem signed-Vektor als eigenständiger unsigned-Wert behandelt werden; prüfen Sie die Bedeutung vor signed-Arithmetik erneut.

Vorzeichenerweiterung und Wiederholung

SystemVerilog
logic signed [3:0] small;
logic signed [7:0] extended;
assign extended = {{4{small[3]}}, small};

Vier Kopien des Vorzeichenbits plus die ursprünglichen vier Bits ergeben acht Bit. Vorzeichenerweiterung addiert nicht 1, wenn das MSBMSB Bit mit dem höchsten Stellenwert. Sein Index hängt von der Deklarationsrichtung ab und ist nicht grundsätzlich der größte Index. Mehr erfahren gesetzt ist, sondern verbreitert das Muster unter Werterhalt.

Ein generischer Schieber mit q[N-2:0] hat bei N=1 keinen gültigen Bereich. Begrenzen Sie die unterstützte Mindestbreite oder behandeln Sie N=1 in einem generate-Zweig. Parametrisierung ist mehr als das Ersetzen von Zahlen durch Variablen.

Selbst ausprobieren

a hat drei Bits 101, b zwei Bits 11. Wie breit und groß ist {a, b}, und was bleibt bei Speicherung in vier Bit?

Erklärung lesen

Fünf Bit 10111 mit Wert 5⋅4+3=235\cdot4+3=23. In vier Bit wird das obere Bit verworfen; übrig bleiben 0111, also 7.

Deine Auswahl gilt für diesen Browser. Du kannst sie jederzeit in der Fußzeile ändern.