Você está na página 1de 302

DISEO COMPUTACIONAL DE

Hugo Gilberto Garca Guerra

PRLOGO

Dentro del vasto campo de la electrnica, la seccin que atae a los circuitos lgicos digitales es indudablemente la de mayor expansin y tambin la ms interesante. Muchos de los grandes avances tecnolgicos de nuestra era, han sido un resultado directo de la aplicacin de la lgica digital a la resolucin de problemas especficos.

La comunicacin va satlite, los viajes espaciales, las computadoras, las videocmaras de enfoque automtico, los equipos digitales de sonido, los telfonos celulares, las impresoras lser e infinidad de dispositivos automticos de medicin, sealizacin y control, as como de electrnica de entretenimiento han podido desarrollarse gracias a los avances en electrnica digital. El desarrollo del circuito integrado en los aos sesentas y el del microprocesador en los setentas son prueba evidente del grado de madurez alcanzado en este campo. La alta densidad de integracin lograda actualmente en los circuitos integrados ms avanzados, como pudieran ser algunos de los microprocesadores de vanguardia, que agrupan en su interior mas de dos millones de transistores, son representativos de estos logros. La computadora personal se ha constituido en la herramienta indispensable para el diseador de circuitera digital. Ella nos facilita el disear circuitos lgicos complejos y tambin simular y verificar nuestros diseos. Este libro corresponde a un primer curso de circuitos lgicos y est destinado a introducir a los estudiantes a este fascinante campo de la electrnica. En el curso disearemos y construiremos circuitos lgicos relativamente sencillos, aplicndolos siempre que sea posible a la solucin de problemas reales. Veremos cmo emplear a la computadora para obtener la ecuacin booleana ms reducida, y cmo podemos verificar que la solucin obtenida es correcta. Tambin utilizaremos a la computadora para simular y analizar el comportamiento de un circuito digital que hayamos diseado, armndolo por programa y aplicndole las seales de prueba que nosotros elijamos. Veremos los algoritmos y los programas fuente originales del autor, para tener una idea clara de cmo trabajan los programas comerciales de diseo y simulacin de circuito lgico, que normalmente se venden en miles de dlares. Adems de suministrar informacin, nuestros cursos deben proporcionar formacin, razn por la cul los aspectos tericos sern fuertemente respaldados por la prctica. En este curso realizaremos numerosas practicas de laboratorio que nos permitirn consolidar la informacin terica y a lo largo del semestre escolar se propondrn pequeos proyectos que induzcan al estudiante al diseo y construccin fsica de circuitos digitales. Al trmino del curso se realizar un trabajo final, que aplique las diversas herramientas terico prcticas adquiridas.

Hugo Gilberto Garca Guerra

CAPTULO 1 ALGEBRA BOOLEANA OBJETIVOS: DESPUS DE ESTUDIAR ESTE CAPTULO, EL EDUCANDO MANEJA LOS CONCEPTOS FUNDAMENTALES DEL DISEO DIGITAL, Y SER CAPAZ DE:

1.- ESTABLECER LA TABLA DE VERDAD DE LAS DIVERSAS FUNCIONES LGICAS BSICAS. 2.- DESCRIBIR LA LGICA DE CIRCUITOS SIMPLES CON INTERRUPTORES, MEDIANTE UNA TABLA DE VERDAD. 3.- OBTENER LA ECUACIN BOOLEANA CORRESPONDIENTE A UNA TABLA DE VERDAD. 4.- ENUNCIAR LOS POSTULADOS Y TEOREMAS FUNDAMENTALES DEL ALGEBRA BOOLEANA. 5.- EMPLEAR EL LGEBRA DE CONJUNTOS PARA VERIFICAR LA VALIDEZ DE UNA ECUACIN BOOLEANA.

LGICA BINARIA

Para iniciar el estudio de la lgica binaria, consideramos un circuito formado por una batera, un interruptor y una lmpara, conectados en serie. Establezcamos por convencin que una entrada 0 representa al interruptor abierto y una entrada 1 al interruptor cerrado. Similarmente una salida 0 representa al foco apagado y 1 al foco encendido.

ENTRADAS 0 interruptor abierto 0 interruptor cerrado

SALIDAS 0 foco apagado 1 foco encendido

El comportamiento del circuito lo podemos representar mediante la siguiente tabla de verdad:

A 0 1

S 0 1

La tabla indica que para este circuito, una entrada 0 corresponde a una salida 0 y una entrada 1 corresponde a una salida1.

A esto le llamamos funcin lgica AFIRMACIN, y su ecuacin es: S = A Si en lugar de un interruptor se trabaja con 2 interruptores en serie, tenemos:

A 0 0 1 1

B 0 1 0 1

S 0 0 0 1 S=A*B

Funcin lgica y:

Slo cuando A y B son uno la salida es uno Si el circuito est formado por dos interruptores en paralelo, conectados a una batera en serie con un foco, tenemos: A 0 0 1 1 B 0 1 0 1 S 0 1 1 1 S=A+B

Funcin lgica o:

Tanto si A o B (o ambas) son uno, la salida es uno. Si el circuito est formado por un foco alimentado por una batera, en paralelo con un interruptor, se tiene:

Funcin lgica NEGACIN:

A 0 1

S 0 1

S=

Si en paralelo con el foco estn dos interruptores en serie, tenemos lo siguiente: A 0 0 1 1 B 0 1 0 1 S 1 1 1 0

Funcin lgica NO-Y :

S = ( A * B)

Slo cuando A y B son uno la salida es cero. Si hay dos interruptores en paralelo con el foco, se tiene: A 0 0 1 1 B 0 1 0 1 S 1 0 0 0

Funcin lgica NO-O:

S = ( A + B)

Tanto si A o B (o ambas) son uno la salida es cero.

Una tpica alarma de auto, agrupa a varios de los elementos lgicos citados, veamos como opera el circuito de la figura siguiente:

Estando cerrado S 1 (alarma activada), al cerrar cualesquiera de los interruptores de puertas, cofre o cajuela (I 1 a I n ) se energiza el relevador y atrae sus contactos por lo que suena el claxon al cerrarse el circuito va X 1 . El claxon no deja de sonar an si se abre nuevamente el interruptor que la activ ya que el relevador queda permanentemente energizado (el relevador acta como memoria, por la trayectoria que establece X 2 ). Para desactivar la alarma hay que desconectar la alimentacin abriendo S 1 (interruptor con llave). Para evitar que se agote la energa, al sonar ininterrumpidamente el claxon, debe agregarse un temporizador al circuito. Insertando un relevador trmico en la posicin marcada con el crculo punteado. Despus de un cierto tiempo de sonar el claxon, el termostato se calienta lo suficiente para abrir el circuito (desconexin automtica de la alimentacin de energa). Un corto tiempo despus se enfra lo suficiente para que el contacto se cierre nuevamente reactivndose automticamente la alarma. Otra importante funcin lgica es la o-exclusiva, la cual entrega un 1 de salida cuando una entrada o la otra valen 1 de manera exclusiva. Si las dos entradas tienen igual valor, la salida vale cero. La funcin o-exclusiva corresponde al llamado interruptor de escalera, que nos permite prender o apagar un foco desde cualesquiera de dos posiciones distintas.

Funcin lgica O-EXCLUSIVA:

A 0 0 1 1

B 0 1 0 1

S 0 1 1 0

S = A*B +

A* B

La salida vale uno cuando las entradas son diferentes.

ALGEBRA DE CONJUNTOS

En muchas ocasiones, es factible reducir la ecuacin Booleana que describe el comportamiento de un circuito lgico. Esto es deseable ya que una ecuacin reducida ser ms econmica de producir que la ecuacin original. El lgebra de conjuntos nos permite encontrar teoremas y propiedades de los circuitos lgicos, que aplicaremos para reducir ecuaciones Booleanas. Cada conjunto est formado por los elementos que la constituyen. Al unir el conjunto A con el conjunto B, obtenemos un nuevo conjunto que est formado por los elementos que pertenecen a A o a B (operacin O lgica). El intersectar el conjunto A con el conjunto B obtenemos un nuevo, constituido por los elementos que al mismo tiempo pertenecen a A y a B (operacin Y lgica). Haremos uso de una representacin grfica de los conjuntos (diagramas de Venn), para facilitar la comprensin de las relaciones entre diversos arreglos de conjuntos. Supongamos por un momento que el universo en el que vamos a trabajar es un plano y que los elementos que lo integran son los cuatro cuadrantes del crculo cartesiano. Bajo esta consideracin podemos hablar de los siguientes conjuntos:

CONJUNTO UNIVERSAL, agrupa a todos los puntos del crculo cartesiano. Corresponde a el 1 (todo) en algebra Booleana.

CONJUNTO y, agrupa a todos los puntos del primero y segundo cuadrantes.

CONJUNTO NO Y, agrupa a todos los puntos del tercero y cuarto cuadrantes.

CONJUNTO X, agrupa a todos los puntos del primero y cuarto cuadrantes.

CONJUNTO NO X, agrupa a todos los puntos del segundo y tercero cuadrantes.

Las posibles combinaciones de los conjuntos X, NO X, Y, NO Y son las siguientes: OPERACIONES DE UNIN OPERACIONES DE INSTERSECCIN

La unin de un conjunto con su complemento es el conjunto universal (el uno en lgebra Booleana).

OPERACIONES DE UNIN DE INTERSECCIONES

Adems de las 16 distintas combinaciones antes mostradas, se permiten las siguientes dos:

Observe que existen las siguientes relaciones:

X + Y = X Y X + Y = X Y X + Y = X Y X + Y = X Y

De all el siguiente teorema:

TEOREMA MORGAN

Conviene destacar que mediante interseccin de uniones, se pueden sintetizar las 16 distintas combinaciones posibles.

PROPIEDADES ALGEBRAICAS

Consideremos ahora tres conjuntos A, B, C, cada uno de los cuales agrupa a los siguientes elementos:

5 4
A = { 1, 3, 5, 7 }

B = { 2, 3, 4, 5 }

C = { 4, 5, 6, 7 }

Si realizamos con ellos operaciones de unin o interseccin, veremos que cumplen con las siguientes propiedades:

CONMUTATIVA:

A B = B A

A+ B = B+ A

ASOCIATIVA:

A ( B C ) = ( A B) C

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

DISTRIBUTIVA:

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

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

De los diagramas anteriores podemos apreciar la validez de los siguientes postulados:

00 = 0

0+0 = 0

1 1 = 1
1 =0
Si z = 0 Si

1 +1 = 1
0 =1
entonces

z =1

z =1

entonces z = 0

Donde uno representa al conjunto universal, y cero representa al conjunto vaco. La operacin de unin corresponde a interruptores en paralelo. La operacin de interseccin corresponde a interruptores en serie.

Tambin, de dichos diagramas, podemos obtener una serie de teoremas del lgebra Booleana que nos facilitarn reducir expresiones lgicas.

TEOREMAS

Predominio

A +1 = 1
A0 = 0

Complemento

A + A =1
A A = 0

Absorcin

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

Reduccin
( A B) + ( A B ) = A ( A + B) ( A + B) = A

TRMINOS CLAVE

LGICA BINARIA TABLA DE VERDAD FUNCIN LGICA AFIRMACIN FUNCIN LGICA O FUNCIN LGICA Y FUNCIN LGICA NEGACIN FUNCIN LGICA NO O FUNCIN LGICA NO Y FUNCIN LGICA O EXCLUSIVA ALGEBRA DE CONJUNTOS CONJUNTO UNIVERSAL CONJUNTO VACO ELEMENTO DE UN CONJUNTO UNIN DE CONJUNTOS INTERSECCIN DE CONJUNTOS ALGEBRA BOOLEANA ECUACIONES BOOLEANAS PROPIEDADES ALGEBRAICAS TEOREMAS

CUESTIONARIO

1.- Describa verbalmente las propiedades conmutativa, asociativa y distributiva del lgebra de conjuntos.

2.- Describa verbalmente el significado de los teoremas de predominio, complemento, absorcin y reduccin del lgebra de conjuntos.

3.- Verifique si son vlidos o no, los siguientes enunciados:

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

(b) [ X + Y ] [ X + Y ] = X Y + X Y

(c) [ X + Y ] [ X + Y ] [ X + Y ] = X Y

(d)

A+ A B = A+ B

4.- Construya las tablas de verdad de las siguientes funciones:

(a) F ( m, n) = ( m + n) (m + n ) ( m + n)

(b) F (l , m, n) = (l m) + m (l + n )

(c) F (i, j , k ) = (i + j ) (k + i j )

5.- Verificar la validez de las siguientes relaciones, denominadas Propiedades de la O exclusiva.

X X

0=x X=0 =X Y X =(X =X (Y Y) Z) (X Z 1

X X X

1=

X =1
Y X

Y=X+Y

X X

Y=Y Y Z

Propiedad conmutativa Propiedad asociativa

(Y

Z)=(X

Y)

Z)

Propiedad distributiva

6.- Se requiere disear un sistema de alarma bancaria, que se active cuando se abra una puerta, se rompa un vidrio, o haya movimiento fuera de horario de labores. Los sensores propuestos son los siguientes: Reloj R=0 en horas de trabajo R=1 fuera de horario

Sensor de puertas P=0 indica puertas cerradas P=1 indica puertas abiertas

Sensor de ventanas V=0 indica vidrios enteros V=1 indica vidrios rotos

Movimiento M=0 no hay movimiento M=1 hay movimiento

CAPTULO II

TRABAJANDO CON CIRCUITOS INTEGRADOS DIGITALES OBJETIVOS: DESPUS DE ESTUDIAR ESTE CAPTULO, EL EDUCANDO SER CAPAZ DE:

1.- RECONOCER LOS DIVERSOS SMBOLOS DE LAS COMPUERTAS LGICAS. 2.- DIBUJAR EL DIAGRAMA SIMBLICO DE UNA ECUACIN BOOLEANA SIMPLE. 3.- OBTENER LA ECUACIN BOOLEANA CORRESPONDIENTE A UNA TABLA DE VERDAD. 4.- EMPLEAR TEOREMAS Y POSTULADOS PARA REDUCIR UNA ECUACIN BOOLEANA. 5.- UTILIZAR CIRCUITOS INTEGRADOS PARA ARMAR FUNCIONES COMBINACIONES.

COMPUERTAS LGICAS

Las diversas funciones lgicas pueden construirse empleando arreglos de componentes electrnicos discretos (transistores, diodos, resistencias, ), o bien pueden adquirirse comercialmente circuitos integrados que las contengan. De hecho el primer circuito integrado, que se invent en 1962, fue un arreglo de compuertas lgicas NO-Y.

En los aos transcurridos desde aquellas fechas, han surgido diversas familias de circuitos integrados digitales, cuyas principales caractersticas se detallarn en un captulo posterior. Actualmente, las dos familias lgicas ms importantes son la TTL (que emplea transistores bipolares y la CMOS (que utiliza transistores de efecto de campo). En este captulo emplearemos circuitos integrados TTL.

Para facilitar la representacin de funciones lgicas en un diagrama, emplearemos smbolos especiales propuestos por la IEEE que es la asociacin Internacional de Ingenieros Elctricos y Electrnicos. La tabla siguiente presenta los smbolos bsicos:

NO INVERSOR La salida vale uno cuando la entrada vale uno.

INVERSOR La salida vale uno cuando la entrada vale cero.

O La salida es uno cuando una o ms de las entradas vale uno.

NO O La salida es uno slo cuando todas las entradas son cero.

Y La salida es uno slo cuando todas las entradas valen uno.

NO Y La salida vale uno cuando una o varias entradas son cero.

O EXCLUSIVA La salida es uno cuando un nmero non de entradas vale uno.

A continuacin otros dos smbolos de compuertas, junto con sus respectivas tablas de verdad. Corresponden a los equivalentes de DeMorgan de las compuertas NO-Y y NO-O. En estas compuertas las entradas aparecen negadas (observe el pequeo crculo representado en cada entrada).

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

NO Y

La salida vale uno cuando una o varias entradas son cero.

A 0 0 1 1

B 0 1 0 1

C 1 0 0 0

NO O

La salida es uno, slo cuando todas las entradas son cero

Una compuerta O con entradas negadas equivale a una compuerta NO-Y, ya que conforme al teorema de DeMorgan se tiene los siguientes:

De igual manera, una compuerta Y con entradas negadas equivale a una compuerta NO-O, puesto que:

Al analizar un diagrama puede convenirnos emplear estos smbolos, ya que nos facilitan entender la lgica con que opera. En la siguiente seccin, veremos algunas configuraciones electrnicas simples, que podramos utilizar para construir las funciones lgicas bsicas. Adicionalmente, se muestra la distribucin de compuertas lgicas en el interior de circuitos integrados de la familia TTL.

Faltan algunas imgenes de la pagina 15 17

Es importante observar la distribucin poco usual de las terminales de el integrado 7402 (en l la patita 1 es una salida mientras que en los correspondientes a las otras compuertas lgicas la patita 1 es una entrada), ya que es una frecuente causa de error al armar el circuito correspondiente. Faltan imagen de la pagina 17

Las compuertas lgicas TTL citadas previamente, las emplearemos en las prcticas de laboratorio y tambin para construir los circuitos digitales que diseemos en este curso, razn por la cual es conveniente establecer las reglas bsicas a seguir para su utilizacin:

REGLAS PARA UTILIZAR INTEGRADOS TTL

1. Mantenga el voltaje de alimentacin (+Vcc) en el rango de 5 0.25 volts. Emplee una fuente
regulada de 5 volts para alimentar el circuito. Si no dispone de ella, construya una siguiendo el diagrama que aparece en el apndice.

2. Utilice alambres de conexin cortos y gruesos (calibres 22 o 24, como los empleados en cables tipo multipar telefnico). Los alambres muy largos actan como antenas e introducen ruidos, los alambres muy delgados introducen cadas de voltaje considerables por efecto resistivo.

3. Coloque capacitadores de 0.01 f entre +Vcc y tierra, cada 6 integrados, para reducir
ruidos que se propagan por la lnea.

4. Evite dejar entradas flotando. Una entrada flotante TTL usualmente corresponde a un uno lgico, pero es muy susceptible a ruidos y puede cambiar su valor de manera imprevista.

5. Conecte las entradas no utilizadas de manera tal que no afecten la lgica de operacin de
la compuerta. Por ejemplo si se trata de compuertas Y conecte las entradas no utilizadas a +Vcc , si son compuertas O conecte las entradas no utilizadas a tierra.

6. Evite sobrecalentar al soldar. Los circuitos integrados deben soldarse con cautines tipo lpiz de baja potencia (nunca con cautines de tipo pistola!). La soldadura debe ser la apropiada, usualmente de 1 mm de dimetro, aleacin 60/40 estao/plomo. Mantenga cortos los tiempos de soldadura.

Los integrados TTL reconocen como cero lgico a voltajes de entrada en el rango de 0 a 0.8 volts, y reconocen como uno lgico a voltajes de entrada en el rango de 2 a 5 volts. La corriente mxima que entregan a su salida es del orden de 16 miliamperes, lo cual es suficiente para excitar un diodo emisor de luz (que tpicamente requiere 15 miliamperes de corriente, con una cada de voltaje de 1.5 volts entre sus terminales). Considerando lo anterior, utilizaremos las configuraciones que muestra la figura siguiente para introducir valores de entrada y observar los valores de salida. En el circuito, al cerrar el interruptor la entrada TTL recibe 0 volts (0 lgico) y al abrirlo recibe un valor cercano a 5 volts (1 lgico).

Imagen de la pagina 18

Cuando la salida TTL valga uno lgico, encender el LED.Cuando la salida valga cero lgico, el LED estar apagado. Es muy importante conectar la resistencia limitadora que se muestra

TABLAS DE VERDAD

Cualquier funcin lgica puede ser representada mediante una tabla de verdad. En ella aparecen todos los posibles valores de las variables de entrada y los valores correspondientes de la variable de salida. Una tabla de verdad con K variables de entrada tendr 2k renglones, en los que mostrara todas las posibles combinaciones de valores de entrada.

A continuacin se muestran las posibles combinaciones de valores de entrada para tablas de verdad de 2, 3 y 4 variables de entrada.

E1 0 0 1 1

E0 0 1 0 1

E2 0 0 0 0 1 1 1 1

E1 0 0 1 1 0 0 1 1

E0 0 1 0 1 0 1 0 1

E3 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1

E2 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1

E1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1

E0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

Las pautas de repeticin de valores lgicos, en las diversas columnas de una tabla de verdad, son las siguientes: 0,1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, En la columna E0 En la columna E1 En la columna E2

O sea que en la columna de la derecha se tiene una secuencia peridica de cero, uno; en la columna siguiente de dos ceros, dos unos; en la siguiente de cuatro ceros, cuatro unos, a continuacin ocho ceros, ocho unos, etc.

Si existieran ms variables de entrada (, E N , , E 3 , E 2 , E1 , E 0 ) , en la columna N se tendra una secuencia de

2 N ceros seguida por 2 N unos.

ECUACIONES CANNICAS

De la tabla de verdad se obtiene la ecuacin equivalente, tomando la suma Booleana de las condiciones de entrada para las cuales la salida vale uno lgico. Ejemplo. Encender la lmpara de emergencia (E=1) si no hay suministro de energa elctrica (E=0) y es de noche (N=1).

E 0 0 1 1

N 0 1 0 1

L 0 1 0 0 E N L= E N

Ejemplo. Sonar la campana de alarma (C=1), si se detecta fuego (F=1), o un escape de gases combustibles (G=1), o ambas condiciones a la vez. F 0 0 1 1 G 0 1 0 1 C 0 1 1 1

F G
F G

C = F G + F G + F G

F G

Usando los postulados y teoremas Booleanos pueden lograrse simplificaciones importantes, por ejemplo: Si en la tabla de verdad predominan los renglones con salida uno, podemos negar la columna de salida y trabajar la funcin complementaria. Si hacemos esto en el ejemplo previo, obtenemos lo siguiente:

C = F G

Y aplicando el teorema de DeMorgan:

C = F G
Diremos que la ecuacin es cannica, si cada trmino contiene a todas las variables. Las ecuaciones cannicas pueden asumir dos formas: Disyuntiva, cuando se trata de una suma de trminos (producto de aquellos renglones con valor de salida uno). Conjuntiva, si es un producto de sumas (de aquellos renglones con valor de salida cero). Si en la columna de salida de la tabla de verdad predominan los ceros, conviene emplear la forma disyuntiva porque nos dar una ecuacin mas corta. Si en la columna de salida predominan los unos conviene la forma conjuntiva. Ejemplo. Obtenga un circuito lgico que cumpla con la siguiente tabla de verdad.

X 0 0 0 0 1 1 1 1

Y 0 0 1 1 0 0 1 1

Z 0 1 0 1 0 1 0 1

M
1 0 1 1 1 0 1 1

M
0 1 0 0 0 1 0 0

M = X Y Z + X Y Z + X Y Z + X Y Z + X Y Z + X Y Z
(Suma de productos)

Si tomamos la negacion de la columna de salida:

y M = X Y Z + X Y Z aplicando el de teorema de DeMorgan

M = (X Y Z ) (X Y Z )

(Producto sumas)

de

De la tabla de verdad se obtienen las expresiones Booleanas, sin reducir, a las que se denomina Ecuaciones Cannicas. Usando los postulados y teoremas Booleanos pueden lograrse simplificaciones importantes, para este ejemplo tenemos:

M = X Y Z + X Y Z
M = ( X + X )Y Z

M =Y Z

Y empleando el Teorema de DeMorgan FALTA UNA IMAGEN AQUI

M =Y +Z

IMPLEMENTACION DE CIRCUITOS LOGICOS Fases del diseo: Plantear por escrito lo que deseamos que haga el circuito, Traducirlo en una tabla de verdad, Obtener la ecuacin correspondiente, Reducirla tanto como sea posible, Dibujar el circuito lgico correspondiente y Reestructurarlo para reducir el nmero de circuitos Integrados necesarios para implementar la funcin lgica.

Ejemplo.- Abrir una vlvula del quemador (Q = 1) si la temperatura es baja (T = 1) y el piloto esta encendido (P = 1).

T 0 0 1 1

P 0 1 0 1

Q 0 1 0 0

FALTA UNA IMAGEN AQUI

Esta solucin requiere de dos circuitos integrados (un 7404 y un 7408). Recordando el teorema de DEMORGAN : A + = *B B A

FALTA algunas imgenes AQUI

Observe en la figura central que negamos dos veces la seal de entrada P, para no alterar su valor (la negacin de la negacin equivale a una afirmacin). En la figura de la derecha aparece la configuracin definitiva con dos compuertas No O, la cual podemos realizar empleando solo un circuito integrado 7402. EJEMPLO.- Se requiere un circuito que permita prender o apagar un foco, con solo cambiar de estado a un interruptor cualquiera, de los cuatro que existen en las diversas entradas a una bodega. Podemos partir de que los cuatro interruptores valen cero y asignarle a esa combinacin de entradas una salida cero. Al entrar por cualesquiera de las puertas y oprimir un interruptor, el foco prende (salida 1). Si salimos por otra puerta accionamos otro interruptor ms, el poco se apaga (salida 0). Tambin se apaga si salimos por la misma puerta en que entramos inicialmente. Construyamos entonces una tabal con grupos de 0, 1, 2, 3 y 4 interruptores accionados. La salida cambia de valor de un grupo al siguiente. Esto corresponde a decir que cuando exista un nmero non de entradas en uno, la salida valdr uno. Y cuando sea un numero para de entradas con un valor uno, la salida valdr cero. W 0 X 0 Y 0 Z 0 salida cero W 0 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 0 0 1 1 0 1 1 1 0 1 1 1 0 1 1 1 uno 1 1 0 0 0 0 0 0 1 1 0 1 0 1 1 0 0 1 cero 0 0 0 1 1 1 1 0 0 1 1 0 1 0 1 1 0 0 1 uno 0 0 0 0 1 1 0 1 1 0 X 0 0 Y 0 0 Z 0 1 S 0 1

1 1

1 1 1 1

0 0 1 1

0 1 0 1

0 1 1

Cero

1 1

S = W X Y Z +W X Y Z +W X Y Z +W X Y Z + W X Y Z +W X Y Z +W X Y Z +W X Y Z

Esta ecuacin no tiene ningn par de trminos que difieran en una sola variable y que por tanto puedan ser reducidos. Veremos posteriormente, al estudiar mtodos de reduccin, que se trata de una O exclusiva de 4 entradas, que podemos construir de la siguiente manera.

FALTA UNA IMAGEN AQUI

S = A B C D

Dibuje el diagrama esquemtico de la primer solucin (que utiliza ocho compuertas Y de tres entradas, una compuerta O de ocho entradas, adems de tres inversores) y comprelo contra la segunda solucin (con solo tres compuertas tipo O exclusiva). EJEMPLO.- DECISION MAYORIA (a).- Se tienen 3 protecciones A, B y C y se desea tener una salida correcta aun en caso de que falle una proteccin. Esta tcnica se emplea en la industria para aumentar confiabilidad en procesos industriales. FALTA UNA TABLA

A B C

Buscando trminos que difieran en una sola variable, encontramos a las posibles reducciones, que son:

A B C A B C A B C

A B C

BC AC

A B C

A B

S = A B C + A B C + A B C + A B C

Forma cannica

S = A B + B C + A C

Ecuacin reducida

(b).- Se requiere un circuito, que avise cuando una de las entradas (a, b, c) difiere de las otras (para que personal de mantenimiento cambie de dispositivo de proteccin daado).

A BC

A A 0 0 0 0 1 1 1 1 B 0 0 1 1 0 0 1 1 C 0 1 0 1 0 1 0 1 F 0 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1

B 0 0 1 1 0 0 1 1

C 0 1 0 1 0 1 0 1

F
1 0 0 0 0 0 0 1

A B C

En este caso podemos trabajar con los 6 renglones con salida uno, obteniendo:

F = A B C + A B C + A B C + A B C + A B C + A B C

o bien trabajar con los renglones con salida cero, que son slo dos para obtener una ecuacin ms compacta. En este caso debemos negar la funcin de salida para no alterar la ecuacin:

F = A B C + A B C
Empleando el teorema de DeMorgan, resulta:
F = ( A + B +C) ( A + B +C)

Esta ecuacin es equivalente a la que se obtuvo inicialmente (con seis trminos producto), pero ms econmica y fcil de implementar. La tabla de verdad puede tener ms de una columna de salida, en el ejemplo previo podramos haber trabajado una tabla de verdad con entradas A, B, C y salidas S, F.

A 0 0 0 0 1 1 1 1

B 0 0 1 1 0 0 1 1

C 0 1 0 1 0 1 0 1

S 0 0 0 1 0 1 1 1

F 0 1 1 1 1 1 1 0
F = ( A + B +C) ( A + B +C)

S = A B + B C + AC

CIRCUITOS CON COMPUERTAS DE UN MISMO TIPO

A partir de una expresin lgica, dada como suma de productos, es simple el pasar a una implementacin final usando nicamente compuertas No Y. Para ello negamos dos veces la seal de salida de cada compuerta Y, lo cual no altera la lgica (negar dos veces la misma variable equivale a la afirmacin de la propia variable) y aplicamos el teorema DeMorgan a la compuerta o con entradas negadas (que equivale a una No Y).

Ejemplo: Q = A B + A C + B C

FALTA IMAGEN PAG 26

Una compuerta O con entradas negadas equivale a una NO-Y, por lo que para el circuito de la derecha se tiene:

Q= ( A B ) ( A C ) ( B C ) Q=

A B + AC + B C

Similarmente de un producto de sumas puede pasar a soluciones con compuertas NO-O. Ejemplo: Empleando compuertas No-O, construya un circuito que realice la funcin W= ( X +Y ) ( X + Z ) . Una compuerta Y con entradas negadas equivale a una NO-O

W= ( X + Y ) + ( X + Z )

( X +Y )

(X +Z )

= ( X +Y ) ( X + Z )

El disear circuitos usando compuertas de un mismo tipo, tiene la ventaja de que nos permite reducir inventarios de circuitos integrados.

TRMINOS CLAVE

COMPUERTAS LGICAS CIRCUITOS INTEGRADOS FAMILIA TTL SMBOLOS ESTANDARIZADOS INVERSOR NO INVERSOR 0, Y, NO-O, NO-Y O EXCLUSIVA

TABLA DE VERDAD ECUACIN CANNICA FORMA DISYUNTIVA FORMA CONJUNTIVA SUMA DE PRODUCTOS BOOLEANOS PRODUCTO DE SUMAS BOOLEANAS

Cuestionario

1. Dibuje los smbolos de las diferentes compuertas lgicas. 2. Qu funcin lgicas realiza una compuerta NO-Y con entradas negadas? Cul una compuerta NO-O en igual circunstancia? 3. A qu voltaje debemos alimentar los circuitos integrados? 4. Qu es una ecuacin cannica? 5. Indique las fases de diseo de circuitos lgicos. 6. Por qu razn conviene emplear compuertas de un mismo tipo en nuestros diseos? 7. Resuelva la siguiente tabla de verdad y dibuje el circuito correspondiente: A 0 0 0 0 1 1 1 1 PRCTICA I B 0 0 1 1 0 0 1 1 C 0 1 0 1 0 1 0 1 Z 0 0 0 0 1 1 1 0

1.a 1.b

Compruebe experimentalmente las tablas de verdad de las diferentes compuertas Obtenga las funciones lgicas equivalentes a compuertas de 4 entradas de los diferentes tipos, empleando compuertas de dos entradas (AMPLIACIN DE ENTRADAS). Compruebe que toda funcin combinacional expresada como suma de productos puede realizarse usando slo compuertas NO-Y. Compruebe que toda funcin combinacional expresada como producto de sumas puede realizarse usando slo compuertas NO-O. Verifique experimentalmente que el interruptor de escalera de cuatro posiciones diseado en un ejemplo previo cumple con su tabla de verdad. Verifique experimentalmente el diseo del circuito de votacin mayora, diseado en este captulo.

1.c 1.d 1.e 1.f

1.g 1.e

Compruebe experimentalmente lo siguiente: Si una de las entradas de la compuerta NO-Y se manda permanentemente a +Vcc, la compuerta opera como un inversor. Si una de las entradas de la compuerta NO-O se manda permanentemente a tierra, la compuerta opera como un inversor. Si una de las entradas de la O-EXCLUSIVA se manda a cero lgico la compuerta opera como un no-inversor. Si una de las entradas de la O-EXCLUSIVA se manda a uno lgico la compuerta opera como un inversor. Construya el siguiente circuito y obtenga su tabla de verdad.

FALTA IMAGEN PAG 28

CAPTULO III MTODOS GRFICOS DE SIMPLIFICACIN OBJETIVO: CONOCER ALGUNOS MTODOS GRFICOS DE REDUCCIN DE EXPRESIONES LGICAS Y EJERCITARSE EN SU USO. DESPUS DE ESTUDIAR ESTE CAPITULO, EL ALUMNO SER CAPAZ DE OBTENER LA ECUACIN MAS REDUCIDA DE FUNCIONES LGICAS COMBINACIONES HASTA DE 5 VARIABLES Y VERIFICAR SI LA ECUACIN OBTENIDA CUMPLE CON LA TABLA DE VERDAD QUE LA ORIGINO.

MTODOS ALGEBRAICOS DE SIMPLIFICACIN Requieren la aplicacin de las entidade de las identidades siguientes:
A * B + A * B = ( A + A) * B

( A + B ) * ( A + B) = 0 + A * B ) + B = B

A + A * B = A * (1 + B ) = A
A * A * B = A * (1 + B ) = A + B

A * ( A + B) = A + A * B = A
A * ( A + B) = 0 + A * B = A * B

Ejemplos:

S = A B C + A B C + A B C D
S = A C ( B + B ) + A B C D = A C + A C B D ) = A (C + C B D ) = A (C + B D )

M = X Z + X Y + X Y Z + X Y Z
M = X Z (1 + Y ) + X Y (1 + Z ) = X Z + X Y

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

N = AC D + B C D + A B C D
N = C D ( A + B A B) = C D ( A + B + A + B) = C D

F = A B C + A B C + A B C + A B C

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

MTODOS GRFICOS Dos trminos booleanos que difieren slo en una misma variable (que aparece negada en uno de ellos y sin negar en el otro) permiten una reduccin:
W X Y Z +W X Y Z = W X Y (Z + Z ) = W X Y

A dos trminos de este tipo, se les denomina adyacentes y al trmino reducido que les representa se le denomina implicante. Todos los mtodos grficos y computacionales se basan en identificar adyacencias que permitan reducciones. Si trazamos los ejes cartesianos para tres variables y a cada variable ser le permite asumir slo dos valores cero o uno, se tiene lo siguiente:

FALTAN ALGUNAS IMGENES PAG 30

Dos puntos adyacentes estn unidos por una lnea y permiten reducir una variable. Cuatro puntos adyacentes entre s (o sea 2 lneas adyacentes) pueden ser agrupados en un mismo implicante con una reduccin de dos variables. Corresponden a un plano. Ocho puntos adyacentes entre s, o sea dos planos adyacentes corresponden a un volumen y permiten reducir en tres variables al implicante que les represente, etc. Los mtodos grficos facilitan visualizar las adyacencias existentes.

Ejemplo: Obtenga la ecuacin reducida equivalente a la siguiente tabla de verdad:

X 0 0 0 0 1 1 1 1

Y 0 0 1 1 0 0 1 1

Z 0 1 0 1 0 1 0 1

S 0 1 1 1 0 0 1 0 FALTA IMAGEN PAG 31

Del cubo Booleano encontramos todas las posibles reducciones (implicantes), y encontramos la ecuacin reducida que cubre a la totalidad de los vrtices con salida uno, en este caso 001 y 011 difieren en la segunda variable por lo que la reduccin es 0-1, los vrtices 011 y 010 defieren en la tercera variable dando como reduccin 01- y los vrtices 010 y 110 cambian en la primera variable por lo que la reduccin es -10. La solucin es entonces:

S ( X , Y , Z ) = (0 1) + (01 ) + ( 10 )

= X Z + X Y + Y Z
Podemos apreciar en este ejemplo que existe una solucin aun mas compacta, dado que los vrtices del implicante 01- (que son 010 y 011) ya estn considerados porque forman parte de los otros implicantes.

Faltan algunas imgenes

Conforme a esto, la solucin es:

S = X Z +Y Z
Ejemplo.- Obtenga la ecuacin reducida equivalente a la siguiente tabla de verdad:

X 0 0 0 0 1 1 1 1

Y 0 0 1 1 0 0 1 1

Z 0 1 0 1 0 1 0 1

S 0 1 0 1 0 0 1 0 FALTA IMAGEN PAG 32

La solucin es:

S = X Z + X Y Z
Ejemplo.- Obtenga la ecuacin reducida equivalente a la siguiente tabla de verdad:

X 0 0 0 0 1 1 1 1

Y 0 0 1 1 0 0 1 1

Z 0 1 0 1 0 1 0 1

S 1 0 1 1 1 0 1 1 FALTA IMAGEN PAG 32

Observe que grupos de cuatro vrtices Booleanos adyacentes entre si, permiten reducir dos variables:

K =Y +Z
EJEMPLO.- Obtenga la ecuacin reducida correspondiente a la tabla de verdad siguiente:

X 0 0 0 0 1 1 1 1

Y 0 0 1 1 0 0 1 1

Z 0 1 0 1 0 1 0 1

S 0 1 0 0 1 1 1 1 FALTA IMAGEN PAG 32

Del cubo Booleano podemos encotrar las posibles reducciones: Los vrtices 001 y 101 permiten reducir la primer variable obteniendo como reduccin 01. Los vrtices 110, 100, 101, 111 permiten reducir dos variables obteniendo como reduccin 1- -

El resultado es entonces:

S =Y Z + X
EJEMPLO.- Considere que en una instalacin industrial existen reas restringidas a las que solo debe tener acceso personal autorizado. Las clasificaciones existentes son las siguientes:

0 1 2 3 4 5

Empleados Supervisores Jefes de seccin Jefes de divisin Gerentes Directores generales

A0 rea fabril A1 rea secretaril A2 rea de ingeniera de producto A3 rea de computo A4 rea de documentacin clasificada A5 instalaciones especiales

El personal solo debe tener acceso a reas de su misma clasificacin o menor. El control se efecta mediante una banda magntica adosada al gafete de cada individuo en la que est anotado el nmero correspondiente.

El gafete se inserta en la ranura correspondiente a una lectora magntica dispuesta en cada pureta de acceso. Disee la parte lgica correspondiente a cada rea.

# 0 1 2 3 4 5 6 7

CATEGORIA 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1

A0 1 1 1 1 1 1 * *

A1 0 1 1 1 1 1 * *

A2 0 0 1 1 1 1 * *

A3 0 0 0 1 1 1 * *

A4 0 0 0 0 1 1 * *

A5 0 0 0 0 0 1 * *

Realicemos aqu, como ejercicio, el obtener las ecuaciones reducidas de A0, A1, A2, A3, A4 y A5. Para ello utilice las figuras que aparecen a continuacin. Marque con un punto grueso los vrtices del cubo Booleano con valor de salida uno en la tabla de verdad y busque las posibles reducciones. Los vrtices de los renglones nmero seis y siente (110 y 111) corresponden a irrelevancias, estan marcados con un asterisco en la tabla de verdad. Los podemos considerar como cero o uno al momento de hacer la reduccin (segn convenga) ya que son condiciones que nunca van a

ocurrir. Marque en las figuras con un asterisco todas las irrelevancias, porque pueden ayudarle a obtener reducciones mayores.

FALTA IMAGEN PAG 34 Y 35

Ejemplo.- Un sistema hipottico para despachar caf requiere calentar por lotes una cierta cantidad de lquido. Para ello al depositar la moneda, un sistema mecnico de uas y contrapesos hace caer un vaso desechable, lo cual permite el desarrollo del siguiente proceso: Se llena el recipiente dosificador y se calienta el lquido hasta alcanzar la temperatura deseada. Logrado esto, debe abrirse la vlvula de salida para entregar el producto. En todo momento, si la presin es alta debe abrirse debe abrirse la vlvula de salida, cerrarse la de entrada y dejar de calentar el lquido. P 0 0 0 FALTA IMAGEN PAG 34 0 1 1 1 1 N 0 0 1 1 0 0 1 1 T 0 1 0 1 0 1 0 1 Vs 0 0 0 1 1 1 1 1 Ve 1 1 0 0 0 0 0 0 C 1 1 1 * 0 0 0 0

No especificado, puede tomarse como 0 1, segn ms convenga.

FALTAN IMAGNES DE PAG 36

Vs ( P, N , T ) = P + N T
Ve ( P, N , T ) = P N C ( P, N , T ) = P

FALTAN IMAGNES PAG 36

La primer solucin implica utilizar tres integrados (0, Y e INVERSOR).

La segunda versin, pese a requerir un mayor numero de compuertas es mas econmica pues requiere slo dos integrados tipo No Y. Recordemos que una compuerta 0 con entradas negadas corresponde a una No Y, y que el inversor puede construirse uniendo las entradas de una No Y.

NOTACION COMPACTA DE LA TABLA DE VERDAD

Cada rengln con salida uno de la tabla de verdad, corresponde a un termino, producto valido o minitrmino, y si existen varios renglones con salida uno la funcin de salida es igual a la suma de los minitrmino (forma cannica disyuntiva). Al crecer el nmero de variables la tabla de verdad se torna abrumadora, por lo que se han desarrollado formas compactas de representarlas. Una de estas formas es la transformacin decimal que corresponde a una expresin en la que una serie de nmeros decimales indica los nmeros de rengln con salida uno. Ejemplo: Obtener la transformacin decimal de la siguiente tabla de verdad # 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 A 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 B 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 C 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 D 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 F 0 0 1 <--0 0 1 <--0 0 1 <--0 0 0 0 0 0 1 <---

F ( a, B, C , D ) = ( 2,5,8,15 ) m

Esta ecuacin nos dice: La funcin de 4 variables A, B, C, D es igual a la suma Booleana de los minitrminos 2, 5, 8, 15. La notacin compacta ejemplificada contiene la misma informacin que la tabla de verdad, con la ventaja de su reducido tamao. Esto es importante porque en muchos casos tendremos necesidad de trabajar con un numero elevado de variables de entrada. Consideremos por un momento una funcin combinacional con 10 variables de entrada, requiere una tabla de verdad de 1024 renglones (210) y ocuparamos varias decenas de hojas para anotarla. En las tablas de verdad, la combinacin de ceros y unos de cada rengln forman el equivalente binario de nmero decimal que corresponde a ese rengln. En la tabla de verdad, tenemos los nmeros decimales 0, 1, 2, ., 15 en la primera columna y en la segunda los nmeros binarios 0000, 0001, 0010, ., 1111 equivalentes. En el capitulo posterior estudiaremos al sistema de numeracin binario. Por ahora diremos que cada digito binario esta multiplicado por una potencia de 2, conforme a su posicin. Para obtener el valor equivalente de un numero entero binario debemos considerar que el digito de la derecha esta multiplicado por 20, el siguiente a la izquierda por 21, el que sigue por 22, el otro por 23, ., Por ejemplo, el valor decimal del numero binario 1011, lo podemos calcular as: [1011]2 = [(1x23) + (0x22) + (1x21) + (1x20)] [1011]2 = [(1x8) + (0x4) + (1x2) + (1x1)] [1011]2 = [8 + 2 + 1] = 11 Esto podemos expresarlo as: El numero binario Uno Cero Uno equivale a Once en decimal.

METODO DE MAPAS

FALTAN IMGENES PAG 38

Podemos representar en un plano toda la informacin que guarda el cubo Booleano. Para ello suponga que cortamos las lneas imaginarias que delimitan al cubo representado en la Figuera de la izquierda en las posiciones marcadas con una cruz, y que lo desdoblamos como muestra la figura central.

Tenemos entonces, en un plano, una distribucin de vrtices que nos permite identificar adyacencias. Cada vrtice tiene tres adyacencias, cada una de las cuales corresponde al cambio de una variable.

Debemos recordar que los vrtices de arriba son adyacentes con los vrtices de abajo, pues corresponden a las posiciones en que se cortaron las lneas imaginarias del cubo Booleano. Si dibujamos una cuadricula en la que cada casilla corresponda a un vrtice, tenemos un mapa de adyacencias. Los mapas datan de principios de los aos cincuentas y fueron creados por J. Mohoney y difundidos por E. W. Veitch y M. Karnaugh, quienes aportaron algunas modificaciones. Usualmente se les conoce como mapas de Karnaugh. Para trabajar con un mapa, copiamos los valores de salida en las casillas correspondientes del mapa e identificamos las adyacencias existentes.

0
000 001 010 011 100 101 111 110

X YZ
00 01 11 10

Z
Z

En el mapa de la izquierda aparece la numeracin binaria en el interior de cada casilla. En el mapa central se proporciona la misma informacin, pero debemos tomarla en dos partes, columna y rengln., el mapa de la derecha muestra las intersecciones de los diversos conjuntos. Podemos ver l que:

La columna de la izquierda corresponde a la negacin de X, La columna de la derecha corresponde a X, Los dos primeros renglones a la negacin de Y, Los dos ltimos renglones a Y, El primer rengln y el cuarto corresponden a la negacin de Z, El segundo y el tercer rengln corresponden a Z.

Dos casillas contiguas permiten reducir una variable. Por ejemplo si las dos casillas del tercer rengln valen uno se obtiene la reduccin X Y (011 y 111 producen la reduccin -11).

Cuatro casillas adyacentes permiten reducir una variable. Pro ejemplo si las dos casillas del tercer rengln valen uno se obtiene la reduccion Z (001, 101, 011 y 111 producen - - 1).

Ocho permiten reducir tres variables.

Para familiarizarse con mapas, realicemos los siguientes ejercicios, con mapas de 3 variables, mismos que trabajamos previamentes en este segundo capitulo, empleando cubos Booleanos.

X 0 0 0 0 1 1 1 1

Y 0 0 1 1 0 0 1 1

Z 0 1 0 1 0 1 0 1

S1 0 1 1 1 0 0 1 0 FALTAN MUCHAS IMGENES PAG 39 40

X 0 0 0 0 1 1 1 1

Y 0 0 1 1 0 0 1 1

Z 0 1 0 1 0 1 0 1

S2 0 1 0 1 0 0 1 0

X 0 0 0 0 1 1 1 1

Y 0 0 1 1 0 0 1 1

Z 0 1 0 1 0 1 0 1

S3 1 0 1 1 1 0 1 1

X 0 0 0 0 1 1 1 1

Y 0 0 1 1 0 0 1 1

Z 0 1 0 1 0 1 0 1

S4 0 1 0 0 1 1 1 1

A continuacin se muestra un mapa para trabajar con cuatro variables.

MAPA DE 4 VARIABLES:

Los nmeros decimales que aparecen en el interior de cada casilla, indican el nmero del rengln correspondiente en la tabla de verdad.

FALTA IMAGEN Ejemplo.- Minimice la funcin:

F ( A, B, C , D ) = (1,5,6,9,1,3) m

FALTA IMAGEN PAG 41

Observe del mapa que son adyacentes los cuatro vrtices del segundo rengln (1,5,9,1,3), que nos dan la reduccin (- - 01). El vrtice 6 no es adyacente con ningn otro.

La solucin es:

F ( A, B, C , D ) = ( 01 ) + (0110 )

F = C D + A B C D

Ejemplo: Minimice la funcin:

F ( A, B, C , D ) = (0,1,2,4,6,8,9,10 ,1 ,14 ) m 2

El mapa muestra que son adyacentes los elementos del primero y el cuarto rengln, o sean los vrtices:

FALTA IMAGEN PAG 41 0, 2, 4, 6, 8, 10, 12, 14

Tambin son adyacentes los vrtices: 0, 1, 8, 9

En el mapa se agrupan los minitrminos adyacentes para lograr reducciones. 2 n minitrminos adyacentes permiten eliminar n variables. Los extremos opuestos del mapa deben tomarse como condiciones.

Falta unas imagenes

Con un poco de prctica usted podr encontrar directamente del mapa los valores de las reducciones, sin tener que pasar por esta etapa previa, en que anotamos los valores binarios de cada casilla. La solucin es:

F ( A, B, C , D ) = ( ) + ( ) 0 00 F = D + B C

Ejercicio.- Obtenga la ecuacin ms reducida y el circuito correspondiente al problema hipottico que se indica a continuacin.

En el tanque de recepcin mostrado se monitorea el flujo en los dos conductos de entrada X y Y Esas mediciones corresponden a valores analgicos y mediante comparadores de voltaje se convierten en seales digitales.

Debe sonar una alarma si ocurre una de las siguientes condiciones: a) El nivel es menor que el lmite mas bajo y ninguno de los flujos es significativo. b) El nivel es mayor que el lmite mas alto y uno o ambos flujos son considerables. Donde: Fx= flujo en el conducto X Fy= flujo en el conducto Y Nb= lmite bajo de nivel 0= flujo nulo 1= flujo adecuado 0= abajo del lmite

Na= lmite alto de nivel

1= arriba del limite

Fx 0 0 FALTA IMAGEN PAG 43 0 0 0 0 0 0 1 1 1 1 1 1 1 1

Fy 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1

Nb 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1

Na 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

Ejemplo.- Minimice la funcin:

F (W , X , Y , Z ) = (0,2,5,7,0,9,1 ,13 ,15 ) m 0

# 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

W 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1

X 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1

Y 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1

Z 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

F 1 0 1 0 0 1 0 1 1 1 1 0 0 1 0 1

FALTA IMAGEN PAG 44 Podemos ver de este mapa las siguientes adyacencias: 5, 7, 13, 15 0, 2, 8, 10 8, 9 9, 13

Encerremos ahora cada grupo de trminos adyacentes y procedamos a encontrar los implicantes (reducciones) respectivos.

Imagen

Una posible solucin es:

F (W , X , Y , Z ) = ( 1 1) + ( 0 0) + (100 ) + (1 01)

= X Z + X Z +W X Y +W Y X

Mas interesa obtener la solucin minima, la cual debe cubrir a la totalidad de los minitrmino de la manera mas compacta posible. En este caso podemos observar el mapa que el minitrmino 9 (1001) esta cubierto por el implicante (100-) y tambin por el implicante (1-01). Slo se requiere cubrirlo una vez, por ello hay dos soluciones mnimas que amparan a la totalidad de los trminos.

F = X Z + X Z + W X Y o bien F = X Z + X Z +W Y X

La gran ventaja de los mtodos grficos es la visualizacin directa con las posibles reducciones, sin embargo esto dificulta en extremo cuando aumenta el numero de variables; por lo que se seala usualmente que son validos los mtodos grficos de reduccin para manejar solo hasta un mximo de 6 variables.

MAPA DE KARNAUGH DE 5 VARIABLE:

Para trabajar 5 variables debemos considerar a dos mapas de 4 variables superpuestos (uno encima del otro) de manera tal que cada casilla tiene 5 posibles adyacencias.

FALTAN IMGENES PAG 45

Ejemplo.- Reducir la funcin siguiente:


S (W , X , Y , Z ) = (0,4,8,1 ,1 ,1 ,2 ,2 ,2 ,2 ,2 ,3 ) M 2 6 7 0 1 5 7 9 1

Podemos apreciar las siguientes implicantes: 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 - - 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0 0 - 0 - 0 0 1 0 0 0 0 1 0 0 0 1 1 0 1 0 0 1 0 1 0 1 1 0 - 0 1 0 0 0 1 1 0 1 0 1 1 1 0 0 1 1 1 1 0 1 1 - - 0 1 1 1 1 0 1 1 1 1 1 1 1 1 0 0 1 1 1 0 1 1 1 1 - - 1

Una posible solucin es:

S = V Y Z + W Y Z + V W Y + V Y Z + V W Z

Si observamos con detenimiento el mapa anterior, podemos encontrar una solucin mas compacta, que cubre a todos los minitrminos, pero sin repeticiones innecesarias es la siguiente: A continuacin se presenta un procedimiento sistemtico que nos permite encontrar la solucin reducida mas compacta posible.

TABLA DE IMPLICACIONES Para optimizar el diseo, de un circuito lgico, buscamos usualmente obtener la ecuacin mas reducida. Cuado el nmero de variables es reducido es fcil obtener dicha ecuacin de los mapas, pero cuando son 5 o mas variables se requieren mtodos que permitan descartar los implicantes innecesarios. El mtodo tabular nos permite obtener de manera sistemtica la ecuacin lgica mas reducida posible, pero antes de plantearlo veamos algunas definiciones de trminos que emplearemos en dicho mtodo. Un implicante es un termino producto, que corresponde a un minitrmino o a una agrupacin de varios minitrminos como resultado de una reduccin. Un implicante primo es aqul que no es subconjunto de ningn otro, es decir que no puede ser combinado con otros para obtener un trmino con un menor nmero de literales. Un implicante primo esencial incluye al menos un minitrmino que no este cubierto por algn otro implicante.

Debe seleccionarse un conjunto mnimo de implicantes que comprenda a todos los elementos. Para ello se requiere construir una tabla de implicantes, en la cual cada rengln corresponde a un implicante y cada columna representa a un minitrmino de la funcin de salida. En la tabla de implicantes se sealan los minitrminos que agrupa cada implicante. Primeramente se explora columna por columna, buscando minitrminos que estn incluidos solo en un implicante, o sea se buscan los implicantes primos esenciales los cuales son parte obligada de la solucin. Despus se seleccionan otros implicantes que cubran los minitrminos restantes. Los implicantes restantes se descartan por ser innecesarios. Ejemplo Encontrar la solucin mas compacta de la funcin:
S (W , X , Y , Z ) = (0,4,8,1 ,1 ,1 ,2 ,2 ,2 ,2 ,2 ,3 ) N 2 6 7 0 1 5 7 9 1

Para la cual encontramos previamente (er ejemplo anterior) las siguientes implicantes: (00)(-0-00) (10-0-)(101)(111) Procedemos primeramente a construir una tabla de implicantes, que nos indique que minitrminos cubre cada implicante. Es conveniente anotar la lista de implicantes en orden decreciente de reducciones obtenidas, iniciando con las implicantes que corresponden a la mayo reduccin (los que tienen mayo numero de guiones y terminando con los que tienen la menor reduccin: 0 000 -0-00 10-0101 111 * * * 4 * * * 8 * * 12 * * * * * * * * * * * * 16 17 20 21 25 27 29 31

Busquemos primero los vrtices cubiertos por un solo implicante, ya que corresponden a implicantes primos, los cuales necesariamente deben formar parte de la solucin. Procedamos a subrayar dichos vrtices en la tabla. Cada vez que identificamos un implicante primo, lo anotamos y marcamos en la tabla de implicantes los vrtices correspondientes. En este ejemplo (0- - 00) es un implicante primo (11 - - 1) que cubre a los vrtices 25, 27, 29, 31.

La solucin minima es entonces: S(V,W,X,Y,Z)= (0 - - 0 0)+(11 - - 1)+(10-0-) =V.Y.Z+ V.W.Z+V.W.Y

Ejemplo.- reducir la fusin siguiente:


S (V , W , X , Y , Z ) = (0,1,9,1 ,1 ,1 ,1 ,1 ,2 ,2 ,2 ,2 ,2 ,3 ,3 ) m 1 3 5 6 7 0 1 5 6 7 0 1

Consideramos primero las posibles reducciones en cada mitad del mapa de 5 variables:

Veamos ahora las reducciones adicionales al considerar a ambas mitades superpuestas:

En lugar de agrupar los minitrminos (0,1) nos conviene tomar (0,1,16,17) para tener una mayor reduccin. Similarmente en vez de (1,9) conviene agrupar (1,9,17,25). Tambin, a cambio de (25,27) es preferible tomar (9,11,25,27). 01001 01011 01101 01111 01- - 1 10000 10001 10100 10101 10-011010 11011 11110 11111 11- 1 00000 00001 10000 100001 -000 00001 01001 10001 11001 --001 01001 01011 11001 11011 - 10 -1 01011 01111 11011 11111 -1-11

Construyamos ahora una tabla de implicantes, que indique cuales minitrminos cubre cada uno de ellos

0 01- - 0 10-011-1-000- - 001 - 10-1 -1-11 *

9 *

11 *

13 *

15 *

16

17

20

21

25

26

27

30

31

* * * * *

* * * * * * *

* * * * * * *

Hay cuatro implicantes primos esenciales que son: (1- - 1) (10-0-) (11-1-) (-000-) Los cuales necesariamente forman parte de la solucin, ya que tienen al menos un minitrmino que no cubre ningn otro implicante (aparece subrayado en la tabla) Cada vez que identificamos un implicante primo esencial lo anotamos y marcamos en la tabla de implicantes los vrtices que cubre. Posteriormente, si quedan minitrminos sin cubrir, seleccionamos otros implicantes primos no esenciales, hasta tener la cobertura completa. En este caso solo queda por cubrir los el minitrmino 25, y puede elegirse indistintamente el implicante ( - - 001) o bien el implicante(-10-1) Por lo tanto existen 2 posibles soluciones mnimas que son: S=(01- - 1)+(10-0-)+(11-1-)+(-000-)+(--001) S=(01- - 1)+(10-0-)+(11-1-)+(-000-)+(-10-1)

Expresndolas con literales:

S = V W Z + V W Y + V W Y + W X Y + X Y Z S = V W Z + V W Y + V W Y + W X Y + W X Z
El mtodo tabular es fcilmente implementable como un programa computacional.

TRMINOS CLAVE

SIMPLIFICACIN MTODOS ALGEBRAICOS MTODOS GRFICOS CUBOS BOOLEANOS MAPAS DE KARNAUGH TABLA DE VERDAD NOTACIN COMPACTA MINITRMINO IMPLICANTE IMPLICANTE PRIMO IMPLICANTE PRIMO ESENCIAL TABLA DE IMPLICANTES

CUESTIONARIO 1 - Utilice los postulados y teoremas Booleanos para simplificar las siguientes ecuaciones:

F = A B + B E F + A B C + B C D

K = X Y Z + X Y Z + X Y Z + X Y Z
Z = A B C D + A B C D + A B C D + A B C D + A B C D + A B C D M = I J K +I J K +I J K +I J K
Q = A + B + A B + ( A + B) A B

L = A B C + A B D + A B C + A B D + B

2 Utilice mapas para obtener la ecuacin reducida correspondiente a las siguientes funciones: M(A, B, C, D)=

(0, 1, 3, 4, 6, 7)

N(W, X, Y, Z)= O(A, B, C, D)=

(1, 4, 5, 9, 10, 11, 12, 14) (1, 2, 4, 7, 8, 11, 13, 14)

P(V, W, X, Y, Z)= Q(A, B, C, D, E)= R(V, W, X, Y, Z)=

(3, 4, 5, 8, 9, 10, 11, 20, 21, 24, 25, 26, 27) (0, 2, 8, 10, 16, 18, 19, 21, 24, 26) (1, 2, 3, 4,5, 7, 8, 10, 12, 15, 16, 18, 19, 21, 22, 23, 24, 26, 27, 31)

3 Utilice la tabla de implicantes para obtener la ecuacin minima de las siguientes funciones: S(V, W, X, Y, Z)= T(A, B, C, D, E)= U(V, W, X, Y, Z)=

(0, 3, 4, 5, 6, 7, 13, 14, 20, 22, 23, 26, 28, 29, 30) (2, 5, 7, 8, 13, 18, 21, 23, 24, 26, 29) (0, 2, 5, 8, 10, 13, 16, 18, 24, 26, 31)

CAPITULO IV MTODOS COMPUTACIONALES OBJETIVOS: CONOCER ALGUNOS ALGORITMOS Y MANEJAR PROGRAMAS DE COMPUTADORA QUE FACILITEN EL ANLISIS Y DISEO DE CIRCUITOS LGICOS COMBINACIONALES. DESPUS DE ESTUDIAR ESTE CAPITULO EL ALUMNO SER CAPAZ DE UTILIZAR PROGRAMAS COMPUTACIONALES PARA OBTENER: OBTENER LA TABLA DE VERDAD CORRESPONDIENTE A UNA ECUACIN BOOLEANA. OBTENER LA ECUACIN REDUCIDA A PARTIR DE LA LISTA DE MINITERMINOS.

PROGRAMAS DE APLICACIN Casi desde sus inicios, la computadora se ha utilizado para facilitar el diseo de circuitos digitales. En un anuncio publicitario de los aos cincuentas apareca el testo: Las computadoras actuales estn diseando las computadoras del futuro, esta aseveracin sigue siendo vala hoy en da. Hay dos grandes reas de aplicacin de esta herramienta a los circuitos digitales: Diseo y Simulacin. El diseo nos permite enfrentar problemas tan grandes que quedan fuera del alcance de otros mtodos ms tradicionales. Considere por un momento un simple comparador de magnitud de dos palabras de 8 bits cada una. El problema implica manejar 16 variables de entrada (o sean 65536 renglones en la tabla de verdad); de inmediato quedan descartados los mtodos grficos y trabajar a mano el mtodo matemtico seria una labor de titanes. La simulacin nos facilita probar nuestros diseos antes de construirlos. Cuando el diseo involucra un bajo nmero de elementos lgicos, como es el caso de los problemas que hemos trabajado previamente, podemos armar en poco tiempo el circuito en cuestin y verificar fsicamente su correcta operacin. Pero cuando el problema es grande y el diseo involucra un alto nmero de elementos lgicos podemos tardar semanas o meses en construir el circuito y estar en condiciones de verificar su funcionamiento. Si el circuito no opera correctamente empiezan a surgir las interrogantes es error de diseo lgico?, se trata de una falla de los componentes?, existe error en la distribucin del circuito impreso?, o acaso son varias fallas combinadas? Podemos referirnos a diferentes niveles de simulacin: 1.- Simular la lgica, verificando que las ecuaciones lgicas obtenidas sean correctas. En el caso de circuitos combinaciones, como los que hemos trabajado previamente, primero comprobamos que la ecuacin corresponda exactamente a la lista de minitrminos de la tabla de verdad y despus continuamos con el diseo. 2.- Simular el montaje propuesto del circuito, representando en la computadora los diferentes elementos del circuito y sus interconexiones, tal y como proponemos realizar el montaje fsico. En esta etapa podemos hacer ajustes y modificaciones en programa hasta dejarlo operando satisfactoriamente, antes de soldar un solo alambre.

3.- Verificar que los desbalances en las diversas trayectorias de los tiempos de propagacin de las seales no provoquen conflictos. Esto es importante en el diseo de circuitos lgicos secuenciales, pero no lo trataremos en este libro por tratarse de un curso introductorio a los circuitos lgicos. Supongamos que ya diseamos y simulamos un circuito lgico, ajustndolo hasta que opere a satisfaccin en la computadora. Si al construirlo presenta fallas, regresaremos a trabajar con el simulador, comparando las salidas esperadas que indica el simulador con las salidas fsicas que entrega el circuito, para un mismo juego de seales de entrada. Con esto podremos rpidamente localizar las fallas de componentes o de montaje y corregirlas. Dada la importancia de este tema, destinaremos posteriormente todo un capitulo al mismo. En el presente capitulo veremos como aplicar la computadora para que nos entregue la lista de minitrminos correspondientes a una ecuacin Booleana, lo que nos permite verificar si la ecuacin que estamos trabajando es correcta y tambin como aplicarla para que dada una lista de minitrminos, obtenga la ecuacin reducida que los satisfaga.

VERIFICACIN COMPUTACIONAL DE UNA ECUACIN BOOLEANA Para verificar que el resultado de la simplificacin es correcta haremos uso de las propiedades que existen entre los implicantes y los minitrminos que estos agrupan. En la simbologa de ceros, unos y guiones podemos establecer dos dos vrtices extremos, el vrtice mnimo que corresponde a reemplazar los guiones por ceros. Y el vrtice mximo que se obtiene al reemplazar los guiones por unos. Podemos definir un implicante citado slo sus vrtices extremos. Consideremos el siguiente ejemplo: FALTA UNA IMAG PAG 55 0 0 0 0 0 0 1 0 1 0 0 0 1 0 1 0 - 0 - 0 1000 0000 0010 1000 1010 - 0- 0 0 2 8 10 1001 1000101 5 8 9 1 0 0 0 1 0 0 1 1 0 0 0 1 0 1

Tenemos varias maneras equivalentes de presentar el resultado:

F = X Z +W X Y +W X Y Z
F = (0 0) + (100 ) + (0101 ) F = (0,10 ) + (8,9) + (5)
Al implicante (0,10) pertenecen a los vrtices 0,2,8,10 su vrtice mnimo es 8 y su vrtice mximo es 9.

PROPIEDADES DE LOS IMPLICANTES

(1) Cualquier vrtice de un implicante debe tener un valor mayor o igual al del vrtice mnimo y menor o igual que el del vrtice mximo: Vmin <= Vi <= Vmax

(2) La Y lgica del vrtice mnimo con cualquier otro vrtice del implicante debe se igual al vrtice mnimo:

Vmin AND Vi = Vmin

(3) La Y lgica de cualquier vrtice con el vrtice mximo debe ser igual al valor del vrtice:

Vi AND Vmax= Vi

Todo vrtice que pertenezca a un implicante debe cumplir con las tres condiciones anteriores

(4) Si un implicante A es subconjunto de un implicante B, los vrtices de A deben pertenecer a B, y por ende debe cumplir con las tres condiciones anteriores.

Comprobemos estas propiedades en uno de los implicantes del ejemplo anterior. Para el implicante (-0-0), cuyos vrtices mnimo y mximo son 0 y 10 respectivamente, probaremos los vrtices intermedios: 0<= 2 <=10 0<= 8 <=10 Primera propiedad

0010 0000 0000

2 0 0

1000 0000 0000

8 0 0

2 and 0 = 0 8 and 0 = 8

Segunda Propiedad

1010 0010 0010

10 2 2

1010 1000 1000

10 8 8

10 and 2 = 2 10 and 8= 8

Tercera Propiedad

La operacin y lgica de un nmero A con un nmero B, la realiza la computadora tomando bit por bit de los valores binarios e A y de B. En la Y lgica, se tiene una salida 1 slo cuando los dos bits de la misma columna valen 1. En el apndice A se presenta el estado de un programa computacional de Quick Basic, llamado TABHG, que nos permite verificar si la funcin booleana que obtuvimos como reduccin de la ecuacin cannica cumple con la tabla de verdad de la cual partamos. La operacin del programa TABHG es la siguiente: 1.- Solicita al usuario que teclee la funcin booleana, expresando cada implicante como ceros (variable negada), unos (variable afirmada) y guiones (variable reducida), encerrados entre parntesis. 2.- Obtiene las vrtices mnimo y mximo de cada implicante y los guarda en u alista de implicantes. 3.- Verifica que la longitud de todos los implicantes sea la misma. 4.- Prueba cada uno de los posibles vrtices (desde 1 hasta n-1, donde n es el nmero de variables) para ver si pertenece a alguno de los implicantes. Si pertenece lo anota en la lista de minitrminos de la funcin. 5.- Imprime el resultado.

A continuacin se presentan varias corridas del programa TAHBG, para ejemplificar su utlizacin. Los datos de prueba se tomaron de los ejemplos del captulo anterior.

F1(A,B,C,D) = (- - - 0) + (- 00 -) Los minitrminos con salida uno son: 0 1 2 4 6 8 9 10 12 14

F2(A,B,C,D) = (- - 01) + (0110) Los minitrminos con salida uno son: 1 5 6 9 13

F3(A,B,C,D) = (- 1 -1) + (- 0 - 0) + (100 -) + (1 01) Los minitrminos con salida uno son: 0 2 5 7 8 9 10 13 15

F4(A,B,C,D) = (- 1 -1) + (- 0 - 0) + (100 -) Los minitrminos con salida uno son: 0 2 5 7 8 9 10 13 15

F5(A,B,C,D) = (- 1 -1) + (- 0 - 0) + (1 01) Los minitrminos con salida uno son: 0 2 5 7 8 9 10 13 15

F6(V,W,X,Y,Z) = (00 - - 0) + (- 0 00) + (10 0 -) + (1 - - 01) + (11 - - 1) Los minitrminos con salida uno son: 0 4 8 12 16 17 20 21 25 27 29 31

F7(V,W,X,Y,Z) = (00 - - 0) + (10 0 -) + (11 - - 1) Los minitrminos con salida uno son: 0 4 8 12 16 17 20 21 25 27 29 31

F8(V,W,X,Y,Z) = (01 - - 1) + (10 0-) + (11 1 -) + (- 000 -) + (- -001) Los minitrminos con salida uno son: 0 1 9 11 13 15 17 20 21 25 26 27 30 31

F9(V,W,X,Y,Z) = (01 - - 1) + (10 0-) + (11 1 -) + (- 000 -) +(- 10 - 1) Los minitrminos con salida uno son: 0 1 9 11 13 15 17 20 21 25 26 27 30 31

Si al correr el programa TABHG, introducimos uno por uno a los implicantes (en lugar de introducir toda la ecuacin) obtendremos la lista de minitrminos que cubre cada implicante. Esta lista nos es til para trabajar una tabla de implicantes y obtener la ecuacin mas reducida. En el apndice A se indica una sencilla modificacin al programa TABHG, para que adicionalmente enliste los vrtices que pertenecen a cada implicante. A continuacin se muestra una corrida de este programa para el ejemplo de la pagina 47.

Falta tabla

MTODO COMPUTACIONAL PARA MINIMIZACIN LGICA

Previamente hemos visto mtodos matemticas y mtodos grficos para reducir ecuaciones Booleanas. Los mtodos grficos solo son aplicables cuando el nmero de variables es bajo (hasta 6 variables) por lo que su aplicacin practica es limitado y tienden al desuso. Los mtodos matemticos generalmente involucran un alto nmero de operaciones, pero podemos implementar algoritmos computacionales equivalentes y dejar la tarea a una computadora. Entre los mtodos computacionales mas conocidos estn los siguientes:

TABULAR, desarrollando por W. V. Quine en 1952 Shiva-Nagle, que data de 1975 BOOZER, desarrollado por W. I. Fletcher en 1979 PRESTO, creando por Antonin Svoboda en 1981, empleado en muchos de los programas de simplificacin comerciales.

Todos estos mtodos se basan en buscar pares de trminos que difieren en una sola variable, que en una de ellos aparece complementada y en el otro esta sin complementar. Esto permite reducir a la variable citada. Veamos a continuacin como trabaja el mtodo de Quine-McClusky, que es el mas antiguo, pero tambin el mas sencillo.

1. Se introduce la lista de minitrminos (elementos de la tabla de verdad cuya salida vale


uno). 2. Se produce a encontrar adyacencias, buscando reducir una variable en cada ocasin. Para ello: Se subdivide la lista en subgrupos de elementos con igual numero de unos (subgrupos S0, S1, S2 SN, donde N es el nmero de unos de cada elemento). Cada elemento del subgrupo Si se compara contra los elementos del subgrupo Si+1 para buscar adyacencias. Hay adyacencia cuando al efectuar una O-EXCLUSIVA de los valores binarios de los dos elementos el resultado binario arroja un unico uno. En este caso se obtiene un termino reducido formado por una serie de ceros y unos, excepto en la posicin de la variable descartada en la que se anota un guin.

Al encontrar una reduccin marcamos los trminos que la originaron. Si una para un elemento dado no se encontr ninguna adyacencia posible se le envia a la lista de implicantes primos esenciales.

Se repite el procedimiento con la tabla de expresiones reducidas buscando nuevas adyacencias.

3. Se selecciona el conjunto mnimo de implicantes que cubra al total de minitrminos de la funcin original. El proceso de optimizacin se inicia partiendo de la lista de implicantes primos esenciales (los cuales forzosamente forman parte de la solucin), debiendo descartar de la lista original de minitrminos todos los elementos que ellos cubren. A continuacin se seleccionan los implicantes primos opcionales que permitan cubrir los elementos restantes.

Ejemplo.- Reducir por Quine-McClusky la funcin:

f ( A, B, C , D ) = m(0,2,5,8,9,10 )
PASO 1.- Lista de elementos con salida 1:

0 0 0 1 1 1

0 0 1 0 0 0

0 1 0 0 0 1

0 0 1 0 1 0

0 2 5 8 9 10

PASO 2.- Se subdivide la lista en subgrupos con igual nmero de unos:

0000 0010 1000 0101 1001 1010

Cero unos

Un uno

Dos unos

PASO 3.- Buscar repetidamenteadaycencias (cambios de una variable), entre los elementos de dos subgrupos contiguos. Marcamos los trminos que permiten efectuar una reduccin:

0000 0010 00-0

0000 1000 -000

0010 1010 -010

1000 1001 100-

1000 1010 10-0

Encontramos en este paso a los im,plicantes: (00-0), (-000), (-010), (100-), (10-0) Pero vemos tambin que el vrtice 0101 no se tom en ninguna reduccin, por lo que debe de formar parte de la solucin final. PASO 4.- Subdividimos la lista de implicantes en grupos con igual nmero de unos:

00-0 -000

ceros unos

-010 10010-0

un uno

PASO 5.- Buscamos repetidamente adyacencias entre elementos que difieren en una sola variable y tengan los guiones en las mismas posiciones. Marcamos siempre los trminos utilizados en una reduccin: 00-0 10-0 -0-0 -000 -010 -0-0

En este paso vemos que el vrtice 100- no puede reducirse ms por lo que forma parte de la solucin final. Tambin forma parte de la solucin implicante -0-0, que fue el ltimo que se obtuvo. PASO 6.- La solucin es: f(A,B,C,D) =(0101) + (100-) + (-0-0) En el apndice B se presenta un programa de computadora, denominado REDHG, que permite reducir funciones de lgica combinacional de hasta 16 variables de entrada. Para emplearla debemos partir de la lista de valores numricos de los renglones con salida uno en la tabla de verdad original (minitrminos), ordenados en forma creciente. El algoritmo con el que opera el programa es el siguiente: 1- Leer lista de minitrminos. 2- Encontrar los posibles implicantes (utilizando las propiedades de los implicantes citadas previamente). 3- Ordenarlos por diferencia de valores en sus vrtices extremos. 4- Aceptar los implicantes con reduccin de una variable. 5- Contar las veces que un vrtice se emple en la primer reduccin. Los vrtices que no hayan sido empleados son parte de la solucin. 6- Buscar reducciones mayores entre pares de implicantes aceptados con igual diferencia. Hay reduccin si la diferencia vertical (Vmin2-Vmin1) es igual a una potencia entera de 2 (o sea 1,2,4,8,), representando cambios de una variables. 7- Encontrar la cobertura mnima. 8- Imprimir resultado. Para tener idea de cmo trabaja el programa, veamos a continuacin las acciones que realiza, paso a paso, para resolver una funcin combinacional sencilla (la misma que utilizamos en el ejemplo anterior).

Ejemplo.- Reducir la funcin siguiente:

f ( A, B, C , D ) = m(0,2,5,8,9,10 )
Paso 1.- Leer vrtices 0,2,5,8,9,10

Paso 2.- Encontrar los posibles implicantes (la Y lgica del vrtice mnimo con el vrtice mximo debe ser igual al vrtice mnimo para que aceptemos la pareja de nmeros como un posible implicante) 0,10 0,9 0,8 0,5 0,2 SI SI SI SI SI 2,10 2,9 2,8 2,5 SI NO NO NO 5,10 5,9 5,8 NO NO NO 8,10 8,9 SI SI 9,10 NO

Paso 3.- Ordenar por diferencia los posibles implicantes

8,9 0,2 8,10 0,5 0,8 2,10 0,9 0,10

Diferencia 1 Diferencia 2 Diferencia 5 Diferencia 8 Diferencia 9 Diferencia 10

Paso 4.- Aceptar los implicantes con reduccin de una variables

(o sea aquellos cuyas diferencias sean 1,2,4,8,, 2^n, que corresponden a el cambio de una sola variable).

8,9 0,2 8,10 0,5 0,8 2,10 0,9 0,10

SI SI SI NO SI SI NO NO

Diferencia 1 Diferencia 2 Diferencia 5 Diferencia 8 Diferencia 9 Diferencia 10

Paso 5.- Contar el nmero de veces que cada vrtice se emple en la primera reduccin. Los vrtices no reducidos forman necesariamente parte de la solucin. 0 2 5 8 9 2 veces 2 veces 0 veces no reducido 3 veces 1 veces

10

2 veces

Paso 6.- Buscar reducciones mayores entre pares de implicantes aceptados del mismo subgrupo.

Al comparar los implicantes (0,2) con (8,10) encontramos una diferencia vertical de 8, por lo que son parte de un implicante mayor que es (0,10). Al aceptar al implicante (0,10) debemos marcar como ya considerados a los implicantes que lo originaron, que son:

8,9 0,2 8,10 0,5 0,8 2,10 0,9 0,10

SI YA YA NO YA YA NO SI

Diferencia 1 Diferencia 2 Diferencia 5 Diferencia 8 Diferencia 9 Diferencia 10

Paso 7.- El resultado est formado por los implicantes aceptados y los minitrminos no reducidos, que en este caso son:

F ( A, B, C , D ) = (5) + (8,9) + (0,10 ) = (0101 ) + (100 ) + ( 0 0)


= A B C D + A B C + B D

Paso 8- Se emplea una tabla de implicantes para determinar la cobertura mnima.

0 -0-0 *

2 *

8 *

10 *

100-

0101

La solucin obtenida previamente es la mnima ya que no existen implicantes que puedan ser descartados. La tabla siguiente muestra los resultados obtenidos al correr el programa REDHG para algunos de los ejemplos del captulo anterior.

Vrtices: 0, 4, 8, 12, 16, 17, 20, 21, 25, 27, 29, 31

Implicantes primos: ( 16 , 21 ) ( 25 , 31 ) ( 0 , 12 ) ( 17 , 29 ) ( 0 , 20 ) Vrtices: 0, 1, 9, 11, 13, 15, 16, 17, 20, 21, 25, 26, 27, 30, 31 = = = = = 10- 011- -1 0- -00 1- -01 -0- 00

Implicantes primos: ( 16 , 21 ) ( 26 , 31 ) ( 9 , 15 ) ( 0 , 17 ) ( 9 , 27 ) ( 11 , 31 ) ( 1 , 25 ) Vrtices: 0, 1, 9, 11, 13, 15, 16, 17, 20, 21, 25, 26, 27, 30, 31 = = = = = = = 10- 011- 101- -1 -000 -10- 1 -1 -11 - -001

Implicantes primos: ( 16 , 21 ) ( 26 , 31 ) ( 9 , 15 ) ( 0 , 17 ) ( 9 , 27 ) ( 11 , 31 ) ( 1 , 25 ) Vrtices: 0, 3, 4, 6, 7, 8, 9, 11, 12, 15 = = = = = = = 10- 011- 101- -1 -000 -10- 1 -1 -11 - -001

PRCTICA II

1- Verifique, empleando la computadora, los resultados obtenidos por Usted al simplificar las ecuaciones y funciones Booleanas del cuestionario del captulo II (pginas 49 y 50). 2- Utilice la computadora para obtener las ecuaciones reducidas de las funciones siguientes: F1(A,B,C,D,E) = m (1,5,7,9,10,12,13,17,18,19,26,30,31) F2(A,B,C,D,E) = m (1,3,4,6,9,11,12,14,16,17,18,19,20,22,28,29,30,31) F3(A,B,C,D,E) = m (1,4,8,13,17,20,24,29) F4(A,B,C,D,E) = m (8,9,10,11,13,15,17,19,21,23,25,27,29,31) F5(A,B,C,D,E) = m (4,5,6,7,9,20,21,22,23,24,25,26) F6(A,B,C,D,E,F) = m (0,1,2,3,8,10,11,12,16,17,18,19,24,25,34,35,40,41,42,43,48,49,55,56,57, 58,59)

En cada caso, verifique que la ecuacin obtenida sea la mnima.

CAPITULO V OPERACIONES CON NMEROS BINARIOS OBJETIVOS: ESTABLECER PROCEDIMIENTOS QUE PERMITAN CONVERTIR NMEROS DECIMALES A BINARIOS Y VICEVERSA. CONOCER COMO REALIZAR LAS OPERACIONES ARITMTICAS BSICAS EN BINARIO.

SISTEMAS NUMRICOS El sistema de numeracin decimal fue inventado por matemticos hindes hace mas de dos mil aos y los rabes lo introdujeron al mundo occidental en el siglo trece. Consta de diez smbolos que van del cero al nueve e introduce el concepto del valor posicional, en el que cada posicin representa a la base elevada a una potencia. En base 10 el dgito que se encuentra en la posicin de unidades debe ser multiplicado por 100, el de decenas por 101, el de centenas por 102, etc. Por ejemplo: 7865=(7x103)+( 8x102)+( 6x101)+( 5x100) Existen muchos otros sistemas numricos, los cuales comparten con el sistema decimal las siguientes propiedades:

(a) El nmero de smbolos diferentes (dgitos) usados por el sistema es igual a la base. (b) El digito mayor es siempre una unidad menor a la base. (c) En cada posicin se multiplica el valor del digito por la base elevada a la potencia correspondiente. Para un nmero entero, el ltimo digito (o sea el de la derecha) est multiplicado por la base elevada a la potencia cero, el penltimo est multiplicado por la base elevada a la potencia uno, el antepenltimo multiplicado por la base elevada a la potencia dos, y as sucesivamente. (d) Los acarreos en sumas y restas, se propagan hacia la siguiente posicin con mayor peso ponderal. El sistema numrico binario solo encuentra aplicacin practica, hasta hace aproximadamente 50 aos al iniciarse el desarrollo de automatismos a relevadores. Actualmente se emplea profusamente en las computadoras e instrumentos digitales por requerir solo dos niveles de seal para representar cada dgito. El sistema binario consta de dos smbolos 0 y 1. Al representar un nmero entero en binario la posicin de la derecha est multiplicad por 20, la siguiente 21, la siguiente por 22, etc. A cada digito binario se le llama bit. Al bit de la extrema derecha se le conoce como bit menos significativo y al de la extrema izquierda bit mas significativo.

Ejemplo. Determine el valor del nmero binario 1011. (1011)= (1 x 23) + (0 x 22) + (1 x 21) + (1 x 20) = (1 x 8) + (0 x 4) + (1 x 2) + (1 x 1) = 8 + 2 + 1 = 11 El sistema binario no es muy conveniente para que nosotros representemos cantidades grandes, pues se requieren demasiados ceros y unos. Por tal razn se emplean frecuentemente otros sistemas que corresponden a una representacin abreviada del sistema binario. Si se consideran que existen 16 posibles combinaciones para un grupo de 4 bits (2 4 = 16) se tiene un digito hexadecimal (base 16) sustituye a cuatro dgitos binarios. En el sistema hexadecimal trabajamos con 16 smbolos que son los nmeros 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 y las letras A, B, C, D, E, F.

Decimal 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 20 44

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

Binario 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 0001 0000 0001 0100 0010 1100

225 256

E1 100

1110 0001 0001 0000 0000

El procedimiento para convertir de binario a hexadecimal requiere solo separar al nmero binario en grupos de 4 bits y sustituir cada grupo por el dgito hexadecimal correspondiente. Para convertir de hexadecimal a binario se invierte el procedimiento.

Ejemplo.- Convertir de binario a hexadecimal al numero binario. 011111001000.

0111 1100 1000 (7) (C) (8)

NOTACIN POSICIONAL En general, en un sistema numrico de cualquier base, la posicin de cada dgito representa a una diferente potencia de dicha base, esta relacin puede utilizarse para trabajar cambios de base. Considere el nmero decimal 654.321 el cul corresponde a lo siguiente: 6 x 102 + 5 x 101 + 4 x 100 + 3 x 10-1 + 2 x 10-2 + 1 x 10-3 O sea: 6 x 100 + 5 x 10 + 4 x 1 + 3 x 0.1 + 2 x 0.01 + 1 x 0.001 (seis centenas, cinco decenas, cuatro unidades, tres dcimas, dos centsimas, una milsima) Consideremos un nmero cualquiera base R, con parte entera y parte fraccionaria, dado por la siguiente relacin de dgitos: D2 D1 D0 . D-1 D-2 D-3 Donde Dn representa al ensimo digito. Cada digito est multiplicado por un valor, que llamamos peso ponderal que depende de la posicin del digito con respecto al punto. En este caso si la base es R, el valor del nmero est dado por la relacin: Valor = D2 x R2 + D1 x R1 + D0 x R0 + D-1 x R-1 + D-2 x R-2 + D-3 x R-3

Por ello, para convertir a decimal un nmero cualquiera de base R puede emplearse la siguiente relacin: Valor = (((N2 x R) + N1) x R) + N0 + (N-1) / R + ((N-2) / R / R) + (((N-3) / R / R / R) Reordenando la ecuacin tenemos: Valor = ((( N2 x R) + N1) x R) + N0 + (N-1) / R + (((N-3) / R) + N-2) / R) + N-1) / R Verbalmente lo podemos expresar as: Para convertir a decimal la parte entera d un nmero base R tomamos su primer digito (el de la izquierda) y lo multiplicamos por R, a el resultado le sumamos el segundo digito y lo multiplicamos por R, repitiendo estos pasos hasta el penltimo digito antes del punto; finalmente sumamos el ultimo dgito. Para convertir a decimal la parte fraccionaria de un nmero base R tomamos su ltimo dgito (el de la derecha) y lo dividimos entre R, al resultado le sumamos el penltimo dgito y el resultado lo dividimos entre R, repitiendo estos pasos hasta llegar al primer dgito fraccionario inclusive Esta relacin se puede extender a cualquier nmero de dgitos a la izquierda o a la derecha del punto.

Ejemplo.- Convertir a decimal lo nmeros siguientes:

(2A00)16

2 x 16 = 32 (32 x 10) x 16 = 672

(2AC5)16 = (10949) 10

(1F8A.64)16

1 x 16 = 16 (16 + 15) x 16 = 496 (496 + 8) x 16 = 8064 (8064 + 10 ) = 8074

(1F8A)16 = (8064)10

(4 / 16) = 0.25 (0.25 + 6) / 16 = 0.0390625

(0.64)16 = (0390625)10

(1F8A.64)16 = (8064.390625)10 (1110 0001)2

1x2=2 (2+1)x2 = 6 (6+1)x2 = 14 (14+0)x2 = 28 (28+0) x 2 = 28 (28+0) x 2 = 56 (56+0) x 2 = 112 (112+0)= 224 224+1 = 225 (1110 0001)2 = (225)10

(0.6E2)16

(2/16) = 0.125 (0.125 + 14)/16 = 0.8828125 (0.8828125 + 6)/16 = 0.4301757

(0.C1)16

(1/16) = 0.0625 (0.0625 + 12)/16 = 0.7539062

(0.1011)2

(1/2) = 0.5 (0.5 + 1)/2=0.75 (0.75 + 0)/2 = 0.375 (0.375 + 1)/2 = 0.6875

Ejercicio.- Convierte a decimal los nmeros siguientes:

(F5A3.C1)16

(3E.BD5)16

(E6F7.A3)16

(0111 0000 1111.0001 0101)2

(1010 0110 1100.0101)2

(0.0101 1000 0011)2

CONVERSIN DE DECIMAL A BASE R

El convertir nmeros enteros decimales a base R, se logra dividiendo el nmero entre R repetidamente y utilizando los remanentes de cada divisin como elementos del resultado.

Ejemplo.- Convertir a hexadecimal el nmero decimal 46 142

46 142/16 = 2 883 y sobran14 (E en hexadecimal) 2883/16 = 180/16 = 11/16 = 180 y sobran 3 11 y sobran 4 0 y sobran 11 (B en hexadecimal)

(64 142)10 = (B43E)16

Convertir nmeros fraccionarios decimales a base R se logra multiplicando por R a la fraccin repetidamente y utilizando la parte entera obtenida en cada multiplicacin como elemento del resultado.

Ejemplo.- Convertir a hexadecimal el nmero decimal 0.390 0.390 x 16 = 6.24 0.24 x 16 = 3.84 0.84 x 16 = 13.44 0.44 x 16 = 7.04 0.04 x 16 = 0.64 parte entera = 6 parte entera = 3 parte entera = 13 parte entera = 7 parte entera = 0 (D en hexadecimal)

(0.390)10 = (0.63D7)16

Problema.- Comprobar que: (2803.08203125)10 = (AF3.15)16

(46142.224850)10 = (B43E.399)16

(12760.4321)10 = (31D8.8E9E)16

(1254.173)10 = (10011100110.0010110001)2

Muchas calculadoras incluyen actualmente la opcin de convertir enteros decimales a hexadecimales y viceversa. Esto pudiera parecernos como una severa limitante al trabajar con cantidades fraccionarias pero existe una forma sencilla de subsanar el problema. Para explicarla refirmonos a un ejemplo anterior donde se hizo la conversin del nmero hexadecimal 1F8A.64 a decimal, obtenindose como resultado 8074.390625. El nmero en cuestin lo podemos multiplicar por 162 (correspondiendo el punto dos posiciones a la derecha) y dividirlo en 162 (corriendo el punto dos posiciones a la derecha) y dividirlo entre 162 para no alterarlo, obteniendo:

(1F8A)16 = (1F8A64/100)16 = (2,067,044/162)10 = (8074.3906)10

Esto corresponde a un simple corrimiento del punto y nos conduce a la solucin deseada. Correr el punto una posicin a la derecha, equivale a multiplicar el nmero hexadecimal por 16; correr el punto dos posiciones corresponde a multiplicarlo por 162 (o sea 256), etc. Correr el punto n lugares a la izquierda equivale a dividir el nmero hexadecimal entre 16n. Similarmente para convertir de decimal a hexadecimal empleamos un procedimiento similar.

Ejemplo.- Convertir a hexadecimal el nmero decimal 976.4375 Al numero lo multiplicamos por 162 (256) la parte entera la convertimos a hexadecimal y despus corremos el punto dos decimales a la izquierda para dividir entre 256:

(976.4375 x 256) / 256 = (249968) / 256 = (3D070 / 100)16 = (3D0.70)16

En el apndice C se proporcionan varios programas de computadora para convertir de decimal a hexadecimal y viceversa as como para convertir decimal a binario y binario a decimal.

ARITMTICA BINARIA Veamos ahora los conceptos bsicos de la aritmtica binaria, que utilizan en sus clculos las computadoras y los sistemas con microprocesadores.

SUMA

0+0=0

0+1=1 1+0=1 1+1=0 y hay un acarreo de 1

Para sumar nmeros binarios procedemos de derecha a izquierda sumando los bits correspondientes a cada columna conforme a las reglas mostradas en la tabla previa. En algunas columnas pudiera haber un acarreo de uno (generado en la columna anterior), por lo que tenemos los siguientes casos:

a) .- Que todos los bits de la columna valgan cero, en cuyo caso la suma vale cero. b) .- Que slo un bit de la columna valga uno, obtenindose una suma de uno. c) Que dos bits valgan uno, resultando una suma de cero con un acarreo de uno para la siguiente columna de la izquierda. d) Que los tres bits de la columna valgan uno, resultando una suma de uno con un acarreo de uno a la siguiente columna. Ejemplos:

11

11

111

0101

0101 +0011 1000

5 +3 8

0011

1111 +0001 10000

15 +1 16

+0010 +2 0111 7

+0001 +1 0100 4

11

111111

0101 +1001 1110

5 +9 7

1100 +1110 1 1010

12 +14 26

00101101 +00110101 01100010

45 +53 98

01100010 +00011110 10000000

98 +30 128

Ejercicios:

0010 1010.0111 +0101 1110.0001

0011 1111 +0010 0111

1100 1101 +1100 1101

1001 0110 +0011 1011

0001 0100 1001 +1110 1011 1001

0111 0100.0101 +0110 1110.1111

RESTA

00=0 01=0 10=1 11=0 y hay un arrastre de 1

Para restar nmeros binarios, se sustrae bit por bit de derecha a izquierda, emplendose las siguientes reglas:

a) Si el bit del minuendo es igual al del sustraendo la diferencia es cero. b) Si el minuendo vale uno y el sustraendo vale cero la diferencia es uno. c) Si el minuendo vale cero y el sustraendo uno, la diferencia es uno, pero hay que pedir prestado a la siguiente posicin del sustraendo. Pueden tenerse dos casos: Si el siguiente bit del sustraendo vale uno, al restarle el arrastre se convierte en cero. ** Si el siguiente bit del sustraendo vale cero, al restarle el arrastre se convierte en uno y propaga nuevamente el arrastre otra posicin a la izquierda.

Ejemplos:

0 11

0 11

01 1 1

0111 7 -0101 -5 0010 2

1000

1000

10000

16

-0001 -1 0111 7

-0101 -5 0011 3

- 1111 -15 00001 1

0 0

01 1 1

0 111 11

11111

31

1010 -0101 0101

10 -5 5

1000 0000 -0000 1000 0111 1000

128 -8 120

1000 0000 -0110 0010 0001 1110

128 -98 30

-01011 -11 10100 20

Ejercicios:

1001100 - 001111

1000.0111 - 11.011

11110000 - 0000111

0.11101110 -0.00001010

101010111.111 10000.101

0.01100000 -0.00111011

1100.1011 -1111.1000

1110.01100000 -1010.00111011

MULTIPLICACIN

0x0=0 0x1=0 1x0=0 1x1=1

La tabla de multiplicacin binaria es muy fcil de recordar ya que slo cuando ambos bits valen 1 el resultado vale uno, en todos los dems casos el resultado vale cero. En la multiplicacin binaria no existen acarreos. Para efectuar la multiplicacin binaria se explora de derecha a izquierda cada uno de los bits del multiplicador. Si el bit vale uno el multiplicando se copia ntegramente, de forma que su extremo derecho que de a la altura del bit en cuestin del multiplicando. Si dicho bit vale cero el producto parcial vale cero y podemos anotarlo o no, ya que no contara en el resultado. Los productos parciales se suman para obtener el resultado.

0110 X 0101 0110 0000 0110 0000 00011110 6 x5 3010

0110 + 0110 1100 + 0110 1 0010 + 0110 1 1000 + 0110 1 1110

6 6 6 6 + 6 30

Tambin puede multiplicarse por sumas repetidas, como muestra la figura.

Ejercicios:

0011 X 0101

3 x 5

1010 x 0101

10 x 5

1111 x 1011

15 x 11

1100.00 X 1010.10

12 x 10.5

0101.01 x 0011.10

5.25 x 3.5

0110.11 x 0100.01

6.75 x 4.25

DIVISIN La divisin binaria se realiza conforme al siguiente procedimiento: a).- Anotamos el divisor debajo del dividendo, justificando ambas cantidades a la izquierda. b).- Si cabe el divisor se anota un uno en el coeficiente y se resta el divisor de los dgitos correspondientes del dividendo. Si no cabe el divisor se anota un cero en el cociente. c).- Bajamos el siguiente dgito del dividendo y se anexa a los dgitos remanentes. d).- Regresar a b hasta que ya se hayan considerado todos los dgitos del divisor.

10 1

11 0 11 0 11 10 1 0 10 01 10 1 00 0

c o c i e n te d i v i ds oi vr i d e n d o r e m n e n te

5 6 3 0 0

Tambin podemos dividir empleando restas repetidas, el resultado corresponde al numero de veces que puede sustrarsele el divisor al dividendo:

111 10 011 0 1 10 00 011 0 1 001 0 011 0 110 0 011 0 0 110

30 24 18

30-6 = 24 24-6 = 18 18-6 = 12

(1 vez) (2 veces) (3 veces)

12 6

12-6 = 6 6-6 = 0

(4 veces) (5 veces)

En el ejemplo previo, al dividir 30 entre 6, se obtuvo un resultado de 5b unidades y un remanente de cero unidades.

Ejercicios:
1 10 1 01 00 11 11 11 0 0 .1 1 0 1 10 .1 0 00

NMEROS BINARIOS NEGATIVOS

Al manejar enteros positivos, una palabra de n bits permite representar nmeros en el rango de 0 a 2n. Si n = (el rango va de 0 a 255. En todas las operaciones aritmticas realizadas previamente, se ha considerado que los operandos son positivos, pero en la practica es frecuente que se requiera trabajar con cantidades con signo; para ello se divide en dos partes el rango de todos los nmeros que podamos representar con n bits y se asigna una mitad a los nmeros positivos y la otra mitad a los nmeros negativos. Si disponemos de nmeros negativos podemos restar sumando. Considere que sumamos los nmeros (+14) + (-6) esto equivale a restar (+14) (+6) y en ambos casos el resultado es el mismo, ocho. Para representar en binario nmeros negativos se emplean el complemento verdadero o complemento al radio de la magnitud del nmero. Esto simplifica mucho la circuitera ya que al disponer de circuitos para efectuar la suma y el complemento podemos realizar la resta (sumando sustraendo ms el complemento del minuendo), la multiplicacin (por sumas repetidas) y la divisin (por restas repetidas). De hecho, en muchas computadoras las cuatro funciones aritmticas se efectan mediante sumas binarias. Para restar sumando primero se obtiene el complemento verdadero del sustraendo (tambin llamado complemento al radio), se le suma el minuendo y se le quita una unidad al dgito ms significativo del resultado. Veamos primero un ejemplo con nmeros decimales para ilustrar este concepto:

Ejemplo:

(89 23) = (89 + (100 23) - 100) = (89 + = (166 = (66 77 - 100) - 100) )

En este ejemplo el complemento verdadero de 23 es (100 23) = 77 y el quitar una unidad al dgito ms significativo del resultado corresponde a restarle cien, con lo cul no alteramos la ecuacin original (la misma cantidad que le sumamos en una parte es la le restamos en otra). Antes de efectuar restas con nmeros binarios veamos como obtener el complemento verdadero (o complemento a dos) de un nmero binario: El complemento de un nmero binario k de n dgitos se obtiene restando 2n k (ver la figura de la izquierda). Otra manera de obtener el complemento verdadero de un nmero binario es negando el nmero (cambiando ceros por unos y viceversa) y sumando una unidad (ver figura central). Una regla prctica para obtener el complemento de un nmero binario es proceda de derecha a izquierda a copiar todos los dgitos del nmero binario, hasta el primer uno inclusive. Copie los nmeros restantes negando cada bit. (ver figura de la derecha). Ejemplo.- Obtener el complemento verdadero del nmero binario 1010.

1 00 0 0 0 11 01 10

11 00 00 11 +0 0 01 01 10

Ejemplo.- Restar los nmeros binarios 1010 menos 0011 (o sea diez menos tres en decimal) empleando el complemento verdadero del sustraendo.

Paso 1- Obtener el complemento verdadero del sustraendo. 0011 se niega obteniendo le sumamos una unidad
10 10 + 1 10 11

Paso 2- Sumamos el minuendo el complemento verdadero del sustraendo


11 00 +11 10 111 01

Paso 3- Descartamos el bit ms significativo del resultado 0111

El procedimiento descrito para restar nmeros binarios mediante sumas es vlido tambin para nmeros con parte fraccionaria, como veremos en el siguiente ejemplo. Ejemplo.- Restar a 1011.1101 el numero 0011.1111, empleando el complemento a dos del sustraendo.

1011 .1101 + 0011 .1111

primero negamos el sustraendo:


0 1 .1 1 01 11 1 0 .0 0 10 00

despus le sumamos 1 y el minuendo:


1 1011 .1101 +1100 .0000 0111 .1110
2

Practique ahora la substraccin por complementos de nmeros binarios, empleando los mismos valores del ejercicio de resta de una seccin anterior. Posteriormente verifique que coincidan los resultados obtenidos por usted en ambos casos. Ejercicios:

1001100 001111

1000 .0111 11 .011

11110000 0000111

0.11101110 0.000000

101010111.111

0.01100000

1100.1011

1110.01100000

1000.101

-0.00111011

-1111.1000

-1010.00111011

Al disear circuitos aritmticos, veremos que todo este proceso, que en este momento puede parecernos complejo, nos permite reducir considerablemente la circuitera necesaria para construir una unidad aritmtica que permita sumar y restar nmeros binarios. Un caso particular de la resta, que debemos considerar, es cuando el minuendo es menor que el sustraendo. Por ejemplo al restar 84 90 el resultado es -6. Al trabajar la resta por complementos tendramos:

(84 - 90) = (84 + (100 90) 100) = 84 + 10 100 = 94 100 = -6

En el siguiente ejemplo el sustraendo es mayor que el minuendo por lo que el resultado es negativo. Ejemplo.- Restar los nmeros binarios 00010000 menos 00010001 (o sea 16 menos 17 en decimal)

00010000 -00010001

00010001 11101110

1 00010000 +11101110 11111111

Aqu el nmero binario 11111111 representa -1.

Siempre que el minuendo sea menor que el sustraendo no se genera acarreo de salida y el resultado corresponde a un nmero negativo (deberemos complementarlo para obtener su magnitud).

El complemento verdadero de 11111111 es 00000001.

11111111 00000000 +

00000000 1 00000001

El emplear aritmtica binaria, con complementos podemos representar nmeros positivos y negativos. Los nmeros positivos empiezan con cero y los negativos, que obtenemos sacando el complemento verdadero del valor positivo, empiezan con uno. En aritmtica binaria empleando complementos una palabra de n bits permite representar nmeros
1 1 positivos en el rango de 0 a ( 2 n )-1 y negativos en el rango de 0 a - ( 2 n ).

A cada grupo de ocho bits se le denomina byte. En computadoras digitales usualmente se trabaja con longitudes de palabra de n bytes. Hay computadoras de 8, 16, 32 o ms bytes. Con 8 bits podemos representar nmeros positivos en el rango de 0 a 127 y negativos en el rango de -1 a -128.

binario 00000000 00000001 00000010 ----------01111111 10000000 ----------11111110 11111111

Decimal + 0

+ - 1 + - 2

+ 127 - 128

2 1

Con 16 bits pueden representarse nmeros positivos de 0 a 32767 y negativos de -1 a 32768.

CIRCUITOS ARITMTICOS SIMPLES Una parte esencial de todo microprocesador y de toda microcomputadora es la que realiza las operaciones aritmticas y lgicas, a dicha seccin se le denomina Unidad Aritmtica y Lgica. Las operaciones usuales de una unidad aritmtica y lgica son suma, complemento, resta, decremento, y lgica, o lgica, o exclusiva, negacin, corrimientos y rotaciones. Tambin el proceso de decisin tiene lugar en ella; por ejemplo la empleamos cuando se necesita conocer si un nmero vale cero o si es positivo o bien cuando se requiere determinar si dos nmeros son iguales, o cul de ellos es mayor. Manejando apropiadamente el bloque bsico de instrucciones de la Unidad Aritmtica y Lgica, se pueden realizar otras operaciones, por ejemplo la multiplicacin puede hacerse mediante sumas repetidas. Si adems de la suma se dispone del complemento puede efectuarse la operacin de la resta; y mediante restas repetidas se puede dividir. Trabajando series de valores se pueden realizar operaciones matemticas complejas, tales como exponenciales, logaritmos y funciones trigonomtricas. Existen numerosas unidades aritmticas y lgicas comerciales y otras forman parte de circuitos integrados ms complejos, como son los microprocesadores. Sin embargo para dar una idea del funcionamiento de la unidad aritmtica y lgica y adems practicar un poco el diseo de circuitos lgicos combinatorios. A continuacin se disean varios circuitos relacionados con ella. Ejemplo.- Medio sumador: Este circuito realiza las sumas de los bits menos significativos de dos palabras de n bits cada una, generando un acarreo a la posicin siguiente cuando el resultado de la suma es mayor que uno. A1B1
C1

S1 0 1 1 0

C1 0 0 0 1

Falta IMAGEN

0 0 B0 A0 S0 0 1 1 0 1 1

... +... ...

B3 A3 S3

B2 A2 S2

B1 A1 S1

Las ecuaciones correspondientes a esa tabla de verdad son:

S 0 = A0 + A0

C1 = A0 B0

Ejemplo.- Sumador Completo. Este circuito permite sumar dos bits considerando un acarreo previo.

An Bn C n 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1

Sn 0 1 1 0 1 0 0 1

Cn+1 0 0 0 1 0 1 1
2 0

A 0 0 1 0 1 1 1 0 1 0

B C
0 1 0 1 1 1

B C

00 01 11 10

0 0 1 0

00 01 11 10

Sn

C n +1

S n = An + Bn + C n

C n +1 = Bn C n + An C n + An Bn C n 1 = An Bn + C n [ An + Bn ]
Ejercicio.- Dibuje el circuito correspondiente al sumador completo, basndose en las ecuaciones obtenidas previamente. Tambin es factible realizar el sumador completo utilizando dos medios sumadores y una compuerta o, como muestra la figura siguiente:

Medio
Cn Medio
s

S n = An B n C n

An
sumador Bn
c

sumador An B n
c

An Bn C n

An Bn

C n +1

Puede demostrarse que el acarreo de salida de este diagrama, cumple con la ecuacin obtenida previamente:

Cn+1=An*Bn+[An+Cn]*Cn Cn+1=An*Bn+ An*Bn *Cn +An*Bn *Cn Cn+1=An*Bn+ Bn *Cn +An *Cn

Para sumar dos cantidades binariasde n bits cada una puede emplearse el sumador paralelo de la figura, formado al interconectar sumadores completos.

Aw

Bw

Ax

Bx

Ay

By

Ay

By

Sumador Completo

Sumador Completo

Sumador Completo

Sumador Completo

Csal

Cen

Sw

Sx

Sy

Sz

En el sumador paralelo, los datos reciben en paralelo a la entrada y se entregan en paralelo a la salida. Antes de leer el valor de salida debe esperarse que transcurra el tiempo suficiente para que sta se estabilice, permitiendo que se termine de propagar el bit de acarreo. Podemos tomar a sumador paralelo como base para disear una unidad aritmtica sencilla. La ecuacin del sumador es:

S= A + B + Cent

Haciendo que valga cero el bit de acarreo de entrada: S= A + B Suma

Si se reemplazan las B por su complemento y se hace que valga uno el bit de acarreo de entrada se tiene: S = A + B +1 Resta

(el acarreo de salida se descarta de esta operacin aritmtica). Cuando asignamos el valor cero a una de las variables y el acarreo de entrada vale cero, se tiene: S=A Transferencia

En ese mismo caso para un acarreo de entrada que vale uno se tiene: S=A+1 Incremento

Y al hacer que todos los bits de B valgan uno y que el acarreo de entrada sea cero: S = A + ( ( radio - 1 ) radio ) S=A1 Decremento

Puede apreciarse entonces que se requiere un circuito que controle la entrada de una variable B de manera tal que se tenga el valor verdadero, el complemento, ceros o unos. En otras palabras el circuito de control debe cumplir con la siguiente tabla de verdad: M 0 0 1 1 N 0 1 0 1 F 0 B B 1 El diagrama lgico de la unidad aritmtica resultante es: FALTAN IMAGNES PAGINA 88

El sumador completo es un ejemplo de redes iterativas, o sean circuitos diseados a partir de un pequeo mdulo base, que se repite e interconecta para trabajar u gran nmero de bits. Considere la unidad aritmtica diseada previamente, tiene 11 entradas (de las cuales 8 son de datos y 3 de control) y 5 de salidas. La tabla de verdad correspondiente requiere 2048 renglones (2 11). La manera ene que se trabaj el problema basndonos en pequeos bloques interconectables, simplifico en mucho el diseo final. Comercialmente existen numerosas versiones de unidades aritmticas y lgicas, consulte en un manual de circuitos lgicos TTL, el esquema corresponde a la ALU nmero 74S381 y anote las operaciones que realiza para cada una de las diferentes combinaciones de las lneas de control. Las unidades aritmticas y lgicas pueden tomar los operandos de dos registros o bien de una localidad de memoria de un registro. Cuando un mismo registro guarda a uno de los operandos y al resultado de la operacin se le denomina acumulador. En un captulo posterior veremos como disear un registro y como lograr que la informacin que el guarda se corra de posicin bajo control nuestro.

OPERACIONES USUALES DE UNA ALU

Suma simple Suma con acarreo Resta simple Resta con arrastre Complemento a uno Complemento a dos Y LOGICA O LOGICA O EXCLUSIVA Incrementar y Decrementar Corrimiento a la izquierda y derecha Rotacin

Ejemplo.- Disee un bloque bsico que interconectado adecuadamente nos permita comparar las magnitudes de dos nmeros binarios de igual longitud. Comparador de Magnitud. Al comparar las magnitudes de dos cantidades binarias de cualquier longitud se explora de izquierda a derecha hasta encontrar una diferencia. Si en esa posicin Xi > Yi (o viceversa) as ser el resultado sin importar cuanto valgan los dems bits.

Xe

Ye

Ie

Comparado r

Is

Me

Ms

Para el bloque bsico se cumple lo siguiente: Is = 1 si todas las comparaciones anteriores arrojan igualdad y adems en esa posicin los dos bits son iguales. Ms = 1 si es mayor desde antes o si previamente era igual y en esa posicin X es mayor que Y.

Me 0 0 0 0

Ie 0 0 0 0

Xe 0 0 1 1

Ye 0 1 0 1

Ms 0 0 0 0

Is 0 0 0 0

0 0 0 0

1 1 1 1

0 0 1 1

0 1 0 1

0 0 1 0

1 0 0 1

1 1 1 1

0 0 0 0

0 0 1 1

0 1 0 1

1 1 1 1

0 0 0 0

1 1 1 1

1 1 1 1

0 0 1 1

0 1 0 1

* * * *

* * * *

FALTAN UNAS IMAGENES POAG 91

Is = Ie (Xe Ye + Xe Ye). (1)

Ms =Me + Ie (Xe Ye). (2)

El arreglo para comparar dos nmeros de 4 bits es:

X3

Y3

X2

Y2

X1

Y1

X0

Y0 Is

1 Ie 0 Me Ms

TERMINOS CLAVE

BASE (O RADIO) SISTEMA DECIMAL SISTEMA BINARIO SISTEMA HEXADECIMAL BIT NOTACIN POSICIONAL PESO PONDERAL CONVERSIN DE BASE ADENDO AUGENDO ACARREO MINUENDO SUSTRAENDO

ARRASTRE DIVIDENDO DIVISOR COCIENTE REMANENTE MULTIPLICANDO MULTIPLICADOR COMPLEMENTO VERDADERO BYTE MEDIO SUMADOR SUMADOR COMPLETO UNIDAD ARITMETICA COMPARADOR DE MAGNITUD

CUESTIONARIO 1- Qu relacin guardan el sistema de numeracin binario y el sistema hexadecimal? 2- Cmo convertimos enteros binarios a decimales?Como enteros decimales a binarios? 3- Cmo convertimos de binario a hexadecimal y como de hexadecimal a binario? 4- Qu se entiende por base o radio de un sistema de numeracin? 5-Qu es notacin posicional? Diga si el sistema de numeracin Romano es posicional y explique su respuesta 6- Disee el bloque bsico de un circuito que entregue el complemento verdadero de un nmero binario, basndose en el siguiente algoritmo: se procede de derecha a izquierda a copiar todos los dgitos del nmero binario, hasta el primer uno inclusive; al tomar los numeros restantes deber negarse cada bit.

Ne

Zs

Complemento

Ze

Ns

7- Unidad Lgica. Disee un bloque bsico con dos entradas de datos A, B y dos entradas de control Y, Z, que se realice las principales funciones lgicas (Negacin, Y, O, O exclusiva).

PRACTICA III

1- Construya y verifique experimentalmente la operacin de: (a) medio sumador (b) sumador completo (c) complementador binario de 4 bits (inciso 6 del cuestionario) (d) unidad lgica (inciso 7 del cuestionario)

2- Verifique experimentalmente la operacin de la unidad aritmtica y lgica 74181. Compruebe que cumple con la tabla de verdad que indica el manual TTL.

CAPITULO VI CODIGOS NUMERICOS Objetivo: Conocer los cdigos numricos ms usuales y establecer sus campos de aplicacin. Despus de estudiar este capitulo, el alumno ser capaz de identificar los cdigos nmericos que requiere utilizar en un diseo especfico y seleccionar o disear los circuitos de conversin de cdigo requeridos.

TIPOS DE CODIGOS NUMERICOS BINARIOS Existe una gran variedad de cdigos numricos que se emplean en computadoras, calculadoras, transmisin de datos y dispositivos de medicin y control. A continuacin se muestran algunos de los cdigos ms usuales, agrupados segn su ponderacin:

*REGULARMENTE PONDERADOS: El peso ponderal de cada digito es funcin de la posicin del dgito con respecto al punto. Tomando los dgitos de derecha a izquierda, usualmente el primer digito est multiplicado por r 0 (el radio de la potencia cero), el segundo por r1, el siguiente por r2, etc.

Decimal 0 1 2 3 4 5 6 7 8 9 10 11

Binario 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011

Hexadecimal 0 1 2 3 4 5 6 7 8 9 A B

BCD8421 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 0001 0000 0001 0001

12 13 14 15

1100 1101 1110 1111

C D E F

0001 0010 0001 0011 0001 0100 0001 0101

*ARBITRARIAMENTE PONDERADOS: Diseados buscando que posean alguna caracterstica ventajosa en particular, por ejemplo los cdigos 2421, 5211 y EXCESO 3, son cdigos autocomplementados que facilitan las operaciones matemticas empleando complemento verdadero. En la tabla siguiente se muestran varios cdigos autocomplementados BCD (decimal codificado en binario). Por ser autocomplementados para obtener el complemento a nueve de un dgito cualquiera basta cambiar los ceros por unos y los unos por ceros.

CODIGOS BCD AUTOCOMPLEMENTADOS # 8421 Exceso 3 2421 5211 8 4 -2 -1

0 1 2 3 4

0000 0001 0010 0011 0100

0011 0100 0101 0110 0111

0000 0001 0010 0011 0100

0000 0001 0011 0110 0111

0 0 0 0 0

0 1 1 1 1

0 1 1 0 0

0 1 0 1 0

5 6 7 8 9

0101 0110 0111 1000 1001

1000 1001 1010 1011 1100

1011 1100 1101 1110 1111

1000 1001 1100 1110 1111

1 1 1 1 1

0 0 0 0 1

1 1 0 0 1

1 0 1 0 1

*NO PONDERADOS

No tienen valores ponderales posicionales. En ellos el agrupamiento de los n bits simboliza un nmero, aunque cada bit en lo particular no es representativo. Un ejemplo tpico de cdigos numricos no ponderados son los cdigos de prevencin de error tipo Gray en el cul solo cambia un bit al pasar de un valor dado al siguiente.

El cdigo Gray se utiliza principalmente para determinar el ngulo de giro de un dispositivo mecanico con respecto al origen para ello se asocia el eje del dispositivo un disco con zonas claras y obscuras cuyas combinaciones representan los elementos del cdigo Gray y mediante sensores pticos se lee la combinacin que corresponde a la posicin del eje. A este se le conoce usualmente como codificador absoluto de posicin (absolute encoder). Las figuras ilustran estos conceptos.

FALTAN IMAGNES DE LA PAGNIA 97

CAMBIAN VARIOS BITS AL PASAR DE UN NUMERO AL SIGUIENTE POR LO QUE PUEDE PRODUCIRSE ERROR.

SOLO CAMBIA UN BIT AL PASAR DE UN NUMERO AL SIGUIENTE.

La tabla siguiente muestra como podemos representar nmeros hexadecimales y decimales en Gray.

# decimal

Gray de 4 bits

Gray BCD exceso 3

0 1 2 3 4

0000 0001 0011 0010 0110 0 1

5 6 7 8 9. 10 11 12 13 14 15

0111 0101 0100 1100 1101 1111 1110 1010. 1011 1001 1000

2 3 4 5 6 7 8 9

Para convertir un nmero binario 8421 a Gray, se hace una o exclusiva del nmero contra una copia del mismo corrido una posicin a la derecha.

Ejemplo:

1111 + 01111 1000

1510

1010010 0101001 0

8210

GRAY

1111011

GRAY

Observe que el bit de la izquierda no se altera. Para pasar de Gray a 8421, se hace una o-exclusiva bit por bit de izquierda a derecha, de cada dgito del nmero Gray contra el digito previo del resultado. El primer bit del resultado es una copia del primer bit de Gray.

Ejemplo:

1 0 0 0

GRAY

1 1 1 1 0 1 1

GRAY

1 1 1 1

1510

1 0 1 0 0 1 0

8210

Otros cdigos no ponderados se emplean para representar caracteres alfanumricos, signos de puntuacin y smbolos grficos especiales. La tabla siguiente nuestra el cdigo ASCII (American Standard Code for Information Interchange) de 7 bits, que se utiliza profusamente en computadoras, procesadores de texto y manejadores de desplegados alfanumricos. Los primeros 31 caracteres no son imprimibles, son de control; el carcter 32 (20 hexadecimal) corresponde a un espacio en blanco. Hex 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F # $ % & ( ) * + . / ASC Hex 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F ASC 0 1 2 3 4 5 6 7 8 9 : ; < = > Hex 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F ASC @ A B C D E F G H I J K L M N O Hex 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F ASC P Q R S T U V W X Y Z [ \ ] ^ _ Hex 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F ASC ` a b c d e f g h i j k l m n o Hex 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F ~ ASC p q r s t u v w x y z { |

INDICADORES 7 SEGMENTOS.

El arreglo de 7 diodos emisores de luz (LEDs) mostrado en la figura permite exhibir los caracteres hexadecimales. Al encender algunos segmentos y apagar otros, se producen los distintos patrones para desplegar los diferentes dgitos. # 0 1 2 3 4 5 6 7 8 9 A B C D E F 0gfe 0011 0000 0101 0100 0110 0110 0111 0000 0111 0110 0111 0111 0011 0101 0111 0111 dcba 1111 0110 1011 1111 0110 1101 1101 0111 1111 0111 0111 1100 1001 1110 1001 0001 Hex 3F 06 5B 4F 66 6D 7D 07 7F 67 77 7C 39 5E 79 71

FALTAN IMAGENES De hecho, podemos considerar a la tabla anterior como un ejemplo de un cdigo binario no ponderado. Para manejar un indicador de siete segmentos se requiere un circuito con cuatro entradas y siete salidas que realice la conversin de cdigo.

Comercialmente se dispone de indicadores de 7 segmentos en dos configuraciones que son nodo y ctodo comn.

+V

a b c d e f g

a b c d e f g

nodo comn

ctodo comn

Dos convertidores de cdigo BCD a 7 segmentos muy frecuentemente usados son el 7447 (para indicadores de nodo comn) y el 7448 ( para indicadores de ctodo comn) A continuacin se presenta el diagrama lgico de un convertidor de cdigo BCD a 7 segmentos.

CODIFICADORES.

Para introducir informacin a un circuito lgico usualmente se emplea un teclado. Al oprimir cada tecla se cierra el interruptor de la posicin correspondiente y entrega una informacin que debe ser convertida al cdigo binario, para que el sistema la interprete, es decir requiere ser codificada.

Un codificador tiene M lneas de entrada y N lneas de salida (donde N<= 2 M). Al activar una lnea de entrada el codificador produce el cdigo de salida correspondiente a esa entrada.

1 4 7

2 5 8 0

3 6 9 CIRCUITO LOGICO

SALIDA BINARIA

Comercialmente hay una amplia variedad de codificadores de teclado, tanto decimales como hexadecimales y alfanumricos (ASCII). El siguiente circuito corresponde a un codificador decimal a BCD (74C922). T 0 1 2 3 4 5 6 7 8 9 8 0 0 0 0 0 0 0 0 1 1 4 0 0 0 0 1 1 1 1 0 0 2 0 0 1 1 0 0 1 1 0 0 1 0 1 0 1 0 1 0 1 0 1 FALTAN IMGENES PAG. 101

DECODIFICADORES.

Un decodificador es un circuito que tiene N lneas de entrada y M lneas de salida (donde N<=2 M). Al introducir un cdigo de entrada se activa una sola lnea de salida. El circuito siguiente, corresponde a un decodificador de binario puro (4 lneas de entrada) a hexadecimal (16 lneas de salida).

Para tener una idea de cuantos cdigos intervienen en un mismo diseo de un circuito digital, consideremos por un momento el diseo de una bscula de supermercado. En ella el mecanismo de pesaje ocasiona el giro de un eje, que tiene acoplado un disco codificado en Gray. El valor del nmero Gray obtenido corresponde al peso del artculo en cuestin. El dependiente debe introducir el precio en kilogramo de dicho artculo, utilizando un teclado decimal. El circuito digital debe multiplicar peso por precio para determinar el costo y desplegarlo en indicadores de siete segmentos. Para esto se realizan las siguientes operaciones:

1- Leer peso, en cdigo Gray 2- Leer precio, en cdigo BCD 3- Convertir peso al cdigo binario(conversin de Gray a binario) 4- Convertir precio al cdigo binario (conversin de BCD a binario) 5- Multiplicar peso por precio (en binario) para obtener el costo del artculo

6- Convertir costo de binario a BCD 7- Convertir de BCD a 7 segmentos para mostrar el resultado

PRECIO

PESO

COSTO

1 4 7

2 5 8 0

3 6 9 BASCULA ELECTRONICA 3 8 5 0

CODIGOS DE DETECCIN DE ERROR SIMPLE

Siempre que transmitimos informacin a distancia existe la posibilidad de que se introduzca ruido a la informacin que altere uno o varios bits. Dependiendo del tipo de informacin transmitida puede ser suficiente el conocer que un dato contiene un bit de error y descartarlo, o bien puede ser necesario detectar y corregir el error o pedir que se retransmita la informacin. Por ejemplo si estamos transmitiendo mediciones de temperatura ambiente, al detectar que un dato contiene error, podemos descartarlo y substituirlo por el valor de la medicin anterior. Otro es el caso cuando se transmite informacin correspondiente a depsitos bancarios, cada dato es nico y debe ser correcto, si se detecta error deber ser corregido de inmediato.

8421 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111

p 0 RUIDO 1 ELECTRICO 1 0 TRANSMISO RECEPTOR 1 R LINEA 0 0 1 1 0 A los bits de informacin se agrega un bit adicional para obtener un nmero 0 par de unos (paridad par). 1 0 Al recibirse la informacin se comprueba que la paridad sea correcta antes de 1 aceptar como valido un dato. 1 0

GENERADOR DE PARIDAD PAR.

La comprobacin de paridad par de un grupo de 4 bits se obtiene efectuando la o-exclusiva de las cuatro entradas consideradas, como veremos a continuacin

# 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

ABCD 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111

P 0 1 1 0 1 0 0 1 1 0 0 1 0 1 1 0

A B ( C D)
FALTA IMAGEN PAG 104

A B ( C D)

A B (C D)

A B (C D)

P = A B C D

PARIDAD CRUZADA. Esta tcnica permite detectar si un bit en particular es falso, a fin de corregir el error. Considere un grupo de cuatro palabras de datos de cuatro bits cada una, por ejemplo 1011, 1110, 1001 y 1111. A cada una de las palabras les podemos agregar un quinto bit de paridad par y formar finalmente una quinta palabra (de 5 bits), que proporciona la paridad par para cada columna. Considere la figura siguiente, en la cul aparecen los bits de informacin sin enmarcar y los bits de paridad enmarcados. TRANSMISION 1 1 1 1 0 0 1 0 1 1 1 1 0 1 1 1 0 1 1 1 1 1 1 0 0 1 1 1 1 0 RECEPCIN 0 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 0 0 0

Al recibirse el mensaje se comprueba la paridad de cada rengln y cada columna, si hay error se sabe en que rengln en que columna permitiendo identificar el bit falso.

CODIGO DE CORRECCION DE ERROR SIMPLE.

El ms antiguo de los cdigos de correccin de error simple es el cdigo de Hamming, el cul permite detectar que existe un error y la posicin del mismo. CODIGO HAMING. Consiste en 4 bits de informacin y 3 de paridad dispues en el orden 84E1DB donde el bit: E establece paridad par para las posiciones 8, 4 y 2. D establece paridad par para las posiciones 8, 4 y 1. B establece paridad par para las posiciones 8, 2 y 1.

Ejemplo: Informacin = 1001

FALTA IMAGEN PAG 105 (ES MAS FACTIBLE)

Supngase que se transmite el dato 1001100 pero se recibe 1001000, al hacer las tres comprobaciones de paridad se tiene o siguiente:

Error en el bit 0112 (o sea en el bit 3 de derecha a izquierda)

Realizado en el orden mostrado las comprobaciones de paridad, obtenemos el nmero binario que nos indica la posicin del bit errneo. Dicho nmero es cero si no existe error, uno si est en la primera posicin de derecha a izquierda, dos si est en la segunda, siete si est en la ltima posicin. Conociendo cul es el bit de error basta negarlo para obtener el resultado correcto. En el ejemplo mostrado podemos deducir la posicin del bit de error empleando la teora de los conjuntos.

Conjunto universal = (8, 4, 2, E, 1, D, B) Subconjunto X = (8, 4, 2, E) no contiene al bit de error, por lo que su complemento si lo contiene.

Subconjunto X = (1, D, B) si contiene al bit de error Subconjunto X = (8, 4, 1, D) si contiene al bit de error Subconjunto Z = (8, 2, 1, B) si contiene al bit de error

El error es la interseccin de X, Y, Z, o sea 1, por lo que debemos cambiar el bit correspondiente a esa columna (la tercera de derecha a izquierda), obteniendo como resultado 1001100, que es el dato que se transmiti originalmente. Existen otros esquemas ms poderosos y complejos para detectar y corregir errores mltiples, destacando entre ellos los Cdigos de Redundancia Cclica (CRC).

CODIFICADOR DE PRIORIDAD.

El codificador de prioridad es un circuito muy til, que nos indica el nmero correspondiente a la entrada de mayor prioridad. Se emplean en computadoras para atender las peticiones de interrupcin conforme a un orden jerrquico. Podramos utilizarlo junto con un sencillo arreglo de comparadores a la entrada para implementar un medidor de voltaje muy simple que convierta una entrada analgica en digital. Consulte en el manual TTL el diagrama funcional del 74LS348 que es un codificador de prioridad de 8 lneas de entrada con salidas de 3 estados.

TERMINOS CLAVE

PESO PONDERAL CODIGOS REGULARMENTE PONDERADOS CODIGOS ARBITRARIAMENTE PONDERADOS CODIGOS NO PONDERADOS BCD EXCESO 3 8421 GRAY CODIGOS AUTOCOMPLEMENTADOS CODIFICADORES DECODIFICADORES INDICADORES DE 7 SEGMENTOS DETECCION DE ERROR PREVENCION DE ERROR CORRECCION DE ERROR GENERADOR DE PARIDAD PARIDAD CRUZADA HAMMING CODIFICADOR DE PRIORIDAD

CUESTIONARIO

1- Qu entiende usted por peso ponderal? 2- Indique como se clasifican los cdigos numricos segn la ponderacin de sus dgitos. 3- En que se aplica el cdigo Gray?

4- Cul es el procedimiento a seguir para pasar de Binario a Gray y cul para pasar de Gray a Binario? 5- Qu es un codificador? 6- Qu es un decodificador? 7- Qu es un circuito de conversin de cdigo? 8- Para que sirven los indicadores de 7 segmentos? 9- Cmo podemos detectar si un bit cambi por error en una transmisin? 10- Cmo podemos corregir automticamente un bit de error en una transmisin?

PRACTICA IV

1.- Disear, construir y probar los siguientes circuitos: (a) Convertidor de binario a Gray. (b) Convertidor de cdigo 8421 BCD a 2421 BCD. (c) Comparador de Magnitud. (d) Generador de Paridad Par.

2.- Seleccione en el manual TTL o CMOS un decodificador de BCD a 7 segmentos y verifique su funcionamiento, introduciendo manualmente las entradas BCD.

3.- Seleccione un codificador que convierta la informacin introducida mediante un teclado decimal a informacin binaria y compruebe experimentalmente su funcionamiento.

4.- Seleccione y pruebe una unidad aritmtica y lgica de cuatro bits de palabra. (opcional)

CAPITULO VII

VERIFICACION COMPUTACIONAL DE CIRCUITOS LOGICOS

En el capitulo IV utilizamos un programa computacional, denominado TABHG, para generar una lista de minitrminos correspondientes a una ecuacin booleana. Con ello podemos verificar si es correcta la lgica de nuestros diseos, comparando el resultado obtenido con la tabla de verdad de la que partimos. Sin embargo al crecer el nmero de variables de entrada, el trabajar con todas las posibles combinaciones de la tabla de verdad deja de ser prctico. Uno de los diseos del capitulo previo tiene 11 entradas, le corresponde una tabla de verdad de 2048 renglones que son aproximadamente 40 pginas. Para un diseo que involucre 16 variables de entrada, corresponden 65536 renglones, o sean mas de 1300 pginas, cantidad totalmente inimaginable. Puede resultarnos entonces mas interesante trabajar slo algunas combinaciones de entrada, que sean representativas de todos los casos posibles. Al verificar los resultados obtenidos en esta prueba selectiva tendremos ms rpidamente una idea clara del funcionamiento del circuito, que si nos pusiramos a analizar el total de renglones de la tabla de verdad. Al grupo de valores de entrada que nosotros seleccionamos para comprobar si el circuito opera o no correctamente, se le denomina vectores de prueba. Por ejemplo, la unidad aritmtica del capitulo V puede realizar suma, Resta, Incremento, Decremento y Transferencia, dependiendo de la combinacin de valores de las entradas de control. Podemos elegir vectores de prueba que nos permita verificar los siguientes casos:

(a)- Suma sin acarreo de salida (b)- Suma con acarreo de salida (c)- Resta con minuendo mayor que sustraendo (d)- Resta con minuendo menor que sustraendo (e)- Incremento de un nmero menor que el mximo (f)- Incremento de un nmero igual al mximo (g)- Decremento de un nmero mayor que el mnimo (h)- Decremento de un nmero igual al mnimo (i)- Transferir un nmero a la salida

( 0011 + 0101 ) ( 1110 + 0101 ) ( 1110 - 0101 ) ( 0011 - 0101 ) ( 0101 ( 0101 ( 0101 ( 0101 ( 0101 ) ) ) ) )

Todos los paquetes comerciales de simulacin de circuitos digitales, permiten manejar vectores de prueba, aunque por lo general son relativamente caros y por lo mismo inaccesibles en nuestras escuelas. Pero si conocemos al menos un lenguaje de programacin estructurada, fcilmente podemos hacer pequeos programas que nos permitan verificar la lgica de nuestros diseos. Los nuevos programas de estudio contemplan cursos de programacin desde Secundaria, con refuerzo en Bachillerato. Si Usted no sabe programar aun, conviene que consulte las referencias bibliogrficas que aparecen en el apndice, para que pueda interpretar la operacin de los programas dados como ejemplo y poco a poco sea capaz de disear sus propios programas. Utilizaremos el lenguaje de programacin estructurada QuickBASIC, una de las caractersticas de este lenguaje, que resulta ventajosa para nuestros propsitos, es el que admite el uso de mdulos o procedimientos. Los mdulos de programa manejan variables locales y podemos emplearlos con solo cuidar el adecuado paso de parmetros entre ellos. Esto nos permite trabajar con facilidad redes iterativas; formadas por bloques que se repiten varias veces en un mismo diseo de un circuito lgico. En este lenguaje existen las operaciones lgicas Y (AND), O (OR), O-Exclusiva (XOR) y negacin (NOT). Manejaremos variables definidas como enteros cortos de 16 bits, de los cuales realmente slo utilizaremos el ltimo bit. Veamos primero cmo simular la unidad aritmtica del capitulo V. Hay dos bloques bsicos con los que debemos trabajar, el simulador completo y el modificador del operando B. Sus ecuaciones son: Sumador completo Suma = A + B + Cent Acarreo = A * B + A * Cent + B * Cent Modificador de B Bmod = B * N + B * M

Cada uno de estos bloques lo manejaremos como un mdulo de programa, que en este caso podemos codificar as: SUB Sumador (A, B, C, Suma, Acarreo) Suma = A XOR B XOR C Acarreo = (A AND B) OR (A AND C) OR (B AND C) END SUB Podemos ver a estos subprogramas como bloques constructivos con varias entradas y salidas. Armar el circuito corresponde a interconectar adecuadamente esos mdulos, para que se realice adecuadamente el paso de los parmetros y cada entrada reciba la informacin que requiere. Al llamar a un subprograma debemos dar su nombre y una lista ordenada de las variables con las que se va a trabajar, que contienen los datos de entrada al mdulo y los resultados de salida. Podemos cambiar los nombres de las variables cuando hacemos el paso de parmetros, pero debemos respetar el tipo y el nmero de variables del subprograma.

El diagrama a bloques propuesto es el siguiente:

B3 A3 mod F3 Sumador completo Csal S3 Sumador completo M N A2

B2 A1 mod F2 M N

B1 A0 mod F1 Sumador completo Sumador completo M N

B0

mod F0

M N

C2

C1

C0

Cent

S2

S1

S0

La seccin de programa correspondiente al diagrama a bloques es:

CALL Modificador (B0, M, N, F0) CALL Sumador (A0, F0, Cent, S0, C0) CALL Modificador (B1, M, N, F1) CALL Sumador (A1, F1, C0, S1, C1) CALL Modificador (B2, M, N, F2) CALL Sumador (A2, F2, C1, S2, C2) CALL Modificador (B3, M, N, F3) CALL Sumador (A3, F3, C2, S3, C3) Es importante respetar el orden propuesto en las anteriores lneas de programa, dado que algunas variables de entrada a un bloque son salidas de un bloque anterior, que deber evaluarse primero. El resto del programa es muy simple y corresponde a introducir los datos con instrucciones INPUT y a imprimir los resultados en pantalla con PRINT. Para tener una salida impresa en papel, podemos cambiar las instrucciones PRINT por LPRINT. Recordemos que los cdigos de control (variables C, M, N) de esta unidad aritmtica son:

001 110 100 011 000

suma resta incremento decremento transferencia

El listado completo del programa aparece en el apndice C y una corrida de prueba se muestra a continuacin:

Unidad Aritmetica

C 0 0 1 1 1 1 0 0 0 0 0

M 0 0 1 1 0 0 1 1 0 0 0

N 1 1 0 0 0 0 1 1 0 0 0

A3 0 1 1 0 1 1 1 0 1 0 1

A2 0 1 1 0 1 1 1 0 1 0 1

A1 1 0 0 1 0 1 0 0 0 1 1

A0 1 1 1 1 1 1 1 0 1 1 1

B3 0 0 0 0 0 0 0 0 0 0 0

B2 1 1 1 1 1 1 1 1 1 1 1

B1 0 0 0 0 0 0 0 0 0 0 0

B0 1 1 1 1 1 1 1 1 1 1 1

Csal 0 1 1 0 0 1 1 0 0 0 0

S3 1 0 1 1 1 0 1 1 1 0 1

S2 0 0 0 1 1 0 1 1 1 0 1

S1 0 1 0 1 1 0 0 1 0 1 1

S0 0 0 0 0 0 0 0 1 1 1 1

Veamos ahora un segundo ejemplo de un programa que simule el comportamiento de un circuito lgico, ene este caso se trata del comparador de magnitud visto en el capitulo V.

Al bloque bsico le llegan las seales siguientes: Ient (vale 1 si los bits que se compararon previamente fueron iguales) Ment (vale 1 si en los bits previos A fue mayor que B) X,Y (valores de los bits de datos de esa columna)

Las seales que salen del bloque bsico son: Isal (vale 1 si para los bits comparados A=B) Msal (vale 1 si para los bits comparados A>B)

Las ecuaciones que corresponden a este circuito son: Isal = Ient ( X * Y + X * Y ) Msal = Ment + Ient * ( X * Y )

El subprograma que define a este bloque de circuito es:

SUB Comparador (Ie, Me, X, Y, Isal, Msal)

Igual si los bits anteriores fueron iguales y ahora el bit X es igual a Y Isal = Ie AND ((X AND Y) OR (NOT X AND NOT Y))

El diagrama a bloques del circuito propuesto es el siguiente

X3 1 0 Ie Me

Y3 I3 M3

X2

Y2 I2 M2

X1

Y3 I1 M1

X0

Y0 I0 M0

La seccin de programa que corresponde a este circuito es la siguiente: Efectuar la lgica CALL Comparador (Ie, Me, X3, Y3, I3, M3) CALL Comparador (I3, M3, X2, Y2, I2, M2) CALL Comparador (I2, M2, X1, Y1, I1, M1) CALL Comparador (I1, M1, X0, Y0, I0, M0)

Como en el ejemplo anterior, es importante respetar el orden propuesto en las anteriores lneas de programa, dado que algunas variables de entrada a un bloque son salidas de un bloque anterior, que deber evaluarse primero.

El listado completo del programa aparece en el apndice C y una corrida de prueba se mestra a continuacin: Comparador de magnitud ( I = 1 si X = Y, M = 1 si X > Y) X3 1 1 1 X2 0 0 0 X1 1 1 1 X0 0 0 0 Y3 0 1 1 Y2 1 0 1 Y1 1 1 1 Y0 1 0 1 I 0 1 0 M 1 0 0

El tercer y ltimo ejemplo de programas que simulan un circuito especifico, es un convertidor de un nmero binario a BCD. Antes de plantearlo, veamos someramente en que consiste el procedimiento en cuestin. Considere que la expresin siguiente representa a un nmero binario: [b5 b4 b3 b2 b1 b0] = b5 * 25 + b4 * 24 + b3 * 23 + b2 * 22 + b1 * 21 + b0 = (((((((b5 * 2) + b4) * 2) + b3) * 2) + b1) * 2) + b0

Supongamos que el nmero binario que deseamos convertir es 101011, conforme a la relacin anterior dicho nmero vale: 1 1*2=2 (2+0)=2 2*2=4 (4+1)=5 5*2=10 (10+0)=10 10*2=20 (20+1)=21 21*2=42 (42+1)=43 En aritmtica decimal correr el punto una posicin a la izquierda, equivale a multiplicarlo por 10 (el corrimiento a la izquierda equivale a dividirlo entre 10). En aritmtica binaria, o sea base 2, correr el punto una posicin izquierda equivale a multiplicarlo por 2 (el corrimiento a la izquierda equivale a dividirlo entre 2). El algoritmo para multiplicar un nmero entero BCD por 2, consiste en probar cada grupo de cuatro bits ( que corresponde a un digito decimal) y si el valor est entre cero y cuatro hacerle solo un corrimiento a la izquierda; pero si el valor est entre cinco y nueve, sumarle tres unidades y luego hacerle el corrimiento a la izquierda. Emplearemos este algoritmo para trabajar el nmero binario 101011 Decimal 1 2 5 8 10 21 43 BCD: 1 10 101 1000 1 0000 10 0001 100 0011 Binario: 101011 01011 1011 011 11 1

nmero original corrimiento corrimiento corrimiento Ajustar sumando 3 corrimiento corrimiento resultado

Si compara los resultados de esta tabla contra los obtenidos previamente, al convertir con el mtodo tradicional de binario a decimal, ver que son los mismos y que solo se ha adaptado el mtodo para poderlo realizar como un circuito digital.

Ejemplo. Disee un bloque lgico con cuatro entradas (X3 X2 X1 X0) y cuatro salidas (Y3 Y2 Y1 Y0) correspondientes a los nmeros BCD de 4 bits, tales que:

Y=X Y=X+3

para valores de X entre cero y cuatro para valores de X entre cinco y nuve

El valor de la entrada X nunca ser mayor de nueve.

La tabla de verdad correspondiente a dicho bloque lgico es: X3 0 0 0 0 0 0 0 0 1 1 * * * * * * X2 0 0 0 0 1 1 1 1 0 0 * * * * * * X1 0 0 1 1 0 0 1 1 0 0 * * * * * * X0 0 1 0 1 0 1 0 1 0 1 * * * * * * Y3 0 0 0 0 0 1 1 1 1 1 * * * * * * Y2 0 0 0 0 1 0 0 0 0 1 * * * * * * Y1 0 0 1 1 0 0 0 1 1 0 * * * * * * Y0 0 1 0 1 0 0 1 0 1 0 * * * * * *

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

Las ecuaciones resultantes son: Y3 = X3 + X2 * X0 + X2 * X1 Y2 = X2 * X1 * X0 + X3 * X0 Y1 = X3 * X0 + X1 * X0 + X2 * X1 Y0 = X3 * X0 + X2 * X1 * X0 + X3 * X2 * X0

El subprograma correspondiente a este bloque lgico es:

SUB bloque (x3, x2, x1, x0, y3, y2, y1, y0) y3 = x3 OR (x2 AND x0) OR (x2 AND x1) y2 = x2 AND (NOT x1) AND (NOT x0) OR (x3 AND x0) y1 = x3 AND (NOT x0) OR (x1 AND x0) OR ((NOT x2) AND x1) y0 = (X3 AND NOT x0) OR (x2 AND x1 AND NOT x0) OR (NOT x3 AND NOT x2 AND X0) END SUB

Usando dicho bloque lgico podemos armar convertidores de cdigo binario a BCD como el siguiente:

B6 B5 B4 B3 X3 X2 X1 X0 Y3 Y2 Y1 Y0

B2

B1

B0

X3 X2 X1 X0 Y3 Y2 Y1 Y0 X3 X2 X1 X0 Y3 Y2 Y1 Y0 D3 D2 D1 D0 U 3 U 2 U1 D0

La seccin de programa que corresponde a este montaje es la siguiente: B6 = 0 U0 = B0 D3 = 0 CALL bloque (0, B5, B4, B3, D2, a, b, c) CALL bloque (a, b, c, B2, D1, d, e, f) CALL bloque (d, e, f, B1, D0, U3, U2, U1)

El listado completo de este programa aparece en el apndice C. A continuacin se proporciona una corrida de prueba para juegos de datos de entrada elegidos arbitrariamente:

Convertidor binario a BCD binario B3 B2 1 1 1 0 1 1 1 0 0 0 1 0 decenas D2 D1 1 1 1 1 0 1 1 0 0 0 0 0 unidades U2 U1 0 0 0 0 1 0 1 1 0 0 0 1

B5 1 1 1 1 0 1

B4 1 0 0 1 0 0

B1 1 1 0 0 1 1

B0 1 0 0 1 1 1

D3 0 0 0 0 0 0

D0 0 0 0 0 1 0

U3 0 0 0 1 0 0

U0 1 0 0 1 1 1

PRACTICA V.

1 Verifique computacionalmente los ejemplos presentados ene este captulo:

(a) Unidad aritmtica (b) Comparador de magnitud (c) Convertidor de binario a BCD

2 Disee los siguientes convertidores de cdigo y verifique computacionalmente su operacin:

(d) Binario a Gray (e) Gray a Binario (f) BCD a 7 segmentos

3 Disee los siguientes circuitos y verifique computacionalmente su operacin: (opcional)

(g) Generador de cdigo Hamming para datos de 4 bits (h) Corrector de error simple en cdigo Hamming de 7 bits

4 Un algoritmo para obtener el complemento verdadero de un nmero binario es: Proceda de derecha a izquierda a copiar los bits del numero original, hasta el primer uno inclusive. Los bits restantes antelos negados (cambiando ceros por unos y unos por ceros). Disee un bloque bsico que cumpla con este algoritmo y utilcelo en un circuito digital que obtenga el complemento verdadero de un nmero binario de ocho bits. Verifique computacionalmente su correcta operacin.

CAPITULO VIII

FAMILIAS LGICAS E INTERFACES OBJETIVO CONOCER LAS PRINCIPALES CARACTERISTICAS ELECTRICAS DE LAS DIVERSAS FAMILIAS DE DISPOSITIVOS DIGITALES. CONOCER COMO INTERFAZAR DISPOSITIVOS DE DIVERSAS FAMILIAS ENTRE SI Y CON ELEMENTOS EXTERNOS (SENSORES Y ACTUADORES)

CARACTERISTICAS GENERALES DE LAS PRINCIPALES FAMILIAS LOGICAS (a) Familias que emplean transistores bipolares:

RLT Resistor-Transistor-Logic, esta familia requiere de una alimentacin no regulada de 3 volts, el tiempo de propagacin por compuerta es de 50 nanosegundos y la disipacin por compuerta es de 10 miliwatts. Su margen de ruido es bajo siendo de 0.2 volts (obsoleta). DTL Diode-Transistor-Logic, emplea una alimentacin de 5 V, el tiempo de propagacin es de 25 nanosegundos por compuerta y la disipacin es de 15 miliwatts por compuerta, tiene un margen de ruido bajo (obsoleta). TTL Transistor-Transistor-Logic, esta familia es la principal y la ms ampliamente usada en circuitos digitales de mediana y baja densidad de integracin. Requiere de una fuente de alimentacin regulada de 5 volts y tiene un margen de ruido de 0.4 volts. Las principales variantes de esta familia son las siguientes: TTL estndar (serie 54/74___ ), la cul tiene un retraso de propagacin por compuerta de 10 nanosegundos y una disipacin por compuerta de 10 miliwatts. TTL alta velocidad ( serie 54/74H___ ), con un retraso de propagacin tpico de 6 nanosegundos y un consumo de 22 miliwatts por compuerta ( obsoleta ). TTL bajo consumo ( 54/74L___ ), la cul disipa solo un miliwatt por compuerta y tiene un retraso de propagacin de 33 nanosegundos por compuerta ( obsoleta ). TTL schottley ( serie 54/74S___ ), la cul tiene un retraso de propagacin de solo 3 nanosegundos por compuerta y un consumo de 19 miliwatts por compuerta. TTL schottley de bajo consumo (serie 54/74LS___ ), con un consumo tpico de solo 2 miliwatts por compuerta y un retraso de propagacin de 9.5 nanosegundos por compuerta. CTL Complemetary-Transistor-Logic, la cual tiene un retraso de propagacin de 5 nanosegundos y un consumo promedio por compuerta de 50 nanowatts.

ECL Emitter-Coupled-Logic, tambin designada CML (Current Mode Logic), CSL (Current-SteeringLogic) lgica de control de corriente o lgica no saturada. Es la ms rpida de las familias disponibles comercialmente, pudiendo operar a frecuencias del orden de 500 Megahertz. Es muy sensible al ruido producido por pulsos reflejados. Su retraso de propagacin promedio es de solo 0.3 nanosegundos y el consumo es de 60 miliwatts por compuerta. IIL Integrated Injection Logic, la principal ventaja de esta familia bipolar es que permite una alta densidad de integracin, similar a dispositivos MOS, y tambin un bajo consumo de potencia. El retardo de propagacin promedio es de 40 nanosegundos por compuerta y disipacin de potencia es menor de 1 miliwatt por compuerta.

(b) Familias que emplean transistores de efecto de campo:

MOS Metal Oxide Semiconductor Field Effect Transistor, emplean transistores de efecto de campo tienen las ventajas de mayor facilidad de fabricacin, tamao mas pequeo (1/50 de transistores bipolares) y muy baja disipacin de potencia. Las desventajas son: baja velocidad de respuesta, mayor delicadeza y poca capacidad de manejo de corriente. PMOS P-Channel-MOS requiere slo la tercera parte de los pasos necesarios de produccin que su contraparte con transistores bipolares estndar de doble difusin. NMOS N-Channel-MOS permite el doble de densidad de integracin que los PMOS, adems de ser casi dos veces ms rpidos debido a que en NMOS, los portadores de carga son los electrones libres (mientras que en los PMOS los portadores de carga son los huecos que son mas lentos). Tienen un tiempo de propagacin promedio de decenas de nanosegundos y consumen menos de 1 miliwatt. HMOS Hihg-Density-MOS los cuales permiten una muy alta densidad de integracin. CMOS Complementary-MOS que en el mismo integrado emplean transistores MOS de canal P y de canal N, en simetra complementaria, por lo que su densidad de integracin se reduce. Tiene por ventaja mayor velocidad y menor disipacin de potencia. El retraso de propagacin por compuerta es del orden de 30 nanosegundos y el consumo de potencia es del orden de 0.05 microwatts. El margen de ruido es de aproximadamente 45% de Vcc. SOSMOS Silicon-On-Shapire-MOS, emplean un sustrato aislante en lugar del sustrato semiconductor tradicional, con lo que logran frecuencias mayores de 50 Megahertz con un consumo de potencia del orden de 1 nanowatt. Los dispositivos TTL son bastante robustos elctricamente, lo que los hace los ms adecuados para quien se inicia en el manejo y diseo de circuitos digitales. Los dispositivos MOS son mas susceptibles a daos elctricos, y en algunos casos incluso podemos daarlos con solo tocarlos; debido a la electricidad esttica que en ocasiones acumulamos; pero son mas econmicos de fabricar y admiten una mayor densidad de integracin que los TTL, la razn por la cul son los preferidos por los diseadores profesionales. De echo las actuales computadoras personales, las calculadoras electrnicas, los instrumentos digitales de medicin y control, los juegos de video y otros muchos productos utilizan tecnologa CMOS.

Algunos fabricantes comienzan a ofrecer dispositivos lgicos BiCMOS, para tener lo mejor de ambas familias. Estos dispositivos emplean en las etapas de entrada y salida transistores bipolares convencionales (como los que utiliza TTL) y en la etapa intermedia emplean transistores de efecto de campo. Con esto obtienen tanto la alta densidad de integracin y el bajo consumo de energa, caractersticas de CMOS, con la robustez elctrica de caracterstica de TTL.

CARACTERISTICAS DISTINTAS VELOCIDAD DE PROPAGACIN, es la velocidad con la que responde una compuerta lgica simple. Esta directamente relacionada con la frecuencia mxima de operacin. DISIPACIN DE POTENCIA, est relacionada tanto con las caractersticas de la fuente de alimentacin como con el calor generado por la componente. NIVELES LOGICOS DE VOLTAJE, indican los rangos de voltaje que se reconocern como ceros o unos lgicos a las entradas o que se proporcionarn a las salidas.

Vcc Voh Vih Vil Vol UNO Margen de ruido Indeterminado Margen de ruido CERO Voltaje de salida alta Voltaje alta de entrada

Voltaje de salida baja Voltaje de entrada baja

MARGEN DE RUIDO, es la diferencia entre el peor caso de un voltaje de salida y el peor caso de un voltaje de entrada. NUMERO MAXIMO DE ENTRADAS POR COMPUERTA (FAN-IN), corresponde al mayor nmero de entradas que puede tener una compuerta.

Vcc

El nmero mximo de entradas Por compuerta depende de la tecnologa de fabricacin empleada. En la figura las entradas son los emisores de un mismo

A B C

transistor bipolar.

FACTOR DE CARGA (FAN-OUT), es el nmero mximo de entradas diferentes que puede manejar confiablemente una salida.

Las siguientes tablas nos muestran las caractersticas distintivas de las diversas familias:

Familia TCL TTL LS MOS CMOS

Tiempo de propagacin ns 1 10 3 50 30

Frecuencia MHz 500 35 35 10* 10

Potencia disipada mW 50 20 2 0.4 0.0001

Margen de ruido V 0.4 0.4 0.4 2 10%Vdd

Densidad de integracin Alta Baja Media Muy alta alta

*Los valores mostrados en la tabla son considerados tpicos para las diversas familias, pero no deben tomarse como limitativos. De hecho las actuales computadoras personales, con elementos de la familia MOS, operan con frecuencias hasta de 40 megahertz y se espera llevarlas hasta 100 megahertz es esta dcada.

Al citar densidades de integracin, nos referimos a lo siguiente: Clasificacin: Pequea Mediana Alta Muy alta Muy muy alta Nmero de compuertas 1 a 10 10 a 100 100 a 1000 1000 a 10 000 10 000 o ms Nmero de transistores 1 a 100 100 a 1000 1000 a 10 000 10 000 a 100 000 100 000 o ms

Actualmente se han desarrollado integrados MOS, con ms de cuatro millones de transistores. Hay ms de 15 000 tipos diferentes de circuitos integrados digitales disponibles al diseador.

USO DE INTEGRADOS TTLL Los fabricantes de circuitos integrados TTL, garantizan que una salida en alto (nivel lgico uno) tendr un voltaje mayor de 2.4 volts. Puesto que el voltaje cae al recorrer una trayectoria resistiva (como la que une a una salida con la entrada de otra compuerta), el fabricante garantiza que sus integrados reconocern como uno lgico a entradas mayores de 2 volts. Similarmente para una salida en bajo (nivel lgico cero), el fabricante garantiza que sus integrados presentan un voltaje de 0.4 volts o menor. Tambin garantiza que sus integrados reconocern como cero lgico a voltajes inferiores a 0.8 volts.

5V 2.4 2 0.8 0.4 0 CERO UNO

Vcc Voh Vih Vil Vol

REGLAS A SEGUIR AL EMPLEAR TTL:

1.- Mantener Vcc en el rango de 5 0.25 volts. 2.- Usar alambres de conexin cortos y gruesos. 3.- Reducir ruidos que se propagan por la lnea, insertando capacitores de 0.01 F entre Vcc y tierra, cada 6 integrados. 4.- Evite dejar entradas flotando. 5.- Conecte las entradas no utilizadas, de manera que no se altere la lgica (por ejemplo compuertas Y a +Vcc y compuertas O a tierra) 6.- evite sobrecalentar al soldar. Utilice cautines de estacin de temperatura controlada y soldadura de 1 mm de dimetro con aleacin 40/60.

CARACTERISTICAS ELECTRICAS TTL NIVELES DE VOLTAJE Vol voltaje salida baja Voh voltaje salida alta Vil voltaje entrada baja Vih voltaje entrada alta ABSORCIN DE CORRIENTE Cuando una salida TTL est en nivel bajo, recibe corriente de entradas conectadas a ella, como se muestra en la figura. mnimo 2.4 2.0 tpico 0.1 3.6 mximo 0.4 0.8 -

5V

5V

Q3

Q1 -1.6 mA

Q2

1IL

Por lo contrario cuando la salida a TTL es alta, se suministra corriente desde Q3 hacia los emisores de las entradas conectadas (corrientes de fuga en polarizacin inversa). I = 40 A Como la corriente tpica que una salida puede absorber es IOL = 16 mA, se tiene que una salida TTL puede ser conectada sin problemas hasta 10 entradas TTL. (FAN OUT = 10)

Los siguientes diagramas corresponden a compuertas NO-Y de la familia TTL y nos ilustran la diferencia entre salida estndar y salida de colector abierto.

Vcc = +5V Salida TTL estndar *Permite transiciones rpidas Q4 Q1 Q2 *Maneja corrientes de salida hasta 16 miliamperes

*No es valido conectar varias Salidas a una lnea comn (bus)

Q2

Q3 Salida de colector abierto

+5V

*Transiciones lentas *Maneja mayor corriente de salida

Q1

*Permite conectar varias salidas en paralelo *Requiere resistor externo de polarizacin Q3

CONEXIONES DE VARIAS SALIDAS A UNA LNEA COMN:

En muchos diseos se requiere conectar varias salidas a una lnea comn (bus), permitiendo el cambio de valor de una sola salida (que denominamos habilitada) y manteniendo fijo los valores de las otras salidas (que denominamos deshabilitadas).

En salida TTL estndar, para lograr esto se requiere realizarlo que se conoce como aislamiento por diodos (usando un diodo de conmutacin por cada salida), armando en forma discreta una compuerta O.

Aislamiento por diodos

Aislamiento por colector abierto

Observe que en el caso de conectar a una lnea comn varias salidas de colector abierto, se obtiene un Y lgica. Si una salida individual vale cero, la salida final ser cero. Desventajas: *incrementa ruido en el sistema

Vcc
*disminuye frecuencia mxima de operacin *dificulta localizar fallas

A+B
A B

C+D
C

D E F

E+F

Dada las desventajas que presenta las compuertas de colector abierto atienden al desuso. Una solucin ms moderna y ventajosa al problema de conectar varias salidas en paralelo, lo representa la compuerta de tres estados, en la cul la salida adems de entregar un cero y un uno lgico, puede ser puesta en un estado de alta impedancia que correspondera a una desconexin del circuito.

Compuerta de 3 estados (0,1,alta Z)

Los dispositivos lgicos de tres estados emplean una terminal adicional de habilitacin o control. Cuando esta terminal tiene el nivel lgico correcto se comporta como cualquier dispositivo estndar de su familia lgica, cuando la terminal de control tiene el nivel lgico opuesto la salida del circuito asume una muy alta impedancia.

H S E H S

La manera de conectar compuertas de 3 estados a una lnea comn es la siguiente:

Las configuraciones tipo de compuertas bipolares y cmos con salidas de tres estados son:

INVERSOR CMOS

La familia lgica TTL emplea transistores bipolares controlados por corriente, mientras que las familias MOS emplean transistores de efecto de campo controlados por voltaje, que tienen la ventaja de tener consumos muy bajos de corriente y de presentar impedancia muy alta.

Los transistores de canal N, operan en condicin de saturacin al aplicarle un uno lgico a la compuerta, mientras que los transistores de canal P, operan en condicin de saturacin al aplicarle un cero lgico a la compuerta.

La siguiente figura muestra un arreglo de transistores de efecto de campo que corresponden a un inversor CMOS (la letra C indica que se emplean transistores complementarios de canal N y de canal P).
S g

P
d

Q1

E
g

N
S

Q2

Si la entrada es uno lgico, Q1 entra en corte (Roff = 1010 ohms) y Q2 en saturacin (Ron = 103 ohms) y la salida es de cero volts. Si la entrada vale cero lgico, Q1 se satura (Ron = 103 ohms) y Q2 se corta (Roff = 1010 ohms) y la salida es de +Vdd.

NIVELES DE VOLTAJE RECONOCIDOS COMO ENTRADAS.

Los dispositivos CMOS reconocen como cero lgico, a voltajes de entrada menores o iguales a 30% del voltaje de alimentacin y como uno lgico a entradas mayores o iguales al 70% de dicho voltaje. VIL = 30% de Vdd VIH = 70% de Vdd Cada entrada CMOS corresponde a una capacitancia del orden de 5 pF, lo cul limita el nmero de entradas que pueden conectarse a una salida (FAN OUT = 50). Al aumentar la frecuencia, se incrementa la corriente y potencia promedio demandadas de la fuente. Si una compuerta CMOS disipa 12 nanowatts a baja frecuencia, a 1 MHz consumir aproximadamente 1 miliwatt. La figura de la izquierda, muestra la circulacin de corriente en una salida CMOS que se encuentra en nivel lgico alto y la de la derecha la de la salida en bajo nivel.

+Vdd I = -10 pA

+Vdd

ROH

RL

RL

ROL

I = 10 pA

Corriente mxima proporcionada 0.25 mA para Vdd = 5 V 0.60 mA para Vdd = 10 V 1.80 mA para Vdd = 15 V

Corriente mxima drenada -0.8 mA para Vdd = 5 V -1.8 mA para Vdd = 10 V -3.6 mA para Vdd = 15 V

COMPUERTA TRANSMICIN BILATERAL CMOS. Permite transmitir informacin analgica o digital en ambos sentidos, comportndose de manera similar a un interruptor convencional. Su resistencia en corte es sumamente alta del orden de Gigaohms y su resistencia en saturacin es relativamente baja siendo del orden de decenas de ohms.

E/S
=

d g

Ron = 100 Roff = 1012 Voltaje pico de entrada = 7.50 V Distorsin de la seal = 0.40 % Corriente estacionaria = 0.01 nA

Podemos emplear a estas compuertas CMOS de transmisin bilateral como interruptores electrnicos.

USO DE INTEGRADOS CMOS Los integrados CMOS admiten voltajes de alimentacin en el rango de 3 a 15 volts, por lo que los niveles lgicos que reconocen como ceros o unos dependen del valor de la fuente de alimentacin.

+Vcc UNO

3 2 1

ANORMAL

REGLAS A SEGUIR

1.- Evite la electricidad esttica en su manejo. 2.- El voltaje de alimentacin puede ser cualquier valor dentro del rango de +3 a +15 V. 3.- Conecte la alimentacin del CMOS, antes de conectar una entrada del exterior. Desconecte la entrada antes de apagar al CMOS. 4.- Reduzca ruidos insertando capacitores de 0.1 F entre Vcc y tierra cada 6 integrados. 5.- Conecte las entradas no utilizadas de manera tal que no alteren la lgica. 6.- Considere las redes de proteccin interconstruidas en las entradas, para evitar daos por electricidad esttica. Pueden diferir segn sea el fabricante del integrado, por lo que se recomienda consultar el manual respectivo. 7.- Use cautines de punta aislada al soldar. 8.- Almacnelos insertndolos en espuma conductora o papel aluminio, o bien en los rieles de plstico conductor con que los entregan en ventas de mayoreo.

INTERFACES

Las figuras siguientes muestran como introducir datos binarios a una entrada TTL o CMOS, mediante un interruptor y como leer la salida correspondiente empleando un diodo emisor de luz.
+ 5V

TTL

led

Dado que los dispositivos CMOS manejan corrientes pequeas de salida (del orden de 1 mA), requerimos reforzar su salida para manejar un diodo emisaor de luz. Es usual que se requiera interfazar lgica TTL a CMOS o viceversa, por ejemplo al interconectar circuitos perifricos a un microprocesador. El problema de conectar una salida TTL a una entrada CMOS trabajando ambos circuitos al mismo voltaje de alimentacin, radica en que el Voh del TTL es menor que el Vih del CMOS, razn por la cul se requiere conectar a la salida del TTL una resistencia a +Vcc para elevar el voltaje en salida de nivel lgico uno.

TT L

CM OS

TT L

CM OS

Para conectar TTL con CMOS a diferente voltaje se requiere emplear una configuracin como la mostrada en la figura anterior de la d derecha.

Podemos conectar directamente una salida CMOS con una entrada TTL de bajo consumo (74LSXX) si ambos circuitos estn polarizados a +5volts. Si se trata de TTL estndar (74XX) se requiere utilizar un reforzador. Cuando el CMOS est alimentado por una fuente de diferente voltaje, se requiere emplear un acoplamiento a transistor o bien emplear la compuerta diseada para tal propsito (por ejemplo la 4048 o la 4049).

TT L

OPTOACOPLADORES Cuando la lnea de entrada a la circuitera lgica proviene del exterior, puede verse afectada por descargas elctricas accidentales mucho mayores que los niveles lgicos que manejaran nuestros circuitos. Para evitar que se aferte la circuitera lgica, se emplean optoacopladores, o sea elementos que aslan elctricamente al circuito digital, existiendo solamente un acoplamiento lgico. Los nives de aislamiento usualmente alcanzan varios miles de volts.

Una variante de los optoacopladores, que emplean como elementos de salida SCR`s o foto triacs permiten a los circuitos digitales manejar cargas elctricas grandes, tales como lmparas, motores, contactores, solenoides y resistecias calefactoras. Se emplan amplamente en la construccin de relevadores comerciales de estado solido usando arreglos similares a los siguientes:

Este circuito admite un disparo del TRIAC en cualquier parte de la forma de onda de la seal de alimentacin.

El siguiente circuito entrega potencia a la carga, slo cuando tiene que la seal de corriente alterna cruza por cero, por que se reduce al minimo el ruido elctrico producido por el circuito.

Si lo prefiere, puede adquirir comercialmente relevadores de electromcanismos de bajo voltaje como se muestran las siguientes figuras. Los contactos del relevador a su vez pueden accionar cargas mayores, por ejemplo la bobina de un contactor.

En general el mundo que nos rodea es de un tipo analgico y no de tipo binario, razn por la cual requerimos circuitos que interfasen la salida de sensor o transductores con la circuitera lgica, usualmente amplificando, acondicionando y cuantificando (convirtiendo a digital los valores anagicos medidos). Tambin se requiere que las salidas de los circuitos lgicos se requiere que las salidas de los circuitos lgicos se interfasen a los actuadores finales (posiblemente con convertidores digital a analgico y amplificadores).

Sensor

Actuad or

Circuito Lgico

Proces o

Actuad or

Actuad or

El elemento sensor convierte convierte la varible a medir (presin, temperatura, flujo, nive, densidad, viscosidad, desplazamiento, velocidad, aceleracin, fuerza luminosidad, etc.) en una varible elctrica equivalente (resitencia, capacitancia, inductancia, voltaje o corriente). As por ejemplo, un termmetro de resistencia opera bajo el principio de que la resistencia elctrica de un conductor vara con la temperatura. El elemento de medicin consiste ususalmente de un embobinado no inductivo de alambre de platino conectado a un brazo

del puente de Wheatstone. El cambio de temperatura desbalancea al puente y el voltaje de desbalance generalmente se amplifica, se traduce a corriente (bucle de 4 a 20 mA) y se transmite. En el extremo receptor la corriente sensada ser indicativa del comportamiento de la variable fsica medida en ese caso temperatura, y requiere ser convertida a informacin digital que se pueda manejar el circuito lgico, procedimiento que se conoce como cuantificacin y que realizan los convertidores Analgico/Digital (que sern tratados en un capitulo posterior). Los datos digitales de entrada que recibe el circuito lgico, son procesados por ste; entregando un resultado digital a la salida. El elemento actuador convierte la seal elctrica proveniente del circuito lgico, en una variacin de la variable controlada. Supongamos que el actuador es la resistencia elctrica de un horno de laboratorio. La seal de salida de 5 volts de CD a un miliampere deber ser convertida a 220 volts a 10 amperes para calentar la resistencia. En este caso la interfase de salida es un relevador de estdo solido. En muchos casos toda la informacin requerida por el circuito lgico es del tipo SI/NO, particularmente cuando lo que se requiere saber es la relacin entre la variable y algn mite, por ejemplo si la temperatura es mayor de 300C (uno lgico) o menor que ese valor (cero lgico). Comercialmente existe un integrado de bajo costo, el circuito comparador de voltaje, diseado especficamente para traducir la comparacin analgica de dos voltajes en una seal binaria de un solo dgito. COMPARADOR DE VOLTAJE. Se trata de una versin especial del amplificador operacional trabajando en modo diferencial de alta ganancia (Gv = 10 000 tpicamente).

Si V1 es ligeramente mayor que V2 la salida corresponder al voltaje de saturacin positivo. Si V1 es ligeramente menor que V2 la salida corresponder al voltaje de saturacin negativo.

Los comparadores de voltaje tienen una alta impedancia de entrada por lo que drenan muy poca corriente, usualmente del orden de nanoamperes y son capaces de responder (conmutando de estado) a diferencias de voltaje minsculas, del orden de un milivolt o menos. En el comparador de voltaje, la polaridad de salida puede invertirse con solo intercambiar las entradas. Los comparadores pueden oscilar si el alambre de salida est cerca de los alambres de entrada, por lo que es aconsejable mantener dichas conexiones cortas y separadas entre s lo mas posible. Un problema que sufre el comparador de voltaje al emplearse en aplicaciones indutriales es el efecto del ruido, ya quie una seal inducida de uno o dos milivolts puede hacerle cambiar de estado si la seal medida est muy cerca del valor lmite. Para atender este problema, puede emplearse un arreglo tal que el voltaje de entrada requerido para lograr una transiscin positiva sean diferente del requerido para lograr una transiscin negativa (histresis). En el siguiente circuito se han agregado dos resistores al comparador de voltaje para tal efecto. El sistema trabaja retroalimentando parte de la seal de salida en la entrada positiva del comparador.

Analizando el circuito puede encontrarse que le valor de voltaje lmite (que define el cambio en un sentido o en el otro) es el siguiente: V+ = V2 + VO (R1/R2) Puesto que el voltaje de salida puede ser el de saturacin positiva o el de saturacin negativa la ecuacin define dos diferentes valores: V+ = V2 + VO (R1/R2) V+ = V2 - VO (R1/R2)

Esta histresis debe ser ligeramente mayor que el ruido elctrico para enmascarlo eficazmente. Comercialmente existe una amplia variedad de comparadores de voltaje, algunos de ellos agrupan en el mismo encapsulado hasta cuatro comparadores de iguales caractersticas. La entrada de estos comparadores es igual a la de un amplificador opereacional convencional y la seccin de salida es similiar a una salida TTL de colector abierto. Esto permite que los comparadores puedan conectarse directamente a dispositivos lgicos TTL o CMOS. Algunos de estos comparadores permiten operar con una sola fuente de alimentacin.

COMPARADOR DE VENTANA: Frecuantemente se requiere conocer si una variable esta dentro de un rango preestablecido. El circuito siguiente realiza esta funcin:

Si ambas salidas estn a +5 volts (uno lgico) significa que el voltaje a comparar est en el rango determinado en el divisor de voltaje (Va Vb Vc). Ademas se tiene bien polarizada la base del transistor y el led prende. En todos los casos restantes (una o ambas salidas de los comparadores en cero) el LED estar apagado ya que el transistor no conducir por no estar polarizada su base, recurdese que a la salida de cada comparador hay un transistor de colector abierto, por lo que si dos salidas se conectan en paralelo predominar el cero lgico. El comparador de ventana permite determinar fcilmente si una cierta variable est dentro del rango requerido, por ejemplo si la temperatura est dentro de los lmites deseados. Para lograr esto, slo require sensar el paramentro fsico correspondiente y convertirlo a voltaje ajustando convenientemente el divisor de voltaje que forman R1, R2 y R3 para fijar los lmites que se deseen. Por ejemplo si se desea sensar la luz para un dtector de flama, un posible arreglo es el siguiente:

COMPARADO R

El sensor de luz se selecciona para que su mxima respuesta cubra la longitud de onda de la fuente luminosa. Si la flama est crepitando, a la salida del comparador de ventana se tendr un tren de pulsos cuya frecuencia es indicativa de cmo se est efectuando la combistin (para combustleo la frecuencia de parapadeo es de 100 a 1000 Hertz). Pueden emplearse arreglos de comparadores asociados a un divisor de voltaje mltiple para tener una grfica de barras que indique el nivel de una seal.

Comercialmente existen integrados integrados que realizan est funcin, por ejemplo el LM3914N contiene un divisor de voltaje mltiple y diez comparadores, as como tambin una referencia de voltaje por lo que es muy simple la implementacin de indicadores de nivel. A continuacin se muestra una versin simplificada del decodificador de barras LM3914N y una posible aplicacin en su configuracin elemental en la cul la referencia interna de 1.2 V alimenta al divisor multimple de voltaje de 10 pasos. La terminal 9 permite seleccionar el modo de operacin, si se conecta a +V la salida es del tipo barra y si se conecta a la terminal 11 la salida es tipo puntual (enciende un sol LED).

TERMINOS CLAVE FAMILIAS LGICAS TTL CMOS NIVELES LGICOS MARGEN DE RUIDO VELOCIDAD DE PROPAGACIN NUMERO MAXIMO DE ENTRADAS (FAN IN) FACTOR DE CARGA (FAN OUT) SALIDA ESTANDAR SALIDA EN COLECTOR ABIERTO SALIDA DE TRES ESTADOS COMPUERTA TRANSMISIN BILATERAL INTERFACES OPTOACOPLADORES MANEJO DE POTENCIA CUESTIONARIO 1- Indique las ventajas y desventajas comparativas de las familias TTL y CMOS 2- Diga las principales reglas a seguir para manejar integrados (a) TTL y (b) CMOS 3- Diga que rango de voltaje se reconoce como cero lgico y cul como uno lgico (a) Para TTL y (b) para CMOS 4- Explique que son las compuertas de 3 estados y diga para que se utilizan 5- Para que sirven las interfaces? 6- Por qu utilizamos optoacopladores? 7- Explique ques es un comparador de voltaje y en que se utiliza 8- Cundo se emplea el comparador de ventana?

9- Los reguladores de voltaje electrnicos, corresponden a un autotransfomador con varias salidas (90, 95, 100, 105, del voltaje de linea). Para cada salida existe un triac que es controlado por un circuito lgico. En cada semiciclo de la seal de lnea, se activa un triac nicamente, para entregar un voltaje que compese las variaciones del voltaje de entrada, por ejemplo si la seal de lnea est 10% arriba del valor deseado, se activa la salida correspondiente a 90% para compensar el sobrevoltaje de entrada. Disee un circuito lgico de control que permita reducir variaciones de voltaje de entrada de un 15% a un rango ms aceptable de 5%. Las entradas al circuito lgico se toman de un arreglo de comparadores de voltaje que monitorean una seal rectificadora, proporcional al voltaje de lnea. PRCTICA VI 1- Interfazar compuertas lgicas TTL y CMOS (a) Con igual voltaje de alimentacin (b) Con voltajes diferentes 2- Compruebe experiementalmente el funcionamiento de una compuerta de tres estados 3- Verifique el funcionamiento de la compuerta de transicin bilateral emplendola como SELETOR DE DATOS de un grupo de variables analgicas, por ejemplo cuatro seales de temperatura que se entregan a un mismo indicador. 4- Manejar potencia interfazando circuitos lgicos TTL y CMOS con relevadores magnticos y de estado slido. 5- Disee un circuito que convierta una entrada de alto voltaje en una seal de bajo voltaje a nivel lgico, por ejemplo abrir o cerrar un interruptor a voltaje de lnea convertirlo a TTL usando optoacolpladores. Los siguientes incisos son opcionales: 6- En un rpoceso existen tres variables crticas: PRESION, NIVEL Y TEMPERATURA y se desea alarmar al exceder de 30 psi, 90 cm y 280C. La funcin de transferencia correspondiente a presin es de 50 mV/psi, la de nivel de 0.5 mV/cm y la de temperatura de 10 mV/C. Disee y construya el arreglo de comparadores que interfasen las seales analgicas con la parte de lgica digital. 7- Una seal de 4 a 20 mA corresponde a un cambio de velocidad angular de una flecha de un motor de 140 a 160 rpm con dependencia lneal. Disee un circuito que alarme al salirse del rango de 360 a 380 rpm. 8- Un transductor de fuerza tiene una funcin de transferencia de 2.2 mV/N. Disee una alarma que dispare a 1050 N. Proteja contra una seal de ruido de 3 mV.

CAPITULO IX CIRCUITOS COMBINACIONALES OBJETIVO: INTRODUCIR AL USO DE INTEGRADOS DE MEDIANA Y GRAN ESCALA DE INTEGRACIN, PARA DISEAR CIRCUITOS COMBINATORIOS COMPLEJOS. MULTIPLEXAJE EN EL DOMINIO DEL TIEMPO Muy frecuentemente se requiere enviar por una misma lnea de comunicacin, una gran cantidad de informacin. Consideremos el caso de una planta industrial, como pudiera ser una empresa petroqumica, en la que se requiere medir una gran de parmetros y transmitirlos a un centro de control para su procesamiento. Conservadoramente podramos considerar que se requiere manejar informacin consistente en: 500 medidas analgicas 100 medidas digitales 400 alarmas y estados binarios

Podramos clasificar la informacin a transmitir en la siguiente categora: INFORMACIN DE CAMBIO LENTO (por ejemplo el nivel de un tanque de almacenamiento) puede transmitirse en forma cclica para su procesamiento cada 10 segundos. INFORMACIN DE CAMBIO MEDIO (por ejemplo medidas elctricas) pueden transmitirse en forma cclicas cada segundo. INFORMACIN DE CAMBIO RPIDO (por ejemplo alarmas) deben transmitirse tan pronto como ocurren, tolerndose un retraso que no sea mayor de una dcima de segundo. Para transmitir esta gran cantidad de informacin podemos multiplexar la informacin en el tiempo, para transmitirla una tras otra a intervalos de microsegundos o aun menores, dado que la circuitera lgica responde en nanosegundos. En el extremo receptor se memoriza la informacin recibida y se refresca (actualiza) a alta velocidad para que el usuario tenga siempre oportunamente los datos que requiere (como si existiera una lnea independiente para cada una de las seales).

CONTAD OR RELO J

CONTAD OR

En el extremo transmisor se tiene un circuito que concentra la informacin de N lneas a una, y se denomina multiplexor. En el extremo receptor se tiene un circuito que realiza la accin opuesta, ya que desconcentra la informacin, y se denomina demultiplexor. En este capitulo veremos como operan los multiplexores y los demultiplexores, los restantes elementos de la figura (contador y reloj) se vern posteriormente al estudiar circuitos secuenciales.

MULTIPLEXORES. El multiplexor oselector de datos tiene 2n lneas de entrada de datos, una nica lnea de salida y n lneas de seleccin de datos o control.

El multiplexor acta como interruptor rotatorio controlado electrnicamente, permitiendo que solo la informacin de una lnea de datos (la seleccionada mediante las lneas de control) se enve a la salida. Entre las aplicaciones mas usuales de los multiplexores se encuentran la seleccin de datos, enrutamiento de informacin, generacin de formas de onda y generacin de funciones lgicas como se ver en los siguientes ejemplos.

FUNCIONES COMBINATORIAS CON MULTIPLEXORES. El multiplexor permite resolver directamente la tabla de verdad de cualquier funcin combinatoria de bajo nmero de variables.

Ejemplo.- Desarrollar un circuito que cumpla con la funcin: F(A B C D) = m(0,3,6,9,10,12,15) (a) Usando un multiplexor de 16 a 1. La solucin consiste en introducir un uno lgico en las entradas 0,3,5,6,9,10,12,15 y cero lgico en las entradas restantes del multiplexor. # 0 1 A B C 0 0 0 0 0 0 D 0 1 F 1 0

2 3

0 0

0 1 0 1

0 1

0 1

4 5

0 0

1 0 1 0

0 1

0 1

6 7

0 0

1 1 1 1

0 1

1 0

8 9

1 1

0 0 0 0

0 1

0 1

10 11

1 1

0 1 0 1

0 1

1 0

12 13

1 1

1 0 1 0

0 1

1 0

14 15

1 1

1 1 1 1

0 1

0 1

(b) Usando un multiplexor de 8 a 1. Un multiplexor de 8 a 1 nos permite resolver una tabla de 8 renglones por lo tanto debemos empezar reduciendo la tabla de verdad en una variable. Debemos introducir la ultima variable de entrada en la columna de salida. Para ello en la tabla de verdad original agrupamos de dos en dos renglones y determinamos cuanto vale F en funcin de la variable D (los valores posibles son cero, uno, la variable o la variable negada). Obtenemos con ello una tabla de verdad reducida en una variable, por lo que ahora tiene 8 renglones, cada rengln corresponde a una entrada del multiplexor a emplear.

A 0 0 0 0 1 1 1 1

B 0 0 1 1 0 0 1 1

C 0 1 0 1 0 1 0 1

F -D D D -D D -D -D D

Cuntos circuitos integrados se requieren para resolver esta tabla de verdad utilizando compuertas NO Y de dos entradas? Ejercicio.- Resolver la funcin combinacional: F(A B C D) = m(0,1,2,4,5,6,8,14) # 0 1 2 3 4 5 6 7 8 9 10 11 A 0 0 0 0 0 0 0 0 1 1 1 1 B 0 0 0 0 1 1 1 1 0 0 0 0 C 0 0 1 1 0 0 1 1 0 0 1 1 D 0 1 0 1 0 1 0 1 0 1 0 1 F

12 13 14 15

1 1 1 1

1 1 1 1

0 0 1 1

0 1 0 1

Ejemplo- Desarrolle un circuito lgico que cumpla con la siguiente tabla de verdad: # 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 A 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 B 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 C 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 D 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 E 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 S 0 1 0 1 1 1 0 0 1 0 1 0 1 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 1

Segmentamos la tabla de verdad en grupos de cuatro renglones e indicamos la funcin de salida de cada grupo, expresndola en trminos de dos variables de menor peso ponderal. Con ello se obtiene una tabla de verdad ms compacta. A 0 0 0 0 1 1 1 1 B 0 0 1 1 0 0 1 1 C 0 1 0 1 0 1 0 1 S E -D -E D*E 0 D 1 D*E

Con slo dos integrados se ha resuelto una tabla de verdad de 5 variables. Comercialmente hay multiplexores digitales hasta de 16 lneas de entrada a una salida, pero fcilmente pueden formarse arreglos para manejar 32, 64, 128 o un nmero mayor de entradas. El siguiente arreglo de multiplexores permite trabajar 64 lneas de entrada.

MU X MU X MU X MU X
DEMULTIPLEXORES El demultiplexor o distribuidor de datos tiene una nica lnea de entrada, N lneas de seleccin o control y 2N lneas de salida. El demultiplexor toma una sola entrada y la distribuye en forma selectiva.

MUX 4a1

El demultiplexor es una variable del circuito decodificador simple, de hecho si las entradas de datos del decodificador se emplean como entradas de seleccin y la lnea de habilitacin como entrada de informacin el decodificador funciona como demultiplexor. Tambin es factible emplear el demultiplexor para resolver funciones combinacionales, usualmente asociando algunas de sus salidas a compuertas tipo O. Intente resolver los ejemplos vistos previamente con un demultiplexor con 16 salidas (74154) y circuitera adicional. MULTIPLEXORES ANALGICOS. Se dispone tambin de multiplexores analgicos, que permiten enlutar una de las 2N seales de entrada dependiendo de la seleccin que realicen las N lneas de control. Este tipo de circuitos frecuentemente se utiliza a la entrada de convertidores analgicos a digital para que con un solo convertidor podamos manejar 8 o 16 entradas. Por ejemplo para medir 8 temperaturas diferentes con un mismo termmetro digital.

DECODIFICADOR 1 DE 8

MEMORA PERMANENTE (ROM) El ROM (Red Only Memory) es un integrado que permite almacenar informacin de manera permanente o semipermanente. Dicha informacin puede leerse repetidamente y se mantiene incluso a quedar sin alimentacin el integrado, pero no puede ser escrito sin un procesamiento especial. Existen las siguientes clasificaciones generales de ROMs: 1.- ROM estndar, el cual es programado por el fabricante en e momento de producir el integrado. Slo es comercialmente costeable al producir millares de elementos idnticos. 2.- ROM programable (PROM), el cual se programa por el usuario usando equipo especial. Una vez programado ya no puede ser alterado. 3.- ROM programable y borrable, el cul puede ser reprogramado repetidamente. Existen dos versiones, que se indican a continuacin:

* (EPROM) el cul se programa elctricamente y se borra aplicando luz ultravioleta por varios minutos. *(EEPROM) En el que para borrar y escribir la informacin se aplican pulsos elctricos. Las aplicaciones ms usuales de los ROMs son suministrar informacin a computadoras, microprocesadores, controladores digitales y equipo microprogramador. En ROM se guardan conversiones de cdigo, tabla de funciones trigonomtricas, de logaritmos, funciones trascendentes y rutinas frecuentemente usadas en programas de computadora. Puede explicarse el funcionamiento del ROM en base al arreglo matricial de diodos que e muestra en la siguiente figura y que corresponde a un decodificador decimal BCD.

El ROM recibe una direccin en sus n lneas de entrada la decodificada y con ello selecciona una de las 2n lneas de su matriz de memoria y entrega la informacin correspondiente a la salida. Cada lnea de la matriz de memoria guarda M bits de datos.

DECODIFICADOR 1 de 2N

REFORZADORES

En la EPROM inicialmente existe una matriz con diodos y fusibles en cada uno de los 2n x M puntos de cruce. Mediante pulsos de alta corriente se queman los fusibles que convengan, desconectando con ello al diodo de ese punto de cruce. Fsicamente el ROM es un dispositivo con N entradas y M salidas en el que para cada valor de entrada (hay 2N valores posibles) se tiene un valor de salida.

DECODIFICADOR N ENTRADAS 2N SALIDAS (FIJO)

MATRIZ PROGRAMABLE DE M COMPUERTAS TIPO O CON 2N ENTRADAS REFORZADORES

Esto significa que el ROM puede guardar una tabla de verdad de N variables con M distintas funciones de salida, o en otras palabras en ROM se puede programar cualquier funcin combinacional dada en la forma cannica, introduciendo directamente la tabla de verdad. El ROM puede constituir una alternativa econmica al implementar un circuito digital. Para dar una idea de ello a continuacin se transcribe una lista de algunos integrados comerciales de este tipo. Parte # 2716 2732 27C64 27128 27256 27512 tipo EPROM EPROM EPROM EPROM EPROM EPROM bits 2048 X 8 4096 X 8 8192 X 8 16384 X 8 32768 X 8 65536 X 8 velocidad 450 ns 450 ns 150 ns 250 ns 250 ns 250 ns Costo 2.50 dlls 3.60 dlls 3.60 dlls 3.60 dlls 4.25 dlls 5.25 dlls

La primer y mas barata de las memorias permanentes citadas es de 2 KB, o sea 2048 X 8 bits. Esto significa que puede resolver directamente ocho distintas funciones combinacionales de un mximo de 11 variables a un precio sumamente bajo, sobre todo si se le compara con lo que costara implementar un diseo de esa magnitud con compuertas lgicas tradicionales. Existen

ROMs mayores, actualmente hasta 4 megabits (4,194,304 x 1) capaces de resolver una tabla de verdad con igual nmero de renglones aunque su precio es elevado. Puesto que los dispositivos lgicos programables emplean compuertas con un alto nmero de entradas, los fabricantes adoptando una notacin simblica mas adecuada para su representacin esquemtica, en la cual se muestra una sola lnea entrando al dispositivo y sobre ella se marcan las entradas que llegan al mismo. Por ejemplo para representar una compuerta Y de 16 entradas podemos optar por la notacin tradicional (izquierda) o la moderna notacin citada (derecha).

La figura siguiente corresponde a la representacin esquemtica de un PROM y consta de una matriz fija de compuertas Y seguida por una matriz programable de compuertas O.

El PROM se programa quemando elctricamente los fusibles de dos puntos de cruce no deseados de la matriz programable. A continuacin se muestra la tabla de un codificador de prioridad, seguida por la representacin correspondiente a su programacin en un PROM. # 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 E0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 E1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 E2 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 E3 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 I 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 A 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 B 0 1 0 1 1 1 0 1 0 1 0 1 1 1 0 1

En alguna aplicaciones, no todas la direcciones en una secuencia consecutiva contiene datos tiles por lo que la circuitera se puede reducir, y por tanto el costo, empleando decodificacin parcial de direcciones. As por ejemplo en la tabla de verdad de una funcin lgica los nicos trminos que cuentan son los renglones con salida uno (minitrminos) y generalmente el nmero de ellos es mucho menor que el total. Ms aun, se pueden combinar lo minitrminos y obtener la funcin reducida equivalente.

Pensando en ello se ha desarrollado los arreglos lgicos programables, que corresponden a una variante del ROM, que es ms econmica y poderosa que este para implementar funciones lgicas dadas como una suma de trminos producto.

MATRIZ PROGRAMABLE DE K COMPUERTAS TIPO Y CON N ENTRADAS

MATRIZ PROGRAMABLE DE M COMPUERTAS TIPO O CON K ENTRADAS

REFORZADORES

Veamos ahora el diagrama de un arreglo lgico programable, consistente e una matriz programable de compuertas Y seguida por una matriz programable de compuertas O.

La figura siguiente corresponde a la implementacin, en un PLA, de las ecuaciones que definen a un codificador de prioridad.

Compare el diagrama anterior con las ecuaciones del codificador de prioridad, dadas a continuacin: I = E3 + E2 + E1 + E0 A = E3 + E2 B = E3 + (-E2 * E1) El PLA es una solucin mas econmica que el ROM y permite trabajar mayor nmero de variables. Por ejemplo el signetics 82S100 maneja ocho funciones de 16 variables expresadas como sumas de hasta 48 trminos productos. PROCEDIMIENTO 1.- Expresar cada funcin como suma de productos (mximo y funciones de N variables).

2.- Identificar cada uno de los diferentes trminos producto, numerndolos progresivamente (mximo K trminos productos). 3.- Construir una tabla en que se indique cules trminos producto corresponden a cada funcin.

4.- Programar el arreglo. # 1 2 3 N implicante -A*-B*C*-D*E*-F* I*-J*K A*-B*-C*-D*E*-F*G*-H A*-B*-C*-D*E*-F*G*-H A*-B*-C*-D*E*-F*G*-H Funciones de salida F1 F2 F3 F4 * * * * * * * * * * * *

Para dar una idea de los costos, considere la siguiente tabla de arreglos lgicos programables. Parte # 16V8 20L2 22V10 Entradas 8 20 22 Salidas 8 2 10 Tipo GAL PAL GAL Velocidad 35 ns 40 ns 35 ns Costo $2.25 $4.45 $5.95

Los arreglos lgicos programables constituyen actualmente el sector de mayor crecimiento en la electrnica digital, de hecho en aplicaciones profesionales tienden a desplazar casi por completo a la circuitera lgica tradicional. Es importante que en nuestras escuelas se cuente con el software y el equipo requerido para programar a estos dispositivos. Tambin se cuenta con versiones especiales de PLA diseadas para manejar funciones secuenciales, que veremos posteriormente al estudiar lgica secuencial. TERMINOS CLAVE. Multiplexor Demultiplexor Multiplexor analgico ROM PROM EPROM Arreglo lgico programable

CUESTIONARIO. 1.- Emplee multiplexores para disear una unidad lgica programable. 2.- Resuelva las siguientes funciones empleando multiplexores S(A,B,C,D) = m(0,2,5,6,7,11,12,14,15) W(A,B,C,D,E) = m(1,3,4,5,7,9,10,17,21,26,30,31) Z(A,B,C,D,E) = m(0,2,4,6,10,18,20,21,22,23,24,25,26,27,28,29,30) 3.- Qu ventajas representa multiplexar la informacin? 4.- Para que sirven los multiplexores analgicos 5.- ?Cmo podemos utilizar a un demultiplexor como decodificador? 6.- Explique las caractersticas generales de los diversos tipos de memoria permanente (ROM). 7.- Diga que ventajas ofrecen los arreglos lgicos programables con respecto a la circuitera tradicional.

PRACTICA VII 1- Implementar con multiplexores las funciones combinatorias de los ejemplos del capitulo IX. 2- Realice una aplicacin d entradas de un Multiplexor. 3- Utilice demultiplexores para implementar un circuito de comprobacin de paridad. 4- El 74184 es un ROM (7488) programado para convertir BCD a binario y viceversa. Analice su comportamiento. LOS INCISOS SIGUIENTES SON OPCIONALES Y REQUIEREN MATERIAL Y EQUIPO ESPECIAL (1 EPROM 2716, 1 GAL 16V8, UN PROGRAMADOR LGICO UNIVERSAL Y UNA COMPUTADORA PC). DEBERA CONSULTARSE EL MANUAL DEL PROGRAMADOR DE ARREGLOS LOGICOS ANTES DE INTENTAR UTILIZARLO. 5- Programar una EPROM para que opere como un multiplexor de dos palabras de 4 bits cada una. Para ello primero construya la tabla de verdad y despus introdzcala al programador de memorias. 6- Programar en un arreglo lgico la circuitera correspondiente a un sumador completo.

CAPITULO X EL TIEMPO COMO ELEMNTO DE DISEO OBJETIVO: ESTABLECER LA INFLUENCIA DEL TIEMPO COMO ELEMENTO EN EL DISEO DE CIRCUITOS DIGITALES, Y PRESENTAR ALGUNAS CONFIGURACIONES UTILES DE MULTIVIBRADORES MONOESTABLES Y BIESTABLES. EL FACTOR TIEMPO Toda seal elctrica emplea un cierto tiempo en recorrer un circuito. Por ello debe tomarse en cuenta que asociado a cada compuerta existe un tiempo de retraso, que est relacionado con una mxima frecuencia de operacin de la familia lgica.

Fmax= 1/(2 tPD)

Para TTL el valor el valor de tPD = 10 nanosegundos por lo que la mxima frecuencia de operacin de una compuerta es de 50 MHz. Al probar fsicamente un circuito digital, se observa que existe un cierto retraso entre el tiempo en que aplicamos una entrada y el tiempo en que se obtiene la salida resultante. Los cambios en las entradas se propagan a travs de las diversas entradas, hasta que alcanzan una condicin estable. Por definicin la velocidad de un circuito digital corresponde al tiempo transcurrido, en el peor de los casos posible, entre la aplicacin de una entrada y la estabilizacin de la salida. En diseos simples, en que resultan implementaciones del tipo suma de productos, la velocidad se calcula sumando los retrasos de las etapas Y y O. Pero en diseos mas elaborados, como pudiera ser un sumador de dos palabras de 8 bits construido en base a un arreglo de sumadores completos, el clculo de la velocidad del circuito se torna mas complejo. En el ejemplo citado el acarreo de una columna se propaga a la siguiente, por lo que hay que multiplicar el retraso mximo de una etapa por el nmero de etapas. Si leemos la salida de un circuito antes de que se haya estabilizado, tendremos una lectura errnea y en circuitos complejos pueden transcurrir varias centenas de nanosegundos antes de que se pueda garantizar que la salida es estable. Tambin al analizar un circuito considerado el factor tiempo, en ocasiones vemos que pueden ocurrir errores transitorios, denominados aleas, capaces de afectar la operacin de las etapas posteriores. Consideremos al siguiente circuito, cuando la entrada A cambia de cero lgico a uno lgico.

Podemos ver que durante un cierto tiempo las seales A y D, entran a la compuerta NOY, valen uno simultneamente, por lo que la salida E vale cero. Si slo consideramos la lgica, este valor es inesperado para nosotros ya que esperamos que siempre valga uno. La alea se produjo por desbalances en tiempos en las trayectorias de propagacin de las seales, su duracin es corta y vemos que poco tiempo despus la salida toma su valor correcto. Las aleas producen pulsos muy breves (del orden de nanosegundos), que es difcil observar incluso con un buen osciloscopio, pero que nos causan serios problemas ya que la duracin de estos pulsos es suficiente para que responda un circuito digital. Considere un caso hipottico en que tenemos un circuito que produce aleas seguidas por un contactor, al probar el diseo vemos que el conteo es errneo. Es muy probable que pensemos que el error est en el contactor y nos dediquemos intilmente a revisarlo, probarlo, modificarlo sin llegar a corregir el problema, por no haberlo corregido correctamente. En algunos casos el diseador produce aleas intencionalmente, por ejemplo cuando requerimos que se entregue un pulso a la salida al recibirse una transicin de subida (cambio de cero a uno lgico) podemos recurrir al primero de los circuitos siguientes:

Las aleas se clasifican en estticas y en dinmicas dependiendo del valor inicial y final de las salidas.

Alea esttica en salida 0 Alea esttica en salida 1 Alea dinmica (la salida cambia Un nmero impar de veces)
Para conocer cuando es factible que un circuito genere aleas. Podemos recurrir al teorema de expansin de Shannon, que dice: Toda funcin combinacional de N variables, f(X1,X2,Xn), puede ser expresada en las dos formas siguientes: a) f(X1,X2,Xn) = X1 *f(1,X2,Xn) + -X1 *f(0,X2,Xn) a) f(X1,X2,Xn) = [X1 + f(0,X2,Xn)] *[ -X1 +f(1,X2,Xn)] Si en la ecuacin (a) se tiene que f(1,X2,,Xn) = 1 y f (0,X2,,Xn) = 1, entonces: F (X1,X2,Xn) = X1 + -X1 = 1 Conforme a esto la salida debe valer uno lgico, pero si en la trayectoria de la seal hay retrasos de propagacin desbalanceados, es posible la generacin de una alea esttica cuando los operandos valgan cero, mandando momentneamente un cero a la salida. Similarmente si en la ecuacin (b) se tiene que f(0,X2,Xn) = 0 y f(1,X2,..Xn) = 0, entonces: F(X1,X2,Xn) = X1 * -X1 = 0 La salida debe valer cero pero en caso de existir desbalance de retrasos de propagacin, puede generarse una alea esttica que cause que durante un cierto tiempo la salida valga uno.

Cuando A=1 y C=1, f(A,B,C) = B + -B = 1, pero como hay desbalance en los retrasos de propagacin durante un breve instante tanto B como B negada vale cero, producindose una alea.

Veamos que ocurre si en la solucin se incluye a todos los implicantes primos:

S=AB+BC+AC Cuando A=1 y C=1, f(A,B,C) = B + -B + 1, y aun si momentneamente B y B negada valen cero, la salida sigue siendo uno por lo que se produce alea. La segunda solucin es mas conveniente, pese a ser mas porque evita que se produzcan aleas, al ser adyacentes todos los implicantes de la solucin (vea el cubo booleano). Podemos establecer la siguiente regla: PARA EVITAR ALEAS DEBEN INCLUIRSE EN LA SOLUCIN A TODOS LOS IMPLICANTES PRIMOS No siempre es imposible impedir la formacin de aleas cuando cambian varias entradas en forma simultanea, especialmente en funciones sin adyacencias como la O-exclusiva. En tal caso procede filtrar la salida para evitar la propagacin de la alea. FALTA DIAGRAMA

Para que un filtro RC de pasa bajo pueda emplearse para filtrar aleas, se requiere que el periodo de la seal de informacin sea varias veces mayor que la constante de tiempo (el producto R*C) y que la duracin de la alea sea mucho menor que la constante de tiempo. En lgica CMOS, este mtodo de filtrar aleas es mas efectivo porque pueden emplearse resistores de valores altos.

SIMULACIN COMPUTACIONAL INCLUYENDO TIEMPOS Es conveniente que al simular un circuito lgico, podamos introducir formas de onda de entrada y observar las formas de onda resultantes en las salidas ( o en puntos intermedios del circuito), de una manera similar a como lo haramos fsicamente con un analizador multicanal de estados lgicos. Una vez que estamos seguros de que el diseo es correcto procedemos a su construccin fsica. Si opera correctamente, perfecto, pero si no opera debemos buscar la causa de la falla. Podemos tener un error en el alambrado o la falla de alguna componente. Utilizando el simulador computacional fcilmente podremos encontrar el problema al ir identificando las secciones correctas del circuito, avanzando desde la seccin de entrada hacia la salida. Tambin un simulador computacional que incluya tiempos nos permitir determinar si un circuito produce aleas o no las produce. Los simuladores profesionales permiten definir el retraso de propagacin en cada elemento lgico. Por simplicidad, el simulador que emplearemos aqu parte del supuesto que cada compuerta tiene un mismo retraso. Utilizaremos un ejemplo sencillo, el detector de borde de bajada citado en la seccin anterior, para establecer de una manera general como trabaja el simulador.

Z = (X + X) = X X
En la entrada X deseamos aplicar un escaln descendente, por lo que podemos introducirle la secuencia de valores lgicos 1111100000 (en el tiempo inicial introducimos un uno, en el siguiente un uno,, en el sexto tiempo un cero, etc.) y determinar y anotar como cambiaron las salidas del inversor y de la compuerta NO-O en esos tiempos. Para ello construyamos una tabla en que aparezcan las entradas y las salidas a los diversos elementos del circuito.

t0 t1 t2 t3 t4 t5 T6 t7 T8 t9

X 1 1 1 1 1 0 0 0 0 0

En el instante inicial sabemos que la entrada X vale cero, pero desconocemos cuanto vale Y (depende del valor previo a la entrada del inversor) y desconocemos cuanto vale Z (depende de los valores anteriores de las entradas X y Y a la compuerta NO-O). En el instante t1, procedemos a determinar los valores de las salidas en funcin de los valores de las seales en el tiempo t0. As encontramos que la salida del inversor vale 1 (pues a su entrada tiene cero) y que la salida de la compuerta NO-O es cero (ya que en sus entradas tiene 1 y ). Recuerde que la salida de la compuerta NO-O vale uno slo si sus dos entradas son cero. En el instante t2 la seal X vale uno, la seal Y vale cero (es la negacin del valor de X en t1), la seal Z vale cero ( ya que en el instante previo las entradas de la compuerta NO-Y valen 1 y 0). Procedamos de igual modo para encontrar los valores de las salidas en los tiempos t2, t3, t4 y t5; anotndolos en la tabla. X 1 1 1 1 1 0 0 0 0 0 Y 0 0 0 0 0 Z 0 0 0 0 0

t0 t1 t2 t3 t4 t5 T6 t7 T8 t9

Note que en el tiempo t5 la entrada X, cambia de uno a cero (borde descendente de la seal de entrada). En el tiempo t6, la salida Y vale uno (la entrada al inversor en t5 fue cero), y la salida Z vale uno (las entradas a la compuerta NO-O fueron X=1, Y=1). En este momento es cuando ocurre la alea. En t7, la salida Y vale uno y la salida Z vale cero (las entradas a la compuerta NO-O en el tiempo anterior fueron y=1, Z=1), etc. Siguiendo el procedimiento que hemos descrito, podemos desarrollar programas particulares que nos indiquen como responde en el tiempo un circuito, ante un cierto juego de seales de entrada que nosotros le proporcionamos. En el apndice C aparecen ejemplos de programas de este tipo. Tambin se incluye un programa general, denominado SIMIIG, que permite simular la operacin de un circuito lgico, representndolo en la computadora en forma similar a como se armara en un tablero experimental de montaje de componentes electrnicos. Para ello partimos del dibujo del circuito que deseamos simular asignndole un nmero distintivo a cada una de las compuertas que lo constituyen (elementos lgicos). En el dibujo asignaremos tambin un nmero distintivo a cada una de las lneas que representas las conexiones fsicas (alambres) entre los distintos elementos. Para definir un circuito especificaremos el tipo de elemento lgico (AND, OR, XOR, NOT), el nmero del mismo y los nmeros de las lneas conectadas a sus entradas y a su salida, pensando en simular arreglos lgicos programables se ha reservado espacio para compuertas hasta de 6 entradas y el circuito puede simular circuitos hasta

de 150 compuertas. Puesto que se tiene un listado del cdigo fuente del programa, fcilmente se puede modificar para incluir compuertas de un mayor nmero de entradas u otros cambios que se consideren pertinentes. El programa verifica que el circuito propuesto no presente incongruencias, como pudiera ser que dos salidas estn conectadas a un mismo punto (esto corresponde a un cortocircuito) y que cada entrada vaya conectada a una salida o a una seal de entrada proveniente del exterior. Al implementar un circuito le aplicamos seales de prueba y observamos cul es la respuesta en las lneas de salida y en caso necesario (por ejemplo cuando el circuito no opera correctamente) tambin observamos algunos puntos intermedios. En el simulador a las seales de prueba les llamamos estmulos y a los puntos de observacin lneas a desplegar. Para definir un estmulo debemos proporcionar el nmero del alambre correspondiente, y la secuencia histrica da valores que deseamos introducir. El simulador emplea dos arreglos de datos llamados respectivamente Viejo y Nuevo. En el arreglo viejo guarda las seales que se calcularon previamente como salidas de cada una de las compuertas actuales, con esos datos calcula para cada una de las compuertas cuanto vale su salida, una vez que termina estos clculos copia el juego de valores recin obtenido (arreglo Nuevo) en el arreglo Viejo, lee los siguientes valores de los estmulos de entrada y procede nuevamente a calcular cuanto vale cada salida. El procedimiento se repite mientras se tengan estmulos de entrada que no hayan sido considerados. Para cada uno de los alambres que constituyen el circuito se asigna se asigna una variable de hilera, a la que agregamos en cada vuelta el valor lgico calculado (0,1,?), al termino del programa se imprimen las variables de hilera de los nodos a desplegar. Por conveniencia de representacin se ha incluido una rutina que cambia ceros y unos por smbolos grficos que representan a la forma de onda de manera parecida a como la observaramos en la pantalla de un osciloscopio multicanal. Para manejar bloques de elementos lgicos que se repiten en el diseo, se definen macroelementos que corresponden a procedimientos que son llevados varias veces haciendo el paso de parmetros correspondiente.

EL DISIPADOR SCHMITT. Cuando el pulso de entrada aparece distorsionado, como el caso de la salida del filtro RC, mostrado previamente, conviene cuadrarlo, utilizando compuertas lgicas diseadas especficamente para restaurar la forma de onda de pulsos de entrada, denominadas de tipo Schmitt. En ellas la magnitud del voltaje de entrada al cual el circuito cambia su estado de salida, es diferente para valores crecientes de voltaje que para valores decrecientes; a esto se le conoce como histresis y se muestra en la siguiente grfica.

SALIDA

UNO

CERO
Para simbolizar compuertas lgicas con estas caractersticas incluimos en el interior del smbolo de la compuerta una representacin de la curva de histresis, como se ilustra en la figura. Para el inversor Schmitt 7414, la salida cambia de cero lgico cuando la entrada es mayor de 1.6 volts y permanece en ese valor hasta que el voltaje de entrada sea menor que 0.8 volts, con lo que la salida pasa a uno lgico. La figura siguiente muestra como responde un Inversor Schmitt a una seal de entrada distorcionada y con ruido.

Frecuentemente nuestros sensores producen pulsos redondeados, tal es el caso de la entrada a un tacmetro en la que un fototransistor detecta el paso de luz por las ranuras de un disco que gira rpidamente; podemos utilizar entonces una compuerta Schmitt como se muestra a continuacin.

TEMPORIZADORES. El temporizador es un dispositivo que puede producir un pulso de duracin conocida. El temporizador ms comnmente usado es el 555 cuyo diagrama interno se muestra en la figura.

REESTABLECER

SALIDA FIN INICIO


MEMORI A

DESCARGAR CAPACITOR

Bsicamente el temporizador consiste de un biestable tipo RS, con dos comparadores de voltaje conectados a sus entradas de establecimiento S y reestablecimiento R. Los comparadores estn conectados a voltajes de regencia de (Vcc/3) y (2 Vcc/3) respectivamente. La temporizacin depende de la constante de tiempo correspondiente a un resistor y un capacitor externos. El temporizador dispone de una salida de colector abierto para descargar al capacitor externo. Inicialmente, antes de llegar el pulso de disparo, la salida del temporizador es baja y tambin lo es la salida del transistor de descarga por lo que el capacitor no puede recibir carga. Al llegar una seal de entrada menor de un tercio del voltaje de alimentacin se dispara el temporizador, la salida pasa a nivel alto y el transistor entra en corte permitiendo la carga del condensador. Al cargarse el capacitor a un voltaje superior a las dos terceras partes del voltaje de alimentacin, la salida pasa a nivel bajo y el transistor entra en saturacin descargando al condensador, con lo que termina la temporizacin. La duracin del pulso de salida, corresponde al tiempo necesario para que el condensador se cargue a dos tercio del voltaje de alimentacin y es de 1.1 RC segundos.

Los valores mximos que recomienda e fabricante son de 10 Megohms y 100 microfarads para R y C respectivamente. La figura siguiente muestra como conectar el 555 como temporizador (multivibrador monoestable).

DISPARA RO

SALID A

El 555 admite voltajes de alimentacin en el rango de 5 a 15 volts. La exactitud de la temporizacin depende de la estabilidad del resistor y el condensador. Para capacitares de Mylar es mejor del 1% y la repetibilidad es del orden del 0.1%. Usando el 555 es simple lograr temporizaciones desde milisegundos hasta 15 minutos o ms. Existe una versin CMOS del 555 con caractersticas mejoradas, entre ellas tiempos mayores. Tambin se dispone de integrados a dos y a cuatro temporizadores semejantes al 555, que son el 556 y el 558 respectivamente. Otros integrados adems del temporizador, incluyen contadores que actan como multiplicadores de la constante de tiempo, por ejemplo el XR2240 permite temporizaciones hasta de varios das. El temporizador programable XR2240 bsicamente es un 555 al que se ke ha agregado un contador de 8 bits, por lo que la temporizacin obtenida es: T= 1.1*R*C*K

Donde K es un entero entre 1 y 255 que podemos ajustar externamente. Es fcil interfasar un temporizador 555 a TTL. Desde el circuito lgico podemos iniciar el pulso de salida (disparando en pata 2) o darlo por terminado antes de que termine el tiempo preestablecido (reestableciendo en pata 4), utilizando la configuracin siguiente:

555

La salida del 555 puede sobradamente menejar entradas TTL, cuidando que ambas alimentaciones sean de +5 volts. El 555 maneja corrientes de salida del orden de 250 miliamperios, por lo que directamente puede accionar muchos dispositivos, como es el caso de los relevadores. El siguiente circuito permite cerrar o abrir los contactos de un relevador por un tiempo preestablecido. Puede utilizarse para dar los tiempos de exposicin en el revelado de fotografas o de circuitos impresos.

Conectando en anillo varios monoestables se logra un control secuencial de tiempos repetitivo.

La figura siguiente muestra el detalle del bloque bsico del control secuencial de tiempos del esquema anterior.

Veamos a continuacin un par de ejemplos que utilizan arreglos de temporizadores. Ejemplo. Disear un circuito que controle la secuencia de encendido de las luces de un semforo simple.

El semforo simple emplea 6 luces (verde, ambar y roja para cada lado), que designaremos como V1, A1,R1,V2,A2,R2

Se requiere una secuencia repetitiva de cuatro tiempos. Durante el primer tiempo enciende la luz verde de la calle 1 y la luz roja de la calle 2. En el segundo tiempo enciende la luz ambar de la calle 1 y la roja de la calle 2. En el tercer tiempo enciende la luz verde de la calle 2 y la roja de la calle 1. En el cuarto tiempo enciende la luz ambar de la calle 2 y la roja de la calle 1. Tiempo 1 V1 R2 Tiempo 2 A1 R2 Tiempo 3 R1 V2 Tiempo 4 R1 A2

Las ecuaciones resultantes son: V1 = 11 A1 = 12 R1 = 13 + 14 V2 = 13 A2 = 14 R2 = T1 + T2

El circuito correspondiente al semforo simple se muestra a continuacin. Notese que podemos aprovechar el hecho de que los LEDs son diodos para armar la funcin lgica O con diodos.

El circuito correspondiente a cada temporizador es el del bloque basico del control secuancial de tiempos. Para calcular los valores de R y C correspondientes a cada temporizador, considere que los tiempos usuales de encendido de las luces de un semaforo son verde de 10 a 120 segundos y ambar de 3 a 10 segundos. Para dar los tiempos variables podemos emplear potenciometros de alambre rediez vueltas. Si se desea que los valores mnimos se respeten, podemos colocar una resistencia fija en serie con el potenciometro. Por ejemplo para el tiempo en verde podemos utilizar una resistencia de 220 Kilohms en serie con un potenciometro de 5 megohms y un capacitor de 47 microfarads. Con este arreglo los tiempos obtenidos son: Tiempo mnimo = (220 000 X 47 X 10-6) X 1.1 = 11.37 segundos Tiempo maximo =( (220 000 + 5 000 000) X 47 X 10 6) X 1.1 = 269.87 segundos Proponga un juego de valores de R y C para dar el tiempo de encendido de la luz ambar. Para manejar las lmparas de un semforo real pueden sustituirse los LEDs por relevadores comerciales de estado slido. Ejemplo. Se requiere un programador de tiempos para un proceso industrial, que cumpla con el siguiente diagrama de flujo.

INICIO

RETROLAVADO V1 = V3 = V5 = 1

TIEMPO 1? PREPARACIN V6 = V7 = V8 =1

TIEMPO 2?

INYECCION REACTIVO V6 = V7 = V8 = 1 V9 = FSL

TIEMPO 3?

ENJUAGUE V1 = V4 = V6 = 1

TIEMPO 4?

LLENADO V1 = V3 = V5 = 1

TIEMPO 5?

FIN

El esquema con la asignacin de vlvulas aparece a continuacin.

Para resolver el problema planteado se requiere de un arreglo de monoestables conectados en cascada, para proporcionar los diferentes tiempos y un poco de circuitera lgica adicional para resolver las funciones lgicas combinacionales de las distintas vlvulas. T5 0 0 0 0 0 1 T4 0 0 0 0 1 0 T3 0 0 0 1 0 0 T2 0 0 1 0 0 0 T1 0 1 0 0 0 0 V1 0 1 0 0 1 1 V2 0 0 0 0 0 0 V3 0 1 0 0 0 1 V4 0 0 0 0 1 0 V5 0 1 0 0 0 1 V6 0 0 1 1 1 0 V7 0 0 1 1 0 0 V8 0 0 1 1 0 0 V9 0 0 0 FSL 0 0

V1 = T1 + T4 + T5 V2 = 0 V3 = T1 + T5 V4 = T4 V5 = T1 + T5 V6 = T2 + T3 + T4 V7 = T2 + T3 V8 = T2 + T3 V9 = T3 + FSL El circuito lgico que corresponde a estas ecuaciones es:

Temporizador 1 Temporizador 2 Temporizador 3 Temporizador 4 Temporizador 5

Los valores de R y C de cada monoestable se seleccionan para dar los tiempos desarrollados corresponde a un potencimetro para poder variar los tiempos a voluntad. Las salidas lgicas accionarn relevadores de estado slido y estos a su vez las vlvulas correspondientes. OSCILADORES (MULTIVIBRADORES ASTABLES) Se tiene un oscilador, al conectar en anillo un nmero impar de inversores.

El oscilador anterior es de alta frecuencia, poca estabilidad y ciclo de trabajo fijo. Los parmetros mas importantes de un oscilador son: Frecuencia en Hertz Estabilidad dada como un porcentaje de variacin de frecuencia debido a cambios de temperatura y envejecimiento de los componentes. Ciclo de trabajo (o relacin alto-bajo) que se obtiene de dividir (tiempo en alto/ tiempo en bajo) x 100 %

Agregando elementos externos pasivos, que determinen la frecuencia de operacin, puede mejorarse en mucho la estabilidad. Este circuito oscila a frecuencias en el rango de 100 KHz a 10 MHz. Su frecuencia es aproximadamente de : F = 1/ 3 * R * C

El rango de este circuito es de 10 KHz a 1MHz. Su frecuencia de salida es aproximadamente de: F = 0.46/ (R1 * C)

El valor de R2 debe ser mucho mayor que el de R1. Podemos emplear compuertas NO-Y o compuertas NO-O, conectadas como inversores para construir osciladores como los mostrados anteriormente.

Cuando es muy importante la estabilidad del oscilador conviene utilizar osciladores controlados por cristal, empleando configuraciones como las siguientes:

Comercialmente existen circuitos intergrados diseados para trabajar amplios rangos de frecuencia, con buena estabilidad y con posibilidad de variar su ciclo de trabajo, por ejemplo el integrado 74S124 contiene dos osciladores que pueden operar a frecuencia fija, o bien a frecuencia variable controlada por voltaje. Posee buena estabilidad, opera con un ciclo de trabajo de 50% dentro de un rango de frecuencia que va de 0.1 Hz hasta 85 MHz. El oscilador/temporizador 555, de muy bajo costo permite trabajar desde 0.1 Hz hasta mas de 100 KHz. Tiene una estabilidad de temperatura de 0.005% por C, puede operar con ciclos de trabajo desde 1 a 99% y admite voltajes de alimentacin de 4 a 15 volts. Para trabajar el 555 como oscilador podemos emplear la configuracin siguiente:

Los tiempos en que las salidas permanecen en nivel alto y bajo estn dados por las ecuaciones siguientes: t1 = 0.693 (RA + RB) * C t2 = 0.693 RB * C T = 0.693 (RA + 2RB) * C Frecuencia = 1 / T Ciclo de trabajo = t1 / t2 = (RA + RB ) / RB

El siguiente circuito permite variar independientemente los tiempos en alto y en bajo del oscilador, desde el 0.1% al 99.9%.

TERMINOS CLAVE TIEMPO DE RETRASO (TPD) ALEA ALEA ESTATICA ALEA DINAMICA TEOREMA DE EXPANSION DE SHANNON FILTRO RC TEMPORIZADOR PROGRAMADOR DE TIEMPOS OSCILADOR FRECUENCIA ESTABILIDAD CICLO DE TRABAJO PERIODO

CUESTIONARIO 1-Por qu es importante considerar los tiempos de retraso de propagacin en los elementos lgicos? 2- qu es una alea? cunto puede una alea afectar el comportamiento del circuito digital?

3- determine si los circuitos dados por las siguientes ecuaciones producen aleas y si es as indique como suprimirlas, sin afectar la lgica del circuito. 4- Simule por programa la operacin de los circuitos vistos en la primera seccin de este capitulo, referente a aleas y obtenga las grficas correspondientes por computadora. 5- Disee un programador de tiempos para una lavadora de ropa. 6- La seal internacional de peticin de auxilio es SOS en clave Morse, investigue en que consiste y disee un circuito que encienda y apague una luz de acuerdo a ella. PRACTICA VIII. 1 Disee y construya un semforo que haga parpadear la luz verde cinco segundos antes de que cambie a amarilla. 2 Disee y construya un semforo que incluya tiempos para las luces laterales. 3 Disee y construya un circuito que opere 15 segundos despus de sensar intrusin. 4 Utilice un 555 para construir un oscilador variable, con ajustes independientes de los tiempos en niveles de salida alto y bajo. 5 Utilice un 555 y 7 interruptores de contacto momentneo para disear y construir un pequeo piano de juguete. Las frecuencias que deseamos producir son de 220, 440, 880, 1760, 3520, 7040 y 14080 Hz. La salida del oscilador (pata 3 del 555) se conectar a una bocina de 8 ohms en serie con un capacitor de 4.7 macrofarads.

CAPITULO XI CIRCUITOS SECUENCIALES ASINCRONOS

OBJETIVO: ESTABLECER LAS BASES DEL DISEO DE CIRCUITOS SECUENCIALES SIMPLES, CONSTRUIDOS CON LAS COMPUERTAS LGICAS BASICAS.

CIRCUITOS SECUENCIALES. En los captulos previos se han estudiado circuitos lgicos combinatorios, cuyas salidas dependen exclusivamente de las condiciones de las entradas actuales. Sin embargo, muchas veces se requieren circuitos capaces de recordar eventos pasados, memorizando por ejemplo si ocurri una falla y cual fue la primera que se present. Otro posible ejemplo sera el de llevar la cuenta del nmero de vehculos que han entrado a un estacionamiento, detectar una secuencia de nmeros en un sistema de acceso electrnico, etc. Adems muchos circuitos para tomar sus decisiones deben tener donde guardar la informacin de entrada y salida, por ejemplo para sumar dos nmeros con una calculadora debemos escribirlos primero en dos distintas memorias temporales y despus de efectuar la operacin aritmtica, debe guardarse el resultado en una memoria temporal para poderlo emplear posteriormente. En otras palabras, se requieren circuitos que incluyan elementos de memoria. Los circuitos lgicos cuyas salidas dependen no slo de las entradas actuales sino tambin de la secuencia de entradas anteriores se denominan secuenciales. El biestable o slip-flop es el elemento secuencial bsico pues permite recordar un bit de informacin (celda bsica de memoria). Los biestables corresponden a compuertas convencionales con retroalimentacin, como vemos en algunos ejemplos, sin embargo en algunas ocasiones es preferible manejarlos como un breve bloque lgico (memoria) para simplificar su representacin. Existen comercialmente numerosos tipos de integrados que efectuan la funcin de memorizar, algunos de ellos agrupan a decenas de miles de biestables en su interior. Al trabajar circuitos secuenciales, encontramos que tengan diferentes salidas para un mismo juego de valores de entrada, dependiendo del estado actual en que se encuentran. Para ilustrar este concepto veamos un ejemplo sencillo de lgica secuencial, que es el control del llenado de un tinaco. Considere que se tiene un tanque elevado en el cul existen dos sensores de nivel denominados A (alto) y B (bajo). Se requiere un circuito que encienda el motor de una bomba, si el nivel del agua en el tanque es menor que el nivel bajo (B=0); la bomba deber permanecer encendida hasta que el agua alcance el nivel alto (A=1), condicin con la cul se apaga. Posteriormente el consumo del agua en el edificio har que se valla vaciando el tinaco y el agua descender del nivel alto (A=0), pero la bomba debe seguir apagada y permanecer as hasta que se tenga un nivel inferior al bajo (B=0), que es la condicin de encendido. El ciclo descrito se efecta indefinidamente.

Operacin de las bombas en funcin de A y B.

Apagada Estado anterior Encendida

Cuando A=0 y B=1, la bomba permanece en su estado anterior. Para un mismo juego de entradas (A=0 y B=1) tenemos dos salidas diferentes! Al disear circuitos secuenciales, debemos considerar no slo las entradas, sino los posibles estados que pueden asumir el circuito. Por ello estos circuitos se modelan como maquinas con un numero finito de estados. Esta forma de trabajar nos permite partir el problema en secciones ms fcilmente manejables: la seccin de memoria, en que se disea como pasar de un estado a otro. La seccin decodificadora, en que se disea como obtener una salida en funcin de un juego de entradas (lgica combinacional).

LOGICA SECUANCIAL Los primeros estudios tericos referentes a mquinas de estados finitos, los realizaron Meal y Moore hace mas de tres dcadas y se lleg a establecer que cualquier circuito secuencial debe ajustarse a alguno de los siguientes modelos:

MAQUINA SECUENCIAL CLASE A (Maquina de Mealy), la salida es funcin del estado actual de la memoria y de las entradas actuales.

DECODIFICADOR DE ESTADO SIGUIENTE MEMORIA

DECODIFICADOR DE SALIDA

MAQUINA SECUENCIAL CLASE B (Mquina de Moore) la salida es funcin del estado actual de la memoria.

DECODIFICADOR DE ESTADO SIGUIENTE MEMORIA

DECODIFICADOR DE SALIDA

MAQUINA SECUENCIAL CLASE C, no emplea decodificador de salida.

DECODIFICADOR DE ESTADO SIGUIENTE MEMORIA

MAQUINA SECUENCIAL CLASE D, observe que no existe retroalimentacin de la memoria al decodificador de estado siguiente.

EN TR AD A

SAL IDA DECODIFICADOR DE ESTADO SIGUIENTE MEMORIA

MAQUINA SECUANCIAL CLASE E, es la ms simple y consiste nicamente de la seccin de memoria.

EN TR AD A

SAL IDA MEMORIA

CIRCUITOS SECUENCIALES. Los circuitos secuenciales pueden ser clasificados como: ASINCRONOS, accionados directamente por cambios en sus entradas. SINCRONOS, slo pueden cambiar de estado en sincrona con los pulsos de reloj.

Si el circuito secuencial regresa a su estado inicial despus de un nmero especificado de cambios se dice que es CICLO. Caso contrario se le denomina NO-CICLICO. Una forma conveniente de describir el comportamiento de un circuito secuencial es gratificante, mediante diagramas de estado. El diagrama de estado muestra los posibles estados que puede asumir el circuito, las condiciones de cambio de estado y los valores de las salidas para cada estado. Le asignaremos un nmero binario a cada estado, cada bit de dicho nmero corresponder a una variable de estado. Con n variables de estado podemos representar hasta 2n distintos estados. La figura siguiente, corresponde al diagrama de estados del control de llenado de un tinaco, descrito con anterioridad.

E=0 M=0

E=1 M=1

Al disear circuitos asncronos, es conveniente que al paso de un estado al siguiente involucre slo el cambio de una variable de estado para evitar posibles errores transitorios (aleas) del decodificador si al darse un cambio multivariable ocurriera una transicin ms rpida que otra. Para ello al numerar los estados utilizamos el cdigo Gray. Para disear el circuito lgico secuencial podemos especificar en una tabla de verdad cul salida deseamos que ocurra si se tiene una determinada entrada, estando en un cierto estado. EJEMPLO- Control de bombeo Cuando el agua baja del nivel B, debe encenderse la bomba hasta que alnace el nivel A. La bomba permanece apagada hasta que el agua baje de B.

E=0 M=0

E=1 M=1

Para disear la seccin de memoria debemos determinar como cambiamos de estado en funcin del estado actual y los valores de las entradas. Para ello podemos utilizar una tabla de verdad como la siguiente. Estado actual 0 0 0 0 1 1 1 1 Entradas A B 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 Estado futuro 1 0 * 0 1 1 * 0

Procedamos a resolver esta tabla de verdad 0 1 0 0 * 1 1 1 0 *

E=B+E.(A) La ecuacin indica que E = 1 si ahora B = 0 o si desde antes E = 1 y ahora A = 0

La ecuacin obtenida corresponde a al ecuacin universal de los circuitos secuenciales, que dice: Ef = (condicin de encendido) + Ea * (condicin de apagado)

Esta ecuacin nos indica que el estado futuro valdr uno lgico, si se da la condicin de encender o bien continuar encendido si no se dan las condiciones a apagar. El circuito lgico correspondiente es:

Ejemplo.- Supresor de ruidos en interruptores producido por rebote de contactos. Al accionar un interruptor, el rebote mecnico en los contactos que chocan en su interior origina pequeas espigas de ruido, con duracin de varios milisegundos, que deben ser suprimidas ya que son perfectamente detectables por el circuito lgico, que los tomar como varios pulsos.

En el diagrama elctrico propuesto, slo una de las dos entradas puede valer uno lgico, en cualquier instante de tiempo. Si el interruptor est hacia arriba la entrada S vale uno, si el

interruptor est hacia abajo la entrada R vale uno y si el interruptor est en posicin intermedia, las dos entradas valen cero simultneamente.

La lgica con que deseamos que opere el circuito es la siguiente: *Cuando S=1 y R=0 la salida Q=1 *Cuando S=0 y R=1 la salida es Q=0 *Cuando S=0 y R=0 la salida debe conservar su estado anterior. *No es posible tener S=1 y R=1 simultneamente. Estado actual Qa 0 0 0 0 1 1 1 1 Entradas S 0 0 1 1 0 0 1 1 R 0 1 0 1 0 1 0 1 Estado futuro Qf 0 0 1 * 1 0 1 *

0 0 * 1

1 1 * 1

Q= 0 Q= 1

M= 0

S R

Q Q

El circuito obtenido se denomina biestable SR (Set-Reset) y corresponde a la unidad bsica de memoria. Ejemplo.- Se requiere sincronizar los pulsos de informacin recibidos, con los pulsos de reloj propio. Como mximo puede recibirse un pulso de datos cada dos pulsos de reloj:

SINCRONIZAD

Del diagrama de tiempos vemos que el proceso se inicia al recibirse un pulso de datos (D=1), debemos esperar a tener C=0 y despus C=1 para hacer la salida uno (Z=1), reestableciendo al tener nuevamente C=0.

00

Z= 0

01

Z= 0

11

Z= 0

10

Z= 0

Del diagrama de estados obtenemos tablas de verdad, la que nos indica como cambiar de estado y la del decodificador de salida. En la tabla de cambio de estado anotamos para todos los estados posibles, bajo que condicin pasamos a otro estado. Por ejemplo si estamos en elestado 00 pasamos al estado 01 si D=1, o nos seguimos en el estado 00 si D=0. Debemos encontrar cuanto vale el estado futuro de la funcin del estado actual y de las entradas actuales.

AB

AB si D=1 si D=0

00-----01 00-----00

o sea que el siguiente valor de A es cero y el siguiente valor de B de pende de la variable D (B vale 1 si D vale 1, B vale 0 si D vale 0). Procedemos de igual manera para cada estado posible hasta obtener la tabla de la izquierda. Tambin determinamos cuanto vale cada salida dependiendo del estado en que nos encontremos, con nuestra tabla de la derecha

Estado actual A B 0 0 0 1 1 0 1 1

Estado futuro A B 0 D C 1 C 0 1 C

A 0 0 1 1

B 0 1 0 1

Z 0 0 1 0

Procedemos a continuacin a resolver estas tablas de verdad. La tabla de la izquierda es una tabla de verdad compactada que las variables D y C realmente son entradas, si lo desea puede proceder a descompactarla antes de resolverla.

0 0 C

1 C 1

A/B 0 1

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

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

0 D 1

1 O C

A/B 0 1 B= A * D + B * C + A * B B= ( A * D ) + B * ( C + A ) A= ( D * A ) + B * ( C + A )

Observe que intencionalmente hemos llevado las ecuaciones al formato de la ecuacin universal de circuitos secuenciales: Q = S + Q * (R) Donde S = condicin de encendido R = condicin de apagado

Estas ecuaciones nos indican que A se enciende cuando B=1 y C=0, y que A se apaga cuando B=0 y C=0. Por su parte B se enciende cuando A=0 y D=1 y B se apaga cuando A=1 y C=1. Compruebe en el diagrama de estados de validez de ello. En lo que respecta al decodificador de salida podemos ver que en este caso slo un rengln de la tabla de verdad vale uno, por lo que no hay reduccin posible. La ecuacin del decodificador es: Z = A * B Podemos apreciar de estas ecuaciones que tenemos tres secciones perfectamente delimitadas decodificador de entrada, memoria y decodificador de salida.

B C B A D A B. B. A. A.

El circuito corresponde a una mquina secuencial clase B o mquina de Moore.

DETECTOR DE FALLA

Se requiere disear un circuito que opere bajo las siguientes condiciones: Al presentarse la falla se apaga el foco verde, prende el foco rojo y suena la campana. La campana deja de sonar cuando el operador oprime el botn de enterado. Cuando la falla desaparece se apaga el foco rojo, prende el verde y suena la campana. La campana deja de sonar cuando el operador oprime el botn de enterado. Queda listo el circuito para detectar una nueva falla.

00 C 01 C 11 C 10 C

V, R,

V, R,

V, R,

V, R,

Diseemos primero el decodificador de entrada y de memoria de estados (a partir de la tabla de cambio de estados) y despus el decodificador de salida (a partir de la tabla que nos indica los valores de las salidas para cada estado).

A 0 0 1 1

B 0 1 0 1

A 0 E E 1

B F 1 0 F

A 0 0 1 1

B 0 1 0 1

V 1 0 1 0

R 0 1 0 1

C 0 1 1 0

Los mapas correspondientes a la primera tabla son:

0 0 E

1 E 1

A/B 0 1

A=B*E+A*E+A*B A=(B*E)+A*(E+B) A=(B*E)+A*(E+B)

0 D 1

1 O C

A/B 0 1 B=A*F+B*F+A*B B=(A*F)+B*(F+A) B=(F*A)+B*(F+A)

Observe que estas mismas ecuaciones pueden obtenerse directamente del diagrama de estados, identificando las condiciones de encendido y de apagado de las variables de estado. El decodificador de salida es muy simple, como podemos observar de la tabla de verdad de la derecha. Sus ecuaciones son:

B. B. A.

Este esquema funcional corresponde a una maquina de Moore.

Es usual que un detector de falla tenga un interruptor de prueba, por lo que el circuito resultante quede as:

DETECTOR DE FALLA

Ejemplo.- Control de un motor.

PERMANENTE MANUAL AUTOMATICO

P M A CONTROL Z

1 Si P=1 y M=A=0 el motor arranca y sigue encendido aun si despus P=0. 2 Si M=1 y A=0 el motor arranca (o sigue encendido si previamente P=1) durante todo el tiempo que dure M. Cuando M=0 el motor se apaga. 3 Si A=1 el motor se apaga Para resolver el problema planteamos primero el diagrama de estados.

Q=0 Z= M * A M= 0 Q=1 Z=1

Tambin de la figura podemos encontrar directamente la ecuacin del decodificador de salida. Vea que Z=1 si Q=1 o vale uno si M=1 y A=0 cuando Q=0. La ecuacin del decodificador de salida es: Z = M * A+Q La solucin es entonces:

DECODIFICADOR DE ENTRADA

DECODIFICADOR DE SALIDA

Observe que el diseo anterior corresponde a una maquina de Mealy, ya que el decodificador de salida maneja como entradas a la memoria Q y a las seales procedentes del exterior. Una aplicacin usual de los biestables SR, vistos previamente, es en circuitos que memorizan si en algn momento pasado se present una falla.

Ejemplo memorizar falla.

Q=0 S Q Z= M *A M=0 Q=1 Z =1

Muchos sistemas industriales tienen dispositivos de entrada que monitorean constantemente las condiciones del sistema para garantizar que no se opere en situacin de riesgo. Al existir una condicin peligrosa los dispositivos deben desactivar al sistema (disparo de protecciones) y hacer sonar la campana de alarma para alertar al operador. Desafortunadamente cuando el operador llega al lugar de los hechos la causa del problema puede haber desaparecido o el hecho de estar desactivado el sistema hace posible saber exactamente cul condicin lo origin. Por ello se requiere un circuito que memorice la primera falla e ignore las subsecuentes, que ocurren precisamente por la desactivacin del sistema. En otras palabras debe admitirse la entrada de la informacin sino est sonando la campana de alarma (para recibir la primera falla) e impedir el paso de las siguientes (al momento d sonar la campana amarrando la falla). Directamente del planteamiento del problema vemos que por cada lnea de falla se maneja su biestable (bscula SR) para amarrarla y una compuerta de entrada que permita el paso de informacin mientras no est amarrada la alarma y la bloquee despus de llegar la primera falla.

Ejemplo- Disee un circuito que indique si la duracin de un pulso de entrada es menor que un tiempo preestablecido.

COMPARADOR MONOESTAB LE DE TIEMPOS

El diagrama de estados correspondiente es:

C=0 Z= M *A M=0 C=1 Z =1

SC = P * M RC = R

El circuito resultante se muestra a continuacin:

La seal M la produce un temporizador (multivibrador monoestable). Podemos utilizar un circuito como el anterior para conocer si la velocidad con que gira la flecha de un motor es mayor que la de referencia. Esto ocurre cuando se desboca un motor. Para ello acoplamos a la flecha del motor un sensor ptico o magntico que produzca un pulso por cada vuelta, a mayor velocidad del motor ser menor la duracin de los pulsos resultantes. Ejemplo- Disee un circuito con dos entradas X y Y y dos salidas V (Verde) y R (Roja), tal que la luz verde se encienda si llega primero el pulso X y despus el Y. La luz roja debe prender si el orden de llegada es el opuesto.

Los pulsos producidos por X y Y nos permiten conocer en que sentido gira el disco ranurado.

Q=0 V=X*Y Q=1 Z= M * A M =0 R=X*Y La memoria corresponde a: SQ = X * Y RQ = X * Y

Las ecuaciones del decodificador de salida son: V=Q*X*Y R=Q*X*Y

El circuito resultante es el siguiente:

Ejemplo- Disee un circuito que entregue un unico pulso de reloj, cada vez que se accione manualmente un interruptor.

M R

El diagrama de estados propuesto es el siguiente:

00 Z=0 00 Z=0

00 Z=0 00 Z=0

X 0 0 1 1

Y 0 1 0 1

X 0 C M 1

Y M*C 1 0 C

A continuacin se procede a encontrar las ecuaciones correspondientes a los cambios de estado y las del decodificador de salida.

0 O C

1 M 1

X/Y 0 1

X = C * Y + M * X + X * Y = C * Y + X (M + Y) X = C * Y + X * (M + Y)

La ecuacin anterior nos indica que X enciende (vale uno) si Y=1 y C=1; o que sigue encendida si no se da la condicin de apagado que es Y=0 y M=0.

Y = X * (M * C) + X * Y + C * Y
0 M*C 1 1 O 0 X/Y 0 1

Y = X * M * C + Y * (X + C)

Esta escuacin nos dice que la condicin de encendido de Y es X=1, M=1, C=0 y que la condicin de apagado de Y es que X=1 y C=0. Y vale uno si se da la condicin de encendido, o vale uno si estando encendido no se da la condicin de apagado. X 0 0 1 1 Y 0 1 0 1 Z 0 0 0 1

El decodificador de salida est dado por: Z=X*Y

Dibuje usted el diagrama lgico correspondiente a estas ecuaciones, identificando las secciones correspondientes al decodificador de entrada, memoria y decodificador de salida.

Ejemplo- Se requiere disear un semforo para un cruce de ferrocarril que encienda la luz roja cuando el tren entra a las secciones A o C y la apague despus que pase por B.

00 V,R 00 V,R

00 V,R 00 V,R

Del diagrama de estados obtenemos la tabla de verdad estado presente-estado y la tabla de verdad del decodificador de salida. X 0 0 1 1 Y 0 1 0 1 X 0 B A+C 1 Y A+C 1 0 B 0 O B 1 A+C 1 X/Y 0 1 0 A+C 1 1 O B X/Y 0 1

X= B*Y + X*(A+C) + X*Y X= B*Y + X*(A+C+Y)

Y= X*(A*C)+B*Y+X*Y Y= X*(A*C)+Y*(B*X)

X 0 0 1 1

Y 0 1 0 1

V 1 0 1 0

R 0 1 0 1 V = Y testada R=Y

Ejemplo- Disee un circuito cuya salida tome el valor que tenga la entrada; al ocurrir el borde descendente de la seal de reloj (biestable D sncono).

BIESTABLE D

El diagrama de estados propuesto es:

00 Q=O

00 Q=0

00 Q=1

00 Q=1

La tabla de verdad estado presente-estado siguiente correspondiente es: X 0 0 1 1 Y 0 1 0 1 X 0 C C 1 Y C*D 1 0 C*D 0 O C 1 C 1 X/Y 0 1 0 C*D 1 1 O C+D X/Y 0 1

X= C*Y + C*X + X*Y X= C*Y + X*(C+Y)

Y= X*C*D + X*Y + (C+D)*Y Y= X*C*D + Y *

La tabla del decodificador de salida es: X 0 0 1 1 Y 0 1 0 1 Q 0 0 1 1 Q=X

Dibuje el diagrama correspondiente al biestable D, diseado en este ejemplo. Ejemplo- Disee un circuito que entregue un pulso completo de salida para cada dos pulsos completos de entrada.

DIVISO R
El diagrama de estados propuesto es:

00 Q=O

00 Q=0

10 Q=1

11 Q=1

Obtenga la tabla de verdad estado presente-estado siguiente y las ecuaciones correspondientes: X 0 0 1 1 X= Y 0 1 0 1 X Y

X/Y 0 1

X/Y 0 1

Y=

La tabla del decodificador de salida es: X 0 0 1 1 Y 0 1 0 1 Q

Su diagrama esquematico es:

VERIFICACIN COMPUTACIONAL DE LGICA SECUENCIAL Al disear circuitos secuenciales, proponemos diagramas de estados que nos indican como pasar de un estado a otro, al tenerse ciertas condiciones. Pero muy frecuentemente surge la duda referente a si el diagrama propuesto realmente cumple con la lgica deseada o no la cumple. Procedemos entonces a una corrida en papel y sobre el propio diagrama determinamos que sucede para una cierta secuencia de entradas. Esto es laborioso y propenso al error (generalmente vemos el resultado que queremos ver y no necesariamente el comportamiento real del diagrama lgico). Tenemos otra buena alternativa: representar e diagrama lgico como un programa de computadora. De hecho el diagrama de estados es una versin simplificada de los diagramas de flujo que utilizamos para disear programas computacionales. Tomemos por ejemplo el control de llenado de un tinaco visto previamente. Su diagrama de estado es el siguiente:

E=0 M=0

E=1 M=1

Una seccin de programa que cumple con este diagrama d estados es:

SELECT CASE Estado CASE 0 Motor$ = 0 IF nivelBajo$ = 0 THEN Estado = 1 CASE 1 Motor$ = 1 IF nivelAlto$ = 1 THEN Estado = 0 END SELECT

Podemos simular que originalmente el tinaco est vaco, por lo que los sensores de nivel valen Bajo=0 y Alto=0. Se tiene la condicin encendido de la bomba, por lo que podemos considerar que el nivel de agua subir primero a un nivel intermedio (Bajo=1 y Alto=0) despus alcanzar su nivel mximo (Bajo=1 y Alto=1), dndose la condicin de apagado de bomba. Dado que hay un consumo de agua por los usuarios, el nivel descender a un nivel intermedio (B=1 y A=0) y finalmente a un nivel mnimo (B=0 y A=0), reestableciendose la condicin inicial. Ante este planteamiento los estmulos de entrada propuestos son: NivelBajo$ = 0000111111111111111111111000000000000 NivelAlto$ = 0000000000000111111000000000000000000 El listado completo del programa correspondiente est en el apendice C. Al correrlo obtenemos el siguiente resultado: Un segundo ejemplo, de verificacin computacional de la lgica secuencial, es el del supresor de ruido de robote. Su diagrama de estados se muestra a continuacin:

Q= 0 Q=1 M= 0

La seccin de programa correspondiente es: SELECT CASE estado CASE 0 Salida$ = 0 IF S$ = 1 THEN estado = 1 CASE 1 Salida$ = 1 IF R$ = 1 THEN estado = 0 END SELECT

Las excitaciones propuestas en las entradas S y R, donde debemos simular un pulso con ruido de rebote, son:

SSS$ = 00011001100111111111111111111111100000000000000000000 RRR$ = 00000000000000000000000000000000000011001100111111111 El resultado obtenido al correr el programa es: S= R= Q=

Un tercer ejemplo de verificacin computacional, es el detector de cual de dos seales lleg primero X o Y (V=1 si X le gana a Y, R=1 si Y le gana a X). A continuacin se presenta su diagrama lgico y la seccin de programa correspondiente. SELECT CASE estado CASE 0 IF X$ = 1 AND Y$ = 1 THEN V$ = 1 ELSE V$ = 0 R$ = 0 IF X$ = 0 AND Y$ = 1 THEN estado = 1

CASE 1 V$ = 0 IF X$ = 1 AND Y$ = 1 THEN R$ = 1 ELSE R$ = 0 IF X$ = 0 AND Y$ = 0 THEN estado = 0 END SELECT Los estmulos del exterior que proponemos son: XXX$ = 0000000001111110000000000000000111111000000000000 YYY$ = 0000000000001111110000000000111111000000000000000 El resultado obtenido de la simulacin es:

TERMINO CLAVE BIESTABLE FLIP-FLOP ESTADO LOGICA SECUENCIAL MAQUINAS DE ESTADOS FINITOS MAQUINA DE MEALY MAQUINA DE MOORE CIRCUITOS SECUENCIALES ASINCRONOS CIRCUITOS SECUENCIALES SINCRONOS CIRCUITOS SECUENCIALES NO CICLICOS DIAGRAMA DE ESTADO ECUACIN UNIVERSAL DE LOS CIRCUITOS SECUENCIALES TABLAS DE VERDAD ESTADO PRESENTE/ESTADO SIGUIENTE BIESTABLE SR BIESTABLE D

CUESTIONARIO 1- Indique las diferencias que existen entre lgica combinacional y lgica secuencial. 2- Dibuje los diagramas a bloques de los diversos tipos de mquinas secuenciales de estados finitos. 3- Disee un circuito con entrada Z y dos salidas X y Y, que cumplan con el siguiente diagrama de estado: FALTA DIAGRAMA

4- Disee un circuito que cumpla con el siguiente diagrama de estado: FALTA DIAGRAMA

5- Disee un circuito secuencial con una entrada de reloj y dos salidas S1 y S2, que cumple con el siguiente diagrama de tiempos: FALTA DIAGRAMA

6- Modifique el biestable SR, agregandole una entrada adicional C (reloj), tal que cuando C valga uno se comporte como un biestable SR convencional y cuando C valga cero mantenga la salida su valor previo.

7- Disee un circuito que cumpla con la siguiente tabla de verdad (biestable tipo T). En ella
Qn corresponde al estado actual y Qn+1 corresponde al estado siguiente.

PRACTICA IX 1- Utilice un integrado 7402 para construir dos supresores de ruido de rebote en interruptores y verifique su correcta operacin. Utilcelos para introducir las seales de entrada con que probar el funcionamiento de otros circuitos secuenciales de esta prctica. 2- Construya y compruebe la correcta operacin de los siguientes circuitos (diseados como ejemplos de este capitulo): (a) Control de bombeo (b) Detector de falla (c) Indicador de primera falla (d) Semforo para va de tren (e) Control de motor (f) Entregar un solo pulso de reloj (g) Detectar cul de dos seales (X o Y) llega primero

Utilice un integrado 555, configurado como oscilador, para producir los pulsos de reloj requeridos. 3- Verifique computacionalmente la lgica de sus diseos con que respondi los problemas 3 a 7 del cuestionario anterior.

CAPITULO XII CIRCUITOS SECUENCIALES SINCRONOS

Objetivos: ESTABLECER UNA METODOLOGA PARA EL DISEO DE CIRCUITOS SECUENCIALES SINCRONOS EMPLEANDO COMO BLOQUES CONSTRUCTIVOS A MULTIVIBADORES BIESTABLES.

BIESTABLES. A continuacin se presentan los principales tipos de multivibradores biestables, que son los elementos bsicos de memoria, y que estn disponibles comercialmente para el diseador de circuitos lgicos.

R 0 1 0 1

Q Q 0 1 *

Q= 0 Q= 1

0 0

1 1

M= 0

La lgica con que opera el biestable SR es la siguiente: La salida no cambiar de valor cuando S=0 y R=0 La salida tomar el valor de 0 cuando S=0 y R=1 La salida tomar el valor de 1 cuando S=1 y R=0 Su ecuacin es Q = S + Q * (R) J K 0 1 0 1 Q Q 0 1 Q

0 0 1

Q= 0 Q= 1

M= 0

La lgica con que opera el biestable JK es: La salida mantendr su valor al tenerse J=0 y K=0 La salida tomar el valor de cero cuando J=0 y K=1 La salida tomar el valor de uno cuando J=1 y K=0 La salida cambiar de valor al tenerse J=1 y K=1

La ecuacin que define el comportamiento del biestable JK es: Q = (Q * J + Q * K ) D 0 D 0 1

Q= 0 Q= 1

Q D Q

M= 0

Su ecuacin es: Q=D

La salida toma el valor de entrada al recibirse el pulso de reloj. BIESTABLE T

Q T Q

T 0 0 1 1

Q 0 1 0 1

Q 0 1 1 0

Q= 0 Q= 1

M= 0

Su ecuacin es: Q = (Q * T + Q * T) La salida cambia de valor al recibirse un pulso completo de entrada. El biestable T, bajo ciertas condiciones, tiene varios modos de operacin indeseables e incluso puede llegar a oscilar, cuando es disparado por nivel, si la duracin del pulso de reloj permite mas de un cambio de valor. Considerando como son disparados, los biestables pueden clasificarse como: -ASINCRONOS -SINCRONOS, que a su vez se subdividen en: * Disparados por nivel de reloj * Disparados por borde de reloj El siguiente circuito corresponde a un biestable S-R disparado por nivel de reloj:

Q Q

El tiempo en nivel alto debe ser mayor que el tiempo de disparo del biestable, pero lo suficientemente corto para permitir un nico cambio en cada pulso de reloj. Las figuras siguientes muestran como se representan los biestables disparados por nivel.

S > R

S > R

Los biestables disparados por borde de reloj, incorporan en su interior circuitera para producir el pulso que los habilita automticamente, al detectar el arribo del borde ascendente (o descendente en su caso) de la seal de reloj.

S > R

Una flecha hacia arriba en la entrada de reloj indica que dispara por borde ascendente. Si la flecha es hacia abajo indica que dispara en borde descendente. Otras entradas usuales son preestablecer (preset) y borrar (clear). LOS BIESTABLES COMO BLOQUES LGICOS. Los fabricantes de circuitos integrados ponen a disposicin del deseador de circuitos digitales diversos tipos de multivibradores biestables, tales como el 74LS279 (SR cuadruple), el 74LS276 (JK cuadruple) y el 74LS374 (D octal). Podemos utilizar a estos biestables como bloques lgicos, en lugar de armarlos con compuertas bsicas como hemos hecho previamente. Para ello partimos de la tabla de cambio de estados (estado presente/estado siguiente) para obtener las ecuaciones de excitacin del biestable que seleccionamos. Veamos primero varios ejemplos en que la seccin de memoria se disea con biestables D. En este caso de la tabla de estado presente/ estado siguiente se pasa directamente a implementar un circuito con biestables D, ya que la ecuacin obtenida al resolver la tabla corresponde a la excitacin del biestable. DISEOS CON BIESTABLES D Ejemplo- Disee un circuito con una entrada de reloj R y tres salidas A, B, C, que produzca la secuencia 000, 001, 011, 111, 100 Contador de anillo

000 001 011 111 110 100

Estado presente A B C 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1

Estado siguiente A B C 0 0 * 1 0 * 1 1 0 1 * 1 0 * 1 1 1 1 * 1 0 * 0 0

Se utiliza un mapa para cada una de las variables de salida, obteniendo las ecuaciones siguientes: 0 0 0 1 1 0 1 1 A/B*C 00 01 11 10

0 0 1 1

1 0 1 0

A/B*C 00 01 11 10

0 1 1 1

1 0 0 0

A/B*C 00 01 11 10

DA = B

DB = C

DC = A

El circuito correspondiente es el siguiente:

DC C ^ C

DB B ^ B

DA A ^ A

Facilmente puede expandirse el diseo para trabajar un mayor nmero de bits. Observe que exceptuando la primer entrada, la entrada a cada etapa corresponde a la salida afirmada de la etapa previa. La entrada de la primer etapa corresponde a la salida negada de la ltima etapa. EJEMPLO- Disee un circuito que detecte el arribo de tres nmeros consecutivos a su entrada la seal de entrada es coincidente con los pulsos de reloj.

E ^

Procedamos primero a resolver la parte secuencial que produce el cambio de estados y despus la parte combinacional correspondiente al decodificador de salida.

00 Z=0 11 Z=E

01 Z=0 10 Z=0

A 0 0 1 1

B 0 1 0 1

A 0 E * E

B E E * E

Al llenar la tabla de estado presente/estado siguiente, observe que es un circuito sncrono, que cambia de estado en el borde ascendente de la seal de reloj, conforme a la siguiente lgica: *Del estado 00 pasamos al estado 01 si ocurre E. En ambos casos la variable A vale 0; en lo que respecta a la variable B tenemos que vale 0 si E vale 0 y vale 1 si E vale 1. El valor futuro de B depende de E. *Del estado 01 pasamos a 11 si ocurre E o al estado 00 si ocurre E negada (o sea A y B valen uno si E vale uno, A y B valen cero si E vale cero). Los valores futuros de A y de B dependen directamente de E. *Del estado 11 pasamos al estado 00 si ocurre E negada (o sea A y B valen cero si E vale cero, A y B valen uno si E vale uno). Los valores futuros de A y de B dependen de E.

0 0 E

1 * E

A/B 0 1

0 E E

1 * E

A/B 0 1

A 0 0 1 1

B 0 1 0 1

Z 0 0 * E

El circuito resultante es el siguiente:

DB B ^ B

DA A ^ A

Ejemplo- Disear un contador ascendente/descendente mdulo 6, de distancia unitaria. Cuyo diagrama de estados es el de la figura siguiente.

000 001 011 010 110 100

A 0 0 0 0 1 1 1

B 0 0 1 1 0 0 1 1

C 0 1 0 1 0 1 0 1

A X 0 X 0 X * X *

B 0 X 1 X X * X *

C X X X X 0 * 0 *

En lo referente a la parte secuencial, tenemos: 0 X 0 0 X 1 X * * X A/B*C 00 01 11 10

DA = X * (B*C) + X * (B*C)

0 0 X X 1

1 X * * X

A/B*C 00 01 11 10

DB = X*(A) + X*(C) + (A *B*C)

0 X X X X

1 0 * * 0

A/B*C 00 01 11 10

DC = X * (A*B) + X * (A *B)

El circuito resultante es el siguiente:

Una variante de los circuitos lgicos programables, incorpora un biestable tipo D en cada lnea de salida, simplificando el diseo de circuitos secuenciales. La figura siguiente muestra el diagrama lgico del PAL16R6 de Advances Micro Devices, Inc. Observe que existe una seccin combinacional de entrada, una seccin de memoria y una seccin combinacional de salida, por lo que pueden implementarse con estos dispositivos cualquier tipo de maquina secuencial.

Ejemplo- Alarma de una falla. Se requiere un circuito que nos avise cuando se presenta una falla y cuando termina la misma. Debe operar con la siguiente lgica: Si hay falla encender LED 1 y sonar campana. Al oprimir botn de enterado, encender LED 2 y apagar campana. Al concluir la falla apagar LED 1 y sonar campana. Al oprimir botn de enterado apagar LED 2 y apagar campana.

ALARMA

Q=0 L1=F L2=O C=F

Q=1 L1=F L2=1 C=F

El diagrama de estados corresponde al biestable D, si la seal E la tomamos como el pulso de reloj. El decodificador de salida est dado por:

Q 0 1

L1 F F

L2 0 1

C F F

L1=F L2=Q C=F*Q + F*Q

Fcilmente puede agregarse una entrada de prueba al circuito de alarma utilizando una compuerta O y un interruptor de contacto momentaneo, como se muestra la figura:

D Q

La alarma puede expanderse para atender mltiples seales de falla,

Si un grupo numeroso de sensores de falla se encuentran prximo entre s pero distante del centro de control puede recurrirse al Multiplexaje en tiempo en la transmisin de alarmas.

DISEOS CON BIESTABLES J-K. Es posible partir de la tabla de estado presente/estado siguiente para disear circuitos secuenciales que empleen biestables J-K. Al examinar la funcin que define el biestable J-K, vemos que: Si Q=0 entonces Q=J y no cuenta el valor de K. Si Q=1 entonces Q=K y no cuenta el valor de J. Tomando esto en consideracin es sencillo encontrar las ecuaciones correspondientes a una funcin secuencial sincrona dada. Para ello tomamos la mitad del mapa en la cul la variable de salida vale cero (apagado) y llenamos el resto del mapa con asteriscos (irrelevancias), procedimiento despus a encontrar la condicin de encendido. A continuacin se toma la mitad del mapa para la cul la variable vale uno (prendida), llenamos la mitad restante con asteriscos (irrelevancias), y procedemos a determinar la condicin de no apagado.

1 1 1 1 1 0

0 0 0

0 0 1

A 0 0

B 0 0 1 1 0 0 1 1

C 0 1 0 1 0 1 0 1

A 0 0 0 1 1 1 1 0

B 0 1 1 0 0 1 1 0

C 1 0 1 0 1 0 1 0

0 1 0

0 0 1 1 1 1

1 0 1

1 0 0

0 1 1

Tomamos primero el mapa correspondiente a la variable de estado A y lo dividimos en dos mitades. En la cul A est apagada encontramos la condicin de encendido J A, de la mitad en la que la variable A est encendida encontramos como no apagar (la negacin KA).

0 0 0 1 0

1 1 1 0 1

A/B*C 00 01 1 10

0 0 0 1 0

1 * * * *

A/B*C 00 01 1 10

0 * * * *

1 1 1 0 1

A/B*C 00 01 1 10

Mapa de A

JA = B*C

KA = B+C KA = B*C

Del mapa correspondiente a la variable de estado B, encontramos la condicin de encendido J B, de la mitad en que la variable vale cero, y la negacin de la condicin de apagado de la mitad en que la variable vale uno.

0 0 1 0 1

1 0 1 0 1

A/B*C 00 01 1 10

0 0 1 0 1

1 0 1 0 1

A/B*C 00 01 1 10

0 0 1 0 1

1 0 1 0 1

A/B*C 00 01 1 10

Mapa de B

JB = C

KB = C KB = C

Procedemos de igual modo para la varible C, partiendo el mapa en dos mitades (una en que C vale cero, para encontrar como prender y otra en que C vale uno, para encontrar como no apagar).

0 1 0 0 1

1 1 0 0 1

A/B*C 00 01 1 10

0 0 1 0 1

1 0 1 0 1

A/B*C 00 01 1 10

0 0 1 0 1

1 0 1 0 1

A/B*C 00 01 1 10

Mapa de C

JC = 1

KC = 0 KC = 1

El circuito resultante es el siguiente:

Problema- Contador binario descendente

1 1 1 1 1 0 1 0 1

0 0 0

0 0 1

A 0 0 0 0 1 1 1 1

B 0 0 1 1 0 0 1 1

C 0 1 0 1 0 1 0 1

0 1 0

1 0 0

0 1 1

Trabajemos primero la variable de estado A,

A/B*C 00 01 1 10

A/B*C 00 01 1 10

A/B*C 00 01 11 10

Mapa de A

JA =

KA = KA =

Procedemos ahora con la variable de estado B,

A/B*C 00 01 1 10

A/B*C 00 01 1 10

A/B*C 00 01 11 10

Mapa de B

JB =

KB = KB =

Y despus con la variable de estado C,

A/B*C 00 01 1 10

A/B*C 00 01 1 10

A/B*C 00 01 11 10

Mapa de B

JC =

KC = KC =

El circuito resultante es:

Ejemplo- Programador universal de secuencias Disear un circuito que nos entregue una salida Z1 hasta que se cumpla la condicin X1, que nos de a la salida Z2 hasta que se cumpla la condicin X2, y en general nos da la salida Xn hasta que se cumpla la condicin Zn.

Z1 Z2 Z3 Z4Zn 1 0 0 0

Estado

Z1 Z2 Z3 Z4Zn 0 1 0 0

Estado

Z1 Z2 Z3 Z4Zn 0 0 1 0

Estado

Z1 Z2 Z3 Z4Zn 0 0 0 0

Estado

Se requiere el disear un modulo iterativo, interconectable con otros similares a l a fin de hacerlo universal, permitiendo tener secuencias de cualquier longitud.

Z1

Z2 0 0 1 1 0 0 1 1

Z3 0 1 0 1 0 1 0 1

Z1 * X3 0 * X1 * * *

Z2 * 0 X2 * X1 * * *

Z3 * X3 X2 * 0 * * *

10 0 01 0 00 1

0 0 0 0 1 1 1 1

Para resolver este problema utilizando biestables J-K obtenemos primero los mapas correspondientes a las variables de estado y de la parte en que la variable vale cero, encontramos como prender de la parte en que va la variable vale uno encontramos como no apagar.

0 * X3 * 0

1 X1 * * *

A/B*C 00 01 1 10

0 * X3 * 0

1 * * * *

A/B*C 00 01 1 10

0 * * * *

1 * * * *

A/B*C 00 01 11 10 K1 = X1 K1 = X1

Mapa de Z1

J1 = X3 * Z3

0 * 0 * X2

1 X1 * * *

A/B*C 00 01 1 10

0 * 0 * *

1 X1 * * *

A/B*C 00 01 1 10

0 * * * X2

1 * * * *

A/B*C 00 01 11 10

Mapa de Z2

J2 = X1*Z1

K2 = X2

Y despus con la variable de estado C,

0 * X3 * X2

1 0 * * *

A/B*C 00 01 1 10

0 * * * X2

1 0 * * *

A/B*C 00 01 1 10

0 * X3 * * K3 = X3 K3 = X3

1 * * * *

A/B*C 00 01 11 10

Mapa de Z3

J3 = X2*Z2

En general la condicin de encendido es: Y la de apagado es:

Jn = Xn-1 * Zn-1

Kn = Xn El circuito resultante es el siguiente:

EJEMPLO- Disear un circuito con una entrada de reloj y tres salidas denominadas X, Y, Z. Para cada cuatro pulsos de entrada se tiene que la salida X entrega un pulso completo, la Y dos pulsos y la Z tres.

X C Y Z

Se pretende primero resolver la parte secuencial, que produce cambio de estados, y despus la 00 01 parte combinacional correspondiente al decodificador de salida.

X=C Y=C 11 Z=C X=0 Y=0 Z=0

X=0
A B 0 1 0 1

Y=C 10 Z=C X=0 Y=0 Z=C

A 0 1 1 0

B 1 0 1 0

0 0 1 1

La parte secuencial corresponde a un contador a cuantro.

0 0 1

1 1 0

A/B 0 1

0 0 1

1 * *

A/B 0 1

0 * *

1 1 0

A/B 0 1

Mapa de A

JA = B

KA = B KA = B

0 1 0

1 1 0

A/B 0 1

0 1 *

1 1 *

A/B 0 1

0 * 0

1 * 0

A/B 0 1

Mapa de B

JB = 1

KB = 0 KB = 1

En lo que respecta al decodificador de salida, se tiene:

A 0 0 1 1

B 0 1 0 1

X C 0 0 0

Y C C 0 0

Z C C C 0

X=A

Y=

Z=A

El circuito resultante es el siguiente:

Jb Kb

B B

Ja Ka

A A

Parte

Parte

PROBLEMA- Se requiere disear un circuito con una entrada de reloj C y una correspondiente a un interruptor accionado manualmente M. El circuito debe entregar un pulso de salida por cada cuatro pulsos de entrada si M=0 y un pulso de salida por cada 3 pulsos de entrada si M=1.

00 M RELOJ 11 Z=C DIVISOR Z Z=0

01 Z=0 10 Z=0

En lo referente a la parte secuencial, tenemos:

A 0 0 1 1

B 0 1 0 1

Se procede a obtener la ecuaciones de la seccin secuencial: 0 1 A/B 0 1

A/B 0 1

A/B 0 1

Mapa de A

JA= 0

KA= 1 A/B 0 1

A/B 0 1

A/B 0 1

Mapa de B

JB=

KB=

Y tambien las del decodificador de salida:

A 0 0 1 1

B 0 1 0 1

El circuito resultante es el siguiente:

CONTADORES Los contadores son circuitos secuenciales sncronos, utilizados en una amplia variedad de aplicaciones. En los ejemplos anteriores hemos visto como disearlos a partir de biestables y compuertas, pero existe un gran numero de contadores comerciales disponibles como circuitos integrados. Algunos de estos circuitos agrupan otras funciones tiles tales como conversin de codigo, memorizacin de salidas y manejo de indicadores numricos o alfanumricos. En la prctica correspondiente a este capitulo se sugieren algunos ejercicios para familiarizarse con el manejo de estos dispositivos. Los contadores se clasifican de acuerdo a las siguientes caractersticas: *Sincronos o asincronos. *Por el numero de estados diferentes que pueden asumir (modulo del contador). *Por el cdigo correspondiente a la secuencia que producen. *Por su operacin en modo simple o mltiple. *Por el numero de bits de salida. En los ejemplos previos se procur trabajar con diversas variantes de contadores. Vimos un contador de anillo de tres bits de salida, un contador binario mdulo 4, un contador ascendente mdulo 8, un contador descendente mdulo 8, un contador ascendente/descendente mdulo 6 de cdigo distancia unitaria (tipo Gray), un contador de mdulo mltiple mdulo 3 o 4. Los contadores se utilizan para realizar las siguientes funciones: *Contar el nmero de pulsos de entrada, recibidos depus de un cierto instante inicial. *General secuencias preestablecidas. *Producir retrasos de tiempo.

REGISTROS. Un biestable permite almacenar un bit de informacin. Sin embargo en mltiples aplicaciones se requiere manejar grupos de bits, por ejemplo en una unidad aritmtica y lgica de ocho bits se toman los operandos de dos grupos de ocho bits cada uno (datos de entrada) y se entrega el resultado a otro grupo de ocho bits (dato de salida). Cuando los biestables se organizan en grupos para almacenar informacin multibit se les denomina registros. Los registros se clasifican de acuerdo a la forma en que se les introduce la informacin y en la que se les extrae. Conforme a ello cuando todos los biestables del registro se procesan la informacin simultaneamente se habla de un registro paralelo. Cuando los datos se introducen o se extraen bit por bit se habla de un registro serie. Si el dato entra en serie y se extrae en serie el circuito corresponde a un registro de corrimiento al que puede usarse como lnea de retraso digital, que permite un almacenamiento temporal de informacin. Por ejemplo una computadora procesa datos a velocidades electrnicas (millones de bits por segundo) y una impresora los recibe en papel a velocidades electromecnicas (caracteres/segundo). Para liberar a la computadora de permanecer ocupada largos intervalos de tiempo, enviando informacin a la impresora, podemos utilizar un registro de corrimiento intermedio, de dimensiones adecuadas a la carga usual de trabajo (usualmente llamado buffer de impresin). De esta forma la computadora en pocos segundos enva la informacin al registro y este a su vez la transmite a menor velocidad a la impresora, ocupando quiz decenas de minutos. Cuando se inserta retro alimentacin entre salida y entrada el registro funciona como contador de anillo y el contenido de la memoria se dice que est recirculando. Este tipo de arreglo se emplea para refrescar la pantalla de video de un terminal de computadora, para mantener la imagen fija en la pantalla mientras el haz de electrones hace su barrido. Los registros de corrimiento son tambin circuitos sncronos secuenciales y se clasifican de acuerdo a su nmero de bits y al modo de operacin. Los posibles modos de operacin son: *entrada paralelo/salida paralelo (parallel In/Parallel out) (PIPO)

*entrada paralelo/salida serie (parallel In/Serial Out) *entrada serie/salida paralelo (Serial In/Parallel Out) *entrada serie/salida serie (Serial In/Serial Out)

(PISO)

(SIPO)

(SISO)

*universal, el que puede asumir todos los anteriores modos de operacin.

D CLR CLK D CLR CLK D CLR CLK D CLR CLK D CLR CLK D CLR CLK

Registro de corrimiento a la derecha, de entrada serie y salida seerie, combinado con salida paralelo (SISO-SIPO)

Podemos apreciar que un registro de corrimiento corresponde a una serie de biestables con disparo de borde, dispuestos en forma tal que con cada pulso de reloj el contenido de todas las etapas se mueve una posicin en la direccin deseada. En el registro de corrimiento a la derecha de la figura anterior, la entrada al biestable n proviene de la salida Qn-1; si desearamos un corrimiento a la izquierda, la entrada al biestable n debe provenir de la salida Qn+1. Ejemplo- Disee el bloque bsico de un registro de corrimiento universal; que cumpla con la siguiente lgica: Accin Bits de control S0 Mantener informacin Correr datos a la derecha Correr datos a la izquierda Entrada y salida paralelo 0 0 1 1 S1 0 1 0 1 Qn Qn+1 Qn-1 dato Salida

Requerimos seleccionar una de las cuatro posibles combinaciones y entregarla a la entrada de datos de un biestable D, por lo que el bloque bsico puede estar formado por un multiplexor y un biestable D sncrono.

0 1 2 3 S0 S1
Ejemplo- Una cerradura de combinacin, simple y segura, se basa en el registro de corrimiento implementado con biestables D. En la figura siguiente, para abrir la chapa elctrica deben accionarse los interruptores correctos en orden (para el ejemplo mostrado es 5,6,1,3,0,7). Con ello se dispara el temporizador y por varios segundos se energiza el solenoide de la chapa elctrica, para que eso se abra. Al accionar uno de los interruptores errneos, se manda reestablecer a todos los biestables que se requiere repetir toda la secuencia para abrir la chapa. Ntese que al disparar el temporizador, tambin se manda reestablecer a todos los biestables a fin de que la chapa no se quede abierta.

MUX Dn Qn CLK

EJEMPLO- Para el desenfoque de plantas con quemadores sin humo (al aumentar la presin de gas en condiciones anormales) se tienen seis etapas de quemadores. La primera etapa se acciona manualmente. La segunda acta si se exede el mite L1. De a tercera a la sexta etapa se cumplen las siguientes condiciones: *Si la presion excede el lmite L3 encender uno a uno los siguientes quemadores a intervalos de 15 segundos. *Si la presin baja del lmite L2 apagar el ltimo quemador que se hubiera encendido e ir apagando los restantes a intervalos de 15 segundos. *si la presin est entre el lmite L2 y el lmite L3 no efectuar ningn cambio. Se tiene un transmisor de presin en el rango de 0 a 2.5 psi y salia de 4 a 20 mA. Los valores lmite son L1 = 6.8 mA, B2 = 7.64 mA y L3 = 18 mA. Solucin: Los quemadores de 3 a 6 se encienden uno a uno cada 15 segundos si se excede e lmite L3. Un registro serie con entrada uno nos da una respuesta de este tipo al hacerlo avanzar a la derecha.

3 3 3 3

4 4 4 4

5 5 5 5

6 6 6 6

Los quemadores 6 a 3 se apagan uno a uno en orden decreciente si se est abajo del lmite L2. Esto corresponde a un registro

3 3 3 3

4 4 4 4

5 5 5 5

6 6 6 6

La solucin requiere por tanto un registro serie bidireccional. En el manual TTL seleccionamos el integrado 74194 que es un registro universal bidireccional de 4 bits, el cual se desplaza a la derecha cuando S0=1 y S1=0 y se desplaza a la izquierda cuando S0=0 y S1=1. La entrada de reloj se inhibe cuando S0=0 y S1=0 (la informacin permanece fija). La tabla de verdad que cumple esas condiciones es: L2 0 0 1 1 L3 0 1 0 1 S0 0 * 0 1 S1 1 * 0 0

*Esta condicin indiferente se debe a que si el nivel es mayor que L3 debe, por tanto, ser mayor que L2. Las ecuaciones correspondientes son: S0=L3 S1= L2

El circuito resultante es el siguiente:

Al registro de entrada paralelo/salida paralelo se le conoce como registro de almacenamiento ya que permite guardar la informacin aun despus de que desaparezca de la entrada del registro. En otras palabras, permite almacenar temporalmente al informacin, dejando libre al dispositivo de que la proporsion para realizar otras operaciones, mientras que los datos se conservan para su uso futuro.

Suponga que tenemos un dispositivo que cuenta el nmero de pulsos por segundo, al iniciar la secuencia borramos el contador y contamos los pulsos que llegan en un lapso de un segundo; terminado este tiempo guardamos en el registro de almacenamiento el valor de conteo (que se entrega al indicador de salida) y borramos nuevamente el contador para reiniciar la secuencia. Procediendo de este modo, durante un segundo veremos sin cambio la informacin que muestra el indicador de salida, en el segundo siguiente se actualiza, etc. En todo momento vemos el valor que alcanz el contador en el tiempo previo de medicin y no el valor del contador en ese instante. El smbolo que emplearemos para representar un registro, es un rectngulo subdidivido en varias casillas, que corresponde al nmero de bits del registro.

A la operacin de introducir datos a un registro se le denomina usualmente escribir y a la operacin de copiar los datos de su salida, se le denomina leer. Para diferenciar los registros se acostumbra asignarles un nmero que los difence entre s, al cual se le conoce como direccin del registro. Cuando se habilita la entrada correspondiente a la direccin de un registro, se puede leer o escribir el registro. La configuracin siguiente muestra un posible arreglo para escribir o leer la informacin de un registro. FALTA DIAGRAMA

Este arreglo corresponde a una memoria semiconductora de lectura/escritura (RAM), de tipo esttico ya que mantiene la informacin mientras est alimentando el equipo y slo la cambia cuando se escribe un nuevo dato en ella. Las memorias de lectura y escritura se especifican por su nmero total de celdas bsicas de almacenamiento, por ejemplo una RAM de 128 K x 8 tiene una capacidad de almacenamiento de 131 072 palabras de 8 bits cada una. (1 K = 210 =1024). Otra especificacin importante es especificar unamemoria es su velocidad de respuesta, en nanosegundos.

TERMINOS CLAVE BASCULA SR BIESTABLE JK BIESTABLE D BIESTABLE T BIESTABLES ASINCRONOS BIESTABLES SINCRONOS DISPARO POR NIVEL DISPARO POR BORDE CONTADORES CONTADOR ASCENDENTE CONTADOR DESCENDENTE CONTADOR GRAY CONTADOR DE ANILLO PROGRAMADOR UNOVERSAL DE SECUENCIAS REGISTROS PIPO PISO SIPO SISO

EJERCICIOS 1- Disee un circuito que detecte la secuencia 1001. Para ello considere que los datos llegan bit por bit a la entrada D, en forma sncrona con la seal de reloj C. 2- Disee un contador de anillo, que produzca la secuencia 0000, 0001, 0010, 0100, 1000. 3- Disee un contador binario, ascendente/descendente, mdulo ocho. 4- Se requiere disear el control electrnico de un semforo ubicado en el cruce de dos avenidas importantes, frente a un hospital. Las luces del semforo deben permitir alternadamente el paso en cada calle de manera normal. Pero si los peatones oprimen un interruptor especial, para permitir cruce seguro, deben encenderse las luces rojas de ambas avenidas, al termino del ciclo correspondiente de la avenida que estuviera en verde.

Para mantener la sincrona del semforo, las luces rojas de ambas calles deben permanecer encendidas durante el tiempo correspondiente a un ciclo completo de cambio de luces de ambas calles y continuar despus su secuencia normal. 5- Para bombear agua, de la cisterna al tanque elevado de un edificio multifamiliar, se requiere de un control electronico de tres bombas, el cual debe permitir que encienda 1, 2 o 3 bombas dependiendo del nivel de agua en el tanque elevado. Para que el desgaste del equipo sea similar, el control debe rotar el encendido de las bombas cada vez que se llegue a la condicin de tanque lleno. (falta diagrama) 6- Disee un circuito que indique el nmero de lugares disponibles en un estacionamiento. Considere que existe un solo carril de acceso al mismo, y que hay dos sensores pticos cuya secuencia emplearemos para conocer si un automvil entra o sale del estacionamiento. 7- Verifique computacionalmente de lgica de los diagramas de estado propuestos en los ejemplos de este capitulo. 8- Modifique el programa de simulacin de los elementos lgicos para incluir biestables D, JK y SR. Para poder simular biestables con disparo en borde, al leer la seal de reloj deben tomarse pares de caracteres, por lo que tenemos que: 00 nivel lgico cero 01 borde ascendente 10 borde descendente 11 nivel lgico 1

Utilice el programa modificado para verificar la operacin de los circuitos secuenciales diseados, entes de proceder a armarlos fsicamente.

PRACTICA X 1. Construya, pruebe y en caso necesario redisee los siguientes circuitos secuenciales (presentados como ejemplos de este capitulo). (a) contador binario ascendete, modulo 8 (b) contador binario descendente, modulo 8 (c) contador de anillo, de 3 bits (d) programador universal de secuancias (e) alarma de primera falla (f) cerradura de combinacin

(g) control de quemador sin humo 2. Empleo de contadores disponibles comercialmente (OPCIONAL). Consulte los manuales TTL y CMOS para ello. (a) Arme un circuito contador ascendente BCD, 0 a 99, cuya cuenta se muestre en dos indicadores de siete segmentos. Para ello utilice dos integrados 7490 (contador decimal), dos 7448 (decodificador y manejador de indicadores numricos de siete segmentos de ctodo comn). (b) (c) (d) Utilice un integrado 4017 (contador y decodificador que activa una de diez salidas), para armar un circuito que cuente de 0 a N y pare. Utilice un integrado 4017 para armar un circuito que cuente a N y reinicie. Utilice un contador de tres dgitos MC14553 y un manejador de indicadores MC14543 (decodificador, memoria y manejador) para construir un circuito que cuente el numero de personas que ingresan a la biblioteca. El integrado 7208IPI de Intersil es un contador multifuncin con manejo directo de indicadores numricos, que permite contar, temporizar, medir frecuencia y periodo de una seal.

(e)

Utilcelo para construir un frecuencmetro digital.

TVHG
Este programa obtiene una tabla de verdad de una funcin boleana de tipo combinacional. Requiere que el usuario introduzca la funcin expresada como una suma de implicantes. Cada implicante estar dado por una combinacin de ceros, unos y guiones, y debe aparecer encerrado entre parntesis. F(a,b,c,d) = (-1-1)+(-0-0)+(100-)+(1-01) El programa obtiene la tabla de verdad en el formato usual, deteniendose cada 16 renglones para dar oportunidad de observar el resultado y en notacin decimal condensada. Esta ltima presentacin es la mas conveniente cuando el nmero de variables es elevado. Si desea que el programa imprima en papel los resultados, reemplace en los tres ltimos renglones del programa principal las instrucciones PRINT por LPRINT. A continuacin se proporciona, a modo de ejemplo, una corrida de prueba de este programa: Deme la expresin binaria de la funcin boolena (encierre entre parntesis cada implicante) f(a,b,c,d) = (-1-1)+(-0-0)+(100-)+(1-01) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1 0 1 0 0 1 0 1 1 1 1 0 0 1 0

15

1111

F(a,b,c,d) = (-1-1)+(-0-0)+(100-)+(1-01) Los miniterminos con salida uno son: 0 2 5 7 8 9 10 13 15

1VHG DECLARE FUCTION Binario$ (deci%,num%) DECLARE SUB TablaVerdad (lista() AS ANY, n%, num%, unos$) DECLARE SUB Valor (lista() AS ANY, vertice%, salida%, n%) DECLARE SUB Pertenece (Vertice%, minimo%, maximo%, salida%) DECLARE SUB Extremos (Implicante$, minimo%, maximo%) DECLARE SUB Vertices (funcion$, lista() AS ANY, n%, num%)

programa que obtiene la tabla de verdad de una funcin booleanas expresada en la forma S(a,b,c,d,e)=(01- -1)+(-000-)+(-1-11)+(10-0-) ..Hugo G Garca, dic 88 CLS PRINT Deme la expresin binaria de la funcin booleanas PRINT (encierre entre parntesis cada implicante) LINE INPUT function$ TYPE dual Min AS INTEGRER Max AS INTEGER

END TYPE DIM lista (1 to 20) AS dual

CALL Verices (funcion$, lista(), n%, num%) CALL Tabladeverdad (lista(), n%, num%, Miniterminos$) PRINT PRINT funcion$ PRINT los terminos de salida son: PRINT Miniterminos END

FUNCTION Binario$ (deci%, num%) convierte a binario un numero decimal (el numero de bits es igual a num%) DIM bch$ (0 to 15) bch$(0) = 0000 : bch$(1) = 0001 : bch$(2) = 0010 : bch$(3) = 0011 bch$(4) = 0100 : bch$(5) = 0101 : bch$(6) = 0110 : bch$(7) = 0111 bch$(8) = 1000 : bch$(9) = 1001 : bch$(10) = 1010 : bch$(1) = 1011 bch$(12) = 1001 : bch$(12) = 1101 : bch$(14) = 1110 : bch$(15) = 1111 hexa$ = STRING$(num%, 0) + HEX$(deci%) converson de decimal a hexadecimal Bin$ = FOR j = 1 TO LEN(hexa$) Digito$ = MID$(hexa$, j, 1) K = VAL(&H + digito$) Bin$ = Bin$ + bch$(k) leer cada digito hexadecimal y convertirlo a decimal

NEXT j Binario$ = RIGHT$(Bin$, num%) END FUNCTION

SUB Extremos (Implicante$, minimo%, maximo%) convierte un implicante expresado con ceros, unos y guiones la representacin numrica equivalente de vrtice mnimo y mximo minimo% = 0 maximo = 0 ponderal% = 1 FOR i = LEN(implicante) TO 1 STEP -1 Bit$ = MID$ (implicante$, 1, 1 SELECT CASE bit$ CASE 1 Minimo% = minimo% + ponderal% Maximo% = maximo% + ponderal% CASE 0 no se requiere sumar nada CASE - Maximo% = maximo% + ponderal% CASE ELSE BEEP END SELECT Ponderal% = ponderal% + ponderal% NEXT i END SUB )

SUB Pertenece (vertice%, minimo%, maximo%, salida%) la salida es uno si el vertice pertenece al implicante IF vertice% >= minimo% AND vertice% <= maximo% THEN condicin1% = 1 IF (minimo% AND vertice%) = minimo% THEN condicin2% = 1 IF (vertice% AND maximo%) = vertice% THEN condicin3% = 1 Salida% = condicin1% AND condicin2% AND condicin3% END SUB

SUB TablaVerdad (lista() AS dual, n%, num%, unos$) Vertical$ = + CHR$(179) + <- - cambiar segn impresora Unos$ = FOR vertice% = 0 TO 2 ^ num% -1 PRINT USING ###;VERTICE%; PRINT vertical$; PRINT Binario$(vertice%, num%); vertice$; CALL Valor(lista(), vertice%, salida%, n%) PRINT salida% IF salida% = 1 THEN Unos$ = unos$ + + STR$(vertice%) END IF para cada 16 renglones hasta oprimir una tecla IF vertice% MOD 16 = 15 THEN zz$ = INPUT$(1) NEXT END SUB

SUB Valor (lista() AS dual, vertice%, salida%, n%) la salida es uno si el vrtice pertenece a uno o varios implicantes de la funcin booleanas salida% = 0 FOR i = 1 TO n% Minimo% = lista(i).min Maximo% = lista(i).max CALL Pertenece(vertice%, minimo%, maximo%, salida%) NEXT END SUB

SUB Vertices (funcin$, lista() AS dual, n%, num%) STATIC separa todos los implicantes de una funcin booleanas dada como suma de productos y obtiene una lista equivalente de vrtices extremos para cada implicante posicin% = INSTR(1, funcion$, =) IF posicin% = 0 THEN posicin% = 1 n% = 0 DO Abre% = INSTR(posicin%, funcin$, () IF abre% = 0 THEN EXIT DO n% = n% + 1 cierra% = INSTR(abre%, funcion%, )) fin del implicante inicio del implicante inicio de la expresin

implicante$ = MID$(funcion$, abre% + 1, cierra% - abre% - 1) IF num% = 0 THEN num% = LEN(implicante$) CALL Extremos(Implicante$, minimo%, maximo%) lista(n%).min = minimo%

lista(n%).max = maximo% posicin% = cierra% LOOP UNTIL cierra% = LEN(Implicante$) END SUB

TABHG
Este programa solicita uno a uno, cada implicante de una funcin booleanas y obtiene los vrtices que cumple cada implicante, as como el total de vrtices que pertenece a la funcin. Posteriormente crea una tabla de implicantes versus vrtices, identifica los implicantes primos esenciales y los marca. Finalmente, el programa seala los vrtices que no fueron cubiertos por los implicantes primos escenciales, para que el diseador pueda seleccionar a un grupo de implicantes primos opcionales que completen la cobertura del total de vrtices en una solucin minima. A continuacin se presenta una corrida de prueba de este programa:

Introduzca los implicantes de la funcin Booleana (dados como ceros, unos y guiones) 1 ? 10-02 ? 11-13 ? 01- -1 4 ? -0005 ? -10-16 ? -1-11 7 ? --001 8? Tabla de implicantes primos y sus vrtices 0 10 0 - << 11 1 - << 01 - - 1 << - 000 - << - 10 1 - 1 11 - - 001 1 9 0 1 9 11 11 15 17 25 25 9 9 11 11 13 13 15 15 16 17 25 27 27 31 1 9 11 13 15 16 16 17 17 20 20 21 21 26 27 30 31 25 26 27 30 31

Nota. Los implicantes primos escenciales estn marcados con el smbolo << Los vrtices no cubiertos aparecen despus de la tabla.

TABHG DECLARE SUB pertenece (vertice%, minimo%, maximo%, salida%) DECLARE SUB Extremos (implicante$, minimo%, maximo%)

Programa que tabula los vrtices correspondientes a los implicantes primos de una funcin booleanas ..Hugo Gilberto Garca Guerra, Ene 90

CLS DEFINT A-Z

TYPE modelo min AS INTEGER max AS INTEGER END TYPE

DIM lista(1 TO 20) AS modelo lista de vrtices extremos de implicantes DIM implicante$(0 TO 20) DIM marcaIPE$(0 TO 20) implicantes dados por ceros, unos y guiones marca de implicante primo esencial

1- leer la lista de implicantes de la funcin booleana

PRINT Introduzca los implicantes de la funcin booleana

PRINT (dados como ceros, unos y guiones) FOR n = 1 TO 20 PRINT n; INPUT implicante$(n) IF implicante$(n) = THEN EXIT FOR IF LEN (implicante$(1)) <> LEN(implicante$(n))THEN fin de la lista verificar largo

PRINT longitud errnea, introdzcalo nuevamente PRINT n; INPUT implicante$(n) END IF convertir el implicante al formato vrtice mnimo-vrtice mximo CALL Extremos(implicante$(n), lista(n).min, lista(n).max) NEXT n

NumeroImplicantes = n 1 NumeroVariables = LEN(implicante$(1))

2 Crear la tabla de implicantes DIM tabla(0 TO NumeroImplicantes + 1, 0 TO (2 ^NumeroVariables))

columna = 0

FOR vertice = 0 TO (2 ^NumeroVariables 1 ) bandera = 0 FOR rengln = 1 TO NumeroImplicantes CALL pertenece(vertice, lista(rengln).min, lista(rengln).max, salida) IF salida = 1 THEN tabla(rengln, columna) = vertice + 1

tabla(0, columna) = vertice + 1 bandera = 1 END IF NEXT IF NEXT rengln IF bandera = 1 THEN columna = columna + 1 NEXT rengln IF bandera = 1 THEN columna = columna + 1 NEXT vertice Columna = columna 1

3 encontrar los implicantes primos esenciales DIM contador(0 TO columna) FOR X = 0 TO columna K=0 FOR rengln = 1 TO NumeroImplicantes IF tabla(rengln, X) <> 0 THEN k = k + 1 NEXT contador(X) = k IF k = 0 THEN vale = tabla(0, X) FOR rengln = 1 TO NumeroImplicantes IF tabla(rengln, X) = vale THEN marcaIPE$(rengln) = CHR$(238) END IF NEXT rengln END IF PRINT USING ###; k; contar cuantas veces est cubierto un vrtice (para encontrar los implicantes primos)

NEXT X

4-Marcar los vrtices cubiertos por los IPE DIM marcaV(o TO columna)

FOR rengln = 1 TO NumeroImplicantes IF marcaIPE$(rengln) <> THEN FOR X = 0 TO columna IF tabla(rengln, X) <> 0 THEN

marcaV(X) = tabla(rengln, X) END IF NEXT X END IF NEXT rengln

enlistar los vrtices no cubiertos FOR X = 0 TO columna Tabla(NumeroImplicantes + 1, X) = marcaV(X) XOR tabla(0, X) NEXT

5-convertir la tabla a representacin de hilera de caracteres DIM lnea$(0 TO NumeroImplicantes + 1) Implicante$(0) = SPACE$(LEN(implicante$(1))) Implicante$(NumeroImplicantes + 1) = SPACES$(LEN(implicante$(1)))

FOR rengln = 0 TO NumeroImplicantes + 1 cola$ = RIGHT$( + marcaIPE$(rengln), 2)

linea$(renglon) = implicante$(rengln) + cola$ FOR X = 0 TO columna IF tabla(rengln, X) = THEN agregar$ = ELSE v$ = + STR$(tabla(rengln, X) 1)

agregar$ = ELSE v$ =

+ STR$(tabla(rengln, X) 1)

agregar$ = RIGHT$(v$, 4) END IF Linea$(rengln) = linea$(rengln) + agregar$ NEXT X NEXT rengln

6-Imprimir la tabla de implicantes primos, en bloques de 80 columnas CLS PRINT Tabla de implicantes primos y sus vrtices FOR posicin = 1 TO LEN(lnea$(1)) STEP 80 PRINT FOR rengln = 0 TO NumeroImplicantes + 1 IF rengln = 1 THEN PRINT STRING$(80, -) PRINT MID$(linea$(rengln), posicin, 80) IF rengln = NumeroImplicantes THEN PRINT STRING$(80, -) NEXT rengln

zz$ = INPUT$(1) continuar

esperara que se oprima una tecla para

NEXT posicin END

DEFSNG A-Z SUB Extremos (implicante$, minimo%, maximo%)

convierte un implicante expresado con ceros, unos y guiones a la representacin numrica equivalente de vrtice mnimo y mximo.

mnimo% = 0 maximo% = 0 ponderal% = 1 FOR i = LEN(implicante$) TO 1 STEP 1 bit$ = MID$(implicante$, i, 1) SELECT CASE bit$ CASE 1 minimo% = minimo% + ponderal% maximo% = maximo% + ponderal% CASE 0 no ser requiere sumar nada CASE - maximo% CASE ELSE BEEP END SELECT ponderal% = ponderal% + ponderal% NEXT i END SUB = maximo% + ponderal%

SUB pertenece (vertice%, minimo%, maximo%, salida%) la salida es uno si el vrtice pertenece al implicante IF vertice% >= minimo% AND vertice% <= maximo% THEN condicion1% = 1 IF (minimo% AND vertice% = minimo% THEN condicion2% = 1 IF (vertice% AND maximo%) = vertice% THEN condicion3% = 1 Salida% = condicion1% AND condicion2% AND condicion3% END SUB

SUB Valor (lista() AS modelo, vertice%, salida%, n) la salida es uno si el vrtice pertenece a uno o varios implicantes de la funcin booleana

salida% = 0 FOR i = 1 TO n CALL pertenece(vertice%, lista(i).min, lista(i).max, salida%) IF salida% = 1 THEN EXIT FOR NEXT END SUB

REDHG

Este programa permite reducir funciones combinacionales, el algoritmo con el que opera aparece en el capitulo IV. Requiere que el usuario proporcione el nmero de variables de entrada y la lista ordenada de miniterminos y con base a ello procede a obtener los implicantes primos de la funcin. Si se desea, fcilmente pude incluirse en cada paso impresin de los resultados obtenidos, para ilustrar la operacin del programa.

Paso 1 : LEER VERTICES 0, 1, 9, 11, 13, 15, 16, 17, 20, 21, 25, 26, 27, 30, 31 Paso 2 : ENCONTRAR LOS POSIBLES IMPLICANTES. Paso 3 : ORDENAR POR DIFERENCIA A LOS POSIBLES IMPLICANTES. Paso 4 : ACEPTAR LOS IMPLICANTES CON REDUCCIN DE UNA VARIABLE Paso 5 : CONTAR LAS VECES QUE UN VERTICE SE US EN LA PRIMERA REDUCCIN. Paso 6 : BUSCAR REDUCCIONES MAYORES ENTRE PARES DE IMPLICANTES ACEPTADOS CON IGUAL DIFERENCIA. Paso 7 : IMPRIMIR RESULTADO. Implicantes primos: ( 16 , 21 ) = 10 0 ( 26 , 31 ) = 11 1 ( 9 , 15 ) = 01 - - 1 ( 0 , 17 ) = - 000 ( 9 , 27 ) = - 10 1 ( 11 , 31 ) = - 1 11 ( 1 , 25 ) = - - 001

No siempre es deseable obtener la ecuacin ms reducida. Si el usuario requiere determinar la relacin de implicantes que dan cobertura minima, puede utilizar el programa IPEHG que se anexa. REDHG DECLARE FUNCTION Binario$ (deci%, NumeroVariables%)

DECLARE SUB CeroUnoGuion (posible() AS ANY, i%, NumeroVariables%, reduccion$) DECLARE SUB buscar (x%, y%, valor%, IndiceDif() AS ANY, posible() AS ANY) DECLARE SUB CrearIndice (posible() AS ANY, Numero%, IndiceDif() AS ANY) DECLARE SUB PonerOrden (posible() AS ANY, n%) DECLARE SUB cuantasVeces (vertice(), ocupado(), i, contador(), m) DECLARE SUB ordenar (lista%(), n%) DECLARE SUB pertenece (minimo%, maximo%, posible() AS ANY, Numero%) DECLARE SUB MayorReduccion (posible() AS ANY, j, k, peso(), IndiceDif() AS ANY)

Programa que reduce una funcin combinacional, para ello lee la lista de vrtices y encuentra los posibles implicantes .Hugo G. Garca, 1988

CLS DEFINE A-Z PRINT Paso 1 : LEER VERTICES.

READ NumeroVariables RenglonMayor = 2 ^NumeroVariables DIM vertice (0 TO RenglonMayor) FOR i = 1 TO RenglonMayor READ n IF n < 0 THEN EXIT FOR vertice(i) = n PRINT n; , ; NEXT LOCATE CSRLIN, POS(0) 2: PRINT : PRINT leer la lista original de vrtices

VerticeMayor = i 1

PRINT Paso 2 :

ENCONTRAR LOS POSIBLES IMPLICANTES.

TYPE Implicante mnimo AS INTEGER mximo AS INTEGER diferencia AS INTEGER aceptado AS INTEGER END TYPE MVMV = (VerticeMayor) * (VerticeMayor 1) / 2 DIM posible (0 TO MVMV) AS Implicante vrtice mnimo vrtice mximo (mximo - mnimo) marca si es o no parte de la solucin

Numero% = 0 FOR j = 1 TO VerticeMayor 1

cuenta el numero de posibles implicantes

FOR k = VerticeMayor TO j + 1 STEP 1 CALL pertenece(vertice(j), vertice(k), posible(), numero%) NEXT NEXT

PRINT paso 3 : ORDENAR POR DIFERENCIA A LOS POSIBLES IMPLICANTES. FOR m = 1 TO Numero% posible(m).diferencia = posible(m).maximo posible(m).minimo NEXT m CALL PonerOrden(posible(), Numero%) difMayor = posible(Numero%).diferencia TYPE extremos bajo AS INTEGER

alto AS INTEGER END TYPE DIM IndiceDif(0 TO difMayor + 1) AS extremos CALL CrearIndice(posible(), Numero%, IndiceDif()) FOR i = 1 TO Numero PRINT posible(i).minimo; , ; posible(i).maximo NEXT i FOR i = 1 TO difMayor PRINT i; NEXT PRINT paso 4 : ACEPTAR LOS IMPLICANTES CON REDUCCIN DE UNA VARIBLE. (con diferencias de valor de 1,2,4,8,2^n) DIM peso(0 TO NumeroVariables + 1) k=1 FOR i = 1 TO NumeroVariables Peso(i) = k k=k+k NEXT i DIM ocupado 0 TO 2 * Numero% tope = 1: m = 1: i = 1 DO UNTIL m > Numero OR i > NumeroVariables IF posible(m).diferencia > peso(i) THEN i = i + 1 IF posible(m).diferencia = peso(i) THEN posible(m).aceptado = 1 ocupado(tope) = posible(m).minimo ocupado(tope + 1) = posible(m).maximo listar los implicantes con reduccion de una variable PRINT ocupado(tope); , ; ocupado(tope + 1) <- - - - - - - <<<< tabla de valores 1,2,4,8, ; IndiceDif(i).bajo; /; IndiceDif(i).alto lista ordenada de implicantes posibles

tope = tope + 2 END IF m=m+1 LOOP tope = tope - 1 PRINT Paso 5 : CONTAR LAS VECES QUE UN VERTICE SE USO DE 1a REDUCCION. un vertice que no intervino en la primer reduccin debe ser parte de la solucin; vertice empleados una sola vez sealan a un implicante primo CALL ordenar(ocupado(), tope) DIM contador(0 TO RenglonMayor) CALL cuantasVeces(vertice(), ocupado(), tope(), contador(, m) PRINT Paso 6 : BUSCAR REDUCCIONES MAYORES ENTRE PARES DE IMPLICANTES. PRINT ACEPTADOS CON IGUAL DIFERNCIA

Hay reduccin si la diferencia vertical es de 1,2,4,8, y si los extremos forman un posible implicante mayor (o sea si Vmin1 and Vmax2 = Vmin1)

FOR j = 1 TO Numero IF posible(j).aceptado <> 0 THEN PID = posible(j).diferencia FOR k = j + 1 TO IndiceDif(PID).alto IF posible(k).aceptado <> 0 THEN probar si hay mayor reduccin CALL MayorRduccion(posible(), j, k, peso(), IndiceDif()) END IF NEXT k END IF NEXT j

PRINT PASO 7 :

IMPRIMIR RESULTADO.

PRINT Implicantes primos: FOR i = 1 TO Numero

IF posible(i).aceptado = 1 THEN CALL CeroUnoGuion(posible(), (i), NumeroVariables, reduccion$) PRINT (; posible(i).minimo; , ; posible(i).maximo; PRINT TAB(15); ) =; reduccion$ END IF NEXT PRINT FOR i = 1 TO VerticeMayor IF contador(i) = THEN vertice$ = Binario$(vertice(i), NumeroVariables) PRINT ( ; vertice(i); TAB(15); ) =; vertice$ END IF NEXT i END .. NOTA: El programa requiere dar con DATA el numero de variables, la lista ordenada de los vrtices y el delimitador final (-1) buscar vrtices no reducidos

numero de variables DATA 5 vertices (renglones con salida 1 en la tabla de verdad): DATA 0,1,9,11,13,15,16,17,20,21,25,26,27,30,31 delimitador final (marca que ya no hay mas vrtices) DATA 1

DEFSNG A-Z FUCTION Binario$ (deci%, NumeroVariables%) convierte a binario un numero decimal entero DIM bch$(0 TO 15) Bch$(0) = 0000: bch$(1) = 0001: Bch$(2) = 0010: bch$(3) = 0011 Bch$(4) = 0100: bch$(5) = 0101: Bch$(6) = 0110: bch$(7) = 0111 Bch$(8) = 1000: bch$(9) = 1001: Bch$(10) = 1010: bch$(11) = 1011 Bch$(12) = 1100: bch$(13) = 1101: Bch$(14) = 1110: bch$(15) = 1111 hexa$ = HEX$(deci%) Bin$ = STRING$(NumeroVariables%, 0) FOR j = 1 TO LEN(hexa$) digito$ = MID$(hexa$, j, 1) Bin$ = Bin$ + + bch$(k) NEXT j Binario$ = RIGHT$(Bin$, NumeroVariables%) END FUNCTION DEFINT A-Z SUB buscar (x, y, valor, IndiceDif() AS extremos, posible() AS Implicante) STATIC busca al implicante (x,y) dentro de la lista Posible() y lo acepta FOR i = IndiceDif(y - x).bajo TO IndiceDif(y - x).alto IF (posible(i).mnimo = x AND posible(i).maximo = y THEN posible(i).aceptado = (valor OR posible(i).aceptado) EXIT FOR END IF NEXT i leer cada digito hexadecimal conversin de decimal a hexadecimal

END SUB SUB CeroUnoGuion (posible() AS Implicante, i, NumeroVariables, reduccion$) Recibe los valores minimo y maximo de un implicante y entrega su representacin equivalente de ceros, unos y guiones Bin1$ = Binario$(posible(i).mnimo, NumeroVariables) Bin2$ = Binario$(posible(i).mximo, NumeroVariables) Comparar dos hileras de bits, de igual longitud respetando los bits que coincidad y colocando guiones en los que difieran reduccion$ = FOR k = 1 TO LEN (Bin1$) a$ = MID$(Bin1$, k, 1) b$ = MID$(Bin2$, k, 1) IF a$ = b$ THEN c$ = a$ ELSE c$ = - reduccion$ = reduccion$ + c$ NEXT k END SUB SUB CrearIndice (posible() AS Implicante, Numero, IndiceDif() AS extremos) crear una tabla denominada IndiceDif(k), que indica que a partir de que posicin empieza un subgrupo de la lista de implicantes Posible () con diferencia k (cada subgrupo tiene los guiones en la misma posicin) valor = posible(1).diferencia IndiceDif(valor).bajo = 1 FOR m = 2 TO Numero IF valor < posible(m).diferencia THEN IndiceDif(valor).allto = m 1 Valor = posible(m).diferencia IndiceDif(valor).bajo = m END IF

NEXT m IndiceDif(valor).alto = Numero END SUB SUB cuantasVeces (vertice(), ocupado(), i, contador(), m) Cuenta cuantas veces un vertice es parte de una reduccin m= 1 cont = 0 FOR n = 1 TO i + 1 IF vertice(m) = ocupado(n) THEN cont = cont + 1 ELSE contador(m) = cont m=m+1 n=n1 cont = 0 END IF NEXT SUB MayorReduccion (posible() AS Implicante, j, k, peso(), IndiceDif() AS extremos) w = posible(j).mnimo x = posible (j).mximo y = posible (k).mnimo z= posible (k).mximo IF (z AND w) <> w THEN EXIT SUB FOR n = TO UBOUND (peso) IF (y w = peso(n)) THEN Aceptar reduccion y cancelar los 4 implicantes que la originaron CALL buscar(w,z,1, IndiceDif(), posible()) CALL buscar(w,x,3, IndiceDif(), posible()) contador de miniterminos no repetidos

CALL buscar(y,z,3, IndiceDif(), posible()) CALL buscar(w,y,3, IndiceDif(), posible()) CALL buscar(x,z,3, IndiceDif(), posible()) EXIT SUB END IF NEXT n END SUB SUB ordenar (lista(), n) rdena una lista de n elementos FOR j = n 1 TO 1 STEP 1 Cambios = 0 FOR k = 1 TO n 1 IF lista(k + 1) <= lista(k) THEN SWAP lista(k + 1), lista(k) cambios = 1 END IF NEXT k IF cambios = 0 THEN EXIT FOR NEXT j END SUB DEFNG A-Z SUB pertenece (minimo%, maximo%, posible() AS Implicante, Numero%) STATIC Verificar si dos puntos corresponden a un posible implicante IF (minimo% AND maximo%) = minimo% THEN Numero% = Numero% + 1 posible(Numero%).minimo = minimo% posible(Numero%).maximo = maximo% END IF

END SUB DEFINT A-Z SUB PonerOrden (posible() AS Implicante, n) Ordena por diferencias a la lista de posibles implicantes FOR j = 1 TO n 1 cambios = 0 FOR k = 1 TO n 1 IF posible(k + 1).diferncia < posible(k).diferencia THEN SWAP posible(k + 1), posible(k) Cambios = cambios + 1 END IF NEXT k IF cambios = 0 THEN EXIT FOR NEXT j END SUB

IPEHG Este programa requiere que el usuario proporciones los implicantes a considerar y la lista de vrtices contra los que seran referidos los implicantes. El programa determina cuales vrtices cubre cada implicante y cuales implicantes son esenciales. Tambin enlista los vrtices que faltan por cubrir para facilitar la seleccin de los implicantes restantes de la funcin.

Introduzca cada implicante y oprima [ENTER] 1 ? 10 0 2 ? 11 1 3 ? 01 - - 1 4 ? 000 5 ? 10 1 6 ? 1 11 7 ? - - 001 8? Introduzca cada minitermino y oprima [ENTER] ?0 ?1 ?9 ? 11 ? 13 ? 15 ? 16 ? 17 ? 20 ? 21 ? 25 ? 26

? 27 ? 30 ? 31 ? Tabla de implicantes primos y los vrtices que ellos cubren

0 10 0 - << 11 1 - << 01 - - 1 << - 000 - << - 10 1 - 1 11 - - 001 0

11

13

15

16 16

17 17

20 20

21 21

25

26

27

30

31

26 9 1 9 11 11 1 9 15 17 25 25 11 13 15 16 17 25

27

30

31

27 27 31

IPEHG DECLARE SUB pertenece (vrtice%, mnimo%, mximo%, salida%) DECLARE SUB Extremos (Implicante%, mnimo%, mximo%, ) DECLARE SUB ordenar (vrtice%(), m%) DECLARE SUB FUNCTION (hilera$) Programa para determinar cuales vrtices cubre cada implicante, marcar los implicantes primos esenciales y enlistar los que faltan por cubrir .Hugo G. Garca Guerra, 1990 CLS DEFINT A-Z TYPE modelo min AS INTEGER

max AS INTEGER END TYPE DIM lista(1 TO 20) AS modelo DIM implicante$(1 TO 20) guiones DIM marcaIPE(1 TO 20) DIM vertice(1 TO 20) 1-Introducir los N implicantes PRINT Introduzca cada implicante y oprima [ENTER] FOR n = 1 TO 20 DO PRINT n; INPUT hilera$ implicante$(n) = filtro$(hilera$) IF implicante$(n) = THEN EXIT FOR IF LEN(implicante$(n)) <> LEN(implicante$(1)) THEN PRINT Longitud errnea, introduzca nuevamente END IF LOOP UNTIL LEN(implicante$(n)) = LEN(implicante$(1)) convertir el implicante al formato vrtice mnimo-vrtice mximo CALL Extremos(implicante$(n), lista(n).min, lista(n).max) NEXT n NumeroImplicantes = n 1 2- Introducir los M miniterminos PRINT Introduzca cada minitermino y oprima [ENTER] FOR m = 0 TO 255 INPUT vertice$ IF vertice$ = THEN EXIT FOR contador de renglones lista de vrtices extremos de implicantes implicantes dados por cero, unos y

marca de implicante primo esencial vrtices a cubrir (miniterminos)

vertice(m) = VAL(vertice$) NEXT CALL ordenar(vertice(), NumeroVertices) 3- Crear tabla de implicantes DIM tabla(0 TO NumeroImplicantes + 1, 0 TO NumeroVertices) DIM contador(0 TO NumeroVertices) Enlistar los vrtices a considerar en el primer rengln de la tabla FOR columna = 0 TO NumeroVertices Tabla(0, columna) = vertice(columna) + 1 EXIT columna FOR columna = 0 TO NumeroVertices cont = 0 FOR rengln = 1 TO NumeroImplicantes Vertice = vertice(columna) CALL pertenece(vertice, lista(rengln).min, lista(rengln).max, salida) IF salida = 1 THEN Tabla(rengln, columna) = vertice + 1 Cont = cont + 1 Ren = rengln END IF contador(columna) = cont NEXT rengln IF cont = 1 THEN marcaIPE(ren) = 1 esencial NEXT columna 4- Marcar los vrtices cubiertos por los IPE DIM marcaV(0 TO NumeroVertices) FOR rengln = 1 TO NumeroImplicantes marca el implicante contador de columnas

IF marcaIPE(renglon) = 1 TO NumeroImplicantes FOR x = 0 TO NumeroVertices IF tabla(rengln, x) <> 0 THEN marcaV(x) = tabla(rengln, x) END IF NEXT x NEXT renglon enlistar los vrtices no cubiertos (en el ultimo rengln de la tabla) FOR x = 0 TO NumeroVertices Tabla(NumeroImplicantes + 1, x) = marcaV(x) XOR tabla(0,x) NEXT 5- Convertir la tabla a representacin de hilera de caracteres DIM linea$(0 TO NumeroImplicantes + 1) Implicante$(0) = SPACE$(LEN(implicante$(1))) Implicante$(NumeroImplicantes + 1) = SPACE$(LEN(implicante$(1))) FOR rengln = 0 TO NumeroImplicantes + 1 IF marcaIPE(rengln) = 1 THEN cola$= Linea$(renglon) = implicante$(renglon) + cola$ FOR x = 0 TO NumeroVertices IF tabla(rengln, x) = 0 THEN Agregar$ = ELSE v$ = + STR$(tabla(rengln) + agregar$ ELSE cola =

agregar$ = RIGHT$(v$, 4) END IF Linea$(rengln) = linea$(renglon) + agregar$ NEXT x NEXT rengln

6- Imprimir la tabla de implicantes primos, en bloques de 80 columnas CLS PRINT tabla de implicantes primos y los vrtices que ellos cubren FOR posicin = 1 TO LEN (linea$(1)) STEP 80 PRINT FOR rengln = 0 TO NumeroImplicantes + 1 IF rengln = 1 THEN PRINT STRING$(80, -) PRINT MID$(linea$(renglon), posicin, 80) IF rengln = numeroImplicantes THEN PRINT STRING$(80, -) NEXT rengln zz$ = INPUT$(1) para continuar NEXT posicin END DEFSNG A-Z SUB Extremos (implicante$, mnimo%, mximo%) convierte un implicante expresado con ceros, unos y guiones a la representacin numrica equivalente de vrtice mnimo y mximo mnimo% = 0 mximo% = 0 ponderal% = 1 FOR i = LEN(implicante$) TO 1 STEP 1 bit$ = MID$(implicante$, i, 1) SELECT CASE bit$ CASE 1 Mnimo% = mnimo% + ponderal% Mximo% = mximo% + ponderal% CASE 0 esperar a que se oprima una tecla

no se requiere sumar nada CASE - Mximo% = mximo% + ponderal% CASE ELSE BEEP END SELECT Ponderal% = ponderal% + ponderal$ NEXT i END SUB FUNCTION filtro$ (hilera$) suprime de la hilera aquellos caracteres diferentes a 0, 1, - copia$ = FOR c% = 1 TO LEN(hilera$) carcter$ = MID$(hilera$, c$, 1) SELECT CASE carcter$ CASE 0, 1, - copia$ = copia$ + carcter$ END SELECT NEXT c% Filtro$ = copia$ END FUNCTION DEFINT A-Z SUB ordenar (vertice(), NumeroVertices) FOR derecha = NumeroVertices 1 TO 1 STEP -1 Cambios = 0 FOR iquierda = 1 TO derecha IF vertice(izquierda) > vertice(izquierda + 1) THEN SWAP vertice(izquierda), vertice(izquierda + 1)

cambios = 1 END IF NEXT izquierda IF cambios = 0 THEN EXIT FOR NEXT derecha END SUB DEFSHG A-Z SUB pertenece (vrtice%, mnimo%, mximo%, salida%) la salida es uno si el vrtice pertenece al implicante IF vertice% >= minimo% AND vertice% <= maximo% THEN condicion1% = 1 IF (minimo% AND vertice%) = minimo% THEN condicion2% = 1 IF (vertice%AND maximo%) = vertice% THEN condicion2% = 1 Salida% = condicion1% AND condicion2% AND condicion3% END SUB

UAHG Este programa de propsito especifico, nos permite verificar la lgica de la unidad aritmtica diseada en el capitulo V. En el capitulo VII se explica como opera el programa y sus limitantes. UAHG DECLARE SUB Sumador (A%, B%, C%, Suma%, Acarreo%) DECLARE SUB Modificador (B%, M%, N%, Bmod%) Programa que nos permite verificar la operacin de la unidad aritmetica Hugo G. Garca Guerra, Mar 90 CLS DEFINT A-Z imprimir textos PRINT Unidad Aritmetica LOCATE 20, 1: PRINT C M N A3 A2 A1 A0 B3 B2 B1 B0 Csal s3 s2 s1 s0 LPRINT C M N A3 A2 A1 A0 B3 B2 B1 B0 Csal s3 s2 s1 s0 DO leer datos LOCATE 3, 1: PRINT SPACES$(240): LOCATE 3,1 renglones INPUT Cent, M, N; Cent, M, N INPUT A3, A2, A1, A0; A3, A2, A1, A0 INPUT B3, B2, B1, B0; B3, B2, B1, B0 efectuar la lgica CALL Modificador (B0, M, N, F0) CALL Sumador (A0, F0, Cent, S0, C0) borrar los

CALL Modificador (B1, M, N, F1) CALL Sumador (A1, F1, C0, S1, C1)

CALL Modificador (B2, M, N, F2) CALL Sumador (A2, F2, C1, S3, C3)

CALL Modificador (B2, M, N, F2) CALL Sumador (A2, F2, C1, S3, C3) Imprimir resultados LOCATE 22, 1 PRINT Cent; M; N; PRINT ; C3; PRINT Cent; M; N; LPRINT ; C3; ; A3; A2; A1; A0; ; B3; B2; B1; B0; ; S3; S2; S1; S0 ; A3; A2; A1; A0; ; B3; B2; B1; B0; ; S3; S2; S1; S0

zz$ = INPUT$(1) LOOP UNTIL zz$ = f

SUB Modificador (B, M, N, Bmod) Bmod = (B AND N) OR ((NOTB) AND M) END SUB

SUB Sumador (A, B, C, Suma, Acarreo) Suma = A XOR B XOR C Acarreo = (A AND B) OR (A AND C) OR (B AND C) END SUB

COMPHG

Este programa, de propsito especifico, permite verificar la operacin del comparador de magnitud de dos palabras de cuatro bits diseado en el capitulo V. En el capitulo VII se explica en que consiste el programa, sus ventajas y limitaciones. COMPHG DECLARE SUB Comparador (Ie%, Me%, x%, y%, Isal%, Msal%) CLS : DEFINIT A-Z Programa que nos permite verificar la operacin del comparador ..Hugo G. Garcia Guerra imprimir textos PRINT Comparador de magnitud PRINT I=1 si X=Y, M=1 si X>Y LOCATE 20, 1 PRINT X3 X2 X1 X0 Y3 Y2 Y1 Y0 I M DO leer datos LOCATE 3, 1 : PRINT SPACE$(240): LOCATE 3,1 borrar renglones

INPUT X3, X2, X1, X0; x3, x2, x1, x0 INPUT Y3, Y2, Y1, Y0; y3, y2, y1, y0

efectuar la lgica Ie = 1 Me = 0 CALL Comparador (Ie, Me, x3, y3, I3, M3) CALL Comparador (I3, M3, x2, y2, I2, M2) CALL Comparador (I2, M2, x1, y1, I1, M1) CALL Comparador (I1, M1, x0, y0, I0, M0)

Imprimir resultados LOCATE 22, 1 PRINT x3, x2, x1, x0; ; Y3, Y2, Y1, Y0; ; I0; M0

zz$ = INPUT$(1) LOOP UNTIL zz$ = f

SUB Comparador (Ie, Me, x,y,Isal, Msal) Igual si los bits anteriores fueron iguales y ahora el bit X es igual a Y Msal = Me OR (Ie AND (x AND NOT y)) END SUB

SIMHG

Este programa nos permite simular en el tiempo la operacin de un circuito lgico, del cul tenemos ya un diagrama esquematico. Los datos de entrada al programa corresponden a la descripcin del circuito, especificado por los tipos de componentes y los nmeros asignados a cada una de las lneas de entrada/salida, la relacin de los estmulos del exterior y el indicar cuales lneas deseamos observar. Todo ello se presenta dentro de enunciados DATA en el programa. La salida del simulador, corresponde a un programa de tiempos de las seales en los puntos que queramos observar, similar a la que veamos en un analizador de estados lgicos multicanal. El simulador nos permite verificar la correcta operacin del circuito antes de proceder a su armado fsico. En caso de existir errores en el diseo o incluso ene l montaje final del circuito, el simulador facilita encontrarlos y corregirlos. En el capitulo X se explica como se opera este programa. A continuacin se da una corrida de prueba para un ejemplo de dicho capitulo.

Ejemplo pgina 162 (aleas) # TIPO E1 E2 E3 E4 E5 sal+ sal-

---------------------------------------------------------------------------------------1 2 3 4 NAND NAND NAND NOT 1 3 5 2 2 4 6 5 6 7 4

-----------------------------------------------------------------------------------------Oprima una tecla para continuar 0..1.2.3...4..56. A________________-------------------------------------------B________________-------------------------------------------C________________-------------------------------------------S ??______________------------------------------------

SIMHG DECLARE SUB Expande (hilera$, n%) DECLARE SUB buscar (lista%(), tope%, valor%, encontrado%) DECLARE SUB Imprimir (largo%, MostrarNodo%(), ultimo%, hilera$(), etiqueta$()) DECLARE SUB EjecutarLogica (UltimoEvento%, viejo%(), nevo%(), L%(), Inv%(), H$()) DECLARE SUB Conexiones (Nombre$, UltimoEvento%, L%()) DECLARE FUNCTION num% (tipo$) DECLARE FUNCTION Elemento$ (numero%) DECLARE SUB ordenar (lista%(), tope%) DECLARE SUB descartaRepetidos (lista%(), tope%) DECLARE SUB filtro (H$(), HG$(), nlineas%)

Simulador lgico elemental Circuitos Lgicos

Materia: Prof

Variables y arreglos de variables empleados en el programa MaximoElemento = 150 MaximoEstimulo = 30 MaximoNodo = MaximoElemento + MaximoEstimulo maxObservar = 10 mostrar larg = 60 numero maximo de elementos logicos numero maximo de seales externas numero maximo de nodos numero maximo de nodos a

numero de smbolos a imprimir

DIM L(7, MaximoNodo) DIM X(MaximoEstimulo) (seales) DIM MostrarNodo(maxObservar) mostrar en pantalla

arreglo de elementos lgicos arreglo de estimulos externos

arreglo de seales a mostrar a

DIM etiqueta$(maxObservar) seales DIM H$(MaxiNodo) seales DIM HG$(MaxiNodo) DIM viejo(MaximoNodo) ateriores DIM nuevo(MaximoNodo) seales Representacin de valores lgicos cero = 0 lgico uno = 1 desc = 2 lgico desconocido Inv(cero) = uno Inv(uno) = cero Inv(desc) = Desc lgico desconocido Caracteres a imprimir simbolo$(cero) = CHR$(95) lgico simbolo$(uno) = CHR$(240) lgico simbolo$(desc) = ? desconocido

arreglo

de

etiquetas

de

esas

arreglo de valores logicos de esas

arreglo con smbolos grficos arreglo de valores de seales

arreglo de valores de nuevas

representacin interna del cero

representacin interna del uno lgico representacin interna del valor

inverso (complemento) del cero lgico inverso (complemento) del uno lgico inverso (complemento) de valor

smbolo a imprimir para un cero

simbolo a imprimir para un uno

simbolo

imprimir

para

un

valor

PASO 1- Leer los datos del circuito lgico a simular CLS RESTORE Circuito READ Nombre$ FOR i = 1 TO MaximoElemento leer elementos lgicos y sus conexiones

leer Tipo, ent1, ent2, ent3, ent4, ent5, sal+, salREAD tipo$, L(1, i), L(2, i), L(3, i), L(4, i), L(5, i), L(6, i), L(7, i) tipo$ = UCASE$(tipo$) IF tipo$ = THEN EXIT FOR

L(0, i) = num(tipo$) correspondiente al tipo FOR j = 1 TO 7

encontrar

cdigo

numrico

buscar nodo mayor

IF L(j, i) > nodoMayor THEN nodoMayor = L (j, i) NEXT j IF nodoMayor > MaximoNodo THEN PRINT (; nodoMayor; ) Es un nmero de nodo erroneo PRINT el mayor valor permitido es; MaximoNodo; corrijalo END IF NEXT i UltimoElemento = i 1 PASO 2- Imprimir los elementos lgicos y sus conexiones: CALL Conexiones(Nombre$, UltimoElemento, L()) Paso 3- Leer cuales son los estmulos externos que se desea aplicar RESTORE Estimulos FOR i = 1 TO MaximoEstimulo Leer nodo, hilera de valores lgicos del mismo READ X(i), H$(X(i)) IF X(i) = 0 THEN EXIT FOR estimulos CALL Expande(H$(X(i)), 5) NEXT i UltimoEstimulo = i -1 prueba para terminar de leer (entradas del exterior al circuito lgico)

repetir 5 veces cada carcter

Largo = LEN(H$(X(1))) PASO 4- Revisar el alambrado (probar que todas las entradas estn conectadas) a un estimulo, o a la salida de una compuerta; una salida no debe estar unida a otra) DIM Entrada(1 TO 5 * UltimoElemento) n=1 FOR x = 1 TO 5 FOR y = 1 TO UltimoElmento Entrada(n) = L(x, y) IF L(x, y) <> 0 THEN n = n + 1 NEXT y NEXT x topeE = n 1 CALL ordenar(Entrada(), topeE) CALL descartaRepetidos(Entrada(), topeE) lista de entradas a los elementos

DIM Salida(1 TO (2 * UltimoElemento + UltimoEstimulo)) n=1 FOR X = 6 TO 7 FOR y = 1 TO UltimoElemento salida(n) = L(x, y) IF L(x, y) <> 0 THEN n = n + 1 NEXT y NEXT x FOR i = 1 TO UltimoEstimulo Salida(n) = X(i) n=n+1 NEXT i

salidas de elementos

leer salidas

leer estimulos aplicados al circuito

tope$ = n 1 CALL ordenar(Salida(), tope$) CALL BuscaCortos(Salida(), tope$) verifiar que todas las entradas esten conectadas a una salida o a un estimulo FOR X = 1 TO topeE dato = Entrada(X) CALL buscar(Salida(), tope$, dato, encontrado) IF encontrado = 0 THEN PRINT : PRINT la entrada;dato;est sin conectar END IF NEXT X PASO 5- Lectura de nodos a desplegar (salida del simulador) Mostrar: RESTORE Nodos FOR i = 1 TO maxObservar READ MostrarNodo(i) IF MostrarNodo(i) = 0 THEN EXIT FOR nodos NEXT i ultimoObservar = i 1 prueba para terminar de leer

RESTORE NombreNodos FOR k = 1 TO i 1 READ etiqueta$(k) IF etiqueta$(k) = THEN etiqueta$(k) = STR$(MostrarNodo(k)) etiqueta$(k) = LEFT$(etiqueta$(k) + NEXT k , 8) +

PRINT : PRINT Oprima una tecla para continuar ZZZ$ = INPUT$(1) PASO 6- Simular la operacin del circuito lgico Asignar inicialmente una valor lgico desconocido a todos los nodos FOR i = 0 TO nodoMayor IF H$(i) = THEN H$(i) = 2 NEXT i Simular : simulacin Tiempo = 1 DO FOR i = 0 TO nodoMayor Viejo(i) = VAL(MID$(H$(i), tiempo, 1)) NEXT i Realizar las funciones lgicas y determinar nuevo juego de salidas CALL EjecutarLogica(UltimoElemento, viejo(), nuevo(), L(), Inv(), H$()) Tiempo = tiempo + 1 LOOP WHILE tiempo MOD largo <> 0 Bucle principal de

CALL filtro(H$(), H$(), nodoMayor) CALL Imprimir(larg, MostrarNodo(), ultimoObservar, HG$(), etiqueta$()) END

Circuito: DATA Ejemplo pgina 162 (aleas) DATA NAND ,1, 2, , , , 5, DATA NAND , 3, 4, , , , 6,

DATA NAND , 5, 6, , , , 7, DATA NAND , 2, , , , , , 4, DATA , , , , , , , , , Estmulos: DATA 1, 00001111111111 DATA 2, 00000000110000 DATA 3, 00011111111111 DATA , , , , , , , , , Nodos: DATA 1, 2, 3, 7 DATA, , , , , , , , , , , NombreNodos: DATA A, B, C, S, , , , , , , , , , SUB BuscaCortos (lista(), tope) verifica que no existan valores repetidos en la lista ordenada FOR X = 1 TO tope 1 IF lista(X) = lista(x + 1) THEN PRINT : PRINT corto en lineas de salida # ;x END IF NEXT X END SUB lneas a observar seales del exterior

SUB buscar (lista(), tope, valor, encontrado) Inferior = 1 : superior = tope : encontrado = 0 DO WHILE inferior <= superior AND encontrado = 0 Medio = INT((inferior + superior) / 2)

SELECT CASE SNG(valor lista(medio)) CASE 1 Inferior = medio + 1 CASE 0 Encontrado = 1 CASE 1 Superior = medio 1 END SELECT LOOP END SUB

SUB Conexiones (Nombre$, UltimoElemento, L()) PRINT Nombre$ PRINT STRING$(80, -) PRINT # Tipo E1 PRINT STRING(80, -) FOR i = 1 TO UltimoElemento PRINT USING ## ; i; tipo$ = Elemento$(L(0, i)) PRINT USING \ FOR j = 1 TO 7 IF L(j, i) <> 0 THEN nodo$ = STRG$(L(j, i)) ELSE nodo$ = PRINT USING \ NEXT PRINT NEXT i PRINT STRING$(80, -) END SUB \ ; nodo$; \; tipo$; imprimir descricin del circuito E2 E3 E4 E5 sal+ sal-

SUB descartarRepetidos (lista(), tope) FOR X = 1 TO tope 1 IF lista(X) = lista (X + 1) THEN FOR k = k TO tope 1 Lista(k) = lista(k + 1) NEXT k Lista(tope) = 0 Tope = tope 1 END IF NEXT X END SUB

SUB EjecutarLogica (UltimoElemento, viejo(), nevo(), L(), Inv(), H$()) Cero = 0 valores lgicos Uno = 1 Desc = 2 DIM ent(5) FOR i = 1 TO UltimoElemento del primero al ultimo elemento lgico representacin interna de los

IF L(0, i) = 1 OR L(0, i) = 5 THEN viejo(0) = uno ELSE viejo(0) = cero hacer que las entradas no conectadas a al compuerta (nodo 0) valgan Uno para la AND y NAND, Cero para las otras compuertas

contUnos = 0 contCeros = 0 FOR j = 1 TO 5 Ent(j) = viejo(L( j, k))

IF ent(j) = 1 THEN contUnos = contUnos + 1 IF ent(j) = 0 THEN contCeros = contCeros + 1 NEXT j

SELECT CASE L(0, i) CASE 1 IF contUnos = 5 THEN Valor = 1 ELSEIF contCeros <> 0 THEN Valor = 0 ELSE Valor = Desc END IF CASE 2 Valor = ent(1) OR ent(2) OR ent(3) OR ent(4) OR ent(5) IF valor AND 1 = 1 THEN valor = 1 CASE 3 Valor = 0 FOR j = 1 TO 5 IF ent(j) = Desc THEN sal = Desc: EXIT FOR Valor = valor XOR ent(j) NEXT CASE 4 Valor = Inv(ent(1)) CASE 5 IF contCeros <> 0 THEN Valor = 1 ELSE IF contUnos = 5 THEN compuerta NAND compuerta NOT compuerta XOR compuerta OR compuerta AND

Valor = 0 END IF CASE 6 comuerta NOR

Valor = ent(1) OR ent(2) OR ent(3) OR ent(4) OR ent (5) IF valor AND 1 = 1THEN valor = 1 Valor = Inv(valor) CASE ELSE PRINT compuerta erronea BEEP STOP END SELECT

Nuevo(L(6, i)) = valor sal+ Nuevo(L(7, i)) = Inv(valor)

valor lgico calculado para

H$(L(6, i)) = H$(L(6, i)) + LTRIM$(STR$(valor)) H$(L(7, i)) = H$(L(7, i)) + LTRIM$(STR$(Inv(valor))) NEXT i END SUB

FUNCTION Elemento$ (numero) determina el tipo de elemento lgico SELECT CASE numero CASE 1 Elemento$ = AND CASE 2 Elemento$ = OR

CASE 3 Elemento$ = XOR CASE 4 Elemento$ = NOT CASE 5 Elemento$ = NAND CASE 6 Elemento$ = NOR CASE ELSE Elemento$ = ??? END SELECT END FUNCTION

SUB Expande (hilera$, n%) copia$ = FOR columna% = 1 TO LEN(hilera$) Carcter$ = MID$(hilera$, columna%, 1) Copia$ = copia$ + STRNG$(n%, carcter$) NEXT columna% Hilera$ = copia$ END SUB

SUB filtro (H$(), H$(), nLineas) FOR i = 1 TO lineas FOR j = 1 TO LEN(H$(i)) Letra$ = MID$(H$(i), j, i) SELECT CASE letra$ CASE 0

Simbolo$ = _ CASE - Simbolo$ = - CASE ELSE Simbolo$ = ? END SELECT HG$(i) = HG$(i) + simbolo$ NEXT j NEXT i END SUB

SUB Imprimir (largo, MostrarNodo(), ultimo, hilera$(), etiqueta$()) m$ = 0..1..2..3..4 5..6. marca$ = STRING$(10, ) + m$ CLS PRINT LEFT$(marca$, 80) PRINT FOR i = 1 TO ultimo k = MostrarNodo(i) hilera$(k) = etiqueta$(i) + hilera$(k) + SPACE$(80) PRINT LEFT$(hilera$(k), 80) PRINT NEXT i END SUB

FUNTION num (tipo$) SELECT CASE encontrar tipo de funcin lgica

CASE AND Num = 1 CASE OR Num = 2 CASE XOR Num = 3 CASE NOT Num = 4 CASE NAND Num = 5 CASE NOR Num = 6 CASE ELSE Num = 0 PRINT ( ; tipo$; ) Es un tipo lgico erroneo, corrijalo STOP END SELECT END FUNCTION

SUB ordenar (lista(), tope) FOR derecha = (tope - 1) TO 1 STEP 1 cambios = 0 FOR izquierda = 1 TO derecha IF lista(izquierda) > lista(izquierda + 1) THEN SWAP lista(izquierda), lista(izquierda + 1) Cambio = 1 END IF NEXT izquierda

IF cambios = 0 THEN EXIT FOR NEXT derecha END SUB

Você também pode gostar