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