Programmable Logic Device: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Marius~itwiki (discussione | contributi)
m interlink
fix
 
(136 versioni intermedie di 60 utenti non mostrate)
Riga 1:
{{Nd|redirect=Elettronica programmabile|titolo=Processore}}
{{stub}}
{{F|componenti per computer|arg2=elettronica|marzo 2013|Nessuna fonte}}
 
In [[elettronica digitale]], un '''Programmable Logic Device''' ('''PLD''', {{lett|dispositivo a logica programmabile}}) è un [[rete logica|circuito logico digitale]] realizzato utilizzando tecniche [[VLSI]], caratterizzato dalla capacità di implementare una [[funzione booleana|funzione logica]] arbitraria impostata successivamente alla fase di produzione e commercializzazione.
Un '''programmable logic device''' detto anche PLD, è un componente [[elettronica|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.
 
I PLD vengono comunemente utilizzati nello sviluppo di circuiti logici ad alte prestazioni come alternativa agli [[ASIC]], più performanti ma decisamente più costosi e tediosi da utilizzare.
== Uso di RAM come PLD ==
 
Questi dispositivi non sono programmabili nel [[programmazione (informatica)|senso informatico]] del termine; per distinguerli, si potrebbero chiamare "configurabili", poiché la loro "programmazione" consiste nella scelta di una tra le configurazioni possibili.<ref>{{cita|Napoli 2023|cap. 7.5}}.</ref>
Prima dell'introduzione dei PLD si utilizzavano componenti [[ROM]] 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 <math>2^m</math> 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 <math>2^m</math> diverse possibili funzioni [[Algebra booleana|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à.
 
Il metodo di configurazione dipende dalla tipologia del dispositivo ed è direttamente correlato al "grado di programmabilità".<ref name="cita napoli programmazione">{{cita|Napoli 2023|cap. 4.2.2}}.</ref>
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]].
 
== Storia ==
Questo tipo di dispositivi sono stati ideati a partire dalla nella seconda metà degli [[anni 1960]], con lo sviluppo presso i laboratori della [[Harris Semiconductor]] di una "matrice di diodi configurabile". Nel 1970 la Texas Instrument realizzò il primo circuito integrato basato interamente su ROAM (''Read Only Associative Memory'') coniando il termine PLA (Programmable Logic Array). Quasi nello stesso periodo, la Harris introdusse nel mercato le PROM (''[[Programmable Read Only Memory]]'') che, oltre che come memorie a sola lettura, trovarono impiego nella realizzazione di semplici macchine a stati o decodificatori di indirizzo. Nel 1973 [[National Semiconductor]] produsse una versione semplificata di componenti PLA, denominata DM7575/DM8575, caratterizzata da soli 14 ingressi ed 8 uscite e senza elementi di memoria integrati. Ulteriori progressi furono realizzati nel 1978, con l’introduzione nel mercato dei primi componenti PAL (Programmable Array Logic) ad opera della Monolithic Memories, Inc. che utilizzava il linguaggio di programmazione, denominato PALASM (PALA ASseMbler), simile al [[FORTRAN]], ma con una sintassi semplice e che consentiva di descrivere funzioni logiche complesse.
 
== Caratteristiche ==
<!--
=== I linguaggi di programmazione utilizzati ===
Di solito è difficile e poco conveniente scrivere a mano il codice per programmare i PLD, e quindi si usano computer e software appositi, chiamati [[logic compiler]], simili ai classici [[compilatore|compilatori]] che generano i programmi software eseguibili a partire dai file [[Codice_sorgente|sorgente]]. Nel caso dei PLD i linguaggi sorgente si chiamano [[hardware description language]] (HDL). Ad esempio il linguaggio [[ABEL]] è adatto a logiche di bassa complessità, il [[Verilog]] e il [[VHDL]] sono indicati per applicazioni più complesse.
 
=== La memorizzazione della configurazione ===
Common [[EPROM]]s, for example the 2716, are still sometimes used in this way by hobby circuit designers, who often have some laying around. This use is sometimes called a 'poor man's PAL'.
Un PLD contiene componenti sia di logica che di [[memoria (informatica)|memoria]], che contiene le informazioni di configurazione. Le memorie possono essere di tipo:
* [[Antifusibili al silicio]]
* [[SRAM]]
* [[Flash memory|Flash]]
* Celle [[EPROM]]
 
Gli antifusibili al silicio sono usati nelle PAL e sono realizzati applicando una tensione fra due punti dello strato di silicio interno del chip. Hanno questo nome perché funzionano in modo opposto ai [[fusibile|fusibili]], che inizialmente conducono e si interrompono al passaggio della corrente di guasto.
== Early programmable logic ==
 
''Main article: [[Programmable array logic]].''
Le SRAM e le RAM sono memorie volatili, quindi la programmazione viene persa allo spegnimento e deve essere ricaricata alla riaccensione, di solito automaticamente, a cura di una parte dedicata del circuito. Le memorie flash sono non-volatili, cioè mantengono i dati anche a circuito non alimentato e possono essere facilmente cancellate e riprogrammate. Una cella EPROM è basata su [[transistor]] di tipo [[MOS Technology|MOS]] che possono essere messi in stato ON confinando permanentemente cariche elettriche nel terminale ''gate''. La programmazione si effettua usando un apparecchio chiamato [[PAL programmer]]. Le cariche rimangono memorizzate per molti anni, e possono essere rimosse esponendo il chip a [[radiazione ultravioletta|radiazioni ultraviolette]] di forte intensità emesse dalla lampada di un cancellatore di EPROM.
 
=== Il rapporto con l'utilizzo di ROM ===
Prima dell'introduzione dei PLD si utilizzavano componenti [[Read Only Memory|ROM]] 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 <math>2^m</math> 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 <math>2^m</math> diverse possibili funzioni [[Algebra booleana|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 [[Programmable Read Only Memory|PROM]] (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]]. In generale si può distinguere tra dispositivi logici programmabili una sola volta o più volte ovvero riprogrammabili. Questi dispositivi, tuttavia, a fronte della loro genericità logica finalizzata alla programmazione specifica, presentano una serie di limitazioni:
* sono solitamente più lenti dei corrispondenti circuiti logici dedicati ovvero [[general purpose|specific purpose]] ([[ASIC]]),
* 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]].
 
Alcuni dei più semplici modelli di EPROM, come il 2716, sono ancor oggi a volte utilizzati in questo modo, specialmente dai progettisti dilettanti (le ''"PAL dei poveri"'', come sono a volte scherzosamente definite).
The first programmable logic devices for the commercial market were introduced by [[Monolithic Memories]], Inc.(MMI) {{dubious}} under the name of PAL ([[Programmable array logic]]), although [[IBM]] produced similar devices for internal use in the mid-1970s.
 
== Tipologie ==
After MMI succeeded with the 20-pin PAL parts, [[AMD]] introduced the 24-pin 22V10 PAL with additional features. After buying out MMI (1987?), AMD spun off a consolidated operation as Vantis, and that business was acquired by [[Lattice Semiconductor]] in 1999.
L'interesse per i sistemi riconfigurabili, ossia per quei circuiti che contengono varie funzionalità standard che possono essere modificate dal [[programma (informatica)|programma]] che gira sul processore, tende oggi ad aumentare. La corretta progettazione di questo tipo di dispositivi richiede al progettista un particolare approccio sistemistico e sarà probabilmente accompagnata e facilitata dalla disponibilità di nuovi strumenti software di sviluppo.
 
Sono già sul mercato PLD che incorporano un [[microprocessore]] che esegue le funzioni base (detto ''core'') intorno a cui sono cablate le logiche programmabili. Questa configurazione permette al progettista di concentrarsi sulle funzionalità specifiche da aggiungere, senza preoccuparsi del lavoro che il processore deve svolgere in background.
== GALs ==
An innovation of the PAL was the generic array logic device, or GAL, invented by [[Lattice Semiconductor]]. This device has the same logical properties as the PAL but can be erased and reprogrammed. The GAL is very useful in the prototyping stage of a design, when any [[Computer bug|bugs]] in the logic can be corrected by reprogramming. GALs are programmed and reprogrammed using a PAL programmer.
 
=== PLA ===
A similar device called a PEEL (programmable electrically erasable logic) was introduced by the International CMOS Technology (ICT) corporation.
{{vedi anche|Programmable Logic Array}}
 
Si tratta del più semplice dispositivo logico programmabile, ed il primo ad essere stato prodotto a livello industriale verso la fine degli anni '70.
== CPLDs ==
La struttura di una PLA è basata sul fatto che qualsiasi funzione logica può essere descritta tramite somme di prodotti logici. Un PLA è composto da una matrice d'ingresso di [[porta logica|porte logiche]] [[Congiunzione logica|AND]] programmabili, collegate con una serie di [[Disgiunzione inclusiva|OR]] programmabili. L'architettura di un PLA comprende inoltre linee di retroazione dall'uscita all'array di porte AND, che possono essere utilizzate come ingressi aggiuntivi.<br>
PALs and GALs are available only in small sizes, equivalent to a few hundred logic gates. For bigger logic circuits, complex PLDs or [[CPLD]]s can be used. These contain the equivalent of several PALs linked by programmable interconnections, all in one [[integrated circuit]]. CPLDs can replace thousands, or even hundreds of thousands, of logic gates.
I primi dispositivi PLA ad essere stati prodotti implementano circuiti puramente [[circuito combinatorio|combinatori]], successivamente si sono sviluppati PLA [[circuito sequenziale|sequenziali]], che hanno la medesima architettura dei precedenti ma sono dotati di [[flip-flop]] per la sincronizzazione dei segnali.
 
=== PAL ===
Some CPLDs are programmed using a PAL programmer, but this method becomes inconvenient for devices with hundreds of pins. A second method of programming is to solder the device to its [[printed circuit board]], then feed it with a serial data stream from a [[personal computer]]. The CPLD contains a circuit that decodes the data stream and configures the CPLD to perform its specified logic function.
{{vedi anche|Programmable Array Logic}}
 
I PAL sono un'evoluzione dei PLA, e differiscono principalmente per l'impossibilità di programmare la serie di porte OR. Questi dispositivi presentano inoltre, a seconda del modello, diverse soluzioni architetturali avanzate in più rispetto al suo predecessore.
Each manufacturer has a proprietary name for this programming system. For example, [[Lattice Semiconductor]] calls it "in-system programming". However, these proprietary systems are beginning to give way to a standard from the Joint Test Action Group ([[JTAG]]).
 
=== FPGAsGAL ===
{{vedi anche|Generic Array Logic}}
While PALs were busy developing into GALs and CPLDs (all discussed above), a separate stream of development was happening. This type of device is based on gate-array technology and is called the field-programmable [[gate array]] ([[FPGA]]). An early example of an FPGA is the 82s100 by Signetics introduced in the late 1970s.
[[File:AMD_22V10_Macrocell.jpg|thumb|Schema logico di un OLMC su un dispositivo GAL (GAL22V10). Sulla sinistra è possibile vedere la rappresentazione di una PAL connessa in ingresso.]]
 
Il [[Generic Array Logic]], solitamente abbreviato in GAL, è un'evoluzione del [[Programmable Array Logic]] sviluppata dalla [[Lattice Semiconductor]]. Queste logiche hanno le stesse caratteristiche delle PAL, con l'aggiunta di dispositivi di output programmabili detti OLMC.
FPGAs use a grid of logic gates, similar to that of an ordinary [[gate array]], but the programming is done by the customer, not by the manufacturer. The term "field-programmable" may be obscure to some, but "field" is just an engineering term for the world outside the factory, where customers live.
 
{{clear}}
FPGAs are usually programmed after being soldered down to the circuit board, in the same way as larger CPLDs. In most larger FPGAs the configuration is volatile, and must be re-loaded into the device whenever power is applied or different functionality is required.
=== CPLD ===
{{vedi anche|Complex Programmable Logic Device}}
[[File:Altera MAX 7128 2500 gate CPLD.jpg|thumb|Un CPLD serie MAX 7000 dell'[[Altera]], contenente 2500 porte.]]
 
Mentre i GAL sono disponibili soltanto in piccole taglie, contenenti l'equivalente di alcune centinaia di porta logiche, i CPLD consentono di realizzare circuiti logici più complessi. Questi dispositivi contengono l'equivalente di molte PAL collegate fra di loro mediante interconnessioni programmabili ed incapsulate in un unico [[circuito integrato]]. Le CPLD possono equivalere a migliaia, a volte addirittura centinaia di migliaia di porte logiche.
FPGAs and CPLDs are often equally good choices for a particular task. Sometimes the decision is more an economic one than a technical one, or may depend on the engineer's personal preference and history.
 
Alcuni tipi di CPLD si programmano usando il ''PAL programmer'', ma questo metodo diventa poco pratico quando si devono collegare componenti con centinaia di pin. Un metodo molto più efficiente consiste nel saldare i dispositivi su un [[circuito stampato]] e quindi inviare loro, mediante un PC, un flusso di dati che, opportunamente decodificati dai circuiti interni dei CPLD, conferiscono agli stessi la configurazione necessaria a realizzare le funzioni logiche desiderate.
== Other types of PLDs ==
There is much interest in reconfigurable systems at present. These are microprocessor circuits that contain some fixed functions and other functions that can be altered by code running on the processor. Designing self-altering systems will require engineers to learn new methods, and will probably require new software tools to be developed.
 
Ciascun produttore ha un proprio nome che identifica questa modalità di programmazione. Per esempio, la Lattice Semiconductor lo chiama ''"in-system programming"''. È in corso al riguardo un progetto di standardizzazione da parte del [[JTAG]] (''Joint Test action Group'').
PLDs are being sold now that contain a microprocessor with a fixed function (the so-called ''core'') surrounded by programmable logic. These devices allow the designer to concentrate on adding new features to his design without having to worry about making the microprocessor work.
 
=== FPGA ===
== How PLDs remember their configuration ==
{{vedi anche|Field Programmable Gate Array}}
A PLD is a combination of a logic device and a [[computer memory|memory]] device. The memory is used to store the pattern that was given to the chip during programming. Most of the methods for storing data in an integrated circuit have been adapted for use in PLDs. These include:
[[File:FPGA_cell_example.png|thumb|Esempio di un elemento logico configurabile all'interno di una FPGA]]
 
Mentre le PAL si stavano evolvendo nelle GAL e nei CPLD, una nuova famiglia di dispositivi, basata sulla tecnologia ''gate-array'' si stava affermando con il nome di [[Field programmable gate array|FPGA]]. Un esempio è il modello 82s100 prodotto dalla [[Signetics]] verso la fine degli [[anni 1970]]. Tali dispositivi utilizzano una matrice di porte logiche molto simile a quella di un normale ''gate array'', ma la programmazione è fatta dall'utilizzatore anziché in fabbrica.
*silicon antifuses
*[[SRAM]]
*[[flash memory]]
*EPROM cells
 
La definizione di ''"field programmable"'' (cioè ''"programmabile sul campo''") può sembrare poco chiara, ma il termine "''field''" significa semplicemente sul campo ''"fuori dalla fabbrica"'', quindi nel luogo dove viene utilizzato dall'utente finale. Le FPGA, come i [[CPLD]], si programmano dopo averle saldate al circuito stampato. La loro configurazione è volatile e deve essere ricaricata ad ogni riaccensione ed ogni volta che si richiede una diversa programmazione.
Silicon antifuses are the storage elements used in the PAL, the first type of PLD. {{dubious}} These are connections that are made by applying a voltage across a modified area of silicon inside the chip. They are called antifuses because they work in the opposite way to normal fuses, which begin life as connections until they are broken by an electric current.
 
FPGA e CPLD sono di solito soluzioni equivalenti dal punto di vista delle prestazioni. La scelta può dipendere da considerazioni economiche o dall'esperienza personale del progettista.
SRAM, or static RAM, is a volatile type of memory, meaning that its contents are lost each time the power is switched off. SRAM-based PLDs therefore have to be programmed every time the circuit is switched on. This is usually done automatically by another part of the circuit.
 
== Note ==
Flash memory is non-volatile, retaining its contents even when the power is switched off. It can be erased and reprogrammed as required. This makes it useful for PLD memory.
<references/>
 
== Bibliografia ==
An [[EPROM]] cell is a MOS ([[metal]]-[[oxide]]-[[semiconductor]]) [[transistor]] that can be switched on by trapping an electric charge permanently on its gate electrode. This is done by a PAL programmer. The charge remains for many years and can only be removed by exposing the chip to strong [[ultraviolet]] light in a device called an EPROM eraser.
*{{cita libro
|titolo = Progetto di circuiti digitali e implementazione su FPGA
|autore = Ettore Napoli
|editore = Società Editrice Esculapio
|città = Bologna
|anno = 2023
|ISBN = 978-88-9385-350-7
|cid = Napoli 2023
}}
 
== PLDVoci programming languagescorrelate ==
* [[Complex Programmable Logic Device]]
As mentioned in the "PAL" section above, JEDEC files are usually too complex to create by hand, so a computer program is used to generate them. This program is called a logic compiler, and is analogous to a [[software]] [[compiler]]. The languages used as source code for logic compilers are called [[hardware description language]]s, or HDLs. [[ABEL programming language|ABEL]] is frequently used for low-complexity devices, while [[Verilog]] and [[VHDL]] are popular higher-level description languages for more complex devices.
* [[Field programmable gate array]]
* [[Generic Array Logic]]
* [[Programmable Logic Array]]
* [[Simple Programmable Logic Device]]
 
== Altri progetti ==
[[Category:Digital electronics]]
{{interprogetto|commons_preposizione=sul}}
[[Category:Electronic design automation]]
 
== Collegamenti esterni ==
-->
* {{Collegamenti esterni}}
 
{{Portale|elettronica|informatica}}
[[Categoria:Elettronica digitale]]
 
[[Categoria:Circuiti elettronici configurabili| ]]
[[de:Programmierbare logische Schaltung]]
[[en:Programmable logic device]]
[[ja:&#12503;&#12525;&#12464;&#12521;&#12510;&#12502;&#12523;&#12525;&#12472;&#12483;&#12463;&#12487;&#12496;&#12452;&#12473;]]