Departamento de Electrónica Electrónica Digital Diseño combinacional (Parte #2) Mapas de Karnaugh Facultad de Ingeniería Bioingeniería Universidad Nacional de Entre Ríos Procedimiento de diseño de un circuito combinacional Determinación de la función lógica 1. Forma canónica de suma de productos Expresión algebraica de una función lógica como la suma de los minitérminos de la función. • Considera únicamente las combinaciones de entrada que hacen 1 la función • Cada variable aparece complementada si su valor es 0 y sin complementar si es 1 2. Forma canónica de producto de sumas Expresión algebraica de una función lógica como el producto de los maxitérminos de la función. • Considera únicamente las combinaciones de entrada que hacen 0 la función (salida) • Cada variable aparece complementada si su valor es 1 y sin complementar si es 0 Simplificación Simplificación por mapas de Karnaugh (mapas K) Método gráfico para simplificar funciones Es una representación matricial de una tabla de verdad: • una celda del mapa = una fila de la tabla de verdad Muy práctico para funciones de no más de 4 ó 5 variables Ejemplo de mapa de 2 variables B A 0 0 1 1 0 2 1 3 Principales características del mapa K Cada celda se corresponde con un minitérmino ó maxitérmino de la función En cada celda se escribe el valor de la salida de la función lógica para ese minitérmino/maxitérmino. Cada celda difiere de la adyacente en solo una variable. La numeración de las filas/columnas es en código Gray Las filas/columnas externas son adyacentes entre sí Ejemplo de mapa de 4 variables numeración en código continuo variables de entrada DC BA 00 00 número de minitérmino 01 celdas adyacentes 11 10 celdas adyacentes 01 11 10 0 4 12 8 1 5 13 9 3 7 15 11 2 6 14 10 Reglas de aplicación 1. Agrupar todas las celdas con el mismo valor, en uno o más grupos de celdas adyacentes 2. La cantidad de celdas en un grupo debe ser potencia de 2 (2, 4, 8) 3. Maximizar la cantidad de celdas en cada grupo 4. Minimizar la cantidad de grupos 5. Superponer grupos siempre que sea posible (una celda puede estar en uno o más grupos), si eso conduce a cumplir 2, 3 y 4. Fundamento del método En celdas adyacentes, sólo cambia el valor de una de las variables entre los dos términos representado por cada celda aplicando álgebra de Boole se elimina la variable que cambia de valor. C B A Z 0 0 0 1 0 0 1 0 0 1 0 1 0 1 1 0 1 0 0 1 1 0 1 1 1 1 0 0 1 1 1 0 Z1 = A’B’C’ + A’BC’ = A’C’ (B’ + B) = A’C’ Z2 = A’CB’ + ACB’ = CB’ (A’ + A) = CB’ Z = Z1 + Z2 = A’C’ + CB’ CB A 00 01 11 10 0 1 1 1 0 0 0 1 Z =A’C’ + CB’ 0 1 Simplificación por unos lógicos (mapa K de minitérminos) Agrupar las celdas de valor 1 (minitérminos) Cada grupo representa a un término producto Un grupo de 2k celdas elimina k variables del término resultante Grupo de 2 celdas: elimina 1 variable Grupo de 4 celdas: elimina 2 variables Grupo de 8 celdas: elimina 3 variables A = 0/1, B = 1, A se elimina A = 1, B = 0/1, B se elimina B A 0 1 0 2 0 1 1 1 1 1 3 Z=A+B BIEN B A 0 1 0 2 0 1 1 1 1 1 3 Z = A + A’ B = A + B MAL paso adicional Ejemplos CB A 00 01 11 10 MAL CB A 00 01 11 10 0 1 1 1 0 1 1 1 2 3 0 0 6 7 1 0 0 1 1 1 1 1 1 Z = C’ + A’B’C = C’ + A’B’ 4 5 CB A 00 01 11 10 BIEN 0 1 1 1 1 1 1 Z = C’ + A’B’ CB A 00 01 11 10 CB A 00 01 11 10 0 1 1 1 0 1 1 1 2 3 1 1 6 7 0 0 4 0 1 1 1 1 1 1 1 MAL Z = C’ + BC 5 CB A 00 01 11 10 0 1 1 1 1 1 1 1 MAL CB A 00 01 11 10 0 1 1 1 1 1 1 1 Z = C’ + B BIEN DC BA 00 01 11 10 0 4 12 8 00 1 01 11 1 10 1 1 3 1 2 5 13 1 1 7 15 1 6 DC BA 00 01 11 10 0 4 12 8 00 1 9 01 11 11 1 14 1 10 10 1 3 1 1 2 DC BA 00 01 11 10 0 4 12 8 00 1 1 11 1 10 1 1 3 2 1 5 13 7 15 6 14 13 9 15 11 14 10 1 1 7 1 6 1 • Identificar primero las celdas que solo tienen una posibilidad de agrupación (y agruparlas). BIEN MAL 01 1 5 1 9 11 10 1 DC BA 00 01 11 10 0 4 12 8 00 1 1 01 1 11 1 10 1 1 3 2 1 5 13 7 15 6 14 1 9 11 10 1 • Continuar con el resto de las celdas. Más ejemplos DC BA 00 01 11 10 0 4 12 8 00 1 1 01 11 10 1 1 5 13 9 15 11 14 10 1 3 1 7 1 2 1 6 1 DC BA 00 01 11 10 0 4 12 8 00 1 1 1 1 5 1 3 1 2 01 1 1 11 10 13 9 7 15 11 6 14 10 1 Caso especial DC BA 00 01 11 10 0 4 12 8 00 1 1 1 1 01 11 10 DC BA 00 01 11 10 0 4 12 8 00 1 1 1 5 13 9 01 3 7 15 11 11 1 1 1 2 6 14 10 Z = B’D’ + A’B’ + ABC’D 10 1 1 5 13 9 3 7 15 11 2 6 14 10 1 Z = A’C’ = A’B’C’D’ + A’B’C’D + A’BC’D’ + A’BC’D = A’B’C’ + A’BC’ = … = A’C’ Simplificación por ceros lógicos (mapa K de maxitérminos) Agrupar las celdas de valor 0 lógico. Cada grupo representa un término suma. Un grupo de 2k celdas elimina k variables del término resultante. A = 0/1, se elimina B = 0, C = 1, se complementa CB A 00 01 11 10 0 1 1 1 0 1 1 1 2 3 1 1 6 7 0 0 4 5 ZM = (C’ + B) Si se agrupara por minitérminos: CB A 00 01 11 10 0 1 1 1 0 1 1 1 2 3 1 1 6 7 0 0 4 5 Zm = C’ + B Ejemplos DC BA 00 01 11 10 00 01 11 10 0 4 12 1 5 13 0 0 3 0 7 0 0 2 0 6 0 0 00 8 9 15 11 14 10 Z = (B’ + C’).(D’ + C) 00 0 01 0 11 0 10 0 01 0 11 4 12 1 5 13 3 7 15 2 6 14 Z=C 00 10 0 0 8 9 11 0 10 0 00 01 11 10 01 0 11 4 10 12 8 0 1 5 13 9 0 3 2 0 0 7 6 15 11 14 10 0 0 0 0 Funciones con combinaciones indiferentes (no importa - don’t care) Combinaciones de entrada para las que no importa el valor de la salida. – Porque no se ha especificado el comportamiento del circuito – Porque son imposibles En la tabla de verdad y en los mapas K, la salida para estas combinaciones se indica con una letra X o d. En la simplificación por mapas K, estas celdas se toman como si tuvieran valor 1 ó 0, según conveniencia. Usarlas para maximizar el tamaño de los grupos No agrupar celdas que solamente contengan X Implicancias del uso de X en un diseño. minitérminos maxitérminos DC BA 00 01 11 10 0 4 12 8 00 X 01 DC BA 00 01 11 10 0 4 12 8 00 0 0 x 0 1 5 3 7 1 1 2 6 1 x 01 0 x 11 x 1 10 0 x 13 9 15 11 14 10 1 x MAL 11 10 1 X 3 X 1 2 X 5 13 9 15 11 14 10 1 X 7 1 1 6 1 X DC BA 00 01 11 10 0 4 12 8 00 X BIEN 01 11 10 1 X 3 X 1 2 X 5 13 9 15 11 14 10 1 X 7 1 1 6 1 X DC BA 00 01 11 10 0 4 12 8 00 0 0 X 0 1 5 13 3 7 15 2 6 14 01 0 X 11 X 10 0 X X 9 11 10 X DC BA 00 01 11 10 0 4 12 8 00 0 0 X 0 1 5 13 3 7 15 2 6 14 01 0 X 11 X 10 0 X X 9 11 10 X Ejemplo: detector de números BCD pares DC BA 00 01 11 10 0 4 12 8 00 1 1 1 01 11 10 1 5 13 9 3 7 15 11 2 6 14 10 1 1 Z = D/A/ + A/B/C/ #compuertas: 7 #CIs: 3 (1 INV, 1 AND 3i, 1 OR 2i) Z = [(D+A)/ + (A+B+C)/]// (todo NOR) #compuertas: 4 #CI: 2 (1 NOR 2i, 1NOR 3i) Usando las condiciones no importa: DC BA 00 01 11 10 0 4 12 8 00 1 1 X 1 01 11 10 1 5 3 7 X X 2 6 X X 1 1 13 9 15 11 14 10 X Z = A’ SW: KarnaughMap Ejemplo de diseño #1: circuito para encender un display de 7 segmentos a f g b e d c ¿Qué código de entrada usaría el circuito? ¿Cuántas E y S tendría el circuito? 4 (BCD) Circuito combinacional 7 Diseño Diseño 1. Número de entradas y salidas Entradas: 4 - código BCD (ALSB, B, C, D) Salidas: 7 (a, b, ...,g) Función de múltiples salidas 3. Obtención de las funciones 7 funciones 7 mapas de 4 variables Criterio de diseño: ¿Qué desventaja tiene usar X en este caso? ¿Qué valor le daría a las X? 2. Tabla de verdad Diseño Ejemplo de diseño #2: conversión electrónica de binario a Gray Entradas: 4 (binario natural) Salidas: 4 (Gray) B3B2 B1B0 00 01 11 10 00 01 11 10 0 4 1 5 3 7 1 1 2 6 1 1 B3B2 00 B1B0 12 8 13 9 01 15 11 11 14 10 10 1 1 1 1 G3 = B3 00 01 0 1 1 1 11 4 12 5 13 10 1 1 3 1 7 15 1 2 1 6 14 1 8 9 11 10 G2 = B3B2/+ B3/B2 = B3 B2 Diseño B1 G1 B2 G2 B3 G3 Conversor binario-Gray de 3 bits Generalizando para n bits: Gn = Bn Gi = Bi xor Bi+1 para i entre 1 y n-1 Mapas K de 5 y 6 variables 30/04/2013 Tips finales acerca del diseño combinacional Más de 6 variables de entrada: no se puede usar mapas K La minimización es importante… pero más lo es el diseño correcto! Algoritmo de Quine-McCluskey • Funciones de hasta 8-12 variables Programas heurísticos (p.e., Espresso, Minilog) • Usados en casos de problemas grandes Programas para manipular las expresiones y minimizar o PALASM, ABEL, CUPL (para PLDs Programmable Logic Devices) o VHDL, Verilog, para ASICs Application-Specific IC) FIN