Jestem programistą (C, C ++, Object-C, Java ...) i jestem zainteresowany nauką programowania układów FPGA. Teraz pytanie może wydawać się dla ciebie proste, ale proszę, poświęć trochę czasu, aby mi pomóc w tym, ponieważ utknąłem w tej chwili. Moja firma poprosiła mnie o zapoznanie się z technologią i pracę nad produktem kratowym. Moje pytanie brzmi: od czego zacząć? Po kilku badaniach odkryłem, że mogę wybierać między VHDL i Verilog, nigdy nie korzystałem z żadnego z nich. Czy jest jakiś specjalista, który mógłby mi zasugerować od czego zacząć? Naucz się języka, poznaj elementy sprzętowe, a następnie produkt sieciowy? Lub bezpośrednio zacznij od produktu Lattice (kiedy czytam, że metody programowania są bardzo różne u różnych dostawców FPGA)?
źródło
if(condition)
tegowhen(condition)
. Większość IDE FPGA ma nawet elementy graficzne, tak jakbyś rysował je na papierze.Odpowiedzi:
Projektowanie cyfrowe nie ma wiele wspólnego z tworzeniem oprogramowania (może poza tym, że składnia Verilog wygląda trochę jak język C, ale po prostu wygląda). Dlatego bardzo trudno jest odpowiednio odpowiedzieć na tego rodzaju pytania. Ale jako facet, który przeszedł ścieżkę od rozwoju oprogramowania do projektowania sprzętu, spróbuję. Patrząc na siebie, oto jak doradziłbym sobie wtedy, gdybym wiedział, co teraz wiem:
Zaczynać od początku
Zapomnij o rozwoju oprogramowania. Zwłaszcza języki programowania. Zasady te nie mają zastosowania w projektowaniu cyfrowym. Prawdopodobnie byłoby to łatwe dla faceta, który zaprojektował procesor, aby zaprogramować go w asemblerze, a nawet w C, ale programista asemblera nie będzie w stanie zaprojektować procesora.
Na ścieżce uczenia się nie staraj się rozwiązywać problemu, który wydaje się być łatwym problemem z istniejącą wiedzą z oprogramowania. Jednym z klasycznych przykładów jest „pętla for”. Chociaż możesz napisać pętlę for w powiedzmy verilog - służy ona innym celom. Jest używany głównie do generowania kodu. Może to być również pętla for, jak widzą to twórcy oprogramowania, ale nie przydaje się do niczego poza symulacją (tzn. Nie będziesz w stanie zaprogramować FPGA w ten sposób).
Więc dla każdego zadania, które chcesz wykonać, nie myśl, że wiesz, jak to zrobić, zamiast tego przeprowadź badania - sprawdź książki, przykłady, zapytaj bardziej doświadczonych ludzi itp.
Naucz się sprzętu i języka HDL
Najpopularniejsze języki HDL to Verilog i VHDL. Istnieją również specyficzne dla dostawców, takie jak AHDL (Altera HDL). Ponieważ te języki są używane do opisywania komponentów sprzętowych, wszystkie są używane do wyrażenia tego samego w podobny sposób, ale z inną składnią.
Niektórzy ludzie zalecają naukę Verilog, ponieważ wygląda jak C. Tak, jego składnia jest mieszanką C i Ady, ale nie ułatwia to programistom odchylenia się. Myślę, że może nawet pogorszyć sytuację, ponieważ pojawi się pokusa, aby napisać C w Verilog. To dobry przepis na bardzo zły czas.
Mając to na uwadze, polecam wpatrywać się w VHDL. Chociaż Verilog jest również OK, o ile uwzględniono powyższe.
Należy pamiętać, że musisz zrozumieć, co wyrażasz w tym języku. Jaki rodzaj sprzętu jest „opisywany” i jak działa.
Z tego powodu polecam zaopatrzyć się w ogólnie książkę o elektronice i dobrą książkę taką jak ta - HDL Chip Design (inaczej niebieska książka).
Zdobądź symulator
Zanim zaczniesz cokolwiek robić w sprzęcie i korzystać z funkcji specyficznych dla Dostawcy itp., Zdobądź symulator. Zaczynałem od Verilog i użyłem Icarus Verilog wraz z GTK Wave. To są bezpłatne projekty typu open source. Prześledź przykłady, które widzisz w książkach, ćwicz, projektując własne obwody, aby poczuć smak tego.
Zdobądź tablicę programistyczną
Jeśli masz ochotę iść naprzód, zdobądź tablicę rozwoju. Jeśli wiesz, że twój pracodawca chce iść z Kratownicą, zdobądź tablicę Kratownic.
Metody programowania są bardzo podobne, ale istnieją różne szczegóły. Na przykład różne narzędzia, różne opcje, różne interfejsy. Zazwyczaj, jeśli masz doświadczenie z jednym dostawcą, zmiana nie jest trudna. Ale prawdopodobnie chcesz uniknąć tej dodatkowej krzywej uczenia się.
Dopilnuję również, aby płyta zawierała elementy, których planujesz użyć lub które można rozszerzyć. Na przykład, jeśli chcesz zaprojektować urządzenie sieciowe, takie jak router, upewnij się, że płyta ma Ethernet PHY lub że można ją przedłużyć, powiedzmy, złącze HSMC itp.
Tablice zwykle zawierają dobre odniesienia, instrukcję obsługi i przykłady projektowania. Przestudiuj je.
Czytać książki
Będziesz musiał czytać książki. W moim przypadku nie miałem przyjaciół, którzy znaliby projektowanie cyfrowe, a ta strona nie była zbyt pomocna z powodu jednej prostej rzeczy - nawet nie wiedziałam, jak sformułować moje pytanie. Wszystko, co mogłem wymyślić, to „Uhm, chłopaki, jest coś dcfifo i słyszałem coś o wyzwaniach przekraczania domen zegarowych, co to jest i dlaczego mój projekt nie działa?”.
Osobiście zacząłem od tych:
Dostawcy FPGA mają wiele książek kucharskich z najlepszymi praktykami. Przestudiuj je wraz z projektami referencyjnymi. Tutaj przykład z Altera.
Wróć z bardziej szczegółowymi pytaniami
Przeglądając książki, symulując projekt, mrugając diodami LED na tablicy programistycznej, najprawdopodobniej będziesz mieć wiele pytań. Upewnij się, że nie widzisz odpowiedzi na te na następnej stronie książki lub w Internecie (tj. Na forum poświęconym konkretnej sieci) przed zapytaniem ich tutaj.
źródło
Alternatywnie możesz użyć technik syntezy wysokiego poziomu, takich jak Vivado HLS Xilinx i rozwiązanie OpenCL firmy Altera. Może to zmniejszy twoją krzywą uczenia się języków opisu sprzętu, biorąc pod uwagę twoje oprogramowanie.
źródło
Najpierw naucz się podstaw projektowania cyfrowego. Maszyna Mealy / Moore, logika kombinatoryczna, tablica prawdy, mapa karnaugh i tak dalej. Rozpocznij tworzenie prostego projektu na schematach (licznik 7-segmentowy), a następnie naucz się HDL. W Europie VHDL jest używany, w amerykańskim Verilog. Wreszcie ważna jest synchronizacja, należy pamiętać, że sygnały mają opóźnienia, które są składowe natychmiastowe i zależą od temperatury, a każdy sygnał ma inne opóźnienie.
Książka do przeczytania: http://www.amazon.com/Advanced-FPGA-Design-Architecture-Implementation/dp/0470054379
Znajomość składni języka Perfect jest na później, najpierw zrozumienie projektowania cyfrowego i problemów.
źródło