2015-09-18 9 views
1

Как инженер прошивки, как вы сравните стоимость вычисления следующих операций (возможно количество ресурсов, необходимых)Насколько сложно реализовать следующие операции/функции в VHDL для FPGA?

  • сложение/вычитание
  • умножения
  • деление
  • тригонометрические функции, такие как косинус
  • квадратный корень

с плавающей точкой с Вычисление 32 бит.

+2

Если это вопрос VHDL/FPGA, вам нужен инженер-аппаратчик, а не инженер прошивки. –

+1

Для арифметических операций (+ - * /) это будет сильно зависеть от того, считаете ли вы значения с фиксированной или плавающей запятой. Можете ли вы уточнить? – wap26

+0

плавающие точки – Ehsan

ответ

3

Ответ с точки зрения аппаратного обеспечения (не прошивки): к сожалению, на ваш вопрос нет простого ответа. Каждая функция, которую вы указали, имеет множество различных аппаратных реализаций, как правило, между медленными и крупными. Кроме того, это зависит от вашей целевой FPGA, потому что некоторые из них встраивают эти функции в жесткие макросы, поэтому вопрос не более что они стоят, но у меня их достаточно в этой ПЛИС?

В качестве частичного ответа вы можете принять это: с самым простой, комбинаторной реализацией, не используя любой жесткий макрос, целый или с фиксированной точкой расходов N -bits сумматора/вычитатель O(N) а N x N -bits затраты мультипликатора O(NxN). Грубо.

Для других функций очень сложно ответить, существует слишком много вариантов для рассмотрения (фиксированная/плавающая точка, латентность, пропускная способность, точность, диапазон ...). Предполагая, что вы сделаете аналогичный выбор для всех из них, я бы сказал: add < mul < div < sqrt < trig. Но, честно говоря, не принимайте это как должное. Например, если вы работаете с числами с плавающей запятой, сумматор может быть ближе или даже больше, чем множитель, потому что для этого требуется выравнивание мантиссы, то есть баррель.

+1

Делитель с фиксированной точкой также будет стоить «O (NxN)» для операндов с фиксированной точкой. – wap26

1

Инженер-программист с небольшим знанием аппаратного обеспечения, вероятно, будет использовать готовые ядра для каждой из этих функций. Xilinx, Altera и другие предоставляют параметризованные ядра, которые могут выполнять большинство функций, которые вы указали. Параметры для ядра, скорее всего, будут включать размер ввода и количество циклов, принятых для указанной операции, среди многих других. Ресурсы, используемые каждым из этих ядер, будут существенно отличаться в зависимости от конфигурации, а также от того, какой производитель и соответствующее семейство FPGA создают ядро ​​(например, Altera Cyclone 5 или Xilinx Artix 7). Задержка, которую потребуют ядра, также должна быть фактором вашего решения, более быстрые семейства FPGA могут работать с более высокими тактовыми частотами, уменьшая время выполнения операций. Способ получения реальных оценок - установить инструменты поставщиков (например, Vivado Xilinx или Quartus Altera) и использовать эти инструменты для генерации каждого из требуемых типов ядер. Вам нужно будет выбрать точную часть FPGA в семействе, которое вы оцениваете. Выберите один со многими контактами, чтобы избежать истечения ввода-вывода на FPGA. Затем синтезируйте и реализуйте проект для каждого из ядер, которые вы оцениваете. Простейший дизайн будет иметь только то, что вы оцениваете и сопоставляете его входы и выходы с выводами ввода-вывода FPGA. Результаты внедрения дадут вам количество ресурсов, которые требуется для разработки, а также максимальную тактовую частоту, с которой может работать проект.

 Смежные вопросы

  • Нет связанных вопросов^_^