EO_486

DIGITAL PROGRAMMABLE LOGIC 50 - ELETTRONICA OGGI 486 - MAGGIO 2020 ra del chip sono essenzialmente “congelati nel silicio”. Questa mancanza intrinseca di flessibilità si trasforma in un problema alla luce delle considerazioni espres- se sopra. Per riuscire a coniugare prestazioni ottimali e flessibilità serve una soluzione alternativa. Questa molto spesso assume la foma di un FPGA, di combi- nazioni di microprocessori/microcontroller e FPGA, o di FPGA che integrano core di processori di tipo hard. FPGA: nozioni di base La risposta alla domanda: “Cosa sono gli FPGA?” non è semplice in quanto esistono diversi tipi di FPGA, ognu- no con diverse combinazioni di capacità e funzionalità. Il nucleo centrale di ogni FPGA è la sua struttura pro- grammabile, che si presenta sotto forma di una serie di blocchi logici programmabili (Fig. 1a). Ognuno di questi blocchi logici contiene un insieme di elementi – tra cui una tabella di ricerca (LUT -Look-Up Table), un multi- plexer e un registro – che possono essere configurati (programmati) in modo da comportarsi come richiesto (Fig. 2). Molti FPGA utilizzano LUT a 4 ingressi che pos- sono essere configurate per implementare qualsiasi funzione logica a 4 ingressi. Per supportare in modo adeguato percorsi dati più ampi utilizzati in determi- nate applicazioni, alcuni FPGA mettono a disposizione LUT a 6, 7 o addirittura 8 ingressi. L’uscita del LUT è collegata direttamente a una delle uscite del blocco logico e a uno degli ingressi del multiplexer. L’altro in- gresso al multiplexer è collegato direttamente a un in- gresso del blocco logico (e). Il multiplexer può essere configurato per scegliere tra uno di questi ingressi. L’uscita del multiplexer alimenta l’ingresso del registro. Ogni registro può essere configurato per funzionare come un flip-flop attivato dai fronti (edge) o come un latch sensibile al livello (detto questo, è sconsigliato usare all’interno di FPGA la logica asincrona sotto for- ma di latch). Il clock (o abilitazione) di ogni registro può essere configurato per essere attivo alto o attivo basso. Allo stesso modo, può essere configurato anche il livello attivo degli ingressi (o dell’ingresso) d’impo- stazione/reset. Questi blocchi logici possono essere considerati come una sorta di “isole di logica programmabile” mobili in un “mare d’interconnessione programmabile”. L’inter- connessione può essere configurata per collegare qualsiasi uscita da qualsiasi blocco logico a qualsiasi ingresso di altri blocchi logici. Analogamente, gli in- gressi primari dell’FPGA possono essere collegati agli ingressi di qualsiasi blocco logico e le uscite di qualsi- asi blocco logico possono essere utilizzate per pilotare le uscite primarie del dispositivo. Per quanto riguarda gli ingressi/le uscite primarie per uso generale (GPIO), sono presentati in banchi (grup- pi) e ogni banco può essere configurato per suppor- tare un diverso standard di interfaccia come LVCMOS, LVDS, LVTTL, HSTL o SSTL. Inoltre, è possibile configu- rare l’impedenza degli ingressi e la velocità di varia- zione delle uscite. Il livello successivo della struttura dell’FPGA include blocchi di SRAM, denominati BRAM (Block RAM) , cir- cuiti ad aggancio di fase (PLL) e circuito di gestione del clock (Fig. 1b). È possibile aggiungere anche bloc- chi di elaborazione dei segnali digitali (DSP) (definiti come slice DSP). Essi contengono moltiplicatori con- figurabili e un sommatore configurabile che permette loro di eseguire operazioni di moltiplicazione-accumu- lo (MAC) (Fig. 1c). I blocchi SERDES ad alta velocità – un’altra caratteri- stica comune degli FPGA – possono supportare inter- facce seriali gigabit. È importante notare che non tutti gli FPGA supportano tutte le caratteristiche ricordate sopra. I vari FPGA offrono set di funzionalità diverse mirate a specifici mercati e applicazioni. La struttura programmabile di un FPGA può essere utilizzata per implementare qualsiasi funzione logica o un insieme di funzioni desiderate, fino al core di pro- cessore, o anche core multipli. Se questi core vengono implementati in una struttura programmabile, vengo- no detti “soft core”. A titolo di confronto, alcuni FPGA comunemente chia- mati SoC FPGA contengono uno o più “core hard” di processore, che vengono implementati direttamente nel chip (Fig. 1d). Questi core hard di processore pos- sono includere unità a virgola mobile (FPU) e cache di primo e secondo livello (L1/L2). Allo stesso modo, funzioni d’interfacciamento delle periferiche come CAN, I2C, SPI, UART e USB posso- no essere implementate come soft core nella struttu- ra programmabile, ma molti FPGA li includono come hard core nel chip. Per le comunicazioni tra i core di processore, le funzioni di interfaccia e la struttura pro- grammabile in genere si utilizzano bus ad alta velocità come AMBA e AXI. I primi FPGA, introdotti sul mercato da Xilinx nel 1985, contenevano solamente un array di 8x8 blocchi a lo- gica programmabile (nessun blocco RAM, DSP e così via). Gli FPGA di fascia alta odierni, invece, possono contenere centinaia di migliaia di blocchi logici, mi- gliaia di blocchi DSP oltre a megabit di RAM. Comples- sivamente, possono contenere miliardi di transistor che equivalgono a decine di milioni di gate equivalenti (ad es. gate NAND a 2 ingressi).

RkJQdWJsaXNoZXIy MTg0NzE=