Jump to content

    
Sign in to follow this  
jenya7

Математика в VHDL

Recommended Posts

Я как-то работал с floating-point в матлабе system generator. В железе данная модель работала хорошо. По ресурсам уже не помню. Там переход делался с помощью блока convert. 

 

DSC_0077.JPG

Share this post


Link to post
Share on other sites
12 минут назад, quato_a сказал:

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

0.0000001234 * 2^23 = 1.035...

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

Я бы сказал, что точность до 0.0000001234 подразумевает ошибку как минимум на +-0.5 в младшей цифре, т.е. разрядов 10...11 надо бы еще накинуть:)

Share this post


Link to post
Share on other sites
4 minutes ago, Skryppy said:

Я как-то работал с floating-point в матлабе system generator. В железе данная модель работала хорошо. По ресурсам уже не помню. Там переход делался с помощью блока convert. 

 

DSC_0077.JPG

чтоб данная модель работала в железе вы генерировали ее в VHDL?

Share this post


Link to post
Share on other sites

Да, я же говорю в железе нормально работала. В чипскопе данные смотрели. Но после извлечения корня стоит второй конвертор, который переводит в fixed-point 32 бита.

 

Share this post


Link to post
Share on other sites
11 minutes ago, Самурай said:

Я бы сказал, что точность до 0.0000001234 подразумевает ошибку как минимум на +-0.5 в младшей цифре, т.е. разрядов 10...11 надо бы еще накинуть:)

тогда уточню

для работы со значением с размахом +/-700 и точностью 0.0000001234 потребуется 23 бита дробной части после запятой, 10 бит целой части (для обеспечения +/-700) и 1 бит знак

fix34_23

Share this post


Link to post
Share on other sites

В принципе, для ваших чисел и fixed point 32 бита хватает. Вот набросал по-быстрому модель. Поиграйтесь с разрядностью, выберите нужную вам по точности.

DSC_0078.JPG

floating_point.rar

Share this post


Link to post
Share on other sites

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

Модель в Matlab  тоже один из вариантов  ручного пути вкупе с неким сервисом что позволяет легче оптимизировать вычисления по ресурсам. 

 HLS  же удобен тем что через 5 мин можно получить работающую железку - но естественно за счет "жирности" в реализации.

Ради прикола - загнал ваш код в Vivado HLS. Без всякой оптимизации получил время вычисления  ~350 тактов на ~140 MHz.  при 110 штуках DSP :unknw:  Можно в продакшен пихать. :biggrin:

Удачи! Rob.

Share this post


Link to post
Share on other sites
21 минуту назад, quato_a сказал:

тогда уточню

для работы со значением с размахом +/-700 и точностью 0.0000001234 потребуется 23 бита дробной части после запятой, 10 бит целой части (для обеспечения +/-700) и 1 бит знак

fix34_23

Подозреваю терминологическую нестыковку:) Как я понял вопрос ТС, его интересовало, сколько нужно двоичных разрядов на точное представление константы 0.0000001234. Не хватит для этого 23-х бит, минимум 31 нужно в данном конкретном случае, а в общем случае для погрешности +-0.5e-10 и все 34 бита нужно. А вот если нужна именно погрешность +-1е-7 то да, 23 бит хватит, но погрешность с точностью 3-х знаков после запятой обычно не задают:)

Share this post


Link to post
Share on other sites
4 minutes ago, Самурай said:

Подозреваю терминологическую нестыковку:) Как я понял вопрос ТС, его интересовало, сколько нужно двоичных разрядов на точное представление константы 0.0000001234. Не хватит для этого 23-х бит, минимум 31 нужно в данном конкретном случае, а в общем случае для погрешности +-0.5e-10 и все 34 бита нужно. А вот если нужна именно погрешность +-1е-7 то да, 23 бит хватит, но погрешность с точностью 3-х знаков после запятой обычно не задают:)

а ну да)

Share this post


Link to post
Share on other sites
48 minutes ago, Skryppy said:

В принципе, для ваших чисел и fixed point 32 бита хватает. Вот набросал по-быстрому модель. Поиграйтесь с разрядностью, выберите нужную вам по точности.

 

floating_point.rar

спасибо. это мне надо привлечь человека который матлабом занимается. не уверен что он меня не пошлет куда подальше :)

Edited by jenya7

Share this post


Link to post
Share on other sites
44 minutes ago, RobFPGA said:

Ради прикола - загнал ваш код в Vivado HLS. Без всякой оптимизации получил время вычисления  ~350 тактов на ~140 MHz.  при 110 штуках DSP :unknw:  Можно в продакшен пихать. 

Чуть более 35 микросекунд. В ограниченные рамки ТС вписывается :biggrin: Но как я и говорил, Виртекс бы для 110ти DSP, да пожирнее).

UPD А это для double или для float'ов?

Share this post


Link to post
Share on other sites

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

Just now, Nick_K said:

... Но как я и говорил, Виртекс бы для 110ти DSP, да пожирнее)

Так это  без оптимизации - если покрутить прагмами  чтобы  например использовать по минимум float|double корки операций то и меньше по объему получится.

Удачи! Rob.  

Share this post


Link to post
Share on other sites
58 minutes ago, RobFPGA said:

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

Модель в Matlab  тоже один из вариантов  ручного пути вкупе с неким сервисом что позволяет легче оптимизировать вычисления по ресурсам. 

 HLS  же удобен тем что через 5 мин можно получить работающую железку - но естественно за счет "жирности" в реализации.

Ради прикола - загнал ваш код в Vivado HLS. Без всякой оптимизации получил время вычисления  ~350 тактов на ~140 MHz.  при 110 штуках DSP :unknw:  Можно в продакшен пихать. :biggrin:

Удачи! Rob.

а в квартусе куда его загонять?

Share this post


Link to post
Share on other sites

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

Just now, jenya7 said:

а в квартусе куда его загонять?

Гусары молчать!  :biggrin: 

У Intel  вроде есть  свое HLS   но я с ним толком еще не работал. 

Удачи! Rob.

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