Podręcznikowy 32-bitowy rdzeń procesora RISC, który może obsługiwać Linuksa w wersji bez mmu, tak naprawdę nie musi być tak duży - prawdziwym zasobem, którego potrzebujesz, jest znacznie więcej pamięci RAM (10s megabajtów) niż dostępne w jakimkolwiek FPGA, więc Prawdopodobnie będę chciał SDRAM na płycie i kontrolera do tego w FPGA.
To powiedziawszy, jeśli chcesz czegoś więcej niż trywialny poziom wydajności, prawdopodobnie potrzebujesz rdzenia z pewnymi optymalizacjami (potokowanie itp.), A to zaczyna nieco zwiększać rozmiar. Dodanie pełnego mmu sprawi, że alokacja pamięci będzie bardziej wydajna i umożliwi normalne zachowanie fork () kopiowania przy zapisie.
Obaj główni dostawcy FPGA mają miękkie rdzenie procesorów z dostępnymi portami Linux - Microblaze dla Xilinx, Nios II dla Altera. Prawdopodobnie powinieneś przeczytać ich dokumenty, aby uzyskać szczegółowe zalecenia dotyczące platformy, ponieważ jest to oczywiście cel, który porusza się z czasem. Konstrukcja rdzenia innej firmy może być nieco większa dla podobnej wydajności, jeśli jest napisana w bardziej przenośny sposób i nie jest specjalnie zoptymalizowana dla danej rodziny FPGA.
Historycznie dostępne były układy scalone, które łączyły zarówno twardy rdzeń procesora (często powerpc), jak i region konfigurowalnej tkaniny FPGA. Inną opcją jest osobny procesor (prawdopodobnie ARM) na tej samej płytce co FPGA.
Wiele decyzji będzie zależeć od tego, jak mocno trzeba połączyć procesor z FPGA. Jeśli możesz zredukować problem do rejestrów konfiguracji i strumienia danych, może być tak modułowy, jak zawieszenie karty FPGA z szybkim układem USB poza portem USB wbudowanej płyty linux, takiej jak BeagleBoard lub RasberryPi. Aby uzyskać ściślejszą integrację, możesz chcieć FPGA na tej samej płycie i umieszczonej na zewnętrznej szynie procesora. Lub przy niskich prędkościach transmisji danych, umieszczenie interfejsu rejestru SPI w FPGA jest banalne, a interfejsy UART są całkowicie wykonalne, choć nieco trudniejsze.
Wreszcie pojawia się pytanie, czy rzeczywiście potrzebujesz pełnego systemu operacyjnego, takiego jak Linux, czy też wbudowany stos TCP o większym rozmiarze „mikrokontrolera” rozwiązałby Twój problem, wymagając mniej pamięci.