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.