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

Из 32/64 бит floating point в 16 бит fixed point

Вот у вас готов алгоритм DSP, построен и отсимулирован в Матлабе. Пришло время имплементации на 16 битном, fixed point процессоре (скажем C5402). Ессно, встает задача перевода числовых данных/коеффициентов и т.д. в 16 битный, fix point формат стараясь как можно меньше ударить по точности и характеристикам алгоритма. Например, узкополосные IIR фильтры, с полюсами (в Матлабе) близкими к единице (по радиусу). Неточность/сдвиг полюсов в следствии грубой подгонки под 16 бит, fix point может вышибить фильтры из устойчивости и т.д. и т.п.

 

Как вы переводите данные в 16 бит fixed point ?

В примерах которые видел, коеффициенты умножали на 1024, брали 4е старшие десятичные цифры (16 бит) и с ними работали. Затем, данные отфильтрованного сигнала нормализировали деля каждое на (float)1024.

 

Правильно ли это ?

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


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

Вот у вас готов алгоритм DSP, построен и отсимулирован в Матлабе. Пришло время имплементации на 16 битном, fixed point процессоре (скажем C5402). Ессно, встает задача перевода числовых данных/коеффициентов и т.д. в 16 битный, fix point формат стараясь как можно меньше ударить по точности и характеристикам алгоритма. Например, узкополосные IIR фильтры, с полюсами (в Матлабе) близкими к единице (по радиусу). Неточность/сдвиг полюсов в следствии грубой подгонки под 16 бит, fix point может вышибить фильтры из устойчивости и т.д. и т.п.

 

Как вы переводите данные в 16 бит fixed point ?

В примерах которые видел, коеффициенты умножали на 1024, брали 4е старшие десятичные цифры (16 бит) и с ними работали. Затем, данные отфильтрованного сигнала нормализировали деля каждое на (float)1024.

 

Правильно ли это ?

 

Не совсем правильно поставлен вопрос, или скорее не совсем корректная постановка задачи.

Если отвечать в лоб на вопрос об округлении, то естественно данные стараются округлять в ближайшую сторону (а это не совсем то, что Вы видели в примерах:)).

Но дело не в округлении. А в том, что вот так вот не обоснованно выбирать процессор для решения поставленной задачи, это не есть правильный путь:). И почему кстати 16 бит? А может достаточно 8, или 4? Откуда взята эта цифра 16? Это Ваше любимое число или прихоть Вашего руководителя? Инженерная профессия не терпит цифр взятых наугад. Все должно быть по возможности строго математически обосновано. Или расчетами или моделированием. А еще лучше и тем и другим. И если уж касаться цифровой фильтрации, то кроме погрешности округления коэф. фильтра, есть еще вычислительная погрешность. Это особенно касается рекурсивных (IIR) фильтров.

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


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

Не совсем правильно поставлен вопрос, или скорее не совсем корректная постановка задачи.

Если отвечать в лоб на вопрос об округлении, то естественно данные стараются округлять в ближайшую сторону (а это не совсем то, что Вы видели в примерах:)).

Но дело не в округлении. А в том, что вот так вот не обоснованно выбирать процессор для решения поставленной задачи, это не есть правильный путь:). И почему кстати 16 бит? А может достаточно 8, или 4? Откуда взята эта цифра 16? Это Ваше любимое число или прихоть Вашего руководителя? Инженерная профессия не терпит цифр взятых наугад. Все должно быть по возможности строго математически обосновано. Или расчетами или моделированием. А еще лучше и тем и другим. И если уж касаться цифровой фильтрации, то кроме погрешности округления коэф. фильтра, есть еще вычислительная погрешность. Это особенно касается рекурсивных (IIR) фильтров.

 

Wow, wow, wow, с места в карьер... :biggrin:

Спасибо за ответ, но вопрос был поставлен конкретный. Почему 16 бит а не иначе - другой вопрос, и это заранее задано (не играет роли насколько оно правильно для конкретной задачи). Вопрос просто о конверсии 32/64-битных floating point данных в 16 бит fixed point с наименьшими неприяностями.

Ну а ежели вы хотите подноготную - нет проблен: делаю дипломный проэкт - разработан определенный алгоритм для аудио, построен, отсимулилрован в Матлабе. Теперь очередь имплементации. Имплементация задана на базе TMS320C5402 DSK, без вариантов. Т.е. 16 бит, fixed point процессор.

Я не описывал мои критерии выбора процессора, почему так а не иначе. Просто рпедположим платфрома заранее задана и все.

Честно говоря не понял зачем сразу бросаться в атаку на задающего конкретный вопрос не зная подноготной...

 

Кстати насчет "контроля" вычислительной погрешности - тоже интересно...

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


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

Wow, wow, wow, с места в карьер... :biggrin:

Спасибо за ответ, но вопрос был поставлен конкретный. Почему 16 бит а не иначе - другой вопрос, и это заранее задано (не играет роли насколько оно правильно для конкретной задачи). Вопрос просто о конверсии 32/64-битных floating point данных в 16 бит fixed point с наименьшими неприяностями.

Ну а ежели вы хотите подноготную - нет проблен: делаю дипломный проэкт - разработан определенный алгоритм для аудио, построен, отсимулилрован в Матлабе. Теперь очередь имплементации. Имплементация задана на базе TMS320C5402 DSK, без вариантов. Т.е. 16 бит, fixed point процессор.

Я не описывал мои критерии выбора процессора, почему так а не иначе. Просто рпедположим платфрома заранее задана и все.

Честно говоря не понял зачем сразу бросаться в атаку на задающего конкретный вопрос не зная подноготной...

 

Кстати насчет "контроля" вычислительной погрешности - тоже интересно...

 

Прошу прощения за ночную атаку, слегка погорячился, был не прав, признаю:). Что касается конкретно вопроса, то лучше всего конечно обратиться к литературным источникам, в частности к небезызвестному труда Рабинера и Гоулда. Эффекты квантования и конечной разрядности чисел они рассматривают достаточно подробно.

Если же говорить про конкретно Ваш случай, то наверно стоит обратить внимание еще и на тот факт, что даже при "правильном" округлении коэфф., но не зависимо друг от друга, фильтр может потерять устойчивость. В этом случае возможно придется вручную подбирать значения коэффициентов:).

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


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

Так в матлабе в FDA Tool эффекты квантования исследуются в лоб, посредством квантования и перерасчёта частотных характеристик. Во всяком случае всегда можно посмотреть, что получилось тыком.

Конечно, если наоборот нужно проанализировать какая должна быть разрядность для получения заданных характеристик - то задача будет совсем не тривиальна

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


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

Прошу прощения за ночную атаку, слегка погорячился, был не прав, признаю:). Что касается конкретно вопроса, то лучше всего конечно обратиться к литературным источникам, в частности к небезызвестному труда Рабинера и Гоулда. Эффекты квантования и конечной разрядности чисел они рассматривают достаточно подробно.

Если же говорить про конкретно Ваш случай, то наверно стоит обратить внимание еще и на тот факт, что даже при "правильном" округлении коэфф., но не зависимо друг от друга, фильтр может потерять устойчивость. В этом случае возможно придется вручную подбирать значения коэффициентов:).

 

Спасибо, понял.

В принципе я руководствуюсь свой настольной "библией" по DSP: A Course in Digital Signal Processing by Boaz Porat. Там этим вещам посвящен тоже большой раздел, подробно рассматриваются эффекты и предлагаются варианты как с ними бороться.

Мне было-бы просто интересно услышать как кто из конкретных дизайнеров это делает.

 

 

 

 

Так в матлабе в FDA Tool эффекты квантования исследуются в лоб, посредством квантования и перерасчёта частотных характеристик. Во всяком случае всегда можно посмотреть, что получилось тыком.

Конечно, если наоборот нужно проанализировать какая должна быть разрядность для получения заданных характеристик - то задача будет совсем не тривиальна

 

Спасибо, не знал.

никогда не пользовался FDAToolом еще, всегда фильтры делал текстово...

будем знать.. :a14:

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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