jenya7 0 November 20, 2019 Posted November 20, 2019 · Report post а может есть какой FPGA со встроенным FPU? Quote Share this post Link to post Share on other sites More sharing options...
RobFPGA 86 November 20, 2019 Posted November 20, 2019 · Report post Приветствую! 1 hour ago, jenya7 said: Как мне такие вычисления перенести в VHDL? Либо делать все ручками - .... делать (или брать) готовые модули для real|float операций и лепить из них dataflow вычислений ... переводить все в fixed point и опят же ручками лепить dataflow вычислений Либо использовать HLS - пишете на C/C++ и генерите рабочий data-flow на VHDL Удачи! Rob. Quote Share this post Link to post Share on other sites More sharing options...
alexadmin 2 November 20, 2019 Posted November 20, 2019 · Report post 17 minutes ago, jenya7 said: нужно очень высокое быстродействие. поэтому решено всю математику перенести в FPGA. Так а сколько раз в секунду должны выполняться вычисления из первого сообщения? Quote Share this post Link to post Share on other sites More sharing options...
jenya7 0 November 20, 2019 Posted November 20, 2019 · Report post 3 minutes ago, RobFPGA said: Приветствую! Либо делать все ручками - .... делать (или брать) готовые модули для real|float операций и лепить из них dataflow вычислений ... переводить все в fixed point и опят же ручками лепить dataflow вычислений Либо использовать HLS - пишете на C/C++ и генерите рабочий data-flow на VHDL Удачи! Rob. а где можно познакомиться с этой темой? Quote Share this post Link to post Share on other sites More sharing options...
Maverick_ 17 November 20, 2019 Posted November 20, 2019 · Report post можно попробовать типа новый стандарт плавающей запятой https://habr.com/ru/post/462385/ https://posithub.org/ здесь вроде есть ссылки на реализации https://posithub.org/docs/PDS/PositEffortsSurvey.html Quote Share this post Link to post Share on other sites More sharing options...
jenya7 0 November 20, 2019 Posted November 20, 2019 · Report post 1 minute ago, alexadmin said: Так а сколько раз в секунду должны выполняться вычисления из первого сообщения? частота в секунду не высокая. но само вычисление должно быть очень быстрым. 2 minutes ago, Maverick_ said: можно попробовать типа новый стандарт плавающей запятой https://habr.com/ru/post/462385/ https://posithub.org/ ну это теория. а практическое решение? Quote Share this post Link to post Share on other sites More sharing options...
alexadmin 2 November 20, 2019 Posted November 20, 2019 · Report post Just now, jenya7 said: частота в секунду не высокая. но само вычисление должно быть очень быстрым. Так сколько, скажите, не таите. От этого принципиально зависит сложность задачи, требуемый объем ресурсов и пути решения. Quote Share this post Link to post Share on other sites More sharing options...
RobFPGA 86 November 20, 2019 Posted November 20, 2019 · Report post Приветствую! 4 minutes ago, jenya7 said: а где можно познакомиться с этой темой? С какой темой? Как ручками dataflow рисовать? А про HLS смотреть на Xilinx или на Intel в зависимости от вашей FPGA. Удачи! Rob. Quote Share this post Link to post Share on other sites More sharing options...
Maverick_ 17 November 20, 2019 Posted November 20, 2019 · Report post 4 minutes ago, jenya7 said: ну это теория. а практическое решение? я обновил свой пост выше... Quote Share this post Link to post Share on other sites More sharing options...
jenya7 0 November 20, 2019 Posted November 20, 2019 · Report post 10 minutes ago, alexadmin said: Так сколько, скажите, не таите. От этого принципиально зависит сложность задачи, требуемый объем ресурсов и пути решения. нужно уложиться в 3 ms Quote Share this post Link to post Share on other sites More sharing options...
Nick_K 0 November 20, 2019 Posted November 20, 2019 · Report post 37 minutes ago, andrew_b said: Там есть специальные типы для этого. Вектор (N downto -M) содержит целую (N downto 0) и дробную части (-1 downto -M). Помнится, Xilinx, что-ли, не поддерживал векторы с отрицательными границами. Учитывая, в каком состоянии у них в целом поддержка VHDL'2008, не удивлюсь, если всё так и осталось. Патчноты для Vivado 2019 крест на пузе ставят, что ввели полную поддержку VHDL-2008 (11 лет опоздания всего ). Хочется верить, что в последней версии действительно всё пофиксили и работает. 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 можно не только вычисления сделать, но и крестики-нолики поиграть, если сделать предобработку потоковых данных. Quote Share this post Link to post Share on other sites More sharing options...
_pv 105 November 20, 2019 Posted November 20, 2019 · Report post 7 minutes ago, jenya7 said: нужно уложиться в 3 ms пару десятков умножений floatов (doublы вам там точно не нужны) даже 8ми битный АВР успеет сделать за 3мс. а уж если в целочисленную арифметику данные вычисления перевести... Quote Share this post Link to post Share on other sites More sharing options...
jenya7 0 November 20, 2019 Posted November 20, 2019 · Report post 3 minutes ago, _pv said: пару десятков умножений floatов (doublы вам там точно не нужны) даже 8ми битный АВР успеет сделать за 3мс. а уж если в целочисленную арифметику данные вычисления перевести... там еще есть вычисления. это только часть. но в принципе может вы и правы. Quote Share this post Link to post Share on other sites More sharing options...
quato_a 3 November 20, 2019 Posted November 20, 2019 · Report post 56 minutes ago, jenya7 said: я потеряю точность. на что мне умножить 0.0000001234. если нужна точность до 0.0000001234, то нужно умножать на степень 2 так, чтобы результат был больше 1 0.0000001234 * 2^23 = 1.035... значит нужно выделять минимум 23 бит после запятой для фиксированной точки. Quote Share this post Link to post Share on other sites More sharing options...
jenya7 0 November 20, 2019 Posted November 20, 2019 · Report post спасибо за информацию. думал что все гораздо проще. Quote Share this post Link to post Share on other sites More sharing options...