490 likes | 769 Views
Capitolo 3: Logica combinatoria multi-livello Reti Logiche Contemporary Logic Design Randy H. Katz University of California, Berkeley May 1993 Trasparenze tradotte da: Luciano Lavagno Universita’ di Udine Settembre 1998. Sommario. • Logica multi-livello
E N D
Capitolo 3: Logica combinatoria multi-livelloReti LogicheContemporary Logic DesignRandy H. KatzUniversity of California, BerkeleyMay 1993Trasparenze tradotte da:Luciano LavagnoUniversita’ di UdineSettembre 1998
Sommario • Logica multi-livello Conversione a reti in forma NAND-NAND e NOR-NOR La legge di DeMorgan e l’eliminazione delle inversioni Blocchi funzionali AND-OR-Invert Strumenti CAD per ottimizzazione multi-livello • Risposta nel tempo delle reti logiche combinatorie Ritardi delle porte e forme d’onda nel tempo Alee e come evitarle
Logica multi-livello: vantaggi Forma di somme di prodotti minimizzata: x = A D F + A E F + B D F + B E F + C D F + C E F + G 6 x AND a 3 ingressi + 1 x OR a 7 ingressi (potrebbe non esistere!) 25 fili (19 letterali + 6 fili interni) Forma fattorizzata: x = (A + B + C) (D + E) F + G 1 x OR a 3 ingressi, 2 x OR a 2 ingressi, 1 x AND a 3 ingressi 10 fili (7 letterali + 3 fili interni)
A A B B A + B A • B A + B A • B 0 1 0 1 0 0 1 1 0 1 1 0 1 1 1 1 1 0 0 1 1 1 1 1 1 0 1 0 1 1 0 0 Logica multi-livello: conversione tra forme Reti NAND-NAND e NOR-NOR Leggi di DeMorgan: (A + B)' = A' • B'; (A • B)' = A' + B' Scritte diversamente: A + B = (A' • B')'; (A • B) = (A' + B')' In altre parole: OR e’ come NAND con ingressi complementati AND e’ come NOR con ingressi complementati NAND e’ come OR con ingressi complementati NOR e’ come AND con ingressi complementati Equivalenza OR/NAND A A º OR OR B B A º A Nand Nand B B
A A B B A • B A + B A • B A + B 0 1 0 1 0 0 1 1 0 1 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0 1 1 0 0 Logica multi-livello: conversione tra forme Equivalenza AND/NOR A A º AND AND B B A º A NOR NOR B B Si possono convertire reti con AND ed OR in reti con NAND e NOR, introducendo le inversioni opportune (“bolle”) Per mantenere i livelli logici, ogni inversione deve avere un’inversione corrispondente
Logica multi-livello: conversione tra forme Esempio: trasformare rete AND/OR in rete NAND/NAND (A) (B) AND OR AND NAND NAND (C) (D) NAND NAND NAND NAND
Logica multi-livello: conversione tra forme Esempio: trasformare rete AND/OR in rete NAND/NAND NAND NAND NAND Z = [(A•B)' (C•D)']' = [(A' + B') (C' + D')]' = [(A' + B')' • (C' + D')'] = (A • B) + (C • D) ¦ Verificare l’equivalenza delle due forme: Questa e’ la conversione facile!!
Logica multi-livello: conversione tra forme Esempio: trasformare rete AND/OR in rete NOR/NOR NOR NOR NOR NOR NOR Passo 2 Passo 1 Mantenere le ”bolle" Mantenere le ”bolle" Z = Verificare l’equivalenza delle due forme
Logica multi-livello: conversione tra forme Esempio: trasformare rete AND/OR in rete NOR/NOR NOR NOR NOR NOR NOR Passo 2 Passo 1 Mantenere le ”bolle" Mantenere le ”bolle" Z = {[(A' + B')' + (C' + D')']'}' = {(A' + B') • (C' + D')}' = (A' + B')' + (C' + D')' = (A • B) + (C • D) ¦ Verificare l’equivalenza delle due forme Questa e’ la conversione difficile!! Da AND/OR a NAND/NAND e’ piu’ naturale
Logica multi-livello: conversione tra forme Esempio: trasformare rete OR/AND in rete NOR/NOR NOR NOR NOR Mantenere le ”bolle" Z = Verificare l’equivalenza delle due forme
Logica multi-livello: conversione tra forme Esempio: trasformare rete OR/AND in rete NOR/NOR NOR NOR NOR Mantenere le ”bolle" Z = Z = [(A + B)' + (C + D)']' = {(A + B)'}' • {(C + D)'}' = (A + B) • (C + D) ¦ Verificare l’equivalenza delle due forme Questa e’ la conversione facile!
Logica multi-livello: conversione tra forme Esempio: trasformare rete OR/AND in rete NOR/NOR Nand Nand Nand Nand Nand Passo 2 Passo 1 Mantenere le ”bolle" Mantenere le ”bolle" Z = Verificare l’equivalenza delle due forme
Logica multi-livello: conversione tra forme Esempio: trasformare rete OR/AND in rete NOR/NOR Nand Nand Nand Nand Nand Passo 2 Passo 1 Mantenere le ”bolle" Mantenere le ”bolle" Z = Z = {[(A' • B')' • (C' • D')']'}' = {(A' • B') + (C' • D')}' = (A' • B')' • (C' • D')' = (A + B) • (C + D) ¦ Verificare l’equivalenza delle due forme Da OR/AND a NOR/NOR e’ piu’ naturale Questa e’ la conversione difficile!
Logica multi-livello: piu’ di 2 livelli ƒ = A (B + C D) + B C' Rete originale AND-OR Introduzione e mantenimento delle inversioni (“bolle”) La stessa rete ridisegnata in termini di porte NAND tradizionali
Logica multi-livello: piu’ di due livelli Stessa rete iniziale dopo l’inserzione delle inversioni Rete finale, disegnata in form NOR-NOR pura
Logica multi-livello: piu’ di due livelli Esempio di conversione Circuito originale Aggiungere doppie inversioni Inserire invertitori per “mettere a posto” le corrispondenze Distribuire inversioni (causando mancate corrispondenze tra inversioni)
Logica multi-livello: blocchi AND-OR-Invert Funzione AOI: logica multi-livello — AND, OR, Invertitore Porte multiple ”raggruppate" in un solo blocco logico Rete logica equivalente Possibile realizzazione ad interruttori AND OR Invertitore due ingressi, due gruppi Simbolo logico 2x2 AOI Simbolo logico 3x2 AOI
Logica multi-livello: AND-OR-Invert Esempio: realizzazione di uno XOR A xor B = A' B + A B' = ( ? )' forma AOI (A' B + A B')' (A + B') (A' + B) (A B + A' B') Metodo generale per mettere in forma AOI: Calcolare il complemento in forma di Somme di Prodotti coprendo gli 0 nella mappa di Karnaugh A 0 1 B 0 0 1 ƒ = (A' B' + A B)' 0 1 1
Logica multi-livello: AND-OR-Invert Esempio: F = B C' + A C' + A B F' = A' B' + A' C + B' C Realizzata da porta AOI 2 ingressi 3 gruppi F = (A + B) (A + C') (B + C') F' = (B' + C) (A' + C) (A' + B') Realizzata da porta OAI 2 ingressi 3 gruppi Mappa di F' Esempi: Uguaglianza su 4 bit Z = (A0 B0 + A0' B0') (A1 B1 + A1' B1') (A2 B2 + A2' B2') (A3 B3 + A3' B3') Ognuno realizzato da una porta AOI 2x2
Logica multi-livello: AND-OR-Invert Esempio: realizzazione con AOI di uguaglianza su 4 bit Alto se A0 <> B0, Basso se A0 = B0 A = B attivo basso Conservazione delle inversioni Se tutti gli ingressi sono bassi (veri in logica negativa) allora Ai = Bi, i=0,...,3 L’uscita Z e’ vera NOR
Logica multi-livello: strumenti CAD per semplificazione Ottimizzazione multi-livello: 1. fattorizzare logica condivisa (riduce fan-in, aumenta livelli), con vincoli di ritardo 2. Realizzare la forma fattorizzata usando una biblioteca di porte 3. Minimizzare il numero di letterali (correlato con il numero di fili) Forma fattorizzata: somme di prodotti di somme di prodotti ... X = (A B + B' C) (C + D (E + A C')) + (D + E)(F G)
Logica multi-livello: strumenti CAD per semplificazione Operazioni su forme fattorizzate: • Decomposizione • Estrazione • Fattorizzazione • Sostituzione • Fusione (“collapsing”) Manipolare la rete dando le istruzioni appropriate in modo interattivo Non c’e’ un algoritmo che garantisca di ottenere la rete multi-livello “migliore”
Logica multi-livello: strumenti CAD per semplificazione Decomposizione: Prendere un’espressione booleana e sostituirla con un insieme di espressioni e fili: F = A B C + A B D + A' C' D' + B' C' D' F puo’ essere riscritta come: F = X Y + X' Y' X = A B Y = C + D (12 letterali) (8 letterali) Dopo la decomposizione Prima della decomposizione
Logica multi-livello: strumenti CAD per semplificazione Estrazione: fattorizzazione di sottoespressioni comuni F = (A + B) C D + E G = (A + B) E' H = C D E Puo’ essere riscritta come: F = X Y + E G = X E' H = Y E X = A + B Y = C D (11 letterali) (11 letterali) "Kernel": divisori primari Dopo l’estrazione Prima dell’estrazione
Logica multi-livello: strumenti CAD per semplificazione Fattorizzazione: espressione a due livelli ri-espressa in forma multi-livello F = A C + A D + B C + B D + E puo’ essere riscritta come: F = (A + B) (C + D) + E (9 letterali) (5 letterali) Prima della fattorizzazione Dopo la fattorizzazione
Logica multi-livello: strumenti CAD per semplificazione Sostituzione: sostituire G in F, esprimere F in funzione di G F = A + B C G = A + B F riscritta usando G: F = G (A + C) (5 letterali) (3 letterali) Fusione (collapsing): inverso della sostituzione. Va usata per eliminare livelli e ridurre il ritardo F = G (A + C) = (A + B) (A + C) = A A + A C + A B + B C = A + B C
Logica multi-livello: strumenti CAD per semplificazione Strumento base per realizzare tutte queste operazioni: ”divisione” tra funzioni booleane F = P Q + R divisore quoziente resto Esempio: X = A C + A D + B C + B D + E Y = A + B X ”diviso" Y fa: X = Y (C + D) + E Problema: trovare divisori adatti F = A D + B C D + E G = A + B G non divide F usando le regole algebriche G divide F usando le regole booleane (moltissimi divisori!) F/G = (A + C) D F = [G (A + C) D] + E = (A + B) (A + C) D + E = (A A + A C + A B + B C) D + E = (A + B C) D + E = A D + B C D + E F scritta come G Q + R
Logica multi-livello: strumenti CAD per semplificazione Sessione misII (o SIS) con sommatore (full adder) % misII UC Berkeley, MIS Release #2.1 (compiled 3-Mar-89 at 5:32 PM) misII> re full.adder misII> p {co} = a b ci + a b ci' + a b' ci + a' b ci {sum} = a b ci + a b' ci' + a' b ci' + a' b' ci misII> pf {co} = a b' ci + b (ci (a' + a) + a ci') {sum} = ci (a' b' + a b) + ci' (a b' + a' b) misII> sim1 * misII> p {co} = a b + a ci + b ci {sum} = a b ci + a b' ci' + a' b ci' + a' b' ci misII> pf {co} = ci (b + a) + a b {sum} = ci (a' b' + a b) + ci' (a b' + a' b) misII> gd * misII> pf {co} = a [2] + b ci {sum} = a' [3]' + a [3] [2] = ci + b [3] = b' ci' + b ci leggere equazioni minimizzazione su due livelli decomposizione “buona” Finora e’ indipendente dalla tecnologia...
Logica multi-livello: strumenti CAD per semplificazione misII> rlib msu.genlib misII> map misII> pf [361] = b' ci' + a' [328] = b' [329] = ci' {co} = [328]' [329]' + [361]' [3] = b ci' + b' ci {sum} = [3] a' + [3]' a misII> pg [361] 1890:physical 32.00 [328] 1310:physical 16.00 [329] 1310:physical 16.00 {co} 1890:physical 32.00 [3] 2310:physical 40.00 {sum} 2310:physical 40.00 misII> pat ... using library delay model {sum} : arrival=( 2.2 2.2) {co} : arrival=( 2.2 2.2) [328] : arrival=( 1.2 1.2) [361] : arrival=( 1.2 1.2) [329] : arrival=( 1.2 1.2) [3] : arrival=( 1.2 1.2) ci : arrival=( 0.0 0.0) b : arrival=( 0.0 0.0) a : arrival=( 0.0 0.0) misII> quit % leggere la biblioteca di celle e realizzare con le porte logiche (“technology mapping”) porte che realizzano i vari nodi e loro aree analisi dei ritardi ritardo = 1 + 0.2 * # fan-out
Logica multi-livello: strumenti CAD per semplificazione misII e la biblioteca MSU NumeroNome Funzione 1310 inv A' 1120 nor2 (A+B)' 1130 nor3 (A+B+C)' 1140 nor4 (A+B+C+D)' 1220 nand2 (A•B)' 1230 nand3 (A•B•C)' 1240 nand4 (A•B•C•D)' 1660 and2/nand2 [A•B, (A•B)'] 1670 and3/nand3 [A•B•C, (A•B•C)'] 1680 and4/nand4 [A•B•C•D, (A•B•C•D)'] 1760 or2/nor2 [A+B, (A+B)'] 1770 or3/nor3 [A+B+C, (A+B+C)'] 1780 or4 (A+B+C+D) 1870 aoi22 (A•B + C•D)' 1880 aoi21 (A + B•C)' 1860 oai22 [(A + B)(C + D)]' 1890 oai21 [A (B + C)]' 1970 ao22 A•B + D•E 1810 ao222 A•B + C•D + E•F 1910 ao2222 A•B + C•D + E•F + G•H 1930 ao33 A•B•C + D•E•F 2310 xor2 A•B' + A'•B 2350 xnor2 A•B + A'•B' Celle standard VLSI Nota: OR-AND-INVERT e’ equivalente a INVERT-AND-OR
Logica multi-livello: strumenti CAD per semplificazione Altri esempi misII e “script” di semplificazione: misII -f script -t pla <file con tabella di verita’ espresso> Full Adder: Formato di uscita in stile PLA di misII .model full.adder .inputs a b ci .outputs sum co .names a b ci co sum 1--0 1 -1-0 1 --10 1 111- 1 .names a b ci co 11- 1 1-1 1 -11 1 .end variabili di ingresso variabile di uscita SUM = A CO' + B CO' + CI CO' + A B CI (9 letterali) CO = A B + A CI + B CI (6 letterali) Nota: A xor B xor CI = A' B' CI + A B' CI' + A' B CI' + A B CI (12 letterali!)
Logica multi-livello: strumenti CAD per semplificazione Realizzazione multi-livello del sommatore: 5 livelli!!
Logica multi-livello: strumenti CAD per semplificazione Sommatore a 2 bit Z = B' D + B D' + A' C D' [22] = A D Z' X = [22] + A C + C Z' Y = A X + C [22] + B C X' + C D X' + D X' Z' .inputs a b c d .outputs x y z .names a c z [22] x ---1 1 11-- 1 -10- 1 .names a b c d x z [22] y 1---0-- 1 --1---1 1 -11-0-- 1 --110-- 1 ---100- 1 .names a b c d z -0-1 1 -1-0 1 0-10 1 .names a d z [22] 110 1 .end Uscita di misII 8 livelli logici!
Logica multi-livello: strumenti CAD per semplificazione Incremento di 1 in BCD .model bcd.increment .inputs a b c d .outputs w x y z .names a b c d z w 1---1 1 0111- 1 .names a b c w z x 01-0- 1 0-100 1 .names a c z y -11 1 000 1 .names a b c d z 0--0 1 -000 1 .end Z = A' D' + B' C' D' Y = C Z + A' C' Z' W = A Z + A' B C D X = A' B W' + A' C W' Z' Uscita di misII
Risposta nel tempo di reti combinatorie • Consideriamo il comportamento nel tempo dei circuiti • Usiamo le forme d’onda per visualizzarlo • Usiamo la simulazione per creare le forme d’onda • Rapidi cambiamenti di valore in uscita: alee possono essere utili— circuiti di formazione di impulsi possono essere problematiche — impulsi spuri (glitch) Termini: ritardo di una porta (gate delay): tempo da un cambiamento in ingresso ad uno in uscita ritardo minimo, medio/tipico, massimo un buon progettista pensa al caso peggiore!! tempo di salita (rise time): tempo per transizione in uscita da tensione bassa ad alta tempo di discesa (fall time): tempo per transizione in uscita da tensione alta a bassa
Risposta nel tempo di reti combinatorie Circuito di formazione di impulsi A B C D F A' • A = 0 3 ritardi di porta D rimane ad 1 per 3 ritardi dopo che A e’ salito da 0 ad 1 F non rimane sempre a 0!
Risposta nel tempo di reti combinatorie Alee e come evitarle Transizioni indesiderate sulle uscite Accadono perche’ cammini diversi sulle uscite subiscono ritardi di propagazione diversi Pericolose se la logica “prende una decisione” quando l’uscita non e’ stabile, o quando l’uscita controlla una rete sequenziale asincrona queste rispondono immediatamente ad ogni transizione in ingresso, senza aspettare il clock Soluzione normale (circuiti sincroni) aspettare (con un clock) che i segnali siano stabili non usare mai, mai, mai circuiti con ingressi asincroni progettare circuiti asincroni senza alee I primi due metodi sono i piu’ sicuri, ma vale la pena conoscere anche il terzo...
Alea statica ad 1 Alea statica a 0 Alee dinamiche Risposta nel tempo di reti combinatorie Alee e come evitarle 1 1 L’ingresso fa passare l’uscita da 1 a 0 ad 1 0 1 L’ingresso fa passare l’uscita da 0 ad 1 a 0 0 0 1 1 0 0 L’ingresso causa una doppia transizione da 0 ad 1 a 0 ad 1 OPPURE da 1 a 0 ad 1 a 0 1 1 0 0 Tipi di alee
Risposta nel tempo di reti combinatorie Esempio di alea 1 1 A A 1 1 G1 G1 \C \C 1 1 1 1 G3 F G3 F 0 0 \A \A G2 G2 D D 0 0 0 1 ABCD = 1101 ABCD = 1100 cambiamento di ingresso entro un termine prodotto F = A' D + A C' 0 0 1 A A 0 A 0 1 G1 G1 G1 \C \C \C 0 1 1 1 1 1 G3 F G3 F G3 F 0 0 1 \A \A \A G2 G2 G2 D D D 0 0 1 1 1 1 ABCD = 0101 (A is still 0) ABCD = 0111 (A is 1) ABCD = 1101 cambiamento di ingresso che influenza piu’ di un termine: uscita cambia da 1 a 0 ad 1
Risposta nel tempo di reti combinatorie Esempio di alea Strategia generale: aggiungere termini ridondanti F = A' D + A C' diventa A' D + A C' + C' D Questo elimina alee ad 1. E le alee a 0? Derivare F in prodotti di somme (coprendo gli 0) F = (A' + C')(A + D) Anche adesso c’e’ un’alea! Aggiungere un termine: (C' + D) Quest’espressione e’ equivalente alla forma in somme di prodotti senza alee di F
Risposta nel tempo di reti combinatorie Esempio di alee Cominciare con espressione senza alee ad 1: F = A C' + A' D + C' D F' = (A C' + A' D + C' D)' = (A' + D) (A + D') (C + D') = A C + A C D' + C D' + A' C D' + A' D' = A C + C D' + A' D' copre tutti gli 1 adiacenti nella mappa di Karnaugh non ha alee ne’ a 0 ne’ ad 1! Lavorare con il complemento:
Risposta nel tempo di reti combinatorie Progetto di reti a 2 livelli per funzionamento senza alee Eliminare le alee statiche per tutte le transizioni di una sola variabile: Basta realizzare la funzione in somme di prodotti garantendo che ogni coppia di 1 adiacenti siano coperti da un termine prodotto Sono necessari e sufficienti tutti gli implicanti primi F(A,B,C,D) = m(1,3,5,7,8,9,12,13,14,15) F = A B + A' D + B D + A C' + C' D
Risposta nel tempo di reti combinatorie Alee statiche a 0 e ad 1 Forma normale somme di prodotti: - non ha alee ad 1 se usiamo tutti gli implicanti primi - non ha mai alee a 0 (De Morgan e moltiplicazione crea automaticamente tutti i termini somma) Forma normale prodotti di somme: - non ha alee a 0 se usiamo tutti gli implicanti primi - non ha mai alee ad 1 (De Morgan e moltiplicazione crea automaticamente tutti i termini prodotto) Possiamo eliminare tutte le alee? - no, solo quelle logiche - alee funzionali non possono essere eliminate Analisi delle alee/sintesi senza alee richiede di specificare le transizioni di interesse, rispetto a cui le alee verranno analizzate/eliminate
Risposta nel tempo di reti combinatorie Alee logiche e funzionali Alee logiche: esiste un termine prodotto per alee ad 1 (o un termine somma per alee a 0) che copra punto iniziale e finale della transizione Esempi: AB’C’D’ -> ABC’D (coperti da AC’) A’B’CD’ -> A’BC’D’ (coperti da A’ + D’) Alee funzionali: non esiste un termine prodotto per alee ad 1 (o un termine somma per alee a 0) che copra punto iniziale e finale della transizione Esempi: 1000 -> 0001 (alea funzionale ad 1) 1011 -> 0010 (alea funzionale a 0)
Risposta nel tempo di reti combinatorie Come identificare alee statiche in circuiti multi-livello: Calcolare la funzione di uscita per i transitori variabili e complementi trattati come indipendenti non si puo’ usare X + X' = 1 o X • X' = 0 per semplificare Esempio: F = A B C + (A + D) (A' + C') F1 = A B C + A A' + A C' + A' D + C' D in forma a 2 livelli ABCD: da 1111 a 1110 coperta dal termine ABC, quindi non c’e’ alea ad 1 ABCD: da 1110 a 1100 il termine ABC va a 0 mentre AC' va ad 1 ci sono ancora alee statiche!
Risposta nel tempo di reti combinatorie Alee statiche ad 1 Soluzione: aggiungere termini ridondanti per garantire la copertura di tutte le transizioni tra due 1 adiacenti F2 = A C' + A' D + C' D + A B + B D Alee ad 1 di F corrette in F2
Risposta nel tempo di reti combinatorie Progetto di reti per funzionamento senza alee Basta mettere la funzione del transitorio di uscita in una forma che garantisca che ogni coppia di 1 adiacenti siano coperti da un termine prodotto Nessun termine della funzione di transitorio puo’ contenere una variabile ed il suo complemento F(A,B,C,D) = m(1,3,5,7,8,9,12,13,14,15) F = A B + A' D + B D + A C' + C' D = (A' + B + C') D + A (B + C') (fattorizzata usando l’assioma di distributivita’, che non introduce alee perche’ non dipende dall’assioma di complementarieta’)
0 1 0 1 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 Molto lenta Risposta nel tempo di reti combinatorie Alee dinamiche Esempio con alee dinamiche 1 \A G1 B Lenta G3 \B G2 \C G5 F 1 0 A G4 \B Tre cammini diversi da B o B' all’uscita ABC = 000, F = 1 to ABC = 010, F = 0 ritardi diversi lungo i cammini: G1 lenta, G4 molto lenta Eliminare le alee dinamiche e’ molto complicato Non ne parleremo in questo corso...
Riassunto del capitolo • Passaggio da porte semplici a blocchi piu’ complessi • Conversione da AND/OR, OR/AND a NAND/NAND, NOR/NOR • Logica multi-livello: meno porte e fan-in, ma piu’ ritardo • Uso di misII per minimizzare logica multi-livello e realizzare in una biblioteca di porte (technology mapping) • Risposta nel tempo di logica combinatoria: ritardo delle porte, tempi di salita e discesa alee e progetto senza alee