Está en la página 1de 41

6-Simplificacin

6.1 Ejemplos en dos niveles


6.2 Simplificacin en dos niveles
6.3 Algoritmos de simplificacin

6: Simplificacin

Ejemplo: comparador de dos bits

N1
N2

A
B
C
D

LT
EQ
GT

AB<CD
AB=CD
AB>CD

diagrama de bloque
y
tabla verdad

A B C
0 0 0
0
1
1
0 1 0
0
1
1
1 0 0
0
1
1
1 1 0
0
1
1

D
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1

LT
0
1
1
1
0
0
1
1
0
0
0
1
0
0
0
0

EQ
1
0
0
0
0
1
0
0
0
0
1
0
0
0
0
1

GT
0
0
0
0
1
0
0
0
1
1
0
0
1
1
1
0

mapa de Karnaugh de 4-variables


para cada una de las 3 funciones de output
6: Simplificacin

Ejemplo: comparador de dos bits


(cont)
A

LT =

D
C

D
C

K-mapa para LT

K-mapa para EQ

K-mapa para GT

A' B' D + A' C + B' C D

EQ = A' B' C' D' + A' B C' D + A B C D + A B' C D= (A xnor C) (B xnor D)


GT =

B C' D' + A C' + A B D'


LT y GT son similares
6: Simplificacin

Ejemplo: comparador de dos bits


(cont)
A

B C

D
dos implementaciones
alternativas de
EQ con y sin XOR
EQ

EQ

XNOR se implementa con


al mnimo 3 compuertas simples

6: Simplificacin

Ejemplo: multiplicador de dos bits

A1
A2
B1
B2

P1
P2
P4
P8

diagrama en bloque
y
tabla de verdad

A2 A1 B2 B1 P8 P4 P2 P1
0 0 0 0
0
0
0
0
0 1
0
0
0
0
1 0
0
0
0
0
1 1
0
0
0
0
0 1 0 0
0
0
0
0
0 1
0
0
0
1
1 0
0
0
1
0
1 1
0
0
1
1
1 0 0 0
0
0
0
0
0 1
0
0
1
0
1 0
0
1
0
0
1 1
0
1
1
0
1 1 0 0
0
0
0
0
0 1
0
0
1
1
1 0
0
1
1
0
1 1
1
0
0
1
mapa de Karnaugh de 4-variables
para cada una de las 4 funciones de output
6: Simplificacin

Ejemplo: multiplicador de dos bits


(cont)
A2

B2

K-mapa de P8

K-mapa de P4

B1

P4 = A2B2B1'
+ A2A1'B2

P8 = A2A1B2B1

B2

A2
0

A1

A1
A2

B2

A1

B1

K-mapa de P2

K-mapa de P1
P1 = A1B1

B1

P2 = A2'A1B2
+ A2B2B1
+ A2A1'B1
+ A1B2B1

B2

A2
0

B1

A1
6: Simplificacin

Ejemplo: incrementador en 1 de nmeros


BCD de 4 bits

I1
I2
I4
I8

diagrama en bloque
y
tabla de verdad

O1
O2
O4
O8

I8 I4 I2 I1 O8 O4 O2 O1
0
0
0
0
0
0
0
1
0
0
0
1
0
0
1
0
0
0
1
0
0
0
1
1
0
0
1
1
0
1
0
0
0
1
0
0
0
1
0
1
0
1
0
1
0
1
1
0
0
1
1
0
0
1
1
1
0
1
1
1
1
0
0
0
1
0
0
0
1
0
0
1
1
0
0
1
0
0
0
0
1
0
1
0
X
X
X
X
1
0
1
1
X
X
X
X
1
1
0
0
X
X
X
X
1
1
0
1
X
X
X
X
1
1
1
0
X
X
X
X
1
1
1
1
X
X
X
X
mapa de Karnaugh de 4-variables
para cada una de las 4 funciones de output
6: Simplificacin

Ejemplo: incrementador en 1 de nmeros


BCD de 4 bits (cont)
I8

I2

O8

I1

I2

I4

O8 = I4 I2 I1 + I8 I1'
O4 = I4 I2' + I4 I1' + I4 I2 I1

I2

O2 = I8 I2 I1 + I2 I1'

I4
I8

O4

I8

O2

O1 = I1'

I1

I4

O1

I1
I2

I8
1

I1

I4
6: Simplificacin

6-Simplificacin
6.1 Ejemplos en dos niveles
6.2 Simplificacin en dos niveles
6.3 Algoritmos de simplificacin

6: Simplificacin

Definiciones de trminos para


simplificacin en dos niveles

Implicante

Elemento individual del ON-set o algn 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 ms 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 mintrmino)
Va a participar de todas las posibles coberturas del ON-set
6: Simplificacin

10

Definiciones de trminos para


simplificacin en dos niveles
Objetivo:
Hacer crecer implicantes para convertirlos en
implicantes primos (minimizar literales por
trmino)
Cubrir el ON-set con el menor nmero de
implicantes primos posible (minimizar nmero de
trminos)

6: Simplificacin

11

Ejemplos para ilustrar


trminos
A

6 implicantes primos (no se pueden agrupar mas):


A'B'D, BC', AC, A'C'D, AB, B'CD
esencial

mnima cobertura: AC + BC' +


A'B'D
A

5 implicantes primos:
BD, ABC', ACD, A'BC, A'C'D
esenciales
cobertura mnima : 4 implicantes esenciales

B
6: Simplificacin

12

6-Simplificacin
6.1 Ejemplos en dos niveles
6.2 Simplificacin en dos niveles
6.3 Algoritmos de simplificacin

6: Simplificacin

13

Algoritmo para simplificacin de dos niveles


en un mapa de Karnaugh

Algoritmo: mnima expresin de suma de productos de un mapa de


Karnaugh
1: elegir mintrmino (un elemento del ON-set)
2: encontrar grupos mximos 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 (nmero 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 nmero ms pequeo de implicantes primos que cubren
el resto de los 1s
6: Simplificacin

14

Algoritmos para simplificacin de dos


niveles (ejemplo)
A

D
C

D
C

2 primos cubriendo A'BC'D' 2 primos cubriendo ABC'D

3 primos cubriendo AB'C'D'

2 primos esenciales

cobertura mnima (3 primos)


6: Simplificacin
15

Actividad

Indique todos los implicantes primos para el K-map:


A

CD

BC

BD

AB

ACD

Cuales son implicantes primos esenciales?


CD

BD

ACD

Cual es la cobertura mnima?

BD

ACD

CD

6: Simplificacin

16

Mtodo de Quine

Mtodo sistemtico para encontrar la expresin mnima de una


funcin, no requiere reconocer agrupaciones en un mapa de
Karnaugh
Bsicamente es la bsqueda exhaustiva de todas las adyacencias
entre los mintrminos de la funcin mediante el uso sistemtico
del teorema a = ab + ab
Algoritmo Quine para encontrar implicantes primos:
1. Formar columna con los mintrminos de la funcin
2. Formar siguiente columna segn:
Revisar primer elemento de la columna con todos los
siguientes; si se encuentra un trmino que difiere en una
variable, se lo anota en la nueva columna omitiendo el
literal correspondiente; se marcan los trminos en la
columna actual
Se repite para todos los elementos
3. Repetir el paso 2 hasta no poder formar nuevas columnas
Despus se pueden encontrar los implicantes primos esenciales
usando la tabla de implicantes primos
6: Simplificacin
17

Ejemplo: Mtodo de Quine

Obtener implicantes primos de: f(a, b, c) =


m(0,2,5,6,7)

Primera Columna
m min
marcas
0 abc
x
2 abc
xx
5 abc
x
6 abc
x x
7 abc
xx

Segunda Columna
Grupos
Implicantes
(0,2)
ac
(2,6)
bc
(5,7)
ac
(6,7)
ab

Como no se pueden formar nuevas columnas los implicantes


primos son ac, bc, ac, ab
6: Simplificacin
18

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 trminos en las columnas
En cada fila marcar con 1 las columnas de los mintrminos
pertenecientes al implicante considerado
Aquellas columnas con solos una marca son implicantes
primos esenciales
Hay que escoger el menor nmero de implicantes primos que
cubran todos los mintrminos de la funcin

6: Simplificacin

19

Ejemplo: Tabla de implicantes


Obtener implicantes primos de: f(a, b, c) = m(0,2,5,6,7)
Primera Columna
Segunda Columna
m min
marcas
GruposImplicantes
0 abc
x
(0,2)
ac
2 abc
xx
(2,6)
bc
5 abc
x
(5,7)
ac
6 abc
x x
(6,7)
ab
7 abc
xx

Usando los implicantes


primos
0
2
5
ac
1
1
bc
1
ac
1
ab

primos se genera la tabla de implicantes


6

1
1

1
1

implicantes primos esenciales:


ac + ac
solo falta cubrir m6, se puede lograr
con bc o con ab
la forma mnima de la funcion:
f = ac + ac + bc o f = ac + ac +ab
6: Simplificacin

20

Mtodo de Quine-McCluskey

Otro mtodo sistemtico para encontrar la expresin mnima de una


funcin, no requiere reconocer agrupaciones en un mapa de Karnaugh
Permite la bsqueda exhaustiva de todas las adyacencias entre los
mintrminos de la funcin mediante el uso sistemtico del teorema a =
ab + ab
Es un mtodo 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 mintrminos de la funcin representados en
forma binaria y agrupados de acuerdo al nmero de 1s que lo
conforman
2.
Formar siguiente columna segn:
Revisar primer elemento de la columna con todos los siguientes; si
se encuentra un trmino que difiere en una variable, se lo anota
en la nueva columna omitiendo el literal correspondiente; se
marcan los trminos en la columna actual
Se repite para todos los elementos
3.
Repetir el paso 2 hasta no poder formar nuevas columnas
Despus se pueden encontrar los implicantes primos esenciales usando
6: Simplificacin
21
la tabla de implicantes primos.

Ejemplo: Mtodo 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

0000 x

0-00

-000

0100 x
1000 x

01--1-1

010-

01-0

0101 x

100-

0110 x

10-0

01-1

-101

0111 x

011-

1101 x

1-01

1111 x

-111

11-1

1001 x
1010 x

Columna III
*
*

- indica el literal
combinado

* indica los
implicantes primos (no
se pueden combinar
mas)
solo se pueden
combinar los
implicantes primos
que tienen el - en la
misma posicin
6: Simplificacin

22

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 trminos en las columnas.
En cada fila marcar con 1 las columnas de los mintrminos
pertenecientes al implicante considerado.
Aquellas columnas con solo una marca son implicantes primos
esencialesHay que escoger el menor nmero de implicantes primos que
cubran todos los mintrminos de la funcin.

6: Simplificacin

23

Ejemplo: Tabla de implicantes primos


Tabla de implicantes primos
4
5
6
0,4 (0-00)
x
0,8 (-000)
8,9 (100-)
8,10 (10-0)
9,13 (1-01)
4,5,6,7 (01--)
x
x
x
5,7,13,15 (-1-1)
x

solo falta cubrir m9 y m13, se


puede lograr con 1-01 (acd)
la forma mnima de la funcion:
f = abd + ab + acd

x
x
x

10

13

x
x

x
x

implicantes primos esenciales:


abd + ab

6: Simplificacin

24

Reduccin de tabla de implicantes primos

Una vez que se selecciona un implicante para formar


la funcin se puede reducir la tabla eliminando la fila
(o rengln) correspondiente.
Cuando se elimina una fila tambin 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 rengln (R1) cubre a otro (R2) si tiene marcas en todas las


columnas marcadas por el otro. El rengln (R1) tambin
puede tener columnas adicionales marcadas.
Una columna (C1) cubre a otra (C2) si tiene marcas en cada
rengln que la otra tiene. La columna (C1) podra tambin
tener renglones adicionales marcados.
6: Simplificacin

25

Ejemplo: Reduccin de tabla de implicantes


primos A

La tabla
0
acd 1
abc
bcd
abd
acd

La tabla reducida:
5
abc
1
bcd
1
abd

13
1
1

La funcin mnima es: f(a,b,c,d)=acd + acd + bcd

de implicantes primos resulta:


4
5
11
13
15
1
1
1
1
1
1
1
1
1
6: Simplificacin

26

Reduccin 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 simplificacin previa a la eleccin de
implicantes primos.
La tabla simplificada tiene que garantizar cobertura de
los mintrminos requeridos para implementar la
funcin.

6: Simplificacin

27

Ejemplo: Reduccin de tabla de implicantes primos II


La tabla de implicantes primos:
m1 m2
m2 m3
eliminando m2
ipa
1
1
eliminando m1
1
ipb 1
1
1
1
ipc
1
1
1
ipd es cubierto por ipa,
ipd
1
ipb esta cubierto por ipc
y viceversa

Se puede reducir alguna fila cubierta por otra? Si


Se puede reducir alguna columna que cubra a otra?
Si...la columna m2 cubre a la columna m1; puede eliminarse m2
Si se elimina m2 para cubrir m1 debe seleccionarse ipb o ipc lo
que considera a m2 en la cobertura
Si se elimina m1 es un error porque si despus se eligiera a ipa
no se incluira a m1 en la funcin
6: Simplificacin

28

Tabla reducida cclica

En algunos casos luego de remover los implicantes


primos esenciales, los renglones cubiertos por otros y
las columnas cubiertas por otras no puede seguir
reducindose la tabla.
Estas tablas que no pueden ser reducidas se
denominan tablas cclicas

ip1
ip2
ip3
ip4

m1
1

m2
1
1

m3
1

m4

No hay ninguna fila o


columna que cubra a otra

1
1
1

6: Simplificacin

29

Tabla reducida cclica: Mtodo de Petrick

Para generar una funcin que cubra una tabla cclica se puede
plantear una expresin booleana P como producto de sumas que
garantice la cobertura y que entregue todas las soluciones
posibles
m1
m2
m3
m4
ip1
1
1
ip2
1
1
ip3
1
1
ip4
1
1
Para que m1 este presente debe cumplirse que ip1 o ip4 estn
presentes; es decir (ip1 + ip4). Usando P: (P1 + P4)
Para que estn presentes todos los mintrminos:
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
6: Simplificacin
30
Se elige la solucin de menor costo

Actividad: Mtodo 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

010-

100-

0101x

-011

1001x

-101

10-1

1-01

1-11

11-1

0100x
1000x
0011x

1011x
1101x
1111x

6: Simplificacin

31

Actividad: Tabla de implicantes primos


Tabla de implicantes primos
4
5
8
0,4 (0-00)
x
0,8 (-000)
x
4,5 (010-)
x
x
8,9 (100-)
x
3,11 (-011)
5,13 (-101)
x
9,11,13,15 (1--1)

11

13

15

x
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 mnima de la funcin: f = abc + abc + ad6: Simplificacin

32

Aplicacin Computacional
La minimizacin de funciones booleanas

basada en mapas de Karnaugh se torna


impracticable a medida que el nmero
de
variables
aumenta;
no
es
recomendable usar esta metodologa
para ms de cuatro variables.

El algoritmo de Quine-McCluskey es de

complejidad no polinomial, ya que el


costo de resolver la cobertura mnima de
la tabla de implicantes es de costo
6: Simplificacin
exponencial.

33

Aplicacin Computacional
espresso:

Programa de minimizacin de funciones


booleanas
fue
desarrollado
por
la
Universidad de Berkeley, y puesto a
disposicin de otras universidades en 1984.
Hoy es una aplicacin de software abierto.
Abc:
Es un programa interactivo para la sntesis y
optimizacin de circuitos combinacionales,
secuenciales sincrnicos.
6: Simplificacin

34

Aplicacin Computacional
espresso

Ejemplo de uso, La especificacin de la siguiente


funcin: Z = m(0,3,5,12,13) + d (1, 2,15)
# Ejemplo de formato PLA
.i 4
# nmero de entradas
.o 1
# nmero de salidas
.ilb A B C D
# nombre de las entradas
.ob Z
# nombre de la salida
# Los mintrminos presentes se especifican con valor 1.
# ON-set
0000 1
0011 1
0101 1
1100 1
1101 1
# Los mintrminos superfluos se especifican con -. DC-set
0001 0010 1111 .e
#se termina con end.

6: Simplificacin

35

Aplicacin Computacional
espresso

La ejecucin 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 que
son una cobertura de la funcin.
6: Simplificacin

36

Aplicacin Computacional
espresso

La salida puede generarse en forma simblica


mediante:
espresso -oeqntott -eeat ej1.pla > ej1s.out

La opcin oeqntott genera una salida simblica.


La opcin eeat se come los comentarios, y no los
enva hacia la salida. El comando anterior
produce:

Z = (B&!C&D) | (!A&!B) | (A&B&!C);


6: Simplificacin

37

Aplicacin Computacional
Abc
Se tiene la siguiente funcin
Booleana, descrita por
sus mintrminos:
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 8
0000 1
0001 1
0011 1
1000 1
1001 1
1011 1
1101 1
1110 1
.e

6: Simplificacin

38

Aplicacin Computacional
Abc

Dentro de abc, el comando:


read_pla ./ej/ej5_5.pla
Ingresa la descripcin de la red, asumiendo que el
archivo se encuentra en un subdirectorio,de nombre
ej, desde la ubicacin desde donde se invoca a abc.

El comando:
print_kmap f

Imprime el mapa de Karnaugh


de la salida f.
6: Simplificacin

39

Aplicacin Computacional
Abc

El comando:
sop
Convierte las funciones de los nodos, de las
representaciones internas, en suma de productos.
El comando:
.i 4
.o 1
write_pla ./ej/ej5_5ip.pla
.ilb a b c d
.ob f
Escribe en el subdirectorio ej,
.p 4
1110 1
un archivo con los implicantes
1-01 1
-00- 1
primos, en formato pla.
-0-1 1
.e

6: Simplificacin

40

Aplicacin Computacional
Abc

El comando:
write_verilog ./ej/ej5_5.verilog
Produce un modulo estructural, con las formas
factorizadas de la red lgica.

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

6: Simplificacin

41

También podría gustarte