+1 500 000 prodotti nell’offerta

7000 pacchi giornalmente

+300 000 clienti da 150 paesi

Quick Buy Preferiti
Carrello

Circuiti FPGA digitali programmabili

Data di pubblicazione: 18-11-2025 🕒 10 min di lettura

I dispositivi FPGA sono disponibili commercialmente da molti anni, eppure, nonostante i numerosi vantaggi, non si può dire che siano popolari nelle applicazioni. Le principali ragioni sono l'alto costo della soluzione e la mancanza di conoscenza riguardo alle applicazioni. La prima di queste caratteristiche influisce negativamente sul progettista o su un altro decisore riguardo ai componenti, mentre la seconda colpisce più spesso il programmatore o il progettista di sistemi embedded, che è esperto in linguaggi orientati agli oggetti ma non comprende il linguaggio di descrizione dell'hardware. In questo testo, esamineremo alcune caratteristiche pratiche selezionate dei dispositivi FPGA e le confronteremo con microcontrollori molto più noti e accettati. Indicheremo anche le applicazioni in cui l'uso di FPGA è indispensabile e quelle in cui diventa "eccessivo".

FPGA è il nome di un gruppo di circuiti integrati derivati dalle prime lettere delle parole Field-Programmable Gate Array. Questi dispositivi possono essere programmati dopo la produzione. Il processo di programmazione degli FPGA è chiamato configurazione, poiché implica la creazione di connessioni tra blocchi funzionali già pronti disponibili all'interno della struttura. A differenza dei circuiti integrati digitali tipici (porte, registri, flip-flop, contatori, ecc.) che hanno funzionalità fisse, gli FPGA possono essere programmati ripetutamente, offrendo flessibilità nella progettazione e nel collaudo di diverse applicazioni.

Acquista dispositivi FPGA

Gli FPGA sono composti da blocchi logici programmabili e interconnessioni programmabili tra di essi. Questi dispositivi possono contenere non solo blocchi digitali ma anche convertitori analogico-digitale, convertitori digitale-analogico, core di processori (general-purpose o DSP), blocchi di interfaccia che consentono la cooperazione con dispositivi esterni, o persino unità di supporto AI collegate tramite Network-on-Chip (NoC), una rete di interconnessione integrata che trasmette pacchetti di dati tra blocchi e componenti del dispositivo. Grazie a caratteristiche ricche e connessioni flessibili, i dispositivi FPGA possono essere configurati per eseguire varie funzioni, come l'elaborazione dei segnali, il controllo dei sistemi embedded o l'accelerazione dell'elaborazione dei dati.

Uno dei vantaggi più importanti degli FPGA è la velocità di calcolo. Questi dispositivi operano in modo diverso rispetto a un microprocessore, che recupera ed esegue istruzioni in modo sequenziale. Negli FPGA, il risultato del processamento può apparire "immediatamente", ritardato solo da un piccolo tempo di propagazione. È anche significativo che molte operazioni possano essere eseguite in parallelo, a differenza di un microcontrollore, che raramente supporta l'esecuzione simultanea di molte istruzioni.

Ogni dispositivo FPGA è composto da tre gruppi di componenti:

  1. I blocchi fondamentali di ogni FPGA sono blocchi logici. Ognuno contiene un numero di funzioni logiche di base e registri. Le funzioni logiche eseguono operazioni logiche, mentre i registri memorizzano i dati.
  2. I blocchi logici sono collegati da un bus di connessione. Tuttavia, questo termine non deve essere confuso con, ad esempio, un bus dati su una scheda madre di computer. A differenza delle tracce in rame con topologia fissa, queste sono connessioni programmabili in modo flessibile tra i blocchi che consentono di collegarli quasi arbitrariamente.
  3. L'intera configurazione è memorizzata in memoria di configurazione non volatile. Nella maggior parte degli FPGA, questa è memoria Flash/EEPROM esterna che può essere cancellata e scritta ripetutamente. Alcuni dispositivi FPGA possono avere memoria di configurazione integrata, ma questo è meno comune. L'FPGA carica la configurazione all'accensione o dopo un reset completo. La disponibilità di memoria di configurazione consente una facile costruzione e collaudo di prototipi e, nel caso di un dispositivo finito e funzionante, un facile aggiornamento o miglioramento della funzionalità. Questo è particolarmente prezioso nell'hardware prodotto in piccole serie, dove l'uso di FPGA è significativamente più conveniente rispetto alla progettazione e produzione di circuiti integrati dedicati (ASIC).

Figura 1. Diagramma a blocchi semplificato che illustra la struttura di un dispositivo FPGA

Differenze tra FPGA e CPLD

I dispositivi CPLD (Complex Programmable Logic Device) sono stati i precursori dei dispositivi FPGA e (nonostante abbiano meno funzionalità) sono oggi offerti per applicazioni meno complesse. La maggior parte dei principali fornitori offre una vasta gamma, a partire dalle versioni più semplici designate come PAL, contenenti elementi programmabili e parti fisse predisposte per eseguire una certa funzione logica. Questo consente di utilizzare un singolo circuito integrato invece di diversi funzioni logiche, ma non offre grande flessibilità per le applicazioni.

Acquista dispositivi CPLD

Rispetto ai PAL, i dispositivi CPLD sono più complessi. Contengono più porte, sono dotati di memoria non volatile e RAM, rendendoli adatti per applicazioni più complesse. Ad esempio, Intel® ha collocato molti blocchi PAL chiamati macrocelle in un unico pacchetto di circuito integrato unificato, dove tutti gli ingressi sono disponibili per ogni cella e ogni macrocellula può controllare qualsiasi uscita. La struttura di connessione è memorizzata in memoria programmabile elettricamente chiamata memoria di configurazione, proprio come negli FPGA. Quindi, se i CPLD hanno macrocelle, un bus di connessione programmabile e memoria di configurazione, in cosa differiscono dagli FPGA?

Rispetto agli FPGA, i CPLD contengono significativamente meno elementi logici e non hanno array LUT (look up tables). Hanno un'architettura più integrata, con un numero molto ridotto di blocchi logici, e implementano funzioni logiche più complesse in ciascun blocco. Molte connessioni tra i blocchi nei CPLD sono predefinite nel processo di produzione e non possono essere modificate durante la configurazione del dispositivo. Non sono utilizzati per creare applicazioni così complesse come gli FPGA, che possono contenere milioni di funzioni logiche. Per illustrare, un FPGA può modellare un core di processore, mentre un CPLD è utile per implementare un decodificatore di indirizzi che collabora con esso.

Figura 2. Macrocell del dispositivo serie MAX7000 (fonte: documentazione del produttore)

Nella maggior parte dei dispositivi FPGA, la configurazione è memorizzata in memoria esterna, solitamente collegata tramite un'interfaccia seriale. I dati di configurazione vengono copiati nella RAM dell'FPGA ad ogni accensione o reset completo. Questo crea un ritardo all'avvio del dispositivo, maggiore per gli FPGA più complessi, che non è il caso dei CPLD che hanno la configurazione memorizzata in memoria EEPROM.

Uno svantaggio degli FPGA rispetto ai CPLD è il costo applicativo più elevato.

  • Gli FPGA possono richiedere un sistema di alimentazione speciale ed efficiente, in cui è necessario controllare la sequenza di attivazione delle singole tensioni e reagire in modo specifico in caso di guasto.
  • La configurazione memorizzata in memoria esterna è suscettibile ad accessi non autorizzati, il che può essere importante per la sicurezza delle applicazioni.
  • Le applicazioni FPGA che richiedono significativamente più componenti esterni sono molto più costose.
  • L'alto prezzo degli FPGA elimina praticamente dispositivi più complessi nelle applicazioni popolari. I CPLD non sono così costosi e possono essere utilizzati con successo in dispositivi elettronici popolari, sostituendo diversi o addirittura una dozzina di dispositivi logici. Tuttavia, nonostante i numerosi vantaggi, quando è necessario implementare una funzione logica, molti progettisti sceglieranno ancora il microcontrollore più noto...

Tabella 1. Confronto di parametri selezionati dei dispositivi FPGA e CPLD

Caratteristica/parametro CPLD FPGA
Flessibilità applicativa Bassa Alta
Prezzo Basso Alto o molto alto
Sicurezza applicativa Alta Susceptibile ad accessi non autorizzati
Velocità operativa Alta Alta
Capacità/dimensione applicativa Bassa Alta o molto alta
Applicazione hardware Semplice Complessa o molto complessa
Programmazione In linguaggi di configurazione hardware o tramite schemi funzionali

Differenze tra FPGA e microcontrollore

I blocchi funzionali integrati negli FPGA, specialmente convertitori A/D, convertitori D/A, o moduli di interfaccia per dispositivi esterni, possono assomigliare all'ambiente di un core di microcontrollore. Un FPGA può avere RAM integrata e memoria Flash, ma questa somiglianza è ingannevole.

I moderni dispositivi FPGA avanzati sono funzionalmente più complessi rispetto ai microcontrollori avanzati e complessi. Ad esempio, il collegamento dei blocchi funzionali all'interno di un FPGA può utilizzare la tecnologia NoC (Network on Chip), dove all'interno della struttura del circuito integrato, i pacchetti di dati vengono trasmessi utilizzando bus gestiti da switch integrati. Questo è utile per l'elaborazione e la condizionamento dei segnali e per algoritmi che impiegano l'apprendimento automatico e l'intelligenza artificiale.

La velocità di funzionamento degli FPGA rispetto a un microcontrollore è davvero sorprendente. Questo perché un tipico core di microcontrollore recupera ed esegue istruzioni una alla volta. Per accelerare l'elaborazione dei dati, scarica alcune operazioni a unità periferiche (ad es., trasmissione di dati da e verso la memoria tramite DMA), ma questo non cambia il suo ritmo operativo. Negli FPGA, a seconda della configurazione, l'FPGA solitamente trasmette la risposta immediatamente dopo aver ricevuto i dati e può inoltre eseguire molti thread simultaneamente. Ricorda, ad esempio, che la valutazione di un segnale non implica prendere un campione e poi valutarlo nel passo successivo, ma si riferisce a uno schema di valutazione disponibile come rete di funzioni logiche collegate, quindi può essere disponibile con precisione fino al tempo di propagazione del dispositivo.

Un microcontrollore contiene un core di processore, RAM, ROM, Flash e periferiche, come porte di input/output, timer, convertitori A/D e D/A su un singolo circuito integrato. È progettato per eseguire compiti specifici. Anche se alcuni moduli possono essere abilitati/disabilitati per risparmiare energia, la loro funzionalità non può essere ridefinita. È fissa durante la produzione, inclusi il funzionamento e il collegamento dei blocchi. Un microcontrollore è in qualche modo simile a un microcomputer montato su una piccola scheda a circuito stampato all'interno di un unico pacchetto. Cambiare la sua configurazione richiede di modificare la scheda, comprese le tracce del circuito, il posizionamento dei componenti e le loro interconnessioni.

Un dispositivo FPGA è costruito da blocchi logici programmabili collegati da interconnessioni configurabili. Le funzioni possono essere combinate in vari blocchi funzionali capaci di eseguire diverse operazioni logiche, e i moderni dispositivi FPGA avanzati utilizzano tecnologie di connessione molto avanzate come NoC.

La programmazione degli FPGA (e CPLD) consiste nel definire connessioni logiche e funzioni utilizzando linguaggi di descrizione hardware (HDL) come VHDL o Verilog. La configurazione, specialmente per dispositivi più semplici, può essere effettuata anche utilizzando uno schema logico, posizionando e collegando componenti logici tipici. Configurare un FPGA richiede conoscenze di progettazione di circuiti digitali. La programmazione di un microcontrollore utilizza linguaggi di programmazione strutturati o orientati agli oggetti. Oggi, la maggior parte delle applicazioni si allontana dall'assembler di basso livello verso linguaggi di alto livello come C, C++, Java e altri. La programmazione di un microcontrollore assomiglia alla programmazione di computer "grandi", rendendola più facile per la maggior parte dei programmatori, che spesso mancano di conoscenze sul funzionamento e sull'ottimizzazione dei blocchi logici. La memoria di programma dell'FPGA memorizza la configurazione, mentre la memoria del microcontrollore memorizza comandi e parametri.

Tabella 2. Confronto di parametri selezionati di microcontrollori e FPGA

Caratteristica/parametro Microcontrollore FPGA
Flessibilità applicativa Alta Alta
Prezzo Basso o medio Alto o molto alto
Sicurezza applicativa Susceptibile ad accessi non autorizzati Susceptibile ad accessi non autorizzati
Velocità operativa Bassa rispetto agli FPGA Alta
Capacità di memoria / dimensione applicativa Da molto piccola a molto grande Alta o molto alta
Applicazione hardware Semplice Complessa o molto complessa
Possibilità di funzionamento analogico Nessuna o limitata
Programmazione In assembler o linguaggi di alto livello In linguaggi di configurazione hardware

Differenze tra FPGA e ASIC

La caratteristica più importante dei dispositivi ASIC, come indicato dal loro nome, è che sono progettati per eseguire un compito specifico. Questo potrebbe essere, ad esempio, ricevere e decodificare un segnale radio, controllare un modello di display specifico, o altro. Si noti che un ASIC non deve necessariamente essere programmabile, anche se ne esistono alcuni disponibili commercialmente contenenti un core di processore per i quali possono essere create applicazioni.

Il confine tra un circuito integrato tipico e un dispositivo ASIC è molto sottile. Sono principalmente separati dal volume di produzione; gli ASIC sono prodotti in numeri più piccoli rispetto ai circuiti integrati prodotti in massa. Molti produttori offrono circuiti integrati senza indicare se sono prodotti in massa o ASIC.

L'architettura di un ASIC è definita dal progettista e non può essere modificata dopo la produzione. Di solito, quando gli ASIC hanno un core di processore, non è necessario sviluppare programmi, ma solo impostare alcuni parametri specifici. Allo stesso modo, il tipo di comunicazione con l'ambiente e i formati dei dati sono definiti durante la progettazione, e anche se è possibile passare tra diversi tipi, non possono essere introdotte modifiche.

Rispetto alla configurazione degli FPGA, il processo di progettazione degli ASIC è più complesso e costoso, richiedendo possibilmente conoscenze specialistiche oltre alla progettazione di circuiti digitali, ma il prodotto finale è più ottimizzato per applicazioni specifiche, prestazioni ed efficienza energetica.

Gli ASIC sono utilizzati in applicazioni che richiedono alte prestazioni con basso consumo energetico e dimensioni miniature. La specializzazione consente loro di offrire eccellenti parametri pratici. Inoltre, gli ASIC sono solitamente pronti all'uso immediatamente dopo la saldatura o il posizionamento in un socket e non necessitano di caricare configurazioni da memoria esterna. Possono anche avere funzionalità miste o essere puramente analogici. Questo non è possibile con gli FPGA, che forniscono prestazioni molto elevate mediante l'elaborazione parallela di dati digitali, dopo la conversione da analogico a digitale e viceversa.

Gli ASIC pronti all'uso possono costare molte volte meno degli FPGA. Sono molto più costosi e richiedono più tempo per la progettazione, ma questi costi si ammortizzano su volumi tipicamente grandi. Questo avviene a scapito della mancanza di capacità di riconfigurazione, ma non è sempre necessaria. Analogamente ai microcontrollori, gli FPGA possono essere utilizzati per prototipare ASIC, ma gli ASIC non possono modellare il funzionamento degli FPGA. Ovviamente, qui ci riferiamo a una modellazione che consente di registrare una configurazione utile per FPGA, non solo a raggiungere funzionalità simili.

Tabella 3. Confronto di parametri selezionati di ASIC e FPGA

Caratteristica/parametro ASIC FPGA
Flessibilità applicativa Molto bassa Alta
Prezzo Basso o medio Alto o molto alto
Sicurezza applicativa Alta Susceptibile ad accessi non autorizzati
Velocità operativa Alta Alta
Capacità/dimensione applicativa Bassa o nessuna Alta o molto alta
Applicazione hardware Semplice Complessa o molto complessa
Possibilità di funzionamento analogico Dipende dal design Nessuna o limitata
Programmazione Capacità limitata o non richiesta In linguaggi di configurazione hardware

Bibliografia:

  • Control Engineering Poland – FPGA nell’automazione - www.controlengineering.pl/uklady-fpga-w-automatyce-nowe-mozliwosci-i-zastosowania
  • Lattice Semiconductor – FPGA nell’Industria 4.0 - www.latticesemi.com/en/Blog/2022/12/20/23/00/2022-How-FPGAs-Can-Make-Industry-4-Work
  • Wikipedia – Quarta rivoluzione industriale - www.pl.wikipedia.org/wiki/Czwarta_rewolucja_przemysłowa
  • Progettazione di sistemi embedded in dispositivi FPGA - www.helion.pl/pobierz-fragment/projektowanie-systemow-wbudowanych-w-ukladach-fpga-valery-salauyou-adam-klimowicz,e_321i/pdf
  • La potenza della memoria – Elektronika Praktyczna - www.ep.com.pl/files//2012.pdf
  • Wikipedia – Matrice di porte programmabile sul campo (FPGA) - www.pl.wikipedia.org/wiki/Bezpośrednio_programowalna_macierz_bramek
  • FPGA-Based System Design – Wayne Wolf - www.eeeforum.weebly.com/uploads/1/0/2/5/10254481/fpga1.pdf
  • «Real-Time Image Processing on FPGA» – SpringerLink - www.link.springer.com/chapter/10.1007/978-3-642-24106-2_18

Transfer Multisort Elektronik (TME) è uno dei maggiori distributori mondiali di componenti elettronici, parti elettrotecniche, attrezzature da laboratorio e automazione industriale. Il catalogo include oltre 1.500.000 di prodotti di 1.300 produttori leader. I moderni centri logistici di TME a Łódź e Rzgów (Polonia), con una superficie complessiva di oltre 40.000 m², spediscono quasi 6.000 pacchi al giorno a clienti in più di 150 paesi.

TME investe anche nello sviluppo delle conoscenze e competenze di giovani ingegneri e appassionati di elettronica attraverso il progetto TME Education e supporta la comunità tecnologica organizzando la serie di eventi TechMasterEvent, promuovendo l’innovazione e lo scambio di esperienze.

rightColumnPicture rightColumnPicture

LEGGI ANCHE