Po co wdrażać mikrokontroler w FPGA?

16

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?

James C.
źródło
Wiele z nich korzysta z rdzeni IP w puszkach, jednak samodzielne rozwijanie może być świetnym doświadczeniem.
Chris Stratton,
1
@ChrisStratton - Czy możesz powiedzieć więcej lub zamieścić link na temat rdzeni IP w puszkach? Tak, jestem pewien, że może to być wspaniałe doświadczenie edukacyjne. Ale to jeden z powodów, dla których zadaję to pytanie. Zastanawiam się, czy to coś więcej niż tylko nauka.
James C
1
Większość ludzi, którzy to robią, używa czegoś takiego jak Microblaze, Picobloze, Nios II itp. - są to w zasadzie projekty procesorów „w puszce” (biblioteka), na które można uzyskać licencję i umieścić w swoim projekcie. Kontrastem byłoby opracowanie go samemu w źródle HDL, być może na podstawie schematu blokowego przedstawionego w typowym wykładzie CS101. Istnieje szereg interesujących praktycznych zagadnień, z którymi należy walczyć, zmieniając rysunek wykładu w działający sprzęt.
Chris Stratton,
1
Zobacz Otwarte rdzenie, aby uzyskać wiele przykładów rdzeni procesora typu open source.
RBerteig
3
Mam przykład. Mieliśmy przestarzały mikrokontroler dla starego produktu. Nie znaleźliśmy odpowiedniego zamiennego mikrokontrolera z odpowiednią mieszanką urządzeń peryferyjnych. Wykorzystanie FPGA z wbudowanym procesorem pozwoliło nam na wdrożenie naszej idealnej kombinacji urządzeń peryferyjnych na FPGA.
kkrambo

Odpowiedzi:

24

Korzyści:

  • niezwykle szybki interfejs między mikrokontrolerem a dowolnym niestandardowym interfejsem lub układem logicznym we / wy.
  • konfigurowalne interfejsy procesora i debugowania
  • często też łatwiejsza logika sterowania niż pisanie kodu sterującego, powiedzmy, VHDL

Wady:

  • Być może potrzebny jest droższy układ FPGA, aby zmieścić zarówno mikrokontroler, jak i niestandardową logikę, w porównaniu do zwykłej logiki FPGA
  • Być może trudniejsze do wdrożenia, szczególnie w przypadku pamięci i jeśli rdzeń jest złożony, niż gotowy mikrokontroler na oddzielnym układzie.
PkP
źródło
3
Dodatkowa korzyść: prostsza konstrukcja, jeden chip mniej.
DoxyLover,
4
Dodatkowe wady: licencjonowanie więcej adresów IP
Michaił
Co powiesz na zużycie energii jako wadę?
Craig McQueen
@CraigMcQueen Teoretycznie możliwe jest wygenerowanie mikrokontrolera w układzie FPGA, który nie został jeszcze wyprodukowany jako samodzielny sprzęt. W takim przypadku nie ma zużycia energii do porównania. W każdym razie jest to zbyt specyficzne dla urządzenia, aby mogło być ogólną zaletą / minusem.
Maszt
Wszystkie bardzo dobre komentarze. Cóż, powiedziałbym, że generalnie FPGA mają duży pobór mocy, ponieważ wykorzystanie logiki jest zwykle bardzo dalekie od 100% w obrębie makrokomórki. Jest to nieco równoważone przez fakt, że układy FPGA mogą wykorzystywać zaawansowane techniki minimalizacji mocy. Procesy produkcyjne (technologie) mogą być dość podobne między układami FPGA i procesorami z tej samej epoki. Procesory mają dedykowane bloki pamięci, a także układy FPGA. To, czy odpowiadają one Twoim potrzebom, zależy od tego, czy masz szczęście znaleźć układ FPGA, który dokładnie odpowiada Twoim potrzebom.
PkP
26

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.

Majenko
źródło
10
Pierwsze zdanie tej odpowiedzi jest głównym powodem. Dzieje się tak głównie wtedy, gdy masz już układ FPGA z pewną wolną mocą na płycie. (Przynajmniej) jeden mniej żetonów i mniej złożoności kart. Nie umieściłbyś układu FPGA na płycie tylko po to, aby zaimplementować z nim mikrokontroler, ale gdy masz już układ FPGA, jest to dobry sposób na obniżenie kosztów części i złożoności płyty. Przynajmniej dlatego to robimy.
reirab
13

W uzupełnieniu do odpowiedzi Majenko i PkP:

Ten trend osadzania procesora w konstrukcji FPGA doprowadził do powstania kilku heterogenicznych systemów, takich jak:

  • Rodzina Zynq-7000 Xilinx
  • Układy FPGA Altera Arria / Cyclon / Stratix SoC
  • SmartFusion FPGA MicroSemi

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: PSoC

Paebbels
źródło
10

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.

Cort Ammon - Przywróć Monikę
źródło
9

Istnieje kilka ważnych powodów tworzenia instancji mikroprocesora lub mikrokontrolera w układzie FPGA. Oto trzy:

  1. 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.

  2. 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.

  3. 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.

Steven Leibson
źródło
Serdecznie witamy, Steven!
PkP
1
Dobra odpowiedź, ale kto potrzebuje maszyny stanów, która poradzi sobie z interuptami? Przerwania są złem koniecznym dla procesorów pobierania-dekodowania-wykonywania, ponieważ obsługa bodźca zewnętrznego wymaga wyłącznego użycia procesora do uruchomienia ISR. W FPGA bodziec zewnętrzny jest obsługiwany w oddzielnym bloku logicznym, podczas gdy maszyna stanu również kontynuuje działanie; nie ma potrzeby zapisywania i przywracania stanu. Zasadniczo przerwania są niedoskonałym rozwiązaniem problemu, którego HDL nie ma w pierwszej kolejności.
Ben Voigt,
Oczywiście masz rację, jeśli chodzi o maszyny stanowe zaimplementowane sprzętowo, Ben. Zawsze możesz połączyć pin „przerwać” jako kolejne wejście maszyny stanu. Jednak wiele złożonych automatów stanów jest po prostu bardziej zrozumiałych, gdy są implementowane z procesorem działającym w C, lub przynajmniej bardziej zrozumiałym dla niektórych programistów. To wtedy potrzebujesz przerwy.
Steven Leibson
2

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

shuckc
źródło