title: Complex Programmable Logic Device
text: # Complex Programmable Logic Device
  
  Un Complex Programmable Logic Device (spesso abbreviato con la sigla inglese CPLD), nell'elettronica digitale, è un dispositivo programmable logic device, programmabile e cancellabile, con un numero di pin maggiore di 48. I CPLD sono un'evoluzione delle GAL: un CPLD si può infatti considerare come integrazione di più GAL all'interno di un singolo chip.
  
  La programmazione permette al CPLD di simulare un generico circuito digitale di complessità non elevata. A differenza delle FPGA le CPLD mantengono la programmazione anche quando non sono alimentate perché contengono delle memorie non volatili. I CPLD vengono usati per applicazioni particolari dove sono richieste alte velocità o bassi costi o funzionalità di glue logic ovvero di interfacciamento tra due dispositivi complessi.
  
  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.
  
  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).
  
  