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

Инструменты работы:
Циклон5Е, Квартус 13.0

Для реализации имеется некая формула, вернее набор последовательно вычисляемых формул, имеются операции умножения, деления, извлечение корня, и +,-,<>..
Аргументы при перемножении имеют довольно большие значения - до 200.000.000.
При делении делитель имеет довольно малое значение - порядка 1е-8.
Точности расчетов должны быть порядка 1е-8.
Исходя из таких аргументов я принял решение реализации на плав.точке, при этом приходится использовать ядра Альтеры для проведения всех необходимых операций вычислений.
Так вот, собственно, проблема в том, что эти ядра в кристалле занимают ОЧ.много ресурсов, и уже для расширения проекта приходится экономить на регистрах и памяти, и то места может и не хватить на будущее.

Имеются ли в природе модули, выполняющие мат.операции с плав.точкой, занимающие меньше места чем Альтеровские? Если да, то кто ими пользовался, что можете сказать о них?

Вариант перехода на фикс.точку я рассматривал, но при таком диапазоне аргументов и результатах вычислений у меня как-то не получилось это вытянуть.
litv
"Аргументы при перемножении имеют довольно большие значения - до 200.000.000. "
А чему они равны до умножения ....?

Те если у меня после ацп данные 16 бит, потом операция скажем фильтрации 16 *16 бит - то они потом должны уже 2^32 - я в Вашей логике не ошибаюсь ?
Иначе Вам нужен при расчетах динамический диапазон 27 разрядов или 162 дБ. Космос ?
Сильно сомневаюсь что все выше написанное Вами правда, хотя .....

Операции с фикс. точкой 2^27 - все реально. Богатые на динамический дипазон заказчики должны ставить дорогие кристаллы.

billidean
Эти расчеты, точнее аргументы вычислений, никак не связаны с АЦП.

Диапазон входных аргументов для операций как раз и указан в первом посте (1е-8 ... 200.000.000).
Maverick
Цитата(billidean @ Aug 15 2014, 09:28) *
Добрый день всем.

Для реализации имеется некая формула, вернее набор последовательно вычисляемых формул, имеются операции умножения, деления, извлечение корня, и +,-,<>..
Аргументы при перемножении имеют довольно большие значения - до 200.000.000.
При делении делитель имеет довольно малое значение - порядка 1е-8.
Точности расчетов должны быть порядка 1е-8.
Исходя из таких аргументов я принял решение реализации на плав.точке, при этом приходится использовать ядра Альтеры для проведения всех необходимых операций вычислений.

лучше попробуйте уточнить вопрос с точностью вычислений и алгоритмом вычислений с целью перехода целочисленное вычисления + переиспользование ресурсов
как вариант можно запустить NIOS - и там сделать все вычисления с флоатом...

какая скорость должна обеспечиваться?
SM
Цитата(Maverick @ Aug 15 2014, 12:48) *
как вариант можно запустить NIOS - и там сделать все вычисления с флоатом...


Ну тут это не вариант. Уж лучше ПЛИС поставить с Cortex-A (там NEON/VFP, а то и две штуки).
А плавучие инструкции NIOS + сам NIOS + софт для него будут однозначно больше, чем специализированный вычислитель, основанный на таком же float-блоке, что и в NIOS.
Maverick
Цитата(SM @ Aug 15 2014, 12:01) *
Ну тут это не вариант. Уж лучше ПЛИС поставить с Cortex-A (там NEON/VFP, а то и две штуки).
А плавучие инструкции NIOS + сам NIOS + софт для него будут однозначно больше, чем специализированный вычислитель, основанный на таком же float-блоке, что и в NIOS.

что да, то да.
НО billidean ничего не сказал про плис и я подумал, что плис без встроенного процессора и вариант о дополнительной/замене плис на более емкую не рассматривается, т.к. ТС спрашивает

Цитата
Исходя из таких аргументов я принял решение реализации на плав.точке, при этом приходится использовать ядра Альтеры для проведения всех необходимых операций вычислений.
Так вот, собственно, проблема в том, что эти ядра в кристалле занимают ОЧ.много ресурсов, и уже для расширения проекта приходится экономить на регистрах и памяти, и то места может и не хватить на будущее.

Имеются ли в природе модули, выполняющие мат.операции с плав.точкой, занимающие меньше места чем Альтеровские? Если да, то кто ими пользовался, что можете сказать о них?
SM
Ну мало ли... Так, в порядке информации. Вдруг кому пригодится.
billidean
Про точности я писал:
Цитата
Точности расчетов должны быть порядка 1е-8.


ПЛИС - без АРМа.

Другая ПЛИС - этот вариант не рассматривается, нужно именно в этой.

Меня интересуют именно сторонние вычислительные модули с плав.точкой. Кто их использовал, где брали, как с ними обстоят дела....
SM
Цитата(billidean @ Aug 15 2014, 13:24) *
Меня интересуют именно сторонние вычислительные модули с плав.точкой. Кто их использовал, где брали, как с ними обстоят дела....


Я сам писал, с четко нужной мне разрядностью, и без излишеств IEEE. Экономия от альтеровских где то до 25-50% по площади, смотря в какую сторону оптимизировать и сколько тактов на операцию допускается. Там сложного то ничего нет - баррелевский сдвигатель, вычислитель экспоненты (тоже ускоренный, схема типа баррелевской, только как бы наоборот), сумматоры и умножители, все тривиальное. Деление и корень, если без них никак, тут уже чуток посложнее, через Ньютона-Рафсона. Но, в общем, тоже уровень "средней школы" HDL-проектирования, то есть + неделька к сроку.
Однако в виде отдельных IP их нету... Они просто в рамках проекта внутри него.
Maverick
Цитата(billidean @ Aug 15 2014, 12:24) *

как Вы реализовали алгоритм?
с перераспределением ресурсов (последовательно или частично паралельно) или делали по возможности с максимальной степенью паралеллизации?
Сколько было использовано IP core?
Вопросы к чему, что максимальное распаралеливание вычислений требует чаще всего много ресурсов, может Вам стоит сделать реализацию последовательно-паралельную или вообще последовательную, при этом использовав минимально-необходимое количество IP core. Естественно, тогда упадет скорость обработки...
billidean
У меня используется по одному ядру на каждый тип операций (+,-,*,/,..).
Выполняется все последовательно-параллельно, т.е. однвременно выполняются только разнородные операции, например, одновременно провожу выполнение "*" и "+" и "-", и т.п.
Стараюсь ресурсов использовать по-минимуму.
Да, при таком подходе скорость обработки падает, но это все-таки не чисто последовательное вычисление, поэтому более-менее скорость устраивает.

Повторюсь, проблема в нехватке ресурсов для расширения проекта. Поэтому хочется уйти от этих "полновесных" Альтеровских ядер.

Кто-нибудь вообще использовал сторонние модули float-вычислений? Очень нужна инфа по ним.
goodsoul
немного не по теме, но вдруг на будущее пригодится: Altera Arria 10 содержит аппаратные floating point блоки. Т.е. в A10 теперь логика на плавучку расходоваться не будет.
billidean
Ура, конечно же, но мне это не поможет.
Enthusiast
Цитата(billidean @ Aug 15 2014, 10:28) *
...
Вариант перехода на фикс.точку я рассматривал, но при таком диапазоне аргументов и результатах вычислений у меня как-то не получилось это вытянуть.

"Матлаб" пробовали? Разрядность целых чисел при переводе из дробных там осуществляется почти автоматически и точность вычислений можно будет оценить наглядно. К тому же умножители можно будет подобрать таким образом, чтобы повторно их использовать, если потребуется. На бумажке давно уже никто не считает.
billidean
Цитата(Postoroniy_V @ Aug 28 2014, 18:14) *

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