реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Формат представления чисел, в алгоритмах ЦОС
Anton2
сообщение Aug 18 2014, 05:35
Сообщение #1





Группа: Новичок
Сообщений: 9
Регистрация: 13-01-14
Пользователь №: 80 010



Добрый день.

Нужен совет по следующей проблеме.
Допустим необходимо реализвать на ПЛИС некоторый алгоритм ЦОС, который состоит в последовательном выполнении простых операций (умножение, дифференцирование, фильтрация и т.д).
На входе - целые числа (скажем 18 разрядов). В процессе математических вычислений разрядность результата растет очень быстро. Соответственно встает вопрос об округлении промежуточных результатов.
То есть или использовать фиксированную точку или числа с плавающей точкой.
Если использовать Xilinx IP cores, то фильтры на вход принимают числа с фиксированной точкой.
Все остальные операции можно производить в формате с фиксированной точкой. Таким образом максимальная тоность вычислений будет в том случае, если в определенных местах переводить числа fixed_point -> floating_point и обратно?
Собственно основной вопрос вот в чем. Можно ли найти хороший вариант по вычислительной_сложности/точности без построения моделей в Matlab (при условии что алгоритм не сложный, т.е. посчитать "на бумажке")?
Что самое интересное, в интернете крайне мало информации по этой теме. Быть может кто встречал книжку, где описаны расчеты точности при таких вычислениях.
Go to the top of the page
 
+Quote Post
bve
сообщение Aug 18 2014, 06:37
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 316
Регистрация: 20-02-05
Из: Ленинградская обл.
Пользователь №: 2 765



Плавающая точка даёт расширение динамического диапазона, а вот точность определяется
длиной мантиссы, которая, при одинаковой с целочисленным представлением длине слова,
имеет меньше разрядов, чем целое. А про точность:
Представьте себе, что Ваши данные имеют общий множитель 2**(-n), где n - разрядность
числа. Т.е. Ваши числа лежат в диапазоне ]-1;1[. Множители фильтров можно рассматривать
аналогично. Поэтому, умножение двух чисел, меньших единицы, в результате даёт число,
также меньшее единицы. Следовательно, разрядами, меньшими чем меньшие во входном сигнале, можно пренебречь и отбросить. Хуже со сложением - но в этом случае рост разрядности равен двоичному логарифму от количества сложений, т.е 2 сложения <=> 1 разряд, 4 сложения <=> 2 разряда и т.д.. Мысленные множители можно учесть на выходе
алгоритма ( или вообще не учитывать ). Так что варианты нарисовать можно!
Go to the top of the page
 
+Quote Post
Maverick
сообщение Aug 18 2014, 06:52
Сообщение #3


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Цитата(Anton2 @ Aug 18 2014, 08:35) *
Добрый день.
На входе - целые числа (скажем 18 разрядов). В процессе математических вычислений разрядность результата растет очень быстро. Соответственно встает вопрос об округлении промежуточных результатов.

максимальная разрядность какая, получается после вычислений?


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
Anton2
сообщение Aug 18 2014, 07:08
Сообщение #4





Группа: Новичок
Сообщений: 9
Регистрация: 13-01-14
Пользователь №: 80 010



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


В том и дело, что максимальная разрядность на входе фильтра - 48. Опишу такую ситуацию. Например, на первом шаге умножаем два 18-разрядных числа, произведение 36 бит. Далее фильтруем (коэффициенты 16 бит) и уже приходится округлять до 48 бит (чтобы подать на вход другого фильтра).
Go to the top of the page
 
+Quote Post
des00
сообщение Aug 18 2014, 08:04
Сообщение #5


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



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

смеситель с НЧ фильтром ?


--------------------
Go to the top of the page
 
+Quote Post
Anton2
сообщение Aug 18 2014, 09:36
Сообщение #6





Группа: Новичок
Сообщений: 9
Регистрация: 13-01-14
Пользователь №: 80 010



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


Верно) Просто интересен подход к такому роду задач.
К примеру, если представить такую схему, в которой идут подряд несколько умножителей + задана некоторая требуемая точность вычисления результата.
Как выбрать разрядности, чтобы наименьшим образом искажался результат в процессе вычислений.
bve писал выше по теме. То есть если на входе я имею целые числа (или числа с фиксированной точкой), то могу выбрать некоторый формат, скажем signed_fixed_point_N_M, при этом если нормировать промежуточные результаты и отбрасывать младшие биты произведений я не уйду далеко от точности заданного формата?
Go to the top of the page
 
+Quote Post
des00
сообщение Aug 18 2014, 11:09
Сообщение #7


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(Anton2 @ Aug 18 2014, 16:36) *
Верно) Просто интересен подход к такому роду задач.

Если связные дела, считайте по эффективной разрядности, с учетом полос фильтров и их характеристик.


--------------------
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 16th July 2025 - 19:20
Рейтинг@Mail.ru


Страница сгенерированна за 0.01409 секунд с 7
ELECTRONIX ©2004-2016