Está en la página 1de 128

Sistemas Digitales

Sistemas Digitales
Dpto. Electrónica, E.T.S.I.T.

Programa

Tema 1. Álgebra de Boole y Funciones Lógicas


1.1- Variables y funciones lógicas.
1.2- Álgebra de Boole.
1.3- Representación de funciones lógicas en Electrónica Digital.
1.4- Funciones lógicas de dos variables. Suficiencias.
1.5- Simplificación de funciones lógicas. Formas canónicas. Diagramas de Karnaugh.
Problemas.

Tema 2. Códigos Numéricos y Alfanuméricos


2.1- Sistema binario. Aritmética binaria. Representación de números negativos.
2.2- Sistemas octal y hexadecimal.
2.3- Decimal codificado binario (BCD).
2.4- Códigos binarios continuos y cíclicos: códigos Gray y Johnson.
2.5- Códigos alfanuméricos. El código ASCII.
2.6- Códigos detectores de error. Bit de paridad.

Tema 3. Circuitos Combinacionales


3.1- Análisis y síntesis AND-OR. Implementación en dos niveles.
3.2- Estructuras usando un solo tipo de puertas. Análisis y síntesis NAND-NOR.
3.3- Fenómenos aleatorios estáticos y dinámicos.
Problemas.

Tema 4. Circuitos Combinacionales Integrados


4.1- Decodificadores. Implementación de funciones lógicas.
4.2- Codificadores.
4.3- Conversores de código.
4.4- Multiplexores.
4.5- Demultiplexores.
4.6- Comparadores binarios.
4.7- Sumadores.
Problemas.
Tema 5. Circuitos Secuenciales Asíncronos
5.1- Diseño de circuitos secuenciales asíncronos.
5.2- Síntesis de un sistema secuencial asíncrono. Reducción de la tabla de fases.
5.3- Codificación de los estados internos.
5.4- Síntesis con biestables R-S.
Problemas.

Tema 6. Cerrojos Dinámicos y Flip-Flops


6.1- Cerrojos o Latches.
6.1.1.- Cerrojos dinámicos. Cerrojo tipo D. Limitaciones.
6.2- Flip-Flops.
6.2.1- Flip-Flops activados por nivel. El FF maestro-esclavo.
6.2.1.1- Flip-Flop J-K.
6.2.1.2- Flip-Flop tipo T.
6.2.1.3- Flip-Flop tipo D.

Página 1
Sistemas Digitales

6.2.1.4.- Limitaciones de los FF maestro-esclavo.


6.2.2- Flip-Flops activados por flanco. El Flip-Flop J-K.
6.3- Tiempos de establecimiento, mantenimiento y propagación.
Problemas

Tema 7. Circuitos Secuenciales Síncronos


7.1- Registros.
7.2- Registros de desplazamiento.
7.3- Contadores.
7.3.1- Construcción de un contador de módulo arbitrario.
7.3.2- Construcción de contadores como registros de desplazamiento.
7.3.2.1- Contador de anillo.
7.3.2.2- Contador conmutado en cola o de Johnson.
7.3.2.3- Contador asíncrono de rizado.
7.3.2.4- Contadores integrados.
Problemas.

Bibliografía
• Herbert Taub, “Circuitos Digitales y Microprocesadores”. McGraw-Hill 1982,
Madrid.
• Enrique Mandado, “Sistemas electrónicos digitales”. Marcombo, Boixareu
Editores.
• Thomas L. Floyd, “Fundamentos de Sistemas Digitales”. 7º Edición, Prentice-
Hall 2000.

• Enrique Mandado, “Problemas de electrónica digital”. Marcombo, Boixareu


Editores.
• I. Padilla. “Ejercicios de electrónica digital”. Departamento Publicaciones de la
E.T.S.I. de Telecomunicaciones de Madrid.

Página 2
Sistemas Digitales

TEMA 1

ÁLGEBRA DE BOOLE Y FUNCIONES LÓGICAS

1.1- VARIABLES Y FUNCIONES LÓGICAS

Una función es una regla por la que determinamos el valor de una variable,
llamada “dependiente”, y, a partir de otra variable, llamada “independiente”, x. La
dependencia de y respecto de x puede escribirse y = f(x).

Formas de definir una función:


a) A través de una expresión algebraica. Por ejemplo y = 2 x 2 + 7
b) Cuando el dominio de la variable independiente es finito, puede definirse a través de
una tabla. Por ejemplo, en la función anterior si x sólo pudiese tomar los valores 0, 1,
2 y 3, tendríamos:

x y = f(x)
0 7
1 9
2 15
3 25

Este es el caso de las funciones lógicas que se definirán a través de una tabla denominada
“tabla de verdad”.

Las funciones y las variables no tienen por qué ser numéricas. Por ejemplo, podemos
asignar:
x: “colores de las luces de un semáforo”
y: “comportamiento esperado de un conductor”

La tabla de dicha función sería:

x y = f(x)
Verde Continúa
Amarillo Frena
Rojo Stop

Definición de “variable lógica”:


Una variable se denomina lógica si cumple las siguientes propiedades:
1. Puede adoptar uno u otro de sólo dos valores posibles.
2. Dichos valores se expresan a través de sentencias declarativas, como en el caso del
semáforo.
3. Los dos posibles valores deben ser mutuamente excluyentes.

Por ejemplo, si simplificamos el caso del semáforo de forma que sólo pudiese estar en rojo
o en verde, en este caso x sería una variable lógica. Además, por la mutua exclusión de los
posibles valores, podemos decir que si x no está en verde, entonces x estará en rojo. En una
notación más simplificada se escribe:

Página 3
Sistemas Digitales

x = no verde ⇔ x = verde = rojo


y se lee “complementario de”.

Valores de una variable lógica:


Las variables lógicas pueden representar cualquier cosa:
• Valores numéricos. Ejemplos: temperatura, presión, distancias. ...
• Valores no numéricos. Ejemplos: luces de un semáforo, comportamiento de un
conductor.

Para dar mayor generalidad, independientemente de lo que representen nuestras variables


lógicas, les asignaremos a sus dos posibles valores dos nombres: “verdadero” (T) y “falso”
(F).
Desde ahora, al tratar con variables lógicas usaremos la siguiente notación:
A, B, C, ... : variable lógica independiente.
Z: variable lógica dependiente
o función lógica

Por ejemplo, en el caso del semáforo asignamos arbitrariamente:


A = rojo = T ⇒ A = rojo = verde = F
Z = continúa = T ⇒ Z = continúa = stop = F

Así:

Con esta Esta es la


A Z = f(A) A Z = f(A)
asignación llamada
verde continúa F T tabla de

rojo stop T F verdad

Funciones de una sola variable lógica:


Para el caso de una única variable lógica pueden formarse un total de 22 = 4 funciones
distintas, ya que tanto la variable independiente como la dependiente pueden tomar dos
valores distintos (T y F) (2número combin. entradas: 2 posibles estados de A, 4 combinaciones
distintas de Z).

A Z1 Z2 Z3 Z4
F F F T T
T F T F T

Tenemos entonces:

Z1 = F (función “falsa” constante)


Z2 = A (función “identidad”)
Z3 = A (función “complementaria”, NOT)
Z4 = T (función “verdadera” constante)

Caso especial de funciones de dos variables lógicas, las funciones AND y OR:
Hay un total de 16 funciones lógicas de 2 variables lógicas, ya que las 2 variables pueden
combinarse de 4 formas posibles, con lo que 24 = 16. Aunque posteriormente haremos un
estudio de todas, vamos a estudiar ahora dos de ellas:

Página 4
Sistemas Digitales

Función AND: es la determinada por la siguiente tabla de verdad:

A B Z = A AND B
F F F
F T F
T F F
T T T

Recibe el nombre de función AND porque Z es verdadero solamente cuando A y (AND) B


lo son a la vez. Otra forma de expresar la función es Z = A.B o Z = AB y se llama también
“producto lógico”, aunque no tiene sentido aritmético.

Propiedades:

• Conmutativa:
Z = AB = BA, se deduce intercambiando las columnas A y B de la tabla
de verdad.
• Asociativa:
Z = A(BC) = (AB)C

Veamos la demostración a partir de las respectivas tablas de verdad:

A B C AB (AB)C BC A(BC)
F F F F F F F
F F T F F F F
F T F F F F F
F T T F F T F
T F F F F F F
T F T F F F F
T T F T F F F
T T T T T T T

Vemos que coinciden los valores en ambas columnas luego podremos escribir:

A(BC) = (AB)C = ABC

Función OR: es la determinada por la siguiente tabla de verdad

A B Z = A OR B
F F F
F T T
T F T
T T T

Página 5
Sistemas Digitales

Recibe el nombre de función OR porque Z es verdadera cuando lo es A o (OR) cuando lo es


B, o lo son ambas a la vez. Otra forma de expresar la función es Z = A+B y se llama también
“suma lógica”, aunque no tiene sentido aritmético.

Propiedades:

• Conmutativa:
Z = A+B = B+A, se deduce intercambiando las columnas A y B de la
tabla de verdad.
• Asociativa:
Z = A+(B+C) = (A+B)+C

Veamos la demostración a partir de las respectivas tablas de verdad:

A B C A+B (A+B)+C B+C A+(B+C)


F F F F F F F
F F T F T T T
F T F T T T T
F T T T T T T
T F F T T F T
T F T T T T T
T T F T T T T
T T T T T T T

Vemos que coinciden los valores en ambas columnas luego podremos escribir:

A+ (B+C) = (A+B)+C = A+B+C

La notación 0, 1:
Vamos a introducir una notación alternativa:
A = 0 como alternativa a A = F
A = 1 como alternativa a A = T
Hay que prestar especial atención para no confundir el 0 y el 1 que vamos a utilizar con los
números que representan. Para nosotros serán los posibles valores que puede tomar una
variable lógica. Esta notación aporta muchas ventajas como veremos a continuación.
Volvamos a escribir las tablas de verdad de las funciones AND y OR con esta nueva notación:

A B Z = A·B A B Z = A+B
0 0 0 0 0 0
0 1 0 0 1 1
1 0 0 1 0 1
1 1 1 1 1 1

Vemos que se siguen las reglas de la aritmética fundamental, exceptuando el caso


1 + 1 = 1, que nos recuerda que estamos en lógica y no con operaciones aritméticas.

Página 6
Sistemas Digitales

1.2- ÁLGEBRA DE BOOLE

Vamos a dar un carácter más formal a todo lo visto anteriormente. El concepto de variable
lógica fue introducido por George Boole en 1850 en relación con sus estudios sobre el
pensamiento humano. Fue Claude Shannon de The Bell Laboratories quien lo adaptó a los
sistemas digitales.

Definición y postulados:
“Un Álgebra de Boole B es toda clase o conjunto de elementos que pueden tomar dos
valores perfectamente diferenciados, que designaremos por 0 y 1, y que están relacionados
por dos operaciones binarias, denominadas suma (+) y producto (·) lógicos, que cumplen los
siguientes postulados (5):

a) Ambas operaciones son conmutativas:


∀A, B ∈ Β se verifica A + B = B + A y A ⋅ B = B ⋅ A

b) Ambas operaciones son asociativas:


∀A, B, C ∈ Β se verifica A + ( B + C ) = ( A + B) + C = A + B + C y
A·(B·C ) = ( A·B)·C = A·B·C

c) Existen los respectivos elementos neutros:


∀A ∈ Β , ∃1,0 ∈ B tales que A + 0 = A y A ⋅1 = A , donde hemos representado por 0
el neutro de la suma lógica y por 1 el neutro del producto lógico.

d) Existen elementos complementarios:


∀A ∈ Β , ∃ A ∈ B tal que A + A = 1 y A ⋅ A = 0

Este postulado define una nueva operación fundamental: “inversión o complementación de


una variable”. Así, la variable A se encuentra en estado binario contrario al de A. De
hecho A + A = 1 expresa la imposibilidad de que A y A tomen el valor 0 al mismo tiempo, y
A ⋅ A = 0 la imposibilidad de que tomen el valor 1 al mismo tiempo. Así, se tiene que:

A A
0 1
1 0

e) Propiedad distributiva de cada operación respecto de la otra:


∀A, B, C ∈ Β se verifica:
A ⋅ ( B + C ) = ( A ⋅ B) + ( A ⋅ C ) y A + ( B ⋅ C ) = ( A + B) ⋅ ( A + C )
Pueden eliminarse algunos paréntesis imponiendo, como en el álgebra usual, la prioridad
del producto con respecto a la suma.

El Álgebra de Boole puede aplicarse, en un principio, a todos aquellos sistemas que


consistan en elementos que puedan presentarse en dos tipos de estados mutuamente
excluyentes.

Página 7
Sistemas Digitales

Veamos ahora un ejemplo de aplicación del Álgebra de Boole a contactos o conmutadores:

El elemento 0 se asimila a un contacto abierto: no hay paso de corriente.


El elemento 1 se asimila a un contacto cerrado: hay paso de corriente.
La operación suma se asimila a la conexión en paralelo de conmutadores:
A

B A+B

hay corriente cuando A está cerrado, cuando B está cerrado o cuando lo están ambos.

La operación producto se asimila a la conexión en serie de conmutadores:

hay corriente sólo si A y B están cerrados a la vez.


El inverso de un conmutador es otro conmutador cuyo estado es siempre contrario al
primero:
A A

Veamos si se cumplen los postulados del Álgebra de Boole:

a) Conmutatividad: evidentemente
A B

B A

A+B B+A
y además
A B B A

A·B B·A
b) Asociatividad: se cumple,
A
A
B
B
C
C

A+(B+C) (A+B)+C
y además,
A B C A B C

A·(B·C) (A·B)·C

c) Elemento neutro:
A
A
Página 8
0
A+0
Sistemas Digitales

por otro lado


A A
1

d) Elemento complementario:
A
1
A
A+A
y también

A A 0
A·A

e) Propiedades distributivas:

B A B
A
C A C

A·(B+C) (A·B) + (A·C)


y además

A A A

B C B C

A+(B·C) (A+B)·(A+C)

Por tanto, los conmutadores constituyen un Álgebra de Boole.

Teoremas del Álgebra de Boole:


De los postulados anteriores se deducen varios teoremas (7) que pueden demostrarse tanto
algebraicamente como a través de la tabla de verdad.

Teorema 1 (principio de dualidad): si una expresión es válida en el álgebra booleana,


entonces su expresión dual también es válida. La expresión dual se obtiene intercambiando
entre sí las operaciones (+) y (·) y los elementos 0 y 1.
Esto se deduce de la simetría de los cinco postulados respecto de las dos operaciones.
Veámoslo con dos ejemplos:

• En la función AND, aplicando el principio de dualidad tenemos:

Página 9
Sistemas Digitales

AND OR
A B A·B Cambiando A B A+B
0 0 0 (·) por (+) y 0 1 1 1
0 1 0 por 1, 1 0 1
1 0 0 obtenemos la 0 1 1
1 1 1 función OR 0 0 0

• Si en la expresión de la propiedad distributiva del producto respecto de la suma:


A ⋅ ( B + C ) = ( A ⋅ B) + ( A ⋅ C )
cambiamos (+) por (·) y viceversa obtenemos:
A + ( B ⋅ C ) = ( A + B) ⋅ ( A + C )
que es la distributiva de la suma respecto del producto.

Teorema 2: ∀A ∈ B, se verifica : A + 1 = 1 y A ⋅ 0 = 0
Si demostramos la primera, la segunda quedará demostrada por el principio de dualidad:
1 = A + A = A + A ⋅ 1 = ( A + A) ⋅ ( A + 1) = 1 ⋅ ( A + 1) = A + 1
donde hemos aplicado:

• primera igualdad: postulado d) (elementos complementarios)


• segunda igualdad: postulado c) (neutro del producto)
• tercera igualdad: postulado e) (distributiva de la suma respecto del producto)
• cuarta igualdad: postulado d) (elementos complementarios)
• quinta igualdad: postulado c) (neutro del producto)

La demostración puede hacerse de forma más sencilla a partir de las respectivas tablas de
verdad.

De este teorema y del postulado c) (elemento neutro) se deduce que:

Postulado c): 0 + 0 = 0 , 1 + 0 = 1 , 0 ⋅1 = 0 , 1 ⋅1 = 1 (A+0=A, A·1=A)


Teorema 2: 1 + 1 = 1 , 1 ⋅ 0 = 0 , 0 + 1 = 1 , 0 ⋅ 0 = 0 (A+1=A, A·0=0)
Por tanto, se deduce que las tablas de verdad de la suma y del producto lógicos son:

A B A+B A B A·B
0 0 0 0 0 0
0 1 1 0 1 0
1 0 1 1 0 0
1 1 1 1 1 1

De esta forma hemos obtenido las tablas de verdad de las funciones AND y OR a partir de
un teorema derivado de los postulados fundamentales.

Teorema 3: ∀A ∈ B, se verifica : A + A = A y A ⋅ A = A
Demostremos la primera igualdad y de nuevo la segunda quedará demostrada por dualidad:
A = A + 0 = A + A ⋅ A = ( A + A) ⋅ ( A + A) = ( A + A) ⋅ 1 = A + A
donde hemos aplicado:

Página 10
Sistemas Digitales

• primera igualdad: postulado c) (neutro de la suma)


• segunda igualdad: postulado d) (elementos complementarios)
• tercera igualdad: postulado e) (distributiva de la suma respecto del producto)
• cuarta igualdad: postulado d) (elementos complementarios)
• quinta igualdad: postulado c) (neutro del producto)

Igual que en el teorema 2, la demostración puede hacerse de forma más sencilla a partir de
las respectivas tablas de verdad.

Teorema 4 (ley de absorción): ∀A, B ∈ B, se verifica : A + A ⋅ B = A y A ⋅ ( A + B) = A


Demostremos la primera:
A + A ⋅ B = A ⋅ 1 + A ⋅ B = A ⋅ (1 + B) = A ⋅ 1 = A
donde hemos aplicado:
• primera igualdad: postulado c) (neutro del producto)
• segunda igualdad: postulado e) (distributiva del producto respecto de la suma)
• tercera igualdad: teorema 2
• cuarta igualdad: postulado c) (neutro del producto)

De nuevo la segunda igualdad quedará demostrada por el principio de dualidad.

Teorema 5: ∀A, B ∈ B, se verifica : A + A ⋅ B = A + B y A ⋅ ( A + B) = A·B


Demostramos la primera algebraicamente y la segunda queda demostrada por el principio
de dualidad.
A + A ⋅ B = ( A + AB) + AB = A + ( A + A) B = A + 1·B = A + B
donde hemos aplicado:
• primera igualdad: teorema 4 (ley de absorción)
• segunda igualdad: postulado e) (distributiva del producto respecto de la suma)
• tercera igualdad: postulado d) (elemento complementario)
• cuarta igualdad: postulado c) (neutro del producto)

Teorema 6: ∀A ∈ B, se verifica : A = A
Podemos demostrarlo a través de la tabla de verdad:

A A A
0 1 0
1 0 1

De este teorema y del postulado d) (el. complementario) se deduce: 0 =1 y 1= 0


Teorema 7 (leyes de De Morgan): ∀A1 , A2 , A3 ,..., An ∈ B, se verifica :

a) A1 + A2 + A3 + ⋅ ⋅ ⋅ + An = A1 ⋅ A2 ⋅ A3 ⋅ ⋅ ⋅ ⋅ An
b) A1 ⋅ A2 ⋅ A3 ⋅ ⋅ ⋅ ⋅ ⋅ An = A1 + A2 + A3 + ⋅ ⋅ ⋅ ⋅ + An
Demostraremos la a) aplicando el principio de inducción sobre n, con lo que la b) quedará
demostrada por dualidad. Lo demostramos en primer lugar para n=2 a partir de la tabla de
verdad:

Página 11
Sistemas Digitales

A B A+ B A+ B A B A⋅ B
0 0 0 1 1 1 1
0 1 1 0 1 0 0
1 0 1 0 0 1 0
1 1 1 0 0 0 0

Suponemos ahora cierta la expresión para n-1, es decir:

A1 + A2 + A3 + ⋅ ⋅ ⋅ + An −1 = A1 ⋅ A2 ⋅ A3 ⋅ ⋅ ⋅ ⋅ An −1

Veamos que también es cierto para n:

A1 + A2 + A3 + ⋅ ⋅ ⋅ + An −1 + An = ( A1 + A2 + A3 + ⋅ ⋅ ⋅ + An −1 ) + An = A1 + A2 + A3 + ⋅ ⋅ ⋅ + An −1 ⋅ An =

= A1 ⋅ A2 ⋅ A3 ⋅ ⋅ ⋅ ⋅ An −1 . An con lo que queda demostrado.

1.3- REPRESENTACIÓN DE FUNCIONES LÓGICAS EN ELECTRÓNICA DIGITAL

Hemos visto como podía implementarse una variable lógica a través de un conmutador.
Actualmente lo más usual en los circuitos digitales es representar los valores lógicos de una
variable por tensiones eléctricas.

Por ejemplo, podemos convenir que cuando una variable lógica A se represente por una
tensión V, la variable A es F cuando V = 0v y A es T cuando V = 5v . En la práctica mantener
una tensión fija es bastante difícil porque siempre hay cierta tolerancia. Por ello, es más usual
tomar, por ejemplo:

A=F cuando 0v ≤ V ≤ 1.5v Lógica TTL, Vcc +5V


A=T cuando 3.5v ≤ V ≤ 5v

Pueden tomarse las dos tensiones positivas, las dos negativas o bien de signos contrarios.
Dependiendo de la asignación de tensiones tendremos dos tipos de lógicas:
• Lógica positiva: la tensión mayor representa el valor lógico T y la menor el valor F.
• Lógica negativa: la tensión mayor representa el valor lógico F y la menor el valor T.
Es indiferente en principio usar una u otra, aunque, por razones históricas y psicológicas, se
usa preferentemente la lógica positiva.

El símbolo del dispositivo que puede realizar el producto lógico Z = A ⋅ B de dos variables
A y B es:
A
Z=A·B
B

El símbolo del dispositivo que puede realizar la suma lógica Z = A + B de dos variables A
y B es:
A
Z=A+B
B

Página 12
Sistemas Digitales

dado que tanto la función AND como la función OR son conmutativas y asociativas, los
dispositivos que realizan el producto y la suma lógica de muchas variables se pueden
representar por:

A A
B Z=A·B·C·… B
C C Z=A+B+C+...

En general cualquier estructura de una función lógica se conoce como “puerta lógica”. Así,
hemos representado una puerta AND y una puerta OR. Las variables A, B, C,... son las
entradas a la puerta y Z la salida de la misma. La naturaleza de los dispositivos electrónicos
que constituyen las puertas AND y OR permite añadir nuevas entradas con relativamente
poca complicación, por ello se dispone fácilmente de puertas AND y OR de entradas
múltiples.

Inversores. Puertas NOT


Un inversor es una puerta lógica con una sola entrada y una sola salida que es el
complemento lógico de la entrada. Se representa por:

A Z=A

La característica inversora nos la da el pequeño círculo. Cuando se quiere indicar la


inversión en un diagrama lógico, se omite la parte triangular del inversor, por ejemplo:

A
A·B
A
Z= A·B
B

Familias lógicas
Una familia lógica representa la forma de implementar internamente las puertas lógicas.
Cada familia lógica se basa en distintos tipos de componentes electrónicos. Las más comunes
son:

• Lógica RTL (Resistor Transistor Logic), que emplea resistencias y transistores.


• Lógica DTL (Diode Transistor Logic), basada en diodos y transistores.
• Lógica TTL (Transistor Transistor Logic), que utiliza transistores.

El término “familia” también se emplea para designar grupos de circuitos integrados que
pertenecen a la misma categoría o que poseen características comunes. La familia 74 está
fabricada en su mayor parte con lógica TTL y engloba a la mayoría de circuitos digitales de
uso común. Los integrados de esta familia se numeran como 74xx00 y sucesivos, donde xx
son letras que indican la subfamilia a la que pertenecen

• LS: Low-power Shottky (TTL).


• HC: High speed CMOS
• HCT: High speed CMOS con entradas compatibles 74LS TTL.

Página 13
Sistemas Digitales

Ej. 74LS04: 6 inversores (NOT) pertenecientes a la familia 74, subfamilia LS fabricado con
lógica TTL.

Cada familia lógica o subfamilia tiene sus características particulares, principalmente:


o Valores de tensión para los niveles “0” y “1” lógicos (TTL 74LS: 0 y (5 ±0.25) V).
o Fan-in: máximo número de entradas digitales que una puerta lógica puede recibir.
o Fan-out: máximo número de entradas digitales que una puerta lógica puede alimentar
(TTL 74LS : hasta 10 entradas 74LS).
o Retardo de propagación (TTL 74LS: cerca de 10 ns).
o Máxima frecuencia de trabajo (TTL 74LS: hasta 35 MHz).

1.4- FUNCIONES LÓGICAS DE DOS VARIABLES. SUFICIENCIAS

Habíamos visto que en el caso de dos variables lógicas teníamos 24=16 posibles funciones.
De ellas hemos estudiado ya las que hemos denominado AND y OR. Si construimos la tabla
de verdad de todas ellas tendríamos:

A B f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15


0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
0 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
1 0 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

Veamos cada una de estas funciones:

• f 0 = 0 , es la función “falsa” constante.


• f15 = 1 , es la función “verdadera” constante.
• f 3 = A , f12 = A , f 5 = B y f10 = B son funciones de una sola variable. Las funciones f10
y f12 reciben el nombre de función NOT.
• f1 = A ⋅ B , es la función AND.
• f 7 = A + B , es la función OR.
• f 6 es una nueva función que denominaremos OR-Exclusiva o XOR y que
representaremos por f 6 = A ⊕ B . Esta función vale 1 si A=1 o B=1, pero no
simultáneamente. La tabla de verdad es:
A B A⊕ B
0 0 0
0 1 1
1 0 1
1 1 0

La función OR-Exclusiva es conmutativa y asociativa tal y como puede demostrarse


fácilmente a partir de la tabla de verdad. Se verifica además:

f6 = A ⊕ B = A ⊕ B = A ⊕ B = A ⊕ B
como se comprueba fácilmente a través de las respectivas tablas de verdad:

Página 14
Sistemas Digitales

A B A⊕ B B A A⊕ B A⊕ B A⊕ B A⊕ B A⊕ B
0 0 0 1 1 1 0 1 0 0
0 1 1 0 1 0 1 0 1 1
1 0 1 1 0 0 1 0 1 1
1 1 0 0 0 1 0 1 0 0

La función XOR de n variables toma el valor lógico 1 si se encuentra un número impar de


entradas en estado 1, y el valor lógico 0 si es un número par. Así, la función XOR de n
variables puede usarse como un detector de paridad impar.

El símbolo para esta puerta es:

A
Z = A⊕ B
B

La puerta XOR es una de las más difíciles de fabricar, no siendo fácil modificar su
estructura para acomodar entradas adicionales. Así, para realizar una puerta XOR de tres
entradas lo más sencillo es hacer:

A
A⊕ B
B

A⊕ B⊕C
C
• f 9 = A ⊕ B , es la función NOR-Exclusiva o XNOR. Esta función se llama también
“equivalencia”, ya que mantiene en la salida un 1 lógico solamente cuando A=B, como se
observa en su tabla de verdad:

A B A⊕ B
0 0 1 A
Z = A⊕ B
0 1 0
1 0 0 B
1 1 1

Teniendo en cuenta las propiedades de la función XOR, puede demostrarse fácilmente:


f9 = A ⊕ B = A ⊕ B = A ⊕ B

• f14 = A ⋅ B , es el complemento de la función AND y recibe el nombre de función NAND.


Se representa por f14 = A ↑ B o simplemente A⋅ B , siendo su tabla de verdad:

A B A⋅ B
0 0 1
0 1 1
1 0 1
1 1 0

Página 15
Sistemas Digitales

Obviamente se representa por:


A
Z = A⋅ B
B
Esta función es conmutativa pero no asociativa:
A ↑ ( B ↑ C ) ≠ ( A ↑ B) ↑ C ya que A ⋅ B ⋅ C ≠ A ⋅ B ⋅ C

por tanto, si generásemos una función que realizase la operación NAND con más de dos
variables, se necesitaría especificar el orden en que se va a efectuar esta operación. Como esto
es algo incómodo, cuando se manejan más de dos variables, el término NAND aplicado a n
variables se interpreta como A1 ⋅ A2 ⋅ ... ⋅ An , es decir, aplicamos primero la función AND y
luego la complementamos. Su representación es:
A1
A2 Z = A1 ·A2 ·A3 ·...·An
A3
An

• f 8 = A + B , es el complemento de la función OR y recibe el nombre de función NOR. Se


representa por f 8 = A ↓ B o simplemente A + B , siendo su tabla de verdad:

A B A+ B
0 0 1
0 1 0
1 0 0
1 1 0

Al igual que la función NAND, esta función es conmutativa pero no asociativa:


A ↓ ( B ↓ C ) ≠ ( A ↓ B) ↓ C ya que A + B + C ≠ A + B + C

por ello, para más de dos variables la función NOR se interpreta como el complemento de la
OR aplicado a dichas variables. Su representación es:
A1
A2
A3 Z = A1 + A2 + A3 + ... + An
An
• f13 , es la denominada “función de implicación”. Se escribe f13 = A ⊃ B y se lee “A
implica B”. Significa que siempre que A sea cierto implica que B también lo ha de ser.

Veamos con un ejemplo el porqué de su denominación. Supongamos que A es una


variable lógica tal que:

A = T = 1 representa “ser salmantino”, A = F = 0 representa “no ser salmantino”


y que B es una variable lógica tal que:
B = T = 1 representa “ser español”, B = F = 0 representa “no ser español”

Página 16
Sistemas Digitales

Si ahora tenemos en cuenta la lógica de las siguientes expresiones y la definimos como


una nueva variable Z:

a) No ser salmantino (A = 0) y no ser español (B = 0) ⇒ Z = T = 1


b) No ser salmantino (A = 0) y ser español (B = 1) ⇒ Z = T = 1
c) Ser salmantino (A = 1) y no ser español (B = 0) ⇒ Z = T = 0
d) Ser salmantino (A = 1) y ser español (B = 1) ⇒ Z = T = 1

Vemos que la Z así definida verifica la tabla de verdad de la “implicación”

A B A⊃B
0 0 1
0 1 1
1 0 0
1 1 1

Por tanto, podemos concluir nuestro ejemplo diciendo que “ser salmantino implica ser
español”.

La función implicación no es conmutativa ni asociativa, por lo que existen de forma


independiente las siguientes funciones:
• f11 = B ⊃ A
• f2 = A ⊃ B
• f4 = B ⊃ A

Relaciones entre funciones lógicas. Suficiencias:


Las funciones lógicas vistas anteriormente no son todas independientes y pueden ponerse,
por ejemplo, en función de las funciones AND, OR y NOT. Así tendríamos:

f0 = 0 = A ⋅ A = B ⋅ B f1 = A ⋅ B f2 = A ⊃ B = A ⋅ B
f3 = A f4 = B ⊃ A = A ⋅ B f5 = B
f6 = A ⊕ B = A ⋅ B + A ⋅ B f7 = A + B f8 = A ↓ B = A + B = A ⋅ B
f9 = A ⊕ B = A ⋅ B + A ⋅ B f10 = B f11 = B ⊃ A = A + B
f12 = A f13 = A ⊃ B = A + B f14 = A ↑ B = A ⋅ B = A + B
f15 = 1 = A + A = B + B

Las demostraciones son sencillas en todos los casos. Veamos por ejemplo:
f6 = A ⊕ B = A ⋅ B + A ⋅ B

A B A B A⋅ B A⋅ B A⋅ B + A⋅ B A⊕ B
0 0 1 1 0 0 0 0
0 1 1 0 0 1 1 1
1 0 0 1 1 0 1 1
1 1 0 0 0 0 0 0

Página 17
Sistemas Digitales

Para el caso de funciones con más de dos variables, se generan aplicando repetidamente
operaciones que relacionan dos variables. Entonces podemos expresar cualquier función
lógica por medio de las operaciones AND, OR y NOT. Además AND, OR y NOT son
funciones cómodas de manejar al ser conmutativas y asociativas para dos variables.

Si tenemos en cuenta que A ⋅ B = A ⋅ B = A + B , vemos que es suficiente con las


operaciones OR y NOT para generar cualquier función lógica.

Por otra parte, teniendo en cuenta que A ⋅ A = A y que ( A·A)·(B·B) = A ⋅ B = A + B , se


deduce que con puertas NAND podemos implementar las operaciones OR y NOT, de donde
se desprende la suficiencia de la función NAND.

Análogamente A + B = A + B = A ·B con lo que con puertas AND y NOT podemos


generar cualquier función. Además A + A = A y ( A + A) + ( B + B) = A + B = A ⋅ B , de donde se
deduce la suficiencia de la función NOR para generar cualquier función lógica.

Así, cuando queramos diseñar un circuito usando un solo tipo de puerta (función) lógica,
recurriremos bien a puertas NAND o a puertas NOR, pues con cualquiera de ellas se pueden
generar todas las funciones lógicas.

Página 18
Sistemas Digitales

1.5- SIMPLIFICACIÓN DE FUNCIONES LÓGICAS

Vimos que simplificar expresiones lógicas aplicando los teoremas del álgebra de Boole era
demasiado engorroso. Ahora veremos procedimientos más sistemáticos y efectivos para
realizar simplificaciones.

Formas canónicas de funciones lógicas: suma de productos canónicos y producto de sumas


canónicas (o estándar)

Se llama “término canónico” de una función lógica a todo producto o suma en el cual
aparecen todas las variables de las que depende, ya sea en forma directa o complementada.

Por ejemplo, en una función de tres variables f = f ( A, B, C ) , el término A ⋅ B ⋅ C es un


producto canónico y el término A + B + C es una suma canónica. Para una función de n
variables, el número de términos canónicos posibles es 2n.

Cuando una función se expresa como una suma de productos canónicos o como producto de
sumas canónicas se dice que se encuentra en “forma canónica”.

Teorema: toda función de un álgebra de Boole se puede expresar de las siguientes formas:
f (a, b, c,...) = a ⋅ f (1, b, c,...) + a ⋅ f (0, b, c,...) o bien
[
f (a, b, c,...) = [a + f (0 , b, c,...)] ⋅ a + f (1,b,c,...) ]
Demostremos la primera y la segunda quedará demostrada por dualidad. Para ello basta
con comprobar la igualdad para a = 0 y a = 1 .
• Si a = 0 ⇒ a = 1, luego f (a, b, c,...) = 0 ⋅ f (1, b, c,...) + 1 ⋅ f (0, b, c,...) = f (0, b, c)
• Si a = 1 ⇒ a = 0, luego f (a, b, c,...) = 1 ⋅ f (1, b, c,...) + 0 ⋅ f (0, b, c,...) = f (1, b, c)
con lo que queda demostrado.

Corolario: Toda función lógica puede expresarse como suma de todos sus productos
canónicos cada uno de ellos multiplicado por un coeficiente. Este coeficiente es igual al valor
que toma la función al sustituir cada variable por 1 o por 0 según aparezca en el producto
canónico en forma directa o complementada, respectivamente.

Análogamente toda función lógica puede expresarse como producto de todas sus sumas
canónicas cada una de ellas con un sumando igual al valor que toma la función al sustituir
cada variable por 0 o por 1 (al contrario que como suma de productos) según aparezca en la
suma canónica en forma directa o complementada, respectivamente.

Como es habitual, demostremos el primer enunciado con lo que el segundo quedará


demostrado por dualidad. El teorema anterior nos decía que:

f (a, b, c,...) = a ⋅ f (1, b, c,...) + a ⋅ f (0, b, c,...) ......(*)


análogamente, podemos poner:

f (1, b, c,...) = b ⋅ f (1,1, c,...) + b ⋅ f (1,0, c,...)


f (0, b, c,...) = b ⋅ f (0,1, c,...) + b ⋅ f (0,0, c,...) . Sustituyendo en (*):

Página 19
Sistemas Digitales

f (a, b, c,...) = a ⋅ b ⋅ f (1,1, c,...) + a ⋅ b ⋅ f (1,0, c,...) + a ⋅ b ⋅ f (0,1, c,...) + a ⋅ b ⋅ f (0,0, c,...)

Repitiendo el proceso para cada variable obtenemos finalmente:


f (a, b, c,...) = a ⋅ b ⋅ c ⋅ ... ⋅ f (1,1,1,...) + a ⋅ b ⋅ c ⋅ ... ⋅ f (0,1,1,...) + a ⋅ b ⋅ c ⋅ ... ⋅ f (1,0,1,...) +
+ a ⋅ b ⋅ c ⋅ ... ⋅ f (0,0,1,...) + ... + a ⋅ b ⋅ c ⋅ ... ⋅ f (0,0,0,...)
con lo que el corolario queda demostrado.

En el caso del producto de sumas quedaría:


f (a, b, c,...) = [a + b + c + ... + f (0,0,0,...)]⋅ [a + b + c + ... + f (1,0,0,...)]⋅ [a + b + c + ... + f (0,1,0,...)]⋅
[a + b + c + ... + f (1,1,0,...)]⋅ ... ⋅ [a + b + c + ... + f (1,1,1,...)]
Veamos un ejemplo para tres variables. Sea la función f definida por la siguiente tabla de
verdad:

a b c f
0 0 0 1
0 0 1 0
0 1 0 0
0 1 1 1 Tendremos 23=8 términos canónicos. En el caso de los
1 0 0 0 productos, si los colocamos en el orden que nos indica la tabla de
1 0 1 1 verdad, obtenemos:
1 1 0 1
1 1 1 1

f (a, b, c, ) = a ⋅ b ⋅ c ⋅ f (0,0,0) + a ⋅ b ⋅ c ⋅ f (0,0,1) + a ⋅ b ⋅ c ⋅ f (0,1,0) + a ⋅ b ⋅ c ⋅ f (0,1,1) +


  
  
  
 
1 0 0 1
+ a ⋅ b ⋅ c ⋅ f (1,0,0) + a ⋅ b ⋅ c ⋅ f (1,0,1) + a ⋅ b ⋅ c ⋅ f (1,1,0) + a ⋅ b ⋅ c ⋅ f (1,1,1)

  
  
  
0 1 1 1
de donde obtenemos definitivamente:

f (a, b, c, ) = a ⋅ b ⋅ c + a ⋅ b ⋅ c + a ⋅ b ⋅ c + a ⋅ b ⋅ c + a ⋅ b ⋅ c

La función ha quedado expresada en su forma canónica de suma de productos. Para


expresar una función como suma de productos canónicos basta con tomar todos los términos
para los cuales la función vale uno y sustituir los unos por la variable correspondiente y los
ceros por su complementada.

Si queremos expresar la función como producto de sumas, podemos escribir aplicando el


anterior corolario:
       
f (a, b, c, ) = a + b + c + f (0,0,0) ⋅ a + b + c + f (0,0,1) ⋅ a + b + c + f (0,1,0) ⋅ a + b + c + f (0,1,1) ⋅
    
   
   
 
 1   0   0   1 
       
⋅ a + b + c + f (1,0,0) ⋅ a + b + c + f (1,0,1) ⋅ a + b + c + f (1,1,0) ⋅ a + b + c + f (1,1,1)
 
   
   
    
 0   1   1   1 
con lo que, considerando A+1=1:

Página 20
Sistemas Digitales

f (a, b, c) = (a + b + c) ⋅ (a + b + c) ⋅ (a + b + c)

La función ha quedado expresada en su forma canónica de producto de sumas. Para


expresar una función como producto de sumas canónicas basta con tomar todos los términos
para los cuales la función vale cero y sustituir los ceros por la variable correspondiente y los
unos por su complementada. (al contrario que como suma de productos).

A cada producto canónico se le denomina también “minterm” y a cada suma canónica


“maxterm”. Otra forma más sencilla de expresar una función se realiza numerando los
términos canónicos. Si en el ejemplo anterior tomamos abc como un número binario de tres
bits, siendo a el más significativo y c el menos significativo, podremos escribir sus
equivalentes en decimal:

a b c Decimal f Así, por extensión podemos escribir:


0 0 0 0 1 f (0) = 1, f (1) = 0, f (2) = 0, f (3) = 1,...
0 0 1 1 0 De este modo, cada producto canónico tiene un número binario
0 1 0 2 0 asociado que resulta al sustituir por unos las variables directas y por
0 1 1 3 1 ceros las complementadas. Por ejemplo, al producto canónico
1 0 0 4 0
a ⋅ b ⋅ c le asignamos el número binario 011, que en decimal es el
1 0 1 5 1
1 1 0 6 1 3. De igual forma, a la suma canónica a + b + c le corresponde el
1 1 1 7 1 número binario 001 (forma directa 0, complementada 1), que en
decimal es el 1.

Hay que tener cuidado con el orden en que se toman las variables. Éste es arbitrario, pero
una vez que se ha escogido un criterio se debe ser consecuente con él.
Así, numerando productos y sumas canónicas podemos escribir, volviendo al ejemplo
anterior:

f (a, b, c) = a⋅
b⋅ c + a⋅
b⋅ c + a⋅
b⋅ c + a⋅
b⋅ c + a⋅
b⋅ c = ∑ (0, 3, 5, 6, 7 )
0 3 5 6 7
que son las combinaciones de variables para las que f vale uno.
Análogamente:

f (a, b, c) = (a + b + c) ⋅ (a + b + c) ⋅ (a + b + c) = ∏ (1, 2, 4 )
  
1 2 4
que son las combinaciones de variables para las que f vale cero. Vemos que son justamente
los términos que faltan en la suma de productos canónicos, ya que si para una combinación de
variables f no es uno, deberá ser cero.

Dada una función expresada en forma canónica es muy fácil hallar su complemento.
Veámoslo con el ejemplo anterior:

f ( a , b, c , ) = a ⋅ b ⋅ c + a ⋅ b ⋅ c + a ⋅ b ⋅ c + a ⋅ b ⋅ c + a ⋅ b ⋅ c =
= (a ⋅ b ⋅ c) ⋅ (a ⋅ b ⋅ c) ⋅ (a ⋅ b ⋅ c) ⋅ (a ⋅ b ⋅ c) ⋅ (a ⋅ b ⋅ c) =
= (a + b + c ) ⋅ (a + b + c) ⋅ (a + b + c) ⋅ (a + b + c) ⋅ (a + b + c) = ∏ (0, 3, 5, 6, 7 )

Análogamente, si partimos de:

Página 21
Sistemas Digitales

f (a, b, c) = ∏ (1, 2, 4 ) obtendremos f (a, b, c) = ∑ (1, 2, 4 )


Por tanto, para hallar el inverso de una función lógica basta con intercambiar las sumas
canónicas por productos canónicos y viceversa (pues en la tabla cambiaríamos 1s por 0s y
viceversa).

Obtención de las formas canónicas a partir de la expresión lógica de una función

En el apartado anterior hemos visto como expresar funciones lógicas en su forma canónica
a partir de la tabla de verdad. Ahora veremos como hacerlo a partir de su expresión lógica.

Si queremos obtener la forma canónica de suma de productos, se operará algebraicamente


aplicando la propiedad distributiva de (·) respecto de (+) hasta obtener una expresión en
forma de suma de productos no canónicos. Para convertirlos en canónicos se multiplica cada
término por la suma de las variables que faltan en él y sus complementos (A+ A =1). Por
ejemplo, sea la función:
f (a, b, c) = a ⋅ (b + c) + c
aplicamos la propiedad distributiva obteniendo: f = a ⋅ b + a ⋅ c + c ,
multiplicamos cada término por la suma de las variables que faltan y sus complementos con
lo que el resultado no varía ya que estos factores valen 1:

f = a ⋅ b ⋅ (c + c) + a ⋅ c ⋅ (b + b) + c ⋅ (a + a ) ⋅ (b + b)
volviendo a aplicar la correspondiente distributiva obtenemos:

f = a⋅b⋅c + a⋅b⋅c + a⋅b⋅c + a⋅b⋅c + a⋅b⋅c + a⋅b⋅c + a⋅b⋅c + a⋅b⋅c,


suprimiendo los términos repetidos ya que A + A = A :

f = a⋅
b⋅ c + a⋅
b⋅ c + a⋅
b⋅ c + a⋅
b⋅ c + a⋅
b⋅ c + a⋅
b⋅ c = ∑ (1, 3, 4, 5, 6, 7 )
5 4 6 7 3 1

Análogamente, si queremos obtener la forma canónica de producto de sumas se operará


algebraicamente aplicando la propiedad distributiva de (+) respecto de (·) hasta obtener
una expresión de producto de sumas no canónicas. Para convertir estas sumas en canónicas se
le suma el producto de cada variable que falta en él por su complementada (A· A =0).
Veámoslo con un ejemplo:
Sea la función anterior f (a, b, c) = a ⋅ (b + c) + c . Si aplicamos la correspondiente
distributiva de (+) respecto de (·) tenemos (A+BC=(A+B)(A+C) ):

f = (a + c) ⋅ (b + c
+ c) = (a + c) ⋅ (b + 1) = a + c
1
De acuerdo con lo explicado sumamos b ⋅ b , que como vale cero no cambia el valor de la
expresión, con lo que obtenemos: f = a + c + b ⋅ b . Volviendo a aplicar la correspondiente
distributiva obtenemos finalmente:

f = (a
+
b+c) ⋅ (a
+
b+c) = ∏ (0, 2)
0 2
como cabía esperar.

Página 22
Sistemas Digitales

Simplificación de funciones lógicas:

No existe actualmente un criterio único de minimización de la expresión de una función


lógica. Adoptaremos el criterio más extendido, que es el de obtener una expresión en forma
de suma de productos o producto de sumas que tenga un número mínimo de términos con el
menor número de variables posible en cada uno de ellos.

Para obtener una expresión mínima de suma de productos o producto de sumas partiremos
de la forma canónica correspondiente. En general se han de obtener ambas expresiones y
utilizar la más sencilla de ellas para realizar la función en la práctica.

En los métodos de simplificación que veremos vamos a aplicar sistemáticamente las


siguientes propiedades:

Ec. 1: a1 ⋅ a 2 ⋅ a3 ⋅ .... ⋅ a n + a1 ⋅ a 2 ⋅ a3 ⋅ .... ⋅ a n = a 2 ⋅ a3 ⋅ .... ⋅ a n


Ec. 2: (a1 + a 2 + a3 + .... + a n ) ⋅ (a1 + a 2 + a3 + .... + a n ) = a 2 + a3 + .... + a n

La demostración es inmediata aplicando las correspondientes propiedades distributivas y


luego teniendo en cuenta que a1 + a1 = 1 y que a1 ⋅ a1 = 0 . ( ( AB + AB = B( A + A) = B y
( A + B)·(A + B) = B + A A = B ).

Dos términos canónicos son adyacentes lógicamente cuando difieren solamente en el


estado de una de las variables
La primera de las dos expresiones indica que la suma de dos productos canónicos
adyacentes lógicamente se reduce a un único producto en el cual se ha eliminado dicha
variable. La segunda expresión es la dual de la anterior e indica lo mismo para las sumas
canónicas.

Esta propiedad algebraica de simplificación se puede usar también de una forma numérica,
usando los equivalentes numéricos de las combinaciones binarias tal y como ya hemos
indicado.

Por ejemplo, sea la expresión lógica:


f (a, b, c, d ) = a ⋅ b ⋅ c ⋅ d + a ⋅ b ⋅ c ⋅ d + a ⋅ b ⋅ c ⋅ d + a ⋅ b ⋅ c ⋅ d

de acuerdo con la Ec.1:


+ a) ⋅ b ⋅ c ⋅ d = b ⋅ c ⋅ d
a ⋅ b ⋅ c ⋅ d + a ⋅ b ⋅ c ⋅ d = (a
1
+ a) ⋅ b ⋅ c ⋅ d = b ⋅ c ⋅ d
a ⋅ b ⋅ c ⋅ d + a ⋅ b ⋅ c ⋅ d = (a
1
Esto se puede expresar de forma numérica:

a ⋅b⋅c ⋅d + a ⋅b⋅c ⋅d =  ⋅b⋅c ⋅d


1111
 0111
 falta la variable de peso 8

15 7 8 = 15-7

Página 23
Sistemas Digitales

a ⋅b⋅c⋅d + a ⋅b⋅c⋅d =  ⋅b⋅c⋅d


1101
 0101
 falta la variable de peso 8

13 5 8 = 13-5

Se observa que los números difieren en una potencia de dos igual al peso de la variable
binaria que desaparece. A su vez:

+ c) ⋅ d = b ⋅ d
b ⋅ c ⋅ d + b ⋅ c ⋅ d = b ⋅ (c
1
Numéricamente:
b⋅c⋅d + b⋅c⋅d =  ⋅b⋅  ⋅d
faltan las variables de pesos 2 y 8

2 2
15-7 13-5 15-13-7-5
15
 -7 13
 -5
8 8
por tanto: f (a, b, c, d ) = b ⋅ d

Veamos ahora un ejemplo con productos de sumas: ( ( A + B)·(A + B) = B + A A = B )

Sea g (a, b, c, d ) = (a + b + c + d ) ⋅ (a + b + c + d ) ⋅ (a + b + c + d ) ⋅ (a + b + c + d )

⋅a +b+c + d = b+c + d
(a + b + c + d ) ⋅ (a + b + c + d ) = a
0
⋅a +b+c + d = b+c + d
(a + b + c + d ) ⋅ (a + b + c + d ) = a
0

Numéricamente:
(a + b + c + d ) ⋅ (a + b + c + d ) = +b+c+d
1010
 0010
 falta la variable de peso 8

10 2 8 = 10-2
(a + b + c + d ) ⋅ (a + b + c + d ) = +b+c+d
1110
 0110
 falta la variable de peso 8

14 6 8 = 14-6

De nuevo: g = (b + c + d ) ⋅ (b + c + d ) = b
⋅b + c + d = c + d
0
y numéricamente:

Página 24
Sistemas Digitales

(b + c + d ) ⋅ (b + c + d ) = ++c+d
faltan las variables de pesos 4 y 8

 4 
4
10-2 14-6 14-10-6-2
14
 -6 10
-2
8 8
Aplicando estas propiedades se logra reducir al mínimo cualquier expresión lógica en
forma de producto de sumas o de suma de productos. La expresión final, en la que no se
puede suprimir ningún término ni eliminar variables de ellos, se denomina “expresión
irreducible”. Obsérvese que el número de términos canónicos adyacentes que se pueden
agrupar es siempre una potencia de 2. Combinando los términos de distintas maneras para su
simplificación, se obtienen a veces varias expresiones irreducibles diferentes. De todas ellas
es necesario elegir la menos compleja para su realización.

Diagramas de Karnaugh:

Es un método de simplificación gráfico en el que los términos canónicos adyacentes se


agrupan en un diagrama de tal forma que estén visualmente contiguos. De esta forma será
muy sencillo realizar agrupaciones que permitan reducir al mínimo la expresión de la función.

A continuación se representan los diagramas de Karnaugh de funciones desde 2 hasta 5


variables.

Para 2 variables a (msb), b (lsb):


a
0 1
b
0
0 2

1
1 3

Para 3 variables a (msb), b, c (lsb):

ab
00 01 11 10
c
0
0 2 6 4

1
1 3 7 5

Para 4 variables a (msb), b, c, d (lsb):

Página 25
Sistemas Digitales

ab
00 01 11 10
cd
00
0 4 12 8

01
1 5 13 9

11
3 7 15 11

10
2 6 14 10

Para 5 variables a (msb), b, c, d, e (lsb):

bc bc
00 01 11 10 00 01 11 10
de de
00 00
0 4 12 8 16 20 28 24

01 01
1 5 13 9 17 21 29 25

11 11
3 7 15 11 19 23 31 27

10 10
2 6 14 10 18 22 30 26

a=0 a=1

Obsérvese que en los diagramas de 3, 4 y 5 variables, las numeraciones aparecen de forma


que al pasar de un número al contiguo sólo cambia 1 bit (código Gray). Esto favorece las
adyacencias.

Cada cuadrado corresponde a un término (producto o suma) canónico cuyo número se


indica en el vértice inferior derecho. Los cuadrados que tienen un lado común, es decir, que
son físicamente adyacentes, corresponden a términos canónicos que son lógicamente
adyacentes y la diferencia de los números decimales que les corresponden son una potencia de
2. Además, los cuadrados de la fila superior son adyacentes a los respectivos de la fila inferior
y los de la columna de la izquierda a los de la de la derecha.

En la tabla de Karnaugh de cinco variables, los de la tabla de la izquierda son adyacentes a


los correspondientes de la tabla de la derecha.

Para obtener la expresión algebraica más sencilla de la función es necesario realizar en la


tabla el máximo número de agrupaciones de términos de la máxima complejidad, de modo
que se cubran todos los unos de la tabla (o todos los 0 para producto de sumas). Como hemos
visto, el número de términos canónicos adyacentes que pueden agruparse es una potencia de
dos (2, 4, 8…).

El procedimiento sistemático para obtener la expresión más simple como suma de


productos es el siguiente:

Página 26
Sistemas Digitales

• Se toman todos los “unos” que no se puedan combinar con ningún otro.
• Se forman los grupos de dos “unos” que no puedan formar un grupo de cuatro.
• Se forman los grupos de cuatro “unos” que no puedan formar un grupo de ocho.
• Cuando se hayan cubierto todos los “unos” se detiene el proceso.

Notas:
- Un mismo 1 ( o “0” como producto de sumas) puede pertenecer a varios grupos.
- Los cuatro vértices pueden agruparse entre si (0, 8, 10, 2).
- Dos vértices solos no pueden agruparse entre si (0-10, 2-8).

En la práctica es necesario realizar este proceso de todas las formas que sea posible y
elegir la expresión canónica más sencilla de las resultantes. La expresión canónica más
sencilla, en el sentido de un menor coste, es la que tiene menos puertas.

Veámoslo con dos ejemplos.

1.- Sea la función: f (a, b, c, d ) = ∑ (2, 3, 5, 7, 10, 11, 12,15) . Para expresarla como suma
de productos formamos el diagrama de Karnaugh para cuatro variables.

a·b·c·d
ab
cd 00 01 11 10

00 0
1
4 12 8

01 1
1 5 13 9

11 1 1 1 1
3 7 15 11

10 1 1
2 6 14 10

a·b·d c·d b·c

con lo que obtenemos: f (a, b, c, d ) = a ⋅ b ⋅ c ⋅ d + a ⋅ b ⋅ d + c ⋅ d + b ⋅ c

Si queremos hallar f como producto de sumas:

f (a, b, c, d ) = ∑ (2, 3, 5, 7, 10, 11, 12,15) = ∏ (0, 1, 4, 6, 8, 9, 13, 14)

Formamos el diagrama de Karnaugh:

Página 27
Sistemas Digitales

a+c+d
b+c
ab
cd 00 01 11 10

00 0 0 0
0 4 12 8 a+c+d
01 0 0 0
1 5 13 9

11
3 7 15 11

10 0 0
2 6 14 10

a+b+d b+c+d

Por tanto: f (a, b, c, d ) = (a + c + d ) ⋅ (a + c + d ) ⋅ (b + c + d ) ⋅ (b + c)


o también f (a, b, c, d ) = (a + b + d ) ⋅ (a + c + d ) ⋅ (b + c + d ) ⋅ (b + c)

La realización de ambos circuitos es, en este caso, similar en complejidad.

2.- Buscar la realización física más sencilla de la función:

a b c f(a,b,c)
0 0 0 0 1
1 0 0 1 0
2 0 1 0 1
3 0 1 1 1
4 1 0 0 0
5 1 0 1 0
6 1 1 0 1
7 1 1 1 1

Se tiene f = ∑ (0, 2, 3, 6, 7) = ∏ (1, 4, 5) , de donde obtenemos:

Suma de Productos Producto de Sumas

ab ab
c 00 01 11 10 c 00 01 11 10

0 1 1 1 0 0
0 2 6 4 0 2 6 4

1 1 1 1 0 0
1 3 7 5 1 3 7 5

b+c a+b
a·c b

Del primer diagrama obtenemos: f ( a , b, c ) = b + a ⋅ c


y del segundo: f (a, b, c) = (a + b) ⋅ (b + c)

Página 28
Sistemas Digitales

Las respectivas realizaciones serán:

a a·c a a+b
c f = (a + b)·(b + c)
f = b + a·c b

b
c b+c

Por tanto es más sencilla la realización en puertas AND-OR (suma de productos), ya que en
este caso sólo se necesitan dos puertas y en el otro tres.

Funciones incompletamente especificadas:

Hasta ahora hemos estudiado funciones lógicas en las cuales para cada combinación de
entradas se define un valor lógico (uno o cero) de la función. Estas funciones se denominan
“completamente especificadas”.

También existen funciones, denominadas “incompletamente especificadas”, en las que,


para una o para más combinaciones en las entradas, a la salida se le puede asignar el valor
cero o uno indistintamente por dos posibles motivos:

1. No puede darse una o más combinaciones de entradas. Por tanto, la salida


correspondiente a esas combinaciones es indiferente.
2. Cuando aparecen una o más combinaciones de entradas, la acción de la salida del
sistema lógico está inhibida. Por tanto, la salida correspondiente también es
indiferente.

La forma canónica de una función incompleta se representa indicando separadamente los


términos canónicos para los cuales la función vale uno (o cero) y los términos canónicos para
los cuales la función es indiferente, indicándolo con el símbolo φ .

En la tabla de verdad de una función incompletamente especificada se colocan asteriscos en


las posiciones correspondientes a las combinaciones de entrada para las que no está definido
el estado de salida.

Por ejemplo, sea la función: f (a, b, c, d ) = ∑ (1, 3, 6, 8, 10, 11) + ∑ (0, 2, 4, 12, 13)
φ

La tabla de verdad será:

Página 29
Sistemas Digitales

a b c d f
0 0 0 0 0 * Su función complementaria será:
1 0 0 0 1 1
2 0 0 1 0 * f (a, b, c, d ) = ∏ (1,3,6,8,10,11)·∏ (0,2,4,12,13)
3 0 0 1 1 1 φ
4 0 1 0 0 * es decir, en f y en f los términos irrelevantes son los mismos.
5 0 1 0 1 0
6 0 1 1 0 1 Poniendo f como producto de sumas tenemos:
7 0 1 1 1 0
8 1 0 0 0 1
f (a, b, c, d ) = ∑ (1, 3, 6, 8, 10, 11) + ∑ (0, 2, 4, 12, 13) =
9 1 0 0 1 0 φ
10 1 0 1 0 1
11 1 0 1 1 1 = ∏ (5, 7, 9, 14, 15) ⋅ ∏ (0, 2, 4, 12, 13)
φ
12 1 1 0 0 *
13 1 1 0 1 * donde vemos que los términos irrelevantes son los mismos.
14 1 1 1 0 0
15 1 1 1 1 0

La minimización de estas funciones se puede realizar de la misma manera que acabamos


de estudiar. La única diferencia es que a los términos indiferentes les podemos asignar el
valor cero o uno según convenga a la hora de simplificar.

Simplifiquemos la función f anterior mediante el diagrama de Karnaugh:

f (a, b, c, d ) = ∑ (1, 3, 6, 8, 10, 11) + ∑ (0, 2, 4, 12, 13)


φ
en el diagrama indicaremos con asteriscos los cuadrados correspondientes a los términos
indiferentes. Tomamos los asteriscos que nos convenga para agrupar los términos canónicos
de forma que se produzcan las mayores simplificaciones posibles:

ab
cd 00 01 11 10

00 * * * 12 1
0 4 8 b·d
01 1 *
1 5 13 9

a·b 11 1 1
3 7 15 11
b·c
10 * 1 1
2 6 14 10

a·d

Por tanto: f (a, b, c, d ) = a ⋅ b + a ⋅ d + b ⋅ c + b ⋅ d

Página 30
Sistemas Digitales

Hay otra forma de agrupar los términos:

ab
cd 00 01 11 10

00 * * * 1 c·d
0 4 12 8

01 1 *
1 5 13 9

a·b 11 1 1
3 7 15 11
b·c
10 * 1 1
2 6 14 10

a·d

con lo que se obtiene: f (a, b, c, d ) = a ⋅ b + a ⋅ d + b ⋅ c + c ⋅ d

Las ventajas del método de Karnaugh son que es sencillo e intuitivo. Visualmente pueden
obtenerse las asociaciones de adyacencias que hay que hacer para simplificar las funciones. El
inconveniente es que es impracticable para funciones lógicas de más de cinco variables.

El uso de diagramas de Karnaugh para simplificar funciones lógicas tiene la limitación de


que solo es aplicable a funciones con un número pequeño de variables, no siendo utilizado
para funciones con más de 5 variables. Además presenta la desventaja de que depende de la
habilidad del diseñador a la hora de agrupar términos adyacentes.

Como alternativa al método de Karnaugh se utilizan otros métodos siendo el más


destacado el llamado tabular o de Quine-McCluskey (Roth pag.142). Este método busca la
simplificación de la función expresada como suma de productos de una forma sistemática,
presentando la ventaja de que puede ser programado en un ordenador. Para ello utiliza varias
tablas en las que se buscan todas las agrupaciones posibles entre los productos de la función
consiguiendo de una manera reiterativa una expresión mínima.

Página 31
Sistemas Digitales

TEMA 2

CÓDIGOS NUMÉRICOS Y ALFANUMÉRICOS

2.1- EL SISTEMA BINARIO


En el sistema de numeración decimal, el que nosotros normalmente usamos, cada cifra o
dígito tiene un peso mayor o menor dependiendo de la posición que ocupa dentro del número.
Por ejemplo, cuando escribimos 5802, el significado numérico es:

5802 = 5 ⋅ 10 3 + 8 ⋅ 10 2 + 0 ⋅ 101 + 2 ⋅ 10 0

En este sistema, el 10 es la “base” o “raíz”: un número se expresa como una serie de


coeficientes que multiplican a las sucesivas potencias de 10 (la base). Hay un total de 10
dígitos diferentes, desde el 0 hasta el 9. En un sistema de numeración de base n hay
entonces n dígitos siendo el mayor el n-1.

En sistemas descritos por variables lógicas resulta muy conveniente utilizar el sistema de
base 2 o “binario”. Este sistema utiliza sólo dos dígitos que serán el 0 y el 1. De hecho,
podemos establecer una equivalencia entre estos dos dígitos (números) y los valores lógicos
(no números) 0 y 1. Esta asociación es tan íntima y conveniente que a veces se pierde de vista
la distinción.

Un número expresado en binario consiste en una sucesión de ceros y unos. Por ejemplo:
10010. Análogamente al caso decimal debemos interpretar:

10010 = 1 ⋅ 2 4 + 0 ⋅ 2 3 + 0 ⋅ 2 2 + 1 ⋅ 21 + 0 ⋅ 2 0 = 16 + 0 + 0 + 2 + 0 = 18

Vemos que si realizamos las operaciones indicadas utilizando las reglas de sumar y
multiplicar de la base 10, se obtiene el número en dicha base.

Al igual que en el caso decimal, un número no entero puede representarse usando la


notación coma decimal. Así 1,8125 se interpreta en base 10 como:

1,8125 = 1 ⋅ 10 0 + 8 ⋅ 10 −1 + 1 ⋅ 10 −2 + 2 ⋅ 10 −3 + 5 ⋅ 10 −4

En el caso binario tendremos, por ej.:

1,1001 = 1 ⋅ 2 0 + 1 ⋅ 2 −1 + 0 ⋅ 2 −2 + 0 ⋅ 2 −3 + 1 ⋅ 2 −4 = 1 ⋅ 1 + 1 ⋅ 0,5 + 0 ⋅ 0,25 + 0 ⋅ 0,125 + 1 ⋅ 0,0625 =


= 1,5625

Análogamente al caso decimal, mover k posiciones a la derecha la coma decimal


equivale a multiplicar por 2k y mover k posiciones a la izquierda la coma decimal equivale
a dividir por 2k.

Para representar un número decimal N en binario, necesitaremos un número de dígitos


binarios tales que: 2 n −1 ≤ N ≤ 2 n .

Página 32
Sistemas Digitales

Conversión de un número decimal a binario:

• División/Multiplicación sucesiva por 2

Caso de número entero (División sucesiva por 2):


75 2
15 37 2
1 17 18 2
1 0 9 2
1 4 2
0 2 2
0 1 1001011

Dígito menos Dígito más


significativo significativo

Caso de número decimal menor que la unidad (multiplicación sucesiva por 2). Por
ejemplo, expresar 0,423 en binario:

0,423 x 2 = 0,846 Dígito más significativo


0,846 x 2 = 1,692
0,692 x 2 = 1,384

0,384 x 2 = 0,768
0,768 x 2 = 1,536
0,536 x 2 = 1,072 Dígito menos significativo

Así vamos obteniendo: 0,423 = 0,011011 .... terminando la secuencia de números en el


caso de que al multiplicar por 2 obtengamos parte decimal nula.

Ej. Vamos a convertir a binario el número: 138,375

138 2
18 69 2 0,375 x 2 = 0,750
0 09 34 2
1 14 17 2 0,750 x 2 = 1,500
0,500 x 2 = 1,000
0 1 8 2
0 4 2
0 2 2
0 1
Por lo tanto: 138,375 = 10001010,011

• Suma de pesos
Otra forma alternativa de convertir un número decimal a binario es el método de la suma de
pesos. Se busca el conjunto de pesos binarios o potencias de 2 cuya suma es igual al
número decimal. Es fácil acordarse de los distintos pesos binarios si partimos de 20 (1) y
vamos multiplicando por 2: 1, 2, 4, 8, 16, 32....En primer lugar buscamos la potencia de 2

Página 33
Sistemas Digitales

inmediatamente inferior al número decimal que queremos convertir. Restamos ese valor al
número decimal y repetimos el proceso con el resto sucesivamente hasta que el resto sea cero.
Para obtener el número binario colocamos unos en las posiciones correspondientes a los
pesos binarios que hemos utilizado.

Ej. Convertir a binario el número 138,375 mediante el método de la suma de pesos.

138 = 128(27) + 8 (23) + 2 (21) = 10001010


0,375 = 0,25 (2-2) + 0,125 (2-3) = 011 Luego 138,375 = 10001010,011

Aritmética binaria
La suma aritmética de dos bits resulta muy sencilla porque éstos sólo pueden tomar el valor
cero y uno. La tabla de verdad de la suma en el sistema de base dos es:

Sumandos Suma binaria Acarreo


a b s c
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1
Nota: No confundir suma binaria con suma lógica. En la suma binaria 1+1=
0 +c y en la suma lógica 1+1 =1.
La suma binaria toma el valor uno cuando uno sólo de los sumandos tiene dicho valor.
Cuando ambos sumandos tienen el valor uno la suma es cero y se produce un acarreo. Por
tanto, podemos considerar la suma aritmética de dos bits como una función lógica de dos
variables de entrada, a y b, y dos variables de salida, que son la suma binaria s y el acarreo c.
De la tabla de verdad anterior se deduce que:
s = a⊕b
c = a ⋅b
Cuando se desean sumar dos bits que forman parte de un número binario, es necesario
sumar a ambos el acarreo precedente de la suma de los bits de peso inmediato inferior. Así,
por ejemplo, si queremos sumar los números 9 y 3 en binario, tendremos:

0 0 1 1 Acarreo
9 1 0 0 1
3 + 0 0 1 1
12 0 1 1 0 0

Representación de números negativos


Un convenio que se ha utilizado en todos los sistemas de numeración para la
representación de los números negativos es el de emplear una cifra en el extremo izquierdo
del número correspondiente para representar el signo. En el sistema binario dicha cifra,
llamada “bit de signo”, es un cero si el número es positivo y un uno si es negativo. Este
sistema se denomina de “valor absoluto y signo”, ya que los números negativos se representan
mediante su valor absoluto y un bit de signo. Así, por ejemplo, si disponemos de cuatro bits,
el número 5 se representará como:

Página 34
Sistemas Digitales

0 1 0 1
Signo Magnitud
y el –5 como:

1 1 0 1
Signo Magnitud

Este método de representación de los números negativos tiene el inconveniente de que para
la realización de la resta es necesario utilizar un circuito restador diferente del sumador.

Con la notación “complemento a 2” (CA2) se resuelve este problema, pues las sumas y
las restas se realizan de la misma manera. Dado un número expresado en binario, su
complemento a dos se halla complementándolo bit a bit (sustituyendo unos por ceros y
ceros por unos) (lo que se denomina complemento a 1) y sumándole posteriormente una
unidad. Por ejemplo, para hallar el complemento a dos del número 5 que en binario es 0101,
su complemento a 1 será 1010 y sumándole una unidad obtenemos 1011. Este número será
entonces el –5.

Otra forma de hallar el CA2 es buscar el primer bit a 1 empezando por el menos
significativo. Este bit se deja tal cual pero todos los demás se complementan.

Esta notación se ha pensado para que al sumar un número y su CA2 el resultado sea
cero, al igual que ocurre en el sistema decimal. En general con n bits podemos representar 2n
números comprendidos entre –2n-1 y 2n-1-1 (de 0111(7) a 0000(0) y de 1111 (-1) a 1000 (-8) ).
Todos los números positivos tienen el bit más significativo con valor cero y los negativos con
valor uno con lo que de nuevo el bit más significativo es el bit de signo.

Hay que tener en cuenta que el complemento a dos de un número depende del número de
bits que estemos manejando. Si manejamos números de cuatro bits, el complemento a dos de
5 será 1011, pero si manejamos números de cinco bits, el 5 se representará por 00101, al
complementarlo obtenemos 11010 y sumando uno 11011 que es diferente del número
anterior.

Con esta notación de los números negativos, la resta se convierte en una suma y se realiza
de la misma manera. Veámoslo con dos ejemplos:

Calculemos 7–5 :
Siete se representa en cuatro bits por 0111 y el –5, al ser negativo, lo representamos por su
complemento a dos, es decir, 1011. Sumando ambos números:

1 1 1 1 Acarreo
0 1 1 1
+ 1 0 1 1
1 0 0 1 0

es decir, prescindiendo del quinto bit, ya que estamos manejando números de cuatro bits,
hemos obtenido el número binario 0010 que corresponde al número 2.

Página 35
Sistemas Digitales

Calculemos 5–7:
Cinco es positivo luego lo representamos en binario natural por 0101. El –7, al ser
negativo, lo representamos por su complemento a dos que será:

0111, complementando: 1000, sumando uno: 1001

Tenemos entonces:

1 Acarreo
0 1 0 1
+ 1 0 0 1
1 1 1 0

Vemos que hemos obtenido un número negativo al ser uno el cuarto bit, luego el número
obtenido se encontrará en complemento a dos. Realizando el CA1 de este número y
sumándole 1 calculamos el CA2 del resultado, obteniendo 0010, con lo que el resultado es –2.

Nota: el CA2 del CA2 nos devuelve el número positivo. Así en el caso anterior teníamos 1110
que complementado es 0001 y sumando uno 0010 que corresponde al 2.

2.2- SISTEMAS OCTAL Y HEXADECIMAL

Sistema octal: es el sistema de numeración de base 8, por lo que tan solo utiliza los dígitos
desde el 0 hasta el 7.

Su utilidad radica en el hecho de que tres dígitos binarios pueden representar exactamente
23=8 números diferentes. Para convertir un número de binario a octal basta con agrupar los
dígitos binarios de 3 en 3 partiendo de la coma decimal en ambas direcciones y sustituir
directamente cada grupo de 3 dígitos por el número que representan.

Como en el ejemplo anterior: 138.375(dec.) = 10 | 001 | 010,011(bin.) = 212,3(octal )

Sistema hexadecimal: es el sistema de numeración de base 16, por lo que debe utilizar 16
dígitos distintos. A partir del digito 10 (número 9) utilizaremos letras mayúsculas con lo que
tendremos los siguientes dígitos para este sistema:

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A=10, B=11, C=12, D=13, E=14, F=15

Su utilidad radica en el hecho de que cuatro dígitos binarios pueden representar


exactamente 24=16 números diferentes. Para convertir un número de binario a hexadecimal
basta con agrupar los dígitos binarios de 4 en 4 partiendo de la coma decimal en ambas
direcciones.

Ejemplo: el número binario


100
11111100, 1101
00101010 representa el número 4FC,D2A en base 16
4 F C D 2 A

2.3- DECIMAL CODIFICADO BINARIO (BCD)

Página 36
Sistemas Digitales

El sistema numérico binario tiene la ventaja de que sus dígitos pueden ponerse en
correspondencia exacta con los valores de una variable lógica, pero existe una desventaja: las
conversiones decimal – binario son complicadas, ya que, en general, cada dígito binario puede
afectar a cada dígito decimal y viceversa. Para evitar este inconveniente se usa el código
BCD, en el que se emplean 4 dígitos binarios para representar los dígitos decimales del 0 al
9 (las representaciones binarias para dichos números decimales son las del binario natural).
BCD
Dígito decimal A B C D
0 0 0 0 0
1 0 0 0 1 De esta forma, para
2 0 0 1 0 representar números decimales
3 0 0 1 1 con varios dígitos no hay más
4 0 1 0 0 que sustituir cada dígito
5 0 1 0 1 individual por el correspondiente
6 0 1 1 0 grupo binario ABCD.
7 0 1 1 1 Así por ejemplo, el número
decimal 6432 en BCD es:
8 1 0 0 0
9 1 0 0 1 0110
 0100
 0011 0010
6 4 3 2

La ventaja de este sistema está en la facilidad de la conversión. Sin embargo, presenta


el inconveniente de que, al desaprovechar 6 combinaciones binarias (del 10 al 15), los
números en BCD son más largos que sus equivalentes en binario natural. En el caso anterior,
este número se representa en binario natural por 1100100100000, necesitando tan sólo 13 bits
en lugar de los 16 utilizados. Por otra parte, la aritmética en BCD resulta bastante complicada.

2.4- CÓDIGOS BINARIOS CONTINUOS Y CÍCLICOS

Un código binario es “continuo” si las combinaciones correspondientes a números


decimales consecutivos difieren solamente en un dígito binario. Las combinaciones que
verifican esta propiedad se denominan “adyacentes”. Un código continuo cuya última
combinación es adyacente a la primera se denomina “cíclico”.

Veamos los dos principales códigos cíclicos:

Código de Gray o reflejado:


Partimos de los dígitos binarios 0 y 1 que constituirían el código de Gray correspondiente a
1 bit. Si los reflejamos mediante un espejo en su parte inferior tendremos:

0
1
Espejo
1
0

Si a continuación añadimos delante dos ceros y dos unos tendremos el código de Gray de 2
bits:

Página 37
Sistemas Digitales

Gray de 2
bits
0 0
0 1 Este es el código que se utiliza en los diagramas de
1 1 Karnaugh.
1 0
Para obtener el código de Gray de 3 bits se repite el proceso anterior, es decir, reflejamos
el código de Gray de 2 bits por su parte inferior y a continuación añadimos delante 4 ceros y 4
unos con lo que obtenemos:

Gray de 3 bits
0 0 0
0 0 1
0 1 1
0 1 0
Espejo
1 1 0
1 1 1
1 0 1
1 0 0

De esta forma se pueden ir construyendo sucesivamente los códigos de Gray de 4, 5,..., n bits.

Tabla de equivalencias decimal – binario natural – Gray (4 bits)

Decimal Binario natural Código Gray


a b c d A B C D
0 0 0 0 0 0 0 0 0
1 0 0 0 1 0 0 0 1
2 0 0 1 0 0 0 1 1
3 0 0 1 1 0 0 1 0
4 0 1 0 0 0 1 1 0
5 0 1 0 1 0 1 1 1
6 0 1 1 0 0 1 0 1
7 0 1 1 1 0 1 0 0
8 1 0 0 0 1 1 0 0
9 1 0 0 1 1 1 0 1
10 1 0 1 0 1 1 1 1
11 1 0 1 1 1 1 1 0
12 1 1 0 0 1 0 1 0
13 1 1 0 1 1 0 1 1
14 1 1 1 0 1 0 0 1
15 1 1 1 1 1 0 0 0

Tabla 2.1. Equivalencia decimal – binario natural – código Gray (4 bits)

Una gran ventaja de este código es la facilidad de convertirlo a código binario natural y
viceversa mediante la función XOR. Puede demostrarse que:

Página 38
Sistemas Digitales

Para convertir binario (a, b, c, d) a Gray (A, B, C, D):

A=a
B=a⊕b
C = b⊕c
D = c⊕d
(msb) a A (msb)
a⊕b
B
b

b⊕c
C
c

c⊕d
D (lsb)
(lsb) d

Para convertir Gray (A, B, C, D) a binario (a, b, c, d):


a=A
b = A⊕B=a⊕B
c = A⊕B⊕C = b⊕C
d = A⊕B⊕C⊕D = c⊕D
(msb) A a (msb)

A⊕ B
b
B
A⊕ B⊕C
c
C

A ⊕ B ⊕ C ⊕ D d (lsb)
(lsb) D

Análogamente al caso binario, si queremos representar un número decimal N tendremos


que usar un código de Gray de n dígitos tal que 2 n −1 ≤ N ≤ 2 n

Código Johnson o progresivo:


Se denomina progresivo porque se obtiene añadiendo ceros y unos:

Decimal Johnson 5 bits Johnson 4 bits Johnson 3 bits


0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 1 0 0 0 1 0 0 1
2 0 0 0 1 1 0 0 1 1 0 1 1

Página 39
Sistemas Digitales

3 0 0 1 1 1 0 1 1 1 1 1 1
4 0 1 1 1 1 1 1 1 1 1 1 0
5 1 1 1 1 1 1 1 1 0 1 0 0
6 1 1 1 1 0 1 1 0 0 -- -- --
7 1 1 1 0 0 1 0 0 0 -- -- --
8 1 1 0 0 0 -- -- -- -- -- -- --
9 1 0 0 0 0 -- -- -- -- -- -- --
El inconveniente de este código es que para representar un número decimal N necesitamos
un código de Johnson de n dígitos tal que: 2(n - 1) ≤ N ≤ 2n . Presenta, sin embargo, la gran
ventaja de su gran sencillez para la realización de contadores en este código, lo que permite su
utilización en el diseño de unidades de control de numerosos sistemas digitales.

Los códigos continuos y cíclicos se usan en los conversores analógico – digitales rápidos
y en los codificadores de posición que convierten un ángulo en una combinación binaria
mediante un disco codificado. Debido a que en combinaciones binarias contiguas sólo cambia
un bit, se elimina la posibilidad de aparición de combinaciones intermedias erróneas que
pueden proporcionar una información incorrecta en el momento de realizar la medida.

2.5- CÓDIGOS ALFANUMÉRICOS. EL CÓDIGO ASCII

En los códigos estudiados en los apartados anteriores sólo es posible representar


información numérica. Pero en muchos sistemas digitales, tanto de control como de proceso
de datos, es necesario representar información alfabética por lo que es necesaria la utilización
de códigos alfanuméricos.

El más extendido es el código ASCII (American Standard Code for Information


Interchange). Dicho código utiliza palabras de 7 bits con las que pueden representarse 27=128
elementos de información. Entre ellos están los caracteres alfabéticos y numéricos, los
tipográficos y, además, algunas instrucciones de operación de unidades periféricas tales como
impresoras, sistemas de trasmisión de datos, etc. (caracteres de control).

Existen una versión extendida del código ASCII (IBMPC) que utiliza palabras de 8 bits (1
byte) y que codifica 256 elementos de información. A los anteriores se añaden caracteres
gráficos e internacionales. De ellos los 127 primeros coinciden con el ASCII estándar.

Código ASCII

32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
2
! " # $ % & ' ( ) * + , - . /
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
3
0 1 2 3 4 5 6 7 8 9 : ; < = > ?
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
4
@ A B C D E F G H I J K L M N O
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
5
P Q R S T U V W X Y Z [ \ ] ^ _
96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
6
` a b c d e f g h i j k l m n o

Página 40
Sistemas Digitales

112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
7
p q r s t u v w x y z { | } ~

0 1 2 3 4 5 6 7 8 9 A B C D E F

Tabla 2.2. Código ASCII.

El código decimal de cada carácter aparece junto a él. El código hexadecimal se obtiene
tomando como primer dígito la cifra hexadecimal de la fila (situada a la izquierda) y como
segundo dígito la cifra hexadecimal de la columna (situada en la parte inferior). Por ejemplo,
el carácter “A” tiene como código hexadecimal el 41.

El código decimal 32 representa el caracter “espacio blanco”. Al símbolo ~ le corresponde


el número decimal 126 (ALT 126).

Los códigos decimales del 0 al 31 (que no aparecen en la tabla) y el 127 representan


operaciones de control.

2.6.- CÓDIGOS DETECTORES DE ERROR. BIT DE PARIDAD

En el manejo y en la transmisión de información en forma digital es posible que se


produzcan errores debido a la presencia de ruido en el proceso o por avería de alguno de los
componentes.

Existen diversos tipos de códigos detectores de errores entre los cuales se encuentran los
“códigos de paridad” que son los más utilizados. Estos códigos de paridad se obtienen
añadiendo a las combinaciones de los códigos anteriormente estudiados un bit llamado “bit
de paridad”. Si el código que se desea obtener es de paridad par, dicho bit será tal que el
número de unos en cada combinación del nuevo código sea par. Si por el contrario queremos
un código de paridad impar, el bit añadido a cada combinación ha de ser tal que la resultante
tenga un número impar de unos.

Así por ejemplo, para las 10 primeras cifras decimales:

Bit de Código de paridad impar de 5 bits


Dígito
Código binario de 4 bits paridad
decimal
impar A B C D E
0 0 0 0 0 1 1 0 0 0 0
1 0 0 0 1 0 0 0 0 0 1
2 0 0 1 0 0 0 0 0 1 0
3 0 0 1 1 1 1 0 0 1 1
4 0 1 0 0 0 0 0 1 0 0
5 0 1 0 1 1 1 0 1 0 1
6 0 1 1 0 1 1 0 1 1 0
7 0 1 1 1 0 0 0 1 1 1
8 1 0 0 0 0 0 1 0 0 0
9 1 0 0 1 1 1 1 0 0 1

Página 41
Sistemas Digitales

La detección de errores en estos códigos consiste en comprobar si el número de unos de


cada combinación es par (códigos de paridad par) o impar (códigos de paridad impar). Esto
puede hacerse fácilmente a través de un circuito de puertas XOR.

Según vemos en la figura de la página siguiente, la salida A ⊕ B ⊕ C ⊕ D ⊕ E será 1 si la


combinación ABCDE es de paridad impar, es decir, si el número de unos presentes es impar.
Por tanto, si en nuestro sistema de recepción de datos detectamos que A ⊕ B ⊕ C ⊕ D ⊕ E
vale 0, es que se ha producido un error en la transmisión ya que nos ha cambiado la paridad.
No podemos conocer cual es el bit erróneo, pero sí podemos actuar en consecuencia: al
detectar un error se vuelve a reclamar el dato al sistema de procedencia para que lo vuelva a
enviar.

A⊕ B⊕C ⊕ D⊕ E
E

Este sistema de detección de error posee la limitación de que si son dos los bits que
cambian a la vez, no se produce un cambio en la paridad por lo que no se detecta el error.
Pero, evidentemente, la probabilidad de que dos bits cambien es mucho menor que la de que
cambie uno sólo. Por ejemplo, si la probabilidad de error en un bit es de 1 entre 104, entonces
la probabilidad de error en dos bits será de 1 entre 104·104=108. Por tanto, un sistema que
detecta un error en 104 aunque no detecte un error en 108 o superior es bastante bueno.

Nota: hay códigos que además de detectar errores los corrigen, como el código de
Hamming, añadiendo bits que nos indican cual es el erróneo.

Anexo: circuito que realiza el CA2 de un número binario de 4 bits

Se puede diseñar un circuito que nos realice el CA2 sin más que hacer una tabla de verdad
donde aparezca la combinación binaria como entrada y el número en CA2 como salida. Lo
vamos a hacer para números de cuatro bits.

Página 42
Sistemas Digitales

X3 X2 X1 X0 Z3 Z2 Z1 Z0
0 0 0 0 0 0 0 0
0 0 0 1 1 1 1 1
0 0 1 0 1 1 1 0
0 0 1 1 1 1 0 1
0 1 0 0 1 1 0 0
0 1 0 1 1 0 1 1
0 1 1 0 1 0 1 0
0 1 1 1 1 0 0 1
1 0 0 0 1 0 0 0
1 0 0 1 0 1 1 1
1 0 1 0 0 1 1 0
1 0 1 1 0 1 0 1
1 1 0 0 0 1 0 0
1 1 0 1 0 0 1 1
1 1 1 0 0 0 1 0
1 1 1 1 0 0 0 1

X3X2 X3X2
00 01 11 10 00 01 11 10
X1X0 X1X0

00 0 4
00 0 4 12 8
12 8

01 1 1 1 1 01 1 1 1 1
1 5 13 9 1 5 13 9

11 1 1 1 1 11
3 7 15 11 3 7 15 11

10 10 1 1 1 1
2 6 14 10 2 6 14 10

Z0 = X 0 Z1 = X 1 ⊕ X 0

X3X2 X3X2
00 01 11 10 00 01 11 10
X1X0 X1X0
00 1 1 00 1 1
0 4 12 8 0 4 12 8

01 1 1 01 1 1
1 5 13 9 1 5 13 9

11 1 1 11 1 1
3 7 15 11 3 7 15 11

10 1 1 10 1 1
2 6 14 10 2 6 14 10

Z2 = X 2 ⊕ ( X1 + X 0 ) Z3 = X 3 ⊕ ( X 2 + X1 + X 0 )

Página 43
Sistemas Digitales

Los bits en C2 son:

Z0 = X 0 Z2 = X 2 ⊕ ( X1 + X 0 )
Z1 = X 1 ⊕ X 0 Z3 = X 3 ⊕ ( X 2 + X1 + X 0 )

También se pueden expresar como:

Z0 = X 0 Z 2 = X 2 ⊕ ( X 1 + Z1 )
Z1 = X 1 ⊕ X 0 Z3 = X 3 ⊕ ( X 2 + Z 2 )

Para demostrar Z2, basta con probar que X1+Z1 = X1+X0

X1+Z1 = X1+ X1⊕X0 = X 1 + X 1 X 0 + X 1 X 0 = X 1 + X 1 X 0 = X1+X0

donde hemos aplicado A+AB=A, A + AB = A + B

Para demostrar Z3, basta con probar que X2+Z2 = X2+X1+X0

X2+Z2 = X2+X2⊕ (X1+Z1) = X 2 + X 2 ( X 1 + Z1 ) + X 2 ( X 1 + Z1 ) = X2+X1+Z1= X2+X1+X0

donde hemos aplicado las mismas equivalencias que antes.

Página 44
Sistemas Digitales

TEMA 3: CIRCUITOS COMBINACIONALES


Circuitos combinacionales. Definición

En los apartados anteriores hemos visto como implementar una función lógica a través de
un circuito digital constituido por puertas. El valor que tomaba una función lógica venía
determinado por los valores que adoptaban las variables de las que dependía: para cada
combinación de entradas, la función lógica adopta uno u otro valor. Por ello, a los circuitos
lógicos que realizan una determinada función lógica se denominan “circuitos
combinacionales”. En un circuito combinacional, el estado lógico de sus salidas en cada
instante depende únicamente del estado de sus entradas en ese mismo instante. Por lo tanto,
en ellos no es necesario tener en cuenta la noción de tiempo.

Así, dada la relación función lógica – circuito combinacional, éstos pueden venir
representados por la tabla de verdad de la función lógica que implementa o mediante las
expresiones numéricas estudiadas anteriormente correspondientes a suma de productos
canónicos y producto de sumas canónicas. De hecho, el diseño de todo circuito combinacional
se inicia mediante la obtención de la tabla de verdad a partir de las especificaciones que
indican los valores que debe tomar la función para cada una de las combinaciones de las
variables de entrada de las cuales depende. De la tabla de verdad se deducen las expresiones
canónicas a partir de las cuales se realizará la simplificación.

3.1- ANÁLISIS Y SÍNTESIS AND-OR. IMPLEMENTACIÓN EN DOS NIVELES

Cuando expresamos una función como suma de productos (1s en el diagrama de Karnaugh)
(sean o no canónicos), su implementación física constará de dos niveles de puertas. Por
ejemplo, la función:

f ( a , b, c ) = a ⋅ b ⋅ c + a ⋅ c + a ⋅ b
se implementa:
a a·b·c
b
c
a f = a·b·c + a·c + a·b
a·c
c
a a·b
b
Figura 1.
que como vemos es una estructura AND-OR. Cada variable (o su complemento) debe
atravesar dos niveles de puertas.

Análogamente, para la siguiente función expresada como producto de sumas (0s en el


diagrama de Karnaugh):
g (a, b, c) = (a + b + c) ⋅ (a + b) ⋅ (b + c)

Página 45
Sistemas Digitales

se tiene:

a
a+b+c
b
c

a g = (a + b + c)(a + b)(b + c)
a+b
b

b b+c
c
Figura 2
que es una estructura OR-AND. Igual que en el caso anterior, cada variable (o su
complemento) atraviesa dos niveles de puertas.

Ya dijimos que los valores de las variables lógicas se representan generalmente por
tensiones eléctricas. Cuando en la entrada de una puerta se produce un cambio de tensión, su
efecto no se advierte inmediatamente en la salida de la puerta, ya que hay un retardo llamado
“retardo de propagación” de la puerta, entre el cambio en la entrada y el cambio
correspondiente en la salida, si lo hay.

En las estructuras de dos niveles, el retardo entre los cambios de la variable de entrada y el
cambio correspondiente a la salida es el retraso de propagación de dos puertas. Nada nos
impide implementar funciones en una estructura de más de dos niveles de puertas. Así, en el
ejemplo anterior, si ponemos:

f (a, b, c) = a ⋅ b ⋅ c + a ⋅ c + a ⋅ b = a ⋅ b ⋅ c + a ⋅ (c + b)
podemos implementar:

a
a·b·c
b
c

f = a ⋅ b ⋅ c + a ⋅ (c + b)
a
a·(c + b)
c c+b

Vemos que es una estructura de tres niveles, ya que algunas variables deben atravesar tres
puertas con lo que el retraso de propagación total será mayor. Por este motivo se prefieren
normalmente las estructuras de dos niveles.

En la práctica, cuando se dispone de una variable, también debemos disponer de su


complemento. Si esto no fuera así, deberíamos usar inversores incrementándose el retraso de
propagación.

Página 46
Sistemas Digitales

3.2- ESTRUCTURAS USANDO UN SOLO TIPO DE PUERTAS. ANÁLISIS Y SÍNTESIS


NAND, NOR

A menudo, debido a las puertas disponibles comercialmente, es conveniente poder generar


una función lógica arbitraria utilizando un solo tipo de puerta. Podemos usar sólo puertas
NAND o sólo puertas NOR teniendo en cuenta las suficiencias estudiadas anteriormente. Por
ejemplo, sea la función anterior:

f ( a , b, c ) = a ⋅ b ⋅ c + a ⋅ c + a ⋅ b
Si complementamos dos veces y aplicamos las leyes de Morgan:

f = f = a ⋅ b ⋅ c + a ⋅ c + a ⋅ b = ( a ⋅ b ⋅ c ) ⋅ ( a ⋅ c ) ⋅ ( a ⋅ b)

que se puede implementar en puertas NAND de la forma siguiente:

a a·b·c
b
c
a a·c f = (a·b·c)·(a·c)·(a·b)

c
a
a·b
b

Así, para obtener el circuito que implementa f hemos sustituido todas las puertas de la
estructura AND-OR de la figura 1 por puertas NAND.

Análogamente, si tenemos g (a, b, c) = (a + b + c) ⋅ (a + b) ⋅ (b + c) , complementando dos


veces y aplicando las leyes de De Morgan obtenemos:

g = g = (a + b + c) ⋅ (a + b) ⋅ (b + c) = (a + b + c) + (a + b) + (b + c)

que se puede implementar con puertas NOR de la forma siguiente:

a
b a+b+c
c

a g = (a + b + c) + (a + b) + (b + c)
a+b
b

b
b+c
c

Página 47
Sistemas Digitales

Así, para obtener el circuito que implementa g hemos sustituido todas las puertas de la
estructura OR-AND de la figura 2 por puertas NOR.

Observaciones:
Cuando en una función lógica aparezca un término compuesto por una sola variable, no
tendríamos realmente una estructura de dos niveles pues no todas las entradas necesitarían
atravesar dos puestas lógicas. En estos casos tenemos que convertir la estructura en otra de
dos niveles antes de poder expresarla con un solo tipo de puertas. Sea, por ejemplo, la
función: f (a, b, c) = a + b ⋅ c . Tendríamos:

a a a·(bc) = a + bc
a + bc
b b

b·c Ponemos b·c


c c
puertas NAND

que vemos que no es correcto. Lo que debemos hacer es, como a ⋅ a = a , entonces:

a a
a a
a·(bc) = a + bc
a + bc
b b

b·c Ponemos b·c


c c
puertas NAND

que sí es una solución correcta.

Análogamente al convertir una estructura OR-AND a puertas NOR haríamos el mismo


proceso utilizando a+a=a.

Si necesitamos el complemento de una variable, podemos utilizar también puertas NAND y


NOR, como vemos en las siguientes figuras:
“1”

a a a
a

a
a a a

“0”

Página 48
Sistemas Digitales

3.3- FENÓMENOS ALEATORIOS (Mandado p. 71)

En el diseño de circuitos combinacionales no hemos tenido en cuenta el retardo inherente a


la propagación de la señal a través de las puertas lógicas. Este retardo se presenta en todas las
tecnologías de fabricación de las mismas y su magnitud depende en gran medida de la
tecnología utilizada. Se produce un fenómeno aleatorio cuando la salida de un circuito toma
de forma transitoria un valor distinto al esperado. Estudiaremos los tipos más importantes de
fenómenos aleatorios en los circuitos combinacionales y la forma de realizar el diseño para
evitar su aparición. La eliminación de estos fenómenos va a implicar el añadir puertas
redundantes al circuito, consiguiendo una realización no mínima pero libre de posibles
errores.

Fenómenos aleatorios estáticos:


Se presenta un fenómeno aleatorio estático si para dos estados adyacentes de las variables
de entrada en los que la salida debe ser constante (cero o uno) existe un régimen transitorio
durante el cual la salida cambia momentáneamente de estado. Existen entonces “fenómenos
aleatorios de tipo cero” y “fenómenos aleatorios de tipo uno”.

Los fenómenos aleatorios de tipo cero se producen cuando, al cambiar el estado de una
variable de entrada, la función debe permanecer en estado uno pero transitoriamente pasa por
cero. Ocurre cuando la función se expresa como suma de productos. Veamos como se
produce un fenómeno de este tipo.

Sea una función f que depende de una serie de variables a, b, c,... y designemos por X al
conjunto de todas las variables excepto la a. Hemos demostrado anteriormente que f puede
expresarse algebraicamente de la forma siguiente:

f (a, b, c, d ,...) = f (a, X ) = a ⋅ f (1, X ) + a ⋅ f (0, X )

Supongamos que para la combinación de entrada X0 de todas las variables excepto la a, se


verifica:
f (1, X 0 ) = f (0, X 0 ) = 1
en ese caso, para X0 se tendrá: f ( a, X 0 ) = a + a

En régimen estático, el estado de la función f es uno lógico, pero debido al retardo en la


conmutación, al producirse un cambio de estado de a puede suceder que a y a se encuentren
en estado cero simultáneamente y que durante un cierto tiempo f tome el valor lógico cero.
En la siguiente figura se representa esta situación cuando a sufre un retraso en la
conmutación con respecto a a.

a
a a tpdr tpdf

f(a,X0)

Página 49
Sistemas Digitales

Un inversor comercial puede presentar un retraso de propagación de aproximadamente


unos 9, 10 ns. Esta información se encuentra en las hojas de especificaciones o data sheets
que nos proporciona el fabricante. En la siguiente figura vemos estos datos para el inversor
74LS04 que usaremos en las prácticas.

Figura. 3.1 Retardos de propagación del inversor 74LS04.

La forma de eliminar este fenómeno es añadir a la expresión de f un término que tome el


valor lógico uno para la combinación X0; este término es precisamente el producto lógico
f (1, X ) ⋅ f (0, X ) . Aplicando los postulados del Álgebra de Boole se demuestra que la
expresión de la función f no varía al añadir dicho término que cubre la adyacencia existente
entre los términos a ⋅ f (1, X ) y a ⋅ f (0, X ) .

Un ejemplo sencillo aclarará esta idea. Dibujemos el diagrama de Karnaugh de la función


de tres variables:
ab
c 00 01 11 10

f (a, b, c) = ∑ (1, 3, 6, 7) 0
0 2
1
6 4

1 1 1 1
1 3 7 5

ac bc ab

minimizando según las agrupaciones señaladas obtenemos: f = a ⋅ b + a ⋅ c = a ⋅ b ⋅ a ⋅ c , que


corresponde al siguiente circuito con puertas NAND:

b
f
a

La expresión obtenida presenta la posibilidad de la aparición de un impulso aleatorio de


tipo cero cuando b = c = 1 . Si representamos f a través de conmutadores tendremos:
b
a
c f
a

Página 50
Sistemas Digitales

donde convenimos, como es habitual en asignar el uno lógico al paso de corriente y el cero
lógico a su ausencia. Se observa que si b y c están cerrados, cuando a conmuta a a hay un
periodo de tiempo en el que el circuito permanece abierto, luego f presentará un impulso
aleatorio de tipo cero.

Para evitar la aparición de este fenómeno se ha de sumar lógicamente a la expresión de f el


término b ⋅ c indicado mediante una línea de puntos en el diagrama de Karnaugh anterior, que
corresponde a un término que toma el valor lógico uno para la combinación b = c = 1 en la
que se produce el fenómeno aleatorio.

Este término es el que cubre la adyacencia entre los otros dos términos. La expresión de f
será ahora:
f = a ⋅b + a ⋅c + b⋅c = a ⋅b⋅a ⋅c ⋅b⋅c

Hay que insistir en que, aunque hemos añadido un término más, f no varía. La
realización con puertas NAND es ahora:
y con conmutadores:
a b c

b b
a
a
c f
f
a
c
b Ahora se observa que cuando b y c están cerrados
( b = c = 1 ), al cambiar a a a no se produce el
c fenómeno aleatorio gracias a la nueva rama que se ha
incluido.

Por tanto, para eliminar los fenómenos aleatorios estáticos de tipo cero al realizar la
simplificación de una función lógica mediante la tabla de Karnaugh de la suma de
productos canónicos es necesario, no sólo cubrir todos los unos de la función, sino
también cubrir todas las adyacencias, solapando todos los productos adyacentes.

Los fenómenos aleatorios de tipo uno se producen cuando, al cambiar de estado una
variable, la función debe permanecer en estado cero, pero pasa transitoriamente por estado
uno. Este fenómeno puede producirse cuando una función ha sido expresada mediante un
producto de sumas.

Sea una función f de las variables a, b, c, d,... que puede expresarse, tal y como vimos
anteriormente de la forma siguiente:

[
f (a, b, c, d ,...) = f (a, X ) = [a + f (0, X )] ⋅ a + f (1, X ) ]
Si se cumple que para la combinación de estados X0 de todas las variables excepto la a se
verifica:
f (0, X 0 ) = f (1, X 0 ) = 0

Página 51
Sistemas Digitales

en ese caso, para X0 se tendrá: f ( a, X 0 ) = a ⋅ a

En régimen estático la función f se encuentra en estado lógico cero, pero al producirse un


cambio en la variable a, debido al retardo en la conmutación, puede suceder que a y a tomen
el valor lógico uno simultáneamente y que durante un cierto tiempo f tome el valor lógico
uno. Esto puede verse en la siguiente figura:

a
a a tpdr tpdf

f(a,X0)

La forma de eliminar este fenómeno es similar a la descrita para el tipo cero. La expresión
de f ha de multiplicarse por f (0, X ) + f (1, X ) que toma el valor lógico cero para la
combinación X0 de entrada. También puede demostrarse que la función f no varía al añadir
dicho término que cubre la adyacencia existente entre a + f (0, X ) y a + f (1, X ) .

Veamos esto con un ejemplo sencillo. Dibujemos el diagrama de Karnaugh de la función f


de tres variables:
f (a, b, c) = ∏ (2, 5, 6, 7)

ab
c 00 01 11 10
La expresión mínima de esta función es:
0
0
0
2
0
6 4 f (a, b, c) = (b + c) ⋅ (a + c) = (b + c) + (a + c) , que
corresponde al siguiente circuito en puertas NOR:
1 0 0
1 3 7 5

b+c a+b a+c

c
f
a

Cuando a = b = 1 , se tiene f (1,1, c) = c ⋅ c y, por tanto, puede presentarse un fenómeno


aleatorio de tipo uno, tal y como puede verse a través de la implementación con
conmutadores:
c c

b a f

Página 52
Sistemas Digitales

Si a y b están abiertos y existe un retraso de propagación entre la conmutación de c y c ,


habrá un momento en el que c y c estén cerrados a la vez y f será uno, presentándose un
fenómeno aleatorio de tipo uno. Para evitar este fenómeno aleatorio se ha de multiplicar
lógicamente la función anterior por el término a + b que vale cero para la combinación
a = b = 1 en la que se produce el fenómeno aleatorio. Es el término indicado por la línea de
puntos en el diagrama de Karnaugh anterior. Se deduce, como regla general, que para evitar
fenómenos aleatorios estáticos de tipo 1 mediante la minimización por Karnaugh de una
función lógica expresada como producto de sumas canónicas, se han de cubrir todas las
adyacencias solapando de esta forma todas las sumas adyacentes.

Tenemos entonces: f (a, b, c) = (b + c) ⋅ (a + c) ⋅ (a + b) = (b + c) + (a + c) + (a + b)

La implementación con puertas NOR es ahora:

c
a
f
c
a

y con conmutadores:
c c b

b a a f

Fenómenos aleatorios dinámicos:


Se produce un fenómeno aleatorio dinámico cuando, al conmutar una variable a de
entrada, la salida debe cambiar de estado y lo hace pasando por un régimen transitorio tal y
como se indica en la siguiente figura:

f1
f2

Página 53
Sistemas Digitales

Estudiaremos este fenómeno para expresiones en forma de suma de productos. Para que
un fenómeno aleatorio de tipo dinámico pueda producirse es necesario que, para una
combinación determinada de valores lógicos de todas las variables de entrada, excepto la a, la
salida adopte la siguiente expresión mínima:
f = a + a⋅a

En régimen estático, f = a , pero veamos lo que puede ocurrir al cambiar a de uno a cero.
Supondremos que el cambio de estado de todas las variables a no es simultáneo y las
denominaremos a1, a2 y a3, y por tanto:
f = a1 + a 2 ⋅ a3
Consideremos que inicialmente a1 = a 2 = 1 y a3 = 0 , con lo que f = 1 + 1 ⋅ 0 = 1 .

Si a cambia del estado uno al cero, se produce un fenómeno aleatorio dinámico cuando los
cambios de a1 , a 2 y a3 se realizan de acuerdo con la siguiente tabla:

a1 a2 a3 f = a1 + a 2 ⋅ a3
Estado inicial 1 1 0 1
Estados 0 1 0 0
transitorios 0 1 1 1
Estado final 0 0 1 0

Éste es el cambio que experimenta f2 en la figura anterior.

Veámoslo con un ejemplo. Sea el circuito:

a
N
b
N
a
N N f
c a
N4
d

Este circuito realiza la función:

f = a⋅ b ⋅ a
⋅ c ⋅ a
⋅ d = a ⋅ b ⋅ a ⋅ c + a ⋅ d = ( a + b) ⋅ ( a + c ) + a ⋅ d
N1 N 2 N 4

Página 54
Sistemas Digitales

a
1
b
3
a
2 5 f
c a
4
d

En el caso de que b = d = 1 y c = 0, se tiene que:


f = a ⋅ a + a = a ( N1) ⋅ a ( N 2) + a ( N 4)
Si se cumplen las condiciones:
• Retraso de propagación a través de N4 menor que el que hay a través de N1 y N3.
• Retraso de propagación a través de N4 menor que el que hay a través de N2 y N3.
• Retraso de propagación a través de N1 menor que el que hay a través de N2.
se produce un fenómeno aleatorio dinámico como el explicado en el párrafo anterior.

a (N4)

a (N1)

a (N2)

La eliminación de la posibilidad de fenómenos aleatorios dinámicos se realiza al


minimizar una función por el método de Karnaugh, ya que la suma de productos obtenida
nunca contendrá el producto a ⋅ a (o la suma a + a si se trata de una expresión de
producto de sumas). Por tanto, si se realiza la minimización anulando la posibilidad de
fenómenos aleatorios estáticos, se tiene la seguridad de que no existirán fenómenos
aleatorios dinámicos.
(Nota: los fenómenos aleatorios dinámicos se evitan simplemente al utilizar Karnaugh,
aunque no se agrupen los términos adyacentes para evitar los estáticos).

Página 55
Sistemas Digitales

TEMA 4: CIRCUITOS COMBINACIONALES INTEGRADOS


El progreso de las técnicas de integración ha permitido la realización en circuito
integrado de sistemas combinacionales complejos con un número de puertas comprendido
entre 13 y 100. (M.S.I., Medium Scale Integrated).

La utilización de estos circuitos en el diseño de sistemas lógicos permite reducir el


número de elementos necesarios en su realización, disminuir el tiempo de diseño y elevar la
inmunidad al ruido al ser menor el número de conexiones externas.

Describiremos seguidamente los circuitos de uso más corriente y sus características más
importantes. El desarrollo continuo de la tecnología hace que cada día surjan más circuitos
combinacionales de escala de integración media. El diseñador de circuitos lógicos ha de
estudiar su función lógica y utilizarlos en aquellos casos en los que mediante su uso logre una
minimización del sistema.

4.1- DECODIFICADORES
Un decodificador es un circuito con n entradas y 2n salidas, de manera que en cada instante
solo está activa una salida, aquella cuyo número decimal coincide con el número codificado
en binario en la entrada. En la salida aparece decodificada la entrada binaria. Un ejemplo de
circuito decodificador se muestra en la siguiente figura:
A1 A0

E
O0

O1
Su tabla de verdad es:
E A1 A0 O0 O1 O2 O3
1 0 0 1 0 0 0
O2 1 0 1 0 1 0 0
1 1 0 0 0 1 0
1 1 1 0 0 0 1
0 * * 0 0 0 0
O3

La característica más importante de este circuito es que para cada entrada A1A0, una y
sólo una salida es uno lógico; es decir, en cualquier instante una de las salidas (O0, O1, O2, u
O3) se distingue de las demás. En el caso del anterior circuito, la salida señalada se distingue
de las demás porque es uno lógico cuando las demás son cero lógico. Hay una puerta AND
para cada salida.

En los decodificadores, cada una de las posibles combinaciones de entrada caracterizan


una de las salidas. Por tanto, un decodificador de n entradas necesitará 2n puertas AND y
tendrá 2n salidas.

Página 56
Sistemas Digitales

La razón de que estos circuitos se llamen decodificadores es la siguiente: se activa la salida


cuyo número decimal coincide con el número codificado en binario en la entrada; es decir, en
las salidas nos aparecen decodificadas las entradas. Este concepto se denomina
“direccionamiento”: cada salida está direccionada por una determinada combinación de las
variables de entrada; a esta combinación se le llama “dirección”. Este concepto se utiliza
frecuentemente en electrónica digital.

El decodificador `138 MSI tiene 3 entradas que direccionan 23 = 8 salidas. Se fabrica con
16 pines y tiene el siguiente esquema:
Terminales de
habilitación
Dirección
de entrada
E1 E 2 E 3
A2 A1 A0

E A2 A1 A0

DECODIFICADOR `138

O0 O1 O2 O3 O4 O5 O6 O7

La correspondiente tabla de verdad es:

E 1 E 2 E3 A2 A1 A0 O 0 O1 O 2 O 3 O 4 O 5 O 6 O 7
0 0 1 0 0 0 0 1 1 1 1 1 1 1
0 0 1 0 0 1 1 0 1 1 1 1 1 1
0 0 1 0 1 0 1 1 0 1 1 1 1 1
0 0 1 0 1 1 1 1 1 0 1 1 1 1
0 0 1 1 0 0 1 1 1 1 0 1 1 1
0 0 1 1 0 1 1 1 1 1 1 0 1 1
0 0 1 1 1 0 1 1 1 1 1 1 0 1
0 0 1 1 1 1 1 1 1 1 1 1 1 0
1 * * * * * 1 1 1 1 1 1 1 1
* 1 * * * * 1 1 1 1 1 1 1 1
* * 0 * * * 1 1 1 1 1 1 1 1

Para que el decodificador realice la función para la que ha sido diseñado, debe estar
habilitado. Hay tres terminales de habilitación, dos de ellos activos en baja E 1 y E 2 , y el otro
en alta E 3 . Todos ellos están relacionados a través de una puerta AND con lo que para que el
decodificador esté habilitado es necesario que E 1 = E 2 = E 3 = 1 , es decir, que E 1 = E 2 = 0 y
E 3 = 1 . Cuando el chip no está habilitado, todas las salidas están a uno.

Página 57
Sistemas Digitales

Las salidas son activas a nivel bajo (pues está construido con puertas NAND en vez de
AND), es decir, cuando el decodificador está habilitado aparece un cero en la salida cuya
dirección viene dada por la combinación de entradas y las demás salidas están a uno. Esto se
hace así porque la familia TTL (Transistor-transistor logic) consume menos potencia cuando
las salidas están en alta (el transistor de salida no conduce y la corriente es muy baja) que
cuando están en baja y es evidente que siete salidas en alta y una en baja consumen menos
que siete en baja y una en alta.
Veamos a continuación una serie de aplicaciones de los decodificadores:

Construcción de un decodificador de cuatro entradas y 16 salidas a partir de 2


decodificadores `138:
E A3 A2 A1 A0

E1a E2a E3a E1b E2b E3b

Ea A2a A1a A0a A2b A1b A0b Eb


DECODIFICADOR `138 DECODIFICADOR `138
(a) (b)
O0a O1a O2a O3a O4a O5a O6a O7a O0b O1b O2b O3b O4b O5b O6b O7b

O0 O1 O2 O3 O4 O5 O6 O7 O8 O9 O10 O11 O12 O13 O14 O15

Figura. 4.1 Decodificador de 4 entradas y 16 salidas construido a partir de 2 decodificadores `138.

La tabla de verdad es:

E A3 A2 A1 A0 O 0 O1 O 2 O 3 O 4 O 5 O 6 O 7 O 8 O 9 O10 O11 O12 O13 O14 O15


0 * * * * 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 0 0 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 0 0 1 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1
1 0 0 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1
1 0 1 0 0 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1
1 0 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1
1 0 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1
1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1
1 1 0 0 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1
1 1 0 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1
1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1
1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1
1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1
1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1
1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0
Tabla. 4.1 Tabla de verdad del decodificador de 4 entradas y 16 salidas.

Página 58
Sistemas Digitales

que se corresponde con un decodificador 4 a 16. Si E = 0 estará todo deshabilitado (todas las
salidas a 1). Si E = 1 y A3 = 0 el decodificador (b) estará deshabilitado. Si E = 1 y A3 = 1 el
decodificador (a) estará deshabilitado.

Implementación de funciones lógicas:


Podemos implementar una función lógica conectando a la entrada de una puerta
NAND las salidas del decodificador correspondientes a los productos canónicos que toman el
valor uno en la función. La salida de la puerta NAND nos da el valor de la función. Por
ejemplo:

Implementar la función f (a, b, c) = ∑ (0, 1, 3, 5, 6) con un decodificador `138 y una puerta


NAND:

ac A0 O7
O6
b A1
O5
ac A2 O4
O3 f(a, b, c)
O2
E E3 O1
E2
E1 O0

Posteriormente se verá la aplicación de los decodificadores al demultiplexado.

4.2- CODIFICADORES:
Los circuitos codificadores son sistemas combinacionales de 2n entradas y n salidas, de
forma que cuando una sola de las entradas adopta un estado lógico diferente de las demás
(uno o cero), a la salida aparece la combinación binaria correspondiente al número decimal
asignado a dicha entrada. Realizan por tanto la función inversa de los decodificadores, es
decir, codifican en binario la entrada decimal.

La tabla de verdad de un codificador de ocho entradas y tres salidas será la siguiente


(imponiendo entradas y salidas activas en alta):

I7 I6 I5 I4 I3 I2 I1 I0 O2 O1 O0
0 0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 1 0 0 0 1
0 0 0 0 0 1 0 0 0 1 0
0 0 0 0 1 0 0 0 0 1 1
0 0 0 1 0 0 0 0 1 0 0
0 0 1 0 0 0 0 0 1 0 1
0 1 0 0 0 0 0 0 1 1 0
1 0 0 0 0 0 0 0 1 1 1

Página 59
Sistemas Digitales

Los circuitos codificadores pueden ser diseñados con prioridad o sin ella. En los
codificadores sin prioridad, cuando más de una entrada toma el estado activo (uno o cero), la
combinación de salida posee tantos unos como hay en las salidas correspondientes a la
excitación de cada una de las entradas independientemente (mezcla las salidas); por ello, en
este codificador solamente debe ser activa una entrada cada instante.

Los codificadores con prioridad codifican la entrada activa de mayor valor decimal sin
tener en cuenta las demás. Su tabla de verdad en el caso n = 3 y con entradas activas con uno
lógico será:
I7 I6 I5 I4 I3 I2 I1 I0 O2 O1 O0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 1 * 0 0 1
0 0 0 0 0 1 * * 0 1 0
0 0 0 0 1 * * * 0 1 1
0 0 0 1 * * * * 1 0 0
0 0 1 * * * * * 1 0 1
0 1 * * * * * * 1 1 0
1 * * * * * * * 1 1 1

En esta tabla se observa que, con tres variables binarias O2, O1 y O0 solamente se tiene
ocho combinaciones, no es posible discernir entre la situación en que ninguna de las entradas
está activada y aquella en que es activa la de menor peso (I0). Para distinguir estas dos
situaciones, se añade una nueva salida que detecta cuando están inactivas todas las
combinaciones de entrada o cuando están activadas algunas de ellas. Además suele añadirse
una entrada de habilitación.

¿Para qué se utilizan los codificadores de prioridad? Los sistemas digitales incluyen
frecuentemente componentes para generar señales que indican que es necesario realizar
alguna acción. Por ejemplo, supongamos que equipamos un tanque de agua con un
mecanismo conmutador que opera cuando el nivel de agua está excesivamente alto y hay
peligro de desbordamiento. Fácilmente podemos disponer una línea que en condiciones
normales esté en cero lógico, pero que cambie a uno lógico cuando opere el conmutador.
Entonces el cambio de cero a uno es una indicación de que es necesario hacer algo; es decir,
hay una “petición de servicio”. Este mismo sistema puede entonces tener componentes
diseñados para suministrar la respuesta adecuada, es decir, “atender la petición”. El servicio
suministrado en el caso del tanque de agua puede consistir, por ejemplo, en cerrar una válvula
de entrada o abrir una válvula de salida. Frecuentemente en un sistema digital hay líneas para
peticiones de servicio y consecuentemente una serie de componentes del sistema que pueden
prestar esos servicios. Los componentes que se activan dependen, por supuesto, de la línea
que presente la petición de servicio.

Generalmente, cada componente de servicio se distingue de los demás por su dirección, es


decir, un conjunto distintivo de bits (código de dirección) que mediante un decodificador
acceden a un componente de servicio.

Se utiliza normalmente un codificador para aceptar como entradas las líneas de petición de
servicio y obtener como salida el código de bits correspondiente a la dirección del
componente que atenderá la petición, ya que el codificador se diseña para que cada vez que
tenga una entrada diferente se atienda solamente una petición de servicio. Ésta situación es

Página 60
Sistemas Digitales

aceptable, ya que generalmente los componentes que suministran el servicio tienen elementos
comunes y por ello cada vez se puede servir solamente una petición.
Si nuestro sistema es tal que no puede generarse simultáneamente más de una petición de
servicio, bastará con utilizar codificadores sin prioridad. Pero si en el sistema se generan dos
o más peticiones de servicio al mismo tiempo, la solución consiste en asignar una “prioridad”
a cada línea de petición de servicio y será necesario utilizar un codificador de prioridad. Si
hay más de una petición simultáneamente, la salida del codificador direccionará el
componente de servicio correspondiente a la petición con la prioridad más alta y, cuando
aquella haya sido atendida, la línea correspondiente de petición de servicio volverá a cero
lógico y se atenderá la siguiente petición de mayor prioridad.

Vamos a estudiar en concreto el codificador de prioridad ‘148 que presenta el siguiente


esquema: I 0 I1 I 2 I 3 I 4 I 5 I 6 I 7 EI

I0 I1 I2 I3 I4 I5 I6 I7 EI
CODIFICADOR `148
O2 O1 O0 EO GS

O2 O1 O0 EO GS

Se trata de un codificador de ocho entradas ( I 0 − I 7 ), activas en baja, y tres salidas


( O 0 − O 2 ), activas también en baja que generan ocho direcciones. EI es una entrada de
habilitación activa en baja. Las salidas GS y EO , activas en baja, sirven para distinguir
situaciones en las que se presentan las mismas salidas:

• Codificador deshabilitado.
• Codificador habilitado sin ninguna petición de servicio.
• Codificador habilitado con una única petición de servicio por la línea I 0 .

En estos tres casos las tres salidas están todas en alta. El modo de distinguir en qué
situación nos encontramos viene expresado por la siguiente tabla:

EI ¿Hay petición de servicio? EO GS


1 Irrelevante: dispositivo desconectado 1 1
0 No 0 1
0 Sí 1 0

EO: “enable output” (habilitación de salida)


GS: “group signal” (señal de grupo)

Página 61
Sistemas Digitales

Así, cuando el codificador está desconectado, EO y GS están en alta. Si el codificador


está habilitado ( EI = 0 ), se tiene que EO = GS , donde GS = 0 indica la existencia de, al
menos, una petición de servicio y GS = 1 lo contrario.

I 0 I1 I 2 I 3 I 4 I 5 I 6 I 7 I 8 I 9 I 10 I 11 I 12 I 13 I 14 I 15 EI
Estas

I0a I1a I2a I3a I4a I5a I6a I7a EIa I0b I1b I2b I3b I4b I5b I6b I7b EIb
CODIFICADOR `148 CODIFICADOR `148
(a) (b)
O2a O1a O0a EOa GSa EOb GSb O2b O1b O0b

salidas

adicionales nos permiten además


conectar varios codificadores en
cascada. Así, para conseguir un
codificador de prioridad de 16
entradas y 4 salidas basta con
efectuar el siguiente montaje: EO GS O3 O2 O1 O0

Figura. 4.2 Codificador de 16 entradas y 4 salidas construido a partir de 2 codificadores `148.

Según puede observarse en el anterior esquema:

Página 62
Sistemas Digitales

a) Si hay alguna petición de servicio a través del codificador de mayor prioridad, el


(b), su salida EO se pondrá en alta, desactivando el codificador de menor
prioridad.
b) La entrada de habilitación del codificador de mayor prioridad EI es ahora la
entrada de habilitación (activa en baja) de todo el circuito.
c) La señal GS b actúa como cuarta salida O 3 , ya que ésta debe ponerse en baja
siempre que haya una petición de servicio por el codificador de mayor prioridad.
d) La señal GS a ⋅ GS b nos da la señal de grupo GS del circuito entero, ya que ésta
estará en baja cuando al menos una de las anteriores lo esté, indicando que existe
alguna petición de servicio. A este tipo de señales se les suele denominar
“indicador” o “banderín” (flag), que se activa indicándonos la existencia de alguna
petición de servicio.

Página 63
Sistemas Digitales

4.3- CONVERSORES DE CÓDIGO:


Frecuentemente, la información codificada debe traducirse a otro código diferente; el
circuito lógico que realiza esta traducción se denomina “conversor de código”. Un conversor
de código puede construirse conectando en serie un decodificador y un codificador:

Z0
A0 B0
A1 Z1
B1

Zn-1
An-1 Bn-1

Código de Información Código


partida decodificada final

Un ejemplo interesante de conversor de código aparece relacionado con el visualizador


(display) digital.
a b c d
Este dispositivo, denominado “visualizador de 7 segmentos”, consta
de 7 segmentos etiquetados con las letras a, b,..., g que pueden ser
a iluminados individualmente mediante diodos emisores de luz (LEDs).
DP es el punto decimal. Cada segmento se ilumina cuando su
f b
correspondiente terminal de entrada adopta el nivel lógico uno. Otros
visualizadores utilizan, en lugar de LEDs, elementos de cristal líquido
g (LCD), en los que al poner a uno lógico el correspondiente terminal
e c cambia la forma de reflexión o transmisión de la luz en el segmento.

d DP En estos dispositivos si quisiéramos representar, por ejemplo, un 3


en el display, pondríamos a uno lógico las patillas correspondientes a
los segmentos a, b, c, d y g.
e f g DP
Figura. 4.3 Visualizador de 7 segmentos.

Supongamos que queremos presentar en un visualizador de 7 segmentos los dígitos decimales


que están representados en BCD. Para ello se necesitará un conversor de código que traduzca
los cuatro bits del código BCD de entrada, a una
A3 A2 A1 A0 RBI palabra código de salida de siete bits apropiada para
iluminar los segmentos correspondientes. Por
ejemplo, si la entrada BCD es A 3 A 2 A 1 A 0 = 0011
correspondiente al decimal 3, necesitamos que las
salidas del conversor de código sean tales que
a = b = c = d = g = 1 y e = f = 0 . Esta conversión la
realiza el conversor de código ‘48, que a veces se
denomina también decodificador BCD a 7 segmentos.
Las líneas A3 ··· A0 son los cuatro bits de entrada para
un número BCD y a, b, c,..., g las salidas necesarias
a b c d e f g RBO para iluminar el display con el dígito que corresponda.

Página 64
Sistemas Digitales

La entrada LT (Lamp Test), activa en baja, sirve para testear el display. Si LT = 0 , pone
las salidas a, b, c,..., g en alta para que se iluminen todos los segmentos del display. La
entrada RBI (Ripple Blanking Input), activa en baja, cuando está a cero y
A 3 = A 2 = A 1 = A 0 = 0 deja el display sin iluminación. Se utiliza para evitar ceros a la
izquierda. Además, en esa situación, la salida RBO (Ripple Blanking Output), activa en baja,
se pone a cero. Sirve para conectar en serie varios conversores de código y evitar los
sucesivos ceros a la izquierda. Para ello no hay más que conectar la salida RBO de cada
decodificador con la entrada RBI del siguiente, desde el dígito más significativo hasta el
menos significativo.

4.4- MULTIPLEXORES
Un multiplexor es un circuito combinacional de n entradas, una sola salida y m entradas
de selección con 2m = n. Mediante las entradas de selección se elige cual de las entradas
aparece en la única salida. Realiza la operación indicada en la siguiente figura, donde
disponemos de una serie de líneas de entrada y una sola línea de salida. La posición del
conmutador, que es controlable, determina qué señal de entrada aparece en la salida (como los
conmutadores usados en el laboratorio).

0
1
2

n-1
Entradas Control para conmutar Salida
de m bits

El esquema de puertas de un multiplexor de cuatro entradas es el siguiente:

I0
G0
Consta de cuatro entradas (I0 ··· I3)
I1 que pueden seleccionarse con los
G1 bits S1S0. El número de entradas es
susceptible de aumento sin más
Z que incrementar el número de
I2 puertas AND y de bits de
G2 selección. Los bits de selección
determinan la puerta AND
I3 habilitada. Así, por ejemplo, la
G3 combinación S0 = 1, S1 = 0 sólo
habilita la puerta G2, e I2 aparecerá
a la salida del circuito.

S1 S0

Página 65
Sistemas Digitales

Un ejemplo de multiplexor comercial es el ‘151. Se trata de un multiplexor de ocho


entradas y una salida. Su símbolo lógico es:

I0 I1 I2 I3 I4 I5 I6 I7 S2 S1 S0 E
Posee una entrada de habilitación activa en baja
(cuando E = 1 , las salidas son Z = 0, Z = 1 ). La
entrada direccionada por los bits S2S1S0 aparecerá a
MULTIPLEXOR `151 la salida Z. A través de la salida Z obtenemos su
complemento.

Z Z

Otro multiplexor interesante es el ‘157. Se trata de un multiplexor cuádruple de dos líneas


a una. Su símbolo lógico es el siguiente:

A3 A2 A1 A0 B3 B2 B1 B0 A / B E Consta de una entrada de habilitación activa en


baja y otra de selección que dan control común a
cada uno de los cuatro multiplexores del
A B integrado, de tal forma que si A/B = 0 , en las
MULTIPLEXOR `157 cuatro salidas aparecen las cuatro entradas A, y
si A/B = 1 aparecen las cuatro entradas B. Si el
Z=AóB multiplexor está deshabilitado las salidas se
ponen a cero.

Z3 Z2 Z1 Z0

Las utilidades de los multiplexores son:


• Enviar a un solo canal la información procedente de varias fuentes seleccionando en
cada instante la fuente, mediante la combinación binaria aplicada en las entradas de
selección. Puede servir, por ejemplo, para convertir información en formato paralelo a
formato serie.
• Generación de funciones lógicas.

Hemos visto que la estructura de un multiplexor consistía en dos niveles de puertas, un


primer nivel de puertas AND, a las que accedían las variables de selección y los canales de
entrada, y un segundo nivel constituido por una puerta OR. Ésta es la estructura del circuito
que se obtiene al expresar una función lógica en forma de suma de productos canónicos. Esta
analogía nos permite anticipar que, con un multiplexor pueden generarse funciones lógicas.
Vamos a ver un ejemplo. Sea la función lógica de tres variables:

f (a, b, c) = ∑ (0, 2, 3, 5, 7)

La tabla de verdad es:

Página 66
Sistemas Digitales

a b c f
0 0 0 0 1
1 0 0 1 0
2 0 1 0 1
3 0 1 1 1
4 1 0 0 0
5 1 0 1 1
6 1 1 0 0
7 1 1 1 1

Implementemos esta función con un multiplexor ‘151. Para ello realizamos el montaje
siguiente:
Multiplexor
1 habilitado
a bc 0
0
Así, cuando a través de los bits de control
I0 I1 I2 I3 I4 I5 I6 I7 S2 S1 S0 E establezcamos una determinada combinación de
variables de entrada, obtendremos en la salida Z el
MULTIPLEXOR `151 canal seleccionado. Poniendo en cada canal un cero
o un uno según la tabla de verdad de la función,
obtendremos dicha función en la salida.

Z=f Z

Los bits de selección S2S1S0 hacen el papel de variables de entrada de la función f. En las
entradas I0,...,I7 ponemos los correspondientes valores que ha de tomar la función f, los cuales
aparecerán en la salida Z según los seleccionemos con S2S1S0.

En general con un multiplexor de n bits de selección (es decir, de 2n canales) se puede


implementar cualquier función lógica de n variables. Además, con un inversor adicional,
puede implementarse cualquier función lógica de n+1 variables (se verá en problemas)

Página 67
Sistemas Digitales

4.5- DEMULTIPLEXORES
Constan de una entrada, n salidas y m=2n entradas de selección, mediante las cuales se
selecciona en qué salida aparece la única entrada. Realizan la operación inversa de un
multiplexor. Supongamos que disponemos de varias fuentes generadoras de palabras de m
bits y de varios posibles receptores, es decir, destinatarios de esas palabras. Supongamos
además que nos proponemos transmitir una palabra de cualquier fuente a cualquier receptor.
Una forma de realizar la transmisión sería suministrar un bus separado de cada fuente a cada
receptor.

La ventaja de esta solución es que se podrían transmitir muchas palabras


simultáneamente. En la práctica esto no es factible ni conveniente y lo que se hace es recurrir
a la multiplexación que nos permite utilizar un solo bus para muchas fuentes diferentes.

Pero, obviamente, necesitamos un “demultiplexor”, es decir, una estructura lógica que


tomará una palabra de un bus y la dirigirá a un receptor seleccionado.

Un demultiplexor de uno a cuatro líneas aparece representado en la siguiente figura:

00 Si nos fijamos en este circuito y lo


comparamos con el que vimos para
un decodificador de dos entradas y
cuatro salidas, encontramos que
Bus de un bit 01 son idénticos salvo que hemos
Entrada de introducido en cada puerta AND
información una entrada adicional a la que se
10 conecta el bus. En el decodificador
activábamos la salida
correspondiente según las entradas
de selección, mientras que aquí
11 transmitimos la entrada a la salida
correspondiente según las entradas
de selección.
A1 A0 Veámoslo en el caso del
decodificador ‘138:
A0 O7 O7
A0
Bits de selección O6 Así cuando E1 = 0 el
DECODIFICADOR `138

(dirección) A1 A1 O6
decodificador estará habilitado y
A2 O5 O5
A2 aparecerá un cero en la salida
O4 O4 direccionada por A2A1A0 y un
uno en el resto. Si E 1 = 1 , el
O3 O3 decodificador se deshabilita y
O2 O2 todas sus salidas estarán a uno.
E3 O1 Por tanto, el estado de la salida
Terminales de O1 seleccionada por A2A1A0 coincide
habilitación E2 E O0 O0 con la entrada E 1 , luego con este
E1 montaje el decodificador ‘138
Entrada de datos (bus)
funciona como un demultiplexor.

Página 68
Sistemas Digitales

4.6- COMPARADORES BINARIOS


Los circuitos comparadores son sistemas combinacionales que detectan si dos
combinaciones binarias de n bits en el sistema binario natural son iguales o no y, en este
último caso, cual es mayor. Esta función lógica se utiliza con frecuencia en el diseño de
sistemas lógicos y, por tanto, su disponibilidad como bloque funcional permite simplificar en
gran medida la complejidad de realización de aquellos.

A3 A2 A1 A0 B3 B2 B1 B0

Un ejemplo de comparador es el ’85,


que permite comparar dos números IA>B
binarios de cuatro bits. Su estructura A B
lógica es la siguiente: IA=B
COMPARADOR `85
IA<B

OA<B OA=B OA>B

La tabla de verdad del circuito es (pasar de ella):

Entradas para
Entradas Salidas
conectar en cascada
A3,B3 A2,B2 A1,B1 A0,B0 IA>B IA<B IA=B OA>B OA<B OA=B
A3>B3 * * * * * * 1 0 0
A3<B3 * * * * * * 0 1 0
A3=B3 A2>B2 * * * * * 1 0 0
A3=B3 A2<B2 * * * * * 0 1 0
A3=B3 A2=B2 A1>B1 * * * * 1 0 0
A3=B3 A2=B2 A1<B1 * * * * 0 1 0
A3=B3 A2=B2 A1=B1 A0>B0 * * * 1 0 0
A3=B3 A2=B2 A1=B1 A0<B0 * * * 0 1 0
A3=B3 A2=B2 A1=B1 A0=B0 1 0 0 1 0 0
A3=B3 A2=B2 A1=B1 A0=B0 0 1 0 0 1 0
A3=B3 A2=B2 A1=B1 A0=B0 * * 1 0 0 1
A3=B3 A2=B2 A1=B1 A0=B0 0 0 0 1 1 0
A3=B3 A2=B2 A1=B1 A0=B0 1 1 0 0 0 0

La tabla simplificada es:

Entradas para conectar


Entradas Salidas
en cascada
A B IA>B IA<B IA=B OA>B OA<B OA=B
A > B * * * 1 0 0
A < B * * * 0 1 0
A = B 1 0 0 1 0 0
A = B 0 1 0 0 1 0
A = B * * 1 0 0 1
A = B 0 0 0 1 1 0
A = B 1 1 0 0 0 0

Página 69
Sistemas Digitales

Las entradas adicionales IA>B, IA<B y IA=B permiten conectar varios comparadores ’85 en
cascada y comparar números binarios de más de cuatro bits. Por ejemplo, para comparar dos
números binarios de ocho bits habrá que realizar el montaje:

A0 A1 A2 A3 B0 B1 B2 B3 A4 A5 A6 A7 B4 B5 B6 B7

A0a A1a A2a A3a B0a B1a B2a B3a A0b A1b A2b A3b B0b B1b B2b B3b
* I(A>B)a I(A>B)b

1 I(A=B)a I(A=B)b

* I(A<B)a O(A<B)a O(A=B)a O(A>B)a I(A<B)b O(A<B)b O(A=B)b O(A>B)b

OA<B OA=B OA>B


Figura. 4.4 Comparador binario de 8 bits construido con dos comparadores de 4 bits.

El funcionamiento es el siguiente. El comparador (a) ha de tener IA=B =1. El comparador (b)


compara los 4 bits más significativos: si A>B o A<B activa la salida correspondiente. En el
caso de que los cuatro bits más significativos sean iguales entonces se analizan las entradas
provenientes de la comparación de los 4 bits menos significativos (comparador (a)). Si A>B,
A<B o A=B se activa la salida correspondiente.

4.7- SUMADORES:
En la mayoría de los sistemas digitales, desde el circuito de control más sencillo hasta el
calculador más complejo, se realizan operaciones aritméticas. Todas ellas pueden reducirse en
último término a una serie de sumas aritméticas binarias.

Ya vimos en el tema 2 que la suma de dos bits puede expresarse de esta manera:

s = a⊕b
c = a ⋅b

Para hacer la suma bit a bit hay que tener en cuenta el acarreo de la etapa anterior. Así,
tenemos la siguiente tabla de verdad:

a b cn cn+1 s
0 0 0 0 0 0
1 0 0 1 0 1 Donde cn es el acarreo de la etapa anterior y cn+1 el acarreo
2 0 1 0 0 1 para la etapa siguiente. El circuito que realiza la tabla de
3 0 1 1 1 0 verdad anterior y que tiene como entradas a, b y cn y como
4 1 0 0 0 1 salidas s y cn+1 se denomina sumador total. Veamos cual es
5 1 0 1 1 0 el circuito más sencillo que lo implementa.
6 1 1 0 1 0
7 1 1 1 1 1

Página 70
Sistemas Digitales

Para s: Para cn+1:

a·b·c n a·b·c n a·b


ab ab
cn 00 01 11 10 cn 00 01 11 10

0 1 1 0 1
0 2 6 4 0 2 6 4

1 1 1 1 1 1 1
1 3 7 5 1 3 7 5

a·b·c n a·b·c n b·c n a·c n

Así, obtenemos:

s = a ⋅ b ⋅ cn + a ⋅ b ⋅ cn + a ⋅ b ⋅ cn + a ⋅ b ⋅ cn =
= ( a ⋅ b + a ⋅ b) ⋅ c n + ( a ⋅ b + a ⋅ b) ⋅ c n = cn+1
= ( a ⊕ b) ⋅ c n + ( a ⊕ b) ⋅ c n = a ⊕ b ⊕ c n

c n +1 = a ⋅ b + a ⋅ c n + b ⋅ c n

El circuito sumador total será


entonces el representado e la figura de la
derecha.

a b cn
En la práctica se utilizan sumadores integrados como el ’83. Se trata de un sumador de
cuatro bits cuyo esquema lógico es:

A3 A2 A1 A0 B3 B2 B1 B0 CI

A B
SUMADOR `83
S=A+B

S3 S2 S1 S0 CO

Página 71
Sistemas Digitales

Consta de cuatro circuitos sumadores totales acoplados entre sí. CI es la entrada de acarreo
de la primera etapa sumadora y CO la salida de acarreo de la cuarta etapa.

Estos dos pines nos permiten conectar sumadores en cascada para poder efectuar la suma
binaria de números de más de cuatro bits:

A0 A1 A2 A3 B0 B1 B2 B3 0 A4 A5 A6 A7 B4 B5 B6 B7

A0a A1a A2a A3a B0a B1a B2a B3a CIa CIb A0b A1b A2b A3b B0b B1b B2b B3b

S0a S1a S2a S3a COa S0b S1b S2b S3b COb

S0 S1 S2 S3 S4 S5 S6 S7 CO
Figura. 4.5 Sumador total de 8 bits construido con dos sumadores de 4 bits.

Así, en S0 ··· S7 aparece la suma de los números de ocho bits A0 ··· A7 y B0 ··· B7, junto con
el acarreo CO correspondiente.

Ya hemos visto que si los números negativos vienen representados en complemento a dos,
podemos realizar la resta a través de la suma. Si quisiéramos restar dos números de cuatro bits
a3 a2 a1 a0 y b3 b2 b1 b0 con un sumador ’83, haríamos el siguiente montaje:

b3 b2 b1 b0

a3 a2 a1 a0
1 En las entradas A0···A3 introducimos
el minuendo a0···a3. En las entradas B0···B3
A3 A2 A1 A0 B3 B2 B1 B0 CI introducimos el complemento bit a bit del
sustraendo b0···b3. Poniendo el acarreo de
entrada CI a uno, sumamos una unidad con
lo que el sustraendo b0···b3 estará expresado
en C2. En S0···S3 obtenemos la resta de los
dos números.

S3 S2 S1 S0 CO
bit de signo

Página 72
Sistemas Digitales

TEMA 5: CIRCUITOS SECUENCIALES ASÍNCRONOS


En temas anteriores hemos estudiado el análisis y la síntesis de los sistemas lógicos
combinacionales, en los cuales no hemos tenido en cuenta el tiempo, porque el estado lógico
de la salida de dichos sistemas depende solamente del estado de las entradas en el instante
considerado y es independiente de los estados que hayan tenido las entradas anteriormente.
Por tanto, los sistemas digitales combinacionales no nos permiten por sí solos resolver el
problema de almacenar el estado de las entradas en un instante y utilizarlo para tomar
decisiones posteriormente cuando cambie el estado de aquellas.

Los sistemas que pueden actuar de esta forma han de ser capaces de memorizar el estado
de las entradas y convertirlo en un estado interno del propio sistema. El valor de la salida en
un instante determinado no depende solamente del estado de las entradas en dicho instante
sino también del estado interno.

De todo lo dicho se deduce que un sistema secuencial reacciona ante secuencias de


estados de entrada de una forma determinada que depende de su construcción física y, por
tanto, es un sistema automático, que recibe el nombre de “autómata finito” debido a que posee
un número finito de estados internos. La denominación de secuencial es debida a que el valor
de su salida en un instante determinado no depende solamente de los estados lógicos de las
entradas en dicho instante, sino de la secuencia de estados de entrada.

Todo sistema secuencial posee:


a) Un conjunto finito de 2n estados de entrada, siendo n el número de variables de
entrada x1 , x 2 ,..., x n (X).
b) Un conjunto finito de 2m estados internos, siendo m el número de variables de estado
interno y1 , y 2 ,..., y m (Y).
c) Un conjunto finito de 2p estados de salida, siendo p el número de variables de salida
z1 , z 2 ,..., z p (Z).

Las variables de salida se pueden obtener de dos formas diferentes:


a) Mediante una combinación de las variables de entrada y las variables de estado
interno. La estructura de un sistema secuencial de este tipo recibe el nombre de “autómata
de Mealy”, y tiene el siguiente esquema:

x1 x1
x2 x2
z1
xn xn
z2
y1(t) y1(t+∆t)
(1) (2)
y2(t) y2(t+∆t) zp

ym(t) ym(t+∆t)

Figura. 5.1 Autómata de Mealy.


Página 73
Sistemas Digitales

b) Las variables de salida coinciden con las variables de estado interno o dependen
solamente de ellas. La estructura de un sistema secuencial de este tipo recibe el nombre de
“autómata de Moore” y responde al diagrama de bloques siguiente:

x1
x2
z1
xn
z2
y1(t) y1(t+∆t)
(1) (2)
y2(t) y2(t+∆t) zp

ym(t) ym(t+∆t)

Figura. 5.2 Autómata de Moore.

Puede demostrarse algebraicamente que para todo autómata de Moore existe un autómata
de Mealy equivalente y viceversa.

El autómata más general es el de Mealy. Está formado por dos sistemas combinacionales,
(1) y (2), y unos elementos de memoria. Las variables de entrada del sistema combinacional
(1) son las entradas exteriores X y las variables de estado interno Y a través de los elementos
de memoria. Estos pueden estar constituidos por una célula de retardo o una célula de
memoria capaz de almacenar la información de un bit del estado interno. La célula de retardo
se puede realizar físicamente a la salida del sistema combinacional o estar constituida por el
retardo inherente a las puertas del sistema combinacional. En este último caso se denomina “a
reacción directa”.

La evolución del estado interno de un sistema secuencial puede realizarse de dos formas
principales:

a) Autónoma: el sistema evoluciona sin control externo alguno hasta que para una
combinación de entradas X determinada, la combinación Y (t + ∆t ) coincide con Y (t ) , con
lo que el sistema alcanza un estado estable. Los sistemas de este tipo reciben el nombre de
“asíncronos”.
b) Controlada mediante los impulsos de un generador: el estado interno del sistema
secuencial evoluciona solamente cuando se aplica un impulso procedente de un generador.
Los sistemas de este tipo reciben el nombre de “síncronos”.

Página 74
Sistemas Digitales

5.1- DISEÑO DE CIRCUITOS SECUENCIALES ASÍNCRONOS

Para la realización de un circuito secuencial asíncrono se han de seguir una serie de pasos,
desde las especificaciones del problema hasta el diseño del circuito final. No es necesario
realizar todos los pasos siempre que haya que diseñar un circuito, algunos de ellos se pueden
omitir. La lista completa de todos los pasos que hay que seguir se muestra a continuación.

1. Especificaciones.
2. Diagrama de secuencias / Diagrama de flujo.
3. Tabla de fases inicial.
4. Búsqueda de estados equivalentes o pseudo-equivalentes.
5. Fusión de líneas / Diagrama de fusión.
6. Tabla de fases reducida (Moore, Mealy).
7. Codificación de líneas de la tabla de fases / Diagrama de transiciones.
8. Tabla de fases con estados codificados.
9. Matriz de excitación (mapa de Karnaugh de los bits de estado). (evitar fenómenos
aleatorios)
10. Matriz de salida (mapa de Karnaugh del bit de salida).
11. Realización del circuito.

Para estudiar el diseño de los circuitos secuenciales asíncronos, llevaremos a cabo un


ejemplo. Se desea diseñar un circuito con una entrada X y una salida Z tal y como se muestra
en el dibujo.

X
X Z

Lo primero será intentar deducir los estados estables que pueda tener el sistema. Estos se
producen mientras la entrada X no cambie. Tendremos un estado estable por cada
combinación posible de entradas y salidas, en principio tendremos el siguiente “diagrama de
secuencias”.

Z
1 2 3 4 1 2 3 4 1

A partir de aquí las


secuencias se repiten

Página 75
Sistemas Digitales

Una vez deducidos los estados, planteamos la “tabla de fases” en la que representamos de
forma ordenada la evolución de estado en estado. También representaremos la salida que
corresponde a cada estado.

X
0 1 Z
Est. Act.
1 1 2 0
Un estado será estable si, para una entrada determinada, el
2 3 2 0 estado actual y el siguiente coinciden. La salida que se indica
es la correspondiente al estado estable.
3 3 4 1

4 1 4 1

Est.Siguiente
Representamos los estados estables rodeados por un círculo bajo la entrada
correspondiente y rellenamos la tabla con estados inestables marcando las transiciones
asociadas a los cambios de la entrada. Se especifica un solo estado estable por línea.

Esa misma información se puede representar en un diagrama de flujo:

0 1 1

1/0 2/0
X

0 0 E/Z E: estado
X: entrada
Z: salida
4/1 3/1

1 1 0

Aquí hemos deducido la tabla de fases a partir del diagrama de secuencias pero, en
ocasiones, dependiendo de las especificaciones, puede resultar más intuitivo deducir el
diagrama de flujo y, a partir de él, plantear la tabla de fases.

Normalmente el paso siguiente en el proceso de diseño es la simplificación de estados


redundantes. En nuestro caso no los hay, pero más adelante veremos el proceso de
simplificación.

Para poder implementar el sistema digital será necesario codificar los estados. Como
tenemos cuatro en total, necesitamos dos bits que denominaremos y1 e y0. Pero antes de
asignar combinaciones concretas de bits a los estados es necesario comprobar las transiciones
que hay entre los estados y asegurarnos de que las combinaciones correspondientes a estados
entre los que hay transiciones difieran en un solo bit. Esto es absolutamente imprescindible,

Página 76
Sistemas Digitales

pues si no se hace una correcta codificación el sistema puede no funcionar correctamente.


Veamos como ejemplo qué ocurre si hacemos la siguiente codificación:

X
y1 y0 0 1 Z
Estado y1 y0
1 0 0 00 00 01 0

Estado Actual
la tabla de fases
pasa a
2 0 1 01 10 01 0

3 1 0 10 10 11 1

4 1 1 11 00 11 1

Estado Siguiente
Y1Y0

Veamos que ocurre cuando pasamos del estado (01) al (10) al cambiar X de uno a cero.
Como se puede observar tiene que producirse el cambio de los dos bits de estado. Ahora bien,
sabemos que cada salida de un circuito combinacional tiene un retardo de propagación
asociado, cuyo valor concreto no conocemos, y que nunca van a ser iguales los retardos
asociados a dos salidas distintas.
Sea t1 el retardo asociado a Y1, y t0 el retardo asociado a Y0. Como t1 y t0 nunca van a ser
iguales, eso significa que al pasar de y1 y 0 = 01 a y1 y 0 = 10 pasaremos por una de dos
posibles combinaciones intermedias o 00 o 11:

La entrada X pasa de 1 a 0

Si t1 > t0 Si t1 < t0
cambia antes y0 cambia antes y1
El sistema queda atrapado
01 en un ciclo de estados
seg inestables
uim
os
00 ¿? e ste
11 cam
* ino
10 ¿?
00 10 01
00 * ¿?
Estado final 00 11
distinto del esperado 10

¿ ? Imposible pues hay dos cambios simultáneos


* Imposible pues suponemos t1 < t0
Nota: al llegar a un nuevo estado volverían a cambiar las variables de estado y siempre lo haría primero y1 en la rama de la
derecha. En todo el proceso X=0.
El problema está en que tenemos realimentaciones directas y el sistema toma esas
combinaciones intermedias erróneamente como nuevos estados actuales. Para ver donde
llegamos nos fijamos en la tabla de fases. Cuando por al menos uno de los dos caminos no
llegamos al estado final correcto, en el caso anterior el (10), se dice que la transición es
crítica, ya que el sistema puede que no funcione como es debido al desconocer los retardos de
propagación y, en particular, cual de ellos es mayor.

Página 77
Sistemas Digitales

Algo similar ocurre en la transición del estado (11) al (00) cuando X pasa de uno a cero:

La entrada X pasa de 1 a 0

Si t1 > t0 Si t1 < t0
cambia antes y0 cambia antes y1
El sistema queda atrapado
11 en un ciclo de estados
seg inestables
uim
os
10 ¿? e ste
01 cam
* ino
00 ¿?
10 00 11
10 * ¿?
Estado final 10 01
distinto del esperado 00

¿ ? Imposible pues hay dos cambios simultáneos


* Imposible pues suponemos t1 < t0

Para evitar las transiciones críticas habrá que codificar los estados teniendo en cuenta las
transiciones que existen entre ellos. Para ello resulta útil el diagrama de transiciones:

1 2
00 01 Tenemos un sistema cíclico. Basta con codificar en código
Gray. Como ahora sólo cambia un bit de un estado actual al
siguiente no habrá problemas de transiciones críticas.
10 11
4 3

La nueva tabla de fases queda:

X
y1 y0 0 1 Z

00 00 01 0 El siguiente paso consiste en plantear los diagramas de


Estado Actual

Karnaugh para los bits de estado (matriz de excitación) y para la


01 11 01 0 salida (matriz de salida). Vayamos primero con la salida. Sólo la
tenemos definida para los estados estables. En los inestables la
11 11 10 1 definiremos en función de las salidas de los estables entre los
5

que ocurre la transición.


10 00 10 1

Estado Siguiente
Y1Y0

Página 78
Sistemas Digitales

Veamos, por ejemplo, las salidas que asignamos a las transiciones desde el estado (00) al
(01):

Z 0 0 0
Transición desde 00 a 01
Y1Y0 t
00 01 01

Estados inestables

y desde el (11) al (10):

Z 1 1 1
Transición desde 11 a 10
Y1Y0 t
11 10 10

Estados inestables
Nota: el estado inestable correspondería con la salida del sistema durante la evolución de un estado a otro, durante la flecha
que une ambos estados en el diagrama de flujo.

Si la salida tiene que cambiar en la transición, nos da igual el valor que le asignemos a la
salida del estado inestable. Por ejemplo, al pasar de (01) a (11):

Z 0 * 1
Transición desde 01 a 11
Y1Y0 t
01 11 11

Estados inestables

Así, la matriz de salida y las de excitación serán:

X X X
y1 y0 0 1 y1 y0 0 1 y1 y0 0 1

00 0 0 00 0 0 00 0 1

01 * 0 01 1 0 01 1 1

11 1 1 Z = y1 11 1 1 11 1 0
5
Para evitar 5
5

1 10 0 1 fenómenos 10 0 0
10 * aleatorios
Salida Z Y1 Y02
Y

Página 79
Sistemas Digitales

de donde obtenemos:
Z = y1 , Y1 = X ⋅ y0 + X ⋅ y1 + y1 ⋅ y0 , Y0 = X ⋅ y 0 + X ⋅ y 1 + y 1 ⋅ y 0

Es absolutamente necesario eliminar fenómenos aleatorios porque al tener realimentaciones


directas, las combinaciones intermedias que atraviesan los bits de estado son interpretadas por
el sistema como nuevos estados actuales. En el circuito combinacional de salida no es
necesario, en principio, evitarlos. El circuito que implementa lo anterior será:

Y0

Y1
Z

y0 y1
Circuito
asíncrono

Figura. 5.3 Circuito asíncrono implementado en una estructura AND-OR.

Página 80
Sistemas Digitales

5.2- SÍNTESIS DE UN SISTEMA SECUENCIAL ASÍNCRONO. REDUCCIÓN DE LA


TABLA DE FASES
Las especificaciones de un sistema asíncrono indican los estados de salida para todas las
secuencias admisibles de los estados de entrada. Estas especificaciones se pueden representar
gráficamente en un “diagrama de secuencia o de flujo” en el cual se indican las transiciones
entre los diferentes estados de entrada y el estado de salida correspondiente. Dichas
transiciones se representan en una tabla de fases en la que se indica además el estado de salida
correspondiente a cada estado interno. En esta tabla de fases inicial se indica un solo estado
estable por línea. Una vez realizada esta tabla de fase es necesario estudiar su posible
reducción a fin de lograr la realización del sistema propuesto con un mínimo número de
estados internos.

La reducción de una tabla de fases se realiza mediante la “fusión” de dos o más líneas en
una sola. La fusión de una tabla de fases es un paso importante porque el número de estados
internos será igual al de líneas y el sistema será tanto más sencillo cuanto menor sea el
número de éstas.

Estudiaremos la fusión de líneas en una tabla de fases con un ejemplo: supongamos que el
análisis de las especificaciones de un sistema secuencial asíncrono nos ha llevado al
planteamiento de una tabla de fases como la que aparece a continuación.

X1X2 00 01 11 10 Z En dicha tabla representamos mediante guiones los


estados imposibles o inalcanzables. En cada línea está
1 3 -- 6 1 representado un estado interno estable y la salida Z
correspondiente a ese estado.
2 3 -- 6 1
5 3 -- 8 0
Para estudiar la fusión de líneas en una tabla de fases
7 4 -- 8 0 hay que tener en cuenta el concepto de “estados
equivalentes” y “estados pseudoequivalentes”. Dos
2 4 -- 6 1 estados de una tabla de fases correspondientes al mismo
2 -- -- 8 1 estado de entradas son equivalentes cuando les
corresponde la misma salida, y todas las posibles
5 9 -- 8 0 secuencias de estados de entrada a partir de ambos
conducen a la misma secuencia de estados internos
7 9 -- 8 0
equivalentes. Por tanto, para que sean equivalentes dos
5 9 -- 6 1 estados a cada uno de los cuales les corresponde una
línea de la tabla de fases, es condición suficiente que en
cada una de las restantes columnas coincidan dos estados inestables del mismo número o bien
dos estados imposibles o inalcanzables (representados por un guión). Por ejemplo, fijándonos
en las dos primeras líneas de la tabla de fases anterior, se deduce que los estados (1) y (2) son
equivalentes, ya que les corresponde una misma salida (Z = 1) y los estados internos
siguientes para cada combinación de variables de entrada (estados de entrada) son los
mismos. Por tanto:
(1) ≡ (2)

En el caso de que en alguna columna los estados siguientes sean diferentes, es necesario
que éstos, a su vez, sean equivalentes para que los dos primeros lo sean. Por ejemplo,
fijándonos en las líneas 3 y 4 de la tabla de fases anterior, se deduce que (3) y (4) son
equivalentes si lo son (5) y (7), es decir:

Página 81
Sistemas Digitales

(5) ≡ (7) ⇒ (3) ≡ (4)

Observando las líneas 7 y 8 se deduce que (5) y (7) son equivalentes. Por tanto:
(5) ≡ (7)
(3) ≡ (4)

La relación de equivalencia es transitiva, es decir, si un estado es equivalente a otro, y este


a su vez lo es a un tercero, el primero y el tercero también los son.

Cuando se cumplen las condiciones antes mencionadas para la equivalencia de estados pero
en alguna columna uno sólo de los estados es inalcanzable o imposible, se dice que los
estados son “pseudoequivalentes” o “compatibles”. Por ejemplo, en la tabla de fases anterior
se observa que los estados (6) y (8) (líneas 5 y 6) son pseudoequivalentes.

Al contrario que en el caso de la equivalencia, la relación de pseudoequvalencia no es


transitiva.

Así pues, el primer paso para la reducción de la tabla de fases es la unión de estados
equivalentes y pseudoequivalentes. En nuestro ejemplo sustituiremos los estados (1) y (2) por
un solo estado, al cual asignaremos el número (1). De igual forma, el (3) y el (4) los
sustituiremos por el (3), y el (5) y el (7) por el (5). Los estados pseudoequivalentes (6) y (8) se
sustituyen por el (6), y en la columna que hay un estado imposible y el estado inestable 4, se
pone éste en lugar del inestable (en la tabla aparece el 3 pues hemos sustituido el 4 por su
equivalente). En la figura siguiente se indica la tabla resultante:

X1X2 00 01 11 10 Z
A 1 3 -- 6 1
B 5 3 -- 6 0
C 1 3 -- 6 1
D 5 9 -- 6 0
E 5 9 -- 6 1

Una vez que se han unido los estados equivalentes y los pseudoequivalentes es necesario
estudiar qué líneas son “fusionables”. Dos líneas son fusionables si ambas contienen en todas
las columnas algunas de las siguientes combinaciones de estados:

1. Dos estados inestables del mismo número.


2. Un estado inestable y otro estable del mismo número: en la línea resultante de la
fusión se pondrá el estado estable.
3. Dos estados imposibles.
4. Un estado inestable y un estado imposible: en la línea resultante de la fusión se pondrá
el estado inestable correspondiente.
5. Un estado estable y un estado imposible: en la línea resultante de la fusión se pondrá
el estado estable correspondiente.

Página 82
Sistemas Digitales

Las tres primeras combinaciones no necesitan ser justificadas. Las dos últimas son
admisibles porque un estado imposible es aquel que no se puede alcanzar debido a la no
existencia de una determinada secuencia de estados y, por tanto, se le puede sustituir en una
línea fusionada por un estado estable o inestable, ya que sólo se llegará a éste a través de una
secuencia de estados admisible.

La fusión de líneas tampoco es una propiedad transitiva y, en consecuencia, para que tres
líneas sean fusionables en una sola lo han de ser dos a dos.

La fusión de las líneas de una tabla de fases se realiza sistemáticamente mediante el


“diagrama de fusión”. En este diagrama se asigna un punto del plano a cada línea de la tabla
representada por una letra y se enlazan mediante un segmento las letras correspondientes a
líneas fusionables. Dado que la unión es una propiedad recíproca, para realizar el diagrama de
fusión sólo es necesario comparar cada línea con todas las que se encuentren por debajo de
ella en la tabla.

La fusión se puede realizar entre líneas a las que corresponda el mismo o distinto estado de
salida. Si todas las fusiones que se realizan son entre estados con la misma salida, a cada línea
de la tabla de fases final le corresponde un estado de salida y el sistema secuencial resultante
será un autómata de Moore. Por el contrario, si se fusionan entre sí líneas a las cuales les
corresponde distinto estado de salida, el sistema secuencial resultante corresponderá al
modelo de autómata de Mealy, en el cual la salida dependerá del estado de entrada y del
estado interno. En este caso es necesario incluir en la tabla de fases la información
correspondiente al estado de salida y, por consiguiente, al lado de cada estado estable se
indicará el estado de salida que le corresponde. A los estados inestables se les puede asignar
indistintamente el estado de salida del estado estable del cual se parte o del estado estable al
cual se llega, en caso de que sean diferentes, y el común a ambos si son iguales. La elección
se ha de realizar de forma que la expresión lógica resultante para las variables de salida sea lo
más sencilla posible.
A
Realicemos ahora la función para la tabla de fases de nuestro
ejemplo. Observando dicha tabla se deduce que la línea A es
fusionable con la C y la línea E lo es con la D. El diagrama de
fusión será pues: E B

La tabla de fases final reducida es la siguiente: D C

X1X2 00 01 11 10 Debido a que a las líneas D y E les corresponde un


estado de salida diferente, es necesario colocar al lado de
1 /1 3 -- 6 /1 cada estado estable el estado de salida de la línea a la que
pertenecía en la tabla sin fusionar.
5 3 /0 -- 6
Los estados estables de una misma línea representan al
5 /0 9 /1 -- 6 mismo estado, ya que la estabilidad implica que el estado
actual y siguiente coinciden.

Sustituiríamos en la tabla: 1 y 6: 1, 3:2, 5 y 9:3

Página 83
Sistemas Digitales

EJEMPLO DE SÍNTESIS DE UN SISTEMA SECUENCIAL ASÍNCRONO

Para asimilar mejor todos los conceptos estudiados hasta ahora realizaremos la síntesis de
un sistema secuencial sencillo.

Diseñar un sistema secuencial asíncrono con dos variables de entrada X1 y X2 y una


variable de salida Z que ha de actuar siguiendo las siguientes especificaciones:

a) Si la variable X1 toma el valor lógico uno, la salida Z del sistema pasará al estado
lógico uno independientemente del estado en que se encuentre y continuará en él aunque la
variable X1 vuelva al estado lógico cero. Sucesivas conmutaciones de la variable X1 no
condicionan el estado de la salida.
b) Si la variable X2 toma el valor lógico uno, la salida Z del sistema pasará al estado
lógico cero independientemente del estado en que se encuentre anteriormente y continuará
en él aunque la variable X2 vuelva al estado lógico cero. Sucesivos cambios de estado de X2
no modifican el estado de la salida.
c) Las variables X1 y X2 no podrán encontrarse en estado uno simultáneamente ni cambiar
de estado en el mismo instante.
Nota: es un biestable RS con X1=S y X2=R
Estas especificaciones pueden representarse en un diagrama de secuencia:

X1

X2

Z
t
1 2 3 2 3 4 1 4 1

En el diagrama de secuencias se representan todas las situaciones posibles. A cada


combinación de estados de entrada y salidas diferentes les asignamos un número decimal que
corresponderá a un estado total del sistema determinado.

Observando las transiciones entre estados en el diagrama de secuencia, resulta sencillo


obtener la tabla de fases:

X1X2 00 01 11 10 Z
En esta tabla indicamos con un guión aquellos
A 1 4 -- 2 0 estados a los cuales no llegará nunca el sistema de
acuerdo con las especificaciones expuestas (cambio
B 3 -- -- 2 1 simultáneo de las variables de entrada X1X2 o que
C 3 4 -- 2 1 ambas valgan uno a la vez). Por ejemplo, si el sistema
se encuentra en el estado estable (2) con las entradas en
D 1 4 -- -- 0

Página 84
Sistemas Digitales

el estado X 1 X 2 = 10 , para que estas pasen al estado X 1 X 2 = 01 han de cambiar


simultáneamente las dos entradas, pero hemos especificado que esto no puede suceder y, por
lo tanto, se han colocado guiones en las casillas correspondientes.

A cada estado estable (rodeado por un círculo) se le asigna una línea de la tabla y se indican
las transiciones a partir de él. Por ejemplo, si llamamos (1) al estado del sistema en que la
entrada es X 1 X 2 = 00 y la salida Z = 0 , mediante el cambio del estado de entrada a
X 1 X 2 = 01 o X 1 X 2 = 10 se puede poner el sistema en dos nuevos estados estables (4) y (2),
respectivamente, el primero con salida cero y el segundo con salida uno, a los que se asigna
una nueva línea. Las transiciones de (1) a (4) y a (2) se indican en la tabla mediante los
estados inestables 4 y 2 respectivamente.

En la tabla de fases se asocia cada línea a un estado estable (rodeado por un círculo) y se pone
la salida correspondiente a ese estado estable. Partiendo del estado estable de cada línea
vemos si es posible la transición al resto de estados especificados por las entradas. Tenemos
que tener en cuenta que cada estado viene definido no solo por las variables de entrada sino
también por la salida. En el estado estable 2 al pasar a 00 no se llega al estado 1 sino al 3,
pues la salida vale 1.

Observando la tabla de fases se deduce que no pueden establecerse relaciones de


equivalencia o de pseudoequivalencia entre estados (tiene q haber est. estables en la misma
columna y con la misma salida). Por tanto, pasamos directamente a realizar el diagrama de
fusión. Observando la tabla de fases se comprueba que la línea A es fusionable con la D y la
B con la C. Por tanto, el diagrama de fusión y la tabla de fases reducida serán:

A B X1X2 00 01 11 10 Z
1 4 -- 2 0
3 4 -- 2 1
D C

donde se observa que solamente hay dos líneas y a cada una de ellas le corresponde un estado
de salida, por lo que el sistema obtenido será un autómata de Moore del que podemos realizar
su tabla y diagrama de flujo (incluyen las de excitación y salida):

10
X1X2 00 01 11 10 00 00
1/0 2/1
1 1 /0 1 /0 -- 2/* 01 10

2 2 /1 1/* -- 2 /1 01

donde se ha tenido en cuenta que los estados estables de una misma línea representan al
mismo estado (1,4 1, 3,2  2), ya que la estabilidad implica que el estado actual y
siguiente coincidan.

La codificación de una tabla de fases de dos líneas no presenta ningún problema porque
para realizarla solamente se necesita una variable de estado interna que nos proporciona los

Página 85
Sistemas Digitales

dos estados necesarios y es imposible la existencia de transiciones críticas entre estados


internos adyacentes.

Asignamos el estado interno y = 0 a la primera línea e y = 1 a la segunda línea. La matriz


de excitación la realizamos asignando a cada estado estable el estado interno de su línea y, a
cada estado inestable el estado interno del estado estable correspondiente. Las matrices de
excitación y de salida son las siguientes:

X1 X2 X1 X2
y 00 01 11 10 y 00 01 11 10

0 0 0 * 1 0 0 0 * *

1 1 0 * 1 1 1 * * 1

Y Salida Z
5

Suma de productos
Producto de sumas

Por tanto, las expresiones para Y y Z son:

Z = y , Y = X 1 + X 2 ⋅ y , o bien Y = ( X 1 + y ) ⋅ X 2

dependiendo de si lo expresamos como suma de productos o como producto de sumas.

Si realizamos el circuito con puertas NAND se obtiene:

Y = X1 + X 2 ⋅ y = X1 + X 2 ⋅ y = X 1 ⋅ X 2 ⋅ y

Y
Z
X1
Y=Z
X2
Introduciendo la
y realimentación Y
X2

Nota: Y = Y ·X 2 = X 1 ·Y ·X 2 = ( X 1 + Y ) X 2 = ( X 1 + Y ) + X 2 que es justo Y de la expresión con puertas


NOR.

Si realizamos el circuito con puertas NOR se tiene:

Página 86
Sistemas Digitales

Y = ( X 1 + y) ⋅ X 2 = ( X 1 + y) ⋅ X 2 = ( X 1 + y) + X 2

X1
X1 Y

y
Y=Z

X2 Y
Z
X2

Nota: Y = ( X 1 + Y ) = X 1 + ( X 2 + Y ) = X 1 + X 2 ·Y = X 1·X 2 ·Y que es justo Y de la expresión de las


NAND.

La única diferencia entre ambas realizaciones es su comportamiento cuando las entradas


toman simultáneamente el valor uno (lo que se especificó como entrada imposible).

Los sistemas secuenciales que poseen una sola variable de estado interno se denominan
“biestables”, porque sólo tienen dos estados estables. El que acabamos de diseñar recibe el
nombre de biestable R-S (Reset-Set). A las entradas X1 y X2 se les asigna, respectivamente,
las letras S y R, de tal forma que, cuando S = 1, el biestable se pone en estado de “set”, es
decir su salida se pone a uno. Cuando R = 1, el biestable se pone en estado de “reset” que
significa que su salida se pone a cero. Obviamente con esta nomenclatura no tendrán sentido
las situaciones en las que R = S = 1. No obstante, ya que en el diseño del biestable con puertas
NAND hemos supuesto que para la combinación de entradas X 1 X 2 = 11 el estado Y = Z era
uno, cuando nosotros pongamos los terminales R y S a uno a la vez, la salida se pondrá a uno;
por este motivo al biestable R-S con puertas NAND se le denomina de “grabación
prioritaria”. Todo lo contrario ocurre con el biestable diseñado con puertas NOR, en el que se
supuso que para la combinación de entradas X 1 X 2 = 11 el estado Y = Z valía cero por lo que
si R = S = 1, la salida se pone a cero. Por ello, al biestable R-S de puertas NOR se le
denomina de “borrado prioritario”.

Nota: X1=S y X2=R. La implementación de un flip-flop con puertas NAND posee las entradas
activas en baja ( R, S ) estando asociadas R con Y y S con Y. La implementación con
puertas NOR posee entradas activas en alta (R, S) asociándose R con Y y S con Y .

Página 87
Sistemas Digitales

5.3- CODIFICACIÓN DE LOS ESTADOS INTERNOS DE LOS SISTEMAS


SECUENCIALES ASÍNCRONOS

En el apartado anterior hemos visto que una vez reducida la tabla de fases al máximo, es
necesario codificar cada línea de la misma mediante una combinación binaria. El número
mínimo de variables de estado necesario es un número n, tal que 2 n −1 < N ≤ 2 n , donde N es el
número de líneas de la tabla de fases y n el número de variables de estado interno.

Carrera: fenómeno en el que existen varios caminos para realizar una transición entre
estados. Se produce en transiciones entre estados no adyacentes (difieren en más de 1 bit,
ej. 00  11) y se debe a la realimentación directa de los bits de estado. Los bits de estado
nunca cambian simultáneamente y se desconoce el retardo de propagación asociado a cada
uno de ellos, por eso no se sabe cual de los caminos se va a seguir. SOLO se produce en
circuitos secuenciales asíncronos, pues son los que tienen realimentación directa.

Carrera NO crítica: carrera en la que por todos los caminos se llega al estado final correcto.
Carrera crítica: carrera en la que por al menos uno de los caminos NO se llega al estado
final correcto. Tiene que ser corregida.

Transición no adyacente: D
(00) (11)
A (00) A (00)

(01) B C (10) (01) B C (10)

D (11) C (10)
(11) D
Carrera NO crítica Carrera crítica

La codificación de las líneas de la tabla de fases ha de realizarse de forma que sean


imposibles las transiciones críticas entre estados internos no adyacentes. Esto puede hacer que
el número de variables de estado interno necesarias pueda ser superior a n.

La realización de un “diagrama de transición” es una gran ayuda para la codificación.


Dicho diagrama se realiza asignando a cada línea de la tabla de fases final un punto del plano
y uniendo mediante un trazo aquellas líneas entre las que exista una transición. La forma más
elemental de realizar la codificación es asignar combinaciones adyacentes a todas las líneas
entre las cuales existe transición.

Por ejemplo, consideremos un sistema asíncrono cuya tabla de fases sea la siguiente:
X 0 1 Z Su diagrama de transición será:
A 1 2 0 A B
B 3 2 0
C 3 4 1
D 1 4 1 D C
Página 88
Sistemas Digitales

Ya que si el sistema se encuentra en la línea A en el estado (1) con X = 0 y cambia a X = 1,


pasa al estado inestable 2 que conduce al estado estable (2) en la línea B. Por ello unimos A
con B a través de una línea. Hacemos lo mismo con las demás líneas.

Observando el diagrama de transición se deduce que para la codificación basta con utilizar
el código cíclico indicado en el siguiente diagrama:
00 A B 01
De este modo, las transiciones entre estados serán
siempre adyacentes y no se producirán carreras críticas.
La matriz de excitación correspondiente será:
X
10 D C 11 y1 y2 0 1 Z

00 00 01 0

01 11 01 0
En la mayoría de los casos no es posible asignar estados
internos adyacentes a todas las líneas de la tabla de fases 11 11 10 1
entre las que se producen transiciones. Para solventar la
dificultad que esto implica existen dos soluciones: 10 00 10 1
a) Establecer la transición entre dos estados internos
estables no adyacentes a través de un estado intermedio inestable adyacente a
ambos que conduce finalmente al segundo de los estados estables.
b) Elevar el número de variables de estado interno por encima del mínimo necesario y
realizar la codificación correcta.

a) Veamos esto con un ejemplo. Sea el sistema secuencial asíncrono cuya tabla de fases
se representa en la siguiente figura:

X1X2 00 01 11 10 A partir de esta tabla podemos construir el diagrama de


transición:
A 1 3 2 7
A B
B -- 4 2 7
C 5 4 2 8
D 1 4 6 8
D C
Observando el diagrama de transición se deduce que es imposible codificar con dos
variables las cuatro líneas de la tabla de fases sin que se produzcan transiciones críticas
debido a la transición existente entre B y D.

Veamos pues lo que ocurre en este ejemplo si realizamos la siguiente codificación:


00 A B 01
La única situación en la que puede producirse una
transición crítica es entre las líneas B y D ya que sus
codificaciones en binario no son adyacentes. Veámoslo
construyendo la matriz de excitación para la anterior
10 D C 11 codificación:

Página 89
Sistemas Digitales

X1X2: 1101
Si t2 > t1 Si t2 < t1
X1X2 cambia antes y1 cambia antes y2
y1y2 00 01 11 10
01
00 00 00 01 01
01 -- 10 01 01 11 ¿? 00
11 11 10 01 11 10
00 10 10 10 00
10 11
estados finales distintos
¿ ? Imposible pues hay dos cambios simultáneos

Supongamos que el sistema se encuentra en el estado de entrada X 1 X 2 = 11 y el estado


interno estable (01). Si la entrada pasa al estado X 1 X 2 = 01 , el estado interno debe cambiar
de 01 a 10 a fin de pasar al estado estable (10), es decir, deben cambiar los dos bits de estado
interno. Se observa que ésta transición es crítica debido a que, si al cambiar el estado interno
de 01 a 10 lo hace pasando por el 00, se quedará en él debido a que es un estado estable. Se
puede evitar este problema si, en lugar de asignar al estado inestable 4 de la línea B en la tabla
de fases el estado 10 del estado estable final (4), se le asigna el estado 11 de la línea C, con lo
cual desaparece la transición crítica porque este estado es inestable y conduce al mismo
estado (4) al que se deseaba llegar. De esta forma el paso del estado (2) al (4) no se realiza
directamente sino a través de la línea C. La matriz de excitación así obtenida es la
representada a continuación:

X1X2
y1y2 00 01 11 10
00 00 00 01 01 Se diferencia de la anterior en que el estado interno siguiente
correspondiente a la entrada 01 y al estado interno 01 es 11
01 -- 11 01 01 en lugar de 10.
11 11 10 01 11
10 00 10 10 11

b) Elevar el número de variables de estado interno por encima del mínimo necesario y
realizar la codificación correcta.

Veámoslo con un ejemplo. Sea el sistema secuencial asíncrono cuya tabla de fases es la
siguiente:

X1X2 00 01 11 10
El diagrama de transición que se deduce para este sistema es:
A 1 3 6 7
A B
B -- 4 2 7
C 5 3 2 8
D 1 4 6 8
D C

Página 90
Sistemas Digitales

De la observación de este diagrama se deduce que es imposible codificar las cuatro líneas
mediante dos variables de estado interno sin que existan transiciones críticas no adyacentes.
Por tanto, será necesario utilizar tres variables de estado interno y crear nuevas líneas que
serán utilizadas para evitar las transiciones no adyacentes. Haremos la siguiente asignación:

000 A B 001

100 D C 010

Con esta asignación pueden ser críticas las transiciones entre B y C, entre B y D, y entre C y
D. Con ella y a partir de la tabla de fases podemos formar la siguiente matriz de excitación:

X1X2
y1 y2 y3 00 01 11 10
000 000 000 100 001
001 --- ___ 001 001
100
010 010 000 ___
001
100 000 100 100 010

En esta tabla nos vamos fijando en cada columna y en sus contiguas para determinar cuales
pueden ser las transiciones críticas a partir de estados estables. Así, se observa que:

1. Si estamos en el estado estable (001) y con el estado de entrada X 1 X 2 = 11 , si este cambia


a X 1 X 2 = 01 , tenemos una transición entre estados internos no adyacentes ya que se pasa
al estado estable (100). Ésta es una transición entre las líneas B y D. Si se pasa del estado
estable 001 al 100 a través del 000, el sistema se queda en dicho estado, ya que se trata de
un estado estable para la entrada X 1 X 2 = 01 ; por tanto, se trata de una transición crítica.
Podemos subsanar esta situación creando un nuevo estado interno adyacente al de partida
(001) y al de llegada (100) que nos conduzca a este último estado. En este caso, el estado
nuevo será el 101, ya que es adyacente a ambos y debe conducir para el mencionado
estado de las entradas al estado 100. Por tanto, añadiremos una nueva línea:

X1X2
y1 y2 y3 00 01 11 10
101 --- 100 --- ---

y sustituiremos en la línea 001 el estado interno 100, correspondiente al estado de entrada


X 1 X 2 = 01 , por el nuevo estado 101.

Página 91
Sistemas Digitales

2. Si nos encontramos en el estado interno estable (010) para la entrada X 1 X 2 = 10 y esta


cambia a X 1 X 2 = 11 , es estado interno debe pasar a ser el 001, lo cual representa una
transición entre estados no adyacentes (entre las líneas C y B). Se trata de una transición
crítica ya que si el estado interno pasa por el intermedio 000, terminaremos finalmente en
el estado estable (100), diferente del (001). Debemos pues introducir un nuevo estado
interno, el 011, que es adyacente a ambos y que debe conducir al estado estable (001).
Añadiremos entonces:

X1X2
y1 y2 y3 00 01 11 10
011 --- --- 001 ---

y sustituiremos el estado 001 en la línea C para la entrada X 1 X 2 = 11 por el nuevo 011.

3. Si estamos en el estado estable (100) para el estado de entrada X 1 X 2 = 11 , y éste cambia


a X 1 X 2 = 10 , el estado interno debe cambiar a 010; por tanto, estamos en el caso de una
transición entre estados no adyacentes (entre las líneas D y C). Se trata de una transición
crítica ya que si del estado 100 se pasa por el 000 para llegar al 010, el sistema vuelve al
estado estable (100). Para evitar esta transición crítica introducimos un nuevo estado, el
110, que es adyacente al de partida 100 y al de llegada 010. Este estado debe conducir al
010, luego añadiremos la línea:
X1X2
y1 y2 y3 00 01 11 10
110 --- --- --- 010

y sustituiremos el estado inestable 010 de la línea D para la entrada X 1 X 2 = 10 por el


nuevo estado 110.

La tabla de excitación final con los nuevos estados es la siguiente:

X1X2
00 01 11 10
y1y2y3
En esta nueva tabla ya no hay transiciones entre
000 000 000 100 001 estados internos no adyacentes. Con ella pueden
deducirse las expresiones lógicas de Y1, Y2, e Y3, en
001 --- 101 001 001 función de X1, X2, y1, y2, e y3.
010 010 000 011 010

100 000 100 100 110

101 --- 100 --- ---


110 --- --- --- 010

011 --- --- 001 ---


Y1Y2Y3
Página 92
Sistemas Digitales

5.4-SÍNTESIS DE SISTEMAS SECUENCIALES ASÍNCRONOS CON BIESTABLES R-S

La realimentación de las variables de estado interno en un sistema secuencial puede ser


realizada mediante elementos biestables. El más utilizado es el biestable R-S. Veamos con un
ejemplo como implementar un sistema asíncrono con estos biestables.

Diseñemos un biestable tipo T (un FF) activado por flancos cuyo diagrama de secuencia es:

Tt

Z
1 2 3 4 1

A partir de aquí las


secuencias se repiten

En dicho diagrama pueden distinguirse cuatro estados con los que construimos la tabla de
fases:

T
t 0 1 Z
A 1 2 0 Como puede verse no hay estados equivalentes ni pseudoequivalentes.
Tampoco puede realizarse la fusión de ninguna línea. Por tanto,
B 3 2 0 nuestro sistema tiene cuatro estados internos que denominaremos
C 3 4 1 respectivamente A, B, C y D según aparece en la tabla de fases. Para
codificarlos usaremos dos bits de estado interno y1 e y2. Para hacer la
D 1 4 1 codificación correcta construimos el diagrama de transición:

00 A B 01

Con esta codificación de estados construiremos las


matrices de excitación y de salida:
10 D C 11

tT Para evitar saltos en la


y1 y2 0 1
salida cuando el sistema
00 00 /0 01/0 pase por estos estados inestables

01 11/* 01 /0

11 11 /1 10/1 Para poder simplificar al máximo


la salida Z
10 00/* 10 /1

Y1Y2/Z
de la matriz de salida obtenemos fácilmente: Z = y1 .

Página 93
Sistemas Digitales

Vemos entonces que el sistema consta de cuatro estados internos codificados a través de dos
bits, y1 e y2. Podemos representar cada uno de esos bits a través de los dos posibles estados del
biestable R-S con lo que necesitaremos un total de dos biestables, uno para representar y1 (que
llamaremos biestable 1) y otro para y2 (que llamaremos biestable 2) (construidos con NOR).

R1 R Z Y1 R2 R Z Y2

S1 S 1 Z Y1 S2 S 2 Z Y2

Para representar las transiciones que existen entre el estado actual y1y2 y el siguiente Y1Y2,
debemos ver qué entrada hay que aplicar a cada uno de los biestables. Para ello, se tendrá en
cuenta la matriz de excitación del biestable R-S:

R S yt+1
0 0 yt
0 1 1 Las entradas R y S serán, en general, funciones de la entrada t y de los bits
1 0 0 de estado interno y1 e y2. Veámoslo con el bit Y1.
1 1 * El diagrama de Karnaugh para Y1 es:

tT
y1 y2 0 1 Puede observarse que hay situaciones en las que:
00 0 0 Posibilidades
según
y1 Y1 el R1-S1
01 1 0
00
0 0 10 *0
11 1 1
0 1 01 01
10 0 1 1 0 10 10
Y1 1 1 00 0*
01

Comparando el valor de y1 en la columna de la izquierda en el diagrama de Karnaugh para


la variable Y1 con el valor de Y1 que obtendríamos para los distintos valores de la entrada T
tenemos todas esas posibilidades. Vemos en las dos columnas de la derecha que
combinaciones de RS nos dan esa misma evolución (la columna de la derecha es lo mismo
pero de forma más compacta). Por ej. en la evolución 00 lo podemos conseguir con RS=00
pues obtenemos el estado anterior (0) o con R=0 que resetea el sistema y se obtiene 0.

Página 94
Sistemas Digitales

Por tanto, con la tabla anterior podemos construir el diagrama de Karnaugh para las entradas
R y S del biestable 1:
t
y1 y2 0 1

00 * 0 * 0

01 0 1 * 0 S1 = t · y2
11 0 * 0 * R1 = t · y 2

10 1 0 0 *

R1 S1
Si ahora hacemos lo mismo para Y2:
t
y1 y2 0 1

00 0 1

01 1 1

11 1 0

10 0 0

Y2

t
Las entradas R2 y S2 que debemos aplicar vendrán y1 y2 0 1
dadas en el siguiente diagrama:
00 * 0 0 1
S2 = t · y1
01 0 * 0 *

11 0 * 1 0
R2 = t · y1
10 * 0 * 0

Resumiendo, hemos obtenido: R2 S2


R1 = t ⋅ y 2
S1 = t ⋅ y 2
R2 = t ⋅ y1
S 2 = t ⋅ y1

Por tanto, el circuito que se obtiene es:

Página 95
Sistemas Digitales

t y1 y2

R1
R Z Y1 = Z
S1 1
S Z Y1

R2
R Z Y2
S2 2
S Z Y2

Figura. 5.4 Biestable tipo T implementado con biestables RS.

si añadimos las realimentaciones:

R2 Y2 S1 Y1 Z
R Z S Z
t R1 Y1
S2 2 Y2 1
S Z R Z

Figura. 5.5 Biestable tipo T implementado con biestables RS (con realimentaciones).

Más adelante veremos que las estructuras del tipo:

R Z
C
S Z

se denominan “cerrojos dinámicos”.

Página 96
Sistemas Digitales

Página 97
Sistemas Digitales

TEMA 6: CERROJOS DINÁMICOS Y FLIP-FLOPS


6.1- CERROJOS O LATCHES
Como ya vimos un biestable es un dispositivo que se puede encontrar en dos estados
estables posibles. Los biestables se pueden clasificar en cerrojos o latches y flip-flops, según
el tipo de entradas que utilicen. En los cerrojos su estado depende normalmente de entradas
asíncronas (R y S). Hasta ahora solo hemos estudiado un tipo de cerrojo, el R-S. En esta
lección veremos otros tipos de cerrojos y otro tipo de biestables, los flip-flops.

6.1.1- CERROJOS DINÁMICOS


En un biestable R-S, las entradas R y S se denominan con frecuencia “entradas de datos”,
ya que la información presente en estos terminales determina lo que se almacena en el
biestable. Muchas veces resulta de utilidad disponer de un mecanismo que nos permita
conectar o aislar el cerrojo (o Latch) de una fuente de datos. Esto se consigue, por ejemplo,
con el siguiente montaje:

R
1
R Z Z
E
S Z Z
2
S

Cuando E = 0 , las puertas 1 y 2 están deshabilitadas (su salida es cero


independientemente del valor que tengan R y S) y el estado del cerrojo lo determina su
historia pasada (mantiene el estado anterior). En esta situación el cerrojo queda aislado de sus
entradas de datos. En cambio, cuando E = 1 , las señales R y S actuarán sobre el cerrojo,
poniéndolo en estado de set o reset según corresponda. Un montaje como el mostrado en la
figura anterior se denomina “cerrojo dinámico”. En contraposición, al biestable sin puertas
de aislamiento se le denomina “cerrojo estático”.

Una aplicación importante del cerrojo dinámico es la indicada en la siguiente figura:


D Línea de datos

S
S Z Z
R
R Z Z

E
Nota: hemos cambiado la posición de R y S en el dibujo.

Este montaje recibe el nombre de “cerrojo tipo D”. En él, una línea portadora de datos
cambia con el tiempo. Esta línea puede pertenecer a un bus de múltiples líneas. A veces
interesa capturar y mantener los datos D (ceros o unos) que circulan por la línea. Para ello

Página 98
Sistemas Digitales

habilitamos el cerrojo poniendo E a uno. En esta situación, puesto que S = D y R = D se


tendrá que Z = D , ya que:

 S = 1
Si D = 1 ⇒   ⇒ el biestable pasa al estado de set ⇒ Z = 1
 R = 0
 S = 0
Si D = 0 ⇒   ⇒ el biestable pasa al estado de reset ⇒ Z = 0
 R = 1

Así, siempre que E = 1, la salida Z del biestable seguirá a la entrada de datos D. Esta
operación se caracteriza diciendo que el cerrojo es “transparente”. Cuando queramos
capturar y mantener los datos, inhabilitamos el cerrojo. La parte estática (biestable R-S)
adoptará un estado que estará determinado por el valor que tuviese D inmediatamente antes de
que se inhabilite el cerrojo dinámico. Para almacenar una palabra que se transmita por un bus
de múltiples líneas se requerirán tantos cerrojos dinámicos como bits tenga la palabra, que se
activarán a través de una línea de habilitación común a todos ellos.

Para ilustrar esta operación del cerrojo transparente, representamos su diagrama de


secuencia para unas determinadas señales D y E:

Z
t

t0 t1 t2 t3 t4 t5 t6

LIMITACIÓN DEL CERROJO DINÁMICO COMO ELEMENTO DE


ALMACENAMIENTO
En electrónica digital es bastante común la transmisión de datos en serie. Ésta se realiza
enviando varios bits de una forma sucesiva a través de un mismo cable o línea. Para ello, cada
bit que se desea enviar debe mantenerse un cierto tiempo en la línea antes de enviar el
siguiente. Por ejemplo, supongamos que enviamos tres bits a través de una línea y queremos
almacenarlos en tres cerrojos dinámicos como los vistos anteriormente. Para mayor claridad
supondremos que los bits enviados están en una secuencia dada por 1 → 0 → 1 y que estos bits
se mantienen en la línea un tiempo t0. La señal habilitadora que reciben los cerrojos será:

Página 99
Sistemas Digitales

t0 2t0 3t0

De este modo, los cerrojos leerán el dato D correctamente. Lo ideal sería poder hacer la
siguiente conexión

Línea de datos
D S3 Z3 S2 Z2 S1 Z1 Z
E E E
R3 Z3 R2 Z2 R1 Z1 Z

y que en el primer pulso de la señal habilitadora el primer dato pase al cerrojo dinámico 3, en
el segundo pulso que pase el segundo dato al cerrojo 3 y el primero al cerrojo 2 y que en el
tercer pulso pase el tercer dato al cerrojo 3, el segundo al cerrojo 2 y el primero al cerrojo 1.
Una vez realizada la operación basta con poner la línea E a cero y los tres bits quedarían
almacenados indefinidamente en los tres cerrojos.

Por desgracia, los cerrojos dinámicos no permiten este tipo de tratamientos. Para ver lo que
ocurre realmente supondremos que inicialmente todos los cerrojos están en estado de reset. En
el primer ciclo de la señal de habilitación, el primer dato, que supusimos igual a uno, se aplica
a las entradas del primer cerrojo. Este dato aparece a la salida Z3 de dicho cerrojo después de
un tiempo tpd (tpropagation delay) correspondiente al retraso de propagación inherente a este primer
cerrojo. Pero como la entrada de set del segundo cerrojo está a uno, y la señal de habilitación
E todavía está activa, después de otro intervalo tpd la salida Z2 pasará también al estado de set.
Algo análogo ocurrirá con el primer cerrojo. Esto puede verse en el siguiente diagrama de
secuencia.

Señal de
habilitación
E

tpd
Z3

tpd

Z2

tpd

Z1

Página 100
Sistemas Digitales

En resumen, después del primer ciclo de habilitación se ha puesto en estado de set los tres
cerrojos, es decir, el dato se ha transmitido hasta el primer cerrojo cuando nuestra intención
inicial era que sólo lo recibiera el cerrojo número 3, y que en sucesivas transiciones de la
señal E el dato fuera propagándose a través de los cerrojos. Una forma de solucionar este
problema sería estrechar los pulsos en la señal E, es decir, conseguir que el nivel de
habilitación se mantenga un tiempo menor que tpd. De este modo, el cerrojo número 2 se
deshabilitaría antes de que la salida Z3 del cerrojo número 3 cambie. En estas condiciones el
dato quedaría retenido en el cerrojo número 3 sin llegar al segundo cerrojo. Sin embargo, esta
solución requiere la generación de pulsos muy delgados cuya anchura es, en principio,
indeterminada, ya que no conocemos a priori los tiempos de propagación de los biestables.

Estos problemas están asociados al hecho de que los cerrojos dinámicos son transparentes,
por tanto, tropezamos con dificultades si en un mismo ciclo de habilitación intentamos leer el
dato previamente almacenado en el cerrojo y escribir de nuevo en él. Por otro lado, cuando
necesitemos un elemento de almacenamiento en el que podamos escribir o del que podamos
leer, pero no las dos cosas en el mismo ciclo de habilitación, el cerrojo es un dispositivo
perfectamente útil.

En la siguiente sección estudiaremos otro tipo de biestables, denominados flip-flops, que


nos permiten evitar estos problemas

6.2- FLIP-FLOPS
Los cerrojos (o Latches) se diferencian de los flip-flops en que el estado de los cerrojos
depende normalmente de entradas asíncronas mientras que el estado de los flip-flops depende
de entradas síncronas, de acuerdo a una señal de reloj o de habilitación. Los flip-flops pueden
ser activos por nivel o por flanco. En los activos por nivel es el nivel o valor de la señal de
habilitación lo que activa el flip-flop. En cambio en los activos por flanco es el flanco de
subida o bajada de la señal de habilitación lo que controla el flip-flop. En estos últimos
solamente se van a leer las entradas en el instante justo en el que se produce el flanco,
mientras que en los activos por nivel se leen las entradas durante todo el tiempo que se
mantenga el nivel de la señal de habilitación que activa el flip-flop.

6.2.1- FLIP-FLOPS ACTIVADOS POR NIVEL: EL FLIP-FLOP MAESTRO-ESCLAVO


Un dispositivo de almacenamiento no transparente es el flip-flop “maestro-esclavo”. Es un
flip-flop activado por nivel, es decir, es el nivel (o valor) de la señal de habilitación lo que
activa el flip-flop. Consta de dos cerrojos dinámicos, uno denominado maestro y otro esclavo,
tal y como puede verse en la figura:

S SM ZM SE ZE Q
EM EE
R RM ZM RE ZE Q

Nota: aunque es un disp. activado por nivel, es en la transición 10 cuando se muestra la salida.
Lo representaremos por:

Página 101
Sistemas Digitales

R Q
E
S Q

Como se puede observar, las señales de habilitación aplicadas al maestro y al esclavo son
complementarias. Cuando la señal E está en alta se habilita el cerrojo maestro y los datos S y
R se graban en dicho cerrojo, al mismo tiempo se deshabilita el cerrojo esclavo para que los
datos no sean transferidos del maestro al esclavo. En cambio, cuando E está en baja, se
habilita el cerrojo esclavo y en él se graba el dato que hubiera en el maestro.
Simultáneamente, el cerrojo maestro se deshabilita aislándose de las entradas de datos. Para
que el funcionamiento del flip-flop sea correcto es necesario que:

a) Cuando E pase de cero a uno, el cerrojo esclavo se deshabilite antes de que se habilite
el maestro para que no sea posible la transferencia de datos a la salida Z.
b) Cuando E pase de uno a cero, el cerrojo maestro debe deshabilitarse antes de que se
habilite el esclavo, para que el dato que estaba en el maestro quede aislado de las
entradas R-S y pueda transferirse al cerrojo esclavo.

Consecuentemente, los niveles de tensión que habilitan y deshabilitan los cerrojos maestro
y esclavo se ajustan para que la secuencia de sucesos sea como la representada en la figura:

“1”

Entrada de datos Transfiere el dato del


Aisla el esclavo al maestro maestro al esclavo
del maestro
Inhabilita la entrada
de datos al maestro
“0”
E

Si el circuito descrito anteriormente para el almacenamiento de tres bits procedentes de una


misma línea hubiese sido realizado con flip-flops maestro-esclavo en lugar de con cerrojos
dinámicos, habríamos obtenido el siguiente diagrama de secuencia suponiendo inicialmente
todos los flip-flops en estado cero y que solo aplicamos un 1 a la entrada:
t1 t2 t3 t4 t5 t6

tpd
Z3

tpd
Z2

tpd
Z1

Página 102
Sistemas Digitales

En el instante t1, el dato D = 1 pasa al cerrojo maestro del flip-flop número 3, y el cerrojo
esclavo de dicho flip-flop se deshabilita. En el instante t2 se deshabilita el maestro y el esclavo
se habilita, tomando el dato que había en el maestro. Después de un tiempo tpd (debido a
retrasos en las puertas) el dato D pasa a la salida Z3 del flip-flop número 3.

En el instante t3, el dato Z 3 = D = 1 pasa al cerrojo maestro del flip-flop número 2 y el


cerrojo esclavo de dicho flip-flop se deshabilita. En el instante t4 se deshabilita el maestro y se
habilita el esclavo tomando el dato que había en el maestro. Después de un tiempo tpd este
dato aparece a la salida Z2 del flip-flop número 2.

Análogamente, después de un tiempo t6+tpd, el dato D que había entrado a través del flip-
flop número 3 aparece en la salida Z1 del flip-flop número 1. Con ello se ha logrado el
objetivo planteado: en cada impulso de la señal E el dato se va propagando de un flip-flop a
otro.

Si añadiéramos flip-flops adicionales tendríamos un circuito que en cada ciclo de la señal


E desplazaría los datos en cascada. Esta disposición se denomina “registro de
desplazamiento” y se trata de una estructura lógica básica muy útil de la que hablaremos más
adelante.
t1 t2 t3 t4 t5 t6

0 1 0 1 0
D

ZM3
1 0 1 (3º)
ZE3 Q3

ZM2

0 1 0
ZE2 Q2

ZM1
0 0 1 (1º)
ZE1 Q1

Figura. 6.1 Flip-Flop RS maestro-esclavo. Transmisión de la secuencia 101.

Señalemos que la respuesta de salida de un flip-flop R-S maestro-esclavo, cuando existe,


ocurre en el flanco negativo de la señal de habilitación E (paso de uno a cero). Aunque el flip-
flop R-S maestro-esclavo es activo por nivel es en el flanco negativo de la señal E cuando se
actualiza la salida. La tabla de verdad para el flip-flop R-S maestro-esclavo es idéntica a la del
biestable R-S, solo que ahora Qn y Qn+1 son respectivamente los valores de la salida Z en los
ciclos de habilitación n y n+1.

Página 103
Sistemas Digitales

R S Qn+1 R Q
0 0 Qn
0 1 1 C
1 0 0 S Q
1 1 *
Indica que el flanco activo
es el de bajada de la señal

ENTRADAS DIRECTAS
Unas veces por conveniencia y otras por necesidad se diseñan los flip-flops para que se
puedan adoptar los estados de set o reset mediante señales de control que no necesitan estar
sincronizadas con la señal de habilitación E. A estas entradas se las denomina “directas” o
“asíncronas”. Un flip-flop maestro-esclavo equipado con terminales directos de set y reset
puede verse en la siguiente figura:
Maestro Esclavo
Rd Sd

C C

Sd Rd
Figura. 6.2 Flip-Flop RS maestro-esclavo con entradas directas.

Nota: circuito en pág. 142 Taub. Rd y Sd no pueden ser cero a la vez.

Estas entradas cuando están activas (en baja) actúan directamente sobre el estado del flip-
flop independientemente de las entradas síncronas R-S y de la señal de habilitación. Pueden
ser de utilidad a la hora de inicializar los flip-flops en un estado determinado. Lo
representaremos por:

Sd

Set directo
R Q
C
S Q
Reset directo

Rd

Página 104
Sistemas Digitales

6.2.1.1- FLIP-FLOP J-K


Hasta ahora hemos evitado la situación R = S = 1 ya que conduce a un estado final
ambiguo en el biestable. Ahora modificaremos nuestro flip-flop para que con R = S = 1 el
flip-flop conmute, es decir, cambie en cada transición activa de la señal de habilitación.
Entonces obedecerá al esquema:

K(R) J(S) Qn+1


0 0 Qn
0 1 1
1 0 0
1 1 Qn
Atención: J equivale a S y K a R

El flip-flop que verifica la anterior tabla de operación se denomina flip-flop J-K. Para ello
basta con montar el circuito:

J 1 S1 Z1 S Z2 Q
C
K 2 R1 Z1 R Z2 Q

MAESTRO ESCLAVO

Esta modificación se realiza para que el gobierno de la señal de habilitación C no lo


determinen únicamente las entradas R y S, sino también el estado del flip-flop. Veamos como
funciona.
a) Si J = K = 0 , las dos puertas 1 y 2 están deshabilitadas y sus salidas son cero
independientemente de la señal C. Por tanto, R1 = S1 = 0 y el flip-flop no cambiará de
estado, Qn +1 = Qn .
b) Si J = 0 y K = 1 , y el flip-flop está en estado de reset, es decir, Q = 0 , en esta
situación la puerta 1 está deshabilitada por ser J = 0 y la 2 también por ser
Q = 0 ( R1 = S1 = 0 ). Por tanto, la señal C no cambiará al flip-flop del estado de reset.
Pero si J = 0 y K = 1 y el flip-flop está en estado de set, Q = 1 , la puerta 2 está
habilitada ( R1 = 1 ) y la transición en la señal C provoca que el flip-flop pase al estado
de reset con Q = 0 .
c) Si J = 1 y K = 0 , análogamente a lo visto en b), la señal C llevará al flip-flop al
estado de set si previamente no estaba en él.
d) Si J = 1 y K = 1 , en este caso una sola de las puertas de entrada estará habilitada
dependiendo de cuales sean las salidas Qn y Qn , es decir, del estado del flip-flop :
1. Si Qn=0, entonces se habilita la puerta 1 y se deshabilita la 2, y la señal C
llevará al flip-flop al estado de set, ya que S1 = 1 y R1 = 0 ⇒ Qn +1 = 1 .
2. Si Qn=1, se habilita la puerta 2 y se deshabilita la 1, y la señal C llevará al flip-
flop al estado de reset, ya que S1 = 0 y R1 = 1 ⇒ Qn +1 = 0 .

Página 105
Sistemas Digitales

Por tanto, en ambos casos, Qn +1 = Qn si J = 1 y K = 1 , es decir, el estado del flip-


flop conmuta en cada ciclo de la señal C, tal y como se deseaba. Con ello hemos
aumentado las posibilidades del flip-flop R-S maestro-esclavo.

6.2.1.2- EL FLIP-FLOP T DE CONMUTACIÓN


Un flip-flop con una entrada de control que conmute cuando dicha entrada esté activa y no
responda cuando esté sin activar se denomina flip-flop de conmutación T (Toggle). Éste
puede construirse uniendo los terminales J y K de un flip-flop J-K en uno común T de control.
El flip-flop conmuta cuando T = 1 .

T J Q Q
T Qn+1
0 Qn C C
1 Qn K Q Q

Nota: el FF T siempre se construye a partir del FF JK, pues este es el único que permite que J=K. En un RS no
sería posible.
6.2.1.3- EL FLIP-FLOP TIPO D
Partiendo de flip-flops R-S maestro esclavo podemos obtener un flip-flop tipo D. Basta con
hacer la conexión:

El símbolo lógico de este flip-flop es:


D S Q Q
C C Q
D D Q
FLIP-FLOP
R Q Q D Q
C C Q

En respuesta a la transición negativa de la señal C, el nivel lógico de la entrada de datos D


se grabará en el flip-flop y aparecerá en la salida Q. Como veremos más adelante, en muchos
sistemas digitales (síncronos) los datos presentados a un flip-flop están sincronizados con la
señal de habilitación C que a menudo se denomina “señal de reloj”. En este caso, los datos de
entrada en cualquier terminal de entrada de un flip-flop cambian sólo una vez en cada ciclo de
reloj, es decir, cambian una vez o ninguna. Además, los cambios de datos, cuando suceden, se
cronometran para que ocurran muy poco después de las transiciones de disparo del reloj, poco
tiempo después de haber alcanzado el nivel activo de la señal de reloj. Veamos, por ejemplo,
un diagrama de secuencia relativo a la operación del flip-flop tipo D maestro esclavo en estas
condiciones:
Transiciones de disparo: el dato pasa del maestro al esclavo

C (Reloj)

Página 106
Sistemas Digitales

Como puede observarse en el anterior diagrama, la señal Q coincide con la D salvo por un
retraso igual a un período de la señal de reloj: la señal Q está retrasada respecto de la D un
período de reloj.

Existe un montaje alternativo para el flip-flop tipo D más económico que el esquema
maestro-esclavo y que aparece representado en la siguiente figura:

Sd

Rd
Figura. 6.3 Flip-Flop tipo D con entradas directas.

Nota: circ. en pág. 154 Taub, con R, S directas añadidas.

Consta de tres cerrojos R-S y de entradas directas de set y reset activas en baja (su
funcionamiento aparece especificado en la página 154 del Taub). Cuando C hace una
transición positiva de cero a uno, Q se hará cero si D estaba a cero y se hará uno si D estaba a
uno. Cambios sucesivos en D mientras C esté a uno no afectan a la salida Q. Ésta se
mantendrá cuando C vuelva a cero. Por tanto, se trata de un flip-flop tipo D cuyo disparo tiene
lugar en la transición positiva de la señal de reloj (a diferencia del FF tipo D basado en el RS
MS, que era en la transición negativa).

Actualmente, de todos los tipos de flip-flops TTL existentes, el de la figura anterior es de


los más utilizados en sistemas síncronos, a pesar de no ser tan versátil como el J-K (ya que no
dispone de respuestas correspondientes a J = K = 0 y J = K = 1 ). Sin embargo, este
problema puede solucionarse fácilmente con lógica adicional. Así, para lograr que el flip-flop
permanezca en su estado actual necesitamos solamente conectar D y Q, y para hacer que el
flip-flop cambie, necesitamos conectar D y Q . En conjunto, si queremos modificar nuestro
tipo D a J-K únicamente necesitamos puertas que generen D = J ⋅ Q + K ⋅ Q , tal y como
indica la siguiente figura:

Página 107
Sistemas Digitales

D Q Q
FLIP-FLOP
J D
C C Q Q

Para deducir lo anterior construiremos la matriz de excitación del circuito que deseamos
implementar:
JK
Qn 00 01 11 10
Estado actual
0 0 0 1 1
0 2 6 4

1 1 0 0 1
1 3 7 5
Entrada de datos para
el estado siguiente Dn+1

por tanto : Dn +1 = J ⋅ Q n + K ⋅ Qn .

6.2.1.4- LIMITACIONES DEL FLIP-FLOP MAESTRO ESCLAVO


El flip-flop maestro-esclavo, cuando se utiliza como R-S o J-K presenta un grave
inconveniente que se pone de manifiesto en la siguiente figura:

t1 t2

C J Q
C
J (o S) Q
K

K (o R)

Q
t
Como hemos visto en apartados anteriores, el cerrojo maestro se conecta a los terminales
de datos cuando el reloj está en nivel alto, y la respuesta de salida, si la hay, ocurre en la
transición de la señal C del nivel alto al bajo, en los instantes t1 y t2. Después del primer pulso
de la señal C todo parece estar en orden: Q = 0 y como también J = K = 0 no se producirá
cambio en Q en el instante t1. Sin embargo, durante el segundo pulso en C , en el instante t2,
nuevamente J = K = 0 , pero nos encontramos que Q = 1 . La razón de este comportamiento

Página 108
Sistemas Digitales

se debe a que cuando C está en nivel alto, J estuvo en uno brevemente (debido, por ejemplo,
a un ruido o un fenómeno aleatorio). Como resultado el cerrojo maestro se puso en set.
Cuando J volvió a valer cero, el cerrojo maestro permaneció en set (J=K=0 Qn+1=Qn). En t2 el
bit almacenado en el maestro se transfirió al esclavo y, por consiguiente, Q adoptó el valor
uno.

Algo similar hubiera ocurrido en el caso de considerar un pequeño pulso en K durante el


tiempo en que C vale uno. La salida pasaría a cero si no estaba ya en ese valor. El mismo
comportamiento se daría en el flip-flop R-S maestro-esclavo.

Por tanto, la respuesta del flip-flop la determina la última entrada que adopte el uno lógico
mientras las puertas de entrada al maestro estén habilitadas. Esta característica se conoce
como la “propiedad de captar 1 del flip-flop” y es a veces inaceptable, ya que el flip-flop es
muy susceptible a los fenómenos aleatorios y al ruido. Para solucionar este problema se
utilizan los flip-flops activados por flancos, que veremos en el siguiente apartado.

En el flip-flop tipo D que vimos anteriormente el problema de captar unos inherente a la


configuración maestro-esclavo se evita, ya que nunca puede darse la situación R = S = 0
(siempre o R o S valen 1).

6.2.2- FLIP-FLOPS ACTIVADOS POR FLANCOS

EL FLIP-FLOP J-K ACTIVADO POR FLANCO


Vimos que el flip-flop maestro-esclavo presenta el problema de captar unos. Este problema
puede resolverse diseñando un flip-flop activado por flancos en el que la salida sea una
respuesta al dato de entrada presente inmediatamente antes de la transición de disparo de la
señal de habilitación. Es decir es indiferente los valores que la señal de entrada haya tomado
anteriormente. Solo se tomará el valor de la señal de entrada presente en el instante en que se
produzca el flanco activo de la señal de reloj (de bajada o de subida). La activación por flanco
se indica mediante un triángulo en la entrada de la señal de reloj. Este es el caso del flip-flop
cuyo símbolo lógico está representado debajo y que corresponde al integrado ‘112 cuyo
esquema es el siguiente:

Sd

J Q
C
K Q

Rd

Página 109
Sistemas Digitales

Sd
Q

Q
Rd

Figura. 6.4 Flip-Flop J-K activado por flanco de bajada.

Nota: circuito en pág. 150 del Taub.


Se trata de un flip-flop activado por flancos en el que la transición de disparo se produce
en el flanco de bajada de la señal.

6.3- TIEMPOS DE ESTABLECIMIENTO, MANTENIMIENTO Y PROPAGACIÓN


A menudo, los fabricantes especifican el tiempo de respuesta de un flip-flop al dato de
entrada y a la señal de reloj, como se indica en la figura de la página siguiente. Las señales
mostradas representan varias transiciones entre niveles lógicos. Como ocurre en realidad, las
transiciones se indican considerando que se necesita un tiempo finito para subir o bajar de un
nivel a otro. Sin embargo, aun visualizadas, las transiciones están muy idealizadas, se
muestran como subidas o bajadas lineales con el tiempo. Realmente, las señales de las
transiciones en sistemas digitales pueden ser bastante complicadas. Unas veces algunos
niveles lógicos pueden aproximarse asintóticamente; otras en las proximidades de algunos de
los niveles puede haber oscilaciones cerca de la transición. Y generalmente habrá algún
retardo antes de que una señal haga cualquier pequeña excursión en la dirección de avance.
Por todas estas razones, en lugar de especificar el tiempo de transición entre un nivel y el
siguiente, es más conveniente especificar el tiempo que dura la transición desde el 10% al
90% del intervalo total entre niveles. Como se ha señalado en el diagrama de tiempos de la
señal de reloj, este tiempo de transición será tr(rise). Análogamente se define un tiempo de
bajada tf(fall), como el tiempo de transición entre el 90 y el 10% del intervalo entre niveles.

Las señales mostradas se aplican a flip-flops tipo D, cuya transición de disparo suponemos
que se realiza en la transición positiva de la señal de reloj, del cero al uno lógico. Esta
transición se indica en la figura (a) y en la figura (b) se representa una transición del cero al
uno lógico del dato de entrada D.

Página 110
Sistemas Digitales

Las relaciones entre las señales de las figuras (a) y (b) se entienden si se indica que la
transición en D debe preceder a la transición de disparo de reloj un tiempo denominado
“tiempo de establecimiento tsetup”. Si el flip-flop reconoce y responde propiamente a la
nueva entrada de dato D, con certeza el cambio en D debe preceder al flanco de reloj un
intervalo de tiempo no inferior a tsetup. La figura (c) representa una transición de D de 1 a 0.
Las relaciones entre las figuras (a) y (c) se proponen para indicar que si el cambio en D se
reconoce sin fallo, el nivel D debe mantenerse como mínimo durante un tiempo thold (tiempo
de mantenimiento) después del flanco de reloj. En conjunto si el flip-flop responde al
cambio en D, este debe ocurrir como mínimo en el instante tsetup anterior al flanco de reloj y
después de él debe persistir como mínimo un tiempo thold. Finalmente señalamos que los

Página 111
Sistemas Digitales

instantes en que transcurren las transiciones se toman normalmente cuando la transición está
en la mitad de los dos niveles lógicos (50%).

Las relaciones entre el flanco de reloj y la señal de salida en las figuras (d) y (e) indican que
si el requerimiento con respecto a los tiempos de establecimiento y mantenimiento se cumple,
habrá un retardo de propagación tpd (propagation delay) entre el flanco de reloj y la respuesta
en las salidas, Q y Q , del flip-flop. El retardo de la salida que cambia del nivel bajo al alto es
tpd,LH (low-high), y el otro tpd,HL (high-low). Notar que estos dos tiempos no tienen por qué
coincidir. De hecho, generalmente se encuentra que los tiempos de setup y hold son
ligeramente diferentes, dependiendo de que la transición del dato de entrada sea positiva o
negativa.

Los fabricantes dan información de estos tiempos en relación no sólo con las entradas de
datos, sino también con las entradas de set y reset si están disponibles. En cualquier
circunstancia, para que la información se comprenda, el fabricante explicará detalladamente
las condiciones bajo las cuales se tomaron los datos. Las anchuras de transición de los flancos
de reloj y la entrada de datos se darán también con las cargas conectadas a las salidas del flip-
flop. Esas cargas se confeccionan para que representen la carga vista por el flip-flop cuando
posea un número razonable de puertas conectadas a su salida. A menudo es bastante útil
olvidar toda la información detallada referente a los tiempos y disponer de algunos
parámetros que den información sobre la velocidad de operación del flip-flop. Para este
propósito, los fabricantes especifican una frecuencia de reloj máxima fmax de operación del
flip-flop: fmax es la máxima frecuencia a la que se puede hacer conmutar el flip-flop.

En la lógica rápida disponible, los tiempos de setup, hold y los retardos de propagación
están comprendidos entre los nanosegundos y decenas de nanosegundos, mientras que las
frecuencias máximas de operación están en el rango de los 150 MHz.

Página 112
Sistemas Digitales

TEMA 7: CIRCUITOS SECUENCIALES SÍNCRONOS


En el tema 5 vimos que la estructura general de un sistema secuencial asíncrono era:

x1 x1
x2 x2
z1
xn xn
z2
y1 Y1
(1) (2)
y2 Y2 zp

ym Ym

Figura. 5.1 Autómata de Mealy.

Se trata de un autómata de Mealy con n variables de entrada (x1, x2, ..., xn), m bits de
estado interno (y1, y2, ..., ym) y p salidas (z1, z2, ..., zp). El sistema combinacional (1) nos
proporciona, a partir de las entradas actuales (x1, x2, ..., xn) y el estado interno actual (y1, y2, ...,
ym) el estado interno siguiente (Y1, Y2, ..., Ym). El sistema combinacional (2) nos relaciona las
salidas con las entradas y las variables de estado interno. En los autómatas asíncronos, las
variables de estado interno se realimentan directamente. El sistema irá evolucionando a través
de una sucesión de estados internos inestables hasta que, para una cierta combinación de
entradas, el estado actual y el siguiente coincidan dando lugar a un estado interno estable.
Esta evolución es posible gracias al retardo de propagación producido por el sistema
combinacional (1).

Vimos que en la codificación de los estados internos había que evitar transiciones entre
estados no adyacentes, ya que podían dar lugar a problemas de carreras críticas. Además, el
diseño debía realizarse eliminando posibles fenómenos aleatorios. Ambas limitaciones, o
inconvenientes, de los circuitos asíncronos son debidos a la realimentación directa de las
variables de estado interno; si por causa de transiciones críticas o por fenómenos aleatorios
algún bit de estado interno cambia a un nivel inesperado, se realimenta directamente en el
sistema asíncrono, haciendo que éste evolucione de una manera impredecible.

Tanto el problema de carreras críticas como el de fenómenos aleatorios están asociados a


los retrasos de propagación en las puertas que constituyen el sistema combinacional (1). Si
eliminamos la realimentación durante un período de tiempo suficiente, las variables del estado
interno siguiente (Y1, Y2, ..., Ym) serán las correspondientes al conjunto de entradas (x1, x2, ...,
xn) y de variables de estado (y1, y2, ..., ym) actuales, independientemente de los fenómenos
aleatorios y de las carreras críticas. Por tanto, si dispusiéramos de un dispositivo que retuviera
las variables de estado interno siguiente (Y1, Y2, ..., Ym) un tiempo suficiente para alcanzar sus
valores correctos antes de realimentarlas, podríamos hacer el diseño de nuestros sistemas
secuenciales sin necesidad de tener que evitar carreras críticas ni fenómenos aleatorios.

Página 113
Sistemas Digitales

En el tema anterior hemos estudiado un dispositivo que presentaba las anteriores


características, el flip-flop tipo D. Veamos que ocurre si reconstruimos nuestro sistema
secuencial introduciendo flip-flops tipo D en las líneas de realimentación:

x1 x1
x2 x2
z1
xn xn
z2
y1 Y1
(1) (2)
y2 Y2 zp

ym Ym

Qm FF Dm
C

Q2 FF D2
C

Q1 FF D1
C
C
Figura. 7.1 Autómata de Mealy con realimentación con FF tipo D.

Supondremos que los flip-flops tienen su transición de disparo en el flanco positivo de la


señal de reloj. Con el montaje anterior, las variables de estado siguiente (Y1, Y2, ..., Ym) sólo
pasarán a las entradas cuando la señal de reloj realice una transición positiva (paso de cero a
uno). El resto del tiempo, igual al período de la señal C, las variables de estado interno (Y1, Y2,
..., Ym) son retenidas por los flip-flops. Bastará con elegir un período para la señal C mayor
que los retrasos de propagación asociados al sistema combinacional (1); de este modo, las
variables del estado interno siguiente (Y1, Y2, ..., Ym) tendrán tiempo suficiente para alcanzar
sus valores correctos antes de ser realimentadas.

De esta forma, aunque las entradas (x1, x2, ..., xn) cambien en un instante determinado,
dicho cambio no afecta al estado interno hasta que se aplica el impulso de sincronismo a las
entradas C de los flip-flops, es decir, los cambios de estado interno están sincronizados con
los impulsos del generador. Por ello, a los sistemas secuenciales de este tipo se les denomina
“sistemas síncronos”.

El diseño de un sistema síncrono se puede hacer entonces de la misma forma que el


asíncrono introduciendo flip-flops tipo D en la realimentación. De forma análoga podemos
realizar el diseño utilizando flip-flops R-S (o J-K) al igual que hacíamos con los asíncronos
utilizando latches R-S. Ahora contaremos con la ventaja de que en el diseño no hace falta
considerar transiciones críticas ni fenómenos aleatorios, siempre y cuando el período de la
señal de reloj sea el adecuado, es decir, mayor que los retrasos de propagación en el sistema
combinacional (1).

Página 114
Sistemas Digitales

SISTEMAS SÍNCRONOS DE INTERÉS ESPECIAL

7.1- Registros.
Ya hemos señalado que un latch o un flip-flop pueden almacenar un bit, es decir, registrar
un bit. Un array de estos dispositivos es entonces un registro en el que podemos escribir una
palabra y del que podemos leer la palabra almacenada cuando convenga.

Si nos proponemos leer una palabra de un registro y también transferir otra palabra a dicho
registro durante el mismo ciclo de reloj, necesitaremos flip-flops (los latches son
transparentes, transmiten la entrada a la salida). Si no, nos basta con usar cerrojos. Este es el
caso del registro octal integrado ‘373. Su diagrama lógico es: (el 173 en fotocopias, con 4 entradas)

Se trata de ocho cerrojos dinámicos tipo D, cada


D0 D1 D2 D4 D5 D6 D7 uno de ellos tiene accesible su entrada Dn y su
salida Qn. Todos ellos se hacen transparentes
LE cuando LE = 1 (entrada de habilitación común a
OE todos ellos) y se aíslan de sus entradas si LE = 0 .
Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 Además es un chip cuyas salidas poseen tres
estados. Para que en las salidas aparezcan los datos
almacenados en los cerrojos hay que poner OE a
cero (Output Enable). Si OE = 1 las salidas están en alta impedancia (el bus queda aislado de
los registros). Este hecho nos va a permitir conectar este registro a un bus de datos:
Bus de 8 líneas

R W

OE LE
D0 Q0
D1 Q1
D2 Q2
D3 Q3
D4 Q4
D5 Q5
D6 Q6
D7 Q7

Figura. 7.2 Registro 373 conectado a un bus de datos.

Página 115
Sistemas Digitales

Tendremos dos terminales de operación, W (write) y R (read), con los que queremos poder
realizar las siguientes operaciones:

Escribir en el registro el Deshabilitar salidas: OE = 1


contenido del bus: W = 1 R = 0 Activar cerrojos: LE = 1
Leer el contenido del registro y Habilitar salidas: OE = 0
ponerlo en el bus: W = 0 R = 1 Desconectar cerrojos de sus entradas de datos:
LE = 0
Mantener el dato en el registro: Deshabilitar salidas: OE = 1
W=0 R =0 Desconectar cerrojos de sus entradas de datos:
LE = 0

Por tanto habrá que implementar:


OE = R LE = W
W W
OE R 0 1 R 0 1
W R LE
0 0 1 0
0 1 1 0 0 1
0 1 0 0 0 2 0 2

1 0 1 1
1 1 * * 1 0 * 1 0 *
1 3 1 3

OE LE
La operación correspondiente a R = W = 1 no tiene sentido ya que, como estamos
manejando cerrojos dinámicos y no flip-flops, es absurdo escribir y leer a la vez. Este tipo de
dispositivos se denominan “memorias auxiliares” o “buffers” y en ellos la entrada de datos
y la salida se realiza en paralelo (la información entra o sale de todos los biestables
simultáneamente) y su principal aplicación es el almacenamiento temporal de una
información binaria.

Veamos como realizar un montaje que permite transferir datos entre dos registros
construidos por flip-flops a través de un bus. Por simplicidad consideraremos registros de
cuatro bits; por supuesto, el montaje es generalizable a un número mayor de bits:

Bus

RA Bus RB Bus

Q Q Q Q Q Q Q Q
Clear RA Clear RB
Rd A
RA0 RA1 RA2 RA3 Rd B
RB0 RB1 RB2 RB3
C D C D C D C D C D C D C D C D
Clock

Bus RA Bus RB

Bus

Figura. 7.3 Conexión de dos registros a un bus de datos.

Página 116
Sistemas Digitales

Este montaje tiene varios terminales de control:


a) RdA y RdB: representan las entradas de reset directas de los registros A y B,
respectivamente. Se trata de entradas asíncronas, es decir, cuando se activan
independientemente de la señal de reloj borran el contenido de los registros.
b) Bus → RA y Bus → RB : cuando se ponen a uno estos terminales, al producirse una
transición activa en el reloj C, los datos que hay en el bus pasan al registro que
corresponda.
c) RA → Bus y RB → Bus : cuando ponemos estos terminales a uno, al producirse una
transición activa en el reloj C, los datos que hay en el registro que corresponda pasan
al bus. Cuando están a cero deshabilitan las puertas AND llevándolas a su tercer
estado de alta impedancia (el bus queda aislado de los registros). Evidentemente,
ambas líneas no pueden estar en alta a la vez (escribiríamos a la vez dos datos distintos en el
mismo bus).

Actuando sobre estas líneas y sobre la señal de reloj podremos realizar las siguientes
operaciones:
a) Paso de una palabra de cuatro bits del bus a uno de los registros o a los dos a la vez.
b) Borrado de los registros.
c) Paso de una palabra de cuatro bits almacenada en un registro al bus.
d) Paso del contenido de un registro al otro realizando primero la operación (c) y luego la
(a).

7.2- Registros de desplazamiento.


Un registro de desplazamiento es un sistema secuencial formado por flip-flops
sincronizados e interconectados entre sí, uniendo las salidas del primer flip-flop a las entradas
sincronizadas (D) del segundo y así sucesivamente. Además se unen también entre sí las
entradas de reloj de todos ellos. Al aplicar un impulso a esta conexión común se introduce en
el primer flip-flop del registro la información presente en las entradas sincronizadas, la que
había en el primer biestable se desplaza al segundo y así sucesivamente. Según la forma de
interconectar los flip-flops del registro, éste puede ser de desplazamiento hacia la derecha o
hacia la izquierda, o bien reversible si, mediante una señal de control externa, se puede
seleccionar el sentido de desplazamiento. En las siguientes figuras aparecen dos registros de
desplazamiento de cuatro bits, el primero constituido por flip-flops J-K y el segundo por flip-
flops tipo D:

Figura. 7.4 Registro de desplazamiento construido con FF J-K.

Página 117
Sistemas Digitales

Entradas en paralelo asíncronas

S0 R0 S1 R1 S2 R2 S3 R3

Entrada serie
D D0 Q0 D1 Q1 D2 Q2 D3 Q3
C0 FF0 C1 FF1 C2 FF2 C3 FF3

C
Q0 Q1 Q2 Q3

Salidas en paralelo
Figura. 7.5 Registro de desplazamiento construido con FF D.

Incluso puede conectarse la salida del último flip-flop a la entrada del primero; en ese caso
tendremos un “registro de desplazamiento cíclico”.

Los terminales de este último registro de desplazamiento son:


a) Entrada serie síncrona (D): está constituida por la entrada sincronizada del primer
biestable.
b) Entradas en paralelo asíncronas (reset y set directos) (R0, S0, R1, S1, R2, S2, R3, S3):
permiten poner todos los flip-flops del registro en un estado determinado. Las entradas
en paralelo asíncronas actúan sobre todos los flip-flops independientemente del estado
lógico de la entrada de impulso y del resto de las entradas sincronizadas. Estas
entradas en paralelo pueden también ser síncronas. En este caso actúan sobre el estado
de los flip-flops cuando se produce un impulso de sincronización. Una señal de control
permitirá seleccionar entre el desplazamiento de la información o la entrada en
paralelo de la misma procedente de las entradas externas.
c) Salida serie (Q3): está constituida por la salida del último flip-flop del registro.
d) Salidas en paralelo (Q0, Q1, Q2, Q3): son todas las salidas de los flip-flops que forman
el registro.

Entre las múltiples aplicaciones de los registros de desplazamiento destacaremos las


siguientes:

a) Conversión de datos serie a paralelo:


La información se introduce en el registro a través de su entrada serie en sincronismo
con la señal de reloj y se obtiene en paralelo por medio de salidas en paralelo:

Datos en serie
D Registro de desplazamiento
de n bits

Clock
C
Q1 Q2 Qn

Información en paralelo

Página 118
Sistemas Digitales

Si queremos capturar n bits que circulan en serie por la línea D en sincronismo con la
señal de reloj C, bastará con utilizar un registro de desplazamiento de n flip-flops.
Después de n pulsos de reloj, los bits estarán almacenados en el registro y disponibles
mediante las salidas en paralelo Q1, Q2, Q3,..., Qn.

b) Conversión de datos paralelo a serie:


La información en paralelo (que puede estar contenida, por ejemplo, en un registro) se
introduce en un registro de desplazamiento a través de sus entradas en paralelo.
Aplicando impulsos en la señal de reloj, los datos van obteniéndose en serie a través de la
salida serie:

Registro paralelo
D1 D2 Dn

S1 R1 S2 R2 Sn R n
Clock Salida serie
C Registro de desplazamiento
de n bits

c) Construcción de contadores: se verá en el apartado siguiente.

d) Construcción de sistemas secuenciales síncronos (detector de secuencias).

7.3- Contadores
Un contador es un sistema secuencial que progresa de estado en estado en respuesta a un
suceso. Este suceso puede ser, por ejemplo, un ciclo de una señal de reloj. El contador cuenta
el número de sucesos. El número de estados que atraviesa el contador antes de volver al
estado inicial se denomina “módulo” (abreviadamente “mod”) del contador. Un contador
construido con n flip-flops tendrá, como máximo, 2n estados internos.

7.3.1- Construcción de un contador de módulo arbitrario


Para construir un contador de módulo arbitrario necesitamos un número de flip-flops
suficiente para obtener un número de estados igual o mayor que el módulo. Así, supongamos
que queremos un contador de módulo 5, 6 o 7. Dos flip-flops serían inadecuados ya que
permitirían cuatro estados. Sin embargo, tres flip-flops serían suficientes ya que suministran
23 = 8 estados. En general, para módulo n se necesitan m biestables tales que 2 m −1 < n ≤ 2 m .
A continuación decidimos (en muchos casos sobre una base completamente arbitraria) cuáles
de los posibles estados del contador eludiremos y, finalmente, decidimos (de nuevo
arbitrariamente) el orden en que el contador pasa por los estados no eludidos. Por último,
utilizamos lógica combinacional para lograr que el contador pase por los estados previstos.
Para ilustrar el procedimiento de diseño de estos contadores veremos el diseño de un contador
de módulo 6.

Para tener un contador de módulo 6 necesitaremos 3 flip-flops, ya que


2 < 6 ≤ 2 3 = 8 . En total tenemos ocho posibles estados:
2

Página 119
Sistemas Digitales

Estado Q2 Q1 Q0
Y0 0 0 0
Y1 0 0 1 Tomaremos los seis primeros estados, de Y0 a Y5. Así, en
Y2 0 1 0 las salidas tendremos el código en binario del número de orden del
Y3 0 1 1 impulso que llegue por la señal de reloj.
Y4 1 0 0
Y5 1 0 1 La tabla de transición del contador será:
Y6 1 1 0
Y7 1 1 1

Estado actual Estado siguiente Excitaciones


n +1
Q n2 Q 1n Q 0n Q n2 +1 Q 1n +1 Q 0 J2 K2 J1 K1 J0 K0
Y0 0 0 0 Y1 0 0 1 0 * 0 * 1 *
Y1 0 0 1 Y2 0 1 0 0 * 1 * * 1
Y2 0 1 0 Y3 0 1 1 0 * * 0 1 *
Y3 0 1 1 Y4 1 0 0 1 * * 1 * 1
Y4 1 0 0 Y5 1 0 1 * 0 0 * 1 *
Y5 1 0 1 Y0 0 0 0 * 1 0 * * 1
Y6 1 1 0 Y* * * * * * * * * *
Y7 1 1 1 Y* * * * * * * * * *

Observando como cambian los bits de estado interno entre el estado actual y el estado
siguiente podemos deducir las tablas de excitación de los flip-flops que implementarán los
bits de estado interno. Por ejemplo, si queremos usar flip-flops J-K activados por flanco habrá
que tener en cuenta que:

J K Q n +1 Qn → Q n +1 J K

n
0 0 Q 0 0 0 *
0 1 0 0 → 1 1 *
1 0 1 1 → 0 * 1
1 1 Q n
1 → 1 * 0

Por tanto, construiremos los diagramas de Karnaugh para las entradas de los tres flip-flops
J-K (los estados Y6 e Y7 no los consideramos, asociamos **):

Q2Q1 Q2Q1 Q2Q1


Q0 00 01 11 10 Q0 00 01 11 10 Q0 00 01 11 10

0 0* 0* * *6 * 0 4 0 0* * 02 * * 6 0 *4 0 1* 1* ** 1*
0 2 0 0 6
2 4

1 0* 1* ** * 15 1 1* * 13 * * 0* 1 *11 * 13 * * *1
1 3 7 1 7 5 7 5

J2 K2 J1 K1 J0 K0
J2 = Q1·Q0 K2 = Q0 J1 = Q2·Q0 K1 = Q0 J0 = K 0 = 1

Página 120
Sistemas Digitales

El circuito es por tanto:


“1”

Q2 Q1 Q0
J2 Q2 J1 Q1 J0 Q0
CLK CLK CLK
K2 FF2
Rd2 Q2 K1 FF1
Rd1 Q1 K0 FF0 Q0
Rd0
C

Este contador irá incrementando la cuenta según lleguen pulsos por el terminal de reloj. En
las salidas Q2Q1Q0 obtenemos el número en binario del pulso que llega por la línea C.
Podemos decodificar esta información llevándola a un decodificador ‘138.

En este contador no hemos utilizado las combinaciones binarias de estado interno


Y6 = 110 e Y7 = 111 . En un contador de módulo mayor, el número de estados sin usar puede
ser bastante grande. Por ejemplo, en un contador mod. 33 necesitaríamos 6 flip-flops, ya que
32 = 25 > 33 ≤ 26 = 64 , de los cuales sólo usaríamos 33 estados dejando 31 sin utilizar. Puede
ocurrir, por casualidad, que el contador se encuentre en un estado no utilizado o no permitido.
Por ejemplo, el contador podría ser conducido a este estado por un impulso de ruido
(introducción de una señal eléctrica aleatoria) o podría ponerse inicialmente en ese estado
cuando se le suministre potencia. En el diseño anterior, y con el fin de minimizar la lógica que
debe añadirse a los flip-flops, hemos pretendido que no tuviera importancia lo que ocurriera
cuando el contador se encontrase en un estado no permitido (asignando asteriscos en el
diagrama de Karnaugh). Si el contador evolucionara de un estado no permitido a uno
permitido, bien directamente o mediante una secuencia de estados no permitidos, evitaríamos
este problema: una vez alcanzado el estado permitido el contador recorrerá su secuencia de
estados de modo normal. El tiempo necesario para esta vuelta a una secuencia normal podría
considerarse como un tiempo de recuperación o como una inevitable respuesta al ruido, a
partir de la cual se logra una vuelta a la normalidad. Todavía existe la posibilidad de que
habiendo caído en un estado no permitido el contador recorra permanentemente una secuencia
de estados no permitidos. Esta situación se denomina “bloqueo” y, por supuesto, debe ser
evitada.
En general el bloqueo puede producirse en cualquier sistema secuencial en el que no se
utilicen todas las posibles combinaciones de bits de estado interno. En cada caso será
necesario analizar cada estado no permitido para estar seguro de que no conducen a
situaciones de bloqueo. Para evitar este problema caben dos soluciones posibles:

a) Hacer relevantes los términos irrelevantes de tal forma que conduzcan a estados
permitidos. Por ejemplo, en el contador que hemos diseñado podemos añadir dos nuevas
filas a la tabla de transiciones correspondientes a los estados irrelevantes:

Estado actual Estado siguiente


n +1
Q n2 Q 1n Q 0n Q n2 +1 Q 1n +1 Q 0
Y6 1 1 0 Y0 0 0 0
Y7 1 1 1 Y0 0 0 0

Página 121
Sistemas Digitales

De este modo, si el contador se inicializa accidentalmente en uno de estos dos estados,


en el siguiente pulso de reloj el contador pasará al estado Y0 = 000, desde el cual iniciará
su secuencia normal de conteo.
b) Inicializar el sistema en un estado permitido mediante las entradas en paralelo. Esta
solución permite asignar asteriscos a los estados irrelevantes y así favorecer la
simplificación de los circuitos combinacionales. En el contador que diseñamos
anteriormente se sitúa un conmutador para inicializar el sistema en el estado Y0 = 000 a
través de las entradas asíncronas directas de los flip-flops:
“1”

Q2 Q1 Q0
“0” “1” J2 FF2 Q2 J1 FF1 Q1 J0 FF0 Q0
CLK CLK CLK
K2 R Q2 K1 R Q1 K0 R Q0
d2 d1 d0
Clock
R

Al situar el conmutador en la posición “0” las entradas asíncronas de reset activas en


baja pondrán a cero los flip-flops. Si situamos el conmutador en la posición “1”, el
condensador se cargara con el voltaje del “1” lógico, las entradas asíncronas quedarán
desactivadas y el contador comenzará a funcionar a partir del estado Y0 = 000.

7.3.2- Construcción de contadores como registros de desplazamiento


Veamos ahora una serie de contadores cuyo funcionamiento se basa en los registros de
desplazamiento.

7.3.2.1- Contador de anillo


Consideremos el siguiente circuito:

0 1 2 3

D0 Q0 D1 Q1 D2 Q2 D3 Q3
C0 FF0 C1 FF1 C2 FF2 C3 FF3
Sd0 Rd0 Sd1 Rd1 Sd2 Rd2 Sd3 Rd3
Clock

“1” “1” “1” “1”


Inicialización
Figura. 7.6 Contador de anillo.

Se trata de un registro de desplazamiento conectado para desplazar cíclicamente a la


derecha. En principio el terminal inicializador viene implementado a través de un pulsador
que pone el flip-flop FF0 en el estado de set y los demás en el de reset (1000). Una vez

Página 122
Sistemas Digitales

aplicada la señal de reloj, el contador contará ciclos de reloj en módulo cuatro: cada flanco
sucesivo de disparo hará progresar en el estado de set a otro flip-flop y cada cuatro ciclos
sucesivos de reloj el contador vuelve a su estado inicial.

Las principales ventajas de este contador son su sencillez de realización y que no es


necesario utilizar un decodificador ya que, por ejemplo, conectando unos leds con un número
dibujado sobre ellos, el estado del contador se hace explícito de forma directa. El
inconveniente principal es que para un contador de anillo módulo n se necesitan n flip-flops,
desaprovechándose 2n-n estados de los 2n posibles.

7.3.2.2- Contador conmutado en cola (de Johnson):


Se trata de una modificación del contador de anillo que utiliza flip-flops de forma más
económica. La interconexión entre flip-flops es igual que en el contador anterior salvo que al
final de la cascada de flip-flops, es decir, en la cola, la conexión se ha conmutado a Q 3 en
lugar de a Q 3 . Este contador, para cuatro flip-flops, aparece representado en la siguiente
figura:

Q0 Q1 Q2 Q3

D0 Q0 D1 Q1 D2 Q2 D3 Q3
C0 FF0 C1 FF1 C2 FF2 C3 FF3
Rd0 Q0 Rd1 Q1 Rd2 Q2 Rd3 Q3
Clock

Inicialización
Figura. 7.7 Contador conmutado en cola o de Johnson.

A través del pulsador inicializamos todos los flip-flops en el estado de reset:


Q 0 = Q1 = Q 2 = Q 3 = 0 . El primer flanco de disparo de reloj transferirá un cero a FF1, FF2 y
FF3, dejándolos inalterados. Sin embargo, a causa de la conmutación en las conexiones de
salida del FF3, FF0 irá al estado de set. Por consiguiente, el contador pasará de
Q 0 Q1Q 2 Q 3 = 0000 a Q 0 Q1Q 2 Q 3 = 1000 . La secuencia de estados que recorre el contador se
indica en la siguiente tabla:

Estado Q3 Q2 Q1 Q0
Y0 0 0 0 0
Y1 0 0 0 1
Y2 0 0 1 1
Y3 0 1 1 1
Y4 1 1 1 1
Y5 1 1 1 0
Y6 1 1 0 0
Y7 1 0 0 0
Y0 0 0 0 0

Página 123
Sistemas Digitales

El contador, antes de volver a su estado inicial, recorre ocho estados. Así pues, con n flip-
flops el contador conmutado en cola tiene módulo 2n. Como puede observarse este contador
cuenta en código Johnson. Este contador aprovecha mejor los flip-flops que el de anillo,
aunque sólo utilice 2n estados de los 2n posibles. Para hacer explícito el conteo se necesitará
un decodificador.

7.3.2.3- Contadores asíncronos de rizado


Todos los contadores considerados hasta este punto han sido síncronos. Ahora
consideraremos contadores asíncronos en los que la señal de reloj no se aplica a todos los flip-
flops. En la siguiente figura representamos un contador asíncrono de módulo 23 = 8:

Figura. 7.8 Contador asíncrono de rizado.

Todos los flip-flops tienen sus dos terminales J y K conectados a uno lógico para que
operen en modo de conmutación. La señal de reloj se aplica solamente a C0 que es la entrada
de reloj del primer flip-flop (FF0). Las entradas de reloj de los demás (C1 y C2) se conectan a
los terminales de salida de los flip-flops precedentes (Q0 y Q1, respectivamente). Debido al
efecto del reloj externo en cada flip-flop particular, esta influencia se va propagando (va
rizando) al resto de los flip-flops. Esto puede verse en el diagrama de secuencia
correspondiente al contador anterior:

1 2 3 4 5 6 7 8

Clock
0 1 0 1 0 1 0 1
Q0

0 0 1 1 0 0 1 1
Q1

0 0 0 0 1 1 1 1
Q2

Estado inicial

Esto es posible porque en las secuencias binarias conmuta cada bit cuando el anterior de
menor peso cambia de uno a cero; por ello se utilizan flip-flops activados por el flanco
negativo.

Página 124
Sistemas Digitales

Como puede observarse, las señales Q2, Q1, Q0 coinciden con las que se obtendrían de un
contador binario síncrono de módulo 8. Un flip-flop conmutará solamente cuando el flip-flop
precedente esté en set y haga su transición del estado de set al de reset. Este flip-flop
precedente en turno, cambiará de estado solamente cuando el flip-flop anterior haga una
transición de 1 a 0, y así sucesivamente.

Realmente hay una pequeña diferencia entre las señales de los contadores síncronos y de
rizado, debido a los retardos de propagación de los flip-flops, que por simplicidad no hemos
tenido en cuenta en el diagrama de secuencias anterior. En la siguiente figura pueden verse las
transiciones de las salidas Q0, Q1 y Q2 en la proximidad del flanco de reloj número 4, para un
contador síncrono de módulo 8 y el asíncrono:

4 4
Clock

Q0 1 0 1 tpd 0

Q1 1 0 1 2tpd 0

Q2 0 1 0 3tpd 1
tpd
Síncrono Asíncrono

donde hemos supuesto que el retraso de propagación tpd en los flip-flops es el mismo para
todos ellos. Como puede observarse, en el contador síncrono las señales Q0, Q1 y Q2 cambian
simultáneamente a sus nuevos valores un tiempo tpd después del flanco activo del reloj. En
cambio, en el contador asíncrono, las señales Q0, Q1 y Q2 no cambian a la vez; en
consecuencia, se atraviesan una serie de estados internos que aparecen en la siguiente tabla:

Después del flanco nº4


Antes del flanco nº 4
tpd 2tpd 3tpd
Q0 1 0 0 0
Q1 1 1 0 0
Q2 0 0 0 1
Decimal 3 2 0 4

es decir, desde el flanco de disparo hasta un tiempo 3tpd, el contador asíncrono da una lectura
incorrecta. El intervalo de tiempo durante el que se producen errores de conteo se incrementa
en proporción con el número de flip-flops en cascada. El peor caso se produce cuando todos
los flip-flops están en estado de set: 111...1. En el siguiente flanco de reloj la cuenta irá a
000...0. Sin embargo, solamente el primer flip-flop responde directamente a la entrada de
reloj, y la transición del estado de set al de reset, ha de cambiar sucesivamente (ha de rizar)
los estados de cada uno de los flip-flops subsiguientes. Si hay n flip-flops este proceso tarda
un tiempo ntpd en realizarse desde el flanco de disparo del reloj. Supongamos ahora que el
período de la señal de reloj es menor que ntpd. Entonces antes de que la cuenta 000...0 se
registre en el contador, al menos el primer flip-flop habrá vuelto a conmutar al estado de set.
Por consiguiente, en ningún instante el contador anotará 000...0 y simplemente será imposible
leer correctamente el contador. En conjunto, cuando sea necesario poder leer continuamente

Página 125
Sistemas Digitales

el contador, el asíncrono deberá tener menor velocidad que los contadores síncronos
equivalentes. Así, un contador asíncrono tiene la ventaja sobre uno síncrono equivalente de
que necesita menos lógica, pero tiene el inconveniente de ser más lento.

7.3.2.4- Contadores integrados


Hay gran número de contadores integrados que pueden encontrarse en un catálogo TTL.
Entre ellos estudiaremos el ‘161 (está en fotocopias de prácticas). Se trata de un contador
síncrono de módulo 16. Su símbolo lógico es el siguiente:

PL P3 P2 P1 P0 Este contador cuenta los pulsos


ET que llegan por CLK (activado por el
EP CONTADOR `161 TC flanco positivo) y permite además efectuar
CLK una carga en paralelo síncrona.
MR Q3 Q2 Q1 Q0

Consta de los siguientes terminales:

• P0, P1, P2, P3: entradas para introducir la carga síncrona del contador.
• Q0, Q1, Q2, Q3: terminales de salida a través de los que puede visualizarse el estado del
contador.
• PL : activo en baja, que produce la carga síncrona.
• EP y ET: entradas de habilitación de cuenta.
• MR (Master Reset): activo en baja, pone a cero el contador. A diferencia de la carga, la
puerta a cero a través de MR es asíncrona (independientemente de cualquier otro
terminal).
• CLK: entrada de reloj.
• TC: es un terminal de salida que suministra un uno cuando ET = 1 y el contador llega a
15, es decir, cuando Q 0 = Q1 = Q 2 = Q 3 = 1 , y cero en los demás casos.

Cuando EP = ET = 1 y PL = 1 , el contador se va incrementando según llegan los pulsos


por la entrada CLK. Al poner PL = 0 (activación de la carga en paralelo), el contador deja
automáticamente de incrementarse y, después de un pulso de reloj, en sus salidas aparecen
reflejadas las entradas de carga correspondientes. Si EP = 0 o ET = 0 , el contador mantiene
su estado y no se incrementa.

Estos contadores están especialmente diseñados para poder conectarse en paralelo,


aumentando así la capacidad de conteo. El montaje se muestra en la página siguiente. Según
este esquema, cuando el contador A llega a 15 ( Q 0 = Q1 = Q 2 = Q 3 = 1 ), TCA se pone a uno y
habilita el contador B, de tal forma que éste se incrementa en el siguiente pulso de reloj. TCA
vuelve a ponerse a cero y el contador B queda desactivado hasta que el contador A llegue otra
vez a 15. De este modo se consigue un contador de módulo 16 ⋅16 = 256 .

Página 126
Sistemas Digitales

P3 P2 P1 P0 P7 P6 P5 P4

PL PLA P3A P2A P1A P0A PLB P3B P2B P1B P0B
E ETA CONTADOR `161(A) ETB CONTADOR `161(B)
EPA (menos significativo) TCA EPB (más significativo) TCB
CLK CLKA CLKB
MR MRA Q3A Q2A Q1A Q0A MRB Q3B Q2B Q1B Q0B

Q3 Q2 Q1 Q0 Q7 Q6 Q5 Q4

Figura. 7.9 Contador de módulo 256 a partir de dos contadores 161.

Veamos como construir un contador de módulo 10 con un contador ‘161:

“1” “0” “0” “0” “0”

PL P3 P2 P1 P0
CLK ET
EP CONTADOR `161 TC
CLK
MR Q3 Q2 Q1 Q0

Inicialización

Con este montaje, inicializamos el contador en el estado 0000 con el pulsador. Al llegar al
estado 9 ( Q 0 Q1Q 2 Q 3 = 1001 ) la salida de la puerta NAND se pone a cero y activa la carga en
paralelo. Cuando llegue el siguiente pulso de reloj se cargará en el contador el estado 0
( Q0Q1Q 2Q3 = 0000 ) y la secuencia de conteo volverá a iniciarse.

Aplicaciones de los contadores


La aplicación de los sistemas contadores es contar impulsos, pero en múltiples ocasiones,
en especial en los sistemas digitales síncronos, se utiliza un contador en combinación con un
oscilador para generar todas las señales de control que gobiernan la operación del sistema. En
concreto un contador puede utilizarse para:

1. Implementación de divisores de frecuencia:


Todo contador puede ser utilizado como divisor. La capacidad de división es igual al
módulo del contador. Si se decodifica un estado cualquiera de un contador cuyo módulo
es n, en la salida se obtendrá un impulso cada n aplicados a su entrada (ese estado se
recorre cada n impulsos de reloj).

2. Implementación de generadores de secuencias.

Página 127
Sistemas Digitales

Página 128

También podría gustarte