Перейти к содержанию
    

преобразование int32 в int16 на verilog

Так этот код:

outdata_reg <= ((indata + (32'd1<<31)) >> 16) - (16'd1<<15);

для входного значения - 1 даст на выходе ту же - 1, а не 0.

Это будет не indata/65536.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

52 минуты назад, sonycman сказал:

Так этот код:


outdata_reg <= ((indata + (32'd1<<31)) >> 16) - (16'd1<<15);

для входного значения - 1 даст на выходе ту же - 1, а не 0.

Это будет не indata/65536.

 Да, Вы правы.

чтобы был "0" надо прибавить "1".

outdata_reg <= ((indata + (32'd1<<31)) >> 16) - (16'd1<<15)+1;

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

18 minutes ago, Halfback said:

 Да, Вы правы.

чтобы был "0" надо прибавить "1".


outdata_reg <= ((indata + (32'd1<<31)) >> 16) - (16'd1<<15)+1;

 

А тогда при входном 0 результат будет 1 :) 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 часа назад, sonycman сказал:

А тогда при входном 0 результат будет 1 :) 

тогда так ;)

outdata_reg <= ((indata + (32'd1<<31)) >> 16) - (16'd1<<15)+indata[31];

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 9/7/2021 at 10:35 AM, Halfback said:

Надо по сути 32-разрядное знаковое число сократить до 16-разрядного знакового.

по сути это будет 

outdata_reg <= indata/65536; 

По правилам "С" при преобразовании, просто отбрасывается старшие 16 бит.

Априори программист должен быть уверен что значение числа занимает 15 бит плюс знаковый.

Для Verilog аналогично.

Или нужно заменить деление на сдвиг?  

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...