Che cos'è un CPLD (Complex Programmable Logic Device)? - Fusion Blog

Che cos’è un CPLD (Complex Programmable Logic Device)?

Edwin Robledo Edwin Robledo Agosto 28, 2023

8 min read

This post is also available in: Français (Francese) Deutsch (Tedesco) English (Inglese)

Questo articolo fornisce una panoramica dettagliata di un dispositivo elettronico digitale essenziale noto come CPLD (Complex Programmable Logic Device).

what-is-cpld

L’IT (Information Technology), Internet e i chip elettronici sono alla base dell’era digitale moderna. Quasi tutte le tecnologie moderne devono la loro esistenza all’elettronica, da Internet e le comunicazioni cellulari ai computer e ai server. L’elettronica è un campo vasto che include molti rami secondari. Questo articolo illustra un dispositivo elettronico digitale essenziale noto come CPLD (Complex Programmable Logic Device).

Evoluzione dell’elettronica digitale

L’elettronica è un campo complesso che include migliaia di dispositivi e componenti elettronici. Tuttavia, a grandi linee, i dispositivi elettronici si dividono in due categorie principali: analogici e digitali.

Agli albori della tecnologia elettronica, i circuiti erano analogici, ad esempio il suono, la luce, la tensione e la corrente. Tuttavia, gli ingegneri elettronici hanno presto scoperto che i circuiti analogici sono molto costosi e complessi da progettare. La richiesta di prestazioni veloci e di tempi di turnover rapidi ha portato allo sviluppo dell’elettronica digitale. Oggi quasi tutti i dispositivi informatici esistenti incorporano circuiti integrati e processori digitali. Nel mondo dell’elettronica, i sistemi digitali hanno sostituito completamente l’elettronica analogica a causa dei costi inferiori, del basso rumore, di una migliore integrità del segnale, di prestazioni superiori e di una ridotta complessità.

Diversamente da un segnale analogico che include un numero infinito di livelli di dati, un segnale digitale è costituito solo da due livelli logici (1s e 0s).

analog-vs-digital-signal
Figura 1: Segnale analogico e digitale

Tipi di dispositivi elettronici digitali

I primi dispositivi elettronici digitali erano piuttosto semplici e includevano solo qualche porta logica. Tuttavia, nel tempo, la complessità dei circuiti digitali è aumentata e la programmabilità è diventata una caratteristica fondamentale dei moderni dispositivi di controllo digitale. Per offrire la programmabilità sono emerse due diverse classi di dispositivi digitali. La prima classe consisteva nella progettazione di hardware fisso con software riprogrammabile. Alcuni esempi di tali dispositivi sono i microcontroller e i microprocessori. La seconda classe di dispositivi digitali era caratterizzata da hardware riconfigurabile per ottenere una progettazione flessibile dei circuiti logici. Esempi di tali dispositivi includono FPGA, SPLD e CPLD.

Un chip di un microcontroller è dotato di un circuito logico digitale fisso che non può essere modificato. Tuttavia, la programmabilità si ottiene modificando il software/firmware che viene eseguito sul chip del microcontroller. Al contrario, un PLD (Programmable Logic Device) è costituito da più celle logiche le cui interconnessioni possono essere configurate utilizzando un linguaggio HDL. Utilizzando un PLD è pertanto possibile realizzare molti circuiti logici. Per questo motivo, le prestazioni e la velocità dei PLD sono in genere superiori a quelle dei microcontroller e dei microprocessori. I PLD offrono inoltre ai progettisti di circuiti un maggior grado di libertà e flessibilità.

programmable-digital-devices
Figura 2: Tipi di dispositivi digitali programmabili

I circuiti integrati destinati al controllo digitale e all’elaborazione del segnale sono generalmente costituiti da processore, circuito logico e memoria. Ciascuno di questi moduli può essere realizzato utilizzando tecnologie diverse. La figura seguente illustra le opzioni disponibili:

modules-digital-ics
Figura 3: Moduli nei circuiti integrati digitali

Introduzione ai dispositivi CPLD

Come già accennato, esistono diversi tipi di PLD (Programmable Logic Device), come FPGA, CPLD e SPLD. Le differenze principali tra questi dispositivi sono la complessità del circuito e il numero di celle logiche disponibili. Un dispositivo SPLD è generalmente costituito da alcune centinaia di porte, mentre un dispositivo CPLD include alcune migliaia di porte logiche.

In termini di complessità, un CPLD (Complex Programmable Logic Device) si colloca tra un SPLD (Simple Programmable Logic Device) e un FPGA (Field-Programmable Gate Array) ed eredita quindi caratteristiche da entrambi i dispositivi. I dispositivi CPLD sono più complessi dei dispositivi SPLD, ma meno complessi dei dispositivi FPGA.

I dispositivi SPLD più utilizzati includono PAL (Programmable Array Logic), PLA (Programmable Logic Array) e GAL (Generic Array Logic). Un PLA è costituito da un piano AND e da un piano OR. Il programma di descrizione hardware definisce l’interconnessione di questi piani. L’immagine seguente illustra un PLA:

pla-programmable-logic-array
Figura 4: Programmable Logic Array (PLA)

Un dispositivo PAL è abbastanza simile ad un dispositivo PLA, ma include un solo piano programmabile anziché due (piano AND). La presenza di un piano fisso comporta una riduzione della complessità dell’hardware. Tuttavia, questo vantaggio si ottiene a scapito della flessibilità.

pal-programmable-array-logic
Figure 5: Programmable Array Logic (PAL)

Architettura CPLD

Il CPLD può essere considerato come un’evoluzione del PAL ed è costituito da più strutture PAL note come macrocelle. Nel pacchetto CPLD, tutti i pin di input sono disponibili per ogni macrocella, mentre ogni macrocella ha un pin di output dedicato. L’illustrazione seguente mostra il diagramma a blocchi di un CPLD.

Figura 6: Diagramma a blocchi di un CPLD

Dal diagramma a blocchi, è possibile osservare che un CPLD è costituito da più macrocelle o blocchi funzionali. Le macrocelle sono collegate tramite un’interconnessione programmabile, chiamata anche GIM (Global Interconnection Matrix). Riconfigurando la matrice GIM, è possibile realizzare diversi circuiti logici. I CPLD interagiscono con il mondo esterno utilizzando gli I/O digitali.

Differenze tra CPLD e FPGA

Negli ultimi anni, i dispositivi FPGA sono diventati molto popolari nella progettazione di sistemi digitali programmabili. Esistono molte analogie e differenze tra CPLD e FPGA. Per quanto riguarda le analogie, entrambi sono dispositivi logici programmabili costituiti da array di porte logiche. Entrambi i dispositivi vengono programmati utilizzando un linguaggio HDL, ad esempio Verilog HDL o VHDL.

La prima differenza tra CPLD e FPGA è il numero di porte. Un CPLD contiene alcune migliaia di porte logiche, mentre un FPGA può includere anche milioni di porte. Di conseguenza, utilizzando un dispositivo FPGA è possibile realizzare circuiti e sistemi complessi. Lo svantaggio di questa complessità è il costo più elevato. Pertanto, i CPLD sono più adatti per applicazioni meno complesse.

Un’altra differenza fondamentale tra questi due dispositivi è che i CPLD sono dotati di una EEPROM (Electrically Erasable Programmable Random-Access Memory) integrata non volatile, mentre i dispositivi FPGA hanno una memoria volatile. Per questo motivo, un CPLD può conservare i propri contenuti anche quando viene spento, mentre un dispositivo FPGA non è in grado di farlo. Inoltre, grazie alla memoria non volatile integrata, un CPLD può iniziare a funzionare immediatamente dopo l’accensione. La maggior parte dei dispositivi FPGA richiede invece un flusso di bit da una memoria esterna non volatile per l’avvio.

In termini di prestazioni, i dispositivi FPGA hanno un ritardo di elaborazione del segnale imprevedibile a causa dell’architettura altamente complessa e della programmazione personalizzata dell’utente. Nei dispositivi CPLD, il ritardo pin-to-pin è notevolmente inferiore grazie ad una architettura più semplice. Il ritardo nell’elaborazione del segnale è un fattore da tenere in considerazione quando si progettano applicazioni in tempo reale integrate critiche per la sicurezza.

A causa delle frequenze operative più elevate e delle operazioni logiche più complesse, alcuni dispositivi FPGA possono consumare più energia dei dispositivi CPLD. La gestione termica è quindi un aspetto importante dei sistemi basati su FPGA. Per questo motivo, i sistemi basati su FPGA spesso utilizzano dissipatori di calore e ventole di raffreddamento e necessitano di alimentatori e reti di distribuzione più grandi e complesse.

Dal punto di vista della sicurezza delle informazioni, i dispositivi CPLD sono più sicuri in quanto la memoria è incorporata nel chip stesso. Al contrario, la maggior parte dei dispositivi FPGA richiede una memoria non volatile esterna, che può rappresentare una minaccia per la sicurezza dei dati. Anche se nei dispositivi FPGA sono presenti algoritmi di crittografia dei dati, i dispositivi CPLD sono intrinsecamente più sicuri rispetto ai dispositivi FPGA.

Applicazioni dei CPLD

I CPLD trovano applicazione in molti circuiti di controllo digitale e di elaborazione del segnale di complessità medio-bassa. Alcune delle applicazioni più importanti includono:

  1. I dispositivi CPLD possono essere utilizzati come bootloader per FPGA e altri sistemi programmabili.
  2. I dispositivi CPLD vengono spesso utilizzati come decoder di indirizzi e macchine a stati personalizzate nei sistemi digitali.
  3. Grazie alle dimensioni ridotte e al basso consumo energetico, i CPLD sono ideali per l’utilizzo in dispositivi digitali portatili e palmari.
  4. I CPLD vengono utilizzati anche in applicazioni di controllo critiche per la sicurezza.

Produttori di CPLD

CPLD e FPGA sono dispositivi logici programmabili di fascia alta difficili da produrre. I principali produttori di CPLD sono:

  1. Altera (acquisito da Intel)
  2. Xilinx (acquisito da AMD)
  3. Atmel (acquisito da Microchip)
  4. Semiconduttore a reticolo

Programmazione e sviluppo di CPLD

Il primo passo nello sviluppo di un sistema digitale basato su CPLD è la scelta del produttore del dispositivo. Come anticipato, esistono diversi produttori di questi dispositivi. Dopo aver consultato i requisiti del progetto e le schede tecniche dei dispositivi, è necessario selezionare un dispositivo appropriato. I fattori decisivi sono i costi, il consumo energetico, il numero di I/O e di macrocelle, la tensione operativa e le caratteristiche termiche.

Dopo aver selezionato il modello CPLD, si procederà alla configurazione dell’ambiente di programmazione e test, che comprende un pacchetto software utilizzato per la progettazione, il collaudo e la verifica del circuito. Alcuni esempi di software di programmazione sono Altera Quartus, Xilinx ISE/Vivado, Lattice Diamond e Atmel ProChip Designer. Questi pacchetti software consentono lo sviluppo del programma utilizzando i linguaggi di descrizione hardware Verilog e VHDL.

Dopo aver creato la descrizione logica in HDL, il dispositivo hardware o la scheda di sviluppo si collega al software tramite un adattatore via cavo di programma e di debug. Molte schede di sviluppo includono dispositivi di programmazione integrati. Tuttavia, se il dispositivo di programmazione non è presente, è possibile utilizzare un programmatore JTAG.

Dopo la progettazione, il test e la verifica del programma CPLD, il programma viene scaricato nel chip ed è possibile produrre un prototipo di sistema. È inoltre possibile progettare una PCB che ospita il CPLD e i componenti elettronici circostanti. Dopo l’integrazione, viene eseguito il test del dispositivo per individuare eventuali errori e bug. Al termine del debug, il prototipo è pronto per essere inviato in produzione.

L’elettronica digitale è alla base delle moderne tecnologie dell’informazione. La programmabilità è un fattore chiave nella progettazione dei sistemi digitali. Esistono due tipi di dispositivi digitali programmabili: processori e PLD. I PLD offrono prestazioni e flessibilità superiori grazie all’hardware riconfigurabile. I CPLD sono uno dei tre principali tipi di PLD, insieme ai dispositivi SPLD e FPGA. In termini di prestazioni e complessità, i CPLD si collocano tra SPLD e FPGA. Grazie alla EEPROM non volatile integrata, i CPLD hanno il vantaggio di garantire una maggiore sicurezza dei dati e velocità di avvio rispetto ai dispositivi FPGA.

In questo articolo, abbiamo fornito una panoramica completa dei CPLD, che include aspetti come l’architettura, i diagrammi, le applicazioni e i metodi di programmazione.

Sei pronto per iniziare ad utilizzare Fusion 360 per gli ingegneri elettronici? Avvia subito la versione di prova gratuita.

Tags and Categories

Get Fusion updates in your inbox

By clicking subscribe, I agree to receive the Fusion newsletter and acknowledge the Autodesk Privacy Statement.