CALCOLATORI ELETTRONICI A cura di Luca Orrù Lezione n.3 I moduli combinatori e sequenziali 1 CALCOLATORI ELETTRONICI A cura di Luca Orrù Sommario: • Register Transfer Level (RTL) • I moduli base RTL In questa lezione verranno presentate le caratteristiche del livello RTL e i moduli primitivi utilizzati. Questi moduli corrispondono ad elementi fisici che sono usati sia nel caso della progettazione discreta sia in quella VLSI. Livello RTL I Moduli combinatori (l’uscita dipende solo dagli ingressi presenti ai moduli stessi) Modulo Funzioni eseguite Porte generalizzate Operazioni booleane su parole e non su singoli bit Multiplexer Instradamento dei dati. Un Mux consente di instradare i dati in base alle varie situazioni che si presentano (valore degli ingressi di selezione) Codificatori e Verifica e conversione di codici decodificatori Matrici logiche Consentono di costruire funzioni booleane complesse anche a più uscite Moduli aritmetici Operazioni numeriche (sommatori, ALU, comparatori) Oltre ai moduli combinatori esistono anche i moduli sequenziali, in cui l’uscita dipende non solo dall’ingresso in quel momento applicato, ma anche dagli stati interni memorizzati nei flip flop (elementi base dei registri). Moduli sequenziali Modulo Registro a scorrimento Contatori Funzione eseguita Conversione serie-parallelo e parallelo-serie; è un elemento di memorizzazione Controllo e generazione di temporizzazioni Si farà ora una descrizione di ciascun modulo. Poiché questi moduli ( sequenziali e combinatori) devono essere interconnessi tra loro si vedranno anche le strutture d’interconnessione. 2 CALCOLATORI ELETTRONICI A cura di Luca Orrù Porte generalizzate Sono dei moduli combinatori per svolgere operazioni (funzioni booleane) su parole. Esempio: Supponiamo di avere un’operazione booleana di NAND tra due variabili X e Y, cioè Z = X •Y operazione di Nand . Nel caso di porta generalizzata, X e Y non sono delle variabili booleane ma sono dei vettori. Quindi X e Y avranno ciascuno m componenti. X=(x1,x2,x3,-----xm) Y=(y1,y2,y3,-----ym) X1 Y1 X2 Y2 Xm Ym X Y m m m Z1 Z2 Zm X,Y,Z sono vettori a m componenti Z Schema 2 Schema 1 invece di considerare lo schema 1 si può considerare direttamente lo schema 2 semplificato. Così come per le porte logiche semplici, anche nelle porte logiche generalizzate si possono svolgere operazioni con scalari. In tal caso ogni componente vettoriale sarà interessata all’operazione. Esempio y + X = ( y + x1, y + x 2,...... y + xm ) il + indica un’operazione di or tra lo scalare y e il vettore X di componenti x1,x2,…xm. y è una variabile booleana, quindi può assumere solo i valori 0 o 1. 3 CALCOLATORI ELETTRONICI A cura di Luca Orrù Multiplexer • Elemento combinatorio che seleziona uno fra più dati d’ingresso e li invia verso una destinazione comune • I dati d’ingresso sono vettori di bit m Ingressi di selezione Abilitazione enable Abilita il Mux a trasferire l’informazione X1 Xn Multiplexer (MUX) Mux a ningressi di m bit m Z Vettore di m bit in uscita X1, X2, Xn sono i vettori d’ingresso di m bit Solo uno degli n vettori d’ingresso sarà presente in uscita, cioè sarà selezionato. La selezione avviene attraverso opportuni ingressi di selezione. Per poter selezionare tutti gli n vettori d’ingresso occorre un numero di selettori p dato dalla seguente espressione: numero Ingressi = 2^p Per n ingressi sarà n=2^p e quindi il numero p di selettori è dato da P=log2 n Vediamo ora un esempio di espansione a livello logico di un Multiplexer a 2 ingressi di 4 bit. L’esercizio consiste nel fare una rappresentazione logica tramite gli elementi primitivi che sono le porte logiche. 4 CALCOLATORI ELETTRONICI A cura di Luca Orrù X0 X1 4 4 So En Xo=(X00,X01,X02,X03) X1=(X10,X11,X12,X13) Z=(Z0,Z1,Z2,Z3) MUX 4 Z C’è un bit di selezione (So) e ci sono due vettori d’ingresso X0 e X1 a 4 bit. Se il select So=0 viene selezionato il vettore X0, mentre se il select So=1 viene selezionato il vettore X1. In uscita sarà presente in base al select, uno dei due vettori d’ingresso (X0 oppure X1). L’uscita Z assume quindi la seguente espressione logica Z = select ⋅ X 0 + select ⋅ X 1 X00 X10 X01 X11 X02 X12 X03 X13 Select Enable=1 Z0 Z1 Z2 Z3 Ricaviamo per esempio l’uscita Z0. Supponiamo naturalmente che l’enable valga 1 cioè Mux abilitato. Allora si ottiene la seguente espressione logica: Z 0 = select ⋅ X 00 + select ⋅ X 10 5 CALCOLATORI ELETTRONICI A cura di Luca Orrù Uso dei MUX • Con soli Mux è possibile realizzare (implementare) una qualunque funzione booleana di n variabili f(x1,x2,x3,….xn). Per realizzare la funzione booleana a n variabili è necessario un Mux con o 2^n ingressi da 1 bit o n ingressi di selezione per la selezione codificata (n selettori) • Agli ingressi del Mux sono posti i valori assunti dalla funzione per le varie combinazioni delle variabili della funzione • Le variabili della funzione sono poste agli ingressi di selezione Esempio E’ possibile realizzare K funzioni di 3 variabili con 7 multiplexer a 2 ingressi di K bit. Occorrono quindi 3 selettori (S0,S1,S2). Agli ingressi dei Mux sono posti i valori assunti dalle funzioni per le varie combinazioni delle variabili della funzione. X0 X1 X2 X4 X3 X5 X6 X7 K S0 MUX S1 MUX MUX MUX MUX MUX S2 MUX enable 2 Z Supponiamo per semplicità di avere K=1 e quindi gli ingressi sono dei bit e non dei vettori. Se S0=0 allora in uscita dal primo Mux si ha X0. Se poi abbiamo anche S1=0 e S2=0 allora in uscita si ha Z=X0. 6 CALCOLATORI ELETTRONICI A cura di Luca Orrù Se vogliamo che per S0=0, S1=0 e S2=0 la funzione Z assuma il valore zero basta porre X0=0 in ingresso al Mux. In funzione dei valori degli ingressi avremmo in uscita il valore scelto. Decodificatore (DEMUX) Detto anche Decoder o demux è un circuito combinatorio che: • Pone a 1 (attiva) una e solo 1 delle 2^n uscite • La variabile è scelta in funzione del valore degli ingressi che sono in numero di n X0 Enable X1 X2 Esempio con n=3 Numero uscite= 2^n=2^3=8 Decoder Z0 Z7 Questo è il meccanismo con cui vengono identificate le celle di memoria a partire da un indirizzo. Per esempio con 3 bit si selezionano 2^3=8 celle; con 10 bit si selezionano 1024 celle di memoria. Delle 2^n uscite sola un’uscita assume il valore 1, tutte le altre sono a zero. Quella che assume il valore 1 dipende dagli ingressi. Nell’esempio dei 3 bit, per X0=0,X1=0,X2=0 si ha Z0=1 e Zi=0 con i<>0. Vediamo ora l’espansione a livello logico ( vale a dire rappresentazione tramite porte logiche) di un Demux a 2 ingressi e 4 uscite. Ingressi X0 X1 0 0 0 1 1 0 1 1 Uscite Z0 Z1 1 0 0 1 0 0 0 0 Z2 0 0 1 0 Z3 0 0 0 1 7 CALCOLATORI ELETTRONICI A cura di Luca Orrù In sintesi abbiamo X0 0 0 1 1 X1 0 1 0 1 Z Z0 Z1 Z2 Z3 In corrispondenza della combinazione d’ingresso X0=0 e X1=0 viene attivata l’uscita Z0. Se X0=1 e X1=1 viene attivata l’uscita Z3. L’espansione a livello logico di un decoder a 2 ingressi e 4 uscite è rappresentata nel seguente schema X0 X1 Enable Z0 Z1 Z2 Z3 Matrici logiche o dispositivi logici programmabili (PLD) Una matrice logica è un elemento (modulo primitivo) fondamentale a livello RTL. Le matrici logiche sono circuiti combinatori a 2 livelli con struttura topologica ordinata. Realizzano funzioni tipo somma di prodotti. Le matrici logiche di tipo PLA sono usate per realizzare circuiti di controllo nei processori. Una struttura ordinata ha dei vantaggi. 8 CALCOLATORI ELETTRONICI A cura di Luca Orrù Implicanti PIANO AND Il piano OR realizza i termini somme logiche OR PIANO OR Ingressi Il piano AND realizza i termini prodotti logici AND Uscite Somme di prodotti logici Es. Y = x1 x 2 x3 + x1 x 2 x3 Il flusso informativo è il seguente: Ingressi inviati al piano degli AND e poi al piano degli OR che fornisce il valore delle uscite. Esempio a livello logico Rappresenta la connessione programmata A B C Blocco che trasferisce la variabile negata o la variabile non negata Ingressi X Y Z Uscite Piano OR 9 CALCOLATORI ELETTRONICI A cura di Luca Orrù Nell’esempio rappresentato sopra le uscite X e Y valgono rispettivamente: X = ABC Y = A B C + A BC Per realizzare funzioni diverse basta cambiare le interconnessioni e il numero di elementi OR e AND. La struttura topologica resta la stessa. Elementi aritmetici (Moduli aritmetici) Sono gli elementi fondamentali della CPU per l’esecuzione dei calcoli, ossia gli elementi che realizzano la ALU. Sono gli elementi combinatori più complessi. Esempi: Sommatore parallelo a 4 bit X0 X3 Y0 Y3 Riporto in ingresso Z=X+Y Riporto in uscita Z0 Z1 Z2 Z3 Esegue la somma aritmetica di due numeri in ingresso a 4 bit (X e Y) Comparatore X0 Abilitazione X3 Y0 Y3 Verifica che uno dei due numeri in ingresso sia maggiore, uguale o minore dell’altro numero Comparatore X>Y X=Y X<Y Nel comparatore una sola delle tre uscite diventa 1, a seconda che sia X<Y, X>Y o X=Y. 10 CALCOLATORI ELETTRONICI A cura di Luca Orrù Linguaggi di descrizione del Hardware Per la descrizione del Hardware con schemi non vi sono tecniche formali standardizzate. Si sono invece affermati linguaggi di descrizione del Hardware che derivano da linguaggi di programmazione ad alto livello come ADA o C. I linguaggi di descrizione più affermati sono: • Verilog: ha origini industriali e deriva dal linguaggio C • VHDL-VHSIC (Very High Speed Integrated Circuit): Hardware Description Language; deriva da ADA ed è stato promosso dal DoD; Questi linguaggi sono usati nella progettazione che utilizza tecniche automatiche (CAD). Esempio Semisommatore E’ un circuito che ha due ingressi X e Y, una uscita somma e una uscita riporto. X Y Half Adder (HA) Somma Riporto in uscita (Cout) La tabella di verità che descrive il suo funzionamento è la seguente: Ingressi Uscite X Y Somma Riporto 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 Somma = X ⊕ Y Riporto = X • Y Facciamo l’esempio di come l’oggetto Half Adder possa essere descritto con un semplice linguaggio. 11 CALCOLATORI ELETTRONICI A cura di Luca Orrù Entity is Half Adder Port (x,y: in bit; somma, riporto: out bit) end Half Adder Architecture behaviour of half-adder is Begin {somma<=X xor Y Riporto<=X and Y} end behaviour • • • • • • somma e riporto rappresentano il comportamento del Half Adder x e y sono i bit in ingresso somma e riporto sono i bit in uscita; in=ingresso out=uscita entity è l’oggetto Moduli sequenziali (Elementi di memoria) I registri Sono insiemi di Flip Flop in grado di trattare delle parole di molti bit (4,8,16,32,64 bit). Ogni Flip Flop può memorizzare un solo bit. Riassumendo: • elementi di memoria a livello RTL: i registri • i registri sono costituiti da Flip Flop collegati per memorizzare e operare su insieme di bit X0 X1 X2 X3 D D D D CK CK CK CK Clear CK Z0 Z1 Z3 Z2 12 CALCOLATORI ELETTRONICI A cura di Luca Orrù • Il segnale di Clear porta a zero le uscite in modo asincrono rispetto al clock. • I flip flop sono caratterizzati da un clock comune che consente la lettura/scrittura dei dati nello stesso istante • X0,X1,X2,X3 è il vettore d’ingresso • Z0,Z1,Z2,Z3 sono le uscite • I flip flop sono di tipo D e realizzano un registro con ingresso/uscita paralleli; in pratica quando viene inviato un segnale di clock i dati presenti agli ingressi dei Flip Flop vengono immagazzinati negli stessi flip flop e presentati alle uscite Registri a scorrimento a 4 bit Ingresso seriale e uscita seriale X Clear Registro a 4 bit Clock Z X D D D D CK CK CK CK Clear CK Uscita In questo caso il registro serve per riportare in uscita il segnale d’ingresso facendo scorrere il bit di una posizione alla volta. Quando viene attivato il clock, il dato presente all’ingresso viene memorizzato nel primo FF e il dato precedentemente 13 CALCOLATORI ELETTRONICI A cura di Luca Orrù memorizzato nel primo FF passa al secondo FF e cosi via fino all’ultimo FF dalla quale si preleva l’uscita (singolo bit). Dopo un numero di colpi di clock pari al numero di FF che formano il registro, i dati sono memorizzati nel registro. Per memorizzare 4 bit occorrono quindi 4 colpi di clock. I flip flop sono connessi in modo che i bit possano trasferirsi ordinatamente da un elemento a quello adiacente. Il trasferimento avviene ad ogni colpo di clock. Registro generalizzato Registro che consente le seguenti funzioni: • Ingresso parallelo • Ingresso seriale • Uscita parallela • Uscita seriale • Abilitazione scorrimento • Scorrimento a destra e sinistra Ingresso sinistro Dati in ingresso con shift a destra Ingresso parallelo Ingresso destro Dati in ingresso con shift a sinistra Caricatore parallelo Scorrimento a sinistra Abilitazione scorrimento Registro a scorrimento generalizzato a 4 bit Clear Uscita sinistra Dati in uscita con shift a sinistra Uscita parallela Uscita destra Dati in uscita con shift a destra I dati possono scorrere da sinistra a destra o da destra a sinistra. Inoltre il registro può accettare i dati sia in serie che in parallelo. 14 CALCOLATORI ELETTRONICI A cura di Luca Orrù Contatori I contatori sono moduli sequenziali che hanno come solo ingresso il segnale di clock. Permettono di realizzare funzioni di conteggio, ma sono anche usati per generare segnali di controllo. Nell’esempio seguente gli ingressi T di tutti i flip flop devono essere posti allo stato logico 1 perché in questo stato i flip flop T commutano ad ogni colpo di clock ed è quello che deve avvenire per poter incrementare di 1 il conteggio ad ogni colpo di clock. La configurazione dei flip flop deve essere di tipo Master Slave in modo da avere commutazione degli stati durante i fronti di discesa del clock. 1 P Count P P P T T T T CK CK CK CK Clear Ingresso principale X0 X1 X3 X2 • P è l’ingresso di preset che porta ad 1 le singole uscite. • Il clear effettua un azzeramento dei FF, ponendo a zero tutte le uscite. Da inizio al conteggio • Questo è un circuito asincrono dove il segnale di clock va al primo FF e non a tutti i FF direttamente, e si propaga agli altri FF tramite l’uscita del FF dello stadio precedente. • Il FF di tipo T quando T=1 commuta il valore dello stato precedente ad ogni colpo di clock. Si ricorda brevemente il funzionamento di un FF T FF T Clock T 1 0 1 1 0 X Qt+1 Qt Qt Qt 15 CALCOLATORI ELETTRONICI A cura di Luca Orrù Qt+1 è l’uscita all’istante t+1, mentre Qt è l’uscita all’istante t Funzionamento: • quando il clock=1 l’uscita Qt+1 vale Qt se T=0 e vale Qt se T=1; • quando il clock=0 l’uscita Qt+1 è pari al valore dell’uscita all’istante precedente indipendentemente dal valore dell’ingresso. Diagramma temporale di un contatore modulo 4 (conta fino a 4). clock 1 X0 0 1 0 0 1 1 X1 0 0 0 l’uscita X0 agisce da clock per l’uscita X1. Al quinto colpo di clock il conteggio riprende da zero. Si noti come la commutazione delle uscite avvenga durante il fronte di discesa del clock; in caso contrario, cioè se la commutazione avvenisse durante il fronte di salite del clock, il conteggio sarebbe errato. Si può infatti verificare come già al primo colpo di clock la configurazione delle uscite passa da 00 a 11. X0 0 0 1 1 X1 0 1 0 1 conteggio 0 1 2 3 Questi sono solo alcuni moduli per la descrizione dei sistemi a livello RTL. 16