Programmable Logic Device
Un programmable logic device detto anche PLD, è un componente elettronico utilizzato come componente di circuiti digitali. A differenza di una porta logica, che implementa una funzione logica predefinita e non modificabile, un PLD, al momento della fabbricazione, non è configurato per svolgere una determinata funzione logica. Prima di poter utilizzare un PLD in un circuito, esso deve essere programmato.
Uso di RAM come PLD
Prima dell'introduzione dei PLD si utilizzavano componenti RAM per implementare una qualsiasi logica combinatoria a partire da un dato insieme di ingressi. Una ROM con m ingressi (che corrispondono agli indirizzi) ed n uscite (che corrispondono ai dati) può contenere parole di n bit. Immaginiamo ora che gli ingressi non siano costituiti da un indirizzo di m bit, ma invece da m segnali logici indipendenti. Teoricamente esistono diverse possibili funzioni booleane di questi m segnali, ma la struttura della ROM permette di definire soltanto n di queste funzioni sui terminali di uscita. La ROM, in altre parole, diventa equivalente ad n circuiti logici separati, ciascuno dei quali realizza una data funzione combinatoria degli m ingressi. Il vantaggio di usare una ROM in questo modo consiste nel fatto che ogni possibile funzione degli m ingressi può essere associata a ciascuna delle n uscite, in modo da realizzare un circuito logico combinatorio dotato della massima flessibilità.
Le PROM (Cioè le ROM programmabili), le EPROM (PROM cancellabili con raggi ultravioletti), e le EEPROM (PROM cancellabili elettricamente) possono essere configurate e programmate mediante apparecchiature facilmente reperibili, senza la necessità di ricorrere a particolari dispositivi hardware o software. Questi dispositivi, tuttavia, presentano una serie di limitazioni:
- sono solitamente più lenti dei corrispondenti circuiti logici dedicati,
- non sono sempre immuni da errori in caso di transizioni asincrone,
- consumano più potenza,
- poiché sono spesso utilizzati solo per una piccola parte della loro capacità teorica, comportano un'eccessiva occupazione di spazio,
- non possono essere facilmente impiegati per implementare circuiti a logica sequenziale poiché non dispongono della funzione flip-flop.