7 / 37 · Konzept
Breiten von Slices, Konkatenation und Wiederholung
Datenpfade durch Berechnung der Gesamtbreite und Werterhaltungsbedingungen aufbauen.
Lektionen sind frei lesbar. Schreibe dich ein, um deinen Fortschritt zu speichern.
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=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.
- a = 10: Breite 2 Bit, Ganzzahl 2
- b = 101: Breite 3 Bit, Ganzzahl 5
- {a,b} = 10101: Breite 5 Bit, 2×8+5=21
Die Breite neben den Ausdruck schreiben
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
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 . In vier Bit wird das obere Bit verworfen; übrig bleiben 0111, also 7.