Anda di halaman 1dari 920

1

Introducción

Sistemas Digitales

I.1 Definición.

Denominamos sistema digital a aquél que realiza operaciones mediante dígitos, los cuales
usualmente se representan como números binarios. Las principales operaciones son: ingreso,
procesamiento, transmisión, almacenamiento y despliegue de datos digitales.

Los sistemas análogos representan las variables en forma continua, en el tiempo; los digitales
en forma discreta. Los sistemas simbólicos emplean letras o iconos como símbolos no
numéricos.

Los sistemas análogos están siendo reemplazados por sistemas digitales, para esto las
cantidades físicas en forma análoga, por ejemplo: sonidos, imágenes, voltajes, distancias, deben
ser convertidas a representaciones digitales mediante técnicas de aproximación, empleando
dispositivos de conversión análogo-digitales. Primero se toman muestras, luego se convierten
las muestras en números.

I.2 Diseño clásico y actual.

El permanente cambio que tiene el estudio de sistemas digitales se debe principalmente a tres
factores: la continua evolución de la tecnología digital que en menor tamaño coloca cada vez
mayor número de componentes más rápidas; el desarrollo de herramientas de ayuda al diseño
digital (CAD) que permiten enfrentar tareas extremadamente complejas; y las nuevas
metodologías de desarrollo de software que facilitan el desarrollo de aplicaciones complejas con
interfases visuales, como las herramientas CAD y los lenguajes de descripción de hardware
(HDL).

Las primeras metodologías de diseño digital, que podríamos denominar clásicas, permiten
comprender los principios de funcionamiento de los sistemas digitales básicos, y pueden ser
desarrolladas empleando papel y lápiz. Emplean los principios teóricos del álgebra de Boole y
algoritmos de minimización. Sin embargo los algoritmos son de tipo no polinomial, y no pueden
ser aplicados a situaciones de mediana complejidad (redes con más de 5 entradas), debido a su
costo exponencial.

Sin embargo, al ser posible enfrentar diseños digitales más complejos, debido a la
tecnología, debieron desarrollarse nuevas heurísticas para representar sistemas digitales,
minimizarlos, y poder implementarlos en base a bloques lógicos determinados. En estos nuevos

Profesor Leopoldo Silva Bijit 19-01-2010


2 Sistemas Digitales
algoritmos, están basadas las herramientas CAD. Su exposición y estudio corresponde a
disciplinas de programación, estructuras de datos y algoritmos.

Actualmente el diseño, la simulación y la implementación o síntesis de sistemas digitales se


realizan mediante complejos y numerosos algoritmos incrustados dentro de las herramientas
computacionales de apoyo al diseño.

I.3 Conceptos básicos en sistemas digitales.

Comenzaremos nuestro estudio desarrollando un ejemplo, a través del cuál se irán


introduciendo diversos conceptos que se expondrán, con más detalle, más adelante.

Sea un sistema con una entrada E y una salida S, como se muestra en la Figura I.1.

E S

Figura I.1

Las variables E y S sólo pueden tomar los valores discretos: 0, 1, 2, 3. Es decir son variables
discretas multivaluadas.

La relación entre E y S podemos describirla mediante una función, empleando la tabla o


mapeo, que se muestra en la Figura I.2.
E S
0 1
1 2
2 3
3 0

Figura I.2

También podemos describirla mediante la gráfica que se muestra en la Figura I.3. Puede
notarse que la gráfica no es continua, sólo están definidos puntos en la cuadrícula o reticulado
(lattice). Esto debido a que la definición de la función ya está digitalizada; es decir, representada
por números o dígitos, en sistema decimal, en el ejemplo.

Los puntos podrían ser el resultado de una discretización (tomando cuatro muestras en todo
el rango de variación) y cuantización (asignado los valores numéricos enteros 0, 1, 2 y 3, a los
diferentes niveles) de una señal análoga o continua.

Profesor Leopoldo Silva Bijit 19-01-2010


Introducción 3

S
3
2
1
E
1 2 3

Figura I.3

Codificación.

Se denomina codificación binaria al proceso de asignar un vector booleano a un símbolo o


valor de la variable multivaluada. Un vector booleano puede tener varias componentes, pero
sólo con valores 0 y 1 en sus componentes. Por ejemplo {0, 0} es un vector booleano en un
espacio bidimensional B2; y {0, 1, 0} es un vector en un espacio de tres dimensiones B3. En el
espacio B2, se tienen cuatro puntos; en uno tridimensional se tienen 8 vectores diferentes.

De este modo la variable E, podemos representarla por un vector booleano en dos


dimensiones {E1, E0}, ya que E toma 4 valores solamente. Procediendo de este modo podemos
transformar el problema original en un sistema con variables booleanas. La Figura I.4 representa
el nuevo sistema digital binario:

E1 S1
E0 S0

Figura I.4

La asociación de los valores 0, 1, 2 y 3 con los vectores booleanos en B2, puede efectuarse de
diferentes maneras. Por ejemplo para el símbolo 0, podemos escoger una de las cuatro
siguientes: {0,0}, {0,1}, {1,0} y {1,1}. Luego para el 1, nos quedan tres posibles; para el 2 sólo
tendremos 2 posibles; y una para el símbolo 0. Es decir, 24 asignaciones de código diferentes.
La tabla de la Figura I.5 muestra seis elecciones de codificación binaria, en las cuales el código
para el símbolo 0 está formado por el vector {0,0}; existen 18 codificaciones adicionales que no
se muestran.

Valor C1 C2 C3 C4 C5 C6
0 00 00 00 00 00 00
1 01 01 10 10 11 11
2 10 11 01 11 01 10
3 11 10 11 01 10 01

Figura I.5

Profesor Leopoldo Silva Bijit 19-01-2010


4 Sistemas Digitales
La elección del código puede originar diferentes diseños del sistema, algunos con mayor
costo en componentes y posiblemente algún código que origine un diseño de mínimo costo.
Existen elementos teóricos para optimizar la lógica de un sistema multivaluado permitiendo
de este modo un nivel adicional de optimización; sin embargo en la mayoría de los casos la
codificación es realizada arbitrariamente, limitando la optimización a sistemas de lógica
bivaluada.

El código C1, tiene una interpretación numérica sencilla. Las secuencias de ceros y unos son
los equivalentes, en el sistema binario, del valor decimal.

Sistema numérico binario.

En el sistema numérico binario la base numérica es 2, y los dígitos sólo pueden ser 0 y 1. El
equivalente decimal N de un número binario de n dígitos: d n 1d n 2 ...d 2 d1d 0 , se obtiene
empleando:
N d n 1 2n 1
d n 2 2n 2
... d 2 22 d1 21 d 0 20

Así por ejemplo, la secuencia binaria: 111 interpretada como número binario equivale al
número siete decimal: 7 1 22 1 21 1 20 4 2 1

Los números con dos dígitos binarios permiten representar 4 cifras decimales. Conociendo
los tres dígitos binarios, de un número binario de tres dígitos, se puede identificar uno de 8
números decimales representables.

Información. Bit, Byte.

Se denomina bit, que es un acrónimo de Binary Digit, a la cantidad de información requerida


para distinguir entre dos opciones igualmente probables. Un acrónimo es un vocablo formado
por la unión de elementos de dos o más palabras. Bit está constituido por el principio de la
primera y el final de la última.

Por ejemplo, si tenemos dos objetos, uno blanco y uno negro, si asociamos valor 1 al objeto
blanco y un 0 al objeto negro, conociendo el valor del dígito binario asociado a una variable
podemos conocer a cual de los dos objetos se hace referencia, mediante dicha variable.

Se requieren tres bits de información para discernir unívocamente a un elemento de entre un


grupo formado por 8 elementos diferentes e igualmente probables. En nuestro ejemplo, se
requieren dos bits para codificar los valores de las variables E y S.

Podría decirse que un subconjunto de la sabiduría es el conocimiento; y que un subconjunto


del conocimiento es la información; y que los datos son un subconjunto de la información.

Entonces la información es una representación de algún conocimiento, tal como hechos,


datos u opiniones transmitidos a través de cualquier medio o forma, incluyendo textos, números,
gráficos, mapas, descripciones verbales o audiovisuales.

Profesor Leopoldo Silva Bijit 19-01-2010


Introducción 5
En este orden, la información puede definirse como un conocimiento comunicado o recibido
concerniente a un hecho particular o cierta circunstancia, el cual reduce la incertidumbre del
receptor. También podría decirse que la información es el significado asignado a los datos
mediante convenciones conocidas usadas en su representación.

Un bit es la unidad de información. Equivale a una decisión binaria o a la designación de


uno de dos estados posibles e igualmente probables, empleados para almacenar o proveer
información.

Es decir si se tienen 2 eventos igualmente probables y se desea conocer cuál de ellos se


produce, debe aportarse 1 bit de información.

Si se toma la convención de asociar el dato 1 a la ocurrencia del evento: obtener una cara al
arrojar una moneda; y el símbolo 0, si se obtiene sello. Con un bit de información podemos
comunicar a otro el resultado del experimento de arrojar una moneda.

Si son 4 eventos en total, para conocer la ocurrencia de uno determinado de ellos debe
comunicarse dos bits de información. La unidad de información es el bit (binary digit).

Para conocer cuáles de los M casos se producen de un conjunto de N eventos igualmente


probables, debe conocerse log2 (N/M) bits de información (redondeando al entero más cercano).

Si se tiran dos dados, para comunicar, transmitir o almacenar la ocurrencia de un caso


determinado, es preciso suministrar 5 bits aproximadamente ( N=36 y M=1, log2 (N/M)=5,17).

Si se tienen 256 personas, puede asignársele a cada una de ellas un nombre en el sistema
binario, puede verse que se requieren 8 bits para esto (log2(256/1) = 8 ). Los nombres binarios
irían en forma ascendente desde el 00000000 hasta el 11111111.

Se define la unidad de información Byte, como 8 bits. Se requiere disponer de un Byte de


información para referirse a una determinada persona de entre las 256.

Cualquier carácter (letras mayúsculas, minúsculas y acentuadas en diferentes idiomas)


requiere un Byte para ser especificado. Es así que para almacenar los nombres completos de 100
personas, considerando 50 caracteres por nombre, se requieren: 5000 Bytes de información.

También se define que 1024 Bytes es un KByte, entonces para guardar los nombres de las
100 personas se requieren 4,88 KB.

La codificación de la información puede realizarse en cualquier plataforma física, que


garantice que la información sea estable (que no sea afectada por el ambiente y el tiempo); que
sea rápidamente manipulable (en: acceso, transformación, transmisión y almacenamiento); y
que sea efectiva en cuanto a costo (que pueda disponerse de un gran volumen de componentes
con bajo costo unitario).

En el caso de sistemas eléctricos puede emplearse el voltaje, la corriente, la impedancia, la


fase o la frecuencia; suelen emplearse voltajes para codificar la información.

Profesor Leopoldo Silva Bijit 19-01-2010


6 Sistemas Digitales

Los bits de información se codifican en niveles de voltaje.

Tablas de verdad.

Escogiendo la codificación C1, de la Figura I.5, podemos representar al sistema de la Figura


I.4, por la siguiente tabla:

E1 E0 S1 S0
0 0 0 1
0 1 1 0
1 0 1 1
1 1 0 0

Figura I.6

Se tienen ahora dos funciones booleanas S1 y S0, en términos de las variables E1 y E0. La
representación de las funciones, mediante la Figura I.6, se denomina tablas de verdad. Se suele
asumir 1 por valor verdadero y 0 por falso, y puede emplearse el álgebra de Boole para
conceptualizar acerca de estas funciones.

Compuertas básicas. Operadores booleanos.

En el álgebra de Boole se definen los operadores and y or, mediante las tablas de verdad que
se muestran en la Figura I.7. Las tablas describen la conducta estática de las compuertas; para
estudiar su comportamiento dinámico será preciso introducir el concepto de retardo, que se verá
luego.

E1 E0 and(E1, E0) or(E1, E0)


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

Figura I.7

La Figura I.8 muestra los símbolos lógicos para la funciones or y and de dos variables.

and

or

Figura I.8

Profesor Leopoldo Silva Bijit 19-01-2010


Introducción 7
También se define la operación unaria complementar o invertir, mediante la tabla de la
Figura I.9. La variable complementada se anota con una comilla simple luego del identificador
de la variable.
A A’
0 1
1 0

Figura I.9

Se emplea el símbolo lógico, denominado inversor, que se muestra en la Figura I.10.

A A’

Figura I.10

Empleando los métodos para construir tablas de verdad, de un curso introductorio de álgebra,
podemos elaborar la tabla de la Figura I.11, en la cual el operador and se emplea con la notación
del producto lógico y el or con el operador suma lógica; el complemento de una variable se
anota agregando una comilla simple a la variable.

E1 E0 E1E0’ E1’E0 E1E0’+ E1’E0 E0’


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

Figura I.11

Expresiones booleanas.

Comparando las tablas de las Figuras I.6 e I.11, podemos escribir, las expresiones booleanas:

S1 = E1E0’+E1’E0
S0 = E0’

Se considera que dos funciones booleanas que tengan iguales tablas de verdad son
equivalentes; esto se muestra, en las ecuaciones anteriores, introduciendo el operador = para
denotar la equivalencia lógica.

Estas ecuaciones se representan, mediante las compuertas básicas ya definidas, en la Figura


I.12.

Profesor Leopoldo Silva Bijit 19-01-2010


8 Sistemas Digitales
Existen múltiples representaciones equivalentes, mediante expresiones, para las funciones de
la Figura I.6. Por ejemplo puede comprobarse que también es válida la siguiente fórmula para
S0.
S0 = E1’E0’+E1E0’

La existencia de múltiples expresiones equivalentes implica desarrollar métodos para escribir


expresiones de tal modo que su representación a través de compuertas, emplee el mínimo
número de éstas, proceso que se denomina minimización.

Esquemático.

La Figura I.12 se denomina esquemático o diagrama lógico del sistema descrito por la
Figura I.6. Los puntos de unión se han destacado con un pequeño círculo negro; los puntos en
que se cruzan cables no tienen indicada la conexión.

E1
S1

E0
S0

Figura I.12

La implementación electrónica de las compuertas requiere definir el concepto de niveles


lógicos y además, como veremos, requiere definir el tiempo de retardo de las conmutaciones.

Niveles lógicos.

Con los conocimientos de cursos previos de electrónica sabemos que el ruido y las
inexactitudes (valores de las componentes, tolerancias de fabricación, etc.) son inevitables;
debido a esto no es posible reproducir fielmente, en forma repetida, la información almacenada
en el valor de un voltaje. Por esto es preciso diseñar un sistema que tolere determinadas
magnitudes de error para que procesar la información (vía voltajes) sea confiable.
La idea básica es no permitir que un 0 pueda ser confundido con un 1 y viceversa; y que los
dispositivos elementales tengan una alta confiabilidad. Esto lleva a prohibir un rango de valores
entre los asociados al 0 y 1 lógicos, y al mismo tiempo al concepto de rango de valores 0 y 1
válidos.

Zona
prohibida
0 Válido 1 Válido

Volts

Figura I.13

Profesor Leopoldo Silva Bijit 19-01-2010


Introducción 9
Los dispositivos (combinacionales, por el momento) entonces deben adoptar valores
discretos válidos, tanto en la entrada como en la salida y disponer de una descripción funcional
que especifique los valores de la salida asociados con cada uno de los conjuntos de valores
asociados a las entradas. También debe especificarse una cota superior para el tiempo requerido
desde que las entradas cambian hasta que se tenga un valor estable en la salida (el tiempo de
propagación, no puede ser cero en dispositivos reales). El dispositivo digital también debe
aceptar entradas, dentro de los márgenes, y producir salidas dentro de los márgenes; es decir,
debe contemplar márgenes para el ruido e interferencias que inevitablemente estarán presentes.
En la siguiente gráfica se ilustran los rangos de los valores físicos de voltajes asociados a los
valores lógicos. Se emplean subíndices: O por output, I por input; además L por low (de valor
bajo) y H por high (de valor alto).
Zona
0 Válido Entrada prohibida 1 Válido Entrada

Volts
Vol Vil Vih Voh

0 Válido Salida 1 Válido Salida

Márgenes de ruido

Figura I.14

Los valores de salida deben considerarse asociados a la salida de una componente, y los
valores de entrada asociados a la entrada de una componente.

El diagrama de la Figura I.15, ilustra que VIL debe ser un poco mayor que VOL; permitiendo
absorber las fluctuaciones del voltaje, debidas al ruido causado por diversas fuentes, entre la
salida de una componente y la entrada de la siguiente:
Vruido Vi
V IL
VOL VIL VOL
t

Figura I.15

Dispositivos lógicos.

Un dispositivo básico que acepta una entrada y la deposita en la salida (sin cambios) se
denomina buffer (amortiguador) y queda definido por la siguiente función de transferencia
estática:

Profesor Leopoldo Silva Bijit 19-01-2010


10 Sistemas Digitales

Vout
VOH
VIH
Vin Vout
VIL
VOL

Vin

VOL VIL VIH VOH

Figura I.16

Los dispositivos deben ser diseñados evitando las áreas grises, que corresponden a entradas
válidas pero salidas inválidas. Se muestra una posible curva que no pasa por las áreas grises. Se
asume que normalmente los voltajes de entrada cumplen con los umbrales, y que sólo cuando
cambia el valor lógico, se ocupa la parte de la curva ubicada entre los umbrales. Como resultado
de esto se advierte que los dispositivos deben tener ganancia y ser no lineales. A la derecha se
muestra un símbolo lógico para el buffer.

Normalmente los dispositivos se diseñan empleando transistores y asociando a los valores


lógicos estados de saturación o corte (estados de bajo consumo de energía). Esto implica que si
una entrada cambia de valor bajo a alto, uno o varios de los transistores que conforman el
dispositivo, tendrán que pasar de saturación a corte o viceversa. Lo cual implica operación lineal
momentánea. En el intervalo en que opera en forma lineal, habrá un sistema aproximadamente
lineal, cuya solución incorpora exponenciales, cuya presencia implica un tiempo para llegar a un
valor estacionario. En la conmutación habrá entonces mayor consumo de las fuentes, y un
retardo asociado al cambio. En estados estables se tendrá bajo consumo de energía.

La Figura I.17, es una de las posibles características de transferencia estática de un inversor.


Es decir, un dispositivo digital que acepta una entrada baja en su entrada y la transforma en alta,
y viceversa. A la derecha se muestra el símbolo lógico para un inversor.

Profesor Leopoldo Silva Bijit 19-01-2010


Introducción 11

Vout
Voh
Vih

Vil
Vin Vout
Vol

Vin

Vol Vil Vih Voh

Figura I.17

La abstracción digital consiste en representar las variables de entrada y salida de


dispositivos tomando valores discretos 0 y 1.

Retardos de conmutación.

La Figura I.18 muestra la red electrónica que tiene el comportamiento de un inversor en base
a un transistor bipolar. El condensador C, representa la capacidad parásita entre el cable de
salida y la tierra, a ésta debe sumarse la capacidad de entrada del circuito al que esté conectada
la salida del inversor.
Si el voltaje Vin es menor que 0,7 [V], la juntura base emisor no conduce y el transistor está
en corte. Cuando se produce el corte, el voltaje Vout sube hasta Vcc, debido a la carga del
condensador, mediante una exponencial de constante de tiempo RcC. Tenemos luego de un
tiempo, un voltaje bajo en la entrada y uno alto en la salida; en esta situación se tiene un 1
lógico en la salida y el transistor está en un estado de bajo consumo.
+Vcc

Rc

NPN
C Vout
Vin

Figura I.18

Si se aplica un voltaje alto, muy superior a 0,7 y cercano a Vcc, el transistor debe estar
saturado, es decir con un voltaje entre colector y emisor cercano a 0,2 [V]. En estas condiciones
el circuito equivalente del transistor es una fuente continua de 0,2[V], en serie con una
resistencia muy baja, sea esta resistencia Rsat. El condensador, cargado a voltaje Vcc, se descarga
según una exponencial de constante de tiempo RsatC, hasta llegar al voltaje de saturación. Luego

Profesor Leopoldo Silva Bijit 19-01-2010


12 Sistemas Digitales
de un tiempo tenemos un voltaje alto en la entrada y uno bajo, 0 lógico, en la salida; en estas
condiciones el transistor está en un estado de bajo consumo.
En el Apéndice 4 se muestra la conmutación en transistores CMOS.

Al proceso de pasar de entrada baja o alta a una salida alta o baja, respectivamente, se lo
denomina conmutación. Este cambio de estado implica que el transistor pasa por su zona lineal
de operación, y durante un breve lapso de tiempo aumentará su consumo de energía.

La Figura I.19 muestra las formas de ondas de los voltajes de entrada y salida de un inversor.
Se advierte que existe un retardo entre el instante en que la entrada toma valor uno lógico y el
instante en que la salida toma valor lógico cero. Se denomina tiempo de retardo de propagación
de alto a bajo (tPDHL). También existe un retardo de propagación, que puede ser diferente al
anterior, cuando la salida pasa de 0 a 1 (tPDLH).
Vin

VIH

VIL

t
tPDHL tPDLH
Vout

VOH

VOL

t
tf tr
Tiempo Tiempo
caída subida
(fall time) (rise time)
Figura I.19

Las formas de ondas que se ilustran en la Figura I.19, son análogas, y son las que mostraría
un osciloscopio. Sin embargo tanto los simuladores como los analizadores lógicos mostrarían
señales estrictamente binarias; esto se debe a que los valores muestreados se almacenan en
forma digital. La Figura I.20, muestra las señales de conmutación, idealizadas por señales
binarias.

Profesor Leopoldo Silva Bijit 19-01-2010


Introducción 13

Vin

VIH

VIL

t
tPDHL tPDLH
Vout

VOH

VOL

Figura I.20

Perturbaciones, carreras.

Si en el circuito digital de la Figura I.12 aplicamos cambios en las entradas, las salidas
deberían cambiar según la tabla de verdad de la Figura I.6. Debido a los retardos veremos que
estos cambios no se producen inmediatamente. Si suponemos que las entradas E1 y E0 han
estado un largo tiempo con valor 1, ambas salidas estarán en 0. Esta condición se muestra en el
tiempo 0 de la Figura I.21.
t1
E1
t

E0

E1’

E0’

E1E0’

E1’E0

S1=E1’E0+E1E0’

S0
t2

Figura I.21

Profesor Leopoldo Silva Bijit 19-01-2010


14 Sistemas Digitales
Luego cambiaremos ambas entradas a cero, pero debido a que es muy poco probable que las
compuertas que generan las señales E1 y E0 tengan iguales parámetros, asumiremos que primero
cambia E1, y luego de un pequeño tiempo lo hace E0. Se dice que existe una carrera entre las
entradas; en general es muy poco probable lograr un cambio simultáneo de un conjunto de
señales.
En el instante t1, ambas entradas estarán en cero. Se han dibujado las formas de ondas de las
señales: luego de los inversores, a la salida de las compuertas and y a la salida de la compuerta
or, considerando los retardos de propagación.
Se advierte que se produce un pequeño pulso, que durante un breve instante coloca a S1 en
uno. Si lo que se deseaba era pasar de entradas 11 a entradas 00, las salidas deberían haber
cambiado de 00 a 01, sin embargo momentáneamente las salidas pasan por 11. Se puede
observar que desde el instante t2, se tienen las salidas deseadas.

Otra situación simple, en la cual se tiene un comportamiento no esperado, de acuerdo al


álgebra de Boole, es la que se ilustra en la Figura I.22. Con b=1, aplicaremos un pulso en la
entrada a, y obtendremos la forma de onda digital de la señal x.

a
x

Figura I.22

En la Figura I.23 se ilustran las formas de ondas: en la entrada, a la salida del inversor, en la
salida del and, y en la salida del or. Se aprecia que la salida va momentáneamente a cero,
cuando debía permanecer siempre en 1; este efecto se denomina perturbación estática. De
acuerdo al algebra de Boole, la salida x puede escribirse según: x=a+a’=1.

a
t
a’

a+a’

x
t1

Figura I.23

Entonces: los cambios no simultáneos de las entradas, y las operaciones and y or con
operandos iguales a una señal y su complemento, que produzcan una salida, originan cambios
indeseados en la salida de una red combinacional.

Profesor Leopoldo Silva Bijit 19-01-2010


Introducción 15
Estudiaremos, más adelante, los fundamentos del diseño combinacional libre de
perturbaciones, sin embargo la no simultaneidad de los cambios del vector de entrada no puede
ser resuelto dentro de la red combinacional.

La siguiente simulación Verilog (Ver Apéndice 5), genera las formas de ondas, de la Figura
I.24, asumiendo que los retardos de los inversores son de una unidad de tiempo de simulación, y
que las compuertas and y or tienen retardos de dos unidades. Se describe la red combinacional
mediante la interconexión de compuertas de la Figura I.12, mediante el módulo funcioncnt. La
Figura I.24, es generada automáticamente, mediante simulación; la Figura I.21, fue generada
manualmente. El módulo test produce una secuencia de estímulos que genera el archivo
cntmod4.vcd, que emplea un formato estándar para las formas de ondas.

module funcioncnt(input E1, E0, output S1, S0);


wire n1,n2,n3;
not #1 (n1,E1);
and #2 (n2,n1,E0);
and #2 (n3,E1,S0);
or #2 (S1,n2,n3);
not #1 (S0,E0);
endmodule

module test(inputS1,S0,output E1,E0);


reg E1,E0;
initial
begin
$dumpfile("cntmod4.vcd");
$dumpvars(0, E1,E0,S1,S0);
end
initial
begin
$monitor("E1=%b E0=%b S1=%b S0=%b ", E1, E0, S1, S0 , $time);
E1=1; E0=1;
#10 E1=0;
#4 E0=0;
#20 E1=1;
#20 $finish;
end
endmodule

module BancoDePrueba;
wire E1,E0;
wire S1,S0;
funcioncnt f1 (E1,E0,S1,S0);
test t1 (S1,S0,E1,E0);
endmodule

Profesor Leopoldo Silva Bijit 19-01-2010


16 Sistemas Digitales

Figura I.24

Mediante la componente lógica, denominada flip-flop, veremos cómo puede sincronizarse


las salidas de una red combinacional, de tal modo que no se vean afectadas por las carreras de
las entradas o perturbaciones generadas en el sistema combinacional.

I.4. Sistemas digitales secuenciales.

Flip-flop D.

Este elemento se considera de naturaleza secuencial, y es una memoria de un bit. Funciona


bajo el control de un reloj; en el instante que el reloj sube, se toma una muestra del valor de
entrada, se la almacena y se cambia la salida, de acuerdo al valor recién muestreado. Luego
cuando la señal de reloj, pasa a cero, la salida no cambia. El símbolo lógico se muestra en la
Figura I.25.

D Q

Q’
Clk

Figura I.25

Reloj

El reloj es una señal periódica que establece instantes de referencia o sincronización,


pudiendo ser éstos los cantos de subida o de bajada del reloj. Se discretiza la variable tiempo, de
tal modo que las variables adoptan valores constantes entre los cantos de referencia.
La Figura I.26 muestra el funcionamiento del flip-flop D: la señal Q permanece constante
entre ciclos de reloj, esto equivale a memorizar un valor durante un intervalo de tiempo. La
salida Q registra el valor de la entrada D, en el momento en que ocurre el canto de subida del
reloj.

Set-up, hold, tiempo de propagación.

En un dispositivo real es preciso que no ocurran cambios de la entrada un intervalo antes del
canto de subida del reloj (set-up); y un intervalo después del canto de subida del reloj (hold).

Profesor Leopoldo Silva Bijit 19-01-2010


Introducción 17
También se muestra que los cambios de la salida ocurren un tiempo de propagación luego del
canto de subida del reloj. En el capítulo 14 sobre sistemas asincrónicos se darán las razones de
estas restricciones temporales.
t1 t2 t3

Clk
D
Q

Figura I.26

Las formas de ondas consideran que el valor inicial de Q es cero. Los cambios de las
entradas después del tiempo de hold de un canto de subida, y antes del tiempo de set-up del
próximo canto de subida, no son registrados por el flip-flop; lo que se ilustra en el intervalo t3 de
la Figura I.26.

Salidas combinacionales sincronizadas por un reloj.

Si a la red de la Figura I.4, le conectamos dos flip-flops D, se tendrá la red combinacional


sincronizada, que se muestra en la Figura I.27. También se dice que tenemos una red
combinacional con salida registrada.
E1 S1
s1

E0 S0
s0

clk

Figura I.27

Si las entradas S1 y S0 (con mayúsculas) cumplen los requerimientos de set-up y hold, las
salidas s1 y s0 (con minúsculas) experimentan sus cambios luego del canto de subida del reloj, y
permanecen estables entre cantos de subida del reloj.

Los cambios de un vector, luego de un tiempo de propagación a través de los flip-flops, se


insinúan con ambas conmutaciones, como se ilustran los cambios de s, en el diagrama de la
Figura I.28. Suele indicarse el valor que toma el bus en binario, decimal o hexadecimal, con un
número dentro de las zonas.
La Figura I.28 muestra la secuencia de valores: 00, 01, 11, y 10 en el bus s, en la salida de los
flip-flops.

Profesor Leopoldo Silva Bijit 19-01-2010


18 Sistemas Digitales

clk

s 01 11 10

Figura I.28

Debe destacarse que es poco probable el cambio simultáneo de las salidas de flip-flops
diferentes, a pesar de que operen con igual reloj.

Si los circuitos que generan las señales E1 y E0, lo efectúan mediante salidas registradas,
controladas por el mismo reloj, se tienen:
a) Si el tiempo de propagación a través de los flip-flops es mayor que el tiempo de hold, los
cambios (posiblemente no simultáneos) del vector E, se producen con el reloj alto.
b) Las señales S1 y S0 pueden contener cambios no deseados, que deben extinguirse antes
del tiempo de set-up. Si esto no se cumple debe bajarse la frecuencia del reloj.
c) Si las señales S1 y S0 cumplen los requerimientos del tiempo de set-up y hold, los valores
capturados por los flip-flops contendrán en s1 y s0, los valores estables de S1 y S0.

La Figura I.26, muestra que los cambios, de las entradas, entre cantos de subida del reloj no
son considerados para ser grabados; prácticamente son filtrados.

Realimentaciones. Sistema secuencial sincrónico.

Si en el circuito de la Figura I.27, realimentamos las salidas s hacia las entradas E, se obtiene
el sistema secuencial sincrónico que se muestra en la Figura I.29.

S1
E1 s1

S0
E0 s0

clk

Figura I.29

Supongamos que ambos flip-flops tienen salida 0. Entonces, entre dos cantos de reloj la
salida será s1=0 y s0=0, entonces las entradas a la red combinacional serán E1=0 y E0=0. Lo

Profesor Leopoldo Silva Bijit 19-01-2010


Introducción 19
cual produce, luego de un tiempo, las salidas S1=0 y S0=1. Si estas salidas de la red
combinacional están estables antes del próximo canto de subida del reloj, al llegar éste, se
tendrán: s1=0 y s0=1. Cuando los valores de los flip-flops cambian se dice que ha ocurrido un
cambio de estado. El vector booleano asociado a los valores de los flip-flops se denomina
estado.
Estando en el estado s={0,1}, en el próximo canto de subida del reloj, se tendrá, debido a la
red combinacional que produce S={1,0}, que el nuevo estado será: s={1,0}.

Las transiciones entre estados pueden representarse mediante el diagrama de estados de la


Figura I.30, que muestra el valor de cada estado dentro de un círculo. Hay 4 círculos ya que se
tienen 4 estados. La ocurrencia del canto de subida del reloj, momento en el cual se produce la
conmutación de los flip-flops, se muestra con una flecha que conecta dos estados, desde el
estado actual al próximo estado.
00

11 01

10

Figura I.30

Otra forma de describir la información del diagrama de estados es a través de una tabla de
transiciones, que muestre en una columna el estado presente y en otra, el próximo estado.

Estado Presente Próximo estado


s1 s0 S1 S0
0 0 0 1
0 1 1 0
1 0 1 1
1 1 0 0

Figura I.31

Debido a las realimentaciones, la tabla anterior describe la red combinacional vista al inicio,
en la Figura I.6.

Puede describirse en Verilog la red de la Figura I.29, se ha agregado la señal Resetn, para
colocar la máquina secuencial en el estado inicial s=00.

module cntmod4 (input clk, Resetn, output [1:0] s);


reg [1:0] s, S;
// Red combinacional de próximo estado.
always @(s)

Profesor Leopoldo Silva Bijit 19-01-2010


20 Sistemas Digitales
begin
S[1] = (s[1]&!s[0])|(!s[1]&s[0]);
S[0] = !s[0];
end
// Proceso secuencial del registro.
always @(negedge Resetn or posedge clk)
if (Resetn == 0) s <= 0;
else s <= S; //estado presente<=próximo estado
endmodule

En el Apéndice 5 se describe el uso de Verilog para representar, simular y diseñar sistemas


digitales.

Figura I.32

La Figura I.32, muestra las formas de ondas producidas con la simulación del contador
módulo 4. Muestra en binario los diferentes valores que toma el vector s, entre cantos de subida
del reloj.

Generalizaciones. Red booleana.

Una generalización permite una visión más profunda de un problema particular. Una
generalización ayuda a diferenciar las propiedades especiales o particulares de las generales.

La Figura I.33, es una generalización de la situación anterior, en la cual se ha agregado un


vector x, que constituye la entrada al sistema secuencial. Ahora las transiciones de un estado a
otro dependen de las entradas y del estado presente s. También se ha agregado un control que
permite colocar todos los flip-flops en cero, de esta manera puede dejarse al sistema en el
estado cuyo nombre binario está formado por puros ceros, que suele denominarse estado inicial.
Es indispensable conocer el estado inicial, para generar la secuencia de estados que se recorren
cuando se aplica una determinada secuencia de entrada.
Otra generalización es agregar un módulo que genere un vector de salida. Si la salida
depende de la entrada y el estado se denomina modelo de Mealy a esta representación de una
máquina secuencial. Si la salida sólo depende del estado presente se obtiene el modelo de
Moore.

Profesor Leopoldo Silva Bijit 19-01-2010


Introducción 21
Reset’

x P1 P2

E S s
DQ

Clk

Figura I.33

Un mayor grado de generalización se muestra en la Figura I.34, que muestra una red
booleana, formada por la interconexión de redes combinacionales con registros. El diseño de
estas redes, debido a su complejidad, está basado en la descripción de diferentes módulos
mediante lenguajes. Cada módulo es desarrollado y simulado antes de ser integrado como una
parte del sistema mayor. El sistema debe describirse mediante las operaciones de
transformación que efectúan los bloques combinacionales y las reglas para almacenar
confiablemente la información en los registros. Esto suele efectuarse describiendo las
transferencias entre registros; razón por la cual se suele denominar RTL (Register Transfer
Level) a la descripción de sistemas digitales en este nivel.

salidas

entradas

Figura I.34 Red booleana.

Si todas las señales de sincronización (los clk de los registros) son iguales se dice que el
sistema es sincrónico; en caso contrario el sistema es asincrónico.

Profesor Leopoldo Silva Bijit 19-01-2010


22 Sistemas Digitales
I.5. Definiciones de algunos conceptos generales de sistemas digitales.

Evento

Se denomina evento al cambio de valor de una señal en un instante de tiempo. Pasar de nivel
lógico 1 a 0 se denomina canto de bajada. Un canto de subida se produce cuando la señal pasa
de nivel lógico 0 a 1.

A un evento también se lo denomina mensaje; los valores que toman los eventos suelen
interpretarse como símbolos pertenecientes a un alfabeto.

Máquina abstracta.

Una máquina abstracta es un modelo de computación que establece cómo se generan las
acciones, o eventos de salida, a partir de los mensajes o eventos de entrada.

Mensajes Acciones
Máquina

Figura I.35

Sistemas combinacionales.

Se denominan máquinas o sistemas combinacionales a aquellos cuyas salidas, en un


instante de tiempo, dependen solamente de los valores que toman las entradas en ese instante de
tiempo. Lo cual puede describirse por una función o tabla que especifique los valores de las
salidas para cada una de las combinaciones posibles de las entradas. En estos sistemas las
componentes no cambian sus propiedades a medida que transcurre el tiempo.

Ejemplo de sistema combinacional.

En el siguiente sistema combinacional, se tienen dos eventos asociados a los interruptores S1


y S2, y una acción de salida L asociada a la ampolleta.

Los eventos de entrada pueden tomar los valores: abrir o cerrar. La acción de salida puede
tomar los valores: apagar o encender.
V
L
S2

S1
Figura I.36

Profesor Leopoldo Silva Bijit 19-01-2010


Introducción 23
El sistema puede especificarse mediante la siguiente tabla:

S1 S2 L
abrir abrir apagar
abrir cerrar encender
cerrar abrir encender
cerrar cerrar encender

Figura I.37

También empleando el lenguaje C:


if ( (S1 == cerrar ) || (S2 == cerrar) ) L = encender; else L = apagar;

o alternativamente:
if ( (S1 == abrir ) && (S2 == abrir) ) L = apagar; else L = encender;

Si puede construirse la tabla que relaciona los eventos de entrada con los de salida, el sistema
es combinacional. En la descripción mediante un lenguaje, si sólo se emplean sentencias de
alternativa (if then else, switch) el sistema es combinacional.

Existen sistemas más complejos que los combinacionales, son aquellos que pueden cambiar
sus atributos en función del tiempo (dinámicos).

Estado.

Se denomina estado al conjunto de atributos que representan las propiedades de un sistema u


objeto en un determinado instante de tiempo.
En el caso de componentes digitales que tienen dispositivos que pueden almacenar valores,
se denomina estado al contenido de la memoria.

El estado refleja la condición en que se encuentra el sistema o máquina digital.

Máquinas de estados.

Se denominan máquinas de estados a aquellas cuyas salidas, en un instante de tiempo,


dependen de los valores que toman las entradas y el estado en ese instante de tiempo. Lo cual
puede describirse por una función de transición que especifique los valores de las salidas y del
próximo estado para cada una de las combinaciones posibles de las entradas y del estado
presente. Las computaciones comienzan a partir de un estado inicial y de una secuencia de
valores de la entrada.

Transición.

Se denomina transición al cambio de estado del sistema, y ésta debe indicar cómo se pasa de
un estado a otro.

Profesor Leopoldo Silva Bijit 19-01-2010


24 Sistemas Digitales
Un modelo matemático adecuado para la función de transición es una matriz, en la cual los
renglones y columnas representan los eventos de entrada y los diferentes estados; el contenido
de la matriz especifica el próximo estado y las salidas.

Diagrama de estados.

Se denomina diagrama de estados a una representación gráfica, en la cual los estados se


representan como círculos (o rectángulos) y las transiciones como líneas orientadas, que
conectan los estados, y que representan los eventos de entrada.

Ejemplo de máquina de estados.

Consideremos como ejemplo de máquina de estados a un torniquete, similar a los empleados


en el acceso al metro.

Figura I.38

El torniquete tiene dos estados: puede estar trabado o destrabado. Cuando el torniquete está
trabado, una persona puede ingresar un boleto, este evento causa que el torniquete pase al estado
destrabado. Estando destrabado, cuando se produce el evento de que una persona pasa, haciendo
girar el torniquete, éste pasa al estado trabado.

En el siguiente diagrama se ilustran las transiciones entre estados, éstas se han identificado
por un par (evento de entrada)/(evento de salida), ilustrando que las salidas están asociadas a las
transiciones (Modelo de Mealy).

Cuando se inserta el boleto, se genera o dispara la acción de destrabar; cuando la persona al


pasar hace girar el torniquete, se produce la acción de trabar.

Profesor Leopoldo Silva Bijit 19-01-2010


Introducción 25

Insertar/Destrabar

destrabado trabado

Pasar/Trabar

Figura I.39

El diagrama modela la máquina de estados finitos, y para su completa especificación debe


establecerse un estado inicial. Se asume que el estado inicial es el estado trabado.

El diagrama considera que los mensajes o eventos de entrada ocurren normalmente, según lo
planeado por el diseñador y describen claramente las funciones del sistema en forma precisa,
permitiendo además juzgar si el diseño está o no completo.

Los usuarios podrían gatillar eventos normales en tiempos en los que éstos no se esperan.
Por ejemplo: estando en estado trabado, se podría generar la señal de paso (aplicando fuerza
bruta); o estando destrabado volver insertar un boleto. Estos eventos deben ser tratados en un
diseño real, ojalá en el modelado inicial; su no consideración temprana podría generar un
producto de mala calidad o inútil.
Para resolver la situación podría generarse una alarma en caso de intentar pasar cuando el
torniquete está trabado. Esto implica una acción adicional, y al mismo tiempo la necesidad de
un evento adicional que apague la alarma; o bien la creación de un estado adicional de
violación. Por otro lado, puede bloquearse el ingreso de boletos cuando el torniquete está
destrabado, o bien lo que propondría un ingeniero comercial: prender un aviso luminoso que
diga “gracias”. Lo cual lleva a especificar la acción de apagar dicho letrero, que también debe
agregarse al diagrama.

Insertar/Destrabar

Iniciar

Insertar/Agradecer Pasar/Alarmar
destrabado trabado

Pasar/Trabar

Profesor Leopoldo Silva Bijit 19-01-2010


26 Sistemas Digitales
Figura I.40

A medida que se va completando la especificación de un sistema real pueden ir aumentando


el número de eventos, de estados y también el número de acciones, lo cual lleva a diagramas
complejos.

También puede especificarse que el sistema tendrá un modo de servicio y otro de


mantenimiento, lo cual podría estudiarse como dos diagramas interconectados (diseños
modulares).

La siguiente matriz de transiciones describe la máquina de estados, especificando el


próximo estado en función del estado presente y de los eventos de entrada.

Eventos de
entrada
Estado Pasar Insertar
actual
Trabado Trabado Destrabado
Destrabado Trabado Destrabado
Próximo estado

Figura I.41

La siguiente matriz define las salidas asociadas a las transiciones.

Eventos de
entrada
Estado Pasar Insertar
actual
Trabado Alarmar Destrabar
Destrabado Trabar Agradecer
Acciones

Figura I.42

Si puede describirse un sistema mediante un diagrama de estados o a través de las matrices


de transiciones y de salida se dice que el sistema es secuencial.

En casos más complejos, en la implementación por software de máquinas de estados finitos,


puede emplearse una matriz de objetos. Donde cada entrada es un objeto que contiene los
métodos o conductas deseadas.
La naturaleza secuencial implica el uso de sentencias de repetición. La función de transición
puede implementarse mediante switches. Sin embargo a medida que el sistema aumenta sus
estados y/o entradas se va complicando la lectura y el tamaño del código de la función.

Profesor Leopoldo Silva Bijit 19-01-2010


Introducción 27
Debido a que el modelo de programación orientado a objetos y la programación de sistemas
de tiempo real emplean máquinas de estados finitos, han aparecido numerosas y nuevas
herramientas para especificar y verificar diagramas de estado.

Lenguajes de descripción de hardware.

En implementaciones de hardware, basadas en componentes digitales, han evolucionado


rápidamente los lenguajes de descripción de hardware (HDL), que permiten especificar
ejecuciones paralelas de acciones; en lugar de las estrictamente secuenciales de los lenguajes de
programación.

Autómata de estados finitos determinista.

Si el número de estados es finito, se denominan máquinas de estados finitos. Si el próximo


estado queda unívocamente determinado por un solo evento se denominan determinísticas.
Si hay transiciones sin un evento de entrada o más de una transición para un par determinado
entrada-estado, se denominan no determinísticas.

Es posible generar un autómata de estados finitos determinista que tenga las mismas salidas,
para iguales entradas, que uno no determinista.

Tipos de máquinas.

Existen varios tipos de máquinas. Se denominan de Mealy aquellas cuyas salidas se


producen en las transiciones entre estados; y de Moore a aquellas en la cuales las salidas están
asociadas al estado. Existen procedimientos para convertir un modelo de Mealy en uno de
Moore.

Reloj.

Si las transiciones ocurren en determinados instantes de tiempo se denominan sincrónicas.


Los instantes en que se producen los cambios de estado están asociados al canto de subida, o al
de bajada, de una señal denominada reloj.

Máquinas secuenciales.

Las máquinas de estados finitos suelen denominarse máquinas secuenciales ya que a partir
de una secuencia ordenada de eventos de entrada, generan una secuencia de estados por los que
pasa la máquina, y a su vez una secuencia de acciones de salida.

Algunas aplicaciones de máquinas secuenciales.

Un nuevo e importante uso de los conceptos de este curso es en la programación orientada a


objetos. Los objetos tienen un estado, el cual es dado por el valor de sus atributos. En este
ambiente el diseño de una clase puede facilitarse si se intenta modelar los estados de un objeto
en el mundo real, mediante un diagrama de estados. Las máquinas de estados finitos han llegado
a ser el modelo estándar para representar la conducta de los objetos.

Profesor Leopoldo Silva Bijit 19-01-2010


28 Sistemas Digitales

El control de un computador es una máquina de estados. Los protocolos de red se


implementan mediante máquinas de estados.

Las máquinas secuenciales son un poderoso modelo para implementar esquemas de control
secuencial (dependientes de la historia pasada), tanto en hardware como en software. Facilitan
el diseño de la programación de sistemas multitareas, en tiempo real, utilizando
microcontroladores.

El modelo de máquina secuencial se emplea en Teoría de lenguajes formales y tiene


importantes aplicaciones en reconocimiento de patrones y analizadores léxicos y sintácticos, por
mencionar algunas.

Diseño.

Diseñar es resolver un problema, a partir de su especificación, escogiendo apropiadamente


las componentes desde un conjunto disponible, y tal que se satisfagan algunos criterios para el
tamaño, costo, velocidad de operación, consumo de energía, elegancia, etc.

El diseño digital podría definirse como la determinación de las componentes digitales que
realizan las especificaciones de comunicación, control y procesamiento de los datos. Más
específicamente, es descomponer la solución en redes combinacionales y/o secuenciales
organizando jerárquicamente el diseño y empleando efectivamente herramientas
computacionales modernas de ayuda al diseño.

Las técnicas anteriores se aplican en diseño de computadores, redes, comunicaciones, y en


automatización de procesos productivos; en resumen el diseño digital está presente en
numerosas e importantes aplicaciones de la ingeniería electrónica. El siguiente diagrama ilustra
un sistema digital muy utilizado:

Profesor Leopoldo Silva Bijit 19-01-2010


Introducción 29

Computador Personal. Tarjeta Madre Circuito Integrado


Hardware y Software 500*106 Transistores 5*106 Transistores

Compuerta Celda Módulo


10 Transistores 50 Transistores 100*103 Transistores

Figura I.43

El diagrama ilustra la estructura jerárquica de los sistemas digitales, en la cual cada nivel
tiene complejidad acotada y además los bloques constructivos básicos se emplean con diferente
propósito.

En el menor nivel los dispositivos están implementados con transistores MOSFET. Estas
componentes primitivas más un sistema para codificar la información en forma digital, permiten
construir los diferentes niveles de un sistema digital.

Figura I.44

Profesor Leopoldo Silva Bijit 19-01-2010


30 Sistemas Digitales
También puede advertirse que la implementación de un sistema complejo tiene una gran
cantidad de trabajo de diseño. Lo cual implica gran número de personas involucradas en
diferentes niveles; para lograr una mejor cooperación los bloques constructivos deben imponer
límites que muestren las interfases entre los bloques en forma sencilla y bien especificada.

Un buen trabajo de diseño implica: poder adaptarse a mejoras tecnológicas, permitir realizar
tareas diferentes con los mismos módulos y ser efectivo en cuanto a costos.

Para lograr lo anterior es preciso:

Desarrollar abstracciones de los bloques primitivos, y conocer los principios para organizar
los bloques constructivos básicos en unidades más complejas.

I.6. Resumen.

Se estudiarán los fundamentos matemáticos de las funciones de variables discretas, su


estructura y diversos métodos de representación de funciones. Luego los principios y técnicas
para modelar situaciones del mundo real, mediante funciones booleanas y registros. Después
se analizarán sistemas ya diseñados para posteriormente diseñar, implementar o sintetizar,
mediante diferentes tecnologías, sistemas digitales combinacionales y secuenciales.

Se desea mostrar:
Los principios de diseño digital basados en el álgebra de Boole, con utilización de
herramientas computacionales, para minimizar las ecuaciones y analizar el comportamiento
temporal.
El concepto de estado y de máquinas secuenciales.
Cómo especificar, simular y sintetizar los diseños en dispositivos programables y no
programables.

Conviene conocer el diseño en bajo nivel de los subsistemas típicamente usados, de esta
manera se conocerá su funcionalidad, sus alcances, la forma de generalizarlos, y su costo. Luego
las descripciones de la arquitectura pueden realizarse basada en esos módulos.

Un curso básico en sistemas digitales debe profundizar en el diseño de los bloques básicos,
y también capacitar en descomponer un problema en términos de esos bloques. Esto
garantiza plantear arquitecturas con partes que serán sintetizadas eficientemente.

La Figura I.45, muestra el proceso de síntesis como un nivel intermedio, entre las
descripciones de arquitecturas mediante módulos sintetizables (top-down), y el desarrollo de
módulos básicos implementados mediante compuertas y flip-flops (bottom-up).

Emplearemos el lenguaje de descripción de hardware Verilog, que permite las descripciones


y simulaciones en los diferentes niveles, dando homogeneidad al proceso de diseño.

Profesor Leopoldo Silva Bijit 19-01-2010


Introducción 31

Arquitectura abstracta

Síntesis

Bloques Básicos

Compuertas
Flip-flops

Figura I.45

La construcción de compuertas, en base a transistores, se describe en forma introductoria en


el Apéndice 4; la elaboración de flip-flops, en base a compuertas se introduce en el Capítulo 14
dedicado a sistemas digitales asincrónicos. Sin embargo la descripción detallada de los
principios de diseño de las compuertas, flip-flops, multivibradores monoestables, etc., en base a
transistores y componentes de redes eléctricas no es tratada en este texto.

Profesor Leopoldo Silva Bijit 19-01-2010


32 Sistemas Digitales

Índice general.

INTRODUCCIÓN ................................................................................................................................1
SISTEMAS DIGITALES .....................................................................................................................1
I.1 DEFINICIÓN. ...................................................................................................................................1
I.2 DISEÑO CLÁSICO Y ACTUAL............................................................................................................1
I.3 CONCEPTOS BÁSICOS EN SISTEMAS DIGITALES. ..............................................................................2
Codificación. ..................................................................................................................................3
Sistema numérico binario. ..............................................................................................................4
Información. Bit, Byte. ..................................................................................................................4
Tablas de verdad. ...........................................................................................................................6
Compuertas básicas. Operadores booleanos. ................................................................................6
Expresiones booleanas. ..................................................................................................................7
Esquemático. ..................................................................................................................................8
Niveles lógicos................................................................................................................................8
Dispositivos lógicos. .......................................................................................................................9
Retardos de conmutación. ............................................................................................................11
Perturbaciones, carreras..............................................................................................................13
I.4. SISTEMAS DIGITALES SECUENCIALES...........................................................................................16
Flip-flop D. ...................................................................................................................................16
Reloj .............................................................................................................................................16
Set-up, hold, tiempo de propagación. ...........................................................................................16
Salidas combinacionales sincronizadas por un reloj. ..................................................................17
Realimentaciones. Sistema secuencial sincrónico. .......................................................................18
Generalizaciones. Red booleana. .................................................................................................20
I.5. DEFINICIONES DE ALGUNOS CONCEPTOS GENERALES DE SISTEMAS DIGITALES. ..........................22
Evento ...........................................................................................................................................22
Máquina abstracta. ......................................................................................................................22
Sistemas combinacionales. ...........................................................................................................22
Ejemplo de sistema combinacional. .............................................................................................22
Estado. ..........................................................................................................................................23
Máquinas de estados. ...................................................................................................................23
Transición. ...................................................................................................................................23
Diagrama de estados. ...................................................................................................................24
Ejemplo de máquina de estados. ..................................................................................................24
Lenguajes de descripción de hardware. .......................................................................................27
Autómata de estados finitos determinista. ....................................................................................27
Tipos de máquinas. .......................................................................................................................27
Reloj. ............................................................................................................................................27
Máquinas secuenciales. ................................................................................................................27
Algunas aplicaciones de máquinas secuenciales. ........................................................................27
Diseño. .........................................................................................................................................28
I.6. RESUMEN. ...................................................................................................................................30
ÍNDICE GENERAL. ..............................................................................................................................32
ÍNDICE DE FIGURAS............................................................................................................................33

Profesor Leopoldo Silva Bijit 19-01-2010


Introducción 33

Índice de figuras.

Figura I.1 ....................................................................................................................................... 2


Figura I.2 ....................................................................................................................................... 2
Figura I.3 ....................................................................................................................................... 3
Figura I.4 ....................................................................................................................................... 3
Figura I.5 ....................................................................................................................................... 3
Figura I.6 ....................................................................................................................................... 6
Figura I.7 ....................................................................................................................................... 6
Figura I.8 ....................................................................................................................................... 6
Figura I.9 ....................................................................................................................................... 7
Figura I.10 ..................................................................................................................................... 7
Figura I.11 ..................................................................................................................................... 7
Figura I.12 ..................................................................................................................................... 8
Figura I.13 ..................................................................................................................................... 8
Figura I.14 ..................................................................................................................................... 9
Figura I.15 ..................................................................................................................................... 9
Figura I.16 ................................................................................................................................... 10
Figura I.17 ................................................................................................................................... 11
Figura I.18 ................................................................................................................................... 11
Figura I.19 ................................................................................................................................... 12
Figura I.20 ................................................................................................................................... 13
Figura I.21 ................................................................................................................................... 13
Figura I.22 ................................................................................................................................... 14
Figura I.23 ................................................................................................................................... 14
Figura I.24 ................................................................................................................................... 16
Figura I.25 ................................................................................................................................... 16
Figura I.26 ................................................................................................................................... 17
Figura I.27 ................................................................................................................................... 17
Figura I.28 ................................................................................................................................... 18
Figura I.29 ................................................................................................................................... 18
Figura I.30 ................................................................................................................................... 19
Figura I.31 ................................................................................................................................... 19
Figura I.32 ................................................................................................................................... 20
Figura I.33 ................................................................................................................................... 21
Figura I.34 Red booleana. ........................................................................................................... 21
Figura I.35 ................................................................................................................................... 22
Figura I.36 ................................................................................................................................... 22
Figura I.37 ................................................................................................................................... 23
Figura I.38 ................................................................................................................................... 24
Figura I.39 ................................................................................................................................... 25
Figura I.40 ................................................................................................................................... 26
Figura I.41 ................................................................................................................................... 26
Figura I.42 ................................................................................................................................... 26
Figura I.43 ................................................................................................................................... 29

Profesor Leopoldo Silva Bijit 19-01-2010


34 Sistemas Digitales
Figura I.44 ................................................................................................................................... 29
Figura I.45 ................................................................................................................................... 31

Profesor Leopoldo Silva Bijit 19-01-2010


1

Sistemas Digitales.

Diseño lógico con Verilog.

Sinopsis.

El texto está orientado a un primer curso de diseño lógico en programas de estudios de


ingenieros eléctricos, electrónicos, telemáticos y de ciencias de computación. Los conceptos de
diseño se introducen empleando técnicas manuales clásicas, en los bloques constructivos
básicos, tanto combinacionales como secuenciales; para luego emplear las actuales herramientas
de apoyo computacional al diseño, que permiten sintetizar arquitecturas más reales y complejas.
Se da especial énfasis a una clara presentación de los fundamentos, que han mostrado ser
estables en el tiempo, y se acompaña con una escogida colección de problemas resueltos y
ejercicios propuestos. A través de apéndices se exponen tutoriales del tipo paso por paso, de
varias herramientas de apoyo al diseño; dando preferencia a aquellas de software abierto o que
han sido puestas a disposición de la comunidad, para adquirir experiencia práctica en el uso de
éstas.

Prólogo.

El texto estudia los fundamentos matemáticos de las funciones de variables discretas, su


estructura y diversos métodos de representación de funciones. Luego los principios y técnicas
para modelar situaciones del mundo real, mediante funciones booleanas y registros. Después
se analizan sistemas existentes para posteriormente diseñar, implementar o sintetizar, mediante
diferentes tecnologías, sistemas digitales combinacionales y secuenciales.

El texto intenta mostrar: Los principios de diseño digital basados en el álgebra de Boole, con
utilización de herramientas computacionales, para minimizar las ecuaciones y analizar el
comportamiento temporal; el concepto de estado y de máquinas secuenciales; y finalmente,
cómo especificar, simular y sintetizar los diseños en dispositivos programables y no
programables.

El permanente cambio que tiene el estudio de sistemas digitales se debe principalmente a tres
factores: la continua evolución de la tecnología digital que en menor tamaño coloca cada vez
mayor número de componentes más rápidas; el desarrollo de herramientas de ayuda al diseño
digital (CAD) que permiten enfrentar tareas extremadamente complejas; y finalmente, las
nuevas metodologías de desarrollo de software, que facilitan el desarrollo de aplicaciones

Profesor Leopoldo Silva Bijit 19-01-2010


2 Sistemas Digitales
complejas con interfases visuales, como las herramientas CAD y los lenguajes de descripción de
hardware (HDL).

Las primeras metodologías de diseño digital, que podríamos denominar clásicas, permiten
comprender los principios de funcionamiento de los sistemas digitales básicos, y pueden ser
desarrolladas usando papel y lápiz. Emplean los principios teóricos del álgebra de Boole y
métodos de minimización de funciones booleanas; sin embargo, los algoritmos son de tipo no
polinomial, y no pueden ser aplicados a situaciones de mediana complejidad (redes con más de
5 entradas), debido a su costo exponencial.

Sin embargo, al ser posible enfrentar diseños digitales más complejos, debido a la tecnología,
debieron desarrollarse nuevas heurísticas para representar sistemas digitales, minimizarlos, y
poder implementarlos en base a bloques lógicos determinados. En estos nuevos algoritmos,
están basadas las actuales herramientas CAD; su exposición y estudio, más que a un curso
básico de sistemas digitales, corresponden a disciplinas de programación, estructuras de datos y
algoritmos. Actualmente el diseño, la simulación y la implementación o síntesis de sistemas
digitales se realizan mediante complejos y numerosos algoritmos incrustados dentro de las
herramientas computacionales de apoyo al diseño.

A través del texto se muestra que conviene conocer el diseño en bajo nivel de los subsistemas
típicamente usados; de esta manera se conocerá su funcionalidad, sus alcances, la forma de
generalizarlos, y su costo. Luego las descripciones de arquitecturas más complejas pueden
realizarse basada en esos módulos.

Un texto actual en sistemas digitales debe profundizar en el diseño de los bloques básicos, y
también capacitar en descomponer un problema en términos de esos bloques. Esto garantiza
plantear arquitecturas con partes que serán sintetizadas eficientemente. De esta forma se define
el diseño como: Desarrollar abstracciones de los bloques primitivos, y conocer los principios
para organizar los bloques constructivos básicos en unidades más complejas.

Por las razones anteriores, el texto expone los principios de diseño digital basándose en las
técnicas clásicas, que pueden ser asimiladas con ejercitación basada en métodos para papel y
lápiz; y en forma paralela se introduce la utilización de Verilog en los diferentes niveles del
diseño digital.

La Figura P1, muestra el proceso de síntesis como un nivel intermedio, entre las descripciones
de arquitecturas mediante módulos sintetizables (top-down), y el desarrollo de módulo básicos
implementados mediante compuertas y flip-flops (bottom-up). Los lenguajes de descripción de
hardware, como Verilog, permiten las descripciones y simulaciones en los diferentes niveles,
dando homogeneidad al proceso de diseño.

Profesor Leopoldo Silva Bijit 19-01-2010


Prólogo y Contenidos 3

Arquitectura abstracta

Síntesis

Bloques Básicos

Compuertas
Flip-flops

Figura P1.

La construcción de compuertas, en base a transistores, se describe en forma introductoria en el


Apéndice 4; la elaboración de flip-flops, en base a compuertas se introduce en el Capítulo 14,
dedicado a sistemas digitales asincrónicos. Sin embargo la descripción detallada de los
principios de diseño de las compuertas, flip-flops, multivibradores monoestables, etc., en base a
transistores y componentes de redes eléctricas no es tratada en este texto.

Contenidos.

El texto está organizado en 16 capítulos y 7 apéndices, con numerosos problemas resueltos y


ejercicios propuestos.

En la Introducción mediante el desarrollo de un ejemplo simple, se muestran los principales


temas que serán expuestos en el texto.

En el Capítulo 1, se definen funciones y expresiones boolenas, y se describen sus


representaciones más utilizadas. Se estudian las relaciones entre las representaciones y se
plantean los criterios de reducción o minimización de funciones.

El Capítulo 2, describe la estructura interna de las funciones boolenas basada en mintérminos y


maxtérminos y se desarrollan los métodos de síntesis en dos niveles como suma de productos y
producto de sumas. Se muestran los efectos de los retardos de las compuertas, y se analizan las
perturbaciones en las salidas de redes combinacionales y el efecto de las carreras en las entradas
a las mismas.

El Capítulo 3 introduce conceptos fundamentales sobre codificación binaria y define algunos


códigos que serán empleados más adelante.

El Capítulo 4 define y utiliza n-cubos para ilustrar los principios de minimización de funciones
booleanas. Define implicantes e implicantes primos e introduce la matriz de coberturas como
representación matricial de los cubos o implicantes.

Profesor Leopoldo Silva Bijit 19-01-2010


4 Sistemas Digitales
El Capítulo 5 desarrolla la representación y minimización de funciones empleando mapas de
Karnaugh. Se dan ejemplos de minimización, empleando mapas, en las formas suma de
productos y producto de sumas, considerando condiciones superfluas.

El Capítulo 6 describe los principales algoritmos de minimización para encontrar los


implicantes primos y reducir tablas de implicantes, que permiten encontrar las representaciones
mínimas de funciones combinacionales.

El Capítulo 7 describe sistemas combinacionales básicos como multiplexores, decodificadores y


sumadores, basados en compuertas y en dispositivos programables. Se describen diferentes
soluciones basadas en EPROM, PAL, PLA, y su evolución hasta llegar a CPLD, FPGA y ASIC.

El Capítulo 8 muestra los principales conceptos de la síntesis multinivel, incluyendo las


operaciones de descomposición y factorización; y destaca la necesidad de herramientas
computacionales de apoyo a la síntesis.

El Capítulo 9 define los principales conceptos sobre sistemas secuenciales. A partir de


especificaciones se obtienen diagramas de estados para modelos de Mealy y Moore. Se estudian
procedimientos de transformación de modelos de Mealy a Moore, y se desarrollan numerosos
ejemplos para la síntesis de diagramas de estado.

El Capítulo 10 muestra los diferentes tipos de memorias primitivas sincrónicas o flip-flops.


Analizando los requerimientos temporales y algunas metodologías de sincronización.

El Capítulo 11 desarrolla los principales métodos de análisis y síntesis de sistemas secuenciales


sincrónicos. Empleando métodos clásicos y usando Verilog.

El Capítulo 12 elabora algoritmos y heurísticas para la reducción de estados equivalentes y la


asignación de estados.

El Capítulo 13 muestra los principios de diseño de los principales bloques básicos secuenciales:
contadores, registros de desplazamiento y almacenamiento. Introduce metodologías de diseño,
de sistemas sincrónicos, basadas en dispositivos programables y el uso de un secuenciador para
implementar máquinas de estado.

El Capítulo 14 analiza dispositivos asincrónicos, profundizando en el funcionamiento de


latches, para luego elaborar sobre éstos la forma de construir diferentes tipos de flip-flops. Se
analizan multivibradores aestables y monoestables. Se describen diferentes tipos de carreras.
Finalmente se muestran algunos diseños de sistemas asincrónicos, basados en diagramas de
flujo y de estados, libres de carreras y perturbaciones.

El Capítulo 15 describe registros, buses y memorias, creando un vínculo para cursos sobre
estructuras de computadores.

El Apéndice 1, expone en detalle el álgebra de Boole, demostrando los principales teoremas que
se usarán en el texto. Se incluye un método de deducción natural basado en reglas de inferencia
y la exposición de los diferentes silogismos.

Profesor Leopoldo Silva Bijit 19-01-2010


Prólogo y Contenidos 5

El Apéndice 2, expone el uso del lenguaje Abel, como una muestra de los primeros lenguajes de
apoyo al diseño digital.

El Apéndice 3, es un manual práctico del uso de espresso, desarrollado por la Universidad de


Berkeley, en el diseño de sistemas digitales combinacionales y secuenciales.

El Apéndice 4, desarrolla los principales circuitos de conmutación: interruptores, relés,


controladores lógico programables; compuertas lógicas basadas en diodos y transistores
bipolares. Se expone con más detalle las compuertas lógicas y dispositivos programables
basadas en tecnología CMOS. Su finalidad es establecer un vínculo con la electrónica y los
dispositivos físicos.

El Apéndice 5, muy extenso, es un texto adicional sobre el uso de Verilog, como herramienta
actual de diseño y simulación de sistemas digitales. Se exponen los fundamentos de la
simulación orientada a eventos y se dan numerosos ejemplos de sistemas combinacionales y
secuenciales. Al final se exploran las herramientas de síntesis basadas en tablas de búsqueda y
en bloques de ram y registros de desplazamiento.

El Apéndice 6, es un manual práctico sobre el uso de sis, desarrollado por la Universidad de


Berkeley, con aplicaciones en la síntesis multinivel y en el mapeo tecnológico a dispositivos
programables. También se expone el uso de herramientas para la reducción y asignación de
estados y la síntesis de sistemas secuenciales sincrónicos, basada en compuertas y flip-flops.
Finalmente se muestran ejemplos de descripción y diseño de sistemas secuenciales asincrónicos.

El Apéndice 7, introduce en el uso de abc, un Sistema para síntesis secuencial y verificación,


desarrollado recientemente por la Universidad de Berkeley. Una característica muy útil que
presenta esta herramienta es permitir introducir diseños empleando descripciones estructurales
Verilog, además de las tradicionales. También permite visualizar mapas de Karnaugh de varias
variables.

Profesor Leopoldo Silva Bijit 19-01-2010


1

Capítulo 1

Funciones Booleanas

Cada salida de un sistema digital combinacional puede describirse por una función booleana
de sus variables de entrada. Es decir, las salidas de una red combinacional dependen solamente
de sus entradas. Lo anterior se considera la definición de un sistema digital combinacional.

1.1. Definiciones

i) Una variable booleana es un símbolo, el cual puede ser sustituido por un elemento del
conjunto B={0,1}. Una constante booleana es un valor perteneciente al conjunto {0,1}.
ii) El elemento que es sustituido por el símbolo de la variable se llama el valor de la variable.
iii) Una función booleana de n variables f ( x1 , x2 ,..., xn ) , es un mapeo o correspondencia que
asocia un valor booleano a f, con cada una de las posibles combinaciones de valores que
pueden tomar las variables.
iv) Una expresión o fórmula booleana queda definida, recursivamente, por las reglas:
a) Constantes y variables son expresiones.
b) Si x e y son expresiones, entonces:
x+y, x·y, x’, y’, (x) también son expresiones.
v) Una función booleana es una función f ( x1 , x2 ,..., xn ) , para la cual existe una expresión
E ( x1 , x2 ,..., xn ) , tal que:
f ( x1 , x2 ,..., xn ) E ( x1 , x2 ,..., xn ) (1.1)

vi) Un literal es el símbolo empleado para una variable o su complemento.

vii) Dos expresiones son equivalentes si una puede ser obtenida a partir de la otra mediante un
número finito de aplicaciones de los postulados o teoremas. O bien si tienen las mismas tablas
de verdad.

viii) Suelen emplearse dos tipos restringidos de expresiones:

La siguiente sintaxis, muestra la formación de expresiones como suma de productos.


Una expresión es un OR de sus términos.
Un término es el AND de sus factores.
Un factor es: una constante, o una variable, o una variable complementada.

Profesor Leopoldo Silva Bijit 19-01-2010


2 Sistemas Digitales

Ejemplo: 0 + a + 1bc + d’ + a’cde

La siguiente sintaxis, muestra la formación de expresiones como producto de sumas.


Una expresión es un AND de sus términos entre paréntesis.
Un término es el OR de sus factores.
Un factor es: una constante, o una variable, o una variable complementada.

Ejemplo: a(1)(c+d’+0)(a + b + c + e’)

1.2. Espacios y funciones Booleanas.

Si definimos el espacio booleano según: B = {0, 1}.

Mediante el producto cartesiano podemos definir el espacio B2, según:

B2 = {0, 1}X{0, 1} = {(00), (01), (10), (11)} (1.2)

Para x = (x1, x2), podemos definir una función booleana f de dos variables según:

f ( x) : B 2 B (1.3)

Cada punto de B2 se mapea a B.

Para n variables booleanas, con: x ( x1 , x2 ,..., xn ) , se define una función f según:

f ( x) : B n B (1.4)

Para cada punto de B n la función f ( x) asigna un elemento de B ; la función booleana


puede tomar valores 1 ó 0 dependiendo de los valores individuales de las variables.

El conjunto uno u “on” de f puede definirse como los puntos de B n que se mapean a 1:

f1 f 1
(1) x | f ( x) 1 (1.5)

El conjunto cero u “off” de f puede definirse como los puntos de B n que se mapean a 0:

f0 f 1
(0) x | f ( x) 0 (1.6)

Si f 1 B n se dice que f es una tautología. Se anota: f 1


Si f 0 B n se tiene que f 1 es vacío y se dice que f no es satisfacible. En lógica la
expresión asociada a la función se denomina contradicción.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 1. Funciones Booleanas 3
Una función es satisfacible cuando existe al menos un elemento en el conjunto uno. Es
decir: para al menos una combinación de las entradas la función toma valor verdadero.

Dos funciones f y g son equivalentes si para todo x B n se tiene:

f ( x) g ( x) (1.7)

1.3. Representación de Funciones Booleanas

1.3.1. Expresiones.

Una función puede ser descrita por una expresión.


Ejemplo:
f( A, B, C) = AB + A’C + AC’ (1.8)

La función puede evaluarse para las diferentes combinaciones de valores que tomen las
variables. Se ilustra la evaluación de la función para A = 1, B = 0 y C = 0.

f( 1, 0, 0) = 1 0 + 1’ 0 + 1 0’
= 0 +0 0+1 1
= 1

Existen infinitas representaciones equivalentes de una función a través de expresiones.

Esto nos lleva al problema de síntesis lógica que consiste en encontrar la “mejor” expresión
para representar a una función.
La mayor ventaja de esta representación es que puede ser muy compacta y facilita la
manipulación matemática. Sin embargo resulta difícil el tratamiento algorítmico.

1.3.2. Tabla de verdad

Una función puede ser descrita por una tabla de verdad.


Una tabla de verdad despliega todas las posibles combinaciones de valores de las variables y
el valor asociado de la función. Por ejemplo, para la expresión (1.8):

A B C f
0 0 0 0
0 0 1 1
0 1 0 0
0 1 1 1
1 0 0 1
1 0 1 0
1 1 0 1
1 1 1 1

Figura 1.1. Tabla de verdad de AB + A’C + AC’.

Profesor Leopoldo Silva Bijit 19-01-2010


4 Sistemas Digitales
La mayor ventaja de la representación por tabla de verdad es que es única. Dos funciones
con tablas de verdad iguales son equivalentes.

Sin embargo a medida que el número de variables aumenta su uso se torna impracticable. El
crecimiento exponencial del número de renglones, ya que éstos se duplican al aumentar en una
variable, impiden que esta representación se emplee para desarrollar algoritmos
computacionales eficientes.

Una variante de las tablas de verdad son las matrices de cobertura que se desarrollan en
4.6.4.

1.3.3. Esquema Lógico.

Un diagrama o esquemático empleando símbolos estandarizados para las funciones lógicas.


Símbolos de compuertas básicas (gates)

NOT

AND NAND
D Q
OR NOR

XOR XNOR clk

Figura 1.2. Símbolos lógicos de compuertas y flip-flop D.

Los símbolos lógicos anteriores representan a las funciones booleanas básicas, cuyas
definiciones se presentan en 1.4.2.
La Figura 1.3 ilustra las relaciones geométricas de los símbolos IEEE para las compuertas
lógicas elementales.

26
19
26
5 10 13
4
26
26

Figura 1.3. Relaciones métricas de los símbolos lógicos.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 1. Funciones Booleanas 5
Se ha agregado el símbolo de un elemento que permite almacenar un bit de información; el
cual tiene una señal de entrada D y una señal de salida Q; cuando la señal de control, o reloj clk,
sube a uno se copia o almacena el valor lógico de entrada en el flip-flop. Cuando el control clk,
baja a cero, la salida mantiene el valor almacenado, independientemente de los cambios de la
entrada. Las redes combinacionales se pueden representar sin emplear flip-flops.
Esquemático red digital.
La Figura 1.4 representa mediante símbolos normalizados a la tabla de la Figura 1.1.
A
B
A’
f
C
A
C’

Figura 1.4. Esquemático de AB + A’C + AC’

Existen múltiples esquemáticos que pueden representar la misma función. La ventaja de esta
representación es que está asociada a la implementación.

La mayoría de las herramientas de ayuda al diseño digital permiten ingresar, en un ambiente


visual, un esquemático mediante la colocación de componentes y una posterior interconexión o
alambrado.

Los esquemáticos pueden describirse mediante secuencias de texto, que especifican las
compuertas y los cables que las interconectan. Se denominan netlist a estas representaciones.
Síntesis lógica.
El problema de síntesis lógica consiste en encontrar un circuito C(G, A), formado por un
conjunto G de compuertas y flip-flops, y un conjunto A de alambres o elementos orientados que
interconectan las compuertas y flip-flops.

Se denominan secuenciales a los circuitos digitales que contienen flip-flops, compuertas y


lazos de realimentación; y combinacionales a los que sólo contienen compuertas lógicas sin
realimentaciones.

1.3.4. Diagrama Temporal.

Se representa mediante las formas de ondas de las entradas y de las salidas.

Empleando simuladores, pueden obtenerse formas de ondas de las señales. En estos


diagramas pueden observarse los retardos de propagación a través de las compuertas.

Profesor Leopoldo Silva Bijit 19-01-2010


6 Sistemas Digitales
40 50 60 70 80 90 100
0 10 20 30
C
B
A
f

Figura 1.5. Diagrama temporal

Para confeccionar el diagrama temporal de la Figura 1.5, se generaron las ocho


combinaciones posibles para las variables de entrada y se graficó la salida f, de (1.8).

Los cambios de f no están alineados con los cambios de las entradas, debido a que toma
tiempo para que una compuerta cambie su estado. Es similar a una tabla de verdad, pero
horizontal.

Nótese que entre los tiempos 10 y 20, la señal f debería estar en 1 lógico(A=1, C'=1), sin
embargo esto ocurre un poco después (tipo 2 unidades). Esto se debe al retardo de propagación
a través de las compuertas.
También se aprecia, en la gráfica de la Figura 1.5, que la salida tiene una caída a cero, un
poco después del tiempo 40; como se verá después, es una perturbación.
En el tiempo cercano a cero existe un valor no lógico asociado a f, esto es debido a que el
simulador no puede conocer la salida hasta que los valores iniciales se hayan propagado a través
de las compuertas.

Las formas de ondas pueden también visualizarse mediante un analizador lógico, o con un
osciloscopio.
Retardos de propagación.
Existe un retardo entre la salida y la entrada de una compuerta, que se denomina retardo de
propagación.

La Figura 1.6, muestra las formas de ondas a la entrada y salida de un inversor, en las que se
han definido los retardos de propagación (propagation delay) de un canto de subida y de un
canto de bajada. Al mismo tiempo se definen los tiempos de subida y de bajada.

Los retardos de propagación han sido definidos como cotas superiores de retardos entre
entradas válidas y salidas válidas.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 1. Funciones Booleanas 7

Vin

VIH

VIL

t
tPDHL tPDLH
Vout

VOH

VOL

t
tf tr
Tiempo caída Tiempo subida
(fall time) (rise time)

Figura 1.6. Retardos de propagación.

También pueden definirse los mínimos retardos de propagación o tiempos de contaminación


como las cotas mínimas entre entradas inválidas y salidas inválidas.

Vin
VIH

VIL

t
Vout tCDHL tCDLH

VOH

VOL

t
Figura 1.7. Tiempos de contaminación.

En la práctica, los fabricantes de dispositivos tienen sus propias definiciones de dichos


tiempos y de la forma de medirlos.

Profesor Leopoldo Silva Bijit 19-01-2010


8 Sistemas Digitales
También existen retardos de propagación de las señales a través de los cables, debido a que
la velocidad de propagación de una onda electromagnética que se apoya en los conductores no
viaja a velocidad infinita. Este retardo, a través de los cables, es despreciable en bajas
frecuencias.

La Figura 1.8, muestra las formas de ondas idealizadas en las entradas y salidas de los
inversores. Nótese que los tiempos de propagación son acumulativos en conexiones en cascada.

A1 A2 A3

A1

A2

A3

Figura 1.8. Retardos idealizados en inversor.

Entonces en la práctica, debido a los retardos de propagación, no puede aplicarse el


postulado de complementariedad en las transiciones de A.
A A 1
Es decir:
A A 0

no son verdaderas, en las transiciones; esto debido a que no es posible generar un


complemento de una variable que cambie simultáneamente con la variable.

En diseño de redes combinacionales se asume que si se conoce A; y si se necesita A negada,


ésta se obtendrá mediante un inversor, en este caso A’ estará atrasada en el tiempo respecto de
A. También puede ocurrir que se genere A a partir de A'.
Perturbaciones.
En el diagrama de la Figura 1.9 se muestran perturbaciones, cuando una señal y su
complemento pasan por diferentes compuertas. Se ilustra el caso de and, or, nand y nor.
Se muestran los cambios cuando la señal está retrasada y adelantada con respecto a su
complemento.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 1. Funciones Booleanas 9

A A’ A’ A

A A

A’ A’

A
A’
A
A’

A
A’

A
A’

A' atrasada respecto de A. A atrasada respecto de A'

Figura 1.9. Perturbaciones estáticas en compuertas.

Se denomina perturbación en 1, si el nivel de la salida debe permanecer en 1 y si se produce


momentáneamente un cero. La duración y ocurrencia de la perturbación depende de los retardos
de las señales que la producen.
Se tiene una perturbación en "0" si existe una subida momentánea del nivel de la señal de
salida a 1, debiendo ésta permanecer baja.

En una compuerta AND, en la que ingresan una señal y su complemento, se produce


perturbación del cero lógico, con el canto de subida de A, si ésta está adelantada respecto de A';
o en el canto de subida de A' si ésta está adelantada respecto de A.

En una compuerta OR, en la que ingresan una señal y su complemento, se produce


perturbación del uno lógico, con el canto de bajada de A, si ésta está adelantada respecto de A';
o en el canto de bajada de A' si ésta está adelantada respecto de A.

1.3.5. Diagramas de Venn.

Similares al visto en el Teorema 13 de consenso, en el Apéndice 1.

Otras formas de representación, que se desarrollaran más adelante, se enumeran a


continuación:

Profesor Leopoldo Silva Bijit 19-01-2010


10 Sistemas Digitales
1.3.6. Mapas de Karnaugh.

Es la principal representación conceptual de funciones booleanas. Se dispone de esta


representación desde el año 1953. Su uso práctico queda limitado a funciones de cinco o menos
variables.

1.3.7. N-cubos.

Diagrama de la función en un espacio discreto multidimensional. Lo emplearemos como


fundamento conceptual de los mapas de Karnaugh y de los métodos de minimización.

1.3.8. Lenguajes de descripción de hardware.

Para sistemas reales se emplean aplicaciones computacionales que emplean lenguajes para la
descripción del hardware (HDL Hardware Description Language).

El empleo de lenguajes como VHDL o Verilog, permiten describir el diseño, efectuar


simulaciones y verificaciones, y finalmente efectuar el proceso de síntesis.

1.4. Funciones de varias variables.

1.4.1 Funciones de n variables.

Si hay n variables, la tabla de verdad tendrá N 2n renglones. Para un renglón


determinado la función puede tomar valor 0 ó 1. Entonces pueden escribirse 2 N tablas de
verdad diferentes.
n
Es decir, 22 funciones booleanas de n variables.

La siguiente tabla muestra el rápido crecimiento del número de funciones booleanas de n


variables.

n N 2n 22
n

0 1 2
1 2 4
2 4 16
3 8 256
4 16 65536
... ...

Figura 1.10. Número de funciones

El caso n = 0 se interpreta como una función descrita por 0 variables; es decir por una
constante. En esta situación existe sólo un valor posible (N=1) y como la constante puede ser 0
ó 1 el número de funciones de cero variables es 2.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 1. Funciones Booleanas 11
1.4.2 Funciones de dos variables.

Para n = 2 las tablas de verdad tienen cuatro renglones. Los cuatro casilleros de una función
pueden llenarse de 16 formas, las que se muestran en la siguiente tabla.

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


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

Figura 1.11. Funciones de dos variables

Las funciones se han numerado, en binario, considerando el primer renglón como el dígito
menos significativo. Por ejemplo: 0111 equivale a 7, en sistema binario. Lo cual puede verse
de la siguiente relación: 0 23 +1 22 + 1 21 +1 20 = 7

Las 16 funciones booleanas de dos variables pueden representarse en forma analítica,


mediante expresiones booleanas, las que se muestran en la Figura 1.8.

f0 = 0 f8 = AB
f1 = A'B' = (A + B)' f9 = A'B' + AB
f2 = A'B f10 = A'B + AB = B
f3 = A'B' + A'B = A' f11 = A'B' + A'B + AB = A' + B
f4 = AB' f12 = AB' + AB = A
f5 = A'B' + AB' = B' f13 = A'B' + AB' + AB = A + B'
f6 = A'B + AB' f14 = A'B + AB' + AB = A + B
f7 = A'B' + A'B + AB' = A' + B' = (AB)' f15 = A'B' + A'B + AB' + AB = 1

Figura 1.12. Expresiones para funciones de dos variables

Las diferentes expresiones pueden comprobarse verificando que se satisfacen las tablas de
verdad de la Figura 1.11.

Algunas de estas funciones son tan utilizadas, que se las reconoce con un nombre.
Definiciones de funciones lógicas de dos variables.
f1 (A, B) = nor (A, B) = A B
f 8 (A, B) = and (A, B) = A B
f 6 (A, B) = xor (A, B) = A B (1.9)
f 7 (A, B) = nand (A, B) = A B
f14 (A, B) = or (A, B) = A + B

Profesor Leopoldo Silva Bijit 19-01-2010


12 Sistemas Digitales
La función 1 se denomina nor (por: not or). La función 8 se denomina and; la 14 or; la 3 es la
negación de A, o not A.

La función 6, se denomina xor, por or exclusivo. Toma valor verdadero si los valores lógicos
de A y B son diferentes; por esto también se la denomina desigualdad o diferencia.

La función 9 se denomina xnor. Toma valor verdadero si los valores lógicos de A y B son
iguales. Por esto se la denomina igualdad o coincidencia .
La función 9 se denomina equivalencia lógica o bicondicional; la función 11 es la
implicancia lógica o condicional.

f9 (A,B) = not (xor (A,B)) = A B (1.10)

f11 (A,B) = A B =A B

En el Apéndice 1, se desarrolla con más detalles la importancia de la función 11 en el cálculo


proposicional.

En la Figura 1.13 se destaca la diferencia entre OR (inclusivo) y XOR (exclusivo), difieren


en el último renglón de su tabla de verdad.

A B OR XOR
0 0 0 0
0 1 1 1
1 0 1 1
1 1 1 0

Figura 1.13. Diferentes or

Propiedades de la función Xor.

A 0=A
A 1 =A
A A=0
A A=1

Las primeras dos expresiones se emplean en el cálculo de complementos; se puede generar la


señal o su complemento mediante una señal de control que es una entrada a la compuerta xor.
Las dos últimas se emplean en circuitos para detectar errores.
También se tienen las siguientes equivalencias:
x y=y x
(x y) z = x (y z)
x (y z)=xy xz
Las que pueden demostrarse empleando tablas de verdad.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 1. Funciones Booleanas 13

Conjuntos Funcionalmente Completos.


Cualquier expresión booleana puede ser escrita mediante los operadores AND, OR, y NOT.
Se dice que estos operadores constituyen un conjunto funcionalmente completo.

Por lo tanto un circuito combinacional puede construirse usando sólo compuertas AND, OR
y NOT.

Las siguientes relaciones muestran que la función NAND es funcionalmente completa, ya


que pueden implementarse circuitos combinacionales sólo empleando este tipo de compuertas.

Si la función efectúa el nand de sus entradas, puede generar:


El not de una variable, ingresando la misma señal en ambas entradas.
El or de dos variables, ingresando las señales complementadas al nand.
El and de dos variables, complementando la salida del nand, mediante un inversor
(implementado también empleando una compuerta nand).

nand ( A, B) AB
nand ( A, A) A
nand ( A, B ) A B

También la función NOR es funcionalmente completa. Esto puede verse observando que la
función nor, genera el complemento de una variable, y también el or y el and de dos variables.
nor ( A, B) A B
nor ( A, A) A
nor ( A, B ) AB
Generalización para funciones de más de dos variables.
Algunas funciones pueden generalizarse para más de dos variables, por ejemplo:

and (a, b, c) abc (1.11)


or (a, b, c, d ) a b c d

La función xor para n variables puede generalizarse, estableciendo que la función toma valor
uno si se tiene un número impar de variables que toman valores iguales a 1; y toma valor cero si
el número de variables que toman valor 1 es par.

1.5. Formulación de expresiones booleanas.

A partir de la descripción de un problema, generalmente expresada en forma de texto, se


desea obtener fórmulas lógicas mediante expresiones que emplean variables booleanas.

Profesor Leopoldo Silva Bijit 19-01-2010


14 Sistemas Digitales
Ejemplo 1.1.

(Taub): En un estante hay 5 libros (v, w, x, y, z) que se pueden tomar cumpliendo las
siguientes reglas:
a) Se seleccionan v o w o ambos
b) Se seleccionan x o z pero no ambos
c) se selecciona v y z juntos, o bien una selección que no incluya a ninguno de ellos
d) si se selecciona y, también debe seleccionarse z
e) si se selecciona a w, también debe seleccionarse a v e y.
Expresar cómo seleccionar un grupo de libros cumpliendo las reglas anteriores.

Solución.
Sean:
u la proposición lógica que indica que la selección de libros cumple las reglas
el nombre del libro es la proposición lógica que indica que se tomó dicho libro para formar
la selección.

Como las reglas de selección deben cumplirse simultáneamente, debe entenderse que debe
cumplirse la primera regla y la segunda, y así sucesivamente.

Por lo tanto: u es igual al and de las reglas individuales.

La regla a), establece el or (incluye a ambos) de v con w. Es decir: v + w.

La regla b), establece el xor (no incluye a ambos) de x con z. Es decir: x z.

Para la regla c), se tiene:

v z regla c)
0 0 1
0 1 0
1 0 0
1 1 1

Es decir: (v z)'

La regla d) traducida es: y z


La regla e) traducida es: w vy

Entonces: u = (v + w)( x z) (v z)' (y z)( w vy )

Reemplazando los operadores por or, and y not, se obtiene:

u = (v + w)(xz' + x'z)(vz + v'z')(y' + z)( w' + vy)

Efectuando los productos:

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 1. Funciones Booleanas 15
(v+w) (vz +v'z') = vvz + vv'z + vwz + v'wz' que se simplifica a: vz + v'wz'
(xz' +x'z)(y' +z) = xy'z' + xzz' + x'y'z + x'zz que se simplifica a : xy'z' + x'z

entonces queda: u = (vz + v'wz' )( xy'z' + x'z )( w' + vy)

El producto (vz + v'wz' )( w' + vy) puede simplificarse a: (vw'z + vyz)

Y el producto ( xy'z' + x'z ) (vw'z + vyz) = x'vw'z + x'vyz

Finalmente: u = vx'z(w' +y)

Que puede leerse:


Se debe seleccionar v y z, y rechazar x; y si se selecciona w también debe seleccionarse y.

Una frase alternativa para (w' +y) es: si no se selecciona w, la selección de y es opcional.

Ejemplo 1.2.

(Dietmeyer). Tres interruptores(a, b, c) controlan dos ampolletas (una roja R, y otra verde V)
del modo siguiente:
a) Cuando los tres interruptores están cerrados, se enciende la luz roja.
b) Cuando el interruptor A está abierto y B o C están cerrados se enciende la luz verde.
c) No deben encenderse ambas ampolletas a la vez.
d) En el resto de los casos la roja debe encenderse, excepto cuando los tres interruptores están
abiertos, en este caso no debe encenderse ninguna ampolleta.

Solución:

Se emplea la siguiente asignación de valores lógicos:


a interruptor cerrado se asigna 1 lógico,
a ampolleta encendida se le asigna 1 lógico.

La especificación b) se interpreta como o incluyente; es decir, B o C o ambos cerrados.

De la condición d), se extrae la especificación e)


e) cuando los tres interruptores están abiertos no debe encenderse ninguna ampolleta.

Si se puede completar la tabla de verdad, el problema está completamente especificado:

Profesor Leopoldo Silva Bijit 19-01-2010


16 Sistemas Digitales

A B C R V
0 0 0 0 0 por condición e
0 0 1 0 1
0 1 0 0 1
0 1 1 0 1 por condición b.
1 0 0 1 0
1 0 1 1 0
1 1 0 1 0 por condición c
1 1 1 1 0

por condición d por condición a. por condición c

Figura 1.14. Tabla de verdad para Ejemplo 1.2.

Se va completando la tabla, con las especificaciones, la última en aplicar es la d).

Se advierte que si no se hubiese dado, por ejemplo, la especificación c), el problema queda
indeterminado. En estos casos es preciso efectuar suposiciones o agregar especificaciones.

Por esto podría decirse que una tabla de verdad es una especificación formal.

Una vez que se tiene la tabla pueden encontrarse las expresiones para R y V en función de A,
B y C.
Puede comprobarse que cada uno de la función está asociado a un producto lógico de las
variables A, B y C. Y que la función es la suma lógica de esos productos, se tiene entonces que:

R = AB'C' + AB'C + ABC' + ABC


V = A'B'C + A'BC' + A'BC

que pueden simplificarse, empleando teoremas, resultando:

R = A.
V = A'(B +C)

1.6. Teoremas relativos a funciones de varias variables.

T.16 Función Dual

f d ( x1 , x2 ,..., xn , 0,1, •, ) f ( x1 , x2 ,..., xn , 0,1, •, ) (1.12)

Este teorema permite calcular la función dual ( fd) de una función f. Debe notarse que no se
intercambian las constantes y los operadores.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 1. Funciones Booleanas 17
T.17 Reducción.

x1 f ( x1 , x2 ..., xn ) x1 f (0, x2 ,..., xn ) (1.13)


x1 f ( x1 , x2 ..., xn ) x1 f (1, x2 ,..., xn )

Demostración por inducción perfecta de la primera proposición. Se analizan todos los casos
que se presentan cuando la variable x1 toma todos los valores que le son posibles.

Considerando:
x1 f ( x1 ,..., xn ) x1 f (0, x2 ,..., xn )

Cuando x1 = 0, entonces: 0 f (0, x2 ..., xn ) 0 f (0, x2 ,..., xn )


Resultando por P3 que: f (0, x2 ..., xn ) f (0, x2 ,..., xn )

Cuando x1 = 1, entonces: 1 f (1, x2 ..., xn ) 1 f (0, x2 ,..., xn )


Resultando por T9 que: 1 = 1

Se concluye que: x1 f ( x1 ,..., xn ) x1 f (0, x2 ,..., xn ) es válida para todos los


valores que puede tomar x1. El postulado P3 y el Teorema 9, se describen en el Apéndice 1.

T.18 Teorema de expansión de Shannon.

f ( x1 , x2 ,..., xn ) x1 f (1, x2 ,..., xn ) x1 f (0, x2 ,..., xn ) (1.14)


f ( x1 , x2 ,..., xn ) ( x1 f (0, x2 ,..., xn )) ( x1 f (1, x2 ,..., xn ))

Las funciones f (0, x2 ,..., xn ) y f (1, x2 ,..., xn ) se denominan cofactores x1 de f, y son


funciones de (n-1) variables.

Demostración por inducción perfecta o completa de la primera proposición.

Considerando: f ( x1 , x2 ,..., xn ) x1 f (1, x2 ,..., xn ) x1 f (0, x2 ,..., xn )


Cuando x1 = 0, entonces:
f ( 0,x2 ,...,x n ) 0 f ( 1,x2 ,...,x n ) 1 f ( 0,x2 ,...,x n )

Por T.9 y P.3 se llega a: f (0, x2 ,..., xn ) f (0, x2 ,..., xn )

Cuando x1 = 1, entonces:
f ( 1,x2 ,...,x n ) 1 f ( 1,x2 ,...,x n ) 0 f ( 0,x2 ,...,x n )

Por T.9 y P.3 se llega a: f (1, x2 ,..., xn ) f (1, x2 ,..., xn )

Profesor Leopoldo Silva Bijit 19-01-2010


18 Sistemas Digitales
Entonces f ( x1 , x2 ,..., xn ) x1 f (1, x2 ,..., xn ) x1 f (0, x2 ,..., xn ) es válida para todos
los valores que puede tomar x1.

La repetida aplicación de este teorema permite representar una función de n variables como
una suma de productos o un producto de sumas.
Ejemplo 1.3.
En desarrollos de minimización se clasifican las funciones, dependiendo de cómo aparecen
las variables en una forma suma de productos.

Si se divide o parte f en términos de x3, se tiene:


f ( x1 , x2 , x3 ) f ( x1 , x2 , 0) x3 ' f ( x1 , x2 ,1) x3
Si f ( x1 , x2 , 0) 0 se dice que f es unata positiva respecto de x3. Es decir si en la forma
suma de productos no aparece x3’.
Si f ( x1 , x2 ,1) 0 se dice que f es unata negativa respecto de x3. Es decir si en la forma
suma de productos no aparece x3.

T.19 Generalización de De Morgan.

f '( x1 , x2 ..., xn , 0,1, , ) f ( x '1 , x '2 ,..., x 'n ,1, 0, , )

1.7. Minimización (reducción o simplificación) de Funciones.

Criterios de Reducción.

Cada función tiene una y sólo una tabla de verdad asociada; sin embargo pueden escribirse
diferentes expresiones booleanas para la misma función. Esto implica diferente costo.

a) Si se minimiza el número de compuertas empleadas, se tendrá un circuito más pequeño, lo


que influencia directamente el costo de manufactura, debido a que se requiere un circuito
impreso de menor superficie y menor número de componentes. También disminuyen las
probabilidades de fallas debidas a componentes defectuosas, debido al menor número de éstas.

La Figura 1.15, muestra el encapsulamiento de compuertas en pastillas de 14 patas, en


dispositivos de baja integración. Debe notarse que a medida que aumentan las entradas de las
compuertas, disminuye el número de éstas en un chip o pastilla.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 1. Funciones Booleanas 19

Figura 1.15. Compuertas TTL serie 74xx

Al aumentar la densidad de transistores en los dispositivos, el problema es encontrar


metodologías para mapear adecuadamente los diseños basados en compuertas a las estructuras
de los dispositivos programables.

b) Si se minimiza el número de entradas a las compuertas, se tendrá menos transistores en


cada compuerta y por lo tanto un costo menor. Si se considera las señales y sus complementos,
presentes en una expresión, como entradas de compuertas, puede definirse el concepto de literal
en una expresión.

Un literal es la ocurrencia de una variable o su forma complementada en una expresión.

Si se desea minimizar las entradas, debe minimizarse el número de literales en una


expresión.

Ejemplo 1.4.

f(x, y, z) = x’y(z+y’x) +y’z es una expresión que tiene 7 literales.

Puede reducirse, aplicando postulados y teoremas a:

f(x, y, z) = (xy)’z = (x’ +y’)z que tiene 3 literales.

Es usual asumir que se dispone de las variables y sus complementos como entradas de una
red combinacional, por esta razón se cuentan los literales.

Profesor Leopoldo Silva Bijit 19-01-2010


20 Sistemas Digitales
Como se verá más adelante algunos elementos básicos de memoria (flip-flops) entregan
como salidas las variables y sus complementos, en la Figura 1.16 se muestran un flip-flop JK y
un flip-flop D, la señal de control CP (clock pulse) es el reloj:

J Q D Q
CP _ _
K Q CP Q

Figura 1.16. Salidas complementadas en Flip-flops

También en los dispositivos programables existen circuitos inversores en las entradas, en la


Figura 1.17., se ilustra la generación de A’ a partir de la entrada A:

A A'
A
Figura 1.17. Entradas complementadas

Ejemplo 1.5.

Como se ha dicho: Existen diversas expresiones para una misma función.

Sea la función f(A, B, C) = (A+C) B' (C +D)

Que puede implementarse con compuertas según:


A

B f

Figura 1.18. Diseño en dos niveles.

La representación es en dos niveles. Definiendo el nivel por el número de compuertas a


través de las cuales se propagan las señales de entrada hasta llegar a la señal de salida.
La implementación, de la Figura 1.18, tiene 8 entradas y 5 literales. Y emplea una compuerta
que tiene más de dos entradas (3 en el and del ejemplo).

Si expresamos ahora la misma función f por la expresión equivalente:

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 1. Funciones Booleanas 21
f =(A+C)(B' (C + D))

De este modo todas las compuertas empleadas no tienen más de dos entradas, según puede
verse en el esquema de la Figura 1.19:
A

f
B

Figura 1.19. Diseño en tres niveles.

La implementación de la Figura 1.19 tiene 9 entradas y 5 literales. La suma de las entradas se


obtiene sumando las entradas a todas las compuertas, ya sea en el diagrama o en la expresión
booleana.
Notando que un cambio en la señal C o D o B, debe propagarse por tres compuertas, se dice
que el circuito está implementado en tres niveles. La señal A se propaga en dos niveles hasta la
salida f.

c) Si lo que se desea es aumentar la velocidad de respuesta, se requiere disminuir el número de


niveles.
Para lograr esto, en general se requerirán compuertas con mayor número de entradas lo cual
aumenta el costo.

Obviamente existirá un compromiso entre velocidad y costo; el que se suele denominar


compromiso: tiempo-espacio.

Los circuitos lógicos que tienen igual tabla de verdad son equivalentes, pero pueden tener
diferente costo, en tiempo o en espacio.

Existen diversas herramientas para explorar el compromiso entre retardos y tamaño, que
permiten generar automáticamente diferentes soluciones, empleando minimización lógica para
reducir la complejidad espacial y optimización de los retardos para aumentar la velocidad de
respuesta.

Profesor Leopoldo Silva Bijit 19-01-2010


22 Sistemas Digitales

Índice general.

CAPÍTULO 1.........................................................................................................................................1
FUNCIONES BOOLEANAS ...............................................................................................................1
1.1. DEFINICIONES ...............................................................................................................................1
1.2. ESPACIOS Y FUNCIONES BOOLEANAS............................................................................................2
1.3. REPRESENTACIÓN DE FUNCIONES BOOLEANAS ............................................................................3
1.3.1. Expresiones. .........................................................................................................................3
1.3.2. Tabla de verdad ....................................................................................................................3
1.3.3. Esquema Lógico. ..................................................................................................................4
Símbolos de compuertas básicas (gates) .................................................................................................... 4
Esquemático red digital.............................................................................................................................. 5
Síntesis lógica. ........................................................................................................................................... 5
1.3.4. Diagrama Temporal. ............................................................................................................5
Retardos de propagación. ........................................................................................................................... 6
Perturbaciones............................................................................................................................................ 8
1.3.5. Diagramas de Venn. .............................................................................................................9
1.3.6. Mapas de Karnaugh. ..........................................................................................................10
1.3.7. N-cubos...............................................................................................................................10
1.3.8. Lenguajes de descripción de hardware. .............................................................................10
1.4. FUNCIONES DE VARIAS VARIABLES. ............................................................................................10
1.4.1 Funciones de n variables. ....................................................................................................10
1.4.2 Funciones de dos variables. ................................................................................................11
Definiciones de funciones lógicas de dos variables. ................................................................................ 11
Conjuntos Funcionalmente Completos. ................................................................................................... 13
Generalización para funciones de más de dos variables........................................................................... 13
1.5. FORMULACIÓN DE EXPRESIONES BOOLEANAS.............................................................................13
Ejemplo 1.1. .................................................................................................................................14
Ejemplo 1.2. .................................................................................................................................15
1.6. TEOREMAS RELATIVOS A FUNCIONES DE VARIAS VARIABLES. ....................................................16
T.16 Función Dual .......................................................................................................................16
T.17 Reducción. ............................................................................................................................17
T.18 Teorema de expansión de Shannon. .....................................................................................17
Ejemplo 1.3. ............................................................................................................................................. 18
1.7. MINIMIZACIÓN (REDUCCIÓN O SIMPLIFICACIÓN) DE FUNCIONES. ...............................................18
Criterios de Reducción. ................................................................................................................18
Ejemplo 1.4. .................................................................................................................................19
Ejemplo 1.5. .................................................................................................................................20
ÍNDICE GENERAL. ..............................................................................................................................22
ÍNDICE DE FIGURAS ...........................................................................................................................23

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 1. Funciones Booleanas 23

Índice de Figuras

Figura 1.1. Tabla de verdad de AB + A’C + AC’. ........................................................................ 3


Figura 1.2. Símbolos lógicos de compuertas y flip-flop D............................................................ 4
Figura 1.3. Relaciones métricas de los símbolos lógicos. ............................................................. 4
Figura 1.4. Esquemático de AB + A’C + AC’ .............................................................................. 5
Figura 1.5. Diagrama temporal...................................................................................................... 6
Figura 1.6. Retardos de propagación. ............................................................................................ 7
Figura 1.7. Tiempos de contaminación. ........................................................................................ 7
Figura 1.8. Retardos idealizados en inversor................................................................................. 8
Figura 1.9. Perturbaciones estáticas en compuertas. ..................................................................... 9
Figura 1.10. Número de funciones .............................................................................................. 10
Figura 1.11. Funciones de dos variables ..................................................................................... 11
Figura 1.12. Expresiones para funciones de dos variables .......................................................... 11
Figura 1.13. Diferentes or............................................................................................................ 12
Figura 1.14. Tabla de verdad para Ejemplo 1.2. ......................................................................... 16
Figura 1.15. Compuertas TTL serie 74xx ................................................................................... 19
Figura 1.16. Salidas complementadas en Flip-flops .................................................................... 20
Figura 1.17. Entradas complementadas ....................................................................................... 20
Figura 1.18. Diseño en dos niveles.............................................................................................. 20
Figura 1.19. Diseño en tres niveles. ............................................................................................ 21

Profesor Leopoldo Silva Bijit 19-01-2010


1

Capítulo 2

Síntesis en dos niveles

2.1. Formas de Funciones.

Pueden escribirse diversas expresiones para una función.

Existen dos formas básicas de expresiones booleanas que pueden ser implementadas en dos
niveles de compuertas.

a) Suma de Productos (OR de ANDs).


Se denomina forma normal disyuntiva. Si uno de los sumandos (producto lógico de
variables) toma valor lógico 1, la expresión tomará valor lógico 1.
Ejemplo 1: AB ' C B ' D A ' CD ' con 8 literales y 11 entradas.

b) Producto de Sumas (AND de ORs).


Se denomina forma normal conjuntiva. Si uno de los productos (suma lógica de variables)
toma valor lógico 0, la expresión tomará valor lógico 0.
Ejemplo 2: ( A ' B C )( B ' C D)( A C ' D) con 9 literales y 12 entradas.

Existen formas híbridas que son mezclas de las dos anteriores, y que en general tienen
representación en redes con más de dos niveles de compuertas.
Las formas híbridas se pueden reducir a una de las anteriores, aplicando postulados y
teoremas.
Ejemplo 3: AB(C+D)+E es una forma híbrida, de 5 literales, 8 entradas y 3 niveles que
puede ser representada como suma de productos según: ABC+ABD+E, con 7 literales, 9
entradas y 2 niveles. La forma híbrida tiene menor costo espacial, pero mayor costo temporal.

Toda expresión booleana puede ser representada en estas dos formas básicas.

Por ejemplo para el Ejemplo 1, se tiene la forma producto de sumas: ( A B )(C D)( A C )
con 6 literales y 9 entradas, que es de menor costo. La equivalencia entre ambas formas puede
ser demostrada aplicando los postulados y teoremas.
También se tiene para el Ejemplo 2, la forma equivalente según suma de productos:
A ' B ' C ' AC BD CD , con 9 literales y 13 entradas, que es de mayor costo. En este caso también
se tiene la forma equivalente: A ' B ' C ' AC BD A ' D .

Profesor Leopoldo Silva Bijit 13-04-2010


2 Sistemas Digitales
Existen dos formas especiales de suma de productos y producto de sumas que se denominan:
Suma de mintérminos y Producto de maxtérminos; las cuales permiten expresar funciones
booleanas en forma normalizada.

Las formas canónicas son representaciones estandarizadas de expresiones booleanas y


permiten asociar a una función una expresión algebraica única. Escritas de esta manera pueden
efectuarse comparaciones entre expresiones booleanas.

Una forma canónica destaca las componentes más primitivas de una expresión.

Existe sólo una forma de escribir la tabla de verdad de una función y sólo una forma
canónica, pero existen diversas representaciones de la función, mediante esquemáticos o
expresiones booleanas.

Los términos elementales con los que se construyen las formas canónicas se denominan
mintérminos y maxtérminos. Una forma canónica no es una expresión mínima.

2.2. Mintérminos

En una función de n variables, un mintérmino es un producto que contiene las n variables,


pudiendo éstas estar o no complementadas.

Para el caso de dos variables, los mintérminos son:

AB, A’B, AB’, A’B’

Puede comprobarse que para tres variables, el número de mintérminos es 8, y para n


variables se tendrán 2 n mintérminos.

Debe notarse que cada renglón de una tabla de verdad está asociado a un y sólo un
mintérmino.

Cada mintérmino puede ser asociado a un número decimal.


Para simplificar la notación, una vez ordenadas las variables de acuerdo a cierto criterio, se
asigna un "1" a una variable no complementada y un "0" a las complementadas, formando así un
número binario, el cual expresado en sistema decimal se emplea para referenciar unívocamente
a cada mintérmino.

Ejemplo 2.1. Definición de mintérmino

Sea: A B C un mintérmino en caso de tener una función de tres variables. Entonces el


código binario es 010, este número expresado en decimal es 2. El criterio de ordenación de las
variables es alfabético. Se anota: m2 A BC

Una función booleana puede describirse por la suma de los mintérminos que la constituyen.

Profesor Leopoldo Silva Bijit 13-04-2010


Capítulo 2. Síntesis en dos niveles 3
En general:
f mi
La anterior es una forma particular de suma de productos.

Una simplificación adicional es escribir una lista de mintérminos según:


f m(1,3,8)
Esto indica que f está formada por la suma de m1 , m3 y m8 .

Debe destacarse que es importante el orden de las variables antes de asignar códigos
binarios.

Ejemplo 2.2. Suma de mintérminos

Obtener la tabla de verdad para:

f ( A, B, C ) m(2, 6) ABC ABC


Se tiene:
# ABC f m2 m6
0 000 0 0 0
1 001 0 0 0
2 010 1 1 0
3 011 0 0 0
4 100 0 0 0
5 101 0 0 0
6 110 1 0 1
7 111 0 0 0

Figura 2.1 Tablas de verdad de algunos Mintérminos.

La tabla de verdad de un mintérmino contiene uno y sólo un valor lógico "1"; el resto son
"0"s. La posición del "1", define unívocamente un renglón. Cada columna de un mintérmino, a
través de la operación OR, deja un uno, en un renglón determinado de la columna de f.

La suma lógica de los mintérminos no incluidos en la sumatoria que describe a f, son los
mintérminos de la función complementada, en el caso del ejemplo anterior:

f m(0,1, 3, 4, 5, 7)

2.3. Maxtérmino.

Es una suma lógica que contiene todas las variables, pudiendo éstas estar o no
complementadas.

Profesor Leopoldo Silva Bijit 13-04-2010


4 Sistemas Digitales
La tabla de verdad de un maxtérmino contiene uno y sólo un valor lógico "0"; el resto son
"1"s. La posición del "0" define unívocamente a un renglón de la tabla de verdad.

Para dos variables, los maxtérminos son: ( A B), ( A B ), ( A B) y ( A B )


Para n variables se tendrán 2 n maxtérminos.

El código decimal para identificar a los maxtérminos se obtiene, una vez ordenadas las
variables dentro de una suma de acuerdo a cierto criterio, asignando un "0" a cada variable no
complementada y un "1" a las variables complementadas. Debe notarse que esta asignación es
diferente (dual) de la elegida para mintérminos.

Ejemplo 2.3. Definición de maxtérmino.

Sea: ( A B C ) un maxtérmino. Entonces el código binario es: 101. El número expresado


en decimal es 5 y se anota: M 5 A B C

Una función puede describirse como el producto de los maxtérminos que la constituyen.
Cada maxtérmino asegura un cero de la función en un determinado renglón.

En general: f Mi

Es una forma particular de producto de sumas. También puede abreviarse mediante una lista
de los números decimales de los maxtérminos.

Ejemplo 2.4. Producto de maxtérminos

Obtener la tabla de verdad para:


f ( A, B, C ) M (2, 6) (A B C )( A B C)

Se tiene:
# ABC f M2 M6
0 000 1 1 1
1 001 1 1 1
2 010 0 0 1
3 011 1 1 1
4 100 1 1 1
5 101 1 1 1
6 110 0 1 0
7 111 1 1 1

Figura 2.2. Tablas de verdad de algunos Maxtérminos.

Profesor Leopoldo Silva Bijit 13-04-2010


Capítulo 2. Síntesis en dos niveles 5
La tabla de verdad de un maxtérmino contiene uno y sólo un valor lógico “0”, el resto son
“1”s. La posición del cero define unívocamente al renglón. Cada columna de un maxtérmino,
deja un cero a través de la operación AND, en un renglón determinado de la columna de f.

El producto lógico de los maxtérminos no incluidos en f, corresponde a la función


complemento:
f M (0,1,3,4,5,7)

Relaciones

Con los códigos elegidos para denotar mintérminos y maxtérminos, se cumplen:


mi Mi
Mi mi
mi Mi
Mi mi
Para n variables se tendrá que:
i (2n ) 1
mi 1
i 0
i (2n ) 1
Mi 0
i 0

Es decir, la suma lógica de todos los mintérminos de n variables es igual a 1; y el producto


lógico de todos los maxtérminos tiene valor lógico cero.

Ejemplo 2.5. De suma de mintérminos a productoria de maxtérminos.

Expresar como producto de maxtérminos, la función f y su complemento:


f(A,B,C) m( 2,3,6,7 )

Se tiene, para la función f: f m2 m3 m6 m7


Complementando: f m2 m3 m6 m7
Reemplazando los mintérminos complementados por maxtérminos:
f M2 M3 M6 M7
Finalmente, para la función complementada:
f M (2,3, 6, 7)

Se puede escribir la función complementada, como la suma de los mintérminos que no están
presentes en la función, es decir: f m0 m1 m4 m5
Aplicando De Morgan: f f m0 m1 m4 m5

Profesor Leopoldo Silva Bijit 13-04-2010


6 Sistemas Digitales
Resulta: f m0 m1 m4 m5
Reemplazando los mintérminos complementados por maxtérminos:
f M 0 M1 M 4 M 5
Finalmente: f M (0,1, 4,5)

2.4. Expansión a formas canónicas

Cualquier función booleana puede ser representada en forma canónica. El proceso de obtener
la forma canónica se denomina expansión.

Un método directo consiste en obtener la tabla de verdad, y luego identificar los mintérminos
o los maxtérminos. Otra posibilidad, que se estudia a continuación, es mediante un desarrollo
algebraico basado en los postulados y teoremas del álgebra de Boole.

2.4.1. Expansión de suma de productos

Está basado en el uso repetitivo del teorema: a ab ab


Ejemplo 2.7. Expansión a mintérminos.
f (a, b, c) a bc abc

El término "a" puede expandirse según:


a ab ab
abc ab c abc ab c ;se completan las variables que faltan.
m7 m5 m6 m 4
Para bc’ se tiene:
bc abc a bc
m6 m2

Se tiene que: abc = m7 , es un mintérmino.


Usando el teorema de idempotencia (m6 + m6 = m6), se obtiene:

f (a, b, c) m(2,4,5,6,7)

2.4.2. Expansión de productos de sumas

Está basado en completar los factores, mediante el uso de: a (a b)( a b)


Ejemplo 2.8. Expansión a maxtérminos
f (a, b, c) (a b)(b c)
Se tiene que:

Profesor Leopoldo Silva Bijit 13-04-2010


Capítulo 2. Síntesis en dos niveles 7
a b (a b c) (a b c ) M 0 M1
b c
(a b c ) (a b c ) M1 M 5
Considerando, por idempotencia, que: M 1 M 1M 1
Finalmente:
f (a, b, c) M 0 M 1M 5

2.5. Síntesis de las formas.

2.5.1. Suma de productos

Dada una función mediante una suma de productos, ésta puede implementarse usando un
OR de AND's.
Ejemplo 2.9. OR de ANDs

Para: f (a, b, c, d ) ab cd , se logra directamente:


a
b'
f
c
d
Primer Nivel | Segundo Nivel

Figura 2.3. Suma de productos en dos niveles.

Se dice que es una implementación en dos niveles.

Una red es de n niveles, cuando una señal de entrada debe pasar a través de n compuertas
para llegar a la salida; la señal de entrada que recorra más compuertas hasta llegar a la salida, es
la que define la cantidad de niveles; el recorrido se denomina ruta crítica y define el retardo de
propagación de la red. Debe notarse que se considera que se dispone de b' (si sólo se dispone de
b, se requiere un nivel adicional).

También puede implementarse usando solamente compuertas NAND.


Ejemplo 2.10. Dos niveles de NANDs
En el ejemplo 2.9. aplicando involución, se logra:
f ab cd ; por involución .
ab cd ; por De Morgan.

Gráficamente:

Profesor Leopoldo Silva Bijit 13-04-2010


8 Sistemas Digitales

a
b'
f
c
d

Figura 2.4. Suma de productos mediante NANDs.

La técnica anterior se denomina "Método de doble complementación", la cual se puede


visualizar en forma gráfica agregando dos pequeños círculos a la salida de la Figura 2.3.
a a
b' f b' f
c c
d d

Figura 2.5. Doble complementación.

Luego se emplea, el equivalente gráfico del Teorema de De Morgan, que se muestra en la


Figura 2.6.

Figura 2.6. Equivalencia gráfica del teorema de De Morgan.

Finalmente se desplazan los pequeños círculos, en las entradas de la compuerta de salida,


hacia las salidas de las compuertas de primer nivel; resultando la Figura 2.4.

2.5.2. Producto de sumas

Dada una función mediante un producto de sumas, puede lograrse una implementación en
dos niveles; usando un AND de OR's.

Ejemplo: f (A B ) (C D)

Se obtiene:
A
B' f
C
D

Figura 2.7. Producto de sumas en dos niveles.

Profesor Leopoldo Silva Bijit 13-04-2010


Capítulo 2. Síntesis en dos niveles 9
Esto en el caso de emplear compuertas AND y OR. También puede aplicarse el método de
la doble complementación para un diseño basado en compuertas NOR.

Algebraicamente:
f ( A B ) (C D) ; involución
( A B ) (C D) ; De Morgan
Resulta:
A
B' f
C
D
| Primer Nivel | Segundo Nivel |

Figura 2.8. Suma de productos mediante NORs.

El circuito anterior, puede obtenerse directamente a partir del basado en AND y OR, de la
Figura 2.7, usando el equivalente gráfico del teorema de De Morgan, que se muestra en la
Figura 2.9.

Figura 2.9. Visualización esquemática del teorema de De Morgan.

2.5.3. Conversión de producto de sumas a suma de productos. Cambio de lógica.

Si se tiene una expresión tipo producto de sumas, mediante la doble complementación, el


circuito a la izquierda de la Figura 2.10, puede modificarse como se muestra en el esquemático
de la derecha:

A A
B' f B' f
C C
D D

Figura 2.10. De producto de sumas a Suma de productos.

Aplicando De Morgan, a las compuertas de primer y segundo nivel se obtiene la red de la


Figura 2.11 izquierda. Luego complementando las variables de entrada y salida, se obtiene el
esquema de suma de productos.

Profesor Leopoldo Silva Bijit 13-04-2010


10 Sistemas Digitales

A A'
B' f B f'
C C'
D D'

Figura 2.11. Complementos de las entradas y salidas.

Debe notarse que la implementación como suma de productos tiene todas las variables de
entrada y salida complementadas, respecto a la forma producto de sumas. Es decir, plantea la
expresión en términos de los complementos de las variables originales.

También puede convertirse una expresión tipo suma de productos a la forma producto de
sumas. En un esquemático, se cambian los ANDs del primer nivel por ORs; y el OR del
segundo nivel por un AND; además se complementan las variables de entrada y la de salida.

Si se cambia la asignación de valores físicos a lógicos por su forma complementaria, el


diseño en dos niveles basado en suma de productos puede efectuarse como producto de sumas y
viceversa.

2.6. Diseño lógico

2.6.1. Fan-in. Fan out.

En la práctica, las compuertas lógicas tienen ciertas características. Una de ellas es el fan-in,
que es el número de entradas de una compuerta.

En componentes electrónicas integradas en pequeña escala, el caso de las compuertas lógicas


OR, AND, NOT, NOR y NAND, las pastillas suelen ser de 14 pines o patas. Dos de ellas se
emplean para proveer la alimentación continua (Vcc) y la Tierra (Gnd). Debido a esto, a medida
que aumenta el número de entradas a una compuerta, disminuye el número de circuitos, o
compuertas de igual tipo, que soporta la pastilla. Por ejemplo, se tienen 4 circuitos de 2
entradas, 3 de 3 entradas, 2 de 4 entradas.

Fan-out se denomina el número de compuertas que pueden ser alimentadas o comandadas


por una salida.

Si en un diseño lógico se efectúan restricciones de fan-in y fan-out, se tendrá una


representación en más de dos niveles.
A mayor número de niveles, habrá un comportamiento más lento del circuito; ya que una
conmutación debe propagarse a través de más compuertas.

A menor número de niveles se tendrá que ocupar compuertas de mayor fan-in, lo que
generalmente implica ocupar más pastillas en una implementación.

Profesor Leopoldo Silva Bijit 13-04-2010


Capítulo 2. Síntesis en dos niveles 11
2.6.2. Observaciones sobre la forma Producto de Sumas.

Algunas observaciones sobre la forma AND de ORs:

Si se observa la siguiente tabla de verdad:

f f1 f2
0 0 1
1 1 1
0 1 0
1 1 1
1 1 1
1 1 1
0 1 0
0 0 1

Figura 2.12. AND de columnas.

Se advierte que, dada la elección de las funciones, se cumple: f = f1 f2


Donde f1 y f2 son grupos de maxtérminos de f, y son agrupaciones disjuntas. Los
maxtérminos de f1 no están presentes en f2 y viceversa.
Ambas funciones pueden representarse como producto de maxtérminos; es decir, como
producto de sumas.

La minimización consiste en encontrar los mayores grupos de maxtérminos que puedan


escribirse como un solo sumando con el menor número de literales. En ese caso al grupo se lo
denomina implicante. Esto minimiza el fan-in de las compuertas ORs que implementan el
sumando. A la vez, la minimización también consiste en determinar el menor número de grupos
disjuntos, ya que esto minimiza el fan-in del AND que forma el producto lógico.

2.6.3. Observaciones sobre la forma Suma de Productos.

Algunas observaciones sobre la forma OR de ANDs:


Si se observan las siguientes tablas de verdad:

f f1 f2
0 0 0
1 1 0
0 0 0
1 0 1
1 0 1
1 1 0
0 0 0
0 0 0

Figura 2.13. OR de columnas.

Profesor Leopoldo Silva Bijit 13-04-2010


12 Sistemas Digitales
Se advierte que, dada la elección de las funciones, se cumple: f = f1 + f2

Donde f1 y f2 son grupos de mintérminos de f, y son agrupaciones disjuntas. Los mintérminos


de f1 no están presentes en f2 y viceversa.

Ambas funciones pueden representarse como suma de mintérminos; es decir, como suma de
productos.

La minimización consiste en encontrar los mayores grupos de mintérminos que puedan


escribirse como un solo producto con el menor número de literales. En ese caso al grupo se lo
denomina implicante. Esto minimiza el fan-in de las compuertas AND que implementan el
producto. A la vez, la minimización también consiste en determinar el menor número de grupos
disjuntos, ya que esto minimiza el fan-in del OR que forma la suma lógica.

2.6.4. Observaciones sobre las diferentes formas de diseño.

Existen básicamente dos metodologías de diseño. Una es agrupar los mintérminos de la


función, lo que lleva a la forma suma de productos; la otra es agrupar los maxtérminos de la
función, lo que lleva a la forma producto de sumas.

El primer método es equivalente a agrupar los ceros (maxtérminos) de la función


complementada.
El segundo método es equivalente a la agrupación de unos (mintérminos) de la función
complementada.

A muchas personas les resulta más sencillo formar agrupaciones de unos. Entonces:
agrupando los unos de la función se logra la forma suma de productos; y agrupando los unos de
la función complementada, se genera mediante De Morgan la forma producto de sumas, ya que
esto equivale a agrupar los ceros de la función. Luego debe compararse el costo de ambos
diseños para obtener el mínimo.

2.6.5. Perturbaciones. Diseños con riesgos.

En diseños de redes combinacionales pueden presentarse perturbaciones. En el caso de la red


de la Figura 2.14, la salida puede expresarse según:

P = (((A’+B)’ + (D’+ C)’)’ + A)’ = A’(AB’+C’D)

Entonces con {B=0, C=1} o {B=0 y D=0}, se presenta perturbación, en canto de subida de A
atrasado, ver Figura 1.9.

Profesor Leopoldo Silva Bijit 13-04-2010


Capítulo 2. Síntesis en dos niveles 13
A

A
B

C
D P = A'(AB' + C'D)

Figura 2.14. Perturbación en red combinacional

Las carreras entre los cantos, pueden evitarse en este caso cambiando el diseño.
Minimizando se logra un diseño libre de perturbaciones: P = A' C' D

Una perturbación puede eliminarse, suprimiendo la posibilidad de formar: (A + A') o (A A')


en la función; esto congelando en "1" ó "0" el resto de las variables.

Para esto se usa el teorema del consenso, que para tres variables puede escribirse:

AB AC AB AC BC

Si B=1 y C=1, queda: A A A A 1

El término de consenso elimina la perturbación, colocando un uno lógico cuando se produce


la condición de perturbación. Lo cual se ilustra a continuación:

2.6.5.1. Perturbación estática en uno.


La tabla de verdad de f, se ilustra mediante una representación denominada mapa de
Karnaugh, que se estudiará en detalle en el Capítulo 5.
AB
C 00 01 11 10 A'
0 2 6 4
0 1 1 C
A f
1 3 7 5
1 1 1 B
1
B
f(A, B, C)=AB+A’C+BC C

Figura 2.15. Eliminación de perturbación en uno.

Profesor Leopoldo Silva Bijit 13-04-2010


14 Sistemas Digitales
Con B=1 y C=1, si se producen transiciones de A, éstas implican perturbaciones. Esto
permite identificar su ocurrencia en un mapa; se producen cuando el diseño tiene implicantes
adyacentes. Se corrige con el término de consenso, que de un punto de vista formal es
redundante; y en la práctica elimina la perturbación, cubriendo la zona en que los implicantes
tienen la adyacencia.
En el caso del ejemplo: ésta se produce en el canto de bajada de A, si A’ está atrasada
respecto a A; y en el de subida de A, si A’ está adelantada respecto a A.

Lo diseños basados en suma de productos pueden generar perturbaciones en 1; y los basados


en producto de sumas pueden generar perturbaciones en 0.

2.6.5.2. Perturbación estática en cero.


Si se tiene: f ( A B)( A ' C ) .
A f1
B'
f
A’
C f2

Figura 2.15a. Perturbación en cero.

La condición para la perturbación, se produce con B=0 y C=0, cuando ocurre un canto de
subida de A (con A’ atrasada respecto de A); la salida del and equivale al producto: AA’.

Las perturbaciones en cero, se eliminan introduciendo una suma de términos adicional,


empleando el teorema del consenso: ( A B)( A' C ) ( A B)( A' C )(B C ) .
A
f1
B
B f
C

A’
C f2

Figura 2.15b. Eliminación de perturbación en cero.

En este caso, cuando B=0 y C=0, la salida será: f ( A 0)( A ' 0)(0 0) 0 , y no se
produce perturbación.

Resumiendo: se producen perturbaciones estáticas, cuando hay agrupaciones adyacentes


(éstas difieren en una variable). Se denominan estáticas, pues es un cambio momentáneo de un

Profesor Leopoldo Silva Bijit 13-04-2010


Capítulo 2. Síntesis en dos niveles 15
nivel constante (Spikes o glitches), produciendo un falso cero o un falso uno. El falso cero se
denomina perturbación estática en uno; el falso uno se denomina perturbación estática en cero.

Figura 2.16. Falsos ceros y unos.

El circuito combinacional, que en determinadas condiciones de las entradas, puede presentar


perturbaciones en la salida se denomina riesgoso (hazard). Mediante diseños en dos niveles, y
cuando se cubren las adyacencias entre implicantes, empleando compuertas adicionales, se
logran diseños de redes combinacionales libres de riesgos.
Ejemplo 2.11. Análisis de perturbaciones.
En el esquemático de la Figura 2.17, se tiene: f AB BC

B f

Figura 2.17. Análisis de perturbaciones.

Puede determinarse si se produce o no perturbación, analizando si llegan señales y sus


complementos a una misma compuerta.
En el caso de la Figura 2.17, si A=0 y C=1 se tiene f = B'+B lo que implica la posibilidad o
riesgo de perturbación en f.

Para determinar cuándo se produce, es preciso conocer cual de las señales llega primero. En el
caso de la Figura 2.17, B llega al OR de la salida, con un retardo de propagación, a través del
AND; y B’ pasando a través del NOT llega al OR de salida, con dos retardos de propagación.
Como B' está atrasada respecto de B, la perturbación se produce en el canto de bajada de B.
Ver Figura 1.9.

En un mapa (ver Capítulo 5) se puede visualizar el riesgo de perturbación, debido a


agrupaciones adyacentes. En la Figura 2.18 se visualiza la perturbación al pasar B de 1 a 0, es
un caso de falso cero, ya que la implementación es del tipo suma de productos.

Profesor Leopoldo Silva Bijit 13-04-2010


16 Sistemas Digitales

AB
C 00 01 11 10
0 2 6 4
0 1
1 3 7 5
1 1 1 1

f(A, B, C)=A'B'+BC
Figura 2.18. Visualización de perturbaciones en mapas.

Puede corregirse el diseño:


a) atrasando B, colocando condensadores, dependiendo su ubicación y la forma de conectarlo de
la familia lógica. Esta solución no es general.
b) colocando compuerta de consenso A’C. La solución con compuertas que cubran las
transiciones entre implicantes es de tipo general y no depende de la frecuencia de las señales
presentes. Un circuito, con las compuertas adicionales, se denomina libre de riesgos.
Ejemplo 2.12.
En circuitos diseñados con más de dos niveles, pueden generarse perturbaciones con más de
un cambio momentáneo. Por ejemplo si debiendo estar en uno, tiene dos o más caídas a cero en
un leve período de tiempo.
El siguiente circuito, de la Figura 2.19, tiene una perturbación, de más de un pulso, en 1; el
resto de las variables se asumen unos para habilitar las entradas a los ands.

La señal en f1 tiene una perturbación en 1, ocurre lo mismo en f2. Libre de perturbaciones la


señal en f debería ser un uno. Sin embargo se presenta una perturbación de más de un pulso,
como se ilustra en las formas de ondas de la Figura 2.20, si el tiempo de propagación de la vía
que genera f2 es mayor que el retardo con que se produce f1.
a’
b
f1
a
c f
a’
d
f2
a
e

Figura 2.19. Más de una perturbación estática.

Profesor Leopoldo Silva Bijit 13-04-2010


Capítulo 2. Síntesis en dos niveles 17

a
a’

f1
f2
f

Figura 2.20. Más de una perturbación estática.

Se producen en implementaciones con más de dos niveles, y si concurren a una compuerta


las señales y sus complementos por más de dos vías con retardos diferentes.

Si denominamos f a la señal de salida, y A a la señal de entrada, se tiene que:

f = (A+A’)(A+A’)

La perturbación de más de un pulso también se podría definir como estática, en el sentido


que un valor lógico que debe permanecer sin cambios (estacionario o estático), cambia el valor
una o más veces, y en forma momentánea, para finalmente retomar el valor inicial. En algunos
textos, estas perturbaciones son clasificadas como dinámicas.
2.6.5.3. Perturbaciones dinámicas.
Si la señal de salida cambia de valor lógico, es decir, de 0 a 1 o viceversa, y durante el
cambio ocurren perturbaciones se dice que ésta es dinámica.

Figura 2.21. Perturbaciones dinámicas.

La red de la Figura 2.22 muestra una perturbación dinámica, al cambiar la variable A de


entrada de 1 a 0, y la salida de 0 a 1. Con B=1, C=1 y D=0, se tiene que: f = (A’ +A)(A’) y las
señales concurren al AND de salida a través de tres vías con diferentes retardos. La señal f1,
tiene una perturbación estática en cero, en el canto de bajada de A; si el cambio f 1 se produce
después del cambio de f2, por ser su vía de propagación más lenta, la señal f, presentará una
oscilación: primero pasa a 1, luego a 0 y finalmente a 1.

Se aprecia que f, cambia momentáneamente a 0, luego vuelve a tomar valor 1; para


finalmente tomar valor estable 1.

Resumiendo se puede decir que una perturbación es dinámica si ocurre en una conmutación
de la salida. Se espera una sola transición de la salida y se producen oscilaciones de ésta.

Profesor Leopoldo Silva Bijit 13-04-2010


18 Sistemas Digitales
En un diseño en dos niveles, no se producen perturbaciones dinámicas. En una red
multinivel, tampoco se producen perturbaciones dinámicas si el diseño se realiza eliminando las
perturbaciones estáticas.
A
B
f1
A’
C f
A’

f2
D

Figura 2.22. Red con perturbación dinámica.

A
A’

f1
f

Figura 2.23. Perturbación dinámica.

El caso dual del anterior, se produce para una red combinacional en la que se produzca en la
salida: f=AA’ + A’.
2.6.5.4. Carreras aleatorias de las entradas. Perturbación de la función.
En redes combinacionales también pueden producirse perturbaciones si varias de las entradas
tienen cambios casi simultáneos.

En el mapa de la función f, de la Figura 2.24, si la función cambia de:

f(0, 0, 0, 0) a f(0, 1, 0, 1)

debería permanecer en cero. Sin embargo si no se produce el cambio simultáneo de B y D, se


tendrán dos situaciones posibles:
Si B cambia primero, se tendrá, que la salida toma los valores:

f(0, 0, 0, 0) , f(0, 1, 0, 0) , f(0, 1, 0, 1)

Si D cambia primero, la salida toma los valores:

Profesor Leopoldo Silva Bijit 13-04-2010


Capítulo 2. Síntesis en dos niveles 19
f(0, 0, 0, 0) , f(0, 0, 0, 1) , f(0, 1, 0, 1)

En ambos casos la función pasa momentáneamente por 1.


AB
CD 00 01 11 10
0 4 12 8
00 0 1 0 0
1 5 13 9
01 1 0 1 0
3 7 15 11
11 0 1 0 1
2 6 14 10
10 1 0 1 0

f(A, B, C, D)

Figura 2.24. Función con perturbación por carreras.

Una forma de controlar las carreras de las entradas es la habilitación del conjunto durante un
breve lapso de tiempo, luego de un tiempo de ocurrido el cambio de las entradas.

A, B, C, D
p

Figura 2.25. Pulso de habilitación.

El pulso de habilitación se denomina strobe, en inglés.

Figura 2.26. Función con perturbación por carreras.

Ejemplo 2.13.
La red combinacional, de la Figura 2.27, es alimentada por un contador que genera las
señales A, B, C y D. Éstas cambian casi al mismo tiempo; es decir, varias tienen cantos que

Profesor Leopoldo Silva Bijit 13-04-2010


20 Sistemas Digitales
ocurren con pequeñas diferencias temporales. Podría decirse que ocurre una carrera entre las
diferentes conmutaciones.
A
B TP1
C
D f
74LS93 1
Clock MR1 Q3
CP1 Q1 MR2 1 Q2 TP2
CP2 Q2 CP0 Q1 1
CP1 Q0
1

Figura 2.27. Carreras en las entradas.

Si se analizan las formas de ondas, cuando A es 1; y B pasa de 0 a 1; y C y D pasan de 1 a 0;


es decir cuando el contador entra en la cuenta 12 en decimal, o 1100 en binario, se produce una
perturbación de 1 en la salida.
A
B
C
D

TP1
TP2

Perturbación por carreras de las entradas

Figura 2.28. Perturbación por carreras en las entradas.

Profesor Leopoldo Silva Bijit 13-04-2010


Capítulo 2. Síntesis en dos niveles 21

Problemas resueltos

Problema 2.1. Diseño multinivel

Un caso más general de implementación en base a compuertas NOR y NAND se ilustra en el


siguiente ejemplo.

Se parte de una implementación multinivel tipo suma de productos, y se emplea la técnica de


doble complementación. El diseño se representa mediante un esquemático.

f (A B) C (D E) F

La función no está descrita como suma de mintérminos.


En forma inmediata se logra la red en tres niveles, empleando compuertas con fan-in igual a
dos:

A'
B'
C
f
F'
D
E

Figura P2.1. Función en tres niveles.

La implementación basada en compuertas NAND se logra con el método de doble


complementación. En forma gráfica:

A'
B'
C
f
F'
D
E

Figura P2.2. Doble complementación en diseños multinivel.

Aplicando el teorema de De Morgan, se logra una implementación, en base a NAND:

Profesor Leopoldo Silva Bijit 13-04-2010


22 Sistemas Digitales
A
B
C
f
F'
D'
E'

Figura P2.3. Diseño multinivel mediante NANDs.

Nótese que las variables de entrada, que recorren un número impar de compuertas para llegar
a la salida, deben complementarse. Es el caso de A, B, D y E en el ejemplo anterior.

Problema 2.2. Conversión a NANDs en multinivel

El siguiente ejemplo ilustra una conversión a compuertas nand de un esquemático multinivel,


del tipo suma de productos. Debe notarse el tratamiento de la señal interna X, y la necesidad de
agregar un inversor.

Desde un punto de vista analítico: F = A X + X + D; X = B C


Complementando, ambos miembros, se logra: F' = ( A X)' ( X' ) ( D' ) ; X' = (B C)'
A A
X
B
C X F
F’
D B
C
X'
D'

Figura P2.4 Implementación con NANDs en diseños multinivel.

Problema 2.3. Diseño multinivel. Factorización.

Sea una función de 7 variables.

X=ADF + AEF + BDF + BEF + CDF + CEF + G

Asumiendo que ya está simplificada lógicamente como suma de productos, se observa que
requiere una compuerta OR de 7 entradas (fan-in = 7), también se requieren 6 compuertas AND
de 3 entradas. La expresión está formada por 19 literales. Un diseño directo requiere 25 entradas
(7 al OR de salida y 18 a los ANDs). Esta implementación tiene alto costo y es en dos niveles.

Efectuando una factorización, puede expresarse según:

X = (A + B + C) (D + E) F + G
Para encontrar los factores adecuados pueden ayudar programas de minimización multinivel.

Profesor Leopoldo Silva Bijit 13-04-2010


Capítulo 2. Síntesis en dos niveles 23
La expresión anterior requiere una compuerta OR de tres entradas, dos ORs de dos entradas,
un AND de 3 entradas. La factorización logra una expresión con 7 literales; y 10 entradas.
Se disminuye el tamaño, pero aumenta el número de niveles.
A
B
C
X
D
E
F
G

Figura P2.5. Diseño en tres niveles.

Problema 2.4. Diferentes formas de implementación.

Pueden escogerse diferentes formas de implementar funciones.

Por ejemplo, para la siguiente tabla de verdad:

A B C f
0 0 0 0
0 0 1 1
0 1 0 0
0 1 1 1
1 0 0 0
1 0 1 1
1 1 0 1
1 1 1 0

Figura P2.6. Función de tres variables.

a) Como suma de mínterminos: f = A'B'C+A'BC+AB'C+ABC'


requiere un OR de 4 entradas, y 4 ANDs de 3 entradas. 16 entradas, con 12 literales, en dos
niveles, asumiendo que se dispone de las variables y sus complementos (los literales).

b) Si se escribe como suma de productos mínima:


f = (A'B'C + A'B'C ) +A'BC+AB'C +ABC' por idempotencia, y agrupando se obtiene:
f = A'C+B'C +ABC' forma mínima que requiere un OR de 3 entradas, 2 ANDs de 2
entradas y un AND de 3 entradas. Con 10 entradas y 7 literales. En dos niveles.

c) Factorizando con S = AB, se logra: f = SC'+S'C;

Profesor Leopoldo Silva Bijit 13-04-2010


24 Sistemas Digitales

A S
B
C' f

Figura P2.7. Empleando un factor común S.

Que requiere: 3 compuertas AND de 2 entradas, un OR de dos entradas y un inversor. Se


tienen 9 entradas y 4 niveles.

d) Empleando compuertas XOR: f = S C; con S = AB

A S
B
f
C

Figura P2.8. Empleando compuertas xor.

Implementación que emplea 2 compuertas, dos niveles, 4 entradas. Una de las compuertas es
un OR exclusivo que requiere mayor costo interno.

Problema 2.5. Costos de Implementación.

Dependiendo de la forma de la expresión, las formas mínimas pueden tener costos diferentes,
como se aprecia en el siguiente ejemplo.

La expresión: f = AB + C en su forma canónica de suma de productos requiere: 20 entradas,


5 ANDs de 3 entradas y un OR de 5 entradas. Si se minimiza la suma de productos se requieren:
4 entradas, un AND de 2 entradas y un OR de 2 entradas.

La misma expresión anterior como forma canónica de producto de sumas requiere: 12


entradas, 3 ORs de 3 entradas y un AND de 3 entradas. En su forma minimizada de producto de
sumas requiere: 6 entradas, 2 ORs de 2 entradas y un AND de 2 entradas.

En este caso la suma minimizada de productos lleva a la implementación de menor costo


espacial.

Un análisis de las formas de ondas permite establecer diferencias entre las


implementaciones, ya sea por la producción de perturbaciones o porque tengan retardos
diferentes. Algunas compuertas que tienen mayor número de entradas, tienen mayor retardo.

Profesor Leopoldo Silva Bijit 13-04-2010


Capítulo 2. Síntesis en dos niveles 25
Problema 2.6.

Expresar como suma de mintérminos usando teorema de expansión. Exprese los mintérminos
mediante números decimales, ordenados en forma ascendente.
Con f(a, b, c, d) = a + b’ c

Solución:
Para el primer término se tiene la siguiente expansión:
a = ab + ab’ = abc + abc’ + ab’c + ab’c’
a = abcd + abcd’ + abc’d + abc’d’ + ab’cd + ab’cd’ + ab’c’d + ab’c’d’
a = m(15, 14, 13, 12, 11, 10, 9, 8)
Para el segundo término, la expansión resulta:
b’c = ab’c + a’b’c = ab’cd + ab’cd’ + a’b’cd + a’b’cd’ = m( 11, 10, 3, 2)

Entonces: f(a, b, c, d) = m(15, 14, 13, 12, 11, 10, 9, 8) + m( 11, 10, 3, 2)
Como m10 + m10 = m10 por idempotencia, y también: m11 + m11 = m11

Resulta finalmente, ordenando los valores decimales en forma ascendente:

f(a, b, c, d) = a + b’c = m(2, 3, 8, 9, 10, 11, 12, 13, 14, 15)

Problema 2.7.

Se tiene una red combinacional con tres entradas (D2, D1, D0) y ocho salidas: (L7, L6, L5, L4,
L3, L2, L1, L0).
Los tres dígitos binarios pueden leerse en su equivalente decimal (n), considerando que D2
es la cifra más significativa y D0 la menos significativa.
Cuando en la entrada se tiene el número n: la salida Ln está baja (0 lógico) y el resto de las
salidas están altas (1 lógico).

D2 L7
L6
D1 ...
D0 L1
L0

Figura P2.9 Entradas y salidas Problema 2.7.

Determinar:
a) Tabla de verdad.
b) Expresión lógica mínima para L5 como suma de productos, efectuando reducciones
algebraicas.
c) Expresión lógica mínima para L5 como producto de sumas, efectuando reducciones
algebraicas.
Solución.

Profesor Leopoldo Silva Bijit 13-04-2010


26 Sistemas Digitales
a) La tabla de verdad para las ocho salidas:

D2 D1 D0 L7 L6 L5 L4 L3 L2 L1 L0
0 0 0 1 1 1 1 1 1 1 0
0 0 1 1 1 1 1 1 1 0 1
0 1 0 1 1 1 1 1 0 1 1
0 1 1 1 1 1 1 0 1 1 1
1 0 0 1 1 1 0 1 1 1 1
1 0 1 1 1 0 1 1 1 1 1
1 1 0 1 0 1 1 1 1 1 1
1 1 1 0 1 1 1 1 1 1 1

Figura P2.10 Tabla de verdad Problema 2.7.

b) De la tabla, expresando como suma de mintérminos:


L5 = m(0, 1, 2, 3, 4, 6, 7)

L5 = m0+m1+m2+m3+m4+m6+m7
L5 = m0+m0+m1+m2+m2+m2+m3+m3+m4+m6+m6+m7 Por idempotencia. T8.
L5 = (m0+m2+m4+m6) + (m0+m1+m2+m3) + (m2+m3+m6+m7) Por conmutación. P4.
Aplicando repetidamente fusión: T14
m(0, 2, 4, 6) = (D2’D1’D0’ + D2’D1D0’) +(D2D1’D0’ + D2D1D0’)
= D2’D0’ + D2D0’ = D0’

m(0, 1, 2, 3) = (D2’D1’D0’ + D2’D1’D0) +(D2’D1D0’ + D2’D1D0)


= D2’D1’ + D2’D1 = D2’

m(2, 3, 6, 7) = (D2’D1D0’ + D2’D1D0) +(D2D1D0’ + D2D1D0)


= D2’D1 + D2D1 = D1
Resulta finalmente:
L5 = D2’ + D1 + D0’

c) De la tabla, expresando como producto de maxtérminos:


Debido a que la expresión está formada por un solo maxtérmino, no es necesario minimizar:

L5 = M5 = D2’ + D1 + D0’

En este caso, ambos diseños resultan de igual complejidad (y con la misma expresión).

Problema 2.8.

Se tiene la función:
f(a, b, c) = M(1,2,3,6) + m(5, 7)

a) Determinar la tabla de verdad.

Profesor Leopoldo Silva Bijit 13-04-2010


Capítulo 2. Síntesis en dos niveles 27
b) Expresión lógica mínima para f como suma de productos.
c) Expresión lógica mínima para f como producto de sumas.

Solución:
a) La tabla de verdad para f, resulta de la suma lógica de las columnas asociadas al producto
de maxtérminos y a la suma de mintérminos. Con n el código decimal para el mintérmino.
a b c M(1,2,3,6) m(5, 7) f n
0 0 0 1 0 1 0
0 0 1 0 0 0 1
0 1 0 0 0 0 2
0 1 1 0 0 0 3
1 0 0 1 0 1 4
1 0 1 1 1 1 5
1 1 0 0 0 0 6
1 1 1 1 1 1 7

Figura P2.11 Tabla de verdad Problema 2.8.

b) Expresando f como suma de mintérminos, se obtiene: f = m(0, 4, 5, 7)


f = (a’b’c’ + ab’c’ ) + (ab’c + abc ) = b’c’ + ac Aplicando T14.

c1) Expresando f como producto de maxtérminos:


Se tiene: f(a, b, c) = M(1,2,3,6) = M1 M3 M2 M6 Por conmutación. P4
f = (a +b +c’)(a +b’ +c’)(a +b’ +c)(a’ +b’ +c) Por definición y Aplicando fusión. T14.
f = (a + c’) (b’ + c)
c2) Alternativamente, Describiendo el complemento de la función f, como suma de
mintérminos: f ’ = m(1, 2, 3, 6) = m1 +m3 + m2 +m6 Por conmutación. P4
f ’ = a’b’c + a’bc + a’bc’ + abc’ Por fusión. T14

Se obtiene la ecuación de polaridad inversa:


f ’ = a’c + bc’ Complementando y aplicando Involución en el lado izquierdo y De Morgan
en la expresión de la derecha, se obtiene igual resultado que en c1):
f = (a + c’)(b’ +c)

Problema 2.9.

Se tiene la función:
f(a, b, c, d) = ( a b) c

a) Determinar la tabla de verdad.


b) Expresar como suma de mintérminos.
c) Expresar como producto de maxtérminos.

Solución:

Profesor Leopoldo Silva Bijit 13-04-2010


28 Sistemas Digitales
a) Planteando tablas de verdad para el OR exclusivo de a y b, y empleando esta columna con
la de la variable c, se obtiene la columna para la función f. Con n el equivalente decimal del
código del mintérmino:

a b c d a b (a b) c n
0 0 0 0 0 0 0
0 0 0 1 0 0 1
0 0 1 0 0 1 2
0 0 1 1 0 1 3
0 1 0 0 1 1 4
0 1 0 1 1 1 5
0 1 1 0 1 0 6
0 1 1 1 1 0 7
1 0 0 0 1 1 8
1 0 0 1 1 1 9
1 0 1 0 1 0 10
1 0 1 1 1 0 11
1 1 0 0 0 0 12
1 1 0 1 0 0 13
1 1 1 0 0 1 14
1 1 1 1 0 1 15
Figura P2.12 Tabla de verdad Problema 2.9.

b) Leyendo los mintérminos directamente de la tabla, se logra:

f = m(2, 3, 4, 5, 8, 9, 14, 15)

c) Leyendo los maxtérminos directamente de la tabla, se logra:

f(a, b, c, d) = M(0, 1, 6, 7, 10, 11, 12, 13)

Otro desarrollo:
Se tiene por definición:
a b = ab’ +a’ b
Luego: ( a b ) c = (ab’ +a’ b)c’ + (ab’ +a’ b)’c = ab’c’ +a’bc’ + ab’c +a’b’c Por P6.
f = ab’c’d +ab’c’d’ + a’bc’d + a’bc’d’ + ab’cd + ab’cd’ + a’b’cd + a’b’cd’ por T14.
f = m9 + m8 + m5 + m4 + m11 + m10 + m3 + m2
Conmutando se obtiene igual resultado que el anterior.

Los números de los maxtérminos son los números de los mintérminos que no están
presentes, en la expresión anterior. Con esta información puede escribirse la tabla de verdad.

Problema 2.10.

Para una función booleana de 3 variables A, B, C:

Profesor Leopoldo Silva Bijit 13-04-2010


Capítulo 2. Síntesis en dos niveles 29
f(A,B,C) = m(2,3,5,7)

a) Determinar la tabla de verdad para f.


b) Expresar f ' como producto de maxtérminos. Justificar la respuesta.
c) Expresión booleana, para f, con menos literales. Justificar la respuesta.

Solución.
a) m2 = A'BC' ; m3 = A'BC ;m5 = AB'C ; m7 = ABC
Los unos de f están asociados a los mintérminos presentes. El mintérmino 2 en decimal
equivale a la combinación de valores 010 de las variables ABC, y por lo tanto tendrá asociado
un uno en la tabla de verdad de la función.

Resulta entonces:
ABC f f' Código decimal
000 0 1 0
001 0 1 1
010 1 0 2
011 1 0 3
100 0 1 4
101 1 0 5
110 0 1 6
111 1 0 7

Figura P2.13 Tabla de verdad Problema 2.10.

b) Los maxtérminos de f ' quedan definidos por los ceros de su tabla de verdad. Para A=0,
B=1 y C=0 se tiene que (A + B' +C) genera el cero en el renglón respectivo de f '.
Entonces: f ' = (A+B' +C)(A+B'+C')(A'+B+C')(A'+B'+C')
Codificando los maxtérminos en binario, se logra: f ' = M010 + M011 + M101 +M111
En decimal: f ' = M2 M3 M5 M7
Otro desarrollo:
A partir de f = (m2+m3+m5+m7), negando ambos miembros se logra:
f ' = (m2+m3+m5+m7)' ; P2
= m2' m3' m5' m7' ; T12 De Morgan
= M ( 2,3,5,7) ;Con mi' = Mi

c) f(A,B,C) = m(2,3,5,7)
= A'BC'+AB'C'+AB'C+ ABC ; definición de mintérminos.
= A'C'B+AC'B'+ACB'+ ACB ; P4 Conmutatividad.
= A'C'(B+B') + AC(B'+B) ; P6 Distributividad.
= A'C'(1) +AC(1) ; P7 Complemento único.
= A'C'+AC ; P3 Elementos únicos.

Problema 2.11.

Se tiene un número binario de cuatro bits:

Profesor Leopoldo Silva Bijit 13-04-2010


30 Sistemas Digitales
A3A2A1A0, donde A3 es la cifra más significativa, sea n el equivalente decimal de este
número.

Diseñar un sistema que acepte a n como entrada y que produzca en la salida el equivalente
binario del número decimal: ( n*4 +1).

Solución.
El mayor n que puede escribirse con cuatro bits es 15, por lo tanto la salida mayor será 61, lo
cual requiere 6 cifras binarias para representarla. Sean éstas: S5S4S3S2S1S0.

La siguiente tabla de verdad ilustra la situación:


n A3A2A1A0 n*4 +1 S5S4S3S2S1S0
0 0000 1 000001
1 0001 5 000101
2 0010 9 001001
3 0011 13 001101
4 0100 17 010001
5 0101 21 010101
6 0110 25 011001
7 0111 29 011101
8 1000 33 100001
9 1001 37 100101
10 1010 41 101001
11 1011 45 101101
12 1100 49 110001
13 1101 53 110101
14 1110 57 111001
15 1111 61 111101

Figura P2.14 Tabla de verdad Problema 2.11.

Observando la tabla, se determina que S1= 0 y S0 = 1 son constantes, y que:


S5 = A3, S4 = A2, S3 = A1, y S2 = A0

El diseño mínimo no requiere compuertas, y se muestra a continuación:

Profesor Leopoldo Silva Bijit 13-04-2010


Capítulo 2. Síntesis en dos niveles 31

A3 S5
S1
A2 S4 VCC
A1 S3
S0
A0 S2
S1
tierra
S0
VCC

Figura P2.15 Esquemático Problema 2.11.

A la derecha se muestra un diseño donde las señales S1 y S0 son salidas de compuertas.

Problema 2.12.

Se tiene un circuito digital de 4 entradas (A, B, C, D) y cuatro salidas (f1, f2, f3, f4).
a) Determinar como suma de mintérminos, la función f1 que es verdadera cuando exactamente
dos de las entradas sean verdaderas.
b) Determinar como producto de maxtérminos, la función f2 que es verdadera cuando
exactamente tres de las entradas sean verdaderas.
c) Determinar mediante un circuito lógico en base a AND, OR y NOT, la función f3, que es
verdadera cuando exactamente cuatro de las entradas sean verdaderas.
d) Determinar mediante una expresión booleana, la función f4, que es verdadera cuando
exactamente cuatro de las entradas sean falsas.

Solución.

Se tienen las siguientes tablas de verdad.

Profesor Leopoldo Silva Bijit 13-04-2010


32 Sistemas Digitales

A B C D f1 f2 f3 f4 Código
0 0 0 0 0 0 0 1 0
0 0 0 1 0 0 0 0 1
0 0 1 0 0 0 0 0 2
0 0 1 1 1 0 0 0 3
0 1 0 0 0 0 0 0 4
0 1 0 1 1 0 0 0 5
0 1 1 0 1 0 0 0 6
0 1 1 1 0 1 0 0 7
1 0 0 0 0 0 0 0 8
1 0 0 1 1 0 0 0 9
1 0 1 0 1 0 0 0 10
1 0 1 1 0 1 0 0 11
1 1 0 0 1 0 0 0 12
1 1 0 1 0 1 0 0 13
1 1 1 0 0 1 0 0 14
1 1 1 1 0 0 1 0 15

Figura P2.16 Tabla de verdad Problema 2.12.

Entonces:
f1 = m(3, 5, 6, 9, 10, 12)
f2 = M(0, 1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15)
f3 = m(15) = ABCD
A
B f3
C
D
f4 = m(0) = A'B'C'D'

Ejercicios propuestos.

Ejemplo 2.1.

Verificar las relaciones:

f m(2, 6) M (0,1, 3, 4, 5, 7)
f m(0,1, 3, 4, 5, 7) M (2, 6)

Ejemplo 2.2.

Con f(a, b, c, d) = ab’d + c’(b d)’ + m9 + M’13


a) Expresar como suma de mintérminos.
b) Expresar como producto de maxtérminos.
c) Minimizar como suma de productos empleando teoremas.

Profesor Leopoldo Silva Bijit 13-04-2010


Capítulo 2. Síntesis en dos niveles 33
Ejemplo 2.3.

Para la función:

f(A, B, C, D) = ((A + B)C+B’)D + m13m2 +m5 + M2m13

Determinar:
a) Formas canónicas.
b) Minimizar, indicando número de entradas.
c) 2-cubos que contienen a m7
d) Agregue un mintérmino (a elección) tal que la expresión se simplifique.

Ejemplo 2.4.

Para la función:

f(A, B, C, D) = ((A + B)C+B’)D + m13m2 +m13 + M2m13

Determinar:
a) Formas canónicas.
b) Minimizar, indicando número de entradas.
c) 2-cubos que contienen a m7
d) Agregue un mintérmino (a elección) tal que la expresión se simplifique.

Ejemplo 2.5.

Para un diseño libre de perturbaciones, de la función:


f ( w, x, y, z ) xy ' w ' y
que elección realizaría:
a) f ( w, x, y, z ) xy ' w ' y w ' xz
b) f ( w, x, y, z ) xy ' w ' y w ' x

Ejemplo 2.6.

Eliminar las perturbaciones estáticas de la función:


f (v, w, x, y, z ) v ' wz ' w ' x ' z xz vwy '

Profesor Leopoldo Silva Bijit 13-04-2010


34 Sistemas Digitales

Índice general.

CAPÍTULO 2.........................................................................................................................................1
SÍNTESIS EN DOS NIVELES ............................................................................................................1
2.1. FORMAS DE FUNCIONES. ...............................................................................................................1
2.2. MINTÉRMINOS ..............................................................................................................................2
Ejemplo 2.1. Definición de mintérmino ..........................................................................................2
Ejemplo 2.2. Suma de mintérminos ................................................................................................3
2.3. MAXTÉRMINO. ..............................................................................................................................3
Ejemplo 2.3. Definición de maxtérmino. ........................................................................................4
Ejemplo 2.4. Producto de maxtérminos .........................................................................................4
Relaciones ......................................................................................................................................5
Ejemplo 2.5. De suma de mintérminos a productoria de maxtérminos. .........................................5
2.4. EXPANSIÓN A FORMAS CANÓNICAS...............................................................................................6
2.4.1. Expansión de suma de productos .........................................................................................6
Ejemplo 2.7. Expansión a mintérminos. .................................................................................................... 6
2.4.2. Expansión de productos de sumas ........................................................................................6
Ejemplo 2.8. Expansión a maxtérminos ..................................................................................................... 6
2.5. SÍNTESIS DE LAS FORMAS..............................................................................................................7
2.5.1. Suma de productos ...............................................................................................................7
Ejemplo 2.9. OR de ANDs ........................................................................................................................ 7
Ejemplo 2.10. Dos niveles de NANDs ....................................................................................................... 7
2.5.2. Producto de sumas ...............................................................................................................8
2.5.3. Conversión de producto de sumas a suma de productos. Cambio de lógica. .......................9
2.6. DISEÑO LÓGICO ..........................................................................................................................10
2.6.1. Fan-in. Fan out...................................................................................................................10
2.6.2. Observaciones sobre la forma Producto de Sumas. ...........................................................11
2.6.3. Observaciones sobre la forma Suma de Productos. ...........................................................11
2.6.4. Observaciones sobre las diferentes formas de diseño. .......................................................12
2.6.5. Perturbaciones. Diseños con riesgos. ................................................................................12
2.6.5.1. Perturbación estática en uno........................................................................................................ 13
2.6.5.2. Perturbación estática en cero. ...................................................................................................... 14
Ejemplo 2.11. Análisis de perturbaciones. ............................................................................................... 15
Ejemplo 2.12. ........................................................................................................................................... 16
2.6.5.3. Perturbaciones dinámicas. ........................................................................................................... 17
2.6.5.4. Carreras aleatorias de las entradas. Perturbación de la función. .................................................. 18
Ejemplo 2.13. ...................................................................................................................................... 19
PROBLEMAS RESUELTOS ....................................................................................................................21
Problema 2.1. Diseño multinivel ..................................................................................................21
Problema 2.2. Conversión a NANDs en multinivel ......................................................................22
Problema 2.3. Diseño multinivel. Factorización. .........................................................................22
Problema 2.4. Diferentes formas de implementación. .................................................................23
Problema 2.5. Costos de Implementación. ...................................................................................24
Problema 2.6. ...............................................................................................................................25
Problema 2.7. ...............................................................................................................................25
Problema 2.8. ...............................................................................................................................26

Profesor Leopoldo Silva Bijit 13-04-2010


Capítulo 2. Síntesis en dos niveles 35
Problema 2.9. .............................................................................................................................. 27
Problema 2.10. ............................................................................................................................ 28
Problema 2.11. ............................................................................................................................ 29
Problema 2.12. ............................................................................................................................ 31
EJERCICIOS PROPUESTOS................................................................................................................... 32
Ejemplo 2.1. ................................................................................................................................. 32
Ejemplo 2.2. ................................................................................................................................. 32
Ejemplo 2.3. ................................................................................................................................. 33
Ejemplo 2.4. ................................................................................................................................. 33
Ejemplo 2.5. ................................................................................................................................. 33
Ejemplo 2.6. ................................................................................................................................. 33
ÍNDICE GENERAL. .............................................................................................................................. 34
ÍNDICE DE FIGURAS........................................................................................................................... 36

Profesor Leopoldo Silva Bijit 13-04-2010


36 Sistemas Digitales

Índice de Figuras

Figura 2.1 Tablas de verdad de algunos Mintérminos................................................................... 3


Figura 2.2. Tablas de verdad de algunos Maxtérminos. ............................................................... 4
Figura 2.3. Suma de productos en dos niveles. ............................................................................ 7
Figura 2.4. Suma de productos mediante NANDs. ...................................................................... 8
Figura 2.5. Doble complementación............................................................................................. 8
Figura 2.6. Equivalencia gráfica del teorema de De Morgan. ...................................................... 8
Figura 2.7. Producto de sumas en dos niveles. ............................................................................. 8
Figura 2.8. Suma de productos mediante NORs. ......................................................................... 9
Figura 2.9. Visualización esquemática del teorema de De Morgan. ............................................ 9
Figura 2.10. De producto de sumas a Suma de productos. ........................................................... 9
Figura 2.11. Complementos de las entradas y salidas. ............................................................... 10
Figura 2.12. AND de columnas. ................................................................................................. 11
Figura 2.13. OR de columnas. .................................................................................................... 11
Figura 2.14. Perturbación en red combinacional ......................................................................... 13
Figura 2.15. Eliminación de perturbación en uno........................................................................ 13
Figura 2.15a. Perturbación en cero. ............................................................................................. 14
Figura 2.15b. Eliminación de perturbación en cero. .................................................................... 14
Figura 2.16. Falsos ceros y unos.................................................................................................. 15
Figura 2.17. Análisis de perturbaciones. ..................................................................................... 15
Figura 2.18. Visualización de perturbaciones en mapas.............................................................. 16
Figura 2.19. Más de una perturbación estática. ........................................................................... 16
Figura 2.20. Más de una perturbación estática. ........................................................................... 17
Figura 2.21. Perturbaciones dinámicas. ....................................................................................... 17
Figura 2.22. Red con perturbación dinámica. .............................................................................. 18
Figura 2.23. Perturbación dinámica............................................................................................. 18
Figura 2.24. Función con perturbación por carreras. ................................................................... 19
Figura 2.25. Pulso de habilitación. .............................................................................................. 19
Figura 2.26. Función con perturbación por carreras. ................................................................... 19
Figura 2.27. Carreras en las entradas. .......................................................................................... 20
Figura 2.28. Perturbación por carreras en las entradas. ............................................................... 20
Figura P2.1. Función en tres niveles........................................................................................... 21
Figura P2.2. Doble complementación en diseños multinivel. .................................................... 21
Figura P2.3. Diseño multinivel mediante NANDs. .................................................................... 22
Figura P2.4 Implementación con NANDs en diseños multinivel............................................... 22
Figura P2.5. Diseño en tres niveles. ........................................................................................... 23
Figura P2.6. Función de tres variables. ...................................................................................... 23
Figura P2.7. Empleando un factor común S. .............................................................................. 24
Figura P2.8. Empleando compuertas xor.................................................................................... 24
Figura P2.9 Entradas y salidas Problema 2.7. ............................................................................ 25
Figura P2.10 Tabla de verdad Problema 2.7............................................................................... 26
Figura P2.11 Tabla de verdad Problema 2.8............................................................................... 27
Figura P2.12 Tabla de verdad Problema 2.9............................................................................... 28
Figura P2.13 Tabla de verdad Problema 2.10............................................................................. 29

Profesor Leopoldo Silva Bijit 13-04-2010


Capítulo 2. Síntesis en dos niveles 37
Figura P2.14 Tabla de verdad Problema 2.11. ........................................................................... 30
Figura P2.15 Esquemático Problema 2.11. ................................................................................ 31
Figura P2.16 Tabla de verdad Problema 2.12. ........................................................................... 32

Profesor Leopoldo Silva Bijit 13-04-2010


1

Capítulo 3

Codificación binaria

3.1. Codificación

En un ambiente de sistemas digitales se denomina codificación a la asignación de un significado


a una configuración de bits.

Al modelar problemas es usual encontrar variables que pueden tomar múltiples valores, se
denomina codificación al proceso de convertir esas variables en señales binarias. La elección
adecuada del código puede conducir a redes lógicas más simples.

Consideremos, por ejemplo, el estado de un semáforo: éste puede tomar uno de tres valores:
verde, amarillo o rojo.
Una posible codificación es considerar cada color como una señal binaria; así si la variable
color toma valor rojo, estará en nivel alto la señal rojo y el resto de las señales (la verde y
amarilla) serán ceros.
Otra posibilidad es emplear dos bits para representar las tres situaciones que son posibles; ya
que con dos bits pueden simbolizarse, en binario, cuatro casos. Existen gran cantidad de códigos
posibles, ya que el nombre binario para el primer color puede elegirse de 4 maneras diferentes;
el código binario para el segundo color puede ser elegido de tres maneras diferentes, y el tercer
color puede ser elegido de dos modos diferentes. Existen 24 formas de representar la variable
multivaluada color mediante un vector binario.

A continuación se mostrarán ejemplos de tres clases de códigos: numéricos, alfanuméricos y de


despliegue.

3.2. Códigos numéricos

Los más empleados son aquellos usados para representar números decimales.
El código representa los dígitos decimales por una secuencia de símbolos binarios.

3.2.1. Códigos ponderados

Se denomina código ponderado a uno en el que a cada posición de la secuencia binaria se le


asigna un peso o ponderación.

Profesor Leopoldo Silva Bijit 19-01-2010


2 Sistemas Digitales
Ejemplo 3.1. Código BCD
El código ponderado más empleado es el BCD, que representa a los dígitos decimales por
secuencias de bits en sistema binario. BCD es un acrónimo de Binary Coded Decimal es decir,
decimal codificado en binario.

Decimal BCD
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001

Figura 3.1 Código BCD.

La tabla es el código. Cada secuencia de 4 bits es una palabra del código. Nótese que a cada
dígito decimal se le asocia una secuencia de 4 bits.

La posición de más a la izquierda, o más significativa, tiene peso 8. El bit menos significativo,
el de más a la derecha, tiene ponderación 1. Las ponderaciones son potencias de 2.
Así, la palabra 7, puede interpretarse según:

0*8 + 1*4 + 1*2 + 1*1 = 7

Para representar el número decimal 12 se requieren 8 bits, o dos palabras de código.

12 = 0001 0010

Ejemplo 3.2. Transmisión de símbolos BCD.


A través de un par de cables, puede enviarse una secuencia de cifras decimales codificadas en
binario. Si enviamos primero las unidades, luego las decenas y después las centenas; y si se
envía primero el bit menos significativo, se tendrá que la siguiente forma de onda representa el
número 923:

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 3. Codificación binaria 3

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

t
3 2 9

Figura 3.2 Transmisión serie de un símbolo BCD.

La situación anterior ilustra una transmisión serie. La duración temporal de los bits y la forma
de iniciar y terminar la comunicación debe ser acordada entre el transmisor y receptor, esta
modalidad se denomina comunicación asincrónica. Si además se transmite una señal de reloj, se
tendrá una comunicación serial sincrónica.

Si se dispone de cuatro líneas, más una referencia, se puede enviar una cifra decimal en
paralelo. Si enviamos primero la cifra más significativa, y si identificamos los cables del bus
por su ponderación, la Figura 3.3. muestra la transmisión paralela del número 329.
Las líneas se han identificado de acuerdo al peso.

b
8 t

b
8
b
b 4 t
4

b
2

b b
1 2 t

b
1 t
3 2 9

Figura 3.3 Transmisión paralela símbolo BCD.

3.2.2. Distancia

Se define la distancia entre dos palabras de un código, como el número de dígitos que se deben
cambiar a una palabra para obtener la otra.
Por ejemplo:
Hay distancia 1 entre 0100 y 0110.
Hay distancia 4 entre 0011 y 1100.

Profesor Leopoldo Silva Bijit 19-01-2010


4 Sistemas Digitales

La distancia del código es la mínima distancia entre dos palabras consecutivas cualesquiera del
código.

En ciertas aplicaciones son útiles los códigos de distancia unitaria. Uno de los más empleados
es el código Gray, que es un sistema de codificación que ordena un conjunto de 2n números
binarios, de tal modo que sólo uno de los n bits cambia de una palabra a la siguiente.
Por ejemplo, para palabras de largo igual a 3 bits, se pueden representar 8 números decimales
según:

Decimal Gray
0 000
1 001
2 011
3 010
4 110
5 111
6 101
7 100

Figura 3.4 Código Gray para palabras de largo tres.

Nótese que entre números decimales consecutivos la distancia entre las palabras codificadas es
1.

3.2.3. Código reflejado.

Cuando en una lista ordenada ascendente, según el código, la mitad superior es simétrica con la
inferior, exceptuando el bit de mayor orden, se dice que el código es reflejado.

Ejemplo: Código Gray con largo de palabra de dos bits:

00
01
--
11
10

Nótese que lo anterior permite construir tablas de código Gray con largos de palabra mayores.
Para obtener el código para largo tres, se duplica el código de largo dos, mediante un reflejo; a
la mitad superior se la antecede con un 0 y a la inferior con un 1, ver Figura 3.4.

En la Figura 3.5. se muestran los diseños de redes combinacionales, para generar código Gray a
partir de una secuencia binaria de cuatro bits y viceversa.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 3. Codificación binaria 5

B3 G3

B2 G2
G3 B3

B2
G2
B1 G1
B1
G1

B0 G0 G0 B0

Figura 3.5 Conversores de código Gray a binario.

3.2.4. Código cíclico

En éstos, las palabras consecutivas tienen la misma distancia, y esta distancia existe también
entre la primera y la última palabra del código. En este sentido, la lista puede considerarse
cerrada.

3.2.5. Paridad

En aplicaciones digitales de movimiento de información, es importante detectar cualquier tipo


de error en la información recibida.

Cuando la probabilidad de error no es muy alta, ha probado ser efectivo un sistema denominado
Chequeo de paridad. Esta técnica emplea un bit extra, llamado de paridad, cuyo valor se
selecciona de tal forma de dejar un número par de unos en la palabra de código, entonces se dice
que el código es de paridad par. Si el bit se escoge tal que el número de unos en la palabra sea
impar, se tiene un sistema de paridad impar.
Ejemplo 3.3. Generador y detector de paridad.
Generador y detector de paridad. Se envían 4 bits en paralelo más uno de paridad par. La Figura
3.6 muestra la generación del bit de paridad, mediante:

p b8 b4 b2 b1

En el extremo receptor se calcula la señal detectora de paridad, mediante:

dp b8 b4 b2 b1 p

Las ecuaciones que realizan el diseño se obtienen planteando la tabla de verdad y luego
empleando compuertas or exclusivo para la implementación.

Profesor Leopoldo Silva Bijit 19-01-2010


6 Sistemas Digitales

Tx Rx

dp

Figura 3.6 Generador y detector de paridad.

En la Figura 3.6 se muestra, entre líneas punteadas, el medio de transmisión; que separa al
transmisor del receptor. Analizar el circuito, determinando valores de p y dp, en caso de
producirse errores, en una de las cinco señales que se transmiten.
Ejemplo 3.5.
a) Sea una palabra de largo 3: 010

Entonces con un bit de paridad par, se representa: 1010. Donde el bit de paridad ocupa la
posición más significativa. En este caso: p b4 b2 b1 0 1 0 1

b) Puede verse que un error se detecta simplemente, en un código con paridad, debido al
cambio de tipo de paridad. Si la palabra correcta, con paridad par es 1010, se tiene que si se
recibe:

i) 1110 (paridad impar). Llegó errado bit 2.


ii) 1000 (paridad impar). Llegó errado bit 3.
iii) 0010 (paridad impar). Llegó errado bit 1, el de paridad
iv) 1011 (paridad impar). Llegó errado bit 4.
El bit de paridad sólo permite detectar el error, no corregirlo.

Un error en dos bits no puede ser detectado. Este sistema no permite corregir el error, sólo
detectarlo.

c) Se tiene el siguiente código octal con paridad impar:

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 3. Codificación binaria 7

Decimal Octal con paridad impar


0 1000
1 0001
2 0010
3 1011
4 0100
5 1101
6 1110
7 0111

Figura 3.7 Código octal con paridad impar.

Nótese que la distancia del código, de la Figura 3.7, es dos. La paridad ocupa el bit más
significativo.

Ejemplo 3.6.
Un código muy empleado es el hexadecimal que representa 16 símbolos o cifras del sistema
hexadecimal mediante secuencias de cuatro bits. La tabla con el código se muestra en la Figura
3.8. Las secuencias hexadecimales suelen precederse con 0x; de este modo el número
hexadecimal 0x1A4 tiene como equivalente al número decimal 420:

0 x1A4 1 162 10 161 4 160 420

Hexadecimal Hex en binario


0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001
A 1010
B 1011
C 1100
D 1101
E 1110
F 1111

Figura 3.8 Código hexadecimal.

Profesor Leopoldo Silva Bijit 19-01-2010


8 Sistemas Digitales
De acuerdo a la tabla de la Figura 3.8, el equivalente binario de la secuencia 0x1A4 se obtiene
reemplazando cada cifra hexadecimal por su secuencia equivalente binaria, de cuatro bits.

0 x1A4 000110100100

3.3. Códigos alfanuméricos

La mayor parte de los dispositivos periféricos empleados en sistemas de computación para


comunicar al hombre con las máquinas, permiten representar las letras minúsculas y
mayúsculas, dígitos decimales, signos de puntuación y caracteres especiales.

Uno de los códigos más empleados es el código ASCII. Éste es un código de 7 bits, más uno de
paridad. Permite representar 128 símbolos. Su nombre es una abreviación de "American
Standard Code for Information Interchange".

Se tienen 32 símbolos de control, símbolos de puntuación, letras y números. Los símbolos


asociados a los dígitos decimales están entre 0x30 y 0x39; entonces basta considerar los 4
menos significativos para obtener el código BCD equivalente.

Los códigos binarios de las letras mayúsculas y minúsculas difieren en el estado de un bit.

Pueden plantearse una serie de sistemas combinacionales que decodifiquen o categoricen a


símbolos pertenecientes al código ASCII. Por ejemplo: ¿Es letra? , ¿Es letra o número?, etc.

H D H D H D H D H D H D H D H D
00 NULL 00 10 DEL 16 20 32 30 0 48 40 @ 64 50 P 80 60 ` 96 70 p 112
01 SOH 01 11 DC1 17 21 ! 33 31 1 49 41 A 65 51 Q 81 61 a 97 71 q 113
02 STX 02 12 DC2 18 22 " 34 32 2 50 42 B 66 52 R 82 62 b 98 72 r 114
03 EXT 03 13 DC3 19 23 # 35 33 3 51 43 C 67 53 S 83 63 c 99 73 s 115
04 EOT 04 14 DC4 20 24 $ 36 34 4 52 44 D 68 54 T 84 64 d 100 74 t 116
05 ENQ 05 15 NAK 21 25 % 37 35 5 53 45 E 69 55 U 85 65 e 101 75 u 117
06 ACK 06 16 SYN 22 26 & 38 36 6 54 46 F 70 56 V 86 66 f 102 76 v 118
07 BEL 07 17 ETB 23 27 ' 39 37 7 55 47 G 71 57 W 87 67 g 103 77 w 119
08 BS 08 18 CAN 24 28 ( 40 38 8 56 48 H 72 58 X 88 68 h 104 78 x 120
09 TAB 09 19 EM 25 29 ) 41 39 9 57 49 I 73 59 Y 89 69 i 105 79 y 121
0a LF 10 1a SUB 26 2a * 42 3a : 58 4a J 74 5a Z 90 6a j 106 7a z 122
0b VT 11 1b ESC 27 2b + 43 3b ; 59 4b K 75 5b [ 91 6b k 107 7b { 123
0c FF 12 1c FS 28 2c , 44 3c < 60 4c L 76 5c \ 92 6c l 108 7c | 124
0d CR 13 1d GS 29 2d - 45 3d = 61 4d M 77 5d ] 93 6d m 109 7d } 125
0e SO 14 1e RS 30 2e . 46 3e > 62 4e N 78 5e ^ 94 6e n 110 7e ~ 126
0f SI 15 1f US 31 2f / 47 3f ? 63 4f O 79 5f _ 95 6f o 111 7f del 127

Figura 3.9 Código ASCII.

En computadores personales se emplean 8 bits para representar caracteres, lo cual permite


denotar 256 símbolos. Esto ha sido especialmente útil en aplicaciones de procesamiento de
textos en diversos idiomas, pues pueden incluirse letras con diferentes tipos de acentos.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 3. Codificación binaria 9
El estándar ISO-8859 posee la codificación ASCII en su rango inicial (128 caracteres) y otros
128 caracteres para cada codificación de diferentes lenguas originarias de Europa occidental,
utilizando 8 bits. ISO-8859-1 es el alfabeto latino. Este código no cubre a lenguajes con otros
alfabetos, como el chino o el árabe.

Unicode asigna un código único a cada carácter, utilizado en los lenguajes escritos del mundo,
para esto Unicode representa un carácter en forma abstracta, y deja la representación visual,
tamaño, dimensión, fuente o estilo, a otra aplicación, como un navegador web, un procesador de
texto o un cliente de correo. Las normas de transmisión Unicode más empleadas son UTF-8 y
UTF-16.

En páginas web se emplean entidades HTML para enviar caracteres especiales al cliente.
Comienzan con & y terminan en punto y coma. Por ejemplo para enviar una a minúscula
acentuada, se envía: &aacute;. También se acepta introducir una secuencia Unicode precedida
de la secuencia &#x. Por ejemplo U+00E1, es el Unicode para la á; entonces en la página web,
puede codificarse: &#x00E1;

3.4. Códigos de despliegue (Display Codes)

Existe una variedad de códigos empleados en voltímetros digitales, tubos de rayos catódicos y
calculadoras. Uno de los más empleados es el código de siete segmentos, cuya tabla se ilustra a
continuación:
Decimal S6 S5 S4 S3 S2 S1 S0
0 0 1 1 1 1 1 1
1 0 0 0 0 1 1 0
2 1 0 1 1 0 1 1
3 1 0 0 1 1 1 1
4 1 1 0 0 1 1 0
5 1 1 0 1 1 0 1
6 1 1 1 1 1 0 1
7 0 0 0 0 1 1 1
8 1 1 1 1 1 1 1
9 1 1 0 1 1 1 1

0
5 1
6

4 2
3

Figura 3.10 Código de siete segmentos.

Profesor Leopoldo Silva Bijit 19-01-2010


10 Sistemas Digitales
El diagrama ilustra la numeración de los segmentos, y los segmentos activados de acuerdo al
valor decimal.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 3. Codificación binaria 11

Índice general.

CAPÍTULO 3 ............................................................................................................................................. 1
CODIFICACIÓN BINARIA ..................................................................................................................... 1
3.1. CODIFICACIÓN ................................................................................................................................... 1
3.2. CÓDIGOS NUMÉRICOS ........................................................................................................................ 1
3.2.1. Códigos ponderados .................................................................................................................. 1
Ejemplo 3.1. Código BCD ............................................................................................................................... 2
Ejemplo 3.2. Transmisión de símbolos BCD. .................................................................................................. 2
3.2.2. Distancia ................................................................................................................................... 3
3.2.3. Código reflejado. ....................................................................................................................... 4
3.2.4. Código cíclico ........................................................................................................................... 5
3.2.5. Paridad ...................................................................................................................................... 5
Ejemplo 3.3. Generador y detector de paridad. ................................................................................................ 5
Ejemplo 3.5. ..................................................................................................................................................... 6
Ejemplo 3.6. ..................................................................................................................................................... 7
3.3. CÓDIGOS ALFANUMÉRICOS ................................................................................................................ 8
3.4. CÓDIGOS DE DESPLIEGUE (DISPLAY CODES) ..................................................................................... 9
ÍNDICE GENERAL. ................................................................................................................................... 11
ÍNDICE DE FIGURAS................................................................................................................................. 12

Profesor Leopoldo Silva Bijit 19-01-2010


12 Sistemas Digitales

Índice de figuras

Figura 3.1 Código BCD. ................................................................................................................ 2


Figura 3.2 Transmisión serie de un símbolo BCD. ....................................................................... 3
Figura 3.3 Transmisión paralela símbolo BCD. ............................................................................ 3
Figura 3.4 Código Gray para palabras de largo tres. ..................................................................... 4
Figura 3.5 Conversores de código Gray a binario. ........................................................................ 5
Figura 3.6 Generador y detector de paridad. ................................................................................. 6
Figura 3.7 Código octal con paridad impar. .................................................................................. 7
Figura 3.8 Código hexadecimal. .................................................................................................... 7
Figura 3.9 Código ASCII. ............................................................................................................. 8
Figura 3.10 Código de siete segmentos. ........................................................................................ 9

Profesor Leopoldo Silva Bijit 19-01-2010


1

Capítulo 4

N-cubos

4.1. Representación de una función booleana en el espacio Bn.

Los n-cubos representan a las funciones booleanas, en espacios n-dimensionales discretos,


como un subconjunto de los vértices de un n-cubo geométrico.

Se representan las variables de la función en ejes coordenados ortogonales. Las variables


booleanas pueden tomar solamente los valores "0" y "1", lo cual define un espacio discreto. Las
representaciones gráficas de los n-cubos están restringidas a valores de n pequeños.

La definición de una función consiste en establecer cuáles de los vértices del n-cubo se mapean
a valor lógico 0, y cuáles otros se mapean a valor lógico 1.

Esta representación permite visualizar los grupos de mintérminos, o subcubos, que considerados
juntos logran una expresión con menos literales

4.2. Dos-cubos.

Para dos variables x1 y x2, se tiene el espacio B2 el que puede considerarse definido por:
{0, 1}X{0, 1} = {(00), (01), (10), (11)}

Cada vértice es un mintérmino.


2-Cubo
10 11
X2

X2 X1

X1 00 01

Figura 4.1. 2-cubo.

Profesor Leopoldo Silva Bijit 19-01-2010


2 Sistemas Digitales
Nótese que el 2-cubo tiene 4 vértices. Cada vértice está separado de los adyacentes en distancia
uno. En este caso, cada vértice tiene dos adyacentes. Se dice que estos 4 mintérminos forman
un 2-cubo. Cada lado del cuadrado, de la Figura 4.1, es un 1-cubo, y está formado por dos
vértices adyacentes.

Expresiones en términos de literales tienen directa relación con los subcubos en el espacio que
se esté considerando. Las diferentes expresiones, formadas por un literal: X1, X’1, X2 y X’2 son
1-cubos y corresponden a los lados del cuadrado, de la Figura 4.1; están formadas por dos
mintérminos adyacentes.
Pero dos mintérminos no adyacentes no pueden ser representados mediante un solo literal. Por
ejemplo, para los mintérminos ubicados en los extremos de las diagonales se requieren cuatro
literales para representarlos mediante una expresión. Se tiene: X2X1’+X2’X1; y también cuatro
literales para los otros dos mintérminos que no están a distancia uno: X2X1+X2’ X1’.

4.3. 3-cubos.

En variables x1, x2 y x3. 110 111

X
2 010 011
x3 x2 x1

X 100
101
3

000 001
X
1
Figura 4.2. 3-cubo.

Nótese en la Figura 4.2, que x2 = 1 es la cara superior, y que x2 = 0 define la cara inferior.
Cuando se congela una de las variables de un 3-cubo, se obtiene un 2-cubo.

Por ejemplo: x2 es un 2-cubo y está formado por 4 mintérminos en un plano.

x2 x1' x2 x3' x1 x2 x3' x1' x2 x3 x1 x2 x3

No todos los grupos de cuatro mintérminos diferentes, forman un 2-cubo.

En la Figura 4.3, un vértice es un producto de tres literales; una arista del cubo es una expresión
formada por el producto de dos literales; una cara del cubo puede representarse por una
expresión con un literal.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 4. N-cubos 3

B
_ C
B AB
A
C ___
ABC
A A
3-cubo
__
ABC

Figura 4.3 Caras, lados y vértices en 3-cubos.

4.4. Generalizaciones en n-cubos

Los n-cubos permiten conceptualizar algunas características de las funciones booleanas.

Mediante inducción pueden demostrarse:

a) Un n-cubo tiene 2n vértices.


b) Cada vértice de un n-cubo tiene n adyacentes.
c) Si se fija una variable en un n-cubo, el resto de las (n-1) variables puede representarse por un
cubo de (n-1) dimensiones.
d) Cada mintérmino corresponde a un vértice.
e) Si se fijan k de las n variables, las restantes pueden representarse en un cubo de (n-k)
dimensiones.
f) Un cubo de (n-k) está contenido en el cubo de n dimensiones; se dice por esto que es un
subcubo.
g) Un cubo es un producto de literales.

Recordando que: Un conjunto de k variables booleanas puede tomar 2k valores posibles; y que
n
se pueden efectuar elecciones de k elementos de un grupo total de n, puede concluirse que
k
el número total de subcubos de (n-k) dimensiones incluidos en uno de n es:

n n!
2k 2k
k k !(n k )!

Donde: 0 k n
Con k=n se tienen 2n subcubos de 0 dimensiones; son los mintérminos.

Profesor Leopoldo Silva Bijit 19-01-2010


4 Sistemas Digitales

Con k=0 se tiene 20 = 1, un cubo de (n-0) dimensiones.

Ejemplo 4.1.

Un 3-cubo contiene:

3
i) 21 = 6 2-cubos. (k=1, n-k=2) Cuatro mintérminos en un plano. Una cara.
1
3
ii) 22 = 12 1-cubos. (k=2, n-k=1) Dos mintérminos adyacentes. Una arista.
2
3
iii) 2 3 = 8 0-cubos. (k=3, n-k=0) Los mintérminos. Un vértice.
3

Ejemplo 4.2. Selecciones de dos objetos de un grupo de 4.

Se tienen cuatro letras. ¿Cuántas selecciones de dos letras pueden hacerse?


Sean las letras: a, b, c, d.

La primera letra puede escogerse de 4 formas, la segunda de 3 formas. Se fija la primera letra y
luego se dan valores a la segunda. En total se tienen 4*3 = 12 permutaciones:

ab, ac, ad, ba, bc, bd, ca, cb, cd, da, db, dc.

Si no se considera diferencia en el orden de ocurrencia de las letras, por ejemplo ab se considera


igual a ba, se tendrán 6 combinaciones:

ab, ac, ad, bc, bd, cd.

El número de combinaciones puede calcularse según el coeficiente binomial:


4 4! 1 2 3 4
= 6
2 2!(4 2)! 1 2 1 2

Ejemplo 4.3. Combinaciones.

Generación de combinaciones en forma sistemática.


Para grupos de 2 variables de un conjunto de 4. Las combinaciones son:
ab
ac
ad
bc
bd
cd

Se forma una lista ordenada de las variables, en el caso del ejemplo: (a, b, c, d).

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 4. N-cubos 5
Se fija la primera combinación (ab en el ejemplo) en orden alfabético; luego en la última
posición se van colocando en orden los valores restantes de la lista (c, d). Una vez agotada la
lista, se cambia la posición anterior por el siguiente de la lista (b en el ejemplo, ya no debe
emplearse a); y se vuelve a repetir el proceso, pero con los elementos siguientes (c y d en el
ejemplo). El proceso se repite para las posiciones más significativas.

Ejemplo 4.4.

Determinar los 2-cubos incrustados en un 4-cubo.


El número de combinaciones de 2 variables de un grupo de 4 es 6; este número se obtiene de:
n 4!
6 , con n=4 y k=2.
k 2!(4 2)!
n
En la Figura 4.4, el número de renglones es el de las combinaciones ; y el número de
k
columnas son los valores posibles que pueden tomar k variables ( 2k 22 4 ).

ab ab’ a’b a’b’


ac ac’ a’c a’c’
ad ad’ a’d a’d’
bc bc’ b’c b’c’
bd bd’ b’d b’d’
cd cd’ c’d c’d’

Figura 4.4. 2-cubos en un 4-cubo.

La tabla muestra los 24 2-cubos contenidos en un 4-cubo.

El 2-cubo ab está formado por los siguientes 4 mintérminos:

ab = abcd + abcd’ + abc’d + abc’d’

4.5. Los n-cubos y la minimización de expresiones booleanas.

Los mintérminos pueden agruparse según sub-cubos. Un subcubo es un producto de literales.

Mientras mayores sean las dimensiones de un sub-cubo, menos letras pueden emplearse
para representarlo según una expresión booleana formada por un producto de literales.

Entonces un objetivo de la minimización es encontrar sub-cubos entre los mintérminos que


forman una función. Logrando que esos sub-cubos agrupen el mayor número de mintérminos, y
que a la vez se encuentre el menor número de sub-cubos.

Con m<n, un m-cubo dentro de un n-cubo, se representa con un término formado por (n-m)
literales.

Profesor Leopoldo Silva Bijit 19-01-2010


6 Sistemas Digitales
Si en un espacio Bn, un cubo tiene k literales, entonces es un (n-k)-cubo y está formado por 2n-k
mintérminos. Lo que significa que si k disminuye el número de mintérminos aumenta.

4.6. Relación con la forma suma de productos.

4.6.1. Irredundante.

Antes se definió que un cubo es un producto de literales. También se mostró que una expresión
booleana puede representarse por una suma de productos.

Entonces: Una función f puede representarse por una suma de cubos.


i k
f Ci
i 1
El conjunto de cubos F que representa a f, se denomina una cobertura de f.
F C1 , C2 ,.., Ck
Si Ci F , si F Ci no cubre a f , se dice que el cubo Ci es irredundante (no es redundante).

Ejemplo 4.5.

Sea f(a, b, c) = ab + ac + bc, sea el cubo Ci ab .


Como F Ci {ac, bc} no cubre a f, ya que abc’ no queda cubierto. Entonces Ci ab es
irredundante.
bc ab
b
ac

c abc’

a
f

Figura 4.4a. Cubo irredundante.

4.6.2. Implicante.

Si C es un cubo en Bn , se tiene que: C Bn .


Si C f , donde f es una función Booleana, se dice que el cubo C es un implicante de f.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 4. N-cubos 7
4.6.3. Primo.

Si Ci F , sea Di el cubo que resulta de eliminar el literal j de Ci . El cubo Di tiene el doble


de mintérminos que el cubo Ci .
Si ( F Ci ) Di no cubre a f, entonces el literal j es primo. Esta definición indica que ese
literal debe estar presente en el cubo.
Si todos los literales de un cubo Ci son primos el cubo es primo. Se emplea primo con el
sentido de primordial, de principal.
Una cobertura F es prima si todos sus cubos son primos.

En una cobertura F, un cubo Ci F es primo esencial si contiene un mintérmino que el resto de


los cubos de F no contiene.
Ejemplo 4.6.
Sea f(a, b, c) = ab + ac + bc, sea el cubo Ci ab . Si se elimina b en el cubo anterior, se
tiene: Di a.
Se tiene la cobertura, F {ab, ac, bc} , entonces ( F Ci ) Di {ac, bc} {a} {a, ac, bc}
no cubre a f ya que incluye el mintérmino ab’c’ que no está en f. Esto implica que ab es primo.

Además ab es primo esencial ya que contiene al mintérmino abc’ que los cubos ac y bc no
contienen.
bc ab
b
ac

c a

a
f ab’c’

Figura 4.5. Literal primordial de un cubo.

Si para cuatro variables se tiene que: abc, abc’ y ab son implicantes, entonces ab es implicante
primo. El cubo ab tiene el doble de mintérminos que abc y abc’. El literal c no es primo, y si lo
son los literales a y b.
Puede notarse que bc es primo esencial pues contiene el mintérmino abc, que los otros
implicantes no contienen. También ac es primo esencial.

Un subcubo es primo si no puede agruparse con otros para formar un cubo de mayores
dimensiones. Es decir si ninguno de sus literales puede omitirse.

Profesor Leopoldo Silva Bijit 19-01-2010


8 Sistemas Digitales
4.6.4. Matriz de coberturas.

Pueden anotarse los cubos que son implicantes empleando notación matricial. Las columnas
describen las variables, y en los renglones se representan los cubos. Cuando en el cubo aparece
el literal de la variable, se coloca valor 1 en esa variable; si aparece como literal el complemento
se coloca valor 0 en esa variable. Si la variable no está presente en el cubo, se coloca un – en la
posición de la variable; este símbolo también puede interpretarse representando ambos valores 0
y 1.
Ejemplo 4.7.
Sea f(a, b, c, d) = ac + c’d

a b c d
ac 1 - 1 -
c’d - - 0 1

Figura 4.6. Matriz de Cobertura.

La Figura 4.6a, muestra los cubos: ac, abc y ab’c.

a b c d
ac 1 - 1 -
abc 1 1 1 -
ab’c 1 0 1 -

Figura 4.6a. Expansión de ac.

Puede comprobarse que los cubos abc y ab’c pueden agruparse para formar el cubo ac. En
forma simbólica, el proceso de expansión podría anotarse:

ac = {1,-,1,-} = {1,{0,1},1,-} = {101-, 111-} = ab’c + abc

Las operaciones en sentido inverso muestran la forma en que se fusionan los subcubos: abc y
ab’c en el cubo ac.

La matriz de cobertura es una notación bastante más compacta que la de una tabla de verdad, y
representa a una función booleana por una suma de productos o cubos.

Su mayor ventaja es que modela mediante matrices a los cubos de una función; luego mediante
operaciones matriciales pueden desarrollarse algoritmos para la minimización de funciones
booleanas.

Se desarrolla más sobre esta notación o formato pla, en el Apéndice 3, sobre uso de espresso.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 4. N-cubos 9
4.7. Representación de cubos de dimensiones mayores que tres.

El 3-cubo de la Figura 4.3, puede dibujarse sobre un plano. Puede empujarse una tapa hacia el
plano formado por la tapa opuesta, como se muestra en la Figura 4.7.

Otra forma de dibujarlo es representar dos 2-cubos, a uno de ellos se le agrega un 1 en la


primera posición; al otro un cero. Luego se unen los mintérminos a distancia uno.

110 111

10 11
010 011
00 01
000 001
2-cubo

100 101
3-cubo

Figura 4.7 Abatimiento de un 3-cubo.

El 4-cubo puede representarse también en el espacio, sin embargo, es más sencillo de realizar en
un plano. Para dibujarlo, se escriben dos 3-cubos como el anterior. A un 3-cubo se le agrega un
1 en la primera posición; al otro un cero. Luego se unen los mintérminos a distancia uno.

0110 0111

0010 0011
0000 0001

0100 0101

1100 1101

1000 1001

1010 1011

1110 1111

Figura 4.8. 4-cubo.

Profesor Leopoldo Silva Bijit 19-01-2010


10 Sistemas Digitales
En la Figura 4.8, cada vértice está a distancia 1 de sus adyacentes.

Un 4-cubo contiene:
8 3-cubos. Cada 3-cubo formado por 8 mintérminos.
24 2-cubos. Cada 2-cubo formado por 4 mintérminos.
32 1-cubos. Cada 1-cubo formado por dos mintérminos adyacentes.
16 0-cubos o mintérminos.

Un 4-cubo permite representar cualquier función booleana de 4 variables. Para hacerlo se


marcan los vértices de los mintérminos presentes en la expresión.

Como puede apreciarse en la Figura 4.8, la representación gráfica de cubos con dimensiones
mayores que 3, no resultan prácticas.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 4. N-cubos 11

Índice general.

CAPÍTULO 4 ............................................................................................................................................. 1
N-CUBOS.................................................................................................................................................... 1
4.1. REPRESENTACIÓN DE UNA FUNCIÓN BOOLEANA EN EL ESPACIO BN. .................................................. 1
4.2. DOS-CUBOS. ...................................................................................................................................... 1
4.3. 3-CUBOS. ........................................................................................................................................... 2
4.4. GENERALIZACIONES EN N-CUBOS ..................................................................................................... 3
Ejemplo 4.1. ........................................................................................................................................ 4
Ejemplo 4.2. Selecciones de dos objetos de un grupo de 4. ................................................................ 4
Ejemplo 4.3. Combinaciones. .............................................................................................................. 4
Ejemplo 4.4. ........................................................................................................................................ 5
4.5. LOS N-CUBOS Y LA MINIMIZACIÓN DE EXPRESIONES BOOLEANAS. ..................................................... 5
4.6. RELACIÓN CON LA FORMA SUMA DE PRODUCTOS. ............................................................................. 6
4.6.1. Irredundante. ............................................................................................................................. 6
Ejemplo 4.5. ........................................................................................................................................ 6
4.6.2. Implicante. ................................................................................................................................. 6
4.6.3. Primo. ........................................................................................................................................ 7
Ejemplo 4.6. ..................................................................................................................................................... 7
4.6.4. Matriz de coberturas. ................................................................................................................ 8
Ejemplo 4.7. ..................................................................................................................................................... 8
4.7. REPRESENTACIÓN DE CUBOS DE DIMENSIONES MAYORES QUE TRES. ................................................. 9
ÍNDICE GENERAL. ................................................................................................................................... 11
ÍNDICE DE FIGURAS................................................................................................................................. 12

Profesor Leopoldo Silva Bijit 19-01-2010


12 Sistemas Digitales

Índice de figuras

Figura 4.1. 2-cubo.......................................................................................................................... 1


Figura 4.2. 3-cubo.......................................................................................................................... 2
Figura 4.3 Caras, lados y vértices en 3-cubos. .............................................................................. 3
Figura 4.4. 2-cubos en un 4-cubo. ................................................................................................. 5
Figura 4.4a. Cubo irredundante. .................................................................................................... 6
Figura 4.5. Literal primordial de un cubo. ..................................................................................... 7
Figura 4.6. Matriz de Cobertura. ................................................................................................... 8
Figura 4.6a. Expansión de ac. ........................................................................................................ 8
Figura 4.7 Abatimiento de un 3-cubo. .......................................................................................... 9
Figura 4.8. 4-cubo.......................................................................................................................... 9

Profesor Leopoldo Silva Bijit 19-01-2010


1

Capítulo 5

Mapas de Karnaugh

5.1. Conceptos

Esta representación gráfica de una función booleana ha sido utilizada desde 1953. Permite entender los
principales conceptos sobre minimización de funciones, pero su uso práctico está limitado a un número
relativamente bajo de variables, no más de 5 ó 6.

Existe una relación uno a uno entre un mapa y una tabla de verdad. Una tabla tiene un renglón por cada
mintérmino; y un mapa, como se verá, tiene un casillero o cuadro asociado a cada mintérmino.

El mapa también puede ser considerado una extensión de los diagramas de Venn. Consideremos un diagrama
de Venn para dos variables A y B:

A B

A B’ AB
A’ B

A’ B’

Figura 5.1 Mintérminos de dos variables en un diagrama de Venn.

Si el orden de las variables para la asignación del código de mintérminos es AB, se puede rotular el diagrama
con el número decimal asociado al mintérmino, queda:

A B

2 3 1

0
Figura 5.2 Códigos decimales de mintérminos en un diagrama de Venn.

Puede observarse que resultan áreas desiguales para cada mintérmino; y que el gráfico refleja las adyacencias
entre mintérminos, pero no tan claramente como un 2-cubo, el cual se muestra en la Figura 5.3:

Profesor Leopoldo Silva Bijit 19-01-2010


2 Sistemas Digitales

0 A
2

1 3
B
C
Figura 5.3 Mintérminos de dos variables en un 2-cubo.

En un mapa de Karnaugh para cada mintérmino se adopta un área de igual tamaño y forma cuadrada; y
además, estos cuadrados se disponen de tal forma que reflejen las adyacencias. En la Figura 5.4, se ha
superpuesto el 2-cubo, con un mapa de dos variables.
A
B 0 1
0 0 2 A

1 1 3

B f(A,B)
C
Figura 5.4 Mintérminos de dos variables en un mapa de Karnaugh.

La identificación de los cuadros con el número del mintérmino, depende de la elección del orden de las
variables que se haya elegido para la representación decimal equivalente. Por ejemplo, para dos variables A y
B:
B 0 1 B 0 1
A A
0 1 0 2
0 0

2 3 1 3
1 1

f(A, B) f(B, A)

Figura 5.5 Número decimal de los mintérminos y el orden de las variables.

La representación de funciones mediante mapas, se logra marcando los mintérminos presentes con un "1"; los
ceros suelen omitirse.

Por ejemplo, las funciones AND y OR, de dos variables, se representan en mapas según:

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 5. Mapas de Karnaugh 3

B B
A 0 1 A 0 1
0 1 0 0 1
0 0 0 1
2 3 2 3
1 0 1 1 1 1

f1(A,B)=A B f2(A,B)=A + B

Figura 5.6 Representación de funciones de dos variables en un mapa.

Nótese que f1 m3 ; y que f 2 m1 m2 m3 .

Mapa para tres variables.

Para tres variables, en orden: A, B y C, se ilustran los mintérminos en un diagrama de Venn y en un 3-cubo:
B
A B 2 6
4 6 2
0 A
7 4
5 3
3
7
1 0 1 5
C
C

Figura 5.7 Diagrama de Venn para tres variables y un 3-cubo.

La Figura 5.8, muestra un desarrollo de un 3-cubo. Nótese que al abrir las caras del cubo, los mintérminos
que están a distancia uno, quedan adyacentes (exceptuando los de la cara 0451).

Los códigos de los mintérminos quedan ordenados según código Gray. El 3-cubo muestra también la
propiedad del código Gray de ser reflejado, la cara 0231 y la cara 4675 son 2-cubos con A=0 y A=1
respectivamente.

Profesor Leopoldo Silva Bijit 19-01-2010


4 Sistemas Digitales

B B=1
A=0
2 A=1
6
4 A 2 6
0 0
C=0 4
3
7
1 3 7
5 C=1 5
1
0
C
f(A, B, C)
f(A, B, C)
Figura 5.8 Del 3-cubo al mapa de Karnaugh de tres variables.

La Figura 5.9 muestra el desarrollo de un 3-cubo sobre el mapa de Karnaugh de tres variables:
AB
C 00 01 11 10
0 2 6 4
0

1
1 3 7 5

f(A, B, C)
Figura 5.9 Mapa de Karnaugh de tres variables y un 3-cubo.

Nótese que m0 es adyacente a m1 , m2 y m4 . En un mapa de Karnaugh se considera que los bordes de los
rectángulos son coincidentes, debido a la propiedad del código Gray de ser cíclico. Los cuatro mintérminos
de los extremos pueden visualizarse como muestra la Figura 5.10:

Figura 5.10 Bordes en un mapa de Karnaugh.

El mapa para tres variables puede obtenerse con dos mapas de dos variables.
Resulta práctico colocar en un borde de cada cuadrado el número del mintérmino. De esta forma, resulta
cómodo expresar una forma canónica en un mapa.

5.2. Formas de Mapas

A continuación se ilustran mapas, para 3, 4 y 5 variables. Los valores de columnas y renglones se ordenan
empleando código Gray, para reflejar mejor las adyacencias. El orden de las variables, para la representación
decimal equivalente del mintérmino, figura en la base de cada mapa.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 5. Mapas de Karnaugh 5

AB
CD 00 01 11 10
0 4 12 8
AB 00
C 00 01 11 10
0 2 6 4 1 5 13 9
0 01

1 3 7 5 3 7 15 11
1 11

2 6 14 10
f(A, B, C) 10

Figura 5.11 Mapas de Karnaugh para tres y cuatro variables.


f(A, B, C, D)
La Figura 5.12 muestra una forma alternativa de identificar los mintérminos, indicando las zonas donde las
variables toman valor uno.
A

B
Figura 5.12 Mapa de Karnaugh para tres variables.

Nótese que el mapa de 5 variables se obtiene a partir de dos mapas de cuatro variables. A uno se le antecede
un cero en la codificación de las columnas y al otro un 1.

La Figura 5.13 muestra un mapa para 5 variables codificado en Gray.

Profesor Leopoldo Silva Bijit 19-01-2010


6 Sistemas Digitales

ABC
000 001 011 010 110 111 101 100
DE
0 4 12 8 24 28 20 16
00 0

1 5 13 9 25 29 21 17
01

3 7 15 11 27 31 23 19
11

2 6 14 10 26 30 22 18
10

f(A, B, C, D, E)

Figura 5.13 Mapa de Karnaugh de cinco variables, codificado en Gray.

Sin embargo esta forma de generar mapas, no refleja bien las adyacencias.
En un mapa de cinco variables cada mintérmino tiene cinco adyacentes, pero sólo pueden dibujarse cuatro
cuadrados adyacentes en un lado a un cuadrado. Por ejemplo, en la Figura 5.13, se visualiza bien que el
mintérmino 5 tiene adyacentes los mintérminos: 1, 4, 7 y 13; pero no tan claramente que también es
adyacente al 21.

Otra forma es una representación de mapas apilados en el espacio, como se muestra en la Figura 5.14. De
esta forma puede visualizarse las adyacencias en diferentes planos. En esta representación se visualiza mejor
que el mintérmino 5 es adyacente con el 21.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 5. Mapas de Karnaugh 7

A=1 100 101 111 110


16 20 28 24
0
A=0
17 21 29 25

19 23 31 27
ABC

DE 000 001 011 010


18 22 30 26
0 4 12 8
00

1 5 13 9
01 f(A, B, C, D, E)

3 7 15 11
11

2 6 14 10
10

Figura 5.14 Mapa de Karnaugh apilable de cinco variables.

Mapas para 6 o más variables son difíciles de manejar.

5.3. Manejo de Mapas

Los siguientes conceptos son útiles en la manipulación de mapas:

a) Un mapa de n variables tiene 2 n cuadros.


b) Cada bloque o casillero de un mapa de n variables, tiene n bloques adyacentes; ya que los códigos
binarios de los n mintérminos adyacentes están a distancia uno.
c) Un bloque está asociado a un producto o cubo que contiene las n variables, pudiendo éstas estar o no
complementadas.
d) Agrupando dos bloques adyacentes, se logra un producto de (n-1) variables.
e) Los bloques pueden agruparse en un número que es una potencia de dos; es decir: 2, 4, 8, 16, etc.
f) Agrupando 2 k bloques, que forman un k-cubo, la expresión booleana asociada es la que resulta de eliminar
k variables de las n correspondientes a un mintérmino.

Los siguientes mapas ilustran el concepto de agrupaciones de números pares de mintérminos, que forman
subcubos.

Profesor Leopoldo Silva Bijit 19-01-2010


8 Sistemas Digitales

AB AB
CD 00 01 11 10 CD 00 01 11 10
0 4 12 8 0 4 12 8
00 0 0 1 1 00 0 0 1 0
1 5 13 9 1 5 13 9
01 0 0 1 1 01 0 0 1 0
3 7 15 11 3 7 15 11
11 0 0 1 1 11 0 0 1 0
2 6 14 10 2 6 14 10
10 0 0 1 1 10 0 0 1 0

f(A, B, C, D)=A f(A, B, C, D)=AB

Figura 5.15 Agrupaciones de 8 y 4 mintérminos en un Mapa de Karnaugh de cuatro variables.

AB AB
CD 00 01 11 10 CD 00 01 11 10
0 4 12 8 0 4 12 8
00 0 0 0 0 00 0 0 0 0
1 5 13 9 1 5 13 9
01 0 0 0 0 01 0 0 0 0
3 7 15 11 3 7 15 11
11 0 0 1 0 11 0 0 1 0
2 6 14 10 2 6 14 10
10 0 0 1 0 10 0 0 0 0

f(A, B, C, D)=ABC f(A, B, C, D)=ABCD

Figura 5.16. 2-cubo y mintérmino en un Mapa de Karnaugh de cuatro variables.

Para n = 4:
a) Un mintérmino se expresa como un producto de 4 variables.
b) Una agrupación de 2 mintérminos, que forman un 1-cubo (o que son adyacentes), puede expresarse en tres
variables.
c) Una agrupación de 4 mintérminos, que forman un 2-cubo, se expresa en dos variables.
d) Una agrupación de 23 mintérminos, que forman un 3-cubo, reduce en 3 las variables; es decir, esta
agrupación puede expresarse como una variable.
e) Una agrupación de los 2 4 mintérminos (forman un 4-cubo), puede expresarse como 1. Es decir, en 0
variables.
f) Nótese que bajo el mapa suele escribirse la función que éste representa.
g) La lectura de la expresión asociada a un grupo, se efectúa por la intersección de las zonas asociadas a las
variables.
h) El número de grupos de un literal, en caso de n variables, aplicando la fórmula desarrollada en 4.4, es:

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 5. Mapas de Karnaugh 9

n n!
21 2 2n
1 1!(n 1)!

Para n=4, se tienen 8 grupos de un literal:

A, B, C , D, A , B , C , D

i) Los grupos de 2 literales, en caso de n variables, está dado por:

n n!
22 22 2n(n 1)
2 2!(n 2)!

Con n=4, se tienen 24 grupos de dos literales:

AB, A'B, AB', A'B'


n AC, A'C, AC', A'C'
AD, A'D, AD', A'D'
2 BC, B'C, BC', B'C'
BD, B'D, BD', B'D'
CD, C'D, CD', C'D'

22
j) Los grupos de k literales, cuando se tienen n variables, quedan dados por:
Con k n :
n!
2k
k!(n k )!
Cuando k es igual a n, se logra el número de mintérminos.
k) Debido al alto número de subcubos, es importante ejercitarse en ubicarlos en el mapa.
Los menos evidentes son aquellos que se encuentran en los bordes.
Ejemplos de estos casos, para n=4: b’d’, b’c, a’b’d’, a’bd’

5.4. Uso de mapas

La obtención del mapa, a partir de una forma canónica es asunto trivial, si los casilleros han sido rotulados
con los números decimales de los mintérminos.
La obtención del mapa, a partir de una forma “suma de productos” puede obtenerse empleando los conceptos
desarrollados en manejo de mapas en el punto 5.3, para representar los cubos de cada producto.

Aplicando la inducción perfecta los mapas pueden emplearse para demostrar teoremas, y también para
verificar alguna proposición del álgebra de Boole.

La principal aplicación de los mapas es la minimización de funciones, realizada en forma manual, lo que
resulta conveniente para 5 o menos variables.

Ejemplo 5.1. Mapa a partir de los mintérminos.

Obtener el mapa de: f ( A, B, C ) m(1, 2,5)

Basta marcar con un uno los mintérminos presentes. Se obtiene:

Profesor Leopoldo Silva Bijit 19-01-2010


10 Sistemas Digitales

AB
C 00 01 11 10
0 2 6 4
0 1
1 3 7 5
1 1 1

f ( A, B, C ) m(1, 2,5)

Figura 5.17. Mapa de Karnaugh a partir de lista de mintérminos.

Ejemplo 5.2. Mapa a partir de expresión.

Obtener el mapa de la siguiente función:

f ( A, B, C ) A ' C BC ' A ' BC

Para tres variables: Un mintérmino tiene 3 literales; una agrupación de dos mintérminos adyacentes tiene una
expresión dependiente de dos variables.

Para aclarar el método, se dibujará un mapa para cada producto. Con un poco de experiencia, todos los
productos pueden dibujarse en el mismo mapa.

Para los cubos: A’C y B’C se obtienen:

AB AB
C 00 01 11 10 C 00 01 11 10
0 2 6 4 0 2 6 4
0 0 1 1
1 3 7 5 1 3 7 5
1 1 1 1

f1(A, B, C)=A'C f2(A, B, C)=BC'

Figura 5.18. Un mapa de Karnaugh por producto.

Y para A'BC: Finalmente:

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 5. Mapas de Karnaugh 11

AB AB
C 00 01 11 10 C 00 01 11 10
0 2 6 4 0 2 6 4
0 0 1 1

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

f3(A, B, C)=A'BC f(A, B, C)=A'C+BC'+A'BC

Figura 5.19. Mapa de Karnaugh de un mintérmino y de la función completa.

El mapa anterior permite escribir la forma canónica:


f ( A, B, C ) m(1, 2,3, 6)

Nótese que el producto A'BC está incluido en A'C


Los mintérminos se marcan sólo una vez. Esto por idempotencia, ya que: mi mi mi .

Ejemplo 5.3. Uso de mapas en la demostración de teoremas.

Dadas dos funciones, si se desea probar su equivalencia, la aplicación de los mapas simplifica largas
demostraciones algebraicas. Sólo es preciso obtener un mapa para cada una de las funciones, y luego
comparar la igualdad de sus formas canónicas.

Demostrar el teorema de De Morgan:


(a b) ' a ' b '

La expresión del lado derecho tiene el mapa que figura a la izquierda en la Figura 5.20. A la derecha de la
Figura 5.20 se tiene el mapa para el OR de las variables.
A A
0 1 B 0 1
0 2 0 2
0 1 0 1
1 3 1 3
1 1 1 1 1

f1(A,B)=A'B' f2(A,B)=A+B

Figura 5.20. Mapas de Karnaugh en la demostración de teoremas.

Negando el mapa para la función OR, se obtiene idéntico mapa al de f1. Entonces f1 y f2’ son equivalentes por
tener igual forma canónica, lo cual demuestra por inducción completa la proposición, conocida como teorema
de De Morgan.

Profesor Leopoldo Silva Bijit 19-01-2010


12 Sistemas Digitales
5.5. Minimización usando mapas de Karnaugh.

La simplificación de expresiones booleanas mediante reducciones puramente algebraicas presenta


dificultades, ya que no puede encontrarse un procedimiento sistemático general, para efectuar la reducción.
Además se presenta la dificultad de cómo saber que se ha encontrado la forma mínima. Los mapas, muestran
la estructura interna de la función, facilitando la agrupación en subcubos.

Se han desarrollado herramientas de diseño lógico que permiten efectuar minimizaciones para funciones de
una o varias variables. Sin embargo los algoritmos y heurísticas en que están basados no son fáciles de
entender, ya que conceptualizan aspectos de las funciones booleanas que son más adecuadas a un tratamiento
algorítmico, mediante un computador.

A continuación desarrollaremos métodos gráficos, basados en mapas, y que están limitados a un número
reducido de variables (no más de 6), ya que su exposición permitirá entender los métodos automáticos, así
como también permitir diseñar, con papel y lápiz, algunos casos sencillos.

5.5.1. Minimización como suma de productos.

Podemos plantear el problema de minimización diciendo que se desea obtener, a partir de una expresión
booleana, una forma equivalente que contenga un número mínimo de términos, y tal que cada término tenga
el mínimo número de literales posible.

El método consiste en dibujar el mapa a partir de la función, y luego leer desde el mapa agrupando
convenientemente los mintérminos presentes.
Deben respetarse las siguientes reglas:

Deben agruparse tantos bloques como sea posible; ya que mientras mayor sea la agrupación, menor será el
número de literales.

Debe formarse el menor número de agrupaciones de bloques; ya que a menor número de grupos, se tendrá
menor número de términos.

Un bloque puede ser usado muchas veces, en distintas agrupaciones; pero a lo menos una vez.

Una técnica consiste en formar primero los grupos con menor número de adyacencias. Por esta razón, los
primeros mintérminos que deben marcarse son aquellos que no tienen adyacencias.
Ejemplo 5.4. Minimización a partir de los mintérminos
Se tiene:
AB
C 00 01 11 10
0 2 6 4
0 1 1 1
1 3 7 5
1 1 1

f(A, B, C)= (0,2,3,6,7)


Figura 5.21. Mapa de Karnaugh a partir de los mintérminos.

Si se considera primero la agrupación de los mintérminos (2, 3, 6, 7) que puede leerse como B, podría inducir,
en caso de mapas complejos, a no agrupar convenientemente al mintérmino A’B’C’, que sólo tiene una
adyacencia.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 5. Mapas de Karnaugh 13

Considerando formar grupos mayores con los mintérminos que tienen menos adyacencias quedan las
siguientes agrupaciones de mintérminos: (0, 2) y (2, 3, 6, 7).

AB
C 00 01 11 10
A’C’ 0 2 6 4
0 1 1 1 0
1 3 7 5
1 0 1 1 0
B

f(A, B, C)=B+A’C’
Figura 5.22. Agrupaciones en el Mapa de Karnaugh.

Veremos a continuación un ejemplo más complejo.


Ejemplo 5.5. Formación de grupos de mintérminos en minimización basada en mapas.
Se desea minimizar: f(A, B, C, D) = m(0, 1, 3, 8, 9, 11, 13, 14)

Dibujando un mapa para cuatro variables, se logra:


AB
CD 00 01 11 10
0 4 12 8
00 1 1
1 5 13 9
01 1 1 1
3 7 15 11
11 1 1
2 6 14 10
10 1

f(A, B, C, D)= (0,1,3,8,9,11,13,14)


Figura 5.23. Mapa de Karnaugh con los mintérminos.

Se observa que:
m14 no tiene mintérminos adyacentes. Por esta razón no puede agruparse.
m13 tiene un mintérmino adyacente. Por lo tanto, sólo puede agruparse con m9 .
m0 , m3 , m8 y m11 tienen dos mintérminos a distancia uno.
m1 tiene 3 mintérminos adyacentes.
m9 tiene 4 mintérminos a distancia uno.

Los grupos que forman sub-cubos suelen marcarse en al mapa, encerrando los mintérminos del grupo con una
línea cerrada.

Profesor Leopoldo Silva Bijit 19-01-2010


14 Sistemas Digitales
Ya se tienen los grupos:( m14 ) y ( m9 y m13 ); puede formarse ( m0 , m1 , m8 , m9 ), con el objeto de hacer el grupo
lo mayor posible.

Sólo falta considerar m3 y m11 , que a su vez forman un grupo. Sin embargo, conviene efectuar la
agrupación: ( m1 , m3 , m9 , m11 ), que emplea m1 y m9 , ya considerados, con el objeto de hacer el grupo lo mayor
posible.

Resulta finalmente: f(A,B,C,D)=ABCD’+AC'D+B’D+B’C’


AB
CD 00 01 11 10
0 4 12 8
00 1 0 0 1
1 5 13 9
01 1 0 1 1
3 7 15 11
11 1 0 0 1
2 6 14 10
10 0 0 1 0

f(A,B,C,D)=ABCD’+AC'D+B’D+B’C’

Figura 5.24. Mínimo número de grupos.

Ejemplo 5.6.
Minimizar: f(A, B, C, D) = m(0, 1, 2, 7, 8, 9, 10, 15)

AB
CD 00 01 11 10
0 4 12 8
00 1 0 0 1

1 5 13 9
01 1 0 0 1

3 7 15 11
11 0 1 1 0

2 6 14 10
10 1 0 0 1

f(A, B, C, D)=BCD+B’D’+B’C’

Figura 5.25. Solución ejemplo 5.6.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 5. Mapas de Karnaugh 15
Ejemplo 5.7.
Minimizar: f(A, B, C, D, E) = m(0,2,4,7,10,12,13,18,23,26,28,29).
ABC
000 001 011 010 100 101 111 110
DE
0 4 12 8 16 20 28 24
00 1 1 1 0 0 0 0 1 0

1 5 13 9 17 21 29 25
01 0 0 1 0 0 0 1 0

3 7 15 11 19 23 31 27
11 0 1 0 0 0 1 0 0

2 6 14 10 18 22 30 26
10 1 0 0 1 1 0 0 1

f(A, B, C, D, E)=B’CDE+A’B’D’E’+BCD’+C’DE’

Figura 5.26. Solución ejemplo 5.7.

Nótese que la representación es de sub-mapas apilados, pero dibujados en un plano.


Se tienen los siguientes grupos: (7,23); (0,4); (12,13,28,29); (2,10,18,26)

5.5.2. Minimización en forma de producto de sumas.

El método consiste en desarrollar el mapa para f, a partir de la forma canónica. Luego se obtiene el mapa para
f negado, de esta forma, se puede leer el producto de maxtérminos de f, como la suma de mintérminos de f’.
Así se obtiene la forma mínima como suma de productos. Después se obtiene por involución, la función f; y
finalmente se aplica De Morgan.

Para una función dada, siempre deberán obtenerse los dos diseños; es decir la forma suma de productos y
producto de sumas, ya que no es posible obtener una relación que indique cual de las dos formas será
mínima.
Ejemplo 5.8
Para el mapa de la Figura 5.27, se pueden obtener las formas canónicas:
La suma de mintérminos, resulta:

f(A, B, C, D)= m(0, 1, 3, 4, 8, 9, 10, 11, 12, 13, 14, 15)

La suma de maxtérminos, puede obtenerse según:

f’ = m(2, 5, 6, 7) = m2 + m5 + m6 + m7

Aplicando De Morgan, resulta:

f = m2’ m5’ m6’ m7’ = M2 M5 M6 M7= M(2, 5, 6, 7)


La función f, puede expresarse como suma de productos según:

f(A, B, C, D) = A + C’D’ + B’D con 5 literales.

Profesor Leopoldo Silva Bijit 19-01-2010


16 Sistemas Digitales
También del mapa de f’, puede leerse, como suma de productos, según:

f ’ = A’BD + A’CD’

Aplicando De Morgan, puede expresarse como producto de sumas según:

f(A, B, C, D) = (A + B’ + D’)(A + C’ + D) con 6 literales.


AB
CD 00 01 11 10
0 4 12 8
00 1 1 1 1
1 5 13 9
01 1 0 1 1
3 7 15 11
11 1 0 1 1
2 6 14 10
10 0 0 1 1

Figura 5.27. Solución ejemplo 5.8.

Resulta mínima la forma suma de productos.

Ejemplo 5.9.
Minimizar, según producto de sumas: f(A,B,C,D) = (4,5,7,8,10,11,12,13,15)

Para f(A,B,C,D) se tiene:

AB
CD 00 01 11 10
0 4 12 8
00 0 1 1 1
1 5 13 9
01 0 1 1 0
3 7 15 11
11 0 1 1 1
2 6 14 10
10 0 0 0 1

Figura 5.28. Mapa con los mintérminos de ejemplo 5.9

Luego, para f ' el mapa resulta:

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 5. Mapas de Karnaugh 17

AB
CD 00 01 11 10
0 4 12 8
00 1
1 5 13 9
01 1 1
3 7 15 11
11 1
2 6 14 10
10 1 1 1

f '(A, B, C, D)
Figura 5.29. Mapa con los mintérminos de f’

Formando los siguientes grupos, en el mapa: (0, 1, 3, 2); (6, 14); (1, 9).

Se obtiene: f’= A’B’ + BCD’ + B’C’D


Por involución: (f’)’ = f = (A’B’ + BCD’ + B’C’D)’
Por De Morgan: f = (A’B’)’ (BCD’)’ (B’C’D)’

Finalmente, por De Morgan:


f = (A +B) (B’ +C’ +D) (B +C +D’)

Con un poco de práctica, pueden agruparse los ceros en el primer mapa, y leer directamente las sumas,
complementando las variables.

5.5.3. Condiciones superfluas (don't care)

Algunas funciones booleanas son completamente especificadas para todas las combinaciones posibles de sus
variables.

Se denominan funciones incompletamente especificadas cuando se establece que el valor de la función es "1"
para ciertas combinaciones, "0" para otras y un valor cualquiera para el resto.

Los mintérminos pueden agruparse en tres conjuntos: conjunto que activa la función (on set), conjunto que
desactiva la función (off set) y conjunto de mintérminos superfluos (dc set).

Los mintérminos que pueden ser especificados con valor "1" ó "0"; es decir: con cualquier valor, se
denominan “condiciones superfluas”, o que “no importan” (don’t care).

Ejemplo de esta situación, es cuando existe dependencia entre las variables de entrada; ésta puede originar
que nunca se produzcan ciertas combinaciones de valores de las variables de entrada.

La presencia de estas condiciones flexibiliza el diseño de circuitos combinacionales; ya que posibilita


aumentar el tamaño de las agrupaciones, mediante la asignación de valor "1" a ciertas condiciones superfluas
y "0" a otras, según convenga para aumentar los grupos de mintérminos que forman sub-cubos.

Debe tenerse presente que no deben formarse agrupaciones que sólo contengan términos superfluos.

Profesor Leopoldo Silva Bijit 19-01-2010


18 Sistemas Digitales
En el mapa, las condiciones superfluas pueden marcarse con una "d" o con una “X”. En algunos textos se
emplea el símbolo ; el símbolo original representaba un "1" sobre un "0".
Ejemplo 5.10.
Se tiene f(A,B,C) = m(0,5) + d(1,4,7).

En un mapa:
AB
C 00 01 11 10
0 2 6 4
0 1 d
1 3 7 5
1 d d 1

f(A, B, C)

Figura 5.30. Mapa con condiciones superfluas.

Sin emplear las condiciones superfluas, se tiene: f = A’B’C’ + AB’C, con 6 literales.

Puede agruparse (0,1) y (5,7). En este caso: f = A’B’ + AC, con 4 literales.

Sin embargo, la agrupación más conveniente es (0, 1, 4, 5), y así se obtiene, con un literal:

f = B’

Nótese que: f(A,B,C) = (2,3,6) D(1,4,7) es decir, los maxtérminos superfluos tienen iguales
números que los mintérminos superfluos.

También se tienen:
f’(A, B, C) = m(2, 3, 6) + d(1, 4, 7)
f’(A, B, C) = M(0, 5) D(1, 4, 7)

Si en el ejemplo anterior, se minimiza la función f, como suma de productos, se logra: f’=B. Obteniendo un
resultado igual al anterior.
AB
C 00 01 11 10
0 2 6 4
0 1 1 d

1 3 7 5
1 d 1 d

f '(A, B, C)
Figura 5.31. Mapa con condiciones superfluas de f’

Debido a la presencia de condiciones superfluas, no se cumplirá siempre que:

f = (f ')'

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 5. Mapas de Karnaugh 19

No obstante, tanto f como (f ')' contienen los mintérminos especificados en la lista de f.


Ejemplo 5.11.
Puede comprobarse que f y (f ')' no son iguales, para la siguiente función que contiene mintérminos
superfluos:

f(A, B, C) = m(0, 1, 5) + d(2, 6) = A’C’ + B’C


f’(A, B, C) = m(3, 4, 7) + d(2, 6) = B + AC’
f’’(A, B, C) = ( B + AC’)’ = B’ (AC’)’ = B’(A’+C) = A’B’ + B’C A’C’ + B’C

Ejemplo 5.12.
Diseñar traductor de código BCD a exceso-3. El código exceso-3, representa los dígitos decimales mediante
su equivalente binario más tres. Tiene propiedades aritméticas que lo hacen útil en manipulaciones.

Nótese que se tiene un sistema con cuatro entradas y cuatro salidas: Se ha asumido que la cifra BCD se
dispone en paralelo, y se desea lograr la equivalente exceso-3, también en paralelo.

Se tiene:

BCD exceso-3
0 0000 0011
1 0001 0100
2 0010 0101
3 0011 0110
4 0100 0111
5 0101 1000
6 0110 1001
7 0111 1010
8 1000 1011
9 1001 1100
wxyz f 4 f3 f 2 f1

Figura 5.32. Tabla traductor BCD a Exceso-3.

Si se conoce que en la entrada se tendrá una cifra BCD, entonces algunas combinaciones de las variables w,
x, y, z deben tratarse como condiciones superfluas. Es el caso de los mintérminos con equivalentes binarios
1010 hasta 1111. En un mapa, esto puede anotarse:

Profesor Leopoldo Silva Bijit 19-01-2010


20 Sistemas Digitales

wx
yz 00 01 11 10
0 4 12 8
00 d
1 5 13 9
01 d
3 7 15 11
11 d d
2 6 14 10
10 d d

f(w, x, y, z)
Figura 5.33. Mapa de las condiciones superfluas del ejemplo 5.13.

Las expresiones canónicas para las funciones de salida son:

f1 = m(0,2,4,6,8) + d(10,11,12,13,14,15)
f2 = m(0,3,4,7,8) + d(10,11,12,13,14,15)
f3 = m(1,2,3,4,9) + d(10,11,12,13,14,15)
f4 = m(5,6,7,8,9) + d(10,11,12,13,14,15)

Minimizando, para cada una de las funciones por separado, se logra para el sistema de múltiples salidas, con
17 entradas:
f1 = z’
f2= y’ z’ + yz
f3= x’y + x’z + xy’z’
f4 = x’w +yw’z’

Puede apreciarse que en un sistema de salidas múltiples existe la posibilidad de ahorrar material: usando
parte o la totalidad de los productos de una función como partes de otra. Ejemplo de esto es el factor y’z' de
f2, que puede usarse en f3.

Una minimización multinivel con cuatro nodos, resulta con 16 literales:


f4 = w + x y + x z
f3 = f4' x + f4' y + f1' x'
f2 = f1 y' + f1' y
f1 = z'

Con un nodo adicional, resultan 13 literales.


f4 = x*nodo + w;
f3 = x*nodo’ + x’*nodo;
f2 = y*z + nodo’;
f1 = z’;
nodo = z + y;

Si se presenta una cifra BCD inválida en la entrada, la salida también será errónea. Para usar confiablemente
el circuito combinacional, diseñado empleando condiciones superfluas, debe asegurarse que la entrada sea
una cifra BCD válida.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 5. Mapas de Karnaugh 21
Problemas resueltos.

Problema 5.1. Comparador binario.

Primero es conveniente definir las variables que se emplearán:


Se tienen, como entradas, dos números (N1 y N2) de dos cifras binarias cada uno.
Las salidas o los resultados de la comparación serán tres señales que denominaremos: Lt por less than (menor
que), Eq por equal (igual), y Gt por greather than (mayor que).
Asumiremos que la cifra más significativa de N1 será A, y B la menos significativa; la cifra más significativa
de N2 será C, y D la menos significativa.

Un diagrama general de las entradas y salidas del módulo combinacional que se diseñará es el siguiente:

N1 A LT AB<CD
B
EQ AB=CD
C
N2
D GT AB>CD

Figura P5.1 Diagrama funcional comparador.

A continuación se especifica el diseño mediante una tabla de verdad. Ésta tiene 16 renglones.

Cuando N1 igual a N2 se activa la señal EQ.


Cuando N1 es mayor que N2 se activa la señal GT.
Cuando N1 es menor que N2 se activa la señal LT.

A B C D LT EQ GT
0 0 0 0 0 1 0
0 0 0 1 1 0 0
0 0 1 0 1 0 0
0 0 1 1 1 0 0
0 1 0 0 0 0 1
0 1 0 1 0 1 0
0 1 1 0 1 0 0
0 1 1 1 1 0 0
1 0 0 0 0 0 1
1 0 0 1 0 0 1
1 0 1 0 0 1 0
1 0 1 1 1 0 0
1 1 0 0 0 0 1
1 1 0 1 0 0 1
1 1 1 0 0 0 1
1 1 1 1 0 1 0

Figura P5.2. Tabla del comparador.

A continuación se plantean los 3 mapas de 4 variables y se efectúa la minimización, se obtienen:


LT = A'B'D + A'C + B'CD

Profesor Leopoldo Silva Bijit 19-01-2010


22 Sistemas Digitales
EQ = A'B'C'D' + A'BC'D + ABCD + AB'CD' = XNOR(A, C) XNOR(B, D)
GT = BC'D' + AC' + ABD'

Problema 5.2. Multiplicador de dos números binarios de dos cifras cada uno.

Primero se definen las variables que se emplearán:


Los resultados de la multiplicación son cuatro señales que denominaremos: P3 el bit más significativo del
producto, hasta P0 que será el bit menos significativo del producto. También asumiremos que la cifra más
significativa de N1 será A, y B la menos significativa; la cifra más significativa de N2 será C, y D la menos
significativa. Un diagrama general de las entradas y salidas del módulo combinacional que se diseñará es el
siguiente:

A
N1 P3
B P2
C P1
N2 P0
D

Figura P5.3. Diagrama funcional multiplicador.

A continuación se especifica el diseño mediante una tabla de verdad. Ésta tiene 16 renglones.

A B C D P3 P2 P1 P0
0 0 0 0 0 0 0 0
0 0 0 1 0 0 0 0
0 0 1 0 0 0 0 0
0 0 1 1 0 0 0 0
0 1 0 0 0 0 0 0
0 1 0 1 0 0 0 1
0 1 1 0 0 0 1 0
0 1 1 1 0 0 1 1
1 0 0 0 0 0 0 0
1 0 0 1 0 0 1 0
1 0 1 0 0 1 0 0
1 0 1 1 0 1 1 0
1 1 0 0 0 0 0 0
1 1 0 1 0 0 1 1
1 1 1 0 0 1 1 0
1 1 1 1 1 0 0 1

Figura P5.4. Tabla de verdad de multiplicador.

Luego se plantean 4 mapas de 4 variables. Después se minimiza, y se obtienen:


P3 = ABCD
P2 = AB’C + ACD’
P1 = AB'D + AC'D + BCD' + A'BC
P0 = BD

Problema 5.3. Incrementador en uno de cifra BCD.

Se asume que en la entrada se tiene una cifra BCD válida.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 5. Mapas de Karnaugh 23
Primero se plantean las variables que se emplearán.
La entrada son cuatro señales que denominaremos: E3 el bit más significativo de la cifra BCD, hasta E0 que
será el bit menos significativo. La salida son cuatro señales que denominaremos: S3 el bit más significativo
de la cifra BCD aumentada en uno, hasta S0 que será el bit menos significativo.

E3 S3
E2 S2
E1 S1
E0 S0

Figura P5.5. Diagrama funcional incrementador BCD.

Se asume que cuando a 9 se le suma 1 se obtiene cifra decimal 0. Se descarta la reserva.


Se completa la tabla de verdad.

E3 E2 E1 E0 S3 S2 S1 S0
0 0 0 0 0 0 0 1
0 0 0 1 0 0 1 0
0 0 1 0 0 0 1 1
0 0 1 1 0 1 0 0
0 1 0 0 0 1 0 1
0 1 0 1 0 1 1 0
0 1 1 0 0 1 1 1
0 1 1 1 1 0 0 0
1 0 0 0 1 0 0 1
1 0 0 1 0 0 0 0
1 0 1 0 d d d d
1 0 1 1 d d d d
1 1 0 0 d d d d
1 1 0 1 d d d d
1 1 1 0 d d d d
1 1 1 1 d d d d

Figura P5.6. Tabla de verdad del incrementador BCD

Se plantean 4 mapas de 4 variables y se minimiza, empleando condiciones superfluas, se obtienen:


S3 = E2 E1 E0 + E3 E0'
S2 = E2 E1' + E2 E0' + E2' E1 E0
S1 = E3' E1' E0 + E1 E0'
S0 = E0'

Problema 5.4. Semisumador binario.

Se denomina semi-sumador a un dispositivo que permite sumar, en binario, dos variables de entrada de un bit
(Ai y Bi). El sistema debe generar dos salidas: la suma (Si) y la reserva de salida (Ci carry).
La tabla de verdad resulta:

Profesor Leopoldo Silva Bijit 19-01-2010


24 Sistemas Digitales

Ai Bi Ci Si
0 0 0 0
0 1 0 1
1 0 0 1
1 1 1 0

Figura P5.7. Tabla de verdad del semisumador

Del mapa pueden leerse las siguientes ecuaciones:


Si = Ai’Bi + AiBi’ = Ai Bi
Ci = Ai Bi
Ai
Si
Bi

Ci
Figura P5.8. Implementación semisumador.

Problema 5.5. Sumador completo.

Si se desea sumar variables de varios bits se requiere un sumador completo, que tenga una tercera entrada
denominada reserva de entrada (carry-in):

Ai Bi Ci

Ci+1 Si
Figura P5.9. Diagrama funcional sumador completo de un bit.

Se tiene la siguiente tabla de verdad:

Ai Bi Ci Ci+1 Si
0 0 0 0 0
0 0 1 0 1
0 1 0 0 1
0 1 1 1 0
1 0 0 0 1
1 0 1 1 0
1 1 0 1 0
1 1 1 1 1

Figura P5.10. Tabla de verdad del sumador completo de un bit.

El esquema de la Figura P5.11, muestra una suma de cuatro bits en base a la conexión de cuatro sumadores
completos:

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 5. Mapas de Karnaugh 25

A3 B3 C3 A2 B2 C2 A1 B1 C1 A0 B0 C0

C4 S3 C3 S2 C2 S1 C1 S0
Figura P5.11. Diagrama funcional sumador completo de cuatro bits.

Las ecuaciones, para la tabla de la Figura P5.10, resultan:


Si = C i A i B i
C i +1 = B i C i + A i C i + A i Bi = C i (A i + B i) + A i B i

Un esquemático que representa a las ecuaciones anteriores se muestra en la Figura P5.12.

Ai Ai
Bi Ci
Ci
Si Ci+1
Ci Bi

Ai
Bi

Figura P5.12. Red para sumador completo.

Un sumador completo, puede implementarse mediante dos semi-sumadores, observando que:


C i +1 = B i C i + A i C i + A i Bi = C i (A i + B i) + A i B i = C i (A i B i) + A i B i

Ai Ai Bi Ai Bi Ci
Bi Si

Ai Bi (Ai Bi )Ci

Ci+1
Ci

Figura P5.13. Sumador completo mediante dos semisumadores.

Problema 5.6. Detección y corrección de errores en bits. Hamming.

En sistemas digitales, determinadas acciones sobre los datos colocan la integridad de éstos en peligro.
Ejemplo de procesos que pueden generar errores son: El almacenar bits en memorias dinámicas o en medios
magnéticos (superficies de discos flexibles o rígidos, que pueden dañarse físicamente o contaminarse por
interferencia en la escritura o lectura); la transmisión de bits mediante conductores de cobre, fibra o en forma
inalámbrica a través de grandes distancias.

Profesor Leopoldo Silva Bijit 19-01-2010


26 Sistemas Digitales
Debe contemplarse en el diseño de sistemas digitales que estos errores pueden producirse y que debe
encontrarse procedimientos para tratarlos.
La idea básica es que cuando se almacena o envía información se le agregue bits adicionales, denominados de
redundancia.

La detección de errores emplea los bits adicionales cuando se accesa o recibe información para determinar si
existe corrupción de los datos. En la corrección de errores, la información adicional debe permitir detectar y
corregir los errores, dentro de ciertos límites.

La detección requiere menos bits redundantes, pero si se detecta un error, el receptor solicita que se vuelvan a
enviar los datos, lo cual agrega tiempo de latencia y complejidad.
En la corrección se tiene menor latencia, ya que el proceso de corrección es una parte de la lógica que recibe
los datos; y sólo si los errores sobrepasan los límites de la corrección, debe solicitarse el reenvío.

Existen procedimientos para detectar y corregir errores simples (paridad, Hamming) y múltiples (códigos de
redundancia cíclica).
Detección de un error simple.
Se envían n bits: b0, b1, b2, ..., bn-1. Se desea encontrar el modo de detectar un error de un bit.
Una solución es enviar (n+1) bits, el bit n-avo es uno si existe un número impar de unos en los n bits de
datos. Por esto al bit redundante se lo denomina de paridad (par en este caso), ya que la información más el
bit adicional contienen una cantidad par de unos.
Para dos variables booleanas, el or exclusivo de ellas es cero si el número de unos es par; y uno si es impar.

Para las n variables, la forma de computar (generar) el bit de paridad es mediante la siguiente ecuación
lógica:
bn = b0 b1 b2 ...bn-1

Si los datos se disponen en paralelo (todos al mismo tiempo) puede determinarse la paridad mediante un árbol
combinacional mediante xors. Si los datos se tienen en serie, basta una compuerta xor y un registro(o
memoria) de un bit.

Para verificar la paridad, en el receptor se recalcula:


R = b0 b1 b2 ...bn-1 bn

Si (R = =1) se detecta un error simple en un bit, y se toma alguna medida.


Se emplea paridad en algunas situaciones, por ejemplo: en transmisión serial, en arreglos de memoria donde
cada bit de los n, se almacena en un chip diferente.
Corrección de un error simple.
Se envían n bits: b0, b1, b2, ..., bn-1. Se desea encontrar el modo de detectar y corregir un error en un bit.

Códigos de Hamming (1950).


Se describe el procedimiento desarrollado por Hamming.

Se toman subconjuntos traslapables de b0, b1, b2, ..., bn-1.


Se calcula un bit de paridad para cada subconjunto.
Se envían m bits, n de datos y k de paridad.
Con suficientes bits de paridad puede identificarse el bit errado; ya que el receptor calcula una palabra de
chequeo, tal que si es cero, no hay errores; en caso de existir un error, el valor de la palabra de chequeo indica
la posición del bit errado. Para corregir el error, se complementa el bit en la posición indicada por la palabra
de chequeo.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 5. Mapas de Karnaugh 27
Se tienen:
n bits de datos: b0, b1, b2, ..., bn-1.
k de paridad: p0, p1, p2, ..., pk-1.
m en total: c1, c2, ..., cm. Nótese que los bits ci se enumeran a partir de uno.

Primera etapa: Asignar los bi y pi con ci .


Se asigna cada bi y cada pi una sola vez. Primero se asigna c1, luego c2 y así sucesivamente.
Se asigna ci a un bit de paridad si i es una potencia de dos; en caso contrario se asigna el ci a un bit de dato. El
proceso se detiene cuando no quedan más bits bi que asignar.

Ejemplo con n = 4. Se tienen b0, b1, b2, b3


Se asigna: c1 = p0 Ya que 20 = 1.
Luego: c2 = p1 Ya que 21 = 2.
c3 = b0 Ya que i = 3 no es una potencia de dos.
c4 = p2 Ya que 22 = 4.
c5 = b1
c6 = b2
c7 = b3 En este paso no quedan más bits que asignar.

En este caso resulta k = 3, y m = 7. Deben enviarse tres bits adicionales para detectar y corregir un error
simple. Si n es elevado se tendrá que k es aproximadamente igual a log2(n).
Cuatro bits de paridad permiten un máximo de m = 16, con 12 de datos.
Cinco bits de paridad permiten un máximo de m = 32, con 27 de datos.

Segunda etapa: Cálculo de los bits de paridad.


La determinación de los subconjuntos de c1, c2, ..., cm. debe permitir encontrar la posición del bit errado. Para
ello se escriben los ci en binario, y se forma un subconjunto con todos los bits que tengan un uno en
determinada posición de la secuencia binaria. Debido a la elección de los pi, sólo estará presente un pi en cada
subconjunto. Se calcula el pi del subconjunto como el xor de los bits de datos del subconjunto.

En el ejemplo con m = 7, se tienen: b0


c1 = c001 = p0 Los subconjuntos, resultan: Los bits de paridad se b1 p0
c2 = c010 = p1 b3
(c1, c3, c5, c7) = (p0, b0, b1, b3) calculan según:
c3 = c011 = b0 (c2, c3, c6, c7) = (p1, b0, b2, b3) p0 = b0 b1 b3 b0
c4 = c100 = p2 (c4, c5, c6, c7) = (p2, b1, b2, b3) b2 p1
p1 = b0 b2 b3 b3
c5 = c101 = b1 p2 = b1 b2 b3
c6 = c110 = b2 b1
c7 = c111 = b3 b2 p2
b3

Figura P5.14. Generación bits de paridad

Tercera etapa: Corregir el error de un bit en recepción:


Se separan los datos recibidos en subconjuntos, se calcula wi, el xor de todos los elementos de cada
subconjunto (incluidos los bits de paridad). Se calcula el valor de chequeo, mediante:

chequeo = w0 + 2* w1 + 4* w2 + ....

Si el valor de chequeo no es cero, un bit debe ser erróneo. Cada wi = 0 remueve la duda sobre algunos bits.
Cualquier bit puede tener un error (solo un bit), incluso uno de los de paridad puede haberse contaminado en
la transmisión o lectura. Si un bit está errado existe sólo una forma de corregirlo.

Si chequeo es cero, no hay error simple. En caso contrario se complementa el bit cchequeo

Profesor Leopoldo Silva Bijit 19-01-2010


28 Sistemas Digitales

Para m = 7 se calculan los wi, a partir de los ci:


w0 = (c1 c3 c5 c7) = (p0 b0 b1 b3)
w1 = (c2 c3 c6 c7) = (p1 b0 b2 b3)
w2 = (c4 c5 c6 c7) = (p2 b1 b2 b3)

c2
c3 w
c1 c6
c3 w c7 1
c
c5 7 0
c4
c5 w
c6
c7 2

Figura P5.15. Cálculo de los wi.

El valor de chequeo resulta: chequeo = w0 + 2* w1 + 4* w2

La siguiente tabla muestra los valores binarios de los wi posibles, y asumiendo que sólo un bit del
subconjunto puede estar errado si wi es uno; y que si wi es cero, los elementos del subconjunto asociado están
correctos.

Estudiemos el segundo renglón: Con w2 igual a cero, no pueden estar errados: p2, b1, b2, b3; y si además w1
es cero: p1, b0, b2, b3 llegan correctamente; y si w0 es 1 podría existir un error en p0, b0, b1, b3. Pero de las
listas anteriores: b0, b1, b2 y b3 llegaron correctamente; por lo tanto se determina que en este caso p0 llegó
errado.

w2 w1 w0 chequeo Pueden tener error No están errados Bit errado:


0 0 0 0 ninguno todos ninguno
0 0 1 1 p0, b0, b1, b3 p1, b0, b2, b3, p2, b1 p0
0 1 0 2 p1, b0, b2, b3 p0, b0, b1, b3, p2, b2 p1
0 1 1 3 p0, b0, b1, b3, p1, b2 p2, b1, b2, b3 b0
1 0 0 4 p2, b1, b2, b3 p0, b0, b1, b3, p1, b2 p2
1 0 1 5 p0, b0, b1, b3, p2, b2 p1, b0, b2, b3 b1
1 1 0 6 p1, b0, b2, b3, p2, b1 p0, b0, b1, b3 b2
1 1 1 7 b3 b3

Figura P5.16. Interpretación tabla de valores de wi

En la siguiente red, si w0 y w1 son unos y w2 es cero, se tendrá que f0 es b0'; en caso contrario es b0.
w0 w0 w'0
w1
w'2 f0 w'1 f1 w1
f2
w2 w2
c3 c5 c6
w0
w1
w2 f3
c7

Figura P5.17. Corrección empleando wi

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 5. Mapas de Karnaugh 29
Ejemplo código Hamming de 7 bits.
A partir de los valores de los bits de información se calculan los de paridad.
Con: b0 = 0; b1 = 1; b2= 0; b3 = 1 c1 = c001 = p0 = 0
Los bits de paridad se calculan según: c2 = c010 = p1 = 1
p0 = b0 b1 b3 = 0 1 1 = 0 c3 = c011 = b0 = 0
p1 = b0 b2 b3 = 0 0 1 = 1 c4 = c100 = p2 = 0
p2 = b1 b2 b3 = 1 0 1 = 0 c5 = c101 = b1 = 1
c6 = c110 = b2 = 0
c7 = c111 = b3 = 1
a) Se calculan los wi, a partir de los ci , recibidos sin errores, según:
w0 = (c1 c3 c5 c7) = (p0 b0 b1 b3) = (0 0 1 1) = 0
w1 = (c2 c3 c6 c7) = (p1 b0 b2 b3) = (1 0 0 1) = 0
w2 = (c4 c5 c6 c7) = (p2 b1 b2 b3) = (0 1 0 1) = 0
El valor de chequeo resulta: chequeo = w0 + 2* w1 + 4* w2 = 0

b) Se calculan los wi, a partir de los ci , asumiendo que c3 llega errado, según:
w0 = (c1 c3 c5 c7) = (p0 b0 b1 b3) = (0 1 1 1) = 1
w1 = (c2 c3 c6 c7) = (p1 b0 b2 b3) = (1 1 0 1) = 1
w2 = (c 4 c 5 c6
El valor de chequeo resulta: c7) = (p2 b1 b2 b3) = (0 1 0 1) = 0
chequeo = w0 + 2* w1 + 4* w2 = 1 + 2*1 +4 *0 = 3, lo cual implica que debe complementarse c3.

c) Se calculan los wi, a partir de los ci , asumiendo que c5 llega errado, según:
w0 = (c1 c3 c5 c7) = (p0 b0 b1 b3) = (0 0 0 1) = 1
w1 = (c2 c3 c6 c7) = (p1 b0 b2 b3) = (1 0 0 1) = 0
w2 = (c4 c5 c6 c7) = (p2 b1 b2 b3) = (0 0 0 1) = 1
El valor de chequeo resulta:
chequeo = w0 + 2* w1 + 4* w2 = 1 + 2*0 +4 *1 = 5, lo cual implica que debe complementarse c5.

d) Se calculan los wi, a partir de los ci , asumiendo que c1 llega errado, según:
w0 = (c1 c3 c5 c7) = (p0 b0 b1 b3) = (1 0 1 1) = 1
w1 = (c2 c3 c6 c7) = (p1 b0 b2 b3) = (1 0 0 1) = 0
w2 = (c4 c5 c6 c7) = (p2 b1 b2 b3) = (0 1 0 1) = 0
El valor de chequeo resulta:
chequeo = w0 + 2* w1 + 4* w2 = 1 + 2*0 +4 *0 = 1, lo cual implica que debe complementarse c1.

Problema 5.7.

Se tiene un número binario de cuatro bits: A3A2A1A0, donde A3 es la cifra más significativa, sea n el
equivalente decimal de este número.

Diseñar un sistema que acepte a n como entrada y que produzca en la salida el equivalente binario del número
decimal: ( n*4 +1).

Solución.
El mayor n que puede escribirse con cuatro bits es 15, por lo tanto la salida mayor será 61, lo cual requiere 6
cifras binarias para representarla. Sean éstas: S5S4S3S2S1S0.

La siguiente tabla de verdad ilustra la situación:

Profesor Leopoldo Silva Bijit 19-01-2010


30 Sistemas Digitales

n A3A2A1A0 n*4 +1 S5S4S3S2S1S0


0 0000 1 000001
1 0001 5 000101
2 0010 9 001001
3 0011 13 001101
4 0100 17 010001
5 0101 21 010101
6 0110 25 011001
7 0111 29 011101
8 1000 33 100001
9 1001 37 100101
10 1010 41 101001
11 1011 45 101101
12 1100 49 110001
13 1101 53 110101
14 1110 57 111001
15 1111 61 111101

Figura P5.18. Tabla de verdad Problema 5.7

Observando la tabla, se determina que S1= 0 y S0 = 1 son constantes, y que:


S5 = A3, S4 = A2, S3 = A1, y S2 = A0

El diseño mínimo no requiere compuertas, y se muestra a continuación:


A3 S5
S1
A2 S4 VCC
A1 S3
S0
A0 S2
S1
tierra
S0
VCC

Figura P5.19. Red Problema 5.7

A la derecha se muestra un diseño donde las señales S1 y S0 son salidas de compuertas.

Problema 5.8.

Se tiene un circuito digital de 4 entradas (A, B, C, D) y cuatro salidas (f1, f2, f3, f4).
a) Determinar como suma de mintérminos, la función f1 que es verdadera cuando exactamente dos de las
entradas sean verdaderas.
b) Determinar como producto de maxtérminos, la función f2 que es verdadera cuando exactamente tres de las
entradas sean verdaderas.
c) Determinar mediante un circuito lógico en base a AND, OR y NOT, la función f3, que es verdadera cuando
exactamente cuatro de las entradas sean verdaderas.
d) Determinar mediante una expresión booleana, la función f4, que es verdadera cuando exactamente cuatro
de las entradas sean falsas.

Solución.
Se tienen las siguientes tablas de verdad.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 5. Mapas de Karnaugh 31

A B C D f1 f2 f3 f4 Código
0 0 0 0 0 0 0 1 0
0 0 0 1 0 0 0 0 1
0 0 1 0 0 0 0 0 2
0 0 1 1 1 0 0 0 3
0 1 0 0 0 0 0 0 4
0 1 0 1 1 0 0 0 5
0 1 1 0 1 0 0 0 6
0 1 1 1 0 1 0 0 7
1 0 0 0 0 0 0 0 8
1 0 0 1 1 0 0 0 9
1 0 1 0 1 0 0 0 10
1 0 1 1 0 1 0 0 11
1 1 0 0 1 0 0 0 12
1 1 0 1 0 1 0 0 13
1 1 1 0 0 1 0 0 14
1 1 1 1 0 0 1 0 15

Figura P5.20. Tabla de verdad Problema 5.8

Entonces:
a) f1 = m(3, 5, 6, 9, 10, 12)
b) f2 = M(0, 1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15)
c) f3 = m(15) = ABCD
A
B f3
C
D
d) f4 = m(0) = A'B'C'D'

Problema 5.9.

Se tiene una función booleana:


f(a, b, c, d) = m(7, 13, 14) + d(1, 3, 4, 5, 6, 9, 10)

a) Encontrar los implicantes primos e implicantes primos esenciales, fundamentando la respuesta.


b) Encontrar todos los diseños que implementen la función mínima en su forma suma de productos y
producto de sumas.

Solución.
a) Para la forma suma de productos se tiene el siguiente mapa de Karnaugh:

Profesor Leopoldo Silva Bijit 19-01-2010


32 Sistemas Digitales

ab
cd 00 01 11 10
0 4 12 8
00 d
1 5 13 9
01 d d 1 d
3 7 15 11
11 d 1
2 6 14 10
10 d 1 d

f(a, b, c, d)= m(7, 13, 14) + d(1, 3, 4, 5, 6, 9, 10)


Figura P5.21. Suma de productos Problema 5.9

Observando el mapa o aplicando método de Quine o Quine-McCluskey, y empleando las condiciones


superfluas, se pueden formar: 3 implicantes primos de 4 mintérminos cada uno; y dos implicantes primos de
dos mintérminos cada uno. La siguiente tabla de implicantes, muestra que c’d es implicante primo esencial,
ya que es el único que contiene al mintérmino 13.

Implicantes 7 13 14
primos
a’b x
c’d
a’d x
acd’ x
bcd’ x

Figura P5.22. Tabla de implicantes. Problema 5.9

Se tienen 4 diseños alternativos con mínimo costo. Con 10 entradas cada uno.
f(a, b, c, d) = c’d + a’b + acd’
f(a, b, c, d) = c’d + a’b + bcd’
f(a, b, c, d) = c’d + a’d + acd’
f(a, b, c, d) = c’d + a’d + bcd’

b) Para la forma producto de sumas se tiene el siguiente mapa de Karnaugh:

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 5. Mapas de Karnaugh 33

ab
cd 00 01 11 10
0 4 12 8
00 1 d 1 1
1 5 13 9
01 d d d
3 7 15 11
11 d 1 1
2 6 14 10
10 1 d d

f ’(a, b, c, d)

Figura P5.23. Mapa para suma de productos. Problema 5.9

Observando el mapa o aplicando método de Quine o Quine-McCluskey y empleando las condiciones


superfluas se pueden formar: Un implicante primo de 8 mintérminos; 3 implicantes primos de 4 mintérminos
cada uno; y un implicante primo de dos mintérminos cada uno.

La siguiente tabla de implicantes, muestra que c’d’ y acd son implicantes primos esenciales.

Implicantes 0 2 8 11 12 15
primos
b’ x x x x
c’d’ x x
a’c’ x
a’d’ x x
acd x

Figura P5.24. Tabla de implicantes de f’. Problema 5.9

La cobertura del mintérmino 2 se logra seleccionando el implicante b’ que cubre a a’d’.


Entonces la (única) función mínima es: f ’(a, b, c, d) = c’d’ + acd + b’, que en la forma pedida es:
f( a, b, c, d) = (c + d)(a’ + c’ + d’)(b) de 9 entradas.

Problema 5.10.

Se tiene el diseño mínimo como suma de productos para la siguiente función:

f(a, b, c, d) = abd + b’c’ + a’d’

Se conoce: que el mintérmino a’bcd’ es superfluo, que el maxtérmino (a’ + b + c + d’) es superfluo, y que el
implicante a’b’c’ es superfluo.

a) Determinar el mapa de Karnaugh para f, indicando los unos, ceros y condiciones superfluas.
b) Obtener el diseño mínimo como producto de sumas, indicando en un mapa los implicantes seleccionados.

Solución:
a1) Se ubican los mintérminos superfluos, y se los dibuja en el mapa:

Profesor Leopoldo Silva Bijit 19-01-2010


34 Sistemas Digitales
a’bcd’ = m6 ; a’b’c’ = m0 + m1

Que el maxtérmino (a’ +b +c +d’) = M9 sea superfluo, indica que m9’ es superfluo.

a2) Se ubican los implicantes de f:


abd = m(13, 15); b’c’ = m(0, 1, 8, 9); a’d’ = m(0, 4, 2, 6)

Esto permite determinar los unos de la función como m(2, 4, 8, 13, 15); y también los ceros de la función
como M(3, 5, 7, 10, 11, 12, 14)
ab
cd 00 01 11 10
0 4 12 8
00 d 1 0 1
1 5 13 9
01 d 0 1 d
3 7 15 11
11 0 0 1 0
2 6 14 10
10 1 d 0 0

f(a, b, c, d)= abd + b’c’ + a’d’

Figura P5.25. Mapa Problema 5.10

El mapa ilustra el diseño de la función mínima, con condiciones superfluas, expresada como suma de
productos:
f(a, b, c, d) = m(2, 4, 8, 13, 15) + d(0, 1, 6, 9) = abd + b’c’ + a’d’

Método 1(agrupando los ceros)


b1) Se desea diseñar f, según:
f(a, b, c, d) = M(3, 5, 7, 10, 11, 12, 14) Md(0, 1, 6, 9)

El grupo M(1, 3, 5, 7) debe incluirse ya que es el mayor y único grupo que cubre a 5 y 7.
El grupo M(12, 14) es el mayor y único grupo que cubre a 12, y debe estar presente.

Sólo resta cubrir a M(10, 11), lo cual puede hacerse incluyendo a dicho grupo. La incorporación del grupo
mayor M(1, 3, 9, 11) que cubre al 11, requiere otro grupo para cubrir al 10, ya sea M(10, 14) o M(10, 11).

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 5. Mapas de Karnaugh 35
ab
cd 00 01 11 10
0 4 12 8
00 d 1 0 1
1 5 13 9
01 d 0 1 d
3 7 15 11
11 0 0 1 0
2 6 14 10
10 1 d 0 0

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

Figura P5.26. Mapa suma productos. Problema 5.10

Para un diseño libre de perturbaciones debería incluirse a los grupos M(10, 14) y M(3, 11)

Método 2(agrupando los 1 de f ’)


b2) Se desea diseñar f, según:

f ’(a, b, c, d) = m(3, 5, 7, 10, 11, 12, 14) + d(0, 1, 6, 9)


Se tiene el mapa:
ab
cd 00 01 11 10
0 4 12 8
00 d 0 1 0
1 5 13 9
01 d 1 0 d
3 7 15 11
11 1 1 0 1
2 6 14 10
10 0 d 1 1

f ’(a, b, c, d) = a’d + abd’ + ab’c

Figura P5.27. Mapa producto de sumas. Problema 5.10

En la tabla de implicantes se muestran sólo los mintérminos; no se requiere cubrir los superfluos. De la tabla
se advierte que a’d es implicante primo esencial, ya que agrupa al 5 y 7 que sólo él contiene. También abd’ es
implicante primo esencial ya que es el único grupo que contiene al mintérmino 12.

Profesor Leopoldo Silva Bijit 19-01-2010


36 Sistemas Digitales

3 5 7 10 11 12 14
a’d x x x
abd’ x x
ab’c x x
acd’ x x
b’d x x
bcd’ x
Figura P5.28. Tabla implicante. Mapa de la Figura P5.27

Para cubrir m10 y m11, la mejor opción es ab’c, lo cual puede deducirse de la tabla reducida.
10 11
ab’c x x
acd’ x
b’d x

Figura P5.29. Tabla reducida de la Figura P5.28

Se obtiene: f ’(a, b, c, d) = a’d + abd’ + ab’c y complementándola, se logra:

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

Problema 5.11.

Se tiene f(a, b, c, d) formada por los siguientes mintérminos: 4, 5, 6, 8, 9, 10, 13.


Además se conoce que las variables de entrada nunca toman los valores lógicos que hacen verdadera a la
expresión: bcd + a’b’c’d’

a) Dibujar el mapa para la función f.


b) Minimizar como producto de sumas, en dos niveles.
c) Minimizar como suma de productos, en dos niveles.

Solución:
a) Considerando las condiciones superfluas y los mintérminos, en un mapa rotulado según notación de
conjuntos, resulta:
a

d 1 0 1

0 1 1 1
d
0 d d 0
c
0 1 0 1

b
Figura P5.30. Mapa con condiciones superfluas.

b) Se muestran los grupos de mintérminos en el mapa de la Figura 5.30.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 5. Mapas de Karnaugh 37

d 1 1

1 1 1
d
d d
c

1 1
b
Figura P5.31. Implicantes de la Figura P5.30.

Resulta: f = a b’ d’ + a d c’ + a’ b
a
c) El mapa para f’ resulta:
d 1

1
d
1 d d 1
c

1 1
b
Figura P5.32. Mapa del complemento de f.

Encontrando los implicantes, se obtiene:


f ‘ = a b d’ + d c + a’ b’

Aplicando De Morgan.
f = ( a’ + b’ + d)(d’ + c’)(a + b)

Problema 5.12.

La función f(A, B, C, D) está formada por los mintérminos 5, 9, 15.

a) Si se puede escoger un mintérmino cualquiera como superfluo, cuál o cuáles son las funciones mínimas
(todas las que encuentre); indicando, en cada caso, el mintérmino superfluo elegido.
b) Si se pueden escoger dos mintérminos cualesquiera como superfluos, cuál o cuáles son las funciones
mínimas (todas las que encuentre); indicando, en cada caso, los mintérminos superfluos elegidos.
c) Si se pueden escoger tres mintérminos cualesquiera como superfluos, cuál o cuáles son las funciones
mínimas (todas las que encuentre); indicando, en cada caso, los mintérminos superfluos elegidos.

Solución:
a) La Figura P5.33 muestra la elección conveniente de un mintérmino superfluo.

Profesor Leopoldo Silva Bijit 19-01-2010


38 Sistemas Digitales

AB
CD 00 01 11 10
0 4 12 8
00

1 5 13 9
01 1 d 1 Se elige m13. Resulta:
f = AC’D + BC’D + ABD
3 7 15 11
11 1
2 6 14 10
10

f(A, B, C, D)

Figura P5.33. Elección de un mintérmino superfluo.

b1)
AB
CD 00 01 11 10
0 4 12 8
00 Se elige m13 y m11.
f = AD + BC’D
1 5 13 9
01 1 d 1

3 7 15 11
11 1 d
2 6 14 10
10

f(A, B, C, D)

Figura P5.34. Elección de dos mintérminos superfluos.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 5. Mapas de Karnaugh 39
b2)
AB
CD 00 01 11 10
0 4 12 8 Se elige m13 y m7.
00
f = BD + AC’D

1 5 13 9
01 1 d 1

3 7 15 11
11 d 1
2 6 14 10
10

f(A, B, C, D)

Figura P5.35. Elección de dos mintérminos superfluos b2).

b3)
AB
CD 00 01 11 10
0 4 12 8 Se elige m13 y m1.
00 f = ABD + C’D

1 5 13 9
01 d 1 d 1

3 7 15 11
11 1
2 6 14 10
10

f(A, B, C, D)

Figura P5.36. Elección de dos mintérminos superfluos b3).

Profesor Leopoldo Silva Bijit 19-01-2010


40 Sistemas Digitales
c1) AB
CD 00 01 11 10
0 4 12 8 Se elige m13, m11 y m7.
00 f = BD + AD

1 5 13 9
01 1 d 1

3 7 15 11
11 d 1 d
2 6 14 10
10

Figura P5.37. Elección de tres mintérminos superfluos c1).

c2)
AB
CD 00 01 11 10
0 4 12 8 Se elige m13, m11 y m1.
00 f = C’D + AD

1 5 13 9
01 d 1 d 1

3 7 15 11
11 1 d
2 6 14 10
10

Figura P5.38. Elección de tres mintérminos superfluos c2).

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 5. Mapas de Karnaugh 41
c3)
AB
CD 00 01 11 10
0 4 12 8 Se elige m13, m7 y m1.
00
f = C’D + BD

1 5 13 9
01 d 1 d 1

3 7 15 11
11 d 1
2 6 14 10
10

Figura P5.39. Elección de tres mintérminos superfluos c3).

Problema 5.13.

Se tiene un circuito digital de 5 entradas (A, B, C, D, E)


Determinar sólo las expresiones booleanas que contienen el literal A, para los 3-cubos incrustados en el 5-
cubo.

Solución.
En un 5-cubo un 3-cubo puede expresarse con dos literales. Las combinaciones de dos letras de un conjunto
de 5 son: AB, AC, AD, AE, BC, BD, BE, CD, CE, DE. Para cada combinación pueden tenerse 4 expresiones;
por ejemplo para AB se tienen: A'B', A'B, AB', AB. En total se tienen cuarenta 3-cubos inscritos en un 5-cubo.

Entonces los 3-cubos pedidos son: AB, AB', AC, AC', AD, AD', AE, AE'.

Problema 5.14.

Representar en un mapa de Karnaugh de 5 variables, la expresión booleana:

C'D'E + B'C
Solución:
Los míntérminos asociados a B'C se encuentran en las columnas 001 y 101,
Resulta B'C = m(4, 5, 6, 7, 20, 21, 22, 23) son 8.
Los mintérminos asociados a C'D'E son m(1, 9, 17, 25) son 4, con C=0, D=0 y E=1.

Profesor Leopoldo Silva Bijit 19-01-2010


42 Sistemas Digitales

ABC
000 001 011 010 100 101 111 110
DE
0 4 12 8 16 20 28 24
00 1 0 1
1 5 13 9 17 21 29 25
01 1 1 1 1 1 1

3 7 15 11 19 23 31 27
11 1 1
2 6 14 10 18 22 30 26
10 1 1

Figura P5.40. Mapa para Problema 5.14.

Problema 5.15.

Graficar los mapas de Karnaugh de las funciones de cuatro variables:

f1=(AB+C)(ABC+D') +A'B'D' y f2=(A'+B'+D)(B'+D')

Solución:
f1=ABABC+ABD'+CABC+CD'+A'B'D' ; P6
=ABC+ABD'+CD' +A'B'D' ; P4, T8
= m(14,15) +m(12,14)+m(2,6,10,14)+m(0,2) ; T14
= m(0, 2, 6, 10, 12, 14, 15); T8
AB
CD 00 01 11 10
0 4 12 8
00 1 1
1 5 13 9
01

3 7 15 11
11 1
2 6 14 10
10 1 1 1 1

f1(A, B, C, D)
Figura P5.41. Mapa de f1.

f2 = A'B'+A'D'+B'B'+B'D'+B'D+DD'; P6, P4
= A'B'+A'D'+B'+B'(D'+D)+0 ;T8, P6, P7
= A'B' +A'D'+B' ; P3,P7, T8
= m(0, 1, 2, 3) + m(0, 2, 4, 6) + m(0, 1, 2 , 3, 8, 9, 10, 11) ; T14
= m(0, 1, 2, 3, 4, 6, 8, 9, 10, 11) ;T8

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 5. Mapas de Karnaugh 43

AB
CD 00 01 11 10
0 4 12 8
00 1 1 1
1 5 13 9
01 1 1

3 7 15 11
11 1 1
2 6 14 10
10 1 1 1

f2(A, B, C, D)

Figura P5.42. Mapa de f2.

Referencias.

Karnaugh M. “The map method for synthesis of combinatorial logic circuits”, Trans. AIEE Comm.
Electron.,Vol. 72, No. 4, pp. 593–598. 1953.

Profesor Leopoldo Silva Bijit 19-01-2010


44 Sistemas Digitales

Índice general.

CAPÍTULO 5 ..................................................................................................................................................................... 1
MAPAS DE KARNAUGH ................................................................................................................................................ 1
5.1. CONCEPTOS ............................................................................................................................................................... 1
5.2. FORMAS DE MAPAS ................................................................................................................................................... 4
5.3. MANEJO DE MAPAS ................................................................................................................................................... 7
5.4. USO DE MAPAS........................................................................................................................................................... 9
Ejemplo 5.1. Mapa a partir de los mintérminos. ........................................................................................................ 9
Ejemplo 5.2. Mapa a partir de expresión. ................................................................................................................ 10
Ejemplo 5.3. Uso de mapas en la demostración de teoremas. .................................................................................. 11
5.5. MINIMIZACIÓN USANDO MAPAS DE KARNAUGH. ..................................................................................................... 12
5.5.1. Minimización como suma de productos. ......................................................................................................... 12
Ejemplo 5.4. Minimización a partir de los mintérminos .......................................................................................................... 12
Ejemplo 5.5. Formación de grupos de mintérminos en minimización basada en mapas.......................................................... 13
Ejemplo 5.6. ............................................................................................................................................................................. 14
Ejemplo 5.7. ............................................................................................................................................................................. 15
5.5.2. Minimización en forma de producto de sumas. ............................................................................................... 15
Ejemplo 5.8.............................................................................................................................................................................. 15
Ejemplo 5.9. ............................................................................................................................................................................. 16
5.5.3. Condiciones superfluas (don't care) ................................................................................................................ 17
Ejemplo 5.10. ........................................................................................................................................................................... 18
Ejemplo 5.11. ........................................................................................................................................................................... 19
Ejemplo 5.12. ........................................................................................................................................................................... 19
PROBLEMAS RESUELTOS. ................................................................................................................................................ 21
Problema 5.1. Comparador binario. ......................................................................................................................... 21
Problema 5.2. Multiplicador de dos números binarios de dos cifras cada uno. ....................................................... 22
Problema 5.3. Incrementador en uno de cifra BCD. ................................................................................................. 22
Problema 5.4. Semisumador binario. ........................................................................................................................ 23
Problema 5.5. Sumador completo. ............................................................................................................................ 24
Problema 5.6. Detección y corrección de errores en bits. Hamming........................................................................ 25
Detección de un error simple. .................................................................................................................................................. 26
Corrección de un error simple.................................................................................................................................................. 26
Ejemplo código Hamming de 7 bits. ........................................................................................................................................ 29
Problema 5.7. ............................................................................................................................................................ 29
Problema 5.8. ............................................................................................................................................................ 30
Problema 5.9. ............................................................................................................................................................ 31
Problema 5.10. .......................................................................................................................................................... 33
Problema 5.11. .......................................................................................................................................................... 36
Problema 5.12. .......................................................................................................................................................... 37
Problema 5.13. .......................................................................................................................................................... 41
Problema 5.14. .......................................................................................................................................................... 41
Problema 5.15. .......................................................................................................................................................... 42
REFERENCIAS. ................................................................................................................................................................ 43
ÍNDICE GENERAL. ........................................................................................................................................................... 44
ÍNDICE DE FIGURAS. ....................................................................................................................................................... 45

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 5. Mapas de Karnaugh 45

Índice de Figuras.

Figura 5.1 Mintérminos de dos variables en un diagrama de Venn. ...................................................................1


Figura 5.2 Códigos decimales de mintérminos en un diagrama de Venn. ..........................................................1
Figura 5.3 Mintérminos de dos variables en un 2-cubo. .....................................................................................2
Figura 5.4 Mintérminos de dos variables en un mapa de Karnaugh. ..................................................................2
Figura 5.5 Número decimal de los mintérminos y el orden de las variables. ......................................................2
Figura 5.6 Representación de funciones de dos variables en un mapa................................................................3
Figura 5.7 Diagrama de Venn para tres variables y un 3-cubo. ..........................................................................3
Figura 5.8 Del 3-cubo al mapa de Karnaugh de tres variables. ...........................................................................4
Figura 5.9 Mapa de Karnaugh de tres variables y un 3-cubo. .............................................................................4
Figura 5.10 Bordes en un mapa de Karnaugh. ....................................................................................................4
Figura 5.11 Mapas de Karnaugh para tres y cuatro variables. ...........................................................................5
Figura 5.12 Mapa de Karnaugh para tres variables. ...........................................................................................5
Figura 5.13 Mapa de Karnaugh de cinco variables, codificado en Gray............................................................6
Figura 5.14 Mapa de Karnaugh apilable de cinco variables. .............................................................................7
Figura 5.15 Agrupaciones de 8 y 4 mintérminos en un Mapa de Karnaugh de cuatro variables. ......................8
Figura 5.16. 2-cubo y mintérmino en un Mapa de Karnaugh de cuatro variables. ............................................8
Figura 5.17. Mapa de Karnaugh a partir de lista de mintérminos. ...................................................................10
Figura 5.18. Un mapa de Karnaugh por producto. ...........................................................................................10
Figura 5.19. Mapa de Karnaugh de un mintérmino y de la función completa. ................................................11
Figura 5.20. Mapas de Karnaugh en la demostración de teoremas. .................................................................11
Figura 5.21. Mapa de Karnaugh a partir de los mintérminos. ..........................................................................12
Figura 5.22. Agrupaciones en el Mapa de Karnaugh. .......................................................................................13
Figura 5.23. Mapa de Karnaugh con los mintérminos. .....................................................................................13
Figura 5.24. Mínimo número de grupos. ...........................................................................................................14
Figura 5.25. Solución ejemplo 5.6. ...................................................................................................................14
Figura 5.26. Solución ejemplo 5.7. ...................................................................................................................15
Figura 5.27. Solución ejemplo 5.8. ...................................................................................................................16
Figura 5.28. Mapa con los mintérminos de ejemplo 5.9 ...................................................................................16
Figura 5.29. Mapa con los mintérminos de f’....................................................................................................17
Figura 5.30. Mapa con condiciones superfluas. ................................................................................................18
Figura 5.31. Mapa con condiciones superfluas de f’ .........................................................................................18
Figura 5.32. Tabla traductor BCD a Exceso-3. .................................................................................................19
Figura 5.33. Mapa de las condiciones superfluas del ejemplo 5.13. .................................................................20
Figura P5.1 Diagrama funcional comparador. .................................................................................................21
Figura P5.2. Tabla del comparador. ..................................................................................................................21
Figura P5.3. Diagrama funcional multiplicador. ..............................................................................................22
Figura P5.4. Tabla de verdad de multiplicador. ................................................................................................22
Figura P5.5. Diagrama funcional incrementador BCD. ....................................................................................23
Figura P5.6. Tabla de verdad del incrementador BCD......................................................................................23
Figura P5.7. Tabla de verdad del semisumador ................................................................................................24
Figura P5.8. Implementación semisumador. .....................................................................................................24
Figura P5.9. Diagrama funcional sumador completo de un bit. ........................................................................24
Figura P5.10. Tabla de verdad del sumador completo de un bit. ......................................................................24
Figura P5.11. Diagrama funcional sumador completo de cuatro bits. ..............................................................25
Figura P5.12. Red para sumador completo. ......................................................................................................25
Figura P5.13. Sumador completo mediante dos semisumadores. .....................................................................25
Figura P5.14. Generación bits de paridad .........................................................................................................27
Figura P5.15. Cálculo de los wi. ........................................................................................................................28
Figura P5.16. Interpretación tabla de valores de wi...........................................................................................28

Profesor Leopoldo Silva Bijit 19-01-2010


46 Sistemas Digitales
Figura P5.17. Corrección empleando wi ...........................................................................................................28
Figura P5.18. Tabla de verdad Problema 5.7 ....................................................................................................30
Figura P5.19. Red Problema 5.7........................................................................................................................30
Figura P5.20. Tabla de verdad Problema 5.8 ....................................................................................................31
Figura P5.21. Suma de productos Problema 5.9 ...............................................................................................32
Figura P5.22. Tabla de implicantes. Problema 5.9 ............................................................................................32
Figura P5.23. Mapa para suma de productos. Problema 5.9 .............................................................................33
Figura P5.24. Tabla de implicantes de f’. Problema 5.9 ...................................................................................33
Figura P5.25. Mapa Problema 5.10 ...................................................................................................................34
Figura P5.26. Mapa suma productos. Problema 5.10 ........................................................................................35
Figura P5.27. Mapa producto de sumas. Problema 5.10 ...................................................................................35
Figura P5.28. Tabla implicante. Mapa de la Figura P5.27 ................................................................................36
Figura P5.29. Tabla reducida de la Figura P5.28 ..............................................................................................36
Figura P5.30. Mapa con condiciones superfluas. ..............................................................................................36
Figura P5.31. Implicantes de la Figura P5.30. ..................................................................................................37
Figura P5.32. Mapa del complemento de f. .......................................................................................................37
Figura P5.33. Elección de un mintérmino superfluo. ........................................................................................38
Figura P5.34. Elección de dos mintérminos superfluos. ...................................................................................38
Figura P5.35. Elección de dos mintérminos superfluos b2). .............................................................................39
Figura P5.36. Elección de dos mintérminos superfluos b3). .............................................................................39
Figura P5.37. Elección de tres mintérminos superfluos c1). .............................................................................40
Figura P5.38. Elección de tres mintérminos superfluos c2). .............................................................................40
Figura P5.39. Elección de tres mintérminos superfluos c3). .............................................................................41
Figura P5.40. Mapa para Problema 5.14. ..........................................................................................................42
Figura P5.41. Mapa de f1. .................................................................................................................................42
Figura P5.42. Mapa de f2. .................................................................................................................................43

Profesor Leopoldo Silva Bijit 19-01-2010


1

Capítulo 6

Algoritmos de minimización

Durante 40 años el algoritmo de minimización conocido como método de Quine-McCluskey


permaneció prácticamente sin cambios. En 1992 aparecen dos métodos, fundamentalmente
nuevos, que permiten desarrollar algoritmos más eficientes para encontrar soluciones exactas.

El método de minimización de Quine-McCluskey, consiste en encontrar los implicantes primos


y luego seleccionar un conjunto de éstos que cubran la función; esto último se efectúa mediante
la reducción de la tabla de implicantes.
Como alternativa se describe el método de Tison, de consenso reiterado, para determinar los
implicantes primos.

La tabla de implicantes tiene como columnas los mintérminos y como renglones los cubos que
son implicantes primos. Para n variables, se tienen 2 n mintérminos o columnas; y se dispone de
3n
un resultado que establece que se pueden tener del orden de implicantes primos. Con lo cual
n
los algoritmos para reducir la tabla, en forma exacta, tienen un costo exponencial.

Por esta razón se han desarrollado heurísticas de minimización que están basadas en
propiedades de las funciones booleanas y que producen resultados bastante satisfactorios, desde
un punto de vista de ingeniería. Un excelente ejemplo de estos programas es espresso, que se
trata en el Apéndice 3.

6.1. Implicación

Un implicante es un mintérmino o un grupo de éstos que formen un sub-cubo.

Una expresión X implica la función f, si y solamente si f=1 para cualquier combinación de


valores para los cuales X=1.

Se anota la implicación de la siguiente forma: X  f

f X

Figura 6.1 Implicación.

Puede verse que si X  f, con g una función booleana, puede anotarse: f = X + g.

Profesor Leopoldo Silva Bijit 19-01-2010


2 Sistemas Digitales
Es decir, X es un término o parte de f. También suele decirse que f cubre a X.

En un mapa de f, si X corresponde a un grupo de mintérminos, g corresponderá al resto de los


mintérminos de f, no considerados en X, si la intersección de g y X es vacía; si la intersección no
es vacía, pueden existir algunos mintérminos comunes a X y g.

Se desea ahora definir las componentes de f que sean más primitivas.

6.2. Implicantes primos

Un implicante primo es un implicante que no puede ser agrupado con otros implicantes, para
formar un sub-cubo de mayor dimensión.

Se dice que X (producto de literales) es un implicante primo de f si y sólo si:


 Xf
 No existe y tal que X  y  f, donde el número de literales de y es menor que el número de
literales de X. No puede encontrarse un grupo mayor que X. Si existe y; entonces y es un
implicante primo.
Básicamente, un implicante primo es un producto de literales que no puede ser combinado con
otros para obtener un término con menos literales. Se dice primo o primitivo en el sentido de ser
componente básica o elemental de una función.

Algunas propiedades de un implicante primo:


 No contiene literales repetidos.
 No contiene a una variable y a su complemento.
 No contiene variables redundantes. Es decir, si se descarta un literal del implicante, el resto
no será implicante.
 Si x e y son implicantes primos de f, entonces: x no cubre a y; y viceversa.

Encontrar los implicantes primos es determinar los grupos de mintérminos que pueden
escribirse con menos literales.

Pasar de un implicante a un implicante primo está asociado a un proceso de crecimiento; es


decir, a encontrar un grupo de mintérminos que forman el sub-cubo mayor posible.

6.3. Implicante primo esencial

Es aquél que cubre a lo menos un mintérmino de la función que no es cubierto por otros
implicantes primos. Deben estar presentes en la forma mínima.

Los mintérminos superfluos pueden emplearse para formar implicantes primos; pero no deben
considerarse para los implicantes primos esenciales.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 6. Algoritmos de minimización 3
Ejemplo 6.1.

Para una función de 4 variables, cuyo mapa es de la figura 6.2, se tienen los siguientes
implicantes primos:
A'B'D, BC', AC, A'C'D, AB, B'CD

De los 6 implicantes primos, sólo AC es esencial, ya que contiene al mintérmino: AB'CD' que
no es cubierto por ningún otro implicante primo.
A

0 d 1 0

1 1 1 0
D
1 0 1 1
C
0 0 1 1
B
Figura 6.2 Implicantes primos

Puede comprobarse que se logra una mínima cobertura de la función con:


AC + BC' + A'B'D

Para un diseño libre de perturbaciones deben agregarse: AB, A’C’D y B’CD.

Ejemplo 6.2.

Minimizar, determinando implicantes, observando el mapa de la Figura 6.3.


A

0 0 1 0

1 1 1 0
D
0 1 1 1
C
0 1 0 0
B
Figura 6.3 Implicantes primos ejemplo 6.2

Profesor Leopoldo Silva Bijit 19-01-2010


4 Sistemas Digitales
Para la función de 4 variables, cuyo mapa es el de la figura 6.3, se tienen los siguientes
implicantes primos:
BD, ABC', ACD, A'BC, A'C'D

Sólo BD es no esencial, ya que los demás contienen un mintérmino no cubierto por los otros
implicantes primos.
La función mínima debe contener los esenciales, y con éstos se logra cubrir completamente a la
función:
f = ABC' + ACD + A'BC + A'C'D

Para un diseño libre de perturbaciones debe agregarse el cubo BD.

6.4. Método de Quine (1952)

Es un método sistemático para encontrar la expresión mínima de una función, que no depende
de la habilidad para reconocer agrupaciones en un mapa de Karnaugh.

Básicamente, es una búsqueda exhaustiva de todas las adyacencias entre los mintérminos de la
función, mediante la aplicación sistemática del teorema de fusión ( a  ab  ab ) a todos los
términos de la forma canónica.

6.4.1. Obtención de implicantes primos

 Se forma una primera columna con los mintérminos de la función.


 Se forma la siguiente columna según:
 Se revisa el primer elemento de la columna con todos los siguientes; si se encuentra
un término que sólo difiera en una variable, se lo anota en la nueva columna,
omitiendo el literal correspondiente; se marcan los términos en la columna actual.
 Se repite el proceso para todos los elementos de la columna.
 Se vuelve a repetir el paso anterior hasta que no se puedan formar nuevas columnas.

Los términos que originan nuevas entradas, en la próxima columna, sólo necesitan marcarse una
vez. Pero pueden usarse las veces que sea necesario.

Nótese que la segunda columna lista todos los grupos de dos mintérminos. La tercera, lista
grupos de cuatro mintérminos adyacentes, y así sucesivamente. Al finalizar el proceso anterior,
los elementos no marcados en las columnas, corresponden a los implicantes primos.

Ejemplo 6.3.
Obtener los implicantes primos de: f (a, b, c)   m(0, 2,5, 6, 7)

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 6. Algoritmos de minimización 5

Primera columna Segunda columna


m min. marcas Grupos Implicantes
0 a'b'c'  (0,2) a'c'
2 a'bc'   (2,6) bc'
5 ab'c  (5,7) ac
6 abc'   (6,7) ab
7 abc  

Figura 6.4 Obtención de implicantes primos

No se pueden formar nuevas columnas, por lo tanto los implicantes primos son:

a'c', bc', ac, ab

Nótese que en la segunda columna, se han identificado los renglones con los grupos de
mintérminos.

Cuando se escribe, en la segunda columna: a'c', se marcan con  el 0 y el 2 en la primera


columna.
Cuando se escribe, en la segunda columna: bc', se marcan con  los mintérminos 2 y 6.

6.4.2. Tabla de implicantes

La tabla de implicantes se forma empleando los implicantes primos en los renglones y los
mintérminos de la función en las columnas. Luego, en cada renglón, se marca con valor 1 las
columnas de los mintérminos pertenecientes al implicante considerado.

Aquellas columnas que tengan sólo una marca, permiten detectar a los implicantes primos
esenciales. En esta tabla debe escogerse el menor número de implicantes primos que cubran
todos los mintérminos de la función. Evidentemente, deben estar presentes todos los implicantes
primitivos esenciales en la expresión mínima de una función.
Ejemplo 6.4.
La tabla de implicantes, para el ejemplo anterior:

0 2 5 6 7
a'c' 1 1
bc' 1 1
ac 1 1
ab 1 1

Figura 6.5 Tabla de implicantes primos

La columna 0, por tener sólo un renglón marcado, permite identificar a: a'c' como implicante
primo esencial.

Profesor Leopoldo Silva Bijit 19-01-2010


6 Sistemas Digitales
Igualmente la columna 5 indica que el implicante ac también es esencial.

Se acostumbra encerrar con un círculo las marcas en las columnas que definen los implicantes
primos esenciales.

Nótese que sólo resta cubrir el mintérmino 6, lo que puede lograrse eligiendo: bc' o ab.

Finalmente, la forma mínima es: f = a'c' + ac + bc'

o, alternativamente: f = a'c' + ac + ab

6.4.3. Reducción de tablas

En caso de tener tablas complejas, éstas pueden reducirse mediante el siguiente método.

Cada vez que se selecciona un implicante para formar la función, se remueve el renglón
correspondiente.

Cuando se remueve un renglón, también se eliminan las columnas que tienen marcas en dicho
renglón.

Se comienza eliminando los implicantes primos esenciales. Luego la tabla puede seguir
reduciéndose, aplicando las siguientes reglas:

 Un renglón cubierto por otro, puede eliminarse (sólo el renglón).


 Una columna que cubre a otra puede eliminarse (sólo la columna).

Un renglón cubre a otro, si tiene marcas en las columnas marcadas del otro, pudiendo además
tener columnas adicionales marcadas. Podría decirse que el renglón eliminado es menos
importante, debido a su menor cobertura de la función.
Una columna cubre a otra, si contiene marcas en cada renglón que esa otra columna tiene
marcas, pudiendo además tener renglones adicionales marcados.
Ejemplo 6.5.
En la Figura 6.6, el implicante primo ipa cubre al implicante primo ipb. Puede eliminarse
renglón ipb; ya que si luego se eligiese ipa, m1 y m3 quedarían considerados en la función.

Si se elimina ipa, en lugar de ipb, no queda garantizada la cobertura de m2.

m1 m2 m3
ipa 1 1 1
ipb 1 1

Figura 6.6 Renglón cubierto por otro.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 6. Algoritmos de minimización 7
Para la función: f(A, B, C, D) = m(0, 4, 5, 11, 13, 15) según el mapa de la Figura 6.7, se tienen
los siguientes implicantes primos: A’C’D’ (0, 4) , A’BC’ (4, 5), BC’D (5, 13), ABD (13, 15),
ACD (11, 15). Todos ellos deben considerarse para un diseño libre de perturbaciones.
AB
CD 00 01 11 10
0 4 12 8
00 1 1

1 5 13 9
01 1 1

3 7 15 11
11 1 1

2 6 14 10
10

f(A, B, C, D)=m(0,4,5,11,13,15)
Figura 6.7 Mapa con implicantes.

La tabla de implicantes resulta:

0 4 5 11 13 15
A‟C‟D‟ 1 1
A‟BC‟ 1 1
BC‟D 1 1
ABD 1 1
ACD 1 1

Figura 6.8 Tabla de implicantes.

Se tiene que A’C’D’ y ACD son implicantes primos esenciales. Reduciendo la tabla de la Figura
6.8, se obtiene:

5 13
A‟BC‟ 1
BC‟D 1 1
ABD 1

Figura 6.9 Tabla de implicantes reducida.

Profesor Leopoldo Silva Bijit 19-01-2010


8 Sistemas Digitales
El cubo BC’D cubre a los implicantes A’BC’ y ABD. Si se eliminan los renglones cubiertos, sólo
queda el renglón dominante BC’D; luego de esto queda una tabla con un solo implicante. La
función mínima resulta:
f(A, B, C, D) = A’C’D’ + ACD + BC’D
Ejemplo 6.6.
m1 m2 m3
ipa 1 1
ipb 1 1
ipc 1 1
ipd 1

Figura 6.10 Columna cubierta por otra.

La columna m2 cubre a la columna m1; puede eliminarse la columna m2.

El mintérmino de la columna eliminada tiene asegurada su consideración.

Si se elimina columna m2, para cubrir al mintérmino m1 debe seleccionarse uno de los cubos:
ipb o ipc; y como cualquiera de éstos contiene a m2, se considera automáticamente a m2 en la
cobertura.

No es correcta la eliminación de columna m1, ya que si se eliminara la columna m1, en lugar de


m2, quedarían para seleccionar los implicantes ipa, ipb e ipc; pero si luego se eligiera a ipa, no
se incluiría a m1 en la función.

Para la función: f(A, B, C, D) = m(1, 2, 3, 5, 7) +d(0, 6, 9, 13) según el mapa de la Figura


6.11, se tienen los siguientes implicantes primos: A’B’ (1, 2, 3), C’D (1, 5), A’D (1, 3, 5, 7), A’C
(2, 3, 7).
AB
CD 00 01 11 10
0 4 12 8
00 d

1 5 13 9
01 1 1 d d

3 7 15 11
11 1 1

2 6 14 10
10 1 d

Figura 6.11 Mapa con implicantes.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 6. Algoritmos de minimización 9
La tabla de implicantes de la Figura 6.12, muestra que no hay implicantes primos esenciales. En
la tabla de implicantes no se colocan los mintérminos superfluos.

1 2 3 5 7
A‟B‟ 1 1 1
C‟D 1 1
A‟D 1 1 1 1
A‟C 1 1 1

Figura 6.12 Tabla implicantes con columnas cubiertas por otras.

La columna 1 cubre a la columna 5; la columna 3 cubre a las columnas 2 y 7. Pueden eliminarse


las columnas 1 y 3.
Si se elimina la columna 1, dejando la 5; si se eligen cualquiera de los implicantes marcados en
la columna 5, es decir: C’D o A’D, se estará cubriendo al mintérmino 1.

2 5 7
A‟B‟ 1
C‟D 1
A‟D 1 1
A‟C 1 1

Figura 6.13. Tabla reducida, por eliminación de columnas.

En la Figura 6.13, se tiene que el cubo A’D cubre al cubo C’D; y que el implicante A’C cubre al
implicante A’B’. Eliminando los renglones cubiertos, resulta:

2 5 7
A‟D 1 1
A‟C 1 1

Figura 6.14. Tabla reducida, por eliminación de renglones.

En la tabla reducida de la Figura 6.14, los cubos A’D y A’C deben formar parte de la función ya
que tienen una columna con una sola marca; éstos podría denominarse implicantes primos
esenciales secundarios. Resulta:

f(A, B, C, D) = A’D + A’C

También se tiene, observando la Figura 6.13, las coberturas:

f(A, B, C, D) = A’D + A’B’


f(A, B, C, D) = A’C + C’D

Profesor Leopoldo Silva Bijit 19-01-2010


10 Sistemas Digitales
6.5. Tabla reducida cíclica.

Se repite la aplicación de las reglas hasta agotar la tabla. Siempre se remueven aquellos
renglones que contengan columnas con una sola marca; se tratan en la tabla reducida, en forma
similar a los implicantes primos esenciales en la tabla completa.

La función se forma con los implicantes de los renglones removidos por contener columnas con
una sola marca.

En determinados casos, luego de remover los implicantes primos esenciales, los renglones
cubiertos por otros, y las columnas que cubren a otras, no puede seguir reduciéndose la tabla.
Se denominan tablas reducidas cíclicas, aquéllas que no pueden reducirse según el método
recién planteado.

Para resolver tablas cíclicas se tienen varios métodos; uno es una heurística conocida como
“bifurcación y acotamiento”, otro es el algoritmo o método exacto de Petrick.

Cuando se tienen condiciones superfluas, el método es similar, excepto que en la tabla no se


consideran las columnas de mintérminos superfluos, debido a que éstos no requieren ser
cubiertos.

El método anterior es adecuado para un número reducido de variables.

6.5.1. Bifurcación.

En la heurística de bifurcación se elige un implicante primo Pi.


Se resuelve la tabla cíclica considerando que Pi forma parte de la cobertura final y también
considerando que no forma parte; se escoge entre las dos, la solución con mínimo costo. Se
almacena el costo y se varía la elección del implicante primo; se vuelve a realizar el proceso
anterior y se compara costos almacenados hasta encontrar el menor.
Puede escogerse el implicante que tenga menos literales, es decir el que cubra la mayor cantidad
de mintérminos; también es buen candidato el cubo que contenga un mintérmino que es cubierto
por el menor número de implicantes, es decir un implicante que sea “casi un implicante primo
esencial”. Existen en la literatura otras heurísticas para escoger al implicante primo que permite
resolver una tabla cíclica.
Ejemplo 6.7.
Costo m1 m2 m3
Ip1 2 1 1
Ip2 4 1 1
Ip3 2 1 1

Figura 6.15. Método de bifurcación (branching).

La columna costo puede ser el número de literales del implicante primo. Se escoge,
tentativamente, uno de los implicantes, removiéndolo junto a los mintérminos que cubre; se

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 6. Algoritmos de minimización 11
resuelve el subproblema y se calcula el costo. Finalmente se escoge la bifurcación que conduzca
al costo menor.

Para el caso de la tabla cíclica de la Figura 6.15, se escoge en primer lugar Ip1, con costo 2,
queda, luego de la reducción:
Costo m3
Ip2 4 1
Ip3 2 1

Figura 6.16. Bifurcación con Ip1.

Se escoge Ip3, por ser de menor costo, resulta un costo total de (2 + 2) = 4.

Luego, en segundo lugar, se escoge Ip2, resultando:

Costo m1
Ip1 2 1
Ip3 2 1

Figura 6.17. Bifurcación con Ip2.

Puede elegirse, luego Ip1 o Ip3, resultando un costo total de ( 4 + 2) = 6.


Podría haberse descartado la elección de Ip2, ya que tendría mayor costo que la anterior.

Finalmente, en este ejemplo, se escoge Ip3, resultando:

Costo m2
Ip1 2 1
Ip2 4 1

Figura 6.18. Bifurcación con Ip3.

Se escoge Ip1, con un costo total de: (2 + 2) = 4.

Entonces tenemos dos soluciones con costo total 4, para la solución de la tabla cíclica. A este
costo habría que sumarle el debido a la selección de implicantes primos antes de la tabla cíclica.
Si el subproblema resulta cíclico, debe repetirse el procedimiento en forma recursiva.

6.5.2. Petrick (1956).

Se plantea una expresión booleana P, como producto de sumas, que garantice que la cobertura
considera todos los mintérminos de la tabla, sea ésta cíclica o no, y que a la vez entregue todas
las soluciones de cobertura posibles.

Profesor Leopoldo Silva Bijit 19-01-2010


12 Sistemas Digitales
En la Figura 6.19 se han identificado los implicantes primos y los mintérminos de una tabla
cíclica.
m1 m2 m3 m4
Ip1 1 1
Ip2 1 1
Ip3 1 1
Ip4 1 1

Figura 6.19. Tabla cíclica.

Si definimos Pi como verdadera si el implicante primo Ipi está presente en la cobertura; y falsa
si no está presente, podemos plantear, observando la Figura 6.19, que para que el mintérmino
m1 esté presente en la cobertura, debe cumplirse que debe estar presente el implicante Ip1 o el
implicante Ip4; es decir: (P1+P4).

Que estén presentes todos los mintérminos, puede escribirse:

P = (P1+P4)(P2+P3)(P1+P3)(P2+P4)

La proposición anterior debe satisfacerse, lo cual se logra con P=1.


Puede expresarse P, como una suma de productos. Cada producto es una posible solución.

En el caso del ejemplo, efectuando los productos y empleando el teorema de idempotencia:


P= (P1P2+P1P3+P2P4+P3P4)(P1P2+P1P4+P2P3+P3P4)
P=P1P2+P1P2P4+P1P2P3+P1P2P3P4+P1P3P4+P2P3P4+P3P4
P=P1P2(1+P4+P3+P3P4) +P3P4(1+P1+P2)
P=P1P2 + P3P4.

Conviene emplear: (X + Y)(X + Z) = X + YZ, en la reducción a suma de productos.

Se tienen dos soluciones, que resuelven la tabla cíclica: los implicantes Ip1 e Ip2, o bien los
implicantes Ip3 e Ip4. Puede verificarse que ambas son coberturas, con la tabla de la Figura
6.19.
Se elige la de menor costo.
Ejemplo 6.8.
Si una columna cubre a otra, puede eliminarse la columna que cubre a las otras. Por ejemplo si
un mintérmino tiene garantizada su inclusión, si (P6 + P7 + P8) y si otro mintérmino tiene
asegurada su cobertura si: (P6 + P7); entonces puede comprobarse que:

(P6 + P7 + P8) (P6 + P7) = (P6 + P7) usando (a+b) a = a.

Esto implica conservar el mintérmino con menos marcas en las columnas.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 6. Algoritmos de minimización 13
El método de Petrick puede aplicarse a tablas de implicantes primos, incluidos los esenciales.
En caso de estar presentes, estos últimos, la expresión que debe satisfacerse, para incluir todos
los mintérminos, tendrá la forma:

P= (Pp1)(...)(Ppm)(Pa+Pb)(…)

Donde (Pp1)(…)( Ppm) son los m implicantes primos esenciales. El resto de las sumas deben
garantizar la inclusión de los mintérminos no esenciales en la cobertura de la función. De esta
forma el tratamiento algebraico para reducir los productos de sumas a suma de productos se
complica un tanto, pero se obtienen todas las formas de implementación posibles. En todas éstas
deben estar presentes los m implicantes primos esenciales.

Ejemplo 6.9.
Si se toma la tabla de la Figura 6.13, y se enumeran los implicantes según:

2 5 7
IP1 A‟B‟ 1
IP2 C‟D 1
IP3 A‟D 1 1
IP4 A‟C 1 1

Figura 6.20. Implicantes primos de Ejemplo 6.6.

Que estén presentes todos los mintérminos, puede escribirse:

P = (P1+P4)(P2+P3)(P3+P4)

Efectuando los productos, se obtiene:


P = P1P3+P2P4+P3P4

Generando las tres soluciones con dos productos:


f1(A, B, C, D) = A’B’ + A’D
f2(A, B, C, D) = C’D + A’C
f3(A, B, C, D) = A’D + A’C’

Lo cual muestra que el método de Petrick obtiene todas las soluciones posibles.
Debe notarse que si se eliminan los renglones que son cubiertos por otros, no se obtienen todas
las soluciones. En el caso del ejemplo de la Figura 6.20, deberían eliminarse el renglón IP1, que
es cubierto por IP4; y el implicante primo IP2 que es cubierto por el renglón IP3.
Ejemplo 6.10.
Reducir la tabla de implicantes de la función f(a,b,c,d) que se muestra en la Figura 6.21.
Notar que el costo de todos los implicantes primos es similar, ya que todos contienen dos
mintérminos.

Profesor Leopoldo Silva Bijit 19-01-2010


14 Sistemas Digitales

1 3 4 6 7 9 13 15
ipa 1 1
ipb 1 1
ipc 1 1
ipd 1 1
ipe 1 1
ipf 1 1
ipg 1 1
iph 1 1

Figura 6.21. Tabla de implicantes Ejemplo 6.10.

Observar que el implicante primo b es esencial. Removiendo el renglón asociado a b, deben


también removerse columnas asociadas a los mintérminos 4 y 6.

Queda la siguiente tabla reducida:

1 3 7 9 13 15
ipa 1 1
ipc 1 1
ipd 1
ipe 1 1
ipf 1 1
ipg 1 1
iph 1 1

Figura 6.22 Remoción implicante primo esencial

El renglón ipc cubre a ipd; por lo tanto, puede eliminarse el renglón ipd.

1 3 7 9 13 15
ipa 1 1
ipc 1 1
ipe 1 1
ipf 1 1
ipg 1 1
iph 1 1

Figura 6.23. Remoción renglón ipd

La tabla resultante es cíclica.


Una heurística simple es seleccionar a uno de los implicantes de la tabla reducida cíclica,
posiblemente el que tenga mayor número de marcas en las columnas. Este procedimiento no
obtiene todas las soluciones posibles.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 6. Algoritmos de minimización 15
Se escoge arbitrariamente al primitivo ipa para formar la función, esto elimina columnas 1 y 3,
quedando:
7 9 13 15
ipc 1
ipe 1 1
ipf 1 1
ipg 1 1
iph 1

Figura 6.24. Remoción implicante primo ipa, en tabla cíclica.

Ahora, ipe cubre a ipc; e ipg cubre a iph, queda eliminando a ipc e iph:

7 9 13 15
ipe 1 1
ipf 1 1
ipg 1 1

Figura 6.25 Remoción renglones ipc e iph.

ipe e ipg deben formar parte de la función; pues contienen a las columnas 7 y 9, que en la tabla
reducida sólo tienen una marca. Luego de esto, la tabla queda vacía.
Finalmente:
f = ipb + ipa + ipe + ipg

Entonces, se tiene, en términos de las variables:

f=a’bd’+a’b’d+bcd+ac’d

Solución con 12 literales y 16 entradas.

Existen otras formas posibles. Éstas se obtienen eliminando otro implicante cuando la tabla
resultó cíclica. Por ejemplo, eliminando ipc, en la Figura 6.18, resulta:

1 9 13 15
ipa 1
ipe 1
ipf 1 1
ipg 1 1
iph 1 1

Figura 6.26 Remoción implicante primo ipc, en tabla cíclica.

ipf cubre a ipe. iph cubre a ipa.

Eliminando ipa e ipe, se obtiene:

Profesor Leopoldo Silva Bijit 19-01-2010


16 Sistemas Digitales

1 9 13 15
ipf 1 1
ipg 1 1
iph 1 1

Figura 6.27 Remoción implicantes primos ipa e ipe.

En la cual deben escogerse: ipf e iph.

Entonces resulta otra función mínima:

f = ipb +ipc + ipf + iph

En términos de las variables:


f=a’bd’+b’c’d+a’cd+abd

Solución con 12 literales y 16 entradas.

Aplicando el método de Petrick a la tabla de la Figura 6.21, se debe satisfacer p, para cubrir
todos los mintérminos:

p= (pa+ph)*(pa+pc)*(pb)*(pb+pd)*(pc+pd+pe)*(pg+ph)*(pf+pg)*(pe+pf);

Expresando como suma de productos, se obtienen siete soluciones, debe notarse que pb, está
presente en todos los productos, ya que es esencial. A continuación debe evaluarse el costo de
cada una de las soluciones para seleccionar cuales son mínimas.

p = pb*pc*pe*pg*ph + pa*pb*pe*pf*ph + pa*pb*pd*pf*ph + pa*pb*pd*pf*pg +


pa*pb*pc*pf*pg + pb*pc*pf*ph + pa*pb*pe*pg;

Los dos últimos productos, formados por cuatro implicantes primos son las dos soluciones
obtenidas antes, con 16 entradas. Los primeros cuatro productos del método de Petrick,
conducen a soluciones con 15 literales y 20 entradas, por lo cual no son considerados soluciones
mínimas.

Adicionalmente debe resolverse para la forma producto de sumas, considerando la función:


f '(a, b, c, d )   m(0, 2,5,8,10,11,12,14)
En la cual se encuentran cuatro implicantes primos, todos esenciales. Lo cual conduce a una
solución:
f’= b’d’+ad’+ab’c+a’bc’d

Obteniéndose la expresión con 11 literales y 15 entradas, la cual es la solución mínima:

f= (b+d)(a’+d)(a’+b+c’)(a+b’+c+d’)

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 6. Algoritmos de minimización 17
6.6. Método de Quine-McCluskey (1956)

Es una variante para encontrar los implicantes primos, representando en forma digital el método
de Quine, y es adecuado para ser programado en un computador.
Su complejidad, de tipo exponencial, lo convierte en un problema intratable para elevados
valores de variables.

Se forma la columna de mintérminos, codificada en binario o decimal, en grupos, de acuerdo al


número de unos. De esta forma sólo será necesario comparar los mintérminos de grupos
adyacentes, disminuyendo significativamente las comparaciones que deben realizarse para
formar las columnas con cubos mayores. Por ejemplo: el grupo que contiene un uno no puede
ser adyacente a los mintérminos que contengan tres unos; no pueden estar a distancia uno.

Se comparan los elementos de cada grupo, buscando adyacencias, y se forman las siguientes
columnas en forma similar al método de Quine. Notando que en la representación decimal,
diferencias de 1, 2, 4, 8 y, en general, de una potencia de 2, indican una diferencia en un bit.
También se mantiene la separación en grupos en las nuevas columnas.

Es posible encontrar una función que entregue el número de unos en representación binaria de
un número decimal. La cual facilita la formación de los grupos.
La segunda columna representa todas las agrupaciones posibles de dos mintérminos. La tercera
columna representa grupos de cuatro mintérminos, y así sucesivamente.

El algoritmo permite trabajar con dígitos decimales o binarios. Se anotan en los ejemplos
columnas binarias y decimales.
En la segunda y siguientes columnas, las variables eliminadas se denotarán con un guión
(también es posible anotar la posición del guión con un número decimal potencia de dos).

Pueden combinarse dos términos si ellos difieren solamente en un literal; por esta razón, no
podrán combinarse dos términos en un mismo grupo. Los miembros de un grupo de un solo "1",
difieren en dos variables por lo menos; lo mismo puede establecerse para los otros grupos. Esta
observación organiza la búsqueda de adyacencias, ya que sólo es preciso comparar entre grupos
adyacentes.

Ejemplo 6.11.

Aplicar método de Quine-McCluskey para minimizar la siguiente función:

g(a, b, c, d, e, f) =  m(0,2,6,7,8,10,12,14,15,41)

Considerando la equivalencia binaria de los mintérminos decimales, se tienen:

m0 = 000000 m12 = 001100


m2 = 000010 m7 = 000111
m8 = 001000 m14 = 001110
m6 = 000110 m41 = 101001
m10 = 001010 m15 = 001111

Profesor Leopoldo Silva Bijit 19-01-2010


18 Sistemas Digitales

Formando grupos, de acuerdo al número de unos, se obtiene la siguiente tabla:

Decimal Binario
mintérmino a b c d e f Número de unos
0 0 0 0 0 0 0 0
2 0 0 0 0 1 0 1
8 0 0 1 0 0 0
6 0 0 0 1 1 0 2
10 0 0 1 0 1 0
12 0 0 1 1 0 0
7 0 0 0 1 1 1 3
14 0 0 1 1 1 0
41 1 0 1 0 0 1
15 0 0 1 1 1 1 4

Figura 6.28 Agrupación según número de unos.

Los mintérminos del grupo con n unos, se comparan con todos los del grupo con (n+1) unos.

En la representación decimal se buscan diferencias de potencias de dos; en binario, se busca la


diferencia en un bit. Puede formarse la siguiente tabla, que contiene los implicantes formados
por dos mintérminos:

Decimal Binario
Grupo Posición a b c d e f Número de unos
0,2 2 0 0 0 0 - 0 0
0.8 8 0 0 - 0 0 0
2,6 4 0 0 0 - 1 0 1
2,10 8 0 0 - 0 1 0
8,10 2 0 0 1 0 - 0
8,12 4 0 0 1 - 0 0
6,7 1 0 0 0 1 1 - 2
6,14 8 0 0 - 1 1 0
10,14 4 0 0 1 - 1 0
12,14 2 0 0 1 1 - 0
7,15 8 0 0 - 1 1 1 3
14,15 1 0 0 1 1 1 -

Figura 6.29 Grupos de dos mintérminos adyacentes.

En la notación decimal, se anota la lista de mintérminos y la posición de la variable eliminada se


registra con una potencia de dos entre paréntesis. Nótese que se mantiene el concepto de grupos,
mediante líneas horizontales. A medida que se forma la segunda tabla, se van marcando los
mintérminos utilizados en la primera tabla.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 6. Algoritmos de minimización 19
En el ejemplo no queda marcado el 41, ya que no puede agruparse con ningún otro mintérmino;
en este caso el mintérmino 41 es implicante primo esencial.
Para formar la tercera tabla, que contendrá grupos de cuatro mintérminos; se buscan diferencias
de potencias de dos entre grupos adyacentes, pero además deben tener igual diferencia (o
posición de variable eliminada). Por ejemplo la componente del grupo „0,2‟ es necesario
compararla solamente con „8,10‟ del segundo grupo, debido a la diferencia común (2).

No importa el orden de las listas de mintérminos, sólo se anotan una vez. Por ejemplo, entre los
primeros grupos se tiene:

0, 2 (2)
8, 10 (2)
Diferencia: 8, 8 generando: 0, 2, 8, 10 (2,8)

0, 8 (8)
2, 10 (8)
Diferencia: 2, 2 generando: 0, 8, 2, 10 (8,2)

Estas dos agrupaciones se consideran iguales. Desarrollando en forma similar, se genera la


siguiente tabla:

Decimal Binario
Grupo Posición a b c d e f Número de unos
0, 2, 8, 10 2,8 0 0 - 0 - 0 0
2, 6, 10, 14 4,8 0 0 - - 1 0 1
8, 10,12,14 2,4 0 0 1 - - 0
6, 7, 14, 15 1,8 0 0 - 1 1 - 2

Figura 6.30. Grupos de cuatro mintérminos agrupables.

De este modo quedan marcados todos los grupos de la segunda lista.


Nótese que, en la tabla anterior, no hay diferencias comunes entre grupos, por lo tanto, no puede
formarse una siguiente tabla. Es decir, no hay implicantes formados por 8 mintérminos que
estén formando un 3-cubo.
La tabla de implicantes resulta:

Implicantes 0 2 8 6 10 12 7 14 41 15
primos
41 1
0, 2, 8, 10 1 1 1 1
2, 6, 10, 14 1 1 1 1
8, 10, 12, 14 1 1 1 1
6, 7, 14, 15 1 1 1 1

Figura 6.31. Tabla de implicantes ejemplo 6.8.

Profesor Leopoldo Silva Bijit 19-01-2010


20 Sistemas Digitales
Removiendo los implicantes primos esenciales, la función mínima queda:

g = ab'cd'e'f + a'b'd'f' + a'b'cf' + a'b'de

Es conveniente realizar el ejemplo, desarrollando agrupaciones en un mapa de Karnaugh, a


medida que se forman las tablas.

Nótese que todo el proceso podría haberse realizado sólo considerando la información binaria, o
solamente la información decimal.

6.7. Método de Tison (1965) para encontrar implicantes primos. Consenso


reiterado.

6.7.1. Fundamentos.

Se tiene una función f, definida por una suma de productos:

f  p1  p2  ... pk
Si se tiene:
pi  a  p j con a  1 , siendo a una de las variables de f .
Se puede descartar pi de f.
Esto debido a que:
pi  p j  a  p j  p j  (a  1) p j  p j
Lo cual puede anotarse:
pi  p j

El método consiste en introducir términos implicados, de tal manera de eliminar los términos
que los implican. Es decir, se introduce p j , en la suma de productos, y se elimina pi .

Si por ejemplo, se tiene:


f  xT  x ' yT

Debido a que yT es el término de consenso entre x ' yT y xT , puede escribirse:

f  xT  x ' yT  yT
Como se tiene que:
x ' yT  yT

Entonces, se puede cambiar el producto x ' yT por el implicado yT , resultando:

f  xT  yT

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 6. Algoritmos de minimización 21
Logrando, de este modo, una suma de productos con menos literales.

La formación de implicantes basada en el teorema de fusión, sobre la que está basado el método
de Quine, también puede verse como la eliminación de productos que implican a otros
productos:
f  xT  x ' T

El consenso de xT y x ' T es T . Y se tiene que: xT  T y que x 'T  T , con lo cual puede


escribirse: f  T .

Los productos S y R tienen consenso S0 R0 , si existe una variable x tal que S  xS0 y R  x ' R0 ;
y no existe una variable y , en el producto S 0 , que aparezca como y ' en R0 . Si existe la variable
y , el término S0 R0 es cero, y no hay consenso. Se dice que la variable x es biforme en el
conjunto: S , R . Los productos S y R están formados por conjuntos disjuntos de mintérminos.
El consenso es el implicante primo de los mintérminos de S y R , y es la máxima cobertura entre
las fronteras de la exclusión mutua entre S y R .

AB S AB
CD 00 01 11 10 CD 00 01 11 10
0 4 12 8 0 4 12 8
00 1 00 1 1
1 5 13 9 1 5 13 9
01 1 01 1 1
3 7 15 11 3 7 15 11
11 1 1 1 1 11 1 1 1 1
2 6 14 10 2 6 14 10
10 10

S0R0=A‟BD R S0R0=A‟D

Figura 6.32. Término de consenso.

6.7.2. Algoritmo de Tison.

Sea una función f, definida por una suma de productos:

f  p1  p2  ... pk
Sea el conjunto:
L   p1 , p2 ,..., pk 

Profesor Leopoldo Silva Bijit 19-01-2010


22 Sistemas Digitales

El algoritmo de Tison, encuentra todos los implicantes primos de f.

Para cada variable biforme x de f:


{
Para (cada par pi , p j de L: )
{ Si (existe consenso q, para x) L  L  Q ; }
Para (cada pi de L: )
{ Si (existe p j de L, tal que: pi  p j ) L  L   pi  ; }
}
Ejemplo 6.12.
Sea una función f, definida por sus mintérminos.
AB
CD 00 01 11 10
0 4 12 8
00 1
1 5 13 9
01 1 1
15 11
11 13 17 1
2 6 14 10
10 1 1

Figura 6.33. Mintérminos de f.

Si se inicia L con los mintérminos de la función:

L  0000, 0001, 0011, 0101, 0110, 0111,1110,1111

La variable C es biforme, se tiene consenso A’B’D entre: (0001,0011) ; y A’BD entre


(0101,0111).

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 6. Algoritmos de minimización 23

AB
CD 00 01 11 10
0 4 12 8
00 1
1 5 13 9
01 1 1
15 11
11 13 17 1
2 6 14 10
10 1 1

Figura 6.34. Productos de consenso para variable C.

Agregando los términos de consenso a L, queda:


L  0000, 0001, 0011, 0101, 0110, 0111,1110,1111, 00 _1, 01_1
Eliminando los que implican el consenso:
L  0000, 0110,1110,1111, 00 _1, 01_1

D es biforme, se tiene consenso A’B’C’ entre (0000, 00_1), A’BC entre (0110, 01_1) y ABC
entre (1110, 1111).
AB
CD 00 01 11 10
0 4 12 8
00 1
1 5 13 9
01 1 1
3 7 15 11
11 1 1 1
2 6 14 10
10 1 1

Figura 6.35. Productos de consenso para variable D.

Agregándolos a L:
L  0000, 0110,1110,1111, 00 _1, 01_1, 000 _, 011_,111_
Eliminando los que implican consensos:
L  00 _1, 01_1, 000 _, 011_,111_ 

Profesor Leopoldo Silva Bijit 19-01-2010


24 Sistemas Digitales

A es biforme, se tiene consenso BC entre (011_, 111_).


AB
CD 00 01 11 10
0 4 12 8
00 1
1 5 13 9
01 1 1
3 7 15 11
11 1 1 1
2 6 14 10
10 1 1

Figura 6.36. Productos de consenso para variable A.

Agregando (_11_) a L:
L  00 _1, 01_1, 000 _, 011_,111_, _11_
Eliminando los que implican consenso:
L  00 _1, 01_1, 000 _, _11_ 
Finalmente B, es biforme, se tiene consenso A’D entre (00_1,01_1),
AB
CD 00 01 11 10
0 4 12 8
00 1
1 5 13 9
01 1 1
15 11
11 13 17 1
2 6 14 10
10 1 1

Figura 6.37. Productos de consenso para variable B.

Agregando (0__1) a L:
L  00 _1, 01_1, 000 _, _11_, 0 __1
Eliminando los que implican consenso, se obtienen los implicantes primos:
L  000 _, _11_, 0 __1

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 6. Algoritmos de minimización 25

AB
CD 00 01 11 10
0 4 12 8
00 1
1 5 13 9
01 1 1
3 7 15 11
11 1 1 1
2 6 14 10
10 1 1

Figura 6.38. Implicantes primos para f.

Finalmente, debido a que todos son implicantes primos esenciales:

f  A ' B ' C ' BC  A ' D

6.7.3. Operaciones para desarrollar el algoritmo,

La elaboración de algoritmos está basada en desarrollar funciones que determinen:


a) Obtener términos de consenso.
Para encontrar la idea general, puede observarse el siguiente ejemplo:
S    10  1  0   0
R    11    0   
Sólo la cuarta variable es biforme, y no existe otra que presente conflicto binario.

Entonces:
S0 R0    1   1  0   0

Debido a que el producto de una variable o su complemento en S, cuando no está presente esa
variable en R, deja la variable en el término de consenso.

Lo anterior puede comprobarse en el siguiente ejemplo. El producto: (ab ' e ')(ab ' cde)  ab ' cd
Puede representarse, empleando notación de cubos, por:

S  10--0
R =10111
S0 R0  1011-

Profesor Leopoldo Silva Bijit 19-01-2010


26 Sistemas Digitales
Considerando un cubo como una secuencia de caracteres, pueden compararse uno a uno los
caracteres de dos cubos.

Para obtener el término de consenso:


Si los caracteres son iguales, queda el carácter; si son diferentes en binario queda  ; si uno de
los caracteres es  , queda el otro carácter.
b) Un producto que implica otro: pi  p j

El código, con notación de subcubo, para pi , sintoniza con todos los caracteres binarios de p j ;
y pi tiene unos o ceros en posiciones donde p j tiene  .
Ejemplo: 1011  1  1  1  1

Ejemplo 6.13.

Aplicando las operaciones binarias anteriores, pueden determinarse los implicantes primos de f,
debe observarse que L puede estar formado por productos, no necesariamente mintérminos.

Para: f ( x1 , x2 , x3 , x4 , x5 , x6 ) , se tiene:
L  0  11  1, 0  0  1,1  11  0,1  1  1

x1 es biforme en L, en  0  11  1,1  1  1 con consenso:    11  1


L  0  11  1, 0  0  1,1  11  0,1  1  1,   11  1

Se tiene la única implicación: 0  11  1    11  1 .


Entonces L queda:
L  0  0  1,1  11  0,1  1  1,   11  1
x2 no es biforme en L.
x3 es biforme en L, en  0  0  1,1  11  1 con consenso:  0  1  1
L  0  0  1,1  11  0,1  1  1,   11  1, 0  1  1
No se encuentran implicaciones. L conserva sus valores.

x4 y x5 no son biformes en L.
x6 es biforme en L, en 1  11  0,1  1  1 con consenso: 1  11    y también en:
1  11  0,   11  1 con consenso: 1  11   
L  0  0  1,1  11  0,1  1  1,   11  1, 0  1  1,1  11  
Se tiene la única implicación: 1  11  0  1  11   .

Se tienen entonces los implicantes primos:

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 6. Algoritmos de minimización 27

L  0  0  1,1  1  1,   11  1, 0  1  1,1  11  

Ejemplo 6.14.

Minimizar: be’f+acde’fgh+b’gh

Se tiene una función de ocho variables, para la cual es difícil emplear mapas de Karnaugh.
Con b biforme, el consenso entre el primer y último término es: e’fgh.
Pero acde’fgh implica e’fgh. A su vez e’fgh es término de consenso, e implica a be’f y b’gh.
Entonces resulta: be’f + b’gh

Ejemplo 6.15.

Minimizar: ac’de+d’+e’+c.

c es biforme, el consenso es ade, y ac’de implica a ade. Queda ade+d’+e’+c.


d es biforme, el consenso entre ade y d’ es ae. Pero ade implica a ae. Queda ae+d’+e’+c.
e es biforme, el consenso entre ae y e’ es a; pero ae implica a e, queda finalmente: a+d’+e’+c.

Profesor Leopoldo Silva Bijit 19-01-2010


28 Sistemas Digitales

Problemas resueltos.

Problema 6.1.

Se tiene la función g(A, B, C, D, E, F) =  m( 8, 10, 24, 26, 42, 58, 59 )


a) Determinar los implicantes primos aplicando el método de Quine McCluskey.
b) Indicar cuáles son esenciales, justificando su respuesta.
c) Minimizar la función g.

Solución.
Se ordena según número de unos de los mintérminos. En la primera columna quedan todos los
mintérminos marcados, en el proceso de formar la siguiente columna de 1-cubos.
un uno
8 001000 
10 001010  dos unos
24 011000 
26 011010  tres unos
42 101010 
58 111010  cuatro unos
59 111011 
cinco unos

Figura P6.1. Ordenamiento según número de unos.

En la segunda columna, de 1-cubos, queda sin marcar el grupo 58,59.

8,10 0010_0 
8,24 0_1000 
10,26 0_1010 
10,42 _01010 
24,26 0110_0 
26,58 _11010 
42,58 1_1010 
58,59 11101_ ip1 queda sin marcar

Figura P6.2. Implicantes formados por dos mintérminos.

La tercera columna, de los 2-cubos, es la última que puede formarse. Y por lo tanto los
renglones quedan sin marcar.

8,10,24,26 0 _10_0 ip2


10,26,42,58 _ _1010 ip3

Figura P6.3. 2 cubos.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 6. Algoritmos de minimización 29
Finalmente los implicantes son: ip1 = ABCD'E ; ip2 = A'CD'F' ; ip3 = CD'EF'

Determinación de los implicantes primos.


ip1 es esencial porque es el único que contiene al 8 y 24.
ip2 es esencial porque es el único que contiene al 42.
ip3 es esencial porque es el único que contiene al 59.

Resultando la siguiente función mínima: g = ABCD'E + A'CD'F' + CD'EF'

Problema 6.2.

En el proceso de reducción de tablas se tiene la siguiente tabla reducida.

2 3 4 5 8 10
ip1 x x x
ip2 x x x x
ip3 x x
ip4 x x x x
ip5 x x

Figura P6.4. Tabla Problema 6.2.

a) Determinar cuáles renglones pueden eliminarse por estar cubiertos por otro.
b) Determinar cuáles columnas pueden eliminarse.
c) Explicar la razón por la que ip2 e ip4 figuran con los mismos mintérminos.

Solución.
a) ip1 cubre a ip3 y también a ip5. Podrían eliminarse renglones asociados a ip3 e ip5.
ip2 cubre a ip4 y viceversa; puede eliminarse uno de ellos.
b) Columna 3 puede eliminarse, ya que está cubierta por la columna 2. (el mintérmino 3 tiene
asegurada su consideración)
Columna 4 puede eliminarse, ya que está cubierta por las columnas 5, 8 y 10. (el mintérmino 4
tiene asegurada su consideración)
Columnas 5, 8 y 10 se cubren entre sí. Pueden eliminarse dos cualesquiera.
c) ip2 e ip4 tienen iguales mintérminos, se diferencian en implicantes superfluos; los cuáles no
se indican en la tabla.

Ejercicios propuestos.

Ejercicio 6.1.

Verificar, aplicando método de Quine-McCluskey, que la minimización de:


f(a, b, c, d) = m(0, 2, 5, 6, 7, 8, 10, 12, 13, 14, 15) resulta:
f(a, b, c, d) = b’d’ + bd + cd’ + ad’

Profesor Leopoldo Silva Bijit 19-01-2010


30 Sistemas Digitales
Ejercicio 6.2.

Verificar, aplicando método de Quine-McCluskey, que la minimización de:


f(a, b, c, d) = m(0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13) tiene las siguientes soluciones:
f1(a, b, c, d) =a’b + ac’ + b’c + a’d’ P3*P5*P7*P8
f2(a, b, c, d) =ab’ + bc’ + a’c + a’d’ P2*P4*P6*P8
f3(a, b, c, d) =ab’ + bc’ + a’c + b’d’ P2*P4*P6*P9
f4(a, b, c, d) =c’d’ + a’b + ac’ + b’c P1*P3*P5*P7
f5(a, b, c, d) =c’d’ + ab’ + bc’ + a’c P1*P2*P4*P6
f6(a, b, c, d) =a’b + ac’ + b’c + b’d’ P3*P5*P7*P9

Todas de 12 entradas y 8 literales.

Pero el diseño mínimo se obtiene con la forma producto de sumas:


f(a, b, c , d)= (a’ + b’+ c’)(a + b + c + d’) con 8 entradas y 7 literales.

Verificar que se tienen 9 implicantes primos, todos de igual costo en literales:

IP1 IP2 IP3 IP4 IP5 IP6 IP7 IP8 IP9


c‟d‟ ab‟ a‟b bc‟ ac‟ a‟c b‟c a‟d‟ b‟d‟

Y para que estén presentes todos los mintérminos, debe cumplirse, aplicando el método de
Petrick:

P = (P1+P8+P9)*(P6+P7+P8+P9)*(P6+P7)*(P1+P3+P4+P9)*(P3+P4)*(P3+P6+P9)*
(P3+P6)* (P1+P2+P5+P8)*(P2+P5)*(P2+P7+P8)*(P2+P7)*(P1+P4+P5)*(P4+P5);

Lo cual entrega 15 soluciones, seis de ellas formadas por cuatro implicantes, que resultan las
formas mínimas.

P = P4*P5*P6*P7*P9 + P2*P3*P4*P7*P9 + P2*P3*P5*P6*P9 + P4*P5*P6*P7*P8 +


P2*P3*P4*P7*P8 + P2*P3*P5*P6*P8 + P1*P4*P5*P6*P7 + P1*P2*P3*P4*P7 +
P1*P2*P3*P5*P6 + P3*P5*P7*P9 +P2*P4*P6*P9 +P3*P5*P7*P8 +P2*P4*P6*P8 +
P1*P3*P5*P7 + P1*P2*P4*P6;

La reducción a producto de sumas puede lograrse escribiendo en un archivo eq.eqn, el


contenido:

INORDER = P1 P2 P3 P4 P5 P6 P7 P8 P9;
OUTORDER = P;
P = (P1+P8+P9)*(P6+P7+P8+P9)*(P6+P7)*(P1+P3+P4+P9)*(P3+P4)*(P3+P6+P9)*(P3+P6)*
(P1+P2+P5+P8)*(P2+P5)*(P2+P7+P8)*(P2+P7)*(P1+P4+P5)*(P4+P5);

Luego empleando sis (ver Apéndice 6), se ejecutan los comandos:


sis> read_eqn eq.eqn
sis> write_eqn res.eqn

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 6. Algoritmos de minimización 31

Lo cual produce el archivo res.eqn, con los productos:


INORDER = P1 P2 P3 P4 P5 P6 P7 P8 P9;
OUTORDER = P;
P = P4*P5*P6*P7*P9 + P2*P3*P4*P7*P9 + P2*P3*P5*P6*P9 + P4*P5*P6*P7*P8 +
P2*P3*P4*P7*P8 + P2*P3*P5*P6*P8 + P1*P4*P5*P6*P7 + P1*P2*P3*P4*P7 +
P1*P2*P3*P5*P6 + P3*P5*P7*P9 + P2*P4*P6*P9 + P3*P5*P7*P8 + P2*P4*P6*P8 +
P1*P3*P5*P7 + P1*P2*P4*P6;

Los últimos seis productos son las formas mínimas, y se han anotado a la derecha de las
funciones en el enunciado del problema.

Ejercicio 6.3.

Verificar, aplicando método de Quine-McCluskey, que la minimización de:


f(a, b, c, d) = m(2, 3, 7, 9, 11, 13) +d(1, 10, 15) resulta:
f(a, b, c, d) = ad + b’c + cd
Con implicantes primos: ad , b’c , cd, b’d

Ejercicio 6.4.

Verificar, aplicando método de Quine-McCluskey, que la minimización de:


f(a, b, c, d) = Σ m(1, 5, 7, 8, 9, 13, 15) + Σ d(4, 12, 14) resulta:
f(a, b, c, d) = ab + ac’+ c’d

Ejercicio 6.5.

Verificar que el diseño mínimo de:


f(a, b, c) = Σ m(0, 1, 2, 5, 6, 7)
resulta: f(a, b, c) = a'b'+ bc'+ ac = a'c'+ b'c + ab

Ejercicio 6.6.

Verificar que el diseño mínimo de:


f(a, b, c, d) = Σ m(2, 5, 6, 11, 12, 14, 15) + Σ d(0, 3, 4)
resulta: f(a, b, c, d) = a'bc' + bd' + acd + a'd'

Ejercicio 6.7.

Demostrar
f  g  f  g  g y f g  f
f  g  ( f  g) y (g  f )

Profesor Leopoldo Silva Bijit 19-01-2010


32 Sistemas Digitales
Referencias.

W.V. Quine. "The problem of simplifying truth functions." American Mathematical Monthly
Vol. 59. Octubre 1952. págs 521-531.
W.V. Quine. "A way to simplify truth functions." American Mathematical Monthly Vol. 62.
Noviembre 1955. págs 627-631.

E.J. McCluskey. "Minimization of Boolean Functions". Bell Syst. Tech. Journal N°6,
Noviembre 1956. págs. 1417-1444.

P. Tison. "Théorie des consensus.” These présentée à La Faculte des Sciences de L'Universite
de Grenoble. Junio 1965.
P. Tison, "Generalization of consensus theory and application to the minimization of Boolean
functions," IEEE Trans. Electron. Comput., vol. EC-16, pp. 446-456, Aug. 1967.

Petrick, S. R. “A Direct Determination of the Irredundant Forms of a Boolean Function from the
Set of Prime Implicants”. Technical Report AFCRC-TR-56-110, Air Force Cambridge Research
Center, Cambridge, MA, USA. 1956.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 6. Algoritmos de minimización 33

Índice general.

CAPÍTULO 6 ............................................................................................................................................. 1
ALGORITMOS DE MINIMIZACIÓN ................................................................................................... 1
6.1. IMPLICACIÓN ..................................................................................................................................... 1
6.2. IMPLICANTES PRIMOS ........................................................................................................................ 2
6.3. IMPLICANTE PRIMO ESENCIAL ............................................................................................................ 2
Ejemplo 6.1. ........................................................................................................................................ 3
Ejemplo 6.2. ........................................................................................................................................ 3
6.4. MÉTODO DE QUINE (1952) ................................................................................................................ 4
6.4.1. Obtención de implicantes primos .............................................................................................. 4
Ejemplo 6.3. ..................................................................................................................................................... 4
6.4.2. Tabla de implicantes ................................................................................................................. 5
Ejemplo 6.4. ..................................................................................................................................................... 5
6.4.3. Reducción de tablas................................................................................................................... 6
Ejemplo 6.5. ..................................................................................................................................................... 6
Ejemplo 6.6. ..................................................................................................................................................... 8
6.5. TABLA REDUCIDA CÍCLICA. ............................................................................................................. 10
6.5.1. Bifurcación. ............................................................................................................................. 10
Ejemplo 6.7. ................................................................................................................................................... 10
6.5.2. Petrick (1956). ......................................................................................................................... 11
Ejemplo 6.8. ................................................................................................................................................... 12
Ejemplo 6.9. ................................................................................................................................................... 13
Ejemplo 6.10. ................................................................................................................................................. 13
6.6. MÉTODO DE QUINE-MCCLUSKEY (1956) ........................................................................................ 17
Ejemplo 6.11...................................................................................................................................... 17
6.7. MÉTODO DE TISON (1965) PARA ENCONTRAR IMPLICANTES PRIMOS. CONSENSO REITERADO. ........ 20
6.7.1. Fundamentos. .......................................................................................................................... 20
6.7.2. Algoritmo de Tison. ................................................................................................................. 21
Ejemplo 6.12. ................................................................................................................................................. 22
6.7.3. Operaciones para desarrollar el algoritmo, ........................................................................... 25
a) Obtener términos de consenso. .................................................................................................................. 25
b) Un producto que implica otro: pi  p j ............................................................................................... 26
Ejemplo 6.13...................................................................................................................................... 26
Ejemplo 6.14...................................................................................................................................... 27
Ejemplo 6.15...................................................................................................................................... 27
PROBLEMAS RESUELTOS. ........................................................................................................................ 28
Problema 6.1. .................................................................................................................................... 28
Problema 6.2. .................................................................................................................................... 29
EJERCICIOS PROPUESTOS. ....................................................................................................................... 29
Ejercicio 6.1. ..................................................................................................................................... 29
Ejercicio 6.2. ..................................................................................................................................... 30
Ejercicio 6.3. ..................................................................................................................................... 31
Ejercicio 6.4. ..................................................................................................................................... 31
Ejercicio 6.5. ..................................................................................................................................... 31

Profesor Leopoldo Silva Bijit 19-01-2010


34 Sistemas Digitales
Ejercicio 6.6. ......................................................................................................................................31
Ejercicio 6.7. ......................................................................................................................................31
REFERENCIAS. .........................................................................................................................................32
ÍNDICE GENERAL. ....................................................................................................................................33
ÍNDICE DE FIGURAS .................................................................................................................................35

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 6. Algoritmos de minimización 35

Índice de figuras

Figura 6.1 Implicación. ................................................................................................................. 1


Figura 6.2 Implicantes primos ....................................................................................................... 3
Figura 6.3 Implicantes primos ejemplo 6.2 ................................................................................... 3
Figura 6.4 Obtención de implicantes primos ................................................................................. 5
Figura 6.5 Tabla de implicantes primos ........................................................................................ 5
Figura 6.6 Renglón cubierto por otro. .......................................................................................... 6
Figura 6.7 Mapa con implicantes. ................................................................................................ 7
Figura 6.8 Tabla de implicantes. ................................................................................................... 7
Figura 6.9 Tabla de implicantes reducida...................................................................................... 7
Figura 6.10 Columna cubierta por otra.......................................................................................... 8
Figura 6.11 Mapa con implicantes. ............................................................................................... 8
Figura 6.12 Tabla implicantes con columnas cubiertas por otras.................................................. 9
Figura 6.13. Tabla reducida, por eliminación de columnas........................................................... 9
Figura 6.14. Tabla reducida, por eliminación de renglones. ......................................................... 9
Figura 6.15. Método de bifurcación (branching)......................................................................... 10
Figura 6.16. Bifurcación con Ip1................................................................................................. 11
Figura 6.17. Bifurcación con Ip2................................................................................................. 11
Figura 6.18. Bifurcación con Ip3................................................................................................. 11
Figura 6.19. Tabla cíclica. ........................................................................................................... 12
Figura 6.20. Implicantes primos de Ejemplo 6.6......................................................................... 13
Figura 6.21. Tabla de implicantes Ejemplo 6.10. ........................................................................ 14
Figura 6.22 Remoción implicante primo esencial ....................................................................... 14
Figura 6.23. Remoción renglón ipd ............................................................................................. 14
Figura 6.24. Remoción implicante primo ipa, en tabla cíclica. ................................................... 15
Figura 6.25 Remoción renglones ipc e iph. ................................................................................. 15
Figura 6.26 Remoción implicante primo ipc, en tabla cíclica. .................................................... 15
Figura 6.27 Remoción implicantes primos ipa e ipe. .................................................................. 16
Figura 6.28 Agrupación según número de unos. ......................................................................... 18
Figura 6.29 Grupos de dos mintérminos adyacentes. .................................................................. 18
Figura 6.30. Grupos de cuatro mintérminos agrupables.............................................................. 19
Figura 6.31. Tabla de implicantes ejemplo 6.8. .......................................................................... 19
Figura 6.32. Término de consenso. ............................................................................................ 21
Figura 6.33. Mintérminos de f. ................................................................................................... 22
Figura 6.34. Productos de consenso para variable C. ................................................................. 23
Figura 6.35. Productos de consenso para variable D.................................................................. 23
Figura 6.36. Productos de consenso para variable A. ................................................................. 24
Figura 6.37. Productos de consenso para variable B. ................................................................. 24
Figura 6.38. Implicantes primos para f. ...................................................................................... 25
Figura P6.1. Ordenamiento según número de unos. .................................................................... 28
Figura P6.2. Implicantes formados por dos mintérminos............................................................ 28
Figura P6.3. 2 cubos. ................................................................................................................... 28
Figura P6.4. Tabla Problema 6.2. ................................................................................................ 29

Profesor Leopoldo Silva Bijit 19-01-2010


36 Sistemas Digitales

Profesor Leopoldo Silva Bijit 19-01-2010


1

Capítulo 7

Sistemas Combinacionales

7.1. Componentes básicos.

Las componentes digitales electrónicas han evolucionado rápidamente. Se han logrado elevados
niveles de integración; es decir gran número de compuertas y flip-flops en un solo dispositivo.

Para manejar el nivel de complejidad, de un proyecto que emplee elevado número de


componentes, se han desarrollado herramientas de apoyo al diseño, las cuales también han
evolucionado con las nuevas metodologías de diseño de software.

Debido a que los problemas computacionales que deben ser resueltos son de gran complejidad,
y a menudo de costo exponencial, se han desarrollado heurísticas y nuevos conceptos para
describir sistemas digitales.

Históricamente las compuertas y flip-flops se disponían en pastillas con integración en pequeña


escala; ver Figura 1.15. Luego se dispuso de componentes integrados en mediana y gran escala;
MSI y LSI, respectivamente (Medium and Large Scale Integration). En esta segunda etapa se
introdujeron primitivas fijas, que implementan una función específica como: contadores,
registros, multiplexores, decodificadores, codificadores, etc. El disponer de primitivas más
poderosas que las compuertas lógicas básicas, hizo necesario métodos adecuados de diseño;
comenzaron los lenguajes de descripción de hardware (HDL).

Posteriormente los procesos de fabricación permitieron obtener memorias más baratas, y


comienzan a emplearse en el diseño digital memorias: PROM, EPROM, EEPROM, FLASH. Al
mismo tiempo aparecen los primeros dispositivos programables: PAL, PLA, PLD, los cuales
evolucionaron a los sistemas programables actuales: CPLD y FPGA.

Estudiaremos algunos bloques constructivos básicos: Veremos que ellos pueden implementarse
en base a compuertas, o bien existen como dispositivos de mediana integración, o son partes o
bloques que se pueden agregar a esquemáticos, o son elementos básicos de los dispositivos
programables, o son módulos de software de los lenguajes descriptivos de hardware.

Estudiaremos los siguientes bloques básicos: Multiplexores, decodificadores, demultiplexores.


A éstos pueden agregarse comparadores y bloques aritméticos.

Profesor Leopoldo Silva Bijit 19-01-2010


2 Sistemas Digitales
7.2. Multiplexor. Mux.

Mediante señales de control se selecciona una de las 2 n entradas y se la dirige hacia una salida
única. Se tienen n señales de control que, al ser decodificadas internamente, permiten establecer
la única vía hacia el canal de salida. El dispositivo puede emplearse para convertir una entrada
paralela en una salida en serie.

Un diagrama funcional se muestra en la Figura 7.1:


x
0
x
1
x
2 . z
. n
.
x control
2n-1

Figura 7.1 Esquema funcional multiplexor.

Suele existir una señal de habilitación (enable) que permite el control del multiplexor. Cuando,
por razones que se verán más adelante, se autoriza el ingreso del control en un breve lapso de
tiempo, la señal de habilitación toma la forma de un pulso angosto. Este pulso de control, se
denomina STROBE, en inglés.

La Figura 7.2, muestra un símbolo lógico para un multiplexor de dos vías a una. El símbolo
representa la ecuación: f (c, x0 , x1 ) c ' x0 cx1
c

x0
0
f
x1
1

Figura 7.2 Multiplexor dos vías a una.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 7. Sistemas Combinacionales 3

x0 f

x1

Figura 7.2.a. Multiplexor basado en compuertas.

La Figura 7.3, muestra la realización o síntesis de un mux de 4 vías a una, mediante tres muxs
de 2 vías a una. La descomposición aumenta el número de niveles.

c1
c0

x0 0
x1 1

0
1
f

x2 0
x3 1

Figura 7.3 Multiplexor 4 a 1.

Para el mux de la Figura 7.3, se tiene la siguiente ecuación de salida:

f(c1, c0, x3, x2, x1, x0) = c1c0 x3 + c1c0' x2 + c1'c0 x1 + c1'c0' x0

Si se desea disminuir el número de niveles, la Figura 7.4, muestra un MUX (multiplexor) de 4


vías a una, implementado con dos niveles de compuertas. Los puntos donde existe conexión se
han destacado con un punto grueso (soldadura).

Profesor Leopoldo Silva Bijit 19-01-2010


4 Sistemas Digitales

x0

x1 f

x2

x3

c1 c0

Figura 7.4 Diseño combinacional de multiplexor 4 a 1.

La Figura 7.5, muestra dos símbolos equivalentes para el mux 4 a 1.


c0
c1 c

x0 00 0
x1 01 x 1
x2 f f
10 2
x3 11 3

Figura 7.5 Símbolo mux 4 a 1.

La Figura 7.5 derecha, muestra conjuntos de señales con notación de buses o arreglos de
alambres.

Mediante el teorema de expansión de Shannon pueden implementarse funciones lógicas


mediante multiplexores.

Ejemplo 7.1.

Desarrollar mediante multiplexores la siguiente función:

f x1 x2 x1 x3 x1 x3

Aplicando expansión, respecto a x1 , mediante un mux de 2 a 1, se obtiene:

f ( x1 , x2 , x3 ) x1 f (1, x2 , x3 ) x1 f (0, x2 , x3 ) x1 ( x2 x3 ) x1 ( x3 )

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 7. Sistemas Combinacionales 5

x1

x3’ = f(0,x2,x3 ) 0
f
x2+x3 = f(1,x2,x3 ) 1

Figura 7.6 Implementación con mux 2 a 1.

Aplicando nuevamente la expansión a las funciones de dos variables, en x2 , x3 , se obtiene:

f ( x1 , x2 , x3 ) x1 f (1, x2 , x3 ) x1 f (0, x2 , x3 )
x1 ( x2 f (1,1, x3 ) x2 f (1, 0, x3 )) x1 ( x2 f (0,1, x3 ) x2 f (0, 0, x3 ))
x1 x2 f (1,1, x3 ) x1 x2 f (1, 0, x3 ) x1 x2 f (0,1, x3 ) x1 x2 f (0, 0, x3 )

La Figura 7.7, muestra el desarrollo mediante tres muxs 2 a 1.


x2 x1

x3’=f(0,0,x3 ) 0

x3’=f(0,1,x3 ) 1
0
f
x2 1

x3=f(1,0,x3 ) 0

1=f(1,1,x3 ) 1

Figura 7.7 Implementación con muxs 2 a 1.

Expandiendo la función, del Ejemplo 7.1, se obtiene:

f x1 x2 x1 x3 x1 x3 x1 x2 x1 x2 x3 x1 x2 x3 x1 x2 x3 x1 x2 x3

Simplificando, se obtiene:
f x1 x21 x1 x2 x3 x1 x2 x3 x1 x2 x3

Comparando coeficientes con la expansión realizada para tres variables, se obtienen las
funciones de x3 , que se indican en la Figura 7.7.

Profesor Leopoldo Silva Bijit 19-01-2010


6 Sistemas Digitales
Alternativamente, si se desea un diseño de menos niveles, puede emplearse un mux de 4 a 1,
como se indica en la Figura 7.8.
x1
x2
x3’ 00
x3 01
f
x3’ 10
1 11

Figura 7.8 Desarrollo basado en mux 4 a 1.

Del diseño anterior puede verse que un mux de 4 a 1, permite implementar cualquier función de
tres variables.
Un multiplexor de 8 vías a una, cuyo diagrama se muestra en la Figura 7.9, implementado en
dos niveles, está disponible en la familia TTL, se tienen los dispositivos: 74151, 74152.

Un mux de 8 a 1, permite implementar cualquier función de cuatro variables.


Las señales de control: c2, c1 y c0, representan a 3 de las 4 variables. La cuarta variable o su
complemento se conecta en algunas de las entradas formando los mintérminos. Algunas de las
entradas también pueden conectarse a 1 (Vcc) ó 0 (tierra), dependiendo de los mintérminos que
deben cubrirse.

f=c2c1c0I7+c2c1c0'I6+c2c1'c0I5+c2c1'c0'I4+c2'c1c0I3+c2'c1c0'I2+c2'c1'c0I1+c2'c1'c0'I0

I0
I1
I2 Mux
I3 8:1
I4 f
I5
I6 8:1
I7 mu
x
c2c1c0

Figura 7.9. Multiplexor de 8 vías a una.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 7. Sistemas Combinacionales 7

El 74150 implementa un mux de 16 vías a una; este mux permite implementar cualquier función
de cinco variables.

Una alternativa electrónica es dotar a estos multiplexores de una salida de tercer estado. En este
caso la compuerta de salida además de los valores lógicos 1 y 0, puede quedar en un estado de
alta impedancia. En caso de TTL, se disponen conexiones para que ambos transistores del
totem-pole de salida queden cortados. Este control adicional, permite conectar las salidas de dos
multiplexores a un mismo alambre, ya que sólo uno de los multiplexores impone valores lógicos
en la salida; el otro, está en tercer estado.
Esto permite componer un mux de 2n vías a partir de dos muxs de n vías.
control de tercer estado

x0

x1 z

x2

x3

c1 c0

Figura 7.10. Multiplexor con salida de tercer estado.

Ejemplos de estas configuraciones de tercer estado son: 74251, 74253, 74257

7.3. Tercer Estado. Alta Impedancia.

Además de los valores lógicos 0 y 1, hemos visto el valor superfluo (usualmente X o d), sin
embargo estos valores no aparecen una vez que se ha realizado un diseño ya que éstos se han
empleado para minimizar, y han sido reemplazados por unos o ceros según convenga.

Suele encontrarse un tercer estado en el cual puede estar una variable booleana, este valor es de
alta impedancia, y se lo denomina corrientemente Z. Cuando una salida está en tercer estado,
puede considerársela desconectada.

Las compuertas que pueden proveer esta salida tienen una entrada adicional, denominada
habilitación de la salida (output enable). Cuando esta señal de control está desactivada la salida
está en tercer estado; cuando está activa, la salida puede tomar valores lógicos, de acuerdo a las
entradas.

Profesor Leopoldo Silva Bijit 19-01-2010


8 Sistemas Digitales

El siguiente diagrama ilustra un buffer de tercer estado (amortiguador entre etapas), junto a su
tabla de verdad, en la cual aparecen los estados X (superfluo) y Z (de tercer estado):

OE E OE S
X 0 Z
0 1 0
E S
1 1 1

Figura 7.11. Buffer de tercer estado.

Empleando buffers de tercer estado puede diseñarse un multiplexor, según se ilustra en el


diagrama de la Figura 7.12.
OE

E1 OE S
1 E1
OE' S
0 E2

E2

Figura 7.12. Multiplexor mediante buffers de tercer estado.

En numerosos circuitos se proveen buffers de tercer estado que activan la salida cuando su nivel
es bajo. En estos casos la señal de control, antes de ingresar al buffer, tiene un pequeño círculo,
que se interpreta como un inversor. En estos casos de activación del control mediante nivel
bajo, el nombre de la señal suele definirse como una señal negada, según se ilustra, en el
siguiente diagrama:

OE ' E OE ' S
X 1 Z
0 0 0
E S
1 0 1
Figura 7.13. Buffer con salida activada por señal de lógica negativa.

7.4. Decodificadores.

Permiten seleccionar una de las N salidas de un circuito que tiene n entradas.


En decodificadores binarios se cumple la relación: N 2n .

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 7. Sistemas Combinacionales 9
Ejemplo 7.2

Para un decodificador de dos líneas de entradas, se tendrán cuatro salidas. Pueden denominarse
decodificadores de 2 entradas a 4 salidas, anotando 2 : 4; o bien, una salida de las cuatro, lo que
se anota: 1 de 4.
E

Dec 3 z3
2a4 2 z2
1 z1
1 0 0 z0

c1 c0

Figura 7.14. Decodificador binario.

Dependiendo de la combinación presente en la entrada, se tendrá una de las salidas en alto; el


resto de las salidas serán bajas.
En caso de tener: c1 = 0 y c0 = 1, se tendrá que: z1 = 1, z0 = z2 = z3 = 0.

El circuito de la Figura 7.15, implementa un decodificador binario, 2:4, en base a compuertas, y


en dos niveles. Se dispone de la señal E, que habilita al decodificador.

z0 E c1 c0 z3 z2 z1 z0
1 0 0 0 0 0 1
z1 1 0 1 0 0 1 0
1 1 0 0 1 0 0
1 1 1 1 0 0 0
z2
0 X X 0 0 0 0

z3 z0 = c1' c0' E
z1 = c1' c0 E
z2 = c1 c0' E
z3 = c1 c0 E
c0 E
c1
Figura 7.15. Diseño en base a compuertas

Existen decodificadores que no están basados en el sistema binario; por ejemplo, un


decodificador muy usado es el BCD a decimal. En él, la entrada corresponde a un dígito BCD,
en paralelo, es decir 4 entradas; y se tienen 10 salidas, una por cada dígito decimal. Un ejemplo
de este decodificador es el 74145.

En toda memoria existe un decodificador del bus de direcciones, cuyas salidas activan sólo una
de las palabras de la memoria.

Profesor Leopoldo Silva Bijit 19-01-2010


10 Sistemas Digitales
Si en las entradas del decodificador se ingresan las variables, en las salidas se tendrán los
mintérminos. Con un decodificador binario de n entradas se tendrán 2 n salidas. Con esta
componente se pueden implementar todas las funciones de n variables. Para esto se conectan
las señales asociadas a las variables en las entradas de control; la entrada (gate) se habilita en
uno lógico, con esto se tendrán en las salidas los mintérminos de la función. Finalmente para
implementar la función se efectúa un or de los mintérminos presentes en la función.

Pueden conectarse decodificadores en estructura de árbol, para formar decodificadores de


mayores órdenes. En la Figura 7.15.a, se muestra un decodificador de 4 a 16, la configuración
produce los 16 mintérminos asociados a las 4 variables.
E=1
3
2
1 3
1 0 0 2
1
1 0 0
ab
cd

3
2
1
1 0 0
cd

3
2
1
1 0 0
cd

3
2
1
1 0 0
cd

Figura 7.15.a. Decodificador binario 4 a 16

7.5. Demultiplexer, Distribuidor.

Una variante de los circuitos decodificadores es el demultiplexer, que esquemáticamente puede


representarse por:

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 7. Sistemas Combinacionales 11

z
0
z
1
x . z
2
.
.
control z
2n-1
Figura 7.16. Esquema funcional de Demultiplexor

Permite dirigir la información que fluye desde x, por una (y sólo una) de las 2 n salidas, de
acuerdo a una entrada de control codificada, en n líneas. La señal de control selecciona la vía
por la que fluirá la única información de entrada.

La Figura 7.17 muestra el diseño de un demultiplexor en base a compuertas:

z0
z0 = c1' c0' x
z1 z1 = c1' c0 x
x z2 = c1 c0' x
z2 z3 = c1 c0 x

z3

c1 c0

Figura 7.17. Diseño demultiplexor en base a compuertas.

La señal x fluye hacia la salida z3, si las señales de control toman valores: c1 = 1, c0 = 1. El
resto de las salidas: z0, z1 y z2 toman valor cero.

En los decodificadores, la señal x suele llamarse habilitadora (Gate o Enable).

En el caso de un demultiplexer x es la señal de entrada. En forma de bloques, suele emplearse


la siguiente notación:

Profesor Leopoldo Silva Bijit 19-01-2010


12 Sistemas Digitales

c x

Figura 7.18. Símbolo demultiplexor.

Para un demultiplexor con una entrada, tres señales de control y 8 salidas, se tienen las
ecuaciones:

z0 = c2' c1' c0' x z4 = c2 c1' c0' x


z1 = c2' c1' c0 x z5 = c2 c1' c0 x
z2 = c2' c1 c0' x z6 = c2 c1 c0' x
z3 = c2' c1 c0 x z7 = c2 c1 c0 x

El siguiente esquema ilustra la confección de un switch, en base a un multiplexor y un


demultiplexor:
x
cmux

y
cdemux

Figura 7.19. Diseño switch empleando multiplexor y demultiplexor.

Pueden usarse para resolver la interconexión entre múltiples fuentes y múltiples destinos.

Una aplicación importante es seleccionar los operandos de entrada a una unidad aritmética, y la
posibilidad de llevar el resultado por diferentes rutas. La Figura 7.20 ilustra la posibilidad de
escoger dos valores diferentes para cada operando de la unidad aritmética.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 7. Sistemas Combinacionales 13

A0 A1 B0 B1

Ca MUX MUX Cb

A B
Sumador

Cs DEMUX

S0 S1

Figura 7.20. Operandos de entrada y salida de unidad aritmética.

En el diseño del camino de datos de un procesador suelen emplearse muxes para movilizar la
información. En un caso práctico, A0, A1, B0, B1, S0 y S1 son buses formados por 16 ó 32
señales.

7.6. Primitivas programables

En circuitos con funciones cada vez más complejas, los diseños lógicos mediante componentes
SSI, o primitivas fijas MSI/LSI ya no resultaron convenientes.
Comenzaron a emplearse componentes programables, por la disminución del tiempo de diseño y
verificación; y además la posibilidad de reprogramación en caso de modificaciones al diseño.
Esto estuvo ligado a la aparición de herramientas computacionales de apoyo al diseño.

Los primeros dispositivos programables fueron: PROM, memoria programable sólo de lectura
(Programable Read Only Memory); PLA, arreglos lógicos programables (Programable Logic
Arrays); PAL arreglo de and programable (Programable Array Logic).
Estos dispositivos poseen, como parte importante, una matriz de diodos.

7.6.1. Matriz de diodos

Básicamente el problema de las memorias es tener varias palabras almacenadas, y que el


contenido de éstas esté disponible en los mismos cables de salida, de acuerdo a cuál palabra sea
seleccionada o direccionada.

Supongamos que deseamos tener dos palabras de 3 bits cada una. Una de ellas debe ser 101 y la
otra, 001. En la Figura 7.21 se tienen dos líneas horizontales o de palabras que pueden estar
conectadas a voltajes altos o bajos. Se conectan diodos entre las líneas de palabra y las tres
líneas verticales o de contenidos.

Profesor Leopoldo Silva Bijit 19-01-2010


14 Sistemas Digitales
Si la línea p1 se coloca en un voltaje alto, y la línea p0 está en cero volts, se tendrá 101 en la
salida. Es decir, C2 y C0 serán voltajes altos y C1 será voltaje bajo.

Debe recordarse que un diodo abierto representa una alta impedancia; en el caso anterior, la
línea de palabra p0 queda físicamente desconectada de las líneas de salida.

Asumimos que los diodos que conducen dejan un voltaje igual al voltaje de la línea palabra
menos 0,7 V, en las líneas de contenido.

p1

Línea palabra
p0

Línea de salida

C2 C1 C0

Figura 7.21. Matriz de diodos.

Para construir una memoria, sólo resta activar las líneas de palabras, de acuerdo al código
binario de la dirección. Esto puede implementarse simplemente mediante un decodificador.

Se ilustra un esquema de una memoria de 2m palabras con n bits cada una, con salidas
de tercer estados controladas por la señal leer. En cada casilla de la matriz se tiene un
diodo, que conecta la línea de palabra con la columna de salida, en caso de tener
almacenado un uno; y no se tiene diodo, en caso de almacenar un cero.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 7. Sistemas Combinacionales 15

Sel 0
0/1 0/1 0/1

Sel 1
0/1 0/1 0/1
Deco-
a Sel 2
0 dificador 0/1 0/1 0/1
a
1
Dirección ma2
m

a

m-1

m
Sel 2
– 0/1 0/1 0/1

Leer

Datos d d d
n– n-1 0

Figura 7.22. Memoria.

7.6.2. ROM

En una ROM, los datos quedan permanentemente almacenados. Esto se logra colocando o no
diodos, mediante métodos fotográficos, al construir el circuito integrado. Otra posibilidad es
construir el circuito con todos los diodos de la matriz; luego se aplica un voltaje adecuado de
programación que rompe aquellos diodos asociados a los ceros de la palabra. El voltaje de
programación se introduce por las líneas de salida.
La elección de una de estas técnicas de programación de ROM, dependen de la cantidad de
dispositivos que se deseen programar. Estos dispositivos pueden tener diferentes usos, por
ejemplo pueden usarse para: almacenar secuencias de control en un microprograma, generar
caracteres, traductor de códigos usuales, etc.

En lo sucesivo, se empleará la siguiente notación para describir una matriz de diodos. La Figura
7.23 muestra una memoria de 4 palabras de 4 bits cada una, se ilustra el decodificador y luego
la matriz de diodos.
No se dibujan las resistencias de terminación, y los diodos conectados se simbolizan por puntos
gruesos:

Profesor Leopoldo Silva Bijit 19-01-2010


16 Sistemas Digitales

0
a0
1
2
a1 3

C3 C2 C1 C0

Figura 7.23. Representación simbólica de una matriz de diodos.

En la Figura 7.24 se muestran las direcciones y contenidos de la memoria que se representa


simplificadamente en la Figura 7.23.

Dirección Contenido
a1 a0 c3 c2 c1 c0
0 0 0 0 1 0
0 1 1 1 0 1
1 0 1 0 0 1
1 1 0 1 0 0

Figura 7.24. Mapa de memoria de matriz de diodos de la figura 7.23.

7.6.3. PROM, EPROM.

El esquema en que se puede programar, pero sólo una vez, a través de la ruptura de algunos
diodos del arreglo se clasificó como ROM. En las memorias PROM, puede colocarse
información en la memoria, la P inicial recuerda que el dispositivo es programable.

Se emplean transistores MOSFET con la base aislada, en lugar de diodos. Mediante el efecto
de avalancha se deposita carga en la base, quedando una baja impedancia o un '1' almacenado.

Para liberar la carga de la compuerta se aplica luz ultravioleta a través de una pequeña ventana
que posee la PROM, dejándola con puros unos. Suele denominarse EPROM a las memorias de
este tipo, donde la "E" simboliza "Erasable" (borrable).

Si se tienen n líneas para establecer la dirección, y si se tienen m líneas de contenido o salida, la


capacidad total de la PROM queda dada por:

2n m [bits]

En la práctica, suele especificarse el número de direcciones, expresada en Kilos, multiplicado


por el número de bits de salida o largo de palabra. Por ejemplo: 4 K * 8.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 7. Sistemas Combinacionales 17
De tecnología más moderna son las EEPROM, cuya primera E indica que son electrónicamente
borrables. Más recientemente se dispone de tecnología flash, la que tiene la ventaja que sus
dispositivos pueden ser reprogramadas estando conectadas dentro de un circuito.

7.6.4. Usos de PROM en circuitos combinacionales.

a) Conversión de códigos.
La programación de la PROM está basada en la asignación de un contenido a cada dirección; es
decir, se programa por palabras.

Un caso especial de traductor de código es una tabla de búsqueda. En éstas pueden almacenarse
valores de funciones trigonométricas, logaritmos, etc. Además, todas las operaciones aritméticas
que pueden ser planteadas con tablas, como la suma, resta y multiplicación, también pueden ser
implementadas usando PROM.
Ejemplo 7.3. Conversión de BCD a exceso 3.
La tabla de conversión:

Dirección Palabra Contenido


0 0 0 0 0 0 0 1 1
0 0 0 1 1 0 1 0 0
0 0 1 0 2 0 1 0 1
0 0 1 1 3 0 1 1 0
0 1 0 0 4 0 1 1 1
0 1 0 1 5 1 0 0 0
0 1 1 0 6 1 0 0 1
0 1 1 1 7 1 0 1 0
1 0 0 0 8 1 0 1 1
1 0 0 1 9 1 1 0 0

Figura 7.25. Mapa de memoria del cambiador de códigos.

El resto de las combinaciones debe ser llenado con ceros. Nótese que se programa por palabras;
es decir, se le asocia un significado al contenido de cada dirección. Se tiene una visión
horizontal de la tabla.
b) Generadores de funciones.
En este caso se tiene una visión vertical de la tabla. Se asigna los valores de la tabla de verdad
de la función, a una columna de contenido de la PROM.
Lo usual es generar varias funciones de las variables con la misma PROM.

Profesor Leopoldo Silva Bijit 19-01-2010


18 Sistemas Digitales
Ejemplo 7.4.
La siguiente función, puede implementarse en una PROM de 8 por 1.
ab
c 00 01 11 10
0 2 6 4
0 1
1 3 7 5
1 1 1 1

f(a, b, c)=abc + ab’c’ + a’b’c + a’bc

Figura 7.26. Diseño de funciones mediante PROM.

Nótese que cada mintérmino de la función corresponde a un diodo conectado.

DEC 3:8 0
1
2
a A2
3
b A1
4
c A0
5
6
7
f

Figura 7.27. Esquema funcional del diseño de una función en base a PROM.

c) Extensión. Estructura de memorias.


Con una adecuada combinación de EPROM, es posible extender el largo de la palabra de salida
y el número de direcciones.
Ejemplo 7.5
Obtener una PROM de 16 bytes por 6 a partir de dos PROM de 16 bytes por 3. Esto expande
el largo de la palabra de salida.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 7. Sistemas Combinacionales 19

0
1 16x3
2
3

0
1 16x3
2
3

Figura 7.28 Extensión del largo de la palabra.

d) Descripción de archivos con código hexadecimal Intel.


Los archivos con extensión .hex se emplean para describir mapas binarios de contenidos
asociados a direcciones.
Su principal uso es describir el contenido de una ROM, mediante un archivo de texto, formado
por líneas. Normalmente es generado, en forma automática por una aplicación, por ejemplo un
compilador.

El formato del archivo es el siguiente:


Cada línea debe cumplir el siguiente formato:
:10001000FE352FCD454BAEFFE43E5D55AAE435EEEF

:
El primer carácter de la línea es el símbolo dos puntos (colon en inglés).

: 10
Los siguientes dos caracteres especifican, en hexadecimal, el número de bytes de datos
presentes en la línea. (En el ejemplo que se ilustra, el número de bytes es 10H, es decir: 16 en
decimal.)

:10 0010
Los siguientes cuatro caracteres, especifican la dirección del primer byte de datos de la línea
(0010H equivale a la dirección 16 en decimal). Esto implica que el mayor tamaño de la
memoria es FFFFH, es decir una memoria de 64 KB. Existen formatos de archivos para
especificar memorias mayores a 64KB, entre ellos los registros S de Motorola y los archivos
con formato Textronix.

:100010 00
Los siguientes dos caracteres indican el tipo de línea o registro. El tipo 00 indica un registro
normal de datos; es decir, una línea que no es la última del archivo. El tipo de la última línea
del archivo debe ser 01.

:10001000 FE352FCD454BAEFFE43E5D55AAE435EE

Profesor Leopoldo Silva Bijit 19-01-2010


20 Sistemas Digitales
Los siguientes caracteres representan los datos, en forma de bytes, que se almacenaran en
posiciones secuenciales a partir de la dirección inicial de la línea. Los 16 bytes de datos de la
línea que se describe en el ejemplo son: FE, 35, 2F, CD, 45, 4B, AE, FF, E4, 3E, 5D, 55, AA,
E4, 35, y EE.

:10001000FE352FCD454BAEFFE43E5D55AAE435EE EF
Los últimos dos caracteres son una suma de chequeo para la línea. Se denomina byte de paridad.
Y se define como el valor que al ser agregado a la suma de los bytes anteriores (los bytes
después del dos puntos, hasta el penúltimo) de la línea da como resultado cero. Puede decirse
que es el negativo de la suma, descrita antes, expresada en complemento dos.
La suma se realiza en módulo 100H (módulo 256 en decimal).
Ejemplo 7.6
Las siguientes dos líneas son el contenido de un archivo en formato hexadecimal de Intel. El
cual se emplea para grabar eprom. El archivo es de texto (puede editarse con notepad); es decir,
está formado por caracteres imprimibles del código ASCII, organizado en líneas separadas por
0D, 0A (CR, LF carriage return y line feed)

:070100002402FDEC3400FCB9
:00000001FF

La última línea tiene tipo 01, que es la última línea del archivo.
Se cargan 7 bytes a partir de la dirección 0100H.

Si se visualiza el archivo de texto (hex) con un editor hexadecimal, se tendrá el siguiente


contenido.
3A 30 37 30 31 30 30 30 30 32 34 30 32 46 44 45
43 33 34 30 30 46 43 42 39 0D 0A 3A 30 30 30 30
30 30 30 31 46 46

El código hexadecimal para el carácter dos puntos es 3A. Para el carácter 0 es 30 hexadecimal,
y así sucesivamente. Existe una aplicación Windows llamada mapa de caracteres donde pueden
visualizarse los símbolos disponibles en una fuente y su valor en hex.

Todos los cargadores de PROM aceptan directamente el formato Intel.


Existen programas que toman como entrada un archivo hexadecimal y lo transforman a una
imagen binaria.

Si se transforma el archivo anterior, en formato Intel hex a binario, la información del archivo
binario, vista con un editor hexadecimal se vería como sigue:

00000000 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000010 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000020 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000030 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000040 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000050 0000 0000 0000 0000 0000 0000 0000 0000 ................

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 7. Sistemas Combinacionales 21
00000060 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000070 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000080 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000090 0000 0000 0000 0000 0000 0000 0000 0000 ................
000000A0 0000 0000 0000 0000 0000 0000 0000 0000 ................
000000B0 0000 0000 0000 0000 0000 0000 0000 0000 ................
000000C0 0000 0000 0000 0000 0000 0000 0000 0000 ................
000000D0 0000 0000 0000 0000 0000 0000 0000 0000 ................
000000E0 0000 0000 0000 0000 0000 0000 0000 0000 ................
000000F0 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000100 2402 FDEC 3400 FC $...4..

La primera columna indica la dirección inicial, en hexadecimal. Las siguientes columnas


(exceptuando la última) contienen los datos asociados a las direcciones. Se tienen 16 bytes de
datos por línea; por esta razón las direcciones de la primera columna terminan en 0. La última
columna es la zona ASCII, donde se colocan los 16 símbolos del código ASCII asociados a los
bytes.

Note que en la zona ASCII, los caracteres que no son gráficos o imprimibles (del 00 a 31
decimal, y los mayores que 7FH) se visualizan con puntos; y que también se rellenan con ceros
las zonas donde no se han especificado datos; este es el caso desde la dirección 00000000 hasta
000000FF. Y sólo se cargan en este mapa de memoria los siete valores especificados, a partir
de la dirección 00000100.
No puede verse un archivo binario, con un editor de texto.

Note que la fuente para ver alineadas las columnas debe ser de espacio no proporcional, como
courier o similar.

Existe una aplicación, normalmente denominada dump, que pasa un archivo binario a un
archivo de texto, con la información similar a la desplegada por un editor binario (o
hexadecimal).

7.6.5. PLA. Arreglos Lógicos Programables.

En una EPROM, todos los mintérminos son generados por un decodificador fijo, luego los
mintérminos requeridos para producir la función, son combinados mediante otro arreglo
programable con el papel de un OR.

Sin embargo, para ciertos diseños lógicos, sólo se usa una pequeña fracción de los mintérminos
generados por el decodificador.

La estructura arreglos lógicos programables (PLA) contiene un decodificador programable


(arreglo lógico AND), y un arreglo lógico OR programable. De esta forma pueden
implementarse funciones a partir de términos de mayor nivel que los mintérminos; es decir, a
partir de los implicantes primos.

Profesor Leopoldo Silva Bijit 19-01-2010


22 Sistemas Digitales

• •
entradas

Arreglo
Arreglo
de
de productos
OR
AND

salidas
• • •

Figura 7.29. PLA Arreglos lógicos programables.

Ejemplo 7.7.
Implementar, mediante PLA , las siguientes funciones:

f0 ABCD DE DE
f1 AB BCDE DE
f2 ABCD BCDE

Se reconocen 5 productos diferentes, que serán generados por el decodificador programable:

P0 ABCD
P1 DE
P2 DE
P3 AB
P4 BCDE

La Figura 7.30 ilustra los detalles.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 7. Sistemas Combinacionales 23

Línea de variable

Línea de producto
B

C
Arreglo de AND

D
Líneas de salida

P4 P3 P2 P1 P0
f0

Arreglo de OR f1
f2

Figura 7.30. Esquema del diseño empleando PLA.

Las variables complementadas se generan internamente. El tamaño del arreglo de AND es


proporcional al producto de las variables por el número de productos lógicos a generar.

Además, el tamaño del arreglo OR es proporcional al producto del número de funciones


implementadas por el número de productos. Reduciendo los parámetros anteriores a través de
los métodos de minimización, se logrará un diseño con una PLA de menor costo.

Como se verá más adelante, las ROM y PLA se emplean también en diseños de máquinas
secuenciales.
Detalle arreglo de AND.
En la Figura 7.31, si a o b o ambas tienen voltaje cero, en f se tendrá el voltaje de conducción
del (o de los) diodos. Este voltaje es cercano a los 0,7 [V] y corresponde a un cero lógico. Si
ambos diodos están abiertos, con a y b altos, se tendrá un voltaje alto, proporcionando por la
fuente y la resistencia, en la salida f.

Profesor Leopoldo Silva Bijit 19-01-2010


24 Sistemas Digitales
Vcc

a b f
a 0 0 0
0 1 0
1 0 0
b
1 1 1

f =ab
f

Figura 7.31 Arreglo de AND.

La combinación fuente-resistencia se denomina Pull-up, y fija el voltaje alto en la salida.


Detalle arreglo OR.
-Vcc
a b f
0 0 0
0 1 1
a 1 0 1
1 1 1
f
b f =a+b

Figura 7.32 Arreglo de OR.

En la Figura 7.32, basta que una (o ambas) de las entradas estén altas, para que en la salida f
se tenga un voltaje alto, (Vin - 0,7), al cual se asocia un 1 lógico.

Si ambas entradas están bajas, la salida toma un voltaje de -0,7; al cual se asocia el 0 lógico.

Los circuitos que se ilustran en las Figuras 7.31 y 7.32, no son los únicos posibles. Las
explicaciones simplificadas del funcionamiento de los arreglos, en base a diodos, son con fines
ilustrativos de conceptos solamente.

La tecnología implementa los fusibles programables (diodos) empleando MOSFET.


Ver Apéndice 4.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 7. Sistemas Combinacionales 25

Diagrama simplificado PLA.


El siguiente diagrama ilustra una PLA, en base a compuertas. En la práctica todas las
compuertas son NAND (o NOR). Se muestran todas las conexiones antes de programar el
dispositivo.

Figura 7.33 PLA en esquema de compuertas lógicas.

Luego las conexiones no deseadas se abren.

Existen dos modalidades, una denominada fusible (fuse) en la que las vías están normalmente
conectadas, y se funden o abren las conexiones que no se desean.

Otra modalidad, llamada Antifusible (Anti-fuse), en la cual las conexiones están normalmente
desconectadas, y la programación crea las conexiones.

Si se abren algunas conexiones, como se muestra en el diagrama de la Figura 7.34, pueden


implementarse las funciones:

f1 = abc + a'bc' + b'c


f2 = a'bc' + a b + a
f3 = a + b'c
f4 = a'bc'

Profesor Leopoldo Silva Bijit 19-01-2010


26 Sistemas Digitales
a b c

a’bc’

ab

b’c

f1 f2 f3 f4

Figura 7.34 PLA programada. Se muestran abiertas las conexiones.

Cuando la densidad aumenta, se suele emplear la siguiente notación para las matrices de diodos:
Se dibuja una sola línea de entrada a las compuertas, y se dibuja una marca cuando existe
conexión entre las líneas perpendiculares. El siguiente diagrama ilustra una PLA de cuatro
entradas y cuatro salidas, cuando todas las conexiones aún no han sido programadas.

Figura 7.35 Esquema de compuertas simplificado de una PLA.

Usando este convenio, la programación de f1= a'b + b'a y f2 = a'b'c'd' + abcd puede
representarse según:

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 7. Sistemas Combinacionales 27

a b c
d
a'b
ab'
a'b'c'd'
abcd

f1 f2

Figura 7.36 Esquema simplificado PLA, con conexiones abiertas.

Sin embargo cuando el número de fusibles es elevado, se han estandarizado formatos de


archivos para describir las conexiones. Ver A4.9. Formato Jedec, en Apéndice 4.

7.6.6. PAL arreglo lógico (de and) programable (Programable Array Logic).

El arreglo de or es fijo. El número de productos lógicos que entran a un OR puede variar,


usualmente de 2, 4, 8 y 16.

En la Figura 7.37, se ilustra un solo or con tres líneas de producto, y tres entradas. Note que en
las entradas al arreglo de and se disponen de la señal y su complemento.

Líneas de entrada Línea de producto

Figura 7.37. Esquema PAL

En cada línea de producto se puede programar un implicante de la función. En cada intersección


de una línea de entrada con una línea de producto se tiene un fusible programable (diodo).

Existen PAL con lógica activa alta en la salida (Ejemplo P16H8) y con lógica activa baja en la
salida (P16L8).

También suele proveerse una realimentación de la salida en las líneas de producto, esto permite
programar realimentaciones, y puede emplearse para diseños asincrónicos.

Profesor Leopoldo Silva Bijit 19-01-2010


28 Sistemas Digitales

Figura 7.38. Esquema PAL con realimentaciones.

Si se está diseñando un conjunto de funciones, y existen productos que puedan ser compartidos
las PLA son más eficientes que las PAL. Pero debido a que las conexiones basadas en fusibles
tienen mayor resistencia que las conexiones físicas, las PLA son más lentas que las PAL.

7.6.7. PLD (Programable Logic Device).

El siguiente paso en la evolución de las PALs fue agregar un bloque reconfigurable


(macrocelda) mediante fusibles en la salida del OR. La macrocelda contiene un flip-flop tipo D,
que puede capturar la salida del OR; un buffer de tercer estado; y lógica para proveer
realimentación a las líneas de producto de la salida del OR o del flip-flop. Entre los PLD, uno de
los más conocidos es la GAL22V10 (Generic Array Logic). Estos dispositivos reemplazaron a
las diferentes formas de las PAL.

clock
enable
reset Q.AR
AR Q.OE

D Q
clk
Q.C
x1
Q.FB Q.PIN
x2

Figura 7.39. PLD con macrocelda.

En la Figura 7.39, la macrocelda muestra el flip-flop D, permanentemente conectado a la salida


del or; sin embargo puede programarse que la macrocelda sea estrictamente combinacional,
conectado la salida del or directamente a la salida. Se muestran dos entradas: x1 y x2.
Las líneas de productos de cada OR son fijas, pero se diseñan algunos OR con más líneas de
productos que otros.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 7. Sistemas Combinacionales 29
7.6.8. Comparaciones entre dispositivos programables.

Una ventaja de emplear ROM es que no se requiere minimizar las funciones de salida, y
conviene emplearlas cuando se requieren muchas combinaciones de las entradas (por ejemplo,
en cambiadores de código); las dificultades de su empleo es que por cada entrada adicional se
duplica el tamaño de la ROM, y no puede emplearse minimización debida a condiciones
superfluas. En una ROM puede implementarse cualquier función, y su costo es relativamente
bajo, debido a los altos niveles de producción; pero su velocidad es baja relativa a las otras
estructuras programables.

Los arreglos lógicos programables (PLA) comparten los productos entre varias funciones y su
empleo es ventajoso si las funciones no tienen presentes mintérminos aislados. La mayor
ventaja es que existen aplicaciones que permiten minimizar diseños de múltiples funciones. Es
de mayor costo y menor velocidad que una PAL.

La principal desventaja del arreglo lógico programable (PAL) es que existen restricciones de
fan-in en las entradas de los or fijos, cuestión que se ha superado en los diseños de las
arquitecturas de los CPLD; su ventaja es la mayor rapidez relativa a PLA y ROM. En el diseño
de funciones complejas, puede emplearse una salida como entrada, a la misma PAL, lo cual
aumenta el número de niveles.

7.6.9. CPLD ( Complex Programable Logic Device).

Se denomina CPLD al siguiente nivel de la tecnología. Tienen mayor nivel de integración (cerca
de 6500 compuertas y 288 registros, lo cual es un elevado incremento comparado con los 10
registros de la GAL22V10). Se caracterizan por tener programable el número de líneas de
producto que pueden sumarse en un or, y por la incorporación de un bloque de entrada-salida
independiente de la macrocelda.

Suelen tener memoria flash, lo que permite reprogramarlos ya conectados al resto del circuito, y
además conservan su programación al desconectarles la polarización.

El nivel de complejidad de las componentes actuales requiere de programas de apoyo al diseño.


Además se han incorporado nuevos lenguajes para la descripción del hardware.

7.6.10. FPGA

Se denominan FPGA (Field Programmable Gate Array) a dispositivos basadas en arreglos


bidimensionales de bloques lógicos y flip-flops, con programabilidad de las interconexiones y
de las funciones lógicas y del control. Se las debe reconfigurar al aplicarles la polarización.

A medida que han ido aumentando el número de compuertas y flip-flops dentro del chip,
también ha ido variando su estructura interna, actualmente algunas de ellas tienen memoria y
procesadores incorporados.

Algunos fabricantes proporcionan el código HDL de microprocesadores de 16 y 32 bits, de


unidades de multiplicación y acumulación para implementar filtros digitales, etc.

Profesor Leopoldo Silva Bijit 19-01-2010


30 Sistemas Digitales
Algunos diseños comerciales de FPGA consideran como bloques lógicos: pares de transistores,
compuertas nand de dos entradas, compuertas and con compuertas xor, multiplexores y tablas
de búsqueda.

Si los bloques son muy simples, lo más probable es que se utilicen completamente, pero
requieren un elevado número de alambres y switches programables; la programación de las
interconexiones puede requerir mucho espacio en el área del chip o tener gran retardo.
Celdas basadas en multiplexores.
La celda de la Figura 7.40 tiene 8 entradas y una salida.

s0
s1
sA

A0 0

A1 1

0
sB f
1

B0 0
B1 1

Figura 7.40. Celda basada en multiplexores.

La ecuación de la celda es:


f ( s0 s1 )( s A A0 s A A1 ) ( s0 s1 )( sB B0 sB B1 )

Esta celda puede implementar todas las funciones de dos variables, todas las de tres variables
con al menos una entrada sin complementar, muchas de cuatro variables y hasta algunas de ocho
variables.
Celdas basadas en tablas de búsqueda.
Pueden emplearse Tablas de Búsqueda para implementar funciones booleanas. Se denominan
LUT (look-up table) en inglés. Están basadas en un registro cuya salida alimenta a un
multiplexor.

La Figura 7.41 muestra una tabla de búsqueda de 4 variables de entrada, la cual permite
implementar cualquier función de cuatro variables.

El principio de funcionamiento es el siguiente: primero se graba la tabla, para esto se direcciona


un latch, el decodificador habilita para escritura sólo uno de los 16 latchs del registro, que tienen
común la entrada D, y se almacena el 1 ó 0 que le corresponde en la tabla de verdad de la
función; y así sucesivamente hasta grabar toda la tabla.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 7. Sistemas Combinacionales 31
Una vez configurada la tabla de búsqueda, se procede a la lectura de ella; para ello basta
direccionar el multiplexor con la combinación de las variables de entrada y en la salida se tendrá
el bit correspondiente, que está almacenado en uno de los latchs del registro.
Decodificador Registro
Multiplexor
4 a 16 16 bits
D 16 a 1

a, b, c, d f(a, b, c, d)

clk

Figura 7.41. Celda basada en Tabla de búsqueda.

Un módulo básico conecta dos o tres tablas de búsqueda con multiplexores y flip-flops.

Figura 7.42. Bloque lógico configurable xilinx.

Ejemplo 7.8.
Diseñar la función de cuatro variables, empleando LUT:
f ( x1 , x2 , x3 , x4 ) x2 x3 x1 x2 x3 x2 x3 x4 x1 x2 x4

Si se dispone de una tabla de búsqueda de 4 variables solo es necesario almacenar la tabla de


verdad de la función.

Profesor Leopoldo Silva Bijit 19-01-2010


32 Sistemas Digitales
Si el bloque constructivo es una LUT de 3 variables, puede expandirse la función en torno a la
variable x1 , empleando el teorema de Shannon; de esta manera quedan dos funciones cofactores
que dependen de tres variables, las cuales pueden ser directamente mapeadas en LUTs de 3.

f ( x1 , x2 , x3 , x4 ) x1 f x1 x1 f x1
f x1 f (0, x2 , x3 , x4 ) x2 x3 x2 x3 x2 x3 x4 x2 x3 x2 x3
f x1 f (1, x2 , x3 , x4 ) x2 x3 x2 x3 x4 x2 x4
En la Figura 7.43 se muestra que, en este caso, la función cofactor f x , depende de dos variables.
1
x1

0 Lut 3 Lut 3 f
x2
x3 f x1

Lut 3

x4 f x1

Figura 7.43. Implementación en LUTs de 3 variables.

Etapas o fases de diseño.


Trabajando con este tipo de componentes es preciso crear un proyecto e ingresar el diseño, ya
sea usando diagramas esquemáticos o empleando un lenguaje de alto nivel como VHDL o
Verilog. Esta etapa se denomina de codificación RTL, y consiste en la descripción estructural o
de la conducta de un diseño.

Luego viene una fase de compilación y simulación funcional del diseño, en la que pueden
corregirse errores. Puede verificarse el diseño lógico y el flujo de los datos.

A continuación se realiza la síntesis, que traslada el diseño a compuertas básicas, minimizando


las ecuaciones.

Posteriormente se efectúa el mapeo tecnológico que implementa las ecuaciones con los
elementos lógicos disponibles. En esta fase además de especificar las localizaciones que se
emplearán también se efectúa los enrutamientos y conexiones entre los bloques lógicos (Place
and route).

A continuación se efectúan simulaciones temporales considerando las compuertas y niveles del


diseño.
Finalmente se genera un archivo binario de programación, el cual se graba en el dispositivo.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 7. Sistemas Combinacionales 33
7.6.11. ASIC.

En algunas herramientas CAD, una vez verificado un diseño basado en FPGA y evaluado
experimentalmente, puede migrarse el diseño a dispositivos ASIC; en los cuales se eliminan
todos los circuitos de configuración y programación, de esta forma se puede diseñar un circuito
integrado que opere a mayor velocidad y que consuma menos energía que el diseño basado en
FPGA.

Por su menor costo de fabricación en elevados volúmenes y tener un comportamiento más


rápido que los dispositivos programables, se suelen emplear dispositivos ASIC (Application
Specific Integrated Circuit) cuando se tenga una producción en gran escala.

Profesor Leopoldo Silva Bijit 19-01-2010


34 Sistemas Digitales

Problemas resueltos.

Problema 7.1. Expansión. Conexión cascada.

Un mux puede expandirse, si es combinado con otra componente del mismo tipo. Por ejemplo,
puede formarse un MUX de 8 hacia 1, mediante dos MUX de 4 a 1 y uno de 2 vías a una.

I0 Mux 8:1
I1 4:1
I2 mux
I3 2:1
mux f
I4
I5 4:1
I6 mux
I7

C1 C0 C2

Figura P7.1. Conexión cascada de multiplexores.

En forma alternativa se muestra un mux de 8 vías a una, implementado con cuatro mux de 2
vías a una, y un mux de 4 vías a una. Ambos diseños difieren en el número de entradas.

I0 mux 2:1 Mux 8:1


I1
I2 mux 2:1
I3
4:1 f
I4 mux 2:1 mux
I5
I6 mux 2:1
I7

C0 C2 C1

Figura P7.2. Conexión cascada de multiplexores.

Problema 7.2. Realización de funciones booleanas, mediante mux.

Mediante un multiplexor, pueden implementarse funciones lógicas. Consideremos el mux de 4


a 1, con enable =1, resulta:
f (c1, c0) = x3 c1c0 + x2 c1c0' + x1 c1'c0 + x0 c1'c0'

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 7. Sistemas Combinacionales 35
La expresión anterior muestra que, con un mux de 4 a 1, pueden implementarse todas las
funciones booleanas de 2 variables. Para ello, basta hacer '1' ó '0' las entradas xi, de acuerdo a
los mintérminos de la función que se desee implementar.

Con un mux de 8 vías a 1, pueden obtenerse las 256 funciones booleanas de 3 variables,
programando las entradas del mux con unos o ceros.

Si en las entradas de control del mux se aplican todas las variables de entrada menos una; y si se
aplican en las entradas del mux: la variable de entrada restante o su complemento o unos y
ceros, puede verse que con un mux de 4 vías a 1, pueden implementarse funciones booleanas de
3 variables, como se estudiará en el siguiente ejemplo.

Problema 7.3. Diseño de lógica combinacional empleando mux.

Programar un mux de 4 a 1 para implementar una función de tres variables:

f(x, y, z) = x'y'z + yz' +xz' + xy

Los mintérminos de f pueden dibujarse en un mapa:


xy
z 00 01 11 10
0 x1 2 x3 6 x2 4
x0
0 1 1 1
1 3 7 5
1 1 1

f(x, y, z)=xy x3 + xy' x2 + x'y x1 + x'y' x0

Figura P7.3. Diseño empleando mux.

Asumiendo la señal enable en 1, y eligiendo x como la señal de control más significativa y la


señal y como la línea de control menos significativa, la ecuación del mux muestra cómo es
posible seleccionar los mintérminos de la función.

Por ejemplo, cuando y = 0 y x = 0:


si la entrada x0 se alimenta con el valor 1 lógico, se tendrán los mintérminos 0 y 1
presentes en la función;
si x0 se conecta a tierra, los mintérminos 0 y 1 no estarán presentes en la ecuación de la
función;
si la entrada x0 se alimenta con la señal z, f tendrá sólo el mintérmino 1;
si la entrada x0 se alimenta con la señal z', se tendrá, presente en f, el mintérmino 0;

Puede verse, en forma similar, que la señal x3 controla la presencia de los mintérminos 6 y 7 en
la función. Entonces se programa el multiplexor mediante: x3 = 1; x2 = z'; x1 = z'; x0 = z.

Profesor Leopoldo Silva Bijit 19-01-2010


36 Sistemas Digitales
En el mapa se han marcado los grupos de mintérminos con los números de las señales de datos
del mux.

El diseño anterior puede resumirse según:


y 0
x 1
1 E f
z 0 Mux
z' 1 4 a 1
z' 2
1 3

Figura P7.4 Esquema del diseño en base a mux.

Nótese que la variable z se introduce en las entradas de datos del mux, y las variables x, e y
como entradas de control.

Con un diseño tradicional SSI se necesitan 2 pastillas: Cuatro compuertas NAND de fan-in 2, y
una compuerta OR de fan-in 4; el mux de 4 vías a una viene integrado en una sola pastilla.

Otra implementación para: f = x'y'z + yz' +xz' + xy es considerar la señal enable en 1, y


eligiendo z como la señal de control más significativa y la señal x como la línea de control
menos significativa. La ecuación del mux resulta, en estas variables:

f(z, x, y) = zx x3 + zx' x2 + z'x x1 + z'x' x0.

Si se dibuja un mapa, y se marcan los mintérminos presentes de f, se logra:


zx
y 00 01 11 10 x 0
0 2 6 4 z
0 1 1 1
1 E f
y 0 Mux
1 3 7 5
1 1 1 1 1 4 a 1
1 y' 2
y 3
f(z, x, y)=zx x3 + zx' x2 + z'x x1 + z'x' x0

Figura P7.5. Otra implementación en base a mux.

Generalizando un mux de 8 vías a una, permite implementar todas las funciones de 4 variables.
Basta elegir tres variables como entradas de control, y la cuarta se emplea en las entradas de
datos.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 7. Sistemas Combinacionales 37
Problema 7.4. Diseño empleando mux de 8:1

El mapa de 4 variables, de la Figura P7.6 define los unos de la función f.


A
I0 I2 I6 I4
1 0 1 1

1 0 0 0
D
I1 I3 I7 I5
1 1 0 1
C

0 1 1 0
B

Figura P7.6. Grupos en en mapa de f.

La ecuación de un mux 8 a 1, es la siguiente:

f=c2c1c0I7+c2c1c0'I6+c2c1'c0 I5+c2c1'c0'I4+c2'c1c0I3+c2'c1c0' I2+c2'c1'c0 I1+c2'c1'c0' I0

Empleando A, B y C como entradas de control (A la más significativa), se obtiene:

f = ABC I7+ ABC' I6 + AB'C I5 + AB'C' I4 + A'BC I3 +A'BC' I2 + A'B'C I1 + A'B'C' I0

Luego se identifican las funciones de D, como entradas de datos. En el mapa se identifican pares
de mintérminos asociados a un determinado valor de las entradas de control.

La Figura P7.7 resume el diseño:

1 0
D 1
0 2
1 3
D' 4 8:1 MUX
D 5
D' 6
D' 7
C2 C1 C0

A B C

Figura P7.7. Diseño empleando multiplexor de 8 vías a una.

Profesor Leopoldo Silva Bijit 19-01-2010


38 Sistemas Digitales
Problema 7.5. Mal uso de muxs

No siempre es conveniente diseñar con un mux. Por ejemplo, para la función de siete variables:
f x1 x2 x3 x4 x5 x6 x7
Se requiere un mux de 128 vías a 1, o bien uno de 64 vías a una. También pueden emplearse 3
mux de 4 vías a 1, como se muestra en el siguiente ejemplo.

X2 0 X4 0 X6 0
X3 1 X5 1 X7 1
E Mux E Mux E Mux
X1 0 4a1 0 0 4a1 0 0 4a1 f
1 1 1
2 2 2
0 3 0 3 0 3

f3 = X1 * X2 * X3 f2 = f3 * X4 * X5 f1 = f2 * X6 * X7

Figura P7.8. Diseño con exceso de muxs.

Con las señales enable (E) en uno.


La programación de los mux es por el alambrado (hardwired).

Nótese que en cada mux se utiliza solamente un mintérmino. Esto implica una mala utilización
de las capacidades de cada mux. Un diseño SSI, mucho más simple, conveniente y directo es:

X1
X2’
X3’
X4 f
X5’
X6
X7’

Figura P7.9. Diseño empleando compuertas en lugar de muxes.

En este caso se requiere sólo una pastilla, ya que se dispone comercialmente de un NAND de 8
entradas. En la implementación se conecta una de las entradas a Vcc, para disponer de un
NAND de 7 entradas.

Problema 7.6. Diseño multifunción con decodificador.

Se desea diseñar las siguientes tres funciones de cuatro variables (diseño multifunción),
empleando un decodificador 4: 16.
f1 = A' B' C D +A' B C' D + A B C D
f2 = A B C' D’ + A B C
f3 = (A' + B' + C' + D')

Se descomponen las funciones en suma de mintérminos, y luego se suman. El caso de f3, se


resuelve por De Morgan según: f3' = ABCD

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 7. Sistemas Combinacionales 39

0 A'B'C'D'
1 A'B'C'D
2 A'B'CD' f1
3 A'B'CD
4 A'BC'D'
5 A'BC'D
6 A'BCD'
4:16 7 A'BCD
Enable = 1
DEC 8 AB'C'D' f2
9 AB'C'D
10 AB'CD'
11 AB'CD
12 ABC'D'
13 ABC'D
14 ABCD'
15 ABCD f3

A B C D

Figura P7.10. Diseño combinacional empleando decodificadores.

Problema 7.7. Diseño con decodificadores en base a mintérminos.

En la figura P7.11, se tiene un decodificador de 5:32, implementado en base a cuatro


decodificadores 3: 8 y un decodificador de 2: 4. Con este decodificador es posible diseñar todos
los mintérminos para funciones de cinco variables.

El primer decodificador genera, con E = 1, los grupos: AB, AB', A'B, A'B'.
Cada uno de los decodificadores 3:8, generan los ocho productos de la línea de entrada, con los
mintérminos de las variables CDE.

Profesor Leopoldo Silva Bijit 19-01-2010


40 Sistemas Digitales

A’B’C’D’E’

0 0
1 1
2 2 AB’C’DE’
3 3
4 4
5 5
6 6
012 7 012 7

0
E=1 1 CDE
CDE
2
01 3
0 0 AB’C’D’E’
1 1
AB
2 2
3 3
4 4
5 5
6 6
012 7 012 7 AB’CDE
ABCDE
CDE CDE

Figura P7.11. Diseño combinacional empleando decodificadores 3:8.

Problema 7.8. If then else anidados.

Un programador ha diseñado el siguiente diagrama de flujo, donde C1, C2 y C3 son condiciones


y a, b, y c son grupos de acciones.

V F
C1

V F V F
C2 C3

a b a c

Figura P7.12. Diagrama de flujo Problema 7.8.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 7. Sistemas Combinacionales 41
a) Determinar un nuevo diagrama de flujo, en el cual el grupo de acciones, denominado a, esté
presente sólo una vez. Las condiciones del nuevo diagrama deben formularse en términos de
C1, C2 y C3. Indicar soluciones alternativas si existen varias.

b) Si analizando las variables, antes del ingresar al diagrama que se muestra, se conoce que la
acción c nunca se realizará, determinar las condiciones para que se realicen las acciones a y b.

Solución.
a) Del diagrama se obtienen:
La acción a se realiza cuando la condición: C1C2 + C1’ C3 es verdadera.
La acción b se realiza cuando la condición: C1C2’ es verdadera.
La acción c se realiza cuando la condición: C1’C3’ es verdadera.

Existen seis soluciones, en las cuales cada acción está presente una vez:

V F V F
C3 C5 V F
C7

a V F b V F
C4 C6 c V F
C8

b c a c a b

Diagrama 1. Diagrama 2. Diagrama 3.

Figura P7.13. Soluciones 1, 2 y 3.

C3 = C1C2 + C1’ C3 C4 = C1 C2’


C5 = C1 C2’ C6 = C1C2 + C1’ C3
C7 = C1’ C3’ C8 = C1C2 + C1’ C3

V F V F
V F C11 C13
C9

V F c V F
a V F b C12 C14
C10

c b a
c b a

Diagrama 4. Diagrama 5. Diagrama 6.

Figura P7.14. Soluciones 4, 5 y 6.

Profesor Leopoldo Silva Bijit 19-01-2010


42 Sistemas Digitales
C9 = C1C2 + C1’ C3 C10 = C1’ C3’
C11 = C1 C2’ C12 = C1’ C3’
C13 = C1’ C3’ C14 = C1 C2’

Las condiciones más simples, de plantear, corresponden a los diagramas 5 y 6.


El código en C, para el diagrama 6 es:

if ( !C1 && !C3) { c;}


else
if(C1 && !C2) {b;} else {a;}

El siguiente mapa ilustra las condiciones para realizar las tres acciones: a, b y c, que son
mutuamente excluyentes, ya que cubren todo el mapa.
C1C2
C3 AB 00 01 11 10
0 2 6 4
0 1 1 1 1
1 3 7 5
1 1 1 1 1

a: C1C2 + C1’ C3
b: C1C2’
c: C1’C3’

Figura P7.15. Condiciones para realización de a, b o c.

b) Si la acción c nunca se realiza, los mintérminos 0 y 2, se tratan como condiciones superfluas.


En este caso la condición para la realización de la acción a, se simplifica a: C1’+C2. La
condición para la realización de la acción b es: C1C2’, que resulta ser la negación de la anterior.

C1C2
C3 00 01 11 10 V
C1’+C2
F
0 2 6 4
0 d d 1 1

1 3 7 5 a b
1 1 1 1 1

a: C1’ + C2
b: C1C2’

Figura P7.16. Condiciones para realización de a, b.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 7. Sistemas Combinacionales 43
if(!C1 || C2) {a;} else {b;}

o bien:

if(C1 && !C2) {b;} else {a;}

Si el grupo de acciones alternativas que deben realizarse, están condicionadas por un reducido
número de mintérminos es conveniente emplear la sentencia switch, en lugar de sentencias
anidadas if-then-else.

Problema 7.9. Diseño con PROM.

Se tiene una PROM de 32*8[bits], como se muestra en el esquema del circuito U1. Se entrega el
mapa de memoria, tanto la dirección como el contenido se entregan en hexadecimal.

Dirección Contenido Dirección Contenido


00 F3 10 00 U1
01 15 11 65 PROM32
d CS
02 D4 12 88 c O7 f3
b O6
03 59 13 77 O5 f2
a A4 O4 f1
04 46 14 91 A3 O3
A2 O2 f0
05 6B 15 8D A1 O1
A0 O0
06 01 16 F9
07 C2 17 55
08 33 18 48 Esquemático
09 44 19 DD
0A 57 1A 64
0B 0F 1B 13
0C 15 1C 66
0D 9C 1D 88
0E 23 1E 80
0F 27 1F 22

Figura P7.17. Mapa de Memoria.

a) Dibujar el Mapa de Karnaugh para f2(a, b, c, d).


b) Determinar implicantes primos esenciales para f2.
c) Obtener la función mínima que permita una implementación de menor costo en base a
compuertas para f2.

Solución.
Según el esquemático, A0 y O0 son los bits menos significativos de la dirección y el contenido
respectivamente.

Profesor Leopoldo Silva Bijit 19-01-2010


44 Sistemas Digitales
Se dibuja una tabla de verdad, con las direcciones pares de la memoria, identificando las
posiciones de las variables a, b, c y d.

Se agrega en la tabla la columna H, que es la cifra hexadecimal menos significativa del


contenido, y se expresa en binario en la cuarta columna, representando los bits de f3 f2 f1 f0.
Entonces la tabla de verdad de f2 corresponde al bit en la tercera posición, lo cual se agrega
como última columna de la tabla.

Se dibuja un mapa para f2. Como el orden de las variables es (a, b, c, d) resultan los siguientes
mintérminos para f2: 4, 6, 7, 8, 10, 11.

Dirección dcba H binario f2


0 0000 3 0011 0 ab
cd 00 01 11 10
2 0001 4 0100 1
4 0010 6 0110 1 0 4 12 8
00 0 1 0 1
6 0011 1 0001 0
8 0100 3 0011 0 1 5 13 9
A 0101 7 0111 1 01 0 0 0 0
C 0110 5 0101 1
E 0111 3 0011 0 3 7 15 11
10 1000 0 0000 0 11 0 1 0 1
12 1001 8 1000 0
14 1010 1 0001 0 2 6 14 10
16 1011 9 1001 0 10 0 1 0 1
18 1100 8 1000 0
1a 1101 4 0100 1
1c 1110 6 0110 1 f2(a, b, c, d) = a’bd’ + a’bc+ ab’d’ + ab’c
1e 1111 0 0000 0

Figura P7.18. Mapa de f2.

b) Según el mapa:
a’bd’ es implicante primo esencial ya que es el único que contiene al mintérmino 4.
a’bc es implicante primo esencial ya que es el único que contiene al mintérmino 7.
ab’d’ es implicante primo esencial ya que es el único que contiene al mintérmino 8.
ab’c es implicante primo esencial ya que es el único que contiene al mintérmino 11.

c) El diseño como suma de productos es: f(a, b, c, d) = a’bd’ + a’bc + ab’d’ + ab’c
Y tiene un costo de 16 entradas (12 literales).

El diseño como producto de sumas es, se obtiene agrupando los ceros de f2.
Se obtiene: f(a, b, c, d) = (a +b)(a’ + b’)(c + d’), la cual tiene un costo de 9 entradas (6
literales), éste es el diseño mínimo.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 7. Sistemas Combinacionales 45
Problema 7.10. Diseño con multiplexor.

Se ha diseñado la función f, empleando un multiplexor de 8 vías a una, cuyo esquema se


muestra en la Figura P7.19 izquierda.
La siguiente tabla muestra las conexiones de las variables y constantes a las señales del
multiplexor:
Señales Variables
C2 a
I0
C1 b
I1
Mux C0 c
I2
I3 8:1 I0 d
I4 f I1 d’
I5 I2 ad
I6 8:1 I3 b’d’
I7 mu I4 0
I5 cd
x I6 c’
C2C1C0 I7 1

Figura P7.19. Mux Problema 7.10.

a) Determinar el mapa de Karnaugh para f.


b) Determinar implicantes primos esenciales de f(a, b, c, d).
c) Expresión lógica mínima para f como producto de sumas.

Solución:
a) Se tiene la siguiente ecuación para el multiplexor:
f = c2c1c0 I7+ c2c1c0' I6 + c2c1'c0 I5 + c2c1'c0' I4 + c2'c1c0 I3 + c2'c1c0' I2 + c2'c1'c0 I1
+c2'c1'c0' I0

Reemplazando las señales por las variables y constantes de la tabla, resulta:


f = abc1+ abc’ c’ + ab’c dc + ab’c’ 0 + a’bc b’d’ + a’bc’ ad + a’b’c d’ + a’b’c’ d

Simplificando, se logra:
f = abc + abc’ + ab’cd + a’b’c d’ + a’b’c’d

Puede dibujarse el mapa, y minimizando, se obtiene:


f(a, b, c, d) = ab + acd + a’b’c’d + a’b’cd

Profesor Leopoldo Silva Bijit 19-01-2010


46 Sistemas Digitales

ab
cd 00 01 11 10
0 4 12 8
00 0 0 1 0
1 5 13 9
01 1 0 1 0
3 7 15 11
11 0 0 1 1
2 6 14 10
10 1 0 1 0

f(a, b, c, d) = ab + acd + a’b’c’d + a’b’cd’

Figura P7.20. Minimización Problema 7.10.

b) Se construye la tabla de implicantes:

1 2 11 12 13 14 15
ab x x x x
acd x x
a’b’c’d x x
a’b’cd’ x x

Figura P7.21. Tabla implicantes Problema 7.10.

Se tiene que el implicante ab es el mayor y único grupo que contiene a los mintérminos: 12, 13,
y 14, por lo tanto es esencial.
El implicante acd es el único que contiene al mintérmino 11, por lo tanto es esencial.
Los mintérminos 1 y 2 no pueden agruparse y por lo tanto son implicantes primos esenciales.
La función mínima debe contener a los cuatros implicantes primos esenciales. Lo cual justifica
el diseño de la parte a).

c) Para lograr la expresión lógica mínima para f como producto de sumas, debe agruparse los
ceros de la función f (o los unos de la función f ’, y luego complementar).

Para la tabla de implicantes de f ’ se tiene que:


a’b es implicante primo esencial(único grupo que contiene a los mintérminos 5 y 6);
a’cd es implicante primo esencial(único grupo que contiene al mintérmino 3);
ab’c’ es implicante primo esencial(único grupo que contiene al mintérmino 9);
ab’d’ es implicante primo esencial(único grupo que contiene al mintérmino 10);

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 7. Sistemas Combinacionales 47
Los implicantes primos b’c’d’ y a’c’d’ no son esenciales. Como en f’, deben estar presentes los
implicantes primos esenciales, la tabla muestra que sólo resta cubrir al mintérmino 0; lo cual
puede lograrse con el implicante primo b’c’d’ o a’c’d’. Resultan las funciones f1’ y f2’ que se
ilustran en el mapa.
ab
cd 00 01 11 10
0 4 12 8
00 1 1 0 1
0 3 4 5 6 7 8 9 10
1 5 13 9 a’b x x x x
01 0 1 0 1 a’cd x x
ab’c’ x x
3 7 15 11 ab’d’ x x
11 1 1 0 0 b’c’d’ x x
a’c’d’ x x
2 6 14 10
10 0 1 0 1

f1’(a, b, c, d) = a’b+a’cd+ab’c’+ab’d’+b’c’d’

f2’(a, b, c, d) = a’b+a’cd+ab’c’+ab’d’+a’c’d’

Figura P7.22. Mapa y Tabla implicantes producto de sumas.

Finalmente, complementando f1’ y f2’ (y aplicando De Morgan) se obtienen las dos


soluciones mínimas como producto de sumas:

f1(a, b, c, d) = (a + b’)(a + c’ + d’)(a’ +b + c)(a’ + b +d)(b + c + d)


f2(a, b, c, d) = (a + b’)(a + c’ + d’)(a’ +b + c)(a’ + b +d)(a + c + d)

Ambas de 14 literales y de 19 entradas.

Problema 7.11. Multiplexor

Programar las entradas I7 a I0 del multiplexor para tener en la salida:

f(a, b, c, d) = m(1, 3, 10, 11, 12, 15) + d( 5, 7, 13)

Profesor Leopoldo Silva Bijit 19-01-2010


48 Sistemas Digitales

I0
I1
I2 Mux
I3 8:1
f = c2c1c0 I7+ c2c1c0' I6 + c2c1'c0 I5 + c2c1'c0' I4 + c2'c1c0 I3 +
I4 c2'c1c0' I2 + c2'c1'c0 I1 + c2'c1'c0' I0
I5 8:1
I6
I7 mu
x
C2C1C0

a b c
Figura P7.23. Mux Problema 7.11.

Indicar las diferentes soluciones, dependiendo de la elección del valor dado a las condiciones
superfluas.

Solución:
En la ecuación del multiplexor, reemplazando C2, C1 y C0 por a, b y c respectivamente, se
tiene:
f = abc I7+abc’I6+ab’c I5+ab’c’ I4+a’bcI3+a’bc’ I2+a’b’c I1+a’b’c’ I0

Para cada una de las entradas Ii podemos aplicar d, d’, 0 ó 1. Cada entrada permite incorporar
distintas combinaciones de dos mintérminos (uno o el otro, o ambos o ninguno).

Ubicando los mintérminos y las condiciones superfluas en un mapa de cuatro variables, donde
a, b y c, se han hecho equivalentes a C2, C1 y C0 respectivamente, se tiene:

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 7. Sistemas Combinacionales 49

C2C1
I2 I6
ab
C0v
cd 00 01 11 10
0 4 12 8
00 0 0 1 0 I4
I0
1 5 13 9
01 1 0
3 7 15 11
11 1 1 1
I5
I1
2 6 14 10
10 0 0 0 1

I3 I7
f(a, b, c, d)= m(1, 3, 10, 11, 12, 15)+ d( 5, 7, 13)
Figura P7.24. Mapa Problema 7.11.

Si consideramos como ejemplo el término: T = a’b’c’ I0


Con I0=d se tendrá T = a’b’c’d (m1). Con I0=d’ se tendrá T = a’b’c’d’ (m0).
Con I0=1, se tendrá T=a’b’c’ (m0 +m1). Con I0=0, no estarán presentes m0 ni m1, o dicho de
otra forma se aseguran los maxtérminos M0 y M1.

Deben escogerse: I0 = d, I1 = d, I4 = 0, I5 = 1, I7 = d
Si d5 se escoge 0, entonces I2=0. Si d5 se escoge 1, entonces I2=d.
Si d7 se escoge 0, entonces I3=0. Si d7 se escoge 1, entonces I3=d.
Si d13 se escoge 0, entonces I6=d’. Si d13 se escoge 1, entonces I6=1.

Problema 7.12. Mux 74151

Se tiene los siguientes datos para un multiplexor 74151.


8-to-1 line data selector/multiplexer with complementary outputs.

C B A EN Y +---+--+---+
X X X H L D3 |1 +--+ 16| VCC
L L L L D0 D2 |2 15| D4
L L H L D1 D1 |3 14| D5
L H L L D2 D0 |4 74 13| D6
L H H L D3 Y |5 151 12| D7
H L L L D4 /Y |6 11| A
H L H L D5 /EN |7 10| B
H H L L D6 GND |8 9| C
H H H L D7 +----------+

Profesor Leopoldo Silva Bijit 19-01-2010


50 Sistemas Digitales

a) Explicar brevemente el funcionamiento del multiplexor.


b) Diseñar la función f(w,x,y,z)=x(y'+w) +w'(y'+x'z') empleando un 74151.
Escoger x = A, y = B, z = C.
c) Se tiene un contador 74LS93 conectado al multiplexor 74LS151.
¿Qué relación existe entre los nombres de las señales de los pines del esquemático del 74LS151
y los de la hoja de datos?

Dibujar las formas de ondas en TP1 y TP2. Asumir para el dibujo que los circuitos no tienen
retardos de propagación. Indicar función que realiza el sistema.
V3
0V

TP2
V1
CP1 Q1 U1
CP2 Q2 74LS93
MR1 Q3
MR2 Q2 V2
CP0 Q1 0V
CP1 Q0

U3 TP1
74LS151
I7 E
I6 S2
I5 S1
I4 S0
I3
I2
I1 Y
I0 YN

Figura P7.25. Conexiones Problema 7.12.

Solución.
a) Con EN' (enable) alto se tiene la salida Y en bajo. Es decir con EN' = 0 se habilitan la salida
del mux.
En el manual TTL de TEXAS, la señal EN´se denomina S (strobe). Con S = 0 se habilita el
mux.

Con i = 22 C + 21 B + A se tiene Y = Di ( i = 0 ..7) La entrada de control C es la más


significativa.

Es decir:
Y =( D0 C'B'A' +D1 C'B'A+D2 C'BA'+D3 C'BA+D4 CB'A'+D5 CB'A+D6 CBA'+D7 CBA) S'

b) Se desea diseñar f(w,A,B,C) = B'A + wA + w'B' + w'C'A'

Si se dibuja un mapa de 4 variables con la función pedida, se tiene:

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 7. Sistemas Combinacionales 51

w/CBA 000 001 011 010 110 111 101 100


0 1 1 0 1 0 0 1 1
1 0 1 1 0 0 1 1 0
D0 = w' D1 = 1 D3= w D2 = w' D6 = 0 D7 = w D5 = 1 D4 = w'

En el mapa se empleó código Gray, y se tiene que cada columna corresponde a una
combinación de las señales de control del mux que activan una línea de datos de entrada. Para
generar dicho mapa con el mux se deben efectuar las conexiones indicadas, es decir: en D0 se
conecta la entrada w', en D1 se efectúa conexión a Vcc, etc.

Otra solución es expandir la función


f(w,A,B,C) = (C'B'A+CB'A)+(wB'A+wBA)+(w'C'B'+w'CB')+(w'C'B'A'+w'C'BA') y luego
volver a expandir

f(w,A,B,C)=(C'B'A+CB'A)+(wC'B'A+wCB'A+wC'BA+wCBA)+(w'C'B'A'+ w'C'B'A+w'CB'A'+
w'CB'A)+(w'C'B'A'+w'C'BA')

y ordenando, queda:
f(w,A,B,C) = w'C'B'A'+ w'C'B'A'+ w'C'B'A+ wC'B'A+ C'B'A+w'C'BA'+ wC'BA+w'CB'A'+
w'CB'A+ wCB'A+CB'A+ wCBA

Eliminando términos redundantes:


f(w,A,B,C) = w'C'B'A' + C'B'A+w'C'BA'+ wC'BA+w'CB'A'+ CB'A+ wCBA

Agregando algunos términos:


f(w,A,B,C) = w'C'B'A' + 1C'B'A+w'C'BA'+ wC'BA+w'CB'A'+ 1CB'A+0CBA'+ wCBA

Comparando con la ecuación del mux vista en 1, se logra identificar las funciones asociadas a
los Di.

c) El contador genera la secuencia de valores 000, 001, 010, 011, 100, 101, 110, 111 que se
aplican a las entradas de control del mux (es un contador módulo 8 en binario). Cuando se
aplica en S0, S1 y S2 los valores 000, el mux saca en la salida Y el valor que esté conectado a
I0, que en el ejemplo es 0; luego saca I1 y así sucesivamente hasta sacar I7; y luego, la
secuencia se repite.

Resumen: Genera la secuencia sincrónica de niveles: 01010001.

Se muestran las formas de ondas obtenidas con un simulador, la forma de onda TP1 muestra un
retardo de propagación relativa al canto de bajada de TP2; este retardo contempla el del
contador y del circuito combinacional del mux (se ilustra en el diagrama). Se ha destacado un
ciclo completo de la salida.

Profesor Leopoldo Silva Bijit 19-01-2010


52 Sistemas Digitales

retardo

0 20 40 60 80 100 120 140 160 180


TP2

TP1

0 1 0 1 0 0 0 1
D0 D1 D2 D3 D4 D5 D6 D7

Figura P7.26. Formas de ondas. Problema 7.12.

Problema 7.13. Mux 8 a 1.

Determinar los valores con que deben programarse las entradas del mux para tener en la salida
la función f.
I7 1
I0 I6 0
I1
I5 1
I2 Mux
8:1 I4 0
I3
f (a, b, c, d) = ac + a’d’ I3 d’
I4
I5 I2 d’
I6 8:1 I1 d’
I7 C2mu
C1 C0 I0 d’
Solución.
x
a b c
Figura P7.27. Mux Problema 7.13.

Solución:
Se tiene:
f=c2c1c0 I7+c2c1c0' I6+c2c1'c0 I5+c2c1'c0' I4+c2'c1c0 I3+c2'c1c0' I2+c2'c1'c0 I1+c2'c1'c0' I0
Si se conectan las variables de entrada: a, b y c, según se indica en el diagrama, se tiene:
f = abc I7+ abc’ I6+ ab’c I5+ ab’c’ I4+ a’bcI3+ a’bc’ I2+ a’b’c I1+ a’b’c’ I0
Por otra parte pueden escribirse:
ac = abc + ab’c
a’d’= a’bd’+a’b’d’= a’bcd’+a’bc’d’+ a’b’cd’+a’b’c’d’
Es decir:
f (a, b, c, d) = ac + a’d’= abc + ab’c + a’bcd’ + a’bc’d’ + a’b’cd’ + a’b’c’d’
Comparando coeficientes, resultan:
I7 = 1; I6 = 0; I5 = 1; I4 = 0; I3 = d’; I2 = d’; I1 = d’; I0= d’

Solución mediante mapas:

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 7. Sistemas Combinacionales 53

ab
cd 00 01 11 10
0 0 2 4 6 12 4 8 f (a, b, c, d) = m( 0, 2, 4, 6, 10, 11, 14, 15)
00 1 1
1 5 13 9 Se identifican los pares de mintérminos
01 controlados por las entradas al multiplexor.

1 3 3 7 7 15 5 11 Luego se obtienen los valores de las


11 1 1 entradas al multiplexor, en función de la
variable d.
2 6 14 10
10 1 1 1 1

f(a, b, c, d)
Figura P7.28 Mapa Problema 7.13.

Problema 7.14. Programa en EPROM

Determinar el contenido de la EPROM, que implementa las funciones combinacionales: f0, f1, y
f2, en función de las entradas a, b, c, d.

Add0 a
Add1 b
Add2 c EPROM D0 = f0(a, b, c, d) = ac + a’d’
Add3 d
Add4 D1 = f1(a, b, c, d) = m( 0, 2, 14 ) + d(13 )
Add5
8:1 D2 = f2(a, b, c, d) = M(0, 2, 4, 12)
Add6
Add7 mu D3

x
Figura P7.29 EPROM Problema 7.14.

Mostrar el contenido de la EEPROM según un mapa de direcciones versus contenidos.


Cómo deben conectarse las líneas de dirección que no se empleen. Valores que deben grabarse
en D3.

Solución:
En una memoria sólo se pueden escribir unos o ceros.
Como no existe función asociada a la línea de datos D3, esta columna debe llenarse con
cualquier secuencia de unos o ceros.

Para el caso del diseño de la función f1:

Profesor Leopoldo Silva Bijit 19-01-2010


54 Sistemas Digitales
Puede escogerse que el mintérmino 13 esté presente en el conjunto on. Es decir se elige como 1
de la función. En este caso, la función resulta:
f1(a, b, c, d) = m( 0, 2, 14 ) + d(13 ) = a’b’c’d’ + a’b’cd’ + abcd’ +abc’d
En caso de escoger el término superfluo como cero, se tendrá:
f1(a, b, c, d) = a’b’c’d’ + a’b’cd’ + abcd’

La función f2 establece los ceros de D2. También puede escribirse en función de los unos de f2,
según: f2(a, b, c, d) = m( 1, 3, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15)

Obtenidas las funciones deben escribirse las columnas de datos de la EPROM. Puede
considerarse que cada dirección está asociada a un mintérmino; el número del mintérmino
depende del ordenamiento dado a la función. En el caso propuesto, el orden es a, b, c, d; es
decir, a es la variable más significativa para la numeración decimal de los mintérminos. Se ha
colocado el número del mintérmino asociado a la tabla de contenidos versus direcciones.
Las líneas de dirección que no se empleen(add4, add5, add6 y add7) deben ser conectadas a
tierra.

El siguiente es un mapa completo de la memoria.


# Add7 Add6 Add5 Add4 Add3 Add2 Add1 Add0 D3 D2 D1 D0
d c b a f2 f1 f0
0 0 0 0 0 0 0 0 0 1ó0 0 1 1
8 0 0 0 0 0 0 0 1 1ó0 1 0 0
4 0 0 0 0 0 0 1 0 1ó0 0 0 1
12 0 0 0 0 0 0 1 1 1ó0 0 0 0
2 0 0 0 0 0 1 0 0 1ó0 0 1 1
10 0 0 0 0 0 1 0 1 1ó0 1 0 1
6 0 0 0 0 0 1 1 0 1ó0 1 0 1
14 0 0 0 0 0 1 1 1 1ó0 1 1 1
1 0 0 0 0 1 0 0 0 1ó0 1 0 0
9 0 0 0 0 1 0 0 1 1ó0 1 0 0
5 0 0 0 0 1 0 1 0 1ó0 1 0 0
13 0 0 0 0 1 0 1 1 1ó0 1 1ó0 0
3 0 0 0 0 1 1 0 0 1ó0 1 0 0
11 0 0 0 0 1 1 0 1 1ó0 1 0 1
7 0 0 0 0 1 1 1 0 1ó0 1 0 0
15 0 0 0 0 1 1 1 1 1ó0 1 0 1

Figura P7.30 Mapa EPROM Problema 7.14.

Problema 7.15. Programar EPROM.

Se tiene una EPROM de 16 palabras de 4 bits cada una.


Se desea generar las siguientes funciones:
f0(a, b, c, d) = m( 2, 4 , 8, 15) + d( 3, 5)

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 7. Sistemas Combinacionales 55
f1(d, c, a, b) = m( 2, 4 , 8, 15) + d( 3, 5)
f2(a, b, c, d) = M( 2, 4 , 8, 15) D( 3, 5)
b Add0 D0 f1
f3 = f0 + f1
d Add1 D1 f2
a Add2 D2 f0
c Add3 D3 f3

Figura P7.31 Variables y direcciones EPROM Problema 7.15.

a) Determinar las funciones en términos de las variables de entrada.


b) Determinar el mapa de la EPROM con las asociaciones entre las variables de entrada y
las direcciones que se muestran en el diagrama; y con las funciones en las líneas de
datos que se muestran en el diagrama. La tabla debe estar ordenada por direcciones
ascendentes, y los contenidos el más significativo a la extrema derecha.

Solución:
Pueden dibujarse los mapas para f0 y f1.
ab dc
cd 00 01 11 10 ab 00 01 11 10
0 4 12 8 0 4 12 8
00 1 1 00 1 1

1 5 13 9 1 5 13 9
01 01

3 7 15 11 3 7 15 11
11 1 11 1
2 6 14 10 2 6 14 10
10 1 10 1

f0(a,b,c,d) = a’bc’ + a’b’c + ab’c’d’ + abcd f1(a,b,c,d) = ac’d’ + a’cd’ + a’b’c’d + abcd

Figura P7.32 Mapas f0 y f1 Problema 7.15.

Para f2:
f2 = f0’ = (a + b’ + c)(a +b +c’)(a’ + b + c + d)(a’ + b’ + c’ + d’)
f2 = a’b’c’ + c’d’ + abc’ + a’bc + bcd’ + ab’c

Profesor Leopoldo Silva Bijit 19-01-2010


56 Sistemas Digitales

ab
cd 00 01 11 10
0 4 12 8
00 1 1
1 5 13 9
01 1 1 1

3 7 15 11
11 1 1
2 6 14 10
10 1 1 1

f2(a,b,c,d) = c’d + a’b’c’ + ab’c + abd’ +a’bc

Figura P7.33 Mapas f2 Problema 7.15.

Finalmente f3, resulta:


f3 = f0 + f1 = a’b’cd’ + a’bc’d’ + ab’c’d’ + a’b’c’d + abcd

c a d b f3 f0 f2 f1
dirección add3 add2 add1 add0 D3 D2 D1 D0
0 0 0 0 0 0 0 1 0
1 0 0 0 1 1 1 0 0
2 0 0 1 0 1 0 1 1
3 0 0 1 1 0 0 1 0
4 0 1 0 0 1 1 0 1
5 0 1 0 1 0 0 1 0
6 0 1 1 0 0 0 1 0
7 0 1 1 1 0 0 1 0
8 1 0 0 0 1 1 0 1
9 1 0 0 1 0 0 1 0
10 1 0 1 0 0 0 1 0
11 1 0 1 1 0 0 1 0
12 1 1 0 0 0 0 1 0
13 1 1 0 1 0 0 1 0
14 1 1 1 0 0 0 1 0
15 1 1 1 1 1 1 0 1

Figura P7.34 Mapas EPROM Problema 7.15.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 7. Sistemas Combinacionales 57
Problema 7.16. Diseño con condiciones superfluas.

Se tiene que la función expresada como producto de sumas, considerando las condiciones
superfluas con valores iguales a uno es: f (a, b, c, d) = (a + c)(a’ + b + c + d)
Se tiene que la función mínima expresada como suma de productos, considerando las
condiciones superfluas con valores iguales a cero es: f (a, b, c, d) = abd + abc+ bcd + acd

a) Determinar los mintérminos superfluos para f.


b) Determinar el producto de sumas mínimo usando las condiciones superfluas.
c) Determinar la suma de productos mínima usando las condiciones superfluas.

Solución:
a) La primera proposición nos permite determinar los ceros de la función. La segunda determina
los unos de la función. Dibujando en un mapa, pueden encontrarse las condiciones superfluas de
f, como los mintérminos: 2, 3, 6, 9, 10, 12.

ab
cd 00 01 11 10
0 4 12 8
00 0 0 d 0
1 5 13 9
01 0 0 1 d
3 7 15 11
11 d 1 1 1
2 6 14 10
10 d d 1 d

f(a, b, c, d) = abd + abc+ bcd + acd con Cond. Superfluas iguales a 0


f(a, b, c, d) = (a + c)(a’ + b + c + d) con Cond. Superfluas iguales a 1
Figura P7.35 Mapas Problema 7.16.

b) Agrupando los unos de la función complementada y considerando las condiciones


superfluas, se obtienen los siguientes implicantes primos: a’c’, c’d’, b’c’, a’b’, b’d’.

0 1 4 5 8
a’c’ x x x x
c’d’ x x x
b’c’ x x x
a’b’ x x
b’d’ x x

Figura P7.36 Implicantes Problema 7.16.

Profesor Leopoldo Silva Bijit 19-01-2010


58 Sistemas Digitales
Confeccionando una tabla de implicantes (donde no se anotan los superfluos), se obtiene que
a’c’ es esencial. Entonces sólo resta cubrir el mintérmino 8; esto es posible de tres formas,
eligiendo: (c’d’), (b’c’) o (b’d’). Se tienen entonces:

f 1‘(a, b, c, d) = a’c’ +c’d’


f 2‘(a, b, c, d) = a’c’ +b’c’
f 3‘(a, b, c, d) = a’c’ +b’d’

Complementado y aplicando De Morgan, se obtienen las tres soluciones, de igual costo (6


entradas, 4 literales):
f 1(a, b, c, d) = (a + c)(c + d)
f 2(a, b, c, d) = (a + c)(b + c)
f 3(a, b, c, d) = (a + c)(b + d)

c) Agrupando los unos de la función y considerando las condiciones superfluas, se obtienen los
siguientes implicantes primos: c, ab, ad. Confeccionando una tabla de implicantes (donde no
se anotan los superfluos), se obtiene que c es implicante primo esencial. Sólo resta cubrir al
mintérmino 13, lo cual puede lograrse de dos formas; eligiendo (ab) o (ad). Se tienen entonces,
dos soluciones:

7 11 13 14 15
c x x x x
ab x x x
ad x x x

Figura P7.37 Implicantes Problema 7.16, parte c.

f 1(a, b, c, d) = c + ab
f 2(a, b, c, d) = c + ad

Ambas de igual costo (4 entradas, 3 literales).

El método de minimización empleado, está basado en:


obtener los implicantes primos (por inspección del mapa, o aplicando método de Quine
McCluskey);
luego se plantea la tabla de implicantes (se omiten las columnas asociadas a
mintérminos superfluos, si existieren), y mediante ella se determinan los implicantes
primos esenciales, que deben estar presentes en la función.
Luego se reduce la tabla y se determinan todas las soluciones posibles. Se elige la de
menor costo.

Problema 7.17. Diseño combinacional

Un sistema digital tiene cuatro entradas: a, b, c, d y una salida z, que debe colocarse alta cuando
se cumplan las siguientes condiciones:
i) Si la entrada, en binario, es múltiplo de 3 ó 7.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 7. Sistemas Combinacionales 59
Múltiplo está definido como el número que contiene a otro una o más veces exactamente.
Considere que a es el bit más significativo y que d es el menos significativo.
ii) Si se activa a, no debe activarse b.
iii) Si no se activa a, entonces debe activarse c o d o ambos.

a) Expresar la condición i) como suma de mintérminos.


b) Expresar la condición ii) como producto de maxtérminos.
c) Expresar la condición iii) mediante un mapa de Karnaugh.
d) Minimizar la función z.

Solución:
a) El cero no se considera, con la definición dada, como múltiplo de 3 ó 7.
Condición i) = m(3, 6, 7, 9, 12, 14, 15)
# a b c d i) ii) iii) z
0 0 0 0 0 0 1 0 0
1 0 0 0 1 0 1 1 0
2 0 0 1 0 0 1 1 0
3 0 0 1 1 1 1 1 1
4 0 1 0 0 0 1 0 0
5 0 1 0 1 0 1 1 0
6 0 1 1 0 1 1 1 1
7 0 1 1 1 1 1 1 1
8 1 0 0 0 0 1 1 0
9 1 0 0 1 1 1 1 1
10 1 0 1 0 0 1 1 0
11 1 0 1 1 0 1 1 0
12 1 1 0 0 1 0 1 0
13 1 1 0 1 0 0 1 0
14 1 1 1 0 1 0 1 0
15 1 1 1 1 1 0 1 0

Figura P7.38 Tablas de verdad. Problema 7.17.

b) Condición ii)
a b’ = a’+ b’
= (a’ +b’)(c + c’)
= (a’ +b’ + c’)(a’ +b’ + c)(d +d’)
= (a’ + b’ + c’ + d) (a’ + b’ + c’ + d’) (a’ + b’ + c + d) (a’ + b’ + c + d’)
= M14 M15 M12 M13
= M(12,13,14,15).

c) Condición iii)
a’ (c +d) = a + c + d

Profesor Leopoldo Silva Bijit 19-01-2010


60 Sistemas Digitales
El mapa resulta:
ab
cd n 00 01 11 10
0 4 12 8
00 1 1
1 5 13 9
01 1 1 1 1
3 7 15 11
11 1 1 1 1
2 6 14 10
10 1 1 1 1

Condición iii) = a +c +d

Figura P7.39 Mapa condición iii). Problema 7.17.

d) Cuando se cumplan las siguientes condiciones se interpreta como el and de las condiciones
i), ii) y iii).
ab
cd 00 01 11 10
0 4 12 8
00

1 5 13 9
01 1

3 7 15 11
11 1 1
2 6 14 10
10 1

z = m(3, 6, 7, 9)

Figura P7.40 Mapa con minimización de z. Problema 7.17.

Como suma de productos: z = a’b’c’d + a’cd +a’bc 10 literales, 13 entradas.


Dos pastillas de baja integración: Un nand de tres entradas y un nand de 4 entradas.

Como producto de sumas: z’ = b’d’ +a’c’ +ac + ab


z = (b + d)(a + c)(a’ + c’)(a’ + b’) 8 literales, 12 entradas.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 7. Sistemas Combinacionales 61
Dos pastillas de baja integración: Un nor de dos entradas y un nor de 4 entradas.
Entonces el diseño mínimo para z es mediante la forma producto de sumas.

Problema 7.18. Diseño de control de un display.

Se desea diseñar un circuito combinacional minimizado de 4 entradas (A, B, C, D) que produzca


las señales que controlen un display de 4 segmentos. El display tiene 4 líneas de control (C0,
C1, C2, C3) tales que cuando la línea de control está activada (es 1 lógico) se enciende el LED
correspondiente; en caso contrario el segmento del LED permanece apagado.
Se sabe que las entradas no pueden estar todas en cero, y que tampoco pueden estar altas más de
dos entradas simultáneamente. El diagrama ilustra el segmento que activa cada señal de control.
C0

C3
5 C1

C2

Figura P7.41 Esquema display. Problema 7.18.

Se asume que las entradas ABCD representan un número binario, donde A es la cifra más
significativa.
A continuación se ilustran los siguientes símbolos ordenados de izquierda a derecha. El ubicado
más a la izquierda debe representar al número binario menor (dado por ABCD), y así
sucesivamente hasta el número binario mayor que pueda representarse.

Solución.
Se puede confeccionar la siguiente tabla de verdad:

Las salidas del sistema combinacional (las señales que controlan los LEDs) se consideran
condiciones superfluas para el primer renglón de la tabla, debido a que las entradas no pueden
estar todas en cero. Y como no pueden existir más de dos entradas altas, también se consideran
superfluos los mintérminos: 7, 11, 13, 14 y 15.

Luego se van llenando los valores de las señales C0, C1, C2 y C3, renglón por renglón,
considerando los segmentos que deben encenderse, de acuerdo al orden de los símbolos.

Profesor Leopoldo Silva Bijit 19-01-2010


62 Sistemas Digitales

AB
A B C D C0 C1 C2 C3
CD 00 01 11 10
0 0 0 0 d d d d
0 0 0 1 1 1 0 4 12 8
00 d 1 1
0 0 1 0 1 1
0 0 1 1 1 1
0 1 0 0 1 1 1 5 13 9
0 1 0 1 1 1 1 01 d 1
0 1 1 0 1 1 1
0 1 1 1 d d d d 3 7 15 11
1 0 0 0 1 1 1 11 1 d d d
1 0 0 1 1 1 1
1 0 1 0 1 2 6 14 10
1 0 1 1 d d d d 10 1 d
1 1 0 0 1
1 1 0 1 d d d d
1 1 1 0 d d d d
1 1 1 1 d d d d C0=A'BD'+AB'C'+CD

Figura P7.42 Tabla de verdad y Mapa de C0.

AB AB
CD 00 01 11 10 CD 00 01 11 10
0 4 12 8 0 4 12 8
00 d 1 1 00 d
1 5 13 9 1 5 13 9
01 1 d 01 1 1 d 1

3 7 15 11 3 7 15 11
11 1 d d d 11 d d d
2 6 14 10 2 6 14 10
10 1 1 d 10 1 1 d 1

C1=AC'D'+BD+A'C C2=C'D+CD'
Figura P7.43 Mapas de C1 y C2.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 7. Sistemas Combinacionales 63

AB
CD 00 01 11 10
0 4 12 8
00 d 1 1
1 5 13 9
01 1 1 d 1

3 7 15 11
11 d d d
2 6 14 10
10 d

C3=A'C'+ B'C'

Figura P7.44 Mapa de C3.

Observaciones respecto a las minimizaciones.


Los implicantes primos de C0 son: A'BD' (4,6), AB'C' (8,9), A'C'D'(4,0), BCD'(6,14),
AC'D(9,13), A'BC(6,7), ABC(14,15), ABD(13,15), AB'D(9,11), B'C'D'(8,0), AD(9,11,13,15),
BC(6,7,14,15), CD(4,7,11,15).
Entonces CD debe estar presente ya que es el único que cubre al 3.
Se puede escoger A'BD' o A'C'D'+BC para cubrir el 4 y el 6. Obviamente es de menor costo
A'BD'.
Se puede escoger AB'C' o B'C'D'+AD para cubrir el 8 y el 9. Obviamente es de menor costo
AB'C'.

Los implicantes primos de C1 son: AC'D', A'B'D', B'C'D', AB, A'C, BD, CD, BC.
BD debe estar presente ya que es esencial (el único que cubre al 3).
AC'D' cubre al 8 y 12. Igual cobertura se logra con mayor costo: B'C'D'+AB
A'C cubre al 2, 3 y 6. Mucho mayor costo para igual cobertura es: CD+BC+A'B'D

Los implicantes primos de C2 son: A'B'C', A'B'D', AD, BC, CD', C'D, BD
La única minimización razonable que se considera es: C'D+CD'

Los implicantes primos de C3 son: A'C', B'C', AD, BD, C'D.


La única minimización razonable que se considera es: B'C'+A'C'

No se requería emplear reducción de tablas de implicantes. Pero es un buen ejercicio practicar


con las cuatro tablas anteriores, recordando que no deben considerarse los mintérminos
superfluos en las tablas.

Profesor Leopoldo Silva Bijit 19-01-2010


64 Sistemas Digitales

Ejercicios propuestos.

Ejercicio 7.1.

Diseñar con un multiplexor 8 a 1, la función: f(a, b, c, d) = m(0, 2, 4, 6)

Ejercicio 7.2.

Diseñar con un decodificador 3 a 8, y compuertas or, la función: f(a, b, c, d) = m(0, 2, 4, 6)

Ejercicio 7.3.

Desarrollar la función f=ab+c’ en la celda de la Figura 7.40.

Ejercicio 7.4.

Desarrollar la función del ejemplo 7.8 empleando LUTs de 2 variables.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 7. Sistemas Combinacionales 65

Índice general.

CAPÍTULO 7 ............................................................................................................................................. 1
SISTEMAS COMBINACIONALES ........................................................................................................ 1
7.1. COMPONENTES BÁSICOS. ................................................................................................................... 1
7.2. MULTIPLEXOR. MUX. ........................................................................................................................ 2
Ejemplo 7.1. ........................................................................................................................................ 4
7.3. TERCER ESTADO. ALTA IMPEDANCIA. .............................................................................................. 7
7.4. DECODIFICADORES. ........................................................................................................................... 8
Ejemplo 7.2 ......................................................................................................................................... 9
7.5. DEMULTIPLEXER, DISTRIBUIDOR. .................................................................................................... 10
7.6. PRIMITIVAS PROGRAMABLES ........................................................................................................... 13
7.6.1. Matriz de diodos ...................................................................................................................... 13
7.6.2. ROM ........................................................................................................................................ 15
7.6.3. PROM, EPROM. ..................................................................................................................... 16
7.6.4. Usos de PROM en circuitos combinacionales. ........................................................................ 17
a) Conversión de códigos. .............................................................................................................................. 17
Ejemplo 7.3. Conversión de BCD a exceso 3. .......................................................................................... 17
b) Generadores de funciones. ......................................................................................................................... 17
Ejemplo 7.4. .............................................................................................................................................. 18
c) Extensión. Estructura de memorias. .......................................................................................................... 18
Ejemplo 7.5 ............................................................................................................................................... 18
d) Descripción de archivos con código hexadecimal Intel. ............................................................................ 19
Ejemplo 7.6 ............................................................................................................................................... 20
7.6.5. PLA. Arreglos Lógicos Programables. .................................................................................... 21
Ejemplo 7.7. ................................................................................................................................................... 22
Detalle arreglo de AND. ................................................................................................................................ 23
Detalle arreglo OR. ........................................................................................................................................ 24
Diagrama simplificado PLA. ......................................................................................................................... 25
7.6.6. PAL arreglo lógico (de and) programable (Programable Array Logic). ................................ 27
7.6.7. PLD (Programable Logic Device). ......................................................................................... 28
7.6.8. Comparaciones entre dispositivos programables. .................................................................. 29
7.6.9. CPLD ( Complex Programable Logic Device). ....................................................................... 29
7.6.10. FPGA..................................................................................................................................... 29
Celdas basadas en multiplexores.................................................................................................................... 30
Celdas basadas en tablas de búsqueda. .......................................................................................................... 30
Ejemplo 7.8. ................................................................................................................................................... 31
Etapas o fases de diseño................................................................................................................................. 32
7.6.11. ASIC. ..................................................................................................................................... 33
PROBLEMAS RESUELTOS. ........................................................................................................................ 34
Problema 7.1. Expansión. Conexión cascada. .................................................................................. 34
Problema 7.2. Realización de funciones booleanas, mediante mux. ................................................. 34
Problema 7.3. Diseño de lógica combinacional empleando mux. ..................................................... 35
Problema 7.4. Diseño empleando mux de 8:1 ................................................................................... 37
Problema 7.5. Mal uso de muxs ........................................................................................................ 38
Problema 7.6. Diseño multifunción con decodificador. .................................................................... 38

Profesor Leopoldo Silva Bijit 19-01-2010


66 Sistemas Digitales
Problema 7.7. Diseño con decodificadores en base a mintérminos. ..................................................39
Problema 7.8. If then else anidados. ..................................................................................................40
Problema 7.9. Diseño con PROM. .....................................................................................................43
Problema 7.10. Diseño con multiplexor.............................................................................................45
Problema 7.11. Multiplexor ...............................................................................................................47
Problema 7.12. Mux 74151 ................................................................................................................49
Problema 7.13. Mux 8 a 1. .................................................................................................................52
Problema 7.14. Programa en EPROM ..............................................................................................53
Problema 7.15. Programar EPROM. ................................................................................................54
Problema 7.16. Diseño con condiciones superfluas. .........................................................................57
Problema 7.17. Diseño combinacional ..............................................................................................58
Problema 7.18. Diseño de control de un display. ..............................................................................61
EJERCICIOS PROPUESTOS. ........................................................................................................................64
Ejercicio 7.1. ......................................................................................................................................64
Ejercicio 7.2. ......................................................................................................................................64
Ejercicio 7.3. ......................................................................................................................................64
Ejercicio 7.4. ......................................................................................................................................64
ÍNDICE GENERAL. ....................................................................................................................................65
ÍNDICE DE FIGURAS .................................................................................................................................67

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 7. Sistemas Combinacionales 67

Índice de figuras

Figura 7.1 Esquema funcional multiplexor. .................................................................................. 2


Figura 7.2 Multiplexor dos vías a una. .......................................................................................... 2
Figura 7.2.a. Multiplexor basado en compuertas. ......................................................................... 3
Figura 7.3 Multiplexor 4 a 1. ......................................................................................................... 3
Figura 7.4 Diseño combinacional de multiplexor 4 a 1................................................................. 4
Figura 7.5 Símbolo mux 4 a 1. ...................................................................................................... 4
Figura 7.6 Implementación con mux 2 a 1. ................................................................................... 5
Figura 7.7 Implementación con muxs 2 a 1. ................................................................................. 5
Figura 7.8 Desarrollo basado en mux 4 a 1. .................................................................................. 6
Figura 7.9. Multiplexor de 8 vías a una. ........................................................................................ 6
Figura 7.10. Multiplexor con salida de tercer estado. ................................................................... 7
Figura 7.11. Buffer de tercer estado. ............................................................................................. 8
Figura 7.12. Multiplexor mediante buffers de tercer estado......................................................... 8
Figura 7.13. Buffer con salida activada por señal de lógica negativa. .......................................... 8
Figura 7.14. Decodificador binario. .............................................................................................. 9
Figura 7.15. Diseño en base a compuertas .................................................................................... 9
Figura 7.15.a. Decodificador binario 4 a 16 ................................................................................ 10
Figura 7.16. Esquema funcional de Demultiplexor ..................................................................... 11
Figura 7.17. Diseño demultiplexor en base a compuertas. .......................................................... 11
Figura 7.18. Símbolo demultiplexor............................................................................................ 12
Figura 7.19. Diseño switch empleando multiplexor y demultiplexor. ....................................... 12
Figura 7.20. Operandos de entrada y salida de unidad aritmética. ............................................. 13
Figura 7.21. Matriz de diodos. .................................................................................................... 14
Figura 7.22. Memoria. ................................................................................................................. 15
Figura 7.23. Representación simbólica de una matriz de diodos. .............................................. 16
Figura 7.24. Mapa de memoria de matriz de diodos de la figura 7.23. ...................................... 16
Figura 7.25. Mapa de memoria del cambiador de códigos. ........................................................ 17
Figura 7.26. Diseño de funciones mediante PROM. .................................................................. 18
Figura 7.27. Esquema funcional del diseño de una función en base a PROM. .......................... 18
Figura 7.28 Extensión del largo de la palabra. ............................................................................ 19
Figura 7.29. PLA Arreglos lógicos programables. ..................................................................... 22
Figura 7.30. Esquema del diseño empleando PLA...................................................................... 23
Figura 7.31 Arreglo de AND. ...................................................................................................... 24
Figura 7.32 Arreglo de OR. ......................................................................................................... 24
Figura 7.33 PLA en esquema de compuertas lógicas. ................................................................. 25
Figura 7.34 PLA programada. Se muestran abiertas las conexiones........................................... 26
Figura 7.35 Esquema de compuertas simplificado de una PLA. ................................................. 26
Figura 7.36 Esquema simplificado PLA, con conexiones abiertas. ............................................ 27
Figura 7.37. Esquema PAL ......................................................................................................... 27
Figura 7.38. Esquema PAL con realimentaciones....................................................................... 28
Figura 7.39. PLD con macrocelda. .............................................................................................. 28
Figura 7.40. Celda basada en multiplexores................................................................................ 30
Figura 7.41. Celda basada en Tabla de búsqueda. ....................................................................... 31

Profesor Leopoldo Silva Bijit 19-01-2010


68 Sistemas Digitales
Figura 7.42. Bloque lógico configurable xilinx. .......................................................................... 31
Figura 7.43. Implementación en LUTs de 3 variables................................................................. 32
Figura P7.1. Conexión cascada de multiplexores. ...................................................................... 34
Figura P7.2. Conexión cascada de multiplexores. ...................................................................... 34
Figura P7.3. Diseño empleando mux........................................................................................... 35
Figura P7.4 Esquema del diseño en base a mux. ......................................................................... 36
Figura P7.5. Otra implementación en base a mux. ...................................................................... 36
Figura P7.6. Grupos en en mapa de f. ......................................................................................... 37
Figura P7.7. Diseño empleando multiplexor de 8 vías a una. .................................................... 37
Figura P7.8. Diseño con exceso de muxs. ................................................................................... 38
Figura P7.9. Diseño empleando compuertas en lugar de muxes. ............................................... 38
Figura P7.10. Diseño combinacional empleando decodificadores. ............................................. 39
Figura P7.11. Diseño combinacional empleando decodificadores 3:8. ...................................... 40
Figura P7.12. Diagrama de flujo Problema 7.8. ......................................................................... 40
Figura P7.13. Soluciones 1, 2 y 3. .............................................................................................. 41
Figura P7.14. Soluciones 4, 5 y 6. .............................................................................................. 41
Figura P7.15. Condiciones para realización de a, b o c. ............................................................. 42
Figura P7.16. Condiciones para realización de a, b. ................................................................... 42
Figura P7.17. Mapa de Memoria. ............................................................................................... 43
Figura P7.18. Mapa de f2. .......................................................................................................... 44
Figura P7.19. Mux Problema 7.10.............................................................................................. 45
Figura P7.20. Minimización Problema 7.10. .............................................................................. 46
Figura P7.21. Tabla implicantes Problema 7.10. ........................................................................ 46
Figura P7.22. Mapa y Tabla implicantes producto de sumas. .................................................... 47
Figura P7.23. Mux Problema 7.11.............................................................................................. 48
Figura P7.24. Mapa Problema 7.11. ........................................................................................... 49
Figura P7.25. Conexiones Problema 7.12. ................................................................................. 50
Figura P7.26. Formas de ondas. Problema 7.12. ........................................................................ 52
Figura P7.27. Mux Problema 7.13.............................................................................................. 52
Figura P7.28 Mapa Problema 7.13. ............................................................................................ 53
Figura P7.29 EPROM Problema 7.14. ....................................................................................... 53
Figura P7.30 Mapa EPROM Problema 7.14. ............................................................................. 54
Figura P7.31 Variables y direcciones EPROM Problema 7.15. ................................................. 55
Figura P7.32 Mapas f0 y f1 Problema 7.15. ............................................................................... 55
Figura P7.33 Mapas f2 Problema 7.15. ...................................................................................... 56
Figura P7.34 Mapas EPROM Problema 7.15. ............................................................................ 56
Figura P7.35 Mapas Problema 7.16............................................................................................ 57
Figura P7.36 Implicantes Problema 7.16.................................................................................... 57
Figura P7.37 Implicantes Problema 7.16, parte c. ...................................................................... 58
Figura P7.38 Tablas de verdad. Problema 7.17. ......................................................................... 59
Figura P7.39 Mapa condición iii). Problema 7.17. ..................................................................... 60
Figura P7.40 Mapa con minimización de z. Problema 7.17. ...................................................... 60
Figura P7.41 Esquema display. Problema 7.18. ......................................................................... 61
Figura P7.42 Tabla de verdad y Mapa de C0. ............................................................................ 62
Figura P7.43 Mapas de C1 y C2. ................................................................................................ 62
Figura P7.44 Mapa de C3. .......................................................................................................... 63

Profesor Leopoldo Silva Bijit 19-01-2010


1

Capítulo 8

Descomposición

La descomposición de un problema complejo en un número de subproblemas más simples de


resolver es una actividad usual en ingeniería.

En síntesis lógica es una actividad fundamental, ya que separa un sistema lógico de un número
elevado de entradas en un conjunto de subsistemas interconectados con un número menor de
variables de entrada.

En la actualidad los dispositivos programables están basados en unidades que pueden


implementar funciones con un número reducido de entradas y salidas. Por ejemplo en FPGAs
basadas en tablas de búsquedas de k entradas se pueden representar funciones boolenas con k
variables de entrada y una salida. Entonces la tarea es descomponer los nodos de una red
boolena que tengan más de k entradas en subredes funcionalmente equivalentes que estén
formadas solamente por nodos con k o menos entradas.

Figura 8.1. Descomposición paralela y serial.

La Figura 8.1, a la izquierda, muestra la descomposición paralela, que separa la red en varias
redes con menor número de entradas y salidas. La ubicada a la derecha ilustra la
descomposición en serie.

La descomposición funcional de los circuitos combinacionales influye poderosamente en la


disminución de costos de implementación de los sistemas digitales. Y tiene su fundamento en
que las tablas de verdad de funciones combinacionales, de un número elevado de variables,
pueden contener redundancias, las que pueden ser eliminadas por la descomposición de la
función en varias funciones independientes con menos variables de entrada.

Profesor Leopoldo Silva Bijit 19-01-2010


2 Sistemas Digitales
Esta descomposición no sólo reduce la complejidad sino que aumenta la escalabilidad y la
realizabilidad de los sistemas.

Desde un punto de vista matemático la descomposición es el proceso de expresar una función de


n variables como una función de funciones con variables menores que n.

Se exponen los principales resultados de la teoría de descomposición, ilustrando los diferentes


ejemplos mediante mapas, lo cual es posible para un número reducido de variables. Sin embargo
en problemas reales con un número elevado de variables, para resolver cada uno de los
subproblemas asociados a la descomposición existen heurísticas, que han permitido desarrollar
aplicaciones computacionales que resuelven el problema. Su exposición tiene mayor relación
con cursos de estructuras de datos y algoritmos.

8.1. Descomposición trivial. Teorema de Shannon.

8.1.1. Extracción de una variable.

Una función de n variables puede ser descompuesta, aplicando el teorema de expansión de


Shanonn, según:

f ( x1 , x2 ,.., xn 1 , xn ) xn ' f ( x1 , x2 ,.., xn 1 , 0) xn f ( x1 , x2 ,.., xn 1 ,1)

Xn f f(Xn)

Figura 8.2 Función de n variables.

En la Figura 8.1. se ha definido: X n x1 , x2 ,.., xn 1 , xn

Si definimos las funciones de (n-1) variables, según:

g 0 ( x1 , x2 ,.., xn 1 ) f ( x1 , x2 ,.., xn 1 , 0)
g1 ( x1 , x2 ,.., xn 1 ) f ( x1 , x2 ,.., xn 1 ,1)
Podremos expresar:
f ( x1 , x2 ,.., xn 1 , xn ) F ( g 0 , g1 , xn )
Con:
F ( g0 , g1 , xn ) xn ' g 0 xn g1

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 8. Descomposición 3

g0
Xn-1 F(g0, g1, xn) f(Xn)
g1
xn

Figura 8.3 Descomposición trivial.

Donde: X n 1 x1 , x2 ,.., xn 1

La descomposición consiste en encontrar las funciones: g0, g1 y F. Las funciones gi se


denominan funciones predecesoras o auxiliares; y la descomposición se denomina serial o en
red lógica de tipo árbol.

La función F, puede ser implementada usando un multiplexor.

g0 0
Xn-1 f(Xn)
g1 1

xn

Figura 8.4 Implementación con multiplexor.

Si se escribe la tabla de verdad de f como una matriz, similar a un mapa de Karnaugh, donde los
renglones representan los valores de xn, y las columnas asociadas a los valores de las
combinaciones del resto de las (n-1) variables, se tiene la Figura 8.5, la que representa una
función de 4 variables:

x4/x1x2x3 000 001 011 010 110 111 101 100


0 1 1 1 1 1
1 1 1 1

Figura 8.5. Tabla de verdad de una función de 4 variables.

Entonces el primer renglón es la tabla de verdad de la función g0; el segundo corresponde al


mapa de g1.

La función g0, puede minimizarse empleando el siguiente mapa de tres variables:

Profesor Leopoldo Silva Bijit 19-01-2010


4 Sistemas Digitales

x3/x1x2 00 01 11 10
0 1 1 1
1 1 1
g0=x2’+x1’x3’

Figura 8.6 Mapa de g0.

La función g1, puede minimizarse empleando el siguiente mapa de tres variables:

x3/x1x2 00 01 11 10
0 1 1
1 1
g1=x1x2+x2x3’

Figura 8.7 Mapa de g1.

Resultando:
F ( g0 , g1 , x3 ) x3 ' g 0 x3 g1 x3 '( x2 ' x1 ' x3 ') x3 ( x1 x2 x2 x3 ')

8.1.2. Extracción de dos variables.

Del mismo modo pueden disminuirse las entradas a las funciones auxiliares, generando
funciones con un número menor de variables de entrada. La Figura 8.8 muestra las funciones
cofactores cuando se han extraído las variables xn y xn-1.

g0

g1
Xn-2
g2 F(g0, g1, g2, g3, xn-1, xn) f(Xn)

g3
xn-1, xn

Figura 8.8. Descomposición en 4 subfunciones.

Las funciones de (n-2) variables se obtienen a partir de la función f, según:

g 0 ( x1 , x2 ,.., xn 2 ) f ( x1 , x2 ,.., xn 2 , 0, 0)
g1 ( x1 , x2 ,.., xn 2 ) f ( x1 , x2 ,.., xn 2 , 0,1)
g 2 ( x1 , x2 ,.., xn 2 ) f ( x1 , x2 ,.., xn 2 ,1, 0)
g3 ( x1 , x2 ,.., xn 2 ) f ( x1 , x2 ,.., xn 2 ,1,1)

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 8. Descomposición 5

La función F, queda dada por:

F ( g0 , g1 , g 2 , g3 , xn 1 , xn ) xn 1 ' xn ' g0 xn 1 ' xn g1 xn 1 xn ' g 2 xn 1 xn g3

La cual puede ser implementada mediante un mux de 4 vías a una, según se muestra en la
Figura 8.9.
g0
0

g1 1
Xn-2 f(Xn)
g2 2

g3 3
xn-1, xn

Figura 8.9. Multiplexor de 4 vías.

La identificación de las funciones auxiliares o cofactores pueden visualizarse como los


renglones del mapa de Karnaugh, cuando en los renglones se ubican los valores de las
combinaciones de las variables que controlan el multiplexor, que podríamos llamar variables
libres. La Figura 8.10, ilustra el caso de una función de 5 variables.

x4x5/x1x2x3 000 001 011 010 110 111 101 100


00 1 1 1 1 1
01 1 1 1
11 1 1 1
10 1 1 1 1

Figura 8.10. Tabla de verdad de una función de 5 variables.

Donde las funciones gi, se pueden minimizar empleando mapas de tres variables.

8.2. Descomposición de Ashenhurst.

En 1952 Ashenhurst demuestra las condiciones en que una función f puede ser descompuesta
en la forma:
f ( x1 , x2 ,.., xn 1 , xn ) h( x1 , x2 ,..xk , g ( xk 1 , xk 2 ,.., xn ))

Se define el conjunto de k variables libres, según: X l x1 , x2 ,.., xk , y el conjunto de variables


acotado según: X a xk 1 , xk 2 ,.., xn . Debe notarse que el número de variables de entrada

Profesor Leopoldo Silva Bijit 19-01-2010


6 Sistemas Digitales
que tiene la subfunción g es (n-k), y que el número de variables de entrada del bloque h es de
(k+1) variables, ambos menores que n.

El módulo g debe poder ser implementado en un dispositivo en el cual se pueda programar una
función de (n-k) variables de entrada y una salida.

Si la función h tiene más de (n-k) entradas puede ser descompuesta de manera similar.
Generando una red multinivel con estructura de árbol. Si resultan en el proceso dos funciones
iguales, basta utilizar una instancia, y generar múltiples salidas de este bloque; en este caso la
estructura deja de ser de tipo árbol para convertirse en un grafo dirigido acíclico.

Se dice que la descomposición es disjunta ya que el conjunto de variables de entrada es partido


en dos subconjuntos con intersección vacía.

Xa g
h(g, Xl) f(Xn)
Xl

Figura 8.11. Descomposición de Ashenhurst.

8.2.1. Compactando las columnas.

Si se dibuja la tabla de verdad, colocando en los renglones las combinaciones de los valores de
las variables libres, y en las columnas los valores de las combinaciones del conjunto acotado, se
tiene una matriz denominada de descomposición.

La condición para que pueda aplicarse la descomposición de Ashenhurst, es que las columnas
de este arreglo tengan a lo más dos valores diferentes. Uno de los valores de las columnas estará
asociado a g ( xk 1 , xk 2 ,.., xn ) 0 ; el otro a g ( xk 1 , xk 2 ,.., xn ) 1 .

Consideremos el siguiente ejemplo de 5 variables.

x1x2/x3x4x5 000 001 010 011 100 101 110 111


00
01 1 1 1 1
10 1 1 1 1
11 1 1 1 1 1 1 1 1

Figura 8.12. Matriz de descomposición con dos columnas con valores diferentes.

Se tienen dos posibles elecciones para la función h, dependiendo de la columna que se asocie al
valor de g=0. La Figura 8.13 ilustra una de las elecciones posibles.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 8. Descomposición 7

x1x2/g(x3,x4,x5) 0 1
00
01 1
10 1
11 1 1
h

Figura 8.13. Tabla de verdad de h(g,Xa).

Resulta, minimizando: h x1 x2 ( x1 x2 ) g

Si se elige la otra columna asociada al valor de g=0, resulta una función de igual costo, salvo
que aparece g’ en la expresión. Nótese que se efectúa una minimización o reducción de
columnas equivalentes.

Las cuatro columnas asociadas a g=1, permiten determinar la función g ( x3 , x4 , x5 ) .


Corresponden a los valores equivalentes decimales del conjunto x3 , x4 , x5 3,5, 6, 7 .

x5/x3x4 00 01 11 10
0 1
1 1 1 1
g=x3x4+x3x5+x4x5

Figura 8.14. Tabla de verdad de g(Xa).

Debe notarse que tanto h como g pueden implementarse con bloques que tengan un número de
entradas acotado a 3. Si se efectúa el diseño con compuertas tradicionales, se obtiene un diseño
en cuatro niveles con 17 entradas.

Un diseño mínimo en dos niveles permite obtener la expresión con 27 entradas:

f x1 x2 x1 x3 x4 x2 x3 x4 x1 x3 x5 x2 x3 x5 x1 x4 x5 x2 x4 x5

La cual al ser factorizada, permite obtener:

f x1 x2 ( x1 x2 )( x3 x4 x3 x5 x4 x5 )

Expresión en la cual pueden reconocerse las funciones g y h, obtenidas mediante


descomposición.

Esta descomposición disjunta se basa en la mezcla de las columnas equivalentes con el objetivo
de remover las redundancias de la tabla de verdad de n variables.

Profesor Leopoldo Silva Bijit 19-01-2010


8 Sistemas Digitales
8.2.2. Redundancia de renglones.

Otra forma de encontrar las condiciones suficientes y necesarias para que exista la
descomposición de Ashenhurst es observar los renglones de la matriz, que representan las
combinaciones de valores que puede tomar el conjunto libre de variables de entrada.

Observando las Figuras 8.3 y 8.8, se puede generalizar el resultado para la extracción de k
variables, notando que la función f puede descomponerse en 2 k funciones gi ( X l ) , una por cada
renglón. Con m 2k el número de funciones auxiliares, se tiene:

g0
0

g1 1
Xa f(Xn)
… …

gm-1 2k-1
Xl

Figura 8.15. Multiplexor de m entradas, controlado por variables libres.

Pero como la descomposición de Ashenhurst sólo tiene una función g, las diferentes funciones
cofactores deben ser constantes (formadas por solamente ceros o unos), o poder ser expresadas
en términos de una sola función o su complemento.

Dicho de otro modo: no considerando los renglones formados por solamente ceros o unos, o
aquellos que son complementos de otros renglones, sólo puede existir un y solo un renglón
diferente, el cual estará asociado a la función g de la Figura 8.11.

La Figura 8.16, muestra la estructura interna de la función h: un bloque C, que solamente


interconecta sus cuatro posibles entradas con las 2 k entradas del mux; observando el diagrama
en bloques la función combinacional h depende de g y X l , que es la forma deseada de
descomposición.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 8. Descomposición 9

Xa g C 1
f(Xn)
0 …

1 2k-1
Xl

h(g,Xl)

Figura 8.16. La función h es el multiplexor más red combinacional.

En el caso del ejemplo de la Figura 8.12, esto se cumple, ya que existe un solo renglón diferente
en la matriz, además de las constantes. En este ejemplo no existe un renglón que sea
complemento de otro. Observando la tabla de la Figura 8.12, la función h puede escribirse:

h x1 x2 ( x1 ' x2 x1 x2 ') g

La que minimizada en el espacio de las variables libres y g, tres variables en este caso, permite
obtener:
h x1 x2 ( x1 x2 ) g

La función g, se determina obteniendo la tabla de verdad del segundo o tercer renglón, en


términos de las variables acotadas, lo que se muestra en la Figura 8.14.

Esta descomposición disjunta se basa en la extracción de los renglones equivalentes con el


objetivo de remover las redundancias de la tabla de verdad de n variables.

8.2.3. Complejidad de la descomposición.

La dificultad computacional de la descomposición está en la revisión de las diferentes


particiones de la tabla de verdad que pueden realizarse.

Como existen C(n, a) combinaciones de a variables de un conjunto de n, que es el número de


formas de escoger a elementos de un total de n, donde C(n, a) es el coeficiente binomial; se
tendrá ese número de particiones posibles. Además cada tabla tendrá 2 n valores. Esto implica
que el método descrito es no polinomial, debido al crecimiento exponencial.

Si lo que interesa es obtener todas las particiones posibles, aceptando que tanto las variables
acotadas como las libres puedan ser cero, se tendrá un número total de particiones igual a 2 n ,
ya que se tiene que:

Profesor Leopoldo Silva Bijit 19-01-2010


10 Sistemas Digitales
n n n n
... 2n
0 1 n 1 n

Para el caso del ejemplo descrito en la tabla de la Figura 8.11, se tienen 10 particiones,
considerando que el número de variables del conjunto acotado es 3. Se enumeran a continuación
los conjuntos de los índices de las variables acotadas: {1, 2, 3}, {1, 2, 4}, {1, 2, 5}, {1, 3, 4},
{1, 3, 5}, {1, 4, 5}, {2, 3, 4}, {2, 3, 5}, {2, 4, 5}, {3, 4, 5}. En el ejemplo visto antes sólo se
analizó el último conjunto.

Pero no todas las particiones permiten obtener una descomposición disjunta de Ashenhurst.

La partición, en la cual las variables acotadas son x2x3x4, se muestra en la Figura 8.17, en la cual
hay 5 columnas diferentes, lo cual implica que no existe la descomposición de Ashenhurst. Lo
mismo puede concluirse al observar que existen cuatro renglones diferentes.

x1x5/ x2x3x4 000 001 010 011 100 101 110 111
00 1
01 1 1 1
10 1 1 1 1 1
11 1 1 1 1 1 1

Figura 8.17. Partición {2, 3, 4}.

La tabla se construyó con el mapa de la expresión mínima en dos niveles de f.


f x1 x2 x1 x3 x4 x2 x3 x4 x1 x3 x5 x2 x3 x5 x1 x4 x5 x2 x4 x5

Entonces la descomposición es de complejidad no polinomial y para su implementación


práctica, deben resolverse los subproblemas: la generación de particiones, la determinación de
cuales columnas o renglones son equivalentes y los métodos para determinar las subfunciones.

Existen numerosas contribuciones para resolver estos problemas: Algunas basadas en grafos
coloreados, otras en cálculo con cubos, otras en diagramas de decisión binarios. Todas ellas
escapan a un curso introductorio de sistemas digitales.

8.3. Descomposición de Curtis.

Lo primero que debe explorarse es si existe la descomposición de Ashenhurst, ya que ésta


descompone de manera significativa el problema. Sin embargo en muchos casos esta
descomposición no existe, en esta situación puede continuarse aplicando la descomposición de
Curtis.

Si en la Figura 8.3, consideramos un conjunto limitado de (n-k) variables de entrada, en las


funciones auxiliares, asumiendo que las funciones gi, se implementarán con bloques que tienen
también un número acotado de entradas y una salida, podemos considerar el resto de las
variables como un conjunto de k variables que denominaremos libre.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 8. Descomposición 11

Para el caso tratado antes de extracción de una variable, que se muestra en la Figura 8.3, se tiene
que k=1 y por lo tanto: (n-k)=n-1, este caso se denomina descomposición simple o trivial.

8.3.1. Descomposición de Curtis, con dos funciones auxiliares.

Interesa la situación en que los bloques gi tienen acotado el número de variables de entrada. El
esquema general de las funciones, con la notación introducida, se muestra en la Figura 8.18,
para el caso de dos funciones seriales.

g0
Xa F(g0, g1, Xl) f(Xn)
g1
Xl

Figura 8.18. Descomposición disjunta de Curtis.

Si los dos conjuntos de variables tienen intersección vacía, se denomina disjunta a la


descomposición. Una vez encontradas las funciones g0, g1, y F, puede volver a aplicarse
descomposición a la función F, hasta que todos los bloques seriales gi tengan no más de (n-k)
entradas.

Demostraremos las condiciones necesarias y suficientes para que pueda encontrarse la


descomposición anterior.

Si se dibuja la tabla de verdad, colocando en los renglones las combinaciones de los valores de
las variables libres, y en las columnas los valores de las combinaciones del conjunto acotado, la
condición para que pueda aplicarse la descomposición de Curtis, con dos funciones auxiliares,
es que las columnas de este arreglo tengan a lo más cuatro valores diferentes. Las cuatro
columnas no redundantes quedarán asociadas a los siguientes valores:

g1 , g 0 00, 01,10,11

El mapa formado por 4 columnas y 2 k renglones, define la función F, en términos de Xl, g1 y


g0.

Las mezclas de las columnas equivalentes, permiten determinar las funciones auxiliares en
términos de las variables del conjunto acotado.

Nótese que en este caso el número de columnas equivalentes debe ser mayor que 2; ya que si
sólo fueran dos podría aplicarse la descomposición de Ashenhurst. Puede decirse que la
descomposición simple de Curtis, cuando sólo se tienen dos columnas diferentes, es la
descomposición de Ashenhurst.

Profesor Leopoldo Silva Bijit 19-01-2010


12 Sistemas Digitales
Si las columnas equivalentes fueran solamente 3, la determinación de la función F, se ve
simplificada por la introducción de una columna con valores superfluos.

El análisis de los renglones permite establecer que existe la descomposición de Curtis, con dos
funciones seriales, si se tienen dos renglones diferentes, una vez eliminados los renglones
constantes y los renglones que son el complemento de otros.

8.3.2. Descomposición de Curtis, con m funciones auxiliares.

El resultado anterior puede generalizarse cuando se tienen a lo más 2m columnas diferentes. En


este caso se tendrán m funciones auxiliares. Si a es el número de variables que forman el
conjunto acotado, la descomposición se aplica si m < a; notar que si m=a, el número de entradas
a la función F, no disminuye.

Alternativamente se tiene una descomposición general de Curtis: si se tienen m renglones


diferentes, una vez eliminados los renglones constantes y los renglones que son el complemento
de otros.
g0

g1
Xa
… F(g0, g1, …, gm-1, Xl) f(Xn)

gm-1
Xl

Figura 8.19. Descomposición disjunta de Curtis.

Entonces para n variables, con k variables libres, y m columnas equivalentes en la tabla de


verdad de 2k 2n k se tiene la descomposición de Curtis, si y solamente si:
1 k
2 m n k

Nótese que los bloques g, representan una codificación de las variables del conjunto acotado, y
existe compactación si: m < n-k.

Algunas funciones pueden descomponerse por compactación de renglones y no por mezcla de


columnas y también ocurre lo opuesto. Debido a esto pueden considerarse métodos de
descomposición diferentes.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 8. Descomposición 13
8.3.3. Fundamentos.

Si se escribe la tabla de verdad de la función f de n variables, pero en la cual se colocan en los


renglones las combinaciones de las k variables libres y en las columnas las combinaciones de las
a variables acotadas; y se rotulan las columnas de acuerdo al valor decimal equivalente se
obtiene la matriz de descomposición de r 2k renglones y c 2a columnas. Esta matriz es
similar a un mapa de Karnaugh, pero sin emplear codificación Gray para enumerar renglones y
columnas.

Por ejemplo para la función completamente especificada, de cinco variables:

f ( x1 , x2 , x3 , x4 , x5 ) m(0, 6, 7,8,13,15,17,19, 22, 23, 24, 25, 27, 28)

Con el conjunto de variables acotado A x1 , x2 , x3 y el conjunto de variables libres:


L x4 , x5

La matriz de descomposición resulta:

A 0 1 2 3 4 5 6 7
L x4x5\x1x2x3 000 001 010 011 100 101 110 111
0 00 1 1 1 1
1 01 1 1 1
2 10 1 1
3 11 1 1 1 1 1
f(A, L)=f(x1,x2,x3,x4,x5)

Figura 8.20. Matriz de descomposición.

Si descomponemos las variables en términos de los subconjuntos A y L, podemos escribir:

f ( x1 , x2 , x3 , x4 , x5 ) f ( A, L)

La cual puede escribirse en términos de los renglones, en lugar de los mintérminos:

f ( A, L) f ( A, 0) x4 ' x5 ' f ( A,1) x4 ' x5 f ( A, 2) x4 x5 ' f ( A,3) x4 x5

El primer renglón de f, es una función de tres variables, que representa los mintérminos de ese
renglón, lo cual puede anotarse:

f ( A, 0) f ( x1 , x2 , x3 , 0, 0) x1 ' x2 ' x3 ' x1 ' x2 x3 ' x1 x2 x3 ' x1 x2 x3

Existiendo definiciones similares para el resto de los renglones.

Profesor Leopoldo Silva Bijit 19-01-2010


14 Sistemas Digitales
Si además definimos el producto de las variables de L, con el subíndice decimal equivalente del
mintérmino asociado a esas dos variables, como pi ( L) . Se tienen:
p0 ( L) x4 ' x5 ' , p1 ( L) x4 ' x5 y así sucesivamente.

Empleando estas definiciones, puede escribirse:

f ( A, L) f ( A, 0) p0 ( L) f ( A,1) p1 ( L) f ( A, 2) p2 ( L) f ( A,3) p3 ( L)

Y empleando notación con sumatorias, resulta:


i 3
f ( A, L) f ( A, i ) pi ( L)
i 0

De manera similar la expansión por columnas, puede anotarse:

i 7
f ( A, L) f (i, L) pi ( A)
i 0

En un caso general de n variables, la expansión por columnas, resulta con c igual al número de
columnas de la matriz:
i c
f ( x1 , x2 ,..., xn ) f ( A, L) f (i, L) pi ( A)
i 0
En la Figura 8.21, se muestra una implementación con multiplexor, controlado por las variables
acotadas de la expansión. Notar que las entradas al mux son funciones de las variables libres,
que representan los unos presentes de la función en cada columna. Existe simplificación en la
descomposición si varias de estas funciones son iguales entre sí, o bien si unas son el
complemento de otras, o si son constantes. La generación de una entrada lógica uno o cero, no
requiere electrónica para ser implementada; si una función es el complemento de otra, basta un
inversor para generarla.
f(0,L)
0

f(1,L) 1
L ….. f(A,L)
.
f(i,L) i
…..
.
f(c,L) c

Figura 8.21. Expansión por columnas.

La expansión por renglones, para un caso general con r igual al número de renglones, resulta:

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 8. Descomposición 15
i r
f ( x1 , x2 ,..., xn ) f ( A, L) f ( A, i) pi ( L)
i 0
En la Figura 8.22, se muestra una implementación con multiplexor, controlado por las variables
libres, de la expansión. Notar que las entradas al mux son funciones de las variables acotadas,
que representan los unos presentes de la función en cada renglón. Existe simplificación en la
descomposición si varias de estas funciones son iguales entre sí, o bien si unas son el
complemento de otras, o si son constantes.

f(A,0)
0

f(A,1) 1
A ….. f(A,L)
.
f(A,i) i
…..
.
f(A,r) r

Figura 8.22. Expansión por renglones.

Estas representaciones son únicas, ya que en ambos casos se están representando los
mintérminos de la función f. En un caso se expande por columnas, en el otro por renglones.

i c i r
f ( x1 , x2 ,..., xn ) f (i, L) pi ( A) f ( A, i ) pi ( L)
i 0 i 0

Una vez introducida la notación, nos interesa descomponer f en las funciones g y h, según:

f ( A, L) h( g ( A), L)

Lo cual representa analíticamente a la descomposición serial, que se muestra en la Figura 8.23.


En la cual interesa determinar las funciones h y g.

A g
h( g(A), L) f(A,L)
L

Figura 8.23. Descomposición serial disjunta.

Si cg es el número de columnas de la matriz que representa a la función h, se tiene la siguiente


representación por columnas:

Profesor Leopoldo Silva Bijit 19-01-2010


16 Sistemas Digitales
i cg
h( g , L ) h( g i, L) pi ( g )
i 0
El mínimo número de columnas es dos, es decir cg=2. Lo cual implica que la salida del bloque
g, está formado por una variable. Una de las columnas de la matriz de h está asociada a g=0, la
otra a g=1. Corresponde a la descomposición de Ashenhurst.

El número de columnas debe ser una potencia de dos, si cg=4, entonces el bloque g tiene dos
salidas, que podemos denominar g1 y g0, las que serían las variables, cuyos mintérminos
identificarían a las columnas.

Si cg=2m, entonces g tiene m salidas. Que podemos denominar: g0, g1, …, gm. Este es el caso
general de la descomposición disjunta de Curtis.

Si c=cg, es decir si A y g tienen el mismo número de columnas, no se reduce el número de


entradas a la función h, será el mismo número de entradas de la función f. Entonces para que la
descomposición sea de interés debe tenerse: c > cg.

Entonces la función f, puede descomponerse en las funciones g y h:

f ( x1 , x2 ,..., xn ) f ( A, L) h( g ( A), L)

si y solamente si se cumple la igualdad de:

i c i cg
f (i, L) pi ( A) h( g i, L) pi ( g )
i 0 i 0

Para el caso de cg=4, se tiene que cumplir:


i c
f (i, L) pi ( A) h(0, L) g1 ' g 0 ' h(1, L) g1 ' g 0 h(2, L) g1 g 0 ' h(3, L) g1g 0
i 0

Donde el lado izquierdo es conocido, y el objetivo es determinar las subfunciones: h, g1 y g0.


Debe notarse que h(i,L) y f(i,L) son solamente funciones de las variables libres.

Si c es mayor que cg, por ejemplo 8, ya que tiene que ser una potencia de dos, existirán 8
columnas en f y 4 columnas en h. Esto implica tres variables acotadas.

Entonces se requiere que a lo más f tenga 4 columnas diferentes, incluidas los valores de
columnas con puros ceros o puros unos; los valores de esas columnas serán los valores de las
columnas de h. Existen 4! formas de escoger las columnas de h, a partir de las columnas
diferentes de f.

Si f tiene 3 columnas diferentes, una de las columnas de h puede escogerse con solamente
valores superfluos.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 8. Descomposición 17
Si f tiene sólo dos columnas diferentes, entonces debe escogerse una función h que tenga dos
columnas, y sólo basta una función g, es el caso de la descomposición Ashenhurst.

Si f tiene 5 columnas diferentes, no es posible satisfacer la igualdad, en este caso es preciso que
h tenga también 8 columnas, de las cuales 3 pueden ser fijadas en condiciones superfluas. Sin
embargo en este caso se requieren 3 funciones g, lo cual implica que h tendrá igual número de
entradas que la función f. Razón por la cual este caso no es de interés en descomposición.

Una vez seleccionadas las columnas de f que representarán a las de h, esta función puede
determinarse. Además la determinación de las funciones g puede realizarse con las siguientes
cuatro ecuaciones:

pi ( A) p0 ( g ) g1 ' g 0 '
i f ( i , L ) h (0, L )

pi ( A) p1 ( g ) g1 ' g 0
i f ( i , L ) h (1, L )

pi ( A) p2 ( g ) g1 g 0 '
i f ( i , L ) h (2, L )

pi ( A) p3 ( g ) g1 g 0
i f ( i , L ) h (3, L )

Las cuales permiten escribir las tablas de verdad de las funciones g1 y g0, en términos de las
variables acotadas, ya que los pi ( A) sólo dependen de las variables acotadas.

En la tabla de la Figura 8.20, se han agregado dos renglones que identifican la selección
realizada de las columnas de h, y los valores binarios correspondientes de las salidas g1 y g0.

g1g0 00 01 00 10 10 01 11 00
h(0,L) h(1,L) h(0,L) h(2,L) h(2,L) h(1,L) h(3,L) h(0,L)
A 0 1 2 3 4 5 6 7
L x4x5\x1x2x3 000 001 010 011 100 101 110 111
0 00 1 1 1 1
1 01 1 1 1
2 10 1 1
3 11 1 1 1 1 1
f(A, L)=h(g(A),L)

Figura 8.24. Descomposición serial disjunta.

La selección realizada para las columnas de h puede anotarse:


h(0, L) f (0, L) f (2, L) f (7, L) x4 ' x5 '
h(1, L) f (1, L) f (5, L) x4 x5 ' x4 x5 x4
h(2, L) f (3, L) f (4, L) x4 ' x5 x4 x5 x5

Profesor Leopoldo Silva Bijit 19-01-2010


18 Sistemas Digitales
h(3, L) f (6, L) x4 ' x5 ' x4 ' x5 x4 x5 x4 ' x5

Las que reemplazadas en la siguiente ecuación, nos permiten obtener h.


i cg
h( g , L ) h( g i, L) pi ( g )
i 0

h( g , L ) x4 ' x5 ' g1 ' g 0 ' x4 g1 ' g 0 x5 g1 g 0 ' ( x4 ' x5 ) g1 g 0

Para determinar las funciones g1 y g0, realizamos las sumatorias:

g1 ' g 0 ' pi ( A) p0 ( A) p2 ( A) p7 ( A) x1 ' x2 ' x3 ' x1 ' x2 x3 ' x1 x2 x3


i 0,2,7

g1 ' g 0 pi ( A) p1 ( A) p5 ( A) x1 ' x2 ' x3 x1 x2 ' x3


i 1,5

g1 g 0 ' pi ( A) p3 ( A) p4 ( A) x1 ' x2 x3 x1 x2 ' x3 '


i 3,4

g1 g 0 pi ( A) p6 ( A) x1 x2 x3 '
i 6

Si se suman las dos últimas ecuaciones, se tiene:

g1 x1 ' x2 x3 x1 x2 ' x3 ' x1 x2 x3 ' x1 ' x2 x3 x1 x3 '

Si se suman la segunda y la cuarta, se obtiene:

g0 x1 ' x2 ' x3 x1 x2 ' x3 x1 x2 x3 ' x2 ' x3 x1 x2 x3 '

La determinación de las funciones también puede obtenerse empleando la información de la


matriz de descomposición. Eliminando las columnas duplicadas de la Figura 8.24. y los
renglones asociados a las variables acotadas, resulta la Figura 8.25; donde se puede determinar
la función sucesora h.
h(0,L) h(1,L) h(2,L) h(3,L)
L x4x5\ g1g0 00 01 10 11
0 00 1 1
1 01 1 1
2 10 1
3 11 1 1 1
h(g,L)

Figura 8.25. Función h(g,L).

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 8. Descomposición 19
Si en la Figura 8.24, se eliminan los renglones asociados a las variables libres, y sólo se dejan
los renglones asociados a las tablas de verdad de las funciones g1 y g0, se obtiene la Figura
8.26.

g1g0 00 01 00 10 10 01 11 00
x1x2x3 000 001 010 011 100 101 110 111

Figura 8.26. Tablas de verdad de las funciones g1 y g0.

Funciones que pueden ser minimizadas, redibujando las tablas de verdad como mapas de
Karnaugh.
x4x5\ g1g0 00 01 11 10
00 1 1
01 1 1
11 1 1 1
10 1
h(g, x4, x5)

Figura 8.27. Mapa de Karnaugh de h.

h( g1 , g0 , x4 , x5 ) g1 x5 g1 g 0 x4 ' g1 ' g 0 x4 g1 ' g 0 ' x4 ' x5 '

Para las funciones antecesoras:

x3\ x1 x2 00 01 11 10
0 00 00 11 10
1 01 10 00 01
g1g0

Figura 8.28. Mapa de Karnaugh de g1 y g0.

Resultan:
g1 ( x1 , x2 , x3 ) x1 x3 ' x1 ' x2 x3
g0 ( x1 , x2 , x3 ) x2 ' x3 x1 x2 x3 '

8.4. Descomposición de funciones incompletamente especificadas.

Cuando la tabla de verdad tiene condiciones superfluas se dice que dos columnas i, j son
compatibles si cada elemento en la columna i es igual al correspondiente elemento de j, o si el
elemento en i o en j no está especificado.

Dicho de otra forma: Dos columnas, Cr y Cs, son compatibles, si no existe un renglón i, para el
cual los correspondientes elementos Cir y Cis sean diferentes, cuando ambos están
especificados.

Profesor Leopoldo Silva Bijit 19-01-2010


20 Sistemas Digitales
La descomposición de estas funciones está gobernada por las mismas reglas anteriores, excepto
que existen varias combinaciones alternativas para mezclar las columnas compatibles. En estos
casos la solución puede no ser única.

Un conjunto de columnas para el cual cada par de columnas son compatibles se denomina clase
compatible. Las clases compatibles que no son subconjuntos de otras clases compatibles se
denominan clases de compatibilidad máxima.
Finalmente se selecciona un subconjunto de mínima cardinalidad de las clases máximas, tal que
cada columna esté al menos en una de clases de compatibilidad máxima que se empleen.

8.4.1. Ejemplo.

Veremos a través de un ejemplo la forma de compactar las columnas de la tabla de la función f


incompletamente especificada. Variables libres: (a,b), variables acotadas: (c,d,e).

ab/ cde 000 001 010 011 100 101 110 111
00 1 - 0 1 - 0 1 0
01 - - - - 1 1 - -
10 - 0 1 0 0 - 0 1
11 0 1 - - - - - -
C0 C1 C2 C3 C4 C5 C6 C7
f(a,b,c,d,e)

Figura 8.29. Descomposición de función con condiciones superfluas.

Como ejemplo, los siguientes pares son incompatibles: (C0, C1), (C0, C2), (C0, C5), (C0, C7).

Para formar las clases, es preciso disponer de los pares de columnas compatibles. En la
siguiente tabla de la Figura 8.30, en la primera columna se anotan los pares indicando los
índices de las columnas.
Para formar la segunda columna, se recorren los pares para detectar los tríos de columnas
compatibles entre sí. Por ejemplo se tienen los pares: (0,3), (0,4) y (3,4), entonces se forma el
trío de columnas compatibles entre sí: (0, 3, 4). En la Figura 8.30, no se muestran todos los
vínculos que permiten construir la segunda columna. Como se usan todos los pares al formar la
columna de tríos, no se tiene una clase máxima formada por dos columnas.

Luego de la columna de tríos se forma una clase compatible de cuatro columnas entre sí. De este
modo puede formarse la clase (0,3,4,6) ya que se tienen: (0,3,4), (0,3,6), (0,4,6) y (3,4,6). Se
procede de igual forma hasta que no se puedan generar clases con un número mayor de
columnas compatibles entre sí.

Nótese que en la tercera columna quedan dos clases con cuatro columnas compatibles entre sí, y
en la segunda quedan dos con tres columnas compatibles entre sí. Éstas son las clases de
compatibilidad máxima.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 8. Descomposición 21

0,3
0,4
0,6 0,3,4
1,3 0,3,6
1,4 0,4,6
1,5 1,3,4 0,3,4,6
1,6 1,3,6 1,3,4,6
2,5 1,4,5
2,7 1,4,6
3,4 2,5,7
3,6 3,4,6
4,5
4,6
5,7

Figura 8.30. Formación de clases de compatibilidad máxima.

Ahora debe efectuarse una selección de las clases, de tal modo que cada una de las columnas
esté incluida en alguna de las clases seleccionadas. Por ejemplo, pueden escogerse las clases:
(0,3,4,6), (1,4,5), (2,5,7). Finalmente los elementos múltiples deben eliminarse, resultando las
siguientes clases: (0,3,4,6), (1,5), (2,7).

La mezcla de las columnas de cada clase, que en el caso del ejemplo son tres, se asocian a los
valores de las funciones seriales g1 y g0. Nótese que se agrega una columna con valores
superfluos, lo que permite un nivel adicional de minimización de la función: h(g1, g0, (a,b))

La codificación de las columnas influye en la minimización.

ab/ g1g0 00 01 10 11
00 1 0 0 -
01 1 1 - -
10 0 0 1 -
11 0 1 - -
C0,C3,C4,C6 C1,C5 C2,C7 -
h

Figura 8.31. Mezcla de columnas de clases compatibles.

Para la determinación de las funciones g, en términos de las variables acotadas, se tienen:

Profesor Leopoldo Silva Bijit 19-01-2010


22 Sistemas Digitales

cde 000 001 010 011 100 101 110 111


g1g0 00 01 10 00 00 01 00 10
C0 C1 C2 C3 C4 C5 C6 C7

Figura 8.32. Tablas de las funciones predecesoras.

Resultan, luego de la minimización:


c
d g
e h f
h a ' g1 ' g 0 ' bg 0 ag1 a
b
g1 c ' de ' cde
g0 d 'e

Figura 8.33. Resultado de la descomposición.

8.5. Descomposiciones no disjuntas.

Cuando no se cumplen las condiciones para descomposiciones disjuntas, puede encontrarse


descomposiciones no disjuntas, agregando al conjunto acotado una de las variables libres.

Si A C son las variables acotadas y L C son las variables libres y C es no vacío se tiene
una descomposición no disjunta.
A
g
C
F f

Figura 8.34. Descomposición no disjunta.

El uso de mapas con variables repetidas, permite generalizar el caso de las descomposiciones
disjuntas al tratamiento de las no disjuntas.

El mapa con variables repetidas es incompletamente especificado aunque la función original sea
completamente especificada. Cada variable repetida crea un mapa de una dimensión mayor en el
cual las nuevas celdas introducidas son condiciones superfluas.

8.5.1. Ejemplo.

La función f, de la Figura 8.35, no tiene descomposición disjunta de Curtis, no hay 4 columnas


diferentes; ni Ashenhurst, ya que no hay sólo 2. Puede verificarse que no existe

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 8. Descomposición 23
descomposiciones eligiendo los seis conjuntos libres posibles en este caso: ab, cd, ac, bd, ad,
bc.

Diseño en dos niveles: f = bcd+acd+a’c’d’+b’c’d’+a’b’d’ con 20 entradas.


AB
CD 00 01 11 10
0 4 12 8
00 1 1 0 1
1 5 13 9
01 0 0 0 0
3 7 15 11
11 0 1 1 1
2 6 14 10
10 1 0 0 0

f(A, B, C, D)

Figura 8.35. Descomposición no disjunta.

Si se introducen las variables C1 = C2 = C, aparecen numerosas condiciones superfluas, ya que


si C es la misma variable, no se pueden producir los casos en que C1 y C2 sean diferentes.
C1AB
C2D 000 001 011 010 100 101 111 110
0 4 12 8
00 1 1 0 1 - - - -
1 5 13 9
01 0 0 0 0 - - - -
3 7 15 11
11 - - - - 0 1 1 1
2 6 14 10
10 - - - - 1 0 0 0

f(A, B, C, D)

Figura 8.36. Mapa con variable C repetida.

a) Diseño mezclando columnas.


Eligiendo valores para las casillas superfluas, pueden tenerse los siguientes conjuntos de
columnas compatibles: (0,1,2,4) (3,5,6,7), se ha empleado el decimal equivalente para
identificar la columna. Puede notarse que las columnas 1 y 2 no son compatibles, ya que para el
renglón 0, una tiene valor uno y la otra valor cero.
Existen otras elecciones posibles de las condiciones superfluas, que permiten seleccionar otros
conjuntos de columnas compatibles.

Entonces mezclando las columnas compatibles, puede verse que existe la descomposición de
Ashenhurst no disjunta.

Profesor Leopoldo Silva Bijit 19-01-2010


24 Sistemas Digitales

cd\g 0 1
00 1 0
01 0 0
11 0 1
10 1 0
h=d’g’+cdg

Figura 8.37. Ashenhurst no disjunta.

La determinación de la función g, puede obtenerse considerando que g será uno cuando las
variables acotadas CAB toman las combinaciones: 011, 101, 111, 110, con el mapa:

c\ab 00 01 11 10
0 1
1 1 1 1
g=ab + ac+ bc

Figura 8.38. Función predecesora g.

Evaluando el costo con compuertas elementales, resulta de 17 entradas y 5 niveles. Sin embargo
este cálculo no es relevante si las funciones g y h pueden implementarse en un bloque básico.
b) Diseño compactando renglones.
Eligiendo valores para las condiciones superfluas, pueden formarse dos renglones
complementarios
C1AB
C2D 000 001 011 010 100 101 111 110
0 4 12 8
00 1 1 0 1 1 0 0 0
1 5 13 9
01 0 0 0 0 - - - -
3 7 15 11
11 0 0 1 0 0 1 1 1
2 6 14 10
10 1 1 0 1 1 0 0 0

f(A, B, C, D)

Figura 8.39. Formación de renglones compatibles.

La ecuación para la función sucesora, se obtiene con la ecuación del multiplexor gobernado por
las variables libres.
h= gc’d’+0c’d+ g’cd + gcd’
La cual puede ser minimizada:
h= cdg’+d’g

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 8. Descomposición 25
La función antecesora, resulta del mapa del primer renglón:

c\ab 00 01 11 10
0 1 1 1
1 1
g=a’b’ + a’c’+ b’c’

Figura 8.40. Mapa para obtener función g.

Que para fines de comparación, implementada con compuertas tradicionales, resulta de 17


entradas y 5 niveles

Factorizando con SIS, que emplea cálculo con cubos, se obtiene la red booleana:
g1 = ab, g2=a’+b’ h= d’g1’+cdg1+c’d’g2 con 16 entradas, 4 niveles

8.6. Descomposición paralela.

En caso de tener sistemas con múltiples salidas debe aplicarse la descomposición en paralelo.
En la descomposición paralela el conjunto de variables de salida f, es particionado en dos
subconjuntos fG y fH, y la función f en las funciones G y H correspondientes. De tal modo que
los conjuntos XG y XH, de variables de entrada a los bloques G y H respectivamente, contengan
menos variables que el conjunto X de variables de entrada a la función f.

X XG XH

f fG fH

Figura 8.41. Descomposición paralela.

Si los conjuntos XG y XH son disjuntos, se dice que la descomposición paralela es disjunta; si la


intersección es no vacía se dice que es no disjunta.

Se denomina descomposición balanceada al proceso de partir una función mediante


descomposición paralela o serial en cada fase del proceso de síntesis.

8.7. Síntesis multinivel

8.7.1. Redes lógicas booleanas.

La minimización como suma de productos es un proceso de síntesis lógica realizada en dos


niveles de compuertas. Estos diseños tienen mínimo retardo para la propagación de los cambios
entre las entradas y las salidas, pero a costa de compuertas con gran número de entradas.

Profesor Leopoldo Silva Bijit 19-01-2010


26 Sistemas Digitales
Compuertas con muchas entradas requieren mayor superficie para ubicar los transistores dentro
del proceso de integración; por lo cual debido al compromiso área versus tiempo de retardo, los
diseños de sistemas complejos suelen tener más de dos niveles.

La estructura de dispositivos CPLD permite naturalmente la implementación de lógica en dos


niveles. La estructura interna de los dispositivos FPGA, basada en la interconexión de pequeñas
celdas estándares, está más orientada a la implementación de lógica multinivel.

Los sistemas computacionales de ayuda al diseño (CAD) que permiten la optimización de lógica
multinivel, modelan las ecuaciones mediante una red lógica booleana, que es una
generalización de un netlist o un esquemático basado en compuertas.

La Figura 8.42 muestra un esquemático simple, basado en compuertas.

A x1
B
x2
C
D

Figura 8.42. Esquemático basado en compuertas.

La Figura 8.43 representa una red lógica booleana, en la cual las salidas de los bloques,
denominados vértices internos o nodos, son funciones booleanas. Es decir un netlist de
componentes conectadas, pero éstas pueden ser ahora funciones booleanas arbitrarias.

La estructura resultante es un grafo dirigido acíclico.

En un caso general puede suponerse que las entradas a la red, provienen de salidas de latchs o
flip-flops, que almacenan los valores de las variables; y que las salidas de la red son
almacenadas en registros.

A
x1
B
x2
C
D

Figura 8.43. Red lógica booleana.

Los métodos de minimización están basados en transformaciones locales o globales de la red.

Las transformaciones locales apuntan a reducir el área y el tiempo de propagación asociados al


nodo o bien a mapear la función del nodo a determinada interconexión de celdas básicas. Las

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 8. Descomposición 27
transformaciones globales reestructuran la red, por ejemplo: uniendo nodos, o separando un
nodo en dos, o cambiando las conexiones entre nodos.

Si las funciones de cada nodo se representan en forma suma de productos, el costo de la red
puede calcularse como la suma de los literales de cada nodo.

No se dispone, por el momento, de herramientas que logren la optimización de sistemas


complejos multinivel; a cambio se dispone de operaciones que se realizan sobre la red,
intentando un cambio; en caso de disminuir el costo de la red, se acepta el cambio, en caso
contrario se intenta otra modificación, esto puede repetirse hasta que no se logren nuevas
reducciones del costo.

Se entiende por optimización multinivel al proceso de encontrar factores lógicos que sean
comunes, lo cual reduce el fan in pero aumenta el número de niveles. Luego debe mapearse
estas formas factorizadas en alguna de las formas que estén disponibles en una biblioteca.

8.7.2. Operaciones.

Eliminación de un nodo.
Se elimina un nodo interno mediante el reemplazo de la función que lo describe en todos los
nodos que éste alimenta. Se elimina un nodo de pequeño costo, el cual es absorbido por el
resto. También se denomina colapsamiento del nodo x. Esta operación disminuye el tiempo de
propagación de la red pero aumenta los costos de los nodos.

La Figura 8.44 muestra la eliminación del nodo con salida x.

C S=x+C C S=A’+B+C
A
A
B
x=A’+B
B
T=xD A T=(A’+B)D
B
D D

Figura 8.44. Eliminación nodo x.

Creación de un nodo.
Se agrega un nuevo vértice que contiene una subexpresión que es común a dos o más nodos;
luego la salida del nuevo nodo substituye el término común en los nodos.
Se disminuye el tamaño de algunos nodos, agregando un nodo factor; de este modo los nodos
resultantes son de costos menores.

Profesor Leopoldo Silva Bijit 19-01-2010


28 Sistemas Digitales
C S=(A+B)C C S=xC
A
A
B
x=A+B
B
A T=(A+B)D T=xD
B
D D

Figura 8.45. Creación nodo x.

Esta operación también se denomina extracción, ya que obtiene un factor que es común a varias
funciones. Esta operación aumenta el tiempo de propagación de la red pero disminuye los costos
de los nodos.

Las siguientes son operaciones que se realizan sobre un nodo.


Descomposición.
Una función puede descomponerse en partes.
Por ejemplo la función que tiene asociado el nodo: f = abc+abd
Puede descomponerse en tres nodos: f, x e y, con las siguientes funciones para cada nodo:
f = xy x = ab y = c+d
Factorización.
Una función puede descomponerse en sus factores.
Por ejemplo la función que tiene asociado el nodo: f = ac + ad + bc + bd
Puede factorizarse según: f = (a+b)(c+d)

Encontrar métodos para obtener factores adecuados ha sido posible gracias al desarrollo de
nuevos conceptos teóricos: Para lograr disponer del operador división no se definen algunos
postulados del algebra de Boole, de este modo una expresión booleana se comporta como un
polinomio de números reales.
Específicamente no se definen: a+a’=1, aa’=0, aa=a, a+a=a, a+1=1, a+(b+c) =(a+b)(a+c).
Con esto podemos usar para expresiones las reglas algebraicas empleadas con reales. Nótese
que en este ambiente una variable y su complemento no tienen ninguna relación.
Simplificación.
Puede aplicarse un método de simplificación, del tipo minimización en forma de suma de
productos, a la función asociada a un nodo. Si no se eliminan variables se tiene una
minimización local; sin embargo si se elimina una o más variables, se dice que la simplificación
es global ya que cambia la red.
SIS
La forma de efectuar minimizaciones multinivel es a través de herramientas CAD de ayuda al
diseño. Éstas suelen venir incorporadas en el software provisto por los fabricantes de
dispositivos programables, o bien se producen en forma comercial. Por otra parte se puede usar
software libre como sis, que fue desarrollado por la Universidad de Berkeley. Ver Apéndice 6,

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 8. Descomposición 29
sobre uso de sis. Más recientemente está en desarrollo el sistema abc, también en la Universidad
de Berkeley, éste último acepta entradas en verilog estructural.

8.7.3. Formas factorizadas.

Una expresión booleana puede representarse mediante una forma factorizada.

Estas formas podían describirse según:


Es un producto de sumas de productos o una suma de producto de sumas.

Las siguientes son formas factorizadas: x, y’, abc’, a+b’c, ((a’+b)cd+e)(a+b’)+e’


Pero: (a+b)’c no es una forma factorizada ya que la complementación de una expresión no
está permitida, salvo sobre literales.

Puede definirse recursivamente según:


Una forma factorizada es un producto o una suma, donde:
El producto es un literal simple o un producto de formas factorizadas.
La suma es un literal simple o una suma de formas factorizadas.

Las formas factorizadas no son únicas. La siguientes tres formas son equivalentes:
ab+c(a+b) bc+a(b+c) ac+b(a+c)

Una forma suma de productos es una forma factorizada pero seguramente no es una buena
factorización considerando el costo espacial.

La expresión en forma de suma de productos: f = ae+af+bce+bcf+bde+bdf tiene un costo de


16 literales. La forma factorizada equivalente f = (a+b(c+d))(e+f), tiene un costo de 6 literales.

Esto implica que una forma “bien” factorizada es bastante más compacta que la cobertura
mínima formada por la suma de implicantes primos.

La forma suma de productos de la función de 10 variables, func1 tiene 42 literales, con 54


entradas en total, en dos niveles. El or final de esta implementación tiene 12 entradas.
func1=ac+ade+adfg+adfh+adfi+adfj+bc+bde+bdfg+ bdfh+bdfi+bdfj
Esto considerando que func1 está minimizada.

La forma factorizada equivalente func2, tiene 10 literales y 6 niveles. Con 16 entradas en total.
En este diseño todas las compuertas son de dos entradas, salvo una que es de 4.
func2=(a+b)(c+d(e+f(g+h+i+j)))

A través de los ejemplos anteriores se comprueba que las formas factorizadas son útiles en la
reducción del costo de una red multinivel.

En diseños de funciones integradas CMOS, las redes de pull-up y pull down corresponden a la
forma factorizada de la función.

Profesor Leopoldo Silva Bijit 19-01-2010


30 Sistemas Digitales

Problemas resueltos.

P8.1. Descomposición.

Se tiene la siguiente función de cuatro variables.


a b c d f
0 0 0 0 0
0 0 0 1 1
0 0 1 0 1
0 0 1 1 0
0 1 0 0 1
0 1 0 1 0
0 1 1 0 0
0 1 1 1 1
1 0 0 0 1
1 0 0 1 1
1 0 1 0 1
1 0 1 1 1
1 1 0 0 0
1 1 0 1 0
1 1 1 0 0
1 1 1 1 0

Figura P8.1. Función de cuatro variables.

Se efectúa la descomposición, empleando como variables libres: a, b. LO primero que se realiza


es determinar la matriz de descomposición.

ab\cd 00 01 10 11
00 0 1 1 0
01 1 0 0 1
10 1 1 1 1
11 0 0 0 0

Figura P8.2. Matriz de descomposición.

Luego se buscan columnas equivalentes. Se encuentran dos columnas diferentes, lo que implica
que la red tiene descomposición de Ashenhurst.

Luego se escogen las columnas de h.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 8. Descomposición 31

ab\g 0 1
00 0 1
01 1 0
10 1 1
11 0 0
h=ab’+b’g+a’bg’

Figura P8.3. Función sucesora.

Finalmente se determina la función g.


a\b 0 1
0 1 0
1 1 0
g=b’

Figura P8.4. Función predecesora.

La solución alternativa es compactando los renglones. El primer y segundo renglón son


complementarios, los otros dos renglones son constantes, lo cual implica que existe
descomposición de Ashenhurst:

f ga ' b ' g ' a ' b 1ab ' 0ab


g c ' d cd '

P8.2. Factorización.

La función de 5 variables: f AC AD BE BF es de la forma suma de productos, y no


puede ser reducida por simplificación. Su implementación tiene un costo total de:
2+2+2+2+4 = 12 entradas, y 8 literales.

Se desea obtener una forma factorizada implementada mediante NANDs,

Sin embargo, mediante factorización puede escribirse: f A(C D) B( E F ) , la cual


requiere 2+2+2+2+2 = 10 entradas, y 6 literales según puede apreciarse en la Figura P8.5. Esta
expresión no es suma de productos pura; pero su implementación es directa, empleando AND y
OR e implica tres niveles.
C
D
A
f
B
E
F

Figura P8.5. Forma factorizada en tres niveles.

Profesor Leopoldo Silva Bijit 19-01-2010


32 Sistemas Digitales
Las formas factorizadas también pueden mapearse con compuertas nand.

El teorema de De Morgan indica que la siguiente compuerta es equivalente a un NAND.

Figura P8.6. Nand según De Morgan.

Se complementan las variables de entrada y se insertan burbujas inversoras en las entradas de


las compuertas or de primer nivel. Luego se insertan dobles burbujas inversoras a la salida de
los ands del segundo nivel, formando un nand y desplazando la burbuja hacia las entradas de los
or del tercer nivel. Resulta la red de la Figura P8.7.

C’
D A
f
E’ B
F’

Figura P8.7. Diseño en base a NANDs

Luego se representan todas las compuertas, usando el símbolo de los NAND. El diseño se logra
empleando 5 compuertas nand y con 10 entradas. Debe notarse que este método asume que se
dispone de las entradas y sus complementos.

Ejercicios propuestos.

E8.1.

Efectuar la descomposición, si es posible, del problema P8.1, para los siguientes juegos de
variables libres: (a,c), (a,d), (b,c), (b,d) y (c,d). Comparando los resultados, y seleccionando la
mejor descomposición.

E8.2.

Dada la forma factorizada: (a + b + c)(d + e) f+g expandirla a suma de productos.


Comparar las formas respecto del: número de niveles, de entradas y de literales.
Efectuar el diseño empleando solamente compuertas nand.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 8. Descomposición 33
Referencias.

R. L. Ashenhurst, “The decomposition of switching functions”, Bell Laboratories, Tech. Rep.


BL-1(11), 1952.

H. Allen Curtis, “Generalized Tree Circuit”, Lewis Research Center. NASA. 1961.

Marek A. Perkowski, Tadeusz Luba, et al, “Unified approach to functional decompositions of


switching functions”, Portland State University, 1995.

Profesor Leopoldo Silva Bijit 19-01-2010


34 Sistemas Digitales

Índice general.

CAPÍTULO 8 ..............................................................................................................................................1
DESCOMPOSICIÓN .................................................................................................................................1
8.1. DESCOMPOSICIÓN TRIVIAL. TEOREMA DE SHANNON..........................................................................2
8.1.1. Extracción de una variable. .......................................................................................................2
8.1.2. Extracción de dos variables. ......................................................................................................4
8.2. DESCOMPOSICIÓN DE ASHENHURST. ..................................................................................................5
8.2.1. Compactando las columnas. ......................................................................................................6
8.2.2. Redundancia de renglones. ........................................................................................................8
8.2.3. Complejidad de la descomposición. ...........................................................................................9
8.3. DESCOMPOSICIÓN DE CURTIS. ..........................................................................................................10
8.3.1. Descomposición de Curtis, con dos funciones auxiliares. .......................................................11
8.3.2. Descomposición de Curtis, con m funciones auxiliares. ..........................................................12
8.3.3. Fundamentos. ...........................................................................................................................13
8.4. DESCOMPOSICIÓN DE FUNCIONES INCOMPLETAMENTE ESPECIFICADAS. ...........................................19
8.4.1. Ejemplo. ...................................................................................................................................20
8.5. DESCOMPOSICIONES NO DISJUNTAS. .................................................................................................22
8.5.1. Ejemplo. ...................................................................................................................................22
a) Diseño mezclando columnas. ..................................................................................................................... 23
b) Diseño compactando renglones. ................................................................................................................ 24
8.6. DESCOMPOSICIÓN PARALELA. ..........................................................................................................25
8.7. SÍNTESIS MULTINIVEL.......................................................................................................................25
8.7.1. Redes lógicas booleanas. .........................................................................................................25
8.7.2. Operaciones. ............................................................................................................................27
Eliminación de un nodo. ................................................................................................................................ 27
Creación de un nodo. ..................................................................................................................................... 27
Descomposición. ............................................................................................................................................ 28
Factorización. ................................................................................................................................................. 28
Simplificación. ............................................................................................................................................... 28
SIS.................................................................................................................................................................. 28
8.7.3. Formas factorizadas. ...............................................................................................................29
PROBLEMAS RESUELTOS. ........................................................................................................................30
P8.1. Descomposición. .......................................................................................................................30
P8.2. Factorización. ...........................................................................................................................31
EJERCICIOS PROPUESTOS. ........................................................................................................................32
E8.1. ...................................................................................................................................................32
E8.2. ...................................................................................................................................................32
REFERENCIAS. .........................................................................................................................................33
ÍNDICE GENERAL. ....................................................................................................................................34
ÍNDICE DE FIGURAS .................................................................................................................................35

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 8. Descomposición 35

Índice de figuras

Figura 8.1. Descomposición paralela y serial. ............................................................................... 1


Figura 8.2 Función de n variables. ................................................................................................ 2
Figura 8.3 Descomposición trivial. ............................................................................................... 3
Figura 8.4 Implementación con multiplexor. ................................................................................ 3
Figura 8.5. Tabla de verdad de una función de 4 variables. .......................................................... 3
Figura 8.6 Mapa de g0. .................................................................................................................. 4
Figura 8.7 Mapa de g1. .................................................................................................................. 4
Figura 8.8. Descomposición en 4 subfunciones. ........................................................................... 4
Figura 8.9. Multiplexor de 4 vías. ................................................................................................. 5
Figura 8.10. Tabla de verdad de una función de 5 variables. ........................................................ 5
Figura 8.11. Descomposición de Ashenhurst. ............................................................................... 6
Figura 8.12. Matriz de descomposición con dos columnas con valores diferentes. ...................... 6
Figura 8.13. Tabla de verdad de h(g,Xa). ...................................................................................... 7
Figura 8.14. Tabla de verdad de g(Xa). ......................................................................................... 7
Figura 8.15. Multiplexor de m entradas, controlado por variables libres. ..................................... 8
Figura 8.16. La función h es el multiplexor más red combinacional. ........................................... 9
Figura 8.17. Partición {2, 3, 4}. .................................................................................................. 10
Figura 8.18. Descomposición disjunta de Curtis. ........................................................................ 11
Figura 8.19. Descomposición disjunta de Curtis. ........................................................................ 12
Figura 8.20. Matriz de descomposición. ..................................................................................... 13
Figura 8.21. Expansión por columnas. ........................................................................................ 14
Figura 8.22. Expansión por renglones. ........................................................................................ 15
Figura 8.23. Descomposición serial disjunta............................................................................... 15
Figura 8.24. Descomposición serial disjunta. .............................................................................. 17
Figura 8.25. Función h(g,L)......................................................................................................... 18
Figura 8.26. Tablas de verdad de las funciones g1 y g0.............................................................. 19
Figura 8.27. Mapa de Karnaugh de h. ......................................................................................... 19
Figura 8.28. Mapa de Karnaugh de g1 y g0. ............................................................................... 19
Figura 8.29. Descomposición de función con condiciones superfluas. ....................................... 20
Figura 8.30. Formación de clases de compatibilidad máxima. ................................................... 21
Figura 8.31. Mezcla de columnas de clases compatibles. ........................................................... 21
Figura 8.32. Tablas de las funciones predecesoras...................................................................... 22
Figura 8.33. Resultado de la descomposición. ............................................................................ 22
Figura 8.34. Descomposición no disjunta. .................................................................................. 22
Figura 8.35. Descomposición no disjunta. .................................................................................. 23
Figura 8.36. Mapa con variable C repetida. ................................................................................ 23
Figura 8.37. Ashenhurst no disjunta. ........................................................................................... 24
Figura 8.38. Función predecesora g. ........................................................................................... 24
Figura 8.39. Formación de renglones compatibles. ..................................................................... 24
Figura 8.40. Mapa para obtener función g. ................................................................................. 25
Figura 8.41. Descomposición paralela. ....................................................................................... 25
Figura 8.42. Esquemático basado en compuertas. ...................................................................... 26
Figura 8.43. Red lógica booleana. .............................................................................................. 26

Profesor Leopoldo Silva Bijit 19-01-2010


36 Sistemas Digitales
Figura 8.44. Eliminación nodo x. ............................................................................................... 27
Figura 8.45. Creación nodo x. .................................................................................................... 28
Figura P8.1. Función de cuatro variables. .................................................................................. 30
Figura P8.2. Matriz de descomposición. .................................................................................... 30
Figura P8.3. Función sucesora.................................................................................................... 31
Figura P8.4. Función predecesora. ............................................................................................. 31
Figura P8.5. Forma factorizada en tres niveles............................................................................ 31
Figura P8.6. Nand según De Morgan. ......................................................................................... 32
Figura P8.7. Diseño en base a NANDs ....................................................................................... 32

Profesor Leopoldo Silva Bijit 19-01-2010


1

Capítulo 9

Sistemas secuenciales

9.1. Definiciones

Evento

Se denomina evento al cambio de valor de una señal en un instante de tiempo. Pasar de nivel
lógico 1 a 0 se denomina canto de bajada. Un canto de subida se produce cuando la señal pasa
de nivel lógico 0 a 1.

A un evento también se lo denomina mensaje; en un caso más general cuando se tienen varias
señales, los valores que toman los eventos suelen interpretarse como símbolos pertenecientes a
un alfabeto.

Máquina abstracta.

Una máquina abstracta es un modelo de computación que establece cómo se generan las
acciones, o eventos de salida, a partir de los mensajes o eventos de entrada.

Mensajes Acciones
Máquina

Figura 9.1 Máquina abstracta.

Existen sistemas o máquinas que pueden cambiar sus atributos en función del tiempo, se
denominan dinámicos.

Estado.

Se denomina estado al conjunto de atributos que representan las propiedades de un sistema u


objeto en un determinado instante de tiempo.
En el caso de componentes digitales que tienen dispositivos que pueden almacenar valores, se
denomina estado al contenido de la memoria.

El estado refleja la condición en que se encuentra el sistema o máquina digital.

Profesor Leopoldo Silva Bijit 19-01-2010


2 Sistemas Digitales
Máquinas de estados.

Se denominan máquinas de estados a aquellas cuyas salidas, en un instante de tiempo,


dependen de los valores que toman las entradas y el estado en ese instante de tiempo. Lo cual
puede describirse por una función de transición que especifique los valores de las salidas y del
próximo estado para cada una de las combinaciones posibles de las entradas y del estado
presente. Las computaciones comienzan a partir de un estado inicial y de una secuencia de
valores de la entrada.

Transición.

Se denomina transición al cambio de estado del sistema, y ésta debe indicar cómo se pasa de un
estado a otro.
Un modelo matemático adecuado para la función de transición es una matriz, en la cual los
renglones y columnas representan los diferentes estados internos y los eventos de entrada,
respectivamente. El contenido de la matriz especifica el próximo estado.

Diagrama de estados.

Se denomina diagrama de estados a una representación gráfica de la matriz de transiciones, en


la cual los estados se representan como círculos (o rectángulos) y las transiciones como líneas
orientadas, que conectan los estados, y que representan los eventos de entrada.

Si puede describirse un sistema mediante un diagrama de estados o a través de las matrices de


transiciones y de salida se dice que el sistema es secuencial. En un sistema secuencial las
salidas dependen de las entradas presentes y de los valores de las entradas anteriores, mientras
que en un sistema combinacional las salidas sólo dependen de las entradas presentes o actuales.

Autómata de estados finitos determinista.

Si el número de estados es finito, se denominan máquinas de estados finitos. Si el próximo


estado queda unívocamente determinado por un solo evento se denominan determinísticas.
Si hay transiciones sin un evento de entrada o más de una transición para un par determinado
entrada-estado, se denominan no determinísticas.

Es posible generar un autómata de estados finitos determinista que tenga las mismas salidas,
para iguales entradas, que uno no determinista.

Tipos de máquinas.

Existen varios tipos de máquinas. Se denominan de Mealy aquéllas cuyas salidas se producen
en las transiciones entre estados; y Moore a aquéllas en las cuales las salidas están asociadas al
estado. Existen procedimientos para convertir un modelo de Mealy en uno de Moore.
Un diagrama de la estructura interna de la máquina abstracta que se ilustra en la Figura 9.1, se
muestra en la Figura 9.2.

Una máquina de estados finitos puede definirse según:

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 9. Sistemas secuenciales 3

MEF(x, y, z, FPE, FS)


Donde:
x es el conjunto finito de valores que puede tomar la entrada, que se define como el alfabeto de
entrada.
y es el conjunto de estados internos,
z es el alfabeto de salida. El conjunto finito de valores que puede tomar la salida,
FPE es la función de próximo estado, determina mediante una matriz el próximo estado Y,
dependiendo del valor que tenga la entrada x, y el estado presente y. Los renglones suelen ser
los diferentes estados internos y las columnas los diferentes valores que puede tomar la entrada.

Y = FPE(x, y)

FS es la función de salida. En el caso de máquinas de Moore: z=FS(y), este caso se ilustra en la


Figura 9.2; en el modelo de Mealy: z=FS(x, y).
Reset

x FPE M FS

Y y z

Figura 9.2 Modelo de Moore.

Las funciones de próximo estado y de salida son funciones combinacionales. La Figura 9.2,
muestra un bloque de memoria M, que sostiene durante un tiempo el valor del estado presente y,
una vez calculado el próximo estado Y, éste se registra como el nuevo estado actual.

Reloj.

Si las transiciones ocurren en determinados instantes de tiempo se denominan sincrónicas. Los


instantes en que se producen los cambios de estado están asociados al canto de subida, o al de
bajada, de una señal denominada reloj.

Máquinas secuenciales.

Las máquinas de estados finitos suelen denominarse máquinas secuenciales ya que a partir de
un estado inicial y de una secuencia ordenada de eventos de entrada, generan una secuencia de
estados por los que pasa la máquina, y a su vez una secuencia de acciones de salida.

Las máquinas secuenciales son un poderoso modelo para implementar esquemas de control
secuencial (dependientes de la historia pasada), tanto en hardware como en software. El modelo

Profesor Leopoldo Silva Bijit 19-01-2010


4 Sistemas Digitales
de máquina secuencial también facilita el diseño de la programación de sistemas multitareas, en
tiempo real, utilizando microcontroladores.

El modelo de máquina secuencial se emplea en Teoría de lenguajes formales y tiene importantes


aplicaciones en reconocimiento de patrones y analizadores léxicos y sintácticos, por mencionar
algunas.

Máquinas secuenciales sincrónicas.

Si la memoria está formada por un conjunto de flip-flops comandados por el mismo reloj, la
actualización del estado se produce en instantes sincronizados por el reloj. La Figura 9.3
muestra el diagrama general de Moore de una máquina secuencial sincrónica.
Reset’

x FPE M FS

Y y z
D Q

Clk

Figura 9.3 Modelo de Moore sincrónico.

Si en la Figura 9.2, el bloque de memoria M, está formado por unidades de retardo se tiene un
modelo de representación de máquinas secuenciales asincrónicas.

Síntesis lógica.

Se denomina síntesis lógica al procedimiento por el cual a partir de la descripción de una


máquina de estados finitos: MEF(x, y, z, FPE, FS) se obtiene un circuito digital C(G, W), donde
G es un conjunto de compuertas y flip-flops y W es un conjunto de alambres que interconectan
las componentes de G. El circuito C también se denomina red booleana.

Figura 9.4 Circuito digital C(G, W).

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 9. Sistemas secuenciales 5
9.2. Secuencias.

En caso de existir múltiples variables lógicas de entrada, al valor de la combinación (o vector)


se lo denomina palabra de entrada; y más simplemente: entrada.
Los distintos valores que toma la entrada, a medida que transcurre el tiempo, se denomina
secuencia temporal de entrada. En forma análoga se define una secuencia temporal de salida y
de estados internos.

Una secuencia de valores puede anotarse:


xi (t ) = xi (t0 ), xi (t1 ), xi (t2 ), ..., xi (tk ),... xi (tn )...

Con: tk t0 k t , los valores de la secuencia temporal se asocian a una secuencia de enteros.


Si t es constante, se denomina secuencia sincrónica al caso anterior.
Si t es variable, entonces tk describe los valores que toma una variable aleatoria; en este caso se
dice que la secuencia es asincrónica.
Las variables xi , toman valores discretos (0 y 1); el tiempo también puede considerarse una
variable discreta. Por ejemplo, podría ser de interés conocer el tiempo cuando se producen
cambios (en secuencias asincrónicas) o a intervalos regulares (intervalos de reloj, en secuencias
sincrónicas).
Una manera simplificada de anotar una secuencia es identificar sus valores en los diferentes
tiempos de interés.
xi (k ) xi (0), xi (1), xi (2), ..., xi ( k ),... xi ( n)...

Ejemplos de secuencias.

a) Sincrónica de nivel.

0 1 2 3 4 5 6 7 8 9 (valores de k)

t0
...
xn = { 0 1 0 0 1 1 0 1 0 0 ... }

Figura 9.5. Secuencia sincrónica de niveles.

Se dice que la señal xn es una secuencia sincrónica de niveles, con respecto a un reloj, ya que
ésta sólo cambia en cantos de bajada (o de subida) del reloj, y además permanece constante el
nivel de la señal entre cantos de bajada (o de subida) del reloj.
La Figura 9.5, muestra una secuencia sincronizada por los cantos de bajada del reloj.

Profesor Leopoldo Silva Bijit 19-01-2010


6 Sistemas Digitales

b) Sincrónica de pulsos

reloj

xp = { 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, ... }

Figura 9.6. Secuencia sincrónica de pulsos.

xp es una secuencia sincrónica de pulsos. Los valores de la secuencia se interpretan cuando el


reloj está alto. No toma valores entre pulsos.
c) Asincrónica de nivel

t0 t1 t2 t3 t4 t5

xa = { 0 1 0 1 0 1 ...}

Figura 9.7. Secuencia asincrónica de niveles.

Los intervalos ti tienen una duración aleatoria.


d) Asincrónica de pulsos.

t t t t t t t
0 1 2 3 4 5 6

Figura 9.8. Secuencia asincrónica de pulsos.

Los pulsos, de igual ancho, se presentan con intervalo aleatorio.

9.3. Modelo Secuencial

En un sistema combinacional, la salida es generada simultáneamente; es decir, en forma


concurrente o paralela y sólo depende de la entrada. Los cambios individuales de cada una de
las señales se producen en una secuencia temporal, también se dice serial en el tiempo, y pueden
contener perturbaciones antes de estacionarse en valores estables. Las redes combinacionales se
dice que no tienen memoria, y no deben tener realimentaciones; es decir que algunas salidas
estén conectadas a las entradas.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 9. Sistemas secuenciales 7
En un sistema secuencial, para poder generar la salida en un tiempo dado, es preciso conocer
valores previos de algunas variables. No bastan los valores presentes de la entrada. Es decir,
debe almacenarse información concerniente a los valores de las entradas pasadas, para poder
generar la salida a partir de la entrada presente y los valores almacenados. La información
anteriormente mencionada, se almacena en estados internos.

Los valores que deben registrarse para recordar la situación, debida a los valores de las entradas
pasadas, se almacenan en variables de estado. Podemos considerar que las variables de estado
son salidas de elementos con memoria (flip-flops, registros, latches, retardos).

En cualquier instante, una máquina secuencial está en uno de un número finito de estados; éstos
quedan determinados por el valor de las variables de estado. Por ejemplo, si hay cuatro estados,
se requieren 2 variables de estado para registrar que el sistema se encuentra en uno de los cuatro
estados posibles: 00, 01, 10, 11.

La secuencia de estados internos resume la historia temporal del sistema secuencial.


A veces se emplea el término: estado total, para referirse a la combinación de los estados
internos con la entrada.

Si se aplica una secuencia de entrada, la máquina generará una secuencia de salida, y pasará por
una secuencia de estados internos.

En la Figura 9.2, la memoria puede ser modelada por:


 
y (t t ) Y (t )

Es decir, en un intervalo de tiempo después, la salida de la memoria y tomará el valor actual de


la entrada a la memoria Y. Puede representarse la secuencia de valores temporales, de cada uno
de los estados, en términos de números enteros, según:

y j (k 1) = Y j (k )

La memoria debe ser capaz de almacenar los Yj (k) y sostener estos valores durante el intervalo
(k+1). Debe notarse que los valores y j (k 1) son estables, pero los valores Y j (k ) , en el
intervalo anterior, pueden presentar perturbaciones al inicio para estabilizarse hacia el final del
intervalo. En el intervalo k-ésimo, la entrada a la memoria j-ésima es Y j (k ) ; la salida de esa
memoria, en el mismo intervalo, es y j (k ) .

Y(k) y(k+1)
Y(k) y(k)

k k+1

Figura 9.8. a. Modelo de memoria.

Profesor Leopoldo Silva Bijit 19-01-2010


8 Sistemas Digitales
En el modelo planteado, la salida y el próximo estado interno son funciones del estado total. A
estas máquinas se las denomina determinísticas.

Es decir, con n entradas, m variables de estado, y p variables de salida, se tienen:

zi FSi ( x1 ,.., xn , y1 ,.. ym ) i (1.. p)


Yj FPE j ( x1 ,.., xn , y1 ,.. ym ) j (1..m)

Ecuaciones que indican que tanto la salida como el próximo estado dependen de la entrada y el
estado actual.

Empleando el modelo de memoria, puede eliminarse la variable Y, se logra:

y j (k 1) FPE j ( x1 (k ),...xn (k ), y1 (k ),... ym (k ))

Ecuación de recurrencia que permite determinar el próximo estado, a partir de la entrada y el


estado presente.

Para resolverla, es preciso conocer el valor del estado inicial y la secuencia de entrada a partir
del tiempo inicial.

Gráficamente:
y (0) y (1) y (2) y (3)
....... ..
x (0) x (1) x (2) x (3)

Para conocer y(1) se requiere conocer y(0) y x(0). Para conocer y(2) se requiere conocer y(1) y
x(1). Para conocer y(3) se requiere conocer y(2) y x(2). Y así sucesivamente.

Si el próximo estado es igual al actual, se dice que es un estado estable:

y (k 1) = y (k )

Si el próximo estado es diferente al actual, se dice que habrá una transición o cambio de estado.
Ese estado actual se denomina inestable:

y(k 1) y (k )

Lo anterior implica que una de las variables de estado conmuta, o cambia, su valor lógico.

Los elementos de almacenamiento pueden ser simplemente líneas de realimentación, las que
tienen asociado un retardo entre la entrada y la salida, en este caso se tienen sistemas
secuenciales asincrónicos.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 9. Sistemas secuenciales 9
En sistemas secuenciales sincrónicos los elementos de almacenamiento serán flip-flops,
comandados por un reloj.

9.4. Representación de máquinas secuenciales

Se entiende por representación la descripción de cómo se pasa de un estado a otro, debido a los
cambios de las entradas. Las representaciones deben describir en forma precisa y completa a la
máquina. Además, deben ser adecuadas para una manipulación formal.

9.4.1. Modelo de Mealy

Es un modelo secuencial en el cual la salida está asociada a las transiciones entre estados. Las
salidas cambian instantáneamente con los cambios de las entradas; el cambio de estado, se
produce sincronizadamente con el reloj. El diagrama se muestra en la Figura 9.9.
Reset’

x z
M
FS
Y y
FPE DQ

Clk

Figura 9.9. Modelo de Mealy.

i) Diagrama de estados
Un diagrama de estados es un grafo en el cual, los estados se representan mediante círculos, y
por líneas rotuladas y orientadas las transiciones. El rótulo indica la entrada y la salida que
provoca la transición. Se separan con una pequeña barra diagonal (slash, en inglés).
En general:
y2
x/z

y1

Figura 9.10. Diagrama de estados de Mealy.

El diagrama anterior puede leerse: Estando en el estado y1 , cuando llega la entrada x se pasa al
estado y2 , con salida z.

Profesor Leopoldo Silva Bijit 19-01-2010


10 Sistemas Digitales
Si el sistema es sincrónico la transición entre estados se produce en el instante en el cual se
produce el canto sincronizante del reloj.
Si el sistema es asincrónico, la transición se produce debida a un evento de la entrada; por
ejemplo cuando ocurre un canto de subida o de bajada de alguna de las entradas.
ii) Tabla de transición de estados
A esta tabla también se la llama matriz de transiciones.
En las columnas se indican los diferentes valores que puede tomar la entrada. En los renglones
se indican los estados internos actuales. En cada casillero de la matriz, se indica el próximo
estado y la salida asociada. La matriz suele representarse como un mapa de Karnaugh.

Esquemáticamente:
x

y Y/z

Figura 9.11. Tabla de transición de estados de Mealy. FPE.

Las representaciones son equivalentes, puede lograrse una a partir de la otra. Es decir, la matriz
de transiciones y el diagrama de estado suministran la misma información.

Pueden emplearse tablas separadas para la salida z y para el próximo estado Y.


x x

y Y y z

Y(x,y) Matriz Transiciones z(x,y) Matriz de salida

Figura 9.12. Matriz de transiciones y matriz de salida.

9.4.2. Modelo de Moore

Modelo secuencial en el cual la salida sólo está asociada al estado presente. Las salidas y el
estado cambian sólo en los cantos de sincronización del reloj.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 9. Sistemas secuenciales 11
Reset’

x(k) FPE M FS

y(k+1) y(k) z(k)


D Q

Clk

Figura 9.13. Modelo de Moore

i) Diagrama de estados

y2/z2

x
y1/z1

Figura 9.14. Diagrama de estados de Moore.

El diagrama anterior, puede leerse: Estando en estado y1 , con salida z1 ; cuando ocurre la entrada
x se pasa al estado y2 , con salida z2 .
La salida no cambia en la transición; por esta razón, las salidas se asocian a los estados.
ii) Tabla de transiciones x

y Y y z

Figura 9.15. Tabla de transiciones modelo de Moore.

El modelo de Mealy es más general que el de Moore. Este último es un caso particular del
primero.

Las representaciones anteriores permiten analizar una máquina dada.


Entendemos por análisis, al proceso de determinar el funcionamiento de la máquina a partir del
diagrama de estados o de su tabla de transiciones.

Profesor Leopoldo Silva Bijit 19-01-2010


12 Sistemas Digitales
El análisis de una máquina secuencial permite obtener la secuencia de salida a partir de la
secuencia de entrada; y también determinar la secuencia de estados internos.

Ejemplo 9.1

Determinar la secuencia de salida para la siguiente matriz de transiciones:

X
0 1
Estado
A D/0 C/1 Secuencia de Entrada ={0,1,1,0,1,0,1,1,0,0,0,...}
B B/1 A/0
Estado inicial = A
C C/1 D/0
D A/0 B/1
Próximo estado/z

Figura 9.16. Matriz de transiciones ejemplo 9.1.

La lectura de algunas transiciones:


Estando en A, con entrada 0, se pasa al estado D con salida 0.
Estando en D, con entrada 1, se pasa al estado B con salida 1.

Procediendo en forma similar, se logra:

Secuencia 0 1 2 3 4 5 6 7 8 9 10
Entrada 0 1 1 0 1 0 1 1 0 0 0
Estado actual A D B A D B B A C C C
Próximo estado D B A D B B A C C C C
Salida 0 1 0 0 1 1 0 1 1 1 1

Figura 9.17. Secuencia de salida y de estados.

La máquina de Mealy anterior, se comporta como un generador de secuencias.

x z

... ...
0123.. 012...

Figura 9.18. Esquema generador de secuencias.

Se ingresa la secuencia de valores: x0, x1, x2,… y se genera la secuencia de valores de salida: z0,
z1, z2, ...

Puede obtenerse el diagrama de estados, a partir de la matriz de transiciones:

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 9. Sistemas secuenciales 13
1/1
0/1
A C
0/0
1/0 0/0 1/0

B D
0/1 1/1

Figura 9.19. Diagrama de Estados ejemplo 9.1.

Ejemplo 9.2.

Determinar la secuencia de estados para la siguiente máquina de Moore:


1
0
C/0 A/1

0 1
1 0

B/0

Figura 9.20. Diagrama de estados de Ejemplo 9.2.

Con estado inicial C y secuencia de entrada: {0, 0, 0, 1, 1, 1,...}


Se obtiene:

i 0 1 2 3 4 5
Entrada 0 0 0 1 1 1
Estado presente C B A A B C
Estado próximo B A A B C A
Salida 0 0 1 1 0 0

Figura 9.21. Secuencia de salida Ejemplo 9.2.

Las máquinas de Moore suelen emplearse como reconocedores de secuencias. Es decir, que
entreguen una salida cuando ocurre una determinada secuencia en la entrada.

Pueden obtenerse la tabla de transiciones y la tabla con la lógica de salida, a partir del diagrama
de estados:

Profesor Leopoldo Silva Bijit 19-01-2010


14 Sistemas Digitales

Estado Entrada x Estado Salida


actual 0 1 A 1
A A B B 0
B A C C 0
C B A
Próximo
Estado

Figura 9.22. Tabla de transiciones Ejemplo 9.2

Existen procedimientos sistemáticos para representar un diagrama de Mealy mediante uno de


Moore. Debe considerarse la representación de Mealy como más general que la de Moore.

Ejemplo 9.3.

Obtener el diagrama de estados de un sistema secuencial sincrónico que es capaz de detectar


la secuencia 110 cada vez que ésta se presente. Determinar la secuencia de salida, cuando se
aplica en la entrada la secuencia: 011011..

Como puede observarse en la Figura 9.23, el diagrama de Moore, requiere 4 estados:


1 1 0
0

Inicio Estado0 Estado1 Estado2


0 0 0 1
0 1

1
reset
0

Figura 9.23. Diagrama de Moore Ejemplo 9.3.

Moore 0 1 2 3 4 5
Entrada 0 1 1 0 1 1
Estado presente Inicio Inicio Est0 Est1 Est2 Est0
Estado próximo Inicio Est0 Est1 Est2 Est0 Est1
Salida 0 0 0 0 1 0

Figura 9.23a. Secuencia de salida modelo de Moore Ejemplo 9.3.

El diagrama de Mealy requiere tres estados:

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 9. Sistemas secuenciales 15

1/0 1/0
0/0 1/0

Inicio Estado 0 Estado 1


0/0

0/1
reset
Figura 9.24 Diagrama de Mealy Ejemplo 9.3.

Mealy 0 1 2 3 4 5
Entrada 0 1 1 0 1 1
Estado presente Inicio Inicio Est0 Est1 Inicio Est0
Estado próximo Inicio Est0 Est1 Inicio Est0 Est1
Salida 0 0 0 1 0 0

Figura 9.24a. Secuencia de salida modelo de Mealy Ejemplo 9.3.

Algunas observaciones sobre las representaciones:


Las salidas de Moore son sincrónicas con el reloj, las de Mealy son asincrónicas; es decir,
apenas ocurre una transición en la entrada, se genera el próximo estado y se produce la salida
sin esperar el canto del reloj.

En general los modelos de Mealy pueden generar las mismas secuencias de salidas que una
máquina de Moore, pero con menos estados. Nótese que las salidas de Mealy ocurren un
intervalo de tiempo antes que las de Moore.

En las máquinas de Mealy, las salidas z pueden cambiar inmediatamente cuando ocurre un
cambio en las entradas, y éstas pueden cambiar entre pulsos del reloj. Si esto no se desea,
pueden sincronizarse las salidas asincrónicas, de una máquina de Mealy, pasándolas por un flip-
flop. Esto se muestra en la Figura 9.24b, donde la salida zr , tiene sus cambios sincronizados por
el reloj. Esto aumenta el número de flip-flops requeridos para la implementación y además se
posterga la salida hasta el próximo canto del reloj. Ver Capítulo 11.9.

Profesor Leopoldo Silva Bijit 19-01-2010


16 Sistemas Digitales
Reset’

x(k) z(k+1) zr(k)


M
FS
y(k+1) y(k)
FPE D Q

Clk

Figura 9.24b. Salidas registradas en modelo de Mealy.

En el modelo de Moore, el circuito combinacional de salida puede generar perturbaciones, éstas


pueden evitarse si las salidas se generan en función del estado próximo. Ver Capítulo 11.9.
Reset’

x(k) zr(k)
M
FS
y(k+1) y(k)
FPE DQ

Clk

Figura 9.24c. Modelo de Moore. Salida registrada.

En diseños de máquinas secuenciales de estados finitos completamente sincrónicas, debe


preferirse el modelo de Moore. Así también cuando se empleen dispositivos lógicos
programables (PLD o FPGA) para la implementación.

Ejemplo 9.4.

Los siguientes diagramas ilustran la diferencia entre el número de estados, requeridos para cada
uno de los modelos de máquina, para un detector de la secuencia de dos unos seguidos, cada vez
que ésta se presente.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 9. Sistemas secuenciales 17

reset
0 reset
S0/0
0/0
S0
0 1
0/0 1/0
S1/0 0
S1
1
1
S2/1 1/1

Figura 9.25. Diagramas de Mealy y Moore ejemplo 9.4.

Ejemplo 9.5. Modelado de diagrama de estados. Lavadora.

En situaciones reales puede concebirse el funcionamiento de un sistema mediante la elaboración


de un diagrama de estados.

Supongamos que disponemos de una lavadora, que externamente tiene tres botones: Encender,
Detener, Lavar; de un indicador luminoso L, y de un interruptor ubicado en la puerta.
La Figura 9.26 ilustra un esquema de los controles e indicadores de la máquina lavadora.

encender detener lavar L

puerta

Figura 9.26. Lavadora.

Se consideran eventos (entradas) la activación de los botones de la consola y del interruptor de


la puerta. El indicador luminoso es una acción (salida) que debe ejecutarse.
Se visualizan tres estados asociados a la lavadora: apagada, detenida y lavando. La detección de
cuáles son los estados, está basada en la visualización de situaciones distinguibles que se
mantienen un determinado tiempo.

Profesor Leopoldo Silva Bijit 19-01-2010


18 Sistemas Digitales

Los eventos producen cambios de estado.

Estando apagada, el evento encender dispara una transición al estado detenida (o encendida).
Estando en el estado detenida, la ocurrencia del evento lavar produce la transición al estado
lavando.
Si está lavando, la presión del botón detener gatilla la conmutación al estado detenida.
Al producirse el evento abrir la puerta, la lavadora debe pasar al estado apagada.

La luz L debe encenderse cuando hay potencia aplicada a la lavadora. Es decir, desde que se
pasa de apagada a encendida y mantenerse iluminada hasta que se abra la puerta, cuando se pasa
a apagada.

Las especificaciones anteriores permiten dibujar un diagrama de estados, el que se muestra en la


Figura 9.27.

Los eventos producen cambios de estado. Cada transición o cambio de estado, está asociada a
un (y sólo un) evento. Un evento puede desencadenar varias transiciones, en el ejemplo, la
entrada o evento puerta produce dos transiciones, dependiendo del estado en que se encuentra la
lavadora.
La única acción de salida L se ilustra asociada a las transiciones (Mealy). También es posible
asociarla a los estados (Moore): la luz L debe estar encendida mientras la lavadora esté
encendida o lavando; debe apagarse cuando esté en el estado apagada.
Encender/ L Lavar/ L

Apagada Encendida Lavando

Puerta/ L’ Detener/ L

Puerta/ L’

Figura 9.27. Diagrama de estados de la Lavadora.

El estado inicial para esta máquina es el estado apagada.

Sub-máquinas.
La descripción de la lavadora puede seguir especificándose con mayor detalle, si se define con
mayor precisión el estado lavando. Esto significa observar señales internas de la lavadora.
Si se define el evento rotar, que produce que el motor de una vuelta, y de la señal de salida giro
(G=1 a la izquierda, y G=0 a la derecha) y se define que el proceso de lavar sea dar dos vueltas
a la izquierda seguidas por dos vueltas a la derecha, en el diagrama aparecen cuatro nuevos
estados para describir el estado lavando.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 9. Sistemas secuenciales 19

Apagada

Puerta/ L’ Encender/ L
Puerta/ L’
Puerta/ L’
Encendida
Lavar/ L Detener/ L

Rotar
Izquierda/ G Derecha 1/ G’

Puerta/ L’ Puerta/ L’
Rotar Rotar

Izquierda 1/ G Derecha/ G’
Rotar

Figura 9.28. Diagrama de estados ampliado de la Lavadora.

La descripción permite diferentes niveles de abstracción, en el ejemplo, lavando se ha descrito


como una sub-máquina digital.

9.4.3. Transformación de Mealy a Moore.

a) En el diagrama de Mealy deben separarse aquellos estados, para los cuáles existan
transiciones con diferentes valores de salida, para igual entrada:

x/0
x/0 Sa0
Sa

x/1 Sa1
x/1
Figura 9.29. Separación de estados.

Luego cada estado tendrá sólo un valor de salida asociado, y se transforma a representación de
Moore, según:

Profesor Leopoldo Silva Bijit 19-01-2010


20 Sistemas Digitales

x Sa0/0

Sa1/1
x

Figura 9.30. Conversión a Moore.

b) Una vez agotado el paso a), para el estado inicial pueden presentarse dos casos:
b1) Estado inicial con salida 0. No requiere modificación.

reset S/0

Figura 9.31. Estado inicial con salida cero.

b2) Estado inicial con salida diferente de cero.

S/1
reset

Figura 9.32. Estado inicial con salida uno.

En este caso debería haber salida, sin haber aplicado una entrada. Se corrige agregando un
estado adicional:

S/1

Si/0
reset

Figura 9.33. Agregar estado inicial.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 9. Sistemas secuenciales 21
Ejemplo 9.6.Transformación para el reconocedor de dos unos seguidos.
Al modificarse el estado S1 del diagrama de Mealy, resulta:

reset
reset 0/0
S0
0/0
S0
0/0 1/0

0/0 1/0 0/0


S10
S1
1/1
1/1
1/1 S11

Figura 9.34. Separación de estado S1.

No es necesario corregir el estado inicial. Luego puede asociarse la salida al estado y no a la


transición hacia el estado.

reset
0/0
S0

0/0 1/0

S10 0/0

1/1
1/1
S11

Figura 9.35. No es necesario corregir S0.

Finalmente puede plantearse:

Profesor Leopoldo Silva Bijit 19-01-2010


22 Sistemas Digitales

reset
0
S0/0

0 1

S10/0 0

1
1
S11/1

Figura 9.36. Diagrama de Moore ejemplo 9.6.

Que resulta igual al diagrama de Moore planteado antes, en el ejemplo 9.4.

El proceso de transformación explica el mayor número de estados que tiene generalmente un


diagrama de Moore, respecto a uno de Mealy.
Ejemplo 9.7.
Detector de las secuencias 01 ó 10, cada vez que se presenten.

Para un modelo de Moore, se especifican las salidas asociadas al estado.

0
reset entrada estado próximo salida
actual estado
B/0 1 D/1 1 - A - 0
0 0 A B 0
0 0 1 A C 0
0
reset 0 0 B B 0
A/0 0 1 B D 0
1 0
0 0 C E 0
1 0 1 C C 0
1
0 0 D E 1
C/0 E/1 0 1 D C 1
0
0 0 E B 1
0 1 E D 1
1

Figura 9.37. Representación de Moore Ejemplo 9.7.

En un diagrama de Mealy, se especifican las salidas asociadas a las transiciones.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 9. Sistemas secuenciales 23

0/0
reset entrada Estado próximo salida
B actual estado
0/0 1 - A - -
0 0 A B 0
reset 0 1 A C 0
A 0/1 1/1
0 0 B B 0
0 1 B C 1
1/0
0 0 C B 1
C 0 1 C C 0

1/0

Figura 9.38. Representación de Mealy Ejemplo 9.7.

9.5. Tipos de máquinas secuenciales

Si bien existen innumerables formas que pueden tomar los diagramas de estados, pueden
describirse algunos tipos que se presentan frecuentemente.

Máquinas que analizan secuencias de largo fijo con un recorrido fijo. Por ejemplo:
adquirir 5 valores de la secuencia y tomar una acción, de acuerdo a los valores.
Máquinas que analizan secuencias de largo fijo con un recorrido fijo, con reintento en
caso de falla. Si una subsecuencia no es correcta, vuelven al estado inicial; o a un estado
previo.
Reconocedores continuos. Se genera una salida cada vez que se detecta una secuencia
dada. En estas máquinas, cada estado recuerda una secuencia previa de la entrada. En
este caso, se habla de estado inicial sólo cuando la máquina comienza a funcionar.

9.6 Síntesis de Diagramas de Estado. Modelado

Se desea obtener el diagrama de estados a partir de una descripción en lenguaje natural.

Nuestro lenguaje común suele ser impreciso y a veces redundante. Por esta razón es conveniente
emplear las construcciones estructuradas de los lenguajes de programación. Ver Apéndice 5,
sobre Uso de Verilog.

En general, el paso de una descripción en lenguaje natural a la tabla de estados, se efectúa por
pasos tentativos, hasta asegurar que el modelo formal obtenido cumple las especificaciones
dadas.

Veremos algunos ejemplos.

Profesor Leopoldo Silva Bijit 19-01-2010


24 Sistemas Digitales
9.6.1 Reconocedor de secuencias de largo fijo. Verificador BCD

La máquina reconoce si una secuencia de cuatro bits, en serie, es BCD.


Tenemos una máquina con una entrada y una salida:

x M.S. z

Figura 9.39 Diagrama en bloque verificador BCD.

Tenemos que interpretar cuando se genera la salida. Como para cada valor i de la secuencia de
entrada debe existir un valor de la secuencia de salida; debemos decidir qué salida generar
cuando han llegado uno, dos o tres valores de la entrada. En estos casos asumiremos salida cero,
dejando salida uno si los cuatro bits no pertenecen al código BCD. El bit más significativo es el
primero.
Estado Inicial

0/0 1/0
b c
0/0 1/0 0/0 1/0

d e f g
0/0 1/0 0/0 1/0 0/0 1/0 0/0 1/0

h i j k l m n o
0/0 1/0 0/0 1/0 0/0 1/0 0/0 1/0 0/0 1/0 0/1 1/1 0/1 1/1 0/1 1/1

Figura 9.40 Diagrama de estados verificador BCD.

Cada estado representa una subsecuencia previa de la entrada. Por ejemplo, en el estado l se ha
recibido la secuencia 100. En el estado d se ha recibido 00.

Este primer diseño es muy sistemático; se forma un árbol de decisión. De cada estado, se pasa a
dos próximos con entrada cero y uno respectivamente.

Estos problemas no tienen una solución única. Puede encontrarse un diagrama de estados más
simple. Por ejemplo:

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 9. Sistemas secuenciales 25

a
1/0
0/0

b e 1/0
/0 0/0

c f g
1/0
/0
/0
/0 /0
0/0
d h
/0 /1

Figura 9.41 Diagrama de estados reducido del verificador BCD.

Se emplea para indicar que con entrada cero o uno, se pasa al próximo estado. Este segundo
diagrama requiere tres flip-flops para representar los siete estados. El anterior requiere 4 flip-
flops para identificar 15 estados.
Existen procedimientos sistemáticos para encontrar estados equivalentes y removerlos de los
diagramas, esto se desarrolla en el Capítulo 12.

9.6.2. Reconocedor continuo.

Se desea obtener el diagrama de estados de una máquina secuencial que produzca una salida alta
cada vez que se detecta la secuencia 0101 en la entrada; la salida debe ser cero en el resto de los
casos.

Si por ejemplo la entrada es: 0, 1, 0, 1, 0, 1, ...


la salida debe ser: 0, 0, 0, 1, 0, 1, ...

A partir de un estado inicial A, se plantea el diagrama para la secuencia que se desea reconocer:

A B C D
0/0 1/0 0/0

1/1

Figura 9.42 Reconocedor de secuencia 0101.

Luego, lo que resta es completar las transiciones que faltan. Desde cada estado deben salir dos
transiciones; en este caso, sólo hay una entrada, y ésta puede tomar valores 0 y 1.

Profesor Leopoldo Silva Bijit 19-01-2010


26 Sistemas Digitales

Es recomendable conceptualizar el significado de los estados, del siguiente modo:

A: inicial, se espera un cero.


B: después de haber aceptado un cero.
C: después de haber aceptado la secuencia 01.
D: después de haber aceptado la secuencia 010.

Observaciones:

Estando en D, si llega un cero, debe ir al estado B, pues ya tendría el primer cero de la


secuencia.
Estando en B, debe permanecer en B mientras lleguen ceros.
Permanece en A, mientras lleguen unos.
Estando en C, si llega un uno, debe ir al estado inicial.
Estando en D, si llega un uno, se reconoce secuencia correcta; y debe ir a C. Ya que tiene los
dos primeros bits reconocidos.

Resulta el siguiente diagrama de estados:


1/0

0/0
1/0 0/0
A B
B C D
0/0 1/0
1/1
0/0
Figura 9.43 Diagrama de estados completo del reconocedor continuo.

9.6.3. Reconocedor continuo con reintento en caso de falla

Diseñar máquina secuencial que reconozca con salida uno, cada vez que se presente en la
entrada, la secuencia de exactamente dos ceros, seguida de 10. En caso contrario debe generar
salida cero.

La siguiente secuencia de entrada: 001001000010010...


debe generar la siguiente salida: 000100100000001...

Un esquema de la “columna vertebral” del diagrama es:


0/0 1/0
1/0 A B C D
0/0

0/1

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 9. Sistemas secuenciales 27
Figura 9.44 Diagrama de estados inicial.

A, es el estado inicial: en él se espera por un cero.


Si en B o D falla la secuencia se retorna al estado inicial.
Estando en C, si llega un cero debe pasarse a un estado E; en el cual deben descartarse todos los
ceros que lleguen.

El diagrama completo:
1/0 0/0
E
1/0 0/0
0/0 1/0
1/0 A B C D
0/0
0/1
1/0

Figura 9.45 Diagrama de estados completo.

9.6.4. Reconocedor continuo de códigos BCD válidos.

En este ejemplo se ilustra la importancia de darle un nombre simbólico adecuado a cada estado.

Si la entrada presente y las tres anteriores forman un código válido BCD, entonces la salida
permanece en 0; en caso contrario la salida debe ser uno.

Si asignamos el nombre del estado tal que éste sea la secuencia previa de 3 bits de la entrada,
para construir el diagrama basta obtener los estados próximos a cualquier estado.
Por ejemplo, a partir del 001, se llega a los estados 011 y 010, con entradas uno y cero
respectivamente.

Esto se ilustra en el siguiente diagrama:

001
1 0

011 010

Figura 9.46 Estados siguientes al estado 001.

Los dos últimos bits de 001, forman los dos primeros de 011 y 010.
De esta forma es sencillo plantear, el diagrama completo, que se muestra en la Figura 9.47.

Profesor Leopoldo Silva Bijit 19-01-2010


28 Sistemas Digitales

000
1 0
1
001 100
0
0
010

1 1 0 0

101
1 1
011 110
0
1 0
111

Figura 9.47 Diagrama de estados completo, sin salida.

Para completar el diagrama deben indicarse las salidas asociadas a las transiciones.
Las secuencias: 1010, 1011, 1100, 1101, 1110, 1111 son las que tienen asociada una salida uno.
La función de salida puede describirse por la siguiente tabla de verdad, y con ésta completar el
diagrama.
Estado x
0 1
000 0 0
001 0 0
010 0 0
011 0 0
100 0 0
101 1 1
110 1 1
111 1 1
z

Figura 9.48 Tabla de verdad de la función de salida.

9.6.5. Del diagrama a la especificación.

Dado el siguiente diagrama de estados, describir qué efectúa la máquina.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 9. Sistemas secuenciales 29
Asumir estado 1 como estado inicial.
0/0
1/0 1/0
1 2 1/0 5
3 4
0/0 1/0
0/0
0/0
0/1, 1/1

Figura 9.49 Diagrama de estados Ejemplo 9.6.5.

Observando que en 1 se espera un cero; y que 2 simboliza que ha llegado un cero.


Se tiene que es un reconocedor continuo de las secuencias 01110 y 01111 con salida uno.
La salida es cero en el resto de los casos.
Cuando reconoce una de las secuencias anteriores vuelve a comenzar de nuevo.

9.6.6. Determinar conducta de la máquina secuencial

0/0 1/0
1/0 0/0

1/1 B C
1/0 /0
/0
0/0
D E
1/0 /0

0/0
F G

Figura 9.50 Diagrama de estados ejemplo 9.6.6.

Asumiendo que el estado inicial es el A, y observando cuando se produce la única salida con
valor 1, y que además después de cuatro transiciones se retorna al estado inicial: se obtiene que
analiza secuencias de largo cuatro. Si la secuencia es 1111 genera salida 1; en el resto de las
secuencias la salida es cero.

Profesor Leopoldo Silva Bijit 19-01-2010


30 Sistemas Digitales

Problemas resueltos.

Problema 9.1. Cerebro de Hormiga. (Ant Brain. Propuesto en el MIT).

Se desea diseñar una máquina secuencial cuyo objetivo es permitir a la hormiga encontrar la
salida del laberinto.

La hormiga dispone de dos sensores en las antenas izquierda y derecha (I y D), que están en 1 si
la antena respectiva entra en contacto con las paredes del laberinto; y se colocan en cero si dejan
de estar en contacto. Son las entradas a la máquina de estados finitos.

La hormiga también dispone de tres señales de actuación, que son las salidas de la máquina, una
señal para avanzar hacia delante A; otra para doblar levemente hacia la izquierda DI; y otra para
doblar levemente hacia la derecha DD.
La estrategia para diseñar el cerebro de la hormiga es mantener la pared a la derecha de la
hormiga.

Figura P9.1 Laberinto.

Para desarrollar el diagrama de estados, se elige emplear el modelo de Moore. Es decir, las
salidas estarán asociadas al estado.

Se definen los estados posibles, y en cada uno de éstos debe observarse los valores de las
entradas que llevan a otros estados. Debe notarse que se tienen cuatro combinaciones posibles
para los valores permitidos a las entradas, esto implica dibujar 4 transiciones a estados
próximos. Sin embargo es posible simplificar el diagrama rotulando las transiciones como una
expresión lógica de las entradas.

Ejemplos:
Si debe pasarse a cierto estado cuando cualesquiera de las antenas tocan una pared, la transición
puede rotularse ( I + D).

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 9. Sistemas secuenciales 31
Si debe pasarse a cierto estado cuando ambas antenas no tocan a alguna pared, la transición
puede rotularse ( I ' D'). Es decir, que ambas no toquen. Si la transición es cuando la izquierda
no toque y la derecha entre en contacto con la pared, la transición se anota: (I' D).

Para encontrar los estados debe analizarse las diversas situaciones en que se puede encontrar la
hormiga en su recorrido del laberinto. Observando las entradas, y las acciones que ésta puede
realizar, a continuación se plantean algunas de las situaciones:

A: Siguiendo la muralla y tocándola:


Avanzar, doblando levemente a la izquierda, hasta llegar a B:

B: Siguiendo la muralla y no tocándola:


Avanzar, doblando levemente a la derecha. O se vuelve a A, o se pasa a C.

C: Se acaba la pared:
Avanzar, doblando levemente a la derecha, hasta llegar a D:

D: Vuelve a tocar la muralla, con la Antena derecha:


Es la situación A.

E: Pared al frente: Mientras toque con alguna antena:


Doblar levemente a la izquierda hasta pasar a F:

F: Igual situación que en el estado B.

G: Tocando la pared con la izquierda.


Doblar a la derecha hasta no tocar la pared. Es la situación B.

H:Perdido:
Avanzar hasta tocar algo.

Figura P9.2 Esquema de situaciones. Definición de estados.

Profesor Leopoldo Silva Bijit 19-01-2010


32 Sistemas Digitales
No se encuentran otras situaciones que no se hayan planteado, entonces se procede a conectar
los diferentes estados, mediante el siguiente diagrama:

I+D I’ D

Perdido I+D E/G I A


(A) (DI) (DI, A)

I’ D’ D
I’ D’ D
I’ D’

B C
(DD, A) (DD, A) D’
D’

Figura P9.3 Diagrama de estados para el cerebro de la hormiga.

Nótese que los estados E y G se tratan como si fuera un solo estado. En ambos se toca con la
antena izquierda, y el objetivo (local, para cumplir la estrategia) es dejar de tocar la pared.

El diagrama muestra que los estados B y C podrían tratarse como uno solo (son equivalentes).
Ya que tienen iguales salidas; y para iguales entradas, se pasa a igual estado próximo (más
adelante, en el Capítulo 12, se verán algoritmos para determinar estados equivalentes).
Si se funden los estados B y C se llega al siguiente diagrama, que representa el cerebro de la
hormiga:

I+D

Perdido I+D E/G I A


(A) (DI) (DI, A)
I’ D

L’ D’ D
I’ D’
I’ D’

B/C
D’ (DD,
A)

Figura P9.4 Reducción de estados equivalentes.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 9. Sistemas secuenciales 33
Problema 9.2. Contador sincrónico con control de modo M.

Si M = 0 el contador es binario ascendente; si M = 1 el contador avanza según código Gray. A


continuación se indican las secuencias:
binario: 000, 001, 010, 011, 100, 101, 110, 111
Gray: 000, 001, 011, 010, 110, 111, 101, 100
El diagrama de estados se construye para la secuencia binaria, con transiciones con entrada de
control igual a cero. Luego, se marcan las transiciones para contar en Gray:

S0 S1 S2 S3 S4 S5 S6 S7
reset 0 0 0 0 0 0 0
[000] [001] [010] [011] [100] [101] [110] [111]

Figura P9.5 Contador binario ascendente.

reset S0 0 S1 0 S2 0 S3 0 S4 0 S5 0 S6 0 S7
[000] [001] [010] [011] [100] [101] [110] [111]
1
1 1 1
1

1 1 1

Figura P9.6 Contador Gray.

Problema 9.3. Reconocedor de un patrón finito.

Sean: entrada x y salida z. La salida se activa cada vez que se presenta la secuencia 010, y
mientras que la secuencia 100 no se haya presentado, en cuyo caso la salida se desactiva
permanentemente.

Ejemplos de secuencias, y columna vertebral del diagrama de estados:


X: 0 0 1 0 1 0 1 0 0 1 0 …
Z: 0 0 0 1 0 1 0 1 0 0 0 …
X: 1 1 0 1 1 0 1 0 0 1 0 …
Z: 0 0 0 0 0 0 0 1 0 0 0 …

Profesor Leopoldo Silva Bijit 19-01-2010


34 Sistemas Digitales

reset E0
[0]
0 1

E1 E4
[0] [0]

1 0

E2 E5
[0] [0]

0 0

E3 E6
0,1
[1] [0]

Figura P9.7 Diagrama de estados inicial.

Luego deben completarse las transiciones que faltan.


Si en E5 llega un cero, debe ir al estado permanente E6, ya que habría reconocido la secuencia
100. Si estando en E3 (los últimos 3 bits de la secuencia son 010) llega un 1, los últimos dos
serán ahora 01, esto implica pasar al estado E2.

En E1 debe permanecer si llegan secuencias de ceros. En E4 debe permanecer si llegan


secuencias de unos.

Si estando en E2 llega un uno, se tendrán dos unos seguidos, entonces debe pasarse al estado
E4.

Si estando en E5 llega un uno, se tendrá hasta ese momento, que los dos últimos de la secuencia
son 01, entonces debe pasarse al estado E2.

El diagrama final se muestra a continuación:

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 9. Sistemas secuenciales 35

reset E0
[0]
0 1

E1 E4
0 1
[0] [0]
...0 ...1

1 0
1

E2 1 E5
...10
[0] [0]
...01

0 1 0

E3 E6
0, 1
[1] [0]
...010 ...100

Figura P9.8 Diagrama de estados final.

Si denominamos X a la entrada, el diagrama puede describirse, según el pseudo código:


While (1)
{if (reset) estado = E0;
else
switch (estado)
{ case E0: if (X) estado = E4 else estado = E1;
case E1: if (X) estado = E2 else estado = E1;
case E2: if (X) estado = E4 else estado = E3;
case E3: if (X) estado = E2 else estado = E6;
case E4: if (X) estado = E4 else estado = E5;
case E5: if (X) estado = E2 else estado = E6;
case E6: estado = E6;
}
}

Problema 9.4. Diseñar el control de una máquina de lavar ropa. Uso de temporizadores.

El funcionamiento de la lavadora es el siguiente:


Cuando se oprime el botón “Partida”, después de colocar las prendas, la máquina determina
el tamaño de la carga (Mediano / Grande) y de acuerdo al tamaño dispensa la cantidad de
agua y detergente.
Luego de esto, la máquina lava la ropa por 10 minutos.

Profesor Leopoldo Silva Bijit 19-01-2010


36 Sistemas Digitales
Después del ciclo anterior, la máquina enjuaga las ropas por 10 minutos. Detecta si el
líquido de salida está sucio, al final del enjuague; en caso de estarlo, repite el ciclo (lavado +
enjuague), pero no más de 3 repeticiones.
Luego centrifuga las ropas hasta que no detecta descarga de agua, pero por no más de 20
minutos.
Las duraciones de los ciclos se logran con temporizadores. Los cuales pueden modelarse con
una entrada que inicia la cuenta del tiempo, y una salida que indica que ya transcurrió el tiempo
programado.

Entradas Salidas
Descripción Variable Descripción Variable
Botón de Partida SP Dispensador mediano AM
Sensor carga mediana SM Dispensador Grande AG
Sensor carga grande SG Actuador lavado AL
Sensor salida sucia SS Actuador enjuague AE
Sensor descarga salida SD Actuador centrífuga AC
Timeout 60 min O60 Inicio timer 60 min I60
Timeout 10 min O10 Inicio timer 10 min I10

Figura P9.9 Especificaciones de variables.

reset

SP’ SD’ # O10


Inicio
(SP&SM) / AM, AL, I10, I60 SD’
# Centrífuga
(SP&SG) / AG, AL, I10, I60 2
O10’&SD / AC
Lavado O10&SD / I10
O10’ / AL
O10&SS&O60’&SM / AM, AL, I10
O10 / I10 #
O10&SS&O60’&SG / AG, AL, I10

Enjuage Centrífuga
O10’ / AE
O10&SS’ # O60 / I10 1

O10’&SD / AC

Figura P9.10 Diagrama de estados control lavadora.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 9. Sistemas secuenciales 37
Problema 9.5. Detector secuencia 0101.

Determinar el diagrama de estados de una máquina secuencial (Modelo de Mealy) que produce
una salida alta cada vez que se detecta la secuencia 0101 en la entrada; y salida cero en el resto
de los casos. Determinar la secuencia de salida y de estados para la siguiente secuencia de
entrada: 010110011…
Solución.
1/0

0/0
1/0 0/0
A B
B C D
0/0 1/0
1/1
0/0

Figura P9.11 Diagrama de estados detector secuencia 0101.

La siguiente secuencia de entrada produce las siguientes secuencias de salida y de transiciones


de estados.

Entrada 0 1 0 1 1 0 0 1 1 ....
Salida 0 0 0 1 0 0 0 0 0 ....
Pxo. Estado B C D C A B B C A ….

Figura P9.12 Secuencias de entrada, salida y de estados.

Problema 9.6. Máquina con dos salidas.

Un sistema secuencial tiene una entrada x, y dos salidas: z1 y z2.


Con x = 1, las salidas recorren las siguientes secuencias periódicas:

z1 0 1 1 0 1 0
z2 1 1 1 1 0 1

Con x = 0, las salidas recorren las siguientes secuencias periódicas:

z1 0 1 1 0 0 1
z2 1 1 0 1 1 1

a) Determinar la tabla o matriz de transiciones, de un modelo de Moore. Los estados se


identifican con letras mayúsculas y A es el estado inicial.
b) Dibujar el diagrama de estados.
c) Determinar las salidas para la siguiente secuencia de entrada: 000110010

Profesor Leopoldo Silva Bijit 19-01-2010


38 Sistemas Digitales

Solución:
a) Una posible solución es elegir la secuencia de x = 1 para asignar los nombres a los estados y
a partir de esta asignación completar la matriz de transición de tal manera que se cumpla con la
secuencia para x = 0.
En ambas secuencias las salidas pasan por seis estados, teniendo estados con iguales salidas las
soluciones pueden ser combinaciones de elecciones de estos estados, pero deben tenerse los seis
estados

Son posibles otras soluciones de acuerdo a la asignación de los nombres de los estados.

x 0 1 Salida z2z1
Estado Estado
A C B A 10
B A C B 11
C E D C 11
D B E D 10
E F F E 01
F D A F 10

Figura P9.13 Matrices de transiciones y de salida.

b) Diagrama de estados de acuerdo a la matriz de transición en a)

0
A
1 10 1

F B
10 11
0
1
1 0

0
E C
01 11 0

0
1 D 1
10

Figura P9.14 Diagrama de estados Problema 9.6.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 9. Sistemas secuenciales 39
c) Determinar las salidas para la siguiente secuencia de entrada: 000110010

Entrada Reset 0 0 0 1 1 0 0 1 0 -
Estado Actual - A C E F A B A C D B
Próximo Estado A C E F A B A C D B -
Salida (z2z1) 10 10 11 01 10 10 11 10 11 10 11

Problema 9.7. Máquina con dos entradas.

Para una máquina secuencial con dos entradas c1 y c0. A es el estado inicial.
Se tienen:
Con c1 = 0 y c0 = 0 el sistema recorre la siguiente secuencia periódica de estados: ABCD.
Con c1 = 1 y c0 = 1 el sistema recorre la siguiente secuencia periódica de estados: ADCB.
Con c1 = 1 y c0 = 0 el sistema recorre la siguiente secuencia periódica de estados: ADBC.
Con c1 = 0 y c0 = 1 el sistema recorre la siguiente secuencia periódica de estados: ABD. Y
si está en estado C, permanece en él.
a) Determinar la tabla o matriz de excitaciones.
b) Determinar la secuencia de estados para la siguiente secuencia de entradas:

c1 0 0 1 0 0 1
c0 0 0 0 1 1 1

Solución:
Se asume que al cambiar las entradas, mientras se genera una secuencia, se continúa con el
próximo estado de acuerdo a las entradas. Es decir no se retorna a un estado inicial.
reset A
0 0
C1C0
1 11
10
D B
10

11
11
00 0
C

01
01

Figura P9.15 Diagrama de estados Problema 9.7.

Profesor Leopoldo Silva Bijit 19-01-2010


40 Sistemas Digitales

a)
Entradas c1c0
Estado 00 01 11 10
A B B D D
B C D A C
C D C B A
D A A C B
Próximo estado

Figura P9.16 Matriz de transiciones Problema 9.7.

b)
c1 0 0 1 0 0 1 ..
c0 0 0 0 1 1 1 ..
Estado Actual A B C A B D C
Próximo estado B C A B D C

Figura P9.17. Secuencias de estados Problema 9.7.

Estado inicial A. (se está en A y las entradas son 00)


Los cambios de estado ocurren en un canto del reloj.
Se inspeccionan las entradas antes de cada canto del reloj.

La secuencia de estados es: ABCABDC....

Problema 9.8. Máquina de estados finitos. Tres salidas.

Se tiene una máquina secuencial de Moore, con una entrada x, y tres salidas: z1, z2 y z3.
Cada vez que se presenta la secuencia 01 en la entrada, las salidas toman valores:
z1=1, z2=0 y z3=0.
Cada vez que se presenta la secuencia 10 en la entrada, las salidas toman valores:
z1=0, z2=1 y z3=0.
Cuando se presenta la secuencia 00 en la entrada, vuelve al estado inicial, con salidas: z1=0,
z2=0 y z3=0; y desde allí reanuda el análisis de las secuencias; es decir, vuelve a comenzar.
Cuando se presenta la secuencia 11 en la entrada, permanece en el estado al cual llegó, con
salidas: z1=0, z2=0 y z3=1.
En el resto de los casos las salidas toman valores: z1=0, z2=0 y z3=0.

Determinar:
a) El diagrama de estados.
b) La tabla de transiciones entre estados.
c) Diseño de ecuaciones para las salidas, mediante un mapa de Karnaugh. Indicar el nombre
elegido para las variables de estado y los nombres binarios elegidos para los estados lógicos.

Solución.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 9. Sistemas secuenciales 41
a) Si los estados se denominan por xx, con significado: “los dos últimos de la secuencia son
xx”, esta interpretación vale para los nombres: 01, 10 y 11. Se usa el símbolo _ _ para indicar el
estado inicial, en el cual aún no han llegado entradas, o al que se llega después de recibir una
secuencia 00.

El nombre _0 se usa para el estado al que pasa la máquina cuando ha llegado un cero, estando
en el inicial. Y _1 se usa para el estado al que pasa la máquina cuando ha llegado un uno,
estando en el inicial.

b) A partir del diagrama de estados se obtienen las matrices de transición y de salida.

reset
x Estado z1 z2 z3
Estado 0 1 lógico
__
__ _0 _1 __ 0 0 0
0 000
1 _0 __ _1 _0 0 0 0
0 _1 10 11 _1 0 0 0
_0 _1 01 10 11 01 1 0 0
0 10 __ 01 10 0 1 0
000 000
11 11 11 11 0 0 1
1 0
0 Próximo Est.
01 10
100 010
1

1
11
1 001

Figura P9.18. Diagrama de estados y tabla transiciones Problema 9.8.

c) Si el estado es Q2Q1Q0, y se escoge la siguiente asignación:


Estado Estado z1 z2 z3
lógico Físico
Q2Q1Q0
__ 000 0 0 0
11 001 0 0 1
011
10 010 0 1 0
_0 110 0 0 0
_1 111 0 0 0
101
01 100 1 0 0

Figura P9.19. Asignación de estados Problema 9.8.

Resultan:

Profesor Leopoldo Silva Bijit 19-01-2010


42 Sistemas Digitales
z1 = Q2Q1’
z2 = Q2’Q1
z3 = Q2’Q0 y también Q1’Q0

Observaciones.
Estando en el estado inicial, cuando llega un uno o un cero, no pueden activarse las salidas z1,
z2 y z3. Ya que éstas reconocen las secuencias 01, 10 y 11 respectivamente; y no la presencia de
un cero o de un uno.
La frase: “Cuando se presenta...” es imperativa. Y tiene precedencia sobre las frases: “Cada vez
que se presente...”.
Por ejemplo, si llega la secuencia 001..., después de los dos ceros debe ir al estado inicial, y
volver a analizar. El estado inicial representa la situación en que aún no han llegado entradas, o
después de que llegó la secuencia 00.
Otro ejemplo, si llega la secuencia 1101...., va inmediatamente al estado 11, y no reconoce la
secuencia 01 que la sigue; tampoco debe reconocer la secuencia 10 que está también presente en
1101....

Con las especificaciones dadas, y la designación de los nombres dados antes, el diagrama queda
como sigue.
reset
No ha llegado nada
__
0 000 1
?
?
0

Llegó 00 1 0 Llegó 10
0
01 10
Llegó 01 100 010
1
11
1 001

Llegó 11

Figura P9.20. Diagrama de estados Problema 9.8.

Para completar el diagrama hay que agregar estados adicionales, entre el inicial y los estados
denominados 01 y 10. Aparecen los estados _0 y _1.
Si desde el estado inicial, con entrada cero, fuera al estado 10, detectaría la secuencia 10 cuando
sólo ha llegado un cero.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 9. Sistemas secuenciales 43
Si desde el estado inicial, con entrada uno, fuera al estado 01, detectaría la secuencia 01 cuando
sólo ha llegado un uno.
Ir al estado inicial implica comenzar de nuevo. Al estado inicial se llega después de aplicar
energía, o después de una activación de la señal reset.

El mismo diseño empleando un modelo de Mealy:


reset

Estado Estado x=0 x=1


A Lógico Físico
presente Q1Q0
1/000 A 00 B/000 C/000
0/000 B 10 A/000 C/100
0/000 C 01 B/010 D/001
D 11 D/001 D/001
1/100 Próximo estado/z1z2z3
B C
1/001
/001
0/010
D

Figura P9.21. Modelo de Mealy Problema 9.8.

z1 = Q1Q0’x
z2= Q1’Q0 x’
z3= Q1Q0 + Q0 x

Problema 9.9.

Si x es una entrada, se tienen las ecuaciones que programan tres flip-flops Ds.
D2 = Q2’Q1Q0’x, D1= Q2’Q0 + Q1Q0 + Q2’Q1x, D0 = Q2’x + Q1Q0x
Y las siguientes ecuaciones para las salidas: z1 = Q2’Q1Q0, z0 = Q2Q1Q0
En funcionamiento normal, un pulso en la entrada reset, deja al sistema en el estado binario 000.
Determinar:
a) Si la máquina es de Mealy o de Moore. En qué basa su respuesta.
b) Matriz de transiciones.
c) Diagrama de estados. Indicar los estados que no participan en el trabajo normal del sistema
secuencial.
d) Acciones que realiza la máquina de estados, considerando que el estado binario 000 es el
estado inicial.
e) Indicar secuencias de estado y de salida para la secuencia de entrada:

Profesor Leopoldo Silva Bijit 19-01-2010


44 Sistemas Digitales

Número 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
secuencia
x 1 0 1 1 1 0 1 0 1 1 1 1 0 0 1 1 .
Estado actual 000
Z1
Z0

Solución:
a) Las salidas sólo dependen del estado. Puede aplicarse el modelo de Moore.
b) Matriz de transiciones.

Q2Q1Q0 x = 0 x = 1 Salidas
000 000 001 00
001 010 011 00
011 010 011 01
010 000 111 00
110 000 000 00
111 010 011 10
101 000 000 00
100 000 000 00
Q2+Q1+Q0+ z0z1
Figura P9.22. Matriz de transiciones Problema 9.9.

c) Diagrama de estados.
En funcionamiento normal no se pasa por los estados 110, 101 y 100.
No se puede llegar a ellos si la máquina parte en el estado inicial. Sin embargo están definidos
sus estados próximos como el estado inicial.

Q2Q1Q0 1 011
01
Z0Z1 1
reset
1 0

0 000 1 001 0 010 1 111


_00_ _00_ _00_ 10

0 0
110 101 100
00 00 00

Figura P9.23. Diagrama de estados Problema 9.9.

d) Acciones.
Reconoce la secuencia 101 cada vez que se presente, con salida z1=1 y z0 = 0.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 9. Sistemas secuenciales 45
Reconoce las secuencias de dos a más unos seguidos cada vez que se presenten, con salida z1=1
y z0 = 0.
Cuando llega la secuencia 100 vuelve al estado inicial con salida z1 = 0 y z0 = 0.
e) Secuencias de estados y de salida.

Número 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
secuencia
x 1 0 1 1 1 0 1 0 1 1 1 1 0 0 1 1 .
Est. actual 000 001 010 111 011 011 010 111 010 111 011 011 011 010 000 001 011
Z0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0
Z1 0 0 0 0 1 1 0 0 0 0 1 1 1 0 0 0 1

Figura P9.24. Secuencias Problema 9.9.

Problema 9.10. Sensores

Se tienen dos sensores i y d (izquierda y derecha) ubicados a cierta distancia sobre el suelo de
un pasillo y cuyo objetivo es detectar la dirección del paso de personas por el pasillo.
Estando la persona ubicada en la zona izquierda, con ambos sensores en cero, si la persona
avanza hacia la derecha y llega a la zona donde nuevamente ambos sensores son cero, debe
indicarse con la señal z1 =1.
Estando la persona ubicada en la zona derecha, con ambos sensores en cero, si la persona
avanza hacia la izquierda y llega a la zona donde nuevamente ambos sensores son cero, debe
indicarse con la señal z0 =1.
En el resto de los casos, las salidas deben ser ceros.
Las personas pueden quedarse detenidas o retroceder, pero sólo deben generarse las salidas
cuando se cumplen las condiciones anteriores.
Se ilustran los valores de los sensores cuando un objeto ocupa total o parcialmente las zonas
indicadas. Hacia la extrema izquierda y derecha los sensores marcan cero.
i d

11

10 01 id

00 00

Figura P9.25. Diagrama sensores Problema 9.10.

Profesor Leopoldo Silva Bijit 19-01-2010


46 Sistemas Digitales

Determinar el diagrama de estados (modelo de Mealy) que modela el sistema. Indicar el estado
inicial, y la señal de reset.

Solución.
Todas las salidas son cero, excepto las de los estados F y G, con entradas 00.
De cada estado deben especificarse las transiciones que físicamente son permitidas. Por ejemplo
estando en el estado A, no puede presentarse el evento de que ambas entradas estén un uno. Si
por ejemplo la persona está ubicada en la zona con los dos sensores activos, es decir en los
estados D y E, las transiciones que deben especificarse son las correspondientes a las
combinaciones 11, 01 y 10 de las entradas; no puede presentarse, en esta situación, el evento de
que ambas entradas estén en cero.

En F con entradas 00 se activa la salida z1.


En G con entradas 00 se activa la salida z0.
reset

00
A
10 01
00 00
10 B C 01
10 01
11 11
00/10 00/01

11 D E 11
01 10
11 11

01 F G 10

Figura P9.26. Diagrama de estados Problema 9.10.

Problema 9.11. Formas de ondas.

Se tiene un un sistema secuencial con entrada x y salidas y, z.


La señal reset deja al sistema en su estado inicial, con ambas salidas iguales a cero.
Se activa z cada vez que llega la secuencia 010 en la entrada y mientras no llegue la secuencia
100. Cuando llega esta última se activa la salida y, y la máquina permanece en ese estado.

Se tienen las siguientes formas de ondas:

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 9. Sistemas secuenciales 47

clk
reset
x
z
y

Figura P9.27. Formas de ondas Problema 9.11.

1. Observando las formas de ondas:


a). Indicar si el evento sincronizante es el canto de subida o el de bajada.
b). Determinar si la secuencia temporal de entrada es sincrónica con el reloj.
c). Determinar si la secuencia de entrada garantiza un funcionamiento seguro de los flip-flops.
d). Determinar si la máquina puede ser representada por un diagrama de Mealy o de Moore,
indicando si las salidas dependen de la entrada.
e). Determinar si lo que lleva al estado inicial es el canto de subida o de bajada de reset.
f). Determinar las secuencias sincrónicas de valores que toman: x, y, z.

2. Determinar el diagrama de estados.

Solución. t1 > ts t2 > th

Figura P9.28. Análisis de formas de ondas Problema 9.11.

a) Observando las salidas y, z se advierte que el evento sincronizante es el canto de subida, ya


que los cambios de éstas ocurren con el canto de subida del reloj.
b) La entrada x no tiene sus cambios asociados a los cantos del reloj, por lo tanto no es señal
sincrónica con el reloj.
c) Los cambios de las entradas ocurren un tiempo antes del canto del reloj y permanecen
estables después de un tiempo del canto de bajada. En la gráfica se requiere que t1 > ts y que
t2>th.

Profesor Leopoldo Silva Bijit 19-01-2010


48 Sistemas Digitales
d) Se advierte que las salidas no son función de la entrada, por lo tanto puede usarse el modelo
de Moore.
e) El canto de subida de reset lleva al estado inicial.

f) Secuencias de valores de la entrada y las salidas. Debe inspeccionarse los niveles en el canto
de subida del reloj de las señales x, z, y. Existe un valor por cada canto de subida del reloj. Se
logran:

entrada x 0010101001011011010010100
salida z 0001010100000000001000000
salida y 0000000011100000000111111

2. Diagrama de estados. Se activa z cada vez que llega la secuencia 010 en la entrada y mientras
no llegue la secuencia 100. Cuando llega esta última se activa la salida y, y la máquina
permanece en ese estado.

Se forman los reconocedores de 010 y 100. Y se establecen las salidas asociadas al estado 3 y 6,
con z=1 e y=1 respectivamente.
Luego se completan las transiciones para cumplir generar salida z=1 para cada vez que se
presente la secuencia 010.
Luego se completan las transiciones para recocer la secuencia 100, apenas se presente.
Finalmente se completa las transiciones para permanecer en el estado 6 con salida y = 1.

reset
Si/

x= S0/00
1
0 0
/yz
S1/0 S4/00
0 1
1
1 0

S2/00 S5/00
1
1 0 0

S3/01 S6/10
0

Figura P9.29. Diagrama de estados Problema 9.11.

El diagrama de Moore se interpreta: En la etapa k, el estado es Si; es decir, estando en Si, en la


etapa k, se analiza la entrada x(k) y se pasa al próximo estado en k+1.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 9. Sistemas secuenciales 49
Otras soluciones:

Diagrama de Mealy:
reset
Si

S0
x /yz 1/0
0/00 0/00 00
S1 S4
1/00
1/00
1/00 0/0
0
S2 S5
1/00
1/00 0/01 0/10
/10
S3 S6
0/10

Figura P9.30. Diagrama de estados de Mealy Problema 9.11.

S3 y S5 son equivalentes, ya que las transiciones que salen de S5, para iguales valores de las
entradas van con las mismas salidas a iguales estados próximos. Eliminando S5 se logra:

reset
Si

S0
x /yz 1/0
0/00 0/00 00
S1 S4
1/00
1/00
1/00
S2
0/0
0
1/00 0/01
/10
S3 S6
0/10

Figura P9.31. Diagrama de estados equivalente Problema 9.11.

Profesor Leopoldo Silva Bijit 19-01-2010


50 Sistemas Digitales
Referencias.

G. H. Mealy. A method for synthesizing sequential circuits, Bell System Technical Journal 34
(1955), 1045-1079.

E. F. Moore. Gedanken-Experiments on sequential machines, in Automata studies (editors C. E.


Shannon, J. McCarthy), Princeton University Press, 1956, 129-153.

Índice general.

CAPÍTULO 9 ..............................................................................................................................................1
SISTEMAS SECUENCIALES ..................................................................................................................1
9.1. DEFINICIONES ....................................................................................................................................1
Evento ..................................................................................................................................................1
Máquina abstracta. ..............................................................................................................................1
Estado. .................................................................................................................................................1
Máquinas de estados. ...........................................................................................................................2
Transición. ...........................................................................................................................................2
Diagrama de estados. ..........................................................................................................................2
Autómata de estados finitos determinista.............................................................................................2
Tipos de máquinas. ..............................................................................................................................2
Reloj. ....................................................................................................................................................3
Máquinas secuenciales. .......................................................................................................................3
Máquinas secuenciales sincrónicas. ....................................................................................................4
Síntesis lógica. .....................................................................................................................................4
9.2. SECUENCIAS. ......................................................................................................................................5
Ejemplos de secuencias. .......................................................................................................................5
a) Sincrónica de nivel. ...................................................................................................................................... 5
b) Sincrónica de pulsos .................................................................................................................................... 6
c) Asincrónica de nivel .................................................................................................................................... 6
d) Asincrónica de pulsos. ................................................................................................................................. 6
9.3. MODELO SECUENCIAL ........................................................................................................................6
9.4. REPRESENTACIÓN DE MÁQUINAS SECUENCIALES ...............................................................................9
9.4.1. Modelo de Mealy ........................................................................................................................9
i) Diagrama de estados ..................................................................................................................................... 9
ii) Tabla de transición de estados ................................................................................................................... 10
9.4.2. Modelo de Moore .....................................................................................................................10
i) Diagrama de estados ............................................................................................................................. 11
ii) Tabla de transiciones ................................................................................................................................. 11
Ejemplo 9.1 ........................................................................................................................................12
Ejemplo 9.2. .......................................................................................................................................13
Ejemplo 9.3. .......................................................................................................................................14
Algunas observaciones sobre las representaciones: ....................................................................................... 15
Ejemplo 9.4. .......................................................................................................................................16
Ejemplo 9.5. Modelado de diagrama de estados. Lavadora. .............................................................17
9.4.3. Transformación de Mealy a Moore. ........................................................................................19

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 9. Sistemas secuenciales 51
Ejemplo 9.6.Transformación para el reconocedor de dos unos seguidos. ...................................................... 21
Ejemplo 9.7. ................................................................................................................................................... 22
9.5. TIPOS DE MÁQUINAS SECUENCIALES ................................................................................................ 23
9.6 SÍNTESIS DE DIAGRAMAS DE ESTADO. MODELADO ......................................................................... 23
9.6.1 Reconocedor de secuencias de largo fijo. Verificador BCD ................................................... 24
9.6.2. Reconocedor continuo. ............................................................................................................ 25
9.6.3. Reconocedor continuo con reintento en caso de falla ............................................................. 26
9.6.4. Reconocedor continuo de códigos BCD válidos. .................................................................... 27
9.6.5. Del diagrama a la especificación. ........................................................................................... 28
9.6.6. Determinar conducta de la máquina secuencial ..................................................................... 29
PROBLEMAS RESUELTOS. ........................................................................................................................ 30
Problema 9.1. Cerebro de Hormiga. (Ant Brain. Propuesto en el MIT). ......................................... 30
Problema 9.2. Contador sincrónico con control de modo M. ........................................................... 33
Problema 9.3. Reconocedor de un patrón finito. .............................................................................. 33
Problema 9.4. Diseñar el control de una máquina de lavar ropa. Uso de temporizadores. ............. 35
Problema 9.5. Detector secuencia 0101. ........................................................................................... 37
Problema 9.6. Máquina con dos salidas. .......................................................................................... 37
Problema 9.7. Máquina con dos entradas. ........................................................................................ 39
Problema 9.8. Máquina de estados finitos. Tres salidas. .................................................................. 40
Problema 9.9. .................................................................................................................................... 43
Problema 9.10. Sensores ................................................................................................................... 45
Problema 9.11. Formas de ondas...................................................................................................... 46
REFERENCIAS. ........................................................................................................................................ 50
ÍNDICE GENERAL. ................................................................................................................................... 50
ÍNDICE DE FIGURAS................................................................................................................................. 52

Profesor Leopoldo Silva Bijit 19-01-2010


52 Sistemas Digitales

Índice de figuras

Figura 9.1 Máquina abstracta. ....................................................................................................... 1


Figura 9.2 Modelo de Moore. ........................................................................................................ 3
Figura 9.3 Modelo de Moore sincrónico. ...................................................................................... 4
Figura 9.4 Circuito digital C(G, W). .............................................................................................. 4
Figura 9.5. Secuencia sincrónica de niveles. ................................................................................. 5
Figura 9.6. Secuencia sincrónica de pulsos. .................................................................................. 6
Figura 9.7. Secuencia asincrónica de niveles. ............................................................................... 6
Figura 9.8. Secuencia asincrónica de pulsos. ................................................................................ 6
Figura 9.8. a. Modelo de memoria................................................................................................. 7
Figura 9.9. Modelo de Mealy. ....................................................................................................... 9
Figura 9.10. Diagrama de estados de Mealy. ................................................................................ 9
Figura 9.11. Tabla de transición de estados de Mealy. FPE. ....................................................... 10
Figura 9.12. Matriz de transiciones y matriz de salida. ............................................................... 10
Figura 9.13. Modelo de Moore .................................................................................................... 11
Figura 9.14. Diagrama de estados de Moore. .............................................................................. 11
Figura 9.15. Tabla de transiciones modelo de Moore. ................................................................ 11
Figura 9.16. Matriz de transiciones ejemplo 9.1. ........................................................................ 12
Figura 9.17. Secuencia de salida y de estados. ............................................................................ 12
Figura 9.18. Esquema generador de secuencias. ......................................................................... 12
Figura 9.19. Diagrama de Estados ejemplo 9.1. .......................................................................... 13
Figura 9.20. Diagrama de estados de Ejemplo 9.2. ..................................................................... 13
Figura 9.21. Secuencia de salida Ejemplo 9.2. ............................................................................ 13
Figura 9.22. Tabla de transiciones Ejemplo 9.2 .......................................................................... 14
Figura 9.23. Diagrama de Moore Ejemplo 9.3. ........................................................................... 14
Figura 9.23a. Secuencia de salida modelo de Moore Ejemplo 9.3. ............................................. 14
Figura 9.24 Diagrama de Mealy Ejemplo 9.3. ............................................................................ 15
Figura 9.24a. Secuencia de salida modelo de Mealy Ejemplo 9.3. ............................................. 15
Figura 9.24b. Salidas registradas en modelo de Mealy. .............................................................. 16
Figura 9.24c. Modelo de Moore. Salida registrada. .................................................................... 16
Figura 9.25. Diagramas de Mealy y Moore ejemplo 9.4. ............................................................ 17
Figura 9.26. Lavadora.................................................................................................................. 17
Figura 9.27. Diagrama de estados de la Lavadora. ...................................................................... 18
Figura 9.28. Diagrama de estados ampliado de la Lavadora. ...................................................... 19
Figura 9.29. Separación de estados. ............................................................................................ 19
Figura 9.30. Conversión a Moore. ............................................................................................... 20
Figura 9.31. Estado inicial con salida cero. ................................................................................. 20
Figura 9.32. Estado inicial con salida uno. .................................................................................. 20
Figura 9.33. Agregar estado inicial. ............................................................................................ 20
Figura 9.34. Separación de estado S1. ......................................................................................... 21
Figura 9.35. No es necesario corregir S0..................................................................................... 21
Figura 9.36. Diagrama de Moore ejemplo 9.6. ............................................................................ 22
Figura 9.37. Representación de Moore Ejemplo 9.7. .................................................................. 22
Figura 9.38. Representación de Mealy Ejemplo 9.7. ................................................................... 23

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 9. Sistemas secuenciales 53
Figura 9.39 Diagrama en bloque verificador BCD. .................................................................... 24
Figura 9.40 Diagrama de estados verificador BCD..................................................................... 24
Figura 9.41 Diagrama de estados reducido del verificador BCD. ............................................... 25
Figura 9.42 Reconocedor de secuencia 0101. ............................................................................. 25
Figura 9.43 Diagrama de estados completo del reconocedor continuo. ...................................... 26
Figura 9.44 Diagrama de estados inicial. .................................................................................... 27
Figura 9.45 Diagrama de estados completo. ............................................................................... 27
Figura 9.46 Estados siguientes al estado 001. ............................................................................. 27
Figura 9.47 Diagrama de estados completo, sin salida. .............................................................. 28
Figura 9.48 Tabla de verdad de la función de salida. .................................................................. 28
Figura 9.49 Diagrama de estados Ejemplo 9.6.5. ........................................................................ 29
Figura 9.50 Diagrama de estados ejemplo 9.6.6. ........................................................................ 29
Figura P9.1 Laberinto. ................................................................................................................. 30
Figura P9.2 Esquema de situaciones. Definición de estados....................................................... 31
Figura P9.3 Diagrama de estados para el cerebro de la hormiga. ............................................... 32
Figura P9.4 Reducción de estados equivalentes. ......................................................................... 32
Figura P9.5 Contador binario ascendente.................................................................................... 33
Figura P9.6 Contador Gray. ........................................................................................................ 33
Figura P9.7 Diagrama de estados inicial. .................................................................................... 34
Figura P9.8 Diagrama de estados final. ....................................................................................... 35
Figura P9.9 Especificaciones de variables. ................................................................................. 36
Figura P9.10 Diagrama de estados control lavadora. .................................................................. 36
Figura P9.11 Diagrama de estados detector secuencia 0101. ...................................................... 37
Figura P9.12 Secuencias de entrada, salida y de estados. ........................................................... 37
Figura P9.13 Matrices de transiciones y de salida. ..................................................................... 38
Figura P9.14 Diagrama de estados Problema 9.6. ....................................................................... 38
Figura P9.15 Diagrama de estados Problema 9.7. ....................................................................... 39
Figura P9.16 Matriz de transiciones Problema 9.7...................................................................... 40
Figura P9.17. Secuencias de estados Problema 9.7. .................................................................... 40
Figura P9.18. Diagrama de estados y tabla transiciones Problema 9.8. ...................................... 41
Figura P9.19. Asignación de estados Problema 9.8. ................................................................... 41
Figura P9.20. Diagrama de estados Problema 9.8. ...................................................................... 42
Figura P9.21. Modelo de Mealy Problema 9.8. ........................................................................... 43
Figura P9.22. Matriz de transiciones Problema 9.9..................................................................... 44
Figura P9.23. Diagrama de estados Problema 9.9. ...................................................................... 44
Figura P9.24. Secuencias Problema 9.9. ..................................................................................... 45
Figura P9.25. Diagrama sensores Problema 9.10. ....................................................................... 45
Figura P9.26. Diagrama de estados Problema 9.10. .................................................................... 46
Figura P9.27. Formas de ondas Problema 9.11. .......................................................................... 47
Figura P9.28. Análisis de formas de ondas Problema 9.11. ........................................................ 47
Figura P9.29. Diagrama de estados Problema 9.11. .................................................................... 48
Figura P9.30. Diagrama de estados de Mealy Problema 9.11. .................................................... 49
Figura P9.31. Diagrama de estados equivalente Problema 9.11. ................................................ 49

Profesor Leopoldo Silva Bijit 19-01-2010


1

Capítulo 10

Memorias primitivas sincrónicas.

Se estudiarán algunos dispositivos capaces de almacenar un bit de información, desde un punto


de vista lógico. Es decir, qué hace la componente; sin explicar cómo lo realiza internamente.
Esto último se verá más adelante, en el Capítulo 14.

Este tipo de memoria se denomina flip-flop, y se tienen tres tipos, denominados: JK, T y D.
Todos ellos operan con una señal periódica, denominada reloj.

10.1. Reloj

Los cambios de estado ocurren solamente en determinados instantes de tiempo; esos instantes
están sincronizados con el reloj.

Figura 10.1. Señal periódica de reloj.

En algunos casos se emplea el canto de subida del reloj para marcar los instantes de cambio; en
otros, se emplea el canto de bajada. El canto que define el instante de tiempo es el evento
sincronizante.

En los flip-flops disparados por cantos, se requiere una determinada pendiente para el reloj; no
importando el ancho. En general, el tiempo que la señal está en cero es mucho mayor que el
intervalo en que el reloj está alto. Se define el ciclo de trabajo de la señal periódica de un reloj,
como el porcentaje del tiempo que la señal está alta entre cantos de sincronización. Si la señal es
cuadrada el ciclo de trabajo es igual al 50%.

Para cambios con canto de bajada:


Durante el tiempo que el reloj está en uno se habilitan las entradas hacia el interior del flip-flop.
Y se requiere que las entradas no cambien durante cierto período previo y posterior al instante
en que ocurren los cambios de las salidas, esto se muestra en la Figura 10.2.

Profesor Leopoldo Silva Bijit 19-01-2010


2 Sistemas Digitales

tsu th

Figura 10.2. Entrada estable en el momento de sincronización.

Con: tsu : tiempo de set-up, y th: tiempo de hold.

En el siguiente diagrama, donde el evento sincronizante es el canto de subida, se ilustra la forma


de indicar una variación de las señales de entrada, en caso de ser éstas un conjunto de señales.
La Figura 10.3, muestra que las señales pueden cambiar, tomar valores 0 ó 1, desde el instante
en que ocurren las líneas inclinadas, que representan cantos. La figura se interpreta: tsu
segundos antes del canto de subida, las señales de entrada deben estar estables, y deben
mantenerse estables th segundos después del canto de subida. Debe existir una ventana
alrededor del evento sincronizante, durante la cual las entradas deben permanecer estables, sin
cambios, para ser correctamente reconocidas por el flip-flop.

th
tsu

tsu : tiempo de set-up. entrada

th: tiempo de hold.

clock

Figura 10.3. Entradas estables en el momento de sincronización.

Los fabricantes especifican el valor promedio y de peor caso para los tiempos de preparación
(set-up) y de sostenimiento (hold), durante los cuales las entradas no pueden cambiar.

Desde un punto de vista lógico, podemos pensar que el reloj es un tren de impulsos.

t t t ...
0 1 2

Figura 10.4. Instantes de sincronización.

Considerando un intervalo constante, entre cantos de sincronización, puede asociarse los


instantes de tiempos con números enteros, según:

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 10. Memorias primitivas sincrónicas 3
tk = t  k

Las variables en el tiempo, se consideran discretas; es decir, asumen valores sólo en


determinados valores de t. Se define:

v(tk) = v(kt) = v(k)

v(k-1) v(k) v(k+1)


t
k t (k+1)t

Figura 10.5. Instantes de sincronización.

Entonces: v(k) define una secuencia de valores sincrónicos con el reloj. Existe una
correspondencia biunívoca, entre { 0, 1, 2, 3, ...., k, ....} y { vo, v1, v2, ...., vk, .... }.

10.2. Secuencias sincrónicas.

Existen dos tipos de señales sincrónicas. Las de niveles sincrónicos se caracterizan porque los
valores de la secuencia permanecen constantes entre pulsos del reloj, y sólo cambian con los
cantos de subida o bajada del reloj.

En secuencias sincrónicas de pulsos, solamente hay valores de la secuencia, durante los pulsos
del reloj.

Reloj

Sincrónica
nivel

Sincrónica
pulsos

Figura 10.6. Secuencias sincrónicas.

En ambos casos, la secuencia de valores lógicos es: { 0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0 ... }

Profesor Leopoldo Silva Bijit 19-01-2010


4 Sistemas Digitales

10.3. Flip-flop JK

Es una máquina secuencial de Moore, en la cual, la salida es igual al estado.

Se suelen usar los siguientes símbolos lógicos:

S R S’ R’

J Q J Q
datos salida datos salida
K K

reloj reloj

Figura 10.7. Flip-flop JK disparados por cantos.

Las señales S y R son set y reset asincrónicos, y se verán después, en el Capítulo 14. El
diagrama de la izquierda ilustra un flip-flop que opera con cantos de bajada del reloj, se utiliza
un pequeño triángulo para mostrar que el flip-flop está sincronizado, o es disparado por cantos.
Si es disparado por cantos de bajada, se dibuja un pequeño círculo en la base del triángulo.

Cuando es sincronizado por un pulso (master slave), en lugar del triángulo se dibuja un pulso,
como se muestra en la Figura 10.8.

J Q
datos salida

K
reloj
Figura 10.8. Flip-flop master slave.

Se suele proveer dos salidas complementarias. Esto implica que internamente se almacenan dos
bits; como se verá más adelante, esto requiere tener dos variables de estado internas. Desde un
punto de vista externo, sólo basta especificar las secuencias de las entradas para tener
transiciones del estado Q= 0, al estado Q = 1 y viceversa.

En un lenguaje no formal, cuando se pasa de Q = 0 a Q = 1, se dice que se setea el flip-flop; en


caso contrario, se resetea.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 10. Memorias primitivas sincrónicas 5
10.3.1. Diagrama de estados

El JK queda definido, de manera formal, por un diagrama de estados:

1

0
0
JK = 11, 10

00, 01 Q=0 Q=1


reset set 00, 10

01, 11
1
Figura 10.9. Diagrama de estados Flip-flop JK.

El par de entradas asociada a cada transición puede anotarse empleando notación de bit
superfluo ; es decir, su ocurrencia indica que esa posición puede ser 0 ó 1. Ejemplo de esto es
el par: {01, 11} que se puede anotar: 1.

Existen diferentes formas alternativas de representar la información anterior, cada una aporta la
misma información desde un punto de vista diferente.

10.3.2. Tabla de transiciones

Los renglones son los valores que puede tomar el estado presente, las columnas están asociadas
a los diferentes valores que pueden tomar las entradas. Las casillas de la matriz muestran los
valores del próximo estado.

JK
00 01 11 10
Q(k)
0 0 0 1 1
1 1 0 0 1
Q(k+1)
Figura 10.10. Tabla de transiciones en Flip-flop JK.

La primera columna, con J = K = 0, indica que no hay cambio de estado.


La segunda, muestra cuando el próximo estado es reset.
La tercera, muestra un complemento del estado presente.
La cuarta, indica condiciones para quedar en estado set.

Profesor Leopoldo Silva Bijit 19-01-2010


6 Sistemas Digitales
10.3.3. Ecuación característica

Leyendo la tabla de transiciones, como mapa de Karnaugh, se obtiene:

Q(k  1)  J (k ) Q(k )  K (k ) Q(k )

que describe el próximo estado, mediante una expresión booleana del estado presente y las
entradas.

10.3.4. Tabla característica

Para analizar circuitos que empleen flip-flops, se suele emplear la siguiente tabla:

J K Q(k+1)

0 0 Q(k)
0 1 0
1 0 1
_
1 1 Q(k)

Figura 10.11. Tabla característica Flip-flop JK.

La tabla característica puede obtenerse mediante la ecuación característica, dándole valores a las
entradas. También puede derivarse a partir de la interpretación de las columnas de la tabla de
transiciones.
La tabla característica describe cómo deben ser las entradas para tener un determinado estado en
la salida.

10.3.5. Tabla de excitaciones

Describe las transiciones de la salida, en términos de las entradas. Suele usarse para diseñar
circuitos que empleen flip-flops JK.

Q(k) => Q(k+1) J K

0 0 0 
0 1 1 
1 0  1
1 1  0

Figura 10.12. Tabla de excitaciones Flip-flop JK.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 10. Memorias primitivas sincrónicas 7
La tabla de excitaciones puede obtenerse, observando las transiciones en el diagrama de estados.

10.3.6. Descripción HDL.

En Verilog pueden describirse flip-flops JK, mediante:

module flipflopJK(input J, K, clk, reset, output Q);


reg Q;
always @(posedge clk)
if (reset) Q<=0; else Q<=(J&~Q)|(~K&Q); //reset sincrónico
endmodule

10.4. Flip-flop D

La Figura 10.13 resume la información asociada a un flip-flop D.

D=1
Q
D=0 D=1
D
Q=0 Q=1

reset set
D=0
clk

D
Q(k) 0 1 Ecuación característica
0 0 1
Q(k  1)  D(k )
1 0 1
Q(k+1)
Tabla característica Tabla de excitaciones
Q(k+1) Q(k) _
D > Q(k+1) D

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

Figura 10.13. Flip-flop D.

La D proviene de Datos, ya que la principal función de este flip-flop, es capturar la información


que está en el cable conectado a la entrada. También la D se interpreta como Delay, ya que la
salida está un pulso de reloj retrasada respecto a la entrada.

En Verilog, puede describirse un flip-flop D, según:

Profesor Leopoldo Silva Bijit 19-01-2010


8 Sistemas Digitales

module flipflopD(input D, clk, reset, output Q);


reg Q;
always @(posedge clk)
if (reset) Q<=0; else Q<=D; //reset sincrónico
endmodule

El esquema de la Figura 10.14, ilustra el diseño de un flip-flop D en base a un JK.


Si en la ecuación característica del JK, se reemplazan J y K en función de D, se obtiene:

Q(k  1)  J (k )Q '(k )  K '(k ) Q(k )  D(k )Q '(k )  ( D '(k )) ' Q(k )

Aplicando involución y fusión, se obtiene, la ecuación característica de un D:


Q(k  1)  D(k )

D J Q

K Q'

clk
Figura 10.14. Flip-flop D mediante JK.

El esquema de la Figura 10.14.a, ilustra el diseño de un flip-flop JK en base a un D.


Si en la ecuación característica del D, se reemplaza D en función de J y K, se obtiene:

Q(k  1)  D(k )  J (k )Q '(k )  K '(k )Q(k )

La cual es la ecuación característica de un JK.

Q Q
J
D
K
Q'

reloj

Figura 10.14.a. Flip-flop JK mediante D.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 10. Memorias primitivas sincrónicas 9
10.5. Flip-flop T

En forma similar a la desarrollada para los flip-flops JK y D, se resume la información para un


T.

T=1
T=0
T Q Q=0 Q=1 T=0

reset set
T=1
reloj
T
Q(k) 0 1
0 0 1 Q(k  1)  T (k )Q(k )  T (k )Q(k )  T (k )  Q(k )
1 1 0
Q(k+1)

Q(k+1) Q(k) _ T
T > Q(k+1)

0 Q(k) 0 0 0
0 1 1
1 Q(k) 1 0 1
1 1 0

Figura 10.15. Flip-flop T.

La T proviene de Toggle, que describe un tipo de interruptores de presión de una posición (se
oprime y queda en un estado; se vuelve a oprimir y cambia de estado).

A partir de un flip-flop JK puede obtenerse un T, según se ilustra en la Figura 10.16. Si en la


ecuación característica del JK, se reemplazan J y K en función de T, se obtiene:

Q(k  1)  J (k )Q '(k )  K '(k ) Q(k )  T (k )Q '(k )  T '(k )Q(k )


La cual es la ecuación característica de un flip-flop T.

D J Q

K Q'

clk
Figura 10.16. Flip-flop T mediante un JK.

Profesor Leopoldo Silva Bijit 19-01-2010


10 Sistemas Digitales
El esquema de la Figura 10.16.a, ilustra el diseño de un flip-flop T en base a un D.
Si en la ecuación característica del D, se reemplaza D en función de T, se obtiene:

Q(k  1)  D(k )  T (k )Q '(k )  T '(k )Q(k )

La cual es la ecuación característica de un T.

Q Q
T D
Q'

reloj

Figura 10.16.a. Flip-flop T mediante D.

Un uso típico de un flip-flop T es dividir por dos la frecuencia de entrada. Ya que en cada canto
activo cambia el estado del flip-flop T, permaneciendo la salida constante entre dos cantos
activos. La Figura 10.17 muestra un flip-flop T, disparado por canto de subida, y alimentado
con un uno lógico en la entrada; la salida divide por dos la frecuencia del reloj.

clk 1 Q
T
T=1
Q reloj

Figura 10.17. Divisor de frecuencia con Flip-flop T.

10.6 Requerimientos Temporales.

La descripción del funcionamiento lógico de un flip-flop real especifica los requerimientos


temporales que deben cumplirse para que las funciones del flip-flop operen correctamente.
Básicamente son tres: los tiempos de set-up y hold (Tsu y Th); duración mínima del reloj (Tw);
tiempos de propagación desde el canto del reloj hasta que se tiene salida estable: Tplh describe
cuánto tarda la salida en pasar de low (nivel bajo) a un nivel alto (high); y Tphl es el tiempo de
propagación de high a low. Estos tiempos se describen como valores máximos (peor caso) y
típicos. Debe notarse que Tplh y Tphl suelen ser distintos.

La siguiente gráfica muestra dichos tiempos para un flip-flop disparado por cantos de subida
(positive edge triggered); la señal de entrada D, cumple los requerimientos de Tsu y Th.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 10. Memorias primitivas sincrónicas 11

Th Tsu Th
D Tsu
20ns 5ns 20ns 5ns

CLK Tw 25ns

Tplh Tphl
25ns máx. 40ns máx.
13ns típico 25ns típico

Figura 10.18. Especificaciones de tiempos en flip-flops.

Todos los tiempos se miden desde el canto activo del reloj (el de subida, en el ejemplo).

Las siguientes formas de ondas ilustran relaciones temporales para flip-flops disparados por
cantos de subida y de bajada. En flip-flops disparados por canto de subida (positive edge
triggered) las entradas se muestrean en el canto de subida (en realidad requiere valor estable tsu
segundos antes) y las salidas (Qp y Q’p) cambian un tiempo de propagación después, relativa al
canto de subida. Debe notarse que las salidas complementarias (Q y Q') no cambian
instantáneamente; esto se justificará después.
En flip-flops disparados por canto de bajada, se muestrean las entradas en el canto de bajada, y
las salidas (Qn Q’n) cambian después del canto de bajada.

Clk

Qp

Q'p

Qn

Q'n

Figura 10.19. Flip-flops disparados por cantos de subida y bajada.

Profesor Leopoldo Silva Bijit 19-01-2010


12 Sistemas Digitales
Comparaciones.

En la actualidad el flip-flop más importante es el de tipo D, suele emplearse en registros para


almacenar datos y es el flip-flop que se emplea en dispositivos lógicos programables (en su
forma de disparo por cantos). Debido a que se puede implementar con un número reducido de
interruptores CMOS, suele emplearse en circuitos integrados que requieran flip-flops.

El flip-flop JK fue sumamente empleado en los inicios debido a que tiene conducta determinada
cuando ambas entradas son unos (a diferencia del flip-flop SR). Es el flip-flop típico de la
familia TTL y de circuitos integrados en pequeña escala (SSI), permite construir fácilmente flip-
flops de tipo D y T. En la actualidad prácticamente no se usa. No está presente en las
configuraciones internas de los dispositivos lógicos programables, pero en estos casos se lo
puede construir en base a los flip-flops de tipo D, que éstos poseen.

El flip-flop de tipo T, prácticamente no está disponible como elemento; sin embargo puede ser
fácilmente implementado en base a los existentes (tipo D o JK).

En los flip-flops son necesarias entradas que permitan dejar al flip-flop en un estado
determinado. Clear o reset deja la salida Q en cero; y preset deja la salida alta. En el caso de
flip-flops de integración en pequeña escala estas señales suelen ser de naturaleza asincrónica
(como se verá más adelante); es decir, que se permite a estas entradas cambiar en cualquier
instante, respecto del reloj. Como se verá estas señales permiten dejar a un sistema secuencial
en un estado determinado. Sin embargo en diseños basados en dispositivos programables es
preferible dejar a los flip-flops en un determinado estado en forma sincrónica.

10.7. Metodologías de temporización.

Se denomina así a las reglas para interconectar compuertas y flip-flops de tal forma de
garantizar que el sistema completo funcionará correctamente. Las metodologías dependerán del
tipo de elemento que se emplee para implementar la memoria, ya sean flip-flops disparados por
cantos (que suelen emplearse en dispositivos lógicos programables) o bien latchs transparentes
que suelen emplearse en la confección de registros en procesadores.
Las reglas básicas para la correcta temporización son: proporcionar entradas que cumplan los
tiempos de set-up y hold relativas al reloj, y que las salidas no cambien su estado más de una
vez por evento sincronizante.

La figura 10.20 ilustra las formas de ondas de las salidas de un flip-flop D, disparado por canto
de subida y un latch transparente de tipo D. Note que en el latch la salida cambia entre pulsos
del reloj, copiando los cambios de la entrada hacia la salida apenas ocurren cambios de ésta,
estando alto el reloj.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 10. Memorias primitivas sincrónicas 13

D Q Clk
E

QClk Qcanto

Qlatch

Figura 10.20. Conmutación Flip-flop D y latch transparente.

En el latch transparente (o sensible al nivel), estando el reloj en alto, la salida cambia de acuerdo
al valor de la entrada (después del tiempo de propagación); el canto de bajada del reloj del latch
captura el valor que tenga la entrada en ese tiempo (el latch, también requiere cumplir
especificaciones de set-up y hold, alrededor del canto de bajada del reloj).
También existe un tiempo de propagación desde un cambio de la entrada o del canto de subida
reloj (el evento que ocurra más tarde).

La estructura interna de los flip-flops disparados por cantos y el latch se verá más adelante.

CP

modo captura
Qlatch

modo transparente

Figura 10.21. Modos de funcionamiento de un latch transparente.

Ejemplo de temporización.

La Figura 10.22, ilustra los requerimientos de las entradas de dos flip-flops D, disparados por
cantos de subida.

Profesor Leopoldo Silva Bijit 19-01-2010


14 Sistemas Digitales

dato

D0 Q0 D1 Q1

clock

entrada estable

dato

clock

Figura 10.22. Entradas y reloj en flip-flops D.

Las entradas D0 y D1 deben ser estables un tiempo antes y después del canto de subida del
reloj.

Consideremos ahora la conexión cascada que se ilustra en la gráfica a continuación. La salida


del primer flip-flop se conecta a la entrada del segundo.

Se asume que D0 cumple los requerimientos.

Analizaremos las exigencias de sincronización para D1.


a) Si el tiempo de propagación desde el reloj hasta la salida Q0 es mayor que el tiempo de hold
del flip-flop 1, éste último cumple con entrada estable durante el tiempo de hold.
b) El período del reloj debe ser mayor que la suma de la propagación desde el reloj hasta Q0 con
el tiempo de set-up del flip-flop 1, para que la entrada del flip-flop 1 no cambie durante su
tiempo de set-up.

dato
D0 Q0 D1 Q1

clock

Figura 10.23. Conexión cascada.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 10. Memorias primitivas sincrónicas 15

D0
Tsu Tsu
4ns 4ns
Q0=D1
Tp Tp
3ns 3ns
Q1

CLK
Th Th
2ns 2ns

Figura 10.23.a. Señales conexión cascada.

Si se cumplen las exigencias de temporización, se garantiza la correcta operación de la conexión


cascada. De este modo el flip-flop 1 capturará el valor actual del flip-flop Q0.

Todos los flip-flops deben determinar su próximo estado en el mismo instante, bajo la condición
de las entradas permanezcan estables tsu antes del reloj y thold después.

La conexión anterior asume que todos los flip-flops tienen el mismo reloj. Sin embargo, en
sistemas que funcionan con relojes de altas frecuencias, el tiempo de retardo de propagación a
través del sistema digital es comparable al que requiere el reloj para llegar a los diferentes flip-
flops. La diferencia entre cantos de reloj, en diferentes flip-flops se denomina desfasamiento (o
desplazamiento, skew en inglés).

Previo al primer canto de subida se está en estado Q0 = 0 y Q1 = 0. Después el estado será:


Q0=1 y Q1 = 0, previo al segundo canto de subida del reloj.

D0 Q1
dato Q0 D1
clk0 clk1

reloj

Figura 10.24. Consideración del tiempo de desplazamiento del reloj.

Profesor Leopoldo Silva Bijit 19-01-2010


16 Sistemas Digitales

D0
Tsu Ts
4ns 4ns
Q0=D1
Tp Tp
3ns 3ns
Q1

Clk0

Tp 3ns Th Tp 3ns
Th
2ns 2ns
Clk1
Tsu Th Tsu Th
4ns 2ns 4ns 2ns

Figura 10.24.a. Consideración del tiempo de desplazamiento del reloj.

Se advierte que D1, no cumple la especificación de permanecer estable (Tsu antes y Th después
del canto de subida de clk1). Debido a esto la salida Q1 será indeterminada. Asumiendo que
conmuta y que se muestrea el valor de la entrada en el canto de subida, se muestra la forma de
Q1, Tp segundos después del canto de subida de clk1.

Más adelante podrá determinarse que la conexión cascada de los flip-flops se comporta como un
registro de desplazamiento. Debido al desfase podría dejar de ser un registro de desplazamiento.

Previo al primer canto de subida de clk0, se está en estado Q0 = 0 y Q1 = 0. Después el estado


será: Q0 = 1 y Q1 = 1, previo al segundo canto de subida del reloj clk0. Lo cual no da una
conducta predecible, ésta depende del tiempo de desfasamiento entre los diferentes relojes
aplicados a los flip-flops.
Más adelante se desarrollará más sobre este problema y cómo garantizar el funcionamiento de
los sistemas digitales sincrónicos, considerando los tiempos de propagación y de desfase entre
relojes.

Sincronización.

El análisis anterior nos lleva a uno más general y es cómo tratar entradas asincrónicas a sistemas
sincrónicos. En esta situación las entradas pueden cambiar en cualquier instante y puede que no
satisfagan los requerimientos de set-up y hold de los flip-flops del sistema sincrónico. Esta
dificultad no puede evitarse en algunas situaciones, como por ejemplo, en caso de una entrada
generada por un operador (y también cuando se emplean memorias en forma asincrónica).
Debido a lo anterior es preferible diseñar con entradas sincrónicas (si las entradas son salidas de

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 10. Memorias primitivas sincrónicas 17
otros flip-flops, esto se produce naturalmente) y también muestra que son preferibles los
circuitos generados por modelos de Moore, ya que los de Mealy generan salidas asincrónicas.

La Figura 10.26, muestra un interruptor manual, a través del cual se introduce un pequeño
pulso, de ancho variable y posiblemente con rebotes mecánicos, que finalmente coloca una de
las entradas en nivel bajo momentáneamente; esto asume que la entrada, en alta impedancia,
está en nivel alto.

clk

Figura 10.25. Pulsador como entrada de sistema sincrónico.

Cuando las entradas a un flip-flop cambian muy cercanas al canto del reloj, éste puede tener
inestabilidades internas que no permiten asegurar que se cumplan las ecuaciones del flip-flop.
En estos casos puede reducirse la probabilidad de falla aumentando la frecuencia del reloj,
relativa a la frecuencia de la entrada, o empleando compuertas más rápidas, o empleando un
sincronizador. La mejor solución es agregando un sincronizador, ya que no se depende de la
entrada. Un sincronizador es simplemente un flip-flop, cuya salida cambia sólo en los cantos del
reloj.

D Q

clk

Figura 10.25. Sincronizador de entrada asincrónica.

El empleo de sincronizadores garantiza que el resto del sistema tendrá entradas sincrónicas, pero
no se puede garantizar que el sincronizador no tendrá fallas.
Normalmente basta agregar un flip-flop adicional para aumentar las probabilidades de lograr la
sincronización.

D1 Q1 D2 Q2

clk

Figura 10.25. Sincronizador con dos flip-flops.

Debe asegurarse que las entradas cumplan los requerimientos de set-up y hold de los flip-flops
del sistema sincrónico. A través de mediciones puede determinarse el funcionamiento confiable
del sincronizador, y de los niveles requeridos.

Profesor Leopoldo Silva Bijit 19-01-2010


18 Sistemas Digitales
No es recomendable conectar una entrada asincrónica a dos entradas de flip-flops, sin
previamente haber sincronizado la entrada, ya que uno de los flip-flops podría no capturar la
entrada, por violar ésta los requerimientos de set-up o hold.
Vcc
D1 Q1
clk

D2 Q2

clk

Figura 10.26. Entrada asincrónica conectada a dos flip-flops.

El siguiente diagrama ilustra que Q1 registra el cambio de la entrada, pero no así Q2.

Entrada

Q1

Q2

CLK

Figura 10.27. Violación de tiempos de hold o setup en D2.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 10. Memorias primitivas sincrónicas 19

Índice general.

CAPÍTULO 10 ........................................................................................................................................... 1
MEMORIAS PRIMITIVAS SINCRÓNICAS. ........................................................................................ 1
10.1. RELOJ .............................................................................................................................................. 1
10.2. SECUENCIAS SINCRÓNICAS. ............................................................................................................. 3
10.3. FLIP-FLOP JK ................................................................................................................................... 4
10.3.1. Diagrama de estados ............................................................................................................... 5
10.3.2. Tabla de transiciones .............................................................................................................. 5
10.3.3. Ecuación característica ........................................................................................................... 6
10.3.4. Tabla característica ................................................................................................................ 6
10.3.5. Tabla de excitaciones .............................................................................................................. 6
10.3.6. Descripción HDL. ................................................................................................................... 7
10.4. FLIP-FLOP D..................................................................................................................................... 7
10.5. FLIP-FLOP T ..................................................................................................................................... 9
10.6 REQUERIMIENTOS TEMPORALES. .................................................................................................... 10
COMPARACIONES. .................................................................................................................................. 12
10.7. METODOLOGÍAS DE TEMPORIZACIÓN............................................................................................. 12
Ejemplo de temporización. ................................................................................................................ 13
Sincronización. .................................................................................................................................. 16
ÍNDICE GENERAL. ................................................................................................................................... 19
ÍNDICE DE FIGURAS................................................................................................................................. 20

Profesor Leopoldo Silva Bijit 19-01-2010


20 Sistemas Digitales

Índice de figuras

Figura 10.1. Señal periódica de reloj. ............................................................................................ 1


Figura 10.2. Entrada estable en el momento de sincronización. ................................................... 2
Figura 10.3. Entradas estables en el momento de sincronización. ................................................ 2
Figura 10.4. Instantes de sincronización. ...................................................................................... 2
Figura 10.5. Instantes de sincronización. ...................................................................................... 3
Figura 10.6. Secuencias sincrónicas. ............................................................................................. 3
Figura 10.7. Flip-flop JK disparados por cantos. .......................................................................... 4
Figura 10.8. Flip-flop master slave................................................................................................ 4
Figura 10.9. Diagrama de estados Flip-flop JK. ............................................................................ 5
Figura 10.10. Tabla de transiciones en Flip-flop JK. .................................................................... 5
Figura 10.11. Tabla característica Flip-flop JK. ............................................................................ 6
Figura 10.12. Tabla de excitaciones Flip-flop JK.......................................................................... 6
Figura 10.13. Flip-flop D............................................................................................................... 7
Figura 10.14. Flip-flop D mediante JK.......................................................................................... 8
Figura 10.14.a. Flip-flop JK mediante D. ...................................................................................... 8
Figura 10.15. Flip-flop T. .............................................................................................................. 9
Figura 10.16. Flip-flop T mediante un JK. .................................................................................... 9
Figura 10.16.a. Flip-flop T mediante D. ...................................................................................... 10
Figura 10.17. Divisor de frecuencia con Flip-flop T. .................................................................. 10
Figura 10.18. Especificaciones de tiempos en flip-flops. ............................................................ 11
Figura 10.19. Flip-flops disparados por cantos de subida y bajada. ............................................ 11
Figura 10.20. Conmutación Flip-flop D y latch transparente. ..................................................... 13
Figura 10.21. Modos de funcionamiento de un latch transparente. ............................................. 13
Figura 10.22. Entradas y reloj en flip-flops D. ............................................................................ 14
Figura 10.23. Conexión cascada. ................................................................................................. 14
Figura 10.23.a. Señales conexión cascada. .................................................................................. 15
Figura 10.24. Consideración del tiempo de desplazamiento del reloj. ........................................ 15
Figura 10.24.a. Consideración del tiempo de desplazamiento del reloj. ..................................... 16
Figura 10.25. Pulsador como entrada de sistema sincrónico. ...................................................... 17
Figura 10.25. Sincronizador de entrada asincrónica.................................................................... 17
Figura 10.25. Sincronizador con dos flip-flops. .......................................................................... 17
Figura 10.26. Entrada asincrónica conectada a dos flip-flops. .................................................... 18
Figura 10.27. Violación de tiempos de hold o setup en D2. ........................................................ 18

Profesor Leopoldo Silva Bijit 19-01-2010


1

Capítulo 11

Análisis y Diseño de máquinas


secuenciales sincrónicas

11.1. Análisis

Dado el esquemático de una red secuencial sincrónica se desea obtener el diagrama de estados;
y a partir de éste, inferir el funcionamiento de la máquina. Este procedimiento se suele llamar
reingeniería.

A continuación se resume el funcionamiento de una máquina secuencial; en el esquemático de


la Figura 11.1, los elementos de memoria pueden ser flip-flops Ds o JKs.

Reset’

x(k) P1 z(k) P2

y(k)
Q
y(k+1)

Clk

Figura 11.1. Esquema de máquina secuencial.

El estado actual y (k ) es sostenido en las salidas Q(k ) de los flip-flops, durante el intervalo de
tiempo k. En este intervalo, se generan z (k ) e y (k 1) a partir de y (k ) y x(k ) , en la red
combinacional. El próximo estado, y (k 1) , se lleva a las entradas de los flip-flops, de tal
manera que en el instante (k +1) las salidas de los flip-flops, almacenaran los valores y (k 1) .

Para esto es indispensable que las entradas a los flip-flops sean estables en el momento de
aplicar el canto del reloj que efectuará la conmutación, o cambio de estado, que implica pasar
del intervalo k al intervalo (k+1).

Para n entradas, m estados y p salidas se tienen, los vectores booleanos:

Profesor Leopoldo Silva Bijit 19-01-2010


2 Sistemas Digitales
x ( x0 , x1 ,..., xn )
y ( y0 , y1 ,..., ym )
z ( z0 , z1 ,..., z p )

Programas de los flip-flops. Matrices de programación.

A partir del esquemático de la red booleana pueden escribirse las funciones de las entradas de
los flip-flops en función de la entrada y el estado presente, se denominan programas de los flip-
flops, o ecuaciones de excitación de éstos.

En caso de flip-flops JKs, se tienen las ecuaciones:


Ji f i ( y, x)
Ki gi ( y, x)
En caso de flip-flops Ds, se tienen las ecuaciones:
Di f i ( y, x)

Las representaciones de estas ecuaciones en un mapa de Karnaugh se denominan: Matrices de


Programación.

11.2. Método de análisis tabular

El método de análisis tabular está basado en obtener la matriz de transiciones a partir de las
matrices de programación. En cada casilla, de cada una de las (m+1) matrices de programación,
mediante las tablas características, se determinan las (m+1) componentes del vector de próximo
estado de cada casilla de la matriz de transición.

El siguiente esquema muestra el proceso para obtener la matriz de transiciones:

x x
y y
J K y(k+1)
0 0 y(k)
0 1 0
1 0 1
Ji, Ki 1 1 y’(k) y(k+1)

Figura 11.2. Esquema análisis tabular

Se muestra sólo la matriz de programación del flip-flop i-ésimo, que se asume del tipo JK. Para
cada par ( J i , Ki ) de la matriz de programación i-ésima, mediante la tabla característica, se
encuentra el próximo estado yi (k 1) asociado; componiendo de este modo el vector y(k+1).

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 11. Análisis y Diseño de máquinas secuenciales sincrónicas 3
A partir de la tabla de transiciones, resulta sencillo dibujar el diagrama de estados, y a partir de
éste determinar el funcionamiento u operación de la máquina secuencial.

11.3. Método analítico.

Las ecuaciones de los programas de los flip-flops, que se asumen del tipo JK:

Ji f i ( y, x)
Ki gi ( y, x)

Se reemplazan en las ecuaciones características de los (m+1) flip-flops:

yi (k 1) J i yi ' Ki ' yi

De esta forma se eliminan las variables J i y K i , quedando las (m+1) ecuaciones:

yi (k 1) fi ( y(k ), x(k ))
Las que representadas en un mapa de Karnaugh, forman la matriz de transiciones.

11.4. Ejemplo método tabular

Se tiene el siguiente esquemático:


clk
C
C
P1
P2

A
J Q S
J
x K Q’
C
clk K
P
1
reset
B
S
J Q
C _
K Q
P z

C
S
J
C _
K Q
P

Figura 11.3. Ejemplo de máquina secuencial empleando flip-flops JK

Profesor Leopoldo Silva Bijit 19-01-2010


4 Sistemas Digitales
Nótese que se tiene una señal de reset común para los tres flip-flops. Esto implica que el estado
inicial será el 000.
Los cambios ocurren con el canto de subida del reloj.
Se asume que la entrada x es una secuencia sincrónica con el mismo reloj (clk) del sistema.

Leyendo las ecuaciones de las entradas de los flip-flops, directamente del esquemático, se
obtienen:
JA ( B ' C B ' x '); K A B
JB ( AB ' B ' C ); K B B
JC A ' x; K C B x'

Para obtener la matriz de programación del flip-flop A: Se debe establecer JA y KA para cada
combinación posible del estado presente y la entrada. Se procede en forma análoga para los
flip-flops B y C.

Este proceso de ilustra en la Figura 11.4, para cada uno de los flip-flops, se obtienen las
siguientes matrices de programación:

x x x
ABC 0 1 ABC 0 1 ABC 0 1
000 10 00 000 00 00 000 01 10
001 10 10 001 10 10 001 01 10
011 01 01 011 01 01 011 01 11
010 01 01 010 01 01 010 01 11
110 01 01 110 01 01 110 01 01
111 01 01 111 01 01 111 01 01
101 10 10 101 10 10 101 01 00
100 10 00 100 10 10 100 01 00
J , K J , K J , K
A A B B C C
A A A

Figura 11.4. Matrices de Programación

Usando la tabla característica del flip-flop JK se logra, la matriz de transiciones, de la Figura


11.5. Además se ha empleado la ecuación de salida: z xBC .

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 11. Análisis y Diseño de máquinas secuenciales sincrónicas 5
x
ABC
0 1
000 100/0 001/0
001 110/0 111/0
011 000/0 000/1
010 000/0 001/0
110 000/0 000/0
111 000/0 000/1
101 110/0 111/0
100 110/0 110/0
A(k+1) B(k+1) C(k+1)/z

Figura 11.5. Matriz de transiciones del Ejemplo 11.4.

Para todas las ocurrencias de (J,K) igual a (1,0) en las tablas de la Figura 11.4, se coloca un 1 en
la columna correspondiente de la Figura 11.5; se coloca 0 para (J, K) igual a (0,1).

Para (J, K) igual a (0,0) en las tablas de la Figura 11.4, se coloca el valor actual de la variable en
la columna correspondiente de la Figura 11.5.
Para (J, K) igual a (1,1) en las tablas de la Figura 11.4, se coloca el valor complementado de la
variable actual en la columna correspondiente de la Figura 11.5.

Si colocamos la cifra decimal, equivalente del nombre binario del estado, se logra la matriz de
transiciones, empleando nombres simbólicos para los estados. Se obtiene la Figura 11.6,
izquierda. Y de esta matriz se obtiene el diagrama de estados que se ilustra a la derecha en la
Figura 11.6.

Profesor Leopoldo Silva Bijit 19-01-2010


6 Sistemas Digitales

3
0/0 2
Estado x 0/0
actual 0 1 1/1
0 1/0
0 4/0 1/0
1 6/0 7/0 0/0 1/0
3 0/0 0/1
2 0/0 1/0 4 /0 1 1/1
6 0/0 0/0 0/0
7 0/0 0/1 /0 0/0 1/0
5 6/0 7/0
4 6/0 6/0 6 7
Estado próximo/z
0/0 1/0
5

Figura 11.6. Diagrama de estados ejemplo 11.3

Se observa que los estados 2, 3 y 5 sólo pueden ser estados iniciales y no participan de la
naturaleza secuencial del resto. Si no se dibujan, resulta la Figura 11.7.

reset
0
0/0
0/0
1/0
1/1

4 /0 1

1/0
/0
0/0
7
6

Figura 11.7. Diagrama de estados reducido.

En la Figura 11.7, con estado inicial igual a cero, puede concluirse que el circuito es un
reconocedor de secuencia de largo fijo igual a 3. A partir del estado inicial acepta tres valores de
la entrada y luego toma una decisión.

La máquina analiza grupos de 3 bits de la secuencia de entrada, y si ésta es 111, genera un uno
en la salida; cero en el resto de los casos.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 11. Análisis y Diseño de máquinas secuenciales sincrónicas 7
11.5. Ejemplos del método analítico.

a) Para la Figura 11.3, se tienen las siguientes ecuaciones:

JA ( B ' C B ' x '); K A B


JB ( AB ' B ' C ); K B B
JC A ' x; K C B x'
z xBC

Las ecuaciones anteriores representan el esquemático de la Figura 11.3.

Para los flip-flops JK se tienen las siguientes ecuaciones características:

A(k 1) JA A KAA
B(k 1) JB B KBB
C (k 1) JC C KCC

Donde se han reemplazado las salidas Q de los flip-flops, por las variables de estado: A, B y C.

Eliminando las variables J y K de los tres flip-flops, reemplazándolas en las ecuaciones


características, se obtienen:
A(k 1) ( B C B x) A BA
B (k 1) ( AB BC ) B BB
C (k 1) AxC ( B x ) C
Las ecuaciones anteriores permiten obtener directamente la matriz de transición, para esto basta
representarlas en un mapa de Karnaugh:
x
ABC
0 1
000 100/0 001/0
001 110/0 111/0
011 000/0 000/1
010 000/0 001/0
110 000/0 000/0
111 000/0 000/1
101 110/0 111/0
100 110/0 110/0
A(k+1) B(k+1) C(k+1)/z

Figura 11.8. Matriz de transiciones, empleando método analítico.

Profesor Leopoldo Silva Bijit 19-01-2010


8 Sistemas Digitales
Que resulta ser igual a la obtenida antes, por el método tabular. Luego se continúa en forma
similar al ejemplo anterior, desarrollado en 11.4.

b) Analizar la máquina secuencial descrita por el diagrama de bloques, de la Figura 11.9, y las
ecuaciones siguientes:
z1
x M.S.S. z 2
z3

clk
Figura 11.9. Entradas y salidas de máquina secuencial.

J1 xy2 ; K1 x z1 y1 y2
z2 xy1 y2
J2 xy1 ; K2 x z3 y1 y2

Las ecuaciones del próximo estado de los flip-flops:

Y1 J1 y1 K1 y1
Y2 J 2 y2 K 2 y2

Reemplazando las ecuaciones de programación de los flip-flops en las ecuaciones anteriores,


resultan:
Y1 xy2 y1 xy1
Y2 xy1 y2 xy2

Que permite escribir la siguiente tabla de transiciones:


x
y1 y2 0 1
0 0 00 01
0 1 01 10
1 1 11 00
1 0 10 00
Y1Y2

Figura 11.10. Tabla de transiciones ejemplo 11.5.b

Las ecuaciones de las salidas pueden escribirse, empleando el mapa de Karnaugh, de la Figura
11.11:

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 11. Análisis y Diseño de máquinas secuenciales sincrónicas 9
x
y1 y2 0 1
00 100 100
01 000 000
11 001 001
10 000 010
z1 z2 z3

Figura 11.11. Ecuaciones de salidas.

Con la asignación de estados, de la Figura 11.12, en la que se emplea como nombre lógico el
equivalente decimal del nombre físico o binario, se obtiene el diagrama de estados que se
muestra en la Figura 11.13.
x
Estado 0 1
0 0 1
1 1 2
3 3 0
2 2 0
Est. próximo

Figura 11.12. Asignación de estados simbólicos.

0/100
1/100 0/000
0 1

1/001
1/100 x/z1z2z3
1/010
0/001 2 0/000
3

Figura 11.13. Diagrama de estados de Mealy

Observando el diagrama, de la Figura 11.13, se obtienen:


El estado 3 sólo puede ser estado inicial.
La salida z3 indica que se está en estado 3.
La salida z1 indica que se está en estado 0.
Si se parte del estado cero, se cuentan 3 niveles altos de la entrada, y se lo indica en salida z2
mediante un pulso.

Notar que debido a que z2 depende de x, se modeló mediante una máquina de Mealy.

11.6. Frecuencia máxima de operación del reloj.

Para un flip-flop sincronizado por cantos de bajada:

Profesor Leopoldo Silva Bijit 19-01-2010


10 Sistemas Digitales

Red J
Combinacional Q
K

tp tf
reloj

Figura 11.14. Definición de tiempos de propagación.

a) Se puede calcular el retardo de propagación, a través de los circuitos combinacionales, por la


vía más larga. Es decir, por aquella vía de realimentación que produzca el mayor retardo, está
vía suele denominarse ruta crítica. Sea este tiempo: tp.
b) Desde el canto de bajada del reloj, hasta que la salida de un flip-flop cambie de estado, se
tiene el tiempo de propagación en el flip-flop. Sea este tiempo: tf.
c) Se tiene además el tiempo de setup, tsu, que es aquel durante el cual las entradas de los flip-
flops no deben cambiar, antes del canto.
d) El período del reloj puede cambiar debido a que la frecuencia puede experimentar
variaciones debidas a cambios de la temperatura. También la señal del reloj en diferentes puntos
del circuito puede tener variaciones por el tiempo de propagación a través de los cables. Sea el
máximo tiempo de variación tskew.

Si tenemos un reloj:

t0 t1 t

Figura 11.15. Ciclos del reloj

Por las condiciones a, b, c y d, se debe cumplir: to + t1 > tf + tp+ tsu+ tskew.

Sea tpmin el mínimo tiempo que tardan los cambios de las señales en atravesar la red
combinacional, y tfmin el mínimo tiempo en que cambian las salidas de los flip-flops,
después del canto; entonces debe cumplirse: tpmin + tfmin + tskew > thold

Si puede asegurarse que las entradas no cambian tsu antes del canto y thold después del canto, el
flip-flop funcionará confiablemente. Esta verificación debe efectuarse para cada uno de los flip-
flops de la red booleana.

Entonces el período mínimo del reloj, debe cumplir:

Tmín = tf + tp + tsu+ tskew.

Obteniéndose una frecuencia máxima:

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 11. Análisis y Diseño de máquinas secuenciales sincrónicas 11
1
f máx
tf tp tsu t skew

Algunos valores típicos, de la familia TTL:


tf =20 ns ; tsu =20 ns ; tp =15 ns que dan frecuencias de operación menores que 18 [Mhz] sin
considerar tskew. Los dispositivos CPLD y FPGA tienen frecuencias de funcionamiento mucho
mayores.

11.7. Síntesis o diseño de máquinas secuenciales sincrónicas, a partir del diagrama


de estados.

El problema que deseamos resolver es obtener las redes combinacionales que programan los
flip-flops de una red secuencial, a partir del diagrama de estados, reducido y con asignación de
estados. De estas ecuaciones puede obtenerse el esquemático, o el programa verilog para la
implementación física.

11.7.1. Procedimiento de síntesis tabular.

A partir de la tabla de transiciones, con la ayuda de la tabla de excitaciones de los flip-flops, se


obtienen las (m+1) matrices de control de los flip-flops. Y mediante éstas, se determinan los
programas de los flip-flops. En el esquema de la Figura 11.16, se muestra la generación del
programa del flip-flop JK i-ésimo solamente.

Esquemáticamente:

Matriz de control Programas


x(k)
y(k) x
y
Ji f i ( y, x)
Ki gi ( y, x)
y(k+1)

Ji, Ki
y(k) y(k+1) JK

Figura 11.16. Esquema general de síntesis

Si se tienen (n+1) entradas y (m+1) flip-flops, los vectores booleanos de la entrada y el estado
quedan representados por:

Profesor Leopoldo Silva Bijit 19-01-2010


12 Sistemas Digitales
x ( x0 , x1 ,..., xn )
y ( y0 , y1 ,..., ym )

En el esquema anterior se ilustra empleando flip-flops de tipo JK, se procede en forma similar si
los flip-flops son de otro tipo. Se eliminan las variables de próximo estado, obteniéndose las
matrices de programación.

Resumen de las tablas de excitaciones para diversos flip-flops.

Q(k) Q(k+1) D J K T S R
0 0 0 0 0 0
0 1 1 1 1 1 0
1 0 0 1 1 0 1
1 1 1 0 0 0

Figura 11.17. Tablas de excitaciones para diferentes flip-flops.

Luego, en el Capítulo 14, se verán los flip-flops SR, cuyas tablas se indican en las últimas dos
columnas de la Figura 11.17.

11.7.2. Procedimiento de síntesis analítico.

Se escriben las ecuaciones características de los flip-flops; y se escriben las ecuaciones de


próximos estados, a partir de la tabla de transiciones.

Por comparación de coeficientes se determinan las funciones Ji y Ki, si se emplean flip-flops de


este tipo. Lo que se efectúa es la eliminación de las variables de próximo estado.

11.8. Ejemplos de síntesis.

Ejemplo 11.8.1.

Para el detector de secuencia 110 cada vez que ésta se presente, se tiene:
1/0 1/0
0/0 1/0

START Estado 0 Estado 1


0/0

reset
0/1

Figura 11.18. Detector de secuencia 110.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 11. Análisis y Diseño de máquinas secuenciales sincrónicas 13
Con la siguiente asignación de estados, se obtiene la matriz de transiciones:

x
Estado Q1 Q0 Q1 Q0 0 1
Start 0 0 0 0 00/0 01/0
Estado 0 0 1 0 1 00/0 11/0
Estado 1 1 1 1 1 00/1 11/0
1 0 dd/d dd/d
Q1+Q0+/z
Figura 11.19. Asignación de estados y matriz de transiciones.

Notar la elección de condiciones superfluas para el estado 10, que no se emplea en el diseño. Se
escogió el estado de start como el 00, para simplificar el diseño de la señal reset; en este caso
basta activar la señal clear asincrónico del flip-flop que se emplee para lograr la función reset.

La elección de condiciones superfluas simplifican las redes combinacionales que efectúan los
programas de los flip-flops.
a) Procedimiento tabular empleando flip-flops Ds:
Usando la tabla de transiciones de flip-flops Ds, se logra:
x
Q1 Q0 0 1
0 0 00 01
0 1 00 11
1 1 00 11
1 0 dd dd
D1D0

Figura 11.20. Programas de flip-flops D

Con programas: D1 = Q0 x
D0 = x

Debe notarse que cuando se emplean flip-flops D, los programas de éstos pueden obtenerse
directamente de la matriz de transiciones, cambiando Q1+ por D1 y Q0+ por D0.
b) Método analítico empleando flip-flops Ds:
De la matriz de transiciones se tienen:
z = Q1 x'
Q0+ = x
Q1+ = Q0 x

De los flip-flops Ds:


Q1+ = D1
Q0+ = D0

Profesor Leopoldo Silva Bijit 19-01-2010


14 Sistemas Digitales

Comparando coeficientes se logra igual resultado que el anterior.


c) Procedimiento tabular empleando flip-flops JKs:
Empleando flip-flops JK, de la matriz de transiciones de la Figura 11.19, se obtienen:

x x
Q1 Q0 0 1 Q1 Q0 0 1
0 0 0 0 0 0 0 1
0 1 0 1 0 1 1 0
1 1 1 0 1 1 1 0
1 0 1 0
J1K1 J0K0
Figura 11.21. Programas de flip-flops JK

Leyendo los mapas, considerando las condiciones superfluas, resultan:


J1 = Q0 x; K1 = x'; J0 = x; K0 = x'

Notar que K1 también se podría haber expresado, como: K1 = x' +Q0' agrupando los ceros, o
bien: K1 = x’Q0 agrupando los unos; sin aprovechar completamente las condiciones superfluas.
d) Método analítico empleando flip-flops JKs:
De la matriz de transiciones de la Figura 11.19, y aplicando el teorema de expansión, para tener
presente a la derecha la variable correspondiente, que figura a la izquierda de cada ecuación, se
logra:
z = Q1 x'
Q1+ = Q0 x = Q0xQ1' + Q0xQ1 (se expande en Q1)
Q0+ = x = xQ0' + xQ0 (se expande en Q0)

De los flip-flops JKs, se tienen las siguientes ecuaciones:

Q1+ = J1Q1' +K1'Q1


Q0+ = J0Q0' +K0'Q0

Comparando los coeficientes, se obtienen:


J1 = Q0 x ; K1 = Q0' + x'; J0 = x; K0 = x'

Notar que el método analítico, en este caso, agrega el término Q0' que resulta superfluo.

Como se puede apreciar en el ejemplo anterior, el procedimiento tabular es capaz de generar


expresiones más reducidas que el procedimiento analítico. Esto se debe a que en este último la
reducción se efectúa empleando las ecuaciones características y no se pueden aprovechar las
condiciones superfluas que aparecen en las tablas de excitaciones de los flip-flops JKs.

En caso de diseñar empleando flip-flops JK y si la tabla de transiciones tiene condiciones


superfluas, debido a estados no empleados, conviene usar el método tabular.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 11. Análisis y Diseño de máquinas secuenciales sincrónicas 15

La matriz de transiciones de la Figura 11.20, puede plantearse como una tabla de verdad, entre
las entradas (estado presente y entradas) y las salidas (próximo estado y salidas), según se
muestra en la Figura 11.22.

Entradas Salidas
Q0 Q1 x Q1+ Q2+ z
0 0 0 0 0 0
0 0 1 0 1 0
0 1 0 0 0 0
0 1 1 1 1 0
1 0 0 d d d
1 0 1 d d d
1 1 0 1 0 1
1 1 1 1 1 0

Figura 11.22. Matriz de transiciones.

e) Descripción del diseño en Verilog.


Una vez realizado el diseño, pueden describirse las redes combinacionales mediante su
estructura de compuertas, empleando el comando assign; y los flip-flops con un proceso
activado por los cantos del reloj. Los nombres de los procesos se definen en la Figura 11.1.

// detector de secuencia 110 cada vez que ésta se presente.


module mealy110 (input clk, resetn, x, output z);
reg Q1, Q0;
wire D1, D0;
// Redes combinacionales de próximo estado y de salida. Proceso P1
assign D1 = Q0&x;
assign D0 = x;
assign z = Q1&(~x); //salida asincrónica
// Proceso registro. P2
always @(negedge resetn or posedge clk)
if (resetn == 0) begin Q1=0; Q0=0; end
else begin Q1<= D1; Q0 <= D0; end
endmodule

Si se desea eliminar la salida asincrónica z, característica de las máquinas de Mealy, suele


registrarse la salida en un flip-flop. Esto agrega un elemento de memoria a la red booleana.

// detector de secuencia 110 cada vez que ésta se presente. Salida registrada.
module mealy110 (input clk, resetn, x, output zs);
reg Q1, Q0, zs;
wire D1, D0;
// Redes combinacionales de próximo estado. P1

Profesor Leopoldo Silva Bijit 19-01-2010


16 Sistemas Digitales
assign D1 = Q0&x;
assign D0 = x;
// Proceso registro. P2. Salida sincronizada.
always @(negedge resetn or posedge clk)
if (resetn == 0) begin Q1=0; Q0=0; end
else begin Q1<= D1; Q0 <= D0; zs<=Q1&(~x); end
endmodule

Figura 11.22a. Salida asincrónica z, y salida sincrónica zs.

La Figura 11.22a, muestra la diferencia entre z y zs.

Ejemplo 11.8.2.

Determinar los programas de los flip-flops JK, para la siguiente matriz de transiciones.
AB
x 00 01 11 10
0 2 6 4
0 00 00 11 10
1 3 7 5
1 11 11 10 01

A+B+
Figura 11.23. Matriz de transiciones ejemplo 11.8.2.

Se tienen, de la matriz:
A+ = A'x + AB +Ax' = ( x )A' + (B + x') A
B+ = A'x + ABx' +B'x = A'xB' + A'xB + ABx' +B'x = (A'x + x) B' + (A'x + Ax')B
Se han factorizado las ecuaciones, en términos de Qi y Qi’ para cada uno de los flip-flops Qi.

De los flip-flops, se tienen:


A+ = JaA' +Ka'A
B+ = JbB' +Kb'B

Comparando coeficientes, de los dos conjuntos de ecuaciones anteriores, resultan:


Ja = x ; Ka = (B + x')' = B'x ;
Jb = A'x +x = x ; Kb = (A'x +Ax')' = A'x' + Ax

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 11. Análisis y Diseño de máquinas secuenciales sincrónicas 17
Ejemplo 11.8.3.

Diseñar máquina secuencial, que implemente la siguiente matriz de transiciones, empleando un


flip-flop D, para la variable A; y un JK para B.

AB
x 00 01 11 10
0 2 6 4
0 010 001 101 000
1 3 7 5
1 000 110 111 011

A+ B+ z

Figura 11.24. Matriz de transiciones ejemplo 11.8.3

Es una máquina de Mealy, ya que: z = Ax +B x' (la salida depende de la entrada)

Con flip-flop D para el estado A, se obtiene:


A+ = Da = AB + Bx (directamente del mapa)

Con flip-flop JK para la variable B, se logra:


B+ = JbB' +Kb'B ecuación del flip-flop JK.
Del mapa se tiene:
B+ = B x + Ax + A'B'x' = B x + ABx + AB'x +A'B'x' = (Ax+A'x') B' +(x + Ax) B
B+ = ( A' x) B' + xB
Comparando coeficientes, se logra:
Jb = A' x Kb = x'

Ejemplo 11.8.4.

Diseñar un flip-flop JK empleando compuertas y un flip-flop D.

Es preciso especificar el diagrama de estados o la matriz de transiciones de lo que se desea


diseñar; en este caso representaremos al flip-flop JK por su ecuación característica.

De la matriz de transiciones del flip-flop JK se tiene la siguiente ecuación:


Q+ = JQ' + K'Q

El programa del flip-flop D, resulta efectuando Q+=D:


D = JQ' + K'Q

Profesor Leopoldo Silva Bijit 19-01-2010


18 Sistemas Digitales

Q Q
J
D
K
Q'

reloj

Figura 11.25. JK basado en flip-flop D

Este diseño se emplea en dispositivos programables que no disponen en las macroceldas de flip-
flops JKs, pero que generalmente disponen de flip-flops Ds.

El diagrama de la Figura 11.26, muestra la implementación de un JK, mediante un dispositivo


lógico programable, que sólo tiene flip-flops de tipo D en su estructura interna:

Q
D
DQ

J Q.f
b
K reloj

Figura 11.26. Implementación de JK en CPLD

11.9 Resumen y observaciones.

Se analiza una máquina sencilla, mostrando y resumiendo una metodología de diseño.

11.9.1. Convertidor de cambio de nivel en un pulso.

Se desea convertir un canto de subida en un pulso de ancho fijo. Se trata de un detector


sincrónico de cantos de subida, que no dependa de cuánto tiempo permanezca alta la señal de
entrada. La salida genera un pulso simple de ancho igual al período del reloj, y que puede
alimentar con seguridad a un contador.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 11. Análisis y Diseño de máquinas secuenciales sincrónicas 19

n p

clk

Figura 11.27. De cantos de subida a pulsos.

Consideramos que a la señal n, que resulta de oprimir un botón, se le han suprimido los rebotes,
y que además está sincronizada, es decir el canto de subida se produce después de que ha
transcurrido un tiempo mayor que el thold de los flip-flops.
Los rebotes pueden filtrarse con un latch, y la sincronización se logra haciendo pasar la señal a
través de uno o dos flip-flops Ds alimentados con el mismo reloj.

11.9.2. Modelo de Moore.

Si la salida está asociada al estado, tendremos tres situaciones distinguibles. La primera cuando
se espera un canto de subida con salida cero, la segunda cuando llega un canto de subida con
salida uno, y la tercera cuando se espera un canto de bajada con salida cero.

Si agregamos las condiciones bajo las cuales se cambia de estado, podemos describir que:
Mientras la señal de nivel n, está baja, se permanece en el estado ECS, esperando un canto de
subida, con salida p=0. Cuando en n se presenta un canto de subida se pasa al estado CS, llegó
un canto de subida, con salida p=1.
Estando en CS, si la señal n baja a cero, vuelve a esperar otro canto de subida; es decir pasa al
estado ECS; pero si la señal permanece en nivel alto, pasa a un tercer estado ECB, en el cual se
espera un canto de bajada.
Estando en ECB con salida p=0, se permanece en ese estado mientras la señal n esté alta, y se
pasa a ECS cuando llega un canto de bajada en n.

La descripción anterior puede formalizarse con el siguiente diagrama de estados.

reset n=1 n=1

n=0 ECS CS ECB


n=1
p=0 p=1 p=0
n=0
n=0

Figura 11.28. Modelo de Moore, convertidor de cantos.

Con la siguiente codificación binaria de los estados:

Profesor Leopoldo Silva Bijit 19-01-2010


20 Sistemas Digitales
Estado Q1 Q0
ECS 0 0
CS 0 1
ECB 1 1

Figura 11.29. Asignación de estados.

Se logra la siguiente matriz de transiciones:

Estado Próximo
actual estado
Q1 Q0 n Q1+ Q0+ p
0 0 0 0 0 0
0 0 1 0 1 0
0 1 0 0 0 1
0 1 1 1 1 1
1 1 0 0 0 0
1 1 1 1 1 0
1 0 0 x x x
1 0 1 x x x

Figura 11.30. Matriz de transiciones.

De la cual pueden obtenerse las ecuaciones de la red combinacional:


Q1+=nQ0 Q0+=n p=Q1’Q0

Empleando flip-flops Ds, se tienen:


D1=Q1+, D0=Q0+

Con las cuales resulta el siguiente diseño:

D1=nQ0 D0=n p=Q1’Q0

reset’

Q1 Q0
D D p
n
Q1’

clk

Figura 11.31. Diseño de Moore.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 11. Análisis y Diseño de máquinas secuenciales sincrónicas 21
11.9.3. Modelo de Mealy.

Si la salida está asociada a los cambios de entrada podemos conceptualizar dos estados: uno en
el que se espera un canto de subida, y el otro cuando se espera el canto de bajada.

Estando en ECS: Mientras la entrada esté baja, la salida también debe estar baja y debe
permanecer en ECS; cuando en la entrada se presenta un canto de subida la salida debe activarse
a uno y cambiar al estado ECB.

Estando en ECB: Mientras la entrada esté alta, la salida también debe estar baja y permanecer
en ECB; cuando en la entrada se presenta un canto de bajada la salida debe permanecer baja y
cambiar al estado ECB.

Una descripción formal, de lo anterior se muestra en el siguiente diagrama de estados:


reset n=1/p=1

n=0/p=0 ECS ECB n=1/p=0

n=0/p=0

Figura 11.32. Diagrama de estados de Mealy.

Si denominamos con 0 al estado ECS y con 1 al estado ECB, se obtiene:

Q n Q+ p
0 0 0 0
0 1 1 1
1 0 0 0
1 1 1 0

Figura 11.33. Matriz de transiciones de Mealy.

De la matriz de transiciones, se obtiene:


Q+=n, p=Q’n

Empleando un flip-flop D, se tiene: D= Q+

Con lo cual se obtiene el siguiente diseño:

D=n, p=Q’n

Profesor Leopoldo Silva Bijit 19-01-2010


22 Sistemas Digitales

reset’

Q
n D p
Q’

clk

Figura 11.34. Diseño de Mealy.

11.9.4. Análisis de transiciones.

a) Estado inicial. Reset.


En el diseño de la Figura 11.31, se lleva al estado inicial, mediante un pulso asincrónico de
reset, el cual se aplica a ambos flip-flops, ya que el estado inicial es Q1=0 y Q0=0.

En un circuito físico, cuando se aplica un canto de bajada a la señal reset’, las salidas de los
flop-flops van a cero, llevando la máquina al estado inicial.
reset’

clk
tr
Q0
Q1
p
n

Figura 11.35. Activación de señal reset.

La salida, en el caso de Moore, tomará el valor correspondiente al estado inicial. Las entradas
son ignoradas hasta el primer canto del reloj, luego que se levante la señal de reset, lo cual se
indica con el instante tr, en la Figura 11.35. Se ilustra con una discontinuidad el tiempo que
dura la señal reset en nivel bajo, mostrando que esta situación puede durar varios períodos del
reloj.
En el instante tr, se muestrean las entradas y de acuerdo a éstas se producen los cambios de
estado. En la Figura 11.35 se asumió un nivel bajo de la entrada n, de este modo la máquina
permanece en estado inicial, esperando un canto de subida.

En un modelo de Mealy, la situación es similar para los estados de los flip-flops, pero la salida
dependerá de la entrada, mientras la señal de reset esté baja.

En caso de señales sincrónicas, la situación es similar, salvo que los cambios en los flip-flops se
producen en el siguiente pulso del reloj después de la activación del reset.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 11. Análisis y Diseño de máquinas secuenciales sincrónicas 23

En simulación, deben generarse un pulso de reset, para que los flip-flops y las salidas tomen
valores. En caso de no hacerlo, puede que los flip-flops tomen valores desconocidos y no se
generen las secuencias que se desea simular. En un circuito físico, los flip-flops siempre estarán
en algún valor, después de aplicar la polarización.
b) Modelo de Moore.
Para un canto de subida en n, que cumpla con los requerimientos de hold, se tienen:
Q0 cambia un tiempo de propagación de flip-flop, después del canto de subida del reloj.
La salida p, cambia un tiempo de propagación de una compuerta AND, después de cambios en
Q1 o Q0.
El cambio de p se produce en el primer canto del reloj en el cual se tenga la entrada n en alto.

clk

Q0
Q1

Figura 11.36. Transiciones modelo de Moore.

c) Modelo de Mealy.
En el modelo de Mealy, la salida cambia cuando cambia la entrada, y suele producirse un ciclo
antes que en el modelo de Moore.
El cambio de estado se produce, un tiempo de propagación de flip-flop, después del canto de
subida del reloj.
n

clk

Q
p

Figura 11.37. Transiciones modelo de Mealy.

En el modelo de Mealy suelen requerirse menos flip-flops, y genera la salida un tiempo antes
que en modelo de Moore. Sin embargo la salida no es sincrónica con el reloj.
d) Modelo de Mealy, con salida registrada.
Para resolver esta dificultad suele sincronizarse la salida de la máquina de Mealy, registrando la
salida en un flip-flop adicional.

Profesor Leopoldo Silva Bijit 19-01-2010


24 Sistemas Digitales

reset’
ps
Q Q
n D p
Q’ D Q’

clk

Figura 11.38. Diseño Mealy con salida sincrónica.

Lo cual retrasa la activación de la salida ps, pero la deja sincrónica.

clk

Q
p
ps

Figura 11.39. Transiciones Mealy con salida sincrónica.

e) Modelo de Moore, con salida registrada.


En la Figura 11.31, la salida p es generada a través de un circuito combinacional, que es
alimentado por las salidas de los flip-flops. Debido a que los tiempos de propagación desde el
canto hasta la salida de los flip-flops pueden tener pequeñas variaciones, el diseño presentará
glitches o perturbaciones, debido a las carreras de las entradas al circuito combinacional.
Se denomina glitch (del alemán glitschen, con el significado de deslizar) a un pulso de corta
duración, que generalmente es el resultado de una falla en el diseño. También se denominan
spikes (del inglés, punta delgada), pero este término es más adecuado a la generación de
pequeños pulsos no deseados, debidos a interferencias.

La salida puede generarse con las condiciones del estado próximo, y empleando un flip-flop
para sincronizar la salida.
Antes teníamos: Q1+=nQ0 Q0+=n p=Q1’Q0

Entonces se genera p+ según:

p+=(Q1+)’(Q0+) = (nQ0)’n = (n’+Q0’)n= nQ0’

El diseño se representa en la Figura 11.40.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 11. Análisis y Diseño de máquinas secuenciales sincrónicas 25

reset’
ps
Q1 Q0 Q
p+
n D D D
Q1’ Q0’ Q’

clk

Figura 11.40. Modelo de Moore. Salida registrada.

La salida ps, se produce en los mismos tiempos que en el modelo de Moore de la Figura 11.31,
pero se requiere un flip-flop adicional. Debe notarse que ps será sincrónica y no tendrá
perturbaciones.

En la Figura 11.41, se muestran las señales p+ y ps. Se ha dejado la señal p, del diseño anterior,
para comparar los casos.
n

clk

Q0
Q1

p
p+

ps

Figura 11.41. Formas de ondas modelo de Moore. Salida registrada.

Problemas resueltos.

Problema 11.1.

Generar la señal s0 a partir de la señal CLK.

a) Determinar la matriz de transiciones.


b) Determinar las ecuaciones minimizadas de próximo estado.
c) Determinar los programas de los flip-flops, asumiendo que Q0 y Q1 son de tipo D,
y que Q2 y Q3 son de tipo JK.
d) Determinar la ecuación minimizada de la salida s0.

Profesor Leopoldo Silva Bijit 19-01-2010


26 Sistemas Digitales

CLK
Q0
Q1
Q2
Q3
s0
Período

0 1 2 3 4 5 6 7 8 9 10 0

Figura P11.1. Formas de ondas Problema 11.1

Solución.
a) Las señales Q3, Q2, Q1 y Q0 corresponden a un contador módulo 11. Con Q3 el bit
más significativo.
Q3Q2
Q1Q0 00 01 11 10
0 4 12 8
00 0001 0101 dddd 1001

1 5 13 9
01 0010 0110 dddd 1010

3 7 15 11
11 0100 1000 dddd dddd

2 6 14 10
10 0011 0111 dddd 0000

Q3+ Q2+ Q1+ Q0+

Figura P11.2. Matriz de transiciones Problema 11.1.

b) Q3+ = (Q2 Q1 Q0) + (Q3 Q1’)


Q2+ = (Q2’ Q1 Q0) + (Q2 Q1’) + (Q2 Q0’)
Q1+ = (Q3’ Q1 Q0’) + (Q1’ Q0)
Q0+ = (Q1’Q0’) + (Q3’Q0’)
Se han agrupado considerando las condiciones superfluas.

Arreglando las ecuaciones de próximo estado se obtiene para cada tipo de flip-flop:
c) Q3 + = (Q2 Q1 Q0) + (Q3 Q1’) = Q3(Q2Q1Q0 + Q1’) + Q3’Q2Q1Q0
Q3+ = Q3’ J3 + Q3 K3’
Comparando coeficientes, se obtiene:
J3 = Q2Q1Q0 K3 = (Q2Q1Q0 + Q1’) ’ = Q1 (Q2’ +Q1’ +Q0’) = Q1Q2’ +Q1Q0’

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 11. Análisis y Diseño de máquinas secuenciales sincrónicas 27

Q2+ = (Q1 Q2’Q0) + (Q1’ Q2) + (Q2 Q0’) = Q2’(Q1Q0) +Q2(Q1’ +Q0’)
Q2+ = Q2’ J2 +Q2 K2’

Comparando coeficientes, se obtiene:


J2 = Q1Q0 K2 = (Q1’ +Q0’)’ = Q1Q0
Si el flip-flop 2 hubiese sido de tipo T, se tendría: T2 = Q1Q0

Q1+ = D1 D1 = (Q3’ Q1 Q0’) + (Q1’ Q0)


Q0+ = D0 D0 = (Q1’Q0’) + (Q3’Q0’)

d) La salida es alta en los tiempos 2, 8 y 9. Se obtiene el mapa:

Q3Q2
Q1Q0 00 01 11 10
0 4 12 8
00 0 0 d 1
1 5 13 9
01 0 0 d 1
3 7 15 11
11 0 0 d d
2 6 14 10
10 1 0 d 0

s0
Figura P11.3. Mapa de la salida s0, Problema 11.1

Empleando las condiciones superfluas en la minimización, se logra:


s0 = (Q3’Q2’Q1Q0’) + (Q3 Q1’)

Problema 11.2.

Se tiene el siguiente esquemático:

Profesor Leopoldo Silva Bijit 19-01-2010


28 Sistemas Digitales

V3
TP1 5V

CP1
U2A
A
S U4A
U3A J Q
TP2 TP3
CP _
DS1 K Q
R
Data
Seq U3C
z

CP1 x B U4B
U3B S
J Q
CP _
K Q
R
Reset
0V

Figura P11.4. Esquemático Problema 11.2.

a) Obtener las ecuaciones de entradas de los flip-flops.


b) Obtener la matrices de programación de cada flip-flop
c) Obtener la matriz de transiciones.
d) Obtener el diagrama de estados. Usar la asignación:

Estado AB
0 00
1 01
2 10
3 11

e) Qué realiza la máquina secuencial.


f) Determinar la secuencia de salida para la siguiente secuencia de entrada:
0100110011100101 con estado inicial A=0 y B=0.
Solución:
a) Ecuaciones de entrada de los flip-flops:
JA x KA x B
JB x KB x A z Ax B ABx (Mealy)

b) Matrices de programación:

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 11. Análisis y Diseño de máquinas secuenciales sincrónicas 29

x x
AB 0 1 AB 0 1
00 11 00 00 00 11
01 11 01 01 00 11
11 11 01 11 01 11
10 11 00 10 01 11
Ja, Ka Jb, Kb

Figura P11.5. Matrices de programación Problema 11.2.

c) Tabla característica y Matriz de transiciones:

x
J K Q(k+1) AB 0 1
0 0 Q(k ) 00 10/0 01/0
0 1 0 01 11/0 00/1
1 0 1 11 00/0 00/0
1 1 Q(k ) 10 00/1 11/0
A(k+1) B(k+1)/z

Figura P11.6. Matriz de transiciones Problema 11.2.

Usando las asignaciones de estados, se obtiene:

x
AB 0 1
0 2/0 1/0
1 3/0 0/1
3 0/0 0/0
2 0/1 3/0
Próximo Estado/z

Figura P11.7. Matriz de transiciones Problema 11.2.

d) Diagrama de estados:

Profesor Leopoldo Silva Bijit 19-01-2010


30 Sistemas Digitales

0/1 0 1/1

0/0 1/0

2 /0 1

1/0 0/0

Figura P11.8. Diagrama de estados Problema 11.2.

e) Funcionamiento:
Salida z = 1 cuando llegan secuencias: 00 ó 11 a partir de estado inicial.
Salida z = 0 cuando llegan las secuencias: 010, 011, 100, 101 a partir del estado inicial.
Estando en estado 0, si llegan las secuencias 01 y 10 se descarta el bit siguiente.
f) Secuencia de salida:
x = 0100110011100101
z = 0000000101000000

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 11. Análisis y Diseño de máquinas secuenciales sincrónicas 31

Ejercicios propuestos.

Ejercicio 11.1

Rediseñar el diagrama de estados de la Figura 11.6 considerando que los estados inalcanzables
(2, 3, 5) son superfluos. Realizar el diseño con flip-flops JKs y comparar el costo de las nuevas
redes combinacionales.
x
Estado actual 0 1
0 4/0 1/0
1 6/0 7/0
3 / /
2 / /
6 0/0 0/0
7 0/0 0/1
5 / /
4 6/0 6/0
Estado próximo/z

Figura E11.1. Matriz de transiciones Ejercicio 11.1.

Profesor Leopoldo Silva Bijit 19-01-2010


32 Sistemas Digitales

Índice general.

CAPÍTULO 11 ............................................................................................................................................1
ANÁLISIS Y DISEÑO DE MÁQUINAS SECUENCIALES SINCRÓNICAS .....................................1
11.1. ANÁLISIS ..........................................................................................................................................1
Programas de los flip-flops. Matrices de programación .....................................................................2
11.2. MÉTODO DE ANÁLISIS TABULAR.......................................................................................................2
11.3. MÉTODO ANALÍTICO.........................................................................................................................3
11.4. EJEMPLO MÉTODO TABULAR ............................................................................................................3
11.5. EJEMPLOS DEL MÉTODO ANALÍTICO. ................................................................................................7
11.6. FRECUENCIA MÁXIMA DE OPERACIÓN DEL RELOJ. ............................................................................9
11.7. SÍNTESIS O DISEÑO DE MÁQUINAS SECUENCIALES SINCRÓNICAS, A PARTIR DEL DIAGRAMA DE
ESTADOS. ................................................................................................................................................ 11
11.7.1. PROCEDIMIENTO DE SÍNTESIS TABULAR. .....................................................................................11
11.7.2. PROCEDIMIENTO DE SÍNTESIS ANALÍTICO. ...................................................................................12
11.8. EJEMPLOS DE SÍNTESIS. ..................................................................................................................12
Ejemplo 11.8.1. ..................................................................................................................................12
a) Procedimiento tabular empleando flip-flops Ds: ........................................................................................ 13
b) Método analítico empleando flip-flops Ds:................................................................................................ 13
c) Procedimiento tabular empleando flip-flops JKs: ...................................................................................... 14
d) Método analítico empleando flip-flops JKs: .............................................................................................. 14
e) Descripción del diseño en Verilog. ............................................................................................................ 15
Ejemplo 11.8.2. ..................................................................................................................................16
Ejemplo 11.8.3. ..................................................................................................................................17
Ejemplo 11.8.4. ..................................................................................................................................17
11.9 RESUMEN Y OBSERVACIONES. .........................................................................................................18
11.9.1. Convertidor de cambio de nivel en un pulso. .........................................................................18
11.9.2. Modelo de Moore. ..................................................................................................................19
11.9.3. Modelo de Mealy. ...................................................................................................................21
11.9.4. Análisis de transiciones..........................................................................................................22
a) Estado inicial. Reset. .................................................................................................................................. 22
b) Modelo de Moore. ..................................................................................................................................... 23
c) Modelo de Mealy. ...................................................................................................................................... 23
d) Modelo de Mealy, con salida registrada. ................................................................................................... 23
e) Modelo de Moore, con salida registrada. ................................................................................................... 24
PROBLEMAS RESUELTOS. ........................................................................................................................25
Problema 11.1. ...................................................................................................................................25
Problema 11.2. ...................................................................................................................................27
EJERCICIOS PROPUESTOS. ........................................................................................................................31
Ejercicio 11.1 .....................................................................................................................................31
ÍNDICE GENERAL. ....................................................................................................................................32
ÍNDICE DE FIGURAS .................................................................................................................................33

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 11. Análisis y Diseño de máquinas secuenciales sincrónicas 33

Índice de figuras

Figura 11.1. Esquema de máquina secuencial. .............................................................................. 1


Figura 11.2. Esquema análisis tabular ........................................................................................... 2
Figura 11.3. Ejemplo de máquina secuencial empleando flip-flops JK ........................................ 3
Figura 11.4. Matrices de Programación ........................................................................................ 4
Figura 11.5. Matriz de transiciones del Ejemplo 11.4. .................................................................. 5
Figura 11.6. Diagrama de estados ejemplo 11.3 ........................................................................... 6
Figura 11.7. Diagrama de estados reducido. ................................................................................. 6
Figura 11.8. Matriz de transiciones, empleando método analítico. ............................................... 7
Figura 11.9. Entradas y salidas de máquina secuencial................................................................. 8
Figura 11.10. Tabla de transiciones ejemplo 11.5.b ...................................................................... 8
Figura 11.11. Ecuaciones de salidas. ............................................................................................. 9
Figura 11.12. Asignación de estados simbólicos........................................................................... 9
Figura 11.13. Diagrama de estados de Mealy ............................................................................... 9
Figura 11.14. Definición de tiempos de propagación.................................................................. 10
Figura 11.15. Ciclos del reloj ...................................................................................................... 10
Figura 11.16. Esquema general de síntesis.................................................................................. 11
Figura 11.17. Tablas de excitaciones para diferentes flip-flops. ................................................. 12
Figura 11.18. Detector de secuencia 110..................................................................................... 12
Figura 11.19. Asignación de estados y matriz de transiciones. ................................................... 13
Figura 11.20. Programas de flip-flops D ..................................................................................... 13
Figura 11.21. Programas de flip-flops JK ................................................................................... 14
Figura 11.22. Matriz de transiciones. .......................................................................................... 15
Figura 11.22a. Salida asincrónica z, y salida sincrónica zs. ........................................................ 16
Figura 11.23. Matriz de transiciones ejemplo 11.8.2. ................................................................. 16
Figura 11.24. Matriz de transiciones ejemplo 11.8.3 .................................................................. 17
Figura 11.25. JK basado en flip-flop D ....................................................................................... 18
Figura 11.26. Implementación de JK en CPLD .......................................................................... 18
Figura 11.27. De cantos de subida a pulsos................................................................................. 19
Figura 11.28. Modelo de Moore, convertidor de cantos. ............................................................ 19
Figura 11.29. Asignación de estados. .......................................................................................... 20
Figura 11.30. Matriz de transiciones. .......................................................................................... 20
Figura 11.31. Diseño de Moore. .................................................................................................. 20
Figura 11.32. Diagrama de estados de Mealy. ............................................................................ 21
Figura 11.33. Matriz de transiciones de Mealy. .......................................................................... 21
Figura 11.34. Diseño de Mealy. .................................................................................................. 22
Figura 11.35. Activación de señal reset....................................................................................... 22
Figura 11.36. Transiciones modelo de Moore. ............................................................................ 23
Figura 11.37. Transiciones modelo de Mealy. ............................................................................ 23
Figura 11.38. Diseño Mealy con salida sincrónica...................................................................... 24
Figura 11.39. Transiciones Mealy con salida sincrónica. ........................................................... 24
Figura 11.40. Modelo de Moore. Salida registrada. .................................................................... 25
Figura 11.41. Formas de ondas modelo de Moore. Salida registrada. ........................................ 25
Figura P11.1. Formas de ondas Problema 11.1 ........................................................................... 26

Profesor Leopoldo Silva Bijit 19-01-2010


34 Sistemas Digitales
Figura P11.2. Matriz de transiciones Problema 11.1. .................................................................. 26
Figura P11.3. Mapa de la salida s0, Problema 11.1 ..................................................................... 27
Figura P11.4. Esquemático Problema 11.2.................................................................................. 28
Figura P11.5. Matrices de programación Problema 11.2. ........................................................... 29
Figura P11.6. Matriz de transiciones Problema 11.2. .................................................................. 29
Figura P11.7. Matriz de transiciones Problema 11.2. .................................................................. 29
Figura P11.8. Diagrama de estados Problema 11.2. .................................................................... 30
Figura E11.1. Matriz de transiciones Ejercicio 11.1. .................................................................. 31

Profesor Leopoldo Silva Bijit 19-01-2010


1

Capítulo 12

Equivalencia y Asignación de Estados.

12.1. Estados equivalentes.

Dos máquinas secuenciales son equivalentes si la relación entre la entrada y la salida son
idénticas para todas las posibles secuencias de entrada.

Un diseño en particular puede ser representado por varios diagramas de estado equivalentes. Los
costos de implementación pueden ser diferentes; en general los diagramas que tengan más estados
requieren más elementos de memoria y por lo tanto también necesitan mas redes combinacionales
para determinar el próximo estado.

Dos estados son equivalentes si no puede distinguirse entre ellos. Esto implica que si se aplica
cualquier secuencia de entrada, a partir de esos estados, se observan iguales secuencias de salida.
Puede determinarse, por inspección, que dos estados son equivalentes si tienen iguales renglones
en la matriz de transiciones. Es decir, para iguales entradas van a iguales estados próximos o
futuros, con salidas iguales.
Uno de estos estados puede removerse sin alterar la conducta de la máquina. Esto se logra
modificando la tabla de modo que no se invoque el estado eliminado sino a su equivalente.

La reducción de estados puede disminuir el número de flip-flops necesarios y a la vez puede


introducir más estado superfluos, lo cual simplifica el diseño combinacional para determinar el
próximo estado. Una lógica más simple implica, en general, menor complejidad de conexiones y
menores tiempos de propagación.

Veremos algunos algoritmos para determinar estados equivalentes cuando la matriz de


transiciones está completamente especificada.

12.2 Método de Reducción de Estados por Inspección.

Ejemplo: Se tiene la siguiente matriz de transiciones:

Estado/Entrada 0 1
A B/0 C/1
B C/0 A/1
C D/1 B/0
D C/0 A/1

Figura 12.1. Matriz de transiciones

Profesor Leopoldo Silva Bijit 19-01-2010


2 Sistemas Digitales
Se observa que los renglones asociados a B y D son iguales. Iguales estados próximos e iguales
salidas. Por lo tanto B y D son equivalentes. Si se considera a D redundante se tendrá:

Estado/Entrada 0 1
A B/0 C/1
B C/0 A/1
C B/1 B/0

Figura 12.2. Matriz de transiciones reducida.

Donde se elimina el renglón asociado al estado D y se reemplaza la ocurrencia de D por B.

El método sólo puede aplicarse a casos sencillos.

12.3. Reducción de estados en máquinas completamente especificadas.

12.3.1. Método de Reducción de Moore. Método de las Particiones.

Se aplican secuencias de entrada de diverso largo.


Se irá aplicando el método al ejemplo propuesto en el método anterior.

Se define una partición o conjunto de estados equivalentes P0, formada por todos los estados del
diagrama. Esto refleja la ignorancia del próximo estado cuando aún no se ha aplicado una entrada.
Se tiene entonces:
P0 = {A, B, C, D}

Se agrupan los estados con igual salida para iguales entradas:


Se tiene que A, B y D para entrada 0 y 1, tienen salida 0 y 1 respectivamente.
Se tiene que C para entrada 0 y 1, tiene salida 1 y 0 respectivamente. La formación de P1 tiene
que ver con las salidas.

Entonces se forma la partición P1, según:


P1 = {A, B, D}, { C }

Las partes de P1 tienen igual salida para una secuencia de largo 1. Es decir, si se aplica cualquier
secuencia de largo 1 (hay dos) los estados de las partes no pueden distinguirse. Se dice que son 1-
equivalentes.

Luego para cada parte se definen los sucesores 0 y 1, que son los estados que siguen para entrada
0 y 1 respectivamente.
En el ejemplo:
Sucesores 0 de (ABD) son (BCC)
Sucesores 1 de (ABD) son (CAA).

Si los sucesores de un grupo no pertenecen a un grupo de equivalencia previo, debe efectuarse


una partición que deje sucesores en grupos de equivalencia. En el ejemplo debe partirse {A, B,
D}, ya que el sucesor 0 de A, y los sucesores 0 de B y D, no pertenecen al mismo grupo de

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 12. Equivalencia y Asignación de Estados. 3
equivalencia en P1. Lo mismo puede observarse en los sucesores 1 de A y los sucesores 1 de B y
D.

Entonces A no puede ser 2-equivalente con B y D, se tiene:


P2 = {A}, {B, D}, { C }

Ahora: sucesores 0 de (BD) son (CC) y sucesores 1 de (BD) son (AA). En ambos casos los
sucesores pertenecen a una de las clases anteriores.
Los estados sucesores 0 y 1, pertenecen a un mismo grupo en P2, por lo tanto: P3 = P2

Como no pueden generarse nuevas particiones se tendrá que B y D son equivalentes.


La razón por la cual P2 está formado por conjuntos de estados equivalentes, es que partiendo de
cualquier estado, de un conjunto determinado y para cualquier entrada de largo 2, se llega siempre
a un mismo conjunto. Y como los estados de un mismo conjunto generan igual salida para igual
entrada, se deduce que dichos estados son equivalentes.
Ejemplo 12.1
El siguiente ejemplo, ilustra con más detalle el método de reducción.

La siguiente tabla muestra la salida z0 para una entrada x0 de una secuencia de un bit, partiendo
de cada uno de los estados. Por ejemplo, estando en C, si llega un 0, la salida es 1.

1/1

0/0
A B
x0 A B C D
0 0 0 1 0
1/1 0/0 1/0 1 1 1 0 1
1/1
z0

0/1
D C

0/0

Figura 12.3. Diagrama de estados Ejemplo 12.1

Las secuencia de salida, respecto a la de entrada, para los estados A, B y D, son iguales; no así
para el estado C. Lo cual muestra que C no puede ser equivalente con A, B o D. Esto justifica la
formación de la partición P1. Entonces C no es 1-equivalente con A, B o D.

La siguiente tabla muestra la secuencia de salida (z0z1) para una entrada de una secuencia de dos
bits (x0x1), partiendo de cada uno de los estados. Por ejemplo, estando inicialmente en A, si llega
la secuencia de entrada 10, en la salida se tiene la secuencia 11, y se recorren los estados C y D.

Profesor Leopoldo Silva Bijit 19-01-2010


4 Sistemas Digitales

x0x1 A B C D
00 00 01 10 01
01 01 00 11 00
10 11 10 00 10
11 10 11 01 11
z0z1

Figura 12.4. Secuencia de salida para entrada de largo dos.

Se advierte que no es necesario plantear la columna a partir del estado C, ya que como ilustraba
la tabla anterior el primer bit será diferente. Se observa que las columnas asociadas a los estados
B y D son idénticas y diferentes de las secuencias de la columna A. Por lo tanto A, no puede ser
equivalente a los estados B y D. Esto implica la partición P2. El estado A no es 2-equivalente con
B o D.

La siguiente tabla muestra la secuencia de salida (z0z1z2) para una entrada de una secuencia de
tres bits (x0x1x2), partiendo de los estados B y D solamente. Por ejemplo, estando inicialmente en
B, si llega la secuencia de entrada 110, en la salida se tiene la secuencia 111, y se recorren la
secuencia de estados ACD. Esto implica la partición P3.

x0x1x2 B D
000 010 010
010 000 000
100 100 100
110 111 111
001 011 011
011 001 001
101 101 101
111 110 110
z0z1z2

Figura 12.5. Secuencia de salida para entrada de largo tres.

Puede decirse que los estados B y D son 3-equivalentes, ya que no puede distinguirse entre ellos
para secuencias de largo tres de entrada, debido a que tienen iguales secuencias de salida. El
procedimiento de Moore permite encontrar los estados n-equivalentes, y cuando no pueden
formarse nuevas particiones determina los estados equivalentes.
Algoritmo de las particiones de Moore.
1. Colocar todos los estados en un conjunto.
2. La partición inicial (P1) está basada en la conducta de la salida.
3. Las particiones sucesivas están basadas en las transiciones al próximo estado.
4. Se repite paso (3) hasta que no se produzcan nuevas particiones.
Los estados que queden en un mismo conjunto son equivalentes.
Puede demostrarse que el algoritmo es de costo polinomial.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 12. Equivalencia y Asignación de Estados. 5
Ejemplo 12.2.
Se tiene la siguiente matriz de transiciones:

Estado/Entrada 0 1
A C/1 B/0
B C/1 E/0
C B/1 E/0
D D/0 B/1
E E/0 A/1

Figura 12.6. Matriz de transiciones ejemplo 12.2.

Por inspección, puede verse que B y C son equivalentes.

Por particiones:
Se tienen P0 = {A , B, C, D, E} y P1 = {A, B, C }, {D, E }
Ya que A, B y C tienen salidas 1 y 0 para entrada 0 y 1 respectivamente. Y D y E tienen salidas 0
y 1 para entradas 0 y 1 respectivamente.

Sucesores 0 de (ABC) son (CCB)


Sucesores 1 de (ABC) son (BEE), implica partición.
Sucesores 0 de (DE) son (DE)
Sucesores 1 de (DE) son (BA).
Entonces: P2 = {A } , {B, C } , {D, E }

Sucesores 0 de (BC) son (CB)


Sucesores 1 de (BC) son (EE)
Sucesores 0 de (DE) son (DE)
Sucesores 1 de (DE) son (BA). Implica partición.
Entonces: P3 = { A }, {B, C} , {D}, {E}

Sucesores 0 de (BC) son (CB)


Sucesores 1 de (BC) son (EE).
Entonces: P4 = P3, y se tiene que B y C son equivalentes.

El método puede optimizarse, observando que algunos estados son equivalentes, luego de algunas
iteraciones. De este modo, no se requiere seguir obteniendo los sucesores de dichos estados.

Profesor Leopoldo Silva Bijit 19-01-2010


6 Sistemas Digitales

Ejemplo 12.3.
Estado/Entrada 0 1
A E/0 D/1
B F/0 D/0
C E/0 B/1 implica partir en:
D F/0 B/0 {BD} y {F}
E C/0 F/1
F B/0 C/0

Figura 12.7. Matriz de transiciones ejemplo 12.3.

Se procede a determinar la secuencia de particiones:


P1 = {ACE} {BDF}
S0(ACE) =(EEC) S1(ACE) =(DBF) S0(BDF)= (FFB) S1(BDF)= (DBC)
P2 = {ACE} {BD} {F}
S0(ACE) =(EEC) S1(ACE) =(DBF) S0(BD )= (FF ) S1(BD )= (DB)
P3 = {AC} {E} {BD} {F}
S0(AC) =(EE ) S1(AC ) =(DB ) S0(BD )= (FF ) S1(BD )= (DB)
P4 = P3
Entonces A y C son equivalentes. B y D son equivalentes.

El método por inspección no permite ver estas equivalencias con sencillez.


Nótese que:
Ha medida que se reducen los conjuntos de equivalencia, también lo hacen los sucesores.
Cuando un estado queda aislado, no se requieren plantear sus sucesores.
Cuando los sucesores 0 y 1 son iguales a un mismo estado, el grupo completo es equivalente.
Ejemplo 12.4.
Reducir el siguiente diagrama de estados de una máquina, que analiza una secuencia de 4 bits de
la entrada, y que genera salida uno si el código no es BCD. La salida debe ser cero en el resto de
los casos. Ver Verificador BCD en 9.6.1.

Estado/Entrada 0 1
a b/0 c/0
b d/0 e/0
c f/0 g/0
d h/0 i/0
e j/0 k/0
f l/0 m/0
g n/0 o/0
h a/0 a/0
i a/0 a/0
j a/0 a/0
k a/0 a/0
l a/0 a/0

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 12. Equivalencia y Asignación de Estados. 7
m a/1 a/1
n a/1 a/1
o a/1 a/1

Figura 12.8. Matriz de transiciones ejemplo 12.4.

La partición P1 resulta de observar las diferentes secuencias de salida:


P1 ={a,b,c,d,e,f,g,h,i,j,k,l} {m,n,o}
S0(abcdefghijkl)=(bdfhjlnaaaaa) S1(abcdefghijkl)=(cegikmoaaaaa)

De S0(abcdefghijkl) f no puede estar en la primera partición; y de S1 f y g no pueden estar en el


mismo grupo.
S0(mno)=(aaa) S1(mno)=(aaa) Ya en este paso m, n y o son equivalentes.

Entonces se logra P2:


P2 ={a,b,c,d,e,h,i,j,k,l} {f} {g} {m,n,o}
S0(abcdehijkl)=(bdfhjaaaaa) S1(abcdehijkl)=(cegikaaaaa)

S0(mno)=(aaa) S1(mno)=(aaa) Estos sucesores no requieren considerarse nuevamente.


Debe separarse c.

P3 ={a,b,d,e,h,i,j,k,l}{c} {f} {g} {m,n,o}


S0(abdehijkl)=(bdhjaaaaa) S1(abdehijkl)=(ceikaaaaa)
Debe separarse a.

P4 ={a}{b,d,e,h,i,j,k,l}{c} {f} {g} {m,n,o}


S0(bdehijkl)=(dhjaaaaa) S1(bdehijkl)=(eikaaaaa)
Debe separarse al grupo: h, i, j, k, l

P5 ={a}{b,d,e}{h,i,j,k,l}{c} {f} {g} {m,n,o}


S0(bde)=(dhj) S1(bde)=(eik)
S0(hijkl)=(aaaaa) S1(hijkl)=(aaaaa) En este paso se determina que h,i,j,k y l son equivalentes.
Debe separarse b:

P6 ={a}{b}{d,e}{h,i,j,k,l}{c} {f} {g} {m,n,o}


S0(de)=(hj) S1(de)=(ik)
S0(hijkl)=(aaaaa) S1(hijkl)=(aaaaa)
No hay nuevas particiones que puedan generarse.
P6 = P7

Entonces el estado e es redundante. i,j,k,l se reemplazan por h; también n y o por m.

Queda el siguiente diagrama reducido:

Profesor Leopoldo Silva Bijit 19-01-2010


8 Sistemas Digitales

Estado/Entrada 0 1
a b/0 c/0
b d/0 d/0
c f/0 g/0
d h/0 h/0 a
f h/0 m/0 1/0
0/
g m/0 m/0 0
h a/0 a/0 b c 1/0
m a/1 a/1 0/0
/0
d f g
1/0
c
/0
/0
/0 /0
0/0
h m
h
/0 /1

Figura 12.9. Matriz de transiciones reducida y diagrama de estados Ejemplo 12.4.

12.3.2. Método del diagrama de implicación.

Lo veremos a través de un ejemplo.

Determinar estados equivalentes para la siguiente máquina secuencial completamente


especificada.
Entradas x1 x0 Salida
Estado presente 00 01 10 11 z
S0 S0 S1 S2 S3 1
S1 S0 S3 S1 S4 0
S2 S1 S3 S2 S4 1
S3 S1 S0 S4 S5 0
S4 S0 S1 S2 S5 1
S5 S1 S4 S0 S5 0
Próximo estado

Figura 12.9a. Matriz de transiciones.

Se confecciona un diagrama triangular que tenga tantas celdas como posibles pares de estados.
Luego se marcan con diagonales cruzadas las casillas de estados que no puedan ser equivalentes
debido a que tienen salidas diferentes. Observando la tabla anterior, sólo podrían ser equivalentes
los pares: (S0, S2), (S0, S4), (S2, S4) por tener salida 1; y los pares (S1, S3), (S1, S5), (S3, S5)
por tener salida 0.

A las casillas que pueden representar estados equivalentes, por tener iguales salidas, se les
colocan los pares de estados que deben ser equivalentes; por ejemplo: S0 y S2 son equivalentes si

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 12. Equivalencia y Asignación de Estados. 9
los siguientes pares son equivalentes: (S0, S1), (S1, S3), (S2, S2) (S3, S4). Esto puede verificarse
observando el primer y tercer renglón, para las diferentes combinaciones de las entradas. Nótese
que se podrían no escribir los pares formados por un solo estado.

Luego en las celdas que tienen pares marcados, se descartan aquellas cuyos pares ya estén
marcados como no equivalentes. Por ejemplo, la celda de la primera columna y segundo renglón
se descarta por tener como condición el par (S0, S1), que ya se conoce que no pueden ser
equivalentes.

Observando las casillas no marcadas se concluye que los pares (S3, S5) y (S0, S4) deben ser
estados equivalentes.

S1

S0,S1
S1,S3
S2 S2,S2
S3,S4
S0,S1
S3,S0
S3 S1,S4
S4,S5
S0,S0 S1,S0
S1,S1 S3,S1
S4
S2,S2 S2,S2
S3,S5 S4,S5
S0,S1 S1,S1
S3,S4 S0,S4
S5 S1,S0 S4,S0
S4,S5 S5,S5

S0 S1 S2 S3 S4

Figura 12.9b. Tabla de implicaciones.

La matriz reducida, eliminando los estados equivalentes, resulta:

Profesor Leopoldo Silva Bijit 19-01-2010


10 Sistemas Digitales

Entradas x1 x0 Salida
Estado presente 00 01 10 11 z
S0 S0 S1 S2 S3 1
S1 S0 S3 S1 S0 0
S2 S1 S3 S2 S0 1
S3 S1 S0 S0 S3 0
Próximo estado

Figura 12.9c. Matriz reducida.

12.3.3. Minimización de estados en máquinas incompletamente especificadas.

Cuando la máquina está completamente especificada la equivalencia de estados es una relación


transitiva: Si a es equivalente con b, y b es equivalente con c, entonces a y c son también
equivalentes. Esto refleja que la equivalencia de estados es una relación de equivalencia que
particiona los estados en clases de equivalencia disjuntas.

Pero esto no se cumple si la matriz de transiciones contiene condiciones superfluas.

Estado Salidas
E0 -0
E1 1-
E2 -1

Figura 12.9d. Salidas con condiciones superfluas.

En la tabla anterior el estado E1 es compatible con E0 y E2, pero E0 no es compatible con E2.

En este caso no se dispone de algoritmos, de complejidad polinomial, que determinen las mejores
agrupaciones de estados en conjuntos equivalentes, los cuales permiten reducir el número de
estados. Existen numerosos programas CAD que realizan la minimización en este tipo de
máquinas.

12.4. Asignación de Estados.

12.4.1. Análisis del problema de asignación.

Dado el nombre lógico de un estado se desea formar un nombre físico en binario, dado por los
estados de los flip-flops.

Si se tienen e estados, el número mínimo m de flip-flops necesarios para codificarlos, debe


cumplir:
2m 1
e 2m

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 12. Equivalencia y Asignación de Estados. 11
De acuerdo al principio de multiplicación, si una tarea A puede efectuarse de m formas diferentes,
y después de terminada en cualesquiera de estos modos, la tarea B puede ser realizada de n
diferentes modos; entonces la secuencia de tareas A, B puede ser efectuada de m por n modos.

Si de n elementos tomamos k de ellos (sin repetición, sólo puede tomarse una vez a cada
elemento), el primero puede ser elegido de n formas, el siguiente de (n-1) formas; y el k-ésimo de
(n-k+1) formas.

Éste es el número de permutaciones de n elementos tomando k a un tiempo, lo que puede


anotarse:
n(n-1)(n-2)....(n-k+1) = n!/(n-k)!

Entonces el número de asignaciones de estado de e estados con m flip-flops, resulta ser:

2m !
ae
2m e !

Si se tienen 4 estados lógicos A, B, C y D, se requieren dos flip-flops. Con dos flip-flops pueden
establecerse 4 estados binarios: 00, 01, 10, 11. El nombre binario de A, puede ser escogido de 4
formas, el de B de tres formas, el de C de dos formas y el último de una sola forma. Esto produce
24 formas de asignar estados, empleando dos flip-flops.

No todas estas asignaciones implican ecuaciones lógicas diferentes.

a) consideremos dos asignaciones binarias que tengan una variable complementada:

asignación 1: 01001001
asignación 2: 01011001

Cualquier función de próximo estado, puede expresarse usando la asignación 1 según:

f(a,b,c,d,e,f,g,h)

entonces la misma función, empleando la asignación 2 se puede expresar según:

f(a,b,c,d',e,f,g,h)

Es decir, las funciones tendrán estructura similar, salvo la complementación de una variable. Y
como en los flip-flops y PLDs se dispone de las variables y sus complementos, las dos
asignaciones en discusión llevarán a implementaciones de igual costo.

Con dos variables a y b, se tienen las siguientes formas: ab, a'b, ab' a'b'. En general m variables
pueden ser complementarse de 2m formas. Entonces, aplicando el principio inverso de la
multiplicación de las tareas, el número de asignaciones se reduce en el factor 2m.
b) consideremos un intercambio de columnas, para una determinada asignación:

Profesor Leopoldo Silva Bijit 19-01-2010


12 Sistemas Digitales

estado 1 ... ... ...


estado 2 ... ... ...
estado 3 ... ... ...
...
...
...
estado e ... ... ...

Figura 12.10. Intercambio de columnas en asignaciones.

Una determinada función de próximo estado puede escribirse:

f (..., yi ,..., y j ,...)


Si se escoge la asignación con el intercambio de columnas, la misma función podrá representarse
por:
f (..., y j ,..., yi ,...)

Nuevamente estas asignaciones llevan a implementaciones de iguales costos.


Si se tiene m columnas, la primera puede escogerse de m formas, la segunda de (m-1) formas, y
así sucesivamente. Es decir existen m! asignaciones que llevan a iguales implementaciones.
Entonces el número de asignaciones de estados que llevan a posibles implementaciones diferentes
son:
2m !
aeu
2m e ! 2m m !
Si bien aeu es mucho menor que ae, el crecimiento es importante a medida que aumenta e.

La siguiente tabla ilustra lo anterior:

e m ae aeu
2 1 1 1
3 2 24 3
4 2 24 3
5 3 6.720 140
6 3 20.160 420
7 3 40.320 840

Figura 12.11. Número de asignaciones de estados.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 12. Equivalencia y Asignación de Estados. 13
Puede comprobarse que un conjunto de nombres únicos que pueden llevar a implementaciones
diferentes son, para e = 4:

Nombre lógico asig. 1 asig. 2 asig. 3


A 00 00 00
B 01 11 10
C 11 01 01
D 10 10 11

Figura 12.12. Asignaciones de estado únicas para cuatro estados.

A continuación se ilustran las 24 asignaciones posibles que se pueden efectuar con dos flip-flops.

L 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
A 00 00 10 01 11 10 01 11 00 00 10 01 11 10 01 11 00 00 10 01 11 10 01 11
B 01 10 11 00 10 00 11 01 11 11 01 10 00 01 10 00 10 01 00 11 01 11 00 10
C 11 11 01 10 00 01 10 00 01 10 11 00 10 00 11 01 01 10 11 00 10 00 11 01
D 10 01 00 11 01 11 00 10 10 01 00 11 01 11 00 10 11 11 01 10 00 01 10 00

Figura 12.13. Asignaciones de estado posibles para cuatro estados.

La 2 se genera por intercambio de columnas de la 1.


La 3 complementado la primera columna de la 1.
La 4 complementando la segunda columna de la uno.
La 5 complementado las dos columnas de la uno.
La 6, 7 y 8, complementando la primera, la segunda y ambas variables de la 2.

La 9 es la segunda asignación única.


La 10 se genera por intercambio de columnas de la 9.
La 11, 12 y 13, complementando la primera, la segunda y ambas variables de la 9.
La 14, 15 y 16, complementando la primera, la segunda y ambas variables de la 10.

La 17 es la tercera asignación única.


La 18 se genera por intercambio de columnas de la 17.
La 19, 20 y 21, complementando la primera, la segunda y ambas variables de la 17.
La 22, 23 y 24, complementando la primera, la segunda y ambas variables de la 18.

Debe notarse que cualquiera de las 8 primeras columnas puede ser elegida como asignación única
1. También cualquiera entre las columnas 9 a 16, puede ser la asignación única 2. La elección de
la asignación única 3 puede ser cualquier columna entre la 17 y 24. Se han elegido tres que
establezcan el estado A con nombre 00.

La siguiente tabla genera las 24 permutaciones posibles que se pueden efectuar con dos flip-flops
para colocar nombre binario a 4 estados. Se han mantenido los nombres de las columnas de la
Figura 12.13.

Profesor Leopoldo Silva Bijit 19-01-2010


14 Sistemas Digitales
L 18 1 17 2 9 10 4 23 12 15 7 20 6 19 14 11 22 3 16 13 8 21 5 24
A 00 00 00 00 00 00 01 01 01 01 01 01 10 10 10 10 10 10 11 11 11 11 11 11
B 01 01 10 10 11 11 00 00 10 10 11 11 00 00 01 01 11 11 00 00 01 01 10 10
C 10 11 01 11 01 10 10 11 00 11 10 00 01 11 00 11 00 01 01 10 00 10 00 01
D 11 10 11 01 10 01 11 10 11 00 00 10 11 01 11 00 01 00 10 01 10 00 01 00

Figura 12.13a. Asignaciones de estado generadas por permutaciones.

No es posible, debido al rápido crecimiento de aeu, intentar buscar la solución óptima para la
asignación de estados. Esto debido a que se requerirían realizar aeu diseños y seleccionar el de
costo menor. En lugar de esto se desarrollan métodos que guíen a encontrar una asignación de
estados razonablemente buena.

Ejemplo 12.5.

Asignaciones diferentes conducen a implementaciones diferentes. Por ejemplo considere la


siguiente matriz de transiciones:

Estado/Entrada 0 1
A B/0 E/0
B C/0 G/0
C D/0 F/0
D A/1 A/0
E G/0 C/0
F A/0 A/1
G F/0 D/0

Figura 12.14. Matriz de transiciones ejemplo 12.5.

Se estudian las siguientes dos asignaciones de las 40.320 posibles:

Estado Lógico Estado Físico 1 Estado Físico 2


y1y2y3 y1y2y3
A 000 000
B 001 001
C 011 010
D 010 011
E 101 100
F 110 101
G 111 110

Figura 12.15. Comparación entre dos asignaciones.

Para la asignación 1, por un diseño convencional y usando JK, se logran:


J1 = xy2' + xy3; K1 = x + y3' ; J2 = y3 ; K2 = y3' ; J3 = y2' ; K3 = y2
z = y3'y2y1'x' + y3'y1'x

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 12. Equivalencia y Asignación de Estados. 15
Considerando un inversor para formar x'. Pueden contarse 18 entradas a compuertas. Y 8 chips
convencionales SSI.

Para la asignación 2, se obtienen:


J1 = xy3' + xy2' ; K1 = x + y3 ; J2 = y1y3' + y1'y3 ; K2 = x'y1 + xy1' +y3
J3 = x'y1' + y2; K3 = 1; z = xy1y3 + x'y2y3
Se tienen 34 entradas y se requieren 16 chips SSI.

El ejemplo ilustra que no todas las asignaciones conducen a redes combinacionales de bajo costo.
La asignación 2 resulta bastante más costosa que la asignación 1.

12.4.2. Estrategias de asignación.

Si la codificación conduce a un mínimo número de flip-flops las funciones combinacionales de


próximo estado resultan complejas. Esta asignación resulta adecuada cuando la implementación
se realiza mediante CPLD.

La codificación one-hot emplea un flip-flop por estado, de este modo el diseño de las funciones
combinacionales de próximo estado resultan más sencillas. Esta forma de codificación presenta
ventajas cuando se implementa en FPGA, dispositivos que tienen bastantes flip-flops y
generadores de funciones de ancho limitado. Por ejemplo para tres estados, los códigos binarios
serían: 001, 010, 100.

En la codificación de contadores, pueden asociarse los estados a las salidas del dispositivo,
haciendo innecesarias las redes combinacionales de salida.

Debido a que no existen algoritmos polinomiales para enfrentar este problema se han desarrollado
algunas heurísticas.

12.5 Reglas para la asignación de Estados.

La forma tradicional de enfrentar el problema de la codificación binaria de estados es la


aplicación de reglas para efectuar la asignación. Estas reglas o heurísticas son las siguientes:

Regla de Alta prioridad:

Estados que tienen iguales estados próximos, para una entrada dada, se los debe asignar como
lógicamente adyacentes.

Profesor Leopoldo Silva Bijit 19-01-2010


16 Sistemas Digitales

Estado/Entradas xi xj Si Sj
Si S
....
Sj S xi xi

Est. Próximo S

Figura 12.16. Regla de Alta prioridad.

Fundamentación de la regla: Las funciones de Estado Próximo pueden simplificarse al disminuir


la distancia entre Si y Sj. De este modo aumentan las adyacencias de los mintérminos de los unos
de S.

Regla de Prioridad Media:

Estados próximos de un estado presente, bajo entradas lógicamente adyacentes (a distancia


unitaria), se los debe asignar como lógicamente adyacentes.

Estado/Entradas xi xj S
S Si Sj
....
xi xj
Est. Próximo
Si Sj

Figura 12.17. Regla de prioridad media.

Fundamentación de la regla: Las funciones de Estado Próximo pueden simplificarse al disminuir


la distancia entre Si y Sj. De este modo aumentan las adyacencias de los mintérminos de los unos
de Si y Sj.

Regla de Baja Prioridad:

Estados con la misma salida para una entrada dada, se los debe asignar como lógicamente
adyacentes.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 12. Equivalencia y Asignación de Estados. 17

Estado/Entradas xi xj
Si S1/z
....
Sj S2/z
Est. Próximo/Salidas

Si Sj

xi/z xi/z

S1 S2

Figura 12.18. Regla de prioridad baja.

Fundamentación de la regla: Las funciones de Salida pueden simplificarse al disminuir la


distancia entre Si y Sj. De este modo aumentan las adyacencias de los mintérminos de los unos de
la salida.

Análisis de las reglas.

En la siguiente matriz de transiciones, según la primera regla, debemos asignar los estados S1 y
S2 como adyacentes. Esto debido a que tienen estados próximos iguales para la misma entrada. Si
asignamos S1= 010 y S2= 011, tendremos, asumiendo que el próximo estado tiene nombre binario
101:

Q2Q1Q0 x1x0=01

S1=010 101/0
S2=011 101/0

Q2+,Q1+,Q0+/z

Figura 12.18a. Regla de prioridad alta.

Con lo cual se logra, agrupando solamente los unos que se indican en el diagrama, para las
funciones de próximo estado:

Q2+= x1’x0(Q2’Q1Q0’+Q2’Q1Q0) = x1’x0(Q2’Q1)


Q0+= x1’x0(Q2’Q1Q0’+Q2’Q1Q0) = x1’x0(Q2’Q1)

Profesor Leopoldo Silva Bijit 19-01-2010


18 Sistemas Digitales
Observamos que siempre se cancelará una de las variables de estado en las expresiones para los
estados próximos. Q0 en el caso del ejemplo.

En la siguiente matriz de transiciones, según la segunda regla, debemos asignar los estados S1 y
S2 como adyacentes. Esto debido a que son estados próximos de un mismo estado S, para
entradas adyacentes. Si asignamos S1= 101 y S2= 100, tendremos, asumiendo que S tiene código
binario 010:

Q2Q1Q0 x1x0=01 x1x0=11

S=010 S1=101/0 S2=100/1

Q2+,Q1+,Q0+/z

Figura 12.18b. Regla de prioridad media.

Con lo cual se logra, agrupando solamente los unos que se indican en el diagrama, para las
funciones de próximo estado:

Q2+= Q2’Q1Q0’(x1’x0+x1x0) = Q2’Q1Q0’(x0)


Q0+= Q2’Q1Q0’(x1’x0)

Observamos que en todos los casos, menos uno, se cancelará una variable de entrada en las
expresiones para los estados próximos. En el caso del ejemplo, la expresión para Q0+ contendrá
las dos variables de entrada; la expresión de Q2+ no contendrá a la variable x1.

De los dos casos particulares anteriores, puede concluirse que la regla de alta prioridad producirá
mayor minimización que la regla de prioridad media. Razón por la cual se les da estos nombres.

Ejemplo 12.6.

Asignar estados para la siguiente matriz de transiciones:

Estado/Entrada 0 1
A C/0 D/0
B C/0 A/0
C B/0 D/0
D A/1 B/1

Figura 12.19. Matriz de transiciones ejemplo 12.6.

Regla de alta prioridad:


a) A y B deben ser adyacentes. Van a C con entrada igual a 0.
b) A y C deben ser adyacentes. Van a D con entrada igual a 1.
Regla de prioridad media.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 12. Equivalencia y Asignación de Estados. 19
c) C y D deben ser adyacentes. Estados próximos de A, con x = 0 y x = 1.
d) C y A deben ser adyacentes. Estados próximos de B, con x = 0 y x = 1.
e) B y D deben ser adyacentes. Estados próximos de C, con x = 0 y x = 1.
f) A y B deben ser adyacentes. Estados próximos de D, con x = 0 y x = 1.
Regla de Prioridad Baja.
g) A, B y C deben ser adyacentes. Salida igual a 0 para x = 0.
h) A, B y C deben ser adyacentes. Salida igual a 0 para x = 1

Si se ubican en un mapa los nombres de los estados que deben ser adyacentes, cumpliendo la
primera regla, se tiene:
Q0
Q1 0 1
0 1
0 A
0 B
0

2 3
1 C
0 D
0

Figura 12.20. Asignación de estados ejemplo 12.6.

Del segundo grupo, con la primera regla de asignación, se cumplen: d) y f).


Si se elige la casilla vacante para D, se cumplen: c) y e).

Las reglas g) y h) no pueden satisfacerse. Ya que A es adyacente con B, y A es adyacente con C,


pero es imposible cumplir B adyacente con C.

Reemplazando los estados lógicos por los nombres físicos, se obtiene:

Estado/Entrada 0 1
A = 00 10/0 11/0
B = 01 10/0 00/0
C = 10 01/0 11/0
D = 11 00/1 01/1

Figura 12.21. Matriz de transiciones con asignación de estados.

Ordenando, según código Gray:

Profesor Leopoldo Silva Bijit 19-01-2010


20 Sistemas Digitales

Estado Actual x
Q1Q0 0 1
00 10/0 11/0
01 10/0 00/0
11 00/1 01/1
10 01/0 11/0
Q1+Q0+/z

Figura 12.22. Matriz de transiciones con ordenamiento Gray.

Minimizando, y empleando flip-flops Ds:


D1 = Q1+ = x'Q1' + xQ0'
D0 = Q0+ = Q1Q0' + xQ0' + xQ1
z = Q1Q0

Resultan 15 entradas (en dos niveles). Debido a que existe el producto xQ0' que es común a
ambos flip-flops.

Para este caso, puede buscarse la asignación óptima, efectuando los diseños con todas las
asignaciones únicas de estado. Se tienen:

Nombre lógico asig. 1 asig. 2 asig. 3


A 00 00 00
B 01 11 10
C 10 10 11
D 11 01 01

Figura 12.23. Asignaciones óptimas para ejemplo 12.6.

La asignación 1 es la que resulta de aplicar las reglas, y que se vio antes.

Se efectuará el diseño para la asignación 2.

Estado/Entrada 0 1
A = 00 10/0 01/0
B = 11 10/0 00/0
C = 10 11/0 01/0
D = 01 00/1 11/1

Figura 12.24. Matriz de transiciones con asignación 2.

Que ordenando según código Gray, puede escribirse:

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 12. Equivalencia y Asignación de Estados. 21

Estado/Entrada 0 1
00 10/0 01/0
01 00/1 11/1
11 10/0 00/0
10 11/0 01/0

Figura 12.25. Matriz de transiciones con asignación 2, ordenada en Gray.

Resulta el siguiente diseño, empleando flip-flops Ds:


D1 = Q1+ = x'Q1 + x'Q0' + xQ1'Q0
D0 = Q0+ = Q1Q0' + xQ1'
z = Q1'Q0
Resultan 18 entradas (en dos niveles).

Para la tercera asignación única, se tiene:

Estado/Entrada 0 1
A = 00 11/0 01/0
B = 10 11/0 00/0
C = 11 10/0 01/0
D = 01 00/1 10/1

Figura 12.26. Matriz de transiciones con asignación 3.

Resulta el siguiente diseño, empleando flip-flops Ds:


D1 = Q1+ = x'Q0' + x'Q1 + xQ1'Q0
D0 = Q0+ = x'Q0' + Q1'Q0' + xQ1Q0
z = Q1'Q0
Con 20 entradas, considerando el producto común x'Q0'.

Se comprueba entonces que, en este caso, las reglas para la asignación de estados llevan a una
asignación razonablemente buena. En la situación planteada es la óptima.

A medida que el número de estados aumenta, la asignación de estados requiere el uso de


herramientas de apoyo. Existen programas que facilitan la tarea de asignar estados.

Asignación one-hot.

Para la matriz de transiciones de la Figura 12.19, puede efectuarse la asignación de tipo one-hot,
en la cual cada estado tiene un nombre binario con un solo 1. Esto se muestra en la Figura 12.26a.
Si A es el estado inicial, la operación de reset, es ahora levemente más compleja.
Las variables de estado son las salidas de los flip-flops: Q3, Q2, Q1, Q0.

Profesor Leopoldo Silva Bijit 19-01-2010


22 Sistemas Digitales

x
Q3Q2Q1Q0 0 1
A=0001 0100/0 1000/0
B=0010 0100/0 0001/0
C=0100 0010/0 1000/0
D=1000 0001/1 0010/1
Q3+Q2+Q1+Q0+/z

Figura 12.26a. Asignación one-hot para ejemplo 12.6.

Deben considerarse superfluas todas las combinaciones que tengan más de un uno en su nombre
binario. En la Figura 12.26b, puede observarse los mapas de Karnaugh de 5 variables, para las
variables de próximo estado Q3+ y Q2+.
Q3Q2
Q3Q2
00 01 11 10 Q1Q0 00 01 11 10
Q1Q0 8
8 4
00 d 1
4
d 00 d d
1 1
01 1 d d d 01 1 d d d

11 d d d d 11 d d d d
2 2
10 d d d 10 1 d d d

Q3+ x=1 Q2+ x=0

Figura 12.26a. Asignación one-hot para ejemplo 12.6.

Minimizando empleando las condiciones superfluas, pero cubriendo sólo los mintérminos
presentes, se obtienen:

Q3+= Q3’Q1’x La cobertura Q3+=Q2x + Q0x es de mayor costo.


Q2+=Q3’Q2’x’ La cobertura Q2+=Q1x’+Q0x’ es de mayor costo.

Procediendo en forma similar para el resto de las funciones, se obtienen:


Q1+=Q2x’+Q3x
Q0+=Q3x’+Q1x
z= Q3

Deben evaluarse los diseños alternativos, basados en producto de sumas. Si se agrupan los ceros
de Q3+ se obtiene: (Q3+)’=Q2’Q0’x’ que equivale a: Q3+=Q2+Q0+x. Existiendo soluciones
similares para el resto de las variables.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 12. Equivalencia y Asignación de Estados. 23
Con un poco de práctica, pueden escribirse directamente los resultados a partir de la tabla de
transiciones de la Figura 12.26a.

Ejemplo 12.7.

Asignar estados para un reconocedor de secuencias de largo de tres bits, que tenga salida 1
cuando se tienen en la entrada las secuencias: 010 y 110; y salida cero en el resto de los casos. La
señal externa reset debe llevar la máquina al estado inicial.

Una vez eliminados los estados equivalentes, se obtiene la siguiente matriz de transiciones, con
E0 como el estado inicial:

Estado/Entrada 0 1
E0 E1/0 E1/0
E1 E2/0 E3/0
E2 E0/0 E0/0
E3 E0/1 E0/0

Figura 12.27. Matriz de transiciones ejemplo 12.7.

Estados que tienen iguales estados próximos, para una entrada dada, se los debe asignar como
lógicamente adyacentes. En este caso E2 y E3 debe ser adyacentes, tanto para entrada 0, como
para entrada 1, desde los estados 2 y 3 se va al estado 0.

Estados próximos de un estado presente, bajo entradas lógicamente adyacentes, se los debe
asignar como lógicamente adyacentes. Nuevamente implica asignar E2 y E3 como adyacentes,
ya que estando en E1 va estado 2 con entradas 0 y a E3 con entrada 1.

La regla que intenta minimizar la función de salida implica que E0, E1 y E2 deben ser adyacentes
ya que hay salida 0 para entrada cero. Además E0, E1, E2, E3 debe ser adyacentes ya que se tiene
salida cero para entrada 1.

Para obtener una función simple de reset se escoge el estado inicial E0 como 00.

La figura 12.28 ilustra tres asignaciones posibles.

La asignación 1 deja E0 como estado inicial, cumple E2 a distancia uno de E3, cumpliendo así las
dos primeras reglas en forma completa.

De la tercera regla cumple: E0 con E2, E0 con E1, E1 con E3. No pueden cumplirse: E1 con E2
del grupo con salida y entrada 0; tampoco pueden cumplirse: E0 con E3, y E1 con E2 del grupo
con entrada 1 y salida cero.

Profesor Leopoldo Silva Bijit 19-01-2010


24 Sistemas Digitales

Q0 Q0 Q0
Q1 0 1 Q1 0 1 Q1 0 1
0 1 0 1 0 1
0 E0
0 E2
0 0 E0
0 E3
0 0 E0
0 E1
0

2 3 2 3 2 3
1 E1
0 E3
0 1 E1
0 E2
0 1 E2
0 E3
0

Asignación 1 Asignación 2 Asignación 3


Figura 12.28. Asignaciones ejemplo 12.7.

La asignación 2 deja E0 como estado inicial, cumple E2 a distancia uno de E3, cumpliendo así las
dos primeras reglas en forma completa.
De la tercera regla cumple: E0 con E3, E0 con E1, E1 con E2. No pueden cumplirse: E1 con E3
del grupo con salida y entrada 0; tampoco pueden cumplirse: E0 con E2, y E1 con E3 del grupo
con entrada 1 y salida cero.

La asignación 3 deja E0 como estado inicial, cumple E2 a distancia uno de E3, cumpliendo así las
dos primeras reglas en forma completa.
De la tercera regla cumple: E0 con E1, E0 con E2, E1 con E3. No pueden cumplirse: E1 con E2
del grupo con salida y entrada 0; tampoco pueden cumplirse: E0 con E3, y E1 con E2 del grupo
con entrada 1 y salida cero. Además esta asignación resulta ser equivalente en costo a la
asignación 1, ya que deviene de ésta por intercambio de columnas.

Lo mismo ocurre con la asignación 4 que se obtiene de la asignación 2 por intercambio de


columnas.
Q0
Q1 0 1
0 1
0 E0
0 E1
0

2 3
1 E3
0 E2
0

Asignación 4

Figura 12.29. Asignación 2 con intercambio de columna.

En resumen cualquiera de las asignaciones 1 a 4 puede ser una elección razonable, ya que
cumplen con las dos primeras reglas: tener E2 adyacente con E3, y el máximo posible de
cumplimiento de la tercera regla.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 12. Equivalencia y Asignación de Estados. 25
Ejemplo 12.8.

Reconocedor de secuencias de largo 4. Salida uno cuando llegan: 0110 y 1010; salida cero en el
resto de los casos. El comando externo reset, debe llevar al estado inicial.
El diagrama reducido de estados es el siguiente:

Estado/Entrada 0 1
E0 E1/0 E2/0
E1 E3/0 E4/0
E2 E4/0 E3/0
E3 E5/0 E5/0
E4 E5/0 E6/0
E5 E0/0 E0/0
E6 E0/1 E0/0

Figura 12.30 Matriz de transiciones reducida ejemplo 12.8

Primera regla: E3 adyacente con E4; E5 con E6


Segunda regla: E1 adyacente con E2; E3 con E4; E5 con E6.
Tercera regla: Para entrada 0, estados E0, E1, E2, E3, E4, E5 adyacentes entre sí. E0, E1, E2, E3,
E4, E5, E6 adyacentes entre sí para entrada 1.

Q2Q1
Q0 00 01 11 10
0 E0 E3 E6

1 E1 E4 E5 E2

Figura 12.31. Asignación de estados, aplicando reglas.

Primero asignamos E3 adyacente con E4, y E5 con E6, ya que figuran en la primera y segunda
regla. Después E1 con E2.

Con la asignación anterior se obtiene:

Profesor Leopoldo Silva Bijit 19-01-2010


26 Sistemas Digitales

Q2Q1Q0 x=0 x=1


000 001/0 101/0
001 010/0 011/0
101 011/0 010/0
010 111/0 111/0
011 111/0 110/0
111 000/0 000/0
110 000/1 000/0
100 / /
Q2+,Q1+,Q0+/z

Figura 12.32. Matriz de transiciones con asignación de estados de Figura 12.31.

Escribiendo un mapa, se logra:

Q2Q1
Q0x 00 01 11 10
0 4 12 8
00 0010 1110 0001

1 5 13 9
01 1010 1110 0000
3 7 15 11
11 0110 1100 0000 0100
2 6 14 10
10 0100 1110 0000 0110

Q2+,Q1+,Q0+,z

Figura 12.33. Mapa de Karnaugh de Figura 12.32.

Que permite obtener:


Q2+ = Q2'Q1+Q2'Q0'x ; Q1+ = Q2'Q1+Q2'Q0+Q1'Q0 ;
Q0+ = Q2'Q0' +Q2'Q1'x+Q2'Q1x'+Q2Q1'x'; z = Q2Q0'x'

12.6 Descomposición de Máquinas Secuenciales.

Debido a la aparición de componentes programables, puede ocurrir que se requieran demasiadas


entradas o salidas, o que no se tenga macroceldas con los productos necesarios. En estos casos
puede resultar conveniente descomponer una máquina secuencial en dos o más sub-máquinas que
se comuniquen. Este procedimiento está descrito en el libro de R. Katz cap. 9.5.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 12. Equivalencia y Asignación de Estados. 27

Problemas resueltos.

Problema 12.1.

Para el siguiente diagrama de estados: Estado Inicial

0/0 1/0
b c
0/0 1/0 0/0 1/0

d e f g
0/0 1/0 0/0 1/1 0/1 1/0 0/0 1/0

Figura P12.1. Diagrama de estados Problema 12.1.

a) Describir la función de la máquina secuencial.


b) Determinar estados equivalentes aplicando el método de las particiones. Reducir el diagrama
eliminando estados equivalentes asociados a letras de mayor orden; por ejemplo, si a y c son
equivalente, se elimina c.
c) Asignar nombres binarios a los estados, aplicando reglas. El estado inicial (a) debe estar
formado por puros ceros. Se deben elegir: b=001, d=010 y e=110, indicando si esta asignación
cumple o no las reglas.
d) Diseñar empleando flip-flops ds y compuertas. No es necesario dibujar el esquemático.
e) Diseñar empleando un registro de desplazamiento y compuertas. Si es necesario puede
agregarse otra componente o subsistema.

Solución.
a) Analiza secuencias de largo tres, determinando con salida 1 la llegada de las secuencias: 011 ó
100; para el resto de las posibles secuencias de tres bits la salida es cero.
b)
P0 = { a, b, c, d, e, f, g}
P1 = {e}, {f}, {a, b, c, d, g}
P2 = {e}, {f}, {b}, {c}, {a, d, g}
P3 = {e}, {f}, {b}, {c}, {a}, {d, g}
P4 = P3
Por lo tanto d es equivalente con g. Se elimina g.

c) Se tiene la siguiente tabla de transiciones:

Por la regla de mayor prioridad:

Profesor Leopoldo Silva Bijit 19-01-2010


28 Sistemas Digitales
Deben ser adyacentes entre sí: def. Es decir: d con e, e con f y f con d.
Por la regla de mediana prioridad:
Deben ser adyacentes: b con c (nueva); d con e, y f con d (ya presentes en la regla de alta
prioridad)
Por la tercera regla, de menor prioridad, deben ser adyacentes entre sí: abcde y abcdf. (La función
de salida se minimiza agrupando los ceros, como producto de sumas)

x=0 x=1
Q2Q1
a b/0 c/0 Q0 00 01 11 10
b d/0 e/0 0 2 6 4
c f/0 d/0 0 a d e
d a/0 a/0
e a/0 a/1 1 3 7 5
f a/1 a/0 1 b

Figura P12.2. Asignación de estados Problema 12.1.

Con las asignaciones dadas, que se ilustran en el mapa, se cumplen automáticamente que: d es
adyacente con e, de la primera regla; y d con a y b con a de la tercera regla; y sólo se puede
cumplir una de las dos siguientes: e con f o f con d.
c1) Si se elige f=011, f adyacente con d, no se puede cumplir que e sea adyacente con f; en este
caso a c debe asignarse 101, para cumplir la regla de media prioridad.

c2) Si se elige f=111, f es adyacente con e, y no puede cumplirse que f sea adyacente con d. En
este caso con c=101 se logra c adyacente con b (segunda regla). Es mejor asignar, en este caso c=
011, ya que además logra c adyacente con d, de la tercera regla.

c3) Si se elige f=100, f es adyacente con e, y no puede cumplirse que f sea adyacente con d; en
este caso conviene c=011, ya que logra b con c y además c con d de la tercera regla.
Para c2) quedan dos estados sin asignar, a los cuales pueden colocarse próximo estado y salida
superfluos. Resulta la siguiente tabla de transiciones.

Q2Q1Q0 x=0 x=1


a 000 001/0 011/0
b 001 010/0 110/0
c 011 111/0 010/0
d 010 000/0 000/0
e 110 000/0 000/1
f 111 000/1 000/0
100 / /
101 / /
Q2+Q1+Q0+/z

Figura P12.3. Matriz de transiciones Problema 12.1.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 12. Equivalencia y Asignación de Estados. 29
d) Formando un mapa
Q2Q1
Q0x 00 01 11 10
0 4 12 8
001/0 000/0 000/0 ФФФ/Ф
00
1 5 13 9
011/0 000/0 000/1 ФФФ/Ф
01
3 7 15 11
110/0 010/0 000/0 ФФФ/Ф
11
2 6 14 10
010/0 111/0 000/1 ФФФ/Ф
10

Q2+Q1+Q0+/z
Figura P12.4. Mapa de matriz de transiciones Problema 12.1.

Se obtienen:

Q2+ = D2 = Q1’Q0x +Q2’Q1Q0x’


Q1+ = D1 = Q2’Q0 + Q1’x
Q0+ = D0 = Q1’Q0’+ Q2’Q1Q0x’
z = Q2Q0’x + Q2Q0x’

e) Usando un registro de desplazamiento con dos flip-flops.


Es necesario agregar un contador módulo tres.

Se tiene:

Secuencia 0 1 2 3 4 5 6 7
Contador 0 1 2 0 1 2 0 1
Qa 0 1 0 0 1 0 0 1
Qb 0 0 1 0 0 1 0 0
Registro Q1 0 x0 x1 x2 x3 x4 x5 x6
Q0 0 0 x0 x1 x2 x3 x4 x5
Entrada x0 x1 x2 x3 x4 x5 x6 x7

Figura P12.5. Secuencias Problema 12.1.

En la tabla anterior, el número de secuencia indica los cantos de reloj que han ocurrido hasta el
momento.
Después del primer canto del reloj, el contador pasa a la cuenta 1 (Qa=1 y Qb =0).

Profesor Leopoldo Silva Bijit 19-01-2010


30 Sistemas Digitales
Después del primer canto, el valor x0 pasa al primer flip-flop del registro.
Cuando la cuenta es dos, en la entrada se tiene x2, en Q1 se tiene x1 y en Q0 se tiene x0. Más
adelante se tiene en la entrada x5, en Q1 se tiene x4 y en Q0 se tiene x3.
Entonces:
Ha llegado la secuencia 011 se logra con Q0’Q1x
Ha llegado la secuencia 100 se logra con Q0Q1’x’

Ha llegado la secuencia 011 o la secuencia 100 en la cuenta dos del contador, se logra con:
z = (Q0’Q1x + Q0Q1’x’)QbQa’

El diseño del contador módulo tres, queda especificado por la siguiente tabla.

QbQa
00 01
01 10
10 00
11
Qb+Qa+

Figura P12.6. Contador módulo tres Problema 12.1.

De la cual se logran: Qb+= Db = Qa y Qa+ = Da = Qb’Qa’

El registro de desplazamiento, queda:

x D1 Q1 D0 Q0

Figura P12.7. Registro desplazamiento Problema 12.1.

Otra solución es mediante un registro de desplazamiento formado por tres flip-flops.

Secuencia 0 1 2 3 4 5 6 7
Contador 0 1 2 0 1 2 0 1
Qa 0 1 0 0 1 0 0 1
Qb 0 0 1 0 0 1 0 0
Registro Q2 0 x0 x1 x2 x3 x4 x5 x6
Q1 0 0 x0 x1 x2 x3 x4 x5
Q0 0 0 0 x0 x1 x2 x3 x4
Entrada x0 x1 x2 x3 x4 x5 x6 x7

Figura P12.8. Registro con tres flip-flops Problema 12.1.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 12. Equivalencia y Asignación de Estados. 31
En esta situación, la salida se genera según:
z = Qb’Qa’(Q0’Q1Q2 + Q0Q1’Q2’)

x D2 Q2 D1 Q1 D0 Q0

Figura P12.9. Registro desplazamiento con tres flip-flops. Problema 12.1.

Problema 12.2.

Para el siguiente diagrama:


a) Determinar la matriz de transiciones y la ecuación de salida.
b) Reducir estados equivalentes. Dibujando el diagrama de estados resultante.
c) Dibujar el esquemático de la máquina secuencial más simple que realiza igual función
que el diagrama dado.
x

Q1 z
D1
Q1’

Q0
D0
Q0’

Figura P12.10. Esquemático. Problema 12.2.

Solución.
a) Se tienen: D1 = x’Q1’Q0’ + x Q0; D0 = Q1’ + x’ Q0’; z = Q1Q0’ +Q1’Q0 (Moore)
De los flip-flops Ds se tienen: Q1+ = D1 y Q0+ = D0

Estado x z x
Q1 Q0 0 1 Estado 0 1
0 0 11 01 0 A=00 C B 0
0 1 01 11 1 B=01 B C 1
1 1 00 10 0 C=11 A D 0
1 0 01 00 1 D=10 B A 1
Q1+Q0+ Estado + z

Figura P12.11. Matriz de transiciones. Problema 12.2.

Profesor Leopoldo Silva Bijit 19-01-2010


32 Sistemas Digitales

b) P1 = {A, C}, {B, D}


Sucesores 0 de AC = CA, Sucesores 1 de AC = BD
Sucesores 0 de BD = BB, Sucesores 1 de BD = CA
Entonces P2 = P1, y se tiene que A es equivalente a C; y que B es equivalente a D.
x z 1
Estado 0 1
A/0 B/1 0
A=0 A B 0 0
B=1 B A 1
Estado + 1

Figura P12.12. Matriz de transiciones reducida. Problema 12.2.

c) Se requiere un flip-flop, sea éste Q.


Para tipo D, se tienen Q+ = D = x’Q + xQ’; z = Q

x z
x Q z Q 0 1
D
Q’ 0 0 1 0
1 1 0 1
Q+

Figura P12.13. Diseño basado en flip-flop D. Problema 12.2.

Observación. La salida genera el bit de paridad de la secuencia de entrada. La salida es uno si


en la secuencia se tiene un número impar de unos.

Con tipo JK: Se tiene xQ’ +x’Q = JQ’ +K’Q con lo que se obtiene: J = x; K = x

J Q
z
x
K Q’

Figura P12.14. Diseño basado en flip-flop JK. Problema 12.2.

Problema 12.3.

Se tiene la siguiente matriz de transiciones:

Determinar si las proposiciones son verdaderas o falsas.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 12. Equivalencia y Asignación de Estados. 33

Estado x=0 x=1 V F


E3, E4 y E5 son 1-equivalentes.
E0 E1/0 E2/0 V F
E3 y E5 son 2-equivalentes
E1 E3/0 E4/0 V F
E4 y E6 son 3-equivalentes
E2 E5/0 E6/0 V F
E0, E4 y E6 son equivalentes
E3 E0/0 E0/1 V F
El conjunto P3 es igual a P5.
E4 E0/0 E0/0 V F
E1 y E2 son equivalentes
E5 E0/0 E0/1 V F
El diagrama de estados se puede representar
E6 E0/0 E0/0 con 4 estados.
V F El diagrama de estados se puede representar
con 5 estados.

Dos estados son n-equivalentes si pertenecen a un


grupo o partición de Pn.
Figura P12.15. Matriz de transiciones. Problema 12.3.

Solución:
P0 = {E0, E1, E2, E3, E4, E5, E6 }
P1 = {E0, E1, E2, E4, E6 } { E3, E5 }
S0(E0E1E2E4E6)=(E1E3E5E0E0) S0(E3E5)=(E0E0)
S1(E0E1E2E4E6)=(E2E4E6E0E0) S1(E3E5)=(E0E0)

P2={E0, E4, E6 }{ E1, E2 }{ E3, E5 }


S0(E0E4E6)=(E1E0E0) S0(E1E2)=(E3E5) S0(E3E5)=(E0E0)
S1(E0E4E6)=(E2E0E0) S1(E1E2)=(E4E6) S1(E3E5)=(E0E0)

P3={E0} { E4, E6 }{ E1, E2 }{ E3, E5 }


S0(E4E6)=(E0E0) S0(E1E2)=(E3E5) S0(E3E5)=(E0E0)
S1(E4E6)=(E0E0) S1(E1E2)=(E4E6) S1(E3E5)=(E0E0)

P4 = P3
P5 = P4 y así sucesivamente.

Entonces el mínimo número de estados (no equivalentes entre sí) es 4.


E3, E4 y E5 son 1-equivalentes es Falsa ya que E3 y E5 están en un grupo; y E4 en otro.
E3 y E5 son 2-equivalentes es Verdadera ya que E3 y E5 están en un mismo grupo en P2.
E4 y E6 son 3-equivalentes es verdadera, ya que E4 y E6 están en un mismo grupo en P3.
E0, E4 y E6 son equivalentes es Falsa. Ya que E4 es equivalente con E6, E1 con E2 y E3 con E5.
El conjunto P3 es igual a P5 es verdadera, ya que P5 = P4 = P3.
E1 y E2 son equivalentes es verdad.
El diagrama de estados se puede representar con 4 estados. Es verdadera, por ejemplo pueden
emplearse E0, E1, E4, E3.
El diagrama de estados se puede representar con 5 estados. Es verdadera, pero obviamente no es
la mejor solución. Quedarían dos estados equivalentes.

Profesor Leopoldo Silva Bijit 19-01-2010


34 Sistemas Digitales

Problema 12.4.

Se tiene el siguiente diagrama de estados y algunas asignaciones de estados.

Estado x=0 x=1 Estado Asig.1 Asig.2 Asig. 3


A A/0 C/0 A 00 00 00
B D/1 B/1 B 10 01 01
C B/1 D/1 C 11 11 10
D A/0 D/0 D 01 10 11

Determinar si las proposiciones son verdaderas o falsas.

V F Asig. 1 y Asig. 2 cumplen todas las reglas y tienen igual costo.


V F Asig. 1 y Asig. 3 cumplen todas las reglas y tienen igual costo.
V F Asig. 1 y Asig. 2 cumplen todas las reglas y tienen diferente costo.
V F Asig. 2 y Asig. 3 no cumplen todas las reglas.
V F A con D y B con C deben estar a distancia uno por regla de mayor prioridad.
V F A con D y B con C deben estar a distancia uno por regla de mediana prioridad.
V F A con D y B con C deben estar a distancia uno por regla de inferior prioridad.
V F A con D deben a estar a distancia uno por las tres reglas.

Figura P12.16. Problema 12.4.

Mayor Prioridad: Estados con estados próximos iguales para igual entrada.
Mediana Prioridad: Próximos Estados para entradas adyacentes
Baja Prioridad: Estados con Iguales salidas para igual entrada.

Solución:
Mayor prioridad:
A adyacente con D, ya que con entrada 0 van al estado A.
C adyacente con D, ya que con entrada 1 van al estado D.
Mediana prioridad:
A adyacente con C, ya que son estados próximos de A, para entrada 0 y 1 respectivamente.
D adyacente con B, ya que son estados próximos de B, para entrada 0 y 1 respectivamente.
B adyacente con D, ya que son estados próximos de C, para entrada 0 y 1 respectivamente.
A adyacente con D, ya que son estados próximos de D, para entrada 0 y 1 respectivamente.
Baja Prioridad.
B adyacente con C, ya que tienen salida 1 para entrada 0 y 1.
A adyacente con D, ya que tienen salida 0 para entrada 0 y 1.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 12. Equivalencia y Asignación de Estados. 35

Q0 Q0 Q0
Q1 0 1 Q1 0 1 Q1 0 1
0 1 0 1 0 1
0 A
0 D
0 0 A
0 B
0 0 A
0 B
0
2 3 2 3 2 3
1 B
0 C
0 1 D
0 C
0 1 C
0 D
0

Asig. 1 Asig. 2 Asig. 3

Figura P12.17. Asignaciones Problema 12.4.

Asig. 1 cumple AD, CD, BC. No cumple AC, DB (mediana prioridad).


Asig. 2 cumple AD, CD, BC, AD. No cumple AC, DB (mediana prioridad).
Asig. 3 cumple CD, AC, DB. No cumple: AD (alta), AD (mediana prioridad); BC y AD baja
prioridad.

Profesor Leopoldo Silva Bijit 19-01-2010


36 Sistemas Digitales

Índice general.

CAPÍTULO 12 .............................................................................................................................................. 1
EQUIVALENCIA Y ASIGNACIÓN DE ESTADOS. ............................................................................... 1
12.1. ESTADOS EQUIVALENTES. .................................................................................................................. 1
12.2 MÉTODO DE REDUCCIÓN DE ESTADOS POR INSPECCIÓN. .................................................................... 1
12.3. REDUCCIÓN DE ESTADOS EN MÁQUINAS COMPLETAMENTE ESPECIFICADAS. ...................................... 2
12.3.1. Método de Reducción de Moore. Método de las Particiones. .................................................... 2
Ejemplo 12.1 ....................................................................................................................................................... 3
Algoritmo de las particiones de Moore. .............................................................................................................. 4
Ejemplo 12.2. ...................................................................................................................................................... 5
Ejemplo 12.3. ...................................................................................................................................................... 6
Ejemplo 12.4. ...................................................................................................................................................... 6
12.3.2. Método del diagrama de implicación......................................................................................... 8
12.3.3. Minimización de estados en máquinas incompletamente especificadas. ................................. 10
12.4. ASIGNACIÓN DE ESTADOS. ............................................................................................................... 10
12.4.1. Análisis del problema de asignación. ...................................................................................... 10
Ejemplo 12.5. ....................................................................................................................................... 14
12.4.2. Estrategias de asignación. ....................................................................................................... 15
12.5 REGLAS PARA LA ASIGNACIÓN DE ESTADOS...................................................................................... 15
Regla de Alta prioridad: ...................................................................................................................... 15
Regla de Prioridad Media: .................................................................................................................. 16
Regla de Baja Prioridad: ..................................................................................................................... 16
Análisis de las reglas. .......................................................................................................................... 17
Ejemplo 12.6. ....................................................................................................................................... 18
Asignación one-hot. ............................................................................................................................. 21
Ejemplo 12.7. ....................................................................................................................................... 23
Ejemplo 12.8. ....................................................................................................................................... 25
12.6 DESCOMPOSICIÓN DE MÁQUINAS SECUENCIALES. ............................................................................ 26
PROBLEMAS RESUELTOS. .......................................................................................................................... 27
Problema 12.1. ..................................................................................................................................... 27
Problema 12.2. ..................................................................................................................................... 31
Problema 12.3. ..................................................................................................................................... 32
Problema 12.4. ..................................................................................................................................... 34
ÍNDICE GENERAL. ...................................................................................................................................... 36
ÍNDICE DE FIGURAS ................................................................................................................................... 37

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 12. Equivalencia y Asignación de Estados. 37

Índice de figuras

Figura 12.1. Matriz de transiciones.................................................................................................. 1


Figura 12.2. Matriz de transiciones reducida. .................................................................................. 2
Figura 12.3. Diagrama de estados Ejemplo 12.1 ............................................................................. 3
Figura 12.4. Secuencia de salida para entrada de largo dos. ............................................................ 4
Figura 12.5. Secuencia de salida para entrada de largo tres............................................................. 4
Figura 12.6. Matriz de transiciones ejemplo 12.2. ........................................................................... 5
Figura 12.7. Matriz de transiciones ejemplo 12.3. ........................................................................... 6
Figura 12.8. Matriz de transiciones ejemplo 12.4. ........................................................................... 7
Figura 12.9. Matriz de transiciones reducida y diagrama de estados Ejemplo 12.4. ....................... 8
Figura 12.9a. Matriz de transiciones. ............................................................................................... 8
Figura 12.9b. Tabla de implicaciones. ............................................................................................. 9
Figura 12.9c. Matriz reducida. ....................................................................................................... 10
Figura 12.9d. Salidas con condiciones superfluas. ........................................................................ 10
Figura 12.10. Intercambio de columnas en asignaciones. .............................................................. 12
Figura 12.11. Número de asignaciones de estados. ....................................................................... 12
Figura 12.12. Asignaciones de estado únicas para cuatro estados. ................................................ 13
Figura 12.13. Asignaciones de estado posibles para cuatro estados. ............................................. 13
Figura 12.13a. Asignaciones de estado generadas por permutaciones. ......................................... 14
Figura 12.14. Matriz de transiciones ejemplo 12.5. ....................................................................... 14
Figura 12.15. Comparación entre dos asignaciones. ...................................................................... 14
Figura 12.16. Regla de Alta prioridad............................................................................................ 16
Figura 12.17. Regla de prioridad media. ........................................................................................ 16
Figura 12.18. Regla de prioridad baja. ........................................................................................... 17
Figura 12.18a. Regla de prioridad alta. .......................................................................................... 17
Figura 12.18b. Regla de prioridad media....................................................................................... 18
Figura 12.19. Matriz de transiciones ejemplo 12.6. ....................................................................... 18
Figura 12.20. Asignación de estados ejemplo 12.6........................................................................ 19
Figura 12.21. Matriz de transiciones con asignación de estados. ................................................. 19
Figura 12.22. Matriz de transiciones con ordenamiento Gray. ...................................................... 20
Figura 12.23. Asignaciones óptimas para ejemplo 12.6. ............................................................... 20
Figura 12.24. Matriz de transiciones con asignación 2. ................................................................. 20
Figura 12.25. Matriz de transiciones con asignación 2, ordenada en Gray.................................... 21
Figura 12.26. Matriz de transiciones con asignación 3. ................................................................. 21
Figura 12.26a. Asignación one-hot para ejemplo 12.6. ................................................................. 22
Figura 12.26a. Asignación one-hot para ejemplo 12.6. ................................................................. 22
Figura 12.27. Matriz de transiciones ejemplo 12.7. ....................................................................... 23
Figura 12.28. Asignaciones ejemplo 12.7. ..................................................................................... 24
Figura 12.29. Asignación 2 con intercambio de columna. ............................................................. 24
Figura 12.30 Matriz de transiciones reducida ejemplo 12.8 .......................................................... 25
Figura 12.31. Asignación de estados, aplicando reglas. ................................................................ 25
Figura 12.32. Matriz de transiciones con asignación de estados de Figura 12.31. ........................ 26
Figura 12.33. Mapa de Karnaugh de Figura 12.32. ....................................................................... 26
Figura P12.1. Diagrama de estados Problema 12.1. ...................................................................... 27

Profesor Leopoldo Silva Bijit 19-01-2010


38 Sistemas Digitales
Figura P12.2. Asignación de estados Problema 12.1......................................................................28
Figura P12.3. Matriz de transiciones Problema 12.1. .....................................................................28
Figura P12.4. Mapa de matriz de transiciones Problema 12.1. ......................................................29
Figura P12.5. Secuencias Problema 12.1. ......................................................................................29
Figura P12.6. Contador módulo tres Problema 12.1. .....................................................................30
Figura P12.7. Registro desplazamiento Problema 12.1. ................................................................30
Figura P12.8. Registro con tres flip-flops Problema 12.1. .............................................................30
Figura P12.9. Registro desplazamiento con tres flip-flops. Problema 12.1....................................31
Figura P12.10. Esquemático. Problema 12.2..................................................................................31
Figura P12.11. Matriz de transiciones. Problema 12.2. ..................................................................31
Figura P12.12. Matriz de transiciones reducida. Problema 12.2. ...................................................32
Figura P12.13. Diseño basado en flip-flop D. Problema 12.2. .......................................................32
Figura P12.14. Diseño basado en flip-flop JK. Problema 12.2. .....................................................32
Figura P12.15. Matriz de transiciones. Problema 12.3. .................................................................33
Figura P12.16. Problema 12.4. ......................................................................................................34
Figura P12.17. Asignaciones Problema 12.4. ................................................................................35

Profesor Leopoldo Silva Bijit 19-01-2010


1

Capítulo 13

Bloques básicos secuenciales.

13.1. Contadores.

Es una de las componentes más utilizada en el diseño de máquinas digitales.

En los diagramas de estados de contadores, no suelen anotarse las entradas, el cambio de estado
se produce con el canto del reloj; es decir, se cuentan los cantos del reloj.

La asignación de estados se elige de tal manera que el estado refleje la cuenta; debido a esto son
máquinas de Moore.
Los diseños pueden efectuarse con JK, y también con D. Las ecuaciones con flip-flops de tipo D
pueden implementarse directamente con lógica programable.

Pueden clasificarse según la forma de contar en contadores binarios, bcd, o en contadores con
secuencias especiales. También pueden ser progresivos o regresivos, si cuentan en forma
ascendente o descendente respectivamente.

Según el tipo de implementación pueden clasificarse en sincrónicos o asincrónicos. En los


primeros, el estado de todos los flip-flops cambia con el reloj; en los segundos todos los flips-
flops no cambian simultáneamente con el reloj. Las señales de clear y reset también pueden ser
sincrónicas con el reloj o asincrónicas.

Se verán a continuación algunos contadores sincrónicos binarios ascendentes módulo potencia


de dos.

13.1.1. Contador sincrónico binario módulo 4.

Especificación a través de una matriz de transiciones:

Estado Presente Próximo estado


00 01
01 10
10 11
11 00

Figura 13.1. Matriz transiciones contador módulo 4.

Efectuando un mapa de la función de próximo estado, se obtiene:

Profesor Leopoldo Silva Bijit 19-01-2010


2 Sistemas Digitales
Q1
Q0 0 1
0 1
0 01 11

2 3
1 10 00

Q1+ Q0+
Figura 13.2. Matriz de transiciones contador módulo 4.

Si la cifra menos significativa es Q0 y la más significativa es Q1, se tienen:


Q1+ = Q0Q1' + Q0'Q1 = J1Q1' +K1'Q1 = D1
Q0+ = Q0' = J0Q0' +K0'Q0 = D0

Las que implican, para flip-flops JKs:


J1 = Q0 K1 = Q0
J0 = 1 K0 = 1

Las ecuaciones anteriores representan al siguiente circuito:


+Vcc

reset’

rst rst
J Q0 J Q1
K K
clk clk

clk

Figura 13.2.a. Esquemático contador módulo 4.

Y para flip-flops Ds, se obtienen:


D1 = Q0Q1' + Q0'Q1
D0 = Q0'

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 13. Bloques básicos secuenciales 3

13.1.2. Contador sincrónico binario módulo 8.

Puede especificarse mediante la siguiente matriz de transiciones:

Estado Presente Próximo estado


000 001
001 010
010 011
011 100
100 101
101 110
110 111
111 000

Figura 13.3. Matriz de transiciones contador módulo 8.

Si la cifra menos significativa es Q0 y la más significativa es Q2, se tienen:

reset
000
Q2Q1
Q0 00 01 11 10 111 001
0 2 6 4
0 001 011 111 101

1 3 7 5 110 010
1 010 100 000 110

Q2+ Q1+ Q0+


101 011
100

Figura 13.4. Matriz de transiciones y diagrama de estados para contador módulo 8.

Notar que en el diagrama de estados, no hay señal de entrada asociada a las transiciones. El
cambio de estado se produce con el canto del reloj. La salida es el estado, y el diagrama
corresponde a un modelo de Moore.

Resultan:
Q2+ = Q1Q0Q2' + Q2(Q1' + Q0') = J2Q2' +K2'Q2 = D2
Q1+ = Q0Q1' + Q0'Q1 = J1Q1' +K1'Q1 = D1
Q0+ = 1Q0' + 0 Q0 = J0Q0' +K0'Q0 = D0

Profesor Leopoldo Silva Bijit 19-01-2010


4 Sistemas Digitales

En el caso de emplear flip-flops de tipo D, los programas resultan por simple lectura del mapa
de la matriz de transiciones, ya que: Di = Qi+

Para diseño con JKs, conviene leer los mapas buscando los factores de Qi y Qi'. Y luego
comparar los coeficientes de las ecuaciones características para encontrar los Ji y Ki'.

Se logran:
J2 = Q1Q0 K2 = Q1Q0
J1 = Q0 K1 = Q0
J0 = 1 K0 = 1

Usando flip-flops JKs, el diseño puede representarse por el esquemático de la Figura 13.5:

+Vcc

reset’

rst rst rst


J Q0 J Q1 J Q2
K K K
clk clk clk

clk

Figura 13.5. Esquemático contador módulo 8 mediante JK.

Notar que los flip-flops operan con el canto de bajada del reloj.

Se destaca un reset asincrónico: cuando la señal reset' (de lógica negativa) tiene un canto de
bajada, se activa. Entonces, en ese momento, todos los flip-flops van a cero (ver marcador 1 en
la Figura 13.6), y se tiene al contador en el estado inicial. Permanece en ese estado hasta que se
desactiva la señal reset'; es decir cuando reset' = 1, luego de lo cual, en el próximo canto de
bajada del reloj, se pasará al próximo estado 001. El pequeño círculo que está en la entrada de
reset, indica que es una señal de lógica negativa; y es convencional describirla con el nombre
negado: reset'.

Las formas de ondas muestran el tiempo de propagación de los flip-flops (ver marcador tf en la
Figura 13.6); es decir el tiempo que transcurre desde el canto hasta que se tiene nivel estable en
las salidas Q de los flip-flops.

Nótese que todas las salidas cambian en el mismo momento, y que permanecen estables entre
cantos de bajada del reloj.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 13. Bloques básicos secuenciales 5

rst'

clk
Q2
Q1
Q0
1 tf
Figura 13.6. Formas de ondas contador módulo 8.

13.1.3. Contador sincrónico binario módulo 16.

Si la cifra menos significativa es Q0 y la más significativa es Q3, se tienen:


Q3Q2
Q1Q0 00 01 11 10
0 4 12 8
00 0001 0101 1101 1001

1 5 13 9
01 0010 0110 1110 1010

3 7 15 11
11 0100 1000 0000 1100

2 6 14 10
10 0011 0111 1111 1011

Q3+ Q2+ Q1+ Q0+


Figura 13.7. Matriz de transiciones contador módulo 16.

Resultan:
Q3+ = Q1Q0Q2Q3' + (Q2'+ Q1' + Q0') Q3 = J3Q3' +K3'Q3 = D3
Q2+ = Q1Q0Q2' + Q2(Q1' + Q0') = J2Q2' +K2'Q2 = D2
Q1+ = Q0Q1' + Q0'Q1 = J1Q1' +K1'Q1 = D1
Q0+ = Q0' = J0Q0' +K0'Q0 = D0

Las que implican los programas de los flip-flops JK:


J3 = Q2Q1Q0 K3 = Q2Q1Q0
J2 = Q1Q0 K2 = Q1Q0
J1 = Q0 K1 = Q0
J0 = 1 K0 = 1

Profesor Leopoldo Silva Bijit 19-01-2010


6 Sistemas Digitales
El esquema siguiente ilustra el diseño sincrónico. Debe notarse que aumentan las cargas de Q0 y
que se requiere una compuerta de mayor fan-in en la entrada del flip-flop más significativo.
Con tf, el tiempo de propagación desde el flanco del reloj hasta la salida; tc tiempo de
propagación a través de la compuerta; tsu tiempo de set-up del flip-flop, el período mínimo del
reloj queda dado por: (tf + tc + tsu + tskew), el cual es determinado por los flip-flops Q2 y Q3;
los requerimientos de período del reloj de los flip-flops Q0 y Q1 son menos exigentes.

El requerimiento de hold, de los flip-flops Q0 y Q1, se satisface si el tiempo de propagación,


desde el canto del reloj hasta la salida, es mayor que el tiempo de sostenimiento requerido; los
flip-flops Q2 y Q3 tienen exigencias menores de sostenimiento, ya que existe un tiempo de
propagación de una compuerta. Recuérdese que los requerimientos de hold se evalúan en un
mismo canto del reloj; y los de setp-up, entre dos cantos adyacentes.

+Vcc

reset’

rst rst rst rst


J Q0 J Q1 J Q2 J Q3
K K K K
clk clk clk clk

clk

Figura 13.8. Esquemático contador módulo 8 mediante JK.

Las formas de ondas de Q0, Q1, Q2, Q3, clk y rst se ilustran a continuación:

Q0
Q1
Q2
Q3
clk
rst

Figura 13.9. Formas de ondas contador módulo 16.

Si los períodos del reloj, de Q0, Q1, Q2 y Q3 son: Tc, T0, T1, T2 y T3 respectivamente, se
tienen:
T0 T1 T2 T3
Tc
2 4 8 16

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 13. Bloques básicos secuenciales 7
Puede variarse el diseño, liberando tener un flip-flop (el menos significativo) con mayor fan-
out, y una compuerta de mayor fan-in en la entrada del flip-flop más significativo, del modo
siguiente:

+Vcc

reset’

rst rst rst rst


J Q0 J Q1 J Q2 J Q3
K K K K
clk clk clk clk

clk

Figura 13.10. Disminución fan-out.

Este diseño, sigue siendo sincrónico, pero aumenta el período mínimo que puede tener el reloj
para el funcionamiento correcto de Q3. Ahora se tiene que el período mínimo queda dado por:
(tf +2 tc + tsu+ tskew), el cual implica una frecuencia máxima menor que la del diseño anterior.

13.1.4. Contador binario de ripple, con salida asincrónica.

El siguiente diseño, basado en la experiencia e intuición, es el contador que requiere menos


hardware.
Los flip-flops JK están conectados simulando un flip-flop T, y se emplea la capacidad de este
flip-flop de dividir por dos la frecuencia del reloj. Se muestra un esquema a continuación:

+Vcc +Vcc +Vcc +Vcc

reset’

rst rst rst rst


J Q0 J Q1 J Q2 J Q3
K K K K
clk clk clk clk

clk

Figura 13.11 Contador ondulado o de ripple.

Debido a que las entradas no cambian, se cumplen automáticamente los requerimientos de


sostenimiento y set-up, para los cuatro flip-flops. La propagación de la transición de la cuenta
15 a la cuenta cero, limita el período mínimo del reloj. Ya que en este caso, como se ilustra en la
Figura 13.12 se tiene el menor valor de tiempo en el cual en contador está en una cuenta dada.

Profesor Leopoldo Silva Bijit 19-01-2010


8 Sistemas Digitales
Entonces se tiene para el mínimo período: (4tf +t0min), lo cual implica que la duración del tiempo
en cuenta cero será igual a t0min.

A continuación se muestran las formas de ondas. Los tiempos en que este contador permanece
en cada estado no son regulares.

clk
Q0
Q1
Q2
Q3
rst'
Figura 13.12. Formas de ondas contador ripple.

13.1.5. Contador de anillo (ring counter).

El siguiente esquema ilustra un registro de desplazamiento a la derecha, máquina secuencial que


se verá más adelante, que se emplea como contador.

reset’

set rst rst rst


J Q0 J Q1 J Q2 J Q3
K K K K
clk clk clk clk

clk

Figura 13.13. Contador de anillo.

Debe notarse que el primer flip-flop requiere un set asincrónico para iniciar el funcionamiento
del contador. Además, como puede observarse en las formas de ondas, los estados por los que
pasa el contador están restringidos a una secuencia determinada. Pasa para la configuración de
la Figura 13.13, por: 0001, 0010, 0100, 1000.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 13. Bloques básicos secuenciales 9

Q0
Q1
Q2
Q3
clk
rst

Figura 13.14. Formas de ondas contador de anillo.

Una variación, que permite duplicar los estados del "ring counter", es el contador de Johnson.

13.1.6. Contador de Johnson.

Debe notarse que Q3 se conecta a K0, y que Q3' se conecta a J0. Este contador pasa por ocho
estados:
0000, 0001, 0011, 0111, 1111, 1110, 1100, 1000.

El contador de anillo y el de Johnson tienen salidas sincrónicas. El contador de Johnson tiene


señal de reset común, y no requiere del inicio especial del contador de anillo. Para ambos se
tiene que el período mínimo queda dado por (tf + tsu). Logrando mayores frecuencias de
operación que los contadores anteriores.

reset’

rst rst rst rst


J Q0 J Q1 J Q2 J Q3
K K K K
clk clk clk clk

clk

Figura 13.15. Contador de Johnson.

Con las siguientes formas de ondas:

Profesor Leopoldo Silva Bijit 19-01-2010


10 Sistemas Digitales

Q0

Q1

Q2

Q3

clk

rst

Figura 13.16. Formas de ondas contador Johnson.

13.1.7. Contador integrado 74163.

En la familia TTL existen diversos tipos de contadores. Uno muy versátil es el 74163, que tiene
señales de carga y clear sincrónicas. Lo cual permite cargar un valor de cuenta inicial y también
dejar en cero en forma sincrónica con el reloj. También se dispone de una señal que está alta
cuando se está en el estado más alto; es decir cuando el contador pasa al estado 1111, la señal se
denomina RCO (ripple carry output).

Los controles anteriores permiten diseñar contadores especiales. Por ejemplo uno que cuente
desde un valor inicial hasta 1111 (se logra conectando rco a la señal load).
Similar esquema suele emplearse en los temporizadores de procesadores y microcontroladores,
donde además de los recursos habituales de aritmética y lógica se agrega un contador, con
controles sincrónicos, denominado usualmente “timer”.

Otro contador, que puede implementarse con estos controles, es uno que cuente desde 0000
hasta un valor dado; para ello se requiere decodificar el estado y con esto alimentar la señal
clear.

No es recomendable emplear las entradas asincrónicas de los contadores para diseños como los
descritos antes; en este caso debe restringirse el uso de los controles asincrónicos sólo para
establecer el estado inicial.

Un diagrama lógico del contador 74163 se muestra en la Figura 13.17.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 13. Bloques básicos secuenciales 11

load’
PE
TE
clear’

P0 Q0
74163
P1 Q1
P2 Q2
P3 Q3
RCO

clk

Figura 13.17. Esquemático contador 74163.

Los controles clear’ y load’ se definen de lógica negativa, esto implica que la limpieza a cero
del estado del contador se logra con el canto de bajada de clear’. Como este control es
sincrónico, el instante preciso, en que se produce la acción, es el canto de subida del reloj luego
de que clear tiene un canto de subida. La Figura 13.17a, muestra la especificación del contador
mediante una tabla de verdad.

clear’ load’ PE TE Operación


1 0 x x preset
1 1 0 x No cuenta
1 1 x 0 No cuenta
1 1 1 1 cuenta
0 x x x reset

Figura 13.17a. Especificación contador 74163.

La siguiente descripción Verilog, ilustra el funcionamiento del contador.

module C74163(loadn, clearn, PE, TE, clk, P, RCO, Q)


input loadn, clearn, PE, TE, clk;
input [3:0] P;
output [3:0] Q;
output RCO;
reg [3:0] Q;

assign RCO = (&Q) & TE;

always @ (posedge clk)


begin
if (clearn == 0) Q <= 0;
else if (loadn ==0) Q <= P;
else if (PE & TE ) Q <= Q+1;
end
endmodule

Profesor Leopoldo Silva Bijit 19-01-2010


12 Sistemas Digitales
La expresión &Q es equivalente al AND de cada uno de los bits de Q.

13.1.8. Contador sincrónico binario módulo 32.

De los diseños de los contadores binarios módulos 4, 8 y 16, pueden inducirse las siguientes
ecuaciones, sin efectuar desarrollos. Lo mismo puede decirse para contadores módulo una
potencia de dos: 64, 128, etc.

Las ecuaciones de diseño basadas en flip-flops JKs:


J4 = Q3Q2Q1Q0 K3 = Q3Q2Q1Q0
J3 = Q2Q1Q0 K3 = Q2Q1Q0
J2 = Q1Q0 K2 = Q1Q0
J1 = Q0 K1 = Q0
J0 = 1 K0 = 1

Para diseños basados en flip-flops Ds:


Q4+ = Q1Q0Q2Q3Q4' + Q4(Q3' + Q2'+ Q1' + Q0') = D4
Q3+ = Q1Q0Q2Q3' + Q3(Q2'+ Q1' + Q0') = D3
Q2+ = Q1Q0Q2' + Q2(Q1' + Q0') = D2
Q1+ = Q0Q1' + Q0'Q1 = D1
Q0+ = Q0' = D0

A continuación se ilustran algunos ejemplos de contadores binarios sincrónicos que no son


módulo una potencia de dos.

13.1.9. Contador sincrónico módulo 7.

Si la cifra menos significativa es Q0 y la más significativa es Q2, se tienen:

000
Q2Q1
Q0 00 01 11 10 001
0 2 6 4
0 001 011 000 101
111 010
1 3 7 5 110
1 010 100 110

Q2+ Q1+ Q0+ 101 011


100

Figura 13.18. Contador sincrónico módulo 7.

El estado 111 (7) se trata como superfluo.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 13. Bloques básicos secuenciales 13
Resultan:
Q2+ = Q1Q0Q2'+Q1'Q2 = J2Q2' +K2'Q2 = D2
Q1+ = Q0Q1' + Q2'Q0'Q1 = J1Q1' +K1'Q1 = D1
Q0+ = (Q2'+Q1')Q0' = J0Q0' +K0'Q0 = D0

Las que implican:


J2 = Q1Q0 K2 = Q1
J1 = Q0 K1 = Q2 + Q0
J0 = Q2'+Q1' K0 = 1

13.1.10. Contador sincrónico módulo 6.

Si la cifra menos significativa es Q0 y la más significativa es Q2, se tienen:

Q2Q1 000
Q0 00 01 11 10 001
0 2 6 4
0 001 011 101 111
110 010
1 3 7 5
1 010 100 000
101 011
Q2+ Q1+ Q0+ 100

Figura 13.19. Contador sincrónico módulo 6.

Resultan:
Q2+ = Q1Q0Q2'+Q0'Q2 = J2Q2' +K2'Q2 = D2
Q1+ = Q2'Q0Q1' + Q0'Q1 = J1Q1' +K1'Q1 = D1
Q0+ = Q0' + 0 Q0 = J0Q0' +K0'Q0 = D0

Las que implican:


J2 = Q1Q0 K2 = Q0
J1 = Q2'Q0 K1 = Q0
J0 = 1 K0 = 1

En la familia TTL existen contadores asincrónicos como el 7493 que pueden contar en módulo
8 ó 16. Y el 7490 que puede contar en módulo 5 o por décadas (Módulo 10).

13.2. Registros de desplazamiento.

Se denomina registro a una serie de flip-flops agrupados, con reloj y señales de control común.
En los de desplazamiento se transfiere información de una celda (o flip-flop) hacia la adyacente,
dentro del mismo registro. Esta operación se llama corrimiento (shift). El corrimiento puede ser

Profesor Leopoldo Silva Bijit 19-01-2010


14 Sistemas Digitales
a la izquierda o a la derecha. Si el contenido representa a un número con signo, los corrimientos
aritméticos pueden ser realizados con extensión de signo.

Debe considerarse en forma especial los bordes. Indicando con qué se llena el hueco que se
produce; y especificando que se hace con el bit que sale del registro.

13.2.1 Usos.

Algunos de sus principales usos son:


a) Operaciones aritméticas. Permite multiplicar y dividir por dos el contenido de un registro
interpretado como número binario. Esta operación puede producir rebalse y también
truncamiento. Esto en caso que el resultado del producto no pueda representarse en el
registro; o en caso de una división de un número impar, respectivamente.
b) Operaciones lógicas. Permite posicionar un bit cualquiera en otra posición del registro. Esto
favorece las operaciones orientadas al bit. Una variante de esta operación es la rotación, en
la cual lo que sale del registro se introduce en el lugar vacante.
c) Conversión serie a paralelo. Permite pasar una información binaria en serie a paralelo y
vice-versa.
d) Generador de secuencias. Si se conecta como registro de rotación, puede generarse una
secuencia de largo n, donde n es el número de celdas.
e) Línea de retardo. Un valor en la entrada, sale n pulsos más tarde en la salida.
f) Reconocedor de secuencias. Si se conecta en las salidas de los flip-flops un decodificador
puede reconocerse una secuencia cada vez que se presente en la entrada.
g) Generador de códigos de chequeo. Se emplean para agregar información de chequeo a
paquetes con información, de tal modo de transmitir la información con datos de control,
que permitan verificar la correcta recepción del paquete.
h) Generador de secuencias binarias pseudoaleatorias (PRBS). Se emplean como generadores
de ruido. También se emplean para generar encriptación, en una configuración denominada
LFSR (Linear feedback shift register).

13.2.2. Ejemplo de diseño.

Se desea efectuar un corrimiento a la derecha. Es decir, con el canto del reloj, el contenido del
flip-flop Q0 pasa a Q1. Alternativamente, lo que se desea es que el próximo estado de Q1 sea el
valor actual de Q0.
J0 Q0 J1 Q1
x
K0 K1
Q0' Q1'
clk

Figura 13.20. Transferencia entre dos flip-flops.

Entonces, se desea que: Q1+ = Q0 = D1

Expandiendo en Q1 se logra: Q1+ = Q0Q1' +Q0Q1

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 13. Bloques básicos secuenciales 15
Comparando con la ecuación característica, se obtiene:

Q1+ = J1Q1' +K1'Q1

Se logran: J1 = Q0; K1 = Q0'

Si se desea ingresar x a Q0, se debe cumplir: Q0+ = x = D0


En este caso se tendrá: Q0+ = xQ0' +xQ0 = J0Q0' +K0' Q0

Se logran: J0 = x; K0 = x'

13.2.3. Registro de desplazamiento a la derecha de largo 4.

A continuación se ilustra un registro de largo 4, en base a JK:

reset’
rst rst rst rst
x
J Q0 J Q1 J Q2 J Q3
K K K K
clk clk clk clk

clk

Figura 13.21. Registro de desplazamiento a la derecha de largo 4.

Se muestran las formas de ondas cuando se aplica, en la entrada, la secuencia x = 01101110.


Debe notarse, en la gráfica, cómo el valor de x pasa a Q0, el valor de Q0 pasa a Q1, el de Q1 a
Q2, etc.

x
rst
clk
Q3
Q2
Q1
Q0

Figura 13.22. Formas de ondas en registro de desplazamiento.

13.2.4. Registros de desplazamiento TTL

La componente 7491 es un 8-bit shift register, serial-in serial out gated input.

Profesor Leopoldo Silva Bijit 19-01-2010


16 Sistemas Digitales
El 7494 es un shift register de 4 bits. Entrada paralela y salida serial. Además tiene entrada
serie. EL 7495, es de 4 bits, tiene entrada serial, carga de entrada en paralelo, salida paralela,
además de controles para corrimiento a la izquierda y a la derecha.

Las componentes 74164, 74165, 74166 son registros de 8 bits.


74194, 74195 y 74198 se denominan universales (de 4 y 8 bits) y tienen carga paralela y
corrimiento en ambas direcciones. Algunos de ellos están disponibles en los simuladores.

13.2.5. Registro universal 74194A.

Para el 74194A de Texas Instruments se entrega la siguiente tabla de funcionamiento:

Funciones 74LS194.
CLR S1 S0 CLK SL SR A B C D QA QB QC QD Función
L X X X X X X X X X L L L L Clear
H X X L X X X X X X Qa Qb Qc Qd Hold
H H H ↑ X X a b c d a b c d Load
H L H ↑ X H X X X X H Qa Qb Qc Shift R
H L H ↑ X L X X X X L Qa Qb Qc Shift R
H H L ↑ H X X X X X Qb Qc Qd H Shift L
H H L ↑ L X X X X X Qb Qc Qd L Shift L
H L L ↑ X X X X X X Qa Qb Qc Qd Hold

Con: SR shift right serial input; SL shift left serial input; A, B, C, D entrada paralela; QA,
QB, QC, QD salida paralela. S0 y S1 entradas de control. La señal CLR es un control
asincrónico, que coloca en cero los flip-flops. El evento que sincroniza las transferencias es el
canto de subida de la señal CLK.

De las especificaciones se logra la siguiente descripción funcional.


S0=1 y S1= 1 generan la señal de carga paralela. ( QA+=A, QB+=B, QC+=C, QD+=D )
S0=0 y S1 =1 corrimiento izquierdo ( QA+ = QB, QB+ = QC, QC+ = QD, QD+ = SL )
S0=1 y S1 =0 corrimiento derecho ( QA+ = SR, QB+ = QA, QC+ = QB, QD+ = QC )
S0=0 y S1 =0 se inhibe el reloj, el registro mantiene su estado (hold).

La siguiente descripción Verilog, modifica la especificación anterior, dejando el control CLR


como sincrónico.

module UniversalShiftRegister(CLR, CLK, SL, SR, S, datos, Q);


input CLR, CLK;
input SL, SR;
input [1:0] S;
input [3:0] datos;
output [3:0] Q;
reg [3:0] Q;

always @(posedge CLK)


if (CLR==0) Q<=0;

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 13. Bloques básicos secuenciales 17
else
begin
if (S==2’b11) Q <= datos;
else if (S==2’b10) Q <= { REG[2:0] , SL};
else if (S==2’b01) Q <= { SR, REG[3:1] };
end
endmodule

El esquemático siguiente es la implementación de Texas Instruments para el 74LS194A.

Figura 13.23. Registro universal Texas.

A partir del esquemático de la Figura 13.23, se obtienen las siguientes ecuaciones, asumiendo
flip-flops Ds, en lugar de SRs. Debe notarse que el estado hold se logra pasando por una
compuerta el reloj externo. Las ecuaciones siguientes permiten una descripción a nivel de
compuertas y flip-flops.

DA = (SR S1' +(S0' +S1')' A + QB S0' )


DB = (QA S1' +(S0' +S1')' B + QC S0' )
DC = (QB S1' +(S0' +S1')' C + QD S0' )
DD = (QC S1' +(S0' +S1')' D + SL S0' )
clk = (clk externo + S1’ S0’)’

Philips en su diseño no modifica el reloj, agregando una decodificación adicional, para


cada flip-flop.

Profesor Leopoldo Silva Bijit 19-01-2010


18 Sistemas Digitales

Figura 13.23a. Registro universal Philips.

13.3. Registros.

Se denomina registro a una colección de flip-flops con lógica y controles similares. Suelen
compartir el reloj, y las líneas asincrónicas de set y clear.

13.3.1. Registro de almacenamiento.

El siguiente esquema, es un registro de almacenamiento, que muestrea 4 bits disponibles en las


líneas de entrada, los captura en un canto del reloj y los mantiene en las salidas hasta el próximo
canto del reloj.
In0 In1 In2 In3
reset’

rst rst rst rst

D Q0 D Q1 D Q2 D Q3

clk clk clk clk

clk

Out0 Out1 Out2 Out3

Figura 13.24. Registro de almacenamiento.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 13. Bloques básicos secuenciales 19
Una variante del registro anterior, es un registro con habilitación de escritura. Se agrega una
señal adicional WE (write enable), cuya activación permite la escritura en el registro.

13.3.2. Registro de desplazamiento.

El siguiente esquema es un registro de desplazamiento a la derecha, implementado con flip-


flops Ds. Almacena los últimos 4 bits de la secuencia de entrada.
reset’

rst rst rst rst

In D Q0 D Q1 D Q2 D Q3

clk clk clk clk

clk

Out0 Out1 Out2 Out3

Figura 13.25. Registro de desplazamiento a la derecha de largo 4.

13.3.3. Diseño de máquinas en base a registros

Si se agrega un decodificador, que tenga como entradas a las salidas del registro de la Figura
13.25, puede generarse un detector de una secuencia de 4 bits, cada vez que ésta se presente.

13.4. Alternativas de Diseño de Máquinas Secuenciales.

13.4.1. Diseño basado en ROM.

Almacenar el estado en un registro, e implementar las funciones de próximo estado en una


ROM.
ROM registro

entradas
direcciones contenidos

clk

Figura 13.26 Diseño basado en EPROM.

Este esquema se emplea para diseñar unidades de control microprogramadas de procesadores.


La información del próximo estado se almacena en la ROM.

Profesor Leopoldo Silva Bijit 19-01-2010


20 Sistemas Digitales
13.4.2. Diseño basado en PLD.

Usar un dispositivo programable con salidas de registro; con esta arquitectura, las
realimentaciones del estado son internas.
PLD

entradas salidas

clk

Figura 13.27. Diseño basado en PLD.

Este esquema se emplea para diseñar unidades de control en firmware, o de lógica alambrada.

13.4.3. Secuenciador.

Una variante del esquema basado en ROM, es emplear, para registrar el estado, un contador
sincrónico con funciones de carga paralela, clear e incrementar; y programar la función de
próximo estado en función de estas señales.
Este esquema se denomina de microsecuenciación y se emplea en diseños de la unidad de
control de procesadores.

Las funciones de las señales de control del contador son:

Cero: llevar al estado inicial.


Inc: pasar al estado siguiente.
Load: presetear un estado determinado
i
Cero i
Inc Load
0000
i+1

Figura 13.28. Operaciones del contador.

Ejemplo 13.1.

Diseñar con un secuenciador el siguiente diagrama de estados.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 13. Bloques básicos secuenciales 21

0000

inc

0001
load load
x= 0 load load load x= 4 x= 5
x=1 x= 2x= 3 load
0100 0110 1000 1011 0011 0010

inc inc
inc 1001 1100
inc
inc

0101 0111 1010 Cero


Cero Cero
Cero Cero Cero

Figura 13.29. Diagrama de estados mediante secuenciador.

El contador registra el estado, y sus salidas están conectadas a las direcciones de la memoria. El
contenido de la memoria son los bits: C, I, L que están conectadas a las señales Cero,
Incrementar y Cargar del registro; además pueden grabarse en la memoria, los diversos bits de
salida que se requieran asociados a cada estado (esquema de Moore).

A continuación se presenta la tabla de transiciones, o programa del secuenciador, notando que la


información del próximo estado no se almacena en la memoria, se incorpora en la tabla sólo con
fines aclaratorios del funcionamiento:

Profesor Leopoldo Silva Bijit 19-01-2010


22 Sistemas Digitales

Estado Próximo C I L Salidas


0000 0001 0 1 0
0001 0 0 1
0010 0000 1 0 0
0011 0000 1 0 0
0100 0101 0 1 0
0110 0111 0 1 0
1000 1001 0 1 0
1011 1100 0 1 0
1001 1010 0 1 0
1100 0000 1 0 0
0101 0000 1 0 0
0111 0000 1 0 0
1010 0000 1 0 0

Figura 13.30. Programa del secuenciador.

Nótese que los nombres binarios de los estados se eligen para ocupar lo más eficientemente que
sea posible la señal de cuenta o incremento del contador.
Al estado 0000, se llega después del reset inicial. Si la naturaleza del proceso secuencial es
repetitiva, al terminar los diferentes recorridos de estados se retorna al estado inicial. Para esto
se emplea la señal Cero.

Estando en el estado 0001, de acuerdo a la entrada se discierne cuál es el próximo estado. En el


ejemplo existe sólo un estado para el cual existen múltiples bifurcaciones. Se requiere
almacenar la información de los próximos estados de acuerdo a los valores de las entradas, y
cuando se active la señal Load. Esta información se denomina Tabla de Despacho.

Entrada x Próximo estado.


000 0100
001 0110
010 1000
011 1011
100 0011
101 0010

Figura 13.31. Tabla de despacho.

Esta información puede codificarse en una ROM pequeña, o implementarse mediante un PLD.
Debe notarse que en la ROM del secuenciador no se almacena el próximo estado. Esto puede
significar un ahorro importante de memoria, si existe un pequeño número de estados con
múltiples bifurcaciones.
En caso de existir varios nodos con bifurcaciones, es preciso definir otras señales de carga, una
por cada nodo con bifurcaciones, y también igual número de tablas de Despacho. La señal Load
del contador es activada por el or de las señales de carga de las tablas de despacho.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 13. Bloques básicos secuenciales 23
Un esquema general de la arquitectura para diseño de máquinas secuenciales en base a un
secuenciador, se ilustra a continuación.
ROM
Próximo Estado
Contador
Tabla de
Despacho Carga Direcciones
Paralela Contenidos

L C Inc I C L Salidas
Entradas

Figura 13.32. Arquitectura para diseño mediante secuenciador.

13.5. Diseño de controladores.

Un uso frecuente de las máquinas secuenciales sincrónicas es ejercer control sobre dispositivos
asincrónicos con los que se desea intercambiar datos. Un ejemplo de esta situación es la
conexión de un sistema sincrónico con memorias o periféricos.

Especificación del dispositivo.

Para ilustrar consideraremos un dispositivo que genera datos. En la Figura 13.33, se muestra un
diagrama de bloques, indicando las señales de entrada y de salida.

comando
habilita datos
ocupado

Figura 13.33. Dispositivo a ser controlado.

Se envía un pulso de comando que inicia la actividad del periférico, luego de un tiempo el
dispositivo indica que está procesando el requerimiento con la señal ocupado; cuando los
nuevos datos generados por el dispositivo están listos para ser usados, se habilita la salida,
permitiendo de este modo que los datos estén disponibles en el bus de salida. Cuando la salida
está deshabilitada el bus de datos está en un estado de alta impedancia, lo cual permite que
varios dispositivos compartan el bus de datos.

El primer paso del diseño consiste en estudiar la hoja de datos del dispositivo, analizando los
requerimientos temporales. En la Figura 13.34 se muestran las formas de ondas con sus
especificaciones de tiempo.

Profesor Leopoldo Silva Bijit 19-01-2010


24 Sistemas Digitales
Asumiremos algunos valores de los parámetros para ilustrar el ejemplo.
El ancho del pulso del comando que da inicio a la actividad del dispositivo tiene que tener un
ancho mínimo dado por ta = 300 ns.

Luego del canto de bajada del pulso de comando, transcurre un tiempo de retardo hasta que el
dispositivo inicia su actividad, sea tr = 700 ns. Este tiempo es el máximo indicado por el
fabricante.

Posteriormente a tr, el dispositivo indica que comenzó a efectuar el procesamiento, y mantiene


alta la señal ocupado mientras dure el trabajo interno, sea este tiempo tp = 10 μs. Nótese que
este intervalo es mucho mayor que el indicado en el diagrama, lo cual se indica con una línea
quebrada en su parte superior.

Luego del canto de bajada de ocupado, debe habilitarse la salida, pero los datos estarán
disponibles luego de transcurrido el tiempo de acceso al bus, sea este tiempo tb = 250 ns. Luego
de esto se tienen nuevos datos válidos en el bus de salida, y se podría proceder a su captura. Una
vez almacenados los datos se deshabilita el bus, subiendo la señal habilita. El dispositivo aún
mantiene los datos en el bus un tiempo antes de entrar en flotación, sea este tiempo tf = 150 ns.

comando
ta
ocupado

tr tp

habilita
tb tf
datos validos

Figura 13.34. Requerimientos temporales.

Por otro lado se dispone de un sistema sincrónico que opera con un reloj de 5 MHz, lo cual
implica un período de reloj de 200 ns.

Deseamos diseñar una máquina de estados finitos o controlador que:


a) Acepte órdenes sincrónicas para grabar los datos generados por el dispositivo periférico.
b) Genere las señales de control para el dispositivo, cumpliendo las especificaciones temporales.
c) Encueste la respuesta asincrónica.
d) Permita conocer cuando la operación está realizada.

Especificación del sistema sincrónico.

La Figura 13.35, muestra el entorno del controlador. El sistema sincrónico genera las señal de
reset, para colocar en un estado inicial al controlador; la señal lea para iniciar la lectura; y recibe

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 13. Bloques básicos secuenciales 25
la señal capture, que se emplea para grabar los datos en el registro y como notificación de que la
operación se ha completado.

sistema controlador dispositivo


reset comando
lea habilita
capture ocupado

datos

clk

Figura 13.35. Entorno de diseño.

Debe notarse que las señales que interactúan entre el controlador y el sistema si bien están
sincronizadas por el mismo reloj, lo hacen en cantos diferentes. Esta elección se realiza para
garantizar el cumplimiento de las reglas de sincronización de los flip-flops del controlador y del
sistema, tanto en el tiempo de setup como en el de mantenimiento (hold). Lo cual se ilustra en el
diagrama de la Figura 13.36.

A la izquierda se muestran las señales lea o reset como pulsos de un ancho del reloj de
duración, sus cambios ocurren en los cantos de bajada del reloj, de este modo los flip-flops del
controlador tomarán muestras de sus entradas en los cantos de subida del reloj, instante en que
ambas señales estarán estables. A la derecha se ilustra que el registro que almacena los datos
tendrá su habilitación estable en el canto de bajada del reloj, ya que la señal capture, que
proviene del controlador, cambia entre cantos de subida del reloj.

lea o reset capture


clk clk

Figura 13.36. Entorno de diseño.

El dispositivo puede tener internamente un funcionamiento sincrónico, pero se asume que su


reloj es diferente del reloj del sistema, por esto se dice que la señal ocupado es asincrónica
respecto del controlador. Razón por la cual deberá ser sincronizada, esto lo lograremos haciendo
pasar esta señal por dos flip-flops Ds, antes de ser ingresada al controlador.

Diseño del controlador.

Lo primero que enfrentaremos será generar la señal de control comando, cumpliendo el


requisito del ancho mínimo del pulso. Como el reloj tiene un período de 200 ns, podemos crear
un pulso que dure 400 ns, lo cual cumple la especificación. En la Figura 13.37, se muestra la

Profesor Leopoldo Silva Bijit 19-01-2010


26 Sistemas Digitales
señal lea, que ha llegado después de un pulso de reset. En el estado inicial E0, debemos iniciar
la señal comando en nivel alto. Estando en E0, permanece en ese estado mientras la señal lea
esté baja. Estando en E0, cuando la señal lea se encuentra en alto, la red combinacional de
próximo estado genera el nuevo estado E1, el que se actualiza en el próximo canto de subida del
reloj, situación que se ilustra en la Figura 13.37, con el marcador a.
a b d

clk
lea

comando
E0 E1 E2 E3

Figura 13.37. Generación de señal de control comando.

Para lograr el requerimiento de ancho mínimo del pulso comando, debemos mantener baja esta
señal dos períodos del reloj, de este modo la señal tendrá un ancho de 400 ns, que es levemente
mayor al requisito de 350 ns como ancho mínimo. Lo anterior implica disponer de dos estados
E1 y E2, durante los cuales la señal comando esté en 0. La Figura 13.38, muestra la parte del
diagrama de estados que controla la generación de la señal comando, la cual se muestra con la
letra c, en el interior del estado del diagrama de Moore.
reset
E0
lea=0 c=1
lea=1
a
E1
c=0 ocupadoS=0
b
E2 E3
c=0 d c=1

Figura 13.38. Diagrama de estados para la señal de control comando.

Los estados E1 y E2 se emplean para temporizar, por esta razón no se requieren cambios de las
entradas para el cambio de estado. Los instantes en que se producen los cambios al estado E2 y
E3, se muestran con los marcadores temporales b y d, en la Figura 13.37.
El estado E0 se usa para esperar el canto de subida de lea; el estado E3 se emplea para esperar el
canto de subida de ocupadoS, donde esta señal representa la sincronización de la señal ocupado,
generada por el dispositivo asincrónico que se desea controlar. La señal ocupadoS en el peor
caso tiene un retardo de dos períodos de reloj respecto de la señal ocupado, ya que para
sincronizarla se la pasa por dos flip-flops Ds.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 13. Bloques básicos secuenciales 27
Para cumplir con los requerimientos de los flip-flops del controlador, la señal ocupadoS debe
ser sincronizada con los cantos de bajada del reloj.

La Figura 13.39 muestra la transición al estado E4, en el canto marcado con el identificador e.
Que corresponde al siguiente canto de subida en el que se ha sensado ocupadoS en alto.
e f g

clk
ocupadoS

habilita
capture
E3 E4 E5 E6 E0

Figura 13.39. Generación de habilita y capture.

Permanece en E4 hasta que llegue el canto de bajada de ocupadoS; luego en el canto de subida
del reloj, se pasa al estado E5, en el cual se genera el control habilita=0. Se decide generar la
señal capture en el estado siguiente E6, ya que como los datos se graban con el canto de bajada
del reloj, esto ocurrirá 300 ns luego del instante denominado f en el diagrama. Lo cual garantiza
que se tendrán datos válidos en el bus de tercer estado del dispositivo. Finalmente se requiere
deshabilitar la salida y terminar el registro de los datos, esto puede lograrse si el estado inicial
produce los controles: capture=0 y habilita =1. Esto permite la especificación del diagrama de
estado completo del controlador, que se muestra en la Figura 13.40.

reset
E0 E6
capture=1
lea=0 c=1 h=0
lea=1 g
a
E5
E1
h=0
ocupadoS=0
c=0
ocupadoS=0 f
b
E2 E3 e E4
c=0 d c=1 ocupadoS=1 h=1

ocupadoS=1

Figura 13.40. Diagrama de estados del controlador.

Profesor Leopoldo Silva Bijit 19-01-2010


28 Sistemas Digitales
Descripción del controlador en Verilog.

module controlador(clk, reset, lea, capture, habilita, comando, ocupado);


// Interfaz con el sistema sincrónico
input clk; // reloj del sistema
input reset;
input lea;
// Interfaz con el dispositivo asincrónico
input ocupado;
reg ocupado1, ocupadoS;
output capture, habilita, comando;
reg capture, habilita, comando;

// Estados internos
reg [2:0] estado;
reg [2:0] proximoestado;
// Declaraciones de estado
parameter E0 = 0;
parameter E1 = 1;
parameter E2 = 2;
parameter E3 = 3;
parameter E4 = 4;
parameter E5 = 5;
parameter E6 = 6;

always @ (negedge clk) //sincronización


begin
ocupado1 <= ocupado;
ocupadoS <= ocupado1;
end

always @ (posedge clk or posedge reset) //cambio de estado


begin
if (reset) estado <= E0;
else estado <= proximoestado;
end

always @ (estado or ocupadoS or lea) //Red de salida y próximo estado


begin
case (estado)
E0: begin
capture = 0; habilita = 1; comando=1;
if(lea) proximoestado = E1;
else proximoestado = E0;
end
E1: begin
capture = 0; habilita = 1; comando=0;

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 13. Bloques básicos secuenciales 29
proximoestado = E2;
end
E2: begin
capture = 0; habilita = 1; comando=0;
proximoestado = E3;
end
E3: begin
capture = 0; habilita = 1; comando=1;
if (ocupadoS) proximoestado = E4;
else proximoestado = E3;
end
E4: begin
capture = 0; habilita = 1; comando=1;
if (!ocupadoS) proximoestado = E5;
else proximoestado = E4;
end
E5: begin
capture = 0; habilita = 0; comando=1;
proximoestado = E6;
end
E6: begin
capture = 1; habilita = 0; comando=1;
proximoestado = E0;
end
default: begin
capture = 1; habilita = 0; comando=1;
proximoestado = E0;
end
endcase
end // always @ (estado or ocupadoS or lea)
endmodule // controlador

Simulación del controlador.

El siguiente módulo genera estímulos para simular funcionalmente el módulo controlador.

`timescale 1ns / 1ps

module test_v;
// Inputs
reg clk;
reg reset;
reg lea;
reg ocupado;
// Outputs
wire capture;

Profesor Leopoldo Silva Bijit 19-01-2010


30 Sistemas Digitales
wire habilita;
wire comando;
// Instantiate the Unit Under Test (UUT)
controlador uut (
.clk(clk),
.reset(reset),
.lea(lea),
.capture(capture),
.habilita(habilita),
.comando(comando),
.ocupado(ocupado)
);

initial begin
// Initialize Inputs
clk = 0; reset = 0; lea = 0; ocupado = 0;
// Wait 100 ns for global reset to finish
#100;

// Add stimulus here


reset=1; clk=0; #100; clk=1; #100;
reset=0; clk=0; #100; clk=1; #100;
clk=0; #100; clk=1; #100;
lea=1; clk=0; #100; clk=1; #100;
lea=0; clk=0; #100; clk=1; #100;
clk=0; #100; clk=1; #100;
clk=0; #100; clk=1; #100;
clk=0; #100; ocupado=1;clk=1; #100;
clk=0; #100; clk=1; #100;
clk=0; #100; clk=1; #100;
clk=0; #100; clk=1; #100;
clk=0; #100; clk=1; #100;
clk=0; #100; ocupado=0;clk=1; #100;
clk=0; #100; clk=1; #100;
clk=0; #100; clk=1; #100;
clk=0; #100; clk=1; #100;
clk=0; #100; clk=1; #100;
end

endmodule

Se generan las siguientes formas de ondas.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 13. Bloques básicos secuenciales 31

Figura 13.41. Simulación funcional del controlador.

Profesor Leopoldo Silva Bijit 19-01-2010


32 Sistemas Digitales

Problemas resueltos.

Problema 13.1. Contador

Se tiene un contador binario módulo 5 ascendente (Q2Q1Q0) y un contador binario módulo7


descendente (Q5Q4Q3), con Q3 y Q0 las cifras menos significativas.

a) Diseñar las ecuaciones del contador módulo 5 empleando flip-flops Ds.


b) Diseñar las ecuaciones del contador módulo 7 empleando flip-flops JKs.
c) Generar salida z, que se ponga alta cuando el contador módulo 5 pasa por la cuenta decimal
3, y que se ponga baja cuando el contador módulo 7 pase por la cuenta decimal 1. Si se
producen simultáneamente las cuentas anteriores, la salida debe pasar a cero.
d) Indicar mediante un esquema temporal, respecto de los estados de los contadores y del reloj,
cuando cambia la salida z.
Solución.
a) Para el contador binario módulo 5 ascendente:
Q2Q1
Q0 00 01 11 10
0 2 6 4
0 001 011 ΦΦΦ 000

1 3 7 5
1 010 100 ΦΦΦ ΦΦΦ

Q2+Q1+Q0+

Figura P13.1. Contador módulo cinco

D2 = Q2+ = Q1Q0 D1 = Q1+ = Q1Q0’ + Q1’Q0 D0 = Q0+ = Q2’Q0’

b) Para el contador binario módulo 7 descendente:


Q5Q4
Q3 00 01 11 10
0 2 6 4
0 110 001 101 011

1 3 7 5
1 000 010 ΦΦΦ 100

Q5+Q4+Q3+

Figura P13.2. Contador módulo siete

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 13. Bloques básicos secuenciales 33
Q5+ = J5Q5’ + K5’Q5 = Q5Q4 + Q5Q3 + Q5’Q4’Q3’; J5 = Q4’Q3’ K5 = Q4’Q3’
Q4+ = J4Q4’ + K4’Q4 = Q4Q3 + Q4’Q3’; J4 = Q3’ K4 = Q3’
Q3+ = J3Q3’ + K3’Q3 = Q4Q3’ + Q5Q3’; J3 = Q4 + Q5 K3 = 1

c) Las condiciones se obtienen según:


C3 = Cuenta 3 decimal del módulo 5 = Q2’Q1Q0
C1 = Cuenta 1 decimal del módulo 7 = Q5’Q4’Q3

La siguiente tabla muestra el estado de los contadores, los valores de los decodificadores de
cuenta igual a tres (C3), e igual a uno (C1). También se ilustra el estado de la salida,
considerando que desde el canto de subida de C3 la salida Z toma valor 1, y que Z toma valor
cero desde el canto de subida de C1.

Mod5 0 1 2 3 4 0 1 2 3 4 0 1 2 3 4 0 1 2 3 4 0 1 2 3
Mod7 0 6 5 4 3 2 1 0 6 5 4 3 2 1 0 6 5 4 3 2 1 0 6 5
C3 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1
C1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0
Z 0 0 0 1 1 1 0 0 1 1 1 1 1 0 0 0 0 0 1 1 0 0 0 1

Figura P13.3. Estados y salidas. Solución 1.

También se considera correcta la siguiente tabla que muestra los cambios de Z con los cantos de
bajada de las señales C3 y C1.

Mod5 0 1 2 3 4 0 1 2 3 4 0 1 2 3 4 0 1 2 3 4 0 1 2 3
Mod7 0 6 5 4 3 2 1 0 6 5 4 3 2 1 0 6 5 4 3 2 1 0 6 5
C3 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1
C1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0
Z 0 0 0 0 1 1 1 0 0 1 1 1 1 1 0 0 0 0 0 1 1 0 0 0

Figura P13.4. Estados y salidas. Solución 2.

La variable z, debe almacenarse en un flip-flop. No puede obtenerse en términos


combinacionales a partir de C1 y C3.

Lo anterior puede determinarse de varias formas, se consideran correctas, cualquiera de las


explicaciones siguientes:

c1) Observando un valor de uno de los contadores (por ejemplo la cuenta 4 del contador módulo
5), se aprecia que Z a veces es uno y otras es cero, ya que depende del valor anterior de Z.

c2) Si puede construirse una matriz de transiciones y Z+ depende del valor actual de Z.
En el caso que Z+ no dependiera de Z se trataría de una situación combinacional.

c3) Si se puede dibujar un diagrama de estados.

Profesor Leopoldo Silva Bijit 19-01-2010


34 Sistemas Digitales
Para confeccionar la tabla de transiciones, se asume que inicialmente z es cero. Entonces si C3 y
C1 son ceros, se conserva el estado de la salida z; si ambas son unos, entonces el próximo valor
de z es cero.
Cuando C3 pasa a 1 estando Z en 0, el próximo valor de Z será 1; y si era 1 permanece en ese
valor.
Cuando C1 pasa a 1 estando Z en 1, el próximo valor de Z será 0; y si era 0 permanece en ese
valor.

C3C1
z 00 01 11 10 0 ,11
Z=0
0 2 6 4
0 0 0 0 1

1 3 7 5 1 10
1 1 0 0 1
Z=1
0
z+

Figura P13.5. Matriz de transiciones.

La función secuencial queda: z+ = C3C1’ + C1’ z

Con flip-flop D resulta Dz = (Q2’Q1Q0 + z) (Q5 +Q4 +Q3’)

Con JK, resulta: Jz = C3C1’ = Q2’Q1Q0(Q5 +Q4 +Q3’) Kz = C1 = Q5’Q4’Q3

d) La implementación anterior conduce a las siguientes formas de ondas, donde z cambia con
los cantos de bajada de las señales C3 y C1. El próximo estado se calcula con los valores
actuales y toma su valor después del canto sincronizante.

clk

C3

C1

Figura P13.6. Formas de ondas.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 13. Bloques básicos secuenciales 35
Los diagramas se ilustran con flip-flops activados por canto de subida. La salida z, tiene su
canto de subida coincidente con el canto de bajada de C3, y su canto de bajada coincidente con
el canto de bajada de C1. La señal z es sincrónica, y su ancho de pulso es variable.

La implementación de cambios de z con los cantos de subida de C3 y C1, mediante flip-flops


JK o D, debe basarse en generar la señal C3 cuando el contador módulo 5 pase por la cuenta dos
(Q2’Q1Q0’), y la señal C1 cuando el contador módulo siete pasa por la cuenta dos (Q5’Q4Q3’).
También se consideran correctas soluciones basadas en latchs.

Alternativamente las señales C3 y C1 pueden emplearse para comandar un latch de nor (que
opera con cantos de subida), y tal que el comando set sea C3C1’, y el comando reset sea: C1.

clk R
C1 Z
C3

S
C1
C3C1’

Figura P13.7. Latch de nor.

En el largo plazo la señal z es periódica, después de 35 (5*7) pulsos del reloj, ambos contadores
pasan por cero simultáneamente.

Mod5 0 1 2 3 4 0 1 2 3 4 0 1 2 3 4 0 1 2 3 4 0 1 2 3 4 0 1 2 3 4 0 1 2 3 4 0
Mod7 0 6 5 4 3 2 1 0 6 5 4 3 2 1 0 6 5 4 3 2 1 0 6 5 4 3 2 1 0 6 5 4 3 2 1 0

Problema 13.2.

Diseño de máquina de estados.


Para el siguiente diagrama de estados, asumir que el estado inicial es el A, al cual se llega
reseteando asincrónicamente los flip-flops.
a) Explicar el objetivo de la máquina secuencial.
b) Determinar matriz de transiciones.
c) Determinar los estados adyacentes de acuerdo a las reglas de asignación. Indicar los nombres
binarios elegidos para cada estado lógico.
d) Determinar las ecuaciones de próximo estado y de salida.
e) Diseñar empleando flip-flops de tipo D, dibujando el esquemático.

Profesor Leopoldo Silva Bijit 19-01-2010


36 Sistemas Digitales

inicial 1/1

A 0/0
B
0/0

1/0
0/1

C
1/0

Figura P13.8. Problema 13.2.

Solución.
a) Se genera un uno en la salida después de una secuencia, de cualquier largo, de ceros o de
unos de la entrada.
Más específicamente, se genera salida uno cuando llega un:
uno en secuencias de uno o más ceros seguidos 01, 001, 0001, 00001, ....
cero en secuencias de uno o más unos seguidos 10, 110, 1110, 11110, ....

b) Se tiene
x
Estado 0 1
A B/0 C/0
B B/0 A/1
C A/1 C/0
Estado+

Figura P13.9. Matriz de transiciones Problema 13.2.

c) Regla 1: Deben ser adyacentes A con B; y A con C


Regla 2: Deben ser adyacentes: B con C, A con B, y A con C
Regla 3: Deben ser adyacentes A con B y A con C.
A debe ser el estado 00 para que se llegue a él, al resetear los flip-flops.
Asignación 1: B = 01; C = 10. Asignación 2: B = 10; C = 01.

Existen dos asignaciones posibles, que cumplen todas las reglas, excepto que B y C sean
adyacentes:

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 13. Bloques básicos secuenciales 37

Asig 1 x Asig 2 x
Q1Q0 0 1 Q1Q0 0 1
A=00 01/0 10/0 A=00 10/0 01/0
B=01 01/0 00/1 C=01 00/1 01/0
11 dd/d dd/d 11 dd/d dd/d
C=10 00/1 10/0 B=10 10/0 00/1
Q1+Q0+/z Q1+Q0+/z
Q1+ = x Q0’; Q0+ = x’Q1’ Q1+ = x’ Q0’ ; Q0+ = xQ1’
z = x’ Q1 + x Q0 z = x’Q0 +x Q1

Figura P13.10. Asignaciones Problema 13.2.

e) Para el diseño con la asignación 1, se tienen:


D1 = x Q0’ ; D0 = x’Q1’; z = x’ Q1 + x Q0

Se obtiene:
x

Q1
D1
Q1’

Q0
D0
Q0’

Figura P13.11. Esquemático Problema 13.2.

Para el diseño 2, con Q1 = x’ Q0’ ; Q0 = x Q1’ ; z = x’Q0 + x Q1 el esquemático es similar.

Problema 13.3.

Contador binario
Diseñar un contador binario con salidas sincrónicas, que cuente en forma ascendente si
C = 1; y en forma descendente si C = 0. Si M = 0 debe contar en módulo 5; si M = 1, debe
contar en módulo 7.
Si se cambian los controles, debe ir a la cuenta siguiente, en caso que ésta exista; si la cuenta no
existe debe ir a la cuenta 0.

Profesor Leopoldo Silva Bijit 19-01-2010


38 Sistemas Digitales
a) Escribir la matriz de transición para el contador en función de Q2, Q1, Q0, M y C.
b) Diseñar en base a flip-flops D las ecuaciones de próximo estado en función de Q2, Q1, Q0,
M=0 y C=0.
c) Diseñar en base a flip-flops J-K las ecuaciones de próximo estado en función de Q2, Q1, Q0,
M=1 y C=1.
d) Setear un latch de nand cuando el contador pase por la cuenta 3 y resetear el latch cuando el
contador pase por cuenta 0.

Solución:

a)
111 1 , 00
000 1

0, 11 001
0
01 01 1
00 0
10
110 010
10
01
0 1
11
101 0 0 011
11 100
1
Q2Q1Q0
CM

Figura P13.12. Diagrama de estados Problema 13.3.

CM
Q2Q1Q0 00 01 11 10
000 100 110 001 001
001 000 000 010 010
011 010 010 100 100
010 001 001 011 011
110 000 101 000 000
111 000 110 000 000
101 100 100 110 000
100 011 011 101 000
Q2+Q1+Q0+

Figura P13.13. Matriz de transiciones Problema 13.3.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 13. Bloques básicos secuenciales 39
b)
Q2Q1
Q0 00 01 11 10
0 2 6 4 Q2+ = Q2’Q1’Q0’ + Q2Q1’Q0 = D2
0 100 001 000 011
Q1+ = Q2’Q1Q0 + Q2Q1’Q0’ = D1
1 3 7 5
1 000 010 000 100 Q0+ = Q2’Q1Q0’ + Q2Q1’Q0’ = D2

Q2+ Q1+ Q0+

Figura P13.14. Diseño con M=0 y C=0 Problema 13.3.

c)
Q2Q1
Q0 00 01 11 10
0 2 6 4 Q2+ = Q2Q1’ +Q2’Q1Q0 = J2Q2’+K2’Q2
0 001 011 000 101
Q1+ = Q1’Q0 +Q2’Q1Q0’ = J1Q1’+K1’Q1
1 3 7 5
010 100 000 110 Q0+ = Q2’Q0’+Q1’Q0’ = J0Q0’+K0’Q0
1

Q2+ Q1+ Q0+

Figura P13.15. Diseño con M=1 y C=1 Problema 13.3.

J2 = Q1Q0 K2 = Q1
J1 = Q0 K1 = Q2 + Q0
J0 = Q2’ + Q1’ K0 = 1

d) La cuenta tres ocurre cuando Q2’Q1Q0 es 1.


Por lo tanto S’ = Q2 + Q1’ + Q0’ es la negación de la cuenta tres.
Cuando la cuenta tres tiene un canto de subida se desea que S’ tenga un canto de bajada.

La cuenta cero ocurre cuando Q2’Q1’Q0’ es 1. Por lo tanto R’ = Q2 + Q1 + Q0

La implementación con NAND, es: S’ = (Q2’ Q1 Q0)’ y R’ = (Q2’Q1’Q0’)’

Otra solución para d).


Sea L la salida del latch (usualmente denominada Q).

Estando L en cero, sólo pasa a uno cuando llega a la cuenta 3; estando en estado uno el latch
pasa a cero cuando entra a la cuenta cero. Se tiene entonces la matriz de transiciones siguiente:

Profesor Leopoldo Silva Bijit 19-01-2010


40 Sistemas Digitales

Q2Q1Q0
L 000 001 011 010 110 111 101 100
0 0 0 1 0 0 0 0 0
1 0 1 1 1 1 1 1 1
L+

Figura P13.16 Salida del latch Problema 13.3.

Empleando la siguiente tabla de excitaciones:


Q Q+ S’ R’
0 0 1
0 1 0 1
1 0 1 0
1 1 1

Figura P13.17. Tabla excitaciones Problema 13.3.

Se logran los programas para S’ y R’:


Q2Q1Q0
L 000 001 011 010 110 111 101 100
0 1 1 01 1 1 1 1 1
1 10 1 1 1 1 1 1 1
S’R’

Figura P13.18. Programas SR Problema 13.3.

Resultan: S’ = Q2 + Q1’ + Q0’ y R’ = Q2 +Q1 + Q0

Q2’ S’ L
Q1
Q0

Q2’ R’
Q1’
Q0’

Figura P13.19. Latch SR Problema 13.3.

Problema 13.4.

Se tiene el siguiente circuito:

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 13. Bloques básicos secuenciales 41

x
T Q1 D Q0
Flip-flop T Flip-flop D

clk

Figura P13.20. Esquemático Problema 13.4.

Si en t = 0 se tienen Q1 = 0 y Q0 = 0, con las siguientes formas de ondas:

clk

t=0

Figura P13.21. Formas de ondas Problema 13.4.

La señal x cumple las condiciones de set-up y hold.


a) Determinar las formas de ondas de Q1, Q0 y Z, relativas al clk y x.
b) Determinar la matriz de transiciones en el formato:
x
Q1Q0 0 1
00
01
11
10
Q1+ Q0+
Figura P13.22. Formato matriz de transición Problema 13.4.

Solución:
Del esquemático, se tienen:
T = X +Q0 ; D = Q1 ; Z = X + Q1
Ecuaciones de los flip-flops: Q1+ = T Q1 ; Q0+ = D
Reemplazando en las ecuaciones de los flip-flops, se obtienen:

Profesor Leopoldo Silva Bijit 19-01-2010


42 Sistemas Digitales
Q1+ = (X+Q0)Q1’ + (X+Q0)’Q1 = Q1’Q0 + Q1Q0’X’ + Q1’ X
Q0+ = Q1

Es un modelo de Meely.
Como los flip-flops operan con cantos de subida, se tiene la siguiente secuencia de entrada:
X = {0, 1, 0, 0, 1, 0 ..}
Se genera la secuencia de estados y salida:
Q1Q0/Z = 00/0, 10/1, 11/1, 01/1, 10/1, 11/1..}

x
Q1Q0 0 1
00 00/0 10/1
01 10/0 10/1
11 01/1 01/1
10 11/1 01/1
Q1+ Q0+/Z

Figura P13.23. Matriz de transición Problema 13.4.

Las formas de ondas de Q1 y Q0 muestran los retardos de propagación a través de los flip-flops.
El cual se considera despreciable respecto del período del reloj.

La forma de Z, ilustra la dependencia de la salida con la entrada, y también asume que el retardo
a través de la compuerta or, es despreciable respecto del período del reloj. Debe notarse que Z
cambia entre cantos de subida del reloj; es decir, no es una señal sincrónica, lo cual es
característico del modelo de Meely.

clk

t=0
Q1

Q0

Figura P13.24. Formas de ondas Problema 13.4.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 13. Bloques básicos secuenciales 43
Problema 13.5.

Se desea diseñar un contador con una entrada de control C, tal que:


Cuando C=0, el contador cuente en la secuencia: 000, 001, 010, 011, 100, 101, 110, 111.
Cuando C=1, el contador cuenta en la secuencia: 000, 001, 011, 010, 110, 111, 101, 100
El flip-flop más significativo es Q2; el menos significativo es Q0.
Q2 y Q1 son flip-flops Ds; y Q0 es flip-flop JK.
Las secuencias deben repetirse. Si cambia C durante la ejecución debe seguir contando según el
nuevo valor, no retorna al estado inicial. Estado inicial: 000
Determinar las ecuaciones para programar los flip-flops. No dibujar circuito.

Solución.
Matriz de transiciones:
Q2Q1
Q0C 00 01 11 10
0 4 12 8
00 001 011 111 101

1 5 13 9
01 001 110 111 000

3 7 15 11
11 011 010 101 100

2 6 14 10
10 010 100 000 110

Q2+, Q1+, Q0+


Figura P13.25. Matriz de transiciones Problema 13.5.

Hay dos diseños para D2:


Q2+ = Q2'Q1Q0C'+Q1Q0'C+Q2Q0'C'+Q2Q0C+Q2Q1'Q0 (o Q2Q1'C') =D2

Para D1:
Q1+ = Q1Q0'+Q2'Q0C+Q1'Q0C' =D1

Para el JK, se tiene:


Q0+=Q0'C'+Q2'Q1'C+Q2Q1C=Q0'(C'+Q2'Q1'C+Q2Q1C)+Q0( Q2'Q1'C+Q2Q1C)
Comparando coeficientes:
J0 = C'+Q2'Q1'C+Q2Q1C
K0 = ( Q2'Q1'C + Q2Q1C)'
Arreglando:
K0 = ( Q2+Q1+C')( Q2'+Q1'+C')

Profesor Leopoldo Silva Bijit 19-01-2010


44 Sistemas Digitales

Índice general.

CAPÍTULO 13 ............................................................................................................................................1
BLOQUES BÁSICOS SECUENCIALES.................................................................................................1
13.1. CONTADORES. ..................................................................................................................................1
13.1.1. Contador sincrónico binario módulo 4. ...................................................................................1
13.1.2. Contador sincrónico binario módulo 8. ...................................................................................3
13.1.3. Contador sincrónico binario módulo 16. .................................................................................5
13.1.4. Contador binario de ripple, con salida asincrónica. ...............................................................7
13.1.5. Contador de anillo (ring counter). ...........................................................................................8
13.1.6. Contador de Johnson. ..............................................................................................................9
13.1.7. Contador integrado 74163. ....................................................................................................10
13.1.8. Contador sincrónico binario módulo 32. ...............................................................................12
13.1.9. Contador sincrónico módulo 7. ..............................................................................................12
13.1.10. Contador sincrónico módulo 6. ............................................................................................13
13.2. REGISTROS DE DESPLAZAMIENTO. ..................................................................................................13
13.2.1 Usos. .......................................................................................................................................14
13.2.2. Ejemplo de diseño. .................................................................................................................14
13.2.3. Registro de desplazamiento a la derecha de largo 4. ............................................................15
13.2.4. Registros de desplazamiento TTL ..........................................................................................15
13.2.5. Registro universal 74194A. ...................................................................................................16
13.3. REGISTROS. ....................................................................................................................................18
13.3.1. Registro de almacenamiento. .................................................................................................18
13.3.2. Registro de desplazamiento....................................................................................................19
13.3.3. Diseño de máquinas en base a registros ................................................................................19
13.4. ALTERNATIVAS DE DISEÑO DE MÁQUINAS SECUENCIALES. ...........................................................19
13.4.1. Diseño basado en ROM. ........................................................................................................19
13.4.2. Diseño basado en PLD...........................................................................................................20
13.4.3. Secuenciador. .........................................................................................................................20
Ejemplo 13.1. .....................................................................................................................................20
13.5. DISEÑO DE CONTROLADORES. ........................................................................................................23
Especificación del dispositivo. ...........................................................................................................23
Especificación del sistema sincrónico................................................................................................24
Diseño del controlador. .....................................................................................................................25
Descripción del controlador en Verilog.............................................................................................28
Simulación del controlador. ...............................................................................................................29
PROBLEMAS RESUELTOS. ........................................................................................................................32
Problema 13.1. Contador...................................................................................................................32
Problema 13.2. ...................................................................................................................................35
Problema 13.3. ...................................................................................................................................37
Problema 13.4. ...................................................................................................................................40
Problema 13.5. ...................................................................................................................................43
ÍNDICE GENERAL. ....................................................................................................................................44
ÍNDICE DE FIGURAS .................................................................................................................................45

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 13. Bloques básicos secuenciales 45

Índice de figuras

Figura 13.1. Matriz transiciones contador módulo 4. .................................................................... 1


Figura 13.2. Matriz de transiciones contador módulo 4. ............................................................... 2
Figura 13.2.a. Esquemático contador módulo 4. ........................................................................... 2
Figura 13.3. Matriz de transiciones contador módulo 8. ............................................................... 3
Figura 13.4. Matriz de transiciones y diagrama de estados para contador módulo 8. ................... 3
Figura 13.5. Esquemático contador módulo 8 mediante JK. ......................................................... 4
Figura 13.6. Formas de ondas contador módulo 8. ....................................................................... 5
Figura 13.7. Matriz de transiciones contador módulo 16. ............................................................. 5
Figura 13.8. Esquemático contador módulo 8 mediante JK. ......................................................... 6
Figura 13.9. Formas de ondas contador módulo 16. ..................................................................... 6
Figura 13.10. Disminución fan-out. .............................................................................................. 7
Figura 13.11 Contador ondulado o de ripple. ................................................................................ 7
Figura 13.12. Formas de ondas contador ripple. ........................................................................... 8
Figura 13.13. Contador de anillo. .................................................................................................. 8
Figura 13.14. Formas de ondas contador de anillo. ....................................................................... 9
Figura 13.15. Contador de Johnson. .............................................................................................. 9
Figura 13.16. Formas de ondas contador Johnson. ..................................................................... 10
Figura 13.17. Esquemático contador 74163. ............................................................................... 11
Figura 13.17a. Especificación contador 74163. .......................................................................... 11
Figura 13.18. Contador sincrónico módulo 7. ............................................................................. 12
Figura 13.19. Contador sincrónico módulo 6. ............................................................................. 13
Figura 13.20. Transferencia entre dos flip-flops. ........................................................................ 14
Figura 13.21. Registro de desplazamiento a la derecha de largo 4. ............................................ 15
Figura 13.22. Formas de ondas en registro de desplazamiento. .................................................. 15
Figura 13.23. Registro universal Texas. ...................................................................................... 17
Figura 13.23a. Registro universal Philips.................................................................................... 18
Figura 13.24. Registro de almacenamiento. ................................................................................ 18
Figura 13.25. Registro de desplazamiento a la derecha de largo 4. ............................................ 19
Figura 13.26 Diseño basado en EPROM..................................................................................... 19
Figura 13.27. Diseño basado en PLD. ......................................................................................... 20
Figura 13.28. Operaciones del contador. ..................................................................................... 20
Figura 13.29. Diagrama de estados mediante secuenciador. ....................................................... 21
Figura 13.30. Programa del secuenciador. .................................................................................. 22
Figura 13.31. Tabla de despacho. ................................................................................................ 22
Figura 13.32. Arquitectura para diseño mediante secuenciador.................................................. 23
Figura 13.33. Dispositivo a ser controlado.................................................................................. 23
Figura 13.34. Requerimientos temporales. .................................................................................. 24
Figura 13.35. Entorno de diseño. ................................................................................................ 25
Figura 13.36. Entorno de diseño. ................................................................................................ 25
Figura 13.37. Generación de señal de control comando. ............................................................ 26
Figura 13.38. Diagrama de estados para la señal de control comando. ....................................... 26
Figura 13.39. Generación de habilita y capture. ......................................................................... 27
Figura 13.40. Diagrama de estados del controlador. ................................................................... 27

Profesor Leopoldo Silva Bijit 19-01-2010


46 Sistemas Digitales
Figura 13.41. Simulación funcional del controlador. .................................................................. 31
Figura P13.1. Contador módulo cinco ......................................................................................... 32
Figura P13.2. Contador módulo siete .......................................................................................... 32
Figura P13.3. Estados y salidas. Solución 1. ............................................................................... 33
Figura P13.4. Estados y salidas. Solución 2. ............................................................................... 33
Figura P13.5. Matriz de transiciones. .......................................................................................... 34
Figura P13.6. Formas de ondas. .................................................................................................. 34
Figura P13.7. Latch de nor. ......................................................................................................... 35
Figura P13.8. Problema 13.2. ...................................................................................................... 36
Figura P13.9. Matriz de transiciones Problema 13.2. .................................................................. 36
Figura P13.10. Asignaciones Problema 13.2. .............................................................................. 37
Figura P13.11. Esquemático Problema 13.2................................................................................ 37
Figura P13.12. Diagrama de estados Problema 13.3. .................................................................. 38
Figura P13.13. Matriz de transiciones Problema 13.3. ................................................................ 38
Figura P13.14. Diseño con M=0 y C=0 Problema 13.3. ............................................................. 39
Figura P13.15. Diseño con M=1 y C=1 Problema 13.3. ............................................................. 39
Figura P13.16 Salida del latch Problema 13.3............................................................................. 40
Figura P13.17. Tabla excitaciones Problema 13.3. ..................................................................... 40
Figura P13.18. Programas SR Problema 13.3. ............................................................................ 40
Figura P13.19. Latch SR Problema 13.3. .................................................................................... 40
Figura P13.20. Esquemático Problema 13.4................................................................................ 41
Figura P13.21. Formas de ondas Problema 13.4. ........................................................................ 41
Figura P13.22. Formato matriz de transición Problema 13.4. ..................................................... 41
Figura P13.23. Matriz de transición Problema 13.4. ................................................................... 42
Figura P13.24. Formas de ondas Problema 13.4. ........................................................................ 42
Figura P13.25. Matriz de transiciones Problema 13.5. ................................................................ 43

Profesor Leopoldo Silva Bijit 19-01-2010


1

Capítulo 14

Máquinas secuenciales asincrónicas.

Se estudiarán algunos circuitos asincrónicos simples que son la base para construir los
diferentes tipos de flip-flops; mostrando las técnicas para lograr la sincronización mediante una
señal de reloj. Luego se analizan los multivibradores aestable y monoestable.
Se analizan en mayor profundidad las carreras y la forma de evitarlas; para finalmente ilustrar
las técnicas de diseño asincrónico basadas en diagramas de flujo y de estado.

14.1 Bases electrónicas para almacenar bits.

Puede almacenarse un nivel lógico como carga en un condensador. El transistor nmos permite
cargar y descargar el condensador, el esquema tiene la ventaja de usar un solo transistor, pero
debido a las fugas (por no ser el dieléctrico ideal) se requiere refrescar la carga cada cierto
tiempo. Es la configuración que se emplea como base de las memorias dinámicas (DRAM).

Vin
C

Vref

Figura 14.1 Almacenamiento en memorias dinámicas.

Para mantener el almacenamiento de un bit en forma permanente (mientras se tenga fuentes


aplicadas) se emplea la siguiente configuración:

Figura 14.2 Almacenamiento estático.

Profesor Leopoldo Silva Bijit 19-01-2010


2 Sistemas Digitales
Que es un elemento de almacenamiento biestable. El empleo de compuertas restaura los niveles,
lo cual permite el almacenamiento estático. La siguiente configuración ilustra que se requieren
cuatro transistores para almacenar un bit (dos por cada inversor), por esta razón las memorias
estáticas SRAM son de mayor costo que las dinámicas.

VDD

Vin1 Vout1 Vout2


Vin2

Figura 14.3 Inversores CMOS realimentados.

La característica de transferencia de los dos inversores en cascada se muestra junto a la recta


que debe satisfacerse por la restricción que impone la conexión de la realimentación. El
amplificador, no inversor, tiene tres puntos de equilibrio posibles, el del centro es inestable; los
otros son estables (por esto se dice biestable) y se emplean para almacenar los estados lógicos.
Una pequeña diferencia entre la recta y la curva, en torno al punto inestable, llevan rápidamente
a una de las situaciones estables. Se producen “saltos” entre las curvas para mantener voltajes
iguales en la entrada y salida; éstos se ilustran con pequeñas flechas entre las curvas, en la
Figura 14.3a.
Vin = Vout
Vout

Vin

Figura 14.3a. Puntos de equilibrio.

Otra forma de analizar los inversores realimentados puede lograrse dibujando las características
de transferencia de cada transistor, en un solo par de ejes coordenados.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 14. Máquinas secuenciales asincrónicas 3

Vin2 Vout1

Vout2

Vin1

Figura 14.3b. Características de transferencia individuales.

La probabilidad de que en una transición se llegue exactamente al estado inestable es muy baja.

14.1.1. Metaestabilidad.

Calcularemos la probabilidad de no llegar a un estado estable en un determinado tiempo.


Asumiendo un amplificador lineal, con saturación, las ecuaciones para el siguiente circuito son:
Vout = A Vin; Vout - Vin = Ri; i = C (dVin/dt), esto considerando que la corriente de salida del
amplificador sólo circula por el condensador, como se ilustra en la siguiente figura:

Vout
V
Vout Vin Vin
R
A C
t
Con Vin(0) diferente de cero. T
lineal

Figura 14.4 Análisis metaestabilidad.

Cuya solución es: Vin(t) = Vin(0) e t/ con = RC/(A-1). Además, en general Vout será mayor
que Vin, debido a la amplificación. Por esta razón si el voltaje de entrada aumenta, también lo
hará el de salida y se tendrá que después de un tiempo la tensión de salida satura al
amplificador.

A pesar que el circuito tiene realimentación positiva podría suceder que una determinada
conmutación no se produzca en un tiempo predeterminado. Para estudiar esto suponemos un
modelo simplificado lineal, antes que se sature el amplificador. En ese caso, tendremos:
Vin(T) = Vin(0) e T/
Vout(T) = A Vin(0) e T/ = V es decir, la salida se satura en T = ln( V/( AVin(0) ).

Con Vin(0) < V e -T/ /A, la salida Vout se saturará en un tiempo mayor que T. Entonces la
probabilidad de no llegar a un estado estable en un tiempo T, es el cuociente entre las

Profesor Leopoldo Silva Bijit 19-01-2010


4 Sistemas Digitales
situaciones que cumplen la condición dividido por todos los casos independientes que puedan
presentarse. Es decir:
p(no estable en T) = (V e -T/ /A ) / V = e -T/ /A

Se asume que Vin(0) tiene una distribución de probabilidad uniforme entre 0 y V. Puede
imaginarse un gran número de experimentos, algunos de ellos comenzarán con un valor menor
del voltaje inicial que el calculado antes y tomará un tiempo mayor que T para que la salida se
sature en un valor estable, esto se considera un ensayo fallido; los experimentos que comienzan
con un valor mayor se consideran exitosos.
Por otra parte, en un determinado intervalo las conmutaciones se producen en una fracción del
tiempo; esto contempla que no todo el tiempo se están efectuando transiciones. Sea f la fracción
del período del reloj durante la cual el voltaje de entrada esté sufriendo una transición. f se
expresa como el cuociente de lo que dura una transición, dividido por el intervalo entre
transiciones, y es la probabilidad que el voltaje de entrada esté efectuando una transición.
Entonces la probabilidad que en una transición, no se llegue a estado estable en un tiempo T,
queda dada por: p(transición no estable en T) = f e -T/ /A

Con los siguientes valores: A = 10 (una ganancia razonable), con una constante de tiempo de 1
nseg, con f = 0,1; y una frecuencia de cambios de 100MHz puede calcularse el valor de T para
cumplir con cierta probabilidad.
Si asumimos un caso en un año, en que no se alcance el estado estable en T, podremos calcular
el tiempo T. Se asume 100*106 cambios por segundo (sólo cantos de subida o de bajada), en
un año se tendrán: 365*24*60*60 segundos, y por lo tanto:
p = 1/ (3,15 *1015) resulta T = 31 ns.
Con una frecuencia de 100 MHz, y esperando 100 ns, se puede calcular que habrá un caso en
que no se llegue a estabilidad en 1030 años. Puede concluirse que con "buena" probabilidad no
se entra al estado inestable.

14.1.2. Latchs.

Entonces tenemos que dos inversores forman una celda de memoria estática, lo que resta es un
método para almacenar valores lógicos en la celda:
El siguiente esquema ilustra la forma de hacer llegar valores y guardarlos en una celda estática.

cargar
dato valor almacenado

grabar
Figura 14.5 Lectura y escritura.

Existen dos circuitos que cumplen los requerimientos anteriores, y se denominan latch (cerrojo,
picaporte, pasador); uno en base a NAND , el otro en base a NOR. La denominación de las
entradas se explicará más adelante.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 14. Máquinas secuenciales asincrónicas 5

S' R
Q Q

Q' Q'
R' S

Figura 14.6 Latch mediante NANDs y NORs.

Los siguientes diagramas muestran valores estables almacenados en las celdas estáticas de 1 bit,
o latchs.
1 1 1 0 0 0
1 0

0 1 1 0 0 1
1 0

Figura 14.7 Valores estáticos almacenados.

14.2. Latch asincrónico S-R. (Latch de NAND)

14.2.1. Esquemático.

Se tiene el siguiente circuito:


Q
S' q
S
qn
R'
R

Qn

Figura 14.8 Variables en latch de NANDs.

Se emplea el nombre latch para referirse a una memoria de un bit, y cuando no existe una señal
de reloj. En éstos, las salidas cambian cuando las entradas cambian. En flip-flops las salidas
cambian respecto al reloj.

Las compuertas se asumen ideales. Y se modela el retardo de propagación, mediante una


componente externa.

Profesor Leopoldo Silva Bijit 19-01-2010


6 Sistemas Digitales
14.2.2. Variables.

Apenas ocurran cambios en las entradas de las compuertas (R', S', q y qn) se producirán
simultáneamente los cambios en las salidas Q o Qn, ya que se asume que estas compuertas no
tienen retardo.
El próximo valor que toma q, después de S, será el valor de Q. Dicho de otra forma: el valor
presente de Q será el próximo valor que tome q. Análogamente para Qn.

Analíticamente: Gráficamente:
Q(t)
Q(t) = q(t + S)

Qn(t) = qn(t + R) to t
q(t)

Se tienen: q(t) = Q(t - S)


qn(t) = Qn(t - R) to t

Figura 14.9 Valores presente y próximo, en el tiempo.

Denominaremos:
estado presente al conjunto: {q, qn}
estado próximo al conjunto: {Q, Qn}
Salida al estado presente (máquina de Moore).

Debido a que, como se verá, los eventos que inician los cambios están asociados a los cantos de
bajada de las señales de entrada, se las denomina S´ y R´, siguiendo el convenio general para
identificar a señales de lógica negativa.
En el esquema general de máquina secuencial:

x FPE FS

Y y z

Figura 14.10 Retardos como memorias de corto plazo.

Se destaca que los retardos pueden considerarse como una memoria de corto plazo.
Memorizan el valor anterior de una entrada al bloque de retardo, durante segundos.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 14. Máquinas secuenciales asincrónicas 7
Para estudiar el circuito secuencial se emplea un diagrama de estados o una matriz de
transiciones.

14.2.3. Ecuaciones.

En el caso del latch de nand, se tienen las siguientes ecuaciones asociadas a la red
combinacional ideal:
Q = (S' qn)' = S''+qn' = S + qn'

Qn = (R' q)' = R'' +q' = R + q’

14.2.4. Matriz de transiciones.

Representándolas en un mapa, se logra la matriz de transiciones siguiente:


S'R'
q qn 00 01 11 10
0 4 12 8
00 11 11 11 11
1 5 13 9
01 11 11 01 01

3 7 15 11
11 11 10 00 01
2 6 14 10
10 11 10 10 11

Q, Qn
Figura 14.11 Matriz de transiciones del latch de NAND.

En la matriz de excitaciones o tabla de transiciones está toda la información para analizar el


latch. Se denomina de excitaciones, notando que las columnas describen las señales de entrada o
estímulos. Matriz de transiciones hace referencia al hecho de que el contenido de cada columna
muestra las transiciones al estado próximo.

Si las entradas no cambian, se está en una de las columnas. Un cambio de una de las entradas
implica un cambio de columna. En una determinada columna, si el próximo estado es igual al
estado presente, se dice que ese estado es estable. En caso contrario, se produce una transición
o cambio de estado.

Suelen encerrarse, con círculos, los estados estables.

Profesor Leopoldo Silva Bijit 19-01-2010


8 Sistemas Digitales
En el diagrama se aprecian tres estados estables. Si el objetivo es usar el circuito para emplearlo
como memoria de un bit (flip-flop), no deberá usarse el estado estable 11; para lo cual basta
restringir que ambas entradas puedan ser cero simultáneamente.

14.2.5. Modo fundamental de operación.

Para simplificar el análisis se define un modo fundamental de operación. En el cual, las


entradas pueden cambiarse sólo cuando se está en estado estable; y sólo un cambio de una
entrada por vez. Otra forma de plantearlo es que los cambios ocurran con una separación
mínima en el tiempo; pero no concurrentes.

Si el próximo estado es inestable ocurre una transición, o cambio de estado.

Si dos o más variables de estado deben cambiar, se dice que se produce una “carrera”.

Se denomina “ciclo” a la ocurrencia de una secuencia de dos o más estados inestables.

Si la carrera origina diferentes transiciones (dependiendo de qué entrada cambia primero), pero
finalmente se llega a un mismo estado estable, la carrera se denomina no crítica. Si se llega a
estados estables diferentes es una carrera crítica.

Si nunca se llega a estados estables, se denomina oscilación.

14.2.6. Diagrama de estados.

La información de la matriz de transiciones puede verse también con un diagrama de estados:


11,10
11/01
10 01

01 00,10 00,01
10
11
00
11,10,01,00
11

00

Figura 14.12. Diagrama de estados del latch de NAND.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 14. Máquinas secuenciales asincrónicas 9
14.2.7. Secuencias de interés

Con la condición S'+R'=1, el sistema sólo puede estar en uno de los dos estados estables, que
llamaremos set y reset. En este caso, y una vez terminadas las transiciones, se cumple que qn es
q'.
set = {q = 1, qn = 0}

reset = {q = 0, qn = 1}

Nos interesa estudiar secuencias de las entradas, que llevan de un estado estable al otro. Y que
no se ocupe el estado estable 11, ya que en este caso qn no es la negación lógica de q.
a) Transición set a reset

Entradas en S'=1, R'=1; estado inicial: q=1, qn=0.


Se analiza cuando ocurre un canto de bajada en R':

S'R' S' t
q qn 00 01 11 10
0 4 12 8
00 11 11 11 11 R' t

1 5 13 9
01 11 11 01 01 Q
t
3 7 15 11
11 11 10 00 01 Qn t
S
2 6 14 10 q
10 11 10 10 11 t

qn
R t
Q, Qn
R S
set | | reset
.
Figura 14.13 De set a reset.

Las salidas Q, Qn pasan por la secuencia: 10, 11, 01


El estado q, qn pasa por la misma secuencia, pero con retardo: 10, 11, 01

Después de R más S se produce el cambio a reset.


Durante un corto tiempo, S, se pasa por estado 11. Que no es set ni reset.
Las entradas no pueden cambiar, cuando se están produciendo cambios en el estado interno; es
decir cuando están cambiando las señales q y qn.

Profesor Leopoldo Silva Bijit 19-01-2010


10 Sistemas Digitales

Estando en reset, un canto de subida en R', no produce cambios. Tampoco se producen cambios
de estado con pulsos en R'. Sólo responde al primer canto de bajada en R', estando en set.
b) Transición de reset a set
Estado inicial: q=0, qn=1. Entradas en S' = 1, R' = 1. Se analiza cuando ocurre un canto de
bajada en S'.
R'
S'R' t
q qn 00 01 11 10
0 4 12 8 S'
00 11 11 11 11 t

1 5 13 9
01 11 11 01 Qn
01 t

3 7 15 11 Q
11 11 10 00 01 t
S
2 6 14 10 qn
t
10 11 10 10 11 R
q
t
Q, Qn
S R

reset | | set
Figura 14.14 De set a reset.

Cuando ocurre canto de bajada de S', estando en reset, después de un tiempo ( S + R) se


llega al estado set.
Estando en set, un canto de subida en S', no produce cambios. Tampoco pulsos en S',
cambian el estado.
Análisis del estado 11 en latch S-R
Con entradas S'=0 y R'=0, después de un tiempo el sistema permanece en estado estable q=1,
qn=1. Pero no es set, ni reset.

a) Si ocurre un canto de subida en S'.


Se tiene S' = 1, R' = 0 y se pasa en forma confiable a reset. Ya que cambia una variable de
estado por vez.

b) Si ocurre un canto de subida en R'.


Se tiene S' = 0, R' = 1 y se pasa en forma confiable a estado set.

c) Si cambian simultáneamente S' y R' a 1.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 14. Máquinas secuenciales asincrónicas 11
Pueden suceder 3 casos, considerando “carreras” en las entradas.
c1) S'R' pasa por secuencia: 00, 10, 11
Se llega a reset. S'

R'

mayor que S

Figura 14.15 S’ adelanta a R’.

c2) S'R' pasa por secuencia: 00,01, 11


Se llega a set. S'

R'

mayor que R

Figura 14.16 R’ adelanta a S’.

c3) Cambio simultáneo: 00, 11


S'
Se produce oscilación.

R'

Figura 14.17. S’ y R’ llegan juntas.

Si se excitan ambas variables de estado a la vez, dependiendo de los retardos de las compuertas
puede que una u otra cambie primero, (pero no se queda en un estado estable) ya que
inevitablemente se producirá el cambio de la más lenta. En cualquier caso se llega a un estado
inestable en que ambas variables de estado vuelven a excitarse, generando una oscilación.

En los casos c1 y c2 (con tiempo entre cantos de subida menores que los retardos) también se
producen problemas; ya que las entradas cambian durante las transiciones internas. Para evitar
esta incertidumbre, se suele evitar el estado 11. Esto se logra con la condición S'+R'=1. (Es
decir, que ambas entradas no estén simultáneamente en cero). Además, en estas circunstancias
(caso c), el latch cambia con cantos de subida.
Normalmente se ocupan 8 de los 16 casilleros de la matriz de transición. Las transiciones de set
a reset y viceversa que se analizaron antes.

14.2.8. Funcionamiento restringido.

Si se cumple la condición para funcionamiento confiable, Qn se puede anotar como Q'.


Las casillas del mapa por las que nunca se pase, pueden ser consideradas superfluas.

Profesor Leopoldo Silva Bijit 19-01-2010


12 Sistemas Digitales
Entonces puede escribirse: Q = S'' + q R' + q qn'
El último término sólo interviene cuando q = 1, qn = 0, S' = 1 y R' =0; pero esta situación es
transitoria, en forma estable queda q = 0 y qn = 1, por esta razón puede no considerarse al
plantear la ecuación del próximo estado. De este modo resulta, usando notación abreviada,
reemplazando q por Q y Q por Q+:
Q+ = SQ' + R' Q, formando los grupos: (0, 1, 4, 5) y (6, 7, 14, 15).

S'R'
q qn 00 01 11 10
0 4 12 8
00
1 5 13 9
01 11 01 01
3 7 15 11
11 10 01
2 6 14 10
10 10 10 11

Q, Qn
Figura 14.18. Matriz de transiciones en modo confiable.

Nótese que también puede escribirse, agrupando (0,1,2,3,4,5,6,7) y (6,7,14,15): Q+ = S + R'Q


Tanto las tablas como la ecuación característica, pueden obtenerse conceptualmente a través del
funcionamiento normal del circuito, sin usar la matriz de transiciones.

La ecuación característica puede plantearse según:

Q(k+1) = S(k) + R'(k)Q(k)

Nótese que esta expresión puede obtenerse a partir de: Q = S + qn’ y Qn = R + q’ deducidas
anteriormente, si se hace Qn = qn, y se eliminan estas variables.

La tabla característica, para el latch SR, pueden plantearse:

S' R' Q(k+1)


1 1 Q(k)
1 0 0
0 1 1
0 0 ?

Figura 14.19. Tabla característica S-R.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 14. Máquinas secuenciales asincrónicas 13
Con S' + R' = 1:
No cambia de estado con entradas altas. Pasa a reset con canto de bajada en R'.
Pasa a set con canto de bajada en S'. Entradas bajas causan indeterminación.

La tabla de excitaciones, para el latch SR, puede plantearse:


Q(k) Q(k+1) S' R'
0 0 1
0 1 0 1
1 0 1 0
1 1 1

Figura 14.20. Tabla de excitaciones parta S-R.

Si está en reset: permanece en reset si ocurren pulsos en R'; pasa a set con canto de bajada de S'.
Si está en set: permanece en set si ocurren pulsos en S'; pasa a reset con canto de bajada de R'.

Resumen Latch de NAND:


Con: S'+R' = 1
a
S' Q S'

b a >

Q' R'
b >
R’
Q = S+ R

Figura 14.21 Resumen funcionamiento latch de NANDs..

Normalmente S' y R' están en uno lógico, un pulso de corta duración en una de las entradas
produce el correspondiente cambio de estado. La duración del pulso debe ser mayor que el
retardo de ambas compuertas. El evento que inicia la conmutación es el canto de bajada.
Ambas entradas no pueden ser ceros.

El latch de NAND recuerda la última entrada que tuvo un canto de bajada.

14.2.9. Análisis simplificado.

Puede inferirse el funcionamiento del latch de NAND, mediante un análisis simplificado, éste
consiste en asumir una sola variable de estado:

Profesor Leopoldo Silva Bijit 19-01-2010


14 Sistemas Digitales

R' S'
Q

S
R
q

Figura 14.22 Análisis con un retardo.

Se tiene para el próximo estado, asumiendo ambas compuertas ideales, que:


Q + = ((R' q)' S')' = S + R' q
Nótese que el retardo de q, respecto de Q, es ahora ( S + R).
La matriz de transiciones resulta:
S'R'
q 00 01 11 10
0 3 6 4
0 1 1 0 0

1 2 7 5
1 1 1 1 0

Q+
Figura 14.23. Matriz de transiciones con un solo retardo.

Y el diagrama de estados asociado se muestra a continuación:

11,01,00
11/10
0 00,01 1

10
Figura 14.24. Diagrama de estados simplificado.

Sin embargo esta simplificación no muestra los problemas del estado 11, y los riesgos de
oscilación al tener ambas entradas bajas. Esto se debe a que el efecto de la carrera entre las
entradas no se puede observar con un modelo obtenido con sólo un retardo de propagación, en
el cual sólo puede observarse Q. Puede restringirse la columna 00, y colocar próximos estados
superfluos.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 14. Máquinas secuenciales asincrónicas 15
14.2.10. Simulación de circuitos asincrónicos.

La simulación de estos circuitos, presenta problemas a los programas simuladores. Pero puede
emplearse el siguiente esquema:

V1
Init
S' Q
V2
1

Qn
V3 R'
1

Figura 14.25. Diagrama para simular un latch.

Si se marca el cuadro de mostrar el estado de las líneas, se verán todas no iniciadas o en tercer
estado, esto en el simulador. Si se hiciera correr la simulación, mostraría una oscilación en el
estado.

Para evitar un estado inicial indeterminado, se emplea un nand de tres entradas.


Donde el switch V1 se emplea para dejar en un estado inicial, para esto basta comenzar la
simulación con V1 = 0, y luego de algunos ticks (basta uno) se pasa V1 a uno. El flip-flop queda
en set (1).

Init
Qn
Q
R'
S'
1 2 3 4 5
Figura 14.26. Formas de ondas generadas en la simulación.

Si se generaran pequeños pulsos en S, mediante V2, no se producen cambios de estado.

Un pulso en R, inicia el cambio de estado (2). La simulación muestra los retardos entre las
señales que conmutan. Posteriores pulsos en R, no modifican el estado. No importa la duración
de estos pulsos.
Un canto de bajada en S', inicia el cambio a set (3). Posteriores pulsos en S, no modifican el
estado. No importa la duración de estos pulsos (4).

Estando en set, un pulso angosto de reset (5), en el caso de la figura de un tic, que también es la
propagación de una compuerta, confunden al simulador y se inicia una oscilación. Sucede que

Profesor Leopoldo Silva Bijit 19-01-2010


16 Sistemas Digitales
se efectúa un cambio en las entradas antes de que hayan ocurrido todas las transiciones
asociadas al cambio de las entradas; es decir, no se cumple la condición para trabajar en modo
fundamental de operación.

Las siguientes formas de ondas ilustran el funcionamiento no deseado del latch:

Init
Qn
Q
R'
S'
1 2 3
Figura 14.27. Oscilación en latch de NAND.

Si se excita con R'=0 y S'= 0, pasa a estado 11 (1).


Se muestra el efecto de un canto de subida en S' (2). En estas condiciones habría cambio de
estado con canto de bajada y también de subida, lo cual no es deseable.
Un cambio simultáneo de ambas entradas a uno (3), produce oscilación.

14.2 Elimina rebotes (debounce)

Una aplicación común del latch de NAND es eliminar los rebotes mecánicos que se producen
en un interruptor. El siguiente circuito ilustra el funcionamiento.
5V

S'
2.2k

1 Q
S1 5V

2.2k Qn
R'
1

Figura 14.28. Elimina rebotes.

Se colocan resistencias de pull-up para fijar un uno lógico en las entradas al aire. Se emplea un
interruptor de dos posiciones. Se denomina SPDT (polo simple, doble garganta), es decir existe
un punto común, por donde se ingresa la señal, y normalmente un contacto está cerrado
(obviamente el otro está abierto). Se marcan NO (normaly open) y NC (normaly closed).

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 14. Máquinas secuenciales asincrónicas 17
Al operar el interruptor se produce un movimiento mecánico que impactará al conector en la
otra posición. En forma microscópica, y debido a choques semi-elásticos, se producen rebotes.
Pueden ser varios rebotes, el proceso mecánico termina después de 5 mseg aproximadamente.

El contacto móvil no produce problemas al despegarse del otro contacto.


La forma de onda en el interruptor, al hacer contacto, exhibe un canto de bajada seguido de
varios pequeños pulsos hasta que se estabiliza en un valor cero, esto debido a que el interruptor
ha dejado de moverse. Entre el primer canto de bajada y el primer canto de subida debido a los
rebotes transcurren 500 nanosegundos aproximadamente. Pero este tiempo es mucho mayor que
el de propagación a través de dos compuertas. En la figura anterior se está en set, al cambiar el
interruptor, el latch conmuta y permanece en reset, ya que absorbe múltiples pulsos en reset.
Igual cosa sucede al volver a operar el interruptor, se cambiará de estado a pesar de los rebotes.
Las salidas Q y Qn están libres de rebotes.

Este elimina rebotes requiere un interruptor de tres terminales, que suele denominarse SPDT.
Existen otros diseños, basados en interruptores de dos terminales (SPST simple polo, simple
throat), que pueden conectar o desconectar dos puntos.

14.3 Sincronización de un S-R

El esquema siguiente ilustra cómo se agrega un reloj a un latch SR, en base a NAND.
Mientras enable esté bajo, las señales S' y R' estarán en uno, por lo que cumplen las condiciones
para funcionamiento normal del latch.
Se ilustran señales de preset' y clear', de lógica negativa, que permiten dejar en un estado inicial
al latch. Su operación sobrepasa a las excitaciones S' y R', en este sentido se dicen que son
asincrónicas con ellas, apenas ocurra un canto de bajada en estas señales, el latch permanecerá
en un estado determinado hasta liberar el control asincrónico, llevándolo a uno. Al igual que con
las señales R’ y S’, debe evitarse mantener preset’ y clear’ en cero al mismo tiempo.

preset'
Set
S'
Q

enable
Q'
R'

clear'
Reset

Figura 14.29. Sincronización. Empleo de señal de reloj.

Profesor Leopoldo Silva Bijit 19-01-2010


18 Sistemas Digitales
Ahora cuando enable tenga un canto de subida dejará pasar las excitaciones externas Set y
Reset, hacia las entradas del latch S' y R'.

También puede pensarse que enable es una señal de reloj, que sincroniza al latch. En esta
situación, las entradas Set y Reset deben ser estables antes de un canto de subida del reloj. En el
canto de subida se inspeccionan las entradas y después de un tiempo de propagación, ocurre el
canto de bajada en S' o R'. Lo cual implica que para funcionamiento determinístico, no pueden
estar altas ambas entradas externas. Si se cumplen estas condiciones, sólo podrá existir un canto
de bajada en S' o R', garantizando la operación del latch SR.

Se ilustran las formas de ondas para un funcionamiento normal:

clk

Set

S'

Figura 14.30 Funcionamiento normal.

La señal S’ es sincrónica con clk; Set es asincrónica con respecto a clk.

14.4. Latch asincrónico S-R. (Latch de NOR)

14.4.1. Esquemático.

Se tiene el siguiente circuito:


R
Q
qn

q
Qn
S

Figura 14.31. Latch de NOR.

Las compuertas se asumen ideales. Y se modela el retardo de propagación, mediante


componentes externas, ubicadas en el lazo de realimentación.
Apenas ocurran cambios en las entradas R, S, q y qn se producirán simultáneamente los cambios
en las salidas Q o Qn, estas compuertas no tienen retardo.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 14. Máquinas secuenciales asincrónicas 19
14.4.2. Variables.

Denominaremos:
estado presente al conjunto: {q, qn}
estado próximo al conjunto: {Q, Qn}
Salida al estado presente (máquina de Moore).

14.4.3. Ecuaciones.

En el caso del latch de NOR, se tienen:


Q = (R + qn )' = R'qn'

Qn = (S + q )' = S'q'

14.4.4. Matriz de transiciones.

Representando en un mapa, se logra la matriz de transiciones siguiente:

SR
q qn 00 01 11 10
0 4 12 8
00 11 01 00 10
1 5 13 9
01 01 01 00 00
3 7 15 11
11 00 00 00 00
2 6 14 10
10 10 00 00 10

Q, Qn
Figura 14.32. Matriz de transiciones latch de nor.

En el diagrama se aprecian tres estados estables. Si el objetivo es usar el circuito para emplearlo
como elemento de memoria, y por lo tanto que q y qn sean el complemento la una de la otra, no
deberá usarse el estado estable 00; para lo cual basta restringir que ambas entradas puedan ser
uno simultáneamente.

14.4.5. Diagrama de estados.

La información de la matriz de transiciones puede verse también con un diagrama de estados:

Profesor Leopoldo Silva Bijit 19-01-2010


20 Sistemas Digitales

00,01
00/10
10 01

10 11,01 11,10
01
00
11

11,10,01,00
00

11

Figura 14.33. Diagrama de estados latch de nor.

Con la condición SR=0, el sistema sólo puede estar en uno de dos estados estables, que
llamaremos set y reset. En este caso, y una vez terminadas las transiciones, se cumple que qn es
q'.
set = {q = 1, qn = 0}
reset = {q = 0, qn = 1}

14.4.6. Secuencias de interés.

Nos interesa estudiar secuencias de las entradas, que llevan de un estado estable al otro. Y que
no se ocupe el estado estable 00, ya que en este caso qn no es la negación lógica de q.
La figura ilustra algunas secuencias:

S
R
Q'
Q

1 4 5
2 3

Figura 14.34. Secuencias de interés en latch de nor.

El canto de subida en S (1), inicia el cambio de estado de reset a set.


Luego entre (1) y (2) ocurre una entrada a la columna 11, lo que lleva al estado 00, que no es
adecuado para utilizar el circuito como flip-flop.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 14. Máquinas secuenciales asincrónicas 21
En esta situación un canto de bajada (2) también conmuta el latch. No es deseable tener
conmutaciones con cantos de subida y de bajada.

Luego se vuelve a condiciones normales de operación, ambas excitaciones en cero, y se tiene


una conmutación normal a set, en (3).

Estando en estado 00, un cambio simultáneo de las entradas a cero, produce una oscilación (4),
la cual se detiene al llevar el latch a reset. Finalmente en (5) se coloca en modo normal.

14.4.7. Funcionamiento simplificado.

El diagrama de transiciones, marcando como superfluas los estados por los cuales nunca se
pasará, si se cumplen las restricciones para operación normal, se indica a continuación:
SR
q qn 00 01 11 10
0 4 12 8
00 01 10
1 5 13 9
01 01 01 00
3 7 15 11
11

2 6 14 10
10 10 00 10

Q, Qn

Figura 14.35. Funcionamiento simplificado, latch de NORs.

Formando grupos: (8, 10, 12, 14) y (2, 3, 10, 11), se logra:
Q+ = Sqn' + R' q
El mintérmino 8, que cubre la expresión que contiene qn', ocurre sólo durante la transición. En
estado estacionario se tiene qn = 0, por lo tanto, la ecuación característica puede plantearse
según:

Q(k+1) = S(k) + R'(k)Q(k)

La tabla característica, para el latch SR en base a nor, pueden plantearse:

Profesor Leopoldo Silva Bijit 19-01-2010


22 Sistemas Digitales

S R Q(k+1)
0 0 Q(k)
1 0 1
0 1 0
1 1 ?
Figura 14.36. Tabla característica, latch de NOR.

Con SR = 0
No cambia estado con entradas bajas. Pasa a set con canto de subida en S.
Pasa a reset con canto de subida en R. Entradas altas causan indeterminación.

La tabla de excitaciones, para el latch SR en base a nor, puede plantearse:

Q(k) Q(k+1) S R
0 0 0
0 1 1 0
1 0 0 1
1 1 0

Figura 14.37. Tabla de excitaciones, latch de NORs.

Si está en reset: permanece en reset si ocurren pulsos en R, pasa a set con canto de subida de S.
Si está en set: permanece en set si ocurren pulsos en S; pasa a reset con canto de subida de R.

14.4.8. Resumen Latch de NOR.

Normalmente S y R están en cero lógico, un pulso de corta duración en una de las entradas
produce el correspondiente cambio de estado. La duración del pulso debe ser mayor que el
retardo de ambas compuertas. Ambas entradas no pueden estar altas. El evento que inicia la
conmutación es el canto de subida. Este latch recuerda la última entrada que tuvo un canto de
subida.

14.4.9. Análisis simplificado, con un retardo.

Puede inferirse el funcionamiento del latch de NOR, mediante un análisis simplificado, éste
consiste en asumir una sola variable de estado:

Se tiene: Q += ((S +q)' + R )'


Entonces: Q+ = R’( S + Q) que es la ecuación característica. El retardo entre Q' y q' es la suma
del retardo de las componentes individuales.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 14. Máquinas secuenciales asincrónicas 23

R S Q

Figura 14.38. Esquema con solo una variable de estado.

El siguiente circuito elimina rebotes empleando un latch de nor:


+V
R

0.33k
S1 S Q'

0.33k

Figura 14.39. Elimina rebotes con latch de nor.

Puede verse un diseño de este tipo en el chip 7475.

14.9.10. Latch positivo D

La señal G (por gate) habilita la entrada de cantos de subida hacia el latch de nor, y garantiza el
funcionamiento normal de éste. La entrada D se copia hacia la salida Q cuando G, que actúa
como reloj, está en nivel alto. Cuando G está en nivel cero, el latch mantiene el estado
almacenado. Se dice también que es un latch sensible al nivel.

R Q

G
D
Q'
S

Figura 14.39a. Latch positivo D.

Puede operarse con cantos de bajada de G, si se coloca un inversor en la puerta habilitadora.

Profesor Leopoldo Silva Bijit 19-01-2010


24 Sistemas Digitales
14.5. Diseño de latch JK en base a Latch de NOR

Diseño de JK en base a SR:


Se tiene la tabla de transiciones de un JK. Que es la matriz que se desea diseñar.
JK
Q(k) 00 01 11 10
0 0 0 1 1
1 1 0 0 1
Q(k+1)

Figura 14.40 Matriz de transiciones JK.

Y la tabla de transiciones del SR, que es el flip-flop que se empleará:

Q(k) Q(k+1) S R
0 0 0
0 1 1 0
1 0 0 1
1 1 0

Figura 14.41. Tabla de transiciones SR.

Empleando el método tabular, se logra el programa del SR:


JK
Q(k) 00 01 11 10
0 0 0 10 10
1 0 01 01 0
S, R
Figura 14.42. Programa del SR.

Leyendo del mapa se logra: S = JQ' ; R = KQ

El siguiente circuito implementa un JK en base a un SR.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 14. Máquinas secuenciales asincrónicas 25

K R
Q

J Q'
S

Figura 14.43. Latch JK basado en SR.

Se tienen las siguientes formas de ondas:

J
K
S
R
Q
Q'

1 2 3 4

Figura 14.44. Formas de ondas en latch JK.

El latch de nor inicialmente está en set. En (1) llega un canto de subida en K, el cual origina un
canto de subida en el control interno del latch de NOR, llevando a uno la excitación R; lo cual
hace cambiar a Q y luego a Q'. El cambio de Q también origina un canto de bajada en R, lo cual
deja en condiciones normales al latch de NOR.
En (2) se aprecia una orden de set, en J. Lo cual lleva a excitar S, que inicia la conmutación del
latch interno; y el cambio de Q' lleva a cero a S, dejando en condiciones predecibles al latch.
En el instante (3) se inicia el modo toggle, que se detiene al llevar a modo hold al JK, en (4)

En el modo toggle, con J y K iguales a uno, se puede dejar pasar sólo una de las entradas hacia
el latch. Esto puede lograrse dejando pasar K si Q=1, ya que esto implica resetear el flip-flop.
Y dejar "pasar" J si Q=0.

14.6. Diseño de un flip-flop JK sincrónico.

Al circuito del punto anterior se le agrega un reloj.

Profesor Leopoldo Silva Bijit 19-01-2010


26 Sistemas Digitales

K R
Q
K
R
clk
Q'
J S
J S

Figura 14.45. Sincronización de flip-flop JK

Este diseño tiene restricciones del ancho de pulso del reloj. Como puede comprobarse esta
restricción se produce en el modo toggle; es decir con J y K iguales a uno. Para el análisis se
asume que el flip-flop está en modo reset.

Cuando el reloj sube, habilita la excitación S, después de J. A su vez este cambio desencadena
la conmutación del latch, bajando Q' después de S, y luego subiendo Q después de R. Al
mismo tiempo que se levanta Q, se inicia la propagación, a través de la compuerta habilitada por
K y el reloj de un canto de subida en R, lo cual ocurre después de K. Si se llega a producir la
excitación R, el latch volverá a conmutar; salvo que el reloj sea angosto y baje antes que Q suba.
Es decir ancho del pulso del reloj debe ser menor que : S + J+ R

ancho máximo del reloj.


clk

Q'

J
S R K
Figura 14.46. Formas de ondas conmutación JK.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 14. Máquinas secuenciales asincrónicas 27
El problema de este diseño es que al cambiar de estado, necesariamente se pasa por estado 00;
es decir los cambios se producen con el reloj en alto.
Para mantener conducta predecible, las entradas no deben cambiar estando el reloj en alto. Y si
dichas entradas provienen de otro flip-flop similar (es decir son salidas de éste), se llega a la
conclusión que para un flip-flop cualquiera: No se pueden cambiar entradas y salidas, de un
mismo flip-flop, en el mismo pulso de reloj.

Para disolver estas restricciones hay dos soluciones.

14.7. Flip-flops disparados por cantos

En estos flip-flops, pueden cambiarse las entradas y salidas en el mismo pulso del reloj.

El pulso angosto del reloj se obtiene mediante redes de disparo; que básicamente derivan un
pulso de entrada. En estos circuitos, se requiere buena pendiente del reloj (no un pulso angosto),
para operación correcta.
Diseños de este tipo se encuentran en el chip 7470.

También puede explicarse el funcionamiento de los disparados por canto mediante un circuito
que genera un reloj muy angosto, que se produce asociado a un canto. El ancho del reloj
generado debe ser de menor ancho que S+ J+ R; si esto es así, cuando ya haya pasado por
estado 00 el reloj comenzará a estar en bajo, y no se activará R.

Con fines didácticos se muestra cómo puede lograrse un reloj angosto con una perturbación:

clk
cp
Generador

1
1

Figura 14.47. Reloj angosto.

Y las formas de ondas:

clk
cp
Figura 14.48. Formas de ondas.

El reloj cp (clock pulse) tiene un ancho de pulso igual a un retardo de compuerta.

Una variante de la idea anterior, es generar un pulso angosto asociado al canto de bajada del
reloj, luego de producirse el evento: canto de subida en J.
En este caso, con J=1, S’=clk + clk’, con clk’ atrasada respecto de clk; se produce perturbación a
la salida del OR, en el canto de bajada del reloj.

Profesor Leopoldo Silva Bijit 19-01-2010


28 Sistemas Digitales

J J
S’
clk
J
J
clk
J
J’+clk’
S’

Figura 14.48a. Generación de pulso angosto.

De este modo pueden generarse pulsos adecuados para el latch de nand, que registra los
cambios.

J S’ Q’
J
S
clk

Q
K R
K
R’

Figura 14.48b. JK, disparado por cantos de bajada del reloj.

Los flip-flops JK suelen tener entradas asincrónicas de set y reset, que sobrepasan las entradas
sincrónicas. De esta forma la ecuación característica para un JK:

Q(k+1) = J(k)Q'(k) + K'(k)Q(k)

Con S y R controles asincrónicos de lógica positiva, la ecuación resulta:

Q(k+1) = S + R' ( J(k)Q'(k)+K'(k)Q(k) )

14.8. Master Slave. Maestro-esclavo.

Una solución al problema de sincronización, mediante un pulso angosto, de un flip-flop JK, es


la estructura master-slave, que consiste en dos latchs que operan con dos relojes; uno el
complemento del otro. El latch maestro, captura las entradas con el canto de subida del reloj. El
esclavo inspecciona sus entradas con el canto de bajada del clk, es el reloj clk' en la Figura
14.49. De esta forma el master-slave cambia sus salidas cuando ya ha almacenado
confiablemente las entradas registradas por el maestro.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 14. Máquinas secuenciales asincrónicas 29

init
J Rmt Rsl
r v Q

Ssl Q'
K Smt
r v
clk clk'

Figura 14.49. Flip-flop JK master-slave.

Se ilustra la señal init, que inicia los latch, para la simulación, puede considerarse como una
señal asincrónica de preset.

A continuación se ilustran algunas secuencias de valores:


La señal de inicio setea a ambos latch, en el punto (1) se inicia la simulación con valores
iniciales correctos. Como K está inicialmente alto, el primer canto de subida del clock, produce
Smtr, que setea el master. Ese nivel es inspeccionado en el canto de subida de clk' (2), lo que
origina el canto de subida de Rslv, el que a su vez origina la conmutación del latch esclavo. El
flip -flop cambia sus salidas, quedando en estado reset. De esta forma se deshabilita la entrada
K.
J
K
clk
Smt
r
Rmt
r
clk'
Sslv
Rslv
Q
Q'

1 3 4 5
2
a

Figura 14.50. Formas de ondas en flip-flop master-slave.

Profesor Leopoldo Silva Bijit 19-01-2010


30 Sistemas Digitales
En (3) se cambia las entradas J =1 y K = 0. J puede pasar, habilitado por Q', y se genera con el
canto de subida de clk, la señal Rmtr que resetea el master. Ese cambio sólo es tomado en cuenta
por el slave en el canto de subida de clk' (que es el canto de bajada de clk) que genera el set del
esclavo (a); lo que a su vez inicia la conmutación del segundo latch, conmutando la salida.

En (4) se ingresa a modo hold, donde se advierte que no cambia el latch maestro, y que en el
latch esclavo se generan pulsos de set, que no cambian las salidas.
Desde (5) se inicia modo toggle. Donde se aprecian las secuencias de set, reset, set y reset del
maestro y las correlativas reset, set, reset, y set en el esclavo.

Los flip-flops de tipo maestro esclavo tienen asociado un pequeño pulso en la señal clock en la
tabla de funcionamiento. Algunos ejemplos: 7471, 7472, 7473, 7476.

Puede comprobarse que si una señal de entrada está alta durante el reloj será interpretada como
uno en la salida, cuando los latch son en base a NOR. (se denomina captura de unos). Estos
flip-flops no pueden ser alimentados con salidas que tengan perturbaciones de cero. Lo dual
ocurre para latch en base a NAND, en que se capturan ceros.
J
K
clk
Smtr
Rmt
r
clk'
Sslv
Rslv
Q
Q'
2
1

Figura 14.51. Captura de unos.

En (1), estando el reloj alto y en modo set, se captura un uno en la entrada K. Esto podría ser
una perturbación en cero de dicha entrada. Esto ocasiona la conmutación del flip-flop master-
slave.

Nótese que el latch maestro puede estar en cero o en uno, por esta razón en cada canto de subida
de clk' se origina un cambio de estado del latch esclavo.

En (2) se aprecia una captura de un uno en la entrada J, estando en reset la perturbación que
viene en la entrada J hace conmutar al flip-flop.
Para un correcto uso de este tipo de flip-flops las entradas no deben tener perturbaciones en
cero, si son en base a latch de NOR, y en uno si los latchs son de NAND. Los flip-flops
maestro-esclavo no tienen requerimiento de pulsos angostos, ni de pendiente del reloj.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 14. Máquinas secuenciales asincrónicas 31

Los flip-flops disparados por cantos no tienen la dificultad de los anteriores, pero requieren que
el tiempo de levantamiento (en los disparados por cantos de subida) o el de bajada (en los
disparados por canto de bajada) cumpla cierta pendiente mínima; en caso contrario la derivada
no genera un pulso de suficiente magnitud para comandar los cambios internos.

Master Slave de tipo D.

Tiene la ventaja de no capturar unos o ceros. Ver: Paul Horowitz. “The Art of Electronics”.
1989.

init
D
Rmt Rsl
r v Q

Ssl Q'
Smt
r v
clk clk'

Figura 14.52. Master-slave de tipo D.

14.9. Flip-Flop Sincrónico D.

El siguiente circuito implementa un flip-flop sincrónico tipo D en base a tres latch de NAND.
Este diagrama es la descripción lógica del 7474, su diseño interno es en base a redes de disparo.

Profesor Leopoldo Silva Bijit 19-01-2010


32 Sistemas Digitales

preset’ Dset
t
1

S Q
clear’
1
1

QN
clk
R
1
1

Dclr
D
1

Figura 19.53. Flip-flop sincrónico D.

Se tienen las siguientes formas de ondas que ilustran las conmutaciones internas:

preset
clea
clkr
D
Dset
Dcl
Sr
R
Q
QN
1 2 7
3 4 5 6

Figura 19.54. Formas de ondas. Conmutación flip flop sincrónico D.

El control asincrónico clear deja en estado inicial reset al flip-flop D. En (1).


Los cambios de D son registrados en el latch superior e inferior. En (2) y (5)
Los cantos del reloj provocan la conmutación del latch de salida. Entre (3) y (4) se tiene una
secuencia de set; en (6) y (7) se tiene una secuencia reset.
Puede efectuarse un análisis más detallado de la configuración de entrada de este flip-flop, para
esto se consideran en estado alto, las entradas preset y clear. De este modo la red simplificada
puede verse a continuación:

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 14. Máquinas secuenciales asincrónicas 33
Dset
1

S
Q
1
1

clk Q
R N
1
1

Dclr
D
1

Figura 19.55. Análisis esquema simplificado.

Se consideran D y clk como entradas. Las salidas serán S y R. No se contempla en el análisis el


latch de salida. Su comportamiento queda determinado por los cantos de bajada de R y S, y que
se asume que no se presentará la situación en que ambas estén bajas.

Se tienen las siguientes ecuaciones, considerando como variables de estado a las señales: s, r,
dset, dclr, que se producen después de un retardo, respecto de las salidas de las compuertas que
se asumen ideales:
S = (dset clk )' R = ( clk dclr s )'
Dset = ( dclr s )' Dclr = ( D r)'

Las cuales implican la siguiente matriz de transiciones:

Profesor Leopoldo Silva Bijit 19-01-2010


34 Sistemas Digitales

clk D
s r dset dclr 00 01 11 10
0000 1111 1111 1111 1111
0001 1111 1111 1111 1111
0011 1111 1111 0111 0111
0010 1111 1111 0111 0111
0110 1111 1110 0110 0111
0111 1111 1110 0110 0111
0101 1111 1110 1110 1111
0100 1111 1110 1110 1111
1100 1111 1110 1110 1111
1101 1101 1100 1000 1001
1111 1101 1100 0000 0001
1110 1111 1110 0110 0111
1010 1111 1111 0111 0111
1011 1101 1101 0001 0001
1001 1101 1101 1001 1001
1000 1111 1111 1111 1111

S, R, Dset, Dclr

Figura 19.56. Matriz de transiciones flip-flop sincrónico D.

Observando la matriz, puede concluirse que:

Cuando el reloj está bajo, las órdenes S y R al latch de salida están en 1, y por lo tanto éste está
en hold.
Con el reloj en bajo, existen dos estados estables, uno asociado a la entrada D=0 y el otro a
D=1. Lo cual establece los valores de los latchs de entrada; si la entrada D está en 0, se tienen
Dset=0 y Dclr=1. Con D=1 se tienen Dset= 1 y Dclr=0.
Si con el reloj bajo, cambia la entrada D, se cambia del estado 1101 al 1110 y viceversa. El
cambio de estado dura dos tiempos de propagación.

Activación del reloj.


Se puede pasar de entradas D=0, clk=0 a D=0 y clk=1.
La entrada D debe estar estable el tiempo de setup (puede haber un cambio de 1 a 0 en D, pero
tiene que permitir estabilizar los latch de entrada en estado 1101, lo cual puede durar dos
propagaciones), antes de que suba el reloj. Lo cual implica pasar del estado 1101 al 1001,
activando un canto de bajada en R, lo cual captura en el latch de salida el valor 0 de D. Mientras
dura esta transición (un tiempo de propagación), no puede cambiarse D. Este requerimiento es el
tiempo de hold.

Se puede pasar de entradas D=1, clk=0 a D=1 y clk=1.


La entrada D debe estar estable el tiempo de setup (puede haber un cambio de 0 a 1 en D, pero
tiene que permitir estabilizar los latch de entrada en estado 1110, lo cual puede durar dos
propagaciones), antes de que suba el reloj. Lo cual implica pasar del estado 1110 al 0110,

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 14. Máquinas secuenciales asincrónicas 35
activando un canto de bajada en S, lo cual captura en el latch de salida el valor 1 de D. Mientras
dura esta transición (un tiempo de propagación), no puede cambiarse D. Este requerimiento es el
tiempo de hold.

Estando el reloj alto, D puede cambiar, esto no afecta al valor ya registrado, ya que no se
activan ni S ni R. En caso que D cambie de 0 a 1, habiendo grabado previamente un cero,
permanece en estado 1001. Si se hubiera grabado en la salida un uno, se cambia de 0110 a 0111,
activando un cambio en Dclr.

Luego de los posibles cambios anteriores, el reloj debe volver a cero, lo cual reestablece
valores normales, en uno lógico, para R y S. Quedando en estado 1101 ó 1110 según sea el
valor de D.

14.10. Latch transparente.

Se denomina latch a un elemento de almacenamiento de un bit. Puede conceptualizarse como


un mux realimentado. Apenas G se active (en 1), inmediatamente en Q se copia el valor de D.
Cuando G se desactiva (va a 0) la salida Q se mantiene capturada (latch) mediante la vía de
realimentación.

D
1 Q D Q

0
G

Figura 14.57. Latch transparente.

Una implementación directa mediante compuertas es la siguiente:


D
G
S
Q
P
R

Figura 14.58. Latch transparente mediante compuertas.

Cuando G está alto: Q sigue a D, en forma transparente; en caso contrario, Q permanece estable.
El circuito se denomina Latch D estático, ya que mantiene el dato en Q, mientras G esté
inactivo, no importando cuánto tiempo permanezca bajo (siempre y cuando las fuentes
permanezcan aplicadas).

Profesor Leopoldo Silva Bijit 19-01-2010


36 Sistemas Digitales

Cuando D está alto (y después de un tiempo, Q también estará alto), al ocurrir un canto de
bajada en G, se produce una perturbación (un falso cero) en Q. Esto debido a que las señales R y
S conmutan en tiempos diferentes. Esta perturbación puede afectar a los circuitos conectados a
la salida del latch.

Sin embargo existen dos dificultades importantes, una de ellas es si el ancho del pulso G es
demasiado angosto, esto implicaría que el latch no alcanzaría a setearse. Otra dificultad, y más
importante, es si D cambia casi al mismo tiempo que el latch (candado) se cierra, con el canto
de bajada de G. En este caso no puede determinarse cual será el valor que será capturado.

El siguiente análisis permite determinar el tipo de transiciones cuando se cambian las entradas.
Para esto se plantean las ecuaciones a las salidas de las compuertas:

P=G’; Q=r+s; R=pq; S=GD

Luego se representan las ecuaciones en una tabla de transiciones. Después se procede a estudiar,
a partir de un estado estable, las transiciones que se producen cuando cambia una sola de las
entradas.

Si G y D están largo tiempo en 1, se llega al estado estable 0101.

a) Al llegar un canto de bajada en G se produce una carrera entre p y s, lo cual origina una
oscilación en q y en r, o dependiendo de los retardos podría estabilizarse en uno de los dos
estados estables de la columna. Esta transición es conflictiva.

b) Al llegar un canto de bajada en D, se pasa transitoriamente por el estado 0100 y luego se


estabiliza en 0000.

Con GD=10, con un canto de subida en D, se producen las transiciones: 0001, 0101. Si se
produce canto de bajada en G, se pasa por 1000, y queda estable.
Con GD=00, al cambiar las entradas a 01 ó 10, se producen transiciones a estados estables.
Con GD=01, al cambiar entradas a 00 permanece en estado estable; al cambiar a 11, se
presentan carreras en p y s; pero no es una carrera crítica, y finalmente se llega al estable 0101.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 14. Máquinas secuenciales asincrónicas 37

pqrs GD
00 01 11 10
0000 1000 1000 0001 0000
0001 1100 1100 0101 0100
0011 1100 1100 0101 0100
0010 1100 1100 0101 0100
0110 1100 1100 0101 0100
0111 1100 1100 0101 0100
0101 1100 1100 0101 0100
0100 1000 1000 0001 0000
1100 1010 1010 0011 0010
1101 1110 1110 0111 0110
1111 1110 1110 0111 0110
1110 1110 1110 0111 0110
1010 1100 1100 0101 0100
1011 1100 1100 0101 0100
1001 1100 1100 0101 0100
1000 1000 1000 0001 0000
PQRS

Figura 14.58a. Tabla de transiciones latch transparente.

Por estas razones, el diseño de dispositivos secuenciales debe garantizar que las entradas sean
válidas y estables durante los períodos en que éstas pueden influir sobre el cambio de estado.
Para el circuito analizado, estas restricciones son:
ancho pulso
G

set-up hold
Figura 14.59. Restricciones temporales.

La señal G debe permanecer activa por el tiempo que sea suficiente para que el latch pueda
capturar el dato. Esto requiere un ancho mínimo para el pulso G.
El tiempo de set-up debe garantizar que el valor de D se haya propagado a través del lazo de
realimentación antes de que se cierre el latch.
El tiempo de hold debe garantizar que el latch esté cerrado y Q estable antes de permitir
cambios en la entrada D.

Profesor Leopoldo Silva Bijit 19-01-2010


38 Sistemas Digitales
Un mejor diseño del latch consiste en eliminar la perturbación y la posibilidad de carreras
críticas. Esto puede lograrse agregando una compuerta de dos entradas, como se muestra en la
Figura 14.59a.
D
G
S
Q
P
R

Figura 14.59a. Latch sin perturbaciones.

Las ecuaciones se modifican levemente. Se simplifica el análisis no considerando una variable


de estado adicional a la salida del inversor.

P=G’+D; Q=r+s; R=pq; S=GD

La tabla de transiciones resulta ahora:

pqrs GD
00 01 11 10
0000 1000 1000 1001 0000
0001 1100 1100 1101 0100
0011 1100 1100 1101 0100
0010 1100 1100 1101 0100
0110 1100 1100 1101 0100
0111 1100 1100 1101 0100
0101 1100 1100 1101 0100
0100 1000 1000 1001 0000
1100 1010 1010 1011 0010
1101 1110 1110 1111 0110
1111 1110 1110 1111 0110
1110 1110 1110 1111 0110
1010 1100 1100 1101 0100
1011 1100 1100 1101 0100
1001 1100 1100 1101 0100
1000 1000 1000 1001 0000
PQRS

Figura 14.59b. Transiciones latch transparente. Carreras no críticas.

Se producen carreras con GD=11 al pasar las entradas a 10, pero no es crítica. También estando
con GD=10, al cambiar las entradas a 11 se produce una carrera no crítica.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 14. Máquinas secuenciales asincrónicas 39
Un latch transparente basado en un latch de NAND se ilustra en la Figura 14.60. Un ejemplo de
éstos es el 74LS373.
D
S Q
D
S
QN
R
I Dn R

Enable

Figura 14.60. Esquema latch 74LS373.

Su principio de funcionamiento se ilustra a través de algunas señales:


captura

Enable
D
S
R
Q
QN
1 2 3 4 5
transparente
Figura 14.61. Formas de ondas latch figura 19.60.

En (1) queda en reset.


Se observa entre (2) y (3) que cambios de D con Enable = 0, no generan cambios.
Los cantos de subida y bajada de Enable generan las correspondientes conmutaciones del latch.
Estando Enable = 1, apenas ocurren cambios en la entrada se producen las conmutaciones del
latch que producen salida. En (4) comienza la conmutación y hasta (5) hay salida "nueva" antes
de la captura del dato con el canto de bajada del Enable. Por esto se denomina transparente a
este latch, permite anticipar la salida del nuevo dato.
Se dice modo captura, ya que al bajar la señal Enable, la salida no puede cambiar.

Registros en base a flip-flops disparados por cantos (por ejemplo: 74LS374) cambian sus salidas
con el canto del reloj, y no anticipan como el latch que se acaba de explicar.

El ancho mínimo del pulso Enable debe ser mayor que S + R. Esto para esperar que hayan
terminado las transiciones de estados internos.

Profesor Leopoldo Silva Bijit 19-01-2010


40 Sistemas Digitales
D no puede cambiar I antes del canto de subida de Enable. De esta forma se generan las
señales S o R, según corresponda, en forma confiable.
D no puede cambiar D+ S+ R, antes del canto de bajada de Enable, para no cambiar las
entradas mientras ocurren transiciones internas. Equivale a un tiempo de set-up. El tiempo de
hold es 0, pues con el canto de bajada de Enable, S y R quedan en 1, luego de un tiempo
mín( D , Dn).

La Figura 14.61a, muestra un latch activado por cantos de bajada del control G.

D
0 Q D Q

1
G

G
Figura 14.61a. Latch transparente negativo.

La Figura 14.61b, muestra un flip-flop de tipo maestro esclavo, implementado con un par de
latchs. El canto de subida del primer latch, deja pasar o muestrea la entrada. Con el canto de
subida del reloj, se toma una muestra de la salida del primer latch (el maestro) que se encuentra
estable, y se la copia al esclavo; capturándola en el canto de bajada, en el segundo latch.

D
0 Qm
1 Qs
1
0

clk clk

Figura 14.61b. Master Slave basado en latchs

14.11. Análisis de Multivibrador aestable.

El circuito de la Figura 14.62 opera como un oscilador elemental.

El análisis comienza identificando las variables de estado: x, y, z. Se identifican X, Y, Z como las


salidas de circuitos combinacionales ideales.

Se tienen: X = (z Init)' ; Y = x' ; Z = y'

La señal Init se ha agregado para dejar en un estado inicial al multivibrador. Esto es importante
para simular en diseño. En un armado de laboratorio, al aplicar la polarización, se producirá una
oscilación naturalmente.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 14. Máquinas secuenciales asincrónicas 41

Init X Y Z

x y

Figura 14.62. Oscilador elemental, mediante compuertas.

Puede entonces escribirse la matriz de transiciones:


Init
xyz 0 1
000 111 111
001 111 011
010 110 110
011 110 010
100 101 101
101 101 001
110 100 100
111 100 000
X,Y,Z

Figura 14.63. Matriz de transiciones, oscilador asincrónico figura 14.62.

Donde se aprecia un solo estado estable (101), con Init = 0. Si Init está en cero, después de
algún tiempo, no importando cual es el estado inicial, el sistema queda en estado 101.

Cuando llega un canto de subida en Init, se pasa a próximo estado 001 (sin carreras, ya que sólo
cambia una variable de estado), debe ir a cero la variable x. Esto se produce después de x.

Habiéndose establecido el estado 001, debe efectuarse la transición a 011, nuevamente sin
carreras y después de y debe subir a uno la variable y. Y así sucesivamente hasta llegar al
estado 101, donde el ciclo de transiciones inestables vuelve a repetirse.

Profesor Leopoldo Silva Bijit 19-01-2010


42 Sistemas Digitales

Init
Z
Y
X

Figura 14.64. Formas de ondas multivibrador aestable.

Se muestra un período de la oscilación. En el ciclo ocurre tpHL y tpLH para cada compuerta. Si
las compuertas son iguales, el período resulta: T = 3 ( tpHL + tpLH) .

Similares comportamientos tienen un número impar de inversores, donde la salida del último es
la entrada del primero. En el caso de desear simular el circuito, es preciso colocar una señal de
Init, de tal modo de, después de algunos ticks, llevar todas las salidas a valores lógicos estables.

Los flip-flops se clasifican como multivibradores biestables.

14.12. Multivibrador monoestable.

Este dispositivo permite generar un pulso de ancho programable. Se suele emplear para generar
temporizadores, que desencadenen eventos después de un tiempo dado.
Consisten en incorporar un retardo, generalmente mayor que el de propagación, pudiendo ser el
ancho del pulso generado del orden de los microsegundos. (ver circuito 74LS123).

El siguiente circuito ilustra un diseño posible:

R
Q

Q'
S

Figura 14.65. Multivibrador monoestable.

Con la señal R se inicia el multivibrador. La componente que genera el retardo, suele ser una red
RC, que se intercala después del inversor (y en forma externa al chip). Para fines de simulación
se agrandó el tiempo de propagación del inversor.

Se obtienen las siguientes formas de ondas:

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 14. Máquinas secuenciales asincrónicas 43

S
R
Q'
Q

1 2 Disparo 3 4

Figura 14.66. Formas de ondas para figura 14.65.

La orden para iniciar la medición de tiempo es el canto de subida de R.


Cuando ocurre un canto de subida en R (1) comienza una conmutación del latch de NOR.
Después que ocurre el canto de bajada de Q, pasa el tiempo del retardo hasta que S sube (2).
Cuando S sube deja Q' en cero.

El tiempo que el multivibrador genera es la señal Q'. Este tiempo se muestra entre los
marcadores (3) y (4), el evento que dispara al multivibrador es el canto de subida de R.
Para operar correctamente debe reponerse a cero la señal R.

Algunos multivibradores son redisparables, esto implica que si existen pulsos en R, mientras se
está generando la banda de tiempo, que es propia del multivibrador (entre (3) y (4)), vuelve a
comenzar la medición del tiempo. Los no redisparables, imponen que hasta que Q' no haya
bajado, no tienen efectos los pulsos en R.

El análisis anterior está basado en usar los conceptos del latch. Sin embargo, puede efectuarse
un análisis asincrónico, como se verá a continuación.

Análisis:

Si se denomina Y a la salida del inversor; se tendrá una nueva variable de estado, se tendrán:

Q+ = (R+qn)' ; Qn+ = (S+q)' ; Y = q' ; S = y

Eliminando la variable interna S, se logra:

Q+ = R' qn'; Qn+ = y' q' ; Y = q'

Con la siguiente tabla de transiciones:

Profesor Leopoldo Silva Bijit 19-01-2010


44 Sistemas Digitales

R
q qn y 0 1
000 111 011
001 101 001
010 011 011
011 001 001
100 100 000
101 100 000
110 000 000
111 000 000
Q+, Qn+, Y

Figura 14.67. Tabla de transiciones de Figura 14.65.

Con estado inicial 100, y entrada R = 0. El canto de subida inicia la transición a 000 sin
carreras. Luego del retardo R pasa a estado inestable 000, el que inicia otra transición; esta
vez con carreras de las variables qn e y. En el caso del multivibrador, se asume Y mucho
mayor que S. Debido a esto llega primero al estado 010, el cual sostiene la transición de y que
aún está en curso; llegando finalmente después de Y (a partir del canto de bajada de q) al
estado, también inestable: 011.
Lo cual excita a la variable qn que baja a cero después de S. Lo cual lleva al estado estable
001. Finalizando el ciclo del monoestable.
La entrada es R, la salida es qn. En R se aplica un canto de subida, y se inicia una ventana de
tiempo, de largo Y, en qn.

El armado del multivibrador consiste en reponer la entrada R a cero, lo cual después de algunas
transiciones coloca a la máquina en estado 100. Y puede volver a emplearse el temporizador,
para ello, debe esperarse un tiempo algo mayor que Y.

Un circuito más sencillo es el siguiente:

Figura 14.68. Otro esquema para multivibrador monoestable.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 14. Máquinas secuenciales asincrónicas 45
14.13. Carreras.

El cambio de dos o más variables de estado se denomina carrera; los cambios dentro de una
columna de la tabla de transiciones se propagan por vías alternativas. Los cambios de dos o más
señales a través de redes combinacionales; dependiendo de la duración de los retardos de
propagación, ocasionan diferentes transiciones a través de estados inestables. Si finalmente se
llega a un mismo estado estable, se dice que la carrera no es crítica; en caso contrario se tiene
una carrera crítica, lo cual introduce incertidumbre. En algunos casos esto puede evitarse
efectuando una asignación binaria de los estados que esté libre de carreras; en otros pueden
agregarse estados intermedios que den confiabilidad al diseño.

Si una red asincrónica tiene múltiples entradas, pueden ocurrir carreras entre éstas. En estos
casos, para realizar el análisis, se requiere restringir los cambios de las entradas. No se aceptan
cambios de las entradas cuando están ocurriendo transiciones de estados, y además deben tener
una mínima separación temporal, de tal modo que se logre determinar con certeza los cambios
de estado.

14.13.1. Carrera no crítica.

La siguiente red tiene carreras no críticas.

d
a

x
c
b

Figura 14.69. Carrera no crítica.

Considerando un retardo individual para cada compuerta se tienen cuatro variables de estado.

a+ = d + b; b+ = x + c; c+ = ba’; d+ = xa’

A partir de las ecuaciones se desarrolla la tabla de transiciones, se marcan en ésta los estados
estables. Se tienen los estados estables: 0000 y 1100, uno en cada columna. Se observa que
estando en el estado estable 0000, al cambiar la entrada x a uno, se excitan cambios en b y d, lo
cual implica una carrera entre esas variables.

Profesor Leopoldo Silva Bijit 19-01-2010


46 Sistemas Digitales

x
abcd 0 1
0000 0000 0101
0001 1000 1101
0010 0100 0101
0011 1100 1101
0100 1010 1111
0101 1010 1111
0110 1110 1111
0111 1110 1111
1000 0000 0100
1001 1000 1100
1010 0100 0100
1011 1100 1100
1100 1000 1100
1101 1000 1100
1110 1100 1100
1111 1100 1100
a+b+c+d+

Figura 14.70. Tabla de transiciones. Carrera no crítica.

En la Figura 14.69 se ha agregado la señal r que permite dejar en cero la señal c, y a su vez dejar
en cero la salida b, cuando x=0. De este modo, con x=0 y r=0 puede dejarse, al sistema en
estado 0000.
El siguiente módulo permite simular las transiciones. Se simula primero una propagación lenta
de la señal que genera b.

module ej(x, r, a, b, c, d);


input x, r;
output a, b, c, d;
wire ap;
or #2 G2 (a, d, b);
or #5 G4 (b, c, x); //b se propaga más lentamente que d
and #2 G1 (d, x, ap);
and #2 G3 (c, b, ap, r);
not #1 G5 (ap, a);
endmodule

Con orden para el estado dado por (a, b, c, d) se tienen las siguientes transiciones: 0000, 0001,
1001, 1101, 1100, con los retardos asignados a cada compuerta, que se muestran en el módulo
anterior. En la simulación, luego del reset se tiene un tiempo hasta quedar en estado inicial
0000.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 14. Máquinas secuenciales asincrónicas 47

Figura 14.71. Transiciones. Carrera no crítica, gana d.

Con los retardos del módulo que se muestra a continuación, d se propaga más lento que b, se
tienen las siguientes transiciones: 0000, 0100, 1110, 1111, 1101, 1100.

module ej(x, r, a, b, c, d);


input x, r;
output a, b, c, d;
wire ap;

or #2 G2 (a, d, b);
or #2 G4 (b, c, x);
and #5 G1 (d, x, ap); //d se propaga más lentamente
and #2 G3 (c, b, ap, r);
not #1 G5 (ap, a);

endmodule

Figura 14.72. Transiciones. Carrera no crítica, gana b.

En ambas situaciones se llega finalmente al estado estable: 1100, mostrando que la carrera no es
crítica.
Cuando se baja x a cero, se retorna al estado 0000, sin carreras. Se pasa de 1100 a 1000,
cambiando sólo b, y luego a 0000 cambiando a.

Profesor Leopoldo Silva Bijit 19-01-2010


48 Sistemas Digitales
14.13.2. Carrera crítica.

La siguiente matriz de transiciones ilustra una carrera crítica. Se tienen tres estados estables: 00
en la columna con x=0, y dos estados estables en la columna con x=1: 11 y 10. Se tienen las
ecuaciones: a+ = ax + bx; b+ = abx + a’b’x.

x
ab 0 1
00 00 01
01 00 10
11 00 11
10 00 10
a+b+

Figura 14.73. Carrera crítica.

Cuando x es cero, se tiene el estado estable 00, no es necesaria ahora una señal de reset. Cuando
x pasa a 1, después del retardo de propagación de la señal b, se pasa al estado inestable 01, en
este estado inestable se excitan cambios simultáneos en a y b, generándose una carrera.

El siguiente módulo genera, mediante compuertas, las ecuaciones anteriores. Se ha elegido un


retardo mayor para la generación de la señal b.
module ej(x, a, b, c, d, e, f);
input x;
output a, b, c, d, e, f;
wire ap, bp;

not #1 G1 (ap, a);


not #1 G2 (bp, b);
and #2 G3 (c, a, b, x);
and #2 G4 (d, ap, bp, x);
or #6 G5 (b, d, c); //Si b más lento => llega a estado 11

and #3 G6 (e, a, x);


and #3 G7 (f, b, x);
or #2 G8 (a, e, f); //Cambiado este retardo con a más lento => llega a estado 10

endmodule

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 14. Máquinas secuenciales asincrónicas 49

Figura 14.74. Carrera crítica. Llegando a 11.

Cambiando el retardo de G5 a 2, y el de G8 a 6, se obtienen:

Figura 14.75. Carrera crítica. Llegando a 10.

Las carreras pueden evitarse con una adecuada asignación de estados. Si en la tabla de
transiciones de la Figura 14.73, se reemplazan los códigos binarios por símbolos se obtiene:

x
ab 0 1
A A B
B A D
C A C
D A D
a+b+

Figura 14.76. Transiciones simbólicas.

Luego de cada estado estable se marcan las transiciones en un diagrama de transiciones entre
estados, cuando se cambia sólo una de las entradas. Estando en estado estable A, con entrada
x=0, se cambia x a 1, desde A se pasa a B, y de B al estable D. Del estado estable C, cuando x

Profesor Leopoldo Silva Bijit 19-01-2010


50 Sistemas Digitales
pasa de 1 a 0, se tiene transición al estado A. Del estado estable D, cuando x pasa de 1 a 0, se
tiene transición al estado A.

B C

Figura 14.77. Transiciones entre estados.

No se producirán carreras si los estados adyacentes tienen codificaciones binarias a distancia


uno. En el caso de la Figura 14.77, no es posible asignar los tres estados A, B y D, que forman
un triángulo, de tal modo que cumplan lo anterior. Es preciso agregar estados intermedios, una
solución se muestra en la Figura 14.78, agregando el estado E.
A

B C
E

Figura 14.78. Estados intermedios.

La tabla de transiciones agregando c, una variable de estado adicional, ya que ahora se tienen
más de 4 estados:
x
abc 0 1
A A B
B A D
C A C
D E D
E A -
a+b+c+

Figura 14.79. Transiciones simbólicas.

Asignando estados binarios de tal modo que estén a distancia uno: A con B; B con D; D con E;
A con E; y finalmente C con A, se obtiene:

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 14. Máquinas secuenciales asincrónicas 51

x
abc 0 1
000 000 001
001 000 011
100 000 100
011 010 011
010 000 -
a+b+c+

Figura 14.80. Transiciones libres de carreras.

Se obtienen, para el diseño de la red asincrónica libre de carreras:


a+ = ax; b+ = bc + cx; c+ = a’x.

14.14. Diseño de sistema asincrónico basado en diagrama de flujo.

Se desea diseñar un sistema asincrónico que produzca en las salidas, en forma alternada un
pulso de reloj.
f1
clk
Distribuidor
f2

Figura 14.81. Generación de fases de reloj.

clk
f1

f2

Figura 14.82. Formas de ondas de fases de reloj.

Se identifican los estados estables, como los intervalos en los cuales no se producen
transiciones. Se tienen cuatro estados, que se han identificado con las letras A, B, C y D.

clk

f1

f2
A B C D A

Figura 14.83. Estados estables y transiciones.

Profesor Leopoldo Silva Bijit 19-01-2010


52 Sistemas Digitales
Se resume la información anterior en una tabla de flujo de las transiciones. Se destacan los
estados estables, y se asocian las salidas al estado actual.

clk
Presente 0 1 f1f2
A A B 00
B C B 10
C C D 00
D A D 01
Próximo

Figura 14.84. Tabla de flujo de transiciones.

Se describen las transiciones entre estados, mediante un diagrama de transiciones. Se anotan las
transiciones, desde un estado estable a otro, cuando se cambia una de las entradas. Los estados
entre los cuales existe una transición deben codificarse adyacentes, es decir a distancia uno. De
esta manera al producirse la transición sólo se excitará una variable de estado, y no se
producirán carreras.
A

B D

Figura 14.85. Diagrama de transiciones.

En este caso bastan 4 estados.

Código binario
Estado ab
A 00
B 10
C 11
D 01

Figura 14.86. Codificación libre de carreras.

Con la codificación binaria, se escribe la tabla de transiciones, en términos de las variables de


estado: a y b.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 14. Máquinas secuenciales asincrónicas 53

clk
ab 0 1 f1f2
00 00 10 00
10 11 10 10
11 11 01 00
01 00 01 01
a+b+

Figura 14.87. Tabla de transiciones.

Se diseñan las redes combinacionales libres de perturbaciones, para esto se cubren implicantes
adyacentes con términos de consenso.

a+ = a clk’ + b’ clk + ab’


b+ = a clk’ + b clk + ab
f1 = ab’
f2 = a’b

14.15. Diseño de sistema asincrónico basado en diagrama de estados.

Diseñar un contador binario asincrónico ascendente, módulo 3, en base a compuertas (sin


emplear flip-flops), el diseño debe estar libre de perturbaciones y carreras. Con z1 la cifra más
significativa y z0 la menos significativa. Se cuentan los cantos de subida de la señal de entrada
x. Asignar estado con puros ceros a aquél en que se encuentra la máquina cuando la entrada
está baja y la cuenta es cero.
a) Determinar diagrama de estados.
b) Asignación de estados libres de carreras
c) Expresar el diseño mediante ecuaciones, indicando cómo elimina las posibles perturbaciones.

Un diagrama de estados, modelo de Moore, de un contador asincrónico módulo 3 se ilustra en la


Figura14.88. La transición entre estados se produce en los cantos de subida y bajada de la señal
de entrada x. Se requieren 6 estados, lo cual implica tres variables de estado, sean éstas: q2, q1 y
q0.
0
0 A F 1
00 00
1 1
1 B E 0
01 10
0 0
0 C D 1
01 1 10

Figura 14.88. Diagrama de estados contador módulo 3.

Profesor Leopoldo Silva Bijit 19-01-2010


54 Sistemas Digitales
La asignación de estados se efectúa de tal modo que los estados adyacentes en la Figura 14.88
estén a distancia 1, la asignación se muestra en la Figura 14.89. Se elige arbitrariamente que el
estado A esté asociado al código 000.

q2q1

q0 00 01 11 10

0 A F E

1 B C D

Figura 14.89. Asignación de estados sin carreras.

Con la asignación de la Figura 14.89, se construye la tabla de transiciones de la Figura 14.90,


donde se han marcado los estados estables, y se agrega la función de salida en las variables z1 y
z0.

x
q2q1q0 0 1
A 000 000 001 00
B 001 011 001 01
C 011 011 111 01
D 111 110 111 10
E 110 110 010 10
F 010 000 010 00
- 101
- 100
q2+q1+q0+ z1z0

Figura 14.90. Tabla de transiciones contador módulo 3.

Mediante un mapa del próximo estado, que se muestra en la Figura 14.91, se efectúa la
minimización considerando las condiciones superfluas y de tal modo que no se produzcan
perturbaciones.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 14. Máquinas secuenciales asincrónicas 55

xq2

q1q0 00 01 11 10

00 000 --- --- 001

01 011 --- --- 001

11 011 110 111 111

10 000 110 010 010

q2+q1+q0+

Figura 14.91. Minimización empleando condiciones superfluas.

Las funciones de próximo estado, resultan:

q2+ = x’q2 + x q1q0 + q2q0


q1+ =q2 + x’q0 + xq1 + q1q0
q0+ = q2’q0 + xq1’ + xq0

El término q2q0 en q2+, cubre los implicantes anteriores, cuando ocurre un evento en la
entrada. En la función para q1+, se emplea el término q1q0 para eliminar perturbaciones,
cubriendo implicantes adyacentes.

Mediante el mapa de las funciones de salida, de la Figura 14.92, se obtienen:


z1 = q2
z0 = q2’q0
q2q1

q0 00 01 11 10

0 00 00 10

1 01 01 10

z1z0

Figura 14.92. Minimización de salidas.

Profesor Leopoldo Silva Bijit 19-01-2010


56 Sistemas Digitales
Solución alternativa.
La asignación de estados puede realizarse de múltiples maneras. Se muestra a continuación una
alternativa de diseño, que ilustra la técnica de emplear estados internos inestables, para evitar
carreras.

La asignación de estados se efectúa empleando código Gray, de tal modo que los estados
adyacentes en la Figura 14.93, estén a distancia 1. Se elige que el estado A esté asociado al
código 000; en el ejemplo, F queda con código binario 111, y debe pasar al estado A; esto
implica cambio de tres variables. Se emplean los estados inestables G y H para transitar sin
carreras desde estado F hasta el estado A.

La Figura 14.93 muestra un diagrama de estados para el contador asincrónico módulo 3.

H 1
00
G
00
1 1
1 A F 0
00 10
0 0
0 B E 1
00 10
1 1
1 C D 0
01 0 01

Figura 14.93. Diagrama de estados contador módulo 3.

El método de emplear estados inestables, se visualiza mejor en la tabla de transiciones de la


Figura 14.94, la cual muestra que estando en F, al llegar un canto de subida, se pasa por la
secuencia de estados: 111, 101, 100, 000. En cada transición solo cambia una variable interna;
y los desplazamientos son dentro de la columna con x igual a 1.

Se dejan dos estados próximos sin especificar: estando en G con entrada 0, y estando en H con
entrada 0, que pueden emplearse como condiciones superfluas.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 14. Máquinas secuenciales asincrónicas 57

x
q2q1q0 0 1
A 000 001 000 00
B 001 001 011 00
C 011 010 011 01
D 010 010 110 01
E 110 111 110 10
F 111 111 101 10
G 101 - 100 00
H 100 - 000 00
q2+q1+q0+ z1z0

Figura 14.94. Tabla de transiciones contador módulo 3.

La Figura 14.95 muestra un mapa del próximo estado, construido a partir de la tabla de la Figura
14.94. Minimizando las funciones de próximo estado, libres de perturbaciones, se obtienen:

q2+ = xq1q0’ + q2q1 + q2q0


q1+ = xq2’q0 + q1q0’+ x’q1 + q2’q1
q0+ = q2q1q0+ q2'q1'q0 + xq2'q0 + x'q1' + x'q2 + xq1q0
Con lógica de mayor costo que el diseño anterior.

xq2
00 01 11 10
q1q0

00 001 --- 000 000

01 001 --- 100 011

11 010 111 101 011

10 010 111 110 110

q2+q1+q0+

Figura 14.95. Mapa de próximos estados de contador módulo 3.

Las funciones de salida, se representan en el mapa de la Figura 14.96, a partir de la tabla de la


Figura 14.94.

Profesor Leopoldo Silva Bijit 19-01-2010


58 Sistemas Digitales

q2q1
00 01 11 10
q0

0 00 01 10 00

1 00 01 10 00

z1z0

Figura 14.96. Mapa de funciones de salida de contador módulo 3.

Se obtienen:
z1 = q2q1; z0 = q2’q1

La Figura 14.97 muestra las formas de ondas de los cambios de estado relativas a los pulsos
asincrónicos de la entrada x. Se han enumerado los diferentes cambios de las señales, x y q0, en
un período.

C D E F G H A B

x 1 2 3

q2

q1

q0 1 2

z1
z0

Figura 14.97. Relaciones causa-efecto contador módulo 3.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 14. Máquinas secuenciales asincrónicas 59
Problemas resueltos.

Problema 14.1.

Para el siguiente circuito secuencial asincrónico:


X
Q

Qn
Y

Figura P14.1.

Determinar:

a) Matriz de transiciones y estados estables.


b) Dibujar las formas de ondas de q y qn (estado actual), relativas a X e Y, asumiendo retardos
x y y para las compuertas.
c) Indicar las restricciones de T1 y T2, respecto a los retardos de las compuertas para tener
modo fundamental de operación. Indicar el tipo de transición, si hay o no carreras, períodos de
oscilación si los hubiera.

T1 T2
Figura P14.2.

Solución.

a) Q = (Xqn)’ = X’ + qn’; Qn = Y + q

Profesor Leopoldo Silva Bijit 19-01-2010


60 Sistemas Digitales
b

x
a

Figura P14.3.

b) El estado inicial se obtiene considerando que luego de un tiempo de tener aplicada las
entradas XY = 00, se llega al estado estable qqn = 11.

c) Cuando ocurre el canto de subida de Y, XY = 01, permanece en qqn = 11. Por lo cual no hay
restricciones para T1 (salvo que sea mayor que cero), tiempo que debe transcurrir antes de
cambiar la entrada X a 1. No hay transiciones.

Luego cuando se produce XY = 11, se excita sólo la variable q (no hay carreras), la cual pasa a
cero después de x; llegando al estado estable qqn = 01.
Por lo tanto se requiere T2 > x para modo fundamental de operación; es decir, el cambio de la
entrada Y se efectúa luego de haberse realizado las transiciones de estado, que demoran x en
este caso.

Y
x
T1 T2

qn

período
y

Figura P14.4.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 14. Máquinas secuenciales asincrónicas 61
Después cuando XY = 10, se produce oscilación; pasando por la siguiente secuencia de estados
inestables: 00, 10, 11, 01, la que se repite periódicamente.

No hay carreras, ya que se excita una variable en cada transición.

El período de la oscilación es: 2( x + y). Se asume que los retardos de propagación para
cambios de la salida de alto a bajo y viceversa son iguales.

Problema 14.2.

Para el siguiente circuito secuencial asincrónico:


a) Determinar la matriz de transiciones empleando código Gray, para el estado presente xyzq
(en ese orden las variables)
b) Determinar estados estables.
c) Para las siguientes formas de ondas de las entradas, dibujar la salida Q.
A
B

d) Indicar los retardos entre los cambios de Q con respecto al evento que los produce.

x
A
y
Q
B
z

Figura P14.5.

Solución.
a) Ecuaciones: X = Aq ; Y = AB ; Z = Bq ; Q = x + y + z

Profesor Leopoldo Silva Bijit 19-01-2010


62 Sistemas Digitales

Estado AB
xyzq 00 01 11 10
0000 0000 0000 0100 0000
0001 0000 0010 1110 1000
0011 0001 0011 1111 1001
0010 0001 0001 0101 0001
0110 0001 0001 0101 0001
0111 0001 0011 1111 1001
0101 0001 0011 1111 1001
0100 0001 0001 0101 0001
1100 0001 0001 0101 0001
1101 0001 0011 1111 1001
1111 0001 0011 1111 1001
1110 0001 0001 0101 0001
1010 0001 0001 0101 0001
1011 0001 0011 1111 1001
1001 0001 0011 1111 1001
1000 0001 0001 0101 0001
XYZQ

Figura P14.6.

b) Estados estables 0000, 0011, 1001, 1111

c) Si ambas entradas están en cero, luego de un tiempo se estará en estado estable 0000.
Las entradas (AB) siguen la secuencia: 00, 10, 11, 01, 00, 01, 11, 10, 00

De 00 a 10 no cambia de estado, queda en 0000.


De 10 a 11: pasa por la secuencia de estados: 0100(después de y), 0101(después de q), luego
se produce carrera entre las variables x y z; pudiendo pasar por la secuencia 1101, 1111; o bien
0111, 1111. La carrera no es crítica, ya que en ambos casos se llega al estado estable
1111(después de x o z, según cual sea el retardo mayor).
De 11 a 01: se produce carrera entre las variables x e y. Pasa por los estados 0111, 0011 o bien
1011, 0011. La carrera no es crítica y llega al estado estable 0011 después de x o y, según
cual sea el retardo mayor.
De 01 a 00: Pasa por la secuencia: 0001(después de z) y luego al estable 0000(después de q).
De 00 a 01: Permanece en estado 0000
De 01 a 11: Pasa a 0100(después de y), luego a 0101(después de q), luego se produce carrera
no crítica entre x y z; pasando por 1101, 1111(si x es menor que z) o bien pasa por 0111,
1111(si z es menor que x). Finalmente llega al estable 1111.
De 11 a 10: se produce carrera no crítica entre las variables y y z. Pasa por 1101, 1001(si y es
menor que z) o bien por la secuencia 1011, 1001(si z es menor que y) llegando finalmente
al estable 1001 después de un retardo (el mayor de entre z y y).
De 10 a 00: Después de x pasa a 0001, y luego de q pasa a 0000.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 14. Máquinas secuenciales asincrónicas 63

A
B
Q
y+ q z+ q y+ q x+ q

Figura P14.7.

d) se han indicado en el diagrama los retardos correspondientes

Observación: El circuito se conoce como Elemento C de Muller. Cambia a uno sólo cuando
ambas entradas son unos y permanece en ese estado hasta que ambas entradas son cero, instante
en el que va a cero; y permanece en cero hasta que ambas entradas sean iguales a uno.
Detecta la igualdad de las entradas.
A B Q+
0 0 0
0 1 Q
1 0 Q
1 1 1

Figura P14.8.

Problema 14.3.

Para un sistema secuencial asincrónico se tiene la siguiente matriz de transiciones:


AB
xyz 00 01 11 10
000 001 001 001 001
001 001 011 111 101
010 001 001 001 001
011 001 011 111 101
111 000 010 110 100
110 000 000 000 000
101 001 011 111 101
100 001 001 001 001
XYZ

Figura P14.9.

Determinar:
a) Ecuaciones para X, Y, Z
b) Circuito
c) Estados Estables

Profesor Leopoldo Silva Bijit 19-01-2010


64 Sistemas Digitales
d) Estando las entradas (bastante tiempo) en 00, se produce canto de subida en B, determinar la
secuencia de estados.
e) Estando las entradas (bastante tiempo) en 10, se produce canto de bajada en A, determinar
la secuencia de estados.
f) Estando las entradas (bastante tiempo) en 00, se produce canto de subida en B, luego de
llegar a un estado estable se produce un canto de subida en A, determinar la secuencia de
estados.
g) Estando las entradas (bastante tiempo) en 00, se produce canto de subida en A, luego de
llegar a un estado estable se produce un canto de subida en B, determinar la secuencia de
estados.

Solución:
a) Deben plantearse tres ecuaciones, y la implementación debe realizarse con tres compuertas,
ya que cada compuerta aporta una variable de estado.

X = x’zA +xzA = Az
Y = x’zB + xzB = Bz
Z = x’ + y’ = (xy)’
b)
A
X x
X
Z z
Z
B Y Y
y

Figura P14.10.

c) Estados estables: 001, 011, 101


d) Si las entradas están en A = 0 y B = 0, se está en estado 001.
Al ocurrir un canto de subida en B, Y tiene un canto de subida instantáneamente y luego de Y
se pasa al estado 011 que también es estable y permanece en él, si no hay cambio de las
entradas.
e) Si las entradas están en A = 1 y B = 0, se está en estado 101.
Al ocurrir un canto de bajada en A, X tiene un canto de bajada instantáneamente y luego de X
se pasa al estado 001 que también es estable y permanece en él, si no hay cambio de las
entradas.
f) Si las entradas están en A = 0 y B = 0, se está en estado 001.
Al ocurrir un canto de subida en B, Y tiene un canto de subida instantáneamente y luego de Y
se pasa al estado 011 que también es estable; luego se produce un canto de subida en A.
Entonces X pasa instantáneamente a 1, y luego de X se llega a 111. Después de Z se llega a
110. A continuación se produce una carrera entre x e y; después de la cual se pasa a 000(si
ambas cambian simultáneamente) o a 100(si x es más rápida que y) o a 010(si y es más rápida

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 14. Máquinas secuenciales asincrónicas 65
que x). En fin, puede decirse que se producirá una oscilación ya que en la columna 11 no se
encuentran estados estables.

001 011 111 110 000 001 111 ......

g) Las tres variables de estado oscilan. Se producen carreras entre las variables x e y.
001 101 111 110 000 001 111 ......

Problema 14.4.

Se dispone de un contador ascendente binario módulo 9, con Q0 la cifra menos significativa.


Diseñar circuito empleando un latch de nand, cuya salida se ponga alta desde la cuenta 3 hasta
la cuenta 8 (ambas inclusive).

Solución.
El latch de nand opera con cantos de bajada de las señales S’ y R’, además debe cuidarse que
ambos controles no queden simultáneamente en cero.
Se tienen, las salidas de los circuitos combinacionales, que detectan cuando el contador módulo
nueve pasa por las cuentas 8, 3 y 0, respectivamente:

C8=Q3
C3 = Q3’Q2’Q1Q0
C0 = Q3’Q2’Q1’Q0’

En la Figura P14.11, se advierte que se puede emplear C3’, tal que su canto de bajada setee el
latch. Para resetear el latch no puede emplearse el canto de bajada de la señal C8, ya que se
viola la condición para funcionamiento confiable del latch. Puede notarse que la señal C0’
cumple las especificaciones de funcionamiento del latch y además establece correctamente la
duración de la salida z.
C3

C8
C0

C3’
C0’

Figura P14.11. Formas de ondas de decodificadores y controles del latch.

Finalmente:

Profesor Leopoldo Silva Bijit 19-01-2010


66 Sistemas Digitales

S’=C3’ z

R’=C0’

Figura 14.12. Latch de nand.

Ejercicios propuestos.

Ejercicio 14.1.

Se tiene el siguiente circuito asincrónico

B z

x
A

Figura E14.1.

a) Determinar tabla de transiciones e indicar estados estables.


b) Determinar las condiciones que deben cumplir los intervalos T1, T2 y T3 para que las
entradas no cambien mientras ocurran transiciones de estados.

Considere la siguiente de secuencia de las entradas:

T1 T2 T3

A
B
x
y
z
Figura E14.2.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 14. Máquinas secuenciales asincrónicas 67
Asumir: X = 2 ; Y = 1 ; Z = 4 Con el tiempo de propagación.
Dibujar las formas de ondas de las salidas x, y, z; dada la secuencia de entradas que se muestra.

Ejercicio 14.2.

Analizar la siguiente red:


b

x
a

Figura E14.3.

Ejercicio 14.3.

Para el siguiente módulo descrito en Verilog, identificar el tipo de carreras. Si son críticas,
eliminarlas mediante rediseño de la codificación binaria de los estados.

module ej(x,r,a,b,c,d,e);
input x,r;
output a,b,c,d,e;
wire ap,bp;

not #1 G1 (ap,a);
not #1 G2 (bp,b);
and #2 G3 (c,ap,x);
and #2 G4 (d,a,b,r);
or #6 G5 (b,d,c); //G8=2 G5=6. b más lento => llega a 11
and #3 G6 (e,bp,x);
or #2 G8 (a,e,d); //G8=6 G5=2. a más lento => llega a 01

endmodule

Ejercicio 14.4.

Se tiene el siguiente circuito asincrónico:


X a

b
Y

Figura E14.4.

Profesor Leopoldo Silva Bijit 19-01-2010


68 Sistemas Digitales
a) Determinar tabla de transiciones.
b) Determinar estados Estables.
c) Con Estado1 = { a = 0, b = 0 } y Estado2 = { a = 1, b = 1 } determinar secuencias de las
entradas para pasar del Estado1 al Estado2 en forma confiable y viceversa.
Indicando cuál es el evento que inicia el cambio de estado
d) Qué combinación de las entradas debe evitarse para que no se presenten oscilaciones. Cómo
podría presentarse oscilación?.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 14. Máquinas secuenciales asincrónicas 69

Índice general.

CAPÍTULO 14 ........................................................................................................................................... 1
MÁQUINAS SECUENCIALES ASINCRÓNICAS. ............................................................................... 1
14.1 BASES ELECTRÓNICAS PARA ALMACENAR BITS. ............................................................................... 1
14.1.1. Metaestabilidad. ...................................................................................................................... 3
14.1.2. Latchs. ..................................................................................................................................... 4
14.2. LATCH ASINCRÓNICO S-R. (LATCH DE NAND) .............................................................................. 5
14.2.1. Esquemático. ........................................................................................................................... 5
14.2.2. Variables. ................................................................................................................................ 6
14.2.3. Ecuaciones. ............................................................................................................................. 7
14.2.4. Matriz de transiciones. ............................................................................................................ 7
14.2.5. Modo fundamental de operación. ............................................................................................ 8
14.2.6. Diagrama de estados. .............................................................................................................. 8
14.2.7. Secuencias de interés ............................................................................................................... 9
a) Transición set a reset ................................................................................................................................... 9
b) Transición de reset a set............................................................................................................................. 10
Análisis del estado 11 en latch S-R ................................................................................................................ 10
14.2.8. Funcionamiento restringido. ................................................................................................. 11
14.2.9. Análisis simplificado. ............................................................................................................ 13
14.2.10. Simulación de circuitos asincrónicos. ................................................................................. 15
14.2 ELIMINA REBOTES (DEBOUNCE) ...................................................................................................... 16
14.3 SINCRONIZACIÓN DE UN S-R .......................................................................................................... 17
14.4. LATCH ASINCRÓNICO S-R. (LATCH DE NOR) ............................................................................... 18
14.4.1. Esquemático. ......................................................................................................................... 18
14.4.2. Variables. .............................................................................................................................. 19
14.4.3. Ecuaciones. ........................................................................................................................... 19
14.4.4. Matriz de transiciones. .......................................................................................................... 19
14.4.5. Diagrama de estados. ............................................................................................................ 19
14.4.6. Secuencias de interés. ............................................................................................................ 20
14.4.7. Funcionamiento simplificado. ............................................................................................... 21
14.4.8. Resumen Latch de NOR. ........................................................................................................ 22
14.4.9. Análisis simplificado, con un retardo. ................................................................................... 22
14.9.10. Latch positivo D .................................................................................................................. 23
14.5. DISEÑO DE LATCH JK EN BASE A LATCH DE NOR......................................................................... 24
14.6. DISEÑO DE UN FLIP-FLOP JK SINCRÓNICO. ..................................................................................... 25
14.7. FLIP-FLOPS DISPARADOS POR CANTOS ........................................................................................... 27
14.8. MASTER SLAVE. MAESTRO-ESCLAVO............................................................................................ 28
Master Slave de tipo D. ..................................................................................................................... 31
14.9. FLIP-FLOP SINCRÓNICO D. ............................................................................................................ 31
14.10. LATCH TRANSPARENTE. ............................................................................................................... 35
14.11. ANÁLISIS DE MULTIVIBRADOR AESTABLE. .................................................................................. 40
14.12. MULTIVIBRADOR MONOESTABLE................................................................................................. 42
Análisis:............................................................................................................................................. 43
14.13. CARRERAS. .................................................................................................................................. 45
14.13.1. Carrera no crítica. .............................................................................................................. 45

Profesor Leopoldo Silva Bijit 19-01-2010


70 Sistemas Digitales
14.13.2. Carrera crítica. ....................................................................................................................48
14.14. DISEÑO DE SISTEMA ASINCRÓNICO BASADO EN DIAGRAMA DE FLUJO. .........................................51
14.15. DISEÑO DE SISTEMA ASINCRÓNICO BASADO EN DIAGRAMA DE ESTADOS......................................53
PROBLEMAS RESUELTOS. ........................................................................................................................59
Problema 14.1. ...................................................................................................................................59
Problema 14.2. ...................................................................................................................................61
Problema 14.3. ...................................................................................................................................63
Problema 14.4. ...................................................................................................................................65
EJERCICIOS PROPUESTOS. ........................................................................................................................66
Ejercicio 14.1. ....................................................................................................................................66
Ejercicio 14.2. ....................................................................................................................................67
Ejercicio 14.3. ....................................................................................................................................67
Ejercicio 14.4. ....................................................................................................................................67
ÍNDICE GENERAL. ....................................................................................................................................69
ÍNDICE DE FIGURAS .................................................................................................................................71

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 14. Máquinas secuenciales asincrónicas 71

Índice de figuras

Figura 14.1 Almacenamiento en memorias dinámicas.................................................................. 1


Figura 14.2 Almacenamiento estático. .......................................................................................... 1
Figura 14.3 Inversores CMOS realimentados. .............................................................................. 2
Figura 14.3a. Puntos de equilibrio................................................................................................ 2
Figura 14.3b. Características de transferencia individuales. ......................................................... 3
Figura 14.4 Análisis metaestabilidad. ........................................................................................... 3
Figura 14.5 Lectura y escritura...................................................................................................... 4
Figura 14.6 Latch mediante NANDs y NORs. ............................................................................. 5
Figura 14.7 Valores estáticos almacenados. .................................................................................. 5
Figura 14.8 Variables en latch de NANDs. ................................................................................... 5
Figura 14.9 Valores presente y próximo, en el tiempo.................................................................. 6
Figura 14.10 Retardos como memorias de corto plazo. ................................................................ 6
Figura 14.11 Matriz de transiciones del latch de NAND. ............................................................. 7
Figura 14.12. Diagrama de estados del latch de NAND. .............................................................. 8
Figura 14.13 De set a reset. ........................................................................................................... 9
Figura 14.14 De set a reset. ......................................................................................................... 10
Figura 14.15 S’ adelanta a R’. ..................................................................................................... 11
Figura 14.16 R’ adelanta a S’. ..................................................................................................... 11
Figura 14.17. S’ y R’ llegan juntas. ............................................................................................. 11
Figura 14.18. Matriz de transiciones en modo confiable. ........................................................... 12
Figura 14.19. Tabla característica S-R. ....................................................................................... 12
Figura 14.20. Tabla de excitaciones parta S-R. ........................................................................... 13
Figura 14.21 Resumen funcionamiento latch de NANDs.. ......................................................... 13
Figura 14.22 Análisis con un retardo. ......................................................................................... 14
Figura 14.23. Matriz de transiciones con un solo retardo. .......................................................... 14
Figura 14.24. Diagrama de estados simplificado. ....................................................................... 14
Figura 14.25. Diagrama para simular un latch. ........................................................................... 15
Figura 14.26. Formas de ondas generadas en la simulación. ..................................................... 15
Figura 14.27. Oscilación en latch de NAND. .............................................................................. 16
Figura 14.28. Elimina rebotes. .................................................................................................... 16
Figura 14.29. Sincronización. Empleo de señal de reloj. ............................................................ 17
Figura 14.30 Funcionamiento normal. ........................................................................................ 18
Figura 14.31. Latch de NOR. ...................................................................................................... 18
Figura 14.32. Matriz de transiciones latch de nor. ...................................................................... 19
Figura 14.33. Diagrama de estados latch de nor. ........................................................................ 20
Figura 14.34. Secuencias de interés en latch de nor. ................................................................... 20
Figura 14.35. Funcionamiento simplificado, latch de NORs. .................................................... 21
Figura 14.36. Tabla característica, latch de NOR. ...................................................................... 22
Figura 14.37. Tabla de excitaciones, latch de NORs. ................................................................. 22
Figura 14.38. Esquema con solo una variable de estado. ............................................................ 23
Figura 14.39. Elimina rebotes con latch de nor. .......................................................................... 23
Figura 14.39a. Latch positivo D. ................................................................................................. 23
Figura 14.40 Matriz de transiciones JK....................................................................................... 24

Profesor Leopoldo Silva Bijit 19-01-2010


72 Sistemas Digitales
Figura 14.41. Tabla de transiciones SR. ...................................................................................... 24
Figura 14.42. Programa del SR. .................................................................................................. 24
Figura 14.43. Latch JK basado en SR. ........................................................................................ 25
Figura 14.44. Formas de ondas en latch JK. ............................................................................... 25
Figura 14.45. Sincronización de flip-flop JK .............................................................................. 26
Figura 14.46. Formas de ondas conmutación JK......................................................................... 26
Figura 14.47. Reloj angosto......................................................................................................... 27
Figura 14.48. Formas de ondas.................................................................................................... 27
Figura 14.48a. Generación de pulso angosto. .............................................................................. 28
Figura 14.48b. JK, disparado por cantos de bajada del reloj. ...................................................... 28
Figura 14.49. Flip-flop JK master-slave. ..................................................................................... 29
Figura 14.50. Formas de ondas en flip-flop master-slave. .......................................................... 29
Figura 14.51. Captura de unos. .................................................................................................... 30
Figura 14.52. Master-slave de tipo D. ......................................................................................... 31
Figura 19.53. Flip-flop sincrónico D. .......................................................................................... 32
Figura 19.54. Formas de ondas. Conmutación flip flop sincrónico D. ........................................ 32
Figura 19.55. Análisis esquema simplificado. ............................................................................. 33
Figura 19.56. Matriz de transiciones flip-flop sincrónico D. ...................................................... 34
Figura 14.57. Latch transparente. ................................................................................................ 35
Figura 14.58. Latch transparente mediante compuertas. ............................................................. 35
Figura 14.58a. Tabla de transiciones latch transparente. ............................................................. 37
Figura 14.59. Restricciones temporales. ...................................................................................... 37
Figura 14.59a. Latch sin perturbaciones. ..................................................................................... 38
Figura 14.59b. Transiciones latch transparente. Carreras no críticas. ......................................... 38
Figura 14.60. Esquema latch 74LS373........................................................................................ 39
Figura 14.61. Formas de ondas latch figura 19.60. ..................................................................... 39
Figura 14.61a. Latch transparente negativo................................................................................. 40
Figura 14.61b. Master Slave basado en latchs............................................................................. 40
Figura 14.62. Oscilador elemental, mediante compuertas. .......................................................... 41
Figura 14.63. Matriz de transiciones, oscilador asincrónico figura 14.62. .................................. 41
Figura 14.64. Formas de ondas multivibrador aestable. .............................................................. 42
Figura 14.65. Multivibrador monoestable. .................................................................................. 42
Figura 14.66. Formas de ondas para figura 14.65. ...................................................................... 43
Figura 14.67. Tabla de transiciones de Figura 14.65. .................................................................. 44
Figura 14.68. Otro esquema para multivibrador monoestable. ................................................... 44
Figura 14.69. Carrera no crítica. .................................................................................................. 45
Figura 14.70. Tabla de transiciones. Carrera no crítica. .............................................................. 46
Figura 14.71. Transiciones. Carrera no crítica, gana d. ............................................................... 47
Figura 14.72. Transiciones. Carrera no crítica, gana b. ............................................................... 47
Figura 14.73. Carrera crítica. ....................................................................................................... 48
Figura 14.74. Carrera crítica. Llegando a 11. .............................................................................. 49
Figura 14.75. Carrera crítica. Llegando a 10. .............................................................................. 49
Figura 14.76. Transiciones simbólicas. ....................................................................................... 49
Figura 14.77. Transiciones entre estados..................................................................................... 50
Figura 14.78. Estados intermedios. ............................................................................................. 50
Figura 14.79. Transiciones simbólicas. ....................................................................................... 50
Figura 14.80. Transiciones libres de carreras. ............................................................................. 51

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 14. Máquinas secuenciales asincrónicas 73
Figura 14.81. Generación de fases de reloj. ................................................................................ 51
Figura 14.82. Formas de ondas de fases de reloj. ........................................................................ 51
Figura 14.83. Estados estables y transiciones. ............................................................................ 51
Figura 14.84. Tabla de flujo de transiciones. .............................................................................. 52
Figura 14.85. Diagrama de transiciones. ..................................................................................... 52
Figura 14.86. Codificación libre de carreras. .............................................................................. 52
Figura 14.87. Tabla de transiciones............................................................................................. 53
Figura 14.88. Diagrama de estados contador módulo 3. ............................................................. 53
Figura 14.89. Asignación de estados sin carreras........................................................................ 54
Figura 14.90. Tabla de transiciones contador módulo 3. ............................................................ 54
Figura 14.91. Minimización empleando condiciones superfluas. ............................................... 55
Figura 14.92. Minimización de salidas. ...................................................................................... 55
Figura 14.93. Diagrama de estados contador módulo 3. ............................................................. 56
Figura 14.94. Tabla de transiciones contador módulo 3. ............................................................ 57
Figura 14.95. Mapa de próximos estados de contador módulo 3. ............................................... 57
Figura 14.96. Mapa de funciones de salida de contador módulo 3. ............................................ 58
Figura 14.97. Relaciones causa-efecto contador módulo 3. ........................................................ 58
Figura P14.1. ............................................................................................................................... 59
Figura P14.2. ............................................................................................................................... 59
Figura P14.3. ............................................................................................................................... 60
Figura P14.4. ............................................................................................................................... 60
Figura P14.5. ............................................................................................................................... 61
Figura P14.6. ............................................................................................................................... 62
Figura P14.7. ............................................................................................................................... 63
Figura P14.8. ............................................................................................................................... 63
Figura P14.9. ............................................................................................................................... 63
Figura P14.10. ............................................................................................................................. 64
Figura P14.11. Formas de ondas de decodificadores y controles del latch. ................................ 65
Figura 14.12. Latch de nand. ....................................................................................................... 66
Figura E14.1. ............................................................................................................................... 66
Figura E14.2. ............................................................................................................................... 66
Figura E14.3. ............................................................................................................................... 67
Figura E14.4. ............................................................................................................................... 67

Profesor Leopoldo Silva Bijit 19-01-2010


1

Capítulo 15

Registros. Buses. Memorias.

15.1. Registros.

Se denomina registro a una serie de flip-flops agrupados y con señales de control común. Se
considera que se leerán o escribirán como una unidad.

Se muestra a continuación un registro de largo 4, con controles de preset y reset (o clear)


asincrónicos, y con reloj común. Se asume que el grupo es disparado por canto de subida.

S
D Q
_
CP Q
R

S
D Q
_
CP Q
R

S
clk D Q
_
CP Q
R

Reset
S
D Q
_
CP Q
R

Set

Figura 15.1. Registro de cuatro bits.

15.2. Registro con habilitación de escritura.

Un esquema de un registro con habilitación de escritura, dispositivo muy empleado para


almacenar variables locales en un procesador, se muestra en la figura 15.2.

Profesor Leopoldo Silva Bijit 19-01-2010


2 Sistemas Digitales
La señal de control Write Enable habilita el registro para escritura. Con el canto de subida del
reloj, estando WE = 1, se escribe (o carga) el registro con los datos de entrada. Cuando WE = 0,
el registro conserva su valor (queda en modo hold). Un diseño comercial similar al que se
muestra, es el 74LS173, que además tiene salida de tercer estado. La celda básica del registro
resulta más simple si el flip-flop es JK, ya que naturalmente éste permanece en modo hold con
J=0 y K = 0.

Puede anotarse la transferencia como:


WE: Q = D;
también suele usarse:
WE: D Q o bien: WE: Q D.

La señal de control que produce la transferencia es WE.

D3
Q3

D Q
_
CP Q’

D2
Q2

D Q
CP Q’

D1
Q1

Q
D
_
Q’
CP

D0
Q0

D Q
_
CP Q’

WE

clk

Figura 15.2. Registro con habilitación de escritura.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 15. Registros. Camino de datos. Memorias. 3
La señal WE debe estar estable durante el tiempo de setup del registro.

En la práctica las señales de control de los registros son generados en una máquina de estados
con modelo de Moore.

En este caso, se ingresa a un estado con el canto del reloj, y se mantienen las salidas asociadas
al estado hasta el próximo canto de subida del reloj.

Estado 1
WE=1

Estado 2
WE=0

Figura 15.3. Estados que generan la señal de control WE.

Durante el estado 1, la máquina de estados habilita la escritura del registro, activando WE.
Notar que la señal efectivamente se activa después del canto de subida del reloj, y es sincrónica
con el reloj.

En el estado 1, las señales Di se propagan a través de las compuertas y llegan a niveles estables
en las entradas de los flip-flops.
En el estado 2, se captura la información en el registro y permanecerá hasta que se inicie otro
ciclo de escritura en el registro.

Nótese que antes y durante el Estado 1, la salida del registro contiene la información que se
haya escrito anteriormente. A partir del estado 2, tiene nueva información.

clk

WE

Habilitación Escritura
Estado 1 Estado 2

Figura 15.4. Control del registro con WE.

Profesor Leopoldo Silva Bijit 19-01-2010


4 Sistemas Digitales
Si el registro se hubiera formado con latchs transparentes, habrían salidas nuevas durante el
estado 1. Es decir se puede comenzar a usar la nueva información un ciclo de reloj antes,
relativo al caso de registros disparados por cantos.

Un registro puede anotarse simbólicamente como se muestra en la Figura 15.5:

A la derecha del esquema para el registro, se indica la descripción de la transferencia.

Que se interpreta así: Cuando WE esté alto y cuando llegue el canto del reloj, entonces capture
en el registro R, lo que esté estable en A, tsetup antes del canto del reloj. Suele no indicarse el
reloj, en la ecuación RTL (Register Transfer Level).

WE

WE: R = A
A

clk

Figura 15.5. Representación simbólica de registro con habilitación de escritura.

15.3 Funcionamiento Sincrónico. Transferencias entre Registros.

Se tienen los siguientes registros:


WE WE WE
1 2 3

R1 R2 R3
Red Com- R. Comb.
binacional.
Tc1 Tc2
A Tm1 Tm2

clk clk clk

Figura 15.6. Transferencia entre registros.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 15. Registros. Camino de datos. Memorias. 5
Consideremos que las redes combinacionales tienen un tiempo mínimo de propagación y un
tiempo máximo o crítico, desde que se le aplican entradas hasta que se tienen salidas.

El esquema simboliza la capacidad de efectuar acciones u operaciones monádicas de una red


combinacional. Se ilustra: R2 = f(R1) y R3 = g(R2), con un ingreso de datos simbolizado por
la transferencia R1 = A.

En el esquema se ilustra la composición de funciones, ya que globalmente puede escribirse:


R3 = g(f(A)).

15.3.1. Requerimientos de tiempo.

Se considera el tiempo de variabilidad del reloj, o tiempo de corrimiento (skew), debido a que
en dos lugares distintos no puede tenerse la misma señal. Éstas viajan a través de cables y
debería asumirse que el reloj que llega al registro 2, puede estar adelantado (clk2a) respecto a
clk1 o atrasado (clk2b) respecto de él, como se muestra en la gráfica a continuación.

clk1
clk2a
clk2b
Corrimiento clk. ( tskew)

Figura 15.7. Corrimientos del reloj (skew).

Con:
Tf1 = Tiempo desde el canto de subida de clk1 hasta tener salidas estables en las salidas de R1.
Tc1 = tiempo de propagación a través de la ruta crítica en la red combinacional 1. Es decir,
cuando haya tomado nivel estable la señal que se propaga más lentamente a través de la red, a la
salida de R1.
Tm1 = tiempo mínimo de propagación a través de la red combinacional 1. Es decir, cuando
haya tomado nivel estable la señal que se propaga más rápidamente a través de la red que
alimenta a R2.
Tsu2 = Tiempo de setup-up de los flip-flops del registro R2.
Thold2 = Tiempo de sostenimiento de los flip-flops del registro R2.

Para que la captura de información sea confiable en el registro 2 debe cumplirse que el período
del reloj debe ser mayor que: T(clk2 ) > Tskew + Tf1 + Tc1 + Tsu2

Profesor Leopoldo Silva Bijit 19-01-2010


6 Sistemas Digitales

T(clk2)

clk2
clk1

Tsu2
Tskew Tf Tc
1 1

Figura 15.8. Requerimientos de setup del registro 2.

Se considera el peor caso, ya que se asume que clk1 está atrasado respecto de clk2. En caso de
estar adelantado, se podría tener una frecuencia de funcionamiento sincrónica mayor, ya que en
este caso se requiere un T(clk2) menor.

Para que las entradas permanezcan estables un poco después del canto de subida en el registro 2,
debe cumplirse: Thold2 < Tf1 +Tm1 + Tskew

Thold
2

clk2
clk1

Tskew
Tf Tm1
1
Figura 15.9. Requerimientos de hold para el registro 2.

También se ha considerado el peor caso para determinar que se cumpla el requerimiento del
tiempo de sostenimiento de las entradas después del canto; se asume que el clk1 está atrasado
respecto del clk2. En general este requerimiento es más fácil de cumplir que el de tiempo de
setup.

Si se desea usar el mismo reloj, para efectuar transferencias entre registros, deben cumplirse los
requerimientos de estableciemiento (setup) y sostenimiento (hold) de todos los registros del
sistema. Esto implica que la etapa más lenta es la que determina la frecuencia del reloj.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 15. Registros. Camino de datos. Memorias. 7
15.3.2. Operaciones posibles.

Asumiendo que las señales WE1, WE2 y WE3 son salidas de una máquina secuencial de
Moore, controlada por el mismo reloj, se tendrá que es posible efectuar concurrentemente las
operaciones:

R1 = A; R2 = f1(R1); R3 = f2(R2)

Durante el ciclo en que están habilitadas las señales WE, los valores de A, R1 y R2 permanecen
estables (son los que figuran a la derecha en las ecuaciones anteriores). Al terminar dicho ciclo,
se establecen los nuevos contenidos de estos registros; los nuevos valores serán asignados a las
variables que figuran a la izquierda en las ecuaciones anteriores.

Si se omite el registro R2, la misma operación anterior puede plantearse:

R1 = A; R3 = f2(f1(R1))

Con ello se tiene una red combinacional más compleja, y posiblemente resulte una frecuencia
sincrónica menor, debido a que aumentan los tiempos de propagación, si las funciones
combinacionales deben efectuarse en secuencia. No obstante, el tiempo de propagación entre A
y la salida de R3 se reduce.

15.3.3. Operaciones combinacionales alternativas.

Si las funciones combinacionales son alternativas, puede expresarse:

R1 = A; if ( C ) then R3 = f1(R1) ; else R3 = f2(R1);

Lo cual puede lograrse con un multiplexor, comandado por la señal de control C, la cual
también es generada por la máquina secuencial que genera los WE. En este caso la frecuencia
máxima queda determinada por la función combinacional que tenga propagación más lenta.
Obviamente debe agregarse al tiempo que toma realizar las acciones, el tiempo que adiciona el
multiplexor.

WE C WE
1 3
R1 f1( ) R3
1
A

f2( ) 0

Figura 15.10. Funciones combinacionales alternativas.

Profesor Leopoldo Silva Bijit 19-01-2010


8 Sistemas Digitales
Hasta el momento se ha estado desarrollando cómo efectuar operaciones y depositar los
resultados en registros. Los recursos planteados permiten implementar la asignación a una
variable del resultado de una operación monádica. Otra cuestión que es de interés es el poder
mover los datos entre registros, ya sea para memorizar un resultado parcial, o para intercambiar
el contenido de éstos, o para copiar una variable en otra. Es decir deseamos estudiar un
conjunto de registros y las conexiones entre ellos para posibilitar dichas transferencias.

15.4. Camino de Datos.

Se denomina así a las formas empleadas para conectar los recursos, en este caso los registros.
Existen varias estrategias que se diferencian entre sí por los recursos empleados y el tiempo que
demoran en efectuarse las transferencias.

Cuando el camino de datos soporta transferencias simultáneas se requerirán menos estados para
realizar las acciones requeridas.

15.4.1. Conexiones punto a punto.

Esta estrategia requiere conexiones entre cada registro fuente y cada registro destino. Es decir si
deseamos conectar punto a punto a tres registros, se requiere que las tres salidas estén
conectadas con las tres entradas.

En el desarrollo actual los registros suelen ser de 32 bits, y se dispone de un número elevado
de ellos, sobre 32.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 15. Registros. Camino de datos. Memorias. 9
M0 WE0

R
0
0
1
2

M1 WE1

R
0 1
1
2

M2 WE2

R
0 2
1
2

Figura 15.11. Conexiones punto a punto entre 3 registros.

La transferencia R1 = R2 se logra activando en un mismo ciclo a: WE1 y M1 = 2


En este caso la señal M1 está formada por dos líneas que llevan el control M1[1]=1 y M1[0] =0,
al multiplexor que alimenta la entrada del registro R1.

La conexión también permite la transferencia simultánea: R0 = R1 y R2 = R1.


Se logra en el mismo ciclo de reloj, que activa las salidas: WE0 =1, WE2 = 1, M0 =1, M2 =1
Nótese que se está leyendo el registro R1 y escribiendo en R0 y R2. Durante el ciclo de reloj, la
salida de R1 está estable y viaja a través del camino de datos, y se propaga a través de los
circuitos combinacionales que forman los multiplexores 0 y 2, y llega a las entradas de los
registros R0 y R2 antes del próximo canto de subida del reloj. En este mismo ciclo, los valores
de R0 y R2 conservan los valores que tenían desde la última vez que fueron escritos. Los
nuevos valores de R0 y R2 son capturados al terminar el ciclo, justo cuando vuelve a subir el
reloj.

Las transferencias R0 = R1, R1 = R2 también pueden realizarse. Nóte que en ésta, se lee R1 y
se escribe R1 en el mismo ciclo.

Profesor Leopoldo Silva Bijit 19-01-2010


10 Sistemas Digitales
Se activan: WE0, WE1, M0 = 1, M1 = 2. En el ciclo que se activan estas salidas desde el
controlador, el contenido de R1 no cambia. Permitiendo así mantener el valor en la entrada de
R0. Por otro lado, como R2 no cambia su valor, posibilita que éste llegue en forma estable a las
entradas de R1, pasando por el multiplexor 1. Al llegar el próximo canto de subida del reloj, se
captura el nuevo valor de R1 y de R0.

La operación de intercambio de dos registros puede también efectuarse en un mismo ciclo. Esto
puede verse analizando el caso anterior, con: R0 = R1, R1 = R0.

La estructura permite R1 = R1.

La transferencia R1 = R2, R1 =R0 en la cual se escribe dos cosas diferentes en el mismo


registro, no puede efectuarse, ya que el multiplexor 1 sólo acepta un valor. Excluyendo así estas
operaciones ilegales.

La versatilidad y rapidez con que se pueden realizar transferencias en el esquema anterior se


debe a la gran cantidad de recursos destinados al camino de datos.

15.4.2. Bus simple.

Se emplea bus para un grupo de cables que efectúa determinados recorridos, transportando los
datos, y que son compartidos por varias fuentes de datos.

La siguiente estructura emplea un bus de escritura que es compartido por las erntradas de los
registros. Ahora se tiene un solo multiplexor. Si se considera el costo de un multiplexor de 3
vías de 32 bits cada una; más aún si se tienen 32 registros, ya que en este caso debería ser un
mux de 32 vías de entrada con 32 bits cada una, podrá estimarse que esta configuración emplea
menos recursos de hardware que la conexión punto a punto( es decir, mucho menos compuertas
o productos).

Al existir el bus, éste solo puede ser empleado para una transferencia por ciclo. Se estudiarán
transferencias similares a las vistas antes, para poder comparar los aumentos de tiempo que
derivan de ocupar menos espacio de silicio.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 15. Registros. Camino de datos. Memorias. 11
WE0

R
0
Bus

B WE1

R
0 1
1
2

WE2

R
2

Figura 15.12. Bus simple.

La transferencia R1 = R2 se logra activando: WE1 = 1, B = 2. En un ciclo.


La transferencia simultánea: R0 = R1 y R2 = R1, se logra en un ciclo.
Se activan WE0 = 1, WE2 = 1 y B=1, logrando al finalizar el ciclo la captura simultánea del
valor de R1 en R0 y R2. Esto es posible ya que el bus queda ocupado con la información que
proviene de la salida de R1.

Las transferencias R0 = R1, R1 = R2 demandan dos ciclos, pero importa el orden en que se
activen los controles. Ya que primero debe leerse R1 y escribirse en R0; luego puede
sobreescribirse R1 con el contenido de R2. Lo cual se logra con los controles: WE0 = 1, B = 1
en el primer ciclo; luego: WE1 = 1, B = 2 en el segundo ciclo de reloj.

En general en esta estructura sólo puede efectuarse una escritura en un registro por ciclo de
reloj. Debe compartirse el bus.

Profesor Leopoldo Silva Bijit 19-01-2010


12 Sistemas Digitales
La operación de intercambio de dos registros: R0 = R1, R1 = R0, resulta más compleja en esta
estructura. Su realización requiere de un registro temporal, en caso de arreglos de 32 registros
suele haber un grupo dedicado a estas funciones; en el caso muy simplificado que se estudia se
empleará el registro R2 como temporal.
Entonces, en un primer ciclo: R2 = R0 salvando el contenido de R0. En el siguiente R0=R1,
sobreescribe R0, cambiando su contenido original que ya está salvado en R2. Finalmente
R0=R2.

En lugar del multiplexor puede emplearse registros que tengan habilitación de la salida en tercer
estado, suele denominarse OE (output enable) a esta señal. Entonces un simple decodificador
de 2 a tres vías, en este caso, permite alimentar a una y sólo una señal habilitadora de tercer
estado. Ver por ejemplo el 74LS173.

15.4.3. Estructura multibus.

Para implementar operaciones diádicas resulta útil disponer de salida dual del arreglo de
registros. Es decir que cada registro puede alimentar dos buses diferentes, sean éstos los buses
de salida A y B. Los buses A y B suelen alimentar una red combinacional que es capaz de
realizar operaciones diádicas; es decir con dos operandos. Dicha red combinacional se
denomina unidad aritmética.

Además para escribir en el arreglo de registros puede disponerse de un bus de escritura, sea éste
el bus C. Esta arquitectura limita la escritura a un solo registro por ciclo. Lo que esté
alimentando al bus C, en el esquema la señal WReg, se escribe en un registro del arreglo.

En un mismo ciclo pueden realizarse transferencias simultáneas a los buses de salida, y una
escritura, por ejemplo:

bus A = R0; bus B = R2; R1 = WReg;

Transferencias que pueden lograrse con los controles:

A = 0 ; B = 2; WE1 =1;

Incluso puede escribirse en un registro que se esté leyendo. Esto es posible, ya que la señal WEi
habilita el camino desde el bus C hasta la entrada del registro i, pero el contenido de éste no
cambia hasta el próximo canto del reloj. Y en el mismo ciclo, puede estarse leyendo en forma
estable la salida actual del registro i.

Si el registro estuviera implementado con latchs transparentes, cuando se habilita el WEi, se


dispone a la salida del registro i-ésimo el valor que se tenga en el bus C. es decir: Ri = WReg

Si las señales WE se implementan con un decodificador, se asegura que sólo una de ellas estará
activa. Esto en el caso que se desee escribir solamente en un registro.
El esquema de buses múltiples se muestra a continuación:

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 15. Registros. Camino de datos. Memorias. 13
WE0

A
R
0

Bus C 0
1
2 Bus A

WE1 f(A,B)

R
1
WReg
B

Bus B
0
WE2 1
2
R
2

Figura 15.13. Camino de datos con tres buses.

Profesor Leopoldo Silva Bijit 19-01-2010


14 Sistemas Digitales
15.5. Memoria RAM Estática.

Desde un punto de vista lógico una memoria tiene un bus unidireccional de direcciones, un bus
bidireccional de datos y señales de control. En general se asume una comunicación asincrónica
entre la memoria y los registros del sistema sincrónico; esto permite adaptarse a memorias con
diferentes tiempos de acceso.

Desde que se coloca la dirección en el bus de direcciones, transcurre un tiempo hasta que en la
salida se tiene datos válidos en el bus de datos, esto en una operación de lectura; también
transcurre un tiempo para que, lo que se ha colocado en el bus de datos, sea grabado en la
dirección de memoria, esto en una operación de escritura. Ese tiempo se denomina de acceso.

Las memorias estáticas asincrónicas no necesitan que se les suministre un reloj, y para su
control disponen de tres señales que las manejan:

Chip Enable (E’): Con esta señal en nivel bajo se habilita la memoria.

Write Enable (W’): Cuando está baja (y la memoria está habilitada), los valores en el bus de
datos son escritos en la localización seleccionada por el bus de direcciones.

Output Enable (G’): Cuando está baja (y la memoria está habilitada), el bus de datos es
alimentado con el valor de la localización de memoria seleccionada por el bus de direcciones.
Cuando está alta, el bus de datos interno de salida queda en un estado de alta impedancia.

Memoria
ADD[n..0]
Estática
E’ D[m..0]
W’
G’

Figura 15.14. Control asincrónico de memoria estática.

Para una memoria de 8KB, se tiene que m es 7, y n es 12. Es decir 8 bits de datos y 13 de
direcciones, ya que 8K equivale a 8x1024=213.

15.5.1. Ciclo de lectura.

Los fabricantes establecen los requerimientos temporales de las señales de control. Indicando
las secuencias que deben cumplir las formas de ondas de las señales de control, y una tabla con
valores mínimos y máximos para los parámetros.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 15. Registros. Camino de datos. Memorias. 15

Figura 15.15. Ciclo de lectura.

Las formas de ondas para el ciclo de lectura son con W’=1.

Parámetro Símbolo mín máx


Tiempo de ciclo de lectura tAVAV 12 -
Tiempo acceso dirección tAVQV - 12
Tiempo acceso luego de habilitación de chip tELQV - 12
Tiempo acceso luego de habilitación de salida tGLQV - 6
Mantenimiento desde cambio de dirección tAXQX 4 -
De chip enable bajo a salida activa tELQX 4 -
De chip enable alto a salida alta impedancia tEHQZ 0 6
De output enable bajo a salida activa tGLQX 0 -
De output enable alto a salida alta impedancia tGHQZ 0 6
Tiempo de encendido tELICCH 0 -
Tiempo de apagado tEHICCL - 12

Figura 15.16. Parámetros de lectura.

Los valores corresponden a una memoria con tiempo de acceso igual a 12 ns, que suele
indicarse al final de las siglas que identifican la memoria.

El ciclo de lectura comienza cuando E’ y G’ están bajas. Los datos son válidos luego del tiempo
de acceso en lectura. Luego de que E’ o G’ suben, los datos se mantienen en la salida, hasta que
ésta entra en flotación.

El tiempo de ciclo es el tiempo mínimo que debe transcurrir entre dos requerimientos a la
memoria. Esto implica que no se puede cambiar el bus de direcciones durante una operación.

Profesor Leopoldo Silva Bijit 19-01-2010


16 Sistemas Digitales

tc

direcciones
ta
Chip enable E’
tae

Output enable G’ tag

tb tf
datos validos

Figura 15.17. Requerimientos temporales lectura.

Se actualiza el bus de direcciones.


Luego de un tiempo se activan: chip enable y output enable.
Luego del tiempo de acceso desde el cambio de dirección (ta), o del canto de bajada de chip
enable (tae), o del tiempo de acceso desde la habilitación de la salida (tag), el tiempo que sea
mayor, los datos quedan disponibles para ser capturados en el bus de datos. El tiempo de acceso
al bus, luego de activar la salida se indica con tb.
Luego de esto puede deshabilitarse la salida y la señal chip enable. Los datos se mantienen en la
salida un breve lapso (tf).
El bus de direcciones debe permanecer estable durante el tiempo de ciclo, antes de proceder a
un nuevo acceso a la memoria (tc).

15.5.2. Ciclo de escritura.

Las formas de ondas para el ciclo de escritura son con G’=1.

Figura 15.18. Ciclo de escritura.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 15. Registros. Camino de datos. Memorias. 17
Parámetro Símbolo mín máx
Tiempo de ciclo de escritura tAVAV 12 -
Tiempo de setup de la dirección tAVWL 0 -
Dirección válida hasta el fin de la escritura tAVWH 10 -
Ancho de pulso de escritura tWLWH 10 -
Ancho de pulso de escritura hasta enable tWLEH 10 -
Datos válidos hasta fin de escritura tDVWH 6 -
Tiempo de mantenimiento de datos (hold) tWHDX 0 -
De write bajo hasta alta impedancia tWLQZ 0 6
De write alto hasta salida activa tWHQX 4 -
Tiempo de recuperación escritura tWHAX 0 -

Figura 15.19. Parámetros de escritura.

Los datos son capturados en la celda de memoria cuando W’ tiene un canto de subida, en ese
momento los datos del bus deben estar estables. Además el bus de direcciones debe estar estable
antes del canto de bajada de W’ (setup), y luego del canto de subida de W’ (hold). Los glitches
en el bus de direcciones pueden producir cambios de estado no deseados en la memoria.
tc

direcciones
tas tah
Chip enable E’

tw
Write enable W’
th
ts
datos validos

Figura 15.20. Requerimientos temporales escritura.

Luego de establecida la nueva dirección, no puede activarse el canto de bajada de write enable
hasta tas segundos después. El ancho del pulso de escritura debe tener un mínimo de tw. Los
datos que serán escritos en la celda, no deben cambiar durante el tiempo de setup, ts segundos
antes del canto de subida del pulso de escritura, y deben mantenerse th segundos después del
canto de subida del pulso de escritura. También no puede cambiarse el bus de dirección,
debiendo mantenerlo estable tah segundos luego del canto de subida del pulso de escritura.

15.5.3. Control de memoria ram estática.

Se desea diseñar un controlador que permita conectar una memoria a un sistema sincrónico. Los
controles read y write, sincronizados por cantos de bajada, desencadenan las secuencias de
señales de control, que permiten leer y escribir en la memoria. La Figura 15.21, muestra el
ambiente de diseño.

Profesor Leopoldo Silva Bijit 19-01-2010


18 Sistemas Digitales

add direcciones

la Memoria
reset E’
W’
read
controlador
G’
write

ld cd doe’
datos
Din
dw

Dout

clk

Figura 15.21. Entorno de diseño.

La operación de lectura, puede describirse por la transferencia:

Dout = M[add]

La operación de escritura, puede escribirse:

M[add] = Din

Un diagrama de bloques simplificado se muestra en la Figura 15.22.


read write add

Din
Memoria Dout
Controlador

clk clk

Figura 15.22. Entorno de diseño.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 15. Registros. Camino de datos. Memorias. 19
Las señales de lógica negativa: E’, G’, W’ y doe’, se identifican con: Ep, Gp, Wp y doep.
Las órdenes: reset, read y write se consideran pulsos de un ancho de pulso del reloj, y
sincronizadas por cantos de bajada. Todas las salidas del controlador serán señales
sincronizadas por cantos de subida, por lo cual las habilitaciones de escritura en los registros se
efectúan con cantos de bajada del reloj.
Se emplean: la por load address, ld por load data, cd por captura datos.

Para cumplir con los requerimientos temporales de la memoria, basta que dos períodos del reloj
sean mayores que el tiempo de acceso. Esto puede comprobarse, en el esquema de las señales de
control de la Figura 15.23, ya que transcurren dos ciclos desde que se tiene una nueva dirección
hasta que se graba en el registro de lectura.
clk

read
la
Ep
aGp

Cd
E0 E4 E5 E6 E0

Figura 15.23. Secuencia de lectura.

La Figura 15.24, desarrolla las secuencias de escritura en tres ciclos del reloj.
clk

write

ld la
Ep
aWp

doep
E0 E1 E2 E3 E0

Figura 15.24. Secuencia de escritura.

La Figura 15.25 ilustra el diagrama de estados del controlador. Sólo se muestran las señales la y
cd asociadas a los estados del diagrama de Moore; el resto de los valores se ilustran en las
Figuras 15.23 y 15.24.

Profesor Leopoldo Silva Bijit 19-01-2010


20 Sistemas Digitales

E4 E5 E6
la=1 cd=1
reset
read=1

E0
read=0
write=0
write=1

E1 E2 E3
la=1

Figura 15.25. Diagrama de estados del controlador.

Mediante las especificaciones de las Figuras 15.23, 15.24 y 15.25, resulta sencillo especificar el
diseño en Verilog.

module MSE(clk, reset, read, write, Din, Dout, add, direcciones, Ep, Wp, Gp, doep, la, ld, cd,
datos);
input clk, reset, read, write;
input [7:0] Din;
output [7:0] Dout;
input [12:0] add;
output [12:0] direcciones;
output Ep, Gp, Wp, doep, la, ld, cd;
inout [7:0] datos;

reg [7:0] Dout;


reg [7:0] dw;
reg [12:0] direcciones;
reg [2:0] estado, next;
reg Ep, Gp, Wp, doep, la, ld, cd;
wire [7:0] datos;

assign datos = doep ? 8'hz : dw; //doep=1 alta impedancia.

// Asignación de estados
parameter IDLE = 0;
parameter write1 = 1;
parameter write2 = 2;
parameter write3 = 3;
parameter read1 = 4;
parameter read2 = 5;
parameter read3 = 6;

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 15. Registros. Camino de datos. Memorias. 21

always @ (posedge clk)


begin
if (reset) estado <= IDLE;
else estado <= next;
end
always @ (negedge clk)
begin
if (la) direcciones <= add;
if (cd) Dout <= datos;
if (ld) dw <= Din;
end

// Bloque combinacional. Genera próximo estado y las señales de control.


always @ (estado or read or write)
begin
case (estado)
IDLE:
begin
Ep= 1; Wp= 1; Gp= 1; doep=1; la= 0; ld= 0; cd= 0;
if (write) next = write1;
else if (read) next = read1;
else next = IDLE;
end
write1:
begin
Ep= 1; Wp= 1; Gp= 1; doep=0; la= 1; ld= 1; cd= 0;
next = write2;
end
write2:
begin
Ep= 0; Wp= 0; Gp= 1; doep=0; la= 0; ld= 0; cd= 0;
next = write3;
end
write3:
begin
Ep= 1; Wp= 1; Gp= 1; doep=0; la= 0; ld= 0; cd= 0;
next = IDLE;
end
read1:
begin
Ep= 1; Wp= 1; Gp= 1; doep=1; la= 1; ld= 0; cd= 0;
next = read2;
end
read2:
begin
Ep= 0; Wp= 1; Gp= 0; doep=1; la= 0; ld= 0; cd= 0;

Profesor Leopoldo Silva Bijit 19-01-2010


22 Sistemas Digitales
next = read3;
end
read3:
begin
Ep= 0; Wp= 1; Gp= 0; doep=1; la= 0; ld= 0; cd= 1;
next = IDLE;
end
default:
begin
Ep= 1; Wp= 1; Gp= 1; doep=1; la= 0; ld= 0; cd= 0;
next = IDLE;
end
endcase
end //always
endmodule

El siguiente módulo efectúa una simulación del controlador.

`timescale 1ns / 1ps


module test_v;
// Inputs
reg clk;
reg reset;
reg read;
reg write;
reg [7:0] Din;
reg [12:0] add;

// Outputs
wire [7:0] Dout;
wire [12:0] direcciones;
wire Ep;
wire Wp;
wire Gp;
wire doep;
wire la;
wire ld;
wire cd;

// Bidirs
wire [7:0] datos;

// Instantiate the Unit Under Test (UUT)


MSE uut (
.clk(clk),
.reset(reset),
.read(read),

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 15. Registros. Camino de datos. Memorias. 23
.write(write),
.Din(Din),
.Dout(Dout),
.add(add),
.direcciones(direcciones),
.Ep(Ep),
.Wp(Wp),
.Gp(Gp),
.doep(doep),
.la(la),
.ld(ld),
.cd(cd),
.datos(datos)
);

initial begin
// Initialize Inputs
clk = 0; reset = 0; read = 0; write = 0; Din = 0; add = 0;
// Wait 100 ns for global reset to finish
#100;

// Add stimulus here


reset=1; clk=0; #100; clk=1; #100;
reset=0; clk=0; #100; clk=1; #100;
clk=0; #100; clk=1; #100;
add=13'b0000000000001;
read=1; clk=0; #100; clk=1; #100;
read=0; clk=0; #100; clk=1; #100;
clk=0; #100; clk=1; #100;
clk=0; #100; clk=1; #100;
clk=0; #100; clk=1; #100;
clk=0; #100; clk=1; #100;
clk=0; #100; clk=1; #100;

add=13'b0000000000111;
Din=8'b00001111;
write=1; clk=0; #100; clk=1; #100;
write=0; clk=0; #100; clk=1; #100;
clk=0; #100; clk=1; #100;
clk=0; #100; clk=1; #100;
clk=0; #100; clk=1; #100;
clk=0; #100; clk=1; #100;
clk=0; #100; clk=1; #100;
end
endmodule

Profesor Leopoldo Silva Bijit 19-01-2010


24 Sistemas Digitales

Figura 15.26. Formas de ondas generadas por la simulación.

15.3.4. Memorias flash o EEPROM.

El procedimiento de lectura de memorias flash o EEPROM es el mismo que para las memorias
estáticas SRAM. Estas memorias disponen de un circuito interno que genera el voltaje de
programación de tipo 12 V, y además tienen una máquina secuencial de estados internas que
permite escribirlas. Las señales de escritura deben cumplir los requerimientos temporales de la
máquina de estados, y usan las mismas señales de control.

15.3.5. Memorias sincrónicas.

En la actualidad se dispone de memorias estáticas sincrónicas que logran velocidades de acceso


mayores.

Profesor Leopoldo Silva Bijit 19-01-2010


Capítulo 15. Registros. Camino de datos. Memorias. 25
Índice general.

CAPÍTULO 15 ........................................................................................................................................... 1
REGISTROS. BUSES. MEMORIAS. ...................................................................................................... 1
15.1. REGISTROS. ..................................................................................................................................... 1
15.2. REGISTRO CON HABILITACIÓN DE ESCRITURA. ................................................................................. 1
15.3 FUNCIONAMIENTO SINCRÓNICO. TRANSFERENCIAS ENTRE REGISTROS. ........................................... 4
15.3.1. Requerimientos de tiempo. ...................................................................................................... 5
15.3.2. Operaciones posibles. ............................................................................................................. 7
15.3.3. Operaciones combinacionales alternativas. ............................................................................ 7
15.4. CAMINO DE DATOS. ......................................................................................................................... 8
15.4.1. Conexiones punto a punto. ...................................................................................................... 8
15.4.2. Bus simple. ............................................................................................................................ 10
15.4.3. Estructura multibus. .............................................................................................................. 12
15.5. MEMORIA RAM ESTÁTICA. ........................................................................................................... 14
15.5.1. Ciclo de lectura. .................................................................................................................... 14
15.5.2. Ciclo de escritura. ................................................................................................................. 16
15.5.3. Control de memoria ram estática. ......................................................................................... 17
15.3.4. Memorias flash o EEPROM. ................................................................................................. 24
15.3.5. Memorias sincrónicas. .......................................................................................................... 24
ÍNDICE GENERAL. ................................................................................................................................... 25
ÍNDICE DE FIGURAS................................................................................................................................. 26

Profesor Leopoldo Silva Bijit 19-01-2010


26 Sistemas Digitales
Índice de figuras

Figura 15.1. Registro de cuatro bits.............................................................................................. 1


Figura 15.2. Registro con habilitación de escritura. ..................................................................... 2
Figura 15.3. Estados que generan la señal de control WE............................................................ 3
Figura 15.4. Control del registro con WE. ................................................................................... 3
Figura 15.5. Representación simbólica de registro con habilitación de escritura......................... 4
Figura 15.6. Transferencia entre registros. ................................................................................... 4
Figura 15.7. Corrimientos del reloj (skew)................................................................................... 5
Figura 15.8. Requerimientos de setup del registro 2. ................................................................... 6
Figura 15.9. Requerimientos de hold para el registro 2. ............................................................... 6
Figura 15.10. Funciones combinacionales alternativas. ............................................................... 7
Figura 15.11. Conexiones punto a punto entre 3 registros. .......................................................... 9
Figura 15.12. Bus simple. ........................................................................................................... 11
Figura 15.13. Camino de datos con tres buses. .......................................................................... 13
Figura 15.14. Control asincrónico de memoria estática. ............................................................ 14
Figura 15.15. Ciclo de lectura. ................................................................................................... 15
Figura 15.16. Parámetros de lectura. .......................................................................................... 15
Figura 15.17. Requerimientos temporales lectura. ...................................................................... 16
Figura 15.18. Ciclo de escritura.................................................................................................. 16
Figura 15.19. Parámetros de escritura. ....................................................................................... 17
Figura 15.20. Requerimientos temporales escritura. ................................................................... 17
Figura 15.21. Entorno de diseño.................................................................................................. 18
Figura 15.22. Entorno de diseño.................................................................................................. 18
Figura 15.23. Secuencia de lectura. ............................................................................................. 19
Figura 15.24. Secuencia de escritura. .......................................................................................... 19
Figura 15.25. Diagrama de estados del controlador. ................................................................... 20
Figura 15.26. Formas de ondas generadas por la simulación. ..................................................... 24

Profesor Leopoldo Silva Bijit 19-01-2010


1

Apéndice 1

ALGEBRA DE BOOLE

A1.1 Introducción

En 1847, George Boole desarrolla el álgebra, que lleva su nombre, como un análisis
matemático. Su objetivo era describir las operaciones mentales mediante las cuales se realizan
razonamientos.

En 1938, Shannon emplea el álgebra de Boole en circuitos de conmutación. Su objetivo era


describir la conducta de circuitos digitales mediante un álgebra binaria.

El álgebra de Boole es una estructura algebraica consistente de un conjunto B, de dos


elementos, y dos operaciones binarias; tales que se cumplen los axiomas de clausura,
conmutatividad, asociatividad, distributividad, identidad y complementariedad.

A1.2. Postulados

P.1 Definición:

El álgebra de Boole es un sistema algebraico cerrado que contiene un conjunto B de dos


elementos, {0, 1}; y dos operadores { · , + }. Los operadores también suelen representarse
según: {AND, OR}.

La clausura implica que si a y b pertenecen a B, entonces: a·b y a+b también pertenecen a


B.

P.2 Igualdad.

Dos expresiones son iguales si una puede ser substituida por la otra.

P.3 Elementos únicos.

Existen elementos únicos (0 y 1) en B tal que para cada a en B se tienen:

a 0 a (P3)
a 1 a

Profesor Leopoldo Silva Bijit 03-04-2010


2 Sistemas Digitales
P.4 Conmutatividad.

Si a y b pertenecen a B:

a b b a (P4)
a b b a

P.5 Asociatividad.

Si a, b y c pertenecen a B:

a (b c) (a b) c (P5)
a (b c) (a b) c

P.6 Distributividad.

Si a, b y c pertenecen a B:

a (b c) (a b) (a c) (P6)
a (b c) (a b) (a c)

Nótese que en la distribución para la suma en el producto, la expresión a la derecha es


diferente de la empleada habitualmente para números reales y enteros.

P.7 Complementariedad.

Si a pertenece a B, existe complemento único de a que se representa por a’ y también por


a.

a a' 1 (P7)
a a' 0

Al complemento único de a lo representaremos, para facilitar su escritura según convenga,


como: a', y también como: not a. El complemento podría haberse definido como un operador
unario de la estructura algebraica.

En el lenguaje C se emplea ~a para denotar el complemento; !a para la negación, el operador


and se anota & y el operador or emplea el símbolo |.

Observar que, con la formulación de postulados, se pueden demostrar como teoremas las
siguientes proposiciones:

Profesor Leopoldo Silva Bijit 03-04-2010


Apéndice 1. Algebra de Boole 3

1 0
0 1
a a

Es decir, las igualdades anteriores no son postulados.

A1.3 Sobre las demostraciones de Teoremas.

Cada paso en las demostraciones consiste en la aplicación de P.2, regla de sustitución, en


conjunción con otros postulados o teoremas ya demostrados. Se agrega a cada línea, como
comentario, el postulado usado.

Ejemplo A1.1.

Teorema. Complemento de 1.

Se desea demostrar que: 1’ = 0

Se tienen:
a 1=a ; P3 Elemento único 1.
0 1=0 ; P2 Sustitución de a por 0.
(i) 1 0 = 0 ; P4 Conmutación del producto.

Y también:
a+0=a ; P3 Elemento único 0.
(ii) 1 + 0 = 1 ; P2 Sustitución de a por 1.

Por (ii) y (i) se tienen:


1+0=1
1 0=0

El postulado P7 para el complemento de uno es:


1 + 1’ = 1
1 1’ = 0

Empleando P2 puede sustituirse 0 por 1’. Lo cual demuestra que: 1’ = 0

En forma similar puede demostrarse que el complemento de cero es uno: 0’ = 1.

Ejemplo A1.2.

Teorema de involución.
a a (A1.1)

Profesor Leopoldo Silva Bijit 03-04-2010


4 Sistemas Digitales
Demostración:

Si el complemento único de a’ es (a’)’. Por P7, debe cumplirse:

a ' ( a ') ' 1 (A1.2)


a ' (a ') ' 0

Por P.7 se tiene para el complemento de a:

a a' 1 (A1.3)
a a' 0

Aplicando P4, en (A1.3), se tienen:

a' a 1 (A1.4)
a' a 0

Comparando (A1.2) y (A1.4), y empleando P2, se demuestra que puede substituirse (a’)’ por
a.

Ejemplo A1.3.

Existen algunas diferencias con el álgebra para números enteros y reales.

a) Como no está definida la substracción, en la siguiente proposición, no pueden


cancelarse AB y AB.
AB A B AC AB A B BC

b) Notar que el operador and no suele escribirse entre las letras de las variables.

c) Como no está definida la división AB = AC no puede reducirse a B = C.

d) Expresiones aparentemente diferentes pueden ser idénticas, por ejemplo:

AB AB AC AB AB BC

e) El complemento del producto no es igual al complemento de los operandos A'B' (AB)'

A1.4. Dualidad

Dada una ecuación lógica, la ecuación dual se obtiene: reemplazando los operadores: + por ·
y · por +; reemplazando las constantes: 1 por 0 y 0 por 1; y dejando las variables sin cambios.

Profesor Leopoldo Silva Bijit 03-04-2010


Apéndice 1. Algebra de Boole 5
Principio de dualidad: Si una ecuación booleana es válida, también lo será la ecuación
dual.
Observaciones:
Los postulados 3 al 7 se muestran en parejas de ecuaciones duales.
Los teoremas también se plantean en parejas de ecuaciones duales.
Nótese que una variable no se complementa para formar la expresión dual.
Este es un teorema acerca de teoremas. Plantea que cualquier teorema que pueda ser
demostrado, también podrá ser demostrado para la proposición dual. Esto puede
observarse en la demostración de una proposición, cambiando cada línea por su
expresión dual, lo que lleva a la demostración del dual de la proposición original.

Antes de obtener el dual de una expresión, conviene asociar los operandos con los
operadores que les corresponden, mediante el uso de paréntesis: A B + C debe
interpretarse, según convenios algebraicos tradicionales, como: (A B) + C; en este caso,
la expresión dual es: (A + B) C. Si se determina directamente la expresión dual,
mediante el procedimiento de cambiar el or por and y viceversa, se obtendría
erróneamente: A + B C.

En el álgebra de Boole los operadores ( , + ) tienen igual jerarquía. Y es necesario


emplear paréntesis para asociar correctamente los operandos con el operador.

En el lenguaje C, el operador !, la negación lógica, es un operador unario que tiene la


más alta precedencia; luego viene el &, el and; después el ^, el or exclusivo; después el
|, el or. La precedencia indica que un operador de mayor precedencia toma sus
operandos antes que uno de menor precedencia; de esta forma pueden escribirse,
generalmente, operaciones lógicas sin emplear paréntesis.

A1.5. Teoremas

T.8 Idempotencia.

a a a (T8)
a a a

Demostración de la primera proposición.


a = a ;P2
= a+0 ;P3
= a + ( a a’ ) ;P7
= ( a + a )( a + a’ ) ;P6
= (a+a)1 ;P7
= a+a ;P3

Profesor Leopoldo Silva Bijit 03-04-2010


6 Sistemas Digitales
T.9 Unión con el Universo e Intersección con el vacío.

a 1 1 (T9)
a 0 0

Demostración de la primera proposición:


a +1 = a + 1 ;P2
= a + a + a’ ;P7
= a + a’ ;T8 y P5
= 1 ;P7

T.10 Absorción.

a ab a (T10)
a ( a b) a

Demostración de la primera proposición:


a + ab = a + ab ; P.2
= a·1 + ab ; P.3
= a·(1 + b) ; P.6
= a·(b + 1) ; P.4
= a·1 ; T.9
= a ; P.3
Se absorbe b.

T.11 Absorción del complemento.

a ab a b (T11)
a (a b ) ab

Demostración de la primera proposición:


a + a’b = a + a’b ;P2
= ( a + a’ ) ( a + b ) ;P6
= 1 ( a +b ) ;P7
= ( a +b ) ;P3

T.12 De Morgan

a b ab (T12)

ab a b

Demostración de la segunda proposición:

Por P7 se tiene que si (ab)’ es el complemento único de ab, entonces:

Profesor Leopoldo Silva Bijit 03-04-2010


Apéndice 1. Algebra de Boole 7
(ab) + (ab)’ = 1 T12.a
(ab) (ab)’ = 0

Por otro lado tenemos:


(ab)(a’ +b’) = ( ab )( a’+b’ ) ;P2
= aba’ + abb’ ;P6
= 0b + a0 ;P4, P7 y P5
= 0+0 ;T9
= 0 ;P3 T12.b

También tenemos que:


(ab) + (a’ +b’) = (ab) + (a’ + b’) ;P2
= (a' + b') + (ab) ;P4
= ((a’ +b’) + a)((a’ +b’) + b) ;P6
= ((a +a') + b')( a' + (b + b')) ;P4 y P5
= ( 1 +b’)(a’ +1) ;P7
= (1)(1) ;T9
= 1 ;P3 T12.c

Entonces de T12.a, T12.b y T12.c, y empleando P2, se logra:

(ab)’ = (a’ + b’)


Generalización de De Morgan:

f ’(x1, x2, ..., xn, 0, 1, +, ) = f(x1’, x2’, ..., xn’, 1, 0, , +)

Puede emplearse la inducción perfecta para demostrar en forma más simple las leyes de De
Morgan. Basta desarrollar las tablas de verdad.
Inducción completa o perfecta.
Aristóteles, y otros después de él, emplearon este nombre para designar un razonamiento
cuyas premisas enumeran todos los miembros de la clase a la que se refiere su conclusión. La
conclusión deriva necesariamente de las premisas, ya que sólo expresa lo que en éstas se hallaba
contenido. Se trata, pues, de una deducción.

Se basa en la enumeración completa, en la que se deben contar todos los casos de una clase
determinada y enunciar sus resultados en una conclusión general. La conclusión acerca de todos
los elementos de una clase se deduce a partir de premisas que se refieren a los casos
observados. La inducción perfecta permite obtener información fidedigna.
Sin embargo, en la solución de la mayoría de los problemas no puede emplearse este tipo de
enumeración ya que no es posible examinar todos los casos a que se refiere una conclusión;
esto se hace evidente al aumentar el número de variables, ya que el número de renglones crece
en forma exponencial con el número de variables.
El empleo de tablas de verdad es un ejemplo de aplicación de inducción perfecta.
Demostración de la segunda proposición de T12, mediante tabla de verdad.

Profesor Leopoldo Silva Bijit 03-04-2010


8 Sistemas Digitales

a b a’ b’ (ab)’ a’+b’
0 0 1 1 1 1
0 1 1 0 1 1
1 0 0 1 1 1
1 1 0 0 0 0

T.13 Consenso.

ab a c bc ab a c (T13)
(a b)(a c)(b c) (a b)(a c)

bc es el término de consenso entre ab y a'c.

Demostración de la primera proposición:


ab + a’c = ab + a’c ;P2
= (ab + abc) + ( a’c + a’cb) ;T10
= ab + a’c + abc + a’cb ;P4
= ab + a’c + abc + a’bc ;P4
= ab + a’c + (a + a’)(bc) ;P6
= ab + a’c + (1)(bc) ;P7
= ab + a’c + bc ;P3

T.14 Fusión.

ab ab a (T14)

(a b)(a b ) a

Demostración de la primera proposición:


ab + ab’ = ab + ab’ ;P2
= a (b + b’) ;P6
= a (1) ;P7
= a ;P3

T.15 Factorización

ab ac ( a c)(a b) (T15)
(a b)(a c) ac a b

Demostración de la primera proposición:


(a + c)(a’ + b) = (a + c)(a’ + b) ;P2
= a(a’ + b) + c(a’+b) ;P6
= aa’ + ab + ca’+cb ;P6
= 0 + ab + ca’+cb ;P7

Profesor Leopoldo Silva Bijit 03-04-2010


Apéndice 1. Algebra de Boole 9
= ab + ca’+cb ;P3
= ab + a’c + bc ;P4
= ab + a’c ;T13

Los teoremas más frecuentemente empleados son: T.8, T.9, T.10, y T.12.

A1.6. Diagramas de Venn

Si consideramos que el álgebra de conjuntos es un álgebra de Boole, en la que los conjuntos


corresponden a los elementos, la intersección al AND, y la unión al OR; entonces las
proposiciones del álgebra de Boole se pueden representar por diagramas de conjuntos.

En los diagramas de Venn los conjuntos se muestran como áreas. El '1' es el conjunto
universal, y el '0' es el conjunto vacío.

Los diagramas de Venn, permiten “visualizar” los postulados y teoremas.

La Figura A1.1. ilustra las operaciones de suma y producto lógico.

A B A B

AB
A+B

Unión Intersección

(A+B)’ (A B)’

Figura A1.1. Unión e Intersección

La Figura A1.2. muestra el conjunto universal y el conjunto vacío.

a a1 a+0

a’

Figura A1.2. Conjunto Universal y Vacío

Profesor Leopoldo Silva Bijit 03-04-2010


10 Sistemas Digitales
Ejemplo A1.4. Visualización de teoremas mediante diagramas de Venn.

Visualización del teorema del consenso.


T.13: ab a c bc ab a c

La Figura A1.3. ilustra los dos términos del lado derecho del teorema.
a b a b

ab c a’c c

Figura A1.3. Consenso entre partes.

La parte izquierda de la Figura A1.4 muestra el término de consenso bc.

La parte derecha de la Figura A1.4 muestra la suma lógica de ab+a’c, en la cual se puede
advertir que el término bc queda incluido. Una parte de bc está en ab; la otra parte de bc está en
a’c.
a b a b

c ab + a’c c
bc

Figura A1.4. Término de consenso

Se puede decir que bc está incluido en ab+a’c; y también que bc es un término denominado
consenso entre ab y a’c.

A1.7. Implicación material o condicional.

La expresión: p q, se lee: Si p entonces q. (If p then q).

Con p el antecedente y q el consecuente, se tiene:

Profesor Leopoldo Silva Bijit 03-04-2010


Apéndice 1. Algebra de Boole 11
p q p q
1 1 1
0 0 1
0 1 1
1 0 0

Figura A1.5. Definición de Implicación

La implicación es falsa si el consecuente es falso cuando el antecedente es verdadero. Debe


notarse que cuando el antecedente es falso el condicional es verdadero; si el antecedente y
consecuente son verdaderos, entonces el condicional es verdadero.

Se destaca que la implicación condicional es una expresión que puede ser falsa.
Si se considera que 1 es mayor que 0, también puede tratarse como p q.

La Figura A1.6 desarrolla que: p q equivale lógicamente con (p'+q). Esto debido a que
tienen iguales tablas de verdad.

p q p’ p’+q p q
1 1 0 1 1
0 0 1 1 1
0 1 1 1 1
1 0 0 0 0

Figura A1.6. Implicación Material

También p q es equivalente con la expresión q' p', que se denomina implicación


conjugada. La equivalencia lógica se demuestra en la Figura A1.7, ya que las dos últimas
columnas muestran que tienen iguales tablas de verdad.

p q q’ p’ q+p’ q’ p’
1 1 0 0 1 1
0 0 1 1 1 1
0 1 0 1 1 1
1 0 1 0 0 0

Figura A1.7. Implicación conjugada

Ejemplo A1.4a.

a) Cuando p representa la proposición: El interruptor está cerrado, y q representa la


aseveración: la ampolleta está encendida, p q, puede describirse según:
Si el interruptor está cerrado entonces la ampolleta está encendida.
Si p entonces q.

Profesor Leopoldo Silva Bijit 03-04-2010


12 Sistemas Digitales
La Figura A1.7a, muestra un sistema físico, en él cual por consideraciones basadas en redes
eléctricas se cumple la equivalencia lógica: q=p

Se ha colocado q a la izquierda de la igualdad, para mostrar que q depende de p. Con esto se


tiene que:
p q = p’ + q ; Implicación material
= p’ + p ; De acuerdo al sistema, q es equivalente con p.
= 1
Es decir la implicación es verdadera; en este caso se dice que p es un implicante de q.

Empleando diagramas de Venn, p será un implicante de q, si p está contenido en q, o es igual


a q. Si se marca la zona p’+q, se tendrá que ésta siempre es verdadera.
q

Figura A1.7aa. Implicante.

Por lo anterior se tendrá que si p es verdadero y q es falso, tendremos una contradicción. Sin
embargo esto se debe a una modelación incompleta del diagrama; el cual no contempla que la
ampolleta esté buena ( r ) y que la batería que alimenta al sistema tenga la suficiente carga ( s ).
Considerando estas condiciones adicionales, puede expresarse: q = r s p
p

Figura A1.7a. Implicación.

En la situación que muestra la Figura A1.7a, no se presenta la combinación en la que q sea


verdadero cuando p es falso. Se dice que ésta es una combinación o condición superflua.

La implicación conjugada o contrapositiva, se plantea según:


Si no q, entonces no p. Que puede traducirse por: “Si la ampolleta no está encendida,
entonces: el interruptor no está cerrado”

b) En el siguiente diagrama puede escribirse:


“Si r está cerrado y s está cerrado entonces: la ampolleta está encendida”.
Si (r y s) entonces q

Profesor Leopoldo Silva Bijit 03-04-2010


Apéndice 1. Algebra de Boole 13

r s
q

Figura A1.7b. Implicación.

Contrapositiva: Si no q entonces: no r o no s.
“Si la ampolleta no está encendida, entonces: r no está cerrado o s no está cerrado”.

A1.7.1. Formas de enunciar implicaciones.

La implicación material puede plantearse de variadas formas:


p demuestra o determina o prueba q
p produce o establece o justifica q
p causa o crea o soporta q
p es la evidencia para q
Debido a p, concluimos q
q es cierta por la razón de p
Cuando p, se tiene q
q es probado por el hecho de p

A1.7.2. Teoremas relativos a implicaciones.

1) p’ q = p + q
2) p q = (pq’ )’ Si la premisa es verdadera y la conclusión es falsa, la premisa p q es
falsa.
3) p q = q’ p’ Transposición.
4) pq = ( p q’ )’
El profesor es justo y el profesor es generoso, es equivalente a: No es cierto que si el
profesor es justo esto pruebe que el profesor no es generoso.
Si dos hechos son ciertos, uno no puede desaprobar al otro.
5) pq = ( q p’ )’
6) (pq) (p q) = 1 Si p y q son válidos se puede usar uno de ellos para probar el otro.
7) (p q’)’ (p q) =1 Si p no desaprueba q entonces p puede usarse para probar q. Si no
existe hecho que pueda probar que algo no es, entonces cualquier hecho puede solamente probar
que él es.
8) p (qr) = (p q) (p r) Distribución de implica en el producto.

Aún si un hecho asumido como cierto, prueba que un segundo es verdadero, esto no significa
que podemos concluir que el segundo hecho prueba que el primero es verdadero; el segundo
puede ser verdadero, aunque no el primero. O el segundo puede ser probado, quizá por un
tercero.

Profesor Leopoldo Silva Bijit 03-04-2010


14 Sistemas Digitales
Pero si el primer hecho prueba que el segundo es cierto, entonces esto significa que podemos
concluir que si el segundo es falso, entonces el primero también será falso.

A1.7.3. Condiciones suficientes y necesarias.

Cuando p q es verdadero, para que q sea verdad es condición suficiente que p sea verdad.
Pero no es condición necesaria, ya que q puede ser verdad, aún siendo p falso.
Cuando p q es verdadero, para que p sea verdad es necesario que q sea verdad.

A1.7.4. Razonamiento Deductivo.

La expresión p q también puede leerse: q se deduce lógicamente de p. O también: La


conclusión q se infiere de la hipótesis p.

Para que el razonamiento sea válido la expresión p q, debe ser una tautología.

Se denomina tautología a una expresión que es verdadera bajo cualquier interpretación. Y se


denomina contradicción a una expresión que es falsa bajo cualquiera interpretación.

A1.8. Deducción natural. Formas de razonamiento.

Una regla de inferencia transforma una sentencia válida en otra sentencia válida.
Si puede derivarse la conclusión de un argumento a partir de sus premisas, empleando una
secuencia de reglas de inferencia válidas, entonces el argumento es válido.

Se denomina método de deducción natural al empleo de un conjunto de reglas de inferencia


válidas para derivar la conclusión a partir de las premisas. También se denomina cálculo
proposicional.

Este método es una alternativa a la validación mediante tablas de verdad y permite


profundizar en la estructura lógica de los argumentos, pero a costa de un mayor razonamiento.
Las tablas de verdad tienen la ventaja de ser procedimientos mecánicos, pero su tamaño crece
muy rápidamente cuando aumentan las variables.

Se tienen reglas de implicación y de reemplazo.

1.8.1. Reglas de inferencia.

Las siguientes reglas de inferencia o tautologías condicionales se emplean para efectuar


deducciones.
Modus ponens.
Modus ponendo ponens, del latín: Modo que afirmando afirma.
En esta forma de razonar debe demostrarse que (p (p q) ) q es una tautología.

Si p implica q, y p es verdadero, entonces q también debe ser verdadero.

Profesor Leopoldo Silva Bijit 03-04-2010


Apéndice 1. Algebra de Boole 15
Ejemplo:
Hago mucho deporte.
Si hago mucho deporte, entonces estoy cansado.
Por lo tanto: estoy cansado.
Modus tollens.
Modus tollendo tollens, del latín: Modo que negando niega. Se llama también prueba
indirecta.
En esta forma de razonar debe demostrarse que (q' (p q) ) p' es una tautología.

Si p implica q, y q es falso, entonces p también debe ser falso.

Ejemplo:
No estoy cansado.
Si hago mucho deporte, entonces estoy cansado.
Por lo tanto: No hago mucho deporte.
Transitividad. Silogismo hipotético.
En esta forma de razonar debe demostrarse que (p q) (q r) (p r) es una
tautología. También se denomina silogismo hipotético.

Ejemplo:
Si estudio mucho entonces aprobaré el curso.
Si apruebo el curso entonces me sentiré feliz.
Si estudio mucho entonces me sentiré feliz.
Inferencia de la alternativa. Silogismo disyuntivo.
Debe demostrarse que: (p+q) p’ q es una tautología.
Si p o q es verdadera, y además sabemos que p es falsa, entonces se infiere que q es
verdadera. Suele denominarse a esta tautología silogismo disyuntivo.

"Una vez eliminado lo imposible, lo que queda, por improbable que parezca, debe ser la
verdad" Arthur Conan Doyle.
Simplificación.
Si se tiene la premisa pq se infiere p.
Conjunción.
Si se tienen las premisas: p, q se infiere pq.
Adición.
Si se tiene p puede inferirse p+q. Donde q puede ser cualquier premisa.
Dilema constructivo.
Dadas las premisas: (p=>q)(r=>s) y p+r, entonces: q+s

Profesor Leopoldo Silva Bijit 03-04-2010


16 Sistemas Digitales
1.8.2. Reglas de reemplazo.

En el método de deducción natural pueden emplearse reglas de reemplazo o tautologías


bicondicionales.

Conmutatividad
Asociatividad
Distributividad
Doble negación: p=(p’)’
Leyes de De Morgan
Idempotencia o Tautología: p=p+p o p=pp
Trasposición o contrapositiva: p=>q = q’=>p’
Implicación material: p=>q = p’+q
Equivalencia material: p q = (p=>q)(q=>p) o alternativamente: p q = (pq)+(p’q’)
Exportación: (pq)=> r = p=>(q=>r)

Las reglas de reemplazo pueden emplearse en ambas direcciones y pueden reemplazar parte
de una sentencia. Las de inferencia se emplean sólo en una dirección, es decir importa el orden
de las premisas; y se aplican a sentencias completas.
Nótese que la equivalencia lógica puede describirse por el símbolo ; antes al definir los
postulados y teoremas empleamos simplemente el signo = para denotar la equivalencia lógica.

Ejemplo A1.5
Se tiene el siguiente argumento:
a’=>Z, a=>b, c+b’, c’ Z.
Deducir Z.

Solución.

Para efectuar la deducción, enumeramos las premisas, que se asumen verdaderas:


1. a’=>Z P
2. a=>b P
3. c+b’ P
4. c’ P/ Z

Luego de las premisas se coloca una barra diagonal y luego de ésta la conclusión. Para
efectuar la deducción, se aplican las reglas de inferencia, agregando como comentarios las
reglas de inferencia o equivalencia que se aplican.

5. b’ 3 y 4: Silogismo disyuntivo
6. a’ 5 y 2 : Modus Tollens
7. Z 6 y 1 : Modus Ponens

Lo cual deduce Z, a partir de las premisas.

Profesor Leopoldo Silva Bijit 03-04-2010


Apéndice 1. Algebra de Boole 17
Como ilustran los siguientes ejemplos, algunas reglas pueden ser deducidas a partir de otras,
y podría tenerse un conjunto menor de reglas. Específicamente bastaría para efectuar
deducciones el disponer solamente de los postulados; sin embargo el conjunto de reglas ha
resultado ser útil para disminuir el número de pasos en las deducciones.

Ejemplo A1.6.
Probar validez de Modus Tollens
A => B
B’
A’

Prueba:
1. A => B P
2. B’ P / A’
3. A’+B 1 Implicación material
4. A’ 2, 3 Silogismo Disjuntivo

Probar validez de Modus Ponens


A => B
A
B

Prueba:
1. A => B P
2. A P / B
3. A’+B 1 Implicación material
4. B 2, 3 Silogismo Disjuntivo

Probar validez del silogismo disyuntivo:


1. (p+q) P
2. p’ P / q.
3. p’ => q 1 Implicación material
4. q 2, 3 Modus ponens

Ejemplo A1.7.
Deducir la regla Dilema Constructivo.
1. (p=>q)(r=>s) P
2. p+r P / q+s
3. r=>s 1 Simplificación
4. p’=>r 2 Implicación matrial
5. p’=>s 4 y 3 Transitividad.
6. s’=>p’’ 5 Transposición
7. s’=>p 6 Doble negación
8. p=>q 1 Simplificación

Profesor Leopoldo Silva Bijit 03-04-2010


18 Sistemas Digitales
9. s’=>q 7 y 8 Transitividad
10. s+q 9 Implicación material
11. q+s 10 Conmutación.

A1.9. Listas de implicaciones. Sorite.

Charles Lutwidge Dodgson (1832-1898), conocido por su seudónimo Lewis Carroll, diseñó
numerosos puzzles para entrenar a las personas en el razonamiento sistemático.
Su mayor interés fue aumentar el entendimiento de las personas, tratando de que esto fuera
un juego.

En un determinado tipo de problemas, enumera una lista de implicaciones, deliberadamente


absurdas, de tal modo que el lector no sea influenciado por sus opiniones preconcebidas. La
tarea propuesta es usar todas las implicaciones para llegar a una conclusión indiscutible.
Ejemplo A1.8
Todos los bebés son ilógicos.
Nadie es detestado si puede manejar un cocodrilo.
Las personas ilógicas son detestadas.

El primer paso en la solución es reconocer el conjunto universo. En el puzzle propuesto, el


universo son todas las personas.

El segundo paso es definir variables:


B: esta persona es un bebé.
L: esta persona es lógica.
M: esta persona puede manejar un cocodrilo.
D: esta persona es detestada.

Las premisas, pueden escribirse:


Si una persona es un bebé, entonces es una persona no lógica.
Si una persona puede manejar un cocodrilo, entonces no es detestada.
Si una persona no es lógica, entonces es detestada.

Las premisas pueden ser simbolizadas por:


B => L’
M => D’
L’ => D.

Nuestro objetivo es emplear razonamiento transitivo todas las veces que sea necesario,
usando todos los elementos de las premisas, formando una cadena de implicaciones.

Nótese que si M=> D’, también se cumple la contrapropuesta: D => M’.

Entonces, se logra la cadena, aplicando transitividad de la implicación:


B=> L’ => D => M’

Profesor Leopoldo Silva Bijit 03-04-2010


Apéndice 1. Algebra de Boole 19
Conclusiones:
Tenemos entonces: B=>M’: Todos los bebés no pueden manejar un cocodrilo.
También: M=> B’: Si un persona puede manejar un cocodrilo, entonces no es un bebé.

Específicamente el tipo de problema anterior es clasificado como sorite. Que puede definirse
como una forma de argumentación en la cual se ordenan una serie de silogismos incompletos de
tal modo que el predicado de cada premisa sea el sujeto de la próxima. Finalmente el
antecedente de la primera se une al predicado de la última formando la conclusión. Los
silogismos son incompletos, ya que solamente están presentes las premisas.

A1.10 Silogismo.

Forma de razonamiento utilizado en lógica por la que del contraste de dos proposiciones o
premisas se extrae una conclusión.
No se requiere ningún otro término o premisa para hacer la consecuencia necesaria.

Alternativamente: Razonamiento que consta de tres proposiciones, la última de las cuales se


deduce necesariamente de las otras dos.

Las dos primeras proposiciones se llaman premisas; la tercera se denomina conclusión. Los
dos términos que entran en las premisas y en la conclusión se llaman extremos (mayor y
menor), y el que sólo entra en las premisas recibe el nombre de medio o eliminando.

Términos mayor y menor.

Un silogismo está formado por dos premisas y una conclusión.


El sujeto S de la conclusión es el término menor del silogismo.
El predicado P de la conclusión es el término mayor del silogismo.

Se llama premisa mayor, a la que contiene el término mayor; y se llama premisa menor, a la
que contiene el término menor. El término que está presente en ambas premisas se denomina
término del medio y se simboliza por M; y no está presente en la conclusión.

Se denomina orden estándar: el enunciar primero la premisa mayor, luego la menor y


finalmente la conclusión.

Formas categóricas.

Un condicional es una proposición con la forma: Si p, entonces q.


La forma categórica del condicional anterior se plantea: Todos los p son q.
El condicional p’=>q puede escribirse, en forma categórica: Ningún p es q.

Se tienen 4 formas de proposiciones categóricas.


Se denomina tipo A, a la forma: Todos los S son P.
Se denomina tipo E, a la forma: Ningún S es P.
Se denomina tipo I, a la forma: Algún S es P.
Se denomina tipo O, a la forma: Algún S es no P.

Profesor Leopoldo Silva Bijit 03-04-2010


20 Sistemas Digitales

La A y la E se denominan universales; la I y O se denominan particulares.


A

E
P
S
S P

Figura A1.8. Formas universales.

Ejemplo A1.9

Premisa 1 tipo A: Todos los x son y


Premisa 2 tipo E: Ningún z es y
Conclusión tipo E: Ningún z es x.

Se dice que y es eliminando, y que se retienen z y x.

y
x
z

Figura A1.9. Ningún z es x.

Deducción:
1. x=>y P
2. z=>y’ P / z=>x’
3. y=>z’ 2 Transposición
4. x=>z’ 1 y 3 Silogismo Hipotético
5. z=>x’ 4 Transposición.

El silogismo es válido.

Ejemplo A1.10

Premisa 1 tipo A: Todos los x son y


Premisa 2 tipo I: Algún z es x
Conclusión tipo I: Algún z es y.

Profesor Leopoldo Silva Bijit 03-04-2010


Apéndice 1. Algebra de Boole 21

y
x z

Figura A1.10. Algún z es y.

El silogismo es válido.

Disposición o tipos de silogismos.

Se denomina disposición del silogismo a la secuencia de tres de las letras anteriores (A, E, I,
O), y que representan la premisa mayor, menor y conclusión del silogismo.
Por ejemplo el siguiente es silogismo AAA.

Todos los P son M.


Todos los S son M.
Todos los S son P.

La Figura A1.11 muestra tres diagramas que cumplen las premisas.

M M M

P P P
S

S S

Figura A1.11. Silogismo AAA.

La posición del término del medio puede estar de cuatro formas diferentes. Se denominan
con cifras desde 1 a 4.

Premisa Cifra 1 Cif Cif Cif


ra 2 ra 3 ra 4
Mayor M-P P- M- P-
M P M
Menor S-M S- M- M-
M S S
Conclusión S-P S-P S-P S-P

Figura A1.12. Posición del término medio

Profesor Leopoldo Silva Bijit 03-04-2010


22 Sistemas Digitales
Entonces el ejemplo anterior es silogismo AAA-2. Como muestran los diagramas central y
derecho de la Figura A1.11, este silogismo es inválido, ya que todos los S no son P. La premisa:
Todos los S son P, se muestra en el diagrama a la izquierda de la Figura A1.11.

Silogismo AAA-1 P

Todos los M son P. M


S
Todos los S son M.
Todos los S son P.

Figura A1.13. Silogismo AAA-1

Silogismo EAE-1
Ningún M es P. M P
Todos los S son M S
Ningún S es P.

Figura A1.14. Silogismo EAE-1

Silogismo AII-3
Todos los M son P. P
S
Algún M es S. M
Algún S es P.

Figura A1.15. Silogismo AII-3

Silogismo AII-2
S
Todos los P son M.
Algún S es M. M
M
Algún S es P. P S
P

Figura A1.16. Silogismo AII-2

La premisa menor, puede dibujarse de dos formas. La Figura A1.16 izquierda ilustra que el
silogismo AII-2 es inválido.

Para la determinación de la validez de los silogismos se emplean diagramas de Venn para


mostrar la distribución de los miembros en las categorías. Son levemente diferentes de los
usados en teoría de conjuntos, que se han empleado en las ilustraciones anteriores. Si no hay
miembros se subraya el área, si al menos hay un miembro se coloca una x en el área. La Figura
A1.17 muestra los diagramas para las cuatro proposiciones categóricas.

Profesor Leopoldo Silva Bijit 03-04-2010


Apéndice 1. Algebra de Boole 23

A I E O
P P S P S P
S S

x x

Todos los S son P Algún S es P Ningún S es P Algún S no es P

Figura A1.17. Diagramas de Venn de distribución de premisas categóricas.

Para probar los silogismos se dibujan tres círculos que se intersectan; se representan primero
las premisas universales (A, E), luego las particulares (I, O); éstas últimas en zonas que no estén
previamente achuradas.

EIO-3
Ningún M es P.
Algún M es S. S P
Algún S no es P
x

Figura A1.18. Ferison

Se diagrama primero: Ningún M es P. Luego se coloca la x, correspondiente a la premisa


particular I; nótese que la x se coloca en la zona no achurada; ya que ésta fue invalidada por la
premisa mayor. Si del diagrama resultante puede leerse la conclusión, el silogismo es válido. Si
la conclusión no se encuentra en el diagrama, el silogismo es inválido. EIO-3 es válido.

EOO-2
S P
Ningún P es M.
x
Algún S no es M.
Algún S no es P.

Figura A1.19. EOO-2

Se diagrama primero Ningún P es M. Se ha colocado la x fuera de M y en S, y en la línea


sobre P para indicar que puede estar o no en P. De esta forma si algún S, que no es M, está en P
el silogismo (EOO-2) es inválido. Lo cual concluye que EOO-2 es inválido.

Como el tipo de premisa puede repetirse: la premisa mayor puede escogerse de cuatro
formas, la menor también de cuatro formas y la conclusión de cuatro formas, resultan 64 tipos
de silogismos. Pero como además el término medio puede ocurrir de cuatro formas, se tienen en
total 256 silogismos.

Profesor Leopoldo Silva Bijit 03-04-2010


24 Sistemas Digitales

Pero sólo se tienen quince formas válidas. Existen palabras latinas, en las cuales el orden de
aparición de las vocales indica el tipo de premisa categórica de las premisas mayor, menor y
conclusión. Los siguientes son silogismos incondicionalmente válidos.

BARBARA, AAA-1 CELARENT, EAE-1 DARII, AII-1 FERIO, EIO-1


Todos los M son P. Ningún M es P. Todos los M son P. Ningún M es P.
Todos los S son M. Todos los S son M. Algún S es M. Algún S es M.
Por lo tanto: Todos los S son P. Ningún S es P. Algún S es P. Algún S no es P.

La primera letra de los modos siguientes indica a cual modo con cifra 1 puede ser reducido.
Si luego de una letra de modo aparece s, la reducción es simple conversión; si es p la
conversión es parcial; si es m entre las dos primeras vocales se aplica transposición. La letra c
después de una de las dos primeras vocales indica que la premisa debe ser reemplazada por su
negación para efectuar la conversión.

CESARE, EAE-2 CAMESTRES, AEE-2 FESTINO, EIO-2 BAROCO, AOO-2


Ningún P es M. Todos los P son M. Ningún P ese M. Todos los P son M.
Todos los S son M. Ningún S es M. Algún S es M. Algún S no es M.
Ningún S es P. Ningún S es P. Algún S no es P. Algún S no es P.

DISAMIS, IAI-3 DATISI, AII-3 BOCARDO, OAO-3 FERISON, EIO-3


Algún M es P. Todos los M son P. Algún M no es P. Ningún M es P.
Todos los M son S. Algún M es S. Todos los M son S. Algún M es S.
Algún S es P. Algún S es P. Algún S no es P. Algún S no es P.

CAMENES, AEE-4 DIMARIS, IAI-4 FRESISON, EIO-4


Todos los P son M. Algún P es M. Ningún P es M.
Ningún M es S. Todos los M son S. Algún M es S.
Ningún S es P. Algún S es P. Algún S no es P.

Los silogismos AAI-1, EAO-1, AEO-2, EAO-4 son condicionalmente válidos si S existe.
Si M existe: son condicionalmente válidos: EAO-3 y 4. Si P existe es válido: AII-4.

Silogismo EAO-4 P
Ningún P es M.
Todos los M son S. S
Algún S es no P. M

Figura A1.20. Silogismo Condicional EAO-4

Este silogismo es válido si se conoce la premisa adicional: M existe.

Profesor Leopoldo Silva Bijit 03-04-2010


Apéndice 1. Algebra de Boole 25
No debe asumirse que algo existe, salvo que tengamos la evidencia.
Si existen entidades en M, éstas no estarán en P. Entonces los miembros de S que están en
M, no estarán en P. Y el silogismo EAO-4 es válido.

Para algunos modelos geométricos (el punto, la línea), y físicos (masa puntual, componentes
de parámetros concentrados) que son ampliamente usados no se tiene evidencia de su existencia
física.

A1.11 Falacias.

Si se asume que la lógica trata sobre el razonamiento correcto se la puede usar para probar
que una argumentación no es válida. Una falacia es un argumento que puede parecer válido,
pero que en realidad es falso.

Existen innumerables tipos de falacias, tantos como lo errores que el hombre puede cometer.
Sin embargo algunas de ellas son tan comunes que se las reconoce con nombres latinos:
Argumentum ad Ignorantiam, Argumentum ad Populum, etc.

Ejemplo A1.11

"Una mala sesión de clases es mejor que una buena sesión de clases, ya que una mala sesión
de clases es mejor que nada, y nada es mejor que una buena clase"

Planteando las premisas y la conclusión:

Nada es mejor que una buena clase.


Una mala clase es mejor que nada.
Una mala clase es mejor que una buena clase.

Llevando a formas categóricas:


Ninguna (clase) son (cosas mejores que buenas clases).
Todas (las malas clases) son (cosas mejores que no tener ningún tipo de clases).
Todas (las malas clases) son (cosas mejores que buenas clases).

Se advierte que se tienen dos términos medios. Por lo tanto no es un silogismo del tipo
EAA-1. Pertenece a las falacias de cuarto término.

Profesor Leopoldo Silva Bijit 03-04-2010


26 Sistemas Digitales

Problemas resueltos

Problema A1.1

Demostrar, aplicando postulados y teoremas:

ABC +AB'(A'C')' = AB' + AC

Solución:

ABC +AB'(A'C')' = ABC +AB'(A'C')' ;P2. Substitución


=ABC+AB'(A''+C'') ;T12 De Morgan
=ABC+AB'(A+C) ;Involución
=ABC+AB'A+AB'C ;P6 Distributividad
=ABC+AAB'+AB'C ;P4 Conmutatividad
=ABC+AB'+AB'C ;T8 Idempotencia
=AB'+ACB+ACB' ;P4 Conmutatividad
=AB'+AC(B+B') ;P6 Distributividad
=AB'+AC(1) ;P7 Complemento único
=AB'+AC ;P3 Elementos únicos.

Problema A1.2

Con f(a, b, c, d) = a + ( a’ b’ c)(b’ + ( c d)’)

Expresar, con el mínimo número de literales, como suma de productos empleando teoremas.
Indicando los teoremas o postulados que emplee en cada paso de su desarrollo.

Solución:

Por definición de or exclusivo: ( c d ) = cd’ + c’d


Entonces: (c d)’ = (cd’ + c’d )’
= (cd’)’ (c’d)’ De Morgan
= (c’+d)(c+d’) De Morgan
= c’c +c’d’ + dc + dd’ Distributividad
= c’d’ + cd por P7 y P3.

Resulta entonces:
f(a, b, c, d) = a + ( a’ b’ c)(b’ + c’d’ + cd) Por P2.
f(a, b, c, d) = a + a’b’cb’+ a’b’cc’d’ + a’b’ccd por Distributividad

Se tienen:
a’b’cb’ = a’b’b’c por conmutatividad = a’b’c por idempotencia
a’b’cc’d’ = a’b’0d’ por complemento único = 0 por T9. Luego se aplica P3.
a’b’ccd = a’b’cd por idempotencia.

Profesor Leopoldo Silva Bijit 03-04-2010


Apéndice 1. Algebra de Boole 27
Resulta:
f(a, b, c, d) = a + a’b’c + a’b’cd = a + a’b’c(1 + d) por distributividad
= a + a’b’c por T9 y P3.
f(a, b, c, d) = a + a’(b’c) = a + b’c por T11.

Finalmente: f(a, b, c, d) = a + b’c con tres literales.

Otra solución:
f(a, b, c, d) = a + a’ b’ c b’ + a’ b’ c ( c d)’ = a + a’ b’c(1 + ( c d)’) = a + a’ b’c
f(a, b, c, d) = a + b’ c

Problema A1.3

Sea un circuito eléctrico, que se muestra en la Figura PA1.1, en el cual una fuente de tensión
V está conectada a través de los interruptores C y C2 a una ampolleta L:

V
C L

C2

Figura PA1.1. Ampolleta e interruptores.

Sea C la proposición: El interruptor C está cerrado.


Sea L la proposición o declaración: La ampolleta L está encendida.

Ambas proposiciones simples pueden ser verdaderas o falsas, dependiendo de cómo se


encuentren en la realidad.

La siguiente es una proposición condicional:


Si el interruptor C está cerrado, entonces la ampolleta L estará encendida.

Se denomina proposición condicional ya que ésta afirma que un hecho es cierto bajo la
condición de que otro hecho sea verdadero.
La proposición luego del si, se denomina antecedente, la ubicada luego del entonces se llama
consecuencia.

La declaración condicional afirma que la consecuencia es verdadera bajo la condición de que


el antecedente sea verdadero; o bien que si el antecedente es cierto entonces la consecuencia
también debe ser verdadera.
La declaración condicional no afirma que la consecuencia sea necesariamente cierta.

Profesor Leopoldo Silva Bijit 03-04-2010


28 Sistemas Digitales
A esta relación se la denomina implicación material, y se la simboliza, con p el antecedente y
q la consecuencia, según: p q, y se lee como “p implica q”. La flecha indica que la verdad de
p es transferida a q.

La premisa C L puede ser verdadera o falsa, dependiendo de los valores que tomen C y L.

C L C L
1 1 1 Si el interruptor C está cerrado debe ser cierto que la ampolleta L está
encendida.
0 0 1 Si la ampolleta L está apagada debe ser cierto que el interruptor C está abierto.
0 1 1 Si el interruptor C está abierto, y la ampolleta L está encendida debe ser por
causa de otro interruptor (C2 cerrado en el diagrama anterior).
1 0 0 Cuando el interruptor C está cerrado, y la ampolleta L está apagada la premisa
es falsa.

No se puede establecer una implicación verdadera con un antecedente verdadero y una


conclusión falsa.

Como se puede plantear una implicación material entre dos proposiciones simples
cualesquiera, la implicación por sí misma puede no reflejar la realidad.
“Si los leones son carnívoros, entonces las uvas contienen azúcar”.

Problema A1.4

Todos mis hijos son delgados.


No hay niño mío sano que no haga ningún ejercicio.
Todos los glotones, que son hijos míos, son gordos.
Ninguna hija mía hace algún ejercicio.

Solución.
El universo es el conjunto de todos mis hijos.

Elegir variables y traducir la premisa en términos de las variables:

Variables:
Gordo: Este niño mío es gordo.
Hombre: Este niño mío es un muchacho.
Glotón: Este niño mío es un glotón.
Sano: Este niño mío es sano.
No_ejercicio: Este niño mío no hace ningún ejercicio.

En esta algebra, las variables sólo toman dos valores.

Se tiene entonces que:


(Hombre)’ significa: Este niño mío es una niña.
Hombre=1 es muchacho, Hombre=0 es niña.
(No_ejercicio)’ significa: Este niño mío hace algún ejercicio.

Profesor Leopoldo Silva Bijit 03-04-2010


Apéndice 1. Algebra de Boole 29

Las sentencias de la premisa, pueden plantearse:


Mis hijos hombres son “no gordos”.
Mis hijos que no hacen ningún ejercicio son “no sanos”.
Mis hijos glotones son gordos.
Los que hacen algún ejercicio no son niñas.

Empleando las variables anteriores:


hombre => (gordo)’
no_ejercicio => (sano)’
glotón => gordo
(no_ejercicio)’ => hombre

Una cadena que emplea todas las proposiciones es:


glotón => gordo=>(hombre)’=>no_ejercicio=>(sano)’

Que permite concluir: Todos (mis hijos) glotones no son saludables.

Problema A1.5

Deducir la validez del argumento:


(a+b) => (c∙d), b, a => d’ a’

1. (a+b) => (c∙d) P


2. b P
3. a => d’ P / a’
4. b+a 2 Adición
5. a+b 4 Conmutación
6. c∙d 1, 5 Modus Ponens
7. d∙c 6 Conmutación
8. d 7 Simplificación
9. (d’)’ 8 Doble negación
10. a’ 3, 9 Modus Tollens

Problema A1.6

Validar: a => (b=>c), d => (ba) d’c

1. a => (b=>c) P
2. d => (b∙a) P / d’+c
3. (a∙b) => c 1 Exportación
4. (b∙a) => c 3 Conmutación
5. d => c 2, 4 Silogismo Hipotético
6. d’+c 5 Implicación material

Profesor Leopoldo Silva Bijit 03-04-2010


30 Sistemas Digitales
Problema A1.7

Validar: (a ∙ b) + (c => d), (a ∙ b)’, d’ c’

1. (a ∙ b) + (c => d) P
2. (a ∙ b)’ P
3. d’ P / c’
4. c => d 1, 2, Silogismo disjuntivo
5. c’ 3, 4, Modus Tollens

Ejercicios propuestos.

Ejercicio A1.1

a) Minimizar las siguientes funciones, aplicando postulados y teoremas:


f1 A B A C A C A D B E
f2 A A B B (C D E )
f3 AB A C AC AC BC

b) Minimizar. Complementar y minimizar. Obtener la función dual y minimizar:


f4 A B (C D ( E F G ))
f5 A A B C B D C D

c) Demostrar identidad
( A B) ( A C ) ( B C D) ( A B) ( A C )
A B A B C C D A B C D
A B B C A C ( A B) ( B C ) ( A C )

d) Demostrar
1. Si A=B entonces A B A B 0
2. A B A C B C A B A C
3. A B ( A B) ( A B)
e) Minimizar usando teoremas:
1. a'b'c'd' +ab'c'd' + a'b'cd' + ab'cd'
2. a'bc + abc´+ bc'd +bc

Ejercicio A1.2

Demostrar los siguientes teoremas.


1) p 1 = 1 cualquier cosa prueba que la verdad es verdad.
2) 1 p = p
3) p 0 = p’

Profesor Leopoldo Silva Bijit 03-04-2010


Apéndice 1. Algebra de Boole 31
4) 0 p = 1
5) p p = 1
6) p’ p = p’
7) p ( p’ p) = 1
8) ( p’ p) p = 1
9) ( p p’) p’ = 1
10) ( p p’) = p
11) p’ (p p’) = 1
12) p q’ = q p’
13) p q no es igual a q p
14) p q = ( p q) ( q p) Dos proposiciones son equivalentes si una prueba la otra, y si la
otra prueba a la primera.
15) p (q r) = q (p r)

Ejercicio A1.3

Un pudín de ciruelas, que no es realmente sólido, es simplemente porridge.


Cada pudín de ciruelas, servido en mi mesa, se ha hervido en un paño.
Un pudín de ciruelas que es simplemente porridge es indistinguible de la sopa.
No hay pudines de ciruelas realmente sólidos, excepto los qué se sirven en mi mesa.

Verificar si es o no verdadera la sentencia:


Ningún pudín de ciruela, que no ha sido hervido en un paño, puede ser distinguido de la
sopa.

Ejercicio A1.4

Validar los argumentos:


a) B=>(C=>D), A=>B, A, C D.
b) N’ => ((B => D) => (N +E’)), (B => E) => N’, B => D, D => E / D’
c) (L + T) => (B ∙ G), L ∙ (K  R) / L ∙ B
d) (J + K)’, B => K, S => B / S’ ∙ J’
e) (T ∙ K) + (C ∙ E), K =>E’, E=>C’ / T ∙ K

Ejercicio A1.5

a) Deducir que los silogismos: AEE-4, IAI-4 y EIO-4 son válidos.


b) Demostrar que los silogismos: AEE-1 y AEE-3 son inválidos.

Referencias.

http://www.lewiscarroll.org/carroll.html.
http://philosophy.lander.edu/logic/index.html

Profesor Leopoldo Silva Bijit 03-04-2010


32 Sistemas Digitales

Índice general

APÉNDICE 1 .................................................................................................................................. 1
ALGEBRA DE BOOLE ................................................................................................................. 1
A1.1 INTRODUCCIÓN ..................................................................................................................... 1
A1.2. POSTULADOS ....................................................................................................................... 1
P.1 Definición: ......................................................................................................................... 1
P.2 Igualdad............................................................................................................................. 1
P.3 Elementos únicos. ............................................................................................................... 1
P.4 Conmutatividad. ................................................................................................................. 2
P.5 Asociatividad. .................................................................................................................... 2
P.6 Distributividad. .................................................................................................................. 2
P.7 Complementariedad. .......................................................................................................... 2
A1.3 SOBRE LAS DEMOSTRACIONES DE TEOREMAS. ........................................................................ 3
Ejemplo A1.1. ........................................................................................................................... 3
Ejemplo A1.2. ........................................................................................................................... 3
Ejemplo A1.3. ........................................................................................................................... 4
A1.4. DUALIDAD ........................................................................................................................... 4
A1.5. TEOREMAS........................................................................................................................... 5
T.8 Idempotencia. ..................................................................................................................... 5
T.9 Unión con el Universo e Intersección con el vacío. .............................................................. 6
T.10 Absorción. ........................................................................................................................ 6
T.11 Absorción del complemento. ............................................................................................. 6
T.12 De Morgan ....................................................................................................................... 6
Inducción completa o perfecta. ............................................................................................................ 7
T.13 Consenso. ......................................................................................................................... 8
T.14 Fusión. ............................................................................................................................. 8
T.15 Factorización ................................................................................................................... 8
A1.6. DIAGRAMAS DE VENN .......................................................................................................... 9
Ejemplo A1.4. Visualización de teoremas mediante diagramas de Venn. .................................. 10
A1.7. IMPLICACIÓN MATERIAL O CONDICIONAL. ........................................................................... 10
Ejemplo A1.4a. ....................................................................................................................... 11
A1.7.1. Formas de enunciar implicaciones. ............................................................................. 13
A1.7.2. Teoremas relativos a implicaciones. ............................................................................ 13
A1.7.3. Condiciones suficientes y necesarias. .......................................................................... 14
A1.7.4. Razonamiento Deductivo. ........................................................................................... 14
A1.8. DEDUCCIÓN NATURAL. FORMAS DE RAZONAMIENTO........................................................... 14
1.8.1. Reglas de inferencia. ..................................................................................................... 14
Modus ponens. ................................................................................................................................. 14
Modus tollens. .................................................................................................................................. 15
Transitividad. Silogismo hipotético. .................................................................................................. 15
Inferencia de la alternativa. Silogismo disyuntivo. ............................................................................. 15
Simplificación. ................................................................................................................................. 15
Conjunción. ...................................................................................................................................... 15
Adición. ........................................................................................................................................... 15
Dilema constructivo. ......................................................................................................................... 15

Profesor Leopoldo Silva Bijit 03-04-2010


Apéndice 1. Algebra de Boole 33
1.8.2. Reglas de reemplazo. .................................................................................................... 16
Ejemplo A1.5 ................................................................................................................................... 16
Ejemplo A1.6. .................................................................................................................................. 17
Ejemplo A1.7. .................................................................................................................................. 17
A1.9. LISTAS DE IMPLICACIONES. SORITE. .................................................................................... 18
Ejemplo A1.8 ................................................................................................................................... 18
A1.10 SILOGISMO. ...................................................................................................................... 19
Términos mayor y menor. ....................................................................................................... 19
Formas categóricas................................................................................................................ 19
Ejemplo A1.9 ......................................................................................................................... 20
Ejemplo A1.10 ....................................................................................................................... 20
Disposición o tipos de silogismos. .......................................................................................... 21
Silogismo AAA-1 ............................................................................................................................. 22
Silogismo EAE-1 .............................................................................................................................. 22
Silogismo AII-3 ................................................................................................................................ 22
Silogismo AII-2 ................................................................................................................................ 22
Silogismo EAO-4 ............................................................................................................................. 24
A1.11 FALACIAS. ........................................................................................................................ 25
Ejemplo A1.11 ....................................................................................................................... 25
PROBLEMAS RESUELTOS .............................................................................................................. 26
Problema A1.1 ....................................................................................................................... 26
Problema A1.2 ....................................................................................................................... 26
Problema A1.3 ....................................................................................................................... 27
Problema A1.4 ....................................................................................................................... 28
Problema A1.5 ....................................................................................................................... 29
Problema A1.6 ....................................................................................................................... 29
Problema A1.7 ....................................................................................................................... 30
EJERCICIOS PROPUESTOS. ............................................................................................................ 30
Ejercicio A1.1 ........................................................................................................................ 30
Ejercicio A1.2 ........................................................................................................................ 30
Ejercicio A1.3 ........................................................................................................................ 31
Ejercicio A1.4 ........................................................................................................................ 31
Ejercicio A1.5 ........................................................................................................................ 31
REFERENCIAS. ............................................................................................................................ 31
ÍNDICE GENERAL ......................................................................................................................... 32
ÍNDICE DE FIGURAS ..................................................................................................................... 34

Profesor Leopoldo Silva Bijit 03-04-2010


34 Sistemas Digitales

Índice de Figuras

Figura A1.1. Unión e Intersección ............................................................................................. 9


Figura A1.2. Conjunto Universal y Vacío.................................................................................. 9
Figura A1.3. Consenso entre partes. ........................................................................................ 10
Figura A1.4. Término de consenso .......................................................................................... 10
Figura A1.5. Definición de Implicación ................................................................................. 11
Figura A1.6. Implicación Material ......................................................................................... 11
Figura A1.7. Implicación conjugada ....................................................................................... 11
Figura A1.7aa. Implicante. ..................................................................................................... 12
Figura A1.7a. Implicación. ..................................................................................................... 12
Figura A1.7b. Implicación. .................................................................................................... 13
Figura A1.8. Formas universales. ........................................................................................... 20
Figura A1.9. Ningún z es x. ................................................................................................... 20
Figura A1.10. Algún z es y. ................................................................................................... 21
Figura A1.11. Silogismo AAA. .............................................................................................. 21
Figura A1.12. Posición del término medio.............................................................................. 21
Figura A1.13. Silogismo AAA-1 ............................................................................................ 22
Figura A1.14. Silogismo EAE-1 ............................................................................................. 22
Figura A1.15. Silogismo AII-3 ............................................................................................... 22
Figura A1.16. Silogismo AII-2 ............................................................................................... 22
Figura A1.17. Diagramas de Venn de distribución de premisas categóricas. ........................... 23
Figura A1.18. Ferison ............................................................................................................ 23
Figura A1.19. EOO-2............................................................................................................. 23
Figura A1.20. Silogismo Condicional EAO-4......................................................................... 24
Figura PA1.1. Ampolleta e interruptores. ............................................................................... 27

Profesor Leopoldo Silva Bijit 03-04-2010


1

Apéndice 2

Uso de Abel

A2.1 Introducción

La minimización de funciones booleanas basada en mapas de Karnaugh se torna


impracticable a medida que el número de variables aumenta; no es recomendable usar esta
metodología para más de cuatro variables. Es necesario disponer de una aplicación
computacional para enfrentar diseños lógicos con varias variables.

A2.2 Lenguaje Abel.

Es un lenguaje para describir diseños de sistemas digitales en forma jerárquica. Advanced


Boolean Equation Language.

Las descripciones se realizan en un archivo de texto (con extensión abl). Su orientación es


para compilar diseños en dispositivos lógicos programables y permitir la simulación de éstos.
Como un resultado intermedio, se obtienen las ecuaciones minimizadas del diseño.

Introduciremos el lenguaje vía ejemplos.


Se requiere asignar un nombre al módulo, que describa resumidamente lo que realiza. El
módulo debe estar terminado con la palabra reservada END.
Pueden agregarse comentarios de líneas completas, empezando el texto del comentario con
comillas dobles.
Luego se identifican o declaran las variables de entrada y salida.
La palabra reservada PIN, indica que son entradas o salidas del módulo. En el caso de las
señales de salida se le agrega un declarador de tipo de salida; en el ejemplo se indica que la
salida es combinacional con el identificador reservado, entre comillas simples, 'com'.

Luego viene una sección que describe las ecuaciones lógicas de las salidas en función de las
entradas. Para el operador lógico and se emplea el símbolo ampersand &. Para el or se emplea el
#. Para el operador unario not se emplea el símbolo ! como prefijo. Para el xor se emplea el
símbolo $.

A2.3. Sistemas Combinacionales.

Ejemplo A2.1.

Describiremos en Abel el chip (pastilla) de la familia TTL 7408.


En esta componente vienen 4 ands de dos entradas.

Profesor Leopoldo Silva Bijit 19-01-2010


2 Sistemas Digitales
MODULE V7408
" Quad two input AND gate. Cuatro ands de dos entradas.

" Declaraciones de señales de entrada


A0, A1, B0, B1, C0, C1, D0, D1 PIN;

" Declaraciones de señales de salida


YA, YB, YC, YD PIN istype 'com';

EQUATIONS
YA = A0 & A1;
YB = B0 & B1;
YC = C0 & C1;
YD = D0 & D1;

END

Las descripciones anteriores permiten obtener las ecuaciones minimizadas del diseño. El
siguiente listado muestra dichas ecuaciones como suma de productos y productos de sumas.

Equations:
YA = (A0 & A1);
YB = (B0 & B1);
YC = (C0 & C1);
YD = (D0 & D1);
Reverse-Polarity Equations:
!YA = (!A0 # !A1);
!YB = (!B0 # !B1);
!YC = (!C0 # !C1);
!YD = (!D0 # !D1);

Además puede agregarse un segmento con vectores de pruebas, éstos son estímulos que
aplicados en las entradas permiten revisar funcionalmente las salidas del diseño (simulación
funcional) y también realizar una simulación temporal en la que se aprecian las formas de ondas
de las entradas y salidas con los retardos promedios que tienen las diferentes compuertas.

Para el caso del 7408 un conjunto de vectores de prueba para un and podría describirse
según:
Test_vectors
( [A1, A0 ] -> [YA])
[0, 0] ->[ 0 ];
[0, 1] ->[ 0 ];
[1, 0] ->[ 0 ];
[1, 1] ->[ 1 ];

Cada renglón define un vector, asignando valores a las entradas y salidas.

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 2. Uso de Abel 3
En caso de dispositivos programables, los vectores de prueba permiten verificar el diseño,
una vez que se ha grabado el dispositivo.

La simulación funcional aplica en las entradas los estímulos y calcula mediante las
ecuaciones los valores de las salidas; y revisa que éstos coincidan con las salidas asignadas a
cada uno de los vectores. Al final da un resumen si las diferentes pruebas pasaron o no.

AA Y
01A

V0001 0 0 L
V0002 1 0 L
V0003 0 1 L
V0004 1 1 H
4 out of 4 vectors passed.

Efectuada la simulación temporal puede obtenerse la forma de onda de la salida, para los
estímulos descritos en los vectores, las cuales muestran el retardo de propagación del canto de
subida de la señal de salida (YA):

Figura A2.1 Simulación temporal.

Ejemplo A2.2.

El esquema siguiente ilustra, para una función de tres variables completamente especificada,
la definición de la función mediante tablas de verdad.

" Función de tres variables.


MODULE f3
" entradas
a, b, c PIN;
" salidas
f PIN ISTYPE 'COM';

EQUATIONS
truth_table ( [a, b, c]->f )
[0, 0, 0]-> 0;
[0, 0, 1]-> 1;
[0, 1, 0]-> 0;
[0, 1, 1]-> 1;
[1, 0, 0]-> 0;

Profesor Leopoldo Silva Bijit 19-01-2010


4 Sistemas Digitales
[1, 0, 1]-> 0;
[1, 1, 0]-> 1;
[1, 1, 1]-> 1;
Test_vectors ( [a, b, c]->f )
[0, 0, 0]-> 0;
[0, 0, 1]-> 1;
[0, 1, 0]-> 0;
[0, 1, 1]-> 1;
[1, 0, 0]-> 0;
[1, 0, 1]-> 0;
[1, 1, 0]-> 1;
[1, 1, 1]-> 1;

END

Se obtiene la siguiente ecuación minimizada:


f = (a & b # !a & c);

Con las siguientes formas de ondas:

Figura A2.2 Formas de ondas Ejemplo A2.2.

Ejemplo A2.3.

El siguiente programa, permite obtener las ecuaciones minimizadas para una función de seis
variables, descrita por sus mintérminos:

" Ejemplo minimización .


" g(a, b, c, d, e, f) = (0, 2, 6, 7, 8, 10, 12, 14, 15, 41)
MODULE seisvar
" entradas
a, b, c, d , e, f PIN;
" salida
g PIN ISTYPE 'COM';

EQUATIONS
truth_table ( [a, b, c, d, e, f ]-> g)
0-> 1; 2-> 1; 6-> 1;
7-> 1; 8-> 1; 10-> 1;
12-> 1; 14-> 1; 15-> 1; 41-> 1;

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 2. Uso de Abel 5
END seisvar

Se obtienen las siguientes ecuaciones:


g = (a & !b & c & !d & !e & f ) # (!a & !b & d & e) # (!a & !b & !d & !f) # (!a & !b & c & !f)
Con 22 entradas para suma de productos.

!g = (a & !c) # (d & !e & f) # (a & e) # (!a & !d & f) # (!c & d & !e) # (b) # (a & !f)
Con 23 entradas para producto de sumas.

Puede generarse una simulación temporal, que permite obtener las siguientes formas de
ondas:

Figura A2.3 Simulación temporal Ejemplo A2.3.

Para lograr las formas de ondas, se generan los siguientes vectores de prueba:

Test_vectors ( [a, b, c, d, e, f]-> g )


00-> 1;01-> 0;02-> 1;03-> 0;04-> 0;05-> 0;
06-> 1;07-> 1;08-> 1;09-> 0;10-> 1;11-> 0;
12-> 1;13-> 0;14-> 1;15-> 1;16-> 0;17-> 0;
18-> 0;19-> 0;20-> 0;21-> 0;22-> 0;23-> 0;
24-> 0;25-> 0;26-> 0;27-> 0;28-> 0;29-> 0;
30-> 0;31-> 0;32-> 0;33-> 0;34-> 0;35-> 0;
36-> 0;37-> 0;38-> 0;39-> 0;40-> 0;41-> 1;
42-> 0;43-> 0;44-> 0;45-> 0;46-> 0;47-> 0;
48-> 0;49-> 0;50-> 0;51-> 0;52-> 0;53-> 0;
54-> 0;55-> 0;56-> 0;57-> 0;58-> 0;59-> 0;
60-> 0;61-> 0;62-> 0;63-> 0;

Ejemplo A2.4.

En el siguiente ejemplo se emplea notación de buses (grupos de señales reconocidas por un


nombre), también comentarios de fin de línea. Se agrega la opción de colocar un título al
módulo.

MODULE V7442
TITLE 'Decodificador de BCD a Decimal. '

Profesor Leopoldo Silva Bijit 19-01-2010


6 Sistemas Digitales
" entradas
A3..A0 pin; " Definidas por rangos, desde A3 hasta A0
" salidas
Y9..Y0 pin;
" Declaración de Señal. Se asigna nombre a un bus.
BCD = [A3..A0];

EQUATIONS
!Y0 = (BCD == ^h0); "el prefijo ^h indica un número hexadecimal.
!Y1 = (BCD == ^h1);
!Y2 = (BCD == ^h2);
!Y3 = (BCD == ^h3);
!Y4 = (BCD == ^h4);
!Y5 = (BCD == ^h5);
!Y6 = (BCD == ^h6);
!Y7 = (BCD == ^h7);
!Y8 = (BCD == ^h8);
!Y9 = (BCD == ^h9);
END

Ejemplo A2.5 Multiplicador combinacional.

Puede expresarse mediante una tabla de verdad el producto (con 2n bits) de un multiplicando
por un multiplicador de n bits cada uno.

Para operandos de tres bits, la tabla tiene 64 renglones.


Multiplica Multiplicador Producto
ndo
000 000 000000
000 001 000000
.... .... ....
001 001 000001
.... ....
111 110 101010
111 111 110001

Consideremos el algoritmo de multiplicación para papel y lápiz que se emplea para los
números decimales. Sea Q el multiplicando, formado por los bits: Q2, Q1, Q0. Y R el
multiplicador, formado por los bits: R2, R1 y R0. Resulta un producto P, formado por los bits:
P5, P4, P3, P2, P1 y P0.
R0Q2 R0Q1 R0Q0
R1Q2 R1Q1 R1Q0
R2Q2 R2Q1 R2Q0

P5 P4 P3 P2 P1 P0

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 2. Uso de Abel 7

Cada producto individual RiQi puede expresarse como la operación and de sus términos. Es
decir, RiQi = Ri & Qi, ya que sólo la multiplicación de 1 por 1 da 1.

Empleamos el siguiente símbolo para un sumador completo de dos bits(Ai, Bi) más una
reserva de entrada(Ci). El sumador tiene dos salidas: la suma(Si) y la reserva de salida(Co).
Ai Bi

C + Ci
o

Si
Las ecuaciones para el sumador, pueden describirse según:
Si = (Ai $ Bi) $ Ci; Co = (Ai & Bi) # (Ai & Ci) # (Bi & Ci);

Puede entonces implementarse el siguiente diagrama para el multiplicador combinacional:

0 R1Q2 R1Q1 R0Q2 R1Q0 R0Q1 R0Q0

+ + + 0
c4 c2 c1

R2Q1
s3 s2
R2Q2 R2Q0

+ + c3
+ 0
c5

P5 P4 P3 P2 P1 P0

Del diagrama pueden escribirse las siguientes ecuaciones:


P0 = R0 & Q0;
P1= (R1 & Q0) $ (R0 & Q1) ;
c1 = (R1 & Q0) & ( R0 & Q1);
s2= ( (R1 & Q1) $ (R0 & Q2) ) $ c1;
c2 = ( (R1 & Q1) & ( R0 & Q2) ) # ( (R1 & Q1) & c1) # ((R0 & Q2) & c1);
P2 = ( (R2 & Q0) $ s2);
c3 = ((R2 & Q0) & s2);
s3= ( (R1 & Q2) $ c2 ) ;
c4 = (R1 & Q2) & c2 ;

P3 = ((R2 & Q1) $ s3) $ c3;


c5 = ((R2 & Q1) & s3) # ((R2 & Q1) & c3) # (s3 & c3);

Profesor Leopoldo Silva Bijit 19-01-2010


8 Sistemas Digitales
P4= ( (R2 & Q2) $ c4 ) $ c5;
P5 = ( (R2 & Q2) & c4 ) # ( (R2 & Q2) & c5) # (c4 & c5);

Si crece el número de bits de los operandos, no resulta adecuado plantear las ecuaciones a
partir de un diagrama. Las siguientes ecuaciones realizan al multiplicador combinacional, de
una manera más compacta, y pueden modificarse para tratar operandos mayores. Se deja al
compilador Abel la tarea de minimizar las ecuaciones.

R = [R2..R0];
Q = [Q2..Q0];
P = [P5..P0];
PP0 = R0 & [0, 0, 0, Q2, Q1, Q0];
PP1 = R1 & [0, 0, Q2, Q1, Q0, 0];
PP2 = R2 & [0, Q2, Q1, Q0, 0, 0];

equations
P = PP0 + PP1 + PP2;

A2.4. Diseño de Máquinas Secuenciales.

Ejemplo A2.5. Detector secuencia 0101.

A continuación se tiene el diagrama de estados de una máquina secuencial (Modelo de


Mealy) que produce una salida alta cada vez que se detecta la secuencia 0101 en la entrada; y
salida cero en el resto de los casos.
1/0

0/0
1/0 0/0
A B
B C D
0/0 1/0
1/1
0/0

Figura A2.4 Diagrama de estados detector secuencia 0101.

La siguiente secuencia de entrada produce las siguientes secuencias de salida y de


transiciones de estados.

Entrada 0 1 0 1 1 0 0 1 1 ....
Salida 0 0 0 1 0 0 0 0 0 ....
Pxo. B C D C A B B C A ….
Estado

Figura A2.5 Secuencias de entrada, salida y de estados.

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 2. Uso de Abel 9
El siguiente módulo describe el diagrama de estados.
En las declaraciones se emplea el tipo reg, para declarar una salida registrada; es decir, una
salida de un flip-flop D. En el diseño se tienen dos salidas: z es una salida combinacional, que
como veremos es asincrónica; mientras que la salida zs es de tipo sincrónica.

Luego se declara el registro de estado (sreg), en función de las salidas de los flip-flops.
También se efectúa un mapeo de nombres lógicos a físicos. Esto también se denomina
asignación de estados. El estado inicial, será el estado A; cuyo nombre binario será [0, 0].
En las ecuaciones se indican las señales de entrada que ingresan al reloj (clock), a la
habilitación de la salida (enab, no se usa enable ya que es palabra reservada) y al reseteo
asincrónico de la macrocelda (reset).

Luego se describe el diagrama de estados de sreg, mediante la especificación de cada estado.


En la cual se indica las transiciones de acuerdo a los valores de las entradas (esto se indica con
la sentencia if then else); y los valores que deben tomar las salidas (esto se realiza con la
sentencia with). Debe notarse que las salidas registradas se asignan con :=, y que a las salidas
combinacionales se les asigna un valor con el signo igual. Pueden agruparse acciones, mediante
el uso de paréntesis cursivos { }.

Finalmente se especifican vectores de prueba. Se emplea la constante .c. para modelar un


pulso de reloj, equivale a generar tres vectores, uno con clock en cero, luego un valor de clock
uno; y finalmente un valor de clock cero. Como el resto de las entradas no cambian, se cumplen
automáticamente las especificaciones de tiempos de set-up y hold para la variable de entrada x.
La constante .C. es adecuada para flip-flops que operan con cantos de subida; la constante
.K. genera la secuencia 101 en el reloj, que es adecuada para flip-flops que operan con cantos
de bajada. Además se tienen los estímulos .D. que genera un canto de bajada, con la secuencia
10; la constante .U. genera un canto de subida, con la secuencia 01.
Se generan los vectores asociados a la tabla anterior con las secuencias de la entrada, salida y
estados.

MODULE estado1

TITLE 'Diagrama de Estados. Modelo de Mealy'


"Declaraciones
q1, q0, zs pin istype 'reg'; "Estado y Salida Registrada
clock, enab, reset, x pin ; "Entradas
z pin istype 'com'; "Salida Combinacional.

sreg = [q1,q0];
"Valores de los estados
A= 0; B= 1; C= 2; D= 3;

equations
[q1,q0,zs].clk= clock;
[q1,q0,zs].oe = !enab;
[q1,q0,zs].ar = reset; "Con reset va a [0, 0](el estado A).

Profesor Leopoldo Silva Bijit 19-01-2010


10 Sistemas Digitales
state_diagram sreg;
State A:
zs := 0; if (!x) then B with z = 0; else A with z = 0;
State B:
if (!x) then B with z = 0; else C with z = 0;
State C:
if (!x) then D with z = 0; else A with z = 0;
State D:
if (!x) then B with z = 0; else C with {z = 1; zs := 1;}
test_vectors ( [clock,enab,reset, x]->[sreg,zs])
[.c. , 0 , 1 , 0 ]->[A ,0];
[.c. , 0 , 0 , 1 ]->[A ,0];
[.c. , 0 , 0 , 0 ]->[B ,0];
[.c. , 0 , 0 , 1 ]->[C ,0];
[.c. , 0 , 0 , 0 ]->[D ,0];
[.c. , 0 , 0 , 1 ]->[C ,1];
[.c. , 0 , 0 , 1 ]->[A ,0];
[.c. , 0 , 0 , 0 ]->[B ,0];
[.c. , 0 , 0 , 0 ]->[B ,0];
[.c. , 0 , 0 , 1 ]->[C ,0];
[.c. , 0 , 0 , 1 ]->[A ,0];
END

Después de la compilación, las ecuaciones reducidas resultan:


q1.OE = (!enab);
q1 := (q1.FB & !q0.FB & !x) # (q0.FB & x);
q1.AR = (reset);
q1.C = (clock);

q0.OE = (!enab);
q0 := (!x);
q0.AR = (reset);
q0.C = (clock);

zs.OE = (!enab);
zs := (q1.FB & q0.FB & x);
zs.AR = (reset);
zs.C = (clock);

z = (q1.FB & q0.FB & x);

En la Figura A2.6 se ilustra la notación empleada para las variables asociadas a cada salida
registrada. Nótese que cuando q1 aparece al lado izquierdo de la asignación, está representando
a la entrada D del flip-flop, es el próximo estado que tomará dicha variable; es decir q1(k+1),
con la notación empleada en clases.
Cuando aparece en el lado derecho el término q1.FB (por feed-back) se lo interpreta como la
salida del flip-flop.

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 2. Uso de Abel 11

clock
enable
reset Q.AR
AR Q.OE

D Q
clk
Q.C
x
Q.FB Q.PIN
in

Figura A2.6 Variables internas. Visión del programador.

Nótese que la expresión booleana para la salida asincrónica z es idéntica a la de zs, que es
salida de flip-flop.

La salida del reporte de simulación muestra los estímulos y respuestas debidos a los vectores
elegidos.
c r
l e e
on s
ca e qqz
kb tx 10s

V0001 C 0 1 0 ZZZ
C010 LLL
C010 LLL
C010 LLL
V0002 C 0 0 1 LLL
C001 LLL
C001 LLL
V0003 C 0 0 0 LLL Clock = 0
C000 LHL Clock = 1
C000 LHL Clock = 0
V0004 C 0 0 1 LHL
C001 HLL
C001 HLL
V0005 C 0 0 0 HLL
C000 HHL
C000 HHL
V0006 C 0 0 1 HHL
C001 HLH
C001 HLH
C001 HLH
V0007 C 0 0 1 HLH
C001 LLL
C001 LLL
V0008 C 0 0 0 LLL

Profesor Leopoldo Silva Bijit 19-01-2010


12 Sistemas Digitales
C000 LHL
C000 LHL
V0009 C 0 0 0 L H L
C000 LHL
C000 LHL
V0010 C 0 0 1 L H L
C001 HLL
C001 HLL
V0011 C 0 0 1 H L L
C001 LLL
C001 LLL
11 out of 11 vectors passed.

Debe notarse que cada vector genera tres estímulos (esto debido al pulso definido con .c.).
Los vectores generan las siguientes formas de ondas:

V003 V006
asincrónica

Figura A2.7 Simulación funcional. Formas de ondas generadas por estímulos.

La señal z cambia entre dos cantos de subida del reloj, por esto se dice que es asincrónica
respecto de éste. Mientras que la señal zs, que se obtiene como salida de un flip-flop será
sincrónica con éste.
La salida z cambia en la transición, apenas se produce la condición que la genera. La señal zs
ocurre generalmente un poco después, ya que se activa cuando ocurre el siguiente canto de
subida del reloj.

La señal z, es una salida de una máquina de Mealy, y depende de las entradas; lo cual puede
verse ya que interviene la entrada x en la ecuación: z = (q1.FB & q0.FB & x);
Si esta salida está conectada como entrada a otra máquina secuencial, que ocupe el mismo
reloj, podría no cumplir las condiciones para operación sincrónica. Por lo tanto es recomendable
emplear la salida sincronizada zs.

Con dispositivos programables conviene emplear el modelo de Moore. En este caso las
salidas están sincronizadas con el reloj.

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 2. Uso de Abel 13
Ejemplo A2.6. Reconocedor de un patrón finito. Modelo de Moore

Con entrada x y salida z; la salida se activa cada vez que se presenta la secuencia 010, y
mientras que la secuencia 100 no se haya presentado, en cuyo caso la salida se desactiva
permanentemente.
reset S0
0
0 1

0 S1 S4
1
0 0
...0 ...1

1 0
1

S2 1 S5
...10
0 0
...01

0 1 0

S3 S6 0/1
1 0
...010 ...100

Figura A2.8 Diagrama de Moore Ejemplo A2.6.

El siguiente programa, implementa el diseño:

MODULE fsm010
TITLE 'fsm010'
"Activa Z cada vez que llega 010 y mientras no llegue 100.
"si llega 100 se activa Y, y permanece en ese estado.

"Declaraciones
"Pines de entrada
clk, Xin, RESET pin;
"Pines de Salida
Q0, Q1, Q2 pin istype 'reg';
Z, Y pin istype 'com';
"Registro de Estado
SREG = [Q0, Q1, Q2];
"Definicion de Estados
S0 = [0,0,0]; " Estado Inicial. (Reset state)
S1 = [0,0,1]; " secuencias tipo ...0
S2 = [0,1,0]; " secuencias tipo ...01
S3 = [0,1,1]; " secuencias tipo ...010
S4 = [1,0,0]; " secuencias tipo ...1
S5 = [1,0,1]; " secuencias tipo ...10
S6 = [1,1,0]; " secuencias tipo ...100

Profesor Leopoldo Silva Bijit 19-01-2010


14 Sistemas Digitales

equations
[Q0,Q1,Q2].clk= clk;
[Q0.ar, Q1.ar, Q2.ar] = RESET; "Con Reset va a S0
" Z=!Q0&Q1&Q2; Y=Q0&Q1&!Q2;
"Modelo de Moore

state_diagram SREG
state S0: Z=0; Y=0; if Xin then S4 else S1;
state S1: if Xin then S2 else S1;
state S2: if Xin then S4 else S3;
state S3: Z=1; if Xin then S2 else S6;
state S4: if Xin then S4 else S5;
state S5: if Xin then S2 else S6;
state S6: Y=1; goto S6;

test_vectors ([clk, RESET, Xin] -> [Z,Y])

[.C.,1,.X.] ->[0,0]; "reset


[.C.,0, 0] -> [0,0]; "secuencia 00101010010
[.C.,0, 0] -> [0,0];
[.C.,0, 1] -> [0,0];
[.C.,0, 0] -> [1,0];
[.C.,0, 1] -> [0,0];
[.C.,0, 0] -> [1,0];
[.C.,0, 1] -> [0,0];
[.C.,0, 0] -> [1,0];
[.C.,0, 0] -> [0,1];
[.C.,0, 1] -> [0,1];
[.C.,0, 0] -> [0,1];

END fsm010;

Nótese la definición de las salidas asociadas al estado. Y el salto incondicional, mediante el


goto.
Las salidas también podrían haberse definido en el segmento de las ecuaciones, esto se
insinúa como comentario.

Después de la compilación, resultan las ecuaciones reducidas:


Q0 := (!Q0.FB & Q1.FB & Q2.FB & !Xin) # (Q0.FB & !Q1.FB & !Xin) # (Q0.FB & !Q2.FB)
# ( !Q2.FB & Xin);
Q0.AR = (RESET);
Q0.C = (clk);

Q1 := (!Q0.FB & Q1.FB & !Xin) # ( !Q0.FB & Q2.FB & Xin) # (Q0.FB & Q1.FB & !Q2.FB)
# (Q0.FB & !Q1.FB & Q2.FB);
Q1.AR = (RESET);
Q1.C = (clk);

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 2. Uso de Abel 15
Q2 := (!Q1.FB & !Q2.FB & !Xin) # (!Q0.FB & !Q2.FB & !Xin) # (!Q0.FB & !Q1.FB & !Xin);
Q2.AR = (RESET);
Q2.C = (clk);

Z = (!Q0.FB & Q1.FB & Q2.FB);


Y = (Q0.FB & Q1.FB & !Q2.FB);

Con estas ecuaciones, podría haberse efectuado el diseño sin emplear diagrama de estados.

Con los vectores se generan las siguientes formas de ondas:

Figura A2.9 Formas de ondas Ejemplo A2.6.

Ejemplo A2.7. Contador sincrónico con control de modo M.

Si M = 0 el contador es binario ascendente; si M = 1 el contador avanza según código Gray.


A continuación se indican las secuencias de cuentas:
binario: 000, 001, 010, 011, 100, 101, 110, 111
Gray: 000, 001, 011, 010, 110, 111, 101, 100
El diagrama de estados se construye para la secuencia binaria, con transiciones con entrada
de control igual a cero. Luego, se marcan las transiciones para contar en Gray.
En este diseño las salidas corresponden al estado directamente. Como es usual en contadores.
Ver ejemplo 9.6.9.

MODULE cntgray
TITLE 'Contador en Gray'

"Pines de Entrada
clk, M, RESET pin 1, 2, 3;
"Pines de Salida
Z0, Z1, Z2 pin istype 'pos, reg';
"Registro de Estado
SREG = [Z0, Z1, Z2];
S0 = [0,0,0];
S1 = [0,0,1];
S2 = [0,1,0];
S3 = [0,1,1];
S4 = [1,0,0];
S5 = [1,0,1];

Profesor Leopoldo Silva Bijit 19-01-2010


16 Sistemas Digitales
S6 = [1,1,0];
S7 = [1,1,1];
equations
[Z0,Z1,Z2].clk= clk;
[Z0.ar, Z1.ar, Z2.ar] = RESET; "Reset asincrónico lleva al estado S0

state_diagram SREG
state S0: goto S1;
state S1: if M then S3 else S2;
state S2: if M then S6 else S3;
state S3: if M then S2 else S4;
state S4: if M then S0 else S5;
state S5: if M then S4 else S6;
state S6: goto S7;
state S7: if M then S5 else S0;
test_vectors ([clk, RESET, M] -> [Z0, Z1, Z2])
[0,1,.X.] -> [0,0,0];
[.C.,0,0] -> [0,0,1];
[.C.,0,0] -> [0,1,0];
[.C.,0,1] -> [1,1,0];
[.C.,0,1] -> [1,1,1];
[.C.,0,1] -> [1,0,1];
[.C.,0,0] -> [1,1,0];
[.C.,0,0] -> [1,1,1];
end cntgray

Las ecuaciones resultan, después de la compilación:


Equations:

Z0 := (Z0.FB & !Z1.FB & !M) # (Z0.FB & !Z2.FB & !M) # (Z0.FB & Z2.FB & M)
# (!Z0.FB & Z1.FB & Z2.FB & !M) # (Z1.FB & !Z2.FB & M);
Z0.AR = (RESET);
Z0.C = (clk);

Z1 := (!Z0.FB & Z2.FB & M) # (!Z1.FB & Z2.FB & !M) # (Z1.FB & !Z2.FB);
Z1.AR = (RESET);
Z1.C = (clk);

Z2 := (!Z0.FB & !Z1.FB & M) # (Z0.FB & Z1.FB & M) # (!Z2.FB & !M);
Z2.AR = (RESET);
Z2.C = (clk);

Los estímulos generan las siguientes formas de ondas:

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 2. Uso de Abel 17

Figura A2.10 Formas de ondas contador Gray.

Ejemplo A2.8.

A través del lenguaje puede describirse un flip-flop JK, mediante:

Q:= (J& !Q) #(!K&Q);

La Figura A2.11 muestra la implementación de un JK, mediante un dispositivo lógico


programable, los cuales tienen flip-flops de tipo D en su estructura interna:

Q
D DQ

J Q.f
K b
reloj

Figura A2.11. Implementación de JK en CPLD

Profesor Leopoldo Silva Bijit 19-01-2010


18 Sistemas Digitales

Índice general

APÉNDICE 2 .........................................................................................................................................1
USO DE ABEL ......................................................................................................................................1
A2.1 INTRODUCCIÓN ...........................................................................................................................1
A2.2 LENGUAJE ABEL. .......................................................................................................................1
A2.3. SISTEMAS COMBINACIONALES...................................................................................................1
Ejemplo A2.1. .................................................................................................................................1
Ejemplo A2.2. .................................................................................................................................3
Ejemplo A2.3. .................................................................................................................................4
Ejemplo A2.4. .................................................................................................................................5
Ejemplo A2.5 Multiplicador combinacional. .................................................................................6
A2.4. DISEÑO DE MÁQUINAS SECUENCIALES. ........................................................................................8
Ejemplo A2.5. Detector secuencia 0101. .......................................................................................8
Ejemplo A2.6. Reconocedor de un patrón finito. Modelo de Moore ............................................13
Ejemplo A2.7. Contador sincrónico con control de modo M. ......................................................15
Ejemplo A2.8. ...............................................................................................................................17
ÍNDICE GENERAL ...............................................................................................................................18
ÍNDICE DE FIGURAS ...........................................................................................................................19

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 2. Uso de Abel 19

Índice de Figuras

Figura A2.1 Simulación temporal. ............................................................................................... 3


Figura A2.2 Formas de ondas Ejemplo A2.2. .............................................................................. 4
Figura A2.3 Simulación temporal Ejemplo A2.3. ......................................................................... 5
Figura A2.4 Diagrama de estados detector secuencia 0101. ......................................................... 8
Figura A2.5 Secuencias de entrada, salida y de estados................................................................ 8
Figura A2.6 Variables internas. Visión del programador. ........................................................... 11
Figura A2.7 Simulación funcional. Formas de ondas generadas por estímulos. ......................... 12
Figura A2.8 Diagrama de Moore Ejemplo A2.6. ........................................................................ 13
Figura A2.9 Formas de ondas Ejemplo A2.6. ............................................................................. 15
Figura A2.10 Formas de ondas contador Gray. ........................................................................... 17
Figura A2.11. Implementación de JK en CPLD.......................................................................... 17

Profesor Leopoldo Silva Bijit 19-01-2010


1

Apéndice 3

Uso de espresso

A3.1 Introducción

La minimización de funciones booleanas basada en mapas de Karnaugh se torna


impracticable a medida que el número de variables aumenta; no es recomendable usar esta
metodología para más de cuatro variables.
El algoritmo de Quine-McCluskey es de complejidad no polinomial, ya que el costo de
resolver la cobertura mínima de la tabla de implicantes es de costo exponencial.

Para resolver problemas reales, con elevado número de variables y funciones, es necesario
disponer de una aplicación computacional para enfrentar el diseño lógico.

El programa de minimización de funciones booleanas espresso fue desarrollado por la


Universidad de Berkeley, y puesto a disposición de otras universidades en 1984. Hoy es una
aplicación de software abierto.

Puede ejecutarse en forma interactiva bajo Unix, Linux o Windows en una ventana DOS,
ocupando 160KB. Si bien tiene una interfaz simple, aún hoy es una herramienta suficientemente
poderosa para ser empleada en un curso básico de Sistemas Digitales.

Se especifica, en un archivo de texto, la tabla de verdad de una o más funciones booleanas


con o sin condiciones superfluas y se obtiene una representación mínima equivalente.

Los algoritmos heurísticos empleados por espresso obtienen una cobertura de la función
mediante implicantes, pero no necesariamente la función mínima; salvo que se emplee la opción
–Dexact. En este último caso la ejecución puede ocupar mucho tiempo.

La comprensión de las ideas en que está basado espresso implican familiarizarse con nuevos
conceptos asociados a funciones booleanas.

Este apéndice no profundiza en los conceptos en que está basado espresso, sino en su uso a
través de ejemplos.

A3.2 Minimización de una función

La especificación de la siguiente función:

Z m(0,3,5,12,13) d (1, 2,15)

Profesor Leopoldo Silva Bijit 19-01-2010


2 Sistemas Digitales

Se logra con el siguiente texto, que suponemos almacenado en el archivo ej1.pla. Se agregan
comentarios de línea y de fin de línea con el símbolo #.

A3.2.1. Formato PLA.

El formato pla describe los mintérminos presentes en el conjunto on y en el conjunto


superfluo, esto cuando se está en modo FD; que es el modo por defecto. En este modo los
mintérminos no especificados pertenecen al conjunto off de la función.

# Ejemplo de formato PLA

.i 4 # número de entradas
.o 1 # número de salidas
.ilb A B C D # nombre de las entradas
.ob Z # nombre de la salida
# Los mintérminos presentes se especifican con valor 1.
# ON-set
0000 1
0011 1
0101 1
1100 1
1101 1
# Los mintérminos superfluos se especifican con -. DC-set
0001 -
0010 -
1111 -
.e #se termina con end.

La ejecución del comando: espresso ej1.pla > ej1.out, produce el siguiente archivo:

.i 4
.o 1
.ilb A B C D
.ob Z
.p 3
-101 1
00-- 1
110- 1
.e

El resultado, entrega, en el mismo formato de entrada, los implicantes, productos o cubos que
son una cobertura de la función.

La salida puede generarse en forma simbólica mediante:


espresso -oeqntott -eeat ej1.pla > ej1s.out

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 3. Uso de espresso 3
La opción –oeqntott genera una salida simbólica.
La opción –eeat se come los comentarios, y no los envía hacia la salida. El comando anterior
produce:

Z = (B&!C&D) | (!A&!B) | (A&B&!C);

La ecuación anterior se traduce con facilidad a la descripción estructural Verilog:


(Ver Apéndice 5).

assign Z = (B&~C&D) | (~A&~B) | (A&B&~C);

Sólo basta reemplazar, mediante un editor de texto, los ! por ~. Además agregar el comando
assign.

A3.2.2. Tipos de minimizaciones.

El programa espresso permite efectuar varios tipos de minimizaciones.

Con la opción –Dexact efectúa una minimización exacta. La opción –t efectúa traza, la que va
mostrando estadísticas de ejecución.
espresso -Dexact -t ej1.pla

Con la opción –Dqm se realiza una heurística para resolver la tabla de implicantes, consistente
en elegir un cubo para resolver la tabla cíclica, y no se vuelve atrás para comparar. Las letras qm
provienen de "quasi-minimal".
espresso -Dqm -t ej1.pla

Sin la opción –D se realiza la heurística propia de espresso.


espresso -t ej1.pla

Con la opción –efast se simplifica la heurística anterior.


espresso -efast -t ej1.pla

A3.2.3. Costos.

La opción –t genera un listado con la duración de la etapa en segundos y el costo una vez
completa la fase.

En el costo se indica el número c de productos o cubos; seguido de in, la suma del número de
entradas a las compuertas ands; luego out que es la suma de las entradas a las compuertas or de
salida; finalmente el total tot que corresponde a la suma de entradas del diseño.
En el formato pla tipo fd, del resultado, se cuentan los unos y ceros de la tabla de entrada, éstos
corresponden a in; los unos de la tabla de salida corresponden a out.

La columna inicial READ, indica el costo sin minimización, la última columna da el tiempo
total y el costo con la minimización ya realizada.

Profesor Leopoldo Silva Bijit 19-01-2010


4 Sistemas Digitales
A3.2.4. Formato eqn.

Una forma alternativa de ingresar los datos a espresso es mediante ecuaciones. En este formato
cada ecuación se separa de la siguiente con puntos y comas. El operador or se simboliza con +,
a una variable complementada se le agrega una comilla simple; dos literales adyacentes
simbolizan el operador and, también puede escribirse un asterisco. Además: != simboliza la
operación xor; == representa a not xor. La construcción !(..) niega el contenido de la frase
entre paréntesis.
Si se escriben sumas de productos, el operador complemento tiene mayor precedencia que el
and, el cual a su vez tiene mayor precedencia que el or. Pueden usarse paréntesis.

Un ejemplo del formato eqn son las ecuaciones de un sumador completo:


co = a b ci + a b ci' + a b' ci + a' b ci ;
sum = a b ci + a b' ci' + a' b ci' + a' b' ci ;

Si las líneas anteriores se han almacenado en un archivo con nombre sumador.eqn, la


transformación de las ecuaciones a formato pla, se logra empleando el comando sis. Luego de
ejecutado éste, se lee el archivo con ecuaciones, mediante:
sis> read_eqn sumador.eqn

Puede observarse un listado, con el comando:


sis> print

Para cambiar el formato a pla, basta escribir el comando:


sis>write_pla sumador.pla

El cual escribe el archivo sumador.pla, cuyo contenido es:

.i 3
.o 2
.ilb a b ci
.ob sum cout
.p 8
111 10
101 10
010 10
100 10
111 01
011 01
101 01
110 01
.e

El programa sis, Sequential Interactive System, tiene muchas opciones que serán expuestas en el
Apéndice 6.

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 3. Uso de espresso 5
A3.3 Minimización con múltiples salidas

La descripción del archivo con formato pla, para describir multifunciones puede explicarse a
través del siguiente ejemplo.

Sean dos funciones de tres variables: con 3 entradas (a, b, c) y 2 salidas (f1, f2), cuyas tablas de
verdad se muestran a continuación:

a b c f1 f2
0 0 0 1 0
0 0 1 1 1
0 1 0 0 0
0 1 1 0 0
1 0 0 0 -
1 0 1 1 1
1 1 0 1 1
1 1 1 1 0

El archivo con formato pla describe las funciones según:


#ej2.pla
.i 3
.o 2
.ilb a b c
.ob f1 f2
.p 6 #indica el número de cubos o productos de la lista
000 10
001 11
100 0-
101 11
110 11
111 10
.e

Un "0" en un campo de salida significa que el cubo no contribuye a esa salida; es decir, el 0 en
la salida no está indicando que el cubo pertenece al conjunto off de la función.
La minimización simultánea y exacta, origina los siguientes cubos.
.i 3
.o 2
.ilb a b c
.ob f1 f2
.p 4
1-0 01
00- 10
11- 10
-01 11 #el cubo b’c es compartido por ambas funciones.
.e

Profesor Leopoldo Silva Bijit 19-01-2010


6 Sistemas Digitales

Veamos otro ejemplo de minimización simultánea de varias funciones:

.i 4
.o 3
.ilb a b c d
.ob f1 f2 f3
0010 110
0011 110
0101 110
0110 011
0111 111
1000 101
1001 101
1010 110
1011 110
1101 101
1110 011
1111 111
.e

Los mintérminos presentes en cada función se marcan con un 1; cuando no están presentes se
marcan con ceros. En el ejemplo, se tiene que:

f1 m(2,3,5, 7,8,9,10,11,13,15)

Como no existen condiciones superfluas, se desprende que los ceros de la función, quedan
dados por:
f1 ' m(0,1, 4, 6,12,14)

La minimización simultánea de las tres funciones resulta:


.i 4
.o 3
.ilb a b c d
.ob f1 f2 f3
.p 5
11-1 101
100- 101
01-1 110
-01- 110
-11- 011
.e

Y en forma simbólica, empleando la opción –oeqntott:

f1 = (a&b&d) | (a&!b&!c) | (!a&b&d) | (!b&c);

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 3. Uso de espresso 7
f2 = (!a&b&d) | (!b&c) | (b&c);
f3 = (a&b&d) | (a&!b&!c) | (b&c);

Se tienen cinco implicantes que son compartidos por las tres funciones. Esta forma resulta
útil empleando dispositivos programables PLD, ya que se obtiene el menor número de
productos que minimizan todas las funciones.

Con la opción –Dso (single output) se logra la minimización individual de las funciones. De
esta forma se obtiene la forma equivalente, en términos de ocho productos:

.ilb a b c d
.ob f1 f2 f3
10-- 100
-01- 100
-1-1 100
01-1 010
--1- 010
1-01 001
100- 001
-11- 001

Que en forma simbólica se expresa:

f1 = (a&!b) | (!b&c) | (b&d);


f2 = (!a&b&d) | (c);
f3 = (a&!c&d) | (a&!b&!c) | (b&c);

A3.4 Minimización de producto de sumas

Para obtener minimizaciones en forma de producto de sumas, puede emplearse la opción: -epos
(product of sums).

El comando: espresso –epos ej1.pla produce en la salida estándar:


.ilb A B C D
.ob Z
10-- 1
-11- 1
01-0 1

La cual debería interpretarse según:

!Z = (A&!B) | (B&C) | (!A&B&!D);

Complementando y empleando De Morgan, se obtiene la forma producto de sumas:

Profesor Leopoldo Silva Bijit 19-01-2010


8 Sistemas Digitales
Z= (A’ + B)(B’ + C’)(A + B’ + D)

A3.5. Optimización de fases.

La opción –Dopo realiza una optimización de la fase de la salida (output phase


optimization).
Determina las funciones que deben ser complementadas para reducir el número de términos
necesarios para implementarlas.
Después de asignar fases a las salidas se minimiza la función.
La fase igual a 1 indica que conviene implementar en base a suma de productos; la fase igual
a cero indica que resultará más económico implementar esa función como producto de sumas.

Para las siguientes funciones:


#f(a, b, c) = m(2,3,4,5,6,7)
#g(a, b, c) = m(2,3)
.i 3
.o 2
.ilb a b c
.ob f g
010 11
011 11
100 10
101 10
110 10
111 10
.e

El comando: espresso –Dopo file.pla, obtiene el siguiente diseño con 6 entradas:

f=a+a'b, g=a'b.

El comando: espresso –Dopo –Dso file.pla, obtiene el siguiente diseño con 4 entradas:

f=a+b, g=a'b.

A3.6 Minimización de funciones de próximo estado

La siguiente matriz de transiciones describe una máquina secuencial tipo Mealy.

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 3. Uso de espresso 9

Estado Presente Entrada X Asignación


Q2Q1Q0 0 1
S0 S1/1 S2/0 000
S1 S3/1 S4/0 001
S2 S4/0 S4/1 011
S3 S5/0 S5/1 110
S4 S5/1 S6/0 100
S5 S0/0 S0/1 111
S6 S0/1 -/- 101
Próximo Estado/Salida
D2D1D0/Z

El diseño de las funciones combinacionales de próximo estado y de salida pueden ser


minimizadas con la siguiente descripción:

#Red combinacional Mealy.


.i 4
.o 4
.ilb x q2 q1 q0
.ob d2 d1 d0 z
0 000 001 1
1 000 011 0
0 001 110 1
1 001 100 0
0 011 100 0
1 011 100 1
0 110 111 0
1 110 111 1
0 100 111 1
1 100 101 0
0 111 000 0
1 111 000 1
0 101 000 1
1 101 --- -
0 010 --- -
1 010 --- -
.e

El esquema de la red combinacional, cuyas salidas se conectan a las entradas de un registro


de cuatro bits, se muestra en la Figura A3.1. Se ha sincronizado la salida Z.

Profesor Leopoldo Silva Bijit 19-01-2010


10 Sistemas Digitales

X Z D3 Q3

Q2 D2 D2 Q2

D1 D1 Q1
Q1
Q0 D0 D0 Q0

clk

Figura A3.1

La salida de espresso, muestra que se ha minimizado de 16 a 9 productos:

#Red combinacional Mealy.


.i 4
.o 4
.ilb x q2 q1 q0
.ob d2 d1 d0 z
.p 9
0001 0100
10-0 0100
01-0 0100
1-1- 0001
-0-1 1000
0-0- 0001
-1-0 1000
--10 0100
---0 0010
.e

La salida simbólica, genera las ecuaciones de los flip-flops Ds y la de la salida z:

d2 = (!q2&q0) | (q2&!q0);
d1 =(!x&!q2&!q1&q0)|(x&!q2&!q0)|(!x&q2&!q0)| (q1&!q0);
d0 = (!q0);
z = (x&q1) | (!x&!q1);

Existen otras herramientas computacionales para efectuar la reducción de estados


equivalentes y la asignación de estados, espresso sólo efectúa la minimización de funciones
combinacionales.

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 3. Uso de espresso 11
A3.7 Minimización de diagramas de estado

Debido a que espresso minimiza funciones multivaluadas puede emplearse para obtener las
ecuaciones de próximo estado a partir de una descripción del diagrama de transiciones.

La metodología de asignar estados en la que se emplea un bit diferente para cada estado (one
hot), logra que el próximo estado dependa de solo un bit, lo cual produce lógica combinacional
más simple y rápida; esto a costa de un mayor número de flip-flops.
Para efectuar esta asignación de estados se agrega la palabra reservada .kiss.

Para el siguiente diagrama de estados:

0 s0 s1 0
1

1 1

s3 1 s2
0 0

Figura A3.2

Asumiremos un modelo de Moore, con salida uno asociada al estado s3; el resto de los
estados tienen salida cero. Se tienen entonces cuatro variables: la entrada x es una variable
binaria; el estado presente y el próximo estado son variables simbólicas multivaluadas, pueden
tener cuatro valores cada una; y la variable de salida z, binaria en el caso del ejemplo.

La descripción del archivo no emplea los controles .i y .o; a cambio se describen las entradas
y salidas empleando .mv. La primera cantidad, después de .mv, es el número de variables;
luego el número de entradas binarias; luego el número de valores que pueden tomar las
variables simbólicas, y finalmente el tamaño de la variable de salida.

El ejemplo de la Figura A3.2, se puede describir mediante:

.mv 4 1 -4 -4 1
.ilb x
.ob z
.kiss
0 s0 s0 0
1 s0 s1 0
0 s1 s1 0
1 s1 s2 0
0 s2 s2 0
1 s2 s3 0
0 s3 s3 1
1 s3 s0 1

Profesor Leopoldo Silva Bijit 19-01-2010


12 Sistemas Digitales
.e

La tercera variable desde la última es el estado simbólico presente. La segunda variable


desde la última, también simbólica, es el próximo estado. La última variable es la salida.

Al ser procesado por espresso se obtiene la asignación de estados:

.mv 3 1 4 5
.ilb x
.ob s0 s1 s2 s3 z
.label var=1 s0 s1 s2 s3
.p 8
0 1000 10000
1 1000 01000
0 0100 01000
1 0100 00100
0 0010 00100
1 0010 00010
1 0001 10001
0 0001 00011
.e

Se reconocen ahora tres variables: la entrada que se considera binaria, la segunda que puede
representar por 4 bits, y la salida de tamaño 5. El programa agrega un rótulo con el orden de las
variables.

Si este archivo se modifica para variables booleanas, puede aplicarse la metodología vista en
A3.5, para obtener las ecuaciones de diseño.

#.mv 3 1 4 5
.i 5
.o 5
.ilb x q0 q1 q2 q3
.ob s0 s1 s2 s3 z
#.label var=1 s0 s1 s2 s3
.p 8
0 1000 10000
1 1000 01000
0 0100 01000
1 0100 00100
0 0010 00100
1 0010 00010
1 0001 10001
0 0001 00011
.e

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 3. Uso de espresso 13
A3.8 Generación automática de tablas en formato pla.

Numerosos problemas combinacionales pueden ser sintetizados generando su tabla de


verdad, mediante sencillos programas en C. El siguiente ejemplo ilustra una forma de
efectuarlo.
El programa principal invoca a una función que escribe en un archivo de texto.
La función escribe_archivo abre y cierra un archivo de texto en formato pla.
La función prtint escribe secuencias binarias de un largo dado.
La única función que debe modificarse es la que genera la tabla para un problema
determinado prtinfile.

Se ilustra la generación de una tabla que realiza la suma de dos operandos binarios sin signo,
de seis bits cada uno. La salida o resultado se expresa en 7 bits.

#include <stdio.h>
#define DIGITOS 16
static char bufc[DIGITOS + 1];
char * prtint(int i, int largo)
{ int j;
char *p = bufc;
for (j=DIGITOS-1; j>=0; j--) if((1<<j)&i) *p++='1'; else *p++='0';
return (bufc+DIGITOS-largo);
}

void prtinfile(FILE * stream)


{ unsigned int i, j;
fprintf(stream, "%s\n", "#add operandos unsigned de 6 bits.");
fprintf(stream, "%s\n", ".i 12"); //6 cada operando
fprintf(stream, "%s\n", ".o 7");

for(i=0; i<64; i++) //26=64


for(j=0; j<64; j++)
{ fprintf(stream, "%s", prtint(i, 6));
fprintf(stream, "%s\t", prtint(j, 6)); //se separa con tab la entrada de la salida
fprintf(stream, "%s\n", prtint(i+j,7));
}

fprintf(stream, "%s\n", ".e");


}

int escribe_archivo(void)
{ FILE *stream;
/* Abre stream para escritura, en modo texto. */
if ((stream = fopen("salida.pla", "w")) == NULL) {
fprintf(stderr, "No pudo abrir archivo de salida.\n");
return 1;
}

Profesor Leopoldo Silva Bijit 19-01-2010


14 Sistemas Digitales
prtinfile(stream);
fclose(stream); /* close stream */
return 0;
}

int main(void)
{ escribe_archivo();
return 0;
}

Problemas resueltos.

Problema PA3.1

Describir en formato pla la función or exclusivo de tres argumentos:

f(a, b, c) = xor ( xor (a, b), c)

Basta especificar que la función será 1 cuando el vector de las entradas tenga un número
impar de unos.

.i 3
.o 1
.ilb a b c
.ob f
001 1
010 1
100 1
111 1
.e

Problema PA3.2.

f(x) = 1 si y sólo si x tiene 3 ó 4 unos en una expansión binaria de 4 bits.

La formulación en formato pla, emplea la condición superflua en una de la posiciones de las


entradas.

.i 4
.o 1
.p 4
111- 1
11-1 1
1-11 1
-111 1
.e

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 3. Uso de espresso 15
Problema PA3.3.

f(x) = 1 si y sólo si x tiene 3 ó 4 unos en una expansión binaria de 5 bits.

La formulación en formato pla, emplea la condición superflua en una de la posiciones de las


entradas.

.i 5
.o 1
.p 20
0-111 1
01-11 1
011-1 1
0111- 1

1011- 1
101-1 1
10-11 1
-0111 1

1101- 1
110-1 1
1-011 1
-1011 1

1110- 1
11-01 1
1-101 1
-1101 1

111-0 1
11-10 1
1-110 1
-1110 1
.e

Problema PA3.4.

Corrimiento aritmético a la derecha operandos de entrada y salida de 4 bits. Control de


corrimientos en dos bits.

#arithmetic right shift o = d>>n;


.i 6
.o 4
.ilb n1 n0 d3 d2 d1 d0
.ob o3 o2 o1 o0
#relleno con bit de signo

Profesor Leopoldo Silva Bijit 19-01-2010


16 Sistemas Digitales
00 1--- 1000
01 1--- 1100
10 1--- 1110
11 1--- 1111
#
00 -1-- 0100
00 --1- 0010
00 ---1 0001
01 -1-- 0010
01 --1- 0001
10 -1-- 0001
.e

Problema PA3.5.

Corrimiento lógico a la derecha operandos de entrada y salida de 4 bits. Control de


corrimientos en dos bits.

#logical right shift o = d>>n;


.i 6
.o 4
.ilb n1 n0 d3 d2 d1 d0
.ob o3 o2 o1 o0
#
00 1--- 1000
#
00 -1-- 0100
01 1--- 0100 #relleno con ceros
00 --1- 0010
01 -1-- 0010
10 1--- 0010
00 ---1 0001
01 --1- 0001
10 -1-- 0001
11 1--- 0001
.e

Ejercicios propuestos de minimización

La herramienta de diseño lógico espresso muestra su utilidad en la resolución de problemas


con un número elevado de variables.

Se ilustran algunos ejemplos de redes combinacionales, en orden de complejidad creciente,


que resultan difíciles de plantear y resolver con métodos para papel y lápiz.

f(x) = 5*x+1 con x entero sin signo de 7 bits.

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 3. Uso de espresso 17
f(x) =trunc( sqrt(x) ) con x entero, sin signo, de 8 bits.

f(a, b, c, d, e, f) = xor (xor ( xor ( xor ( xor (a, b), c), d), e), f).

f(x) = 1 si y sólo si x tiene 3, 4 ó 5 unos en una expansión binaria de 6 bits.

f(x) = 1 si y sólo si x tiene 3, 4, 5 ó 6 unos en una expansión binaria de 9 bits.

Sumador con operandos unsigned de 6 bits, resultado en 7 bits.


La tabla de verdad para este sumador es de 4096 renglones, 8568 implicantes, de los cuales
se tienen 153 primos. Una cobertura mínima se logra con 355 cubos con 2551 entradas. Una
minimización con papel y lápiz seguramente durará más que los dos o tres segundos que se
demora espresso en generar el diseño mínimo.

Unidad de corrimiento lógico a la derecha:


o=d>>n con o y d de 16 bits y n de tres bits.

Unidad de corrimiento aritmético a la derecha:


o=d>>n con o y d de 16 bits y n de tres bits.

Referencias

http://www-cad.eecs.berkeley.edu

Alan Mishchenko ha portado espresso a Windows.


http://www.ee.pdx.edu/~alanmi/research/soft/softPorts.htm

Profesor Leopoldo Silva Bijit 19-01-2010


18 Sistemas Digitales

Índice general.

APÉNDICE 3 .........................................................................................................................................1
USO DE ESPRESSO ............................................................................................................................1
A3.1 INTRODUCCIÓN ...........................................................................................................................1
A3.2 MINIMIZACIÓN DE UNA FUNCIÓN ................................................................................................1
A3.2.1. Formato PLA. ....................................................................................................................2
A3.2.2. Tipos de minimizaciones. ...................................................................................................3
A3.2.3. Costos.................................................................................................................................3
A3.2.4. Formato eqn. ......................................................................................................................4
A3.3 MINIMIZACIÓN CON MÚLTIPLES SALIDAS ....................................................................................5
A3.4 MINIMIZACIÓN DE PRODUCTO DE SUMAS ....................................................................................7
A3.5. OPTIMIZACIÓN DE FASES............................................................................................................8
A3.6 MINIMIZACIÓN DE FUNCIONES DE PRÓXIMO ESTADO ..................................................................8
A3.7 MINIMIZACIÓN DE DIAGRAMAS DE ESTADO ..............................................................................11
A3.8 GENERACIÓN AUTOMÁTICA DE TABLAS EN FORMATO PLA. .......................................................13
PROBLEMAS RESUELTOS. ...................................................................................................................14
Problema PA3.1 ...........................................................................................................................14
Problema PA3.2. ..........................................................................................................................14
Problema PA3.3. ..........................................................................................................................15
Problema PA3.4. ..........................................................................................................................15
Problema PA3.5. ..........................................................................................................................16
EJERCICIOS PROPUESTOS DE MINIMIZACIÓN ......................................................................................16
REFERENCIAS ....................................................................................................................................17
ÍNDICE GENERAL. ..............................................................................................................................18
ÍNDICE DE FIGURAS ...........................................................................................................................19

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 3. Uso de espresso 19

Índice de Figuras

Figura A3.1.................................................................................................................................. 10
Figura A3.2.................................................................................................................................. 11

Profesor Leopoldo Silva Bijit 19-01-2010


1

Apéndice 4

Circuitos de Conmutación

Circuitos Lógicos.

Los dispositivos lógicos pueden implementarse en base a componentes electrónicas,


eléctricas, mecánicas, neumáticas, etc. Entre las componentes eléctricas tenemos interruptores y
relés. Entre las electrónicas pueden mencionarse circuitos en base a diodos, transistores
bipolares y de efecto de campo.

A4.2 Interruptores manuales.

A4.2.1 Circuito and.

La Figura A4.3 ilustra la implementación de la función and de dos variables, mediante


interruptores manuales de dos posiciones. La ampolleta se prende cuando ambos interruptores
están cerrados. Se muestra el interruptor 2 en posición cerrado.
V

S2 S1
L

Figura A4.3 And con interruptores

Si a interruptor cerrado se asocia un valor lógico verdadero; y a interruptor abierto el valor


lógico falso; y si además a la variable ampolleta L, se le asigna valor lógico verdadero cuando
está encendida y falso si está apagada, se tendrá:

S1 S2 L
Interruptor cerrado: 1
0 0 0 Ampolleta encendida: 1
0 1 0
1 0 0
1 1 1

Figura A4.4 Asignación de valores lógicos 1.

Profesor Leopoldo Silva Bijit 19-01-2010


2 Sistemas Digitales

De la tabla de verdad se tiene que: L = and( S1, S2)

Para representar la situación mediante el algebra de Boole, las variables deben tomar
solamente dos valores. Estos valores físicos deben ser asociados o mapeados a los valores
lógicos 0 ó 1. Puede comprobarse que si al valor físico, interruptor cerrado se asocia el valor
lógico 0; y a interruptor abierto se asocia un 1 lógico, manteniendo la asignación para la
variable ampolleta, se tendrá ahora la siguiente tabla, que resume el comportamiento del sistema
anterior:

S1 S2 L Interruptor cerrado: 0
0 0 1 Ampolleta encendida: 1
0 1 0
1 0 0
1 1 0

Figura A4.5 Asignación de valores lógicos 2.

Es decir: L = nor(S1, S2)

Si además se cambia la asignación lógica de la variable ampolleta por: ampolleta encendida


asociada a 0 lógico; ampolleta apagada implica 1 lógico, se tendrá la siguiente representación
tabular:

S1 S2 L
0 0 0 Interruptor cerrado: 0
0 1 1 Ampolleta encendida: 0
1 0 1
1 1 1

Figura A4.6 Asignación de valores lógicos 3.

Es decir: L = or(S1, S2)

Lo cual ilustra que las expresiones booleanas dependen de la forma en que se efectúe la
asignación de valores lógicos relativa a los valores físicos.

A4.2.2 Circuito or.

El siguiente diagrama ilustra la función or de dos variables, empleando interruptores


manuales.

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 4. Circuitos Lógicos 3
V
V
L
S2

S1
Figura A4.7 Red or con interruptores.

S1 S2 L
0 0 0
Ampolleta encendida = 1
0 1 1
Interruptor cerrado = 1
1 0 1
1 1 1

Figura A4.7 Red or con interruptores.

De la tabla se tiene: L = or (S1, S2)

Puede estudiarse como cambia la ecuación lógica si se cambia la lógica a ampolleta


encendida con valor lógico igual a 0.

A4.2.3 Circuito escalera.

La Figura A4.8 representa el circuito que se emplea en las escaleras para encender y apagar,
desde dos lugares diferentes, la misma ampolleta.

En este caso se emplean interruptores con tres terminales, uno de ellos se denomina común.
Si cuando el común se conecta con el terminal izquierdo decimos que el interruptor está en valor
lógico verdadero, y falso en caso contrario, tendremos:

V
S1 S2 L
0 0 1
0 1 0
1 0 0 S1
L S2
1 1 1

Figura A4.8 Circuito escalera.

Se tiene: L = xnor( S1, S2)

Profesor Leopoldo Silva Bijit 19-01-2010


4 Sistemas Digitales
Se implementa la función xnor. Nótese que no importando la posición de uno de los
interruptores, cuando se alterna la posición del otro interruptor se logra conmutar la condición
lógica de la ampolleta.

A4.3 Relés.

En un relé electromagnético cuando circula corriente a través de la bobina se producen


fuerzas que causarán que la conexión entre el contacto nc (normalmente cerrado, closed) y el
común se abra, y se efectúe la conexión entre el común y el terminal denominado no
(normalmente abierto, open). Cuando no circula corriente por la bobina, existe un resorte
mecánico que retorna el contacto móvil a la posición nc. Se dibujan los contactos en su posición
normal, con bobina desenergizada.

V nc
no
+ común

Figura A4.9 Diagrama de un relé.

Para construir sistemas en base a relés se conectan las salidas de contactos en las entradas del
próximo elemento, el circuito con las bobinas. Suele emplearse la siguiente asignación lógica:
bobina energizada equivale a 1 lógico, contacto cerrado equivale a 1 lógico.

Una alternativa es colocar la fuente en el lado de los contactos. De este modo el contacto
normalmente cerrado coloca la tensión de fuente en la línea.

Existe un diagrama simplificado que muestra solamente los contactos, no las bobinas. A
continuación se ilustra la simbología que suele emplearse en redes de conmutación, en base a
relés:

NC NO

Figura A4.10 Diagrama de contactos de un relé.

A4.3.1. Función de transmisión.

El siguiente esquema ilustra la función: f(x,y,z) = x’ y z

f
x’ y z

Figura A4.11 Función lógica implementada con relés.

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 4. Circuitos Lógicos 5
Cuando la bobina asociada al contacto x’ esté desenergizada, y cuando circule corriente por
las bobinas que activan los contactos, normalmente abiertos, y y z, se tendrá que f será una baja
impedancia, que asuminos como valor lógico verdadero. La salida f tomará valor falso cuando
no circule corriente, o en la vía se tenga alta impedancia. Se dice que f es un función de
transmisión.

Una representación esquemática más simple aún, es la que muestra la Figura A4.12:

a b'
f
c' d

Figura A4.12 Esquema simplificado empleando relés.

Donde la ecuación lógica para f se obtiene como la suma lógica de todas las vías posibles de
conexión. En la Figura A4.12 existe una vía de transmisión si ab' toma valor 1 lógico; esto
ocurre cuando el contacto a está cerrado y cuando el contacto b' está cerrado; es decir b abierto.
También existe una vía alternativa de transmisión si c´d toma valor 1 lógico.

Entonces: f = ab' + c'd

A4.3.2. Función de apertura.

También puede obtenerse la ecuación lógica para f, como el producto lógico de todas las
posibles aperturas de la vía.
Para la Figura A4.12 existe una apertura si (a + c') toma valor lógico 0. Esto ocurre si a está
abierto y c' esta abierto; es decir si c está cerrado.

Entonces: f = (a+c') (b' +d) (a +d)(b' +c')

Puede notarse que cada una de las aperturas está formada por los elementos que constituyen
un conjunto de corte.
Ejemplo A4.1
En caso de relés, pueden efectuarse conexiones como la siguiente:
a b
e f
c d
Figura A4.13 Conexión puente empleando relés.

De la Figura A4.13 si se consideran las sumas de las transmisiones posibles, se obtiene:


f = ab + cd + aed + ceb

Para los productos de las aperturas posibles se obtiene:

Profesor Leopoldo Silva Bijit 19-01-2010


6 Sistemas Digitales
f = (a + c)(b + d)(c + e + b)(a + e +d)

A4.3.3. Controladores lógicos programables(PLC)

En la actualidad no se diseñan sistemas digitales basados en relés, se emplean controladores


lógicos programables (PLC) que cumplen las mismas funciones.

En este ambiente suelen emplearse los siguientes esquemas:

E2 E3 E0
E0

E1 E3 ( )
E1 A

A E2

Gnd
Diagrama Escalera
Diagrama Eléctrico.
Figura A4.14 Diagramas lógicos para PLC.

En ambos diagramas, se cumple que: A = E0 + ( E1 ( E2 + E3) )

A4.4 Circuitos Lógicos empleando diodos.

Un diodo es un dispositivo semiconductor que permite la circulación de corriente desde el


ánodo hacia el cátodo si el voltaje entre ánodo y cátodo es mayor que 0,7[V], en diodos de
silicio.
Pueden construirse compuertas lógicas empleando diodos y resistencias.
+ f2
V AND A
A B
f1 OR
B

Figura A4.15 Compuertas empleando diodos.

En la red a la izquierda: si la entrada a un diodo está a tierra, fluye corriente a través de él y


la salida f1 estará a un voltaje 0,7 (bajo). Si ambos voltajes en A y B son tales que los diodos

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 4. Circuitos Lógicos 7
estén cortados (no conduzcan), f1 queda con una tensión alta (cercana a +V). La resistencia se
denomina pull-up (tira para arriba) y fija el valor del 1 lógico. El circuito implementa la función
and de las entradas.
En la red de la derecha basta que una de las entradas esté en un voltaje alto, para que el diodo
conduzca y fije el voltaje de salida en el voltaje de la entrada menos 0,7. Si las dos entradas
están a tierra, los diodos no conducen y el voltaje en f2 será bajo. La red implementa la función
lógica or de las entradas.

De acuerdo a la electrónica empleada pueden definirse rangos de valores de voltaje que


pueden ser considerados voltajes bajos (0 lógico) o voltajes altos (1 lógico).

Si las salidas de estas redes se conectan en las entradas de otras similares, las caídas de
voltajes a través de los diodos van degradando significativamente los niveles de los voltajes en
las salidas. Si se conectan, por ejemplo, varias compuertas and, en cascada, y los diodos
conducen, la salida de la etapa final tendrá un voltaje cada vez mayor (no podrá asociarse con
un cero lógico). Una solución es aumentar el voltaje de las fuentes y redefinir los rangos de
voltajes para el cero y uno lógico, esto además de aumentar el consumo de energía no soluciona
el problema de conectar varias componentes en cascada. Adicionalmente no puede
implementarse un inversor, empleando diodos y resistencias solamente. Por esta razón se
emplean componentes activas, en el diseño de las compuertas lógicas.

A4.5 Transistor bipolar.

En el diagrama se ilustra un transistor bipolar, éstos fueron ampliamente usados para


implementar compuertas lógicas entre 1970 y hasta comienzos de la década de 1980.
+V

Vc
Vb

NPN

Figura A4.16 Transistor bipolar.

Un voltaje alto en la base satura al transistor, y el voltaje del colector queda en una tensión
cercana a 0,2 (voltaje bajo). Cuando se aplica un voltaje bajo en la base, el transistor se corta y
la salida adquiere un valor alto a través de la resistencia de pull-up. El circuito opera como un
inversor lógico.
Nuevamente pueden definirse rangos de voltajes que pueden ser considerados 0 y 1 lógicos.

A4.6 Compuerta Nand DTL. (Diode transistor logic).

Combinando el circuito and en base a diodos, con el inversor en base a un transistor, se logra
un circuito NAND. La familia DTL, fue empleada hasta comienzos de la década de 1970, en

Profesor Leopoldo Silva Bijit 19-01-2010


8 Sistemas Digitales
base a chips integrados en pequeña escala con 14 pines. El diagrama de la Figura A4.17 ilustra
una compuerta Nand de dos entradas.
+V
+V

Vc
A Vb
B N
PN

Figura A4.17 Compuerta NAND DTL.

En esta configuración un 0 lógico está representado por un voltaje menor que 0,7[V]; el 1
lógico está sobre 4[V].
Para que el transistor conduzca, el voltaje Vb debe ser mayor que 1,4[V]. Si es menor, el
transistor estará cortado y la salida tomará valor alto (cercano al voltaje de polarización a través
de la resistencia de pull-up).

Fan-out.

Si la salida baja de un nand está conectada a varias entradas, éstas le inyectan corriente a
través de los diodos que conducen, lo cual podría sacar de saturación al transistor. Se denomina
fan-out, al máximo número de entradas que pueden conectarse a una salida, manteniendo los
voltajes dentro de los rangos asignados a la lógica.
La implementación de compuertas nand y nor mediante lógica DTL es sencilla de realizar. Y
debido a que éstas son funcionalmente completas pueden diseñarse todas las funciones lógicas
solamente empleado nands o solamente nor.

Wired-and.
Una ventaja adicional de la configuración es que permite conectar directamente las salidas,
lográndose mediante la conexión la función lógica and (se denomina wired-and; es decir, un
and debido al alambrado.)

Si suponemos dos salidas f1 y f2 conectadas, se tendrá que basta que una de ellas esté en 0
(es decir, que tenga el transistor asociado saturado) para que la salida f (el punto de conexión)
también esté en voltaje bajo. Sólo cuando ambas salidas están altas (ambos transistores
cortados) la salida f será alta.

f1
f = f1 and f2
f2

Figura A4.18 AND alambrado.

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 4. Circuitos Lógicos 9
El circuito AND, en la Figura A4.18, simboliza la función lógica que se logra a través de la
conexión.

A4.7 Compuertas TTL.

Pueden emplearse transistores, en lugar de diodos, para construir compuertas. Empleando, de


esta forma: solamente transistores y resistencias. Estos diseños se conocen como lógica TTL
(transistor-transistor-logic). Los diodos que forman el and (del diseño DTL) pueden ser
reemplazados por un transistor que tiene múltiples emisores. Esto considerando que un
transistor está formado por dos diodos que apuntan desde la base (en caso de npn).

El transistor con dos emisores, reemplaza a los tres diodos del circuito NAND DTL. El
circuito simplificado se ilustra a continuación:
+V +V

R1 R2
Vc
A
NPN
B Multiemisor

Figura A4.19 NAND TTL.

Cuando una de las entradas A o B está baja, la corriente que circula a través de R1 hacia el
colector no alcanza para hacer conducir al transistor de salida, y éste estará cortado; con lo cual
la salida estará alta a través de R2, la resistencia que fija el valor alto. Cuando ambas entradas
están altas circula corriente (en modo activo inverso) hacia la base del transistor de salida
saturándolo. De este modo el voltaje de salida será tipo 0,2 (valor bajo).
+
R3
V
R1 R2
Q3
A
Q2
B Q1 Q4
R4

Figura A4.20 Salida totem-pole TTL.

La Figura A4.20 muestra un Nand TTL de dos entradas. El transistor Q3 y Q4 forman una
configuración denominada totem, Q3 introduce una constante de tiempo menor para producir la
salida alta.

Profesor Leopoldo Silva Bijit 19-01-2010


10 Sistemas Digitales
Algunas componentes de la familia, denominadas de colector abierto, no tienen la resistencia
R3, el transistor Q3 y el diodo; estas compuertas requieren una resistencia externa conectada a
la fuente para proveer el nivel alto de salida. La resistencia se calcula para sumistrar la corriente
a las entradas que estén conectadas a dicha salida. Además un conjunto de salidas de colector
abierto pueden conectarse formando un and alambrado, similar al posible en la familia DTL.

Niveles lógicos TTL

Los valores de las componentes se diseñan de tal modo que se cumplan las especificaciones
siguientes:
VOH = 2,4[V] ; VOL = 0,4[V] ; VIH = 2[V] ; VIL = 0,8[V]

Donde VIH es el mínimo voltaje de entrada que puede ser considerado como 1 lógico; VIL es
el máximo voltaje de entrada que es reconocido como 0 lógico.

Similarmente: VOH es el mínimo voltaje de salida que se reconoce como 1 lógico; y VOL es el
máximo voltaje que es considerado un 0 lógico.

Si una salida está en VOH y se conecta a una entrada, en ésta se permite un VIH que es 0,4
volts menor; es decir la señal de salida puede degradarse en nivel y aún ser reconocida como un
valor lógico 1.

Si una salida está en VOL y se conecta a una entrada, en ésta se permite un VIL que es 0,4
volts mayor; es decir la señal de salida puede contaminarse con ruido externo, y aún ser
reconocida como un valor lógico cero. Las diferencias entre dichos niveles se denominan
márgenes de ruido de la familia.

A4.8 Compuertas CMOS

Interruptores MOS.

El transistor Metal-Oxide Semiconductor (MOS), actúa como interruptor controlado por


voltaje. Casi todas las componentes digitales actuales se diseñan en esta tecnología. Suelen
emplearse en pares complementarios, por esto se conoce como tecnología CMOS.

Funciona como interruptor si el voltaje de compuerta (gate) es levemente mayor o menor que
el voltaje del terminal fuente (source): Se establece una vía conductora entre la fuente y el
sumidero (drain).
G G

S D S D

Canal n: Abierto vG = 0 Canal p: Abierto vG < vS


Cerrado vG > vS Cerrado vG = 0

Figura A4.21 Canal n y p.

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 4. Circuitos Lógicos 11
Un transistor MOSFET (Metal Oxide Semiconductor Field Effect Transistor) es un
dispositivo de tres terminales que actúa como un interruptor (switch). Estudiaremos el de tipo
enriquecimiento.

El voltaje de compuerta (gate, no confundir con compuerta lógica, se emplea el mismo


nombre) controla si la trayectoria desde el sumidero (drain) hacia la fuente (source) será un
circuito abierto (off) o un camino resistivo (on). Un circuito abierto puede entenderse como un
camino de alta impedancia. La compuerta (el terminal) se dibuja como un condensador.

Transistor nfet.

Existen dos clases de MOSFET:

Un MOSFET de tipo n (nfet) conduce (IDS>0) para voltaje de compuerta alto


(VGS >VGS (umbral) =VT>0 ); y no conduce en caso contrario.

D S Corte: VGS < VT 0,8 V

nfet
R
G D S Lineal: VGS VT 0,8 V
0 VDS < VDSsat = VGS - VT

D S R
Saturación: VGS VT 0,8 V
D S
VDS > VDSsat >0

IDS VDS = VDSsat


VGS

VGS=0
VDS

Figura A4.22 Transistor nfet.

Cuando conduce un nfet deja pasar limpiamente un nivel cero. El sustrato está conectado
siempre a tierra.

Profesor Leopoldo Silva Bijit 19-01-2010


12 Sistemas Digitales

Transistor pfet.

Un MOSFET de tipo p (pfet) conduce (ISD>0) para voltaje de compuerta bajo


(VGS > -|VGS(umbral)|< 0 ); y no conduce en caso contrario.

D S Corte: VGS > VT - 0,8 V

pfet R
G Lineal: VGS VT -0,8 V
D S
VDS > VDSsat = VGS - VT

D S R
D Saturación: VGS VT -0,8 V
S
VDS VDSsat

-IDS VDS = VDSsat


-VGS

VG
S=0 -VDS

Figura A4.23 Transistor pfet.

Cuando conduce un pfet deja pasar limpiamente un nivel uno. El sustrato está conectado
siempre a VDD.

Construcción nfet.

Una sección de un transistor CMOS se ilustra en el siguiente diagrama.

Canal
Compuerta(gate)
(capa de inversión de tipo n)
óxido
Fuente(source) Sustrato silicio Sumidero(drain)

Figura A4.24 Diagrama construcción transistor pfet.

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 4. Circuitos Lógicos 13
En un nfet: El material de la lámina del fondo es de silicio, y está separada de la capa
superior (denominada gate) por una capa de óxido aislante. Originalmente la capa superior era
metálica (de esto quedó el nombre del transistor), luego se empleó silicio policristalino. La
fuente y el sumidero son de silicio con gran exceso de electrones (material n) y están separadas
por el sustrato de silicio cargado fuertemente positivo (material p). La fuente y el sumidero son
las regiones de difusión, denominadas así por el proceso químico empleado para su fabricación,
en el cual iones cargados negativamente (átomos con electrones extra de valencia) son
colocados en la superficie de silicio y difundidos, mediante el calentamiento de éste. Los
materiales de la fuente y el sumidero son idénticos. Por convenio la fuente es el terminal con el
menor de los dos potenciales en ambos extremos del canal.
sumidero
SiO2 D
n
puerta
p VDD
VGS n

Fuente S
Figura A4.25 Diagrama físico transistor nfet.

Operación.

La conducta del transistor nfet, es como sigue: Cuando se aplica un voltaje positivo en la
compuerta los electrones son atraídos hacia el canal (la región, inicialmente no conductora,
entre la fuente y el sumidero y muy cercana a la superficie del oxido de silicio). Los electrones
libres se recombinan con los huecos del material p y comienzan a circular electrones desde la
fuente al sumidero. Cuando el voltaje de compuerta es suficientemente alto muchos electrones
pasan al canal, y se establece conducción entre la fuente y el sumidero. Se crea una delgada
capa de material tipo n próxima al dióxido de silicio, que se denomina capa de inversión tipo n
(es el canal). La tensión mínima que crea el canal se denomina VGS (umbral), que dependiendo
de los materiales empleados puede estar entre 1 y 5 volts.
Si el voltaje de compuerta es muy bajo, prácticamente no hay electrones en el canal (salvo
los electrones libres producidos, en el material p, por activación térmica) y puede considerarse
que no existe flujo apreciable de corriente entre la fuente y el sumidero, se dice que el canal no
conduce. Este comportamiento es diferente al fet de juntura o al de empobrecimiento.
Este dispositivo puede estar en corte, o conducir. En caso de hacerlo se comporta como una
resistencia (similar a la zona de saturación en un transistor bipolar) o como fuente de corriente
(similar a la zona activa de un bipolar). Debido a la existencia de un voltaje umbral y su alta
impedancia de entrada son dispositivos ideales para implementar sistemas lógicos.

En un pfet, las regiones de difusión están positivamente cargadas, y el sustrato de silicio está
negativamente cargado. En éste, cuando se aplica un voltaje bajo, el canal conduce y cuando se
aplica un voltaje alto el canal se considera que no conduce, o que está abierto.

Profesor Leopoldo Silva Bijit 19-01-2010


14 Sistemas Digitales
Debido a que la capa de dióxido de silicio se mantiene lo más delgada que sea posible, para
que el campo sea más intenso y se pueda controlar mejor el canal, una tensión elevada (tipo 30
Volts) de puerta hasta la fuente puede perforar la capa aislante, dañando el transistor. Esta
tensiones pueden producirse fácilmente en forma estática, por esta razón debe cuidarse su
manipulación.

Los símbolos para los tipos de transistores recuerdan el modo de operación, el pequeño
círculo del pMOS recuerda que el transistor conduce cuando la compuerta es activada por lógica
negativa.

Inversor MOS RTL.

La siguiente red ilustra un inversor, implementado con una resistencia y un nfet. Con una
tensión menor que la umbral, se asume que la entrada es baja. Si la entrada es baja, el transistor
está cortado, y la salida estará en alto a través de la resistencia y la fuente. Cuando la tensión de
entrada es mayor que el umbral del nfet, éste conduce, y debe diseñarse tal que la resistencia
externa sea mucho mayor que la del fet en conducción, ya que en este caso la tensión de salida
será baja.

Inversor RTL

in out

Figura A4.26 Inversor MOS RTL.

Inversor CMOS.

El inconveniente de este inversor es que el tamaño físico de la resistencia externa es mucho


mayor que el espacio requerido para el transistor. Además tiene alto consumo de energía, en la
resistencia; aumento de la constante de tiempo de subida.
En lugar de emplear la resistencia se puede usar un transistor complementario como
resistencia de carga activa. Esta idea permitió reducir apreciablemente el espacio ocupado por
un inversor.

Una compuerta típica CMOS estática está construida con dos redes complementarias:
Una red que fija el cero (pull-down, tira para abajo) compuesta de nfets, con fuentes
conectadas a tierra. Esto lleva a VOL = 0.
Una red que fija el uno (pull-up, tira para arriba) compuesta de pfets, con fuentes conectadas
a VDD. Esto lleva a VOH = VDD.

Solamente una de estas redes puede estar conduciendo en un determinado tiempo. La salida
será conectada a tierra o a VDD; pero no a ambas. Si ambas redes conducen simultáneamente,

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 4. Circuitos Lógicos 15
la trayectoria eléctrica desde VDD hacia GND causará excesivo flujo de corriente y puede dañar
el circuito. (Esto puede suceder si las entradas a una compuerta CMOS son de tercer estado y
están flotando.)

La más simple de las compuertas CMOS, es el inversor, formado por un nfet y un pfet.
Como se verá otros tipos de compuertas requieren más transistores.

VDD

Pull- a b
Up
in out
in out out
Pull-
Down

Inversor
Compuerta CMOS
NAND
genérica

Figura A4.27 Compuertas CMOS.

Las redes pull-up y pull-down son siempre duales. Para construir una red dual, se efectúan
las siguientes transformaciones:
Intercambiar nfets por pfets (y vice versa)
Intercambiar conexiones serie por conexiones paralelo (y vice versa)

La transformación serie/paralelo requiere observar la estructura jerárquica de la red.


Por ejemplo, el dual de un par paralelo de pares en serie (4 transistores) es un par serie de
pares paralelos. Con esta metodología para obtener duales, el diseño de una compuerta CMOS
requiere diseñar solamente una de las redes (la de pull-up o la de pull-down), la otra se obtiene
como la red dual.

La red de pull-up representa el cálculo de una función con salida alta; y la de pull-down
calcula salidas bajas. Un pfet en la red de pull-up es activado por entradas bajas, mientras que
un nfet en la red de pull-down es activado por entradas altas. Entonces, deben colocarse
transistores en serie para representar condiciones and; y en paralelo, para representar
condiciones or.

Por ejemplo, en el nand que se mostró antes, que calcula (ab)’, la salida es cero cuando las
entradas a y b están ambas altas; por lo tanto la red de pull-down está formada por una conexión
serie. En forma alternativa (dual) la función de salida es alta cuando a o b están bajas, entonces
la red de pull-down es una conexión paralelo.

Profesor Leopoldo Silva Bijit 19-01-2010


16 Sistemas Digitales
Retardo de conmutación.

El retardo de una compuerta estática CMOS se mide viendo cuan rápido puede conmutar su
salida. En un modelo simplificado se asume que todos los transistores cambian de estado on a
off cuando sus compuertas pasan por VDD/2. El retardo de una compuerta es medido desde el
instante en que el voltaje de compuerta pasa por VDD/2 hasta el instante en que la salida pasa
por el valor VDD/2.

Veremos cómo una compuerta conmuta su salida. En cualquier instante la red de pull-up o
de pull-down está conduciendo, creando con esto una trayectoria eléctrica desde VDD o GND
(respectivamente) hacia la salida. Esta trayectoria es una fuente de corriente que carga o
descarga la capacitancia de carga conectada a la salida. Es decir la capacidad de los cables o de
las entradas conectadas a esa salida. Debe considerarse que las entradas de compuertas CMOS
estáticas son las compuertas (gates) de los transistores que pueden tratarse como condensadores.
La conmutación de la salida de una compuerta puede ser modelada por una red RC. La
resistencia es el transistor conduciendo, y el condensador proviene de las compuertas que están
conectadas a esa salida.

El retardo es proporcional a RC (la constante de tiempo), a mayor R y mayor C, mayor es el


retardo. La configuración de los transistores determina la resistencia total. Los condensadores en
paralelo, suman su capacidad; de tal modo que la capacidad total, depende de cuántas
compuertas estén conectadas a esa salida. Esto implica que una salida que alimenta a una sola
compuerta es n veces más rápida que una salida que tiene n compuertas conectadas a dicha
salida; ya que en este último caso la capacitancia de carga será n veces mayor.

in out in out

Carga condensador: 01 Descarga del condensador: 10

Figura A4.28 Redes RC en compuertas CMOS.

Compuertas CMOS de transmisión.

Debe notarse que el diseño de compuertas CMOS (mostrado anteriormente), es bastante


diferente del diseño de circuitos en base a compuertas de transmisión.
Una compuerta de transmisión está formada por un transistor nfet en paralelo con un pfet,
controlados por señales de compuerta complementarias. Una compuerta de transmisión deja

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 4. Circuitos Lógicos 17
pasar tanto un 0 como un 1; por esta razón puede emplearse como un interruptor (switch). No se
emplean redes de pull-up y pull-down como redes duales.
en
A'

in out

A
en

Figura A4.29 Compuerta CMOS de transmisión

in enable VGS nmos enable' VGS pmos nmos pmos


0 0 0 1 1 off off
1 0 negativo 1 0 off off
0 1 1 0 0 on off
1 1 0 0 negativ off on
o

Figura A4.30 Valores lógicos en compuertas de transmisión.

Operación de la compuerta de transmisión:


1 0 1 0

0 Z 0 0 1 Z 1 1

0 1 0 1
Figura A4.31 Operación de compuerta de transmisión CMOS.

El transistor pMOS funciona bien transmitiendo un voltaje alto, sin pérdida de señal, pero
cuando se aplica un nivel 0, en el otro extremo se tendrá un nivel un poco mayor que cero. El
nMOS, funciona bien dejando pasar el nivel 0, pero degrada el 1.

En los circuitos lógicos, vistos antes, un pMOS deja pasar los unos en la red de pull-up; y los
nMOS en las redes de pull-down, dejan pasar los ceros.

La compuerta de transmisión deja pasar el nivel bajo y el nivel alto.


En diagramas suele emplearse el símbolo que se muestra en la figura A4.28 a la derecha.

Profesor Leopoldo Silva Bijit 19-01-2010


18 Sistemas Digitales
Operación de compuertas CMOS.

Inversor CMOS.
En el siguiente diagrama, que emplea dos transistores MOS complementarios: Cuando X es
0V (valor lógico 0), el transistor p conduce, y el transistor n está abierto. Cuando X es 3V
(valor lógico 1), el transistor p está abierto, el n conduce.

3v
X Y
0 1
Y
1 0
Y = X'
0v Inversor

Figura A4.32 Operación de inversor CMOS.

Los siguientes diagramas ilustran la operación del inversor.


1
0
Y
3v 3v VDD

0 1
VDD
X
0v 0v VGS(umbral)

Figura A4.33 Operación de inversor CMOS.

Diseño electrónico inversor CMOS


Si se redibuja el inversor, identificando las fuentes y sumideros para cada transistor, se logra,
empleando subíndices u por pull-up y d por pull-down:

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 4. Circuitos Lógicos 19

VDD Vin = Vout


Vout
Su Voh =VDD
Gu p lineal p saturado
n cortado n lineal
Du p lineal
Vin Vout n saturado p cortado
Dd n lineal
Vol = 0

Gd Vin
Sd VTp VTn VDD

p saturado VDD+ VTp


n saturado
Figura A4.34 Operación de inversor CMOS.

Considerando las siguientes definiciones:


VGSp = Vin -VDD VDSp = Vout -VDD
VGSn = Vin VDSn = Vout
Se determina el estado de cada transistor.

De la ecuación, en estado estacionario: IDSd(Vin, Vout) = -IDSu(Vin-VDD, Vout-VDD)


pueden diseñarse los detalles de la característica de transferencia.
NAND CMOS
En el siguiente circuito cuando a e b están altos (uno lógico) ambos transistores n conducen,
dejando en nivel bajo a la salida f (0 lógico). Se implementa un nand de dos entradas.

a b

3V a b f
0 0 1
0 1 1
f 1 0 1
1 1 0
0V f = (XY)' Nand

Figura A4.35 Diseño NAND CMOS.

Los siguientes diagramas ilustran la operación de un NAND.

Profesor Leopoldo Silva Bijit 19-01-2010


20 Sistemas Digitales

1 1
0 1
3V
3V

0
1
0V
0V

Figura A4.36 Operación NAND CMOS.

NOR CMOS.
Cuando a e b son ceros, ambos transistores p conducen estableciendo un voltaje alto en la
salida f.
a b

a b f
3V 0 0 1
0 1 0
f 1 0 0
1 1 0
0V f = (X+Y)' Nor

Figura A4.37 Estructura NOR CMOS.

Los siguientes diagramas ilustran la operación de un nor.

0 0 1 0

3V 3V

1 0

0V 0V

Figura A4.38 Operación NOR CMOS.

Nótese que el inversor requiere 2 interruptores, el nor y el nand requieren 4 interruptores.


Puede comprobarse que el or y el and requieren 6 interruptores, y el xor puede diseñarse
empleando 12. Por esta razón los diseños suelen estar basados en circuitos NOR o en circuitos
NAND.

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 4. Circuitos Lógicos 21
Ejemplo A4.2.

Diseñar en CMOS la compuerta F = (A(B+C) )'.

La red de pull-down se logra con el and (en serie) de A con (B+C).


El or se logra con la conexión paralela de los transistores:

B C

Figura A4.39 Diseño del pull-down.

La red de pull-up, es simplemente el dual de la anterior:

F
Figura A4.40 Diseño del pull-up.

Luego se combinan las redes de pull-up y pull-down, para formar la compuerta CMOS
(complementaria).

Profesor Leopoldo Silva Bijit 19-01-2010


22 Sistemas Digitales

B C

Figura A4.41 Integración de las partes del diseño.

Buffer inversor de tercer estado, en base a transistores CMOS.

E
OE
OE'
S E S
OE

Figura A4.42. Buffer inversor mediante compuertas CMOS.

Cuando la salida no está habilitada, ambos transistores ubicados en la salida quedan


desconectados, formando una salida en alta impedancia. Esto se muestra en el esquemático a la
izquierda. El de la derecha ilustra que con salida habilitada ambos transistores, ubicados al lado
de la salida conducen; el pMOS deja pasar un valor alto cuando E es un valor bajo, en este caso
el nMOS conectado a tierra queda abierto.

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 4. Circuitos Lógicos 23

V V

E= X E

1 0
S=Z S=E'
0 1

Figura A4.43. Operación buffer tercer estado.

Ejemplos de buffers de tercer estado también se encuentran en la familia TTL, ver por
ejemplo los buffers 74240 y 74244.

Mux con compuertas de transmisión.

Para el diseño electrónico de multiplexores y demultiplexores resulta más eficiente emplear


compuertas de transmisión CMOS, ya que se reduce el número de transistores necesarios. Este
tipo de electrónica no está disponible mediante compuertas TTL. Un esquema de la compuerta
de transmisión se muestra a continuación:

A'

in out

Figura A4.44. Compuerta de transmisión.

Para un multiplexor de dos vías a uno, se puede diseñar el siguiente circuito:

Cuando A= 0 conduce la compuerta de transmisión superior; la inferior no lo hace. En este


tipo de diseño las señales de control deben activar una y sólo una vía de transmisión entre la
entrada y la salida.

Profesor Leopoldo Silva Bijit 19-01-2010


24 Sistemas Digitales

x Con A = 0 z = x
A' Con A = 1 z = y
A'
z
y

A
Figura A4.45. Multiplexor de 2 vías a una.

Un demultiplexer, puede diseñarse según:


A

y
Con A = 0 y= x
A'
x Con A = 1 z = x
A'

Figura A4.46. Demultiplexor de 1 a dos vías.

La dificultad del diseño anterior, es el valor que toma z cuando A es cero (z tomaría un valor
que no es uno ni cero; sería una entrada en alta impedancia).
Para evitar esto: se especifica que con A = 0, se tiene que z = 0; y con A = 1, se tiene y = 0.

Para resolver esta dificultad, el diseño debe modificarse según:

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 4. Circuitos Lógicos 25

y Con A = 0 y = x; z = 0
A' Con A = 1 z = x; y = 0
A'
x 0

A A'

A
A'

0
A

Figura A4.47. Revisión del diseño del demultiplexor.

Matriz de diodos con Mosfet.

Las explicaciones simplificadas del funcionamiento de los arreglos, en base a diodos, son
con fines ilustrativos de conceptos solamente. La tecnología implementa los fusibles
programables (diodos) empleando MOSFET. Como se ilustra a continuación.

Vcc Vdd
pfet configurado como
resistencia de pull-up

a
a
Si línea horizontal está
alta el nfet fija el cero
en la línea vertical.

Figura A4.48 Fusibles programables con MOSFET.

La estructura de las PROM y PLA, en base a MOSFET son similares. En la PROM el arreglo
de AND es un decodificador de direcciones (las líneas horizontales son las líneas de palabra, y
sólo una puede estar a tierra para una determinada entrada); en una PLA cada línea horizontal es
una línea de producto. El número de líneas verticales da el ancho de la palabra en una PROM;
en una PLA genera el OR de los productos.

Profesor Leopoldo Silva Bijit 19-01-2010


26 Sistemas Digitales

Vdd Vdd

Vdd

Vdd

Vdd

Figura A4.49 PLA y PROM mediante CMOS.

Si una variable de entrada está baja, la línea vertical está alta, el nmos fija la línea horizontal
en bajo. Todas las líneas de entrada deben estar altas (todos los nmos conectados están abiertos)
para que la línea horizontal esté alta.
Basta que una línea horizontal esté alta para que la salida esté baja, ya que el nmos conduce.
Si todas las líneas horizontales están bajas, la tensión de salida estará alta. Esto implementa la
función nor, por esta razón se agrega un inversor, para generar el or.

A4.9. Formato JEDEC para dispositivos programables.

Veremos a través de un ejemplo simple, la información estandarizada para describir el estado


de los fusibles en una arquitectura programable. Se describirá empleando la arquitectura del
dispositivo GAL22V10.

La Figura A4.50, describe dos funciones booleanas de tres variables. Realizando un diseño
convencional, se obtienen las ecuaciones minimizadas para el diseño.

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 4. Circuitos Lógicos 27

¡Error! No se pueden crear objetos modificando códigos de campo.

Figura A4.50 Funciones D y E de tres variables.

Resultan las ecuaciones:


D = A' B' + A B + C'
E = A B + B' C'

Relación entre la información que suministra el compilador y la arquitectura de la GAL.

En la Figura A4.51, se muestra sólo la parte necesaria de la estructura.


El dispositivo tiene 11 entradas y 10 salidas realimentadas que son las columnas de la matriz.
Sólo se muestran los pines asignados a señales de entrada y el tipo de salida.
Como se tiene la señal y su complemento, existen 44 columnas. En el archivo Jedec se
numeran las líneas de productos, con el número del fusible inicial de la línea. Estos comienzan
en cero (el producto de reset); luego en 44 comienza el producto que habilita la primera
macrocelda y luego, la segunda macrocelda en 88 y así sucesivamente. En 5784 está el producto
de preset. En 5808 comienzan los fusibles que programan la salida combinacional o de registro.
Del 5828 a 5891 los para la firma electrónica. Se marcan en el arreglo de fusibles los diodos
que quedan en las líneas de productos.

El archivo jedec, que contiene el diseño y generado por un programa, es como sigue:
Type: PAL22V10
*
QP24* QF5828* QV1024*
F0*
L0044 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 *
L0088 11 11 10 11 10 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 *
L0132 11 11 01 11 01 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 *
L0176 11 11 11 11 11 11 10 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 * fusibles
L0440 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 *
L0484 11 11 01 11 01 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 *
L0528 11 11 11 11 10 11 10 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 *
L5808 11 11 11 11 11 11 11 11 11 11 *
C2770*

Profesor Leopoldo Silva Bijit 19-01-2010


28 Sistemas Digitales
Rows
Pin Signal name Column -------------- Activity
Beg Avail Used
1. - 0 - - - (Clock)
2. A 4 - - - High
3. B 8 - - - High
4. C 12 - - - High
22. E 6 10 11 2 High(Three-state)
23. D 2 1 9 3 High(Three-state)

88
132
D
A

Figura A4.51 Esquema GAL22V10.

La siguiente información muestra los diferentes productos


Señal Renglón Productos
D 2 A' B' queda asociado al producto que comienza en 88.
3 A B producto que comienza en fusible 132.
4 C' producto que comienza en fusible 176
E 11 A B producto que comienza en fusible 484
12 B' C' producto que comienza en fusible 528

Se destacan los fusibles que quedan con un cero, que identifican las variables en cada
producto.

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 4. Circuitos Lógicos 29
L0088 11 11 10 11 10 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 *
L0132 11 11 01 11 01 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 *
L0176 11 11 11 11 11 11 10 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 *

L0484 11 11 01 11 01 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 *
L0528 11 11 11 11 10 11 10 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 *

A B
A’ B’

C’

Figura A4.52 Detalle de fusibles en productos.

Los productos que habilitan el tercer estado están todos abiertos (L0044 y L0440)
L0044 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 *
L0440 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 *

Los fusibles que controlan si la macrocelda tendrá salida combinacional o registrada


comienzan en la línea de fusibles L5808.
L5808 11 11 11 11 11 11 11 11 11 11 *
S0 y S1 para la macrocelda con salida por el pin 23 son el 5808 y 5809.
S0 y S1 para la macrocelda con salida por el pin 22 son el 5810 y 5811.

Profesor Leopoldo Silva Bijit 19-01-2010


30 Sistemas Digitales

Figura A4.52 Programación de macrocelda de GAL22V10.

Para verificar el diseño y su grabación en el dispositivo, es necesario generar vectores de


prueba. Es decir, para cada combinación de valores de las entradas se establece el valor que
debe tener la salida.

Mediante esta información es posible verificar funcionalmente la grabación de la GAL. Esto


se efectúa usando un programa que viene con el grabador de GAL; el cual pide ingresar los
vectores, que suelen agregarse en el mismo archivo jedec en que se establece el estado de los
fusibles. Se efectúa una prueba para cada uno de los vectores que se hayan generado.

Para el caso del ejemplo, la estructura del vector tiene 24 caracteres por línea. Uno por cada
pin del dispositivo.
Vector: "0",A,B,C,"0000000N000000000",(E,D)L,"N"

Comenzando en 1. Tierra y VCC no tienen especificación y se anotan con una N.


Donde no se efectúa pruebas ni se mide las salidas se marca con 0.
Luego el nombre lógico de las entradas y salidas. Éstas últimas se marcan con L, para indicar
que en estos pines debe medirse un valor. En las salidas en los vectores se coloca L (low) y H
(high). En las entradas se colocan 0 ó 1s. El compilador calcula los valores lógicos que deben
tener las salidas, de acuerdo a las ecuaciones del diseño y coloca L o H según corresponda. En
las entradas coloca unos o ceros de acuerdo con los valores que vayan generando para la
secuencia de entrada.

Un vector cualquiera, por ejemplo el 5


V00005 01000000000N000000000HHN*

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 4. Circuitos Lógicos 31
Se interpreta así:
Vector: "0",A,B,C,"0000000N000000000",(E,D)L,"N"
V00005 0 1 0 0 0000000N000000000 HH N*
Es decir se aplica 5 volts en pin 2 (A), 0 en pines 3 y 4 (B y C) y deben medirse voltajes
altos en pines 22 y 23 (E y D). En caso que lo medido sea distinto de lo especificado en el
vector se genera una condición de error.

Para el caso del ejemplo, se generan todas las combinaciones posibles para tres entradas, y se
establecen los valores que deben tener las salidas en cada caso.

V00001 00000000000N000000000HHN*
V00002 00010000000N000000000LHN*
V00003 00100000000N000000000LHN*
V00004 00110000000N000000000LLN* vectores
V00005 01000000000N000000000HHN*
V00006 01010000000N000000000LLN*
V00007 01100000000N000000000HHN*
V00008 01110000000N000000000HHN*
A289

A4.10 Uso de manipulador de expresiones simbólicas. Maple.

En el programa Maple (versiones anteriores a 6) existe una biblioteca lógica para manipular
expresiones booleanas. Para emplearla debe usarse with(logic); antes de invocar a las funciones.

Se dispone de los siguientes operadores: &and, &or, &not, &iff, &nor, &nand, &xor, y
&implies.

Para obtener información detallada sobre la biblioteca, puede invocarse Help, y luego:
Introduction. Estando abierta la ventana, en el primer nivel se elige Programming, en el
segundo: logic. En el tercer nivel del árbol puede seleccionarse Boolean, o Logic package.
Luego ver las funciones disponibles.
Para invocar ayuda específica se escribe: ?logic, función.

Las expresiones boolenas se escriben precediendo los operadores con el signo &.

Se dispone de las siguientes funciones:

Distrib(b); expande en suma de productos la expresión b.


Bsimp(b); retorna una suma mínima de productos para la expresión b.
Dual(b); obtiene la expresión dual de la expresión b.

Bequal(b1, b2); retorna valor verdadero si dos expresiones lógicas b1 y b2 son equivalentes.

canon(b, alpha, forma) retorna la forma canónica de la expresión b, con los valores de la
lista de variables; y si el argumento forma es CNF (retorna la forma conjuntiva) y si es DNF
retorna la forma disyuntiva.

Profesor Leopoldo Silva Bijit 19-01-2010


32 Sistemas Digitales

convert(b, forma); cambia la forma de despliegue de la expresión b. Si forma es frominert


representa los operadores sin el ampersand(forma en que se está más habituado a escribir
expresiones booleanas). Si la forma es toinert, se representan operadores precedidos del símbolo
&.

tautology(b); retorna verdadero si la expresión b es una tautología.

A continuación se ilustra una sesión, donde se ilustran las funciones:


> with(logic); [bequal, bsimp, canon, convert/frominert, convert/toinert, distrib, dual,
tautology]
> bsimp(a &or (a &and b));
a
> bsimp((a &and b) &or (a &and (&not b)));
a
> distrib(&not(a &and b));
&not(b) &or &not(a)
> distrib(&and(a,b &or c));
(a &and b) &or (a &and c)
> dual(a &and (&not a) = false);
a &or &not(a) = true
> dual(a &implies b);
a &implies b
> bequal(&not(a &and b),(&not a) &or (&not b));
true
> canon(a &xor b,{a,b},CNF);
(&not(a) &or &not(b)) &and (a &or b)
> canon(a &xor b,{a,b},DNF);
(a &and &not(b)) &or (b &and &not(a))
> convert(&and(a,b,c) &or b,frominert);
a and b and c or b
> convert(&or(a,b,c) &and b,frominert);
(a or b or c) and b
> convert(a and b or c,toinert);
c &or (a &and b)
> tautology(&and(a,b) &or (&not a) &or (&not b));
true

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 4. Circuitos Lógicos 33

Índice general.

APÉNDICE 4 ........................................................................................................................................ 1
CIRCUITOS DE CONMUTACIÓN .................................................................................................. 1
CIRCUITOS LÓGICOS. ..................................................................................................................... 1
A4.2 INTERRUPTORES MANUALES....................................................................................................... 1
A4.2.1 Circuito and. ...................................................................................................................... 1
A4.2.2 Circuito or. ......................................................................................................................... 2
A4.2.3 Circuito escalera. ............................................................................................................... 3
A4.3 RELÉS......................................................................................................................................... 4
A4.3.1. Función de transmisión. .................................................................................................... 4
A4.3.2. Función de apertura. ......................................................................................................... 5
Ejemplo A4.1............................................................................................................................................. 5
A4.3.3. Controladores lógicos programables(PLC) ...................................................................... 6
A4.4 CIRCUITOS LÓGICOS EMPLEANDO DIODOS. ................................................................................ 6
A4.5 TRANSISTOR BIPOLAR. ............................................................................................................... 7
A4.6 COMPUERTA NAND DTL. (DIODE TRANSISTOR LOGIC). ............................................................ 7
Fan-out. ......................................................................................................................................... 8
A4.7 COMPUERTAS TTL. .................................................................................................................... 9
Niveles lógicos TTL ..................................................................................................................... 10
A4.8 COMPUERTAS CMOS ............................................................................................................... 10
Interruptores MOS. ...................................................................................................................... 10
Transistor nfet.............................................................................................................................. 11
Transistor pfet.............................................................................................................................. 12
Construcción nfet. ........................................................................................................................ 12
Operación. ................................................................................................................................... 13
Inversor MOS RTL. ...................................................................................................................... 14
Inversor CMOS. ........................................................................................................................... 14
Retardo de conmutación. ............................................................................................................. 16
Compuertas CMOS de transmisión. ............................................................................................ 16
Operación de compuertas CMOS. ............................................................................................... 18
Inversor CMOS. ...................................................................................................................................... 18
Diseño electrónico inversor CMOS ......................................................................................................... 18
NAND CMOS ......................................................................................................................................... 19
NOR CMOS. ........................................................................................................................................... 20
Ejemplo A4.2. .............................................................................................................................. 21
Buffer inversor de tercer estado, en base a transistores CMOS. ................................................. 22
Mux con compuertas de transmisión. .......................................................................................... 23
Matriz de diodos con Mosfet. ....................................................................................................... 25
A4.9. FORMATO JEDEC PARA DISPOSITIVOS PROGRAMABLES. ........................................................ 26
Relación entre la información que suministra el compilador y la arquitectura de la GAL. ........ 27
A4.10 USO DE MANIPULADOR DE EXPRESIONES SIMBÓLICAS. MAPLE.............................................. 31
ÍNDICE GENERAL. .............................................................................................................................. 33
ÍNDICE DE FIGURAS........................................................................................................................... 34

Profesor Leopoldo Silva Bijit 19-01-2010


34 Sistemas Digitales

Índice de Figuras

Figura A4.3 And con interruptores ............................................................................................... 1


Figura A4.4 Asignación de valores lógicos 1. .............................................................................. 1
Figura A4.5 Asignación de valores lógicos 2. .............................................................................. 2
Figura A4.6 Asignación de valores lógicos 3. .............................................................................. 2
Figura A4.7 Red or con interruptores. .......................................................................................... 3
Figura A4.7 Red or con interruptores. .......................................................................................... 3
Figura A4.8 Circuito escalera. ...................................................................................................... 3
Figura A4.9 Diagrama de un relé. ................................................................................................ 4
Figura A4.10 Diagrama de contactos de un relé........................................................................... 4
Figura A4.11 Función lógica implementada con relés. ................................................................ 4
Figura A4.12 Esquema simplificado empleando relés. ................................................................ 5
Figura A4.13 Conexión puente empleando relés.......................................................................... 5
Figura A4.14 Diagramas lógicos para PLC. ................................................................................. 6
Figura A4.15 Compuertas empleando diodos. ............................................................................. 6
Figura A4.16 Transistor bipolar. .................................................................................................. 7
Figura A4.17 Compuerta NAND DTL. ........................................................................................ 8
Figura A4.18 AND alambrado. .................................................................................................... 8
Figura A4.19 NAND TTL. ........................................................................................................... 9
Figura A4.20 Salida totem-pole TTL. .......................................................................................... 9
Figura A4.21 Canal n y p. .......................................................................................................... 10
Figura A4.22 Transistor nfet. ..................................................................................................... 11
Figura A4.23 Transistor pfet. ..................................................................................................... 12
Figura A4.24 Diagrama construcción transistor pfet. ................................................................. 12
Figura A4.25 Diagrama físico transistor nfet. ............................................................................ 13
Figura A4.26 Inversor MOS RTL. ............................................................................................. 14
Figura A4.27 Compuertas CMOS. ............................................................................................. 15
Figura A4.28 Redes RC en compuertas CMOS. ........................................................................ 16
Figura A4.29 Compuerta CMOS de transmisión ....................................................................... 17
Figura A4.30 Valores lógicos en compuertas de transmisión. ................................................... 17
Figura A4.31 Operación de compuerta de transmisión CMOS. ................................................. 17
Figura A4.32 Operación de inversor CMOS. ............................................................................. 18
Figura A4.33 Operación de inversor CMOS. ............................................................................. 18
Figura A4.34 Operación de inversor CMOS. ............................................................................. 19
Figura A4.35 Diseño NAND CMOS. ......................................................................................... 19
Figura A4.36 Operación NAND CMOS. ................................................................................... 20
Figura A4.37 Estructura NOR CMOS. ....................................................................................... 20
Figura A4.38 Operación NOR CMOS. ...................................................................................... 20
Figura A4.39 Diseño del pull-down. .......................................................................................... 21
Figura A4.40 Diseño del pull-up. ............................................................................................... 21
Figura A4.41 Integración de las partes del diseño. ..................................................................... 22
Figura A4.42. Buffer inversor mediante compuertas CMOS. ..................................................... 22
Figura A4.43. Operación buffer tercer estado. ........................................................................... 23
Figura A4.44. Compuerta de transmisión. .................................................................................. 23

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 4. Circuitos Lógicos 35
Figura A4.45. Multiplexor de 2 vías a una. ................................................................................ 24
Figura A4.46. Demultiplexor de 1 a dos vías. ............................................................................ 24
Figura A4.47. Revisión del diseño del demultiplexor. ............................................................... 25
Figura A4.48 Fusibles programables con MOSFET. .................................................................. 25
Figura A4.49 PLA y PROM mediante CMOS. ........................................................................... 26
Figura A4.50 Funciones D y E de tres variables. ........................................................................ 27
Figura A4.51 Esquema GAL22V10. ........................................................................................... 28
Figura A4.52 Detalle de fusibles en productos. .......................................................................... 29
Figura A4.52 Programación de macrocelda de GAL22V10. ...................................................... 30

Profesor Leopoldo Silva Bijit 19-01-2010


1

Apéndice 5

Uso de verilog

A5.1 Introducción

Verilog es uno de los lenguajes de descripción de hardware (HDL) más utilizados.

Las herramientas CAD soportan el ingreso de diseños digitales en base a esquemáticos, los
cuales se arman conexionando componentes básicas o de bibliotecas en un ambiente visual.
Sin embargo a medida que el sistema aumenta su tamaño, cada vez es más difícil la
descripción por esquemáticos. Los esquemáticos describen la conectividad y por lo tanto el
armado del sistema, pero no destacan o enfatizan la funcionalidad de éste.

Los lenguajes descriptivos de hardware permiten diseñar, en forma abstracta, complejos


sistemas digitales que luego de ser simulados podrán ser implementados en dispositivos
programables como FPGA o CPLD, lo cual se logra describiendo el sistema digital mediante
código HDL.

Las herramientas computacionales de ayuda al diseño (CAD) permiten diseñar, verificar


códigos de alto nivel, simular el circuito representado y crear los códigos binarios que serán
cargados en los dispositivos programables (síntesis).

Debido a que los módulos pueden reutilizarse, y los subsistemas más frecuentemente
utilizados pueden estar prediseñados, la programación a través de lenguajes toma cada vez más
importancia en el diseño de sistemas digitales.

Los lenguajes HDL deben permitir la simulación, cuyos objetivos son: verificar que el
diseño es funcionalmente correcto; es decir que se cumplan las especificaciones lógicas; y
además que se cumplan las especificaciones temporales; es decir que los tiempos de
propagación a través de las componentes y de los caminos que permiten la interconexión
cumplan las especificaciones de setup y hold de los registros, en caso de sistemas secuenciales
sincrónicos. Como deben considerarse todos lo casos, es difícil asegurar que la simulación
entregará la solución definitiva, ya que el conjunto de estímulos, para los cuales se realiza la
simulación, puede no ser completo. Al mismo tiempo los lenguajes deben realizar la síntesis
lógica; es decir traducir el programa a una serie de compuertas y flip-flops; también deben
efectuar minimizaciones, y permitir mapear a los bloques tecnológicos disponibles; para
finalmente colocar y enrutar de forma conveniente los bloques en el dispositivo programable.

Verilog existe desde el año 1984, luego de varios años de uso se ha estandarizado y su última
versión es del año 2001. Es un lenguaje similar a C, y dentro de los HDL, además de las

Profesor Leopoldo Silva Bijit 19-01-2010


2 Sistemas Digitales
descripciones abstractas permite representaciones en bajo nivel; es decir puede describir
sistemas digitales en base a compuertas, e incluso en base a transistores.

Verilog permite que en un diseño se puedan usar diferentes niveles de descripción de


sistemas digitales en un mismo ambiente; las diferentes descripciones pueden ser simuladas
para verificar el funcionamiento y además pueden ser sintetizadas; es decir traducidas a la
interconexión de componentes básicas de un dispositivo programable.

Verilog permite la descripción estructural del diseño en base a componentes básicas, y


descripciones más abstractas que se enfocan en la conducta del sistema. La conducta puede
describirse mediante expresiones lógicas y también empleando procedimientos.

Un diseño basado en descripciones funcionales o de comportamiento puede resultar lento y


de gran costo en área. Las descripciones en niveles estructurales permiten optimizar los circuitos
lógicos para maximizar la velocidad y minimizar el área.

Se expondrán las formas de descripción para sistemas combinacionales y secuenciales.

La Figura A5.1 resume las principales etapas del diseño digital.

Diseño conceptual

Elaboración de módulos y simulación


funcional

Síntesis lógica-optimización

Diseño físico

Simulación temporal

No
Diseño correcto?
Si
Programación dispositivo

Figura A5.1

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 5. Uso de verilog 3
A5.2 Descripción estructural.

A5.2.1. Nivel compuertas.

Permite representar una red lógica mediante sus ecuaciones. Para esto se emplean funciones
lógicas básicas para representar compuertas.
Los operadores and, or not, en minúsculas, son palabras reservadas, y se emplean como
nombres de funciones.

La función and [nombre de compuerta] (salida, entrada1, entrada2); describe un and de dos
entradas. Donde el nombre de compuerta puede ser opcional. Importante es destacar que estas
compuertas pueden tener “muchas” entradas.

La función or(x, ~a, b, ~c); representa a la compuerta or de tres entradas que puede
describirse por la ecuación lógica: x a b c

Las compuertas definidas son: and, nand, or, nor, xor, xnor, buf, not. La salida es el primer
argumento de la lista.

El inversor y el buffer pueden tener varias salidas, el último elemento de la lista es la


entrada.

Para representar un sistema se requiere definir un módulo, el que se describe como una
función del lenguaje C; en la cual los argumentos son los nombres de las variables de entrada,
de salida y bidireccionales del módulo.

Luego deben colocarse listas de variables de entrada, de salida y bidireccionales. El módulo


debe estar terminado con la sentencia endmodule.
Pueden emplearse comentarios, para mejorar la legibilidad.

Los identificadores de variable deben comenzar con una letra o el carácter „_‟. Cuando se
definen identificadores se consideran distintas las letras minúsculas y mayúsculas.

La Figura A5.2 representa una red lógica con dos salidas y cuatro entradas. Su descripción
puede efectuarse mediante un módulo.

a f1
bloque
b
c
d f2

Figura A5.2

module bloque(a, b, c, d, f1, f2); //note que termina en punto y coma.


input a, b, c, d; // comentario de fin de línea

Profesor Leopoldo Silva Bijit 19-01-2010


4 Sistemas Digitales
output f1, f2;
/*
Aquí se describen las funciones lógicas mediante compuertas o expresiones.
*/
endmodule
Ejemplo A5.1.
Se tiene la función de cuatro variables:
Z ( A, B, C , D) m(0,3,5,12,13) d (1, 2,15)

Empleando alguna herramienta de minimización (ver A3.2 en Apéndice 3) se obtiene la


forma minimizada en suma de productos:
Z BCD AB ABC

La ecuación se puede traducir en el módulo siguiente, notar el empleo de los nodos internos: n1,
n2 y n3 para formar la salida Z.

module ejemploA5_1(A, B, C, D, Z);


input A, B, C, D;
output Z;
wire n1, n2, n3;
and(n1, B, ~C, D);
and(n2, ~A, ~B);
and(n3, A, B, ~C);
or(Z, n1, n2, n3);
endmodule

Con fines de simulación puede asociarse un retardo de propagación a cada compuerta. Por
ejemplo, la descripción: and #10 (x, y, z) indica que esa compuerta and tiene asociado un
retardo de 10 unidades de tiempo de simulación. También puede darse un nombre a cada
compuerta, escribiéndolo antes de la lista de las señales.
En un proceso de síntesis no es recomendable asociar retardos a las compuertas, ya que los
algoritmos pueden aumentar su tiempo de ejecución buscando satisfacer los requerimientos de
tiempo de las compuertas. Algunos programas de síntesis no consideran estos retardos en el
proceso de síntesis.
Ejemplo A5.2.
Mux de dos vías a una, implementado mediante compuertas.

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 5. Uso de verilog 5

x0 n0

x1 out
n1

c0

Figura A5.3

La ecuación del mux de la Figura A5.3, como suma de productos, puede expresarse según:
out(c0, x1, x0) = c0 x1 + c0' x0

El módulo puede escribirse directamente a partir de la ecuación.

// Multiplexer nivel compuertas. multiplexer 2-1, vías de 1-bit


// Cuando c0=1, out=x1; y cuando c0=0, out=x0

module mux21_gt (out, c0, x1, x0);


output out; // mux output
input c0, x1, x0; // mux inputs
wire n1, n0; // nodos internos
and(n0, x0, ~c0);
and(n1, x1, c0);
or(out, n1, n0);

endmodule

Las conexiones o nets permiten ir uniendo componentes de un diseño digital. En el ejemplo


anterior; n1 y n0, los nodos internos, son declarados wire (en español alambres) y son un tipo de
net. Las señales tipificadas con wire, no tienen capacidad de almacenamiento; se consideran
continuamente alimentadas por la salida de un módulo o por una asignación continua assign. Si
las señales de tipo wire de entrada se dejan desconectadas, toman el valor x, que significa
desconocido. Una variable de tipo wire es simplemente un rótulo sobre un alambre.

Una señal con tipo de datos de modo wire representa la actualización continua, en circuitos
combinacionales, de las salidas respecto a cambios de las entradas. Otro tipo de datos, que
suele estar asociado a salidas de flip-flops es reg, que es abreviatura de registro.

A5.2.2. Nivel transistores.

Verilog permite descripciones a nivel de conmutación de transistores, lo cual permite


modelar compuertas.

Profesor Leopoldo Silva Bijit 19-01-2010


6 Sistemas Digitales
Ejemplo A5.3.
Descripción de inversor CMOS en nivel de conmutación.
power

in out

ground

Figura A5.4

La Figura A5.4, muestra las señales empleadas en el módulo. Los tipos de conexiones o
nets: supply1 y supply0 conectan señales a un voltaje de polarización y a tierra,
respectivamente.

Los transistores cmos se especifican con tres argumentos (salida, entrada, control), y se
dispone de las formas nmos y pmos.

El siguiente módulo implementa al inversor cmos de la Figura A5.4.

module inv_sw (out, in);


output out; // salida inversor
input in; // entrada inversor

supply1 power; // "power" conexión a Vdd . Tipos de net.


supply0 ground; // "ground" conexión a Gnd

pmos (out, ground, in); // instancia switch pmos


nmos (out, power, in); // instancia switch nmos

endmodule
Ejemplo A5.4.
Multiplexor basado en compuertas de transmisión.

La Figura A5.5 muestra a la izquierda un símbolo para la compuerta de transmisión y, a la


derecha, su implementación basada en un par de transistores. Cuando ctrl=0 la salida está en
alta impedancia; cuando ctrl=1 la salida es igual a la entrada.

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 5. Uso de verilog 7

ctrl’
ctrl’

in out in out

ctrl
ctrl

Figura A5.5

Verilog dispone de un modelo intrínseco para la compuerta de transmisión. Para instanciar


una compuerta de transmisión se emplea:
cmos [nombreinstancia]([output],[input],[nmosgate],[pmosgate])

La Figura A5.6 muestra un multiplexor de dos vías a una. Cuando ctrl=1, se tiene que
out=in2; y cuando ctrl=0 se tendrá out=in1.
ctrl
C1
in1

ctrl’
ctrl’
out
in2
C2
ctrl

Figura A5.6

La implementación de este multiplexor se logra con el siguiente módulo, en el cual se ha


generado la señal ctrl‟ a partir de ctrl y un inversor; el cual se instancia según el modelo anterior
y con nombre I1. Se definen dos compuertas de transmisión con nombres C1 y C2.

// Multiplexer nivel conmutación. 1-bit 2-1 multiplexer


// Cuando ctrl=0, out=in1; y cuando ctrl=1, out=in2

module mux21_sw (out, ctrl, in1, in2);

output out; // mux output


input ctrl, in1, in2; // mux inputs
wire w; // nodo interno de tipo wire

inv_sw I1 (w, ctrl); // instancia inversor

cmos C1 (out, in1, w, ctrl); // instancias switches cmos

Profesor Leopoldo Silva Bijit 19-01-2010


8 Sistemas Digitales
cmos C2 (out, in2, ctrl, w);

endmodule

A5.3 Descripción del comportamiento (Behavior).

Cuando son numerosas las ecuaciones de la red puede ser muy laboriosa la descripción de la
estructura mediante compuertas.

Los lenguajes permiten una descripción más abstracta, y a la vez compacta, de las redes
booleanas, ya que puede representarse el comportamiento o la conducta de la red.

Se describe lo que debe efectuar el sistema, empleando sentencias del lenguaje; es decir, la
red booleana se describe como un programa.

Lo que el programa describe en este nivel son los registros y las transferencias y
transformaciones de vectores de información entre los registros; este nivel se denomina RTL
(Register Transfer Level).

También podría decirse que la descripción del comportamiento es una descripción de la


arquitectura del sistema digital.

El diseñador se puede concentrar en el análisis de arquitecturas alternativas, mediante la


simulación, determinando las partes del diseño que requerirán un estudio más detallado.

Este lenguaje permite describir con precisión la funcionalidad de cualquier diseño digital.

La descripción del comportamiento puede efectuarse de dos modos: Mediante expresiones


lógicas o mediante procedimientos.

El compilador del lenguaje traduce estas representaciones abstractas a ecuaciones lógicas y


éstas a su vez son mapeadas a los bloques lógicos del dispositivo programable.

Ejemplo A5.5. Expresiones.

Mediante la asignación continua, y escribiendo expresiones lógicas, empleando los


operadores lógicos al bit del lenguaje C, puede obtenerse la misma funcionalidad de la
descripción de Z mediante compuertas, vista en el Ejemplo A5.1. La expresión del lado derecho
se evalúa continuamente a medida que cambian arbitrariamente las entradas; el lado derecho es
un alambre que es la salida del sistema combinacional.

module ejemploA5_5(input A, B, C, D, output Z);

assign Z = (B & ~C & D) | ( ~A & ~B) | (A & B & ~C );

endmodule

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 5. Uso de verilog 9
Ejemplo A5.6. Mux mediante Expresiones.

El mux visto antes, en el Ejemplo A5.2, puede describirse:

// Multiplexer nivel expresiones . 2-1 multiplexer de 1-bit.


// Cuando c0=1, out=x1; y cuando c0=0, out=x0
module mux21_exp (output out, input c0, x1, x0);

assign out= (c0&x1) | (~c0&x0);

endmodule

Operadores.

Los operadores al bit del lenguaje C: ~ para el complemento a uno, & para el and, | para el
or, y ^ para el xor, efectúan la operación bit a bit del o los operandos. Además se dispone de los
siguientes operandos: ~& para el nand, ~| para el nor, y: ~^ o ^~ para la equivalencia o not xor.

Se dispone de operadores unarios que efectúan la reducción del operando a un bit. Lo que
efectúan es aplicar el operador a todos los bits de la señal. Se tienen: & para la reducción AND, |
para la reducción OR, ^ para la reducción XOR, ~& para la reducción NAND, ~| para la
reducción NOR, y ~^ para la reducción XNOR.

Verilog dispone de dos operadores adicionales, no incluidos en el lenguaje C, que son la


igualdad y desigualdad, considerando los valores no conocido x, y alta impedancia z. En A5.6
se describe la forma de escribir valores. Se anotan: (a === b) y (a !== b), en estas operaciones
si se incluyen bits con valores x ó z, también deben los correspondientes bits ser iguales para
que la comparación sea verdadera, valor 1; o valor 0, en caso contrario.
En los test de igualdad o desigualdad (a == b) y (a != b), que están presentes en C, si existen
operandos con valores x ó z, el resultado es desconocido, es decir x.

Ejemplo A5.7. Procesos.

La descripción de la conducta mediante procedimientos está basada en la definición de un


bloque always. Esta construcción está acompañada de una lista de sensibilidad, cuyo propósito
es evaluar las acciones dentro del procedimiento siempre que una o más de las señales de la
lista cambie.

Dentro del bloque pueden usarse las sentencias de control: if-then-else, case, while, for.

Si se produce un evento de la lista de sensibilidad y se desea que la salida cambie


inmediatamente, se efectúa una asignación bloqueante (se usa el signo igual); esto modela la
conducta de un proceso combinacional. El calificativo bloqueante deriva del modelo de
simulación, orientado a eventos, del lenguaje Verilog; en este sentido se dice bloqueante, ya que
todos los otros eventos quedan pendientes hasta que se produzca la renovación del valor; es
decir, esta asignación no puede ser interrumpida por otras órdenes Verilog concurrentes.

Profesor Leopoldo Silva Bijit 19-01-2010


10 Sistemas Digitales
Si se produce un evento de la lista de sensibilidad y se desea que la salida cambie luego de
un tiempo, se efectúa una asignación nobloqueante (se usa el signo <=), esto modela el proceso
de escritura en un flip-flop disparado por cantos. Apenas producido el evento, se recalculan los
lados derechos de las asignaciones nobloqueantes; y una vez que se han actualizado todos los
valores, correspondientes a ese paso de simulación, se copian en las variables a la izquierda.

Importa el orden en que se efectúan una serie de asignaciones bloqueantes; ya que las
acciones dentro de un bloque de un proceso se ejecutan secuencialmente. Cuando se tiene una
serie de asignaciones nobloqueantes, no importa el orden en que son escritas.

Cada bloque always define un hebra de control. Si hay varios bloques always en un
módulo, se considera que están corriendo concurrentemente.
Las acciones dentro del bloque o proceso son evaluadas en orden secuencial. En esta
construcción puede tenerse uno o más bloques always dentro del módulo; y por lo menos una
acción en uno de los bloques always. Si dentro del procedimiento se asigna valores a una de las
señales, ésta debe ser declarada de tipo reg.

module ejemploA5_7(A, B, C, D, Z);


input A, B, C, D;
output Z;
reg Z; //se marca como registrada pero es combinacional.

always @(A or B or C or D)
begin
Z = (B & ~C & D) | ( ~A & ~B) | (A & B & ~C );
end
endmodule

Cuando se efectúa la síntesis de esta descripción, Z será la salida de compuertas, y no se


usará un flip-flop para guardar el valor de Z.
Las entradas deben estar en la lista de sensibilidad, las salidas deben ser asignadas en cada
una de las alternativas controladas por sentencias.

En forma similar se dispone de initial que crea un proceso que se realiza sólo una vez, lo
cual permite inicializar variables y generar estímulos para simulaciones. El proceso always se
ejecuta siempre.

La diferencia fundamental entre el tipo net y reg es que a este último se le asignan valores en
forma explícita. El valor se mantiene hasta que se efectúe una nueva asignación. Las salidas de
flip-flops serán de tipo reg.
No debe confundirse el tipo reg de Verilog, con un registro formado por flip-flops.
Dentro de un módulo se pueden tener procesos y asignaciones continuas.

Ejemplo A5.8. Mux mediante Procesos.

El mux visto en los Ejemplos A5.2 y A5.6, puede describirse mediante un proceso, según:

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 5. Uso de verilog 11
// Multiplexer nivel proceso . 2-1 multiplexer 1-bit de ancho.
// Cuando c0=1, out=x1; y cuando c0=0, out=x0

module mux21_proc (out, c0, x1, x0);


output out; // mux output
input c0, x1, x0; // mux inputs
reg out;
always @(*) //asterisco representa todas las entradas que pueden modificar la salida
out= (c0&x1) | (~c0&x0);
endmodule

Ejemplo A5.9. Mux mediante lenguaje.

La introducción de elementos similares a los empleados en lenguajes de programación


permite describir procesos en forma cada vez más abstracta. Como veremos esto facilita la
generalización.

// Multiplexer nivel proceso abstracto. 1-bit 2-1 multiplexer


// Cuando c0=1, out=x1; y cuando c0=0, out=x0

module mux21_procAbstracto (out, c0, x1, x0);


output out; // mux output
input c0, x1, x0; // mux inputs
reg out;
always @(*)
if (c0==1) out=x1; else out=x0;
endmodule

En descripciones del comportamiento, mediante lenguaje, se representa la funcionalidad del


módulo, independiente de la implementación lógica en base a compuertas. La herramienta CAD
debería resolver el descenso o compilación a compuertas.

Sentencias.

Los modelos que describen el comportamiento contienen procesos que controlan la


simulación y que manipulan variables. Cada proceso tiene su propio flujo de acciones. Las
acciones de cada proceso se ejecutan concurrentemente, permitiendo modelar sistemas digitales
que son inherentemente concurrentes o paralelos.

Se dispone de similares construcciones de secuenciación de acciones que en el lenguaje C.


Algunos detalles son diferentes: si se emplea una variable índice entera en un for debe ser
declarada de tipo integer (no int); no se emplea ++ para incrementar variables, sino var=var+1;
se emplea begin .. end en lugar de {..}.

En la sentencia case no son necesarios los break; en los casos pueden colocarse valores con x
ó z, y sólo si sintonizan exactamente, se realiza la acción asociada al caso.

Profesor Leopoldo Silva Bijit 19-01-2010


12 Sistemas Digitales
Existen adicionalmente casex y casez que permiten comparación con condiciones superfluas
con valores que contengan x ó z respectivamente.

La ejecución de una acción puede ser retardada hasta que una condición se haga verdadera.
Esto se logra con la construcción: wait (condición) acción;

Se dice que la sentencia wait es sensible a los cambios de nivel, a diferencia de los eventos
controlados por @, que disparan la acción con los cantos de las señales de la lista.

Se evalúa la condición del wait, y si es falsa la acción se detiene; es decir se espera hasta que
la condición sea verdadera, momento en el cual se realiza la acción.

Ejemplo de uso:
Cuando se habilita la escritura, con WEnable=1, se transfiere el contenido del busA al
registro regA, puede escribirse:

wait (!WEnable) regA <= busA;

Sincronización entre procesos.


A los eventos por cantos puede dárseles un nombre.
Por ejemplo la transferencia: @ trigger rega <= regb;
Puede ser realizada desde otro proceso, mediante: -> trigger;

Acciones en paralelo.
Entre las palabras fork y join las acciones se consideran de ejecución paralela. Los
separadores begin, end encierran sentencias secuenciales. Si las sentencias tienen retardos, en
un conjunto de acciones en paralelo, éstos se consideran respecto del inicio del bloque.

A5.4 Diseños jerárquicos.

Verilog permite descripciones jerárquicas de redes complejas. Por ejemplo un sumador


completo de 4 bits puede describirse mediante la instanciación de cuatro módulos con las
variables actuales de un sumador completo de un bit.

Si se tiene en un archivo, denominado sumadorcompleto.v, el siguiente módulo


combinacional definido por asignaciones continuas:

module sumadorcompleto(cin, a, b, sum, cout);


input cin, a, b;
output sum, cout;

assign sum = a ^ b ^ cin, // Operador or exclusivo


assign cout = (a & b) | (a & cin) | (b & cin);
endmodule

El cual puede representarse en el esquema de la Figura A5.7.

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 5. Uso de verilog 13

a b cin
sumadorcompleto

cout sum

Figura A5.7

Alternativamente podría haberse efectuado una descripción estructural:


module sumadorcompleto (Cin, a, b, sum, Cout);
input Cin, a, b;
output sum, Cout;
wire n1, n2, n3;
xor (sum, a, b, Cin);
and (n1, a, b);
and (n2, a, Cin);
and (n3, b, Cin);
or (Cout, n1, n2, n3);
endmodule

El sumador de 4 bits, puede estar en otro archivo, en el cual se incluye la definición del
módulo básico. Se le da un nombre a cada instancia, etapai en el ejemplo, el que debe estar
precedido por el nombre del módulo básico.

En la Figura A5.8, se ilustran las instancias y las correspondencias de los nombres de las
puertas de cada etapa con los nombres del módulo básico. Con este diagrama resulta sencillo
efectuar las instancias dentro del módulo.
fulladder4

a3 b3 c3 a2 b2 c2 a1 b1 c1 a0 b0 Cin
etapa4 etapa2 etapa1 etapa0

Cout sum3 c3 sum2 c2 sum1 c1 sum0

Figura A5.8

`include " sumadorcompleto.v"

module fulladder4 (Cin, a3, a2, a1, a0, b3, b2, b1, b0, sum3, sum2, sum1, sum0, Cout);
input Cin, a3, a2, a1, a0, b3, b2, b1, b0;
output sum3, sum2, sum1, sum0, Cout;
wire c1, c2, c3;
sumadorcompleto etapa0 (Cin, a0, b0, sum0, c1);
sumadorcompleto etapa1 ( c1, a1, b1, sum1, c2);
sumadorcompleto etapa2 ( c2, a2, b2, sum2, c3);

Profesor Leopoldo Silva Bijit 19-01-2010


14 Sistemas Digitales
sumadorcompleto etapa3 ( c3, a3, b3, sum3, Cout);

endmodule

Los módulos no deben ser considerados procedimientos o funciones, en el sentido que no


son invocados. Se dice que son instanciados al inicio del programa y permanecen hasta el final
del programa. En el ejemplo anterior, fulladder4 crea 4 sumadorescompletos, denominados
etapa0 hasta etapa3.

A5.5. Fundamentos de simulación.

El lenguaje debe proveer facilidades para generar estímulos, medir respuestas, y efectuar
despliegues de los datos.
Empleando programación jerárquica un esquema que mantiene separado el módulo del
diseño con el módulo de test, se visualiza en la Figura A5.9. La ventaja de esto es que el
módulo con el diseño debe luego sintetizarse; de esta forma todas las sentencias que tienen que
ver con la simulación quedan definidas dentro del módulo test; la finalidad de éste es generar los
estímulos y grabar los resultados de los test. El módulo test podría describir un elemento de
hardware, por ejemplo si se generaran los estímulos posibles mediante un contador o una
memoria.
Debe notarse que las salidas del módulo test (estímulos) son las entradas del módulo que se
está diseñando; y que las entradas del módulo test (respuestas) son las salidas del módulo que se
está diseñando.

La activación del diseño y test se logra con un tercer módulo denominado Banco de prueba
ubicado en el tope de la jerarquía, en el diagrama de la Figura A5.9.

Banco de Prueba

Test Diseño

Figura A5.9.

Ejemplo A5.10. Banco de prueba para semisumador binario.

Efectuaremos un test de un módulo de semisumador escrito en forma estructural:

module semisumador(a, b, suma, cout);


input a, b;
output suma, cout;
xor(suma, a, b); and(cout, a, b);

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 5. Uso de verilog 15
endmodule

En la confección del test del semisumador, cuyo texto se encuentra a continuación, se define
un bloque que sólo se efectuará una vez. Esto se logra con la palabra reservada initial. El
símbolo: #10 b=1; indica efectuar un retardo de 10 (unidades de tiempo de simulación) y
luego efectuar la asignación. Con la secuencia dada se generan los estímulos para las entradas
del semisumador, con valores para ab: 00, 01, 11, 10. La palabra finish termina la generación de
estímulos.

La palabra $time muestra el tiempo en unidades de simulación.

El comando monitor muestra en la salida estándar, en formato similar a printf, los valores de
la lista de variables; las comas adicionales se interpretan como espacios.

Cuando cambia uno de los valores de la lista del comando monitor, se produce impresión de
una línea. Los valores se imprimen cuando todos los eventos del paso se han producido; es decir
se imprime al final de un intervalo de simulación. El formato %b despliega en binario, %d en
decimal, %h en hexadecimal. Sólo un monitor puede estar activo.

module testsemisumador(suma, cout, a, b);


input suma, cout;
output a, b; //genera estímulos de entrada para el diseño
reg a, b;

initial
begin
$monitor("t=",$time,,"a=%b, b=%b, suma=%b, cout=%b", a, b, suma, cout);
a=0; b=0;
#10 b=1;
#10 a=1;
#10 b=0;
#10 $finish;
end
endmodule

EnVerilog se forman bloques de instrucciones que se ejecutan secuencialmente,


encerrándolas entre las palabras reservadas: begin, end; esto es una diferencia con el lenguaje C
que usa paréntesis cursivos.

El módulo BancoDePrueba, en el tope de la jerarquía, define las señales que se emplearán,


las declara de tipo wire.

module BancoDePrueba;
wire a, b, su, co;
semisumador sm(a, b, su, co);
testsemisumador ts(su, co, a, b);
endmodule

Profesor Leopoldo Silva Bijit 19-01-2010


16 Sistemas Digitales

Efectuando la simulación, se obtiene el listado:

t= 0 a=0, b=0, suma=0, cout=0


t= 10 a=0, b=1, suma=1, cout=0
t= 20 a=1, b=1, suma=0, cout=1
t= 30 a=1, b=0, suma=1, cout=0

Listado que permite verificar, en forma exhaustiva, el funcionamiento del semisumador. La


prueba es completa, en este ejemplo, ya que se generan todas las combinaciones de estímulos
posibles; en este caso se está verificando la tabla de verdad.

Funcionamiento del simulador.

En forma simplificada el funcionamiento del simulador es como sigue:


Initial y always comienzan a ejecutarse en el tiempo t=0, y continúan hasta encontrar un
retardo (#); cuando esto ocurre, la condición que lo produce se almacena en la cola de los que
esperan, por el tiempo indicado; luego del cual vuelve a colocarse el bloque en la cola de
eventos activos para atender; es decir reasume la ejecución del bloque desde donde fue
detenido.
Los siguientes eventos activos se itineran en cualquier orden: Salidas de compuertas,
asignaciones continuas y bloqueantes, lectura de entradas y actualización de salidas, ejecución
de comandos display, cálculo de lados derechos de asignaciones nobloqueantes.

Cuando, para un intervalo de tiempo de simulación, no quedan eventos activos por ser
atendidos, se procesa la cola de eventos de asignaciones nobloqueantes, pasando al lado
izquierdo los valores ya calculados.
Luego de lo cual se procesan los eventos de monitor, los comandos strobe y monitor.
Después de esto se pasa a procesar los eventos asociados al siguiente intervalo de tiempo.

Los comados $monitor, $display y $strobe operan en forma similar a printf.


El comando $monitor muestra los valores actualizados de todas las variables de su lista, al
final de un paso de simulación y después que todas las asignaciones, para ese paso de
simulación, hayan sido efectuadas.
El comando $display muestra los cambios que se producen antes de que las asignaciones
nobloqueantes sean actualizados, ya que se considera evento activo.
El comando $strobe permite mostrar las asignaciones nobloqueantes una vez realizadas.

Cuando un proceso está en ejecución sólo se detiene al encontrar un retardo (#) o un evento
de una lista de sensibilidad (@) o el comando wait, este último comando espera hasta que su
variable argumento sea verdadera.

Un bloque always o proceso debe contener alguno de los elementos de control de tiempo
para que la simulación se detenga. El bloque continúa su ejecución: cuando transcurre el
retardo, o cuando cambia una de las señales de la lista de sensibilidad o cuando ocurre el evento
que espera wait. Un evento produce otros eventos. Son éstas las únicas instancias en que se

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 5. Uso de verilog 17
asume que el tiempo transcurre; el resto de los comandos (if-else, case, etc.) se considera que
son instantáneos.

Los procesos detienen la simulación en determinados instantes, y también lo hacen las


activaciones de salidas de compuertas.

Los eventos son itinerados para tiempos específicos y son colocados en una cola de espera,
ordenados en el tiempo, para ser atendidos. Los primeros eventos quedan al frente, los últimos
al fondo. Estando en el intervalo presente pueden procesarse varios eventos, no importando el
orden; una vez atendidos todos los eventos asociados al intervalo presente, se pasa al siguiente.
Durante el procesamiento pueden generarse nuevos eventos, que son ubicados en los lugares
temporales que les corresponden para su posterior procesamiento.

Verilog emplea la sintaxis de C, pero es un lenguaje que permite describir procesos


concurrentes, los eventos descritos en el párrafo anterior no están implementados en C, que es
un lenguaje procedural.

La simulación en Verilog se produce por eventos que ocurren en determinados instantes; es


una simulación por eventos discretos.

En una asignación bloqueante, las evaluaciones y asignaciones son inmediatas. En una no


bloqueante, las asignaciones se postergan hasta que todos los lados derechos hayan sido
evaluados, lo que efectúa al final del intervalo de simulación.
Si el módulo es combinacional se recomienda emplear asignaciones bloqueantes; y si el
módulo es secuencial sincronizado por eventos, emplear asignaciones no bloqueantes.

Ejemplo A5.11. Simulación nivel transistores.

// Estímulos para verificar el inversor CMOS nivel de transistores del Ejemplo A5.3.
module stimulus;
reg in; // se escribe en in. Se le da tipo reg.
wire out;

inv_sw I0 (out, in); // instancia inversor

initial begin
in=0; $display("%b, %b, t=%0d", in, out, $time);
#1 in=1'b1; $display("%b, %b,t=%0d",in, out, $time);
#4 in=1'b0; $display("%b, %b,t=%0d",in, out, $time);
#5 in=1'b1; $display("%b, %b,t=%0d",in, out, $time);
#5 in=1'b0;
#5 $finish;
end
endmodule

Generando la siguiente traza:


0, x, t=0 //Al inicio, en t=0, aún no hay salida. No se conoce es x.

Profesor Leopoldo Silva Bijit 19-01-2010


18 Sistemas Digitales
1, 0, t=1
0, 1, t=5
1, 0, t=10

El descriptor 0 antes de d, en el string de control del display, especifica no generar espacios,


e imprimir el tiempo en ancho variable, de acuerdo a la magnitud.

El siguiente proceso da un máximo tiempo a la simulación.


initial begin: DetenerSimulacion
// Detiene la simulación después de 400 unidades de tiempo de simulación.
#400; $stop;
end

A5.6. Buses, registros, vectores, arreglos. Valores constantes.

En numerosas situaciones de sistemas digitales, las variables de entrada y salida son


multivaluadas, sin embargo ha sido tradicional codificarlas como vectores booleanos.
En general cuando se agrupan una serie de señales con un nombre común se origina un bus o
vector booleano.

En Verilog, los tipos de datos net y reg pueden ser declarados como vectores. Existen
mecanismos de acceso a partes o a la totalidad del vector

Puede convenirse en establecer el bit más significativo del vector como el que se escribe
primero; además importa el orden con el que se declara el ancho del bus.

El siguiente ejemplo define out como la salida de un registro de 8 bits.


reg [7:0] out;

Se tiene que el bit 7 es el más significativo, el 0 el menos significativo. Convenio little


endian.

Valores.

Para describir constantes o valores se emplea la notación: <largo>‟<base><valor>. Donde la


base suele ser binaria o hexadecimal; si no se coloca ‟<base> se asume decimal. A los valores
binarios 1 y 0, se agregan los valores z y x que representan alta impedancia y desconocido,
respectivamente.
Con estos nuevos valores, la operación que realiza una compuerta and se rige por la siguiente
tabla de verdad.
and 0 1 x z
0 0 0 0 0
1 0 1 x x
x 0 x x x
z 0 x x x
Figura A5.10.

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 5. Uso de verilog 19

Para una compuerta or se tiene:


or 0 1 x z
0 0 1 x x
1 1 1 1 1
x x 1 x x
z x 1 x x
Figura A5.11.

Los bits de un vector o bus pueden ser referenciados empleando la notación:


[<bit de partida>:<bit de término>]

De esta forma puede inicializarse un registro en forma parcial, asignado un valor a los
primeros cuatro bits de la variable out, mediante:
out[7: 4] = 4'b1010;

La operación concatenación, agrupa los elementos separados por comas en una lista
definida entre paréntesis cursivos.
out = {A[3:0], 4‟b0101};

Adicionalmente puede emplearse el comando de repetición que especifica el número de


veces que se repite una concatenación: {2{4‟b1010}} repite dos veces la secuencia 1010.
Una constante en complemento dos se anota con el signo precediendo la secuencia: -4d‟6
define el complemento dos de 6 en un largo de 4 bits.

Los operandos al bit realizan la operación bit a bit de los operandos.


4‟b0101 & 4‟b0011 = 4‟b0001

El operador monádico, al bit, se aplica a cada uno de los bits, formando el complemento uno.
~(4‟b0101) = {~0,~1,~0,~1} = 4‟b1010

Los operadores lógicos retornan un bit de resultado.


!(4‟b0101) = ~1 = 1‟b0

Los operadores de reducción realizan la operación sobre cada uno de los elementos del
vector.
&(4‟b0101) = 0 & 1 & 0 & 1 = 1‟b0

Si la expresión es con signo (se agrega s antes de la base) el número se extiende con signo.
3‟sb1 se extiende a 3‟sb111; 3‟sb0 se extiende a 3‟sb000
Si es unsigned se extiende con ceros. 3‟b1 se extiende a 3‟sb001

El nombre de una variable puede tener componentes. En este caso se define un arreglo.
reg datos[31:0]; // define a datos como un arreglo de 32 bits.
Puede tenerse acceso individual a los bits, por ejemplo: datos[5]=1‟bz;
Notar que en la definición del arreglo los corchetes van después del nombre del arreglo.

Profesor Leopoldo Silva Bijit 19-01-2010


20 Sistemas Digitales

Una memoria es un arreglo de registros.


reg [15:0] mem16_1024 [1023:0]; //1024 palabras de 16 bits cada una.

Ejemplo A5.12. Mux con dos buses de entrada.

El esquema en base a lenguajes permite generalizaciones.


Una de las generalizaciones más comunes es cuando en lugar de tener una señal se tienen
varias con funcionalidad similar. Puede efectuarse generalizaciones relativas al ancho del bus.

El siguiente módulo modifica el del Ejemplo A5.12, cambiando las entradas y salidas, de un
alambre, por un bus de 8 señales.

// Multiplexer nivel proceso abstracto. Multiplexer 2 vías a una de 8 bits cada una.
// Cuando c=1, out=x1; y cuando c=0, out=x0

module mux21_buses (out, c, x1, x0);

output [7:0] out; // mux outputs de 8 bits


input c;
input [7:0] x1, x0; // mux inputs de 8 bits cada una

wire c;
wire [7:0] x1, x0;
reg [7:0] out;

always @(*)
if (c==1) out=x1; else out=x0;

endmodule

Debe notarse que una descripción estructural, en base a compuertas, sería muy costosa en
términos de representación. Nótese que el segmento anterior puede ser generalizado a buses de
mayor ancho.
Para esto puede emplearse una declaración de constantes:
parameter <constante>=<valor>;

El siguiente es un ejemplo de uso:


parameter ancho=16;
output [ancho-1: 0] out; //bus de 16 bits

Ejemplo A5.13. Mux con varios buses de entrada.

Puede generalizarse aún más el concepto de multiplexor, cambiando el número de vías de


entrada. Se diseña un mux de 4 buses de entrada con 8 bits cada uno.

// Multiplexer nivel proceso abstracto. 4-1 multiplexer, buses de 8 bits.

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 5. Uso de verilog 21
// Cuando c=3, out=x3; cuando c=2, out=x2; cuando c=1, out=x1; cuando c=0, out=x0
module mux4_1 (out, c, x3, x2, x1, x0);
output [7:0] out; // mux output
input [1:0] c;
input [7:0] x3, x2, x1, x0; // mux inputs

wire [1:0] c;
wire [7:0] x3, x2, x1, x0;
reg [7:0] out;

always @(*)
if (c==3) out=x3;
else if (c==2) out=x2;
else if (c==1) out =x1;
else out= x0;
endmodule

Cada vez más la descripción de la funcionalidad o del comportamiento se va alejando de las


tradicionales representaciones de sistemas digitales mediante compuertas o esquemáticos.
Adicionalmente puede mencionarse que la entrada de diseños en base a una biblioteca de
esquemáticos de componentes tiene sus limitaciones. Es posible que vengan bloques de mux,
prediseñados de un ancho fijo; sin embargo si un diseñador requiere uno de otro ancho, tendrá
dificultades; en diseños mediante lenguajes, para cambios como los que mencionamos, sólo
basta cambiar una constante.

El proceso anterior también podría describirse mediante una sentencia switch case.

Ejemplo A5.14. Mux con operador condicional.

El siguiente es un ejemplo de uso de sentencia condicional.

module mux4to1 (input x0, x1, x2, x3, c1, c0, output out);
assign out = c1 ? (c0 ? x3 : x2) : (c0 ? x1 : x0);
endmodule
c1 c0

x3

x2
out
x1
x0

Figura A5.12. mux4to1.

Profesor Leopoldo Silva Bijit 19-01-2010


22 Sistemas Digitales
Nótese que el módulo podría haberse desarrollado mediante vectores:

module mux4to1 (X, c, out);


input [0:3] X;
input [1:0] c;
output out;
reg out;

always @(X or c)
if (c = = 0) out = X[0];
else if (c = = 1) out = X[1];
else if (c = = 2) out = X[2];
else if (c = = 3) out = X[3];

endmodule

Dibujar un esquemático, empleando como componente al mux de 4 vías a una, es una buena
manera de representar la arquitectura de un mux de 16 vías a una.
El diagrama ayuda a escribir el módulo de un mux de 16 vías a 1, en base a cinco muxes de 4
vías a una, mediante el empleo de vectores, puede escribirse:

module mux16to1 (X, C, out);


input [0:15] X;
input [3:0] C;
output out;
wire [0:3] n; //nodos

mux4to1 Mux1 (X[0:3], C[1:0], n[0]);


mux4to1 Mux2 (X[4:7], C[1:0], n[1]);
mux4to1 Mux3 (X[8:11], C[1:0], n[2]);
mux4to1 Mux4 (X[12:15], C[1:0], n[3]);
mux4to1 Mux5 (n[0:3], C[3:2], out);

endmodule

Sin embargo una representación compacta del mux de 16 a 1, mucho más simple, puede verse a
continuación.
module mux16a1 (out, c, x);
output out; // mux output de 1 bit
input [3:0] c; // 4 líneas de control
input [15:0] x; // mux input de 16 bits
wire [1:0] c;
wire [3:0] x;
wire out;

assign out=x[c];

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 5. Uso de verilog 23
endmodule

Ejemplo A5.15. ALU con operandos vectores.

// 74381 ALU
module alu(s, A, B, F);
input [2:0] s;
input [3:0] A, B;
output [3:0] F;
reg [3:0] F;

always @(s or A or B)
case (s)
0: F = 4'b0000;
1: F = B - A;
2: F = A - B;
3: F = A + B;
4: F = A ^ B;
5: F = A | B;
6: F = A & B;
7: F = 4'b1111;
endcase
endmodule

Ejemplo A5.16. Sumador completo con operandos vectores.

Empleando vectores se reduce apreciablemente la lista de argumentos en las puertas del


módulo. Por ejemplo el módulo que representa a un sumador completo de 4 bits resulta:

module fulladder4 (Cin, a, b, sum, Cout);


input carryin;
input [3:0] a, b;
output [3:0] sum;
output carryout;
wire [3:1] c;

sumadorcompleto etapa0 (Cin, a[0], b[0], sum[0], c[1]);


sumadorcompleto etapa1 (c[1], a[1], b[1], sum[1], c[2]);
sumadorcompleto etapa2 (c[2], a[2], b[2], sum[2], c[3]);
sumadorcompleto etapa3 (c[3], a[3], b[3], sum[3], Cout);

endmodule

Comparar con A5.4.

Profesor Leopoldo Silva Bijit 19-01-2010


24 Sistemas Digitales
Ejemplo A5.17. Estructuras repetitivas. Lazos for dentro de procesos.

Una de las ventajas de las descripciones mediante lenguajes, es que las estructuras que son
repetitivas pueden ser planteadas dentro de un lazo for dentro de un proceso.

module AdderBitSlice (Cin, a, b, sum, Cout);


parameter n=32; //n es una constante
input Cin;
input [n-1:0] a, b;
output [n-1:0] sum;
output Cout;

// Las señales que son escritas dentro de un procedimiento deben ser declaradas reg.
reg [n-1:0] sum;
reg Cout;
reg [n:0] c; //reservas intermódulos
integer k; //variable entera para índice de for

always @(a or b or Cin)


begin
c[0] = Cin;
for (k = 0; k < n; k = k+1)
begin
sum[k] = a[k] ^ b[k] ^ c[k];
c[k+1] = (a[k] & b[k]) | (a[k] & c[k]) | (b[k] & c[k]);
end
Cout = c[n];
end

endmodule

La compilación o la traducción a compuertas del dispositivo programable puede que de


origen a un tiempo considerable para efectuar la suma. Una de las soluciones es cambiar la
arquitectura de la propagación ondulada de la reserva por algún esquema de generación
adelantada y agrupada de las reservas. Esto también puede describirse mediante lenguajes.

Ejemplo A5.18. Descripción algorítmica, empleando operadores del lenguaje.

Empleando el operador que realiza la suma puede describirse un sumador binario en forma
muy compacta. La operación de concatenación de registros permite generar Cout correctamente.
La señal overflow considera operandos con signo.

module addern (Cin, a, b, sum, Cout, overflow);


parameter n = 32;
input Cin;
input [n-1:0] a, b;
output [n-1:0] sum;

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 5. Uso de verilog 25
output Cout, overflow;
reg [n-1:0] sum;
reg Cout, overflow;

always @(a or b or Cin)


begin
{Cout, sum} = a + b + Cin; //descripción funcional
overflow = Cout ^ a[n-1] ^ b[n-1] ^ sum[n-1];
end

endmodule

Las dos últimas columnas de la tabla de la Figura A5.13, muestran la generación de la señal
overflow, sin emplear la entrada C31. Se ilustra la señal LT (less than) para operandos con
signo.

A31 B31 C31 Co S31 Ov LT A31^B31 C0^S31


0 0 0 0 0 0 0 0 0
0 0 1 0 1 1 0 0 1
0 1 0 0 1 0 1 1 1
0 1 1 1 0 0 0 1 1
1 0 0 0 1 0 1 1 1
1 0 1 1 0 0 0 1 1
1 1 0 1 0 1 1 0 1
1 1 1 1 1 0 1 0 0
Figura A5.13.

Ejemplo A5.19. Decodificador, empleando operadores del lenguaje.

Un decodificador de 2 líneas a 4, cuyas señales se muestran en el diagrama en bloques de la


Figura A5.14, puede describirse funcionalmente según:

module dec2a4 (x, y, Enable);


input [1:0] x;
input Enable;
output [0:3] y;
reg [0:3] y;
integer k;

always @(x or Enable)


for (k = 0; k <= 3; k = k+1)
if ((x == k) && (Enable == 1))
y[k] = 1;
else
y[k] = 0;

Profesor Leopoldo Silva Bijit 19-01-2010


26 Sistemas Digitales
endmodule
x0 y0
x1 y1

y2
Enable y3

Figura A5.14.

Para la siguiente descripción jerárquica, de un decodificador de 4 líneas a 16, en base al


módulo anterior, resulta útil desarrollar la arquitectura; es decir, un esquema de las conexiones
entre los cinco bloques básicos, antes de escribir el código.

module dec4to16 (x, y, Enable);


input [3:0] x;
input Enable;
output [0:15] y;
wire [0:3] nodosenables;

dec2to4 Dec1 (x[3:2], nodosenables [0:3], Enable);


dec2to4 Dec2 (x[1:0], y[0:3], nodosenables [0]);
dec2to4 Dec3 (x[1:0], y[4:7], nodosenables [1]);
dec2to4 Dec4 (x[1:0], y[8:11], nodosenables [2]);
dec2to4 Dec5 (x[1:0], y[12:15], nodosenables [3]);

endmodule

El siguiente segmento ilustra una descripción abstracta del comportamiento de un


decodificador, el cual se considera un sistema combinacional básico. Debe notarse lo compacto
de la representación.

wire [15:0] Out;


wire [3:0] In;
assign Out = 1‟b1 << In; //decodificador 4-a-16

Ejemplo A5.19a. Generador de paridad empleando lazo for.

El siguiente módulo genera la paridad de la entrada.

`define input_width 8
module paritygen (in, par);
input [`input_width - 1:0] in;
output reg par;
integer i;

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 5. Uso de verilog 27
always @(in)
begin
par = 0;
for ( i=0; i < `input_width; i=i+1)
par = par ^ in[i];
end
endmodule

Sin embargo la siguiente descripción es más compacta y simple.


module paridad (par, in);
parameter size = 8;
input [size-1:0] in;
output par;
assign par = ^in; //calcula paridad. Operador de reducción.
endmodule

Ejemplo A5.20. Buffer de tercer estado

La Figura A5.15 muestra un buffer de tercer estado, de 8 bits.

module tristate (X, OE, Y);


parameter n = 8;
input [n-1:0] X;
input OE;
output [n-1:0] Y;
wire [n-1:0] Y;

assign Y = OE ? X : 'bz; //se rellena con n valores de alta impedancia.

endmodule
OE

X Y

Figura A5.15.

No es usual encontrar compuertas de tercer estado en FPGA.

Ejemplo A5.21. Relación entre simulación y síntesis.

El siguiente segmento ilustra una situación de síntesis no combinacional. Esto se advierte ya


que W y Z no son asignadas en cada una de las alternativas de control. Por ejemplo cuando A es
1, se cambia Z al valor de B; pero si A es 0, Z no cambia. Similar situación se tiene para W.
Esta descripción plantea que en caso de ser A igual a 0, el sistema recuerda el valor anterior de

Profesor Leopoldo Silva Bijit 19-01-2010


28 Sistemas Digitales
Z. Esta conducta no es de tipo combinacional, ya que los sistemas combinacionales no
recuerdan valores previos. En esta situación al efectuar la síntesis se emplearán latchs para las
variables Z y W.

input A, B;
output W, Z;
reg W, Z;
always @(A or B )
begin
if (A= =1) Z=B;
else W=A;
end

En el caso del ejemplo, es preferible emplear Z<=B y W<=A, para las asignaciones, de esta
forma la simulación y la síntesis darán iguales resultados.
En el proceso de simulación, del Ejemplo A5.21, se considera a Z y W como variables
combinacionales, pero en el proceso de síntesis se las considerará secuenciales.

Si el diseño es de tipo combinacional, un riesgo importante de mal emplear el lenguaje Verilog,


es no especificar una de las salidas en una “pasada” por un bloque always; en este caso se
recuerda el valor anterior. Esto implica que se agregará una salida registrada al bloque
combinacional. En caso de usar case, debe revisarse que exista una asignación, antes del case; o
que esté especificada la opción por defecto, dentro del case. En caso de usar if, asegurarse que
existe especificación else.

Otro riesgo es la interpretación literal de las condiciones. Por ejemplo: Se tienen 4 líneas en la
entrada y se desea obtener el código binario de la línea que tenga valor uno. En caso de tener
dos o más líneas activas la salida debe generar valor desconocido “x”.

module binary_encoder(i, e);


input [3:0] i;
output [1:0] e;
reg e;
always @(i)
begin
if (i[0]) e = 2‟b00;
else if (i[1]) e = 2‟b01;
else if (i[2]) e = 2‟b10;
else if (i[3]) e = 2‟b11;
else e = 2‟bxx;
end
endmodule

La síntesis lleva a una cascada de muxs, ya que las condiciones de los if, se forman con los
bits individuales.

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 5. Uso de verilog 29
2‟b00
2‟b01 1 e[1:0]
2‟b10 1
0
2‟b11 1
0
1 i[0]
0
2‟bxx i[1]
0
i[2]
i[3]

Figura A5.15a.

Mejores resultados se obtienen generando condiciones con evaluación “en paralelo” de las
cuatro entradas.

module binary_encoder(i, e);


input [3:0] i;
output [1:0] e;
reg e;
always @(i)
begin
if (i == 4‟b0001) e = 2‟b00;
else if (i == 4‟b0010) e = 2‟b01;
else if (i == 4‟b0100) e = 2‟b10;
else if (i == 4‟b1000) e = 2‟b11;
else e = 2‟bxx;
end
endmodule

Lo que debería llevar a un diseño combinacional de menor costo. En la Figura A5.15b, se


indican dos diseños alternativos, que emplean eficientemente las condiciones superfluas.

i2 i1
e1 e1
i3 i0

i1 i2
e0 e0
i3 i0

Figura A5.15b.

En algunos casos es conveniente utilizar alguna herramienta de minimización, para asegurar


que el proceso de síntesis sea eficiente.

El siguiente código minimizado por espresso (ver Apéndice 3, sobre Uso de espresso),
permite obtener los diseños de la Figura A5.15b.
.i 4

Profesor Leopoldo Silva Bijit 19-01-2010


30 Sistemas Digitales
.o 2
.ilb i3 i2 i1 i0
.ob e1 e0
0001 00
0010 01
0100 10
1000 11
0000 --
0011 --
0101 --
0110 --
0111 --
1001 --
1010 --
1011 --
1100 --
1101 --
1110 --
1111 --
.e
En este caso también podría haberse realizado la minimización, empleando un mapa de
Karnaugh.
La descripción mediante compuertas asegura la síntesis eficiente.

Ejemplo A5.22. Interconexión de módulos y descripciones del comportamiento.

En grandes diseños, la modularidad es esencial. Habiendo sido simulados y verificados los


módulos componentes, la interconexión de las instancias de los módulos, resulta simple.

Se desea implementar una unidad aritmética con las siguientes funcionalidades:

F2 F1 F0 Función
0 0 0 A+B
0 0 1 A+1
0 1 0 A-B
0 1 1 A-1
1 0 x A*B
Figura A5.15c.

Donde A y B son operandos de 32 bits, el resultado se deja en R, también de 32 bits. En el


caso de la multiplicación se consideran sólo los 16 bits menos significativos de los dos
operandos, de este modo el producto será también de 32 bits.

Una implementación directa, de la especificación:

module alu(a, b, f, out);

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 5. Uso de verilog 31
input [31:0] a, b;
input [2:0] sel;
output [31:0] out;
reg [31:0] out;
always @ (a or b or f)
begin
case (f)
3‟b000: out = a + b;
3‟b001: out = a + 1;
3‟b010: out = a - b;
3‟b011: out = a - 1;
3‟b10x: out = a[15:0]*[15:0];
default: out = 32‟bx;
endcase
end
endmodule

El siguiente diagrama RTL, ilustra una solución posible, quizás no la de menor costo, pero
directamente basada en la descripción abstracta anterior.
A B

32‟d1 32‟d1
F[0] 0 1 F[0] 0 1 15
15

+ - *

F[2:1] 00 01 10

Figura A5.15d.

En este diagrama se han utilizado los siguientes módulos:


Dos mux de dos entradas de 32 bits cada una y con una salida de 32 bits.
Un mux de tres entradas de 32 bits cada una y con una salida de 32 bits.
Un sumador, y un restador con operandos de 32 bits.
Un multiplicador con operandos de 16 bits, y producto de 32 bits.

Basados en la arquitectura de la Figura A5.15d, se procede al diseño de los módulos:

module mux32two(i0, i1, sel, out);

Profesor Leopoldo Silva Bijit 19-01-2010


32 Sistemas Digitales
input [31:0] i0, i1;
input sel;
output [31:0] out;
assign out = sel ? i1 : i0;
endmodule

module mux32three(i0, i1, i2, sel, out);


input [31:0] i0, i1, i2;
input [1:0] sel;
output [31:0] out;
reg [31:0] out;
always @ (i0 or i1 or i2 or sel)
begin
case (sel)
2‟b00: out = i0;
2‟b01: out = i1;
2‟b10: out = i2;
default: out = 32‟bx;
endcase
end
endmodule

module add32(i0,i1,sum);
input [31:0] i0,i1;
output [31:0] sum;
assign sum = i0 + i1; //descripción abstracta de comportamiento
endmodule

module sub32(i0,i1,diff);
input [31:0] i0,i1;
output [31:0] diff;
assign diff = i0 - i1;
endmodule

module mul16(i0, i1, prod);


input [15:0] i0, i1;
output [31:0] prod;
// en caso de que el hardware tenga unidades de multiplicación entera de 16 bits.
assign prod = i0 * i1;
endmodule

Finalmente el módulo que implementa la unidad aritmética, empleando submódulos:

module alu(a, b, f, r);


input [31:0] a, b;
input [2:0] f;
output [31:0] r;

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 5. Uso de verilog 33
wire [31:0] addmux_out, submux_out;
wire [31:0] add_out, sub_out, mul_out;
mux32two adder_mux (b, 32'd1, f[0], addmux_out);
mux32two sub_mux (b, 32'd1, f[0], submux_out);
add32 mod_adder(a, addmux_out, add_out);
sub32 mod_subtracter(a, submux_out, sub_out);
mul16 mod_multiplier(a[15:0], b[15:0], mul_out);
mux32three output_mux(add_out, sub_out, mul_out, f[2:1], r);
endmodule

Debe notarse el orden de los argumentos en las instancias de los módulos.

Ejemplo A5.23. Módulos con operadores relacionales.

Se emplean descripciones de comportamiento.


module GeneraCondicion(gt, A, B);
parameter n=4;
output gt;
input [n-1:0] A, B;
assign gt = (A > B);
endmodule

module ObtieneElMayor (mayor, A, B);


parameter n=4;
output [n-1:0] mayor;
input [n-1:0] A, B;
assign mayor = (A > B) ? A : B;
endmodule

Ejemplo A5.24. Módulos con sentencias case.

Una forma de estructurar acciones de acuerdo a los valores que toma una expresión es la
sentencia case. A diferencia con el lenguaje C, las sentencias break son implícitas; si se
encuentra un valor de entre los casos igual al valor de la expresión, se realiza la acción asociada,
y termina la “pasada” por el case.

Permite la representación tabular de operaciones mutuamente excluyentes como las que ocurren
en máquinas de estados finitos. Existen versiones casez y casex, pero no se recomiendan para la
síntesis.

La construcción siguiente:
case (expresión)
case_item1 : acción1;
case_item2 : acción 2;
case_item3 : acción 3;
case_item4 : acción 4;
default : acción_por_defecto;

Profesor Leopoldo Silva Bijit 19-01-2010


34 Sistemas Digitales
endcase

es equivalente a la desarrollada con if then else anidados.

if (expresión === case_item1) acción 1;


else if (expresión === case_item2) acción 2;
else if (expresión === case_item3) acción 3;
else if (expresión === case_item4) acción 4;
else acción_por_defecto;

La expresión y los valores de los ítems pueden ser cualquier expresión de tipo wire o reg. En
general la expresión se evalúa a un valor en bits, el cual es comparado con los especificados
enlos casos. No conviene emplear enteros para los valores de los casos, se recomienda
especificar los bits de los valores. La expresión puede ser una constante, por ejemplo: 1‟b1.

Las acciones asociadas pueden ser compuestas, en este caso deben estar entre un begin y un end.
La acción por defecto se realiza si el valor de la expresión es diferente de los casos
especificados; ésta no es necesaria si los valores de los casos cubren todos los posibles.

Si todos los posibles valores de la expresión sintonizan con a lo menos un valor de los casos o
con el caso por defecto siempre que en éste se asignen todas las salidas, se denomina un caso
completo. Si no se especifica un caso en forma completa, la síntesis empleará latchs. Esto
último no es deseable en la descripción de situaciones combinacionales.

En el siguiente segmento, falta la especificación para el valor 2‟b11. Cuando la expresión


tenga este valor, el proceso no cambia el valor de y; es decir recuerda el valor anterior, y esto
implica un latch para memorizar el valor anterior.

wire [1:0] sel;


reg y;
always @(*)
case (sel)
2‟b00 : y = a; //casos con valores binarios
2‟b01 : y = b;
2‟b10 : y = c;
endcase

Si los valores de los casos son mutuamente excluyentes se tendrá que la expresión sólo puede
tomar uno de los valores asociados a los casos. Se dice que es un caso paralelo; una entre varias
vías posibles.

Si el estado actual puede ser S0, S1, S2, S3, el siguiente segmento que genera la salida asociada
al estado, sintetizará con un latch la salida z, ya que el segmento establece que si el estado actual
es S3, el sistema recuerda el valor anterior de z.

always @(EstadoActual)
case (EstadoActual)

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 5. Uso de verilog 35
S0, S2: z=0; //representación de la tabla de salida.
S1: z=4;
end

A5.7 Sistemas secuenciales.

Ejemplo A5.25. Latch transparente. (D gated latch)

La Figura A5.17 muestra las formas de ondas de un latch transparente, su principal


característica, es que desde el canto de subida del reloj se copia la entrada hacia la salida (este es
el modo transparente); y cuando ocurre el canto de bajada del reloj el flip-flop la salida queda
capturada.
Un esquemático basado en compuertas, se muestra en la Figura A5.16.
D
clk
S
Q

P
R

Figura A5.16.

Un módulo que describe la estructura usando compuertas, es el siguiente:

//latch con compuertas.


module latchc(input D, clk, output Q);
wire P, S, R;

and #1 (S, D, clk);


not #1 (P, clk);
and #1 (R,P,Q);
or #2 (Q, S, R); //retardo mayor es necesario para correcta simulación
endmodule

Para simular correctamente circuitos con compuertas realimentadas, es necesario definirles el


retardo asociado a cada una de ellas.

La Figura A5.17, describe funcionalmente el latch transparente, empleando un multiplexor.

//latch proceso.
module latchp(input D, clk, output Q);
reg Q;
always @(D or clk)
if (clk==1) Q = D;
else Q = Q;

Profesor Leopoldo Silva Bijit 19-01-2010


36 Sistemas Digitales
endmodule
D
1
Q
0

clk
Figura A5.17.

Note que las asignaciones son bloqueantes, ya que se está representando un sistema cuya
salida puede cambiar entre cantos del reloj.

No importando la arquitectura, un símbolo lógico del latch transparente se muestra en la


Figura A5.18.

D Q

clk

Figura A5.18.

La tabla característica del latch, que muestra el próximo estado en función de las entradas, se
muestra en la Figura A5.19.
clk D Q(k+1)
0 x Q(k)
1 0 0
1 1 1
Figura A5.19.

La Figura A5.20, muestra diferentes casos de secuencias de las entradas D y clk. Cuando el
reloj tiene un canto de subida se deja pasar la entrada hacia la salida, cuando el reloj está bajo
los cambios de la entrada no afectan al latch. Si ocurren cambios de la entrada con el reloj en
alto, éstos son considerados.
Note en el intervalo t3, la caída de Q cuando baja D. También debe advertirse que en el
intervalo t4, estando el reloj bajo, un pulso en D no alcanza a ser registrado por el latch. Luego
de t4, estando el reloj alto, un canto de subida de D es capturado por el latch.

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 5. Uso de verilog 37

t1 t2 t3 t4
Clk

Figura A5.20.

El siguiente módulo genera estímulos y despliega los resultados al ser aplicados los
estímulos de la Figura A5.20 a las implementaciones del latch transparente basadas en
compuertas y en un mux.

module testlatch(input Q, output clk, D);

reg clk, D;
initial //proceso que permite grabar en archivo las formas de ondas.
begin
$dumpfile("latcht.vcd");
$dumpvars(0, $time, clk, D, Q);
end

initial //proceso que monitorea los cambios.


begin
$monitor("clk=%b, D=%b, Q=%b t=%d", clk, D, Q, $time);
clk=0; D=1; //D=1 para iniciar latch con compuertas.
// clk=0; D=0; //D=0 para iniciar latch basado en mux.
#1 clk=1;
#1 clk=0;
#1 D=0; //hasta aquí son inicializaciones para simulación.
#10 D=1;
#10 clk=1;
#20 clk=0;
#10 D=0;
#20 clk=1;
#20 clk=0;
#10 D=1;
#20 clk=1;
#10 D=0; //efectúa cambio con reloj alto.
#10 clk=1;
#20 clk=0;
#10 D=1;
#10 D=0;
#10 clk=1;
#10 D=1;
#10 clk=0;

Profesor Leopoldo Silva Bijit 19-01-2010


38 Sistemas Digitales
#20 D=0;
#10 $finish;
end
endmodule

module BancoDePrueba;
wire D, clk, Q, co;
latchc l1(D, clk, Q);
// latchp l1(D, clk, Q);
testlatch t1(Q, clk, D);
endmodule

Para el latch basado en compuertas, puede obtenerse la siguiente salida, empleando un


simulador verilog, de los varios disponibles como software libre en la red.
clk=0, D=1, Q=x t= 0 //Al inicio Q es desconocido
clk=1, D=1, Q=x t= 1
clk=0, D=1, Q=x t= 2
clk=0, D=0, Q=x t= 3 //Aquí puede considerarse iniciada la simulación.
clk=0, D=0, Q=0 t= 4
clk=0, D=0, Q=0 t= 5
clk=0, D=1, Q=0 t= 13
clk=1, D=1, Q=0 t= 23
clk=1, D=1, Q=1 t= 26
clk=0, D=1, Q=1 t= 43
clk=0, D=1, Q=1 t= 46
clk=0, D=1, Q=1 t= 47
clk=0, D=0, Q=1 t= 53
clk=1, D=0, Q=1 t= 73
clk=1, D=0, Q=0 t= 77
clk=0, D=0, Q=0 t= 93
clk=0, D=1, Q=0 t= 103
clk=1, D=1, Q=0 t= 123
clk=1, D=1, Q=1 t= 126
clk=1, D=0, Q=1 t= 133
clk=1, D=0, Q=0 t= 136
clk=0, D=0, Q=0 t= 163
clk=0, D=1, Q=0 t= 173
clk=0, D=0, Q=0 t= 183
clk=1, D=0, Q=0 t= 193
clk=1, D=1, Q=0 t= 203
clk=1, D=1, Q=1 t= 206
clk=0, D=1, Q=1 t= 213
clk=0, D=1, Q=1 t= 216
clk=0, D=1, Q=1 t= 217
clk=0, D=0, Q=1 t= 233

Figura A5.21.

Para el basado en mux, puede obtenerse una visualización de las formas de ondas, a partir de
un archivo en formato estándar vcd; existen aplicaciones de software libre para visualizar estos
archivos. Ver referencias.

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 5. Uso de verilog 39

Figura A5.22.

En diseños complejos en dispositivos programables, no suelen emplearse latchs, ya que


introducen señales no sincrónicas debido al modo transparente. Si se emplean FPGAs, la
abundancia de flip-flops hace innecesario el uso de latchs.

Ejemplo A5.26. Flip-flop D. Disparado por canto de subida.

La Figura A5.23 muestra un flip-flop D disparado por cantos de subida del reloj. El módulo
en Verilog, emplea la condición posedge para definir el evento canto de subida. La asignación a
Q es no bloqueante.
El nombre de la función posedge recuerda positive edge (canto de subida, en español).

module flipflop (input D, clk, output Q);


reg Q;
always @(posedge clk)
Q <= D;
endmodule

D Q

Q‟
Clk

Figura A5.23.

La Figura A5.24 muestra el funcionamiento, ahora la señal Q permanece constante entre


ciclos de reloj, notar la diferencia con la salida del latch de la Figura A5.20. La salida registra el
valor de la entrada en el momento de ocurrir el canto. En un dispositivo real es preciso que no
ocurran cambios de la entrada un intervalo antes del canto de subida del reloj (set-up); y un
intervalo después del canto (hold).

Profesor Leopoldo Silva Bijit 19-01-2010


40 Sistemas Digitales

t1 t2 t3
Clk

Figura A5.24.

Ejemplo A5.27. Flip-flop D. Disparado por canto de bajada.

En la descripción Verilog, basta cambiar el evento a negedge. En el símbolo lógico, de la


Figura A5.25, se coloca un círculo que simboliza un inversor en la entrada del reloj.

module flipflop (input D, clk, output Q);


reg Q;
always @(negedge clk)
Q <= D;
endmodule

D Q

Q‟
Clk

Figura A5.25.

Ejemplo A5.28. Flip-flop T.

T Q(k+1)
0 Q(k)
1 Q‟(k)
Figura A5.26.

module tff(input T, clk, output Q);


reg q;
always @ (posedge clk)
if(T) Q<=~Q; else Q<= Q;
endmodule

Los sistemas secuenciales sincronizados por cantos se caracterizan por tener procesos always
cuya lista de sensibilidad contiene negedge o posedge. Notar además, que si una de las señales
de la lista contiene posedge o negedge, el resto de las señales de la lista también debe tenerlas.

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 5. Uso de verilog 41
reset

T Q

Q‟
Clk

Figura A5.27.

Ejemplo A5.29. Controles de reset asincrónicos y sincrónicos.

Los siguientes segmentos ilustran un flip-flop D, con controles de reset sincrónico y


asincrónico.

Si en el proceso (always) que describe al flip-flop D, la señal reset no está en la lista de


sensibilidad, sólo se activarán los cambios de la salida cuando se produzca un canto de subida
del reloj. Entonces el reset se producirá en un canto del reloj, por esto se dice que es sincrónico.

module flipflop (input D, clk, reset, output Q);


reg Q;
always @(posedge clk)
if (reset) Q <= 0; //reset sincrónico
else Q <= D;
endmodule
reset

D Q

Q‟
Clk

Figura A5.28.

El siguiente proceso produce el reset asincrónico del flip-flop D. Ya que se producirá el


cambio de estado siempre que cambie la señal reset, que puede ser asincrónica con el reloj.

module flipflop (input D, clk, reset, output Q);


reg Q;
always @(posedge clk or posedge reset)
if (reset) Q = 0; //reset asincrónico
else Q <= D;
endmodule

Profesor Leopoldo Silva Bijit 19-01-2010


42 Sistemas Digitales
El reset asincrónico se asigna en forma bloqueante, de esta manera la salida irá a cero
apenas reset suba, incluso entre cantos de reloj.

En el ejemplo se emplean asignaciones bloqueantes y nobloqueantes a una misma señal; sin


embargo no es recomendable mezclarlas en el mismo proceso o bloque always.

Ejemplo A5.30. Flip-flop D con habilitamiento de reloj.

input D, clk, enable ;


reg Q ;

always @ (posedge clk)


if (enable) Q < = D;

Los flip-flops de los bloques xilinx tienen habilitamiento del reloj.

Ejemplo A5.31. Registro n bits.

La descripción de la arquitectura de un registro con habilitación de escritura, teniendo como


parámetro el ancho del registro, puede escribirse:

module registro (R, WE, Clk, Q);


parameter n = 8;
input [n-1:0] R;
input WE, Clk;
output [n-1:0] Q;
reg [n-1:0] Q;

always @(posedge Clk)


if (WE) Q <= R;

endmodule

Un diagrama lógico del registro se muestra en la Figura A5.29.


WE

R
D Q

Clk

Figura A5.29.

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 5. Uso de verilog 43
Ejemplo A5.32. Carreras en simulación.

No es recomendable efectuar asignaciones a la misma variable en dos procesos diferentes,


con el fin de evitar carreras.

Como se define que en la simulación que realiza Verilog, los procesos pueden ser itinerados
en cualquier orden. Luego de un pulso de reset, las variables y1 e y2 podrían estar ambas en
cero o ambas en uno. Situación que define una carrera.
reg y1, y2;

always @(posedge clk or posedge reset)


if (reset) y1 = 0; // reset
else y1 = y2;

always @(posedge clk or posedge reset)


if (reset) y2 = 1; // preset
else y2 = y1;

Si las asignaciones, dentro de los procesos, se cambian a nobloqueantes, luego de un reset,


y1 quedará en cero e y2 en 1.

Ejemplo A5.33. Registro de desplazamiento.

La descripción de la arquitectura de un registro de desplazamiento lógico hacia la derecha de


4 bits, con la función adicional de carga paralela, puede plantearse:

module shift4 (C, Load, x, Clk, Q);


input [3:0] C; //carga paralela
input Load, x, Clk;
output [3:0] Q;
reg [3:0] Q;
always @(posedge Clk)
if (Load) Q <= C; //carga sincrónica
else
begin
Q[0] <= Q[1]; Q[1] <= Q[2];
Q[2] <= Q[3]; Q[3] <= x;
end
endmodule

Debido a que las asignaciones son nobloqueantes, no importa el orden en que están escritos
los corrimientos individuales de los bits.

Profesor Leopoldo Silva Bijit 19-01-2010


44 Sistemas Digitales
Load

Q
x

Clk

Figura A5.30.

El esquema anterior permite generalizar a un registro de ancho n, empleando una sentencia


for.

//Registro de desplazamiento ancho n.


module shiftn (C, Load, x, Clk, Q);
parameter n = 16;
input [n-1:0] C;
input Load, x, Clk;
output [n-1:0] Q;
reg [n-1:0] Q;
integer k;

always @(posedge Clk)


if (Load) Q <= C;
else
begin
for (k = 0; k < n-1; k = k+1) Q[k] <= Q[k+1];
Q[n-1] <= x;
end
endmodule

Sin embargo la notación preferida, por ser simple y compacta, para describir registros de
desplazamiento es una descripción del corrimiento a la derecha, empleando la operación
concatenación:
{Q, Q[0]} = {x, Q};

Ejemplo A5.34. Contador ascendente con reset de lógica negativa.

Una señal de lógica negativa se considera activada por cantos de bajada. En los diagramas
lógicos suele denominarse en forma complementada, y su lugar de entrada al bloque pasa por un
pequeño círculo. En la Figura A5.31 se muestra la señal con nombre complementado.

module upcounter (input reset, Clk, Enable, output [3:0] Q);


reg [3:0] Q;

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 5. Uso de verilog 45

always @(negedge reset or posedge Clk)


if (!reset) Q <= 0;
else if (Enable) Q <= Q + 1;
endmodule
reset Enable

Clk

Figura A5.31.

Ejemplo A5.35. Contador con reset, carga paralela y habilitación para contar.

La Figura A5.32 muestra el contador con sus funciones.

module upcount (C, reset, Clock, Enable, Load, Q);


input [3:0] C;
input reset, Clk, Enable, Load;
output [3:0] Q;
reg [3:0] Q;

always @(posedge reset or posedge Clk)


if (!reset) Q <= 0;
else if (Load)
Q <= C;
else if (Enable)
Q <= Q + 1;
endmodule
Load
reset Enable

C
Q

Clk

Figura A5.32.

Profesor Leopoldo Silva Bijit 19-01-2010


46 Sistemas Digitales
Ejemplo A5.37. Divisor de frecuencia por n.

En un contador interno Cnt va contando, desde 0 hasta (Divisor-1) veces el reloj de alta
frecuencia clk. Cuando cuenta el pulso Divisor mantiene durante un pulso, del reloj de alta
frecuencia, un uno en el reloj de baja frecuencia; en el resto de las cuentas de cnt el reloj de baja
frecuencia permanece en cero.

module divisor(input Clk, reset, output Clkd);


parameter Divisor = 4;
parameter Bitcnt = 1; // 2 elevado a (Bitcnt+1) debe ser >= Divisor
reg Clkd;
reg [Bitcnt:0] Cnt; //debe poder contar desde 1 a Divisor.

always @ (posedge Clk or negedge reset)


if(!reset) begin Clkd <= 0; Cnt <= 0; end
else if (Cnt == Divisor-1) begin Clkd <= 1; Cnt <=0; end
else begin Clkd <= 0; Cnt <= Cnt+1; end

endmodule

module testdivisor(input clkd, output clk, reset);


reg clk, reset;
integer k;
initial
begin
$dumpfile("divisor.vcd");
$dumpvars(0, $time, reset, clk, clkd);
end

initial begin: DetenerSimulacion


// Detiene la simulación después de 100 unidades de tiempo de simulación.
//Es necesaria si se emplea simulador de reloj
#100 $stop;
end

initial
begin
$monitor("reset=%b, clk=%b, clkd=%b t=%d", reset, clk, clkd, $time);
reset=0; clk=0;
#5 reset=1;
//alternativa para generar una cantidad finita de pulsos de reloj.
//for(k=0;k<30;k=k+1) #10 clk<=~clk; $finish; End

always @(clk) #10 clk <=~clk; //genera infinitos pulsos


endmodule

module BancoDePrueba;

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 5. Uso de verilog 47
wire reset, clk, clkd;
divisor d1(clk, reset, clkd);
testdivisor t1(clkd, clk, reset);
endmodule

La Figura A5.33 muestra el período del reloj de baja frecuencia, se cumplen las relaciones,
con T el período del reloj de alta frecuencia.
Clk
Clkd
Divisor
Td Divisor T

Td

Figura A5.33.

Las formas de ondas fueron generadas con el archivo divisor.vcd, producido en la


simulación.

El siguiente módulo emplea una asignación bloqueante para actualizar la señal clk. Este
cambio se produce dentro del paso de simulación y no generará nuevos eventos; por lo tanto no
oscila. La construcción correcta es con una asignación nobloqueante.

module oscilador (output clk);


reg clk;
initial #10 clk = 0;
always @(clk) #10 clk = ~clk; //debe cambiarse a: clk <= ~clk;
endmodule

Ejemplo A5.38. Transferencias entre registros de segmentación en pipeline.

En las transferencias entre registros en secuencia, de la Figura A5.34, deben emplearse


asignaciones no bloqueantes. De este modo no importa el orden de las asignaciones y además
cada una de las asignaciones podría estar en procesos always diferentes. Con esta elección, que
refleja la naturaleza secuencial del proceso, la simulación y la síntesis dan iguales resultados.

Profesor Leopoldo Silva Bijit 19-01-2010


48 Sistemas Digitales

d q1 q2 q3
D Q D Q D Q
Clk Clk Clk
clk

Figura A5.34.

module segmentos (q3, d, clk);


output [7:0] q3;
input [7:0] d;
input clk;
reg [7:0] q3, q2, q1;
always @(negedge clk)
begin
q3 <= q2;
q2 <= q1;
q1 <= d;
end
endmodule

Ejemplo A5.39. Registro de desplazamiento con realimentaciones lineales.

Un Linear Feedback Shift-Register (LFSR) es una máquina secuencial que posee


realimentaciones. Uno de sus principales usos es en encriptación.

presetn
preset’ preset’ preset’
q0
D Q q1 Q q2
D Q D
nodo

Clk Clk Clk

clk

Figura A5.35.

module lfsr (output q2, input clk, presetn);


reg q2, q1, q0;
wire nodo;
assign nodo = q0 ^ q2;
always @(posedge clk or negedge presetn)
if (!presetn) begin q2 <= 1'b1; q1 <= 1'b1; q0 <= 1'b1; end
else begin q2 <= q1; q1 <= nodo; q0 <= q2; end
endmodule

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 5. Uso de verilog 49

Una alternativa para el cuerpo del proceso es emplear la construcción de concatenación.

always @(posedge clk or negedge presetn)


if (!presetn) {q2,q1,q0} <= 3'b111; else {q2,q1,q0} <= {q1,(q0^q2),q2};

El siguiente diseño considera un registro con carga paralela y notación vectorial.

module lfsr3(c, Load, clk, q);


input [0:2] c;
input Load, clk;
output [0:2] q;
reg [0:2] q;

always @ (posedge clk)


if(Load) q <= c; else q <= {q[2], q[0]^q[2], q[1]};
endmodule

Los siguientes módulos simulan el funcionamiento del módulo anterior.

module testlfsr(q, clk, Load, carga);


input [0:2] q;
output clk;
output Load;
output [0:2] carga;

reg clk, Load;


reg [0:2] carga;

initial
begin
$dumpfile("lfsr3.vcd");
$dumpvars(0, $time, Load,carga, clk, q);
end

initial begin: DetenerSimulacion


// Detiene la simulación después de 100 unidades de tiempo de simulación.
#400 $stop;
end

initial
begin
$monitor("Load=%b carga=%b clk=%b salida=%b t=%d", Load, carga, clk, q, $time);
Load=0; clk=0;carga=0;
#10 Load=1;
#10 carga=1;
#10 Load=0;

Profesor Leopoldo Silva Bijit 19-01-2010


50 Sistemas Digitales
#10 carga=0;
end
always @(clk) #5 clk <=~clk;
endmodule

module BancoDePrueba;
wire Load, clk;
wire [0:2] c;
wire [0:2] q;

lfsr3 lf1(c, Load, clk, q);


testlfsr t1(q, clk, Load, c);
endmodule

Se obtienen las siguientes formas de ondas:

Figura A5.36.

Ejemplo A5.40. Contador de anillo

Se realimenta un registro de desplazamiento a la izquierda, formando un anillo. Se inicia el


bit menos significativo en 1, y se lo va desplazando. Las cuentas son potencias de dos. El uso
de la operación concatenación, permite describir la arquitectura en función de n, el número de
bits del registro.

La señal reset‟, al activarse coloca en 1 el flip-flop q0, mediante la señal S (set); y en cero el
resto de los flip-flops, mediante la señal C (clear).
reset’

qn-1 C q1 C q0 S
Q D … Q D Q D

Clk Clk Clk

clk

Figura A5.37

module cntanillo(resetn, clk, Q);

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 5. Uso de verilog 51
parameter n = 8;
input resetn, clk;
output [n-1:0] Q;
reg [n-1:0] Q;
always @(posedge clk)
if (!resetn) begin Q[n-1:1] <= 0; Q[0] <= 1; end
else Q <= {{Q[n-2:0]}, {Q[n-1]}};
endmodule

Ejemplo A5.41. Contador BCD de dos cifras.

El módulo siguiente contador BCD de dos cifras, módulo 100.


Con funciones de Clear, para dejar en cero y Enable para habilitar las cuentas.
La función Clear opera sincrónica con el reloj.

module BCDcount (Clk, Clear, Enable, BCD1, BCD0);


input Clk, Clear, Enable;
output [3:0] BCD1, BCD0;
reg [3:0] BCD1, BCD0;

always @(posedge Clk)


begin
if (Clear) begin BCD1 <= 0; BCD0 <= 0; end
else
if (Enable)
if (BCD0 == 4'b1001)
begin //rebalse unidades
BCD0 <= 0;
if (BCD1 == 4'b1001) BCD1 <= 0; //rebalse decenas, módulo100.
else BCD1 <= BCD1 + 1;
end
else BCD0 <= BCD0 + 1;
end
endmodule

Ejemplo A5.42. Contador ondulado.

Se tiene el contador ondulado, de 4 bits, empleando flip-flops Ds.

Profesor Leopoldo Silva Bijit 19-01-2010


52 Sistemas Digitales

resetn

rst rst rst rst


Q0‟ Q1‟ Q2‟ Q3‟
D D D D

clk clk clk clk


clk

Figura A5.37a. Contador ondulado en base a flip-flops Ds.

La cuenta se toma de las salidas Q de cada flip-flop. Q0 es la menos significativa, la que


varía más rápido.
Al estar todos los flip-flops en cero, al inicio, las salidas Q‟ son unos; lo cual divide por dos,
la frecuencia de los diferentes relojes.

//Flip-flop D con reset asincrónico.


module dar (input reloj, clearn, d, output q, qprima);
reg q;
always @ (posedge reloj or negedge clearn)
begin
if (!clearn) q <= 1'b0; else begin # 2 q <= d; end //se agrega retardo para simulación.
end
assign qprima = ~q; //combinacional, dentro del módulo.
endmodule

Para identificar los parámetros actuales en cada instancia, se precede con un punto el
parámetro formal, y luego entre paréntesis el actual. En esta situación, no importa el orden en
que se pasen los argumentos. Esta modalidad resulta útil en sistemas con varios módulos y con
listas de varios argumentos.

module ripple_counter (input clk, resetn, output [3:0] cuenta);


wire [3:0] cuenta, cntprima;
dar bit0(.reloj(clk), .clearn(resetn), .d(cntprima[0]), .q(cuenta[0]), .qprima(cntprima[0]));
dar bit1(.reloj(cntprima[0]), .clearn(resetn), .d(cntprima[1]), .q(cuenta[1]), .qprima(cntprima[1]));
dar bit2(.reloj(cntprima[1]), .clearn(resetn), .d(cntprima[2]), .q(cuenta[2]), .qprima(cntprima[2]));
dar bit3(.reloj(cntprima[2]), .clearn(resetn), .d(cntprima[3]), .q(cuenta[3]), .qprima(cntprima[3]));
endmodule

Para similar se genera el siguiente banco de prueba:

module test (output clk, resetn, input [3:0] cuenta);


reg clk,resetn;
integer j;
initial
begin

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 5. Uso de verilog 53
$dumpfile("ripple.vcd");
$dumpvars(0, clk, resetn, cuenta);
end
initial
begin
$monitor("resetn=%bclk=%b q0=%b q1=%b q2=%b q3=%b", resetn,
clk,cuenta[0],cuenta[1],cuenta[2],cuenta[3],$time);
resetn=1;clk=0;
#5 resetn=0;
#5 resetn=1;
for (j=1;j<20;j=j+1)
begin #5 clk=~clk; #5 clk=~clk; end
#5 $finish;
end
endmodule

module BancoDePrueba;
wire clk,resetn;
wire [3:0] cuenta;
ripple_counter rc ( clk, resetn, cuenta);
test t1 (clk, resetn, cuenta);
endmodule

Se generan las formas de ondas siguientes, las que muestran la naturaleza asincrónica del contador.

Figura A5.37b. Cuentas asincrónicas.

Ejemplo A5.43. Contador 74163.

El contador MSI 74163 puede ser descrito, por el siguiente módulo. Debe notarse que se
dispone de señales clear y load de tipo sincrónicas y de lógica negativa, y que el AND de P y T
habilitan el contador. Se dispone de una salida RCO ripple carry out, que favorece la
implementación de contadores en cascada.

module contador163(Loadn, Clrn, P, T, Clk, D,


count, RCO);
input Loadn, Clrn, P, T, Clk;
input [3:0] D;
output [3:0] count;
output RCO;

Profesor Leopoldo Silva Bijit 19-01-2010


54 Sistemas Digitales
reg [3:0] Q;
always @ (posedge Clk)
begin
if (!Clrn) Q <= 4'b0000;
else if (!Loadn) Q <= D;
else if (P && T) Q <= Q + 1;
end
assign count = Q;
assign RCO = Q[3] & Q[2] & Q[1] & Q[0] & T;
endmodule

En la práctica las salidas de los diferentes flip-flops no cambian simultáneamente, esto lleva
a que el circuito combinacional que genera RCO tendrá salidas espúreas debidas a carreras en
las entradas. El módulo Verilog, podría evitar estos “glitches” sincronizando la salida RCO.

A5.8. Máquinas secuenciales de estados finitos.

Las herramientas de apoyo al diseño permiten ingresar un diagrama de estados en forma


gráfica; el cual luego es traducido a un programa Verilog.
Una alternativa es describir directamente mediante lenguajes. La situación puede plantearse
mediante dos o tres procesos.

A5.8.1. Diagramas de Moore.

Para una máquina de Moore, se tendrán tres procesos, los cuales se describen en la Figura
A5.38.
Reset’

x P1 P2 P3
z
Y y
D Q

Clk

Figura A5.38

El diagrama de estados, de la Figura A5.39, describe una máquina que cuando detecta dos o
más unos seguidos en la entrada x entrega salida z=1; en caso contrario la salida será z=0.

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 5. Uso de verilog 55
Reset
x=1

A B
z=0 z=0
x=0 x=0

x=1
x=0

C
z=1
x=1

Figura A5.39

El siguiente módulo describe el diagrama de la Figura A5.39, siguiendo el esquema de la


Figura A5.38.

//Detecta dos o más unos seguidos de la entrada x con salida z=1.


module moore (input Clk, Resetn, x, output z);
reg [1:0] y, Y;
parameter [1:0] A = 2'b00, B = 2'b01, C = 2'b10;
//Asignación de estados. Codificación binaria

// Red combinacional de próximo estado. P1


always @(x or y)
case (y)
A: if (x) Y = B; else Y = A;
B: if (x) Y = C; else Y = A;
C: if (x) Y = C; else Y = A;
default: Y = 2'bxx;
endcase
// Proceso secuencial del registro. P2
always @(negedge Resetn or posedge Clk)
if (Resetn == 0) y <= A;
else y <= Y; //estado presente<=próximo estado

// Bloque combinacional de salida. P3


assign z = (y = = C);
endmodule

La generación de estímulos en máquinas secuenciales es difícil. En casos sencillos es posible


generar todas las secuencias que recorran las diferentes opciones que da el diagrama. Existen
herramientas para generar estímulos, en forma gráfica e interactiva.
Como ejemplo se muestran algunos estímulos para revisar el funcionamiento, mediante
simulación.

Profesor Leopoldo Silva Bijit 19-01-2010


56 Sistemas Digitales

module test(output Clk, Resetn, x, input z);


reg Clk, Resetn, x;
initial
begin
$monitor("clk=%b reset=%b x=%b z=%d", Clk, Resetn, x, z, $time);
Clk=0; Resetn=1; x=0;
#10 Clk=1; Resetn=0;
#10 Clk=0; Resetn=1;

#10 Clk=0;x=1;//un pulso de reloj => tres vectores.


#10 Clk=1;x=1;//Cambios de señal con reloj bajo.
#10 Clk=0;x=1;

#10 Clk=0;x=0;//un pulso de reloj => tres vectores.


#10 Clk=1;x=0;
#10 Clk=0;x=0;

#10 Clk=0;x=1;//un pulso de reloj => tres vectores.


#10 Clk=1;x=1;
#10 Clk=0;x=1;
#10 Clk=0;x=1;//un pulso de reloj => tres vectores.
#10 Clk=1;x=1;
#10 Clk=0;x=1;

#10 Clk=0;x=0;//un pulso de reloj => tres vectores.


#10 Clk=1;x=0;
#10 Clk=0;x=0;
#10 $finish;
end
endmodule

module BancoDePrueba;
wire Clk, Resetn, x, z;
moore m1 (Clk, Resetn, x, z);
test t1 (Clk, Resetn, x, z);
endmodule

A5.8.2. Esquema de Moore con salidas registradas.

El esquema general de la Figura A5.38, tiene ciertas dificultades prácticas y es que es posible
que se produzcan perturbaciones (glitches), debidas a carreras en las entradas de la red
combinacional de salida. Esto se debe a que los tiempos de propagación, entre el canto del reloj
y el cambio de las salidas, no puede ser idéntico para los diferentes flip-flops. Una forma segura
de tener salida libre de glitches, es generar la función combinacional de salida a partir del
próximo estado, y registrar la salida. El esquema general se muestra en la Figura A5.40.

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 5. Uso de verilog 57

zs
P3
D Q
Clk

Reset’
x P1 P2
y
D Q
y(k+1) Clk

Figura A5.40

Básicamente se mueve el código asociado a P3, que calcula la salida, dentro del proceso
always P2. Adicionalmente se calculan las salidas respecto al próximo estado.

Se ilustra el ejemplo anterior, con las modificaciones para obtener salida registrada libre de
perturbaciones, debidas a las carreras ocasionadas por el cambio de estado.

//Detecta dos o más unos seguidos de la entrada x con salida z=1.


module MooreSalidaRegistrada (input Clk, Resetn, x, output zs);
reg [1:0] y, Y, zs;
parameter [1:0] A = 2'b00, B = 2'b01, C = 2'b10;
//Asignación de estados. Codificación binaria

// Red combinacional de próximo estado. P1


always @(x or y)
case (y)
A: if (x) Y = B; else Y = A;
B: if (x) Y = C; else Y = A;
C: if (x) Y = C; else Y = A;
default: Y = 2'bxx;
endcase
// Proceso secuencial del registro. P2
always @(negedge Resetn or posedge Clk)
begin
if (Resetn == 0) begin y <= A; zs<=0; end
else y <= Y; //estado presente<=próximo estado
// Salida registrada. P3
zs < = (Y = = C); //se efectúa el test con el próximo estado
end
endmodule

Profesor Leopoldo Silva Bijit 19-01-2010


58 Sistemas Digitales
A5.8.3. Diagramas de Mealy.

El programa Verilog, está basado en dos procesos, P1 es combinacional y P2 secuencial.


Note que P2 es igual al de la máquina similar de Moore.
Reset’

x P1 z P2

Y y
DQ

Clk

Figura A5.41

El diagrama de estados de Mealy, se muestra en la Figura A5.42, con un estado menos que el
similar de Moore.
Reset
x=1
z=0
A B
x=0
x=0 z=0 x=1
z=0 z=1

Figura A5.42

//Detecta dos o más unos seguidos de la entrada x con salida z=1.


module mealy (input Clk, Resetn, x, output z);
reg y, Y, z;
parameter A = 0, B = 1;
// Redes combinacionales de próximo estado y de salida. P1
always @(x or y)
case (y)
A: if (x) begin z = 0; Y = B; end
else begin z = 0; Y = A; end
B: if (x) begin z = 1; Y = B; end
else begin z = 0; Y = A; end
endcase

// Proceso registro. P2
always @(negedge Resetn or posedge Clk)

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 5. Uso de verilog 59
if (Resetn == 0) y <= A;
else y <= Y;

endmodule

Ejemplo A5.44. Máquina de Mealy.

Compara las entradas x1 e x2, si durante cuatro pulsos de reloj, se tienen secuencias iguales
se produce salida z=1; en caso contrario la salida es cero.

Para las siguientes secuencias, se tiene la salida:


x1: 0 1 1 0 1 1 1 0 0 0 1 1 0
x2: 1 1 1 0 1 0 1 0 0 0 1 1 1
z: 0 0 0 0 1 0 0 0 0 1 1 1 0

module ejemploMealy(input Clk, Resetn, x1, x2, output z);


reg z;
reg [1:0] y, Y;
wire x;
parameter [1:0] A = 2'b00, B = 2'b01, C = 2'b10, D = 2'b11; //asignación simbólica
// Define el próximo estado y el circuito combinacional de salida
assign x = x1 ^ x2;
always @(x or y)
case (y)
A: if (x) begin Y = A; z = 0; end
else begin Y = B; z = 0; end
B: if (x) begin Y = A; z = 0; end
else begin Y = C; z = 0; end
C: if (x) begin Y = A; z = 0; end
else begin Y = D; z = 0; end
D: if (x) begin Y = A; z = 0; end
else begin Y = D; z = 1; end
endcase

// Define el bloque secuencial


always @(negedge Resetn or posedge Clk)
if (Resetn == 0) y <= A;
else y <= Y;
endmodule

Ejemplo A5.45. Moore.

Árbitro de bus.
Las Figuras A5.42 y A5.43, ilustran una máquina secuencial para arbitrar un bus.

Profesor Leopoldo Silva Bijit 19-01-2010


60 Sistemas Digitales

reset
r1 g1
r2
Árbitro g2
r3 g3
clk

Figura A5.42

reset 000
r1r2r3
Idle

0xx 1xx

gnt1/g1=1
01x
x0x 1xx

gnt2/g2=1

xx0 x1x
001
gnt3/g3=1

xx1

Figura A5.43

A5.9. Memorias.

Un arreglo de registros se sintetiza en un arreglo de flip-flops o en RAM, dependiendo de


los primitivos que disponga el dispositivo.

//Memoria: 4 palabras de 16 bits.


module mem4x16(addr, din, dout, write, clk);
input [1:0] addr;
input [15:0] din;
input write, clk;
output [15:0] dout;
reg [15:0] mem[1:0]; // 4 x 16 bits
wire [15:0] dout;
assign dout = mem[addr]; //lectura asincrónica
always @ (posedge clk)
if (write == 1'b1) mem[addr] <= din;
endmodule

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 5. Uso de verilog 61
A5.9.1. Accesos a RAM
Puede emplearse doble indexación.
reg [31:0] mem [0:1023]; // 1Kx32 RAM
wire [5:0] opcode;
wire [9:0] addr;
assign opcode = mem[addr][31:26] // selecciona un elemento del arreglo
// y de éste los primeros 6 bits

La última versión de Verilog (2001), permite seleccionar cualquier elemento, bit o parte de
cualquier arreglo. Los cuales pueden ser de varias dimensiones.

//Arreglo bidimensional de palabras de 32 bits.


reg [31:0] ArregloBid [0:255][0:15];

integer n, m;
wire [31:0] PalabraA = ArregloBid [n][m]; // selecciona una palabra del arreglo

wire [7:0] ByteA = ArregloBid [n][m][31:24];//selecciona un byte de una palabra del arreglo

wire Bit0 = ArregloBid [n][m][0]; // selecciona un bit de una palabra del arreglo
A5.9.2. Simular RAM.
Las tareas del sistema: $readmemb y $readmemh, leen y cargan datos desde un archivo de
texto hacia la memoria. Estas tareas pueden ser invocadas en cualquier instante dentro de la
simulación. La sintaxis del comando es:
$readmemh("<NombreArchivo>", <NombreMemoria>, <DirecciónInicial>, <DirecciónFinal>);

El archivo de texto debe contener solamente: blancos (espacios, tabs, fin de línea),
comentarios, y los datos en forma de números binarios (para readmemb) o hexadecimales (para
readmemh).

Para una RAM de 8x8, el siguiente segmento, inicia el contenido, y luego define la ram.

initial
$readmemb("contenido.out", mem, 0, 7); // inicia memoria. Lee archivo ascii
always @(posedge clk)
begin
if (write) mem[addr] <= din; // escritura sincrónica de la memoria
end
assign # 5 dout = mem[addr]; // Lectura asincrónica de la memoria.

//contenido.out formato binario


00000000
11000001
00010000
11000100

Profesor Leopoldo Silva Bijit 19-01-2010


62 Sistemas Digitales
00010001
11000110
00010000
11001010

//contenido.out formato hexadecimal, equivalente al binario anterior.


00 C1 10 C4
11 C6 10 CA
A5.9.3. Parameter para instanciar.
Se emplea parameter para asignar un valor a un nombre simbólico. Suele emplearse para
parametrizar módulos. Por ejemplo puede emplearse como valor por defecto cuando se instancia
un módulo y puede cambiarse en el momento de instanciación.

module paridad (y, in);


parameter size = 8;
input [size-1:0] in;
output y;
assign y = ^in; //calcula paridad
endmodule

module top();
reg [15:0] data;
// instancia de paridad para palabras de 16 bits.
paridad #(16) p0 (y, data); //se cambia size a 16.

Un localparam no puede ser redefinido fuera del módulo.

module paramram(d, a, wr, q);


parameter AnchoDatos = 8, AnchoDireccion = 8;
localparam palabras = (2** AnchoDireccion)-1;
input [AnchoDatos -1:0] d;
input [AnchoDireccion -1:0] a;
input wr;
output wire [AnchoDatos -1:0] q;
reg [AnchoDatos -1:0] mem [palabras:0]; // declara el arreglo de memoria
always @(wr) mem[a] = d; // write
assign q = mem[a]; //read
endmodule

Si la RAM es de mayores dimensiones se sintetiza en bloques si el dispositivo tecnológico


los posee.

module RamPuertoSimple (clk, we, addr, data_in, data_out);


parameter addr_width = 8;
parameter data_width = 8;
input clk, we;

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 5. Uso de verilog 63
input [addr_width - 1:0] addr;
input [data_width - 1:0] data_in;
output[data_width - 1:0] data_out;
reg [addr_width - 1:0] addri;
reg [data_width - 1:0] mem [(32'b1 << addr_width):0]; //2**8 =256 direcciones
always @(posedge clk)
begin
if (we) mem[addr] = data_in;
addri = addr; //actualiza dirección i
end
assign data_out = mem[addri]; //lee cuando se cambia addri
endmodule

Figura A5.43a. Bloque de RAM 256*8

A5.10. Sistemas asincrónicos.

Se dan algunos ejemplos de sistemas asincrónicos. Mostrando las capacidades del lenguaje
para describirlos y simularlos.

Ejemplo A5.46. Latch de nand.

module latchnand(q, qprima, setn, resetn);


output q, qprima;
input setn, resetn;

nand #1 G1(q, qprima, setn);


nand #1 G2 (qprima, q, resetn);

endmodule

Profesor Leopoldo Silva Bijit 19-01-2010


64 Sistemas Digitales

setn
G1 q

G2 qprima
resetn

Figura A5.44

La siguiente serie de estímulos genera diferentes recorridos. Si ambos controles pasan por
cero, no puede asegurarse el estado del latch.

initial
begin
$monitor("s=%b r=%b q=%b q'=%b", setn, resetn, q, qprima, $time);
setn=1;resetn=1;
#2 setn=0;
#2 setn=1;
#4 setn=0;
#4 setn=1;
#12 resetn=0;
#4 resetn=1;
#10 setn=0;resetn=0;
#4 setn=1;
#4 setn=0;
#4 setn=1;
#4 setn=0;
$finish;

end

module latchNAND (SN, RN, Q, QN);


input SN, RN;
output Q, QN;
wire Q, QN;
assign Q = ~(SN & QN);
assign QN = ~(RN & Q);
endmodule

Ejemplo A5.46. Descripción estructural flip-flop D, en base a nand.

//Descripción conducta flip-flop D


module dffc(output q, input clk, d);
reg q;
always @(negedge clk) q = #10 d;

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 5. Uso de verilog 65
endmodule

//Descripción estructural flip-flop D


module dffe(output q, input clk, d);
wire q, qprima, r, s , r1, s1;
nor G1 (q, qprima, r);
nor G2 (qprima, q, s);
nor G3 (s, r, clk, s1);
nor G4 (s1, s, d);
nor G5 (r, r1, clk);
nor G6 (r1, s1, r);
endmodule

r
G3
clk s

r G1
q
G4
d s1

G2
G6 s q‟
s1
r1

G5
clk r

Figura A5.45

Ejemplo A5.46. Flip-flop RS.

R
R‟ Q

Clk

Q
S‟
S

Figura A5.46

Profesor Leopoldo Silva Bijit 19-01-2010


66 Sistemas Digitales
A5.11. Síntesis.

El proceso de síntesis describe las etapas para convertir, la descripción HDL (Verilog o
VHDL) de un sistema digital, a una forma que pueda ser armada, manufacturada o descargada a
un dispositivo.
El o los elementos en los que será implementado el diseño, se denomina sistema tecnológico
objetivo (target), normalmente es de tecnología semiconductora. Se denomina ASIC
(Application-Specific Integrated Circuit), a los dispositivos que se construyen especialmente
para soportar un diseño particular. En los dispositivos programables como FPGAs y CPLDs el
diseño es descargado al chip, que suele ser reprogramable.

Una metodología que puede emplearse es efectuar una descripción del comportamiento lo
más abstracta posible, luego preparar una serie de estímulos que al ser aplicados al diseño, en
una simulación, confirmen su funcionalidad. La preparación cuidadosa de un banco de pruebas
suele ser más difícil que el diseño mismo.

Puede ser que algunas descripciones abstractas no puedan ser sintetizadas, ya que el
programa de síntesis reconoce sólo las estructuras que se le han almacenado en su inteligencia
artificial. Si por ejemplo puede reconocer: registros, sumadores, multiplexores, comparadores,
contadores, etc., es porque se ha almacenado en bibliotecas la descripción (en Verilog) de estas
unidades en términos de compuertas y flip-flops, o en términos de los bloques básicos del
dispositivo (muxs, luts).

Si a pesar de lo abstracta de la descripción, ésta puede ser sintetizada, es decir traducida a la


interconexión de compuertas y flip-flops, entonces se podría pasar a la siguiente etapa. En caso
que esto no sea posible, el diseñador debe descomponer en partes su idea original, posiblemente
mediante descripciones RTL de la arquitectura. Lo cual implica crear nuevos módulos, que
deben ser sintetizables, cada uno de los cuales debe ser sometido a simulaciones funcionales
cuidadosas.

Cuando ya se dispone de una red booleana, la siguiente etapa es minimizarla, normalmente


en área, considerando que se tendrá multifunciones y multiniveles, esto es realizado por
complejas heurísticas programadas en la herramienta CAD. Luego de esto viene el mapeo
tecnológico, en el cual las configuraciones de compuertas y flip-flops se hacen calzar con los
arreglos de multiplexores o tablas de búsqueda con que está formado el dispositivo tecnológico.
Luego es necesario colocar e interconectar los bloques (en caso de dispositivos programables).
En estas condiciones es preciso evaluar, mediante simulaciones temporales, si se cumplen los
requerimientos de velocidad de los sistemas combinacionales y los tiempos de hold y set-up de
los flip-flops. En caso de no cumplirse, deben rediseñarse partes y volver al lazo de diseño (ver
Figura A5.1).

Mientras más abstracto el diseño, más rápido es el desarrollo.

Debido a la incorporación de nuevos algoritmos y heurísticas para efectuar la síntesis en


términos de compuertas y flip-flops, debería evaluarse la necesidad de enfrentar un diseño en
términos de más bajo nivel. Una forma de ir controlando el descenso de nivel, es llevar registro
del número de elementos usados en el diseño y de los tiempos de ejecución, para cada una de las

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 5. Uso de verilog 67
arquitecturas que se vayan desarrollando; esto permitirá evaluar si es preciso confeccionar
módulos con más nivel de detalle. Conocer los subsistemas que la herramienta de ayuda al
diseño que se está empleando, sintetiza eficientemente, también permite decidir hasta donde
descender en el nivel de descripción.

Una de las ventajas de Verilog, es que, por un lado, permite describir módulos en términos
de compuertas y flip-flops, lo cual posibilita llegar a niveles muy bajos de abstracción. Por el
otro extremo, a medida que se tienen más experiencias, se han desarrollado por expertos,
algunas bibliotecas o núcleos que pueden ser reutilizados, entre ellos: memorias,
multiplicadores, microcontroladores embebidos, lo cual facilita la realización de diseños
abstractos sintetizables.

La forma más básica de programar o diseñar es mediante descripciones estructurales


explícitas. Es decir construir módulos solamente con compuertas, sin emplear procesos (always,
initial) ni asignaciones continuas (assign). Son dificultosas de escribir pero fáciles y seguras de
sintetizar.

Las descripciones estructurales implícitas, emplean los operadores al bit del lenguaje y el
comando assign para describir expresiones. Tampoco se emplean procesos. Estas descripciones
son más fáciles de escribir y también puede asegurarse que son sintetizables.
Algunos operadores más complejos (como la suma) suelen ser reconocidos por las
herramientas de síntesis; el operador condicional también es sintetizable ya que suele traducirse
a multiplexores.

En el mapeo tecnológico se traducen las compuertas genéricas (por ejemplo compuertas de 8


entradas) a los bloques lógicos del dispositivo; también algunas operaciones pueden ser
mapeadas tecnológicamente (por ejemplo: multiplicadores, registros de desplazamiento,
memorias, si existen en el dispositivo), empleando este tipo de chips suele mapearse
tecnológicamente con software que provee el mismo fabricante.

Una de las dificultades que tiene trabajar con herramientas de ayuda al diseño es que se
pierde contacto rápidamente con el problema, en la forma en que fue escrito por el diseñador.
Esto se debe a varias causas. Los compiladores suelen proceder a través de la generación de
numerosos archivos intermedios y además usan innumerables archivos auxiliares con
información; de los archivos generados para la compilación del diseño, algunos de ellos son
binarios, otros con formatos adecuados a los datos y tablas del programa y no son legibles con
facilidad por un humano; además si existen archivos de texto, los rótulos e identificadores son
elegidos por un autómata, y son de difícil asociación para el programador. Es decir,
prácticamente se pierde control del proceso de síntesis, sólo puede verse lo que la aplicación
está diseñada para mostrar: resúmenes del proceso de síntesis, esquemas, etc.

Veremos el proceso de síntesis a través de algunos ejemplos.

A5.11.1. Síntesis de descripciones estructurales implícitas.

// Módulo combinacional que genera: f= ab + ac + ad


module simple(output x, input a, b, c, d);

Profesor Leopoldo Silva Bijit 19-01-2010


68 Sistemas Digitales
assign x = a & b | a & c | a & d;
endmodule

La síntesis rtl, realizada por ISE de xilinx, produce.

Figura A5.47. Síntesis RTL de ISE

La síntesis rtl genera un módulo en base a compuertas o módulos de biblioteca. La Figura


A5.47, se describe a continuación en Verilog. Los nombres de las compuertas y los nodos
internos han sido elegidos por un ser humano, y por esto el programa resulta fácil de leer.

module simpleRtl(output x, input a, b, c, d);


wire n1, n2, n3;
and a1 (n1, a, b);
and a2 (n2, a, c);
and a3 (n3, a, d);
or o1 (x, n1, n2, n3);
endmodule

Sin embargo es posible que diferentes programas de síntesis generen implementaciones


diferentes, por ejemplo usando sólo compuertas de fan-in 2, se obtendría:

module simpleRtlFanin2(output x, input a, b, c, d);


wire n1, n2, n3, n4;
and a1 (n1, a, b);
and a2 (n2, n1, n2);
or o1 (n3, n1, n2);
and a3 (n4, a, d);
or o1 (x, n3, n4);
endmodule

Para ilustrar la rapidez con que la información detallada, de lo que se está realizando, se
vuelve cada vez más incomprensible, se muestra la misma información del programa anterior,
representada en un formato netlist xnf de xilinx (formato ya obsoleto), y generado por el
compilador icarus, mediante el comando: iverilog –o simple.xnf –t xnf simple.v

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 5. Uso de verilog 69
LCANET,6
PROG,verilog,$Name: v0_8 $,"Icarus Verilog"
PART,
SIG, a, PIN=a
SIG, b, PIN=b
SIG, c, PIN=c
SIG, d, PIN=d
SIG, x, PIN=x
SYM, _s1, AND, LIBVER=2.0.0
PIN, O, O, _s0
PIN, I0, I, a
PIN, I1, I, b
END
SYM, _s3, AND, LIBVER=2.0.0
PIN, O, O, _s2
PIN, I0, I, a
PIN, I1, I, c
END
SYM, _s5, OR, LIBVER=2.0.0
PIN, O, O, _s4
PIN, I0, I, _s0
PIN, I1, I, _s2
END
SYM, _s7, AND, LIBVER=2.0.0
PIN, O, O, _s6
PIN, I0, I, a
PIN, I1, I, d
END
SYM, _s9, OR, LIBVER=2.0.0
PIN, O, O, x
PIN, I0, I, _s4
PIN, I1, I, _s6
END
EOF

También se producen formatos netlist estandarizados, pero que son de difícil lectura para un
ser humano.

Si el dispositivo físico, en que será depositado el diseño, tiene celdas básicas or y and de
cuatro entradas, el módulo mapeado tecnológicamente y optimizado, resulta:

module simpleOptMapeado(output x, input a, b, c, d);


wire n1;
or4 o1 (n1, b, c, d, 1‟b0);
and4 a1 (x, a, n1, 1‟b1, 1‟b1);
endmodule

Esto debido a que f= ab + ac + ad, puede (y debería) ser minimizada a: f=a(c + b +d).

Profesor Leopoldo Silva Bijit 19-01-2010


70 Sistemas Digitales
Si el dispositivo sólo tiene compuertas inversoras y nor de 2 y 3 entradas, se obtendría lo
siguiente, asumiendo que el sintetizador optimiza las ecuaciones boolenas:

module simpleOptMapeadoOr(output x, input a, b, c, d);


wire n1, n2;
inv i1 (n1, a);
nor3 no1 (n2, b, c, d);
nor2 no2 (x, n1, n2);
endmodule

Si el sistema físico es una fpga, en base a LUTs de 4 entradas, basta una para implementar la
tabla de verdad de la función f de cuatro variables. El resultado de la síntesis de mapeo
tecnológico que realiza ISE de Xilinx, se muestra en la Figura A5.48.

Figura A5.48 Síntesis con LUT. Mapeo tecnológico.

La ecuación implementada en la LUT, puede escribirse en términos de las entradas, según:


Eqn= [(I0*I2) + (I0*I3) + (I0*I1)]

El código AAA8 es el patrón hexadecimal almacenado en los 16 latchs o flip-flops de la


LUT. Puede leerse el patrón o estado inicial: AAA8, en la última columna de la siguiente tabla.

I3 I2 I1 I0 O
1 1 1 1 1
1 1 1 0 0
1 1 0 1 1
1 1 0 0 0
1 0 1 1 1
1 0 1 0 0
1 0 0 1 1
1 0 0 0 0
0 1 1 1 1
0 1 1 0 0
0 1 0 1 1

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 5. Uso de verilog 71
0 1 0 0 0
0 0 1 1 1
0 0 1 0 0
0 0 0 1 0
0 0 0 0 0
Figura A5.49.

El modelo conceptual de una LUT, puede visualizarse como una ROM de 16x1.

module ROM16X1 (output O, input [3:0] addr);


parameter INIT = 16'hAAA8; //16 bits almacenados en ROM
reg [15:0] mem;
initial mem = INIT;
assign O = mem[addr];
endmodule

A5.11.2. Algunas referencias para el proceso de síntesis.

Todos los operadores que operan al bit (bitwise) son sintetizables, mediante grupos de
compuertas.
Los operadores de reducción son sintetizables, mediante compuertas que tienen salida de un
bit.
Los operadores aritméticos: +, - y * son sintetizables.

Los tipos reg y wire son sin signo a menos que se los declare con signo, mediante:
wire signed [31:0] suma;
Se realiza aritmética con signo sólo si ambos operandos son declarados con signo.

El operador aritmético para la potencia es sintetizable si la base es una constante potencia de


dos, o si el exponente es 2.
assign resultado = 8 ** exponente;
assign resultado = base ** 2;

El operador división es sintetizable si el divisor es una constante que es potencia de 2.


assign result = divisor/1024;

El operador módulo es sintetizable si el operando del lado derecho es una constante potencia
de 2.
assign result = a % 4;

Los bloques initial no son sintetizados. No se consideran los retardos en la síntesis.

La asignación continua assign se sintetiza a bloques combinacionales que alimentan


alambres (wires).

Profesor Leopoldo Silva Bijit 19-01-2010


72 Sistemas Digitales
Las asignaciones procedurales de procesos always se sintetizan a bloques combinacionales, o
mediante latchs, o flip-flops, dependiendo del contexto.
Bloques always con lista completa de eventos o que empleen @(*) producen lógica
combinacional.
Bloques always con lista de sensibilidad que emplee posedge o negedge se sintetizan
empleando flip-flops disparados por cantos.
Bloques always con lista de eventos incompleta (if sin else, case incompleto, asignaciones a
no todas las señales de la lista) se sintetizan con latchs.

No debería efectuarse asignaciones bloqueantes y no bloqueantes a una misma señal. O dos


asignaciones a la misma señal, dentro de un bloque always.

Cuando se empleen operadores aritméticos debe considerarse el ancho de los operandos de


entrada y de salida. Por ejemplo en una suma el resultado ocupa un bit adicional a los
operandos. En caso de sumas de números sin signo, el bit más significativo del resultado es la
reserva de salida.

module SumaConReserva(a, b, suma);


input [15:0] a, b;
output [16:0] suma; //incluye reserva de salida
assign suma = a + b;
endmodule

Operadores lógicos son sintetizables mediante redes combinacionales.

module LogicalAnd (a, b, c);


input [3:0] a, b;
output c;
assign c = (a == 2) && (b == 3);
endmodule

La operación también puede describirse mediante decodificadores del número 2 y del 3. Esta
forma muestra la interpretación del operador &&.
assign c = (~a[3])&(~a[2])&(a[1])&(~a[0])&(~b[3])&(~b[2])&(b[1])&(b[0]);

El operador condicional ?, implica multiplexores.

module condicional (sel, a, b, y);


input sel, a, b;
output y;
assign y = sel ? a : b;
endmodule

//mux 4 a 1, con condicionales anidados.


input s1, s0;
input i3, i2, i1, i0;
assign y = s1? (s0 ? i3: i2) : (s0 ? i1: i0);

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 5. Uso de verilog 73

El operador if-then-else, controla la ejecución de funciones combinacionales alternativas. Se


comporta de manera similar al operador condicional. Se sintetiza empleando multiplexores.

always @*
if (Control)
Z = A & B;
else
Z = A | B;

Si se utiliza un if sin un else, se sintetiza con latchs.


reg Y;
always @(sel or A)
if (sel) Y = A; //si sel=0 Y conserva su valor anterior.

A5.11.3. Formación y creación de buses.

La creación de buses se logra con asignaciones continuas con índices constantes.

reg [31:0] InstReg; // Registro de instrucción de 31 bits


wire [5:0] OpCod; // Los primeros 6 bits (los más significativos).
wire [4:0] Rs; // Especificación bus Rs con 5 bits
wire [4:0] Rt; // Especificación bus Rt con 5 bits
wire [15:0] Inm16; // Especificación bus Inm16 con 16 bits

assign OpCod = InstReg[31:26]; // El código de operación


assign Rs = InstReg[25:21];
assign Rt = InstReg[20:16];
assign Inm16 = InstReg[15:0];

La operación de concatenación permite reunir una serie de señales, o partes de un conjunto


de cables o buses, en un nuevo bus. En el ejemplo siguiente se extiende con signo el bus Inm16
de 16 bits, a uno de 32, el cual forma un operando de 32 bits, denominado Op32. La operación
extiende con signo y sin signo, de acuerdo al valor de signed.

reg [31:0] Op32;


always @(*)
if(signed) Op32 = {Inm16[15] ? 16'hffff : 16'h0, Inm16};
else Op32 = { 16'h0, Inm16 };

A5.11.4. Inferencia de flip-flops.

El procedimiento de síntesis infiere la presencia de flip-flops si encuentra bloques always


que tengan posedge o negedge en la lista de sensibilidad.
En el siguiente ejemplo, se detecta un bloque lógico combinacional y un flip-flop d.

wire a, b, clk;

Profesor Leopoldo Silva Bijit 19-01-2010


74 Sistemas Digitales
reg q;
always @(posedge clk)
q <= a & b;

a
d q
b
clk

Figura A5.50.

Si en la biblioteca de funciones se dispone de un flip-flop D, con reset sincrónico, el proceso


de síntesis podría implementar la lógica empleando la señal de reset, lo cual se muestra en la
Figura A5.51.

Figura A5.51. Síntesis ISE

También se detecta la presencia de múltiples flip-flops, cuando se emplea notación de


vectores o buses:

wire clk;
wire [1:0] d;
reg [1:0] q;
always @(posedge clk)
q <= d;
d[1] q[1]
d q

clk
clk
d[0] q[0]
d q

clk

Figura A5.52.

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 5. Uso de verilog 75
A5.11.5. Tablas de búsqueda. Look-up tables.

Una tabla de búsqueda puede ser tratada conceptualmente como una ROM.

Se analiza la descripción Verilog de una tabla de búsqueda de dos entradas.


Esto implica una ROM 4x1. Es decir cuatro direcciones, con celdas de 1 bit.

Con dirección dada por: I1, I0, el espacio podría visualizarse según:

I1I0 11 10 01 00

INIT[3] INIT[2] INIT[1] INIT[0]

Figura A5.53.

Un esquema que muestra el bus de direcciones (I1, I0) y el bus de salida (O), se muestra en
la Figura A5.54.
I1
LUT 2 O
I0

Figura A5.54.

Se emplea el parameter INIT para inicializar el contenido de la ROM. Cuando se crea una
instancia del modelo, puede iniciarse con los datos específicos.
A5.11.5.1. Modelos de simulación de LUTs.
Se analiza primero una descripción por primitivos y luego por una función equivalente.
Ambos modelos corresponden a las suministradas en las bibliotecas para simulación Verilog de
Xilinx.

`timescale 1 ps/1 ps
//2-input Look-Up-Table. Definida como primitiva
module LUT2p (output O, input I0, I1);
parameter INIT = 4'h0; //especifica 4 bits con el contenido de la LUT
wire O;
x_lut2_mux4 (O, INIT[3], INIT[2], INIT[1], INIT[0], I1, I0);// instancia primitivo
endmodule

primitive x_lut2_mux4 (output o, input d3, d2, d1, d0, s1, s0);

table
// d3 d2 d1 d0 s1 s0 : o;
? ? ? 1 0 0 : 1; //lee de la rom si están definidas las direcciones
? ? ? 0 0 0 : 0;
? ? 1 ? 0 1 : 1;

Profesor Leopoldo Silva Bijit 19-01-2010


76 Sistemas Digitales
? ? 0 ? 0 1 : 0;
? 1 ? ? 1 0 : 1;
? 0 ? ? 1 0 : 0;
1 ? ? ? 1 1 : 1;
0 ? ? ? 1 1 : 0;

? ? 0 0 0 x : 0; //si s1==0 y d0==d1 lee d0 (o d1)


? ? 1 1 0 x : 1;
0 0 ? ? 1 x : 0; //si s1==1 y d3==d2 lee d2 (o d3)
1 1 ? ? 1 x : 1;

? 0 ? 0 x 0 : 0; //s0==0 y d2==d0
? 1 ? 1 x 0 : 1;
0 ? 0 ? x 1 : 0; //s0==1 y d3==d1
1 ? 1 ? x 1 : 1;

0 0 0 0 x x : 0; //los cuatro contenidos iguales.


1 1 1 1 x x : 1;
endtable
endprimitive

La definición mediante procesos implementa funcionalidades similares a las de la


descripción del primitivo.

`timescale 100 ps / 10 ps
//2-input Look-Up-Table. Definida como función
module LUT2f (output O, input I0, I1);

parameter INIT = 4'hA; //1010 minimizada equivale a O=I0


reg O;
wire [1:0] s;

assign s = {I1, I0};

always @(s)
if ((s[1]^s[0] ==1) || (s[1]^s[0] ==0)) //si están especificadas las direcciones
O = INIT[s]; //lee la rom
else if ((INIT[0] == INIT[1]) && (INIT[2] == INIT[3]) && (INIT[0] == INIT[2]))
O = INIT[0]; //si los contenidos de las cuatro celdas son iguales
else if ((s[1] == 0) && (INIT[0] == INIT[1]))
O = INIT[0];
else if ((s[1] == 1) && (INIT[2] == INIT[3]))
O = INIT[2];
else if ((s[0] == 0) && (INIT[0] == INIT[2]))
O = INIT[0];
else if ((s[0] == 1) && (INIT[1] == INIT[3]))
O = INIT[1];

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 5. Uso de verilog 77
else
O = 1'bx;
Endmodule

Modelos de LUTs de mayores capacidades son implementadas como instancias de LUT2.


Por ejemplo una LUT 4 se construye con 4 LUT2 y 3 MUX2a1.

I1:I0 I2 I3
LUT2
15:12
1
0
LUT2
11:8
1
O
0
LUT2
7:4
1
0
LUT2
3:0

Figura A5.55. LUT 4 en base a LUTs 2 y muxs.

A5.11.5.2. Diseños en base a LUTs 4.


Si el módulo básico de una FPGA es una LUT4, se analiza cuántas de éstas se requieren para
implementar una LUT M, esto con el objetivo de tener una medida del crecimiento de empleo
de LUTs 4 para implementar funciones complejas.

Una LUT5 se construye con 2 LUT4 y 1 MUX2a1 = 25-4LUT4 + (25-4-1) MUX2a1


1 nivel de mux

Una LUT6 se construye con 2 LUT5 y 1 MUX2a1 = 4 LUT4 + 3 MUX2a1


2 niveles de muxs = 26-4LUT4+ (26-4-1) MUX2a1
Una LUT7 se construye con 2LUT6 y 1 MUX2a1 = 8 LUT4 y 7 MUX2a1
3 niveles de muxs = 27-4 LUT4+ (27-4-1) MUX2a1
Una LUT8 se construye con 2LUT7 y 1 MUX2a1 = 16 LUT4 y 15 MUX2a1
4 niveles de muxs = 28-4 LUT4+ (28-4-1) MUX2a1

Entonces una LUTM se construye con 2M-4 LUT4+ (2M-4-1) MUX2a1.


(M-4) niveles de muxs

Puede encontrarse una cota superior de este número, mediante:


2M-4 LUT4+ (2M-4-1) MUX2a1 < 2*2M-4 LUT4 = 2M-3 LUT4

Entonces el número n de LUT 4 necesarias para implementar una LUT M es:

Profesor Leopoldo Silva Bijit 19-01-2010


78 Sistemas Digitales

n 2M 3

Por otro lado, como una LUT M es una memoria de 2 M bits, pueden implementarse
M 4
22 funciones diferentes. Con una LUT4 pueden implementarse 22 216 funciones diferentes
4
de 4 variables. Con 2 LUT 4, el número de funciones es: 232 (216 )(216 ) (22 ) 2 . Entonces
puede plantearse el número necesario de LUT 4 como aquel que implementa igual o superior
número de funciones que la LUT M.
4 M
(22 ) n 22
Sacando logaritmos en base 2, en ambos lados, se obtiene:
4 M
n log 2 (22 ) log 2 (22 )
n24 log 2 (2) 2M log 2 (2)
n 2M 4

Finalmente, juntado los dos resultados, se obtiene:


2M 3
n 2M 4

Lo cual muestra un crecimiento exponencial.

En una FPGA el área dedicada a la interconexión de LUTs, es mucho mayor que el área
dedicada a las LUTs. Intentos de minimizar el área de interconexión y los retardos han
conducido a la elección de LUTs 4 como el módulo básico.
A5.11.5.3. Comparación con uso de memorias.
Una memoria estática de 64Kx1 equivale a 4K de LUTs 4, ya que cada LUT 4 almacena 16 bits.
Sin embargo, disponer de LUTs con capacidad de interconectarlas, es muchísimo más eficiente
que emplear memorias.

La capacidad de interconectar LUTs permite que la estructura de las aplicaciones sea


eficientemente mapeada tecnológicamente.

Algunos diseños de funciones que en su estructura presentan cierta regularidad muestran que es
preferible emplear LUTs que una memoria.
Ejemplo A5.47. Generador de paridad
Un generador de paridad para palabras de 16 bits, requiere usar la memoria anterior en forma
completa, ya que el bus de direcciones de 16 bits se ocupa en su totalidad. Sin embargo sólo se
requieren 5 LUTs 4 de una FPGA para implementar el mismo diseño.

El diseño en Verilog del generador de paridad para palabras de 16 bits, se implementa usando 5
LUTs 4:

module paridad (y, in);


parameter size = 16;
input [size-1:0] in;

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 5. Uso de verilog 79
output y;
assign y = ^in; //calcula paridad. Operador de reducción.
endmodule

La Figura A5.56 muestra la síntesis realizada por ISE. Mostrando 5 bloques iguales para la
implementación. Esta modularidad de la estructura se planteó antes como regularidad.

Figura A5.56.

A5.11.6. Síntesis de bloques combinacionales, basados en LUTs.

A5.11.6.1. LUT4
Una LUT 4 puede ser empleada para generar cualquier función de cuatro variables, en este
caso se comporta como una ROM 16x1. La lectura de los bits individuales se logra con un
multiplexor de 16 a 1. La Figura A5.57, muestra una arquitectura interna posible de la LUT, en
la cual los elementos de almacenamiento se muestran como latchs; esta elección implementa la
celda de memoria con menos transistores que empleando un flip-flop disparado por cantos, y no
emplea un reloj. En el proceso de configuración inicial, usando un decodificador se van
colocando en uno o en cero los diferentes latchs; los cuales mantienen sus valores, mientras se
tenga polarización aplicada, por esto se dice que se comporta como una ROM. Una vez grabada
la LUT con la tabla de verdad correspondiente, los bits individuales se leen mediante el
multiplexor que alimenta la salida.

Profesor Leopoldo Silva Bijit 19-01-2010


80 Sistemas Digitales
Bit configuración A[3:0]

Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q

S S S S S S S S S S S S S S S S

A[3:0]
O

Figura A5.57

Un esquema simplificado mostrando las entradas y la salida se ilustra en la Figura A5.58.

A3
A2 Lut4
A1
A0 O=f(A3,A2,A1,A0)

Figura A5.58

A5.11.6.2. Dos LUT4.


Función de cinco variables.
Si dentro del bloque, donde están las LUTS, se dispone de un multiplexor de dos vías a una,
puede lograrse, combinando dos LUTs como se indica en la Figura A5.59, cualquier función de
cinco entradas. Se emplea el teorema de expansión de Shannon.
A4
A3
A2 Lut4 f1
A1 0
A0 O=f(A4,A3,A2,A1,A0)

A3
A2 Lut4 f2 1 O=A4‟f1(A3,A2,A1,A0)+A4f2(A3,A2,A1,A0)
A1
A0

Figura A5.59

Mux 2 a 1 ancho 2.
La forma de ir componiendo funciones más complejas, en base a los componentes existentes
se denomina mapeo tecnológico. Por ejemplo en una LUT 4, puede programarse una función de
tres entradas: A0A2+A0‟A1, que se comporta como una LUT 3. Si se forma una tabla de verdad
con las variables ordenadas según A2A1A0, con valores binarios descendentes, los 8 bits de la
función leídos en hexadecimal forman el patrón E4 (11100100).

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 5. Uso de verilog 81

A0‟
A1

A0
A2

Figura A5.60. LUT 3, iniciada con E4.

Uniendo dos de estas estructuras se logra un multiplexor de 2 vías a 1 de 2 bits de ancho. El


diagrama RTL del mux, se ilustra a la derecha de la Figura A5.61.
c
x1[1] Lut4
x0[1] y[1]=cx0[1] + c‟x1[1]
c x1 0
2
y
x0 1 2
x1[0] Lut4 2
x0[0] y[0]=cx0[0] + c‟x1[0]
c

Figura A5.61. Mux 2 a 1, 2 bits de ancho.

module mux2a1w2 (out, c, x1, x0);


output [1:0] out; // mux output de 2 bits
input c;
input [1:0] x1, x0; // 2 mux inputs de 2 bits cada una
wire c;
wire [1:0] x1,x0;
reg [1:0] out;

always @(*)
if (c==0) out=x0; else if (c==1) out=x1;
endmodule

La expansión del ancho del bus se logra agregando tantas LUT3 (E4), como se requiera. La
estructura es repetitiva, lo que implica una regularidad en la arquitectura.
Un multiplexor de 4 a 1 ancho 1.
Empleando la configuración LUT 3 (E4) se tienen:
y1= c[0]x3 + c[0]‟x2
y0=c[0]x1 + c[0]‟x0

Y con un mux adicional de 2 vías a 1, controlado por c[1], se obtiene la ecuación del mux 4 a 1,
de ancho 1 bit:
out=c[1]( c[0]x3 + c[0]‟x2) + c[1]‟(c[0]x1 + c[0]‟x0)

Profesor Leopoldo Silva Bijit 19-01-2010


82 Sistemas Digitales
El diagrama con las interconexiones se muestra en la Figura A5.62. A la derecha se muestra
el diagrama RTL del mux 4 a 1 de ancho 1.
c[1]
c
x3 Lut4 y1
x2 1
c[0] x3 3
out
x2 2 out
x1 1
x1 Lut4 y0
0 x0 0
x0
c[0]

Figura A5.62. Mux 4 a 1, ancho de 1 bit.

module mux4a1w1 (out, c, x);


output out; // mux output de 1 bit
input c;
input [3:0] x; // 4 mux inputs de 1 bit cada una
wire c;
wire [3:0] x;
assign out=x[c];
endmodule
Funciones particulares de hasta 9 variables.
En el mejor de los casos, con dos LUTs 4 pueden lograrse algunas funciones de nueve
entradas. Esto es posible cuando la función tenga la forma que se muestra en la Figura A5.63.
A8
A7
A6 Lut4
A5 0
A4 O=A8‟f(A7,A6,A5,A4)+A8f(A3,A2,A1,A0)

A3 1
A2 Lut4
A1
A0

Figura A5.63. Funciones de 9 variables de entrada.

A5.11.6.3. Cuatro LUTs 4


Si existiese otro mux de dos vías a una, disponible en las inmediaciones de las LUTs, la
interconexión de 4 LUTS, en la configuración que se indica en la Figura A5.64, permite:
Cualquier función de seis variables (LUT6).
Algunas funciones de hasta 19 entradas.

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 5. Uso de verilog 83

Lut4

Lut4

Lut4

Lut4

Figura A5.64.

Con la misma configuración puede implementarse un multiplexor 8 a 1.


module mux8a1w1 (out, c, x);
output out; // mux output de 1 bit
input [2:0] c;
input [7:0] x; // 8 mux inputs de 1 bits cada una
wire [2:0] c;
wire [7:0] x;
assign out=x[c];
endmodule
c
3

x7 7
x6 6
x5
2 5
x4 4 out
x3 3
x2 2
x1 1
x0 0

Figura A5.65. Mux 8 a 1, ancho de 1 bit.

Un mux de dos vías a uno de 4 bits de ancho.


module mux2a1w4 (out, c, x1,x0);
output [3:0] out; // mux output de 4 bits
input c;
input [3:0] x1,x0; // 2 mux inputs de 4 bits cada una
wire c;

Profesor Leopoldo Silva Bijit 19-01-2010


84 Sistemas Digitales
wire [3:0] x1,x0;
reg [3:0] out;

always @(*)
if (c==0) out=x0; else if (c==1) out=x1;
endmodule

Las LUTs están en la configuración LUT 3, y el conjunto puede simbolizarse por el diagrama
RTL, a la derecha de la Figura A5.66.
Lut4

c
Lut4

x1 0
4
out
x0 1 4
Lut4 4

Lut4

Figura A5.66. Mux 2 a 1, 4 bits de ancho.

A5.11.6.4. 8 LUTs
Si se unen dos bloques similares al de la Figura A5.64, mediante un tercer mux, de dos vías a
una, se logran: Un mux de 16 a 1, cualquier función de 7 entradas, algunas funciones de hasta
39 entradas. Con las LUTs, sin multiplexores, se logra un mux de 2 vías a 1 de ancho 8 bits.
A5.11.6.5. 16 LUTs
Un cuarto nivel de multiplexores, permite el diseño de un multiplexor de 32 bits a 1, de
cualquier función de 8 variables, y algunas hasta de 79 entradas. Con las LUTs, sin
multiplexores, se logra un mux de 2 vías a 1 de ancho 16 bits.
A5.11.6.6. Operadores al bit.
La síntesis de operadores al bit, se realiza empleando una LUT 4 para cada pareja de los
operandos de entrada. Por ejemplo, la síntesis de: assign z = x & y; si los operandos son de n
bits requiere n LUTs 4.

La síntesis de operadores de reducción, se efectúa en niveles. La síntesis de: assign z= &x;


donde el bus x tiene más de 7 y menos de 13 bits, debería sintetizarse según:

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 5. Uso de verilog 85

Lut4

Lut4 Lut4

Lut4

Figura A5.66.a Reducción en niveles.

A5.11.6.7. Potencias.
Una potencia de dos elevada a un entero x, por ejemplo 8x, puede interpretarse como 23x. A su
vez puede implementarse como 2x2x2x. Pero 2x es (1<<x). Entonces: assign z= 8**x; se logra
con el diagrama RTL:

1 shl x shl x shl x


2 x
22x 23x

Figura A5.66.b Corrimientos a la izquierda en x bits.

Sin embargo, si x es un bus de ancho 2, el resultado estará formado por solamente un 1, en


posiciones 0, 3, 6, 9, la síntesis puede efectuarse sin necesidad de registros, en términos
solamente combinacionales.

Profesor Leopoldo Silva Bijit 19-01-2010


86 Sistemas Digitales

x 23x
0 1
1 1000
2 1000000
3 1000000000
Figura A5.66.c Posiciones de los unos en 23x.

Las posiciones con ceros se logran con conexiones a tierra. El uno en la posición cero se
obtiene con: z[0]=x[1]‟ x[0]‟. El uno en posición 3, z[3]= x[1]‟ x[0].
Y también: z[6]=x[1] x[0]‟; z[9]= x[1] x[0]. Lo anterior se puede implementar con 4 LUTs 4.

La síntesis de: assign z= 2**x; se logra con una unidad de desplazamiento a la izquierda.
Observando que el resultado z, sólo tiene un uno de acuerdo al valor de x, la síntesis puede
efectuarse en forma combinacional. Con x de ancho 4, se tiene que el bit de z que debe estar
alto se logra decodificando x. Por ejemplo: z[3]= x[3]‟x[2]‟x[1]x[0].

x 2x
0 1
1 10
2 100

15 1000000000000000
Figura A5.66.d Posiciones de los unos en 2x.

La implementación anterior requiere 16 LUTs 4, una para cada decodificador.


A5.11.6.8. División entera y corrimiento a la derecha.
Las divisiones por una potencia de dos, ya sea en la forma: assign z=x/8; o bien: assign z=x>>3;
se realizan mediante conexiones solamente. Esto debido a que implican un corrimiento a la
derecha en tres posiciones, en el ejemplo planteado.
Si x es de 5 bits, se requiere un espacio de 2 bits para z. El diseño se obtiene con z[1]=x[4], y
z[0]=x[3], y no se requieren los datos x[2:0].
A5.11.6.9. Operación módulo.
La operación módulo sólo puede sintetizarse si el segundo operando es una potencia de dos. En
este caso la implementación se logra a través de conexiones solamente.

Por ejemplo: assign z = x % 8; con x de ancho 5 bits, requiere 3 bits para el resultado z. Y no se
emplean los dos bits más significativos x[4:3]. Las conexiones: z[2]=x[2], z[1]=x[1], z[0]=x[0].
A5.11.6.10. Corrimiento a la izquierda.
Los corrimientos a la izquierda por una constante son implementados por conexiones.

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 5. Uso de verilog 87
Los corrimientos a la izquierda en una variable son implementados con lógica combinacional si
se emplea: assign z= x << y. Si x es de 5 bits e y de 4 bits, el resultado z requiere 20 bits. La
implementación ISE emplea 36 LUTs 4.
A5.11.6.11. Corrimientos aritméticos.
Se dispone de corrimientos aritméticos con los operadores >>> y <<<. Debe notarse que el
símbolo <<< es equivalente con el corrimiento lógico << a la izquierda.
A5.11.6.12. Operadores lógicos.
Antes se planteó, para operandos de largo 4, que la red combinacional:
assign c = (a == 2) && (b == 3);
También puede plantearse según:
assign c = (~a[3])&(~a[2])&(a[1])&(~a[0])&(~b[3])&(~b[2])&(b[1])&(b[0]);
Esta última relación muestra que se requieren 3 LUTs 4; dos para generar las decodificaciones,
ya que los operandos son de 4 bits, y una adicional para el &&, de las salidas de los
decodificadores.
A5.11.6.13. Salidas registradas.
Si un generador de paridad, se coloca dentro de un proceso always controlado por un reloj, la
salida combinacional se conectará a un flip-flop.

module paridad (y, in, clk);


parameter size = 16;
input [size-1:0] in;
input clk;
output y;
reg y;
always @(posedge clk)
begin
y = ^in; //salida combinacional conectada a flip-flop D.
end
endmodule

El siguiente diagrama RTL, muestra el diseño anterior.

Figura A5.66.e Salida registrada.

Profesor Leopoldo Silva Bijit 19-01-2010


88 Sistemas Digitales
A11.7. Bloques secuenciales.

A11.7.1. RAM
Si la estructura interna de la LUT está basada en flip-flops, en lugar de latchs, puede
emplearse como memoria RAM.
Una LUT 4 equivale a una RAM de 16x1. Con escritura sincrónica y lectura asincrónica. Si
se emplea el flip-flop asociado a la LUT, puede emplearse lectura sincrónica.
Un esquema que muestra una estructura posible para una LUT que funcione como RAM, se
muestra en la Figura A5.67. Se dispone de un reloj común, y cada flip-flop tiene una
habilitación de escritura (WE) que está conectada a un decodificador de las cuatro líneas de
entrada; lo cual permite escribir en uno de los flip-flops, en forma sincrónica. El dato de
entrada es común a todos los flip-flops. Las salidas de éstos están conectadas a un multiplexor
de 16 vías a una; del tal modo que se puede efectuar una lectura asincrónica (sin reloj), del bit
de la memoria direccionado por las líneas de entrada, que constituyen el bus de dirección de la
RAM.
A[3:0]

D WE WE WE WE WE WE WE WE WE WE WE WE WE WE WE WE
Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q
D D D D D D D D D D D D D D D D

clk

A[3:0]
O

Figura A5.67. RAM 16x1

Un esquema simplificado de la memoria se muestra en la Figura A5.68.


RAM 16x1
WE
D
A3 O
A2
A1
A0
clk

Figura A5.68.

Si se emplean dos LUTs como memoria RAM, pueden configurarse una RAM32x1
empleando un mux adicional; o una RAM16x2 empleándolas en paralelo.

También empleando dos LUTs, puede implementarse una RAM 16x1 con dos puertas
duales. Se escribe en ambas memorias los mismos datos; una de las RAMs es read/write, la otra
de sólo lectura controlada por la dirección adicional DPRA. Se pueden leer dos direcciones
simultáneamente, en los dos puertos de salida SPO y DPO.

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 5. Uso de verilog 89

A11.7.2. Registro de desplazamiento.


Una LUT, en base a flip-flops, puede emplearse como registro de 16 bits de desplazamiento
lógico a la derecha, con entrada y salida serial, y con salida direccionable; el reloj es común. Si
se deja fija la entrada al multiplexor, puede programarse un registro de largo variable.

Din D Q D Q D Q D Q D Q D Q D Q D Q D Q D Q D Q D Q D Q D Q D Q D Q

clk

A[3:0]
O

Figura A5.69. Registro de desplazamiento.

El siguiente código Verilog es sintetizable como un registro de desplazamiento de 16 bits.


always @ (posedge clk)
begin
srl <= {srl[14:0], Din}; //desplaza a la derecha.
end
always @(srl)
begin
Q <= srl[15]; //registra la salida.
end

El siguiente es un un modelo para simulación de un registro de desplazamiento.


`timescale 1 ps / 1 ps
module SRL16 (Q, A0, A1, A2, A3, CLK, D);
parameter INIT = 16'h0000;
output Q;
input A0, A1, A2, A3, CLK, D;
reg [15:0] data;

Profesor Leopoldo Silva Bijit 19-01-2010


90 Sistemas Digitales
assign Q = data[{A3, A2, A1, A0}]; //mux de salida

initial
begin
assign data = INIT;
while (CLK === 1'b1 || CLK===1'bX)
#10;
deassign data;
end

always @(posedge CLK)


begin
{data[15:0]} <= #100 {data[14:0], D};
end

endmodule

Un diagrama simplificado del registro anterior:


SRL 16
D
A3 O
A2
A1
A0
clk

Figura A5.70

A11.8. Síntesis de operaciones aritméticas en base a sumadores y muxs.

Se tienen dos buses de entrada de 8 bits cada uno, y se desea generar una salida cuando la
suma de los operandos de entrada sea menor que 128 decimal.

El siguiente módulo describe con precisión una operación aritmética sencilla, mostrando la
capacidad de descripción empleando lenguajes. Sin embargo el problema no es sencillo de
sintetizar con métodos de papel y lápiz, ya que se tienen 16 entradas, lo cual implica una tabla
de verdad con 65536 entradas, o mapas de Karnaugh de 16 variables.
Se ha empleado el macro `define para parametrizar el módulo. Su ventaja, en lugar de usar
parameter, es que la definición puede ser empleada en varios módulos.

`define N 7
`define MAX 255
module aritmetica(x, a, b);
input [`N:0] a, b;
output x;
assign x= a+b < 128;
endmodule

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 5. Uso de verilog 91

El desarrollar un banco de prueba, para generar estímulos, básicamente consiste en generar


todas las combinaciones posibles de las entradas; esto se logra con dos for anidados.
Puede notarse que el diseño del módulo test es muy similar a un programa escrito en C.
Como el programa debe generar datos, posiblemente en la pantalla con fines de depuración y
también en archivos para generar formas de ondas, gran parte del código es para lograr este
objetivo.
Es en estos programas que se debe usar comandos que generen eventos, para que la
simulación pueda ir avanzando.

module test(a, b, result);


output [`N:0] a, b;
input result;
reg [`N:0] a, b;
integer j, k;
integer errores, vectores;

initial
begin $dumpfile("mul.vcd"); $dumpvars(0,a,b,result); end

initial
begin
//$monitor("a=%d b=%d result=%b", a, b, result, $time); //para depuración
a=0; b=0;
errores=0; vectores=0;
for(j=0;j<`MAX;j=j+1)
begin
#10 a<=j;
for(k=0;k<`MAX;k=k+1)
begin
#10 b<=k;
vectores=vectores+1;
if(result!=((a+b)<128) )
begin
errores=errores+1;
$display("Error: a=%d b=%d result=%d Correcto=%d", a, b, result,(a+b)<128);
end
end
end

$display("Se probaron %d vectores. Errores=%d", vectores, errores);


#10 $finish;
end

endmodule

module BancoDePrueba;

Profesor Leopoldo Silva Bijit 19-01-2010


92 Sistemas Digitales
wire [`N:0] a, b;
wire x;
aritmetica a1 (x, a, b);
test t1 (a, b, x); //las salidas de test alimentan al módulo aritmético.
endmodule
Debe notarse que los módulos para la prueba tienen bastantes más líneas que el módulo que
se desea probar.

Con la ayuda de este test, se visualiza que hay problemas con el diseño, ya que se producen
demasiados errores. Si se analizan se verá que la suma se está realizando en 8 bits, de este modo
si los operandos son mayores que 128, se tendrá rebalse del sumador. Este puede corregirse si
se especifica un sumador que entregue el resultado en 9 bis, de esta manera la suma máxima:
255+255=510 no produce rebalse; es decir el máximo valor de la suma se puede representar en
9 bits, ya que 510= 1‟b111111110. Esto asumiendo números sin signo.
Nos aseguramos que la suma se efectúe en 9 bits, definiendo el bus temp, esto implica
cambios en el módulo:

module aritmetica(x, a, b);


input [`N:0] a, b;
output x;
wire [9:0] temp;
assign temp=a+b; //el resultado de la suma se calcula con 9 bits
assign x= temp < 128;
endmodule

La herramienta de síntesis podría haber reconocido lo anterior, y emplear dos módulos de sus
bibliotecas: un sumador de 9 bits, y un circuito comparador slt (por set less than) que genere la
señal de salida.

module aritmeticaSint(x, a,b);


input [`N:0] a, b;
output x;
wire [9:0] temp;
sumador s1 (temp, a, b); //operandos de 8 bits, suma con reserva de salida.
slt sl1 (x, temp, 9‟d128); //operandos de 9 bits
endmodule

También este camino podría seguir un diseñador, permitiendo descomponer el diseño, en dos
módulos más simples. Según muestra el esquemático de la Figura A5.71.

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 5. Uso de verilog 93
a b
8 8

128
9 temp 9

slt
1 x

Figura A5.71.

Ahora deben desarrollarse dos nuevos módulos, los cuales pueden simularse por separado
hasta verificar su funcionalidad. El sumador es posible que sea mejor sintetizado por la
herramienta CAD, ya que los sumadores son un recurso fundamental en sistemas digitales, y se
ha trabajado suficiente es su desarrollo para optimizar la velocidad de éstos.

El comparador también debe estar en las bibliotecas del sintetizador; pero podría ser bastante
más económico en espacio, el realizarlo como un módulo combinacional, ya que en este caso
sólo se tienen 9 entradas, en lugar de 18. Además el número 128=1‟b010000000, es una
potencia de dos, y se podría diseñar el módulo combinacional, considerando que los dos
primeros bits de temp deben ser ceros, para que éste sea menor que 128. Emplearemos esta idea,
que difícilmente sería realizada por un autómata de síntesis digital, definiendo un módulo
combinacional slt128 de sólo dos entradas, los dos bits más significativos del bus temp.

module aritmeticaSint2(x, a, b);


input [`N:0] a, b;
output x;
wire [9:0] temp;
assign temp=a+b; //operandos de 8 bits, suma con reserva de salida en 9 bits.
slt128 s1 (x, temp[8:7]);
endmodule

El esquemático con la arquitectura de aritmeticaSint2, se muestra en la Figura A5.72.


a b
8 8

2 temp
slt128

1
x

Figura A5.72.

Profesor Leopoldo Silva Bijit 19-01-2010


94 Sistemas Digitales
Asumiendo que el sintetizador es eficiente, se le podría delegar la responsabilidad de generar
slt128, mediante una descripción conceptual de la operación: los dos bit de entrada deben ser
ceros.

module slt128(output x, input [1:0] val);


assign x= ( (val[1] | val[0]) ==0);
endmodule

Evaluando el costo de este módulo, puede no ser necesario seguir descendiendo en el nivel
de detalle. Pero si se desea asegurar un diseño mínimo, puede escribirse a nivel de compuertas,
según:

module slt128(output x, input [1:0] val);


and(x, ~val[1], ~val[0]);
endmodule

A5.12. Conclusiones.

Conviene conocer el diseño en bajo nivel de los subsistemas típicamente usados, de esta
manera se conocerá su funcionalidad, sus alcances, la forma de generalizarlos, y su costo. Luego
las descripciones de la arquitectura pueden realizarse basada en esos módulos.

Un curso básico en sistemas digitales debe profundizar en el diseño de los bloques básicos,
y también capacitar en descomponer un problema en términos de esos bloques. Esto
garantiza plantear arquitecturas con partes que serán sintetizadas eficientemente.

La Figura A5.73, muestra el proceso de síntesis como un nivel intermedio, entre las
descripciones de arquitecturas mediante módulos sintetizables (top-down), y el desarrollo de
módulo básicos implementados mediante compuertas y flip-flops (bottom-up). Los lenguajes de
descripción de hardware, como Verilog, permiten las descripciones y simulaciones en los
diferentes niveles, dando homogeneidad al proceso de diseño.

Arquitectura abstracta

Síntesis

Bloques Básicos

Figura A5.73.

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 5. Uso de verilog 95

Referencias.

Tutoriales y conceptos sobre Verilog.

Nonblocking Assignments in Verilog Synthesis, Coding Styles That Kill!. Clifford E.


Cummings. SNUG 2000.
"full_case parallel_case", the Evil Twins of Verilog Synthesis. Clifford E. Cummings. SNUG
1999.

http://www.see.ed.ac.uk/~gerard/Teach/Verilog/manual/Intro/gatetypes.html

http://www.doulos.com/knowhow/verilog_designers_guide/

Cursos universitarios sobre Verilog.

El profesor David M. Koppelman, de Louisiana State University, Baton Rouge, tiene


excelentes materiales para aprender Verilog, aplicado a sistemas digitales y estructuras de
computadores en: http://www.ece.lsu.edu/ee3755/ln.html.
El profesor Weidong Kuang, The University of Texas, desarrolló un curso básico de
sistemas digitales en: http://www.engr.panam.edu/~kuangw/courses/ELEE4303/index.html.

Software libre.

Herramienta de simulación y síntesis.


Icarus Verilog
http://www.icarus.com/eda/verilog/index.html

Visor de formas de ondas.


GTKWave visor de archivos VCD/EVCD. Anthony J Bybell .
http://www.geocities.com/SiliconValley/Campus/3216/GTKWave/gtkwave-win32.html

Desgraciadamente las referencias a la red son volátiles y no permanentes.

Profesor Leopoldo Silva Bijit 19-01-2010


96 Sistemas Digitales

Índice general.

APÉNDICE 5 .........................................................................................................................................1
USO DE VERILOG ..............................................................................................................................1
A5.1 INTRODUCCIÓN ...........................................................................................................................1
A5.2 DESCRIPCIÓN ESTRUCTURAL.......................................................................................................3
A5.2.1. Nivel compuertas. ..............................................................................................................3
Ejemplo A5.1. ............................................................................................................................................ 4
Ejemplo A5.2. ............................................................................................................................................ 4
A5.2.2. Nivel transistores. ..............................................................................................................5
Ejemplo A5.3. ............................................................................................................................................ 6
Ejemplo A5.4. ............................................................................................................................................ 6
A5.3 DESCRIPCIÓN DEL COMPORTAMIENTO (BEHAVIOR). ...................................................................8
Ejemplo A5.5. Expresiones. ............................................................................................................8
Ejemplo A5.6. Mux mediante Expresiones. ....................................................................................9
Operadores. ....................................................................................................................................9
Ejemplo A5.7. Procesos..................................................................................................................9
Ejemplo A5.8. Mux mediante Procesos. .......................................................................................10
Ejemplo A5.9. Mux mediante lenguaje. ........................................................................................11
Sentencias. ....................................................................................................................................11
A5.4 DISEÑOS JERÁRQUICOS. ............................................................................................................12
A5.5. FUNDAMENTOS DE SIMULACIÓN. .............................................................................................14
Ejemplo A5.10. Banco de prueba para semisumador binario. .....................................................14
Funcionamiento del simulador. ....................................................................................................16
Ejemplo A5.11. Simulación nivel transistores. .............................................................................17
A5.6. BUSES, REGISTROS, VECTORES, ARREGLOS. VALORES CONSTANTES. .......................................18
Valores. ........................................................................................................................................18
Ejemplo A5.12. Mux con dos buses de entrada. ...........................................................................20
Ejemplo A5.13. Mux con varios buses de entrada........................................................................20
Ejemplo A5.14. Mux con operador condicional. ..........................................................................21
Ejemplo A5.15. ALU con operandos vectores. .............................................................................23
Ejemplo A5.16. Sumador completo con operandos vectores........................................................23
Ejemplo A5.17. Estructuras repetitivas. Lazos for dentro de procesos. .......................................24
Ejemplo A5.18. Descripción algorítmica, empleando operadores del lenguaje. .........................24
Ejemplo A5.19. Decodificador, empleando operadores del lenguaje. .........................................25
Ejemplo A5.19a. Generador de paridad empleando lazo for. ......................................................26
Ejemplo A5.20. Buffer de tercer estado ........................................................................................27
Ejemplo A5.21. Relación entre simulación y síntesis. ..................................................................27
Ejemplo A5.22. Interconexión de módulos y descripciones del comportamiento. .......................30
Ejemplo A5.23. Módulos con operadores relacionales. ...............................................................33
Ejemplo A5.24. Módulos con sentencias case. .............................................................................33
A5.7 SISTEMAS SECUENCIALES. ........................................................................................................35
Ejemplo A5.25. Latch transparente. (D gated latch) ...................................................................35
Ejemplo A5.26. Flip-flop D. Disparado por canto de subida.......................................................39
Ejemplo A5.27. Flip-flop D. Disparado por canto de bajada. .....................................................40
Ejemplo A5.28. Flip-flop T. ..........................................................................................................40

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 5. Uso de verilog 97
Ejemplo A5.29. Controles de reset asincrónicos y sincrónicos. .................................................. 41
Ejemplo A5.30. Flip-flop D con habilitamiento de reloj. ............................................................ 42
Ejemplo A5.31. Registro n bits. ................................................................................................... 42
Ejemplo A5.32. Carreras en simulación. ..................................................................................... 43
Ejemplo A5.33. Registro de desplazamiento. ............................................................................... 43
Ejemplo A5.34. Contador ascendente con reset de lógica negativa. ........................................... 44
Ejemplo A5.35. Contador con reset, carga paralela y habilitación para contar. ....................... 45
Ejemplo A5.37. Divisor de frecuencia por n................................................................................ 46
Ejemplo A5.38. Transferencias entre registros de segmentación en pipeline. ........................... 47
Ejemplo A5.39. Registro de desplazamiento con realimentaciones lineales. .............................. 48
Ejemplo A5.40. Contador de anillo ............................................................................................. 50
Ejemplo A5.41. Contador BCD de dos cifras. ............................................................................. 51
Ejemplo A5.42. Contador ondulado. ........................................................................................... 51
Ejemplo A5.43. Contador 74163. ................................................................................................ 53
A5.8. MÁQUINAS SECUENCIALES DE ESTADOS FINITOS..................................................................... 54
A5.8.1. Diagramas de Moore. ..................................................................................................... 54
A5.8.2. Esquema de Moore con salidas registradas. ................................................................... 56
A5.8.3. Diagramas de Mealy. ...................................................................................................... 58
Ejemplo A5.44. Máquina de Mealy. ............................................................................................ 59
Ejemplo A5.45. Moore. ................................................................................................................ 59
A5.9. Memorias............................................................................................................................ 60
A5.9.1. Accesos a RAM .......................................................................................................................... 61
A5.9.2. Simular RAM.............................................................................................................................. 61
A5.9.3. Parameter para instanciar. ........................................................................................................... 62
A5.10. SISTEMAS ASINCRÓNICOS. ..................................................................................................... 63
Ejemplo A5.46. Latch de nand. .................................................................................................... 63
Ejemplo A5.46. Descripción estructural flip-flop D, en base a nand. ......................................... 64
Ejemplo A5.46. Flip-flop RS. ....................................................................................................... 65
A5.11. SÍNTESIS. ............................................................................................................................... 66
A5.11.1. Síntesis de descripciones estructurales implícitas. ........................................................ 67
A5.11.2. Algunas referencias para el proceso de síntesis. .......................................................... 71
A5.11.3. Formación y creación de buses. .................................................................................... 73
A5.11.4. Inferencia de flip-flops. ................................................................................................. 73
A5.11.5. Tablas de búsqueda. Look-up tables. ............................................................................ 75
A5.11.5.1. Modelos de simulación de LUTs. .......................................................................................... 75
A5.11.5.2. Diseños en base a LUTs 4. ..................................................................................................... 77
A5.11.5.3. Comparación con uso de memorias. ...................................................................................... 78
Ejemplo A5.47. Generador de paridad ................................................................................................... 78
A5.11.6. Síntesis de bloques combinacionales, basados en LUTs. .............................................. 79
A5.11.6.1. LUT4 ..................................................................................................................................... 79
A5.11.6.2. Dos LUT4. ............................................................................................................................. 80
Función de cinco variables. ................................................................................................................ 80
Mux 2 a 1 ancho 2. ............................................................................................................................. 80
Un multiplexor de 4 a 1 ancho 1. ........................................................................................................ 81
Funciones particulares de hasta 9 variables. ....................................................................................... 82
A5.11.6.3. Cuatro LUTs 4 ....................................................................................................................... 82
A5.11.6.4. 8 LUTs ................................................................................................................................... 84
A5.11.6.5. 16 LUTs ................................................................................................................................. 84
A5.11.6.6. Operadores al bit. ................................................................................................................... 84

Profesor Leopoldo Silva Bijit 19-01-2010


98 Sistemas Digitales
A5.11.6.7. Potencias. ............................................................................................................................... 85
A5.11.6.8. División entera y corrimiento a la derecha. ............................................................................ 86
A5.11.6.9. Operación módulo. ................................................................................................................. 86
A5.11.6.10. Corrimiento a la izquierda. ................................................................................................... 86
A5.11.6.11. Corrimientos aritméticos. ..................................................................................................... 87
A5.11.6.12. Operadores lógicos. .............................................................................................................. 87
A5.11.6.13. Salidas registradas. ............................................................................................................... 87
A11.7. Bloques secuenciales. .......................................................................................................88
A11.7.1. RAM ......................................................................................................................................... 88
A11.7.2. Registro de desplazamiento. ...................................................................................................... 89
A11.8. Síntesis de operaciones aritméticas en base a sumadores y muxs. ...................................90
A5.12. CONCLUSIONES. .....................................................................................................................94
REFERENCIAS. ...................................................................................................................................95
Tutoriales y conceptos sobre Verilog. ..........................................................................................95
Cursos universitarios sobre Verilog. ............................................................................................95
Software libre. ..............................................................................................................................95
ÍNDICE GENERAL. ..............................................................................................................................96
ÍNDICE DE FIGURAS. ..........................................................................................................................99

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 5. Uso de verilog 99

Índice de Figuras.

Figura A5.1.................................................................................................................................... 2
Figura A5.2.................................................................................................................................... 3
Figura A5.3.................................................................................................................................... 5
Figura A5.4.................................................................................................................................... 6
Figura A5.5.................................................................................................................................... 7
Figura A5.6.................................................................................................................................... 7
Figura A5.7.................................................................................................................................. 13
Figura A5.8.................................................................................................................................. 13
Figura A5.9.................................................................................................................................. 14
Figura A5.10................................................................................................................................ 18
Figura A5.11................................................................................................................................ 19
Figura A5.12. mux4to1. .............................................................................................................. 21
Figura A5.13................................................................................................................................ 25
Figura A5.14................................................................................................................................ 26
Figura A5.15................................................................................................................................ 27
Figura A5.15a. ............................................................................................................................. 29
Figura A5.15b.............................................................................................................................. 29
Figura A5.15c. ............................................................................................................................. 30
Figura A5.15d.............................................................................................................................. 31
Figura A5.16................................................................................................................................ 35
Figura A5.17................................................................................................................................ 36
Figura A5.18................................................................................................................................ 36
Figura A5.19................................................................................................................................ 36
Figura A5.20................................................................................................................................ 37
Figura A5.21................................................................................................................................ 38
Figura A5.22................................................................................................................................ 39
Figura A5.23................................................................................................................................ 39
Figura A5.24................................................................................................................................ 40
Figura A5.25................................................................................................................................ 40
Figura A5.26................................................................................................................................ 40
Figura A5.27................................................................................................................................ 41
Figura A5.28................................................................................................................................ 41
Figura A5.29................................................................................................................................ 42
Figura A5.30................................................................................................................................ 44
Figura A5.31................................................................................................................................ 45
Figura A5.32................................................................................................................................ 45
Figura A5.33................................................................................................................................ 47
Figura A5.34................................................................................................................................ 48
Figura A5.35................................................................................................................................ 48
Figura A5.36................................................................................................................................ 50
Figura A5.37................................................................................................................................ 50
Figura A5.37a. Contador ondulado en base a flip-flops Ds. ....................................................... 52
Figura A5.37b. Cuentas asincrónicas. ......................................................................................... 53

Profesor Leopoldo Silva Bijit 19-01-2010


100 Sistemas Digitales
Figura A5.38 ................................................................................................................................ 54
Figura A5.39 ................................................................................................................................ 55
Figura A5.40 ................................................................................................................................ 57
Figura A5.41 ................................................................................................................................ 58
Figura A5.42 ................................................................................................................................ 58
Figura A5.42 ................................................................................................................................ 60
Figura A5.43 ................................................................................................................................ 60
Figura A5.43a. Bloque de RAM 256*8...................................................................................... 63
Figura A5.44 ................................................................................................................................ 64
Figura A5.45 ................................................................................................................................ 65
Figura A5.46 ................................................................................................................................ 65
Figura A5.47. Síntesis RTL de ISE ............................................................................................ 68
Figura A5.48 Síntesis con LUT. Mapeo tecnológico. ................................................................. 70
Figura A5.49. ............................................................................................................................... 71
Figura A5.50. ............................................................................................................................... 74
Figura A5.51. Síntesis ISE .......................................................................................................... 74
Figura A5.52. ............................................................................................................................... 74
Figura A5.53. ............................................................................................................................... 75
Figura A5.54. ............................................................................................................................... 75
Figura A5.55. LUT 4 en base a LUTs 2 y muxs. ........................................................................ 77
Figura A5.56. ............................................................................................................................... 79
Figura A5.57 ................................................................................................................................ 80
Figura A5.58 ................................................................................................................................ 80
Figura A5.59 ................................................................................................................................ 80
Figura A5.60. LUT 3, iniciada con E4. ...................................................................................... 81
Figura A5.61. Mux 2 a 1, 2 bits de ancho. ................................................................................. 81
Figura A5.62. Mux 4 a 1, ancho de 1 bit. ................................................................................... 82
Figura A5.63. Funciones de 9 variables de entrada. ................................................................... 82
Figura A5.64. ............................................................................................................................... 83
Figura A5.65. Mux 8 a 1, ancho de 1 bit. ................................................................................... 83
Figura A5.66. Mux 2 a 1, 4 bits de ancho. .................................................................................. 84
Figura A5.66.a Reducción en niveles. ......................................................................................... 85
Figura A5.66.b Corrimientos a la izquierda en x bits. ................................................................. 85
Figura A5.66.c Posiciones de los unos en 23x. ............................................................................ 86
Figura A5.66.d Posiciones de los unos en 2x. ............................................................................. 86
Figura A5.66.e Salida registrada. ............................................................................................... 87
Figura A5.67. RAM 16x1 ............................................................................................................ 88
Figura A5.68. ............................................................................................................................... 88
Figura A5.70 ................................................................................................................................ 90
Figura A5.71. ............................................................................................................................... 93
Figura A5.72. ............................................................................................................................... 93
Figura A5.73. ............................................................................................................................... 94

Profesor Leopoldo Silva Bijit 19-01-2010


1

Apéndice 6

Uso de sis

Sequential Interactive System

A6.1. Introducción

En las primeras etapas de un diseño digital se requiere obtener la estructura del sistema en
términos de componentes de hardware. Se denomina síntesis lógica al proceso de generar un
circuito en términos de compuertas y flip-flops; en esta etapa suele efectuarse una minimización
del número de transistores que se emplearán (optimización espacial). Luego es necesario
efectuar minimizaciones de los retardos (optimización temporal), para esto se requiere efectuar
transformaciones de la red booleana de tal modo que la implementación final satisfaga los
requerimientos.

A medida que aumenta el tamaño del sistema estas técnicas no pueden aplicarse
manualmente y resultan indispensables herramientas computacionales.

Sis es un programa interactivo para la síntesis y optimización de circuitos combinacionales,


secuenciales sincrónicos y asincrónicos.

Pueden describirse funciones booleanas mediante: ecuaciones (.eqn), tablas de verdad o


matrices de cobertura (.pla), redes lógicas booleanas (.blif).
Los circuitos secuenciales pueden almacenarse como máquinas de estados finitos
describiendo el diagrama de estados (.kiss) o mediante una red booleana formada por
compuertas lógicas y elementos de memoria (.kiss2 blif sincrónicos).

Las funciones pueden ser manipuladas escribiendo comandos en forma interactiva o


empleando archivos de comandos (scripts). Se dispone de herramientas para: minimizar y
asignar estados; optimizar el área requerida para implementar las ecuaciones lógicas y
minimizar los retardos; mapear tecnológicamente a componentes mediante bibliotecas de partes.
El comando help despliega las órdenes disponibles.

A6.2. Formato blif.

Berkeley Logic Interchange Format especifica mediante un archivo de texto una red lógica
booleana. Cada nodo queda descrito por una función booleana en dos niveles.

Profesor Leopoldo Silva Bijit 19-01-2010


2 Sistemas Digitales
Puede encontrarse una especificación detallada de este formato en el apéndice del manual de
SIS.
Estudiaremos el formato a través de ejemplos. El siguiente código describe una simple
compuerta and de dos entradas. Se emplean comentarios de fin de línea para explicar los
comandos.

.model CompuertaAnd # nombre de la red. Suele ser el nombre del archivo


.inputs a b #entradas del módulo
.outputs c #salida del módulo

.names a b c # Descripción pla de la función nand del nodo.


11 1

.end

La siguiente descripción muestra un sumador completo, texto que asumimos almacenado en


el archivo sumadorcompleto.blif.

.model SumadorCompleto
.inputs a b cin
.outputs sum cout
.names a b cin sum
001 1
010 1
100 1
111 1
.names a b cin cout
110 1
101 1
011 1
111 1
.end

El formato blif permite descripciones jerárquicas de redes complejas. Por ejemplo un


sumador completo de 4 bits puede describirse empleando el comando subcircuito, mediante el
cual se instancian cuatro módulos con las variables actuales, según:

.module fulladder4
.inputs a3 a2 a1 a0 b3 b2 b1 b0
.outputs s3 s2 s1 s0 cout
.subckt sumadorcompleto a=a0 b=b0 cin=zero sum=s0 cout=cout0
.subckt sumadorcompleto a=a1 b=b1 cin=cout0 sum=s1 cout=cout1
.subckt sumadorcompleto a=a2 b=b2 cin=cout1 sum=s2 cout=cout2
.subckt sumadorcompleto a=a3 b=b3 cin=cout2 sum=s3 cout=cout

.names zero #define la señal zero con valor 0


.end

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 6. Uso de sis 3

.search sumadorcompleto.blif #lee el modelo desde archivo

En el ejemplo la reserva de entrada se ha fijado en cero, mediante la señal zero. La definición


de compuerta: .names zero fija o fuerza un cero lógico en la señal zero.
Una señal puede fijarse en uno, mediante la declaración:
.names uno
1 # setea en 1 la señal uno.

Mediante el comando .search se lee el contenido del archivo, con las declaraciones del módulo
del sumador completo.

A6.3. Lectura y escritura de archivos.

En el apéndice 3 sobre uso de espresso se describieron los formatos pla y eqn.

Se puede traducir de un formato a otro mediante la lectura de un formato y la escritura en


otro.
Los comandos que leen especificaciones de sistemas digitales combinacionales son:
read_eqn, read_pla y read_blif, seguidos del nombre del archivo.
Los comandos que escriben en diferentes formatos son: write_blif, write_pla, write_eqn. Si
se les agrega a continuación del comando un nombre de archivo, éste se almacena en disco; si
no se especifica nombre de archivo se despliega el formato en la pantalla.
En versiones unix, los finales de línea deben terminar en LF solamente.

Ejemplo A6.1. eqn.

Si un archivo denominando “eq.eqn” contiene la siguiente línea, en formato eqn:

O = a*b + !c*((d+e+f)*!(g+h));

Puede ser ingresado en sis, con el comando:

sis> read_eqn eq.eqn

Puede verificarse la ecuación ingresada, mediante el comando print, que muestra la ecuación
del nodo:

sis> print
{O} = a b + c' d g' h' + c' e g' h' + c' f g' h'

Ejemplo A6.2. blif.

Puede ingresarse una red boolena en formato blif, en la cual se especifican funciones
combinacionales mediante tablas de verdad en formato pla.

Profesor Leopoldo Silva Bijit 19-01-2010


4 Sistemas Digitales
El ejemplo siguiente crea el modelo de una compuerta NOR de 3 entradas usando tres nodos
descritos por sus tablas de verdad, se especifican dos formas de definir compuertas OR de dos
entradas y un inversor. El archivo tiene nombre “nor3.blif”.

# Las líneas de comentario comienzan con #


# Debe colocarse un nombre para cada modelo
.model NOR3
# Se definen las entradas y salidas del modelo
.inputs a b c
.outputs out

#OR de dos entradas a y b, con condiciones superfluas.


# Se define un nodo interno (wire) de nombre int1
.names a b int1
1- 1
-1 1

# Tabla de verdad del conjunto on de un OR de dos entradas


.names int1 c int2
10 1
01 1
11 1

# Inversor
.names int2 out
1 0

# Fin del modelo.


.end

La estructura de la red, se muestra en la Figura A6.1


a int1
b int2
out
c

Figura A6.1

La red puede leerse y describirse mediante las ecuaciones de los nodos, con los comandos:

sis> read_blif nor3.blif


sis> print
{out} = int2'
int1 = a + b
int2 = c int1 + c int1' + c' int1

Puede comprobarse que: out = a’b’c’ = (a + b +c)’= nor3(a, b, c)

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 6. Uso de sis 5
Ejemplo A6.3. Máquina de estados finitos.

Se puede especificar una máquina de estados empleando formato kiss, dentro de un archivo
con extensión blif. El diagrama de estados de la Figura A6.2 representa a un verificador
(chequeador) de paridad. La entrada es serial. La salida es cero si, hasta el momento, han
llegado un número par de unos; y es uno si el número de unos es impar.
La máquina se mantiene en el estado PAR si han llegado un número par de unos; y se
mantiene en el estado IMPAR, si el número de unos que han llegado, hasta ese momento es
impar.

1/1 0/1
PAR IMPAR

0/0
1/0

Figura A6.2

La descripción en formato kiss, se ilustra en el ejemplo siguiente. En el formato kiss no


pueden colocarse nombres a las señales. Sin embargo al incluirlo dentro de un blif, podrían
colocarse identificadores para las señales.

# El archivo se almacena con el nombre paridad.blif


# Se emplea formato kiss para especificar máquinas de estado
.start_kiss
# una entrada (i), una salida (o), y 2 estados (s)
.i 1
.o 1
.s 2
# <entrada> <EstadoActual> <ProximoEstado> <salida>
0 PAR PAR 0
1 PAR IMPAR 1

0 IMPAR IMPAR 1
1 IMPAR PAR 0

.end_kiss

Puede minimizarse el número de estados con el comando: state_minimize y luego efectuarse


la asignación de estados con el comando state_assign. La salida puede escribirse en formato blif
con el comando write_blif, esto genera un archivo con el diseño en base a compuertas y flip-
flops.
La siguiente secuencia realiza el diseño de la red booleana.

sis> read_blif parity.blif


sis> state_minimize

Profesor Leopoldo Silva Bijit 19-01-2010


6 Sistemas Digitales
sis> state_assign
sis> write_blif

La cual genera, en forma automática nombres para las señales de entrada y salida, además
coloca automáticamente los nombres a las entradas y salidas de los latch:
.inputs IN_0
.outputs OUT_0
.latch v2.0 LatchOut_v1 0 //asigna nombres a la entrada y salida de un latch
.start_kiss
.i 1
.o 1
.p 4
.s 2
.r PAR
0 PAR PAR 0
1 PAR IMPAR 1
0 IMPAR IMPAR 1
1 IMPAR PAR 0
.end_kiss
.latch_order LatchOut_v1
.code PAR 0
.code IMPAR 1
.names IN_0 LatchOut_v1 OUT_0
01 1
10 1
.names IN_0 LatchOut_v1 v2.0
01 1
10 1
.end

Notar que después de la descripción kiss, se especifica la asignación de estados y luego se


agregan los nodos combinacionales del próximo estado y de la salida, en términos de las señales
definidas al inicio. Si las ecuaciones se interpretan como compuertas or exclusivo, la Figura
A6.3, muestra la red booleana, resultante del diseño:

Out_0
D Q
IN_0
v2_0 LatchOut_v1

clk

Figura A6.3

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 6. Uso de sis 7
El comando print, muestra las ecuaciones de los nodos:

sis> print
{OUT_0} = IN_0 LatchOut_v1' + IN_0' LatchOut_v1
v2.0 = IN_0 LatchOut_v1' + IN_0' LatchOut_v1

El comando write_eqn escribe las ecuaciones de las redes combinacionales solamente.

sis> write_eqn

Se genera la siguiente descripción:


INORDER = IN_0 LatchOut_v1;
OUTORDER = v2.0 OUT_0;
OUT_0 = IN_0*!LatchOut_v1 + !IN_0*LatchOut_v1;
v2.0 = IN_0*!LatchOut_v1 + !IN_0*LatchOut_v1;

También se puede generar la descripción combinacional en formato pla, lo cual podría ser
utilizado para minimizar con espresso. El siguiente comando:

sis> write_pla

Genera la siguiente descripción de las redes combinacionales, notar que se ha definido


automáticamente con el nombre LatchIn_[14] la entrada D del latch:
.i 2
.o 2
.ilb IN_0 LatchOut_v1
.ob LatchIn_[14] OUT_0
.p 4
01 10
10 10
01 01
10 01
.e
La Figura A6.4 muestra un esquema de la red combinacional; se ha agregado el latch que
completa el diseño.

Out_0
LatchOut_v1

D Q
IN_0
LatchIn_[14]

clk

Figura A6.4

Profesor Leopoldo Silva Bijit 19-01-2010


8 Sistemas Digitales
Latch genérico.

La sintaxis de un latch genérico es:


.latch <input> <output> [<tipo> <control>] [<valor inicial>]
Tipo es uno de los siguientes: fe, re, ah, al, as , que corresponden a acrónimos de “falling
f g

edge,” “rising edge,” “active high,” “active low,” o “asynchronous.”


Control es la señal de reloj para el latch. Puede ser la señal definida con: .clock en el modelo,
la salida de cualquier función del modelo o “NIL” si no hay reloj
Valor-inicial es el valor del estado inicial del latch. Puede ser: 0, 1, 2, 3 . “2” si es “don’t
f g

care” y “3” si es “unknown.” Un valor no especificado se asume “3.”


Un modelo que tenga realimentaciones debe usar latchs, no se aceptan lazos puramente
combinacionales.

Ejemplo.
.model ffd # flip-flop D sincronizado con cantos de subida (“re”) del reloj c.
.inputs d
.output q
.clock c
.latch d q re c 0
.end

A6.4. Comandos para minimización de redes multinivel.

Una vez ingresado el circuito en alguno de los formatos: eqn, pla o blif, pueden aplicarse los
comandos para minimización multinivel.

A6.4.1. Descomposición.

decomp descompone un nodo interno en más de un nodo.


Normalmente esto conduce a la reducción de literales; y al mismo tiempo lleva a incrementar el
retardo de la red.

Si tenemos en el archivo ejdecomp.eqn la siguiente ecuación:


f=a*d+a*e+b*d+b*e+c*d+c*e;

sis>read_eqn ejdecomp.eqn
sis>print_stats
ejdecomop.eqn pi=5 po=1 node=1 lits(sop)=12

El comando: print_stats muestra que el sistema tiene: 5 variables de entrada, 1 de salida, 1


nodo interno, y 12 literales.

Si se ejecuta el comando decomp, y luego se muestran las ecuaciones se tiene:


sis>decomp
sis>write_eqn
f=[2]*[1];

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 6. Uso de sis 9
[1]=d +e;
[2]=a + b +c;
Lo cual muestra que se han creado dos nodos internos, a los cuales se les ha colocado, en forma
automática, los nombres [1] y [2]. La estadística muestra que se tienen ahora 3 nodos internos y
se han reducido los literales a 7.

A6.4.2. Eliminación.

eliminate k remueve todos los vértices internos de la red cuyos valores sean menores o
iguales a k. El valor del nodo es el número de literales que se ahorran en la cuenta de literales de
la red dejando el nodo. La variable correspondiente al nodo se reemplaza en todas sus
ocurrencias; esto aumenta la cuenta de los literales. Este comando efectúa lo contrario de
decomp; y ayuda a disminuir el retardo de la red.
eliminate -1 remueve nodos que son empleados sólo una vez.

La siguiente red tiene 12 literales y 4 nodos.


f = a*b*c;
g = f + d;
h = f + b*c;
i = f + b*c*d;
Si se elimina el nodo f, resulta un costo de 15 literales; es decir se produce un incremento de
3 literales.

Entonces el comando eliminate 1, o eliminate 2 no producen cambios, pero eliminate 3 logra


la eliminación del nodo f; ya que es 3 el costo de eliminar f. La red reducida queda:
g = a*b*c + d;
h = a*b*c + b*c; #h puede reducirse a b*c solamente.
i = a*b*c + b*c*d;

En el caso de que un nodo sólo aparezca una vez, su eliminación se logra con el comando:
eliminate -1.
La red:
f = a*b;
g = f+c;
Se simplifica a:
g = a*b+c;

A6.4.3. Simplificación.

Los comandos simplify y full_simplify ejecutan un programa de minimización en dos


niveles en cada uno de los nodos de la red; la simplificación completa emplea algoritmos más
complejos que tienden a obtener mejores resultados, pero con un mayor costo temporal de
ejecución. Puede emplearse los comandos con opciones –m nocomp, que utiliza las heurísticas
de minimización de espresso.
Para la siguiente red con 10 literales
f = a*!b*c + !a*!c + a*b;

Profesor Leopoldo Silva Bijit 19-01-2010


10 Sistemas Digitales
g = !a*!b + a;

Luego de simplify, se reduce a 8 literales


f = b*g + !a*!c + a*c;
g = !b + a;

A6.4.4. Resubstitución.

Resub intenta substituir la expresión correspondiente a un nodo en las expresiones


correspondientes a los otros nodos. El propósito es reutilizar la expresión de un nodo como
subexpresión en alguno de los otros nodos, disminuyendo el número de literales.

Para cada par de nodos verifica si uno es factor del otro y viceversa; si se agrega opción –a,
se emplea método de división algebraica para determinar si un nodo es factor de otro. Se intenta
con la expresión para el nodo y la expresión complementada, iterando entre los nodos de la red
hasta que la reducción del costo no siga disminuyendo.

La siguiente red, tiene costo de 11 literales.


f = a*b;
g = a*b + c;
h = a*b + e;
i = a' + b' +k;
Luego de resub, queda con 8 literales.
f = a*b;
g = f + c;
h = f + e;
i = f’ +k;

A6.4.5. Factorización.

Extrae subexpresiones comunes entre los nodos y reescribe las ecuaciones de los nodos en
términos de las subexpresiones comunes.

Si se tiene la siguiente red, con 4 nodos y 26 literales:


w = a*!e + !c*d + b*d + !a*d;
x = d*e + c*e + !b + !a;
y = b*d + a*d + b*c + a*c + e;
z = c + b + a;
Luego de ejecutado el comando fx, se crean, en forma automática dos nuevos nodos, y
disminuyendo la cuenta de literales a 21.
w = d*b + !c*d + !a*d + a*!e;
x = e*[16] + !b + !a;
y = [16]*[17] + e;
z = [17] + c;
[16] = d + c;
[17] = b + a;

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 6. Uso de sis 11
Suele usarse la secuencia fx, seguida de resub, ya que el primer comando encuentra los
factores comunes, y el segundo intenta emplear esos factores para mejorar la red.

A6.4.6. Limpieza.

Sweep es un comando que elimina los vértices que tienen solo una entrada y los de valor
constante.
La red siguiente tiene el nodo i, con valor constante, y el nodo f, con una sola entrada:
f = a;
g = f + c*i;
h = f + d;
i = 1;
Luego de sweep, resulta:
g = a + c;
h = a + d;

A6.4.7 Archivos de optimización multinivel.

Si se desea ejecutar una secuencia de comandos de optimización se suele usar un script. El


cual es un archivo de texto que contiene la secuencia de comandos que se desean ejecutar. Por
ejemplo si se desea ejecutar: fx, resub y luego sweep, basta escribir un archivo de texto con el
nombre comandos.script, con las siguientes líneas:

fx
resub; sweep

Pueden colocarse varios comandos, en la misma línea, separados por puntos y comas.
Se ejecuta la secuencia anterior con el comando:
source comandos.script

No es sencillo determinar una secuencia de comandos que produzcan el nivel de


minimización multinivel deseado. Los creadores del sistema sis han propuesto una secuencia
que ha dado buenos resultados para una gran variedad de circuitos. El archivo de comandos se
denomina script.rugged, y contiene cuatro etapas de minimización.

#primera etapa de limpieza


sweep
eliminate -1
simplify -m nocomp
eliminate -1

#simplificación con disminución acotada del fan in


sweep
eliminate 5
simplify -m nocomp
resub -a

Profesor Leopoldo Silva Bijit 19-01-2010


12 Sistemas Digitales
#factorización
fx
resub -a
sweep

#simplificación del nodo


eliminate -1
sweep
full_simplify -m nocomp

Ejemplo A6.4.
Sea la red de la Figura A6.5

a z = ac +ad +bc +bd +e w

b
q = ce +de r =q + a’ w =r+b’ x
c
y =a’d +bd +c’d+ ae’ y
d

e p=a+b x = p’c + pc’+ pc z

Figura A6.5

Las ecuaciones de la red, con 7 nodos y 33 literales es la siguiente:


z = a*c + a*d + b*c + b*d + e;
q = c*e + d*e;
r = q + a';
w = r + b';
y = a'*d + b*d + c'*d + a*e';
p = a + b;
x = p'*c + p*c' + p*c;

Luego de ejecutado script.rugged con los datos de la red anterior, se logra la siguiente red:
con 6 nodos y 21 literales. Aparecen dos nuevos nodos y se eliminan p, q y r.

z = [28]*[29] + e;
w = e*[28] + !b + !a;
y = a*!e + d*b + !c*d + !a*d;
x = [29] + c;
[28] = d + c;
[29] = b + a;

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 6. Uso de sis 13
A6.4.8. Otros comandos multinivel.

print_level imprime el nivel de todos los nodos. Los de nivel cero son las entradas a la red.

print_io imprime las entradas y salidas de la red.

invert <nodo> obtiene el complemento del nodo. Entregando el complemento del


producto de sumas.

reduce_depth –d k este comando controla el retardo de la red en una optimización


multinivel, dejándola en k niveles.

A6.5. Mapeo tecnológico.

Se denomina mapeo tecnológico al proceso de convertir una red lógica formada por
componentes arbitrarias a una red formada por componentes especificadas en una biblioteca
tecnológica.
Primero se forman diagramas patrones representando cada una de las compuertas de la
biblioteca por el conjunto básico de compuertas, por ejemplo nand de dos entradas e inversores.
Luego la lógica del sistema se transforma a una red formada por el conjunto básico de
compuertas, por ejemplo nand de dos entradas e inversores; luego esta red, que es independiente
de la tecnología, se minimiza.
Finalmente la red, es cubierta por un conjunto de los diagramas patrones, que son elecciones
posibles desde la biblioteca. Existen diferentes coberturas posibles; durante la cobertura, el área
o el retardo se emplean como criterios de optimización.

Ejemplo A6.5.

Se tiene la función: f=a +b’ +c’, y una biblioteca de partes constituida por compuertas:
inversor, nand, and, y or.
El conjunto de compuertas básicas está formado por nand e inversor.

La Figura A6.6 muestra la red estructurada con compuertas básicas. Es el mapeo


independiente de la tecnología.

a
f
b
c

Figura A6.6

La Figura A6.7 muestra los patrones de biblioteca, en base a las compuertas básicas.

Se indica el costo asociado al área, para cada elemento de la biblioteca, representado por
patrones. El tiempo de propagación a través de un inversor es 1, y a través del nand es 1.5.

Profesor Leopoldo Silva Bijit 19-01-2010


14 Sistemas Digitales

inv 2

nand 3

and 4

or 5

Figura A6.7 Patrones biblioteca.

Se van haciendo calzar los patrones de la biblioteca con partes de la red que se desea mapear.
Se reconocen los patrones hasta tener cobertura completa y se calcula el costo espacial y
temporal. Encontrar todos las calces es un problema complejo; seleccionar los calces que son
coberturas también es un problema complejo.
En general pueden obtenerse varias soluciones, debe seleccionarse la más conveniente de
acuerdo al costo espacial y temporal.

Costo espacial: 2+3+2+3=10. Costo temporal: 1.5+1+1.5=4.

a
f
b
c

Figura A6.8 Cobertura 1.

Costo espacial: 2+4 +3 =9. Costo temporal: 1.5+1+1.5=4.

a
f
b
c

Figura A6.9 Cobertura 2.

Costo: 5+3=8. Costo temporal: 1.5+1+1.5=4.

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 6. Uso de sis 15

a
f
b
c

Figura A6.10 Cobertura 3.

La heurística de calce estructural no es adecuada para las componentes programables


actuales. Esto debido a que para celdas básicas formadas por tablas de búsqueda de cuatro
variables, la biblioteca tendría demasiadas componentes, ya que habría que generar una celda de
biblioteca para cada una de las funciones que pueden generarse en una LUT. Una LUT de 4
variables permite formar 216 funciones, sin embargo no todas son diferentes; pero el número es
demasiado elevado. Este problema requiere herramientas computacionales de ayuda al diseño.

tech_decomp [-a and-limit] [-o or-limit]

Descompone todos los nodos de la red en compuertas and o compuertas or, dependiendo del
tipo de flag que se especifique: -a, -o.
Los fan-in quedan limitados por los números and-limit u or-limit. Si no se especifican por
defecto se asumen límites en 2.

read_library [-ainr] filename

Se lee una biblioteca de compuertas disponibles para efectuar el mapeo tecnológico.


La opción -a agrega la biblioteca a la corriente; si no se especifica a, se descarta la biblioteca
previa. La opción i suprime agregar inversores extra a los primitivos. El flag n indica usar nand
en lugar de nor. El flag –r indica que la biblioteca está en formato blif, en lugar de genlib.

map [-b #][-f #][-i][-m #][-n #][-r][-s][-p][-v #] [-A][-B #][-F][-G][-W]

El comando map, realiza el mapeo tecnológico, previo a su ejecución debe haberse cargado
la biblioteca de compuertas.
Con opción –m 0 produce un circuito de mínima área, sin considerar límites de carga.
Con opción –m 0 –AF produce un circuito de mínima área, considerando límites de carga.
Con opción –n 1 –AFG produce un circuito de mínimo retardo, considerando límites de
carga. Pueden especificarse los requerimientos de tiempo con el comando set_delays, de este
modo el comando puede intercambiar área por tiempo.
Con flag –s se imprime estadística del mapeo.

Print_gate imprime los nombres de las compuertas empleadas en cada nodo.


Print_delay imprime los retardos de cada nodo.

Profesor Leopoldo Silva Bijit 19-01-2010


16 Sistemas Digitales
El retardo de la red se calcula por la estructura de la red multinivel y por la elección de las
compuertas que implementan las funciones.

Existen dos algoritmos que reestructuran la lógica para disminuir el retardo.


El comando speed up descompone la red en términos de compuertas simples, nands de dos
entradas e inversores, e intenta reducir los niveles colapsando secciones a través de trayectorias
largas. Se sugiere correr el comando con el script:
decomp -g; eliminate -1; speed up;
map -m 1 -A.

El commando reduce depth reduce en forma uniforme la profundidad de la red, formando


racimos de nodos que luego transforma en un nodo simple. Para evitar crecimiento del área se
determinan tamaños máximos de los racimos y se emplean comando de simplificación y
factorización. Los creadores de sis sugieren el siguiente script.delay para emplear este
comando.
#script.delay
sweep
decomp -q
tech_decomp -o 2
resub -a -d
sweep
reduce_depth -b -r
red_removal
eliminate -l 100 -1
simplify -l
full_simplify -l
sweep
decomp -q
fx -l
tech_decomp -o 2
read_library lib2.genlib
read_library -a lib2_latch.genlib
map -s -n 1 -AFG -p

Formato de bibliotecas genlib.

Las celdas combinacionales tienen el siguiente formato:


GATE <cell-name> <cell-area> <cell-logic-function>
<pin-info>
..
<pin-info>

<cell-name> es el nombre de la celda en la biblioteca. El net-list queda en terminus de estos


nombres.
<cell-area> define un costo relativo del área de la celda, en punto flotante.

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 6. Uso de sis 17
<cell-logic-function> es la ecuación de la celda, en formato eqn, la cual se termina en punto
y coma. La ecuación define las entradas y salida de la celda. Si existen formas factorizadas que
pueden escribirse de diferente manera se especifican separadamente.

Ejemplo de minimal.genlib
GATE zero 0 O=CONST0;
GATE one 0 O=CONST1;
GATE inv1 1 O=!a; PIN * INV 1 999 0.9 0.3 0.9 0.3
GATE nand2 2 O=!(a*b); PIN * INV 1 999 1.0 0.2 1.0 0.2
GATE nor2 2 O=!(a+b); PIN * INV 1 999 1.0 0.2 1.0 0.2

Cada <pin-info> tiene el formato:


PIN <pin-name> <phase> <input-load> <max-load>
<rise-block-delay> <rise-fanout-delay> <fall-block-delay> <fall-fanout-delay>

<pin-name> es el nombre del pin en la <cell-logic-function>, puede ser un * para


especificar que todos los pines tienen idéntica información.
<phase> es INV, NONINV, o UNKNOWN
<input-load> define la carga de entrada del pin.
<max-load> especifica el fanout del pin.
<rise-block-delay> y <rise-fanout-delay> son los tiempos de levantamiento, típicamente en
nanoseconds, y nanoseconds/unidad de carga.
<fall-block-delay> y <fall-fanout-delay> son los tiempos de bajada.

Ejemplo A6.6.

Para la siguiente red, almacenada en ejmap.eqn: f=a*b*c*!d;


Empleando minimal.genlib, con los siguientes comandos:

sis>read_eqn ejmap.eqn
sis>read_library minimal.genlib
sis>map
sis>print
[4]= a’ + b’
[3]= d’
[5]=[3]’ + c’
{f}=[4]’ + [5]’
sis>print_gate
[4] nand2 2.00
[3] inv1 1.00
[5] nand2 2.00
{f} nand2 2.00

Nótese que la suma de los pesos asociados a las áreas da 7.00.

Las ecuaciones del mapeo se representan en la red de la Figura A6.11:

Profesor Leopoldo Silva Bijit 19-01-2010


18 Sistemas Digitales

a 4
b
f
c
d 5
3

Figura A6.11

Si el comando map se ejecuta con el flag –s, se obtienen los valores:


Total gate area: 7.00
Maximun arrival time <3.90, 3.90>

Se asume que un cambio de una entrada se realiza con un retardo de 0.3. Luego la
propagación de la señal d, a través del inversor, tiene un costo temporal de: 0.9+0.3*1, que es la
suma del tiempo de levantamiento, más el debido al fan-out, que es uno en este caso. La
propagación a través de la compuerta [5] que es un nand2, tiene costo temporal: 1.0+0.2*1=1.2,
igual retardo produce el nand en la salida. En total: (0.3 + 1.2 + 1.2 + 1.2) = 3.9, que es el
tiempo de retardo de la ruta crítica, que es entregado como el máximo tiempo de arribo.

Si se ejecutan los mismos comandos, pero cambiando la biblioteca para el mapeo, por la que
se muestra a continuación, se obtiene la red de la Figura A6.12.

GATE zero 0 O=CONST0;


GATE one 0 O=CONST1;
GATE inv1 1 O=!a; PIN * INV 1 999 0.9 0.3 0.9 0.3
GATE nand2 2 O=!(a*b); PIN * INV 1 999 1.0 0.2 1.0 0.2
GATE nand3 3 O=!(a*b*c); PIN * INV 1 999 1.1 0.3 1.1 0.3
GATE nand4 4 O=!(a*b*c*d); PIN * INV 1 999 1.4 0.4 1.4 0.4

Nótese que en este caso se utiliza un nand de 4 entradas que ahora está disponible.
sis>print_gate
[3] inv1 1.00
[4] nand4 4.00
[f] inv1 1.00
sis>print
[3] = d’
[4] = [3]’ + a’ + b’ + c’
{f}= [4]’

Total gate area: 6.00


Maximum arrival time: <4.50, 4.50>

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 6. Uso de sis 19
a
c b f
d 4
3

Figura A6.12

Cálculo del retardo: Cada inversor: 1.2, el nand aporta: 1.4+0.4*1=1.8. La señal de entrada
se asume con un cambio de 0.3. Resulta: 0.3+1.2+1.8+1.2=4.5.

A6.6. Mapeo tecnológico a FPGA.

Las arquitecturas de las fpga más representativas están formadas por arreglos repetidos de
bloques lógicos idénticos. Los bloques típicos son: tablas de búsqueda y arreglos de
multiplexores.

Arquitecturas basadas en multiplexores.

El comando act_map realiza el mapeo sobre una fpga con arquitectura Actel. Con el flag –r
<filename> se escribe el mapeo en el archivo de nombre filename. No es necesario cargar una
biblioteca.
En la Figura A6.13 se ilustra el bloque básico, que implementa la siguiente ecuación:

out ( s0 s1 )( s A A0 s A A1 ) ( s0 s1 )( sB B0 sB B1 )

s0
s1
sA

A0 0

A1 1

0
sB out
1

B0 0
B1 1

Figura A6.13

La siguiente ecuación: f=a*b*c*d'; una vez cargada, mediante el comando:


act_map –r <nombre_archivo>, genera el siguiente mapeo:

MODEL "ejmapfpga.eqn";

TECHNOLOGY scmos;
VIEWTYPE SYMBOLIC;

Profesor Leopoldo Silva Bijit 19-01-2010


20 Sistemas Digitales
EDITSTYLE SYMBOLIC;

INPUT "a" : "a";


INPUT "b" : "b";
INPUT "c" : "c";
INPUT "d" : "d";

OUTPUT "f" : "[2]";

INSTANCE "BASIC_BLOCK":physical NAME = INST0;


"A0" : "GND";
"A1" : "c";
"SA" : "b";
"B0" : "GND";
"B1" : "GND";
"SB" : "Vdd";
"S0" : "d";
"S1" : "GND";
"out" : "[3]";

INSTANCE "BASIC_BLOCK":physical NAME = INST1;


"A0" : "GND";
"A1" : "GND";
"SA" : "Vdd";
"B0" : "GND";
"B1" : "[3]";
"SB" : "Vdd";
"S0" : "a";
"S1" : "GND";
"out" : "[2]";

ENDMODEL;

Se tiene, para la instancia 0, la ecuación del bloque, en la cual se reemplazaron las entradas:
[3] (d 0)(b 0 b c) (d 0)(1 0 1 0) bcd

Reemplazando en la instancia 1, de la ecuación del bloque, se obtiene:


[2] (a 0)(1 0 1 0) ( a 0)(1 0 1 [3]) a 3 abcd

Que comprueba el mapeo realizado, usando dos bloques.

Mapeo a xilinx

Write_xnf –pXC40 <nombre_archivo>


Genera archivo con extensión xnf, que es compatible con las herramientas xilinx.

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 6. Uso de sis 21
Write_xnf –p X4 out.xnf

A6.7. Minimización y asignación de estados.

Los métodos descritos en el Capítulo 12, quedan restringidos a matrices de transiciones con
un número limitado de renglones y columnas.

Ejemplo A6.7. Formato kiss en Sis.

Se tiene la siguiente matriz de transiciones, ver capítulo 12, ejemplo 12.3:

Estado/Entrada 0 1
A E/0 D/1
B F/0 D/0
C E/0 B/1
D F/0 B/0
E C/0 F/1
F B/0 C/0

Figura A6.14. Matriz de transiciones Ejemplo A6.7.

#La descripción se almacena el ej12_3.blif


.start_kiss
# una entrada (i), una salida (o) y 6 estados (s)
.i 1
.o 1
.s 6 # número de estados
.r A # reset lleva a estado A.
# <entrada> <EstadoActual> <ProximoEstado> <salida>
0AE0
1AD1
0BF0
1BD0
0CE0
1CB1
0DF0
1DB0
0EC0
1EF1
0FB0
1FC0
.end_kiss
.end

Después de leer el archivo, puede efectuarse la minimización:


sis> read_blif ej12_3.blif
sis> state_minimize
sis> write_blif

Profesor Leopoldo Silva Bijit 19-01-2010


22 Sistemas Digitales
Se reducen dos estados, y se cambian automáticamente los identificadores de los estados,
resulta:
.start_kiss
.i 1
.o 1
.p 8
.s 4
.r S1
0 S0 S3 0
1 S0 S0 0
0 S3 S0 0
1 S3 S1 0
0 S1 S2 0
1 S1 S0 1
0 S2 S1 0
1 S2 S3 1
.end_kiss

La asignación de estados se logra con el comando state_assign, el cual además genera el


diseño de la red booleana. Se han agregado comentarios a los identificadores elegidos por el
programa:

.model ej12_3.blif
.inputs IN_0
.outputs OUT_0
.latch v3.0 LatchOut_v1 0 # flip-flop con entrada v3.0 y salida v1.
.latch v3.1 LatchOut_v2 1 # flip-flop con entrada v3.1 y salida v2.
.start_kiss #la aplicación repite el código con las transiciones entre estados.
.i 1
.o 1
.p 8
.s 4
.r S1
0 S0 S3 0
1 S0 S0 0
0 S3 S0 0
1 S3 S1 0
0 S1 S2 0
1 S1 S0 1
0 S2 S1 0
1 S2 S3 1
.end_kiss
.latch_order LatchOut_v1 LatchOut_v2 #códigos asignados
.code S0 00
.code S3 11
.code S1 01
.code S2 10
.names IN_0 LatchOut_v1 LatchOut_v2 OUT_0 #ecuación de salida
101 1

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 6. Uso de sis 23
110 1
.names IN_0 LatchOut_v1 LatchOut_v2 v3.0 #entrada flip-flop v2
00- 1
110 1
.names IN_0 LatchOut_v1 LatchOut_v2 v3.1 #entrada flip-flop v1
11- 1
0-0 1
.end

Las ecuaciones que describen las redes combinacionales de salida y próximo estado, se
obtienen con el comando write_eqn.

INORDER = IN_0 LatchOut_v1 LatchOut_v2;


OUTORDER = v3.0 v3.1 OUT_0;
OUT_0 = IN_0*LatchOut_v1*!LatchOut_v2 + IN_0*!LatchOut_v1*LatchOut_v2;
v3.0 = IN_0*LatchOut_v1*!LatchOut_v2 + !IN_0*!LatchOut_v1;
v3.1 = !IN_0*!LatchOut_v2 + IN_0*LatchOut_v1;

Out_0
LatchOut_v1
v3.0
LatchOut_v2
v3.1
IN_0
clk

Figura A6.15. Red booleana.

De blif a Verilog.
Considerando que con una señal de reset, la máquina debe ir al estado inicial S1=01, el cual
equivale a LatchOut_v1=0 y LatchOut_v2=1, puede traducirse las ecuaciones a un módulo
Verilog, considerando el esquema de procesos, tipo Mealy, de la Figura A6.15 a.
Reset’

x P1 z P2

Y y
DQ

clk

Figura A6.15a. Esquema procesos verilog.

Profesor Leopoldo Silva Bijit 19-01-2010


24 Sistemas Digitales
module ej12_3 (input clk, Resetn, IN_0, output OUT_0);
reg LatchOut_v1, LatchOut_v2;
wire OUT_0, v3_0,v3_1;
// Redes combinacionales de próximo estado y de salida. P1
assign OUT_0 = (IN_0&LatchOut_v1&~LatchOut_v2) | (IN_0&~LatchOut_v1&LatchOut_v2);
assign v3_0 = (IN_0&LatchOut_v1&~LatchOut_v2) | ( ~IN_0&~LatchOut_v1);
assign v3_1 =( ~IN_0&~LatchOut_v2) | (IN_0&LatchOut_v1);

// Proceso registro. P2
always @(negedge Resetn or posedge clk)
if (Resetn == 0) begin LatchOut_v1<=0; LatchOut_v2 <= 1; end //Inicial=01
else begin LatchOut_v1<=v3_0; LatchOut_v2 <= v3_1; end
endmodule

Se han colocado los operadores booleanos de verilog, y el nombre de las señales blif v3.0 y
v3.1, por identificadores válidos verilog.
Ejemplo A6.7a.
El diagrama de estados del ejemplo 12.4, en formato kiss2:
#ej12_4.kiss2
.i 1
.o 1
.p 30
.s 15
.r a
0ab0
1ac0
0bd0
1be0
0cf0
1cg0
0dh0
1di0
0ej0
1ek0
0fl0
1fm0
0gn0
1go0
0ha0
1ha0
0ia0
1ia0
0ja0
1ja0
0ka0
1ka0
0la0

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 6. Uso de sis 25
1la0
0ma1
1ma1
0na1
1na1
0oa1
1oa1
.e
Luego de ejecutar: read_kiss ej12_4.kiss2 y state_minimize, con write_kiss se obtiene:
.i 1
.o 1
.p 16
.s 8
.r S3
0 S0 S3 1
1 S0 S3 1
0 S3 S4 0
1 S3 S5 0
0 S1 S3 0
1 S1 S3 0
0 S2 S1 0
1 S2 S1 0
0 S4 S2 0
1 S4 S2 0
0 S5 S6 0
1 S5 S7 0
0 S6 S1 0
1 S6 S0 0
0 S7 S0 0
1 S7 S0 0
Logrando una reducción a 8 estados. Ahora el inicial es S3.

Ejemplo A6.8. Nova

Reconocedor de secuencias de largo 4. Salida uno cuando llegan: 0110 y 1010; salida cero
en el resto de los casos. El comando externo reset, debe llevar al estado inicial E0.

Entrada
Estado 0 1
E0 E1/0 E2/0
E1 E3/0 E4/0
E2 E4/0 E3/0
E3 E5/0 E5/0
E4 E5/0 E6/0
E5 E0/0 E0/0
E6 E0/1 E0/0

Figura A6.16 Matriz de transiciones Ejemplo A6.8

Profesor Leopoldo Silva Bijit 19-01-2010


26 Sistemas Digitales
En el Capítulo 12 se obtienen mediante reglas heurísticas:

Primera regla: E3 adyacente con E4; E5 con E6


Segunda regla: E1 adyacente con E2; E3 con E4; E5 con E6.
Tercera regla: Para entrada 0, estados E0, E1, E2, E3, E4, E5 adyacentes entre sí. E0, E1, E2,
E3, E4, E5, E6 adyacentes entre sí para entrada 1. Dando preferencia a las dos primeras reglas,
se obtuvo la asignación que se muestra en la Figura A6.17:
V1V2
V3 00 01 11 10
0 2 6 4
0 E0 E3 E6

1 3 7 5
1 E1 E4 E5 E2

Figura A6.17. Asignación por reglas.

La descripción de la máquina secuencial:

.start_kiss
.i 1
.o 1
.s 7
.r E0
# <entrada> <EstadoActual> <ProximoEstado> <salida>
0 E0 E1 0
1 E0 E2 0
0 E1 E3 0
1 E1 E4 0
0 E2 E4 0
1 E2 E3 0
0 E3 E5 0
1 E3 E5 0
0 E4 E5 0
1 E4 E6 0
0 E5 E0 0
1 E5 E0 0
0 E6 E0 1
1 E6 E0 0
.end_kiss
.end

Luego de minimizar y asignar estados, con el comando state_assig, se obtiene la siguiente


asignación:

.latch_order LatchOut_v1 LatchOut_v2 LatchOut_v3

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 6. Uso de sis 27
.code E0 000
.code E1 001
.code E2 100
.code E3 011
.code E4 101
.code E5 111
.code E6 110
La cual se muestra en la Figura A6.18.
V1V2
V3 00 01 11 10
0 2 6 4
0 E0 E6 E2

1 3 7 5
1 E1 E3 E5 E4

Figura A6.18. Asignación por defecto de nova.

El programa nova, tiene diferentes algoritmos de asignación de estados.


El comando: state_assign nova –h, produce un listado de opciones.
Por defecto aplica la opción –e ig, que aplica sólo las restricciones debidas a la entrada.

Ejecutando el comando: state_assign nova –e ioh, se aplican restricciones debidas a la


entrada y salida, y da mejores resultados. Se obtiene la asignación:
.code E0 110
.code E1 011
.code E2 001
.code E3 000
.code E4 010
.code E5 100
.code E6 101

En este caso se cumplen las dos primeras reglas.


V1V2
V3 00 01 11 10
0 2 6 4
0 E3 E4 E0 E5

1 3 7 5
1 E2 E1 E6

Figura A6.19. Asignación –e ioh.

Profesor Leopoldo Silva Bijit 19-01-2010


28 Sistemas Digitales
Ejemplo A6.9. Jedi.

Como alternativa para efectuar la asignación de estados se dispone de la aplicación Jedi. Que
permite generar la codificación binaria de entradas y/o salidas descritas en forma simbólica. A
la vez, si se describe la matriz de transiciones entre estados en forma simbólica (formato kiss),
puede efectuar la asignación de estados.
Como puede verificarse la elección de los códigos binarios puede significar un ahorro
considerable en el costo de la implementación.

El comando: jedi ej12_8.blif, genera en la salida estándar, en formato blif, la asignación de


estados.
Si se redirige la salida a un archivo se obtiene otro que luego puede ser procesado, dentro de
sis. Por ejemplo: jedi ej12_8.blif > ej128as.blif.

Si se comunica la salida de jedi con espresso, mediante una cañería o “pipe”, puede
obtenerse el diseño minimizado de las redes combinacionales. En este caso debe agregarse la
opción –p, para generar el formato pla, que es compatible con espresso.
Por ejemplo: jedi –p ej12_8.blif | espresso > ej12.pla, genera el siguiente archivo:

# JEDI, official release 1.2


#
# States.E0 100
# States.E1 111
# States.E2 110
# States.E3 001
# States.E4 101
# States.E5 000
# States.E6 010
#
.i 4
.o 4
.ilb v.0 v.1.0 v.1.1 v.1.2
.ob v.2.0 v.2.1 v.2.2 v.3
.p 7
001- 0001
1-11 1000
110- 0100
-100 1100
01-0 1010
-0-0 1000
-11- 0010
.e

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 6. Uso de sis 29

v.2.0
v.1.0
v.2.1
v.1.1
v.2.2
v.1.2
v.3
v_0 clk

Figura A6.20. Asignación jedi.

El comando: jedi –h, muestra las opciones de codificación que pueden emplearse. Por
ejemplo, el comando: jedi –e c ej12_8.blif, emplea una combinación de codificación de las
entradas y salidas.
En el manual de la aplicación, puede encontrarse la descripción del formato para
codificación con entradas y salidas simbólicas.

Ejemplo A6.10. Modelo Mealy.

El siguiente diagrama representa a una máquina secuencial de estados finitos que tiene salida
uno cada vez que las últimas tres entradas son la secuencia 101; cero en el resto de las
secuencias de entrada.
0/0

0/0 1/0
1/1
st0 st1 st2
1/0 0/0 st3
0/0

1/0
reset

Figura A6.21. Detector secuencia 101.

Puede describirse el diagrama por su matriz de transiciones.

.model 101 # salida 1 cada vez que las últimas tres entradas sean 1, 0, 1
.start_kiss
.i 1
.o 1
0 st0 st0 0
1 st0 st1 0
0 st1 st2 0

Profesor Leopoldo Silva Bijit 19-01-2010


30 Sistemas Digitales
1 st1 st1 0
0 st2 st0 0
1 st2 st3 1
0 st3 st2 0
1 st3 st1 0
.end_kiss
.end

Los comandos:
sis> read_blif model101.blif
sis> state_minimize
sis> state_assign
sis> write_blif

Generan el siguiente archivo, con el diseño:

.model model101
.inputs v0
.outputs v3.2
.latch [6] v1 0
.latch [7] v2 0
.start_kiss
.i 1
.o 1
.p 8
.s 4
.r st0
0 st0 st0 0
1 st0 st1 0
0 st1 st2 0
1 st1 st1 0
0 st2 st0 0
1 st2 st3 1
0 st3 st2 0
1 st3 st1 0
.end_kiss
.latch_order v1 v2
.code st0 00
.code st1 11
.code st2 01
.code st3 10
.names v0 [6]
11
.names v0 v1 v2 [7]
-1- 1
1-0 1

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 6. Uso de sis 31
.names v0 v1 v2 v3.2
101 1
.end
Que describe la red, formada por dos flip-flops.

Si se eliminan las líneas que describen la matriz de transiciones y la asignación de estados,


resulta:

.model model101
.inputs v0
.outputs v3.2
.latch [6] v1 0
.latch [7] v2 0
.names v0 [6]
11
.names v0 v1 v2 [7]
-1- 1
1-0 1
.names v0 v1 v2 v3.2
101 1
.end

v3.2
v1
[6]
v2
[7]
v0
clk

Figura A6.22. Modelo blif, detector secuencia 101.

Empleando: x para la entrada, z para la salida, y con flip-flops Ds, puede escribirse:
.model model101
.inputs x
.outputs z
.latch D1 Q1 0
.latch D2 Q2 0
.names x D1
11
.names x Q1 Q2 D2
-1- 1
1-0 1
.names x Q1 Q2 z
101 1
.end

Profesor Leopoldo Silva Bijit 19-01-2010


32 Sistemas Digitales
Del formato blif, pueden escribirse las ecuaciones para los flip-flops y la salida:
Z= xQ1’Q2; D1= x; D2=xQ2’+Q1

Las ecuaciones pueden obtenerse dentro de sis, mediante el comando print.


De blif a Verilog.
Ecuaciones de las cuales puede describirse la estructura de la red en Verilog:

// output 1 whenever last 3 inputs were 1, 0, 1


module model101 (input clk, Resetn, x, output z);
reg Q1, Q2;
wire z, D1, D2;
// Redes combinacionales de próximo estado y de salida. P1
assign z = (x&~Q1&Q2);
assign D1 = x;
assign D2 = (x&~Q2) | (Q1);

// Proceso registro. P2
always @(negedge Resetn or posedge clk)
if (Resetn == 0) begin Q1<=0; Q2 <= 0; end //Inicial=00
else begin Q1<=D1; Q2 <=D2; end
endmodule

Si se agregan los módulos siguientes puede efectuarse una simulación, con una secuencia de
entrada: 10100100.

module test(z,x,clk,Resetn);
input z;
output x,clk,Resetn;

reg x,clk,Resetn;

initial
begin
$dumpfile("model101.vcd");
$dumpvars(0, x, Resetn,clk,z);
end

initial begin: DetenerSimulacion


// Detiene la simulación después de 100 unidades de tiempo de simulación.
#1000 $stop;
end

initial
begin
$monitor("x=%b z=%b Resetn=%b clk=%b ", x,z, Resetn, clk, $time);
Resetn=1;clk=0;x=0;

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 6. Uso de sis 33
#5 Resetn=0;
#5 Resetn=1;
#5 x=1;
#5 clk=~clk;
#5 clk=~clk;
#5 x=0;
#5 clk=~clk;
#5 clk=~clk;
#5 x=1;
#5 clk=~clk;
if(z!=1) $display("error salida debe ser 1.");
#5 clk=~clk;
#5 x=0;
#5 clk=~clk;
#5 clk=~clk;
#5 x=1;
#5 clk=~clk;
if(z!=1) $display("error salida debe ser 1.");
#5 clk=~clk;
#5 x=0;
#5 clk=~clk;
#5 clk=~clk;
#5 x=0;
#5 clk=~clk;
#5 clk=~clk;
#5 $finish;
end
endmodule

module BancoDePrueba;
wire clk,Resetn,x,z;
model101 m1 (clk, Resetn,x,z);
test t1 (z,x,clk,Resetn);
endmodule

Pueden visualizarse las formas de ondas que se generan en el archivo model101.vcd:

Figura A6.23. Formas de ondas. Secuencia de entrada 1010100.

Profesor Leopoldo Silva Bijit 19-01-2010


34 Sistemas Digitales
La salida z es asincrónica, debido al Modelo de Mealy. No se especificó escala de tiempo en
la simulación.

Ejemplo A6.11. Modelo de Moore.

El siguiente diagrama de Moore representa a una máquina secuencial de estados finitos, que
tiene salida uno cada vez que las últimas tres entradas son la secuencia 101; cero en el resto de
las secuencias de entrada.
0

0 1

st0 st1 st2 1 st3


0 1 0 0 0
1
0

1
reset

Figura A6.24. Detector secuencia 101.

La descripción de los estados:

.model m101Moore
.inputs x
.outputs z
.start_kiss
.i 1
.o 1
.p 8
.s 4
.r st0
0 st0 st0 0
1 st0 st1 0
0 st1 st2 0
1 st1 st1 0
0 st2 st0 0
1 st2 st3 0
0 st3 st2 1
1 st3 st1 1
.end_kiss

Luego de diseñar en sis, se obtiene:

.model m101Moore

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 6. Uso de sis 35
.inputs x
.outputs z
.latch x LatchOut_v1 0
.latch v3.1 LatchOut_v2 0
.names LatchOut_v1 LatchOut_v2 z
10 1
.names x LatchOut_v1 LatchOut_v2 v3.1
-1- 1
1-0 1
.end
De blif a Verilog.
El cual se puede escribir como un módulo Verilog. Nótese que sólo cambia el proceso
combinacional.

module model101Moore (input clk, Resetn, x, output z);


reg Q1, Q2;
wire z, D1, D2;
// Redes combinacionales de próximo estado y de salida. P1
assign z = (Q1&~Q2);
assign D1 = x;
assign D2 = (x&~Q2) | (Q1);

// Proceso registro. P2
always @(negedge Resetn or posedge clk)
if (Resetn == 0) begin Q1<=0; Q2 <= 0; end //Inicial=00
else begin Q1<=D1; Q2 <=D2; end
endmodule

El siguiente módulo de prueba ilustra la generación de la secuencia dentro de un lazo for.

module test(z,x,clk,Resetn);
input z;
output x,clk,Resetn;
reg x,clk,Resetn;
reg [1:10] sec; //variable para almacenar secuencia de entrada
integer j;
initial
begin
$dumpfile("model101.vcd");
$dumpvars(0, x, Resetn, clk, z);
end

initial
begin
sec={1'b1,1'b0,1'b1,1'b0,1'b1,1'b0,1'b0,1'b1,1'b0,1'b1}; //inicio secuencia
//for (j=1;j<11;j=j+1) $display(" %d %b", j, sec[j]);

Profesor Leopoldo Silva Bijit 19-01-2010


36 Sistemas Digitales
$monitor("x=%b z=%b Resetn=%b clk=%b ", x,z, Resetn, clk, $time);
Resetn=1;clk=0;x=0;
#5 Resetn=0;
#5 Resetn=1;
for (j=1;j<11;j=j+1)
begin
#5 x=sec[j];
#5 clk=~clk; //subida
#5 clk=~clk;
if(j>2)
if( (x==1)&&(sec[j-1]==0)&&(sec[j-2]==1)&&(z==1)) $display ("ok");
end
#5 $finish;
end
endmodule

ok
Figura A6.25. Formas de ondas. Modelo de Moore.

En la Figura A6.25, se muestra el momento en el que debe imprimirse “ok”, para


indicar que detectó la secuencia 101 en la entrada.

A6.8. Conversión de blif a VHDL.

En la distribución de sis se dispone de dos aplicaciones que permiten convertir archivos en


formato blif a vhdl y viceversa. El formato blif debe especificar las compuertas y flip-flops
como compuertas de biblioteca; es decir debe estar mapeado tecnológicamente.

Requieren de una biblioteca genlib, como primer argumento. La entrada y salida pueden ser
redirigidas desde y hacia archivos.

Para pasar de blif a vhdl:


blif2vst ejlib.genlib < intro.blif > intro.vhd

Para convertir de vhdl a blif:


vst2blif ejlib.genlib < intro.vhd > intro.blif

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 6. Uso de sis 37
Ejemplo A6.12.

Una compuerta de biblioteca crea una instancia de una compuerta o flip-flop dependiente de
la tecnología. Los parámetros de esas compuertas están definidos en una biblioteca con formato
genlib. Con la siguiente biblioteca, almacenada en un archivo con nombre: ejlib.genlib:
#
# library gates + flip-flop + buffer
# Mnemonic gate names
#
# --- COMBINATIONAL GATES
GATE "inv_comb" 16 O=!1A; PIN * INV 1 999 1 .2 1 .2
GATE "buffer_comb" 16 O=1A; PIN * NONINV 1 999 1 .2 1 .2
GATE "and2_comb" 32 O2=1A*1B; PIN * NONINV 1 999 1 .2 1 .2
GATE "or2_comb" 32 O1=1A+1B; PIN * NONINV 1 999 1 .2 1 .2
GATE "const1_comb" 8 O=CONST1;
GATE "const0_comb" 8 O=CONST0;
# --- EDGE_TRIGGERED FLIP FLOPS
# D-FF
LATCH "dff_re" 88 Q=D;
PIN D NONINV 1 999 1 .2 1 .2
SEQ Q ANY RISING_EDGE
CONTROL CLK 1 999 1 .2 1 .2
CONSTRAINT * .2 .2

Para el siguiente esquemático, la descripción blif con mapeo tecnológico, es la siguiente:

E1n E2
E1
S1

E4
E0
E3 S0
E0n

Figura A6.26. Esquemático intro.blif.

#intro.blif
.model intro
.inputs E1, E0
.outputs S1, S0

.gate inv_comb 1A=E1 O=E1n


.gate inv_comb 1A=E0 O=E0n
.gate and2_comb 1A=E1n 1B=E0 O2=E2
.gate and2_comb 1A=E1 1B=E0n O2=E3
.gate or2_comb 1A=E2 1B=E3 O1=E4
.gate buffer_comb 1A=E0n O=S0

Profesor Leopoldo Silva Bijit 19-01-2010


38 Sistemas Digitales
.gate buffer_comb 1A=E4 O=S1
.end

El cual puede ser traducido a vhdl:


--intro.vhd
--[]-----------------------------------------[]--
-- | File created by Blif2Sls v1.0 | --
-- | | --
-- | by Roberto Rambaldi | --
-- | D.E.I.S. Universita' di Bologna | --
--[]-----------------------------------------[]--
ENTITY intro IS
PORT(E1, E0: in BIT ; S1, S0: out BIT );
END intro;

ARCHITECTURE structural_from_SIS OF intro IS


COMPONENT "inv_comb"
PORT (O : out BIT ; 1A : in BIT );
END COMPONENT;
COMPONENT "buffer_comb"
PORT (O : out BIT ; 1A : in BIT );
END COMPONENT;
COMPONENT "and2_comb"
PORT (O2 : out BIT ; 1A : in BIT ; 1B : in BIT );
END COMPONENT;
COMPONENT "or2_comb"
PORT (O1 : out BIT ; 1A : in BIT ; 1B : in BIT );
END COMPONENT;

SIGNAL E1 : BIT;
SIGNAL E1n : BIT;
SIGNAL E0 : BIT;
SIGNAL E0n : BIT;
SIGNAL E2 : BIT;
SIGNAL E3 : BIT;
SIGNAL E4 : BIT;
SIGNAL S0 : BIT;
SIGNAL S1 : BIT;
BEGIN
inst0 : "inv_comb"
PORT MAP (O => E1n, 1A => E1);
inst1 : "inv_comb"
PORT MAP (O => E0n, 1A => E0);
inst2 : "and2_comb"
PORT MAP (O2 => E2, 1A => E1n, 1B => E0);
inst3 : "and2_comb"
PORT MAP (O2 => E3, 1A => E1, 1B => E0n);

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 6. Uso de sis 39
inst4 : "or2_comb"
PORT MAP (O1 => E4, 1A => E2, 1B => E3);
inst5 : "buffer_comb"
PORT MAP (O => S0, 1A => E0n);
inst6 : "buffer_comb"
PORT MAP (O => S1, 1A => E4);
END structural_from_SIS;

A6.9. Síntesis de circuitos asincrónicos.

Mediante ejemplos simples se describe el uso de SIS para el diseño o síntesis de dispositivos
asincrónicos.

Los circuitos asincrónicos pueden describirse por un grafo de transiciones de señales


(ASTG). Se denominan transiciones a los eventos que representan cambios de los valores de las
señales de entrada o salida. Los estados o lugares representan las pre y post condiciones de las
transiciones.

Ejemplo A6.13.

Se tienen dos circuitos asincrónicos que interactúan entre sí a través de las señales: x, y, z.
x

Figura A6.27. Comunicación entre máquinas asincrónicas.

Los siguientes eventos se ilustran en la Figura A6.28: Un canto de subida de x desencadena


cantos de subida en z y en y. Un canto de subida en z implica un canto de bajada en x. Un canto
de subida en y, y un canto de bajada en x, producen un canto de bajada en z; éste último
desencadena un canto de bajada en y; el que a su vez produce un canto de subida en x.

Figura A6.28. Eventos.

Profesor Leopoldo Silva Bijit 19-01-2010


40 Sistemas Digitales
El circuito a la derecha de la Figura A6.27, con entrada y, y con salidas x, z, puede
describirse mediante el siguiente grafo:

.model example
.inputs y
.outputs x z
.graph
x+ z+
x+ y+
z+ x-
x- z-
y+ z-
z- y-
y- x+
.end

El circuito a la izquierda tiene el mismo grafo, pero tiene como entradas a: x, z; con salida y.
El grafo puede almacenarse en el archivo: ex2astg.g, que se empleará más adelante.

Las listas de las señales de entrada y salida son separadas por espacios, no por comas. Un
nombre de señal seguido del símbolo + representa un canto de subida; seguido por el símbolo –
representa un canto de bajada. Puede usarse ~ para indicar conmutación. Cada línea describe un
elemento del grafo orientado, el cual se ilustra en la Figura A6.29.

z+ x-

x+ y+ z-

y-

Figura A6.29. Grafo ASTG.

Si se dispara x+, esta transición marca los lugares implícitos entre x+ y z+ y entre x+ e y+.
Entonces el evento x+ habilita las transiciones z+ e y+. Las transiciones z+ e y+ no comparten
precondiciones, por lo cual pueden dispararse en cualquier orden, se dice que son concurrentes.
Cuando las transiciones y+ y x- se disparan se habilita z-, ya que ambas precondiciones están
marcadas.

La representación, que es más general que el ejemplo simple que se ilustra, permite hacer
circular tokens a través del grafo, con lo cual pueden representarse las interacciones del circuito
con su ambiente. El ejemplo ilustra un caso sencillo de comunicación entre dispositivos
asincrónicos.

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 6. Uso de sis 41
Estando dentro de SIS, el comando: read_astg <nombre_archivo> ingresa el grafo.

sis> read_astg exastg.g

sis> astg_syn

El comando astg_syn sintetiza el grafo en una implementación en dos niveles. Con una
asignación de estados libre de carreras.

El comando print muestra la red boolena.


sis> print
x_next = x_ z_' + y' z_'
z_next = x_ + y' z_
{x} = x_
{z} = z_

Las variables de estado se muestran seguidas de un underscore. Las salidas de las redes
combinacionales se muestran seguidas de next, por próximo estado.
Las ecuaciones anteriores resumen el diseño asincrónico mediante compuertas.

El comando astg_print_sg muestra el grafo con la asignación de estados y las transiciones


habilitadas en cada lugar.

sis> astg_print_sg
STATE GRAPH
state 0 : (y=0 x=0 z=0 )
enabled transitions : [x+ ]
state 1 : (y=0 x=1 z=0 )
enabled transitions : [y+ z+ ]
state 2 : (y=0 x=0 z=1 )
enabled transitions : [y+ ]
state 3 : (y=0 x=1 z=1 )
enabled transitions : [y+ x- ]
state 4 : (y=1 x=0 z=0 )
enabled transitions : [y- ]
state 5 : (y=1 x=1 z=0 )
enabled transitions : [z+ ]
state 6 : (y=1 x=0 z=1 )
enabled transitions : [z- ]
state 7 : (y=1 x=1 z=1 )
enabled transitions : [x- ]

La descripción gráfica de las transiciones entre estados, del listado anterior, se muestra en la
Figura A6.30.

Profesor Leopoldo Silva Bijit 19-01-2010


42 Sistemas Digitales

xyz
000
x+
z+ 100 y+

x- 101 110
y- y+ z+
001 111
y+ x-
011
z-
010

Figura A6.30. Diagrama de transiciones.

Si se realiza el diseño para la red asincrónica a la izquierda de la Figura A6.27, resulta


sis> read_astg ex2astg.g
sis> astg_syn
sis> print
{y_next} = x + z
Ahora se tiene la variable de estado y.

Resumiendo las ecuaciones obtenidas, en ambos diseños, se obtiene, para las variables de
estado, identificando los próximos estados con el nombre de la variable seguida del símbolo +:

x z (x y)
z x y z
y z x

Las cuales pueden representarse por el esquemático de la Figura A6.31:

Figura A6.31. Red asincrónica.

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 6. Uso de sis 43
Modificando el circuito de la Figura A6.31, agregando la señal r, que permite establecer el
estado inicial como x=0, y=0 y z=0, se obtiene:

a
r x

Figura A6.32. Red asincrónica con señal de reset r.

Módulo que puede simularse, mediante Verilog, según:

module ej(r, x, y, z);


input r;
output x, y, z;
wire a, b;
or #2 G1 (y, x, z);
not #1 G2 (xp, x);
not #1 G3 (yp, y);
not #1 G4 (rp, r);
and #2 G5 (a, xp, y);
and #2 G6 (b, yp, z, rp);
nor #2 G7 (x, r, a, z);
or #4 G8 (z, x, b); // z se genera más lentamente que y
endmodule

Con lo cual pueden obtenerse las formas de ondas:

Figura A6.33. Formas de ondas.

Profesor Leopoldo Silva Bijit 19-01-2010


44 Sistemas Digitales
Ejemplo A6.14.

Latch transparente. Sean las siguientes formas de ondas que especifican un latch, con D y G
entradas y salida Q:
1 2 3 4
G

Figura A6.34. Formas de ondas latch.

Se indican cuatro pulsos de G. En el intervalo 1, puede ocurrir primero el canto de bajada de


D o bien el canto de subida de G; en la Figura A6.34 ocurre primero el canto de subida de G.

Para representar esta situación, puede definirse un lugar LQ1, de éste pueden gatillarse, en
cualquier orden, las transiciones G+ o D-.

El grafo de la Figura A6.35, muestra los lugares con círculos dobles, las transiciones con
círculos simples; un token como un punto negro, en el lugar LQ1. Esta marca indica que las
precondiciones se han cumplido; en el caso del ejemplo, significa que ya se produjo el canto de
bajada de G. Las diferentes instancias de G se enumeran de acuerdo a los números de la Figura
A6.34.

Cuando todas las pre-condiciones de una transición se han cumplido, ésta puede dispararse,
cambiando su valor y el token pasa a su post-condición. Los lugares con una pre-condición y
una post-condición se denominan lugares implícitos y no se dibujan. Un token sólo puede pasar
a un lugar, lo cual modela que los eventos deben producirse con una mínima separación
temporal entre ellos. Se acepta un no determinismo sólo en las entradas.
LQ0
LQ1

G+/3
D+
G+/1 D-

G-/3
G+/4
G-/1 G+/2

Q+
Q-

G-/2 G-/4

Figura A6.35. ASTG del latch.

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 6. Uso de sis 45
En caso de estar en LQ1 se puede producir G+ o D- pero no ambas. Estando en LQ0 sólo se
puede producir una de las dos posibles: D+ o G+.

La descripción del grafo puede anotarse:


.name dlatch
.inputs D G
.outputs Q
.graph
LQ1 G+/1 D-
G+/1 G-/1
G-/1 LQ1
D- G+/2
G+/2 Q-
Q- G-/2
G-/2 LQ0
LQ0 G+/3 D+
G+/3 G-/3
G-/3 LQ0
D+ G+/4
G+/4 Q+
Q+ G-/4
G-/4 LQ1
.end

La síntesis puede realizarse según:

sis> read_astg dlatch.g


sis> astg_syn
sis> print
Q_next = G D + G' Q_ + D Q_
{Q} = Q_

sis> astg_print_sg
STATE GRAPH
state 7 : (D=1 CLK=1 Q=1 )
enabled transitions : [CLK- ]
state 6 : (D=1 CLK=1 Q=0 )
enabled transitions : [Q+ ]
state 5 : (D=0 CLK=1 Q=1 )
enabled transitions : [Q- ]
state 4 : (D=0 CLK=1 Q=0 )
enabled transitions : [CLK- ]
state 3 : (D=1 CLK=0 Q=1 )
enabled transitions : [D- CLK+ ]
state 2 : (D=1 CLK=0 Q=0 )
enabled transitions : [CLK+ ]
state 1 : (D=0 CLK=0 Q=1 )

Profesor Leopoldo Silva Bijit 19-01-2010


46 Sistemas Digitales
enabled transitions : [CLK+ ]
state 0 : (D=0 CLK=0 Q=0 )
enabled transitions : [D+ CLK+ ]

Del listado anterior puede confeccionarse el diagrama de transiciones:


DGQ
111
G- G+
Q+ 101
D-
110 001
G+
G+
011
100 Q-
010
D+ G- G+
000

Figura A6.36. Diagrama de transiciones del latch.

De las ecuaciones de la red booleana, se obtiene el esquemático en base a compuertas. El


diseño está libre de perturbaciones y sin carreras críticas.

Q
D

Figura A6.37. Circuito latch.

Ejemplo A6.15.

Sintetizar mediante compuertas un sistema digital con dos entradas m y s, y una salida q.

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 6. Uso de sis 47

s
q

Figura A6.38. Entradas y salida de latch.

La Figura A6.39 muestra las relaciones causa-efecto entre las entradas y la salida. El canto
de subida de s, coloca alta la salida q; la señal m, puede ocurrir antes o después del canto de
subida de s, y su canto de bajada (en caso de estar presente) coloca baja la salida q. Si m no está
presente, la bajada de s también pone la salida q baja. El circuito que genera las señales s y m,
además debe cumplir que el canto de bajada de s ocurre antes que el canto de bajada de la señal
m.
s 1 2

m 1 2

q 1 2

Figura A6.39. Formas de ondas latch.

LQ1

s+/1 m+/1

q+ /1 s+/2

LQ2 q+/2

q-
s-/1 m+/2

LQ4 LQ3

m- s-/2

Figura A6.40. ASTG del latch.

Profesor Leopoldo Silva Bijit 19-01-2010


48 Sistemas Digitales
La descripción del grafo resulta:
#sm1.g
.inputs s m
.outputs q
.graph
LQ1 s+/1 m+/1
s+/1 q+/1
q+/1 LQ2
m+/1 s+/2
s+/2 q+/2
q+/2 LQ3

LQ2 s-/1 m+/2


s-/1 p4
m+/2 LQ3

LQ3 s-/2
s-/2 m-
m- LQ4

LQ4 q-
q- LQ1
.end

Notar que se han definido lugares donde existen más de una transición de salida o donde
llega más de una transición de entrada. Los tres recorridos posibles del token, a través del grafo,
representan las tres situaciones ilustradas en las formas de ondas. Se han numerado los cantos,
que especifican instancias de los eventos, en la Figura A6.39.

La síntesis mediante sis, se efectúa con los comandos:


sis> read_astg sm1.g
sis> astg_syn
sis> print
q_next = m q_ + s
{q} = q_

sis> astg_print_sg
STATE GRAPH
state 5 : (s=0 m=1 q=1 )
enabled transitions : [m- ]
state 4 : (s=0 m=1 q=0 )
enabled transitions : [s+ ]
state 7 : (s=1 m=1 q=1 )
enabled transitions : [s- ]
state 6 : (s=1 m=1 q=0 )
enabled transitions : [q+ ]
state 1 : (s=0 m=0 q=1 )

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 6. Uso de sis 49
enabled transitions : [q- ]
state 0 : (s=0 m=0 q=0 )
enabled transitions : [s+ m+ ]
state 3 : (s=1 m=0 q=1 )
enabled transitions : [s- m+ ]
state 2 : (s=1 m=0 q=0 )
enabled transitions : [q+ ]

Las ecuaciones obtenidas permiten dibujar el esquemático del latch.

q
m
s

Figura A6.41. Síntesis del latch.

El diagrama con asignación de estados libre de carreras, puede dibujarse a partir de la


descripción que entrega sis. Se ha mantenido de igual forma que el ASTG de la Figura A6.40,
para reforzar las similitudes y diferencias.

smq 000 0
m+/1
s+/1
100 2 010 4

q+ /1 s+/2
q-
101 3 110 6

s-/1 m+/2
q+/2

001 1

m- 111 7

s-/2
011 5

Figura A6.42. Diagrama de estados.

Profesor Leopoldo Silva Bijit 19-01-2010


50 Sistemas Digitales
Ejemplo A6.16.

Diseñar un contador binario asincrónico ascendente, módulo 4, en base a compuertas, sin


emplear flip-flops, el diseño debe estar libre de perturbaciones y carreras. Con z 1 la cifra más
significativa. Se cuentan los cantos de subida de la señal de entrada x. Expresar el diseño
mediante ecuaciones.

x z1

z0

Figura A6.43. Contador asincrónico módulo cuatro.

Se requieren ocho estados, los que se muestran en la Figura A6.44.

A 0

0 H 1
1
1
1 B G 0

0 0
0 C F 1
1 1
1 D E 0
0

Figura A6.44. Diagrama de estados contador asincrónico módulo cuatro.

Asumiendo q2, q1 y q0 como variables de estado, en la Figura A6.45 se muestran las


relaciones causa-efecto entre la entrada y el estado.

Se han numerado algunos eventos, debido a que, en un período, existen cuatro cantos de
subida y bajada de x, y dos de q0. La descripción del grafo de las transiciones de las señales, se
basa en la Figura A6.45.

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 6. Uso de sis 51

x 1 2 3 4

q2

q1

q0 1 2

z1
z0

Figura A6.45. Eventos en contador módulo 4.

La representación del grafo resulta:


.model cntmod4
.inputs x
.outputs q2 q1 q0
.graph
x+/1 q0+/1
q0+/1 x-/1
x-/1 q1+
q1+ x+/2
x+/2 q0-/1
q0-/1 x-/2
x-/2 q2+
q2+ x+/3
x+/3 q0+/2
q0+/2 x-/3
x-/3 q1-
q1- x+/4
x+/4 q0-/2
q0-/2 x-/4
x-/4 q2-
q2- x+/1
.end

Luego de lo cual puede obtenerse información de las ecuaciones y del diagrama de estados.
sis> read_astg contador.g
sis> astg_syn
sis> print
q2_next = q0_ q2_ + q0_' q1_ x' + q1_ q2_ + q2_ x
q1_next = q0_ q2_' x' + q0_' q1_ + q1_ q2_' + q1_ x
q0_next = q0_ q1_ q2_ + q0_ q1_' q2_' + q0_ x' + q1_ q2_ x + q1_' q2_' x
{q2} = q2_
{q1} = q1_
{q0} = q0_

Profesor Leopoldo Silva Bijit 19-01-2010


52 Sistemas Digitales
Para el diagrama de estados, se obtiene:

sis> astg_print_sg
STATE GRAPH
state 11 : (x=1 q2=1 q1=1 q0=0 )
enabled transitions : [q0+ ]
state 0 : (x=0 q2=0 q1=0 q0=0 )
enabled transitions : [x+ ]
state 1 : (x=0 q2=1 q1=0 q0=0 )
enabled transitions : [q2- ]
state 12 : (x=1 q2=0 q1=0 q0=1 )
enabled transitions : [x- ]
state 13 : (x=1 q2=1 q1=0 q0=1 )
enabled transitions : [q0- ]
state 2 : (x=0 q2=0 q1=1 q0=0 )
enabled transitions : [q2+ ]
state 3 : (x=0 q2=1 q1=1 q0=0 )
enabled transitions : [x+ ]
state 14 : (x=1 q2=0 q1=1 q0=1 )
enabled transitions : [q0- ]
state 15 : (x=1 q2=1 q1=1 q0=1 )
enabled transitions : [x- ]
state 4 : (x=0 q2=0 q1=0 q0=1 )
enabled transitions : [q1+ ]
state 5 : (x=0 q2=1 q1=0 q0=1 )
enabled transitions : [x+ ]
state 6 : (x=0 q2=0 q1=1 q0=1 )
enabled transitions : [x+ ]
state 7 : (x=0 q2=1 q1=1 q0=1 )
enabled transitions : [q1- ]
state 8 : (x=1 q2=0 q1=0 q0=0 )
enabled transitions : [q0+ ]
state 9 : (x=1 q2=1 q1=0 q0=0 )
enabled transitions : [x- ]
state 10 : (x=1 q2=0 q1=1 q0=0 )
enabled transitions : [x- ]

Ejemplo A6.17. Contador asincrónico módulo tres.

Primero realizaremos un diseño clásico de la red asincrónica; luego describiremos las


relaciones causa-efecto que determinan el ASTG, y se empleará sis.

La Figura A6.46 muestra un diagrama de estados para el contador asincrónico módulo 3.

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 6. Uso de sis 53

H 1
00
G
00
1 1
1 A F 0
00 10
0 0
0 B E 1
00 10
1 1
1 C D 0
01 0 01

Figura A6.46. Diagrama de estados contador módulo 3.

La asignación de estados se efectúa empleando código Gray, de tal modo que los estados
adyacentes en la Figura A6.46 estén a distancia 1. Se elige arbitrariamente que el estado A esté
asociado al código 000.
G y H son estados inestables, empleados para transitar sin carreras desde estado F hasta el
estado A. Se dejan dos estados próximos sin especificar: estando en G con entrada 0, y estando
en H con entrada 0.
x
q2q1q0 0 1
A 000 001 000 00
B 001 001 011 00
C 011 010 011 01
D 010 010 110 01
E 110 111 110 10
F 111 111 101 10
G 101 - 100 00
H 100 - 000 00
q2+q1+q0+ z1z0

Figura A6.47. Tabla de transiciones contador módulo 3.

La Figura A6.48 muestra un mapa del próximo estado, construido a partir de la tabla de la
Figura A6.47. Minimizando las funciones de próximo estado, libres de perturbaciones, se
obtienen:

q2+ = xq1q0’ + q2q1 + q2q0


q1+ = xq2’q0 + q1q0’+ x’q1 + q2’q1
q0+ = q2q1q0+ q2'q1'q0 + xq2'q0 + x'q1' + x'q2 + xq1q0

Profesor Leopoldo Silva Bijit 19-01-2010


54 Sistemas Digitales

xq2
00 01 11 10
q1q0

00 001 --- 000 000

01 001 --- 100 011

11 010 111 101 011

10 010 111 110 110

q2+q1+q0+

Figura A6.48. Mapa de próximos estados de contador módulo 3.

Las funciones de salida, se representan en el mapa de la Figura A6.49, a partir de la tabla de


la Figura A6.47.
q2q1
00 01 11 10
q0

0 00 01 10 00

1 00 01 10 00

z1z0

Figura A6.49. Mapa de funciones de salida de contador módulo 3.

Se obtienen:
z1 = q2q1; z0 = q2’1

La Figura A6.50 muestra las formas de ondas de los cambios de estado relativas a los pulsos
asincrónicos de la entrada x. Se han enumerado los diferentes cambios de las señales, x y q0, en
un período.

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 6. Uso de sis 55

C D E F G H A B

x 1 2 3

q2

q1

q0 1 2

z1
z0

Figura A6.50. Relaciones causa-efecto contador módulo 3.

La representación del grafo resulta:


.model cntmod3
.inputs x
.outputs q2 q1 q0
.graph
x+/1 q1+
q1+ x-/1
x-/1 q0-/2
q0-/2 x+/2
x+/2 q2+
q2+ x-/2
x-/2 q0+/1
q0+/1 x+/3
x+/3 q1-
q1- q0-/1
q0-/1 q2-
q2- x-/3
x-/3 q0+/2
q0+/2 x+/1
.end

La síntesis, libre de perturbaciones se obtiene mediante:


sis> read_astg cntmod3.g
sis> astg_syn
sis> print
q2_next = q0_ q2_ + q0_' q1_ x + q1_ q2_
q1_next = q0_ q2_' x + q0_' q1_ + q1_ q2_' + q1_ x'
q0_next = q0_ q1_ q2_ + q0_ q1_' q2_' + q0_ q2_' x + q1_' x' + q2_ x'
{q2} = q2_
{q1} = q1_
{q0} = q0_

Profesor Leopoldo Silva Bijit 19-01-2010


56 Sistemas Digitales
En el diseño clásico se obtiene un término adicional, xq1q0, para eliminar perturbaciones en la
función q0+. La posible perturbación se produce con x=1, q1=1, q0=1; ya que con estos valores
la función, sin el término de consenso, queda: q0+= q2 + q2’. Si q2’ se genera a partir de q2, se
producirá la perturbación, de tipo falso cero, en el canto de bajada de q2. Observando las
formas de ondas de la Figura A6.50, se aprecia que el canto de bajada de q2 se produce con
q1=0 y q0=0; de este modo no es necesario emplear el término xq1q0. Debe notarse que la
síntesis de sis no lo genera.

La información del diagrama de estados, se logra con:


sis> astg_print_sg
STATE GRAPH
state 15 : (x=1 q2=1 q1=1 q0=1 )
enabled transitions : [q1- ]
state 4 : (x=0 q2=0 q1=0 q0=1 )
enabled transitions : [x+ ]
state 8 : (x=1 q2=0 q1=0 q0=0 )
enabled transitions : [x- ]
state 9 : (x=1 q2=1 q1=0 q0=0 )
enabled transitions : [q2- ]
state 6 : (x=0 q2=0 q1=1 q0=1 )
enabled transitions : [q0- ]
state 7 : (x=0 q2=1 q1=1 q0=1 )
enabled transitions : [x+ ]
state 10 : (x=1 q2=0 q1=1 q0=0 )
enabled transitions : [q2+ ]
state 0 : (x=0 q2=0 q1=0 q0=0 )
enabled transitions : [q0+ ]
state 11 : (x=1 q2=1 q1=1 q0=0 )
enabled transitions : [x- ]
state 2 : (x=0 q2=0 q1=1 q0=0 )
enabled transitions : [x+ ]
state 3 : (x=0 q2=1 q1=1 q0=0 )
enabled transitions : [q0+ ]
state 12 : (x=1 q2=0 q1=0 q0=1 )
enabled transitions : [q1+ ]
state 13 : (x=1 q2=1 q1=0 q0=1 )
enabled transitions : [q0- ]
state 14 : (x=1 q2=0 q1=1 q0=1 )
enabled transitions : [x- ]

Con la información anterior puede confeccionarse un grafo de transiciones con el estado total;
en éste se identifica el estado como la suma de las entradas y los estados internos, y se muestran
las transiciones únicas entre estados como eventos asincrónicos.

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 6. Uso de sis 57
x-
A = St0 0000 1000 St8
00 00
q0+ q2-
-
0001 1100 St9
B=St4
00 00
x+ q0-

St12 1001 1101 St13


01 00
xq2q1q0 q1+ q1-
z1z2
1011 1111 St15
St14
01 00
x- 1 x+

0011 0111
St6 St7
01 10
q0- q0+

St2 0010 0110 St3


01 10
x+ x-
1010 1110
St10
10 q2+ 10 St11

Figura A6.51. Grafo de transiciones entre estados totales.

Ejemplo A6.18. Elemento C.

Los cuatro posibles recorridos del ASTG se ilustran con las formas de ondas.
Se acepta concurrencia entre las entradas. Estando x baja, puede producirse primero el canto
de a o b; similarmente estando x alta, los cantos de bajada de a y b pueden llegar en cualquier
orden. El canto de subida de x tiene dos precondiciones: que hayan llegado primero los cantos
de subida de a y b.

.model elementoC
.inputs a b
.outputs x
.graph
x- a+ b+
a+ x+
b+ x+
x+ a- b-
a- x-
b- x-
.end

Profesor Leopoldo Silva Bijit 19-01-2010


58 Sistemas Digitales

x-

a+ b+

x+

a- b-

Figura A6.53. ASTG de elemento C.

a 1 2 3 4

b 1 2 3 4

Figura A6.54. Formas de ondas en elemento C.

La síntesis se realize mediante:


sis> read_astg elementoC.g

sis> astg_syn
sis> print
x_next = a b + a x_ + b x_
{x} = x_

x
b

Figura A6.55. Síntesis de elemento C.

sis> astg_print_sg
STATE GRAPH
state 1 : (a=0 b=0 x=1 )

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 6. Uso de sis 59
enabled transitions : [x- ]
state 0 : (a=0 b=0 x=0 )
enabled transitions : [a+ b+ ]
state 3 : (a=1 b=0 x=1 )
enabled transitions : [a- ]
state 2 : (a=1 b=0 x=0 )
enabled transitions : [b+ ]
state 5 : (a=0 b=1 x=1 )
enabled transitions : [b- ]
state 4 : (a=0 b=1 x=0 )
enabled transitions : [a+ ]
state 7 : (a=1 b=1 x=1 )
enabled transitions : [a- b- ]
state 6 : (a=1 b=1 x=0 )
enabled transitions : [x+ ]

Ejemplo A6.19. Compuerta and.

a 1 2 3 4 5

b 1 2 3 4 5

x 1 2 3 4

Figura A6.56. Formas de ondas en compuerta and.

Descripción del grafo asociado a compuerta and.


.model and
.inputs a b
.outputs x
.graph
a+/1 b+/1
b+/1 x+/1
x+/1 a-/1
a-/1 x-/1
x-/1 b-/1

b-/1 a+/2
a+/2 b+/2
b+/2 x+/2
x+/2 b-/2
b-/2 x-/2
x-/2 a-/2

a-/2 b+/3

Profesor Leopoldo Silva Bijit 19-01-2010


60 Sistemas Digitales
b+/3 a+/3
a+/3 x+/3
x+/3 a-/3
a-/3 x-/3
x-/3 b-/3

b-/3 b+/4
b+/4 a+/4
a+/4 x+/4
x+/4 b-/4
b-/4 x-/4
x-/4 a-/4
a-/4 a+/5
a+/5 a-/5
a-/5 b+/5
b+/5 b-/5
b-/5 a+/1
.end

Grafo del estado total.


sis> astg_print_sg
STATE GRAPH
state 0 : (a=0 b=0 x=0 )
enabled transitions : [a+ b+ ]
state 2 : (a=1 b=0 x=0 )
enabled transitions : [a- b+ ]
state 3 : (a=1 b=0 x=1 )
enabled transitions : [x- ]
state 4 : (a=0 b=1 x=0 )
enabled transitions : [a+ b- ]
state 5 : (a=0 b=1 x=1 )
enabled transitions : [x- ]
state 6 : (a=1 b=1 x=0 )
enabled transitions : [x+ ]
state 7 : (a=1 b=1 x=1 )
enabled transitions : [a- b- ]

Finalmente, la síntesis:
sis> print
{x_next} = a b

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 6. Uso de sis 61

Referencias

http://www-cad.eecs.berkeley.edu

SIS: A System for Sequential Circuit Synthesis. Ellen M. Sentovich, Kanwar Jit Singh, Luciano
Lavagno, Cho Moon, Rajeev Murgai, Alexander Saldanha, Hamid Savoj, Paul R. Stephan,
Robert K. Brayton, Alberto Sangiovanni-Vincentelli. Electronics Research Laboratory
Memorandum No. UCB/ERL M92/41, Mayo 1992.

Profesor Leopoldo Silva Bijit 19-01-2010


62 Sistemas Digitales

Índice general.

APÉNDICE 6 .........................................................................................................................................1
USO DE SIS ...........................................................................................................................................1
SEQUENTIAL INTERACTIVE SYSTEM ........................................................................................1
A6.1. INTRODUCCIÓN ..........................................................................................................................1
A6.2. FORMATO BLIF. ..........................................................................................................................1
A6.3. LECTURA Y ESCRITURA DE ARCHIVOS. .......................................................................................3
Ejemplo A6.1. eqn. ........................................................................................................................3
Ejemplo A6.2. blif. .........................................................................................................................3
Ejemplo A6.3. Máquina de estados finitos. ...................................................................................5
Latch genérico. ...............................................................................................................................8
Ejemplo. ................................................................................................................................................ 8
A6.4. COMANDOS PARA MINIMIZACIÓN DE REDES MULTINIVEL. .........................................................8
A6.4.1. Descomposición. ................................................................................................................8
A6.4.2. Eliminación. .......................................................................................................................9
A6.4.3. Simplificación. ...................................................................................................................9
A6.4.4. Resubstitución. .................................................................................................................10
A6.4.5. Factorización. ..................................................................................................................10
A6.4.6. Limpieza. ..........................................................................................................................11
A6.4.7 Archivos de optimización multinivel. ................................................................................11
Ejemplo A6.4. .......................................................................................................................................... 12
A6.4.8. Otros comandos multinivel. ............................................................................................13
A6.5. MAPEO TECNOLÓGICO. ............................................................................................................13
Ejemplo A6.5. ...............................................................................................................................13
tech_decomp .................................................................................................................................15
read_library .................................................................................................................................15
map ...............................................................................................................................................15
Print_gate .....................................................................................................................................15
Print_delay ...................................................................................................................................15
Formato de bibliotecas genlib. .....................................................................................................16
Ejemplo A6.6. ...............................................................................................................................17
A6.6. MAPEO TECNOLÓGICO A FPGA. ..............................................................................................19
Arquitecturas basadas en multiplexores.......................................................................................19
Mapeo a xilinx .............................................................................................................................20
A6.7. MINIMIZACIÓN Y ASIGNACIÓN DE ESTADOS. ............................................................................21
Ejemplo A6.7. Formato kiss en Sis. ..............................................................................................21
De blif a Verilog. ..................................................................................................................................... 23
Ejemplo A6.7a. ................................................................................................................................... 24
Ejemplo A6.8. Nova ......................................................................................................................25
Ejemplo A6.9. Jedi. ......................................................................................................................28
Ejemplo A6.10. Modelo Mealy. ....................................................................................................29
De blif a Verilog. ..................................................................................................................................... 32
Ejemplo A6.11. Modelo de Moore. ...............................................................................................34
De blif a Verilog. ..................................................................................................................................... 35

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 6. Uso de sis 63
A6.8. CONVERSIÓN DE BLIF A VHDL. .............................................................................................. 36
Ejemplo A6.12. ............................................................................................................................ 37
A6.9. SÍNTESIS DE CIRCUITOS ASINCRÓNICOS. .................................................................................. 39
Ejemplo A6.13. ............................................................................................................................ 39
Ejemplo A6.14. ............................................................................................................................ 44
Ejemplo A6.15. ............................................................................................................................ 46
Ejemplo A6.16. ............................................................................................................................ 50
Ejemplo A6.17. Contador asincrónico módulo tres. .................................................................... 52
Ejemplo A6.18. Elemento C. ........................................................................................................ 57
Ejemplo A6.19. Compuerta and. .................................................................................................. 59
REFERENCIAS.................................................................................................................................... 61
ÍNDICE GENERAL. .............................................................................................................................. 62
ÍNDICE DE FIGURAS. .......................................................................................................................... 64

Profesor Leopoldo Silva Bijit 19-01-2010


64 Sistemas Digitales

Índice de figuras.

Figura A6.1 .................................................................................................................................... 4


Figura A6.2 .................................................................................................................................... 5
Figura A6.3 .................................................................................................................................... 6
Figura A6.4 .................................................................................................................................... 7
Figura A6.5 .................................................................................................................................. 12
Figura A6.6 .................................................................................................................................. 13
Figura A6.7 Patrones biblioteca. ................................................................................................. 14
Figura A6.8 Cobertura 1. ............................................................................................................. 14
Figura A6.9 Cobertura 2. ............................................................................................................. 14
Figura A6.10 Cobertura 3. ........................................................................................................... 15
Figura A6.11 ................................................................................................................................ 18
Figura A6.12 ................................................................................................................................ 19
Figura A6.13 ................................................................................................................................ 19
Figura A6.14. Matriz de transiciones Ejemplo A6.7. .................................................................. 21
Figura A6.15. Red booleana. ....................................................................................................... 23
Figura A6.15a. Esquema procesos verilog. ................................................................................. 23
Figura A6.16 Matriz de transiciones Ejemplo A6.8 .................................................................... 25
Figura A6.17. Asignación por reglas. .......................................................................................... 26
Figura A6.18. Asignación por defecto de nova. .......................................................................... 27
Figura A6.19. Asignación –e ioh. ................................................................................................ 27
Figura A6.20. Asignación jedi..................................................................................................... 29
Figura A6.21. Detector secuencia 101......................................................................................... 29
Figura A6.22. Modelo blif, detector secuencia 101..................................................................... 31
Figura A6.23. Formas de ondas. Secuencia de entrada 1010100. ............................................... 33
Figura A6.24. Detector secuencia 101......................................................................................... 34
Figura A6.25. Formas de ondas. Modelo de Moore. ................................................................... 36
Figura A6.26. Esquemático intro.blif. ......................................................................................... 37
Figura A6.27. Comunicación entre máquinas asincrónicas......................................................... 39
Figura A6.28. Eventos. ................................................................................................................ 39
Figura A6.29. Grafo ASTG. ........................................................................................................ 40
Figura A6.30. Diagrama de transiciones. .................................................................................... 42
Figura A6.31. Red asincrónica. ................................................................................................... 42
Figura A6.32. Red asincrónica con señal de reset r. .................................................................... 43
Figura A6.33. Formas de ondas. .................................................................................................. 43
Figura A6.34. Formas de ondas latch. ......................................................................................... 44
Figura A6.35. ASTG del latch. .................................................................................................... 44
Figura A6.36. Diagrama de transiciones del latch....................................................................... 46
Figura A6.37. Circuito latch. ....................................................................................................... 46
Figura A6.38. Entradas y salida de latch. .................................................................................... 47
Figura A6.39. Formas de ondas latch. ......................................................................................... 47
Figura A6.40. ASTG del latch. .................................................................................................... 47
Figura A6.41. Síntesis del latch. .................................................................................................. 49
Figura A6.42. Diagrama de estados............................................................................................. 49

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 6. Uso de sis 65
Figura A6.43. Contador asincrónico módulo cuatro. .................................................................. 50
Figura A6.44. Diagrama de estados contador asincrónico módulo cuatro. ................................. 50
Figura A6.45. Eventos en contador módulo 4. ............................................................................ 51
Figura A6.46. Diagrama de estados contador módulo 3. ............................................................ 53
Figura A6.47. Tabla de transiciones contador módulo 3............................................................. 53
Figura A6.48. Mapa de próximos estados de contador módulo 3. .............................................. 54
Figura A6.49. Mapa de funciones de salida de contador módulo 3. ........................................... 54
Figura A6.50. Relaciones causa-efecto contador módulo 3. ....................................................... 55
Figura A6.51. Grafo de transiciones entre estados totales. ......................................................... 57
Figura A6.53. ASTG de elemento C. .......................................................................................... 58
Figura A6.54. Formas de ondas en elemento C........................................................................... 58
Figura A6.55. Síntesis de elemento C. ........................................................................................ 58
Figura A6.56. Formas de ondas en compuerta and. .................................................................... 59

Profesor Leopoldo Silva Bijit 19-01-2010


1

Apéndice 7
Uso de abc
Un Sistema para síntesis secuencial y verificación
7.1. Introducción

En las primeras etapas de un diseño digital se requiere obtener la estructura del sistema en
términos de componentes de hardware. Se denomina síntesis lógica al proceso de generar un
circuito en términos de compuertas y flip-flops; en esta etapa suele efectuarse una minimización
del número de transistores que se emplearán (optimización espacial). Luego es necesario
efectuar minimizaciones de los retardos (optimización temporal), para esto se requiere efectuar
transformaciones de la red booleana de tal modo que la implementación final satisfaga los
requerimientos.

A medida que aumenta el tamaño del sistema estas técnicas no pueden aplicarse
manualmente y resultan indispensables herramientas computacionales.

Abc es un programa interactivo para la síntesis y optimización de circuitos combinacionales,


secuenciales sincrónicos.

Pueden describirse funciones booleanas mediante: ecuaciones (.eqn), tablas de verdad o


matrices de cobertura (.pla), redes lógicas booleanas (.blif).
Los circuitos secuenciales pueden almacenarse como máquinas de estados finitos
describiendo el diagrama de estados (.kiss) o mediante una red booleana formada por
compuertas lógicas y elementos de memoria (blif sincrónicos).

Las funciones pueden ser manipuladas escribiendo comandos en forma interactiva o


empleando archivos de comandos (scripts).
El comando help despliega las órdenes disponibles.

7.2. Síntesis de sistemas combinacionales.

7.2.1. Descripción en formato pla.

Se asume el tipo fd para la descripción de la tabla. En la parte de las salidas un “1” indica
que el cubo pertenece al conjunto on-set; Un “-” indica que el producto pertenece al conjunto de
condiciones superfluas; y un “0” indica que el cubo no tiene significado para la salida dada.
Cada salida se representa por un nodo lógico. Sólo están soportadas PLA binarias, esto
indica que se ignoran los cubos don’t-care.

El Ejemplo 5.5, se tiene la siguiente función Booleana, descrita por sus mintérminos:

Profesor Leopoldo Silva Bijit 19-01-2010


2 Sistemas Digitales
f(a, b, c, d) = m(0, 1, 3, 8, 9, 11, 13, 14)

La cual puede describirse por el archivo ej5_5.pla:

# f(a, b, c, d) = Suma de m(0, 1, 3, 8, 9, 11, 13, 14)


.i 4
.o 1
.ilb a b c d
.ob f
.p 8
0000 1
0001 1
0011 1
1000 1
1001 1
1011 1
1101 1
1110 1
.e

Dentro de abc, el comando:


read_pla ./ej/ej5_5.pla

Ingresa la descripción de la red, asumiendo que el archivo se encuentra en un subdirectorio,


de nombre ej, desde la ubicación desde donde se invoca a abc.

El comando:
print_kmap f

Imprime el mapa de Karnaugh de la salida f.


c d \ a b
0 0 1 1
0 1 1 0
+---+---+---+---+
00 | 1 | | | 1 |
+---+---+---+---+
01 | 1 | | 1 | 1 |
+---+---+---+---+
11 | 1 | | | 1 |
+---+---+---+---+
10 | | | 1 | |
+---+---+---+---+

El comando:
sop
Convierte las funciones de los nodos, de las representaciones internas, en suma de productos.
El comando:
write_pla ./ej/ej5_5ip.pla

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 7. Uso de abc 3
Escribe en el subdirectorio ej, un archivo con los implicantes primos, en formato pla.

.i 4
.o 1
.ilb a b c d
.ob f
.p 4
1110 1
1-01 1
-00- 1
-0-1 1
.e
Donde se advierte que de los 8 productos (mintérminos en el ejemplo) la minimización
reduce la red lógica a 4 cubos o productos. Forma minimizada que puede leerse según:

f(a,b,c,d) = abcd’+ac'd+b’d+b’c’
El comando:
write_eqn ./ej/ej5_5.eqn
Produce el archivo en formato eqn de Synopsys. Las ecuaciones se entregan en sus formas
factorizadas.

INORDER = a b c d;
OUTORDER = f;
f = (a * ((!c * d) + (b * c * !d))) + (!b * (!c + d));

El commando:
print_fact
Entrega las formas factorizadas en la consola.

Existen una serie de comandos de escritura en archivos. Genera archivos blif y también en
Verilog.

El comando:
write_verilog ./ej/ej5_5.verilog
Produce un modulo estructural, con las formas factorizadas de la red lógica.

module unknown ( a, b, c, d, f );
input a, b, c, d;
output f;
assign f = (a & ((~c & d) | (b & c & ~d))) | (~b & (~c | d));
endmodule

Es preciso cambiarle el nombre al módulo de unknown (desconocido) a ej5_5, si se desea


emplearlo.

El comando empty, borra las redes almacenadas en la memoria.


Pueden ingresarse las descripciones eqn, blif, o verilog de redes combinacionales y proceder
a la minimización, de manera similar a la mostrada.

Profesor Leopoldo Silva Bijit 19-01-2010


4 Sistemas Digitales

Referencias

http://www.eecs.berkeley.edu/~alanmi/abc/

Profesor Leopoldo Silva Bijit 19-01-2010


Apéndice 7. Uso de abc 5

Índice general.

APÉNDICE 7 ........................................................................................................................................ 1
USO DE ABC ........................................................................................................................................ 1
UN SISTEMA PARA SÍNTESIS SECUENCIAL Y VERIFICACIÓN .......................................... 1
7.1. INTRODUCCIÓN ............................................................................................................................ 1
7.2. SÍNTESIS DE SISTEMAS COMBINACIONALES. ................................................................................. 1
7.2.1. Descripción en formato pla. ................................................................................................ 1
REFERENCIAS...................................................................................................................................... 4
ÍNDICE GENERAL. ................................................................................................................................ 5
ÍNDICE DE FIGURAS. ............................................................................................................................ 6

Profesor Leopoldo Silva Bijit 19-01-2010


6 Sistemas Digitales

Índice de figuras.

No se encuentran elementos de tabla de ilustraciones.

Profesor Leopoldo Silva Bijit 19-01-2010


1

Diseño modular con Verilog.

1. Especificación.

Se desea diseñar un sistema combinacional que tenga como entrada cuatro palabras de dos bits
cada una, denominadas a, b, c y d; y que genere dos salidas. La salida f1 debe generar una señal
alta cuando se tenga: a>b>c>d. La salida f2 debe colocarse en alto cuando a<=c o cuando a<d.

2
a
2 f1
b 2
c f2
2
d

Figura 1. Diagrama de sistema combinacional.

2. Diseño de abajo hacia arriba. (bottom-up).

2.1. Empleando espresso.

Desde un punto de vista combinacional se tienen que realizar 2 diseños, ya que hay dos
funciones de salida, a partir de tablas de verdad que tienen 256 renglones cada una, ya que es un
espacio de 8 variables de entrada.

Con el apoyo de programas puede generarse la tabla de verdad en formato .pla. El que puede ser
procesado por el minimizador espresso.

El siguiente programa en C, genera las tablas de verdad.


#include <stdio.h>
#define INT_DIGITOS 63
static char buf[INT_DIGITOS + 2];
/* Buffer para INT_DIGITS dígitos, signo - y fin de string '\0' */

char * prtint(int i, int largo)


{ int j;
char *p = buf;
for (j=INT_DIGITOS-1; j>=0; j--) if((1<<j)&i) *p++='1'; else *p++='0';
return (buf+INT_DIGITOS-largo);
}

Profesor Leopoldo Silva Bijit 19-01-2010


2 Sistemas Digitales
//La siguiente función debe modificarse para generar otras tablas de verdad.
void prtinfile(FILE * stream)
{ unsigned int i, j,k,m;

//encabezado archivo pla


fprintf(stream, "%s\n", "#Comparador multiple sin signo de 2 bits. f1=a>b>c>d ; f2=(a<=c)|(d>a)");
fprintf(stream, "%s\n", ".i 8"); //2 cada operando
fprintf(stream, "%s\n", ".o 2");
fprintf(stream, "%s\n", ".ilb a1 a0 b1 b0 c1 c0 d1 d0");
fprintf(stream, "%s\n", ".ob f1 f2");
for(i=0; i<4; i++) //2^2=4
{
for(j=0; j<4; j++)
{
for(k=0; k<4; k++)
for(m=0; m<4; m++)
{ fprintf(stream, "%s", prtint(i, 2));
fprintf(stream, "%s", prtint(j, 2)); //se separa con tab la entrada de la salida
fprintf(stream, "%s", prtint(k, 2));
fprintf(stream, "%s\t", prtint(m, 2));
if ((i>j)&(j>k)&(k>m)) fprintf(stream, "%s", prtint(1,1));
else fprintf(stream, "%s", prtint(0,1));
if ((i<=k)|(m>i)) fprintf(stream, "%s\n", prtint(1,1));
else fprintf(stream, "%s\n", prtint(0,1));
}
}
printf("%d \n",i); //comenta avance
}
fprintf(stream, "%s\n", ".e"); //fin de archivo formato pla
}

int escribe_archivo(void)
{ FILE *stream;
/* Abre stream para escritura, en modo texto. */
if ((stream = fopen("modcomp2.txt", "w")) == NULL) {
fprintf(stderr, "No pudo abrir archivo de salida.\n");
return 1;
}
prtinfile(stream);
fclose(stream); /* close stream */
return 0;
}

int main(void)
{ escribe_archivo(); return 0;}

El archivo de datos generado tiene un peso de 4 KB. Se da un listado de los 256 renglones de la
tabla de verdad.

Profesor Leopoldo Silva Bijit 19-01-2010


Diseño Modular. 3
#Comparador múltiple sin signo de 2 bits. f1=a>b>c>d ; f2=(a<=c)|(d>a)
.i 8
.o 2
.ilb a1 a0 b1 b0 c1 c0 d1 d0
.ob f1 f2
00000000 01 00101100 01 01011000 01 10000100 00
00000001 01 00101101 01 01011001 01 10000101 00
00000010 01 00101110 01 01011010 01 10000110 00
00000011 01 00101111 01 01011011 01 10000111 01
00000100 01 00110000 01 01011100 01 10001000 01
00000101 01 00110001 01 01011101 01 10001001 01
00000110 01 00110010 01 01011110 01 10001010 01
00000111 01 00110011 01 01011111 01 10001011 01
00001000 01 00110100 01 01100000 00 10001100 01
00001001 01 00110101 01 01100001 00 10001101 01
00001010 01 00110110 01 01100010 01 10001110 01
00001011 01 00110111 01 01100011 01 10001111 01
00001100 01 00111000 01 01100100 01 10010000 00
00001101 01 00111001 01 01100101 01 10010001 00
00001110 01 00111010 01 01100110 01 10010010 00
00001111 01 00111011 01 01100111 01 10010011 01
00010000 01 00111100 01 01101000 01 10010100 00
00010001 01 00111101 01 01101001 01 10010101 00
00010010 01 00111110 01 01101010 01 10010110 00
00010011 01 00111111 01 01101011 01 10010111 01
00010100 01 01000000 00 01101100 01 10011000 01
00010101 01 01000001 00 01101101 01 10011001 01
00010110 01 01000010 01 01101110 01 10011010 01
00010111 01 01000011 01 01101111 01 10011011 01
00011000 01 01000100 01 01110000 00 10011100 01
00011001 01 01000101 01 01110001 00 10011101 01
00011010 01 01000110 01 01110010 01 10011110 01
00011011 01 01000111 01 01110011 01 10011111 01
00011100 01 01001000 01 01110100 01 10100000 00
00011101 01 01001001 01 01110101 01 10100001 00
00011110 01 01001010 01 01110110 01 10100010 00
00011111 01 01001011 01 01110111 01 10100011 01
00100000 01 01001100 01 01111000 01 10100100 00
00100001 01 01001101 01 01111001 01 10100101 00
00100010 01 01001110 01 01111010 01 10100110 00
00100011 01 01001111 01 01111011 01 10100111 01
00100100 01 01010000 00 01111100 01 10101000 01
00100101 01 01010001 00 01111101 01 10101001 01
00100110 01 01010010 01 01111110 01 10101010 01
00100111 01 01010011 01 01111111 01 10101011 01
00101000 01 01010100 01 10000000 00 10101100 01
00101001 01 01010101 01 10000001 00 10101101 01
00101010 01 01010110 01 10000010 00 10101110 01
00101011 01 01010111 01 10000011 01 10101111 01

Profesor Leopoldo Silva Bijit 19-01-2010


2 Sistemas Digitales
10110000 00 11000101 00 11011010 00 11101111 01
10110001 00 11000110 00 11011011 00 11110000 00
10110010 00 11000111 00 11011100 01 11110001 00
10110011 01 11001000 00 11011101 01 11110010 00
10110100 00 11001001 00 11011110 01 11110011 00
10110101 00 11001010 00 11011111 01 11110100 00
10110110 00 11001011 00 11100000 00 11110101 00
10110111 01 11001100 01 11100001 00 11110110 00
10111000 01 11001101 01 11100010 00 11110111 00
10111001 01 11001110 01 11100011 00 11111000 00
10111010 01 11001111 01 11100100 10 11111001 00
10111011 01 11010000 00 11100101 00 11111010 00
10111100 01 11010001 00 11100110 00 11111011 00
10111101 01 11010010 00 11100111 00 11111100 01
10111110 01 11010011 00 11101000 00 11111101 01
10111111 01 11010100 00 11101001 00 11111110 01
11000000 00 11010101 00 11101010 00 11111111 01
11000001 00 11010110 00 11101011 00 .e
11000010 00 11010111 00 11101100 01
11000011 00 11011000 00 11101101 01
11000100 00 11011001 00 11101110 01

Si el archivo anterior se procesa con espresso, con el siguiente comando:

espresso –Dexact modcomp2.txt > modcomp.pla


Se obtienen los implicantes primos que cubren las funciones. En la matriz de cobertura, los
ceros de la salida consideran que los implicantes no pertenecen a la función. Es una pla de tipo
fd.

#Comparador multiple sin signo de 2 bits. f1=a>b>c>d ; f2=(a<=c)|(d>a)


.i 8
.o 2
.ilb a1 a0 b1 b0 c1 c0 d1 d0
.ob f1 f2
.p 8
00------ 01
0---1--- 01
-0--1--- 01
0----1-- 01
----11-- 01
0-----1- 01
-0----11 01
11100100 10
.e

El comando:
Espresso –Dexact –oeqntott modcomp2.txt > modcomp.eqn

Obtiene un listado de las ecuaciones minimizadas de diseño, en dos niveles, en formato eqn.

Profesor Leopoldo Silva Bijit 19-01-2010


2 Sistemas Digitales
#Comparador múltiple sin signo de 2 bits. f1=a>b>c>d ; f2=(a<=c)|(d>a)
# exact Time was 0.00 sec, cost is c=8(8) in=23 out=8 tot=31
f1 = (a1&a0&b1&!b0&!c1&c0&!d1&!d0);
f2 = (!a1&!a0) | (!a1&c1) | (!a0&c1) | (!a1&c0) | (c1&c0) | (!a1&d1) | ( !a0&d1&d0);

El formato eqn, es fácilmente traducido a un diseño estructural en verilog, basta encabezar y


terminar el módulo; además de preceder con assign a las ecuaciones de salida. En caso de
ocurrir señales negadas, éstas son precedidas con el símbolo !, en el formato eqn; el cual debe
reemplazarse globalmente con el símbolo de la negación de verilog: ~.

#Comparador especial con operados a, b, c, d sin signo de 2 bits. f1=a>b>c>d ; f2=(a<=c)|(d>a)


module mayor(a1, a0, b1, b0, c1, c0, d1, d0, f1, f2);
input a1, a0, b1, b0, c1, c0, d1, d0;
output f1, f2;

assign f1 = (a1&a0&b1&~b0&~c1&c0&~d1&~d0);
assign f2 = (~a0&d1&d0) | (c1&c0) | (~a0&c1) | (~a1&d1) | (~a1&c0) |
(~a1&~a0) | (~a1&c1);
Endmodule

El commando: espresso -Dexact -s -epos modcomptv.pla


Produce el diseño en producto de sumas.

#Comparador multiple sin signo de 2 bits. f1=a>b>c>d ; f2=(a<=c)|(d>a)


# exact Time was 0.00 sec, cost is c=10(0) in=23 out=13 tot=36
.i 8
.o 2
.ilb a1 a0 b1 b0 c1 c0 d1 d0
.ob f1 f2
#.phase 00
.p 10
---1---- 10
--0----- 10
1---0--0 01
11---0-- 01
1---0-01 11
-1--000- 11
11--0-1- 11
----1--- 10
-0------ 10
0------- 10
.e

El commando: espresso -Dexact -s -epos -oeqntott modcomptv.pla


Produce las ecuaciones, donde las salidas deben considerarse que son el complemento de las
buscadas:
# exact Time was 0.01 sec, cost is c=10(0) in=23 out=13 tot=36
f1 = (b0) | (!b1) | (a1&!c1&!d1&d0) | (a0&!c1&!c0&!d1) | (a1&a0&!c1&d1) | ( c1) | (!a0) |
(!a1);
f2 = (a1&!c1&!d0) | (a1&a0&!c0) | (a1&!c1&!d1&d0) | (a0&!c1&!c0&!d1)

Profesor Leopoldo Silva Bijit 19-01-2010


Diseño Modular. 3
| ( a1&a0&!c1&d1);

El diseño en forma de producto de sumas:


f1 = (!b0) (b1) (!a1+c1+d1+!d0)(!a0+c1+c0+d1)(!a1+!a0+c1+!d1)(!c1)(a0)(a1);
f2 = (!a1+c1+d0)(!a1+!a0+c0)(!a1+c1+d1+!d0)(!a0+c1+c0+d1)(!a1+!a0+c1+!d1);

2.2. Empleando métodos para papel y lápiz.

Puede notarse que la expresión lógica para la función f1, podría haberse deducido considerando
que la tabla de verdad sólo tiene un mintérmino. Ya que a>b>c>d sólo puede cumplirse para la
combinación a=3, b=2, c=1 y d=0, en decimal. Lo que permite escribir directamente:

f1 =a1a0b1b0’c1’c0d1’d0’

Para f2, puede considerarse la siguiente descomposición en subsistemas:

a
a<=c
c
f2
d
d>a
a

Figura 2. Descomposición de f2.

Ahora los mapas de los subsistemas involucran a 4 variables, y pueden escribirse directamente:
a1a0 d1d0
c1 c0 00 01 11 10 a1 a0 00 01 11 10
0 4 12 8 0 4 12 8
00 1 0 0 0 00 0 1 1 1
1 5 13 9 1 2 5 13 9
01 1 1 0 0 01 0 0 1 1
15 11 15 11
11 13 17 1 1 11 03 07 0 0
2 6 14 10 2 6 14 10
10 1 1 0 1 10 0 0 1 0

a<=c d>a

Figura 3. Mapas de los subsistemas de la descomposición de f2.

Profesor Leopoldo Silva Bijit 19-01-2010


4 Sistemas Digitales
Minimizando como suma de productos.
(a<=c) = a1’a0’ + c1c0 + a0’c1 + a1’c1 + a1’c0 10 literales, 15 entradas
(d >a ) = a1’a0’d0 + a0’d1d0 + a1’d1 8 literales, 11 entradas.
Entonces resulta:
f2 = a1’a0’ + c1c0 + a0’c1 + a1’c1 + a1’c0 + a0’d1d0 + a1’d1 15 literales, 22 entradas, 2
niveles.

Considerando que en la suma: a1’a0’+a1’a0’d0 se absorbe d0.


Debido a que la descomposición efectuada en la Figura 2, existe un or en la salida, esta forma
del diseño resulta en dos niveles.

Minimizando como producto de sumas.


(a<=c)’ = a0c1’c0’ + a0c0’c1 + a1c1’
(a<=c) = (a0’+c1+c0)(a0’+c0+c1’)( a1’+c1) 8 literales, 11 entradas.

(d>a)’ = d1’d0’ + a1a0 + d0’a1 + d1’a1 + d1’a0


(d>a) = (d1+d0)( a1’+a0’)(d0+a1’)( d1+a1’)(d1+a0’) 10 literales, 15 entradas.

Resultando:
f2=(a0’+c1+c0)(a0’+c0+c1’)( a1’+c1) + (d1+d0)( a1’+a0’)(d0+a1’)( d1+a1’)(d1+a0’)
Con 18 literales y 28 entradas en tres niveles.

Puede compararse con el resultado obtenido con espresso, con la opción –epos, en la cual f2 se
obtiene en 2 niveles con 18 literales, 23 entradas.

3. Diseño abstracto. De arriba hacia abajo. Top-down.

La siguiente descripción Verilog, mediante el empleo de buses de dos bits cada uno, representa
las funciones buscadas. Nótese que la especificación: a>b>c>d se reemplaza por la lógicamente
equivalente, mediante operadores and. Como el resultado de una comparación entre dos
operandos binarios da como resultado un valor de un bit, pueden emplearse operadores al bit.
En este caso, la descripción también puede efectuarse empleando operadores lógicos (&& y ||,
para el and y para el or de expresiones lógicas).

module compa2b (f1, f2, a, b, c, d);


output f1, f2;
input [1:0] a, b, c, d; // 4 entradas de dos bits cada una
assign
f1= (a>b) & (b>c) & (c>d),
f2= (a<=c) | (a<d );
endmodule

Si la herramienta de síntesis, puede descomponer el módulo en bloques disponibles en su


biblioteca, se puede proceder al diseño. En caso que la descripción no fuera sintetizable, el
diseñador debe descomponer en bloques su arquitectura inicial.

Profesor Leopoldo Silva Bijit 19-01-2010


Diseño Modular. 5
3.1. Mapeo a compuertas. Descripción RTL.

En el caso del ejemplo, se reconocen 5 bloques comparadores de dos bits.


Las Figuras 4 y 5 muestran un diagrama en bloques de las entradas y salidas, y la
descomposición en bloques de comparación.

Figura 4. Diagrama en bloques.

c>d

b>c

a>b

a<d

a<=c

Figura 5. Arquitectura RTL del módulo, en base a comparadores.

Los bloques comparadores pueden ser descritos por compuertas lógicas básicas. Determinando
de este modo expresiones booleanas de las funciones. Al descenso de la descripción abstracta a
expresiones boolenas, mediante compuertas y registros, en el caso de sistemas secuenciales, se
lo denomina nivel de transferencia de registros o RTL (register transfer level).

Los distintos bloques comparadores de dos bits, pueden descomponerse en subsistemas


menores. Un esquema general se muestra en la Figura 6.

Profesor Leopoldo Silva Bijit 19-01-2010


6 Sistemas Digitales
El primer bloque es una red booleana en base a compuertas que implementa la función xor, de
los bits más significativos de los comparadores.
El segundo bloque, implementa la función especial del comparador: mayor, menor o menor o
igual, en el caso del ejemplo que se analiza.

xor

Figura 6. Subsistemas de los comparadores.

Nótese que el xor se implementa en tres niveles. Esto se debe a que las compuertas de biblioteca
disponibles son compuertas and, or e inversores. La Figura 7, describe la expresión booleana:
Result = D1D0’ + D1’D0, empleando tres niveles.

Figura 7. Mapeo a compuertas de función xor.

Si los bits más significativos son iguales, la señal _n0002 luego del inversor estará en alto, en la
Figura 8. En este caso se comparan los dos bits menos significativos. Si no son iguales se
comparan los bits más significativos, generando la señal inferior del or de salida.

Figura 8. Expresiones para la función A mayor que B.

La descripción de la función mayor que, en términos de compuertas, resulta en tres niveles:

Profesor Leopoldo Silva Bijit 19-01-2010


Diseño Modular. 7
AGB= a1b1’ + a0b0’ (a1==b1).

El descenso a nivel de compuertas, es una forma de representar las funciones por expresiones.

La Figura 8, muestra el esquemático para la función A menor que B. Que es representada por la
expresión: ALB= a1’b1 + a0’b0 (a1==b1).

Figura 9. Expresiones para la función A menor que B.

La Figura 10, muestra la implementación, en base a compuertas, de la función de comparación


A menor o igual que B. ALEB= (a0’ + ((a1==b1)+b0) ) (a1’+b1)

Figura 10. Expresiones para la función A menor o igual que B.

3.2. Mapeo a LUT. Implementación con FPGA.

Una vez descrita la red booleana por expresiones, se las minimiza, pero considerando que el
bloque mínimo de implementación física es una Tabla de búsqueda (LUT look-up table), de 4
bits de entrada y un bit de salida. Estas tablas permiten almacenar una tabla de verdad de una
función de cuatro variables. Por supuesto que este bloque también permite representar funciones
boolenas de dos y tres variables, pero en estos casos se estará perdiendo parte de la superficie
del chip.

La síntesis en base a LUT4 se muestra en la Figura 11.

Profesor Leopoldo Silva Bijit 19-01-2010


8 Sistemas Digitales
Cada LUT se representa en forma resumida por el patrón hexadecimal almacenado en ella. Por
ejemplo la LUT 0002 almacena, en binario: 0000 0000 0000 0010. El primer bit está asociado a
la combinación 1111 de las entradas y el último bit a la combinación 0000 de las entradas.
Representa la ecuación: i0i1’i2’i3’. Donde i3 es la entrada dibujada en la posición superior en el
esquemático. La Figura 12 muestra la tabla de verdad, y la Figura 13 el mapa de Karnaugh.

d
f1

f2

Figura 11. Esquemático en base a LUTs de las funciones f1 y f2.

Profesor Leopoldo Silva Bijit 19-01-2010


Diseño Modular. 9

Figura 12. Contenido LUT4__0002.

Figura 13. Mapa de Karnaugh de LUT4__0002.

Inspeccionando las entradas de la LUT0002, se obtiene que, en términos de las entradas,


representa la ecuación: c0d0’d1’c1’

De modo similar, la LUT4_0080, representa la ecuación: i0i1i2i3’, que en términos de las


variables de entrada puede escribirse: a1a0b1b0’.

La LUT2_8 es simplemente un and. Por lo cual la implementación de la función f1, resulta:


f1= (c0d0’d1’c1’)( a1a0b1b0’), la cual puede escribirse según:

f1=a1a0b1b0’c1’c0d1’d0’

Que es igual al resultado obtenido antes, empleando espresso o métodos manuales.

Profesor Leopoldo Silva Bijit 19-01-2010


10 Sistemas Digitales

Para f2 se tiene un mux que bajo el control de la señal a0 deja pasar la salida de la
LUT4_EAFF, con a0=0; o la de la LUT4_D5D4, con a0=1.

La LUT EAFF representa a: i0+i1i2+i3’, que en términos de las entradas resulta: c1+d1d0+a1’.

La LUT D5D4 representa a: i0’i2+i1i2+i0’i3+i0’i1 que en términos de las entradas resulta:


a1’c1+c0c1+a1’d1+a1’c0.

Entonces f2, puede escribirse:

f2 = a0(a1’c1+c0c1+a1’d1+a1’c0) + a0’(c1+d1d0+a1’)

Que es equivalente al diseño mínimo de espresso obtenido antes, en 2.1:


f2 = (a1’a0’) + (a1’c1) + (a0’c1) + (a1’c0) + (c1c0) + (a1’d1) + (a0’d1d0);

3.3. Mapeo a CPLD. Implementación suma de productos.

En este tipo de síntesis se obtienen las ecuaciones de la red booleana en la forma suma de
productos. Puede escogerse que se desplieguen las ecuaciones minimizadas en Verilog.

assign f1 = (b[1] && !d[1] && !d[0] && !b[0] && c[0] && a[0] && !c[1] && a[1]);
assign f2 = !((!d[1] && !c[1] && a[1]) || (!d[0] && !c[1] && a[1])
|| (!c[0] && a[0] && a[1]) || (a[0] && !c[1] && a[1])
|| (!d[1] && !c[0] && a[0] && !c[1]));

La síntesis RTL genera en este caso comparadores sin emplear las funciones xor.

También puede obtenerse el esquemático con síntesis multinivel.

Figura 14. Mapeo a tecnología CPLD.

Profesor Leopoldo Silva Bijit 19-01-2010


Diseño Modular. 11
4. Diseño estructural en Verilog.

Cuando se han obtenido las ecuaciones booleanas del sistema digital, desde las tablas de verdad
o mapas de Karnaugh, pueden representarse el sistema mediante un módulo estructural basado
en compuertas.

A continuación se describe en Verilog estructural el módulo que representa al sistema


combinacional que se desea diseñar.

module compa2b (f1, f2, a, b, c, d);


output f1, f2; // mux outputs de 8 bits
input [1:0] a, b, c, d; // mux inputs de 8 bits cada una
assign f1 = (b[1] & ~d[1] & ~d[0] & ~b[0] & c[0] & a[0] & ~c[1] & a[1]);
assign f2 = ~( (~d[1] & ~c[1] & a[1]) | (!d[0] & ~c[1] & a[1])
| (~c[0] & a[0] & a[1]) | (a[0] & ~c[1] & a[1])
| (~d[1] & ~c[0] & a[0] & ~c[1])
);
endmodule

4.1. Diseño basado en FPGA.

En este caso el mapeo tecnológico a FPGA, resulta igual al anterior. Pero el descenso a nivel de
compuertas es diferente, ya que no emplea los comparadores que sintetiza la descripción
abstracta. Ahora la descripción no es abstracta, ya que se da la arquitectura interna. La Figura
15 muestra los dos bloques que generan las funciones de salida.

Figura 15. Descripción RTL de la representación estructural en Verilog.

Profesor Leopoldo Silva Bijit 19-01-2010


12 Sistemas Digitales
El bloque superior, de la Figura 15, implementa a f1. Cuyo diagrama interno se muestra en la
Figura 16.
El subsistema inferior, implementa a f2, nótese que sólo ingresan 6 señales. Su diagrama se
ilustra en la Figura 17.

Figura 16. Diseño RTL de f1, mediante Verilog estructural.

Figura 17. Diseño RTL de f2, mediante Verilog estructural.

Profesor Leopoldo Silva Bijit 19-01-2010


Diseño Modular. 13
4.2. Diseño basado en CPLD.

En este caso se obtiene una minimización basada en suma de productos. Generando un esquema
RTL basado en una red booleana con nodos que implementan los productos o cubos que cubren
a las funciones. Cada producto se implementa en dos niveles, considerando la obtención de las
señales complementadas mediante inversores, dentro de los nodos.

Figura 18. RTL basado en CPLD. Nodos con los implicantes.

Se tiene para el nodo 4, la ecuación: n4= (c1+c0)’a0d1’.

Figura 19. Producto del nodo 4.

Se tiene para el nodo 3, la ecuación: n3= c1’a0a1.

Profesor Leopoldo Silva Bijit 19-01-2010


14 Sistemas Digitales

Figura 20. Producto del nodo 3.

Se tiene para el nodo 2, la ecuación: n2= c0’a1a0.

Figura 21. Producto del nodo 2.

Se tiene para el nodo 1, la ecuación: n1= d0’a1c1’.

Figura 22. Producto del nodo 1.

Se tiene para el nodo 0, la ecuación: n0= d1’a1c1’.

Entonces para f2, se tiene:


f2= (n4+n3+n2+n1+n0)’=((c1+c0)’a0d1’+ c1’a0a1+c0’a1a0+d0’a1c1’+d1’a1c1’)’

Profesor Leopoldo Silva Bijit 19-01-2010


Diseño Modular. 15

Figura 23. Producto del nodo 0.

El único producto asociado a f1, se sintetiza mediante:

f1= (c1+b0+d0+d1)’ a1a0c0b1.

Figura 24. Producto de función f1.

El mapeo tecnológico de los nodos anteriores a una CPLD, se muestra en la Figura 25.

Profesor Leopoldo Silva Bijit 19-01-2010


16 Sistemas Digitales

Figura 25. Mapeo tecnológico de los nodos a una CPLD.

Ejercicios propuestos.

Modificar el diseño para emplear buses de datos de entrada de 3 bits.


Modificar el diseño para emplear buses de datos de entrada de 6 bits.
Modificar el diseño pero ahora con f1= a>b>c>d>7, con buses de entrada de 4 bits.

Profesor Leopoldo Silva Bijit 19-01-2010


Diseño Modular. 17

Índice general.

DISEÑO MODULAR CON VERILOG. .................................................................................................. 1


1. ESPECIFICACIÓN. .................................................................................................................................. 1
2. DISEÑO DE ABAJO HACIA ARRIBA. (BOTTOM-UP). ................................................................................. 1
2.1. Empleando espresso. .................................................................................................................... 1
2.2. Empleando métodos para papel y lápiz. ....................................................................................... 3
Minimizando como suma de productos. .......................................................................................................... 4
Minimizando como producto de sumas. .......................................................................................................... 4
3. DISEÑO ABSTRACTO. DE ARRIBA HACIA ABAJO. TOP-DOWN. ................................................................ 4
3.1. Mapeo a compuertas. Descripción RTL. ...................................................................................... 5
3.2. Mapeo a LUT. Implementación con FPGA. ................................................................................. 7
3.3. Mapeo a CPLD. Implementación suma de productos. .............................................................. 10
4. DISEÑO ESTRUCTURAL EN VERILOG. .................................................................................................. 11
4.1. Diseño basado en FPGA. ........................................................................................................... 11
4.2. Diseño basado en CPLD. ........................................................................................................... 13
EJERCICIOS PROPUESTOS. ....................................................................................................................... 16
ÍNDICE GENERAL. ................................................................................................................................... 17
ÍNDICE DE FIGURAS. ............................................................................................................................... 17

Índice de Figuras.

FIGURA 1. DIAGRAMA DE SISTEMA COMBINACIONAL. .................................................................................. 1


FIGURA 2. DESCOMPOSICIÓN DE F2............................................................................................................... 3
FIGURA 3. MAPAS DE LOS SUBSISTEMAS DE LA DESCOMPOSICIÓN DE F2....................................................... 3
FIGURA 4. DIAGRAMA EN BLOQUES. ............................................................................................................. 5
FIGURA 5. ARQUITECTURA RTL DEL MÓDULO, EN BASE A COMPARADORES. ............................................... 5
FIGURA 6. SUBSISTEMAS DE LOS COMPARADORES. ....................................................................................... 6
FIGURA 7. MAPEO A COMPUERTAS DE FUNCIÓN XOR. ................................................................................... 6
FIGURA 8. EXPRESIONES PARA LA FUNCIÓN A MAYOR QUE B. ...................................................................... 6
FIGURA 9. EXPRESIONES PARA LA FUNCIÓN A MENOR QUE B. ...................................................................... 7
FIGURA 10. EXPRESIONES PARA LA FUNCIÓN A MENOR O IGUAL QUE B. ...................................................... 7
FIGURA 11. ESQUEMÁTICO EN BASE A LUTS DE LAS FUNCIONES F1 Y F2. .................................................... 8
FIGURA 12. CONTENIDO LUT4__0002. ........................................................................................................ 9
FIGURA 13. MAPA DE KARNAUGH DE LUT4__0002. .................................................................................... 9
FIGURA 14. MAPEO A TECNOLOGÍA CPLD. ................................................................................................ 10
FIGURA 15. DESCRIPCIÓN RTL DE LA REPRESENTACIÓN ESTRUCTURAL EN VERILOG. ............................... 11
FIGURA 16. DISEÑO RTL DE F1, MEDIANTE VERILOG ESTRUCTURAL. ........................................................ 12
FIGURA 17. DISEÑO RTL DE F2, MEDIANTE VERILOG ESTRUCTURAL. ........................................................ 12
FIGURA 18. RTL BASADO EN CPLD. NODOS CON LOS IMPLICANTES. ......................................................... 13
FIGURA 19. PRODUCTO DEL NODO 4. .......................................................................................................... 13
FIGURA 20. PRODUCTO DEL NODO 3. .......................................................................................................... 14
FIGURA 21. PRODUCTO DEL NODO 2. .......................................................................................................... 14
FIGURA 22. PRODUCTO DEL NODO 1. .......................................................................................................... 14
FIGURA 23. PRODUCTO DEL NODO 0. .......................................................................................................... 15
FIGURA 24. PRODUCTO DE FUNCIÓN F1....................................................................................................... 15

Profesor Leopoldo Silva Bijit 19-01-2010


18 Sistemas Digitales
FIGURA 25. MAPEO TECNOLÓGICO DE LOS NODOS A UNA CPLD. ................................................................16

Profesor Leopoldo Silva Bijit 19-01-2010


1

Diseño modular con Verilog.

1. Especificación.

Se desea diseñar un sistema combinacional que tenga como entrada una palabra binaria de 16
bits y que genere una salida de 16 bits, la cual debe tener igual número de unos que la palabra
de entrada, pero justificados a la izquierda.

Ejemplo:
Palabra de entrada Palabra de salida
0101010000110011 1111111000000000
0100000000111111 1111111000000000
0000000000000001 1000000000000000

2. Diseño bruta forza.

Desde un punto de vista combinacional se tienen que realizar 16 diseños, para cada una de las
funciones de salida, a partir de tablas de verdad que tienen 65536 renglones cada una.

Con el apoyo de programas puede generarse la tabla de verdad en formato .pla. El que puede ser
procesado por el minimizador espresso.

El siguiente programa en C, genera la tabla de verdad.


#include <stdio.h>

#define DIGITOS 16
static char bufc[DIGITOS + 1];
char * prtint(int i, int largo) //imprime en binario
{ int j, k=1;
char *p = bufc;
for (j=15; j>=0; j--) if((k<<j)&i) *p++='1'; else *p++='0';
return (bufc+DIGITOS-largo);
}

void prtstr(char * p)
{
while(*p) putchar(*p++);
}

//La siguente rutina puede modificarse para generar otras tablas de verdad
void prtinfile(FILE * stream)
{ unsigned int j,t,s;

Profesor Leopoldo Silva Bijit 19-01-2010


2 Sistemas Digitales
unsigned long int i;
fprintf(stream, "%s\n", "#Unos en palabra de 16 bits.");
fprintf(stream, "%s\n", ".i 16");
fprintf(stream, "%s\n", ".o 16");
fprintf(stream, "%s\n", ".ilb e15 e14 e13 e12 e11 e10 e9 e8 e7 e6 e5 e4 e3 e2 e1 e0");
fprintf(stream, "%s\n", ".ob s15 s14 s13 s12 s11 s10 s9 s8 s7 s6 s5 s4 s3 s2 s1 s0");
for(i=0;i<65536L;i++) //2^16
{ fprintf(stream, "%s\t", prtint(i, 16));
t=i;s=0;
for(j=0;j<16;j++)
{ if (t&1) {s=s>>1;s=s|0x8000; }
t=t>>1;
}
fprintf(stream, "%s\n", prtint(s,16));
printf("%ld \n",i); //comenta avance en consola
}
fprintf(stream, "%s\n", ".e");
}

int escribe_archivo(void)
{ FILE *stream;
/* Abre stream para escritura, en modo texto. Puede elegirse el nombre del archivo de salida*/
if ((stream = fopen("unos.pla", "w")) == NULL) {
fprintf(stderr, "No pudo abrir archivo de salida.\n");
return 1;
}
prtinfile(stream);
fclose(stream); /* close stream */
return 0;
}

int main(void)
{
escribe_archivo();
return 0;
}

El archivo generado tiene un peso de más de 2MB. Se da un listado del comienzo y del final del
archivo.

#Unos en palabra de 16 bits.


.i 16
.o 16
.ilb e15 e14 e13 e12 e11 e10 e9 e8 e7 e6 e5 e4 e3 e2 e1 e0
.ob s15 s14 s13 s12 s11 s10 s9 s8 s7 s6 s5 s4 s3 s2 s1 s0
0000000000000000 0000000000000000
0000000000000001 1000000000000000
0000000000000010 1000000000000000
0000000000000011 1100000000000000

Profesor Leopoldo Silva Bijit 19-01-2010


Diseño Modular. 3
0000000000000100 1000000000000000
0000000000000101 1100000000000000
0000000000000110 1100000000000000
0000000000000111 1110000000000000
……
1111111111110111 1111111111111110
1111111111111000 1111111111111000
1111111111111001 1111111111111100
1111111111111010 1111111111111100
1111111111111011 1111111111111110
1111111111111100 1111111111111100
1111111111111101 1111111111111110
1111111111111110 1111111111111110
1111111111111111 1111111111111111
.e

Si el archivo anterior se procesa con espresso, con el siguiente comando:

Espresso –Dexact –oeqntott unos.pla > unos.eqn

Se obtiene un listado de las ecuaciones minimizadas de diseño, en dos niveles, en formato eqn.
Se muestran sólo algunas de las ecuaciones. El archivo con las expresiones tiene un peso de
más de 2 MB.

#Unos en palabra de 16 bits.


s15 = (e0) | (e1) | (e2) | (e3) | (e4) | (e5) | (e6) | (e7) | (e8) | (e9) | (
e10) | (e11) | (e12) | (e13) | (e14) | (e15);

s14 = (e1&e0) | (e2&e0) | (e3&e0) | (e4&e0) | (e5&e0) | (e6&e0) | (e7&e0) | (


e8&e0) | (e9&e0) | (e10&e0) | (e11&e0) | (e12&e0) | (e13&e0) | (e14
&e0) | (e15&e0) | (e2&e1) | (e3&e1) | (e4&e1) | (e5&e1) | (e6&e1) | (
e7&e1) | (e8&e1) | (e9&e1) | (e10&e1) | (e11&e1) | (e12&e1) | (e13&e1) | (
e14&e1) | (e15&e1) | (e3&e2) | (e4&e2) | (e5&e2) | (e6&e2) | (e7&e2) | (
e8&e2) | (e9&e2) | (e10&e2) | (e11&e2) | (e12&e2) | (e13&e2) | (e14
&e2) | (e15&e2) | (e4&e3) | (e5&e3) | (e6&e3) | (e7&e3) | (e8&e3) | (
e9&e3) | (e10&e3) | (e11&e3) | (e12&e3) | (e13&e3) | (e14&e3) | (e15
&e3) | (e5&e4) | (e6&e4) | (e7&e4) | (e8&e4) | (e9&e4) | (e10&e4) | (
e11&e4) | (e12&e4) | (e13&e4) | (e14&e4) | (e15&e4) | (e6&e5) | (e7
&e5) | (e8&e5) | (e9&e5) | (e10&e5) | (e11&e5) | (e12&e5) | (e13&e5) | (
e14&e5) | (e15&e5) | (e7&e6) | (e8&e6) | (e9&e6) | (e10&e6) | (e11&e6) | (
e12&e6) | (e13&e6) | (e14&e6) | (e15&e6) | (e8&e7) | (e9&e7) | (e10
&e7) | (e11&e7) | (e12&e7) | (e13&e7) | (e14&e7) | (e15&e7) | (e9&e8) | (
e10&e8) | (e11&e8) | (e12&e8) | (e13&e8) | (e14&e8) | (e15&e8) | (
e10&e9) | (e11&e9) | (e12&e9) | (e13&e9) | (e14&e9) | (e15&e9) | (
e11&e10) | (e12&e10) | (e13&e10) | (e14&e10) | (e15&e10) | (e12&e11) | (
e13&e11) | (e14&e11) | (e15&e11) | (e13&e12) | (e14&e12) | (e15&e12) | (
e14&e13) | (e15&e13) | (e15&e14);
…….

Profesor Leopoldo Silva Bijit 19-01-2010


4 Sistemas Digitales
s0 = (e15&e14&e13&e12&e11&e10&e9&e8&e7&e6&e5&e4&e3&e2&e1&e0);

El formato eqn, es fácilmente traducido a verilog, basta encabezar y terminar el módulo; además
de preceder con assign a las ecuaciones de salida, daremos ejemplo de esto más adelante. En
caso de ocurrir señales negadas, éstas son precedidas con el símbolo !, en el formato eqn; el cual
debe reemplazarse globalmente con el símbolo de la negación de verilog: ~.

El diseño en dos niveles tiene un costo demasiado elevado.

3. Diseño modular.

La estrategia: “Dividir para vencer” requiere conceptualizar módulos que permitan


descomponer el problema en otros menos complejos.

Si se conociera el número de unos de la palabra de entrada, mediante una función


combinacional es sencillo generar el formato de salida. Veremos esto luego, cuando estudiemos
en detalle el módulo denominado TablaSuma, en el diagrama de la Figura 1.

Para determinar el número de unos contenidos en la palabra de entrada se requiere un módulo


combinacional que entregue como salida el número de unos de una palabra de n bits; este diseño
es sencillo de realizar si n es pequeño. Se requieren 5 bits de salida para contener el binario
10000 que equivale a la máxima cuenta de unos, que es 16 decimal. El módulo SumaUnos es
combinacionalmente complejo de diseñar, ya que se requieren 5 tablas de verdad de 65536
renglones. Lo cual conduce a la necesidad de descomponer la entrada en partes.

Entrada 15..0

15..0
SumaUnos
4..0

TablaSuma
15..0

Salida 15..0

Figura 1. Diagrama en bloques.

Si concebimos un módulo que determine los unos en una palabra de 4 bits, para su diseño se
tiene una tabla de verdad de 16 renglones y tres bits de salida, ya que el máximo número de
unos es 4, y éste se representa en binario mediante: 100.
Se requieren 4 de estos módulos; cuyas entradas se conectan a cuatro grupos de 4 bits de la
entrada. Si el módulo se denomina cuenta1, el diagrama de la Figura 2, ilustra la
descomposición:

Profesor Leopoldo Silva Bijit 19-01-2010


Diseño Modular. 5

Entrada 15..0

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


cuenta1 cuenta1 cuenta1 cuenta1
12 2..0 12 2..0 12 2..0 12 2..0
suma1 suma1
3..0 3..0
Sumador5
4..0
TablaSuma

Salida 15..0

Figura 2 Detalle de módulos

Se han agregado dos módulos suma1, que suman dos de las tres salidas binarias de dos módulos
cuenta1; éste es un sumador, suma1 en el diagrama de la Figura 2, en el que los operandos
llegan a un máximo de 4, en binario. Por lo tanto su salida debe expresarse en 4 bits para poder
representar la suma máxima con valor 8 decimal, que equivale a 1000 en binario.
Es preciso agregar un sumador adicional, el sumador5, con entradas con valores máximos
iguales a 8 y salida con valor máximo 16, este sumador requiere 5 bits de salida.

También es posible descomponer la entrada en grupos de a dos, lo cual requiere 8 sumadores de


dos bits de entrada y dos de salida. Luego mediante 4 sumadores con cuatro entradas y salidas
de tres bits, se alimentan dos sumadores de 6 entradas y 4 salidas (módulo suma1, en el
diagrama), para finalmente un sumador de 8 bits de entrada y 5 de salida (sumador5, en el
diagrama). Esto lleva a un diseño en más niveles. Un esquema de esta solución se muestra en la
Figura 5.

De esta forma hemos descompuesto un problema de grandes dimensiones, en el diseño de


cuatro módulos más sencillos. Algunos de los subproblemas, podrían diseñarse con métodos
para papel y lápiz. Las tablas de verdad de todos ellos, pueden generarse mediante sencillos
programas escritos en C, lo cual permite automatizar el diseño. Los módulos basados en
comandos assign son siempre sintetizables.

La estructura concatenada de los módulos implica el aumento de los niveles del diseño, y la
menor velocidad en la generación de la salida. Se economiza en número de compuertas, pero se
degrada el funcionamiento temporal.

3.1. Módulo cuenta1.

Queda especificado por la siguiente tabla de verdad, expresada en formato pla.

Profesor Leopoldo Silva Bijit 19-01-2010


6 Sistemas Digitales
#cuenta unos en palabra de 4 bits.
.i 4
.o 3
.ilb e3 e2 e1 e0
.ob s2 s1 s0
0001 001
0010 001
0011 010
0100 001
0101 010
0110 010
0111 011
1000 001
1001 010
1010 010
1011 011
1100 010
1101 011
1110 011
1111 100
.e

Es sencillo modificar el programa en C, visto al inicio, para generar automáticamente la tabla


anterior.

Minimizado con espresso, resultan las ecuaciones.


#cuenta unos en palabra de 4 bits.
s2 = (e3&e2&e1&e0);

s1 = (!e2&e1&e0) | (!e3&e2&e1&e0) | (e2&!e1&e0) | (e3&!e1&e0) | (e2&e1&!e0) |


(e3&e1&!e0) | (e3&e2&!e0);

s0 = (!e3&!e2&!e1&e0) | (!e3&!e2&e1&!e0) | (!e3&e2&!e1&!e0) | (e3&!e2&!e1&!e0) |


(e3&!e2&e1&e0) | (e3&e2&!e1&e0) | (e3&e2&e1&!e0) | (!e3&e2&e1&e0);

Formato que puede traducirse al siguiente módulo verilog, empleando un editor de texto:
//cuenta unos en palabra de 4 bits.
module cuenta1(s2,s1,s0,e3,e2,e1,e0);
input e3,e2,e1,e0;
output s2,s1,s0;

assign s2 = (e3&e2&e1&e0);
assign s1 = (~e2&e1&e0) | (~e3&e2&e1&e0) | (e2&~e1&e0) |
(e3&~e1&e0) |(e2&e1&~e0) | (e3&e1&~e0) | (e3&e2&~e0);
assign s0 = (~e3&~e2&~e1&e0) | (~e3&~e2&e1&~e0) | (~e3&e2&~e1&~e0) |
(e3&~e2&~e1&~e0) | (e3&~e2&e1&e0) |
(e3&e2&~e1&e0) | (e3&e2&e1&~e0) | (~e3&e2&e1&e0);
endmodule

Profesor Leopoldo Silva Bijit 19-01-2010


Diseño Modular. 7
3.2. Módulo suma1.

#suma palabras de 3 bits. Operandos con valor máximo 4


.i 6
.o 4
.ilb a2 a1 a0 b2 b1 b0
.ob su3 su2 su1 su0
000000 0000
000001 0001
000010 0010
000011 0011
000100 0100

001000 0001
001001 0010
001010 0011
001011 0100
001100 0101

010000 0010
010001 0011
010010 0100
010011 0101
010100 0110

011000 0011
011001 0100
011010 0101
011011 0110
011100 0111

100000 0100
100001 0101
100010 0110
100011 0111
100100 1000
.e

Debe notarse que solamente se especifican los unos de la función. Las combinaciones que no
pueden presentarse se tratan como condiciones superfluas.

Con el comando: espresso –Dexact –oeqntott suma1.pla > suma1.eqn


Se obtienen las ecuaciones minimizadas en dos niveles:

#suma palabras de 3 bits. Operandos con valor maximo 4


su3 = (a2&!a1&!a0&b2&!b1&!b0);

su2 = (!a2&a0&!b2&b1&b0) | (!a2&a1&a0&!b2&b0) | (!a2&b2&!b1&!b0) |


(a2&!a1&!a0&!b2) | (!a2&a1&!b2&b1);

Profesor Leopoldo Silva Bijit 19-01-2010


8 Sistemas Digitales

su1 = (!a2&a1&a0&!b2&b1&b0) | (!a2&!a1&a0&!b2&!b1&b0) | (!a2&!a1&!b2&b1&!b0) |


(!a2&a1&!a0&!b2&!b1) | (!a2&a1&!b1&!b0) | (!a1&!a0&!b2&b1);

su0 = (!a2&a0&!b1&!b0) | (!a1&!a0&!b2&b0) | (!a2&a0&!b2&!b0) | (!a2&!a0 &!b2&b0);

Formato que puede traducirse al módulo verilog:


//suma palabras de 3 bits. Operandos con valor máximo 4

module suma1(a2,a1,a0,b2,b1,b0,su3,su2,su1,su0);
input a2,a1,a0,b2,b1,b0;
output su3,su2,su1,su0;

assign su3 = (a2&~a1&~a0&b2&~b1&~b0);


assign su2 = (~a2&a0&~b2&b1&b0) | (~a2&a1&a0&~b2&b0) | (~a2&b2&~b1&~b0) |
(a2&~a1&~a0&~b2) | (~a2&a1&~b2&b1);
assign su1 = (~a2&a1&a0&~b2&b1&b0) | (~a2&~a1&a0&~b2&~b1&b0) |
(~a2&~a1&~b2&b1&~b0) | (~a2&a1&~a0&~b2&~b1) |
(~a2&a1&~b1&~b0) | (~a1&~a0&~b2&b1);
assign su0 = (~a2&a0&~b1&~b0) | (~a1&~a0&~b2&b0) | (~a2&a0&~b2&~b0) |
(~a2&~a0&~b2&b0);
endmodule

3.3. Módulo suma5.

Para evitar errores en la generación de la tabla de verdad, ésta se genera mediante un programa.
Se muestra sólo la función que genera la tabla, el resto de las funciones son similares a las vistas
en el programa que se ilustró al inicio.

void prtinfile(FILE * stream)


{ unsigned int i, j;
//encabezado archivo pla
fprintf(stream, "%s\n", "#Suma operandos enteros sin signo de 4 bits.");
fprintf(stream, "%s\n", ".i 8"); //6 cada operando
fprintf(stream, "%s\n", ".o 5");
for(i=0; i<9; i++) //maximo operando en 4 bits = 8
{
for(j=0; j<9; j++)
{ fprintf(stream, "%s", prtint(i, 4));
fprintf(stream, "%s\t", prtint(j, 4)); //se separa con tab la entrada de la salida
fprintf(stream, "%s\n", prtint(i+j,5));
fprintf(stream, "%s\n", ".ilb a3 a2 a1 a0 b3 b2 b1 b0");
fprintf(stream, "%s\n", ".ob n4 n3 n2 n1 n0");
}
printf("%d \n",i); //comenta avance
}
fprintf(stream, "%s\n", ".e"); //fin de archivo formato pla
}

Profesor Leopoldo Silva Bijit 19-01-2010


Diseño Modular. 9
Una modificación menor de la rutina anterior, permite generar la tabla de verdad de suma1.

La ejecución del programa anterior, genera la tabla:


#Suma operandos enteros sin signo de 4 bits. Máximo operando 8
.i 8
.o 5
.ilb a3 a2 a1 a0 b3 b2 b1 b0
.ob n4 n3 n2 n1 n0
00000000 00000
00000001 00001
00000010 00010
00000011 00011
00000100 00100
00000101 00101
00000110 00110
00000111 00111
00001000 01000
00010000 00001
00010001 00010
00010010 00011
00010011 00100
00010100 00101
00010101 00110
00010110 00111
00010111 01000
00011000 01001
00100000 00010
00100001 00011
00100010 00100
00100011 00101
00100100 00110
00100101 00111
00100110 01000
00100111 01001
00101000 01010
00110000 00011
00110001 00100
00110010 00101
00110011 00110
00110100 00111
00110101 01000
00110110 01001
00110111 01010
00111000 01011
01000000 00100
01000001 00101
01000010 00110
01000011 00111
01000100 01000

Profesor Leopoldo Silva Bijit 19-01-2010


10 Sistemas Digitales
01000101 01001
01000110 01010
01000111 01011
01001000 01100
01010000 00101
01010001 00110
01010010 00111
01010011 01000
01010100 01001
01010101 01010
01010110 01011
01010111 01100
01011000 01101
01100000 00110
01100001 00111
01100010 01000
01100011 01001
01100100 01010
01100101 01011
01100110 01100
01100111 01101
01101000 01110
01110000 00111
01110001 01000
01110010 01001
01110011 01010
01110100 01011
01110101 01100
01110110 01101
01110111 01110
01111000 01111
10000000 01000
10000001 01001
10000010 01010
10000011 01011
10000100 01100
10000101 01101
10000110 01110
10000111 01111
10001000 10000
.e
La que procesada con espresso, obtiene las ecuaciones minimizadas en dos niveles:

#Suma operandos enteros sin signo de 4 bits.


n4 = (a3&!a2&!a1&!a0&b3&!b2&!b1&!b0);

n3 = (!a3&b3&!b2&!b1&!b0) | (a3&!a2&!a1&!a0&!b3) | (!a3&a0&!b3&b2&b1&b0) |


(!a3&a2&a0&!b3&b1&b0) | (!a3&a1&a0&!b3&b2&b0) | (!a3&a2&a1&a0&!b3&b0) |
( !a3&a1&!b3&b2&b1) | (!a3&a2&a1&!b3&b1) | (!a3&a2&!b3&b2);

Profesor Leopoldo Silva Bijit 19-01-2010


Diseño Modular. 11

n2 = (!a3&!a2&a0&!b3&!b2&b1&b0) | (!a3&a2&a0&!b3&b2&b1&b0) |
(!a3&!a2&a1&a0&!b3&!b2&b0) | (!a3&a2&a1&a0&!b3&b2&b0) |
(!a3&!a2&!b3&b2&!b1&!b0) | ( !a3&a2&!a1&!b3&!b2&!b0) |
(!a3&!a2&!a1&!b3&b2&!b0) | (!a3&a2&!a0&!b3&!b2&!b1) |
(!a3&!a2&!a0&!b3&b2&!b1) | (!a3&!a2&a1&!b3&!b2&b1) |
(!a3&a2&a1&!b3&b2&b1) | (!a3&a2&!a1&!a0&!b3&!b2) |
(!a3&a2&!a1&!b3&!b2&!b1) | ( !a3&!a2&!a1&!b3&b2&!b1) |
(!a3&a2&!b2&!b1&!b0) | (!a2&!a1&!a0&!b3&b2);

n1 = (!a3&a1&a0&!b3&b1&b0) | (!a3&!a1&a0&!b3&!b1&b0) | (!a3&a1&!b2&!b1&!b0) |


(!a2&!a1&!a0&!b3&b1) | (!a3&a1&!b3&!b1&!b0) | (!a3&!a1&!b3&b1&!b0) |
(!a3&a1&!a0&!b3&!b1) | (!a3&!a1&!a0&!b3&b1);

n0 = (!a3&a0&!b2&!b1&!b0) | (!a2&!a1&!a0&!b3&b0) | (!a3&a0&!b3&!b0) |


(!a3&!a0&!b3&b0);

El que permite escribir el módulo verilog:

//Suma operandos enteros sin signo de 4 bits. Máximo operando 8


module sumadorU5(a3,a2,a1,a0,b3,b2,b1,b0,n4,n3,n2,n1,n0);
input a3,a2,a1,a0,b3,b2,b1,b0;
output n4,n3,n2,n1,n0;

assign n4 = (a3&~a2&~a1&~a0&b3&~b2&~b1&~b0);
assign n3 = (~a3&b3&~b2&~b1&~b0) | (a3&~a2&~a1&~a0&~b3) |
(~a3&a0&~b3&b2&b1&b0) | (~a3&a2&a0&~b3&b1&b0) |
(~a3&a1&a0&~b3&b2&b0) | (~a3&a2&a1&a0&~b3&b0) |
(~a3&a1&~b3&b2&b1) | (~a3&a2&a1&~b3&b1) | (~a3&a2&~b3&b2);
assign n2 = (~a3&~a2&a0&~b3&~b2&b1&b0) | (~a3&a2&a0&~b3&b2&b1&b0) |
(~a3&~a2&a1&a0&~b3&~b2&b0) | (~a3&a2&a1&a0&~b3&b2&b0) |
(~a3&~a2&~b3&b2&~b1&~b0) | (~a3&a2&~a1&~b3&~b2&~b0) |
(~a3&~a2&~a1&~b3&b2&~b0) | (~a3&a2&~a0&~b3&~b2&~b1) |
(~a3&~a2&~a0&~b3&b2&~b1) | (~a3&~a2&a1&~b3&~b2&b1) |
(~a3&a2&a1&~b3&b2&b1) |(~a3&a2&~a1&~a0&~b3&~b2) |
(~a3&a2&~a1&~b3&~b2&~b1) | (~a3&~a2&~a1&~b3&b2&~b1) |
(~a3&a2&~b2&~b1&~b0) | (~a2&~a1&~a0&~b3&b2);
assign n1 = (~a3&a1&a0&~b3&b1&b0) | (~a3&~a1&a0&~b3&~b1&b0) |
(~a3&a1&~b2&~b1&~b0) | (~a2&~a1&~a0&~b3&b1) |
(~a3&a1&~b3&~b1&~b0) | (~a3&~a1&~b3&b1&~b0) |
(~a3&a1&~a0&~b3&~b1) | (~a3&~a1&~a0&~b3&b1);
assign n0 = (~a3&a0&~b2&~b1&~b0) | (~a2&~a1&~a0&~b3&b0) |
(~a3&a0&~b3&~b0) | (~a3&~a0&~b3&b0);
endmodule

Profesor Leopoldo Silva Bijit 19-01-2010


12 Sistemas Digitales
3.4. Módulo tablasuma.

#convierte binarios de 0 a 16 en unos justificados a la derecha en ancho de 16 bits


.i 5
.o 16
.ilb n4 n3 n2 n1 n0
.ob sa15 sa14 sa13 sa12 sa11 sa10 sa09 sa08 sa07 sa06 sa05 sa04 sa03 sa02 sa01 sa00
00000 0000000000000000
00001 1000000000000000
00010 1100000000000000
00011 1110000000000000
00100 1111000000000000
00101 1111100000000000
00110 1111110000000000
00111 1111111000000000
01000 1111111100000000
01001 1111111110000000
01010 1111111111000000
01011 1111111111100000
01100 1111111111110000
01101 1111111111111000
01110 1111111111111100
01111 1111111111111110
10000 1111111111111111
.e
Las ecuaciones minimizadas:
#convierte binarios de 0 a 16 en unos justificados a la derecha en ancho de 16 bits
sa15 = (n4&!n3&!n2&!n1&!n0) | (!n4&n0) | (!n4&n1) | (!n4&n2) | (!n4&n3);
sa14 = (n4&!n3&!n2&!n1&!n0) | (!n4&n1) | (!n4&n2) | (!n4&n3);
sa13 = (n4&!n3&!n2&!n1&!n0) | (!n4&n1&n0) | (!n4&n2) | (!n4&n3);
sa12 = (n4&!n3&!n2&!n1&!n0) | (!n4&n2) | (!n4&n3);
sa11 = (n4&!n3&!n2&!n1&!n0) | (!n4&n2&n0) | (!n4&n2&n1) | (!n4&n3);
sa10 = (n4&!n3&!n2&!n1&!n0) | (!n4&n2&n1) | (!n4&n3);
sa09 = (n4&!n3&!n2&!n1&!n0) | (!n4&n2&n1&n0) | (!n4&n3);
sa08 = (n4&!n3&!n2&!n1&!n0) | (!n4&n3);
sa07 = (n4&!n3&!n2&!n1&!n0) | (!n4&n3&n0) | (!n4&n3&n1) | (!n4&n3&n2);
sa06 = (n4&!n3&!n2&!n1&!n0) | (!n4&n3&n1) | (!n4&n3&n2);
sa05 = (n4&!n3&!n2&!n1&!n0) | (!n4&n3&n1&n0) | (!n4&n3&n2);
sa04 = (n4&!n3&!n2&!n1&!n0) | (!n4&n3&n2);
sa03 = (n4&!n3&!n2&!n1&!n0) | (!n4&n3&n2&n0) | (!n4&n3&n2&n1);
sa02 = (n4&!n3&!n2&!n1&!n0) | (!n4&n3&n2&n1);
sa01 = (!n4&n3&n2&n1&n0) | (n4&!n3&!n2&!n1&!n0);
sa00 = (n4&!n3&!n2&!n1&!n0);

Traducida a verilog:

//convierte binarios de 0 a 16 en unos justificados a la derecha en ancho de 16 bits

Profesor Leopoldo Silva Bijit 19-01-2010


Diseño Modular. 13
module suma1(n4,n3,n2,n1,n0,
sa15,sa14,sa13,sa12,sa11,sa10,sa09,sa08,
sa07,sa06,sa05,sa04,sa03,sa02,sa01,sa00);
input n4,n3,n2,n1,n0;
output sa15,sa14,sa13,sa12,sa11,sa10,sa09,sa08,sa07,sa06,sa05,sa04,sa03,sa02,sa01,sa00;
assign sa15 = (n4&~n3&~n2&~n1&~n0) | (~n4&n0) | (~n4&n1) | (~n4&n2) | (~n4&n3);
assign sa14 = (n4&~n3&~n2&~n1&~n0) | (~n4&n1) | (~n4&n2) | (~n4&n3);
assign sa13 = (n4&~n3&~n2&~n1&~n0) | (~n4&n1&n0) | (~n4&n2) | (~n4&n3);
assign sa12 = (n4&~n3&~n2&~n1&~n0) | (~n4&n2) | (~n4&n3);
assign sa11 = (n4&~n3&~n2&~n1&~n0) | (~n4&n2&n0) | (~n4&n2&n1) | (~n4&n3);
assign sa10 = (n4&~n3&~n2&~n1&~n0) | (~n4&n2&n1) | (~n4&n3);
assign sa09 = (n4&~n3&~n2&~n1&~n0) | (~n4&n2&n1&n0) | (~n4&n3);
assign sa08 = (n4&~n3&~n2&~n1&~n0) | (~n4&n3);
assign sa07 = (n4&~n3&~n2&~n1&~n0) | (~n4&n3&n0) | (~n4&n3&n1) | (~n4&n3&n2);
assign sa06 = (n4&~n3&~n2&~n1&~n0) | (~n4&n3&n1) | (~n4&n3&n2);
assign sa05 = (n4&~n3&~n2&~n1&~n0) | (~n4&n3&n1&n0) | (~n4&n3&n2);
assign sa04 = (n4&~n3&~n2&~n1&~n0) | (~n4&n3&n2);
assign sa03 = (n4&~n3&~n2&~n1&~n0) | (~n4&n3&n2&n0) | (~n4&n3&n2&n1);
assign sa02 = (n4&~n3&~n2&~n1&~n0) | (~n4&n3&n2&n1);
assign sa01 = (~n4&n3&n2&n1&n0) | (n4&~n3&~n2&~n1&~n0);
assign sa00 = (n4&~n3&~n2&~n1&~n0);
endmodule

3.5. Instanciación de módulos.

El en diagrama de la Figura 3, se definen los nombres de las instancias de los módulos. También
se han definido tres conjuntos de alambres para efectuar las conexiones entre los módulos.

Entrada 15..0

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


cuenta13 cuenta12 cuenta11 cuenta10
11..912 8..6 5..3 12 2..0 sum
suma11 suma10
7..4 3..0 sum2
Sumador5
4..0 sum3

Tabla

Salida 15..0

Figura 3. Interconexión de módulos

El código verilog para el armado del conjunto es:

Profesor Leopoldo Silva Bijit 19-01-2010


14 Sistemas Digitales
`timescale 1ns / 1ps
module cta1(entrada, salida);
input [15:0] entrada;
output [15:0] salida;
wire sum[11:0];
wire sum2[7:0];
wire sum3[4:0];

scuenta1 cuenta10(sum[2],sum[1],sum[0],entrada[3],entrada[2],entrada[1],entrada[0]);
scuenta1 cuenta11(sum[5],sum[4],sum[3],entrada[7],entrada[6],entrada[5],entrada[4]);
scuenta1 cuenta12(sum[8],sum[7],sum[6],entrada[11],entrada[10],entrada[9],entrada[8]);
scuenta1 cuenta13(sum[11],sum[10],sum[9],entrada[15],entrada[14],entrada[13],entrada[12]);

suma1 suma10(sum[2],sum[1],sum[0],sum[5],sum[4],sum[3],
sum2[3],sum2[2],sum2[1],sum2[0]);

suma1 suma11(sum[8],sum[7],sum[6],sum[11],sum[10],sum[9],
sum2[7],sum2[6],sum2[5],sum2[4]);

sumadorU5 sumador5( sum2[3],sum2[2],sum2[1],sum2[0],


sum2[7],sum2[6],sum2[5],sum2[4],
sum3[4],sum3[3],sum3[2],sum3[1],sum3[0]);

tablasuma tabla(sum3[4],sum3[3],sum3[2],sum3[1],sum3[0],
salida[15],salida[14],salida[13],salida[12],salida[11],
salida[10],salida[9],salida[8],salida[7],salida[6],
salida[5],salida[4],salida[3],salida[2],salida[1],salida[0]);
endmodule

El diseño anterior fue minimizado en dos niveles para cada uno de los módulos. Al ser
implementado en base a fpga, mediante la aplicación, se obtienen los resúmenes de ocupación
de espacio y de velocidad.

3.6. Design Statistics

Cell Usage :
# BELS : 83
# LUT2 :5
# LUT3 :8
# LUT4 : 68
# MUXF5 :2
# IO Buffers : 32
# IBUF : 16
# OBUF : 16
====================================================================

Profesor Leopoldo Silva Bijit 19-01-2010


Diseño Modular. 15
Device utilization summary:
Selected Device : 3s400pq208-5
Number of Slices: 46 out of 3584 1%
Number of 4 input LUTs: 81 out of 7168 1%
Number of bonded IOBs: 32 out of 141 22%

3.7. Timing Summary:

Speed Grade: -5
Minimum period: No path found
Minimum input arrival time before clock: No path found
Maximum output required time after clock: No path found
Maximum combinational path delay: 21.247ns

4. Diseño abstracto.

La descripción del problema, empleando verilog, permite describir lo que se desea realizar, en la
forma más abstracta posible. En este caso el módulo que suma los unos de la palabra es sencillo
de describir, y dejamos a la herramienta de síntesis que tome la iniciativa para descomponer el
problema en submódulos. Para la descripción de la tabla de salida, empleamos una sentencia
case. Resulta:

module ctaunos(entrada, salida);


input [15:0] entrada;
output [15:0] salida;
reg [4:0] sumau;
reg [15:0] salida;

always @(*)
begin
sumau = entrada[15]+entrada[14]+entrada[13]+entrada[12]+
entrada[11]+entrada[10]+entrada[9] +entrada[8]+
entrada[7] +entrada[6] +entrada[5] +entrada[4]+
entrada[3] +entrada[2] +entrada[1] +entrada[0];

case (sumau)
5'b00000: salida = 16'b0000000000000000;
5'b00001: salida = 16'b1000000000000000;
5'b00010: salida = 16'b1100000000000000;
5'b00011: salida = 16'b1110000000000000;
5'b00100: salida = 16'b1111000000000000;
5'b00101: salida = 16'b1111100000000000;
5'b00110: salida = 16'b1111110000000000;
5'b00111: salida = 16'b1111111000000000;
5'b01000: salida = 16'b1111111100000000;
5'b01001: salida = 16'b1111111110000000;
5'b01010: salida = 16'b1111111111000000;
5'b01011: salida = 16'b1111111111100000;

Profesor Leopoldo Silva Bijit 19-01-2010


16 Sistemas Digitales
5'b01100: salida = 16'b1111111111110000;
5'b01101: salida = 16'b1111111111111000;
5'b01110: salida = 16'b1111111111111100;
5'b01111: salida = 16'b1111111111111110;
5'b10000: salida = 16'b1111111111111111;
default: salida = 16'b0000000000000000;
endcase
end

La herramienta de síntesis determina que la sentencia case puede implementares con una ROM
de 5 entradas para el bus de dirección, con palabras de largo 16. La suma de los bits la
implementa en cuatro niveles de sumadores que generan reservas de salida.

Los algoritmos empleados para realizar la síntesis se alejan bastante de los postulados y
teoremas del álgebra de Boole y de los métodos basados en papel y lápiz.

Si la descripción es sintetizable podría seguirse adelante en el diseño, salvo que los tiempos de
propagación fueran excesivos; en este caso habría que intentar otra descripción verilog, en la
cual el programador debería participar en la descomposición del problema en módulos
sintetizables que logren una síntesis en menos niveles.

Observando el siguiente resumen, proporcionado por la herramienta, vemos que la


descomposición emplea un nivel de sumadores adicionales a la descomposición en módulos
estructurales vista antes.

4.1. HDL Synthesis Report

Macro Statistics
# ROMs :1
32x16-bit ROM :1
# Adders/Subtractors : 15
1-bit adder carry out :8
2-bit adder carry out :4
3-bit adder carry out :2
4-bit adder carry out :1

4.2. Esquemático RTL

El módulo verilog, que describe la relación entre la entrada y salida, se muestra en la Figura 4.

Figura 4. Esquemático red combinacional.

Profesor Leopoldo Silva Bijit 19-01-2010


Diseño Modular. 17
Con más detalle se muestra el esquemático de la descomposición, en la Figura 5.

Sumador5 Tablasuma

Suma1

Figura 5. Módulos del diseño abstracto.

Se han indicado los nombres de los bloques que se usaron en la descripción estructural, vista al
inicio.

4.3. Timing Summary:

Observando el resumen de especificaciones temporales, vemos el máximo tiempo de


propagación, que se tiene con la componente elegida para el diseño. Esto puede mejorarse
eligiendo una componente más rápida, o disminuyendo los niveles del diseño. Esto último
implica cambiar el diseño abstracto original.

Speed Grade: -5
Minimum period: No path found
Minimum input arrival time before clock: No path found
Maximum output required time after clock: No path found
Maximum combinational path delay: 17.324ns

El costo espacial, empleando una fpga, en base a LUTs, se resume en:

4.5. Device utilization summary:

Selected Device : 3s400pq208-5

Number of Slices: 31 out of 3584 0%


Number of 4 input LUTs: 58 out of 7168 0%
Number of bonded IOBs: 32 out of 141 22%

Profesor Leopoldo Silva Bijit 19-01-2010


18 Sistemas Digitales
5. Comparación entre diseño abstracto y estructural.

5.1. Comparación empleando FPGA.

En el caso del ejemplo que se está analizando, el diseño abstracto conduce a mejores resultados,
tanto en tiempo como en espacio. La explicación de esto es que los diseños optimizados en dos
niveles de compuertas, pero de numerosas entradas, no se mapean adecuadamente en los
bloques lógicos de las fpga. Además la herramienta de síntesis emplea un bloque de ROM, para
implementar la Tabla de salida.

5.2. Comparación empleando CPLD.

En la implementación basada en CPLD, resulta que el diseño basado en módulos optimizados


en dos niveles ocupa menos macroceldas y menos productos.
5.2.1. Módulos optimizados en dos niveles.

Design Name cta1


Fitting Status Successful
Software Version I.25
Device Used XC95144-7-PQ100
Date 3-24-2007, 6:51PM

RESOURCES SUMMARY
Macrocells Function Block
Pterms Used Registers Used Pins Used
Used Inputs Used
46/144 (32%) 551/720 (77%) 0/144 (0%) 32/81 (40%) 253/288 (88%)

5.2.2. Diseño abstracto.

Design Name ctaunos


Fitting Status Successful
Software Version I.25
Device Used XC95144-7-PQ100
Date 3-24-2007, 6:58PM

RESOURCES SUMMARY
Macrocells Function Block
Pterms Used Registers Used Pins Used
Used Inputs Used
64/144 (45%) 622/720 (87%) 0/144 (0%) 32/81 (40%) 179/288 (63%)

Profesor Leopoldo Silva Bijit 19-01-2010


Diseño Modular. 19
6. Diseño empleando Precision RTL Synthesis de Mentor Graphics Corporation

Nivel RTL.

A partir del diseño abstracto descompone el sumador de bits, en cuatro niveles de sumadores,
como se muestra en la Figura 6.

Figura 6. Sumador de unos.

La función combinacional, que transforma la salida del sumador, la descompone, en términos de


compuertas, según:

Figura 7. Salida combinacional.

Profesor Leopoldo Silva Bijit 19-01-2010


20 Sistemas Digitales
Nivel tecnológico.

El diseño en un dispositivo ispXPGA de Lattice, mostrando la descomposición en LUTS:

Figura 8. Diseño en base a LUTs.

La herramienta de síntesis produce una descripción interna de cada LUT, lo que puede verse en
la Figura 9.

Profesor Leopoldo Silva Bijit 19-01-2010


Diseño Modular. 21

Figura 9. Esquema interno de LUTs.

7. Diseño secuencial.

Puede lograrse un diseño, que cumpla con la especificación inicial, mediante una máquina
secuencial que emplee registros de desplazamiento. Este diseño requiere especificar señales de
control y además disponer de una señal de reloj.

Profesor Leopoldo Silva Bijit 19-01-2010


22 Sistemas Digitales

Índice general.

DISEÑO MODULAR CON VERILOG. ..................................................................................................1


1. ESPECIFICACIÓN. ...................................................................................................................................1
2. DISEÑO BRUTA FORZA. ..........................................................................................................................1
3. DISEÑO MODULAR. ................................................................................................................................4
3.1. Módulo cuenta1. ...........................................................................................................................5
3.2. Módulo suma1. ..............................................................................................................................7
3.3. Módulo suma5. ..............................................................................................................................8
3.4. Módulo tablasuma.......................................................................................................................12
3.5. Instanciación de módulos. ...........................................................................................................13
3.6. Design Statistics ..........................................................................................................................14
3.7. Timing Summary: ........................................................................................................................15
4. DISEÑO ABSTRACTO. ...........................................................................................................................15
4.1. HDL Synthesis Report .................................................................................................................16
4.2. Esquemático RTL .......................................................................................................................16
4.3. Timing Summary: ........................................................................................................................17
4.5. Device utilization summary: .......................................................................................................17
5. COMPARACIÓN ENTRE DISEÑO ABSTRACTO Y ESTRUCTURAL. .............................................................18
5.1. Comparación empleando FPGA. ................................................................................................18
5.2. Comparación empleando CPLD. ................................................................................................18
5.2.1. Módulos optimizados en dos niveles. ................................................................................................... 18
5.2.2. Diseño abstracto. .................................................................................................................................. 18
6. DISEÑO EMPLEANDO PRECISION RTL SYNTHESIS DE MENTOR GRAPHICS CORPORATION ..................19
Nivel RTL. ..........................................................................................................................................19
Nivel tecnológico. ..............................................................................................................................20
7. DISEÑO SECUENCIAL. ..........................................................................................................................21
ÍNDICE.....................................................................................................................................................22

Índice de Figuras

FIGURA 1. DIAGRAMA EN BLOQUES. ..............................................................................................................4


FIGURA 2 DETALLE DE MÓDULOS ..................................................................................................................5
FIGURA 3. INTERCONEXIÓN DE MÓDULOS....................................................................................................13
FIGURA 4. ESQUEMÁTICO RED COMBINACIONAL. ........................................................................................16
FIGURA 5. MÓDULOS DEL DISEÑO ABSTRACTO. ...........................................................................................17
FIGURA 6. SUMADOR DE UNOS. ...................................................................................................................19
FIGURA 7. SALIDA COMBINACIONAL. ..........................................................................................................19
FIGURA 8. DISEÑO EN BASE A LUTS. ...........................................................................................................20
FIGURA 9. ESQUEMA INTERNO DE LUTS. ....................................................................................................21

Profesor Leopoldo Silva Bijit 19-01-2010

Anda mungkin juga menyukai