Я сделал это несколько раз сам.
Как правило, инструменты проектирования будут выбирать между реализацией структуры и срезом DSP на основе параметров синтеза.
Например, для Xilinx ISE в настройках процесса синтеза, Параметры HDL, есть параметр «-use_dsp48» с параметрами: Авто, АвтоМакс, Да, Нет. Как вы можете себе представить, это контролирует, как сильно инструменты пытаются разместить DSP ломтики. Однажды у меня возникла проблема, когда я умножил целое число на 3, что привело к выводу среза DSP - за исключением того, что я уже вручную выводил каждый срез DSP в чипе, поэтому синтезатор не удался! Я изменил настройку на Нет, потому что я уже использовал каждый срез dsp.
Это, вероятно, хорошее практическое правило (я только что придумал): если ваш дизайн работает на частоте менее 50 МГц и вы, вероятно, собираетесь использовать менее 50% срезов DSP в чипе, тогда просто используйте *, +, и - операторы. это выведет DSP-срезы без конвейерных регистров. Это действительно ограничивает максимальную скорость. (Я понятия не имею, что происходит, когда вы используете разделение)
Однако, если кажется, что вы собираетесь запускать срезы ближе к максимальной скорости среза DSP (333 МГц для нормального уровня скорости Spartan 6). Если вы собираетесь использовать все срезы, вы должны вывести их вручную ,
В этом случае у вас есть два варианта.
Вариант 1: вручную использовать необработанный шаблонный экземпляр DSP. Вариант 2: использовать IP-блок от Xilinx Core Generator. (Я бы использовал эту опцию. В то же время вы узнаете все о core gen, что поможет в будущем)
Перед тем, как сделать что-либо из этого, прочитайте первые пару страниц руководства пользователя среза DSP. В случае со спартанцем 6 (DSP48A1) это будет Xilinx doc UG389:
http://www.xilinx.com/support/documentation/user_guides/ug389.pdf
Сначала рассмотрим опцию Core Generator. Я обычно создаю тестовый проект в Core Generator для той части, с которой я работаю, где я создаю любое количество блоков IP просто для изучения системы. Затем, когда я буду готов добавить один к своему дизайну в ISE, я щелкаю правой кнопкой мыши в Иерархии проектирования, нажимаю новый источник и выбираю «IP (CORE Generator & Architecture Wizard)», чтобы я мог редактировать и регенерировать блок напрямую. из моего проекта.
В Core gen взгляните на различные IP-блоки, которые вы можете выбрать - их несколько десятков, большинство из которых довольно крутые.
Ядро множителя - это то, на что вы должны смотреть в первую очередь. Проверьте каждую страницу и нажмите кнопку таблицы данных. Важными частями являются целочисленная битовая ширина, ступени конвейера (задержка) и любые управляющие сигналы. Это создает максимально простой блок, убирая все ненужные порты.
Когда в прошлом году я создавал БИХ-фильтр 5 на 3 порядка, мне приходилось использовать шаблон создания вручную, так как я создавал очень индивидуальную реализацию с двумя срезами DSP, синхронизированными в 4 раза быстрее, чем частота дискретизации. Это была полная боль.