58 G2 H2 Dispositivi logici programmabili (PLD) Un dispositivo logico programmabile costituisce una grande piattaforma sulla quale è possibile cablare circuiti che richiederebbero una gran quantità di integrati logici della piccola e media scala di integrazione, e un gran numero di collegamenti. Un PLD è un integrato contenente molti circuiti logici di base combinatori e sequenziali e ciò che occorre per collegarli e realizzare progetti anche alquanto complessi. uesto capitolo propone alcune informazioni di base sulla loro struttura. Alcuni PLD vanno programmati dal costruttore che, in base alle specifiche del cliente, crea una apposita maschera, Mask, da applicare nelle ultime fasi di realizzazione; per questo motivo nella sigla di questi dispositivi compare spesso la lettera M. Altri sono programmabili sul campo, Field, di applicazione dall utilizzatore, e nella sigla che li contraddistingue compare la lettera F; tra questi alcuni sono anche riprogrammabili direttamente sul sistema di cui fanno parte senza doverli estrarre da esso. G2. Dalle PROM agli Array Logici Programmabili PLA e FPLA Si è osservato che ciascuna uscita di una ROM è una funzione logica nella prima forma canonica OR di AND (paragrafo G.2 e figura G.7). In una ROM con n variabili di indirizzo si possono incidere tante funzioni logiche di n variabili quante sono le uscite. La figura G2. propone a titolo di esempio lo schema di una memoria programmabile 8 4 (8 parole di 4 bit) con cui sono state realizzate 4 funzioni. 7 A2 A A decoder 6 5 4 3 2 Figura G2. Funzioni realizzate su PROM. rd cs D3 D2 D D
G2 Dispositivi logici programmabili (PLD) 59 La matrice con 8 4 incroci tra righe e colonne contiene a ciascun incrocio un dispositivo (con gate flottante, o con flotox): i cerchietti agli incroci indicano che lì la matrice è stata condizionata in modo da portare sulla colonna che costituisce la OR un quando la riga su cui sono posti viene attivata. La mancanza del cerchietto su un incrocio indica che, a riga attivata, la colonna presenta un livello. Dal punto di vista logico la OR ha 8 ingressi ma come si è precedentemente visto essa è realizzata come OR cablata e nella figura è sufficiente accennarne il simbolo. Si esprimano come somma di minterm le funzioni D 3, D 2, D, D realizzate nello schema di figura G2.. ESEMPIO D 3 = m 7 + m 4 + m 3 + m D 2 = m 7 + m 5 + m 4 + m 2 D = m 7 + m 4 + m 3 + m + m D = m 6 + m 5 + m 2 Si sa che per realizzare funzioni logiche non sono necessari tutti i possibili minterm forniti da un decoder. Gli Array Logici Programmabili (PLA) sono come delle ROM in cui il decoder è sostituito da una matrice di AND cablate di cui si possono decidere gli ingressi. Essi sono più economici e versatili delle ROM nella realizzazione di funzioni booleane. Molti PLA contengono un adeguato numero di flip-flop e perciò con essi si possono realizzare, anche senza componenti esterni, circuiti sequenziali complessi. La figura G2.2 mostra la struttura essenziale di una FPLA. In essa si distinguono un piano AND, la matrice con gli ingressi I i, e un piano OR che riceve le uscite x i del piano AND e ha come uscite le funzioni y i ; a ciascun incrocio tra righe e colonne di una matrice c è una cella, come quella mostrata in alto a sinistra, costituita per esempio da un dispositivo con flotox. Ciascuna colonna x i è la AND cablata di quegli ingressi I i o I i che, dopo la programmazione, resteranno in grado di condizionarne il livello logico. Ciascuna delle righe y i è la OR cablata di quelle x i che dopo la programmazione resteranno in grado di condizionarla. Piano AND R I3 I2 I I x3 x2 x x y3 Piano OR y2 y y Figura G2.2 Piano AND e piano OR di una FPLA.
52 Modulo G Circuiti programmabili e a programma La programmazione della FPLA consiste nel lasciare solo quei collegamenti che realizzano le funzioni desiderate. Essi vengono indicati con dei cerchietti, gli incroci non marcati da cerchietti indicano che lì il collegamento è stato rimosso. La figura G2.3 rappresenta con simboli logici lo stesso dispositivo della figura precedente, con in più l indicazione dei collegamenti che si vogliono programmare e con la logica dei circuiti d uscita. Nell esempio di figura gli ingressi delle XOR vanno programmati in modo da restare al livello basso, salvo l ultimo che perciò utilizza la XOR come NOT. Le espressioni delle funzioni ottenute sono le seguenti: y3 = x3 + x = I3I2II + I3 I y2 = x2 + x = I3I2II + I2I y = x3 + x2 = I3I2II + I3I2II y = x = I3 + I (si è applicato il teorema di De Morgan) Rispetto all esempio proposto, i dispositivi FPLA in realtà sono dotati di un numero di gran lunga maggiore di ingressi, di termini prodotto, e di uscite; i punti di incrocio da programmare sono dell ordine di qualche migliaio. Le loro celle sono realizzate con tecnologie diverse, per esempio con diodi e fusibili (e in questo caso non sono riprogrammabili) o con MOS a gate flottante come nelle EPROM. Inoltre le uscite sono di tipo 3-state e possono essere negate grazie alla presenza di porte XOR il cui secondo ingresso può esser programmato collegandolo o no a massa. Come per le EEPROM la programmazione di FPLA richiede strumentazione hardware e software fornita dai costruttori insieme a programmi per la progettazione e la simulazione. Figura G2.3 Diagramma funzionale di una FPLA. I3 I2 3 2 I I x3 x2 x x y3 y2 y y CE
L integrato PLS G2 Dispositivi logici programmabili (PLD) 52 Il PLS è un 6 48 8 programmable logic array prodotto dalla Philips; esso ha 6 ingressi, 48 termini prodotto, 8 uscite. I punti di incrocio tra righe e colonne sono costituiti da diodi con fusibili. La logica dei circuiti d uscita, è del tutto simile a quella precedentemente descritta. I punti di incrocio sono in tutto 928 (6 2 48 + 48 8 + 8). L integrato PLS45 Il PLS45 della Philips è un FPLA a fusibili; esso ha 6 ingressi I I 5, 64 termini prodotto, 8 uscite 3-state F ciascuna proveniente dall uscita di un flip-flop, un ingresso di clock, uno di preset/oe. Altri 8 flip-flop con uscite P sono utilizzabili come uscite di stato facendole rientrare come ingressi della rete combinatoria. Anche due delle uscite della matrice OR sono riportate indietro nella parte AND dopo essere state negate. uest integrato è adatto per la realizzazione di macchine sequenziali. FE* I7 2 28 27 I8 CLK I7 2 28 27 I8 Figura G2.4 Integrati PLS e PLS45. I6 3 26 I9 I6 3 26 I9 I5 4 25 I I5/CLK 4 25 I I4 5 24 I I4 5 24 I I3 6 23 I2 I3 6 23 I2 I2 7 22 I3 I2 7 22 I3 I 8 2 I4 I 8 2 I4 I 9 2 I5 I 9 2 I5 F7 9 CE F7 9 INIT/OE F6 8 F F6 8 F F5 2 7 F F5 2 7 F F4 3 6 F2 F4 3 6 F2 4 5 F3 4 5 F3 FE*= Fuse Enable G2.2 Programmable Array Logic (PAL, FPAL) uesti dispositivi mantengono la stessa struttura dei PLA ma in essi è programmabile solo il piano delle AND e, in genere, il dispositivo d uscita, OLC (Output Logic Cell), contenente un flip-flop e dispositivi come multiplexer e 3-state. La figura G2.5 mostra lo schema ridotto nel numero di ingressi e di uscite di un dispositivo del genere. In essa i contatti programmabili sono identificati mediante numerazione; i punti di congiunzione neri sono fissi, essi portano sulle colonne i segnali di ingresso e quelli di feedback; i cerchietti indicano i contatti programmati per realizzare il circuito dell esempio 2. Come si vede, ciascun ingresso occupa due colonne, altre due colonne sono per l I/O; le AND cablate sono individuate dalle righe della matrice di contatti programmabili.
522 Modulo G Circuiti programmabili e a programma 2 3 4 8 2 ckcl 6 OLC 32 48 64 Cl D ck MUX I/O I u 8 96 OLC 2 38 Cl D ck I/O 44 MUX I OE 6 76 OLC 92 28 Cl D ck I/O 2 224 MUX I 2 24 256 OLC 272 298 Cl D ck I/O 3 34 MUX I 3 Figura G2.5 Esempio di struttura di un PAL. Il segnale di reset in genere arriva, come il segnale di clock, da una linea comune dedicata. Nell esempio di figura c è un unico segnale di clock per ciascuna delle celle d uscita, mentre per ciascun 3-state d uscita c è una AND dedicata al suo controllo. Ciascuna funzione OR prevede quattro AND, e dunque, se presa singolarmente, può realizzare funzioni che abbiano solo 4 implicanti. La limitazione si supera però se si prevede nell OLC, come avviene di fatto, la possibilità di far uscire il dato anche senza passare dal flip-flop; in tal caso lo si può far rientrare per essere posto in ingresso su un altra OR.
G2 Dispositivi logici programmabili (PLD) 523 Si progetti sulla PAL di figura G2.5 un contatore modulo 5 le cui funzioni d eccitazione sono le seguenti: D 2 = u + u 2 ; D = u( + ) + u ( 2 + ); D = u 2 + u ( 2 + ) ESEMPIO 2 Si utilizzano I come abilitatore delle uscite O 2, O, O e I = u come ingresso di controllo di up/down, si collega a massa il selettore dei MUX in modo da riportare indietro le uscite dei flip-flop. Partendo dalle AND più in alto si sono realizzati gli implicanti u 2, la terza AND dà u 2, la quarta u, e la funzione D. Discorso analogo vale per il resto del circuito. In figura G2.6 è visibile un altro possibile schema per la OLC dove il livello logico dei selettore dei MUX è programmabile in modo da scegliere come feedback l I/O o lo stato del flip-flop. I dispositivi PAL, oltre che per il tipo di tecnologia, sono caratterizzati dal numero di ingressi e uscite, dalla distribuzione delle AND sui dispositivi OR, dalla condivisione del segnale di clock o dell abilitazione dei 3-state d uscita, e infine dalla struttura delle celle d uscita. L integrato 22V Il 22V viene prodotto in almeno 3 versioni: con matrice a fusibili, con MOS a gate flottante (tipo uv-eprom) e con MOS flotox (E 2 PROM). Come per altri integrati di questo tipo la sigla, 22V, si riferisce al numero complessivo degli ingressi disponibili (22) e al numero degli ingressi utilizzabili anche come uscite (I/O); la V allude alla versatilità dei circuiti d uscita. La figura G2.6 mostra la logica di una sua macrocella di I/O. In ciascuna di esse l uscita della OR va sull ingresso D di un flip-flop e, con il suo complemento, su due ingressi di un multiplexer of 4. Sugli altri due ingressi del Mux vanno le due uscite e del flip-flop. Un secondo multiplexer riceve l uscita negata del flip-flop e l ingresso/uscita della macrocella. Output Logic Macrocell 2 From Clock Buffer Cl Sin. S D ck 3 G 3 MUX S G S Figura G2.6 Macrocella di I/O di un integrato 22V.
524 Modulo G Circuiti programmabili e a programma I dispositivi S ed S, qui rappresentati come MOS a gate flottante, sono anch essi programmabili e decidono il funzionamento del circuito d uscita secondo la tabella G2.. Tabella G2. Programmazione dei circuiti d uscita dell integrato 22V. S S Feedback Uscita da registro da registro, negata da registro da registro da I/O da OR, negata da I/O da OR G2.3 Dispositivi Logici Programmabili Complessi (CPLDs, FCPLDs) uesti dispositivi contengono array di SPLD (PLA o PAL, ovvero Dispositivi Logici Programmabili Semplici) collegabili tra loro e con i dispositivi di Input/Output mediante una rete di interconnessioni anch esse programmabili. La loro capacità logica corrisponde a quella di diverse decine di SPLD. Lo sviluppo dei circuiti su CPLD richiede l utilizzo di strumenti software che, a partire dalla descrizione delle funzioni che si vogliono realizzare, consentono di definire il circuito all interno del CPLD scelto, di simularlo, programmarlo e infine collaudarlo. G2.4 Gate Array Programmabili (MPGAs, FPGAs) uesti dispositivi contengono una matrice di blocchi logici configurabili (Configurable Logic Bloc), una rete di interconnessioni, un insieme di blocchi di input/output, tutti programmabili, figura G2.7. Le linee di interconnessione sono di varia lunghezza, in modo che tra blocchi logici vicini è possibile realizzare collegamenti più corti. I/O B Figura G2.7 Struttura di un Gate Array programmabile.
G2 Dispositivi logici programmabili (PLD) 525 I principali integrati FPGA in commercio sono realizzati con tecnologie SRAM o con antifusibili. uesti sono switch in tecnologia MOS, ciascuno con le due parti inizialmente isolate da un sottile strato di dielettrico o di silicio amorfo, e che si fondono insieme se sottoposte a un adeguato impulso. Non sono riprogrammabili ma occupano poco spazio e, grazie all alta concentrazione di collegamenti, consentono di utilizzare blocchi logici più semplici. Inoltre hanno valori più bassi di resistenza e capacità elettriche. In alternativa, i gate dei MOS che fungono da interruttore tra due linee, o gli ingressi di selezione di multiplexer adibiti alla selezione dei segnali da trasferire, sono polarizzati dalle uscite di celle di memoria statica da programmare a tal proposito. Nell esempio di figura G2.8 le celle in alto a sinistra e in basso a destra sono collegate grazie al condizionamento di MOS e Mux da parte delle celle di SRAM. Le SRAM vengono anche utilizzate, al posto della logica usata negli array programmabili, per realizzare funzioni. Diversamente dai dispositivi con tecnologia EEPROM, gli FPGAs con tecnologia SRAM possono essere riprogrammati un numero illimitato di volte. Naturalmente il sistema che li utilizza appena viene acceso deve, come prima cosa e prima di utilizzarli, ricopiare nelle SRAM del FPGAs la configurazione richiesta. Dato il loro costo, l utilizzazione di questi dispositivi conviene quando si deve produrre in grandi quantità qualcosa di molto complesso che consenta di sfruttarne buona parte delle risorse. Progettare dispositivi così complessi richiede d altra parte una buona conoscenza degli automi a stati finiti; occorre poi una discreta conoscenza di linguaggi atti a descrivere l hardware che si vuole realizzare, per esempio il VHDL (Hardware Description Language), e di uno strumento CAD (Computer Aided Design) che consenta di inserire gli schemi del circuito da realizzare, ottimizzarne la logica, allocarla nei blocchi del dispositivo, effettuare simulazioni e messe a punto, e infine configurare il dispositivo. SRAM SRAM SRAM Figura G2.8 Collegamenti programmabili mediante SRAM.
526 Modulo G Circuiti programmabili e a programma Esercitazioni Test di verifica uesiti a risposta aperta Scegliere la risposta corretta tra quelle proposte.. Spiegare perché ciascuna uscita di dato di una ROM può esser vista come una funzione degli ingressi di indirizzo realizzata come OR cablata dei suoi minterm. 2. Descrivere la struttura interna di un FPLA. 3. Spiegare in che cosa consiste il piano AND di un FPLA e in che cosa consiste la sua programmazione. 4. Spiegare in che cosa consiste il piano OR di un FPLA e come se ne definiscono le funzioni OR. 5. Descrivere l organizzazione interna di un PAL e di una sua cella di uscita. 6. Dire come è possibile aumentare gli ingressi di una funzione OR in un PAL. 7. Dire sinteticamente in che modo un PLA si presta alla realizzazione di funzioni sequenziali. 8. Dire che cosa indica l acronimo FPGA, e accennare alla sua struttura. 9. Dire che cosa è un antifusibile e dove viene autilizzato.. Descrivere l utilizzazione di SRAM nella programmazione di un FPGA. uesiti a scelta multipla. I minterm di una funzione realizzata con un uscita di dato di una ROM: a corrispondono ciascuno a un prodotto delle variabili di indirizzo in grado di abilitare il collegamento tra la colonna di dato e massa. b corrispondono ciascuno a un prodotto delle variabili di indirizzo in grado di abilitare il collegamento tra una riga e una colonna di dato. c sono tutti quelli corrispondenti agli incroci tra linee del decoder degli indirizzi e colonna di dato i cui collegamenti sono stati eliminati. d sono tutti quelli corrispondenti agli incroci tra linee del decoder degli indirizzi e colonna di dato i cui collegamenti non sono stati eliminati. 2. In un FPLA il piano OR realizza su ciascuna riga la OR cablata: a di quelle colonne AND al cui incrocio c è un dispositivo a gate flottante programmato per restare interdetto. b di quelle colonne AND al cui incrocio c è un dispositivo a gate flottante programmato per entrare in conduzione. c di quelle colonne AND in grado di abilitarne il collegamento a V cc. d di quelle colonne AND in grado di abilitarne il collegamento a massa. 3. In un FPAL: a sono programmabili il piano OR e gli OLC. b sono programmabili il piano AND e gli OLC. c sono programmabili come i FPLA e dispongono anche di celle di uscita configurabili. d sono programmabili gli OLC.
G2 Dispositivi logici programmabili (PLD) 527 4. Una FPGA: a contiene una matrice di blocchi logici e I/O configurabili tra i quali è possibile stabilire connessioni attraverso linee di varia lunghezza. Configurazioni e collegamenti si impongono programmando SRAM o antifusibili interni al dispositivo. b contiene una matrice di blocchi logici e I/O configurabili, e antifusibili. Collegamenti e configurazioni si effettuano in fase di programmazione stabilendo quali antifusibili devono interrompersi. c contiene una matrice di blocchi logici e I/O configurabili, tra i quali è possibile stabilire connessioni attraverso linee di varia lunghezza. Configurazioni e collegamenti si impongono programmando RAM e antifusibili interni al dispositivo d contiene una matrice di blocchi logici e I/O configurabili, RAM statiche e antifusibili. Collegamenti e configurazioni si effettuano in fase di inizializzazione copiando la configurazione sulle RAM statiche. Esercitazioni