reg [3:0] in; output [3:0] shfta; assign shfta = {in
In diesem Fall, da shfta
vier Bits breit sind, wird der Wert von {in<<2} auf die mindesten 4 Bits verkürzt. Wenn in = 4'b0100
, dann shfta = 4'b0000
. Die zwei bedeutendsten Bits des 6-Bit-verschobenen Werts sind verloren.
Im folgenden Code wird ein um 6-Bit verschobener Wert beibehalten und shfta
dem richtigen Wert zugewiesen. Wenn in=4'b0100
, dann shfta = 6'b010000
.
reg [3:0] in; output [5:0] shfta; assign shfta = {in<<2};
Die MAX PLUS II Software leitet die richtige Größe für den Shift-Vorgang ab, je nach Größe der Variable auf der linken Seite der Zuweisungsanweisung. Betrachten Sie den folgenden Code:
reg [3:0] in; output [7:0] shfta; assign shfta = {in<<2} 7'h10;
Da shfta
acht Bits breit sind, werden {in<<2} acht Bits zugewiesen. Für den >> Bediener gelten die gleichen Regeln. Aufgrund der Art des >> Bedieners würden die Ergebnisse jedoch nicht von der Breite der Implementierung des Shift-Bedieners beeinflusst. Wenn beispielsweise in =4'b1000
{in>>2} ist 4'b0010
. Die linke Seite der verschobenen Daten ist mit Nullen aufgefüllt. Hier werden die bedeutendsten Bits nicht verloren. Stattdessen gehen aufgrund des Shift-Vorgangs unabhängig von der Breite der
die Implementierung des Shift-Bedieners.