Kiedy można używać układów FPGA, a mikrokontrolerów / procesorów DSP nie?

28

Muszę wybierać między kursem na temat zaawansowanych mikrokontrolerów a kursem na temat zaawansowanych układów FPGA.

Miałem kursy wprowadzające z obu przedmiotów, a teraz niepokoi mnie to, że jestem już całkiem dobry w tworzeniu oprogramowania układowego dla mikrokontrolerów i nie widzę, jakie produkty / projekty mogę wykonać z FPGA, a nie z mikrokontrolerem / DSP.

Czy możesz wymyślić niektóre aplikacje / produkty / projekty, w których mikrokontroler lub DSP nie byłyby wystarczające i dlaczego?

Aparaty fotograficzne? Szybkie kamery? Szybkie przetwarzanie obrazu?

Jolle
źródło
4
Głównymi przyczynami są właściwie: 1. 100% reakcji deterministycznych, 2. ogromny potencjał paralelizmu. Jednak wiele konstrukcji zawiera w rdzeniu procesor FPGA, ponieważ znacznie łatwiej jest zaprogramować szaloną logikę dla procesora niż dla sprzętu.
Dzarda
Rozróżnienie między tym, co jest możliwe w przypadku każdego urządzenia, nie jest bardzo jasne. Każda ma zalety i są rozwiązania problemów po obu stronach. Przystąpiłem do każdego z kursów wprowadzających, spodziewam się, że to rozumiesz, więc zastanawiam się, o co pytasz.
Phil Frost
Szukam aplikacji, w których mikrokontroler w większości przypadków nie byłby wystarczający lub w których FPGA byłby oczywistym wyborem.
Jolle
4
Który z nich był dla Ciebie łatwiejszy do zrozumienia na kursie wprowadzającym? Następnie wybierz zaawansowany na drugim, ponieważ (być może) będziesz mógł samodzielnie uczyć się łatwiejszego.
woliveirajr
stackoverflow.com/questions/7458850/...
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Odpowiedzi:

21

Zobacz także FPGA kontra mikrokontrolery

Dobrym przykładem jest szybkie przetwarzanie obrazu lub wideo. Lub przetwarzanie „obrazów”, które nie są prostymi obrazami optycznymi, takimi jak systemy radarowe lub laserowe.

Kluczową sprawą do rozważenia są wymagania dotyczące przepustowości i opóźnienia . Mikrokontroler może obsłużyć przerwanie (bardzo z grubsza) raz na mikrosekundę. Może obsłużyć tylko jedno przerwanie na raz. Jeśli potrzebujesz go przetworzyć w skomplikowany sposób, ogranicza to liczbę osób, które możesz obsłużyć w określonym czasie.

Dzięki FPGA ogólnie możesz natychmiast zareagować na zdarzenie wejściowe (cóż, przy następnym cyklu zegara). Możesz mieć wiele jednostek przetwarzania równolegle. Jeśli wiesz, że Twój filtr zajmuje 20 cykli, jest to całkowicie niezależne od wszystkiego, co się dzieje.

Wysoce równoległe obliczenia intensywne na liczbach całkowitych działają najlepiej na układach FPGA, szczególnie w przypadku złożonych zależności danych. Nie mają jednak dużo wbudowanej pamięci; możesz dodać trochę pamięci DRAM z boku, ale kosztem opóźnienia.

Możesz także chcieć jednego dla urządzeń peryferyjnych lub mówić szybką cyfrową magistralą. Nie można bit-bang HDMI podłączyć do mikrokontrolera lub z niego. Nie można zbudować karty PCI wokół niej.

pjc50
źródło
16

Cóż, przetwarzam wideo HD w czasie rzeczywistym w układach FPGA. Część tego, co robię, można zrobić w układzie GPU, ale nie w mikrokontrolerze lub DSP. FPGA jest bardziej elastyczny.

Wiele systemów łączy układy FPGA i MCU / DSP, aby uzyskać to, co najlepsze z obu światów. Jeden projekt, nad którym wkrótce będę pracował, obejmuje rozpoznawanie obiektów w strumieniu wideo. Wstępne kroki (usuwanie szumów, normalizacja, wykrywanie krawędzi itp.) Najlepiej wykonać w FPGA, ale logika wyższego poziomu, która decyduje, które funkcje niskiego poziomu są częściami rozpoznawanych obiektów, najlepiej wykonać na CPU (albo wewnątrz lub na zewnątrz FPGA).

Ostatecznie będziesz chciał być biegły w obu obszarach, więc tak naprawdę to tylko kwestia, którą z nich zrobisz jako pierwszą.

Dave Tweed
źródło
14

Krótko mówiąc, układy FPGA są dobre tam, gdzie trzeba wykonać niewielkie przetwarzanie dużej ilości danych, a procesory są dobre tam, gdzie trzeba wykonać dużo przetwarzania niewielkiej ilości danych.

Strumień wideo HDMI to dużo danych. Można to zrobić za pomocą procesora, karty graficznej lub układu ASIC w ogólnym przypadku wideo, ale jeśli musisz trochę popracować (na przykład dodać nakładkę), możesz wybrać układ FPGA.

Strumień audio nie zawiera dużej ilości danych, ale jeśli chcesz na nim wykonać rozpoznawanie mowy, wolisz procesor niż FPGA.

Chociaż w procesorze można wykonać radio zdefiniowane programowo, z FPGA można poradzić sobie ze znacznie większą częścią widma niż w procesorze.

Chociaż możesz zrobić kontroler klawiatury z FPGA, mikrokontroler będzie tańszy, zużywa mniej energii i łatwiej jest opracowywać zaawansowane oprogramowanie klawiatury (makra, funkcje gier, mapowanie) dla FPGA.

Oczywiście możesz zrobić cokolwiek w dowolnym z nich, z kompromisami, ale jeśli jesteś biegły w obu, będziesz w stanie bardziej zważyć kompromisy i unikniesz wyższego kosztu części lub czasu rozwoju, który musiałbyś ponieść wybierając złe rozwiązanie danego problemu.

Adam Davis
źródło
12

Zasadniczo używasz mikrokontrolera, gdy może on wykonać zadanie. Mikrokontroler wykonuje logikę, wykonując instrukcje sekwencyjne.

Układ FPGA wykonuje logikę, ponieważ bramki sprzętowe są do tego logicznie podłączone. Oznacza to, że może robić rzeczy znacznie szybciej i wiele takich rzeczy jednocześnie. Generalnie bardziej skomplikowane i trudne jest tworzenie i debugowanie tej samej logiki w FPGA jak w mikro, więc używasz FPGA, gdy potrzebna jest dodatkowa prędkość i małe opóźnienie.

Olin Lathrop
źródło
8

Jedną z aplikacji, o których jeszcze nie wspomniałem, jest inżynieria mikroelektroniczna lub sama konstrukcja układów MCU / CPU / GPU / ASIC. Te układy są często prototypowane poprzez zaprojektowanie ich w HDL, a następnie zaimplementowane w FPGA. Dzięki temu są łatwiejsze, tańsze i szybsze testowanie i modyfikowanie przed ostatecznym użyciem HDL do stworzenia układu potrzebnego do produkcji rzeczywistego krzemu w procesorze lub ASIC.

Komentator wspomniał o tym w postaci układów z rdzeniem miękkim (chociaż mieli literówkę i nazwali je układami z rdzeniem sortowym). Możesz wziąć ARM / 8051 / itp. soft-core i inne potrzebne peryferia soft-core, a przede wszystkim zaprojektuj swój własny mikrokontroler zaimplementowany w układzie FPGA. Następnie, zakładając, że masz zasoby, możesz mieć to wbudowane we własny mikrokontroler.

Jeśli tego rodzaju aplikacja Cię interesuje, spójrz na OpenCores, aby zobaczyć, co jest możliwe.

embedded.kyle
źródło
6

Budujemy instrumenty radarowe (głównie aperturę syntetyczną), które intensywnie wykorzystują układy FPGA. Nie sądzę, by mikrokontroler mógł z łatwością sprostać ścisłym wymaganiom czasowym. Uważam, że wiele instrumentów LIDAR również korzysta z układów FPGA.

Zasadniczo wszystko, co wymaga czasu w nanosekundach, wymaga układów FPGA lub ASIC.

LeoR
źródło
5

Mikrokontroler może przetwarzać dane tylko sekwencyjnie, jedna instrukcja na raz, więc jeśli masz bardzo kosztowną operację, możesz chcieć, aby twoje obliczenia były równoległe. Przetwarzanie audio / wideo jest tego dobrym przykładem. Aby zaspokoić tę potrzebę, opracowano procesory sygnałów cyfrowych, które mogą wykonywać niektóre zadania równolegle, ale nie są wystarczająco uogólnione, aby zaimplementować dowolny algorytm, więc procesory te będą działać dla wielu zadań, ale nie dla wszystkich zadań. FPGA to uogólniony element sprzętowy. Ponieważ możesz zasadniczo zdefiniować projekt własnego sprzętu, a następnie pobrać go do FPGA, może on zaimplementować dowolny możliwy do wyobrażenia algorytm, biorąc pod uwagę, że ma na to wystarczające zasoby.

Konkretny przykład: Ken Perlin sugeruje sprzętową implementację swojego algorytmu szumu simpleks. Można to zrobić stosunkowo szybko za pomocą tradycyjnego procesora lub mikrokontrolera, ale można to zrobić bardzo szybko za pomocą niestandardowego sprzętu. Ponieważ wątpię, czy DSP by to działało, najłatwiejszą rzeczą byłaby FPGA. Najtrudniejszym sposobem byłoby oczywiście wyprodukowanie dla Ciebie rzeczywistego, fizycznego układu, który jest niewiarygodnie drogi. http://www.csee.umbc.edu/~olano/s2002c36/ch02.pdf

Gwiazda Pustki
źródło
5

Jedną z odpowiedzi, których tu nie ma, jest akwizycja danych. Jeśli chcesz użyć ADC do próbkowania sygnału (na przykład sygnału RF) przy 200 MHz i przetwarzania go, mikrokontroler po prostu nie będzie w stanie przetworzyć danych wystarczająco szybko. Typowa karta DAQ FPGA odbiera, filtruje, wykonuje DDC i przesyła dane RF do CPU na znacznie niższej częstotliwości. Układy FPGA mogą także wykonywać operacje FFT i operacje kanałowania na widmie RF.

Inną aplikacją jest routing pakietów, na przykład urządzenie, które zarządza jednym (lub wieloma) interfejsami Ethernet XAUI działającymi z prędkością 10 Gb / s każdy. Te układy FPGA filtrują i planują kolejki pakietów dla różnych miejsc docelowych. Mikrokontroler / konwencjonalny procesor nie byłby w stanie obsłużyć przepustowości tych interfejsów.

stanri
źródło
4

Podstawowym powodem, dla którego mikroprocesory i mikrokontrolery mogą zrobić tak wiele przy stosunkowo niewielkiej ilości obwodów, jest to, że jeśli mikro musi wykonać tylko skomplikowane obliczenia 1000 razy na sekundę i zajmuje to 20 mikrosekund (więc mikro będzie działać na obliczeniach 2 % czasu), większość sprzętu, który byłby wykorzystany do tego obliczenia, może być wykorzystana do innych celów, pozostałe 98% czasu. Mikrokontrolery mogą zatem wykorzystywać niewielką ilość sprzętu do wykonywania bardzo dużej liczby różnych funkcji, o ile funkcje te nie są potrzebne jednocześnie.

Ilość obwodów w FPGA często będzie porównywalna z mikrokontrolerem (FPGA różnią się wielkością o kilka rzędów wielkości, podobnie jak mikrokontrolery, ale zakresy się pokrywają). Jednak w odróżnieniu od mikrokontrolera, którego elementy obwodu zostaną połączone w taki sposób, aby ułatwić korzystanie z nich do wielu niejednoczesnych zadań, układ FPGA zostanie zaprojektowany w taki sposób, aby część jego obwodu przeznaczać na różne zadania „w pełnym wymiarze godzin”. Gdyby ktoś chciał, aby mikrokontroler zliczał liczbę impulsów występujących na każdym ze 100 wejść, ograniczałoby się to do zliczania impulsów, które byłyby na tyle powolne, że kontroler byłby w stanie obsłużyć je sekwencyjnie, indywidualnie - gdyby wszystkie wejścia mogły pulsować niezależnie, nawet szybki kontroler miałby problemy z liczeniem więcej niż kilku tysięcy impulsów na sekundę na wejście. Natomiast

supercat
źródło
1

FPGA implementuje sprzętowe układy logiczne lub blok funkcjonalny, teoretycznie może implementować cokolwiek zechcesz. Te bloki działają jednocześnie, mało prawdopodobne, aby konwencjonalny MCU działał programowanie linia po linii. Dlatego wydajność FPGA jest znacznie lepsza niż MCU, ale wymaga znajomości języka HDL lub VHDL, który różni się od języka programowania pod względem składni, stylu i koncepcji.


Jak powiedziałem, może implementować wszystko, dlatego nie jest zaskoczeniem, że możesz zaimplementować MCU z blokiem funkcjonalnym, aby ułatwić rozwój z wysoką wydajnością. Xilinx udostępnia blok funkcjonalny dla wbudowanego MCU, zwany Microblaze. Dlatego możesz również uruchamiać program systemowy osadzony w FPGA.


Na przykład chcesz zaimplementować programowalny korektor dźwięku, a najcięższą część obliczeniową, taką jak FFT, można zaimplementować za pomocą bloku funkcjonalnego zamiast uruchamiania oprogramowania. Ale niektóre proste zadania, takie jak LCD, interfejs I / O mogą być wykonane przez MCU. FPGA pozwala mieć jednocześnie wbudowany system i sprzętowe bloki funkcjonalne MCU.

Lee Timothy
źródło