Professional Documents
Culture Documents
Introducción
Introducción
En las últimas décadas hemos asistido a un rápido desarrollo de los sistemas electrónicos digitales,
origen y consecuencia del crecimiento de las redes de comunicaciones, de los sistemas de control y, en
particular, de la aparición y la utilización 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 años atrás. En particular, el número de
transistores en un circuito integrado ha crecido de forma espectacular en los últimos 30 años, por lo
que resulta arriesgado realizar previsiones sobre la evolución a largo plazo.
Simultáneamente con los avances tecnológicos, existe una creciente oferta de nuevas posibilidades que
obligan al diseñador de sistemas digitales a adaptar progresivamente sus estrategias de diseño a dichas
novedades.
En una primera época, sobre los años 60, los ingenieros utilizaban en sus diseños circuitos integrados
digitales sencillos, fabricados masivamente, que debían ser interconectados sobre una placa de forma
adecuada para lograr la funcionalidad requerida. Estos circuitos incluían un pequeño número de puertas
lógicas (del orden de 10) y constituyen lo que hoy día se denominan circuitos de pequeña escala de
integración (SSI, small scale integration).
Los circuitos integrados digitales disponibles comercialmente fueron sofisticándose a medida que era
posible integrar un mayor de número de transistores, y por tanto de puertas lógicas, sobre un mismo
sustrato, incluyendo una serie de bloques o módulos lógicos estándar de cierta complejidad. Se habla
entonces de circuitos de escala de integración 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 integración (LSI large scale integration), y la aparición de
circuitos de aplicación general cuya funcionalidad concreta depende de una programación por parte del
usuario obligaron a un cambio del modo de abordar el diseño 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 programación. De esta forma un mismo circuito puede ser
utilizado para diferentes aplicaciones sin más que modificar el programa que lo controla.
© 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.
8 Diseño digital
_________________________________________________________________________________
Finalmente, desde hace algunos años es posible integrar decenas de miles de puertas en un único
circuito integrado, lo que da lugar a la muy alta escala de integración (VLSI very large scale
integration).
Dentro del contexto VLSI han hecho su aparición nuevas posiblidades de diseño. Por ejemplo los
circuitos integrados de aplicación específica (ASIC Application Specific Integrated Circuits), circuitos
realizados a medida de un usuario y una aplicación concretos, cuya utilización es cada vez más general.
Dentro del concepto genérico de ASIC existen comercialmente multitud de variantes, que podemos
clasificar en dos grandes grupos:
En resumen, el abanico de soluciones posibles para llevar a término el diseño de un circuito digital es
muy amplio: utilización de circuitos integrados estándar SSI y MSI, sistemas basados en
microprocesadores, circuitos lógicos programables y circuitos tipo custom. Entre ellas el diseñador
debe elegir en función de diversas variables: número de unidades a producir, coste por unidad,
complejidad y coste del diseño, confidencialidad del diseño, 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 diseño digital, imprescindibles sea cual sea la alternativa
finalmente escogida. Adicionalmente se introduce al lector en la realización, tanto a nivel eléctrico
como físico, de circuitos digitales en las tecnologías nMOS y CMOS, proporcionándole con ello las
herramientas básicas necesarias parar abordar el diseño de circuitos integrados VLSI CMOS.
Este libro es el resultado de la experiencia acumulada durante varios años en la impartición de un curso
introductorio de electrónica digital en la Universidad Politécnica de Catalunya a alumnos de primer
curso en las titulaciones de Ingeniería de Telecomunicación e Ingeniería Electrónica. El material
presentado se cubre en su práctica totalidad en un semestre de 60 horas de clase de teoría y problemas,
en paralelo con un curso de laboratorio. Los autores han utilizado material generado por el colectivo de
profesores que en uno u otro momento han impartido la asignatura y quieren hacer constar aquí su
agradecimiento a todos ellos.
Se ha hecho un esfuerzo para generar un texto autocontenido en el que los conocimientos previos
requeridos son muy escasos (únicamente a partir del capítulo 3 es necesario el conocimiento de los
conceptos más elementales de análisis de circuitos electrónicos). Se ha intentado que el libro sea una
herramienta útil de estudio personal. También ha sido preocupación constante de los autores no
elaborar un texto enciclopédico o exhaustivo, sino por el contrario conseguir un libro conciso que
hiciera hincapié en los aspectos fundamentales.
R. Alcubilla
J. Pons
D. Bardés
Índice
1.1 Definiciones.............................................................................................................15
1.2 Sistemas digitales combinacionales y secuenciales...........................................................17
1.3 Codificación.............................................................................................................21
1.3.1 Codificación de números enteros ........................................................................23
1.3.2 Códigos alfanuméricos.....................................................................................27
1.3.3 Códigos detectores de errores .............................................................................29
1.5 Cuestiones y problemas .............................................................................................30
5.1 ¿Por qué la realización a dos niveles no resuelve el problema del diseño combinacional? ....... 169
5.2 Diseño con redes modulares....................................................................................... 172
5.2.1 Construcción de redes modulares ...................................................................... 173
5.2.2 Análisis y síntesis de redes modulares ............................................................... 176
5.3 Módulos combinacionales estándar ............................................................................. 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 aritmético-lógicas............................................................................. 197
5.4 Diseño combinacional basado en módulos universales .................................................... 198
5.4.1 Diseño combinacional con multiplexores........................................................... 198
5.4.2 Diseño combinacional con decodificadores.......................................................... 202
5.5 Diseño combinacional con módulos programables......................................................... 204
5.5.1 Diseño combinacional basado en ROM ............................................................. 204
5.5.2 Diseño combinacional con PLA....................................................................... 208
5.6 Cuestiones y problemas ........................................................................................... 210
Este cap’tulo pretende situar al lector en el campo de los sistemas electr—nicos 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 terminolog’a. El apartado 1.2
discute los conceptos de sistema combinacional y sistema secuencial. Por œltimo el apartado 1.3
introduce el concepto de codificaci—n.
1.1 Definiciones
Un sistema electr—nico digital es aquel que procesa se–ales elŽctricas digitales. Para el lector novel en
el ‡rea de ingenier’a es conveniente clarificar los significados precisos de cada uno de los tŽrminos de la
frase anterior.
Se entiende por sistema una entidad f’sica que recibe una serie de entradas o excitaciones y responde con
un conjunto de salidas. La figura 1.1 muestra la representaci—n genŽrica de un sistema.
n m
X Sistema Y
Entenderemos por se–al una magnitud f’sica variable con el tiempo que sirve de soporte a algœn tipo de
informaci—n. Se invita al lector a reflexionar sobre el hecho de que solamente las magnitudes f’sicas
© 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.
16 Dise–o digital
_________________________________________________________________________________
Las se–ales elŽctricas se pueden dividir en dos categor’as distintas, las se–ales anal—gicas y las
digitales. Una se–al es anal—gica cuando puede tomar cualquier valor entre dos valores extremos. Una
se–al es digital o discreta cuando s—lo puede tomar un nœmero finito de valores fijos entre dos valores
extremos. En la figura 1.2 se muestran ejemplos de estos dos tipos de se–ales.
a) b)
s(t) s(t)
t t
Veamos a continuaci—n un caso particular de sistema digital, el sistema l—gico. Un sistema l—gico
procesa se–ales l—gicas. Una se–al l—gica o binaria es aquella que solamente puede tomar dos valores
fijos. Las se–ales l—gicas son, por tanto, un caso particular de se–al digital as’ como el sistema l—gico
lo es de los sistemas digitales. Un ejemplo de se–al l—gica se muestra en la figura 1.3.
s(t)
En este texto trataremos de forma intensiva con se–ales y sistemas de este tipo. Uno de los motivos
del interŽs particular en las se–ales y los sistemas l—gicos es la disponibilidad de dispositivos
electr—nicos capaces de funcionar en dos estados n’tidamente diferenciados.
En realidad resulta habitual, y as’ se har‡ en este texto, el emplear indistintamente los tŽrminos
"digital" y "l—gico" aplicados ya sea a sistemas, circuitos o se–ales. El motivo es que la
transformaci—n de se–ales digitales o discretas a se–ales l—gicas o binarias, y viceversa, es
Sistema
Codificador Decodificador
lógico
Sistema digital
Los sistemas digitales pueden dividirse en dos categor’as atendiendo a la influencia que tiene el factor
tiempo en su funcionamiento.
Sistemas digitales combinacionales son aquŽllos en los cuales las salidas en un instante de tiempo ti
dependen œnicamente del valor de las entradas en ese mismo instante. Se entiende, por tanto, que los
valores que hayan tomado las entradas y salidas con anterioridad, es decir, en t<ti, no ejercen ninguna
influencia sobre el valor de las salidas en ti.
n Sistema m
X Combinacional Y
[
y(ti ) = F x ( ti ) ]
Como esta igualdad se cumple para cualquier valor de ti puede dejarse impl’cito el factor tiempo y
escribirse simplemente
y = F(x)
Ejemplo 1.1
n m
X Alarma Y
La entrada del sistema es el nivel del l’quido en el dep—sito y por tanto existen 6 valores posibles
de la entrada. An‡logamente s—lo pueden haber dos valores posibles de la salida: o bien la alarma
est‡ activada o bien no lo est‡.
La funci—n 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
__________________________________________________________________________________
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.
n Sistema m
X Secuencial Y
y(ti ) = F[ x(−∞,ti )]
Esta es la definici—n general de sistema secuencial. Sin embargo, existe de hecho un inconveniente de
orden pr‡ctico. El hecho de que la salida dependa de los distintos valores que toma la entrada durante un
intervalo infinito de tiempo conlleva la necesidad de una capacidad de almacenaje de informaci—n
infinita: esta capacidad es necesaria para memorizar los valores de la entrada durante el intervalo
(−∞,ti ) . Es claro que una memoria infinita es algo poco pr‡ctico desde el punto de vista de la
implementaci—n f’sica.
En este texto nos ocuparemos de una clase particular de sistemas secuenciales llamados sistemas
secuenciales de estados finitos; un nombre alternativo es el de m‡quinas de estados finitos. En estos
sistemas todas las evoluciones hist—ricas posibles de las entradas pueden ser agrupadas en un nœmero
finito de clases de equivalencia. Por tanto, el valor de la salida en un instante determinado depende del
valor de las entradas en ese instante y de la clase de equivalencia a la que pertenezca la evoluci—n
temporal anterior de las entradas. Esto elimina la necesidad de memoria infinita y permite implementar
pr‡cticamente estos sistemas.
Dicho de otra forma, para hallar y(t) en funci—n de x(t) no necesitamos conocer x(−∞,t) , sino
solamente la clase de equivalencia a la que pertenece. Este conocimiento lo tendremos a travŽs de una
variable nueva, s(t) , que denominaremos estado del sistema.
Por tanto la especificaci—n de una m‡quina de estados finitos pasa por la definici—n de un conjunto de
entradas, un conjunto de salidas y otro de estados. Adicionalmente ser‡ necesario definir dos funciones
y(t) = H(x(t),s(t))
s(t + ) = G(x(t),s(t))
La funci—n H se denomina funci—n de salida e indica el valor de la salida para cada combinaci—n de
entrada y estado del sistema. La funci—n G se denomina funci—n transici—n de estados y determina cu‡l
ser‡ el estado pr—ximo del sistema, es decir, el valor pr—ximo de la variable de estado, para cada
combinaci—n de valores de la entrada y estado actual del sistema.
Ejemplo 1.2
Una comprensi—n intuitiva del concepto de sistema secuencial se puede obtener a travŽs del an‡lisis
del funcionamiento de un ascensor. Para centrar ideas piŽnsese 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 reflexi—n 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 bot—n, la salida,
es decir, la acci—n 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 acci—n 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).
TambiŽn 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.
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 discusi—n anterior deber’a ser claro que el nœmero 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} .
Para especificar el sistema secuencial de forma completa necesitamos la funci—n de salida que
depende de la entrada y el estado actual y la funci—n transici—n de estados, que da el estado pr—ximo
en funcion de la entrada y el estado actual. Podemos especificar estas dos funciones mediante la
tabla de verdad presentada.
__________________________________________________________________________________
1.3 Codificaci—n
Ejemplo 1.3
Recordemos el ejemplo 1.1 referente a la alarma para un dep—sito. Ten’amos 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 ser’a
Elemento C—digo
asignado
0 000
1 100
2 101
3 001
4 010
5 011
Vemos, por otra parte, que el nœmero n de elementos de los vectores, en este caso particular, tiene
que ser de tres como m’nimo. Si hubiŽramos utilizado vectores de dos elementos no hubiŽramos
tenido suficientes combinaciones distintas para asignarlas a todos los elementos a codificar. Es
evidente que asignar dos codificaciones iguales a dos elementos distintos s—lo puede conducir a la
pŽrdida o confusi—n de informaci—n.
N—tese que en este ejemplo las combinaciones 111 y 110 no han sido utilizadas.
Igualmente podr’amos codificar las salidas. En el caso de la alarma s—lo ten’amos dos salidas
posibles y ∈{ON,OFF} , por tanto podemos utilizar vectores de un solo elemento para
codificarlas. Una posible codificaci—n, nuevamente arbitraria, de las salidas ser’a
C—digo
Elemento
asignado
ON 1
OFF 0
__________________________________________________________________________________
Una vez presentado de forma intuitiva el problema de la codificaci—n, vamos a formalizar la definici—n.
Codificaci—n es una funci—n, al menos inyectiva, que asigna un vector binario de dimensi—n 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 d’gito binario o bit. Denominamos byte a un vector de 8 bits.
Ejercicio 1.1
ÀCu‡ntos elementos podemos codificar mediante vectores de n bits? ÀCu‡ntos c—digos distintos
podemos formar con n bits?
Soluci—n:
Criterios posibles que pueden determinar la elecci—n de un c—digo determinado podr’an ser la
simplicidad, la compatibilidad entre sistemas, la posibilidad de detectar la aparici—n de algœn error, la
posibilidad de corregir errores, etc.
En los pr—ximos subapartados vamos a presentar brevemente algunos de los c—digos m‡s comœnmente
utilizados.
Ya que la codificaci—n finalmente representa los elementos a codificar mediante los d’gitos binarios 0 y
1, empezaremos este apartado presentando los sistemas de numeraci—n y en particular la numeraci—n en
base 2 y en potencias de 2.
Un nœmero representado en base r se escribe ( an−1 ,an−2 ,......,a1 ,a0 )r y su valor decimal se calcula
simplemente desarroll‡ndolo en potencias de r , donde los s’mbolos ai se asocian a los r primeros
nœmeros enteros (por tanto entre 0 y r-1)
Ejemplo 1.4
(11100001)2=1.27+1.26+1.25+0.24+0.23+0.22+0.21+1.20=128+64+32+1=(225)10
__________________________________________________________________________________
Ejercicio 1.2
Escribir los numeros decimales (101)10 y (202)10 en base 2. ÀQuŽ relaci—n hay entre los dos
resultados?
El 202 en base 2 coincide con el 101, desplazado una cifra a la izquierda. Esto se cumple para
cualquier nœmero que cumpla m =2.n, y se puede demostrar f‡cilmente substituyendo r por 2 en la
expresi—n de desarrollo en potencias, y multiplic‡ndola 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.
En el contexto que nos ocupa tambiŽn son de interŽs los sistemas de numeraci—n 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 nœmero escrito en base 2 y,
empezando por la derecha, se agrupan los d’gitos que lo forman en grupos de k bits, a cada uno de los
grupos se le asigna el d’gito correspondiente en base 2k .
Ejemplo 1.5
Nota: En base 16 se utilizan los siguientes s’mbolos para los 16 d’gitos 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
Codificaci—n en binario
Simplemente escribimos en binario, utilizando el nœmero de bits que sea necesario, el nœmero entero a
codificar.
Es claro que utilizando n bits podemos codificar un total de 2n nœmeros enteros, en concreto los que
van desde el 0 al 2n-1.
Ejemplo 1.6
Con 3 bits podemos codificar en binario natural los nœmeros que van desde el 0 hasta el 7.
0 1 2 3 4 5 6 7
000 001 010 011 100 101 110 111
__________________________________________________________________________________
Codificaci—n en BCD
El c—digo BCD, decimal codificado en binario, utiliza 4 bits para cada d’gito decimal, es decir
0 0000 5 0101
1 0001 6 0110
2 0010 7 0111
3 0011 8 1000
4 0100 9 1001
Por tanto quedan 6 combinaciones libres, las que van del 1010 al 1111. Cab’a esperar esto desde el
principio ya que 4 bits permiten codificar hasta 16 elementos y en el sistema de numeraci—n decimal
s—lo tenemos 10 d’gitos.
Ejemplo 1.7
El valor decimal de cada d’gito del nœmero 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 d’gitos correspondientes en binario de 4 bits. Los c—digos en los que esta operaci—n es
posible se denominan c—digos ponderados.
Ejemplo 1.8
Existen distintas variantes del c—digo BCD. Algunas de ellas se diferencian en el peso (o ponderaci—n)
de cada uno de los bits. Un ejemplo ser’a el BCD 2421. En dicho c—digo 2, 4, 2 y 1 son los pesos
respectivos de cada uno de los bits. ObsŽrvese en este ejemplo concreto que " a priori " un mismo
nœmero puede ser codificado de distintas maneras. Ser‡ necesaria, por tanto, una regla adicional que
determine cu‡l de las posibles codificaciones es la correspondiente al c—digo.
0 0011 5 1000
1 0100 6 1001
2 0101 7 1010
3 0110 8 1011
4 0111 9 1100
Parte del interŽs de este c—digo radica en que es autocomplementario, es decir, si en la combinaci—n
correspondiente a un nœmero n cambiamos los ceros por unos y viceversa se obtiene la combinaci—n
correspondiente a 9-n. Por ejemplo, el d’gito decimal 6 se codifica en BCD exceso 3 como 1001; si en
esta combinaci—n cambiamos los ceros por unos y viceversa se obtiene 0110. Esta combinaci—n
corresponde al 3, justamente 9-6. Por otra parte obsŽrvese que este c—digo no es ponderado.
C—digos de Gray
Este tipo de c—digo tambiŽn se conoce por los nombres de c—digo c’clico o reflejado. Su propiedad
fundamental es que cada codificaci—n difiere de la codificaci—n del entero anterior o posterior en un solo
bit. Empecemos construyendo el c—digo de Gray de un solo bit
Decimal Gray
0 0
1 1
Para obtener el c—digo de Gray de dos bits se procede de la siguiente manera: Se toma el c—digo de Gray
de 1 bit, se refleja especularmente respecto al eje mostrado en la figura, y se completa a–adiendo un "0"
a la izquierda para la primera mitad de combinaciones y un "1" para la otra mitad.
El procedimiento se itera para obtener de forma sucesiva los c—digos de Gray de 3, 4 y m‡s bits. As’
por ejemplo el c—digo de Gray de 3 bits se obtiene del de 2 bits de la forma que se indica en el gr‡fico
siguiente
Es muy habitual el tener que codificar textos compuestos por caracteres alfanumŽricos ( bajo esta
denominaci—n incluimos letras, nœmeros, s’mbolos ortogr‡ficos, car‡cteres de control, etc.).
El c—digo m‡s utilizado en este caso es el c—digo ASCII (American Standard Code for Information
Interchange), del cual existen dos versiones, la que utiliza 7 bits y el ASCII extendido, que utiliza 8
bits.
especifican aparte. Estos car‡cteres pueden utilizarse para transmitir un texto entre sistemas y/o
reconstruirlo sin ambigŸedades.
Las se–ales codificadas contienen informaci—n. Estas se–ales, y por tanto esta informaci—n, se
transmiten de unos circuitos (sistemas) electr—nicos a otros. Existen formas de codificar que permiten
detectar si se ha producido algœn error en la transmisi—n, estos c—digos reciben el nombre de c—digos
detectores de error. Mencionaremos aqu’ a t’tulo de ejemplo los c—digos con paridad, que es la forma
m‡s sencilla de c—digo detector de error.
Para transformar un c—digo en un c—digo con paridad se a–ade un bit adicional de tal manera que la
codificaci—n resultante (c—digo anterior y bit a–adido) tenga un nœmero par de bits de valor "1", en los
c—digos de paridad par, o impar en los c—digos de paridad impar.
Ejemplo 1.9
Tenemos un c—digo de tres bits con todas las combinaciones utilizadas y queremos convertirlo en
un c—digo de 4 bits con paridad par
C—digo Bit
previo a–adido
X2 X2 000 0
X1 X1 001 1
X0 X0
Xp 010 1
Paridad 011 0
100 1
101 0
110 0
111 1
__________________________________________________________________________________
Los c—digos con paridad pueden detectar un nœmero impar de errores en la transmisi—n de la
informaci—n pero no pueden detectar un nœmero 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 m‡s bits
de los estrictamente imprescindibles. Un c—digo que utiliza m‡s bits de los necesarios se denomina
redundante. En efecto, si tenemos 8 elementos a codificar podemos hacerlo mediante 3 bits, a–adir un
bit de paridad nos exige utilizar 4 bits para codificar el mismo nœmero de elementos. Cualquiera que
sea el procedimiento que utilicemos para detectar errores, siempre utilizaremos m‡s bits de los
imprescindibles. Esto es as’ por una raz—n muy simple: supongamos que codificamos 16 elementos
mediante 4 bits. Si se produce un error en la transmisi—n de uno cualquiera de los bits, por ejemplo se
env’a 0011 y se recibe el 0010, el receptor recibe una codificaci—n que corresponde a uno de los
elementos a codificar y por tanto en ausencia de informaci—n 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
codificaci—n que reciba no corresponda a ninguno de los elementos a codificar y esto no es posible a
menos que se utilicen m‡s bits de los imprescindibles.
Asimismo es posible generar c—digos que permitan, no s—lo detectar, sino corregir un cierto nœmero de
errores. El precio a pagar siempre es el aumentar el nœmero de bits utilizados para codificar una
determinada informaci—n, es decir, aumentar la redundancia del c—digo.
Cuestiones
C1.1 Discuta si las magnitudes y los sistemas siguientes son anal—gicos o digitales:
a) Temperatura
b) Cron—metro
c) Sem‡foro
d) Corriente elŽctrica
C1.2 ÀCu‡les de los siguientes sistemas, donde cada entrada puede tomar dos valores x ∈{a,b} , son
combinacionales y cu‡les secuenciales? Discuta si los secuenciales pueden describirse o no como
m‡quinas de estados finitos.
a) Un sistema con dos entradas que indique en cu‡l de ellas ha recibido m‡s 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 nœmero par o impar de b.
C1.3 Demuestre que para que una codificaci—n BCD ponderada sea autocomplementaria, la suma de
todos los pesos de la ponderaci—n debe ser igual a 9.
C1.4 Encuentre cu‡ntos c—digos BCD 2,4,2,1 diferentes se pueden formar y cu‡les de ellos son
autocomplementarios.
C1.5 Un c—digo "n entre m" es aquŽl en que todas las combinaciones v‡lidas contienen n unos y (m-n)
ceros (por tanto m bits en total). ÀCu‡ntos elementos distintos se pueden codificar mediante un c—digo
"2 entre 5"? Discuta quŽ tipo de errores permite detectar este c—digo.
C1.6 ÀEs œnico el c—digo de Gray? Proponga diferentes c—digos de tres bits con las mismas propiedades
que el c—digo 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 direcci—n. Escriba la
tabla de verdad que permita mover el motor a un lado o al otro hasta su l’mite.
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
mœltiplo de tres. Escriba las tablas de sus funciones de salida y de transici—n de estados.
P1.3 Proponga una codificaci—n que utilice 3 bits para los d’as de la semana. ÀEntre cu‡ntos c—digos
distintos puede escogerse?
P1.4 Proponga un c—digo BCD autocomplementario ponderado con pesos 8,4,-2,-1. ÀEs el œnico
posible?
P1.6 Encuentre la codificaci—n BCD de los nœmeros de la tabla del problema anterior.
P1.7 El c—digo llamado biquinario es un c—digo "2 entre 7" ponderado con pesos 5,0,4,3,2,1,0 para
cifras decimales. Encuentre cu‡ntos c—digos distintos cumplen estos requisitos.
En este cap’tulo se presentan los fundamentos formales, o si se prefiere matem‡ticos, del dise–o
digital. El hecho de que las se–ales procesadas por los sistemas l—gicos s—lo 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 matem‡ticas espec’ficamente creadas para tratar con este tipo de variables.
El ‡lgebra de Boole, desarrollada el siglo pasado como herramienta para tratar el c‡lculo de predicados
en l—gica matem‡tica, se revela extremadamente œtil en el campo del dise–o digital. A pesar del
marcado tono matem‡tico de este cap’tulo, es conveniente que el lector tenga en cuenta que su
inclusi—n no obedece a un deseo de completitud formal sino, por el contrario, a una necesidad de orden
pr‡ctico. Como comprobar‡ el lector, los conceptos introducidos en este cap’tulo son de uso
continuado en el resto de este texto.
Una funci—n l—gica o de conmutaci—n de n variables asigna un valor l—gico ("0" o "1") a cada
combinaci—n de n valores l—gicos de entrada
De acuerdo con esto, un sistema l—gico combinacional de n entradas y m salidas como el representado
en la figura 2.1 puede interpretarse como un conjunto de m funciones l—gicas de las mismas n
variables.
Y = F( X)
x y0
0
Sistema X = (xn−1 ,...,x1 ,x0 ) Y = (ym−1 ,...,y1 ,y0 )
x y1
1
.... Combinacional .... yi = f i (xn−1 ,...,x1 ,x0 ) 0 ≤ i ≤ m −1
x n-1 y m-1
© 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.
34 Dise–o digital
_________________________________________________________________________________
Existen distintas maneras de especificar y/o representar una funci—n l—gica; 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 m‡s adelante dentro de este mismo
cap’tulo las dos restantes.
Una tabla de verdad especifica el valor que toma la funci—n para cada posible combinaci—n de valores de
sus variables. Es evidente que cualquier funci—n l—gica puede representarse mediante una tabla de
verdad.
La tabla de verdad de una funci—n l—gica de tres variables (formalmente equivalente a un sistema
combinacional de tres entradas y una salida) se muestra a continuaci—n. Los valores de la funci—n
f(x2,x1,x0) s—lo pueden ser o bien "0" o bien "1".
x2 x1 x0 f(x2,x1,x0)
0 0 0 f(0,0,0)
0 0 1 f(0,0,1)
0 1 0 f(0,1,0)
0 1 1 f(0,1,1)
1 0 0 f(1,0,0)
1 0 1 f(1,0,1)
1 1 0 f(1,1,0)
1 1 1 f(1,1,1)
La tabla de Karnaugh, tambiŽn llamada mapa de Karnaugh, da una informaci—n equivalente a la de una
tabla de verdad. La diferencia estriba en la disposici—n topol—gica de la informaci—n. Se disponen los
valores de la funci—n en una tabla de doble entrada donde unas variables est‡n en el eje horizontal y
otras en el eje vertical. Las combinaciones de las variables de entrada en cada eje se ordenan siguiendo
un c—digo de Gray.
Ve‡moslo para el caso concreto de una funci—n de tres variables f(x2,x1,x0). En el eje vertical situamos
x2 y en el eje horizontal x1 y x0.
x2\x1x0 00 01 11 10
0 f(0,0,0) f(0,0,1) f(0,1,1) f(0,1,0)
1 f(1,0,0) f(1,0,1) f(1,1,1) f(1,1,0)
Como es natural, en una funci—n 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 c—digo de Gray. Ve‡moslo para una funci—n genŽrica
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,0,0) f(1,0,0,1) f(1,0,1,1) f(1,0,1,0)
El hecho de ordenar las variables segœn un c—digo de Gray hace que en casillas vecinas se sitœen los
valores de la funci—n correspondientes a combinaciones de las variables de entrada que difieren entre s’
en un s—lo bit. Si definimos como casillas l—gicamente 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.
Generalizando, podemos decir que cada casilla de una tabla de Karnaugh de n variables tiene n casillas
l—gicamente adyacentes, es decir, correspondientes a combinaciones de entrada que difieren œnicamente
en el valor de una variable.
x4=0 x4=1
x3x2\x1x0 00 01 11 10 x3x2\x1x0 00 01 11 10
00 00
01 01
11 11
10 10
La representación mediante tabla de Karnaugh para funciones lógicas 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 cíclicas de las 2 variables restantes), aunque se pierde la
facilidad de identificación de las casillas adyacentes. Por ello en la práctica la tabla de Karnaugh no
suele utilizarse para funciones de más de 5 variables.
Ejemplo 2.1
Supongamos un código de 4 bits con todas las combinaciones asignadas. Se desea generar un bit
adicional de forma que el código de 5 bits resultante tenga una paridad par. Especificar la función
lógica correspondiente mediante su tabla de verdad y su mapa de Karnaugh.
a b c d Y
0 0 0 0 0
0 0 0 1 1
0 0 1 0 1
0 0 1 1 0 ab\cd 00 01 11 10
0 1 0 0 1
0 1 0 1 0 00 0 1 0 1
0 1 1 0 0
0 1 1 1 1 01 1 0 1 0
1 0 0 0 1
1 0 0 1 0 11 0 1 0 1
1 0 1 0 0
1 0 1 1 1 10 1 0 1 0
1 1 0 0 0
1 1 0 1 1
1 1 1 0 1
1 1 1 1 0
Se trata de un sistema combinacional con 4 entradas y una salida, cuyo valor ser‡ "1" cuando en
las entradas tengamos un nœmero impar de valores "1", y "0" en caso contrario (nœmero par de
"1"). Por tanto la tabla de verdad y mapa de Karnaugh ser‡n los dados en la figura.
ObsŽrvese que el mapa de Karnaugh de una funci—n de paridad, dado que las variables de entrada
est‡n ordenadas segœn el c—digo 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 travŽs de sus tablas de verdad y de Karnaugh, un sistema combinacional que compare 2
nœmeros enteros A y B codificados en binario. La salida valdr‡ "1" si A>B.
A, B C—digo
Entradas A, B ∈{0,1,2,3}
0 00
1 01
1 si A > B
Salida Y = 2 10
0 en otro caso
3 11
__________________________________________________________________________________
Al estar limitado a dos el nœmero de valores que pueden tomar tanto las distintas variables de entrada
como la salida de una funci—n l—gica, resulta que el nœmero de funciones l—gicas distintas de n
variables est‡ acotado. Por tanto, es posible realizar un inventario de todas las funciones l—gicas de un
nœmero dado de variables.
Funciones l—gicas de una variable: Existen 4 y s—lo 4 funciones l—gicas de una variable, que
presentamos en la tabla siguiente
0 0 0 1 0
1 0 1 0 0
f0(x0). Como se observa en la tabla, esta funci—n asigna el valor cero independientemente del valor de
la variable. Se la denomina funci—n constante cero. Podemos asignar a esta funci—n la siguiente
representaci—n en forma de expresi—n algebraica
f 0 (x 0 ) = 0
f1(x0). El valor de la funci—n coincide con el de la variable de entrada. Por este motivo se la denomina
funci—n identidad. La expresi—n algebraica de esta funci—n es
f 1 (x 0 ) = x 0
f2(x0). En este caso el valor de la funci—n siempre es el contrario o complementario del que tiene la
variable de entrada. Se la conoce como funci—n complemento, negaci—n o funci—n NOT. La expresi—n
algebraica correspondiente es
f 2 (x 0 ) = x 0
f3(x0). Por œltimo, esta funci—n siempre devuelve el valor "1" independientemente del valor de la
variable de entrada y por eso recibe el nombre de funci—n constante 1. Su expresi—n algebraica ser‡
f 3 (x 0 ) =1
Algunas funciones l—gicas cuentan con un s’mbolo propio para su representaci—n gr‡fica. Estos
s’mb—los graficos se denominan logigramas o puertas y suponen una primera aproximaci—n a la
estructura del circuito o elemento f’sico 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
x x x x
1
Figura 2.2 Logigramas para las funciones l—gicas de una variable. a) funci—n constante 0,
b) funci—n identidad, c) funci—n constante 1, d) funci—n complemento
Funciones l—gicas de dos variables: Es posible obtener hasta 16 funciones l—gicas diferentes
de 2 variables, que se muestran en la tabla siguiente
Algunas de estas 16 funciones se utilizan con mayor frecuencia y las presentamos a continuaci—n
como funciones destacables.
f 1 . La funci—n f 1 se denomina AND o producto l—gico y s—lo toma el valor "1" cuando las dos
variables de entrada toman el valor "1". La definici—n dada puede independizarse del nœmero de
variables; por tanto, denominaremos funci—n AND de n variables a la funci—n l—gica que s—lo valdr‡
"1" cuando todas las variables de entrada valgan "1". La expresi—n algebraica y el logigrama para la
funci—n AND de dos variables son los siguientes
x1
f AND (x1 , x 0 ) = x1 x 0 x1 x0
x0
f7. Esta funci—n toma el valor "1" cuando alguna de las entradas toma el valor "1" (eventualmente
pueden ser las dos) o, de forma equivalente, s—lo toma el valor "0" cuando todas las variables de entrada
toman el valor "0". Recibe el nombre de funci—n OR o suma l—gica. Como antes la definici—n es
independiente del nœmero de variables y por tanto denominaremos funci—n OR de n variables a aquella
que vale "1" cuando alguna (una o m‡s) de las entradas toma el valor "1". La expresi—n algebraica y el
logigrama para esta funci—n son
x1
f OR (x1 , x 0 ) = x1 + x 0 x1 + x 0
x0
f6. A partir de los valores que toma para dos variables esta funci—n puede ser interpretada de diversas
maneras: 1- La funci—n toma el valor "1" cuando las entradas son distintas y "0" cuando son iguales.
2- El valor de la funci—n es la suma m—dulo 2 de las entradas. 3- La funci—n vale "1" cuando el nœmero
de "1" a su entrada es impar y "0" cuando no lo es. Las dos œltimas interpretaciones son directamente
generalizables a n entradas. Esta funci—n recibe el nombre de XOR o tambiŽn OR exclusiva. La
expresi—n algebraica y el logigrama para la funci—n XOR de dos variables son
x1
f XOR (x1 , x 0 ) = x1 ⊕ x 0 x1 + x 0
x0
Las complementarias de estas tres funciones tambiŽn son destacables. Entendemos por funciones
complementarias aquŽllas que para los mismos valores de las variables toman valores opuestos:
x1
f NAND (x1 , x 0 ) = x1 x 0 x1x0
x0
x1
f NOR (x1 , x 0 ) = x1 + x 0 x1 + x 0
x0
x1
f XNOR (x1 , x 0 ) = x1 ⊕ x 0 x1 + x0
x0
Son funciones l—gicas cuyo valor no est‡ definido, especificado, para alguna combinaci—n de variables
de entrada. En lenguaje formal, podr’amos decir que su dominio es un subconjunto de las 2n posibles
combinaciones de las variables de entrada.
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 mœltiplo de 3 y "0" en caso contrario. La tabla de verdad
de este sistema ser’a
x3 x2 x1 x0 Y x3 x2 x1 x0 Y
0 0 0 0 1 1 0 0 0 0
0 0 0 1 0 1 0 0 1 1
0 0 1 0 0 1 0 1 0 X
0 0 1 1 1 1 0 1 1 X
0 1 0 0 0 1 1 0 0 X
0 1 0 1 0 1 1 0 1 X
0 1 1 0 1 1 1 1 0 X
0 1 1 1 0 1 1 1 1 X
N—tese que las combinaciones de entrada comprendidas entre 1010 y 1111 no pertenecen al c—digo
BCD y por tanto no se van a presentar nunca; en consecuencia, es irrelevante el valor que tome la
funci—n para dichas combinaciones de entrada. Usaremos la notaci—n "X" (salida indiferente) para el
valor de la funci—n en dichos casos.
__________________________________________________________________________________
Ejercicio 2.2
n
DemuŽstrese que hay 2 (2 ) funciones l—gicas diferentes de n variables.
__________________________________________________________________________________
Los œnicos valores que puede tomar una funci—n l—gica son "0" o "1", es decir, valores que pueden
corresponder a variables de una nueva funci—n l—gica. En consecuencia las funciones l—gicas se pueden
componer entre s’, con lo que se generan otras funciones l—gicas m‡s complejas.
Ejemplo 2.3
z = c + abd
d abd
d
a c + abd
b
c
__________________________________________________________________________________
Ejercicio 2.3
Hasta ahora hemos visto cuatro formas equivalentes, aunque formalmente distintas, de representar una
funci—n l—gica: 1-Tabla de verdad. 2-Tabla de Karnaugh. 3-Expresi—n algebraica. 4-Logigrama. Segœn
las circunstancias, unas formas de representaci—n ser‡n m‡s convenientes que otras, pero no debe
perderse de vista que la informaci—n aportada es la misma.
Recordemos que las variables l—gicas solamente pueden tomar dos valores. En el siglo XIX George
Boole (1815-1864), trabajando en el c‡lculo de predicados en l—gica matem‡tica, cre— una
superestructura matem‡tica particularmente œtil en los casos en que los valores posibles de las
variables son solamente dos. El dise–o digital utiliza de forma extensiva estos resultados obtenidos
hace m‡s de un siglo.
ì a ×b ÎB
a,b ÎB Þ í
î a + b ÎB
ìa + b = b + a
a,b ÎB Þ í
î a ×b = b × a
ì 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 operaci—n. 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
a + a =1
a×a = 0
En el tratamiento de variables l—gicas podemos tomar el conjunto B = {0,1} y escoger las operaciones
siguientes
Es inmediato comprobar que el conjunto definido m‡s las operaciones suma y producto escogidas
cumplen los postulados anteriores. Por tanto, constituyen un ‡lgebra de Boole de dos elementos (o
valores).
Un ‡lgebra de Boole, en virtud de las propiedades que por definici—n se le exigen, cumple una serie de
teoremas. Estos teoremas son de gran utilidad a la hora de transformar expresiones algebraicas de
funciones l—gicas en otras equivalentes.
Sean a,b,c ÎB
-Asociatividad: a + (b + c) = (a + b) + c
a ×(b ×c) = (a ×b)×c
-Idempotencia: a+a=a
a×a = a
-Absorci—n: a + a ×b = a + b a + a ×b = a
a ×(a + b) = a ×b a(a + b) = a
-Involuci—n: (a) = a
-Inc—gnita: x +1=1
x ×0 = 0
-Leyes de De Morgan: a + b = a ×b
a ×b = a + b
La permutaci—n del teorema de dualidad conlleva cambiar cada variable por su complementaria.
ObsŽrvese que todas las propiedades exigidas a un ‡lgebra de Boole cumplen esta condici—n, por tanto,
cualquier expresi—n que se derive de ellas tambiŽn la cumplir‡.
Adem‡s, 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 Õ ai = å ai
i i i i
Ejemplo 2.4
z = c + abd
(
z =c a +b +d )
Esto nos permite escribir una expresi—n algebraica equivalente para la funci—n z, aplicando el
teorema de involuci—n
(
z=c a +b +d )
Ejercicio 2.4
Las demostraciones de los teoremas presentados tambiŽn 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
travŽs de su tabla de verdad y realizar la comprobaci—n del resultado.
Ejemplo 2.5
a + ab = a + b
a + ab = (a + a)(a + b) =1×(a + b) = a + b
__________________________________________________________________________________
Ejercicio 2.5
Utilizando œnicamente los postulados del ‡lgebra de Boole, demuŽstrese la segunda igualdad del
teorema de absorci—n: a + ab = a .
__________________________________________________________________________________
Los postulados y teoremas del ‡lgebra de Boole traen como consecuencia que la expresi—n algebraica de
una funci—n l—gica no es œnica. Por tanto es posible utilizar las propiedades anteriores para simplificar
las expresiones algebraicas de funciones l—gicas. Ve‡moslo mediante algunos ejemplos.
Ejemplo 2.6
a) cd(a + ab) + bd(ac + c) = cd(a(1+ b)) + bd(c(1+ a)) = cda + cbd = cd(a + b)
b) a + b + c + d + abcd = (a + b + c + d) + (a + b + c + d) =1
Ejercicio 2.6
Al final del apartado 2.1 resum’amos las cuatro formas vistas de representar una funci—n l—gica: tabla
de verdad, tabla de Karnaugh, expresi—n 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 funci—n l—gica a travŽs 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
expresi—n algebraica de la funci—n Y(a,b,c).
a b c
A B
C
Y
D
F
A = a + b = ab B = Ac = abc C = abc
D = abc E = abc F = DE = abc + abc
La tabla de verdad puede obtenerse evaluando las variables intermedias y las expresiones anteriores
para cada combinaci—n de valores de las variables de entrada.
a b c A B C D E F Y
0 0 0 1 0 0 1 1 0 0
0 0 1 1 1 0 1 1 0 1
0 1 0 0 0 1 1 1 0 1
0 1 1 0 0 0 1 1 0 0
1 0 0 0 0 0 0 1 1 1
1 0 1 0 0 0 1 1 0 0
1 1 0 0 0 0 1 1 0 0
1 1 1 0 0 0 1 0 1 1
a\bc 00 01 11 10
0 0 1 0 1
1 1 0 1 0
Un an‡lisis detallado de la tabla de verdad nos lleva a concluir que la funci—n l—gica Y vale "1"
cuando el nœmero de entradas que toman el valor "1" es impar y asigna el valor "0" en caso
contrario; por tanto, una expresi—n algebraica y un logigrama alternativos son
a
Y = aÅbÅc b Y
c
__________________________________________________________________________________
A partir de lo visto en el apartado anterior, es claro que una misma funci—n l—gica admite una infinidad
de expresiones algebraicas. Como consecuencia admitir‡ tambiŽn una infinidad de logigramas. Por el
contrario, la tabla de verdad y la tabla de Karnaugh son œnicas para una funci—n l—gica dada.
De entre esta infinidad de expresiones algebraicas equivalentes se puede encontrar formatos que sean de
particular interŽs por ser aplicables a cualquier funci—n l—gica. Estos formatos o expresiones
generalizables de las funciones l—gicas se denominan formas can—nicas. Sin embargo, antes de
presentar las formas can—nicas de una funci—n l—gica es conveniente formalizar el concepto de
minterm, el de maxterm y presentar el teorema de Shannon.
Sea f una funci—n l—gica de n variables; denominamos producto m’nimo o minterm de dicha funci—n al
monomio formado por el producto l—gico de todas sus variables complementadas o no. Con n
variables se pueden construir 2n minterms diferentes. Usaremos la notaci—n mi (con 0 £ i £ 2 n - 1 )
para referirnos al minterm i-Žsimo de una funci—n.
Identificamos cada minterm mediante un sub’ndice nœmerico que corresponde a la combinaci—n binaria
resultante de sustituir por "0" las variables complementadas y por "1" las que no lo est‡n. Otra forma
de expresar lo mismo es diciendo que un minterm se identifica mediante un sub’ndice correspondiente
al valor decimal de la combinaci—n de entradas que hace que el minterm en cuesti—n tome el valor "1".
Veamos esto en detalle para una funci—n l—gica de tres variables. La generalizaci—n a n variables es
inmediata.
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
Sea f una funci—n l—gica de n variables; denominamos suma m‡xima o maxterm de dicha funci—n al
polinomio formado por la suma l—gica de todas sus variables complementadas o no. Con n variables
se pueden construir 2n maxterms diferentes. Usaremos la notaci—n Mi para referirnos al maxterm i-
Žsimo de una funci—n.
Vamos a verlo en detalle para una funci—n l—gica de tres variables. La generalizaci—n a n variables es,
otra vez, inmediata.
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
Si f es una funci—n l—gica de n variables, entonces es posible realizar la extracci—n de una de las
variables, con lo que se generan dos funciones residuales de n-1 variables de acuerdo con la siguiente
expresi—n
f (x n-1 , x n-2 ,..., x1 , x 0 ) = x n-1 f (0, x n-2 ,..., x1 , x 0 ) + x n-1 f (1, x n-2 ,..., x1 , x 0 )
Una formulaci—n dual del teorema puede hacerse mediante esta otra expresi—n
f (x n-1 , x n-2 ,..., x1 , x 0 ) = [ x n-1 + f (1, x n-2 ,..., x1 , x 0 )] × [ x n-1 + f (0, x n-2 ,..., x1 , x 0 )]
La demostraci—n del teorema es inmediata a travŽs de la tabla de verdad. Para ello s—lo es necesario
evaluar los tŽrminos a derecha e izquierda de la igualdad para cada uno de los dos valores posibles de la
variable extra’da: xn-1=0 y xn-1=1.
Ejemplo 2.8
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
Cualquier funci—n l—gica puede expresarse como suma l—gica de minterms. Asimismo, cualquier
funci—n l—gica puede tambiŽn expresarse como producto l—gico de maxterms. Estas expresiones
algebraicas se denominan formas can—nicas disyuntiva y conjuntiva respectivamente.
La demostraci—n de la existencia de estas dos formas can—nicas es sencilla si bien un tanto farragosa en
lo que respecta a la notaci—n. Se basa en la aplicaci—n reiterada del teorema de Shannon: partiendo de la
primera de las expresiones propuestas por el teorema para una funci—n f de n variables y aplic‡ndola de
nuevo a cada uno de los sumandos del tŽrmino de la derecha nos queda
f (0, x n-2 ,..., x 0 ) = x n-2 f (0,0, x n-3 ,..., x 0 ) + x n-2 f (0,1, x n-3 ,..., x 0 )
f (1, x n-2 ,..., x 0 ) = x n-2 f (1,0, x n-3 ,..., x 0 ) + x n-2 f (1,1, x n-3 ,..., x 0 )
f (x n-1 , x n-2 ,..., x 0 ) = x n-1 x n-2 f (0,0, x n-3 ,..., x 0 ) + x n-1 x n-2 f (0,1, x n-3 ,..., x 0 ) +
+ x n-1 x n-2 f (1,0, x n-3 ,..., x 0 ) + x n-1 x n-2 f (1,1, x n-3 ,..., x 0 )
Iterando la aplicaci—n del teorema de Shannon a las funciones residuales hasta extraer todas las
variables, nos queda finalmente
Expresi—n que identificamos como la forma can—nica disyuntiva, es decir, en suma de minterms, donde
las f(i) son las funciones residuales tras la extracci—n de todas las variables, es decir, funciones
constantes, que solo pueden tomar dos valores "0" o "1".
La existencia de la forma can—nica conjuntiva puede demostrarse a partir de la segunda expresi—n del
teorema de Shannon. Su expresi—n compacta es
2n -1
f (x n-1 , x n-2 ,.., x1 , x 0 ) = Õ (Mi + f (i))
i=0
Veamos a travŽs de un ejemplo c—mo obtener las formas can—nicas de una funci—n l—gica.
Ejemplo 2.9
Pretendemos obtener las formas can—nicas de la funci—n y = a + bc. Siguiendo paso a paso la
demostraci—n anterior se llega a la siguiente expresi—n
A partir de la tabla de verdad podemos evaluar el valor de la funci—n para cada combinaci—n de las
variables de entrada
a b c y
0 0 0 0
0 0 1 1
0 1 0 0
0 1 1 0
1 0 0 1
1 0 1 1
1 1 0 1
1 1 1 1
y = å m(1,4,5,6,7)
3
y = å m(1,4,5,6,7)
3
y = å m(0,2,3)
3
Es decir, los tŽrminos presentes en la expresi—n de la funci—n como producto de maxterms (en
ocasiones denominada PoS) son M0, M2, y M3, cuyos sub’ndices son precisamente los que no
aparec’an en la forma can—nica en suma de minterms: a partir de la tabla de verdad se observa que
los maxterms que aparecen en la forma can—nica conjuntiva son aquellos cuyo sub’ndice
corresponde a las combinaciones de entrada que hacen "0" la funci—n. Esto es as’ en virtud de las
distintas notaciones utilizadas para minterms y maxterms. Esta notaci—n, sin embargo, no es
universal: en algunos textos se utilizan otros procedimientos para asignar sub’ndices a los
minterms y a los maxterms, en cuyo caso el mŽtodo de paso de una a otra forma can—nica es
menos inmediato que el aqu’ descrito.
__________________________________________________________________________________
Ejercicio 2.7
Un conjunto de funciones l—gicas es completo cuando cualquier funci—n l—gica se puede expresar
utilizando œnicamente las funciones del grupo. De lo visto en el apartado anterior se deduce que el
conjunto formado por las funciones NOT, AND y OR es un grupo completo de funciones. En realidad
las formas can—nicas son formas de escribir cualquier funci—n utilizando s—lo funciones AND, OR y
NOT.
Es de destacar el hecho que las funciones NAND y NOR constituyen, cada una de ellas por separado,
un grupo completo de funciones. Esto se traduce en que cualquier funci—n l—gica puede expresarse
utilizando œnicamente o bien funciones NAND o bien funciones NOR.
Ejemplo 2.10
Vamos a demostrar que la funci—n 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 funci—n NAND. Comencemos viendo que es posible obtener la
funci—n NOT utilizando s—lo funciones NAND
x = x×x Þ
Una vez vista la realizaci—n de la funci—n NOT mediante funciones NAND, resulta inmediato
realizar una funci—n AND utilizando funciones NAND
x1 x2 = x1 × x2 = x1 × x2 × x1 × x2 Þ
Por œltimo, para realizar la funci—n OR podemos aplicar las leyes de De Morgan
x1 + x2 = x1 × x2 = x1 × x1 × x2 × x2 Þ
__________________________________________________________________________________
Ejercicio 2.8
Mediante algunos ejemplos vamos a presentar c—mo son los logigramas asociados a las expresiones
algebraicas can—nicas de una funci—n l—gica.
Ejemplo 2.11
Dibujar el logigrama de la funci—n del ejemplo 2.7 partiendo de su expresi—n como SoP. A
continuaci—n, realizar el logigrama s—lo mediante funciones NAND. De forma dual, proponer el
logigrama correspondiente al producto de maxterms, y una realizaci—n solo con funciones NOR.
a b c
m1
m4
m5
y
m6
m 7
Para realizar una implementaci—n usando s—lo 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 i
a b c
m1
m4
m5
y
m6
m7
y = M0 × M2 × M3 = (a + b + c)(a + b + c)(a + b + c)
La implementaci—n con puertas OR, AND y NOT requerida es, otra vez, inmediata a partir de la
expresi—n algebraica
a b c
M0
M 2
y
M3
Para pasar a una implementaci—n s—lo 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 funci—n AND de variables negadas es equivalente a la funci—n NOR
de las mismas variables sin negar. Luego el resultado ser‡
a b c
M0
M 2
y
M3
__________________________________________________________________________________
La primera conclusi—n que podemos extraer del ejemplo 2.11 es que las formas can—nicas conducen de
una forma inmediata a logigramas con una estructura regular. As’ la forma can—nica 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 funci—n, directas o negadas (mediante puertas NOT). Este resultado es dual para
la forma can—nica en producto de sumas.
Adem‡s, un resultado complementario es que las formas can—nicas conducen tambiŽn de forma natural
a la realizaci—n de cualquier funci—n l—gica mediante logigramas hechos œnicamente con dos etapas de
puertas NAND (caso de partir de la forma can—nica SoP) o con dos etapas de puertas NOR (caso de
partir de la forma can—nica PoS).
Ejercicio 2.9
Obtenga las formas can—nicas en SoP y PoS de la funci—n y(a,b,c) = abc + bc + abc . Obtener
tambiŽn los logigramas de la funci—n en forma de redes de dos niveles de puertas AND-OR, OR-
AND, NAND y NOR.
__________________________________________________________________________________
Minimizar una funci—n l—gica es encontrar una expresi—n algebraica que la describa y que incluya el
m’nimo nœmero de variables y/o operaciones. Existe un interŽs evidente en poder minimizar funciones
puesto que, en principio, una funci—n l—gica especificada mediante una expresi—n algebraica sencilla
podr‡ implementarse mediante un logigrama (cicuito) m‡s sencillo, y por tanto de menor coste.
Hemos visto en el apartado 2.3 que es posible simplificar la expresi—n algebraica de una funci—n l—gica
mediante la aplicaci—n "adecuada" de las propiedades del ‡lgebra de Boole. Sin embargo dicho
procedimiento tiene algunos inconvenientes: 1- No es sistem‡tico, dependiendo el resultado de la
habilidad de quien lo utiliza. 2- No siempre es f‡cil determinar si se ha obtenido la expresi—n m‡s
simplificada posible. 3- A diferencia de las formas can—nicas, la soluci—n no suele tener un formato
regular, por lo que conduce a logigramas de estructura impredecible a priori.
En este apartado se presenta un mŽtodo sistem‡tico, denominado mŽtodo de Karnaugh, que permite
obtener la expresi—n m’nima de una funci—n l—gica manteniendo el formato de suma de productos y/o
de producto de sumas.
Recordemos que, al representar una funci—n mediante tabla de Karnaugh, en cada casilla se consigna el
valor de la funci—n para una cierta combinaci—n de valores de las variables de entrada. La propiedad
fundamental de la tabla de Karnaugh es que dos casillas adyacentes corresponden a combinaciones de las
variables de entrada que difieren en un solo bit. Por otra parte, recordar‡ el lector que las combinaciones
de entrada que dan lugar a "1" en la tabla de verdad indican los minterms presentes en la expresi—n
can—nica de la funci—n.
ab\cd 00 01 11 10
00 1 0 0 1
01 1 0 0 1
11 0 1 0 0
10 0 1 0 0
Cada "1" de la tabla corresponde a un minterm presente en la expresión canónica de la función como
suma de minterms. Así por ejemplo el "1" correspondiente a la combinación de entrada
(a,b,c,d)=(0,0,0,0) revela la presencia del minterm a bcd en la expresión canónica de la función.
Dos "1" en celdas adyacentes de la tabla de Karnaugh corresponden a dos minterms en la expresión
canónica de la función 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 expresión como suma de minterms de una función lógica aparecen dos minterms
que sólo difieren en una variable xi, es claro que aplicando distributividad nos quedarán expresiones
del tipo siguiente
El contenido del paréntesis es igual a la unidad y por tanto puede eliminarse. Es decir, la presencia de
dos "1" adyacentes en la tabla de Karnaugh conduce a la eliminación de una variable. Este resultado
es generalizable para 4, 8 y en general 2n casillas adyacentes.
Ejemplo 2.12
En la funci—n 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 defin’an como l—gicamente adyacentes a las casillas de la columna de la izquierda,
y que las casillas de la fila superior estaban definidas como l—gicamente adyacentes a las casillas de
la fila inferior).
m9 = abcd
m9 + m13 = abcd + abcd = acd(b + b) = acd
m13 = abcd
De la agrupaci—n de los dos minterms hemos eliminado una variable. Si analizamos ahora la
agrupaci—n restante tenemos
m0 = abcd
m2 = abcd m0 + m2 = abd
m4 = abcd m4 + m6 = abd
m6 = abcd
Los dos tŽrminos resultantes tambiŽn difieren entre s’ en una sola variable (b) y, por tanto, al
sumarlos tambiŽn se eliminar‡ esa variable
m0 + m2 + m4 + m6 = ad
Podemos concluir diciendo que una expresi—n simplificada en forma (no can—nica) de suma de
productos de la funci—n y(a,b,c,d) es y = ad + acd .
__________________________________________________________________________________
2- La reunión (suma) de 2p celdas lógicamente adyacentes entre sí que contienen "1" elimina
p variables en la expresión de la función.
3- Al reunir celdas en un mapa de Karnaugh es aconsejable comenzar por las que presentan
menor número de "1" en celdas adyacentes.
4- Hay que formar el menor número de grupos que recubra todos los "1" de la función.
Cuantos menos grupos tengamos menos términos quedarán en la expresión final.
5- Es necesario agrupar tantos "1" como sea posible en cada grupo; recuérdese que grupos
mayores eliminan mayor número de variables.
Ejemplo 2.13
f ( a, b, c , d ) = ∑ m (0 ,1,3,8,9,11,13,14 )
4
Construyamos la tabla de Karnaugh y hagamos las reuniones de todos los "1" de la función
cd\ab 00 01 11 10
00 1 0 0 1
bc
01 1 0 1 1
11 1 0 0 1
10 0 0 1 0 bd
abcd acd
Para identificar las variables que aparecen en el producto asociado a cada grupo de "1", debemos
fijarnos en cuáles de ellas no cambian su valor en todas las celdas del grupo. La expresión
mínima como suma de productos nos queda
f = abcd + acd + bc + bd
_________________________________________________________________________________
Ejercicio 2.10
b) F(a,b,c,d) = å m(1,2,3,4,6,7,10,15)
4
__________________________________________________________________________________
TambiŽn es posible obtener la expresi—n simplificada de una funci—n l—gica como producto de sumas.
Podriamos usar un mŽtodo de Karnaugh dual, pero el procedimiento m‡s c—modo es el siguiente: Si
los "1" de la tabla de Karnaugh representan los minterms de la funci—n, entonces los "0" representan
los minterms de la funci—n negada. Aplicando el mŽtodo de minimizaci—n a los "0" en lugar de a los
"1", se obtendr‡ la expresi—n m’nima en suma de productos de la funci—n negada. Complementando el
resultado y aplicando las leyes de De Morgan, obtendremos la expresi—n m’nima como producto de
sumas.
Ejemplo 2.14
Vamos a minimizar la funci—n 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
funci—n en grupos de 2p
cd\ab 00 01 11 10
00 1 0 0 1
bcd
01 1 0 1 1
bcd
11 1 0 0 1
10 0 0 1 0
bcd ab
f = bcd + bcd + b cd + ab
Complementando ambos lados de la igualdad y aplicando las leyes de De Morgan, nos queda la
expresi—n m’nima requerida
Ejercicio 2.11
Obtener la expresi—n m’nima como producto de sumas de las funciones propuestas en el ejercicio
2.10
__________________________________________________________________________________
Ejemplo 2.15
Sea la funci—n
Esta notaci—n expresa que para las combinaciones de las variables de entrada asociadas a los
minterms 5,11, y 14 la funci—n no est‡ especificada.
Si quisiŽramos obtener la expresi—n m’nima como producto de sumas habr’a que agrupar los ceros
de la funci—n tomando otra vez para las combinaciones no especificadas el valor m‡s conveniente
para obtener la m‡xima simplificaci—n.
a) b)
ab\cd 00 01 11 ab\cd 00
10 01 11
00 0 0 0 100 0 0 0
01 0 X 1 001 0 X 1
11 1 1 1 X11 1 1 1
10 1 0 X 110 1 0 X
De acuerdo con la figura 2.5.b, la expresi—n m’nima como suma de productos de la funci—n negada
y la expresi—n final como producto de sumas ser‡n
f = abd + ac + b d
f = f = (a + b + d)(a + c)(b + d )
N—tese que en este œltimo caso se ha efectuado una asignaci—n de valores para los tŽrminos
inespecificados diferente de la realizada para obtener una suma de productos m’nima, concretamente
"1" para el correspondiente a m14 y "0" para los otros dos.
Ejercicio 2.12
Obtener las expresiones m’nimas como suma de productos y como producto de sumas de la
funci—n incompletamente especificada siguiente:
F = å m(0,2,3,6,7) + å m(5,8,10,11,15)
4 x
__________________________________________________________________________________
Respecto al primer problema hay que indicar que existen herramientas inform‡ticas de ayuda al dise–o
digital que permiten resolverlo con comodidad: es evidente que el mŽtodo de simplificaci—n de
Karnaugh pierde su manejabilidad cuando el nœmero de variables de la funci—n es igual o superior a
seis, pero tambiŽn es evidente que el algoritmo que se aplica no depende de este nœmero, siendo
posible implementarlo inform‡ticamente.
Admitiendo como entrada la tabla de verdad, una expresi—n algebraica, e incluso en algunos casos un
logigrama de la funci—n, estas herramientas inform‡ticas proporcionan una expresi—n simplificada de la
funci—n. Esta expresi—n suele ser m’nima cuando el nœmero de variables es inferior a una cierta cota, y
muy simplificada (pero no m’nima) cuando el nœmero de variables supera esta, caso en el que suelen
emplearse algoritmos no estrictamente de minimizaci—n.
Ejemplo 2.16
Implementar las funciones F1 (a,b,c) y F2 (a,b,c) mediante una red AND-OR de dos niveles
m’nima, es decir con el menor nœmero total posible de puertas.
Una opci—n es minimizar cada funci—n por separado, con lo que se obtienen los mapas y el
logigrama de la figura 2.6.
a
a\bc 00 01 11 10 00 01 11 10 b F1
c
0 1 1 1 1 0 1 0 0 1 a
b
1 0 0 1 0 1 0 0 1 0 c F2
a
F 1 = a + bc F2 = abc + ac c
Observando el resultado obtenido vemos que es posible realizar las funciones utilizando una puerta
menos si se aprovecha el tŽrmino comœn m7, tal como indica la figura 2.7, con lo que se llega al
resultado, esta vez s’, m’nimo.
a\bc 00 01 11 10 00 01 11 10 a
F1
a
0 1 1 1 1 0 1 0 0 1 b
c
F2
1 0 0 1 0 1 0 0 1 0 a
c
F 1 = a + abc F2 = abc + ac
__________________________________________________________________________________
Cuestiones
C2.2 Plantee las diferencias entre suma l—gica y suma aritmŽtica. ÀCon quŽ funciones l—gicas puede
identificarse cada una de ellas?
C.2.4 ÀQuŽ importancia tiene el orden de las variables en la notaci—n de minterms y maxterms?
Expl’quelo con un ejemplo.
C2.5 Explore en detalle las consecuencias de utilizar la misma notaci—n, referente a los sub’ndices,
para los minterms que para los maxterms, y no la dual, tal como se comenta en el apartado 2.3.1.
C2.6 ÀQuŽ ventajas de orden pr‡ctico se derivan de la existencia de grupos completos de funciones?
C2.7 ÀTiene alguna importancia el orden de las variables en un mapa de Karnaugh al aplicar el mŽtodo
de minimizaci—n?
C2.8 ConsidŽrese la posibilidad de usar distintos c—digos de Gray para ordenar las variables en un mapa
de Karnaugh. ÀAfectar’a al mŽtodo de simplificaci—n y/o al resultado?
C2.9 Escriba la expresi—n algebraica como suma de minterms y como producto de maxterms de las
funciones XOR de dos y tres variables. Escriba a continuaci—n la expresi—n obtenida al aplicar el
mŽtodo de simplificaci—n de Karnaugh, y compare los resultados.
C2.10 ÀPor quŽ, al simplificar una funci—n mediante el mŽtodo de Karnaugh, los "1" del mapa de
Karnaugh deben reunirse en grupos de 2p?
C2.11 ÀEs œnica la expresi—n m’nima como suma de productos asociada a una funci—n l—gica? Ilustre
su respuesta con la funci—n:
C2.12 Enuncie de forma sistem‡tica el mŽtodo dual de minimizaci—n de Karnaugh para obtener
directamente expresiones en forma de producto de sumas.
C2.13 Piense en c—mo debe aplicarse el mŽtodo de simplificaci—n de Karnaugh para funciones de 5
variables. Apl’quelo a la funci—n 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 l—gicas NOR y NAND de dos variables utilizando œnicamente un m—dulo
como el indicado a continuaci—n. ÀSer’a posible realizar tambiŽn la funci—n XOR de dos variables
solamente con este m—dulo?
Se sugiere analizar primero algœn caso con funciones concretas y despuŽs generalizar el resultado.
P2.3 H‡llense las expresiones algebraicas de las funciones y1 e y2. Escrib‡nse tambiŽn sus tablas de
verdad y sus mapas de Karnaugh.
a) a
b
c y1
d
b
a
b) b
c
y2
d
b
a) ab = ac Þ
/ b=c
ì ab = ac ü
b) í ýÞb =c
îa + b = a + c þ
c) a Å b = c Û a Å c = b Û b Å c = a
P2.5 Obtenga una expresi—n algebraica y una tabla de verdad de cada una de las funciones realizadas por
el logigrama siguiente
f1
b
f2
aÅb= a Åb
a(b Å c) = ab Å ac
P2.7 Cualquier funci—n l—gica de dos variables f(x,y) puede expresarse en funci—n de una combinaci—n
de cuatro par‡metros ai Î {0,1}, de la siguiente manera
f (x, y) = a0 xy + a1 xy + a2 xy + a3 xy
que corresponde a la forma can—nica en suma de productos. Demuestre que tambiŽn es posible escribir
f(x,y) en funci—n de otros cuatro par‡metros bi Î {0,1}, as’
f (x, y) = b0 Å b1 y Å b2 x Å b3 xy
P2.8 Una funci—n l—gica f es completa si cualquier otra funci—n l—gica g puede ser expresada
œnicamente en tŽrminos de f. Suponiendo que es posible utilizar como entradas dos variables l—gicas y
los valores constantes "0" y "1", Àcu‡les de las 16 funciones diferentes de dos variables son por s’
mismas completas? Justificar la respuesta. Util’zese como dato conocido (que no hace falta demostrar)
que las funciones NOR y NAND son completas.
a
c
a
d
f
c
d
b
d
P2.11 Dise–e un logigrama que corresponda a un conversor de c—digo binario de 3 bits a Gray de 3
bits. ÀEs posible hacerlo utilizando solamente puertas XOR de 2 entradas?
P2.12 Dise–e un sistema combinacional como el especificado utilizando una red de puertas {AND,
OR, NOT} de dos etapas. (Nota): en este caso el s’mbolo S indica suma aritmŽtica.
X Î{0,1}
SISTEMA 3 2
Z = å Xi
3 2
X A Z
Z Î{0,1}
2
DISE AR i=0
P2.13 El objetivo es dise–ar un comparador y detector de igualdad que opere con nœmeros codificados
en binario de dos bits, segœn la siguiente especificaci—n:
2
a SISTEMA 3
A z
2
b DISE„AR
ì1 si a = b ì1 si a > b ì1 si a < b
z0 = í z1 = í z2 = í
î0 si a ¹ b î0 si a £ b î0 si a ³ b
Se pide realizar una implementaci—n m’nima del comparador utilizando œnicamente puertas NOR.
Nota: ObsŽrvese que las funciones son mutuamente excluyentes y que es posible obtener
cualquiera de ellas a partir de las otras dos.
h2
h1 F
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 m’nimo que dŽ el valor
l—gico "1" para las mismas combinaciones de entrada v‡lidas que el anterior.
P2.16 Implemente la funci—n f(a,b,c) especificada por la siguiente evoluci—n temporal de los valores de
la salida en funci—n de los valores de las variables de entrada, donde el nivel alto corresponde al valor
l—gico "1" y el bajo al valor "0".
P2.17 Se quiere diseñar 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 número del mes codificado en binario. Se pide realizar una implementación mínima del subsistema
usando solamente puertas NOR de tres entradas e inversores.
M8 D31
SISTEMA
M4
A D30
M2
DISEÑAR D<30
M1
P2.18 Diseñe un sistema combinacional que determine si una combinación codificada en ASCII
corresponde o no a un dígito decimal. Utilizar solamente puertas NAND y/o NOR de tres entradas.
X 3 X 2 X1 X0
X 3 X 2 X1 X0
Y0 Y1
P2.20 Se pide hacer la implementaci—n m’nima del sistema combinacional siguiente teniendo en
cuenta que para realizarla se dispone solamente de 3 puertas OR de 3 entradas, 6 puertas AND de 3
entradas y tantos inversores como sean necesarios.
SISTEMA
4 3
x A f
DISE„AR
f 1 = å m(0,4,9,11,15) + å m(1,5)
4 x
f 2 = å m(0,4,6,7,13) + å m(5)
4 x
f 3 = Õ M(1,3,4,6,7,8,9,10,12,14)Õ M(11)
4 x
En el cap’tulo anterior se han presentado las bases formales necesarias para el tratamiento de funciones
l—gicas. El lector en este punto deber’a sentirse capacitado para dise–ar, a nivel de logigrama, sistemas
combinacionales sencillos, especificar las funciones l—gicas que los definen y obtener expresiones
simplificadas de estas funciones. En este cap’tulo se presentan estructuras circuitales que permiten
realizar f’sicamente dichas funciones l—gicas.
Los elementos b‡sicos de los circuitos digitales son los transistores, ya sean bipolares o de efecto de
campo. Sea cual sea el tipo de transistor utilizado, diversas estructuras topol—gicas son posibles, y
cada una de ellas da lugar a una determinada familia de puertas l—gicas. Este cap’tulo se centra en la
familia denominada CMOS (MOS complementaria), por ser en la actualidad la preponderante en el
mercado de circuitos integrados digitales.
Como se observar‡, en este cap’tulo, a diferencia de los anteriores, el Žnfasis est‡ puesto en los
aspectos elŽctricos, valores de corrientes y tensiones y su evoluci—n temporal. Posiblemente esto
sorprenda al lector, el cual deber‡ realizar un cierto esfuerzo de adaptaci—n.
Una puerta l—gica es un circuito electr—nico cuyas entradas y salidas trabajan en conmutaci—n entre dos
estados claramente diferenciados. En este texto utilizaremos como componente b‡sico de las puertas
l—gicas el transistor MOS y, en particular, nos centraremos en la llamada tecnolog’a CMOS. Antes
presentaremos las caracter’sticas elŽctricas m‡s relevantes de una puerta l—gica. Estas caracter’sticas son
genŽricas y aplicables a puertas realizadas mediante cualquier tecnolog’a.
Vamos a centrar la descripci—n de las caracter’sticas elŽctricas para una de las puertas l—gicas m‡s
sencillas: el inversor. En cualquier caso, lo que aqu’ presentaremos es directamente extrapolable a las
entradas y salidas de cualquier otro tipo de puerta.
© 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.
74 Dise–o digital
_________________________________________________________________________________
Si en una puerta l—gica se utilizan dos valores de tensi—n claramente diferenciados tanto en las entradas
como en las salidas, es natural establecer una correspondencia, en principio arbitraria, entre estos dos
valores y los valores posibles de una variable l—gica, "0" y "1". Restringido al caso de un inversor,
cuando la entrada tome el valor de tensi—n asignado al valor l—gico"0", la salida debe tomar el valor de
tensi—n correspondiente al valor l—gico "1" y viceversa.
La curva de transferencia de un inversor relaciona las tensiones de salida y de entrada. Esta curva suele
tener la forma genŽrica presentada en la figura 3.1.
VO
V OH VDD
VOHmin
Vi VO
VOLmax
V OL
Vi
VIL V IH V DD
Para un funcionamiento correcto del inversor es preciso asegurar que en rŽgimen est‡tico el punto de
trabajo del circuito (Vi,VO) se sitœe en las zonas extremas de entradas y salidas. Estas zonas se definen
de la manera siguiente: la tensi—n de entrada al inversor Vi es considerada valor l—gico alto si es mayor
que cierta tensi—n VIH; con lo que se genera, de acuerdo con la curva de transferencia, una tensi—n de
salida baja (inferior a VOLmax), que corresponder‡ a su valor l—gico complementario. En cambio, Vi se
considera valor l—gico bajo cuando es inferior a la tensi—n VIL, lo que da lugar a una tensi—n de salida
alta (superior a VOHmin), que corresponder‡ a su valor l—gico complementario.
VOL es el valor de tensi—n que toma la salida cuando la tensi—n a la entrada corresponde al mejor valor
l—gico alto posible (Vi=V DD ). SimŽtricamente, VOH es el valor de tensi—n en la salida cuando la
tensi—n en la entrada corresponde al mejor valor l—gico bajo posible (Vi=0). Por otro lado, VIL es el
m’nimo valor de Vi tal que en dicho punto la derivada de la curva de transferencia toma el valor -1.
An‡logamente VIH es el m‡ximo valor de Vi para el cual la derivada de la curva de transferencia toma
el valor -1. Estos l’mites se corresponden con los peores niveles l—gicos aceptables a la entrada.
Subsidiariamente se define VOHmin como el valor que toma la salida cuando Vi=VIL y VOLmax como
el valor que toma la salida cuando Vi=VIH.
La zona intermedia de tensiones de entrada debe ser, en principio, evitada ya que carece de valor l—gico
asociado. TambiŽn puede observarse que un circuito con una curva de transferencia como la de la figura
3.1 polarizado en la zona VIL<Vi<VIH se comportar’a como un amplificador: a peque–as variaciones
de la tensi—n de entrada, superpuestas a la tensi—n de polarizaci—n o de rŽgimen permanente, responder’a
con variaciones mayores de la tensi—n de salida.
En resumen, para un correcto funcionamiento de una puerta inversora, los valores de tensi—n en la
entrada deben estar comprendidos, cuando la entrada toma el valor l—gico alto, entre VIH y la tensi—n de
alimentaci—n VDD (habitualmente asignado al "1" l—gico). SimŽtricamente cuando la entrada toma el
valor l—gico bajo, los valores de tensi—n en la misma deben estar comprendidos entre VIL y 0 V
(tensi—n asignada al "0" l—gico). En estas condiciones los valores de tensi—n en la salida est‡n
comprendidos entre VOL y VOLmax en el primer caso y entre VOHmin y VOH en el segundo. Se recoge
un resumen esquematizado de todo esto en la figura 3.2.
Vi VO
V DD VDD V OH
"1" "1"
VOHmin
V IH
Vi VO
VIL
"0" VOLmax
"0"
V OL
0
Cuando dos puertas l—gicas se conectan en serie es preciso que haya una concordancia entre los niveles
l—gicos de salida de la primera de ellas y los de entrada de la siguiente, es decir, que la salida alta de la
primera puerta sea reconocida como entrada alta por la puerta siguiente, y que la salida baja de la
primera puerta sea reconocida como tal por la siguiente. Vamos a estudiar el caso de la conexi—n de dos
inversores mostrado en la figura 3.3.
A partir de la figura es evidente que la concordancia requerida de valores l—gicos implica que se
cumplan dos condiciones: que VIH<VOHmin y adicionalmente que VIL>VOLmax.
1 2
VO1 Vi2
VOH VDD
VOHmin
NMH VIH
VIL
NML
VOLmax
V OL 0
Cuanto mayores sean las diferencias VOHmin- V IH y VIL- V O L m a x , m‡s resistente ser‡ el
funcionamiento del circuito a peque–as variaciones incontroladas del valor de la tensi—n VO1 a
transmitir. Dado que el valor de la tensi—n de salida de un inversor est‡ afectado de peque–as
fluctuaciones espœreas e indeseadas (comœnmente llamadas ruido), nos cuestionamos cu‡l es el valor
m‡ximo admisible de estas fluctuaciones para que el funcionamiento del circuito siga siendo correcto o,
lo que es lo mismo, la etapa siguiente siga interpretando correctamente el valor de tensi—n a su entrada.
La figura 3.3 permite definir, ya formalmente, los m‡rgenes de ruido alto (NMH) y bajo (NML) de un
inversor como
Es conveniente darse cuenta de que en realidad el margen de ruido œtil es el menor de los dos: como las
se–ales espœreas son incontroladas por naturaleza, pueden aparecer en cualquiera de los estados de la
puerta; por tanto, s—lo el menor de los dos m‡rgenes indica la protecci—n real que tenemos frente al
ruido.
Una puerta l—gica, como cualquier otro circuito electr—nico, es incapaz de responder instant‡neamente
(en un tiempo nulo) a un cambio de valor de sus entradas. Esto se debe a la existencia de efectos
capacitivos par‡sitos. As’, por ejemplo, cuando la puerta tiene que dar a su salida un "1", tras haber
dado un "0", suministra corriente a una capacidad de carga hasta que la tensi—n en bornas de Žsta alcanza
un valor alto (normalmente VOH). SimŽtricamente cuando la salida debe dar un "0" tras haber dado un
"1", la puerta extrae corriente de la capacidad hasta que la tensi—n disminuye a un valor bajo
(normalmente VOL).
Los efectos capacitivos par‡sitos siempre est‡n presentes en un circuito integrado, por lo que la
existencia de retrasos asociados con su carga y descarga es inevitable.
La figura 3.4 muestra un ejemplo de evoluci—n temporal de las entradas y salidas de un inversor.
Vi
V DD
t
t PHL t PLH
Vi VO VO
CL 90%
50%
10%
t
t HL t LH
Se puede cuantificar el retraso producido por las conmutaciones mediante diversos par‡metros: 1.-
Tiempos de conmutaci—n alto-bajo y bajo-alto, tHL y tLH son los tiempos transcurridos desde que se
produce la conmutaci—n a la entrada hasta que la salida alcanza el 90% del valor final (caso tLH) o el
10% del valor inicial (caso tHL ). 2.- Retardos de propagaci—n alto-bajo (tPHL ) y bajo-alto (tPLH )
definidos hasta el 50% del valor inicial o final respectivamente. Es evidente que estos dos tipos de
tiempos no son independientes entre s’.
Por razones de orden pr‡ctico, en este texto trabajaremos casi exclusivamente con los retardos de
propagaci—n: como se ver‡ en el cap’tulo 4, es posible obtener estimaciones de tPHL y tPLH utilizando
mŽtodos aproximados muy sencillos. En cambio, la obtenci—n de los tiempos de conmutaci—n exige
c‡lculos farragosos; por ello normalmente no se aborda este c‡lculo manualmente sino mediante
simulaci—n del circuito. El lector interesado en el c‡lculo manual encontrar‡ ejemplos concretos en el
volumen de esta misma colecci—n indicado en la bibliograf’a.
siendo VDD e IDD la tensi—n y la corriente suministradas por la alimentaci—n al circuito. Esta
definici—n supone impl’citamente que la salida del inversor pasa aproximadamente la mitad del tiempo
en nivel alto y la otra mitad en nivel bajo.
Por otra parte, en cuanto a la potencia consumida durante los transitorios, podemos definir la potencia
din‡mica consumida por un inversor como la necesaria para poder conmutar el valor de la tensi—n en el
nodo de salida en un cierto per’odo de tiempo. As’, tomando como referencia una se–al de entrada
peri—dica, se tiene
V DD
T/2
1 dVO (t)
Vi V O ® Pdin =
T òC V
T
L O (t)
dt
dt
T CL
En general una puerta l—gica pasa m‡s tiempo en rŽgimen est‡tico que conmutando, por lo que el
consumo de potencia m‡s notable suele ser el est‡tico. No obstante, en algunas familias l—gicas, como
la CMOS, el consumo est‡tico es pr‡cticamente nulo, siendo el consumo din‡mico el œnico
significativo.
Dado que todos los circuitos cuya presentaci—n y estudio es el objetivo del presente cap’tulo est‡n
formados por transistores MOS (Metal îxido Semiconductor), resulta imprescindible introducir la
estructura f’sica y el funcionamiento b‡sico del transistor MOS, presentando tambiŽn los tipos o
variantes de mayor interŽs.
El transistor MOS es un dispositivo de tres terminales en el cual el flujo de corriente entre dos de
ellos, denominados drenador y surtidor, es controlado fundamentalmente a travŽs de la tensi—n aplicada
al tercer terminal, llamado puerta.
La estructura f’sica de un transistor MOS se muestra en la figura 3.6. El sustrato puede ser silicio de
tipo P o de tipo N. Drenador y surtidor (D y S) son zonas muy dopadas con impurezas de tipo
contrario a las del sustrato. La puerta (G) est‡ formada por una capa de polisilicio muy dopada (de tipo
N), existiendo entre Žsta y el sustrato una capa de —xido de silicio SiO2 , material de excelentes
propiedades aislantes. En funci—n de si el sustrato es tipo P o tipo N hablaremos respectivamente de
transistores MOS de canal N (NMOS) o de canal P (PMOS).
Para fijar ideas veamos de forma cualitativa el funcionamiento de un transistor NMOS. Como se
muestra en la figura 3.7, el sustrato ser‡ de tipo P y tanto drenador como surtidor ser‡n de tipo N.
Tomaremos la referencia de tensiones en el terminal de la izquierda (VS=0), de manera que las tensiones
(siempre positivas) que aplicaremos a los otros dos terminales ser‡n VGS =V G y VDS =V D . Esta
terminolog’a indica que el drenador de un transistor NMOS es el terminal simŽtrico al que se aplica la
tensi—n m‡s alta. Dada su escasa influencia, en primera aproximaci—n, sobre el funcionamiento del
transistor, obviaremos de momento el efecto de una tensi—n de sustrato distinta de la de surtidor.
Supondremos, por tanto, una tensi—n VSB=0.
G
S (-) D (+)
G
n+ n+
p
S (-) D (+)
B ID
B
Una primera conclusi—n que puede obtenerse a la vista de la estructura del transistor es que, en
condiciones est‡ticas, la corriente que fluye por el terminal de puerta siempre es nula, puesto que est‡
conectado a un material aislante. En consecuencia, en estas condiciones s—lo puede fluir una corriente
no nula (ID) entre los dos terminales simŽtricos.
Si la tensi—n aplicada a la puerta (VGS) es nula o negativa, sea cual sea el valor de la tensi—n aplicada
al drenador (VDS), tendremos una corriente ID nula. Ello es debido a la presencia de dos uniones P/N
polarizadas inversamente en el camino entre drenador y surtidor.
Si por el contrario aplicamos una tensi—n VGS positiva, por analog’a a un condensador, se acumular‡n
cargas negativas (electrones) en la zona de substrato debajo de la puerta. Si la tensi—n VGS es
suficientemente grande, estas cargas negativas formar‡n un "canal" conductor que permitir‡ la
circulaci—n de corriente entre los dos terminales extremos. Si simult‡neamente la tensi—n VDS es
positiva, los electrones fluir‡n del terminal de la izquierda (llamado por ese motivo surtidor) al
terminal de la derecha (llamado por este motivo drenador). Como se define la corriente elŽctrica como
un desplazamiento de cargas positivas, diremos que la corriente ID fluir‡ de drenador a surtidor.
Intuitivamente parece razonable pensar que, a mayor valor de VGS, la corriente ID ser‡ tambiŽn mayor.
Asimismo tambiŽn parece razonable pensar que, atendiendo a la sencilla descripci—n del mecanismo
f’sico involucrado, la corriente ID aumentar‡ tambiŽn al aumentar la tensi—n VDS. Esto es cierto para
peque–os valores de VDS; sin embargo, al aumentar VDS m‡s all‡ de un cierto valor, la corriente deja
de aumentar (es decir, satura), situaci—n en que se dice que el canal est‡ estrangulado. La raz—n es la
siguiente: si la tensi—n de puerta es fija, al aumentar progresivamente la tensi—n en el drenador, llega
un momento en el que la diferencia de potencial entre la puerta y los puntos pr—ximos al drenador es
insuficiente para acumular las cargas negativas necesarias para formar canal. Como consecuencia el
canal deja de existir en las proximidades del drenador.
Llamaremos tensi—n umbral VT a la tensi—n de puerta VGS m’nima necesaria para formar canal y
posibilitar por tanto la circulaci—n de corriente entre drenador y surtidor. Valores t’picos de la tensi—n
umbral en transistores NMOS se sitœan en el rango 0.7-1V. Para valores de VGS menores que VT la
corriente circulante entre drenador y surtidor es pr‡cticamente nula, situaci—n que define la llamada zona
de corte del transistor.
La corriente que circula entre drenador y surtidor, para VGS>VT y valores peque–os de VDS, viene dada
por la expresi—n siguiente
é V2 ù W
I D = K ê(V GS - V T )V DS - DS ú con K = m n Cox
êë 2 ûú L
donde mn es la movilidad de los electrones en el sustrato (cm2/V.s), Cox es la capacidad por unidad de
superficie (F/cm2) del condensador plano formado por el polisilicio de puerta, el —xido aislante y el
canal, L es la distancia entre drenador y surtidor (es decir, la longitud del canal) y finalmente W es la
dimensi—n transversal del dispositivo (es decir, la anchura del canal). Llamaremos relaci—n de aspecto
del transistor al cociente W/L.
El margen de validez de la expresi—n anterior es V DS < V GS - V T . Este margen define la zona —hmica
de funcionamiento del transistor. En efecto, a partir de la expresi—n anterior de ID es f‡cil observar que,
para un valor fijo de VGS y valores peque–os de VDS, la corriente muestra un comportamiento —hmico
V DS ® 0 Þ I D » K(V GS - V T )V DS
que permite definir la resistencia equivalente de conducci—n del transistor Ron como
dV DS 1
Ron = =
dI D V DS ®0
K(V GS - V T )
Para valores de VDS superiores, es decir, en el margen V DS > V GS - V T , el transistor entra en la zona
de saturaci—n. La expresi—n anal’tica de la corriente de saturaci—n es
K
ID = (V GS - V T )2
2
ID = 0 V GS £ V T Corte (OFF)
é V2 ù
I D = K ê(V GS - V T )V DS - DS ú V GS > V T , V DS < V GS - V T Ohmica (W)
êë 2 ûú
K
ID = (V GS - V T )2 V GS > V T , V DS > V GS - V T Saturaci—n (SAT)
2
La figura 3.8 resume las expresiones de la corriente en un transistor NMOS para cada una de sus zonas
de funcionamiento en rŽgimen permanente o est‡tico. N—tese que la corriente es siempre proporcional a
la constante K y por tanto a la relaci—n de aspecto W/L, es decir la corriente que puede conducir el
transistor es mayor cuando W aumenta y/o L disminuye.
La figura 3.9 muestra en forma gr‡fica las caracter’sticas ID(VDS) para distintas tensiones de puerta
(0<VT<V GS1<V GS2<V GS3). La figura muestra tambiŽn la frontera entre las zonas de saturaci—n y
—hmica, dada por la expresi—n VDS=VGS-VT.
ID
VDS =V GS - V T
VGS3
VGS2
VGS1
VGS < V T V DS
Existe un tipo de transistor NMOS que conduce corriente entre drenador y surtidor incluso cuando la
tensi—n VGS es nula, que recibe el nombre de transistor NMOS de vaciamiento o deplexi—n (en
contraposici—n a los transistores de acumulaci—n, que es el nombre que reciben los descritos en los
p‡rrafos anteriores). En un transistor NMOS de vaciamiento el canal ya est‡ formado para VGS=0,
situaci—n equivalente a decir que en este tipo de transistor el valor de la tensi—n umbral es negativo y
que para trabajar en corte precisa una tensi—n de puerta VGS aœn m‡s negativa (VGS <V T ). Las
expresiones que describen el funcionamiento de estos transistores son las mismas que para los de
acumulaci—n utilizando el valor correspondiente para la tensi—n umbral.
G
D (-) S (+)
G
p+ p+
n
D (-) S (+)
B ID
B
En situaci—n de conducci—n el canal de un transistor PMOS debe formarse mediante cargas positivas.
Para ello es necesario aplicar una tensi—n VGS suficientemente negativa. La tensi—n umbral VT es por
tanto negativa (un valor t’pico es -1V). Si la tensi—n VGS es inferior a VT , la aplicaci—n de una
tensi—n VDS negativa provoca el flujo de huecos desde el terminal m‡s positivo (que actuar‡ como
surtidor) hacia el terminal menos positivo (que realizar‡ el papel de drenador). N—tese que, salvo las
inversiones de signo, este funcionamiento coincide con el descrito para un transistor NMOS.
Las expresiones de la corriente en un transistor PMOS son formalmente idŽnticas a las de un transistor
NMOS cambiando mn (movilidad de los electrones) por mp (movilidad de los huecos). Sin embargo,
aunque las expresiones de la corriente sean las mismas, tanto la direcci—n de Žsta como los m‡rgenes de
aplicabilidad se invierten, quedando las indicadas en la figura 3.11.
ID = 0 V GS ³ V T Corte (OFF)
é V2 ù
I D = K ê(V GS - V T )V DS - DS ú V GS < V T , V DS > V GS - V T Ohmica (W)
êë 2 úû
K
ID = (V GS - V T )2 V GS < V T , V DS < V GS - V T Saturaci—n (SAT)
2
La figura 3.12 muestra en forma gr‡fica las caracter’sticas ID(VDS) para distintas tensiones de puerta
(0>VT>VGS1>VGS2>VGS3) en un transistor PMOS. La figura tambiŽn muestra la frontera entre las
zonas de saturaci—n y —hmica.
ID
VDS =V GS - V T
VGS3
VGS2
VGS1
VGS > V T -V DS
a) b) c)
Los s’mbolos que en adelante utilizaremos para los tres tipos de transistores MOS presentados se
muestran en la figura 3.13, donde se supone por defecto que el sustrato est‡ conectado a la tensi—n m‡s
baja del circuito en el caso de los NMOS y a la tensi—n m‡s alta en el caso del PMOS.
El modelo de funcionamiento en rŽgimen est‡tico del transistor MOS dado en los p‡rrafos anteriores es
el m‡s simple posible, aunque suficiente para realizar c‡lculos de primer orden y orientar dise–os.
C‡lculos m‡s detallados o bien c‡lculos en circuitos con un cierto nœmero de componentes necesitan
de la utilizaci—n de simuladores circuitales. Entre ellos el m‡s difundido y convertido en referencia es
SPICE. Dicho simulador es capaz de asumir distintos modelos, de complejidad y precisi—n crecientes,
para el transistor MOS. Estos modelos se identifican mediante un par‡metro llamado LEVEL. El
modelo de LEVEL 1 recoge las expresiones presentadas anteriormente junto con algunos efectos de
segundo orden importantes: el efecto de una tensi—n no nula entre sustrato y fuente sobre el valor de la
tensi—n umbral (denominado efecto sustrato), la modulaci—n de la longitud del canal debido a la tensi—n
drenador-surtidor y la variaci—n de la movilidad con el campo elŽctrico. Una presentaci—n del modelo
SPICE del transistor MOS a LEVEL 1 puede encontrarse en el volumen de esta misma colecci—n
refernciado anteriormente. Por otra parte la descripci—n del transistor MOS hecha aqu’ es meramente
fenomenol—gica, una justificaci—n sencilla pero desde un punto de vista m‡s f’sico puede ser encontrada
en el texto mencionado.
Este cap’tulo se centra en el an‡lisis de las puertas l—gicas realizadas mediante tecnolog’a CMOS. Sin
embargo este apartado se dedicar‡ al estudio de la tecnolog’a NMOS, hist—ricamente predecesora de la
CMOS y poco utilizada en la actualidad. Este estudio se justifica, m‡s que por su incidencia en la
pr‡ctica, por servir de introducci—n conceptual y metodol—gica al estudio de la tecnolog’a CMOS.
Un inversor NMOS con carga de vaciamiento est‡ formado por dos transistores NMOS, uno de
acumulaci—n, al cual se le aplica la entrada (al que llamaremos MOSI o transistor inversor), y otro de
vaciamiento (al que llamaremos MOSL o transistor de carga). El esquema circuital es el presentado en
la figura 3.14.
Vamos a analizar esta puerta inversora. Por analizar entenderemos encontrar expresiones que permitan
obtener la curva de transferencia y en particular los puntos destacables de la misma (VOH, VOL,.. etc).
A partir de la inspecci—n del circuito se observa lo siguiente:
V DD
MOSL
VO
Vi MOSI
-La corriente que atraviesa el transistor de carga IDL coincide con la que atraviesa el
transistor inversor IDI (recordar que en rŽgimen permanente la corriente de puerta es nula), es
decir
I DL = I DI = I D
-Las tensiones de entrada y de salida del inversor coinciden con las tensiones puerta-
surtidor y drenador-surtidor del transistor inversor respectivamente
Vi = V GSI
V o = V DSI
V GSL = 0
V DSL = V DD - V 0
Adem‡s es preciso tener en cuenta que la tensi—n umbral del transistor inversor VTI es positiva (es un
NMOS de acumulaci—n) mientras que para el transistor de carga la tensi—n umbral VTL es negativa.
En la figura 3.15 vemos las curvas caracter’sticas de cada uno de los dos transistores. N—tese que como
el transistor de carga tiene cortocircuitada la puerta con el surtidor s—lo tenemos que considerar la curva
correspondiente a VGSL=0.
ID ID
VGSI3
VGSL>0
VGSI2
VGSL = 0
VGSI1 VGSL<0
Figura 3.15 Curvas caracter’sticas del transistor inversor y del transistor de carga
Las curvas caracter’sticas son representaciones gr‡ficas de las ecuaciones del transistor. Por tanto es
posible plantearse una soluci—n gr‡fica de dichas ecuaciones que permita por lo menos de forma
cualitativa entender el funcionamiento del inversor. Para ello tenemos que representar las curvas
caracter’sticas de ambos transistores sobre los mismos ejes. Si utilizamos los ejes VDSI o VO (recordar
que VDSI=VO) e ID, las curvas caracter’sticas del transistor inversor se ven inalteradas (sus ejes no se
ven modificados); en cambio, la curva caracter’stica del transistor de carga debe ser invertida y
desplazada a la derecha una cantidad VDD, puesto que VO=VDD-VDSL. Resolver la ecuaci—n resultante
de igualar las dos corrientes para una tensi—n de entrada dada significa encontrar la intersecci—n entre las
dos curvas correspondientes a esa tensi—n. La figura 3.16 muestra el resultado de esta superposici—n
sobre los mismos ejes.
ID
V i =V DD
V i2
V i1
V OL Vi < VTI V DD VO
Cuando Vi=V GSI =0 tenemos que VGSI <V TI y por tanto el transistor inversor estar‡ en corte.
Observando la figura 3.16, la curva caracter’stica correspondiente coincide con el eje de abscisas (ID=0)
y por tanto la intersecci—n con la curva caracter’stica del transistor de carga se sitœa en el punto
(VO=VDD, ID=0). En consecuencia, el valor de tensi—n a la salida correspondiente al estado alto ser‡
VOH=VDD.
An‡logamente cuando Vi=VGSI=VDD la curva correspondiente del transistor inversor ser‡ VGSI=VDD,
cuya intersecci—n con la caracter’stica del transistor de carga nos fijar‡ el valor VO=VOL, que ser‡ el
valor de tensi—n a la salida correspondiente al estado bajo. Desde el punto de vista cualitativo, vemos
que para este tipo de inversor VOL es siempre mayor que cero; asimismo, cuando la salida tome este
valor circular‡ una corriente no nula a travŽs de los dos transistores.
Ejemplo 3.1
Encontrar la expresi—n anal’tica de VOL en un inversor NMOS con carga de vaciamiento. Calcular
el valor de esta tensi—n para un inversor con VDD=5V, VTI=1V, VTL=-3V y KI=2KL=40 mA/V2.
ÀSe trata de un valor aceptable?
Es necesario, para poder encontrar la expresi—n pedida, suponer una zona de trabajo para cada
transistor e igualar las expresiones de la corriente. De la ecuaci—n resultante se obtiene, tras las
manipulaciones necesarias, dicha expresi—n. En caso de disponer de valores numŽricos siempre
debemos comprobar a posteriori que los resultados obtenidos son consistentes con las hip—tesis
hechas. En caso de inconsistencia las hip—tesis deben ser modificadas y el c‡lculo repetido.
En principio la hip—tesis m‡s razonable es que en estado bajo, VO=VOL, el transistor inversor est‡
en zona —hmica y el de carga en saturaci—n. En estas condiciones
é V2 ù K
I DI = K I ê(V GSI - V TI )V DSI - DSI ú = I DL = L (V GSL - V TL )2
êë 2 úû 2
V GSI = Vi = V DD ü
ï é V2 ù V2
V DSI = VO = VOL ý Þ K I ê(V DD - V TI )VOL - OL ú = K L TL
V GSL = 0 ï ëê 2 ûú 2
þ
2
KI (W / L) I V TL
KR = = = 2
K L (W / L) L 2(V DD - V TI )VOL - VOL
Aplicando los valores numŽricos del enunciado a la expresi—n obtenida se llega a una ecuaci—n
cuadr‡tica cuyas soluciones son
2 ì7, 39 V
2VOL - 16VOL + 9 = 0 Þ VOL » í
î 0, 61 V
donde s—lo la segunda soluci—n tiene sentido f’sico, pues se corresponde con la parte de la par‡bola
que modela la curva caracter’stica del MOS.
ì V GSI = V DD = 5 V ü
í ý Þ V DSI < V GSI - V TI Þ MOSI en W
îV DSI = VOL = 0, 61 V þ
ì V GSL = 0 V ü
í ý Þ V DSL > V GSL - V TL Þ MOSL en SAT
V
î DSL = V DD - V OL = 4, 39 V þ
Podemos considerar aceptable un valor de VOL que aplicado a la entrada de otro inversor sea
interpretado correctamente, es decir, como un "0" l—gico. Para ello es necesario verificar la
condici—n VOL<VTI, condici—n que cumple, aunque no muy holgadamente, el inversor de nuestro
ejemplo.
__________________________________________________________________________________
Ejercicio 3.1
ÀCu‡l es el valor de la corriente que circula por el inversor del ejemplo 3.1 cuando la entrada vale
VDD? Calcule el valor que deberia tener KL manteniendo igual el resto de datos para obtener una
tensi—n de salida en estado bajo VOL =0.2 V en dicho inversor NMOS. Calcular el valor de la
corriente ID para esta nueva situaci—n.
__________________________________________________________________________________
Una vez calculados los puntos extremos de la curva de transferencia vamos a ocuparnos del estudio del
resto de la misma. Para ello es necesario determinar en quŽ zona de funcionamiento trabaja cada
transistor para cada margen de tensiones de entrada Vi. Esto se muestra de forma resumida en la
siguiente tabla:
Estos m‡rgenes nos definen diversas zonas dentro de la curva de transferencia, es decir, en el plano
Vo(Vi), que se recogen bajo los nombres I, II, III y IV en la figura 3.17.
VO
I
V DD
II
Zona I II III IV
VDD +VTL Vi -VTI MOSI OFF SAT SAT W
III
MOSL W W SAT SAT
IV
V OL
V TI V DD Vi
Figura 3.17 Curva de transferencia del inversor NMOS con carga de vaciamiento
Es importante puntualizar que la serie de estados indicada en la figura 3.17 no es universal; en efecto,
observando con detalle la posici—n de las rectas frontera entre saturaci—n y —hmica para cada transistor,
podemos ver que, en funci—n de los valores de VTL y VTI, la sucesi—n de estados puede ser diferente.
Ejemplo 3.2
Calcular la potencia consumida en rŽgimen est‡tico por un inversor NMOS con carga de
vaciamiento. Aplicarlo al caso concreto del inversor del ejemplo 3.1.
PDH = V DD I D ü
V I =0 = 0
ï 1 2
2 ý Þ PD = V DD K L V TL = 225 mW
V TL 4
PDL = V DD I D V I =V DD = V DD K L ï
2 þ
__________________________________________________________________________________
En los p‡rrafos anteriores hemos visto que tanto V OL como la potencia disipada dependen del
dimensionado de los transistores (de KL para el caso de la potencia disipada y de KR para el valor de
tensi—n cuando la salida es baja). En el cap’tulo pr—ximo veremos que las dimensiones ser‡n
determinantes tambiŽn de los retardos de propagaci—n. Esta es una caracter’stica no s—lo de la
tecnolog’a NMOS sino tambiŽn de la CMOS. Por tanto, el dimensionado de los transistores es la
principal variable de dise–o de que dispone el dise–ador de circuitos integrados para conseguir que un
circuito cumpla las especificaciones elŽctricas deseadas.
Este subapartado presenta en primer lugar la estructura de dos puertas l—gicas b‡sicas (NOR y NAND)
realizadas en tecnolog’a NMOS con carga de vaciamiento. A continuaci—n se presentan ejemplos de
puertas arbitrarias, mostrando el procedimiento general de an‡lisis y dise–o de este tipo de circuitos.
Puerta NOR: El esquema de una puerta NOR de dos entradas realizada en tecnolog’a NMOS con
carga de vaciamento se presenta en la figura 3.18.
V DD
A B F
0 0 1
F 0 1 0
1 0 0
A B 1 1 0
La salida F tomar‡ el valor alto s—lo cuando los dos transistores de entradas A y B estŽn cortados, es
decir, cuando ambos tengan una tensi—n de puerta inferior a VT. En este caso la situaci—n ser‡ idŽntica
a la del inversor NMOS visto anteriormente cuando el transistor inversor estaba cortado.
En el caso de que uno cualquiera de los dos transistores de acumulaci—n en paralelo conduzca (tenga un
valor alto de tensi—n a su entrada) y con mayor motivo si los dos conducen simult‡neamente, el valor
de la tensi—n en la salida ser‡ bajo y por tanto el valor l—gico asignado ser‡ "0".
Puerta NAND: La figura 3.19 muestra una puerta NAND NMOS de dos entradas.
V DD
A B F
F 0 0 1
0 1 1
A 1 0 1
1 1 0
B
S—lo tendremos un valor bajo ("0" l—gico) en la salida cuando los dos transistores en serie que forman
el camino entre la salida y masa conduzcan, y por tanto el valor de las tensiones aplicadas a sus
entradas, A y B, sea alto. Para todas las dem‡s combinaciones de valores l—gicos en A y B alguno de
los dos transistores de acumulaci—n estar‡ cortado y la salida estar‡ en valor alto.
Las estructuras presentadas en la figura 3.18 y 3.19 son f‡cilmente generalizables: para obtener puertas
NAND/NOR de mayor nœmero de entradas s—lo es necesario a–adir m‡s transistores NMOS en
serie/paralelo respectivamente.
Ejemplo 3.3
ObtŽnganse los niveles l—gicos VOH y VOL de las puertas NOR y NAND de las figuras 3.18 y
3.19 y comp‡rense con los de un inversor NMOS. Considerar VTL=-4V y (W/L)=1/4 para todos
los transistores de vaciamiento, VT=1V y (W/L)=2 para todos los de acumulaci—n, y VDD=5V.
Inversor NMOS. Se trata de c‡lculos ya realizados anteriormente, que para los valores del
ejemplo conducen a los resultados siguientes:
Puerta NOR. El razonamiento utilizado para obtener VOH en el inversor es aplicable a cualquier
puerta NMOS con carga de vaciamiento: cuando la salida est‡ en nivel alto el camino entre Žsta y
masa est‡ cortado y VOH = VDD = 5 V.
En una puerta NOR tenemos tres combinaciones que generan una salida baja, luego podemos dar
hasta tres definiciones de VOL:
Est‡ claro que las dos primeras situaciones son idŽnticas al caso de un inversor (un transistor de
acumulaci—n que conduce entre la salida y masa), luego VOL1 = VOL2 = 0, 258 V .
El tercer caso implica que los dos transistores en paralelo conducen, tal como indica la figura
3.20.a. En esta situaci—n la corriente suministrada por el transistor de carga se reparte por igual
entre los dos transistores de acumulaci—n, es decir IL=I1+I2. Haciendo la suposici—n de que el
transistor de carga trabaja en saturaci—n y que los de acumulaci—n lo hacen en —hmica y aplicando
las expresiones correspondientes, se llega el resultado final VOL3 = 0,127 V , valor inferior al del
inversor de referencia.
V DD
a) V DD b)
IL
IL
V OL
V OL3
V DD I1
V DD I1 I2 V DD
V DD I2
VOL = V F V A =V B =V DD
En esta situaci—n los transistores en serie conducen, tal como indica la figura 3.20.b. Luego
IL=I1=I2. Haciendo la suposici—n de que el transistor de carga trabaja en saturaci—n y de que los de
Este ejemplo permite concluir que en los circuitos NMOS la asociaci—n de transistores en paralelo
no perjudica los niveles l—gicos de la puerta, mientras que la asociaci—n en serie perjudica el valor
l—gico bajo (VOL aumenta), efecto que s—lo puede paliarse aumentando la relaci—n de aspecto de
los transistores de acumulaci—n y/o reduciendo la del transistor de carga m‡s de lo que suele hacerse
en un simple inversor.
__________________________________________________________________________________
Ejercicio 3.2
Generalice los niveles l—gicos de puertas NAND y NOR encontrados en el ejemplo anterior para el
caso de puertas de n entradas.
__________________________________________________________________________________
Tiene interŽs, por otro lado, un an‡lisis no a nivel elŽctrico sino a nivel l—gico de una implementaci—n
NMOS. Este an‡lisis resulta extremadamente sencillo, como se muestra en el ejemplo 3.4, puesto que
s—lo hay que considerar para quŽ combinaciones de variables de entrada conduce, o est‡ en corte, cada
transistor de acumulaci—n. Se deduce del citado ejemplo que dise–ando adecuadamente la red de
transistores de acumulaci—n se puede implementar cualquier funci—n l—gica.
Ejemplo 3.4
V DD
A C
B D E
Tendremos un valor bajo a la salida (F=0) cuando alguno de los caminos que unen este nodo con
masa tenga todos los transistores en estado de conducci—n, por tanto, cuando A y B tomen el valor
"1" o cuando C tome el valor alto y o bien D o bien E tomen el valor alto.
Es decir:
F = AB + C(D + E)
F = AB + C(D + E) = ( A + B)(C + DE)
__________________________________________________________________________________
Ejercicio 3.3
V DD VDD V DD
F
C
A B D
E B
__________________________________________________________________________________
De los an‡lisis realizados en el ejemplo y ejercicio anteriores podemos intuir una tŽcnica de dise–o de
funciones cualquiera con tecnolog’a NMOS. Si somos capaces de obtener una expresi—n algebraica
para el inverso de la funci—n se puede proponer directamente una topolog’a para la red NMOS. Tal
como podemos observar en la figura 3.21, el producto de dos tŽrminos se corresponder‡ con dos
bloques en serie, mientras que la suma l—gica lo har‡ con bloques en paralelo.
Podemos notar que cada literal de la expresi—n escogida se traducir‡ en un transistor de acumulaci—n;
por tanto, si el criterio de dise–o es minimizar el nœmero de transistores deberemos obtener
expresiones lo m‡s compactas posibles. Si algœn literal aparece complementado en la expresi—n del
inverso de la funci—n necesitaremos, adem‡s, un inversor. En el ejemplo siguiente podemos ver
distintas implementaciones NMOS para una funci—n.
Ejemplo 3.5
Implementar la funci—n l—gica siguiente mediante tecnolog’a NMOS con el m’nimo nœmero de
transistores posible.
Expresamos primeramente la funci—n complementada como PoS y como SoP de forma m’nima.
Expresi—n con 15 literales, donde tres de las variables aparecen negadas; es sencillo razonar que
necesitar‡ 18 transistores NMOS de acumulaci—n y 4 de vaciamiento.
Esta propuesta contiene s—lo 11 literales y sigue necesitando tres inversores, con lo cual usar‡ 14
transistores NMOS de acumulaci—n y 4 de vaciamiento. Es posible proponer expresiones que no
sean producto de sumas o suma de productos, si esto nos reduce el nœmero de literales. En este
caso, a partir de la forma SOP obtenemos fˆcilmente
f = AB + ( A + B)CD + ABD
donde tenemos dos literales, y por tanto dos NMOS de vaciamiento, menos. Finalmente podemos
implementar la funci—n como cascada de bloques NMOS, usando un total de 10 transistores de
acumulaci—n y 2 de vaciamiento, como se observa en la figura 3.23.
f = AB + ( A + B)CD + X X = A+ B+ D
V DD VDD
X f
A B
A
A B C C
B
D
Ejercicio 3.4
f ( A, B, C, D) = Õ M(4,8, 9,11,12,13,15)
4
__________________________________________________________________________________
Una puerta de transmisi—n es un circuito que actœa como un interruptor l—gico, permitiendo o no el
paso de informaci—n entre dos puntos distintos de un circuito digital de acuerdo con el valor de una
variable de control.
El esquema de la figura 3.24 modeliza un interruptor l—gico a cuyo nodo de entrada se aplica una
tensi—n Vi procedente de una etapa anterior, siendo VO la tensi—n del nodo de salida y VC la de control.
El efecto de carga de las puertas conectadas al nodo de salida se representa mediante el condensador CL.
VC
Vi VO
CL
El funcionamiento cualitativo de este interruptor es el siguiente: para un valor de VC, por ejemplo 0V
("0" l—gico), el interruptor est‡ abierto y consecuentemente las tensiones Vi y VO son independientes,
mientras que para VC=VDD ("1" l—gico) el interruptor est‡ cerrado y se produce la transmisi—n del
valor de la entrada a la salida (VO =V i), ya sea cargando la capacidad (transmisi—n de un "1") o
descarg‡ndola (transmisi—n de un "0").
Consideremos el esquema de la figura 3.25. Si VC=0, para cualquier valor de las tensiones Vi y VO el
transistor estar‡ cortado (recordemos que en rŽgimen permanente no puede haber tensiones negativas)
por lo que estas dos tensiones ser‡n independientes.
VC
Vi VO
CL
Si VC=VDD tenemos dos casos a considerar: o bien Vi=0 o bien Vi=VDD. Vamos a analizarlos por
separado.
Transmisi—n del "0": Supongamos Vi=0 y que en un cierto instante de tiempo la puerta conmuta
de "0" a "1", es decir, de VC=0 a VC=VDD. Veamos cu‡l ser‡ el valor de VO en rŽgimen permanente.
a) VDD b) VDD
S D D S
0 VO V DD VO
I I
CL CL
V DS = VO - Vi = VO < V GS - V T = V DD - V T
En esta situaci—n la corriente que fluye a travŽs del transistor vendr‡ expresada por
2
V DS V2
I D = K((V GS - V T )V DS - ) = K((V DD - V T )VO - O )
2 2
En rŽgimen permanente la corriente deber‡ ser cero. Igualando la ecuaci—n anterior a cero se obtienen
dos soluciones para la tensi—n de salida Vo:
Vo = 0
V o = 2(V DD - V T )
La segunda soluci—n debe ser rechazada por carecer de significado f’sico: no es posible que la tensi—n
final sea mayor que VDD o, si se prefiere, implicar’a que el transistor est‡ en saturaci—n, cosa que
contradice el razonamiento efectuado. En consecuencia la tensi—n final en el nodo de salida ser‡ nula
(CL se descargar‡ completamente), con lo que podemos decir que el transistor de paso NMOS habr‡
transmitido correctamente el "0" l—gico.
Transmisi—n del "1": Se trata del caso complementario, es decir, supondremos Vi=VDD y que en
un cierto instante la tensi—n en la puerta conmuta de cero a VDD.
En este caso el nodo de entrada ser‡ el drenador, por ser donde se aplica la tensi—n m‡s elevada (V DD).
En consecuencia se tendr‡ VDS=VGS, lo que implica VDS>VGS-VT y por tanto el transistor siempre
trabajar‡ en saturaci—n. La corriente que atravesar‡ el transistor vendr‡ expresada por
K
I DS = (V GS - V T )2
2
Como en rŽgimen permanente la corriente debe ser nula, la tensi—n VGS final ser‡ VT y por tanto el
valor final de VO ser‡ VDD-VT, tensi—n pr—xima pero no igual a un "1" l—gico.
Podemos resumir los dos resultados anteriores diciendo que un transistor de paso NMOS transmite
perfectamente el valor l—gico "0" (Vi=0 Þ VO=0) pero que degrada la transmisi—n del valor l—gico "1"
(Vi=VDD Þ VO=VDD-VT).
Ejemplo 3.5
Vamos a ver quŽ ocurre con la transmisi—n del "1" l—gico en una cadena formada por dos
transistores de paso NMOS. Para ello tomaremos como referencia el esquema de la figura 3.27,
suponiendo que se parte de una situaci—n previa en la que los dos transistores estaban cortados y
las capacidades descargadas (Vx=VO=0).
En la situaci—n descrita los dos transistores de paso entrar‡n en conducci—n, cargando las
capacidades CL1 y CL2 y haciendo aumentar las tensiones Vx y VO, hasta que una vez llegados al
rŽgimen est‡tico, deje de fluir corriente y las tensiones se estabilicen.
VDD VDD
Vx
V DD VO
C L1 C L2
Si nos fijamos inicialmente en el transistor de la izquierda, vemos que Žste dejar‡ de conducir
cuando se llegue a Vx=V DD -V T . Para este valor de Vx el transistor de la derecha estar‡ en la
frontera entre —hmica y saturaci—n (VDS=VGS-VT) y tanto si consideramos uno como otro estado
la anulaci—n de la corriente conduce a la soluci—n VO=VDD-VT. Este resultado es generalizable:
una cadena de transistores de paso degrada la transmisi—n del "1" l—gico con independencia del
nœmero de transistores que la forman.
__________________________________________________________________________________
Ejercicio 3.4
Analizar el circuito de la figura 3.28, en el que la tensi—n de control del transistor de paso de la
derecha proviene, a su vez, de otro transistor de paso. ÀCu‡l ser‡ el valor final de la tensi—n de
salida?
VDD
Vx
VDD V DD VO
C L1 C L2
__________________________________________________________________________________
VC
Vi VO
CL
Los dos casos que deben ser analizados cuando el transistor conduce son, otra vez, los correspondientes
a Vi=VDD y Vi=0.
Para Vi=VDD el valor final de la tensi—n de salida es VO=VDD; por tanto, se dice que el transistor de
paso PMOS transmite bien los "1" l—gicos. Cuando Vi=0 y la capacidad CL est‡ cargada inicialmente a
una cierta tensi—n distinta de cero (en rigor mayor que -VTP), el valor final de la tensi—n de salida es
VO=-VTP. Por tanto diremos que el transistor de paso PMOS transmite mal los "0" l—gicos.
La obtenci—n de estos dos resultados es paralela a la realizada para transistores de paso NMOS y queda
como ejercicio para el lector.
El an‡lisis del funcionamiento de la puerta de transmisi—n CMOS es sencillo una vez visto el de los
transistores de paso NMOS y PMOS: cuando VC =0 los dos transistores est‡n cortados y las tensiones
Vi y VO son independientes. Por el contrario, cuando VC=VDD los dos transistores conducen. En este
œltimo caso, tanto si tenemos Vi=0 como Vi=VDD, ambos transistores contribuyen en principio a la
conducci—n, hasta que uno de los dos entra en corte; a partir de ese momento s—lo uno de los dos
VC
VC
Vi VO Vi VO
VC
VC
En concreto si Vi=0 la tensi—n VO disminuye progresivamente a partir del momento en que VC=VDD;
cuando VO alcanza el valor -VTP el transistor PMOS se corta y la descarga de la capacidad de salida se
realiza œnicamente a travŽs del NMOS, que sigue conduciendo hasta que VO=0. Por tanto, la puerta de
transmisi—n CMOS transmite correctamente el "0" l—gico. El razonamiento acerca de la correcta
transmisi—n del "1" es simŽtrico y se deja como ejercicio para el lector.
Ejemplo 3.6
Implementar una puerta or-exclusiva de dos entradas mediante puertas de transmisi—n CMOS e
inversores.
Para ello escogemos una de las variables de entrada como variable de control, y evaluamos la
funci—n cuando dicha variable toma cada uno de los valores posibles.
F = A Å B F B=1 = A Å 1 = A F B=0 = A Å 0 = A
B F
__________________________________________________________________________________
Ejercicio 3.5
Proponer una implementaci—n con inversores y puertas de transmisi—n para la funci—n f de tres
variables descrita a travŽs de su forma can—nica como producto de sumas.
f = Õ M(1, 4, 5, 7)
3
__________________________________________________________________________________
El inversor CMOS est‡ formado por dos transistores MOS, uno de tipo P y otro de tipo N, conectados
tal como indica la figura 3.32. El an‡lisis de este circuito es paralelo al realizado para el inversor
NMOS. Entenderemos tambiŽn aqu’ por analizar obtener expresiones que permitan definir la curva de
transferencia y calcular las caracter’sticas elŽctricas principales.
VDD
PMOS
Vi VO
NMOS
I DN = I DP = I D
V GSN = Vi V GSP = Vi - V DD
V DSN = VO V DSP = V o - V DD
TambiŽn hay que recordar que en el transistor NMOS la tensi—n umbral es positiva (VTN>0), mientras
que en el PMOS es negativa (VTP<0).
Desde un punto de vista gr‡fico los puntos (ID ,V O ) de funcionamiento del circuito se sitœan
forzosamente en la intersecci—n de las curvas caracter’sticas del transistor NMOS y del PMOS. Como
ya se vio anteriormente en el caso el inversor NMOS, este punto de vista permite conocer detalles
importantes sobre el funcionamiento del circuito.
Vamos a dibujar sobre los mismos ejes las curvas caracter’sticas de ambos transistores. Si tomamos
como ejes de referencia ID y Vo, las curvas caracter’sticas del transistor NMOS no se ven modificadas,
mientras que las del transistor PMOS deben ser invertidas y desplazadas hacia la derecha una cantidad
VDD, tal como muestra la figura 3.33.
ID ID
Vi =V DD
Vi =0
Vi2
V i1
Vi1 V i2
Figura 3.33 Curvas caracter’sticas de los transistores NMOS y PMOS. Las curvas del transistor
PMOS han sido transformadas para adaptarse a los mismos ejes que las del transistor NMOS
ObsŽrvese que la respuesta de cada transistor ante un aumento de la tensi—n de entrada Vi es contraria:
un aumento en Vi es un aumento en VGSN y por tanto la corriente de drenador del transistor NMOS
tiende a aumentar; por el contrario, el mismo aumento en Vi hace que la tensi—n VGSP sea menos
negativa, lo cual provoca una disminuci—n de la corriente de drenador del transistor PMOS.
Para encontrar los puntos de funcionamiento hay que hallar la intersecci—n de las curvas caracter’sticas
de los dos transistores correspondientes a cada valor concreto de Vi. Vamos a aplicar esto a la
obtenci—n de los niveles l—gicos VOH y VOL.
ID
NMOS
PMOS Vi
Vi
VO
Cuando Vi=0 tenemos VGSN =0 y por tanto VGSN <V TN , luego el transistor NMOS est‡ cortado y
tenemos que el punto de funcionamiento estar‡ sobre la curva caracter’stica que coincide con el eje de
abscisas (ID=0). La intersecci—n con la curva correspondiente del transistor PMOS (en concreto para
VGSP=Vi-VDD=-VDD) sitœa el punto de funcionamiento en Vo=VDD e ID=0. Por tanto, en un inversor
CMOS se tiene VOH=VDD.
An‡logamente, cuando Vi=VDD se tiene VGSP=0 y por tanto VGSP>VTP, luego el transistor PMOS
estar‡ cortado y su curva caracter’stica correspondiente coincide con el eje de abscisas. La intersecci—n
con la curva correspondiente del NMOS (en concreto para VGSN =V i=V DD ) sitœa el punto de
funcionamiento en el origen (Vo=0, ID=0). Por tanto en un inversor CMOS se tiene VOL=0.
Una consecuencia importante de lo anterior es que tanto si el inversor tiene salida alta como si tiene
salida baja, la corriente ID circulante es nula. Por tanto, en rŽgimen est‡tico la potencia disipada por el
inversor CMOS es nula. Esta caracter’stica, junto con el hecho de disponer de los mejores niveles
l—gicos VOH y VOL posibles, es una de las ventajas principales de la tecnolog’a CMOS frente a sus
competidoras.
Vamos a analizar ahora otros aspectos relevantes de la curva de transferencia del inversor. En la tabla
siguiente vemos los m‡rgenes de tensi—n que definen las distintas zonas de funcionamiento de cada uno
de los transistores expresados en funci—n de las tensiones relevantes del inversor:
Si trasladamos estas condiciones a la curva de transferencia Vo(Vi) quedar‡n definidas las cinco zonas de
funcionamiento (I, II, III, IV, y V) mostradas en la figura 3.35.
Cuando se desea hacer cualquier c‡lculo referente a la curva de transferencia en rŽgimen permanente, la
ecuaci—n a resolver siempre es la resultante de plantear la igualdad entre las corrientes que atraviesan
los dos transistores. Por tanto, es necesario conocer previamente la zona de funcionamiento de cada
transistor.
VO
I
VDD III Vi -VTP
Zona I III V IV II
V NMOS OFF SAT SAT W W
Vi -VTN
PMOS W W SAT SAT OFF
IV
II
Vi
VTP VTN VDD +VTP VDD
Ejemplo 3.7
ìV GSN = Vinv ü
VO = Vi = Vinv Þ í ý Þ V DSN > V GSN - V TN
îV DSN = Vinv þ
Y para el PMOS
ìV GSP = V DD - Vinv ü
VO = Vi = Vinv Þ í ý Þ V DSP < V GSP - V TP
îV DSP = V DD - Vinv þ
Es decir, ambos transistores estar‡n saturados, por lo que la corriente conducida ser‡
KN K
I DN = (V GSN - V TN )2 = N (Vinv - V TN )2
2 2
KP K
I DP = (V GSP - V TP )2 = P (Vinv - V DD - V TP )2
2 2
a V TN + V DD + V TP K m (W / L) N
Vinv = ; a= N = N
a +1 KP m P (W / L) P
Si a = 1 Þ Vinv = V DD / 2
Si a > 1 Þ Vinv < V DD / 2
Si a < 1 Þ Vinv > V DD / 2
Desde un punto de vista de dise–o este resultado indica que modificando las dimensiones relativas
de los transistores se puede ajustar el valor de la tensi—n de inversi—n y, consecuentemente, se
puede asimetrizar segœn convenga la curva de transferencia.
__________________________________________________________________________________
Ejercicio 3.6
Encontrar expresiones anal’ticas para la funci—n ID (Vi) en las diversas zonas de trabajo de un
inversor CMOS. Encontrar la tensi—n de entrada para la cual la corriente es m‡xima. Para el caso
particular de VTN=-VTP y KN=KP, representarla gr‡ficamente.
__________________________________________________________________________________
Ejemplo 3.8
Calcular los m‡rgenes de ruido para un inversor CMOS. En aras de una mayor simplicidad,
considerar un inversor simŽtrico (KN=KP), tensiones umbral iguales en valor absoluto (VT=VTN=-
VTP=1,1V) y VDD=5V.
siendo
V IL = min Vi dV o V IH = max Vi dV o
= -1 = -1
dV i dV i
A partir de la inspecci—n de la curva de transferencia parece l—gico suponer que el transistor NMOS
trabaja en zona —hmica y que el transistor PMOS est‡ en saturaci—n:
VO2 KP
I DN = K N ((Vi - V TN )VO - ) I DP = (Vi - V DD - V TP )2
2 2
Para Vi=VIH, tensi—n en principio alta, tenemos VO=VOLmax, tensi—n en principio baja, por lo
que podemos suponer VO2 << 2(Vi - V TN )VO , pudiendo despreciar el tŽrmino cuadr‡tico
I DN » K N (Vi - V TN )VO
(Vi - V DD + V T )2
2(Vi - V T )VO = (Vi - V DD + V T )2 Þ VO =
2(Vi - V T )
dVO 1 2(V IH - V DD + V T ) (V IH - V DD + V T )2
= ( - ) = -1
dVi 2 V IH - V T (V IH - V T )2
V IH - V DD + V T
x = 1± 3 Þ = 1± 3
V IH - V T
S—lo la soluci—n con signo negativo da lugar a un signo positivo de VIH. El resultado final queda
por tanto
V DD - (2 - 3 )V T (V IH - V DD + V T )2
V IH = » 2,83 V VOL max = » 0, 33 V
3 2(V IH - V T )
Llegados a este punto, es imprescindible comprobar a posteriori la validez de las suposiciones y/o
aproximaciones realizadas, en concreto verificar el estado de los transistores y la aproximaci—n
hecha para eliminar el tŽrmino cuadr‡tico en IDN.
ì VOL max = 0, 33 V ü
í ý Þ VOL max << 2(V IH - V T )
î2(V IH - V T ) = 3, 46 V þ
ìV DSN = VOL max = 0, 33 V ü
í ý Þ V DSN < V GSN - V T Þ NMOS en W
î V GSN = V IH = 2,83 V þ
ìV DSP = VOL max - V DD ü
í ý Þ V DSP < V GSP + V T Þ PMOS en SAT
î V GSP = V IH - V DD þ
__________________________________________________________________________________
Ejercicio 3.7
Resuelva el ejemplo anterior sin hacer ninguna aproximaci—n en la expresi—n de la corriente para
la zona —hmica. Calcule el error cometido al despreciar el tŽrmino cuadr‡tico.
__________________________________________________________________________________
a) V DD b) V
V DD DD
Vi VO V DD 0
Esta idea puede utilizarse para implementar cualquier funci—n l—gica combinacional. Una puerta l—gica
toma el valor "1" a su salida para ciertas combinaciones de valores de las variables de entrada; para
todas las dem‡s tomar‡ el valor "0". Por tanto es necesario dise–ar una red de transistores PMOS que
una la salida a la alimentaci—n y que sea equivalente a un interruptor cerrado para las combinaciones de
entrada que hacen la salida igual a "1". Por otra parte, para asegurar el valor cero en la salida para las
dem‡s combinaciones de entrada, es necesario dise–ar una red de transistores NMOS que se comporte
como un interruptor cerrado para las combinaciones de entrada restantes, es decir, aquŽllas que dan lugar
a salida baja.
VDD
PMOS
n
Vi VO
NMOS
Como ejemplo concreto, en la figura 3.38 se muestra la realizaci—n de una funci—n NOR y una
funci—n NAND de dos variables en tecnolog’a CMOS.
a) b) VDD
VDD
A A B
B F
F A
A B B
Observando la puerta NOR de la figura 3.38.a, vemos que la red NMOS conduce, llevando un "0"
l—gico a la salida cuando alguno de los dos transistores en paralelo lo hace y que est‡ en corte cuando
ambos transistores est‡n cortados, luego podemos escribir
F = A+ B
Centr‡ndonos ahora en la red PMOS de la figura 3.38.a, podemos ver que Žsta conduce cuando los dos
transistores en serie lo hacen, llevando un "1" l—gico a la salida, y que est‡ en corte cuando uno de los
dos transistores est‡ cortado, luego podemos escribir
F = A×B
El resultado neto en ambas redes es una funci—n l—gica NOR de dos variables. Un an‡lisis simŽtrico es
posible para la puerta NAND y se deja como ejercicio para el lector.
Ejemplo 3.9
f (a, b, c) = Õ M(0,1, 2, 4)
3
Para proponer la red NMOS, encontramos, al igual que en el ejemplo 3.5, una expresi—n para el
inverso de la funci—n. Por el mŽtodo de Karnaugh podemos encontrar una suma de productos y
simplificarla para reducir el nœmero de literales. Obtendremos
f = ab + ac + b c = a(b + c ) + b c
Necesitaremos tres inversores para controlar correctamente los transistores NMOS. Por otro lado,
si la implementamos a travŽs de la funci—n negada, tendremos que usar un solo inversor.
f =x x = a(b + c) + bc
Hasta aqu’ hemos resuelto la red NMOS. Deber’amos hacer lo mismo para la PMOS, recordando
que debemos encontrar ahora una expresi—n para la funci—n sin invertir, y que los PMOS conducen
cuando su entrada es baja. Esta expresi—n la podemos hallar por dualidad.
f =x [
x = a + (b c ) (b + c )]
La topolog’a correspondiente a las funciones escogidas necesita de 6 transistores NMOS y 6
PMOS, como se aprecia en la figura 3.39.
b
a
c
b c
x
f
a b
b c c
__________________________________________________________________________________
Ejercicio 3.8
Proponer una implementaci—n CMOS para un sistema que permita hacer la suma aritmŽtica de tres
bits de entrada. La salida deber‡ tener dos bits, z1 z0.
Comparar la soluci—n propuesta con la que se deriva de las siguientes expresiones para el inverso
de las funciones a implementar.
z1 = x x = a(b + c) + bc
z0 = y y = x(a + b + c) + abc
__________________________________________________________________________________
Las dos posibilidades de realizaci—n de puertas l—gicas comentadas hasta aqu’ (NMOS con carga de
vaciamiento y CMOS) son, especialmente en el segundo caso, utilizadas mayoritariamente. Sin
embargo existe multitud de variantes de ambas tecnolog’as cuyo uso no es tan general pero si m‡s
adecuado en determinadas situaciones. De entre estas variantes mencionaremos brevemente tres a travŽs
de su inversor representativo: la l—gica NMOS con carga saturada, la l—gica pseudo-NMOS y las
puertas CMOS tri-state.
L—gica NMOS con carga saturada. Se basa en la utilizaci—n como carga de un transistor
NMOS de acumulaci—n donde por construcci—n se fuerza VDS=VGS (ver figura 3.40).
V DD
VO
Vi
La principal ventaja de este tipo de estructura es que, al utilizar un s—lo tipo de transistor, requiere un
proceso de fabricaci—n m‡s sencillo que la tecnolog’a NMOS con carga de vaciamiento o la CMOS.
Su principal problema estriba en que par‡metros elŽctricos como los niveles l—gicos son
sensiblemente peores. As’, por ejemplo, no es dif’cil deducir que VOH=VDD-VT.
ID
V DD
V i =V
DD
VO V i2
Vi
V i1
V OL Vi < V TI V DD V
A nivel tecnol—gico esta estructura es compatible con la CMOS, aunque sus prestaciones a nivel
elŽctrico son inferiores y similares (aunque un poco mejores) a las de un inversor NMOS con carga de
vaciamiento. Suele emplearse en estructuras CMOS regulares y grandes, como las PLA y/o ROM (ver
cap’tulo 5), que pueden tener un tama–o reducido a base de evitar el desdoblamiento en dos redes duales
propio de las puertas CMOS t’picas.
L—gica CMOS tri-state. Se trata de una variante de la puerta CMOS cl‡sica donde existe la
posibilidad de desconectar la salida mediante una variable de control (ver figura 3.42).
V DD
E
Vi VO
E
Es evidente que si la variable de control est‡ activada (E=1) este circuito funciona igual que un inversor
CMOS. Para E=0, los dos transistores controlados por E est‡n cortados y el valor de VO es el
correspondiente al estado de carga de la capacidad en el nodo de salida, valor que no depende de Vi.
Cuestiones
C3.1 Como se aprecia en la figura 3.4, los retardos de propagaci—n est‡n definidos entre el 50% de las
transiciones de entrada y salida de la puerta que caracterizan. Razone c—mo se relaciona el retardo total
de diversos bloques conectados en cascada con los retardos particulares de cada uno. ÀY si los bloques
se encuentran en paralelo?
C3.2 Dibuje unas curvas ID(VGS) con VDS como par‡metro para un transistor NMOS de acumulaci—n
y para uno de vaciamiento.
C3.3 Razone quŽ ocurre en un transistor MOS cuando la relaci—n entre VDS y VGS-VT es de igualdad.
ÀEst‡ en —hmica o en saturaci—n?
C3.4 Una notaci—n alternativa a la de la figura 3.11 para las corrientes en un transistor PMOS seria la
siguente:
ID = 0 V SG £ V T Corte (OFF)
é V2 ù
I D = K ê(V SG - V T )V SD - SD ú V SG > V T , V SD < V SG - V T Ohmica (W)
êë 2 úû
K
ID = (V SG - V T )2 V SG > V T , V SD > V SG - V T Saturaci—n (SAT)
2
Compruebe que son expresiones equivalentes y razonar las ventajas de una y otra, compar‡ndolas
con las del transistor NMOS.
C3.5 En un modelo menos simplificado para transistores MOS que el presentado en este cap’tulo, la
ecuaci—n de la zona de saturaci—n se corrige a–adiendo un tŽrmino, tal como se ve a continuaci—n, para
tener en cuenta una ligera dependencia con VDS.
K
I Dsat = (V GS - V T )2 (1 + lV DS )
2
ÀC—mo cambia esto las curvas ID (VDS)? MuŽstrelo gr‡ficamente para unos valores t’picos de
VT=1V y l=0.05V-1. Vea c—mo cambiar’a, de forma cualitativa, la curva de transferencia de un
inversor CMOS, mostrada en la figura 3.35.
C3.6 ÀC—mo afectar’a, cualitativamente, a los niveles l—gicos VOH y VOL de un inversor NMOS una
carga resistiva entre la salida y tierra?ÀY si la carga est‡ entre la salida y VDD? Razone la variaci—n de
estos niveles l—gicos con el valor de la resistencia.
C3.7 Responda las mismas preguntas de la cuestion 3.6 para un inversor CMOS.
C3.8 ÀA quŽ funciones l—gicas corresponder’an las implementaciones CMOS propuestas para las
funciones NOR y NAND de la figura 3.38 si intercambiamos la asignaci—n entre niveles de tensi—n y
estados l—gicos (1Ûtensi—n baja y 0Ûtensi—n alta)?
C3.9 El ejemplo 3.9 muestra c—mo obtener, aplicando dualidad a las expresiones algebraicas, la
topolog’a de la red PMOS una vez conocida la de la NMOS en la realizaci—n CMOS de cualquier
funcion. Enuncie un mŽtodo que sea aplicable directamente a la topolog’a de las redes, sin pasar por las
expresiones algebraicas, en tŽrminos de bloques, o transistores, en serie o en paralelo.
Problemas
VDD V DD
VDD VDD
Tv Ts Tp R
VO VO VO VO
Vi Ti Vi Ti Vi Ti Vi Ti
b) ÀQuŽ variaciones podriamos introducir en los datos de cada uno de los inversores para mejorar
estos niveles?
P3.2 La red de la figura es una estructura bidimensional de transistores de paso llamada circuito de
Tally. Se propone analizar su comportamiento a nivel l—gico.
Z2
X0
X0
Z1
X1 X0
X1 X0
V DD
Z0
X1 X0
X1 X0
a) Encuentre la tabla de verdad de cada una de las salidas. Proponga una especificaci—n de alto nivel
para estas salidas.
b) Calcule VOLyVOH en la salida Z1. ÀSon estos niveles generalizables a las dem‡s salidas?
P3.3 La figura siguiente muestra una implementaci—n de una funci—n l—gica de dos variables
Construya su tabla de verdad. Proponga una implementaci—n NMOS y otra CMOS para la misma
funci—n. ÀCu‡ntos transistores, incluyendo los de los inversores usados, necesita cada una?
F( A, B, C, D) = å m(1, 3, 4, 5, 7,11,15)
4
VDD
V DD = 5V
T2
VT desconocida
VO
(W/L) = 1/2
Vi T1 T1
(W/L)T2 = 2
b) Si tenemos VO=VI=VA, Àen quŽ estado se encuentra T1? ÀEs posible obtener VT en funci—n de
VA y VDD en esta situaci—n? Si es as’, calcule el valor de VT per VA = 2V.
c) Los niveles de tensi—n VOH y VOL si ponemos una carga de 100 kW entre la salida VO y tierra.
V DD
VO
VA VB
c) Generalice el resultado anterior para el mismo tipo de puerta con n entradas idŽnticas de valor
VDD.
Datos: K'n= 20 mA/V2, K'p= 10 mA/V2, (W/L)n= 10, (W/L)p= 2, VTN= -VTP= 1V, VDD= 5V
P3.8 El circuito de la figura tiene una entrada de control, F, que permite su funcionamiento en ciertos
per’odos de tiempo.
a) Para F=10 V, Àen quŽ regi—n de funcionamiento trabajan los transistores T3 y T4? ÀDegradan la
transmisi—n del "1" l—gico (VDD )? Razone la respuesta.
c) Calcule las tensiones del nivel de salida alto (VOH) y bajo (VOL).
V DD
F TL
VO
A T1
T3
B
T4 T2
P3.9 Obtenga la tabla de verdad de la funci—n l—gica F segœn la figura. Obtenga sus niveles l—gicos de
salida alto y bajo, VOH = VO½VA=VB=VDD y VOL = VO½VA=VB=0. Razone por quŽ no se usa este tipo
de estructura.
V DD
B
F
A B
P3.10 La siguiente figura muestra una implementaci—n CMOS para una puerta AND. Un error en el
proceso de fabricaci—n ha provocado un cortocircuito entre el drenador y el surtidor del transistor
NMOS controlado por la entrada B.
d) ÀCu‡l ser‡ la potencia media disipada en est‡tica? (Suponga que en ambas entradas los unos y
los ceros son equiprobables).
VDD
V DD
A B
F
X
A
Datos: K'n=2K'p= 80 mA/V2, (W/L)n= 8/2, (W/L)p= 12/2, VTN= -VTP= 1V, VDD= 5V
P3.11 La estructura de la figura se corresponde con la de un inversor con histŽresis. Encontrar la zona
de funcionamiento de cada transistor cuando la entrada vale 0 y cuando vale VDD.
V DD
T1
T3
T2
V in Vout
VDD
T4
T6
T5
Partiendo de la situaci—n estable Vin=0, calcular cu‡nto debe aumentar Vin para descargar el nodo
V out, es decir, para que T4 y T5 conduzcan. Hacer los c‡lculos partiendo de Vin=V DD , para
encontrar a quŽ tensi—n de entrada empezar‡n a conducir a la vez T1 y T2.
El propósito de este capítulo es introducir al lector en la tecnología CMOS desde el punto de vista de
su fabricación, poniendo en evidencia la posibilidad de un lenguaje común entre el diseñador de
circuitos digitales y el fabricante de circuitos integrados. Este lenguaje común, basado en una
herramienta geométrica denominada "layout", ha supuesto una innovación en el mercado de los
circuitos integrados digitales, permitiendo diseñar y producir circuitos a medida de un usuario y una
aplicación concretos (es decir circuitos específicos o "custom").
El capítulo presenta en primer lugar, mediante un tratamiento descriptivo e introductorio, una breve
panorámica de las etapas básicas en la fabricación de circuitos integrados sobre silicio, orientada
desde una perspectiva CMOS. Los lectores que tengan un conocimiento previo de este tema pueden
pasar directamente al apartado 4.2, donde se presenta con cierto detalle un proceso de fabricación
CMOS completo, tomándose como referencia básica de diseño el conjunto de máscaras empleadas
(layout) e ilustrando su uso mediante ejemplos. Más adelante se aborda la problemática de los efectos
eléctricos presentes en un circuito integrado MOS y su relación con la tecnología. Por último, el
capítulo presenta un método aproximado de cálculo de retardos en circuitos integrados CMOS.
© 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.
124 Diseño digital
________________________________________________________________________________
Las obleas son los sustratos de partida sobre los cuales se realizan los circuitos integrados. Las
operaciones o etapas tecnológicas cuya aplicación en orden adecuado conduce a un circuito integrado
MOS son básicamente cuatro: la deposición de capas, la oxidación térmica del silicio, la
fotolitografía, y la introducción de impurezas (en dos modalidades: difusión e implantación iónica).
En los apartados siguientes se comentan estas etapas brevemente y por separado.
En las tecnologías MOS tiene particular interés el depósito de silicio policristalino (polisilicio), que se
consigue mediante deposición química en fase vapor (CVD Chemical Vapor Deposition). En esencia
este procedimiento consiste en introducir en un horno el sustrato sobre el que se desea realizar el
depósito juntamente con un gas portador del material a depositar (en el caso del polisilicio el gas en
cuestión es SiH4 o Cl3HSi); a temperaturas del orden de 1000ºC y presiones del gas portador
adecuadas se consigue que átomos de silicio presentes en el gas precipiten sobre el sustrato. En
función de las condiciones precisas de presión y temperatura el silicio depositado puede ser amorfo o
policristalino (polisilicio).
Si Si
El polisilicio se utiliza en tecnologías MOS como material de puerta de los transistores, sustituyendo
a la antigua puerta metálica. Su ventaja principal es, como veremos más adelante, que puede utilizarse
para realizar el drenador y el surtidor, de forma que por construcción estas dos zonas queden
directamente alineadas con la puerta. Este procedimiento, utilizado en todas las tecnologías MOS
actuales, se denomina autoalineado.
El metal, utilizado para realizar pistas de conexión y contactos, también se deposita sobre la oblea. Un
procedimiento sencillo para depositar metales consiste en evaporar de forma brusca metal por efecto
Joule (calentamiento mediante una resistencia) en un ambiente de vacio; el material evaporado se
condensa sobre la superficie de la oblea.
Otros materiales utilizados comúnmente en procesos MOS y susceptibles de ser depositados son el
Si3N4 o el SiO2.
Probablemente se pueda afirmar que la tecnología del silicio ha alcanzado su grado actual de
desarrollo debido a las particulares propiedades del dióxido de silicio (SiO2). El SiO2 se utiliza como
aislante (es el caso del óxido de puerta de los transistores MOS) y también para delimitar las zonas
donde se va a proceder a un cambio en el tipo de dopado del silicio (de P a N o viceversa).
O2
a) Si O 2
Si Si
O2
b)
Si Si
La oxidación del silicio se lleva a cabo mediante calentamiento de la oblea en atmósfera rica en
oxígeno. Para ello pueden utilizarse dos tipos de ambientes: el oxígeno seco (oxidación seca), o una
mezcla de oxígeno y vapor de agua (oxidación húmeda).
La oxidación seca produce un óxido de mejor calidad pero es mucho más lenta que la oxidación
húmeda a igual temperatura (el grosor del óxido obtenido en el mismo tiempo es mucho menor). Por
su parte, la oxidación húmeda es la utilizada habitualmente para obtener espesores de óxido
importantes.
Los procesos de oxidación se realizan a temperaturas próximas a los 1000ºC. Un aspecto que
conviene tener presente es que la oxidación consume silicio (esto es así en la oxidación de cualquier
elemento), luego la capa de óxido que se va formando crece en ambas direcciones según el eje
vertical (ver figura 4.2.a). La figura 4.2.b muestra la cinética de un proceso de oxidación sobre una
estructura donde parte de la superficie ya estaba cubierta inicialmente por una capa de SiO2: la nueva
capa de óxido crece más rápidamente donde el silicio está en contacto directo con el ambiente
oxidante.
4.1.3 Fotolitografía
Vamos a detallar un poco más este ejemplo. Para ello podemos tomar como referencia o punto de
partida la situación mostrada en la figura 4.3.I.
I) Si O 2
- Situación inicial
Si
Resina
II)
Si O 2 - Deposición de resina
Si
III) Máscara
IV) Si O 2
- Revelado
Si
V)
Si O 2
VI) Si O 2
- Eliminación de la
Si resina restante
Oxido
t1 < t2 < t3
Zona
dopada
x
Sustrato x
b) Mediante una etapa de fotolitografía se elimina el óxido de las zonas en las que se
desea realizar la difusión, manteniéndolo en las restantes.
N(x)
Después de
implantar
Después del
"annealing"
Las principal ventaja de la implantación frente a la difusión es la posibilidad de controlar con gran
precisión el perfil de dopado resultante a través de dos parámetros: la cantidad de impurezas
introducidas (que influye sobre todo en el valor del máximo y la anchura del perfil) y la energía de
implantación (que influye sobre la posición del máximo).
Para limitar las áreas en las que los iones de impureza deben alcanzar el sustrato es necesario algún
tipo de protección o enmascaramiento de las zonas que no deben ser afectadas. Los materiales
habitualmente utilizados para ello son el SiO2 (crecido o depositado), el Si3N4 depositado, el
polisilicio depositado y, en ocasiones, la fotoresina.
Es preciso tener en cuenta que después de la implantación la estructura cristalina del silicio queda
dañada como consecuencia de las colisiones de los átomos de impureza con los del sustrato. Es
preciso, por tanto, regenerar la estructura cristalina original mediante un breve tratamiento térmico
posterior a la implantación. Este tratamiento térmico implica una cierta difusión de las impurezas
implantadas y, con ella, una modificación del perfil de dopado (éste se ensancha); este paso obligado
tras una etapa de implantación se denomina "annealing", o recocido.
Una vez pasada revista, aunque de forma somera, a las etapas básicas de fabricación de circuitos
integrados sobre silicio, vamos a ver un ejemplo de concatenación de estas etapas que permite
fabricar un transistor NMOS a partir de una oblea de silicio tipo P. La secuencia de operaciones se
ilustra en la figura 4.6.
El proceso se inicia con el crecimiento de un óxido grueso, llamado de campo, cuyo espesor típico es
de 1µm. A continuación se delimita la zona donde situaremos el transistor (zona activa) mediante un
paso de litografía, cuyo resultado es que el óxido de campo recubrirá toda la oblea salvo la zona a
ocupar por el dispositivo (ver figura 4.6.b).
a) Oxidación de campo
En la zona activa se hace crecer una capa fina de óxido térmico seco, que será el óxido de puerta en el
dispositivo acabado, y cuyo espesor indicativo es de 300 Å. El paso siguiente es el depósito de
polisilicio sobre toda la oblea, seguido de un ataque de éste y el óxido fino, preservando solamente la
zona de puerta y dejando el silicio al descubierto en las zonas de drenador y surtidor (ver figura
4.6.e).
Sobre la estructura resultante se implantan impurezas tipo N. Los iones de impureza llegarán al silicio
solamente en las zonas en que éste está descubierto (ver figura 4.6.g). Seguidamente se recubre todo
mediante una capa de óxido (en esta ocasión depositado) en la cual se practican mediante ataque
selectivo aperturas en las zonas en que se quiere hacer los contactos de drenador y surtidor. La última
etapa consiste en el depósito del metal y su posterior ataque para formar pistas de interconexión.
f) Implantación de drenador y
surtidor
g) Deposición de óxido y
grabado para realizar los
contactos
Nótese que en este sencillo ejemplo hemos visto que para fabricar un transistor son necesarias cuatro
operaciones que requieren litografía, es decir, cuatro máscaras diferentes (delimitación de la zona
activa, de la zona de puerta, de los agujeros de contacto, y de las pistas de metal).
Entendemos por proceso CMOS la serie ordenada de etapas de fabricación que permite realizar un
circuito CMOS. Téngase en cuenta que cualquier circuito CMOS por complicado que sea es
simplemente una interconexión de transistores PMOS y NMOS, por tanto, un proceso CMOS es la
secuencia de operaciones tecnológicas que producen transistores NMOS y PMOS en la misma oblea.
Las etapas principales de cualquier proceso CMOS (tal vez sería más riguroso decir que las etapas
que necesitan de uso de máscara) son las mismas y su secuenciación también, con independencia del
fabricante. Es por este motivo que es posible a partir del conocimiento de un proceso genérico diseñar
circuitos integrados con una cierta independencia del fabricante que los vaya a realizar. A lo largo de
los apartados siguientes veremos hasta qué punto esta afirmación es exacta.
El primer inconveniente a remarcar para fabricar transistores PMOS y NMOS de forma conjunta
reside en que los transistores NMOS necesitan de un sustrato de tipo P mientras que los transistores
PMOS lo necesitan de tipo N. Luego si por ejemplo el sustrato es de tipo P la primera operación en un
proceso CMOS es crear una zona suficientemente grande de tipo N (denominada pozo) donde alojar
los transistores PMOS. La solución simétrica también es posible: comenzar con un sustrato tipo N y
crear un pozo de zona de tipo P donde alojar los transistores NMOS. En el primer caso diremos que
utilizamos tecnología CMOS de pozo N y en el segundo diremos que utilizamos tecnología CMOS de
pozo P.
a) b)
p n n p
Al ser la movilidad de los portadores una función decreciente con el dopado resulta que utilizar pozo
N o pozo P tiene consecuencias sobre el comportamiento eléctrico de los transistores fabricados.
Como el pozo tiene un dopado mayor que el sustrato la movilidad de los portadores queda más
degradada en el canal de un transistor situado dentro del pozo que en el que no lo está. Así en el caso
de pozo N los transistores PMOS están dentro del pozo, luego la movilidad de los huecos se verá más
reducida por efecto del dopado que la movilidad de los electrones en los transistores NMOS. Como la
movilidad de los electrones, a igual dopado, es mayor que la de los huecos la consecuencia global es
que esta diferencia de movilidades se ve incrementada. Un razonamiento parecido conduce a que en
el caso de utilizar tecnología de pozo P la diferencia de movilidades entre electrones y huecos
disminuye.
El primer paso del proceso es, como se ha indicado más arriba, crear el pozo N. Esto suele hacerse
mediante implantación seguida de difusión (ver figura 4.8.a). Para ello es necesaria una máscara que
delimite la situación del pozo.
Una vez creado el pozo y tras una oxidación posterior, es preciso delimitar la zona activa, es decir, el
área de la oblea en la cual estarán situados los transistores. La máscara utilizada a tal efecto se
denomina de zona activa o "thinox" (ver figura 4.8.b). Tras delimitar la zona activa, mediante
oxidación seca se crece sobre ésta el óxido de puerta (este óxido apenas se nota donde ya estaba el
óxido de campo). A continuación se deposita el polisilicio, habitualmente dopado N+, que constituirá
la puerta de los transistores (ver figura 4.8.c).
En este punto del proceso se procede a crear mediante implantación los surtidores y drenadores de
todos los transistores (tanto NMOS como PMOS). Para ello basta con una sola máscara, denominada
de implantación. Utilizando esta máscara se implanta de tipo N+ realizando así los drenadores y
surtidores de los transistores NMOS y utilizando su complementaria, o bien la misma con la resina
contraria, se implantan los drenadores y surtidores de los transistores PMOS (ver figuras 4.8.e y
4.8.f). Procesos CMOS más complejos utilizan dos máscaras diferentes (una para cada tipo de
implantación).
Máscara 1: Pozo N.
a) Creación del pozo N mediante implantación/difusión.
Máscara 3: Polisilicio
n+ n+
n+ n+ p+ p+
n+ n+ p+ p+
Máscara 5: Contactos
n+ n+ p+ p+
Máscara 6: Metal
Se denomina óhmico al contacto entre metal y semiconductor que permite el paso de la corriente en
los dos sentidos sin provocar caídas resistivas (el caso opuesto se denomina contacto Schottky o
rectificador y es una situación a evitar aquí). En general la condición para que el contacto sea óhmico
es que el semiconductor esté fuertemente dopado, como es el caso de los drenadores y surtidores de
un transistor MOS. Las etapas finales del proceso consisten en, tras recubrir todo con óxido
depositado, abrir agujeros en éste para poder realizar contactos, es decir, delimitar las zonas donde el
metal debe establecer contacto con el silicio. Para ello se utiliza una nueva máscara denominada de
contactos (ver figura 4.8.g).
Un aspecto complementario que merece ser comentado es el siguiente: los drenadores y surtidores de
los transistores NMOS son zonas N+ sobre sustrato tipo P; si la implantación N+ tiene lugar sobre el
pozo N, lo que se consigue es una zona fuertemente dopada sobre la que es posible establecer
contactos óhmicos con el pozo. Análogamente si la implantación P+ tiene lugar sobre el pozo N se
generan los drenadores y surtidores de los transistores PMOS y si dicha implantación se realiza sobre
el sustrato P lo que se consigue es tener una zona fuertemente dopada a través de la cual es posible
establecer un contacto óhmico con el sustrato.
Por último el metal es depositado sobre toda la oblea y eliminado mediante grabado en donde no es
necesario. Esto se consigue mediante una última máscara, denominada de metal (ver figura 4.8.h).
Las etapas finales del proceso pueden repetirse para obtener sucesivas capas de pistas de metal
separadas por óxido y contactarlas donde sea necesario; así, cuando se desea realizar un conexionado
complejo suelen utilizarse dos niveles de metal. Para ello son necesarias dos máscaras adicionales:
una segunda de contactos y otra segunda de metal.
4.2.2 Layouts
Especificaciones
Layout Circuito integrado
a nivel eléctrico y/o
abstracto CMOS
Diseñador Fabricante
Las diferentes máscaras del layout suelen representarse mediante códigos de colores o bien, como es
el caso de este libro, mediante distintos entramados en blanco y negro. Los entramados que
utilizaremos como referencia se listan en la tabla 4.1.
La figura 4.10 muestra el layout de un inversor CMOS similar al del apartado anterior. Recordando el
proceso de fabricación, es pertinente hacer una serie de observaciones generales sobre su
interpretación.
W W
=1 V =2
VOUT L OUT L
a) Canal
W Zona activa
Polisilicio
L
b) Oxido de puerta
n+ n+
p
Figura 4.11 Cruce entre zona activa y polisilicio; a) layout, b) sección vertical
b) Toda la zona cubierta por la máscara de zona activa, excluyendo las zonas en que cruza la
de polisilicio, es o bien de tipo N+ o bien de tipo P+: recordar que las máscaras de implantación P+ y
N+ son complementarias; por tanto, definiendo simplemente las zonas P+ como las situadas dentro de
las máscaras de zona activa e implantación P+, las zonas N+ quedan definidas automáticamente por
exclusión (ver figura 4.12).
+ +
Zona N Zona N
Zona P+
Zona P +
Sustrato P Pozo N
Ejemplo 4.1
VDD
4λ
VSS
S S'
Una primera inspección permite identificar seis transistores (hay seis intersecciones área activa-
polisilicio). También pueden observarse transistores situados fuera del pozo y conectados a la
alimentación VDD; dado que éstos deben ser PMOS podemos decir que los situados dentro del
pozo son los NMOS y que el layout corresponde a tecnología CMOS de pozo P. Además las
zonas activas situadas dentro de la máscara de implantación son de tipo p+ y, simétricamente, de
tipo n+ las situadas fuera.
VDD
S'
A B
A
F F
B B
A S
VSS
S S'
A nivel eléctrico se observa que las pistas A, B, S, y S' son las entradas al circuito (todas terminan
en puertas de transistor), mientras que F es la salida. En la figura 4.14 se realiza la extracción del
esquema eléctrico que, tras una ligera manipulación, es fácil de identificar con una puerta lógica
NAND seguida de una puerta de transmisión.
El conocimiento genérico del proceso permite tener una idea aproximada de la estructura física
del circuito una vez fabricado. Así, por ejemplo, podemos realizar secciones verticales a partir del
layout. En la figura 4.15 se representa la sección del circuito a la altura de los transistores NMOS.
Esta sección permite observar una serie de aspectos, algunos de ellos comentados en apartados
anteriores: a) existe óxido de campo sólo fuera de la zona marcada por la máscara de zona activa, b)
el óxido depositado recubre todo el circuito excepto donde se han situado explícitamente los
contactos, c) metal y polisilicio están separados por el óxido depositado, d) al no haber contacto
intermedio, los dos primeros transistores están en serie.
p+ n+ n+ n+ n+
Hay que destacar que el contacto situado más a la izquierda es de tipo óhmico (metal con p+
sobre p) y que conecta el pozo (sustrato de los transistores NMOS) a la tensión baja VSS. Esto
sintoniza con lo dicho en el capítulo 3, donde se suponía el sustrato de los transistores NMOS
conectado a la tensión baja de referencia. Como podemos ver aquí, esta conexión se realiza cada
cierta área y no individualmente para cada transistor. La situación dual para el sustrato de los
PMOS la da el contacto, n+ sobre n con VDD, situado en la zona superior derecha del layout.
Como ejercicio para el lector se propone identificar la sección vertical de la figura 4.16 con el eje
del layout de la figura 4.13 a que corresponde.
Figura 4.16 Otra sección vertical del layout del ejemplo 4.1
_________________________________________________________________________________
Ejercicio 4.1
-Obtener el esquema eléctrico equivalente, determinando previamente qué tipo de pozo usa
la tecnología asociada a este layout.
-Construir la tabla de verdad de la función lógica realizada por el circuito. ¿Qué puerta o
conjunto de puertas implementa?
V V
SS DD
M M'
A A
B B
S S
N'
V V
SS DD
_________________________________________________________________________________
_
choca frontalmente con las limitaciones tecnológicas del proceso: ¿hasta qué punto puede reducirse el
tamaño de un motivo en el layout (la anchura de una pista, la puerta de un transistor, etc.) estando al
mismo tiempo razonablemante seguro de que éste efectivamente existirá? ¿hasta qué punto se pueden
colocar próximas dos pistas sin correr el riesgo de que se produzca un cortocircuito no deseado?
5λ 3λ
10λ
5λ
2λ 2λ
3λ 2λ
2λ 2λ
1λ 2λ
3λ 3λ 3λ 3λ 4λ 3λ
Figura 4.18 Juego elemental de reglas de diseño para proceso CMOS de pozo N
Ejemplo 4.2
Vamos a discutir la regla de diseño referente a la definición del canal de un transistor en función
de posibles desalineamientos de las máscaras implicadas. En la figura 4.19 se reproducen tanto la
regla de diseño como el resultado esperable a nivel de sección vertical si no se producen errores.
2λ
Eje
Sección
NoP
En la figura 4.20 se reproducen dos situaciones de error: a) una desviación de 2λ (el máximo
tolerable) , y b) una desviación de 3λ.
a) b)
p+ n+
Vemos que en la primera situación la zona de puerta del transistor sigue existiendo, con lo que,
por tanto, el error no es grave, mientras que en el segundo caso una parte de esta zona ha
desaparecido, apareciendo en su lugar una zona muy dopada (ello se debe a que el polisilicio y el
óxido de puerta han sido eliminados y no han enmascarado la implantación posterior), con lo que
el transistor estará cortocircuitado, problema que podemos calificar de catastrófico. (Como se
muestra en el problema 3.10)
_________________________________________________________________________________
Ejemplo 4.3
De entre las opciones CMOS que permiten realizar una puerta OR la que más se ajusta a nuestras
necesidades es la que encadena una puerta NOR y un inversor (ver figura 4.21).
Una vez escogida la estructura es conveniente manipular el esquema eléctrico, de forma que sea
más inmediato generar un layout de dimensiones reducidas. Aspectos a tener en cuenta son: a)
situar los transistores PMOS, que en este caso irán dentro del pozo, próximos entre sí y en un
mismo semiplano y los NMOS también próximos entre si y en el semiplano contrario, b) alinear
los transistores que tengan la misma variable de entrada, de forma que ésta pueda introducirse
mediante la misma pista, c) definir un esquema de conexiones lo más compacto y simple posible,
etc. La figura 4.21 muestra el esquema eléctrico inicial del circuito y el generado de acuerdo con
estas directrices.
VA
VB VO VO
VA VB
VA VB
El paso del esquema eléctrico al layout implica generar los transistores (cruces polisilicio-área
activa), las pistas de interconexión y los contactos, escogiendo el grosor de pistas y transistores
de acuerdo con las prestaciones eléctricas deseadas para el circuito, todo ello respetando las
reglas de diseño del fabricante. El resultado es un layout como el de la figura 4.22, cuyas
dimensiones son múltiplos enteros de λ.
VDD
4λ
VSS
VA VB VO
Es preciso tener en cuenta que el diseño de layouts no suele realizarse en la práctica de forma
artesanal o manual, tal como este ejemplo parece indicar, sino que normalmente se utilizan
entornos software muy completos que permiten tanto editar layouts como verificar si éstos
cumplen las reglas de diseño e incluso extraer el circuito equivalente a nivel eléctrico y, en
ocasiones, simular su funcionamiento.
_________________________________________________________________________________
Ejercicio 4.2
Construir un layout que corresponda a una función NAND de cuatro variables en tecnología
CMOS de pozo N, utilizando el menor número posible de transistores y respetando las reglas de
diseño dadas en la figura 4.18. El tamaño de los transistores NMOS debe ser 2λx2λ, y para los
PMOS la anchura será el doble .
_________________________________________________________________________________
Como hemos visto, un proceso de fabricación MOS conduce, por una parte, a la creación de capas de
diversos materiales sobre la oblea, y por otra, de zonas con distinto tipo de conductividad dentro del
mismo silicio. Cada una de estas capas y zonas semiconductoras presenta una resistencia al paso de
corriente, y al mismo tiempo una cierta capacidad parásita. Estas características eléctricas determinan,
entre otras cosas, los retardos que experimentan las señales y la potencia consumida por el circuito.
En este apartado se presentan modelos sencillos para la evaluación tanto de las resistencias como de
las capacidades presentes en un circuito integrado CMOS.
La resistencia de una pista uniforme de material conductor como la representada en la figura 4.23
puede calcularse mediante la relación dada en la misma figura, donde ρ es la resistividad del material
(Ω.cm), L la longitud de la pista (cm),S su sección (cm2), W su anchura (cm) y t su espesor (cm). El
valor de la resistencia viene dado en ohmios.
L t
I
L L
R =ρ = ρ
S Wt
Una forma alternativa, muy útil, de reescribir la expresión dada consiste en relacionar R con los
parámetros L y W (directamente observables en un layout) a través de una constante, que incluya ρ y
t. Por otro lado, podemos interpretar la relación L/W como el número de cuadrados de lado W
contenidos en la pista de longitud L. Por tanto, podemos calcular la resistencia de esa pista
multiplicando el número de cuadrados por la constante ρ/t , que es la resistencia de una pista cuadrada
y se la denomina resistencia de cuadro
ρ L L
R= = Rs ( )
t W W
Tanto el tipo de materiales a utilizar como el espesor de las pistas están asociados al proceso, luego la
resistencia de cuadro de una determinada capa (polisilicio, metal, difusión, etc.) es un dato a
suministrar por el fabricante. En cambio L y W son dimensiones presentes en el layout, siendo por
tanto el diseñador de las máscaras, o si se quiere del circuito, quien define sus valores. En resumen,
desde el punto de vista del diseñador, la resistencia de cuadro es un dato del proceso mientras que L y
W son las variables a través de las cuales puede modificarse el valor de la resistencia. La figura 4.24
ilustra este método de cálculo mediante algunos ejemplos.
L
L
I
W I
2
W R= R
3 S
R=3R S
La tabla 4.2 muestra valores característicos para las resistencias de cuadro de distintos materiales
utilizados en un proceso CMOS de λ=1µm.
Rsmin Rsmax
Polisilicio 15 30
Difusión 10 100
Metal 0.05 0.1
pozo N 1K 5K
De estos valores se pueden obtener algunas indicaciones sobre cómo realizar el diseño de las pistas de
interconexión. Tomemos como referencia la situación mostrada en la figura 4.25, donde una pista de
un cierto material debe transmitir una tensión Vi; si la resistencia de la pista es apreciable se producirá
una caída óhmica y la tensión transmitida será VO. Es evidente que esta caída será menor para pistas
de poca longitud y/o muy anchas.
L
W
L
Vi I VO V = V - IR
O i SW
Los valores de resistencia de cuadro dados en la tabla anterior indican que una conexión entre dos
puntos alejados de un circuito debe realizarse mediante una pista metálica. Por otra parte, es necesario
ser muy cuidadoso con la longitud excesiva de las pistas de polisilicio y/o difusión debido al elevado
valor de resistencia de cuadro que presentan. Adicionalmente este problema empeora cuanto mayor
sea la corriente transportada por la pista.
W1 / W2 R
W2
1 2.5 R S
W2
W1 2 2.6 R S
3 2.75 R S
W1
W2
W1 / W2 R
W2
2 2.25 R S
W1 3 2.5 R S
4 2.65 R S
W1
Aunque los transistores MOS tengan una característica no lineal y por tanto en rigor no puedan
asimilarse a una resistencia (la cual tiene por definición un comportamiento lineal), es útil en algunas
ocasiones asignar a los transistores una resistencia media equivalente cuando el transistor no está
cortado. Una expresión habitualmente utilizada es
L 3 L
RMOS = Rs =
W 2C ox µV DD W
siendo L y W la longitud y la anchura del canal respectivamente, Cox=εox/tox la capacidad por unidad
de superficie del condensador de puerta y µ la movilidad de los electrones o huecos (en función de si
se trata de un transistor NMOS o PMOS).
Las distintas capacidades presentes en un circuito integrado MOS pueden clasificarse en tres grupos:
a) las asociadas a las pistas de interconexión, b) las asociadas a las difusiones, y c) las asociadas a las
puertas de los transistores. Vamos a comentar estos tres tipos por separado.
a) b)
Si Si
Figura 4.27 Capacidad entre una pista y el sustrato y entre diferentes pistas
De forma simplificada, las capacidades entre las pistas metálicas o de polisilicio y el sustrato pueden
evaluarse aproximándolas a un condensador de placas paralelas, de acuerdo con la expresión
siguiente
C = C' WL
donde C' es la capacidad específica de la pista (F/µm2), valor dependiente del proceso, y WL es la
superficie de la pista (µm2), dato fácilmente extraíble del layout.
donde a y b son las dimensiones horizontales de la difusión (medibles sobre el layout), y Cja y Cjp las
capacidades por unidad de superficie y de longitud respectivamente (valores otra vez dependientes
del proceso, es decir, del fabricante).
a t
N+
b
P
c) Capacidades asociadas a las puertas de los transistores MOS: se debe recordar que la
puerta ejerce su influencia sobre el canal de forma capacitiva, luego existe siempre una capacidad
entre el polisilicio y el canal, que puesto que están separados por una capa muy estrecha de óxido,
suele tener un valor notable.
Una fuente de complejidad en la estimación de esta capacidad reside en su dependencia del estado de
conducción del canal, es decir de las tensiones aplicadas al transistor. Si se toma un criterio pesimista
se puede suponer que la capacidad de puerta toma el mayor valor posible, es decir
C G = C oxLW
donde L y W son las dimensiones del canal y Cox es la capacidad específica de la puerta. Como
veremos al final de este mismo capítulo, esta estimación por exceso de la capacidad de puerta
conduce a una estimación tipo peor-caso para el retardo.
La figura 4.29 muestra las capacidades que en primera aproximación podemos considerar en un
transistor MOS: las de cada difusión desde los terminales de drenador y surtidor, y la de puerta desde
el terminal de puerta.
CG
C j1 C j2
Ejemplo 4.4
Considerar el inversor cuyo layout se especifica en la figura 4.10, que reproducimos otra vez,
asociado a un proceso CMOS de pozo N determinado. Se pide calcular la resistencia equivalente
para el transistor NMOS en conducción, según la expresión del apartado 4.3.1, si el valor de VDD
es de 5V.
Datos del proceso: λ = 1,25 µm, µn = 500 cm2/Vs, RSmetal = 60 mΩ, RSpoly = 20 Ω, Cps = Cms=
2.10-4 pF/µm2, Cox = 3.5 10–3 pF/µm2, Cja = 4.10-4 pF/µm2, Cjp = 4.10-4 pF/µm.
V V V
SS IN DD
4λ
V
OUT
Tenemos que encontrar la relación L/W del transistor NMOS. Observando directamente del
layout obtenemos 2λ/2λ = 1. Entonces:
3 L
RNMOS = =1.7 kΩ
2 Cox µnV DD W
Calcular la longitud que debería tener la pista metálica conectada a VSS para que el efecto de la
resistencia que presenta no fuera despreciable frente al del transistor.
Dado que la corriente que circula a través de la pista lo hace también a través del transistor, las
resistencias estarán en serie, y la resistencia resultante será la suma de ambas. Para que la
resistencia de la pista sea relevante podemos considerar que debe valer, como mínimo, el 10% de
la del transistor.
L Rmin
Rpista = RSmetal L min = 4 λ = 14.3 mm (≈ 11500λ !!)
W RSmetal
Calcular también la capacidad con el sustrato de cada uno de los nodos del circuito. La capacidad
de un nodo del circuito respecto del sustrato (que suponemos conectado a tensión nula) puede
calcularse sumando las capacidades respecto del sustrato de cada una de las pistas conectadas a
dicho nodo, que estarán en paralelo. Así, por ejemplo, para calcular la capacidad vista desde el
nodo VDD, hay que considerar la del trozo de pista visible de metal más la del surtidor del
transistor PMOS, teniendo presente que en los contactos la capacidad de la pista de metal con el
sustrato queda enmascarada por el surtidor y por tanto no cuenta
2 2
CV DD = C metal + Csurtidor = Cms 40λ + C ja 20 λ + C jp 18λ = 0,034 pF
PMOS
Igual puede procederse para obtener las capacidades vistas desde los nodos VSS y OUT
_________________________________________________________________________________
Ejercicio 4.3
Para el layout de la figura 4.17, del ejercicio 4.1, y con los datos del ejemplo anterior, calcular la
resistencia que presenta la pista de polisilicio de cualquiera de las entradas a ser recorrida de
extremo a extremo. Calcular también la capacidad del nodo de salida al sustrato.
_________________________________________________________________________________
Al diseñar un circuito integrado resulta de interés poder estimar de forma sencilla y rápida sus
retardos de propagación. Un análisis preciso de los retardos requiere de la simulación por ordenador
del comportamiento eléctrico del circuito. En este apartado se presenta un método sumamente
sencillo de estimar retardos por exceso, estimación que no puede en ningún caso sustituir a la
mencionada simulación pero que resulta muy útil como aproximación de primer orden.
El procedimiento de estimación de retardos que aquí se propone se basa en identificar el circuito con
una serie de etapas RC conectadas en cascada. Se supone que estas etapas son independientes entre sí
y se calcula el retardo total como la suma de las constantes de tiempo de cada una de las etapas.
Nótese que este procedimiento se basa en varias aproximaciones, algunas de ellas bastante burdas: a)
como la carga/descarga de capacidades se realiza a través de transistores que conducen es necesario
asignar un valor de resistencia a cada transistor; b) suponer que las distintas células RC son
independientes entre sí y que por tanto el retardo de varias células en cascada es la suma de cada uno
de ellos es evidentemente una aproximación; c) es inexacto identificar un retardo de propagación,
definido en el capítulo 3, con la constante de tiempo de un circuito RC, que siempre es algo mayor
(ver figura 4.30).
Vi
VDD
R
Vi VO t
C VO
VDD
0,63 VDD
t
RC
VDD
t pLH
Vi VO
t pHL CL
Ejemplo 4.5
Calcular los tiempos de retardo del inversor cuyo layout se indica en la figura 4.10 obteniendo
previamente la resistencia equivalente de cada transistor y la capacidad a la salida del circuito si
lo cargamos con otro inversor idéntico, como se muestra en el esquema que sigue. Utilizar los
datos del ejemplo 4.4, y RSP=2.5xRSN.
L 2λ L 2λ
RNMOS = RSN = RSN = 1.7kΩ RPMOS = RSP = 2.5RSN = 2.1kΩ
W N 2λ WP 4λ
La capacidad vista a la salida del circuito constará en principio de tres componentes, dos de ellas
ya calculadas en el ejemplo 4.4: la capacidad de salida del inversor (COUT) más la de entrada del
inversor de carga (CIN) y la de las pistas que se añadan para conectarlos. Observamos que esto se
hace con un contacto de metal a polisilicio de 4λx4λ, tenemos
2
C L = C OUT + C IN + Ccontacto = 0,056pF + 0,091pF + Cps 16λ = 0,15pF
Ejercicio 4.4
Considerar el layout de la puerta OR del ejercicio 4.3 (Figura 4.22). Calcular la capacidad entre el
nodo intermedio (Entre la NOR y el inversor) y el nodo de sustrato. Calcular la resistencia
equivalente de cada uno de los transistores. Calcular, finalmente, el tiempo de propagación hasta
este nodo intermedio, tpHL, en el caso en que solo uno de los transistores NMOS conduzca.
Razonar cuánto valdrá este tiempo en el caso de que conduzcan ambos.
Usar datos de proceso genéricos: λ, µn, µp, RSmetal, RSpoly, Cps, Cms, Cox, Cja, Cjp.
_________________________________________________________________________________
La figura 4.32 muestra una cadena formada por dos inversores con sus respectivas capacidades de
salida CL1 y CL2. El cálculo de los retardos de propagación en este caso es fácil puesto que las dos
etapas son eléctricamente independientes: la corriente de carga o descarga de CL1 es suministrada
únicamente por los transistores del primer inversor e igual ocurre con CL2 y los transistores del
segundo inversor; luego el retardo de toda la cadena puede obtenerse como la suma de los retardos de
cada etapa.
V DD V DD
Vi VO
C L1 C L2
L L
t pLH = t pHL1 + t pLH 2 ≈ RMOSN 1CL1 + RMOSP 2 CL 2 = RSN1 ( )N 1 CL1 + RSP2 ( )P 2 CL2
W W
L L
t pHL = t pLH 1 + t pHL 2 ≈ RMOSP1 CL1 + RMOSN 2 CL 2 = RSP1 ( )P1 CL1 + RSN 2 ( ) N 2 CL 2
W W
Este procedimiento es directamente generalizable a cadenas de más inversores.
Ejemplo 4.6
Esta transición a la entrada del segundo inversor provocará una transición de VDD a 0 en el nodo
2, pero no instantáneamente, sino con un cierto retardo, tpHL del inversor. Igualmente, el tercer
inversor forzará una variación de tensión de 0 a VDD a su salida, el nodo 3, con su retardo
correspondiente tpLH. Este cambio excita una transición en la entrada del primer inversor que
resulta en una conmutación del nodo 1 de VDD a 0; esta conmutación se produce 2tpHL + tpLH
despues de la primera transición considerada. El análisis que sigue ahora es el inverso del ya
realizado, para volver al punto de partida. La conclusión es que las tensiones en los nodos
oscilan.
( ) L L
T osc = 3 t pHL + t pLH = 3 RSN CL + RSP C L = 3.6 ns
W N W P
1
f osc = ≈ 280 MHz
T osc
_________________________________________________________________________________
Ejercicio 4.5
Para atacar una capacidad de carga grande, sin presentar a su vez una capacidad importante al
resto de un circuito, una solución posible es usar una cadena con un número par de inversores,
cuyos transistores tienen anchuras crecientes geométricamente y longitudes de canal idénticas.
Esto es:
tp =
1
(t +t
2 pLH pHL
)
_________________________________________________________________________________
A efectos de cálculo del retardo introducido por una cadena de transistores de paso o de puertas de
transmisión que está conduciendo podemos asociar ésta a una serie de etapas RC conectadas en
cascada, tal como muestra la figura 4.35.
R1 R2 R3 RN
T1 T2 T3 TN
C1 C2 C3 CN
En esta situación no es correcto aplicar el método de calcular por separado el producto RC de cada etapa y después sumar para
obtener el retardo global puesto que la carga o descarga de cada capacidad no se realiza individualmente. Por ejemplo, una corriente
entrante contribuye a cargar todas las capacidades.
Una posibilidad de estimar el retardo en la carga o descarga de cada nodo es asociarlo a una constante
RC donde el valor de la resistencia corresponde a la asociación serie de los transistores que debe
atravesar la corriente hasta llegar a la capacidad, es decir
Carga o descarga de C1 a través de R1 ⇒ tp1 ≈ R1C1
Carga o descarga de C2 a través de R1 y R2 ⇒ tp2 ≈ (R1 + R2 )C2
Carga o descarga de CN a través de R1 a RN ⇒ tpN ≈ (R1 + R2 +.. +RN )C N
N N i
t p = ∑ tpi ≈ ∑ ∑ Rj Ci
i=1 i=1 j=1
Un caso particular de interés es aquél en que las etapas son idénticas, es decir, cuando resistencias y
capacidades son iguales entre sí (llamémoslas R y C). En esta situación el retardo global sería
N i N
N ( N + 1)
t p ≈ ∑ ∑ R C = RC ∑ i = RC
i=1 j=1 i=1
2
Otro caso de interés, éste bastante más realista, es aquél en que las etapas son idénticas (transistores
iguales) y la capacidad vista en el nodo de salida es muy superior a las de los nodos intermedios, es
decir R1=R2=..=RN=R y C1=C2=..=CN-1<<CN. En esta situación el retardo global sería
N
t p ≈ ∑ RiC N = NRC N
i=1
Ejemplo 4.7
VDD
VC
Vx
Vi VO
Cx CO
VC
Es razonable suponer que la capacidad del nodo intermedio Cx, que corresponderá a difusiones y
pistas de escasa longitud, es muy inferior a la del nodo de salida (ésta sí de valor apreciable según
el enunciado); por tanto, los retardos de propagación serán debidos básicamente a la carga y
descarga de CO. Por otra parte, es evidente que estas cargas y descargas se realizarán siempre a
través de uno de los transistores del inversor y de los dos de la puerta de transmisión, por lo que
podemos escribir directamente
2(L / W )P ( L / W ) N
t pHL ≈ (RNMOS + RPMOS RNMOS )CO = ( L / W )N + R C = 3 ns
2(L / W )P + ( L / W ) N SN O
2( L / W )P ( L / W )N
t pLH ≈ (RPMOS + RPMOS RNMOS )CO = 2( L / W )P + RSN CO = 3 ns
2( L / W ) P + ( L / W )N
_________________________________________________________________________________
Ejercicio 4.6
Calcular el retardo de propagación tpHL del circuito del ejemplo 4.1, cuyo layout se explicita en la
figura 4.13, si la carga capacitiva en el nodo F es de 2.5 pF, para las mismas resistencias de
cuadro para los del ejemplo anterior.
_________________________________________________________________________________
La aplicación del método de las constantes de tiempo a un inversor puede extenderse a cualquier
puerta CMOS. En una puerta de n entradas podemos definir distintos retardos de propagación
relacionados con distintas conmutaciones en las entradas. Si la capacidad parásita en el nodo de salida
es, con mucho, la mayor de la puerta, entonces los retardos tipo LH pueden calcularse considerando
esta capacidad y la resistencia equivalente de los transistores que conducen entre la salida y la
alimentación (VDD). Simétricamente, los retardos tipo HL se calcularán considerando la capacidad
del nodo de salida y la resistencia de los transistores conduciendo entre ésta y masa.
Ejemplo 4.8
Calcular los retardos de propagación para la puerta NAND de la figura 4.37. Utilícense los
mismos datos que en el ejemplo 4.7.
V DD
VA VB
VO
VA CO
VB
Si la capacidad del nodo intermedio de los transistores NMOS es muy inferior a CO, los retardos
de propagación serán debidos a la carga y descarga de CO. Además es evidente que la descarga
de CO sólo se produce cuando los dos transistores NMOS conducen simultáneamente
(VA=VB=VDD), por lo que habrá únicamente un retardo tipo alto-bajo
L
t pHL ≈ (RNMOS + RNMOS )CO = 2 RSN CO = 4ns
W N
En cambio hay tres combinaciones de entrada que hacen conducir a la red PMOS, que para
transistores iguales generan dos retardos de propagación bajo-alto diferentes, según conduzca un
solo transistor PMOS, o ambos:
t pLH
min
(
≈ RPMOS RPMOS C O = ) 1
R C = 1 ns
2 PMOS O
t pLH ≈ RPMOSC O = 2 ns
max
Manteniendo el habitual criterio de peor-caso puede decirse que el retardo de propagación bajo-
alto de esta puerta NAND es el mayor de los dos, es decir, 2 ns.
_________________________________________________________________________________
Ejercicio 4.7
Calcular los retardos de propagación tpLH del circuito del ejemplo 4.1, cuyo layout se explicita en
la figura 4.13, si la carga capacitiva en el nodo F es de 2.5 pF, para las mismas resistencias de
cuadro para los del ejemplo anterior.
_________________________________________________________________________________
Cuestiones
C4.1 Sabiendo que el dopado degrada la movilidad, y que la movilidad de huecos es menor que la de
electrones, razone qué tipo de pozo es mejor para equilibrar esta diferencia, y por tanto el tamaño de
los transistores correspondientes.
C4.2 Describa detalladamente el proceso CMOS simplificado presentado en este capítulo, a nivel de
etapas básicas usadas, máscaras, resinas y ataques químicos, etc.
2λ
λ
2λ
C4.4 Responda a la cuestión anterior suponiendo que existe un desalineamiento de las tres máscaras
involucradas en un contacto entre metal y polisilicio (según las reglas de la figura 4.18).
C4.5 Calcule las longitudes de pista necesarias para obtener una resistencia de 1 k• con los distintos
materiales involucrados en un proceso CMOS, según los datos de la tabla 4.2, cumpliendo las reglas
de diseño de la figura 4.18 para la anchura mínima.
C4.6 Considere un proceso tecnológico cuyos layouts están expresados en función de λ. ¿Qué
evolución tendrán las resistencias y capacidades asociadas a un layout si podemos reducir λ en un
factor k? ¿Qué pasaría con los retardos de propagación?
C4.7 Conteste a la cuestión anterior si, además de reducir las dimensiones horizontales en un factor
k1, también reducimos las verticales (espesores de capas, etc) en un factor k2.
V
RNMOS = DS
I D V =V
GS DD
encuentre una expresión para la resistencia de cuadro de un NMOS para VDS=VDD, para VDS
tendiendo a 0, y el valor medio de los anteriores. Compare los resultados obtenidos con la
expresión propuesta en el punto 4.3.1.
C4.9 Si en un circuito CMOS las únicas resistencias relevantes fueran las de los transistores en
conducción, y las únicas capacidades las de puerta de los transistores, razone cuál sería la
dependencia de los retardos de propagación con el parámetro Cox (capacidad de puerta por unidad de
área), asociado al proceso tecnológico.
Problemas
P4.1 Dado el layout de la figura, correspondiente a una red de transistores de paso NMOS, obténga la
serie de máscaras del proceso. Encuentre el esquema eléctrico equivalente. Identifique entradas y
salidas, obteniendo la tabla de verdad de la función lógica que implementa.
C3 C2 C1 C0
S1
S1
S2
S2
VDD
CLK
Vi
CLK
VSS
Vi Vo
Obtenga el esquema eléctrico equivalente de la parte visible del layout, identificando claramente
las señales de alimentación, entrada y salida. Realice la tabla de verdad de la función que
implementa. Complete el esquema eléctrico y dibuje la parte del layout que falta, cumpliendo las
reglas de diseño de la figura 4.18.
P4.4 Obtener el esquema eléctrico equivalente del siguiente layout. ¿Qué función lógica realiza?
A B
VDD
VSS
A B
P4.5 Estudie el siguiente layout. Encuentre el esquema eléctrico equivalente y calcule la resistencia de
la pista conectada a Φ, si la resistencia de cuadro del polisilicio es de 50 •. La capacidad parásita total
vista desde el nodo VO es de 10 pF; calcule los retardos de propagación si esta es la única capacidad
significativa en el circuito.
Datos del proceso: λ = 1,5µm, µn = 500 cm2/Vs, µp = 200 cm2/Vs, Cox = 3.5 10–3 pF/µm2, VDD =
5V, VSS = 0V.
VDD
Vi
Vo
4λ
VSS
Φ Φ
P4.6 Encuentre el esquema eléctrico y la tabla de verdad del circuito implementado por el siguiente
layout. ¿Qué reglas de diseño de entre las dadas en la figura 4.18 se incumplen en este layout?
VDD
4λ
VSS
A B C
P4.7 La salida del circuito del problema anterior está conectada a un inversor, siendo las dimensiones
de sus transistores función de un parámetro adimensional ß: Wpinv=3βλ, Lpinv=2λ, Wninv=βλ, y
Lninv=2λ.
a
b
c
C L=1pF
P4.8 Se desea atacar una capacidad de salida exterior de un chip, de valor CL=200 pF a través de una
cadena de inversores CMOS, en los cuales Wp=Wn=W y Lp=Ln=L=2λ. Las únicas resistencias
relevantes son las de los transistores en conducción, y las únicas capacidades las de las puertas de los
transistores. Calcule la dimensión W del último inversor para que su retardo de propagación sea
inferior a 5 ns para los mismos datos de proceso que en el problema anterior. Haga una estimación del
valor de la capacidad de entrada de este inversor en función de la que tendría otro de dimensiones
mínimas (transistores de 2λx2λ).
Evalue el retardo total de la cadena de inversores, sabiendo que las anchuras de los transistores
son geométricamente crecientes con un factor f (Wi+1=fxWi). Encuentre el resultado en función
de las resistencias de cuadro y capacidades específicas involucradas, para un número genérico de
inversores N. Nota: considere que la anchura del inversor N-ésimo es tal que la capacidad
parásita a su entrada cumple CinvN = f-1 CL.
5.1 ¿Por qué la realización a dos niveles no resuelve el problema del diseño
combinacional?
© 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 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.
a1 a0 b1 b0
S2
S 1 = a 1a 0 b1 + a 1a 0 b1 + a 1b1 b0 +
S0
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
ai
Si = ai ⊕ bi ⊕ Ci
C i+1
bi Ci+1 = ai bi + aibi Ci + ai biCi =
= ai bi + Ci (ai ⊕ bi )
Ci Si
_________________________________________________________________________________
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
_________________________________________________________________________________
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.
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.
a)
b)
M1 M3 M1 M3
M2 M2
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
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.
f1
M1
E1 F = f 1E + f 2E
M2
f2
E E2
_________________________________________________________________________________
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
_________________________________________________________________________________
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
Ejemplo 5.4
4
A F = 1 si A > B
Circuito
F
B
4 Comparador F = 0 si A ≤ B
1 c3
a3 M p3
b3 c2
a2 M F
p2
b2 c1
a1 M p1
b1 c0
a0 M p0
b0
p i+1
ai
ci = pi +1aibi
ci
bi
pi = pi+1 ai ⊕ bi =
pi
= pi +1 (ai bi + ai bi )
_________________________________________________________________________________
Ejercicio 5.3
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
_________________________________________________________________________________
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
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
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
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
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.
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
Ejercicio 5.4
_________________________________________________________________________________
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.
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
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
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.
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
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
_________________________________________________________________________________
Ejercicio 5.5
Proponga una implementación a nivel de puertas lógicas del codificador 4:2 especificado en el
ejemplo anterior.
_________________________________________________________________________________
5.3.3 Multiplexores
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
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.
s
a)
b)
E
x x
1 x 1
1
y y s y
x
x 0 x
0 0
s s
s
Ejemplo 5.6
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
4
A Circuito 4 Y=A si s=0
4 a diseñar Y
B Y=B si s=1
s
_________________________________________________________________________________
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
s3 3210
1 E E
s2 0 Mux
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
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
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
_________________________________________________________________________________
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).
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
7 y
E 7
Decodificador
EI 6
x 5
4
s2
2 3
s1 1 2
s0 0 1
0 y
0
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.
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
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
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.
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
s s s
n-1 1 0
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
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
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
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).
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
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
n
Comparador
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"
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.
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
_________________________________________________________________________________
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.
... 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 a a a b 3 b 2 b 1b 0
> 3 2 1 0
"1" = Comparador
<
> = <
_________________________________________________________________________________
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
n n n
S0
Multiplexor S1
S m-1
n
R
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.
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.
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.
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
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
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.
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
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
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
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
_________________________________________________________________________________
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
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
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.
a) 0
b)
0
x0
f x0
x0 f
x0
x0
x2 x2 x1 x1
x2 x2 x1 x1
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.
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
yi = E⋅ mi ( x) 0 ≤ i ≤ 2 n −1
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
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
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.
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
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
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
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
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.
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.
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.
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
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.
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
_________________________________________________________________________________
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.
_________________________________________________________________________________
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
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
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.
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
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).
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.
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
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
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"
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.
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
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 sistemas digitales secuenciales fueron presentados brevemente en el capítulo 1, cuya relectura se
recomienda llegados a este punto. En un sistema secuencial el valor de la salida en un cierto instante
de tiempo depende no solamente del valor de la entrada en dicho instante sino de los valores
anteriores que ésta ha tomado. Por ello es intuitivo pensar que el estudio y comprensión de los
sistemas secuenciales es, a priori, más complejo que el de los sistemas combinacionales.
Este capítulo presenta los conceptos fundamentales necesarios para abordar el análisis y diseño de
sistemas secuenciales. En primer lugar se presenta el concepto de estado y su utilización en la
especificación de sistemas secuenciales. A continuación se discute el problema de la sincronización,
es decir, cómo abordar la inclusión de la variable tiempo en el funcionamiento del sistema. Por último
se presentan los biestables, vistos como ejemplos sencillos de circuito secuencial y también como
elementos a utilizar en la implementación de circuitos secuenciales de mayor complejidad.
Así, se presenta el concepto de estado del sistema para describir la secuencia temporal de entradas, y
el uso de éste en la especificación de dicho sistema. El punto 6.1.4, referido a la minimización del
número de estados en la especificación de un sistema secuencial, aunque es de importancia,
constituye una pequeña disgresión dentro del esquema lógico seguido. Por este motivo su estudio
puede posponerse a una segunda lectura del capítulo, cuando los conceptos fundamentales sobre
sistemas secuenciales hayan sido asimilados.
© 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.
218 Diseño digital
________________________________________________________________________________
Como se ha dicho, en un sistema secuencial el valor de la salida en un instante z(t0) depende tanto del
valor de la entrada en ese instante, x(t0), como de valores anteriores, x(t<t0), luego podemos escribir
Es evidente que un sistema así necesita recordar un número en principio ilimitado de entradas para
generar cada salida, es decir, implica una capacidad de memorización infinita, cosa que impide su
realizabilidad a nivel práctico. Por este motivo introduciremos una restricción importante:
trabajaremos solamente con aquellos sistemas secuenciales en los cuales las posibles evoluciones
temporales de la entrada se puedan agrupar en un número finito de tipos, llamados "estados", y que,
desde el punto de vista funcional, todas las evoluciones de la entrada pertenecientes a un mismo
estado son equivalentes.
Con la finalidad de simplificar la notación, en adelante llamaremos por defecto sistemas secuenciales
a aquéllos cuyo funcionamiento puede describirse mediante un número finito de estados, que con
mayor rigor deberían ser denominados autómatas o máquinas de estados finitos.
Ejemplo 6.1
Sea un sistema digital como el de la figura 6.1, cuya entrada recibe una serie arbitraria de valores
enteros entre 0 y 3, tomando su salida el valor "a" cuando la suma de los valores recibidos a la
entrada sea múltiplo de 2, y el valor "b" cuando no lo sea. Es claro que este sistema es secuencial
puesto que el valor de la salida en un instante dado depende de todas las entradas recibidas hasta
ese instante y no sólo de la última de ellas.
Sistema x ∈ {0, 1, 2, 3}
x z
Digital z ∈ {a, b}
Veamos si es posible especificar el funcionamiento de este sistema como una máquina de estados
finitos. Para ello obsérvese que para generar la salida no es necesario que el sistema almacene o
"recuerde" la secuencia completa de entradas recibidas (que es en principio ilimitada), y que
tampoco es necesario que almacene el valor de la suma de las entradas (que puede hacerse
prácticamente infinito), sino que le basta con saber si esta suma es par (múltiplo de 2) o no.
Supongamos por ejemplo que la suma de los valores recibidos, excluyendo el último, sea par,
cosa que indicamos definiendo una variable de estado (s) y haciendo que ésta tome el valor "par";
si el último valor recibido es x=0, es evidente que la suma total de los valores recibidos sigue
siendo par, por lo que la salida será y=a. Lo mismo pasaría si el último valor recibido fuese x=2,
pero si este valor fuera x=1 o x=3 tendríamos una suma total impar, por lo que en ambos casos la
salida generada sería z=b.
Si por el contrario suponemos que la suma de entradas recibidas (excepto la última) es impar,
cosa que indicaremos haciendo s=impar, y se recibe como última entrada x=0 o x=2, la salida en
ambos casos será z=b (suma total impar). En cambio, si la última entrada recibida es x=1 o x=3,
la salida será z=b (suma total par).
Por otra parte, si la variable de estado recoge el efecto de las entradas anteriores sobre el
comportamiento del sistema, es evidente que el valor de esta variable se verá afectado por la
última entrada; por ejemplo, si se tiene s=par y x=1, la salida será z=b (suma impar) y el estado
"siguiente", es decir el que incluirá está última entrada, será s=impar. En consecuencia los valores
de la entrada (x) y del estado (s) determinan unívocamente tanto el valor de la salida (z) como el
valor del estado siguiente (llamémoslo s(t+∆t) o, simplemente, s+).
s x s+ z
a) b)
par 0 par a
par 1 impar b
tiempo
par 2 par a
x 0 3 2 1 3 ...
par 3 impar b
s par par impar impar par impar
impar 0 impar b
z a b b a b ...
impar 1 par a
impar 2 impar b
impar 3 par a
La figura 6.2.a ilustra el comportamiento del sistema en función del tiempo para una cierta
secuencia de entradas (0,3,2,1,3,..) a partir de un estado inicial s=par. La figura 6.2.b muestra por
su parte la tabla de verdad de la salida del sistema (z) y del estado futuro (s+) en función de la
entrada (x) y del estado (s) del sistema.
Ejercicio 6.1
Un sistema secuencial tiene dos posibles valores de entrada, A y B. Queremos que el sistema
detecte secuencias de tres entradas iguales. Decida los estados posibles, y describa el
funcionamiento del sistema a través de una tabla.
_________________________________________________________________________________
Ejemplo 6.2
El ejemplo 6.1 ilustra claramente cómo la utilización de una variable de estado es una valiosa
ayuda a la hora de especificar (describir) el funcionamiento de un sistema secuencial. En dicho
ejemplo la variable toma un número finito de valores (en concreto, dos); sin embargo, es fácil
imaginar sistemas cuya variable de estado tendría que tomar infinitos valores: sea un sistema
digital con una entrada y una salida en que ambas pueden tomar dos valores, "0" y "1". La salida
toma el valor "1" cuando la entrada haya tomado el mismo número de veces el valor "0" que el
valor "1", y "0" en los demás casos.
Sistema x ∈ {0, 1}
x z
Digital z ∈ {0, 1}
Si el sistema tiene que detectar cuándo la entrada ha tomado el mismo número de veces el valor
"0" que el valor "1" quiere decir implícitamente que debe contar cuántas veces más ha tomado un
valor que otro. Esto se podría hacer mediante una variable de estado, que por ejemplo podría
indicar cuántas veces más toma la entrada el valor "1" que el "0". Sin embargo, en ausencia de
otras restricciones el número de estados no está limitado: imaginemos por ejemplo que en la
entrada se recibe una secuencia indefinida de "1", necesitaríamos que la variable de estado
pudiera tomar un número ilimitado de valores. Diremos entonces que este sistema no es
realizable en forma de máquina de estados finitos.
_________________________________________________________________________________
Así la especificación de un sistema secuencial (entendido como máquina de estados finitos) puede
hacerse de forma sistemática si se conocen los conjuntos de posibles entradas, salidas y estados, más
las dos funciones que relacionan estos tres conjuntos entre sí: la función de salida y la función de
transición de estados. La figura 6.4 muestra este tipo de especificación utilizando un lenguaje más
formal.
Sistema
x Secuencial z
[s]
x ∈ X, s ∈ S, z ∈ Z
X= Conjunto finito de entradas
F: X, S Z S= Conjunto finito de estados
z = f(x, s) Z= Conjunto finito de salidas
F= Función de salida
G: X, S G= Función de transición de estados
S s+=g(x, s)
Las entradas son los datos que recibe el sistema del exterior, los estados pueden considerarse como
datos generados por el mismo sistema y utilizados internamente por éste (por tanto no accesibles
desde el exterior), y las salidas como los resultados transmitidos al exterior. Las funciones de salida y
de transición de estados se asocian con el tratamiento y generación de datos realizado por el sistema.
Ejemplo 6.3
Vamos a hacer la especificación de un sistema que indica si, en los sucesivos lanzamientos de una
moneda al aire, el número de veces que ha salido "cruz" es par o impar. Se trata obviamente de
un sistema secuencial, para el que se puede suponer que tanto el conjunto de entradas como el de
salidas constan de sólo dos elementos, por ejemplo
Parece razonable pensar que el sistema debe ser capaz de memorizar el resultado de los
lanzamientos efectuados (anteriores al último) en dos grupos o estados, el primero de los cuales
comprendería, por ejemplo, las evoluciones en que el número de veces que se ha recibido la
entrada "cruz" sea par, mientras que el otro grupo reuniría las secuencias que conducen a un
número impar de entradas "cruz". Luego tendremos dos estados posibles
S = {par, impar}
Para terminar de especificar el sistema es necesario indicar cuál es el valor de la salida para cada
posible valor de la entrada y del estado (función de salida) y cómo se actualiza el estado en
función de su valor anterior y del de la entrada (función de transición de estados). Si por ejemplo
asignamos la salida "1" cuando el número de cruces aparecidas sea impar, la tabla de verdad para
ambas funciones será la de la figura 6.5.a.
En la figura 6.5.b se muestra la misma información que en la 6.5.a utilizando una tabla de doble
entrada, de forma que en cada casilla especificamos el valor actualizado del estado y la salida;
así, por ejemplo, si el estado actual es "par" y la entrada es "cara", el estado próximo seguirá
siendo "par" y la salida "0". Dado su formato más compacto utilizaremos preferentemente este
segundo tipo de tabla en lo sucesivo.
_________________________________________________________________________________
Ejercicio 6.2
Especifique el sistema propuesto en el problema P1.2 usando los dos tipos de tablas presentadas
en el ejemplo anterior.
_________________________________________________________________________________
El diagrama de estados está compuesto por una serie de nodos y arcos. Cada nodo representa un
posible estado del sistema (por tanto hay tantos nodos en el diagrama como estados posibles),
mientras que los arcos unen los nodos entre sí de forma direccionada (suelen representarse mediante
flechas). Así la interpretación del esquema de la figura 6.6 es la siguiente: si el estado actual del
sistema es s=A y la entrada es x, la salida toma el valor z y el sistema pasará al estado s+=B. Nótese
que de cada nodo del diagrama salen tantos arcos como combinaciones de entrada diferentes sean
posibles.
x/z z = f ( A, x )
A B
B = g( A, x )
Ejemplo 6.4
Vamos a construir el diagrama de estados del sistema del ejemplo 6.3. Su generación a partir de
la tabla de verdad de la figura 6.5.b es inmediata: sólo hay que dibujar tantos nodos como estados
tiene el sistema (en este caso dos: par e impar) y tantos arcos partiendo de cada nodo
(transiciones y salidas) como entradas posibles tiene el sistema (en este caso también dos: cara o
cruz).
Cruz/1
Par Impar
Cara/0 Cara/1
Cruz/0
_________________________________________________________________________________
Ejercicio 6.3
_________________________________________________________________________________
Ejemplo 6.5
Obtener la tabla de verdad y el diagrama de estados de un sistema secuencial cuya entrada puede
tomar cinco valores distintos (X={a,b,c,d,e}), correspondientes a las cinco opciones entre las que
el usuario puede escoger pulsando un pequeño teclado, y cuya salida puede tener dos valores
(Z={s,n}), que permiten o no el acceso a una zona de seguridad. El funcionamiento del sistema es
tal que, si se pulsan consecutivamente las teclas "a","d" y "b", se habilita el acceso (z=s), mientras
que en cualquier otro caso éste permanece inhabilitado (z=n).
Parece claro que basta con saber hasta qué punto las entradas antepenúltima y penúltima se
parecen a la secuencia clave: esta información más la última entrada (tercer componente de la
secuencia) permite determinar qué salida se tiene que generar.
Estado Significado
S0 Se ha recibido una secuencia tipo "-, -", que en nada
coincide con la clave.
S1 Se ha recibido una secuencia tipo "-, a", que coincide
con el principio de la clave.
S2 Se ha recibido una secuencia "a, d", que coincide
con la clave.
Que a su vez permite confeccionar la tabla de verdad y/o el diagrama de estados del sistema (ver
figura 6.8).
a/n
S S
a b c d e 0 1
S0 S 1,n S 0,n S 0 ,n S 0 ,n S 0,n b,c,d,e/n b,c,e/n a/n
d/n
S1 S 1,n S 0,n S 0 ,n S 2 ,n S 0,n a/n
b/s
S2 S 1,n S 0,s S 0 ,n S 0 ,n S 0,n c,d,e/n
S
2
Figura 6.8 Tabla de verdad y diagrama de estados del sistema del ejemplo 6.5
Estado Significado
S0 Las últimas entradas recibidas componen la secuencia
"-, -, -", que en nada coincide con la clave.
S1 Las últimas entradas recibidas componen la secuencia
"-, -, a", que coincide con el principio de la clave.
S2 Las últimas entradas recibidas componen la secuencia
"-, a, d", que coincide con parte de la clave.
S3 Las últimas entradas recibidas componen la secuencia
"a, d, b", que coincide con la clave completa.
Podemos notar que con estos cuatro estados la función de salida es del tipo z=f(s), es decir, la
salida depende únicamente del estado y no directamente de la entrada. Esta situación permite
especificar el funcionamiento del sistema mediante una tabla de verdad algo más sencilla (ver
figura 6.9), donde podemos indicar la salida en una columna aparte. En el diagrama de estados
podemos indicar la salida en los nodos (ver figura 6.9).
b,c,d,e
S /n
x 0 a
s a b c d e z
b,c,d,e
S0 S1 S0 S0 S0 S0 n
S1 S1 S0 S0 S2 S0 n b,c,e
S /s a S /n
3 1
S2 S1 S3 S0 S0 S0 n
a
S3 S1 S0 S0 S0 S0 s a d
c,d,e
b S 2/n
Figura 6.9 Segunda tabla de verdad y diagrama de estados del sistema del ejemplo 6.5
El tipo de especificación mostrada en la figura 6.9 (con z=f(s)) se denomina máquina de Moore.
Una especificación como la dada en la figura 6.8 (con z=f(s,x)), se denomina máquina de Mealy.
Un comportamiento entrada-salida dado puede especificarse siempre de ambas maneras. Además,
como se verá más adelante, estas dos variantes de especificación conducen a realizaciones
circuitales características.
_________________________________________________________________________________
Ejercicio 6.4
Proponga un diagrama de estados de tipo Mealy para un sistema igual que el descrito en el
ejemplo 6.5, que detecte la secuencia de entrada de 4 carácteres "a,a,d,e". Repita el ejercicio para
la secuencia "b,a,b,d", con uno de Moore.
__________________________________________________________________________
Por tanto dado un sistema secuencial tiene su interés, si más no por sencillez, poder trabajar con la
especificación mínima de dicho sistema, entendiendo como tal aquélla que utiliza el menor número
posible de estados. En el capítulo 7 veremos que esto tiene implicaciones directas sobre la
complejidad de implementación del sistema.
Vamos, pues, a introducir un método sistemático que permite obtener la especificación mínima a
partir de otra cualquiera de un sistema secuencial. Este método se basa en eliminar sucesivamente los
estados que son redundantes o equivalentes entre sí.
Concretando más, diremos que dos estados son equivalentes cuando el sistema genera la misma
secuencia de salidas para cualquier secuencia de entradas dada, partiendo de cada uno de ellos, siendo
imposible distinguirlos entre sí. Diremos además que dos estados son n-equivalentes cuando,
tomándolos como iniciales, no es posible distinguirlos entre sí después de aplicar cualquier secuencia
de n entradas (es decir, cuando a partir de ellos se genera siempre la misma secuencia de n salidas al
aplicar la misma secuencia de n entradas).
función de transición de estados para cada grupo de p1; si para cada valor de la entrada el
estado futuro pertenece siempre a un mismo grupo no hace falta dividir el grupo: los estados
de dicho grupo son a la vez 1-equivalentes y 2-equivalentes. En caso contrario hay que generar
tantos grupos nuevos como comportamientos diferentes se observen.
III) Repetir el paso II para generar la partición pi+1 (grupos de estados i+1-
equivalentes) a partir de la pi (grupos de estados i-equivalentes) hasta obtener dos particiones
seguidas idénticas, momento en el que el proceso finaliza.
Aunque aparentemente se trata de un método complejo, en realidad su aplicación resulta ser muy
sencilla, como puede comprobarse en el ejemplo 6.6.
Ejemplo 6.6
Sea un sistema cuya entrada recibe una secuencia de bits y que genera la salida "1" únicamente
cuando la secuencia recibida es "1,1,0".
0/0
S 1/0
00
0/0
S S
0 1/0 01
0/0 0/0
S in 1/0 0/0
1/0
1/0
0/0
S1 S
10
1/0
S 11 0/1
1/0
Figura 6.10 Diagrama de estados inicial del sistema del ejemplo 6.6
Un posible diagrama de estados para este sistema es el de la figura 6.10, obtenido partiendo de un
estado inicial Sin desconocido, del cual se pasa a S0 o a S1 en función del valor recibido a la
entrada. Desde S0 y/o S1 este esquema se repite, de manera que, partiendo de Sin o de cualquier
otro estado, se llega a los estados Sij cuando los dos últimos valores de la entrada son "i" y "j"
respectivamente. La salida será "0" para todas las posibles transiciones, excepto cuando, siendo el
estado actual S11, se reciba la entrada "0", caso en que se habrá recibido la secuencia que produce
la salida "1".
s x=0 x=1
S in S 0 ,0 S 1 ,0
S0 S 00 ,0 S 01 ,0
S1 S 10 ,0 S 11 ,0
S 00 S 00 ,0 S 01 ,0
S 01 S 10 ,0 S 11 ,0
S 10 S 00 ,0 S 01 ,0
S 11 S 10 ,1 S 11 ,0
Figura 6.11 Tabla de verdad inicial del sistema del ejemplo 6.6
Si atendemos a los valores de la función de salida obtenemos una primera partición en dos grupos
de los siete estados iniciales: sólo a partir de S11 se generan unas salidas diferentes a las
generadas a partir del resto de estados; por tanto
Del estado S11 no hace falta ocuparse más puesto que ha quedado aislado y por tanto seguro que
no es equivalente a ningún otro. Ahora vamos a generar la segunda partición, para ello tomamos
la tabla de transición de estados para el primer grupo de p1
s x=0 x=1
S in S0 S1
S0 S 00 S 01
S1 S 10 S 11
S 00 S 00 S 01
S 01 S 10 S 11
S 10 S 00 S 01
Observando la tabla vemos que los estados futuros correspondientes a Sin, S0, S00 y S01
pertenecen siempre al mismo grupo de p1 (en concreto se llega a S0, S1, S00, y S01), tanto para
x=1, como para x=0. En cambio los estados futuros correspondientes a S1, y S01 pertenecen al
mismo grupo anterior para x=0 y al otro grupo (el formado únicamente por S11) para x=0. Luego
la segunda partición del conjunto de estados será
Ahora debemos reescribir la tabla de transición de estados para cada uno de los grupos de p2 con
el objetivo de analizar el comportamiento de sus estados futuros respecto de la nueva partición y
ver si se tiene que hacer o no divisiones adicionales.
s x=0 x=1
S in S0 S1 s x=0 x=1
S0 S 00 S 01 S1 S 10 S 11
S 00 S 00 S 01 S 01 S 10 S 11
S 10 S 00 S 01
En la tabla de la izquierda no es posible hacer más divisiones: sea cual sea el estado de partida
(Sin, S0 ,S00,ó S01) para x=0 el estado futuro pertenece al primer grupo de p2 y para x=1 el estado
futuro pertenece al segundo grupo de p2. Algo similar ocurre con la tabla de la derecha; por tanto,
la tercera partición del conjunto de estados será
Como las dos últimas particiones son iguales, el método ha finalizado y se puede especificar el
sistema inicial con solamente tres estados. Para ello basta con tomar un representante de cada
grupo de p3, por ejemplo A=Sin=S0=S00=S10, B=S1=S01 y C=S11, y reescribir en función de
estos tres estados la tabla del sistema y el diagrama de estados (figura 6.12).
1/0
s x=0 x=1
0/0 A B 1/0 C 1/0
A A, 0 B, 0
B A, 0 C, 0 0/0
C A, 1 C, 0
0/1
_________________________________________________________________________________
Ejercicio 6.5
Hasta aquí se ha mantenido, por omisión deliberada, una total ambigüedad respecto a los aspectos
temporales básicos de los circuitos secuenciales. En particular se podrían plantear las siguientes
preguntas: si el estado se actualiza en función del estado anterior y de la entrada, ¿en qué momento
concreto se lleva a cabo esta actualización? ¿A partir de cuándo el valor de la entrada, salida o estado
se considera que es el valor "siguiente"?
Es evidente que la respuesta a este tipo de preguntas no es trivial y que, llegados a este punto, es
necesario introducir los aspectos temporales y/o de sincronización.
Una primera clasificación de los sistemas secuenciales en función de su comportamiento temporal nos
llevará a dos grandes grupos o tipos: los sistemas síncronos y los asíncronos.
El segundo grupo lo consituyen los sistemas síncronos, los cuales incluyen un control temporal de
tipo restrictivo (sincronización) en su funcionamiento: el estado y la salida del sistema pueden
cambiar únicamente cuando lo permite una señal externa de referencia llamada reloj (CLOCK). La
forma ideal de la señal de reloj es un tren periódico de impulsos, que indican los instantes de tiempo
en los que es posible el cambio de estado y de salida.
a)
clock
x(t)
S(t)
z(t)
b)
clock
x(t)
S(t)
z(t)
Es evidente que, a priori, un sistema secuencial asíncrono es más rapido que uno síncrono; esto es así
porque en el sistema síncrono los cambios siempre tienen que esperar a producirse en los instantes en
que ésto está permitido, con las consiguientes demoras. A su vez el comportamiento de un sistema
asíncrono es muy sensible al retardo de sus componentes, problema que se agrava notablemente
cuando aumenta su tamaño o su complejidad, razón que hace que los sistemas asíncronos sean muy
poco utilizados en la práctica. En este texto centraremos nuestra atención casi exclusivamente en los
sistemas secuenciales síncronos.
0 1 2 3 ...
...
S(0) S(1) S(2) S(3)
...
z(0) z(1) z(2) z(3)
En estas condiciones es posible realizar una especificación del funcionamiento de este tipo de sistema
donde entradas, salidas y estados se interpretan como secuencias discretas de valores (ver figura
6.15).
Nótese que en este tipo de sistema se trata de un caso opuesto al de un sistema asíncrono en cuanto a
dependencia del factor tiempo, y que es viable prescindir de éste como variable contínua: en cada
período de reloj (i) el sistema recibe una entrada x(i) y se mantiene en un estado s(i), que determinan
unívocamente tanto la salida en este mismo período z(i) como el valor siguiente (en el siguiente
período de reloj) del estado s(i+1). En otras palabras, el comportamiento de este tipo de sistema
síncrono es más cercano al de los sistemas considerados al principio de este capítulo, en los que se
prescindía de los aspectos temporales.
Sistema
x(i) Secuencial z(i)
Síncrono
Ejemplo 6.7
Sea el sistema síncrono especificado en la figura 6.16. Queremos conocer su respuesta a la serie
de entradas x(0)=a, x(1)=b, x(2)=c, x(3)=a, suponiendo que en el instante inicial (i=0) el estado
es S2.
X = {a,b,c} Z = {0,1}
x(i) Sistema z(i)
S = {S 0 ,S 1,S ,S
2 3
}
i 0 1 2 3 4
x(i) a b c a
s(i) S2 S2 S3 S2 S2
z(i) 1 0 1 1
La especificación de la figura 6.16 contiene toda la información necesaria para obtener tanto la
secuencia de estados como de salidas resultantes a partir de la secuencia de entradas y el estado
inicial descritos en el enunciado. El resultado se recoge en la figura 6.17.
_________________________________________________________________________________
Ejercicio 6.6
Encuentre la secuencia de salida del sistema del ejercicio 6.5 entendido como un sistema
síncrono, a la secuencia de entrada periódica -1,0,1,0,-1,0,1,.. sabiendo que el estado inicial es S1.
¿En qué variaría la respuesta si el estado inicial fuera S0, S2 o S3?
_________________________________________________________________________________
x(i) z(i)
Red
Combinacional
s(i) s(i+1)
Registro de
estado
CLOCK Reset
Ha quedado dicho que el funcionamiento del circuito descrito es ambiguo si no se conoce su estado
inicial; para resolver esta dificultad el registro de estado suele disponer de una entrada adicional,
llamada de reinicialización o "reset", que de forma asíncrona (es decir no dependiente del reloj)
permite llevar al sistema a un estado inicial determinado.
Red Red
x(t) z(t) z(i)
Combinacional Combinacional f(s)
f(x,s), g(x,s)
Red
x(t) Combinacional g(s,x)
s(i) s+ (t) s+ (t)
Registro de s(i)
Registro de
estado
a) b) estado
Figura 6.19 Efectos de una entrada no síncrona a) en una máquina de Mealy, b) en una màquina de Moore
La red de la figura 6.19.a que realiza las funciones de salida y de transición de estados es
combinacional, donde el reloj no desempeña ningún papel. Luego si una de sus entradas tiene una
variación temporal x(t) no síncrona, sus salidas z(t) y s+(t) tampoco serán síncronas y únicamente la
variación del estado actual s(i) estará sincronizada. Nótese que este resultado implica que el sistema
no es síncrono.
Esta asincronía indeseada se debe a que la entrada del sistema influye directamente sobre su salida,
situación identificable con una máquina de Mealy, donde se tiene z=f(s,x). Ahora bien, tal como
muestra la figura 6.19.b, esto no ocurre en el caso de una máquina de Moore, donde la salida sí será
síncrona puesto que es una función del tipo z=f(s).
Como conclusión podemos decir que para asegurar que una máquina de Mealy se comporte de forma
síncrona es necesario que sus entradas hayan sido sincronizadas previamente, condición innecesaria
en el caso de una máquina de Moore. Por esta razón existe en la práctica una cierta preferencia a
trabajar con máquinas de este último tipo. El ejemplo 6.8 ilustra mediante un caso concreto esta
diferencia de comportamientos.
Ejemplo 6.8
Obtener el cronograma de las señales de estado y las salidas de los sistemas 1 y 2 de la figura
6.20.a cuando se aplica a ambos las señales de entrada y de reloj indicadas en la figura 6.20.b. De
acuerdo con las especificaciones dadas en la figura, los sistemas 1 y 2 son respectivamente
máquinas de Mealy y de Moore.
Sistema 1
a) z1(t)
Sistema 1 s x=0 x=1
z2(t)
x(t) 0 0,11 1,01
1 1,11 0,10
Sistema 2 z(t)
s +,z1 z2
CLK Sistema 2
b) s1 s2 x=0 x=1 z
00 01 00 0
CLK
01 10 01 1
10 11 10 1
x(t)
11 00 11 0
s1+s2 +
En el cronograma del sistema 1 (figura 6.21.a) puede observarse que, al no estar sincronizada la
entrada x(t), las salidas tampoco lo están, aunque sí el estado s(t). Esto no ocurre para el sistema 2
(figura 6.21.b), donde a pesar de que la entrada no es síncrona, tanto las señales de estado como
la salida sí lo son (nótese que el sistema sólo hace caso del valor de la entrada en los instantes de
tiempo coincidentes con los impulsos del reloj).
a) b)
CLK CLK
x(t) x(t)
s(t) s1(t)
z1(t) s2(t)
z2(t) z(t)
Figura 6.21 Cronogramas de l ejemplo 6.8 para el sistema 1 (a) y el sistema 2 (b)
_________________________________________________________________________________
Hasta ahora hemos considerado siempre la señal de reloj como un tren periódico de impulsos de
duración despreciable frente a cualquier otra característica temporal del sistema. En la realidad esto
no es así y las señales de reloj son similares a la mostrada en la figura 6.22, que está caracterizada por
dos magnitudes: el ancho del pulso tw y su periodo TCLK. Se denomina ciclo de trabajo al porcentaje
de tiempo que el reloj esta a "1" en cada periodo, es decir, a la relación (tw/TCLK)x100.
CLK(t)
tw TCLK
Las señales de reloj ideales (con impulsos de duración prácticamente nula) definen con precisión
instantes de tiempo en los cuales tienen lugar los cambios del sistema. En cambio, pulsos de reloj de
duración apreciable dificultan una correcta sincronización.
El ejemplo 6.9 ilustra la relación que debe existir entre los retardos y la frecuencia de reloj para
asegurar la correcta sincronización de un sistema secuencial canónico.
Ejemplo 6.9
x Red z
Combinacional
+
s s
Registro de
estado
CLOCK
Una secuenciación de estados correcta implica que el sistema tiene que hacer una única
actualización del estado en cada período de reloj. Esto supone cumplir dos condiciones:
1) Que dentro de un período de reloj haya suficiente tiempo para actualizar el estado, 2) Que no
se haga más de una actualización por período de reloj.
La primera condición se traduce en que el tiempo que tarda el sistema en responder sea inferior a
TCLK, es decir, si tC es el retardo de la red combinacional y tR el del registro:
tC + t R < T CLK
Es habitual en la práctica hacer que esta desigualdad se cumpla claramente, por lo que se escoge
un período de reloj que sea , por lo menos,un número entero de veces mayor que la suma de
retardos (hay varios criterios para fijar este número, habitualmente igual o superior a 3).
La segunda condición se traduce en que el tiempo que tarda el sistema en responder debe ser
superior la duración del intervalo en que se permiten los cambios, es decir
tC + t R > tw
Si esta condición no se cumpliera podría haber más de 1 cambio por período de reloj, con lo que
el sistema dejaría de estar controlado.
_________________________________________________________________________________
Los resultados del ejemplo 6.9 conducen a dos conclusiones importantes; por un lado la frecuencia
máxima a la que un sistema síncrono puede funcionar sin problemas depende de los retardos de éste,
y por otro el lapso de tiempo en que está permitido el cambio de estado debe ser lo más corto posible,
objetivo, en principio, difícil de compatibilizar con la forma real de la señal de reloj. Existen dos
estrategias diferentes de sincronización de los sistemas secuenciales con reloj real:
a) Sincronización por nivel (alto): el valor del estado puede actualizarse sólo cuando el reloj
toma el valor lógico "1", en caso contrario el estado permanece inalterado. Esta estrategia es la
considerada en el ejemplo 6.9. Simétricamente podriamos hablar de sincronización por nivel bajo.
b) Sincronización por flanco: el valor del estado puede actualizarse sólo cuando la señal de
reloj realiza una transición dada. En concreto, cuando este cambio es un paso de "0" a "1" se habla de
sincronización por flanco ascendente, mientras que se habla de sincronización por flanco descendente
cuando el instante de referencia es el paso de "1" a "0". Es evidente que, al ser los instantes de cambio
más breves, la sincronización por flanco supone una aproximación mayor al caso ideal.
CLOCK
b) c) d)
Clock Clock Clock
6.3 Biestables
La presencia del registro de estado implica que para poder diseñar sistemas secuenciales en forma
canónica son necesarios elementos capaces de almacenar información (en concreto el estado actual)
durante un cierto tiempo.
En concreto, para realizar en la práctica estos sistemas se tendrá que codificar previamente el estado
utilizando el número de bits necesarios en función del número de estados posibles (recuérdese que
con n bits se pueden codificar 2n estados). Por tanto, almacenar el valor del estado se traduce en
definitiva en almacenar un número fijo de bits. Podemos imaginar el registro de estado como una
agrupación de módulos iguales, almacenando cada uno de ellos un solo bit (ver figura 6.25).
s0 s 0+
Codificación Codificación
s1 s 1+ del estado
del estado . .
actual . . futuro
. . s+ (t)
s(t) sn s n+
Clock Reset
Los módulos utilizados para la memorización y/o actualización de cada bit se denominan biestables.
A continuación se especifica el funcionamiento de los biestables más comúnmente utilizados. Para
ello se supondrá que la señal de reloj es ideal (en forma de tren de impulsos), y se dejan para más
adelante cuestiones como la realización circuital de biestables y/o la sincronización cuando el reloj es
no ideal.
6.3.1 Biestable D
D D Q Q
Clock Q Q
Su funcionamiento es como sigue: en cada impulso de reloj la salida toma el valor de la entrada, con
lo que queda este valor invariante hasta que el reloj vuelva a permitir otro cambio. Se trata ,pues, de
un circuito secuencial y como tal puede ser descrito con las técnicas presentadas en este mismo
capítulo.
Tanto la entrada como la salida pueden tomar únicamente los valores "0" y "1". Parece razonable
asignar al sistema dos estados, uno correspondiente a las evoluciones de la entrada que hacen que la
salida valga "0" y otro que agrupa las evoluciones que hacen que la salida sea "1". El diagrama de
estados y la tabla de verdad correspondientes se muestran en la figura 6.27; nótese que se trata de una
màquina de Moore con una función de salida trivial (z=Q).
1 Q D=0 D=1
0/0 1/1 0 0,0 1,0 Q +,z
0 1
0 1 0,1 1,1
Otra forma de describir la funcionalidad del biestable es la tabla de excitación, figura 6.28, que
contiene la misma información que la figura 6.27. La interpretación es como sigue: si el estado actual
toma el valor dado en la columna Q y se desea que el estado siguiente sea Q+, la entrada actual debe
tomar el valor indicado en la columna D.
Q Q+ D
0 0 0
0 1 1
1 0 0
1 1 1
A partir de las figuras 6.27 o 6.28 es fácil escribir una expresión algebraica para la función de
+
transición de estados de este tipo de biestable: Q = D .
Ejemplo 6.10
Una aplicación adicional del biestable D es como retardador (el nombre D viene precisamente del
inglés delay). En este ejemplo se muestra un cronograma (ver figura 6.29) que pone en evidencia
este comportamiento.
CLK
D(t)
Q(t)
_________________________________________________________________________________
6.3.2 Biestable JK
J =0 J =0 J =1 J =1
Q K=0 K=1 K=0 K=1
J J Q Q
Clock 0 0,0 0,0 1,0 1,0 Q +,z
K K Q Q 1 1,1 0,1 1,1 0,1
Un biestable JK síncrono es un circuito secuencial elemental con dos entradas de datos (J y K), otra
de sincronización (reloj) y una salida (Q), donde el valor del estado coincide con el de la salida,
siendo su comportamiento el descrito en la tabla de la figura 6.30.
El diagrama de estados del biestable JK se muestra en la figura 6.31, junto con la expresión algebraica
de la función de transición de estados.
10,11
00,01 0/0 1/1 00,10 Q+ = Q J + QK
01,11
+
Q Q J K
0 0 0 X
0 1 1 X
1 0 X 1
1 1 X 0
Ejemplo 6.11
Realizar un biestable JK a partir de un D. Para ello basta con fijarnos en la ecuación característica
del biestable JK, y dado que en un biestable D el estado futuro es igual a la entrada, obtenemos
una posible implementación: Q + = D= JQ + QK
J
D Q Q
Clock
Ck Q Q
K
_________________________________________________________________________________
Ejercicio 6.7
6.3.3 Biestable T
Un biestable T (toggle) síncrono es un circuito secuencial elemental con una entrada de datos (T),
otra de sincronización (reloj) y una salida (Q), donde el valor del estado coincide con el de la salida,
siendo su comportamiento el descrito en la figura 6.34.
Q T=0 T=1
T T Q Q 0 0,0 1,0 Q +,z
Clock Q Q 1 1,1 0,1
La descripción del funcionamiento del biestable es la siguiente: si la entrada toma el valor T=1, el
estado se actualizará cambiando de valor, es decir, si el valor actual de la variable de estado es Q=0,
el valor siguiente será Q+=1, y viceversa. En caso contrario, es decir, si la entrada toma el valor "0",
la variable de estado no cambia de valor al actualizarse (Q+=Q).
Q Q+ T
1 0 0 0
+
0 0/0 1/1 0 Q = Q⊕ T 0 1 1
1 0 1
1 1 1 0
El diagrama de estados del biestable T se muestra en la figura 6.35, junto con la expresión algebraica
de la función de transición de estados y la tabla de excitaciones.
_________________________________________________________________________________
Para finalizar el capítulo vamos a presentar algunas implementaciones circuitales de biestables, ya sea
a base de puertas lógicas genéricas o bien mediante transistores MOS. Para ello estudiaremos en
primer lugar una estructura básica de referencia, a la que llamaremos biestable SR, a partir de la cual
es posible construir en forma de mejoras o ampliaciones otros tipos de biestable, incluyendo diversas
modalidades de sincronización.
Consideremos el circuito de la figura 6.36.a, compuesto simplemente por dos puertas NOR. El
análisis de este circuito requiere tomar algunas precauciones: los lazos de realimentación hacen que
los valores a la salida, QA y QB, sean a su vez entradas, lo que genera una serie de recurrencias que,
mezcladas con los retardos de las puertas, conviene tener en cuenta.
a) b)
R R qA
QA QA
QB QB
S S qB
Una forma de enfocar este análisis es la apuntada en la figura 6.36.b, donde se supone que la
respuesta de las puertas NOR es instantánea y que el retardo de dichas puertas se concentra en los
buffers puestos entre sus salidas y las del circuito. De esta manera podemos considerar qA y qB como
funciones lógicas de R, S, QA y QB, y que, después de un cierto retardo, qA y qB se convierten
respectivamente en los valores siguientes de QA y QB, que a su vez generan nuevos valores de qA y
qB, etc.
Si por ejemplo suponemos R=0, S=1 y aplicamos el tipo de análisis acabado de sugerir, llegaremos a
la conclusión de que, cualesquiera que fueran los valores iniciales de QA y QB, sus valores finales se
estabilizan en QA=1, QB=0. El resultado simétrico se obtiene para R=1, S=0: las salidas acaban
estabilizándose en los valores QA=0, QB=1. Asimismo, para R=S=1 las salidas se estabilizan en los
valores QA=QB=0.
La situación más curiosa se produce para la combinación de entrada R=S=0, que conduce al resultado
intermedio q A = QB , q B = QA , resultado nada conflictivo si los valores iniciales de QA y QB son
diferentes (en este caso estos valores iniciales permanecen inalterados), pero que lleva a que las
salidas del circuito oscilen indefinidamente entre "0" y "1" si los valores iniciales de QA y QB son
iguales.
Una consecuencia de lo anterior es que la aplicación de la combinación de entrada R=S=0 tras haber
aplicado R=S=1 conduce irremisiblemente al circuito a la inestabilidad. Por esta razón la
combinación de entrada R=S=1 debe ser evitada cuando se pretenda utilizarlo.
R
Q S R Q+
R 0 0 Q
R Q Q
0 1 0
S S Q Q 1 0 1
Q 1 1 -
S
Ejercicio 6.8
La figura 6.38 presenta una alternativa de realización de un biestable asíncrono, esta vez a nivel
de layout. Se pide obtener los esquemas equivalentes a nivel de transistores y a nivel de puertas.
Estudiar su comportamiento como biestable, a imagen del desarrollo hecho para el RS, en
función de las entradas A y B. ¿Existe alguna combinación que sea necesario prohibir? Compare
su funcionamiento con el de un biestable RS.
VDD
A B
Q Q
VSS
_________________________________________________________________________________
El biestable SR presentado en el apartado anterior es claramente un circuito asíncrono, puesto que una
variación en el valor de alguna de sus entradas provoca siempre la reacción de éste. Ahora bien, es
sencillo introducir una sincronización por nivel sin más que realizar el producto lógico de cada
entrada con una señal de reloj. El circuito resultante se muestra en la figura 6.39, donde resulta fácil
ver que cuando CLK=0, S ⋅ CLK = R ⋅ CLK = 0 , es decir, la estructura de puertas NOR tiene entradas
"0", por lo cual conserva el valor anterior de Q (memorización). En el caso contrario, es decir cuando
CLK=1, las entradas de la estructura NOR coinciden con S y R y el circuito actualizará sus salidas de
acuerdo con la tabla de la figura 6.37.
R Q
R R Q Q
CLK CLK
S S Q Q
S Q
Ejemplo 6.12
Obtener, a partir de la estructura de un biestable SR activo por nivel, otro de tipo D. Observando
la tabla de funcionamiento del biestable SR (figura 6.37), para obtener un biestable D a partir de
un SR sólo hay que forzar que los valores de las entradas sean siempre contrarios, cosa que puede
hacerse utilizando un inversor (ver figura 6.40).
R S R Q+
Q
0 0 Q D Q+
0 1 0 0 0
1 0 1 1 1
D Q 1 1 -
CLK S
Una aplicación habitual de este tipo de biestable D es "cazar" un bit (con CLK=1) y mantenerlo
después durante un tiempo arbitrario bloqueando el reloj (CLK=0), motivo por el que suele
denominársele latch (cerrojo).
_________________________________________________________________________________
Ejercicio 6.8
R
K Q
CLK
J Q
S
_________________________________________________________________________________
Es posible realizar con facilidad biestables utilizando transistores MOS. Así podemos traducir
directamente los logigramas presentados a puertas nMOS o CMOS; en la figura 6.42 se muestra un
ejemplo concreto de biestable D realizado con tecnología nMOS.
Q Q
CLK
D CLK
D
Otra posibilidad a contemplar en la realización de biestables, ésta de especial interés si se trabaja con
tecnología CMOS, es recurrir a estructuras hechas a base de puertas de transmisión e inversores. La
figura 6.43 muestra otro ejemplo de biestable sincronizado por nivel.
D Q
CLK Q
CLK
D
Q Clear
CLK D
Q
Q
Clear
Intervalos de
funcionamiento asíncrono
Figura 6.44 Biestable D con entrada asíncrona de puesta a "0" y reloj ideal
Ejercicio 6.9
Modifique la estructura de la figura 6.44 para añadir al biestable D una entrada asíncrona que
fuerce un "1" (preset) a la salida.
_________________________________________________________________________________
D D
Q S Q Q
D D Q Q
Q R Q Q
Clock Q Q
Clock
Nótese que cuando el reloj está a "1" el primer biestable (master) actualiza su contenido de acuerdo
con el valor de la entrada D, maniobra que no afecta al segundo biestable (slave) hasta que el reloj
pase a "0", momento en el que éste también se actualizará, de forma que globalmente el circuito se
actualiza de acuerdo con el valor de D sólo cuando el reloj ha pasado de "1" a "0", es decir, cuando se
produce un flanco descendente.
La figura 6.46 muestra el cronograma de funcionamiento del circuito de la figura 6.45 para una
posible evolución de la entrada D a partir de los valores iniciales R=1 y Q=S=0. Allí puede
observarse el efecto recién comentado: el primer biestable actúa de acuerdo con la entrada cuando
CLK=1 y se inhibe para CLK=0, mientras que el segundo biestable actúa de acuerdo con la salida del
primero para CLK=0 y se inhibe para CLK=1. El efecto global (observando únicamente las señales
CLK, D y Q) es claramente el de un biestable D (Q+=D) sincronizado por flanco descendente.
CLK
Cambiando el primer biestable sincronizado por nivel en la figura 6.45 por otro de un tipo distinto
(JK, T) podremos conseguir dicho biestable sincronizado por flanco de bajada. Si se desea
sincronismo por flanco de subida basta con invertir el reloj que controla ambos biestables.
Cuestiones
C6.1 Proponga ejemplos de máquinas secuenciales con un número infinito de estados posibles.
C6.2 Considere la siguiente afirmación: "Dos estados de un sistema secuencial son (i+1)-equivalentes
si son 1-equivalentes y sus estados futuros, para cualquier combinación de variables de entrada, son i-
equivalentes". Justifíquela y relaciónela con el método de minimización del número de estados
propuesto.
C6.3 Compare una descripción de Moore con una de Mealy para el mismo sistema secuencial. ¿Cuál
de las dos debe tener más estados y por qué? Sugerencia: analice un sistema particular (detector de
secuencia binaria) y luego generalice el resultado.
C6.5 Dibuje el cronograma de salida de los sistemas detectores de secuencia del ejemplo 6.5, cuando
la entrada es exactamente la secuencia a detectar. Relacione el hecho de que un sistema de Moore
"filtre" las variaciones de las entradas no síncronas con el reloj, con el retardo de un período de reloj
observado entre las salidas de ambos sistemas.
C6.6 Para que un registro de estado, en una implementación canónica de un sistema secuencial,
funcione correctamente, existen unas restricciones temporales, que se concretan en la necesidad de
mantener su entrada estable desde un cierto tiempo antes de la señal de reloj (tiempo de set-up) y
mantenerla estable durante un cierto tiempo depues de ésta (tiempo de hold), tal como se ve en la
figura.
Ck
t
S+
t
tSU tH
Discuta qué variaciones deberemos introducir en los razonamientos de temporización del ejemplo
6.9 para tener estos datos en cuenta.
C6.7 Implemente un biestable tipo T a partir de un JK y puertas lógicas. Repita la cuestión partiendo
de un biestable D.
C6.8 Implemente un biestable tipo JK a partir de un T y puertas lógicas. Repita la cuestión partiendo
de un biestable D.
C6.9 Imagine un biestable T asíncrono. Dibuje su respuesta temporal cuando la entrada T vale 1.
¿Sugiere esto alguna utilidad práctica?
D Q
Ck Ck
Ck Ck
Problemas
P6.1 Describa a través de su diagrama de estados y su tabla de transiciones un sistema secuencial con
dos entradas, X e Y, una salida, Z, y 8 estados posibles.
S ∈{0,1, 2, 3, 4, 5, 6,7} S + = (S + X (1 − 2Y ))
MOD8
1 si ( X = 1,Y = 0, S = 7) o (X = 1, Y = 1, S = 0)
X,Y , Z ∈ {0,1} Z =
0 en otro caso
P6.2 Proponga un diagrama de estados para un sistema secuencial síncrono detector de secuencias
binarias de longitud 4 palindrómicas (es decir, simétrica respecto al centro de la secuencia).
P6.3 Dada la descripción a nivel de tabla de transiciones del siguiente sistema secuencial síncrono,
encuentre otra descripción equivalente con el mínimo número de estados posibles.
S+, z(x1x0)
S 00 01 10 11
A G,a F,b C,c D,a
B E,a H,b C,c G,a
C F,b C,a A,b E,c
D F,c C,c D,c E,b
E B,c C,c G,c D,b
F G,a H,b C,c E,a
G F,c C,c G,c D,b
H D,a F,b D,c G,a
0/0
A 1/0
B 1/0 C
0/0
1/0
0/0
1/1 1/1
D 1/1 E
0/0
F
0/0 0/0
P6.5 Para el sistema del problema anterior, y supuesto un estado inicial E, encuentre la secuencia de
salidas cuando la de entrada es la indicada en el cronograma.
Ck
S+ (x1x0)
S 00 01 10 11 z
S0 S0 S3 S1 S2 0
S1 S0 S2 S0 S2 1
S2 S1 S2 S0 S0 1
S3 S2 S0 S3 S1 0
¿Se trata de una máquina de Mealy o de Moore?. Dibuje su diagrama de estados. Dibuje también
la respuesta temporal cuando las entradas son las del siguiente cronograma y el estado inicial es
S0.
Ck
x1
x0
P6.7 Encuentre la evolución temporal de los dos sistemas de la figura cuando su entrada CE vale 1,
interpretando su salida como un número codificado en binario (X=X2X1X0). Parta del estado en que
las salidas de los tres biestables valen 0. Suponga despreciables los retardos introducidos por los
propios biestables y las puertas. Repita el problema sin despreciar dichos retardos. Razone cuál de
ambos diseños es mejor. ¿Cuál es la evolución cuando CE=0? Dibuje un diagrama de estados para el
sistema.
V DD V DD
CE T T T CE T T T
Q Q Q Q Q Q
Q Q Q Ck Q Q Q
Ck
X0 X1 X2 X0 X1 X2
P6.8 Analice el siguiente layout. Obtenga su esquema equivalente a nivel de transistores y a nivel de
puertas lógicas. Compruebe que se trata de un biestable de tipo RS sincronizado por nivel.
Clock
VDD
R S
VSS
Q Q
J
Q
Ck
K Q
Asinc.
P6.10 Analice el funcionamiento del siguiente circuito como biestable. Obtenga un circuito
equivalente a nivel de puertas para CK=1 y después hágalo para CK=0. Identifique el tipo de
biestable así como el tipo de sincronización.
V DD
D Q
VSS
CK CK
A Q
B
CLK
Ck
En este capítulo se describirán los métodos básicos de análisis y de diseño de circuitos secuenciales
síncronos. A continuación se presentarán las estructuras o módulos secuenciales de uso más
frecuente, incluyendo un breve inciso referido a las memorias de lectura y escritura.
El capítulo presenta en primer lugar un procedimiento sistemático que permite tanto el análisis como
la síntesis de sistemas secuenciales síncronos en formato canónico, es decir en forma de red
combinacional más biestables. De la misma forma que ocurría en el diseño combinacional, los
módulos secuenciales estándar surgen como respuesta a las necesidades más habituales, y al mismo
tiempo son herramientas que facilitan el diseño de sistemas más complejos; en este capítulo se
presentan los módulos secuenciales más comunes, concretamente los registros, los contadores y los
circuitos lógicos programables, estos últimos de utilización muy extendida en la actualidad.
Finalmente el capítulo realiza una breve incursión en las memorias de lectura/escritura y las
configuraciones de memorización básicas realizadas con transistores MOS.
Existen procedimientos sistemáticos y estandarizados para analizar y/o diseñar sistemas secuenciales
síncronos en forma canónica. Como se verá enseguida, estos métodos son utilizables manualmente
siempre que el número de variables no sea excesivo, situación en la cual es preferible recurrir o bien
al diseño no canónico (por ejemplo, el basado en estructuras o módulos estándar) o bien a la ayuda de
herramientas informáticas (diseño asistido por ordenador).
Entendemos por análisis el procedimiento que, partiendo de una realización de un sistema lógico
(esquema circuital, logigrama, etc.), conduce al conocimiento de su funcionalidad; en otras palabras,
analizar un circuito lógico supone ser capaz de especificar de forma completa y normalizada su
funcionamiento.
© 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.
258 Diseño digital
________________________________________________________________________________
n m
x Red z
Combinacional k
q f
r Registro de
estado
CLK Reset
1- Identificación de las variables del sistema. Mediante inspección del circuito, identificar las
variables de entrada (x), de salida (z) y las que caracterizan el estado (q).
3- Obtención de las funciones de entrada a los biestables f(x,q). Las entradas a los biestables
del circuito también son función, en general, de las variables de entrada y de estado. Por tanto,
analizando la parte correspondiente del circuito combinacional es posible obtener sus
expresiones.
4- Construcción de las tablas de verdad de las funciones de entrada a los biestables. A partir
de las expresiones algebraicas obtenidas en el paso anterior es inmediato construirlas.
Los dos ejemplos que siguen a continuación ilustran la aplicación de este procedimiento de análisis a
dos casos concretos.
Ejemplo 7.1
Obtenga una especificación del funcionamiento del circuito secuencial de la figura 7.2.
x2
x1 J Q
z
K Q
Clock
Es evidente que se trata de un circuito secuencial síncrono en forma canónica, puesto que consta
de un único biestable (tipo JK, sincronizado por flanco ascendente) y una red combinacional. Por
tanto, aplicaremos el procedimiento sistemático de análisis descrito.
1- Identificación de las variables: El circuito propuesto tiene dos entradas (x1 y x2) una salida
(z), y una variable de estado (la salida del biestable, Q). Luego son posibles cuatro
combinaciones de entrada, dos de salida y dos estados.
2- Identificación de la función de salida: Por inspección del circuito se obtiene que la salida es
función de una de las entradas y de la variable de estado. Una consecuencia de esto es que se trata
de una máquina de Mealy.
z= Q⋅ x 2 + Q ⋅ x 2 = Q ⊕ x 2
3- Obtención de las funciones de entrada a los biestables: Se observa que las funciones de
entrada a los biestables en este caso concreto dependen únicamente de las entradas del circuito y
no de la variable de estado.
J = x 2 x1 K = x 2 x1
4- Tabla de verdad de las funciones de entrada a los biestables: Es Inmediato obtenerla a partir
de las expresiones algebraicas del paso 3.
J K
Q X2=X1=0 X2=0 X1=1 X2=1 X1=0 X2=X1=1
0 0 0 0 0 1 0 0 1
1 0 0 0 0 1 0 0 1
J K Q+
0 0 Q
Q + = Q J + QK
0 1 0
1 0 1
1 1 Q
Si se conocen los valores de las entradas a los biestables (J, K) en función de los valores de las
entradas (x1, x2) y de la variable de estado (Q) y si también se conoce el valor próximo de la
variable de estado (Q+) en función de Q, J, y K, es fácil obtener una tabla indicando el valor de
Q+ en función de x1, x2 y Q. Esta tabla corresponde a la función de transición de estados.
Podemos integrar en la misma tabla la función de salida, cuya expresión algebraica se obtuvo en
el paso 2.
Q+ , z
Q X2=X1=0 X2=0 X1=1 X2=1 X1=0 X2=X1=1
0 0, 0 0, 0 1, 1 0, 1
1 1, 1 1, 1 1, 0 0, 0
_________________________________________________________________________________
Ejemplo 7.2
Obtenga una especificación del funcionamiento del circuito secuencial de la figura 7.4. Indíquese
una posible utilidad del circuito, si las entradas varían a un ritmo muy inferior al del reloj del
sistema.
J1 K1 J 0 K0 CLK
CLK
Q1 Q1 Q0 Q0
OUT
x
1
x z
0
Una inspección preliminar de la figura 7.4 permite identificar la parte recuadrada como un
circuito síncrono canónico, por lo que podemos aplicarle el método sistemático de análisis y
realizar las interpretaciones globales a posteriori.
Identificación de las variables: El circuito tiene dos entradas (x1 y x0), una salida (z), y dos
variables de estado (Q1 y Q0). Luego son posibles cuatro combinaciones de entrada, dos de salida
y cuatro estados.
Obtención de la función de salida: Se trata de una máquina de Mealy: la salida es función de las
entradas y de las variables de estado.
Obtención de las funciones de entrada a los biestables: En este caso las funciones de entrada a
los biestables dependen únicamente de las variables de estado.
J1 = Q0 K 1 = Q0 J 0 = Q1 K0 = Q1
Nótese que cada biestable tiene como entradas una misma variable directa y su negada, por lo que
funciona como si fuera de tipo D:
D1 = Q0 D0 = Q1
Tabla de verdad de las funciones de entrada a los biestables: Inmediata a partir de las
expresiones del paso anterior. Nótese que estas funciones son independientes de x1 y x0.
D1 D0
Q1 Q0 X1=X0=0 X1=0 X0=1 X1=1 X0=0 X1=X0=1
0 0 01 01 01 01
0 1 11 11 11 11
1 0 00 00 00 00
1 1 10 10 10 10
Tabla de verdad de la función transición de estados: Para escribirla basta recordar que en un
biestable D el estado siguiente coincide con la entrada actual (Q+=D), por lo que la tabla de
verdad de la función transición de estados será idéntica a la obtenida en el paso anterior, que
reproducimos a continuación añadiendo la función de salida.
(Q1 Q0)+, z
Q1 Q0 X1=X0=0 X1=0 X0=1 X1=1 X0=0 X1=X0=1
0 0 0 1, 0 0 1, 1 0 1, 1 0 1, 1
0 1 1 1, 0 1 1, 1 1 1, 0 1 1, 0
1 0 0 0, 0 0 0, 1 0 0, 0 0 0, 0
1 1 1 0, 0 1 0, 1 1 0, 1 1 0, 0
Diagrama de estados: Inmediato a partir de la tabla anterior. Nótese que la variación de estados
del sistema es automática con el reloj e independiente de las entradas.
00, 0 01 00, 0
01, 1 10, 1 10, 0 01, 1
11, 1 11, 0
00 11
10, 0 10, 1
00, 0 11, 0 11, 0 00, 0
01, 1 10 01, 1
Interpretación: Dado que por una parte la salida OUT es el producto lógico de z y CLK y por
otra las entradas x1 y x0 tienen una variación lenta respecto a CLK, podemos pensar que la
misión del sistema es realizar algún tipo de manipulación de la señal de reloj. Podemos
comprobar esto mediante un cronograma como el de la figura 7.5.
CLK
x1
x0
Q1
Q0
OUT
El cronograma revela que, mientras la entrada está fija en los valores x1=1 x0=0, el circuito
elimina uno de cada dos pulsos de reloj, quedando la salida como un reloj cuya frecuencia y ciclo
de trabajo son la mitad de los de CLK. Asimismo cuando las entradas están fijas en x1=x0=1 el
circuito elimina tres de cada cuatro pulsos de reloj, siendo la frecuencia y el ciclo de trabajo de la
salida la cuarta parte de los de CLK.
Puede completarse esta interpretación comprobando que, de acuerdo con el diagrama de estados
o la tabla de verdad del circuito, se tiene OUT=0 (o sea z=0) para x1=x0=0 y OUT=CLK (o sea
z=1) para x1=0 x0=1. Con esto podemos concluir diciendo que el circuito puede utilizarse como
divisor de frecuencia programable.
_________________________________________________________________________________
Ejercicio 7.1
Q1
T Q Z
x1 Q
x0 x1 x Q0 Q1 S
Q0
T Q 0 0 a 0 0 S1
0 1 b 0 1 S2
Q c S3
x0 1 0 1 0
Clk 1 1 d 1 1 S4
_________________________________________________________________________________
El método consta de tres fases: I) obtención de una especificación normalizada, II) traducción de la
especificación a nivel binario (variables lógicas), y III) obtención y optimización de las funciones de
entrada a los biestables y de salida del sistema. A continuación se indican con detalle los pasos
concretos a seguir:
1- Identificar las entradas, las salidas y los estados del sistema. Dicha identificación debe
hacerse a partir de una primera especificación del funcionamiento del sistema. Con frecuencia
suele ocurrir que la especificación inicial sea verbal o, en general, no normalizada, por lo que
identificar los datos con los que tiene que trabajar el sistema no es siempre inmediato.
3- Codificar las variables del sistema. Es decir, si no lo están ya, traducir a variables lógicas
los conjuntos de entradas, salidas y estados. En ausencia de restricciones concretas es
recomendable codificar utilizando el menor número posible de bits (recuérdese que para
codificar N informaciones son necesarios como mínimo n bits, cumpliéndose que 2n•N). Con
esto la especificación del sistema estará hecha a nivel binario.
5- Construir la tabla de verdad de las funciones de entrada a los biestables. Se trata de seguir
el mismo procedimiento que en el caso de análisis pero en sentido contrario: a partir de la
tabla de verdad de la función transición de estados q+(x,q) y de la tabla de excitaciones de los
biestables, obtener los valores f(q, x) que es necesario introducir en las entradas de éstos.
6- Una vez obtenida la tabla de verdad de las funciones de entrada a los biestables, es
interesante escribir sus expresiones algebraicas y, eventualmente, simplificarlas. Lo mismo
suele hacerse con las funciones de salida. En ambos casos son aplicables los métodos de
simplificación presentados en capítulos anteriores.
Al igual que en el caso de análisis, es pertinente ilustrar este método de síntesis con la ayuda de
algunos ejemplos concretos.
Ejemplo 7.3
Diseñe un contador binario módulo 5 (capaz de dar a su salida valores entre 0 y 4, en código
binario) síncrono. El contador tiene dos posibles entradas, "C" (contar) y "NC" (no contar), de
manera que cuando la entrada es "C" el valor de la salida se incrementa con cada período de reloj
siguiendo el ciclo 0,1,2,3,4,0,1... y que cuando toma el valor "NC" la salida permanece fija en el
último valor alcanzado.
NC NC NC NC NC
S 0 /0 C S 1/1 C S 2 /2 C S 3 /3 C S 4 /4
3- Codificación de las variables: Como sólo hay dos posibles entradas basta con una variable
lógica (x) para codificarlas. Para los estados Si podemos optar por codificar el valor "i" en
binario, para lo cual necesitaremos tres variables de estado (q2, q1, q0). Como hay tantos estados
como salidas, parece adecuado escoger la misma codificación para las salidas que para los
estados, por lo que harán falta tres variables (z2, z1, z0). Con esto las funciones de salida son
triviales: z2=q2, z1=q1, z0=q0.
Salida o z z z
2 1 0
estado q2 q 1 q 0
S 0 /0 0 0 0 Entrada x
S 1 /1 0 0 1
NC 0
S 2 /2 0 1 0
C 1
S 3 /3 0 1 1
S 4 /4 1 0 0
4- Elección de los biestables: Escogemos de forma arbitraria biestables tipo T. Como tenemos
tres variables de estado hacen falta tres biestables. Dado que la salida del contador coincide con
su estado, el esquema básico del circuito será de la forma dada en la figura 7.9, donde sólo falta
realizar las funciones de entrada a los biestables T2, T1, y T0 para completarlo.
Q2
T2 T Q z2
Q
Q1
T1 T Q z1
Clock Q
Q0
T0 T Q z0
Q
T2 T1 T0
Q2 Q1 Q0 x=0 x=1
0 0 0 0 0 0 0 0 1
0 0 1 0 0 0 0 1 1
0 1 0 0 0 0 0 0 1
0 1 1 0 0 0 1 1 1
1 0 0 0 0 0 1 0 0
1 0 1 X X X X X X
1 1 0 X X X X X X
1 1 1 X X X X X X
7- Esquema lógico resultante: A partir de las expresiones algebraicas del paso anterior se obtiene
x T Q z2
Q
T Q z1
Q
T Q z0
Clock Q
Ejemplo 7.4
q1
J Q
x K Q
CLK
z
J Q
K Q
q0
El circuito de la figura 7.11 es una máquina de Mealy con una entrada (x), una salida (z) y dos
variables de estado (q1 y q0). Un análisis de la parte combinacional permite obtener las siguientes
expresiones algebraicas.
J1 = xq1 J0 = x
z = x ⊕ q0
K1 = x K 0 = xq0
Las expresiones anteriores, junto con el conocimiento de la funcionalidad de los biestables JK,
permiten obtener sucesivamente las tablas de verdad de las funciones de entrada a los biestables y
de las funciones de salida y de transición de estados, que mostramos a continuación.
x=0 x=1 + +
q1 q0 , z
q1 q0 J1 K1 J0 K0 J1 K1 J0 K0 x=0 x=1
0 0 0 0 0 0 0 1 1 0 0 0, 0 0 1, 1
0 1 0 0 0 0 0 1 1 1 0 1, 1 0 0, 0
1 0 0 0 0 0 1 1 1 0 1 0, 0 0 1, 1
1 1 0 0 0 0 1 1 1 1 1 1, 1 0 0, 0
En la figura 7.12 se muestra la tabla de verdad y el diagrama de estados del circuito analizado,
tras hacer una decodificación de los estados para simplificar la notación.
1/1
S +, z
S A B
x=0 x=1 0/0 1/0 0/1
A A, 0 B,1
B B, 1 A,0
C C, 0 B,1
D D, 1 A,0 C 1/1 1/0 D
0/0 0/1
Figura 7.12 Tabla de verdad y diagrama de estados del circuito de la figura 7.11
Una forma de simplificar la implementación del sistema es ver si es viable hacerla con menos
biestables, es decir, ver si se puede reducir el número de estados. La aplicación del método de
minimización da lugar a la serie de particiones siguiente, que indica que en realidad basta con dos
estados para especificar el funcionamiento del sistema:
p0 = (A, B,C, D)
A ≡ C
p1 = (A,C) (B, D) ⇒
B ≡ D
p =p
2 1
q+ , z q+ , z D
q x=0 x=1 q x=0 x=1 x=0 x=1
A A, 0 B,1 0 0, 0 1, 1 0 1
B B, 1 A,0 1 1, 1 0, 0 1 0
D=z =x q
D q
D Q
z
Clock Q
x
_________________________________________________________________________________
Ejercicio 7.2
Para el diagrama de estados de la figura 7.14, proponga un diseño con biestables JK.
1/0 1/0
0/1 A B C 1/1
0/0 0/0
Si el diseño propuesto contempla estados que no se dan nunca, realice el análisis de dicho
sistema, y complete el diagrama de estados.
_________________________________________________________________________________
En el apartado anterior hemos presentado métodos que permiten analizar y diseñar sistemas
secuenciales síncronos cualesquiera. Sin embargo es evidente que dichos métodos son plenamente
operativos sólo cuando el número de estados y/o variables es reducido. Al igual que ocurría en el caso
de sistemas combinacionales, algunos circuitos de utilización más frecuente se han estandarizado y
existen como módulos específicos ya sea como circuitos integrados comerciales MSI, LSI o bien
formando parte de librerías para entornos de diseño custom VLSI. Los más característicos de entre
estos módulos secuenciales son los registros y los contadores, que serán el objetivo de los próximos
apartados.
Un aspecto adicional que conviene tener presente es que la existencia de estos bloques estandarizados
permite acometer diseños de mayor complejidad que los que serían abordables razonablemente
mediante el procedimiento de síntesis presentado en la sección anterior.
7.2.1 Registros
Un registro es un circuito secuencial cuya principal función es almacenar un vector de n bits durante
un tiempo indefinido. La figura 7.15 presenta el esquema genérico de un registro de n bits
sincronizado por flanco ascendente.
I
I n-1
... I 1 I0
CLK Registro
RESET
LOAD de n bits
...
Q n-1 Q1 Q0
La descripción del funcionamiento de este registro gira en torno a la entrada LOAD (carga en
paralelo). Así, si LOAD=0 el registro mantiene inalterado su contenido tras el flanco ascendente de la
señal de reloj Qi+=Qi (con 0<i<n-1), mientras que para LOAD=1 tras el próximo flanco ascendente
del reloj los valores de las entradas Ii se cargan en el registro: Qi+=Ii. Una especificación de esta
funcionalidad "síncrona" sería:
I(i) si LOAD(i) =1
Q + = Q(i + 1) =
Q(i ) si LOAD(i )= 0
Por otro lado los registros suelen disponer de una entrada adicional de reinicialización (CLEAR o
RESET) que permite cargar de forma asíncrona, es decir, inmediata e independientemente del reloj,
un valor determinado (habitualmente Qi=0). En consecuencia, el funcionamiento síncrono antes
descrito debe entenderse como el que se produce para el valor de la señal RESET=0.
Una posible realización del registro de la figura 7.15, basada en la utilización de biestables D con
entrada asíncrona de reset y multiplexores de dos canales, se propone en la figura 7.16 para n=4 bits.
Con cada flanco ascendente del reloj el valor presente a la entrada Di de cada biestable se transfiere a
su salida; así, para LOAD=1 el valor que se transfiere es Qi+=Ii (carga en paralelo), mientras que para
LOAD=0 el valor transferido es Qi+=Qi (memorización).
I3 I2 I1 I0
1 0 1 0 1 0 1 0
LOAD s MUX s MUX s MUX s MUX
y y y y
CLK
D D D D
RS RS RS RS
Q Q Q Q
RESET
Q3 Q2 Q1 Q0
Ejemplo 7.5
I3 I2 I1 I0
CLK
LOAD
D D D D
RS RS RS RS
Q Q Q Q
RESET
Q3 Q2 Q1 Q0
Un primer análisis indica que el funcionamiento del registro coincide con el del anterior. Es decir,
si LOAD=0 no hay flancos de subida a la entrada de reloj de los biestables, y estos mantienen su
estado. En el caso de que LOAD=1, cada flanco de reloj fuerza que el estado de cada biestable se
actualice al valor de la entrada correspondiente.
Es obvio que la circuitería implicada en la realización de este segundo diseño es mucho menor
que en el primero, siendo esta una clara ventaja. Por otro lado, un análisis más pormenorizado
nos permitirá apreciar las diferencias de comportamiento de ambas realizaciones. Si observamos
el cronograma de la figura 7.18
CLK
t
LOAD
t
CLK .
LOAD Transición Transición no
sincronizada sincronizada t
Qi
t
Ejercicio 7.3
Proponga un diseño para un registro con una señal de carga LOAD y una de inicialización
RESET activa a nivel bajo, ambas síncronas. En el caso de que las dos señales sean activas, debe
predominar la de RESET.
_________________________________________________________________________________
Existen registros en los cuales es posible no sólo cargar y memorizar la información, sino también
transferirla entre biestables vecinos. Estos registros son llamados de desplazamiento.
este circuito es inmediato: con cada flanco ascendente del reloj los bits se desplazan un lugar a la
derecha: (Q3+,Q2+,Q1+,Q0+)=(IN,Q3,Q2,Q1).
Q3 Q2 Q1 Q0
IN D D D D
Q Q Q Q
CLK RS RS RS RS
RESET
_________________________________________________________________________________
Ejercicio 7.4
Diseñe un detector de secuencia que active su única salida al haber recibido en su entrada la
secuencia 1011. Realízelo mediante el procedimiento general y proponga un diseño alternativo
utilizando un registro de desplazamiento. Compare ambas realizaciones.
_________________________________________________________________________________
Ejemplo 7.6
Analice las modalidades de funcionamiento del registro serie/paralelo de la figura 7.20. Proponga
un diseño alternativo que permita al registro, adicionalmente, realizar cargas síncronas en
paralelo o bloquear el desplazamiento. Proponga también una segunda variante que permita
realizar cargas paralelo asíncronas.
IR IL
1 0 1 0 1 0 1 0
R/L s MUX s MUX s MUX s MUX
y y y y
CLK
D D D D
Q Q Q Q
Q3 Q2 Q1 Q0
Salta a la vista el carácter modular del circuito (la misma estructura se repite cuatro veces), muy
similar al de la figura 7.16, por lo que su análisis se puede particularizar fácilmente para cada bit.
Así, podemos ver que para R / L = 1 el desplazamiento con cada flanco ascendente de reloj es
hacia la derecha (con entrada IR): (Q3+,Q2+,Q1+,Q0+)=(IR,Q3,Q2,Q1), mientras que para
R / L = 0 el desplazamiento es hacia la izquierda (con entrada IL): (Q3+,Q2+,Q1+,Q0+)=
(Q2,Q1,Q0,IL). Es decir, se trata de un registro de desplazamiento serie/paralelo bidireccional
sincronizado por flanco ascendente.
Para incluir más posibilidades síncronas de funcionamiento, como hacer entrada en paralelo o
detener el desplazamiento, podemos mantener la estructura básica compuesta por un multiplexor
más un biestable para cada bit, ampliando el tamaño del multiplexor de forma que admita estas
nuevas variantes (ver figura 7.21).
Qi-1Q i+1
Ii
+
C1 C0 Qi Función
C1 1 3 2 1 0
C0 MUX
0 y 0 0 Qi Parar desp.
0 1 Q i+1 Desp. derecha
CLK
1 0 Q i-1 Desp. izquierda
D
1 1 Ii Carga paralelo
Q
Qi
Finalmente, para obtener un registro que pueda cargar en paralelo de forma asíncrona podemos
utilizar biestables D con puesta a "1" (Preset) y a "0" (Reset) asíncrona y añadir la lógica
combinacional necesaria para evitar las órdenes contradictorias (ver figura 7.22).
Figura 7.22 Célula básica de un registro de desplazamiento bidireccional con carga paralelo asíncrona
_________________________________________________________________________________
Ejercicio 7.5
Diseñe, con la misma filosofía del ejemplo anterior, la célula básica para componer un registro de
desplazamiento con las prestaciones y señales de control descritas en la tabla que sigue.
_________________________________________________________________________________
7.2.3 Contadores
0 0 0 0
1 1 1 ...
S 0/0 S 1/1 S 2 /2 S p-1/p-1
La figura 7.23 muestra el diagrama de estados típico de un contador módulo p, donde podemos ver
que se trata de una máquina de Moore: la salida depende únicamente del estado actual (z=f[s]). El
funcionamiento es tal que, mientras la entrada (orden de contar) toma el valor "1", el sistema pasa de
un estado al siguiente a cada impulso de reloj, hasta que después de pasar por el estado "p-1" vuelve
al estado inicial "0". Cuando la entrada vale "0", el contaje se detiene y el sistema permanece en el
último estado alcanzado.
Existen diversas variantes de contador en función de cuál es el código de salida. Así, por ejemplo,
podemos encontrar contadores binarios con 2n estados y n salidas (correspondientes a los valores
entre 0 y 2n-1 codificados en binario), contadores decimales con 10 estados y 4 salidas
(correspondientes a la codificación BCD del estado), contadores en código Gray, etc. También es
usual encontrar distintas variantes de funcionamiento: contadores reversibles (es decir,
contadores/descontadores), contadores con carga en paralelo síncrona o asíncrona, etc.
I3 I2 I1 I0
CE Contador CLR
LD módulo 16
CLK TC
Q3 Q 2 Q 1 Q 0
La figura 7.24 muestra un esquema típico de contador binario módulo 16. En dicho contador se puede
iniciar el contaje desde un estado determinado por el usuario, para ello se dispone de la señal LD
(carga en paralelo) y las entradas Ii; al activar la señal LD y producirse un flanco ascendente del reloj
se carga en las salidas Qi el valor presente en las entradas Ii, valor a partir del cual se continuará el
recuento cuando LD se desactive y se reciban nuevos impulsos de reloj. La entrada CE habilita la
acción de contar: si CE=0 se interrumpe el recuento y el circuito mantiene su último valor Qi+=Qi. La
entrada CLR (clear) permite cargar, de forma asíncrona, el estado Qi=0.
CLK
CE
CLR
Q0
Q1
Q2
Q3
TC
El cronograma de la figura 7.25 ilustra el funcionamiento del contador para LD=0 partiendo de una
inicialización producida mediante la activación de la entrada CLR. Nótese que la orden de detener el
recuento CE=0 es atendida únicamente si dura lo suficiente como para coincidir con un flanco
ascendente del reloj.
Podemos generalizar este comportamiento para un contador binario módulo 2n en las siguientes
ecuaciones para el estado futuro:
0 si CLR = 1 (asíncrono)
I si CLR = 0 y LD = 1
S+ =
(S + 1)mod 2n si CLR = 0, LD = 0 y CE = 1
S si CLR = 0, LD = 0 y CE = 0
La salida TC es una indicación de fin de cuenta, y toma el valor "1", como se observa en el
cronograma, sólo cuando Qi=CE=1. Esta salida permite encadenar contadores de forma sencilla, tal
como podemos ver en la figura 7.26, donde se muestra un contador módulo 256 hecho mediante la
conexión de dos contadores módulo 16.
I3 I2 I1 I0 I7 I6 I5 I4
I I I I I I I I
CE CE 3 2 1 0 C CE 3 2 1 0 C CLR
Contador Contador
LD LD módulo 16 LD módulo 16
CLK Q Q Q Q TC Q Q Q Q TC TC
3 2 1 0 3 2 1 0
Q3 Q 2 Q 1 Q 0 Q7 Q 6 Q 5 Q 4
Obsérvese que al llegar por primera vez el contador de la izquierda (bits menos significativos) al
valor "15" y existir orden de seguir contando (CE=1), TC valdrá "1", con lo que en el siguiente flanco
de reloj el contador de la derecha (bits más significativos), se incrementará una unidad y permanecerá
detenido hasta que, dieciséis períodos de reloj después, el contador de la derecha vuelva a completar
su ciclo, momento en que volverá a incrementarse, y así sucesivamente.
CE
J K J K J K J K
RS RS RS RS CLR
Q Q Q Q
CLK
TC Q3 Q2 Q1 Q0
La realización de contadores con biestables y puertas lógicas no supone ninguna dificultad especial,
por lo que basta con aplicar el método sistemático de síntesis presentado en este mismo capítulo.
Como ejemplo, la figura 7.27 muestra una posible realización mediante biestables JK y puertas AND
de un contador hexadecimal (es decir, binario módulo 16) sin carga en paralelo. Se deja al lector la
reconstrucción de las etapas de su diseño, así como la comprobación del funcionamiento correcto del
circuito.
Nótese que la modularidad del circuito de la figura 7.27 es evidente y que se trata de una estructura
fácilmente ampliable: no hay más que añadir un biestable y una puerta AND por cada nuevo bit.
A su vez, la figura 7.28 muestra la implementación mediante biestables JK y puertas lógicas estándar
del contador binario módulo 16 descrito en la figura 7.24, manteniendo la filosofía modular de su
estructura.
I3 I2 I1 I0
LD
CE
J K J K J K J K
RS RS RS RS CLR
Q Q Q Q
CLK
TC Q3 Q2 Q1 Q0
J 0 = CE ⋅ LD + I 0 ⋅ LD
K 0 = CE ⋅ LD + I 0 ⋅ LD
J = CE ⋅ LD⋅Qi ⋅...⋅Q0 + Ii ⋅ LD
J1 = CE ⋅ LD ⋅Q0 + I1 ⋅ LD ⇒ i
K i = CE ⋅ LD⋅Qi ⋅...⋅Q0 + Ii ⋅ LD
K1 = CE ⋅ LD ⋅Q0 + I1 ⋅ LD
....
Podemos ver que para LD=0 el circuito se comporta exactamente igual que el de la figura 7.27,
mientras que para LD=1 las entradas Ji y Ki de cada biestable toman valores complementarios. En
estas condiciones los biestables JK se comportan como biestables D, que permiten la carga en
paralelo.
Ji = I i
LD =1 ⇒ ⇒ Qi+ = Qi K i + Qi K i = (Qi + Qi )I i = I i
K =
i i I
Ejemplo 7.7
Añada la lógica necesaria para usar el contador hexadecimal de la figura 7.24 como un contador
BCD (sin opción de carga en paralelo).
Para que el contador se comporte como BCD, después de la codificación del 9, debe venir la
correspondiente al cero. Podemos conseguirlo haciendo una carga en paralelo al alcanzar la
cuenta de 9, siempre que CE valga uno. Hay que tener en cuenta que los estados 10 a 15 no se
darán nunca, lo que nos permitirá simplificar el "detector de nueves". La implementación
propuesta en la figura 7.29 cumple estos requisitos.
TC
I3 I2 I1 I0
CE CE C CLR
Contador
LD módulo 16
CLK Q3 Q 2 Q 1 Q 0 TC
Además, si queremos que el contador sea encadenable, debemos generar una nueva señal de TC,
dado que la interna no se activará nunca. Es sencillo razonar que la misma señal que activa LD
sirve como marcador de final de cuenta.
_________________________________________________________________________________
Ejercicio 7.6
Añada la lógica necesaria para usar el contador hexadecimal de la figura 7.24 como un contador
BCD exceso a 3, sin opción de carga en paralelo.
_________________________________________________________________________________
De forma análoga existen estructuras compuestas por matrices de puertas lógicas que adicionalmente
disponen de biestables u otros elementos secuenciales, cuyas conexiones son también programables.
Este tipo de estructuras goza de una gran aceptación, y son utilizadas tanto para implementar diseños
secuenciales de una cierta complejidad como para realizar prototipos de sistemas que posteriormente
se implementan mediante otras estrategias.
Las variantes presentes en el mercado son numerosas, y dan lugar a un panorama algo confuso de
denominaciones (PLD, GAL, PAL, EPLD, FPGA, LCA, etc.) que en algunos casos se refieren a
estructuras diferentes y en otros a nombres comerciales dados a un mismo tipo de cicuito por distintos
fabricantes. Puesto que se trata de bloques que conceptualmente son similares, en este texto
utilizaremos para ellos el nombre genérico PLD (programmable logic device, dispositivo lógico
programable).
El diseño de sistemas secuenciales mediante PLD mantiene los rasgos distintivos apuntados en su
momento en el caso de los módulos programables combinacionales. Por un lado la existencia de
dispositivos programables por el fabricante y de dispositivos programables en campo (es decir, por el
usuario); éstos últimos pueden ser programables más de una vez, o no, en función de la tecnología
con la que hayan sido realizados. Por otra parte para trabajar con dispositivos programables en campo
es necesario el concurso de herramientas software de ayuda al diseño y de un grabador que, una vez
completado y simulado el diseño, realice la operación física de programación del PLD.
Ejemplo 7.8
a) Circuito b)
Display
de control
A D
ON 7
PLD B G E
CLK A,B,C,..,G
C F
CLR
ON=0 ON=1
Valor Q2 Q1 Q0 Q+ + +
2Q 1Q 0 Q+ + +
2Q 1Q 0 AB CDE FG
1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1
2 0 0 1 0 0 1 0 1 0 1 0 0 0 0 1 0
3 0 1 0 0 1 0 0 1 1 1 0 0 0 0 1 1
4 0 1 1 0 1 1 1 0 0 1 0 1 1 0 1 0
5 1 0 0 1 0 0 1 0 1 1 0 1 1 0 1 1
6 1 0 1 1 0 1 0 0 0 1 1 1 1 1 1 0
- 1 1 0 XXX XXX XX XXX XX
- 1 1 1 XXX XXX XX XXX XX
Aplicando los métodos habituales de simplificación se llega a las expresiones siguientes para las
funciones de salida y de transición de estados:
A = F = Q2 Q1 Q0
D2 = Q2+ = Q1Q0 ON + Q2 Q0 + Q2 ON
B = E = Q2 + Q0
D1 = Q1+ = Q2 Q1Q0 ON + Q1Q0 + Q1 ON
C = D = Q2 Q1 + Q2 Q0
D0 = Q0+ = Q0 ON + Q0 ON
G = Q0
Estas funciones se han implementado sobre el PLD mostrado en la figura 7.32, donde se dispone
de biestables tipo D incluidos en una estructura aparentemente compleja, pero que en realidad es
una versión muy reducida y simplificada de estructuras disponibles a nivel comercial. Podemos
ver que el PLD consta de una matriz de productos programable, otra de sumas fija, y módulos de
salida compuestos de un biestable más un multiplexor. Se dispone de un máximo de seis entradas,
seis productos adicionales de control de los multiplexores y hasta seis salidas.
D2 CLR
D 0
Mux
Q 1
S
RS Q2
ON
D1
D 0
Mux
Q 1
S
RS Q1
1
D0
D 0
Q 1
Mux G
S
RS Q0
D 0
Q 1
Mux A
S
RS
D 0
Q 1
Mux B
S
RS
D 0
Q 1
Mux C
S
RS
CLK
Figura 7.32 Circuito simulador del lanzamiento de un dado realizado con PLD
_________________________________________________________________________________
Ejercicio 7.7
_________________________________________________________________________________
Dado que las memorias RAM son evidentemente sistemas secuenciales, es oportuno hablar de ellas
en este capítulo. Ahora bien, como veremos enseguida, se trata de módulos con unos objetivos,
configuraciones y características muy específicos y diferentes a los vistos en los apartados anteriores,
lo que justifica el tratamiento aparte aplicado.
La figura 7.33 muestra un esquema genérico para una memoria RAM de 2kx n bits de capacidad,
donde podemos observar k entradas de dirección (Ak-1,.., A1, A0), n entradas de datos (DIn-1,.., DI1,
DI0), n salidas de datos (DOn-1,.., DO1, DO0), y dos entradas de control: E (habilitación del módulo)
y R/W' (orden de lectura o escritura).
DI n-1 DI 1 DI 0
...
A k-1 E
2k x n
...
A1 RAM
A0 R/W'
...
DOn-1 DO1 DO0
Si suponemos que la memoria RAM de la figura 7.33 está compuesta por 2k registros de n bits,
podemos comprender fácilmente su comportamiento. Para E=1 es posible efectuar una operación de
lectura y/o escritura, mientras que para E=0 la memoria se limita a almacenar la información
introducida anteriormente. Por otro lado, cuando el módulo es activo, la entrada R/W' controla el
modo de operación, en lectura o escritura. Si R/W'=0 se introduce en el registro señalado por la
dirección A (nótese que hay tantos registros como direcciones distintas) el vector (palabra) presente
en las entradas DI, mientras que para R/W'=1 se vuelca el contenido del registro señalado por A en las
salidas DO. La figura 7.34 muestra, a nivel de bloques, un estructura interna habitual para una
memoria RAM.
DI n-1 DI 1 DI 0
...
2k -1
Decodificador
A k-1
2k x n
binario
...
...
células R/W'
A1 1
A0 de memoria
0
...
E
Registro de palabra OE
...
DOn-1 DO1 DO0
Nótese que una memoria RAM es, en principio, un sistema secuencial asíncrono: su funcionamiento
no está gobernado por ningún reloj externo. Además, en la práctica suele ser conveniente que los n
bits resultado de una operación de lectura estén disponibles en determinados instantes de tiempo (ello
se debe a que normalmente estos bits se introducen en una línea de comunicación en paralelo -BUS-
compartida por diferentes sistemas en diferentes instantes de tiempo); por ello se incluye en el
esquema de la figura 7.34 un registro de palabra: un registro tipo latch (cerrojo, nombre dado
frecuentemente a un registro sincronizado por nivel) con salidas tri-state, de manera que para OE=0
las salidas DO quedan en alta impedancia (dejando la memoria aislada), y que para OE=1 la palabra
leída se transmite al BUS. Este registro con salida tristate permite usar las mismas conexiones físicas
con el exterior del módulo para las entradas y salidas de datos. La señal OE puede ser una señal de
control accesible desde el exterior, o bien ser activa durante toda la operación de lectura, esto es,
OE=E.R/W'.
Ejemplo 7.9
El presente ejemplo ilustra la posibilidad de encadenar memorias RAM con el objetivo de obtener
memorias de mayor capacidad. Concretamente, vamos a obtener una memoria de 1Mx4 bits a
partir de los módulos RAM de 256kx1 bits (ver figura 7.35).
DI 3 DI 1 DI 0
a) ... b) DI
A 19 20 E A 17
2 x4 218x 1 E
...
...
A1 RAM A1
R/W' RAM
A0 A0 R/W'
...
DO3 DO1 DO0 DO
La solución se muestra en la figura 7.36. Nótese que para totalizar la capacidad requerida es
necesario utilizar 16 módulos de 256kx1, que se han dispuesto en cuatro columnas (tantas como
bits de salida) y cuatro filas, de modo que los dos bits más significativos de la dirección (A19 y
A18) son fijos para cada fila. El resto de la dirección (A17, ..,A0), así como la señal R/W', llega
por igual a todos los módulos. Las salidas de cada bloque pueden ser conectadas entre sí si
aseguramos que nunca será activa más de una a la vez, y se trata de salidas tristate.
DI 3 DI 2 DI 1 DI 0
E E E E
0
A 19 1 1
218x n DI 218x n DI 218x n DI 218x n DI
2
A 18 0 RAM DO RAM DO RAM DO RAM DO
3 E E E E
DO DO DO DO
A1 E E E E
A
0
218x n DI 218x n DI 218x n DI 218x n DI
DO 3 DO 2 DO1 DO0
_________________________________________________________________________________
Ejercicio 7.9
Modifique la estructura de encadenamiento del ejemplo anterior para el caso en que las salidas de
datos de las memorias no sean del tipo tristate, añadiendo la lógica necesaria.
_________________________________________________________________________________
La sugerencia anterior de que en una memoria RAM cada palabra se almacena en un registro es
funcionalmente correcta, pero irreal con respecto a su implementación. Si pensamos que un registro
utiliza un biestable para almacenar cada bit se llega a la conclusión de que las memorias RAM están
formadas por matrices de biestables; ahora bien, esto choca frontalmente con un requisito típico de
este tipo de módulos: maximizar la capacidad por unidad de superficie. Esto en la práctica ha llevado
al uso de estructuras de memorización de un bit de tamaño mucho menor que un biestable.
En función del tipo de memorizador unitario (o célula de memoria) existen dos tipos de memorias
RAM, las estáticas (SRAM) y las dinámicas (DRAM). Las memorias SRAM utilizan células que
permiten almacenar por un tiempo indefinido la información grabada. Por el contrario, las DRAM son
capaces de almacenar la información solamente durante un tiempo limitado.
Como veremos enseguida, una célula de memoria SRAM utiliza un mínimo de 6 transistores MOS
para almacenar un bit de información, número que puede reducirse hasta 2 o 3 en el caso de una
memoria DRAM. Por tanto es aparente que las memorias dinámicas permiten una mayor capacidad a
igual número de transistores.
En la figura 7.37 se muestra el esquema básico, a nivel circuital y físico, de una célula de memoria
dinámica: una capacidad de puerta más un transistor de paso que regula su carga/descarga. La
información se almacena en forma de carga introducida en la capacidad de puerta, carga que se
mantiene aislada (memorización) cuando se pone en corte el transistor de paso.
Vc Vx
Vc
...
... ...
... Vx n+ n+ n+ n+
p IS p
Cg
Sin embargo, existen caminos de fuga de la carga almacenada: nótese que existe una unión PN
polarizada en inversa entre el nodo Vx y el substrato del transistor de paso (conectado a masa); luego
Ejemplo 7.10
Si en el circuito de la figura 7.37 se tiene Cg=1pF, VTN=1V y VDD=5V, hágase una estimación
del tiempo que tarda en descargarse totalmente la capacidad si la corriente inversa de saturación
de la unión drenador-substrato del transistor de paso es IS=1nA.
4 ⋅10−12 C
t= = 4 ms
10 −9 A
_________________________________________________________________________________
Las células estáticas de memorización se basan en la estructura elemental mostrada en la figura 7.38.
El almacenamiento de la información se realiza utilizando las capacidades de entrada de dos
inversores realimentados (la salida de cada uno de ellos conectada a la entrada del otro) a través de un
interruptor. Un primer análisis de la estructura revela que para el valor de la señal de control C1=1 se
tiene, tras la correspondiente carga/descarga de las capacidades por acción de los inversores, O'=I
(fase de grabado o carga de la información). Asimismo, para C1=0 se cierra el bucle de
realimentación y se tiene O'=x, siendo "x" el valor cargado en la capacidad de entrada del primer
inversor (fase de memorización). Por otro lado, la señal de control C2 controla la lectura del valor
almacenado en la célula, O=O' (fase de lectura).
x x O'
I O
C1 C2
C1
Podemos notar además que la carga almacenada en las dos capacidades será estable, puesto que los
transistores de los inversores tienden a compensar las posibles fugas. A modo de ejemplo la figura
7.39 muestra el caso concreto de una realización CMOS en fase de memorización de un "1": el
transistor NMOS del primer inversor conduce y asegura la descarga de CI1, mientras que el transistor
PMOS del segundo inversor también conduce y asegura la estabilidad de la carga almacenada en C I2.
0 V DD
OUT
CI1 CI2
Ejemplo 7.11
En la figura 7.40 se muestra el esquema de una célula de memoria RAM dinámica realizada con
4 transistores nMOS.
SEL
T1 T2
T3 T4
B B'
Cg3 Cg4
Procedimiento de escritura: Para escribir un "1", la línea B debe ponerse a "1" (VDD) y B' a "0".
En el caso contrario (escribir un "0"), debe ponerse B=0 y B'=1. Para centrar ideas veamos el
caso concreto de escribir un "1".
Una vez se tiene B=1 y B'=0 se tiene que habilitar, es decir, poner en conducción, los transistores
de paso T1 y T2. De esta forma los valores de tensión en B y B' se propagarán hasta cargar las
capacidades de puerta de T3 y T4; es decir, habrá un "1" en Cg4 y un "0" en Cg3. Por último hay
que poner en corte los transistores T1 y T2, con ello la información queda almacenada en forma
de carga en Cg3 y Cg4, o si se prefiere, como valores de tensión en las puertas de T3 y T4.
Procedimiento de lectura: En primer lugar deben precargarse a "1" las dos líneas B y B'. A
continuación se ponen en conducción los transistores T1 y T2. En función de cuál de los dos
transistores T3 o T4 tenga un "1" en su puerta, se descargará una de las dos líneas.
Para fijar ideas, supongamos que se ha almacenado en la célula un "1" (por tanto, la puerta de T4
está a "1" y la de T3 a "0"). Al conducir simultáneamente los transistores T1 y T4 la linea B' se
descargará mientras que la linea B se mantendrá a "1". A continuación se vuelve a aislar la célula
cortando los transistores de paso T1 y T2. En función de los valores finales de tensión en la líneas
B y B' sabremos si hemos leído un "1" (caso de nuestro ejemplo) o un "0" (caso opuesto).
_________________________________________________________________________________
Ejercicio 7.9
La figura 7.41 muestra una célula de memoria RAM estática de 6 transistores. El funcionamiento
de dicha célula es, en líneas generales, análogo al descrito para la célula dinámica de la figura
7.41. La única diferencia estriba en que, en este caso, el mantenimiento de la información está
garantizado por los dos inversores. Analice detalladamente sus procedimientos de carga y
descarga. ¿Es necesaria una precarga de las líneas B y B' al hacer una lectura?
SEL
VDD
T1
T2
B Cg2 B'
Cg1
_________________________________________________________________________________
Para ver en qué consiste consideremos la estructura de la figura 7.42, donde tenemos una pista
conductora con una capacidad Ca respecto del sustrato puesta a tensión Va y aislada del resto del
circuito. En un cierto momento conectamos la pista a un circuito (por ejemplo, con la intención de
"leer" la tensión Va), que modelamos como una capacidad Cb puesta inicialmente a tensión Vb.
Va Vb
Ca Cb
Qa = Ca Va Qb = Cb Vb
También es evidente que después de la conexión tenemos una estructura formada por dos capacidades
en paralelo, cuya capacidad y tensión globales serán
C T = C a + Cb C aVa + C bV b
V a final = QT / CT ⇒ a final = C + C
V
a b
La conclusión a extraer de este resultado es obvia. Si queremos que la lectura no afecte al dato
(tensión) almacenado en Ca, hay que cumplir dos condiciones: CaVa<<CbVb y Ca<<Cb.
Nótese que este fenómeno afecta al funcionamiento de todas las células de memoria, dinámicas y
estáticas, presentadas, donde la lectura o escritura de un dato puede verse en términos de traslado de
carga de unas capacidades a otras.
Cuestiones
C7.1 Resuelva el ejercicio 7.2 usando distintas codificaciones para los estados. Compare las
soluciones encontradas.
C7.2 Una implementación para un sistema secuencial, llamada One-Hot, consiste en usar
codificaciones "1 entre n" (código redundante) para sistemas con n estados internos. Encuentre una
implementación One-Hot para el ejercicio 7.2, con biestables de tipo D.
C7.3 Usando las tablas intermedias de resultados de la cuestión anterior, escriba las ecuaciones que
relacionan el estado futuro de cada biestable con las entradas y el estado, esto es,
+
Qi = f ( Q0 ,..., Qn , x0 ,..., x m ) . Intente relacionar la ecuación de los estados futuros con las ramas que
llegan a cada estado en el diagrama de estados. ¿Puede proponer un método para encontrar una
implementación One-Hot directamente a partir del diagrama de estados?
C7.4 Considere el funcionamiento del siguiente sistema, cuya misión es encontrar la diferencia entre
dos valores consecutivos que toma una variable (sistema de interés a la hora de compactar la
información en señales que varian lentamente con respecto al reloj).
n
X
Paralelo 1
Registro
restador
Módulo
m
²X
Paralelo 2
Registro
Clk
C7.5 Generalice, a partir de la respuesta de la cuestión anterior, el tipo de problemas que pueden
provocar retardos en el reloj dentro de sistemas con diversos bloques sincronizados.
i j k
Bloque 1
Bloque 2
X Z
Clk
C7.6 Disponiendo de un contador hexadecimal, sin posibilidad de carga en paralelo pero con un reset
asíncrono, proponga una realización de un contador BCD, y compárela a la del ejemplo 7.7.
Contador Contador
módulo 16 módulo 16 Clk
Q Q Q Q Q Q Q Q
3 2 1 0 3 2 1 0
Q Q Q Q Q Q Q Q
7 6 5 4 3 2 1 0
C7.8 Modifique la implementación propuesta en el ejercicio 7.6 para para obtener un contador BCD
exceso 3 con posibilidad de carga en paralelo síncrona.
C7.9 Considere los dos esquemas de decodificación de la figura para una RAM de 1kbit (1024 bits).
A9 A8 A5
E
1023 E Decodificador
1022 012 31
Decodificador
A9
Decodificador
31
Celdas
A8 A4 30
A3
Celdas
A0 3 3
2 2
1 A0 1
0 0
Compárelos en términos de los transitores necesarios para hacer una implementación CMOS de
los decodificadores. Si la complejidad añadida a cada célula unitaria de memoria en el esquema
de decodificación doble, o coincidente, respecto a la simple es de dos transistores, ¿cuál de ellos
es más ventajoso?
C7.10 ¿Cómo afectaría al resultado del ejemplo 7.10 que la puerta de transimisión que controla la
carga o descarga de la capacidad fuera CMOS, en vez de NMOS? ¿Y si se tratara un transistor de
paso PMOS?
Problemas
P7.1 Analice la red secuencial de la figura. Obtenga su diagrama de estados. Obtenga una
implementación alternativa con biestables de tipo D y puertas lógicas elementales.
0 3
x
Mux
2
y 1 y J Q Q
1
xy 0
1 0 Q
K
3
QQ 1
Dec
1 0 2
z
0 1
x 3
0
Mux
1 2
y 1 y J Q Q
0
x 0
1 0 Q
K
QQ Clk
1 0
P7.2 Considere el siguiente sistema secuencial síncrono. Analícelo, y dé, si es posible, una
descripción de alto nivel. Discuta la necesidad de una entrada de reset para dicho sistema.
qa X0 qa
Multiplexor
X D
Q
x0 X1 z0
Dual
qb Y0
Y D qb
qa x1 Y1 Q
A0 z1
Comparador
S
qb A1
A>B D qc
x0 B0 Q
x1 B1
Clk
P7.3 Diseñe un sistema secuencial síncrono con la siguiente tabla de transición de estados.
s x=0 x=1
A B,a F,b
B C,a A,c
C D,a B,b
+
D E,b C,c s ,z
E F,b D,b
F G,c E,c
P7.4 Diseñe un contador/descontador de 3 bits encadenable. Esto es, con salida de fin de cuenta TC y
entrada de habilitación CE. Considere una entrada adicional U / D que indique si el contador avanza,
U / D =1, o retrocede, U / D =0 cuando CE está activa. Nótese que la salida TC debe activarse
también cuando al descontar se pasa del estado "000" al "111".
P7.5 El siguiente circuito es llamado contador de Moebius o de doble secuencia, realizado, en este
caso, con un registro de desplazamiento. Obtenga su diagrama de estados. Proponga una
implementación con menos biestables del mismo sistema. La señal CLR del registro es asíncrona.
CE SH
RESET CLR Clk
Z3 Z2 Z1 Z0
P7.6 Implemente un contador en anillo de 8 estados. Este tipo de contador tiene 8 salidas, de las
cuales sólo una es activa en cada estado. Proponga una realización aplicando el método de diseño de
sistemas secuenciales síncronos, otra, a partir de registros de desplazamiento con capacidad de carga
en paralelo, y aun una tercera con un contador binario y un decodificador.
P7.7 Analice el funcionamiento del siguiente circuito asimilándolo al de algún bloque de los
presentados en este capítulo, en el caso en que las señales CLK1 y CLK2 nunca son activas a la vez,
es decir, CLK1.CLK2=0. ¿Con qué reloj observamos el sincronismo a la salida?
IN OUT
Proponga, con la misma filosofia de registro dinámico con puertas de transmisión e inversores y
dos fases de reloj, una realización de un registro de desplazamiento de 4 bits con capacidad de
carga en paralelo.
P7.8 Usando un contador como el descrito en la figura 7.24, aquí repetida, consiga un módulo
contador con las siguientes secuencias:
I I I I
CE 3 2 1 0 C
Contador
LD módulo 16
Q Q Q Q TC
3 2 1 0
a) Contador módulo 13
b) Contador entre 4 y 11
P7.9 Utilizando un reloj de período 1 segundo, un contador binario de 5 bits con capacidad de carga
en paralelo y la lógica que sea necesaria, implemente un sistema secuencial síncrono para un
marcador de treinta segundos de un partido de baloncesto. El sistema debe tener 2 entradas: la
primera, R, debe inicializar el contador a 30 independientemente del valor de la otra; la segunda, D,
debe permitir al contador descontar, o no. Así, si D=1 el marcador quedará parado, mientras que si
D=0 el marcador deberá descontar segundos. El sistema tiene una sola salida que activa una bocina
cuando el marcador llega a cero. Nota: Un contador con salidas activas bajas se comporta como un
descontador.
P7.10 Considere el sistema secuencial de la figura siguiente, donde las señales CE del contador, y LD
del contador y del registro son síncronas y tienen su significado habitual, es decir, habilitación para
contar y carga en paralelo.
Address
REGISTER
8 8 4
X RAM Dout In 4-bit
P/P
LD1
M1 LD2
CNT
CLR W z
RESET
a) Diseñe el módulo de control M1 para que sus salidas sigan el cronograma mostrado a
continuación, usando el método propuesto en este capítulo.
CLK
LD1
LD2
CNT
b) Explique el funcionamiento del sistema, analizando cómo varían los contenidos de cada
posición de memoria al cabo de un ciclo completo del módulo M1. ¿Qué indica la salida z?
Suponga que la entrada x varía mucho más lentamente que el reloj y dé una descripción de alto
nivel del sistema.
P7.11 Considere el circuito de la figura siguiente, donde la parte encerrada por la línea de puntos
corresponde a un único circuito integrado. El contenido de la memoria ROM está indicado en la tabla
de verdad incluida más abajo.
a3
Registro
a 2 ROM y1 2 2 q2
a 1 16x2 y 1 1 q1
0
a0 0 0 q0
LD
x0
x1
CLK
a3 a2 a1 a0 y1 y0 a3 a2 a1 a0 y1 y0
0 0 0 0 0 0 1 0 0 0 1 0
0 0 0 1 0 1 1 0 0 1 1 1
0 0 1 0 0 0 1 0 1 0 1 0
0 0 1 1 0 0 1 0 1 1 1 0
0 1 0 0 0 1 1 1 0 0 1 1
0 1 0 1 1 0 1 1 0 1 0 0
0 1 1 0 0 1 1 1 1 0 1 1
0 1 1 1 0 1 1 1 1 1 1 1
Se pide:
P7.12 El siguiente layout corresponde a una célula de memoria RAM. Determine si se trata de una
célula dinámica o estática. La línea de datos es la pista llamada BIT que, en el caso de una lectura,
deberemos precargar a V DD; mientras que en una escritura, forzamos en ella el valor a memorizar.
Explique su funcionamiento, sabiendo que las señales WR y RD nunca pueden estar activas en el
mismo instante.
WR RD
BIT
VSS
V
DD
Φ Φ V
DD
A
CA
t
IN OUT IN V
DD
T3 CO
B
Φ CB t1 t2 t3 t
Se pide:
a) ¿Qué función lógica realiza el circuito? Suponiendo un funcionamiento ideal, es decir sin
efectos resistivos, capacitivos y/o inductivos, obtenga el cronograma de la señal de salida OUT
correspondiente a la evolución de las entradas dada en la figura. (Nota): Suponga que el valor
inicial de OUT es 0 V.
b) Si ahora consideramos que las pistas de conexión son no ideales y que tienen las
capacidades indicadas en la figura (para simplificar, tómese CA=CB=CO), calcule el valor de la
tensión en los nodos A, B y OUT una vez alcanzado el régimen permanente dentro del intervalo
(t1,t2). Repita el cálculo para el intervalo (t2,t3).
c) Repita el cálculo del apartado anterior para el intervalo (t3,∞ ). Compare este resultado
con el obtenido en el apartado (a). Proponga algún cambio en el diseño del circuito que elimine,
si es posible, las diferencias con el caso ideal.
d) Suponga que la salida OUT se conecta a la entrada de otra puerta con VIH=0,7xVDD.
¿Cuál es el valor máximo de capacidad de entrada de dicha puerta que puede tolerarse sin que
haya problemas de niveles de tensión en el cronograma estudiado?
En el capítulo 1 de este texto se han presentado algunos códigos para números enteros positivos, en
especial el binario y el BCD, pero no se ha hecho mención de las posibilidades de codificación de
números enteros y/o a la aritmética básica (en concreto operaciones de suma y resta) basada en estos
códigos. Como estos aspectos tienen incidencia sobre el diseño de algunos circuitos digitales, se
tratan brevemente y a título informativo en este apéndice.
Los tres formatos más utilizados son el de módulo y signo, el complemento a 1 y el complemento a 2,
que presentamos a continuación.
Se genera añadiendo a la codificación binaria del valor absoluto del número un bit indicativo del
signo. Este bit adicional toma el valor "0" si el número es positivo y el valor "1" si el número es
negativo.
Ejemplos:
+12 = 0 1100 -12 = 1 1100
Normalmente la longitud de palabra, es decir, el número de bits empleados para codificar, es fija.
Luego el rango de números enteros representables en M/S utilizando n+1 bits tiene como extremos -
(2n-1) y +(2n-1). En consecuencia, el valor "0" tiene dos representaciones posibles (correspondientes
a +0 y -0).
Complemento a 1 (Ca1):
Como en el caso anterior, el bit de la izquierda indica el signo. Los números positivos se codifican
igual que en M/S. Los números negativos se codifican expresándolos inicialmente en un formato
binario de longitud fija y complementando bit a bit.
© 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.
302 Diseño digital
________________________________________________________________________________
Ejemplos:
(1 1100)Ca1 = - (00011)2 = -3
El rango de números enteros representables en Ca1 utilizando n+1 bits tiene como valores extremos -
(2n-1) y +(2n-1). El valor "0" sigue teniendo dos representaciones posibles.
Complemento a 2 (Ca2):
Como en los dos casos anteriores, el bit de la izquierda indica el signo. La codificación de los
números positivos es igual que en M/S y Ca1. La codificación de los números negativos se obtiene
tomando una codificación binaria de longitud fija, complementándola bit a bit y sumándole "1".
Ejemplos:
En Ca2 con n+1 bits se pueden codificar los enteros comprendidos entre -(2n) y +(2n-1). Nótese que
el cero tiene una única representación (+0) y que, por tanto, existe un valor negativo más.
Como ejemplo de lo anterior y tomando una longitud de palabra de 4 bits, veamos en la tabla
siguiente a qué número entero corresponde cada combinación en función de si se supone codificación
en módulo y signo, complemento a 1 o complemento a 2.
Ejemplos:
0 0 110 <---- acarreos 10111
10011 - 01110
+ 00110 0 10 0 0 <---- acarreos
11001 ----> 19+6=25 01001 ----> 23-14=9
Ejemplos:
Vamos a hacer las cuatro operaciones posibles con dos cantidades expresadas en Ca2 de 5 bits. Estas
son:
+7 = (0 0111)Ca2 -7 = (1 1001)Ca2
+5 = (0 0101)Ca2 -5 = (1 1011)Ca2
Sin embargo, es necesario recordar que existe un rango de valores representables con el formato
utilizado (en este ejemplo los extremos son -32 y +31); por tanto, hay que prever la posibilidad de que
se produzca un error por desbordamiento (overflow), es decir, que el resultado de la operación no
pueda codificarse con el número de bits utilizado.
Tomemos por ejemplo los números A=22 y B=15, y hagamos A+B utilizando un formato Ca2 de 6
bits:
010110
+ 001111
100101 ---> (1 00101)Ca2 = -27
Ya que no es posible corregir este tipo de errores, es recomendable disponer de medios para detectar
cuándo se producen. Un procedimiento es el siguiente: si llamamos Ca al acarreo que llega a la suma
de los bits de signo y Cb al acarreo resultante de la suma de los bits de signo, puede observarse que
tenemos desbordamiento cuando Ca • Cb. Por tanto es sencillo realizar un circuito auxiliar de
detección de desbordamiento: basta con una puerta XOR que realice la función C a ⊕ C b .
Es preciso recordar que, como se vio en el primer capítulo, la codificación BCD coincide con la
binaria de 4 bits para los valores entre 0 y 9. Por tanto, la forma de operar en BCD es similar a la
binaria, pero con la salvedad de que cuando el resultado de la suma de dos dígitos sea un valor
superior a 9 será necesario efectuar una corrección. Esta corrección consiste en "saltar" las seis
combinaciones no válidas sumando el valor "0110".
Ejemplos:
Para codificar números negativos en BCD tenemos varios procedimientos: a) incluir un bit adicional
de signo, b) utilizar el formato de complemento a 9 (por ejemplo, -57 sería 1 0100 0010, donde el bit
de la izquierda corresponde al signo, el primer grupo de 4 bits al complemento a 9 del primer dígito
(9-5) y el segundo grupo al complemento a 9 de 7 (9-7)), c) utilizar el formato de complemento a 10
(el procedimiento de codificación es el mismo que en complemento a 9 con la salvedad de que se
suma "1" tras complementar).
La ventaja de utilizar estas codificaciones un tanto peculiares es, al igual que anteriormente,
posibilitar el uso de un algoritmo unificado de suma y resta.
Ejemplo:
00101 0111
1 0111 0001
11100 1000 --> Mayor que 9 (izda) --> sumamos "6"
+ 0110
00010 1000 --> (+57)+(-29)=(+28)
En términos muy generales podemos decir que las principales diferencias, a nivel de características
eléctricas, de los circuitos digitales realizados mediante transistores bipolares, comparados a sus
equivalentes realizados mediante tecnologías MOS, son tres: 1) un mayor consumo de potencia, 2)
una escala de integración (número de puertas por unidad de área) mucho menor, 3) una mayor
corriente de salida, que se traduce en retardo menor.
Esta familia es utilizada preferentemente en circuitos de pequeña y media escala de integración (SSI,
MSI).
La configuración estándar en que se basa la familia es el circuito de la figura B.1.a. Sin entrar en
ningún análisis detallado, digamos que para A o B igual a "0" el transistor de salida está en corte y se
tiene F=1, mientras que para A=B=1 el transistor de salida está saturado y se tiene F=0. Se trata, por
tanto, de una puerta NAND.
F
A A
B B F
Figura B.1 Puerta lógica TTL con salida en colector abierto (a) y con salida totem-pole (b)
F1
... VCC
F=F1.F2
F2
...
Como se ha indicado más arriba, existen diversas variantes o evoluciones de la familia TTL estándar,
las más significativas de las cuales son la STTL (Schottky TTL), la ASTTL (Advanced Schottky TTL),
la LTTL (Low Power TTL), y la ALSTTL (Advanced Low Power Schottky TTL). Las versiones S y
AS introducen diodos Schottky en la circuitería básica de la puerta con la finalidad de evitar que
algunos transistores saturen, con lo que se obtiene una reducción del tiempo de retardo. La versión L
consigue reducir el consumo por puerta a través de un redimensionado de las resistencias del circuito,
aunque tiene el inconveniente de empeorar su retardo. Finalmente, la versión ALS combina un
consumo reducido con un retardo también reducido.
La familia lógica ECL es, de entre todas las bipolares, la que ofrece mejores prestaciones en cuanto a
velocidad, aunque sus muchos inconvenientes (alto consumo, baja densidad de integración, niveles
lógicos no compatibles con otras familias, etc.) hacen que su utilización se circunscriba a los circuitos
SSI y MSI donde la rapidez sea el objetivo primordial.
B F
V EE
V EE
También existen diversas variantes de la familia ECL estándar, las más significativas de las cuales
son las denominadas 10K y 100K, con diferentes prestaciones respecto al compromiso entre retardo
introducido y consumo.
Bibliografía
PUCKNELL D. A. Fundamentals of digital logic design with VLSI circuit applications. Sydney,
Prentice Hall International 1990.
ERCEGOVAC M. D., LANG T. Digital systems and hardware/firmware algorithms. New York, John
Wiley & Sons. Inc. 1985.
WESTE N. H. E., ESHRAGHIAN K. Principles of CMOS VLSI design. A systems perspective. 2º Ed.
Addison-Wesley Publishing Company. 1993.
MORRIS MANO M. Digital design. New Jersey, Prentice Hall International 1984.
LALA, P. K. Digital system design using programmable logic devices. New Jersey Prentice Hall Inc
1990.