Ostatnio złożyłem dla klienta przetwornicę wysokiego napięcia i przez cały czas projektowania starałem się unikać użycia mikrokontrolera (MCU). Gdy klient chciał dodać do płytki funkcję ściemniania, byłem zmuszony dodać mały komponent z pamięcią EEPROM o cyklu życia 100 000. Dla mnie to nie było wielkim problemem, ponieważ wydanie 0,33$ na płytę, aby dodać tę funkcję, jednocześnie umożliwiając późniejszą rekonfigurację systemu, było prostą sprawą. To skłoniło mnie do zastanowienia się nad interesującym pytaniem: kiedy powinieneś wybrać FPGA zamiast MCU?
Projektanci, z którymi pracuję, żyją i oddychają modułami/SoCami MCU firmy Arm, STM, TI i Nordic, głównie dzięki wsparciu producenta poprzez SDK. A co z FPGA? Czy można oczekiwać tego samego poziomu wsparcia i czy powinieneś użyć FPGA do wbudowanego komponentu? Odpowiedź na tego typu pytanie nie zawsze jest prosta. Oto, co powinieneś rozważyć, wybierając między FPGA a MCU oraz gdzie możesz znaleźć nowe komponenty do swoich płyt.
Pamiętam, kiedy zacząłem poważnie pracować w projektowaniu elektroniki i zacząłem czytać przez zupę z literowych skrótów różnych komponentów. Na początku trudno było dostrzec różnice między niektórymi procesorami cyfrowymi, ale zrozumienie ograniczeń każdego komponentu dla różnych zastosowań bardzo mi się przydało. Ograniczenia tego, co można zaprogramować w tych procesorach, były również kluczowe dla zrozumienia, kiedy wybrać każdy typ komponentu.
Zaraz omówię te aspekty, ale czasami dostaję od młodszych projektantów okazjonalne pytanie: czym są FPGA i MCU? Oba zapewniają moc obliczeniową, więc muszą być idealnymi zamiennikami, prawda? To zależy od aplikacji, którą musisz wykonać.
Aby zrozumieć różnice między komponentami FPGA a MCU, warto porównać je z ASIC. Litera „A” w ASIC mówi ci, że komponent jest zaprojektowany dla konkretnej aplikacji w większym systemie. Przykłady obejmują:
Lista ciągnie się dalej. Każdy ASIC zapewnia bardzo specyficzne, czasami programowalne funkcje dla wąskiego zakresu zadań. Poziom integracji w ASIC również różni się w zależności od układu. Mikrokontroler również jest w pewnym stopniu programowalny, chociaż zadania, które można wykonać, są szersze niż te wbudowane w firmware ASIC. MCU są zbudowane, aby być elastyczne i wykonywać dowolne zadanie, które możesz zaprogramować w urządzeniu za pomocą SDK producenta.
Zabawa i komplikacje pojawiają się przy FPGA. Lubię myśleć o FPGA jak o konfigurowalnych ASIC. Jeśli oksymoron Cię drażni, wiedz tylko, że FPGA można użyć jako część prototypowania podczas projektowania ASIC. Wynika to z faktu, że wszystkie bloki logiczne na FPGA są konfigurowalne (są to w zasadzie komórki SRAM). Budujesz firmware od podstaw i możesz zdefiniować, jak zadania są wykonywane na urządzeniu na poziomie sprzętowym. To coś, czego nie możesz zrobić z MCU lub ASIC.
FPGA vs. MCU vs. ASIC: specyficzne vs. ogólne spektrum.
Zabawne jest to, że SoC mogą być od specyficznych do ogólnych pod względem możliwości obliczeniowych. Producenci komponentów przypisują termin „SoC”, „SoM” lub „SiP” do nowego układu scalonego, który wykonuje szereg zadań, pod warunkiem, że te zadania wcześniej wymagały wielu oddzielnych układów scalonych. Te komponenty są wysoko zintegrowane i mogą znajdować się gdziekolwiek na spektrum specyficzności vs. ogólności.
Gdzieś po prawej stronie od FPGA na powyższej grafice znajdowałyby się MPU. Te urządzenia uruchamiają system operacyjny, łączą się z wieloma peryferiami i są końmi roboczymi ogólnego przeznaczenia. Niektórzy mogą argumentować, że MCU i FPGA powinny zamienić się miejscami pod względem ogólności (zobacz dlaczego poniżej), ale ani FPGA, ani MCU nie są zaprojektowane do tego samego typu ogólnego obliczeń co MPU.
Poniższa tabela przedstawia krótkie porównanie niektórych najważniejszych aspektów MCU i FPGA. Każdy typ komponentu ma swoje zalety i to od projektanta zależy, który będzie najlepszy dla ich systemu. Osobiście wolę MCU, ponieważ mam trochę doświadczenia w pracy w C i nigdy nie uczyłem się HDL. Jednak FPGA można zaprogramować tak, aby miały niektóre z tych samych funkcji co specjalistyczne ASIC, pod warunkiem, że wiesz, jak je kodować.
| | FPGA | MCU | | ---------- | ---------- | ---------- | | Programowanie ponowne| W pełni reprogramowalne na poziomie sprzętowym | Zależy: opiera się na wbudowanym systemie operacyjnym, dynamiczne | | Czas programowania | Dłuższy: wymaga ponownego kodowania i kompilacji wszystkiego do kodu maszynowego | Krótszy: wspomagany przez SDK i biblioteki producenta | | Łatwość programowania | Postrzegane jako mające stromszą krzywą uczenia się | Łatwe: każdy znający powszechne języki może programować | | Zużycie energii | Wyższe | Niższe | | Równoległość | Może być konfigurowana podczas programowania | Ograniczona przez architekturę sprzętową | | Punkt stały vs. zmiennoprzecinkowy | Konfigurowane dla punktu stałego, ale punkt zmiennoprzecinkowy może być implementowany podczas programowania | Dostępne oba | | Języki | Język opisu sprzętu (HDL) | Język C/Assembly, inne jeśli wspierane przez RTOS (np. Python) |
Ponieważ FPGA są często postrzegane jako trudne do programowania przez nowych deweloperów, MCU jest zwykle uważane za najlepszy procesor dla urządzenia wbudowanego. W dużej mierze przyczyniła się do tego społeczność open source, a niektóre projekty open source mogą być używane jako podstawowa architektura lub dowód koncepcji dla nowego produktu. Dodając do tego wsparcie od producentów, masz do dyspozycji mnóstwo narzędzi do programowania MCU.
Pomimo krzywej uczenia się w programowaniu FPGA, są one znacznie bardziej konfigurowalne pod względem architektury firmware. Parallelizację można zaprogramować w urządzeniu, w zależności od liczby dostępnych LUT i ALU. To sprawia, że FPGA są świetnym wyborem, gdy firmware musi być zaprojektowany dla bardzo specyficznych zastosowań. Przykłady obejmują wnioskowanie w AI, przetwarzanie obrazów, algorytmy sterowania sprzętem i inne zadania wymagające powtarzalnych (lub równoległych) obliczeń.
Twój następny system wbudowany nie ruszy z miejsca bez odpowiednich komponentów, a potrzebne komponenty możesz znaleźć, korzystając z wyszukiwarki części elektronicznych takiej jak Octopart. Zaawansowane funkcje filtracji pomagają zawęzić wybór do potrzebnych komponentów i mogą pomóc szybko wybrać między FPGA a MCU dla Twojego następnego systemu. Możesz znaleźć FPGA i MCU na Octopart.
Bądź na bieżąco z naszymi najnowszymi artykułami, zapisując się na nasz newsletter.