FPGA ma zalety, takie jak wiele punktów IO, ale potem znowu trzeba myśleć, co na bardzo niskim poziomie z przerzutników i pionierem na obszarach, gdzie rzeczy nie są jeszcze dojrzałe - przykładowo patrz na to pytanie tutaj o rozwoju narzędzi informatycznych na FPGA - obecnie tak rozumiem! Teraz FPGA została wykorzystana do stworzenia doskonałej zręczności w robotycznych rękach, takich jak tutaj . Teraz niektórzy ludzie sprzedają FPGA do szybkiego prototypowania i „przyszłościowych” projektów, jak tutaj , nie do końca je rozumiem: jeśli nie potrzebujesz wielu punktów IO dla takich rzeczy jak czujniki, dlaczego wybrać FPGA dla robota? Więc
Kiedy FPGA należy wybrać do projektu z robotyki?
Odpowiedzi:
Nie jestem pewien, co w powiązanym pytaniu o narzędzia programistyczne powoduje, że myślisz, że nie są one dojrzałe. Prawdą jest, że większość z nich jest zastrzeżona i nie jest oprogramowaniem typu open source. Ale myślałem, że narzędzia były dość dojrzałe, nawet gdy zadawano to pytanie trzy lata temu. Obecnie Xilinx , Altera i Lattice mają swobodnie dostępne środowiska programistyczne działające w systemach Windows i Linux z obsługą 32 i 64-bitową. Jeśli nalegasz na open source Icarus Verilog może zrobić całkiem sporo. Ale osobiście trzymałbym się narzędzi specyficznych dla dostawcy.
FPGA to coś więcej niż kilka konfigurowalnych klapek. Zastanów się nad Altera NIOS II . 32-bitowy procesor typu soft-core zdolny do działania w systemie Linux. Łącz i łącz komunikację i inne urządzenia peryferyjne z OpenCores lub Xilinx , Altera lub Lattice, a zbudowałeś niestandardowy mikrokontroler ze wszystkim, czego potrzebujesz i niczym, czego nie potrzebujesz. Możesz nawet napisać kod C dla procesora NIOS II i mieć pewne funkcje zaimplementowane bezpośrednio w sprzęcie FPGA, jeśli potrzebujesz prędkości. Czy to dla ciebie wystarczający poziom myślenia?
Układy FPGA mają wysoki początkowy koszt inwestycji. Ale taniej i łatwiej jest dodać funkcjonalność na późniejszym etapie procesu projektowania. To właśnie oznacza „przyszłościowe” projekty. Rozważ projekt, w którym chcesz dodać dodatkowe silniki do robota, ale zabrakło generatorów PWM na mikrokontrolerze. Co robisz? Dodać kolejny mikrokontroler? Kup oddzielne układy PWM i podłącz je do interfejsu komunikacyjnego? Co jeśli wszystkie interfejsy komunikacyjne są w użyciu? W przypadku FPGA jest to prawie całkowicie zredukowane do operacji kopiowania i wklejania. O wiele łatwiejsze, tańsze i szybsze jest skalowanie projektu w celu uwzględnienia nowej funkcjonalności bez kupowania dodatkowego sprzętu z układem FPGA.
Ale prawdopodobnie największym powodem korzystania z FPGA jest szybkość. Nie mówię o czystej częstotliwości zegara. Ale kiedy potrzebujesz wielu rzeczy, aby wydarzyły się jednocześnie. Jak wspomniał Gossamer, równoległość jest tym, w czym FPGA są naprawdę dobre. Konstrukcje filtrów szczególnie korzystają z tego rodzaju architektury równoległej. Jeśli potrzebujesz filtrować i reagować na szybko zmieniający się czujnik, potrzebujesz FPGA. Są również całkiem dobre w przetwarzaniu wideo, ponieważ to również korzysta z przetwarzania równoległego.
Weźmy na przykład tego szybkiego robota ręcznego . Musi przetwarzać wideo z szybkiej kamery wizyjnej (1000 klatek na sekundę), a także czujników dotykowych i reagować, manipulując wieloma siłownikami w zaledwie kilka milisekund. Ten typ projektu ma miejsce, gdy trzeba wybrać układy FPGA.
źródło
Myślę, że może istnieć nieporozumienie co do tego, czym właściwie jest FPGA i kiedy jest używana w projektach. Więc pozwól mi najpierw wyjaśnić tę część.
FPGA i kiedy ktoś może chcieć mieć ...
W przypadku ryzyka uproszczenia układ FPGA to niewiele więcej niż procesor, który może być „konfigurowalny”.
Dlaczego ktoś miałby chcieć mikroprocesora „rekonfigurowalnego”? Cóż, ponieważ wyprodukowanie procesora krzemowego kosztuje zbyt wiele, aby pozwolić sobie na to za jeden, dwa, a nawet dwieście układów. Musiałbyś uruchamiać partie tysięcy żetonów, aby było to ekonomicznie wykonalne.
Ponieważ żaden projekt nigdy nie jest wolny od błędów za pierwszym razem, wybranie krzemowej trasy skutecznie zobowiązuje firmę do co najmniej dwóch, jeśli nie większej liczby testów, a wszystko to przy ogromnych kosztach produkcji.
Co w gruncie rzeczy oznacza, że bardzo niewiele firm komercyjnych będzie zainteresowanych projektowaniem i wprowadzaniem do produkcji czegokolwiek innego niż mikroukład o wystarczająco szerokim komercyjnym charakterze.
Tak więc, jeśli wymyślić genialny projekt, który uzasadnia zwyczaj mikroprocesorowe, to może próbować wnieść swój pomysł do życia na skromny budżet poprzez wdrożenie go w FPGA, gdzie rzeczywisty układ jest po prostu zbiorem bramek, a „program” (zazwyczaj VHDL lub Verilog) ustawia te bramki w rzeczywisty mikroprocesor.
Ale to zupełnie inna droga (zupełnie odmienna konstrukcja mikroprocesora!) ...
Co prowadzi mnie do tego
... FPGA nie są niezbędne dla robotyki - przynajmniej na samym początku
Do robotyki potrzebny jest procesor . FPGA to tylko specjalny rodzaj procesora (konfigurowalny).
Pytasz, czy powinieneś? To zależy od twojej wiedzy, a także od tego, gdzie leżą twoje prawdziwe zainteresowania - najpierw projektowanie mikroprocesorów czy robotyka?
Jeśli mikroprocesory są Twoją pasją, to na pewno! A robotyka to świetny obszar zastosowań dla niestandardowych mikroprocesorów - być może kora wzroku z wieloma równoległymi ścieżkami decyzyjnymi obsługiwanymi bezpośrednio w sprzęcie lub specjalne mnożenie tensorów w sprzęcie - w zasadzie wszystko, czego zwykłe procesory nie są w stanie poradzić sobie dobrze z gotowymi produktami.
Ale jeśli zamierzasz projektować mikroprocesory w układach FPGA, to oczywiście musisz mieć całą wiedzę o niskim poziomie, o której wspomniałeś, i więcej - ponieważ zasadniczo będziesz projektować własny procesor. Co tak naprawdę nie ma nic wspólnego z robotyką, nawet jeśli twoją docelową aplikacją może być robotyka.
Większość projektantów prawdopodobnie znajdzie istniejący procesor, który zrobi większość tego, czego kiedykolwiek będzie potrzebował.
Myślę więc, że prawdopodobnie nie potrzebujesz FPGA.
Plan startowy: od możliwości komercyjnych do (być może) FPGA ...
Moim zdaniem pierwszym celem jest próba przekształcenia wszystkich twoich pomysłów w działającego robota (samo w sobie dość intensywne wyzwanie).
Jeśli okaże się, że masz w projekcie specyficzne i znaczące wąskie gardła w przetwarzaniu, następnym celem jest optymalizacja wyboru / projektu procesorów, wciąż dostępnych na rynku układów scalonych. Może większy, szybszy (kompromis z poborem mocy, rozpraszaniem ciepła). Być może mniejsze, dedykowane układy obsługujące określone zadania i współpracujące z głównym mózgiem (kompromis z komplikacjami algorytmu / logiki).
Tylko jeśli istnieją możliwości, których po prostu nie będziesz w stanie obsłużyć komercyjnych układów, możesz rozważyć wdrożenie specjalistycznego procesora w układzie FPGA, ponieważ w tym momencie pojawią się bardzo wyraźne korzyści, które masz nadzieję zyskać, rozwijając własne ”, a Ty możesz skoncentrować się na implementacji tych możliwości, korzystając z odpowiednich interfejsów do reszty projektu.
W przeciwnym razie prawdopodobnie zostaniesz pobocznym od głównego celu (zakładam, że faktycznie zbuduję robota!)
Podsumowując: układy FPGA odwracają uwagę od rozpoczęcia robotyki - dopóki nie znajdziesz się daleko na drodze do robotyki - i zyskałeś mocne podstawy w projektowaniu elektroniki cyfrowej / mikroprocesora gdzieś po drodze.
źródło
Pracując zarówno z układami FPGA, jak i mikrokontrolerami w projektach robotyki, powiedziałbym teraz: bez względu na to, kto ma największe doświadczenie w realizacji zadania. Jeśli znasz oba równie dobrze, nie zadajesz sobie pytania. Jeśli nie znasz dobrze, to są następujące punkty do przejścia:
Często stosuje się również rozwiązania hybrydowe. Albo z dwoma chipami, więc jednym mikrokontrolerem dla kodu programu i FPGA dla IO lub innym zadaniem. Istnieje również wiele układów FPGA, które faktycznie mają wbudowany mikrokontroler.
Nie byłbym tak surowy w układach FPGA jak niektóre inne posty, ale ogólnie twierdziłbym również, że jeśli nie znasz dobrze swojego VHDL, lepiej skorzystasz z mikrokontrolera lub jeszcze lepiej osadzonych komputerów.
źródło