6: Simplificación 1
6-Simplificación
6.1 Ejemplos en dos niveles6.2 Simplificación en dos niveles6.3 Algoritmos de simplificación
6: Simplificación 2
Ejemplo: comparador de dos bits
mapa de Karnaugh de 4-variablespara cada una de las 3 funciones de output
LTEQGT
A B < C DA B = C DA B > C D
AB
CD
N1
N2
A B C D LT EQ GT0 0 0 0 0 1 0
0 1 1 0 01 0 1 0 01 1 1 0 0
0 1 0 0 0 0 10 1 0 1 01 0 1 0 01 1 1 0 0
1 0 0 0 0 0 10 1 0 0 11 0 0 1 01 1 1 0 0
1 1 0 0 0 0 10 1 0 0 11 0 0 0 11 1 0 1 0
diagrama de bloquey
tabla verdad
6: Simplificación 3
A' B' D + A' C + B' C D
B C' D' + A C' + A B D'
LT =
EQ =
GT =
K-mapa para EQK-mapa para LT K-mapa para GT
Ejemplo: comparador de dos bits (cont)
0 0
1 0
0 0
0 0D
A
1 1
1 1
0 1
0 0
B
C
1 0
0 1
0 0
0 0D
A
0 0
0 0
1 0
0 1
B
C
0 1
0 0
1 1
1 1D
A
0 0
0 0
0 0
1 0
B
C
= (A xnor C) • (B xnor D)
LT y GT son similares
A' B' C' D' + A' B C' D + A B C D + A B' C D’
6: Simplificación 4
dos implementaciones alternativas de
EQ con y sin XOR
XNOR se implementa con al mínimo 3 compuertas simples
A B C D
EQ
EQ
Ejemplo: comparador de dos bits (cont)
6: Simplificación 5
diagrama en bloque y
tabla de verdad
mapa de Karnaugh de 4-variablespara cada una de las 4 funciones de output
A2 A1 B2 B1 P8 P4 P2 P10 0 0 0 0 0 0 0
0 1 0 0 0 01 0 0 0 0 01 1 0 0 0 0
0 1 0 0 0 0 0 00 1 0 0 0 11 0 0 0 1 01 1 0 0 1 1
1 0 0 0 0 0 0 00 1 0 0 1 01 0 0 1 0 01 1 0 1 1 0
1 1 0 0 0 0 0 00 1 0 0 1 11 0 0 1 1 01 1 1 0 0 1
Ejemplo: multiplicador de dos bits
P1P2P4P8
A1A2B1B2
6: Simplificación 6
K-mapa de P8 K-mapa de P4
K-mapa de P2 K-mapa de P1
Ejemplo: multiplicador de dos bits (cont)
0 0
0 0
0 0
0 0B1
A2
0 0
0 0
0 1
1 1
A1
B2
0 0
0 1
0 0
1 0B1
A2
0 1
0 0
1 0
0 0
A1
B2
0 0
0 0
0 0
1 1B1
A2
0 1
0 1
0 1
1 0
A1
B2
0 0
0 0
0 0
0 0B1
A2
0 0
0 0
1 0
0 0
A1
B2 P8 = A2A1B2B1
P4 = A2B2B1'+ A2A1'B2
P2 = A2'A1B2+ A2B2’B1+ A2A1'B1+ A1B2B1’
P1 = A1B1
6: Simplificación 7
I8 I4 I2 I1 O8 O4 O2 O10 0 0 0 0 0 0 10 0 0 1 0 0 1 00 0 1 0 0 0 1 10 0 1 1 0 1 0 00 1 0 0 0 1 0 10 1 0 1 0 1 1 00 1 1 0 0 1 1 10 1 1 1 1 0 0 01 0 0 0 1 0 0 11 0 0 1 0 0 0 01 0 1 0 X X X X1 0 1 1 X X X X1 1 0 0 X X X X1 1 0 1 X X X X1 1 1 0 X X X X1 1 1 1 X X X X
diagrama en bloque y
tabla de verdad
mapa de Karnaugh de 4-variablespara cada una de las 4 funciones de output
O1O2O4O8
I1I2I4I8
Ejemplo: incrementador en 1 de números BCD de 4 bits
6: Simplificación 8
O8 = I4 I2 I1 + I8 I1'
O4 = I4 I2' + I4 I1' + I4’ I2 I1
O2 = I8’ I2’ I1 + I2 I1'
O1 = I1'
O8 O4
O2 O1
Ejemplo: incrementador en 1 de números BCD de 4 bits (cont)
0 0
0 0
X 1
X 0I1
I8
0 1
0 0
X X
X X
I4
I2
0 0
1 1
X 0
X 0I1
I8
0 0
1 1
X X
X X
I4
I2
0 1
0 1
X 0
X 0I1
I8
1 0
0 1
X X
X X
I4
I2
1 1
0 0
X 1
X 0I1
I8
0 0
1 1
X X
X X
I4
I2
6: Simplificación 9
6-Simplificación
6.1 Ejemplos en dos niveles6.2 Simplificación en dos niveles6.3 Algoritmos de simplificación
6: Simplificación 10
Definiciones de términos para simplificación en dos niveles
Implicante Elemento individual del ON-set o algún grupo de estos elementos
que se puede combinar para formar un subcubo. Implicante primo
Implicante que no se puede combinar con otro para formar un subcubo más grande.
No contiene literales repetidos. No contiene una variable y su complemento. No contiene variables redundantes, si se descarta un literal del
implicante el resto no será un implicante. Si x e y son implicantes primos de f, entonces: x no cubre a y; y
viceversa. Implicante primo esencial
Un implicante primo es esencial si el es el único que cubre un elemento del ON-set (o mintérmino)
Va a participar de todas las posibles coberturas del ON-set
6: Simplificación 11
Definiciones de términos para simplificación en dos niveles
Objetivo: Hacer crecer implicantes para convertirlos en
implicantes primos (minimizar literales por término)
Cubrir el ON-set con el menor número de implicantes primos posible (minimizar número de términos)
6: Simplificación 12
0 X
1 1
1 0
1 0D
A
1 0
0 0
1 1
1 1
B
C
5 implicantes primos:BD, ABC', ACD, A'BC, A'C'D
Ejemplos para ilustrar términos
0 0
1 1
1 0
1 0D
A
0 1
0 1
1 1
0 0
B
C
6 implicantes primos (no se pueden agrupar mas):A'B'D, BC', AC, A'C'D, AB, B'CD
mínima cobertura: AC + BC' + A'B'D
esencial
cobertura mínima : 4 implicantes esenciales
esenciales
6: Simplificación 13
6-Simplificación
6.1 Ejemplos en dos niveles6.2 Simplificación en dos niveles6.3 Algoritmos de simplificación
6: Simplificación 14
Algoritmo para simplificación de dos niveles en un mapa de Karnaugh
Algoritmo: mínima expresión de suma de productos de un mapa de Karnaugh 1: elegir mintérmino (un elemento del ON-set) 2: encontrar grupos máximos de 1s y Xs adyacentes a ese elemento
• considerar filas de arriba/abajo, columnas izquierda/derecha y adyacencias de las esquinas
• estos son implicantes primos (número de elementos siempre potencia de 2)
Repetir pasos 1 y 2 hasta encontrar todos los implicantes primos
3: revisar los 1s en el K-map• si cubiertos por un solo implicante primo, se considera esencial, y
tiene que estar en la cobertura final• 1s cubiertos por implicantes primos esenciales no tienen que ser
revisados 4: si quedan 1s no cubiertos por implicantes primos esenciales
• elegir el número más pequeño de implicantes primos que cubren el resto de los 1s
6: Simplificación 15
Algoritmos para simplificación de dos niveles (ejemplo)
X 1
0 1
0 1
1 1D
A
0 X
0 1
X 0
0 1
B
C
2 primos cubriendo A'BC'D'
X 1
0 1
0 1
1 1D
A
0 X
0 1
X 0
0 1
B
C
2 primos cubriendo ABC'D
X 1
0 1
0 1
1 1D
A
0 X
0 1
X 0
0 1
B
C
cobertura mínima (3 primos)
X 1
0 1
0 1
1 1D
A
0 X
0 1
X 0
0 1
B
C
X 1
0 1
0 1
1 1D
A
0 X
0 1
X 0
0 1
B
C
2 primos esenciales
X 1
0 1
0 1
1 1D
A
0 X
0 1
X 0
0 1
B
C
3 primos cubriendo AB'C'D'
X 1
0 1
0 1
1 1D
A
0 X
0 1
X 0
0 1
B
C
6: Simplificación 16
BC BD AB AC’DCD’
BDCD’ AC’D
BDCD’ AC’D
Actividad
X 0
0 1
X 0
X 1D
A
0 X
X 1
X 0
1 1
B
C
X 0
0 1
X 0
X 1D
A
0 X
X 1
X 0
1 1
B
C
Indique todos los implicantes primos para el K-map:
Cuales son implicantes primos esenciales?
Cual es la cobertura mínima?
6: Simplificación 17
Método de Quine
Método sistemático para encontrar la expresión mínima de una función, no requiere reconocer agrupaciones en un mapa de Karnaugh
Básicamente es la búsqueda exhaustiva de todas las adyacencias entre los mintérminos de la función mediante el uso sistemático del teorema a = ab + ab’
Algoritmo Quine para encontrar implicantes primos:1. Formar columna con los mintérminos de la función2. Formar siguiente columna según:
Revisar primer elemento de la columna con todos los siguientes; si se encuentra un término que difiere en una variable, se lo anota en la nueva columna omitiendo el literal correspondiente; se marcan los términos en la columna actual
Se repite para todos los elementos3. Repetir el paso 2 hasta no poder formar nuevas columnas
Después se pueden encontrar los implicantes primos esenciales usando la tabla de implicantes primos
6: Simplificación 18
Ejemplo: Método de Quine
Obtener implicantes primos de: f(a, b, c) = ∑m(0,2,5,6,7)
Primera Columna Segunda Columnam min marcas Grupos Implicantes0 a’b’c’ x (0,2) a’c’2 a’bc’ x x (2,6) bc’5 ab’c x (5,7) ac6 abc’ x x (6,7) ab7 abc x x
Como no se pueden formar nuevas columnas los implicantes primos son a’c’, bc’, ac, ab
6: Simplificación 19
Tabla de implicantes primos
Una vez obtenido los implicantes primos se puede determinar cuales son esenciales con la tabla de implicantes primos: Crear tabla empleando implicantes primos en las filas y los
min términos en las columnas En cada fila marcar con 1 las columnas de los mintérminos
pertenecientes al implicante considerado Aquellas columnas con solos una marca son implicantes
primos esenciales Hay que escoger el menor número de implicantes primos que
cubran todos los mintérminos de la función
6: Simplificación 20
Ejemplo: Tabla de implicantes Obtener implicantes primos de: f(a, b, c) = ∑m(0,2,5,6,7)
Primera Columna Segunda Columnam min marcas GruposImplicantes
0 a’b’c’ x (0,2) a’c’2 a’bc’ x x (2,6) bc’
5 ab’c x (5,7) ac
6 abc’ x x (6,7) ab7 abc x x
Usando los implicantes primos se genera la tabla de implicantes primos
0 2 5 6 7a’c’ 1 1
bc’ 1 1ac 1 1
ab 1 1
implicantes primos esenciales: a’c’ + ac
solo falta cubrir m6, se puede lograrcon bc’ o con abla forma mínima de la funcion: f = a’c’ + ac + bc’ o f = a’c’ + ac +ab
6: Simplificación 21
Método de Quine-McCluskey Otro método sistemático para encontrar la expresión mínima de una
función, no requiere reconocer agrupaciones en un mapa de Karnaugh Permite la búsqueda exhaustiva de todas las adyacencias entre los
mintérminos de la función mediante el uso sistemático del teorema a = ab + ab’
Es un método tabular adecuado para ser programado en un computador ya que se representan los implicantes primos en forma binaria
Algoritmo QM para encontrar implicantes primos:1. Formar columna con los mintérminos de la función representados en
forma binaria y agrupados de acuerdo al número de 1s que lo conforman
2. Formar siguiente columna según: Revisar primer elemento de la columna con todos los siguientes; si
se encuentra un término que difiere en una variable, se lo anota en la nueva columna omitiendo el literal correspondiente; se marcan los términos en la columna actual
Se repite para todos los elementos3. Repetir el paso 2 hasta no poder formar nuevas columnas
Después se pueden encontrar los implicantes primos esenciales usando la tabla de implicantes primos.
6: Simplificación 22
Ejemplo: Método de Quine-McCluskey
Obtener implicantes primos de: f(a, b, c, d) = ∑m(4,5,6,8,9,10,13) + d(0,7,15)
Columna I Columna II Columna III
0000 x 0-00 * 01-- *
-000 *
0100 x -1-1 *
1000 x 010- x
01-0 x
0101 x 100- *
0110 x 10-0 *
1001 x
1010 x 01-1 x
-101 x
0111 x 011- x
1101 x 1-01 *
1111 x -111 x
11-1 x
* indica los implicantes primos (no se pueden combinar mas)
- indica el literal combinado
solo se pueden combinar los implicantes primos que tienen el - en la misma posición
6: Simplificación 23
Ejemplo: Crear tabla de implicantes primos
Una vez obtenido los implicantes primos se puede determinar cuales son esenciales con la tabla de implicantes primos: Crear tabla empleando implicantes primos en las filas y los
min términos en las columnas. En cada fila marcar con 1 las columnas de los mintérminos
pertenecientes al implicante considerado. Aquellas columnas con solo una marca son implicantes primos
esenciales- Hay que escoger el menor número de implicantes primos que
cubran todos los mintérminos de la función.
6: Simplificación 24
Ejemplo: Tabla de implicantes primos Tabla de implicantes primos
4 5 6 8 9 10 130,4 (0-00) x0,8 (-000) x8,9 (100-) x x8,10 (10-0) x x9,13 (1-01) x x4,5,6,7 (01--) x x x5,7,13,15 (-1-1) x x
solo falta cubrir m9 y m13, se puede lograr con 1-01 (ac’d) la forma mínima de la funcion: f = ab’d’ + a’b + ac’d
implicantes primos esenciales: ab’d’ + a’b
6: Simplificación 25
Reducción de tabla de implicantes primos Una vez que se selecciona un implicante para formar
la función se puede reducir la tabla eliminando la fila (o renglón) correspondiente.
Cuando se elimina una fila también se eliminan las columnas con marcas en dicha fila.
Se comienza eliminando implicantes primos esenciales.
La tabla se puede continuar simplificando eliminando renglones cubiertos por otros y columnas que cubren a otras. Un renglón (R1) cubre a otro (R2) si tiene marcas en todas las
columnas marcadas por el otro. El renglón (R1) también puede tener columnas adicionales marcadas.
Una columna (C1) cubre a otra (C2) si tiene marcas en cada renglón que la otra tiene. La columna (C1) podría también tener renglones adicionales marcados.
6: Simplificación 26
La tabla de implicantes primos resulta:0 4 5 11 13 15
a’c’d’ 1 1a’bc’ 1 1bc’d 1 1abd 1 1acd 1 1
Ejemplo: Reducción de tabla de implicantes primos
1 1
0 1
0 0
1 0D
A
0 0
0 0
1 1
0 0
B
C
La tabla reducida: 5 13
a’bc’ 1bc’d 1 1abd 1
La función mínima es: f(a,b,c,d)=a’c’d’ + acd + bc’d
6: Simplificación 27
Reducción de tabla de implicantes primos II Se puede tratar de reducir la tabla se eliminando las
filas cubiertos por otros y columnas que cubren a otras.
Esto es como simplificación previa a la elección de implicantes primos.
La tabla simplificada tiene que garantizar cobertura de los mintérminos requeridos para implementar la función.
6: Simplificación 28
Ejemplo: Reducción de tabla de implicantes primos II La tabla de implicantes primos:
m1 m2 m3ipa 1 1ipb 1 1ipc 1 1ipd 1
Se puede reducir alguna fila cubierta por otra? Se puede reducir alguna columna que cubra a otra?
Si se elimina m2 para cubrir m1 debe seleccionarse ipb o ipc lo que considera a m2 en la coberturaSi se elimina m1 es un error porque si después se eligiera a ipa no se incluiría a m1 en la función
eliminando m2
eliminando m1
m1 m2
11 11 1
Si...la columna m2 cubre a la columna m1; puede eliminarse m2
Si
ipd es cubierto por ipa, ipb esta cubierto por ipcy viceversa
6: Simplificación 29
Tabla reducida cíclica
En algunos casos luego de remover los implicantes primos esenciales, los renglones cubiertos por otros y las columnas cubiertas por otras no puede seguir reduciéndose la tabla.
Estas tablas que no pueden ser reducidas se denominan tablas cíclicas
m1 m2 m3 m4
ip1 1 1ip2 1 1
ip3 1 1
ip4 1 1
No hay ninguna fila o columna que cubra a otra
6: Simplificación 30
Tabla reducida cíclica: Método de Petrick Para generar una función que cubra una tabla cíclica se puede
plantear una expresión booleana P como producto de sumas que garantice la cobertura y que entregue todas las soluciones posibles
m1 m2 m3 m4
ip1 1 1ip2 1 1
ip3 1 1
ip4 1 1 Para que m1 este presente debe cumplirse que ip1 o ip4 estén
presentes; es decir (ip1 + ip4). Usando P: (P1 + P4) Para que estén presentes todos los mintérminos:
P = (P1 + P4)(P2 + P3)(P1 + P3)(P2 + P4) Simplificando: P = P1P2 + P3P4 Se tienen dos soluciones. La primera es ip1 e ip2: f = ip1 ip2. La
segunda es ip4 e ip3: f = ip4 ip3 Se elige la solución de menor costo
6: Simplificación 31
Actividad: Método de Quine-McCluskey
f(a, b, c, d) = ∑m(4,5,8,9,11,13,15) + d(0,3)
Columna I Columna II Columna III
0000x 0-00 * 1--1 *
-000 *
0100x
1000x 010- *
100- *
0011x
0101x -011 *
1001x -101 *
10-1 x
1011x 1-01 x
1101x
1-11 x
1111x 11-1 x
6: Simplificación 32
Actividad: Tabla de implicantes primos Tabla de implicantes primos
4 5 8 9 11 13 150,4 (0-00) x0,8 (-000) x4,5 (010-) x x8,9 (100-) x x3,11 (-011) x5,13 (-101) x x9,11,13,15 (1--1) x x x x
Hay varias soluciones posibles, con 010- y 100- se cubren m4, m5, m8 y m9. Solo falta cubrir m11, m13 y m15 que se puede lograr con 1--1.La forma mínima de la función: f = a’bc’ + ab’c’ + ad
6: Simplificación 33
Aplicación Computacional
La minimización de funciones booleanas basada en mapas de Karnaugh se torna impracticable a medida que el número de variables aumenta; no es recomendable usar esta metodología para más de cuatro variables.
El algoritmo de Quine-McCluskey es de complejidad no polinomial, ya que el costo de resolver la cobertura mínima de la tabla de implicantes es de costo exponencial.
6: Simplificación 34
Aplicación Computacional
espresso: Programa de minimización de funciones
booleanas fue desarrollado por la Universidad de Berkeley, y puesto a disposición de otras universidades en 1984. Hoy es una aplicación de software abierto.
Abc: Es un programa interactivo para la síntesis y
optimización de circuitos combinacionales, secuenciales sincrónicos.
6: Simplificación 35
Aplicación Computacional
espresso Ejemplo de uso, La especificación de la siguiente
función: Z = ∑m(0,3,5,12,13) + d (1, 2,15)# Ejemplo de formato PLA.i 4# número de entradas.o 1# número de salidas.ilb A B C D# nombre de las entradas.ob Z# nombre de la salida# Los mintérminos presentes se especifican con valor 1.# ON-set0000 10011 10101 11100 11101 1# Los mintérminos superfluos se especifican con -. DC-set0001 -0010 -1111 -.e#se termina con end.
6: Simplificación 36
Aplicación Computacional
espresso La ejecución del comando: espresso ej1.pla >
ej1.out, produce el siguiente archivo:.i 4
.o 1
.ilb A B C D
.ob Z
.p 3
-101 1
00-- 1
110- 1
.e
El resultado, entrega, en el mismo formato de entrada, los implicantes, productos o cubos queson una cobertura de la función.
6: Simplificación 37
Aplicación Computacional
espresso La salida puede generarse en forma simbólica
mediante:espresso -oeqntott -eeat ej1.pla > ej1s.out
La opción –oeqntott genera una salida simbólica. La opción –eeat se come los comentarios, y no los
envía hacia la salida. El comando anterior produce:
Z = (B&!C&D) | (!A&!B) | (A&B&!C);
6: Simplificación 38
Aplicación Computacional
Abc Se tiene la siguiente función
Booleana, descrita por sus mintérminos:
f(a, b, c, d) = m(0, 1, 3, 8, 9, 11, 13, 14)
La cual puede describirse por el archivo ej5_5.pla:
# f(a, b, c, d) = Suma de m(0, 1, 3, 8, 9, 11, 13, 14).i 4.o 1.ilb a b c d.ob f.p 80000 10001 10011 11000 11001 11011 11101 11110 1.e
6: Simplificación 39
Aplicación Computacional
Abc Dentro de abc, el comando:
read_pla ./ej/ej5_5.pla Ingresa la descripción de la red, asumiendo que el
archivo se encuentra en un subdirectorio,de nombre ej, desde la ubicación desde donde se invoca a abc.
El comando:
print_kmap f
Imprime el mapa de Karnaugh
de la salida f.
6: Simplificación 40
Aplicación Computacional
Abc El comando:
sop Convierte las funciones de los nodos, de las
representaciones internas, en suma de productos. El comando:
write_pla ./ej/ej5_5ip.pla
Escribe en el subdirectorio ej,
un archivo con los implicantes
primos, en formato pla.
.i 4
.o 1
.ilb a b c d
.ob f
.p 41110 11-01 1-00- 1-0-1 1.e
6: Simplificación 41
Aplicación Computacional
Abc El comando:
write_verilog ./ej/ej5_5.verilog Produce un modulo estructural, con las formas
factorizadas de la red lógica.
module unknown ( a, b, c, d, f );
input a, b, c, d;
output f;
assign f = (a & ((~c & d) | (b & c & ~d))) | (~b & (~c | d));
endmodule