Skryppy 1 November 20, 2019 Posted November 20, 2019 · Report post Я как-то работал с floating-point в матлабе system generator. В железе данная модель работала хорошо. По ресурсам уже не помню. Там переход делался с помощью блока convert. Quote Share this post Link to post Share on other sites More sharing options...
Самурай 13 November 20, 2019 Posted November 20, 2019 · Report post 12 минут назад, quato_a сказал: если нужна точность до 0.0000001234, то нужно умножать на степень 2 так, чтобы результат был больше 1 0.0000001234 * 2^23 = 1.035... значит нужно выделять минимум 23 бит после запятой для фиксированной точки. Я бы сказал, что точность до 0.0000001234 подразумевает ошибку как минимум на +-0.5 в младшей цифре, т.е. разрядов 10...11 надо бы еще накинуть:) 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 4 minutes ago, Skryppy said: Я как-то работал с floating-point в матлабе system generator. В железе данная модель работала хорошо. По ресурсам уже не помню. Там переход делался с помощью блока convert. чтоб данная модель работала в железе вы генерировали ее в VHDL? Quote Share this post Link to post Share on other sites More sharing options...
Skryppy 1 November 20, 2019 Posted November 20, 2019 · Report post Да, я же говорю в железе нормально работала. В чипскопе данные смотрели. Но после извлечения корня стоит второй конвертор, который переводит в fixed-point 32 бита. 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 11 minutes ago, Самурай said: Я бы сказал, что точность до 0.0000001234 подразумевает ошибку как минимум на +-0.5 в младшей цифре, т.е. разрядов 10...11 надо бы еще накинуть:) тогда уточню для работы со значением с размахом +/-700 и точностью 0.0000001234 потребуется 23 бита дробной части после запятой, 10 бит целой части (для обеспечения +/-700) и 1 бит знак fix34_23 Quote Share this post Link to post Share on other sites More sharing options...
Skryppy 1 November 20, 2019 Posted November 20, 2019 · Report post В принципе, для ваших чисел и fixed point 32 бита хватает. Вот набросал по-быстрому модель. Поиграйтесь с разрядностью, выберите нужную вам по точности. floating_point.rar Quote Share this post Link to post Share on other sites More sharing options...
RobFPGA 58 November 20, 2019 Posted November 20, 2019 · Report post Приветствую! Модель в Matlab тоже один из вариантов ручного пути вкупе с неким сервисом что позволяет легче оптимизировать вычисления по ресурсам. HLS же удобен тем что через 5 мин можно получить работающую железку - но естественно за счет "жирности" в реализации. Ради прикола - загнал ваш код в Vivado HLS. Без всякой оптимизации получил время вычисления ~350 тактов на ~140 MHz. при 110 штуках DSP Можно в продакшен пихать. Удачи! Rob. Quote Share this post Link to post Share on other sites More sharing options...
Самурай 13 November 20, 2019 Posted November 20, 2019 · Report post 21 минуту назад, quato_a сказал: тогда уточню для работы со значением с размахом +/-700 и точностью 0.0000001234 потребуется 23 бита дробной части после запятой, 10 бит целой части (для обеспечения +/-700) и 1 бит знак fix34_23 Подозреваю терминологическую нестыковку:) Как я понял вопрос ТС, его интересовало, сколько нужно двоичных разрядов на точное представление константы 0.0000001234. Не хватит для этого 23-х бит, минимум 31 нужно в данном конкретном случае, а в общем случае для погрешности +-0.5e-10 и все 34 бита нужно. А вот если нужна именно погрешность +-1е-7 то да, 23 бит хватит, но погрешность с точностью 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 4 minutes ago, Самурай said: Подозреваю терминологическую нестыковку:) Как я понял вопрос ТС, его интересовало, сколько нужно двоичных разрядов на точное представление константы 0.0000001234. Не хватит для этого 23-х бит, минимум 31 нужно в данном конкретном случае, а в общем случае для погрешности +-0.5e-10 и все 34 бита нужно. А вот если нужна именно погрешность +-1е-7 то да, 23 бит хватит, но погрешность с точностью 3-х знаков после запятой обычно не задают:) а ну да) Quote Share this post Link to post Share on other sites More sharing options...
jenya7 0 November 20, 2019 Posted November 20, 2019 (edited) · Report post 48 minutes ago, Skryppy said: В принципе, для ваших чисел и fixed point 32 бита хватает. Вот набросал по-быстрому модель. Поиграйтесь с разрядностью, выберите нужную вам по точности. floating_point.rar спасибо. это мне надо привлечь человека который матлабом занимается. не уверен что он меня не пошлет куда подальше :) Edited November 20, 2019 by jenya7 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 44 minutes ago, RobFPGA said: Ради прикола - загнал ваш код в Vivado HLS. Без всякой оптимизации получил время вычисления ~350 тактов на ~140 MHz. при 110 штуках DSP Можно в продакшен пихать. Чуть более 35 микросекунд. В ограниченные рамки ТС вписывается Но как я и говорил, Виртекс бы для 110ти DSP, да пожирнее). UPD А это для double или для float'ов? Quote Share this post Link to post Share on other sites More sharing options...
RobFPGA 58 November 20, 2019 Posted November 20, 2019 · Report post Приветствую! Just now, Nick_K said: ... Но как я и говорил, Виртекс бы для 110ти DSP, да пожирнее) Так это без оптимизации - если покрутить прагмами чтобы например использовать по минимум float|double корки операций то и меньше по объему получится. Удачи! Rob. 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 58 minutes ago, RobFPGA said: Приветствую! Модель в Matlab тоже один из вариантов ручного пути вкупе с неким сервисом что позволяет легче оптимизировать вычисления по ресурсам. HLS же удобен тем что через 5 мин можно получить работающую железку - но естественно за счет "жирности" в реализации. Ради прикола - загнал ваш код в Vivado HLS. Без всякой оптимизации получил время вычисления ~350 тактов на ~140 MHz. при 110 штуках DSP Можно в продакшен пихать. Удачи! Rob. а в квартусе куда его загонять? Quote Share this post Link to post Share on other sites More sharing options...
RobFPGA 58 November 20, 2019 Posted November 20, 2019 · Report post Приветствую! Just now, jenya7 said: а в квартусе куда его загонять? Гусары молчать! У Intel вроде есть свое HLS но я с ним толком еще не работал. Удачи! Rob. Quote Share this post Link to post Share on other sites More sharing options...