ELO211: Sistemas Digitales Tomás Arredondo Vidal 1er Semestre – 2009 Este material está basado en: ❒ textos y material de apoyo: Contemporary Logic Design 1st / 2nd edition. Gaetano Borriello and Randy Katz. Prentice Hall, 1994, 2005 ❒ material del curso ELO211 del Prof. Leopoldo Silva ❒ material en el sitio http://es.wikipedia.org 3: Canónicas 1 3-Formas Canonicas 3.1 Expresiones canónicas: minterminos y maxterminos 3.2 Expansión a las formas canónicas 3.3 Síntesis de las formas canónicas 3.4 Diseño lógico y simplificación 3: Canónicas 2 Expresiones Canónicas ❒ Existen dos formas básicas de expresiones canónicas que pueden ser implementadas en dos niveles de compuertas: suma de productos o expansión de minterminos ❍ producto de sumas o expansión de maxterminos ❍ ❒ Permiten asociar a una función una expresión algebraica única ❒ La tabla de verdad también es una representación única para una función booleana 3: Canónicas 3 Suma de productos ❒ También conocida como expansión de minterminos F = 001 011 101 110 111 F = A’B’C + A’BC + AB’C + ABC’ + ABC A 0 0 0 0 1 1 1 1 B 0 0 1 1 0 0 1 1 C 0 1 0 1 0 1 0 1 F 0 1 0 1 0 1 1 1 F’ 1 0 1 0 1 0 0 0 F’ = A’B’C’ + A’BC’ + AB’C’ 3: Canónicas 4 Suma de productos ❒ Términos son productos (o minterms) ❍ ❍ A 0 0 0 0 1 1 1 1 productos AND de literales – para las combinacion de input para los que el output es verdad en cada producto cada variable aparece exactamente una ves (puede estar invertida) B 0 0 1 1 0 0 1 1 C 0 1 0 1 0 1 0 1 minterms A’B’C’ m0 A’B’C m1 A’BC’ m2 A’BC m3 AB’C’ m4 AB’C m5 ABC’ m6 ABC m7 F en forma canónica: F(A, B, C) = Σm(1,3,5,6,7) = m1 + m3 + m5 + m6 + m7 = A’B’C + A’BC + AB’C + ABC’ + ABC forma canónica ≠ forma minima F(A, B, C) = A’B’C + A’BC + AB’C + ABC + ABC’ = (A’B’ + A’B + AB’ + AB)C + ABC’ = ((A’ + A)(B’ + B))C + ABC’ = C + ABC’ = ABC’ + C forma corta de escribir minterms = AB + C 3: Canónicas 5 (ejemplo de 3 terminos o 23 = 8 minterms) Producto de sumas ❒ También conocida como expansión de maxterminos F= 000 010 100 F = (A + B + C) (A + B’ + C) (A’ + B + C) A 0 0 0 0 1 1 1 1 B 0 0 1 1 0 0 1 1 C 0 1 0 1 0 1 0 1 F 0 1 0 1 0 1 1 1 F’ 1 0 1 0 1 0 0 0 F’ = (A + B + C’) (A + B’ + C’) (A’ + B + C’) (A’ + B’ + C) (A’ + B’ + C’) 3: Canónicas 6 Producto de sumas ❒ Términos son sumas (o maxterminos) ❍ ❍ A 0 0 0 0 1 1 1 1 B 0 0 1 1 0 0 1 1 suma OR de literales – para las combinacion de input para los que el output es falso en cada producto cada variable aparece exactamente una ves (puede estar invertida) C 0 1 0 1 0 1 0 1 maxterms A+B+C A+B+C’ A+B’+C A+B’+C’ A’+B+C A’+B+C’ A’+B’+C A’+B’+C’ M0 M1 M2 M3 M4 M5 M6 M7 F en forma canónica: F(A, B, C) = ΠM(0,2,4) = M0 • M2 • M4 = (A + B + C) (A + B’ + C) (A’ + B + C) forma canónica ≠ forma minima F(A, B, C) = (A + B + C) (A + B’ + C) (A’ + B + C) = (A + B + C) (A + B’ + C) (A + B + C) (A’ + B + C) = (A + C) (B + C) forma corta de escribir minterminos (ejemplo de 3 términos o 23 = 8 minterminos) 3: Canónicas 7 Conversión entre formas canónicas ❒ Es posible convertir entre ambas formas canónicas ❒ Para n variables (0 ≤ i ≤ 2n-1) mi = Mi Mi = m i ∑ mi = ∏ Mi ∏ Mi = ∑ mi 3: Canónicas 8 Conversión entre formas canónicas ❒ Suma de productos ❍ F’ = A’B’C’ + A’BC’ + AB’C’ ❒ Usando de Morgan’s: f’(X1,X2,...,Xn,0,1,+,•) = f(X1’,X2’,...,Xn’,1,0,•,+) ❍ ❍ (F’)’ = (A’B’C’ + A’BC’ + AB’C’)’ F = (A + B + C) (A + B’ + C) (A’ + B + C) ❒ Producto de sumas ❍ F’ = (A + B + C’) (A + B’ + C’) (A’ + B + C’) (A’ + B’ + C) (A’ + B’ + C’) ❒ Usando de Morgan’s ❍ ❍ (F’)’ = ( (A + B + C’)(A + B’ + C’)(A’ + B + C’)(A’ + B’ + C)(A’ + B’ + C’) )’ F = A’B’C + A’BC + AB’C + ABC’ + ABC 3: Canónicas 9 Conversión entre formas canónicas ❒ Conversión de minterminos a maxterminos ❍ ❍ usar maxterminos cuyos índices no aparecen en expansión de minterminos e.g., F(A,B,C) = Σm(1,3,5,6,7) = ΠM(0,2,4) ❒ Conversión de maxterminos a minterminos ❍ ❍ usar minterminos cuyos índices no aparecen en expansión de maxterminos e.g., F(A,B,C) = ΠM(0,2,4) = Σm(1,3,5,6,7) ❒ Conversión de expansión de minterminos de F a F’ ❍ ❍ usar minterminos cuyos índices no aparecen e.g., F(A,B,C) = Σm(1,3,5,6,7) F’(A,B,C) = Σm(0,2,4) ❒ Conversión de expansión de maxterminos de F a F’ ❍ ❍ usar maxterminos cuyos índices no aparecen e.g., F(A,B,C) = ΠM(0,2,4) F’(A,B,C) = ΠM(1,3,5,6,7) 3: Canónicas 10 Implementaciones alternativas en dos niveles ❒ Ejemplo: F=ab+c A suma de productos B F1 C suma de productos minimizada F2 producto de sumas F3 producto de sumas minimizada F4 3: Canónicas 11 Señales para las cuatro alternativas ❒ Esencialmente idénticas ❍ excepto por perturbaciones ❍ retardos son muy similares ❍ otros ejemplos mas adelante 3: Canónicas 12 3-Formas Canonicas 3.1 Expresiones canónicas: minterminos y maxterminos 3.2 Expansión a las formas canónicas 3.3 Síntesis de las formas canónicas 3.4 Diseño lógico y simplificación 3: Canónicas 13 Expansión a las formas canónicas ❒ Cualquier función booleana puede ser representada en forma canónica. ❒ El proceso de obtener la forma canónica se denomina expansión ❒ Un método directo consiste en obtener la tabla de verdad, y luego identificar los mintérminos o los maxtérminos ❒ Otra posibilidad, que se estudia a continuación, es mediante un desarrollo algebraico basado en los postulados y teoremas del álgebra de Boole 3: Canónicas 14 Expansión a suma de productos ❒ Basado en el uso repetitivo del teorema de unificación: ❍ a = ab + ab’ ❒ Ejemplo: f(a, b, c) = a + bc’ + abc Término a: a = ab + ab’ = (ab + ab’)c + (ab + ab’)c’ = abc + ab’c + abc’ + ab’c’ = m7 + m5 + m6 + m4 Término bc’: bc’ = abc’ + a’bc’ = m6 + m2 Entonces, f(a, b, c) = m2 + m4 + m5 + m6 + m7 3: Canónicas 15 Expansión a productos de sumas ❒ Basado en el uso repetitivo del teorema de unificación: ❍ a = (a + b)(a + b’) ❒ Ejemplo: f(a, b, c) = (a + b)(b + c’) Término (a+b): (a+b) = (a+b+c)(a+b+c’) = M0 M1 Término (b+c’): (b+c’) = (a+b+c’)(a’+b+c’) = M1 M5 Entonces, f(a, b, c) = M0 M1 M5 3: Canónicas 16 3-Formas Canonicas 3.1 Expresiones canónicas: minterminos y maxterminos 3.2 Expansión a las formas canónicas 3.3 Síntesis de las formas canónicas 3.4 Diseño lógico y simplificación 3: Canónicas 17 Síntesis usando suma de productos ❒ Dada una función mediante una suma de productos, ésta puede implementarse usando un OR de AND's ❒ Ejemplo: implementación en dos niveles de f(a, b, c, d) = ab + cd, se logra directamente 3: Canónicas 18 Síntesis usando suma de productos ❒ Una red es de n niveles, cuando una señal de entrada debe pasar a través de n compuertas para llegar a la salida. ❒ La señal de entrada que recorra más compuertas hasta llegar a la salida, es la que define la cantidad de niveles; el recorrido se denomina ruta crítica y define el retardo de propagación de la red. ❒ Debe notarse que se considera que se dispone de entradas invertidas (e.g. b‘) ya que si sólo se dispone de variables (e.g. b) se requiere un nivel adicional. 3: Canónicas 19 Síntesis usando suma de productos ❒ También puede implementarse usando solamente compuertas NAND ❍ Ejemplo: f = ab’+cd 3: Canónicas 20 Síntesis usando suma de productos ❒ La técnica anterior se denomina método de doble complementación: ❒ Se puede visualizar en forma gráfica según: ❒ El siguiente es el equivalente grafico del Teorema de De Morgan: 3: Canónicas 21 Conversión de producto de sumas a suma de productos ❒ Si tenemos una función de tipo producto de sumas se puede convertir usando doble complementación en suma de productos A B’ f C D A B’ C D ❒ Aplicando De Morgan y complementando: A’ A B B’ f C D f f’ C’ D’ 3: Canónicas 22 Conversión de producto de sumas a suma de productos ❒ Hay que notar que la implementación como suma de productos tiene todas las variables de entrada y salida complementadas respecto a su forma inicial. ❒ También se puede convertir una expresión de tipo suma de productos a la forma producto de sumas al cambiar los ANDs del primer nivel por ORs y en el segundo nivel los ORs por ANDs además de complementar variables de entrada y salida. 3: Canónicas 23 3-Formas Canonicas 3.1 Expresiones canónicas: minterminos y maxterminos 3.2 Expansión a las formas canónicas 3.3 Síntesis de las formas canónicas 3.4 Diseño lógico y simplificación 3: Canónicas 24 Diseño lógico: fan-in y fan-out ❒ Las compuertas lógicas tienen ciertas características concretas dadas por su implementación física. Dos de ellas son el fan - in y el fan - out. ❒ Fan - in es el numero de circuitos o compuertas de entrada (e.g. de dos entradas) que puede soportar una compuerta. ❒ Una compuerta con un fan - in mayor tienden a ser mas lentas por que se incrementa la capacitancia de la compuerta. 3: Canónicas 25 Diseño lógico: fan-in y fan-out ❒ Fan - out es el numero de compuertas que pueden ser alimentadas o comandada por una salida de la compuerta. ❒ Un mayor numero de niveles en un circuito causa que este tenga un comportamiento mas lento ya que la conmutación debe propagarse a través de mas compuertas. ❒ Un menor numero de niveles requiere compuertas con un mayor fan - in lo que generalmente implica ocupar mas pastillas en la implementación. 3: Canónicas 26 Funciones incompletamente especificadas ❒ Ejemplo: Numero binarios codificados (BCD) incrementado por 1 ❍ A 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 BCD codifica números decimales 0 – 9 en los patrones de bits 0000 – 1001 B 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 C 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 D 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 W 0 0 0 0 0 0 0 1 1 0 X X X X X X X 0 0 0 1 1 1 1 0 0 0 X X X X X X Y 0 1 1 0 0 1 1 0 0 0 X X X X X X Z 1 0 1 0 1 0 1 0 1 0 X X X X X X off-set de W on-set de W don’t care (DC) set d W estos patrones de input nunca se deberían encontrar en la practica – "don’t care" sobre sus valores de salida se pueden utilizar en la minimización 3: Canónicas 27 Descripción de funciones incompletamente especificadas ❒ Formas canónicas y don’t cares (X) ❍ ❍ ❍ hasta ahora solo han representado on-set formas canónicas también representan conjunto don’t-care se necesitan dos de los tres conjuntos (on-set, off-set, dc-set) ❒ Representación canónicas de la función BCD incrementada por 1: ❍ ❍ ❍ ❍ Z = m0 + m2 + m4 + m6 + m8 + d10 + d11 + d12 + d13 + d14 + d15 Z = Σ [ m(0,2,4,6,8) + d(10,11,12,13,14,15) ] Z = M1 • M3 • M5 • M7 • M9 • D10 • D11 • D12 • D13 • D14 • D15 Z = Π [ M(1,3,5,7,9) • D(10,11,12,13,14,15) ] 3: Canónicas 28 Simplificación de lógica combinacional de dos niveles ❒ Encontrar una realización mínima de suma de productos o productos de suma ❍ explotar información X (don’t care) en el proceso ❒ Simplificación algebraica ❍ ❍ no hay procedimiento algorítmico/sistemático ¿como se sabe cuando la mínima realización se encontró? ❒ Herramientas computacionales ❍ ❍ soluciones precisas requieren tiempos de computación largos especialmente para funciones con muchos inputs (> 10) heurísticas se usan para encontrar “buenos” resultados (generalmente no son el optimo global) 3: Canónicas 29 Simplificación de lógica combinacional de dos niveles ❒ Métodos a mano son relevantes ❍ ❍ para encontrar las herramientas automáticas y sus fuerzas y debilidades se pueden verificar resultados (en casos pequeños) 3: Canónicas 30 Simplificación de lógica combinacional de dos niveles ❒ Teorema de unificación, clave para la simplificación : A (B’ + B) = A ❒ Esencia de la simplificación de lógica de dos niveles ❍ encontrar (o crear) subconjuntos de dos elementos del onset en los cuales solo una variable cambia de valor – esta variable puede ser eliminada y un termino puede remplazar al los dos termimos previos F = A’B’+AB’ = (A’+A)B’ = B’ A B F 0 0 1 0 1 0 1 0 1 1 1 0 B tiene el mismo valor en las dos filas– B se mantiene A tiene valores diferentes en ambas filas– A se elimina 3: Canónicas 31 Simplificación de lógica combinacional de dos niveles ❒ Usando teoremas para minimizar (e.g. idempotencia, commutatividad, distributividad, unificación, complementariedad, identidad,...) ❒ Ejemplo: Cout = = = = = = = = = = = = A’ B Cin + A B’ Cin + A B Cin’ + A B Cin A’ B Cin + A B’ Cin + A B Cin’ + A B Cin + A B Cin A’ B Cin + A B Cin + A B’ Cin + A B Cin’ + A B Cin (A’ + A) B Cin + A B’ Cin + A B Cin’ + A B Cin (1) B Cin + A B’ Cin + A B Cin’ + A B Cin B Cin + A B’ Cin + A B Cin’ + A B Cin + A B Cin B Cin + A B’ Cin + A B Cin + A B Cin’ + A B Cin B Cin + A (B’ + B) Cin + A B Cin’ + A B Cin B Cin + A (1) Cin + A B Cin’ + A B Cin B Cin + A Cin + A B (Cin’ + Cin) B Cin + A Cin + A B (1) sumar terminos para B Cin + A Cin + A B factorizar 3: Canónicas 32 Diseño lógico: perturbaciones ❒ Implementaciones de circuitos lógicos pueden incluir condiciones que causan perturbaciones (como resultados de carreras) en los outputs de implementaciones de circuitos ❒ En circuitos con mas de dos niveles pueden generarse perturbaciones con mas de un cambio momentáneo 3: Canónicas 33 Ejemplo: perturbaciones ❒ Implementaciones de circuitos lógicos pueden incluir condiciones que causan perturbaciones (como resultados de carreras) en los outputs de implementaciones de circuitos ❒ Una perturbación estática es un cambio momentáneo de un nivel constante en el output (un falso cero o un falso uno) ❒ En circuitos con mas de dos niveles pueden generarse perturbaciones con mas de un cambio momentáneo ❒ Una perturbación dinámica es una perturbación que ocurre durante el cambio de una variable de salida 3: Canónicas 34 Diseño lógico: perturbaciones ❒ Ejemplo: P = (((A’+B)’ + (D’+C)’)’+A)’ = A’(AB’+C’D) ❍ Con {B=0 y C=1} o {B=0 y D=0} se presentan perturbaciones en el canto de bajada de A atrasado A B P C D ❒ Actividad: Mostrar porque y como ocurre esto e indicar como eliminar el problema 3: Canónicas 35 Actividad: Diseño lógico y perturbaciones ❒ ¿Porque ocurre las perturbaciones? Recordemos que las perturbaciones ocurren cuando una misma señal tiene múltiples caminos que causan carreras en los inputs a una compuerta. X X’ X X’ 3: Canónicas 36 Actividad: Diseño lógico y perturbaciones ❒ Ejemplo: z = x + x’ ❍ ❍ En una tabla de verdad se aprecia que y nunca debería ser 0 Pero dado que hay carreras z si es 0 en el diagrama temporal (perturbación) X’ Carrera en señales de entrada X Z t X X’ Z perturbación 3: Canónicas 37 Actividad: Diseño lógico y perturbaciones ❒ Análisis: Si se hace una tabla de verdad se puede apreciar que la salida P nunca es igual a 1 X Y X' A B C D P Z ❒ Cuando A = 1 y {B=0 y C=1} o {B=0 y D=0} después de un tiempo de propagación X = 1 y X’ = 0 ❒ Después del cambio de a A = 0 y de una propagación en la ruta mas rápida X = 0 y X’ = 0 ❒ Es durante este tiempo de propagación que P se convierte en 1 causando la perturbación 3: Canónicas 38 Actividad: Diseño lógico y perturbaciones ❒ Solución: Para eliminar la perturbación se puede simplificar más (para eliminar la carreras de X con X’...): ❒ P = (((A’+B)’ + (D’+C)’)’+A)’ = A’(AB’+C’D) = A’AB’ + A’C’D = A’C’D A B P C D A’ C’ D P ❒ Mas ejemplos en los apuntes... 3: Canónicas 39