Debe recordar que -8d69
es solo un patrón de bits. reg es un tipo que contiene patrones de bits. Es el tipo de variable que instruye /
para realizar aritmética con o sin signo.
Si esto es para la síntesis, teniendo en cuenta que desea probar y evitar los divisores, realmente quiere intentar y evitar los divisores firmados. Es probable que la síntesis más pequeño con >>> 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
Da:
a : 01011101, 93
b : 11011110, -34
c >>>1 : 01011101, 93
d >>>1 : 11011101, -35
>> x
desplaza a la derecha por lugares x, x >>> x
desplaza a la derecha lugares pero de signo extiende para este tipo firmados.
NB: el /2
también se está redondeando en mis ejemplos, >>>
redondeará hacia abajo/truncará.
También debe declarar los números firmados como tales. 'reg signed [7: 0] my_reg' – Morgan
Puede usar >>> 1 para realizar un signo de división extendida por 2. (si se declara como un tipo firmado). – Morgan