Accedi / Registrati per accedere ai vantaggi dedicati a te
Cercato recentemente
      • Pubblicato il 14 apr 2023
      • Ultima modifica 29 ago 2023
    • 7 min

    Cosa sono gli FPGA e come programmarli

    Scopri cos’è e come funziona un FPGA, le differenze rispetto ai microprocessori, i campi di applicazione e come programmare un FPGA.

    guida agli fpga

    Gli FPGA non sono un’invenzione recente: erano già in circolazione negli anni ’80, ma non venivano particolarmente apprezzati dai progettisti, perché il carico di lavoro necessario per programmare funzioni logiche anche di base era eccessivo, e i dispositivi non risultavano competitivi.

    Da allora, gli FPGA hanno fatto passi da gigante, e ora non solo la programmazione si è semplificata e ottimizzata, ma i dispositivi sono diventati dei veri e propri circuiti integrati con tutta l’architettura necessaria, in termini di porte logiche, registri, blocchi di memoria e interfacce.

    In questa guida descriviamo la struttura e il funzionamento degli FPGA, li confrontiamo con i circuiti integrati ASIC e con i CPLD, analizziamo come si programmano e vediamo alcune applicazioni in cui gli FPGA fanno la differenza.

    Cosa sono gli FPGA e come funzionano

    Un FPGA (Field Programmable Gate Array) è un dispositivo a semiconduttore suddiviso in blocchi logici configurabili (CLB) in cui è possibile definire le funzioni dopo la fabbricazione; il dispositivo consente di programmare specifiche funzioni e caratteristiche del prodotto a cui è destinato, e di riconfigurare l’hardware dei CLB per determinate applicazioni anche dopo che il prodotto è stato inserito nel settore: questo è appunto il senso di Field Programmable.

    Gate array, invece,si riferisceall’hardwaredell’FPGA: un insieme ordinato in due dimensioni di porte logiche. I componenti fondamentali di un FPGA si possono riassumere, infatti, in una porta logica e un registro collegati tra loro:

    • La porta logica esegue operazioni logiche di base su un dato in ingresso;
    • Il registro memorizza il dato elaborato fino all’ingresso del dato successivo.

    Quindi, un FPGA contiene blocchi di elementi logici programmabili e una serie di interconnessioni configurabili che servono a connettere fisicamente gli elementi logici tra loro, così da riuscire a realizzare funzioni complesse in modo molto più semplice e conveniente rispetto ai microprocessori, come andiamo a vedere.

    FPGA Altera Cyclone V

    Differenze tra gli FPGA, ASIC e CPLD

    Anche se i CPLD (Complex Programmable Logic Device) e gli FPGA sono entrambi dispositivi programmabili, i primi presentano un’architettura semplice di porte AND e OR senza registri, per cui vengono utilizzati in applicazioni particolari dove sono richieste alte velocità o bassi costi oppure funzionalità di raccordo tra due dispositivi complessi.

    La sfida principale è tra gli FPGA e gli ASIC (acronimo di Application Specific Integrated Circuit), che sono circuiti integrati personalizzati per un uso specifico, per cui:

    • Le funzioni implementate dai circuiti fabbricati in modo permanente su wafer di silicio degli ASIC vengono determinate durante la fabbricazione e non è possibile modificarle successivamente;
    • Gli FPGA, invece, possono replicare le stesse funzioni logiche degli ASIC con il notevole vantaggio che la funzionalità può essere aggiornata dopo la fabbricazione del circuito integrato.

    Ad esempio, se una nuova norma o standard impone una variazione di un parametro nelle prestazioni del sistema in cui il dispositivo digitale è installato, un FPGA può essere riconfigurato agevolmente per rispettare il nuovo requisito, altrettanto invece non è possibile in un sistema a microprocessore, come un ASIC.

    Per illustrare la differenza tra FPGA e ASIC, possiamo paragonare gli ASIC a mosaici realizzati con tessere tutte diverse tra loro per forma e immagine, e gli FPGA alle costruzioni dei bambini create con i mattoncini di plastica colorati: per realizzare un mosaico diverso occorre necessariamente disporre di tessere completamente nuove, mentre per dare vita a una nuova costruzione basta semplicemente staccare gli stessi mattoncini e riattaccarli tra loro in un diverso arrangiamento.

    Metafore a parte, possiamo riassumere i vantaggi principali degli FPGA rispetto agli ASIC in questo modo:

    • Un FPGA consente di ridurre il tempo di progettazione e il rischio di errori di progettazione;
    • Anche se il consumo di potenza di un FPGA è superiore a quello di un ASIC, per la maggior parte delle esigenze di applicazione risulta accettabile;
    • Gli FPGA possono essere programmati dall’utente finale in base ai suoi requisiti con sistemi di sviluppo FPGA universali, mentre gli ASIC personalizzati devono essere progettati e realizzati da un progettista esperto esterno, quindi sono più costosi.

    Le applicazioni degli FPGA

    Gli FPGA sono alla ribalta nei campi più disparati e fino ad ieri appannaggio quasi esclusivo di microprocessori e microcontrollori, dai sistemi di controllo industriali alle telecomunicazioni, dalle reti HPC (High-Performance Computing) alle applicazioni nel settore automobilistico; all’elenco si aggiungono nuove voci di pari passo con l’evoluzione delle funzionalità di questi dispositivi.

    Alcuni tra gli esempi più significativi di applicazioni sono:

    • Sistemi di controllo di motori elettrici industriali in corrente continua;
    • Interfacce digitali seriali per la trasmissione di segnali TV digitali;
    • Applicazioni telefoniche wireless.

    La maggior parte dei sistemi di controllo per motori ricorrono ai microcontrollori, ma questi spesso non riescono a soddisfare le prestazioni richieste da algoritmi sofisticati come il controllo della coppia diretta o il servocontrollo a orientamento di campo senza sensori. Un singolo FPGA, invece, consente di realizzare un sistema di controllo flessibile e preciso.

    Lo standard più recente nella trasmissione di segnali televisivi richiede interfacce digitali seriali (SDI) in grado di gestire segnali 4K ultra-HD. Alcune soluzioni FPGA sono dotate di un ricetrasmettitore integrato che funziona con tutte le interfacce SDI per la trasmissione di segnali video digitali non compressi ad altissima definizione.

    Il passaggio dalla tecnologia dati wireless 4G a quella 5G richiede dispositivi di rete programmabili che siano non solo flessibili e a basso consumo di potenza, ma anche vantaggiosi in termini economici. Molte soluzioni FPGA riescono a soddisfare egregiamente tali requisiti affiancando ai CLB programmabili interi blocchi pre-programmati ottimizzati per le reti wireless avanzate.

    Come programmare un FPGA

    Per programmare i blocchi CLB di un FPGA, invece di un linguaggio di descrizione dell’hardware (HDL) tradizionale che descrive i blocchi in termini di porte logiche e connessioni, si usano strumenti di programmazione software di alto livello come OpenCL, che consente a progettisti software non in possesso di specifiche conoscenze o competenze hardware di specificare la funzione di un determinato blocco, compilare il codice relativo, quindi creare un file di descrizione dell’hardware che può essere inserito nel progetto complessivo dell’FPGA.

    Con questi strumenti software, i progettisti riescono a creare descrizioni hardware senza necessità di interventi da parte di ingegneri dell’hardware, allargando in tal modo la platea di utilizzatori degli FPGA moderni.

    I blocchi hardware più specifici vengono descritti con un HDL pensato per gli FPGA, come ad esempio Verilog, che presenta una struttura vicina a quella del linguaggio di programmazione più generale e di uso più frequente, il linguaggio C.

    Invece di definire un programma eseguibile su un computer, Verilog descrive la rete di porte logiche, registri e connessioni, ossia l'hardware che il progettista desidera per l’FPGA. Un programma Verilog si può scrivere ricorrendo a un semplice editor di testo.

    La fase successiva è quella di compilare il progetto HDL, per ottenere un file di programmazione che configura l’FPGA all’accensione. In sintesi, il codice HDL viene mappato direttamente nei componenti fisici del dispositivo FPGA.

    Dopo la compilazione, il codice viene testato e verificato, correggendo gli eventuali errori (debugging) e simulando il comportamento effettivo dell’FPGA per assicurarsi che il dispositivo funzioni come previsto, alla velocità prevista e con il consumo di energia stimato.

    Alla fine il progetto verificato viene caricato nell’FPGA a cui è destinato: il risultato è un hardware personalizzato che soddisfa i requisiti specifici dell’utente, ottenuto in tempi molto più brevi rispetto a un ASIC.

    Conclusione

    Se non li usavi già, questa guida ti ha fornito tutte le informazioni utili per farti comprendere le potenzialità degli FPGA rispetto ai microprocessori non programmabili, e perché stanno sostituendo soluzioni considerate intramontabili solo fino a qualche lustro fa.

    Scopri la gamma completa di FPGA disponibili per ogni tua esigenza di progettazione visitando la categoria delle logiche programmabili di RS.

    FPGA Altera Cyclone

    Prodotti Correlati

    Kit di sviluppo CPLD Altera

    Kit di sviluppo CPLD Altera

    Il kit di sviluppo CPLD Altera fornisce una piattaforma di progettazione completa che comprende sia l'hardware che il software necessari per eseguire comuni applicazioni CPLD.

    Scopri di più

    Link consigliati