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

Приветствую!

1 hour ago, jenya7 said:

Как мне такие вычисления перенести в VHDL?

Либо делать все  ручками -

.... делать (или брать) готовые  модули для real|float операций  и лепить из них dataflow  вычислений  

... переводить все в fixed point  и опят же ручками лепить  dataflow  вычислений  

Либо  использовать HLS - пишете на C/C++  и генерите рабочий data-flow на VHDL

Удачи! Rob.

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


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

17 minutes ago, jenya7 said:

нужно очень высокое быстродействие. поэтому решено всю математику перенести в FPGA.

Так а сколько раз в секунду должны выполняться вычисления из первого сообщения?

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


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

3 minutes ago, RobFPGA said:

Приветствую!

Либо делать все  ручками -

.... делать (или брать) готовые  модули для real|float операций  и лепить из них dataflow  вычислений  

... переводить все в fixed point  и опят же ручками лепить  dataflow  вычислений  

Либо  использовать HLS - пишете на C/C++  и генерите рабочий data-flow на VHDL

Удачи! Rob.

а где можно познакомиться с этой темой?

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


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

можно попробовать типа новый стандарт плавающей запятой

https://habr.com/ru/post/462385/

https://posithub.org/

 

здесь вроде есть ссылки на реализации

https://posithub.org/docs/PDS/PositEffortsSurvey.html

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


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

1 minute ago, alexadmin said:

Так а сколько раз в секунду должны выполняться вычисления из первого сообщения?

частота в секунду не высокая. но само вычисление должно быть очень быстрым.

2 minutes ago, Maverick_ said:

можно попробовать типа новый стандарт плавающей запятой

https://habr.com/ru/post/462385/

https://posithub.org/

ну это теория. а практическое решение?

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


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

Just now, jenya7 said:

частота в секунду не высокая. но само вычисление должно быть очень быстрым.

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

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


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

Приветствую!

4 minutes ago, jenya7 said:

а где можно познакомиться с этой темой?

С какой темой?  Как ручками dataflow рисовать? :biggrin:

А  про HLS  смотреть  на Xilinx или на Intel в зависимости от вашей FPGA.

Удачи! Rob.  

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


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

 
 
 
 
4 minutes ago, jenya7 said:

ну это теория. а практическое решение?

я обновил свой пост выше...

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


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

10 minutes ago, alexadmin said:

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

нужно уложиться в 3 ms

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


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

37 minutes ago, andrew_b said:

Там есть специальные типы для этого. Вектор (N downto -M) содержит целую (N downto 0) и дробную части (-1 downto -M). Помнится, Xilinx, что-ли, не поддерживал векторы с отрицательными границами. Учитывая, в каком состоянии у них в целом поддержка VHDL'2008, не удивлюсь, если всё так и осталось.

Патчноты для Vivado 2019 крест на пузе ставят, что ввели полную поддержку VHDL-2008 (11 лет опоздания всего :wink:). Хочется верить, что в последней версии действительно всё пофиксили и работает.

43 minutes ago, jenya7 said:

я потеряю точность. на что мне умножить 0.0000001234

Тут уж Вам решать. Или сделать точно, но не в потоке (быстродействие понятие условное) и я уверен что есть такие паузы, в которых можно обчислить процессором все значения.

Или вы подходите не с той стороны. У меня была похожая проблема, когда делались преобразования значений с ADC в цифру в десятичном виде и потом нужно было делать некие вычисления и отправить на комп. В итоге оказалось, если выкинуть преобразование в десятичные числа - всё имеет намного компактнее вид и быстродействие, только в двоичном формате.

Опять же, если нужно работать с числами +/-2.147кк в целой части и +/-2.328е-10 в десятичной, Вам достаточно будет использовать целое интегральное int для целых значений и целое интегральное int для значений после запятой (итого 64 бита). Выглядит вполне реально. Ну или найдите слабые места и оптимизируйте.

4 minutes ago, jenya7 said:

нужно уложиться в 3 ms 

А данные как приходят? Прямо все сразу? неужели пока не дошёл остаток данных нельзя провести никакие начальные вычисления? За 3 ms можно не только вычисления сделать, но и крестики-нолики поиграть, если сделать предобработку потоковых данных.

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


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

7 minutes ago, jenya7 said:

нужно уложиться в 3 ms

пару десятков умножений floatов (doublы вам там точно не нужны) даже 8ми битный АВР успеет сделать за 3мс.

а уж если в целочисленную арифметику данные вычисления перевести...

 

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


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

3 minutes ago, _pv said:

пару десятков умножений floatов (doublы вам там точно не нужны) даже 8ми битный АВР успеет сделать за 3мс.

а уж если в целочисленную арифметику данные вычисления перевести...

 

там еще есть вычисления. это только часть. но в принципе может вы и правы.

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


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

56 minutes ago, jenya7 said:

я потеряю точность. на что мне умножить 0.0000001234.

если нужна точность до 0.0000001234, то нужно умножать на степень 2 так, чтобы результат был больше 1

0.0000001234 * 2^23 = 1.035...

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

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


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

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

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

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

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

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

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

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

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

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