268
Capitolo 5
5.1
Registri e contatori
Introduzione
Un registro contiene un insieme di flip flop Poiché ciascun flip flop è in grado di imma gazzinare un bit di informazione, un registro a n bit, includendo n flip flop, è in grado di immagazzinare n bit di informazione Più in generale, un registro è composro da un in sieme di flip flop e da un insieme di porte logiche che implementano opportune rransi zioni di stato In quest’ultima definizione ricadono però i arcuiti sequenziali già visn nel Capitolo 4 Utilizzando una definizione più mirata, con il termine registro ci si riferisce a un circuirò capace di gestire dei dati, formato da un insieme di flip flop e affiancato, in certi casi, da una rere combinatoria I flip flop memorizzano i dari, mentre le porte com binatone determinano il dato che deve essere trasferirò nei flip flop Un contatore è un registro il cui staro evolve secondo una sequenza predeterminata di stati, grazie all’applicazione di impulsi di clock La parte combinatoria del contarore è progettara in modo da produrre la sequenza di stari binari specificata Sebbene ì conta rori possano essere visti come registri speciali, è uso comune differenziarli dai registri Registri e contatori sono blocchi funzionali sequenziali, ampiamente utilizzati nella pro gettazione dei sistemi digitali e, in particolare, dei calcolatori digitali I registri sono unii per l’immagazzinamento e la manipolazione di informazioni, mentre i conraron sono utilizzati nei circuiti che controllano la sequenza delle operazioni eseguire in un sistema digitale
5.2
Registri_________________________________________
Il registro più semplice è formato solo da flip flop, senza porte esterne La Figura 5 1(a) mostra un registro costruirò con quattro flip flop di tipo D II segnale di ingresso Clock attiva i flip flop sul fronte di salita di ciascun impulso, per cui i valori binari presenti nei quattro ingressi D sono trasferiti e memorizzati nei flip flop corrispondenti Le quattro uscire Q possono essere esaminate per leggere il contenuto del registro Lingresso Clear b collegato a rum gli ingressi R dei flip flop e consente di azzerare il registro prima del fun zionamenro normale in modo sincronizzato L'ingresso è etichettato Clear anziché Clear, per evidenziare la necessità di un livello logico basso (0) per azzerare i flip flop in modo asincrono L’attivazione asincrona dell ingresso R dei flip flop durante il normale funzio namento può condurre a circuiti il cui funzionamento è fortemente condizionato dai ri tardi Poiché ciò può causare malfunzionamenti il segnale Clear viene mantenuto, di norma al livello logico 1 durante il funzionamento normale e si utilizza il valore 0 solo quando è necessario un reset dell intero sistema Si non che l’operazione di azzeramento di un registro è opzionale e dipende dalla funzione svolta dal registro nell economia ge nerale del sistema in cui è inserito L’operazione di trasferimento di informazioni in un registro è chiamata caricamen to Se tutti i bit sono caricati simultaneamente con un impulso clock comune, si dice che il caricamento è effettuato in parallelo Nella Figura 5 1(a) una transizione positiva del clock, applicata all ingresso Clock del registro, carica m parallelo nei flip flop ì valori ap plicati agli ingressi D
52
Registri
REG -G Clear — Do Qq — Qi — D, q2 — d2 ,— d3 Qa — (b) Simbolo
Load j ^>° \ 'N _ in g r e s s i C (di clock) y d e \ flip tlop Clock — ____ / (c) Ingresso controllo di caricamento (a) Diagramma logico Clock Load Ingressi C
L (d)
_ r Diagramma di temporizzaztone
Figura 5 1 Registro a 4 bit
Nella Figura 5 1(b) è riportato il simbolo per il registro della Figura 5 1(a) Nella procedura di progettazione gerarchica, la scelta di questo simbolo permette I uso del re gistro corrispondente in un progetto più complesso II simbolo riporta tutti gli ingressi sul laro sinistro e tutte le uscite sul laro destro Per evidenziare che l’attivazione del regi stro avviene sui fronti di salita del segnale di clock, tra gli ingressi del registro si trova l’in gresso di clock con l’indicatore dinamico Si noti che il nome Clear appare all’interno del simbolo ed è presente un pallino nella linea del segnale al di fuori del simbolo stesso Ciò
269
270
Capitolo 5
Registri e contatori
indica che è necessario applicare uno 0 logico, per attivare l’operazione di azzeramento dei flip flop ìnremi al registro Se l’ingresso fosse stato etichettato al di fuori del simbolo l’erichetta sarebbe srata Clear, analogamente al segnale di reser R dei singoli stadi, come illustrare nella Figura 5 1(a)
Registri a caricamento parallelo Moiri sisremi digitali conrengono un generatore di clock principale che genera rrem di impulsi di sincronismo (clock) Tali impulsi sono applicati ai flip flop e ai registri dell’in rero sistema II generatore di clock è il cuore del sistema e fornisce un ritmo costante per sincronizzare ì componenti Nel circuito della Figura 5 l(a) l’impulso di clock non deve raggiungere l’ingresso del circuito se si vuole che il conrenuto del registro non cambi Per regolare il funzionamelo del registro, in modo da inibire gli ingressi quando il conrenu ro del registro non deve cambiare, viene utilizzare un ulreriore segnale di controllo Load, combinare con il clock, cosi come mostrare nella Figura 5 1(c) L’uscira della porta OR è applicai agli ingressi C dei flip flop del registro, implemenrando l’equazione seguente C input - Load + Clock Quando il segnale Load è 1, gli ingressi C sono collegari al segnale Clock, il registro è nor malmente sincronizzare e nuove informazioni possono essere trasferite nel registro du rante i fronti di salita del clock Se il seggale Load è 0, gli ingressi C sono pari a 1 e di conseguenza il contenuto del registro rimane invariaro Nella Figura 5 l(d) sono ìllusrra ti gli effetti del segnale Load sui segnali di ingresso C Si nori che gli impulsi di clock ap plicati agli ingressi C Terminano con un fronte di salita che attiva i flip flop Gli impulsi e i fronti sono presenti solo quando Load è i e sono invece sostituiti da un valore co stanre pari a 1 quando Load è 0 Affinché il circuirò possa funzionare correttamente, il segnale Load deve essere mantenuto stabile al valore 0 o 1, per turto 1ìnrervallo in cui il clock ha valore 0 Ciò si verifica, per esempio, quando il segnale Load è 1 uscita di un flip flop, attivare dal fronre di salira del segnale Clock-, condizione di funzionamento norma le se tutti i flip flop del sistema sono artivi sul fronte di salita Poiché il clock è applicato o non applicato (tumed on e tumed off) agli ingressi C del registro utilizzando porte lo giche, la tecnica descritta è denominata clock gating Turtavia l'inserimento di porte nel circuire di distribuzione del clock, produce dif ferenti propagazioni del ritardo tra il Clock e gli ingressi dei flip flop che sono o non so no ìnreressari dalla recnica del clock gating Se i segnali di clock arrivano ai flip flop o ai regisrri in tempi diversi, allora si è in presenza di distorsione sul segnale di temporizza zione {clock skew) In un sistema realmente sincrono è necessario che gli impulsi di clock arrivino simultaneamenre nelle diverse parti del sistema, in modo che tutti ì flip flop commutino nello stesso istanre Per questa ragione è consigliabile controllare il funzio namento del registro senza unlizzare, se possibile, la recnica del clock garing, a meno di non conrrollare anche i rirardi in modo da ridurre il conseguente clock skew Una altemariva al clock gating prevede l’utilizzo di una diversa rere combinatoria per il conrrollo del funzionamento del regisrro, che include il segnale Load fra ì suoi in gressi Nella Figura 5 2 è riportato un registro a 4 bit con un ingresso di controllo Load che è collegato, attraverso alcune porte logiche, agli ingressi D dei flip flop, invece di es
52
Registri
Figura 5 2 Registro a 4 bit a caricamento parallelo
sere collegato, attraverso il clock gating, agli ingressi C Lingresso Load del registro de termina l’azione da eseguire per ciascun impulso di clock Quando il segnale Load è 1, ì dati sui quattro ingressi sono trasferiti nel registro con la successiva Transizione del clock Quando invece Load è 0, gli ingressi sono ìnibin e gli ingressi D dei flip flop sono con nessi alle nspetrive usare dei flip flop, in modo che possano riprodurre dinamicamenre 10 staro in cui essi si trovano Quesra soluzione è necessaria poiché manca, nei flip flop di ripo D, una combinazione di ingressi che lascia inalrerato lo stato del flip flop Si noti, molrre, che gli impulsi di clock sono apphcari agli ingressi C direttamenre 11 segnale Load determina se durante l’impulso successivo il registro memorizzerà nuove informazioni o lascerà inalrerato il proprio contenuro II trasfèrimenro di informazioni è compiuro simultaneamente per tutti i quattro bir m corrispondenza dello sresso fronte di salita del clock Questo metodo di rrasferimenro è preferirò al dock gating, poiché evita il clock skew e, quindi, potenziali malfunzionamenti del circuito
271
272
Capitolo 5
5.3
»
Registri e contatori
Registri a scorrimento
Un registro a scommento {shift register) è in grado di far scorrere ì bit immagazzinari in una o entrambe le direzioni La configurazione logica di un registro a scorrimenro const are di una carena di flip flop, collegati in cascara (stadi), in cui l’uscita di ogni flip flop è connessa all ingresso del flip flop successivo Tutti 1flip flop sono sincronizzati con un unico segnale di clock che attiva lo scorrimento da bit immagazzinati da uno stadio al successivo Il registro a scorrimento più semplice urilizza soltanro flip flop La Figura 5 3(a) mosrra che per ogni flip flop l’uscita è connessa all ingresso D del flip flop successivo II clock è unico per tutti i flip flop 'Lmgresso seriale S I dell’inrero regisrro è l’ingresso del primo flip flop (a sinistra), mentre l’uscita seriale SO è l’uscita dell’ultimo flip flop a de srra Nella Figura 5 3(b) è riportato il simbolo per il regisrro a scorrimento A volre è necessario conrrollare lo scorrimento con un segnale di controllo Per il re gisrro della Figura 5 3, lo scorrimento può essere controllaro connettendo il clock al cir cuirò, con la recnica del clock gating mostrara nella Figura 5 l(c), con Usegnale Shijt so stituito al segnale Load A causa del conseguente clock skew, questo non è sicuramente il metodo più utilizzato Come si vedrà meglio in seguito, l’operazione di scorrimento può essere controllata attraverso gli ingressi D dei Hip flop, anziché attraverso gli ingressi C del clock
i ---------- ir
i
Ingresso seriale SI
Clock (a) Diagramma logico
SRQ 4
Clock
SI
-
SO
__
!
(b) Simbolo Figura 5 3 Registro a scorrimento a 4 bit
Uscita seriale SO
53
Registri a scorrimento
Trasferimento seriale Un sistema digitale opera in modo seriale, se l’informazione nel sistema è trasferita o ma nipolata un bit alla volta L’informazione viene fatra. scorrere spostando i bir da un primo registro al successivo e così via Quesro metodo di rrasfenmenro è alternativo al trasferì menro parallelo, nel quale tutti i bit di un registro sono Trasferiti contemporaneamente Nel diagramma a blocchi della Figura 5 4(a) è riportato un possibile schema per il rrasfenmenro seriale del contenuto dal registro A al registro B, rramite registri a scorri mento Luscita seriale del regisrro A è connessa all ingresso seriale del regisrro B Lin gresso seriale del registro A è posto pari a 0 e dal momento che si introducono zeri al po sro dei bir via via spostati nel registro B, il contenuro del regisrro A sarà azzeraro, al termine dell’operazione In alrernativa, il regisrro A può ricevere alrre informazioni o manrenere inaireraro il suo contenuto In questo ultimo caso, basta connettere la sua uscita seriale all ingresso seriale, in modo che i bit ritornino via via nel registro Analoga mente, il conrenuro iniziale del registro B compare, un bit alla volta, sulla sua uscita se naie e, al termine delle operazioni, tale contenuto sarà sostituito dal contenuto del regi stro A L’informazione del registro B va quindi persa o, in alternativa, può essere utilizzata in altre parti del sistema II controllo di scorrimento Shift determina quando e quante volte deve avvenire Io scorrimento 1 registri che utilizzano il segnale Shift sono controllati con il clock gating, come illustrato nella Figura 5 l(c), che permette al segna le di clock di raggiungere il registro soltanto quando Shift = 1
Shift Clock
f
c
r
>
Registro A
Registro B
SRG4
SRG4
SI
S O ------- S!
SO
(a) Diagramma a blocchi
Clock Shift Ingresso C T,
T2
T3
(b) Diagramma di temporizzazione Figura 5.4 Trasferimento seriale
T4
273
274
Capitolo 5
Registri e contatori
TABELLA 5 1
Trasferimento seriale configurazioni intermedie dei due registri
Impulso di temporizzozione
Valore Iniziale Dopo Tv Dopo T2 Dopo r 3 Dopo r4
Registro o scorrimento A
1 0 0 0 0
0 1 0 0 0
1
1
0 1
1
0
0 1
0
0
Registro o scorrimento B
1
0 1
1
0 0 1
0
1
0 1 1
0 0
0 1
1
0 0 1
Nella figura, ciascun registro a scorrimento ha quatrro sradi La logica che controlla il trasferimento è progettata in modo da abilirare i regisrri, artraverso il segnale Shifi, per quattro impulsi di clock La remporizzazione dei segnali di abilitazione è riportata nella Figura 5 4(b) I quattro impulsi di clock, all’interno dell’intervallo in cui Shift = 1, deter minano altrettanri impulsi di abilitazione Tx, T2, T$, e I fronti di salita di T\, T2, T$, e 7*4 determinano uno scorrimenro in entrambi i registri Dopo il quarto impulso, Shift nrorna a 0 e i registri sono disabilitati Si noti ancora che, utilizzando registri artivi sul fronre di salita, questi sono disabilirari quando il segnale di controllo è al livello 1 Si supponga adesso che prima dello scorrimento il contenuto binario del registro A sia 1011, quello del registro B sia 0010 e che l’ingresso S I del registro A sia connesso a 0 Il rrasferimento seriale da A a B si compierà in quattro passi, secondo le rransizioni ri portate nella Tabella 5 1 Con il primo impulso 7\, turti i bit di A e B sono spostati, co nrempo rancamente, di una posizione verso destra II bir più a destra di A viene spostato nella posizione più a sinistra di B e nella posizione più a sinistra di A viene posro 0 ricevuto dall ingresso se riale SI I rre impulsi successivi eseguono operazioni identiche, sposrando i bir di A in B, uno alla volta, di un posto verso destra, mentre tre 0 si trasferiscono in A, azzerandolo Dopo il quarto scorrimento, la logica che supervisiona il trasferimento fa commutare il segnale Shift a 0 e il processo si arresra Alla fine il regisrro B conterrà 1011 che comode con il valore precedenremente contenuto in A Contemporaneamente il registro Ah. az zeraro La differenza rra operazioni seriali e operazioni parallele dovrebbe, a questo punro, risultare chiara Con il modo parallelo, sono disponibili rutti i bit di un registro che, quindi, possono essere trasferiti simultaneamenre duranre un singolo impulso di clock Con il modo seriale, i registri hanno un singolo ingresso seriale e una singola uscita se riale e 1informazione è trasferita un bir alla volta
Somma seriale Di solito le operazioni nei calcolatori digitali sono effetruate in parallelo per una mag giore velocità Le operazioni seriali risulrano meno veloci, ma hanno il vantaggio di ri chiedere meno circuìteria Per descrivere una operazione seriale, si utilizzerà, come esem pio, un sommato re seriale Inoltre confronteremo il sommato re seriale e il sommato re
53
Registri a scommento
275
parallelo, descritto nel Paragrafo 3 8, per mostrare un esempio dei compromessi necessa ri, in fase di progettazione, rra area di silicio occupata dal circuito e tempo di esecuzione I numeri binari da sommare in modo seriale sono memorizzati nei due registri a scorrimento, A c B I bir sono sommati a coppie, una coppia alla volta, rramire un cir cuiro full adder (FA), come mosrrato nella Figura 5 5 II riporto, generato dal circuirò full adder, viene immagazzinaro nel flip flop D e utilizzaro, come riporro, nella somma della successiva coppia di bir II bir relativo alla somma cioè l’uscita S del full adder, po trebbe essere trasferirò in un rerzo registro In questo caso si è preferirò riutilizzare il re gistro A, il cui contenuro viene quindi man mano sosriruito dalle somme parziali L’in gresso seriale S I (Serial Input) del registro B può ricevere un alrro numero man mano che la somma procede Lesecuzione di una somma seriale si svolge nel modo seguente II registro A conue ne il primo addendo (successivamente sostituito dalla prima somma parziale), il registro B contiene il secondo addendo e il flip flop destinato al riporro è azzerato Le usate seriali di A e d i B forniscono la coppia di bit per il full adder (ingressi X c Y) L’uscita del flip flop riporto è connessa a Z Quando Shijt = 1, la porta OR abilira il clock sia per ì registri sia per il flip flop Ciascun impulso di clock fa scorrere entrambi i regisrri di una posizione a destra, rrasferisce il bir somma S nel flip flop più a sinistra del regisrro A e trasferisce l’u scita C, conrenente il riporto, nel flip flop a ciò destinato La logica di controllo abilita ì registri per ranti impulsi di clock quanti sono ì bir da sommare (quattro, in questo esem pio) Alla fine, il segnale Shiftviene posto a 0 e il processo di somma si arresta
Figura 5 5 Somma seriale diagramma a blocchi del circuito
276
Capitolo 5
Registri e contatori
Inizialmente si portano a 0 i registri A e B e il flip flop destinato a contenete il ti potto Si procede quindi introducendo il primo addendo in B, che viene via via somma to al contenuto di A II risultato viene trasferito in A Mentre il processo è in esecuzione, in B possono essere trasferiti via via i bit di un secondo addendo II secondo addendo può essere, quindi, sommato al primo addendo, memo uzzato in A II processo può con tinuate, in modo da sommare, in modo seriale, un numero qualsiasi di addendi La som ma finale verrà accumulata nel registro A Il confronto tra sommatoti setiali e sommatoti paralleli, descritti nel Paragrafo 3 8 fornisce un esempio del compromesso necessario tta area di silicio occupata dal circuito e tempo di esecuzione Un sommatote parallelo, pet operandi a n bit, contiene n full ad det, inoltre un sommatote parallelo è un circuito combinatorio, mentre un sommatote seriale è un circuito sequenziale, poiché comprende anche il flip flop pet il riporto Un sommatote setiale richiede, inoltre, n cicli di clock per completare la somma Circuiti identici, come gli n full adder del sommatote parallelo, connessi insieme in una catena, costituiscono un esempio di fogica iterativa Se i valori dei riporti tta i vati full addet so no considerati come variabili di stato, allora gli stati, a partite dal meno significativo al più significativo, sono identici agli stati che appaiono in sequenza all’uscita del flip flop nel sommatore seriale Si noti però che, menrte nella logica iterativa gli stati si dispongo no nello spazio, nei circuiti sequenziali si dispongono nel tempo Convertendo una di queste implementazioni nell’altra, si può realizzate il compromesso desiderato tta area occupata e tempo di esecuzione Un sommatote parallelo richiede un’area n volte più grande di un sommatote seriale (ignorando 1area del flip flop pet il riporto), ma è n voi te più veloce Alternativamente, un sommatote seriale risulta n volte più lento, mentre è n volte più piccolo
Registri a scorrimento a caricamento parallelo Se tutte le uscite dei flip flop di uno shift tegistet sono accessibili, l’informazione intro dotta serialmente nel registro, tramite scoramento, può essere esttatta dalle uscite di rut ti i flip flop in modo parallelo Se al registro a scorrimento si aggiunge la capacita di ca «care i dati in modo parallelo, essi possono poi essere estratti serialmente Pertanto, un registro a scorrimento, con le uscite dei flip flop accessibili e la capacità di caricare i dati in parallelo, può essere utilizzato per passate dalla modalità parallela a seriale e viceversa, ovvero agisce da convertitore parallelo seriale o seriale parallelo Nella Figura 5 6 sono «portati il diagramma logico di un registro a scorrimento a 4 bit con caricamento parallelo e il simbolo corrispondente Esistono due ingressi di con ttollo, uno pet lo scoramento {Shtfi) e 1altro per il caricamento [Load) Ciascuno stadio del registro è formato da un flip flop D> da una porta OR e da tre porte AND La prima porta AND abilita l’operazione di scorrimento, la seconda abilita il caricamento dei dati di ingresso e la terza ripristina il contenuto del registro tutte le volte che nessuna opera zione è achiesta Le operazioni svolte da questo registro sono riportate nella Tabella 5 2 Quando en ttambi i segnali di controllo (Shift e Load) sono 0, la terza porta AND in ciascuno stadio è abilitata e l’uscita di ciascun flip flop è applicata al corrispondente ingresso D II suc cessivo fronte di salita del clock tiptistina, pertanto, il contenuto del registro e in uscita
53
Registri a scorrimento
Figura 5 6 Registro a scorrimento a caricamento parallelo
non si ha alcun cambiamento Quando Shtfi è 0 e Loadè 1, la seconda poeta AND è abi litata in ciascuno stadio e l’ingresso D l è applicato al corrispondente ingresso D del flip fìop t-mo I valori presenti in ingresso saranno trasferiti nel registro al successivo ftonre di salita del clock Quando Shtfi è 1, in ciascuno stadio è abilitata la prima porta AND e le
TABELLA 5 2
Tabella funzionale per il registro della Figura 5 6
Shift
Load
0 0
0
1
X
1
Azione Nessun cambiamento Caricamento parallelo dei dati Scorrimento da Qq a Q3
277
278
Capitolo 5
Registri e contatori
altre due porte sono disabilitate In questo caso, 1ingresso dt caricamento Loadè cachet tato come condizione di non specificazione, tn quanto la seconda porta AND è dtsabtli tata in ogni caso In modalità scorrimento, al successivo fronte di salita del clock, il dato presente all ingresso seriale SI (Serial Input) è trasferito al fltp flop Qq, 1uscita di Qo tra sfertta al fltp flop Qi e cosi vta Si noti che, per la maniera tn cui tl circuito è dtsegnato si ha lo scorrimento dall alto verso il basso Chiaramente, se si ruota di 90° tn senso an fiorarlo, lo scorrimento avverrà da sinistra a destra come net casi visti prima I registri a scorrimento sono spesso utilizzati come Interfaccia per sistemi digit che sono posizionati a distanza l’uno dall’altro Si supponga di voler trasmettere n bit tra due punti Se la distanza è notevole, risulterà molto dispendioso utilizzare n fili per tra smettere gli n bit in parallelo Sarà molto più conveniente utilizzare un solo filo e tra smettere 1informazione tn modo seriale, un bit alla volta II trasmettirore caricherà il da to a n bit in parallelo in un registro a scorrimento del tipo visto tn precedenza, e trasmetterà ì bit in n passi tn modo seriale lungo la connessione II ricevitore a sua volta accetterà 1dati serialmente in un registro a scorrimento a n stadi e, quando tutti gli n bit saranno arrivati, attiverà l’uscita parallela In conclusione, tl trasmettitore eseguirà una conversione parallelo seriale, mentre tl ttcevttore eseguirà quella sertale-parallelo
Registri a scorrimento bidirezionali Un registro in gtado di eseguire lo scorrimento dei dati soltanto tn una direzione è chiama to registro a scommento unidirezionale Un registro in grado invece di eseguire lo scorri mento in entrambe le direzioni è chiamato registro a scommento bidirezionale È possibile modificare il circuito della Figura 5 6, aggiungendo a ciascuno stadio una quarta porta AND, allo scopo di consentire lo scorrimento del dati anche verso l’alto È immediato os servare che le quattro porte AND e la porta OR tn ciascuno stadio costituiscono un muitiplexer 4 1, con gli ingressi di selezione che controllano il funzionamento del registro Nella Figura 5 7(a) viene presentato uno stadio di un registro a scorrimento btdtre zionaie con caricamento parallelo Ciascun stadio è formato da un flip flop D e da un muluplexer 4 1, come illustrato nel riquadro tn tratteggio nella Figura 5 7(a) I due Ingres si dt selezione Sj e S0 selezionano uno degli ingressi del multtplexer per tl flip flop D, se condo la Tabella funzionale 5 3 Quando SjSq = 00, si seleziona l’ingresso 0 del multiplexer, connettendo dt fatto ciascuna uscita del fltp flop all ingresso corrispondente In questo modo, al successivo fronte di salita del clock, non si ha alcun cambiamento in uscita Quando SjSq = 01, l’ingresso dell’? mo flip flop è connesso, attraverso l’ingresso da ti 1 del multiplexer, all’uscita Q;_j del fltp flop i —1, effettuando, in questo modo uno scorrimento verso il basso Analogamente, per S ^ q = 10, l’ingresso del fltp flop i mo è connesso, attraverso l’ingresso dati 2 del multiplexer, all’uscita Q/+; del fltp fl°p t + 1 ef fettuando, in questo modo, al successivo impulso di clock uno scorrimento verso l’alto Infine, per 5j5 0 =11, l’informazione binaria, presente in ciascun ingresso dati parallelo è trasferita al fltp flop corrispondente, attraverso l’ingresso dati 3 del multiplexer (carica mento parallelo dei dati) La Figura 5 7 (b) mostra il simbolo per un registro a scorrimento bidirezionale a 4 bit, con 4 stadi come quello riportato nella Figura 5 7(a) Si noti che sono presenti due
53
(a)
Registri a scorrimento
Diagramma logico dello stadio i mo
Figura 5 7 Registro a scorrimento bidirezionale con caricamento parallelo
ingressi seriali, 1*ingresso seriale sinistro (LSI) e 1 ingresso seriale destro (RSf), per le due direzioni di scorrimento possibili Le uscite seriali corrispondenti sono, rispettivamente, QjeQo TABELLA 5 3
Tabella
Controllo modo St
Sq
0
0
0
1
1
0
1
1
funzionale per il registro della Figura 5 7 Azione
Nessun cambiamento Scorrimento in avanti Scorrimento Indietro Caricamento parallelo dei dati
279
280
Capitolo 5
5.4
Registri e contatori
Contatori a cascata
Un registro che si evolve secondo una sequenza predefinirá di stati, all’applicazione di impulsi in ingresso, è denominara contatore Gli impulsi in ingresso possono essere im pulsi di clock o possono avere origine in altre parti del circuito Tali impulsi possono pre senrarsi a intervalli di rempo costann o a intervalli casuali Nei contatori solitamente si assume che siano gli impulsi di clock a causare le transizioni, ma è possibile che altri segnali possano svolgere la funzione del clock La sequenza degli srari può seguire la se quenza di numeri binari, e in questo caso si parlerà di contatori binan Un contaron bi nano a n bir è formato da n flip flop e può contare in binario da 0 a 2” —1 I contatori si dividono in due categorie contatori a cascata e contatori sincroni un contatore a cascata la transizione che avviene nel segnale di uscirà di un flip flop ser ve come eccirazione per il flip flop successivo connesso in cascara In alrre parole, l’in gresso C di alcuni o di rurti i flip flop, è connesso all’uscira di altri flip flop In un conra rore sincrono, gli ingressi Cdi tutti flip flop ricevono un impulso dal clock comune e il cambio di stato è dererminato dallo sraro presenre in cui si rrova il contarore Si parlerà di contaron sincroni nelle prossime due sezioni del capitolo Nel seguito invece si parlerà dei conraton a cascata binari e se ne illustrerà il funzionamento Nella Figura 5 8 è riportato il diagramma logico di un contarore binario a cascata a 4 bir II contarore è costruito con flip flop JK, in grado di complementare il proprio con tenuto L uscita di ciascun flip flop è connessa, in sequenza, all ingresso C del successivo flip flop II flip flop che contiene il bir meno significativo riceve gh impulsi di clock in ingresso Gli ingressi J t K di rutti i flip flop sono connessi costanremente al livello logi co 1, in modo da assicurare la modalità di funzionamento desiderata II pallino di fronte al simbolo delPindicatore dinamico, vicino all etichetta C, indica che i flip flop commu tano sui fronti di discesa dell ingresso C Essendo gh ingressi J t K connessi a 1, ciascun flip flop complementa il proprio stato in corrispondenza al fronre di discesa del segnale connesso al proprio ingresso C La Transizione negariva si verifica, per esempio, quando f usata del precedente flip flop^cui C è connesso, cambia da I a 0 Un livello 0 sull in gresso Clear pilota gli ingressi R dei flip flop per azzerare i registri in modo asincrono Per meglio comprendere il funzionamene di un contarore binano, bisogna esami nare la sequenza di conteggio crescente, nporrata nella parte sinisrra della Tabella 5 4 II conteggio inizia con lo 0 binano e si ineremenra di una unità a ogni impulso in ingresso Quando il conteggio raggiunge 15, il conrarore ritorna a 0 e ripete la sequenza II bit me no significativo ( Q d) è complemenrato a ogni impulso di conteggio Tutte le volte che Qq va da I a 0, complementa Qj Tutre le volte che Qi va da 1 a 0, complementa Q2 Tutre le volte che va da 1 a 0, complementa Q3 e così via per qualunque altro bit di ordine superiore nel contarore Per esempio, si consideri la transizione dallo staro 0011 a 0100 Qq è complemenrato con l’impulso di conteggio Poiché Qq va da 1 a 0, agisce su Qi e lo complementa Come risultare, Qi> va da I a 0 e complementa Q2, cambiandolo da 0 a 1 Qj, a sua volta, non attiva Q3, in quanto Q2 presenta una transizione positiva e 1 flip flop rispondono soltanto a Transizioni negative Pertanto, lo stato cambia da 0011 a
54
Contatori a cascata
1 Logico
Figura 5 8 Contatore in cascata a 4 bit
0100, cambiando i bir uno alla volta, m modo che il contarore vada da 0011 a 0010 (Qq da 1 a 0), quindi a 0000 (Qi da 1 a 0) e infine a 0100 (Q2 da 0 a I) I fhp flop cambia no il proprio sraro uno alla volta, in successione e il segnale si propaga artraverso il con tarore in cascata da uno stadio all’altro Un conrarore a cascara che conta in senso decrescenre segue la sequenza illustrata nel la parte destra della Tabella 5 4 II conteggio decrescente può essere effettuaro connettendo l'uscita complementata di ciascun flip flop all’ingresso C del fìip flop successivo oppure uti lizzando fhp flop attivi sui fronti di salita (si veda l’Esercizio 5 16 alla fine del capitolo)
281
282
Capitolo 5
Registri e contatori
TABELLA 5 4
Sequenze di conteggio di un contatore binano
Sequenza di conteggia crescente 2
Sequenza di conteggia decrescente 3
2
Q|
G»0
0
0
0
0
1
1
1
1
0
0
0
1
1
1
1
0
0
0
1
0
1
1
0
1
0
0
1
1
1
1
0
0
0
1
0
0
1
0
1
1
0
1
0
1
1
0
1
0
0
1
1
0
1
0
0
1
0
1
1
1
1
0
0
0
q
3
q
q
q
Qi
Qo
1
0
0
0
0
1
1
1
1
0
0
1
0
1
1
0
1
0
1
0
0
1
0
1
1
0
1
1
0
1
0
0
1
1
0
0
0
0
1
1
1
I
0
1
0
0
1
0
1
1
1
0
0
0
0
1
1
0
0
0
0
1
1
1
I contatori a cascata hanno una struttura logica semplice, sono però circuiti asincr e pertanto possono risultare poco affidabili e dipendenti dal ritardo Ciò è particolarmente vero per la logica che costituisce l’anello di reazione che connette le uscite del contatore ai suoi ingressi Inoltre ì contatori a cascata, con un elevato numero di bit, sono molto lenti a causa della lunghezza del percorso seguito dall’impulso di conteggio che attraversa tutti gli stadi Nella maggior parte dei casi, tranne nelle soluzioni a basso consumo di potenza (si veda l’Esercizio 5 15 alla fine del capitolo) sono preferibili 1contatori sincroni
5.5
Contatori binari sincroni
I contatori sincroni sono diversi dai contatori a cascata, nei contatori sincroni, gli ìm pulsi di clock sono applicati a tutti i fhp flop simultaneamente, anziché uno alla volta co me accade per i contatori a cascata Per il fhp flop JK il fatto che l’usata sia compie mentata o meno dipende dai valori degli ingressi Je. K se entrambi sono uguali a 0, il fhp flop non cambia stato anche in presenza di un impulso di clock se entrambi sono ugua li a 1, il flip flop complementa il proprio stato in presenza di un impulso di clock.
55
Contatori binari sincroni
283
Progettazione di contatori binari La procedura per la progettazione di un contatore sincrono è simile a quella di qualun que altro circuito sequenziale sincrono Un contatore, se si esclude il segnale di clock, è in grado di funzionare anche senza un ingresso esterno L’usata del contatore è presa dal le uscite dei flip flop e non si hanno ulteriori uscite provenienti dalle eventuali porte lo giche presenti nel circuito In assenza di ingressi, la tabella di stato di un contatore è for mata soltanto dalle colonne contenenti lo stato presente e lo stato futuro Le uscite saranno implicitamente rappresentate dalla colonna per lo stato futuro La tabella di stato di un contatore a 4 bit è riportata nella Tabella 5 5 La colonna dello stato futuro riporta le 16 configurazioni di stato da 0000 a l i l i Lo stato futuro è uguale al corrispondente valore dello stato presente aumentato di uno Quando il circuì to raggiunge lo stato 1111, passerà, nella successiva transizione, allo stato 0000, ìmzian do un nuovo ciclo di conteggio I contatore binari sono più efficienti se costruiti usando flip flop T o JK per via della modalità di complementazione di cui essi dispongono L’uso dei flip flop di tipo D richiede una logica leggermente più complessa Nel seguito si progetterà un contatore impiegando sia flip flop di tipo J K che di tipo D
Tabella di stato e ingressi ai flip flop per il contatore binano
TABELLA 5 5
Stata presente
Stato futura
Ingressi oi flip flop
©3 q 2 Q, Oo
03 o 2 Qi Qo
JQ3 Kq3 Jq2 Kq2 JQ1 Kqi Jqo Kqo
0
0
0
0
0
0
0
1
0
X
0
X
0
X
1
0
0
0
1
0
0
1
0
0
X
0
X
1
X
X
X 1
0
0
1
0
0
0
1
1
0
X
0
X
X
0
1
X
0
0
1
1
0
1
0
0
0
X
1
X
X
1
X
1
0
1
0
0
0
1
0
1
0
X
X
0
0
X
1
X
0
1
0
1
0
1
1
0
0
X
X
0
1
X
X
1
0
1
1
0
0
1
1
1
0
X
X
0
X
0
1
X
0
1
1
1
1
0
0
0
1
X
X
1
X
1
X
1
1
0
0
0
1
0
0
1
X
0
0
X
0
X
1
X
1
0
0
1
1
0
1
0
X
0
0
X
1
X
X
1
1
0
1
0
1
0
1
1
X
0
0
X
X
0
1
X
1
0
1
1
1
1
0
0
X
0
1
X
X
1
X
1
1
1
0
0
1
1
0
1
X
0
X
0
0
X
1
X
1
1
0
1
1
1
1
0
X
0
X
0
1
X
X
1
1
1
1
0
1
1
1
1
X
0
X
0
X
0
1
X
1
1
1
1
0
0
0
0
X
1
X
1
X
1
X
1
284
Capitolo 5
Registri e contatori
La procedura per la progerrazione di un circuirò sequenziale con flip flop JK b srara già presenrata nel Paragrafo 4 7 Si unlizzerà ora la sressa procedura per progerrare un conrarore binario Per prima cosa si dererminano i valori degli ingressi ai flip flop per ciascun ingresso J e K in base alla Tabella 5 5 urilizzando le rabelle di eccirazione fornire dalla Tabella 4 10 Successivamenre, si trovano le equazioni di ingresso semplificare per mezzo delle mappe di Karnaugh, come illusrraro nella Figura 5 9 Nella figura non sono riporrare le mappe per il piloraggio del flip flop meno significarlo, in quanro banal
vQA QaQa'' 00
01
10
11
00
01 0 u 3
1
11
X
X
10
X
X
j
X
X
X
X
X
X
Ix i i 1I
X
X X
X
Qo Jq3 = QqQi Q2
X
X
X
X
M ixI M LiJ
K q 3 = Q 0Qi Qg
X
I 1 i< !<
X
¡11
X X X
Jqe= QoQ,
IT '
X
X
M L*j
Kq2 —QoQ,
X | X
X
X
X | X
X
X
1 !
X | X
X
X
1
X J X
X
X
1
J q i = Qo
X
-1 1
K q i = Qo
Figura 5 9 Mappe di Karnaugh per le equazioni di ingresso di un contatore binano
55
Contatori binari sincroni
285
menre cosriruire inreramenre da 1 e da condizioni di indifferenza Sarà quindi/qo = K qq * 1 Si non che le equazioni dell’ingresso / e dell’ingresso K sono idenriche per ciascun flip flop, ragion per cui possono essere utilizzar! i flip flop T invece che J K In moire applicazioni è necessario conrrollare il funzionamene del conrarore arrra verso un ingresso di abihrazione Sohramenre quesro ingresso si indica con la variabile E N da non confondere con E AND Wall inrerno di equazioni booleane Allo scopo di disringuere i due casi, si userà la norazione E N quando si vorrà indicare il prodotro lo gico rra E ed N Con E N come ingresso abiliranre, le equazioni ingresso dei flip flop per il contatore binario possono essere espresse come segue /qo = £ qo = E N /q i = ^ q i = Qo EN
J q2 - Kq2
= Od
Q i
EN
7q3 = ^Q 3 = Qo Q i Q i EN
Quando E N = 0, rum gli ingressi / e Assono uguali a 0 e i flip flop rimangono nello sres so sraro, anche in presenza degli impulsi di clock Quando EN= 1, la prima equazione di ingresso divenra /qo = K qq = 1, menrre le alrre equazioni ingresso sono quelle derivate dalle mappe della Figura 5 9 II flip flop nella posizione meno significariva è quindi complemenraro da ciascun fronre di saiira del clock I flip flop delle posizioni successive sono complementari in corrispondenza degli impulsi di clock, solo se rum i bir delle posizio ni meno significarne sono uguali a 1 In un conrarore binario a n bir,l’equazioneingres so per il flip flop Qj, con ¡ = 1,2, 3, , n, è infatti /<* =
= Qo
Qi
02
Ohi
en
I conrarore binari sincroni sono cararterizzari da un modello regolare, comesi può de durre dal conrarore binario a 4 bir della Figura 5 10 Gli ingressi C di rurri i flip flop ri cevono un unico segnale di clock II primo sradio Qj è complementaro quando il conra rore è abiliraro, con ingresso ¿TVuguale a 1 Gli altri ingressi/ e ATsono uguali a 1 se rum gli sradi precedenri (meno significarmi sono uguali a l e , molrre, il conteggio è abiliraro La carena di porre AND genera la logica richiesta per gli ingressi J e K L’uscira riporrò CO può essere utilizzara per esrendere il conrarore con alrri sradi, con ciascuno degli sra di successivi cosriruiro da un ulreriore flip flop e una uireriore porrà AND Si no ri che ì flip flop sono arrivi sul fronre di saiira del clock In quesro caso la po larità del fronre del segnale di clock (posirtvo o negativo) non stravolge in funzionamen ro del contarore, come nel caso del contarore a cascata Un contarore sincrono può esse re arrivato, senza modifiche circuitali, sia dal fronre di salita che dal fronre di discesa del segnale di clock II simbolo per un conrarore a 4 bir che commura sui fronri di saiira del segnale di clock è mosrraro nella Figura 5 10(b)
Contatori con flip flop D Un conrarore binario può essere progerraro con flip flop A seguendo la procedura di progettazione presenrara nel Paragrafo 4 6 Le equazioni di ingresso dei flip flop D sono ortenure direrramenre dai valori dello sraro ftiruro della Tabella 5 5, ricordando che
286
Capitolo 5
Registri e contatori
(a) Diagramma logico Figura 5 10 Contatore binario sincrono a 4 bit
Qt+i - D Le equazioni possono essere espresse nella forma somma di mintermini come funzioni dello staro presenre A » (Q j 02 D q i (Qj Qi Ag(Qi Qz Azj(Q3 Qz
QiOd) = 2 w(0, 2, 4, 6 , 8, 10, 12, 14) 2, 5,6, 9, 10, 13, 14) QiQd) = ^ w(3, 4, 5,6, 11, 12, 13, 14) QiQo) = 2 »2(7 ,8, 9, 10, 11, 12, 13, 14) Q i Qo) » 2 m (U
55
Contatori binari sincroni
Semplificando, con 1ausilio delle mappe, le quartro funzioni e aggiungendo un ingresso di abilitazione EN, si ottengono, per il contatore, le seguenti equazioni di ingresso (si ve da l’Esercizio 5 7 alla fine del capirolo)
D qq =
Od ©
EN
D qi = Q1 ©( Qo EN) D q2 - Q i ^ (Q o Qi EN ) D ^ = Q 3 @(Q ù Q{ 02 EN) L’equazione d’ingresso per il flip flop Q,, relativo allo stadio t mo, può essere espressa co me s^jue ^ - 0 ,0 ( 0 )
Qi
Qz
0 ,1
EN)
Il circuito per un contarore binano a 4 bit con flip flop D è riportato nella Figura 5 11 (a) Si noti che il circuito ha la sressa catena di porte AND per il nporro, vista in pre cedenza Lunica differenza tra il circuito della Figura 5 1 1(a) e il contatore con flip flop J K della Figura 5 10, consisre nella presenza di una porrà XOR (OR esclusivo) nell’in gresso dei flip flop presenti nel circuirò La porrà XOR, di fatto, trasforma il flip flop D in un flip flop T Un ingresso della porta XOR è collegato con l’uscira del flip flop D, mentre l’alrro ingresso è equivalerne all’ingresso di un flip flop T o J K (si veda l’Esercizio 5 18 alla fine del capitolo)
Contatori seriali e paralleli 11 contatore sincrono della Figura 511 verrà usato per illustrare due modi alternativi per progetrare conraro ri binari Nel circuito della Figura 5 11 (a) è stata utilizzata una carena di porte AND a due ingressi per fornire indicazioni, a ciascun stadio, circa lo sraro in cui si trova lo stadio precederne del conraro re, analogamente a quanro fatto con la logica di riporto nel circuito sommato re a cascara Un contarore che unlizza quesra logica si dice che usa un gatmg seriale ed è denominare contatore seriale Lanalogia con il sommarore a cascata, suggerisce che porrebbe esserci la possibilità di urilizzare una logica analoga a quella usata nei sommaton con anricipo del ritardo, come mostrato nella Figura 5 1 l(b) Sostituendo l’area tratteggiata della Figura 5 11 (b) a quella contenuta nel retrangolo trar teggiaro della Figura 5 1l(a), si realizza un contatore con gating parallelo, o contatorepa rallelo 11 vanraggio del garing parallelo si evidenzia passando dallo staro 1111 allo stato 0000, in quanto bisogna considerare, in questo caso, soltanto il ritardo di una porta AND, invece dei ritardi delle quattro porte AND del contarore seriale Tale riduzione consente al contatore di operare più velocemente Le equazioni per il gating parallelo possono essere ricavate, per ispezione direrta, dai termini prodotto delle equazioni di in gresso dei flip flop D, date in precedenza La stessa tecnica può essere utilizzata per con rarori implementati con flip flop di tipo T o J K Se si connettono due contaron paralleli a 4 bit connettendo l’uscita CO del primo contatore con 1ingresso ¿TVdell altro, il contatore a 8 bit che ne risulta è un contatore se
287
288
Capitolo 5
Registri e contatori
D
Q2 C2
03
O
_ o (a) Gatìng seriale
Ca
co
(b) Gating parallelo
Figura 511 Contatore binano a 4 bit con flip flop D
naie-parallelo Questo contarore possiede due parti parallele a 4 bit connesse in serie L’i dea può essere esresa a conraton di qualunque lunghezza Considerando l’analogia con il circuirò sommatore con ritardo anncipato, ulreriori livelli di logica possono essere inrrodorti per sostituire le connessioni seriali tra segmenti a 4 bir Le ulteriori riduzioni del ri tardo che ne risultano sono utili per costruire contatori più grandi e più veloci
55
Contatori binari sincroni
289
Contatori binari a incremento e decremento Un contatore binario sincrono a decremento segue la sequenza degli stati binari in ordi ne inverso patre da 1111 per arrivare a 0000 e da qui nrorna a l i l i per riperere il ciclo È possibile progettare un contatore a decremenro nella maniera usuale utilizzando una sequenza di conteggio inversa II bit meno significativo dell uscita viene complementato in corrispondenza di ciascun impulso di clock mentre i bit in posizione diversa vengono complemenrati se in quella condizione tutti i bit che occupano posizioni meno significa tive sono uguali a 0 Partendo, per esempio, dallo stato 0100, lo stato successivo sarà 0011 Come detro in precedenza, il bit meno significativo viene sempre complementato, il secondo bit meno significativo viene complementato in quanro turti bit in posizione meno significativa, in questo caso solo uno, è 0, il terzo bir meno significativo viene complementaro in quanro i due bir precedenti sono uguali a 0 e, infine, il quarto bit non commuta, in quanro i bir meno significarne non sono tutri uguali a 0 Il diagramma circuirale di un conrarore binario sincrono a incremento decremento è simile al circuirò di un contatore binario a incremento, con la diffetenza che gli ingres si delle porte AND sono le uscire compleméntate dei flip flop Le due operazioni posso no essere combinare per formare un contatore sia crescenre sia decrescente, in cui un in gresso apposito seleziona la direzione del conteggio L’ingresso, denotato con S, è tale che con S = 1 si ha il conteggio crescente (a incremento) e con S = 0 si ha il conteggio de screscente (a decremenro) La variabile E N h un ingresso di abilirazione, con E N - 1 si abilira il conteggio e con E N = 0 lo si disabilira Se si utilizzano flip flop del tipo T ( T = f - K ) , un contarore binano a incremenro decremenro a 4 bir può essere descritro dalle seguenti equazioni di ingresso TA()^ E N TAl = Qn S E N + Q n Tjfr ~ Qo Qi 7^3 = Qo Qi
S_EN S E N + Qq Qi S E N
Q2 S E N + Qq Qi
Q2 s EN
Le equazioni per le uscire riporro allo stadio successivo sono Cup = Qo Q» “ Qd
Qi Qi
Q2 Q3 S E N Qi Qò $ E N
per il conteggio crescente per il conteggio decrescente
Le uscite riporto forniscono l’ingresso per complementare il flip flop successivo se il con ratore è esteso al quinro stadio e oltre II diagramma circuitale può essere fàcilmenre otrenuto dalle equazioni di ingresso, ma non è Trattato in questa sede (si veda 1Esercizio 5 19 alla fine del capitolo)
Contatori binari a caricamento parallelo I contatori urilizzan nei sistemi digitali richiedono spesso la possibiliràdi caricarein pa rallelo unvalore iniziale binarioprima di iniziare il conteggio La figura 5 12 (a)mostra il diagramma logico di un registro che ha capacità di caricamento parallelo e che può an
Capitolo 5
Registri e contatori
Figura 5 12 Contatore binario a 4 bit a caricamento parallelo
che operaie come contatore La figura 5 12(b) mostra il simbolo corrispondente II fun zionamento del circuirò dipende dai valori dei due segnali di conrrollo quando 1*Ingres so di caricamento Loadh uguale a 1>disabilita 1operazione di conteggio causando un rra sferimento dei dari dai quattro ingressi paralleli ai quattro flip flop Se Load è uguale a 0 e l’ingresso conteggio Count è 1, il circuito opera come un contatore binario L uscita CO pet il riporto allo stadio successivo diventa 1 se tutti e quattro ì flip flop hanno 1uscita
55
TABELLA 5 6
Contatori binari sincroni
291
Tabella funzionale per il registro della Figura 5 12 Funzionamento
Ingressi di controllo
0
0
0 1
1
Nessun cambiamento Conteggio Caricamento parallelo dei dati
X
uguale a l e l’ingresso conteggio Count è abilitalo Questa è la condizione per compie mentare il flip flop che contiene il successivo bit più significalivo L’uscita CO è utile, quindi, per espandere il conteggio ad altri stadi Il funzionamento del circuirò è riassunto nella Tabella 5 6 Con gli ingressi carica menro e conteggio entrambi a 0, le uscite non cambiano anche quando sono applicati impulsi agli ingressi C Se l’ingresso Load è 0,1 ingresso Count controlla il funzionamene ro del contatore e le uscite cambiano in corrispondenza di ciascun fronte di salita del l’impulso applicato I dati di ingresso sono cancan nei flip flop, quando l’ingresso Loadb uguale a 1, indipendentemente dal valore dell’ingresso conteggio Count che è inibito quando l’ingresso di caricamento è attivo I contatori con caricamento parallelo sono molto utili nella progettazione dei cal colatori digitali Nel seguirò, essi saranno indicati con il termine registri a caricamento e incremento L’operazione incremento è quella operazione che aggiunge un’unità al conte nuto del registro Abilitando l’ingresso di conteggio durante un solo periodo di clock, il contenuto del registro viene inerementaro di una unità II con tarore binario a caricamento parallelo può essere convertito in un contatore BCD sincrono (senza ingresso di caricamento), aggiungendo una porta AND esterna, cosi come mosrrato nella Figura 5 13 II contatore parte dallo staro/usata 0000 e l’in
CTR 4
Ctock-
Load Count
(Logic 0) |
Figura 5 1 3 Contatore BCD
D0
Qq
Qq
Di
Q1
D2
Q2
Qi ■Q2 Q3
d3
Q3 CO
292
Capitolo 5
Registri e contatori
gresso dt caricamento Load è atttvo Con l’usctta della porta AND pari a 0 Tingtesso di caricamento Load non è attivo e ctascun fronte del clock tncrementa il contatore dt uno Quando I usctta raggiunge il valore di 1001, sta Qd sia Q3 diventano 1, per cut I usctta della porta AND dtventa 1 Questa condtzione rende ti segnale Load atttvo, per cut, al successivo fronte di saltta del clock, il contatore cattca dat proprt ingresst tl valore 0000 dal momenro che 1 quattro tngressi D, sono connesst permanenremente a 0 In condu sto ne tl circutto esegue il conteggto da 0000 a 1001 per pot tornare a 0000, cosi come ri chiesto dal codice BCD
5.6
Altri tipi di contatori
I contatori possono essere progetta« per generare una qualunque sequenza di stati Un contatore divisoreper N (o contatore modulo N ) è un contatore che ripete una sequenza di N stati La sequenza può seguite il conteggto btnario o può essere qualunque altra se quenza arbitraria In entrambi 1cast la progettaztone del contatore segue le procedure per la progettazione dei ctrcuiti sequenziali sincront Di seguito, a tttolo dt esempio, si tllu strerà la progettazione di due contatori un contatore BCD e un contatore con una arbi traria sequenza di stati
Contatore BCD Come illustrato nel precedente paragtafo, un contatore BCD si ottiene da un contatore btnario con caricamento parallelo È anche posstbtle progettare un contatore BCD uti lizzando direttamente fltp flop e porte logiche La Tabella 5 7 rtporta la tabella di stato e le condtztoni dt ingresso corrtspondenti nel caso st adoperino flip flop di tipo T Se Io
TABELLA 5 7
Tabella di stato e ingressi ai flip flop per i[ contatore BCD Stato futuro
Stato presente Qa
cu q 2 Q|
Uscita
Qa
cu
q2
Qi
Y
Tq8
Tq4
Tq2
Tqi
0
0
0 1 1
1
0
0
0 1
0 0
0
0
0 1
0
0
0
0
1 1 1
0
0
0
0
1
1
1
1
0
0
0
0
1
0
0
0
0
1
1
1
0 0
0 1
0 1
0 1
1 1
0 1
0 1
0
0 0
1
0
0
0
0 0
0 0
0 1
0
0 0
0
0
1
1
0
0
1
0
0
0
0 0 1 1
0
1
0
1
0
1
0
1 1
1 1
0
0
1
0 1 1
1
1
0 0
0
0 1
1
0 0
0 0
0 1
0
0
0
0
0 1 1
0
0 1
Ingressi ai flip flap
0
1
56
Altri tipi di contatori
staro di uno dei fltp flop è complementato durante ia transtztone dallo stato presente al lo stato futuro, allora l’ingresso T corrispondente a tale tstanza è uguale a 1 Se tnvece Io staro futuro coincide con lo staro presente allota l’tngresso T è uguale a 0 Lusctta del contarore Y come rtporrato tn tabella, è normalmente 0 tranne quando Io stato presente è 1001 In questo caso, infattt, 1’usctta dtventa 1, generando, di fatto, il rtporto per la de ctna successiva, mente tl contatore rttorna allo stato 0000 Le equaztont dt ingresso det fltp flop sono ottenute a partire dalle spectfiche sui va Ioti deglt ingressi riportate nella Tabella 5 7 e possono essere sempltftcate per mezzo del le mappe di Karnaugh GIt statt non utiltzzati, in corrispondenza dei mtntermtnt com prest tra 1010 e 1111, sono considerati come condiztoni di non speciftcaztone Le equaziont di ingresso sempltftcate pet il contatore BCD sono Tq i = l ^Q2 = Ql Qs
?Q4 ~ Ql Q2 ?Q8 = Q l 08 + Ql Ql 0.4
Y^Q iQ s II circuito può essere realtzzato con quattro flip flop di tipo T, quattro porte AND e una porta OR* I contatori BCD sincront possono essere connessi in cascata per formare con tatori per numeri decimali di qualunque lunghezza La connessione è ottenuta connet tendo l’uscita Ksta a 7q{ (ingtesso del fltp flop meno stgmficativo) sta agli ingressi di età scuna porta AND della decina di ordine immediatamente superiore
Contatore con sequenza di conteggio arbitraria Si desidera progettare un contatore che si evolve secondo una sequenza ripetuta di sei stati, come riportato nella Tabella 5 8 In questa sequenza t flip flop B e C rtpetono il conteggio arbitrario 00, 01, 10, mentre il flip Bop A alterna 0 e 1 ogni tre impulsi La se
TABELLA 5 8
Tabella dt stato e ingressi ai flip flop per un contatore con sequenza arbitraria
Stata presente
Ingressi ai flip flap
Stota futuro
A
B
c
A
B
c
Ja
KA
h
Kb
Jc
Kc
0
0
0
0
0
1
0
X
0
X
1
X
0
0
1
0
1
0
0
X
1
X
X
1
0
1
0
1
0
0
1
X
X
1
0
X
1
0
0
I
0
1
X
0
0
X
1
X
1
0
1
1
1
0
X
0
1
X
X
1
1
1
0
0
0
0
X
1
X
1
0
X
293
294
Capitolo 5
Registri e contatori
quenza di conteggio del contatore non è quindi binaria e, inoirre, due stati, Oli e 111, non sono inclusi nella sequenza La scelta di progettare il contatore con flip flop J K à tn va dalla analisi delle condizioni di ingresso dei fhp flop, riportate nella Tabella 5 8 Gli ingressi e K& sono sempre uguali a 1, in quanto nella colonna relativa a questi in gressi compaiono 1 o condizioni di non-specificazione per tutte le combinazioni di stati possibili Le altre equazioni d’ingresso ai flip flop possono essere semplificate, conside rando i mintermini 3 e 7 (relativi agli stati non inclusi nella sequenza) come condizioni di non-specificazione Le funzioni semplificate sono le seguenti Ja = B
Ka =B
Jb = C
Kb = 1
Jc=B
Kc = 1
Nella Figura 5 l4(a) è riportato il diagramma circuitale del contatore Poiché sono pre senti due srati non utilizzati, si analizzerà li circuito per determinarne gli effetti II dia gramma di stato, ottenuto dall’analisi del circuito sequenziale, è riportato nella Figura 5 l4(b) Il diagramma indica che se il circuito si viene a trovare in uno degli stati da non utilizzare, li successivo impulso di conteggio porterà il circuito in uno degli stati della se quenza voluta, per cui il circuito può continuare correttamente il conteggio
A
B
Figura 5.14 Contatore con sequenza arbitraria
C
57
5.7
Descrizione di registri a scorrimento e contatori in linguaggio VHDL
Descrizione di registri a scorrimento e contatori in linguaggio VHDL_________________
Per presentare l’utilizzo del linguaggio VHDL per la descrizione dei registri e delle ope razioni sul loro contenuto saranno utilizzati come esempi un registro a scorrimento e un contatore binario Descrizione in VHDL di un registro a scorrimento o 4 bit
Il codice VHDL della Figuta 5 15 desctive a livello funzionale, il tegistro a scor nmenco della Figura 5 3 È stato aggiunto un ingtesso RESET pet 1azzeramento asincrono del tegistto La dcsctizione del ptocesso ricorda quella di un flip flop D 1 quattto flip flop sono rapptesentati da un singolo segnale sh ift, di tipo std_logio_vector a quattto componenti uno per ciascun flip flop 11segnale d uscita Q infatti, non può tappresentare 1flip flop dal momento che esso non può essere utilizzato internamente in quanto parte dell intetfaccia Lo scottimen to a sinistta è ottenuto applicando 1opetatote di concatenazione &ai tre bit me no significativi (0 1 2) di sh ift e al segnale di ingtesso sellale SI In particola te SI sarà trasferito nella posizione meno significativa di s h ift, dopo avete eseguito Io scotrrmento del contenuto dr una posizione a simstta del vectote II ptocesso è poi seguito da due isttuzioni dataflow che assegnano tispettivamente, il valote corrente di sh ift all’uscita Qe il bit più significativo di sh ift al segna le di uscita sellale SO
Descrizione in VHDL di un contotore a 4 bit
11 codice VHDL della Figuta 5 16 desctive, a livello funzionale, il contatote della Figura 5 10 In particolate, è stato aggiunto un ingresso RESET per 1azzerarnen to asinctono del registto La descrizione del processo ricotda quella di un flip flop D 1 quattro flip flop sono rapptcsentati dal segnale oount, di tipo stdJLogio_veotor a quattro componenti, uno per ciascun flip flop II segnale d uscita Q infatti, non può tapptesentare 1flip flop, dal momento che non può essete uti lizzato internamente in quanto parte dell intetfaccia La sequenza di conteggio crescente è ottenuta aggiungendo 0001 al vettote oount Poiché l’addizione non è una opetazione di tipo stdJLogio_vector è necessatio utilizzare il modulo std_logio_unsigned.all, un ultetiore modulo dalla libteria leee, che defì nisce le varie opetazioni su numeri senza segno di tipo std_logio II ptocesso che esegue il tcset e il conteggio è seguito da due isttuzioni dataflow che assegna no, rispettivamente il valote di oount all uscita Qe un valore al segnale di tlpot to CO In quest’ultimo caso viene utilizzata un istruzione when else, che assegna a CO d valore 1 soltanto quando il massimo valore di conteggio viene raggiunto e il segnale di abilitazione ENè pari a 1
295
296
Capitolo 5
Registri e contatori
— 4-bit Shift Register with Reset ^ — (Vedi Figura 5.3) library leee; use leee std_logic_1164 all; entity srg_4_r is port(CLK, RESET, SI : in std_logic; Q . out etd_logic_vector(3 downto 0); SO : out etd_logic), end erg_4_r; architecture behavioral of srg_4_r is signal shift : etd_logic_vector(3 downto 0); begin proceee (RESET, CLK) begin if (RESET = ’1 ) then ehift <= '0000 ; elsif (CLK'event and (CLK = *1 )) then shift <= shift(2 downto 0) & SI; end if; end proceee; Q <= ehift; SO <= shift(3), end behavioral; Figura 5 15 Descrizione funzionale in VHDL di un registro a scorrimento a sinistra a 4 bit con reset diretto
— 4-bit Binary Counter with Reeet — (Vedi Figura 5.10) library leee; uee ieee.std_logic_1164 all; uee leee etd_logic_unsigned all, entity ccunt_4_r le port(CLK, RESET, EN . in etd_lcgie, Q • out etd_lcgic_vectcr(3 downto 0), CO : out std_legie); end ccunt_4_r; architecture behavioral o£ ccunt_4_r is signal ccunt : std_logic_vectcr(3 downto 0); hegin process (RESET, CLK) begin if (RESET = '!') then count <= 0000 ; elsif (CLK'event and (CLK - 1 ) and (EN = 1 )) then count <= count + 10001 ; end if; end process; Q <= ccunt; CO <= 1 when count = 1111 and EN = 1 else 0 ; end behavioral; Figura 5 16 Descrizione funzionale in VHDL di un contatore binano a 4 bit con reset diretto
58
5,8
Descrizione di registri a scorrimento e contatori in linguaggio Verilog
Descrizione di registri a scorrimento e contatori in linguaggio Verilog________________
Per presentare 1utilizzo del linguaggio Verilog per la descrizione dei registri e delle ope razioni sul loro contenuto saranno utilizzati come esempi un registro a scorrimento e un contatore binano Descrizione in Verilog di un registro a scorrimento a 4 bit
Il codice Verilog della Figura 5 17 descrive a livello funzionale il registro a scor rimento della Figura 5 3 È stato aggiunto un ingresso RESET per l’azzeramento asincrono del registro La descrizione del processo, che inizia con always, è si nule a quella di un flip flop D I quattro flip flop sono rappresentati da un vetto re Q, di tipo reg a quattro componenti Lo scorrimento a sinistra è ottenuto ap plicando 1operatore { } per concatenare l tre bit meno significativi di Q e 1ingresso seriale SI In particolare SI sarà trasferito nella posizione meno sigmfl catlva di Q, dopo avere eseguito lo scorrimento di una posizione a sinistra del contenuto del vettore Immediatamente prima del processo che esegue lo scorri mento è presente un istruzione d
// 4-bit Shift Regieter with Reset // {Vedi Figura 5.3) module erg_4_r_v (CLK, RESET, SI, Q,SO); input CLK, RESET, SI; output 13 0] Q, output SO, reg 13.01 Q, assign SO = Q[31, always @(posedge CLK er posedge RESET) begin if (RESET) Q <= 4 bOOOO; Q <= {Q[2 0], SI>; end endmodule Figura 5 1 7 Descrizione funzionale in Verilog di un registro a scorrimento reset diretto
a sinistra a 4 bit con
297
298
Capitolo 5
Registri e contatori
// 4-bit Binary Counter with Reset // (Vedi Figura 5 10) module count_4_r_v (CLK, RESET, EN, Q, CO); input CLK, RESET, EN, output [3:0] Q, output CO; reg [3:0] Q; assign CO = (count == 4 bllll && EN == l'bl) ’ 1 * 0 , always@(posedge CLK or posedge RESET) begin if (RESET) Q <= 4 bOOOO; else if (EN) Q <= q + 4 bOOOl; end endmodule Figura 5 1 8 Descrizione funzionale in Verilog di un contatore binario a 4 bit con reset diretto
Descrizione in Verilog di un confoto re a 4 bit
IIcodice Venbg della Figura 5 18 descrive il contarore della Figura 5 10 a Uvei 10 funzionale È sraro aggiunto un ingresso RESET per I azzeramento asincrono del registro La descrizione del processo è simile a quella di un flip flop D 1quat tro flip flop sono rappresentati dal segnale q, di tipo reg a quartro componenti 11conreggio ctescenre si ottiene semplicemente increraenrando di una unità il va bre di Q Immediatamente prima del processo che esegue il reset e il conteggio è presente una istruzione di assegnazione continua che definisce il segnale di ripor to CO CO sarà 1 soltanto quando si taggiunge il massimo conteggio e il segnale di abilitazione EN è pari a 1 Si noti che! opetatote logico AND è indicato con il simbolo &C&C
5.9
Sintesi del capitolo____________________________
I regista, i tegistti a scottimento e i contatori sono blocchi logici sequenziali sttuttutati I tegistti sono formati da flip flop con o senza logica combinatola di controllo I tegistti più semplici sono flip flop il cui contenuto è funzione degli ingtessi e viene aggiotnato a ogni ciclo di dock Con un mimmo di complessità aggiuntiva, possono essete tealizzati tegistti il cui aggiornamento è tegolato da un segnale di conttollo e avviene soltanto du tante opportuni cicli di clock I tegistti a scotrimento aggiungono una nuova funzionalità al trasfetimento dei da ti, in quanto permettono la ttaslazione delle infotmazioni contenute nel tegistro di uno
Riferimenti bibliografici
299
o più bit alla volta Quando un registto a scottimenro ha anche la capacità di caricare i dari in patallelo, può essete urihzzato come convetrirore patallelo setiale Allo sresso mo do, se le uscire del tegisrto sono ditettamenre accessibili, un tegistto a scoramento può essete urilizzaro come converntote seriale parallelo La capacirà di scottimento, inolrte può essete unlizzata all’intetno di oppotrune stturrure hardwate pet l’esecuzione di opetazioni atirmenche setiah 1 contaroti sono utilizzari pet genetare cidicamenre sequenze di valoti, spesso se guendo la sequenza di conteggio binatia I conratoti più semplici hanno ingtessi di teset asmctoni pet 1inizializzazione del citcuito e contano semplicemenre il numeto degli im pulsi di clock Vetsioni più complesse consentono il caricamento di un valote iniziale di conteggio, possono essete biditezionali (conteggio ctescenre o dectescenre) con o senza segnale di abilirazione al conreggio fcYAtivJ Maretiale didarrico aggiunrivo nguardanre le desctizioni di tegisrti e di contatoti in linguaggio VHDL e in linguaggio Vetilog è disponibile ptesso il Ptentice Hall Compa nton Websire Gallety, all inditizzo http //www prenhall com/kime
Riferimenti bibliografici_____________________________ 1 MANO, M M Digital Design 2aed Englewood Cliffs, NJ, Ptennce Hall, 1991 2 ROTH, C H Fundamentals o f Logic Design 4aed St Paul, West, 1992 3 WakERLY, J F Digital Design Principles and Practices 4a ed Upper Saddle Rivet, NJ, Ptentice Hall, 2000 4 IEEE Standard VHDL Language Reference Manual (ANSI/IEEE Std 1076 1993, revision, o f IEEE Std 1076 1987) New Yotk, The Institute of Electtical and Elee ttomcs Engineets, 1994 5 PELLERIN, D e D TAYLOR VHDL Made Easy( Uppet Saddle Rivet, NJ, Ptentice
Hall PTR, 1997 6 STEFAN, S e L L in d h
VHDL for Designers London, Ptentice Hall Eutope,
1997 7. IEEE Standard Description Language Based on the VenlogÇTM) Hardware Descnp tion Language (IEEE Std 1364 1995) New Yotk, The Institute of Electtical and Electronics Engineets, 1995 8 Pa LNITKAR, S Venlog HDL A Guide to Digital Design and Synthesis SunSoft:
Ptess (A Ptentice Hall Title), 1996 9 ClLETTI, M Modeling, Synthesis, and Rapid Prototyping with the Vertlog HDL, Up per Saddle Rivet, NJ, Ptentice Hall, 1999 10 THOMAS, D E , e P R M o ORBY The Vertlog Hardware Description Language A* ed Boston, Kluwer Academic Publishers, 1998
300
Capitolo 5
Registri e contatori
Esercizi SH2332II segno pia (+) indica esercizi con un grado di complessirà più elevato, l’asterisco (*) che una soluzione è disponibile sul sito web che accompagna il resro 5 1 Simulare (manualmente o tramite uno strumenro CAD) il funzionamento del re gisrro della Figura 5 l(a) con il segnale di caricamento descritto nella Figura 5 l(c), per dimostrare che il clock gating funziona correttamente Utilizzare un flip flop, attivo su fronte di salita, con il segnale Clock come ingresso di clock per generare il segnale Load Si urilizzino porte e flip flop con ntatdo non nullo 5 2 + Cambiare la porta OR della Figura 5 l(c) con una porrà AND e rogliere l’in vertirore sulla linea del segnale Load a) Eseguire la stessa simulazione dell’Esercizio 5 1 per dimostrate che il nuovo clock gating non funziona correttamente Spiegare cosa non funziona b) Se d flip flop, che genera il segnale Load, è attivo sul fronre di discesa invece che sul fronre di salira di Clock, d circuito funzionerà correttamenre? 5 3 * Il contenuro di un registro a 4 bit è inizialmente 0000 11 registro è rraslato di orro posizioni verso a destra e la sequenza applicata al suo ingresso seriale è 10110111 II bir più a sinistra della sequenza è applicato per primo Qual è il con renuro del registro dopo ogni singolo scorrimenro? 5 4 11 conrenuto di un registro a 4 bit è inizialmente 1111 II registro è traslaro di otro posizioni verso a destra e la sequenza applicata al suo ingresso seriale è 001010 11 II bit più a sinistra della sequenza e applicato per primo Qual è il conrenuro del registro dopo ogni singolo scorrimento*' 5 5 In che cosa consiste la differenza tra un trasferirnenro parallelo e un Trasferirnento seriale? Spiegare come si converrono dati seriali in parallelo e dati paralleli in se nali Quale ripo di registro occorre? 5 6 * Il sommatore seriale della Figura 5 5 utilizza due regisrn a 4 bit II registro A contiene il numero binano 0110, mentre il registro B contiene 0011 11 flip flop del riporto ha inizialmente l’uscita pan a 0 Elencare i valori binari contenuti nel registro A e lo staro del flip flop conrenente il riporto dopo ciascuno dei quattro scorrimenti necessari a completare la somma 5 7 Quali cambiamenti sono necessari nella Figura 5 5 per convettiva in un circuito sottratto re seriale che sottragga d contenuto del registro B dal contenuto del regi stro A ? Spiegare come sia possibile individuare seA quale sarà la rela zio ne fra il risultato ottenuto e il risultato corretto?
Esercizi
5 8 * Modificare il registro della Figura 5 6 in modo che esso operi secondo la se guente tabella funzionale, utilizzando gli ingressi di selezione Si e 5 0 Si
So
Azione
0 0
0 1
1
0 1
Nessun cambiamento Azzeramento tegistto Scorrimento Caricamento patallelo
1
5 9 Disegnare i quattto stadi del registro a scorrimento bidirezionale con caricamento parallelo, riporraro nella Figura 5 7 5 10 * Un contarore ad anello è un registro a scorrimento con l’usata seriale connessa
all’ingresso seriale, così come mostrato nella Figura 5 3 (a) Parrendo dallo stato iniziale 1000, elencare la sequenza degli stati dei quattro flip flop dopo ciascun scorrimento (b) Partendo dallo srato 10 0, quanti stati ci sono nella sequenza di conteggio di un contatore ad anello a n bir? 5 11 Disegnare il diagramma logico di un regisrro a 4 bir con ingressi di selezione Sj e 50 II registro opera seconda la seguente rabella funzionale Si
So
Azione
0 0
0
1 1
0 1
Nessun cambiamento Azzeramento registro Caricamento parallelo Uscita complementata
1
5 12 Un contarore ad anello con inversione (stvitch tail) utilizza come ingresso seriale il complemento della uscita seriale (a) Partendo dallo stato iniziale 0000, elencare le sequenze di stari dopo ciascun scorrimento fino a quando d registro ritorna allo stato 0000 (b) Partendo dallo stato 00 0, quanti stati a sono nella sequenza di conteggio di un contatore ad anello con inversione a n bit? 5 13 Un flip flop J K attivo sul fronte di discesa del clock presenta un ritardo di 2 ns tra l’istante in cui l’ingresso C passa da 1 a 0 e l’istante in cui l’uscita viene compie mentata Qual è il massimo ritardo per un contatore a cascata binano a 16 bit che utilizza questi flip flop? Qual è la frequenza massima alla quale il contatore può operare in modo affidabile'*
302
Capitolo 5
Registri e contatori
5 14 Quanti flip flop vengono complementati in un contatore a cascata a 8 bit, per tag giungete lo stato successivo partendo dalla configurazione (a) 01100111 (b) 00011111 5 1 5 + Per una famiglia logica CMOS, I assopimento di corrente è proporzionale alla somma delle transizioni (da 1 a 0 e da 0 a 1) in tutte le potte di ingresso e di usci ta nel citcuito Quando si progettano contatoti pet circuiti a bassa porenza, si pte fetisce utilizzare i contatoti a cascata in luogo dei contatoti binati sincroni Con tare il numeto totale delle transizioni (ingressi e uscite) in un contatore a cascata (includendo quelle relative al clock) e confrontarlo con il numeto delle transizio ni m un contatote binario sincrono della stessa lunghezza Basandosi su questa analisi, spiegate perché il contatore a cascata è superiore in termini di consumo di cottente 5 16 Disegnate il diagtamma logico di un contatote binano a cascata a decremento a 4 bit utilizzando (a) flip flop attivi sul fronte di salira del clock (b) flip flop attivi sul ftonre di discesa del clock 5 17 * Patrendo dalla tabella di staro tipotrata nella Tabella 5 5 ricavate le equazioni di ingtesso semplificare del flip flop pet un contatote binano sincrono con flip flop di npo D Ptevedete un ingtesso di abilitazione E N 5 18 Unhzzando la procedura di progetrazione pet un circuito sequenziale e patrendo dal diagtamma srato, converrite un flip flop D in un flip flop T, dimostrando che il citcuito logico combinarono necessario per la conversione corrisponde a una porrà XOR (OR esclusivo) 5 19 Cosrtuite un conrarote setiale parallelo a 13 bit, urilizzando tre conraroti patalle li a 4 bit Si supponga che rurra la patre combinarotia sia cosnruira da potre NAND e NOT e che ì rte contaroti impieghino il garing seriale Qual è il nume to massimo di porre NAND e di potte NOT nella carena che propaga il segnale nel conratote a 13 bir? 5 20 + Si deve progetrate un conratote parallelo sincrono a 64 bir (a) Disegnate il circuito di un contatote parallelo a 64 bir urilizzando blocchi conratote parallelo a 8 bir e due livelli di garing parallelo tra ì blocchi In questi blocchi, CO non è piloraro dal segnale di abilitazione E N (b) Determinate il tappotro rta la frequenza massima di funzionamento di questo contatore e quella di un conratote seriale parallelo a 64 bir Supporre che il rempo di propagazione del flip flop J K sia il doppio del atardo di una potrà AND e che il tempo di serup del flip flop sia uguale al «tardo di una potta AND 5 21 * Disegnate il circuito pet un conrarote binario bidirezionale sincrono a 4 bir con un ingtesso di abilirazione E N t un ingresso S pet selezionate la ditezione del con teggio Utilizzare flip flop di npo JK
Esercizi
5 22 Utilizzate il contatore binario sincrono apottato nella Figura 5 12 e una potta AND pet costruite un contatore che conti da 0000 a 1001 Ripetete il progetto per un contatore capace di contare da 0000 a 1101 Minimizzate il numero di in gtessi della porta AND 5 23 Utilizzare un numero opportuno di pone logiche e due contatoti binati del tipo mostrato nella Figura 5 12, pet costruire un contatore binario che conta da 9 a 69 Aggiungete un ulteriore ingresso che inizializza, in modo sincrono, il contato te a 9 quando il segnale INIT è 1 5 24 * Pet il contatore BCD sincrono il cui funzionamento è specificato dalla Tabella 5 7 verificate le equazioni di ingresso dei flip flop Disegnare il circuito del conta tote BCD avente anche un ingresso di abilitazione 5 25 Progettate un contatore BCD sincrono con flip flop JK 5 26 * Utilizzando flip flop JK, progettate un contatore binario capace di generare ci clicamente la seguente sequenza binaria (a) 0, 1,2 (b) 0, 1, 2, 3 ,4 , 5 5 27 Utilizzando flip flop T, progettare un conrarote capace di generare ciclicamente la seguenre sequenza 0, 1, 3, 2 , 4 ,6 5 28 Utilizzando flip flop D, progettate un contatore capace di generate ciclicamente la seguente sequenza 0, 1, 2 , 4 , 8 tSSSUi Tutti ì frammenti di codice VHDL utilizzati negli esercizi timanenri sono disponibi li in formato ASCII pet le simulazione nel siro web della Prentice Hall di accompagna mento al tesro, hrrp //www prendiall com/kime Un compilarote/simularore VHDL o Vetilog è necessario pet lo svolgimento degli esercizi o di porzioni di essi che richiedono simulazione, anche se frammenti di codice possono anche essere tedatri pet quei proble mi che non richiedono compilazione o simulazione 5 29 Fomite una descrizione funzionale in linguaggio VHDL pet il registro a 4 bit del la Figuta 5 1(a) Compilare e simulare la descrizione per dimosrtame la correttezza 5 30 Fomite una descrizione strutturale in linguaggio VHDL per il regisrto a 4 bit del la Figuta 5 l(a) utilizzando, come componenri, ì flip flop di ripo D Compilate e simulare la descrizione pet dimostrarne la correttezza 5 31 Riperete l’Esercizio 5 29 per il registro a 4 bit con caricamento parallelo mosrtato nella Figura 5 2 5 32 Ripetete l’Esercizio 5 30 per il regisrto a 4 bir con caricamento parallelo mosrtaro nella Figura 5 2 5 33 Fomite una descrizione strutturale in linguaggio VHDL per il contatore a cascara a 4 bir della Figura 5 8 Fomite anche la descrizione funzionale di un flip flop JKy includendola nella descrizione e utilizzandola come componente Compilate e si mulate la descrizione per dimostrarne la correttezza
303
304
Capitolo 5
Registri e contatori
5 34 Descrivere in linguaggio VHDL il contatore a 4 bit mostrato nella Figura 5 12, utilizzando un registro per i flip flop di tipo D e le equazioni booleane per la parte combinatoria Compilare e simulare la descrizione per dimostrarne la correttezza 5 35 Fornire una descrizione funzionale in linguaggio Verilog per il registro a 4 bit della Figuta 5 1(a) Compilare e simulare la descrizione per dimostrarne la correttezza 5 36 Fornire una descrizione strutturale in linguaggio Verilog per il registro a 4 bit del la Figura 5 1(a), utilizzando, come componenti, i flip flop D Compilare e simu lare la descrizione per dimostrarne la correttezza 5 37 Ripetere 1Esercizio 5 35 per il registro a 4 bit con caricamento parallelo, mostra ro nella Figura 5 2 5 38 Riperere l’Esercizio 5 36 per il registro a 4 bit con caricamento parallelo, mastra ro nella Figura 5 2 5 39 Fornire una descrizione strutturale in linguaggio Verilog per il contatore a cascata a 4 bit della Figura 5 8 Fornire anche un modulo srrutturale per un flip flop J K e utilizzarlo nella gerarchia progettuale Compilare e simulare la descrizione per di mostrarne la correttezza 5 40 Descrivere, in linguaggio Verilog, il conrarore binario a 4 bit della Figura 5 12 utilizzando un registro per i flip flop di tipo D e equazioni booleane per la parte combinatoria Compilare e simulare la descrizione per dimostrarne la correttezza
Capitolo 6
Memorie e dispositivi logici programmabili
L
a memoria è uno dei principali componenti di un calcolatore digitale ed è presente in un gran numero di sisremi digitali Le RAM (Random Access Memory, memorie ad accesso casuale) memorizzano ì dan in modo temporaneo, le ROM (Read Only Memory, memorie a sola lettura) memorizzano invece le informazioni in modo permanente Le ROM appartengono a una famiglia di dispositivi logici programmabili o PLD (programmable logic device), capaci di definire circuiti logia in base alle informazioni in essi memorizzate Nel seguirò le memorie RAM saranno prima studiate come blocchi dotati di ingressi, uscite e segnali di temportzzazione, successivamente si utilizzeranno modelli logici equivalenti per comprenderne il funzionamento inrerno Si stuelleranno infine le metodologie di connessione rra i vari circuiti integrati RAM (chip RAM) per la costruzione di semplici sisremi di memoria Per quanto riguarda le memorie ROM, si esaminerà prima la struttura logica di base e successivamenre si analizzeranno come implementazione di circuiti combinarori Si esamineranno quindi molteplici PLD come i dispositivi PLA {programmable logic array), i dispostavi PAL®(programmable array logic), i dispostavi CPDL (complexprogrammable logic devici) e i dispositivi FpGA (fieldprogrammable gate array)
306
Capitolo 6
6.1
Memorie e dispositivi logici programmabili
Memorie e dispositivi logici programmabili
Una memoria è una collezione di celle in grado di immagazzinare informazioni binane Oltre alle celle, una memoria contiene altri circuiri elettronici per la gestione delle ope razioni di memorizzazione e il recupero delle informazioni Le informazioni vengono poi elaborate dai circuiti del processore (registri e logica combinatoria) ed eventualmente rinviare nuovamenre alla memoria Con le memorie possono interagire direttamente an che le periferiche di ingresso/uscita che scrivono/leggono dalla memoria le informazioni da Trattare Sono utilizzar! due tipi di memoria memorie RAM e memorie ROM La RAM contiene informazioni limitatamente al periodo di tempo in cui il sistema è alimentato (memoria volarile) Le dimensioni della RAM variano da poche centinaia a diversi mi liardi di bir Le memorie ROM sono dispositivi logici programmabili (PLD) e l’infor mazione binaria da immaga7Zinare alTinrerno di queste strutture deve essere prima indi viduata e poi memorizzata mediante un processo di programmazione che a differenza del processo di scrittura delle memorie RAM, non è ripetibile Da qui il nome dato alla me mona (sola lettura) che può solranro essere Ietta e non alterata Altre tipologie di dispositivi logici programmabili sono i dispositivi a marnce logi ca programmabile (PLA), i dispositivi logici a matrice programmabile (PAL®) ì disposi tivi logici complessi programmabili (CPLD) e i dispositivi a matrice di porre program mabili (FPGA) Un PLD è un circuito integrato con porte logiche interne e/o connessioni, che possono essere configurate mediante un processo di programmazione Una delle tecnologie più semplici di programmazione utilizza diodi fusibili che vengono bruciati selettivamente in modo da ottenere la configurazione corrispondente al circuito logico che si intende realizzare In questo capitolo si presenteranno quattro diversi tipi di PLD e le relative procedure per il loro utilizzo nella progettazione di sistemi digitali Un tipico PLD può contenere centinaia o milioni di porte Alcune tecnologie usa no dispositivi caratterizzati da porte con elevato fan in Per illustrare, m forma sintetica, Io schema logico interno di tali dispositivi, viene adottata una speciale simbologia La Fi gura 6 1 mostra il simbolo convenzionale e la corrispondente matrice logica per una por ta OR a ingressi multipli II simbolo della porta rimane inalterato, ma, invece di molte plici connessioni di ingresso, si ha una sola connessione e tutti 1possibili ingressi sono rappresentati da linee perpendicolari La presenza di un simbolo di contatto (un pallino nero o una x all’incrocio tra la linea di ingresso e una delle linee perpendicolari) indica che quella particolare linea è uno degli ingressi della porta Una convenzione del tutto
-H 4 + (a) Simbolo convenzionale
D
(b) Simbolo in logica programmabile
Figura 6 t Simbolo convenzionale e simbolo utilizzato in logica programmabile
62
Memorie ad accesso casuale (RAM)
analoga si applica ad altri ripi di porre (AND, XOR, ecc ) Dal momento che iniziai mente tale procedura era utilizzata per la tecnologia che faceva uso dei fusibili, la marca rura delle connessioni degli ingressi a una porta a marnce è detta mappa delle bruciarute (fuse map), m quanto, in quesro modo, venivano individuati ì diodi da bruciare per co struire 1 insieme degli ingressi alla porta logica La sressa rappresentazione grafica e la stessa terminologia sono ancora unlizzare, anche se le recnologie di programmazione at mali non sono più basate sull uso dei fusibili
6.2
Memorie ad accesso casuale (RAM)
Una memoria RAM è un insieme di celle e di circuiri elertronici capaci di immagazzina re informazioni binane II tempo di accesso per ciascuna cella di memoria, sia in lettura sia m scrittura, è costante e indipendente dalla posizione della cella sressa, da qui la de nominazione di memorie ad accesso casuale In contrapposizione, una memoria ad acces so seriale, per esempio un disco magnetico o una unirà a nastro, ha rempi di accesso non uniformi dipendenti dalla posizione che la particolare locazione occupa Le informazioni binane sono olganizzare m memoria a gruppi di bit chiamar! word* (parola) che costituiscono la singola unità di informazione un numero, una istru zione, uno o più caratteri alfanumerici, altre informazioni binane Le memorie, nella maggior parte dei calcolatori sono organizzate m parole che solitamente sono multipli di otto bit, cioè multipli di un byte Così, una parola di 16 bit contiene due byte e una parola di 32 bit ne contiene quattro La capacità di una memoria è pari al numero di by te che è m grado di immagazzinare La comunicazione tra una memoria e l’esterno è ga rantita dall’insieme delle linee di ingresso e di uscita per i dati dalle linee di indirizzo e dalle linee di controllo, che specificano la direzione di trasferimento dell'informazione e la locazione cui si fa riferimento Nella Figura 6 2 è mostrato il diagramma a blocchi di una memoria Le n linee di ingresso dei dati forniscono l’informazione da immagazzina re nella memona, mentre le n linee di uscita dati forniscono l’informazione da restituire
n Ingressi dati k linee indmzzo Read (lettura) Wnte (scrittura)
Unità di memoria 2k parole n bit per parola ,rn uscite dati
Figura 6 2 Diagramma a blocchi di una unita di memoria * Nella figura 6 2 e nelle descrizioni che seguono si è preferito utilizzare la terminologia inglese ormai di uso internazionale e riportare laddove necessario la corrispondente traduzione in italiano
307
308
Capitolo 6
Memorie e dispositivi logici programmabili
all’esterno della memoria Le k linee di indirizzo specificano quale particolare locazione va utilizzata per l’operazione corrente I due ingressi di controllo specificano la direzione desiderata del trasferimento I ingresso di scrittura (Wnte) consenre la memorizzazione dei dati presenti in ingresso, mentre 1ingresso di lettura (Read) consente d rrasferimenro del dato residente in memoria verso l’esterno Una memoria è definirà anche dal numero di parole che contiene e dal numero di bit da cui è composta ciascuna parola Le linee di indirizzo selezionano una particolare parola, alla quale è appunto associato un indirizzo univoco Gli indirizzi variano da 0 a 2k — 1, dove k è il numero delle linee di indirizzo La selezione di una determinata paro la, all interno della memoria, viene effettuata copiando l’indirizzo binario a ¿-bit nelle li nee di indirizzo della memoria Un decodifìcarore, ricevuro in ingresso tale indirizzo, at tiverà il percorso per selezionare la parola specificata Le memorie dei calcolarori hanno vane grandezze Si è soliti riferirsi al numero di parole (o byte) di una memoria con una delle lettere K (kilo), M (mega), o G (giga) che, come si ricorderà dal Capitolo 1, sono uguali, rispettivamente, a 210, 220 e 230, per cui 64 K = 216, 2 M= 221 e 4 G = 232 Si consideri, per esempio, una memoria con una capacita di 1 K word di 16 bit eia scuna Poiché 1 K = 1024 = 2 10 e 16 bit sono pan a due byte, si dice allora che la memo ria ha una capacità di 2048 byte, ovvero 2 KB La Figura 6 3 mostra il possibile conte nuto delle prime tre, e delle ultime rre, parole di una memoria di tale dimensione Ciascuna parola connene 16 bit che possono essere divisi in due byte Le parole vengono individuate tramire ì loro indirizzi decimali, compresi tra 0 e 1023 Lindirizzo in binano corrispondente è costituito da 10 bir e vana tra 0000000000 e 1111111111 Una volta selezionata una specifica parola mediante il suo indirizzo le operazioni di lettura e scnt tura riguardano conremporaneamente 1 16 bir della parola La memoria di 1 K X 16 della Figura 6 3 ha indirizzi composti da 10 bit e ciascuna parola è composta da 16 bit Per una memoria di 64 K X 10, ciascun indirizzo è cosrirui to da 16 bit e ciascuna parola è formata da 10 bit II numero di bit necessari per gli indi rizzi di una memoria dipende dal numero di parole che si possono immagazzinare men rre è indipendente dal numero di bir di cui è costituita ciascuna parola 11 numero di bit per indirizzare una parola è determinato dalla relazione 2k > m, dove m è il numero tota le di parole e k è il numero minimo di bit di indirizzo che soddisfa la relazione
Operazioni di lettura e scrittura Le operazioni che una memoria ad accesso casuale può eseguire sono la lettura e la scnt tura di una parola Una operazione di scrittura consiste nel trasferimento nella memoria di una nuova parola Una operazione di lettura consiste nel trasferimento di una copia della parola specificata al l’esterno della memoria L’operazione scelta viene attuata da un’apposita circuitena in risposta ai due segnali di controllo il segnale Wnte per le ope razioni di scrittura e il segnale Read per le operazioni di lettura 1 passi per un’operazione di scrittura sono 1 invio dell indirizzo binario della parola desiderata alle linee di indirizzo della me
moria
62
Memorie ad accesso casuale (RAM)
Indirizzi di memoria Binario
Decimale
Contenuto
0000000000
0
0000000001
1 10101011 10001001
0000000010
2
1111111101
1021
10011101 00010101
1111111110
1022
00001101 00011110
1111111111
1023
1101111000100100
10110101 01011100
00001101 01000110
Figura 6 3 Esempio di contenuto di una memoria 1024 x 16
2 invio dei dati binati che devono essere immagazzinati nella memoria alle linee di
ingresso dari 3
attivazione dell’ingresso Wnte
La memoria trasferirà il contenuto binario presente sulle linee di ingresso dati e li imma gazzinerà nella locazione specificata dalle linee di indirizzo I passi per un’operazione di lettura sono 1 invio dell indirizzo binario, corrispondente alla parola desiderata, alle linee di in
gresso 2
attivazione dell ingresso Read
Nei moderni calcolarori le memorie sono organizzate in banchi ognuno dei quali è un arcuiti integrato che implementa una memoria RAM (chip RAM) Fa parte della me moria anche la circuiteria di supporto al suo funzionamento 1 banchi di memoria RAM di solito, sono caratterizzati da un unico ingresso di controllo per le operazioni di lettura e scrittura ReadJWnte e da un ingresso di selezione del banco Chip Select che lo abilita al le operazioni 1 possibili modi di funzionamento sono riportati nella Tabella 6 1
TABELLA 61
Ingressi di controllo a un chip di memoria
Chip Select (selezione bonco) CS
Read/Write Funzionamento memono R/W
0
X
1 1
0 1
Nessuno Scrittura su parola selezionata Lettura da parola selezionata
309
310
Capitolo 6
Memorie e dispositivi logici programmabili
Il segnale Chip Select è utilizzato per abilitare il particolare banco di memor RAM, o 1 banchi, che contengono la parola che deve essere memorizzata o Ietta in di pendenza del ripo di operazione che interessa la memoria Quando il segnale Chip Selecr è inattivo, il banco di memoria corrispondente è semplicemente disabilitato, menrre quando il Chip Select è artivo il modo di funzionamento è determinato dal segnale ReadJWnte Spesso viene aggiunto un ulteriore segnale di abilitazione per abilitare o di sabilitare contemporaneamente tutti i banchi che costituiscono la memoria
Temporizzazione dei segnali di controllo
Le operazioni di una unità di memoria sono condoliate delle unità esterne, quali la CPU Questa è remporizzata dal proprio segnale di clock menrre il funzionamene della memoria è governato dai propri ingressi di controllo, che cadenzano le operazioni di Ier tura e scrittura II tempo di accesso di un’operazione di lettura è il più grande ìnrervallo di tempo che ìnrercorre tra l’applicazione degli indirizzi e il trasferimenro del dato sulle h nee dati di uscirà della memoria Analogamente il tempo di scrittura e 1ìnrervallo di rem po massimo che intercorre rra I applicazione degli indirizzi e il completamento di rutte le operazioni richieste per la memorizzazione di una parola Le operazioni di scrittura della memoria possono susseguirsi in sequenza, a intervalli di rempo regolari, cadenzati da op portimi cambiamenti dei segnali di controllo, orchestra« dalla CPU Questo genera i se gnali di controllo per la memoria in modo da sincronizzare le operazioni ìnrerne con le operazioni di lettura e scrittura della memoria Ne consegue che il tempo di accesso e il tempo di scrittura di una memoria devono essere messi in relazione con la frequenza di clock della CPU, in modo che essi coincidano con uno o più cicli di clock Si consideri come esempio, una CPU che opera con frequenza di clock pari a 5 MHz, cui corrisponde un periodo del segnale pari a 20 ns (1 ns = IO1-9 s) Si supponga adesso che la CPU debba comunicare con una memoria caratterizzata da un tempo di accesso di 65 ns e un tempo di scrittura di 75 ns II numero di impulsi di clock necessa ri per una operazione della memoria è definito dall intero più grande del rapporro rra il massimo valore tra tempo di accesso e rempo di scrittura e il periodo di clock [max.{taccessoì tscnmrj l t ci!1 = i~max{65> 75}/20l = [~75 /20l = [3 75l=4 Sarà quindi necessario dedicare almeno quattro impulsi di clock per ciascuna richiesta di lettura/scrittura in memoria Il diagramma di temporizzazione del ciclo di una memoria, mostrare nella Figura 6 4, si riferisce a una CPU con un clock di 50 MHz e una memoria con tsmnura = 75 ns e ^lettura = 65 ns II ciclo di scrittura nella parte (a) della figura mostra quattro impulsi di clock, 71, 72, 73 e 74 con un periodo pan a 20 ns Per un operazione di scrittura, la CPU deve fornire alla memoria 1indirizzo e i dan in ingresso L indirizzo è applicaro du ranre 1ìnrervallo in cui il segnale di abilitazione della memoria è attivo, in coincidenza con il fronre di salita di 71 I dati da memorizzare sono applicati, in seguito, a pattire dal fronte di salita di 72 Relativamente alle forme d’onda delf’indirizzo e dei dati, le due h nee che si incrociano stanno a indicare che i corrispondenti segnali possono cambiare va lore rispetto al ciclo precedente Le aree ombrate rappresentano valori non specificati Lefiettiva scrittura ha luogo dopo la transizione a zero del segnale ReadJWnte, in coinci denza con il fronte di salita di TI
62
Memorie ad accesso casuale (RAM)
311
Clock Ingresso Ind nzzo E S S *
Ind r zzo stab 8
\
Memory Enable (Ab tazone) Read/Wr te
\_____________________ /
Ingresso dall
Dat vald
Clock
Ingresso Ind nzzo Memory Enable Read/Write
Uscita dat
(b) C ciò di lettura
Figura 6 4 Diagramma di temporizzazione di un ciclo di memoria
Per evirare di distruggere dati memorizzati nelle altre parole di memoria, é impor tante che la transizione del segnale Read/Wnte si verifichi dopo che i segnali sulle linee di indirizzo si sono stabilizzati sui valori desiderati o, altrimenti, una o più parole porrebbe ro essere momentaneamenre indirizzate e accidenralmente sovrascntte con dati non vo luri II segnale Read/Wnte dovrà quindi restare al livello logico 0 per il tempo sufficiente al completamento dell’operazione di scrittura, dopo l’applicazione dell’indirizzo e del se gnale di abilitazione Dopo che il segnale Read/Wnte torna al livello logico 1, indirizzo e dati devono rimanere ancora stabili per un breve periodo di tempo, in modo da non di struggere i dati presenti in alrre parole della memoria Quando il quarto impulso di clock è completo, l’operazione di scrittura rermina con un margine residuo di 5 ns e la CPU può applicare, con il successivo impulso 71, l’indirizzo e ì segnali di conrrollo per una nuova richiesta alla memoria Il ciclo di lertura descritto nella Figura 6 4(b) fà nferimenro a un indirizzo di me moria specificato dalla CPU La CPU, sul fronte di salita di 71, fornisce l’indirizzo, abi lita, con l’apposito segnale Memory Enable, la memoria e porta il segnale ReadfWhte al livello 1 per indicare una operazione di lettura La memoria fornisce ì dati, relarivi alla
312
Capitolo 6
Memorie e dispositivi logici programmabili
parola individuata dall indirizzo, sulle linee dati in uscita entro 65 ns dal rempo in cui l’indirizzo è applicare e il segnale di abilitazione è attivo A questo punto la CPU può trasferire ì dari in uno dei propri registri interni durante il successivo fronre di salirà di 71, con il quale può avere inizio anche una nuova operazione di memoria
Proprietà della memoria Una RAM integrata in un circuito può essere sia statica che dinamica La RAM statica (SRAM) è composra da larch interni che immagazzinano informazioni binarie, che ri mangono valide per tutto il rempo in cui la RAM è alimentata La RAM dinamica (DRAM) immagazzina 1informazione binaria sotro forma di carica elettrica su conden saton La carica dei condensatori rende a scaricarsi con il tempo per cui viene conrinuamente effettuato un refresh tramire transistor MOS di ripo n channel ^operazione di re fresh viene continuamente ripetuta, a intervalli di pochi millisecondi, leggendo e riscrivendo ogni parola di memoria Le DRAM hanno un consumo ridotto di porenza e una maggiore capacira di memoria per singolo banco Le SRAM, invece, sono pm facili da utilizzare, posseggono cicli di lettura e scrittura pm brevi e non necessitano di refresh Le unirà di memoria che perdono le informazioni immagazzinate quando non sono alimenrare si dicono volatili Le RAM, sia statiche sia dinamiche, appartengono a questa categoria, in quanto le celle di memoria necessitano di alimentazione esrerna per mante nere il loro contenuto In contrapposizione, le memorie non volatili, come dischi magneti ci e dispositivi ottici, sono in gtado di mantenere le informazioni immagazzinate perma nentemenre, anche senza alimentazione In queste memorie la memorizzazione dell informazione binaria è associara alla direzione della magnetizzazione che si mantiene costante, anche in assenza di alimentazione Infine, un alrro tipo di memoria non volatile sono le memorie a sola lettura, o ROM (Read Only Memory), che saranno esaminate pm avanti
6.3
Circuiti di memoria RAM
Come già anricipato nel paragrafo precedente, una unità di memoria è formata da un in sieme di banchi RAM (chip RAM) e dalla relativa logica di controllo Si comincerà ora lo srudio dettagliaro di tali elementi, esaminando dapprima la struttura interna di un banco di memoria RAM, per poi passare ad architetture multibanco e alla progettazione della logica di conrrollo La struttura interna di un banco di memoria RAM di m parole, con n bit per parola, comprende m n celle binarie di memoria e la relativa circuiteria La cir cuiteria è formata dai decodificatori per selezionare le parole da cui leggere o sulle quali scrivere, dai circuiti di lettura, dai circuiti di scrittura e dalla logica d uscita La cella RAM è la cella elementare di memoria utilizzata nel chip RAM il quale è di solito progettato utilizzando le metodologie proprie dei circuiti elettronici anziché quelle dei circuiti logici È tuttavia possibile e anche utile modellare un chip RAM come un circuito logico
63
Circuiti di memoria RAM
Select (Selezione)
p ?V 1yb*- -xt < } i. . K >'■ jj" A
j
!?
K #/* ■*\ -B----'ìL ìjlyi
V- s
[ «W* ^ &R
Q
Q
i ^or|---- «£J
Figura 6 5 Cella di memoria RAM statica
Per descrivere un chip RAM statico, si presenrerà per prima la cella RAM elemen tare per l’immagazzinamento di un singolo bit e poi ancora la sressa inserita in una strut tura gerarchica per descrivere un chip RAM La Figura 6 5 mostra il modello logico di una cella RAM starica L’elemenro di memoria della cella è costituito da un larch SR, ì cui ingressi sono abilitati dal segnale di selezione (Select) Il contenuro del latch viene manrenuro se il segnale Select = 0, menrre, se il segnale Select = 1, il conrenuto è deter minaro in base ai valori di B e B JLe uscite del latch sono conrrollare anch esse dal segna le Select se Select = 0 sarà C = C - 0, menrre, se Select = 1, C sarà uguale al valore im magazzinato nel latch e C il suo complemenro È possibile connettere insieme celle RAM e ì relativi circuiri di lettura e scrittura, in modo da formare un elemento di memoria RAM completo di tutta U necessaria circuì teria per la memorizzazione di un singolo bit RAM bit slice Nella Figura 6 6(a) è ripor taro il diagramma logico di una RAM bit slice, in cui la parte del modello che rappre senta ciascuna cella RAM, è evidenziara in grigio II caricamento del larch è controllato dall’ingresso Word Selecr Se Word Select = 0, sarà S = R = 0 e il contenuto del latch ri marrà inalreraro_ Se Word Select = 1, il valore da caricare nel larch sarà conrrollato dai due segnali B e B che sono le uscire del blocco logico di scrittura (Wnte Logic) Affinché l’uno o l’alrro dei due segnali assuma il valore 1 e, quindi, si possa modificare il valor immagazzinato nel larch, si deve avere ReadfWhte = 0 e Bir Select = 1 In quesre condì ziom B e B assumono il valore di Data In e del suo complemento, rispettivamente, por rando nello staro di ser o di reset il latch della cella RAM selezionata Se Data In = 1, al lora il latch immagazzina il valore 1 (stato di set) menrre se Data In - 0, allora il latch immagazzina il valore 0 (stato di reset) completando l’operazione di wnte Nelle normali operazioni, viene scritta nella memoria soltanto una parola per volta Ciò significa che soltanto per una linea sarà Word Select = 1, mentre per tutte le altre h nee sarà Word Select —OH segnale Word Selea controlla anche il processo di lettura del le celle RAM, utilizzando i circuiti logici di lettura condivisi Se Word Select = 0, il vaio re immagazzinato nel relativo latch SR non raggiunge la coppia di porte OR alfinterno del blocco logico di lettura, a causa delle due porte AND poste all’uscita della cella
313
314
Capitolo 6
Memorie e dispositivi logici programmabili
Word_Select 0 {Seleztone_parola_0)
Select (Selezione)
Figura 6 6 Modello di una bttshce di una RAM
RAM Se Word Select = 1, il valore immagazzinato nel relativo latch RAM giunge al lat eh SR all'interno del blocco logico di lettura Se anche Bit Select = 1, questo valore ap panrà sulla linea Data Out dell elemento di memoria RAM Si noti che per la particola re struttura del blocco logico di lettura, la lettura si verifica indipendentemente dal valore di RsadJWnte
63
Circuiti di memoria RAM
315
Il simbolo per la RAM bit slice, riportato nella Figura 6 6(b), è utilizzato per la rap presentazione della struttura interna dei banchi di memoria RAM Ogni linea del segnale Word Select si estende oltre il bit slice in modo da connettere insieme più RAM bit slice normalmente disposti uno accanto all’altro Gli altri segnali nella parte più bassa del sim bolo possono essere connessi in vari modi, in dipendenza della struttura del chip RAM Nella Figura 6 7 sono riportati il simbolo e il diagramma a blocchi per un chip RAM di dimensione 1 6 x 1 I quattro bit di indirizzo selezionano le 16 parole da un bit,
Figura 6 7 Chip RAM 16 parole per 1 bit
316
Capitolo 6
Memorie e dispositivi logici programmabili
immagazzinate nella RAM Sono anche presenti 1 segnali Data Input, Data Output e ReadfWnte II segnale Chip Select a livello del chip corrisponde al segnale Memory Ena ble dell’intera RAM, formata da più chip In questo caso, la struttura interna del chip è fotmata da una RAM bit slice Composta da 16 celle Poiché devono essere controllate 16 linee Word Select, in modo che, in un dato momento, soltanto una assuma il valore Io gico 1, si utilizza un decodificatore da 4 16 per decodificare ì quattro bit di indirizzo È stato aggiunto solo un buffet a tre stati (buffer three state), il cui simbolo è un ttiangolo dotato di due ingressi e una uscita II buffet a tre stati consente la costruzione di un multiplexet con un numero di ingressi arbitrati, le cui uscite possono essere con trollate, utilizzando gli ingressi Chip Select Verranno ota discusse le caratteristiche ed il funzionamento del buffet a tre stati, elemento ctitico nell’uso dei chip RAM
Buffer a tre stati Come si evince dal nome, una uscita logica a tre stati è caratterizzata da tre stati diffe tenti I primi due stati sono lo stato logico 1 e Io stato logico 0 , tipici della logica con venzionale, mentte il terzo stato è ad alta impedenza (Hi Z, high impedance) e si com porta come un citcuito aperto, l’usata è quindi disconnessa Qualsiasi blocco logico può essete dotato di usate a tte stati Nella Figura 6 8 sono tipottati i simboli grafici e la tabella di vetità di un buffet a tte stati II simbolo della Figura 6 8(a) si diffetenzia dal notmale buffer pet la presenza dell’ingresso di attivazione E N (enable, abilitazione) nella patte inferiore del simbolo Dalla tabella di vetità della Figuta 6 8(b), si evince che se E N = 1, allora O U T = In, co me nel caso di un buffet notmale Se E N - 0 l’uscita assumetà lo stato di alta impedenza indipendentemente dal valote di IN Le usate di un buffet a tte stati possono essete connesse insieme per ottenete in uscita una linea come da un mukiplexet La Figuta 6 9 (a) mostra due buffer a tte stati le cui uscite sono state connesse per fotmare un’unica uscita OL È interessante valutate d valore assunto dall'uscita di questa sttuttura in funzione dei valon assunti dai quattto in gtessi ENI , ENG, IN I , e INO II compottamento dell’uscita è tipottato nella tabella di venta della Figura 6 9(b) Pet ENI = ENO = 0, entrambe le usate dei buffer sono nello stato di alta impedenza Poiché enttambe le usate si compottano come circuiti aperti,
I N ------EN--------
(a) Simbolo Figura 6 8 Buffer a tre stati
-------OUT
EN
IN
OUT
0
X
Hi Z
0
0
1
1
1
(b) Tabella di verità
63
Circuiti di memoria RAM
EN1
ENO
INI
0
0
X
INO
X
OL
Hi Z 0
INO
_ ENQ 0 i i 0
i (S)
EN1 0
(a) Diagramma logico
1 0
(fa) Tabella di verità Figura 6 9 Uso di buffer tri stato per costituire una linea m multiplex
anche OL è un circuito aperto Pee EN \ = 0 e ENO - 1, l’uscita del buffet in posizione più alta è INO e Fuscita del buffet in posizione più bassa è Hi-Z (alta impedenza) Poiché il valore di INO combinato con un circuito aperto è ancora INO, I uscita OL è INO, come riportato nella seconda e nella terza riga della tabella di verità Un caso analogo si ha quando ENI = 1 e ENO = 0, con OL che assume il valore INI, come riportato nella quatta e quinta riga della tabella Pet ENI = 1 ed ENO = 1, la situazione risulta più complicata se INI = INO, alíota OL assumerà il valore comune, ma se 7An.Fi/M), si crea un conflitto sull uscita Dal punto di vista elettrico, il conflitto ge nera una corrente che patte dal buffet, con uscita 1, ed è ditetta verso il buffet con usci ta 0 La corrente generata può danneggiare il circuito a causa del grande calore sviluppa to, come sottolineato dal simbolo del fumo’, riportato nella tabella di verità Ovviamente una situazione del genere deve essere evitata Poiché i valori assunti da INO e IN I sono prevedibili, l’unico modo pet evitate questo caso si ottiene impedendo che ENI ed ENO non assumano contemporaneamente il valore 1 In generale, per n bufferà tte stati, collegati tra di loto da un bus, E N può assumete il valore 1 soltanto per uno dei buffet e deve essete pan a 0 per tutti gli altri Ciò si può ottenete utilizzando un decodi fìcatote pet la generazione dei segnali EN Nel caso di due buffet, il decodificatote si ti duce a un semplice invettet con impulso di selezione S, come mostrato nella parte trat teggiata della Figuta 6 9(a) È interessante esaminare i casi in cui è presente 1invertitore, identificati dall’area scuta della tabella di venta riportata nella Figura 6 9(b) La tabella di verità è coinciden te con quella che si ottettebbe da un multiplexet a doppia via, con ingresso di selezione S Pertanto, un insieme di n buffer a tre stati con le uscite connesse tra di loro e gli in gtessi E N connessi, a loro volta, alle uscite di un decodificato te, fornisce una selezione n — 1, cosi come avviene per un notmale multiplexer n —1
317
318
Capitolo 6
Memorie e dispositivi logici programmabili
Utilizzando buffet a tte stati pet le uscite dei banchi di memotia RAM, è possibile connetterle insieme in modo da avete sull uscita dell intera memotia RAM, la patola proveniente dal chip selezionato pet lalettuta I segnali di abilitazione, visti in pteceden za, corrispondono agli ingressi Chip Select dei banchi di memotia Pet leggete una pato la da un particolare banco, il valore del relativo segnale Chip Select deve essere 1 men tte, pet tutti gli altti banchi collegati alla stessa uscita, il segnale Chip Select deve essete 0 Un circuito decodificatore garantisce, in tutti 1casi, che le combinazioni di bit da con nettete ai Chip Select contengano un solo 1
Selezione per coincidenza
Airintetno di un banco di memoria RAM, il decodificatore con k ingressi e 2k uscite, ne cessita di 2k porte AND con k ingressi pet ciascuna porta, se si adotta 1approccio più semplice pet la sua progettazione Inoltre, se il numero di parole della memoria è grande e se tutti i bit, considerando una specifica posizione della parola di memoria sono con tenuti in una singola RAM bit shce, allora il numero di celle che condividono 1circuiti di lettura e di scrittura è anchesso grande Le proprietà elettriche, derivanti da queste due situazioni, fanno diventare eccessivamente lungo il tempo di accesso e di scrittura della memoria RAM Il numero totale di porte logiche presenti nel decodificatore il numero di ingress pet potta e il numero di celle pet RAM bit shce possono essete ridotti utilizzando due decodificatoti collegati insieme secondo lo schema a selezione per coincidenza (coincident selection) Una possibile configurazione utilizza due decodificatori a k!2 ingressi, invece di un decodificatore a k ingressi Un decodificatore controlla le linee di selezione per le parole e l’altro controlla le linee di selezione per ì bit II risultato è uno schema di seie zione a matrice bidimensionale Se il chip RAM ha m parole con un bit pet patola il cit culto seleziona la cella RAM all intersezione della riga Word Select e della colonna Bit Select Poiché adesso il "Word Select non è più un selezionatore di parole, il suo nome vie ne cambiato in Row Select L’uscita proveniente dal decodificatore che seleziona uno o più RAM bit shce è denominata Column Select Il circuito di selezione coincidente pet un banco di memoria RAM è mostrato nel la Figura 6 10 II chip è formato da quattto RAM bit shce, da quattro bit ciascuno e ha un totale di 16 celle RAM, disposte secondo una matrice bidimensionale I due bit più significativi dell indirizzo passano attraverso il decodificatote di riga 2—A in modo da se lezionate una delle quattto righe della mattice I due bit meno significativi dell indirizzo passano attraverso il decodificatote di colonna 2—4, in modo da selezionare una delle co lonne (RAM bit shces) della matrice II decodificatore di colonna è abilitato dall ingtes so Chip Select Quando il segnale Chip Select è 0 tutte le uscire del decodificatore sono 0 e non viene selezionata alcuna cella si evitano, in questo modo, sctittuie non volute nelle celle RAM Quando invece il segnale Chip Select è 1 viene selezionato un solo bit della RAM Pet esempio, nel caso dell indirizzo 1001 i due bit più significativi dell’indinzzo se lezionano, attraverso il decodificatore di riga la riga 10 (21o) della RAM I due bit meno significativi dell indirizzo selezionano attraverso il decodificatore di colonna, la colonna 01 (1 jo) della RAM La cella RAM che viene selezionata si trova all intersezione della ri
63
Circuiti di memoria RAM
Figura 6 10 Diagramma di una RAM 16 x 1 che utilizza un insieme 4 x 4 di celle RAM
ga 2 e della colonna 1 della matrice ed è la cella 9 (102 012) Avendo selezionato una ti ga e una colonna, e quindi una cella 16 X 1, l’ingtesso ReadJWnte determina il tipo di operazione (lettura o scrittura) che si vuole eseguite sulla memoria Durante {‘operazione di lettura (Read/Wrtte - 1), il bit selezionato giunge, attraverso la porta OR, al buffer a tre stati Si noti che la porta è disegnata secondo la simbologia stabilita nella Figura 6 1 Poiché il buffet è abilitato dal segnale Chip select, il valore letto appare sull uscita Data Output Durante l’operazione di scrittura (Read/Wrtte = 0), il bit presente sulla linea Da ta Input è trasferito nella cella selezionata Le celle di memoria non selezionate sono di sabilitate e 1loro valori binari, precedentemente immagazzinati, non cambiano
319
320
Capitolo 6
Memorie e dispositivi logici programmabili
Dectxior d riga
Za
nata Oulpui 0 Data Output 1 Read/Wr te
Aq
OhpSelect
Figura 611 Diagramma di una RAM 8 x 2 che utilizza un insieme 4 x 4 di celie RAM
Nella Figura 6 11, la stessa matrice bidimensionale viene utilizzata come elemento per creare un banco di memoria RAM 8 x 2 , con otto parole, ciascuna composta da due bit II decodificatore di riga rimane quello visto nella Figura 6 10, gli unici cambiamenti si hanno, invece, per il decodificatore di colonna e per la logica di uscita Poiché ci sono soltanto tre bit di indirizzo e due di loro sono trattati dal decodificatore di riga, il deco dlficatore di colonna ha come ingressi un bit dell indirizzo e il segnale Chip Select e ha come uscite due segnali Column Selea Nella memoria vengono scritti o letti due bit al la volta per cui ì due segnali Colunm Select interessano coppie adiacenti di RAM bit sii
63
Circuiti di memoria RAM
ce, inoltre, due segnali di ingresso, Dara Input 0 e Data Input 1, sono collegati all in gresso Data In delle coppie adiacenti Infine, le uscite delle vane coppie di RAM bit sii ce corrispondenti (Data Out) condividono la porta OR di uscita e i buffer a tre stari, e generano sulle linee di uscita ì segnali Data Output 0 e Data Output 1 dell’inrera me moria II funzionamento di questa struttura può essere analizzato, applicando al suo in gresso 1indirizzo 3 (0112) I pnmi due bit dell’indirizzo, 01, selezionano la nga 1 della matrice, mentre il bit finale, 1, seleziona la colonna 1, cioè il bit slice 2 (102) e il bit slice 3 ( 112) La parola, da scrivere o da leggete, si ttova, quindi, nelle celle 6 e 7 (011 02 e 011 12) della memotia RAM, le quali contengano tispettivamente il bit 0 e il bir 1 della parola 3 Pet dimostrare il risparmio introdotto dall utilizzo della selezione per coincidenza, analizziamo una RAM statica più realistica avente come dimensione 32 K X 8 pan a 256 Kbit Al fine di rendere il numero di righe e il numero di colonne uguale, occorre consi derare la radice quadrata di 256 K, cioè 512 = 29 Pertanto, 1primi nove bit dell mdmz zo sono dedicati al decodificatore di riga e 1 restanti sei al decodificatore di colonna (32 768 - 2 15) Senza 1utilizzo della selezione per coincidenza il singolo decodificatore dovrebbe avere 15 ingressi e 32 768 usate Con Futilizzo della selezione per coinciden za, si ha un decodificatore 9 512 e un decodificatore 6 64 Adottando 1approccio pm semplice per la progettazione del decodificatore, nel primo caso si avrebbero 32 800 por te, mentre nel secondo caso (selezione per coincidenza) il numero totale di porte è 608 considerando entrambi ì decodificatori II numero di porte viene ridotto di un fattore maggiore di 50 Inoltre, sebbene siano richiesti più circuir! di lettura!'scrittura (maggiori di un fattore 64), si ha come vantaggio che la selezione di colonna può essere fatta rra le celle RAM e 1circuiti letturaJscrittura, nducendo 1circuiti necessari soltanto agli otto ori ginali (memoria 32 K X 8) Infine grazie al numero ridotto di celle RAM collegate a ogni circuito lettura!scrittura il tempo di accesso al banco risulta migliore
RAM dinamiche Le RAM dinamiche (DRAM) hanno la caratteristica di fornire, a basso costo, notevoli capacità di immagazzinamento, dominano perciò nelle applicazioni in cui sono richieste grandi quantità di memoria ivi comprese le RAM primarie dei calcolatori Le DRAM sono molto simili alle SRAM, la loro progettazione elettronica è tuttavia molto più inte ressante, tenendo conto dei circuiti elettronici utilizzati per implementare le celle Inol tre, come si deduce dal termine “dinamiche ’ presente nel nome, l’immagazzinamento delle informazioni è solo temporaneo, di conseguenza deve essere eseguita periodica mente un’operazione di refresh m modo da simulare il comportamento di un immagaz ztnamento di tipo statico La necessità di cicli periodici di refresh è la principale diffe renza tra il comportamento delle DRAM e quello delle SRAM Di seguito si esaminerà il funzionamento delle celle RAM dinamiche la circuiteria logica richiesta per effettuare 1operazione di refresh e l’impatto delle operazioni di refresh sulle operazioni della me moria
322
Capitolo 6
Memorie e dispositivi logici programmabili
Figura 6 1 2 Cella RAM dinamica analogia idraulica del funzionamento modello della cella
Nella Figura 6 12(a) è riportaro il circuito di una cella di una RAM dinamica, for maro da un condensatore C e da un transistor T II condensatore C è utilizzato per im magazzinare cariche elettriche Se nel condensatore è sraro immagazzinaro un sufficiente numero di cariche elettriche, la cella può essere considerata come un elemento di me moria contenente un 1 logico, in caso conrrario si comporta come un elemento di me moria contenente uno 0 logico II Transistor funziona in modo simile a un inrerruttore, nello sresso modo delle porte di trasmissione presenrare nel Capitolo 2 Quando l’inter rutrore è aperto la carica immagazzinata nel condensarore rimane fìssa Quando l’inter rutrore è chiuso la carica può fluire dentro e fuori il condensarore, attraverso la linea B esterna (Bit Line) Il flusso di carica consenre quindi di scrivere, nelle celle, 1 o 0 e di es sere successivamente lerte Per capire le modalirà con cui avvengono le operazioni di lettura e scritrura si uti lizzerà un’analogia idraulica in cui si ìappresenterà la carica come acqua, il condensarore come un piccolo serbaroio per 1immagazzinamento e il transistor come una valvola Poi ché la Bit Line ha una grande capacità, essa verrà rappresentata da un grande serbatoio, doraro di pompe che possono riempirlo e svuorarlo rapidamente L'analogia è rappresenrata nelle Figure 6 12(b) e 6 12(c) in cui le valvole sono chiuse Si noti che in un caso il serbatoio piccolo è pieno e ciò rappresenta, in questa analogia, la memorizzazione di un 1, mentre nell’alrro caso il serbatoio è vuoto e ciò rappresenta la memorizzazione di uno 0 Si supponga a quesro punto di voler scrivere un 1 logico nella cella in questo caso la valvola sarà aperta e la pompa riempirà il serbatoio grande L’acqua fluendo attraverso la valvola riempirà il serbatoio piccolo, come illustrato nella Figura 6 12(d) Dopo questa operazione, la valvola verrà chiusa lasciando il serbatoio pieno, che rappresenta la me morizzazione di un 1 logico Utilizzando lo stesso tipo di operazione può essere scritto uno 0, tenendo presente che in questo caso la pompa svuoterà il serbatoio grande (Figu ra 6 12(e))
63
Circuiti di memoria RAM
Si supponga di voler leggere il valore immagazzinato nella cella e che esso sia un 1 corrispondente, nell analogia al serbatoio pieno Con il serbaroio grande a un livello in termedio noto e opportuno, la valvola viene aperta Poiché il serbatoio piccolo è pieno, 1 acqua fluisce dal serbatoio piccolo al serbaroio grande aumentando il livello di acqua nel serbaroio grande come si vede dalla Figura 6 12(f) Laumento di livello viene ínter pretato come la lettura di un 1 dal serbatoio di immagazzinamento Come riportato nel la Figura 6 12(g), se il serbatoio di immagazzinamenro è inizialmente vuoro ci sarà un leggero abbassamento di livello nel serbatoio grande, che viene interpretato come la lettu ra di uno 0 dal serbatoio di immagazzinamento Nell operazione di lettura appena descritta, le Figure 6 12(f) e 6 12(g) mostrano che, indipendenremente dal valore iniziale immagazzinato nel serbaroio di immagazzina menro, adesso esso connene un valore intermedio che non consentirà cambiamenti si gnifìcativi nel livello del serbaroio esterno e quindi non consentirà di rilevare ancora una volta, la presenza di uno 0 o di un 1 in esso contenuto L’operazione di lettura ha di strutro il valore immagazzinato ed è denominata lettura distruttiva (destructwe read) Per essere in grado di leggere nuovamente il valore originale immagazzinato, è necessaria una operazione di ripristino (restare) è necessario cioè riportare il serbatoio di immagazzina menro al livello originale Per eseguire il resrore di un 1 logico, già letto, il serbatoio grande verià riempirò dalla pompa e il serbaroio piccolo si riempirà attraverso la valvola aperta Per eseguire il restore di uno 0 logico, già Ietto, il serbatoio grande verrà svuotato dalla pompa e il setbatoio piccolo si svuoterà atrraverso la valvola aperta Nella struttura reale delle celle esistono altri percorsi (paths) attraverso cui la carica può fluire I percorsi sono analoghi a piccole perdire che possono presentarsi in un ser batolo di immagazzinamento A causa di quesre perdite, può accadere che il serbatoio piccolo, già pieno, si svuoti sino al punto in cui I aumento di livello del serbaroio gran de, dopo una operazione di letrura, non può più essere considerara come tale Infarti, se il livello del serbaroio piccolo è minore della metà della massima è possibile che, duran re l’operazione di Iertura, si verifichi addirittura una diminuzione del livello del serbaroio grande Per compensare le perdite il serbaroio piccolo, che conriene un 1, deve essere periodicamenre riempito Loperazione è denominara operazione di refresh (refresh) dei contenuri delle celle Ogni cella deve subire una operazione di refresh prima che il hvel lo di carica si abbassi ad un punto tale che il valore in essa immagazzinaro non sia più os servabile L’analogia idraulica ha consenriro di spiegare il modo di operare di una DRAM Come per la SRAM, si urilizzera ora per le celle DRAM un modello logico Nel model lo riportato nella Figura 6 12(h), la presenza di un latch D consente la memorizzazione di un bir L’ingresso di controllo Cdel latch D è il segnale Select, mentre l’ingresso dati D del latch D è il segnale B Per modellare l’usata delia cella DRAM si utilizzerà un buf fer a tre stati, che usa Selecr come ingresso di conrrollo e C come uscita Nel circuito elet tronico originale della cella DRAM, riportato nella Figuta 6 12(a) i segnali B e C sono coincidenti, mentre nel modello logico essi risultano separati al fine di evitare di connet tere insieme uscite e ingressi
323
324
Capitolo 6
Memorie e dispositivi logici programmabili
Linea dati Ingresso/uscita
Figura 6 1 3 Diagramma a blocchi di una DRAM con logica di aggiornamento
Partendo dal modello logico per la cella DRAM, si può costruire il modello per il bir slice DRAM (Figura 613) Questo modello è simile a quello del bit shce SRAM, ri portato nella Figura 6 6 È evidente che, a parte la struttura della cella, i due bit shce so no simili a livello logico Dal punto di vista del costo per bir, essi risultano invece molro differenti Una cella DRAM è formata da un condensatore e da un transistor Una cella SRAM connene, Tipicamente, sei transistor ed è quindi più complessa (di un fattore 3) della corrisponderne cella DRAM Se un chip ha dimensione prefissata, il numero di cel le SRAM che possono essere contenure in un chip è meno di un rerzo di quelle che si avrebbero utilizzando celle DRAM II costo per bit di una DRAM e quindi meno di un terzo del costo per bit di una SRAM e ciò giustifica l'utilizzo delle celle DRAM in me morie di grandi dimensioni Le recniche di refresh del contenuto delle celle DRAM devono essere ancora di scusse Prima è però necessario descrivere la tipica struttura utilizzata per indirizzare le celle DRAM Poiché solitamenre una memoria DRAM è composta da molti banchi si vuole raggiungere l’obiettivo di ridurre la grandezza fìsica del singolo banco DRAM Grandi memorie DRAM richiedono 20 o più bit di indirizzo e quindi sarebbero richie sti almeno 20 piedini di indirizzo per ciascun banco Per ridurre il numero di piedini, l’indirizzo di una DRAM viene inviato serialmente, diviso in due para si invia prima l’indirizzo di riga e dopo l’indirizzo di colonna Ciò può essere ottenuro poiché 1indinz zo di riga è necessario, nel normale funzionamento, prima dell’indirizzo di colonna Per mantenere l’indirizzo di riga per tutto il ciclo di lettura o di scrittura esso viene imma
63
Word Select 0
Circuiti dr memoria RAM
Select
(a) Diagramma logico
Figura 6 1 4 Modello di una bit shce di una DRAM
gazzinaro in un registro, come illustrato nella Figura 6 14 Anche 1indirizzo di colonna viene immagazzinato in un registro II segnale di caricamento (load) per il registro degli indirizzi di riga è RAS (Row Address Strabe), mentre per gli indirizzi di colonna è CAS (Column Address Strobe) Oltre al segnale RAS e al segnale CAS, i segnali di controllo per il chip DRAM comprendono xsegnali R/W (Read/Wnte) e OE [Output Enable) Si noti anche che in questo progetto sono srari utilizzati segnali attivi al livello basso LOW (0)
325
326
Capitolo 6
Memorie e dispositivi logici programmabili
Ind rizzo
Indlrizzorga
^ In d r zzo colonna
RAS
\
CAS Output Enable
Read/ Write
f
\
Ingresso dati
Ind rizzo
Ind r zzo r ga
Ind nzzo colonna'
\ Output Enable
\
J
Read/ Write
Uscita dat
(b) Ciclo di lettura
Figura 6 15 Diagramma di temporizzazione del ciclo di scrittura e lettura per la DRAM
Il diagramma Temporale per le operazioni di scrittura e di lettura per una memori DRAM è riportare nella Figura 6 15 (a) L’indirizzo di riga è inviaro alle linee di indiriz zo della memoria e successivamente il segnale RAS commuta da 1 a 0, caricando 1indi rizzo di riga nel registro degli indirizzi di riga Questo indirizzo è inviato al decodificato re degli indirizzi d i riga al fine di selezionare una riga di celle DRAM Nel frattempo, viene inviato l’indirizzo di colonna e successivamente il segnale CAS commuta da 1 a 0,
63
Circuiti di memoria RAM
327
caricando 1indirizzo di colonna nel regisrio degli indirizzi di colonna Questo indirizzo è inviato al decodificatore degli indirizzi di colonna che seleziona un numero di colonne della RAM, pan al numero di bit dei dati memorizzati nella RAM I dati di ingresso quando ReadiWnte - 0 (scrittura) sono disponibili per un ìnrervallo di tempo uguale ai 1 intervallo in cui è disponibile l'indirizzo di colonna I dati binari che devono essere me monzzati sono prima inviati all’insieme di linee selezionate dal decodificatore degli indi rizzi di colonna e successivamente inviati alle celle DRAM della riga selezionata Quando l segnali CAS e RAS ritornano ai valore 1, il ciclo di scritrura è completo e le celle DRAM contengono i nuovi dati Si noti che ì dari immagazzinari in rutte le altre celle nella riga indirizzata sono sran ripristinati Il diagramma temporale dell’operazione di letrura è riportato nella Figura 6 15(b) Si noti che 1andamenro delle operazioni di indirizzamento è lo sresso In questo caso non viene inviato alcun dato e si ha che il segnale Read/Wnte = 1 invece di 0 I dati con tenuti nelle celle DRAM della riga selezionata sono inviati alle linee dari e individuati utilizzando un opportuno circuito che svolge la funzione di sensore (Sense Amphfier) Il decodificarore degli indirizzi di colonna seleziona ì valori da inviare al Data Output che è abilitato dai segnale di abilitazione Output Enable Durante l’operazione di lettura tut ri l valori della riga indirizzara sono ripristinati Per consentire l’operazione di refresh, occorre aggiungere alla cella DRAM una lo gica appropriata, evidenziata con il colore grigio nel diagramma a blocchi della Figura 6 13 Nel diagramma sono visibili un Contatore di refresh (Refresh Counter) e un Con trailer di refresh (Refresh Controller) 11 contatore è utilizzato per fornire 1indirizzo di ri ga delle celle DRAM sulle quali effettuare il refresh Ciò è essenziale nei casi in cui l’ope razione di refresh richieda che l’indirizzo sia fornito direttamenre dall’interno del chip II contarore viene incrementato a ogni ciclo di refresh e, quando raggiunge 2” —1, dove n rappresenta il numero di righe nell’array DRAM, al refresh successivo si porrà al valore 0 I segnali standard da cui dipende un ciclo di refresh e le corrispondenti tipologie sono di seguirò riportari 1 Refresh del solo segnale RAS Un indirizzo di riga è inviato alle linee di indirizzo e il segnale RAS è portare a 0 In questo caso, gli indirizzi di refresh devono essere forniti dall esrerno, di solito da un circuito integrato (IC), che svolge la funzione di conrroller della DRAM (DRAM controller) 2 Refresh del segnale CAS prima del refresh del segnale RAS II segnale CAS è por taro da 1 a 0 ed è seguito da una commutazione, da 1 a 0, del segnale RAS Ulre rio ri cicli di refresh possono essere eseguiti, cambiando il segnale RAS senza cam biare il segnale CAS Gli indirizzi di refresh, in quesro caso, provengono dal contatore di refresh, che viene incrementare dopo ogni ciclo 3 Refresh nascosto Dopo una normale operazione di lettura o scrittura, il segnale CAS è lasciato al valore 0, menrre il segnale RAS commura ciclicamente Quesre sono le condizioni della modalità di “refresh del segnale CAS prima del refresh del segnale RAS Durante quesro tipo di refresh i valori delle uscite, assunti in corrispondenza della precedente lettura, rimangono validi giustificando, pertanto, il nome di refresh nascosto Sfortunatamente, il tempo richiesto da questo tipo di refresh è percepibile
328
Capitolo 6
Memorie e dispositivi logici programmabili
In tutti i casi descritti, 1operazione di refresh è controllata dai segnali CAS e RAS Si no ri che ciascuna riga del chip DRAM richiede comunque che l’operazione di refresh av venga entro un rempo massimo specificato (refresh time), che di solito oscilla tra 16 e 64 millisecondi (ms) Le operazioni di refresh possono essere eseguite in istanti equispaziati nel refresh time (refresh disrnbuito) o in alternativa, uno dopo l’altro (burst refresh, refre sh a raffica) Una memoria DRAM 4M X 4 ha un refresh rime di 64 ms e 4096 righe sul le quali effertuare un refresh II tempo richiesto per eseguire un singolo refresh è di 60 ns e l’intervallo di refresh, nel caso di refresh distribuirò, è pan a 64 ms/4096 = 15,6 micro secondi (jis) Per eseguire il refresh di tutre le celle occorre un rempo effettivo di 0,25 ms, a fronre di un refresh rime, rempo max destinato al refresh, di 64 ms Per la stessa DRAM, anche il refresh a raffica impiega 0 25 ms II conrroller della DRAM deve dare inizio a una operazione di refresh ogni 15 6 jLls nel caso del refresh distribuito e a 4 096 refresh sequenziali ogni 64 ms nel caso di refresh a raffica Durante un qualunque ciclo di refresh, non si possono avere operazioni di lettura o scrittura Poiché l’unlizzo del re fresh a raffica fermerebbe le operazioni del calcolatore per un periodo piuttosto lungo si preferisce unlizzare il refresh distribuirò Oggi sono in uso diverse varianti della memoria RAM di base Per esempio, la RAM dinamica sincrona SDRAM (Synchronous Dynamic RAM), usa un clock esrerno ed esegue letture multiple in rapida successione da indirizzi successivi con lo sresso indi rizzo di riga
6.4
Memoria RAM a banchi
Le memorie RAM a banchi sono realizzate utilizzando circuiti integrati (RAM chip) che sono disponibili con diverse capacità Se 1unità di memoria, necessaria per una applica zione, è più grande della capacità di un singolo circuirò integrato è necessario unlizzare più circuiti per formare l’unirà di memoria della grandezza richiesta La capacità della memoria dipende da due parametri il numero di parole e il numero di bir per parola Un aumenro nel numero delle parole richiede un aumento della lunghezza dell’indirizzo ogni bir aggiunro raddoppia il numero di parole della memoria Un aumento del nume ro dei bit della parola richiede anche un aumenro del numero delle linee dati in ingresso e in uscita, anche se la lunghezza in bit dell’indirizzo rimane uguale Per descrivere una unirà di memoria RAM multibanco si consideri, inizialmenre, il simbolo grafico della Figura 6 16, relativo a un banco di memoria di capacità pan a 64 K parole di orto bit ciascuna II banco è, quindi carartenzzato da un indirizzo di 16 bit, ot to linee di ingresso e otro di uscita Nel simbolo le 16 linee per l’indirizzo e le otro linee per ì dati (ingresso e uscirà) sono indicare con una linea, detta bus, nella quale si specifì ca la dimensione con una etichetta (uno slash seguito dal numero di linee) L’ingresso CS [Chip Select) seleziona il banco RAM, mentre l’ingresso i&'W'stabilisce, una voIra selezio nato il banco, se sarà effettuala un’operazione di letrura o di scrittura II piccolo tnango lo, in corrispondenza delle uscite, è il simbolo grafico standard per le uscite a tre stati (three state) L’ingresso CS della RAM controlla il comportamento delle linee dati in
64
Memoria RAM a banchi
RAM 64 K X 8 Data Input-----— Address—
DATA
V
-Data Output
— ADRS
Chip Select
CS
Read/Writê
R/W
Figura 6 16 Simbolo per un chip RAM 64 K x 8
uscirà se CS = 0 il banco non è selezionato e rutre le uscite sono nello stato di alta impe denza, se CS = 1 la memoria pilora il bus di uscita e ciascuna linea di usata avrà d valore del bit corrispondenre della parola selezionata Si supponga di voler aumentare il numero complessivo di parole della memoria, utilizzando due o più banchi RAM II numero di parole indirizzagli di una memoria au menta, seguendo la potenza del 2, in quanro ciascun bir aggiunto all’indirizzo raddoppia il numero binario che si può costruire Per esempio, usando due banchi RAM, invece di uno, si raddoppiano il numero di parole e occorre aggiungere un bir airindinzzo Usan do quattro banchi RAM, invece di uno, si quadruplica il numero di parole ed occorre ag giungere due bir all’indirizzo Supponiamo di voler costruire una memoria RAM di 256 K X 8 usando quattro banchi di 64 K X 8, come mostrato nella Figura 6 17 Tutti i banchi sono collegati alle otto linee dari di ingresso Le usate three state possono essere connesse insieme per fòr mare le otto linee dati di uscirà dell intera memoria Questa modalirà di connessione del le uscire è possibile soltanto con le uscite three state Dal momento che, in un qualunque momenro, sarà attivo un solo ingresso CS e gli altri tre banchi saranno disabilitati, il ban co selezionaro piloterà le uscire con ì bit della parola selezionata, mentre le usare degli al tri banchi si presenteranno come circuiri aperti, poiché in stato di alta impedenza (three state) Una memoria di 256 K parole richiede un indirizzo formaro da 18 bit 116 bit me no signifìcarivi dell indirizzo sono applicati agli ingressi indirizzo di tutti i banchi (indiriz zi di colonna) I due bit più significativi sono applicati a un decoder 2—4, le cui quattro uscite pdotano l’ingresso CS dei quattro banchi (indirizzi di riga) La memoria è disabili tara quando l’ingresso E N del decoder è uguale a 0, in questo caso le quartro uscire del de coder sono uguali a 0 e nessuno dei banchi è selezionaro Se il decoder è abihtaro, i bit 17 e 18 dell’indirizzo individuano il banco selezionato Se questi bit sono ambedue uguali a 0, viene selezionato il primo banco, ì restanti 16 bir dell’indirizzo selezionano all interno del banco, una parola il cui indirizzo oscilla fra 0 e 65535 Le successive 65536 parole ap partengono al secondo banco che deve essere selezionato utilizzando un indirizzo i cui pri m i due bit sono 01 mentre ì successivi 16 bit provengono dalle linee di indirizzo comuni L’intervallo di indirizzi in decimale è riportato, per ciascun banco, nella figura in corri spondenza al simbolo telativo
329
330
Capitolo 6
Memorie e dispositivi logici programmabili
Indirizzi Linee
Linee 015
Data Input
196 608 262 143 Figura 6 17 Diagramma a blocchi di una RAM 256 K x 8
Data Output
64
Memoria RAM a banchi
16 Linee Ingresso dati
16 Linee Uscita dati Figura 6 1 8 Diagramma a blocchi di una RAM 64 K x 16
È anche possibile combinare due banchi in modo da formare una memoria che contenga lo stesso numero di parole di un singolo banco ma con un numero doppio di bit per parola La Figura 6 18 mostra l’interconnessione di due banchi 64 K X 8 per for mare una memoria 64 K X 16 Lingresso dati a 16 bit e le linee dati di uscita (16 bit) so no divisi tra ì due banchi Entrambi ricevono lo stesso indirizzo a 16 bit e gli stessi in gressi di controllo CS e R /W Le due tecniche appena descritte possono essere combinate per assemblare un siste ma di memoria di qualunque dimensione, connettendo opportunamente banchi ìdenti ci La memoria avrà un numero di bit per parola che è multiplo del numero di bit per pa rola del singolo banco II numero totale di parole aumenterà di un fattore pari al doppio della capacità del singolo banco Un decodificatore esterno provvede a selezionare i di versi banchi, in base al valore dei bit più significativi dell indirizzo Per ridurre il numero di piedini di un singolo circuito integrato (chip), sono spesso usati terminali in comune per ì dati di ingresso e per ì dati di uscita I terminali in co mune si chiamano bidirezionali, il che significa che, nella fase di lettura, agiscono come uscite mentre, nella fase di scrittura, agiscono come ingressi Le linee bidirezionali sono costruite con buffer three state e sono controllati da una combinazione dei segnali CS e R /W
332
Capitolo 6
Memorie e dispositivi logici programmabili
Unità di memoria RAM dinamica Molti dei principi di progettazione visri per le memorie SRAM (RAM sratiche) sono urilizzabili per la progettazione delle memorie DRAM (RAM dinamiche) Esistono tuttavia alcune differenze nel controllo e nell indinzzamenro della DRAM, da tenere presenti nella progetrazione del conrtoller Le funzioni che il controller deve svolgere sono 1 controllare la separazione degli indirizzi di riga e di colonna rendendoli disponibi li nella opportuna finestra temporale 2 generare, con la remporizzazione opporruna, ì segnali GAS e RAS per consennre le operazioni di lettura, scnrtura e refresh 3 eseguire le operazioni di refresh negli mrervalli specificati 4 generare ì segnali relativi allo staro della memoria per il resto del sisrema, indican do, per esempio, lo staro busy durante l intervallo di refresh della memoria Il controller della memoria DRAM è pertanto un complesso circuirò sequenziale, sin cronizzato dal segnale di clock della CPU esterna
6.5
Dispositivi logici programmabili______________
Nelle successive quartro sezioni si descnveranno cinque npi di dispositivi logici pro grammabili, PLD memorie a sola lettura (ROM, read only memory), 1 dispositivi a ma rnce logica programmabile (PLA programmable logie array), ì dispositivi logici a matrice programmabile (PAL®, programmable array logie), ì dispositivi logici complessi program mabih (CPLD, complex programmable logie devici) e 1 dispositivi a matrice di porte prò grammabih sul campo (FPGA,fieldprogrammable gate array) Nei PLD tecniche diverse di programmazione sono utilizzate per creare o interrompere interconnessioni, costruire tabelle di ricerca (lookup table) e controllare la commurazione dei transistor Nel seguito, si farà riferimento alle varie Tecnologie relative a queste rie applicazioni La prima applicazione che viene analizzata è il conrrollo delle connessioni La ree nologia di programmazione più antica è basata sull utilizzo di diodi fusibili In un PLD ciascuno dei punti di programmazione è una connessione formata da un diodo Quando una tensione più elevata del normale viene applicata al diodo, l’alta corrente che si origi na ìnrerrompe la connessione fondendo il diodo 1 due stati di connessione, CHIUSO e APERTO, sono rappresentari rispettivamente dal fusibile inratto o bruciato Una seconda tecnologia di programmazione per il controllo delle connessioni è de nominata programmazione a maschera, o maskprogramming Viene eseguita direttameli te dal produttore, durante gli ultimi passi del processo di fabbricazione del chip Le con nessioni vengono fatte o non fatte negli strati di metallizzazione, che rappresentano lo strato conduttore del chip La struttura di questi strati è determinata in dipendenza del la funzione del chip e viene realizzata durante il processo di fabbricazione La procedura
65
Dispositivi logici programmabili
è costosa poiché il venditore addebita al cliente, una rantum, anche il cosro per la petso nalizzazione del dispositivo Per questa ragione il mask programming è economico sol tanto se vengono ordinate grandi quantità di PLD che usano la stessa configurazione in modo da suddividere su più pezzi il costo per la personalizzazione Una rerza Tecnologia di programmazione per il controllo delle connessioni è deno minata antifuse (aree dieletrriche non conduttrici) Come si intuisce dal nome, la nuova tecnologia rappresenta l’opposro della tecnica basata sull utilizzo del fusibile Lelemento base è una piccola arca in cui due conduttori sono separati da materiali ad alta resisten za, che agisce come circuito APERTO Applicando ai due conduttori una tensione più elevata del normale, il marenale che separa ì condutron si fonde ed assume una resisten za elettrica molro bassa agendo, di fatto, come una connessione CHIUSA Le rre tecnologie appena presentate sono permanenti ed essendo la loro program mazione il risultato di un processo fisico irreversibile, ì dispositivi ortenuti non sono riprogtammabili In caso di programmazione errata, il dispositivo non può essere rmtiliz zato e va quindi scartato Un’altra tecnologia di progtammazione, applicabile al controllo della connessione, è basata sull’uso di una cella SRAM da un bit che pilota la base di un transistor MOS n channel, posizionara nel punro che, utilizzando la programmazione, sarà connesso o non connesso Se il bit memorizzato nella cella è 1 il transistor è in conduzione e la connes sione tra source e drain corrisponde a un circuito chiuso Se il bir memorizzato è 0 il transistor è spenro e la connessione tra tra source e drain corrisponde a un circuito aper ro Poiché il conrenuro della cella SRAM può essere modifìcaro elettronicamente il di sposirivo è facilmente riprogrammabile Per contro la memoria SRAM è volatile per cui anche la configurazione dei PLD è volatile, il dispositivo va quindi «programmato ad ogni accensione La tecnologia SRAM è ideale, oltre che per il controllo delle connessioni, anche per la costruzione di tabelle di consultazione (look up tables) utilizzate per la programma zione In questo caso, gli ingressi della tabella sono gli indirizzi per leggete la SRAM e le usate della tabella sono le uscire dati della SRAM, cioè 1 valori immagazzinati in corri spondenza delle parole indirizzate Una terza applicazione delle tecnologie di programmazione riguarda il controllo della commutazione dei rransisror La tecnologia più diffusa prevede 1immagazzinamen ro di una carica su un particolare condensatore, denominarci porta galleggiante [floating gate) La porta è posizionata sotto la base di un transistor MOS, isolata tramite dielettn co Una canoa negativa immagazzinata sul floating gate impedisce al transistor di passa re in conduzione, cioè nello stato ON In assenza di tale carica, applicando sulla sua ba se una tensione a livello logico HIGH, il transistor passa in conduzione (stato ON) Poiché il processo di accumulazione e scarica del floating gate è reversibile, è possibile la cancellazione e la successiva riprogrammabilità del dispositivo I PLD basati su questa tecnologia sono denominati cancellabili (erasablè) o elettricamente cancellabili (electn caily erasable) Per i PLD cancellabili, la cancellazione avviene per esposizione a intensi raggi ultravioletti per un certo periodo di tempo I PLD cancellati possono essere prò grammati in modo usuale utilizzando, per fissare le cariche sui transistor, livelli di ten sione più elevati dei valori nominali
333
334
Capitolo 6
Memorie e dispositivi logici programmabili
I PLD elettncamenre cancellabili possono essere cancellati utilizzando un process simile al processo di programmazione applicando vaioli di Tensione più elevati di quelli usati per I alimentazione Poiché 1 transisror di controllo prevengono o consentono una connessione tra so uree e drain, la tecnica appena descritra rappresenra una forma di con trollo della connessione, consentendo di scegliere rra (1) sempre APERTO oppure (2) APERTO o CHIUSO, in dipendenza del livello di tensione (HIGH o LOW) applicara al Transistor Nel seguirò saranno prese in considerazione quartro Tipologie di dispositivi logici programmabili Per ognuno di essi si descriverà la struttura e si indicheranno le remolo gie di programmazione tipicamente urihzzate per la loro implementazione
6.6
Memorie a sola lettura (ROM)
Una memoria a sola Iertura ROM (read only memory) è un dispositivo in cui sono ìm magazzinare informazioni binarie in modo permanente Le informazioni sono annegare (embedded) nel circuirò e ne fanno parte integiante II progertisra, infetti, una volra co nosciute le informazioni da memorizzare, utilizzando una procedura di programmazio ne, costruisce le necessarie interconnessioni Le ROM così cosrruite manrengono le informazioni, anche in assenza di alimentazione, da qui l’appartenenza alla classe delle memorie non volarili Nella Figura 6 19 è riportaro il diagramma a blocchi di una ROM con k ingressi ed n uscire Gli ingressi sono utilizzati per fornire l’indirizzo mentre le uscire forniscono 1 bit della parola immagazzinata, selezionata tramite l’indirizzo stesso li numero di parole di una ROM è limitato dal numero k di linee di indirizzo con le quali si possono selezio nare 1 k parole Poiché non sono consentite operazioni di scrirtura, le ROM non posseg gono ingressi per introdurre dati 1 circuiri inregrati ROM hanno ìnolrre uno o più in gressi abiliranri e uscire a rre stati per facilitare la cosrruzione di strutture mulriple di maggiori dimensioni Per esempio, una memoria ROM di 32 parole di 8 bit ciascuna, usa cinque linee di ingresso che generano 32 combinazioni binarie, da 0 a 31 La Figura 6 20 mostra I orga nizzazione logica interna di una memoria ROM I cinque ingressi usati per gli indirizzi di memoria vengono decodificati in 32 uscire distinre da un decoder 5-32 Le 32 uscite sono connesse a ciascuna delle otto porte OR, per mezzo di connessioni programmabili Nel diagramma viene urilizzara, allo scopo, la simbologia delle porte logiche con ingres si a marrice, ripica dei circuiti logici complessi (vedere la Figura 6 1) Ciascuna porta OR
k Ingressi (indinzzo)-
ROM 2k x n
Figura 6 1 9 Diagramma a blocchi di una ROM
n uscite (dati)
66
Memorie a sola lettura (ROM)
335
Figura 6 20 Logica interna di una ROM 32 x 8
ha 32 ingressi e ciascuna usata del decodificatore è connessa a uno degli ingressi di eia scuna porta OR per mezzo di un fusibile Dal momenro che ciascuna porta OR ha 32 connessioni programmabili interne e dal momento che ci sono otto porte OR, la ROM contiene 32 X 8 = 256 connessioni programmabili In generale una ROM conrerrà un decodificatore interno k - 2k linee e n porte OR ciascuna con 2k ingressi, connessi, ar Traverso connessioni programmabili, a ognuna delle uscite del decodificatore Il contenuto di una ROM è descritto da una tabella di venta che riporta, per furti gli indirizzi possibili, il contenuro della parola memorizzara Per esempio la tabella di ve rità (Tabella 6 2) riporta ì cinque ingressi e i corrispondenti 32 indirizzi possibili, ciascu no relativo a una parola di 8 bit II contenuto di ogni parola è riportato nella parte destra della tabella, ciascun bit sotto la cornspondenre linea di uscirà Per semplicità la Tabella 6 2 mostra solranto le prime quattro e le ultime quattro parole contenute nella memoria La tabella completa includerà 1 elenco di tutte le 32 parole Una procedura hardware incide la memoria ROM secondo le connessioni riporta re dalla tabella di verità La programmazione di una ROM secondo la Tabella di verità 6 2, genera le configurazioni riportate nella Figura 6 21 In corrispondenza di ciascuno 0, presente nella Tabella di verità, si ha un circuito APERTO mentre in corrispondenza di ciascun I si ha un circuirò CHIUSO Per esempio, la tabella richiede che la parola a 8 bit 10110010 sia memorizzata nel l’indirizzo 00011 I quartro 0 presenri nella parola sono programmati con allertanti cir culti aperri tra l’usata 3 del decodificatore e gli ingressi delle porte OR associate con le uscite Afa A$, A 2, e A 0 I quattro 1 presenti nella parola sono invece marcati con altrer ranre croci nel diagramma e, conseguentemente, verranno programmati con dei circuiti chiusi in corrispondenza delle uscite del decoder A7, A 5>A4, e Ai Quindi se l’ingresso
336
Capitolo 6
TABELLA 62
Memorie e dispositivi logici programmabili
Tabella di venta (parziale) della R O M Uscite
Ingressi 14
fo
b
h
7
A*
A5
A4
A3
A2
A,
Aq
0
1
0
1
1
0
1
1
0
lo
a
0
0
0
0
0
1
0
0
0
1
1
1
0
1
0
0
1
0
1
1
0
0
0
1
0
1
0
0
0
1
1
1
0
1
1
0
0
1
0
1
1
1
0
0
0
0
0
0
1
0
0
1
1
1
1
0
1
1
1
1
0
0
0
1
0
0
0
0 0
1
1
1
1
0
0
1
0
0
1
0
1
0
1
1
1
1
1
0
0
1
1
0
0
1
1
della ROM è 00011, turre le usare del decodificatore saranno 0, ad eccezione dell’uscita 3 che sara uguale ad 1 In queste condizioni il segnale si propagherà, attraverso ì circuiti chiusi, alle porre OR e quindi alle uscite^, A$, A4, c A h menrre le altre quattro uscire resteranno a 0 Come risultaro, la parola 10110010 immagazzmara nella memoria verrà inviata alle orto uscire dari Per programmare una ROM si utilizzano quattro tecnologie Se si utilizza la prò grammazione tramite le maschere durante la fabbricazione, la ROM è denominata semplicemenre ROM Se si utilizzano fusibili, la memoria può essere programmata dall'u rente e in quesro caso essa è denominata PROM (ROMprogrammabile) Se si utilizza la Tecnologia cancellabile con base fluttuante, la memoria è denominata EPROM (erasable programmale ROM, ROM cancellabile e programmabile) Infine se si utilizza la tecno logia cancellabile elettricamente, la memoria è denominata EEPROM ovvero E2PROM (electncally erasable, programmable ROM, ROM programmabile e cancellabile elettrica menre) La scelta della Tecnologia da utilizzare dipende da tanri fartori, incluso il nume ro di ROM identiche da produrre, quanto rempo deve durare la programmazione effer tuata, il grado di nprogrammabihtà e le prestazioni, in termini di nrardo
Implementazione dì circuiti combinatori mediante ROM Come già visto nel Paragrafo 3 5, un decodificatore, con ir variabili di ingresso, genera 2k mintermim Inserendo porte OR per sommare 1mintermmi, ottenuti con le k variabili, si può costruire una qualunque funzione booleana e quindi il relativo arcuito combinato rio Una memoria ROM è essenzialmente un dispositivo composto da un decodificatore e da porte OR. Connettendo solo 1 mintermini che fanno parte della funzione speafìcata, la ROM si comporterà, dal punto di vista delle usate, come un circuito combinatorio
66
Memorie a sola lettura (ROM)
In termini del suo funzionamento interno, una ROM può essere interpretata in due modi diversi come strumenro di memoria che immaga2zina un insieme fìsso di pa role e come circuito che implementa una funzione combinatoria Da quesr’ultimo pun to di vista, ciascun terminale d’uscirà è l’uscita di una funzione boolena espressa come somma di minrermmi La ROM della Figura 6 21 può quindi essere considerata come un circuirò combinatorio con otto uscite, in cui ciascuna uscirà è funzione delle cinque variabili di ingresso L’uscita A 7, per esempio, è la somma dei mintermim di seguito ri porrata (i puntini rappresentano i mmtermim da 4 a 27, non riportati, per semplicità, nella figura) A 7(I4, /* / 2, /„ 70) = 2 m{0, 2, 3, , 29) Una connessione (circuito chiuso) include il relativo mintermine nella somma, menrre una non connessione (circuito aperto) non include il mintermine dalla somma Le memorie ROM sono ampiamente utilizzate per implementare, in modo semph ce e diretto, circuiri combinatori complessi, a partire dalla loro rabella di verirà e sono utili per effettuare le conversioni da un codice a un altro (per esempio dal codice Gray al codice BCD), oppure possono implementare operazioni aritmetiche complesse come la moltiplicazione e la divisione In generale, le memorie sono utilizzate in tutte le applica zioni che richiedono un moderato numero di ingressi e un grande numero di uscire
Figura 6 21 Programmazione della ROM secondo la Tabella 6 2
337
338
Capitolo 6
Memorie e dispositivi logici programmabili
In pratica, quando si prevede di realizzare un circuito combinarono mediante ROM, non è necessario progettare la logica o illustrare le connessioni interne dell unità II progettista deve soltanto specificare la ROM che deve essere utilizzata (per nome o per co dice) e fornire la tabella di verità La tabella di verità contiene già tutte ie informazioni per programmare una memoria ROM e non necessita di alcun diagramma logico aggiuntivo Progetto di un circuito combinotorio utilizzando uno ROM
Ptogertare un circuito combinarotio utilizzando una ROM II circuito da proger tare riceve in ingtesso un numeto bmatio a 3 bit e deve date m uscirà un numero binario pan al quadrato del valore applicare all mgtesso Il pnmo passo» quando si vuole progertare un citcuito combinarono, prevede la cosrruzione della tabella di ventà e nella maggior parre dei casi, questo è tutro ciò che serve In alrti casi invece, si può utilizzare soltanto una parre della tabella di verità, sftuttando opportune ptopnetà delle variabili uscita Nella Tabella 6 3 è riportata la tabella di verità del citcuiro combinatorio da progerrate Per il citcui to m esame, per comprendere tutu ì possibili casi, sono necessan tte ingtessi e sei uscite Si noti petò che 1uscirà B0 è sempte uguale all ingresso A0, pet cui basta connettete B0con A0 menrre 1uscita Bl è sempre 0, per cui questa usata può es sete implementata come una cosranre La ROM deve quindi generare soltanto quatrro uscire menrte le aJrte due sono disponibili immediaramenre La gran dezza minima tichiesra per la ROM è 8 x 4, dal momento che la ROM deve ave re rre ingressi, che specificano orro parole, e quanto uscite Nella Figuta 6 22 è il lusrtata rimplemenrazione della ROM il diagramma a blocchi della Figuta 6 22(a) illusrta le connessioni ticinesi« pet il circuirò combinatolo, menrte la ta bella di ventà della Figura 6 22(b), tiporta le informazioni necessarie per prò grammare la ROM
TABELLA 6 3
Tabella di verità per il circuito dell Esempio 6 1
Ingressi
Uscite ®4
b3
®2
Bj
Bo
Deamale
0
0
0
0
0
0
0
0
0
0
0
0
1
1
0
0
0
1
0
0
1
0
0
1
0
0
1
0 1 0 1
0 0 1 1
1 1 0 1
0 1 0 0
0 0 1 0
0 0 0 0
0 1 0 1
4 9 16 25 36 49
A2
A,
Ao
Bs
0
0
0
0
0
I
0
1
0
0 1 1 1 1
1
0 0 1 1
66
Ó 0 0 0 1 1 1 1
Memorie a sola lettuta (ROM)
Ai
Aq
0 0 1 1 0 0 1 1
0 1 0 1 0 1 0 1
Bs 0 0 0 0 0 0 1 1
0 0 0 0 1 1 0 1
B3 0 0 0 1 0 1 0 0
b2
0 0 1 0 0 0 1 0
(b) Tabella di venta della ROM
(a) Diagramma a blocchi
Figura 6 22 Implementazione della ROM dell Esempio 6 1
Le PROM rappresentano uno dei tre tipi più importano di PLD I diversi tipi di PLD differiscono tra di loro per la posizione delle connessioni progtammabili della matrice AND OR La Figura 6 23 mostra la disposizione delle connessioni per ì tre casi La me mona programmabile a sola lertuta (PROM) è catattenzzata da una matrice di AND fìs sa, cosutuita da un decodificatore e da connessioni programmabili per le porre OR di uscita Le PROM implementano le funzioni booleane nella forma somma di mintermi ni I dispositivi logici a marnce programmabile (PAL®) sono caratterizzati da una marn ce di AND con connessioni programmabili e da una matrice di OR fìssa Le porte AND
Ingressi
►ì)
Griglia fissa di perte AND (deceder)
C on n o rs oni preqr
nrr ah i
Griglia programmabile di perte OR
■Uscite
(a) Memorie programmabili a sola lettura (PROM programmable read only memory)
(b) Dispositivi a griglia di logica programmabile (PAL programmable array logie)
(c) Dispositivi a griglie programmabili di logica (PLA programmable logie array)
Figura 6 23 Configurazione di base dei tre tipi di dispositivi in logica programmabile
339
340
Capitolo 6
Memorie e dispositivi logici programmabili
sono programmate per fornire 1rermini prodotto per le funzioni booleane, le quali sono sommare logicamente in ciascuna porta OR I disposinvi a mattice logica programmabi le (PLA) sono 1 PLD più flessibili, in quanto sono caratterizzati da connessioni program mabili sia per la matrice di AND che per quella di OR I termini prodotto, generari dal la matnce di AND, possono essere condivisi da qualunque porta OR al fine di costruire la somma di prodotto richiesta Le varie denominazioni PLA, PAL® sono nare per indi care dispositivi, non molto diversi, prodorti durante lo sviluppo iniziale dei PLD Lim plemenrazione di circuiri combinaton con dispositivi PLA e PAL® sarà discussa nelle successive due sezioni
6.7
Dispositivi a matrice logica programmabile
Un circuirò PLA è concettualmenre simile a una PROM, ma, a differenza di quest’ulti ma, non genera la decodifica completa delle variabili di ingresso e, quindi* non genera tutti ì mintermini II circuito decodificatore è sostituito da una marrice di porte AND che può essere programmata per generare alcuni termini prodotto delle variabili di in gresso I rermini prodorto ottenuti sono poi connessi seletnvamente alle porte OR per costtuire le somme corrispondenti alle funzioni booleane nchiesre La logica inrerna di un PLA con tre ingressi e due uscite è riporrara nella Figura 6 24 II circuirò è troppo piccolo per essere economicamente conveniente, ma viene ri portare per analizzare una ripica configutazione logica del PLA II diagramma utilizza la simbologia delle matrici di porte logiche Ciascun ingresso passa sia atrtaverso un buffer sia attraverso un invertirore, entrambi rappresenrari nei diagramma da un simbolo grafi co composito che genera la variabile sia in forma diretra che in forma negara, rigeneran do il fan our dell’ingresso Un primo gruppo di connessioni programmabili connette turte le variabili di ingresso (sia dirette che negare) agli ingressi di ciascuna porta della matrice di AND, così come indicato dall’intersezione rra le linee vemcali e orizzontali Un secondo gruppo di connessioni programmabili connette le uscite delle porte AND agli ingressi di ciascuna porta della matrice di OR Ciascuna porta OR è connessa poi a una porta XOR a due ingressi, in cui il secondo ingresso può essere programmato sul livello logico ALTO (1) o BASSO (0), a seconda che sivoglia invertire o meno la somma di prodotti realizzata Infatti, ricordando che X © 1 ~X, f uscirà viene invertita quando il secondo ingresso della relativa porta XOR è connesso a 1 Analogamenre, ricordando che X © 0 =X, l’uscita rimane invariata quando il secondo ingresso della relativa porta XOR è connesso a 0 Le funzioni booleane implementate nel PLA della figura sono Fi = AB + A C + ABC F2 = AC + BC Nella figura, ì rermint prodotto generati da ciascuna porta AND sono etichetran sull uscita della porta corrispondente II termine prodotto è costruito a partire dalle variabili di ingresso collegare, con connessioni CHIUSE (una croce), agli ingressi della porta AND L’uscita della porta OR fornisce la somma logica dei termini prodotto selezionati L’usci
67
Dispositivi a matrice logica programmabile
Figura 6 24 PLA con tre ingressi, quattro termini prodotto e due uscite
ra può essere in forma diretta o complemenrata, in base alla programmazione della con nessione relativa al secondo ingresso della porta XOR La mappa delle bruciature per un circuirò PLA può essere specificata in forma tabel lare La tabella di programmazione relativa al PLA della Figura 6 24 è riportata nella Ta bella 6 4 La tabella consisre di tre sezioni nella prima sezione sono elencati gli indici dei
TABELLA 6 4
Tabella dt programmazione per la PLA della Figura 6 24 Ingressi
AB AC BC ABC
Uscite
Termine prodotto
A
B
c
1
1
0
2
1
tn Fi
w F2
—
1
—
—
1
1
1
2
—
1
1
—
1
4
0
1
0
I
—
341
Capitolo 6
Memorie e dispositivi logici programmabili
termini prodotto, la seconda sezione specifica quali connessioni sono necessarie tra gli in gressi (diretti o negati) e le porte AND, la terza sezione specifica le connessioni tra le por te AND e le porte OR. Per ciascuna variabile d’usara, la forma diretta o negata è indivi duata con 1etichetta T (true) o C (complemenr) nella colonna cornspondenre Ciò stabilisce se la connessione del secondo ingresso della porta XOR, relanva alla variabile di usara, deve essere un 1 o uno 0 logico, rispettivamente I termini prodotto, riportati sul la sinistra, non fanno parte della tabella, ma sono inclusi soltanto per riferimento Per cia scun termine prodorto, gh ingressi sono etichetta« con 1, 0 o — (tratto) Se una variabile appare nel rermine prodotto in forma diretta, la variabile d’ingresso corrispondente è eti chettara con 1, se la variabile appare complementata, la variabile d’ingresso cornsponden re è erichettata con un 0, se la variabile è assente, essa è etichettata con un tratto Le connessioni tra gli ingressi e le porte AND sono specificate nella tabella sorto la colonna Input In questa colonna un 1 specifica un circuirò CHIUSO che connerte la variabile d’ingresso, m forma diretta, alla porta AND, uno 0 specifica un circuirò CHIUSO che connette la variabile d ingresso, in forma complementara, alla porta AND, mentre un tratto specifica un circuirò APERTO tra la variabile di ingresso, sia in forma direrta che in forma complemenrata, e la porta AND Si assume che un terminale APERTO sull’ingresso di una porta AND si comporti come un 1 logico Le connessioni tra le porte AND e OR sono specificate nella colonna Output Nel la colonna relanva a una variabile di uscita, si troverà un 1 per i Termini prodotto che so no inclusi nella funzione In questo caso, un circuito CHIUSO connetterà l’uscita della porra AND e 1ingresso della porta OR cornspondenre I termini prodotto etichettati con un tratto specificano invece un circuito APERTO, assumendo che il circuito aperto subingresso di una porta OR si comporti come uno 0 logico Infine, una uscita etichet tata con T (rrue) denota che il secondo ingresso della porta XOR cornspondenre è con nesso a 0, mentre C (complemenr) specifica una connessione a 1 La dimensione di un circuito PLA è definita dal numero di ingressi, dal numero di termini prodo tro e dal numero di uscite Un tipico circuito PLA ha 16 ingressi, 48 ter mini prodotto e 8 uscite Per n ingressi, k termini prodotto e m uscire, la logica ìnrerna del PLA consiste di n porte buffer mverrer, ¿porte AND, m porte OR e m porte XOR Esistono 2 n x k connessioni programmabili tra gli ingressi e la matrice di AND, k x m connessioni programmabili tta la matrice di AND e la matrice di OR ed m connessioni programmabili associate alle porte XOR Per progettare un circuito PLA, non è necessario mostrare le connessioni interne dell’unirà, come visro m precedenza nella Figura 6 24, serve solranto la tabella di prò grammazione che contiene le informazioni necessarie per implementare le funzioni logi che nchiesre Così come per la ROM, un circuito PLA può essere programmato o m mo do permanente, dal produttore in base alle specifiche del clienre o diretramente dall’urente In quesr’ultimo caso il PLA viene chiamaro circuito FPLA {field programma ble logtc array, marnce logica programmabile sul campo), e per la sua programmazione è nchiesro l’uso di un apposiro apparato Durante la fase di progettazione di un circuito combinatorio da realizzare con un PLA, è opportuno ridurre il numero di prodotti disrmti, e quindi la complessità del cir cuito Un numero ridotto di prodotti può essere ottenuto minimizzando, con le note Tecniche, la funzione booleana In realtà poiché sono disponibili tutte le variabili di in
67
Dispositivi a matrice logica programmabile
gresso, il numero di letterali presenti in un prodotto è poco importanre È sempre op portuno, comunque, evitare lerterali aggiuntivi che causano problemi nella fase di venfica del circuito e ne riducono la velocita Infine dovrebbero essere semplificate entrambe le forme, dirette e negate, di ciascuna funzione per vedere quale di esse può essere espres sa con il minor numero di termini prodotto e quale di esse può fornire rermmi prodotro da condividere con le altre funzioni Progetto di un circuito combinotorio con l'uso di un PLA
Implementare con un PLA le due funzioni booleane F M B C) = 2w (0, 1,2 4) F2(A B C) = 2 m(0 5 ,6 ,7 )
Le due funzioni, sia in forma diretta sia in forma negata sono state semplificate utilizzando la mappe di Karnaugh riportate nella Figura 6 25 La combinazione che fornisce il minimo numero di termini, nella forma di somma di prodotto è Fi = AB + AC + BC F2 —AB + AC + ABC
sBC
A \
xBC
B
01
11
10
1
1
0
0
0
0
0
1
1
1
01
11
10
1
1
0
1
0
0
A \
B 00
00
C
C
Fj = AB + AC + ABC F2 = AC + AB + ABC
F-j = AB + AO + BO e AB + AO + BO
Tabella di programmazione del PLA Uscite Termini Ingressi (C) prodotto ABC F: AB
1
1 1 -
1
(T)
F2 1
AC
2
1 - 1
1
1
BC
3
- 1 1
1
-
ABC
4
0 0 0
-
1
Figura 6 25 Mappe di Karnaugh e tabella di programmazione per l Esempio 6 2
343
344
Capitolo 6
Memorie e dispositivi log»c» programmabili
La semplificazione dà come risultato quattro termini prodotto distinti AB, AC BC, e ABC La tabella di programmazione per questa combinazione, è riportata sempre nella Figura 6 25 Si noti che 1uscita F\ è 1usata desiderata, anche se, nella tabella, essa è enchertata da una C II circuirò AND-OR, infatti genera la funzione Fx che è disponibile all’usata della porta OR La porta XOR compie menra quindi la funzione F\ per produrre 1uscita vera Fi Il circuirò dell'Esempio 6 2 è staro presenraro solo a fini didartici ed è rroppo semplice perché sia economicamenre conveniente implementarlo con un circuito PLA Un ripico PLA ha numerosi ingressi e numerosi termini prodotto La semplificazione di funzioni booleane complesse, con molte variabili è effettuata per mezzo di programmi di sempli fìcazione auromanci che girano su calcolatori elerrronici Un programma di progerrazio ne assistira provvede, infarti, alla semplificazione delle funzioni, sia in forma diretta sia negara, e alla ricerca della implementazione economicamenre più vantaggiosa La rabella di programmazione del circuito PLA è quindi generara auromaricamenre e la mappa di connessione viene esrrarra auromaricamenre dalla tabella e applicata al FPLA È l’appa rato di programmazione infine che include o rimuove le connessioni nel circuito ìnre graro
6.8
Dispositivi logici a matrice programmabile
I dispostivi logici a marnce programmabile PAL® appartengono alla categoria del di spositivi a marrice programmabile PLD e si cararrerizzano per la presenza di una matrice di porre OR fìssa e di una matrice di porre AND programmabile Poiché solranro le por re AND sono programmabili, i circuiti PAL sono più facili da progerrare ma anche me no flessibili dei PLA La Figura 6 26 mostra la configurazione logica di un ripico dispo sirivo PAL con quarro ingressi e quattro uscite Ciascun ingresso ha una porta buffer-inverter e ciascuna uscita è generara da una specifica porta OR. Il dispositivo ha quarrro sezioni, ciascuna delle quali è composta da un albero AND OR a tre rami, owe ro con tre porre AND programmabili Ciascuna porta AND ha 10 connessioni di in gresso programmabili, indicare nel diagramma da 10 linee verricali, ciascuna delle quali interseca una linea orizzontale cornspondenre all’ingresso multiplo della porta AND Una delle uscite è riportata in ingresso, rramire una porta bufifer-inverter, e può essere connessa in retroazione all’ingresso delle alrre sezioni I dispostivi PAL disponibili in commerciali hanno moire più porre del dispositivo della Figura 6 26 Un piccolo circuito integrato PAL ha tipicamente otto ingressi, orto uscire e orro sezioni, ciascuna delle quali consisre di un albero AND-OR a orro rami Ciascuna uscirà è poi pilotata da un buffer three-srare e rerroazionara in ingresso Uriliz zando un segnale variabile che pilota e abilita il buffer three-srare, rutti gli ingressi e le uscite del dispositivo possono essere nprogrammare per essere soltanro ingressi, soltanto uscire o bidirezionali Tra la marnce logica e i buffer rhree stare di uscita, sono spesso in clusi alcuni fhp flop, questo consente la realizzazione di circuir! sequenziali dal momen to che ciascuna uscita è rerroazionata in ingresso fino alla marnce di AND, trami re una porta buffer inverter
68
Dispositivi logici a matrice programmabile
Ingressi porte AND
Figura 6 26 Dispositivo PAL con quattro ingressi quattro uscite e struttura a tre AND OR
Nella progettazione basara su dispositivi PAL, le funzioni booleane devono essere semplificare per essere conrenure in una singola sezione Non sempre ciò è possibile Conrrariamenre ai PLA, un rermine prodorro non può essere condiviso rra due o più porre OR, quindi, ciascuna funzione deve essere semplificata senza considerare termini
345
346
Capitolo 6
Memorie e dispositivi logici programmabili
prodotto, eventualmente comuni a più uscite II numero di prodotti per ciascuna sezio ne è fisso e se il numero di termini della funzione è troppo grande, potrebbe essere ne cessario utilizzate due o più sezioni per implementare una singola funzione booleana In questo caso, è vantaggiosa la presenza di eventuali termini comuni Progetto di un circuito combinotorio utilizzondo un PAL
Come esempio di programmazione di un dispositivo PAL che fa parte del prò getto di un circuito combinatorio si considerino le seguenti funzioni booleane date come somme di minternimi WA, B C D) = 2 m(2 12, 13) X(A B, C D) = 2 m{7, 8 9,10 11 12, 13 14 15) Y{A B C D) = 2 m(0, 2, 3, 4 , 5 , 6 , 7 8 10 11, 15)
Z(A B, C D) = 2 m{ 1 2 8 12 13) Semplificando le funzioni in modo che esse abbiano il minimo numero di termi ni prodotto, si ottiene W= ABC+ ABCD X = A + BCD Y =AB+CD + BD Z - ABC + AB CD + A C D + ABCD = W + A € D + ABCD Si non che la funzione Z ha quattro termini prodotto ma la somma logica di due di questi è uguale alla funzione W Pertanto, utilizzando 1uscita W, è possibile ri durre da quattro a tre il numero dei termini di Z in modo che la funzione possa essere contenuta nel dispositivo PAL della Figura 6 26 La tabella di programmazione per un circuito PAL è simile alla tabella utilizzata per i PLA, tranne che qui solo gli ingressi delle porte AND devono essere programmati La Tabella di programmazione 6 5 è relativa al circuito PAL della Figuta 6 26 La tabella è divisa in quattro sezioni con tre termini prodotto per ciascuna sezione, in modo da esse re conforme al dispositivo PAL della Figura 6 26 Le prime due sezioni sono caratteriz zate da due termini prodotto che implementano solo le funzioni Booleane (W c X ) Po sizionando W nella prima sezione del dispositivo, la connessione in retroazione da .FI alla matrice di ingresso riduce la funzione Z a tre termini Nella Figura 6 27 è riportata la mappa delle connessioni (connection map) per il disposirivo PAL Nel diagramma, per ciascuno 1 o 0 presenti nella tabella si etichetta la connessione corrispondente (variabile diretta o negara, rispettivamente) con il simbolo di circuirò CHIUSO Per ciascun tratto ( ), invece, si etichetta 1ingresso corrispondente, sia diretto che negaro, con connessioni a circuito APERTO Se la porta AND non è uri hzzara, si lasciano turti ì suoi ingressi come circuiri CHIUSI Infatti, in quesro caso la porta riceve in ingresso sia ja forma diretta che la forma negara di ciascuna variabile e quindi, ricordando che A A = 0, l’uscita della porta AND è sempre 0
69
TABELLA 6 5
Dispositivi logici programmabili VLSI
Tabella di programmazione per I Esempio 6 3 Ingresso AND
Termine prodotto
A
B
c
D
w —
1
1
I
0
—
2
0
0
1
0
—
1
—
—
—
—
—
1
1
1
—
Uscite
ABC + ÄBCD
3 4 5
A + BCD
6
7
0
1
—
—
—
8
—
—
1
1
—
9
—
0
—
0
—
10
—
—
—
—
1
11
1
—
0
0
—
12
0
0
0
1
—
y=
AB + CD + BD W +a c d + ÄBCD
Come per tutti i PLD, la progettazione di dispositivi PAL è facilitata dall utilizzo di tecniche assistite da calcolatore La realizzazione delle connessioni si effettua con una unità di programmazione hardware esterna
6.9
Dispositivi logici programmabili VLSI________
Il vantaggio di utilizzare dispositivi PLD nella progettazione di sistemi digitali è legato alla possibihrà che essi hanno di implementate una funzione logica complessa all interno di un singolo circuito integrato, mediante programmazione delle connessioni Per fun zioni ancora più complesse, la tecnologia più appropriata è la tecnologia di integrazione su larga scala VLSI {very large scale integration) con la quale si progettano sistemi digitali che contengono milioni di porte all’interno di un singolo chip Esisrono rre modi per la progettazione di circuiti VLSI La progetrazione fu ll custom, prevede che per un intero chip essa sia condotta completamente, fino al più pie colo dettaglio del layour Questa modalità è molro costosa e può essere giustificata sol tanto per circuiri integrati veloci, molro compatti e da realizzare in grandi quantità Una tecnica relativamente simile è la progettazione con librerie standard (standard celi design), in cui gran parte del progerto è staro già messo a punro in precedenza oppure faceva par te di progetti precedenri Le patti già progettate sono quindi connesse per formare il cir cuito integrato desidetato La progettazione con librerie standard offre una minore den-
347
348
Capitolo 6
Memorie e dispositivi logici programmabili
Ingressi porte AND
Figura 6 27 Mappa di connessione del dispositivo PAL dell Esempio 6 3
sità di integrazione e minori prestazioni rispetto alla progettazione full custom È carat terizzata da livelli di costo intermedio II terzo approccio alla progettazione VLSI usa ma trici di porte logiche {gate array), cioè una struttura di porte logiche costruite su silicio e
69
Dispositivi logici programmabili VLSI
ripeture migliaia di volte In dipendenza della tecnologia utilizzata un circuito integraro conrerra da 1 000 fino a qualche milione di porte logiche La progettazione di disposiri vi gare array deve individuare sia la modalità di interconnessione delle porte sia la loro disposizione nel chip Molti passi del processo di fabbricazione sono indipendenri dalla funzione logica finale riuscendo in questo modo ad essere poco costosi poiché riutilizza bili in numerosi progetti Alrn passi sono però necessari per ìnrerconnettere le porte lo giche al fine di personalizzare il gate array al particolare circuito da realizzare Infine cosi come accade per rutn ì progetti complessi, il processo di progettazione è fortemente au roraarizzaro grazie all’utilizzo di programmi CAD Recentemente, nell ambirò dei dispositivi PLD, sono stari sviluppari nuovi approc ci per la progettazione VLSI per gestire progetti che in passato venivano implementati su piccoli chip oppure con gare array avenri da mille a un milione di porre Questi nuovi approcci hanno prodotto dispositivi logici programmabili ad alra capacità denominati disposine logici complessi programmabili CPLD (complex programmable logtc device) o dispostavi a matrice di porte programmabili sul campo FPGA (fieldprogrammable gate array) Queste due srrutture solitamente sono caratterizzate dalle seguenti proprietà 1 un numero elevato di circuiti logici combinatori personalizzabili 2 disponibilità di flip flop 3 connessioni programmabili rra logica combinatoria, fìip flop e linee ingresso/uscita del chip A parte queste proprietà comuni a tuta i PLD realizzati con tecnologia VLSI ì disposi tivi specifici differiscono da cosrrutrore a cosrrurtore Per illustrare le caratteristiche di ra li strutture, si analizzerà la struttura di un tipico CPLD prodotto dalla ditta Altera e di un FPGA prodotto dalla ditta Xihnx
Struttura dei CPLD Altera MAX 7000 Una famiglia dei CPLD costruiti da Altera® è basata sulla tecnologia a base fluttuante EEPROM Nella Figura 6 28 è riportala l’intera struttura di un CPLD Altera® MAX 7000™ 11 dispositivo è composto da 16 blocchi logici identici, le cui uscite aderiscono alla matrice di interconnessioni programmabili Alla matrice afferiscono anche le usare dei blocchi di controllo I/O, che agiscono da interfaccia con l’esterno e consentono il rrasfenmento dei dati da e verso il CPLD Le connessioni possono essere programmate secondo necessità, essendo possibile connettere qualunque segnale della matrice delle in terconnessioni agli ingressi della matrice dei blocchi logici Ciascun blocco logico contiene 16 macrocelle, ciascuna delle quali ha un flip flop e una struttura logica combinatoria di tipo PLD Alcune delle porte AND all’interno del le macrocelle, sono utilizzate per il controllo del flip flop (per esempio per il controllo del Preset, del Clear e del Clock Enable) Lo stesso flip flop può essere programmato pet comportarsi come un flip flop di tipo D, T, J K o SR. Inoltre connessioni speciali con sentono alle porte AND di altre macrocelle di essere utilizzate per una particolare ma crocella e alle porte NAND di essere condivise dagli ingressi in tutte le macrocelle Que
349
350
Capitolo 6
Memorie e dispositivi logici programmabili
Figura 6 28 Struttura de! circuito ALTERA MAX 7000 (ristampato con permesso di Altera Corp )
ste caratteristiche consentono di gestite ptobleml in cui le funzioni «chiedono più ter mini AND dei cinque disponibili nella patte combjnatotla di ciascuna mactocella Per quanto riguarda 11/0, come è evidente dall esame della Figuta 6 28, ciascuna mactocella, che fa parte dei blocchi logici disposti intotno al petlmetro estetno della sttuttuta Altera®, è connessa ai blocchi di conttollo I/O Questi consistono di un piedi no I/O pilotato da un buffer thtee state che ha come Ingtesso I usata della mactocella II conttollo del buffet parte da una potta AND nella mactocella Due connessioni di in gtesso, ptovenienti una dall ingresso e 1altta dall’usata del buffer thtee state, entrano nella mattice di interconnessioni programmabile del CPLD
69
l'v.
*r«-
Dispositivi logici programmabili VLSI
■
&Z^
Figura 6 29 Struttura FPGA della XILINX XC4000 (adattato con permesso di Xilinx Ine )
Struttura dello Xilìnx XC4000 Nella Figuta 6 29 è tipottata la sttuttuta di un FPGA Xiltnx® XC4000™ La logica in terna del dispositivo è contenuta in una matrice dt blocchi logici programmabili deno mtnatt blocchi logici confìgutabtlt CLB (configurable loge block) L’ingresso e 1uscita da e verso la mattice è gestita dai blocchi ingresso/usata IOB (inputfoutput block) dtspostt lungo ì botdt della matrice I blocchi CLB e IOB sono tta loto interconnessi con strut ture progtammabtli Le connessioni da e verso t blocchi CLB e IOB possono essere prò gtammate e si possono, tnoltte, programmare i percorsi da un blocco all’altro, uttltzzan do una matrice dt blocchi di connessioni (switch matrice)
351
352
Capitolo 6
Memorie e dispositivi logici programmabili
Xihnx utilizza la Tecnologia SRAM per memorizzare 1 bit di configurazione Dopo aver alimentato il circuirò, i dati del programma, che definiscono la configurazione logi ca, devono essere caricati nella SRAM Esistono diversi modi per caricare le informazioni Infetti, un dispositivo FPGA contiene una logica dedicata al caricamento delle informa zioni da una PROM a una SRAM Non appena il programma è caricato, il dispositivo cambia il proprio stato di funzionamento, passando dallo stato di programmazione alio stato operarivo, in cui è disponibile la logica confìgurara dal programma La configurazio ne rimarrà attiva fino a quando il dispositivo non verrà riprogrammato oppure spenro La riprogrammabilità consente di implementare, in rempi successivi, funzioni logiche diver se, sulla stessa FPGA, ciò rende questi dispositivi esrremamente flessibili I bit di una cella SRAM controllano la logica implementata m un dispositivo FP GA Xilinx, utilizzando le tre tecniche mostrate nella Figura 6 30 controllo con un tran sistor di connessione {pass transistor), controllo con multiplexer e implementazione di una tabella di consultazione (lookup tablè) La Figura 6 30(a) mostra una cella SRAM che pilota il terminale della porta (G) di un transistor MOS a canale n (si veda il Paragrafo 2 9) Un transistor organizzato per co struire una connessione bidirezionale pilotabile per il passaggio di un segnale tra due seg menti conduttori, è denominato transistor di connessione {pass transistor) I due seg menti conduttori sono connessi uno alla source S del transistor e l’altro al dram D Quando la cella SRAM contiene uno 0, il transistor è OFF ed d circuito tra ì due con duttori è APERTO Quando la cella contiene un 1, il transistor è ON e si crea un cir cuito CHIUSO tra i due conduttori che permette il passaggio dei segnali Un tipico di spositivo della serie XC4000 contiene decine di migliaia di tali transistor di connessione Nella Figura 6 30(b), una cella SRAM è connessa all’ingresso di selezione S di un multiplexer 2 1 Se la cella SRAM contiene uno 0, il valore sull’ingresso 0 viene rrasfe
M <ìL
__ M M Mj A— M B ---M C---M M
(a) Controllo dei pass transistor
(b) Controllo dei multiplexar
-----F(A B C)
(o) Implementazione delle tavole di consultazione (look up table)
Figura 6 30 Uso dei bit SRAM in un FPGA di XILINX
69
Dispositivi logici programmabili VLSI
rito all’uscita del multiplexer, mentre se la cella SRAM conriene un 1, viene trasferito al l’uscita del multiplexer il valore dell ingresso 1 Questa strutrura è utilizzata per effettua re la selezione tra due segnali Qualche volta è possibile trovare due celle SRAM che pi lotano un multiplexer 4-1 Infine, nei casi m cui ì dati m ingresso al multiplexer sono X e X, il multiplexer è sostiruito da una porrà XOR con il segnale X applicaro a un ingres so e la cella SRAM sull’altro Le celle SRAM si possono utilizzare per la costruzione di tabelle di consultazione, come mostraro nella Figura 6 30(c) Nella figura è riportata una rabella per una funzio ne a tre variabili F(A,B, C) Le celle SRAM memorizzano la tabella di verità della fiinzio ne, m modo tale che ciascuna cella contenga il valore della funzione F per il minrermine corrispondente La tabella di consultazione è funzionalmente equivalente a un multi plexer m cui ì bit delle celle SRAM sono applicati agli ingressi dati e le variabili A B C sono applicati agli ingressi di selezione Con riferimento all’esempio, se (A,B,Q = 010, il valore contenuto nella cella SRAM 2 (corrispondente decimale del numero binario 010) sarà trasferito all’uscita del circuito La tabella di consultazione rappresenta quindi l’implementazione con multiplexer di una funzione logica combinatoria, in cui le celle SRAM forniscono ì dati di ingresso al multiplexer
Interconnessioni Xilinx Le connessioni tra 1 blocchi CLB e tra ì blocchi CLB e i blocchi IOB sono ottenute uti lizzando vari conduttori disposti intorno ai blocchi, in direzione orizzontale e verricale I conduttori sono di lunghezza diversa quelli che percorrono I intera matrice m lunghez za o m larghezza sono denominati long Ime e sono mostrati nella Figura 6 29 Altri seg menti sono lunghi quanro un singolo CLB e possono essere interconnessi utilizzando le matrici di scambio riportate nella stessa figura Nella Figura 6 31 (a) è riportato un esempio di matrice di scambio Nel punto in cui ì segmenti si incontrano, sono presenti sei transistor di connessione, rappresentati da
Figura 6 31 Esempio di matrice di connessione in un FPGA di XILINX (adattato con permesso di Xilinx Ine )
353
354
Capitolo 6
Memorie e dispositivi logici programmabili
un segmento gtigio uno è verticale, il secondo è otizzontale e quattto sono in diagonale La connessione tta due segmenti risulta CHIUSA se un 1 è memotizzato nella cella SRAM che pilota la porta del ttansistot, mentte sarà APERTA se è uno 0 a essere memo tizzato nella cella SRAM Nella Figuta 6 31 (b) sono illusttati divetsi esempi di connes stoni Si noti che nel punto 1, ì quattto segmenti sono connessi insieme, chiudendo tre ttansistor In questo caso, si sarebbeto potuti chiudere tutti ì sei ttansistor per fotmate una connessione con una resistenza elettrica minore Nel punto 2, si sono fotmati, mve ce, due distinti petcotsi di conduzione Pet connettere ì blocchi CLB e IOB, si estendo no i segmenti dai blocchi di ingtesso e d’uscita atttavetso i canali di connessione adia centi Neirintetsezione tta questi segmenti e segmenti petpendicolati aH’intetno dei canali si ttovano ttansitot di connessione, conttollati da celle SRAM Oltte alle connessioni a lunghezza singola e massima (single e long Unes) tipottati nella Figuta 6 29, esistono connessioni a lunghezza doppia, intetconnessioni speciali pet il clock, buffet thtee-state come ingtessi pet alcune delle connessioni a lunghezza massi ma e citcuiteria speciale pet implementare porte AND di gtandi dimensioni nei canali di connessione
Logica Xìlinx La maggior parte dei circuiti logici di un FPGA Xìlinx si ttova all’intetno dei blocchi CLB e IOB Enttambi queste sttuttute sono intetamente programmabili e piuttosto complesse Nel seguito si studietà in dettaglio la struttuta di un blocco CLB e le catatte ristiche di un blocco IOB Nella Figuta 6 32 è riportato un diagtamma semplificato di un blocco CLB Sono ptesenti 13 ingtessi, incluso il clock K Non è tiportato il segnale Global Set/Reset che è connesso con tutti i flip flop della FPGA, Due flip flop e la logica associata sono eviden ziati in blu La parte testante del blocco CLB è utilizzata pet implementate la logica combinatoti a Nella fìguta, tre tabelle di consultazione implementano alttettante funzioni combi natotie Due tabelle a 4 ingressi implementano due funzioni, etichettate con F ' e G' Questi due blocchi pilotano una terza tabella di consultazione che a sua volta imple menta una funzione a tre variabili di F \ C' e un ingtesso H I Pilotando cotrettamente due multiplexet 2 —1, qualunque coppia di funzioni, scelte tta F \ G' e H r (la funzione implementata dalla terza lookup table), può essete assegnata alle due uscite, X e Y, del CLB Con questa sttuttuta possono essete implementate due funzioni con un massimo di quattto variabili e funzioni particolati con un massimo di nove vatiabih I due flip flop D pilotano ditetramente le uscite XQ e YQ Ciascuno ingtesso D è I uscita del telativo multiplexet e può assumete uno dei valoti comptesi tta F \ G \ H ' e I ingtesso DIN I multiplexer consentono a una qualunque funzione combinatotia ìm plementata di pilotare i flip flop Inoltte, nei casi in cui le funzioni combinatorie sono utilizzate direttamente come uscite e non pilotano ì flip flop, D IN pub essere seleziona to come ingresso, cteando una connessione di tetta al flip flop che può essete utilizzata
69
Dispositivi logici programmabili VLSI
355
Figura 6 32 Diagramma semplificato di un blocco logico riconftgurabile in un FPCA di XILINX (adattato con permesso di Xilinx Ine )
per la memorizzazione di valoti provenienti da altre sotgenti I due XOR consentono di selezionare individualmente ciascun flip flop e di tendetli attivi sul ftonte positivo o ne gativo del clock I due blocchi SR Conttol consentono di utilizzare il segnale S/R come segnale di Set o Reset asinctono pet ciascun flip flop Questa impostazione conttolla an che gli effetti del Global Set/Reset sullo stato dei flip flop Infine, due multiplexet consen tono all’ingresso EC di agite come il segnale di Clock ENABLE pet ciascun flip flop Il blocco IOB è aneti esso programmabile e offre al ptogettista un cetto numeto di scelte Per semphficità, si ptenderanno in considerazione sepatatamente le due sezioni di ingressa e d’uscita del blocca IOB cosi come ìllusttato nella Figuta 6 33
1
356
Capitolo 6
Memorie e dispositivi logici programmabili
Three state TS -
jo™" Uscita dati O Interno FPGA
t CLR
Piedino di i/O
Ingresso dati 1 -
PRE
Ingresso dati 2 CLR INGRESSO
Figura 6 33 Diagramma di massima della struttura IOB in un FPGA della XILINX {adattato con permesso di Xilinx, Ine )
La sezione di uscita di IOB può canalizzate le uscite dell’FPGA sul piedino I/O In alternativa esso può fomite in uscita un valore memotizzato in un fhp flop Un buffer th tee-state sull’uscita consente al piedino I/O di essere utilizzato come ingresso, come usci ta o come ingtesso/uscita Nella sezione di ingresso dell IOB, il segnale proveniente dal piedino I/O viene in viato al buffet di ingresso II segnale può essere inviato ditettamente all’ingtesso dati 1 o all’ingtesso dati 2, i quali tapptesentano le due linee di ingtesso pet il dispositivo FPGA In alternativa, uno o entrambe le linee di ingresso possono essere pilotate dal vaio te pte sente nel piedino di I/O o dal suo complemento L’intera struttura delle mrerconnessioni, dei blocchi CLB e IOB è complicata, so prattutto per un progettista che deve operare con centinaia di blocchi CLB e IOB e mi gliaia di punti di interconnessioni in un FPGA, Gli strumenti CAD sono molto utili perché partono dallo schema circuitale o dalla descrizione HDL del progetto e automa ticamenre lo partizio nano oppottunamente in sezioni (adatte a essere implementate nei CLB), posizionano i blocchi in specifici CLB e creano le connessioni tra CLB e IOB II risultato del processo è una srnnga di cenrtnaia di migliaia di bir di informazione che possono essere caricati sul disposirivo FPGA per la sua programmazione in modo da ìm plemenrare la logica desiderata
610
6.10
Sintesi del capitolo
Sintesi del capitolo___________________________
Vi sono due tipi di memotia le memorie ad accesso casuale RAM (random accesi memory) e le memoria a sola lettuta ROM (read only memory) Pet enttambi i tipi di me mona si invia un indirizzo pet selezionare le celle da cui leggete o in cui scrivere i dati Le opetaziom di lettuta (read) e sctittura (wnté) avvengono seguendo specifici passi e sono catatteazzati da parametti di tempotizzazione, come il tempo di accesso e il tempo del ciclo di scrittura Le memorie possono essete statiche o dinamiche, volatili o non volati li Un banco di memoria RAM è costituito da una matace di celle RAM, da decodifica toti, da circuiti di scattuta, da citanti di lettura e da citanti di uscita Una singola cella RAM e la telativa citcuitena di scattura e lettuta possono essere modellate come una RAM bit slice Divetse RAM bit shce possono essete, a loto volta, combinate per fotma te mattici bidimensionali di celle RAM, che con l’aggiunta di decodificatoti e citanti di uscita, costituiscono gli elementi fondamentali pet un banco di memotia RAM Pet feci litare la connessione di banchi di memotia RAM, senza l’aggiunta di ultetiote logica, ì citanti di usata utilizzano buffet three state Nei banchi di memotia DRAM, a causa della necessità di reftesh, è necessario inseate un ultetiore citcuito dedicato Le memorie ROM, capaa di implementare un circuito combinatorio, sono ì più semplici dispositivi logici programmabili (PLD), poiché essi semplicemente immagazzi nano una tabella di vetità. I dispositivi logici a mattice logica progtammabile (PLA) e quelli a logica con matrice programmabile (PAL®) rappresentano altte forme dementati di PLD Da questo punto di vista, una memoria ROM ha una mattice di potte OR pto gtaxnmabile, una PAL ha una mattice di potte AND ptogrammabile e un PLA ha en trambe le mattia AND e OR programmabili 11 compito pancipale pet un progettista di citanti logici è quello di conoscere ciascun PLD e le telative limitazioni e adattate d prò getto alle catattetistiche del PLD ptescelto Pet logiche più complesse sono più adatti ì PLD a larga scala di integrazione, (VLSI PLD) Un VLSI PLD possiede una ampia sezione di logica combinatoria confìgurabile molti flip flop e complesse sttuttute di interconnessione progtammabili Sttuttutalmen te, tanto ì dispositivi quanto le tecniche di programmazione, variano fortemente da co struttore a costruttore La progettazione con PLD sia semplici che complessi è agevolata dall’uso di appositi strumenn CAD, che liberano i progettisti dalla grande complessità dei dettagli dell implementazione ESSISI I codia a rilevazione e correzione di errore, spesso basati su codici Hamming sono urilizzati per rilevare o correggere errori nei dati immagazzinati nelle memo ne RAM Mareriale urile, rratto dalla prima edizione, che analizza quesn codici, è disponibile nel Prennce Hall Companion Website Gallery all indirizzo hrrp //www prenhall com/kime KatfAYj II materiale che riguarda le descrizioni VHDL e Verilog per le memorie è anch esso disponibile nel Prentice Hall Companion Website Gallery airindtnzzo hrtp //www prenhall com/kime
357
358
Capitolo 6
Memorie e dispositivi logici programmabili
Riferimenti bibliografici
_____________ _ _ _ _ _
1 WESTE, N H E , AND ESHRAGHIAN, K Pnnciples ofCM OS VLSI Design A Syj tems Perspective, 2a ed Readtng, MA, Addtson-Wesley, 1993 2 HODGES, D A , AND JACKSON, H G Analysis and Design ofDigital Integrated Circuits, 2a ed New Yotk, McGraw-HtU, 1988 3 HAZNEDAR, H Digital Microelectromcs Redwood City, CA, Benjamtn/Cum mtngs, 1991 4 WÀKERLY, J F Digital Design Pnnciples and Practices, 3a ed Upper Saddle Rivet, NJ, Prentice Hall, 1999 5 N elson , V P, N agle , H T, C arroll , B D , a n d I r w in , J D Digital Logic Circuit Analysis and Design Englewood Cliffs, NJ, Ptenttce Hall, 1995 6
KlTSON, B Programmale Array Logic Handbook Sunnyvale, CA, Advanced Mi eto Devices, Ine, 1984
7 TrIMBERGER, S M , ED Field-Programmable Gaie Array Technology Boston, Kluwet Academic Publishers, 1994 8 Altera Data Book San Jose, Alteta Cotpotatton, 1998 9 The Programmable Logic Data Book, 2a ed San Jose, Xiltnx, Ine , 1994
Esercizi m t l II segno ptu (+) indica esetcìzt con un gtado dt complessità più elevato Pasterisco (*) che una soluztone è dtspombtle sul sito web che accompagna il testo 6 1 * Le seguenti memotie sono specificate dal numeto di parole e dal numeto dt bit pet patola Quante ltnee tndittzzo e linee datt tngtesso/uscita sono necessati tn età som caso1*(a) 8 K x 32, (b) 256 K x 64, (c) 32 M x 32, (d) 4 G x 8 6 2 Fotnite il numeto dt byte memotizzabtlt nelle memotie elencate nell Esetctzto 6 1 6 3 * La patola numero (633) to nella memotia della Ftguta 6 3, contiene 1equtvalen te binano dt (2731)to Scrivete 1tndt tizzo a 10 bit e tl vaiote a 16 bit della patola 6 4 Un banco di memoria RAM 32 K x 8 uttltzza la decodifica coincidente dtvtden do il decodifìcatote tntetno tn selezione dt tiga e seleztone di colonne (a) Assu mendo che la matrice dt celle RAM è quadrata, quai è la grandezza dt ctascun de codifìcatote e quante porte AND sono necessarie pet decodtficate un indirizzo* (b) Detetmtnate le linee di seleztone dt ttga e di colonna che sono abilttate quan do Findttizzo in tngtesso è Tequtvalente binano di (21000)lo 6 5 + Assumere che il decodtfìcatore più grande che può essere utilizzato tn un banco di memoria RAM m x l , abbia 13 ingressi per l’tndtttzzo e che sta utiltzzata la co difìca coincidente Allo scopo di costruire banchi di memotta RAM che conten
Esercizi
gono più parole da 1 bit ttspetto alle m ptevtste, sono tnclusi nel banco matrici multtple dt celle RAM con decodificatoti e cttcuttt di lettuta/scttttura (a) Date le testrizioni del decodtfìcatote, quante mattici dt celle RAM sono ne cessatte pet costrutte un chtp RAM da 256 M x P (b) Defintre le carattettsttche del decodificatote achiesto pet selezionare le matact di RAM nel banco e le connesstont per indittzzare ì bit e i decodificatori dt colonna 6 6 Una DRAM ha 12 piedtm dt ìndtrizzo e la ttga indirizzo è ptu lunga dt 1 bit ti spetto alla colonna indttizzo Quanti tndtrtzzt ha la DRAM tn totale’ 6 7 Una DRAM da 256 Mb utthzza dati a 4 bit e ha tndittzzi dt ttga e colonna di uguale lunghezza Quantt ptedini indtttzzo possiede la DRAM? 6 8 Una DRAM ha un tempo di tefresh di 128 ms e ha 4096 ttghe Qual è l’interval lo tra t vari reftesh per un tefresh dtstnbutto5 Qual è il numero mtntmo dt piedt ni tnditizzo della DRAM? 6 9 * (a) Quanti banchi dt memorta RAM da 32 K x 8 sono necessari pet costrutte una memotta delia capacttà dt 1 Mbyte? (b) Quante linee di tndittzzo devono essete utilizzate pet accedete a 1 Mbyte1* Quante di queste linee sono connesse agli tngtesst indtttzzo dt tuttt 1bancht5 (c) Quante ltnee devono essete decodificate per gli tngtessi chip select5 Specifica re la grandezza del decodtficatote 6 10 Utilizzando tl banco di memotta RAM 64 K x 8 della Ftguta 6 16 ptu un decodt ficatote, costrutte il dtagtamma a blocchi per una RAM 256 x 32 6 1 1 Dato un banco di memoaa ROM 256 x 8 con un ingresso abilttante, mosttare le connessioni esterne necessarie pet costrutte una ROM 2 K x 8 con otto banchi e un decodificatore 6 12 Come mostrato nella Figura 6 34, la ROM 32 x 6 e la Itnea 2° convertono un nu mero btnaao a 6 btt nel cotttspondente numero BCD a due cifre Pet esempto, il binano 100001 st converte nel BCD 011 0011 (decimale 33) Spectfìcate la ta bella dt veutà pet la ROM
Figura 6 34 Convertitore ROM binario decimale
359
360
Capitolo 6
Memorie e dispositivi logici programmabili
6 1 3 Specificare la grandezza di una ROM (numero di parole e numero di bir per pa rola) che deve contenere la tabella di verità dei seguenti circuiti combinatori (a) un sommatore sotrrattore a 8 bit con Cm e Qiut (b) un molriplicatore binario per due numeri a 8 bit (c) un convertiroredi codice da numeri BCD a 4 cifre a numeri binari 6 14 Scrivere la tabella di verità per una ROM 8 x 4 , che implemenra le seguenti quar tro funzioni booleane A (X Y, Z ) = 2 m (3, 6, 7) B(X, U ) = ^ ( 0 , 1, 4, 5, 6) C{X, Y, Z ) = 2 m(2 , 3, 4) D (X Y Z ) = 2 m{2, 3, 4, 7) 6 15 Ricavare la tabella di programmazione per un PLA che implementa le quattro funzioni booleajne elencate nell’Esercizio 6 1 4 Minimizzare il numero di termini prodotro e urihzzare il maggior numero di termini comuni tra le funzioni, consi derando anche le uscite negate (C) 6 16 Derivare la tabella di programmazione per un PLA che implementa un circuito combinarono che calcola il quadrato di un numero a tre bit Minimizzare il nu mero di rermmi prodotto (si veda la Tabella 6 3 e la Figura 6 22 per l’implemenrazione equivalerne su una ROM) 6 17 Ricavare la rabella di programmazione per un PLA che implementa il convertito re di codice da BCD a eccesso-3, le cui funzioni booleane sono semplificate nella Figura 3 10 6 1 8 Ripetere l’Esercizio 6 17, utilizzando un dispositivo PAL 6 1 9 Di seguito è riportata la tabella di venta per quattro funzioni booleane a tre in gressi Ricavare la tabella di programmazione per un PAL e indicare ì fusibili da bruciare utilizzando un diagramma simile a quello riportato nella Figura 6 26
Ingressi
Uscite
X
Y
z
A
B
c
D
0 0 0 0 1 1 1 1
0 0 1 1 0 0 1 1
0 1 0 1 0 1 0
0 1 1 0 1 0 1
1
0
1 1 0 1 0 0 1 1
0 1 1 0 1 0 1 1
0 1 1 1 0 1 0 1
Esercizi
6 20 Fornire gli ingressi FI, FI, Fò e F4, Gl, G l, Gò e <74, H I e le tabelle di verità per F \ G e H \ per implemenrare la seguente coppia di funzioni in un dispositivo Xi linx con singolo CLB X = A K + BK + C D K + AEJL Y = AB (C + D) 6 21 + Fornire gli ingressi F i, FI, Fò e F4, Gl, G2, G3 e G4, H I e le tabelle di verirà per F , G ' e H ' e i valori per rum i bit SRAM della Figura 6 32, nel caso dell’im plementazione del arcuito sequenziale descritto dal diagramma di stato della Fi gura 4 23 Assumere che ì flip flop siano attivi sul fronte di salita e gli ingressi sin croni SJR dei flip flop siano entrambi in RESET È possibile implementare interamenre quesro circuirò in un singolo CLB, includendo la logica per l’uscita Y> kvAVAVi Gli esercizi che trattano la descrizione VHDL e Venlog dei dispositivi di memoria so no disponibili nel Prentice Hall Companion Websire Gallery all indirizzo http //wwwprenhall com/mano
361
fi
i’ I
¡I I
j I
1
Indice analitico
A Addizione BCD 158 Binaria 22 Esadecimale 10 13, 15, 25-27 Numeri binari con segno, 150, 153, 155 Ottale, 10 11, 16,19 25 122, 127 Algebra booleana, 30,34-35, 38,40, 90 Principali identità 36 Analisi, 197 Aritmetica decimale, 157 Uso del complemento, 149 ASCII, 23 25,28,163, 191 264,303 Bit di parità 24 25 28 80 81,95 101 Caratteri di controllo, 23
B Banco di prova 107 164 Base, 3 8 10 13 16, 107, 146 BCD Addizione 21 22 28 Sommatore, 143 158, 191 Sottrazione, 14, 28, 144 145,148 149, 151 152 154 155,181 190 Binano, 5 8,10,12 15,17,23 28,34, 116 117 122, 126, 128,138, 146, 150 151 153, 156,159 Addizione, 21 22 28 Divisione, 27 337
Moltiplicazione, 15 16 18 31 38 156 181,337 Sottrazione 14, 28 144 145 148 149 151 152 154 155,181,190 Bit, 6 8 9 14, 24 25, 28, 80 82 95,101 116, 136 153,155 268,283,287,289 Bit di parità, 24 25, 28, 80 81, 95 101 Blocchi, 8 25 82,99,102 103 105 106 113 180 198,305,349 Blocchi predefìniti, 103 113,180 Blocchi primitivi, 103,105 Blocchi riutilizzabili, 102, 180 Byte, 24 28 90 101,307 308 358 c Cache esterna, 2 7 8 Cache interna, 7 Calcolatore elettronico, 3 4, 7 150 Caratteri di controllo, 24 Celle, 4 50 52, 54 57 62, 66,79, 118, 306 307 312 313 316 353 354, 357-359 Celle adiacenti, 50 52, 54, 57, 66 Cifra meno significativa, 9 17,160 Cifra più significativa, 9, 12, 14,17 18, 21, 145,154
Indice analitico
Circuiti combinatori, 99 100, 113 125, 132, 172, 180 181,188, 191, 198,241, 249,305, 336 337, 340 360 Procedura di sintesi, 115 Circuiti di memoria, 312 Circuiti digitali, 3 6, 29 30 38,68,82 84, 99 161 172,197 198,256 Circuiti integrati, 8,29 30,82 83 86 87,89, 104 106 122 125,134,305 328,334,347 Circuiti logici combinatori, 29, 35,99, 180 349 Circuiti NAND, 70,73 Implementazione multilivello 94 Circuiti NOR, 74 Implementazione multilivello, 94 Codice eccesso 3, 117 119,191 Codici alfanumerici, 22 Codici binario decimali, 19 Codificatore, 127-128 Codificatore con priorità, 128 Codificatori, 181 Complementi, 92,95,110,122, 146, 160, 181 Complemento a 1,147,149-152,154,189 Complemento a 2, 189 Condizioni, 67,226,232,235,237 Condizioni di non specificazione, 65,264, 293 294 Contaron BCD, 158 Controllo di parità, 80 81,89 Convertitori di codice, 99, 116
D Datapath, 6,8 Decoder, 122, 136,163,329,334 335 Decodificatore, 120,123 127, 129, 132, 186 Decodificatori, 122 Demultiplexer, 135 136, 187 Descrizione strutturale, 105 161 164,172, 174,178,192,194,303
Descrizioni gerarchiche, 168 Disco fisso, 7 Display a sette segmenti, 121 Dissipazione di potenza, 84 Divisione binaria, 22 Duale, 37 40 42 64,74 87,95 Esptessione 36
E Encoder, 99 Esadecimale, 16 Addizione, 21 22, 28 Moltiplicazione 15 16 18,31,38,156 181, 337 Sottrazione, 14,28 144 145,148 149, 151 152,154 155 181 190 Esadecimale, 26
F Famiglie logiche, 83, 89, 122 Fan in, 83,89 188,306 Fan out, 83,89,95, 340 Forme canoniche, 42,73,88 Full adder, 136-138, 140, 142 157, 169, 178,259,275 276 Parziale, 140 Funzione booleana, 34 35 42,44-46, 48-49, 55,60, 62,65,68, 70,73 74,77, 79, 110,132,159, 181,336 342, 346 Funzione di propagazione del riporto, 140 Funzione dispari, 79 81 101 104 138, 220 Funzioni non completamente specificate, 60, 65, 89
G G (Giga), 10,308 Gerarchia, 99 101, 103, 113, 140, 168, 216, 304 Gerarchla di progettazione, 101 Gerarchici, 178
Indice analittco
H
M
Half adder, 136 137, 169, 178 HDL, 105,, 172 241,249 Analisi 107,109,162 215,220 Banco di prova, 107, 164 Descrizione strutturale, 105,161 164, 172, 174, 178,192, 194 303 £laboraztone 107,267 lmzializzazione, 107, 299 Simulatore, 237 Simulazione 107,110,113 U 4 ,163 164 167,191,202,207,237,256,264, 303
M (Meg^), 10 308 Manipolazioni algebriche, 38 111 Mappe, 29,48 51 57,60 62, 89 116,119,
I Indicatore di negazione, 68 Pallino 68 70 72 Indicatore di polarità, 87 Ingresso/uscita, 7 8, 164,166, 227,229, 306, 349, 351, 356 Integrazione, 82 347 348 Grandissima scala di 82 Intervalli numerici, 13 Istanza, 104, 174, 293 K K (Kilo), 10, 308
L Leggi commutative, 37 Letterale, 39,42,46-48, 53,58,60 64 76 Librerie, 104 105,109, 113, 248, 347 Linguaggio Venlog, 107 Livello alto, 84 Livello basso, 84 Logica, 105 107 109, 119, 124 125, 140, 142 143 152,159, 180,198,214,229 240 272 274,306 312,332,340, 342, 344,347, 352 Logica negativa, 86 87,89 Logica positiva, 86 87,89
365
121
Due variabili, 49, 51 Manipolazioni 38, 111 Quattro variabili, 46, 49 56 58 Tre variabili, 50, 52, 56 57 Margine di rumore, 84 Maxtermine, 43-44 Memoria Bit, 6, 8 9, 14 24 25,28 80 82,95, 101, 116, 136,153, 155,268,283,287, 289 Memoria ad accesso casuale, 7 308 Mintermine, 42 44,46 4 9 51, 55, 57, 59 60 63, 66,124,128, 132 337 353 Mintermim, 43 Moltiplicatori, 99, 156 Moltiplicatori binari, 156 Moltiplicazione Binaria 22 Esadecimale, 10 13,15 25 27 Ottale, 10 11, 16, 19, 25, 122 127 MSI, 82 104 Multiplexer, 99,130 132 135,146, 161 168,172,176, 181, 214,278, 316 317 352 355
N Netlist, 107,109, 113 164, 174 NOR, 68,183 NOR Esclusivo, 29 78,174 NOR-Esclusivo, 68 Numeri binari con segno, 150,153,155 Numeri con segno, 25,150 152, 154 155 Rappresentazione m modulo e segno 190 Numeri decimali, 14,20,44 45,136,147, 156 157 160,190 293 Complemento a 10, 190 Complemento a 9,190 Numeri decimali in binario, 19,26 Numeri decimali in complemento, 160
-, i
*
366
Indice analitico
o
R
Operatore XOR, 78 Identità 78 Operazioni aritmetiche, 6, 99,106 136, 144,157, 197,299, 337 Operazioni m virgola mobile, 7 Ottale Addizione, 21 22, 28 Moltiplicazione 15 16, 18,31,38 156 181,337 Sottrazione 14 28 144 145, 148 149 151-152,154 155, 181,190 Overflow, 154 155, 170, 189
Radice, 9 188, 321 RAM Circuiti di memoria 312 Circuiti integrati, 8 29 30 82 83,86 87, 89, 104 106,122, 125, 134, 305 328, 334 347 Rappresentazione schematica, 101 Regola di selezione, 63 Ritardo di propagazione, 84, 108 115, 140, 198,202 207,210,214 Ritardo di trasporto, 84 85 Ritardo inerziale, 84 85
P
s
Panta, 24 25 29,80-81 Bit di 14 24 25 28,80 81,95, 101 153, 268 Controllo 80 81, 89 Porta di trasmissione, 87, 89. 186, 205 Porta NAND, 95 96 122, 126, 164 174 Porta XOR, 68,78, 88, 101, 137, 150, 155, 287,302,340 342 344,353 Porte logiche, 29 30 32, 34, 38,47, 68 82, 88,100 101 103,109-110, 163, 166, 198, 292 303, 306, 318, 334, 340, 348 Simboli 32 34, 68 70, 74, 87> 103, 105 134,211,214 316 Primi implicanti, 60 61, 63,121 Regola di selezione 63 Primi implicanti essenziali, 60 61,63 Primi imolicann non si *">
Scala di integrazione, 82 357 Schema, 3,6 99 103, 105, 108 109 113 132, 140 142,163,166 173,273,318 356 Segnali, 4,25,30 32 35 47 82,86 134, 165, 188, 199,205 213, 240,255,274 280,290 308 Semplificazione 29 38 40 46,48, 55,60 62 89,116 147 237, 344 Condizioni di non specificazione, 65, 264 293 294 Mappe 29,48 51, 57,60, 62 89 116, 119,121 Prodotto di somme 48 49 Somma di prodotti, 46 63 65, 70 72 73, 88 340 Semplificazione di ptodotto di somme, 64 oh grafìa >rte 29 30 32,34 38 47, 68 82, 88 100 101 103 109 110,163 166,292 303 306 318,334,340 348 latore logicef, 106 237 lazione logica, 110,113,202, 207,256 1 logica 101 107, 122 ia digitale, 4 198 214,233,268 273
Indice analitico
Sistema numerico Binano, 5 8 10, 12 15 17 21 23,28 34 116 117, 122,126, 128,138 146, 151 153,156 159 Decimale, 9 Esadectmale 10 13, 15, 25 27 Ottale, 10 11,16, 19, 25 122, 127 Somma binaria, 21 136 Somma di mintermini, 44 46 55,126 230,286 Sommatore con riporto anticipato, 143 Sommatore con riporto m cascata, 143 Sommato« binari, 159,181 Sottrazione BCD, 21, 158 Binaria 22 Esadecimale, 10 13, 15, 25 27 Mediante complemento, 148 Numen binari con segno 150,153 155 Numeri senza segno, 144 145 148, 150 151,154 155 190,295 Ottale, 10 11 16, 19, 25,122, 127 Stato Tabella, 128 130 167,182,201,223, 236, 316 317,335 338,353,357
T Tabella di verità, 32, 128,130 167 182, 201,223,236 316 317,335 338,353,357 Tastieta, 2, 8 Tempo di reiezione, 84 85 Tensione di ingresso, 4-5 Tensione di uscita, 4 5,84 Teorema del consenso, 40-41 Teotema di DeMotgan, 41-42,70,72,76 Tetmine prodotto, 121,128 129,340,342, 345 Tipo logico, 163 Transizione, 188,198,200, 204 207, 209 210, 213-214, 222, 224 225,234,236, 240, 271, 280, 283, 310
Unità a virgola mobile, 7 Unità centrale di elaborazione, 6 Unità di controllo, 6 Venlog, 99 105 107 172 174, 180 181 191,249,264 297 303 Commenu, 172 Descrizione dataflow 166, 193 Descrizione funzionale 179 Descrizione strutturale 105, 161 164, 172 174,178, 192, 194 303 Introduzione, 180, 197, 247 254 Libreria, 106 109, 163, 191 295 Module 173 Output 173 Panoramica 181 Vettori, 165 Wire, 174 249 VHDL, 99, 105 106, 161 163 165 170 171, 181,191 257,264 295,303 Begin 164 Commenti 172 Delta Urne, 164 Descrizione dataflow, 166, 193 Descrizione funzionale 179 Descrizione strutturale, 105, 161-164, 172,174, 178 192,194, 303 End, 163, 242 Entity, 162 Introduzione, 180, 247, 254 Istruzione when else, 295 Libreria, 106, 109, 163, 191,295 Others, 248 Package, 163, 191 192 Panoramica, 181 Port map, 164 Signal, 241 Stdjogic, 165,244,247 248 St
367
Xlllnx Student Edition Software version 4 21 Installation Notes To snsu s the spttmum uss and speratlon o1 your new dsslgn tools Install Studsrit Ed tion v4 2t on 1ha recomrnsndad nordwsro w 1h sufflclsnl msmsry (RAM and hard d sk swap spaco) 11you oxperisncoproblsms wth tho nstalation oporattsn or vsitficatson olyourInstsllaton s s s hlto.//xup.msu.eduforFAQssnd nkslo mo o support
Supported Operating Systems Tho Studont Ed 1lsn v4 2 soltwo o supports Iho 1o Isw ng spo a1 ng systems and vsrsJons P atformand SystemRequ ements IBMPC o Compa bo Wndows 9SSE NT40 (WithSorvfcoPack4-6a( ME 2000 The mommy requ omonts both HAMand ha d
1
Equipment and Permissions The fsllow ng tabls providss nlormstten aboul related oqu pmsnt porm sa ons and nstwork conned ons Mom Requtramsnt D ectoiy Pormlssrons Wmo porm sslsns musl ax s11or al d odor os containing dss gn f os to bo sd ted Nolo To vtsw snd/or od 1 iho oxsmp o p o]eds Insludsd n tho SXlUNXUSEoxamptes d rsctsry tho directory must be writabts Msvo 1ho prsjects 1o a wrrtsbls d rectory bofore working sn thorn n ths ISE Projod Navlgstsr Cpen tho projsct tn ISE To movs tho project to a wiilabls locstsn setact ProjocLSavo As X nx rscommsnds thai ysu hsvs sn Hsrdwaxo Componsnl IBM compat bio pantium class maoh no Msn tsr Co or VGA operating n 1hs fallowing modos. M n mum Rssoluton 640 x 480 M n mum Recommcndsd 1024 x 768 Mouse You should have o 2-button (M crosott W ndows compatlbls) or 3buKen (Microsoft compatib o) msuso You should have sn IS09660 CDDnvo compltanl dnva on your system Ports You shsuld havo two ports (ons for a msuso and ons psral ol port ter ihe ps si ol download cabto 11nsedod) Nstworic Compstibll ty Tho XI nx Installation program supports TCPrtP networks Hyou arauslngaWndows NT opera) ng systom Disn 1he TCP/IP protocol needs to bs nstal sd 1lrst For more nformstlon sos iho solutfsn record at tho 1s lowing Iscatton httpVAww.suoaoTtxitinx.com/techdocsf2510.htm
System Memory Requirements RAM 128 MB to 256 MB (dspendent on dsv ce) Vrtual Memory 128 MB 1s 256 MB (dspondont on devtcs) Note DuetothsslzOondoomploiutyoltheWexandVrtojc Udevices X nx noaxnmends that these designs be comp lad using a M|}h-periormnnce oompws 128 MBoi flAMas wo I as 12a MB ot virtual memory Is reined tocomple XC9500 dosigns ForSpaitan 11and viitax devices upto 300Kga!os Xlllnx recommends 258 MB e! RAM Virtual momory slzs requ romonts also vary wrth ttiB design snd constro nt set size By aefsuh Windows 95/98 manages its swap filesize automal cally but tor Windows NT you may noed 1s incresse 11 Typ cally ndows NT swap 111b size shsuld be tw ce as largo as yoursystsm RAM Bmsunl It Is mpcrtant to nolo 1hat slower systems or systems with less than 1ha recommonded RAM and/or swap space may exh b t tsngor runtimes Requ rod disk space 2 GB recommended
yourVi
Running Setup 1 To slart (ho Insts atisn Insert 1hs CD #1 Into 1ho CD ROM dnvo 2 Run tho Insiallat on program Ths nstallor should outomotfcs!!y slart when the CD s nserted tf 1doss nol 1romW ndsws solsc! S1srt_Run Typs D >se1up oxs In Iho “Opsn I s d sf iho Run w ndow and si ck CK” (11you CD ROM drrvo s nsl ths D‘ dnvo substitute ths sppropr a1o dnvo dos gnsl on) 3 Tho Welcome window will open prompting you isregstor e thor v a tho Wsbsho E Me I or FAX Registration lo NDT required for thts product Clck Nsxt tocontnus 4 Accspl 1hs ssltwsfo license sgrssment by sllsk ng tho wtilts box next to I accspt 1hs terms of 1h s ssftwaro I conso " ss ttiat a chock mark appsars CIsK NoxT1ocon1lnuo 5 tn ihs Reglstral sn w ndow ontsr ysur Reg stral ID 99906970 9169 Cl sk Noxf to csnl nuo 6 E thor shssso ths dotault d rsstory (rscommsnded) or sslect anolher directory for tho nstailation CIcK Next locsnttnuo (Nols 1hs1ff another vsrssn of X nxsoftware s nstslsdln ths indlcaied d roctory you w I bs promptsd to uninstall 1hs prevlsus version) 7 PsrtormaTyptcat nstallstlon Click Nsxt to continue 6 C ck sn 1hs wh te bsx 1o p sea a chsck msrk nsxt 1o ossh device fsm ly that you wish to Inslsl Nsts ihst sach dsv co famty requ sso certain smount o1 memory On ysur systsm Cl ck N sxfis cont nus tf you havo ss scted to tnstalfiho V rtox 2 Pro dov ce you nesd to accspt 1tio V rtox 2 Pro License Agroomsnl Cl ck ths wh Is box noxt to sccept ¡he Isftns o1 th s software t csnse sc 1hat a chsck msrk sppears Click "OK" 9 Whsnlhe Updeis Era/lrsnmsntwridswopeire loavsths dsfsu 1ssttings and cl ck Nex1 1e cen1 nue 10 On tiio fsl ow ng screen si ok on Install to nstalMhs software 11 Aftsr tho Das gn Eiwlronmsm Is Instsl sd you w I bs prompted to nssrt ths XI nx Docs CD tt you wish 1o nsts! tho documsntal on Insert CD #t and si ck CK olhsrw ss dick “Cancel Whsn complots rsmsvelhs CD #1 12 tf you havo nstallsd ths Documsntation you will be prompted to nsert 1ho XI Inx ISE Dss gn Envlrsnment Too s CD into tho CD dnvo whon Instal al sn o1 ths Dsoumsntai nn is complste Inssrt CD #1 back Into 1he CD drivo snd cl ck OK 13 The MuIbLtNX cable InsJaller wi t start 11you use 1h s cable for dsvstopmsnl click “Yss ts instsli 1hs dnvers othsrwlss dick No’ You may need to rebost your PC to allsw 1hs nsw/mod Ce
on
I
Service Packs Downlsad 1hs latest serv ce pscks fsr XSE 4 2! st http.ffunwersrtv.xltlnxcomAinwfrse42.html Ths dswnloads w It Include a ssrvice pack tor iho XSE tools and an IP updato tor Core Gsneratof To Install 1he ce pack 1erthoXSE1sos double-dick on 1he oxsculablo 1lo and run tho installsr to completion To Inslsll ttie IP Updals oxtract 1he contsnts s1 tho Ztp 11s using Wlnztp 7 0 SR-1 or lator snd oxtrsct tho contorts ot the 15o to iho tSE Installation d rectory Fsr moro ntomnabon sboul tnslatl ng ths sorv ce pscks as well as ths installation procsss vis t the on! no lutonoT a1 http.//xuo, msu.edu/license/v42iflndex. him
son
Modelslm Modolsim Is not Included w 1h ths Student Edition Modsts m can be dnwntoadsd at http.//www.xtlinx.com/isa/mi(e2 For Information about nslall ng and llcens ng Modelslm vis t tho onl no tutorial at h1tT3y/xue.nisu.edu/l!cense/v4SMndex.htm
Licensing •— — im p o r t a n t — -«« If you reg star and reooive e license 1le v o small 0 0 NOT INSTALL IT Studsnt Edrtisn does not raqu re a I censs filo to run thB software
Technical Sopport There are no update* and no tlve technical support for this product For technical support abide by the fallow ng process (1) r rst contact your Professor and then (2) refer to tho Xllirsx University Resource Cantor at http.//xuo.msu.adu