Leo Clases
Leo Clases
Leo Clases
Capítulo 1
Funciones Booleanas
Cada salida de un sistema digital combinacional puede describirse por una función booleana
de sus variables de entrada. Es decir, las salidas de una red combinacional dependen solamente
de sus entradas. Lo anterior se considera la definición de un sistema digital combinacional.
1.1. Definiciones
i) Una variable booleana es un símbolo, el cual puede ser sustituido por un elemento del
conjunto B={0,1}. Una constante booleana es un valor perteneciente al conjunto {0,1}.
ii) El elemento que es sustituido por el símbolo de la variable se llama el valor de la variable.
iii) Una función booleana de n variables f ( x1 , x2 ,..., xn ) , es un mapeo o correspondencia que
asocia un valor booleano a f, con cada una de las posibles combinaciones de valores que
pueden tomar las variables.
iv) Una expresión o fórmula booleana queda definida, recursivamente, por las reglas:
a) Constantes y variables son expresiones.
b) Si x e y son expresiones, entonces:
x+y, x·y, x’, y’, (x) también son expresiones.
v) Una función booleana es una función f ( x1 , x2 ,..., xn ) , para la cual existe una expresión
E ( x1 , x2 ,..., xn ) , tal que:
f ( x1 , x2 ,..., xn ) E ( x1 , x2 ,..., xn ) (1.1)
vii) Dos expresiones son equivalentes si una puede ser obtenida a partir de la otra mediante un
número finito de aplicaciones de los postulados o teoremas. O bien si tienen las mismas tablas
de verdad.
Para x = (x1, x2), podemos definir una función booleana f de dos variables según:
f ( x) : B 2 B (1.3)
f ( x) : B n B (1.4)
El conjunto uno u “on” de f puede definirse como los puntos de B n que se mapean a 1:
f1 f 1
(1) x | f ( x) 1 (1.5)
El conjunto cero u “off” de f puede definirse como los puntos de B n que se mapean a 0:
f0 f 1
(0) x | f ( x) 0 (1.6)
f ( x) g ( x) (1.7)
1.3.1. Expresiones.
La función puede evaluarse para las diferentes combinaciones de valores que tomen las
variables. Se ilustra la evaluación de la función para A = 1, B = 0 y C = 0.
f( 1, 0, 0) = 1 0 + 1’ 0 + 1 0’
= 0 +0 0+1 1
= 1
Esto nos lleva al problema de síntesis lógica que consiste en encontrar la “mejor” expresión
para representar a una función.
La mayor ventaja de esta representación es que puede ser muy compacta y facilita la
manipulación matemática. Sin embargo resulta difícil el tratamiento algorítmico.
A B C f
0 0 0 0
0 0 1 1
0 1 0 0
0 1 1 1
1 0 0 1
1 0 1 0
1 1 0 1
1 1 1 1
Sin embargo a medida que el número de variables aumenta su uso se torna impracticable. El
crecimiento exponencial del número de renglones, ya que éstos se duplican al aumentar en una
variable, impiden que esta representación se emplee para desarrollar algoritmos
computacionales eficientes.
Una variante de las tablas de verdad son las matrices de cobertura que se desarrollan en
4.6.4.
NOT
AND NAND
D Q
OR NOR
Los símbolos lógicos anteriores representan a las funciones booleanas básicas, cuyas
definiciones se presentan en 1.4.2.
La Figura 1.3 ilustra las relaciones geométricas de los símbolos IEEE para las compuertas
lógicas elementales.
26
19
26
5 10 13
4
26
26
Existen múltiples esquemáticos que pueden representar la misma función. La ventaja de esta
representación es que está asociada a la implementación.
Los esquemáticos pueden describirse mediante secuencias de texto, que especifican las
compuertas y los cables que las interconectan. Se denominan netlist a estas representaciones.
Síntesis lógica.
El problema de síntesis lógica consiste en encontrar un circuito C(G, A), formado por un
conjunto G de compuertas y flip-flops, y un conjunto A de alambres o elementos orientados que
interconectan las compuertas y flip-flops.
Los cambios de f no están alineados con los cambios de las entradas, debido a que toma
tiempo para que una compuerta cambie su estado. Es similar a una tabla de verdad, pero
horizontal.
Nótese que entre los tiempos 10 y 20, la señal f debería estar en 1 lógico(A=1, C'=1), sin
embargo esto ocurre un poco después (tipo 2 unidades). Esto se debe al retardo de propagación
a través de las compuertas.
También se aprecia, en la gráfica de la Figura 1.5, que la salida tiene una caída a cero, un
poco después del tiempo 40; como se verá después, es una perturbación.
En el tiempo cercano a cero existe un valor no lógico asociado a f, esto es debido a que el
simulador no puede conocer la salida hasta que los valores iniciales se hayan propagado a través
de las compuertas.
Las formas de ondas pueden también visualizarse mediante un analizador lógico, o con un
osciloscopio.
Retardos de propagación.
Existe un retardo entre la salida y la entrada de una compuerta, que se denomina retardo de
propagación.
La Figura 1.6, muestra las formas de ondas a la entrada y salida de un inversor, en las que se
han definido los retardos de propagación (propagation delay) de un canto de subida y de un
canto de bajada. Al mismo tiempo se definen los tiempos de subida y de bajada.
Los retardos de propagación han sido definidos como cotas superiores de retardos entre
entradas válidas y salidas válidas.
Vin
VIH
VIL
t
tPDHL tPDLH
Vout
VOH
VOL
t
tf tr
Tiempo caída Tiempo subida
(fall time) (rise time)
Vin
VIH
VIL
t
Vout tCDHL tCDLH
VOH
VOL
t
Figura 1.7. Tiempos de contaminación.
La Figura 1.8, muestra las formas de ondas idealizadas en las entradas y salidas de los
inversores. Nótese que los tiempos de propagación son acumulativos en conexiones en cascada.
A1 A2 A3
A1
A2
A3
A A’ A’ A
A A
A’ A’
A
A’
A
A’
A
A’
A
A’
1.3.7. N-cubos.
Para sistemas reales se emplean aplicaciones computacionales que emplean lenguajes para la
descripción del hardware (HDL Hardware Description Language).
n N 2n 22
n
0 1 2
1 2 4
2 4 16
3 8 256
4 16 65536
... ...
El caso n = 0 se interpreta como una función descrita por 0 variables; es decir por una
constante. En esta situación existe sólo un valor posible (N=1) y como la constante puede ser 0
ó 1 el número de funciones de cero variables es 2.
Para n = 2 las tablas de verdad tienen cuatro renglones. Los cuatro casilleros de una función
pueden llenarse de 16 formas, las que se muestran en la siguiente tabla.
Las funciones se han numerado, en binario, considerando el primer renglón como el dígito
menos significativo. Por ejemplo: 0111 equivale a 7, en sistema binario. Lo cual puede verse
de la siguiente relación: 0 23 +1 22 + 1 21 +1 20 = 7
f0 = 0 f8 = AB
f1 = A'B' = (A + B)' f9 = A'B' + AB
f2 = A'B f10 = A'B + AB = B
f3 = A'B' + A'B = A' f11 = A'B' + A'B + AB = A' + B
f4 = AB' f12 = AB' + AB = A
f5 = A'B' + AB' = B' f13 = A'B' + AB' + AB = A + B'
f6 = A'B + AB' f14 = A'B + AB' + AB = A + B
f7 = A'B' + A'B + AB' = A' + B' = (AB)' f15 = A'B' + A'B + AB' + AB = 1
Las diferentes expresiones pueden comprobarse verificando que se satisfacen las tablas de
verdad de la Figura 1.11.
Algunas de estas funciones son tan utilizadas, que se las reconoce con un nombre.
Definiciones de funciones lógicas de dos variables.
f1 (A, B) = nor (A, B) = A B
f 8 (A, B) = and (A, B) = A B
f 6 (A, B) = xor (A, B) = A B (1.9)
f 7 (A, B) = nand (A, B) = A B
f14 (A, B) = or (A, B) = A + B
La función 6, se denomina xor, por or exclusivo. Toma valor verdadero si los valores lógicos
de A y B son diferentes; por esto también se la denomina desigualdad o diferencia.
La función 9 se denomina xnor. Toma valor verdadero si los valores lógicos de A y B son
iguales. Por esto se la denomina igualdad o coincidencia .
La función 9 se denomina equivalencia lógica o bicondicional; la función 11 es la
implicancia lógica o condicional.
f11 (A,B) = A B =A B
A B OR XOR
0 0 0 0
0 1 1 1
1 0 1 1
1 1 1 0
A 0=A
A 1 =A
A A=0
A A=1
Por lo tanto un circuito combinacional puede construirse usando sólo compuertas AND, OR
y NOT.
nand ( A, B) AB
nand ( A, A) A
nand ( A, B ) A B
También la función NOR es funcionalmente completa. Esto puede verse observando que la
función nor, genera el complemento de una variable, y también el or y el and de dos variables.
nor ( A, B) A B
nor ( A, A) A
nor ( A, B ) AB
Generalización para funciones de más de dos variables.
Algunas funciones pueden generalizarse para más de dos variables, por ejemplo:
La función xor para n variables puede generalizarse, estableciendo que la función toma valor
uno si se tiene un número impar de variables que toman valores iguales a 1; y toma valor cero si
el número de variables que toman valor 1 es par.
(Taub): En un estante hay 5 libros (v, w, x, y, z) que se pueden tomar cumpliendo las
siguientes reglas:
a) Se seleccionan v o w o ambos
b) Se seleccionan x o z pero no ambos
c) se selecciona v y z juntos, o bien una selección que no incluya a ninguno de ellos
d) si se selecciona y, también debe seleccionarse z
e) si se selecciona a w, también debe seleccionarse a v e y.
Expresar cómo seleccionar un grupo de libros cumpliendo las reglas anteriores.
Solución.
Sean:
u la proposición lógica que indica que la selección de libros cumple las reglas
el nombre del libro es la proposición lógica que indica que se tomó dicho libro para formar
la selección.
Como las reglas de selección deben cumplirse simultáneamente, debe entenderse que debe
cumplirse la primera regla y la segunda, y así sucesivamente.
v z regla c)
0 0 1
0 1 0
1 0 0
1 1 1
Es decir: (v z)'
Una frase alternativa para (w' +y) es: si no se selecciona w, la selección de y es opcional.
Ejemplo 1.2.
(Dietmeyer). Tres interruptores(a, b, c) controlan dos ampolletas (una roja R, y otra verde V)
del modo siguiente:
a) Cuando los tres interruptores están cerrados, se enciende la luz roja.
b) Cuando el interruptor A está abierto y B o C están cerrados se enciende la luz verde.
c) No deben encenderse ambas ampolletas a la vez.
d) En el resto de los casos la roja debe encenderse, excepto cuando los tres interruptores están
abiertos, en este caso no debe encenderse ninguna ampolleta.
Solución:
A B C R V
0 0 0 0 0 por condición e
0 0 1 0 1
0 1 0 0 1
0 1 1 0 1 por condición b.
1 0 0 1 0
1 0 1 1 0
1 1 0 1 0 por condición c
1 1 1 1 0
Se advierte que si no se hubiese dado, por ejemplo, la especificación c), el problema queda
indeterminado. En estos casos es preciso efectuar suposiciones o agregar especificaciones.
Por esto podría decirse que una tabla de verdad es una especificación formal.
Una vez que se tiene la tabla pueden encontrarse las expresiones para R y V en función de A,
B y C.
Puede comprobarse que cada uno de la función está asociado a un producto lógico de las
variables A, B y C. Y que la función es la suma lógica de esos productos, se tiene entonces que:
R = A.
V = A'(B +C)
Este teorema permite calcular la función dual ( fd) de una función f. Debe notarse que no se
intercambian las constantes y los operadores.
Demostración por inducción perfecta de la primera proposición. Se analizan todos los casos
que se presentan cuando la variable x1 toma todos los valores que le son posibles.
Considerando:
x1 f ( x1 ,..., xn ) x1 f (0, x2 ,..., xn )
Cuando x1 = 1, entonces:
f ( 1,x2 ,...,x n ) 1 f ( 1,x2 ,...,x n ) 0 f ( 0,x2 ,...,x n )
La repetida aplicación de este teorema permite representar una función de n variables como
una suma de productos o un producto de sumas.
Ejemplo 1.3.
En desarrollos de minimización se clasifican las funciones, dependiendo de cómo aparecen
las variables en una forma suma de productos.
Criterios de Reducción.
Cada función tiene una y sólo una tabla de verdad asociada; sin embargo pueden escribirse
diferentes expresiones booleanas para la misma función. Esto implica diferente costo.
Ejemplo 1.4.
Es usual asumir que se dispone de las variables y sus complementos como entradas de una
red combinacional, por esta razón se cuentan los literales.
J Q D Q
CP _ _
K Q CP Q
A A'
A
Figura 1.17. Entradas complementadas
Ejemplo 1.5.
B f
De este modo todas las compuertas empleadas no tienen más de dos entradas, según puede
verse en el esquema de la Figura 1.19:
A
f
B
Los circuitos lógicos que tienen igual tabla de verdad son equivalentes, pero pueden tener
diferente costo, en tiempo o en espacio.
Existen diversas herramientas para explorar el compromiso entre retardos y tamaño, que
permiten generar automáticamente diferentes soluciones, empleando minimización lógica para
reducir la complejidad espacial y optimización de los retardos para aumentar la velocidad de
respuesta.
Índice general.
CAPÍTULO 1.........................................................................................................................................1
FUNCIONES BOOLEANAS ...............................................................................................................1
1.1. DEFINICIONES ...............................................................................................................................1
1.2. ESPACIOS Y FUNCIONES BOOLEANAS............................................................................................2
1.3. REPRESENTACIÓN DE FUNCIONES BOOLEANAS ............................................................................3
1.3.1. Expresiones. .........................................................................................................................3
1.3.2. Tabla de verdad ....................................................................................................................3
1.3.3. Esquema Lógico. ..................................................................................................................4
Símbolos de compuertas básicas (gates) .................................................................................................... 4
Esquemático red digital.............................................................................................................................. 5
Síntesis lógica. ........................................................................................................................................... 5
1.3.4. Diagrama Temporal. ............................................................................................................5
Retardos de propagación. ........................................................................................................................... 6
Perturbaciones............................................................................................................................................ 8
1.3.5. Diagramas de Venn. .............................................................................................................9
1.3.6. Mapas de Karnaugh. ..........................................................................................................10
1.3.7. N-cubos...............................................................................................................................10
1.3.8. Lenguajes de descripción de hardware. .............................................................................10
1.4. FUNCIONES DE VARIAS VARIABLES. ............................................................................................10
1.4.1 Funciones de n variables. ....................................................................................................10
1.4.2 Funciones de dos variables. ................................................................................................11
Definiciones de funciones lógicas de dos variables. ................................................................................ 11
Conjuntos Funcionalmente Completos. ................................................................................................... 13
Generalización para funciones de más de dos variables........................................................................... 13
1.5. FORMULACIÓN DE EXPRESIONES BOOLEANAS.............................................................................13
Ejemplo 1.1. .................................................................................................................................14
Ejemplo 1.2. .................................................................................................................................15
1.6. TEOREMAS RELATIVOS A FUNCIONES DE VARIAS VARIABLES. ....................................................16
T.16 Función Dual .......................................................................................................................16
T.17 Reducción. ............................................................................................................................17
T.18 Teorema de expansión de Shannon. .....................................................................................17
Ejemplo 1.3. ............................................................................................................................................. 18
1.7. MINIMIZACIÓN (REDUCCIÓN O SIMPLIFICACIÓN) DE FUNCIONES. ...............................................18
Criterios de Reducción. ................................................................................................................18
Ejemplo 1.4. .................................................................................................................................19
Ejemplo 1.5. .................................................................................................................................20
ÍNDICE GENERAL. ..............................................................................................................................22
ÍNDICE DE FIGURAS ...........................................................................................................................23
Índice de Figuras
Capítulo 2
Existen dos formas básicas de expresiones booleanas que pueden ser implementadas en dos
niveles de compuertas.
Existen formas híbridas que son mezclas de las dos anteriores, y que en general tienen
representación en redes con más de dos niveles de compuertas.
Las formas híbridas se pueden reducir a una de las anteriores, aplicando postulados y
teoremas.
Ejemplo 3: AB(C+D)+E es una forma híbrida, de 5 literales, 8 entradas y 3 niveles que
puede ser representada como suma de productos según: ABC+ABD+E, con 7 literales, 9
entradas y 2 niveles. La forma híbrida tiene menor costo espacial, pero mayor costo temporal.
Toda expresión booleana puede ser representada en estas dos formas básicas.
Por ejemplo para el Ejemplo 1, se tiene la forma producto de sumas: ( A B )(C D)( A C )
con 6 literales y 9 entradas, que es de menor costo. La equivalencia entre ambas formas puede
ser demostrada aplicando los postulados y teoremas.
También se tiene para el Ejemplo 2, la forma equivalente según suma de productos:
A ' B ' C ' AC BD CD , con 9 literales y 13 entradas, que es de mayor costo. En este caso también
se tiene la forma equivalente: A ' B ' C ' AC BD A ' D .
Una forma canónica destaca las componentes más primitivas de una expresión.
Existe sólo una forma de escribir la tabla de verdad de una función y sólo una forma
canónica, pero existen diversas representaciones de la función, mediante esquemáticos o
expresiones booleanas.
Los términos elementales con los que se construyen las formas canónicas se denominan
mintérminos y maxtérminos. Una forma canónica no es una expresión mínima.
2.2. Mintérminos
Debe notarse que cada renglón de una tabla de verdad está asociado a un y sólo un
mintérmino.
Una función booleana puede describirse por la suma de los mintérminos que la constituyen.
Debe destacarse que es importante el orden de las variables antes de asignar códigos
binarios.
La tabla de verdad de un mintérmino contiene uno y sólo un valor lógico "1"; el resto son
"0"s. La posición del "1", define unívocamente un renglón. Cada columna de un mintérmino, a
través de la operación OR, deja un uno, en un renglón determinado de la columna de f.
La suma lógica de los mintérminos no incluidos en la sumatoria que describe a f, son los
mintérminos de la función complementada, en el caso del ejemplo anterior:
f m(0,1, 3, 4, 5, 7)
2.3. Maxtérmino.
Es una suma lógica que contiene todas las variables, pudiendo éstas estar o no
complementadas.
El código decimal para identificar a los maxtérminos se obtiene, una vez ordenadas las
variables dentro de una suma de acuerdo a cierto criterio, asignando un "0" a cada variable no
complementada y un "1" a las variables complementadas. Debe notarse que esta asignación es
diferente (dual) de la elegida para mintérminos.
Una función puede describirse como el producto de los maxtérminos que la constituyen.
Cada maxtérmino asegura un cero de la función en un determinado renglón.
En general: f Mi
Es una forma particular de producto de sumas. También puede abreviarse mediante una lista
de los números decimales de los maxtérminos.
Se tiene:
# ABC f M2 M6
0 000 1 1 1
1 001 1 1 1
2 010 0 0 1
3 011 1 1 1
4 100 1 1 1
5 101 1 1 1
6 110 0 1 0
7 111 1 1 1
Relaciones
Se puede escribir la función complementada, como la suma de los mintérminos que no están
presentes en la función, es decir: f m0 m1 m4 m5
Aplicando De Morgan: f f m0 m1 m4 m5
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.
f (a, b, c) m(2,4,5,6,7)
Dada una función mediante una suma de productos, ésta puede implementarse usando un
OR de AND's.
Ejemplo 2.9. OR de ANDs
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 b' (si sólo se dispone de
b, se requiere un nivel adicional).
Gráficamente:
a
b'
f
c
d
Dada una función mediante un producto de sumas, puede lograrse una implementación en
dos niveles; usando un AND de OR's.
Ejemplo: f (A B ) (C D)
Se obtiene:
A
B' f
C
D
Algebraicamente:
f ( A B ) (C D) ; involución
( A B ) (C D) ; De Morgan
Resulta:
A
B' f
C
D
| Primer Nivel | Segundo Nivel |
El circuito anterior, puede obtenerse directamente a partir del basado en AND y OR, de la
Figura 2.7, usando el equivalente gráfico del teorema de De Morgan, que se muestra en la
Figura 2.9.
A A
B' f B' f
C C
D D
A A'
B' f B f'
C C'
D D'
Debe notarse que la implementación como suma de productos tiene todas las variables de
entrada y salida complementadas, respecto a la forma producto de sumas. Es decir, plantea la
expresión en términos de los complementos de las variables originales.
También puede convertirse una expresión tipo suma de productos a la forma producto de
sumas. En un esquemático, se cambian los ANDs del primer nivel por ORs; y el OR del
segundo nivel por un AND; además se complementan las variables de entrada y la de salida.
En la práctica, las compuertas lógicas tienen ciertas características. Una de ellas es el fan-in,
que es el número de entradas de una compuerta.
A menor número de niveles se tendrá que ocupar compuertas de mayor fan-in, lo que
generalmente implica ocupar más pastillas en una implementación.
f f1 f2
0 0 1
1 1 1
0 1 0
1 1 1
1 1 1
1 1 1
0 1 0
0 0 1
f f1 f2
0 0 0
1 1 0
0 0 0
1 0 1
1 0 1
1 1 0
0 0 0
0 0 0
Ambas funciones pueden representarse como suma de mintérminos; es decir, como suma de
productos.
A muchas personas les resulta más sencillo formar agrupaciones de unos. Entonces:
agrupando los unos de la función se logra la forma suma de productos; y agrupando los unos de
la función complementada, se genera mediante De Morgan la forma producto de sumas, ya que
esto equivale a agrupar los ceros de la función. Luego debe compararse el costo de ambos
diseños para obtener el mínimo.
Entonces con {B=0, C=1} o {B=0 y D=0}, se presenta perturbación, en canto de subida de A
atrasado, ver Figura 1.9.
A
B
C
D P = A'(AB' + C'D)
Las carreras entre los cantos, pueden evitarse en este caso cambiando el diseño.
Minimizando se logra un diseño libre de perturbaciones: P = A' C' D
Para esto se usa el teorema del consenso, que para tres variables puede escribirse:
AB AC AB AC BC
La condición para la perturbación, se produce con B=0 y C=0, cuando ocurre un canto de
subida de A (con A’ atrasada respecto de A); la salida del and equivale al producto: AA’.
A’
C f2
En este caso, cuando B=0 y C=0, la salida será: f ( A 0)( A ' 0)(0 0) 0 , y no se
produce perturbación.
B f
Para determinar cuándo se produce, es preciso conocer cual de las señales llega primero. En el
caso de la Figura 2.17, B llega al OR de la salida, con un retardo de propagación, a través del
AND; y B’ pasando a través del NOT llega al OR de salida, con dos retardos de propagación.
Como B' está atrasada respecto de B, la perturbación se produce en el canto de bajada de B.
Ver Figura 1.9.
AB
C 00 01 11 10
0 2 6 4
0 1
1 3 7 5
1 1 1 1
f(A, B, C)=A'B'+BC
Figura 2.18. Visualización de perturbaciones en mapas.
a
a’
f1
f2
f
f = (A+A’)(A+A’)
Resumiendo se puede decir que una perturbación es dinámica si ocurre en una conmutación
de la salida. Se espera una sola transición de la salida y se producen oscilaciones de ésta.
f2
D
A
A’
f1
f
El caso dual del anterior, se produce para una red combinacional en la que se produzca en la
salida: f=AA’ + A’.
2.6.5.4. Carreras aleatorias de las entradas. Perturbación de la función.
En redes combinacionales también pueden producirse perturbaciones si varias de las entradas
tienen cambios casi simultáneos.
f(0, 0, 0, 0) a f(0, 1, 0, 1)
f(A, B, C, D)
Una forma de controlar las carreras de las entradas es la habilitación del conjunto durante un
breve lapso de tiempo, luego de un tiempo de ocurrido el cambio de las entradas.
A, B, C, D
p
Ejemplo 2.13.
La red combinacional, de la Figura 2.27, es alimentada por un contador que genera las
señales A, B, C y D. Éstas cambian casi al mismo tiempo; es decir, varias tienen cantos que
TP1
TP2
Problemas resueltos
f (A B) C (D E) F
A'
B'
C
f
F'
D
E
A'
B'
C
f
F'
D
E
Nótese que las variables de entrada, que recorren un número impar de compuertas para llegar
a la salida, deben complementarse. Es el caso de A, B, D y E en el ejemplo anterior.
Asumiendo que ya está simplificada lógicamente como suma de productos, se observa que
requiere una compuerta OR de 7 entradas (fan-in = 7), también se requieren 6 compuertas AND
de 3 entradas. La expresión está formada por 19 literales. Un diseño directo requiere 25 entradas
(7 al OR de salida y 18 a los ANDs). Esta implementación tiene alto costo y es en dos niveles.
X = (A + B + C) (D + E) F + G
Para encontrar los factores adecuados pueden ayudar programas de minimización multinivel.
A B C f
0 0 0 0
0 0 1 1
0 1 0 0
0 1 1 1
1 0 0 0
1 0 1 1
1 1 0 1
1 1 1 0
A S
B
C' f
A S
B
f
C
Implementación que emplea 2 compuertas, dos niveles, 4 entradas. Una de las compuertas es
un OR exclusivo que requiere mayor costo interno.
Dependiendo de la forma de la expresión, las formas mínimas pueden tener costos diferentes,
como se aprecia en el siguiente ejemplo.
Expresar como suma de mintérminos usando teorema de expansión. Exprese los mintérminos
mediante números decimales, ordenados en forma ascendente.
Con f(a, b, c, d) = a + b’ c
Solución:
Para el primer término se tiene la siguiente expansión:
a = ab + ab’ = abc + abc’ + ab’c + ab’c’
a = abcd + abcd’ + abc’d + abc’d’ + ab’cd + ab’cd’ + ab’c’d + ab’c’d’
a = m(15, 14, 13, 12, 11, 10, 9, 8)
Para el segundo término, la expansión resulta:
b’c = ab’c + a’b’c = ab’cd + ab’cd’ + a’b’cd + a’b’cd’ = m( 11, 10, 3, 2)
Entonces: f(a, b, c, d) = m(15, 14, 13, 12, 11, 10, 9, 8) + m( 11, 10, 3, 2)
Como m10 + m10 = m10 por idempotencia, y también: m11 + m11 = m11
Problema 2.7.
Se tiene una red combinacional con tres entradas (D2, D1, D0) y ocho salidas: (L7, L6, L5, L4,
L3, L2, L1, L0).
Los tres dígitos binarios pueden leerse en su equivalente decimal (n), considerando que D2
es la cifra más significativa y D0 la menos significativa.
Cuando en la entrada se tiene el número n: la salida Ln está baja (0 lógico) y el resto de las
salidas están altas (1 lógico).
D2 L7
L6
D1 ...
D0 L1
L0
Determinar:
a) Tabla de verdad.
b) Expresión lógica mínima para L5 como suma de productos, efectuando reducciones
algebraicas.
c) Expresión lógica mínima para L5 como producto de sumas, efectuando reducciones
algebraicas.
Solución.
D2 D1 D0 L7 L6 L5 L4 L3 L2 L1 L0
0 0 0 1 1 1 1 1 1 1 0
0 0 1 1 1 1 1 1 1 0 1
0 1 0 1 1 1 1 1 0 1 1
0 1 1 1 1 1 1 0 1 1 1
1 0 0 1 1 1 0 1 1 1 1
1 0 1 1 1 0 1 1 1 1 1
1 1 0 1 0 1 1 1 1 1 1
1 1 1 0 1 1 1 1 1 1 1
L5 = m0+m1+m2+m3+m4+m6+m7
L5 = m0+m0+m1+m2+m2+m2+m3+m3+m4+m6+m6+m7 Por idempotencia. T8.
L5 = (m0+m2+m4+m6) + (m0+m1+m2+m3) + (m2+m3+m6+m7) Por conmutación. P4.
Aplicando repetidamente fusión: T14
m(0, 2, 4, 6) = (D2’D1’D0’ + D2’D1D0’) +(D2D1’D0’ + D2D1D0’)
= D2’D0’ + D2D0’ = D0’
L5 = M5 = D2’ + D1 + D0’
En este caso, ambos diseños resultan de igual complejidad (y con la misma expresión).
Problema 2.8.
Se tiene la función:
f(a, b, c) = M(1,2,3,6) + m(5, 7)
Solución:
a) La tabla de verdad para f, resulta de la suma lógica de las columnas asociadas al producto
de maxtérminos y a la suma de mintérminos. Con n el código decimal para el mintérmino.
a b c M(1,2,3,6) m(5, 7) f n
0 0 0 1 0 1 0
0 0 1 0 0 0 1
0 1 0 0 0 0 2
0 1 1 0 0 0 3
1 0 0 1 0 1 4
1 0 1 1 1 1 5
1 1 0 0 0 0 6
1 1 1 1 1 1 7
Problema 2.9.
Se tiene la función:
f(a, b, c, d) = ( a b) c
Solución:
a b c d a b (a b) c n
0 0 0 0 0 0 0
0 0 0 1 0 0 1
0 0 1 0 0 1 2
0 0 1 1 0 1 3
0 1 0 0 1 1 4
0 1 0 1 1 1 5
0 1 1 0 1 0 6
0 1 1 1 1 0 7
1 0 0 0 1 1 8
1 0 0 1 1 1 9
1 0 1 0 1 0 10
1 0 1 1 1 0 11
1 1 0 0 0 0 12
1 1 0 1 0 0 13
1 1 1 0 0 1 14
1 1 1 1 0 1 15
Figura P2.12 Tabla de verdad Problema 2.9.
Otro desarrollo:
Se tiene por definición:
a b = ab’ +a’ b
Luego: ( a b ) c = (ab’ +a’ b)c’ + (ab’ +a’ b)’c = ab’c’ +a’bc’ + ab’c +a’b’c Por P6.
f = ab’c’d +ab’c’d’ + a’bc’d + a’bc’d’ + ab’cd + ab’cd’ + a’b’cd + a’b’cd’ por T14.
f = m9 + m8 + m5 + m4 + m11 + m10 + m3 + m2
Conmutando se obtiene igual resultado que el anterior.
Los números de los maxtérminos son los números de los mintérminos que no están
presentes, en la expresión anterior. Con esta información puede escribirse la tabla de verdad.
Problema 2.10.
Solución.
a) m2 = A'BC' ; m3 = A'BC ;m5 = AB'C ; m7 = ABC
Los unos de f están asociados a los mintérminos presentes. El mintérmino 2 en decimal
equivale a la combinación de valores 010 de las variables ABC, y por lo tanto tendrá asociado
un uno en la tabla de verdad de la función.
Resulta entonces:
ABC f f' Código decimal
000 0 1 0
001 0 1 1
010 1 0 2
011 1 0 3
100 0 1 4
101 1 0 5
110 0 1 6
111 1 0 7
b) Los maxtérminos de f ' quedan definidos por los ceros de su tabla de verdad. Para A=0,
B=1 y C=0 se tiene que (A + B' +C) genera el cero en el renglón respectivo de f '.
Entonces: f ' = (A+B' +C)(A+B'+C')(A'+B+C')(A'+B'+C')
Codificando los maxtérminos en binario, se logra: f ' = M010 + M011 + M101 +M111
En decimal: f ' = M2 M3 M5 M7
Otro desarrollo:
A partir de f = (m2+m3+m5+m7), negando ambos miembros se logra:
f ' = (m2+m3+m5+m7)' ; P2
= m2' m3' m5' m7' ; T12 De Morgan
= M ( 2,3,5,7) ;Con mi' = Mi
c) f(A,B,C) = m(2,3,5,7)
= A'BC'+AB'C'+AB'C+ ABC ; definición de mintérminos.
= A'C'B+AC'B'+ACB'+ ACB ; P4 Conmutatividad.
= A'C'(B+B') + AC(B'+B) ; P6 Distributividad.
= A'C'(1) +AC(1) ; P7 Complemento único.
= A'C'+AC ; P3 Elementos únicos.
Problema 2.11.
Diseñar un sistema que acepte a n como entrada y que produzca en la salida el equivalente
binario del número decimal: ( n*4 +1).
Solución.
El mayor n que puede escribirse con cuatro bits es 15, por lo tanto la salida mayor será 61, lo
cual requiere 6 cifras binarias para representarla. Sean éstas: S5S4S3S2S1S0.
A3 S5
S1
A2 S4 VCC
A1 S3
S0
A0 S2
S1
tierra
S0
VCC
Problema 2.12.
Se tiene un circuito digital de 4 entradas (A, B, C, D) y cuatro salidas (f1, f2, f3, f4).
a) Determinar como suma de mintérminos, la función f1 que es verdadera cuando exactamente
dos de las entradas sean verdaderas.
b) Determinar como producto de maxtérminos, la función f2 que es verdadera cuando
exactamente tres de las entradas sean verdaderas.
c) Determinar mediante un circuito lógico en base a AND, OR y NOT, la función f3, que es
verdadera cuando exactamente cuatro de las entradas sean verdaderas.
d) Determinar mediante una expresión booleana, la función f4, que es verdadera cuando
exactamente cuatro de las entradas sean falsas.
Solución.
A B C D f1 f2 f3 f4 Código
0 0 0 0 0 0 0 1 0
0 0 0 1 0 0 0 0 1
0 0 1 0 0 0 0 0 2
0 0 1 1 1 0 0 0 3
0 1 0 0 0 0 0 0 4
0 1 0 1 1 0 0 0 5
0 1 1 0 1 0 0 0 6
0 1 1 1 0 1 0 0 7
1 0 0 0 0 0 0 0 8
1 0 0 1 1 0 0 0 9
1 0 1 0 1 0 0 0 10
1 0 1 1 0 1 0 0 11
1 1 0 0 1 0 0 0 12
1 1 0 1 0 1 0 0 13
1 1 1 0 0 1 0 0 14
1 1 1 1 0 0 1 0 15
Entonces:
f1 = m(3, 5, 6, 9, 10, 12)
f2 = M(0, 1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15)
f3 = m(15) = ABCD
A
B f3
C
D
f4 = m(0) = A'B'C'D'
Ejercicios propuestos.
Ejemplo 2.1.
f m(2, 6) M (0,1, 3, 4, 5, 7)
f m(0,1, 3, 4, 5, 7) M (2, 6)
Ejemplo 2.2.
Para la función:
Determinar:
a) Formas canónicas.
b) Minimizar, indicando número de entradas.
c) 2-cubos que contienen a m7
d) Agregue un mintérmino (a elección) tal que la expresión se simplifique.
Ejemplo 2.4.
Para la función:
Determinar:
a) Formas canónicas.
b) Minimizar, indicando número de entradas.
c) 2-cubos que contienen a m7
d) Agregue un mintérmino (a elección) tal que la expresión se simplifique.
Ejemplo 2.5.
Ejemplo 2.6.
Índice general.
CAPÍTULO 2.........................................................................................................................................1
SÍNTESIS EN DOS NIVELES ............................................................................................................1
2.1. FORMAS DE FUNCIONES. ...............................................................................................................1
2.2. MINTÉRMINOS ..............................................................................................................................2
Ejemplo 2.1. Definición de mintérmino ..........................................................................................2
Ejemplo 2.2. Suma de mintérminos ................................................................................................3
2.3. MAXTÉRMINO. ..............................................................................................................................3
Ejemplo 2.3. Definición de maxtérmino. ........................................................................................4
Ejemplo 2.4. Producto de maxtérminos .........................................................................................4
Relaciones ......................................................................................................................................5
Ejemplo 2.5. De suma de mintérminos a productoria de maxtérminos. .........................................5
2.4. EXPANSIÓN A FORMAS CANÓNICAS...............................................................................................6
2.4.1. Expansión de suma de productos .........................................................................................6
Ejemplo 2.7. Expansión a mintérminos. .................................................................................................... 6
2.4.2. Expansión de productos de sumas ........................................................................................6
Ejemplo 2.8. Expansión a maxtérminos ..................................................................................................... 6
2.5. SÍNTESIS DE LAS FORMAS..............................................................................................................7
2.5.1. Suma de productos ...............................................................................................................7
Ejemplo 2.9. OR de ANDs ........................................................................................................................ 7
Ejemplo 2.10. Dos niveles de NANDs ....................................................................................................... 7
2.5.2. Producto de sumas ...............................................................................................................8
2.5.3. Conversión de producto de sumas a suma de productos. Cambio de lógica. .......................9
2.6. DISEÑO LÓGICO ..........................................................................................................................10
2.6.1. Fan-in. Fan out...................................................................................................................10
2.6.2. Observaciones sobre la forma Producto de Sumas. ...........................................................11
2.6.3. Observaciones sobre la forma Suma de Productos. ...........................................................11
2.6.4. Observaciones sobre las diferentes formas de diseño. .......................................................12
2.6.5. Perturbaciones. Diseños con riesgos. ................................................................................12
2.6.5.1. Perturbación estática en uno........................................................................................................ 13
2.6.5.2. Perturbación estática en cero. ...................................................................................................... 14
Ejemplo 2.11. Análisis de perturbaciones. ............................................................................................... 15
Ejemplo 2.12. ........................................................................................................................................... 16
2.6.5.3. Perturbaciones dinámicas. ........................................................................................................... 17
2.6.5.4. Carreras aleatorias de las entradas. Perturbación de la función. .................................................. 18
Ejemplo 2.13. ...................................................................................................................................... 19
PROBLEMAS RESUELTOS ....................................................................................................................21
Problema 2.1. Diseño multinivel ..................................................................................................21
Problema 2.2. Conversión a NANDs en multinivel ......................................................................22
Problema 2.3. Diseño multinivel. Factorización. .........................................................................22
Problema 2.4. Diferentes formas de implementación. .................................................................23
Problema 2.5. Costos de Implementación. ...................................................................................24
Problema 2.6. ...............................................................................................................................25
Problema 2.7. ...............................................................................................................................25
Problema 2.8. ...............................................................................................................................26
Índice de Figuras
Capítulo 3
Codificación binaria
3.1. Codificación
Al modelar problemas es usual encontrar variables que pueden tomar múltiples valores, se
denomina codificación al proceso de convertir esas variables en señales binarias. La elección
adecuada del código puede conducir a redes lógicas más simples.
Consideremos, por ejemplo, el estado de un semáforo: éste puede tomar uno de tres valores:
verde, amarillo o rojo.
Una posible codificación es considerar cada color como una señal binaria; así si la variable
color toma valor rojo, estará en nivel alto la señal rojo y el resto de las señales (la verde y
amarilla) serán ceros.
Otra posibilidad es emplear dos bits para representar las tres situaciones que son posibles; ya
que con dos bits pueden simbolizarse, en binario, cuatro casos. Existen gran cantidad de códigos
posibles, ya que el nombre binario para el primer color puede elegirse de 4 maneras diferentes;
el código binario para el segundo color puede ser elegido de tres maneras diferentes, y el tercer
color puede ser elegido de dos modos diferentes. Existen 24 formas de representar la variable
multivaluada color mediante un vector binario.
Los más empleados son aquellos usados para representar números decimales.
El código representa los dígitos decimales por una secuencia de símbolos binarios.
Decimal BCD
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001
La tabla es el código. Cada secuencia de 4 bits es una palabra del código. Nótese que a cada
dígito decimal se le asocia una secuencia de 4 bits.
La posición de más a la izquierda, o más significativa, tiene peso 8. El bit menos significativo,
el de más a la derecha, tiene ponderación 1. Las ponderaciones son potencias de 2.
Así, la palabra 7, puede interpretarse según:
12 = 0001 0010
1 1 0 0 0 1 0 0 1 0 0 1
t
3 2 9
La situación anterior ilustra una transmisión serie. La duración temporal de los bits y la forma
de iniciar y terminar la comunicación debe ser acordada entre el transmisor y receptor, esta
modalidad se denomina comunicación asincrónica. Si además se transmite una señal de reloj, se
tendrá una comunicación serial sincrónica.
Si se dispone de cuatro líneas, más una referencia, se puede enviar una cifra decimal en
paralelo. Si enviamos primero la cifra más significativa, y si identificamos los cables del bus
por su ponderación, la Figura 3.3. muestra la transmisión paralela del número 329.
Las líneas se han identificado de acuerdo al peso.
b
8 t
b
8
b
b 4 t
4
b
2
b b
1 2 t
b
1 t
3 2 9
3.2.2. Distancia
Se define la distancia entre dos palabras de un código, como el número de dígitos que se deben
cambiar a una palabra para obtener la otra.
Por ejemplo:
Hay distancia 1 entre 0100 y 0110.
Hay distancia 4 entre 0011 y 1100.
La distancia del código es la mínima distancia entre dos palabras consecutivas cualesquiera del
código.
En ciertas aplicaciones son útiles los códigos de distancia unitaria. Uno de los más empleados
es el código Gray, que es un sistema de codificación que ordena un conjunto de 2n números
binarios, de tal modo que sólo uno de los n bits cambia de una palabra a la siguiente.
Por ejemplo, para palabras de largo igual a 3 bits, se pueden representar 8 números decimales
según:
Decimal Gray
0 000
1 001
2 011
3 010
4 110
5 111
6 101
7 100
Nótese que entre números decimales consecutivos la distancia entre las palabras codificadas es
1.
Cuando en una lista ordenada ascendente, según el código, la mitad superior es simétrica con la
inferior, exceptuando el bit de mayor orden, se dice que el código es reflejado.
00
01
--
11
10
Nótese que lo anterior permite construir tablas de código Gray con largos de palabra mayores.
Para obtener el código para largo tres, se duplica el código de largo dos, mediante un reflejo; a
la mitad superior se la antecede con un 0 y a la inferior con un 1, ver Figura 3.4.
En la Figura 3.5. se muestran los diseños de redes combinacionales, para generar código Gray a
partir de una secuencia binaria de cuatro bits y viceversa.
B3 G3
B2 G2
G3 B3
B2
G2
B1 G1
B1
G1
B0 G0 G0 B0
En éstos, las palabras consecutivas tienen la misma distancia, y esta distancia existe también
entre la primera y la última palabra del código. En este sentido, la lista puede considerarse
cerrada.
3.2.5. Paridad
Cuando la probabilidad de error no es muy alta, ha probado ser efectivo un sistema denominado
Chequeo de paridad. Esta técnica emplea un bit extra, llamado de paridad, cuyo valor se
selecciona de tal forma de dejar un número par de unos en la palabra de código, entonces se dice
que el código es de paridad par. Si el bit se escoge tal que el número de unos en la palabra sea
impar, se tiene un sistema de paridad impar.
Ejemplo 3.3. Generador y detector de paridad.
Generador y detector de paridad. Se envían 4 bits en paralelo más uno de paridad par. La Figura
3.6 muestra la generación del bit de paridad, mediante:
p b8 b4 b2 b1
dp b8 b4 b2 b1 p
Las ecuaciones que realizan el diseño se obtienen planteando la tabla de verdad y luego
empleando compuertas or exclusivo para la implementación.
Tx Rx
dp
En la Figura 3.6 se muestra, entre líneas punteadas, el medio de transmisión; que separa al
transmisor del receptor. Analizar el circuito, determinando valores de p y dp, en caso de
producirse errores, en una de las cinco señales que se transmiten.
Ejemplo 3.5.
a) Sea una palabra de largo 3: 010
Entonces con un bit de paridad par, se representa: 1010. Donde el bit de paridad ocupa la
posición más significativa. En este caso: p b4 b2 b1 0 1 0 1
b) Puede verse que un error se detecta simplemente, en un código con paridad, debido al
cambio de tipo de paridad. Si la palabra correcta, con paridad par es 1010, se tiene que si se
recibe:
Un error en dos bits no puede ser detectado. Este sistema no permite corregir el error, sólo
detectarlo.
Nótese que la distancia del código, de la Figura 3.7, es dos. La paridad ocupa el bit más
significativo.
Ejemplo 3.6.
Un código muy empleado es el hexadecimal que representa 16 símbolos o cifras del sistema
hexadecimal mediante secuencias de cuatro bits. La tabla con el código se muestra en la Figura
3.8. Las secuencias hexadecimales suelen precederse con 0x; de este modo el número
hexadecimal 0x1A4 tiene como equivalente al número decimal 420:
0 x1A4 000110100100
Uno de los códigos más empleados es el código ASCII. Éste es un código de 7 bits, más uno de
paridad. Permite representar 128 símbolos. Su nombre es una abreviación de "American
Standard Code for Information Interchange".
Los códigos binarios de las letras mayúsculas y minúsculas difieren en el estado de un bit.
H D H D H D H D H D H D H D H D
00 NULL 00 10 DEL 16 20 32 30 0 48 40 @ 64 50 P 80 60 ` 96 70 p 112
01 SOH 01 11 DC1 17 21 ! 33 31 1 49 41 A 65 51 Q 81 61 a 97 71 q 113
02 STX 02 12 DC2 18 22 " 34 32 2 50 42 B 66 52 R 82 62 b 98 72 r 114
03 EXT 03 13 DC3 19 23 # 35 33 3 51 43 C 67 53 S 83 63 c 99 73 s 115
04 EOT 04 14 DC4 20 24 $ 36 34 4 52 44 D 68 54 T 84 64 d 100 74 t 116
05 ENQ 05 15 NAK 21 25 % 37 35 5 53 45 E 69 55 U 85 65 e 101 75 u 117
06 ACK 06 16 SYN 22 26 & 38 36 6 54 46 F 70 56 V 86 66 f 102 76 v 118
07 BEL 07 17 ETB 23 27 ' 39 37 7 55 47 G 71 57 W 87 67 g 103 77 w 119
08 BS 08 18 CAN 24 28 ( 40 38 8 56 48 H 72 58 X 88 68 h 104 78 x 120
09 TAB 09 19 EM 25 29 ) 41 39 9 57 49 I 73 59 Y 89 69 i 105 79 y 121
0a LF 10 1a SUB 26 2a * 42 3a : 58 4a J 74 5a Z 90 6a j 106 7a z 122
0b VT 11 1b ESC 27 2b + 43 3b ; 59 4b K 75 5b [ 91 6b k 107 7b { 123
0c FF 12 1c FS 28 2c , 44 3c < 60 4c L 76 5c \ 92 6c l 108 7c | 124
0d CR 13 1d GS 29 2d - 45 3d = 61 4d M 77 5d ] 93 6d m 109 7d } 125
0e SO 14 1e RS 30 2e . 46 3e > 62 4e N 78 5e ^ 94 6e n 110 7e ~ 126
0f SI 15 1f US 31 2f / 47 3f ? 63 4f O 79 5f _ 95 6f o 111 7f del 127
Unicode asigna un código único a cada carácter, utilizado en los lenguajes escritos del mundo,
para esto Unicode representa un carácter en forma abstracta, y deja la representación visual,
tamaño, dimensión, fuente o estilo, a otra aplicación, como un navegador web, un procesador de
texto o un cliente de correo. Las normas de transmisión Unicode más empleadas son UTF-8 y
UTF-16.
En páginas web se emplean entidades HTML para enviar caracteres especiales al cliente.
Comienzan con & y terminan en punto y coma. Por ejemplo para enviar una a minúscula
acentuada, se envía: á. También se acepta introducir una secuencia Unicode precedida
de la secuencia &#x. Por ejemplo U+00E1, es el Unicode para la á; entonces en la página web,
puede codificarse: á
Existe una variedad de códigos empleados en voltímetros digitales, tubos de rayos catódicos y
calculadoras. Uno de los más empleados es el código de siete segmentos, cuya tabla se ilustra a
continuación:
Decimal S6 S5 S4 S3 S2 S1 S0
0 0 1 1 1 1 1 1
1 0 0 0 0 1 1 0
2 1 0 1 1 0 1 1
3 1 0 0 1 1 1 1
4 1 1 0 0 1 1 0
5 1 1 0 1 1 0 1
6 1 1 1 1 1 0 1
7 0 0 0 0 1 1 1
8 1 1 1 1 1 1 1
9 1 1 0 1 1 1 1
0
5 1
6
4 2
3
Índice general.
CAPÍTULO 3 ............................................................................................................................................. 1
CODIFICACIÓN BINARIA ..................................................................................................................... 1
3.1. CODIFICACIÓN ................................................................................................................................... 1
3.2. CÓDIGOS NUMÉRICOS ........................................................................................................................ 1
3.2.1. Códigos ponderados .................................................................................................................. 1
Ejemplo 3.1. Código BCD ............................................................................................................................... 2
Ejemplo 3.2. Transmisión de símbolos BCD. .................................................................................................. 2
3.2.2. Distancia ................................................................................................................................... 3
3.2.3. Código reflejado. ....................................................................................................................... 4
3.2.4. Código cíclico ........................................................................................................................... 5
3.2.5. Paridad ...................................................................................................................................... 5
Ejemplo 3.3. Generador y detector de paridad. ................................................................................................ 5
Ejemplo 3.5. ..................................................................................................................................................... 6
Ejemplo 3.6. ..................................................................................................................................................... 7
3.3. CÓDIGOS ALFANUMÉRICOS ................................................................................................................ 8
3.4. CÓDIGOS DE DESPLIEGUE (DISPLAY CODES) ..................................................................................... 9
ÍNDICE GENERAL. ................................................................................................................................... 11
ÍNDICE DE FIGURAS................................................................................................................................. 12
Índice de figuras
Capítulo 4
N-cubos
La definición de una función consiste en establecer cuáles de los vértices del n-cubo se mapean
a valor lógico 0, y cuáles otros se mapean a valor lógico 1.
Esta representación permite visualizar los grupos de mintérminos, o subcubos, que considerados
juntos logran una expresión con menos literales
4.2. Dos-cubos.
Para dos variables x1 y x2, se tiene el espacio B2 el que puede considerarse definido por:
{0, 1}X{0, 1} = {(00), (01), (10), (11)}
X2 X1
X1 00 01
Expresiones en términos de literales tienen directa relación con los subcubos en el espacio que
se esté considerando. Las diferentes expresiones, formadas por un literal: X1, X’1, X2 y X’2 son
1-cubos y corresponden a los lados del cuadrado, de la Figura 4.1; están formadas por dos
mintérminos adyacentes.
Pero dos mintérminos no adyacentes no pueden ser representados mediante un solo literal. Por
ejemplo, para los mintérminos ubicados en los extremos de las diagonales se requieren cuatro
literales para representarlos mediante una expresión. Se tiene: X2X1’+X2’X1; y también cuatro
literales para los otros dos mintérminos que no están a distancia uno: X2X1+X2’ X1’.
4.3. 3-cubos.
X
2 010 011
x3 x2 x1
X 100
101
3
000 001
X
1
Figura 4.2. 3-cubo.
Nótese en la Figura 4.2, que x2 = 1 es la cara superior, y que x2 = 0 define la cara inferior.
Cuando se congela una de las variables de un 3-cubo, se obtiene un 2-cubo.
En la Figura 4.3, un vértice es un producto de tres literales; una arista del cubo es una expresión
formada por el producto de dos literales; una cara del cubo puede representarse por una
expresión con un literal.
B
_ C
B AB
A
C ___
ABC
A A
3-cubo
__
ABC
Recordando que: Un conjunto de k variables booleanas puede tomar 2k valores posibles; y que
n
se pueden efectuar elecciones de k elementos de un grupo total de n, puede concluirse que
k
el número total de subcubos de (n-k) dimensiones incluidos en uno de n es:
n n!
2k 2k
k k !(n k )!
Donde: 0 k n
Con k=n se tienen 2n subcubos de 0 dimensiones; son los mintérminos.
Ejemplo 4.1.
Un 3-cubo contiene:
3
i) 21 = 6 2-cubos. (k=1, n-k=2) Cuatro mintérminos en un plano. Una cara.
1
3
ii) 22 = 12 1-cubos. (k=2, n-k=1) Dos mintérminos adyacentes. Una arista.
2
3
iii) 2 3 = 8 0-cubos. (k=3, n-k=0) Los mintérminos. Un vértice.
3
La primera letra puede escogerse de 4 formas, la segunda de 3 formas. Se fija la primera letra y
luego se dan valores a la segunda. En total se tienen 4*3 = 12 permutaciones:
ab, ac, ad, ba, bc, bd, ca, cb, cd, da, db, dc.
Se forma una lista ordenada de las variables, en el caso del ejemplo: (a, b, c, d).
Ejemplo 4.4.
Mientras mayores sean las dimensiones de un sub-cubo, menos letras pueden emplearse
para representarlo según una expresión booleana formada por un producto de literales.
Con m<n, un m-cubo dentro de un n-cubo, se representa con un término formado por (n-m)
literales.
4.6.1. Irredundante.
Antes se definió que un cubo es un producto de literales. También se mostró que una expresión
booleana puede representarse por una suma de productos.
Ejemplo 4.5.
c abc’
a
f
4.6.2. Implicante.
Además ab es primo esencial ya que contiene al mintérmino abc’ que los cubos ac y bc no
contienen.
bc ab
b
ac
c a
a
f ab’c’
Si para cuatro variables se tiene que: abc, abc’ y ab son implicantes, entonces ab es implicante
primo. El cubo ab tiene el doble de mintérminos que abc y abc’. El literal c no es primo, y si lo
son los literales a y b.
Puede notarse que bc es primo esencial pues contiene el mintérmino abc, que los otros
implicantes no contienen. También ac es primo esencial.
Un subcubo es primo si no puede agruparse con otros para formar un cubo de mayores
dimensiones. Es decir si ninguno de sus literales puede omitirse.
Pueden anotarse los cubos que son implicantes empleando notación matricial. Las columnas
describen las variables, y en los renglones se representan los cubos. Cuando en el cubo aparece
el literal de la variable, se coloca valor 1 en esa variable; si aparece como literal el complemento
se coloca valor 0 en esa variable. Si la variable no está presente en el cubo, se coloca un – en la
posición de la variable; este símbolo también puede interpretarse representando ambos valores 0
y 1.
Ejemplo 4.7.
Sea f(a, b, c, d) = ac + c’d
a b c d
ac 1 - 1 -
c’d - - 0 1
a b c d
ac 1 - 1 -
abc 1 1 1 -
ab’c 1 0 1 -
Puede comprobarse que los cubos abc y ab’c pueden agruparse para formar el cubo ac. En
forma simbólica, el proceso de expansión podría anotarse:
Las operaciones en sentido inverso muestran la forma en que se fusionan los subcubos: abc y
ab’c en el cubo ac.
La matriz de cobertura es una notación bastante más compacta que la de una tabla de verdad, y
representa a una función booleana por una suma de productos o cubos.
Su mayor ventaja es que modela mediante matrices a los cubos de una función; luego mediante
operaciones matriciales pueden desarrollarse algoritmos para la minimización de funciones
booleanas.
Se desarrolla más sobre esta notación o formato pla, en el Apéndice 3, sobre uso de espresso.
El 3-cubo de la Figura 4.3, puede dibujarse sobre un plano. Puede empujarse una tapa hacia el
plano formado por la tapa opuesta, como se muestra en la Figura 4.7.
110 111
10 11
010 011
00 01
000 001
2-cubo
100 101
3-cubo
El 4-cubo puede representarse también en el espacio, sin embargo, es más sencillo de realizar en
un plano. Para dibujarlo, se escriben dos 3-cubos como el anterior. A un 3-cubo se le agrega un
1 en la primera posición; al otro un cero. Luego se unen los mintérminos a distancia uno.
0110 0111
0010 0011
0000 0001
0100 0101
1100 1101
1000 1001
1010 1011
1110 1111
Un 4-cubo contiene:
8 3-cubos. Cada 3-cubo formado por 8 mintérminos.
24 2-cubos. Cada 2-cubo formado por 4 mintérminos.
32 1-cubos. Cada 1-cubo formado por dos mintérminos adyacentes.
16 0-cubos o mintérminos.
Como puede apreciarse en la Figura 4.8, la representación gráfica de cubos con dimensiones
mayores que 3, no resultan prácticas.
Índice general.
CAPÍTULO 4 ............................................................................................................................................. 1
N-CUBOS.................................................................................................................................................... 1
4.1. REPRESENTACIÓN DE UNA FUNCIÓN BOOLEANA EN EL ESPACIO BN. .................................................. 1
4.2. DOS-CUBOS. ...................................................................................................................................... 1
4.3. 3-CUBOS. ........................................................................................................................................... 2
4.4. GENERALIZACIONES EN N-CUBOS ..................................................................................................... 3
Ejemplo 4.1. ........................................................................................................................................ 4
Ejemplo 4.2. Selecciones de dos objetos de un grupo de 4. ................................................................ 4
Ejemplo 4.3. Combinaciones. .............................................................................................................. 4
Ejemplo 4.4. ........................................................................................................................................ 5
4.5. LOS N-CUBOS Y LA MINIMIZACIÓN DE EXPRESIONES BOOLEANAS. ..................................................... 5
4.6. RELACIÓN CON LA FORMA SUMA DE PRODUCTOS. ............................................................................. 6
4.6.1. Irredundante. ............................................................................................................................. 6
Ejemplo 4.5. ........................................................................................................................................ 6
4.6.2. Implicante. ................................................................................................................................. 6
4.6.3. Primo. ........................................................................................................................................ 7
Ejemplo 4.6. ..................................................................................................................................................... 7
4.6.4. Matriz de coberturas. ................................................................................................................ 8
Ejemplo 4.7. ..................................................................................................................................................... 8
4.7. REPRESENTACIÓN DE CUBOS DE DIMENSIONES MAYORES QUE TRES. ................................................. 9
ÍNDICE GENERAL. ................................................................................................................................... 11
ÍNDICE DE FIGURAS................................................................................................................................. 12
Índice de figuras
Capítulo 5
Mapas de Karnaugh
5.1. Conceptos
Esta representación gráfica de una función booleana ha sido utilizada desde 1953. Permite entender los
principales conceptos sobre minimización de funciones, pero su uso práctico está limitado a un número
relativamente bajo de variables, no más de 5 ó 6.
Existe una relación uno a uno entre un mapa y una tabla de verdad. Una tabla tiene un renglón por cada
mintérmino; y un mapa, como se verá, tiene un casillero o cuadro asociado a cada mintérmino.
El mapa también puede ser considerado una extensión de los diagramas de Venn. Consideremos un diagrama
de Venn para dos variables A y B:
A B
A B’ AB
A’ B
A’ B’
Si el orden de las variables para la asignación del código de mintérminos es AB, se puede rotular el diagrama
con el número decimal asociado al mintérmino, queda:
A B
2 3 1
0
Figura 5.2 Códigos decimales de mintérminos en un diagrama de Venn.
Puede observarse que resultan áreas desiguales para cada mintérmino; y que el gráfico refleja las adyacencias
entre mintérminos, pero no tan claramente como un 2-cubo, el cual se muestra en la Figura 5.3:
0 A
2
1 3
B
C
Figura 5.3 Mintérminos de dos variables en un 2-cubo.
En un mapa de Karnaugh para cada mintérmino se adopta un área de igual tamaño y forma cuadrada; y
además, estos cuadrados se disponen de tal forma que reflejen las adyacencias. En la Figura 5.4, se ha
superpuesto el 2-cubo, con un mapa de dos variables.
A
B 0 1
0 0 2 A
1 1 3
B f(A,B)
C
Figura 5.4 Mintérminos de dos variables en un mapa de Karnaugh.
La identificación de los cuadros con el número del mintérmino, depende de la elección del orden de las
variables que se haya elegido para la representación decimal equivalente. Por ejemplo, para dos variables A y
B:
B 0 1 B 0 1
A A
0 1 0 2
0 0
2 3 1 3
1 1
f(A, B) f(B, A)
La representación de funciones mediante mapas, se logra marcando los mintérminos presentes con un "1"; los
ceros suelen omitirse.
Por ejemplo, las funciones AND y OR, de dos variables, se representan en mapas según:
B B
A 0 1 A 0 1
0 1 0 0 1
0 0 0 1
2 3 2 3
1 0 1 1 1 1
f1(A,B)=A B f2(A,B)=A + B
Para tres variables, en orden: A, B y C, se ilustran los mintérminos en un diagrama de Venn y en un 3-cubo:
B
A B 2 6
4 6 2
0 A
7 4
5 3
3
7
1 0 1 5
C
C
La Figura 5.8, muestra un desarrollo de un 3-cubo. Nótese que al abrir las caras del cubo, los mintérminos
que están a distancia uno, quedan adyacentes (exceptuando los de la cara 0451).
Los códigos de los mintérminos quedan ordenados según código Gray. El 3-cubo muestra también la
propiedad del código Gray de ser reflejado, la cara 0231 y la cara 4675 son 2-cubos con A=0 y A=1
respectivamente.
B B=1
A=0
2 A=1
6
4 A 2 6
0 0
C=0 4
3
7
1 3 7
5 C=1 5
1
0
C
f(A, B, C)
f(A, B, C)
Figura 5.8 Del 3-cubo al mapa de Karnaugh de tres variables.
La Figura 5.9 muestra el desarrollo de un 3-cubo sobre el mapa de Karnaugh de tres variables:
AB
C 00 01 11 10
0 2 6 4
0
1
1 3 7 5
f(A, B, C)
Figura 5.9 Mapa de Karnaugh de tres variables y un 3-cubo.
Nótese que m0 es adyacente a m1 , m2 y m4 . En un mapa de Karnaugh se considera que los bordes de los
rectángulos son coincidentes, debido a la propiedad del código Gray de ser cíclico. Los cuatro mintérminos
de los extremos pueden visualizarse como muestra la Figura 5.10:
El mapa para tres variables puede obtenerse con dos mapas de dos variables.
Resulta práctico colocar en un borde de cada cuadrado el número del mintérmino. De esta forma, resulta
cómodo expresar una forma canónica en un mapa.
A continuación se ilustran mapas, para 3, 4 y 5 variables. Los valores de columnas y renglones se ordenan
empleando código Gray, para reflejar mejor las adyacencias. El orden de las variables, para la representación
decimal equivalente del mintérmino, figura en la base de cada mapa.
AB
CD 00 01 11 10
0 4 12 8
AB 00
C 00 01 11 10
0 2 6 4 1 5 13 9
0 01
1 3 7 5 3 7 15 11
1 11
2 6 14 10
f(A, B, C) 10
B
Figura 5.12 Mapa de Karnaugh para tres variables.
Nótese que el mapa de 5 variables se obtiene a partir de dos mapas de cuatro variables. A uno se le antecede
un cero en la codificación de las columnas y al otro un 1.
ABC
000 001 011 010 110 111 101 100
DE
0 4 12 8 24 28 20 16
00 0
1 5 13 9 25 29 21 17
01
3 7 15 11 27 31 23 19
11
2 6 14 10 26 30 22 18
10
f(A, B, C, D, E)
Sin embargo esta forma de generar mapas, no refleja bien las adyacencias.
En un mapa de cinco variables cada mintérmino tiene cinco adyacentes, pero sólo pueden dibujarse cuatro
cuadrados adyacentes en un lado a un cuadrado. Por ejemplo, en la Figura 5.13, se visualiza bien que el
mintérmino 5 tiene adyacentes los mintérminos: 1, 4, 7 y 13; pero no tan claramente que también es
adyacente al 21.
Otra forma es una representación de mapas apilados en el espacio, como se muestra en la Figura 5.14. De
esta forma puede visualizarse las adyacencias en diferentes planos. En esta representación se visualiza mejor
que el mintérmino 5 es adyacente con el 21.
19 23 31 27
ABC
1 5 13 9
01 f(A, B, C, D, E)
3 7 15 11
11
2 6 14 10
10
Los siguientes mapas ilustran el concepto de agrupaciones de números pares de mintérminos, que forman
subcubos.
AB AB
CD 00 01 11 10 CD 00 01 11 10
0 4 12 8 0 4 12 8
00 0 0 1 1 00 0 0 1 0
1 5 13 9 1 5 13 9
01 0 0 1 1 01 0 0 1 0
3 7 15 11 3 7 15 11
11 0 0 1 1 11 0 0 1 0
2 6 14 10 2 6 14 10
10 0 0 1 1 10 0 0 1 0
AB AB
CD 00 01 11 10 CD 00 01 11 10
0 4 12 8 0 4 12 8
00 0 0 0 0 00 0 0 0 0
1 5 13 9 1 5 13 9
01 0 0 0 0 01 0 0 0 0
3 7 15 11 3 7 15 11
11 0 0 1 0 11 0 0 1 0
2 6 14 10 2 6 14 10
10 0 0 1 0 10 0 0 0 0
Para n = 4:
a) Un mintérmino se expresa como un producto de 4 variables.
b) Una agrupación de 2 mintérminos, que forman un 1-cubo (o que son adyacentes), puede expresarse en tres
variables.
c) Una agrupación de 4 mintérminos, que forman un 2-cubo, se expresa en dos variables.
d) Una agrupación de 23 mintérminos, que forman un 3-cubo, reduce en 3 las variables; es decir, esta
agrupación puede expresarse como una variable.
e) Una agrupación de los 2 4 mintérminos (forman un 4-cubo), puede expresarse como 1. Es decir, en 0
variables.
f) Nótese que bajo el mapa suele escribirse la función que éste representa.
g) La lectura de la expresión asociada a un grupo, se efectúa por la intersección de las zonas asociadas a las
variables.
h) El número de grupos de un literal, en caso de n variables, aplicando la fórmula desarrollada en 4.4, es:
n n!
21 2 2n
1 1!(n 1)!
A, B, C , D, A , B , C , D
n n!
22 22 2n(n 1)
2 2!(n 2)!
22
j) Los grupos de k literales, cuando se tienen n variables, quedan dados por:
Con k n :
n!
2k
k!(n k )!
Cuando k es igual a n, se logra el número de mintérminos.
k) Debido al alto número de subcubos, es importante ejercitarse en ubicarlos en el mapa.
Los menos evidentes son aquellos que se encuentran en los bordes.
Ejemplos de estos casos, para n=4: b’d’, b’c, a’b’d’, a’bd’
La obtención del mapa, a partir de una forma canónica es asunto trivial, si los casilleros han sido rotulados
con los números decimales de los mintérminos.
La obtención del mapa, a partir de una forma “suma de productos” puede obtenerse empleando los conceptos
desarrollados en manejo de mapas en el punto 5.3, para representar los cubos de cada producto.
Aplicando la inducción perfecta los mapas pueden emplearse para demostrar teoremas, y también para
verificar alguna proposición del álgebra de Boole.
La principal aplicación de los mapas es la minimización de funciones, realizada en forma manual, lo que
resulta conveniente para 5 o menos variables.
AB
C 00 01 11 10
0 2 6 4
0 1
1 3 7 5
1 1 1
f ( A, B, C ) m(1, 2,5)
Para tres variables: Un mintérmino tiene 3 literales; una agrupación de dos mintérminos adyacentes tiene una
expresión dependiente de dos variables.
Para aclarar el método, se dibujará un mapa para cada producto. Con un poco de experiencia, todos los
productos pueden dibujarse en el mismo mapa.
AB AB
C 00 01 11 10 C 00 01 11 10
0 2 6 4 0 2 6 4
0 0 1 1
1 3 7 5 1 3 7 5
1 1 1 1
AB AB
C 00 01 11 10 C 00 01 11 10
0 2 6 4 0 2 6 4
0 0 1 1
1 3 7 5 1 3 7 5
1 1 1 1 1
Dadas dos funciones, si se desea probar su equivalencia, la aplicación de los mapas simplifica largas
demostraciones algebraicas. Sólo es preciso obtener un mapa para cada una de las funciones, y luego
comparar la igualdad de sus formas canónicas.
La expresión del lado derecho tiene el mapa que figura a la izquierda en la Figura 5.20. A la derecha de la
Figura 5.20 se tiene el mapa para el OR de las variables.
A A
0 1 B 0 1
0 2 0 2
0 1 0 1
1 3 1 3
1 1 1 1 1
f1(A,B)=A'B' f2(A,B)=A+B
Negando el mapa para la función OR, se obtiene idéntico mapa al de f1. Entonces f1 y f2’ son equivalentes por
tener igual forma canónica, lo cual demuestra por inducción completa la proposición, conocida como teorema
de De Morgan.
Se han desarrollado herramientas de diseño lógico que permiten efectuar minimizaciones para funciones de
una o varias variables. Sin embargo los algoritmos y heurísticas en que están basados no son fáciles de
entender, ya que conceptualizan aspectos de las funciones booleanas que son más adecuadas a un tratamiento
algorítmico, mediante un computador.
A continuación desarrollaremos métodos gráficos, basados en mapas, y que están limitados a un número
reducido de variables (no más de 6), ya que su exposición permitirá entender los métodos automáticos, así
como también permitir diseñar, con papel y lápiz, algunos casos sencillos.
Podemos plantear el problema de minimización diciendo que se desea obtener, a partir de una expresión
booleana, una forma equivalente que contenga un número mínimo de términos, y tal que cada término tenga
el mínimo número de literales posible.
El método consiste en dibujar el mapa a partir de la función, y luego leer desde el mapa agrupando
convenientemente los mintérminos presentes.
Deben respetarse las siguientes reglas:
Deben agruparse tantos bloques como sea posible; ya que mientras mayor sea la agrupación, menor será el
número de literales.
Debe formarse el menor número de agrupaciones de bloques; ya que a menor número de grupos, se tendrá
menor número de términos.
Un bloque puede ser usado muchas veces, en distintas agrupaciones; pero a lo menos una vez.
Una técnica consiste en formar primero los grupos con menor número de adyacencias. Por esta razón, los
primeros mintérminos que deben marcarse son aquellos que no tienen adyacencias.
Ejemplo 5.4. Minimización a partir de los mintérminos
Se tiene:
AB
C 00 01 11 10
0 2 6 4
0 1 1 1
1 3 7 5
1 1 1
Si se considera primero la agrupación de los mintérminos (2, 3, 6, 7) que puede leerse como B, podría inducir,
en caso de mapas complejos, a no agrupar convenientemente al mintérmino A’B’C’, que sólo tiene una
adyacencia.
Considerando formar grupos mayores con los mintérminos que tienen menos adyacencias quedan las
siguientes agrupaciones de mintérminos: (0, 2) y (2, 3, 6, 7).
AB
C 00 01 11 10
A’C’ 0 2 6 4
0 1 1 1 0
1 3 7 5
1 0 1 1 0
B
f(A, B, C)=B+A’C’
Figura 5.22. Agrupaciones en el Mapa de Karnaugh.
Se observa que:
m14 no tiene mintérminos adyacentes. Por esta razón no puede agruparse.
m13 tiene un mintérmino adyacente. Por lo tanto, sólo puede agruparse con m9 .
m0 , m3 , m8 y m11 tienen dos mintérminos a distancia uno.
m1 tiene 3 mintérminos adyacentes.
m9 tiene 4 mintérminos a distancia uno.
Los grupos que forman sub-cubos suelen marcarse en al mapa, encerrando los mintérminos del grupo con una
línea cerrada.
Sólo falta considerar m3 y m11 , que a su vez forman un grupo. Sin embargo, conviene efectuar la
agrupación: ( m1 , m3 , m9 , m11 ), que emplea m1 y m9 , ya considerados, con el objeto de hacer el grupo lo mayor
posible.
f(A,B,C,D)=ABCD’+AC'D+B’D+B’C’
Ejemplo 5.6.
Minimizar: f(A, B, C, D) = m(0, 1, 2, 7, 8, 9, 10, 15)
AB
CD 00 01 11 10
0 4 12 8
00 1 0 0 1
1 5 13 9
01 1 0 0 1
3 7 15 11
11 0 1 1 0
2 6 14 10
10 1 0 0 1
f(A, B, C, D)=BCD+B’D’+B’C’
1 5 13 9 17 21 29 25
01 0 0 1 0 0 0 1 0
3 7 15 11 19 23 31 27
11 0 1 0 0 0 1 0 0
2 6 14 10 18 22 30 26
10 1 0 0 1 1 0 0 1
f(A, B, C, D, E)=B’CDE+A’B’D’E’+BCD’+C’DE’
El método consiste en desarrollar el mapa para f, a partir de la forma canónica. Luego se obtiene el mapa para
f negado, de esta forma, se puede leer el producto de maxtérminos de f, como la suma de mintérminos de f’.
Así se obtiene la forma mínima como suma de productos. Después se obtiene por involución, la función f; y
finalmente se aplica De Morgan.
Para una función dada, siempre deberán obtenerse los dos diseños; es decir la forma suma de productos y
producto de sumas, ya que no es posible obtener una relación que indique cual de las dos formas será
mínima.
Ejemplo 5.8
Para el mapa de la Figura 5.27, se pueden obtener las formas canónicas:
La suma de mintérminos, resulta:
f’ = m(2, 5, 6, 7) = m2 + m5 + m6 + m7
f ’ = A’BD + A’CD’
Ejemplo 5.9.
Minimizar, según producto de sumas: f(A,B,C,D) = (4,5,7,8,10,11,12,13,15)
AB
CD 00 01 11 10
0 4 12 8
00 0 1 1 1
1 5 13 9
01 0 1 1 0
3 7 15 11
11 0 1 1 1
2 6 14 10
10 0 0 0 1
AB
CD 00 01 11 10
0 4 12 8
00 1
1 5 13 9
01 1 1
3 7 15 11
11 1
2 6 14 10
10 1 1 1
f '(A, B, C, D)
Figura 5.29. Mapa con los mintérminos de f’
Formando los siguientes grupos, en el mapa: (0, 1, 3, 2); (6, 14); (1, 9).
Con un poco de práctica, pueden agruparse los ceros en el primer mapa, y leer directamente las sumas,
complementando las variables.
Algunas funciones booleanas son completamente especificadas para todas las combinaciones posibles de sus
variables.
Se denominan funciones incompletamente especificadas cuando se establece que el valor de la función es "1"
para ciertas combinaciones, "0" para otras y un valor cualquiera para el resto.
Los mintérminos pueden agruparse en tres conjuntos: conjunto que activa la función (on set), conjunto que
desactiva la función (off set) y conjunto de mintérminos superfluos (dc set).
Los mintérminos que pueden ser especificados con valor "1" ó "0"; es decir: con cualquier valor, se
denominan “condiciones superfluas”, o que “no importan” (don’t care).
Ejemplo de esta situación, es cuando existe dependencia entre las variables de entrada; ésta puede originar
que nunca se produzcan ciertas combinaciones de valores de las variables de entrada.
Debe tenerse presente que no deben formarse agrupaciones que sólo contengan términos superfluos.
En un mapa:
AB
C 00 01 11 10
0 2 6 4
0 1 d
1 3 7 5
1 d d 1
f(A, B, C)
Sin emplear las condiciones superfluas, se tiene: f = A’B’C’ + AB’C, con 6 literales.
Puede agruparse (0,1) y (5,7). En este caso: f = A’B’ + AC, con 4 literales.
Sin embargo, la agrupación más conveniente es (0, 1, 4, 5), y así se obtiene, con un literal:
f = B’
Nótese que: f(A,B,C) = (2,3,6) D(1,4,7) es decir, los maxtérminos superfluos tienen iguales
números que los mintérminos superfluos.
También se tienen:
f’(A, B, C) = m(2, 3, 6) + d(1, 4, 7)
f’(A, B, C) = M(0, 5) D(1, 4, 7)
Si en el ejemplo anterior, se minimiza la función f, como suma de productos, se logra: f’=B. Obteniendo un
resultado igual al anterior.
AB
C 00 01 11 10
0 2 6 4
0 1 1 d
1 3 7 5
1 d 1 d
f '(A, B, C)
Figura 5.31. Mapa con condiciones superfluas de f’
f = (f ')'
Ejemplo 5.12.
Diseñar traductor de código BCD a exceso-3. El código exceso-3, representa los dígitos decimales mediante
su equivalente binario más tres. Tiene propiedades aritméticas que lo hacen útil en manipulaciones.
Nótese que se tiene un sistema con cuatro entradas y cuatro salidas: Se ha asumido que la cifra BCD se
dispone en paralelo, y se desea lograr la equivalente exceso-3, también en paralelo.
Se tiene:
BCD exceso-3
0 0000 0011
1 0001 0100
2 0010 0101
3 0011 0110
4 0100 0111
5 0101 1000
6 0110 1001
7 0111 1010
8 1000 1011
9 1001 1100
wxyz f 4 f3 f 2 f1
Si se conoce que en la entrada se tendrá una cifra BCD, entonces algunas combinaciones de las variables w,
x, y, z deben tratarse como condiciones superfluas. Es el caso de los mintérminos con equivalentes binarios
1010 hasta 1111. En un mapa, esto puede anotarse:
wx
yz 00 01 11 10
0 4 12 8
00 d
1 5 13 9
01 d
3 7 15 11
11 d d
2 6 14 10
10 d d
f(w, x, y, z)
Figura 5.33. Mapa de las condiciones superfluas del ejemplo 5.13.
f1 = m(0,2,4,6,8) + d(10,11,12,13,14,15)
f2 = m(0,3,4,7,8) + d(10,11,12,13,14,15)
f3 = m(1,2,3,4,9) + d(10,11,12,13,14,15)
f4 = m(5,6,7,8,9) + d(10,11,12,13,14,15)
Minimizando, para cada una de las funciones por separado, se logra para el sistema de múltiples salidas, con
17 entradas:
f1 = z’
f2= y’ z’ + yz
f3= x’y + x’z + xy’z’
f4 = x’w +yw’z’
Puede apreciarse que en un sistema de salidas múltiples existe la posibilidad de ahorrar material: usando
parte o la totalidad de los productos de una función como partes de otra. Ejemplo de esto es el factor y’z' de
f2, que puede usarse en f3.
Si se presenta una cifra BCD inválida en la entrada, la salida también será errónea. Para usar confiablemente
el circuito combinacional, diseñado empleando condiciones superfluas, debe asegurarse que la entrada sea
una cifra BCD válida.
Un diagrama general de las entradas y salidas del módulo combinacional que se diseñará es el siguiente:
N1 A LT AB<CD
B
EQ AB=CD
C
N2
D GT AB>CD
A continuación se especifica el diseño mediante una tabla de verdad. Ésta tiene 16 renglones.
A B C D LT EQ GT
0 0 0 0 0 1 0
0 0 0 1 1 0 0
0 0 1 0 1 0 0
0 0 1 1 1 0 0
0 1 0 0 0 0 1
0 1 0 1 0 1 0
0 1 1 0 1 0 0
0 1 1 1 1 0 0
1 0 0 0 0 0 1
1 0 0 1 0 0 1
1 0 1 0 0 1 0
1 0 1 1 1 0 0
1 1 0 0 0 0 1
1 1 0 1 0 0 1
1 1 1 0 0 0 1
1 1 1 1 0 1 0
Problema 5.2. Multiplicador de dos números binarios de dos cifras cada uno.
A
N1 P3
B P2
C P1
N2 P0
D
A continuación se especifica el diseño mediante una tabla de verdad. Ésta tiene 16 renglones.
A B C D P3 P2 P1 P0
0 0 0 0 0 0 0 0
0 0 0 1 0 0 0 0
0 0 1 0 0 0 0 0
0 0 1 1 0 0 0 0
0 1 0 0 0 0 0 0
0 1 0 1 0 0 0 1
0 1 1 0 0 0 1 0
0 1 1 1 0 0 1 1
1 0 0 0 0 0 0 0
1 0 0 1 0 0 1 0
1 0 1 0 0 1 0 0
1 0 1 1 0 1 1 0
1 1 0 0 0 0 0 0
1 1 0 1 0 0 1 1
1 1 1 0 0 1 1 0
1 1 1 1 1 0 0 1
E3 S3
E2 S2
E1 S1
E0 S0
E3 E2 E1 E0 S3 S2 S1 S0
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 d d d d
1 0 1 1 d d d d
1 1 0 0 d d d d
1 1 0 1 d d d d
1 1 1 0 d d d d
1 1 1 1 d d d d
Se denomina semi-sumador a un dispositivo que permite sumar, en binario, dos variables de entrada de un bit
(Ai y Bi). El sistema debe generar dos salidas: la suma (Si) y la reserva de salida (Ci carry).
La tabla de verdad resulta:
Ai Bi Ci Si
0 0 0 0
0 1 0 1
1 0 0 1
1 1 1 0
Ci
Figura P5.8. Implementación semisumador.
Si se desea sumar variables de varios bits se requiere un sumador completo, que tenga una tercera entrada
denominada reserva de entrada (carry-in):
Ai Bi Ci
Ci+1 Si
Figura P5.9. Diagrama funcional sumador completo de un bit.
Ai Bi Ci Ci+1 Si
0 0 0 0 0
0 0 1 0 1
0 1 0 0 1
0 1 1 1 0
1 0 0 0 1
1 0 1 1 0
1 1 0 1 0
1 1 1 1 1
El esquema de la Figura P5.11, muestra una suma de cuatro bits en base a la conexión de cuatro sumadores
completos:
A3 B3 C3 A2 B2 C2 A1 B1 C1 A0 B0 C0
C4 S3 C3 S2 C2 S1 C1 S0
Figura P5.11. Diagrama funcional sumador completo de cuatro bits.
Ai Ai
Bi Ci
Ci
Si Ci+1
Ci Bi
Ai
Bi
Ai Ai Bi Ai Bi Ci
Bi Si
Ai Bi (Ai Bi )Ci
Ci+1
Ci
En sistemas digitales, determinadas acciones sobre los datos colocan la integridad de éstos en peligro.
Ejemplo de procesos que pueden generar errores son: El almacenar bits en memorias dinámicas o en medios
magnéticos (superficies de discos flexibles o rígidos, que pueden dañarse físicamente o contaminarse por
interferencia en la escritura o lectura); la transmisión de bits mediante conductores de cobre, fibra o en forma
inalámbrica a través de grandes distancias.
La detección de errores emplea los bits adicionales cuando se accesa o recibe información para determinar si
existe corrupción de los datos. En la corrección de errores, la información adicional debe permitir detectar y
corregir los errores, dentro de ciertos límites.
La detección requiere menos bits redundantes, pero si se detecta un error, el receptor solicita que se vuelvan a
enviar los datos, lo cual agrega tiempo de latencia y complejidad.
En la corrección se tiene menor latencia, ya que el proceso de corrección es una parte de la lógica que recibe
los datos; y sólo si los errores sobrepasan los límites de la corrección, debe solicitarse el reenvío.
Existen procedimientos para detectar y corregir errores simples (paridad, Hamming) y múltiples (códigos de
redundancia cíclica).
Detección de un error simple.
Se envían n bits: b0, b1, b2, ..., bn-1. Se desea encontrar el modo de detectar un error de un bit.
Una solución es enviar (n+1) bits, el bit n-avo es uno si existe un número impar de unos en los n bits de
datos. Por esto al bit redundante se lo denomina de paridad (par en este caso), ya que la información más el
bit adicional contienen una cantidad par de unos.
Para dos variables booleanas, el or exclusivo de ellas es cero si el número de unos es par; y uno si es impar.
Para las n variables, la forma de computar (generar) el bit de paridad es mediante la siguiente ecuación
lógica:
bn = b0 b1 b2 ...bn-1
Si los datos se disponen en paralelo (todos al mismo tiempo) puede determinarse la paridad mediante un árbol
combinacional mediante xors. Si los datos se tienen en serie, basta una compuerta xor y un registro(o
memoria) de un bit.
En este caso resulta k = 3, y m = 7. Deben enviarse tres bits adicionales para detectar y corregir un error
simple. Si n es elevado se tendrá que k es aproximadamente igual a log2(n).
Cuatro bits de paridad permiten un máximo de m = 16, con 12 de datos.
Cinco bits de paridad permiten un máximo de m = 32, con 27 de datos.
chequeo = w0 + 2* w1 + 4* w2 + ....
Si el valor de chequeo no es cero, un bit debe ser erróneo. Cada wi = 0 remueve la duda sobre algunos bits.
Cualquier bit puede tener un error (solo un bit), incluso uno de los de paridad puede haberse contaminado en
la transmisión o lectura. Si un bit está errado existe sólo una forma de corregirlo.
Si chequeo es cero, no hay error simple. En caso contrario se complementa el bit cchequeo
c2
c3 w
c1 c6
c3 w c7 1
c
c5 7 0
c4
c5 w
c6
c7 2
La siguiente tabla muestra los valores binarios de los wi posibles, y asumiendo que sólo un bit del
subconjunto puede estar errado si wi es uno; y que si wi es cero, los elementos del subconjunto asociado están
correctos.
Estudiemos el segundo renglón: Con w2 igual a cero, no pueden estar errados: p2, b1, b2, b3; y si además w1
es cero: p1, b0, b2, b3 llegan correctamente; y si w0 es 1 podría existir un error en p0, b0, b1, b3. Pero de las
listas anteriores: b0, b1, b2 y b3 llegaron correctamente; por lo tanto se determina que en este caso p0 llegó
errado.
En la siguiente red, si w0 y w1 son unos y w2 es cero, se tendrá que f0 es b0'; en caso contrario es b0.
w0 w0 w'0
w1
w'2 f0 w'1 f1 w1
f2
w2 w2
c3 c5 c6
w0
w1
w2 f3
c7
b) Se calculan los wi, a partir de los ci , asumiendo que c3 llega errado, según:
w0 = (c1 c3 c5 c7) = (p0 b0 b1 b3) = (0 1 1 1) = 1
w1 = (c2 c3 c6 c7) = (p1 b0 b2 b3) = (1 1 0 1) = 1
w2 = (c 4 c 5 c6
El valor de chequeo resulta: c7) = (p2 b1 b2 b3) = (0 1 0 1) = 0
chequeo = w0 + 2* w1 + 4* w2 = 1 + 2*1 +4 *0 = 3, lo cual implica que debe complementarse c3.
c) Se calculan los wi, a partir de los ci , asumiendo que c5 llega errado, según:
w0 = (c1 c3 c5 c7) = (p0 b0 b1 b3) = (0 0 0 1) = 1
w1 = (c2 c3 c6 c7) = (p1 b0 b2 b3) = (1 0 0 1) = 0
w2 = (c4 c5 c6 c7) = (p2 b1 b2 b3) = (0 0 0 1) = 1
El valor de chequeo resulta:
chequeo = w0 + 2* w1 + 4* w2 = 1 + 2*0 +4 *1 = 5, lo cual implica que debe complementarse c5.
d) Se calculan los wi, a partir de los ci , asumiendo que c1 llega errado, según:
w0 = (c1 c3 c5 c7) = (p0 b0 b1 b3) = (1 0 1 1) = 1
w1 = (c2 c3 c6 c7) = (p1 b0 b2 b3) = (1 0 0 1) = 0
w2 = (c4 c5 c6 c7) = (p2 b1 b2 b3) = (0 1 0 1) = 0
El valor de chequeo resulta:
chequeo = w0 + 2* w1 + 4* w2 = 1 + 2*0 +4 *0 = 1, lo cual implica que debe complementarse c1.
Problema 5.7.
Se tiene un número binario de cuatro bits: A3A2A1A0, donde A3 es la cifra más significativa, sea n el
equivalente decimal de este número.
Diseñar un sistema que acepte a n como entrada y que produzca en la salida el equivalente binario del número
decimal: ( n*4 +1).
Solución.
El mayor n que puede escribirse con cuatro bits es 15, por lo tanto la salida mayor será 61, lo cual requiere 6
cifras binarias para representarla. Sean éstas: S5S4S3S2S1S0.
Problema 5.8.
Se tiene un circuito digital de 4 entradas (A, B, C, D) y cuatro salidas (f1, f2, f3, f4).
a) Determinar como suma de mintérminos, la función f1 que es verdadera cuando exactamente dos de las
entradas sean verdaderas.
b) Determinar como producto de maxtérminos, la función f2 que es verdadera cuando exactamente tres de las
entradas sean verdaderas.
c) Determinar mediante un circuito lógico en base a AND, OR y NOT, la función f3, que es verdadera cuando
exactamente cuatro de las entradas sean verdaderas.
d) Determinar mediante una expresión booleana, la función f4, que es verdadera cuando exactamente cuatro
de las entradas sean falsas.
Solución.
Se tienen las siguientes tablas de verdad.
A B C D f1 f2 f3 f4 Código
0 0 0 0 0 0 0 1 0
0 0 0 1 0 0 0 0 1
0 0 1 0 0 0 0 0 2
0 0 1 1 1 0 0 0 3
0 1 0 0 0 0 0 0 4
0 1 0 1 1 0 0 0 5
0 1 1 0 1 0 0 0 6
0 1 1 1 0 1 0 0 7
1 0 0 0 0 0 0 0 8
1 0 0 1 1 0 0 0 9
1 0 1 0 1 0 0 0 10
1 0 1 1 0 1 0 0 11
1 1 0 0 1 0 0 0 12
1 1 0 1 0 1 0 0 13
1 1 1 0 0 1 0 0 14
1 1 1 1 0 0 1 0 15
Entonces:
a) f1 = m(3, 5, 6, 9, 10, 12)
b) f2 = M(0, 1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15)
c) f3 = m(15) = ABCD
A
B f3
C
D
d) f4 = m(0) = A'B'C'D'
Problema 5.9.
Solución.
a) Para la forma suma de productos se tiene el siguiente mapa de Karnaugh:
ab
cd 00 01 11 10
0 4 12 8
00 d
1 5 13 9
01 d d 1 d
3 7 15 11
11 d 1
2 6 14 10
10 d 1 d
Implicantes 7 13 14
primos
a’b x
c’d
a’d x
acd’ x
bcd’ x
Se tienen 4 diseños alternativos con mínimo costo. Con 10 entradas cada uno.
f(a, b, c, d) = c’d + a’b + acd’
f(a, b, c, d) = c’d + a’b + bcd’
f(a, b, c, d) = c’d + a’d + acd’
f(a, b, c, d) = c’d + a’d + bcd’
ab
cd 00 01 11 10
0 4 12 8
00 1 d 1 1
1 5 13 9
01 d d d
3 7 15 11
11 d 1 1
2 6 14 10
10 1 d d
f ’(a, b, c, d)
La siguiente tabla de implicantes, muestra que c’d’ y acd son implicantes primos esenciales.
Implicantes 0 2 8 11 12 15
primos
b’ x x x x
c’d’ x x
a’c’ x
a’d’ x x
acd x
Problema 5.10.
Se conoce: que el mintérmino a’bcd’ es superfluo, que el maxtérmino (a’ + b + c + d’) es superfluo, y que el
implicante a’b’c’ es superfluo.
a) Determinar el mapa de Karnaugh para f, indicando los unos, ceros y condiciones superfluas.
b) Obtener el diseño mínimo como producto de sumas, indicando en un mapa los implicantes seleccionados.
Solución:
a1) Se ubican los mintérminos superfluos, y se los dibuja en el mapa:
Que el maxtérmino (a’ +b +c +d’) = M9 sea superfluo, indica que m9’ es superfluo.
Esto permite determinar los unos de la función como m(2, 4, 8, 13, 15); y también los ceros de la función
como M(3, 5, 7, 10, 11, 12, 14)
ab
cd 00 01 11 10
0 4 12 8
00 d 1 0 1
1 5 13 9
01 d 0 1 d
3 7 15 11
11 0 0 1 0
2 6 14 10
10 1 d 0 0
El mapa ilustra el diseño de la función mínima, con condiciones superfluas, expresada como suma de
productos:
f(a, b, c, d) = m(2, 4, 8, 13, 15) + d(0, 1, 6, 9) = abd + b’c’ + a’d’
El grupo M(1, 3, 5, 7) debe incluirse ya que es el mayor y único grupo que cubre a 5 y 7.
El grupo M(12, 14) es el mayor y único grupo que cubre a 12, y debe estar presente.
Sólo resta cubrir a M(10, 11), lo cual puede hacerse incluyendo a dicho grupo. La incorporación del grupo
mayor M(1, 3, 9, 11) que cubre al 11, requiere otro grupo para cubrir al 10, ya sea M(10, 14) o M(10, 11).
Para un diseño libre de perturbaciones debería incluirse a los grupos M(10, 14) y M(3, 11)
En la tabla de implicantes se muestran sólo los mintérminos; no se requiere cubrir los superfluos. De la tabla
se advierte que a’d es implicante primo esencial, ya que agrupa al 5 y 7 que sólo él contiene. También abd’ es
implicante primo esencial ya que es el único grupo que contiene al mintérmino 12.
3 5 7 10 11 12 14
a’d x x x
abd’ x x
ab’c x x
acd’ x x
b’d x x
bcd’ x
Figura P5.28. Tabla implicante. Mapa de la Figura P5.27
Para cubrir m10 y m11, la mejor opción es ab’c, lo cual puede deducirse de la tabla reducida.
10 11
ab’c x x
acd’ x
b’d x
Problema 5.11.
Solución:
a) Considerando las condiciones superfluas y los mintérminos, en un mapa rotulado según notación de
conjuntos, resulta:
a
d 1 0 1
0 1 1 1
d
0 d d 0
c
0 1 0 1
b
Figura P5.30. Mapa con condiciones superfluas.
d 1 1
1 1 1
d
d d
c
1 1
b
Figura P5.31. Implicantes de la Figura P5.30.
Resulta: f = a b’ d’ + a d c’ + a’ b
a
c) El mapa para f’ resulta:
d 1
1
d
1 d d 1
c
1 1
b
Figura P5.32. Mapa del complemento de f.
Aplicando De Morgan.
f = ( a’ + b’ + d)(d’ + c’)(a + b)
Problema 5.12.
a) Si se puede escoger un mintérmino cualquiera como superfluo, cuál o cuáles son las funciones mínimas
(todas las que encuentre); indicando, en cada caso, el mintérmino superfluo elegido.
b) Si se pueden escoger dos mintérminos cualesquiera como superfluos, cuál o cuáles son las funciones
mínimas (todas las que encuentre); indicando, en cada caso, los mintérminos superfluos elegidos.
c) Si se pueden escoger tres mintérminos cualesquiera como superfluos, cuál o cuáles son las funciones
mínimas (todas las que encuentre); indicando, en cada caso, los mintérminos superfluos elegidos.
Solución:
a) La Figura P5.33 muestra la elección conveniente de un mintérmino superfluo.
AB
CD 00 01 11 10
0 4 12 8
00
1 5 13 9
01 1 d 1 Se elige m13. Resulta:
f = AC’D + BC’D + ABD
3 7 15 11
11 1
2 6 14 10
10
f(A, B, C, D)
b1)
AB
CD 00 01 11 10
0 4 12 8
00 Se elige m13 y m11.
f = AD + BC’D
1 5 13 9
01 1 d 1
3 7 15 11
11 1 d
2 6 14 10
10
f(A, B, C, D)
1 5 13 9
01 1 d 1
3 7 15 11
11 d 1
2 6 14 10
10
f(A, B, C, D)
b3)
AB
CD 00 01 11 10
0 4 12 8 Se elige m13 y m1.
00 f = ABD + C’D
1 5 13 9
01 d 1 d 1
3 7 15 11
11 1
2 6 14 10
10
f(A, B, C, D)
1 5 13 9
01 1 d 1
3 7 15 11
11 d 1 d
2 6 14 10
10
c2)
AB
CD 00 01 11 10
0 4 12 8 Se elige m13, m11 y m1.
00 f = C’D + AD
1 5 13 9
01 d 1 d 1
3 7 15 11
11 1 d
2 6 14 10
10
1 5 13 9
01 d 1 d 1
3 7 15 11
11 d 1
2 6 14 10
10
Problema 5.13.
Solución.
En un 5-cubo un 3-cubo puede expresarse con dos literales. Las combinaciones de dos letras de un conjunto
de 5 son: AB, AC, AD, AE, BC, BD, BE, CD, CE, DE. Para cada combinación pueden tenerse 4 expresiones;
por ejemplo para AB se tienen: A'B', A'B, AB', AB. En total se tienen cuarenta 3-cubos inscritos en un 5-cubo.
Entonces los 3-cubos pedidos son: AB, AB', AC, AC', AD, AD', AE, AE'.
Problema 5.14.
C'D'E + B'C
Solución:
Los míntérminos asociados a B'C se encuentran en las columnas 001 y 101,
Resulta B'C = m(4, 5, 6, 7, 20, 21, 22, 23) son 8.
Los mintérminos asociados a C'D'E son m(1, 9, 17, 25) son 4, con C=0, D=0 y E=1.
ABC
000 001 011 010 100 101 111 110
DE
0 4 12 8 16 20 28 24
00 1 0 1
1 5 13 9 17 21 29 25
01 1 1 1 1 1 1
3 7 15 11 19 23 31 27
11 1 1
2 6 14 10 18 22 30 26
10 1 1
Problema 5.15.
Solución:
f1=ABABC+ABD'+CABC+CD'+A'B'D' ; P6
=ABC+ABD'+CD' +A'B'D' ; P4, T8
= m(14,15) +m(12,14)+m(2,6,10,14)+m(0,2) ; T14
= m(0, 2, 6, 10, 12, 14, 15); T8
AB
CD 00 01 11 10
0 4 12 8
00 1 1
1 5 13 9
01
3 7 15 11
11 1
2 6 14 10
10 1 1 1 1
f1(A, B, C, D)
Figura P5.41. Mapa de f1.
f2 = A'B'+A'D'+B'B'+B'D'+B'D+DD'; P6, P4
= A'B'+A'D'+B'+B'(D'+D)+0 ;T8, P6, P7
= A'B' +A'D'+B' ; P3,P7, T8
= m(0, 1, 2, 3) + m(0, 2, 4, 6) + m(0, 1, 2 , 3, 8, 9, 10, 11) ; T14
= m(0, 1, 2, 3, 4, 6, 8, 9, 10, 11) ;T8
AB
CD 00 01 11 10
0 4 12 8
00 1 1 1
1 5 13 9
01 1 1
3 7 15 11
11 1 1
2 6 14 10
10 1 1 1
f2(A, B, C, D)
Referencias.
Karnaugh M. “The map method for synthesis of combinatorial logic circuits”, Trans. AIEE Comm.
Electron.,Vol. 72, No. 4, pp. 593–598. 1953.
Índice general.
CAPÍTULO 5 ..................................................................................................................................................................... 1
MAPAS DE KARNAUGH ................................................................................................................................................ 1
5.1. CONCEPTOS ............................................................................................................................................................... 1
5.2. FORMAS DE MAPAS ................................................................................................................................................... 4
5.3. MANEJO DE MAPAS ................................................................................................................................................... 7
5.4. USO DE MAPAS........................................................................................................................................................... 9
Ejemplo 5.1. Mapa a partir de los mintérminos. ........................................................................................................ 9
Ejemplo 5.2. Mapa a partir de expresión. ................................................................................................................ 10
Ejemplo 5.3. Uso de mapas en la demostración de teoremas. .................................................................................. 11
5.5. MINIMIZACIÓN USANDO MAPAS DE KARNAUGH. ..................................................................................................... 12
5.5.1. Minimización como suma de productos. ......................................................................................................... 12
Ejemplo 5.4. Minimización a partir de los mintérminos .......................................................................................................... 12
Ejemplo 5.5. Formación de grupos de mintérminos en minimización basada en mapas.......................................................... 13
Ejemplo 5.6. ............................................................................................................................................................................. 14
Ejemplo 5.7. ............................................................................................................................................................................. 15
5.5.2. Minimización en forma de producto de sumas. ............................................................................................... 15
Ejemplo 5.8.............................................................................................................................................................................. 15
Ejemplo 5.9. ............................................................................................................................................................................. 16
5.5.3. Condiciones superfluas (don't care) ................................................................................................................ 17
Ejemplo 5.10. ........................................................................................................................................................................... 18
Ejemplo 5.11. ........................................................................................................................................................................... 19
Ejemplo 5.12. ........................................................................................................................................................................... 19
PROBLEMAS RESUELTOS. ................................................................................................................................................ 21
Problema 5.1. Comparador binario. ......................................................................................................................... 21
Problema 5.2. Multiplicador de dos números binarios de dos cifras cada uno. ....................................................... 22
Problema 5.3. Incrementador en uno de cifra BCD. ................................................................................................. 22
Problema 5.4. Semisumador binario. ........................................................................................................................ 23
Problema 5.5. Sumador completo. ............................................................................................................................ 24
Problema 5.6. Detección y corrección de errores en bits. Hamming........................................................................ 25
Detección de un error simple. .................................................................................................................................................. 26
Corrección de un error simple.................................................................................................................................................. 26
Ejemplo código Hamming de 7 bits. ........................................................................................................................................ 29
Problema 5.7. ............................................................................................................................................................ 29
Problema 5.8. ............................................................................................................................................................ 30
Problema 5.9. ............................................................................................................................................................ 31
Problema 5.10. .......................................................................................................................................................... 33
Problema 5.11. .......................................................................................................................................................... 36
Problema 5.12. .......................................................................................................................................................... 37
Problema 5.13. .......................................................................................................................................................... 41
Problema 5.14. .......................................................................................................................................................... 41
Problema 5.15. .......................................................................................................................................................... 42
REFERENCIAS. ................................................................................................................................................................ 43
ÍNDICE GENERAL. ........................................................................................................................................................... 44
ÍNDICE DE FIGURAS. ....................................................................................................................................................... 45
Índice de Figuras.
Capítulo 6
Algoritmos de minimización
La tabla de implicantes tiene como columnas los mintérminos y como renglones los cubos que
son implicantes primos. Para n variables, se tienen 2 n mintérminos o columnas; y se dispone de
3n
un resultado que establece que se pueden tener del orden de implicantes primos. Con lo cual
n
los algoritmos para reducir la tabla, en forma exacta, tienen un costo exponencial.
Por esta razón se han desarrollado heurísticas de minimización que están basadas en
propiedades de las funciones booleanas y que producen resultados bastante satisfactorios, desde
un punto de vista de ingeniería. Un excelente ejemplo de estos programas es espresso, que se
trata en el Apéndice 3.
6.1. Implicación
f X
Un implicante primo es un implicante que no puede ser agrupado con otros implicantes, para
formar un sub-cubo de mayor dimensión.
Encontrar los implicantes primos es determinar los grupos de mintérminos que pueden
escribirse con menos literales.
Es aquél que cubre a lo menos un mintérmino de la función que no es cubierto por otros
implicantes primos. Deben estar presentes en la forma mínima.
Los mintérminos superfluos pueden emplearse para formar implicantes primos; pero no deben
considerarse para los implicantes primos esenciales.
Para una función de 4 variables, cuyo mapa es de la figura 6.2, se tienen los siguientes
implicantes primos:
A'B'D, BC', AC, A'C'D, AB, B'CD
De los 6 implicantes primos, sólo AC es esencial, ya que contiene al mintérmino: AB'CD' que
no es cubierto por ningún otro implicante primo.
A
0 d 1 0
1 1 1 0
D
1 0 1 1
C
0 0 1 1
B
Figura 6.2 Implicantes primos
Ejemplo 6.2.
0 0 1 0
1 1 1 0
D
0 1 1 1
C
0 1 0 0
B
Figura 6.3 Implicantes primos ejemplo 6.2
Sólo BD es no esencial, ya que los demás contienen un mintérmino no cubierto por los otros
implicantes primos.
La función mínima debe contener los esenciales, y con éstos se logra cubrir completamente a la
función:
f = ABC' + ACD + A'BC + A'C'D
Es un método sistemático para encontrar la expresión mínima de una función, que no depende
de la habilidad para reconocer agrupaciones en un mapa de Karnaugh.
Básicamente, es una búsqueda exhaustiva de todas las adyacencias entre los mintérminos de la
función, mediante la aplicación sistemática del teorema de fusión ( a ab ab ) a todos los
términos de la forma canónica.
Los términos que originan nuevas entradas, en la próxima columna, sólo necesitan marcarse una
vez. Pero pueden usarse las veces que sea necesario.
Nótese que la segunda columna lista todos los grupos de dos mintérminos. La tercera, lista
grupos de cuatro mintérminos adyacentes, y así sucesivamente. Al finalizar el proceso anterior,
los elementos no marcados en las columnas, corresponden a los implicantes primos.
Ejemplo 6.3.
Obtener los implicantes primos de: f (a, b, c) m(0, 2,5, 6, 7)
No se pueden formar nuevas columnas, por lo tanto los implicantes primos son:
Nótese que en la segunda columna, se han identificado los renglones con los grupos de
mintérminos.
La tabla de implicantes se forma empleando los implicantes primos en los renglones y los
mintérminos de la función en las columnas. Luego, en cada renglón, se marca con valor 1 las
columnas de los mintérminos pertenecientes al implicante considerado.
Aquellas columnas que tengan sólo una marca, permiten detectar a los implicantes primos
esenciales. En esta tabla debe escogerse el menor número de implicantes primos que cubran
todos los mintérminos de la función. Evidentemente, deben estar presentes todos los implicantes
primitivos esenciales en la expresión mínima de una función.
Ejemplo 6.4.
La tabla de implicantes, para el ejemplo anterior:
0 2 5 6 7
a'c' 1 1
bc' 1 1
ac 1 1
ab 1 1
La columna 0, por tener sólo un renglón marcado, permite identificar a: a'c' como implicante
primo esencial.
Se acostumbra encerrar con un círculo las marcas en las columnas que definen los implicantes
primos esenciales.
Nótese que sólo resta cubrir el mintérmino 6, lo que puede lograrse eligiendo: bc' o ab.
o, alternativamente: f = a'c' + ac + ab
En caso de tener tablas complejas, éstas pueden reducirse mediante el siguiente método.
Cada vez que se selecciona un implicante para formar la función, se remueve el renglón
correspondiente.
Cuando se remueve un renglón, también se eliminan las columnas que tienen marcas en dicho
renglón.
Se comienza eliminando los implicantes primos esenciales. Luego la tabla puede seguir
reduciéndose, aplicando las siguientes reglas:
Un renglón cubre a otro, si tiene marcas en las columnas marcadas del otro, pudiendo además
tener columnas adicionales marcadas. Podría decirse que el renglón eliminado es menos
importante, debido a su menor cobertura de la función.
Una columna cubre a otra, si contiene marcas en cada renglón que esa otra columna tiene
marcas, pudiendo además tener renglones adicionales marcados.
Ejemplo 6.5.
En la Figura 6.6, el implicante primo ipa cubre al implicante primo ipb. Puede eliminarse
renglón ipb; ya que si luego se eligiese ipa, m1 y m3 quedarían considerados en la función.
m1 m2 m3
ipa 1 1 1
ipb 1 1
1 5 13 9
01 1 1
3 7 15 11
11 1 1
2 6 14 10
10
f(A, B, C, D)=m(0,4,5,11,13,15)
Figura 6.7 Mapa con implicantes.
0 4 5 11 13 15
A‟C‟D‟ 1 1
A‟BC‟ 1 1
BC‟D 1 1
ABD 1 1
ACD 1 1
Se tiene que A’C’D’ y ACD son implicantes primos esenciales. Reduciendo la tabla de la Figura
6.8, se obtiene:
5 13
A‟BC‟ 1
BC‟D 1 1
ABD 1
Si se elimina columna m2, para cubrir al mintérmino m1 debe seleccionarse uno de los cubos:
ipb o ipc; y como cualquiera de éstos contiene a m2, se considera automáticamente a m2 en la
cobertura.
1 5 13 9
01 1 1 d d
3 7 15 11
11 1 1
2 6 14 10
10 1 d
1 2 3 5 7
A‟B‟ 1 1 1
C‟D 1 1
A‟D 1 1 1 1
A‟C 1 1 1
2 5 7
A‟B‟ 1
C‟D 1
A‟D 1 1
A‟C 1 1
En la Figura 6.13, se tiene que el cubo A’D cubre al cubo C’D; y que el implicante A’C cubre al
implicante A’B’. Eliminando los renglones cubiertos, resulta:
2 5 7
A‟D 1 1
A‟C 1 1
En la tabla reducida de la Figura 6.14, los cubos A’D y A’C deben formar parte de la función ya
que tienen una columna con una sola marca; éstos podría denominarse implicantes primos
esenciales secundarios. Resulta:
Se repite la aplicación de las reglas hasta agotar la tabla. Siempre se remueven aquellos
renglones que contengan columnas con una sola marca; se tratan en la tabla reducida, en forma
similar a los implicantes primos esenciales en la tabla completa.
La función se forma con los implicantes de los renglones removidos por contener columnas con
una sola marca.
En determinados casos, luego de remover los implicantes primos esenciales, los renglones
cubiertos por otros, y las columnas que cubren a otras, no puede seguir reduciéndose la tabla.
Se denominan tablas reducidas cíclicas, aquéllas que no pueden reducirse según el método
recién planteado.
Para resolver tablas cíclicas se tienen varios métodos; uno es una heurística conocida como
“bifurcación y acotamiento”, otro es el algoritmo o método exacto de Petrick.
6.5.1. Bifurcación.
La columna costo puede ser el número de literales del implicante primo. Se escoge,
tentativamente, uno de los implicantes, removiéndolo junto a los mintérminos que cubre; se
Para el caso de la tabla cíclica de la Figura 6.15, se escoge en primer lugar Ip1, con costo 2,
queda, luego de la reducción:
Costo m3
Ip2 4 1
Ip3 2 1
Costo m1
Ip1 2 1
Ip3 2 1
Costo m2
Ip1 2 1
Ip2 4 1
Entonces tenemos dos soluciones con costo total 4, para la solución de la tabla cíclica. A este
costo habría que sumarle el debido a la selección de implicantes primos antes de la tabla cíclica.
Si el subproblema resulta cíclico, debe repetirse el procedimiento en forma recursiva.
Se plantea una expresión booleana P, como producto de sumas, que garantice que la cobertura
considera todos los mintérminos de la tabla, sea ésta cíclica o no, y que a la vez entregue todas
las soluciones de cobertura posibles.
Si definimos Pi como verdadera si el implicante primo Ipi está presente en la cobertura; y falsa
si no está presente, podemos plantear, observando la Figura 6.19, que para que el mintérmino
m1 esté presente en la cobertura, debe cumplirse que debe estar presente el implicante Ip1 o el
implicante Ip4; es decir: (P1+P4).
P = (P1+P4)(P2+P3)(P1+P3)(P2+P4)
Se tienen dos soluciones, que resuelven la tabla cíclica: los implicantes Ip1 e Ip2, o bien los
implicantes Ip3 e Ip4. Puede verificarse que ambas son coberturas, con la tabla de la Figura
6.19.
Se elige la de menor costo.
Ejemplo 6.8.
Si una columna cubre a otra, puede eliminarse la columna que cubre a las otras. Por ejemplo si
un mintérmino tiene garantizada su inclusión, si (P6 + P7 + P8) y si otro mintérmino tiene
asegurada su cobertura si: (P6 + P7); entonces puede comprobarse que:
P= (Pp1)(...)(Ppm)(Pa+Pb)(…)
Donde (Pp1)(…)( Ppm) son los m implicantes primos esenciales. El resto de las sumas deben
garantizar la inclusión de los mintérminos no esenciales en la cobertura de la función. De esta
forma el tratamiento algebraico para reducir los productos de sumas a suma de productos se
complica un tanto, pero se obtienen todas las formas de implementación posibles. En todas éstas
deben estar presentes los m implicantes primos esenciales.
Ejemplo 6.9.
Si se toma la tabla de la Figura 6.13, y se enumeran los implicantes según:
2 5 7
IP1 A‟B‟ 1
IP2 C‟D 1
IP3 A‟D 1 1
IP4 A‟C 1 1
P = (P1+P4)(P2+P3)(P3+P4)
Lo cual muestra que el método de Petrick obtiene todas las soluciones posibles.
Debe notarse que si se eliminan los renglones que son cubiertos por otros, no se obtienen todas
las soluciones. En el caso del ejemplo de la Figura 6.20, deberían eliminarse el renglón IP1, que
es cubierto por IP4; y el implicante primo IP2 que es cubierto por el renglón IP3.
Ejemplo 6.10.
Reducir la tabla de implicantes de la función f(a,b,c,d) que se muestra en la Figura 6.21.
Notar que el costo de todos los implicantes primos es similar, ya que todos contienen dos
mintérminos.
1 3 4 6 7 9 13 15
ipa 1 1
ipb 1 1
ipc 1 1
ipd 1 1
ipe 1 1
ipf 1 1
ipg 1 1
iph 1 1
1 3 7 9 13 15
ipa 1 1
ipc 1 1
ipd 1
ipe 1 1
ipf 1 1
ipg 1 1
iph 1 1
El renglón ipc cubre a ipd; por lo tanto, puede eliminarse el renglón ipd.
1 3 7 9 13 15
ipa 1 1
ipc 1 1
ipe 1 1
ipf 1 1
ipg 1 1
iph 1 1
Ahora, ipe cubre a ipc; e ipg cubre a iph, queda eliminando a ipc e iph:
7 9 13 15
ipe 1 1
ipf 1 1
ipg 1 1
ipe e ipg deben formar parte de la función; pues contienen a las columnas 7 y 9, que en la tabla
reducida sólo tienen una marca. Luego de esto, la tabla queda vacía.
Finalmente:
f = ipb + ipa + ipe + ipg
f=a’bd’+a’b’d+bcd+ac’d
Existen otras formas posibles. Éstas se obtienen eliminando otro implicante cuando la tabla
resultó cíclica. Por ejemplo, eliminando ipc, en la Figura 6.18, resulta:
1 9 13 15
ipa 1
ipe 1
ipf 1 1
ipg 1 1
iph 1 1
1 9 13 15
ipf 1 1
ipg 1 1
iph 1 1
Aplicando el método de Petrick a la tabla de la Figura 6.21, se debe satisfacer p, para cubrir
todos los mintérminos:
p= (pa+ph)*(pa+pc)*(pb)*(pb+pd)*(pc+pd+pe)*(pg+ph)*(pf+pg)*(pe+pf);
Expresando como suma de productos, se obtienen siete soluciones, debe notarse que pb, está
presente en todos los productos, ya que es esencial. A continuación debe evaluarse el costo de
cada una de las soluciones para seleccionar cuales son mínimas.
Los dos últimos productos, formados por cuatro implicantes primos son las dos soluciones
obtenidas antes, con 16 entradas. Los primeros cuatro productos del método de Petrick,
conducen a soluciones con 15 literales y 20 entradas, por lo cual no son considerados soluciones
mínimas.
f= (b+d)(a’+d)(a’+b+c’)(a+b’+c+d’)
Es una variante para encontrar los implicantes primos, representando en forma digital el método
de Quine, y es adecuado para ser programado en un computador.
Su complejidad, de tipo exponencial, lo convierte en un problema intratable para elevados
valores de variables.
Se comparan los elementos de cada grupo, buscando adyacencias, y se forman las siguientes
columnas en forma similar al método de Quine. Notando que en la representación decimal,
diferencias de 1, 2, 4, 8 y, en general, de una potencia de 2, indican una diferencia en un bit.
También se mantiene la separación en grupos en las nuevas columnas.
Es posible encontrar una función que entregue el número de unos en representación binaria de
un número decimal. La cual facilita la formación de los grupos.
La segunda columna representa todas las agrupaciones posibles de dos mintérminos. La tercera
columna representa grupos de cuatro mintérminos, y así sucesivamente.
El algoritmo permite trabajar con dígitos decimales o binarios. Se anotan en los ejemplos
columnas binarias y decimales.
En la segunda y siguientes columnas, las variables eliminadas se denotarán con un guión
(también es posible anotar la posición del guión con un número decimal potencia de dos).
Pueden combinarse dos términos si ellos difieren solamente en un literal; por esta razón, no
podrán combinarse dos términos en un mismo grupo. Los miembros de un grupo de un solo "1",
difieren en dos variables por lo menos; lo mismo puede establecerse para los otros grupos. Esta
observación organiza la búsqueda de adyacencias, ya que sólo es preciso comparar entre grupos
adyacentes.
Ejemplo 6.11.
g(a, b, c, d, e, f) = m(0,2,6,7,8,10,12,14,15,41)
Decimal Binario
mintérmino a b c d e f Número de unos
0 0 0 0 0 0 0 0
2 0 0 0 0 1 0 1
8 0 0 1 0 0 0
6 0 0 0 1 1 0 2
10 0 0 1 0 1 0
12 0 0 1 1 0 0
7 0 0 0 1 1 1 3
14 0 0 1 1 1 0
41 1 0 1 0 0 1
15 0 0 1 1 1 1 4
Los mintérminos del grupo con n unos, se comparan con todos los del grupo con (n+1) unos.
Decimal Binario
Grupo Posición a b c d e f Número de unos
0,2 2 0 0 0 0 - 0 0
0.8 8 0 0 - 0 0 0
2,6 4 0 0 0 - 1 0 1
2,10 8 0 0 - 0 1 0
8,10 2 0 0 1 0 - 0
8,12 4 0 0 1 - 0 0
6,7 1 0 0 0 1 1 - 2
6,14 8 0 0 - 1 1 0
10,14 4 0 0 1 - 1 0
12,14 2 0 0 1 1 - 0
7,15 8 0 0 - 1 1 1 3
14,15 1 0 0 1 1 1 -
No importa el orden de las listas de mintérminos, sólo se anotan una vez. Por ejemplo, entre los
primeros grupos se tiene:
0, 2 (2)
8, 10 (2)
Diferencia: 8, 8 generando: 0, 2, 8, 10 (2,8)
0, 8 (8)
2, 10 (8)
Diferencia: 2, 2 generando: 0, 8, 2, 10 (8,2)
Decimal Binario
Grupo Posición a b c d e f Número de unos
0, 2, 8, 10 2,8 0 0 - 0 - 0 0
2, 6, 10, 14 4,8 0 0 - - 1 0 1
8, 10,12,14 2,4 0 0 1 - - 0
6, 7, 14, 15 1,8 0 0 - 1 1 - 2
Implicantes 0 2 8 6 10 12 7 14 41 15
primos
41 1
0, 2, 8, 10 1 1 1 1
2, 6, 10, 14 1 1 1 1
8, 10, 12, 14 1 1 1 1
6, 7, 14, 15 1 1 1 1
Nótese que todo el proceso podría haberse realizado sólo considerando la información binaria, o
solamente la información decimal.
6.7.1. Fundamentos.
f p1 p2 ... pk
Si se tiene:
pi a p j con a 1 , siendo a una de las variables de f .
Se puede descartar pi de f.
Esto debido a que:
pi p j a p j p j (a 1) p j p j
Lo cual puede anotarse:
pi p j
El método consiste en introducir términos implicados, de tal manera de eliminar los términos
que los implican. Es decir, se introduce p j , en la suma de productos, y se elimina pi .
f xT x ' yT yT
Como se tiene que:
x ' yT yT
f xT yT
La formación de implicantes basada en el teorema de fusión, sobre la que está basado el método
de Quine, también puede verse como la eliminación de productos que implican a otros
productos:
f xT x ' T
Los productos S y R tienen consenso S0 R0 , si existe una variable x tal que S xS0 y R x ' R0 ;
y no existe una variable y , en el producto S 0 , que aparezca como y ' en R0 . Si existe la variable
y , el término S0 R0 es cero, y no hay consenso. Se dice que la variable x es biforme en el
conjunto: S , R . Los productos S y R están formados por conjuntos disjuntos de mintérminos.
El consenso es el implicante primo de los mintérminos de S y R , y es la máxima cobertura entre
las fronteras de la exclusión mutua entre S y R .
AB S AB
CD 00 01 11 10 CD 00 01 11 10
0 4 12 8 0 4 12 8
00 1 00 1 1
1 5 13 9 1 5 13 9
01 1 01 1 1
3 7 15 11 3 7 15 11
11 1 1 1 1 11 1 1 1 1
2 6 14 10 2 6 14 10
10 10
S0R0=A‟BD R S0R0=A‟D
f p1 p2 ... pk
Sea el conjunto:
L p1 , p2 ,..., pk
AB
CD 00 01 11 10
0 4 12 8
00 1
1 5 13 9
01 1 1
15 11
11 13 17 1
2 6 14 10
10 1 1
D es biforme, se tiene consenso A’B’C’ entre (0000, 00_1), A’BC entre (0110, 01_1) y ABC
entre (1110, 1111).
AB
CD 00 01 11 10
0 4 12 8
00 1
1 5 13 9
01 1 1
3 7 15 11
11 1 1 1
2 6 14 10
10 1 1
Agregándolos a L:
L 0000, 0110,1110,1111, 00 _1, 01_1, 000 _, 011_,111_
Eliminando los que implican consensos:
L 00 _1, 01_1, 000 _, 011_,111_
Agregando (_11_) a L:
L 00 _1, 01_1, 000 _, 011_,111_, _11_
Eliminando los que implican consenso:
L 00 _1, 01_1, 000 _, _11_
Finalmente B, es biforme, se tiene consenso A’D entre (00_1,01_1),
AB
CD 00 01 11 10
0 4 12 8
00 1
1 5 13 9
01 1 1
15 11
11 13 17 1
2 6 14 10
10 1 1
Agregando (0__1) a L:
L 00 _1, 01_1, 000 _, _11_, 0 __1
Eliminando los que implican consenso, se obtienen los implicantes primos:
L 000 _, _11_, 0 __1
AB
CD 00 01 11 10
0 4 12 8
00 1
1 5 13 9
01 1 1
3 7 15 11
11 1 1 1
2 6 14 10
10 1 1
Entonces:
S0 R0 1 1 0 0
Debido a que el producto de una variable o su complemento en S, cuando no está presente esa
variable en R, deja la variable en el término de consenso.
Lo anterior puede comprobarse en el siguiente ejemplo. El producto: (ab ' e ')(ab ' cde) ab ' cd
Puede representarse, empleando notación de cubos, por:
S 10--0
R =10111
S0 R0 1011-
El código, con notación de subcubo, para pi , sintoniza con todos los caracteres binarios de p j ;
y pi tiene unos o ceros en posiciones donde p j tiene .
Ejemplo: 1011 1 1 1 1
Ejemplo 6.13.
Aplicando las operaciones binarias anteriores, pueden determinarse los implicantes primos de f,
debe observarse que L puede estar formado por productos, no necesariamente mintérminos.
Para: f ( x1 , x2 , x3 , x4 , x5 , x6 ) , se tiene:
L 0 11 1, 0 0 1,1 11 0,1 1 1
x4 y x5 no son biformes en L.
x6 es biforme en L, en 1 11 0,1 1 1 con consenso: 1 11 y también en:
1 11 0, 11 1 con consenso: 1 11
L 0 0 1,1 11 0,1 1 1, 11 1, 0 1 1,1 11
Se tiene la única implicación: 1 11 0 1 11 .
Ejemplo 6.14.
Minimizar: be’f+acde’fgh+b’gh
Se tiene una función de ocho variables, para la cual es difícil emplear mapas de Karnaugh.
Con b biforme, el consenso entre el primer y último término es: e’fgh.
Pero acde’fgh implica e’fgh. A su vez e’fgh es término de consenso, e implica a be’f y b’gh.
Entonces resulta: be’f + b’gh
Ejemplo 6.15.
Minimizar: ac’de+d’+e’+c.
Problemas resueltos.
Problema 6.1.
Solución.
Se ordena según número de unos de los mintérminos. En la primera columna quedan todos los
mintérminos marcados, en el proceso de formar la siguiente columna de 1-cubos.
un uno
8 001000
10 001010 dos unos
24 011000
26 011010 tres unos
42 101010
58 111010 cuatro unos
59 111011
cinco unos
8,10 0010_0
8,24 0_1000
10,26 0_1010
10,42 _01010
24,26 0110_0
26,58 _11010
42,58 1_1010
58,59 11101_ ip1 queda sin marcar
La tercera columna, de los 2-cubos, es la última que puede formarse. Y por lo tanto los
renglones quedan sin marcar.
Problema 6.2.
2 3 4 5 8 10
ip1 x x x
ip2 x x x x
ip3 x x
ip4 x x x x
ip5 x x
a) Determinar cuáles renglones pueden eliminarse por estar cubiertos por otro.
b) Determinar cuáles columnas pueden eliminarse.
c) Explicar la razón por la que ip2 e ip4 figuran con los mismos mintérminos.
Solución.
a) ip1 cubre a ip3 y también a ip5. Podrían eliminarse renglones asociados a ip3 e ip5.
ip2 cubre a ip4 y viceversa; puede eliminarse uno de ellos.
b) Columna 3 puede eliminarse, ya que está cubierta por la columna 2. (el mintérmino 3 tiene
asegurada su consideración)
Columna 4 puede eliminarse, ya que está cubierta por las columnas 5, 8 y 10. (el mintérmino 4
tiene asegurada su consideración)
Columnas 5, 8 y 10 se cubren entre sí. Pueden eliminarse dos cualesquiera.
c) ip2 e ip4 tienen iguales mintérminos, se diferencian en implicantes superfluos; los cuáles no
se indican en la tabla.
Ejercicios propuestos.
Ejercicio 6.1.
Y para que estén presentes todos los mintérminos, debe cumplirse, aplicando el método de
Petrick:
P = (P1+P8+P9)*(P6+P7+P8+P9)*(P6+P7)*(P1+P3+P4+P9)*(P3+P4)*(P3+P6+P9)*
(P3+P6)* (P1+P2+P5+P8)*(P2+P5)*(P2+P7+P8)*(P2+P7)*(P1+P4+P5)*(P4+P5);
Lo cual entrega 15 soluciones, seis de ellas formadas por cuatro implicantes, que resultan las
formas mínimas.
INORDER = P1 P2 P3 P4 P5 P6 P7 P8 P9;
OUTORDER = P;
P = (P1+P8+P9)*(P6+P7+P8+P9)*(P6+P7)*(P1+P3+P4+P9)*(P3+P4)*(P3+P6+P9)*(P3+P6)*
(P1+P2+P5+P8)*(P2+P5)*(P2+P7+P8)*(P2+P7)*(P1+P4+P5)*(P4+P5);
Los últimos seis productos son las formas mínimas, y se han anotado a la derecha de las
funciones en el enunciado del problema.
Ejercicio 6.3.
Ejercicio 6.4.
Ejercicio 6.5.
Ejercicio 6.6.
Ejercicio 6.7.
Demostrar
f g f g g y f g f
f g ( f g) y (g f )
W.V. Quine. "The problem of simplifying truth functions." American Mathematical Monthly
Vol. 59. Octubre 1952. págs 521-531.
W.V. Quine. "A way to simplify truth functions." American Mathematical Monthly Vol. 62.
Noviembre 1955. págs 627-631.
E.J. McCluskey. "Minimization of Boolean Functions". Bell Syst. Tech. Journal N°6,
Noviembre 1956. págs. 1417-1444.
P. Tison. "Théorie des consensus.” These présentée à La Faculte des Sciences de L'Universite
de Grenoble. Junio 1965.
P. Tison, "Generalization of consensus theory and application to the minimization of Boolean
functions," IEEE Trans. Electron. Comput., vol. EC-16, pp. 446-456, Aug. 1967.
Petrick, S. R. “A Direct Determination of the Irredundant Forms of a Boolean Function from the
Set of Prime Implicants”. Technical Report AFCRC-TR-56-110, Air Force Cambridge Research
Center, Cambridge, MA, USA. 1956.
Índice general.
CAPÍTULO 6 ............................................................................................................................................. 1
ALGORITMOS DE MINIMIZACIÓN ................................................................................................... 1
6.1. IMPLICACIÓN ..................................................................................................................................... 1
6.2. IMPLICANTES PRIMOS ........................................................................................................................ 2
6.3. IMPLICANTE PRIMO ESENCIAL ............................................................................................................ 2
Ejemplo 6.1. ........................................................................................................................................ 3
Ejemplo 6.2. ........................................................................................................................................ 3
6.4. MÉTODO DE QUINE (1952) ................................................................................................................ 4
6.4.1. Obtención de implicantes primos .............................................................................................. 4
Ejemplo 6.3. ..................................................................................................................................................... 4
6.4.2. Tabla de implicantes ................................................................................................................. 5
Ejemplo 6.4. ..................................................................................................................................................... 5
6.4.3. Reducción de tablas................................................................................................................... 6
Ejemplo 6.5. ..................................................................................................................................................... 6
Ejemplo 6.6. ..................................................................................................................................................... 8
6.5. TABLA REDUCIDA CÍCLICA. ............................................................................................................. 10
6.5.1. Bifurcación. ............................................................................................................................. 10
Ejemplo 6.7. ................................................................................................................................................... 10
6.5.2. Petrick (1956). ......................................................................................................................... 11
Ejemplo 6.8. ................................................................................................................................................... 12
Ejemplo 6.9. ................................................................................................................................................... 13
Ejemplo 6.10. ................................................................................................................................................. 13
6.6. MÉTODO DE QUINE-MCCLUSKEY (1956) ........................................................................................ 17
Ejemplo 6.11...................................................................................................................................... 17
6.7. MÉTODO DE TISON (1965) PARA ENCONTRAR IMPLICANTES PRIMOS. CONSENSO REITERADO. ........ 20
6.7.1. Fundamentos. .......................................................................................................................... 20
6.7.2. Algoritmo de Tison. ................................................................................................................. 21
Ejemplo 6.12. ................................................................................................................................................. 22
6.7.3. Operaciones para desarrollar el algoritmo, ........................................................................... 25
a) Obtener términos de consenso. .................................................................................................................. 25
b) Un producto que implica otro: pi p j ............................................................................................... 26
Ejemplo 6.13...................................................................................................................................... 26
Ejemplo 6.14...................................................................................................................................... 27
Ejemplo 6.15...................................................................................................................................... 27
PROBLEMAS RESUELTOS. ........................................................................................................................ 28
Problema 6.1. .................................................................................................................................... 28
Problema 6.2. .................................................................................................................................... 29
EJERCICIOS PROPUESTOS. ....................................................................................................................... 29
Ejercicio 6.1. ..................................................................................................................................... 29
Ejercicio 6.2. ..................................................................................................................................... 30
Ejercicio 6.3. ..................................................................................................................................... 31
Ejercicio 6.4. ..................................................................................................................................... 31
Ejercicio 6.5. ..................................................................................................................................... 31
Índice de figuras
Capítulo 7
Sistemas Combinacionales
Las componentes digitales electrónicas han evolucionado rápidamente. Se han logrado elevados
niveles de integración; es decir gran número de compuertas y flip-flops en un solo dispositivo.
Debido a que los problemas computacionales que deben ser resueltos son de gran complejidad,
y a menudo de costo exponencial, se han desarrollado heurísticas y nuevos conceptos para
describir sistemas digitales.
Estudiaremos algunos bloques constructivos básicos: Veremos que ellos pueden implementarse
en base a compuertas, o bien existen como dispositivos de mediana integración, o son partes o
bloques que se pueden agregar a esquemáticos, o son elementos básicos de los dispositivos
programables, o son módulos de software de los lenguajes descriptivos de hardware.
Mediante señales de control se selecciona una de las 2 n entradas y se la dirige hacia una salida
única. Se tienen n señales de control que, al ser decodificadas internamente, permiten establecer
la única vía hacia el canal de salida. El dispositivo puede emplearse para convertir una entrada
paralela en una salida en serie.
Suele existir una señal de habilitación (enable) que permite el control del multiplexor. Cuando,
por razones que se verán más adelante, se autoriza el ingreso del control en un breve lapso de
tiempo, la señal de habilitación toma la forma de un pulso angosto. Este pulso de control, se
denomina STROBE, en inglés.
La Figura 7.2, muestra un símbolo lógico para un multiplexor de dos vías a una. El símbolo
representa la ecuación: f (c, x0 , x1 ) c ' x0 cx1
c
x0
0
f
x1
1
x0 f
x1
La Figura 7.3, muestra la realización o síntesis de un mux de 4 vías a una, mediante tres muxs
de 2 vías a una. La descomposición aumenta el número de niveles.
c1
c0
x0 0
x1 1
0
1
f
x2 0
x3 1
f(c1, c0, x3, x2, x1, x0) = c1c0 x3 + c1c0' x2 + c1'c0 x1 + c1'c0' x0
x0
x1 f
x2
x3
c1 c0
x0 00 0
x1 01 x 1
x2 f f
10 2
x3 11 3
La Figura 7.5 derecha, muestra conjuntos de señales con notación de buses o arreglos de
alambres.
Ejemplo 7.1.
f x1 x2 x1 x3 x1 x3
f ( x1 , x2 , x3 ) x1 f (1, x2 , x3 ) x1 f (0, x2 , x3 ) x1 ( x2 x3 ) x1 ( x3 )
x1
x3’ = f(0,x2,x3 ) 0
f
x2+x3 = f(1,x2,x3 ) 1
f ( x1 , x2 , x3 ) x1 f (1, x2 , x3 ) x1 f (0, x2 , x3 )
x1 ( x2 f (1,1, x3 ) x2 f (1, 0, x3 )) x1 ( x2 f (0,1, x3 ) x2 f (0, 0, x3 ))
x1 x2 f (1,1, x3 ) x1 x2 f (1, 0, x3 ) x1 x2 f (0,1, x3 ) x1 x2 f (0, 0, x3 )
x3’=f(0,0,x3 ) 0
x3’=f(0,1,x3 ) 1
0
f
x2 1
x3=f(1,0,x3 ) 0
1=f(1,1,x3 ) 1
f x1 x2 x1 x3 x1 x3 x1 x2 x1 x2 x3 x1 x2 x3 x1 x2 x3 x1 x2 x3
Simplificando, se obtiene:
f x1 x21 x1 x2 x3 x1 x2 x3 x1 x2 x3
Comparando coeficientes con la expansión realizada para tres variables, se obtienen las
funciones de x3 , que se indican en la Figura 7.7.
Del diseño anterior puede verse que un mux de 4 a 1, permite implementar cualquier función de
tres variables.
Un multiplexor de 8 vías a una, cuyo diagrama se muestra en la Figura 7.9, implementado en
dos niveles, está disponible en la familia TTL, se tienen los dispositivos: 74151, 74152.
f=c2c1c0I7+c2c1c0'I6+c2c1'c0I5+c2c1'c0'I4+c2'c1c0I3+c2'c1c0'I2+c2'c1'c0I1+c2'c1'c0'I0
I0
I1
I2 Mux
I3 8:1
I4 f
I5
I6 8:1
I7 mu
x
c2c1c0
El 74150 implementa un mux de 16 vías a una; este mux permite implementar cualquier función
de cinco variables.
Una alternativa electrónica es dotar a estos multiplexores de una salida de tercer estado. En este
caso la compuerta de salida además de los valores lógicos 1 y 0, puede quedar en un estado de
alta impedancia. En caso de TTL, se disponen conexiones para que ambos transistores del
totem-pole de salida queden cortados. Este control adicional, permite conectar las salidas de dos
multiplexores a un mismo alambre, ya que sólo uno de los multiplexores impone valores lógicos
en la salida; el otro, está en tercer estado.
Esto permite componer un mux de 2n vías a partir de dos muxs de n vías.
control de tercer estado
x0
x1 z
x2
x3
c1 c0
Además de los valores lógicos 0 y 1, hemos visto el valor superfluo (usualmente X o d), sin
embargo estos valores no aparecen una vez que se ha realizado un diseño ya que éstos se han
empleado para minimizar, y han sido reemplazados por unos o ceros según convenga.
Suele encontrarse un tercer estado en el cual puede estar una variable booleana, este valor es de
alta impedancia, y se lo denomina corrientemente Z. Cuando una salida está en tercer estado,
puede considerársela desconectada.
Las compuertas que pueden proveer esta salida tienen una entrada adicional, denominada
habilitación de la salida (output enable). Cuando esta señal de control está desactivada la salida
está en tercer estado; cuando está activa, la salida puede tomar valores lógicos, de acuerdo a las
entradas.
El siguiente diagrama ilustra un buffer de tercer estado (amortiguador entre etapas), junto a su
tabla de verdad, en la cual aparecen los estados X (superfluo) y Z (de tercer estado):
OE E OE S
X 0 Z
0 1 0
E S
1 1 1
E1 OE S
1 E1
OE' S
0 E2
E2
En numerosos circuitos se proveen buffers de tercer estado que activan la salida cuando su nivel
es bajo. En estos casos la señal de control, antes de ingresar al buffer, tiene un pequeño círculo,
que se interpreta como un inversor. En estos casos de activación del control mediante nivel
bajo, el nombre de la señal suele definirse como una señal negada, según se ilustra, en el
siguiente diagrama:
OE ' E OE ' S
X 1 Z
0 0 0
E S
1 0 1
Figura 7.13. Buffer con salida activada por señal de lógica negativa.
7.4. Decodificadores.
Para un decodificador de dos líneas de entradas, se tendrán cuatro salidas. Pueden denominarse
decodificadores de 2 entradas a 4 salidas, anotando 2 : 4; o bien, una salida de las cuatro, lo que
se anota: 1 de 4.
E
Dec 3 z3
2a4 2 z2
1 z1
1 0 0 z0
c1 c0
z0 E c1 c0 z3 z2 z1 z0
1 0 0 0 0 0 1
z1 1 0 1 0 0 1 0
1 1 0 0 1 0 0
1 1 1 1 0 0 0
z2
0 X X 0 0 0 0
z3 z0 = c1' c0' E
z1 = c1' c0 E
z2 = c1 c0' E
z3 = c1 c0 E
c0 E
c1
Figura 7.15. Diseño en base a compuertas
En toda memoria existe un decodificador del bus de direcciones, cuyas salidas activan sólo una
de las palabras de la memoria.
3
2
1
1 0 0
cd
3
2
1
1 0 0
cd
3
2
1
1 0 0
cd
z
0
z
1
x . z
2
.
.
control z
2n-1
Figura 7.16. Esquema funcional de Demultiplexor
Permite dirigir la información que fluye desde x, por una (y sólo una) de las 2 n salidas, de
acuerdo a una entrada de control codificada, en n líneas. La señal de control selecciona la vía
por la que fluirá la única información de entrada.
z0
z0 = c1' c0' x
z1 z1 = c1' c0 x
x z2 = c1 c0' x
z2 z3 = c1 c0 x
z3
c1 c0
La señal x fluye hacia la salida z3, si las señales de control toman valores: c1 = 1, c0 = 1. El
resto de las salidas: z0, z1 y z2 toman valor cero.
c x
Para un demultiplexor con una entrada, tres señales de control y 8 salidas, se tienen las
ecuaciones:
y
cdemux
Pueden usarse para resolver la interconexión entre múltiples fuentes y múltiples destinos.
Una aplicación importante es seleccionar los operandos de entrada a una unidad aritmética, y la
posibilidad de llevar el resultado por diferentes rutas. La Figura 7.20 ilustra la posibilidad de
escoger dos valores diferentes para cada operando de la unidad aritmética.
A0 A1 B0 B1
Ca MUX MUX Cb
A B
Sumador
Cs DEMUX
S0 S1
En el diseño del camino de datos de un procesador suelen emplearse muxes para movilizar la
información. En un caso práctico, A0, A1, B0, B1, S0 y S1 son buses formados por 16 ó 32
señales.
En circuitos con funciones cada vez más complejas, los diseños lógicos mediante componentes
SSI, o primitivas fijas MSI/LSI ya no resultaron convenientes.
Comenzaron a emplearse componentes programables, por la disminución del tiempo de diseño y
verificación; y además la posibilidad de reprogramación en caso de modificaciones al diseño.
Esto estuvo ligado a la aparición de herramientas computacionales de apoyo al diseño.
Los primeros dispositivos programables fueron: PROM, memoria programable sólo de lectura
(Programable Read Only Memory); PLA, arreglos lógicos programables (Programable Logic
Arrays); PAL arreglo de and programable (Programable Array Logic).
Estos dispositivos poseen, como parte importante, una matriz de diodos.
Supongamos que deseamos tener dos palabras de 3 bits cada una. Una de ellas debe ser 101 y la
otra, 001. En la Figura 7.21 se tienen dos líneas horizontales o de palabras que pueden estar
conectadas a voltajes altos o bajos. Se conectan diodos entre las líneas de palabra y las tres
líneas verticales o de contenidos.
Debe recordarse que un diodo abierto representa una alta impedancia; en el caso anterior, la
línea de palabra p0 queda físicamente desconectada de las líneas de salida.
Asumimos que los diodos que conducen dejan un voltaje igual al voltaje de la línea palabra
menos 0,7 V, en las líneas de contenido.
p1
Línea palabra
p0
Línea de salida
C2 C1 C0
Para construir una memoria, sólo resta activar las líneas de palabras, de acuerdo al código
binario de la dirección. Esto puede implementarse simplemente mediante un decodificador.
Se ilustra un esquema de una memoria de 2m palabras con n bits cada una, con salidas
de tercer estados controladas por la señal leer. En cada casilla de la matriz se tiene un
diodo, que conecta la línea de palabra con la columna de salida, en caso de tener
almacenado un uno; y no se tiene diodo, en caso de almacenar un cero.
Sel 0
0/1 0/1 0/1
Sel 1
0/1 0/1 0/1
Deco-
a Sel 2
0 dificador 0/1 0/1 0/1
a
1
Dirección ma2
m
a
–
m-1
m
Sel 2
– 0/1 0/1 0/1
Leer
Datos d d d
n– n-1 0
7.6.2. ROM
En una ROM, los datos quedan permanentemente almacenados. Esto se logra colocando o no
diodos, mediante métodos fotográficos, al construir el circuito integrado. Otra posibilidad es
construir el circuito con todos los diodos de la matriz; luego se aplica un voltaje adecuado de
programación que rompe aquellos diodos asociados a los ceros de la palabra. El voltaje de
programación se introduce por las líneas de salida.
La elección de una de estas técnicas de programación de ROM, dependen de la cantidad de
dispositivos que se deseen programar. Estos dispositivos pueden tener diferentes usos, por
ejemplo pueden usarse para: almacenar secuencias de control en un microprograma, generar
caracteres, traductor de códigos usuales, etc.
En lo sucesivo, se empleará la siguiente notación para describir una matriz de diodos. La Figura
7.23 muestra una memoria de 4 palabras de 4 bits cada una, se ilustra el decodificador y luego
la matriz de diodos.
No se dibujan las resistencias de terminación, y los diodos conectados se simbolizan por puntos
gruesos:
0
a0
1
2
a1 3
C3 C2 C1 C0
Dirección Contenido
a1 a0 c3 c2 c1 c0
0 0 0 0 1 0
0 1 1 1 0 1
1 0 1 0 0 1
1 1 0 1 0 0
El esquema en que se puede programar, pero sólo una vez, a través de la ruptura de algunos
diodos del arreglo se clasificó como ROM. En las memorias PROM, puede colocarse
información en la memoria, la P inicial recuerda que el dispositivo es programable.
Se emplean transistores MOSFET con la base aislada, en lugar de diodos. Mediante el efecto
de avalancha se deposita carga en la base, quedando una baja impedancia o un '1' almacenado.
Para liberar la carga de la compuerta se aplica luz ultravioleta a través de una pequeña ventana
que posee la PROM, dejándola con puros unos. Suele denominarse EPROM a las memorias de
este tipo, donde la "E" simboliza "Erasable" (borrable).
2n m [bits]
a) Conversión de códigos.
La programación de la PROM está basada en la asignación de un contenido a cada dirección; es
decir, se programa por palabras.
Un caso especial de traductor de código es una tabla de búsqueda. En éstas pueden almacenarse
valores de funciones trigonométricas, logaritmos, etc. Además, todas las operaciones aritméticas
que pueden ser planteadas con tablas, como la suma, resta y multiplicación, también pueden ser
implementadas usando PROM.
Ejemplo 7.3. Conversión de BCD a exceso 3.
La tabla de conversión:
El resto de las combinaciones debe ser llenado con ceros. Nótese que se programa por palabras;
es decir, se le asocia un significado al contenido de cada dirección. Se tiene una visión
horizontal de la tabla.
b) Generadores de funciones.
En este caso se tiene una visión vertical de la tabla. Se asigna los valores de la tabla de verdad
de la función, a una columna de contenido de la PROM.
Lo usual es generar varias funciones de las variables con la misma PROM.
DEC 3:8 0
1
2
a A2
3
b A1
4
c A0
5
6
7
f
Figura 7.27. Esquema funcional del diseño de una función en base a PROM.
0
1 16x3
2
3
0
1 16x3
2
3
:
El primer carácter de la línea es el símbolo dos puntos (colon en inglés).
: 10
Los siguientes dos caracteres especifican, en hexadecimal, el número de bytes de datos
presentes en la línea. (En el ejemplo que se ilustra, el número de bytes es 10H, es decir: 16 en
decimal.)
:10 0010
Los siguientes cuatro caracteres, especifican la dirección del primer byte de datos de la línea
(0010H equivale a la dirección 16 en decimal). Esto implica que el mayor tamaño de la
memoria es FFFFH, es decir una memoria de 64 KB. Existen formatos de archivos para
especificar memorias mayores a 64KB, entre ellos los registros S de Motorola y los archivos
con formato Textronix.
:100010 00
Los siguientes dos caracteres indican el tipo de línea o registro. El tipo 00 indica un registro
normal de datos; es decir, una línea que no es la última del archivo. El tipo de la última línea
del archivo debe ser 01.
:10001000 FE352FCD454BAEFFE43E5D55AAE435EE
:10001000FE352FCD454BAEFFE43E5D55AAE435EE EF
Los últimos dos caracteres son una suma de chequeo para la línea. Se denomina byte de paridad.
Y se define como el valor que al ser agregado a la suma de los bytes anteriores (los bytes
después del dos puntos, hasta el penúltimo) de la línea da como resultado cero. Puede decirse
que es el negativo de la suma, descrita antes, expresada en complemento dos.
La suma se realiza en módulo 100H (módulo 256 en decimal).
Ejemplo 7.6
Las siguientes dos líneas son el contenido de un archivo en formato hexadecimal de Intel. El
cual se emplea para grabar eprom. El archivo es de texto (puede editarse con notepad); es decir,
está formado por caracteres imprimibles del código ASCII, organizado en líneas separadas por
0D, 0A (CR, LF carriage return y line feed)
:070100002402FDEC3400FCB9
:00000001FF
La última línea tiene tipo 01, que es la última línea del archivo.
Se cargan 7 bytes a partir de la dirección 0100H.
El código hexadecimal para el carácter dos puntos es 3A. Para el carácter 0 es 30 hexadecimal,
y así sucesivamente. Existe una aplicación Windows llamada mapa de caracteres donde pueden
visualizarse los símbolos disponibles en una fuente y su valor en hex.
Si se transforma el archivo anterior, en formato Intel hex a binario, la información del archivo
binario, vista con un editor hexadecimal se vería como sigue:
00000000 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000010 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000020 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000030 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000040 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000050 0000 0000 0000 0000 0000 0000 0000 0000 ................
Note que en la zona ASCII, los caracteres que no son gráficos o imprimibles (del 00 a 31
decimal, y los mayores que 7FH) se visualizan con puntos; y que también se rellenan con ceros
las zonas donde no se han especificado datos; este es el caso desde la dirección 00000000 hasta
000000FF. Y sólo se cargan en este mapa de memoria los siete valores especificados, a partir
de la dirección 00000100.
No puede verse un archivo binario, con un editor de texto.
Note que la fuente para ver alineadas las columnas debe ser de espacio no proporcional, como
courier o similar.
Existe una aplicación, normalmente denominada dump, que pasa un archivo binario a un
archivo de texto, con la información similar a la desplegada por un editor binario (o
hexadecimal).
En una EPROM, todos los mintérminos son generados por un decodificador fijo, luego los
mintérminos requeridos para producir la función, son combinados mediante otro arreglo
programable con el papel de un OR.
Sin embargo, para ciertos diseños lógicos, sólo se usa una pequeña fracción de los mintérminos
generados por el decodificador.
• •
entradas
•
Arreglo
Arreglo
de
de productos
OR
AND
salidas
• • •
Ejemplo 7.7.
Implementar, mediante PLA , las siguientes funciones:
f0 ABCD DE DE
f1 AB BCDE DE
f2 ABCD BCDE
P0 ABCD
P1 DE
P2 DE
P3 AB
P4 BCDE
Línea de variable
Línea de producto
B
C
Arreglo de AND
D
Líneas de salida
P4 P3 P2 P1 P0
f0
Arreglo de OR f1
f2
Como se verá más adelante, las ROM y PLA se emplean también en diseños de máquinas
secuenciales.
Detalle arreglo de AND.
En la Figura 7.31, si a o b o ambas tienen voltaje cero, en f se tendrá el voltaje de conducción
del (o de los) diodos. Este voltaje es cercano a los 0,7 [V] y corresponde a un cero lógico. Si
ambos diodos están abiertos, con a y b altos, se tendrá un voltaje alto, proporcionando por la
fuente y la resistencia, en la salida f.
a b f
a 0 0 0
0 1 0
1 0 0
b
1 1 1
f =ab
f
En la Figura 7.32, basta que una (o ambas) de las entradas estén altas, para que en la salida f
se tenga un voltaje alto, (Vin - 0,7), al cual se asocia un 1 lógico.
Si ambas entradas están bajas, la salida toma un voltaje de -0,7; al cual se asocia el 0 lógico.
Los circuitos que se ilustran en las Figuras 7.31 y 7.32, no son los únicos posibles. Las
explicaciones simplificadas del funcionamiento de los arreglos, en base a diodos, son con fines
ilustrativos de conceptos solamente.
Existen dos modalidades, una denominada fusible (fuse) en la que las vías están normalmente
conectadas, y se funden o abren las conexiones que no se desean.
Otra modalidad, llamada Antifusible (Anti-fuse), en la cual las conexiones están normalmente
desconectadas, y la programación crea las conexiones.
a’bc’
ab
b’c
f1 f2 f3 f4
Cuando la densidad aumenta, se suele emplear la siguiente notación para las matrices de diodos:
Se dibuja una sola línea de entrada a las compuertas, y se dibuja una marca cuando existe
conexión entre las líneas perpendiculares. El siguiente diagrama ilustra una PLA de cuatro
entradas y cuatro salidas, cuando todas las conexiones aún no han sido programadas.
Usando este convenio, la programación de f1= a'b + b'a y f2 = a'b'c'd' + abcd puede
representarse según:
a b c
d
a'b
ab'
a'b'c'd'
abcd
f1 f2
7.6.6. PAL arreglo lógico (de and) programable (Programable Array Logic).
En la Figura 7.37, se ilustra un solo or con tres líneas de producto, y tres entradas. Note que en
las entradas al arreglo de and se disponen de la señal y su complemento.
Existen PAL con lógica activa alta en la salida (Ejemplo P16H8) y con lógica activa baja en la
salida (P16L8).
También suele proveerse una realimentación de la salida en las líneas de producto, esto permite
programar realimentaciones, y puede emplearse para diseños asincrónicos.
Si se está diseñando un conjunto de funciones, y existen productos que puedan ser compartidos
las PLA son más eficientes que las PAL. Pero debido a que las conexiones basadas en fusibles
tienen mayor resistencia que las conexiones físicas, las PLA son más lentas que las PAL.
clock
enable
reset Q.AR
AR Q.OE
D Q
clk
Q.C
x1
Q.FB Q.PIN
x2
Una ventaja de emplear ROM es que no se requiere minimizar las funciones de salida, y
conviene emplearlas cuando se requieren muchas combinaciones de las entradas (por ejemplo,
en cambiadores de código); las dificultades de su empleo es que por cada entrada adicional se
duplica el tamaño de la ROM, y no puede emplearse minimización debida a condiciones
superfluas. En una ROM puede implementarse cualquier función, y su costo es relativamente
bajo, debido a los altos niveles de producción; pero su velocidad es baja relativa a las otras
estructuras programables.
Los arreglos lógicos programables (PLA) comparten los productos entre varias funciones y su
empleo es ventajoso si las funciones no tienen presentes mintérminos aislados. La mayor
ventaja es que existen aplicaciones que permiten minimizar diseños de múltiples funciones. Es
de mayor costo y menor velocidad que una PAL.
La principal desventaja del arreglo lógico programable (PAL) es que existen restricciones de
fan-in en las entradas de los or fijos, cuestión que se ha superado en los diseños de las
arquitecturas de los CPLD; su ventaja es la mayor rapidez relativa a PLA y ROM. En el diseño
de funciones complejas, puede emplearse una salida como entrada, a la misma PAL, lo cual
aumenta el número de niveles.
Se denomina CPLD al siguiente nivel de la tecnología. Tienen mayor nivel de integración (cerca
de 6500 compuertas y 288 registros, lo cual es un elevado incremento comparado con los 10
registros de la GAL22V10). Se caracterizan por tener programable el número de líneas de
producto que pueden sumarse en un or, y por la incorporación de un bloque de entrada-salida
independiente de la macrocelda.
Suelen tener memoria flash, lo que permite reprogramarlos ya conectados al resto del circuito, y
además conservan su programación al desconectarles la polarización.
7.6.10. FPGA
A medida que han ido aumentando el número de compuertas y flip-flops dentro del chip,
también ha ido variando su estructura interna, actualmente algunas de ellas tienen memoria y
procesadores incorporados.
Si los bloques son muy simples, lo más probable es que se utilicen completamente, pero
requieren un elevado número de alambres y switches programables; la programación de las
interconexiones puede requerir mucho espacio en el área del chip o tener gran retardo.
Celdas basadas en multiplexores.
La celda de la Figura 7.40 tiene 8 entradas y una salida.
s0
s1
sA
A0 0
A1 1
0
sB f
1
B0 0
B1 1
Esta celda puede implementar todas las funciones de dos variables, todas las de tres variables
con al menos una entrada sin complementar, muchas de cuatro variables y hasta algunas de ocho
variables.
Celdas basadas en tablas de búsqueda.
Pueden emplearse Tablas de Búsqueda para implementar funciones booleanas. Se denominan
LUT (look-up table) en inglés. Están basadas en un registro cuya salida alimenta a un
multiplexor.
La Figura 7.41 muestra una tabla de búsqueda de 4 variables de entrada, la cual permite
implementar cualquier función de cuatro variables.
a, b, c, d f(a, b, c, d)
clk
Un módulo básico conecta dos o tres tablas de búsqueda con multiplexores y flip-flops.
Ejemplo 7.8.
Diseñar la función de cuatro variables, empleando LUT:
f ( x1 , x2 , x3 , x4 ) x2 x3 x1 x2 x3 x2 x3 x4 x1 x2 x4
f ( x1 , x2 , x3 , x4 ) x1 f x1 x1 f x1
f x1 f (0, x2 , x3 , x4 ) x2 x3 x2 x3 x2 x3 x4 x2 x3 x2 x3
f x1 f (1, x2 , x3 , x4 ) x2 x3 x2 x3 x4 x2 x4
En la Figura 7.43 se muestra que, en este caso, la función cofactor f x , depende de dos variables.
1
x1
0 Lut 3 Lut 3 f
x2
x3 f x1
Lut 3
x4 f x1
Luego viene una fase de compilación y simulación funcional del diseño, en la que pueden
corregirse errores. Puede verificarse el diseño lógico y el flujo de los datos.
Posteriormente se efectúa el mapeo tecnológico que implementa las ecuaciones con los
elementos lógicos disponibles. En esta fase además de especificar las localizaciones que se
emplearán también se efectúa los enrutamientos y conexiones entre los bloques lógicos (Place
and route).
En algunas herramientas CAD, una vez verificado un diseño basado en FPGA y evaluado
experimentalmente, puede migrarse el diseño a dispositivos ASIC; en los cuales se eliminan
todos los circuitos de configuración y programación, de esta forma se puede diseñar un circuito
integrado que opere a mayor velocidad y que consuma menos energía que el diseño basado en
FPGA.
Problemas resueltos.
Un mux puede expandirse, si es combinado con otra componente del mismo tipo. Por ejemplo,
puede formarse un MUX de 8 hacia 1, mediante dos MUX de 4 a 1 y uno de 2 vías a una.
I0 Mux 8:1
I1 4:1
I2 mux
I3 2:1
mux f
I4
I5 4:1
I6 mux
I7
C1 C0 C2
En forma alternativa se muestra un mux de 8 vías a una, implementado con cuatro mux de 2
vías a una, y un mux de 4 vías a una. Ambos diseños difieren en el número de entradas.
C0 C2 C1
Con un mux de 8 vías a 1, pueden obtenerse las 256 funciones booleanas de 3 variables,
programando las entradas del mux con unos o ceros.
Si en las entradas de control del mux se aplican todas las variables de entrada menos una; y si se
aplican en las entradas del mux: la variable de entrada restante o su complemento o unos y
ceros, puede verse que con un mux de 4 vías a 1, pueden implementarse funciones booleanas de
3 variables, como se estudiará en el siguiente ejemplo.
Puede verse, en forma similar, que la señal x3 controla la presencia de los mintérminos 6 y 7 en
la función. Entonces se programa el multiplexor mediante: x3 = 1; x2 = z'; x1 = z'; x0 = z.
Nótese que la variable z se introduce en las entradas de datos del mux, y las variables x, e y
como entradas de control.
Con un diseño tradicional SSI se necesitan 2 pastillas: Cuatro compuertas NAND de fan-in 2, y
una compuerta OR de fan-in 4; el mux de 4 vías a una viene integrado en una sola pastilla.
Generalizando un mux de 8 vías a una, permite implementar todas las funciones de 4 variables.
Basta elegir tres variables como entradas de control, y la cuarta se emplea en las entradas de
datos.
1 0 0 0
D
I1 I3 I7 I5
1 1 0 1
C
0 1 1 0
B
Luego se identifican las funciones de D, como entradas de datos. En el mapa se identifican pares
de mintérminos asociados a un determinado valor de las entradas de control.
1 0
D 1
0 2
1 3
D' 4 8:1 MUX
D 5
D' 6
D' 7
C2 C1 C0
A B C
No siempre es conveniente diseñar con un mux. Por ejemplo, para la función de siete variables:
f x1 x2 x3 x4 x5 x6 x7
Se requiere un mux de 128 vías a 1, o bien uno de 64 vías a una. También pueden emplearse 3
mux de 4 vías a 1, como se muestra en el siguiente ejemplo.
X2 0 X4 0 X6 0
X3 1 X5 1 X7 1
E Mux E Mux E Mux
X1 0 4a1 0 0 4a1 0 0 4a1 f
1 1 1
2 2 2
0 3 0 3 0 3
f3 = X1 * X2 * X3 f2 = f3 * X4 * X5 f1 = f2 * X6 * X7
Nótese que en cada mux se utiliza solamente un mintérmino. Esto implica una mala utilización
de las capacidades de cada mux. Un diseño SSI, mucho más simple, conveniente y directo es:
X1
X2’
X3’
X4 f
X5’
X6
X7’
En este caso se requiere sólo una pastilla, ya que se dispone comercialmente de un NAND de 8
entradas. En la implementación se conecta una de las entradas a Vcc, para disponer de un
NAND de 7 entradas.
Se desea diseñar las siguientes tres funciones de cuatro variables (diseño multifunción),
empleando un decodificador 4: 16.
f1 = A' B' C D +A' B C' D + A B C D
f2 = A B C' D’ + A B C
f3 = (A' + B' + C' + D')
0 A'B'C'D'
1 A'B'C'D
2 A'B'CD' f1
3 A'B'CD
4 A'BC'D'
5 A'BC'D
6 A'BCD'
4:16 7 A'BCD
Enable = 1
DEC 8 AB'C'D' f2
9 AB'C'D
10 AB'CD'
11 AB'CD
12 ABC'D'
13 ABC'D
14 ABCD'
15 ABCD f3
A B C D
El primer decodificador genera, con E = 1, los grupos: AB, AB', A'B, A'B'.
Cada uno de los decodificadores 3:8, generan los ocho productos de la línea de entrada, con los
mintérminos de las variables CDE.
A’B’C’D’E’
0 0
1 1
2 2 AB’C’DE’
3 3
4 4
5 5
6 6
012 7 012 7
0
E=1 1 CDE
CDE
2
01 3
0 0 AB’C’D’E’
1 1
AB
2 2
3 3
4 4
5 5
6 6
012 7 012 7 AB’CDE
ABCDE
CDE CDE
V F
C1
V F V F
C2 C3
a b a c
b) Si analizando las variables, antes del ingresar al diagrama que se muestra, se conoce que la
acción c nunca se realizará, determinar las condiciones para que se realicen las acciones a y b.
Solución.
a) Del diagrama se obtienen:
La acción a se realiza cuando la condición: C1C2 + C1’ C3 es verdadera.
La acción b se realiza cuando la condición: C1C2’ es verdadera.
La acción c se realiza cuando la condición: C1’C3’ es verdadera.
Existen seis soluciones, en las cuales cada acción está presente una vez:
V F V F
C3 C5 V F
C7
a V F b V F
C4 C6 c V F
C8
b c a c a b
V F V F
V F C11 C13
C9
V F c V F
a V F b C12 C14
C10
c b a
c b a
El siguiente mapa ilustra las condiciones para realizar las tres acciones: a, b y c, que son
mutuamente excluyentes, ya que cubren todo el mapa.
C1C2
C3 AB 00 01 11 10
0 2 6 4
0 1 1 1 1
1 3 7 5
1 1 1 1 1
a: C1C2 + C1’ C3
b: C1C2’
c: C1’C3’
C1C2
C3 00 01 11 10 V
C1’+C2
F
0 2 6 4
0 d d 1 1
1 3 7 5 a b
1 1 1 1 1
a: C1’ + C2
b: C1C2’
o bien:
Si el grupo de acciones alternativas que deben realizarse, están condicionadas por un reducido
número de mintérminos es conveniente emplear la sentencia switch, en lugar de sentencias
anidadas if-then-else.
Se tiene una PROM de 32*8[bits], como se muestra en el esquema del circuito U1. Se entrega el
mapa de memoria, tanto la dirección como el contenido se entregan en hexadecimal.
Solución.
Según el esquemático, A0 y O0 son los bits menos significativos de la dirección y el contenido
respectivamente.
Se dibuja un mapa para f2. Como el orden de las variables es (a, b, c, d) resultan los siguientes
mintérminos para f2: 4, 6, 7, 8, 10, 11.
b) Según el mapa:
a’bd’ es implicante primo esencial ya que es el único que contiene al mintérmino 4.
a’bc es implicante primo esencial ya que es el único que contiene al mintérmino 7.
ab’d’ es implicante primo esencial ya que es el único que contiene al mintérmino 8.
ab’c es implicante primo esencial ya que es el único que contiene al mintérmino 11.
c) El diseño como suma de productos es: f(a, b, c, d) = a’bd’ + a’bc + ab’d’ + ab’c
Y tiene un costo de 16 entradas (12 literales).
El diseño como producto de sumas es, se obtiene agrupando los ceros de f2.
Se obtiene: f(a, b, c, d) = (a +b)(a’ + b’)(c + d’), la cual tiene un costo de 9 entradas (6
literales), éste es el diseño mínimo.
Solución:
a) Se tiene la siguiente ecuación para el multiplexor:
f = c2c1c0 I7+ c2c1c0' I6 + c2c1'c0 I5 + c2c1'c0' I4 + c2'c1c0 I3 + c2'c1c0' I2 + c2'c1'c0 I1
+c2'c1'c0' I0
Simplificando, se logra:
f = abc + abc’ + ab’cd + a’b’c d’ + a’b’c’d
ab
cd 00 01 11 10
0 4 12 8
00 0 0 1 0
1 5 13 9
01 1 0 1 0
3 7 15 11
11 0 0 1 1
2 6 14 10
10 1 0 1 0
1 2 11 12 13 14 15
ab x x x x
acd x x
a’b’c’d x x
a’b’cd’ x x
Se tiene que el implicante ab es el mayor y único grupo que contiene a los mintérminos: 12, 13,
y 14, por lo tanto es esencial.
El implicante acd es el único que contiene al mintérmino 11, por lo tanto es esencial.
Los mintérminos 1 y 2 no pueden agruparse y por lo tanto son implicantes primos esenciales.
La función mínima debe contener a los cuatros implicantes primos esenciales. Lo cual justifica
el diseño de la parte a).
c) Para lograr la expresión lógica mínima para f como producto de sumas, debe agruparse los
ceros de la función f (o los unos de la función f ’, y luego complementar).
f1’(a, b, c, d) = a’b+a’cd+ab’c’+ab’d’+b’c’d’
f2’(a, b, c, d) = a’b+a’cd+ab’c’+ab’d’+a’c’d’
I0
I1
I2 Mux
I3 8:1
f = c2c1c0 I7+ c2c1c0' I6 + c2c1'c0 I5 + c2c1'c0' I4 + c2'c1c0 I3 +
I4 c2'c1c0' I2 + c2'c1'c0 I1 + c2'c1'c0' I0
I5 8:1
I6
I7 mu
x
C2C1C0
a b c
Figura P7.23. Mux Problema 7.11.
Indicar las diferentes soluciones, dependiendo de la elección del valor dado a las condiciones
superfluas.
Solución:
En la ecuación del multiplexor, reemplazando C2, C1 y C0 por a, b y c respectivamente, se
tiene:
f = abc I7+abc’I6+ab’c I5+ab’c’ I4+a’bcI3+a’bc’ I2+a’b’c I1+a’b’c’ I0
Para cada una de las entradas Ii podemos aplicar d, d’, 0 ó 1. Cada entrada permite incorporar
distintas combinaciones de dos mintérminos (uno o el otro, o ambos o ninguno).
Ubicando los mintérminos y las condiciones superfluas en un mapa de cuatro variables, donde
a, b y c, se han hecho equivalentes a C2, C1 y C0 respectivamente, se tiene:
C2C1
I2 I6
ab
C0v
cd 00 01 11 10
0 4 12 8
00 0 0 1 0 I4
I0
1 5 13 9
01 1 0
3 7 15 11
11 1 1 1
I5
I1
2 6 14 10
10 0 0 0 1
I3 I7
f(a, b, c, d)= m(1, 3, 10, 11, 12, 15)+ d( 5, 7, 13)
Figura P7.24. Mapa Problema 7.11.
Deben escogerse: I0 = d, I1 = d, I4 = 0, I5 = 1, I7 = d
Si d5 se escoge 0, entonces I2=0. Si d5 se escoge 1, entonces I2=d.
Si d7 se escoge 0, entonces I3=0. Si d7 se escoge 1, entonces I3=d.
Si d13 se escoge 0, entonces I6=d’. Si d13 se escoge 1, entonces I6=1.
C B A EN Y +---+--+---+
X X X H L D3 |1 +--+ 16| VCC
L L L L D0 D2 |2 15| D4
L L H L D1 D1 |3 14| D5
L H L L D2 D0 |4 74 13| D6
L H H L D3 Y |5 151 12| D7
H L L L D4 /Y |6 11| A
H L H L D5 /EN |7 10| B
H H L L D6 GND |8 9| C
H H H L D7 +----------+
Dibujar las formas de ondas en TP1 y TP2. Asumir para el dibujo que los circuitos no tienen
retardos de propagación. Indicar función que realiza el sistema.
V3
0V
TP2
V1
CP1 Q1 U1
CP2 Q2 74LS93
MR1 Q3
MR2 Q2 V2
CP0 Q1 0V
CP1 Q0
U3 TP1
74LS151
I7 E
I6 S2
I5 S1
I4 S0
I3
I2
I1 Y
I0 YN
Solución.
a) Con EN' (enable) alto se tiene la salida Y en bajo. Es decir con EN' = 0 se habilitan la salida
del mux.
En el manual TTL de TEXAS, la señal EN´se denomina S (strobe). Con S = 0 se habilita el
mux.
Es decir:
Y =( D0 C'B'A' +D1 C'B'A+D2 C'BA'+D3 C'BA+D4 CB'A'+D5 CB'A+D6 CBA'+D7 CBA) S'
En el mapa se empleó código Gray, y se tiene que cada columna corresponde a una
combinación de las señales de control del mux que activan una línea de datos de entrada. Para
generar dicho mapa con el mux se deben efectuar las conexiones indicadas, es decir: en D0 se
conecta la entrada w', en D1 se efectúa conexión a Vcc, etc.
f(w,A,B,C)=(C'B'A+CB'A)+(wC'B'A+wCB'A+wC'BA+wCBA)+(w'C'B'A'+ w'C'B'A+w'CB'A'+
w'CB'A)+(w'C'B'A'+w'C'BA')
y ordenando, queda:
f(w,A,B,C) = w'C'B'A'+ w'C'B'A'+ w'C'B'A+ wC'B'A+ C'B'A+w'C'BA'+ wC'BA+w'CB'A'+
w'CB'A+ wCB'A+CB'A+ wCBA
Comparando con la ecuación del mux vista en 1, se logra identificar las funciones asociadas a
los Di.
c) El contador genera la secuencia de valores 000, 001, 010, 011, 100, 101, 110, 111 que se
aplican a las entradas de control del mux (es un contador módulo 8 en binario). Cuando se
aplica en S0, S1 y S2 los valores 000, el mux saca en la salida Y el valor que esté conectado a
I0, que en el ejemplo es 0; luego saca I1 y así sucesivamente hasta sacar I7; y luego, la
secuencia se repite.
Se muestran las formas de ondas obtenidas con un simulador, la forma de onda TP1 muestra un
retardo de propagación relativa al canto de bajada de TP2; este retardo contempla el del
contador y del circuito combinacional del mux (se ilustra en el diagrama). Se ha destacado un
ciclo completo de la salida.
retardo
TP1
0 1 0 1 0 0 0 1
D0 D1 D2 D3 D4 D5 D6 D7
Determinar los valores con que deben programarse las entradas del mux para tener en la salida
la función f.
I7 1
I0 I6 0
I1
I5 1
I2 Mux
8:1 I4 0
I3
f (a, b, c, d) = ac + a’d’ I3 d’
I4
I5 I2 d’
I6 8:1 I1 d’
I7 C2mu
C1 C0 I0 d’
Solución.
x
a b c
Figura P7.27. Mux Problema 7.13.
Solución:
Se tiene:
f=c2c1c0 I7+c2c1c0' I6+c2c1'c0 I5+c2c1'c0' I4+c2'c1c0 I3+c2'c1c0' I2+c2'c1'c0 I1+c2'c1'c0' I0
Si se conectan las variables de entrada: a, b y c, según se indica en el diagrama, se tiene:
f = abc I7+ abc’ I6+ ab’c I5+ ab’c’ I4+ a’bcI3+ a’bc’ I2+ a’b’c I1+ a’b’c’ I0
Por otra parte pueden escribirse:
ac = abc + ab’c
a’d’= a’bd’+a’b’d’= a’bcd’+a’bc’d’+ a’b’cd’+a’b’c’d’
Es decir:
f (a, b, c, d) = ac + a’d’= abc + ab’c + a’bcd’ + a’bc’d’ + a’b’cd’ + a’b’c’d’
Comparando coeficientes, resultan:
I7 = 1; I6 = 0; I5 = 1; I4 = 0; I3 = d’; I2 = d’; I1 = d’; I0= d’
ab
cd 00 01 11 10
0 0 2 4 6 12 4 8 f (a, b, c, d) = m( 0, 2, 4, 6, 10, 11, 14, 15)
00 1 1
1 5 13 9 Se identifican los pares de mintérminos
01 controlados por las entradas al multiplexor.
f(a, b, c, d)
Figura P7.28 Mapa Problema 7.13.
Determinar el contenido de la EPROM, que implementa las funciones combinacionales: f0, f1, y
f2, en función de las entradas a, b, c, d.
Add0 a
Add1 b
Add2 c EPROM D0 = f0(a, b, c, d) = ac + a’d’
Add3 d
Add4 D1 = f1(a, b, c, d) = m( 0, 2, 14 ) + d(13 )
Add5
8:1 D2 = f2(a, b, c, d) = M(0, 2, 4, 12)
Add6
Add7 mu D3
x
Figura P7.29 EPROM Problema 7.14.
Solución:
En una memoria sólo se pueden escribir unos o ceros.
Como no existe función asociada a la línea de datos D3, esta columna debe llenarse con
cualquier secuencia de unos o ceros.
La función f2 establece los ceros de D2. También puede escribirse en función de los unos de f2,
según: f2(a, b, c, d) = m( 1, 3, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15)
Obtenidas las funciones deben escribirse las columnas de datos de la EPROM. Puede
considerarse que cada dirección está asociada a un mintérmino; el número del mintérmino
depende del ordenamiento dado a la función. En el caso propuesto, el orden es a, b, c, d; es
decir, a es la variable más significativa para la numeración decimal de los mintérminos. Se ha
colocado el número del mintérmino asociado a la tabla de contenidos versus direcciones.
Las líneas de dirección que no se empleen(add4, add5, add6 y add7) deben ser conectadas a
tierra.
Solución:
Pueden dibujarse los mapas para f0 y f1.
ab dc
cd 00 01 11 10 ab 00 01 11 10
0 4 12 8 0 4 12 8
00 1 1 00 1 1
1 5 13 9 1 5 13 9
01 01
3 7 15 11 3 7 15 11
11 1 11 1
2 6 14 10 2 6 14 10
10 1 10 1
f0(a,b,c,d) = a’bc’ + a’b’c + ab’c’d’ + abcd f1(a,b,c,d) = ac’d’ + a’cd’ + a’b’c’d + abcd
Para f2:
f2 = f0’ = (a + b’ + c)(a +b +c’)(a’ + b + c + d)(a’ + b’ + c’ + d’)
f2 = a’b’c’ + c’d’ + abc’ + a’bc + bcd’ + ab’c
ab
cd 00 01 11 10
0 4 12 8
00 1 1
1 5 13 9
01 1 1 1
3 7 15 11
11 1 1
2 6 14 10
10 1 1 1
c a d b f3 f0 f2 f1
dirección add3 add2 add1 add0 D3 D2 D1 D0
0 0 0 0 0 0 0 1 0
1 0 0 0 1 1 1 0 0
2 0 0 1 0 1 0 1 1
3 0 0 1 1 0 0 1 0
4 0 1 0 0 1 1 0 1
5 0 1 0 1 0 0 1 0
6 0 1 1 0 0 0 1 0
7 0 1 1 1 0 0 1 0
8 1 0 0 0 1 1 0 1
9 1 0 0 1 0 0 1 0
10 1 0 1 0 0 0 1 0
11 1 0 1 1 0 0 1 0
12 1 1 0 0 0 0 1 0
13 1 1 0 1 0 0 1 0
14 1 1 1 0 0 0 1 0
15 1 1 1 1 1 1 0 1
Se tiene que la función expresada como producto de sumas, considerando las condiciones
superfluas con valores iguales a uno es: f (a, b, c, d) = (a + c)(a’ + b + c + d)
Se tiene que la función mínima expresada como suma de productos, considerando las
condiciones superfluas con valores iguales a cero es: f (a, b, c, d) = abd + abc+ bcd + acd
Solución:
a) La primera proposición nos permite determinar los ceros de la función. La segunda determina
los unos de la función. Dibujando en un mapa, pueden encontrarse las condiciones superfluas de
f, como los mintérminos: 2, 3, 6, 9, 10, 12.
ab
cd 00 01 11 10
0 4 12 8
00 0 0 d 0
1 5 13 9
01 0 0 1 d
3 7 15 11
11 d 1 1 1
2 6 14 10
10 d d 1 d
0 1 4 5 8
a’c’ x x x x
c’d’ x x x
b’c’ x x x
a’b’ x x
b’d’ x x
c) Agrupando los unos de la función y considerando las condiciones superfluas, se obtienen los
siguientes implicantes primos: c, ab, ad. Confeccionando una tabla de implicantes (donde no
se anotan los superfluos), se obtiene que c es implicante primo esencial. Sólo resta cubrir al
mintérmino 13, lo cual puede lograrse de dos formas; eligiendo (ab) o (ad). Se tienen entonces,
dos soluciones:
7 11 13 14 15
c x x x x
ab x x x
ad x x x
f 1(a, b, c, d) = c + ab
f 2(a, b, c, d) = c + ad
Un sistema digital tiene cuatro entradas: a, b, c, d y una salida z, que debe colocarse alta cuando
se cumplan las siguientes condiciones:
i) Si la entrada, en binario, es múltiplo de 3 ó 7.
Solución:
a) El cero no se considera, con la definición dada, como múltiplo de 3 ó 7.
Condición i) = m(3, 6, 7, 9, 12, 14, 15)
# a b c d i) ii) iii) z
0 0 0 0 0 0 1 0 0
1 0 0 0 1 0 1 1 0
2 0 0 1 0 0 1 1 0
3 0 0 1 1 1 1 1 1
4 0 1 0 0 0 1 0 0
5 0 1 0 1 0 1 1 0
6 0 1 1 0 1 1 1 1
7 0 1 1 1 1 1 1 1
8 1 0 0 0 0 1 1 0
9 1 0 0 1 1 1 1 1
10 1 0 1 0 0 1 1 0
11 1 0 1 1 0 1 1 0
12 1 1 0 0 1 0 1 0
13 1 1 0 1 0 0 1 0
14 1 1 1 0 1 0 1 0
15 1 1 1 1 1 0 1 0
b) Condición ii)
a b’ = a’+ b’
= (a’ +b’)(c + c’)
= (a’ +b’ + c’)(a’ +b’ + c)(d +d’)
= (a’ + b’ + c’ + d) (a’ + b’ + c’ + d’) (a’ + b’ + c + d) (a’ + b’ + c + d’)
= M14 M15 M12 M13
= M(12,13,14,15).
c) Condición iii)
a’ (c +d) = a + c + d
Condición iii) = a +c +d
d) Cuando se cumplan las siguientes condiciones se interpreta como el and de las condiciones
i), ii) y iii).
ab
cd 00 01 11 10
0 4 12 8
00
1 5 13 9
01 1
3 7 15 11
11 1 1
2 6 14 10
10 1
z = m(3, 6, 7, 9)
C3
5 C1
C2
Se asume que las entradas ABCD representan un número binario, donde A es la cifra más
significativa.
A continuación se ilustran los siguientes símbolos ordenados de izquierda a derecha. El ubicado
más a la izquierda debe representar al número binario menor (dado por ABCD), y así
sucesivamente hasta el número binario mayor que pueda representarse.
Solución.
Se puede confeccionar la siguiente tabla de verdad:
Las salidas del sistema combinacional (las señales que controlan los LEDs) se consideran
condiciones superfluas para el primer renglón de la tabla, debido a que las entradas no pueden
estar todas en cero. Y como no pueden existir más de dos entradas altas, también se consideran
superfluos los mintérminos: 7, 11, 13, 14 y 15.
Luego se van llenando los valores de las señales C0, C1, C2 y C3, renglón por renglón,
considerando los segmentos que deben encenderse, de acuerdo al orden de los símbolos.
AB
A B C D C0 C1 C2 C3
CD 00 01 11 10
0 0 0 0 d d d d
0 0 0 1 1 1 0 4 12 8
00 d 1 1
0 0 1 0 1 1
0 0 1 1 1 1
0 1 0 0 1 1 1 5 13 9
0 1 0 1 1 1 1 01 d 1
0 1 1 0 1 1 1
0 1 1 1 d d d d 3 7 15 11
1 0 0 0 1 1 1 11 1 d d d
1 0 0 1 1 1 1
1 0 1 0 1 2 6 14 10
1 0 1 1 d d d d 10 1 d
1 1 0 0 1
1 1 0 1 d d d d
1 1 1 0 d d d d
1 1 1 1 d d d d C0=A'BD'+AB'C'+CD
AB AB
CD 00 01 11 10 CD 00 01 11 10
0 4 12 8 0 4 12 8
00 d 1 1 00 d
1 5 13 9 1 5 13 9
01 1 d 01 1 1 d 1
3 7 15 11 3 7 15 11
11 1 d d d 11 d d d
2 6 14 10 2 6 14 10
10 1 1 d 10 1 1 d 1
C1=AC'D'+BD+A'C C2=C'D+CD'
Figura P7.43 Mapas de C1 y C2.
AB
CD 00 01 11 10
0 4 12 8
00 d 1 1
1 5 13 9
01 1 1 d 1
3 7 15 11
11 d d d
2 6 14 10
10 d
C3=A'C'+ B'C'
Los implicantes primos de C1 son: AC'D', A'B'D', B'C'D', AB, A'C, BD, CD, BC.
BD debe estar presente ya que es esencial (el único que cubre al 3).
AC'D' cubre al 8 y 12. Igual cobertura se logra con mayor costo: B'C'D'+AB
A'C cubre al 2, 3 y 6. Mucho mayor costo para igual cobertura es: CD+BC+A'B'D
Los implicantes primos de C2 son: A'B'C', A'B'D', AD, BC, CD', C'D, BD
La única minimización razonable que se considera es: C'D+CD'
Ejercicios propuestos.
Ejercicio 7.1.
Ejercicio 7.2.
Ejercicio 7.3.
Ejercicio 7.4.
Índice general.
CAPÍTULO 7 ............................................................................................................................................. 1
SISTEMAS COMBINACIONALES ........................................................................................................ 1
7.1. COMPONENTES BÁSICOS. ................................................................................................................... 1
7.2. MULTIPLEXOR. MUX. ........................................................................................................................ 2
Ejemplo 7.1. ........................................................................................................................................ 4
7.3. TERCER ESTADO. ALTA IMPEDANCIA. .............................................................................................. 7
7.4. DECODIFICADORES. ........................................................................................................................... 8
Ejemplo 7.2 ......................................................................................................................................... 9
7.5. DEMULTIPLEXER, DISTRIBUIDOR. .................................................................................................... 10
7.6. PRIMITIVAS PROGRAMABLES ........................................................................................................... 13
7.6.1. Matriz de diodos ...................................................................................................................... 13
7.6.2. ROM ........................................................................................................................................ 15
7.6.3. PROM, EPROM. ..................................................................................................................... 16
7.6.4. Usos de PROM en circuitos combinacionales. ........................................................................ 17
a) Conversión de códigos. .............................................................................................................................. 17
Ejemplo 7.3. Conversión de BCD a exceso 3. .......................................................................................... 17
b) Generadores de funciones. ......................................................................................................................... 17
Ejemplo 7.4. .............................................................................................................................................. 18
c) Extensión. Estructura de memorias. .......................................................................................................... 18
Ejemplo 7.5 ............................................................................................................................................... 18
d) Descripción de archivos con código hexadecimal Intel. ............................................................................ 19
Ejemplo 7.6 ............................................................................................................................................... 20
7.6.5. PLA. Arreglos Lógicos Programables. .................................................................................... 21
Ejemplo 7.7. ................................................................................................................................................... 22
Detalle arreglo de AND. ................................................................................................................................ 23
Detalle arreglo OR. ........................................................................................................................................ 24
Diagrama simplificado PLA. ......................................................................................................................... 25
7.6.6. PAL arreglo lógico (de and) programable (Programable Array Logic). ................................ 27
7.6.7. PLD (Programable Logic Device). ......................................................................................... 28
7.6.8. Comparaciones entre dispositivos programables. .................................................................. 29
7.6.9. CPLD ( Complex Programable Logic Device). ....................................................................... 29
7.6.10. FPGA..................................................................................................................................... 29
Celdas basadas en multiplexores.................................................................................................................... 30
Celdas basadas en tablas de búsqueda. .......................................................................................................... 30
Ejemplo 7.8. ................................................................................................................................................... 31
Etapas o fases de diseño................................................................................................................................. 32
7.6.11. ASIC. ..................................................................................................................................... 33
PROBLEMAS RESUELTOS. ........................................................................................................................ 34
Problema 7.1. Expansión. Conexión cascada. .................................................................................. 34
Problema 7.2. Realización de funciones booleanas, mediante mux. ................................................. 34
Problema 7.3. Diseño de lógica combinacional empleando mux. ..................................................... 35
Problema 7.4. Diseño empleando mux de 8:1 ................................................................................... 37
Problema 7.5. Mal uso de muxs ........................................................................................................ 38
Problema 7.6. Diseño multifunción con decodificador. .................................................................... 38
Índice de figuras
Capítulo 8
Descomposición
En síntesis lógica es una actividad fundamental, ya que separa un sistema lógico de un número
elevado de entradas en un conjunto de subsistemas interconectados con un número menor de
variables de entrada.
La Figura 8.1, a la izquierda, muestra la descomposición paralela, que separa la red en varias
redes con menor número de entradas y salidas. La ubicada a la derecha ilustra la
descomposición en serie.
Xn f f(Xn)
g 0 ( x1 , x2 ,.., xn 1 ) f ( x1 , x2 ,.., xn 1 , 0)
g1 ( x1 , x2 ,.., xn 1 ) f ( x1 , x2 ,.., xn 1 ,1)
Podremos expresar:
f ( x1 , x2 ,.., xn 1 , xn ) F ( g 0 , g1 , xn )
Con:
F ( g0 , g1 , xn ) xn ' g 0 xn g1
g0
Xn-1 F(g0, g1, xn) f(Xn)
g1
xn
Donde: X n 1 x1 , x2 ,.., xn 1
g0 0
Xn-1 f(Xn)
g1 1
xn
Si se escribe la tabla de verdad de f como una matriz, similar a un mapa de Karnaugh, donde los
renglones representan los valores de xn, y las columnas asociadas a los valores de las
combinaciones del resto de las (n-1) variables, se tiene la Figura 8.5, la que representa una
función de 4 variables:
x3/x1x2 00 01 11 10
0 1 1 1
1 1 1
g0=x2’+x1’x3’
x3/x1x2 00 01 11 10
0 1 1
1 1
g1=x1x2+x2x3’
Resultando:
F ( g0 , g1 , x3 ) x3 ' g 0 x3 g1 x3 '( x2 ' x1 ' x3 ') x3 ( x1 x2 x2 x3 ')
Del mismo modo pueden disminuirse las entradas a las funciones auxiliares, generando
funciones con un número menor de variables de entrada. La Figura 8.8 muestra las funciones
cofactores cuando se han extraído las variables xn y xn-1.
g0
g1
Xn-2
g2 F(g0, g1, g2, g3, xn-1, xn) f(Xn)
g3
xn-1, xn
g 0 ( x1 , x2 ,.., xn 2 ) f ( x1 , x2 ,.., xn 2 , 0, 0)
g1 ( x1 , x2 ,.., xn 2 ) f ( x1 , x2 ,.., xn 2 , 0,1)
g 2 ( x1 , x2 ,.., xn 2 ) f ( x1 , x2 ,.., xn 2 ,1, 0)
g3 ( x1 , x2 ,.., xn 2 ) f ( x1 , x2 ,.., xn 2 ,1,1)
La cual puede ser implementada mediante un mux de 4 vías a una, según se muestra en la
Figura 8.9.
g0
0
g1 1
Xn-2 f(Xn)
g2 2
g3 3
xn-1, xn
Donde las funciones gi, se pueden minimizar empleando mapas de tres variables.
En 1952 Ashenhurst demuestra las condiciones en que una función f puede ser descompuesta
en la forma:
f ( x1 , x2 ,.., xn 1 , xn ) h( x1 , x2 ,..xk , g ( xk 1 , xk 2 ,.., xn ))
El módulo g debe poder ser implementado en un dispositivo en el cual se pueda programar una
función de (n-k) variables de entrada y una salida.
Si la función h tiene más de (n-k) entradas puede ser descompuesta de manera similar.
Generando una red multinivel con estructura de árbol. Si resultan en el proceso dos funciones
iguales, basta utilizar una instancia, y generar múltiples salidas de este bloque; en este caso la
estructura deja de ser de tipo árbol para convertirse en un grafo dirigido acíclico.
Xa g
h(g, Xl) f(Xn)
Xl
Si se dibuja la tabla de verdad, colocando en los renglones las combinaciones de los valores de
las variables libres, y en las columnas los valores de las combinaciones del conjunto acotado, se
tiene una matriz denominada de descomposición.
La condición para que pueda aplicarse la descomposición de Ashenhurst, es que las columnas
de este arreglo tengan a lo más dos valores diferentes. Uno de los valores de las columnas estará
asociado a g ( xk 1 , xk 2 ,.., xn ) 0 ; el otro a g ( xk 1 , xk 2 ,.., xn ) 1 .
Figura 8.12. Matriz de descomposición con dos columnas con valores diferentes.
Se tienen dos posibles elecciones para la función h, dependiendo de la columna que se asocie al
valor de g=0. La Figura 8.13 ilustra una de las elecciones posibles.
x1x2/g(x3,x4,x5) 0 1
00
01 1
10 1
11 1 1
h
Resulta, minimizando: h x1 x2 ( x1 x2 ) g
Si se elige la otra columna asociada al valor de g=0, resulta una función de igual costo, salvo
que aparece g’ en la expresión. Nótese que se efectúa una minimización o reducción de
columnas equivalentes.
x5/x3x4 00 01 11 10
0 1
1 1 1 1
g=x3x4+x3x5+x4x5
Debe notarse que tanto h como g pueden implementarse con bloques que tengan un número de
entradas acotado a 3. Si se efectúa el diseño con compuertas tradicionales, se obtiene un diseño
en cuatro niveles con 17 entradas.
f x1 x2 x1 x3 x4 x2 x3 x4 x1 x3 x5 x2 x3 x5 x1 x4 x5 x2 x4 x5
f x1 x2 ( x1 x2 )( x3 x4 x3 x5 x4 x5 )
Esta descomposición disjunta se basa en la mezcla de las columnas equivalentes con el objetivo
de remover las redundancias de la tabla de verdad de n variables.
Otra forma de encontrar las condiciones suficientes y necesarias para que exista la
descomposición de Ashenhurst es observar los renglones de la matriz, que representan las
combinaciones de valores que puede tomar el conjunto libre de variables de entrada.
Observando las Figuras 8.3 y 8.8, se puede generalizar el resultado para la extracción de k
variables, notando que la función f puede descomponerse en 2 k funciones gi ( X l ) , una por cada
renglón. Con m 2k el número de funciones auxiliares, se tiene:
g0
0
g1 1
Xa f(Xn)
… …
gm-1 2k-1
Xl
Pero como la descomposición de Ashenhurst sólo tiene una función g, las diferentes funciones
cofactores deben ser constantes (formadas por solamente ceros o unos), o poder ser expresadas
en términos de una sola función o su complemento.
Dicho de otro modo: no considerando los renglones formados por solamente ceros o unos, o
aquellos que son complementos de otros renglones, sólo puede existir un y solo un renglón
diferente, el cual estará asociado a la función g de la Figura 8.11.
Xa g C 1
f(Xn)
0 …
1 2k-1
Xl
h(g,Xl)
En el caso del ejemplo de la Figura 8.12, esto se cumple, ya que existe un solo renglón diferente
en la matriz, además de las constantes. En este ejemplo no existe un renglón que sea
complemento de otro. Observando la tabla de la Figura 8.12, la función h puede escribirse:
h x1 x2 ( x1 ' x2 x1 x2 ') g
La que minimizada en el espacio de las variables libres y g, tres variables en este caso, permite
obtener:
h x1 x2 ( x1 x2 ) g
Si lo que interesa es obtener todas las particiones posibles, aceptando que tanto las variables
acotadas como las libres puedan ser cero, se tendrá un número total de particiones igual a 2 n ,
ya que se tiene que:
Para el caso del ejemplo descrito en la tabla de la Figura 8.11, se tienen 10 particiones,
considerando que el número de variables del conjunto acotado es 3. Se enumeran a continuación
los conjuntos de los índices de las variables acotadas: {1, 2, 3}, {1, 2, 4}, {1, 2, 5}, {1, 3, 4},
{1, 3, 5}, {1, 4, 5}, {2, 3, 4}, {2, 3, 5}, {2, 4, 5}, {3, 4, 5}. En el ejemplo visto antes sólo se
analizó el último conjunto.
Pero no todas las particiones permiten obtener una descomposición disjunta de Ashenhurst.
La partición, en la cual las variables acotadas son x2x3x4, se muestra en la Figura 8.17, en la cual
hay 5 columnas diferentes, lo cual implica que no existe la descomposición de Ashenhurst. Lo
mismo puede concluirse al observar que existen cuatro renglones diferentes.
x1x5/ x2x3x4 000 001 010 011 100 101 110 111
00 1
01 1 1 1
10 1 1 1 1 1
11 1 1 1 1 1 1
Existen numerosas contribuciones para resolver estos problemas: Algunas basadas en grafos
coloreados, otras en cálculo con cubos, otras en diagramas de decisión binarios. Todas ellas
escapan a un curso introductorio de sistemas digitales.
Para el caso tratado antes de extracción de una variable, que se muestra en la Figura 8.3, se tiene
que k=1 y por lo tanto: (n-k)=n-1, este caso se denomina descomposición simple o trivial.
Interesa la situación en que los bloques gi tienen acotado el número de variables de entrada. El
esquema general de las funciones, con la notación introducida, se muestra en la Figura 8.18,
para el caso de dos funciones seriales.
g0
Xa F(g0, g1, Xl) f(Xn)
g1
Xl
Si se dibuja la tabla de verdad, colocando en los renglones las combinaciones de los valores de
las variables libres, y en las columnas los valores de las combinaciones del conjunto acotado, la
condición para que pueda aplicarse la descomposición de Curtis, con dos funciones auxiliares,
es que las columnas de este arreglo tengan a lo más cuatro valores diferentes. Las cuatro
columnas no redundantes quedarán asociadas a los siguientes valores:
g1 , g 0 00, 01,10,11
Las mezclas de las columnas equivalentes, permiten determinar las funciones auxiliares en
términos de las variables del conjunto acotado.
Nótese que en este caso el número de columnas equivalentes debe ser mayor que 2; ya que si
sólo fueran dos podría aplicarse la descomposición de Ashenhurst. Puede decirse que la
descomposición simple de Curtis, cuando sólo se tienen dos columnas diferentes, es la
descomposición de Ashenhurst.
El análisis de los renglones permite establecer que existe la descomposición de Curtis, con dos
funciones seriales, si se tienen dos renglones diferentes, una vez eliminados los renglones
constantes y los renglones que son el complemento de otros.
g1
Xa
… F(g0, g1, …, gm-1, Xl) f(Xn)
gm-1
Xl
Nótese que los bloques g, representan una codificación de las variables del conjunto acotado, y
existe compactación si: m < n-k.
A 0 1 2 3 4 5 6 7
L x4x5\x1x2x3 000 001 010 011 100 101 110 111
0 00 1 1 1 1
1 01 1 1 1
2 10 1 1
3 11 1 1 1 1 1
f(A, L)=f(x1,x2,x3,x4,x5)
f ( x1 , x2 , x3 , x4 , x5 ) f ( A, L)
El primer renglón de f, es una función de tres variables, que representa los mintérminos de ese
renglón, lo cual puede anotarse:
f ( A, L) f ( A, 0) p0 ( L) f ( A,1) p1 ( L) f ( A, 2) p2 ( L) f ( A,3) p3 ( L)
i 7
f ( A, L) f (i, L) pi ( A)
i 0
En un caso general de n variables, la expansión por columnas, resulta con c igual al número de
columnas de la matriz:
i c
f ( x1 , x2 ,..., xn ) f ( A, L) f (i, L) pi ( A)
i 0
En la Figura 8.21, se muestra una implementación con multiplexor, controlado por las variables
acotadas de la expansión. Notar que las entradas al mux son funciones de las variables libres,
que representan los unos presentes de la función en cada columna. Existe simplificación en la
descomposición si varias de estas funciones son iguales entre sí, o bien si unas son el
complemento de otras, o si son constantes. La generación de una entrada lógica uno o cero, no
requiere electrónica para ser implementada; si una función es el complemento de otra, basta un
inversor para generarla.
f(0,L)
0
f(1,L) 1
L ….. f(A,L)
.
f(i,L) i
…..
.
f(c,L) c
La expansión por renglones, para un caso general con r igual al número de renglones, resulta:
f(A,0)
0
f(A,1) 1
A ….. f(A,L)
.
f(A,i) i
…..
.
f(A,r) r
Estas representaciones son únicas, ya que en ambos casos se están representando los
mintérminos de la función f. En un caso se expande por columnas, en el otro por renglones.
i c i r
f ( x1 , x2 ,..., xn ) f (i, L) pi ( A) f ( A, i ) pi ( L)
i 0 i 0
Una vez introducida la notación, nos interesa descomponer f en las funciones g y h, según:
f ( A, L) h( g ( A), L)
A g
h( g(A), L) f(A,L)
L
El número de columnas debe ser una potencia de dos, si cg=4, entonces el bloque g tiene dos
salidas, que podemos denominar g1 y g0, las que serían las variables, cuyos mintérminos
identificarían a las columnas.
Si cg=2m, entonces g tiene m salidas. Que podemos denominar: g0, g1, …, gm. Este es el caso
general de la descomposición disjunta de Curtis.
f ( x1 , x2 ,..., xn ) f ( A, L) h( g ( A), L)
i c i cg
f (i, L) pi ( A) h( g i, L) pi ( g )
i 0 i 0
Si c es mayor que cg, por ejemplo 8, ya que tiene que ser una potencia de dos, existirán 8
columnas en f y 4 columnas en h. Esto implica tres variables acotadas.
Entonces se requiere que a lo más f tenga 4 columnas diferentes, incluidas los valores de
columnas con puros ceros o puros unos; los valores de esas columnas serán los valores de las
columnas de h. Existen 4! formas de escoger las columnas de h, a partir de las columnas
diferentes de f.
Si f tiene 3 columnas diferentes, una de las columnas de h puede escogerse con solamente
valores superfluos.
Si f tiene 5 columnas diferentes, no es posible satisfacer la igualdad, en este caso es preciso que
h tenga también 8 columnas, de las cuales 3 pueden ser fijadas en condiciones superfluas. Sin
embargo en este caso se requieren 3 funciones g, lo cual implica que h tendrá igual número de
entradas que la función f. Razón por la cual este caso no es de interés en descomposición.
Una vez seleccionadas las columnas de f que representarán a las de h, esta función puede
determinarse. Además la determinación de las funciones g puede realizarse con las siguientes
cuatro ecuaciones:
pi ( A) p0 ( g ) g1 ' g 0 '
i f ( i , L ) h (0, L )
pi ( A) p1 ( g ) g1 ' g 0
i f ( i , L ) h (1, L )
pi ( A) p2 ( g ) g1 g 0 '
i f ( i , L ) h (2, L )
pi ( A) p3 ( g ) g1 g 0
i f ( i , L ) h (3, L )
Las cuales permiten escribir las tablas de verdad de las funciones g1 y g0, en términos de las
variables acotadas, ya que los pi ( A) sólo dependen de las variables acotadas.
En la tabla de la Figura 8.20, se han agregado dos renglones que identifican la selección
realizada de las columnas de h, y los valores binarios correspondientes de las salidas g1 y g0.
g1g0 00 01 00 10 10 01 11 00
h(0,L) h(1,L) h(0,L) h(2,L) h(2,L) h(1,L) h(3,L) h(0,L)
A 0 1 2 3 4 5 6 7
L x4x5\x1x2x3 000 001 010 011 100 101 110 111
0 00 1 1 1 1
1 01 1 1 1
2 10 1 1
3 11 1 1 1 1 1
f(A, L)=h(g(A),L)
g1 g 0 pi ( A) p6 ( A) x1 x2 x3 '
i 6
g1g0 00 01 00 10 10 01 11 00
x1x2x3 000 001 010 011 100 101 110 111
Funciones que pueden ser minimizadas, redibujando las tablas de verdad como mapas de
Karnaugh.
x4x5\ g1g0 00 01 11 10
00 1 1
01 1 1
11 1 1 1
10 1
h(g, x4, x5)
x3\ x1 x2 00 01 11 10
0 00 00 11 10
1 01 10 00 01
g1g0
Resultan:
g1 ( x1 , x2 , x3 ) x1 x3 ' x1 ' x2 x3
g0 ( x1 , x2 , x3 ) x2 ' x3 x1 x2 x3 '
Cuando la tabla de verdad tiene condiciones superfluas se dice que dos columnas i, j son
compatibles si cada elemento en la columna i es igual al correspondiente elemento de j, o si el
elemento en i o en j no está especificado.
Dicho de otra forma: Dos columnas, Cr y Cs, son compatibles, si no existe un renglón i, para el
cual los correspondientes elementos Cir y Cis sean diferentes, cuando ambos están
especificados.
Un conjunto de columnas para el cual cada par de columnas son compatibles se denomina clase
compatible. Las clases compatibles que no son subconjuntos de otras clases compatibles se
denominan clases de compatibilidad máxima.
Finalmente se selecciona un subconjunto de mínima cardinalidad de las clases máximas, tal que
cada columna esté al menos en una de clases de compatibilidad máxima que se empleen.
8.4.1. Ejemplo.
ab/ cde 000 001 010 011 100 101 110 111
00 1 - 0 1 - 0 1 0
01 - - - - 1 1 - -
10 - 0 1 0 0 - 0 1
11 0 1 - - - - - -
C0 C1 C2 C3 C4 C5 C6 C7
f(a,b,c,d,e)
Como ejemplo, los siguientes pares son incompatibles: (C0, C1), (C0, C2), (C0, C5), (C0, C7).
Para formar las clases, es preciso disponer de los pares de columnas compatibles. En la
siguiente tabla de la Figura 8.30, en la primera columna se anotan los pares indicando los
índices de las columnas.
Para formar la segunda columna, se recorren los pares para detectar los tríos de columnas
compatibles entre sí. Por ejemplo se tienen los pares: (0,3), (0,4) y (3,4), entonces se forma el
trío de columnas compatibles entre sí: (0, 3, 4). En la Figura 8.30, no se muestran todos los
vínculos que permiten construir la segunda columna. Como se usan todos los pares al formar la
columna de tríos, no se tiene una clase máxima formada por dos columnas.
Luego de la columna de tríos se forma una clase compatible de cuatro columnas entre sí. De este
modo puede formarse la clase (0,3,4,6) ya que se tienen: (0,3,4), (0,3,6), (0,4,6) y (3,4,6). Se
procede de igual forma hasta que no se puedan generar clases con un número mayor de
columnas compatibles entre sí.
Nótese que en la tercera columna quedan dos clases con cuatro columnas compatibles entre sí, y
en la segunda quedan dos con tres columnas compatibles entre sí. Éstas son las clases de
compatibilidad máxima.
0,3
0,4
0,6 0,3,4
1,3 0,3,6
1,4 0,4,6
1,5 1,3,4 0,3,4,6
1,6 1,3,6 1,3,4,6
2,5 1,4,5
2,7 1,4,6
3,4 2,5,7
3,6 3,4,6
4,5
4,6
5,7
Ahora debe efectuarse una selección de las clases, de tal modo que cada una de las columnas
esté incluida en alguna de las clases seleccionadas. Por ejemplo, pueden escogerse las clases:
(0,3,4,6), (1,4,5), (2,5,7). Finalmente los elementos múltiples deben eliminarse, resultando las
siguientes clases: (0,3,4,6), (1,5), (2,7).
La mezcla de las columnas de cada clase, que en el caso del ejemplo son tres, se asocian a los
valores de las funciones seriales g1 y g0. Nótese que se agrega una columna con valores
superfluos, lo que permite un nivel adicional de minimización de la función: h(g1, g0, (a,b))
ab/ g1g0 00 01 10 11
00 1 0 0 -
01 1 1 - -
10 0 0 1 -
11 0 1 - -
C0,C3,C4,C6 C1,C5 C2,C7 -
h
Si A C son las variables acotadas y L C son las variables libres y C es no vacío se tiene
una descomposición no disjunta.
A
g
C
F f
El uso de mapas con variables repetidas, permite generalizar el caso de las descomposiciones
disjuntas al tratamiento de las no disjuntas.
El mapa con variables repetidas es incompletamente especificado aunque la función original sea
completamente especificada. Cada variable repetida crea un mapa de una dimensión mayor en el
cual las nuevas celdas introducidas son condiciones superfluas.
8.5.1. Ejemplo.
f(A, B, C, D)
f(A, B, C, D)
Entonces mezclando las columnas compatibles, puede verse que existe la descomposición de
Ashenhurst no disjunta.
cd\g 0 1
00 1 0
01 0 0
11 0 1
10 1 0
h=d’g’+cdg
La determinación de la función g, puede obtenerse considerando que g será uno cuando las
variables acotadas CAB toman las combinaciones: 011, 101, 111, 110, con el mapa:
c\ab 00 01 11 10
0 1
1 1 1 1
g=ab + ac+ bc
Evaluando el costo con compuertas elementales, resulta de 17 entradas y 5 niveles. Sin embargo
este cálculo no es relevante si las funciones g y h pueden implementarse en un bloque básico.
b) Diseño compactando renglones.
Eligiendo valores para las condiciones superfluas, pueden formarse dos renglones
complementarios
C1AB
C2D 000 001 011 010 100 101 111 110
0 4 12 8
00 1 1 0 1 1 0 0 0
1 5 13 9
01 0 0 0 0 - - - -
3 7 15 11
11 0 0 1 0 0 1 1 1
2 6 14 10
10 1 1 0 1 1 0 0 0
f(A, B, C, D)
La ecuación para la función sucesora, se obtiene con la ecuación del multiplexor gobernado por
las variables libres.
h= gc’d’+0c’d+ g’cd + gcd’
La cual puede ser minimizada:
h= cdg’+d’g
c\ab 00 01 11 10
0 1 1 1
1 1
g=a’b’ + a’c’+ b’c’
Factorizando con SIS, que emplea cálculo con cubos, se obtiene la red booleana:
g1 = ab, g2=a’+b’ h= d’g1’+cdg1+c’d’g2 con 16 entradas, 4 niveles
En caso de tener sistemas con múltiples salidas debe aplicarse la descomposición en paralelo.
En la descomposición paralela el conjunto de variables de salida f, es particionado en dos
subconjuntos fG y fH, y la función f en las funciones G y H correspondientes. De tal modo que
los conjuntos XG y XH, de variables de entrada a los bloques G y H respectivamente, contengan
menos variables que el conjunto X de variables de entrada a la función f.
X XG XH
f fG fH
Los sistemas computacionales de ayuda al diseño (CAD) que permiten la optimización de lógica
multinivel, modelan las ecuaciones mediante una red lógica booleana, que es una
generalización de un netlist o un esquemático basado en compuertas.
A x1
B
x2
C
D
La Figura 8.43 representa una red lógica booleana, en la cual las salidas de los bloques,
denominados vértices internos o nodos, son funciones booleanas. Es decir un netlist de
componentes conectadas, pero éstas pueden ser ahora funciones booleanas arbitrarias.
En un caso general puede suponerse que las entradas a la red, provienen de salidas de latchs o
flip-flops, que almacenan los valores de las variables; y que las salidas de la red son
almacenadas en registros.
A
x1
B
x2
C
D
Si las funciones de cada nodo se representan en forma suma de productos, el costo de la red
puede calcularse como la suma de los literales de cada nodo.
Se entiende por optimización multinivel al proceso de encontrar factores lógicos que sean
comunes, lo cual reduce el fan in pero aumenta el número de niveles. Luego debe mapearse
estas formas factorizadas en alguna de las formas que estén disponibles en una biblioteca.
8.7.2. Operaciones.
Eliminación de un nodo.
Se elimina un nodo interno mediante el reemplazo de la función que lo describe en todos los
nodos que éste alimenta. Se elimina un nodo de pequeño costo, el cual es absorbido por el
resto. También se denomina colapsamiento del nodo x. Esta operación disminuye el tiempo de
propagación de la red pero aumenta los costos de los nodos.
C S=x+C C S=A’+B+C
A
A
B
x=A’+B
B
T=xD A T=(A’+B)D
B
D D
Creación de un nodo.
Se agrega un nuevo vértice que contiene una subexpresión que es común a dos o más nodos;
luego la salida del nuevo nodo substituye el término común en los nodos.
Se disminuye el tamaño de algunos nodos, agregando un nodo factor; de este modo los nodos
resultantes son de costos menores.
Esta operación también se denomina extracción, ya que obtiene un factor que es común a varias
funciones. Esta operación aumenta el tiempo de propagación de la red pero disminuye los costos
de los nodos.
Encontrar métodos para obtener factores adecuados ha sido posible gracias al desarrollo de
nuevos conceptos teóricos: Para lograr disponer del operador división no se definen algunos
postulados del algebra de Boole, de este modo una expresión booleana se comporta como un
polinomio de números reales.
Específicamente no se definen: a+a’=1, aa’=0, aa=a, a+a=a, a+1=1, a+(b+c) =(a+b)(a+c).
Con esto podemos usar para expresiones las reglas algebraicas empleadas con reales. Nótese
que en este ambiente una variable y su complemento no tienen ninguna relación.
Simplificación.
Puede aplicarse un método de simplificación, del tipo minimización en forma de suma de
productos, a la función asociada a un nodo. Si no se eliminan variables se tiene una
minimización local; sin embargo si se elimina una o más variables, se dice que la simplificación
es global ya que cambia la red.
SIS
La forma de efectuar minimizaciones multinivel es a través de herramientas CAD de ayuda al
diseño. Éstas suelen venir incorporadas en el software provisto por los fabricantes de
dispositivos programables, o bien se producen en forma comercial. Por otra parte se puede usar
software libre como sis, que fue desarrollado por la Universidad de Berkeley. Ver Apéndice 6,
Las formas factorizadas no son únicas. La siguientes tres formas son equivalentes:
ab+c(a+b) bc+a(b+c) ac+b(a+c)
Una forma suma de productos es una forma factorizada pero seguramente no es una buena
factorización considerando el costo espacial.
Esto implica que una forma “bien” factorizada es bastante más compacta que la cobertura
mínima formada por la suma de implicantes primos.
La forma factorizada equivalente func2, tiene 10 literales y 6 niveles. Con 16 entradas en total.
En este diseño todas las compuertas son de dos entradas, salvo una que es de 4.
func2=(a+b)(c+d(e+f(g+h+i+j)))
A través de los ejemplos anteriores se comprueba que las formas factorizadas son útiles en la
reducción del costo de una red multinivel.
En diseños de funciones integradas CMOS, las redes de pull-up y pull down corresponden a la
forma factorizada de la función.
Problemas resueltos.
P8.1. Descomposición.
ab\cd 00 01 10 11
00 0 1 1 0
01 1 0 0 1
10 1 1 1 1
11 0 0 0 0
Luego se buscan columnas equivalentes. Se encuentran dos columnas diferentes, lo que implica
que la red tiene descomposición de Ashenhurst.
ab\g 0 1
00 0 1
01 1 0
10 1 1
11 0 0
h=ab’+b’g+a’bg’
P8.2. Factorización.
C’
D A
f
E’ B
F’
Luego se representan todas las compuertas, usando el símbolo de los NAND. El diseño se logra
empleando 5 compuertas nand y con 10 entradas. Debe notarse que este método asume que se
dispone de las entradas y sus complementos.
Ejercicios propuestos.
E8.1.
Efectuar la descomposición, si es posible, del problema P8.1, para los siguientes juegos de
variables libres: (a,c), (a,d), (b,c), (b,d) y (c,d). Comparando los resultados, y seleccionando la
mejor descomposición.
E8.2.
H. Allen Curtis, “Generalized Tree Circuit”, Lewis Research Center. NASA. 1961.
Índice general.
CAPÍTULO 8 ..............................................................................................................................................1
DESCOMPOSICIÓN .................................................................................................................................1
8.1. DESCOMPOSICIÓN TRIVIAL. TEOREMA DE SHANNON..........................................................................2
8.1.1. Extracción de una variable. .......................................................................................................2
8.1.2. Extracción de dos variables. ......................................................................................................4
8.2. DESCOMPOSICIÓN DE ASHENHURST. ..................................................................................................5
8.2.1. Compactando las columnas. ......................................................................................................6
8.2.2. Redundancia de renglones. ........................................................................................................8
8.2.3. Complejidad de la descomposición. ...........................................................................................9
8.3. DESCOMPOSICIÓN DE CURTIS. ..........................................................................................................10
8.3.1. Descomposición de Curtis, con dos funciones auxiliares. .......................................................11
8.3.2. Descomposición de Curtis, con m funciones auxiliares. ..........................................................12
8.3.3. Fundamentos. ...........................................................................................................................13
8.4. DESCOMPOSICIÓN DE FUNCIONES INCOMPLETAMENTE ESPECIFICADAS. ...........................................19
8.4.1. Ejemplo. ...................................................................................................................................20
8.5. DESCOMPOSICIONES NO DISJUNTAS. .................................................................................................22
8.5.1. Ejemplo. ...................................................................................................................................22
a) Diseño mezclando columnas. ..................................................................................................................... 23
b) Diseño compactando renglones. ................................................................................................................ 24
8.6. DESCOMPOSICIÓN PARALELA. ..........................................................................................................25
8.7. SÍNTESIS MULTINIVEL.......................................................................................................................25
8.7.1. Redes lógicas booleanas. .........................................................................................................25
8.7.2. Operaciones. ............................................................................................................................27
Eliminación de un nodo. ................................................................................................................................ 27
Creación de un nodo. ..................................................................................................................................... 27
Descomposición. ............................................................................................................................................ 28
Factorización. ................................................................................................................................................. 28
Simplificación. ............................................................................................................................................... 28
SIS.................................................................................................................................................................. 28
8.7.3. Formas factorizadas. ...............................................................................................................29
PROBLEMAS RESUELTOS. ........................................................................................................................30
P8.1. Descomposición. .......................................................................................................................30
P8.2. Factorización. ...........................................................................................................................31
EJERCICIOS PROPUESTOS. ........................................................................................................................32
E8.1. ...................................................................................................................................................32
E8.2. ...................................................................................................................................................32
REFERENCIAS. .........................................................................................................................................33
ÍNDICE GENERAL. ....................................................................................................................................34
ÍNDICE DE FIGURAS .................................................................................................................................35
Índice de figuras
Capítulo 9
Sistemas secuenciales
9.1. Definiciones
Evento
Se denomina evento al cambio de valor de una señal en un instante de tiempo. Pasar de nivel
lógico 1 a 0 se denomina canto de bajada. Un canto de subida se produce cuando la señal pasa
de nivel lógico 0 a 1.
A un evento también se lo denomina mensaje; en un caso más general cuando se tienen varias
señales, los valores que toman los eventos suelen interpretarse como símbolos pertenecientes a
un alfabeto.
Máquina abstracta.
Una máquina abstracta es un modelo de computación que establece cómo se generan las
acciones, o eventos de salida, a partir de los mensajes o eventos de entrada.
Mensajes Acciones
Máquina
Existen sistemas o máquinas que pueden cambiar sus atributos en función del tiempo, se
denominan dinámicos.
Estado.
Transición.
Se denomina transición al cambio de estado del sistema, y ésta debe indicar cómo se pasa de un
estado a otro.
Un modelo matemático adecuado para la función de transición es una matriz, en la cual los
renglones y columnas representan los diferentes estados internos y los eventos de entrada,
respectivamente. El contenido de la matriz especifica el próximo estado.
Diagrama de estados.
Es posible generar un autómata de estados finitos determinista que tenga las mismas salidas,
para iguales entradas, que uno no determinista.
Tipos de máquinas.
Existen varios tipos de máquinas. Se denominan de Mealy aquéllas cuyas salidas se producen
en las transiciones entre estados; y Moore a aquéllas en las cuales las salidas están asociadas al
estado. Existen procedimientos para convertir un modelo de Mealy en uno de Moore.
Un diagrama de la estructura interna de la máquina abstracta que se ilustra en la Figura 9.1, se
muestra en la Figura 9.2.
Y = FPE(x, y)
x FPE M FS
Y y z
Las funciones de próximo estado y de salida son funciones combinacionales. La Figura 9.2,
muestra un bloque de memoria M, que sostiene durante un tiempo el valor del estado presente y,
una vez calculado el próximo estado Y, éste se registra como el nuevo estado actual.
Reloj.
Máquinas secuenciales.
Las máquinas de estados finitos suelen denominarse máquinas secuenciales ya que a partir de
un estado inicial y de una secuencia ordenada de eventos de entrada, generan una secuencia de
estados por los que pasa la máquina, y a su vez una secuencia de acciones de salida.
Las máquinas secuenciales son un poderoso modelo para implementar esquemas de control
secuencial (dependientes de la historia pasada), tanto en hardware como en software. El modelo
Si la memoria está formada por un conjunto de flip-flops comandados por el mismo reloj, la
actualización del estado se produce en instantes sincronizados por el reloj. La Figura 9.3
muestra el diagrama general de Moore de una máquina secuencial sincrónica.
Reset’
x FPE M FS
Y y z
D Q
Clk
Si en la Figura 9.2, el bloque de memoria M, está formado por unidades de retardo se tiene un
modelo de representación de máquinas secuenciales asincrónicas.
Síntesis lógica.
Ejemplos de secuencias.
a) Sincrónica de nivel.
0 1 2 3 4 5 6 7 8 9 (valores de k)
t0
...
xn = { 0 1 0 0 1 1 0 1 0 0 ... }
Se dice que la señal xn es una secuencia sincrónica de niveles, con respecto a un reloj, ya que
ésta sólo cambia en cantos de bajada (o de subida) del reloj, y además permanece constante el
nivel de la señal entre cantos de bajada (o de subida) del reloj.
La Figura 9.5, muestra una secuencia sincronizada por los cantos de bajada del reloj.
b) Sincrónica de pulsos
reloj
xp = { 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, ... }
t0 t1 t2 t3 t4 t5
xa = { 0 1 0 1 0 1 ...}
t t t t t t t
0 1 2 3 4 5 6
Los valores que deben registrarse para recordar la situación, debida a los valores de las entradas
pasadas, se almacenan en variables de estado. Podemos considerar que las variables de estado
son salidas de elementos con memoria (flip-flops, registros, latches, retardos).
En cualquier instante, una máquina secuencial está en uno de un número finito de estados; éstos
quedan determinados por el valor de las variables de estado. Por ejemplo, si hay cuatro estados,
se requieren 2 variables de estado para registrar que el sistema se encuentra en uno de los cuatro
estados posibles: 00, 01, 10, 11.
Si se aplica una secuencia de entrada, la máquina generará una secuencia de salida, y pasará por
una secuencia de estados internos.
y j (k 1) = Y j (k )
La memoria debe ser capaz de almacenar los Yj (k) y sostener estos valores durante el intervalo
(k+1). Debe notarse que los valores y j (k 1) son estables, pero los valores Y j (k ) , en el
intervalo anterior, pueden presentar perturbaciones al inicio para estabilizarse hacia el final del
intervalo. En el intervalo k-ésimo, la entrada a la memoria j-ésima es Y j (k ) ; la salida de esa
memoria, en el mismo intervalo, es y j (k ) .
Y(k) y(k+1)
Y(k) y(k)
k k+1
Ecuaciones que indican que tanto la salida como el próximo estado dependen de la entrada y el
estado actual.
Para resolverla, es preciso conocer el valor del estado inicial y la secuencia de entrada a partir
del tiempo inicial.
Gráficamente:
y (0) y (1) y (2) y (3)
....... ..
x (0) x (1) x (2) x (3)
Para conocer y(1) se requiere conocer y(0) y x(0). Para conocer y(2) se requiere conocer y(1) y
x(1). Para conocer y(3) se requiere conocer y(2) y x(2). Y así sucesivamente.
y (k 1) = y (k )
Si el próximo estado es diferente al actual, se dice que habrá una transición o cambio de estado.
Ese estado actual se denomina inestable:
y(k 1) y (k )
Lo anterior implica que una de las variables de estado conmuta, o cambia, su valor lógico.
Los elementos de almacenamiento pueden ser simplemente líneas de realimentación, las que
tienen asociado un retardo entre la entrada y la salida, en este caso se tienen sistemas
secuenciales asincrónicos.
Se entiende por representación la descripción de cómo se pasa de un estado a otro, debido a los
cambios de las entradas. Las representaciones deben describir en forma precisa y completa a la
máquina. Además, deben ser adecuadas para una manipulación formal.
Es un modelo secuencial en el cual la salida está asociada a las transiciones entre estados. Las
salidas cambian instantáneamente con los cambios de las entradas; el cambio de estado, se
produce sincronizadamente con el reloj. El diagrama se muestra en la Figura 9.9.
Reset’
x z
M
FS
Y y
FPE DQ
Clk
i) Diagrama de estados
Un diagrama de estados es un grafo en el cual, los estados se representan mediante círculos, y
por líneas rotuladas y orientadas las transiciones. El rótulo indica la entrada y la salida que
provoca la transición. Se separan con una pequeña barra diagonal (slash, en inglés).
En general:
y2
x/z
y1
El diagrama anterior puede leerse: Estando en el estado y1 , cuando llega la entrada x se pasa al
estado y2 , con salida z.
Esquemáticamente:
x
y Y/z
Las representaciones son equivalentes, puede lograrse una a partir de la otra. Es decir, la matriz
de transiciones y el diagrama de estado suministran la misma información.
y Y y z
Modelo secuencial en el cual la salida sólo está asociada al estado presente. Las salidas y el
estado cambian sólo en los cantos de sincronización del reloj.
x(k) FPE M FS
Clk
i) Diagrama de estados
y2/z2
x
y1/z1
El diagrama anterior, puede leerse: Estando en estado y1 , con salida z1 ; cuando ocurre la entrada
x se pasa al estado y2 , con salida z2 .
La salida no cambia en la transición; por esta razón, las salidas se asocian a los estados.
ii) Tabla de transiciones x
y Y y z
El modelo de Mealy es más general que el de Moore. Este último es un caso particular del
primero.
Ejemplo 9.1
X
0 1
Estado
A D/0 C/1 Secuencia de Entrada ={0,1,1,0,1,0,1,1,0,0,0,...}
B B/1 A/0
Estado inicial = A
C C/1 D/0
D A/0 B/1
Próximo estado/z
Secuencia 0 1 2 3 4 5 6 7 8 9 10
Entrada 0 1 1 0 1 0 1 1 0 0 0
Estado actual A D B A D B B A C C C
Próximo estado D B A D B B A C C C C
Salida 0 1 0 0 1 1 0 1 1 1 1
x z
... ...
0123.. 012...
Se ingresa la secuencia de valores: x0, x1, x2,… y se genera la secuencia de valores de salida: z0,
z1, z2, ...
B D
0/1 1/1
Ejemplo 9.2.
0 1
1 0
B/0
i 0 1 2 3 4 5
Entrada 0 0 0 1 1 1
Estado presente C B A A B C
Estado próximo B A A B C A
Salida 0 0 1 1 0 0
Las máquinas de Moore suelen emplearse como reconocedores de secuencias. Es decir, que
entreguen una salida cuando ocurre una determinada secuencia en la entrada.
Pueden obtenerse la tabla de transiciones y la tabla con la lógica de salida, a partir del diagrama
de estados:
Ejemplo 9.3.
1
reset
0
Moore 0 1 2 3 4 5
Entrada 0 1 1 0 1 1
Estado presente Inicio Inicio Est0 Est1 Est2 Est0
Estado próximo Inicio Est0 Est1 Est2 Est0 Est1
Salida 0 0 0 0 1 0
1/0 1/0
0/0 1/0
0/1
reset
Figura 9.24 Diagrama de Mealy Ejemplo 9.3.
Mealy 0 1 2 3 4 5
Entrada 0 1 1 0 1 1
Estado presente Inicio Inicio Est0 Est1 Inicio Est0
Estado próximo Inicio Est0 Est1 Inicio Est0 Est1
Salida 0 0 0 1 0 0
En general los modelos de Mealy pueden generar las mismas secuencias de salidas que una
máquina de Moore, pero con menos estados. Nótese que las salidas de Mealy ocurren un
intervalo de tiempo antes que las de Moore.
En las máquinas de Mealy, las salidas z pueden cambiar inmediatamente cuando ocurre un
cambio en las entradas, y éstas pueden cambiar entre pulsos del reloj. Si esto no se desea,
pueden sincronizarse las salidas asincrónicas, de una máquina de Mealy, pasándolas por un flip-
flop. Esto se muestra en la Figura 9.24b, donde la salida zr , tiene sus cambios sincronizados por
el reloj. Esto aumenta el número de flip-flops requeridos para la implementación y además se
posterga la salida hasta el próximo canto del reloj. Ver Capítulo 11.9.
Clk
x(k) zr(k)
M
FS
y(k+1) y(k)
FPE DQ
Clk
Ejemplo 9.4.
Los siguientes diagramas ilustran la diferencia entre el número de estados, requeridos para cada
uno de los modelos de máquina, para un detector de la secuencia de dos unos seguidos, cada vez
que ésta se presente.
reset
0 reset
S0/0
0/0
S0
0 1
0/0 1/0
S1/0 0
S1
1
1
S2/1 1/1
Supongamos que disponemos de una lavadora, que externamente tiene tres botones: Encender,
Detener, Lavar; de un indicador luminoso L, y de un interruptor ubicado en la puerta.
La Figura 9.26 ilustra un esquema de los controles e indicadores de la máquina lavadora.
puerta
Estando apagada, el evento encender dispara una transición al estado detenida (o encendida).
Estando en el estado detenida, la ocurrencia del evento lavar produce la transición al estado
lavando.
Si está lavando, la presión del botón detener gatilla la conmutación al estado detenida.
Al producirse el evento abrir la puerta, la lavadora debe pasar al estado apagada.
La luz L debe encenderse cuando hay potencia aplicada a la lavadora. Es decir, desde que se
pasa de apagada a encendida y mantenerse iluminada hasta que se abra la puerta, cuando se pasa
a apagada.
Los eventos producen cambios de estado. Cada transición o cambio de estado, está asociada a
un (y sólo un) evento. Un evento puede desencadenar varias transiciones, en el ejemplo, la
entrada o evento puerta produce dos transiciones, dependiendo del estado en que se encuentra la
lavadora.
La única acción de salida L se ilustra asociada a las transiciones (Mealy). También es posible
asociarla a los estados (Moore): la luz L debe estar encendida mientras la lavadora esté
encendida o lavando; debe apagarse cuando esté en el estado apagada.
Encender/ L Lavar/ L
Puerta/ L’ Detener/ L
Puerta/ L’
Sub-máquinas.
La descripción de la lavadora puede seguir especificándose con mayor detalle, si se define con
mayor precisión el estado lavando. Esto significa observar señales internas de la lavadora.
Si se define el evento rotar, que produce que el motor de una vuelta, y de la señal de salida giro
(G=1 a la izquierda, y G=0 a la derecha) y se define que el proceso de lavar sea dar dos vueltas
a la izquierda seguidas por dos vueltas a la derecha, en el diagrama aparecen cuatro nuevos
estados para describir el estado lavando.
Apagada
Puerta/ L’ Encender/ L
Puerta/ L’
Puerta/ L’
Encendida
Lavar/ L Detener/ L
Rotar
Izquierda/ G Derecha 1/ G’
Puerta/ L’ Puerta/ L’
Rotar Rotar
Izquierda 1/ G Derecha/ G’
Rotar
a) En el diagrama de Mealy deben separarse aquellos estados, para los cuáles existan
transiciones con diferentes valores de salida, para igual entrada:
x/0
x/0 Sa0
Sa
x/1 Sa1
x/1
Figura 9.29. Separación de estados.
Luego cada estado tendrá sólo un valor de salida asociado, y se transforma a representación de
Moore, según:
x Sa0/0
Sa1/1
x
b) Una vez agotado el paso a), para el estado inicial pueden presentarse dos casos:
b1) Estado inicial con salida 0. No requiere modificación.
reset S/0
S/1
reset
En este caso debería haber salida, sin haber aplicado una entrada. Se corrige agregando un
estado adicional:
S/1
Si/0
reset
reset
reset 0/0
S0
0/0
S0
0/0 1/0
reset
0/0
S0
0/0 1/0
S10 0/0
1/1
1/1
S11
reset
0
S0/0
0 1
S10/0 0
1
1
S11/1
0
reset entrada estado próximo salida
actual estado
B/0 1 D/1 1 - A - 0
0 0 A B 0
0 0 1 A C 0
0
reset 0 0 B B 0
A/0 0 1 B D 0
1 0
0 0 C E 0
1 0 1 C C 0
1
0 0 D E 1
C/0 E/1 0 1 D C 1
0
0 0 E B 1
0 1 E D 1
1
0/0
reset entrada Estado próximo salida
B actual estado
0/0 1 - A - -
0 0 A B 0
reset 0 1 A C 0
A 0/1 1/1
0 0 B B 0
0 1 B C 1
1/0
0 0 C B 1
C 0 1 C C 0
1/0
Si bien existen innumerables formas que pueden tomar los diagramas de estados, pueden
describirse algunos tipos que se presentan frecuentemente.
Máquinas que analizan secuencias de largo fijo con un recorrido fijo. Por ejemplo:
adquirir 5 valores de la secuencia y tomar una acción, de acuerdo a los valores.
Máquinas que analizan secuencias de largo fijo con un recorrido fijo, con reintento en
caso de falla. Si una subsecuencia no es correcta, vuelven al estado inicial; o a un estado
previo.
Reconocedores continuos. Se genera una salida cada vez que se detecta una secuencia
dada. En estas máquinas, cada estado recuerda una secuencia previa de la entrada. En
este caso, se habla de estado inicial sólo cuando la máquina comienza a funcionar.
Nuestro lenguaje común suele ser impreciso y a veces redundante. Por esta razón es conveniente
emplear las construcciones estructuradas de los lenguajes de programación. Ver Apéndice 5,
sobre Uso de Verilog.
En general, el paso de una descripción en lenguaje natural a la tabla de estados, se efectúa por
pasos tentativos, hasta asegurar que el modelo formal obtenido cumple las especificaciones
dadas.
x M.S. z
Tenemos que interpretar cuando se genera la salida. Como para cada valor i de la secuencia de
entrada debe existir un valor de la secuencia de salida; debemos decidir qué salida generar
cuando han llegado uno, dos o tres valores de la entrada. En estos casos asumiremos salida cero,
dejando salida uno si los cuatro bits no pertenecen al código BCD. El bit más significativo es el
primero.
Estado Inicial
0/0 1/0
b c
0/0 1/0 0/0 1/0
d e f g
0/0 1/0 0/0 1/0 0/0 1/0 0/0 1/0
h i j k l m n o
0/0 1/0 0/0 1/0 0/0 1/0 0/0 1/0 0/0 1/0 0/1 1/1 0/1 1/1 0/1 1/1
Cada estado representa una subsecuencia previa de la entrada. Por ejemplo, en el estado l se ha
recibido la secuencia 100. En el estado d se ha recibido 00.
Este primer diseño es muy sistemático; se forma un árbol de decisión. De cada estado, se pasa a
dos próximos con entrada cero y uno respectivamente.
Estos problemas no tienen una solución única. Puede encontrarse un diagrama de estados más
simple. Por ejemplo:
a
1/0
0/0
b e 1/0
/0 0/0
c f g
1/0
/0
/0
/0 /0
0/0
d h
/0 /1
Se emplea para indicar que con entrada cero o uno, se pasa al próximo estado. Este segundo
diagrama requiere tres flip-flops para representar los siete estados. El anterior requiere 4 flip-
flops para identificar 15 estados.
Existen procedimientos sistemáticos para encontrar estados equivalentes y removerlos de los
diagramas, esto se desarrolla en el Capítulo 12.
Se desea obtener el diagrama de estados de una máquina secuencial que produzca una salida alta
cada vez que se detecta la secuencia 0101 en la entrada; la salida debe ser cero en el resto de los
casos.
A partir de un estado inicial A, se plantea el diagrama para la secuencia que se desea reconocer:
A B C D
0/0 1/0 0/0
1/1
Luego, lo que resta es completar las transiciones que faltan. Desde cada estado deben salir dos
transiciones; en este caso, sólo hay una entrada, y ésta puede tomar valores 0 y 1.
Observaciones:
0/0
1/0 0/0
A B
B C D
0/0 1/0
1/1
0/0
Figura 9.43 Diagrama de estados completo del reconocedor continuo.
Diseñar máquina secuencial que reconozca con salida uno, cada vez que se presente en la
entrada, la secuencia de exactamente dos ceros, seguida de 10. En caso contrario debe generar
salida cero.
0/1
El diagrama completo:
1/0 0/0
E
1/0 0/0
0/0 1/0
1/0 A B C D
0/0
0/1
1/0
En este ejemplo se ilustra la importancia de darle un nombre simbólico adecuado a cada estado.
Si la entrada presente y las tres anteriores forman un código válido BCD, entonces la salida
permanece en 0; en caso contrario la salida debe ser uno.
Si asignamos el nombre del estado tal que éste sea la secuencia previa de 3 bits de la entrada,
para construir el diagrama basta obtener los estados próximos a cualquier estado.
Por ejemplo, a partir del 001, se llega a los estados 011 y 010, con entradas uno y cero
respectivamente.
001
1 0
011 010
Los dos últimos bits de 001, forman los dos primeros de 011 y 010.
De esta forma es sencillo plantear, el diagrama completo, que se muestra en la Figura 9.47.
000
1 0
1
001 100
0
0
010
1 1 0 0
101
1 1
011 110
0
1 0
111
Para completar el diagrama deben indicarse las salidas asociadas a las transiciones.
Las secuencias: 1010, 1011, 1100, 1101, 1110, 1111 son las que tienen asociada una salida uno.
La función de salida puede describirse por la siguiente tabla de verdad, y con ésta completar el
diagrama.
Estado x
0 1
000 0 0
001 0 0
010 0 0
011 0 0
100 0 0
101 1 1
110 1 1
111 1 1
z
0/0 1/0
1/0 0/0
1/1 B C
1/0 /0
/0
0/0
D E
1/0 /0
0/0
F G
Asumiendo que el estado inicial es el A, y observando cuando se produce la única salida con
valor 1, y que además después de cuatro transiciones se retorna al estado inicial: se obtiene que
analiza secuencias de largo cuatro. Si la secuencia es 1111 genera salida 1; en el resto de las
secuencias la salida es cero.
Problemas resueltos.
Se desea diseñar una máquina secuencial cuyo objetivo es permitir a la hormiga encontrar la
salida del laberinto.
La hormiga dispone de dos sensores en las antenas izquierda y derecha (I y D), que están en 1 si
la antena respectiva entra en contacto con las paredes del laberinto; y se colocan en cero si dejan
de estar en contacto. Son las entradas a la máquina de estados finitos.
La hormiga también dispone de tres señales de actuación, que son las salidas de la máquina, una
señal para avanzar hacia delante A; otra para doblar levemente hacia la izquierda DI; y otra para
doblar levemente hacia la derecha DD.
La estrategia para diseñar el cerebro de la hormiga es mantener la pared a la derecha de la
hormiga.
Para desarrollar el diagrama de estados, se elige emplear el modelo de Moore. Es decir, las
salidas estarán asociadas al estado.
Se definen los estados posibles, y en cada uno de éstos debe observarse los valores de las
entradas que llevan a otros estados. Debe notarse que se tienen cuatro combinaciones posibles
para los valores permitidos a las entradas, esto implica dibujar 4 transiciones a estados
próximos. Sin embargo es posible simplificar el diagrama rotulando las transiciones como una
expresión lógica de las entradas.
Ejemplos:
Si debe pasarse a cierto estado cuando cualesquiera de las antenas tocan una pared, la transición
puede rotularse ( I + D).
Para encontrar los estados debe analizarse las diversas situaciones en que se puede encontrar la
hormiga en su recorrido del laberinto. Observando las entradas, y las acciones que ésta puede
realizar, a continuación se plantean algunas de las situaciones:
C: Se acaba la pared:
Avanzar, doblando levemente a la derecha, hasta llegar a D:
H:Perdido:
Avanzar hasta tocar algo.
I+D I’ D
I’ D’ D
I’ D’ D
I’ D’
B C
(DD, A) (DD, A) D’
D’
Nótese que los estados E y G se tratan como si fuera un solo estado. En ambos se toca con la
antena izquierda, y el objetivo (local, para cumplir la estrategia) es dejar de tocar la pared.
El diagrama muestra que los estados B y C podrían tratarse como uno solo (son equivalentes).
Ya que tienen iguales salidas; y para iguales entradas, se pasa a igual estado próximo (más
adelante, en el Capítulo 12, se verán algoritmos para determinar estados equivalentes).
Si se funden los estados B y C se llega al siguiente diagrama, que representa el cerebro de la
hormiga:
I+D
L’ D’ D
I’ D’
I’ D’
B/C
D’ (DD,
A)
S0 S1 S2 S3 S4 S5 S6 S7
reset 0 0 0 0 0 0 0
[000] [001] [010] [011] [100] [101] [110] [111]
reset S0 0 S1 0 S2 0 S3 0 S4 0 S5 0 S6 0 S7
[000] [001] [010] [011] [100] [101] [110] [111]
1
1 1 1
1
1 1 1
Sean: entrada x y salida z. La salida se activa cada vez que se presenta la secuencia 010, y
mientras que la secuencia 100 no se haya presentado, en cuyo caso la salida se desactiva
permanentemente.
reset E0
[0]
0 1
E1 E4
[0] [0]
1 0
E2 E5
[0] [0]
0 0
E3 E6
0,1
[1] [0]
Si estando en E2 llega un uno, se tendrán dos unos seguidos, entonces debe pasarse al estado
E4.
Si estando en E5 llega un uno, se tendrá hasta ese momento, que los dos últimos de la secuencia
son 01, entonces debe pasarse al estado E2.
reset E0
[0]
0 1
E1 E4
0 1
[0] [0]
...0 ...1
1 0
1
E2 1 E5
...10
[0] [0]
...01
0 1 0
E3 E6
0, 1
[1] [0]
...010 ...100
Problema 9.4. Diseñar el control de una máquina de lavar ropa. Uso de temporizadores.
Entradas Salidas
Descripción Variable Descripción Variable
Botón de Partida SP Dispensador mediano AM
Sensor carga mediana SM Dispensador Grande AG
Sensor carga grande SG Actuador lavado AL
Sensor salida sucia SS Actuador enjuague AE
Sensor descarga salida SD Actuador centrífuga AC
Timeout 60 min O60 Inicio timer 60 min I60
Timeout 10 min O10 Inicio timer 10 min I10
reset
Enjuage Centrífuga
O10’ / AE
O10&SS’ # O60 / I10 1
O10’&SD / AC
Determinar el diagrama de estados de una máquina secuencial (Modelo de Mealy) que produce
una salida alta cada vez que se detecta la secuencia 0101 en la entrada; y salida cero en el resto
de los casos. Determinar la secuencia de salida y de estados para la siguiente secuencia de
entrada: 010110011…
Solución.
1/0
0/0
1/0 0/0
A B
B C D
0/0 1/0
1/1
0/0
Entrada 0 1 0 1 1 0 0 1 1 ....
Salida 0 0 0 1 0 0 0 0 0 ....
Pxo. Estado B C D C A B B C A ….
z1 0 1 1 0 1 0
z2 1 1 1 1 0 1
z1 0 1 1 0 0 1
z2 1 1 0 1 1 1
Solución:
a) Una posible solución es elegir la secuencia de x = 1 para asignar los nombres a los estados y
a partir de esta asignación completar la matriz de transición de tal manera que se cumpla con la
secuencia para x = 0.
En ambas secuencias las salidas pasan por seis estados, teniendo estados con iguales salidas las
soluciones pueden ser combinaciones de elecciones de estos estados, pero deben tenerse los seis
estados
Son posibles otras soluciones de acuerdo a la asignación de los nombres de los estados.
x 0 1 Salida z2z1
Estado Estado
A C B A 10
B A C B 11
C E D C 11
D B E D 10
E F F E 01
F D A F 10
0
A
1 10 1
F B
10 11
0
1
1 0
0
E C
01 11 0
0
1 D 1
10
Entrada Reset 0 0 0 1 1 0 0 1 0 -
Estado Actual - A C E F A B A C D B
Próximo Estado A C E F A B A C D B -
Salida (z2z1) 10 10 11 01 10 10 11 10 11 10 11
Para una máquina secuencial con dos entradas c1 y c0. A es el estado inicial.
Se tienen:
Con c1 = 0 y c0 = 0 el sistema recorre la siguiente secuencia periódica de estados: ABCD.
Con c1 = 1 y c0 = 1 el sistema recorre la siguiente secuencia periódica de estados: ADCB.
Con c1 = 1 y c0 = 0 el sistema recorre la siguiente secuencia periódica de estados: ADBC.
Con c1 = 0 y c0 = 1 el sistema recorre la siguiente secuencia periódica de estados: ABD. Y
si está en estado C, permanece en él.
a) Determinar la tabla o matriz de excitaciones.
b) Determinar la secuencia de estados para la siguiente secuencia de entradas:
c1 0 0 1 0 0 1
c0 0 0 0 1 1 1
Solución:
Se asume que al cambiar las entradas, mientras se genera una secuencia, se continúa con el
próximo estado de acuerdo a las entradas. Es decir no se retorna a un estado inicial.
reset A
0 0
C1C0
1 11
10
D B
10
11
11
00 0
C
01
01
a)
Entradas c1c0
Estado 00 01 11 10
A B B D D
B C D A C
C D C B A
D A A C B
Próximo estado
b)
c1 0 0 1 0 0 1 ..
c0 0 0 0 1 1 1 ..
Estado Actual A B C A B D C
Próximo estado B C A B D C
Se tiene una máquina secuencial de Moore, con una entrada x, y tres salidas: z1, z2 y z3.
Cada vez que se presenta la secuencia 01 en la entrada, las salidas toman valores:
z1=1, z2=0 y z3=0.
Cada vez que se presenta la secuencia 10 en la entrada, las salidas toman valores:
z1=0, z2=1 y z3=0.
Cuando se presenta la secuencia 00 en la entrada, vuelve al estado inicial, con salidas: z1=0,
z2=0 y z3=0; y desde allí reanuda el análisis de las secuencias; es decir, vuelve a comenzar.
Cuando se presenta la secuencia 11 en la entrada, permanece en el estado al cual llegó, con
salidas: z1=0, z2=0 y z3=1.
En el resto de los casos las salidas toman valores: z1=0, z2=0 y z3=0.
Determinar:
a) El diagrama de estados.
b) La tabla de transiciones entre estados.
c) Diseño de ecuaciones para las salidas, mediante un mapa de Karnaugh. Indicar el nombre
elegido para las variables de estado y los nombres binarios elegidos para los estados lógicos.
Solución.
El nombre _0 se usa para el estado al que pasa la máquina cuando ha llegado un cero, estando
en el inicial. Y _1 se usa para el estado al que pasa la máquina cuando ha llegado un uno,
estando en el inicial.
reset
x Estado z1 z2 z3
Estado 0 1 lógico
__
__ _0 _1 __ 0 0 0
0 000
1 _0 __ _1 _0 0 0 0
0 _1 10 11 _1 0 0 0
_0 _1 01 10 11 01 1 0 0
0 10 __ 01 10 0 1 0
000 000
11 11 11 11 0 0 1
1 0
0 Próximo Est.
01 10
100 010
1
1
11
1 001
Resultan:
Observaciones.
Estando en el estado inicial, cuando llega un uno o un cero, no pueden activarse las salidas z1,
z2 y z3. Ya que éstas reconocen las secuencias 01, 10 y 11 respectivamente; y no la presencia de
un cero o de un uno.
La frase: “Cuando se presenta...” es imperativa. Y tiene precedencia sobre las frases: “Cada vez
que se presente...”.
Por ejemplo, si llega la secuencia 001..., después de los dos ceros debe ir al estado inicial, y
volver a analizar. El estado inicial representa la situación en que aún no han llegado entradas, o
después de que llegó la secuencia 00.
Otro ejemplo, si llega la secuencia 1101...., va inmediatamente al estado 11, y no reconoce la
secuencia 01 que la sigue; tampoco debe reconocer la secuencia 10 que está también presente en
1101....
Con las especificaciones dadas, y la designación de los nombres dados antes, el diagrama queda
como sigue.
reset
No ha llegado nada
__
0 000 1
?
?
0
Llegó 00 1 0 Llegó 10
0
01 10
Llegó 01 100 010
1
11
1 001
Llegó 11
Para completar el diagrama hay que agregar estados adicionales, entre el inicial y los estados
denominados 01 y 10. Aparecen los estados _0 y _1.
Si desde el estado inicial, con entrada cero, fuera al estado 10, detectaría la secuencia 10 cuando
sólo ha llegado un cero.
z1 = Q1Q0’x
z2= Q1’Q0 x’
z3= Q1Q0 + Q0 x
Problema 9.9.
Si x es una entrada, se tienen las ecuaciones que programan tres flip-flops Ds.
D2 = Q2’Q1Q0’x, D1= Q2’Q0 + Q1Q0 + Q2’Q1x, D0 = Q2’x + Q1Q0x
Y las siguientes ecuaciones para las salidas: z1 = Q2’Q1Q0, z0 = Q2Q1Q0
En funcionamiento normal, un pulso en la entrada reset, deja al sistema en el estado binario 000.
Determinar:
a) Si la máquina es de Mealy o de Moore. En qué basa su respuesta.
b) Matriz de transiciones.
c) Diagrama de estados. Indicar los estados que no participan en el trabajo normal del sistema
secuencial.
d) Acciones que realiza la máquina de estados, considerando que el estado binario 000 es el
estado inicial.
e) Indicar secuencias de estado y de salida para la secuencia de entrada:
Número 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
secuencia
x 1 0 1 1 1 0 1 0 1 1 1 1 0 0 1 1 .
Estado actual 000
Z1
Z0
Solución:
a) Las salidas sólo dependen del estado. Puede aplicarse el modelo de Moore.
b) Matriz de transiciones.
Q2Q1Q0 x = 0 x = 1 Salidas
000 000 001 00
001 010 011 00
011 010 011 01
010 000 111 00
110 000 000 00
111 010 011 10
101 000 000 00
100 000 000 00
Q2+Q1+Q0+ z0z1
Figura P9.22. Matriz de transiciones Problema 9.9.
c) Diagrama de estados.
En funcionamiento normal no se pasa por los estados 110, 101 y 100.
No se puede llegar a ellos si la máquina parte en el estado inicial. Sin embargo están definidos
sus estados próximos como el estado inicial.
Q2Q1Q0 1 011
01
Z0Z1 1
reset
1 0
0 0
110 101 100
00 00 00
d) Acciones.
Reconoce la secuencia 101 cada vez que se presente, con salida z1=1 y z0 = 0.
Número 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
secuencia
x 1 0 1 1 1 0 1 0 1 1 1 1 0 0 1 1 .
Est. actual 000 001 010 111 011 011 010 111 010 111 011 011 011 010 000 001 011
Z0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0
Z1 0 0 0 0 1 1 0 0 0 0 1 1 1 0 0 0 1
Se tienen dos sensores i y d (izquierda y derecha) ubicados a cierta distancia sobre el suelo de
un pasillo y cuyo objetivo es detectar la dirección del paso de personas por el pasillo.
Estando la persona ubicada en la zona izquierda, con ambos sensores en cero, si la persona
avanza hacia la derecha y llega a la zona donde nuevamente ambos sensores son cero, debe
indicarse con la señal z1 =1.
Estando la persona ubicada en la zona derecha, con ambos sensores en cero, si la persona
avanza hacia la izquierda y llega a la zona donde nuevamente ambos sensores son cero, debe
indicarse con la señal z0 =1.
En el resto de los casos, las salidas deben ser ceros.
Las personas pueden quedarse detenidas o retroceder, pero sólo deben generarse las salidas
cuando se cumplen las condiciones anteriores.
Se ilustran los valores de los sensores cuando un objeto ocupa total o parcialmente las zonas
indicadas. Hacia la extrema izquierda y derecha los sensores marcan cero.
i d
11
10 01 id
00 00
Determinar el diagrama de estados (modelo de Mealy) que modela el sistema. Indicar el estado
inicial, y la señal de reset.
Solución.
Todas las salidas son cero, excepto las de los estados F y G, con entradas 00.
De cada estado deben especificarse las transiciones que físicamente son permitidas. Por ejemplo
estando en el estado A, no puede presentarse el evento de que ambas entradas estén un uno. Si
por ejemplo la persona está ubicada en la zona con los dos sensores activos, es decir en los
estados D y E, las transiciones que deben especificarse son las correspondientes a las
combinaciones 11, 01 y 10 de las entradas; no puede presentarse, en esta situación, el evento de
que ambas entradas estén en cero.
00
A
10 01
00 00
10 B C 01
10 01
11 11
00/10 00/01
11 D E 11
01 10
11 11
01 F G 10
clk
reset
x
z
y
f) Secuencias de valores de la entrada y las salidas. Debe inspeccionarse los niveles en el canto
de subida del reloj de las señales x, z, y. Existe un valor por cada canto de subida del reloj. Se
logran:
entrada x 0010101001011011010010100
salida z 0001010100000000001000000
salida y 0000000011100000000111111
2. Diagrama de estados. Se activa z cada vez que llega la secuencia 010 en la entrada y mientras
no llegue la secuencia 100. Cuando llega esta última se activa la salida y, y la máquina
permanece en ese estado.
Se forman los reconocedores de 010 y 100. Y se establecen las salidas asociadas al estado 3 y 6,
con z=1 e y=1 respectivamente.
Luego se completan las transiciones para cumplir generar salida z=1 para cada vez que se
presente la secuencia 010.
Luego se completan las transiciones para recocer la secuencia 100, apenas se presente.
Finalmente se completa las transiciones para permanecer en el estado 6 con salida y = 1.
reset
Si/
x= S0/00
1
0 0
/yz
S1/0 S4/00
0 1
1
1 0
S2/00 S5/00
1
1 0 0
S3/01 S6/10
0
Diagrama de Mealy:
reset
Si
S0
x /yz 1/0
0/00 0/00 00
S1 S4
1/00
1/00
1/00 0/0
0
S2 S5
1/00
1/00 0/01 0/10
/10
S3 S6
0/10
S3 y S5 son equivalentes, ya que las transiciones que salen de S5, para iguales valores de las
entradas van con las mismas salidas a iguales estados próximos. Eliminando S5 se logra:
reset
Si
S0
x /yz 1/0
0/00 0/00 00
S1 S4
1/00
1/00
1/00
S2
0/0
0
1/00 0/01
/10
S3 S6
0/10
G. H. Mealy. A method for synthesizing sequential circuits, Bell System Technical Journal 34
(1955), 1045-1079.
Índice general.
CAPÍTULO 9 ..............................................................................................................................................1
SISTEMAS SECUENCIALES ..................................................................................................................1
9.1. DEFINICIONES ....................................................................................................................................1
Evento ..................................................................................................................................................1
Máquina abstracta. ..............................................................................................................................1
Estado. .................................................................................................................................................1
Máquinas de estados. ...........................................................................................................................2
Transición. ...........................................................................................................................................2
Diagrama de estados. ..........................................................................................................................2
Autómata de estados finitos determinista.............................................................................................2
Tipos de máquinas. ..............................................................................................................................2
Reloj. ....................................................................................................................................................3
Máquinas secuenciales. .......................................................................................................................3
Máquinas secuenciales sincrónicas. ....................................................................................................4
Síntesis lógica. .....................................................................................................................................4
9.2. SECUENCIAS. ......................................................................................................................................5
Ejemplos de secuencias. .......................................................................................................................5
a) Sincrónica de nivel. ...................................................................................................................................... 5
b) Sincrónica de pulsos .................................................................................................................................... 6
c) Asincrónica de nivel .................................................................................................................................... 6
d) Asincrónica de pulsos. ................................................................................................................................. 6
9.3. MODELO SECUENCIAL ........................................................................................................................6
9.4. REPRESENTACIÓN DE MÁQUINAS SECUENCIALES ...............................................................................9
9.4.1. Modelo de Mealy ........................................................................................................................9
i) Diagrama de estados ..................................................................................................................................... 9
ii) Tabla de transición de estados ................................................................................................................... 10
9.4.2. Modelo de Moore .....................................................................................................................10
i) Diagrama de estados ............................................................................................................................. 11
ii) Tabla de transiciones ................................................................................................................................. 11
Ejemplo 9.1 ........................................................................................................................................12
Ejemplo 9.2. .......................................................................................................................................13
Ejemplo 9.3. .......................................................................................................................................14
Algunas observaciones sobre las representaciones: ....................................................................................... 15
Ejemplo 9.4. .......................................................................................................................................16
Ejemplo 9.5. Modelado de diagrama de estados. Lavadora. .............................................................17
9.4.3. Transformación de Mealy a Moore. ........................................................................................19
Índice de figuras
Capítulo 10
Este tipo de memoria se denomina flip-flop, y se tienen tres tipos, denominados: JK, T y D.
Todos ellos operan con una señal periódica, denominada reloj.
10.1. Reloj
Los cambios de estado ocurren solamente en determinados instantes de tiempo; esos instantes
están sincronizados con el reloj.
En algunos casos se emplea el canto de subida del reloj para marcar los instantes de cambio; en
otros, se emplea el canto de bajada. El canto que define el instante de tiempo es el evento
sincronizante.
En los flip-flops disparados por cantos, se requiere una determinada pendiente para el reloj; no
importando el ancho. En general, el tiempo que la señal está en cero es mucho mayor que el
intervalo en que el reloj está alto. Se define el ciclo de trabajo de la señal periódica de un reloj,
como el porcentaje del tiempo que la señal está alta entre cantos de sincronización. Si la señal es
cuadrada el ciclo de trabajo es igual al 50%.
tsu th
th
tsu
clock
Los fabricantes especifican el valor promedio y de peor caso para los tiempos de preparación
(set-up) y de sostenimiento (hold), durante los cuales las entradas no pueden cambiar.
Desde un punto de vista lógico, podemos pensar que el reloj es un tren de impulsos.
t t t ...
0 1 2
Entonces: v(k) define una secuencia de valores sincrónicos con el reloj. Existe una
correspondencia biunívoca, entre { 0, 1, 2, 3, ...., k, ....} y { vo, v1, v2, ...., vk, .... }.
Existen dos tipos de señales sincrónicas. Las de niveles sincrónicos se caracterizan porque los
valores de la secuencia permanecen constantes entre pulsos del reloj, y sólo cambian con los
cantos de subida o bajada del reloj.
En secuencias sincrónicas de pulsos, solamente hay valores de la secuencia, durante los pulsos
del reloj.
Reloj
Sincrónica
nivel
Sincrónica
pulsos
10.3. Flip-flop JK
S R S’ R’
J Q J Q
datos salida datos salida
K K
reloj reloj
Las señales S y R son set y reset asincrónicos, y se verán después, en el Capítulo 14. El
diagrama de la izquierda ilustra un flip-flop que opera con cantos de bajada del reloj, se utiliza
un pequeño triángulo para mostrar que el flip-flop está sincronizado, o es disparado por cantos.
Si es disparado por cantos de bajada, se dibuja un pequeño círculo en la base del triángulo.
Cuando es sincronizado por un pulso (master slave), en lugar del triángulo se dibuja un pulso,
como se muestra en la Figura 10.8.
J Q
datos salida
K
reloj
Figura 10.8. Flip-flop master slave.
Se suele proveer dos salidas complementarias. Esto implica que internamente se almacenan dos
bits; como se verá más adelante, esto requiere tener dos variables de estado internas. Desde un
punto de vista externo, sólo basta especificar las secuencias de las entradas para tener
transiciones del estado Q= 0, al estado Q = 1 y viceversa.
1
0
0
JK = 11, 10
01, 11
1
Figura 10.9. Diagrama de estados Flip-flop JK.
El par de entradas asociada a cada transición puede anotarse empleando notación de bit
superfluo ; es decir, su ocurrencia indica que esa posición puede ser 0 ó 1. Ejemplo de esto es
el par: {01, 11} que se puede anotar: 1.
Existen diferentes formas alternativas de representar la información anterior, cada una aporta la
misma información desde un punto de vista diferente.
Los renglones son los valores que puede tomar el estado presente, las columnas están asociadas
a los diferentes valores que pueden tomar las entradas. Las casillas de la matriz muestran los
valores del próximo estado.
JK
00 01 11 10
Q(k)
0 0 0 1 1
1 1 0 0 1
Q(k+1)
Figura 10.10. Tabla de transiciones en Flip-flop JK.
que describe el próximo estado, mediante una expresión booleana del estado presente y las
entradas.
Para analizar circuitos que empleen flip-flops, se suele emplear la siguiente tabla:
J K Q(k+1)
0 0 Q(k)
0 1 0
1 0 1
_
1 1 Q(k)
La tabla característica puede obtenerse mediante la ecuación característica, dándole valores a las
entradas. También puede derivarse a partir de la interpretación de las columnas de la tabla de
transiciones.
La tabla característica describe cómo deben ser las entradas para tener un determinado estado en
la salida.
Describe las transiciones de la salida, en términos de las entradas. Suele usarse para diseñar
circuitos que empleen flip-flops JK.
0 0 0
0 1 1
1 0 1
1 1 0
10.4. Flip-flop D
D=1
Q
D=0 D=1
D
Q=0 Q=1
reset set
D=0
clk
D
Q(k) 0 1 Ecuación característica
0 0 1
Q(k 1) D(k )
1 0 1
Q(k+1)
Tabla característica Tabla de excitaciones
Q(k+1) Q(k) _
D > Q(k+1) D
0 0 0 0 0
0 1 1
1 1 1 0 0
1 1 1
D J Q
K Q'
clk
Figura 10.14. Flip-flop D mediante JK.
Q Q
J
D
K
Q'
reloj
T=1
T=0
T Q Q=0 Q=1 T=0
reset set
T=1
reloj
T
Q(k) 0 1
0 0 1 Q(k 1) T (k )Q(k ) T (k )Q(k ) T (k ) Q(k )
1 1 0
Q(k+1)
Q(k+1) Q(k) _ T
T > Q(k+1)
0 Q(k) 0 0 0
0 1 1
1 Q(k) 1 0 1
1 1 0
La T proviene de Toggle, que describe un tipo de interruptores de presión de una posición (se
oprime y queda en un estado; se vuelve a oprimir y cambia de estado).
D J Q
K Q'
clk
Figura 10.16. Flip-flop T mediante un JK.
Q Q
T D
Q'
reloj
Un uso típico de un flip-flop T es dividir por dos la frecuencia de entrada. Ya que en cada canto
activo cambia el estado del flip-flop T, permaneciendo la salida constante entre dos cantos
activos. La Figura 10.17 muestra un flip-flop T, disparado por canto de subida, y alimentado
con un uno lógico en la entrada; la salida divide por dos la frecuencia del reloj.
clk 1 Q
T
T=1
Q reloj
La siguiente gráfica muestra dichos tiempos para un flip-flop disparado por cantos de subida
(positive edge triggered); la señal de entrada D, cumple los requerimientos de Tsu y Th.
Th Tsu Th
D Tsu
20ns 5ns 20ns 5ns
CLK Tw 25ns
Tplh Tphl
25ns máx. 40ns máx.
13ns típico 25ns típico
Todos los tiempos se miden desde el canto activo del reloj (el de subida, en el ejemplo).
Las siguientes formas de ondas ilustran relaciones temporales para flip-flops disparados por
cantos de subida y de bajada. En flip-flops disparados por canto de subida (positive edge
triggered) las entradas se muestrean en el canto de subida (en realidad requiere valor estable tsu
segundos antes) y las salidas (Qp y Q’p) cambian un tiempo de propagación después, relativa al
canto de subida. Debe notarse que las salidas complementarias (Q y Q') no cambian
instantáneamente; esto se justificará después.
En flip-flops disparados por canto de bajada, se muestrean las entradas en el canto de bajada, y
las salidas (Qn Q’n) cambian después del canto de bajada.
Clk
Qp
Q'p
Qn
Q'n
El flip-flop JK fue sumamente empleado en los inicios debido a que tiene conducta determinada
cuando ambas entradas son unos (a diferencia del flip-flop SR). Es el flip-flop típico de la
familia TTL y de circuitos integrados en pequeña escala (SSI), permite construir fácilmente flip-
flops de tipo D y T. En la actualidad prácticamente no se usa. No está presente en las
configuraciones internas de los dispositivos lógicos programables, pero en estos casos se lo
puede construir en base a los flip-flops de tipo D, que éstos poseen.
El flip-flop de tipo T, prácticamente no está disponible como elemento; sin embargo puede ser
fácilmente implementado en base a los existentes (tipo D o JK).
En los flip-flops son necesarias entradas que permitan dejar al flip-flop en un estado
determinado. Clear o reset deja la salida Q en cero; y preset deja la salida alta. En el caso de
flip-flops de integración en pequeña escala estas señales suelen ser de naturaleza asincrónica
(como se verá más adelante); es decir, que se permite a estas entradas cambiar en cualquier
instante, respecto del reloj. Como se verá estas señales permiten dejar a un sistema secuencial
en un estado determinado. Sin embargo en diseños basados en dispositivos programables es
preferible dejar a los flip-flops en un determinado estado en forma sincrónica.
Se denomina así a las reglas para interconectar compuertas y flip-flops de tal forma de
garantizar que el sistema completo funcionará correctamente. Las metodologías dependerán del
tipo de elemento que se emplee para implementar la memoria, ya sean flip-flops disparados por
cantos (que suelen emplearse en dispositivos lógicos programables) o bien latchs transparentes
que suelen emplearse en la confección de registros en procesadores.
Las reglas básicas para la correcta temporización son: proporcionar entradas que cumplan los
tiempos de set-up y hold relativas al reloj, y que las salidas no cambien su estado más de una
vez por evento sincronizante.
La figura 10.20 ilustra las formas de ondas de las salidas de un flip-flop D, disparado por canto
de subida y un latch transparente de tipo D. Note que en el latch la salida cambia entre pulsos
del reloj, copiando los cambios de la entrada hacia la salida apenas ocurren cambios de ésta,
estando alto el reloj.
D Q Clk
E
QClk Qcanto
Qlatch
En el latch transparente (o sensible al nivel), estando el reloj en alto, la salida cambia de acuerdo
al valor de la entrada (después del tiempo de propagación); el canto de bajada del reloj del latch
captura el valor que tenga la entrada en ese tiempo (el latch, también requiere cumplir
especificaciones de set-up y hold, alrededor del canto de bajada del reloj).
También existe un tiempo de propagación desde un cambio de la entrada o del canto de subida
reloj (el evento que ocurra más tarde).
La estructura interna de los flip-flops disparados por cantos y el latch se verá más adelante.
CP
modo captura
Qlatch
modo transparente
Ejemplo de temporización.
La Figura 10.22, ilustra los requerimientos de las entradas de dos flip-flops D, disparados por
cantos de subida.
dato
D0 Q0 D1 Q1
clock
entrada estable
dato
clock
Las entradas D0 y D1 deben ser estables un tiempo antes y después del canto de subida del
reloj.
dato
D0 Q0 D1 Q1
clock
D0
Tsu Tsu
4ns 4ns
Q0=D1
Tp Tp
3ns 3ns
Q1
CLK
Th Th
2ns 2ns
Todos los flip-flops deben determinar su próximo estado en el mismo instante, bajo la condición
de las entradas permanezcan estables tsu antes del reloj y thold después.
La conexión anterior asume que todos los flip-flops tienen el mismo reloj. Sin embargo, en
sistemas que funcionan con relojes de altas frecuencias, el tiempo de retardo de propagación a
través del sistema digital es comparable al que requiere el reloj para llegar a los diferentes flip-
flops. La diferencia entre cantos de reloj, en diferentes flip-flops se denomina desfasamiento (o
desplazamiento, skew en inglés).
D0 Q1
dato Q0 D1
clk0 clk1
reloj
D0
Tsu Ts
4ns 4ns
Q0=D1
Tp Tp
3ns 3ns
Q1
Clk0
Tp 3ns Th Tp 3ns
Th
2ns 2ns
Clk1
Tsu Th Tsu Th
4ns 2ns 4ns 2ns
Se advierte que D1, no cumple la especificación de permanecer estable (Tsu antes y Th después
del canto de subida de clk1). Debido a esto la salida Q1 será indeterminada. Asumiendo que
conmuta y que se muestrea el valor de la entrada en el canto de subida, se muestra la forma de
Q1, Tp segundos después del canto de subida de clk1.
Más adelante podrá determinarse que la conexión cascada de los flip-flops se comporta como un
registro de desplazamiento. Debido al desfase podría dejar de ser un registro de desplazamiento.
Sincronización.
El análisis anterior nos lleva a uno más general y es cómo tratar entradas asincrónicas a sistemas
sincrónicos. En esta situación las entradas pueden cambiar en cualquier instante y puede que no
satisfagan los requerimientos de set-up y hold de los flip-flops del sistema sincrónico. Esta
dificultad no puede evitarse en algunas situaciones, como por ejemplo, en caso de una entrada
generada por un operador (y también cuando se emplean memorias en forma asincrónica).
Debido a lo anterior es preferible diseñar con entradas sincrónicas (si las entradas son salidas de
La Figura 10.26, muestra un interruptor manual, a través del cual se introduce un pequeño
pulso, de ancho variable y posiblemente con rebotes mecánicos, que finalmente coloca una de
las entradas en nivel bajo momentáneamente; esto asume que la entrada, en alta impedancia,
está en nivel alto.
clk
Cuando las entradas a un flip-flop cambian muy cercanas al canto del reloj, éste puede tener
inestabilidades internas que no permiten asegurar que se cumplan las ecuaciones del flip-flop.
En estos casos puede reducirse la probabilidad de falla aumentando la frecuencia del reloj,
relativa a la frecuencia de la entrada, o empleando compuertas más rápidas, o empleando un
sincronizador. La mejor solución es agregando un sincronizador, ya que no se depende de la
entrada. Un sincronizador es simplemente un flip-flop, cuya salida cambia sólo en los cantos del
reloj.
D Q
clk
El empleo de sincronizadores garantiza que el resto del sistema tendrá entradas sincrónicas, pero
no se puede garantizar que el sincronizador no tendrá fallas.
Normalmente basta agregar un flip-flop adicional para aumentar las probabilidades de lograr la
sincronización.
D1 Q1 D2 Q2
clk
Debe asegurarse que las entradas cumplan los requerimientos de set-up y hold de los flip-flops
del sistema sincrónico. A través de mediciones puede determinarse el funcionamiento confiable
del sincronizador, y de los niveles requeridos.
D2 Q2
clk
El siguiente diagrama ilustra que Q1 registra el cambio de la entrada, pero no así Q2.
Entrada
Q1
Q2
CLK
Índice general.
CAPÍTULO 10 ........................................................................................................................................... 1
MEMORIAS PRIMITIVAS SINCRÓNICAS. ........................................................................................ 1
10.1. RELOJ .............................................................................................................................................. 1
10.2. SECUENCIAS SINCRÓNICAS. ............................................................................................................. 3
10.3. FLIP-FLOP JK ................................................................................................................................... 4
10.3.1. Diagrama de estados ............................................................................................................... 5
10.3.2. Tabla de transiciones .............................................................................................................. 5
10.3.3. Ecuación característica ........................................................................................................... 6
10.3.4. Tabla característica ................................................................................................................ 6
10.3.5. Tabla de excitaciones .............................................................................................................. 6
10.3.6. Descripción HDL. ................................................................................................................... 7
10.4. FLIP-FLOP D..................................................................................................................................... 7
10.5. FLIP-FLOP T ..................................................................................................................................... 9
10.6 REQUERIMIENTOS TEMPORALES. .................................................................................................... 10
COMPARACIONES. .................................................................................................................................. 12
10.7. METODOLOGÍAS DE TEMPORIZACIÓN............................................................................................. 12
Ejemplo de temporización. ................................................................................................................ 13
Sincronización. .................................................................................................................................. 16
ÍNDICE GENERAL. ................................................................................................................................... 19
ÍNDICE DE FIGURAS................................................................................................................................. 20
Índice de figuras
Capítulo 11
11.1. Análisis
Dado el esquemático de una red secuencial sincrónica se desea obtener el diagrama de estados;
y a partir de éste, inferir el funcionamiento de la máquina. Este procedimiento se suele llamar
reingeniería.
Reset’
x(k) P1 z(k) P2
y(k)
Q
y(k+1)
Clk
El estado actual y (k ) es sostenido en las salidas Q(k ) de los flip-flops, durante el intervalo de
tiempo k. En este intervalo, se generan z (k ) e y (k 1) a partir de y (k ) y x(k ) , en la red
combinacional. El próximo estado, y (k 1) , se lleva a las entradas de los flip-flops, de tal
manera que en el instante (k +1) las salidas de los flip-flops, almacenaran los valores y (k 1) .
Para esto es indispensable que las entradas a los flip-flops sean estables en el momento de
aplicar el canto del reloj que efectuará la conmutación, o cambio de estado, que implica pasar
del intervalo k al intervalo (k+1).
A partir del esquemático de la red booleana pueden escribirse las funciones de las entradas de
los flip-flops en función de la entrada y el estado presente, se denominan programas de los flip-
flops, o ecuaciones de excitación de éstos.
El método de análisis tabular está basado en obtener la matriz de transiciones a partir de las
matrices de programación. En cada casilla, de cada una de las (m+1) matrices de programación,
mediante las tablas características, se determinan las (m+1) componentes del vector de próximo
estado de cada casilla de la matriz de transición.
x x
y y
J K y(k+1)
0 0 y(k)
0 1 0
1 0 1
Ji, Ki 1 1 y’(k) y(k+1)
Se muestra sólo la matriz de programación del flip-flop i-ésimo, que se asume del tipo JK. Para
cada par ( J i , Ki ) de la matriz de programación i-ésima, mediante la tabla característica, se
encuentra el próximo estado yi (k 1) asociado; componiendo de este modo el vector y(k+1).
Las ecuaciones de los programas de los flip-flops, que se asumen del tipo JK:
Ji f i ( y, x)
Ki gi ( y, x)
yi (k 1) J i yi ' Ki ' yi
yi (k 1) fi ( y(k ), x(k ))
Las que representadas en un mapa de Karnaugh, forman la matriz de transiciones.
A
J Q S
J
x K Q’
C
clk K
P
1
reset
B
S
J Q
C _
K Q
P z
C
S
J
C _
K Q
P
Leyendo las ecuaciones de las entradas de los flip-flops, directamente del esquemático, se
obtienen:
JA ( B ' C B ' x '); K A B
JB ( AB ' B ' C ); K B B
JC A ' x; K C B x'
Para obtener la matriz de programación del flip-flop A: Se debe establecer JA y KA para cada
combinación posible del estado presente y la entrada. Se procede en forma análoga para los
flip-flops B y C.
Este proceso de ilustra en la Figura 11.4, para cada uno de los flip-flops, se obtienen las
siguientes matrices de programación:
x x x
ABC 0 1 ABC 0 1 ABC 0 1
000 10 00 000 00 00 000 01 10
001 10 10 001 10 10 001 01 10
011 01 01 011 01 01 011 01 11
010 01 01 010 01 01 010 01 11
110 01 01 110 01 01 110 01 01
111 01 01 111 01 01 111 01 01
101 10 10 101 10 10 101 01 00
100 10 00 100 10 10 100 01 00
J , K J , K J , K
A A B B C C
A A A
Para todas las ocurrencias de (J,K) igual a (1,0) en las tablas de la Figura 11.4, se coloca un 1 en
la columna correspondiente de la Figura 11.5; se coloca 0 para (J, K) igual a (0,1).
Para (J, K) igual a (0,0) en las tablas de la Figura 11.4, se coloca el valor actual de la variable en
la columna correspondiente de la Figura 11.5.
Para (J, K) igual a (1,1) en las tablas de la Figura 11.4, se coloca el valor complementado de la
variable actual en la columna correspondiente de la Figura 11.5.
Si colocamos la cifra decimal, equivalente del nombre binario del estado, se logra la matriz de
transiciones, empleando nombres simbólicos para los estados. Se obtiene la Figura 11.6,
izquierda. Y de esta matriz se obtiene el diagrama de estados que se ilustra a la derecha en la
Figura 11.6.
3
0/0 2
Estado x 0/0
actual 0 1 1/1
0 1/0
0 4/0 1/0
1 6/0 7/0 0/0 1/0
3 0/0 0/1
2 0/0 1/0 4 /0 1 1/1
6 0/0 0/0 0/0
7 0/0 0/1 /0 0/0 1/0
5 6/0 7/0
4 6/0 6/0 6 7
Estado próximo/z
0/0 1/0
5
Se observa que los estados 2, 3 y 5 sólo pueden ser estados iniciales y no participan de la
naturaleza secuencial del resto. Si no se dibujan, resulta la Figura 11.7.
reset
0
0/0
0/0
1/0
1/1
4 /0 1
1/0
/0
0/0
7
6
En la Figura 11.7, con estado inicial igual a cero, puede concluirse que el circuito es un
reconocedor de secuencia de largo fijo igual a 3. A partir del estado inicial acepta tres valores de
la entrada y luego toma una decisión.
La máquina analiza grupos de 3 bits de la secuencia de entrada, y si ésta es 111, genera un uno
en la salida; cero en el resto de los casos.
A(k 1) JA A KAA
B(k 1) JB B KBB
C (k 1) JC C KCC
Donde se han reemplazado las salidas Q de los flip-flops, por las variables de estado: A, B y C.
b) Analizar la máquina secuencial descrita por el diagrama de bloques, de la Figura 11.9, y las
ecuaciones siguientes:
z1
x M.S.S. z 2
z3
clk
Figura 11.9. Entradas y salidas de máquina secuencial.
J1 xy2 ; K1 x z1 y1 y2
z2 xy1 y2
J2 xy1 ; K2 x z3 y1 y2
Y1 J1 y1 K1 y1
Y2 J 2 y2 K 2 y2
Las ecuaciones de las salidas pueden escribirse, empleando el mapa de Karnaugh, de la Figura
11.11:
Con la asignación de estados, de la Figura 11.12, en la que se emplea como nombre lógico el
equivalente decimal del nombre físico o binario, se obtiene el diagrama de estados que se
muestra en la Figura 11.13.
x
Estado 0 1
0 0 1
1 1 2
3 3 0
2 2 0
Est. próximo
0/100
1/100 0/000
0 1
1/001
1/100 x/z1z2z3
1/010
0/001 2 0/000
3
Notar que debido a que z2 depende de x, se modeló mediante una máquina de Mealy.
Red J
Combinacional Q
K
tp tf
reloj
Si tenemos un reloj:
t0 t1 t
Sea tpmin el mínimo tiempo que tardan los cambios de las señales en atravesar la red
combinacional, y tfmin el mínimo tiempo en que cambian las salidas de los flip-flops,
después del canto; entonces debe cumplirse: tpmin + tfmin + tskew > thold
Si puede asegurarse que las entradas no cambian tsu antes del canto y thold después del canto, el
flip-flop funcionará confiablemente. Esta verificación debe efectuarse para cada uno de los flip-
flops de la red booleana.
El problema que deseamos resolver es obtener las redes combinacionales que programan los
flip-flops de una red secuencial, a partir del diagrama de estados, reducido y con asignación de
estados. De estas ecuaciones puede obtenerse el esquemático, o el programa verilog para la
implementación física.
Esquemáticamente:
Ji, Ki
y(k) y(k+1) JK
Si se tienen (n+1) entradas y (m+1) flip-flops, los vectores booleanos de la entrada y el estado
quedan representados por:
En el esquema anterior se ilustra empleando flip-flops de tipo JK, se procede en forma similar si
los flip-flops son de otro tipo. Se eliminan las variables de próximo estado, obteniéndose las
matrices de programación.
Q(k) Q(k+1) D J K T S R
0 0 0 0 0 0
0 1 1 1 1 1 0
1 0 0 1 1 0 1
1 1 1 0 0 0
Luego, en el Capítulo 14, se verán los flip-flops SR, cuyas tablas se indican en las últimas dos
columnas de la Figura 11.17.
Ejemplo 11.8.1.
Para el detector de secuencia 110 cada vez que ésta se presente, se tiene:
1/0 1/0
0/0 1/0
reset
0/1
x
Estado Q1 Q0 Q1 Q0 0 1
Start 0 0 0 0 00/0 01/0
Estado 0 0 1 0 1 00/0 11/0
Estado 1 1 1 1 1 00/1 11/0
1 0 dd/d dd/d
Q1+Q0+/z
Figura 11.19. Asignación de estados y matriz de transiciones.
Notar la elección de condiciones superfluas para el estado 10, que no se emplea en el diseño. Se
escogió el estado de start como el 00, para simplificar el diseño de la señal reset; en este caso
basta activar la señal clear asincrónico del flip-flop que se emplee para lograr la función reset.
La elección de condiciones superfluas simplifican las redes combinacionales que efectúan los
programas de los flip-flops.
a) Procedimiento tabular empleando flip-flops Ds:
Usando la tabla de transiciones de flip-flops Ds, se logra:
x
Q1 Q0 0 1
0 0 00 01
0 1 00 11
1 1 00 11
1 0 dd dd
D1D0
Con programas: D1 = Q0 x
D0 = x
Debe notarse que cuando se emplean flip-flops D, los programas de éstos pueden obtenerse
directamente de la matriz de transiciones, cambiando Q1+ por D1 y Q0+ por D0.
b) Método analítico empleando flip-flops Ds:
De la matriz de transiciones se tienen:
z = Q1 x'
Q0+ = x
Q1+ = Q0 x
x x
Q1 Q0 0 1 Q1 Q0 0 1
0 0 0 0 0 0 0 1
0 1 0 1 0 1 1 0
1 1 1 0 1 1 1 0
1 0 1 0
J1K1 J0K0
Figura 11.21. Programas de flip-flops JK
Notar que K1 también se podría haber expresado, como: K1 = x' +Q0' agrupando los ceros, o
bien: K1 = x’Q0 agrupando los unos; sin aprovechar completamente las condiciones superfluas.
d) Método analítico empleando flip-flops JKs:
De la matriz de transiciones de la Figura 11.19, y aplicando el teorema de expansión, para tener
presente a la derecha la variable correspondiente, que figura a la izquierda de cada ecuación, se
logra:
z = Q1 x'
Q1+ = Q0 x = Q0xQ1' + Q0xQ1 (se expande en Q1)
Q0+ = x = xQ0' + xQ0 (se expande en Q0)
Notar que el método analítico, en este caso, agrega el término Q0' que resulta superfluo.
La matriz de transiciones de la Figura 11.20, puede plantearse como una tabla de verdad, entre
las entradas (estado presente y entradas) y las salidas (próximo estado y salidas), según se
muestra en la Figura 11.22.
Entradas Salidas
Q0 Q1 x Q1+ Q2+ z
0 0 0 0 0 0
0 0 1 0 1 0
0 1 0 0 0 0
0 1 1 1 1 0
1 0 0 d d d
1 0 1 d d d
1 1 0 1 0 1
1 1 1 1 1 0
// detector de secuencia 110 cada vez que ésta se presente. Salida registrada.
module mealy110 (input clk, resetn, x, output zs);
reg Q1, Q0, zs;
wire D1, D0;
// Redes combinacionales de próximo estado. P1
Ejemplo 11.8.2.
Determinar los programas de los flip-flops JK, para la siguiente matriz de transiciones.
AB
x 00 01 11 10
0 2 6 4
0 00 00 11 10
1 3 7 5
1 11 11 10 01
A+B+
Figura 11.23. Matriz de transiciones ejemplo 11.8.2.
Se tienen, de la matriz:
A+ = A'x + AB +Ax' = ( x )A' + (B + x') A
B+ = A'x + ABx' +B'x = A'xB' + A'xB + ABx' +B'x = (A'x + x) B' + (A'x + Ax')B
Se han factorizado las ecuaciones, en términos de Qi y Qi’ para cada uno de los flip-flops Qi.
AB
x 00 01 11 10
0 2 6 4
0 010 001 101 000
1 3 7 5
1 000 110 111 011
A+ B+ z
Ejemplo 11.8.4.
Q Q
J
D
K
Q'
reloj
Este diseño se emplea en dispositivos programables que no disponen en las macroceldas de flip-
flops JKs, pero que generalmente disponen de flip-flops Ds.
Q
D
DQ
J Q.f
b
K reloj
n p
clk
Consideramos que a la señal n, que resulta de oprimir un botón, se le han suprimido los rebotes,
y que además está sincronizada, es decir el canto de subida se produce después de que ha
transcurrido un tiempo mayor que el thold de los flip-flops.
Los rebotes pueden filtrarse con un latch, y la sincronización se logra haciendo pasar la señal a
través de uno o dos flip-flops Ds alimentados con el mismo reloj.
Si la salida está asociada al estado, tendremos tres situaciones distinguibles. La primera cuando
se espera un canto de subida con salida cero, la segunda cuando llega un canto de subida con
salida uno, y la tercera cuando se espera un canto de bajada con salida cero.
Si agregamos las condiciones bajo las cuales se cambia de estado, podemos describir que:
Mientras la señal de nivel n, está baja, se permanece en el estado ECS, esperando un canto de
subida, con salida p=0. Cuando en n se presenta un canto de subida se pasa al estado CS, llegó
un canto de subida, con salida p=1.
Estando en CS, si la señal n baja a cero, vuelve a esperar otro canto de subida; es decir pasa al
estado ECS; pero si la señal permanece en nivel alto, pasa a un tercer estado ECB, en el cual se
espera un canto de bajada.
Estando en ECB con salida p=0, se permanece en ese estado mientras la señal n esté alta, y se
pasa a ECS cuando llega un canto de bajada en n.
Estado Próximo
actual estado
Q1 Q0 n Q1+ Q0+ p
0 0 0 0 0 0
0 0 1 0 1 0
0 1 0 0 0 1
0 1 1 1 1 1
1 1 0 0 0 0
1 1 1 1 1 0
1 0 0 x x x
1 0 1 x x x
reset’
Q1 Q0
D D p
n
Q1’
clk
Si la salida está asociada a los cambios de entrada podemos conceptualizar dos estados: uno en
el que se espera un canto de subida, y el otro cuando se espera el canto de bajada.
Estando en ECS: Mientras la entrada esté baja, la salida también debe estar baja y debe
permanecer en ECS; cuando en la entrada se presenta un canto de subida la salida debe activarse
a uno y cambiar al estado ECB.
Estando en ECB: Mientras la entrada esté alta, la salida también debe estar baja y permanecer
en ECB; cuando en la entrada se presenta un canto de bajada la salida debe permanecer baja y
cambiar al estado ECB.
n=0/p=0
Q n Q+ p
0 0 0 0
0 1 1 1
1 0 0 0
1 1 1 0
D=n, p=Q’n
reset’
Q
n D p
Q’
clk
En un circuito físico, cuando se aplica un canto de bajada a la señal reset’, las salidas de los
flop-flops van a cero, llevando la máquina al estado inicial.
reset’
clk
tr
Q0
Q1
p
n
La salida, en el caso de Moore, tomará el valor correspondiente al estado inicial. Las entradas
son ignoradas hasta el primer canto del reloj, luego que se levante la señal de reset, lo cual se
indica con el instante tr, en la Figura 11.35. Se ilustra con una discontinuidad el tiempo que
dura la señal reset en nivel bajo, mostrando que esta situación puede durar varios períodos del
reloj.
En el instante tr, se muestrean las entradas y de acuerdo a éstas se producen los cambios de
estado. En la Figura 11.35 se asumió un nivel bajo de la entrada n, de este modo la máquina
permanece en estado inicial, esperando un canto de subida.
En un modelo de Mealy, la situación es similar para los estados de los flip-flops, pero la salida
dependerá de la entrada, mientras la señal de reset esté baja.
En caso de señales sincrónicas, la situación es similar, salvo que los cambios en los flip-flops se
producen en el siguiente pulso del reloj después de la activación del reset.
En simulación, deben generarse un pulso de reset, para que los flip-flops y las salidas tomen
valores. En caso de no hacerlo, puede que los flip-flops tomen valores desconocidos y no se
generen las secuencias que se desea simular. En un circuito físico, los flip-flops siempre estarán
en algún valor, después de aplicar la polarización.
b) Modelo de Moore.
Para un canto de subida en n, que cumpla con los requerimientos de hold, se tienen:
Q0 cambia un tiempo de propagación de flip-flop, después del canto de subida del reloj.
La salida p, cambia un tiempo de propagación de una compuerta AND, después de cambios en
Q1 o Q0.
El cambio de p se produce en el primer canto del reloj en el cual se tenga la entrada n en alto.
clk
Q0
Q1
c) Modelo de Mealy.
En el modelo de Mealy, la salida cambia cuando cambia la entrada, y suele producirse un ciclo
antes que en el modelo de Moore.
El cambio de estado se produce, un tiempo de propagación de flip-flop, después del canto de
subida del reloj.
n
clk
Q
p
En el modelo de Mealy suelen requerirse menos flip-flops, y genera la salida un tiempo antes
que en modelo de Moore. Sin embargo la salida no es sincrónica con el reloj.
d) Modelo de Mealy, con salida registrada.
Para resolver esta dificultad suele sincronizarse la salida de la máquina de Mealy, registrando la
salida en un flip-flop adicional.
reset’
ps
Q Q
n D p
Q’ D Q’
clk
clk
Q
p
ps
La salida puede generarse con las condiciones del estado próximo, y empleando un flip-flop
para sincronizar la salida.
Antes teníamos: Q1+=nQ0 Q0+=n p=Q1’Q0
reset’
ps
Q1 Q0 Q
p+
n D D D
Q1’ Q0’ Q’
clk
La salida ps, se produce en los mismos tiempos que en el modelo de Moore de la Figura 11.31,
pero se requiere un flip-flop adicional. Debe notarse que ps será sincrónica y no tendrá
perturbaciones.
En la Figura 11.41, se muestran las señales p+ y ps. Se ha dejado la señal p, del diseño anterior,
para comparar los casos.
n
clk
Q0
Q1
p
p+
ps
Problemas resueltos.
Problema 11.1.
CLK
Q0
Q1
Q2
Q3
s0
Período
0 1 2 3 4 5 6 7 8 9 10 0
Solución.
a) Las señales Q3, Q2, Q1 y Q0 corresponden a un contador módulo 11. Con Q3 el bit
más significativo.
Q3Q2
Q1Q0 00 01 11 10
0 4 12 8
00 0001 0101 dddd 1001
1 5 13 9
01 0010 0110 dddd 1010
3 7 15 11
11 0100 1000 dddd dddd
2 6 14 10
10 0011 0111 dddd 0000
Arreglando las ecuaciones de próximo estado se obtiene para cada tipo de flip-flop:
c) Q3 + = (Q2 Q1 Q0) + (Q3 Q1’) = Q3(Q2Q1Q0 + Q1’) + Q3’Q2Q1Q0
Q3+ = Q3’ J3 + Q3 K3’
Comparando coeficientes, se obtiene:
J3 = Q2Q1Q0 K3 = (Q2Q1Q0 + Q1’) ’ = Q1 (Q2’ +Q1’ +Q0’) = Q1Q2’ +Q1Q0’
Q2+ = (Q1 Q2’Q0) + (Q1’ Q2) + (Q2 Q0’) = Q2’(Q1Q0) +Q2(Q1’ +Q0’)
Q2+ = Q2’ J2 +Q2 K2’
Q3Q2
Q1Q0 00 01 11 10
0 4 12 8
00 0 0 d 1
1 5 13 9
01 0 0 d 1
3 7 15 11
11 0 0 d d
2 6 14 10
10 1 0 d 0
s0
Figura P11.3. Mapa de la salida s0, Problema 11.1
Problema 11.2.
V3
TP1 5V
CP1
U2A
A
S U4A
U3A J Q
TP2 TP3
CP _
DS1 K Q
R
Data
Seq U3C
z
CP1 x B U4B
U3B S
J Q
CP _
K Q
R
Reset
0V
Estado AB
0 00
1 01
2 10
3 11
b) Matrices de programación:
x x
AB 0 1 AB 0 1
00 11 00 00 00 11
01 11 01 01 00 11
11 11 01 11 01 11
10 11 00 10 01 11
Ja, Ka Jb, Kb
x
J K Q(k+1) AB 0 1
0 0 Q(k ) 00 10/0 01/0
0 1 0 01 11/0 00/1
1 0 1 11 00/0 00/0
1 1 Q(k ) 10 00/1 11/0
A(k+1) B(k+1)/z
x
AB 0 1
0 2/0 1/0
1 3/0 0/1
3 0/0 0/0
2 0/1 3/0
Próximo Estado/z
d) Diagrama de estados:
0/1 0 1/1
0/0 1/0
2 /0 1
1/0 0/0
e) Funcionamiento:
Salida z = 1 cuando llegan secuencias: 00 ó 11 a partir de estado inicial.
Salida z = 0 cuando llegan las secuencias: 010, 011, 100, 101 a partir del estado inicial.
Estando en estado 0, si llegan las secuencias 01 y 10 se descarta el bit siguiente.
f) Secuencia de salida:
x = 0100110011100101
z = 0000000101000000
Ejercicios propuestos.
Ejercicio 11.1
Rediseñar el diagrama de estados de la Figura 11.6 considerando que los estados inalcanzables
(2, 3, 5) son superfluos. Realizar el diseño con flip-flops JKs y comparar el costo de las nuevas
redes combinacionales.
x
Estado actual 0 1
0 4/0 1/0
1 6/0 7/0
3 / /
2 / /
6 0/0 0/0
7 0/0 0/1
5 / /
4 6/0 6/0
Estado próximo/z
Índice general.
CAPÍTULO 11 ............................................................................................................................................1
ANÁLISIS Y DISEÑO DE MÁQUINAS SECUENCIALES SINCRÓNICAS .....................................1
11.1. ANÁLISIS ..........................................................................................................................................1
Programas de los flip-flops. Matrices de programación .....................................................................2
11.2. MÉTODO DE ANÁLISIS TABULAR.......................................................................................................2
11.3. MÉTODO ANALÍTICO.........................................................................................................................3
11.4. EJEMPLO MÉTODO TABULAR ............................................................................................................3
11.5. EJEMPLOS DEL MÉTODO ANALÍTICO. ................................................................................................7
11.6. FRECUENCIA MÁXIMA DE OPERACIÓN DEL RELOJ. ............................................................................9
11.7. SÍNTESIS O DISEÑO DE MÁQUINAS SECUENCIALES SINCRÓNICAS, A PARTIR DEL DIAGRAMA DE
ESTADOS. ................................................................................................................................................ 11
11.7.1. PROCEDIMIENTO DE SÍNTESIS TABULAR. .....................................................................................11
11.7.2. PROCEDIMIENTO DE SÍNTESIS ANALÍTICO. ...................................................................................12
11.8. EJEMPLOS DE SÍNTESIS. ..................................................................................................................12
Ejemplo 11.8.1. ..................................................................................................................................12
a) Procedimiento tabular empleando flip-flops Ds: ........................................................................................ 13
b) Método analítico empleando flip-flops Ds:................................................................................................ 13
c) Procedimiento tabular empleando flip-flops JKs: ...................................................................................... 14
d) Método analítico empleando flip-flops JKs: .............................................................................................. 14
e) Descripción del diseño en Verilog. ............................................................................................................ 15
Ejemplo 11.8.2. ..................................................................................................................................16
Ejemplo 11.8.3. ..................................................................................................................................17
Ejemplo 11.8.4. ..................................................................................................................................17
11.9 RESUMEN Y OBSERVACIONES. .........................................................................................................18
11.9.1. Convertidor de cambio de nivel en un pulso. .........................................................................18
11.9.2. Modelo de Moore. ..................................................................................................................19
11.9.3. Modelo de Mealy. ...................................................................................................................21
11.9.4. Análisis de transiciones..........................................................................................................22
a) Estado inicial. Reset. .................................................................................................................................. 22
b) Modelo de Moore. ..................................................................................................................................... 23
c) Modelo de Mealy. ...................................................................................................................................... 23
d) Modelo de Mealy, con salida registrada. ................................................................................................... 23
e) Modelo de Moore, con salida registrada. ................................................................................................... 24
PROBLEMAS RESUELTOS. ........................................................................................................................25
Problema 11.1. ...................................................................................................................................25
Problema 11.2. ...................................................................................................................................27
EJERCICIOS PROPUESTOS. ........................................................................................................................31
Ejercicio 11.1 .....................................................................................................................................31
ÍNDICE GENERAL. ....................................................................................................................................32
ÍNDICE DE FIGURAS .................................................................................................................................33
Índice de figuras
Capítulo 12
Dos máquinas secuenciales son equivalentes si la relación entre la entrada y la salida son
idénticas para todas las posibles secuencias de entrada.
Un diseño en particular puede ser representado por varios diagramas de estado equivalentes. Los
costos de implementación pueden ser diferentes; en general los diagramas que tengan más estados
requieren más elementos de memoria y por lo tanto también necesitan mas redes combinacionales
para determinar el próximo estado.
Dos estados son equivalentes si no puede distinguirse entre ellos. Esto implica que si se aplica
cualquier secuencia de entrada, a partir de esos estados, se observan iguales secuencias de salida.
Puede determinarse, por inspección, que dos estados son equivalentes si tienen iguales renglones
en la matriz de transiciones. Es decir, para iguales entradas van a iguales estados próximos o
futuros, con salidas iguales.
Uno de estos estados puede removerse sin alterar la conducta de la máquina. Esto se logra
modificando la tabla de modo que no se invoque el estado eliminado sino a su equivalente.
Estado/Entrada 0 1
A B/0 C/1
B C/0 A/1
C D/1 B/0
D C/0 A/1
Estado/Entrada 0 1
A B/0 C/1
B C/0 A/1
C B/1 B/0
Se define una partición o conjunto de estados equivalentes P0, formada por todos los estados del
diagrama. Esto refleja la ignorancia del próximo estado cuando aún no se ha aplicado una entrada.
Se tiene entonces:
P0 = {A, B, C, D}
Las partes de P1 tienen igual salida para una secuencia de largo 1. Es decir, si se aplica cualquier
secuencia de largo 1 (hay dos) los estados de las partes no pueden distinguirse. Se dice que son 1-
equivalentes.
Luego para cada parte se definen los sucesores 0 y 1, que son los estados que siguen para entrada
0 y 1 respectivamente.
En el ejemplo:
Sucesores 0 de (ABD) son (BCC)
Sucesores 1 de (ABD) son (CAA).
Ahora: sucesores 0 de (BD) son (CC) y sucesores 1 de (BD) son (AA). En ambos casos los
sucesores pertenecen a una de las clases anteriores.
Los estados sucesores 0 y 1, pertenecen a un mismo grupo en P2, por lo tanto: P3 = P2
La siguiente tabla muestra la salida z0 para una entrada x0 de una secuencia de un bit, partiendo
de cada uno de los estados. Por ejemplo, estando en C, si llega un 0, la salida es 1.
1/1
0/0
A B
x0 A B C D
0 0 0 1 0
1/1 0/0 1/0 1 1 1 0 1
1/1
z0
0/1
D C
0/0
Las secuencia de salida, respecto a la de entrada, para los estados A, B y D, son iguales; no así
para el estado C. Lo cual muestra que C no puede ser equivalente con A, B o D. Esto justifica la
formación de la partición P1. Entonces C no es 1-equivalente con A, B o D.
La siguiente tabla muestra la secuencia de salida (z0z1) para una entrada de una secuencia de dos
bits (x0x1), partiendo de cada uno de los estados. Por ejemplo, estando inicialmente en A, si llega
la secuencia de entrada 10, en la salida se tiene la secuencia 11, y se recorren los estados C y D.
x0x1 A B C D
00 00 01 10 01
01 01 00 11 00
10 11 10 00 10
11 10 11 01 11
z0z1
Se advierte que no es necesario plantear la columna a partir del estado C, ya que como ilustraba
la tabla anterior el primer bit será diferente. Se observa que las columnas asociadas a los estados
B y D son idénticas y diferentes de las secuencias de la columna A. Por lo tanto A, no puede ser
equivalente a los estados B y D. Esto implica la partición P2. El estado A no es 2-equivalente con
B o D.
La siguiente tabla muestra la secuencia de salida (z0z1z2) para una entrada de una secuencia de
tres bits (x0x1x2), partiendo de los estados B y D solamente. Por ejemplo, estando inicialmente en
B, si llega la secuencia de entrada 110, en la salida se tiene la secuencia 111, y se recorren la
secuencia de estados ACD. Esto implica la partición P3.
x0x1x2 B D
000 010 010
010 000 000
100 100 100
110 111 111
001 011 011
011 001 001
101 101 101
111 110 110
z0z1z2
Puede decirse que los estados B y D son 3-equivalentes, ya que no puede distinguirse entre ellos
para secuencias de largo tres de entrada, debido a que tienen iguales secuencias de salida. El
procedimiento de Moore permite encontrar los estados n-equivalentes, y cuando no pueden
formarse nuevas particiones determina los estados equivalentes.
Algoritmo de las particiones de Moore.
1. Colocar todos los estados en un conjunto.
2. La partición inicial (P1) está basada en la conducta de la salida.
3. Las particiones sucesivas están basadas en las transiciones al próximo estado.
4. Se repite paso (3) hasta que no se produzcan nuevas particiones.
Los estados que queden en un mismo conjunto son equivalentes.
Puede demostrarse que el algoritmo es de costo polinomial.
Estado/Entrada 0 1
A C/1 B/0
B C/1 E/0
C B/1 E/0
D D/0 B/1
E E/0 A/1
Por particiones:
Se tienen P0 = {A , B, C, D, E} y P1 = {A, B, C }, {D, E }
Ya que A, B y C tienen salidas 1 y 0 para entrada 0 y 1 respectivamente. Y D y E tienen salidas 0
y 1 para entradas 0 y 1 respectivamente.
El método puede optimizarse, observando que algunos estados son equivalentes, luego de algunas
iteraciones. De este modo, no se requiere seguir obteniendo los sucesores de dichos estados.
Ejemplo 12.3.
Estado/Entrada 0 1
A E/0 D/1
B F/0 D/0
C E/0 B/1 implica partir en:
D F/0 B/0 {BD} y {F}
E C/0 F/1
F B/0 C/0
Estado/Entrada 0 1
a b/0 c/0
b d/0 e/0
c f/0 g/0
d h/0 i/0
e j/0 k/0
f l/0 m/0
g n/0 o/0
h a/0 a/0
i a/0 a/0
j a/0 a/0
k a/0 a/0
l a/0 a/0
Estado/Entrada 0 1
a b/0 c/0
b d/0 d/0
c f/0 g/0
d h/0 h/0 a
f h/0 m/0 1/0
0/
g m/0 m/0 0
h a/0 a/0 b c 1/0
m a/1 a/1 0/0
/0
d f g
1/0
c
/0
/0
/0 /0
0/0
h m
h
/0 /1
Se confecciona un diagrama triangular que tenga tantas celdas como posibles pares de estados.
Luego se marcan con diagonales cruzadas las casillas de estados que no puedan ser equivalentes
debido a que tienen salidas diferentes. Observando la tabla anterior, sólo podrían ser equivalentes
los pares: (S0, S2), (S0, S4), (S2, S4) por tener salida 1; y los pares (S1, S3), (S1, S5), (S3, S5)
por tener salida 0.
A las casillas que pueden representar estados equivalentes, por tener iguales salidas, se les
colocan los pares de estados que deben ser equivalentes; por ejemplo: S0 y S2 son equivalentes si
Luego en las celdas que tienen pares marcados, se descartan aquellas cuyos pares ya estén
marcados como no equivalentes. Por ejemplo, la celda de la primera columna y segundo renglón
se descarta por tener como condición el par (S0, S1), que ya se conoce que no pueden ser
equivalentes.
Observando las casillas no marcadas se concluye que los pares (S3, S5) y (S0, S4) deben ser
estados equivalentes.
S1
S0,S1
S1,S3
S2 S2,S2
S3,S4
S0,S1
S3,S0
S3 S1,S4
S4,S5
S0,S0 S1,S0
S1,S1 S3,S1
S4
S2,S2 S2,S2
S3,S5 S4,S5
S0,S1 S1,S1
S3,S4 S0,S4
S5 S1,S0 S4,S0
S4,S5 S5,S5
S0 S1 S2 S3 S4
Entradas x1 x0 Salida
Estado presente 00 01 10 11 z
S0 S0 S1 S2 S3 1
S1 S0 S3 S1 S0 0
S2 S1 S3 S2 S0 1
S3 S1 S0 S0 S3 0
Próximo estado
Estado Salidas
E0 -0
E1 1-
E2 -1
En la tabla anterior el estado E1 es compatible con E0 y E2, pero E0 no es compatible con E2.
En este caso no se dispone de algoritmos, de complejidad polinomial, que determinen las mejores
agrupaciones de estados en conjuntos equivalentes, los cuales permiten reducir el número de
estados. Existen numerosos programas CAD que realizan la minimización en este tipo de
máquinas.
Dado el nombre lógico de un estado se desea formar un nombre físico en binario, dado por los
estados de los flip-flops.
Si de n elementos tomamos k de ellos (sin repetición, sólo puede tomarse una vez a cada
elemento), el primero puede ser elegido de n formas, el siguiente de (n-1) formas; y el k-ésimo de
(n-k+1) formas.
2m !
ae
2m e !
Si se tienen 4 estados lógicos A, B, C y D, se requieren dos flip-flops. Con dos flip-flops pueden
establecerse 4 estados binarios: 00, 01, 10, 11. El nombre binario de A, puede ser escogido de 4
formas, el de B de tres formas, el de C de dos formas y el último de una sola forma. Esto produce
24 formas de asignar estados, empleando dos flip-flops.
asignación 1: 01001001
asignación 2: 01011001
f(a,b,c,d,e,f,g,h)
f(a,b,c,d',e,f,g,h)
Es decir, las funciones tendrán estructura similar, salvo la complementación de una variable. Y
como en los flip-flops y PLDs se dispone de las variables y sus complementos, las dos
asignaciones en discusión llevarán a implementaciones de igual costo.
Con dos variables a y b, se tienen las siguientes formas: ab, a'b, ab' a'b'. En general m variables
pueden ser complementarse de 2m formas. Entonces, aplicando el principio inverso de la
multiplicación de las tareas, el número de asignaciones se reduce en el factor 2m.
b) consideremos un intercambio de columnas, para una determinada asignación:
e m ae aeu
2 1 1 1
3 2 24 3
4 2 24 3
5 3 6.720 140
6 3 20.160 420
7 3 40.320 840
A continuación se ilustran las 24 asignaciones posibles que se pueden efectuar con dos flip-flops.
L 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
A 00 00 10 01 11 10 01 11 00 00 10 01 11 10 01 11 00 00 10 01 11 10 01 11
B 01 10 11 00 10 00 11 01 11 11 01 10 00 01 10 00 10 01 00 11 01 11 00 10
C 11 11 01 10 00 01 10 00 01 10 11 00 10 00 11 01 01 10 11 00 10 00 11 01
D 10 01 00 11 01 11 00 10 10 01 00 11 01 11 00 10 11 11 01 10 00 01 10 00
Debe notarse que cualquiera de las 8 primeras columnas puede ser elegida como asignación única
1. También cualquiera entre las columnas 9 a 16, puede ser la asignación única 2. La elección de
la asignación única 3 puede ser cualquier columna entre la 17 y 24. Se han elegido tres que
establezcan el estado A con nombre 00.
La siguiente tabla genera las 24 permutaciones posibles que se pueden efectuar con dos flip-flops
para colocar nombre binario a 4 estados. Se han mantenido los nombres de las columnas de la
Figura 12.13.
No es posible, debido al rápido crecimiento de aeu, intentar buscar la solución óptima para la
asignación de estados. Esto debido a que se requerirían realizar aeu diseños y seleccionar el de
costo menor. En lugar de esto se desarrollan métodos que guíen a encontrar una asignación de
estados razonablemente buena.
Ejemplo 12.5.
Estado/Entrada 0 1
A B/0 E/0
B C/0 G/0
C D/0 F/0
D A/1 A/0
E G/0 C/0
F A/0 A/1
G F/0 D/0
El ejemplo ilustra que no todas las asignaciones conducen a redes combinacionales de bajo costo.
La asignación 2 resulta bastante más costosa que la asignación 1.
La codificación one-hot emplea un flip-flop por estado, de este modo el diseño de las funciones
combinacionales de próximo estado resultan más sencillas. Esta forma de codificación presenta
ventajas cuando se implementa en FPGA, dispositivos que tienen bastantes flip-flops y
generadores de funciones de ancho limitado. Por ejemplo para tres estados, los códigos binarios
serían: 001, 010, 100.
En la codificación de contadores, pueden asociarse los estados a las salidas del dispositivo,
haciendo innecesarias las redes combinacionales de salida.
Debido a que no existen algoritmos polinomiales para enfrentar este problema se han desarrollado
algunas heurísticas.
Estados que tienen iguales estados próximos, para una entrada dada, se los debe asignar como
lógicamente adyacentes.
Estado/Entradas xi xj Si Sj
Si S
....
Sj S xi xi
Est. Próximo S
Estado/Entradas xi xj S
S Si Sj
....
xi xj
Est. Próximo
Si Sj
Estados con la misma salida para una entrada dada, se los debe asignar como lógicamente
adyacentes.
Estado/Entradas xi xj
Si S1/z
....
Sj S2/z
Est. Próximo/Salidas
Si Sj
xi/z xi/z
S1 S2
En la siguiente matriz de transiciones, según la primera regla, debemos asignar los estados S1 y
S2 como adyacentes. Esto debido a que tienen estados próximos iguales para la misma entrada. Si
asignamos S1= 010 y S2= 011, tendremos, asumiendo que el próximo estado tiene nombre binario
101:
Q2Q1Q0 x1x0=01
S1=010 101/0
S2=011 101/0
Q2+,Q1+,Q0+/z
Con lo cual se logra, agrupando solamente los unos que se indican en el diagrama, para las
funciones de próximo estado:
En la siguiente matriz de transiciones, según la segunda regla, debemos asignar los estados S1 y
S2 como adyacentes. Esto debido a que son estados próximos de un mismo estado S, para
entradas adyacentes. Si asignamos S1= 101 y S2= 100, tendremos, asumiendo que S tiene código
binario 010:
Q2+,Q1+,Q0+/z
Con lo cual se logra, agrupando solamente los unos que se indican en el diagrama, para las
funciones de próximo estado:
Observamos que en todos los casos, menos uno, se cancelará una variable de entrada en las
expresiones para los estados próximos. En el caso del ejemplo, la expresión para Q0+ contendrá
las dos variables de entrada; la expresión de Q2+ no contendrá a la variable x1.
De los dos casos particulares anteriores, puede concluirse que la regla de alta prioridad producirá
mayor minimización que la regla de prioridad media. Razón por la cual se les da estos nombres.
Ejemplo 12.6.
Estado/Entrada 0 1
A C/0 D/0
B C/0 A/0
C B/0 D/0
D A/1 B/1
Si se ubican en un mapa los nombres de los estados que deben ser adyacentes, cumpliendo la
primera regla, se tiene:
Q0
Q1 0 1
0 1
0 A
0 B
0
2 3
1 C
0 D
0
Estado/Entrada 0 1
A = 00 10/0 11/0
B = 01 10/0 00/0
C = 10 01/0 11/0
D = 11 00/1 01/1
Estado Actual x
Q1Q0 0 1
00 10/0 11/0
01 10/0 00/0
11 00/1 01/1
10 01/0 11/0
Q1+Q0+/z
Resultan 15 entradas (en dos niveles). Debido a que existe el producto xQ0' que es común a
ambos flip-flops.
Para este caso, puede buscarse la asignación óptima, efectuando los diseños con todas las
asignaciones únicas de estado. Se tienen:
Estado/Entrada 0 1
A = 00 10/0 01/0
B = 11 10/0 00/0
C = 10 11/0 01/0
D = 01 00/1 11/1
Estado/Entrada 0 1
00 10/0 01/0
01 00/1 11/1
11 10/0 00/0
10 11/0 01/0
Estado/Entrada 0 1
A = 00 11/0 01/0
B = 10 11/0 00/0
C = 11 10/0 01/0
D = 01 00/1 10/1
Se comprueba entonces que, en este caso, las reglas para la asignación de estados llevan a una
asignación razonablemente buena. En la situación planteada es la óptima.
Asignación one-hot.
Para la matriz de transiciones de la Figura 12.19, puede efectuarse la asignación de tipo one-hot,
en la cual cada estado tiene un nombre binario con un solo 1. Esto se muestra en la Figura 12.26a.
Si A es el estado inicial, la operación de reset, es ahora levemente más compleja.
Las variables de estado son las salidas de los flip-flops: Q3, Q2, Q1, Q0.
x
Q3Q2Q1Q0 0 1
A=0001 0100/0 1000/0
B=0010 0100/0 0001/0
C=0100 0010/0 1000/0
D=1000 0001/1 0010/1
Q3+Q2+Q1+Q0+/z
Deben considerarse superfluas todas las combinaciones que tengan más de un uno en su nombre
binario. En la Figura 12.26b, puede observarse los mapas de Karnaugh de 5 variables, para las
variables de próximo estado Q3+ y Q2+.
Q3Q2
Q3Q2
00 01 11 10 Q1Q0 00 01 11 10
Q1Q0 8
8 4
00 d 1
4
d 00 d d
1 1
01 1 d d d 01 1 d d d
11 d d d d 11 d d d d
2 2
10 d d d 10 1 d d d
Minimizando empleando las condiciones superfluas, pero cubriendo sólo los mintérminos
presentes, se obtienen:
Deben evaluarse los diseños alternativos, basados en producto de sumas. Si se agrupan los ceros
de Q3+ se obtiene: (Q3+)’=Q2’Q0’x’ que equivale a: Q3+=Q2+Q0+x. Existiendo soluciones
similares para el resto de las variables.
Ejemplo 12.7.
Asignar estados para un reconocedor de secuencias de largo de tres bits, que tenga salida 1
cuando se tienen en la entrada las secuencias: 010 y 110; y salida cero en el resto de los casos. La
señal externa reset debe llevar la máquina al estado inicial.
Una vez eliminados los estados equivalentes, se obtiene la siguiente matriz de transiciones, con
E0 como el estado inicial:
Estado/Entrada 0 1
E0 E1/0 E1/0
E1 E2/0 E3/0
E2 E0/0 E0/0
E3 E0/1 E0/0
Estados que tienen iguales estados próximos, para una entrada dada, se los debe asignar como
lógicamente adyacentes. En este caso E2 y E3 debe ser adyacentes, tanto para entrada 0, como
para entrada 1, desde los estados 2 y 3 se va al estado 0.
Estados próximos de un estado presente, bajo entradas lógicamente adyacentes, se los debe
asignar como lógicamente adyacentes. Nuevamente implica asignar E2 y E3 como adyacentes,
ya que estando en E1 va estado 2 con entradas 0 y a E3 con entrada 1.
La regla que intenta minimizar la función de salida implica que E0, E1 y E2 deben ser adyacentes
ya que hay salida 0 para entrada cero. Además E0, E1, E2, E3 debe ser adyacentes ya que se tiene
salida cero para entrada 1.
Para obtener una función simple de reset se escoge el estado inicial E0 como 00.
La asignación 1 deja E0 como estado inicial, cumple E2 a distancia uno de E3, cumpliendo así las
dos primeras reglas en forma completa.
De la tercera regla cumple: E0 con E2, E0 con E1, E1 con E3. No pueden cumplirse: E1 con E2
del grupo con salida y entrada 0; tampoco pueden cumplirse: E0 con E3, y E1 con E2 del grupo
con entrada 1 y salida cero.
Q0 Q0 Q0
Q1 0 1 Q1 0 1 Q1 0 1
0 1 0 1 0 1
0 E0
0 E2
0 0 E0
0 E3
0 0 E0
0 E1
0
2 3 2 3 2 3
1 E1
0 E3
0 1 E1
0 E2
0 1 E2
0 E3
0
La asignación 2 deja E0 como estado inicial, cumple E2 a distancia uno de E3, cumpliendo así las
dos primeras reglas en forma completa.
De la tercera regla cumple: E0 con E3, E0 con E1, E1 con E2. No pueden cumplirse: E1 con E3
del grupo con salida y entrada 0; tampoco pueden cumplirse: E0 con E2, y E1 con E3 del grupo
con entrada 1 y salida cero.
La asignación 3 deja E0 como estado inicial, cumple E2 a distancia uno de E3, cumpliendo así las
dos primeras reglas en forma completa.
De la tercera regla cumple: E0 con E1, E0 con E2, E1 con E3. No pueden cumplirse: E1 con E2
del grupo con salida y entrada 0; tampoco pueden cumplirse: E0 con E3, y E1 con E2 del grupo
con entrada 1 y salida cero. Además esta asignación resulta ser equivalente en costo a la
asignación 1, ya que deviene de ésta por intercambio de columnas.
2 3
1 E3
0 E2
0
Asignación 4
En resumen cualquiera de las asignaciones 1 a 4 puede ser una elección razonable, ya que
cumplen con las dos primeras reglas: tener E2 adyacente con E3, y el máximo posible de
cumplimiento de la tercera regla.
Reconocedor de secuencias de largo 4. Salida uno cuando llegan: 0110 y 1010; salida cero en el
resto de los casos. El comando externo reset, debe llevar al estado inicial.
El diagrama reducido de estados es el siguiente:
Estado/Entrada 0 1
E0 E1/0 E2/0
E1 E3/0 E4/0
E2 E4/0 E3/0
E3 E5/0 E5/0
E4 E5/0 E6/0
E5 E0/0 E0/0
E6 E0/1 E0/0
Q2Q1
Q0 00 01 11 10
0 E0 E3 E6
1 E1 E4 E5 E2
Primero asignamos E3 adyacente con E4, y E5 con E6, ya que figuran en la primera y segunda
regla. Después E1 con E2.
Q2Q1
Q0x 00 01 11 10
0 4 12 8
00 0010 1110 0001
1 5 13 9
01 1010 1110 0000
3 7 15 11
11 0110 1100 0000 0100
2 6 14 10
10 0100 1110 0000 0110
Q2+,Q1+,Q0+,z
Problemas resueltos.
Problema 12.1.
0/0 1/0
b c
0/0 1/0 0/0 1/0
d e f g
0/0 1/0 0/0 1/1 0/1 1/0 0/0 1/0
Solución.
a) Analiza secuencias de largo tres, determinando con salida 1 la llegada de las secuencias: 011 ó
100; para el resto de las posibles secuencias de tres bits la salida es cero.
b)
P0 = { a, b, c, d, e, f, g}
P1 = {e}, {f}, {a, b, c, d, g}
P2 = {e}, {f}, {b}, {c}, {a, d, g}
P3 = {e}, {f}, {b}, {c}, {a}, {d, g}
P4 = P3
Por lo tanto d es equivalente con g. Se elimina g.
x=0 x=1
Q2Q1
a b/0 c/0 Q0 00 01 11 10
b d/0 e/0 0 2 6 4
c f/0 d/0 0 a d e
d a/0 a/0
e a/0 a/1 1 3 7 5
f a/1 a/0 1 b
Con las asignaciones dadas, que se ilustran en el mapa, se cumplen automáticamente que: d es
adyacente con e, de la primera regla; y d con a y b con a de la tercera regla; y sólo se puede
cumplir una de las dos siguientes: e con f o f con d.
c1) Si se elige f=011, f adyacente con d, no se puede cumplir que e sea adyacente con f; en este
caso a c debe asignarse 101, para cumplir la regla de media prioridad.
c2) Si se elige f=111, f es adyacente con e, y no puede cumplirse que f sea adyacente con d. En
este caso con c=101 se logra c adyacente con b (segunda regla). Es mejor asignar, en este caso c=
011, ya que además logra c adyacente con d, de la tercera regla.
c3) Si se elige f=100, f es adyacente con e, y no puede cumplirse que f sea adyacente con d; en
este caso conviene c=011, ya que logra b con c y además c con d de la tercera regla.
Para c2) quedan dos estados sin asignar, a los cuales pueden colocarse próximo estado y salida
superfluos. Resulta la siguiente tabla de transiciones.
Q2+Q1+Q0+/z
Figura P12.4. Mapa de matriz de transiciones Problema 12.1.
Se obtienen:
Se tiene:
Secuencia 0 1 2 3 4 5 6 7
Contador 0 1 2 0 1 2 0 1
Qa 0 1 0 0 1 0 0 1
Qb 0 0 1 0 0 1 0 0
Registro Q1 0 x0 x1 x2 x3 x4 x5 x6
Q0 0 0 x0 x1 x2 x3 x4 x5
Entrada x0 x1 x2 x3 x4 x5 x6 x7
En la tabla anterior, el número de secuencia indica los cantos de reloj que han ocurrido hasta el
momento.
Después del primer canto del reloj, el contador pasa a la cuenta 1 (Qa=1 y Qb =0).
Ha llegado la secuencia 011 o la secuencia 100 en la cuenta dos del contador, se logra con:
z = (Q0’Q1x + Q0Q1’x’)QbQa’
El diseño del contador módulo tres, queda especificado por la siguiente tabla.
QbQa
00 01
01 10
10 00
11
Qb+Qa+
x D1 Q1 D0 Q0
Secuencia 0 1 2 3 4 5 6 7
Contador 0 1 2 0 1 2 0 1
Qa 0 1 0 0 1 0 0 1
Qb 0 0 1 0 0 1 0 0
Registro Q2 0 x0 x1 x2 x3 x4 x5 x6
Q1 0 0 x0 x1 x2 x3 x4 x5
Q0 0 0 0 x0 x1 x2 x3 x4
Entrada x0 x1 x2 x3 x4 x5 x6 x7
x D2 Q2 D1 Q1 D0 Q0
Problema 12.2.
Q1 z
D1
Q1’
Q0
D0
Q0’
Solución.
a) Se tienen: D1 = x’Q1’Q0’ + x Q0; D0 = Q1’ + x’ Q0’; z = Q1Q0’ +Q1’Q0 (Moore)
De los flip-flops Ds se tienen: Q1+ = D1 y Q0+ = D0
Estado x z x
Q1 Q0 0 1 Estado 0 1
0 0 11 01 0 A=00 C B 0
0 1 01 11 1 B=01 B C 1
1 1 00 10 0 C=11 A D 0
1 0 01 00 1 D=10 B A 1
Q1+Q0+ Estado + z
x z
x Q z Q 0 1
D
Q’ 0 0 1 0
1 1 0 1
Q+
Con tipo JK: Se tiene xQ’ +x’Q = JQ’ +K’Q con lo que se obtiene: J = x; K = x
J Q
z
x
K Q’
Problema 12.3.
Solución:
P0 = {E0, E1, E2, E3, E4, E5, E6 }
P1 = {E0, E1, E2, E4, E6 } { E3, E5 }
S0(E0E1E2E4E6)=(E1E3E5E0E0) S0(E3E5)=(E0E0)
S1(E0E1E2E4E6)=(E2E4E6E0E0) S1(E3E5)=(E0E0)
P4 = P3
P5 = P4 y así sucesivamente.
Problema 12.4.
Mayor Prioridad: Estados con estados próximos iguales para igual entrada.
Mediana Prioridad: Próximos Estados para entradas adyacentes
Baja Prioridad: Estados con Iguales salidas para igual entrada.
Solución:
Mayor prioridad:
A adyacente con D, ya que con entrada 0 van al estado A.
C adyacente con D, ya que con entrada 1 van al estado D.
Mediana prioridad:
A adyacente con C, ya que son estados próximos de A, para entrada 0 y 1 respectivamente.
D adyacente con B, ya que son estados próximos de B, para entrada 0 y 1 respectivamente.
B adyacente con D, ya que son estados próximos de C, para entrada 0 y 1 respectivamente.
A adyacente con D, ya que son estados próximos de D, para entrada 0 y 1 respectivamente.
Baja Prioridad.
B adyacente con C, ya que tienen salida 1 para entrada 0 y 1.
A adyacente con D, ya que tienen salida 0 para entrada 0 y 1.
Q0 Q0 Q0
Q1 0 1 Q1 0 1 Q1 0 1
0 1 0 1 0 1
0 A
0 D
0 0 A
0 B
0 0 A
0 B
0
2 3 2 3 2 3
1 B
0 C
0 1 D
0 C
0 1 C
0 D
0
Índice general.
CAPÍTULO 12 .............................................................................................................................................. 1
EQUIVALENCIA Y ASIGNACIÓN DE ESTADOS. ............................................................................... 1
12.1. ESTADOS EQUIVALENTES. .................................................................................................................. 1
12.2 MÉTODO DE REDUCCIÓN DE ESTADOS POR INSPECCIÓN. .................................................................... 1
12.3. REDUCCIÓN DE ESTADOS EN MÁQUINAS COMPLETAMENTE ESPECIFICADAS. ...................................... 2
12.3.1. Método de Reducción de Moore. Método de las Particiones. .................................................... 2
Ejemplo 12.1 ....................................................................................................................................................... 3
Algoritmo de las particiones de Moore. .............................................................................................................. 4
Ejemplo 12.2. ...................................................................................................................................................... 5
Ejemplo 12.3. ...................................................................................................................................................... 6
Ejemplo 12.4. ...................................................................................................................................................... 6
12.3.2. Método del diagrama de implicación......................................................................................... 8
12.3.3. Minimización de estados en máquinas incompletamente especificadas. ................................. 10
12.4. ASIGNACIÓN DE ESTADOS. ............................................................................................................... 10
12.4.1. Análisis del problema de asignación. ...................................................................................... 10
Ejemplo 12.5. ....................................................................................................................................... 14
12.4.2. Estrategias de asignación. ....................................................................................................... 15
12.5 REGLAS PARA LA ASIGNACIÓN DE ESTADOS...................................................................................... 15
Regla de Alta prioridad: ...................................................................................................................... 15
Regla de Prioridad Media: .................................................................................................................. 16
Regla de Baja Prioridad: ..................................................................................................................... 16
Análisis de las reglas. .......................................................................................................................... 17
Ejemplo 12.6. ....................................................................................................................................... 18
Asignación one-hot. ............................................................................................................................. 21
Ejemplo 12.7. ....................................................................................................................................... 23
Ejemplo 12.8. ....................................................................................................................................... 25
12.6 DESCOMPOSICIÓN DE MÁQUINAS SECUENCIALES. ............................................................................ 26
PROBLEMAS RESUELTOS. .......................................................................................................................... 27
Problema 12.1. ..................................................................................................................................... 27
Problema 12.2. ..................................................................................................................................... 31
Problema 12.3. ..................................................................................................................................... 32
Problema 12.4. ..................................................................................................................................... 34
ÍNDICE GENERAL. ...................................................................................................................................... 36
ÍNDICE DE FIGURAS ................................................................................................................................... 37
Índice de figuras
Capítulo 13
13.1. Contadores.
En los diagramas de estados de contadores, no suelen anotarse las entradas, el cambio de estado
se produce con el canto del reloj; es decir, se cuentan los cantos del reloj.
La asignación de estados se elige de tal manera que el estado refleje la cuenta; debido a esto son
máquinas de Moore.
Los diseños pueden efectuarse con JK, y también con D. Las ecuaciones con flip-flops de tipo D
pueden implementarse directamente con lógica programable.
Pueden clasificarse según la forma de contar en contadores binarios, bcd, o en contadores con
secuencias especiales. También pueden ser progresivos o regresivos, si cuentan en forma
ascendente o descendente respectivamente.
2 3
1 10 00
Q1+ Q0+
Figura 13.2. Matriz de transiciones contador módulo 4.
reset’
rst rst
J Q0 J Q1
K K
clk clk
clk
reset
000
Q2Q1
Q0 00 01 11 10 111 001
0 2 6 4
0 001 011 111 101
1 3 7 5 110 010
1 010 100 000 110
Notar que en el diagrama de estados, no hay señal de entrada asociada a las transiciones. El
cambio de estado se produce con el canto del reloj. La salida es el estado, y el diagrama
corresponde a un modelo de Moore.
Resultan:
Q2+ = Q1Q0Q2' + Q2(Q1' + Q0') = J2Q2' +K2'Q2 = D2
Q1+ = Q0Q1' + Q0'Q1 = J1Q1' +K1'Q1 = D1
Q0+ = 1Q0' + 0 Q0 = J0Q0' +K0'Q0 = D0
En el caso de emplear flip-flops de tipo D, los programas resultan por simple lectura del mapa
de la matriz de transiciones, ya que: Di = Qi+
Para diseño con JKs, conviene leer los mapas buscando los factores de Qi y Qi'. Y luego
comparar los coeficientes de las ecuaciones características para encontrar los Ji y Ki'.
Se logran:
J2 = Q1Q0 K2 = Q1Q0
J1 = Q0 K1 = Q0
J0 = 1 K0 = 1
Usando flip-flops JKs, el diseño puede representarse por el esquemático de la Figura 13.5:
+Vcc
reset’
clk
Notar que los flip-flops operan con el canto de bajada del reloj.
Se destaca un reset asincrónico: cuando la señal reset' (de lógica negativa) tiene un canto de
bajada, se activa. Entonces, en ese momento, todos los flip-flops van a cero (ver marcador 1 en
la Figura 13.6), y se tiene al contador en el estado inicial. Permanece en ese estado hasta que se
desactiva la señal reset'; es decir cuando reset' = 1, luego de lo cual, en el próximo canto de
bajada del reloj, se pasará al próximo estado 001. El pequeño círculo que está en la entrada de
reset, indica que es una señal de lógica negativa; y es convencional describirla con el nombre
negado: reset'.
Las formas de ondas muestran el tiempo de propagación de los flip-flops (ver marcador tf en la
Figura 13.6); es decir el tiempo que transcurre desde el canto hasta que se tiene nivel estable en
las salidas Q de los flip-flops.
Nótese que todas las salidas cambian en el mismo momento, y que permanecen estables entre
cantos de bajada del reloj.
rst'
clk
Q2
Q1
Q0
1 tf
Figura 13.6. Formas de ondas contador módulo 8.
1 5 13 9
01 0010 0110 1110 1010
3 7 15 11
11 0100 1000 0000 1100
2 6 14 10
10 0011 0111 1111 1011
Resultan:
Q3+ = Q1Q0Q2Q3' + (Q2'+ Q1' + Q0') Q3 = J3Q3' +K3'Q3 = D3
Q2+ = Q1Q0Q2' + Q2(Q1' + Q0') = J2Q2' +K2'Q2 = D2
Q1+ = Q0Q1' + Q0'Q1 = J1Q1' +K1'Q1 = D1
Q0+ = Q0' = J0Q0' +K0'Q0 = D0
+Vcc
reset’
clk
Las formas de ondas de Q0, Q1, Q2, Q3, clk y rst se ilustran a continuación:
Q0
Q1
Q2
Q3
clk
rst
Si los períodos del reloj, de Q0, Q1, Q2 y Q3 son: Tc, T0, T1, T2 y T3 respectivamente, se
tienen:
T0 T1 T2 T3
Tc
2 4 8 16
+Vcc
reset’
clk
Este diseño, sigue siendo sincrónico, pero aumenta el período mínimo que puede tener el reloj
para el funcionamiento correcto de Q3. Ahora se tiene que el período mínimo queda dado por:
(tf +2 tc + tsu+ tskew), el cual implica una frecuencia máxima menor que la del diseño anterior.
reset’
clk
A continuación se muestran las formas de ondas. Los tiempos en que este contador permanece
en cada estado no son regulares.
clk
Q0
Q1
Q2
Q3
rst'
Figura 13.12. Formas de ondas contador ripple.
reset’
clk
Debe notarse que el primer flip-flop requiere un set asincrónico para iniciar el funcionamiento
del contador. Además, como puede observarse en las formas de ondas, los estados por los que
pasa el contador están restringidos a una secuencia determinada. Pasa para la configuración de
la Figura 13.13, por: 0001, 0010, 0100, 1000.
Q0
Q1
Q2
Q3
clk
rst
Una variación, que permite duplicar los estados del "ring counter", es el contador de Johnson.
Debe notarse que Q3 se conecta a K0, y que Q3' se conecta a J0. Este contador pasa por ocho
estados:
0000, 0001, 0011, 0111, 1111, 1110, 1100, 1000.
reset’
clk
Q0
Q1
Q2
Q3
clk
rst
En la familia TTL existen diversos tipos de contadores. Uno muy versátil es el 74163, que tiene
señales de carga y clear sincrónicas. Lo cual permite cargar un valor de cuenta inicial y también
dejar en cero en forma sincrónica con el reloj. También se dispone de una señal que está alta
cuando se está en el estado más alto; es decir cuando el contador pasa al estado 1111, la señal se
denomina RCO (ripple carry output).
Los controles anteriores permiten diseñar contadores especiales. Por ejemplo uno que cuente
desde un valor inicial hasta 1111 (se logra conectando rco a la señal load).
Similar esquema suele emplearse en los temporizadores de procesadores y microcontroladores,
donde además de los recursos habituales de aritmética y lógica se agrega un contador, con
controles sincrónicos, denominado usualmente “timer”.
Otro contador, que puede implementarse con estos controles, es uno que cuente desde 0000
hasta un valor dado; para ello se requiere decodificar el estado y con esto alimentar la señal
clear.
No es recomendable emplear las entradas asincrónicas de los contadores para diseños como los
descritos antes; en este caso debe restringirse el uso de los controles asincrónicos sólo para
establecer el estado inicial.
load’
PE
TE
clear’
P0 Q0
74163
P1 Q1
P2 Q2
P3 Q3
RCO
clk
Los controles clear’ y load’ se definen de lógica negativa, esto implica que la limpieza a cero
del estado del contador se logra con el canto de bajada de clear’. Como este control es
sincrónico, el instante preciso, en que se produce la acción, es el canto de subida del reloj luego
de que clear tiene un canto de subida. La Figura 13.17a, muestra la especificación del contador
mediante una tabla de verdad.
De los diseños de los contadores binarios módulos 4, 8 y 16, pueden inducirse las siguientes
ecuaciones, sin efectuar desarrollos. Lo mismo puede decirse para contadores módulo una
potencia de dos: 64, 128, etc.
000
Q2Q1
Q0 00 01 11 10 001
0 2 6 4
0 001 011 000 101
111 010
1 3 7 5 110
1 010 100 110
Q2Q1 000
Q0 00 01 11 10 001
0 2 6 4
0 001 011 101 111
110 010
1 3 7 5
1 010 100 000
101 011
Q2+ Q1+ Q0+ 100
Resultan:
Q2+ = Q1Q0Q2'+Q0'Q2 = J2Q2' +K2'Q2 = D2
Q1+ = Q2'Q0Q1' + Q0'Q1 = J1Q1' +K1'Q1 = D1
Q0+ = Q0' + 0 Q0 = J0Q0' +K0'Q0 = D0
En la familia TTL existen contadores asincrónicos como el 7493 que pueden contar en módulo
8 ó 16. Y el 7490 que puede contar en módulo 5 o por décadas (Módulo 10).
Se denomina registro a una serie de flip-flops agrupados, con reloj y señales de control común.
En los de desplazamiento se transfiere información de una celda (o flip-flop) hacia la adyacente,
dentro del mismo registro. Esta operación se llama corrimiento (shift). El corrimiento puede ser
Debe considerarse en forma especial los bordes. Indicando con qué se llena el hueco que se
produce; y especificando que se hace con el bit que sale del registro.
13.2.1 Usos.
Se desea efectuar un corrimiento a la derecha. Es decir, con el canto del reloj, el contenido del
flip-flop Q0 pasa a Q1. Alternativamente, lo que se desea es que el próximo estado de Q1 sea el
valor actual de Q0.
J0 Q0 J1 Q1
x
K0 K1
Q0' Q1'
clk
Se logran: J0 = x; K0 = x'
reset’
rst rst rst rst
x
J Q0 J Q1 J Q2 J Q3
K K K K
clk clk clk clk
clk
x
rst
clk
Q3
Q2
Q1
Q0
La componente 7491 es un 8-bit shift register, serial-in serial out gated input.
Funciones 74LS194.
CLR S1 S0 CLK SL SR A B C D QA QB QC QD Función
L X X X X X X X X X L L L L Clear
H X X L X X X X X X Qa Qb Qc Qd Hold
H H H ↑ X X a b c d a b c d Load
H L H ↑ X H X X X X H Qa Qb Qc Shift R
H L H ↑ X L X X X X L Qa Qb Qc Shift R
H H L ↑ H X X X X X Qb Qc Qd H Shift L
H H L ↑ L X X X X X Qb Qc Qd L Shift L
H L L ↑ X X X X X X Qa Qb Qc Qd Hold
Con: SR shift right serial input; SL shift left serial input; A, B, C, D entrada paralela; QA,
QB, QC, QD salida paralela. S0 y S1 entradas de control. La señal CLR es un control
asincrónico, que coloca en cero los flip-flops. El evento que sincroniza las transferencias es el
canto de subida de la señal CLK.
A partir del esquemático de la Figura 13.23, se obtienen las siguientes ecuaciones, asumiendo
flip-flops Ds, en lugar de SRs. Debe notarse que el estado hold se logra pasando por una
compuerta el reloj externo. Las ecuaciones siguientes permiten una descripción a nivel de
compuertas y flip-flops.
13.3. Registros.
Se denomina registro a una colección de flip-flops con lógica y controles similares. Suelen
compartir el reloj, y las líneas asincrónicas de set y clear.
D Q0 D Q1 D Q2 D Q3
clk
In D Q0 D Q1 D Q2 D Q3
clk
Si se agrega un decodificador, que tenga como entradas a las salidas del registro de la Figura
13.25, puede generarse un detector de una secuencia de 4 bits, cada vez que ésta se presente.
entradas
direcciones contenidos
clk
Usar un dispositivo programable con salidas de registro; con esta arquitectura, las
realimentaciones del estado son internas.
PLD
entradas salidas
clk
Este esquema se emplea para diseñar unidades de control en firmware, o de lógica alambrada.
13.4.3. Secuenciador.
Una variante del esquema basado en ROM, es emplear, para registrar el estado, un contador
sincrónico con funciones de carga paralela, clear e incrementar; y programar la función de
próximo estado en función de estas señales.
Este esquema se denomina de microsecuenciación y se emplea en diseños de la unidad de
control de procesadores.
Ejemplo 13.1.
0000
inc
0001
load load
x= 0 load load load x= 4 x= 5
x=1 x= 2x= 3 load
0100 0110 1000 1011 0011 0010
inc inc
inc 1001 1100
inc
inc
El contador registra el estado, y sus salidas están conectadas a las direcciones de la memoria. El
contenido de la memoria son los bits: C, I, L que están conectadas a las señales Cero,
Incrementar y Cargar del registro; además pueden grabarse en la memoria, los diversos bits de
salida que se requieran asociados a cada estado (esquema de Moore).
Nótese que los nombres binarios de los estados se eligen para ocupar lo más eficientemente que
sea posible la señal de cuenta o incremento del contador.
Al estado 0000, se llega después del reset inicial. Si la naturaleza del proceso secuencial es
repetitiva, al terminar los diferentes recorridos de estados se retorna al estado inicial. Para esto
se emplea la señal Cero.
Esta información puede codificarse en una ROM pequeña, o implementarse mediante un PLD.
Debe notarse que en la ROM del secuenciador no se almacena el próximo estado. Esto puede
significar un ahorro importante de memoria, si existe un pequeño número de estados con
múltiples bifurcaciones.
En caso de existir varios nodos con bifurcaciones, es preciso definir otras señales de carga, una
por cada nodo con bifurcaciones, y también igual número de tablas de Despacho. La señal Load
del contador es activada por el or de las señales de carga de las tablas de despacho.
L C Inc I C L Salidas
Entradas
Un uso frecuente de las máquinas secuenciales sincrónicas es ejercer control sobre dispositivos
asincrónicos con los que se desea intercambiar datos. Un ejemplo de esta situación es la
conexión de un sistema sincrónico con memorias o periféricos.
Para ilustrar consideraremos un dispositivo que genera datos. En la Figura 13.33, se muestra un
diagrama de bloques, indicando las señales de entrada y de salida.
comando
habilita datos
ocupado
Se envía un pulso de comando que inicia la actividad del periférico, luego de un tiempo el
dispositivo indica que está procesando el requerimiento con la señal ocupado; cuando los
nuevos datos generados por el dispositivo están listos para ser usados, se habilita la salida,
permitiendo de este modo que los datos estén disponibles en el bus de salida. Cuando la salida
está deshabilitada el bus de datos está en un estado de alta impedancia, lo cual permite que
varios dispositivos compartan el bus de datos.
El primer paso del diseño consiste en estudiar la hoja de datos del dispositivo, analizando los
requerimientos temporales. En la Figura 13.34 se muestran las formas de ondas con sus
especificaciones de tiempo.
Luego del canto de bajada del pulso de comando, transcurre un tiempo de retardo hasta que el
dispositivo inicia su actividad, sea tr = 700 ns. Este tiempo es el máximo indicado por el
fabricante.
Luego del canto de bajada de ocupado, debe habilitarse la salida, pero los datos estarán
disponibles luego de transcurrido el tiempo de acceso al bus, sea este tiempo tb = 250 ns. Luego
de esto se tienen nuevos datos válidos en el bus de salida, y se podría proceder a su captura. Una
vez almacenados los datos se deshabilita el bus, subiendo la señal habilita. El dispositivo aún
mantiene los datos en el bus un tiempo antes de entrar en flotación, sea este tiempo tf = 150 ns.
comando
ta
ocupado
tr tp
habilita
tb tf
datos validos
Por otro lado se dispone de un sistema sincrónico que opera con un reloj de 5 MHz, lo cual
implica un período de reloj de 200 ns.
La Figura 13.35, muestra el entorno del controlador. El sistema sincrónico genera las señal de
reset, para colocar en un estado inicial al controlador; la señal lea para iniciar la lectura; y recibe
datos
clk
Debe notarse que las señales que interactúan entre el controlador y el sistema si bien están
sincronizadas por el mismo reloj, lo hacen en cantos diferentes. Esta elección se realiza para
garantizar el cumplimiento de las reglas de sincronización de los flip-flops del controlador y del
sistema, tanto en el tiempo de setup como en el de mantenimiento (hold). Lo cual se ilustra en el
diagrama de la Figura 13.36.
A la izquierda se muestran las señales lea o reset como pulsos de un ancho del reloj de
duración, sus cambios ocurren en los cantos de bajada del reloj, de este modo los flip-flops del
controlador tomarán muestras de sus entradas en los cantos de subida del reloj, instante en que
ambas señales estarán estables. A la derecha se ilustra que el registro que almacena los datos
tendrá su habilitación estable en el canto de bajada del reloj, ya que la señal capture, que
proviene del controlador, cambia entre cantos de subida del reloj.
clk
lea
comando
E0 E1 E2 E3
Para lograr el requerimiento de ancho mínimo del pulso comando, debemos mantener baja esta
señal dos períodos del reloj, de este modo la señal tendrá un ancho de 400 ns, que es levemente
mayor al requisito de 350 ns como ancho mínimo. Lo anterior implica disponer de dos estados
E1 y E2, durante los cuales la señal comando esté en 0. La Figura 13.38, muestra la parte del
diagrama de estados que controla la generación de la señal comando, la cual se muestra con la
letra c, en el interior del estado del diagrama de Moore.
reset
E0
lea=0 c=1
lea=1
a
E1
c=0 ocupadoS=0
b
E2 E3
c=0 d c=1
Los estados E1 y E2 se emplean para temporizar, por esta razón no se requieren cambios de las
entradas para el cambio de estado. Los instantes en que se producen los cambios al estado E2 y
E3, se muestran con los marcadores temporales b y d, en la Figura 13.37.
El estado E0 se usa para esperar el canto de subida de lea; el estado E3 se emplea para esperar el
canto de subida de ocupadoS, donde esta señal representa la sincronización de la señal ocupado,
generada por el dispositivo asincrónico que se desea controlar. La señal ocupadoS en el peor
caso tiene un retardo de dos períodos de reloj respecto de la señal ocupado, ya que para
sincronizarla se la pasa por dos flip-flops Ds.
La Figura 13.39 muestra la transición al estado E4, en el canto marcado con el identificador e.
Que corresponde al siguiente canto de subida en el que se ha sensado ocupadoS en alto.
e f g
clk
ocupadoS
habilita
capture
E3 E4 E5 E6 E0
Permanece en E4 hasta que llegue el canto de bajada de ocupadoS; luego en el canto de subida
del reloj, se pasa al estado E5, en el cual se genera el control habilita=0. Se decide generar la
señal capture en el estado siguiente E6, ya que como los datos se graban con el canto de bajada
del reloj, esto ocurrirá 300 ns luego del instante denominado f en el diagrama. Lo cual garantiza
que se tendrán datos válidos en el bus de tercer estado del dispositivo. Finalmente se requiere
deshabilitar la salida y terminar el registro de los datos, esto puede lograrse si el estado inicial
produce los controles: capture=0 y habilita =1. Esto permite la especificación del diagrama de
estado completo del controlador, que se muestra en la Figura 13.40.
reset
E0 E6
capture=1
lea=0 c=1 h=0
lea=1 g
a
E5
E1
h=0
ocupadoS=0
c=0
ocupadoS=0 f
b
E2 E3 e E4
c=0 d c=1 ocupadoS=1 h=1
ocupadoS=1
// Estados internos
reg [2:0] estado;
reg [2:0] proximoestado;
// Declaraciones de estado
parameter E0 = 0;
parameter E1 = 1;
parameter E2 = 2;
parameter E3 = 3;
parameter E4 = 4;
parameter E5 = 5;
parameter E6 = 6;
module test_v;
// Inputs
reg clk;
reg reset;
reg lea;
reg ocupado;
// Outputs
wire capture;
initial begin
// Initialize Inputs
clk = 0; reset = 0; lea = 0; ocupado = 0;
// Wait 100 ns for global reset to finish
#100;
endmodule
Problemas resueltos.
1 3 7 5
1 010 100 ΦΦΦ ΦΦΦ
Q2+Q1+Q0+
1 3 7 5
1 000 010 ΦΦΦ 100
Q5+Q4+Q3+
La siguiente tabla muestra el estado de los contadores, los valores de los decodificadores de
cuenta igual a tres (C3), e igual a uno (C1). También se ilustra el estado de la salida,
considerando que desde el canto de subida de C3 la salida Z toma valor 1, y que Z toma valor
cero desde el canto de subida de C1.
Mod5 0 1 2 3 4 0 1 2 3 4 0 1 2 3 4 0 1 2 3 4 0 1 2 3
Mod7 0 6 5 4 3 2 1 0 6 5 4 3 2 1 0 6 5 4 3 2 1 0 6 5
C3 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1
C1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0
Z 0 0 0 1 1 1 0 0 1 1 1 1 1 0 0 0 0 0 1 1 0 0 0 1
También se considera correcta la siguiente tabla que muestra los cambios de Z con los cantos de
bajada de las señales C3 y C1.
Mod5 0 1 2 3 4 0 1 2 3 4 0 1 2 3 4 0 1 2 3 4 0 1 2 3
Mod7 0 6 5 4 3 2 1 0 6 5 4 3 2 1 0 6 5 4 3 2 1 0 6 5
C3 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1
C1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0
Z 0 0 0 0 1 1 1 0 0 1 1 1 1 1 0 0 0 0 0 1 1 0 0 0
c1) Observando un valor de uno de los contadores (por ejemplo la cuenta 4 del contador módulo
5), se aprecia que Z a veces es uno y otras es cero, ya que depende del valor anterior de Z.
c2) Si puede construirse una matriz de transiciones y Z+ depende del valor actual de Z.
En el caso que Z+ no dependiera de Z se trataría de una situación combinacional.
C3C1
z 00 01 11 10 0 ,11
Z=0
0 2 6 4
0 0 0 0 1
1 3 7 5 1 10
1 1 0 0 1
Z=1
0
z+
d) La implementación anterior conduce a las siguientes formas de ondas, donde z cambia con
los cantos de bajada de las señales C3 y C1. El próximo estado se calcula con los valores
actuales y toma su valor después del canto sincronizante.
clk
C3
C1
Alternativamente las señales C3 y C1 pueden emplearse para comandar un latch de nor (que
opera con cantos de subida), y tal que el comando set sea C3C1’, y el comando reset sea: C1.
clk R
C1 Z
C3
S
C1
C3C1’
En el largo plazo la señal z es periódica, después de 35 (5*7) pulsos del reloj, ambos contadores
pasan por cero simultáneamente.
Mod5 0 1 2 3 4 0 1 2 3 4 0 1 2 3 4 0 1 2 3 4 0 1 2 3 4 0 1 2 3 4 0 1 2 3 4 0
Mod7 0 6 5 4 3 2 1 0 6 5 4 3 2 1 0 6 5 4 3 2 1 0 6 5 4 3 2 1 0 6 5 4 3 2 1 0
Problema 13.2.
inicial 1/1
A 0/0
B
0/0
1/0
0/1
C
1/0
Solución.
a) Se genera un uno en la salida después de una secuencia, de cualquier largo, de ceros o de
unos de la entrada.
Más específicamente, se genera salida uno cuando llega un:
uno en secuencias de uno o más ceros seguidos 01, 001, 0001, 00001, ....
cero en secuencias de uno o más unos seguidos 10, 110, 1110, 11110, ....
b) Se tiene
x
Estado 0 1
A B/0 C/0
B B/0 A/1
C A/1 C/0
Estado+
Existen dos asignaciones posibles, que cumplen todas las reglas, excepto que B y C sean
adyacentes:
Asig 1 x Asig 2 x
Q1Q0 0 1 Q1Q0 0 1
A=00 01/0 10/0 A=00 10/0 01/0
B=01 01/0 00/1 C=01 00/1 01/0
11 dd/d dd/d 11 dd/d dd/d
C=10 00/1 10/0 B=10 10/0 00/1
Q1+Q0+/z Q1+Q0+/z
Q1+ = x Q0’; Q0+ = x’Q1’ Q1+ = x’ Q0’ ; Q0+ = xQ1’
z = x’ Q1 + x Q0 z = x’Q0 +x Q1
Se obtiene:
x
Q1
D1
Q1’
Q0
D0
Q0’
Problema 13.3.
Contador binario
Diseñar un contador binario con salidas sincrónicas, que cuente en forma ascendente si
C = 1; y en forma descendente si C = 0. Si M = 0 debe contar en módulo 5; si M = 1, debe
contar en módulo 7.
Si se cambian los controles, debe ir a la cuenta siguiente, en caso que ésta exista; si la cuenta no
existe debe ir a la cuenta 0.
Solución:
a)
111 1 , 00
000 1
0, 11 001
0
01 01 1
00 0
10
110 010
10
01
0 1
11
101 0 0 011
11 100
1
Q2Q1Q0
CM
CM
Q2Q1Q0 00 01 11 10
000 100 110 001 001
001 000 000 010 010
011 010 010 100 100
010 001 001 011 011
110 000 101 000 000
111 000 110 000 000
101 100 100 110 000
100 011 011 101 000
Q2+Q1+Q0+
c)
Q2Q1
Q0 00 01 11 10
0 2 6 4 Q2+ = Q2Q1’ +Q2’Q1Q0 = J2Q2’+K2’Q2
0 001 011 000 101
Q1+ = Q1’Q0 +Q2’Q1Q0’ = J1Q1’+K1’Q1
1 3 7 5
010 100 000 110 Q0+ = Q2’Q0’+Q1’Q0’ = J0Q0’+K0’Q0
1
J2 = Q1Q0 K2 = Q1
J1 = Q0 K1 = Q2 + Q0
J0 = Q2’ + Q1’ K0 = 1
Estando L en cero, sólo pasa a uno cuando llega a la cuenta 3; estando en estado uno el latch
pasa a cero cuando entra a la cuenta cero. Se tiene entonces la matriz de transiciones siguiente:
Q2Q1Q0
L 000 001 011 010 110 111 101 100
0 0 0 1 0 0 0 0 0
1 0 1 1 1 1 1 1 1
L+
Q2’ S’ L
Q1
Q0
Q2’ R’
Q1’
Q0’
Problema 13.4.
x
T Q1 D Q0
Flip-flop T Flip-flop D
clk
clk
t=0
Solución:
Del esquemático, se tienen:
T = X +Q0 ; D = Q1 ; Z = X + Q1
Ecuaciones de los flip-flops: Q1+ = T Q1 ; Q0+ = D
Reemplazando en las ecuaciones de los flip-flops, se obtienen:
Es un modelo de Meely.
Como los flip-flops operan con cantos de subida, se tiene la siguiente secuencia de entrada:
X = {0, 1, 0, 0, 1, 0 ..}
Se genera la secuencia de estados y salida:
Q1Q0/Z = 00/0, 10/1, 11/1, 01/1, 10/1, 11/1..}
x
Q1Q0 0 1
00 00/0 10/1
01 10/0 10/1
11 01/1 01/1
10 11/1 01/1
Q1+ Q0+/Z
Las formas de ondas de Q1 y Q0 muestran los retardos de propagación a través de los flip-flops.
El cual se considera despreciable respecto del período del reloj.
La forma de Z, ilustra la dependencia de la salida con la entrada, y también asume que el retardo
a través de la compuerta or, es despreciable respecto del período del reloj. Debe notarse que Z
cambia entre cantos de subida del reloj; es decir, no es una señal sincrónica, lo cual es
característico del modelo de Meely.
clk
t=0
Q1
Q0
Solución.
Matriz de transiciones:
Q2Q1
Q0C 00 01 11 10
0 4 12 8
00 001 011 111 101
1 5 13 9
01 001 110 111 000
3 7 15 11
11 011 010 101 100
2 6 14 10
10 010 100 000 110
Para D1:
Q1+ = Q1Q0'+Q2'Q0C+Q1'Q0C' =D1
Índice general.
CAPÍTULO 13 ............................................................................................................................................1
BLOQUES BÁSICOS SECUENCIALES.................................................................................................1
13.1. CONTADORES. ..................................................................................................................................1
13.1.1. Contador sincrónico binario módulo 4. ...................................................................................1
13.1.2. Contador sincrónico binario módulo 8. ...................................................................................3
13.1.3. Contador sincrónico binario módulo 16. .................................................................................5
13.1.4. Contador binario de ripple, con salida asincrónica. ...............................................................7
13.1.5. Contador de anillo (ring counter). ...........................................................................................8
13.1.6. Contador de Johnson. ..............................................................................................................9
13.1.7. Contador integrado 74163. ....................................................................................................10
13.1.8. Contador sincrónico binario módulo 32. ...............................................................................12
13.1.9. Contador sincrónico módulo 7. ..............................................................................................12
13.1.10. Contador sincrónico módulo 6. ............................................................................................13
13.2. REGISTROS DE DESPLAZAMIENTO. ..................................................................................................13
13.2.1 Usos. .......................................................................................................................................14
13.2.2. Ejemplo de diseño. .................................................................................................................14
13.2.3. Registro de desplazamiento a la derecha de largo 4. ............................................................15
13.2.4. Registros de desplazamiento TTL ..........................................................................................15
13.2.5. Registro universal 74194A. ...................................................................................................16
13.3. REGISTROS. ....................................................................................................................................18
13.3.1. Registro de almacenamiento. .................................................................................................18
13.3.2. Registro de desplazamiento....................................................................................................19
13.3.3. Diseño de máquinas en base a registros ................................................................................19
13.4. ALTERNATIVAS DE DISEÑO DE MÁQUINAS SECUENCIALES. ...........................................................19
13.4.1. Diseño basado en ROM. ........................................................................................................19
13.4.2. Diseño basado en PLD...........................................................................................................20
13.4.3. Secuenciador. .........................................................................................................................20
Ejemplo 13.1. .....................................................................................................................................20
13.5. DISEÑO DE CONTROLADORES. ........................................................................................................23
Especificación del dispositivo. ...........................................................................................................23
Especificación del sistema sincrónico................................................................................................24
Diseño del controlador. .....................................................................................................................25
Descripción del controlador en Verilog.............................................................................................28
Simulación del controlador. ...............................................................................................................29
PROBLEMAS RESUELTOS. ........................................................................................................................32
Problema 13.1. Contador...................................................................................................................32
Problema 13.2. ...................................................................................................................................35
Problema 13.3. ...................................................................................................................................37
Problema 13.4. ...................................................................................................................................40
Problema 13.5. ...................................................................................................................................43
ÍNDICE GENERAL. ....................................................................................................................................44
ÍNDICE DE FIGURAS .................................................................................................................................45
Índice de figuras
Capítulo 14
Se estudiarán algunos circuitos asincrónicos simples que son la base para construir los
diferentes tipos de flip-flops; mostrando las técnicas para lograr la sincronización mediante una
señal de reloj. Luego se analizan los multivibradores aestable y monoestable.
Se analizan en mayor profundidad las carreras y la forma de evitarlas; para finalmente ilustrar
las técnicas de diseño asincrónico basadas en diagramas de flujo y de estado.
Puede almacenarse un nivel lógico como carga en un condensador. El transistor nmos permite
cargar y descargar el condensador, el esquema tiene la ventaja de usar un solo transistor, pero
debido a las fugas (por no ser el dieléctrico ideal) se requiere refrescar la carga cada cierto
tiempo. Es la configuración que se emplea como base de las memorias dinámicas (DRAM).
Vin
C
Vref
VDD
Vin
Otra forma de analizar los inversores realimentados puede lograrse dibujando las características
de transferencia de cada transistor, en un solo par de ejes coordenados.
Vin2 Vout1
Vout2
Vin1
La probabilidad de que en una transición se llegue exactamente al estado inestable es muy baja.
14.1.1. Metaestabilidad.
Vout
V
Vout Vin Vin
R
A C
t
Con Vin(0) diferente de cero. T
lineal
Cuya solución es: Vin(t) = Vin(0) e t/ con = RC/(A-1). Además, en general Vout será mayor
que Vin, debido a la amplificación. Por esta razón si el voltaje de entrada aumenta, también lo
hará el de salida y se tendrá que después de un tiempo la tensión de salida satura al
amplificador.
A pesar que el circuito tiene realimentación positiva podría suceder que una determinada
conmutación no se produzca en un tiempo predeterminado. Para estudiar esto suponemos un
modelo simplificado lineal, antes que se sature el amplificador. En ese caso, tendremos:
Vin(T) = Vin(0) e T/
Vout(T) = A Vin(0) e T/ = V es decir, la salida se satura en T = ln( V/( AVin(0) ).
Con Vin(0) < V e -T/ /A, la salida Vout se saturará en un tiempo mayor que T. Entonces la
probabilidad de no llegar a un estado estable en un tiempo T, es el cuociente entre las
Se asume que Vin(0) tiene una distribución de probabilidad uniforme entre 0 y V. Puede
imaginarse un gran número de experimentos, algunos de ellos comenzarán con un valor menor
del voltaje inicial que el calculado antes y tomará un tiempo mayor que T para que la salida se
sature en un valor estable, esto se considera un ensayo fallido; los experimentos que comienzan
con un valor mayor se consideran exitosos.
Por otra parte, en un determinado intervalo las conmutaciones se producen en una fracción del
tiempo; esto contempla que no todo el tiempo se están efectuando transiciones. Sea f la fracción
del período del reloj durante la cual el voltaje de entrada esté sufriendo una transición. f se
expresa como el cuociente de lo que dura una transición, dividido por el intervalo entre
transiciones, y es la probabilidad que el voltaje de entrada esté efectuando una transición.
Entonces la probabilidad que en una transición, no se llegue a estado estable en un tiempo T,
queda dada por: p(transición no estable en T) = f e -T/ /A
Con los siguientes valores: A = 10 (una ganancia razonable), con una constante de tiempo de 1
nseg, con f = 0,1; y una frecuencia de cambios de 100MHz puede calcularse el valor de T para
cumplir con cierta probabilidad.
Si asumimos un caso en un año, en que no se alcance el estado estable en T, podremos calcular
el tiempo T. Se asume 100*106 cambios por segundo (sólo cantos de subida o de bajada), en
un año se tendrán: 365*24*60*60 segundos, y por lo tanto:
p = 1/ (3,15 *1015) resulta T = 31 ns.
Con una frecuencia de 100 MHz, y esperando 100 ns, se puede calcular que habrá un caso en
que no se llegue a estabilidad en 1030 años. Puede concluirse que con "buena" probabilidad no
se entra al estado inestable.
14.1.2. Latchs.
Entonces tenemos que dos inversores forman una celda de memoria estática, lo que resta es un
método para almacenar valores lógicos en la celda:
El siguiente esquema ilustra la forma de hacer llegar valores y guardarlos en una celda estática.
cargar
dato valor almacenado
grabar
Figura 14.5 Lectura y escritura.
Existen dos circuitos que cumplen los requerimientos anteriores, y se denominan latch (cerrojo,
picaporte, pasador); uno en base a NAND , el otro en base a NOR. La denominación de las
entradas se explicará más adelante.
S' R
Q Q
Q' Q'
R' S
Los siguientes diagramas muestran valores estables almacenados en las celdas estáticas de 1 bit,
o latchs.
1 1 1 0 0 0
1 0
0 1 1 0 0 1
1 0
14.2.1. Esquemático.
Qn
Se emplea el nombre latch para referirse a una memoria de un bit, y cuando no existe una señal
de reloj. En éstos, las salidas cambian cuando las entradas cambian. En flip-flops las salidas
cambian respecto al reloj.
Apenas ocurran cambios en las entradas de las compuertas (R', S', q y qn) se producirán
simultáneamente los cambios en las salidas Q o Qn, ya que se asume que estas compuertas no
tienen retardo.
El próximo valor que toma q, después de S, será el valor de Q. Dicho de otra forma: el valor
presente de Q será el próximo valor que tome q. Análogamente para Qn.
Analíticamente: Gráficamente:
Q(t)
Q(t) = q(t + S)
Qn(t) = qn(t + R) to t
q(t)
Denominaremos:
estado presente al conjunto: {q, qn}
estado próximo al conjunto: {Q, Qn}
Salida al estado presente (máquina de Moore).
Debido a que, como se verá, los eventos que inician los cambios están asociados a los cantos de
bajada de las señales de entrada, se las denomina S´ y R´, siguiendo el convenio general para
identificar a señales de lógica negativa.
En el esquema general de máquina secuencial:
x FPE FS
Y y z
Se destaca que los retardos pueden considerarse como una memoria de corto plazo.
Memorizan el valor anterior de una entrada al bloque de retardo, durante segundos.
14.2.3. Ecuaciones.
En el caso del latch de nand, se tienen las siguientes ecuaciones asociadas a la red
combinacional ideal:
Q = (S' qn)' = S''+qn' = S + qn'
3 7 15 11
11 11 10 00 01
2 6 14 10
10 11 10 10 11
Q, Qn
Figura 14.11 Matriz de transiciones del latch de NAND.
Si las entradas no cambian, se está en una de las columnas. Un cambio de una de las entradas
implica un cambio de columna. En una determinada columna, si el próximo estado es igual al
estado presente, se dice que ese estado es estable. En caso contrario, se produce una transición
o cambio de estado.
Si dos o más variables de estado deben cambiar, se dice que se produce una “carrera”.
Si la carrera origina diferentes transiciones (dependiendo de qué entrada cambia primero), pero
finalmente se llega a un mismo estado estable, la carrera se denomina no crítica. Si se llega a
estados estables diferentes es una carrera crítica.
01 00,10 00,01
10
11
00
11,10,01,00
11
00
Con la condición S'+R'=1, el sistema sólo puede estar en uno de los dos estados estables, que
llamaremos set y reset. En este caso, y una vez terminadas las transiciones, se cumple que qn es
q'.
set = {q = 1, qn = 0}
reset = {q = 0, qn = 1}
Nos interesa estudiar secuencias de las entradas, que llevan de un estado estable al otro. Y que
no se ocupe el estado estable 11, ya que en este caso qn no es la negación lógica de q.
a) Transición set a reset
S'R' S' t
q qn 00 01 11 10
0 4 12 8
00 11 11 11 11 R' t
1 5 13 9
01 11 11 01 01 Q
t
3 7 15 11
11 11 10 00 01 Qn t
S
2 6 14 10 q
10 11 10 10 11 t
qn
R t
Q, Qn
R S
set | | reset
.
Figura 14.13 De set a reset.
Estando en reset, un canto de subida en R', no produce cambios. Tampoco se producen cambios
de estado con pulsos en R'. Sólo responde al primer canto de bajada en R', estando en set.
b) Transición de reset a set
Estado inicial: q=0, qn=1. Entradas en S' = 1, R' = 1. Se analiza cuando ocurre un canto de
bajada en S'.
R'
S'R' t
q qn 00 01 11 10
0 4 12 8 S'
00 11 11 11 11 t
1 5 13 9
01 11 11 01 Qn
01 t
3 7 15 11 Q
11 11 10 00 01 t
S
2 6 14 10 qn
t
10 11 10 10 11 R
q
t
Q, Qn
S R
reset | | set
Figura 14.14 De set a reset.
R'
mayor que S
R'
mayor que R
R'
Si se excitan ambas variables de estado a la vez, dependiendo de los retardos de las compuertas
puede que una u otra cambie primero, (pero no se queda en un estado estable) ya que
inevitablemente se producirá el cambio de la más lenta. En cualquier caso se llega a un estado
inestable en que ambas variables de estado vuelven a excitarse, generando una oscilación.
En los casos c1 y c2 (con tiempo entre cantos de subida menores que los retardos) también se
producen problemas; ya que las entradas cambian durante las transiciones internas. Para evitar
esta incertidumbre, se suele evitar el estado 11. Esto se logra con la condición S'+R'=1. (Es
decir, que ambas entradas no estén simultáneamente en cero). Además, en estas circunstancias
(caso c), el latch cambia con cantos de subida.
Normalmente se ocupan 8 de los 16 casilleros de la matriz de transición. Las transiciones de set
a reset y viceversa que se analizaron antes.
S'R'
q qn 00 01 11 10
0 4 12 8
00
1 5 13 9
01 11 01 01
3 7 15 11
11 10 01
2 6 14 10
10 10 10 11
Q, Qn
Figura 14.18. Matriz de transiciones en modo confiable.
Nótese que esta expresión puede obtenerse a partir de: Q = S + qn’ y Qn = R + q’ deducidas
anteriormente, si se hace Qn = qn, y se eliminan estas variables.
Si está en reset: permanece en reset si ocurren pulsos en R'; pasa a set con canto de bajada de S'.
Si está en set: permanece en set si ocurren pulsos en S'; pasa a reset con canto de bajada de R'.
b a >
Q' R'
b >
R’
Q = S+ R
Normalmente S' y R' están en uno lógico, un pulso de corta duración en una de las entradas
produce el correspondiente cambio de estado. La duración del pulso debe ser mayor que el
retardo de ambas compuertas. El evento que inicia la conmutación es el canto de bajada.
Ambas entradas no pueden ser ceros.
Puede inferirse el funcionamiento del latch de NAND, mediante un análisis simplificado, éste
consiste en asumir una sola variable de estado:
R' S'
Q
S
R
q
1 2 7 5
1 1 1 1 0
Q+
Figura 14.23. Matriz de transiciones con un solo retardo.
11,01,00
11/10
0 00,01 1
10
Figura 14.24. Diagrama de estados simplificado.
Sin embargo esta simplificación no muestra los problemas del estado 11, y los riesgos de
oscilación al tener ambas entradas bajas. Esto se debe a que el efecto de la carrera entre las
entradas no se puede observar con un modelo obtenido con sólo un retardo de propagación, en
el cual sólo puede observarse Q. Puede restringirse la columna 00, y colocar próximos estados
superfluos.
La simulación de estos circuitos, presenta problemas a los programas simuladores. Pero puede
emplearse el siguiente esquema:
V1
Init
S' Q
V2
1
Qn
V3 R'
1
Si se marca el cuadro de mostrar el estado de las líneas, se verán todas no iniciadas o en tercer
estado, esto en el simulador. Si se hiciera correr la simulación, mostraría una oscilación en el
estado.
Init
Qn
Q
R'
S'
1 2 3 4 5
Figura 14.26. Formas de ondas generadas en la simulación.
Un pulso en R, inicia el cambio de estado (2). La simulación muestra los retardos entre las
señales que conmutan. Posteriores pulsos en R, no modifican el estado. No importa la duración
de estos pulsos.
Un canto de bajada en S', inicia el cambio a set (3). Posteriores pulsos en S, no modifican el
estado. No importa la duración de estos pulsos (4).
Estando en set, un pulso angosto de reset (5), en el caso de la figura de un tic, que también es la
propagación de una compuerta, confunden al simulador y se inicia una oscilación. Sucede que
Init
Qn
Q
R'
S'
1 2 3
Figura 14.27. Oscilación en latch de NAND.
Una aplicación común del latch de NAND es eliminar los rebotes mecánicos que se producen
en un interruptor. El siguiente circuito ilustra el funcionamiento.
5V
S'
2.2k
1 Q
S1 5V
2.2k Qn
R'
1
Se colocan resistencias de pull-up para fijar un uno lógico en las entradas al aire. Se emplea un
interruptor de dos posiciones. Se denomina SPDT (polo simple, doble garganta), es decir existe
un punto común, por donde se ingresa la señal, y normalmente un contacto está cerrado
(obviamente el otro está abierto). Se marcan NO (normaly open) y NC (normaly closed).
Este elimina rebotes requiere un interruptor de tres terminales, que suele denominarse SPDT.
Existen otros diseños, basados en interruptores de dos terminales (SPST simple polo, simple
throat), que pueden conectar o desconectar dos puntos.
El esquema siguiente ilustra cómo se agrega un reloj a un latch SR, en base a NAND.
Mientras enable esté bajo, las señales S' y R' estarán en uno, por lo que cumplen las condiciones
para funcionamiento normal del latch.
Se ilustran señales de preset' y clear', de lógica negativa, que permiten dejar en un estado inicial
al latch. Su operación sobrepasa a las excitaciones S' y R', en este sentido se dicen que son
asincrónicas con ellas, apenas ocurra un canto de bajada en estas señales, el latch permanecerá
en un estado determinado hasta liberar el control asincrónico, llevándolo a uno. Al igual que con
las señales R’ y S’, debe evitarse mantener preset’ y clear’ en cero al mismo tiempo.
preset'
Set
S'
Q
enable
Q'
R'
clear'
Reset
También puede pensarse que enable es una señal de reloj, que sincroniza al latch. En esta
situación, las entradas Set y Reset deben ser estables antes de un canto de subida del reloj. En el
canto de subida se inspeccionan las entradas y después de un tiempo de propagación, ocurre el
canto de bajada en S' o R'. Lo cual implica que para funcionamiento determinístico, no pueden
estar altas ambas entradas externas. Si se cumplen estas condiciones, sólo podrá existir un canto
de bajada en S' o R', garantizando la operación del latch SR.
clk
Set
S'
14.4.1. Esquemático.
q
Qn
S
Denominaremos:
estado presente al conjunto: {q, qn}
estado próximo al conjunto: {Q, Qn}
Salida al estado presente (máquina de Moore).
14.4.3. Ecuaciones.
Qn = (S + q )' = S'q'
SR
q qn 00 01 11 10
0 4 12 8
00 11 01 00 10
1 5 13 9
01 01 01 00 00
3 7 15 11
11 00 00 00 00
2 6 14 10
10 10 00 00 10
Q, Qn
Figura 14.32. Matriz de transiciones latch de nor.
En el diagrama se aprecian tres estados estables. Si el objetivo es usar el circuito para emplearlo
como elemento de memoria, y por lo tanto que q y qn sean el complemento la una de la otra, no
deberá usarse el estado estable 00; para lo cual basta restringir que ambas entradas puedan ser
uno simultáneamente.
00,01
00/10
10 01
10 11,01 11,10
01
00
11
11,10,01,00
00
11
Con la condición SR=0, el sistema sólo puede estar en uno de dos estados estables, que
llamaremos set y reset. En este caso, y una vez terminadas las transiciones, se cumple que qn es
q'.
set = {q = 1, qn = 0}
reset = {q = 0, qn = 1}
Nos interesa estudiar secuencias de las entradas, que llevan de un estado estable al otro. Y que
no se ocupe el estado estable 00, ya que en este caso qn no es la negación lógica de q.
La figura ilustra algunas secuencias:
S
R
Q'
Q
1 4 5
2 3
Estando en estado 00, un cambio simultáneo de las entradas a cero, produce una oscilación (4),
la cual se detiene al llevar el latch a reset. Finalmente en (5) se coloca en modo normal.
El diagrama de transiciones, marcando como superfluas los estados por los cuales nunca se
pasará, si se cumplen las restricciones para operación normal, se indica a continuación:
SR
q qn 00 01 11 10
0 4 12 8
00 01 10
1 5 13 9
01 01 01 00
3 7 15 11
11
2 6 14 10
10 10 00 10
Q, Qn
Formando grupos: (8, 10, 12, 14) y (2, 3, 10, 11), se logra:
Q+ = Sqn' + R' q
El mintérmino 8, que cubre la expresión que contiene qn', ocurre sólo durante la transición. En
estado estacionario se tiene qn = 0, por lo tanto, la ecuación característica puede plantearse
según:
S R Q(k+1)
0 0 Q(k)
1 0 1
0 1 0
1 1 ?
Figura 14.36. Tabla característica, latch de NOR.
Con SR = 0
No cambia estado con entradas bajas. Pasa a set con canto de subida en S.
Pasa a reset con canto de subida en R. Entradas altas causan indeterminación.
Q(k) Q(k+1) S R
0 0 0
0 1 1 0
1 0 0 1
1 1 0
Si está en reset: permanece en reset si ocurren pulsos en R, pasa a set con canto de subida de S.
Si está en set: permanece en set si ocurren pulsos en S; pasa a reset con canto de subida de R.
Normalmente S y R están en cero lógico, un pulso de corta duración en una de las entradas
produce el correspondiente cambio de estado. La duración del pulso debe ser mayor que el
retardo de ambas compuertas. Ambas entradas no pueden estar altas. El evento que inicia la
conmutación es el canto de subida. Este latch recuerda la última entrada que tuvo un canto de
subida.
Puede inferirse el funcionamiento del latch de NOR, mediante un análisis simplificado, éste
consiste en asumir una sola variable de estado:
R S Q
0.33k
S1 S Q'
0.33k
La señal G (por gate) habilita la entrada de cantos de subida hacia el latch de nor, y garantiza el
funcionamiento normal de éste. La entrada D se copia hacia la salida Q cuando G, que actúa
como reloj, está en nivel alto. Cuando G está en nivel cero, el latch mantiene el estado
almacenado. Se dice también que es un latch sensible al nivel.
R Q
G
D
Q'
S
Q(k) Q(k+1) S R
0 0 0
0 1 1 0
1 0 0 1
1 1 0
K R
Q
J Q'
S
J
K
S
R
Q
Q'
1 2 3 4
El latch de nor inicialmente está en set. En (1) llega un canto de subida en K, el cual origina un
canto de subida en el control interno del latch de NOR, llevando a uno la excitación R; lo cual
hace cambiar a Q y luego a Q'. El cambio de Q también origina un canto de bajada en R, lo cual
deja en condiciones normales al latch de NOR.
En (2) se aprecia una orden de set, en J. Lo cual lleva a excitar S, que inicia la conmutación del
latch interno; y el cambio de Q' lleva a cero a S, dejando en condiciones predecibles al latch.
En el instante (3) se inicia el modo toggle, que se detiene al llevar a modo hold al JK, en (4)
En el modo toggle, con J y K iguales a uno, se puede dejar pasar sólo una de las entradas hacia
el latch. Esto puede lograrse dejando pasar K si Q=1, ya que esto implica resetear el flip-flop.
Y dejar "pasar" J si Q=0.
K R
Q
K
R
clk
Q'
J S
J S
Este diseño tiene restricciones del ancho de pulso del reloj. Como puede comprobarse esta
restricción se produce en el modo toggle; es decir con J y K iguales a uno. Para el análisis se
asume que el flip-flop está en modo reset.
Cuando el reloj sube, habilita la excitación S, después de J. A su vez este cambio desencadena
la conmutación del latch, bajando Q' después de S, y luego subiendo Q después de R. Al
mismo tiempo que se levanta Q, se inicia la propagación, a través de la compuerta habilitada por
K y el reloj de un canto de subida en R, lo cual ocurre después de K. Si se llega a producir la
excitación R, el latch volverá a conmutar; salvo que el reloj sea angosto y baje antes que Q suba.
Es decir ancho del pulso del reloj debe ser menor que : S + J+ R
Q'
J
S R K
Figura 14.46. Formas de ondas conmutación JK.
En estos flip-flops, pueden cambiarse las entradas y salidas en el mismo pulso del reloj.
El pulso angosto del reloj se obtiene mediante redes de disparo; que básicamente derivan un
pulso de entrada. En estos circuitos, se requiere buena pendiente del reloj (no un pulso angosto),
para operación correcta.
Diseños de este tipo se encuentran en el chip 7470.
También puede explicarse el funcionamiento de los disparados por canto mediante un circuito
que genera un reloj muy angosto, que se produce asociado a un canto. El ancho del reloj
generado debe ser de menor ancho que S+ J+ R; si esto es así, cuando ya haya pasado por
estado 00 el reloj comenzará a estar en bajo, y no se activará R.
Con fines didácticos se muestra cómo puede lograrse un reloj angosto con una perturbación:
clk
cp
Generador
1
1
clk
cp
Figura 14.48. Formas de ondas.
Una variante de la idea anterior, es generar un pulso angosto asociado al canto de bajada del
reloj, luego de producirse el evento: canto de subida en J.
En este caso, con J=1, S’=clk + clk’, con clk’ atrasada respecto de clk; se produce perturbación a
la salida del OR, en el canto de bajada del reloj.
J J
S’
clk
J
J
clk
J
J’+clk’
S’
De este modo pueden generarse pulsos adecuados para el latch de nand, que registra los
cambios.
J S’ Q’
J
S
clk
Q
K R
K
R’
Los flip-flops JK suelen tener entradas asincrónicas de set y reset, que sobrepasan las entradas
sincrónicas. De esta forma la ecuación característica para un JK:
init
J Rmt Rsl
r v Q
Ssl Q'
K Smt
r v
clk clk'
Se ilustra la señal init, que inicia los latch, para la simulación, puede considerarse como una
señal asincrónica de preset.
1 3 4 5
2
a
En (4) se ingresa a modo hold, donde se advierte que no cambia el latch maestro, y que en el
latch esclavo se generan pulsos de set, que no cambian las salidas.
Desde (5) se inicia modo toggle. Donde se aprecian las secuencias de set, reset, set y reset del
maestro y las correlativas reset, set, reset, y set en el esclavo.
Los flip-flops de tipo maestro esclavo tienen asociado un pequeño pulso en la señal clock en la
tabla de funcionamiento. Algunos ejemplos: 7471, 7472, 7473, 7476.
Puede comprobarse que si una señal de entrada está alta durante el reloj será interpretada como
uno en la salida, cuando los latch son en base a NOR. (se denomina captura de unos). Estos
flip-flops no pueden ser alimentados con salidas que tengan perturbaciones de cero. Lo dual
ocurre para latch en base a NAND, en que se capturan ceros.
J
K
clk
Smtr
Rmt
r
clk'
Sslv
Rslv
Q
Q'
2
1
En (1), estando el reloj alto y en modo set, se captura un uno en la entrada K. Esto podría ser
una perturbación en cero de dicha entrada. Esto ocasiona la conmutación del flip-flop master-
slave.
Nótese que el latch maestro puede estar en cero o en uno, por esta razón en cada canto de subida
de clk' se origina un cambio de estado del latch esclavo.
En (2) se aprecia una captura de un uno en la entrada J, estando en reset la perturbación que
viene en la entrada J hace conmutar al flip-flop.
Para un correcto uso de este tipo de flip-flops las entradas no deben tener perturbaciones en
cero, si son en base a latch de NOR, y en uno si los latchs son de NAND. Los flip-flops
maestro-esclavo no tienen requerimiento de pulsos angostos, ni de pendiente del reloj.
Los flip-flops disparados por cantos no tienen la dificultad de los anteriores, pero requieren que
el tiempo de levantamiento (en los disparados por cantos de subida) o el de bajada (en los
disparados por canto de bajada) cumpla cierta pendiente mínima; en caso contrario la derivada
no genera un pulso de suficiente magnitud para comandar los cambios internos.
Tiene la ventaja de no capturar unos o ceros. Ver: Paul Horowitz. “The Art of Electronics”.
1989.
init
D
Rmt Rsl
r v Q
Ssl Q'
Smt
r v
clk clk'
El siguiente circuito implementa un flip-flop sincrónico tipo D en base a tres latch de NAND.
Este diagrama es la descripción lógica del 7474, su diseño interno es en base a redes de disparo.
preset’ Dset
t
1
S Q
clear’
1
1
QN
clk
R
1
1
Dclr
D
1
Se tienen las siguientes formas de ondas que ilustran las conmutaciones internas:
preset
clea
clkr
D
Dset
Dcl
Sr
R
Q
QN
1 2 7
3 4 5 6
S
Q
1
1
clk Q
R N
1
1
Dclr
D
1
Se tienen las siguientes ecuaciones, considerando como variables de estado a las señales: s, r,
dset, dclr, que se producen después de un retardo, respecto de las salidas de las compuertas que
se asumen ideales:
S = (dset clk )' R = ( clk dclr s )'
Dset = ( dclr s )' Dclr = ( D r)'
clk D
s r dset dclr 00 01 11 10
0000 1111 1111 1111 1111
0001 1111 1111 1111 1111
0011 1111 1111 0111 0111
0010 1111 1111 0111 0111
0110 1111 1110 0110 0111
0111 1111 1110 0110 0111
0101 1111 1110 1110 1111
0100 1111 1110 1110 1111
1100 1111 1110 1110 1111
1101 1101 1100 1000 1001
1111 1101 1100 0000 0001
1110 1111 1110 0110 0111
1010 1111 1111 0111 0111
1011 1101 1101 0001 0001
1001 1101 1101 1001 1001
1000 1111 1111 1111 1111
S, R, Dset, Dclr
Cuando el reloj está bajo, las órdenes S y R al latch de salida están en 1, y por lo tanto éste está
en hold.
Con el reloj en bajo, existen dos estados estables, uno asociado a la entrada D=0 y el otro a
D=1. Lo cual establece los valores de los latchs de entrada; si la entrada D está en 0, se tienen
Dset=0 y Dclr=1. Con D=1 se tienen Dset= 1 y Dclr=0.
Si con el reloj bajo, cambia la entrada D, se cambia del estado 1101 al 1110 y viceversa. El
cambio de estado dura dos tiempos de propagación.
Estando el reloj alto, D puede cambiar, esto no afecta al valor ya registrado, ya que no se
activan ni S ni R. En caso que D cambie de 0 a 1, habiendo grabado previamente un cero,
permanece en estado 1001. Si se hubiera grabado en la salida un uno, se cambia de 0110 a 0111,
activando un cambio en Dclr.
Luego de los posibles cambios anteriores, el reloj debe volver a cero, lo cual reestablece
valores normales, en uno lógico, para R y S. Quedando en estado 1101 ó 1110 según sea el
valor de D.
D
1 Q D Q
0
G
Cuando G está alto: Q sigue a D, en forma transparente; en caso contrario, Q permanece estable.
El circuito se denomina Latch D estático, ya que mantiene el dato en Q, mientras G esté
inactivo, no importando cuánto tiempo permanezca bajo (siempre y cuando las fuentes
permanezcan aplicadas).
Cuando D está alto (y después de un tiempo, Q también estará alto), al ocurrir un canto de
bajada en G, se produce una perturbación (un falso cero) en Q. Esto debido a que las señales R y
S conmutan en tiempos diferentes. Esta perturbación puede afectar a los circuitos conectados a
la salida del latch.
Sin embargo existen dos dificultades importantes, una de ellas es si el ancho del pulso G es
demasiado angosto, esto implicaría que el latch no alcanzaría a setearse. Otra dificultad, y más
importante, es si D cambia casi al mismo tiempo que el latch (candado) se cierra, con el canto
de bajada de G. En este caso no puede determinarse cual será el valor que será capturado.
El siguiente análisis permite determinar el tipo de transiciones cuando se cambian las entradas.
Para esto se plantean las ecuaciones a las salidas de las compuertas:
Luego se representan las ecuaciones en una tabla de transiciones. Después se procede a estudiar,
a partir de un estado estable, las transiciones que se producen cuando cambia una sola de las
entradas.
a) Al llegar un canto de bajada en G se produce una carrera entre p y s, lo cual origina una
oscilación en q y en r, o dependiendo de los retardos podría estabilizarse en uno de los dos
estados estables de la columna. Esta transición es conflictiva.
Con GD=10, con un canto de subida en D, se producen las transiciones: 0001, 0101. Si se
produce canto de bajada en G, se pasa por 1000, y queda estable.
Con GD=00, al cambiar las entradas a 01 ó 10, se producen transiciones a estados estables.
Con GD=01, al cambiar entradas a 00 permanece en estado estable; al cambiar a 11, se
presentan carreras en p y s; pero no es una carrera crítica, y finalmente se llega al estable 0101.
pqrs GD
00 01 11 10
0000 1000 1000 0001 0000
0001 1100 1100 0101 0100
0011 1100 1100 0101 0100
0010 1100 1100 0101 0100
0110 1100 1100 0101 0100
0111 1100 1100 0101 0100
0101 1100 1100 0101 0100
0100 1000 1000 0001 0000
1100 1010 1010 0011 0010
1101 1110 1110 0111 0110
1111 1110 1110 0111 0110
1110 1110 1110 0111 0110
1010 1100 1100 0101 0100
1011 1100 1100 0101 0100
1001 1100 1100 0101 0100
1000 1000 1000 0001 0000
PQRS
Por estas razones, el diseño de dispositivos secuenciales debe garantizar que las entradas sean
válidas y estables durante los períodos en que éstas pueden influir sobre el cambio de estado.
Para el circuito analizado, estas restricciones son:
ancho pulso
G
set-up hold
Figura 14.59. Restricciones temporales.
La señal G debe permanecer activa por el tiempo que sea suficiente para que el latch pueda
capturar el dato. Esto requiere un ancho mínimo para el pulso G.
El tiempo de set-up debe garantizar que el valor de D se haya propagado a través del lazo de
realimentación antes de que se cierre el latch.
El tiempo de hold debe garantizar que el latch esté cerrado y Q estable antes de permitir
cambios en la entrada D.
pqrs GD
00 01 11 10
0000 1000 1000 1001 0000
0001 1100 1100 1101 0100
0011 1100 1100 1101 0100
0010 1100 1100 1101 0100
0110 1100 1100 1101 0100
0111 1100 1100 1101 0100
0101 1100 1100 1101 0100
0100 1000 1000 1001 0000
1100 1010 1010 1011 0010
1101 1110 1110 1111 0110
1111 1110 1110 1111 0110
1110 1110 1110 1111 0110
1010 1100 1100 1101 0100
1011 1100 1100 1101 0100
1001 1100 1100 1101 0100
1000 1000 1000 1001 0000
PQRS
Se producen carreras con GD=11 al pasar las entradas a 10, pero no es crítica. También estando
con GD=10, al cambiar las entradas a 11 se produce una carrera no crítica.
Enable
Enable
D
S
R
Q
QN
1 2 3 4 5
transparente
Figura 14.61. Formas de ondas latch figura 19.60.
Registros en base a flip-flops disparados por cantos (por ejemplo: 74LS374) cambian sus salidas
con el canto del reloj, y no anticipan como el latch que se acaba de explicar.
El ancho mínimo del pulso Enable debe ser mayor que S + R. Esto para esperar que hayan
terminado las transiciones de estados internos.
La Figura 14.61a, muestra un latch activado por cantos de bajada del control G.
D
0 Q D Q
1
G
G
Figura 14.61a. Latch transparente negativo.
La Figura 14.61b, muestra un flip-flop de tipo maestro esclavo, implementado con un par de
latchs. El canto de subida del primer latch, deja pasar o muestrea la entrada. Con el canto de
subida del reloj, se toma una muestra de la salida del primer latch (el maestro) que se encuentra
estable, y se la copia al esclavo; capturándola en el canto de bajada, en el segundo latch.
D
0 Qm
1 Qs
1
0
clk clk
La señal Init se ha agregado para dejar en un estado inicial al multivibrador. Esto es importante
para simular en diseño. En un armado de laboratorio, al aplicar la polarización, se producirá una
oscilación naturalmente.
Init X Y Z
x y
Donde se aprecia un solo estado estable (101), con Init = 0. Si Init está en cero, después de
algún tiempo, no importando cual es el estado inicial, el sistema queda en estado 101.
Cuando llega un canto de subida en Init, se pasa a próximo estado 001 (sin carreras, ya que sólo
cambia una variable de estado), debe ir a cero la variable x. Esto se produce después de x.
Habiéndose establecido el estado 001, debe efectuarse la transición a 011, nuevamente sin
carreras y después de y debe subir a uno la variable y. Y así sucesivamente hasta llegar al
estado 101, donde el ciclo de transiciones inestables vuelve a repetirse.
Init
Z
Y
X
Se muestra un período de la oscilación. En el ciclo ocurre tpHL y tpLH para cada compuerta. Si
las compuertas son iguales, el período resulta: T = 3 ( tpHL + tpLH) .
Similares comportamientos tienen un número impar de inversores, donde la salida del último es
la entrada del primero. En el caso de desear simular el circuito, es preciso colocar una señal de
Init, de tal modo de, después de algunos ticks, llevar todas las salidas a valores lógicos estables.
Este dispositivo permite generar un pulso de ancho programable. Se suele emplear para generar
temporizadores, que desencadenen eventos después de un tiempo dado.
Consisten en incorporar un retardo, generalmente mayor que el de propagación, pudiendo ser el
ancho del pulso generado del orden de los microsegundos. (ver circuito 74LS123).
R
Q
Q'
S
Con la señal R se inicia el multivibrador. La componente que genera el retardo, suele ser una red
RC, que se intercala después del inversor (y en forma externa al chip). Para fines de simulación
se agrandó el tiempo de propagación del inversor.
S
R
Q'
Q
1 2 Disparo 3 4
El tiempo que el multivibrador genera es la señal Q'. Este tiempo se muestra entre los
marcadores (3) y (4), el evento que dispara al multivibrador es el canto de subida de R.
Para operar correctamente debe reponerse a cero la señal R.
Algunos multivibradores son redisparables, esto implica que si existen pulsos en R, mientras se
está generando la banda de tiempo, que es propia del multivibrador (entre (3) y (4)), vuelve a
comenzar la medición del tiempo. Los no redisparables, imponen que hasta que Q' no haya
bajado, no tienen efectos los pulsos en R.
El análisis anterior está basado en usar los conceptos del latch. Sin embargo, puede efectuarse
un análisis asincrónico, como se verá a continuación.
Análisis:
Si se denomina Y a la salida del inversor; se tendrá una nueva variable de estado, se tendrán:
R
q qn y 0 1
000 111 011
001 101 001
010 011 011
011 001 001
100 100 000
101 100 000
110 000 000
111 000 000
Q+, Qn+, Y
Con estado inicial 100, y entrada R = 0. El canto de subida inicia la transición a 000 sin
carreras. Luego del retardo R pasa a estado inestable 000, el que inicia otra transición; esta
vez con carreras de las variables qn e y. En el caso del multivibrador, se asume Y mucho
mayor que S. Debido a esto llega primero al estado 010, el cual sostiene la transición de y que
aún está en curso; llegando finalmente después de Y (a partir del canto de bajada de q) al
estado, también inestable: 011.
Lo cual excita a la variable qn que baja a cero después de S. Lo cual lleva al estado estable
001. Finalizando el ciclo del monoestable.
La entrada es R, la salida es qn. En R se aplica un canto de subida, y se inicia una ventana de
tiempo, de largo Y, en qn.
El armado del multivibrador consiste en reponer la entrada R a cero, lo cual después de algunas
transiciones coloca a la máquina en estado 100. Y puede volver a emplearse el temporizador,
para ello, debe esperarse un tiempo algo mayor que Y.
El cambio de dos o más variables de estado se denomina carrera; los cambios dentro de una
columna de la tabla de transiciones se propagan por vías alternativas. Los cambios de dos o más
señales a través de redes combinacionales; dependiendo de la duración de los retardos de
propagación, ocasionan diferentes transiciones a través de estados inestables. Si finalmente se
llega a un mismo estado estable, se dice que la carrera no es crítica; en caso contrario se tiene
una carrera crítica, lo cual introduce incertidumbre. En algunos casos esto puede evitarse
efectuando una asignación binaria de los estados que esté libre de carreras; en otros pueden
agregarse estados intermedios que den confiabilidad al diseño.
Si una red asincrónica tiene múltiples entradas, pueden ocurrir carreras entre éstas. En estos
casos, para realizar el análisis, se requiere restringir los cambios de las entradas. No se aceptan
cambios de las entradas cuando están ocurriendo transiciones de estados, y además deben tener
una mínima separación temporal, de tal modo que se logre determinar con certeza los cambios
de estado.
d
a
x
c
b
Considerando un retardo individual para cada compuerta se tienen cuatro variables de estado.
a+ = d + b; b+ = x + c; c+ = ba’; d+ = xa’
A partir de las ecuaciones se desarrolla la tabla de transiciones, se marcan en ésta los estados
estables. Se tienen los estados estables: 0000 y 1100, uno en cada columna. Se observa que
estando en el estado estable 0000, al cambiar la entrada x a uno, se excitan cambios en b y d, lo
cual implica una carrera entre esas variables.
x
abcd 0 1
0000 0000 0101
0001 1000 1101
0010 0100 0101
0011 1100 1101
0100 1010 1111
0101 1010 1111
0110 1110 1111
0111 1110 1111
1000 0000 0100
1001 1000 1100
1010 0100 0100
1011 1100 1100
1100 1000 1100
1101 1000 1100
1110 1100 1100
1111 1100 1100
a+b+c+d+
En la Figura 14.69 se ha agregado la señal r que permite dejar en cero la señal c, y a su vez dejar
en cero la salida b, cuando x=0. De este modo, con x=0 y r=0 puede dejarse, al sistema en
estado 0000.
El siguiente módulo permite simular las transiciones. Se simula primero una propagación lenta
de la señal que genera b.
Con orden para el estado dado por (a, b, c, d) se tienen las siguientes transiciones: 0000, 0001,
1001, 1101, 1100, con los retardos asignados a cada compuerta, que se muestran en el módulo
anterior. En la simulación, luego del reset se tiene un tiempo hasta quedar en estado inicial
0000.
Con los retardos del módulo que se muestra a continuación, d se propaga más lento que b, se
tienen las siguientes transiciones: 0000, 0100, 1110, 1111, 1101, 1100.
or #2 G2 (a, d, b);
or #2 G4 (b, c, x);
and #5 G1 (d, x, ap); //d se propaga más lentamente
and #2 G3 (c, b, ap, r);
not #1 G5 (ap, a);
endmodule
En ambas situaciones se llega finalmente al estado estable: 1100, mostrando que la carrera no es
crítica.
Cuando se baja x a cero, se retorna al estado 0000, sin carreras. Se pasa de 1100 a 1000,
cambiando sólo b, y luego a 0000 cambiando a.
La siguiente matriz de transiciones ilustra una carrera crítica. Se tienen tres estados estables: 00
en la columna con x=0, y dos estados estables en la columna con x=1: 11 y 10. Se tienen las
ecuaciones: a+ = ax + bx; b+ = abx + a’b’x.
x
ab 0 1
00 00 01
01 00 10
11 00 11
10 00 10
a+b+
Cuando x es cero, se tiene el estado estable 00, no es necesaria ahora una señal de reset. Cuando
x pasa a 1, después del retardo de propagación de la señal b, se pasa al estado inestable 01, en
este estado inestable se excitan cambios simultáneos en a y b, generándose una carrera.
endmodule
Las carreras pueden evitarse con una adecuada asignación de estados. Si en la tabla de
transiciones de la Figura 14.73, se reemplazan los códigos binarios por símbolos se obtiene:
x
ab 0 1
A A B
B A D
C A C
D A D
a+b+
Luego de cada estado estable se marcan las transiciones en un diagrama de transiciones entre
estados, cuando se cambia sólo una de las entradas. Estando en estado estable A, con entrada
x=0, se cambia x a 1, desde A se pasa a B, y de B al estable D. Del estado estable C, cuando x
B C
B C
E
La tabla de transiciones agregando c, una variable de estado adicional, ya que ahora se tienen
más de 4 estados:
x
abc 0 1
A A B
B A D
C A C
D E D
E A -
a+b+c+
Asignando estados binarios de tal modo que estén a distancia uno: A con B; B con D; D con E;
A con E; y finalmente C con A, se obtiene:
x
abc 0 1
000 000 001
001 000 011
100 000 100
011 010 011
010 000 -
a+b+c+
Se desea diseñar un sistema asincrónico que produzca en las salidas, en forma alternada un
pulso de reloj.
f1
clk
Distribuidor
f2
clk
f1
f2
Se identifican los estados estables, como los intervalos en los cuales no se producen
transiciones. Se tienen cuatro estados, que se han identificado con las letras A, B, C y D.
clk
f1
f2
A B C D A
clk
Presente 0 1 f1f2
A A B 00
B C B 10
C C D 00
D A D 01
Próximo
Se describen las transiciones entre estados, mediante un diagrama de transiciones. Se anotan las
transiciones, desde un estado estable a otro, cuando se cambia una de las entradas. Los estados
entre los cuales existe una transición deben codificarse adyacentes, es decir a distancia uno. De
esta manera al producirse la transición sólo se excitará una variable de estado, y no se
producirán carreras.
A
B D
Código binario
Estado ab
A 00
B 10
C 11
D 01
clk
ab 0 1 f1f2
00 00 10 00
10 11 10 10
11 11 01 00
01 00 01 01
a+b+
Se diseñan las redes combinacionales libres de perturbaciones, para esto se cubren implicantes
adyacentes con términos de consenso.
q2q1
q0 00 01 11 10
0 A F E
1 B C D
x
q2q1q0 0 1
A 000 000 001 00
B 001 011 001 01
C 011 011 111 01
D 111 110 111 10
E 110 110 010 10
F 010 000 010 00
- 101
- 100
q2+q1+q0+ z1z0
Mediante un mapa del próximo estado, que se muestra en la Figura 14.91, se efectúa la
minimización considerando las condiciones superfluas y de tal modo que no se produzcan
perturbaciones.
xq2
q1q0 00 01 11 10
q2+q1+q0+
El término q2q0 en q2+, cubre los implicantes anteriores, cuando ocurre un evento en la
entrada. En la función para q1+, se emplea el término q1q0 para eliminar perturbaciones,
cubriendo implicantes adyacentes.
q0 00 01 11 10
0 00 00 10
1 01 01 10
z1z0
La asignación de estados se efectúa empleando código Gray, de tal modo que los estados
adyacentes en la Figura 14.93, estén a distancia 1. Se elige que el estado A esté asociado al
código 000; en el ejemplo, F queda con código binario 111, y debe pasar al estado A; esto
implica cambio de tres variables. Se emplean los estados inestables G y H para transitar sin
carreras desde estado F hasta el estado A.
H 1
00
G
00
1 1
1 A F 0
00 10
0 0
0 B E 1
00 10
1 1
1 C D 0
01 0 01
Se dejan dos estados próximos sin especificar: estando en G con entrada 0, y estando en H con
entrada 0, que pueden emplearse como condiciones superfluas.
x
q2q1q0 0 1
A 000 001 000 00
B 001 001 011 00
C 011 010 011 01
D 010 010 110 01
E 110 111 110 10
F 111 111 101 10
G 101 - 100 00
H 100 - 000 00
q2+q1+q0+ z1z0
La Figura 14.95 muestra un mapa del próximo estado, construido a partir de la tabla de la Figura
14.94. Minimizando las funciones de próximo estado, libres de perturbaciones, se obtienen:
xq2
00 01 11 10
q1q0
q2+q1+q0+
q2q1
00 01 11 10
q0
0 00 01 10 00
1 00 01 10 00
z1z0
Se obtienen:
z1 = q2q1; z0 = q2’q1
La Figura 14.97 muestra las formas de ondas de los cambios de estado relativas a los pulsos
asincrónicos de la entrada x. Se han enumerado los diferentes cambios de las señales, x y q0, en
un período.
C D E F G H A B
x 1 2 3
q2
q1
q0 1 2
z1
z0
Problema 14.1.
Qn
Y
Figura P14.1.
Determinar:
T1 T2
Figura P14.2.
Solución.
a) Q = (Xqn)’ = X’ + qn’; Qn = Y + q
x
a
Figura P14.3.
b) El estado inicial se obtiene considerando que luego de un tiempo de tener aplicada las
entradas XY = 00, se llega al estado estable qqn = 11.
c) Cuando ocurre el canto de subida de Y, XY = 01, permanece en qqn = 11. Por lo cual no hay
restricciones para T1 (salvo que sea mayor que cero), tiempo que debe transcurrir antes de
cambiar la entrada X a 1. No hay transiciones.
Luego cuando se produce XY = 11, se excita sólo la variable q (no hay carreras), la cual pasa a
cero después de x; llegando al estado estable qqn = 01.
Por lo tanto se requiere T2 > x para modo fundamental de operación; es decir, el cambio de la
entrada Y se efectúa luego de haberse realizado las transiciones de estado, que demoran x en
este caso.
Y
x
T1 T2
qn
período
y
Figura P14.4.
El período de la oscilación es: 2( x + y). Se asume que los retardos de propagación para
cambios de la salida de alto a bajo y viceversa son iguales.
Problema 14.2.
d) Indicar los retardos entre los cambios de Q con respecto al evento que los produce.
x
A
y
Q
B
z
Figura P14.5.
Solución.
a) Ecuaciones: X = Aq ; Y = AB ; Z = Bq ; Q = x + y + z
Estado AB
xyzq 00 01 11 10
0000 0000 0000 0100 0000
0001 0000 0010 1110 1000
0011 0001 0011 1111 1001
0010 0001 0001 0101 0001
0110 0001 0001 0101 0001
0111 0001 0011 1111 1001
0101 0001 0011 1111 1001
0100 0001 0001 0101 0001
1100 0001 0001 0101 0001
1101 0001 0011 1111 1001
1111 0001 0011 1111 1001
1110 0001 0001 0101 0001
1010 0001 0001 0101 0001
1011 0001 0011 1111 1001
1001 0001 0011 1111 1001
1000 0001 0001 0101 0001
XYZQ
Figura P14.6.
c) Si ambas entradas están en cero, luego de un tiempo se estará en estado estable 0000.
Las entradas (AB) siguen la secuencia: 00, 10, 11, 01, 00, 01, 11, 10, 00
A
B
Q
y+ q z+ q y+ q x+ q
Figura P14.7.
Observación: El circuito se conoce como Elemento C de Muller. Cambia a uno sólo cuando
ambas entradas son unos y permanece en ese estado hasta que ambas entradas son cero, instante
en el que va a cero; y permanece en cero hasta que ambas entradas sean iguales a uno.
Detecta la igualdad de las entradas.
A B Q+
0 0 0
0 1 Q
1 0 Q
1 1 1
Figura P14.8.
Problema 14.3.
Figura P14.9.
Determinar:
a) Ecuaciones para X, Y, Z
b) Circuito
c) Estados Estables
Solución:
a) Deben plantearse tres ecuaciones, y la implementación debe realizarse con tres compuertas,
ya que cada compuerta aporta una variable de estado.
X = x’zA +xzA = Az
Y = x’zB + xzB = Bz
Z = x’ + y’ = (xy)’
b)
A
X x
X
Z z
Z
B Y Y
y
Figura P14.10.
g) Las tres variables de estado oscilan. Se producen carreras entre las variables x e y.
001 101 111 110 000 001 111 ......
Problema 14.4.
Solución.
El latch de nand opera con cantos de bajada de las señales S’ y R’, además debe cuidarse que
ambos controles no queden simultáneamente en cero.
Se tienen, las salidas de los circuitos combinacionales, que detectan cuando el contador módulo
nueve pasa por las cuentas 8, 3 y 0, respectivamente:
C8=Q3
C3 = Q3’Q2’Q1Q0
C0 = Q3’Q2’Q1’Q0’
En la Figura P14.11, se advierte que se puede emplear C3’, tal que su canto de bajada setee el
latch. Para resetear el latch no puede emplearse el canto de bajada de la señal C8, ya que se
viola la condición para funcionamiento confiable del latch. Puede notarse que la señal C0’
cumple las especificaciones de funcionamiento del latch y además establece correctamente la
duración de la salida z.
C3
C8
C0
C3’
C0’
Finalmente:
S’=C3’ z
R’=C0’
Ejercicios propuestos.
Ejercicio 14.1.
B z
x
A
Figura E14.1.
T1 T2 T3
A
B
x
y
z
Figura E14.2.
Ejercicio 14.2.
x
a
Figura E14.3.
Ejercicio 14.3.
Para el siguiente módulo descrito en Verilog, identificar el tipo de carreras. Si son críticas,
eliminarlas mediante rediseño de la codificación binaria de los estados.
module ej(x,r,a,b,c,d,e);
input x,r;
output a,b,c,d,e;
wire ap,bp;
not #1 G1 (ap,a);
not #1 G2 (bp,b);
and #2 G3 (c,ap,x);
and #2 G4 (d,a,b,r);
or #6 G5 (b,d,c); //G8=2 G5=6. b más lento => llega a 11
and #3 G6 (e,bp,x);
or #2 G8 (a,e,d); //G8=6 G5=2. a más lento => llega a 01
endmodule
Ejercicio 14.4.
b
Y
Figura E14.4.
Índice general.
CAPÍTULO 14 ........................................................................................................................................... 1
MÁQUINAS SECUENCIALES ASINCRÓNICAS. ............................................................................... 1
14.1 BASES ELECTRÓNICAS PARA ALMACENAR BITS. ............................................................................... 1
14.1.1. Metaestabilidad. ...................................................................................................................... 3
14.1.2. Latchs. ..................................................................................................................................... 4
14.2. LATCH ASINCRÓNICO S-R. (LATCH DE NAND) .............................................................................. 5
14.2.1. Esquemático. ........................................................................................................................... 5
14.2.2. Variables. ................................................................................................................................ 6
14.2.3. Ecuaciones. ............................................................................................................................. 7
14.2.4. Matriz de transiciones. ............................................................................................................ 7
14.2.5. Modo fundamental de operación. ............................................................................................ 8
14.2.6. Diagrama de estados. .............................................................................................................. 8
14.2.7. Secuencias de interés ............................................................................................................... 9
a) Transición set a reset ................................................................................................................................... 9
b) Transición de reset a set............................................................................................................................. 10
Análisis del estado 11 en latch S-R ................................................................................................................ 10
14.2.8. Funcionamiento restringido. ................................................................................................. 11
14.2.9. Análisis simplificado. ............................................................................................................ 13
14.2.10. Simulación de circuitos asincrónicos. ................................................................................. 15
14.2 ELIMINA REBOTES (DEBOUNCE) ...................................................................................................... 16
14.3 SINCRONIZACIÓN DE UN S-R .......................................................................................................... 17
14.4. LATCH ASINCRÓNICO S-R. (LATCH DE NOR) ............................................................................... 18
14.4.1. Esquemático. ......................................................................................................................... 18
14.4.2. Variables. .............................................................................................................................. 19
14.4.3. Ecuaciones. ........................................................................................................................... 19
14.4.4. Matriz de transiciones. .......................................................................................................... 19
14.4.5. Diagrama de estados. ............................................................................................................ 19
14.4.6. Secuencias de interés. ............................................................................................................ 20
14.4.7. Funcionamiento simplificado. ............................................................................................... 21
14.4.8. Resumen Latch de NOR. ........................................................................................................ 22
14.4.9. Análisis simplificado, con un retardo. ................................................................................... 22
14.9.10. Latch positivo D .................................................................................................................. 23
14.5. DISEÑO DE LATCH JK EN BASE A LATCH DE NOR......................................................................... 24
14.6. DISEÑO DE UN FLIP-FLOP JK SINCRÓNICO. ..................................................................................... 25
14.7. FLIP-FLOPS DISPARADOS POR CANTOS ........................................................................................... 27
14.8. MASTER SLAVE. MAESTRO-ESCLAVO............................................................................................ 28
Master Slave de tipo D. ..................................................................................................................... 31
14.9. FLIP-FLOP SINCRÓNICO D. ............................................................................................................ 31
14.10. LATCH TRANSPARENTE. ............................................................................................................... 35
14.11. ANÁLISIS DE MULTIVIBRADOR AESTABLE. .................................................................................. 40
14.12. MULTIVIBRADOR MONOESTABLE................................................................................................. 42
Análisis:............................................................................................................................................. 43
14.13. CARRERAS. .................................................................................................................................. 45
14.13.1. Carrera no crítica. .............................................................................................................. 45
Índice de figuras
Capítulo 15
15.1. Registros.
Se denomina registro a una serie de flip-flops agrupados y con señales de control común. Se
considera que se leerán o escribirán como una unidad.
S
D Q
_
CP Q
R
S
D Q
_
CP Q
R
S
clk D Q
_
CP Q
R
Reset
S
D Q
_
CP Q
R
Set
D3
Q3
D Q
_
CP Q’
D2
Q2
D Q
CP Q’
D1
Q1
Q
D
_
Q’
CP
D0
Q0
D Q
_
CP Q’
WE
clk
En la práctica las señales de control de los registros son generados en una máquina de estados
con modelo de Moore.
En este caso, se ingresa a un estado con el canto del reloj, y se mantienen las salidas asociadas
al estado hasta el próximo canto de subida del reloj.
Estado 1
WE=1
Estado 2
WE=0
Durante el estado 1, la máquina de estados habilita la escritura del registro, activando WE.
Notar que la señal efectivamente se activa después del canto de subida del reloj, y es sincrónica
con el reloj.
En el estado 1, las señales Di se propagan a través de las compuertas y llegan a niveles estables
en las entradas de los flip-flops.
En el estado 2, se captura la información en el registro y permanecerá hasta que se inicie otro
ciclo de escritura en el registro.
Nótese que antes y durante el Estado 1, la salida del registro contiene la información que se
haya escrito anteriormente. A partir del estado 2, tiene nueva información.
clk
WE
Habilitación Escritura
Estado 1 Estado 2
Que se interpreta así: Cuando WE esté alto y cuando llegue el canto del reloj, entonces capture
en el registro R, lo que esté estable en A, tsetup antes del canto del reloj. Suele no indicarse el
reloj, en la ecuación RTL (Register Transfer Level).
WE
WE: R = A
A
clk
R1 R2 R3
Red Com- R. Comb.
binacional.
Tc1 Tc2
A Tm1 Tm2
Se considera el tiempo de variabilidad del reloj, o tiempo de corrimiento (skew), debido a que
en dos lugares distintos no puede tenerse la misma señal. Éstas viajan a través de cables y
debería asumirse que el reloj que llega al registro 2, puede estar adelantado (clk2a) respecto a
clk1 o atrasado (clk2b) respecto de él, como se muestra en la gráfica a continuación.
clk1
clk2a
clk2b
Corrimiento clk. ( tskew)
Con:
Tf1 = Tiempo desde el canto de subida de clk1 hasta tener salidas estables en las salidas de R1.
Tc1 = tiempo de propagación a través de la ruta crítica en la red combinacional 1. Es decir,
cuando haya tomado nivel estable la señal que se propaga más lentamente a través de la red, a la
salida de R1.
Tm1 = tiempo mínimo de propagación a través de la red combinacional 1. Es decir, cuando
haya tomado nivel estable la señal que se propaga más rápidamente a través de la red que
alimenta a R2.
Tsu2 = Tiempo de setup-up de los flip-flops del registro R2.
Thold2 = Tiempo de sostenimiento de los flip-flops del registro R2.
Para que la captura de información sea confiable en el registro 2 debe cumplirse que el período
del reloj debe ser mayor que: T(clk2 ) > Tskew + Tf1 + Tc1 + Tsu2
T(clk2)
clk2
clk1
Tsu2
Tskew Tf Tc
1 1
Se considera el peor caso, ya que se asume que clk1 está atrasado respecto de clk2. En caso de
estar adelantado, se podría tener una frecuencia de funcionamiento sincrónica mayor, ya que en
este caso se requiere un T(clk2) menor.
Para que las entradas permanezcan estables un poco después del canto de subida en el registro 2,
debe cumplirse: Thold2 < Tf1 +Tm1 + Tskew
Thold
2
clk2
clk1
Tskew
Tf Tm1
1
Figura 15.9. Requerimientos de hold para el registro 2.
También se ha considerado el peor caso para determinar que se cumpla el requerimiento del
tiempo de sostenimiento de las entradas después del canto; se asume que el clk1 está atrasado
respecto del clk2. En general este requerimiento es más fácil de cumplir que el de tiempo de
setup.
Si se desea usar el mismo reloj, para efectuar transferencias entre registros, deben cumplirse los
requerimientos de estableciemiento (setup) y sostenimiento (hold) de todos los registros del
sistema. Esto implica que la etapa más lenta es la que determina la frecuencia del reloj.
Asumiendo que las señales WE1, WE2 y WE3 son salidas de una máquina secuencial de
Moore, controlada por el mismo reloj, se tendrá que es posible efectuar concurrentemente las
operaciones:
R1 = A; R2 = f1(R1); R3 = f2(R2)
Durante el ciclo en que están habilitadas las señales WE, los valores de A, R1 y R2 permanecen
estables (son los que figuran a la derecha en las ecuaciones anteriores). Al terminar dicho ciclo,
se establecen los nuevos contenidos de estos registros; los nuevos valores serán asignados a las
variables que figuran a la izquierda en las ecuaciones anteriores.
R1 = A; R3 = f2(f1(R1))
Con ello se tiene una red combinacional más compleja, y posiblemente resulte una frecuencia
sincrónica menor, debido a que aumentan los tiempos de propagación, si las funciones
combinacionales deben efectuarse en secuencia. No obstante, el tiempo de propagación entre A
y la salida de R3 se reduce.
Lo cual puede lograrse con un multiplexor, comandado por la señal de control C, la cual
también es generada por la máquina secuencial que genera los WE. En este caso la frecuencia
máxima queda determinada por la función combinacional que tenga propagación más lenta.
Obviamente debe agregarse al tiempo que toma realizar las acciones, el tiempo que adiciona el
multiplexor.
WE C WE
1 3
R1 f1( ) R3
1
A
f2( ) 0
Se denomina así a las formas empleadas para conectar los recursos, en este caso los registros.
Existen varias estrategias que se diferencian entre sí por los recursos empleados y el tiempo que
demoran en efectuarse las transferencias.
Cuando el camino de datos soporta transferencias simultáneas se requerirán menos estados para
realizar las acciones requeridas.
Esta estrategia requiere conexiones entre cada registro fuente y cada registro destino. Es decir si
deseamos conectar punto a punto a tres registros, se requiere que las tres salidas estén
conectadas con las tres entradas.
En el desarrollo actual los registros suelen ser de 32 bits, y se dispone de un número elevado
de ellos, sobre 32.
R
0
0
1
2
M1 WE1
R
0 1
1
2
M2 WE2
R
0 2
1
2
Las transferencias R0 = R1, R1 = R2 también pueden realizarse. Nóte que en ésta, se lee R1 y
se escribe R1 en el mismo ciclo.
La operación de intercambio de dos registros puede también efectuarse en un mismo ciclo. Esto
puede verse analizando el caso anterior, con: R0 = R1, R1 = R0.
Se emplea bus para un grupo de cables que efectúa determinados recorridos, transportando los
datos, y que son compartidos por varias fuentes de datos.
La siguiente estructura emplea un bus de escritura que es compartido por las erntradas de los
registros. Ahora se tiene un solo multiplexor. Si se considera el costo de un multiplexor de 3
vías de 32 bits cada una; más aún si se tienen 32 registros, ya que en este caso debería ser un
mux de 32 vías de entrada con 32 bits cada una, podrá estimarse que esta configuración emplea
menos recursos de hardware que la conexión punto a punto( es decir, mucho menos compuertas
o productos).
Al existir el bus, éste solo puede ser empleado para una transferencia por ciclo. Se estudiarán
transferencias similares a las vistas antes, para poder comparar los aumentos de tiempo que
derivan de ocupar menos espacio de silicio.
R
0
Bus
B WE1
R
0 1
1
2
WE2
R
2
Las transferencias R0 = R1, R1 = R2 demandan dos ciclos, pero importa el orden en que se
activen los controles. Ya que primero debe leerse R1 y escribirse en R0; luego puede
sobreescribirse R1 con el contenido de R2. Lo cual se logra con los controles: WE0 = 1, B = 1
en el primer ciclo; luego: WE1 = 1, B = 2 en el segundo ciclo de reloj.
En general en esta estructura sólo puede efectuarse una escritura en un registro por ciclo de
reloj. Debe compartirse el bus.
En lugar del multiplexor puede emplearse registros que tengan habilitación de la salida en tercer
estado, suele denominarse OE (output enable) a esta señal. Entonces un simple decodificador
de 2 a tres vías, en este caso, permite alimentar a una y sólo una señal habilitadora de tercer
estado. Ver por ejemplo el 74LS173.
Para implementar operaciones diádicas resulta útil disponer de salida dual del arreglo de
registros. Es decir que cada registro puede alimentar dos buses diferentes, sean éstos los buses
de salida A y B. Los buses A y B suelen alimentar una red combinacional que es capaz de
realizar operaciones diádicas; es decir con dos operandos. Dicha red combinacional se
denomina unidad aritmética.
Además para escribir en el arreglo de registros puede disponerse de un bus de escritura, sea éste
el bus C. Esta arquitectura limita la escritura a un solo registro por ciclo. Lo que esté
alimentando al bus C, en el esquema la señal WReg, se escribe en un registro del arreglo.
En un mismo ciclo pueden realizarse transferencias simultáneas a los buses de salida, y una
escritura, por ejemplo:
A = 0 ; B = 2; WE1 =1;
Incluso puede escribirse en un registro que se esté leyendo. Esto es posible, ya que la señal WEi
habilita el camino desde el bus C hasta la entrada del registro i, pero el contenido de éste no
cambia hasta el próximo canto del reloj. Y en el mismo ciclo, puede estarse leyendo en forma
estable la salida actual del registro i.
Si las señales WE se implementan con un decodificador, se asegura que sólo una de ellas estará
activa. Esto en el caso que se desee escribir solamente en un registro.
El esquema de buses múltiples se muestra a continuación:
A
R
0
Bus C 0
1
2 Bus A
WE1 f(A,B)
R
1
WReg
B
Bus B
0
WE2 1
2
R
2
Desde un punto de vista lógico una memoria tiene un bus unidireccional de direcciones, un bus
bidireccional de datos y señales de control. En general se asume una comunicación asincrónica
entre la memoria y los registros del sistema sincrónico; esto permite adaptarse a memorias con
diferentes tiempos de acceso.
Desde que se coloca la dirección en el bus de direcciones, transcurre un tiempo hasta que en la
salida se tiene datos válidos en el bus de datos, esto en una operación de lectura; también
transcurre un tiempo para que, lo que se ha colocado en el bus de datos, sea grabado en la
dirección de memoria, esto en una operación de escritura. Ese tiempo se denomina de acceso.
Las memorias estáticas asincrónicas no necesitan que se les suministre un reloj, y para su
control disponen de tres señales que las manejan:
Chip Enable (E’): Con esta señal en nivel bajo se habilita la memoria.
Write Enable (W’): Cuando está baja (y la memoria está habilitada), los valores en el bus de
datos son escritos en la localización seleccionada por el bus de direcciones.
Output Enable (G’): Cuando está baja (y la memoria está habilitada), el bus de datos es
alimentado con el valor de la localización de memoria seleccionada por el bus de direcciones.
Cuando está alta, el bus de datos interno de salida queda en un estado de alta impedancia.
Memoria
ADD[n..0]
Estática
E’ D[m..0]
W’
G’
Para una memoria de 8KB, se tiene que m es 7, y n es 12. Es decir 8 bits de datos y 13 de
direcciones, ya que 8K equivale a 8x1024=213.
Los fabricantes establecen los requerimientos temporales de las señales de control. Indicando
las secuencias que deben cumplir las formas de ondas de las señales de control, y una tabla con
valores mínimos y máximos para los parámetros.
Los valores corresponden a una memoria con tiempo de acceso igual a 12 ns, que suele
indicarse al final de las siglas que identifican la memoria.
El ciclo de lectura comienza cuando E’ y G’ están bajas. Los datos son válidos luego del tiempo
de acceso en lectura. Luego de que E’ o G’ suben, los datos se mantienen en la salida, hasta que
ésta entra en flotación.
El tiempo de ciclo es el tiempo mínimo que debe transcurrir entre dos requerimientos a la
memoria. Esto implica que no se puede cambiar el bus de direcciones durante una operación.
tc
direcciones
ta
Chip enable E’
tae
tb tf
datos validos
Los datos son capturados en la celda de memoria cuando W’ tiene un canto de subida, en ese
momento los datos del bus deben estar estables. Además el bus de direcciones debe estar estable
antes del canto de bajada de W’ (setup), y luego del canto de subida de W’ (hold). Los glitches
en el bus de direcciones pueden producir cambios de estado no deseados en la memoria.
tc
direcciones
tas tah
Chip enable E’
tw
Write enable W’
th
ts
datos validos
Luego de establecida la nueva dirección, no puede activarse el canto de bajada de write enable
hasta tas segundos después. El ancho del pulso de escritura debe tener un mínimo de tw. Los
datos que serán escritos en la celda, no deben cambiar durante el tiempo de setup, ts segundos
antes del canto de subida del pulso de escritura, y deben mantenerse th segundos después del
canto de subida del pulso de escritura. También no puede cambiarse el bus de dirección,
debiendo mantenerlo estable tah segundos luego del canto de subida del pulso de escritura.
Se desea diseñar un controlador que permita conectar una memoria a un sistema sincrónico. Los
controles read y write, sincronizados por cantos de bajada, desencadenan las secuencias de
señales de control, que permiten leer y escribir en la memoria. La Figura 15.21, muestra el
ambiente de diseño.
add direcciones
la Memoria
reset E’
W’
read
controlador
G’
write
ld cd doe’
datos
Din
dw
Dout
clk
Dout = M[add]
M[add] = Din
Din
Memoria Dout
Controlador
clk clk
Para cumplir con los requerimientos temporales de la memoria, basta que dos períodos del reloj
sean mayores que el tiempo de acceso. Esto puede comprobarse, en el esquema de las señales de
control de la Figura 15.23, ya que transcurren dos ciclos desde que se tiene una nueva dirección
hasta que se graba en el registro de lectura.
clk
read
la
Ep
aGp
Cd
E0 E4 E5 E6 E0
La Figura 15.24, desarrolla las secuencias de escritura en tres ciclos del reloj.
clk
write
ld la
Ep
aWp
doep
E0 E1 E2 E3 E0
La Figura 15.25 ilustra el diagrama de estados del controlador. Sólo se muestran las señales la y
cd asociadas a los estados del diagrama de Moore; el resto de los valores se ilustran en las
Figuras 15.23 y 15.24.
E4 E5 E6
la=1 cd=1
reset
read=1
E0
read=0
write=0
write=1
E1 E2 E3
la=1
Mediante las especificaciones de las Figuras 15.23, 15.24 y 15.25, resulta sencillo especificar el
diseño en Verilog.
module MSE(clk, reset, read, write, Din, Dout, add, direcciones, Ep, Wp, Gp, doep, la, ld, cd,
datos);
input clk, reset, read, write;
input [7:0] Din;
output [7:0] Dout;
input [12:0] add;
output [12:0] direcciones;
output Ep, Gp, Wp, doep, la, ld, cd;
inout [7:0] datos;
// Asignación de estados
parameter IDLE = 0;
parameter write1 = 1;
parameter write2 = 2;
parameter write3 = 3;
parameter read1 = 4;
parameter read2 = 5;
parameter read3 = 6;
// Outputs
wire [7:0] Dout;
wire [12:0] direcciones;
wire Ep;
wire Wp;
wire Gp;
wire doep;
wire la;
wire ld;
wire cd;
// Bidirs
wire [7:0] datos;
initial begin
// Initialize Inputs
clk = 0; reset = 0; read = 0; write = 0; Din = 0; add = 0;
// Wait 100 ns for global reset to finish
#100;
add=13'b0000000000111;
Din=8'b00001111;
write=1; clk=0; #100; clk=1; #100;
write=0; clk=0; #100; clk=1; #100;
clk=0; #100; clk=1; #100;
clk=0; #100; clk=1; #100;
clk=0; #100; clk=1; #100;
clk=0; #100; clk=1; #100;
clk=0; #100; clk=1; #100;
end
endmodule
El procedimiento de lectura de memorias flash o EEPROM es el mismo que para las memorias
estáticas SRAM. Estas memorias disponen de un circuito interno que genera el voltaje de
programación de tipo 12 V, y además tienen una máquina secuencial de estados internas que
permite escribirlas. Las señales de escritura deben cumplir los requerimientos temporales de la
máquina de estados, y usan las mismas señales de control.
CAPÍTULO 15 ........................................................................................................................................... 1
REGISTROS. BUSES. MEMORIAS. ...................................................................................................... 1
15.1. REGISTROS. ..................................................................................................................................... 1
15.2. REGISTRO CON HABILITACIÓN DE ESCRITURA. ................................................................................. 1
15.3 FUNCIONAMIENTO SINCRÓNICO. TRANSFERENCIAS ENTRE REGISTROS. ........................................... 4
15.3.1. Requerimientos de tiempo. ...................................................................................................... 5
15.3.2. Operaciones posibles. ............................................................................................................. 7
15.3.3. Operaciones combinacionales alternativas. ............................................................................ 7
15.4. CAMINO DE DATOS. ......................................................................................................................... 8
15.4.1. Conexiones punto a punto. ...................................................................................................... 8
15.4.2. Bus simple. ............................................................................................................................ 10
15.4.3. Estructura multibus. .............................................................................................................. 12
15.5. MEMORIA RAM ESTÁTICA. ........................................................................................................... 14
15.5.1. Ciclo de lectura. .................................................................................................................... 14
15.5.2. Ciclo de escritura. ................................................................................................................. 16
15.5.3. Control de memoria ram estática. ......................................................................................... 17
15.3.4. Memorias flash o EEPROM. ................................................................................................. 24
15.3.5. Memorias sincrónicas. .......................................................................................................... 24
ÍNDICE GENERAL. ................................................................................................................................... 25
ÍNDICE DE FIGURAS................................................................................................................................. 26