Перейти к содержанию
    

задержки цифровой обработки

Всем привет!

Коллеги, в vhdl заложена возможность выполнять цифровую обработку сигналов над такими типами как real, signed и др. Условно говоря в тексте программы

можно написать real <= real / real * real ** real или signed <= signed * signed / signed.

То есть простой и незатейливый способ перемножить, поделить и пр. целые числа и числа с плавающей точкой.

 

С другой стороны для тех же самых операций предлагается использовать специальные ip-корки, особенно для чисел с плавающей точкой. При этом эти корки

выполняют то же самое с приличными задержками и за несколько тактовых циклов.

 

Поясните, пожалуйста, кто нибудь, в чем принципиальная разница?

И если эти операции такие сложные, то какие у них могут быть задержки при использовании без корок, будет ли такой код работать в принципе!?

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Такая конструкция синтезируется? Если да, то во что?

Для signed данных синтезируется без проблем и работает. Во что пусть ответят гуру :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для signed данных синтезируется без проблем и работает. Во что пусть ответят гуру :)

Используете ли Вы ПЛИС какого-либо производителя? Есть шанс самому почувствовать себя гуру и открыть "RTL Viewer" в используемой САПР ;)

У меня есть подозрение, что либо оно оборачивает в корку, либо это вовсе не синтезируемая конструкция, пригодная лишь для тестбенчей.

Точнее signed меня не удивляет ни капли, а вот результат с типом данных real заинтриговал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Используете ли Вы ПЛИС какого-либо производителя? Есть шанс самому почувствовать себя гуру и открыть "RTL Viewer" в используемой САПР ;)

А не дойдет до RTL viewer, сразу упадет. Деление не синтезируется точно, real - скорее всего.

Поясните, пожалуйста, кто нибудь, в чем принципиальная разница?

Разница в том, что у Вас на VHDL абстрактное описание, несинтезируемая модель, а корка отлажена, синтезируема, работоспособна и, с большой долей вероятности, лучше Вы ее самостоятельно не сможете реализовать.

PS/ В стандарте на VHDL - тип real - несинтезируемая конструкция.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Используете ли Вы ПЛИС какого-либо производителя? Есть шанс самому почувствовать себя гуру и открыть "RTL Viewer" в используемой САПР ;)

У меня есть подозрение, что либо оно оборачивает в корку, либо это вовсе не синтезируемая конструкция, пригодная лишь для тестбенчей.

Точнее signed меня не удивляет ни капли, а вот результат с типом данных real заинтриговал.

C Real результата нет, не пробовал, я поэтому и спрашиваю куда дальше смотреть, каким путем идти. То есть, есть мнение что real не будет работать!?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

То есть, есть мнение что real не будет работать!?
Это не мнение, а уверенность. Тип реал в настоящее время несинтезируем.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кстати, в последних поколениях Альтеры вроде как есть аппаратные блоки умножения с плавающей точкой, может там даже что то просинтезируется. Хотя, конечно же лучше использовать описание, которое рекомендует производитель FPGA

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

C Real результата нет, не пробовал, я поэтому и спрашиваю куда дальше смотреть, каким путем идти. То есть, есть мнение что real не будет работать!?

 

По направлению к float/fixed, есть в VHDL-2008.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А не дойдет до RTL viewer, сразу упадет. Деление не синтезируется точно, real - скорее всего.

 

Сам удивился, но современные синтезаторы умеют деление целых чисел синтезировать. Случилось столкнуться с таким описанием. Судя по схеме в RTL-viewer'e, просто раскрывают цикл сдвигов и вычитаний, но логики при этом используется оооочень много. Соответственно и максимальная частота работы схемы сильно падает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сам удивился, но современные синтезаторы умеют деление целых чисел синтезировать. Случилось столкнуться с таким описанием. Судя по схеме в RTL-viewer'e, просто раскрывают цикл сдвигов и вычитаний, но логики при этом используется оооочень много. Соответственно и максимальная частота работы схемы сильно падает.

Вы правы, ради интереса на quartus попробовал делитель 8-разрядный - синтезатор вставил корку делителя, правда без использования дополнительных конвейерных регистров. Отстал от жизни похоже :) .

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...