robix 0 27 декабря, 2016 Опубликовано 27 декабря, 2016 · Жалоба Всем привет! Коллеги, в vhdl заложена возможность выполнять цифровую обработку сигналов над такими типами как real, signed и др. Условно говоря в тексте программы можно написать real <= real / real * real ** real или signed <= signed * signed / signed. То есть простой и незатейливый способ перемножить, поделить и пр. целые числа и числа с плавающей точкой. С другой стороны для тех же самых операций предлагается использовать специальные ip-корки, особенно для чисел с плавающей точкой. При этом эти корки выполняют то же самое с приличными задержками и за несколько тактовых циклов. Поясните, пожалуйста, кто нибудь, в чем принципиальная разница? И если эти операции такие сложные, то какие у них могут быть задержки при использовании без корок, будет ли такой код работать в принципе!? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1891ВМ12Я 0 27 декабря, 2016 Опубликовано 27 декабря, 2016 · Жалоба Такая конструкция синтезируется? Если да, то во что? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
robix 0 27 декабря, 2016 Опубликовано 27 декабря, 2016 · Жалоба Такая конструкция синтезируется? Если да, то во что? Для signed данных синтезируется без проблем и работает. Во что пусть ответят гуру :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1891ВМ12Я 0 27 декабря, 2016 Опубликовано 27 декабря, 2016 · Жалоба Для signed данных синтезируется без проблем и работает. Во что пусть ответят гуру :) Используете ли Вы ПЛИС какого-либо производителя? Есть шанс самому почувствовать себя гуру и открыть "RTL Viewer" в используемой САПР ;) У меня есть подозрение, что либо оно оборачивает в корку, либо это вовсе не синтезируемая конструкция, пригодная лишь для тестбенчей. Точнее signed меня не удивляет ни капли, а вот результат с типом данных real заинтриговал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bogaev_roman 0 27 декабря, 2016 Опубликовано 27 декабря, 2016 · Жалоба Используете ли Вы ПЛИС какого-либо производителя? Есть шанс самому почувствовать себя гуру и открыть "RTL Viewer" в используемой САПР ;) А не дойдет до RTL viewer, сразу упадет. Деление не синтезируется точно, real - скорее всего. Поясните, пожалуйста, кто нибудь, в чем принципиальная разница? Разница в том, что у Вас на VHDL абстрактное описание, несинтезируемая модель, а корка отлажена, синтезируема, работоспособна и, с большой долей вероятности, лучше Вы ее самостоятельно не сможете реализовать. PS/ В стандарте на VHDL - тип real - несинтезируемая конструкция. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
robix 0 27 декабря, 2016 Опубликовано 27 декабря, 2016 · Жалоба Используете ли Вы ПЛИС какого-либо производителя? Есть шанс самому почувствовать себя гуру и открыть "RTL Viewer" в используемой САПР ;) У меня есть подозрение, что либо оно оборачивает в корку, либо это вовсе не синтезируемая конструкция, пригодная лишь для тестбенчей. Точнее signed меня не удивляет ни капли, а вот результат с типом данных real заинтриговал. C Real результата нет, не пробовал, я поэтому и спрашиваю куда дальше смотреть, каким путем идти. То есть, есть мнение что real не будет работать!? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 14 27 декабря, 2016 Опубликовано 27 декабря, 2016 · Жалоба То есть, есть мнение что real не будет работать!?Это не мнение, а уверенность. Тип реал в настоящее время несинтезируем. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gin 0 27 декабря, 2016 Опубликовано 27 декабря, 2016 · Жалоба Кстати, в последних поколениях Альтеры вроде как есть аппаратные блоки умножения с плавающей точкой, может там даже что то просинтезируется. Хотя, конечно же лучше использовать описание, которое рекомендует производитель FPGA Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EugeneS 0 28 декабря, 2016 Опубликовано 28 декабря, 2016 · Жалоба C Real результата нет, не пробовал, я поэтому и спрашиваю куда дальше смотреть, каким путем идти. То есть, есть мнение что real не будет работать!? По направлению к float/fixed, есть в VHDL-2008. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex_AZ 0 29 декабря, 2016 Опубликовано 29 декабря, 2016 · Жалоба А не дойдет до RTL viewer, сразу упадет. Деление не синтезируется точно, real - скорее всего. Сам удивился, но современные синтезаторы умеют деление целых чисел синтезировать. Случилось столкнуться с таким описанием. Судя по схеме в RTL-viewer'e, просто раскрывают цикл сдвигов и вычитаний, но логики при этом используется оооочень много. Соответственно и максимальная частота работы схемы сильно падает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bogaev_roman 0 29 декабря, 2016 Опубликовано 29 декабря, 2016 · Жалоба Сам удивился, но современные синтезаторы умеют деление целых чисел синтезировать. Случилось столкнуться с таким описанием. Судя по схеме в RTL-viewer'e, просто раскрывают цикл сдвигов и вычитаний, но логики при этом используется оооочень много. Соответственно и максимальная частота работы схемы сильно падает. Вы правы, ради интереса на quartus попробовал делитель 8-разрядный - синтезатор вставил корку делителя, правда без использования дополнительных конвейерных регистров. Отстал от жизни похоже :) . Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться