[an error occurred while processing this directive]
Ответ:
(«Телесистемы»: Конференция «Программируемые логические схемы и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено SAZH 20 января 2006 г. 17:54
В ответ на: Кто делал fft, подскажите плз, vhdl, операции с отрицательными числами(+) отправлено <font color=gray>M_A</font> 20 января 2006 г. 13:16

Наверно, есть разница между принятыми представлениями о числах без знака, со знаком и реализацией конкретного устройства в железе.
Если к Вам на узел приходит сигнал в диапазоне –1В : 1В Вы используете АЦП (предположим 8 разрядный) для получения цифрового кода. АЦП ничего не знает о числах со знаком или без знака. Оно говорит, что если Вы податите напряжение на вход АЦП от 2В до 3В, то на выходе получите код
От 0000_0000 до 1111_1111. ВЫ по предложенной схеме с операционником и АЦП приводите диапазон –1В +1В к диапазону 2В :3В. И что в результате.
Обычно получается что –1В соответствует коду 1111_1111, а +1В коду 0000_0000.
А потом Вам говорят что хотят –1В видеть как число –128 (1000_0000), а +1В как число +127 (0111_1111). И что делаете Вы. Инвертируете на выходе АЦП все кроме старшего разряда.
Вот Вам сразу signed. (Получается, Вам нужно точно знать, какой код с выхода ВАШЕГО АЦП соответствует мах размаху по минусу и плюсу и к какому виду преобразовывать полученный код простым инвертированием). Если в вашем ПЗУ коэффициенты уложить тоже в виде signed далее все автоматом делается. Оперируете ими как signed. Причем для сумматора signed, unsigned это какой одноразрядный выход использовать: перенос или переполнение. Вместо него для удобства работы размножаем знак вручную на необходимое число старших разрядов (синтезатор у Quartus размножает 0), если конечно в этих операциях возможно переполнение. Вам виднее. А ОЗУ тоже все равно : какой код запишете, такой и считаете. Нет у него понятия signed, unsigned. (Если данные с АЦП в железе идут прямо на ОЗУ, signed придется сделать на выходе (инвертировать что надо) ).
С умножителем тоже самое. Использовал только мегафункцию. Там есть параметр signed.
Потом все это многоразрядное гоните потребителю и говорите, что это signed.
Кстати у Альтеры есть мегафункция. Версия 2.1.1 точно еще поддается старому дескриптору. На VHDL е.



Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 
NoIX ключ Запомнить

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Rambler's Top100 Рейтинг@Mail.ru
Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание

E-mail: info@telesys.ru