Czytając o FPGA, jeśli dobrze rozumiem, są to zasadniczo w pełni konfigurowalne obwody bramki logicznej. Dzięki temu można zaprojektować z nimi wszystko. Można zaprojektować wszystko w najbardziej spersonalizowany sposób, a tym samym osiągnąć te same cele w znacznie bardziej wydajny sposób, który można uzyskać za pomocą mikrokontrolera. Dzięki temu wygląda na to, że FPGA bije mikrokontroler o każdej porze, każdego dnia. Więc moje pytanie brzmi: jeśli FPGA są naprawdę tak niesamowite, co sprawia, że nie są one znacznie bardziej rozpowszechnione niż mikrokontrolery? Z tego punktu widzenia wydaje mi się, że układy FPGA powinny już dawno wymazać mikrokontrolery. Dlaczego tak nie jest? Czy to koszt, trudność w zaprogramowaniu FPGA, czy całkowicie coś innego?
źródło
Odpowiedzi:
Ignorujesz wiele czynników wpływających na wybór projektu:
Główną zaletą układów FPGA w porównaniu z mikrami jest to, że są one szybsze i mogą robić więcej rzeczy równolegle. Poza tym wolisz używać mikro. Dlatego w procesie projektowania zwykle zaczynasz od mikro, a następnie niechętnie przechodzisz do FPGA, kiedy naprawdę potrzebujesz prędkości i / lub równoczesnej pracy z dużą prędkością. Nawet wtedy implementujesz tylko kluczowe dla prędkości części w FPGA, a funkcje kontroli niższej prędkości i tym podobne pozostawiasz w micro.
źródło
Jedną z różnic, o których nie wspomniałem tutaj, jest to, że FPGA są używane i zachowują się zupełnie inaczej niż procesory.
FPGA jest naprawdę dobra w wykonywaniu dokładnie tego samego zadania w kółko. Na przykład przetwarzanie sygnałów wideo, audio lub RF. Lub routing pakietów Ethernet. Lub symulacja przepływu płynu. Każda sytuacja, w której rzucisz na Ciebie wiele tego samego rodzaju danych i chcesz sobie z tym wszystkim poradzić w ten sam sposób. Lub chcesz wielokrotnie uruchamiać ten sam algorytm. FPGA tak naprawdę nie ma „zadań”, które uruchamiają i zatrzymują [1], jego zadaniem jest robienie tego samego z wszelkimi danymi, które otrzymuje, tak długo, jak są włączone. Nie zmienia biegów, nie robi nic innego. Jest najlepszym pracownikiem linii produkcyjnej. Zrobi to samo wielokrotnie, tak szybko, jak to możliwe, na zawsze.
Z drugiej strony procesory są uosobieniem elastyczności. Można je zaprogramować do robienia czegokolwiek i mogą być zaprogramowane do robienia wielu różnych rzeczy jednocześnie. Mają zadania, które uruchamiają się i zatrzymują, zmieniają biegi, wielozadaniowość, ciągle zmieniają i zmieniają funkcje.
FPGA i procesor to kompletne przeciwieństwa. Towar na procesor to czas - musi być szybciej. Im szybsza aplikacja, tym lepiej.
Towar FPGA to przestrzeń kosmiczna. Twój układ FPGA jest tylko tak duży, a dostępnych jest tylko tyle bram do wykonania żądanego zadania. W większości przypadków problem jest większy niż prędkość [2].
Możliwe jest, aby FPGA działała jak procesor. Możesz umieścić rdzeń IP procesora w FPGA, jednak bardzo trudno to uzasadnić z powodów opisanych przez innych [3]. FPGA i procesor to przeciwieństwa, które mają swoje mocne i słabe strony, i dzięki temu mają swoje własne miejsce.
Uwagi:
1) FPGA można zaprojektować do wykonywania różnych zadań, ale nawet wtedy będzie to konkretna liczba, dla której została wcześniej zaprojektowana.
2) Szybkość jest również specyfikacją projektu FPGA. To naprawdę kompromis między prędkością a rozmiarem.
3) Wstawienie procesora do układu FPGA odbywa się stosunkowo często, jednak w zależności od konkretnych aplikacji. Na przykład, jeśli potrzebujesz naprawdę małego mikrokontrolera i masz dodatkową przestrzeń FPGA.
I na koniec: ta odpowiedź jest dużym uproszczeniem - układy FPGA są używane na bardzo różnorodne i złożone sposoby, a to jest bardzo krótki przegląd ich ogólnego zastosowania.
źródło
Jak mówi Olin, coś w rodzaju mikro jest bardziej wydajne dla wielu zadań i prawie zawsze znajdziesz mikro używane wszędzie tam, gdzie pojawia się FPGA. Powierzchnia użytego krzemu (co przekłada się na koszty w sposób nieliniowy) i zużycie energii są znacznie mniejsze. Z tego powodu nierzadko wdraża się „miękką” jednostkę MCU w układzie FPGA, ale koszt i wydajność takiego mikroprocesora jest przytłaczająca.
Niektóre współczesne układy FPGA zawierają jeden lub więcej „twardych” rdzeni, takich jak wszechobecna seria ARM. Mogą również zawierać dedykowane bloki pamięci, ponieważ naprawdę nieefektywne jest tworzenie pamięci z bram. 32-bitowy mikroprocesor zajmuje niewielką część obszaru krzemu w typowym układzie FPGA, co daje wyobrażenie o względnych kosztach.
Rozwój jest znacznie trudniejszy, a IP zazwyczaj nie jest tak swobodnie dostępne, jak w przypadku mikroprocesorów i dedykowanych rozwiązań SOC - na przykład kontrolerów LCD, interfejsów PCI, MAC MAC. Powodem jest częściowo to, że ujawniając opisy logiki HDL, przenoszą projekt, a nie tylko jego instancję. Innym powodem jest to, że wydajność zależy od układu logiki w FPGA, co wymaga dużego wysiłku podczas projektowania.
Kolejną komplikacją jest to, że najbardziej złożone układy FPGA są oparte na pamięci RAM do konfiguracji, a koszty procesu są takie, że do przechowywania konfiguracji i pamięci programu dla dowolnego MCU na pokładzie wymagana jest zewnętrzna pamięć nieulotna. Pamięć ta musi zostać załadowana do pamięci RAM podczas uruchamiania.
Układy FPGA są niezwykle przydatnymi narzędziami w przyborniku, ale w najbliższym czasie nie zastąpią uniwersalnych układów scalonych ani układów ASIC.
źródło
Najlepszym zastosowaniem krzemu do pracy jest układ ASIC, nic się nie marnuje, ale mają ogromną krzywą uczenia się, NRE i elastyczność.
Istnieją dwa sposoby na zbudowanie elastyczności w układzie. a) Mieć ALU o zoptymalizowanej przestrzeni i używać go w kółko na przechowywanych danych. Nazywa się to MCU i wymaga ogromnego obszaru krzemu, który „nic nie robi”, pamięci programu, szerokich magistrali biegnących od jednostki do jednostki oraz przełączników dostępu do magistrali. b) Mają precyzyjną logikę z kilkoma opcjonalnymi częściami zoptymalizowanymi pod kątem przestrzeni, takimi jak multiplikatory, małe pamięci RAM i proste procesory. Nazywa się to FPGA i wymaga dużego obszaru krzemu, który „nic nie robi”, programowalnych przełączników i linii połączeniowych.
Oczywiście w przypadku tych struktur MCU najlepiej sprawdzają się w przypadku zadań, które można podzielić na porcje szeregowe, a układy FPGA najlepiej sprawdzają się w przypadku zadań wymagających równoległej pracy z dużą prędkością. Gdy aplikacja jest ciężka, a koszt jest zdominowany przez koszt krzemu, w ten sposób będą naturalnie używane oba typy.
Gdy aplikacja jest lekka, ale duża, koszt jest zdominowany przez opakowanie, a nie krzem, i każdy z tych rodzajów jest opłacalny. Altera ma kilka bardzo małych układów FPGA o bardzo małej mocy, które konkurują z kilkoma MCU za dolara.
W przypadku aplikacji o małej objętości koszt opracowywania zwykle dominuje, a MCU wygrywają, zakładając, że mają szybkość
źródło
Pod względem zużycia energii i wykorzystania krzemu układ FPGA jest bardzo słaby w porównaniu z mikroprocesorem.
FPGA zużywa znaczną część swojego krzemu w obwodzie konfiguracji logicznej, co nie dotyczy mikro. Musi być dostępnych znacznie więcej połączeń wewnętrznych, niż byłoby to konieczne w przypadku dedykowanej implementacji mikroprocesora.
FPGA zużywa więcej energii niż dedykowany układ ASIC, taki jak mikroprocesor, ponieważ logika nie jest wdrażana tak skutecznie.
Dowolną funkcję, którą można zaimplementować w układzie FPGA, można wykonać bardziej wydajnie, taniej, przy niższym zużyciu energii, mniejszej powierzchni płyty itp. W dedykowanym układzie ASIC. Zakłada się, że objętości są wystarczająco duże, aby zrównoważyć NRE.
źródło
Na systemach mikroprocesorowych, a później na mikrokontrolerach, udało się osiągnąć olbrzymi stopień funkcjonalności dzięki możliwości wykorzystania wielu poszczególnych elementów obwodów w celu wykonania wielu różnych zadań w różnym czasie. Myślę, że warto porównać automat arkadowy Tank, zaprojektowany w 1976 r., Z grą Combat, która działa na drugiej na świecie kontrolowanej mikroprocesorem maszynie Atari 2600. Chociaż istnieją pewne różnice w rozgrywce, sprzęt Atari 2600 został zasadniczo zaprojektowany wdrożyć gry takie jak Tank przy minimalnych kosztach; fakt, że można było grać w różne gry po włożeniu różnych kaset ROM, był miłym dodatkiem.
Gra Tank pozwala dwóm graczom prowadzić czołgi po ekranie i strzelać do siebie nawzajem. Posiada liczniki „poślizgu” dla pozycji X i Y każdego czołgu, pozycję X i Y każdego gracza, licznik góra / dół dla kąta każdego gracza i kąta strzału każdego gracza, licznik dla wyniku każdego gracza, X i Y raster-beam - liczniki pozycji i mnóstwo obwodów sterowania na wierzchu tych rzeczy. Ma sprzęt do pobierania danych pola gry z pamięci ROM i wyświetlania go, a także sprzęt do pobierania kształtów dla czołgów dwóch graczy i wyników z pamięci ROM i wyświetlania ich.
Atari 2600 ma licznik poślizgu dla poziomych pozycji każdego z dwóch obiektów gracza, każdego z dwóch obiektów pocisków i jednego dodatkowego obiektu zwanego „piłką”, który nie jest używany w walce, ale jest używany w niektórych innych grach. Dla każdego obiektu odtwarzacza ma sprzęt do generowania wzorca zapisanego w 8-bitowej zatrzasku, a także „opóźnionego” ośmiobitowego zatrzasku dla każdego odtwarzacza, który jest kopiowany na podstawową 8-bitową zatrzask za każdym razem, gdy kształt został zaktualizowany. Ma również poziomy licznik położenia wiązki i 20-bitowy zatrzask w kształcie pola gry, który jest wysyłany na ekran dwa razy na linię skanowania, a kopia po prawej stronie pojawia się jako powtórzenie lub odbicie lewej strony. Ma sprzęt do wykrywania kolizji, ale nie do robienia niczego w wyniku ich wystąpienia. Tak nie jest nie ma żadnego sprzętu dla pozycji pionowych żadnego obiektu, ani pozycji pionowej wiązki rastrowej (!), ani nie ma żadnego sprzętu związanego z utrzymywaniem wyników, wyświetlaniem wyników, czasem trwania gry itp.
Wszystkie funkcje, dla których 2600 pomija sprzęt, są obsługiwane przez oprogramowanie we wkładzie. Konieczne jest tylko sprawdzenie pozycji pionowej każdego obiektu względem pozycji wiązki rastrowej raz na linię skanowania, konieczne jest jedynie zaktualizowanie wyniku gracza i pozostałego czasu gry maksymalnie co najwyżej jeden na klatkę, wyniki graczy są przechowywane na liniach skanowania powyżej pola gry i dlatego może współdzielić ten sam sprzęt, który jest używany na boisku itp.
Normalnym podejściem do implementacji gry typu „Tank” w FPGA byłoby użycie oddzielnych obwodów dla różnych funkcji w podobny sposób, jak robiła to maszyna zręcznościowa z 1976 roku. Takie podejście działałoby, ale wymagałoby znacznej ilości sprzętu. Podejście oparte na mikroprocesorze mogłoby wyeliminować ponad połowę tego sprzętu w zamian za dodanie mikroprocesora, który prawdopodobnie zawierałby mniej obwodów niż sprzęt, który zastąpił (2600 mógłby wdrożyć gry o wiele bardziej wyrafinowane niż Tank, które wymagałyby znacznie więcej sprzętu jeśli nie użyli mikroprocesora).
Układy FPGA są doskonałe w przypadkach, gdy potrzebne jest urządzenie, które może wykonywać wiele prostych zadań jednocześnie . Systemy oparte na mikroprocesorach (lub mikrokontrolerach) są na ogół lepsze, jednak w przypadkach, gdy istnieje wiele zadań, które należy wykonać, ale nie trzeba ich przetwarzać jednocześnie, ponieważ ułatwiają użycie niewielkiej ilości obwodów elektrycznych do realizacji wielu różnych celów.
źródło
To całkowicie koszt. Kiedy mikro może wynosić nawet 30 centów, tani FPGA znajduje się na terytorium 5 USD. Koszt może nie wydawać się tak wysoki, ale kiedy zarobisz milion pierdzących nowości, które sprzedasz za 10 USD, cena FPGA zabije twoje dochody.
źródło
Aby dodać do innych bardzo dobrych odpowiedzi, myślę, że przyjęcie FPGA jest również kwestią domenową: na przykład w przypadku urządzeń neuromorficznych płyty FPGA stają się dość wszechobecne, ponieważ istnieje ogromna potrzeba równoległości, która jest mocną stroną FPGA.
Jeśli ekstrapolujesz trend, który widzimy dla urządzeń neuromorficznych, możesz sobie wyobrazić, że inne pola oparte lub krytycznie wymagające równoległości prawdopodobnie przyjmą FPGA znacznie więcej. Być może więc FPGA nie stanie się wszechobecne w przypadku produktów konsumenckich, ale może dotyczyć określonych domen, ponieważ wydaje się, że obecnie dzieje się to w przypadku urządzeń neuromorficznych.
źródło