Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Поменять знак числа
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
alexPec
Добрый день. Такая задачка встала. Надо поменять знак числа с "-" на "+". Число 13-ти рязрядное, старший бит знаковый. Вроде все просто - инвертировать и прибавить 1, но вот сумматор 12-разрядный ставить чтобы знак поменять жаба душит. Может попроще можно?
Serhiy_UA
Цитата(alexPec @ Oct 21 2010, 16:09) *
Добрый день. Такая задачка встала. Надо поменять знак числа с "-" на "+". Число 13-ти рязрядное, старший бит знаковый. Вроде все просто - инвертировать и прибавить 1, но вот сумматор 12-разрядный ставить чтобы знак поменять жаба душит. Может попроще можно?

Только проинвертировать. Тогда будет ошибка на единицу в младшем 13-м разряде, которую иногда можно простить.
alexPec
Цитата(Serhiy_UA @ Oct 21 2010, 17:14) *
Только проинвертировать. Тогда будет ошибка на единицу в младшем 13-м разряде, которую иногда можно простить.

Нельзя прощать, проверял на модели, такое прощение выливается в итоге в уменьшение соотношения сигнал/шум с 40 до 37 дБ - это уже не простительно.
Koluchiy
Неужели сумматор - это так много?

А вообще, если дальше где-нибудь это число складывается/вычитается с чем-нибудь, то можно заменить операцию на обратную, и знак скомпенсируется.

Думаю, синтезатор это сам соптимизирует.
dmitry-tomsk
Цитата(Koluchiy @ Oct 21 2010, 17:51) *
Неужели сумматор - это так много?

А вообще, если дальше где-нибудь это число складывается/вычитается с чем-нибудь, то можно заменить операцию на обратную, и знак скомпенсируется.

Думаю, синтезатор это сам соптимизирует.

Если решается цос задача, например, умножение синуса на сигнал, то инвертирование можно сделать на dsp слайсе, который производит умножение. Хотя ресурсов не так много надо, как правило, сумматор делается на тех же лутах, что и инвертор, если разрядность не большая.
alexPec
Спасибо всем. Скомпенсировать единицу действительно дальше можно.
des00
Цитата(alexPec @ Oct 21 2010, 08:09) *
Добрый день. Такая задачка встала. Надо поменять знак числа с "-" на "+". Число 13-ти рязрядное, старший бит знаковый. Вроде все просто - инвертировать и прибавить 1, но вот сумматор 12-разрядный ставить чтобы знак поменять жаба душит. Может попроще можно?

для хилых и латекса можно не бояться использоваться сумматор, т.к. он стоит после лютов, а слайс вы все равно используете. А вот для альтеры красивое решение, с помощью свойств dffeas есть на этом форуме. Используйте поиск %)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.