Jump to content

    

Recommended Posts

Добрый день всем.

 

Инструменты работы:

Циклон5Е, Квартус 13.0

 

Для реализации имеется некая формула, вернее набор последовательно вычисляемых формул, имеются операции умножения, деления, извлечение корня, и +,-,<>..

Аргументы при перемножении имеют довольно большие значения - до 200.000.000.

При делении делитель имеет довольно малое значение - порядка 1е-8.

Точности расчетов должны быть порядка 1е-8.

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

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

 

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

 

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

Share this post


Link to post
Share on other sites

"Аргументы при перемножении имеют довольно большие значения - до 200.000.000. "

А чему они равны до умножения ....?

 

Те если у меня после ацп данные 16 бит, потом операция скажем фильтрации 16 *16 бит - то они потом должны уже 2^32 - я в Вашей логике не ошибаюсь ?

Иначе Вам нужен при расчетах динамический диапазон 27 разрядов или 162 дБ. Космос ?

Сильно сомневаюсь что все выше написанное Вами правда, хотя .....

 

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

 

 

Share this post


Link to post
Share on other sites

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

 

Диапазон входных аргументов для операций как раз и указан в первом посте (1е-8 ... 200.000.000).

Share this post


Link to post
Share on other sites
Добрый день всем.

 

Для реализации имеется некая формула, вернее набор последовательно вычисляемых формул, имеются операции умножения, деления, извлечение корня, и +,-,<>..

Аргументы при перемножении имеют довольно большие значения - до 200.000.000.

При делении делитель имеет довольно малое значение - порядка 1е-8.

Точности расчетов должны быть порядка 1е-8.

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

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

как вариант можно запустить NIOS - и там сделать все вычисления с флоатом...

 

какая скорость должна обеспечиваться?

Share this post


Link to post
Share on other sites
как вариант можно запустить NIOS - и там сделать все вычисления с флоатом...

 

Ну тут это не вариант. Уж лучше ПЛИС поставить с Cortex-A (там NEON/VFP, а то и две штуки).

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

Share this post


Link to post
Share on other sites
Ну тут это не вариант. Уж лучше ПЛИС поставить с Cortex-A (там NEON/VFP, а то и две штуки).

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

что да, то да.

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

 

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

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

 

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

Share this post


Link to post
Share on other sites

Про точности я писал:

Точности расчетов должны быть порядка 1е-8.

 

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

 

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

 

Меня интересуют именно сторонние вычислительные модули с плав.точкой. Кто их использовал, где брали, как с ними обстоят дела....

Share this post


Link to post
Share on other sites
Меня интересуют именно сторонние вычислительные модули с плав.точкой. Кто их использовал, где брали, как с ними обстоят дела....

 

Я сам писал, с четко нужной мне разрядностью, и без излишеств IEEE. Экономия от альтеровских где то до 25-50% по площади, смотря в какую сторону оптимизировать и сколько тактов на операцию допускается. Там сложного то ничего нет - баррелевский сдвигатель, вычислитель экспоненты (тоже ускоренный, схема типа баррелевской, только как бы наоборот), сумматоры и умножители, все тривиальное. Деление и корень, если без них никак, тут уже чуток посложнее, через Ньютона-Рафсона. Но, в общем, тоже уровень "средней школы" HDL-проектирования, то есть + неделька к сроку.

Однако в виде отдельных IP их нету... Они просто в рамках проекта внутри него.

Share this post


Link to post
Share on other sites

как Вы реализовали алгоритм?

с перераспределением ресурсов (последовательно или частично паралельно) или делали по возможности с максимальной степенью паралеллизации?

Сколько было использовано IP core?

Вопросы к чему, что максимальное распаралеливание вычислений требует чаще всего много ресурсов, может Вам стоит сделать реализацию последовательно-паралельную или вообще последовательную, при этом использовав минимально-необходимое количество IP core. Естественно, тогда упадет скорость обработки...

Share this post


Link to post
Share on other sites

У меня используется по одному ядру на каждый тип операций (+,-,*,/,..).

Выполняется все последовательно-параллельно, т.е. однвременно выполняются только разнородные операции, например, одновременно провожу выполнение "*" и "+" и "-", и т.п.

Стараюсь ресурсов использовать по-минимуму.

Да, при таком подходе скорость обработки падает, но это все-таки не чисто последовательное вычисление, поэтому более-менее скорость устраивает.

 

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

 

Кто-нибудь вообще использовал сторонние модули float-вычислений? Очень нужна инфа по ним.

Share this post


Link to post
Share on other sites

немного не по теме, но вдруг на будущее пригодится: Altera Arria 10 содержит аппаратные floating point блоки. Т.е. в A10 теперь логика на плавучку расходоваться не будет.

Share this post


Link to post
Share on other sites
...

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

"Матлаб" пробовали? Разрядность целых чисел при переводе из дробных там осуществляется почти автоматически и точность вычислений можно будет оценить наглядно. К тому же умножители можно будет подобрать таким образом, чтобы повторно их использовать, если потребуется. На бумажке давно уже никто не считает.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this