PLD - Per realizzare circuiti digitali di una certa complessità si possono seguire tre metodi: - utilizzare moduli integrati standard SSI, MSI, LSI, come si è visto nelle unità precedenti; - costruire dispositivi VLSI full-custom, progettati interamente ed esclusivamente per una determinata applicazione; - impiegare circuiti semi-custom ossia circuiti integrati costituiti da un numero molto elevato di blocchi elettronici elementari, le cui interconnessioni sono lasciate incomplete dal costruttore e vengono completate dal progettista mediante tecniche CAE (computer aided engineering), in modo da comporre il circuito adatto alle proprie esigenze. Denominati anche ASIC (application specific integrated circuit), comprendono i componenti a mascheratura (gate array e standard cell), che per la realizzazione richiedono ancora l’intervento del costruttore, e componenti programmabili, genericamente noti come PLD (programmable logic device), le cui connessioni interne vengono effettuate fisicamente dall’utente mediante apparecchiature simili ai programmatori di EPROM. - I PLD comprendono diverse sottofamiglie: PROM, PLA, PAL, PLS, con gli analoghi componenti cancellabili e riprogrammabili (EPLD: eresable PLD) e circuiti più complessi e potenti indicati di solito come Complex PLD e FPGA o LCA. - Il processo con cui si effettua la programmazione è strettamente legato alla tecnologia costruttiva del circuito. Con la tecnica più comune, usata per PLD bipolari, il costruttore fornisce il componente completo di contatti realizzati attraverso fusibili che possono essere bruciati al momento della programmazione per ottenere le funzioni desiderate. Nei dispositivi CMOS i contatti sono costituiti da collegamenti programmabili e cancellabili basati su MOS a gate fluttuante analoghi a quelli delle EPROM ed E2PROM. - Qualsiasi funzione logica combinatoria può essere espressa come somma di prodotti canonica ovvero come somma di tanti termini, chiamati mintermini, ciascuno costituito dal prodotto di tutte le variabili di ingresso, in forma diretta o complementata. La struttura base di un PLD è quindi formata da una matrice di porte AND (AND array), a cui sono applicate tutte le variabili di ingresso in forma normale o complementata, seguita da una matrice di porte OR (OR array), ai cui ingressi vengono applicati i termini prodotto generati dalle porte and suddette. L’architettura di tutti i PLD è sostanzialmente basata su blocchi composti da una matrice and e una matrice or, completate da elementi che consentono di ottenere terminali di uscita attivi alti, attivi bassi, complementati, programmabili, bidirezionali. Se a questi si aggiungono celle formate da flip-flop, - - - - diventa possibile realizzare anche sistemi sequenziali. Inoltre, componendo insieme più blocchi si ottengono dispositivi assai potenti in grado di implementare funzioni complesse. Le PROM rappresentano i tipi più semplici di PLD essendo costituite da un decodificatore di indirizzi, che realizza il piano and, e da una matrice programmabile a porte or. Per implementare una funzione logica mediante una PROM è sufficiente impostare i singoli mintermini a partire dalla tabella di verità delle funzioni; se si dispone di un’espressione booleana già ridotta occorre risalire nuovamente alla sua forma canonica. Il numero di funzioni che si possono realizzare con una PROM è pari al numero di bit di ciascuna parola della memoria; il risultato delle funzioni implementate si presenta sulle uscite dati. Nei circuiti PLA (programmable logic array) sono programmabili sia il piano and sia il piano or; ciò consente di ridurre le dimensioni delle matrici in quanto i termini prodotto da generare vengono scelti dall’utente sulla base delle specifiche necessità dopo aver semplificato le funzioni. Una PLA è caratterizzata dal numero (I) di ingressi, dal numero (P) di termini prodotto che possono essere implementati e dal numero (O) di uscite. Per utilizzare una PLA occorre semplificare le funzioni minimizzando il numero complessivo dei termini prodotto di tutte le funzioni. Poiché i circuiti PLA vengono programmati elettricamente dall’utente mediante bruciatura dei fusibili, spesso le PLA vengono indicate come FPLA (fìeld programmable logic array). La struttura di una PAL (programmable array logic) è costituita da una matrice and con contatti programmabili e da una matrice or a contatti fissi. Questa soluzione comporta una struttura più semplice di quella delle PLA senza in pratica imporre sostanziali limitazioni. Con un circuito PAL è possibile una maggiore flessibilità nella scelta delle celle da programmare e ciò porta a costruire componenti piccoli e veloci. Per ottimizzare la programmazione delle PAL conviene procedere alla semplificazione di ciascuna funzione da realizzare rendendone minimo il numero dei termini prodotto. Alcuni tipi di PLD presentano linee di uscita connesse a flip-flop previsti per memorizzare i dati in sincronismo con un segnale di clock. Essi consentono di implementare circuiti sequenziali secondo entrambi i modelli classici, di Moore e di Mealy. I PLD sequenziali presentano molte altre caratteristiche, in particolare molti elementi programmabili, che ne rendono più flessibile l’impiego. Alcuni consentono di programmare la tipologia dei flip-flop (SR, D, JK, T) o di scegliere la polarità delle uscite; alcuni contengono anche flip-flop con ingressi diretti pilotati da segnali generati nel PLD stesso oppure inviati dall’esterno; anche il clock, solitamente applicato ad un terminale esterno e comune a tutti i flip-flop, in certi dispositivi è individuale e generato da un termine della matrice and/or. L’architettura e le caratteristiche illustrate sono proprie di due categorie di prodotti, i PLS o FPLS (field programmable logic sequencer), in cui è programmabile la tipologia dei flip-flop, e le Registered PAL, con flip-flop di tipo D. Per rendere più flessibile l’impiego delle PAL in applicazioni sequenziali, sono stati realizzati dispositivi universali che presentano, per ciascuna uscita, macrocelle programmabili anziché semplici flip-flop. - Per consentire la modifica e il reimpiego di PLD già programmati, sono stati realizzati circuiti riprogrammabili, che ora incontrano il maggior successo commerciale. L’offerta del mercato è molto ampia ed in continua evoluzione; essenzialmente si possono individuare due categorie di prodotti: - EPLD, comprendenti dispositivi cancellabili con caratteristiche funzionali sostanzialmente equivalenti a quelle dei PLD precedentemente illustrati. Realizzati in tecnologia CMOS, essi prendono il nome di EPLD (erasable PLD) se la cancellazione avviene mediante esposizione ai raggi ultravioletti, come per le EPROM, oppure EEPLD (electrically erasable PLD) se la cancellazione avviene elettricamente, come per le E2PROM. Questi ultimi dispositivi sono anche chiamati GAL (generic array logic) e ricalcano la struttura delle più sofisticate PAL con macrocelle. I prodotti più recenti sono PLD ad alta densità, spesso cancellabili elettricamente, che vengono perciò indicati come Complex EPLD o Complex E2PLD. - FPGA, (field programmable gate array) essenzialmente costituiti da una matrice di blocchi logici configurabili, che possono essere collegati fra di loro mediante connessioni programmabili. I dispositivi che hanno incontrato il maggior successo sono quelli in cui la programmazione avviene con un procedimento software: le funzioni dei vari blocchi logici e le loro interconnessioni sono controllate da un programma di configurazione immagazzinato in una memoria contenuta nello stesso chip. La configurazione dell’intero circuito si ottiene quindi scaricando nelle celle di memoria la corretta sequenza di bit preventivamente definita. Questa classe di prodotti, sviluppata inizialmente dalla Xilinx con la denominazione LCA (logic cell array), è in rapida evoluzione e comprende ormai circuiti con strutture molto complesse e con densità di integrazione e prestazioni elevatissime. - Nel settore elettronico si sono ormai imposte le tecniche CAD (Computer Aided Design) e CAE (Computer Aided Engineering) per la progettazione e lo sviluppo di circuiti. Sono comuni programmi dedicati alle principali fasi di lavoro quali disegno di schemi elettrici, progettazione di circuiti stampati, sviluppo di progetti con dispositivi programmabili, simulazione.