Verilog: "... ist keine Konstante"

Ich habe drei Drähte wie folgt erstellt:

wire [11:0] magnitude;
wire [3:0] bitsEnd;
wire [3:0] leadingBits;

Sie sind alleassigned Ausdruck mit kombinatorischer Logik. Der folgende Code funktioniert einwandfrei:

assign leadingBits[3] = magnitude[bitsEnd + 3];
assign leadingBits[2] = magnitude[bitsEnd + 2];
assign leadingBits[1] = magnitude[bitsEnd + 1];
assign leadingBits[0] = magnitude[bitsEnd + 0];

Der folgende (scheinbar äquivalente) Code gibt jedoch den FehlerbitsEnd is not a constant:

assign leadingBits[3:0] = magnitude[bitsEnd + 3:bitsEnd];

Kann ich für diese Aufgabe keine Kurzform verwenden? Warum sollte dieser Fehler im zweiten Fall auftreten, aber nicht im ersten?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage