Nozioni di base sugli FPGA - Parte 2: Introduzione agli FPGA di Lattice Semiconductor
Contributo di Editori nordamericani di DigiKey
2019-12-18
Nota del redattore: spesso le migliori soluzioni di progettazione sono date da combinazioni di processori RISC, CISC, grafici e FPGA, da soli FPGA o da FPGA dotati di hard core di processore integrati. Tuttavia, molti progettisti non conoscono le capacità degli FPGA, come si sono evoluti e come utilizzarli. La Parte 1 di questo articolo offre un'introduzione avanzata agli FPGA e ai motivi per cui si rivelano spesso necessari. Nella Parte 2 l'attenzione è rivolta alle famiglie di dispositivi FPGA e agli strumenti di progettazione pertinenti offerti da Lattice Semiconductor, rinomato fornitore di FPGA. Le Parti 3, 4 e 5 prenderanno in esame gli FPGA di Altera, Microchip e Xilinx.
Come discusso nella Parte 1, gli FPGA (gate array programmabili sul campo) hanno molte caratteristiche che li rendono una risorsa di calcolo inestimabile, sia da soli che inseriti in un'architettura eterogenea. Molti progettisti, tuttavia, non hanno familiarità con questi dispositivi e con il modo di incorporarli nei loro progetti.
Per superare questo ostacolo possiamo esaminare più a fondo le architetture degli FPGA e i relativi strumenti dei principali fornitori, iniziando qui con la linea di Lattice Semiconductor.
Panoramica delle opzioni FPGA di alto livello
Esistono molti tipi di FPGA, ognuno con diverse combinazioni di capacità e funzioni. Il cuore di ogni FPGA è la sua struttura programmabile che si presenta come una serie di blocchi a logica programmabile (Figura 1a). Il livello successivo della struttura dell'FPGA include, ad esempio, blocchi di SRAM, chiamati RAM di blocco (BRAM), circuiti ad aggancio di fase (PLL) e gestori di clock (Figura 1b). Possono essere inclusi anche blocchi processore di segnali digitali (DSP) (slice DSP) e blocchi serializzatori/deserializzatori (SERDES) ad alta velocità (Figura 1c).
Figura 1: Gli FPGA più semplici contengono solo struttura programmabile e GPIO per uso generale configurabili (a). Architetture diverse potenziano questa struttura fondamentale con blocchi SRAM, PLL e gestori di clock (b), blocchi DSP e interfacce SERDES (c), hard core di processore e periferiche (d). (Immagine per gentile concessione di Max Maxfield)
Funzioni dell'interfaccia periferica come CAN, I2C, SPI, UART e USB possono essere implementate come soft core nella struttura programmabile, ma molti FPGA le includono come hard core nel chip. Allo stesso modo, i microprocessori possono essere implementati come soft core nella struttura programmabile o come hard core nel chip (Figura 1d). I vari FPGA offrono set di funzionalità, caratteristiche e capacità diverse mirate a specifici settori e applicazioni.
Esistono diversi fornitori di FPGA, tra cui Altera (acquisita da Intel), Atmel (acquisita da Microchip Technology), Lattice Semiconductor, Microsemi (anch'essa acquisita da Microchip Technology) e Xilinx.
Tutti questi fornitori mettono a disposizione diverse famiglie di FPGA; alcuni offrono FPGA System-on-Chip (SoC) contenenti hard core di processore e altri offrono dispositivi immuni alle radiazioni studiati appositamente per ambienti ad alta radiazione come lo spazio. Data la grande varietà di famiglie, ognuna con risorse diverse, scegliere il dispositivo migliore per il compito da svolgere può essere difficile. In questo articolo concentreremo l'attenzione sulle famiglie di dispositivi e sugli strumenti di progettazione pertinenti offerti da Lattice Semiconductor.
Introduzione agli FPGA di Lattice Semiconductor
Gli FPGA di Lattice Semiconductor si collocano nella fascia da bassa a media, con particolare attenzione ai dispositivi a basso consumo energetico atti ad affrontare le problematiche di rete dall'edge al cloud, nell'attuale situazione di rapida crescita di vari settori: comunicazioni, industriale, informatico, automotive e beni di consumo.
Lattice offre quattro famiglie principali di FPGA:
- iCE (FPGA a bassissimo consumo energetico, dichiarato come il più piccolo al mondo)
- CrossLink e CrossLinkPlus (ottimizzati per applicazioni di video ad alta velocità e impiego di sensori)
- MachXO (ottimizzato per il bridging di bus e interfacce, l'espansione di I/O, oltre che per la gestione di piattaforme e applicazioni di sicurezza)
- ECP (dispositivi per uso generale destinati ad applicazioni di connettività e accelerazione)
Lattice offre anche una serie di suite di strumenti di progettazione e verifica, tra cui Lattice Diamond Software (per i dispositivi CrossLink/CrossLinkPlus, MachXO, ECP), Lattice Radiant Software (per FPGA iCE e future architetture), oltre a LatticeMico (uno strumento grafico per creare progetti basati su microprocessore soft) e Lattice sensAI Stack e Neural Network Compiler (per progetti di intelligenza artificiale (IA) e apprendimento automatico (ML, Machine Learning)).
ECP: FPGA tradizionali
I dispositivi ECP di Lattice corrispondono a ciò che molti progettisti considererebbero come FPGA "tradizionali". Possono contenere fino a 85.000 (k) tabelle di ricerca a quattro input (LUT) in un contenitore di 10x10 mm e 0,5 mm di passo. Vantano un basso consumo energetico statico e dinamico con funzioni SERDES indipendenti dal protocollo, a canale singolo sotto 0,25 W e a quattro canali sotto 0,5 W.
Oltre ai blocchi SRAM, ai blocchi di processo dei segnali (DSP), ai circuiti ad aggancio di fase (PLL) e ai gestori di clock, gli FPGA ECP offrono supporto per I/O programmabile per interfacce di I/O LVCMOS 33/25/18/15/12, XGMII, LVTTL, LVDS, Bus-LVDS, 7:1 LVDS, LVPECL e MIPI D-PHY.
Le celle di configurazione degli FPGA ECP sono basate su SRAM, il che significa che, come tutti gli FPGA basati su SRAM, la loro configurazione deve essere caricata da una fonte esterna (ad esempio, memoria flash, microprocessore, microcontroller) quando il sistema viene messo sotto tensione.
Un buon esempio di dispositivo ECP è LFE5UM5G-25F-8BG381C ECP5, un FPGA abilitato 5G SERDES in un contenitore di 10x10 mm. Per consentire ai progettisti di studiare e sperimentare meglio le caratteristiche della famiglia di FPGA ECP5, Lattice fornisce anche una scheda di sviluppo abbinata ECP5-5G, LFE5UM5G-45F-VERSA-EVN (Figura 2).
Figura 2: La scheda di valutazione ECP5 è una scheda di prototipazione con logica più che sufficiente, I/O, SERDES 5G e basette di espansione. (Immagine per gentile concessione di Lattice Semiconductor)
Di dimensioni ridotte, ma potente: FPGA iCE di Lattice
I dispositivi iCE sono i più piccoli FPGA disponibili, ma nonostante le dimensioni ridottissime offrono 18 I/O in un contenitore di 1,4 x 1,4 mm. Gli FPGA iCE offrono un'architettura logica flessibile con LUT a quattro ingressi fino a 5k, un massimo di 128 kbit di sysMEM BRAM embedded di Lattice e 1 Mbit di RAM a porta singola (SPRAM), blocchi DSP ad alte prestazioni e I/O personalizzabili.
Sebbene siano piccoli e a basso consumo con una corrente di sospensione di soli 75 µA e corrente attiva da 1 a 10 mA per la maggior parte delle applicazioni, gli FPGA iCE sono anche potenti. Ad esempio, sono in grado di implementare reti neurali artificiali (RNA) per l'abbinamento di pattern necessario per portare l'intelligenza sempre attiva all'edge.
I dati di configurazione negli FPGA iCE sono memorizzati in una memoria non volatile (NVM), il che significa che questi dispositivi sono programmabili una sola volta (OTP). Oltre a ciò, contengono anche celle di configurazione basate su SRAM. Durante lo sviluppo, il progetto può essere testato caricando direttamente dall'esterno le celle di configurazione basate su SRAM. Una volta che il progetto è stato confermato, può essere caricato nella NVM. Quando il dispositivo viene alimentato, la configurazione memorizzata nella NVM viene automaticamente copiata nelle celle di configurazione basate su SRAM in modo totalmente parallelo.
Un esempio di dispositivo iCE è iCE40 UltraLite ICE40UL1K-SWG16ITR1K, che è anche il più piccolo FPGA esistente (al momento della redazione di questo articolo), con una potenza statica di 42 µW in un contenitore di 1,4 x 1,4 mm. Un kit di sviluppo interessante è Himax HM01B0 UPduino Shield HM01B0-UPD-EVN e la scheda dimostrativa modulare sensAI (Figura 3).
Figura 3: Himax HM01B0 UPduino Shield di Lattice è un kit di sviluppo per l'implementazione di IA (intelligenza artificiale) che utilizza la visione e il suono come input sensoriali. (Immagine per gentile concessione di Lattice Semiconductor)
Il kit si basa su UPduino 2.0, una scheda di sviluppo per prototipazione rapida con un fattore di forma Arduino e con le prestazioni e le capacità di I/O dell'FPGA iCE40 UltraPlus. Include anche il modulo a sensore di immagini a basso consumo Himax HM01B0 e due microfoni I2S.
FPGA specializzati: CrossLink e CrossLinkPlus
Le famiglie CrossLink e CrossLinkPlus sono FPGA specializzati che, oltre alla logica programmabile e alle notevoli capacità di I/O integrano nell'hardware versioni di specifiche ampiamente utilizzate in applicazioni industriali e automotive. Sono inclusi lo standard per lo strato fisico per comunicazione dati ad alta velocità Mobile Industry Processor Interface (MIPI) D-PHY, i core Camera Serial Interface 2 (CSI2) e Display Serial Interface 2 (DSI2), tutto in contenitori di 6 x 6 mm (CrossLink) e 3,5 x 3,5 mm (CrossLinkPlus).
Come per gli FPGA iCE, nei dispositivi CrossLink i dati di configurazione sono memorizzati nella NVM OTP e anch'essi contengono celle di configurazione basate su SRAM che, per i test, possono essere caricate direttamente durante lo sviluppo. Una volta definito il progetto, all'accensione la configurazione viene caricata nella NVM e viene automaticamente copiata nelle celle di configurazione basate sulla SRAM in modo totalmente parallelo. Le celle di configurazione nei dispositivi CrossLinkPlus sono basate invece su flash, il che significa che questi dispositivi possono essere riprogrammati secondo necessità; inoltre, offrono una capacità di attivazione in meno di 10 ms.
Un esempio di CrossLink è LIF-MD6000-6JMG80I con 5936 celle/elementi logici, 184.320 bit di RAM totali e 37 I/O. Per dare inizio a un progetto di visione embedded, il kit di sviluppo Embedded Vision LF-EVDK1-EVN permette ai progettisti di abbinare gli ingressi MIPI basati su CrossLink con l'elaborazione dell'FPGA ECP5 per la prototipazione di progetti di visione embedded (Figura 4).
Figura 4: Il kit di sviluppo Embedded Vision LF-EVDK1-EVN di Lattice offre ai progettisti di sistemi embedded un ambiente di prototipazione software e hardware che include la capacità di abbinare schede di input e output per l'interfacciamento con numerosi sensori e display di immagini. (Immagine per gentile concessione di Lattice Semiconductor)
Per funzioni di I/O e gestione energetica: FPGA MachXO
Con centinaia di I/O, gli FPGA MachXO sono perfetti per un'ampia gamma di applicazioni che richiedono l'espansione GPIO, il bridging dell'interfaccia e le funzioni di gestione dell'accensione. I membri recenti di questa famiglia sono progettati per essere conformi a NIST e includono funzioni di sicurezza aggiuntive per preservare la sicurezza dell'hardware e del firmware del sistema.
Gli FPGA MachXO hanno un robusto set di GPIO che include caratteristiche come la capacità di applicare la tensione agli I/O indipendentemente dallo stato dei rail di alimentazione. Inoltre, mentre la maggior parte degli ingressi dell'FPGA sono preimpostati su uno stato di pull-up, gli ingressi di MachXO sono preimpostati su pull-down, il che li rende adatti per applicazioni con funzioni di controllo. Con un'accensione istantanea in meno di 10 ms, gli FPGA MachXO costituiscono soluzioni ideali per dispositivi di controllo "first on, last off" che gestiscono e sequenziano altri componenti durante l'accensione e lo spegnimento di un sistema.
I dati di configurazione nei dispositivi MachXO sono memorizzati in una memoria flash. I dispositivi MachXO, contengono anche celle di configurazione basate su SRAM. Quando il dispositivo viene alimentato, i dati di configurazione memorizzati nella flash vengono automaticamente copiati nelle celle di configurazione basate su SRAM in modo totalmente parallelo. Inoltre, mentre il dispositivo è attivo, è possibile caricare una nuova configurazione nella flash e poi far in modo che venga copiata nelle celle SRAM al momento opportuno.
Un buon esempio di dispositivo MachXO è LCMXO3LF-9400C-6BG256C con 9400 celle/elementi logici, 442.368 bit di RAM totali e 206 I/O. Una scheda di sviluppo interessante è lo starter kit MachXO3 (versione MachX03L) LCMXO3LF-6900C-S-EVN.
Figura 5: Lo starter kit MachXO3L è una scheda di breakout base che consente valutazione e sviluppo di livello semplificato per progetti basati su MachXO3L. (Immagine per gentile concessione di Lattice Semiconductor)
Sulla scheda del kit è presente una flash SPI per la valutazione delle capacità funzionali del boot esterno o del dual-boot. La scheda di breakout MachXO3L DSI LCMXO3L-DSI-EVN è consigliata per la valutazione di I/O MIPI DSI e CSI2; la scheda di breakout MachXO3L SMA LCMXO3L-SMA-EVN è consigliata per la valutazione di I/O differenziale ad alta velocità.
Progettazione e sviluppo con gli FPGA di Lattice Semiconductor
Una delle tecniche più diffuse per sviluppare utilizzando gli FPGA è quella della progettazione guidata dal linguaggio (LDD). Ciò comporta l'acquisizione dell'intento progettuale a un livello di astrazione noto come livello a trasferimento tra registri (RTL) utilizzando un linguaggio di descrizione dell'hardware (HDL), come Verilog o VHDL. Dopo la verifica tramite simulazione logica, questa rappresentazione viene inserita in un motore di sintesi, insieme a informazioni aggiuntive come il tipo di FPGA di destinazione, le assegnazioni dei pin e i vincoli di temporizzazione (ad esempio, i ritardi massimi tra ingresso e uscita). Il motore di sintesi emette un file di configurazione che viene caricato direttamente nell'FPGA o in un dispositivo di memoria esterno nel caso di FPGA basati su SRAM (Figura 6).
Figura 6: Dopo la verifica per mezzo di una simulazione logica, la descrizione del progetto RTL viene inserita in un motore di sintesi insieme a ulteriori dettagli pertinenti come il tipo di FPGA, le assegnazioni dei pin e i vincoli di temporizzazione. Il motore di sintesi emette un file di configurazione che viene caricato direttamente nell'FPGA (in caso di dispositivi basati su flash o NVM) o in un dispositivo di memoria esterno (in caso di dispositivi basati su SRAM). (Immagine per gentile concessione di Max Maxfield)
Lattice Diamond offre un ambiente completo basato su GUI per la progettazione e verifica di FPGA per i dispositivi CrossLink, MachXO ed ECP.
Come Lattice Diamond, anche Lattice Radiant offre un ambiente completo basato su GUI di progettazione e verifica di FPGA, ma rivolto agli FPGA iCE e alle future architetture.
Lattice Radiant presenta numerose funzioni e caratteristiche:
- Crittografia per la proprietà intellettuale (IP) secondo lo standard industriale IEEE 1735 e Synopsys Design Constraints (SDC) per la massima interoperabilità
- Facilità di navigazione e di debug del progetto grazie a un ambiente dotato di un set di strumenti integrati
- Semplice esecuzione dell'implementazione del progetto "con un solo clic" grazie a una nuova barra degli strumenti di processo
- Verifica incrociata completa dell'implementazione del progetto ad anello chiuso da fisico a logico
- Una funzione di incapsulamento IP che consente agli sviluppatori e ai provider IP terzi di incapsulare un IP cifrato in una forma adatta alla distribuzione
Strumenti di sviluppo di sistema LatticeMico
Lattice offre due core di processore soft, LatticeMico8 e LatticeMico32, entrambi implementabili nella struttura programmabile dell'FPGA.
LatticeMico8 è un microcontroller a 8 bit ottimizzato e completamente testato per la famiglia di dispositivi a logica programmabile (PLD) MachXO2. Può anche essere utilizzato come progetto di riferimento per le altre famiglie di FPGA. Il core del microcontroller combina un set completo di istruzioni di 18 bit di ampiezza con 32 registri per uso generale e consuma pochissime risorse del dispositivo - meno di 200 LUT nella configurazione più piccola - pur mantenendo un ampio set di funzioni.
LatticeMico32 è un microprocessore Harvard a 32 bit, con architettura RISC. Combinando un set di istruzioni di 32 bit di ampiezza con 32 registri per uso generale, LatticeMico32 fornisce prestazioni e flessibilità idonee per una vasta gamma di settori. Grazie all'architettura RISC, il core consuma pochissime risorse del dispositivo, pur mantenendo le prestazioni richieste per un'ampia gamma di applicazioni. Per accelerare lo sviluppo di sistemi a microprocessore, è possibile integrare LatticeMico32 con diversi componenti periferici opzionali compatibili con il controller WISHBONE.
Gli strumenti di sviluppo di sistema LatticeMico sono dotati di interfaccia utente grafica che permette il drag-and-drop dei core di processore e delle periferiche di LatticeMico, collegarli tutti ai bus e definire vari parametri per ogni componente, ad esempio la sua posizione nello spazio di indirizzamento del processore. Una volta definito il sistema, gli strumenti possono generare automaticamente il corrispondente RTL da simulare e sintetizzare. Il sistema include anche gli strumenti che permettono agli utenti di generare il software che sarà eseguito nei core di processore.
Strumenti di apprendimento automatico: Lattice sensAI Stack e Neural Network Compiler
Le applicazioni di apprendimento automatico (ML) e di intelligenza artificiale (IA) sono attualmente impiegate in un'ampia gamma di sistemi embedded e in tutta Internet delle cose (IoT), compreso l'Industrial IoT (IIoT).
sensAI Stack di Lattice include tutto il necessario per valutare, sviluppare e distribuire soluzioni ML/IA basate su FPGA, comprese piattaforme hardware modulari, dimostrazioni di esempio, progetti di riferimento, core IP di reti neurali, strumenti software per lo sviluppo e servizi di progettazione personalizzati. Questo stack è stato progettato per accelerare il tempo di immissione sul mercato da parte di sviluppatori di applicazioni flessibili di apprendimento automatico tanto a livello consumer che IoT industriale.
Il core IP dell'acceleratore di rete neurale convoluzionale (CNN) di Lattice è un motore di calcolo per reti neurali profonde (DNN). Il motore è ottimizzato per reti neurali convoluzionali e può quindi essere utilizzato per applicazioni basate sulla visione, come la classificazione o il rilevamento e il tracciamento di oggetti. Il core IP CNN non richiede un processore aggiuntivo essendo in grado di eseguire i calcoli richiesti.
Il Neural Network Compiler di Lattice permette ai progettisti di prendere le reti neurali create in framework di sviluppo comuni - come TensorFlow, Caffe e Keras - e compilarle per l'implementazione nelle CNN di Lattice e nei core IP dell'acceleratore CNN compatto.
Conclusione
Spesso le migliori soluzioni di progettazione sono date da combinazioni di processori e FPGA, da soli FPGA o da FPGA dotati di hard core di processore integrati. La tecnologia degli FPGA si è evoluta rapidamente nel corso degli anni ed è ora in grado di soddisfare numerosi requisiti di progettazione in termini di flessibilità, velocità di elaborazione e potenza, il che rende questi dispositivi molto utili per un'ampia gamma di applicazioni, dalle interfacce intelligenti alla visione artificiale e all'IA.
Come illustrato sopra, gli FPGA di Lattice Semiconductor si collocano nella fascia medio-bassa e sono stati realizzati con una particolare attenzione ai dispositivi a basso consumo energetico atti ad affrontare le problematiche di rete dall'edge al cloud, nell'attuale situazione di rapida crescita di vari settori: comunicazioni, industriale, informatico, automotive e beni di consumo. Lattice offre anche numerose suite di strumenti di progettazione e verifica che sono rivolti a molteplici flussi di progettazione, da quella basata sul linguaggio a quella basata su processore grafico, fino a progetti di applicazioni incentrate sull'apprendimento automatico e sull'intelligenza artificiale.
Esonero della responsabilità: le opinioni, le convinzioni e i punti di vista espressi dai vari autori e/o dai partecipanti al forum su questo sito Web non riflettono necessariamente le opinioni, le convinzioni e i punti di vista di DigiKey o le sue politiche.


