Я робив це кілька разів сам.
Зазвичай інструменти дизайну вибиратимуть між тканинною реалізацією та 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, що допоможе в майбутньому)
Перш ніж зробити будь-яке з них, прочитайте перші кілька сторінок керівництва користувача DSP-фрагментів. У випадку з Spartan 6 (DSP48A1) це буде Xilinx doc UG389:
http://www.xilinx.com/support/documentation/user_guides/ug389.pdf
Спершу розглянемо варіант генератора ядра. Зазвичай я створюю тестовий проект у Core Generator для тієї частини, з якою працюю, де я створюю будь-яку кількість IP-блоків просто для того, щоб вивчити систему. Потім, коли я готовий додати його до свого дизайну в ISE, я клацніть правою кнопкою миші в Ієрархії дизайну, натисніть нове джерело та виберіть "IP (майстер генератора та архітектури CORE)", щоб я міг редагувати та відновлювати блок безпосередньо з мого проекту.
У Core gen, погляньте на різні блоки IP, які ви можете вибрати - є кілька десятків, більшість з яких досить круті.
Ядро множника - це те, що ви повинні спочатку подивитися. Перегляньте кожну сторінку та натисніть кнопку даних. Важливими частинами є цілі ширини бітів, стадії трубопроводу (затримка) та будь-які керуючі сигнали. Це створює найпростіший можливий блок, забираючи всі порти, які вам не потрібні.
Коли я будував фільтр IIR 5 на 3 порядку минулого року, мені довелося скористатися шаблоном вручну інстанції, оскільки я будував дуже власну реалізацію, з 2 зрізами DSP накручувався в 4 рази швидше, ніж швидкість вибірки. Це був тотальний біль.