Está en la página 1de 48

Diseño de circuitos combinacionales 169

________________________________________________________________________________

Capítulo 5 Diseño de circuitos combinacionales

Este capítulo discute diversos conceptos y herramientas utilizados en el diseño de circuitos


combinacionales de una cierta complejidad. En primer lugar se presenta el concepto de módulo y su
utilización como elemento fundamental en el diseño de sistemas combinacionales complejos. A
continuación se presentan los distintos tipos de módulos que la práctica ha consagrado como
estándares o de más frecuente utilización. Una aproximación complementaria al diseño de circuitos
combinacionales es la utilización de módulos universales, entendiendo por universal que permite
generar cualquier función lógica. Este capítulo hace especial énfasis en estos módulos universales por
constituir una herramienta flexible y muy utilizada en la práctica.

5.1 ¿Por qué la realización a dos niveles no resuelve el problema del diseño
combinacional?

De acuerdo con lo visto en el capítulo 2, cualquier sistema combinacional puede implementarse en


redes de dos niveles de puertas lógicas, implementación que puede conseguirse de forma sistemática.
Por tanto es razonable pensar que el problema del diseño de circuitos combinacionales está resuelto
con los conceptos allí presentados y que no hace falta volver sobre él. Este razonamiento es correcto
desde el punto de vista teórico; sin embargo, en la práctica las implementaciones a dos niveles para
funciones complejas involucran un excesivo número de puertas con un gran número de entradas y un
interconexionado que puede ser muy problemático. Por este motivo la implementación a dos niveles
es, en general, poco atractiva para realizar circuitos complejos.
Un concepto fundamental a considerar en este último caso es el de diseño jerárquico o modular: un
determinado circuito se descompone en un cierto número de módulos (circuitos) más pequeños que
son diseñados de forma independiente; estos circuitos más sencillos pueden ser, si es necesario,
descompuestos a su vez en subcircuitos más simples, etc., hasta que los módulos resultantes puedan
ser diseñados como circuitos a dos niveles. La diferencia entre la aproximación a dos niveles y la
aproximación modular se pone de manifiesto en el ejemplo 5.1.
El procedimiento jerárquico es relativamente independiente de la opción de diseño escogida. Si la
implementación se va a realizar mediante circuitos integrados discretos estándar (opción off the shelf)
el diseño deberá tener en cuenta qué módulos existen en el catálogo y cuál es su funcionalidad lógica.

© los autores, 1998; © Edicions UPC, 1998. Quedan rigurosamente prohibidas, sin la autorización escrita de los titulares del "copyright", bajo las sanciones
establecidas en las leyes, la reproducción total o parcial de esta obra por cualquier medio o procedimiento, comprendidos la reprografía y el tratamiento
informático, y la distribución de ejemplares de ella mediante alquiler o préstamo públicos, así como la exportación e importación de ejemplares para su
distribución y venta fuera del ámbito de la Unión Europea.
170 Diseño digital
________________________________________________________________________________

Si se diseña pensando en una alternativa tipo "semi-custom" debemos pensar en qué módulos están
predefinidos en las librerías del fabricante. Únicamente en el caso de diseño full-custom podemos
pensar en la utilización de módulos diseñados ex-profeso para la aplicación en cuestión. En principio
el diseño de estos módulos específicos permite obtener mejores características; sin embargo, se trata
de un proceso costoso y por tanto sólo justificable cuando los volúmenes de producción son muy
grandes. Una posibilidad intermedia entre el diseño de módulos específicos y el de módulos estándar
estriba en el uso de módulos programables por el usuario. Se trata de módulos estándar y por tanto
fabricados en grandes series y a precios muy bajos pero que pueden adaptarse a las necesidades del
usuario mediante una programación que puede ser realizada por el fabricante o por el mismo usuario.

Ejemplo 5.1

Vamos a diseñar un sistema capaz de efectuar la suma aritmética de dos números enteros
codificados en binario de dos bits. En esencia, se trata de sintetizar un circuito combinacional con
cuatro entradas (a1, a0, b1, b0) y tres salidas (S2, S1, S0), correspondientes al valor de la suma
indicada.

Una opción de diseño es seguir la metodología expuesta en el capítulo 2, que conduce a la


implementación en forma de red AND-OR de dos niveles mostrada en la figura 5.1. En dicha
figura puede observarse que son necesarias 11 puertas AND (de 2, 3 y 4 entradas), 3 puertas OR
(de 2, 3 y 6 entradas), y 4 inversores para realizar el sumador, con un esquema de conexiones de
una complejidad apreciable.

Una segunda opción consistiría en reproducir el algoritmo de la suma binaria (ver figura 5.2.a):
cada bit de una entrada se suma con el bit de igual peso de la otra entrada y el acarreo procedente
de la suma de los bits de peso inferior, con lo que se genera un bit de suma y otro de acarreo que
transmitir a la suma del siguiente par de bits. Este algoritmo conduce a una implementación a
base de dos módulos iguales, sumadores de cada par de bits (M), más el esquema de conexión
adecuado (ver figura 5.2.b).

El diseño de M es relativamente simple puesto que se trata de un circuito con tres entradas y dos
salidas relacionadas por la tabla de verdad de la figura 5.2.c. La simplificación de Ci+1 y Si
conduce a la implementación de la figura 5.3, donde vemos que son necesarias únicamente
puertas de dos entradas.

A efectos de comparación, podemos ver que en este caso la dificultad del proceso de diseño y la
complejidad (tipos de puertas necesarias e interconexión) del circuito resultante son menores
escogiendo la segunda alternativa. También podemos ver que esta última solución es útil para
realizar circuitos sumadores de un mayor número de bits (sólo hay que añadir tantos bloques M
como bits tengan los números a sumar); en cambio, la realización de sumadores más grandes
basada en la primera opción de diseño implica rehacer totalmente éste para cada caso.

© los autores, 1998; © Edicions UPC, 1998.


Diseño de circuitos combinacionales 171
________________________________________________________________________________

a1 a0 b1 b0

S2

S 2 = a 1b1 + a 1a 0b0 + a 0b1b0

S 1 = a 1a 0 b1 + a 1a 0 b1 + a 1b1 b0 +

+ a 1b1b0 + a 1a 0b1b0 + a 1a 0b1b0


S1
S0 = a 0b 0 + a 0b 0

S0

Figura 5.1 Circuito sumador en red AND-OR de dos niveles

a) b) c) a i bi Ci C
C2 S2 i+1 S i
C2 C1 C0 b1 0 0 0 0 0
a1 M S1 0 0 1 0 1
b1 b0
0 1 0 0 1
+ a1 a0 C1
0 1 1 1 0
S2 S1 S0 b0 1 0 0 0 1
M S0
a0 1 0 1 1 0
C0 1 1 0 1 0
1 1 1 1 1

Figura 5.2 Algoritmo de suma binaria y diseño basado en él

© los autores, 1998; © Edicions UPC, 1998.


172 Diseño digital
________________________________________________________________________________

ai
Si = ai ⊕ bi ⊕ Ci
C i+1
bi Ci+1 = ai bi + aibi Ci + ai biCi =
= ai bi + Ci (ai ⊕ bi )
Ci Si

Figura 5.3 Realización de un sumador elemental

_________________________________________________________________________________

Ejercicio 5.1

Proponga dos implementaciones para el siguiente sistema, una a dos niveles de puertas lógicas, y
la otra, a imagen del ejemplo 5.1, basada en un algoritmo de resta binaria. El sistema, de 4
entradas, debe calcular la resta de dos números enteros codificados en binario con 2 bits. Las dos
salidas, R1 y R0, indican el resultado de la resta, caso de que ésta pueda realizarse (A•B). La
tercera salida, O, valdrá "1" cuando la resta no tenga resultado positivo (A<B).

2 2
A
Circuito R R =(A-B) si B ≤ A
2 Restador
B O O = 1 si B > A

Figura 5.4 Circuito del ejercicio 5.1

_________________________________________________________________________________

5.2 Diseño con redes modulares

Los módulos, con independencia de su complejidad, pueden conectarse entre sí para formar circuitos
más grandes y capaces de realizar funciones más complejas. Sin embargo, para asegurar el
funcionamiento del circuito resultante se deben tener en cuenta ciertos aspectos, tanto de orden
eléctrico como funcional, que se comentan en el apartado 5.2.1. Por su parte, el apartado 5.2.2 se
dedica a examinar algunos ejemplos de análisis y síntesis modular de circuitos combinacionales.

© los autores, 1998; © Edicions UPC, 1998.


Diseño de circuitos combinacionales 173
________________________________________________________________________________

5.2.1 Construcción de redes modulares

La correcta construcción de una red de módulos debe tener en cuenta aspectos relativos a las
características eléctricas concretas de cada módulo. En general estas características dependen de la
familia tecnológica escogida. En el Apéndice B se presentan de forma condensada distintas familias
tecnológicas y se comparan sus características definitorias, de las que se destacan a continuación las
principales:
a) La tensión de alimentación y el consumo del módulo, definidas en el capítulo 3
para una puerta lógica, y que dependen claramente de la familia tecnológica.

b) Los niveles lógicos, que relacionan los niveles de tensión con que trabajan las
entradas y salidas del módulo con los valores lógicos que representan (ver capítulo 3). Estos
niveles son característicos de cada familia tecnológica.

c) El retardo introducido para cada salida. Caracteriza el tiempo que tardan las
salidas de un módulo en alcanzar un valor estable tras una conmutación de las entradas. Dicho
tiempo es en general dependiente de la carga presente a la salida del módulo.

d) "Fan-in" o factor de carga. Para cada entrada indica la carga que ésta representa
cuando se la conecta a la salida de otro módulo. Para cada tecnología los factores de carga
están normalizados a valores enteros.

e) "Fan-out". Para cada salida indica la máxima carga que dicha salida puede
soportar bajo ciertas restricciones de consumo y/o de retraso introducido. Suele darse también
en forma de valores enteros normalizados.

Por otra parte, la correcta interconexión de módulos implica respetar, como mínimo, las siguientes
reglas básicas:
a) Los niveles lógicos de los módulos a conectar deben ser compatibles entre sí. En
caso de no serlo es necesario añadir circuitos de interfaz (es decir, adaptadores de nivel).

b) La suma de los fan-in de las entrada conectadas a una determinada salida debe
ser inferior al fan-out de ésta.

c) Si tenemos las salidas de dos módulos distintos conectadas juntas, su valor lógico
no está definido si cada una toma un valor distinto; por este motivo, como norma general cada
entrada de un módulo debe estar conectada a una única salida de otro módulo. Esto implica
que, por ejemplo, el conexionado de la figura 5.5.a es válido, y no lo es el de la figura 5.5.b.

© los autores, 1998; © Edicions UPC, 1998.


174 Diseño digital
________________________________________________________________________________

a)
b)
M1 M3 M1 M3

M2 M2

Figura 5.5 a) Red modular correcta, b) incorrecta

Sin embargo, para algunas tecnologías y configuraciones concretas sí queda definido el valor
resultante en caso de conflicto. En algunos casos el valor "1" predomina sobre el "0", con lo que la
conexión de dos o más salidas se comporta como si fuera una puerta OR; esta puerta virtual recibe el
nombre de OR cableada. El caso contrario también es posible, es decir, en otras situaciones
predomina el "0" sobre el "1", con lo que resulta una puerta AND virtual o cableada. La figura 5.6
muestra el equivalente circuital en ambos casos.

f1 f1
M1 M1

F = f 1+ f 2 F = f 1 f2

M2 M2
f2 f2

Figura 5.6 Puertas AND y OR cableadas

Otro caso particular son las salidas "tri-state": en general la salida de un módulo es o bien "0" o bien
"1", pero en algunas tecnologías y/o configuraciones es posible dejar la salida en un valor lógico
indefinido, llamado alta impedancia, que queda determinado por los valores de los módulos restantes
conectados a dicha salida. Los circuitos que ofrecen esta posibilidad disponen de una entrada
adicional de habilitación (E, "enable") que determina si la salida adopta un valor lógico concreto o si
queda en alta impedancia. Las salidas tri-state pueden conectarse entre sí y el circuito resultante
funcionará correctamente si como máximo un único módulo está habilitado simultáneamente.

Ejemplo 5.2

Los bloques M1 y M2 de la figura 5.7 disponen de salidas tri-state gobernadas por las entradas
E1 y E2 respectivamente. La única condición a cumplir para que la interconexión funcione
correctamente es que ambas sean complementarias. La función lógica a la que equivale esta
interconexión se indica en la misma figura.

© los autores, 1998; © Edicions UPC, 1998.


Diseño de circuitos combinacionales 175
________________________________________________________________________________

f1
M1

E1 F = f 1E + f 2E
M2
f2
E E2

Figura 5.7 Conexión de salidas lógicas tri-state

_________________________________________________________________________________

Ejercicio 5.2

El layout de la figura 5.8 corresponde a una implementación CMOS tri-state. Halle su esquema
eléctrico equivalente y la función lógica que implementa. Razone, a nivel de transistores, los
posibles caminos del nodo de salida a las alimentaciones en el caso de tener dos módulos como
éste conectados tal como se muestra en la figura 5.7.

A B C E
Vdd

Vss
E

Figura 5.8 Layout de función lógica tri-state

_________________________________________________________________________________

© los autores, 1998; © Edicions UPC, 1998.


176 Diseño digital
________________________________________________________________________________

5.2.2 Análisis y síntesis de redes modulares

En general el análisis a nivel lógico de un circuito supone determinar la función realizada por éste. La
funcionalidad de un circuito constituido por la interconexión de diferentes módulos puede
determinarse mediante composición de las funciones realizadas por los módulos integrantes. El
ejemplo 5.3 ilustra la aplicación de este procedimiento de análisis a circuitos combinacionales.

Este concepto "modular" se puede utilizar también desde el punto de vista del diseño o síntesis:
podemos descomponer un problema de diseño relativamente complejo en varios problemas más
sencillos y la relación entre ellos. Este planteamiento supone sintetizar por separado una serie de
módulos, cada uno de ellos ligado a uno de los problemas, e interconectarlos de manera adecuada,
siendo el resultado final un circuito modular. El ejemplo 5.3 ilustra la aplicación de este
procedimiento de síntesis a un circuito combinacional.

Ejemplo 5.3

Analizar la red de la figura 5.9, dando una descripción de alto nivel de la función o funciones que
realiza. Las entradas A, B y C corresponden a números enteros codificados en binario.

A 4
x 4
4 M1 z x
B y 4 M1 z
y 4
m 4
C M3 p D
4 4
x n
4
x 4 M2 z
4 M2 z y
Q
y

 x si x ≥ y  x si x ≤ y m + n si Q = 0
z M1 =  z M2 =  p M3 = 
 y si x < y  y si x > y m − n si Q =1

Figura 5.9 Red modular del ejemplo 5.3

El análisis de los módulos M1 lleva a la conclusión de que a la entrada m de M3 se conecta la


entrada, A, B, o C, de mayor valor absoluto. De forma análoga se llega a que la entrada n de M3
se conecta a la entrada de menor valor absoluto. Luego, incluyendo la función de M3, se llega al
siguiente resultado final:

© los autores, 1998; © Edicions UPC, 1998.


Diseño de circuitos combinacionales 177
________________________________________________________________________________

max[A, B,C ] + min [A, B,C ] si Q = 0


D= 
max[A, B,C ] − min [A, B,C ] si Q =1
_________________________________________________________________________________

Ejemplo 5.4

Diseñar en forma de red de módulos un circuito comparador de dos números codificados en


binario de 4 bits, de acuerdo con la especificación dada en la figura 5.10.

4
A F = 1 si A > B
Circuito
F
B
4 Comparador F = 0 si A ≤ B

Figura 5.10. Descripción del diseño a efectuar en el ejemplo 5.4

Veamos un enfoque de este problema como composición de problemas más sencillos: en


cualquier sistema de numeración podemos detectar el mayor de dos números comparando sus
dígitos dos a dos empezando por los de mayor peso; cuando ambos son iguales el resultado de la
comparación depende de los dos siguientes, etc., hasta que se encuentre un par de dígitos
diferentes, momento a partir del cual no hace falta seguir comparando puesto que el resultado
estará ya decidido.

La figura 5.11 muestra una implementación de la solución propuesta, donde se ve que


únicamente es necesario diseñar un módulo para comparar cada par de bits y otro para obtener el
resultado. Las líneas pi indican a cada módulo si debe realizar o no su correspondiente
comparación, tomando el valor "1" cuando todas las comparaciones de bits de mayor peso
realizadas indican igualdad. Una línea ci se pone a "1" únicamente cuando pi+1=1 y ai>bi.

1 c3
a3 M p3
b3 c2
a2 M F
p2
b2 c1
a1 M p1
b1 c0
a0 M p0
b0

Figura 5.11 Comparador del ejemplo 5.4

© los autores, 1998; © Edicions UPC, 1998.


178 Diseño digital
________________________________________________________________________________

Con la descripción dada, la síntesis del módulo comparador M resulta inmediata

p i+1
ai
ci = pi +1aibi
ci
bi
pi = pi+1 ai ⊕ bi =
pi
= pi +1 (ai bi + ai bi )

_________________________________________________________________________________

Ejercicio 5.3

Proponga una implementación alternativa para el comparador descrito en el ejemplo anterior, a


partir del siguiente esquema de bloques:

a 0b 0 a 1b 1 a 2b 2 a 3b 3 a 0b 0 a 1b 1 a 2b 2 a 3b 3

c3
Comp. 4 bits c4 Comp. 3 bits M1 c4

Donde c3 es el resultado de comparar los tres bits de menos peso, e iterando la descomposición:

a 0b 0 a 1b 1 a 2b 2 a 3b 3

c1 c2 c3
1 M1 M1 M1 M1 c4

_________________________________________________________________________________

© los autores, 1998; © Edicions UPC, 1998.


Diseño de circuitos combinacionales 179
________________________________________________________________________________

5.3 Módulos combinacionales estándar

No existe un argumento teórico que determine qué módulos deben ser considerados como estándar.
En realidad es el uso es el que consagra determinadas estructuras como las de utilización más general.
En cualquier caso la consulta de cualquier catálogo de fabricante, ya sea de circuitos integrados
discretos o de módulos prediseñados para opciones VLSI, muestra la multiplicidad de módulos que se
ofrecen como circuitos estándar.

En este apartado presentamos una selección reducida de los módulos estándar más utilizados,
siguiendo para cada uno de ellos el esquema de describir primero su funcionamiento y simbología,
cómo puede implementarse utilizando puertas y/o transistores y, finalmente, mostrando algunos
ejemplos concretos de utilización.

5.3.1 Decodificadores

Un decodificador binario es un circuito lógico combinacional con n entradas y 2n salidas, donde las
entradas pueden entenderse como la codificación binaria de un número entero (comprendido, por
tanto, entre 0 y 2n-1). La salida i-ésima estará activa (por ejemplo, valor "1") cuando el valor de la
entrada corresponda al entero i, tomando las 2n-1 salidas restantes el valor lógico contrario ("0" en
este caso). Adicionalmente suele disponerse de una entrada de habilitación y/o inhibición (E, enable),
de forma que cuando ésta vale "0" el funcionamiento del módulo queda bloqueado, con lo que
quedan inactivas todas las salidas.

La figura 5.12 muestra la estructura externa genérica de un decodificador binario n:2n (n entradas, 2n
salidas), junto con una especificación compacta (o de alto nivel) de su funcionamiento.

y
Decodificador

E 0
0
1 y
x0 0 1 1 si i = x y E =1
2 y yi = 
x1 1 2 0 si i ≠ x o E = 0
...

...

n −1
xn-1 n-1 n y n para 0 ≤i ≤ 2n −1, x = ∑ x j 2 j
2 -1
2 -1
j=0

Figura 5.12 Decodificador binario de n entradas

© los autores, 1998; © Edicions UPC, 1998.


180 Diseño digital
________________________________________________________________________________

La implementación mediante puertas lógicas de un decodificador binario como el acabado de


describir resulta sumamente fácil si se observa que, para E=1, cada salida yi, considerada como una
función lógica independiente, coincide con el minterm i-ésimo de las variables de entrada, es decir:
n
yi = E⋅ mi ( x) 0 ≤ i ≤ 2 −1

Como ejemplo concreto la figura 5.13 muestra la tabla de verdad y la implementación mediante
puertas de un decodificador binario 2:4. Es obvio que ambas son generalizables a estructuras
mayores.

E
y
0
E x1 x0 y y y y
x 0 1 2 3
0 y
1 0 X X 0 0 0 0
1 0 0 1 0 0 0
x y 1 0 1 0 1 0 0
1 2
1 1 0 0 0 1 0
y 1 1 1 0 0 0 1
3

Figura 5.13 Realización mediante puertas de un decodificador binario 2:4

Los catálogos de los fabricantes suelen ofrecer diferentes tipos de decodificadores en función del
código de entrada; así es habitual encontrar decodificadores binarios (n entradas, 2n salidas), BCD en
sus diversas variantes (4 entradas, 10 salidas), Gray (n entradas, 2n salidas), o correspondientes a
otros códigos de uso más o menos popular.

y
0
Decodificador

x E1 y
0 y 0
1 E2 0
1 y1
x0 0 2 y
x y 2
1 2 3 y
x1 1 3
E1 y
3
E2

Figura 5.14 Decodificador binario 2:4 con salidas activas bajas

© los autores, 1998; © Edicions UPC, 1998.


Diseño de circuitos combinacionales 181
________________________________________________________________________________

También es usual encontrar variaciones en cuanto al número y tipo de entradas de habilitación de que
dispone el módulo, existiendo también variantes respecto a la forma de considerar activas las entradas
y salidas del circuito. La figura 5.14 muestra otra posible implementación de un decodificador binario
2:4 utilizando un diseño basado en puertas NAND, junto con su simbolo correspondiente.

El análisis lógico del circuito de la figura 5.14 conduce a la tabla de verdad de la figura 5.15 y a una
especificación análoga a la dada en la figura 5.12 para un decodificador binario genérico, salvo dos
diferencias: a) el módulo está habilitado para E1=0 y E2=1 y bloqueado en cualquier otro caso, b) la
salida activa lo estará con el valor lógico "0" mientras el resto estará a "1". En este caso diremos que
la entrada E1 y las salidas se activan con el nivel lógico bajo.

E1 E2 x 1 x 0 y y y y
0 1 2 3
1 X X X 1 1 1 1
X 0 X X 1 1 1 1
0 1 0 0 0 1 1 1
0 1 0 1 1 0 1 1
0 1 1 0 1 1 0 1
0 1 1 1 1 1 1 0

Figura 5.15 Tabla de verdad del circuito de la figura 5.14

Esta situación (multitud de combinaciones en cuanto a salidas y/o entradas activas bajas o altas) suele
darse con mucha frecuencia en los módulos estándar disponibles en catálogos, por lo que es
conveniente habituarse a ello. En los ejemplos y ejercicios de este texto se ha optado por ir variando
el formato de salidas y entradas en los módulos utilizados.

Las entradas de habilitación son sumamente útiles para encadenar decodificadores entre sí, con lo que
se obtienen decodificadores mayores. La figura 5.16.a muestra la posibilidad de obtener un
decodificador binario 4:16 a partir de dos decodificadores 3:8. La figura 5.16.b muestra a su vez
cómo realizar el mismo módulo mediante decodificadores 2:4.

Nótese que todos los decodificadores de la figura 5.16 tienen entradas activas bajas, lo cual equivale a
decir que el código de entrada que reconocen no es el binario sino su inverso o complementado.
Nótese también que sólo la opción de la figura 5.16.b dispone de entrada de habilitación. Se propone
como ejercicio para el lector la inclusión de una entrada de este tipo en el circuito de la figura 5.16.a.

© los autores, 1998; © Edicions UPC, 1998.


182 Diseño digital
________________________________________________________________________________

a) b)
3 y

Decod
7 y E 2 15
15

Decodificador
x3 E 6 1 1
5 0 0 y
4 12
x2 2 3
3 3 y

Decod
x1 1 2 E 11

Decod
E E 2 2
x0 0 1 x3 1 1
0 y 1 1
8 x2 0 0 0 y
0 8
7 y 3 y
7

Decod
E 7
Decodificador

E 6 2
5 x1 1 1
4 x0 0 0 y
2 3 4
1 2 3 y

Decod
E 2 3
0 1
0 y 1 1
0 0 0 y
0

Figura 5.16 Ejemplos de encadenamiento de decodificadores

Ejercicio 5.4

Discuta posibles alternativas de realización de un decodificador binario 5:32 cuyas entradas y


salidas tengan un formato como el descrito en la figura 5.14, utilizando decodificadores 2:4 y/o
3:8 de ese mismo formato.

_________________________________________________________________________________

5.3.2 Codificadores

Como su nombre indica, un codificador es un circuito lógico combinacional que realiza la función
inversa a la de un decodificador. En consecuencia, un codificador binario tendrá 2n entradas y n
salidas, disponiendo habitualmente de una o varias entradas de habilitación. Adicionalmente suele
haber otra salida, utilizada para hacer encadenamientos, que indica cuándo está activada alguna de las
entradas con el módulo habilitado.

La figura 5.17 muestra la estructura externa genérica de un codificador binario 2n:n junto con una
descripción de su funcionamiento, incluyendo la salida adicional A, que indica cuándo hay alguna
entrada activa. Podemos ver que cuando la entrada i-ésima está activa la salida corresponde a la
codificación binaria de i.

© los autores, 1998; © Edicions UPC, 1998.


Diseño de circuitos combinacionales 183
________________________________________________________________________________

En previsión de que haya más de una entrada activa a la vez, se puede definir una prioridad de
entradas, actuando siempre de acuerdo con la entrada activa de prioridad más alta. En la
especificación de la figura 5.17, las entradas con subíndice más alto tienen mayor prioridad.

E
0 y0
x0 0 Codificador
x1 1 y1 i si E = xi = 1 y x k = 0 ∀k > i
1
y=
... 0 si E = 0 o xi = 0 ∀ i
x2 2 n-1 y n-1
n−1
...

x n
2 -1
n
2 -1 A con y = ∑ yj 2 j
j=0

Figura 5.17 Codificador binario de 2n entradas

La implementación con puertas lógicas de un codificador es muy sencilla a partir de la especificación


dada. La figura 5.18 muestra una tabla de verdad y la correspondiente implementación de un
codificador binario 4:2.

x3 x2 x1x0 E
E x3 x2 x1 x0 A y1 y0
y1
0 X X X X 0 0 0
1 0 0 0 0 0 0 0
1 0 0 0 1 1 0 0 y0
1 0 0 1 X 1 0 1
1 0 1 X X 1 1 0
1 1 X X X 1 1 1 A

Figura 5.18 Realización mediante puertas de un codificador binario 4:2 con prioridad

El encadenamiento de codificadores se realiza utilizando adecuadamente las señales E y A, más las


puertas que sea necesario añadir para generar el código de salida. En el ejemplo 5.5 se muestra un
caso concreto.

Ejemplo 5.5

La figura 5.19 muestra el esquema y la tabla de verdad de un codificador binario 4:2 con
prioridad cuyas entradas y salidas son activas con nivel bajo.

© los autores, 1998; © Edicions UPC, 1998.


184 Diseño digital
________________________________________________________________________________

E X0 X1 X2 X3 A1 A2 Z1 Z0

Codificador
X3 1 X X X X 1 1 1 1
X2 Z1 0 1 1 1 1 0 1 1 1
X1 Z0 0 X X X 0 1 0 0 0
X0
0 X X 0 1 1 0 0 1
E A1 A2 0 X 0 1 1 1 0 1 0
0 0 1 1 1 1 0 1 1

Figura 5.19 Codificador 4:2 con prioridad y señales activas bajas

La figura 5.20 muestra un encadenamiento de codificadores 4:2 como el anterior, que da lugar a
otro equivalente (igual comportamiento con señales activas bajas e igual orden de prioridades) de
dimensiones 8:3. Se recomienda al lector un análisis detallado del citado esquema.

x x EI x x
0 3 4 7

0 1 2 3 0 1 2 3
E E
A1 Cod. A1 Cod.
A2 0 1 A2 0 1

A1 y y y A2
0 1 2

Figura 5.20 Codificador 8:3 con prioridad y señales activas bajas

_________________________________________________________________________________

Ejercicio 5.5

Proponga una implementación a nivel de puertas lógicas del codificador 4:2 especificado en el
ejemplo anterior.

_________________________________________________________________________________

© los autores, 1998; © Edicions UPC, 1998.


Diseño de circuitos combinacionales 185
________________________________________________________________________________

5.3.3 Multiplexores

Un multiplexor o selector es un circuito lógico combinacional con 2n entradas, llamadas de datos o


canales (xi), n entradas, llamadas de selección o de control (si), y una salida (y). Adicionalmente se
puede disponer de entrada(s) de habilitación del módulo.

La figura 5.21 muestra la estructura externa genérica de un multiplexor de 2n canales junto con una
descripción de alto nivel de su funcionamiento. Podemos ver que cuando el módulo está habilitado y
las entradas de control corresponden al entero "i" la salida coincide con la entrada de datos i-ésima,
siendo ignorado el valor del resto de entradas.

x 0
0
 xi si E =1
Multiplexor

x1 1 y=
x 2  0 si E = 0
2 y
n−1
...

x n
2 -1
n
2 -1 siendo i = ∑sj 2j
j=0
E
n-1 1 0
...
s n-1 s 1 s 0

Figura 5.21 Multiplexor de 2n canales

Este funcionamiento puede expresarse fácilmente en notación algebraica

y = E [x 0 (sn−1,.., s1 ,s0 ) + x1(sn−1 ,..,s1 ,s0 )+... + x 2n 1 (sn −1 ,..,s1,s0 )] =



2n −1
= E[x 0 m0 (s )+ x1m1(s)+...+ x 2n 1m2n 1(s) ]= E ∑ xi mi (s)
− −
i= 0

donde mi(s) es el minterm i-ésimo de las variables de selección si. Podemos ver que esta notación
algebraica conduce a una implementación en forma de red AND-OR de dos niveles para cualquier
multiplexor. En la figura 5.22.a se muestra esta implementación para un multiplexor de dos canales.
La implementación a nivel transistor de un multiplexor también es inmediata utilizando interruptores
lógicos. La figura 5.22.b muestra un multiplexor de dos canales realizado mediante puertas de
transmisión CMOS.

© los autores, 1998; © Edicions UPC, 1998.


186 Diseño digital
________________________________________________________________________________

s
a)
b)
E
x x
1 x 1
1
y y s y
x
x 0 x
0 0
s s
s

Figura 5.22 Implementación de un multiplexor de dos canales con puertas


AND-OR (a)y con puertas de transmisión CMOS (b)

Ejemplo 5.6

Implementar un multiplexor de cuatro canales mediante puertas AND-OR y mediante transistores


de paso NMOS.

a) E
x0 b)
x0
x1
x1
x2 y y
x2

x3 x3

s1 s0 s1 s1 s0 s0

Figura 5.23 Implementación AND-OR (a) y NMOS (b) de un multiplexor de cuatro canales

_________________________________________________________________________________

Ejercicio 5.6

Implemente mediante puertas un multiplexor de dos vectores de 4 bits, descrito mediante la


especificación dada en la figura 5.24. Para este diseño basta con tomar cuatro multiplexores de
dos canales gobernados por la misma variable de control.

© los autores, 1998; © Edicions UPC, 1998.


Diseño de circuitos combinacionales 187
________________________________________________________________________________

4
A Circuito 4 Y=A si s=0
4 a diseñar Y
B Y=B si s=1
s

Figura 5.24 Multiplexor de 2 vectores de 4 bits

_________________________________________________________________________________

Al igual que los módulos estándar comentados anteriormente, los multiplexores pueden encadenarse
para realizar módulos equivalentes de mayor tamaño. Como ejemplo concreto, la figura 5.25 muestra
un encadenamiento de multiplexores de 4 canales para conseguir un multiplexor de 16 canales.

x x x x x x x x
0 15 12 0 11 8 0 7 4 0 3 0

E 3210 E 3210 E 3210 E 3210


1 1 1 1
0 Mux 0 Mux 0 Mux 0 Mux
s1
s0

s3 3210
1 E E
s2 0 Mux

Figura 5.25 Multiplexor de 16 canales realizado con multiplexores de 4 canales

Nótese que en este ejemplo se han empleado multiplexores con entrada de habilitación activa con
nivel bajo. La estructura del circuito es la de un selector a dos niveles: el primer nivel esta constituido
por tantos multiplexores como sean necesarios para cubrir el número de entradas requerido (en este
caso hacen falta 4), mientras que el segundo consta de un multiplexor con un número de canales
suficiente para poder seleccionar entre todos los de la primera etapa (en este caso también 4). Las

© los autores, 1998; © Edicions UPC, 1998.


188 Diseño digital
________________________________________________________________________________

variables de selección de menor peso se aplican por igual a los multiplexores de la primera etapa
mientras que las de mayor peso gobiernan el de salida.

Ejercicio 5.7

El esquema de la figura 5.26 propone una alternativa de encadenamiento de módulos para


obtener un multiplexor de 16 canales. Se propone al lector el análisis del funcionamiento de la
red y la generalización de la estrategia de encadenamiento utilizada.

s3 1 Decodificador
E E
s2 0
3 2 1 0

x x x x x x x x
15 12 11 8 7 4 3 0

E 3210 E 3210 E 3210 E 3210


1 1 1 1
0 Mux 0 Mux 0 Mux 0 Mux
s1
s0

Figura 5.26 Multiplexor de 16 canales realizado con decodificadores y


multiplexores

_________________________________________________________________________________

5.3.4 Demultiplexores

Como su nombre da a entender, un demultiplexor es el circuito lógico que efectúa la función inversa
a la realizada por un multiplexor. En consecuencia, un demultiplexor dispondrá de una entrada (x), 2 n
salidas o canales (yi), n entradas de selección o control (si) y, eventualmente, entradas adicionales de
habilitación (E).

© los autores, 1998; © Edicions UPC, 1998.


Diseño de circuitos combinacionales 189
________________________________________________________________________________

La figura 5.27 muestra la estructura externa genérica de un demultiplexor junto con una descripción
de su funcionamiento: si el módulo está habilitado y el valor de las entradas de control es i, entonces
la información contenida en la entrada es transferida a la salida yi.

Demultiplexor 0 y
0
1 y1 Si E = 0 → yi = 0 ∀i ∈{0,1,..,2 n −1}
x y
2 2  ys = x n−1

n
... Si E =1 → 
y i≠s = 0
con s = ∑sj 2j
E 2 -1 y n j=0
2 -1
n-1 1 0
...
s n-1 s 1 s 0

Figura 5.27 Demultiplexor de 2n canales

La implementación más sencilla de un demultiplexor implica utilizar un decodificador, por lo que es


frecuente encontrar en los catálogos la denominación "decodificador/demultiplexor" referida al
mismo circuito. En la figura 5.28 se muestra un demultiplexor de 8 canales realizado mediante un
decodificador binario 3:8.

7 y
E 7
Decodificador

EI 6
x 5
4
s2
2 3
s1 1 2
s0 0 1
0 y
0

Figura 5.28 Decodificador 3:8 utilizado como


demultiplexor de 8 canales

Para x=E=1 el decodificador estará habilitado y se obtendrá un "1" en la salida indicada por las
entradas si, en particular si s0=s1=s2=1, entonces y7=1, es decir, se transfiere la información contenida
en x a la salida indicada por las entradas de control. Por el contrario, para x=0 y E=s0=s1=s2=1, el
decodificador está inhabiltado y todas sus salidas toman el valor "0", luego también en este caso el
valor lógico presente en x se transfiere a y7.

© los autores, 1998; © Edicions UPC, 1998.


190 Diseño digital
________________________________________________________________________________

La implementación de un demultiplexor mediante transistores es inmediata a partir de la de un


multiplexor: se trata del mismo circuito, por lo que únicamente es necesario invertir el sentido de
transmisión de la información (Veánse por ejemplo las estructuras de las figuras 5.22.b y 5.23.b).

5.3.5 Sumadores

Cabe considerar también como módulos de uso general aquéllos que realizan operaciones de tipo
aritmético, siendo el más importante de ellos el sumador. En efecto, la mayoría de las operaciones
aritméticas básicas pueden descomponerse en sumas binarias, cambios de formato y/o
desplazamientos. No es extraño por ello que los sumadores sean componentes habituales de cualquier
circuito electrónico de cálculo.

Un sumador es un sistema lógico combinacional que tiene como entradas dos vectores de n bits (A y
B) y como salida otro vector de n bits (S), cuyo valor corresponde a la suma aritmética binaria de los
vectores de entrada. La existencia de una entrada y una salida de acarreo adicionales (Cin y Cout)
permiten el encadenamiento de sumadores. La figura 5.29 muestra un sumador básico junto con una
descripción de su funcionamiento, donde el signo "+" indica suma aritmética.

n
A
S =( A+ B + Cin )
Sumador
de n bits

n mod 2
n
n S
B
C out = n (A+ B+ C in − S)
1
Cout 2
C in

Figura 5.29 Sumador de n bits

El diseño de un sumador como el descrito no es estrictamente una novedad puesto que ya se abordó
en el ejemplo 5.1: podemos construirlo como una cadena de sumadores de un bit, tal como muestra la
figura 5.30.

a a a
n-1 bn-1 1 b
1 0 b
0

C Sumador .... Sumador Sumador


out C
C de 1 bit C C de 1 bit C de 1 bit C in
n n-1 2 1 0
s s s
n-1 1 0

Figura 5.30 Sumador de n bits

© los autores, 1998; © Edicions UPC, 1998.


Diseño de circuitos combinacionales 191
________________________________________________________________________________

El sumador de un bit, en ocasiones llamado sumador total, tendrá tres entradas, dos de ellas (ai y bi)
que representan los dos bits a sumar y la tercera (Ci) el acarreo procedente de la suma de los bits de
peso inmediatamente inferior, y dos salidas (si y Ci+1), siendo si la suma binaria de los tres bits de
entrada y Ci+1 el acarreo de salida. La figura 5.3, correspondiente al ejemplo 5.1, muestra una
expresión algebraica de las dos funciones realizadas por el sumador total junto con una
implementación con puertas de éste.

Una implementación como la propuesta en la figura 5.30, habitualmente llamada sumador con el
acarreo en serie, es conceptualmente sencilla y utillizable en sumadores de cualquier número de bits;
sin embargo, tiene un inconveniente: nótese que las sumas de cada par de bits se realizan de forma
consecutiva, es decir, es necesario que se haya generado el acarreo de salida del primer sumador para
que el segundo sumador pueda realizar la operación correctamente y generar su correspondiente
acarreo de salida, etc.; por tanto se trata de una serie de sumas encadenadas que van acumulando los
retrasos, por lo que el tiempo que transcurre hasta que se genera la salida correcta es proporcional al
número de bits a sumar, circunstancia que hace desaconsejable utilizar este tipo de sumador cuando el
número de bits es grande.

Veamos otra alternativa de implementación, también introducida en el ejemplo 5.1: un sumador de n


bits es un sistema combinacional con n+1 salidas y 2n+1 entradas, luego realiza n+1 funciones de
2n+1 variables, evidentemente implementables en forma de red de dos niveles de puertas lógicas.
Esta solución, si bien implica un retardo casi independiente de n, presenta sin embargo algunos
inconvenientes importantes. Así, por ejemplo, cuando n es grande se precisan puertas con gran
número de entradas y un conexionado complejo. Por otra parte el resultado no es generalizable, es
decir, si se desea hacer un sumador de un número de entradas diferente hay que rediseñarlo todo
desde el principio.

a a b a b
n-1 bn-1 1 1 0 0
....

Generador de
C C
out acarreos in
....
a
n-1 bn-1 C
n-1
a
1 b1 C
1
a
0 b
0 C
0

Sumador Sumador Sumador


de 1 bit .... de 1 bit de 1 bit

s s s
n-1 1 0

Figura 5.31 Sumador de n bits con acarreo anticipado

© los autores, 1998; © Edicions UPC, 1998.


192 Diseño digital
________________________________________________________________________________

Una tercera alternativa, la más utilizada en la práctica, es el denominado sumador de acarreo


anticipado (en inglés, "carry lookahead adder"). Este tipo de sumador genera todos los acarreos de
forma simultánea, lo cual permite a su vez realizar todas las sumas de forma simultánea. La figura
5.31 muestra un posible esquema de un sumador de acarreo anticipado que utiliza sumadores totales
de 1 bit y un módulo combinacional específico que se encarga de generar los acarreos.

El diseño del generador de acarreos puede abordarse a partir de las expresiones algebraicas de las
sumas y los acarreos parciales si y Ci+1. Si tomamos las expresiones correspondientes tenemos (0•i•n-
1)

Ci+1 = ai bi + C i ( ai ⊕ bi ) = Gi + Ci Pi
si = ai ⊕ bi ⊕ Ci = Pi ⊕ Ci

Donde hemos definido unas variables intermedias Gi = ai bi , generación de acarreo en la etapa i-


ésima, y Pi = (ai ⊕ bi ) , propagación del acarreo de la etapa anterior. Por tanto podemos escribir

C 0 = C in
C 1= G0 + C0 P0
C 2 = G1 + C1 P1 = G1 + G0 P1 + C 0 P0 P1
C3 = G2 + C2 P2 = G2 + G1P2 + G0P1P2 + C 0 P0 P1 P2 .... etc

luego es posible obtener los acarreos Ci mediante una red combinacional a partir de los términos Gi,
Pi y C0, es decir, de las entradas ai, bi y Cin.

a)
a C
0 G in C
0 0 s
b M P 0
0 P 0 b)
0
a1 G1 C
1 s
de acarreos

M
Generador

b P 1
1 P1 1
a2 G2 C
M 2 s
b P 2
2 P 2
2
a G C
3 M 3 3 s
b P 3
3 P 3
3
C
out

Figura 5.32 a) Sumador de 4 bits con acarreo anticipado. b) Realización del módulo M

© los autores, 1998; © Edicions UPC, 1998.


Diseño de circuitos combinacionales 193
________________________________________________________________________________

La figura 5.32 muestra el esquema completo de un sumador de 4 bits que utiliza el generador de
acarreos implementado mediante puertas AND-OR de la figura 5.33; nótese que el hecho de disponer
de los términos Pi permite sustituir los sumadores totales de 1 bit por simples puertas XOR en la
obtención de los bits de suma si.

C in
G0 C0
P0
C1
G1
P1

C2

G2
P2

C3

G3
P3
Cout

Figura 5.33 Generador de acarreos

El ejemplo 5.7 muestra la utilización de sumadores para realizar otros circuitos de tipo aritmético,
concretamente un multiplicador.

Ejemplo 5.7

El circuito de la figura 5.34 multiplica en formato binario una cantidad de 4 bits (a3a2a1a0) por
otra de 2 bits (b1b0), siendo el resultado un producto de 6 bits (p5p4p3p2p1p0).

© los autores, 1998; © Edicions UPC, 1998.


194 Diseño digital
________________________________________________________________________________

a a a a
3 2 1 0

b b
1 0
a a a a
3 2 1 0
x b b
1 0
a b a b a b a b
3 0 2 0 1 0 0 0
+ a 3 b1 a 2 b1 a 1 b1 a 0 b1
Sumador Sumador Sumador Sumador
de 1 bit de 1 bit de 1 bit de 1 bit p p p p p p
5 4 3 2 1 0

p p p p p p
5 4 3 2 1 0

Figura 5.34 Multiplicador de 4x2 bits y algoritmo utilizado

Tal como muestra la misma figura, el algoritmo empleado es el más inmediato imaginable: cada cifra
(bit) ai se multiplica primero por b0, después por b1, y los productos se suman entre sí efectuando un
desplazamiento a la izquierda, con la ventaja añadida de que el producto de dos bits coincide con la
función AND.
_________________________________________________________________________________

5.3.6 Comparadores

Un comparador es un circuito combinacional que suele tener 2n entradas de datos (correspondientes a


dos cantidades enteras codificadas mediante n bits), tres salidas (A>B, A=B, A<B), y tres entradas de
encadenamiento (E>, E=, E<).

n
Comparador

A A B E > E = E < A>B A=B A<B


A>B A>B X X X 1 0 0
A=B A<B X X X 0 0 1
n A<B 1 0 0 1 0 0
B
A=B 0 1 0 0 1 0
0 0 1 0 0 1
E> E = E <

Figura 5.35 Comparador de n bits

© los autores, 1998; © Edicions UPC, 1998.


Diseño de circuitos combinacionales 195
________________________________________________________________________________

El funcionamiento de un comparador es muy simple (véase la estructura externa y la tabla de verdad


de la figura 5.5): sólo tiene sentido que se ponga a "1" una las tres salidas para cada combinación de
entrada y las otras dos queden en valor "0"; así las situaciones A>B y A<B activan la salida
correspondiente mientras que cuando se tiene A=B la decisión de qué salida se activa queda en manos
de las entradas de encadenamiento.

El diseño de un comparador puede abordarse con métodos y resultados muy similares a los vistos
para un sumador, siendo también las soluciones de tipo modular las más empleadas.

Comparador
A 7 ... A 4 4 a
> A>B
= A=B
B 7 ... B 4 4 b < A<B

> = <
Comparador

4
A 3 ... A 0 a
>
=
4
B 3 ... B 0 b <

> = <
"1"

Figura 5.36 Comparador de 8 bits

La figura 5.36 muestra un comparador de 8 bits, realizado encadenando comparadores de 4 bits. El


circuito compara los 4 bits de mayor peso: si son diferentes entre si el resultado estará ya decidido,
mientras que si son iguales el resultado pasa a depender de los 4 bits de menor peso; sólo cuando
éstos últimos también son iguales se activará la salida A=B.

Ejemplo 5.8

Vamos a realizar un sumador BCD; para ello recordemos que el algoritmo de suma BCD consta
de dos pasos (ver apéndice A): 1) sumar en binario, 2) comprobar si el valor obtenido es superior
a 9, en caso afirmativo es necesario efectuar una corrección (sumar 0110), mientras que en caso
negativo no es necesario efectuarla. Hay que generar, también, un acarreo de salida.

© los autores, 1998; © Edicions UPC, 1998.


196 Diseño digital
________________________________________________________________________________

El algoritmo expuesto puede realizarse mediante módulos estándar; así, la figura 5.37 muestra un
sumador de dos cifras BCD, donde puede verse que la corrección se efectúa cuando los cuatro
bits de menor peso de la suma binaria de A, B y Cin corresponden a un valor superior a 9 y/o
cuando dicha suma genera un acarreo no nulo (es decir, siempre que el valor de la suma de A y B
sea superior a 9).

A B
4 4
a b
C out Σ C in C in
s
Comparador

4 4
a
>
= a b
"9" 4 b <
C out Σ C in
> = < s
"1" 4
C out A+B

Figura 5.37 Sumador de dos cifras BCD

_________________________________________________________________________________

Ejercicio 5.8

Una posibilidad para encadenar comparadores es seguir un esquema de árbol, como se muestra en
la figura 5.38. Compruebe que, efectivamente, la realización propuesta es viable para comparar
números de 16 bits. Compare esta realización con la que se deriva de generalizar la estructura
propuesta en la figura 5.36.

© los autores, 1998; © Edicions UPC, 1998.


Diseño de circuitos combinacionales 197
________________________________________________________________________________

... A B ... B
A15 ... A B ... B
A11 A7... A 4 B7... B 4 A3... A 0 B3... B 0
11 15 11 8 11 8
4 4 4 4 4 4 4 4

> a b > a b > a b > a b


"1" = Comp. "1" = Comp. "1" = Comp. "1" = Comp.
< > = < < > = < < > = < < > = <

a a a a b 3 b 2 b 1b 0
> 3 2 1 0
"1" = Comparador
<
> = <

A>B A=B A<B

Figura 5.38 Comparador de dos números de 16 bits

_________________________________________________________________________________

5.3.7 Unidades aritmético-lógicas

Una ALU (Arithmetic and Logic Unit) es un sistema lógico combinacional capaz de realizar diversas
operaciones, lógicas o aritméticas, con los vectores de datos de entrada. El tipo de operación concreta
a realizar se selecciona mediante unas entradas adicionales de control.

A B

n n n n n n

Función u Función u ... Función u


Operación 1 Operación 2 Operación 2 m

n n n

S0
Multiplexor S1
S m-1
n
R

Figura 5.39 Esquema funcional de una unidad aritmético-lógica

© los autores, 1998; © Edicions UPC, 1998.


198 Diseño digital
________________________________________________________________________________

Un esquema genérico, más válido desde un punto de vista conceptual o funcional que correspondiente
a una implementación real, de una ALU sería el representado en la figura 5.39, donde las entradas de
datos son A y B y las de control S0 a Sm-1, lo que permiterealizar 2m funciones distintas.

Una ALU suele ser un circuito de una complejidad apreciable con una gran versatilidad de
funcionamiento; por tanto, es posible emplearla en multitud de aplicaciones diferentes, siendo por
ello fabricadas en volúmenes grandes con un costo individual razonable. Por otro lado es habitual
utilizar una ALU como componente básico de sistemas de procesamiento de datos más complejos
(por ejemplo microprocesadores), en los cuales la operación específica a realizar es seleccionada de
forma dinámica (es decir, que el mismo circuito puede realizar en momentos distintos operaciones
distintas) por un circuito de control que a su vez actúa de acuerdo con un programa (serie de
instrucciones) generado externamente por el usuario.

5.4 Diseño combinacional basado en módulos universales

Algunos de los módulos estándar presentados en el apartado anterior permiten sintetizar cualquier
función lógica. Así, por ejemplo, es posible realizar una función mediante decodificadores y puertas
OR; asimismo también es posible hacerlo mediante multiplexores. En este sentido dichos módulos
suelen denominarse universales. Esta posibilidad es útil sobre todo al sintetizar funciones
relativamente sencillas (es decir, con pocas entradas). En los subapartados 5.4.1 y 5.4.2 se ilustran los
procedimientos de diseño en ambos casos.

Adicionalmente existen otros módulos combinacionales universales, como las ROM (Read Only
Memory) y PLA (Programmable Logic Array), que también permiten la síntesis de funciones. Dado
que estos módulos presentan algunas especificidades, su presentación y discusión se realizarán más
adelante en el apartado 5.5.

5.4.1 Diseño combinacional con multiplexores

En su momento se vio que el funcionamiento de un multiplexor de 2n canales se puede describir


algebraicamente como

2n −1
y= ∑ x i mi (s )
i= 0

donde xi es el valor lógico presente en la entrada i-ésima y mi(s) es el minterm i-ésimo de las
variables de control.

© los autores, 1998; © Edicions UPC, 1998.


Diseño de circuitos combinacionales 199
________________________________________________________________________________

Por otra parte, una función lógica genérica de n variables xi expresada mediante la forma canónica en
suma de productos sería

2 n−1
f (x n−1, x n− 2 ,...., x1 ,x 0 )= ∑ mi (x) f (i)
i=0

Comparando las dos expresiones se observa que es posible sintetizar la función f utilizando un
multiplexor de 2n canales introduciendo las variables xi en las entradas de control y el valor f(i)
correspondiente en cada uno de los canales. Este procedimiento de síntesis se ilustra y discute en el
ejemplo 5.9.

Ejemplo 5.9

Vamos a estudiar algunas posibilidades de implementación mediante multiplexores de la función


lógica siguiente

f (x 2 , x1, x 0 ) = ∑ m(2 ,5,6)


3

Dado que se trata de una función de tres variables, el método acabado de sugerir implica en
principio utilizar un multiplexor de 8 canales (es decir,con 3 entradas de control): hay que
conectar las variables x2, x1 y x0 a las entradas de selección e introducir en cada uno de los
canales el valor ("0" o "1") que toma la función para cada combinación de dichas variables. La
figura 5.40 presenta la tabla de verdad de la función y la implementación descrita; nótese que el
paso de una a otra es inmediato.

x 2 x 1 x0 f 0
0 0 0 0 1
Multiplexor

0 0 1 0 1 2
3
0 1 0 1 f
0 4
0 1 1 0
5
1 0 0 0 6
1 0 1 1 7
1 1 0 1 2 1 0
1 1 1 0 x
2 x1 x0

Figura 5.40 Función de 3 variables sintetizada mediante un


multiplexor de 8 canales

© los autores, 1998; © Edicions UPC, 1998.


200 Diseño digital
________________________________________________________________________________

Llegados a este punto, una pregunta que podemos hacernos es si es posible implementar
funciones de n variables mediante multiplexores con menos de n entradas de control. La
respuesta es afirmativa, aunque para ello será necesario en general añadir algún módulo o
conjunto de puertas.

Vamos a implementar la función f mediante un multiplexor de 4 canales. Para ello aplicaremos a


f el teorema de Shanon, extrayendo por ejemplo las variables x2 y x1

f ( x 2 , x1, x 0 ) = x2 x1 f (0 ,0, x 0 ) + x 2 x1 f (0,1, x 0 ) + x2 x1 f (1,0, x 0 ) + x2 x 1 f (1,1, x0 )

Vemos que la expresión resultante incluye los 4 minterms de las variables extraídas (x2 y x1) y
cuatro funciones residuales de la variable restante (x0). Estas funciones pueden evaluarse
fácilmente

f (0,0, x 0 ) = f 0 ( x0 )= 0
f (0,1, x0 ) = f1 (x 0 ) = x 0
f (1,0, x 0 ) = f 2 ( x0 )= x 0
f (1,1,x 0 )= f 3 (x 0 )= x 0

Luego una realización de la función mediante un multiplexor de 4 canales sería la mostrada en la


figura 5.41 donde se ha conectado las variables x2 y x1 a las entradas de selección y las funciones
residuales fi(x0) a cada uno de los canales.

x2 x1 x0 f
0 0 0 0
Multiplexor

0 0
0 0 1 0
0 1 0 1 1
f
0 1 1 0 x 2
0
1 0 0 0
3
1 0 1 1 1 0
1 1 0 1
x2 x1
1 1 1 0

Figura 5.41 Función de 3 variables sintetizada con un multiplexor de 4 canales

En general las funciones residuales pueden obtenerse mediante puertas lógicas o bien mediante
multiplexores. La figura 5.42 muestra una realización de f utilizando un multiplexor de 2 canales
y puertas

© los autores, 1998; © Edicions UPC, 1998.


Diseño de circuitos combinacionales 201
________________________________________________________________________________

Multiplexor
f ( x2 ,x1 , x0 ) = x
2 0
= x1 f ( x2 ,0, x0 ) + x1 f (x 2 ,1,x 0 )= f
x
= x1( x2 x 0 )+ x1 (x 0 ) 0
1

x1

Figura 5.42 Función de 3 variables sintetizada con un multiplexor de 2 canales

_________________________________________________________________________________

Ejercicio 5.9

Obtenga la implementación mediante multiplexores de la función del ejemplo 5.9. Hágalo con
un multiplexor de 4 canales, usando como variables de selección x1 y x0. Inténtelo también
usando x2 con un multiplexor de 2 canales. Discuta el efecto de la elección de variables de
selección sobre la realización que de ella se deriva.
_________________________________________________________________________________

El procedimiento seguido en el ejemplo 5.9 puede expresarse de forma general: una función lógica de
n variables se puede sintetizar mediante un multiplexor de 2p canales (p•n) sin más que utilizar p
variables como variables de selección, atacando las entradas del multiplexor mediante 2p funciones
residuales de las n-p variables restantes.

f0 (x n-1 ... x )p 0
Multiplexor

f1 (x n-1 ... x )p 1
f (x n-1 ... x1 x)0
...

p
f p (x n-1 ... x )p 2 -1
2 -1
p-1 1 0
...
x p-1 x1 x 0

Figura 5.43 Función de n variables sintetizada con un multiplexor de 2p


canales

Es claro que la complejidad del circuito resultante y por tanto el coste de su implementación
dependen de qué variables se utilicen como variables de control y cuáles se utilicen para las funciones

© los autores, 1998; © Edicions UPC, 1998.


202 Diseño digital
________________________________________________________________________________

residuales. Para decidir qué partición de variables es óptima desde este punto de vista en general es
necesario analizar cada una de las particiones posibles y simplificar las funciones residuales.

La implementación a base de multiplexores realizados mediante redes de interruptores (ver figura


5.23.b) se adapta particularmente bien a la metodología de diseño propuesta. Recordemos que su
funcionamiento es muy sencillo: cada combinación de valores en las entradas de selección (aplicadas
a las puertas de los transistores) hace conducir a los transistores de una y sólo una de las ramas, con lo
que se transmite a la salida el valor lógico presente en su entrada y se ignoran los demás. La figura
5.44.a muestra la utilización de una red de interruptores (equivalente a un multiplexor de 4 canales)
para sintetizar la función del ejemplo 5.9.

a) 0
b)
0
x0
f x0
x0 f
x0
x0

x2 x2 x1 x1
x2 x2 x1 x1

Figura 5.44 Función de 3 variables sintetizada con redes de interruptores

Una particularidad del diseño basado en redes de interruptores es que con frecuencia es posible
reducir el número de ramas y transistores necesarios para implementar una función. De hecho sólo es
necesario asegurar que para cada combinación de las variables de selección conduzca únicamente una
de las ramas. Así en la función de nuestro ejemplo podemos agrupar los términos cuya entrada sea la
misma

f (x 2 , x1, x 0 ) = x2 x1 (0) + x2 x 1( x0 )+ x 2 x1 (x 0 ) + x2 x1 (x 0 )=
= x 2 x1 (0 ) + x1 (x 0 ) + x 2 x1( x0 )

resultado que conduce directamente a la estructura en tres ramas de la figura 5.44.b, donde podemos
observar una significativa reducción del número de transistores necesarios.

5.4.2 Diseño combinacional con decodificadores

Al presentar los decodificadores binarios se incidía en el hecho de que cada una de las salidas
coincide algebraicamente con un minterm diferente de las variables de entrada

© los autores, 1998; © Edicions UPC, 1998.


Diseño de circuitos combinacionales 203
________________________________________________________________________________

yi = E⋅ mi ( x) 0 ≤ i ≤ 2 n −1

Por tanto es inmediato sintetizar directamente cualquier función de n variables mediante un


decodificador n:2n y una puerta OR que agrupe las salidas correspondientes a los minterms que
aparecen en la expresión canónica como suma de productos de la función.

Veamos por ejemplo la implementación de un generador de un bit de paridad par para un código de 3
bits. Su tabla de verdad y el mapa de Karnaugh se dan en la figura 5.45, donde puede observarse que
esta función no admite simplificación.

a b c f
0 0 0 0
0 0 1 1 a\bc 00 01 11 10
0 1 0 1
0 1 1 0 0 0 1 0 1
1 0 0 1
1 0 1 0 1 1 0 1 0
1 1 0 0
1 1 1 1

Figura 5.45 Función de paridad par para tres bits

La figura 5.46.a muestra la implementación de la función de paridad mediante un decodificador


binario 3:8 y una puerta OR, mientras que la figura 5.46.b lo hace utilizando un decodificador 3:8 con
salidas activas con nivel bajo.

a) b)
0 0
Decodificador

Decodificador

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

Figura 5.46 Función de paridad par realizada mediante decodificadores 3:8

© los autores, 1998; © Edicions UPC, 1998.


204 Diseño digital
________________________________________________________________________________

5.5 Diseño combinacional con módulos programables

En este apartado se presentan dos estructuras estándar más, la memoria de sólo lectura (ROM, Read
Only Memory) y la matriz lógica programable (PLA, Programmable Logic Array), utilizadas con
frecuencia para implementar funciones lógicas de complejidad apreciable, es decir, con un número de
variables mediano o alto.

Como se verá más adelante estas estructuras presentan una serie de particularidades frente a los
módulos estándar vistos hasta ahora, tanto respecto a su tamaño habitual (nº de entradas y/o de
salidas) como respecto al método de trabajo con ellas (es necesario programarlas, es decir, fijar su
contenido, antes de utilizarlas), que justifican el tratamiento aparte que se les da en este texto.

5.5.1 Diseño combinacional basado en ROM

Una ROM de 2nx k bits es un circuito lógico combinacional con n entradas y k salidas que
implementa k funciones lógicas de n variables. Como ya es habitual, el circuito puede disponer
también de entrada(s) adicional(es) de habilitación. La figura 5.47 muestra el esquema genérico de
una ROM junto con una descripción de su funcionamiento.

2n −1
n ROM k
zi = f i (x n−1,..,x1 , x0 ) = ∑ f i ( j)m j (x )
x z j=0
2 nx k
0 ≤i ≤ k − 1

Figura 5.47 Estructura externa y funcionamiento de una memoria ROM de 2nx k bits

La figura 5.48 muestra la posible estructura interna de una ROM de 2nx k bits, donde puede verse que
ésta consta de dos módulos o matrices: siguiendo el camino entrada-salida nos encontramos primero
con un decodificador, es decir con una etapa o matriz de 2n puertas AND que realiza todos los
productos (minterms) posibles con las variables de entrada, y luego con una etapa o matriz de k
puertas OR, que permite obtener cada una de las salidas como la suma lógica de los minterms que a
ellas se conecten.

La estructura descrita coincide formalmente con una red AND-OR de dos niveles mediante la cual se
pueden implementar de forma canónica funciones lógicas cualesquiera. También podemos asociar

© los autores, 1998; © Edicions UPC, 1998.


Diseño de circuitos combinacionales 205
________________________________________________________________________________

fácilmente la estructura de una ROM con el método de realización de funciones con decodificadores
y puertas descrito en el apartado 5.4.2.

Decodificador
E
1 z0
x0 0 2 Matriz z1
x1

...
1 OR

...
z k-1
...

x n-1 n
n-1 2 -1

Figura 5.48 Estructura interna de una ROM de 2nx k bits

Por otra parte es posible interpretar el funcionamiento de una ROM en términos de memoria: una
ROM almacena un vector (palabra) de k bits en cada una de las 2n salidas del decodificador
(posiciones de memoria), de manera que cada combinación de entrada (dirección) implica leer, es
decir, obtener a la salida la palabra almacenada en la posición de memoria correspondiente. Desde
este punto de vista la capacidad total de una ROM es de 2nx k bits (2n palabras x k bits/palabra). El
ejemplo 5.10 ilustra los conceptos presentados para el caso de una ROM de muy pequeñas
dimensiones.

Ejemplo 5.10

El esquema de la figura 5.49.a corresponde a una ROM de 4x4 bits. El esquema de la figura
5.49.b corresponde al mismo circuito utilizando una representación abreviada para la matriz OR
(que no implica necesariamente utilizar funciones cableadas).

a) b)
Decodificador

Decodificador

0 0
x0 0 1 x0 0 1
x1 1 2 x1 1 2
3 3

z z z z z z z z
0 1 2 3 0 1 2 3

Figura 5.49 ROM de 4x4 bits realizada con puertas

© los autores, 1998; © Edicions UPC, 1998.


206 Diseño digital
________________________________________________________________________________

Las cuatro funciones de dos variables realizadas por el circuito vienen determinadas por las
conexiones realizadas en la matriz OR; así una conexión a una puerta OR implica un minterm en
la expresión canónica SoP de la función correspondiente o, equivalentemente, un "1" en su tabla
de verdad, tal como se muestra en la figura 5.52.

X1 X0 Z0 Z1 Z2 Z3
z0 = m 0 + m2 = x1 x0 + x1x 0 = x 0
0 0 1 1 0 1
0 1 0 1 1 0 z1 = m0 + m1 + m2 = x1x 0 + x1 x0 + x1x 0 = x1 x 0
1 0 1 1 1 0 z2 = m1 + m2 = x1x 0 + x1 x 0 = x1 ⊕ x 0
1 1 0 0 0 1
z3 = m0 + m3 = x1 x0 + x1x 0 = x1 ⊕ x0
Direcciones Palabras

Figura 5.50 Funciones implementadas por el circuito del ejemplo 5.10

La interpretación del circuito como memoria es también inmediata puesto que hay cuatro
posiciones de memoria que almacenan palabras de 4 bits. Así por ejemplo la combinación de
entrada x1=1, x0=0 (dirección 10) provoca la salida z0=1, z1=1, z2=1, z3=0, es decir la lectura de
la palabra contenida en la penúltima posición de memoria (1110).

La figura 5.51 muestra una posible realización mediante transistores del circuito de nuestro
ejemplo. Concretamente se utiliza una estructura en forma de dos bloques o matrices de puertas
pseudo-NMOS.

Aparentemente esta ROM consta de dos matrices de puertas tipo NOR (y no AND-OR), aunque
si se realiza un análisis menos superficial puede verse que las cuatro salidas de la primera matriz
NOR (A, B, C, D) coinciden con los cuatro minterms de las variables de entrada, con lo que ésta
equivale desde el punto de vista funcional a un decodificador

A= x1 + x 0 = x1x 0 = m0
B= x1 + x0 = x1x 0 = m1
C = x1 + x 0 = x1 x0 = m2
D= x1 + x0 = x1x 0 = m3

Por otra parte la segunda matriz consta de puertas NOR seguidas de inversores, con lo que
equivale funcionalmente a una matriz OR: la presencia de un transistor en una puerta NOR
equivale a un minterm en la expresión canónica de la función de salida correspondiente y a un
"1" en su tabla de verdad.

© los autores, 1998; © Edicions UPC, 1998.


Diseño de circuitos combinacionales 207
________________________________________________________________________________

V DD

x1 x0 z z z z
0 1 2 3

Figura 5.51 ROM del ejemplo 5.10 realizada con tecnología pseudo-NMOS

_________________________________________________________________________________

Es evidente que el contenido de una memoria ROM es fijo durante su utilización como módulo dentro
de un circuito digital, pudiéndose distinguir diversos tipos en función de quién graba o en qué
momento se fija dicho contenido. Así, suele utilizarse la denominación ROM o ROM programada por
máscara cuando el contenido ha sido fijado durante el proceso de fabricación, y la denominación
PROM o FPROM (Field Programmable ROM) cuando es el mismo usuario el encargado de fijarlo a
partir de una estructura (normalmente un circuito integrado) acabada pero "vacía".

A su vez pueden distinguirse dos grandes grupos entre las memorias ROM programables: aquéllas
cuyo procedimiento de grabación es irreversible y las denominadas EPROM (Erasable PROM), cuyo
contenido puede ser grabado y borrado varias veces. En estas últimas el procedimiento más
tradicional de borrado es la exposición a luz ultravioleta, aunque también las hay borrables
eléctricamente (EEPROM, Electrically Erasable PROM).

La capacidad de las memorias ROM disponibles a nivel comercial puede ser bastante grande. Por
ejemplo, una ROM de 64Kx 4 permite implementar hasta cuatro funciones de 16 variables, por lo que
su eventual programación implica dar el valor "0" o "1" a un total de 218 bits. Ello justifica la
necesidad de utilizar herramientas informáticas que ayuden en la tarea de programar el contenido de
este tipo de memorias.

© los autores, 1998; © Edicions UPC, 1998.


208 Diseño digital
________________________________________________________________________________

La implementación de funciones lógicas mediante ROM supone almacenar sus tablas de verdad
completas, lo cual a primera vista parece una estrategia de diseño exagerada. Sin embargo, cuando la
función es compleja y su realización mediante módulos estándar más pequeños se hace complicada, la
utilización de ROM u otros módulos lógicos programables puede suponer ventajas:

a) El coste de diseño de la estructura de una memoria ROM es bajo puesto que ésta
es conocida y regular. Asimismo, un mismo tipo de circuito ROM puede utilizarse en multitud
de aplicaciones distintas, por lo que suele ser fabricado como circuito integrado en grandes
cantidades, reduciendo su coste individual.

b) El coste de la grabación de una memoria ROM también es reducido, tanto en el


caso de ser realizada por parte del fabricante como por parte del usuario. Como el contenido a
fijar son tablas de verdad de funciones, basta con utilizar métodos de descripción y/o diseño de
tipo "canónico", por tanto formalmente sencillos y de coste acotado.

c) El coste de un sistema combinacional realizado con circuitos integrados estándar


depende en gran medida del número de dichos circuitos que intervienen. La utilización de
ROM a menudo disminuye dicho número.

5.5.2 Diseño combinacional con PLA

Una matriz lógica programable (PLA) de nx r x k es un circuito lógico combinacional con n entradas y
k salidas que implementa k funciones lógicas de n variables utilizando r productos, siendo r<2n.
Adicionalmente el circuito puede disponer de entrada(s) de habilitación.

n 2n Matriz r Matriz k
x z
AND OR

Figura 5.52 Esquema genérico de una PLA

La figura 5.52 muestra la estructura interna genérica de una PLA; allí vemos que ésta se compone de
tres etapas: n inversores (que permiten disponer de las variables de entrada directas y negadas), r
puertas AND (que realizan productos de las variables de entrada) y k puertas OR (que realizan sumas
de los productos anteriores). Una PLA realiza por tanto una implementación en forma de suma de
productos no canónica de k funciones lógicas.

© los autores, 1998; © Edicions UPC, 1998.


Diseño de circuitos combinacionales 209
________________________________________________________________________________

Ejemplo 5.11

Calcular el tamaño mínimo que debe tener una PLA para implementar un multiplicador de 2
números enteros codificados en binario de 2 bits.

El número de entradas está fijado por el enunciado, a 4, 2 para cada entrada. El número de salidas
será también de 4, ya que el valor máximo para el resultado es de 3x3=9 (1001). Para saber el
número de productos necesario, hay que simplificar las salidas en forma de suma de productos.
Dadas las expresiones simplificadas:

p3 = a1a0b1b0
p2 = a1b1b0 + a1a0 b1b0
p1 = a1a0 b1 + a1b1b0 + a1a0b1b0 + a0b1b0
p0 = a0 b0

Observamos que hacen falta 7 productos. Por tanto, el tamaño mínimo para la PLA será de
4x7x4. Podemos observar dicha implementación, representada de forma compacta en la figura
5.53.

a1
a0
b1
b0

p3

p2

p1

p0

Figura 5.53 Esquema de la PLA del ejemplo 5.11

_________________________________________________________________________________

Ejercicio 5.10

Discuta qué tamaño mínimo debe tener una PLA que implemente la función suma de dos
números enteros de 2 bits codificados en binario.
_________________________________________________________________________________

© los autores, 1998; © Edicions UPC, 1998.


210 Diseño digital
________________________________________________________________________________

Nótese que en una PLA, a diferencia de una ROM, no se realizan todos los 2n productos posibles de
las n variables de entrada (minterms) sino solamente un máximo de r, siendo por tanto la PLA un
módulo de menor tamaño mediante el cual se pueden implementar k funciones de n variables siempre
y cuando en las expresiones algebraicas simplificadas de estas funciones no aparezcan en total más de
r productos. Esta es una diferencia sustancial con respecto a las memorias ROM, que almacenan la
tabla de verdad completa. En el caso de que el número de productos r a utilizar sea pequeño frente a
2n, la reducción en tamaño utilizando una PLA en lugar de una ROM puede ser importante.

De forma análoga a las memorias ROM, las PLA pueden ser programables o bien por el fabricante
(por máscara) o bien directamente por el usuario (en campo), siendo estas últimas las más utilizadas.
Respecto a la programabilidad de la estructura, a priori pueden encontrarse dos variantes: a) PLA con
matriz AND programable y matriz OR programable, b) matriz AND programable y matriz OR fija. El
primer caso suele denominarse genéricamente PLA, mientras que el segundo caso suele denominarse
PAL (nombre comercial patentado por Monolithic Memories Inc). Un tercer caso, matriz AND fija y
matriz OR programable, coincide de facto con una estructura ya vista anteriormente: la memoria
ROM.

Descripción y
edición
del diseño
Tablas de verdad,
expresiones
algebraicas,
Compilación y
cronogramas, etc.
optimización

Otros diseños Mezcla

Simulación lógica
y/o eléctrica

Librerías o
Elección del
catálogos de los
dispositivo
fabricantes

Generación del
conexionado Grabador
óptimo

Figura 5.54 Entorno informático de diseño y grabación de módulos


lógicos programables

© los autores, 1998; © Edicions UPC, 1998.


Diseño de circuitos combinacionales 211
________________________________________________________________________________

Como se ha razonado más arriba, las ventajas de las PLA frente a las ROM derivan básicamente de su
menor tamaño, mientras que sus inconvenientes provienen de la limitación del número de productos,
que obliga a simplificar conjuntamente las funciones y que hace que no todos los conjuntos de k
funciones de n variables puedan implementarse mediante una PLA de 2nx r x k.

Finalmente, la necesidad de utilizar herramientas informáticas de ayuda al diseño cuando se trabaja


con PLA, PAL u otros dispositivos lógicos programables no canónicos es tanto o más evidente que
cuando se trabaja con ROM. Estas herramientas suelen constar de una parte de hardware
(normalmente el dispositivo grabador) más un software de control, descripción y depuración del
diseño. El diagrama de bloques de la figura 5.54 muestra un entorno genérico de diseño y grabación
de dispositivos lógicos programables.

5.6 Cuestiones y problemas

Cuestiones

C5.1 Discuta las ventajas e inconvenientes del diseño modular frente al de dos niveles. Nota: para
implementar un sumador de dos números de tres bits a dos niveles hacen falta: 3And2 (3 puertas
AND de 2 entradas), 6And3, 18And4, 4And5, 1Or2, 1Or6, 1Or7 1 Or16 y 6 inversores. Compare los
diseños a nivel de puertas y transistores usados(CMOS) así como del retardo asociado.

C5.2 Razone el interés del uso de módulos con salidas tri-state en el caso de conexiones a líneas de
transmisión compartidas (comúnmente llamadas buses), donde más de un módulo conectado a ellas
puede intentar forzar un "0" o un "1" lógicos.

C5.3 Analice la siguiente estructura para E=1. Si las entradas son números enteros codificados en
binario, ¿en qué código quedan a la salida?

E E
Decodificador

Codificador

y3 x3
x y2 x2 y
1 1
x0 y1 x1 y0
y0 x0

© los autores, 1998; © Edicions UPC, 1998.


212 Diseño digital
________________________________________________________________________________

Generalice esta estructura con un codificador, un decodificador, y una matriz de conexiones, para
traducir entre cualesquiera dos códigos de n bits. ¿Qué modificaciones deberían hacerse para que
el código de salida usara más bits de los necesarios (añadiera redundancia)?

C5.4 Analizce la expresión de funcionamiento para un multiplexor en función de los minterms de las
variables de selección, dada en la sección 5.3.3.

2 −1
n

y=E ∑ x i mi (s )
i=0

Encuentre una expresión dual para un multiplexor con las salidas y entradas activas bajas, en
función de los maxterms.

C5.5 Discuta el compromiso entre retardo asociado a una función combinacional y área de silicio
ocupada por el circuito correspondiente, para las dos implementaciones propuestas para el sumador
(con y sin cálculo anticipado de acarreos).

C5.6 A partir de la descripción de la codificación en complemento a 2 dada en el apéndice A,


proponga una estructura para un bloque sumador y restador en dicha codificación, usando módulos
presentados en este capítulo.

n n
a b ( a )Ca2 + ( b) Ca2 si s=0
c= 
s Bloque o ( a )Ca2 − (b )Ca2 si s =1
c
n o =1 si existe desbordamiento

C5.7 Repita la cuestión 5.5, comparando esta vez las dos estrategias propuestas en el subapartado
5.3.6 para encadenar comparadores.

C5.8 Evalue el interés del siguiente criterio para elegir las variables de selección en una
implementación de función lógica con multiplexores: Tomar las variables que más veces aparezcan
en la expresión simplificada de la función. Busque un ejemplo donde este criterio no sea el óptimo
para minimizar las puertas adicionales necesarias.

C5.9 Proponga un método de implementación de funciones con decodificadores con salidas activas
bajas y puertas AND, relacionado con la expresión canónica de producto de maxterms.

C5.10 Razone por qué con una PLA de nx rx k podría no ser posible realizar cualquier conjunto de k
funciones lógicas de n variables de entrada.

© los autores, 1998; © Edicions UPC, 1998.


Diseño de circuitos combinacionales 213
________________________________________________________________________________

Problemas

P5.1 Para realizar un comparador de números enteros de 4 bits encadenable, se ha pensado en una
estructura modular como la de la figura. Diseñe los módulos M1. Diseñe, de forma análoga, otro
comparador, con las entradas y salidas de encadenamiento activas bajas.

a 0b 0 a 1b 1 a 2b 2 a 3b 3

E< A> B
M1 M1 M1 M1 A= B
E> A< B

P5.2 Se desea diseñar un sistema cuya entrada A es un número entero de n cifras codificado en BCD.
El sistema debe tener 4 salidas, que indiquen si dicho número es múltiplo de 2, de 3, de 4 y/o de 5.
Diseñe el sistema de forma modular. Se recomienda empezar con un número concreto de cifras, y
despues generalízelo.

A n-1 A1 A0
4 ... 4 4

D2 1 si A = k ⋅i, con k = 0,1, 2,...


Bloque a diseñar D3 Di = 
D4  0 en otro caso
D5

P5.3 Analice la siguiente estructura, suponiendo que los módulos están siempre habilitados (E=1), y
sabiendo que el multiplexor cuádruple actúa como cuatro multiplexores con las mismas variables de
selección. Obtener una implementación equivalente con puertas AND, OR y NOT.

E
E y7 x0
a x 00 y6 x1
a x 01 z0
Decodificador

y5 x2
Cuad. Multiplexor

Multiplexor

b x 10 x0
y4 x3
b x 11 z1 x1 z o
y3 x4
x2
c x 20 y2 x5
z2
c x 21 y1 x6
x 30 y0 x7
"0" x 31 z3 s2 s1s0
E
s
d e f g

© los autores, 1998; © Edicions UPC, 1998.


214 Diseño digital
________________________________________________________________________________

P5.4 Analice la función lógica que realiza el siguiente logigrama. Intente identificar bloques
repetidos, para analizarlos por separado y después componer las funciones.

a3
a2

a1
a0
b0 z1
b1 z0

b2
b3

P5.5 Analice la función lógica realizada por el siguiente esquema de bloques. Encuentre una
especificación de alto nivel (pensando en D y R como números enteros codificados en binario).
Proponga una implementación alternativa con menos bloques y/o puertas.

y0 x0
y1 x1 "1"
Codificador Bin.
Decodificador

y2 x2
D0 x0 y0 Ci
y3 x3
D1 x1 y4 y1 A
x4
Sumador

D2 x2 y2 R0
y5 x5
S R1
y5 x6 D0 R2
y7 x7 D1 B
E E D2 Co
"0" "1"

© los autores, 1998; © Edicions UPC, 1998.


Diseño de circuitos combinacionales 215
________________________________________________________________________________

P5.6 Proponga dos realizaciones a nivel de transistores para un multiplexor de 8 canales sin entradas
de habilitación, una usando puertas de transmisión CMOS y, la otra siguiendo el diseño CMOS
convencional (indicando tanto la red PMOS como la NMOS). Compare ambas realizaciones en
cuanto a complejidad, retardos, versatilidad del diseño, etc.

P 5.7 Implemente la función lógica f (a,b,c,d ) = ∑ m(1,3,4,9,14,15) usando:


4

a) Un multiplexor de 8 canales.
b) Un multiplexor de 4 canales y puertas NOR.

P 5.8 Diseñe un sumador encadenable de 2 cifras en base 3 ( x ∈{0,1, 2}) codificadas en binario
natural, con multiplexores de 8 canales y puertas NAND.

P 5.9 Proponga un encadenamiento para ROMs de 8 palabras de 4 bits, usando multiplexores, para
implementar 4 funciones que dependen de las mismas 5 variables de entrada.

P 5.10 Dado el circuito de la figura, identifique qué módulo de los presentados en éste capítulo
implementa, y en que tecnologia. Encuentre la tabla de verdad de las funciones de salida.

V DD
V DD

Z1 Z2 Z3 Z4 Z5 Z6
A B

© los autores, 1998; © Edicions UPC, 1998.


216 Diseño digital
________________________________________________________________________________

P 5.11 Evalue el tamaño mínimo que deben tener las matrices AND y OR de una PLA que permita
obtener como resultado el cuadrado, codificado en binario natural, de una cifra BCD. ¿Cuál debería
ser este tamaño si la entrada se codifica en BCD exceso 3?

P 5.12 Una cifra BCD está formada por los bits a1a0b1b0, de pesos 8,4,2,1 respectivamente. Se desea
diseñar un circuito combinacional que haga la comparación de a1a0 con b1b0 (entendidos como
números binarios de 2 bits). Exprese las tres salidas del comparador, a>b, a=b y a<b, como suma
mínima de productos. Diseñe el circuito usando multiplexores de 4 canales y puertas lógicas.
Diséñelo encadenando 2 decodificadores de 3 entradas. Considere también la posibilidad de
realizarlo utilizando un solo decodificador, aprovechando las inespecificaciones. ¿Qué dimensiones
mínimas debería tener una PLA que permitiera implementar este circuito?

© los autores, 1998; © Edicions UPC, 1998.