
Introduzione alle VHDL: (logiche
digitali programmabili)
(fonte
Una logica programmabile è formata da una serie di porte e di flip-flop configurabili dinamicamente, che possono essere così interconnessi tra loro attraverso delle giunzioni di tipo programmabile.
Opportune locazioni di memoria ci permetteranno di definire sia le funzioni che le modalità secondo cui tali funzioni andranno correlate tra loro.
Secondo questo principio sono state sviluppate varie soluzioni e diverse architetture possibili.
Le più note sono sicuramente:
SPLD
(Simple Programmable Logic Devices),CPLD
(Complex Programmable Logic Devices),FPGA
(Field Programmable Gate Array)FPIC
(Field Programmable Interconnect).In Particolare poi gli SPLD - noti anche con il nome di PAL
(programmable Array Logic), GAL (Gate Array Logic), PLA (programmable Logic Array) o PLD che rappresentano la soluzione programmabile più semplice e più economica.Questi dispositivi sono dotati di una ventina di macro celle Logiche che rappresentano una funzione logica di tipo combinatoria come può essere una somma (OR), un prodotto logico, (AND) - e anche da i flip-flop.
La funzione logica combinatoria supporta da 4 a 16 termini di prodotto, a loro volta caratterizzati da numerosi ingressi.
Normalmente una macro cella è in grado di collegarsi ad una qualsiasi altra macro cella del componente.
La struttura della cella di memoria può essere di tipo "fuse" (ovvero viene programmata permanentemente instaurando una configurazione fissa e inalterabile, similmente a quanto avviene in una Rom), può essere basata su una struttura non volatile (quale una Eprom, una Eeprom o una Flash) oppure su una struttura volatile, tipicamente una Sram.
L'impiego più frequente per gli SPLD è per la sostituzione delle tradizionali porte logiche di tipo 7400.
I CPLD poi, hanno una capacità significativamente superiore ma sono simili agli SPLD.
Un PLD è considerato "complesso" quando contiene più di una ventina di macro celle.
Per semplificare l'architettura le macro celle vengono di solito raggruppate, nell'ambito di un blocco funzionale, in quartetti, in ottetti o per sedici. All'interno del blocco le macro celle sono tutte collegabili tra loro ma all'interno del dispositivo1 blocchi funzionali non sempre sono totalmente accessibili. Con l'incremento delle densità questo comporterebbe infatti una proliferazione abnorme delle connessioni.
Se le risorse del dispositivo non sono totalmente accessibili (l'accessibilità è un parametro che viene espresso con il termine di "routability") si possono verificare dei problemi per mantenere la piedinatura in caso di revisioni anche minime del progetto iniziale.
Normalmente la soluzione è quella di adottare una matrice di commutazione programmabile, che soprattutto grazie alle buone prestazioni di velocità e all'elevato "fan-in" delle macrocelle (il fan-in è il massimo numero di ingressi gestibili da una porta logica), CPLD sono particolarmente adatti ai progetti destinati alle attività di controllo, alle macchine a stati ad alte prestazioni e ad elevata complessità.
Alcune tra le caratteristiche che differenziano le varie architetture sono la possibilità di prendere "in prestito" - o di "allocare" - un termine di prodotto di una determinata macrocella da un'altra macrocella, e il livello di "popolamento" della matrice. Con l'allocazione, quando il numero di termini di prodotto eccede la disponibilità della macro-cella è possibile appoggiarsi a una macrocella adiacente, pur pagando una piccola penalità in termini di tempi di propagazione, e questo accorgimento assicura ai CPLD un campo d'impiego più vasto.
Il numero di connessioni offerte dalla matrice è massimo quando la matrice è totalmente popolata. ovviamente, più bassa è la popolazione della matrice, più difficile sarà adattare il progetto fisico alle risorse disponibili ma più economico sarà il prodotto. Con una matrice totalmente popolata il progetto potrà invece sfruttare al massimo le risorse disponibili. Questo permette di mantenere la piedinatura fissata con lo sviluppo iniziale anche in caso di revisioni del progetto. Le temporizzazioni di una matrice di commutazione totalmente popolata sono normalmente fisse e predeterminate.
Tale flessibilità è possibile ovviamente a discapito dell'aspetto economico. Potere instradare un segnale verso il pin d'uscita desiderato costituisce un privilegio molto importante. Questo permette infatti di apportare al progetto delle correzioni anche sostanziali, senza dovere ridisegnare completamente il layout della scheda.
Le Tecnologie Impiegate:
I CPLD vengono realizzati sulla base di varie tecnologie tra cui Eprom, Eeprom, Flash e Sram.
La prima tecnologia (Eprom), è programmabile una sola volta (OTP), a meno che il componente non sia dotato di una finestra per la cancellazione con una lampada ad ultravioletti.
Eeprom e Flash sono riprogrammibili elettricamente: per alterare la configurazione interna non è perciò necessario rimuovere il componente dalla scheda. Tale capacità - supportata da un'opportuna circuiteria di cancellazione - può essere sfruttata per offrire funzionalità di programmazione "In-System" (ISP).
A livello di sistema, la prestazione (SP permette di contare su una sezione che può essere configurata di volta in volta - in alcuni modelli anche dinamicamente - per eseguire compiti differenti. L'invio dei dati di programmazione avviene di solito attraverso una interfaccia standard, nota con il nome di Jtag (Ieee l149.1). Le doti di riconfigurabilità sono ancora superiori con le tecnologie Sram-based.
I prodotti Sram sono riprogrammabili ma purtroppo perdono la loro predisposizione interna ogni volta che vengono disalimentati. I dati di programmazione vengono ricaricati all'accensione, prelevandoli da una memoria di supporto o scaricandoli attraverso un dispositivo "host" più intelligente, tipicamente un microprocessore o una periferica. I dati di programmazione definiscono le funzioni dei vari blocchi logici, la direzione degli I/O, le interconnessioni interne. Essendo basati su una tecnologia riprogrammabile, i prodotti Sram possono variare la loro configurazione dinamicamente e in tempo reale durante il funzionamento (reconfigurable-computing).
Le FPGA si differenziano da SPLD e CPLD in quanto offrono in genere delle capacità più elevate, anche se il divario sta andando gradualmente a ridursi. Una FPGA è costituita da una matrice di blocchi logici circondata da una serie di blocchi logici programmabili.
il tutto sfrutta le connessioni messe a disposizione da una risorsa configurabile. La maggior parte delle FPGA non garantisce l’instradamento totale dei blocchi logici (pena, un costo proibitivo), ma grazie a dei potenti tools software di place and route utilizzati a livello di sviluppo, i progetti possono raggiungere lo stesso un elevato livello di efficienza.
Alla descrizione generica di FPGA corrispondono numerose architetture, che basano gran parte delle loro caratteristiche sulla potenza della logica contenuta nei blocchi.
Benché il confine sia molto labile, le FPGA sono suddivise in due grandi gruppi: Grana Fine e Grana Grossa.
I dispositivi a Grana Grossa (in inglese "coarse grained"), prevedono dei blocchi logici di grandi dimensioni che di solito contengono due tabelle di look-up e due o più flip-flop.
Nelle architetture a Grane Fine (fine grained) sono presenti numerosi blocchi logici di struttura più semplice. Normalmente il blocco contiene una funzione a due ingressi o un multiplexer 4-1 e un flip-flop.
Questi dispositivi sono particolarmente validi per gestire schemi di tipo sistolico (accumulo-invio) mi soprattutto permettono di mettere inpratica con facilità il processo di sintesi logica, cioè la traduzione su hardware di un progetto descrittocon delle istruzioni software di alto livello. Le Fpga sono basate principalmente su due processi: Sram e antifusibili.
Le Fpga Sram-based, hanno le stesse proprietà dei Cpld realizzati con la medesima soluzione. i prodotti anti-fuse sono invece programmabili una sola volta ma mantengono la loro configurazione anche quando vengono disalimentati. A differenza di quanto succede con le tecnologie Rom, il link anti-fuse viene attivato "bruciando" una zona in silicio amorfo (come fosse un vero e proprio fusibile).
Sottoposta a questo trattamento, l'area diventa conduttiva e assicura la connessione permanente tra due zone del componente. Gli Fpic sono delle matrici di connessione programmabili più che dei dispositivi logici. Questi prodotti si limitano di solito a connettere - attraverso le loro risorse interne - un pin a un altro pin. Anche qui le tecnologie utilizzate sono normalmente di tipo Sram o antifuse: nel primo caso la programmazione interna deve essere ripristinata a ogni accensione; nel secondo caso è permanente. I produttori più noti di Fpic sono I-Cube (che li propone sotto forma di dispositivi stand-alone) e Aptix (che li commercializza già integrati su particolari schede).
LO SVILUPPO:
oltre alla scelta del tipo di prodotto, l'attività più delicata legata al mondo delle logiche programmabili è la progettazione. Il processo di sviluppo coinvolge tre passi basilari: l'entry del progetto, la sua implementazione e la verifica.
A questi si aggiunge la successiva programmazione del dispositivo. Con "entry" ci si riferisce alla stesura fisica del progetto. A causa della crescente complessità degli sviluppi, ai tradizionali tool software di entry schematico - cioè l'attività di disegno dello schema, come se si utilizzasse carta e penna - si vanno sostituendo1 nuovi metodi basati su linguaggi di descrizione hardware di alto livello. Noti anche con il nome Hdl (Hardware Description Language), questi linguaggi consentono di descrivere le funzioni svolte dal circuito tramite delle apposite istruzioni software, come se si trattasse di un normale applicativo. I linguaggi più diffusi sono il Vhdl e il Verilog Hdl, assunti ormai a standard internazionali.
La descrizione del flusso di istruzioni Hdl viene sintetizzato, cioè tradotto in un formato più vicino all'hardware.
I metodi di alto livello sono più semplici da usare ma assicurano un controllo inferiore su densità e prestazioni del progetto. Il disegno manuale consente infatti di gestire lo sviluppo a livello di singola porta ma, ovviamente, oltre un certo livello di complessità sono inutilizzabili.
Una volta sintetizzato, il progetto può essere implementato sul dispositivo, ma prima di ciò deve però essere verificata l'aderenza a una serie di vincoli elettrici e temporali, questo permette di determinare a priori se le potenzialità offerte dal dispositivo target consentono di rispettare o meno le specifiche di progetto iniziali.
A questa fase segue il place and route, che si incarica di assegnare le risorse disponibili ai vari blocchi circuitali del dispositivo, l'obiettivo del tool di place and route è di assicurare un uso più efficiente possibile delle connessioni e della logica, sempre nel rispetto dei vincoli temporali ed elettrici delle specifiche iniziali.
Il place and route genera un file binario che viene usato per programmare il chip. In vari punti di tutte queste fasi s'innestano delle opportune verifiche. La verifica finale, nota come simulazione "full-timing" consente di avere un quadro completo delle prestazioni in quanto sfrutta "veri" ritardi di routing introdotti dal dispositivo. La tendenza è di anticipare sempre più questa verifica per evitare di arrivare alla fine del progetto e scoprire di dovere ricominciare tutto daccapo. A tale scopo sono stati studiati I cosiddetti simulatori di temporizzazioni statiche, dei particolari tool che già dalle prime fasi dello sviluppo provvedono a simulare il circuito sulla base di una stima dei possibili ritardi. Il concetto di anticipare il più possibile I controlli sta per essere generalizzato a tutte le verifiche che normalmente vengono compiute sul prototipo hardware finale, dai test elettrici fino a quelli per l'Emi e per la dissipazione termica. Questo approccio é noto con il termine di progettazione "constrain-driven", cioè di progettazione "pilotata" dai vincoli. Il progetto in questo caso evolve solo a patto che vengano rispettate le condizioni imposte dalle specifiche finali del prodotto. A tale scopo esistono in commercio sia degli applicativi indipendenti, sia degli ambienti di sviluppo integrati nati proprio in base a questa esigenza.
|
|
|||
|
Progettazione Hardware Software, Web Development, Automatismi industriali CCIAA CAGLIARI P.IVA 02697440929 tel. 3337602601 FAX. 06/233.235.268 EMAIL maulicc@tin.it |
|||
|