FPGA es un procesador masivo de grano fino. Puede emular millones de puertas lógicas en paralelo. Pero, debido a que su circuito lógico es simulado / emulado en lugar de nativo / físico, se ejecuta 10 veces más lento que el verdadero ASIC (por ejemplo, ARM). Por lo tanto, si desea programar un solo proceso secuencial (yo lo llamo computación dominada por el control), entonces utiliza una CPU. Si necesita simular un circuito de muchas puertas diminutas (también son procesos, pero muy pequeñas y grandes en número), entonces necesita un FPGA. Si puede paralizar su tarea en una gran cantidad de pequeños procesos, entonces necesita FPGA. Si tiene 1, 2 o 3 procesos (cuántos núcleos tiene en su procesador), utilice la CPU. Básicamente, necesita un FPGA cuando necesita simular un circuito lógico (también conocido como digital). La sugerencia es: si tiene su descripción en HDL, entonces necesita FPGA. Si tiene un programa C / ASM, busque ARM.
Si no necesitaba el alto rendimiento, entonces, por ejemplo, planea 100 millones de operaciones lógicas únicas cada segundo y no más, y luego utiliza ARM. Por otro lado, si necesita operaciones lógicas de kilos y millones en cada ciclo de reloj (millones de ciclos por segundo), entonces necesita FPGA.