Вы должны помнить, что -8d69
— это всего лишь битовый шаблон. reg — это тип, который содержит битовые комбинации. Это тип переменной, которая указывает /
выполнять арифметические действия со знаком или без знака.
Если это для синтеза, не забывайте, что вы хотите попытаться избежать разделителей, вы действительно хотите попытаться избежать подписанных разделителей. Скорее всего, синтез будет меньше с >>> 1
reg [7:0] a;
reg signed [7:0] b;
reg [7:0] c;
reg signed [7:0] d;
initial begin
a = -8'd69 ;
b = -8'd69 ;
c = -8'd69 ;
d = -8'd69 ;
#10ns;
a = a/2 ;
b = b/2 ;
#10ns;
$display("a : %8b, %d", a, a);
$display("b : %8b, %d", b, b);
$display("c >>>1 : %8b, %d", c>>>1, c>>>1);
$display("d >>>1 : %8b, %d", d>>>1, d>>>1);
end
Дает:
a : 01011101, 93
b : 11011110, -34
c >>>1 : 01011101, 93
d >>>1 : 11011101, -35
>> x
Смещается вправо на x позиций, >>> x
Смещается вправо на x позиций, но знак расширяется для подписанных типов.
NB: /2
также округляется в моих примерах, >>>
округляется/усекается.
person
Morgan
schedule
13.09.2012
reg signed [7:0] my_reg
- person Morgan   schedule 13.09.2012