Поиск абсолютного значения в данных Verilog, разработанных системой C / Xilinx X - PullRequest
0 голосов
/ 11 августа 2011

Я пытался найти абсолютное значение целого числа, которое назначено ядру Verilog с помощью Xilinx SystemC. Я видел, что Verilog рассматривает отрицательное число как положительное число.

Я перепробовал все типы данных: signed int, int, Xuint32.

мой код SystemC или Xilinx C:

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);

После получения значений переменных я напечатал их на Гипертерминале.

На моей стороне Verilog код был:

out <=(in<0)?-in:in;

Я также пробовал этот код, но результаты были похожи

if(in<0)
out=-in;
else 
out=in;

Пожалуйста, помогите мне!

Я также пробовал другие типы данных и изменил параметры, но результаты не удавались, чтобы я всегда получал Тот же номер, который я ввожу, т. Е.

in<0

утверждение не соответствует действительности, я также пытался in<=0;

Ответы [ 2 ]

2 голосов
/ 11 августа 2011

Я не могу помочь с Системой C, но, основываясь на ваших комментариях, код Verilog использует беззнаковый тип для сигнала in.

reg [31:0] in;
if(in<0) //This will always be false since reg is unsigned
  out=-in;
else 
  out=in;

Чтобы это работало, in должно быть объявлено как подписанное.

signed reg [31:0] in;

Вы все еще можете проверить значение без знака для отрицательного значения (предполагая, что in действительно содержит значение из двух дополнений), посмотрев на MSB.

//If negative
if(in[31])
  out = -in;
else
  out = in;
0 голосов
/ 12 августа 2011

Что ж, я наконец пришел к выводу, что ответ действительно сработал, как это было предложено кем-то. Спасибо ему ( Мартин Томпсон )

Ответ таков: до Verilog-2001 весь векторарифметика в Verilog была без знака.

В Verilog-2001 вы можете явно вызывать арифметику со знаком, поэтому я думаю, что вам нужно будет ввести:

if ($signed(in) < 0)
 out = -$signed(in);
else
 out = in;

Материал для чтения, который может бытьИнтересы:

Подписанная арифметика в Verilog-2001 - Возможности и опасности

...