Zrobiłem to kilka razy sam.
Zasadniczo narzędzia do projektowania będą wybierać między implementacją tkaniny a wycinkiem DSP na podstawie ustawień syntezy.
Na przykład, dla Xilinx ISE, w ustawieniach procesu syntezy, Opcjach HDL, jest ustawienie „-use_dsp48” z opcjami: Auto, AutoMax, Tak, Nie. Jak można sobie wyobrazić, kontroluje to, jak mocno narzędzia starają się umieścić Plasterki DSP. Miałem kiedyś problem polegający na tym, że pomnożyłem liczbę całkowitą przez 3, co wywnioskowało wycinek DSP - tyle że już ręcznie wywnioskowałem każdy wycinek DSP w układzie, więc syntezator nie powiódł się! Zmieniłem ustawienie na Nie, ponieważ już używałem każdego wycinka dsp.
Jest to prawdopodobnie dobra zasada (właśnie wymyśliłem): jeśli twój projekt jest taktowany mniej niż 50 MHz, i prawdopodobnie będziesz używał mniej niż 50% wycinków DSP w układzie, to po prostu użyj *, + i - operatorzy. spowoduje to wywnioskowanie wycinków DSP bez rejestrów potokowych. To naprawdę ogranicza maksymalną prędkość. (Nie mam pojęcia, co się stanie, gdy użyjesz podziału)
Jeśli jednak wygląda na to, że zamierzasz przeprowadzić wycinki bliżej maksymalnej prędkości wycinka DSP (333 MHz dla klasy Spartan 6 o normalnej prędkości) Jeśli zamierzasz użyć wszystkich wycinków, powinieneś ręcznie wywnioskować je .
W takim przypadku masz dwie opcje.
Opcja 1: ręcznie użyj surowego szablonu instancji DSP. Opcja 2: użyj bloku IP z Xilinx Core Generator. (Chciałbym skorzystać z tej opcji. W tym samym czasie dowiesz się wszystkiego o genach podstawowych, które pomogą w przyszłości)
Przed wykonaniem którejkolwiek z tych czynności przeczytaj pierwszą parę stron instrukcji obsługi wycinka DSP. W przypadku Spartan 6 (DSP48A1) byłby to Xilinx doc UG389:
http://www.xilinx.com/support/documentation/user_guides/ug389.pdf
Najpierw rozważ opcję Core Generator. Zwykle tworzę projekt testowy w Core Generatorze dla części, z którą pracuję, w której tworzę dowolną liczbę bloków IP tylko po to, aby nauczyć się systemu. Następnie, gdy jestem gotowy do dodania jednego do mojego projektu w ISE, klikam prawym przyciskiem myszy Hierarchię projektu, klikam nowe źródło i wybieram „IP (CORE Generator & Architecture Wizard)”, aby móc edytować i ponownie generować blok bezpośrednio z mojego projektu.
W Core gen, spójrz na różne bloki IP, z których możesz wybierać - jest ich kilkadziesiąt, z których większość jest całkiem fajna.
Rdzeń Mnożnika jest tym, na co powinieneś najpierw spojrzeć. Sprawdź każdą stronę i kliknij przycisk arkusza danych. Ważnymi częściami są liczby bitów całkowitych, etapy potoku (opóźnienie) i wszelkie sygnały sterujące. Tworzy to najprostszy możliwy blok, zabierając wszystkie niepotrzebne porty.
Kiedy w ubiegłym roku budowałem filtr IIR rzędu 5 na 3, musiałem skorzystać z ręcznego szablonu tworzenia instancji, ponieważ budowałem bardzo niestandardową implementację, z 2 wycinkami DSP taktowanymi 4x szybciej niż częstotliwość próbkowania. To był całkowity ból.