Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
Logica Programmabile
Per introdurre i dispositivi logici programmabili, si dà per acquisito il concetto di funzione booleana e la sua realizzazione pratica come rete multilivello. Una rete multilivello potenzialmente riduce la complessità dei collegamenti relativi all'implementazione della funzione Booleana. Per realizzare reti di una certa complessità, anche ricorrendo ad integrati MSI e LSI si ottengono schemi elettrici ingombranti che rendono difficoltosa la progettazione dei circuiti stampati. Inoltre l’uso di un numero elevato di componenti aumenta di conseguenza il costo complessivo del progetto e ne riduce l’affidabilità, a causa dell’elevato numero di collegamenti da effettuare. Una prima risposta a questo tipo di problema è stata fornita dagli integrati full-custom. I full-custom sono realizzati da ditte specializzate per espressa richiesta di aziende e/o industrie ed hanno un uso strettamente personalizzato e quindi costi elevati e lunghi tempi di progettazione. Per sopperire a questi problemi sono state studiate soluzioni in grado di avvicinarsi alle esigenze dell’utente finale, ma che presentassero almeno una forma standardizzata. Queste soluzioni intermedie, tra i componenti standard e i full-custom, sono note come semi-custom. Gli integrati semi-custom generano funzioni logiche definite dall’utente, il quale interviene solo nell’ultima fase di progettazione del dispositivo e sono noti come dispositivi ASIC (Application Specific Integrated Circuit, in altre parole circuiti integrati per applicazioni specifiche). Tra questi vi sono quelli programmabili dall’utente, noti con il nome di PLD (Programmable Logic Device). Le PLD sono programmabili dall'utente mediante un software dedicato che traduce un programma scritto con particolari istruzioni in una sequenza di comandi atti al controllo del funzionamento dei PLD.
1.1 La Logica Programmabile
E’ noto che i circuiti integrati contengono un elevato numero di transistor utilizzati come elementi di commutazione. Le PLD sono state realizzate sfruttando una doppia struttura a matrice in grado di realizzare funzioni logiche come somma di minterms. La prima matrice organizza delle porte AND (NAND) in grado di sviluppare prodotti di termini sulle variabili poste agli ingressi. La seconda matrice organizza delle porte OR (NOR) per generare la somma dei minterms generati dalla prima matrice, come mostrato nello schema di Fig. 2.1
FIGURA 1.1 - Struttura a blocchi di una PLD.
Un dispositivo di questo tipo genera un certo numero di funzioni logiche, che dipende dalla sua struttura e può essere utilizzato in diverse applicazioni. Ciò significa che può essere riprogrammato.
Le PLD sono dispositivi multi-input/multi-output organizzati all'interno di una struttura costituita da un array di porte AND e da un array di porte OR in cui l’array AND mappa gli input all’interno di particolari termini-prodotto dipendenti dalle connessioni programmate. L’array OR prende questi termini-prodotto e li somma (li mette in OR) per generare la funzione richiesta.
Un dispositivo PLD può implementare un numero limitato di funzioni di considerevole complessità. Tale numero dipende da:
- Numero degli input
- Numero dei termini-prodotto (numero di porte AND)
- Numero di output (numero di porte OR)
Ad esempio, un tipico dispositivo PLD presenta:
- 16 input
- 48 termini prodotto
- 8 output.
In un package con 24 pin una PLD contiene l'equivalente di 48 porte AND a 16 input e 8 porte OR a 48 input. Se si pensa che un package TTL a 14 pin di complessità SSI contiene soltanto 4 porte a 2 input è facile rendersi conto dell'efficienza della logica ad array.
In Fig. 2.2 Sono mostrati tutti i possibili collegamenti di un dispositivo PLD con 3 inputs e 4 outputs:
FIGURA 1.2 - Possibili connessioni per programmare una PLD. Si noti come le entrate siano già predisposte dritte e negate. Gli array prima della programmazione hanno tutte le connessioni precollegate.
FIGURA 1.5 - Soluzione per l'esempio proposto.
1.5 PAL Programmable Array Logic
Le PAL consentono di programmare l'array di AND, ma hanno le connessioni tra i termini prodotto e le specifiche porte OR fisse. Il numero dei termini prodotto all'ingresso di un OR è generalmente limitato a 2, 4, e 16.
1.6 PLA Programmable logic array
In questo tipo di dispositivo entrambi gli array AND e OR possano essere programmati dal progettista; infatti, i contatti sulle porte OR sono rinnovabili e non fissi come nel caso delle PAL.
1.7 Differenza tra PLA e PAL
La differenza tra PLA e PAL consiste nel fatto che le PLA possono condividere i termini prodotto, mentre le PAL non lo consentono. Quando si devono implementare funzioni con molti termini prodotti condivisi, le PLA sembrano sicuramente più convenienti delle PAL; tuttavia, i dispositivi PLA sono più lenti dei dispositivi PAL in quanto i fusibili presentano una resistenza elettrica maggiore rispetto ai collegamenti fissi tipici delle PAL. Per questo motivo il ritardo di propagazione dei segnali è maggiore nelle PLA rispetto alle PAL e molte volte conviene scegliere una PAL invece di una PLA.
6
fusibili si possono pensare come tanti 0 quanti sono gli incroci riga-colonna, come mostrato in Fig. 1.11:
L0000 00000000000000000000000000000000 0 - 31 00000000000000000000000000000000 32 - 63 00000000000000000000000000000000 64 - 95 00000000000000000000000000000000 96 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 - 255FIGURA 1.11 - Porzione di file.jed , nel quale gli zeri rappresentano lo stato iniziale dei fusibili delle 8 righe corrispondenti alla Fig. 1.6.
Per default, tutti i fusibili sono rappresentati per default allo stato 0. Nel caso si debba realizzare una connessione ad un incrocio riga-colonna, quel fusibile viene posto a 1. Come esempio si consideri la conversione BCD - Gray:
Tavola della Verità
A B C D | W X Y Z 0 0 0 0 | 0 0 0 0 0 0 0 1 | 0 0 1 1 0 0 1 0 | 0 1 1 1 0 0 1 1 | 0 1 1 0 0 1 0 0 | 0 1 0 0 0 1 0 1 | 1 1 0 0 0 1 1 0 | 1 0 0 0 0 1 1 1 | 1 0 1 0 1 0 0 0 | 1 0 1 1 1 0 0 1 | 1 0 0 1 1 0 1 0 | 1 1 0 1 1 0 1 1 | 1 1 1 1 1 1 0 0 | 1 1 1 0 1 1 0 1 | 0 1 1 0 1 1 1 0 | 0 0 1 0 1 1 1 1 | 0 0 0 0W = A + B D + B C
X = B C̅
Y = B + C
Z = A̅ B C D̅ + B C D + A D̅ + B C D̅
FIGURA 1.12 – Tavola della verità, mappe di Karnaugh e funzioni semplificate.
In Fig. 1.12 sono stati impostati nelle colonne i valori delle entrate dritte e negate, scegliendole tra le prime a sinistra, prestando attenzione che possano essere associate ai piedini d’ingresso. Ad esempio, le colonne 0 e 1 siano rispettivamente B e B'. In questo modo l’ingresso B sarà collegato al piedino 2 della PLD. L’ingresso A, invece viene collegato al piedino 1, l’ingresso C al piedino 3 e l’ingresso D al piedino 4. Le uscite vengono prelevate dai piedini 12 (W), 13 (1X), 14 (Y), 15 (Z). Questi piedini sono di tipo I/O e quindi per renderli Uscite, occorre che l’inverter che determina la funzione del piedino sia sempre alto. Quindi le righe 1792 ( ingresso W ) deve essere posta a 1, come la riga 1536 ( ingresso X), e così via per le altre due uscite. A questo punto si tratta di realizzare le funzioni di Fig. 1.10 utilizzando la tecnica dell’esempio guidato. Per creare la funzione X occorre bruciare i fusibili della matrice che interessa tale uscita. Le righe di tale matrice sono quelle comprese tra la 1569 e la 1760.
11