He estado tratando de encontrar el valor Absoluto de un entero designado para Verilog Core utilizando Xilinx C ejecutándose en Microblaze, lo que he visto es que Verilog trata el número negativo como un número positivo.
He intentado todos los tipos de datos: signed int
, int
, Xuint32
.
Mi código c es:
signed int data,value;
data=-20;value=0;
putfsl(data,0);
getfsl(value,0);
signed int data1,value1;
data=20;value=0;
putfsl(data1,0);
getfsl(value1,0);
Después de obtener los valores de las variables, los imprimí en Hyperterminal.
En mi lado de Verilog, el código era:
out <=(in<0)?-in:in;
También probé este código pero los resultados fueron similares
if(in<0)
out=-in;
else
out=in;
¡Por favor ayúdame!
También probé otros tipos de datos y modifiqué parámetros, pero los resultados no han funcionado, siempre obtengo el mismo número que ingresé, es decir,
in<0
la declaración no es verdadera, también lo intenté en < = 0.