Beruflich Dokumente
Kultur Dokumente
Introduccin
Introduccin
En las ltimas dcadas hemos asistido a un rpido desarrollo de los sistemas electrnicos digitales,
origen y consecuencia del crecimiento de las redes de comunicaciones, de los sistemas de control y, en
particular, de la aparicin y la utilizacin masiva de los ordenadores.
El crecimiento en complejidad de los circuitos y los sistemas digitales ha hecho posible el desarrollo
de sistemas con unas potencialidades impensables unos aos atrs. En particular, el nmero de
transistores en un circuito integrado ha crecido de forma espectacular en los ltimos 30 aos, por lo
que resulta arriesgado realizar previsiones sobre la evolucin a largo plazo.
Simultneamente con los avances tecnolgicos, existe una creciente oferta de nuevas posibilidades que
obligan al diseador de sistemas digitales a adaptar progresivamente sus estrategias de diseo a dichas
novedades.
En una primera poca, sobre los aos 60, los ingenieros utilizaban en sus diseos circuitos integrados
digitales sencillos, fabricados masivamente, que deban ser interconectados sobre una placa de forma
adecuada para lograr la funcionalidad requerida. Estos circuitos incluan un pequeo nmero de puertas
lgicas (del orden de 10) y constituyen lo que hoy da se denominan circuitos de pequea escala de
integracin (SSI, small scale integration).
Los circuitos integrados digitales disponibles comercialmente fueron sofisticndose a medida que era
posible integrar un mayor de nmero de transistores, y por tanto de puertas lgicas, sobre un mismo
sustrato, incluyendo una serie de bloques o mdulos lgicos estndar de cierta complejidad. Se habla
entonces de circuitos de escala de integracin media (MSI, medium scale integration).
Posteriormente, la posiblidad de integrar varios miles de puertas en un solo circuito integrado, lo que
se ha dado en denominar alta escala de integracin (LSI large scale integration), y la aparicin de
circuitos de aplicacin general cuya funcionalidad concreta depende de una programacin por parte del
usuario obligaron a un cambio del modo de abordar el diseo de los sistemas digitales complejos. Un
ejemplo de estructura de este tipo es el microprocesador, un potente circuito digital de uso general cuya
funcionalidad precisa se establece mediante programacin. De esta forma un mismo circuito puede ser
utilizado para diferentes aplicaciones sin ms que modificar el programa que lo controla.
los autores, 1998; Edicions UPC, 1998. Quedan rigurosamente prohibidas, sin la autorizacin escrita de los titulares del "copyright", bajo las sanciones
establecidas en las leyes, la reproduccin total o parcial de esta obra por cualquier medio o procedimiento, comprendidos la reprografa y el tratamiento
informtico, y la distribucin de ejemplares de ella mediante alquiler o prstamo pblicos, as como la exportacin e importacin de ejemplares para su
distribucin y venta fuera del mbito de la Unin Europea.
Diseo digital
_________________________________________________________________________________
Finalmente, desde hace algunos aos es posible integrar decenas de miles de puertas en un nico
circuito integrado, lo que da lugar a la muy alta escala de integracin (VLSI very large scale
integration).
Dentro del contexto VLSI han hecho su aparicin nuevas posiblidades de diseo. Por ejemplo los
circuitos integrados de aplicacin especfica (ASIC Application Specific Integrated Circuits), circuitos
realizados a medida de un usuario y una aplicacin concretos, cuya utilizacin es cada vez ms general.
Dentro del concepto genrico de ASIC existen comercialmente multitud de variantes, que podemos
clasificar en dos grandes grupos:
1) Circuitos lgicos programables (PLD, programmable logic devices): El circuito integrado
comercializado por el fabricante dispone de un conjunto de puertas y mdulos lgicos estndar,
cuya interconexin no est definida. Estas interconexiones pueden ser programadas a la medida de
una funcionalidad concreta mediante la utilizacin de un equipo de desarrollo (software+hardware)
adecuado. Dentro de este grupo podemos incluir multitud de estructuras comerciales: PROM
(programmable read only memory), PAL (programmable array logic), GAL (general array logic),
FPGA (field programmable gate array), etc.
2) Circuitos integrados fabricados a medida (custom): El usuario tiene la posibilidad de
interaccionar directamente con el fabricante de circuitos integrados, de forma que el producto final
realizado por ste ltimo es, incluyendo una parte del proceso de fabricacin, especfico para un
usuario y una aplicacin concretos. Dentro de este grupo podemos distinguir dos modalidades. Por
un lado los circuitos semi-custom, en los cuales slo algunas etapas de su proceso de fabricacin
son diseadas de forma especfica, y por el otro los full-custom, donde el diseo y la fabricacin
son totalmente especficos para un usuario y una aplicacin. A su vez, dentro del semi-custom hay
diversas posibilidades, desde el gate array (circuito integrado con una disposicin regular de
puertas, donde quedan por realizar fsicamente las pistas de interconexin y los contactos) hasta las
standard cells (circuito integrado a realizar en su totalidad a partir de una librera de mdulos
predefinidos ofrecida por el fabricante ms las interconexiones necesarias).
En resumen, el abanico de soluciones posibles para llevar a trmino el diseo de un circuito digital es
muy amplio: utilizacin de circuitos integrados estndar SSI y MSI, sistemas basados en
microprocesadores, circuitos lgicos programables y circuitos tipo custom. Entre ellas el diseador
debe elegir en funcin de diversas variables: nmero de unidades a producir, coste por unidad,
complejidad y coste del diseo, confidencialidad del diseo, urgencia, disponibilidad del equipo
necesario para el desarrollo, experiencia previa, etc.
En este contexto complejo se inscribe este libro, un objetivo del cual es ofrecer de forma clara y
ordenada los conceptos abstractos del diseo digital, imprescindibles sea cual sea la alternativa
finalmente escogida. Adicionalmente se introduce al lector en la realizacin, tanto a nivel elctrico
como fsico, de circuitos digitales en las tecnologas nMOS y CMOS, proporcionndole con ello las
herramientas bsicas necesarias parar abordar el diseo de circuitos integrados VLSI CMOS.
_________________________________________________________________________________9
Introduccin
R. Alcubilla
J. Pons
D. Bards
Barcelona, junio de 1995.
11
_________________________________________________________________________________
ndice
ndice
1.1
1.2
1.3
1.5
Definiciones.............................................................................................................15
Sistemas digitales combinacionales y secuenciales...........................................................17
Codificacin.............................................................................................................21
1.3.1 Codificacin de nmeros enteros ........................................................................23
1.3.2 Cdigos alfanumricos.....................................................................................27
1.3.3 Cdigos detectores de errores .............................................................................29
Cuestiones y problemas .............................................................................................30
2.1
2.2
2.3
2.4
12
Diseo digital
_________________________________________________________________________________
2.5
3.1
3.6
4.1
3.2
3.3
3.4
3.5
4.2
13
_________________________________________________________________________________
ndice
4.3
4.5
5.1
5.2
5.6
Por qu la realizacin a dos niveles no resuelve el problema del diseo combinacional? ....... 169
Diseo con redes modulares....................................................................................... 172
5.2.1 Construccin de redes modulares ...................................................................... 173
5.2.2 Anlisis y sntesis de redes modulares ............................................................... 176
Mdulos combinacionales estndar ............................................................................. 179
5.3.1 Decodificadores............................................................................................. 179
5.3.2 Codificadores................................................................................................ 182
5.3.3 Multiplexores............................................................................................... 185
5.3.4 Demultiplexores ........................................................................................... 188
5.3.5 Sumadores ................................................................................................... 190
5.3.6 Comparadores............................................................................................... 194
5.3.7 Unidades aritmtico-lgicas............................................................................. 197
Diseo combinacional basado en mdulos universales .................................................... 198
5.4.1 Diseo combinacional con multiplexores........................................................... 198
5.4.2 Diseo combinacional con decodificadores.......................................................... 202
Diseo combinacional con mdulos programables......................................................... 204
5.5.1 Diseo combinacional basado en ROM ............................................................. 204
5.5.2 Diseo combinacional con PLA....................................................................... 208
Cuestiones y problemas ........................................................................................... 210
6.1
4.4
5.3
5.4
5.5
6.2
14
Diseo digital
_________________________________________________________________________________
6.5
7.1
6.3
6.4
7.2
7.3
7.4
7.5
Apndice A
Apndice B
15
_________________________________________________________________________________
Este captulo pretende situar al lector en el campo de los sistemas electrnicos digitales, introduciendo
algunos conceptos fundamentales de uso constante a lo largo de este texto. Para ello, el apartado 1.1
presenta un conjunto de definiciones que pemiten un uso preciso de la terminologa. El apartado 1.2
discute los conceptos de sistema combinacional y sistema secuencial. Por ltimo el apartado 1.3
introduce el concepto de codificacin.
1.1 Definiciones
Un sistema electrnico digital es aquel que procesa seales elctricas digitales. Para el lector novel en
el rea de ingeniera es conveniente clarificar los significados precisos de cada uno de los trminos de la
frase anterior.
Se entiende por sistema una entidad fsica que recibe una serie de entradas o excitaciones y responde con
un conjunto de salidas. La figura 1.1 muestra la representacin genrica de un sistema.
Sistema
los autores, 1998; Edicions UPC, 1998. Quedan rigurosamente prohibidas, sin la autorizacin escrita de los titulares del "copyright", bajo las
sanciones establecidas en las leyes, la reproduccin total o parcial de esta obra por cualquier medio o procedimiento, comprendidos la reprografa y el
tratamiento informtico, y la distribucin de ejemplares de ella mediante alquiler o prstamo pblicos, as como la exportacin e importacin de ejemplares
para su distribucin y venta fuera del mbito de la Unin Europea.
16
Diseo digital
_________________________________________________________________________________
a)
b)
s(t)
s(t)
Veamos a continuacin un caso particular de sistema digital, el sistema lgico. Un sistema lgico
procesa seales lgicas. Una seal lgica o binaria es aquella que solamente puede tomar dos valores
fijos. Las seales lgicas son, por tanto, un caso particular de seal digital as como el sistema lgico
lo es de los sistemas digitales. Un ejemplo de seal lgica se muestra en la figura 1.3.
s(t)
En este texto trataremos de forma intensiva con seales y sistemas de este tipo. Uno de los motivos
del inters particular en las seales y los sistemas lgicos es la disponibilidad de dispositivos
electrnicos capaces de funcionar en dos estados ntidamente diferenciados.
En realidad resulta habitual, y as se har en este texto, el emplear indistintamente los trminos
"digital" y "lgico" aplicados ya sea a sistemas, circuitos o seales. El motivo es que la
transformacin de seales digitales o discretas a seales lgicas o binarias, y viceversa, es
17
_________________________________________________________________________________
Codificador
Sistema
lgico
Decodificador
Sistema digital
Figura 1.4 Relacin entre un sistema digital y un sistema lgico
Sistema
Combinacional
y(ti ) = F x ( ti )
Como esta igualdad se cumple para cualquier valor de ti puede dejarse implcito el factor tiempo y
escribirse simplemente
y = F(x)
18
Diseo digital
_________________________________________________________________________________
Ejemplo 1.1
Supongamos un depsito dividido en 6 niveles numerados del 0 al 5. Queremos implementar una
alarma que se active cuando el nivel del lquido que contiene sea o bien demasiado alto (>4) o bien
demasiado bajo (<2).
Evidentemente se trata de un sistema combinacional. La activacin o no de la alarma depende
exclusivamente del nivel del lquido en cada momento. Los valores que haya podido tomar el nivel
con anterioridad no tienen influencia alguna en el resultado.
Alarma
La entrada del sistema es el nivel del lquido en el depsito y por tanto existen 6 valores posibles
de la entrada. Anlogamente slo pueden haber dos valores posibles de la salida: o bien la alarma
est activada o bien no lo est.
X {0,1, 2, 3, 4, 5}
Y {ON, OFF}
La funcin Y = F( X), es decir, el valor de la salida para cada posible valor de la entrada, est
perfectamente determinada mediante la tabla siguiente
X
Y
0
ON
1
ON
2
OFF
3
OFF
4
OFF
5
ON
__________________________________________________________________________________
Un sistema combinacional siempre queda completamente determinado a travs de la definicin de sus
entradas, salidas y de una tabla que las relacione entre s. Estas tablas reciben el nombre de tablas de
verdad. Conviene ser consciente que este tipo de tablas, si bien dan toda la informacin necesaria sobre
el comportamiento del sistema combinacional, cuando el nmero de entradas y salidas crece llegan a ser
prcticamente imposibles de manipular.
19
_________________________________________________________________________________
En los sistemas digitales secuenciales el valor de las salidas del sistema en un instante ti depende tanto
del valor de las entradas en ese instante como de valores anteriores de las entradas.
Sistema
Secuencial
20
Diseo digital
_________________________________________________________________________________
Ejemplo 1.2
Una comprensin intuitiva del concepto de sistema secuencial se puede obtener a travs del anlisis
del funcionamiento de un ascensor. Para centrar ideas pinsese en el ascensor de un edificio con dos
pisos y planta baja, dotado con un botonera con nicamente tres botones: 0, 1, 2.
Una primera reflexin nos conduce a que el sistema de control del ascensor no es un sistema
combinacional. Si consideramos como entrada el hecho de pulsar un determinado botn, la salida,
es decir, la accin realizada por el ascensor, no siempre es la misma, depende en realidad de en qu
piso estuviera el ascensor cuando se produce la entrada.
Dicho en otras palabras, la salida, la accin realizada por el ascensor, depende de la historia anterior
del ascensor (el hecho de estar en un piso u otro en un momento dado depende de los
desplazamientos anteriores del ascensor y por tanto de sus entradas anteriores).
Tambin es evidente que no es necesario conocer toda la secuencia de las diferentes idas y venidas
del ascensor para poder determinar el valor de la salida en un cierto momento. Nos basta con
conocer en qu piso est. Todas las evoluciones de las entradas que conducen a que en un
determinado instante el ascensor est en un determinado piso son equivalentes. Por tanto, el piso
en que est el ascensor constituir el estado del sistema.
Vamos a ver lo mismo pero desde un punto de vista ms formal.
Entradas al sistema: Botn pulsado por el usuario. Es decir: x {0,1,2} .
Salidas del sistema: Acciones realizadas por el ascensor: o bien sube 2 pisos, o sube 1, o no hace
nada, o baja 1, o baja 2. Esto es: y {nada,+1,+2,1,2} .
Estados del sistema: A partir de la discusin anterior debera ser claro que el nmero de estados del
sistema es tres: o bien el ascensor est en planta baja o en el primero o en el segundo piso.
Formalmente escribiremos: s {0,1,2} .
s(t)
0
1
2
0
1
2
0
1
2
x(t)
0
0
0
1
1
1
2
2
2
y(t)
nada
-1
-2
+1
nada
-1
+2
+1
nada
s(t+)
0
0
0
1
1
1
2
2
2
21
_________________________________________________________________________________
Para especificar el sistema secuencial de forma completa necesitamos la funcin de salida que
depende de la entrada y el estado actual y la funcin transicin de estados, que da el estado prximo
en funcion de la entrada y el estado actual. Podemos especificar estas dos funciones mediante la
tabla de verdad presentada.
__________________________________________________________________________________
1.3 Codificacin
Un concepto fundamental dentro de los sistemas digitales es el de codificacin. En el apartado 1.1
hacamos una primera referencia diciendo que mediante la codificacin podamos pasar de una seal
discreta a una seal lgica, mientras la decodificacin realizaba el camino inverso. En este apartado
vamos a definir estos conceptos con ms precisin.
El problema de la codificacin en el mbito de la electrnica digital se traduce en representar un
conjunto finito de elementos mediante vectores de n componentes donde cada uno de los componentes
puede tomar solamente dos valores: 0 o 1.
Antes de dar una definicin formal vamos a ver un ejemplo de codificacin.
Ejemplo 1.3
Recordemos el ejemplo 1.1 referente a la alarma para un depsito. Tenamos 6 entradas posibles y
por tanto 6 elementos a codificar x {0,1,2,3,4,5} . Si tenemos que representar estos valores
mediante vectores de n elementos donde cada uno de ellos puede tomar los valores 0 o 1, podemos
hacerlo de multitud de maneras. Una posibilidad sera
Elemento
0
1
2
3
4
5
Cdigo
asignado
000
100
101
001
010
011
22
Diseo digital
_________________________________________________________________________________
evidente que asignar dos codificaciones iguales a dos elementos distintos slo puede conducir a la
prdida o confusin de informacin.
Ntese que en este ejemplo las combinaciones 111 y 110 no han sido utilizadas.
Igualmente podramos codificar las salidas. En el caso de la alarma slo tenamos dos salidas
posibles y {ON,OFF} , por tanto podemos utilizar vectores de un solo elemento para
codificarlas. Una posible codificacin, nuevamente arbitraria, de las salidas sera
Cdigo
asignado
ON
1
OFF
0
__________________________________________________________________________________
Elemento
Una vez presentado de forma intuitiva el problema de la codificacin, vamos a formalizar la definicin.
Codificacin es una funcin, al menos inyectiva, que asigna un vector binario de dimensin n a cada
elemento de un conjunto finito.
{Conjunto} {0,1}n
Representamos mediante {0,1}n el conjunto de vectores de n elementos donde cada uno de ellos puede
tomar o el valor 0 o el valor 1. A cada uno de los elementos que pueden tomar el valor 0 o 1 le
llamamos dgito binario o bit. Denominamos byte a un vector de 8 bits.
Ejercicio 1.1
Cuntos elementos podemos codificar mediante vectores de n bits? Cuntos cdigos distintos
podemos formar con n bits?
Solucin:
n bits permiten codificar 2n elementos.
Podemos formar 2n! cdigos distintos con n bits.
__________________________________________________________________________________
La codificacin, es decir, la eleccin de una forma particular de asignacin de cdigos es en principio
arbitraria. En cada caso concreto hay que elegir entre 2n! codificaciones posibles. Ahora bien, el que
cualquier codificacin sea en teora vlida no quiere decir que sea indiferente la eleccin de una u otra.
23
_________________________________________________________________________________
Criterios posibles que pueden determinar la eleccin de un cdigo determinado podran ser la
simplicidad, la compatibilidad entre sistemas, la posibilidad de detectar la aparicin de algn error, la
posibilidad de corregir errores, etc.
En los prximos subapartados vamos a presentar brevemente algunos de los cdigos ms comnmente
utilizados.
Ejercicio 1.2
Escribir los numeros decimales (101)10 y (202)10 en base 2. Qu relacin hay entre los dos
resultados?
Solucin:
(101)10=(1100101)2
(202)10=(11001010)2
El 202 en base 2 coincide con el 101, desplazado una cifra a la izquierda. Esto se cumple para
cualquier nmero que cumpla m =2.n, y se puede demostrar fcilmente substituyendo r por 2 en la
expresin de desarrollo en potencias, y multiplicndola por 2.
__________________________________________________________________________________
El cambio entre base 2 y base 10 es particularmente frecuente y por ello es conveniente recordar los
valores de las potencias de 2.
24
Diseo digital
_________________________________________________________________________________
20=1
21=2
22=4
23=8
24=16
25=32
26=64
27=128
28=256
29=512
210=1024
...
En el contexto que nos ocupa tambin son de inters los sistemas de numeracin cuya base es una
potencia de 2, en particular base 8 y base 16, denominados octal y hexadecimal respectivamente.
El paso de base 2 a base 2k es particularmente sencillo. Se parte del nmero escrito en base 2 y,
empezando por la derecha, se agrupan los dgitos que lo forman en grupos de k bits, a cada uno de los
grupos se le asigna el dgito correspondiente en base 2k .
Ejemplo 1.5
(1010110001101011)2= ( 1 010 110 001 101 011)2= (1 2 6 1 5 3)8
En base 16 este mismo nmero quedara
(1010 1100 0110 1011)2= (A C 6 B)16
Nota: En base 16 se utilizan los siguientes smbolos para los 16 dgitos necesarios:
0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
__________________________________________________________________________________
Los cambios en sentido contrario, es decir, el paso de base 2 k a base 2 se realizan invertiendo el
procedimiento anterior.
Ejercicio 1.3
Expresar el numero (3 7 0 1 2)8 en base binaria y en base hexadecimal.
Solucin:
(3 7 0 1 2)8 = (11111000001010)2= (3 E 0 A)16
__________________________________________________________________________________
Codificacin en binario
Simplemente escribimos en binario, utilizando el nmero de bits que sea necesario, el nmero entero a
codificar.
Es claro que utilizando n bits podemos codificar un total de 2n nmeros enteros, en concreto los que
van desde el 0 al 2n-1.
25
_________________________________________________________________________________
Ejemplo 1.6
Escribir el cdigo binario para n = 3 bits.
Con 3 bits podemos codificar en binario natural los nmeros que van desde el 0 hasta el 7.
0
000
1
001
2
010
3
011
4
100
5
101
6
110
7
111
__________________________________________________________________________________
Codificacin en BCD
El cdigo BCD, decimal codificado en binario, utiliza 4 bits para cada dgito decimal, es decir
0
1
2
3
4
0000
0001
0010
0011
0100
5
6
7
8
9
0101
0110
0111
1000
1001
Por tanto quedan 6 combinaciones libres, las que van del 1010 al 1111. Caba esperar esto desde el
principio ya que 4 bits permiten codificar hasta 16 elementos y en el sistema de numeracin decimal
slo tenemos 10 dgitos.
Ejemplo 1.7
Pasar a cdigo BCD el nmero decimal 124.
(124)10 = (0001 0010 0100)BCD
__________________________________________________________________________________
El valor decimal de cada dgito del nmero codificado en BCD puede ser obtenido sumando el peso
asignado a cada bit. Para el BCD natural los pesos son 8, 4, 2, 1. Estos pesos son coincidentes con los
pesos de los dgitos correspondientes en binario de 4 bits. Los cdigos en los que esta operacin es
posible se denominan cdigos ponderados.
26
Diseo digital
_________________________________________________________________________________
Ejemplo 1.8
(0111)BCD = 0.8+1.4+ 1.2+1.1 = 7
(0010 0011)BCD = (1.2).101+ (1.2+ 1.1).100 = 23
__________________________________________________________________________________
Existen distintas variantes del cdigo BCD. Algunas de ellas se diferencian en el peso (o ponderacin)
de cada uno de los bits. Un ejemplo sera el BCD 2421. En dicho cdigo 2, 4, 2 y 1 son los pesos
respectivos de cada uno de los bits. Obsrvese en este ejemplo concreto que " a priori " un mismo
nmero puede ser codificado de distintas maneras. Ser necesaria, por tanto, una regla adicional que
determine cul de las posibles codificaciones es la correspondiente al cdigo.
Otra variante de inters es el llamado BCD exceso 3. El cdigo es el siguiente
0
1
2
3
4
0011
0100
0101
0110
0111
5
6
7
8
9
1000
1001
1010
1011
1100
Cdigos de Gray
Este tipo de cdigo tambin se conoce por los nombres de cdigo cclico o reflejado. Su propiedad
fundamental es que cada codificacin difiere de la codificacin del entero anterior o posterior en un solo
bit. Empecemos construyendo el cdigo de Gray de un solo bit
Decimal
0
1
Gray
0
1
27
_________________________________________________________________________________
Para obtener el cdigo de Gray de dos bits se procede de la siguiente manera: Se toma el cdigo de Gray
de 1 bit, se refleja especularmente respecto al eje mostrado en la figura, y se completa aadiendo un "0"
a la izquierda para la primera mitad de combinaciones y un "1" para la otra mitad.
Decimal
0
1
2
3
Cdigo de Gray
0
0
0
1
1
1
1
0
aadido reflejado
El procedimiento se itera para obtener de forma sucesiva los cdigos de Gray de 3, 4 y ms bits. As
por ejemplo el cdigo de Gray de 3 bits se obtiene del de 2 bits de la forma que se indica en el grfico
siguiente
Decimal
0
1
2
3
4
5
6
7
Cdigo de Gray
0
0 0
0
0 1
0
1 1
0
1 0
1
1 0
1
1 1
1
0 1
1
0 0
aadido
reflejados
28
Diseo digital
_________________________________________________________________________________
especifican aparte. Estos carcteres pueden utilizarse para transmitir un texto entre sistemas y/o
reconstruirlo sin ambigedades.
000
001
010
011
100
101
110
111
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
NULL
DLE
SOH
DC1
STX
DC2
ETX
DC3
EOT
DC4
SP
!
"
#
$
%
&
'
(
)
*
+
,
.
/
0
1
2
3
4
5
6
7
8
9
:
;
<
=
>
?
@
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
[
\
]
^
_
`
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
{
|
}
~
NULL
SOH
STX
ETX
ENQ
ACK
BELL
BS
HT
LF
VT
FF
CR
SO
SI
ENQ
NAK
ACK
SYNC
BELL
ETB
BS
CAN
HT
EM
LF
SUB
VT
ESC
FF
FS
CR
GS
SO
RS
SI
US
Carcter nulo
Encabezamiento
Principio de texto
Final de texto
Pregunta
Reconocimiento
Timbre
Retroceso
Tabulador horizontal
Salto de lnea
Tabulador vertical
Salto de pgina
Retorno de carro
Desplazamiento exterior
Desplazamiento interior
DLE
DCi
NACK
SYNC
ETB
CAN
EM
SUB
ESC
FS
GS
RS
US
SP
DEL
DEL
29
_________________________________________________________________________________
Ejemplo 1.9
Tenemos un cdigo de tres bits con todas las combinaciones utilizadas y queremos convertirlo en
un cdigo de 4 bits con paridad par
X2
X1
X0
X2
X1
X0
Xp
Paridad
Cdigo
previo
Bit
aadido
000
001
010
011
100
101
110
111
0
1
1
0
1
0
0
1
__________________________________________________________________________________
Los cdigos con paridad pueden detectar un nmero impar de errores en la transmisin de la
informacin pero no pueden detectar un nmero par, ya que en este caso la paridad no se modifica.
En el ejemplo anterior se observa que el hecho de intentar detectar errores nos lleva a utilizar ms bits
de los estrictamente imprescindibles. Un cdigo que utiliza ms bits de los necesarios se denomina
redundante. En efecto, si tenemos 8 elementos a codificar podemos hacerlo mediante 3 bits, aadir un
bit de paridad nos exige utilizar 4 bits para codificar el mismo nmero de elementos. Cualquiera que
sea el procedimiento que utilicemos para detectar errores, siempre utilizaremos ms bits de los
imprescindibles. Esto es as por una razn muy simple: supongamos que codificamos 16 elementos
mediante 4 bits. Si se produce un error en la transmisin de uno cualquiera de los bits, por ejemplo se
30
Diseo digital
_________________________________________________________________________________
enva 0011 y se recibe el 0010, el receptor recibe una codificacin que corresponde a uno de los
elementos a codificar y por tanto en ausencia de informacin adicional no puede determinar si ha
ocurrido un error. Para que el receptor pueda saber que se ha producido un error es necesario que la
codificacin que reciba no corresponda a ninguno de los elementos a codificar y esto no es posible a
menos que se utilicen ms bits de los imprescindibles.
Asimismo es posible generar cdigos que permitan, no slo detectar, sino corregir un cierto nmero de
errores. El precio a pagar siempre es el aumentar el nmero de bits utilizados para codificar una
determinada informacin, es decir, aumentar la redundancia del cdigo.
Cuestiones
C1.1 Discuta si las magnitudes y los sistemas siguientes son analgicos o digitales:
a) Temperatura
b) Cronmetro
c) Semforo
d) Corriente elctrica
C1.2 Cules de los siguientes sistemas, donde cada entrada puede tomar dos valores x {a,b} , son
combinacionales y cules secuenciales? Discuta si los secuenciales pueden describirse o no como
mquinas de estados finitos.
a) Un sistema con dos entradas que indique en cul de ellas ha recibido ms veces el valor a .
b) Un sistema con tres entradas que detecte si las tres son iguales.
c) Un sistema con una sola entrada que indique si ha entrado un nmero par o impar de b.
C1.3 Demuestre que para que una codificacin BCD ponderada sea autocomplementaria, la suma de
todos los pesos de la ponderacin debe ser igual a 9.
C1.4 Encuentre cuntos cdigos BCD 2,4,2,1 diferentes se pueden formar y cules de ellos son
autocomplementarios.
31
_________________________________________________________________________________
C1.5 Un cdigo "n entre m" es aqul en que todas las combinaciones vlidas contienen n unos y (m-n)
ceros (por tanto m bits en total). Cuntos elementos distintos se pueden codificar mediante un cdigo
"2 entre 5"? Discuta qu tipo de errores permite detectar este cdigo.
C1.6 Es nico el cdigo de Gray? Proponga diferentes cdigos de tres bits con las mismas propiedades
que el cdigo de Gray.
Problemas
P1.1 Identifique las entradas y salidas de un sistema combinacional que controla un motor de dos
velocidades, con dos sensores de fin de recorrido, un mando de velocidad y otro de direccin. Escriba la
tabla de verdad que permita mover el motor a un lado o al otro hasta su lmite.
P1.2 Determine las salidas y los estados de un sistema secuencial con una nica entrada
x {0,1,2,3,4} , que indique si la suma de todas las entradas realizadas hasta el momento es un
mltiplo de tres. Escriba las tablas de sus funciones de salida y de transicin de estados.
P1.3 Proponga una codificacin que utilice 3 bits para los das de la semana. Entre cuntos cdigos
distintos puede escogerse?
P1.4 Proponga un cdigo BCD autocomplementario ponderado con pesos 8,4,-2,-1. Es el nico
posible?
P1.5 Complete la siguiente tabla:
Decimal
1256
Binario
Hexadecimal
Octal
1001110101
624
A03C
P1.6 Encuentre la codificacin BCD de los nmeros de la tabla del problema anterior.
P1.7 El cdigo llamado biquinario es un cdigo "2 entre 7" ponderado con pesos 5,0,4,3,2,1,0 para
cifras decimales. Encuentre cuntos cdigos distintos cumplen estos requisitos.
33
_________________________________________________________________________________
En este captulo se presentan los fundamentos formales, o si se prefiere matemticos, del diseo
digital. El hecho de que las seales procesadas por los sistemas lgicos slo puedan tomar dos valores
permite interpretar los sistemas combinacionales como un conjunto de funciones donde las entradas y
las salidas son variables que toman nicamente dos valores. Una consecuencia de esto es la posibilidad
de utilizar superestructuras matemticas especficamente creadas para tratar con este tipo de variables.
El lgebra de Boole, desarrollada el siglo pasado como herramienta para tratar el clculo de predicados
en lgica matemtica, se revela extremadamente til en el campo del diseo digital. A pesar del
marcado tono matemtico de este captulo, es conveniente que el lector tenga en cuenta que su
inclusin no obedece a un deseo de completitud formal sino, por el contrario, a una necesidad de orden
prctico. Como comprobar el lector, los conceptos introducidos en este captulo son de uso
continuado en el resto de este texto.
x
x
x
0
1
n-1
Sistema
....
Combinacional
....
y0
y1
y m-1
Y = F( X)
X = (xn1 ,...,x1 ,x0 ) Y = (ym1 ,...,y1 ,y0 )
yi = f i (xn1 ,...,x1 ,x0 ) 0 i m 1
los autores, 1998; Edicions UPC, 1998. Quedan rigurosamente prohibidas, sin la autorizacin escrita de los titulares del "copyright", bajo las
sanciones establecidas en las leyes, la reproduccin total o parcial de esta obra por cualquier medio o procedimiento, comprendidos la reprografa y el
tratamiento informtico, y la distribucin de ejemplares de ella mediante alquiler o prstamo pblicos, as como la exportacin e importacin de
ejemplares para su distribucin y venta fuera del mbito de la Unin Europea.
34
Diseo digital
_________________________________________________________________________________
Existen distintas maneras de especificar y/o representar una funcin lgica; entre ellas podemos
destacar las siguientes: a) tabla de verdad, b) tabla de Karnaugh, c) expresiones algebraicas, d)
logigramas. Veamos de momento las dos primeras, dejando para ms adelante dentro de este mismo
captulo las dos restantes.
x2
x1
x0
f(x2,x1,x0)
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
f(0,0,0)
f(0,0,1)
f(0,1,0)
f(0,1,1)
f(1,0,0)
f(1,0,1)
f(1,1,0)
f(1,1,1)
35
_________________________________________________________________________________
x2\x1x0
00
f(0,0,0)
f(0,0,1) f(0,1,1)
f(0,1,0)
f(1,0,0)
f(1,0,1) f(1,1,1)
f(1,1,0)
01
11
10
Como es natural, en una funcin de 3 variables tenemos 8 combinaciones de entrada y por tanto una
tabla de 8 casillas. Para el caso de 4 variables el procedimiento es el mismo, situando dos de las
variables en el eje horizontal y las dos restantes en el eje vertical. Como antes, las combinaciones de
las variables en cada eje se ordenan siguiendo un cdigo de Gray. Vemoslo para una funcin genrica
de 4 variables f(x3,x2,x1,x0).
x3x2\x1x0
00
01
11
10
00
f(0,0,0,0) f(0,0,0,1)
f(0,0,1,1)
f(0,0,1,0)
01
f(0,1,0,0)
f(0,1,0,1)
f(0,1,1,1)
f(0,1,1,0)
11
f(1,1,0,0) f(1,1,0,1)
f(1,1,1,1)
f(1,1,1,0)
10
f(1,0,1,0)
El hecho de ordenar las variables segn un cdigo de Gray hace que en casillas vecinas se siten los
valores de la funcin correspondientes a combinaciones de las variables de entrada que difieren entre s
en un slo bit. Si definimos como casillas lgicamente adyacentes las correspondientes a
combinaciones de entrada que difieren entre s en el valor de un solo bit, la fila superior resulta
adyacente a la inferior y del mismo modo la columna de la derecha es adyacente a la columna de la
izquierda.
Por ejemplo, si observamos en la tabla anterior la casilla correspondiente a f(1,0,0,1) (sombreada de
forma ms intensa) vemos que las casillas adyacentes segn la definicin anterior (marcadas en
punteado claro) corresponden a f(1,0,0,0) donde slo vara el valor de x0, f(1,0,1,1) donde es x1 la
variable que cambia de valor, f(1,1,0,1) donde es x2 la variable que cambia de valor, y por ltimo en
f(0,0,0,1) x3 cambia de valor.
Generalizando, podemos decir que cada casilla de una tabla de Karnaugh de n variables tiene n casillas
lgicamente adyacentes, es decir, correspondientes a combinaciones de entrada que difieren nicamente
en el valor de una variable.
Para funciones de 5 variables el procedimiento es el siguiente: consideremos una funcin genrica
f(x4,x3,x2,x1,x0); se forman dos tablas de Karnaugh iguales (con la misma disposicin de variables) de
4 variables, por ejemplo x3,x2,x1,x0, una referida a las combinaciones de entrada con x4=0 y otra con
las combinaciones correspondientes a x4=1. La definicin de adyacencia incluye las casillas vistas para
la tabla de 4 variables ms la casilla que est situada en el mismo lugar en la otra tabla, tal como se
muestra en la figura que sigue.
36
Diseo digital
________________________________________________________________________________
x4=0
x3x2\x1x0
00
01
x4=1
11
10
x3x2\x1x0
00
00
01
01
11
11
10
10
00
01
11
10
La representacin mediante tabla de Karnaugh para funciones lgicas de 6 variables puede realizarse
extendiendo la idea aplicada para 5 variables (cuatro tablas de 4 variables situadas una encima de la
otra y ordenadas mediante combinaciones cclicas de las 2 variables restantes), aunque se pierde la
facilidad de identificacin de las casillas adyacentes. Por ello en la prctica la tabla de Karnaugh no
suele utilizarse para funciones de ms de 5 variables.
Ejemplo 2.1
Supongamos un cdigo de 4 bits con todas las combinaciones asignadas. Se desea generar un bit
adicional de forma que el cdigo de 5 bits resultante tenga una paridad par. Especificar la funcin
lgica correspondiente mediante su tabla de verdad y su mapa de Karnaugh.
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
1
0
1
0
0
1
1
0
0
1
0
1
1
0
ab\cd
00
01
11
10
00
01
11
10
37
_________________________________________________________________________________
Se trata de un sistema combinacional con 4 entradas y una salida, cuyo valor ser "1" cuando en
las entradas tengamos un nmero impar de valores "1", y "0" en caso contrario (nmero par de
"1"). Por tanto la tabla de verdad y mapa de Karnaugh sern los dados en la figura.
Obsrvese que el mapa de Karnaugh de una funcin de paridad, dado que las variables de entrada
estn ordenadas segn el cdigo de Gray, tiene el aspecto de un tablero de ajedrez. Esto es, si en
una casilla determinada hay un "1", en todas sus adyacentes hay un "0" y viceversa.
__________________________________________________________________________________
Ejercicio 2.1
Describa, a travs de sus tablas de verdad y de Karnaugh, un sistema combinacional que compare 2
nmeros enteros A y B codificados en binario. La salida valdr "1" si A>B.
A, B Cdigo
0
00
1
01
si A > B
1
Salida
Y =
2
10
en otro caso
0
3
11
__________________________________________________________________________________
A, B {0,1,2,3}
Entradas
x0
f0(x0)
f1(x0)
f2(x0)
f3(x0)
0
1
0
0
0
1
1
0
0
0
f0(x0). Como se observa en la tabla, esta funcin asigna el valor cero independientemente del valor de
la variable. Se la denomina funcin constante cero. Podemos asignar a esta funcin la siguiente
representacin en forma de expresin algebraica
38
Diseo digital
_________________________________________________________________________________
f 0 (x 0 ) = 0
f1(x0). El valor de la funcin coincide con el de la variable de entrada. Por este motivo se la denomina
funcin identidad. La expresin algebraica de esta funcin es
f 1 (x 0 ) = x 0
f2(x0). En este caso el valor de la funcin siempre es el contrario o complementario del que tiene la
variable de entrada. Se la conoce como funcin complemento, negacin o funcin NOT. La expresin
algebraica correspondiente es
f 2 (x 0 ) = x 0
f3(x0). Por ltimo, esta funcin siempre devuelve el valor "1" independientemente del valor de la
variable de entrada y por eso recibe el nombre de funcin constante 1. Su expresin algebraica ser
f 3 (x 0 ) =1
Algunas funciones lgicas cuentan con un smbolo propio para su representacin grfica. Estos
smblos graficos se denominan logigramas o puertas y suponen una primera aproximacin a la
estructura del circuito o elemento fsico que las implementa. Las cuatro funciones de una variable
pueden representarse mediante los logigramas que se muestran en la figura 2.2.
a)
b)
0
1
Figura 2.2 Logigramas para las funciones lgicas de una variable. a) funcin constante 0,
b) funcin identidad, c) funcin constante 1, d) funcin complemento
Funciones lgicas de dos variables: Es posible obtener hasta 16 funciones lgicas diferentes
de 2 variables, que se muestran en la tabla siguiente
x1
0
0
1
1
x0
0
1
0
1
f0
0
0
0
0
f1
0
0
0
1
f2
0
0
1
0
f3
0
0
1
1
f4
0
1
0
0
f5
0
1
0
1
f6
0
1
1
0
f7
0
1
1
1
f8
1
0
0
0
f9
1
0
0
1
39
_________________________________________________________________________________
Algunas de estas 16 funciones se utilizan con mayor frecuencia y las presentamos a continuacin
como funciones destacables.
f 1 . La funcin f 1 se denomina AND o producto lgico y slo toma el valor "1" cuando las dos
variables de entrada toman el valor "1". La definicin dada puede independizarse del nmero de
variables; por tanto, denominaremos funcin AND de n variables a la funcin lgica que slo valdr
"1" cuando todas las variables de entrada valgan "1". La expresin algebraica y el logigrama para la
funcin AND de dos variables son los siguientes
f AND (x1 , x 0 ) = x1 x 0
x1
x0
x1 x0
f7. Esta funcin toma el valor "1" cuando alguna de las entradas toma el valor "1" (eventualmente
pueden ser las dos) o, de forma equivalente, slo toma el valor "0" cuando todas las variables de entrada
toman el valor "0". Recibe el nombre de funcin OR o suma lgica. Como antes la definicin es
independiente del nmero de variables y por tanto denominaremos funcin OR de n variables a aquella
que vale "1" cuando alguna (una o ms) de las entradas toma el valor "1". La expresin algebraica y el
logigrama para esta funcin son
f OR (x1 , x 0 ) = x1 + x 0
x1
x0
x1 + x 0
f6. A partir de los valores que toma para dos variables esta funcin puede ser interpretada de diversas
maneras: 1- La funcin toma el valor "1" cuando las entradas son distintas y "0" cuando son iguales.
2- El valor de la funcin es la suma mdulo 2 de las entradas. 3- La funcin vale "1" cuando el nmero
de "1" a su entrada es impar y "0" cuando no lo es. Las dos ltimas interpretaciones son directamente
generalizables a n entradas. Esta funcin recibe el nombre de XOR o tambin OR exclusiva. La
expresin algebraica y el logigrama para la funcin XOR de dos variables son
f XOR (x1 , x 0 ) = x1 x 0
x1
x0
x1 + x 0
Las complementarias de estas tres funciones tambin son destacables. Entendemos por funciones
complementarias aqullas que para los mismos valores de las variables toman valores opuestos:
f14. Recibe el nombre de NOT-AND, o abreviadamente, NAND.
f NAND (x1 , x 0 ) = x1 x 0
x1
x0
x1x0
40
Diseo digital
_________________________________________________________________________________
x1
x0
x1 + x 0
x1
x0
x1 + x0
Ejemplo 2.2
Supongamos un sistema combinacional tal que su entrada es una cifra codificada en BCD y su
salida es "1" en caso de que la entrada sea mltiplo de 3 y "0" en caso contrario. La tabla de verdad
de este sistema sera
x3
x2
x1
x0
x3
x2
x1
x0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
1
0
0
1
0
0
1
0
1
1
1
1
1
1
1
1
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
1
X
X
X
X
X
X
Ntese que las combinaciones de entrada comprendidas entre 1010 y 1111 no pertenecen al cdigo
BCD y por tanto no se van a presentar nunca; en consecuencia, es irrelevante el valor que tome la
funcin para dichas combinaciones de entrada. Usaremos la notacin "X" (salida indiferente) para el
valor de la funcin en dichos casos.
__________________________________________________________________________________
41
_________________________________________________________________________________
Ejercicio 2.2
n
Ejemplo 2.3
La funcin z es el resultado de aplicar la funcin OR a la variable c y al resultado obtenido de
aplicar la funcin AND a las variables a, b y al complementario de d:
z = f OR (c, f AND (a,b, f NOT (d)))
La expresin algebraica correspondiente a esta composicin es
z = c + abd
Tambin es posible obtener el logigrama de la composicin de funciones combinando
adecuadamente los logigramas de cada una de las funciones involucradas, tal como se muestra en la
figura 2.3. Este logigrama supone una primera aproximacin a un posible circuito electrnico que
realice la funcin.
abd
c + abd
a
b
c
__________________________________________________________________________________
42
Diseo digital
_________________________________________________________________________________
Ejercicio 2.3
Obtener la tabla de verdad y el logigrama de la composicin de funciones siguiente
z = f NOR ( f 1 (a,b,c,d), f NOT ( f AND (b,d)))
donde f1 es la funcin descrita en el ejemplo 2.3
__________________________________________________________________________________
Hasta ahora hemos visto cuatro formas equivalentes, aunque formalmente distintas, de representar una
funcin lgica: 1-Tabla de verdad. 2-Tabla de Karnaugh. 3-Expresin algebraica. 4-Logigrama. Segn
las circunstancias, unas formas de representacin sern ms convenientes que otras, pero no debe
perderse de vista que la informacin aportada es la misma.
43
_________________________________________________________________________________
a (b + c) = a b + a c
a,b,c B
a + (b c) = (a + b)(a + c)
4- Existe un elemento neutro para cada operacin. Es decir, si a B, entonces existen dos
elementos del conjunto B, llamados arbitrariamente "0" y "1", tales que
a+0=a
a 1= a
5- Existencia de elemento opuesto. Si a es un elemento del conjunto B entonces existe un
nico elemento a B tal que
a + a =1
aa = 0
6- El conjunto B tiene al menos dos elementos distintos.
En el tratamiento de variables lgicas podemos tomar el conjunto B = {0,1} y escoger las operaciones
siguientes
"+" o suma: Funcin lgica OR
"." o producto: Funcin lgica AND
_
" " u opuesto: Funcin lgica complemento o negacin (NOT)
Es inmediato comprobar que el conjunto definido ms las operaciones suma y producto escogidas
cumplen los postulados anteriores. Por tanto, constituyen un lgebra de Boole de dos elementos (o
valores).
a + (b + c) = (a + b) + c
a (b c) = (a b)c
-Idempotencia:
a+a=a
aa = a
44
Diseo digital
_________________________________________________________________________________
-Absorcin:
a + a b = a + b a + a b = a
a (a + b) = a b a(a + b) = a
-Involucin:
(a) = a
-Incgnita:
x +1=1
x 0 = 0
-Leyes de De Morgan: a + b = a b
a b = a + b
- Dualidad:
Cualquier expresin vlida en un lgebra de Boole contina siendo vlida si
se intercambian entre s los elementos neutros ( 0 1) y las operaciones ( + ).
La permutacin del teorema de dualidad conlleva cambiar cada variable por su complementaria.
Obsrvese que todas las propiedades exigidas a un lgebra de Boole cumplen esta condicin, por tanto,
cualquier expresin que se derive de ellas tambin la cumplir.
Adems, algunos de estos teoremas son directamente generalizables a n variables, por ejemplo, las
leyes de De Morgan: el complementario de una suma de variables es igual al producto de los
complementarios de las variables, y el complementario de un producto de variables es igual a la suma
de los complementarios de las variables.
ai = ai
i
ai = ai
Ejemplo 2.4
Vamos a aplicar dualidad a la expresin algebraica obtenida en el ejemplo 2.3. La expresin de
partida es
z = c + abd
y la que aplicando dualidad se deriva de ella es
z =c a +b +d
Esto nos permite escribir una expresin algebraica equivalente para la funcin z, aplicando el
teorema de involucin
z=c a +b +d
45
_________________________________________________________________________________
Ejercicio 2.4
Demustrese la identidad del ejemplo 2.4 usando las leyes de De Morgan.
__________________________________________________________________________________
Las demostraciones de los teoremas presentados tambin quedan como ejercicio para el lector. En
cualquier caso, cuando se intenta demostrar cualquier igualdad entre dos expresiones algebraicas en un
lgebra de Boole, siempre se puede evaluar cada una de las expresiones en todos los casos posibles a
travs de su tabla de verdad y realizar la comprobacin del resultado.
Ejemplo 2.5
Vamos a demostrar la primera igualdad del teorema de absorcin.
a + ab = a + b
Aplicando sucesivamente la distributividad de la suma con respecto al producto y las definiciones
de elemento inverso y elemento neutro, nos queda
a + ab = (a + a)(a + b) =1(a + b) = a + b
__________________________________________________________________________________
Ejercicio 2.5
Utilizando nicamente los postulados del lgebra de Boole, demustrese la segunda igualdad del
teorema de absorcin: a + ab = a .
__________________________________________________________________________________
Ejemplo 2.6
a) cd(a + ab) + bd(ac + c) = cd(a(1+ b)) + bd(c(1+ a)) = cda + cbd = cd(a + b)
Donde se ha aplicado el postulado de distributividad, el teorema de incgnita, el postulado del
elemento neutro y otra vez distributividad.
46
Diseo digital
_________________________________________________________________________________
b) a + b + c + d + abcd = (a + b + c + d) + (a + b + c + d) =1
c) a + b + c + d + abcd = a(1+ bcd) + b + c + d = a + b + c + d
__________________________________________________________________________________
Ejercicio 2.6
Simplificar las expresiones siguientes:
a) xyz + xy + xyz
b) a + b + c + abc
c) x(z + xy) + z y + xy x
d) cad + b + c + abc
__________________________________________________________________________________
Al final del apartado 2.1 resumamos las cuatro formas vistas de representar una funcin lgica: tabla
de verdad, tabla de Karnaugh, expresin algebraica y logigrama. Ahora se ha presentado un
procedimiento para transformar unas expresiones algebraicas en otras. Vamos a analizar estas cuatro
posibles representaciones de una funcin lgica a travs de un ejemplo.
Ejemplo 2.7
A partir del logigrama de la figura 2.4, obtener la tabla de verdad, la tabla de Karnaugh, y una
expresin algebraica de la funcin Y(a,b,c).
C
Y
D
47
_________________________________________________________________________________
B = Ac = abc
C = abc
E = abc
F = DE = abc + abc
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
1
1
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
1
0
0
0
0
0
1
1
1
1
0
1
1
1
1
1
1
1
1
1
1
0
0
0
0
0
1
0
0
1
0
1
1
0
1
0
0
1
a\bc
00
01
11
10
Un anlisis detallado de la tabla de verdad nos lleva a concluir que la funcin lgica Y vale "1"
cuando el nmero de entradas que toman el valor "1" es impar y asigna el valor "0" en caso
contrario; por tanto, una expresin algebraica y un logigrama alternativos son
Y = abc
a
b
c
__________________________________________________________________________________
48
Diseo digital
_________________________________________________________________________________
M int erm
Sub. binario
Sub. decimal
x2 x1 x0
m000
m0
x2 x1 x0
m001
m1
x2 x1 x0
m010
m2
x2 x1 x0
m011
m3
x2 x1 x0
m100
m4
x2 x1 x0
m101
m5
x2 x1 x0
m110
m6
x2 x1 x0
m111
m7
49
_________________________________________________________________________________
Sea f una funcin lgica de n variables; denominamos suma mxima o maxterm de dicha funcin al
polinomio formado por la suma lgica de todas sus variables complementadas o no. Con n variables
se pueden construir 2n maxterms diferentes. Usaremos la notacin Mi para referirnos al maxterm isimo de una funcin.
Cada maxterm se identifica mediante un subndice correspondiente a la combinacin binaria resultante
de sustituir por unos las variables que estn complementadas y por ceros las que no lo estn. Otra
forma de expresar lo mismo es diciendo que un maxterm se identifica mediante un dgito
correspondiente al valor decimal de la combinacin binaria de entradas que hace que el maxterm en
cuestin tome el valor "0".
Vamos a verlo en detalle para una funcin lgica de tres variables. La generalizacin a n variables es,
otra vez, inmediata.
Maxterm
Sub. binario
Sub. decimal
x2 + x1 + x0
M111
M7
x2 + x1 + x0
M110
M6
x2 + x1 + x0
M101
M5
x2 + x1 + x0
M100
M4
x2 + x1 + x0
M011
M3
x2 + x1 + x0
M010
M2
x2 + x1 + x0
M001
M1
x2 + x1 + x0
M000
M0
50
Diseo digital
_________________________________________________________________________________
La demostracin del teorema es inmediata a travs de la tabla de verdad. Para ello slo es necesario
evaluar los trminos a derecha e izquierda de la igualdad para cada uno de los dos valores posibles de la
variable extrada: xn-1=0 y xn-1=1.
Ejemplo 2.8
Extraer la variable c de la funcin lgica f (a,b,c,d) = (a c) + ac + bcd + ab cd .
De acuerdo con el teorema de Shannon es necesario obtener las funciones resultantes de
particularizar c a los valores "1" y "0" en la funcin f(a,b,c,d) inicial.
f (a,b,0,d) = (a 0) + a + bd = a + a + bd = a + bd
f (a,b,1,d) = (a 1) + ab d = a + ab d = a
Luego, recurriendo a la primera expresin del teorema
f (a,b,c,d) = cf (a,b,0,d) + cf (a,b,1,d) = c (a + bd) + c(a )
O bien, recurriendo a la segunda expresin
f (a,b,c,d) = [ c + f (a,b,1,d)] [ c + f (a,b,0,d)] = [ c + ( a )] [ c + ( a + bd )]
__________________________________________________________________________________
51
_________________________________________________________________________________
Iterando la aplicacin del teorema de Shannon a las funciones residuales hasta extraer todas las
variables, nos queda finalmente
f (x n-1 , x n-2 ,.., x1 , x 0 ) = x n-1 x n-2 .. x1 x 0 f (0,0,..,0,0) + x n-1 x n-2 .. x1 x 0 f (0,0,..,0,1) +
+ x n-1 x n-2 .. x1 x 0 f (0,0,...,1,0)+...+ x n-1 x n-2 ... x1 x 0 f (1,1,..,1,1) =
2n -1
mi f (i)
i=0
Expresin que identificamos como la forma cannica disyuntiva, es decir, en suma de minterms, donde
las f(i) son las funciones residuales tras la extraccin de todas las variables, es decir, funciones
constantes, que solo pueden tomar dos valores "0" o "1".
La existencia de la forma cannica conjuntiva puede demostrarse a partir de la segunda expresin del
teorema de Shannon. Su expresin compacta es
f (x n-1 , x n-2 ,.., x1 , x 0 ) =
2n -1
(Mi + f (i))
i=0
Veamos a travs de un ejemplo cmo obtener las formas cannicas de una funcin lgica.
Ejemplo 2.9
Pretendemos obtener las formas cannicas de la funcin y = a + bc. Siguiendo paso a paso la
demostracin anterior se llega a la siguiente expresin
y = f (a,b,c) = abc f (0,0,0) + abcf (0,0,1) + abc f (0,1,0) + abcf (0,1,1) +
+abc f (1,0,0) + abcf (1,0,1) + abc f (1,1,0) + abcf (1,1,1)
A partir de la tabla de verdad podemos evaluar el valor de la funcin para cada combinacin de las
variables de entrada
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
1
0
0
1
1
1
1
52
Diseo digital
_________________________________________________________________________________
Es decir, los trminos presentes en la expresin de la funcin como producto de maxterms (en
ocasiones denominada PoS) son M0, M2, y M3, cuyos subndices son precisamente los que no
aparecan en la forma cannica en suma de minterms: a partir de la tabla de verdad se observa que
los maxterms que aparecen en la forma cannica conjuntiva son aquellos cuyo subndice
corresponde a las combinaciones de entrada que hacen "0" la funcin. Esto es as en virtud de las
distintas notaciones utilizadas para minterms y maxterms. Esta notacin, sin embargo, no es
universal: en algunos textos se utilizan otros procedimientos para asignar subndices a los
minterms y a los maxterms, en cuyo caso el mtodo de paso de una a otra forma cannica es
menos inmediato que el aqu descrito.
__________________________________________________________________________________
53
_________________________________________________________________________________
Ejercicio 2.7
Obtener la forma cannica alternativa de las funciones siguientes
a) F(x, y,z) = m(1,3,7)
3
__________________________________________________________________________________
Ejemplo 2.10
Vamos a demostrar que la funcin NAND constituye un grupo completo. Una forma de
comprobarlo es viendo que utilizando nicamente funciones NAND podemos realizar las funciones
NOT, AND y OR. Al ser el grupo formado por estas tres funciones un grupo completo, quedar
demostrada la completitud de la funcin NAND. Comencemos viendo que es posible obtener la
funcin NOT utilizando slo funciones NAND
x = xx
Una vez vista la realizacin de la funcin NOT mediante funciones NAND, resulta inmediato
realizar una funcin AND utilizando funciones NAND
x1 x2 = x1 x2 = x1 x2 x1 x2
Por ltimo, para realizar la funcin OR podemos aplicar las leyes de De Morgan
54
Diseo digital
_________________________________________________________________________________
x1 + x2 = x1 x2 = x1 x1 x2 x2
__________________________________________________________________________________
Ejercicio 2.8
Demostrar que la funcin NOR consituye, por s sola, un grupo completo.
__________________________________________________________________________________
Ejemplo 2.11
Dibujar el logigrama de la funcin del ejemplo 2.7 partiendo de su expresin como SoP. A
continuacin, realizar el logigrama slo mediante funciones NAND. De forma dual, proponer el
logigrama correspondiente al producto de maxterms, y una realizacin solo con funciones NOR.
La expresin de la funcin en SoP es y = m1 + m4 + m5 + m6 + m7 = abc + abc + abc + abc + abc ,
por lo que su implementacin utilizando funciones AND, OR y NOT es inmediata
m1
m4
m5
m6
m
55
_________________________________________________________________________________
Para realizar una implementacin usando slo funciones NAND el procedimiento es el siguiente:
supongamos que sustituimos las puertas AND directamente por puertas NAND; para que el
resultado global permanezca inalterado habr que negar cada entrada de la puerta OR. Recordando
las leyes de De Morgan, una puerta OR de variables negadas es equivalente a una puerta NAND de
las mismas variables sin negar, es decir
ai = ai
i
m1
m4
m5
m6
m7
56
Diseo digital
_________________________________________________________________________________
M0
M
M3
Para pasar a una implementacin slo con NOR el procedimiento es dual al anterior. Si
sustituimos las puertas OR directamente por NOR, es evidente que hay que negar cada entrada de la
puerta AND. En consecuencia, la puerta AND final tendr todas sus entradas negadas. Recordando
las leyes de De Morgan, una funcin AND de variables negadas es equivalente a la funcin NOR
de las mismas variables sin negar. Luego el resultado ser
M0
M
M3
__________________________________________________________________________________
La primera conclusin que podemos extraer del ejemplo 2.11 es que las formas cannicas conducen de
una forma inmediata a logigramas con una estructura regular. As la forma cannica en suma de
minterms conduce a logigramas constituidos por dos etapas de puertas (una etapa de puertas AND y
otra de puertas OR en el sentido entrada-salida), siendo las entradas de las puertas AND de la primera
etapa las variables de la funcin, directas o negadas (mediante puertas NOT). Este resultado es dual para
la forma cannica en producto de sumas.
57
_________________________________________________________________________________
Adems, un resultado complementario es que las formas cannicas conducen tambin de forma natural
a la realizacin de cualquier funcin lgica mediante logigramas hechos nicamente con dos etapas de
puertas NAND (caso de partir de la forma cannica SoP) o con dos etapas de puertas NOR (caso de
partir de la forma cannica PoS).
Ejercicio 2.9
Obtenga las formas cannicas en SoP y PoS de la funcin y(a,b,c) = abc + bc + abc . Obtener
tambin los logigramas de la funcin en forma de redes de dos niveles de puertas AND-OR, ORAND, NAND y NOR.
__________________________________________________________________________________
58
Diseo digital
________________________________________________________________________________
ab\cd
00
01
11
10
00
01
11
10
Cada "1" de la tabla corresponde a un minterm presente en la expresin cannica de la funcin como
suma de minterms. As por ejemplo el "1" correspondiente a la combinacin de entrada
(a,b,c,d)=(0,0,0,0) revela la presencia del minterm a bcd en la expresin cannica de la funcin.
Dos "1" en celdas adyacentes de la tabla de Karnaugh corresponden a dos minterms en la expresin
cannica de la funcin que difieren entre s en una nica variable; as en la columna de la izquierda
los dos "1" adyacentes corresponden a los minterms m 0 = abc d y m 4 = abcd respectivamente, que
difieren en el valor de la variable b.
En general, si en la expresin como suma de minterms de una funcin lgica aparecen dos minterms
que slo difieren en una variable xi, es claro que aplicando distributividad nos quedarn expresiones
del tipo siguiente
59
_________________________________________________________________________________
Ejemplo 2.12
En la funcin y(a,b,c,d) referida en el apartado 2.4.1 tenemos dos grupos de casillas adyacentes,
uno formado por los "1" correspondientes a los minterms m9 y m13 y otro formado por los
correspondientes a los minterms m0 , m2 , m4 , y m6 (recordemos que las casillas de la columna
de la derecha se definan como lgicamente adyacentes a las casillas de la columna de la izquierda,
y que las casillas de la fila superior estaban definidas como lgicamente adyacentes a las casillas de
la fila inferior).
Si observamos el grupo formado por m9 y m13 tenemos
m9 = abcd
m13 = abcd
De la agrupacin de los dos minterms hemos eliminado una variable. Si analizamos ahora la
agrupacin restante tenemos
m0 = abcd
m2 = abcd
m0 + m2 = abd
m4 = abcd
m4 + m6 = abd
m6 = abcd
Los dos trminos resultantes tambin difieren entre s en una sola variable (b) y, por tanto, al
sumarlos tambin se eliminar esa variable
m0 + m2 + m4 + m6 = ad
Podemos concluir diciendo que una expresin simplificada en forma (no cannica) de suma de
productos de la funcin y(a,b,c,d) es y = ad + acd .
__________________________________________________________________________________
60
Diseo digital
________________________________________________________________________________
2- La reunin (suma) de 2p celdas lgicamente adyacentes entre s que contienen "1" elimina
p variables en la expresin de la funcin.
3- Al reunir celdas en un mapa de Karnaugh es aconsejable comenzar por las que presentan
menor nmero de "1" en celdas adyacentes.
4- Hay que formar el menor nmero de grupos que recubra todos los "1" de la funcin.
Cuantos menos grupos tengamos menos trminos quedarn en la expresin final.
5- Es necesario agrupar tantos "1" como sea posible en cada grupo; recurdese que grupos
mayores eliminan mayor nmero de variables.
Ejemplo 2.13
Construyamos la tabla de Karnaugh y hagamos las reuniones de todos los "1" de la funcin
cd\ab
00
01
11
10
00
01
11
10
abcd
bc
bd
acd
Para identificar las variables que aparecen en el producto asociado a cada grupo de "1", debemos
fijarnos en cules de ellas no cambian su valor en todas las celdas del grupo. La expresin
mnima como suma de productos nos queda
f = abcd + acd + bc + bd
_________________________________________________________________________________
61
_________________________________________________________________________________
Ejercicio 2.10
Obtener la expresin mnima en suma de productos de las funciones siguientes
a) F(x, y,z,w) = M(0,1,2,3,4,10,11)
4
b) F(a,b,c,d) = m(1,2,3,4,6,7,10,15)
4
__________________________________________________________________________________
Ejemplo 2.14
Vamos a minimizar la funcin del ejemplo 2.13 en forma de producto de sumas. Para ello
comencemos construyendo la tabla de Karnaugh y hagamos las reuniones de todos los "0" de la
funcin en grupos de 2p
cd\ab
00
01
11
10
00
01
11
10
bcd
bcd
bcd
ab
62
Diseo digital
_________________________________________________________________________________
f = bcd + bcd + b cd + ab
Complementando ambos lados de la igualdad y aplicando las leyes de De Morgan, nos queda la
expresin mnima requerida
f = f = (b + c + d )(b + c + d)(b + c + d)(a + b )
__________________________________________________________________________________
Ejercicio 2.11
Obtener la expresin mnima como producto de sumas de las funciones propuestas en el ejercicio
2.10
__________________________________________________________________________________
Ejemplo 2.15
Sea la funcin
f (a,b,c,d) = m(2,7,8,10,12,13,15) + m(5,11,14)
4
Esta notacin expresa que para las combinaciones de las variables de entrada asociadas a los
minterms 5,11, y 14 la funcin no est especificada.
La minimizacin de esta funcin en forma de suma de productos sera la correspondiente a la tabla
de Karnaugh de la figura 2.5.a, con lo que resulta la expresin f = acd + b cd + bd . Ntese que
para obtener esta simplificacin se ha asignado el valor "1" a uno de los trminos no especificados
(concretamente el correpondiente a m5) y el valor "0" a los otros dos.
Si quisiramos obtener la expresin mnima como producto de sumas habra que agrupar los ceros
de la funcin tomando otra vez para las combinaciones no especificadas el valor ms conveniente
para obtener la mxima simplificacin.
63
_________________________________________________________________________________
a)
b)
ab\cd 00
01
00
01
11
10
11
0
ab\cd 00
10
01
11
100
001
X11
110
0
1
De acuerdo con la figura 2.5.b, la expresin mnima como suma de productos de la funcin negada
y la expresin final como producto de sumas sern
f = abd + ac + b d
f = f = (a + b + d)(a + c)(b + d )
Ntese que en este ltimo caso se ha efectuado una asignacin de valores para los trminos
inespecificados diferente de la realizada para obtener una suma de productos mnima, concretamente
"1" para el correspondiente a m14 y "0" para los otros dos.
Ejercicio 2.12
Obtener las expresiones mnimas como suma de productos y como producto de sumas de la
funcin incompletamente especificada siguiente:
F = m(0,2,3,6,7) + m(5,8,10,11,15)
4
__________________________________________________________________________________
64
Diseo digital
_________________________________________________________________________________
Respecto al primer problema hay que indicar que existen herramientas informticas de ayuda al diseo
digital que permiten resolverlo con comodidad: es evidente que el mtodo de simplificacin de
Karnaugh pierde su manejabilidad cuando el nmero de variables de la funcin es igual o superior a
seis, pero tambin es evidente que el algoritmo que se aplica no depende de este nmero, siendo
posible implementarlo informticamente.
Admitiendo como entrada la tabla de verdad, una expresin algebraica, e incluso en algunos casos un
logigrama de la funcin, estas herramientas informticas proporcionan una expresin simplificada de la
funcin. Esta expresin suele ser mnima cuando el nmero de variables es inferior a una cierta cota, y
muy simplificada (pero no mnima) cuando el nmero de variables supera esta, caso en el que suelen
emplearse algoritmos no estrictamente de minimizacin.
En cuanto a la simplificacin de multifunciones, no es evidente que se obtenga un resultado ptimo
(con el menor nmero global de trminos) a base de minimizar cada funcin por separado. Veamos
esto mediante un ejemplo.
Ejemplo 2.16
Implementar las funciones F1 (a,b,c) y F2 (a,b,c) mediante una red AND-OR de dos niveles
mnima, es decir con el menor nmero total posible de puertas.
F1 (a,b,c) = m(0,1,2,3,7)
F2 (a,b,c) = m(0,2,7)
Una opcin es minimizar cada funcin por separado, con lo que se obtienen los mapas y el
logigrama de la figura 2.6.
a\bc
00
01
11
10
F 1 = a + bc
00
01
11
10
F2 = abc + ac
a
b
c
a
b
c
a
c
F1
F2
Observando el resultado obtenido vemos que es posible realizar las funciones utilizando una puerta
menos si se aprovecha el trmino comn m7, tal como indica la figura 2.7, con lo que se llega al
resultado, esta vez s, mnimo.
65
_________________________________________________________________________________
a\bc
00
01
11
10
00
01
11
10
F 1 = a + abc
F2 = abc + ac
a
a
b
c
a
c
F1
F2
__________________________________________________________________________________
A la luz de lo mostrado en el ejemplo 2.16, el mtodo de simplificacin de multifunciones debera
considerar el reutilizar puertas en ms de una funcin o, lo que es lo mismo, buscar trminos o grupos
comunes a diversas funciones.
El mtodo de Quine-McCluskey, que no presentaremos en este texto, es un mtodo tabular basado en
la misma idea que el de Karnaugh, es decir, en simplificar expresiones del tipo suma de productos o
producto de sumas, aplicando la equivalencia booleana a(b + b ) = a o su dual, a + (bb ) = a , que
permite minimizar multifunciones. Ahora bien, incluso para pocas variables, en este mtodo se
pierden las "facilidades visuales" que posee el de Karnaugh, ya que es engorroso de usar, pero su
implementacin informtica es directa y sencilla.
Cuestiones
C2.1 Cuntas funciones incompletamente especificadas distintas de n variables pueden encontrarse?
C2.2 Plantee las diferencias entre suma lgica y suma aritmtica. Con qu funciones lgicas puede
identificarse cada una de ellas?
C2.3 Escriba las definiciones de minterm y maxterm.
C.2.4 Qu importancia tiene el orden de las variables en la notacin de minterms y maxterms?
Explquelo con un ejemplo.
C2.5 Explore en detalle las consecuencias de utilizar la misma notacin, referente a los subndices,
para los minterms que para los maxterms, y no la dual, tal como se comenta en el apartado 2.3.1.
66
Diseo digital
_________________________________________________________________________________
C2.12 Enuncie de forma sistemtica el mtodo dual de minimizacin de Karnaugh para obtener
directamente expresiones en forma de producto de sumas.
C2.13 Piense en cmo debe aplicarse el mtodo de simplificacin de Karnaugh para funciones de 5
variables. Aplquelo a la funcin siguiente
f (a,b,c,d,e) = m(1,2,4,6,10,11,12,18,20,21,22,28,29,30,31)
5
Problemas
P2.1 Realice las funciones lgicas NOR y NAND de dos variables utilizando nicamente un mdulo
como el indicado a continuacin. Sera posible realizar tambin la funcin XOR de dos variables
solamente con este mdulo?
67
_________________________________________________________________________________
a
b
c
y1
d
b
b)
a
b
c
y2
d
b
68
Diseo digital
_________________________________________________________________________________
P2.5 Obtenga una expresin algebraica y una tabla de verdad de cada una de las funciones realizadas por
el logigrama siguiente
a
f1
b
f2
69
_________________________________________________________________________________
a
c
a
d
f
c
d
b
d
f 2 = m(0,1,5)
3
f 3 = M(2,3,5,7)
3
P2.11 Disee un logigrama que corresponda a un conversor de cdigo binario de 3 bits a Gray de 3
bits. Es posible hacerlo utilizando solamente puertas XOR de 2 entradas?
P2.12 Disee un sistema combinacional como el especificado utilizando una red de puertas {AND,
OR, NOT} de dos etapas. (Nota): en este caso el smbolo S indica suma aritmtica.
SISTEMA
A
DISE AR
X {0,1}
Z {0,1}
Z = Xi
i=0
70
Diseo digital
_________________________________________________________________________________
P2.13 El objetivo es disear un comparador y detector de igualdad que opere con nmeros codificados
en binario de dos bits, segn la siguiente especificacin:
SISTEMA
A
DISEAR
1 si a = b
z0 =
0 si a b
1 si a > b
z1 =
0 si a b
1 si a < b
z2 =
0 si a b
Se pide realizar una implementacin mnima del comparador utilizando nicamente puertas NOR.
Nota: Obsrvese que las funciones son mutuamente excluyentes y que es posible obtener
cualquiera de ellas a partir de las otras dos.
P2.14 Considere la funcin F(h8,h4,h2,h1) realizada mediante el logigrama siguiente
h2
h1
h8
h4
donde las entradas corresponden a las horas de un reloj codificadas en binario: F vale "1" para
ciertas combinaciones de entrada (horas). Se pide realizar un logigrama mnimo que d el valor
lgico "1" para las mismas combinaciones de entrada vlidas que el anterior.
P2.15 Simplifique la funcin f = f1 + f2 f3 utilizando el mtodo de Karnaugh.
f 1 = m(1,7) + m(6)
3
f 2 = m(3,5,6)
3
f 3 = M(5,6,7)
3
P2.16 Implemente la funcin f(a,b,c) especificada por la siguiente evolucin temporal de los valores de
la salida en funcin de los valores de las variables de entrada, donde el nivel alto corresponde al valor
lgico "1" y el bajo al valor "0".
a) Utilizando solamente puertas NAND.
71
________________________________________________________________________________
a
b
c
f
P2.17 Se quiere disear un subsistema que forma parte un calendario. El objetivo es obtener una
salida que nos indique los dias que tiene cada mes (30, 31 o bien <30), a partir de una entrada que es
el nmero del mes codificado en binario. Se pide realizar una implementacin mnima del subsistema
usando solamente puertas NOR de tres entradas e inversores.
M8
M4
M2
M1
SISTEMA
A
DISEAR
D31
D30
D<30
P2.18 Disee un sistema combinacional que determine si una combinacin codificada en ASCII
corresponde o no a un dgito decimal. Utilizar solamente puertas NAND y/o NOR de tres entradas.
P2.19 El logigrama de la izquierda, Y0 corresponde a una posible implementacin de la funcin
incompletamente especificada Y.
X 3 X 2 X1
X0
X 3 X 2 X1
Y0
X0
Y1
72
Diseo digital
_________________________________________________________________________________
SISTEMA
A
DISEAR
f 1 = m(0,4,9,11,15) + m(1,5)
4
f 2 = m(0,4,6,7,13) + m(5)
4
f 3 = M(1,3,4,6,7,8,9,10,12,14) M(11)
4