Reti Logiche Logica multi-livello 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 © R.H. Katz 3-1 Sommario Reti Logiche Logica multi-livello • 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 © R.H. Katz 3-2 Reti Logiche Logica multi-livello Logica multi-livello: vantaggi Forma di somme di prodotti minimizzata: x=ADF + AEF + BDF + BEF + CDF + CEF + G 6 x AND a 3 ingressi + 1 x OR a 7 ingressi (potrebbe non esistere!) 25 fili (19 letterali + 6 fili interni) A D F A E F B D F B E F C D F C E F G 1 2 3 4 5 7 x A B C 1 D E 2 3 4 x F G Forma fattorizzata: 6 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) © R.H. Katz 3-3 Reti Logiche Logica multi-livello Logica multi-livello: conversione tra forme Reti NAND-NAND e NOR-NOR Leggi di DeMorgan: (A + B)' = A' • B'; Scritte diversamente: A + B = (A' • B')'; (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 0 0 1 1 A 1 1 0 0 B 0 1 0 1 B 1 0 1 0 A +B 0 1 1 1 A• B 0 1 1 1 A +B 1 1 1 0 A• B 1 1 1 0 A B OR A B Nand A B OR A B Nand © R.H. Katz 3-4 Reti Logiche Logica multi-livello Logica multi-livello: conversione tra forme Equivalenza AND/NOR A 0 0 1 1 A 1 1 0 0 B 0 1 0 1 B 1 0 1 0 A• B 0 0 0 1 A+ B 0 0 0 1 A• B 1 0 0 0 A +B 1 0 0 0 A B AND A B NOR A B AND A B NOR 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 © R.H. Katz 3-5 Reti Logiche Logica multi-livello Logica multi-livello: conversione tra forme Esempio: trasformare rete AND/OR in rete NAND/NAND (A) A (B) A B B AND OR C D C D NAND AND NAND A (C) A B (D) B C D C D NAND NAND NAND NAND © R.H. Katz 3-6 Reti Logiche Logica multi-livello Logica multi-livello: conversione tra forme Esempio: trasformare rete AND/OR in rete NAND/NAND NAND A A B B Z C C Z NAND NAND D D Z = [(A•B)' (C•D)']' Verificare l’equivalenza delle due forme: = [(A' + B') (C' + D')]' = [(A' + B')' • (C' + D')'] = (A • B) + (C • D) ¦ Questa e’ la conversione facile!! © R.H. Katz 3-7 Reti Logiche Logica multi-livello Logica multi-livello: conversione tra forme Esempio: trasformare rete AND/OR in rete NOR/NOR NOR NOR A \A \B NOR B Z C NOR Z NOR \C D \D Passo 2 Passo 1 Mantenere le ”bolle" Mantenere le ”bolle" Z= Verificare l’equivalenza delle due forme © R.H. Katz 3-8 Reti Logiche Logica multi-livello Logica multi-livello: conversione tra forme Esempio: trasformare rete AND/OR in rete NOR/NOR NOR NOR A \A \B NOR B Z C Z NOR NOR \C D \D Passo 2 Passo 1 Mantenere le ”bolle" Mantenere le ”bolle" Z = {[(A' + B')' + (C' + D')']'}' Verificare l’equivalenza delle due forme = {(A' + B') • (C' + D')}' = (A' + B')' + (C' + D')' Questa e’ la conversione difficile!! = (A • B) + (C • D) ¦ Da AND/OR a NAND/NAND e’ piu’ naturale © R.H. Katz 3-9 Reti Logiche Logica multi-livello 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 © R.H. Katz 3-10 Reti Logiche Logica multi-livello Logica multi-livello: conversione tra forme Esempio: trasformare rete OR/AND in rete NOR/NOR NOR NOR NOR Mantenere le ”bolle" Z = [(A + B)' + (C + D)']' Verificare l’equivalenza delle due forme = {(A + B)'}' • {(C + D)'}' = (A + B) • (C + D) ¦ Questa e’ la conversione facile! © R.H. Katz 3-11 Reti Logiche Logica multi-livello 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 © R.H. Katz 3-12 Reti Logiche Logica multi-livello Logica multi-livello: conversione tra forme Esempio: trasformare rete OR/AND in rete NOR/NOR Nand Nand Nand Nand Passo 1 Nand Passo 2 Mantenere le ”bolle" Mantenere le ”bolle" Z = {[(A' • B')' • (C' • D')']'}' Verificare l’equivalenza delle due forme = {(A' • B') + (C' • D')}' = (A' • B')' • (C' • D')' = (A + B) • (C + D) ¦ Questa e’ la conversione difficile! Da OR/AND a NOR/NOR e’ piu’ naturale © R.H. Katz 3-13 Reti Logiche Logica multi-livello Logica multi-livello: piu’ di 2 livelli ƒ = A (B + C D) + B C' Rete originale AND-OR Introduzione e mantenimento delle inversioni (“bolle”) Lev el 1 C D B A B \C C D G1 Lev el 2 Lev el 3 Lev el 4 G4 G5 F G4 G5 F G3 G2 G1 G3 B La stessa rete ridisegnata in termini di porte NAND tradizionali A B \C G2 C D G1 \B A B \C G3 G4 G5 F G2 © R.H. Katz 3-14 Reti Logiche Logica multi-livello Logica multi-livello: piu’ di due livelli Lev el 1 Lev el 2 G1 G3 Lev el 3 Lev el 4 G4 G5 C D B A F Stessa rete iniziale dopo l’inserzione delle inversioni \B G2 C \C \D G1 B \A B \C G2 G3 G4 G5 F Rete finale, disegnata in form NOR-NOR pura © R.H. Katz 3-15 Reti Logiche Logica multi-livello Logica multi-livello: piu’ di due livelli Esempio di conversione A B C D (a) A F X B C F X D (b) Aggiungere doppie inversioni Circuito originale A X A B C \D (c ) F \X Distribuire inversioni (causando mancate corrispondenze tra inversioni) B C F \X \D (d) Inserire invertitori per “mettere a posto” le corrispondenze © R.H. Katz 3-16 Reti Logiche Logica multi-livello 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 True A B Z C D Fals e A C B D A B C D Z AND OR Invertitore due ingressi, due gruppi Simbolo logico 2x2 AOI & + & Simbolo logico 3x2 AOI & + & © R.H. Katz 3-17 Reti Logiche Logica multi-livello 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' B' + A B)' B 0 1 A 0 1 0 1 1 0 © R.H. Katz 3-18 Logica multi-livello: AND-OR-Invert Esempio: AB 00 C 0 1 1 1 F = B C' + A C' + A B A 01 11 10 0 0 0 1 0 Reti Logiche Logica multi-livello 1 B F' = A' B' + A' C + B' C Realizzata da porta AOI 2 ingressi 3 gruppi F = (A + B) (A + C') (B + C') Mappa di F' F' = (B' + C) (A' + C) (A' + B') Realizzata da porta OAI 2 ingressi 3 gruppi 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 © R.H. Katz 3-19 Logica multi-livello: AND-OR-Invert Esempio: realizzazione con AOI di uguaglianza su 4 bit Reti Logiche Logica multi-livello Alto se A0 <> B0, Basso se A0 = B0 A = B attivo basso Conservazione delle inversioni NOR Se tutti gli ingressi sono bassi (veri in logica negativa) allora Ai = Bi, i=0,...,3 L’uscita Z e’ vera © R.H. Katz 3-20 Logica multi-livello: strumenti CAD per semplificazione Reti Logiche Logica multi-livello 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 ... A • B B + • C C D E A • C • F5 + F G D E X = (A B + B' C) (C + D (E + A C')) + (D + E)(F G) F1 • + F 2 + X F4 • • + F3 © R.H. Katz 3-21 Logica multi-livello: strumenti CAD per semplificazione Reti Logiche Logica multi-livello Operazioni su forme fattorizzate: • Decomposizione • Estrazione • Fattorizzazione • Sostituzione Manipolare la rete dando le istruzioni appropriate in modo interattivo Non c’e’ un algoritmo che garantisca di ottenere la rete multi-livello “migliore” • Fusione (“collapsing”) © R.H. Katz 3-22 Reti Logiche Logica multi-livello: strumenti CAD per semplificazione Logica multi-livello 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' (12 letterali) F puo’ essere riscritta come: F = X Y + X' Y' X=AB Y=C+D A B C A B D A C D B C D (8 letterali) A B F Prima della decomposizione F C D Dopo la decomposizione © R.H. Katz 3-23 Logica multi-livello: strumenti CAD per semplificazione Reti Logiche Logica multi-livello Estrazione: fattorizzazione di sottoespressioni comuni F = (A + B) C D + E G = (A + B) E' H=CDE (11 letterali) Puo’ essere riscritta come: (11 letterali) F=XY + E G = X E' H=YE X=A+B Y=CD "Kernel": divisori primari E A B F C D A B G C D E Prima dell’estrazione A B X C D E Y F G H H Dopo l’estrazione © R.H. Katz 3-24 Reti Logiche Logica multi-livello: strumenti CAD per semplificazione Logica multi-livello Fattorizzazione: espressione a due livelli ri-espressa in forma multi-livello F=AC + AD + BC + BD + E (9 letterali) puo’ essere riscritta come: (5 letterali) F = (A + B) (C + D) + E A C A D B C A B F B D F C D E E Prima della fattorizzazione Dopo la fattorizzazione © R.H. Katz 3-25 Logica multi-livello: strumenti CAD per semplificazione Reti Logiche Logica multi-livello Sostituzione: sostituire G in F, esprimere F in funzione di G F=A+BC G=A+B (5 letterali) F riscritta usando G: F = G (A + C) (3 letterali) Fusione (collapsing): inverso della sostituzione. Va usata per eliminare livelli e ridurre il ritardo F = G (A + C) = (A + B) (A + C) =AA + AC + AB + B C =A+BC © R.H. Katz 3-26 Logica multi-livello: strumenti CAD per semplificazione Reti Logiche Logica multi-livello Strumento base per realizzare tutte queste operazioni: ”divisione” tra funzioni booleane F = PQ + R divisore quoziente resto Esempio: X=AC + AD + BC + BD + E Y=A+B X ”diviso" Y fa: X = Y (C + D) + E Problema: trovare divisori adatti F=AD + BCD + 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 F scritta come G Q + R = (A + B C) D + E =AD+BCD+E © R.H. Katz 3-27 Logica multi-livello: strumenti CAD per semplificazione Reti Logiche Logica multi-livello 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 leggere equazioni {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) minimizzazione su misII> sim1 * due livelli 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 decomposizione {co} = a [2] + b ci “buona” {sum} = a' [3]' + a [3] [2] = ci + b [3] = b' ci' + b ci Finora e’ indipendente dalla tecnologia... © R.H. Katz 3-28 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 % Reti Logiche Logica multi-livello 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 © R.H. Katz 3-29 Logica multi-livello: strumenti CAD per semplificazione misII e la biblioteca MSU Celle standard VLSI B CI [3] SUM 2310 A 2310 A B CI + [361] & & 1890 [328] + CO 1890 B 1310 [329] CI 1310 Nota: OR-AND-INVERT e’ equivalente a INVERT-AND-OR Reti Logiche Logica multi-livello Numero Nome 1310 inv Funzione A' 1120 1130 1140 nor2 nor3 nor4 (A+B)' (A+B+C)' (A+B+C+D)' 1220 1230 1240 nand2 nand3 nand4 (A•B)' (A•B•C)' (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 1770 or3/nor3 1780 or4 [A+B, (A+B)'] [A+B+C, (A+B+C)'] (A+B+C+D) 1870 1880 1860 1890 aoi22 aoi21 oai22 oai21 (A•B + C•D)' (A + B•C)' [(A + B)(C + D)]' [A (B + C)]' 1970 1810 1910 1930 ao22 ao222 ao2222 ao33 A•B + D•E A•B + C•D + E•F A•B + C•D + E•F + G•H A•B•C + D•E•F 2310 xor2 2350 xnor2 A•B' + A'•B A•B + A'•B' © R.H. Katz 3-30 Logica multi-livello: strumenti CAD per semplificazione Altri esempi Reti Logiche Logica multi-livello misII e “script” di semplificazione: misII -f script -t pla <file con tabella di verita’ espresso> Full Adder: .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 Formato di uscita in stile PLA di misII 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!) © R.H. Katz 3-31 Logica multi-livello: strumenti CAD per semplificazione Reti Logiche Logica multi-livello A A B A CI CO B SUM CI B CI A B CI Realizzazione multi-livello del sommatore: 5 livelli!! © R.H. Katz 3-32 Reti Logiche Logica multi-livello Logica multi-livello: strumenti CAD per semplificazione Sommatore a 2 bit .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 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' \X B D A A C X B D A C D A D Z C C B C [22] Uscita di misII Y C D D 8 livelli logici! © R.H. Katz 3-33 Reti Logiche Logica multi-livello 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' A W \A B C D Uscita di misII \A \D \B \C \D Z \A B C Y \A \C \A C X © R.H. Katz 3-34 Risposta nel tempo di reti combinatorie Reti Logiche Logica multi-livello • 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 © R.H. Katz 3-35 Reti Logiche Logica multi-livello 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! © R.H. Katz 3-36 Risposta nel tempo di reti combinatorie Reti Logiche Logica multi-livello 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... © R.H. Katz 3-37 Risposta nel tempo di reti combinatorie Alee e come evitarle 1 Reti Logiche Logica multi-livello 1 Alea statica ad 1 L’ingresso fa passare l’uscita da 1 a 0 ad 1 0 1 0 0 1 Alea statica a 0 L’ingresso fa passare l’uscita da 0 ad 1 a 0 1 0 0 1 Alee L’ingresso causa una doppia transizione 1 dinamiche da 0 ad 1 a 0 ad 1 OPPURE da 1 a 0 ad 1 a 0 0 0 Tipi di alee © R.H. Katz 3-38 Reti Logiche Logica multi-livello Risposta nel tempo di reti combinatorie Esempio di alea A \C \A D 1 G1 1 0 G3 1 \A D 0 1 G1 F G2 0 1 A \C 1 1 0 G3 1 A AB 00 CD 00 0 01 11 10 0 1 1 1 1 1 F 01 G2 1 0 1 D ABCD = 1101 ABCD = 1100 C cambiamento di ingresso entro un termine prodotto 11 1 1 0 0 10 0 0 0 0 B F = A' D + A C' A \C \A D 1 G1 1 0 1 A \C 1 G3 G2 0 ABCD = 1101 1 F \A D 0 G1 1 0 1 0 G3 G2 0 0 A \C F \A D ABCD = 0101 (A is still 0) 0 G1 1 1 0 G3 1 F G2 1 1 ABCD = 0111 (A is 1) cambiamento di ingresso che influenza piu’ di un termine: uscita cambia da 1 a 0 ad 1 © R.H. Katz 3-39 Reti Logiche Logica multi-livello 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) C Quest’espressione e’ equivalente alla forma in somme di prodotti senza alee di F AB 00 CD A 01 11 10 00 0 0 1 1 01 1 1 1 1 D 11 1 1 0 0 10 0 0 0 0 B © R.H. Katz 3-40 Risposta nel tempo di reti combinatorie Esempio di alee Reti Logiche Logica multi-livello Cominciare con espressione senza alee ad 1: F = A C' + A' D + C' D Lavorare con il complemento: 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! © R.H. Katz 3-41 Risposta nel tempo di reti combinatorie Progetto di reti a 2 livelli per funzionamento senza alee Reti Logiche Logica multi-livello Eliminare le alee statiche per tutte le transizioni di una sola variabile: AB 00 CD A 01 11 10 00 0 0 1 1 01 1 1 1 1 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 D C 11 1 1 1 0 10 0 0 1 0 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 B © R.H. Katz 3-42 Risposta nel tempo di reti combinatorie Alee statiche a 0 e ad 1 Reti Logiche Logica multi-livello 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 © R.H. Katz 3-43 Reti Logiche Logica multi-livello 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 AB 00 CD Esempi: 1000 -> 0001 (alea funzionale ad 1) 1011 -> 0010 (alea funzionale a 0) A 01 11 10 00 0 0 1 1 01 1 1 1 1 D C 11 1 1 1 0 10 0 0 1 0 B © R.H. Katz 3-44 Risposta nel tempo di reti combinatorie Come identificare alee statiche in circuiti multi-livello: Reti Logiche Logica 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 AB 00 CD A 01 11 10 00 0 0 1 1 01 1 1 1 1 ABCD: da 1111 a 1110 coperta dal termine ABC, quindi non c’e’ alea ad 1 D 11 C 10 1 0 in forma a 2 livelli 1 1 0 1 0 0 ABCD: da 1110 a 1100 il termine ABC va a 0 mentre AC' va ad 1 ci sono ancora alee statiche! B © R.H. Katz 3-45 Reti Logiche Logica multi-livello 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 100 A B C D F F2 Alee ad 1 di F corrette in F2 © R.H. Katz 3-46 Risposta nel tempo di reti combinatorie Progetto di reti per funzionamento senza alee Reti Logiche Logica multi-livello 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 AB 00 CD A 01 11 10 Nessun termine della funzione di transitorio puo’ contenere una variabile ed il suo complemento 00 0 0 1 1 F(A,B,C,D) = m(1,3,5,7,8,9,12,13,14,15) 01 1 1 1 1 F = A B + A' D + B D + A C' + C' D D C 11 1 1 1 0 10 0 0 1 0 B = (A' + B + C') D + A (B + C') (fattorizzata usando l’assioma di distributivita’, che non introduce alee perche’ non dipende dall’assioma di complementarieta’) © R.H. Katz 3-47 Reti Logiche Logica multi-livello Risposta nel tempo di reti combinatorie Alee dinamiche Esempio con alee dinamiche \A 1 B 01 \B \C G1 01 Lenta G3 10 G2 1 1 01 10 A \B G5 1 01 0 F 0 G4 10 10 Molto lenta 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... © R.H. Katz 3-48 Riassunto del capitolo Reti Logiche Logica multi-livello • 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 © R.H. Katz 3-49