Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Формат представления чисел
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Anton2
Добрый день.

Нужен совет по следующей проблеме.
Допустим необходимо реализвать на ПЛИС некоторый алгоритм ЦОС, который состоит в последовательном выполнении простых операций (умножение, дифференцирование, фильтрация и т.д).
На входе - целые числа (скажем 18 разрядов). В процессе математических вычислений разрядность результата растет очень быстро. Соответственно встает вопрос об округлении промежуточных результатов.
То есть или использовать фиксированную точку или числа с плавающей точкой.
Если использовать Xilinx IP cores, то фильтры на вход принимают числа с фиксированной точкой.
Все остальные операции можно производить в формате с фиксированной точкой. Таким образом максимальная тоность вычислений будет в том случае, если в определенных местах переводить числа fixed_point -> floating_point и обратно?
Собственно основной вопрос вот в чем. Можно ли найти хороший вариант по вычислительной_сложности/точности без построения моделей в Matlab (при условии что алгоритм не сложный, т.е. посчитать "на бумажке")?
Что самое интересное, в интернете крайне мало информации по этой теме. Быть может кто встречал книжку, где описаны расчеты точности при таких вычислениях.
bve
Плавающая точка даёт расширение динамического диапазона, а вот точность определяется
длиной мантиссы, которая, при одинаковой с целочисленным представлением длине слова,
имеет меньше разрядов, чем целое. А про точность:
Представьте себе, что Ваши данные имеют общий множитель 2**(-n), где n - разрядность
числа. Т.е. Ваши числа лежат в диапазоне ]-1;1[. Множители фильтров можно рассматривать
аналогично. Поэтому, умножение двух чисел, меньших единицы, в результате даёт число,
также меньшее единицы. Следовательно, разрядами, меньшими чем меньшие во входном сигнале, можно пренебречь и отбросить. Хуже со сложением - но в этом случае рост разрядности равен двоичному логарифму от количества сложений, т.е 2 сложения <=> 1 разряд, 4 сложения <=> 2 разряда и т.д.. Мысленные множители можно учесть на выходе
алгоритма ( или вообще не учитывать ). Так что варианты нарисовать можно!
Maverick
Цитата(Anton2 @ Aug 18 2014, 08:35) *
Добрый день.
На входе - целые числа (скажем 18 разрядов). В процессе математических вычислений разрядность результата растет очень быстро. Соответственно встает вопрос об округлении промежуточных результатов.

максимальная разрядность какая, получается после вычислений?
Anton2
Цитата(Maverick @ Aug 18 2014, 10:52) *
максимальная разрядность какая, получается после вычислений?


В том и дело, что максимальная разрядность на входе фильтра - 48. Опишу такую ситуацию. Например, на первом шаге умножаем два 18-разрядных числа, произведение 36 бит. Далее фильтруем (коэффициенты 16 бит) и уже приходится округлять до 48 бит (чтобы подать на вход другого фильтра).
des00
Цитата(Anton2 @ Aug 18 2014, 14:08) *
В том и дело, что максимальная разрядность на входе фильтра - 48. Опишу такую ситуацию. Например, на первом шаге умножаем два 18-разрядных числа, произведение 36 бит. Далее фильтруем (коэффициенты 16 бит) и уже приходится округлять до 48 бит (чтобы подать на вход другого фильтра).

смеситель с НЧ фильтром ?
Anton2
Цитата(des00 @ Aug 18 2014, 12:04) *
смеситель с НЧ фильтром ?


Верно) Просто интересен подход к такому роду задач.
К примеру, если представить такую схему, в которой идут подряд несколько умножителей + задана некоторая требуемая точность вычисления результата.
Как выбрать разрядности, чтобы наименьшим образом искажался результат в процессе вычислений.
bve писал выше по теме. То есть если на входе я имею целые числа (или числа с фиксированной точкой), то могу выбрать некоторый формат, скажем signed_fixed_point_N_M, при этом если нормировать промежуточные результаты и отбрасывать младшие биты произведений я не уйду далеко от точности заданного формата?
des00
Цитата(Anton2 @ Aug 18 2014, 16:36) *
Верно) Просто интересен подход к такому роду задач.

Если связные дела, считайте по эффективной разрядности, с учетом полос фильтров и их характеристик.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.