Reti Combinatorie: sintesi
Sintesi di reti combinatorie Una rete combinatoria realizza una funzione di commutazione Data una tabella di verità è possibile ricavare più espressioni equivalenti che la rappresentano. Obiettivi: massimizzare le prestazioni: realizzare una rete logica il più veloce possibile (minimizzare il numero di livelli della rete) minimizzare il costo: realizzare rete con minimo numero di porte oppure con minimo numero di ingressi
Forme canoniche come reti Ogni funzione Y può essere espressa in forma canonica: Somma di prodotti Prodotti di somme. X Y = (,5,6) ÿx ÿ X 2 ÿ X X X 2 5 Y ÿ X X 6 Rete OR di AND: Somma di prodotti X 2
Analisi e Sintesi di reti logiche STRUTTURA della Rete ANALISI SINTESI COMPORTAMENTO della Rete
Costo e velocità di un circuito Realizziamo una funzione come somma di prodotti Sono possibili diverse realizzazioni equivalenti Velocità: numero di livelli logici Costo: Somma del numero di letterali e degli implicanti X 3 ÿx ÿx 2 3 X ÿx X 2 Y Velocità: 2 livelli Costo: 3+3+3+3=2 3 ÿx X X 2 Rete AND in OR
Definizioni Una funzione di commutazione di n variabili può essere espressa come somme di prodotti (OR di AND), ex n=4 Y= P + P 2 + + P K = X 3 X + X 4 X 2 X + X 4 X 3 X 2 X letterale: var. positiva o negativa P i implicante della funzione, P i Æy Infatti P i = implica y=, ex: X 4 X 3 X 2 X Æy Implicante primo: implicante per il quale non è possibile eliminare un letterale dalla sua espressione ed ottenere ancora un implicante, esempio X 4 X 2 X Espressione minima: espressione nella quale non possono essere eliminati né un letterale né un termine senza alterare la funzione rappresentata dall espressione stessa. Y= X 3 X + X 4 X 2 X
Realizzazioni di F = AB + C A B C F sum-of-products sum-of-products F2 product-of-sums F3 product-of-sums F4
Mappe di Karnaugh (MK) Le mappe di Karnaugh sono tabelle che permettono la rappresentazione e la semplificazione delle funzioni di commutazione fino a quattro variabili. E' possibile usarle, con qualche difficoltà, anche per funzioni di cinque e sei variabili Le mappe di Karnaugh per le funzioni di 2, 3, 4, 5 variabili sono divise in tante caselle (o "celle") quanti sono i corrispondenti mintermini (4, 8, 6, 32).
MK per 2 variabili Tabella di verità X X Y X Y X 2 3
MK per 2,3,4 variabili X Y X Y X 3 2 X X 2 3 2 4 5 7 6 X 3 X 2 Y X X 4 5 2 3 8 9 3 2 7 6 5 4 Le caselle adiacenti corrispondono a configurazioni delle variabili di ingresso che differiscono di un solo bit NOTA: le caselle sulle due colonne estreme sono adiacenti, (immagina che la mappa fosse originariamente su una sfera
Esempio Y = S (,5,6) = ÿx 3 ÿx 2 ÿx X + ÿx 3 X 2 ÿx X + X 3 X 2 X ÿx ->m ->m 5 ->m 2 X 3 X 2 Y X X 4 5 2 3 8 9 3 2 7 6 5 4 X 3 X 2 Y X X Se la funzione è data come somma di mintermini, basta scrivere in tutte le celle corrispondenti ai mintermini della somma
Semplificazione 3 2 4 5 7 6 2 3 5 4 8 9 X 3 X 2 Y X X m + m 5 = X 3 X 2 X X +X 3 X 2 X X =j X 2 + j X 2 j =X 3 X X = j (X 2 +X 2 ) = j m ed m 5 non sono implicanti primi, mentre j è un implicante primo In una mappa K un implicante primo corrisponde ad un raggruppamento di 2 i celle adiacenti (cubi), sia orizzontalmente o verticalmente, non incluso in altri raggruppamenti
Esempi X 3 X 2 Y X X Y (ÿx3 X ) X 3 X 2 X X (ÿx 3 ÿx ) X 3 X 2 Y X X X Y X (X ) X 3 X 2 (ÿx )
Altre definizioni Implicante primo essenziale: implicante primo rappresentato da un cubo che copre almeno un non coperto da altri implicanti primi Un insieme di implicanti primi essenziali permette di rappresentare la funzione
Esempi Y X X X 3 X 2 Y X X Y X X Y X 3 X 2 X X
Algoritmo per la minimizzazione. Si segnano con le caselle relative ai mintermini della funzione 2. Si identificano gli implicanti primi essenziali e si disegnano i relativi cubi. Se sono coperti tutti i mintermini si va al passo 4, altrimenti al 3. 3. Si coprono i restanti mintermini con il minor numero possibile di implicanti 4. Fine della procedura NOTA: non univocità del passo 3
Esempio X 3 X 2 Y X X
Funzioni parzialmente specificate Funzioni in cui non sono possibili alcune configurazioni delle variabili di ingresso o non interessa il valore di uscita per alcune configurazioni di ingresso Esempio: date quattro variabili di commutazione codificanti i numeri..9 la funzione è vera quando il numero è divisibile per 3
Tabella di verità e MK di una funzione parz. spec. x 3 x 2 x x f d.c.c. d.c.c. d.c.c. d.c.c. d.c.c. d.c.c. Realizzare un circuito che riconosca se un numero compreso tra e 9 sia divisibile per 3 X 3 X 2 Y - - X X - - - -
Algoritmo per la minimizzazione. Si segnano con le caselle relative ai mintermini e con le d.c.c. (don t care condition) della funzione. 2. Si identificano gli implicanti primi essenziali rappresentati da cubi costituiti da e ed aventi almeno un. Se sono coperti tutti i mintermini si va al passo 4, altrimenti al 3. 3. Si coprono i restanti mintermini con il minor numero possibile di cubi aventi le dimensioni massime e costituiti da e -. NOTA: non esiste un modo veloce per realizzare il passo 3 in mto ottimale
Codificatore Realizza la funzione di codifica binaria: associa ad ogni elemento di un insieme G composto da m simboli, una sequenza distinta di n bit 2 n m m linee di ingresso x,..,x m-, n linea di uscita y,..,y n- La linea x i è associata al simbolo i-esimo Quando x i =, e x j = (j i), in uscita è presente il codice corrispondente al simbolo i-esimo X X y y n- X m-
Esempio Codifica cifre decimali in BCD y 3 y 2 y y 3 5 7 9 y 2 3 4 5 6 2 3 6 7 4 5 6 7 y y 2 7 8 8 9 y 3 9
Decodificatore Realizza la funzione inversa del codificatore: data una parola di un codice genera il simbolo corrispondente Per ogni configurazione di ingresso, una sola uscita vale, le altre hanno valore x y y x m- y n-
Esempio Decoder BCD-Cifre decimali (prima realizzazione) x 3 x 2 x x y 9 y 8 y 7 y 6 y 6 y 5 y 4 y 3 y 2 y y ÿx 3 ÿx 2 ÿx ÿx ÿx 3 ÿx 2 ÿx x x 3 ÿx 2 ÿx x... y y y 9
Esempio Decoder BCD-Cifre decimali (seconda realizzazione) ÿx 3 x 3 x 2 x x y 9 y 8 y 7 y 6 y 6 y 5 y 4 y 3 y 2 y y ÿx 2 ÿx 3 x 2 x 3 ÿx 2 x 3 x 2 ÿx ÿx ÿx x x ÿx x x y y.
Decodificatore con enable E dotato di un ulteriore ingresso di abilitazione E (detto anche strobe) Il decodificatore è abilitato (ossia il processo di decodifica ha luogo) solo quando E= E E
Realizzazione di funzioni con decoder x 2 x x f E E fusibile
ROM (Read Only Memory) Insieme di locazioni di memoria che possono essere lette specificandone l indirizzo Ingresso (indirizzo) Uscita (word) Una ROM è un circuito combinatorio
Schema logico di una ROM Funzioni realizzate come OR di mintermini input: m bit - indirizzo di memoria fusibile output: parola memorizzata
Implementazione ROM con C-MOS ROM 4x4 (numero parole x dimens. parola) R R R R Vdd Interruttore Indirizzo DEC Assenza collegamento = Uscita
Implementazione ROM (2) Esempio, indirizzo, uscita= R R R R Vdd Indirizzo DECODER Uscita
ROM temporizzazioni indirizzo valido t a t v X indirizzi dati cs oe Z cs oe t oe t cs t d Z alta impedenza dato valido alta impedenza ta : tempo di propagazione dall'ingresso X all'uscita Z tcs: tempo di propagazione dall'ingresso cs all'uscita Z toe: tempo di propagazione dall'ingresso oe all'uscita Z t v: tempo di mantenimento dell'uscita da quando commuta X o cs o oe td: tempo di disabilitazione dell'uscita da quando commuta cs o oe
Multiplexer (MUX 2 n :) Ingressi m=2 n ingressi dati n ingressi di selezione (controllo) Uscita Una fra le m, a seconda del controllo x x y S y X X x m- m-.. 2 n -.. X 2 n - s n- s
MUX 4-2 s s X X Y X 2 X 3
MUX - Generatore di funzioni y=f(x x x 2 )= m +m 2 +m 3 +m 6 =S(,2,3,6) 2 3 4 5 6 y=m M 4 M 5 M 7 =P(,4,5,7) 7 x x x 2
DEMUX 2-4 s s d Y d d 2 d3
Half Hadder - Semisommatore Ingresso 2 bit, uscita 2 bit C=AB S=(not A)B + A(not B)=A B A+ B= --- C S A B In Out C HA S A B S C A B HA S C
Full Hadder:Addizionatore completo Cin+ A+ B= ------ Cout S In A B Cin Out S Cout S vale solo quando un numero dispari di bit di ingresso vale. Quindi, S=A B C Cin AB Cin A B + Cout=CB+AB+CA S Cout
Full Adder: circuito minimo Si vale solo quando il numero di bit è dispari: S i = C i A i B i Inoltre, c i+ = A i B i + c i B i + c i A i = A i B i + c i (A i +B i ) = A i B i + c i (A i B i ) A i B i c i c i+ c i (A i B i ) A i B i S i
Ripple Carry Adder (RCA) a n- b n- a b a b c n Full Adder c n- c 2 Full Adder c Full Adder c s n- s s a n- b n- a b c n n-bit Ripple Carry Adder s n- s c Il tempo per ottenere il risultato è pari ad ntc, dove Tc è il tempo di propagazione del riporto
Circuito per la somma/sottrazione a n- b n- a b a b S/D FA FA FA c OVF s n- s s
Decodificatore Ogni uscita vale in corrispondenza di una ed una sola configurazione d ingresso I DEC Z Z 2 Z 3 I Z En Z = En I I En I I XX Z Z Z 2 Z 3 Z = En I I Z 2 = En I I Z 3 = En I I n DEC 2 n Nota: Z i è il mintermine m i Z i = Û (Input) 2 = i Un decoder con n segnali di ingresso possiede 2 n segnali di uscita
ALU (ad un solo bit) c in op op y a a AND b a OR b y (a+b+cin) mod 2?? b + 2 c out Op: ingresso del decodificatore, seleziona il tipo di operazione
ALU a 32 bit op a b c in ALU c out y a b c in ALU c out y a 3 b 3 c in ALU3 c out y 3
ALU (bit slice) op Inv.B - c in - y a AND b invertib op - - a OR b a c in y - (a+b+cin) mod 2 (a+not b) (a-b)* b + 2 c out * = rappresentazioni in complemento a 2
ALU a 32 bit NegaB op a c in op NegaB y b ALU c out y - - A AND B A OR C a c in A + B b ALU c out y A-B a 3 b 3 c in ALU3 c out y 3 Per verificare overflow È sufficiente confrontare se in corrispondenza del MSB, c in c out Overflow detection Overflow
Supporto ALU per i salti Obiettivo: ampliare la ALU con il test della condizione a=b (utile per eseguire istruzioni in modo condizionato - jump) Sia Zero la variabile binaria cosi definita: Zero= se e solo se a=b Nota che Zero= <-> a=b <-> a-b= Pertanto Zero= se e solo se tutti i bit dell operazione a-b sono nulli: Zero coincide col mintermine m definito sui n bit r r n- che rappresentano la differenza. Zero=m = (not r )(not r ) (notr n- )= not (r +r.. +r n- )
ALU a 32 bit NegaB op a b c in ALU c out y a b c in ALU c out y Zero a 3 b 3 c in ALU3 c out y 3 Overflow detection Overflow