Przeczytałem ten post i nie odpowiada w całości na moje pytanie:
Uważam mikrokontroler za coś, co ma trochę pamięci, rejestruje i może przetwarzać zestaw instrukcji, takich jak ŁADUJ, ZAPISUJ i DODAJ. Zawiera bramki logiczne i tym podobne, aby spełniać swoją rolę, ale jego głównym zadaniem jest być uniwersalnym procesorem bitów. Myślę, że Microntroller to system połączonych projektów ASIC, umożliwiający przechowywanie i przetwarzanie instrukcji.
Myślę o urządzeniu ASIC jako obwodzie, który został specjalnie skonstruowany przy użyciu komponentów logicznych i elektrycznych do wykonania jednego zadania, bez żadnych innych zadań ani dodatkowego sprzętu.
Myślę o urządzeniu FPGA jako urządzeniu ASIC (urządzenie niskiego poziomu) + kilka niewykorzystanych rzeczy, które zostały wykorzystane do zaimplementowania określonej tabeli prawdy.
Pomimo swojej nazwy, FGPA wydaje się bardzo „specyficzna dla aplikacji”, ponieważ musi zostać ponownie okablowana, aby wykonać nowe i inne zadanie. Prowadzi to do pomylenia z ASIC. Jednak w przypadku zmiany układu FPGA powinien być obecny cały niezbędny sprzęt. Ponadto układy FPGA mają być programowalne, ale czy nie do tego służy mikrokontroler?
W powyższym poście wspomniałem również o HDL, który znam. Czy nie można używać HDL zarówno dla ASIC, jak i FPGA oraz przez proxy do zaprojektowania całego mikrokontrolera?
źródło
Odpowiedzi:
ASIC vs FPGA
Programowalną macierz bramek polowych można postrzegać jako etap prototypowania układów scalonych specyficznych dla aplikacji: układy ASIC są bardzo drogie w produkcji, a po ich wykonaniu nie ma cofania się (ponieważ najdroższym stałym kosztem są maski [wzornik produkcji ” „] i ich rozwój). Układy FPGA są wielokrotnie programowalne, jednak ze względu na to, że do osiągnięcia celu podłączony jest ogólny zestaw bramek, nie jest on zoptymalizowany jak układy ASIC. Ponadto układy FPGA są urządzeniami natywnie dynamicznymi, ponieważ po wyłączeniu zasilania tracisz nie tylko bieżący stan, ale także konfigurację. Obecnie istnieją płyty, które dodają układ FLASH i / lub mikrokontroler, aby załadować konfigurację podczas uruchamiania, więc jest to mniej ważny argument. Zarówno ASIC, jak i FPGA mogą być konfigurowane za pomocą języków opisu sprzętu, a czasami FPGA są używane do produktu końcowego. Ale generalnie ASIC uruchamiają się, gdy projekt jest naprawiony.
FPGA vs mikrokontroler
Jeśli chodzi o różnicę między mikrokontrolerem a układem FPGA, możesz uznać mikrokontroler za układ ASIC, który zasadniczo przetwarza kod w pamięci FLASH / ROM sekwencyjnie. Możesz tworzyć mikrokontrolery z układami FPGA, nawet jeśli nie są zoptymalizowane, ale nie odwrotnie. Układy FPGA są podłączone podobnie jak układy elektroniczne, dzięki czemu można mieć naprawdę równoległe obwody, a nie w mikrokontrolerze, w którym procesor przeskakuje z fragmentu kodu do drugiego, aby symulować wystarczająco dobrą równoległość. Ponieważ jednak układy FPGA zostały zaprojektowane do zadań równoległych, pisanie kodu sekwencyjnego nie jest tak łatwe jak w mikrokontrolerze.
Na przykład, zazwyczaj jeśli piszesz w pseudokodzie „niech C będzie A XOR B”, na FPGA, która zostanie przetłumaczona na „zbuduj bramkę XOR z klocków lego (tabele przeglądowe i zatrzaski) i podłącz A / B jako dane wejściowe i C jako wyjście ”, które będzie aktualizowane w każdym cyklu zegara, niezależnie od tego, czy używane jest C. Podczas gdy na mikrokontrolerze, który zostanie przetłumaczony na „instrukcję odczytu - jest to XOR zmiennych pod adresem A i adresem B pamięci RAM, wynik jest przechowywany pod adresem C. Załaduj rejestry jednostek arytmetycznych, a następnie poproś ALU o wykonanie XOR, a następnie skopiuj rejestr wyjściowy pod adres C pamięci RAM ”. Po stronie użytkownika obie instrukcje zawierały 1 linię kodu. Gdybyśmy to zrobili, NASTĘPNIE coś innego, w HDL musielibyśmy zdefiniować proces zwany procesem sztucznego wykonywania sekwencji - niezależnie od kodu równoległego. Natomiast w mikrokontrolerze nie ma nic do zrobienia. Z drugiej strony, aby uzyskać „równoległość” (naprawdę dostrajanie i wyprowadzanie) z mikrokontrolera, trzeba żonglować wątkami, które nie są trywialne. Różne sposoby pracy, różne cele.
W podsumowaniu:
Cóż za szybkie wyszukiwanie po napisaniu tego:
FPGA vs Microcontrollers, na tym forum
źródło
Układy FPGA można „ponownie podłączyć” poprzez przeprogramowanie. FPGA ładuje swoją konfigurację do konfigurowalnych komórek logicznych po włączeniu . Oznacza to, że można go ponownie zaprogramować bez wprowadzania zmian w sprzęcie.
Układy ASIC można podłączyć ponownie tylko poprzez zmodyfikowanie masek fotolitograficznych w odlewni krzemu.
Mikrokontroler jest rodzajem ASIC, który wykonuje program i może w wyniku tego robić rzeczy ogólne. Jeśli jednak chcesz zmienić zestaw instrukcji lub zrobić coś podobnego, musisz zmodyfikować rzeczywisty układ scalony krzemu.
Różnica między FPGA a MCU jest bardziej rozmyta. Zasadniczo tym, czym FPGA jest na poziomie sprzętowym, jest wiele małych komórek SRAM, wszystkie połączone z gęstą macierzą multiplekserów. Zasadniczo FPGA to cały stos dyskretnej logiki, który można elektronicznie „ponownie podłączyć” ** po prostu przez przeprogramowanie multiplekserów i komórek SRAM.
Jako taki, możesz faktycznie zaimplementować MCU w FPGA, ponieważ MCU to tylko pewna konfiguracja komórek logicznych. W rzeczywistości układy FPGA są bardzo często stosowane w procesie projektowania MCU.
Mikrokontroler to implementacja określonej konfiguracji logicznej. Powodem, dla którego je mamy, jest to, że poprzez wdrożenie MCU bezpośrednio w krzemie, ogólna ilość wymaganej przestrzeni matrycy krzemowej może zostać znacznie zoptymalizowana, a niektóre optymalizacje wydajności mogą być wykonane, których zabrania wymagana „ogólność” układu FPGA. Pozwala to znacznie obniżyć koszty produkcji MCU, w wyniku czego wspólna MCU jest znacznie tańsza niż FPGA, która może zawierać równoważną logikę.
Układy FPGA są przydatne w niektórych aplikacjach, ponieważ mogą implementować struktury logiczne w sposób, którego MCU nie mogą. Na przykład, jeśli chcesz dodać X1 + Y1, X2 + Y2, X3 + Y3 i X4 + Y4, MCU będzie musiała wykonać każdą operację po kolei *. FPGA może mieć po prostu 4 oddzielne jednostki ALU w tym samym czasie , więc może wykonać tę samą operację w kwadrans (zakładając, że oba urządzenia są taktowane z tą samą szybkością).
W tym miejscu naprawdę mogą błyszczeć układy FPGA (lub układy ASIC zaprojektowane do tego samego zadania), ponieważ można wykonywać wiele, wiele rzeczy jednocześnie , co pojedynczy proces może wykonywać tylko sekwencyjnie.
* (uwaga: tutaj ignoruję niektóre rzeczy, takie jak SIMD)
źródło
To dobre pytanie
Zasadniczo mikrokontroler i układ ASIC mają sprzęt (często nazywany krzemem), który jest osadzony w kamieniu i nie można go zmienić. Układ FPGA można skonfigurować tak, aby reprezentował wiele różnych rodzajów sprzętu (może to obejmować mikrokontrolery).
Może się wydawać, że mikrokontroler może wykonywać wiele różnych czynności, ale wszystko to odbywa się poprzez uruchamianie różnych programów - technicznie oprogramowania, ale czasami nazywanego oprogramowaniem sprzętowym - sam sprzęt nie zmienia się zasadniczo, wykonuje te same operacje, ale wykonuje inna kolejność z różnymi danymi wejściowymi.
FPGA są zwykle używane do generowania projektów, które są przypisane do ASIC. Różnica między nimi polega na tym, że jeśli chcesz zaktualizować wewnętrzne działanie FPGA lub dodać / usunąć bloki funkcjonalne, wszystko co musisz zrobić, to zaktualizować oprogramowanie układowe, to nie może należy wykonać na układach ASIC, ponieważ wewnętrzne działania zostały poświęcone krzemowi, nie można go ponownie skonfigurować.
Krótko mówiąc, z mikroprocesorem używasz tego samego sprzętu do uruchamiania różnych programów, w FPGA rekonfigurujesz sprzęt do wykonywania różnych funkcji, a układy ASIC są jak mikrokontroler, ponieważ sprzętu nie można zmienić, ale zwykle są zaprojektowane do działania jedna funkcja niezwykle wydajnie.
Zarówno układy ASIC, jak i FPGA mogą zawierać mikrokontrolery, a jeśli tak, możesz pisać dla nich programy tak jak samodzielny mikrokontroler, przykładem tego jest wbudowany procesor Altera NIOS II.
Jeśli nadal jest to mylące, daj mi znać, co jest niejasne, a ja dołożę wszelkich starań, aby wyjaśnić moją odpowiedź.
cygański
źródło
cóż, żaden układ FPGA nie jest programowany przez sygnały elektryczne, jeśli zachowuje się jak określony zestaw bramek, niektóre układy FPGA zawierają pamięć flash do przechowywania tej konfiguracji, niektóre nie i muszą być przeprogramowane po każdym resecie zasilania.
ASIC zjeżdża z już skonfigurowanej linii produkcyjnej.
Błędy FPGA można naprawić za pomocą aktualizacji oprogramowania układowego, błędów ASIC nie można ekonomicznie naprawić.
źródło
To jest przeciwieństwo tego, co oznacza „specyficzny dla aplikacji”. Możesz użyć FPGA dla więcej niż jednej aplikacji, ponownie ją instalując. Nie można zmienić ASIC, więc można go zastosować tylko do jednego zadania (tym zadaniem może być implementacja mikrokontrolera).
Nie jestem pewien, co to oznacza. Zwykle jest interfejs oprogramowania do przeprogramowania FPGA. Jest to układ ASIC, który wymaga milionów sprzętu [jednostek walutowych].
Mikrokontroler pozwala programować oprogramowanie sekwencyjne dla ustalonego sprzętu. Podobnie jak normalny komputer, ale bardzo mały i ograniczony pod względem zasobów. FPGA pozwala zaprogramować dowolny sprzęt za pomocą HDL.
źródło