Capitolo IV Memorie e logiche programmabili. elettronici... · 2009. 9. 29. · Capitolo IV Memorie...

36
Capitolo IV Memorie e logiche programmabili 151 Capitolo IV Memorie e logiche programmabili. 4.1) Introduzione. Un peso notevolissimo nel campo dell’integrazione a larga scala e’ ricoperto al giorno d’oggi dalle memorie, che rappresentano attualmente circa i due terzi della totalita’ dei circuiti integrati prodotti. Ancora oggi si assiste ad un continuo aumento del numero di bit disponibili sul singolo chip, che approssimativamente quadruplica ogni tre anni. Stranamente sulle memorie a semiconduttore non esiste quell’ampiezza di informazione che ci si potrebbe aspettare per componenti che rivestono una cosi’ grande importanza. Probabilmente tale situazione prende origine, a differenza dei circuiti SSI e MSI, da considerazioni di competitivita’ tra le industrie produttrici, che non hanno alcun interesse a divulgare informazioni troppo dettagliate sui loro prodotti. 4.2) Classificazione delle memorie. Le memorie a semiconduttore sono dispositivi elettronici costituiti da un insieme di celle elementari, ciascuna delle quali e’ in grado di immagazzinare un’informazione binaria. Questo insieme di celle elementari e’ dotato di apposite linee di comunicazione che permettono di accedere al singolo dato. Le memorie possono essere classificate sotto diversi punti di vista. Ad esempio esse possono venire identificate a livello di sistema a seconda del tipo di accesso che consentono. Si parla allora di memorie ad accesso sequenziale o di memorie ad accesso diretto (dette spesso in modo improprio ad accesso casuale). Nel primo caso i dati vengono accodati l’uno rispetto all’altro in fase di scrittura, mentre in fase di lettura l’organizzazione della memoria e’ tale che il primo dato leggibile sia quello che e’ stato scritto per primo (in questo caso si parla di memorie first in – first out o FIFO). Oppure puo’ avvenire che il primo dato leggibile sia l’ultimo scritto e in tal caso si parla di organizzazione a pila (o a stack). Vi possono essere poi ancora altre organizzazioni, ma, comunque sia, nelle memorie ad accesso sequenziale per recuperare un dato e’ necessario scorrere tutti i dati che in fase di lettura precedono quello voluto. Molto spesso tuttavia risulta necessario poter accedere direttamente ad un particolare dato; tale operazione e’ appunto possibile nelle memorie ad accesso diretto, nelle quali attraverso un indirizzo si puo’ direttamente individuare l’informazione desiderata. Nelle memorie ad accesso sequenziale l’indirizzo non e’ necessario, o meglio e’ implicito. E’ opportuno tuttavia notare che esistono metodi di accesso piu’ complessi di quelli citati. Ad esempio esistono le memorie ad accesso multiplo (il piu’ delle volte doppio), in cui esistono piu’ canali di accesso in modo da renderle disponibili a piu’ processi contemporaneamente, rendendo la memoria una risorsa condivisa. Rimanendo nell’ambito delle memorie ad accesso casuale una prima grande suddivisione e’ quella che divide le memorie in quelle di lettura e scrittura (RAM – random access memory) e in quelle a prevalente lettura (ROM – read only memory). Nelle prime un dato puo’ essere scritto e letto in qualsiasi cella, con un tempo di accesso che e’ praticamente lo stesso sia che l’operazione sia di scrittura che quando l’operazione e’ di lettura. Nelle seconde l’operazione normale e’ solo quella di lettura poiché quella di scrittura o non e’ permessa o richiede un tempo molto piu’ lungo che non quella di lettura. Un vantaggio delle ROM tuttavia risiede nel fatto che l’informazione si conserva anche quando l’alimentazione viene a mancare, a differenza delle RAM in cui l’informazione viene persa. Per tale motivo le ROM vengono anche chiamate memorie non volatili. Per la verita’ esistono anche RAM non volatili, ottenute con opportuni espedienti; ad esempio le ZRAM (zero power RAM) utilizzano batterie tampone per mantenere alimentati i dispositivi

Transcript of Capitolo IV Memorie e logiche programmabili. elettronici... · 2009. 9. 29. · Capitolo IV Memorie...

  • Capitolo IVMemorie e logiche programmabili

    151

    Capitolo IVMemorie e logiche programmabili.

    4.1) Introduzione.

    Un peso notevolissimo nel campo dell’integrazione a larga scala e’ ricoperto al giorno d’oggidalle memorie, che rappresentano attualmente circa i due terzi della totalita’ dei circuiti integratiprodotti. Ancora oggi si assiste ad un continuo aumento del numero di bit disponibili sul singolochip, che approssimativamente quadruplica ogni tre anni.

    Stranamente sulle memorie a semiconduttore non esiste quell’ampiezza di informazione checi si potrebbe aspettare per componenti che rivestono una cosi’ grande importanza. Probabilmentetale situazione prende origine, a differenza dei circuiti SSI e MSI, da considerazioni dicompetitivita’ tra le industrie produttrici, che non hanno alcun interesse a divulgare informazionitroppo dettagliate sui loro prodotti.

    4.2) Classificazione delle memorie.

    Le memorie a semiconduttore sono dispositivi elettronici costituiti da un insieme di celleelementari, ciascuna delle quali e’ in grado di immagazzinare un’informazione binaria. Questoinsieme di celle elementari e’ dotato di apposite linee di comunicazione che permettono di accedereal singolo dato.

    Le memorie possono essere classificate sotto diversi punti di vista. Ad esempio esse possonovenire identificate a livello di sistema a seconda del tipo di accesso che consentono. Si parla alloradi memorie ad accesso sequenziale o di memorie ad accesso diretto (dette spesso in modo improprioad accesso casuale). Nel primo caso i dati vengono accodati l’uno rispetto all’altro in fase discrittura, mentre in fase di lettura l’organizzazione della memoria e’ tale che il primo dato leggibilesia quello che e’ stato scritto per primo (in questo caso si parla di memorie first in – first out oFIFO). Oppure puo’ avvenire che il primo dato leggibile sia l’ultimo scritto e in tal caso si parla diorganizzazione a pila (o a stack). Vi possono essere poi ancora altre organizzazioni, ma, comunquesia, nelle memorie ad accesso sequenziale per recuperare un dato e’ necessario scorrere tutti i datiche in fase di lettura precedono quello voluto.

    Molto spesso tuttavia risulta necessario poter accedere direttamente ad un particolare dato;tale operazione e’ appunto possibile nelle memorie ad accesso diretto, nelle quali attraverso unindirizzo si puo’ direttamente individuare l’informazione desiderata. Nelle memorie ad accessosequenziale l’indirizzo non e’ necessario, o meglio e’ implicito.

    E’ opportuno tuttavia notare che esistono metodi di accesso piu’ complessi di quelli citati. Adesempio esistono le memorie ad accesso multiplo (il piu’ delle volte doppio), in cui esistono piu’canali di accesso in modo da renderle disponibili a piu’ processi contemporaneamente, rendendo lamemoria una risorsa condivisa.

    Rimanendo nell’ambito delle memorie ad accesso casuale una prima grande suddivisione e’quella che divide le memorie in quelle di lettura e scrittura (RAM – random access memory) e inquelle a prevalente lettura (ROM – read only memory). Nelle prime un dato puo’ essere scritto eletto in qualsiasi cella, con un tempo di accesso che e’ praticamente lo stesso sia che l’operazionesia di scrittura che quando l’operazione e’ di lettura. Nelle seconde l’operazione normale e’ soloquella di lettura poiché quella di scrittura o non e’ permessa o richiede un tempo molto piu’ lungoche non quella di lettura. Un vantaggio delle ROM tuttavia risiede nel fatto che l’informazione siconserva anche quando l’alimentazione viene a mancare, a differenza delle RAM in cuil’informazione viene persa. Per tale motivo le ROM vengono anche chiamate memorie non volatili.

    Per la verita’ esistono anche RAM non volatili, ottenute con opportuni espedienti; ad esempiole ZRAM (zero power RAM) utilizzano batterie tampone per mantenere alimentati i dispositivi

  • Capitolo IVMemorie e logiche programmabili

    152

    anche in fase di assenza dell’alimentazione primaria, o ancora le informazioni vengono duplicate suuna memoria non volatile in modo da poterle ripristinare quando necessario oppure si sfruttanoopportuni fenomeni quali l’isteresi ferroelettrica per ottenere una memorizzazione permanente.

    In ogni caso una suddivisione di massima delle memorie ad accesso diretto e’ riportata intabella 4.1, nella quale, a titolo orientativo e’ riportata anche la tecnologia con cui ciascun tipo dimemoria viene realizzato.

    TABELLA 4.1

    ------- dinamiche MOSRAM

    ------- statiche MOS e bipolari

    ------- a maschera MOS------- PROM bipolari

    ROM------- EPROM MOS------- EEPROM MOS

    • E’ opportuno tuttavia accennare ad alcune delle caratteristiche piu’ importanti dei vari tipi diROM.

    • ROM a maschera. Sono memorie a sola lettura nelle quali i dati vengono immagazzinatimediante un opportuno processo di mascheratura durante la fabbricazione. L’utente all’attodell’ordinazione deve specificare con un’opportuna codifica tutta l’informazione che devevenir scritta nella memoria. La struttura fisica del componente e’ particolarmente semplicee l’organizzazione di tale tipo di memoria e’ sempre a matrice. In commercio si possonotrovare ROM a maschera con diversi gradi di parallelismo, di cui i piu’ comuni sonocomunque 4 e 8.

    • PROM o ROM programmabili. Sono anch’esse memorie a sola lettura in cui tuttavia i dativengono inseriti dall’utente finale. La scrittura di un dato avviene o per fusione di opportunicollegamenti o con la perforazione di una giunzione. Il dato, una volta scritto, non puo’essere un alcun modo cancellato. Vantaggio sostanziale rispetto alle ROM a maschera e’l’eliminazione dei tempi di attesa tra ordinazione e consegna della ROM, malgrado che illoro costo unitario sia superiore. E’ tuttavia necessario tenere presente che la produzione diROM a maschera non e’ economicamente conveniente per quantitativi inferiori al migliaiodi pezzi.

    • EPROM. Sono memorie a prevalente lettura, utilizzate quando siano necessarie memorienon volatili, ma in cui i dati memorizzati possano venire di volta in volta modificati. Inquesto casi i dati, scritti con mezzi elettrici, possono venire cancellati, rendendo la memorianuovamente disponibile, con l’esposizione del chip a radiazione ultravioletta attraversoun’apposita finestra in vetro di quarzo.

    • EEPROM. Sono memorie molto simili alle EPROM, ma la cancellazione di un dato vieneeffettuata elettricamente, permettendo di mantenere il dispositivo nel sistema in cui e’installato. Le operazioni di scrittura tuttavia sono normalmente molto piu’ lente che nonquelle di lettura. Dal punto di vista dell’impiego e delle terminazione EPROM e EEPROM

  • Capitolo IVMemorie e logiche programmabili

    153

    sono del tutto analoghe alle ROM e alle PROM. Per alcuni modelli addirittura esiste conqueste ultime una completa compatibilita’ sia elettrica che meccanica (compatibilita’ pin topin).

    4.3) Struttura base di una memoria.

    Una memoria e’ essenzialmente costituita delle seguenti parti:

    una matrice di celle; un decodificatore di indirizzo un circuito di controllo di ingresso e di uscita.

    In memorie di piccole dimensioni, ad esempio in memorie da 16 celle, il circuito diindirizzamento puo’ essere realizzato con un semplice selettore (linear select), come illustrato infigura 4.1.

    1

    16

    M M

    M

    1 4

    16

    figura 4.1

    E’ opportuno notare in questa struttura circuitale la complessita’ dovuta alla presenza dei 2ncollegamenti elettrici necessari all’abilitazione delle singole celle. Tale complessita’ inoltreaumenta esponenzialmente al crescere del numero n di bit di indirizzo.

    Una valida alternativa e’ l’indirizzamento a matrice illustrato in figura 4.2 (coincident select).

  • Capitolo IVMemorie e logiche programmabili

    154

    1

    4

    1 4

    M

    M

    1

    4

    Selettoredi

    riga

    Selettore di colonna

    figura 4.2

    Si ottiene in tal modo una notevole semplificazione della rete dei collegamenti. Si puo’ritenere pertanto che, tranne per memorie di minime dimensioni, la struttura di base sia quella difigura 4.3.

    Decodificatore di colonna

    Circuito di controllo I/O DDin out

    cella di memoriaDecodificatore

    di

    riga

    matrice dicelle

    linea di parola

    lineadei dati

    indirizzo diriga

    indirizzo di colonna

    figura 4.3

    Il decodificatore di riga seleziona un’intera riga di celle. I dati immagazzinati nelle celleconnesse con la riga selezionata sono trasferiti al circuito di controllo di ingresso e uscita. A questopunto il dato che interessa viene trasferito all’uscita selezionandolo con il decodificatore di colonna.

  • Capitolo IVMemorie e logiche programmabili

    155

    Ogni dispositivo di memoria possiede almeno i seguenti segnali:

    Indirizzo (address) composto dai segnali da applicare ai decodificatori. All’utente non e’normalmente possibile distinguere tra i bit di selezione di riga e di colonna. L’indirizzodeve pertanto essere considerato come un tutto unico.

    Lettura/scrittura (read/write). E’ presente ovviamente solo quando necessario e permettedi scegliere tra un’operazione di scrittura o una di lettura in o da una determinata cella.

    Selezione di chip (chip select) che permette o no di abilitare la memoria in questione.Tale segnale si rende indispensabile quando si vogliano realizzare memorie di grandidimensioni, superiori a quelle del singolo chip, oppure quando memorie accedono assiemead altri dispositivi allo stesso bus per il trasferimento dei dati.

    Segnali di ingresso e di uscita (I/O). In certe realizzazioni le linee su cui viaggiano talisegnali possono coincidere.

    Alimentazione (supply). Alcune realizzazioni, quali EPROM e EEPROM possonorichiedere piu’ di una tensione di alimentazione, tuttavia nella maggior parte dei casi e’sufficiente un’unica tensione.

    La combinazione di tutti questi segnali organizza il dispositivo di memoria. Piu’ matrici deltipo descritto possono poi essere utilizzate per accedere ad informazioni di lunghezza superiore albit. Si avranno ovviamente tante linee di I/O quanti sono i bit di informazione cui si vuol accederecontemporaneamente. Si parla in tal caso di parallelismo della memoria, intendendo con taletermine il numero di bit per parola, dove parola e’ l’insieme di bit cui si accedecontemporaneamente con un unico indirizzo. Nelle memorie standard il grado di parallelismo e’ disolito una potenza di 2.

    4.4) Struttura della cella di memoria RAM.

    Prima di descrivere i principi di funzionamento di una memoria RAM e’ opportuno accennarealle regole fondamentali cui bisogna attenersi nel progetto di una cella di memoria.

    1) Una cella di memoria deve occupare sul chip la minima superficie possibile.2) I processi di fabbricazione per la sua realizzazione devono essere i piu’ semplici possibile.3) Le operazioni di lettura e scrittura devono essere le piu’ rapide possibile.4) La potenza dissipata va minimizzata

    I primi due punti sono di carattere prevalentemente economico, mentre gli ultimi dueriguardano le prestazioni del dispositivo.

    Le memorie RAM si suddividono poi in memorie bipolari e MOS, statiche e dinamiche. Lememorie bipolari sono piuttosto rare, di capacita’ ridotta, e vengono utilizzate solo in quelleapplicazioni in cui sono richieste elevate velocita’ di accesso. La distinzione tra dispositivi statici edinamici e’ gia’ stata illustrata in precedenza, tuttavia nel caso delle memorie tale distinzione siriflette anche in profonde modificazioni strutturali e di impiego.

    4.4.1) Struttura di una cella RAM statica.

    Una possibile configurazione di una cella RAM statica e’ riportata in figura 4.4. Il cuore dellacella e’ un semplice circuito bistabile che comunica con le linee dati attraverso buffer 3-state. Talibuffer, rispettivamente di lettura e di scrittura sono controllati da due porte AND al cui ingressosono applicati i segnali di selezione di riga e di colonna e quello di read/wite (R/W).

  • Capitolo IVMemorie e logiche programmabili

    156

    Quando sia X che Y sono a livello basso ambedue le uscite degli AND si trovano a livellobasso e pertanto i quattro buffer 3-state risultano disabilitati.

    DATA

    DATA

    read buffer

    read buffer

    connessione wired OR

    write buffer

    write buffer

    R/WY

    X

    figura 4.4

    Quando invece X, Y e R/W passano allo stato alto risultano abilitati i write bufferpermettendo un’operazione di scrittura nella cella; cambiando lo stato della linea R/W sidisabilitano i write buffer mentre vengono abilitati i buffer di lettura. Il valore contenuto nella cellaviene in tal caso trasferito alle linee dati.

    Realizzare una memoria RAM utilizzando la cella appena descritta risulta molto semplice. Infigura 4.5 e’ riportato lo schema di interconnessione per una memoria da quattro celle (4 bit), per laquale sono necessarie solo quattro porte in piu’ rispetto a quelle necessarie alla realizzazione dellesingolo celle.

    data in buffer data out buffer

    DATA

    DATA

    DATA IN DATA OUT

    R/W

    R/W

    X

    X

    0

    1

    Y Y0 1

    Y YX X0 1

    11

    YX

    YX0 0

    10

    R/W R/WDD

    D D

    D D

    D DR/W R/W

    figura 4.5

    Un’osservazione piu’ attenta della cella proposta fa tuttavia osservare che le esigenze diprogetto enunciate all’inizio del presente paragrafo non sono sufficientemente rispettate. Infatti, un

  • Capitolo IVMemorie e logiche programmabili

    157

    circuito costituito da otto porte (escludendo le connessioni “wired-or” che non occupano spaziosignificativo), da cinque linee di segnale e da almeno due linee di alimentazione non puo’ certoconsiderarsi efficiente in termini di superficie di silicio occupata.

    Un primo miglioramento si puo’ ottenere eliminando la necessita’ di una linea di R/W perogni cella secondo quanto illustrato in figura 4.6. Le due porte AND a tre ingressi delle cellaoriginaria si riducono ad un’unica porta AND a due ingressi che controlla sia il buffer di lettura chequello di scrittura.

    DATA

    DATA

    read buffer

    read buffer

    connessione wired OR

    write buffer

    write buffer

    Y

    X

    figura 4.6

    La lettura viene eseguita connettendo le linee DATA e DATA alle linee di uscita della cella,mentre la scrittura si esegue forzando sulle medesime linee i valori voluti.

    La cella che cosi’ si ricava potrebbe gia’ essere accettabile, ma un ulteriore livello disemplificazione puo’ essere raggiunto eliminando la porta AND e riorganizzando la configurazionedella memoria in modo tale che tutte le celle di una riga siano parzialmente accessibili, mentre solola cella della colonna selezionata lo sia totalmente. La nuova configurazione circuitale e’ riportatain figura 4.7, mentre in figura 4.8 e’ riportato lo schema completo di una RAM da quattro bit.

    X

    BIT (Y)V

    V

    BIT (Y)

    dd

    ss

    figura 4.7

  • Capitolo IVMemorie e logiche programmabili

    158

    La cella cosi’ ottenuta e’ realizzata con soli sei transistori e le linee di segnale si sono ridotte atre. E’ questa la struttura tipo utilizzata nella maggior parte dei casi per realizzare memorie RAMstatiche.

    D D

    X

    D D

    X

    D D

    X

    D D

    X

    -+

    X

    X

    Y Y

    Data in

    R/WCS DB

    DB

    Data bus

    Data bus

    Data out

    Amplificatoredifferenziale

    BIT BIT BIT BIT

    0

    1

    0 1

    R.W=0

    figura 4.8

    La costruzione di una memoria completa, che utilizzi la cella a sei transistori, introduce alcuninuovi concetti e terminologie. Significativa e’ la sostituzione delle linee dati con le cosiddette “bitline” che alimentano tutte un bus dati comune. Le “bit line” sono isolate dal bus dati da interruttoriMOS comandati dall’indirizzo di colonna.

    Il bus dati a sua volta e’ pilotato de una coppia di buffer 3-state durante la fase di scrittura,mentre in fase di lettura comunica con l’esterno tramite un amplificatore differenziale e un ulteriorebuffer 3-state. Il controllo della RAM e’ poi modificato dalla presenza di un segnale di “chip select”(CS), che negli esempi fatti in precedenza non era presente. Tale segnale si rende necessario poiche’le RAM sono disposte in un sistema di memoria in maniera matriciale come le celle checostituiscono la singola RAM e i vari chip condividono lo stesso bus dati per trasmettere leinformazioni. Ovviamente ad un dato istante deve venire selezionato un unico chip, mentre gli altridevono essere completamente ininfluenti sia per quanto riguarda i dati in ingresso che quelli inuscita.

    Si supponga, a titolo di esempio, di voler modificare il contenuto della cella X0, Y1 da “0” a“1”.I segnali da applicare alla memoria saranno allora X0, Y1 e CS alti, mentre X1 e Y0 dovrannoessere tenuti bassi. Con questa combinazione di valori vengono attivati i buffer di ingresso con DBa livello alto e DB a livello basso. Y1 chiude poi gli interruttori MOS della relativa colonna, mentreX0 chiude gli interruttori MOS della riga relativa, rendendo accessibile la cella X0, Y1.

    Le “bit line” a questo punto si trovano in una situazione di conflitto per effetto del datomemorizzato in precedenza nella cella. Tuttavia un opportuno dimensionamento delle particomponenti permette di far si’ che il nuovo dato prevalga, forzando la cella nella nuova situazione.

    Durante le operazioni descritte il segnale R/W, tenuto a livello basso, mantiene il buffer diuscita disattivato, in modo che durante il ciclo di scrittura il dato presente sul bus dati non vengatrasferito in uscita.

  • Capitolo IVMemorie e logiche programmabili

    159

    Si noti che gli interruttori MOS della cella X0, Y0 sono anch’essi chiusi e quindi il contenutodella cella viene trasferito sulle “bit line” della colonna Y0. Tuttavia il valore basso di X1 impedisceun’interazione con la cella X1, Y0, mentre il livello basso di Y0 impedisce il trasferimento del datodalle “bit line” al bus dati.

    In modo del tutto analogo puo’ essere compiuta l’operazione di lettura.

    4.4.2) Struttura di una cella RAM dinamica.

    Una cella RAM dinamica si puo’ considerare derivata da quella statica di figura 4.7, in cuituttavia sono stati eliminati i transistori di carico. Il dato viene in questo caso memorizzato nellecapacita’ parassite di gate, come e’ illustrato in figura 4.9 ( a ). In questa situazione circuitale sitende pertanto a perdere l’informazione se non si interviene con un’operazione di riscrittura primache la tensione ai capi della capacita’ sia scesa al di sotto di un determinato livello.Quest’operazione e’ detta rinfresco (refresh) del dato.

    linea di parola

    linea dei dati (D)

    T T

    T TT

    TT T

    linea di parola (R)

    linea di parola (W)

    linea dei dati (W) linea dei dati (R)

    linea di parola

    linea dei dati linea dei dati (D)

    1 2

    3 42

    1

    3 1

    (a) Cella a 4 transistori (b) Cella a 3 transistori (c) Cella a 1 transistore

    figura 4.9

    Nella cella a quattro transistori di figura 4.9 (a) tuttavia i transistori T1 e T2 lavorano in modocomplementare e si e’ quindi in presenza di una ridondanza di informazione.

    Una cella ottenuta eliminando uno di questi transistori e’ la cella a tre transistori di figura 4.9( b ). In fase di lettura il dato e’ decodificato dallo stato del transistore T1, in conduzione o meno inbase alla carica immagazzinata nelle capacita’ parassita gate-source. Pertanto quanto T3 passa acondurre T1 controlla il passaggio di corrente sulla linea dei dati ( R ) e funge quindi da convertitoretensione-corrente.

    Si puo’ tuttavia giungere ad una cella ancora piu’ semplice, realizzata con un unicotransistore, come illustrato in figura 4.9 (c). L’operazione di lettura avviene in tal caso come segue:

    In un primo tempo la tensione della linea dei dati viene portata allo stato alto. Successivamente, quando T3 viene passa in conduzione, alzando il livello di tensione della

    linea di parola, un amplificatore a soglia (sense amplifier) legge uno “0” o un “1” infunzione della variazione di tensione che viene a verificarsi o meno sulla linea dei dati,come illustrato in figura 4.10.

  • Capitolo IVMemorie e logiche programmabili

    160

    Tensione della linea dei dati

    tempo

    lettura di un "1"

    lettura di uno "0"

    T1 ON

    attivazione delsense amplifier

    figura 4.10

    A queste operazioni segue evidentemente un refresh.

    Ogni linea dei dati e’ collegata a un “sense amplifier” che entra a far parte del circuito dicontrollo di figura 4.3. Per ottenere elevate sensibilita’ e per questioni di stabilita’ il “senseamplifier” e’ spesso realizzato in configurazione differenziale.

    4.4.3) Struttura di una memoria RAM dinamica.

    A titolo di esempio in questo paragrafo verranno illustrati i principi secondo i quali funzionauna semplice memoria RAM dinamica da 4 bit, il cui schema e’ riportato in figura 4.11. Le formad’onda dei segnali che controllano questo circuito sono illustrate in figura 4.12.

    V

    Precarica

    V

    Precarica

    X

    X

    C C C C

    C C C C

    refresh refresh

    read read

    V V

    Tristate sense Tristate senseamplifier amplifier

    Y

    data bus

    Y

    readwrite

    ingressodati

    uscitadati

    linee dei dati

    rif rif

    0

    1

    b s b s

    b s b s

    rif rif

    figura 4.11

    Si osservi che un ciclo, sia esso di lettura che di scrittura, puo’ essere suddiviso in due periodidistinti, detti rispettivamente periodo attivo e periodo di precarica. Durante il periodo attivovengono eseguite le operazioni richieste, mentre durante il periodo di precarica la memoria vienepreparata per le operazioni successive. Durante quest’ultimo periodo, con riferimento alla figura

  • Capitolo IVMemorie e logiche programmabili

    161

    4.11, non si fa altro che connettere le linee dei dati, tramite i rispettivi interruttori MOS controllatidall’impulso di precarica, alla tensione di riferimento Vrif, di valore intermedio tra i livelli ditensione corrispondenti allo “0” e all’”1” logici. Alla fine del periodo di precarica la linea dei dati sitrovera’ ad una tensione che in pratica coincide con Vrif, poiche’ l’amplificatore di refresh si trovanel suo stato ad alta impedenza.

    CICLO DI LETTURA - Ingresso WRITE basso

    indirizzi

    precarica

    READ

    refresh

    Uscita datidato valido

    CICLO DI SCRITTURA - Ingresso READ bassoWRITE

    Ingresso dati

    periodo attivo precarica

    figura 4.12

    Appena terminato il periodo di precarica, le linee di indirizzo selezionate si portano a livelloalto. La linea X fara’ condurre i MOS delle due celle situate sulla medesima riga, connettendo lecorrispondenti capacita Cs alle linee dati. Di conseguenza le cariche della capacita’ Cs e dellacapacita’ Cb si ridistribuiscono in modo che sulla linea dei dati si abbia una tensione pari a:

    ( )( )bS

    rifbSSR CC

    V.CV.CV++=

    Tale tensione vie confrontata dal “sense amplifier” con Vrif e quindi la rivelazione del datomemorizzato in ciascuna cella avviene senza difficolta’. Il dato della colonna selezionata passa poisul bus dati e, tramite il “data bus buffer”, passa al terminale di uscita.

    Se a questo punto il ciclo terminasse, i dati presenti nelle celle lette risulterebbero fortementedegradati. La lettura cioe’ sarebbe di tipo distruttivo. Gli amplificatori di refresh ovviano a teleinconveniente, ripristinando i corretti valori di tensione nelle celle. E’ ovvio che tutte le celleaccessibili della stessa linea devono venire rinfrescate contemporaneamente.

    Si noti che nel ciclo di lettura, durante il periodo attivo, l’indirizzamento termina prima diqualsiasi altro segnale, allo scopo di proteggere i dati memorizzati, che potrebbero deteriorarsi se

  • Capitolo IVMemorie e logiche programmabili

    162

    piu’ segnali commutassero contemporaneamente prima che le celle vengano isolate dal resto delsistema.

    L’operazione di scrittura e’ relativamente piu’ semplice. Il segnale “write” abilita il buffer diingresso e il relativo dato, attraverso l’amplificatore di refresh viene trasferito sulla linea datiselezionata.

    Si noti che ciascuna cella richiede solo due componenti, due linee di segnale e una linea dialimentazione (quella di massa). Inoltre in condizioni di riposo la cella non dissipa potenza. Afronte di questi vantaggi si ha un aumento del tempo di accesso, determinato dal periodo diprecarica e dalla necessita’ di assicurare che ciascuna riga sia periodicamente indirizzata perassicurare il refresh dai dati.

    Oltre alla necessita’ di refresh e’ di considerevole importanza l’istante di inizio delfunzionamento del “sense amplifier”. RAM dinamiche veloci richiedono che il “sense amplifier”inizi a funzionare il piu’ presto possibile; tuttavia anticipare troppo l’inizio del funzionamentoriduce eccessivamente la distanza tra le tensioni corrispondenti ai due stati logici sulle linee dati epuo’ dar luogo a fenomeni di instabilita’. La relazione ricavata per VR vale, infatti, solo a regime.

    La miglior temporizzazione e’ funzione di diversi fattori, quali il rapporto tra la capacita’delle linee dati e quelle delle celle di memoria., la sensibilita’ del “sense amplifier”, la generazioneinterna di rumori e altre condizioni.

    Le considerazioni sul rumore, molto importanti in quanto il “sense amplifier” deve operare sulivelli di tensione abbastanza bassi, portano a particolari geometrie nella disposizione delle celle dimemoria, che tendono ad ottimizzare la velocita’ di funzionamento e l’immunita’ al rumore. Non siritiene tuttavia utile in questa sede approfondire l’argomento.

    4.5) Esempio di utilizzazione di memorie ROM.

    Nel presente paragrafo verra' esaminato l'impiego di memorie ROM al fine di utilizzare unmonitor televisivo come display alfanumerico. Il principio di funzionamento di tale sistema, capacedi visualizzare 16 righe, ciascuna contenente un massimo di 64 caratteri, puo' essere visto conl'ausilio dello schema a blocchi di fig. 4.13.

    impulsoimpulso di riga

    Contatore modulo 64

    Memoria RAM da 64 x 16 parole da 6 bit

    Contatore modulo 16

    Generatore di

    caratteri

    Contatore modulo 11

    Shift

    register

    Clock2

    Clock1

    Uscita video

    load

    reset

    reset reset

    reset

    A

    A

    MM

    MM

    C C

    Q

    Q

    P

    P

    B B D D

    0

    6

    1

    5

    3 0 3 0

    5 0

    9 6

    5 0

    4

    0

    di quadro

    figura 4.13

    Ogni carattere sia separato da quello successivo da due spazi, e ogni linea di caratteri siaseparata dalla successiva da quattro spazi, come illustrato in fig. 4.14.

  • Capitolo IVMemorie e logiche programmabili

    163

    In tal modo, supponendo che ciascun carattere sia realizzato con una matrice 5 x 7, l'effettivospazio riservato ad ogni carattere, comprensivo dell'area di separazione tra caratteri e tra righe,risulta essere di 7 x 11.

    7

    11

    figura 4.14

    L'intera pagina alfanumerica visualizzata venga poi prelevata da una memoria RAM da 64 x16 = 1024 parole da 6 bit, in ciascuna delle quali e' contenuto il codice del carattere da visualizzare.I bit di indirizzo di questa memoria saranno pertanto 10 (M0-M9) di cui i primi 6 (M0-M5)individuano la posizione sulla riga in cui visualizzare il carattere, gli ultimi quattro (M6-M9) unadelle 16 righe costituenti la pagina. I 6 bit del dato (A0-A5), uscita della parola indirizzata, vengonoinviati all'ingresso del generatore di caratteri.

    Il funzionamento puo' essere descritto nel modo seguente. L'impulso di quadro azzera:

    Il contatore modulo 64, necessario a indirizzare i 64 caratteri che formano ciascuna riga.

    Il contatore modulo 16 necessario ad indirizzare ciascuna riga della pagina.

    Il contatore modulo 11 utilizzato per la scansione delle sette righe che costituiscono ciascuncarattere (ingressi R0, R1, R2 del generatore di caratteri) e le quattro righe che costituisconola spaziatura verticale.

    L'impulso di riga e' inviato al contatore modulo 11 e al generatore di clock (clock1) chefornisce un treno di 64 impulsi all'ingresso del contatore modulo 64. Un secondo generatore diclock (clock2), sincronizzato con il clock1, permette di serializzare, utilizzando uno shift-register,l'uscita parallela (Q1,..,Q5) del generatore di caratteri. Q1-Q5 sono i cinque bit che formano unalinea del carattere e vengono inviati ai primi cinque ingressi paralleli (P0, .., P4) dello shift-register,mentre gli ultimi due ingressi paralleli (P5 e P6) vengono mantenuti costantemente a zero in mododa realizzare la spaziatura orizzontale tra i diversi caratteri della stessa riga. Pertanto per ogniimpulso fornito dal clock1 si hanno 7 impulsi di clock2.

    I sette bit presenti agli ingressi paralleli dello shift-register vengono caricati nel registro stessocon un opportuno ritardo in modo da evitare errori di caricamento per mezzo di un segnale di "load"ricavato dal clock1.

    Il contatore modulo 11 effettua il conteggio degli impulsi di riga e fornisce i tre bit diindirizzamento B0, B1 e B2 agli ingressi R0, R1 e R2 del generatore di caratteri, in modo da

  • Capitolo IVMemorie e logiche programmabili

    164

    individuare in sequenza, durante i primi 7 impulsi di ciascun gruppo di 11 impulsi, le sette righe checostituiscono il carattere, mentre durante i successivi quattro impulsi e' necessario azzeraretotalmente lo shift-register, in modo da realizzare la spaziatura verticale. E' necessario pertantorealizzare la semplice funzione logica illustrata in fig. 4.15.

    Stato del contatore B B B B Reset

    0

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    3 2 1 0

    0 0 0 0

    0 0 0 1

    0 0 1 0

    0 0 1 1

    0 1 0 0

    0 1 0 1

    0 1 1 0

    0 1 1 1

    1 0 0 0

    1 0 0 1

    1 0 1 0

    0

    0

    0

    0

    0

    0

    0

    1

    1

    1

    1

    figura 4.15

    2103 B.B.BBReset +=

    Il contatore modulo 16 totalizza i gruppi di 11 linee video, cioe' incrementa il suo stato ogni11 impulsi di riga. Le sue uscite (D0, ..., D3) vengono inviate alla memoria RAM (M6-M9) in mododa indirizzare successivamente le 16 righe che costituiscono la pagina.

    Infine i sei bit di uscita del contatore modulo 64 (C0-C5 ) sono connessi ai primi sei bit diindirizzo della RAM, per individuare in successione la locazione che contiene il codice di ciascunodei 64 caratteri che costituiscono la riga.

    4.6) Le ROM a maschera.

    La realizzazione di una cella di memoria ROM non programmabile e’ molto semplice.Quando infatti si vuol ottenere in uscita una tensione bassa e’ sufficiente connettere tra la linea dibit e il potenziale di riferimento un MOS secondo quanto illustrato in figura 4.16. Quando la lineadi riga viene portata a potenziale alto il MOS passa in conduzione portando a potenziale di massa larelativa linea di bit.

    In sede di fabbricazione pertanto devono essere selettivamente realizzati dei MOS incorrispondenza agli “0” logici che si vogliono ottenere in uscita, mentre quando si vuole ottenere un“1” logico le rispettive linee vanno lasciate sconnesse.

  • Capitolo IVMemorie e logiche programmabili

    165

    bit y bit y

    linea di riga

    linea di riga

    linea di riga

    o 1

    figura 4.16

    4.7) La cella di memoria EPROM ed EEPROM.

    La struttura di una cella EPROM o EEPROM de’ del tutto simile a quella di una ROM amaschera. La differenza sostanziale tuttavia risiede nel tipo di MOS utilizzato, che funziona comeun elemento programmabile. In sostanza il MOS utilizzato ha la struttura illustrata in figura 4.17.

    n+ n+p

    SiO2S D

    Ggate 2

    gate 1

    figura 4.17

    Oltre il normale gate presente in tutti i transistori MOS viene realizzato, all’interno dellostrato di biossido di silicio un secondo gate (indicato in figura con gate 1), che tuttavia e’completamente isolato. Questa realizzazione permette di modificare selettivamente la tensione disoglia del dispositivo, portandola al di sopra delle normali tensioni di funzionamento (di solitocomprese tra i 3 e i 5 volt).

    Quando infatti al gate 2 e al drain viene applicata una tensione positiva elevata (15 ÷ 25 V)l’elevato campo elettrico presente nella regione di svuotamento drain-substrato provoca una scaricaa valanga. In tale condizione elettroni ad alta energia possono penetrare nello strato di ossido edaccumularsi sul gate 1. Questa carica, quando drain e gate 2 vengono riportati a potenziale zero,forza il potenziale del gate 1 a valori negativi e tale potenziale impedisce la formazione del canalealle normali tensioni di funzionamento.

    Le elevate proprieta’ dielettriche del biossido di silicio consentono di mantenere la caricaintrappolata per periodi di tempo estremamente lunghi, che si stimano essere dell’ordine delledecine di anni.

  • Capitolo IVMemorie e logiche programmabili

    166

    La carica intrappolata puo’ poi essere rimossa per effetto fotoelettrico con l’esposizione a luceultravioletta, permettendo in tal modo la cancellazione del dato memorizzato e rendendo ildispositivo nuovamente atto ad essere utilizzato. I tempi di cancellazione sono tuttavianotevolmente lunghi e richiedono lo smontaggio delle EPROM dal circuito in cui sono montate.

    Questi inconvenienti possono essere superati ricorrendo alle EEPROM in cui sia la lettura chela scrittura avvengono con mezzi elettrici. La struttura del MOS e’ ancora quella a gate flottante, malo spessore tra gate 1 e substrato e’ molto sottile (dell’ordine di 100 ). In queste condizioni lacarica intrappolata puo’ venire rimossa per effetto tunnel, quando tra gate 2 e substrato vieneapplicata una tensione dell’ordine dei 10 V, che comunque e’ ancora notevolmente superiore allenormali condizioni operative.

    In ambedue le tecnologie tuttavia il numero di riprogrammazioni non e’ illimitato. Inparticolare nelle EEPROM le caratteristiche dei transistori “floating gate” decadono con il numerodi programmazioni effettuate a causa degli elettroni che comunque rimangono intrappolatinell’ossido.

    4.8) Le ROM programmabili (PROM).

    La maggior parte dei costruttori di semiconduttori offrono, oltre ai dispositivi che sono gia’stati descritti, anche ROM programmabili dall’utente finale (programmable ROM) dette PROM.

    Questi circuiti, come gia’ e’ stato accennato offrono un’elevata flessibilita’ e riducono i costi,soprattutto quando la quantita’ necessaria e’ modesta.

    Una PROM contiene una matrice di codifica in cui sono realizzate tutte le possibiliconnessioni, come e’ illustrato in figura 4.18.

    Decodifica

    XX

    X

    codice di ingressoa M bit

    W

    W

    W

    codice di uscita a N bit

    Y Y Y Y

    o

    1

    µµµµ

    o1

    M-1

    o 1 N-2 N-1

    µµµµ = 2M

    figura 4.18

    Le connessioni sono normalmente realizzate con una striscia di silicio policristallino il cuicomportamento e’ simile a quello di un fusibile; quando cioe’ tale striscia viene percorsa da unacorrente superiore a un certo valore la connessione si interrompe. L’utente puo’ quindi facilmentebruciare i fusibili di ogni elemento di memoria, realizzando la desiderata funzione ingresso-uscita.

    Un modo alternativo e sotto certi aspetti piu’ comodo di vedere una ROM di questo tipo e’quello di immaginarla costituita da un due piani detti rispettivamente piano AND e piano OR, conriferimento a una relazione funzionale ingresso-uscita del tipo somma di prodotti. In altre paroleuna memoria a sola lettura programmabile sara' costituita da un piano AND fiso, che realizza tutti itermini minimi della variabili di ingresso, mentre il piano OR sara’ programmabile fondendo gliopportuni collegamenti. In figura 4.19 e’ rappresentata la struttura di una PROM da 4 variabili diingresso e parallelismo 4 in uscita.

  • Capitolo IVMemorie e logiche programmabili

    167

    X X X X3 2 1 0

    Collegamenti del piano AND

    Collegamenti del piano OR

    Indirizzo

    Y Y Y Y3 2 1 0

    Uscita

    figura 4.19

    4.9) I dispositivi logici programmabili.

    Nell’ambito della realizzazione di circuiti logici digitali un progettista puo’ scegliere tradispositivi discreti di tipo standard e dispositivi dedicati realizzati ad hoc per una specificaapplicazione (si parla in tal caso di ASIC Application Specific Integrated Circuit). Esistono tuttaviadispositivi, i cosiddetti PLD (Programmable Logic Device) che si collocano a meta’ strada tra ledue precedenti categorie e sono adatti per applicazioni specifiche essendo completamentepersonalizzabili dall’utente a seconda delle funzionalita’ richieste, ma conservano una strutturaregolare e di volta in volta sempre uguale.

    Le stesse PROM possono esser fatte rientrare tra i PLD e sono state molto spesso usate comearray logici configurabili. Il piu’ grosso inconveniente che esse presentano, al di la’ della lorolimitata velocita’, risiede tuttavia nella eccessiva complessita’, che aumenta esponenzialmente conil numero degli ingressi, e nel limitato numero delle linee di uscita.

    Per superare queste limitazioni gia’ verso la meta’ degli anni ’70 sono state introdotte le primevere logiche programmabili chiamate rispettivamente PAL (Programmable Array Logic) e la PLA(Programmable Logic Array), cui a breve termine hanno fatto seguito le GAL (Generic LogicArray). Per le prime due la struttura interna e’ simile a quella di una PROM, con i due piani AND eOR gia’ descritti, mentre nelle GAL vengono integrati anche flip-flop, porte XOR e altri dispositivi,con un’organizzazione in sottoinsiemi detti macrocelle configurabili, tra le quali si possonoeffettuare connessioni e realizzare anche loop di reazione. La disponibilita’ di sistemi di calcolo abasso costo e di software in grado di trasformare le equazioni booleane in “mappe di fusibili” hafavorito un ampio utilizzo di questi dispositivi.

  • Capitolo IVMemorie e logiche programmabili

    168

    Non si vuole in questa trattazione, di necessita’ di tipo qualitativo e di primo approccioall’argomento, analizzare nel dettaglio i diversi tipi di dispositivo prodotti. Sara’ sufficiente dire chela densita’, cioe’ il numero di funzioni integrabile sul singolo chip, e’ andata via via aumentando;che accanto alle tecniche a “fusibile” sono state introdotte quelle ad “antifusibile” con le quali laprogrammazione crea un cortocircuito anziche’ un circuito aperto; che esistono dispositivi basati siasulla tecnologia EPROM a ultravioletti che su quella EEPROM; che esistono dispositivi in cui lalogica viene controllata attraverso opportuni bit caricati in apposite celle RAM statiche localizzatesul chip stesso e cosi’ via.

    4.9.1) La logica a matrice programmabile (PAL).

    La logica a matrice programmabile e’ molto simile ad una PROM in quanto e’ costituitaanch’essa da un piano AND e uno OR. Tuttavia a differenza di quest’ultima il piano OR e’ fissomentre e’ programmabile quella AND. Le PAL sono utilmente impiegate per realizzare equazioniBooleane in luogo delle piu’ ingombranti e complesse PROM. Sono ovviamente disponibili solocollegamenti OR specifici, mentre tutti quelli AND sono realizzabili. La programmazione consistenel bruciare le connessioni AND indesiderate.

    In figura 4.20 e’ riportata la struttura di una PAL da 16 parole per 4 bit. Le connessionifusibili sono rappresentate con una X.

    X X X X3 2 1 0

    Collegamenti del piano AND

    Collegamenti del piano OR

    Ingresso

    Y Y Y Y3 2 1 0

    Uscita

    figura 4.20

  • Capitolo IVMemorie e logiche programmabili

    169

    4.9.2) Le matrici logiche programmabili (PLA).

    Tra i dispositivi programmabili di tipo AND-OR le PLA sono i piu’ flessibili in quanto in esseesistono tutti i possibili collegamenti sia sul piano AND che su quello OR, come mostrato in figura4.21. La programmazione anche in questo caso consiste nel bruciare le connessioni indesiderate.

    X X X X3 2 1 0

    Collegamenti del piano AND

    Collegamenti del piano OR

    Ingresso

    Y Y Y Y3 2 1 0

    Uscita

    figura 4.21

    La flessibilita’ e la convenienza di una PLA rispetto una PROM emerge chiaramente dalseguente esempio. Si supponga di dover lavorare con 16 ingressi e 8 uscite. In una PROM in talcaso si dovrebbero avere 216 = 65535 parole da 8 bit per un totale di 524288 bit e con questosistema si potrebbero realizzare 8 funzioni logiche combinatorie da 16 variabili, esprimendociascuna funzione logica nella forma canonica somma di prodotti.

    Si consideri allora un sottoinsieme della ROM appena descritta. Si abbiano sempre 16 ingressie 8 uscite, ma anziche’ 65535 parole se ne abbiano a disposizione ad esempio solamente 48.Ciascuna di queste parole prende il nome di prodotto parziale. Il termine diviene autoesplicativoconsiderando che il piano AND e’ completamente programmabile e ciascun prodotto non contienetutte le variabili di ingresso. Si parla in questo caso di una PLA 16 x 48 x 8. Il piano AND e’ dettomatrice di decodifica ed e’ formato da 48 AND con un numero massimo di ingressi pari a quellodelle variabili di ingresso al dispositivo.

    Il piano OR, detto matrice di codifica, e’ anch’esso completamente programmabile e consistedi 8 gate OR le cui uscite sono le uscite del dispositivo. Gli ingressi possibili di ciascun OR sono innumero pari a quello dei prodotti parziali, ma quelli non necessari possono venire esclusi perfusione del relativo collegamento.

  • Capitolo IVMemorie e logiche programmabili

    170

    In sostanza si vede che con una PLA non e’ piu’ necessario esprimere una funzione booleanain forma canonica, ma e' possibile implementarla in una qualsiasi forma semplificata, purche’somma di prodotti. E’ evidente il risparmio circuitale che se ne puo’ ricavare. Da un altro punto divista si puo’ affermare che mentre una PROM memorizza dati binari, una PLA memorizza funzionibooleane.

    Si considerino ad esempio le due seguenti funzioni.

    141513371011149031 A.AAA.A.A.AA.A.AA.Ay ++++=

    6121490452 A.AA.A.AA.A.Ay ++=

    Per realizzare queste due funzioni sono necessari solo sette prodotti parziali (e non otto inquanto il prodotto A.A.A 49 e’ comune ad ambedue le funzioni. Facendo quindi riferimento ad unaPLA 16 x 48 x 8 i rimanenti 41 prodotti parziali rimangono disponibili per le altre sei uscite da y3 ay8.

    La programmazione della PLA avviene creando una mappa dei fusibili (o delle connessionidesiderate quando la PLA viene programmata dal fabbricante con una maschera di metallizzazione).Per l’esempio che e’ stato preso in considerazione la mappa avra’ l’aspetto riportato in tabella 4.2.Nella zona ingresso un simbolo X sta ad indicare che vengono bruciati ambedue i collegamenti conla relativa variabile, uno “0” che rimane integro il collegamento con iA , un “1” quello con iA .Nella zona uscite uno “0” indica la bruciatura del collegamento con il relativo prodotto parziale.

    TABELLA 4.2INGRESSI USCITE

    ProdottoParziale 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Y1 Y2

    03 A.A X X X X X X X X X X X X 0 X X 1 1 0

    149 A.A.A X X X X X X 0 X X X X 1 X X 0 X 1 1

    371011 A.A.A.A X X X X 1 0 X X 0 X X X 1 X X X 1 0

    13A X X 1 X X X X X X X X X X X X X 1 0

    1415 A.A 0 1 X X X X X X X X X X X X X X 1 0

    045 A.A.A X X X X X X X X X X 1 0 X X X 1 0 1

    612 A.A X X X 1 X X X X X 1 X X X X X X 0 1

    In sostanza una PLA puo’ gestire, a parita’ di complessita’, un maggior numero di ingressi ede’ piu’ economica di una PROM. E’ evidente tuttavia che puo’ venire vantaggiosamente utilizzatasolo se i prodotti parziali necessari sono una piccola frazione delle possibili combinazioni diingresso.

    4.9.3) I gate array programmabili (PGA) e i dispositivi ad elevata complessita’.

    Sotto tale dizione vengono annoverati tutta una serie di dispositivi ad elevata densita’ diintegrazione. L’architettura e’ normalmente basata su una struttura regolare di blocchi di logicaconfigurabile interconnettibili tramite opportune linee circondati da blocchi di circuiti cheprovvedono all’input e all’output.

  • Capitolo IVMemorie e logiche programmabili

    171

    A rigore i gate array dovrebbero contenere solamente un gran numero di dispositivi logicielementari, la cui programmazione consiste semplicemente nello stabilire le volute interconnessioni.Esistono tuttavia elementi logici piu’ complessi, al cui interno si trovano anche dispositivisequenziali, che piu’ propriamente dovrebbero essere chiamati dispositivi logici programmabiliad elevata complessita’; tuttavia non e’ ben chiaro dove possa essere fissato il confine tra i due tipidi dispositivo e pertanto nel seguito non se ne terra’ conto.

    La personalizzazione da parte dell’utente puo’ venire fatta in diversi modi: con unametallizzazione, con la tecnica a fusibile o a antifusibile, ma molto spesso avviene caricando inmodo seriale o parallelo i dati di configurazione in una EPROM o una EEPROM o ancoraprelevando tali dati dall’esterno e memorizzandoli in apposite celle di RAM appartenenti aldispositivo. Si parla in tal caso di dispositivi programmabili in campo (ad esempio di FPGA – FieldProgrammable Gate Array). Con l’ultima modalita’ di programmazione citata non vi e’ alcunalimitazione sul numero delle possibili riprogrammazioni e i dispositivi possono venire utilizzati inprogetti in cui l’hardware cambi dinamicamente o quando sia necessario adattare l’hardware adiverse applicazioni. Una volta testato e consolidato il progetto si puo’ poi passare a versioni deldispositivo a maschere in cui le celle di RAM e la logica di connessione vengono rimpiazzate dametallizzazioni, conservando tuttavia la compatibilita’ con i componenti programmabili chesostituiscono.

    Gli elementi fondamentali dei dispositivi programmabili sono i blocchi di logica configurabile(Configurable Logic Block – CLB) e i blocchi di ingresso-uscita (Input Output Block – IOB). Iprimi costituiscono il supporto su cui verranno realizzate le funzioni logiche relativeall’applicazione, i secondi le interfacce tra gli ingressi e le uscite del circuito integrato e le lineeinterne di segnale. Molto spesso sono poi disponibili anche altri elementi, quali buffer 3-stateassociati a ciascun CLB, decodificatori di indirizzi, oscillatori, ecc. La complessita’ e’ mediamentecompresa tra 10.000 e 25.000 porte equivalenti, ma si puo’ giungere anche a 250.000 porteequivalenti.

    Senza alcuna pretesa di completezza la struttura di un blocco CLB potrebbe essere quellariportata nella figura 4.22, che rappresenta lo schema a blocchi di un dispositivo Xilinx (XC4000).

    figura 4.22

    G

    G

    G

    G

    F

    F

    F

    F

    C .... C 4

    Funzionelogica

    di

    G .. G

    logicadi

    F .. F

    Funzione

    Multiplexer controllatidal programma diconfigurazione

    4

    3

    2

    1

    4

    3

    2

    1

    4 1

    4 1

    4 1

    Funzionelogica

    diF , G , Ni i 1

    N1

    Clock

    H

    D /Hin 2 SR/Ho Ec

    ControlloS/R

    ControlloS/R

    SD

    RD

    D

    Ec

    1

    1

    SD

    RD

    D

    Ec

    Bypass

    Bypass

    Y

    YQ

    XQ

    X

  • Capitolo IVMemorie e logiche programmabili

    172

    All’ingresso si hanno due generatori di funzioni logiche (F e G) a quattro ingressi (F1 – F4 eG1 – G4), seguiti da un terzo (H), i cui ingressi possono essere le uscite dei precedenti, oppurepossono provenire dall’esterno. Dato che il principio di funzionamento e’ quello delle tabelle dilook-up, e’ possibile usare F e G come array di celle di memoria configurabili in 16x2, 32x1 o16x1 bit. Si ha quindi disponibilita’ di RAM direttamente sul chip.

    Ogni CLB contiene poi due flip-flop di tipo D, che possono essere usati assieme ai duegeneratori di funzioni oppure indipendentemente. E’ possibile scegliere se rendere attivo il clock sulfronte di salita o su quello di discesa; si dispone inoltre di un ingresso di abilitazione per il clock(EC – clock enable) e di un ingresso di set (o di reset) asincrono. E’ interessante notare che larealizzazione del clock enable viene effettuata senza anteporre alcuna porta all’ingresso del clock inmodo da evitare di introdurre ritardi indesiderati e da minimizzare il conseguente fenomeno delclock-skew, oltre che di possibili glitch. In funzione del segnale CE si fa passare l’ingresso esterno,oppure si fa ricircolare l’uscita, inibendo cosi’ il clock, come illustrato in figura 4.23.

    D Q

    CED

    CLK

    Q

    figura 4.23

    Per facilitare l’implementazione e per migliorare le prestazioni di sommatori, sottrattori,accumulatori, comparatori e contatori ogni cella contiene della logica aritmetica dedicata allagenerazione veloce del riporto (Fast Carry Logic), che tuttavia nello schema semplificato di figura4.22 non compare.

    I blocchi di ingresso e di uscita costituiscono poi l’interfaccia tra i terminali fisici del circuitointegrato e la logica interna e sono configurabili dall’utente. Ogni IOB controlla un pin e puo’essere configurato come ingresso, come uscita o come linea bidirezionale. I segnali possono uscireed entrare direttamente dall’esterno oppure possono essere memorizzati in appositi flip-flop. In tuttii casi tuttavia i segnali vengono opportunamente amplificati con dei buffer. In figura 4.24 e’riportato lo schema semplificato di un IOB.

    figura 4.24

    CE

    Out

    OutputClock

    InputClock

    D Q

    DQ

    output buffer

    input buffer

    ritardo

    PAD

    I

    I

    1

    2

    Slew ratecontrol

    Pull-up Pull-down

    passivo

  • Capitolo IVMemorie e logiche programmabili

    173

    A maggior chiarimento delle possibili strutture dei blocchi di logica configurabile si possonocitare gli elementi della serie FLEX 8000 dell’ALTERA, che hanno una struttura piu’ semplice diquelli citati, ma sostanzialmente presentano un’architettura analoga.

    L’elemento logico di base (Logic Element –LE) contiene un generatore di funzioni a quattroingressi il cui principio di funzionamento e’ sempre quello delle tabelle di look-up, un flip-flopprogrammabile, una catena di riporto (carry) e quella che viene chiamata “cascade chain”, secondola struttura illustrata in figura 4.25.

    Tabelladi

    look-up Carry

    catenadi

    logica diclear-preset

    cascadechain

    carry in cascade in

    selezione del clock

    clock

    carry out cascade out

    P

    C

    D QLE out

    figura 4.25

    Il generatore di funzioni permette di implementare qualsiasi funzione di quattro variabili. Ilflip-flop programmabile puo’ venire configurato per funzionare come D, T, JK o SR. I segnali dicontrollo di clock, clear e preset possono essere sia segnali che provengono dall’esterno attraversopin dedicati, sia segnali interni. Si noti inoltre che se si dovessero generare funzioni puramentecombinatorie, il flip-flop puo’ essere scavalcato e l’uscita del generatore di funzioni puo’ venireriportata direttamente in uscita del blocco.

    L’architettura realizzata mette poi a disposizione due itinerari ad alta velocita’ per i dati, lacatena di carry e la “cascade chain”, che permettono l’inteconnessione con le macrocelle adiacenti,purche’ appartenenti alla stessa riga, senza ricorrere alle risorse programmabili di connessione deldispositivo. La catena di carry fornisce una funzione di carry veloce (

  • Capitolo IVMemorie e logiche programmabili

    174

    LUT

    LUT

    LUT

    LUT

    LUT

    LUT

    AND cascade chain OR cascade chain

    figura 4.26

    Ciascuna delle celle che sono state sommariamente descritte puo’ poi operare in uno diquattro modi fondamentali. In figura 4.27 sono illustrati per sommi capi questi quattro modi difunzionamento.

    Modo normale: tale modalita’ operativa viene utilizzata in applicazioni logiche di tipogenerale e per realizzare funzioni logiche di un elevato numero di variabili, dove la “cascade chain”puo’ essere utilmente sfruttata. L’uscita della tabella di look-up (LUT) puo’ venire combinata conl’ingresso “cascade in” in modo da realizzare funzioni complesse.

    Modo aritmetico: In questo modo operativo sono disponibili due tabelle di look-up, idealiper realizzare sommatori, accumulatori e comparatori. Una delle due LUT realizza una funzione ditre variabili, l’altra sintetizza il bit di riporto (carry).

    Contatore bidirezionale: sono disponibili in tal caso segnali di abilitazione, di conteggioavanti/indietro sincrono, di caricamento di dati. Vengono usate due LUT da tre bit. La prima generail dato di conteggio, la seconda un bit veloce di carry. Un multiplexer da due a una linea permette ilcaricamento sincrono del dato. E’ possibile anche il caricamento asincrono attraverso gli ingressi diclear e preset del flip-flop.

    Contatore azzerabile: questo modo di funzionamento e’ del tutto simile a quello delcontatore bidirezionale con l’unica differenza che anziche’ una funzione di conteggioavanti/indietro viene implementato un azzeramento sincrono.

  • Capitolo IVMemorie e logiche programmabili

    175

    MODO NORMALE

    MODO ARITMETICO

    CONTATORE BIDIREZIONALE

    CONTATORE AZZERABILE

    LUT

    (4)

    D Q

    cascade in

    carry in

    dato 1

    dato 2

    dato 3

    dato 4 cascade out

    LE out

    LUT

    LUT

    (3)

    (3)

    carry incascade in

    cascade out

    LE outD Q

    carry out

    dato1dato 2

    carry in cascade in

    carry out

    cascade out

    enableup/down

    dato

    load

    LUT

    LUT(3)

    (3)

    1

    0

    D Q LE out

    carry in

    carry out

    cascade out

    1

    0LUT

    (3)

    LUT(3)

    enableclear

    dato

    load

    D Q LE out

    figura 4.27

    Gli elementi logici descritti vengono poi arrangiati in gruppi di otto, formando quelli chevengono chiamati “logic array block” (LAB), formando nell’insieme del componente una struttura agrana piu’ grossa che facilita un’efficiente interconnessione nelle strutture complesse di elevateprestazioni. Ciascun LAB (figura 4.28) dispone di quattro segnali di controllo che possono essereutilizzati in ciascuno degli otto elementi. Questi segnali, quali ad esempio il clock globale, il reset oil preset, che devono avere una bassa dispersione del ritardo per minimizzare i problemi di skew,possono essere ricavati da terminali di ingresso dedicati o attraverso i pin di I/O o ancora daqualsiasi segnale interno attraverso le linee di interconnessione tra i LAB.

    interconnessione locale dei LAB

    32canali

    segnali di controllodei LAB

    carry e cascade indei LAB a sinistra

    LE 1LE

    LE 2

    LE 3

    LE 4

    LE 5

    LE 6

    LE 7

    LE 8

    Interconnessione di riga

    interconnessionedi colonna

    connessione tra rigae colonna

    24

    4

    4

    4

    4

    4

    4

    4

    4

    8

    carry e cascade outper i LAB a destra

    2

    4 4

    4

    2

    8 18

    figura 4.28

  • Capitolo IVMemorie e logiche programmabili

    176

    L’interconnessione tra LAB e dispositivi di I/O e’ assicurata da una serie di canali dicomunicazione orizzontali e verticali che attraversano l’intero dispositivo. I LAB sono sistemati inuna struttura a matrice e ogni riga di LAB ha una riga dedicata di interconnessioni che vieneutilizzata per il colloquio bidirezionale dei LAB della stessa riga. Le interconnessioni di colonnaservono al colloquio tra elementi di righe diverse, secondo quanto schematicamente illustrato infigura 4.29

    LE1

    LE2

    canali di riga

    canali di colonna (16)

    ciascuna LE pilotaun canale di riga

    ciascuna LE pilota fino adue canali di colonna

    reazioni locali

    figura 4.29

    Infine ciascuna riga e ciascuna colonna e’ connessa ad un certo numero di elementi di I/Ocome riportato in figura 4.30.

    IOE

    IOE

    IOE

    IOE

    IOE IOE IOE IOE

    IOE

    IOE

    IOE

    IOE

    IOE IOEIOE IOE

    LAB LAB

    LAB LAB

    A1 A2

    B1 B2

    interconnessionedi riga

    interconnessione di colonna

    interconnessionelocale del LAB

    1

    8

    1

    8

    1

    8

    1

    8

    figura 4.30

    La struttura logica di questi ultimi e’ riportata in figura 4.31.

  • Capitolo IVMemorie e logiche programmabili

    177

    alle interconnessioni di riga o di colonna

    dalle interconnessioni di riga o di colonna

    controlli di I/O

    inversioneprogrammabile

    CLR

    D Q

    controllo dislew rate

    figura 4.31

    Ciascun pin di I/O puo’ venire utilizzato come ingresso, come uscita o in modo bidirezionale;e’ dotato di un registro che a sua volta puo’ essere utilizzato sia come elemento di ingresso che diuscita e permette l’aggiustamento delle entrate in modo da ottenere il miglior compromesso travelocita’ operativa e rumore.

    E’ ovvio che le due architetture sommariamente descritte non sono le sole possibili. L’intentosecondo il quale sono state presentate e’ semplicemente quello di dare un’idea della flessibilita’ edella complessita’ dei componenti VLSI disponibili al giorno d’oggi. Per maggiori approfondimentisi rimanda a testi specialistici sull’argomento.

    4.10) I sistemi di sviluppo.

    Per gestire le potenti risorse dei dispositivi programmabili risulta indispensabile avvalersi diadeguati strumenti software. Normalmente tutte le case costruttrici forniscono sistemi di sviluppocompleti per i loro componenti.

    Di solito si puo’ ritenere che la metodologia di progetto si sviluppi in tre passi, strettamentelegati tra loro:

    ♦ Descrizione del progetto (tramite schema o descrizione testuale)♦ Implementazione♦ Verifica

    Il flusso operativo e’ riportato in figura 4.32 e, come si puo’ vedere, riguarda un procedimentoiterativo durante il quale qualsiasi correzione e/o ottimizzazione fa ritornare in ogni caso alla fase didescrizione.

  • Capitolo IVMemorie e logiche programmabili

    178

    Descrizione Verifica

    Implementazione

    (Design entry)

    (Design implementation)

    (Design verification)

    simulazione funzionale

    simulazione temporale

    schema o

    testo

    partizione, posizionamento e interconnessione

    simulazioneverifica sul circuitoanalisi temporale statica

    figura 4.32

    4.10.1) Descrizione delle funzionalita’ richieste (design entry).

    La descrizione grafica basata sullo schema circuitale e’ quella piu’ semplice e immediata.Oltre ai blocchi fondamentali presenti fisicamente nelle celle elementari della FPGA i sistemi disviluppo offrono librerie di blocchi gia’ pronti corrispondenti a funzioni logiche piu’ o menocomplesse, quali contatori, registri, multiplexer ecc. E’ inoltre possibile definire blocchipersonalizzati basati su combinazioni di componenti presenti in libreria.

    L’approccio descritto e’ tuttavia conveniente solo per progetti relativamente semplici. Persistemi piu’ complessi, descritti tramite equazioni booleane o macchine a stati logici, e’ piu’conveniente fare riferimento alle descrizioni testuali come il VHDL (Very high speed integratedcircuit Hardware Description Logic). In questo modo ci si svincola dalla struttura del dispositivoprogrammabile e si puo’ trasportare facilmente il progetto su PLD prodotti da altre case ocomunque aventi differenti strutture interne.

    Esistono comunque dei punti di incontro tra i due metodi; e’ possibile infatti mescolarliall’interno dello stesso progetto, descrivendo alcuni blocchi per via grafica alcuni blocchi e altritramite HDL. Molto spesso l’ambiente di sviluppo e’ in grado di gestire una struttura gerarchica,con livelli superiori descritti graficamente e livelli piu’ bassi, che definiscono la logica di ogniblocco, descritti nel modo piu’ opportuno.

    Comunque il risultato finale di questa fase del processo, qualsiasi sia il metodo utilizzato, e’una “netlist”, cioe’ un elenco dei blocchi utilizzati e delle relative interconnessioni.

    4.10.2) Verifica (design verification).

    La verifica di un progetto su PGA richiede una combinazione di test sul circuito stesso,simulazioni con e senza ritardi temporali, e stime dei tempi di propagazione sui vari percorsi delsegnale, in modo da determinare situazioni critiche e limitanti per le prestazioni dell’intero sistema.

    Per comprendere meglio come vengano effettuate queste operazioni si consideri la figura4.33.

  • Capitolo IVMemorie e logiche programmabili

    179

    Design entry

    Functionalsimulation

    Implementation

    Static timinganalysis

    Timing simulation

    figura 4.33

    Simulazione funzionale.

    Una volta terminata la prima descrizione del circuito (Design Entry) si effettua unasimulazione funzionale, cioe’ una verifica del funzionamento logico del sistema. In questa fase nonsi tiene conto dei ritardi introdotti dalla logica e dalle linee di interconnessione, ma si fa riferimentosolo alla “netlist” in modo da rendere facilmente evidenti le relazioni causa-effetto tra ingresso euscita di ogni blocco. Il sistema di sviluppo permette di selezionare direttamente sullo schema ipunti da testare, imponendo opportuni stimoli sugli ingressi e verificando il conseguente andamentodelle uscite mediante un’opportuna finestra di visualizzazione.

    Dopo aver effettuato la simulazione funzionale, se non si e’ verificato alcun errore di logica,si passa all’implementazione del circuito mediante le risorse del dispositivo scelto. Il passosuccessivo poi consiste nell’analisi temporale del sistema e viene eseguito utilizzando l’analizzatoretemporale (Timing Analyzer) e la simulazione temporale (Timing Simulation).

    Implementazione (Design Implementation).

    Una volta scelto il dispositivo su cui effettuare l’implementazione e descritto correttamente ilcomportamento voluto per il sistema, appositi programmi provvedono a creare una corrispondenzatra le funzioni richieste e le risorse a disposizione, determinando il posizionamento ottimale e leconnessioni tra i CLB e gli IOB. Queste operazioni vengono compiute con un buon grado diautomazione, permettendo all’utilizzatore di intervenire o meno nelle varie fasi del processo. E’possibile, per esempio, effettuare tramite un’opportuna interfaccia grafica un’operazione di“floorplanning”, cioe’ di disposizione “manuale” di alcuni o di tutti i blocchi su una certa area

  • Capitolo IVMemorie e logiche programmabili

    180

    dell’array. Si possono inoltre introdurre vincoli sulla piedinatura e sulle temporizzazioni di alcunisegnali particolarmente critici.

    L’andamento dei vari passi dell’implementazione viene costantemente monitorato edocumentato mediante opportuni file.

    Analisi temporale statica.

    Il “Timing Analyzer” permette di eseguire un’analisi temporale statica di un progetto“sbrogliato”, cioe’ di un progetto di cui siano stati definiti i percorsi che realizzano i vari segnali ecollegano i blocchi necessari. Il termine “statica” e’ relativo al fatto che viene effettuata un’analisidei percorsi che uniscono tutte le coppie di punti del circuito, senza inserire stimoli agli ingressi deiblocchi. Il circuito comunque deve essere sincrono, composto solo da flip-flop e da logicacombinatoria.

    Il software permette di organizzare e visualizzare i dati necessari ad analizzare i percorsicritici nel circuito ed evidenzia i percorsi aventi i maggiori ritardi. Essendo basato sui dati dei ritarditra i vari blocchi relativi ad ogni specifico dispositivo programmabile, e’ possibile verificarevelocemente l’effetto dovuto all’utilizzo di chip con prestazioni diverse in termini di velocita’ dirisposta. I dati necessari vengono forniti dalla casa costruttrice e vengono determinati nellecondizioni di funzionamento piu' gravose. I risultati delle analisi dei vari tipi di ritardo vengonoriportati dal Timing Analyzer sotto forma di opportuni rapporti che riassumono i casi peggiori edanno la possibilita’ di stimare la massima frequenza di clock del dispositivo, valutata comel’inverso del massimo ritardo che si puo’ avere.

    I percorsi dei segnali del circuito si dividono in sei categorie fondamentali:

    • Clock to Setup• Clock to Pad• Pad to Setup• Pad to Pad• Clock input• Clock Skew

    Prima di descrivere i vari tipi di percorso e’ opportuno ricordare che viene definito tempo disetup l’intervallo di tempo entro il quale il segnale di ingresso deve essere stabile prima che il clockdivenga attivo, mentre viene definito tempo di hold l’intervallo di tempo entro il quale il segnale diingresso deve rimanere stabile dopo che il clock e’ tornato passivo.

    clock to setupQuesto tipo di percorso inizia all’uscita Q di un flip-flop o di un latch e termina all’ingresso di

    un altro flip-flop, latch o RAM, elementi che necessitano di un periodo di assestamento (setup time)prima che agisca il clock. Esso comprende il ritardo che si ha nel primo flip-flop, da quando agisceil clock a quando e’ disponibile la corrispondente uscita (clock-to-Q-delay), il ritardo dovuto alpercorso da un flip-flop all’altro e il tempo di setup del secondo flip-flop. Il tempo che il segnaleimpiega sull’intero percorso deve essere minore del periodo di clock. In figura 4.34 e’ rappresentatoun generico percorso di questo tipo con il corrispondente diagramma di temporizzazione.

  • Capitolo IVMemorie e logiche programmabili

    181

    D Q D Q

    Clock

    interconnessionie

    logica

    clock

    dato valido

    ritardo daclock auscita

    ritardo della logica e delle interconnessioni

    tempo disetup

    dato valido

    figura 4.34

    ritardo del percorso e minimo periodo di clock

    Clock to PadUn percorso di questo tipo ha inizio all’uscita di un flip-flop e termina su un pin di uscita del

    chip. Esso comprende il ritardo clock-to-Q del flip-flop e il ritardo relativo al percorso che portaall’uscita, come illustrato in figura 4.35.

    D Q

    Clock

    interconnessionie

    logica

    clock

    dato valido

    ritardo daclock auscita

    ritardo della logica e delle interconnessioni

    dato valido

    figura 4.35

    pad

    ritardo d'uscita

    margineesterno

    periodo minimo di clock

    ritardo del percorso

  • Capitolo IVMemorie e logiche programmabili

    182

    Pad to setupIl percorso ha inizio su un ingresso del chip e termine all’ingresso di un flip-flop o di una

    RAM. Il tempo corrispondente a tale percorso e’ quello richiesto al dato per entrare nel chip,attraversare la logica e3 le risorse di connessione presenti e arrivare al flip flop prima che agisca ilclock, come mostrato in figura 4.36.

    interconnessionie

    logica

    clock

    dato valido

    ritardo di ritardo della logica e delle interconnessioni

    dato valido

    figura 4.36

    D Q

    Clock

    pad

    margineesterno

    periodo minimo di clock

    ritardo del percorso

    ingressotempo disetup

    Pad to padIl percorso inizia su un ingresso del chip e termina su un pin di uscita. Il tempo corrispondente

    e’ il massimo tempo richiesto affinche’ il segnale entri nel chip, si propaghi attraverso la logica e icollegamenti e lasci il chip. In questo caso non vi e’ alcuna relazione con il segnale di clock e infigura 4.37 e’ schematizzato un tale tipo di percorso.

    interconnessionie

    logica

    dato valido

    ritardo di ritardo della logica e delle interconnessioni

    dato valido

    figura 4.37

    pad

    ritardo del percorso

    ingresso

    pad

    ritardo diuscita

  • Capitolo IVMemorie e logiche programmabili

    183

    Clock inputUn percorso del tipo Clock Input puo’ avere inizio a un ingresso del chip, oppure all’uscita di

    un flip-flop o una RAM, mentre ha termine sull’ingresso di clock di un flip-flop. Il corrispondentetempo rappresenta il massimo tempo necessario al segnale per raggiungere il pin di destinazione(figura 4.38).

    interconnessionie

    logica

    clock input

    figura 4.38

    D Q

    Clock input

    pin di clock

    ritardo del clock

    Clock skewPer il Timing Analyzer il clock skew e’ dato dall’intervallo temporale che intercorre tra gli

    istanti in cui agiscono due clock che siano connessi alla stessa linea. Questo fenomeno e' dovutoalle diverse lunghezze dai percorsi che portano il clock agli elementi di destinazione e influiscesulla massima frequenza di clock utilizzabile. Come si vede dalla figura 4.39 si possono avere duetipi di clock skew, positivo o negativo, a seconda che il clock giunga al flip-flop di destinazioneprima o dopo di quando arrivi all’altro flip-flop.

    D Q D Q

    Clock

    interconnessionie

    logica

    figura 4.39

    FF1 FF2

    clock a FF1

    clock a FF2

    periodo di clock

    clock skew

    clock a FF1

    periodo di clock

    clock a FF2

    clock skew

  • Capitolo IVMemorie e logiche programmabili

    184

    E’ ovvio che i parametri appena definiti vengono determinati per ciascuno dei clock delsistema.

    Oltre ai risultati relativi ai casi peggiori e’ possibile studiare i ritardi relativi a un qualunquepercorso scelto sul circuito, selezionando il punto di partenza, quello di arrivo, oppure il percorsopiu’ lungo o quello piu’ lento e escludendo eventualmente particolari collegamenti. E’ possibileottenere un resoconto dettagliato passo per passo con l’indicazione del ritardo dovuto alla logica equello dovuto al tempo di propagazione sulle linee che uniscono ogni blocco al successivo.

    Se nel circuito vi sono percorsi critici, noti a priori, ovvero evidenziati da analisi precedenti,e’ di solito possibile imporre su di essi vincoli mediante opportune specifiche temporali che fissanoi massimi ritardi ammessi.

    Simulazione temporale.

    La simulazione temporale viene eseguita aggiornando la “netlist” ottenuta dalla descrizionefunzionale con i dati relativi ai ritardi e ai tempi di propagazione determinati dopo aver effettuato leoperazioni di posizionamento dei blocchi logici (placing) e di interconnessione (routing).

    Si utilizza una tecnica chiamata “back annotation”, che consiste nel creare una corrispondenzatra le informazioni temporali, i nomi dei segnali e i simboli utilizzati negli schemi. In tal modo e’possibile eseguire la simulazione temporale utilizzando gli stessi stimoli e gli stessi punti di test diquella funzionale, permettendo di confrontare piu’ facilmente i risultati.

    Il simulatore e’ in grado di determinare e visualizzare automaticamente violazioni sui tempi disetup, di hold e sulla durata minima dei cicli di clock, permettendo di localizzarle e di stabilirne lecause.

    Programmazione.

    Una volta giunti a risultati soddisfacenti da tutte e tre le fasi del processo, eventualmenteprovando su dispositivi con potenzialita’ piu’ ampie, si passa alla programmazione della PGAutilizzando il file di configurazione ottenuto nella fase di implementazione. Spesso tale file vienecaricato su una EPROM dalla quale viene a sua volta caricato all’atto dell’accensione in appositecelle di RAM all’interno della PGA. La possibilita’ di sostituire le EPROM permette diriconfigurare il sistema anche “sul campo” in tempi brevissimi.

    4.11) Frequenza massima di funzionamento di un sistema sequenziale.

    Per definire la massima frequenza di commutazione di un dispositivo sequenziale i costruttorifanno riferimento a semplici sistemi quale quello illustrato in figura 4.40

    D Q

    clock

    clock

    uscita

    uscita

    figura 4.40

  • Capitolo IVMemorie e logiche programmabili

    185

    Nella connessione illustrata in tale figura il flip-flop D si comporta come un T, commutandoin corrispondenza ad ogni fronte attivo del clock e realizzando un divisore binario.

    Ovviamente la situazione prospettata e’ ottimale e normalmente le condizioni di lavorosaranno piu’ pesanti di quella illustrata a causa di altri elementi combinatori o sequenziali che sipossono trovare inseriti nei loop di reazione. In altre parole la struttura presentata in figura 4.40sara’ presumibilmente quella che puo’ commutare alla massima velocita’ e non rappresentera’ casirealistici.

    Per qualsiasi rete sequenziale si puo’ tuttavia utilizzare un semplice modello di ritardo,derivato dal modello fondamentale dei circuiti sequenziali. Si sa infatti che un qualunque sistemasequenziale puo’ venire rappresentato dal modello di figura 4.41, realizzato con una rete puramentecombinatoria e con uno o piu’ loop di reazione in cui si trovano inseriti elementi di memoria.

    Retecombinatoria

    memoria

    ingressi uscite

    stato futurostato attuale

    clock

    figura 4.41

    Fissando allora l’attenzione su un determinato stato iniziale l’evoluzione del circuito potra’venire studiata con riferimento al modello di figura 4.42.

    Retecombinatoria

    statoattuale

    clock

    MEM MEM

    ingressi usciteingressi della memoria

    figura 4.42

    E’ evidente che per un corretto funzionamento del sistema il periodo T del clock non dovra’essere inferiore al tempo che impiega un qualsiasi segnale ad attraversare la rete combinatoria. E’

  • Capitolo IVMemorie e logiche programmabili

    186

    necessario quindi individuare il percorso critico, cioe’ quello che e’ caratterizzato dal massimoritardo di propagazione.

    In realta’ la situazione e’ piu’ complessa in quanto, a rigore, sarebbe necessario tenere ancheconto del tempo di set-up e di propagazione degli elementi di memoria.

    In termini di diagramma di temporizzazione la situazione sara’ quella illustrata in figura 4.43.

    clock

    stato(ingresso)

    stato(uscita)

    ingressi della memoria

    T

    t

    t

    t

    ts s

    pmax

    co

    figura 4.43

    In sostanza pertanto il periodo di clock non potra’ essere inferiore a smaxpco ttt ++ dove contco si e’ indicato il tempo di propagazione dell’elemento di memoria, con tpmax il tempo dipropagazione del cammino critico e con ts il tempo di set-up sempre dell’elemento di memoria. E’ovvio che per tco e ts si devono prendere in considerazione i valori massimi forniti dal costruttore.

    L’analisi del problema non e’ semplice da svolgere a tavolino quando il sistema sequenzialesia appena complesso. Si ricorre allora, come detto nei paragrafi precedenti, alla simulazioneutilizzando programmi che permettono di calcolare con buona precisione i tempi di ritardo e disegnalare qualsiasi violazione delle esigenze di temporizzazione.