È necessario ricordare che lo -8d69
è solo un motivo. reg è un tipo che contiene schemi di bit. È il tipo di variabile che indica a /
di eseguire operazioni aritmetiche con segno o senza segno.
Se questo è per sintesi, in mente che si desidera provare ed evitare i divisori, si vuole davvero cercare di evitare i divisori firmati. Sarà probabilmente sintesi più piccola 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
Dà:
a : 01011101, 93
b : 11011110, -34
c >>>1 : 01011101, 93
d >>>1 : 11011101, -35
>> x
turni diritto di posti x, >>> x
Turni posti x giusto, ma il segno si estende per i tipi di firma.
NB: lo /2
è anch'esso arrotondato nei miei esempi, >>>
verrà arrotondato per eccesso/troncato.
È inoltre necessario dichiarare i numeri firmati come tali. 'reg signed [7: 0] my_reg' – Morgan
Puoi usare >>> 1 per eseguire una divisione estesa di segno per 2. (se è dichiarata come un tipo firmato). – Morgan