Indice dei contenuti
- Il MCU è il microcontrollore cervello di un circuito incorporato, che esegue codice già flashato sulla sua ROM. Fornisce il controllo su sensori, motori e periferiche di comunicazione.
- Il FPGA è una combinazione di porte logiche sequenziali che un ingegnere può programmare per creare una logica digitale specifica per il progetto che funziona in parallelo.
Che cos'è l'MCU? Che cos'è l'FPGA?
- Architetture comuni: Serie ARM Cortex-M (STM32, NXP, Renesas, ecc.)
- Vantaggi: Basso costo, basso consumo energetico, alta integrazione, bassa barriera di sviluppo (Sviluppo del linguaggio C è sufficiente)
- Centinaia o migliaia di unità logiche eseguono compiti simultaneamente
- Può essere "ricablato" a livello di circuito
- I percorsi logici fissi li rendono adatti ad applicazioni con elevati requisiti in tempo reale
Componenti di un microcontrollore e di una FPGA
Struttura interna dell'MCU
- CPU Nucleo: il componente che esegue le istruzioni in modo sequenziale, una alla volta.
- Memoria flashÈ l'equivalente di un disco rigido; contiene il programma in modo permanente.
- RAM: È una memoria veloce e temporanea per le attività in tempo reale nello stack.
- PerifericheComponenti quali protocolli di comunicazione, timer e convertitori digitali e analogici che consentono all'MCU di interfacciarsi.
- Sistema di orologi: consente di sincronizzare lo scorrere del tempo per svolgere le attività in modo puntuale.
Una MCU è una cassetta degli attrezzi che aspetta di essere utilizzata. Il vostro programma funziona e può controllare immediatamente una macchina, un sensore o un pezzo elettronico di base senza bisogno di ulteriore lavoro.
Costruzione interna dell'FPGA
- Blocchi logici configurabili (CLB): blocchi di costruzione digitali che agiscono come "Lego" digitali con i quali si crea qualsiasi funzione logica si desideri.
- Interconnessioni: il cablaggio per collegare le varie parti logiche.
- I/O Blocchi: pin che possono essere configurati per l'ingresso o l'uscita per collegare l'FPGA con il mondo esterno.
- Fette di processore di segnale digitale: unità configurate in grado di gestire operazioni matematiche per il filtraggio o processi simili.
- RAM a blocchi (BRAM): RAM distribuita e situata in diverse parti del chip.
- Unità di gestione del clock (PLL, DCM): assicurano che tutti i blocchi logici rimangano sincronizzati tra loro a velocità superiori a quelle necessarie.
L'FPGA si comporta come una scatola di Lego. Volete creare una CPU? O un processore di segnali? O qualcos'altro? Una volta configurato, esegue tutto in parallelo.
Differenza tra MCU e FPGA
Tabella di confronto MCU vs FPGA:
| MCU | FPGA | |
Architettura | Funziona su una CPU fissa per interpretare ed eseguire le istruzioni in ordine. | Costituito da blocchi logici riconfigurabili che operano per eseguire compiti in parallelo. |
Prestazioni | Limitato in base alla velocità di clock della CPU. | In grado di garantire una produttività molto elevata e ideale per la produzione in tempo reale. applicazioni. |
Flessibilità | Ha periferiche e funzioni fisse che non possono essere regolate. | Hardware completamente personalizzabile; le esigenze dell'applicazione sono soddisfatte. |
Consumo di energia | In genere, il consumo di energia è inferiore; ideale per i dispositivi alimentati a batteria. | In genere il consumo di energia è più elevato, ma i nuovi modelli sono più efficienti. |
Costo | Meno costosa la creazione del chip e degli strumenti di sviluppo iniziali. | Dispositivi più costosi e strumenti di progettazione più costosi. |
Facilità di sviluppo | Programmato in linguaggi C/C++ con una toolchain standard facilmente reperibile. | Programmato in HDL (VHDL/Verilog), richiede una persona che sappia progettare hardware. |
Applicazioni | Elettronica di consumo, IoT, controllo motori e applicazioni di automazione industriale. | Tecnologia 5G, applicazioni aerospaziali, accelerazione AI, elaborazione video/immagini. |
MCU vs FPGA: quale scegliere?
- Un MCU è adatto per applicazioni in cui sono richieste progettazioni a basso consumo e a costi criticicome i controlli dei sensori, i driver per i motori o le piccole IoT schede. Dal punto di vista del circuito stampato, ciò significa spesso un solo binario di alimentazione, requisiti di base per il clock e considerazioni minime sul disaccoppiamento. Il layout è spesso semplice, a parte la messa a terra e l'instradamento dei segnali.
- Un FPGA offre prestazioni e flessibilità molto più elevate, ma richiede un maggiore sforzo di progettazione. I PC avranno bisogno di più rail di alimentazione per il core e gli I/O, di oscillatori specializzati per le applicazioni di clock e l'integrità dell'alimentazione dovrà essere considerata ad alta velocità per le connessioni DDR o PCIe. Un numero significativo di pin in BGA richiedono considerazioni sul fan-out e potenzialmente HDI stackup e microvias. Potenza e considerazioni termiche sono diventati obbligatori.
Quando si dovrebbe prendere in considerazione l'aggiornamento o l'aggiunta di un FPGA?
-
Utilizzo elevato della CPU o prestazioni insufficienti in tempo reale
-
Requisiti per l'elaborazione parallela multicanale o per la temporizzazione deterministica
-
Loop di controllo complessi o ingressi ADC multipli
-
Jitter di latenza o richieste di interfacce ad alta velocità personalizzate
Come migrare da MCU a FPGA
- Utilizzare un profilatore di prestazioni per identificare moduli funzionali che presentano un elevato utilizzo della CPU, lunghi tempi di esecuzione e un forte parallelismo (ad esempio, filtri e FFT).
- Astratto di questi funzioni hotspot nel modulodi progettazione come moduli logici portatili (HDL/HLS), scaricarli sull'FPGA e consentire la comunicazione e la collaborazione con l'unità di microcontrollo.
- Posizionare i moduli di accelerazione sull'FPGA e implementare una CPU soft-core sull'FPGA in modo da poter continuare a eseguire parte del codice dell'MCU.
- Utilizzo strumenti di sintesi ad alto livello (HLS) per convertire i segmenti di codice C/C++ esistenti in moduli hardware, riducendo così la necessità di una codifica HDL manuale.
- Una volta che il prototipo è passato test ed è stato dimostrato che funziona in modo stabile, si può prendere in considerazione la migrazione su larga scala o l'integrazione della funzionalità MCU nell'FPGA.
Caso di studio: Frammento di migrazione del controllo motore da MCU a FPGA
Originariamente sviluppato su una MCU in C/C++ per il controllo ad anello chiuso, i calcoli PID, il filtraggio della retroazione, il pilotaggio PWM e così via. In condizioni di elevate prestazioni, il tempo di risposta, il jitter e le interferenze dell'MCU diventano dei colli di bottiglia.
Il percorso di migrazione è il seguente:
- Identificare i moduli importanti: Alcuni esempi sono loop di velocità, loop di corrente, filtraggio e controllo dell'uscita PWM.
- Utilizzo HLS per incapsulare questi moduli come blocchi hardware e creare un'implementazione HDL.
- L'FPGA è utilizzato per controllare la velocità e la corrente, mentre l'MCU è responsabile solo della programmazione dello strato superiore, delle modifiche dei parametri e della gestione delle comunicazioni.
- Controllare se latenza, jitter, utilizzo delle risorsee altri parametri soddisfano i requisiti. Se i risultati sono favorevoli, migrare gradualmente altri sottomoduli.
Conclusione
- MCU sono i migliori per progetti compatti, economici e sensibili alla potenza.
- FPGA sbloccare prestazioni, parallelismo e tempo reale più elevati. capacità, anche se richiedono considerazioni più complesse in termini di progettazione e layout.
FAQ
A1: Un MCU è più facile da progettare perché in genere richiede un solo binario di alimentazione, un minor numero di condensatori di disaccoppiamento e un instradamento più semplice. Le FPGA richiedono più binari, controllo dell'impedenza e un fan-out adeguato a causa dell'elevato numero di pin delle BGA.
Riferimenti
[1] Intel. (n.d.). FPGA vs. microcontrollore: La scelta della soluzione giusta per la vostra applicazione. Recuperato da https://www.intel.com
[2] Tecnologia Microchip. (n.d.). Guida FPGA vs MCU. Recuperato da https://www.microchip.com






