CAPITOLO 2: PLD
La PROM (Programmable Read-Only Memory) può essere definita la capostipite delle logiche programmabili. Formata da un array di celle di memoria identificato da un pattern di uni e zeri, poteva essere programmata dall’utente attraverso un programmatore di memorie o dalla fabbrica costruttrice della memoria mediante la realizzazione di una opportuna maschera.
Elemento centrale dell’architettura era l’AND array utilizzato come sezione di decodifica degli indirizzi. Quest’elemento poteva essere schematizzato come un insieme di predefinite intersezioni tra segnali provenienti da una serie di buffer e linee confluenti in una serie di AND, altrimenti denominate product term. I segnali, rigenerati dai buffer e disponibili in entrambi i livelli logici, provenivano dagli ingressi del dispositivo.
La tecnologia di programmazione One Time che caratterizzava le PROM, unita ad un’architettura utile per la progettazione digitale ed evolutasi da quella delle PROM stesse, originò, nella metà degli anni settanta, il primo dispositivo programmabile che fu poi denominato Field Programmable Logic Array (FPLA). L’architettura scelta dalla Philips fu quella PLA (Programmable Logic Array), formata cioè da un AND array divenuto ad interconnessioni programmabili e dotato di uscite convogliate in un array programmabile di OR. Una PLA, o altrimenti detta FPLA, era così individuata da un fissato numero di ingressi, di uscite e di termini di prodotto. La programmazione, allo stesso modo delle PROM, avveniva realizzando una mappa di fusione. Questi componenti non fornivano prestazioni eccezionali in termini di velocità di propagazione dei segnali e non erano assistiti da tool di progettazione CAD di agevole utilizzo.
Alla fine degli anni settanta, con l’adozione dell’architettura PAL da parte di Monolithic Memories (poi divenuta AMD), si giunse ad uno standard industriale. Pur mantenendo la struttura dell’AND array programmabile, a questo punto alimentato sia da ingressi del componente sia da feedback delle sue uscite, l’OR array divenne fisso e predefinito, e in questo modo ogni uscita era il risultato di uno specifico insieme di product term. Le uscite potevano essere registrate o meno con un flip flop e fu introdotto un software più user friendly in cui era possibile scrivere le equazioni della logica da implementare e seguire le fasi di minimizzazione delle equazioni, assegnamento dei pin e compilazione.
La fine degli anni ottanta segna un passaggio tecnologico molto importante. Si passa dalla tecnologia bipolare ai processi CMOS. Prima si affermano le tecnologie UV-EPROM e poi quelle FLASH ed EECMOS, preludio delle PLD riprogrammabili in-system.
Architettura e dimensioni subiscono evoluzioni significative grazie ai crescenti progressi nei processi di integrazione. L’architettura viene modificata in due tappe. Prima si passa da un semplice flip flop, escludibile o meno, e presente a valle della somma di prodotti, alla macrocella che consente un uso più flessibile delle risorse; successivamente si realizzano strutture di interconnessione globali capaci di interconnettere molteplici AND array presenti sullo stesso dispositivo.
Le PLD che si sono inserite nel mercato con la tecnologia OTP sono state, con il passare del tempo, soppiantate da quelle riprogrammabili, sia per la naturale evoluzione tecnologica sia per la comodità di utilizzo. Con l’avvento degli FPGA e il loro crescente sviluppo, al fine di evitare di confinare l’applicazione di una PLD ad un numero ristretto di progetti, occorreva introdurre nuovi elementi per aumentarne la competitività.
Alle richieste d’utente di I/O gestibili con tensioni miste (2.5, 3.3 e 5 V), possibilità di avere nello stesso package diverse scelte di velocità e densità (footprint compatibility), possibili cambiamenti del progetto senza alterazione della disposizione dei pin (pin locking), sia gli FPGA sia le PLD hanno prima o poi dato una risposta. Le PLD dovevano però colmare il gap che esisteva con gli FPGA da un punto di vista della riconfigurabilità sul circuito stampato. Infatti negli FPGA basati sulla tecnologia static RAM questa caratteristica è insita. È così nata per le PLD la riprogrammabilità in-system. Ma, a differenza degli FPGA static RAM che si programmano ad ogni accensione, queste PLD mantengono il contenuto della programmazione fino al momento in cui deliberatamente si decide di modificarlo.
La riprogrammabilità in-system configura la logica mediante un download, cioè un trasferimento di dati da un terminale intelligente alla circuiteria inserita nella logica stessa. Questa circuiteria, elemento aggiunto rispetto alla classica architettura di PLD, si fa carico delle operazioni necessarie alla predisposizione degli elementi programmabili come la logica d’utente richiede.
Questo approccio consente di aumentare ulteriormente la velocità di prototipazione, permette specifici test sul circuito stampato in fase produttiva, consente di effettuare la riconfigurazione in campo una volta venduto il prodotto. Inoltre, non estraendo più il componente dal circuito stampato, si evita l’eventuale danneggiamento dei pin causato dall’estrazione dallo zoccolo che a questo punto è superfluo.
Nella programmazione in-system il dispositivo usa una tensione coincidente con quella di alimentazione, ad esempio 3.3 o 5 V. Sul circuito stampato occorre prevedere 4 o 5 connessioni che collegano altrettanti pin del componente ad un sito che può essere una porta di I/O di un microprocessore o una spina per l’inserzione del cavo di download.