Agostino Rolando
Conoscere ed usare
CPLD
Progettare con i dispositivi CPLD
in modo facile e veloce
Inware Edizioni
Per ordinare il libro:
http://www.ieshop.it/dettagli.asp?pid=1688
Indice
Introduzione
Il presente volume tratta l’argomento "Componenti Logici Programmabili Complessi", ovvero
Complex Programmable Logic Devices (CPLD). È rivolto in particolare a coloro che per la prima
volta si avvicinano al mondo delle Logiche Programmabili, ma è utilizzabile anche da quanti, già
esperti, desiderano approfondire la conoscenza di questi interessanti dispositivi.
Dopo un’escursione panoramica sul settore dei programmabili, si focalizza l’attenzione sui
componenti CPLD del produttore Xilinx Corporation, in particolare sulla famiglia XC9500, di cui
vengono elencate le caratteristiche distintive.
Il volume si prefigge di mettere in grado il lettore di utilizzare questi dispositivi insieme agli
strumenti di sviluppo software messi a disposizione gratuitamente sul web da Xilinx.
Gli argomenti teorici sono presentati attraverso semplici circuiti di esempio il cui codice viene
descritto nei dettagli, in modo da chiarirne le funzioni fin nei minimi particolari. Tra gli esempi
applicativi vengono proposti la gestione di un display a sette segmenti, di una connessione
RS232, di una tastierina e di un convertitore digitale-analogico, mediante la realizzazione di
specifici progetti.
Nella prima parte del volume si introducono le logiche programmabili con un percorso ideale che
inizia dalle prime logiche discrete. Si descrivono poi le caratteristiche delle più note famiglie di
CPLD, soffermandosi sulle architetture elaborate dai diversi produttori, per giungere infine ai
prodotti Xilinx che verranno utilizzati negli esempi.
Per quanto riguarda il software, il lettore viene guidato nelle fasi di installazione e di impiego dell’
ambiente di sviluppo ISE Webpack di Xilinx, con lo scopo di renderlo autonomo nella
realizzazione delle varie applicazioni di volta in volta proposte. Viene mostrato come creare e
modificare i file sorgenti, come controllare il processo di sintesi e la programmazione dei
dispositivi.
Il linguaggio utilizzato è il Verilog. Il capitolo 6 è dedicato in gran parte alla trattazione delle regole
sintattiche di questo linguaggio; tuttavia anche nei successivi capitoli 7 e 8, prendendo spunto da
alcuni esempi, se ne espongono ulteriori approfondimenti.
Tra gli scopi degli esempi applicativi vi è, da un lato, quello di rendere il lettore familiare con la
struttura interna delle CPLD e, dall’altro, favorirne la conoscenza delle istruzioni del linguaggio
Verilog.
A corredo del volume, alla pagina www.inwaredizioni.it/cpld è disponibile per il download la
documentazione tecnica relativa alle CPLD trattate, i data sheet e i file sorgenti e oggetti dei
progetti considerati.
Le informazioni presentate nel presente volume possono essere facilmente estese ad altri modelli
di CPLD, rendendo il testo non solo un punto di partenza, ma anche un utile manuale da tenere
sempre a portata di mano.
1 – INTRODUZIONE ALLE LOGICHE
PROGRAMMABILI
PREMESSA
Spesso si sente dire che il tipico personal computer dei nostri giorni è molto più potente del più
grande supercomputer di solo una ventina di anni fa.
Questa è proprio la più evidente testimonianza, sotto gli occhi di tutti, dell’ incredibile evoluzione
che la tecnologia del computer ha avuto negli ultimi decenni. Al contrario, molto di rado si sente
parlare di un’altro fenomeno che ha seguito una vicenda parallela, meno visibile ma non meno
importante: di come cioè un piccolo dispositivo programmabile e poche righe di codice possano
oggi rimpiazzare letteralmente centinaia di circuiti integrati discreti.
LOGICA FISSA E LOGICA PROGRAMMABILE
I dispositivi logici si possono classificare in due grandi famiglie – fissi e programmabili. Come
suggerisce il nome stesso, i circuiti in una logica fissa sono permanenti, effettuano una certa
funzione o un insieme di funzioni e, una volta costruiti, non possono essere più modificati. A
questa categoria appartengono i circuiti integrati di prima generazione, quali le porte logiche
elementari a media integrazione (MSI), i contatori, i divisori , ecc.. Alla famiglia VLSI, ad alta
integrazione, appartengono gli ASIC, componenti che vengono prodotti in fabbrica per mezzo di
una determinata mascheratura.
Sull’ altro versante si annoverano i dispositivi programmabili, come PLD (acronimo di
Programmable Logic Device) e CPLD (Complex PLD), i quali sono prodotti standard in grado di
offrire ai progettisti un ampio ventaglio di funzioni e di prestazioni , oltre a particolari
caratteristiche di velocità; questi dispositivi hanno la particolarità di poter subire modificazioni in
qualunque momento per essere adattati a realizzare un gran numero di funzionalità.
Alla categoria dei programmabili appartengono pure i componenti FPGA, raffinati dispositivi di
fascia "alta" che stanno soppiantando i tradizionali ASIC in gran parte dei contesti applicativi.
CONVENIENZA DELLE LOGICHE PROGRAMMABILI
I componenti logici discreti, a lungo considerati i cavalli di battaglia dell’industria dei
semiconduttori, sono stati per parecchi anni avvantaggiati dai bassi costi, rispetto alle prime
logiche programmabili comparse agli inizi sul mercato.
Tuttavia, oggi le cose sono cambiate radicalmente; i progressi compiuti negli anni più recenti nel
campo delle tecnologie di costruzione delle CPLD hanno abbassato i costi di produzione di questi
dispositivi a un livello tale da farli divenire alternative molto appetibili rispetto alle logiche fisse
discrete.
Ma, al di là delle semplici ragioni di costo, vi sono altri fattori particolarmente rilevanti che
rappresentano notevoli vantaggi a favore delle CPLD : la flessibilità costituita dalla
riprogrammabilità, la rapidità nell’ apportare le modifiche, la riduzione dell’area occupata sullo
stampato, la superiore affidabilità rispetto alle logiche discrete, il ridotto time-to-market, solo per
citare i più importanti.
Con i dispositivi a logica fissa, se i requisiti cambiano strada facendo bisogna sviluppare dall’
inizio un nuovo progetto.
Per contro, con l’ impiego di dispositivi logici programmabili, i progettisti hanno a disposizione
strumenti software a basso costo con i quali sviluppare velocemente , simulare e testare i loro
sistemi.
Al termine dello sviluppo, il progetto viene implementato in maniera rapida sul dispositivo scelto e
immediatamente testato nel circuito reale.
Il dispositivo CPLD/FPGA che viene impiegato per la prototipazione è esattamente lo stesso che
verrà utilizzato nelle fasi di produzione dell’ apparato finale, quale potrebbe essere ad esempio
un network router, un modem DSL, un DVD player o un sistema di navigazione per autovetture.
Un altro beneficio fondamentale nell’utilizzo delle logiche programmabili consiste nel fatto che,
durante la fase di progetto, tutte le ulteriori ed eventuali modifiche che il cliente dovesse
richiedere possono essere implementate senza costi aggiuntivi.
Questo perchè le CPLD/FPGA sono basate su una tecnologia a memoria riscrivibile; per
effettuare delle modifiche, semplicemente viene riprogrammato il dispositivo. E, una volta che al
progetto vengono aggiunti i ritocchi finali, il cliente può iniziare da subito la produzione in serie
programmando quanti dispositivi sono necessari con il file di configurazione deninitivo.
UN PO’ DI STORIA
Oltre quattro decenni fa i circuiti logici digitali venivano interamente realizzati con resistenze, diodi
e transistor.
A questo proposito possiamo ricordare le soluzioni a Diode Logic, Resistor-Transistor Logic,
Diode-Transistor Logic (figura 1.1).
Figura 1.1 : primi circuiti logici
Tuttavia i gate logici elementari, i contatori e le altre funzioni logiche di media complessità, si
dimostrarono essere troppo ingombranti se realizzati con componenti discreti. A causa di queste
limitazioni e per poter raggiungere gli attesi livelli di integrazione, si rese necessario sviluppare la
tecnologia dei circuiti integrati.
Il risultato fu l’introduzione delle prime famiglie commerciali di dispositivi logici digitali.
La Texas Instruments agli inizi degli anni anni '60 commercializzò alcuni dispositivi DTL, tra cui si
ricorda la serie 930, a cui fece seguito la serie SN73 / 53, che rimase in produzione fino alla
metà degli anni '70.
La SN53 era specifica per le applicazioni militari, avendo un range di temperatura operativa da 55 a +125 gradi centigradi. La serie SN73, con un più ridotto range operativo, era indirizzata alle
applicazioni industriali.
In seguito vennero sviluppati i circuiti integrati conosciuti come Transistor-Transistor-Logic o TTL.
La classica serie 74 (54 nell’equivalente militare) fu il capostipite di quello che sarebbe diventato
un’ ampio set di famiglie, tutte con componenti simili nelle funzionalità, ma con significative
differenze nelle performance e nei consumi individuali.
L’ERA DELLE LOGICHE TTL
La tecnologia delle logiche discrete TTL ottenne il battesimo ufficiale quando, agli inizi degli anni
'60, la Texas Instruments introdusse la già accennata famiglia 74 di circuiti integrati di tipo
standard logic per supportare i programmi di esplorazione spaziale, in particolare lunare, della
NASA.
La famiglia 74 (di cui in figura 1.2 è rappresentato un esemplare) comprendeva le porte logiche
elementari, come ad esempio il quadruplo NAND 7400 (figura 1.3), oltre alle varie tipologie di flipflop (tra cui il celebre 7474), i contatori (come il 7493), i sommatori binari e altre semplici funzioni.
I primi integrati erano fabbricati nei package dual-in-line a 14 e 16 pin.
Figura 1.2 : un esemplare della famiglia 74
Figura 1.3 : logica nand TTL
I successivi progressi nel packaging e l’introduzione di dispositivi a livelli via via crescenti di
integrazione consentirono ai progettisti di minimizzare drasticamente gli ingombri sui circuiti
stampati e di ridurre il numero di componenti complessivo (il cosiddetto chip count), fornendo nel
contempo un comodo sistema "ad incastro" del tipo a blocchetti Lego.
Con il trascorrere degli anni nuove famiglie venivano introdotte continuamente, atte a soddisfare
le necessità di aumento delle prestazioni in frequenza, minori consumi e riduzione dei costi. Il
risultato fu la proliferazione di oltre trenta differenti famiglie 74, ciascuna con specifiche
caratteristiche.
Attraverso gli anni ’70 le varianti delle famiglie TTL si diffusero rapidamente e, di pari passo, ne
aumentò la complessità. Nei primi anni ’80 era presente sul mercato un’ estrema varietà di
tipologie : TTL, S , LS , AS , F , ALS , CD4000 , HC , HCT, BCT, AC, ACT, FCT, ABT, LVT,
AHC, AHCT, ecc.., tali da costringere i progettisti a destreggiarsi a fatica tra le caratteristiche di
ognuna e le reciproche compatibilità elettriche per poter al meglio realizzare le proprie
applicazioni.
NASCITA DELLE CPLD
Mentre la gamma dei dispositivi 74 si espandeva, cominciava ad apparire una nuova tendenza
rivoluzionaria nella forma dei componenti logici programmabili, detti PLD (Programmable Logic
Devices).
Oltre a consentire all’ utilizzatore la caratteristica della programmabilità, la prima generazione di
questi chip poteva rimpiazzare fino a una diecina di integrati logici discreti.
In seguito, con l’avanzare del processo di integrazione, le PLD furono in grado di sostituire
sempre più numerose funzioni logiche standard. Oggi, le più avanzate CPLD (Complex PLD)
contengono decine di migliaia di gates e la loro capacità equivalente corrisponde a quella di
centinaia di dispositivi della serie 74.
Tuttavia, le prime generazioni di CPLD costavano ancora molto. Se consideriamo il processo di
fabbricazione, in sostanza il prezzo di un dispositivo finito è determinato da quanto si riesce a
partizionare la fetta di silicio da cui si parte (figura 1.4). Se, ad esempio, il wafer costa 3000
dollari e si ottengono 300 matrici (Die) per wafer, il costo di ciascun dispositivo si aggira sui 10 $,
a cui va sommato il contributo del package e delle successive lavorazioni, di cui il testing è la
parte predominante.
Figura 1.4 : partizioni sul wafer di silicio
RESA DEL PROCESSO PRODUTTIVO
Il processo di produzione di un circuito integrato segue regole molto precise e tutti i parametri
vengono tenuti rigidamente sotto controllo per ridurre al minimo le imperfezioni. In sostanza, la
massima dimensione di un circuito integrato, secondo la regola empirica di Rent, dipende dalla
resa ottenibile nel processo di fabbricazione (tipicamente dell’ 80%) e dal massimo numero di pin
di I/O realizzabili.
PACKAGE
Di pari passo con l’aumento della complessità, anche il package dei circuiti integrati ha subíto
una progressiva evoluzione (figura 1.5), volta ad accrescere sempre più il numero di pin di I/O a
disposizione. Dal package dual-in-line iniziale si è giunti, ad esempio, al moderno Ball-Grid-Array,
per il cui montaggio sono necessarie specifiche attrezzature.