FPGA vs. MCU: Quale processore dovresti usare?

Creato: giugno 18, 2020
Aggiornato: luglio 1, 2024
fpgavcmu wide

Di recente ho assemblato un convertitore di tensione ad alta potenza per un cliente e, durante la progettazione, ho cercato di evitare l'uso di un MCU. Quando il cliente ha voluto aggiungere la funzione di dimmerazione alla scheda, sono stato costretto ad aggiungere un piccolo componente con una EEPROM da 100.000 cicli. Per me, questo non è stato un grosso problema poiché era semplice spendere $0,33 per scheda per aggiungere questa funzione, permettendo anche al sistema di essere riconfigurato in seguito. Questo mi ha fatto riflettere su una domanda interessante: quando dovresti scegliere un FPGA rispetto a un MCU?

I progettisti con cui lavoro vivono e respirano moduli/SoC MCU di Arm, STM, TI e Nordic, grazie soprattutto al supporto dei produttori tramite SDK. E per gli FPGA? Puoi aspettarti lo stesso livello di supporto e dovresti scegliere di usare un FPGA per un componente embedded? La risposta a questo tipo di domanda non è sempre semplice. Ecco cosa dovresti considerare quando selezioni un FPGA rispetto a un MCU e dove puoi trovare nuovi componenti per le tue schede.

Capacità FPGA vs. MCU

Ricordo quando ho iniziato a lavorare seriamente nel design elettronico e ho iniziato a leggere l'alfabeto degli acronimi per i diversi componenti. All'inizio era difficile vedere le differenze tra alcuni processori digitali, ma capire i limiti di ciascun componente per diverse applicazioni mi ha servito bene. I limiti di ciò che puoi programmare in questi processori sono stati anche critici per capire quando scegliere ciascun tipo di componente.

Entrerò in questi aspetti tra poco, ma a volte ricevo ancora la domanda occasionale da un designer più giovane: cosa sono gli FPGA e gli MCU? Entrambi forniscono potenza di calcolo, quindi devono essere sostituti perfetti, giusto? Dipende dall'applicazione che devi eseguire.

Per avere un'idea delle differenze tra componenti FPGA vs. MCU, aiuta confrontarli con gli ASIC. La "A" in ASIC ti dice che il componente è progettato per un'applicazione specifica all'interno di un sistema più grande. Esempi includono:

La lista potrebbe continuare ancora. Qualsiasi ASIC fornirà funzioni molto specifiche, a volte programmabili, per un ristretto intervallo di compiti. Il livello di integrazione in un ASIC varia anche da chip a chip. Un microcontrollore è anche programmabile fino a un certo punto, sebbene i compiti che possono essere eseguiti sono più ampi di quanto è incorporato nel firmware di un ASIC. Gli MCU sono costruiti per essere adattabili e eseguire qualsiasi compito tu possa programmare nel dispositivo con l'SDK del produttore.

Il divertimento e la complicazione arrivano con gli FPGA. Mi piace pensare agli FPGA come ASIC personalizzabili. Se l'ossimoro ti disturba, sappi solo che potresti usare un FPGA come parte del prototipo quando progetti un ASIC. Questo perché tutti i blocchi logici su un FPGA sono configurabili (sono sostanzialmente celle SRAM). Stai costruendo il firmware da zero, e puoi definire come vengono eseguiti i compiti sul dispositivo a livello hardware. Questo è qualcosa che non puoi fare con un MCU o ASIC.

Confronto tra componenti FPGA e MCU

FPGA vs. MCU vs. ASICs: lo specifico vs. lo spettro generico.

Che dire di SoCs/SiPs/SoMs?

La cosa divertente dei SoCs è che possono variare da specifici a generici in termini di capacità computazionali. I produttori di componenti attaccheranno il termine “SoC,” “SoM,” o “SiP” a un nuovo circuito integrato che esegue una gamma di compiti, purché quei compiti richiedessero in precedenza più circuiti integrati separati. Questi componenti sono altamente integrati, e possono cadere ovunque nello spettro specifico vs. generico.

MPUs: Ancora Più Generici

Da qualche parte a destra dell'FPGA nella grafica sopra ci sarebbero gli MPUs. Questi dispositivi eseguono un sistema operativo, interfacciano con molteplici periferiche, e sono i cavalli di battaglia del calcolo generico. Alcuni potrebbero sostenere che l'MCU e l'FPGA dovrebbero scambiarsi i posti in termini di genericità (vedi perché sotto), ma né un FPGA né un MCU sono progettati per lo stesso tipo di calcolo generico di un MPU.

Scegliere tra FPGA e MCU

La tabella sottostante mostra un breve confronto di alcuni degli aspetti più importanti degli MCU e degli FPGA. Ogni tipo di componente ha i suoi vantaggi, e spetta al progettista determinare quale sia il migliore per il loro sistema. Personalmente, preferisco gli MCU perché ho un po' di esperienza di lavoro in C e non ho mai imparato HDL. Tuttavia, gli FPGA possono essere programmati per avere alcune delle stesse funzioni degli ASIC specializzati, purché tu sappia come programmarli.

| | FPGA | MCU | | ---------- | ---------- | ---------- | | Riprogrammazione| Completamente riprogrammabile a livello hardware | Varia: dipende dal sistema operativo incorporato, dinamico | | Tempo di programmazione | Più lungo: richiede la ricodifica e la ricompilazione di tutto in codice macchina | Più breve: facilitato dagli SDK e dalle librerie del produttore | | Facilità di programmazione | Considerata come avente una curva di apprendimento più ripida | Facile: chiunque sia familiare con i linguaggi comuni può programmare | | Consumo energetico | Maggiore | Minore | | Parallelizzazione | Può essere configurata durante la programmazione | Limitata dall'architettura hardware | | Fisso vs. punto mobile | Configurato per il punto fisso, ma il punto mobile può essere implementato durante la programmazione | Entrambi sono accessibili | | Linguaggi | Linguaggio di descrizione hardware (HDL) | Linguaggio C/Assembly, altri se supportati da RTOS (es. Python) |

Perché gli FPGA sono spesso considerati difficili da programmare dai nuovi sviluppatori, un MCU è tipicamente visto come il miglior processore per un dispositivo embedded. Questo è stato largamente facilitato dalla comunità open source, e alcuni progetti open source possono essere utilizzati come architettura di base o prova di concetto per un nuovo prodotto. Aggiungi a ciò il supporto dei produttori, e hai a disposizione molti strumenti per la programmazione degli MCU.

Nonostante la curva di apprendimento nella programmazione degli FPGA, sono molto più configurabili in termini di architettura del firmware. La parallelizzazione può essere programmata nel dispositivo, a seconda del numero di LUT e ALU disponibili. Questo rende gli FPGA una scelta eccellente quando il tuo firmware deve essere progettato per applicazioni molto specifiche. Esempi includono l'inferenza nell'IA, l'elaborazione delle immagini, gli algoritmi di controllo hardware e altri compiti che richiedono calcoli ripetitivi (o paralleli).

Il tuo prossimo sistema embedded non andrà da nessuna parte senza i componenti giusti, e puoi trovare i componenti di cui hai bisogno quando utilizzi un motore di ricerca di parti elettroniche come Octopart. Le funzioni avanzate di filtraggio ti aiutano a restringere la ricerca ai componenti di cui hai bisogno e possono aiutarti a scegliere rapidamente tra un FPGA vs. MCU per il tuo prossimo sistema. Puoi trovare FPGA e MCU su Octopart.

Rimani aggiornato con i nostri ultimi articoli iscrivendoti alla nostra newsletter.

Risorse correlate

Tornare alla Pagina Iniziale
Thank you, you are now subscribed to updates.