FPGA: l’interminabile battaglia tra Altera e Xilinx. Ma occhio ad Actel e Lattice!

AXLA

Il Mercato FPGA è una vera e propria battaglia tecnologica e manageriale, in cui in assoluto Xilinx e Altera sono i dominatori incontrastati. Ma alcuni vendor sono riusciti a ritagliarsi i propri spazi, tra cui Lattice Semiconductor e Actel, che hanno trovato dei piccoli varchi e li hanno aggrediti con audacia. Vediamo più da vicino cosa sta succedendo per scoprire cosa tutte queste aziende hanno da offrirci.

E' in atto una vera e propria battaglia tecnologica tra i più grandi vendor di FPGA. Altera e Xilinx si inviano attacchi continui e vicendevoli a suon di miglioramenti delle tecnologie dei propri device, di nuove feature, di software sempre più prestanti e più vicini all'utente. Più un mercato di nicchia è invece quello di Actel, che invece è riuscito a ritagliarsi uno spazio intoccabile all'interno di un sistema più “variegato”: quello dell'aerospazio, di cui è leader incontrastato.  Più complicato il lavoro di Lattice Semiconductor, che ha deciso di "sgomitare" con i grandi in una parte del mercato su cui questi avevano il predominio, puntando però sul Low Cost.

Ma come ha avuto inizio questa battaglia?

Nel precedente articolo vi ho spiegato le origini dell'FPGA. Ma chi ha avuto l'idea di sfruttare delle tecnologie esistenti per ottenere un dispositivo assolutamente all'avanguardia, porta il nome di Ross Freeman, cofondatore con Bernard Vonderschmitt di Xilinx Inc. Grazie a tale invenzione, che risale al 1984 (entrata poi in commercio nel 1985), Ross Freeman entrò di diritto a far parte della Hall of Fame degli inventori.

La storia di Xilinx e delle prime FPGA è illustrata, in modo però poco dettagliato, anche su Wikipedia.

Possiamo senz'altro dire che, dalla nascita del primo dispositivo FPGA, l'XC2064 (il cui Datasheet è in allegato), fino agli inizi degli anni novanta, Xilinx dominò incontrastata un mercato di cui era unico protagonista.

Ma proprio nei primi anni novanta iniziò a ritagliarsi una piccola fetta di mercato Actel, che giunse nel 1993 ad avere il 18% di questo ormai ex monopolio, proprio in quel periodo in cui stava inserendosi nel mercato chi, da alcuni anni a questa parte, è in assoluto il più grande competitor di Xilinx: Altera.

Se fino ai primi anni novanta gli FPGA venivano utilizzati esclusivamente per le telecomunicazioni, fu proprio alla fine dei '90 che iniziarono a ritagliarsi i loro spazi in tutti gli altri ambiti.

Dal 1998 i dispositivi di Xilinx sono divisi in 2 famiglie fondamentali: Spartan e Virtex.

La Spartan è un dispositivo di fascia economica, con tecnologia meno spinta ma anche con bassi consumi di potenza. Nata nel 1998, la famiglia Spartan ha subito notevoli evoluzioni, per arrivare all'odierna Spartan 6.

Anche la Virtex vanta la stessa anzianità, ma si colloca in una fascia di consumatori decisamente differente.

Tecnologia molto più spinta, nelle ultime evoluzioni vanta sicuramente un'alta predisposizione per applicazioni in real-time, Digital Signal Processing, e comunicazioni ad altissima velocità, ma a prezzi notevolmente più elevati.

Dal 2010 si sono unite al gruppo altre due famiglie: Artix e Kintex, tecnologie intermedie che vanno a coprire un mercato che ha necessità differenti.

Ultima arrivata è la famiglia Zynq, che invece si identifica come SoC (System on Chip), in quanto contiene al suo interno molto più di un dispositivo FPGA.

Il primo FPGA della famiglia Altera risale invece al 1992, e la scalata verso i vertici già occupati dai competitors è stata davvero esaltante.

Nel 1995 la battaglia si è manifestata attraverso l'annuncio di Xilinx dell'FPGA più veloce del settore, mentre Altera annunciava invece l'uscita dell'FPGA con il maggior numero di gate tra quelle in commercio.

Altera ha invaso il mercato con 3 diverse famiglie di dispositivi, ognuna orientata ad una diversa fascia di mercato:

  1. Cyclone: fascia economica e a basso consumo di potenza.
  2. Stratix:   fascia alta, con alte prestazioni e grande disponibilità di porte logiche.
  3. Arria :  fascia intermedia, che va incontro a chi ha grandi pretese ma non vuole o non può permettersi una Stratix.

Da quel momento lo "spalla a spalla" tra i due vendor ha fatto sì che la crescita tecnologica di questi dispositivi sia ancor oggi esponenziale e quasi stupefacente.

Livelli tecnologici attuali

Xilinx...

Per parlare dello stato tecnologico attuale, possiamo far parlare prima di noi le specifiche riportate nei siti dei vendor.

Ad esempio la Xilinx riporta le seguenti tabelle:

                Figura 1: Confronto tecnologico tra le varie famiglie Xilinx

                  Figura 2: Confronto tecnologico tra le varie famiglie Xilinx

Di grande spessore sono senz'altro il numero massimo raggiunto di celle logiche, di memorie (grazie alla tecnologia denominata Heterogeneous 3D, che potete studiare grazie all'allegato), di blocchi DSP, ma fanno letteralmente venire le vertigini le elevate velocità raggiungibili in comunicazioni seriali attraverso i transceiver: la Virtex 7 vanta velocità di comunicazione pari a quasi 30 Gbps per ogni transceiver, che con un numero di transceiver pari a 96 riesce a garantire velocità che si avvicinano a 3Tbps, permettendo tra l'altro l'utilizzo del PCI Express di terza generazione.

Ma è bene non dimenticare l'ultimo nato dell'armata Xilinx:   Zynq

                  Figura 3: Schema a blocchi di una Xilinx Zynq

E' evidente dallo schema a blocchi come il suo punto di forza sia la struttura SoC. Contiene al suo interno un processore ARM Cortex A9 Multicore, che lavora indipendentemente dalla sezione a logica programmabile. Questo permette, tra le tante cose, di modificare il firmware che definisce il funzionamento della logica anche durante il funzionamento del chip.

Poi sono presenti ADC, sensori termici, e molteplici interfacce verso l'esterno, compresa una PCIe di seconda generazione: un vero e proprio System on Chip.

...e Altera

Per quanto riguarda invece Altera, le immagini che vorrei mostrarvi riguardano la famiglia Stratix:

                Figura 4: Evoluzione tecnologica della famiglia Altera Stratix

Questa tabella mostra la vertiginosa evoluzione tecnologica avuta negli anni con la famiglia Stratix. In particolare con l'ultima nata, ancora in pancia in realtà, si è raggiunti un livello di integrazione incredibile, grazie alla tecnologia Tri-Gate, ampiamente descritta nel documento allegato.

Nella tabella di seguito invece abbiamo le 3 varianti della Stratix 10, tra cui vi evidenzio la GT, che vanta transceiver capaci di trasportare fino a 56 Gbps

     Figura 5: Breve descrizione delle diverse Altera Stratix 10 disponnibili sul mercato

Per quanto riguarda i SoC, vi mostro quello che è attualmente il top per Altera: Arria 10.

                     Figura 6: Schema a blocchi del dispositivo Altera Arria 10

Anche qui possiamo vedere un multicore ARM Cortex, interfacce di vario tipo, DMA già pronti all'uso, ma molto importante è certamente la memoria FLASH interna di tipo NAND , vera e propria innovazione, considerando che in genere ogni FPGA va affiancata ad una memoria flash contenente il firmware da scaricare all'accensione.

I motivi per scegliere l'una o l'altra tecnologia sono molteplici, e non sarò io a dirvi se una delle due è meglio dell'altra. Di sicuro non trascurabili in questa scelta sono i software di sviluppo.

Software di sviluppo: Altera Quartus II e Xilinx VIVADO 

Sicuramente uno dei dubbi che avete in questo momento è: "ok, tutto bello, bravi 'sti vendor, ma come faccio io ora a utilizzare tutta questa bella tecnologia?"

Ed è qui che entrano in gioco i potenti tool di sviluppo realizzati e forniti dai vendor.

Il loro compito è quello di assistere il progettista in ogni fase dello sviluppo di un progetto: dalla scrittura del codice VHDL/Verilog (a cui ho accennato nel precedente articolo, e che descriverò nel dettaglio in futuro), alla simulazione del sistema, alla sintesi, per poi passare al routing, fitter, all'analisi timing, e alla generazione del file da downloadare nel dispositivo. Ma questa è solo la base di partenza. Una delle funzionalità fondamentali, ad esempio, messe a disposizione dai tool di sviluppo, è l'analizzatore di stati logici interno (Chipscope per Xilinx e Signal Tap per Altera), attraverso cui, durante i test su scheda, si possono osservare i movimenti dei segnali interni come se avessimo un analizzatore di stati logici.

Mi scuso con i fan di Xilinx, ma ho selezionato Altera Quartus II per descrivervi il primo approccio ad un tool di sviluppo, ma vi garantisco che i primi passi da compiere sono quasi del tutto analoghi per i due Software, e non credo che qualcuno avrà dei problemi a convertire le mie indicazioni "in formato Xilinx".

Altera Quartus II (per gli amici solo Quartus) è un software molto user-friendly, con interfaccia semplice (anche se allo stato attuale tutti i software di questo tipo tendono ad avere un'interfaccia comune) e tutta una serie di funzionalità che consente al progettista di avere tutto il flusso di progetto sotto controllo.

All'apertura il Quartus vi si presenterà così:

                 Figura 7: Altera Quartus II - Istruzioni per l'uso 1

Scegliendo File -> New  si aprirà la finestra New (Figura 7), da cui poter scegliere varie opzioni. Per creare un nuovo progetto basterà selezionare la prima opzione (selezionata nell'immagine  di Figura 7  ). A questo punto si aprirà una finestra popup in 5 pagine, tramite cui poter scegliere il nome del progetto, il dispositivo (i dispositivi devono essere installati separatamente), eventuali file di progetto già pronti da caricare. Nell'immagine seguente vi mostro come scegliere il dispositivo:

                  Figura 8: Altera Quartus II - Istruzioni per l'uso 2

Ci sono dei filtri che ci permettono di semplificare la ricerca nella lista, e una volta selezionato il dispositivo specifico, comprese le sue dimensioni in termini di numero di porte logiche disponibili, la sua velocità, numero di pin, si passa alla schermata di progetto:

                  Figura 9: Altera Quartus II - Istruzioni per l'uso 3

In figura 9, si vede evidenziato, in alto a sinistra, il nome del progetto. Una volta caricati i file, basterà sintetizzare il progetto e sarà visibile tutto l'insieme dei file come menù a cascata gerarchica a partire dal top level.

Abbiamo in basso una console per comandi in formato tcl, una finestra dei messaggi, poi a sinistra tra la finestra del progetto e la console dei comandi abbiamo tutte le fasi da eseguire sul nostro progetto: sintesi, fitter, analisi timing, etc.

Nella finestra grande invece vedremo i nostri file, i report, gli schematici nel caso li volessimo usare, ...

Tra le finestre a scorrimento del menu invece, importante è la finestra Tools, visibile in figura 9, in cui è possibile selezionare uno dei tanti potenti "aiuti" che il Quartus è in grado di darci. Fondamentali sono il Megawizard Plug-in Manager, attraverso cui è possibile selezionare, configurare e quindi instanziare nel nostro progetto tutta una serie di Macro IP (Intelectual Property), elementi già pronti per l'utilizzo, come Memorie, interfacce, Bridge, Buffer, e di cui non si può davvero fare a meno. Ma davvero potente è il Qsys (innovazione del SOPC builder, che ancora esiste ma è in obsolescenza). E' un sistema che permette, attraverso un bus di interconessione, di utilizzare un microprocessore e tante altre macro in un sistema di "arbitrators" autogestito, che per l'utente è trasparente quasi come collegare tra loro più pezzi di una costruzione LEGO.

                       Figura 10: Altera Quartus II - Istruzioni per l'uso 4

La figura 10 ci illustra il sistema Qsys. Sulla sinistra possiamo vedere la lista di tutte le IP, con menù a cascata, e una casella di ricerca per rendere il lavoro più semplice. Sulla destra invece vediamo il nostro sistema, con le interconnessioni gestite in modo grafico.

Nell'esempio c'è un Nios (microprocessore di tipo Soft-Macro, messo a disposizione su dispositivi Altera), e un'interfaccia ad una memoria Flash.

Con Soft-Macro si intendono quelle macro che non sono già cablate e sempre disponibili, bensì utilizzano le risorse FPGA per realizzare le funzioni richieste. Si distinguono dalle Hard-Macro, che invece sono precablate nel dispositivo, e le sue risorse non possono essere utilizzate per altre funzionalità.

I vantaggi di una Hard-Macro sono sia la migliore efficienza che la garanzia di averle sempre disponibili, non c'è quindi il rischio che manchino le risorse. Ovviamente lo scotto da pagare è appunto la necessità di dedicare uno spazio FPGA a quella Macro, e quindi per chi non la usa può essere vista come spazio perso.

Hard-Macro può essere considerato ad esempio il processore Multicore della Arm utilizzato nelle ultime versioni di FPGA di tipo SoC, come visto in precedenza nei casi Zynq e Arria 10, ad esempio.

Per inserire il sistema generato in Qsys basta instanziarne il top level di tale sistema all'interno del codice VHDL che costituisce il nostro top level di progetto, o se si preferisce lavorare in schematico, basta collegare gli ingressi e le uscite del blocco generato all'interno dello schematico realizzato.

Come primo approccio, direi che è sufficiente.

Ma dove sono finiti gli altri vendor???

Vi ho riempito così tanto di parole su Xilinx e Altera, e sembra che stia trascurando gli altri vendor già citati. Premesso che questo articolo non ha il compito di suggerirvi quale dei dispositivi sia meglio dell'altro, quale software sia migliore, quale vendor abbia la migliore assistenza tecnica (anche questo è un argomento fondamentale nella scelta di un FPGA, ma purtroppo non è un parametro valutabile da chi si immette in questo mondo per la prima volta...), Xilinx e Altera godono della massima fiducia del mercato, e ognuna dei due ha dei vantaggi rispetto all'altro da pubblicizzare, che sia la maggiore predisposizione al Digital Signal Processing, vantata da Xilinx, alla migliore interfaccia utente facilmente riscontrabile con Altera. Ma allora come ci si può inserire in questo mercato?

Lattice Semiconductor ....

Lattice Semiconductor ha deciso di puntare sul Low Cost.

E la strategia è stata vincente: una delle ultime stime di mercato, mostrata nella figura seguente, pone Lattice Semiconductor  a percentuali di circa il 6% del market share di FPGA.

                           Figura 11: Market share FPGA al 2010

Sembrano ovviamente valori molto bassi, ma se si considera che la guerra tecnologica tra i due leader porta ad velocità di evoluzione dei device difficilmente perseguibile, è un gran risultato riuscire a ritagliarsi una fetta di mercato di queste proporzioni, considerando anche che l'utilizzo di FPGA è in continuo aumento, e quelle che sembrano piccole percentuali nascondono comunque grandi numeri.

Giocano senz'altro a suo favore: affidabilità dei dispositivi (utilizzati dal sottoscritto), buona e semplice interfaccia utente, software di sviluppo davvero ben fatto. Oltre al già citato Low Cost, che permette di aggiungere alla clientela anche chi ha bisogno di pochi pezzi e non per questo sia disposto a spendere tanto quanto propongono i concorrenti.

Importante: Low Cost non vuol dire assolutamente bassa qualità. Tra i prodotti di Lattice dobbiamo certamente citare la famiglia XP2, che è realizzata in tecnologia FLASH non-volatile e soddisfa tutti i requisiti di sicurezza e affidabilità richiesti in ogni campo in cui questi sono parametri fondamentali. Inoltre citiamo anche ECP2, la famiglia Low Cost (che per un vendor basato sul Low Cost, vi faccio immaginare di quali prezzi bassi possano avere... con 28$ possiamo avere una FPGA!!!)

Qualcuno potrà anche dirmi: che ci faccio con una FPGA da 28$? Io posso dirvi solo che la scelta di una FPGA è basata sempre sulle necessità di progetto. Succede spesso che un'FPGA non debba essere usata per comunicazioni a velocità di decine di Gbps o per milioni di celle, per cui mettere a disposizione di un utente dispositivi con tecnologia non spinta non è assolutamente uno svantaggio: immaginate se Samsung, Nokia, etc.  non producessero più quei telefoni da 19,90! Anche chi non ha bisogno di elevate prestazioni (tipo mia nonna!) ha diritto ad avere un telefono che faccia solo quello di cui si ha bisogno. Ovviamente la similitudine è un po' forzata, ma serve a rendere l'idea!

Il tool di sviluppo si chiama Lattice Diamond, e sostituisce il vecchio ISPLever.

Molto semplice da usare, altrettanto affidabile, il suo analizzatore di stati logici si chiama Reveal, ed è uno strumento davvero interessante.

... e Microsemi Actel

Il mercato che invece ha scelto di aggredire Actel (recentemente acquisita da Microsemi) è quello dell'alta affidabilità, della sicurezza e del basso consumo di potenza, necessari ad esempio in ambito Aerospace, Militare, ma non solo.

Per avere un'indicazione generale, vi consiglio di osservare il documento allegato che parla del dispositivo SmartFusion 2, antenato di SmartFusion, ampiamente e correttamente descritto in questo interessantissimo articolo.Vi sottolineo la differenza sostanziale rispetto ai maggiori competitor di cui sopra: l'utilizzo della tecnologia Flash (vista solo in una famiglia di Lattice Semiconductor), che rispetto alla tecnologia SRAM, è intrinsecamente sicura, in quanto per il caricamento del Firmware non ci sono passaggi di dati da un dispositivo ad un altro che potrebbero essere intercettati, "sniffati" o alterati; è inoltre robusta rispetto a problemi di SEU (Single Event Update, in questo documento potete rendervi conto a pieno di che si tratta).

Il tool di sviluppo si chiama Actel Libero IDE, ha un'interfaccia iniziale che differisce un po' dai tool precedentemente descritti, essendo un po' più "grafico" in molte opzioni, come potete osservare nell'illustrazione seguente.

                                 Figura 12: Actel Libero IDE - Project Flow

Si ha in questo modo più chiarezza visiva del Flusso di Progetto, e le varie funzionalità sono attivabili "clickando" direttamente dal grafico

L'analizzatore di stati logici si chiama Identify, ed anch'esso è uno strumento molto interessante. Cito solo la possibilità di scegliere i segnali direttamente dal codice VHDL del progetto, e  se si passa a file gerarchicamente superiori o inferiori, eventuali segnali già selezionati sono contrassegnati come già inseriti. Per chi non ha dimestichezza con il codice VHDL forse è un concetto non chiaro, ma vi invito a tenervelo in mente quando sarete progettisti esperti, perchè vi accorgerete che è una funzionalità davvero comoda e utile.

Tutte queste elevate caratteristiche descritte hanno certamente delle controindicazioni: Actel non vanta prestazioni altrettanto elevate in termini di velocità di trasmissione, e di numero di celle utilizzabili. Ma di certo chi ha necessità di rispettare determinati requisiti di sicurezza, è disposta anche a costi elevati per avere dispostivi che soddisfino tali requisiti. Si può senz'altro dire che anche la strategia di Actel è stata vincente.

...per concludere

Ovviamente, se credevate che con questo articolo avrei risposto alla domanda del secolo: "è meglio Xilinx o Altera?", certamente non avrete risposta da me (e secondo me non l'avrete mai!). Le differenze sono varie, ed i motivi per scegliere l'una o l'altra famiglia sono davvero tanti. Vi accorgerete solo durante l'utilizzo se un FPGA fa effettivamente al caso vostro o se forse sarebbe stato meglio utilizzare un dispositivo di un altro vendor o semplicemente di un'altra famiglia, e l'esperienza sarà senz'altro necessaria per poter scegliere in seguito il dispositivo davvero adatto alle vostre necessità.

Ciò che senz'altro vorrei lasciarvi come consiglio e memoriale è: non sottovalutate le alternative.

 

Quello che hai appena letto è un Articolo Premium reso disponibile affinché potessi valutare la qualità dei nostri contenuti!

 

Gli Articoli Tecnici Premium sono infatti riservati agli abbonati e vengono raccolti mensilmente nella nostra rivista digitale EOS-Book in PDF, ePub e mobi.
volantino eos-book1
Vorresti accedere a tutti gli altri Articoli Premium e fare il download degli EOS-Book? Allora valuta la possibilità di sottoscrivere un abbonamento a partire da € 2,95!
Scopri di più

5 Comments

  1. Tiziano.Pigliacelli Tiziano.Pigliacelli 4 ottobre 2013
  2. Giorgio B. Giorgio B. 7 ottobre 2013
  3. Tiziano.Pigliacelli Tiziano.Pigliacelli 7 ottobre 2013
  4. Tiziano.Pigliacelli Tiziano.Pigliacelli 5 novembre 2013
  5. Tiziano.Pigliacelli Tiziano.Pigliacelli 24 novembre 2013

Leave a Reply