Obecnie „badam” układy FPGA, co mogą zrobić, jak to robią itp.
W więcej niż jednym miejscu ( na przykład tutaj ) widziałem projekty, które wdrażają prosty mikrokontroler z FPGA.
Więc moje pytanie:
chciałbym wiedzieć, jaki jest cel robienia takich wdrożeń? Po co używać mikrokontrolera zaimplementowanego w FPGA zamiast mikroprocesora na pokładzie? Jakie są korzyści? A może także jakie są wady?
microcontroller
fpga
design
James C.
źródło
źródło
Odpowiedzi:
Korzyści:
Wady:
źródło
Jeśli twój projekt będzie wykorzystywał układ FPGA do pracy z pomrukiem, a ma on wolną pojemność, dlaczego miałbyś kosztować dodatkowy układ, skoro możesz go po prostu zaimplementować w układzie FPGA?
W wielu środowiskach kontroli procedur może być znacznie łatwiej zaimplementować wymaganą konfigurację w języku takim jak C, niż próbować to zrobić w VHDL lub Verilog. Dodając mikrokontroler do układu FPGA, uzyskujesz to, co najlepsze z obu światów - moc VHDL / Verilog itp. Dla systemów logicznych i interfejsowych oraz prostotę języka proceduralnego dla podstawowych systemów sterowania i zarządzania.
źródło
W uzupełnieniu do odpowiedzi Majenko i PkP:
Ten trend osadzania procesora w konstrukcji FPGA doprowadził do powstania kilku heterogenicznych systemów, takich jak:
Na rynku dostępny jest również układ FPGA Intel Atom + Altera: http://www.altera.com/devices/processor/intel/e6xx/proc-e6x5c.html
Większość darmowych mikrokontrolerów dla FPGA cierpi na złe wsparcie łańcucha narzędzi. Wbudowane procesory ARM są wyposażone w obsługę śledzenia / debugowania, kompilatory (łańcuch narzędziowy gcc) i pełną obsługę linuksa. Oto ankieta przedstawiona na FPL 2014: http://dx.doi.org/10.1109/FPL.2014.6927482
Edycja 1:
Istnieje również klasa urządzeń PSoC (Programmable System on Chip) firmy Cypress. Urządzenia te obejmują mikrokontroler (M8C, 8051, ARM Cortex M0 lub Cortex M3) oraz klasyczne zintegrowane kontrolery We / Wy lub urządzenia SoC (I²C, SPI, Timer, CAN, DAC, ADC, OpAmp, ...) oraz programowalne część. Ta część nie jest tak programowalna, jak klasyczne układy FPGA, ale można jej użyć do implementacji dodatkowych kontrolerów I / O lub wbudowanych akceleratorów sprzętowych. PSoC pozwala na wykorzystanie komponentów analogowych w projekcie.
http://www.cypress.com/psoc/?source=CY-ENG-HEADER
Omówienie PSoC:
źródło
Jeśli potrzebujesz tylko mikrokontrolera i nie posiadasz układu FPGA, byłoby niezwykłe użycie układu FPGA z oprogramowaniem układowym mikrokontrolera. Jednak nie wszystkie projekty rozwijają się w tym kierunku. Wiele zadań ma wyraźną potrzebę FPGA, ale ostatecznie natrafia na zadanie, które tak naprawdę nie jest odpowiednie dla rozwiązania VHDL. Czasami problem najlepiej rozwiązać procesor ogólnego przeznaczenia. Lub czasami jest na odwrót: niektóre zadania po prostu nie są odpowiednie dla procesora ogólnego przeznaczenia - wymagają równoległości.
W tym momencie masz wybór. Możesz albo dodać dodatkowy układ do swojego urządzenia, albo uświadomić sobie, że masz kilka zapasowych bramek na FPGA, których nie używasz. Licencjonuj trochę adresu IP, a będziesz mógł mieć działający procesor ogólnego przeznaczenia w mgnieniu oka!
Innym interesującym szczegółem jest to, że możesz dostosować niektóre oprogramowanie wewnętrzne mikrokontrolera. Wiem o projektach, w których osadzono Power PC, ale usunięto wszystkie bramki potrzebne do obsługi zmiennoprzecinkowej i spory fragment prognozy gałęzi. Dzięki temu jest wystarczająco mały, aby zmieścić się obok oprogramowania układowego opartego na VHDL.
źródło
Istnieje kilka ważnych powodów tworzenia instancji mikroprocesora lub mikrokontrolera w układzie FPGA. Oto trzy:
Chcesz tylko dowiedzieć się o działaniu procesora. Układy FPGA dają nieograniczone możliwości sprawdzania, co dzieje się wewnątrz procesora podczas wykonywania kodu. To jest tylko do nauki.
Wdrażasz duży system, który wymaga szybkości FPGA na poziomie sprzętowym (szybszej niż oprogramowanie wykonujące się na mikroprocesorze), ale twój projekt wymaga złożonej maszyny stanów, którą można łatwiej zaimplementować za pomocą oprogramowania działającego na prostym procesorze, takim jak Xilinx PicoBlaze niż w sprzętowym FSM. Zauważ, że PicoBlaze może działać tak szybko, jak 240 MHz w najnowszych technologiach procesowych FPGA i że procesor PicoBlaze wykonuje instrukcje co dwa cykle zegara, dzięki czemu otrzymujesz szybką, spójną maszynę stanu, którą łatwo zaprogramować w oprogramowaniu.
Rozwijając (2), potrzebujesz maszyny stanów, która może obsługiwać przerwania. Procesory są do tego naprawdę dobre, ponieważ już wiedzą, jak bezpiecznie zapisać i przywrócić stan przed i po obsłudze przerwania.
Oto jedno zastrzeżenie: jeśli chcesz szybkiego procesora ze standardowym zestawem instrukcji i dużym ekosystemem programistycznym, to potrzebujesz szybkiego, twardego procesora, takiego jak dwa ARM Cortex-A9 w Xilinx Zynq SoC. Struktura FPGA w Zynq SoC nadal pozwala na tworzenie większej liczby rdzeni procesorów w logice programowalnej, ale ARM Cortex-A9s mogą obsługiwać standardowe systemy operacyjne, takie jak Linux i standardowe środowiska IDE, takie jak Android.
Pomiędzy ARM Cortex-A9 i PicoBlaze istnieje wiele miękkich procesorów, które można zaimplementować za pomocą programowalnej logiki z wielu źródeł. Niektórzy ludzie lubią toczyć własne procesory, co jest świetną działalnością edukacyjną. Mikroprocesory potrzebują jednak narzędzi programistycznych, a ich tworzenie / debugowanie wymaga większego wysiłku niż tworzenie samego procesora. Zawsze musisz rezygnować z możliwych korzyści niestandardowego mikroprocesora w stosunku do czasu i wysiłku potrzebnego do stworzenia / debugowania rdzenia procesora i narzędzi.
Pełne ujawnienie: Pracuję dla Xilinx, ale jestem prawie pewien, że nie powiedziałem, że FPGA są zawsze rozwiązaniem. Jeśli 50-centowy mikrokontroler może wykonać to zadanie, lepiej skorzystaj z tego. Układy FPGA i Zynq SoC są przeznaczone do projektów wymagających ciężkiego podnoszenia poza możliwości mikrokontrolerów.
źródło
Czasami możesz użyć układu FPGA, ponieważ masz oprogramowanie działające na przestarzałym i niedostępnym fizycznym procesorze, który chcesz wskrzesić. Chociaż nie jest kompatybilny z pinami (chociaż zaobserwowano mocowania w stylu DIP), pozwala to na dokładność cyklu. Jest mało prawdopodobne, aby była to czysta emulacja oprogramowania mikroprocesora towarowego. Na przykład apple2fpga
źródło