Representaci´on digital de los datos - Sistemas Digitales...

146
Cap´ ıtulo 1 Representaci´ on digital de los datos Conceptos b´ asicos Dato Digital Sistema decimal Sistemas posicionales Sistema Binario Sistemas Octal y Hexadecimal Conversiones de base umeros con signo umeros reales Aritm´ etica odigos Representaci´ on digital de los datos Saber Hacer Representar cantidades enteras en cualquier base, principalmente en binario. Seleccionar la forma de representaci´ on de datos num´ ericos. Representar en forma digital cualquier tipo de datos (num´ ericos y no num´ ericos). 1

Transcript of Representaci´on digital de los datos - Sistemas Digitales...

Capıtulo 1

Representacion digital de los datos

Conceptos basicos

DatoDigitalSistema decimalSistemas posicionalesSistema BinarioSistemas Octal y HexadecimalConversiones de baseNumeros con signoNumeros realesAritmeticaCodigosRepresentacion digital de los datos

Saber HacerRepresentar cantidades enteras en cualquier base, principalmente en binario. Seleccionarla forma de representacion de datos numericos. Representar en forma digital cualquier tipode datos (numericos y no numericos).

1

2 CAPITULO 1. REPRESENTACION DIGITAL DE LOS DATOS

El mundo moderno gobernado por la informatica, nos dice que la “informacion” puedeser procesada, enviada de un sitio a otro o almacenada. Lo que llamamos informacion puedeconsistir simplemente en un texto, es decir, una hilera de caracteres en una pagina de undirectorio telefonico o puede contener imagenes y sonido como la novedosa “multimedia”nos tiene acostumbrados.

Dentro de este conjunto de informacion tambien se incluyen los datos numericos; alfin y al cabo, el computador fue conocido inicialmente por su habilidad de hacer calcu-los aritmeticos. Nuestro interrogante podrıa ser: ¿Como estan constituidas todas estascategorıas de datos para que sean “manipuladas” por medio de una maquina? ¿Comoesta constituida la informacion que maneja un telefono? Alguien seguramente se acordara,o hasta lo habra visto en los comerciales de los telefonos celulares, que algunos son digitalesy otros son analogos o analogicos. Ya lo entendimos? Seguramente que no.

Examinemos otra de estas famosas maquinas: la calculadora; no hay duda de que elasunto es digital puesto que los datos que manipula la calculadora estan conformados pordıgitos. En una calculadora programable, una parte del teclado corresponde a las letrasdel alfabeto; ademas, podemos procesar datos numericos, almacenar las direcciones y lostelefonos de todos nuestros amigos.

Es muy probable que nuestra calculadora ya tenga pantalla y pueda mostrar graficas.Esta pantalla es similar a una hoja de papel cuadriculado solo que con los cuadritos masdiminutos; cada cuadrito se denomina “pixel” y simplemente, el puede estar “encendido” o“apagado”. Ha notado que cuando hacemos graficas en papel milimetrado, lo que hacemoses ubicar puntos y despues los unimos por una lınea continua? Pues algo parecido hace lacalculadora con las graficas, solo que no tiene que unir la lınea; de eso se encarga el ojohumano si los puntos son muy pequenos y estan muy cerca unos de otros.

Empezamos a concentrarnos entonces en dıgitos mas pequenos; en este caso, los pixelesestan “encendidos” o “apagados”; o tambien en 1 o en 0. A estos dıgitos de solo dos estadoslos llamamos “bits”, “bitios”, o dıgitos binarios (la palabra dıgito implıcitamente contieneel significado de decimal o sea que puede tener 10 valores diferentes (0,1,2. . . 9).

Los bits son muy importantes en el mundo “digital” puesto que son los mas inmediatosde representar fısicamente; un rele, por ejemplo, puede estar abierto o cerrado (los primeroscomputadores fueron construidos con reles); un transistor puede estar conduciendo o estaren corte. Queremos examinar entonces como es posible la representacion de cualquier tipode informacion a partir de los bits o dıgitos binarios.

1.1 DIGITAL VRS. ANALOGICO

Empecemos por definir lo que es un sistema: En primer lugar, entendemos por sistemaun conjunto de elementos que en forma coordinada tienen una funcion especıfica; desdeel punto de vista matematico, un sistema es una transformacion unica u operador querelaciona o transforma una condicion de entrada dada en una salida especıfica. Un sistemacuyas senales de entrada y de salida son continuas, decimos que es un sistema continuo o

1.2. SISTEMAS DE NUMERACION POSICIONALES 3

analogico. E igualmente, un sistema cuyas senales de entrada y de salida no son continuas,es decir discretas o muestreadas, es un sistema digital.

Estamos en el punto de partida de los sistemas digitales, los cuales se pueden definircomo aquellos que manejan toda su informacion representada en forma digital, es decir,basada en dıgitos generalmente binarios. Esto nos permite ver por que algunos relojes,por ejemplo, son digitales. Pero entonces, como son los relojes analogos? Los surtidoresde gasolina son digitales. Y los telefonos digitales?. La informacion procesada por lostelefonos, es la voz humana, Esta senal, como ya sabemos, es intrınsecamente continua(no es escalonada): una senal de sonido variable en el tiempo; el telefono lo que hace esconvertir esta senal de sonido en una senal de corriente electrica, igualmente continua, quees equivalente o “analoga” a la senal original.

Fundamentalmente, esto es lo que ocurre con todas las variables de un sistema fısicocuando les aplicamos instrumentos de medida: el instrumento de medida o transductornos produce una senal generalmente electrica que es analoga o equivalente a la original;esta senal puede variar gradualmente sobre un intervalo continuo de valores.

La senal continua descrita anteriormente se puede “discretizar”, “digitizar”, “digi-talizar” o “muestrear”, lo cual significa tomar valores o “muestras” cada cierto tiempo; algosimilar hacemos cuando una senal en lugar de ser representada por una grafica continua,es mostrada como una tabla de valores los cuales ya son digitales.

En consecuencia, el telefono digital trabaja con la senal que representa la voz en formadigital; algo similar ocurre con los equipos de sonido digitales y con los osciloscopiosdigitales. El mundo real esta fundamentalmente compuesto de senales continuas que seprocesan en forma digital.

1.2 SISTEMAS DE NUMERACION POSICIONALES

En un sistema de numeracion posicional, un numero se representa por una hilera dedıgitos, cada uno de los cuales tiene un peso asociado que depende de la posicion queocupe. Por ejemplo:

1734 = 1×1000 + 7×100 + 3×10 + 4×1

El peso de cada dıgito resulta de una potencia de 10 correspondiente a la posicion deldıgito. En general, si D = d3d2d1d0d−1d−2. Entonces,

D = d3×103 + d2×102 + d1×101 + d0 + d−1×10−1 + d−2×10−2

Este sistema de numeracion tiene como base o raız a 10 por lo cual se le denominadecimal. En general, podemos construir otros sistemas de numeracion tomando otras basesque deben ser numeros enteros.

4 CAPITULO 1. REPRESENTACION DIGITAL DE LOS DATOS

En el sistema decimal se utilizan 10 dıgitos para representar las cantidades. En elsistema cuaternario, o sea el que tiene como raız 4, los dıgitos son 0,1,2,3 (en todos lossistemas posicionales interviene el 0 lo cual contrasta con el sistema de numeros romanosque no tiene cero) Si vamos a contar en el sistema cuaternario, tendremos:

DECIMAL CUATERNARIO0 01 12 23 34 105 116 127 138 209 21

Cuadro 1.1:

Observamos que 134 (13 en base 4) equivale a:

1×41 + 3 = 4 + 3 = 710

Por lo tanto,

312014 = 3×44 + 1×43 + 2×42 + 0×41 + 1×40 = 768 + 64 + 32 + 1 = 86510

El sistema binario tiene como base 2 y sus dıgitos binarios (bits) son 0 y 1. Observemoscomo se puede contar en el sistema binario:

DECIMAL BINARIO0 01 12 103 114 1005 1016 1107 111

DECIMAL BINARIO8 10009 100110 101011 101112 110013 110114 111015 1111

Cuadro 1.2:

Si con dos dıgitos decimales podemos contar desde 0 hasta 99, tendremos 100 = 102

cantidades diferentes; en forma analoga, podemos contar con 4 bits desde 0 hasta 1111, osea 24 = 16 cantidades diferentes.

1.3. REPRESENTACIONES DE CANTIDADES NUMERICAS 5

Si la base es superior a 9, tendremos que usar otros dıgitos adicionales para los cualesse usan las letras mayusculas del alfabeto.

Por ejemplo, si la base es 16, los dıgitos son 0,1,2,...,9,A,B,C,D,E,F; donde A es elequivalente a 10, B a 11 y ası sucesivamente hasta F = 15. Este sistema de numeracionse denomina “hexadecimal”. En sistemas digitales el sistema de numeracion basico es elbinario, pero el octal y el hexadecimal son importantes puesto que 8 y 16 son potenciasde 2. Esto nos permite convertir facilmente de binario a octal o hexadecimal y viceversaen forma muy rapida y obtener representaciones mas compactas de cantidades binarias.

1.3 REPRESENTACIONES DE CANTIDADES NUMERICAS

Para representar informacion en el computador utilizamos codigos, los cuales se formana partir de un conjunto dado de sımbolos utilizados en forma sistematica y normalizada.Un codigo muy conocido en nuestra vida diaria es el que se utiliza en el semaforo: si laluz verde esta encendida, significa siga, si la luz roja esta encendida, debemos detenernos;y si la luz amarilla esta encendida, significa precaucion. El codigo Morse es otro ejemplobien conocido en el cual utilizamos los sımbolos punto y raya para representar todos loscaracteres del alfabeto. Este codigo permitio el envıo de mensajes por medio del telegrafo.

La informacion que necesitamos manipular en forma digital generalmente la clasificamosen numerica y no numerica. Dentro de la informacion numerica a su vez podemos encontrarclasificaciones numericas de punto fijo y de punto flotante.

1.3.1. Numeros de punto fijo

Los numeros de punto fijo se utilizan para representar ya sea enteros con signo ofracciones con signo. En ambos casos se utilizan los sistemas de magnitud y signo, decomplemento de dos, o de complemento de uno para representar los valores con signo.

Los enteros de punto fijo tienen un punto binario implıcito a la derecha del bit menossignificativo y las fracciones de punto fijo tienen el punto binario implıcito entre el bitdel signo y el bit de magnitud mas significativo. Los numeros en el sistema de magnitudy signo constan de una magnitud y ademas, de un sımbolo que indica si la magnitudes positiva o negativa. Cuando los numeros son binarios se utiliza un bit adicional pararepresentar el signo; usualmente es el bit mas significativo.

Por ejemplo:

010101012 = +8510 110101012 = −8510

011111112 = +12710 111111112 = −12710

000000002 = +010 100000002 = −010

En el sistema de complemento de la base, el complemento de un numero de n dıgitos seobtiene al restarlo de rn, donde r es la base. En el sistema decimal el complemento de la

6 CAPITULO 1. REPRESENTACION DIGITAL DE LOS DATOS

base se llama complemento de 10, mientras que en el sistema binario, se llama complementode 2.

Ejemplo:

10000 ← 104 100000 ← 25

184910 → − 1849 101012 → 101018151 Complemento de 10 100000 Complemento de 2

Una forma rapida de encontrar el complemento de 2 consiste en complementar cada bit(cambiar 1 por 0 y viceversa) y sumarle uno al resultado.

11101110Entonces, si 1710 = 000100012 el complemento de 2 sera: +1

111011112

En el sistema de complemento de la base disminuida, el complemento de un numerode n dıgitos se obtiene al restarlo de rn − 1. En el sistema decimal el complemento de labase se llama complemento de 9; y en el sistema binario se llama complemento de 1 quese calcula rapidamente complementando cada bit individualmente.

Entonces, si 1710 = 000100012 el complemento de 1 de 1710 sera: 111011102

1.3.2. Numeros de punto flotante

Para representar cantidades numericas que pudieran tener parte fraccionaria y conmagnitud muy grande o muy pequena, se invento la codificacion de numeros de puntoflotante, basandose seguramente en la notacion cientıfica. En general, la forma de puntoflotante de un numero N se escribe como:

N = M × rE

En donde M, la mantisa, es un numero de punto fijo que contiene los dıgitos signi-ficativos de N. El exponente E, es un entero de punto fijo. La mantisa M, usualmente secodifica en magnitud y signo, por lo general como una fraccion, y se puede escribir como:

M = SMan−1 · · · a−m

El exponente E se codifica en el complemento de dos con exceso de -K, el cual se formasumando un sesgo K al valor entero como complemento de 2 del exponente. Los formatosde punto flotante utilizados por los sistemas de computo de los diversos fabricantes, difierencon frecuencia en la cantidad de bits que se usan para representar la mantisa y el exponente,ası como en el metodo de codificacion de cada uno. El estandar 754 de 1985 del IEEE define2 formatos de numeros de punto flotante, ası:

1.4. REPRESENTACION DE INFORMACION NO NUMERICA 7

PRECISION PRECISIONSENCILLA DOBLE

Total de bits 32 64Bits de la mantisa 23 52Bits del exponente 8 11Sesgo del exponente 127 1023

Cuadro 1.3:

1.4 REPRESENTACION DE INFORMACION NO NUMERICA

En esta categorıa caben muchas cosas tales como el texto, las imagenes, el sonido, etc. Eltipo mas comun de datos no numericos es el texto, cadenas de caracteres de algun conjuntode datos. Cada caracter esta representado en el computador mediante una cadena de bits deacuerdo con una convencion establecida. El codigo de caracteres mas comunmente usadoes el ASCII (American Standard Code for Information Interchange). ASCII representacada caracter con una cadena de 7 bits, la cual da un total de 128 caracteres diferentes.

El codigo BCD (Binary-Coded Decimal) sirve para representar los dıgitos decimales del0 al 9 y es un ejemplo de un codigo ponderado, es decir, cada posicion en el codigo tieneun valor o un peso numerico asociado a este. El codigo BCD utiliza 4 bits y los pesos sonlos mismos que en un entero binario de 4 bits. El codigo BCD tambien es conocido comocodigo 8-4-2-1 por los pesos utilizados. Un codigo cıclico se puede definir como un codigoen el que un corrimiento circular produce otra cadena del codigo para cualquier palabrade codigo. El codigo Gray es uno de los tipos mas comunes de codigos cıclicos y tiene lacaracterıstica de que las palabras de codigo para dos numeros consecutivos difieren soloen un bit. Es decir, la distancia entre dos palabras de codigo es 1. En general, la distanciaentre dos palabras de codigo binario es igual al numero de bits en el que difieren las dospalabras. El codigo Gray es util donde se necesite medir u observar la posicion de un ejecircular. En la figura 1.1 observamos esta aplicacion en forma esquematica.

1.5 PROCESAMIENTO ELECTRONICO DE LOS DATOS

Hasta este punto ya tenemos un panorama general de la forma como los datos puedenrepresentarse. El termino procesamiento es muy amplio e incluye actividades tales como lacomunicacion (muy utilizada cuando enviamos un correo electronico), el almacenamiento,la ejecucion de calculos numericos, etc.

En la Figura 1.2 se muestran los elementos que intervienen en el procesamiento de losdatos.

El procesador es el agente ejecutor de la actividad; puede ser una persona (en cuyocaso el proceso es manual) o puede ser un computador. Este modelo lo podemos aplicar

8 CAPITULO 1. REPRESENTACION DIGITAL DE LOS DATOS

Figura 1.1: Disco con codigo Gray.

ENTRADA DE DATOS → PROCESADOR → SALIDA DE RESULTADOS

Figura 1.2: Procesamiento de datos.

al computador personal, en el cual la entrada de datos se realiza mediante dispositivoscomo el teclado, el raton, etc.; y la salida de resultados se realiza por dispositivos como lapantalla y la impresora. El procesamiento lo hace la Unidad Central de Procesamiento oCPU.

Podemos pensar tambien, en utilizar el computador como elemento de control en unsistema. Muy seguramente la variable que se va a controlar sera de tipo analogico, por locual la entrada de datos la realizara un dispositivo convertidor analogo/digital. La laborde procesamiento en este caso consistira en comparar la variable controlada contra elvalor de referencia y emitir la senal de control, obviamente digital. El modulo de salidasera entonces un convertidor digital/analogo.

Capıtulo 2

Compuertas Logicas y AlgebraDigital

Conceptos basicos

Variables logicas o binariasAlgebra de BooleLeyes BooleanasPostulados del Algebra BooleanaTablas de VerdadCompuerta ANDCompuerta ORCompuerta NOTCompuerta NANDCompuerta NORCompuerta EXORCompuerta NEXORTabla de Verdad

Saber HacerReconocer los sımbolos de las operaciones logicas.Manipular ecuaciones logicas usando conceptos de algebra booleana.

9

10 CAPITULO 2. COMPUERTAS LOGICAS Y ALGEBRA DIGITAL

2.1 ALGEBRA DE BOOLE

En 1854 el matematico ingles George Boole escribio el libro “An Investigation of theLaws of thought on which to found the Mathematical Theories of Logic and Probabilities”, en el cual se hizo un analisis matematico de la logica, que dio como resultado un nuevocampo denominado ”Algebra de la Logica”, o “Algebra Booleana”.

En 1938, Claude E. Shannon, asistente de investigacion del Departamento de IngenierıaElectrica del MIT (Massachussets Institute of Technology), sugirio la posibilidad de utilizarel algebra booleana en el diseno de circuitos de conmutacion basados en reles, con locual se sentaron las bases matematicas de los circuitos de conmutacion utilizados en loscomputadores digitales. Los estados logicos y los estados de un circuito de conmutacionse caracterizan por las siguientes propiedades:

Existen dos estados; usualmente, “verdadero” y “falso” o “1” y ”0”.

Cualquier variable debe existir en uno de los dos estados; no se permiten otrosestados.

Cualquier variable logica solo puede tener un valor. Ninguna cantidad puede sersimultaneamente ”verdadera” y ”falsa”.

Toda cantidad tiene un opuesto. Si la cantidad es “verdadera”, el opuesto es elinverso.

Una cantidad logica puede ser una constante o una variable.

Las cantidades logicas se pueden representar fısicamente de muchas maneras, talescomo:

• Electricamente, con dos voltajes diferentes.

• Mecanicamente, por la posicion de un conmutador.

• Optimamente, por la presencia o ausencia de luz.

Tomando como entradas las cantidades logicas, el algebra booleana define tres opera-ciones basicas que son el producto booleano, la suma booleana y el complemento. Ya en elterreno de los sistemas digitales, estas operaciones se convierten en compuertas, las cualesdefinimos a continuacion, junto con otras compuertas adicionales que son de utilidad.

2.1.1. La compuerta AND

Esta compuerta implementa el producto booleano. La compuerta AND produce unasalida verdadera solo cuando cada una de las entradas es verdadera, tal como se muestraen la siguiente tabla de verdad:

2.1. ALGEBRA DE BOOLE 11

A B F0 0 00 1 01 0 01 1 1

En algebra booleana, la funcion AND se indica por medio de un punto entre las entradas(multiplicacion logica) o por multiplicacion implıcita como en algebra

F = A.B F = AB F = (A)(B)

2.1.2. La compuerta OR

Esta compuerta corresponde a la suma booleana. La Compuerta OR produce una salidaverdadera cuando cualquiera de sus entradas es verdadera.

A B F0 0 00 1 11 0 11 1 1

F = AorB F = A + B

2.1.3. La compuerta NOT o INVERSOR

Esta compuerta corresponde al complemento booleano. La salida de un inversor essimplemente el complemento de la entrada.

A F0 11 0

F = notA F = A F = A′

2.1.4. La compuerta NAND

La salida de la compuerta NAND es el complemento de la salida de la compuerta AND

12 CAPITULO 2. COMPUERTAS LOGICAS Y ALGEBRA DIGITAL

A B F0 0 10 1 11 0 11 1 0

F = A.B

2.1.5. La compuerta NOR

La salida de la compuerta NOR es el complemento de la salida de la compuerta OR.

A B F0 0 10 1 01 0 01 1 0

F = A + B

2.1.6. Leyes Booleanas

El algebra Booleana satisface las siguientes leyes o axiomas:

N Algebra Ley1 a + a = a Ley de Idempotencia2 a×a = a3 a + (b + c) = (a + b) + c Ley asociativa4 a×(b×c) = (a×b)×c5 a + b = b + a Ley conmutativa6 a×b = b×a7 a + (a×b) = a Ley de Absorcion8 a×(a + b) = a9 a×(b + c) = (a×b) + (a×c) Ley distributiva10 a + (b×c) = (a + b)×(a + c)11 a + 0 = a12 a×1 = a13 a×a′ = 014 a + a′ = 1

2.2. FUNCIONES DIGITALES O BOOLEANAS 13

En este punto conviene mencionar que estas leyes cumplen con el principio de du-alidad del algebra booleana, mediante el cual si intercambiamos suma por producto y 0por 1, obtenemos otra ley igualmente valida. Observese que 1 y 2 son duales, al igual que3 y 4, y ası sucesivamente.

2.1.7. Postulados del algebra booleana

Los siguientes postulados son de bastante utilidad en la manipulacion de expresionesalgebraicas.

A + A = 1 A,0 = 0 A + AB = A + BA.A = 0 A,1 = A (A + B).(A + C) = A + B.CA.A = A A + 0 = A (A + B).B = BA + A = A A + 1 = 1 A.B + A.C = A.(B + C)A + B = B + A A + A = A A.B = B.AA = A A + AB = A

Teorema de DeMorgan:

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

2.2 FUNCIONES DIGITALES O BOOLEANAS

Las expresiones booleanas estan conformadas por variables, constantes y operacionesbooleanas. Si agregamos los parentesis como ayuda para significar agrupacion, obtenemosla idea mas general de expresion, por el estilo de las que utilizamos en los lenguajes deprogramacion. Por ejemplo,

a.x1.(b + (x1.x2))

Es una expresion booleana, siempre y cuando a, b, x1, x2 sean variables booleanas.Las expresiones boolenas tambien se denominan funciones booleanas. Para n variablesbooleanas, y utilizando la notacion matematica de funcion, tendrıamos que f(x1, x1, x3, x4, · · · , xn)representarıa una funcion booleana que contendra en su definicion las n variables booleanasy tambien los operadores booleanos.

Tomemos como ejemplo un sumador de 4 bits, representado como se muestra a contin-uacion:

Las senales de entrada son dos numeros binarios de 4 bits cada uno, y la respuesta esun numero binario de 5 bits.

Para definir la funcion digital se puede utilizar una tabla que contiene todas las com-binaciones posibles de las variables de entrada y define para cada posible combinacion el

14 CAPITULO 2. COMPUERTAS LOGICAS Y ALGEBRA DIGITAL

Figura 2.1: Sumador de 4 bits

valor de la funcion. Para este caso la tabla tendrıa 28 filas, dado que son 8 variables deentrada, cada una de las cuales puede tener 2 valores diferentes. Estas tablas se denominantablas de la verdad.

Capıtulo 3

Circuitos Basicos de 2 Niveles

Conceptos basicos

Tabla de verdadEspecificacion de un circuitoForma canonica de una ecuacionNotacion POSNotacion SOPImplementacion de un circuito usando compuertas basicas

Saber HacerSaber expresar en forma de tabla de verdad una especificacion en lenguaje natural de uncircuito logico.Obtener de la tabla de verdad la ecuacion canonica del circuito.

15

16 CAPITULO 3. CIRCUITOS BASICOS DE 2 NIVELES

3.1 FORMA “SUMA DE PRODUCTOS”

Supongamos que existe una red digital cuya operacion es definida por la tabla siguiente:

A B C F0 0 0 00 0 1 00 1 0 10 1 1 11 0 0 11 0 1 01 1 0 01 1 1 1

Cuadro 3.1:

Asumiendo que el estado verdadero de una variable es 1 y el estado complementario es0, directamente podemos escribir la siguiente expresion booleana:

F = ABC + ABC + AB C + ABC (3.1)

Esta forma de ecuacion, una serie de productos (AND) conectado por la suma (OR),la llamamos suma de productos (SOP).

3.1.1. Implementacion de un Circuito SOP

Una expresion en forma SOP puede convertirse facilmente en un diagrama logico. Eldiagrama logico que implementa la ecuacion anterior es:

Notese la naturaleza de dos niveles del diagrama logico. Cuando se asume que tanto lavariable como su complemento estan disponibles (como es casi siempre el caso), llamamosa estas de doble riel.

3.1.2. Forma Normal

Una ecuacion SOP en la que cada producto contiene todas las variables de entra-da ya sea en forma verdadera o en forma complementada, esta en forma NORMAL oCANONICA.Una ecuacion en forma normal no necesariamente es la mas simple o la unica ecuacionpara evaluar una funcion booleana en particular. Por ejemplo, la siguiente ecuacion esequivalente a la dada anteriormente.

F = AB + AB C + BC (3.2)

3.1. FORMA “SUMA DE PRODUCTOS” 17

Figura 3.1: Diagrama logico de un SOP

Observe que esta ecuacion no esta en forma normal. Aun cuando puedan existir variasecuaciones para una funcion dada, solo existira una forma normal. Para convertir unaecuacion a forma normal, debemos “multiplicar” los terminos a los que les falte una variablepor la variable faltante, ası:

F = AB(1) + AB C + (1)BC (3.3)

Se sabe que X + X = 1. Por lo tanto,

F = AB(C + C) + AB C + (A + A)BC (3.4)

de donde,

F = ABC + ABC + AB C + ABC + ABC (3.5)

F = ABC + AB C + ABC + ABC (3.6)

18 CAPITULO 3. CIRCUITOS BASICOS DE 2 NIVELES

3.1.3. Minterminos

Observando la tabla 3.1 vemos que cada combinacion de variables de entrada forma unvalor binario entre 0 y 2N − 1 en donde N es el numero de variables de entrada.

Puesto que cada combinacion posible de variables de entrada forma un valor binariounico, una combinacion de entrada puede representarse por el valor decimal equivalenteal valor binario formado por las entradas. A este valor lo llamamos numero mintermino.

Por ejemplo, cual combinacion de entrada representa el mintermino 5 (m5)?

Asumiendo las tres variables de entrada usadas anteriormente:

5 decimal = 101 binario ABC

Cual combinacion representa el mintermino 2?

2 decimal = 010 binario ABC

Cual mintermino corresponde a ABC?

ABC 110 binario = 6 decimal

Usando minterminos, la ecuacion 3.1 la podemos escribir como:

F = m2 + m3 + m4 + m7 (3.7)

Esta ecuacion tambien la podemos representar simplificadamente como:

F =∑

m(2, 3, 4, 7) (3.8)

3.2 FORMA “PRODUCTO DE SUMAS”

Mientras que la ecuacion SOP es una serie de productos conectados por suma, laecuacion POS (Productos de sumas) es una serie de sumas (OR) conectadas por la mul-tiplicacion (AND). Para formular una ecuacion POS, decimos que la salida de una reddigital sera 1 solamente cuando no sea 0. En la tabla 3.1, la salida es igual a 0 para losminterminos 0,1,5 y 6. Por lo tanto,

F = m0 m1 m5 m6 (3.9)

Veamos que significa un mintermino complementado:

m5 = ABC

de donde

m5 = ABC

3.2. FORMA “PRODUCTO DE SUMAS” 19

si aplicamos el teorema de DeMorgan:

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

de esta forma podemos escribir:

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

El procedimiento lo podemos resumir de la siguiente forma: La ecuacion POS sera elproducto logico de N terminos de suma en donde N es el numero de entradas en la tabla deverdad para los cuales la salida es 0. Los terminos de suma se forman conectando con ORlos complementos de cada variable de entrada para aquellas combinaciones cuya funcionde salida es 0.

3.2.1. Implementacion del Circuito POS

El proceso es similar al de una ecuacion SOP:

Figura 3.2: Diagrama logico de un POS

3.2.2. Maxterminos

Cuando derivamos la ecuacion POS, usamos los minterminos invertidos. Un minterminoinvertido se llama maxtermino.

20 CAPITULO 3. CIRCUITOS BASICOS DE 2 NIVELES

F = m0 m1 m5 m6

Esta ecuacion la podemos escribir en forma simplificada ası:

F =∏

m(0, 1, 5, 6) (3.10)

3.3 CONSIDERACIONES DE DISENO

Aunque las implementaciones SOP se usan mas frecuentemente, existen aplicacionespara las cuales es mas conveniente la implementacion POS. Por ejemplo, consideremosuna red digital con tres entradas para la cual la salida es 1 para seis de las ocho posiblescombinaciones de entrada. Expresada en forma SOP, la ecuacion resultante tendrıa 6terminos y el circuito requerirıa seis compuertas AND y una compuerta OR de 6 entradas.Una implementacion POS del mismo circuito tendrıa solamente 2 terminos y requerirıasolo dos compuertas OR y una compuerta AND de dos entradas.

.

Capıtulo 4

Simplificacion de Circuitos

Conceptos basicos

Minimizacion por metodo algebraicoMinimizacion por tabla de KarnaughCondiciones No ImportaCompuertas universalesImplementacion con compuertas universales

Saber HacerObtener la funcion minimizada a partir de la ecuacion canonica.Implementar la ecuacion minimizada utilizando compuertas universales

21

22 CAPITULO 4. SIMPLIFICACION DE CIRCUITOS

4.1 TECNICAS DE REDUCCION DE EXPRESIONES

Las tecnicas estudiadas en el capitulo 3 redujeron los requerimientos de hardware im-plementando expresiones con solo un tipo de compuerta. Se pueden lograr reduccionesadicionales simplificando la ecuacion original antes de intentar implementarla. Esta reduc-cion se ejecuta tıpicamente por manipulacion algebraica o con los mapas de Karnaugh.

4.1.1. REDUCCION ALGEBRAICA

En el capıtulo 3 convertimos una expresion a su forma normal multiplicando por lasvariables faltantes y sus complementos. Si pensamos en forma inversa, es decir, si remove-mos esas combinaciones de la ecuacion en forma normal, resultara la ecuacion originalmas simple. Esta es la base de la reduccion de expresiones: remover las combinaciones deuna variable y su complemento. Considere la siguiente ecuacion, la cual ya esta en formasimplificada:

F = BC + AB (4.1)

La convertimos en forma normal multiplicando por las variables faltantes y sus respec-tivos complementos:

F = (A + A)BC + AB(C + C)F = ABC + ABC + ABC + AB C (4.2)

Si se diera esta ecuacion final en forma normal y se pidiese reducirla a su forma massimple, ¿como se harıa?

Puesto que nosotros la derivamos de la ecuacion original, el proceso es obvio. Losprimeros dos terminos de la ecuacion en forma normal fueron generados por:

ABC + ABC = (A + A)BC (4.3)

y los dos ultimos por:

ABC + AB C = AB(C + C) (4.4)

puesto que la union de cualquier variable con su complemento es 1, esta combinacionse puede eliminar produciendo la ecuacion original:

F = BC + AB (4.5)

4.1. TECNICAS DE REDUCCION DE EXPRESIONES 23

El proceso empleado aquı es sencillo. Si en dos terminos una variable aparece tanto ensu forma verdadera como complementada y las variables restantes son iguales, se puedeeliminar la variable y su respectivo complemento y el resultado es simplemente un terminocompuesto de las variables restantes.

Para ilustrar adicionalmente el proceso, simplifiquemos la siguiente expresion:

F = A BC + ABC + ABC + ABC (4.6)

En los dos primeros terminos, B esta presente tanto en su forma normal como com-plementada y las variables restantes son iguales. Por lo tanto, los primeros dos terminospueden reducirse a:

A BC + ABC = A(B + B)C = AC (4.7)

En los dos ultimos terminos, B nuevamente esta presente tanto en su forma normalcomo complementada. Por lo tanto,

ABC + ABC = A(B + B)C = AC (4.8)

Produciendo una expresion reducida:

F = AC + AC (4.9)

Si examinamos la ecuacion vemos que la podemos simplificar aun mas. Puesto que Aaparece tanto en su forma verdadera como complementada, podemos reducirla a:

AC = AC = (A + A)C = C (4.10)F = C (4.11)

Por lo tanto, el hardware necesario para implementar esta funcion es simplemente uncable que conecta a C con la salida F.

La simplificacion posible y la reduccion resultante en los requerimientos de hardwareson obvias. Pero la reduccion algebraica es a menudo difıcil, especialmente en expresionescomplejas. La secuencia apropiada de operaciones que debe ejecutarse no siempre es clara.Pero ası como en el capıtulo 3 se utilizo un metodo grafico para implementar circuitoscon un solo tipo de compuerta, de igual modo existe un metodo grafico para facilitar lareduccion de expresiones.

24 CAPITULO 4. SIMPLIFICACION DE CIRCUITOS

4.1.2. MAPAS DE KARNAUGH

Los mapas de Karnaugh son un metodo grafico para reducir expresiones a su formamınima. Un mapa K es una tabla de verdad organizada especialmente de tal modo quelas reducciones posibles se puedan ver facilmente. En las figuras 4-1, 4-2 y 4-3 se muestrala forma de los mapas K de dos, tres y cuatro entradas. En lugar de enunciar todas lascombinaciones de las entradas como en una tabla de verdad normal, los mapas K usanlas posiciones de los cuadros en el mapa para representar las diferentes combinaciones deentrada:

0 1

0

3 2

1

0 1@

@@A

B

Figura 4.1: Mapa K de 2 entradas

0 1 3 2

0

4 5 7 6

1

00 01 11 10@

@@A

BC

Figura 4.2: Mapa K de 3 entradas

0 1 3 2

00

4 5 7 6

01

12 13 15 14

11

8 9 11 10

10

00 01 11 10@

@@AB

CD

Figura 4.3: Mapa K de 4 entradas

Para ayudar en la determinacion de cual combinacion de entrada esta representadaen un cuadro, las filas y las columnas estan marcadas con la combinacion parcial deentrada representada por la fila y la columna. Por ejemplo, cual combinacion de entrada

4.1. TECNICAS DE REDUCCION DE EXPRESIONES 25

esta representada por el cuadro en la fila 2, columna 4 del mapa K de 4 entradas? La fila2 esta marcada 01; la columna 4 esta marcada 10. Colocando estos dos valores uno juntoal otro en orden fila-columna, se produce 0110, el cual es el mintermino 6 o AB CD . Elcuadrado en la fila 3 columna 2 representa 1101, el cual es el mintermino 13 o ABCD.

Observando mas profundamente vemos que la etiqueta 00 en la fila 1 indica que A y Bson ambos 0 para toda la fila. De igual forma, la etiqueta 10 en la columna 4 indica queC es 1 y D es 0 para toda la columna.

Para representar una funcion con un mapa K, los unos y los ceros se colocan en loscuadrados apropiados de acuerdo con la combinacion de entradas representada por cadacuadro.

El arreglo especial del mapa K asegura que las combinaciones de entrada representadaspor dos cuadrados adyacentes son identicas excepto que una variable aparece en su formaverdadera en un cuadrado y en su forma complementada en el otro. Notese que este essimplemente el criterio especificado en la seccion 4.1.1 para la reduccion de dos terminos.Por lo tanto, dos cuadrados adyacentes pueden ser elegibles para ser reducidos.

Esta relacion puede verse mirando dos cuadros adyacentes en un mapa K. Por ejemplo,considere los dos primeros cuadrados de la fila 1 de un mapa K de 4 entradas. El primercuadrado representa la combinacion de entrada 0000, o A B C D . El segundo cuadradorepresenta la combinacion de entrada 0001, o A B CD. Entre estos dos terminos, todoes identico excepto que D aparece en su forma verdadera en el segundo cuadro y en suforma complementada en el primer cuadro. Notese que esta relacion se mantiene entre doscuadrados adyacentes cualquiera, tomados ya sea horizontal o verticalmente. Ademas, larelacion se mantiene entre los lados exteriores (es decir, fila 1, cuadro 1 y 4 o columna 1,filas 1 y 4, etc.); por lo tanto, los lados extremos son considerados adyacentes.

Uso de los mapas de KARNAUGH

Para usar un mapa K en la reduccion, primero llene el mapa K con la salida de lafuncion. La tabla de verdad normal para la ecuacion 4.2 se muestra en la figura 4.4, endonde tambien se ha diligenciado el mapa K.

A B C F0 0 0 00 0 1 00 1 0 00 1 1 11 0 0 11 0 1 11 1 0 01 1 1 1

00

01

13

02

0

14

15

17

06

1

00 01 11 10@

@@A

BC

Figura 4.4:

26 CAPITULO 4. SIMPLIFICACION DE CIRCUITOS

Puesto que los cuadrados adyacentes representan terminos que pueden ser reducidos,busque y encierre grupos de los unos adyacentes. Un grupo debe constar de 1,2,4,8 o 16unos, es decir, una potencia de 2.

En general, entre mayor sea el grupo encerrado, mas sencilla sera la expresion reducida.Por lo tanto, primero busque grupos de 16 (no aplicable en este ejemplo, por supuesto) yluego siga buscando grupos de 8, de 4, de 2 y finalmente, los unos aislados, hasta que loshaya agrupado a todos. Este proceso se muestra en la figura 4.5

00

01

13

02

0

14

15

17

06

1

00 01 11 10@

@@A

BC

���

��

Figura 4.5:

La expresion resultante SOP constara de un termino por cada grupo encerrado. Por lotanto, entre menos grupos encerrados, mas simple sera la expresion.

En el mapa K de la figura 4.5, obtuvimos 2 grupos.

El producto resultante para cada grupo estara compuesto de aquellas variables queson iguales para todo el grupo. Por ejemplo, para el grupo vertical, tanto B como C son1 para todo el grupo; por lo tanto, el termino producto resultante es BC. En el grupohorizontal, A es 1 en ambos cuadros y B es 0 en ambos cuadros. Por consiguiente, elproducto resultante sera AB. Combinando ambos resultados obtendremos:

F = AC + AB (4.12)

Como segundo ejemplo, reduzcamos la ecuacion 4.6 usando mapas K. En la figura 4.6aparece la tabla de verdad normal y el mapa K resultante.

00

11

13

02

0

04

15

17

06

1

00 01 11 10@

@@A

BC

'

&

$

%Figura 4.6:

Si se buscan inicialmente grupos de 8, no encontramos ninguno; si se buscan grupos de4, encontraremos uno de acuerdo con la figura 4.6.

4.1. TECNICAS DE REDUCCION DE EXPRESIONES 27

Puesto que ya hemos encerrado todos los unos, no es necesario seguir buscando masgrupos. La ecuacion resultante SOP tendra solamente un termino, en el cual aparecen soloaquellas variables que no cambian para todo el grupo. Vemos que solamente C es igual a1 para los cuatro cuadros. Por lo tanto, la expresion final reducida es:

F = C (4.13)

Como ejemplo final, miremos un caso mas complejo. En la figura 4.7 tenemos la tablade verdad y el mapa K para un circuito de 4 entradas.

00

11

03

02

00

14

05

17

16

01

112

013

015

114

11

08

19

011

010

10

00 01 11 10@

@@AB

CD

��

��

'

&

$

%��

��

Figura 4.7:

La figura 4.7 ilustra como reducir esta funcion. Segun se ve, puede formarse un grupode 4 partiendo del hecho de que los vertices extremos son considerados adyacentes. Noteseuna segunda aplicacion del enrollamiento al formar el grupo de los unos entre las filassuperior e inferior. Finalmente, notese el grupo de dos unos, uno usando un 1 que ya habıasido utilizado.

El resultado constara de 3 terminos puesto que tenemos tres grupos encerrados. Mirandoel primer grupo de 4, vemos que B y D permanecen constantes. Para el grupo vertical de2, B es 0, C es 0 y D es 1. En el grupo final de 2, A es 0, B es 1 y C es 1. Por lo tanto, elresultado es:

F = BD + B CD + ABC (4.14)

Condiciones “No Importa”

Muchas funciones tienen varias combinaciones de entrada para las cuales no se defineninguna salida. Estas se denominan condiciones “no importa”.

En un mapa K, una condicion “no importa” puede usarse como 0 o como 1, lo cualresulta en una expresion mas simple.

28 CAPITULO 4. SIMPLIFICACION DE CIRCUITOS

Tomemos como ejemplo la red definida por la tabla de verdad que se muestra en latabla 4.1.

Esta red toma un dıgito BCD de 4 bits como entrada. La salida es 1 si el dıgito es mayorque 5; de otra forma, la salida es 0. Puesto que es BCD, las entradas validas correspondena los dıgitos decimales entre 0 y 9; por lo tanto, los minterminos 10 a 15 son consideradoscomo condiciones “no importa” y los marcamos con una X.

A B C D F0 0 0 0 00 0 0 1 00 0 1 0 00 0 1 1 00 1 0 0 00 1 0 1 00 1 1 0 10 1 1 1 11 0 0 0 11 0 0 1 11 0 1 0 X1 0 1 1 X1 1 0 0 X1 1 0 1 X1 1 1 0 X1 1 1 1 X

Cuadro 4.1:

El mapa K para esta tabla lo vemos en la figura 4.8

00

01

03

02

00

04

05

17

16

01

X12

X13

X15

X14

11

18

19

X11

X10

10

00 01 11 10@

@@AB

CD

Figura 4.8:

Observemos que en la figura se han encerrado dos grupos, para los cuales la expresionresultante es:

4.2. IMPLEMENTACION CON UN TIPO DE COMPUERTA 29

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

Puesto que las X las podemos tomar como 0. Ası como el 1, podemos formar grupossegun se muestra en la figura 4.9

00

01

03

02

00

04

05

17

16

01

X12

X13

X15

X14

11

18

19

X11

X10

10

00 01 11 10@

@@AB

CD

'

&

$

%

'

&

$

%

Figura 4.9:

Ahora tenemos un grupo de 8 y un grupo de 4. La unica variable comun a todos losterminos del grupo de 8 es A; las variables comunes al grupo de 4 son B y C.

Por lo tanto, la expresion resultante es:

F = A + BC (4.16)

El uso de condiciones “no importa” tıpicamente nos permite la reduccion adicional talcomo se ha demostrado.

4.2 IMPLEMENTACION CON UN TIPO DE COMPUERTA

4.2.1. MOTIVACION

En la industria, el costo es tıpicamente el factor de merito en el diseno y la produc-cion de bienes. En la produccion de circuitos digitales, aun cuando pueda parecer que eldepartamento de compras es el responsable de reducir los costos buscando el proveedormas barato, los ingenieros que disenan los circuitos digitales tienen varios metodos a sudisposicion para reducir el costo del diseno.

En general, entre mas pocas y mas baratas sean las partes requeridas para construirun circuito, menor sera el costo. Por lo tanto, un objetivo importante en el diseno de uncircuito, es minimizar el numero de elementos y su costo asociado.

30 CAPITULO 4. SIMPLIFICACION DE CIRCUITOS

Para ilustrar lo anterior, nos remitimos al capıtulo dos en el cual se introdujeron algunasideas para convertir una expresion POS a SOP en un diagrama logico. Por ejemplo, dadala siguiente expresion SOP:

F = AB + CD (4.17)

La implementacion de este circuito requiere dos compuertas AND y una compuertaOR. Los chips requeridos son el 7408 (cuatro ANDs) y el 7432 (cuatro ORs). La imple-mentacion de las expresion dada utiliza solo dos de los cuatro compuertas AND y solo unade las cuatro compuertas OR. En la produccion, este tipo de ineficiencia serıa muy costosa.

Para obviar la ineficiencia, se acostumbra implementar una expresion que use solamenteun tipo de compuerta, compuertas NAND o NOR. La compuerta NAND es la funcion cuyaimplementacion es mas “natural” a nivel interno del chip. Esta cualidad hace que la com-puerta NAND sea la mas rapida y la mas barata de los chips TTL. Ademas, las compuertasNAND y NOR pueden actuar como inversores, eliminando la necesidad de chips inversoresseparados.

¿Como puede realizarse una expresion en terminos de AND y OR utilizando solamentecompuertas NAND o NOR? Existen dos metodos primarios para realizar esto. Primero,usando el algebra booleana. La expresion original puede ser manipulada y convertida enuna expresion equivalente que utilice el tipo de compuerta deseada. Este metodo puedevolverse extremadamente complicado, especialmente cuando se trata de expresiones exten-sas. El segundo metodo utiliza reglas de equivalencia de compuertas, las cuales permitenque cualquier compuerta desempene las funciones AND y OR.

4.2.2. MANIPULACION ALGEBRAICA

Las leyes del algebra booleana nos permiten convertir una expresion booleana en una ex-presion equivalente que sea directamente implementable con el tipo de compuerta deseada.

Por ejemplo, consideremos la implementacion de la ecuacion 4.17 utilizando solamentecompuertas NAND. La funcion de la compuerta NAND sobre dos entradas, A y B, serepresenta como:

F = AB (4.18)

Por lo tanto, para implementar una expresion usando solo compuertas NAND, el ob-jetivo es reducir todas las operaciones logicas a la forma anterior, es decir, a la de unacompuesta NAND.

4.2. IMPLEMENTACION CON UN TIPO DE COMPUERTA 31

De nuestra expresion original:

F = AB + CD (4.19)

aplicamos doble inversion y el teorema de DeMorgan

F = AB + CD (4.20)

F = (AB).(CD) (4.21)

examinado esta expresion encontramos tres formas NAND:

1. (AB)

2. (CD)

3. XY

en donde X y Y corresponden a las expresiones 1 y 2. Por lo tanto, la expresion puederealizarse como sigue:

Figura 4.10:

´?Como se puede implementar la ecuacion 4.17 usando compuertas NOR? Recordemosque la funcion NOR sobre dos entradas es:

F = A + B (4.22)

si tomamos la ecuacion original,

F = AB + CD (4.23)

si invertimos dos veces y aplicamos DeMorgan:

32 CAPITULO 4. SIMPLIFICACION DE CIRCUITOS

F = AB + CD (4.24)

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

en esta expresion encontramos dos formas NOR:

1. (A + B)

2. (C + D)

Finalmente, la funcion logica final entre 1 y 2 es la funcion OR, la cual se puede obtenerinvirtiendo la salida de la NOR

Figura 4.11:

Como puede observarse, este metodo puede llegar s ser muy complejo y en consecuencia,la probabilidad de error es alta.

4.2.3. EQUIVALENCIAS DE COMPUERTAS

El algebra booleana se compone solamente de tres operadores: AND, OR y NOT.Cualquier expresion puede implementarse usando las combinaciones de estas tres fun-ciones. Para implementar un circuito con un solo tipo de compuerta se deben ejecutar tresoperaciones de algun modo.

Ejecutando la funcion NOT con NAND y NOR

NAND y NOR pueden funcionar como inversores uniendo las entradas

Ejecutando la funcion AND con NAND y NOR

Por medio de las transformaciones booleanas podemos determinar como ejecutar lafuncion AND con compuertas NAND o NOR.

4.2. IMPLEMENTACION CON UN TIPO DE COMPUERTA 33

Figura 4.12:

La funcion AND sobre dos entradas se ilustra en el algebra booleana como:

F = AB (4.26)

La funcion NAND se expresa como:

G = AB F = G (4.27)

Esta ecuacion puede reducirse a la funcion AND complementando la ecuacion para re-mover el NOT. Por lo tanto, la compuerta NAND ejecutara la funcion AND si invertimosla salida.

La funcion NOR sobre dos entradas es:

F = A + B (4.28)

si aplicamos el teorema de DeMorgan, obtenemos

F = A B A = C B = D (4.29)

En resumen, una compuerta NAND ejecutara la funcion AND si invertimos la salida.Una compuerta NOR ejecutara la funcion AND si invertimos las entradas.

Ejecutando la funcion OR con NAND y NOR

La funcion OR sobre dos entradas la representamos como

F = A + B (4.30)

La funcion NAND se expresa como

F = CD (4.31)

34 CAPITULO 4. SIMPLIFICACION DE CIRCUITOS

si aplicamos el teorema de DeMorgan:

F = C D A = C B = D (4.32)

Por lo tanto, una compuerta NAND ejecuta la funcion OR si se complementan lasvariables de entrada.

La funcion NOR sobre dos entradas es:

G = A + B F = G (4.33)

La cual puede reducirse a la funcion OR complementando toda la ecuacion. Por lotanto, la compuerta NOR ejecuta la funcion OR si se complementa la salida.

Definiciones simbolicas

Para clarificar la doble naturaleza de las compuertas, se puede representar simbolica-mente, de dos formas. En las figuras 4.13 y 4.14 se muestran dos representaciones de lacompuerta NAND y dos representaciones de la compuerta NOR, respectivamente.

Notamos que la presencia de un cırculo a la entrada indica que la entrada debe serinvertida para ejecutar apropiadamente la funcion dictada por la forma del sımbolo, esdecir, la funcion AND y OR.

Ademas, la presencia de un cırculo a la salida indica que esta debe invertirse paraejecutar apropiadamente la funcion dictada por la forma del sımbolo.

Figura 4.13: Representaciones de la compuerta NAND

Figura 4.14: Representaciones de la compuerta NOR

4.2. IMPLEMENTACION CON UN TIPO DE COMPUERTA 35

Entradas y Salidas activo alto y activo bajo

Para definir aun mas el significado de los cırculos en los sımbolos de las compuertas,podemos decir que una compuerta con un cırculo a la salida tiene una salida ACTIVABAJA. Una compuerta con cırculos en la entrada tiene entradas ACTIVAS BAJAS. Deigual manera, una compuerta sin cırculo a la salida tiene salida ACTIVA ALTA y unacompuerta sin cırculos a la entrada tiene entradas ACTIVAS ALTAS.

Por ejemplo, la forma AND de la compuerta NAND se puede pensar como una compuer-ta AND con entradas activas altas y la salida activa baja. La forma OR de la compuertaNAND se puede pensar como una compuerta OR con entradas activas bajas y la salidaactiva alta.oo

El termino activo alto se refiere a niveles logicos como los que hemos mencionado has-ta ahora: un verdadero se representa por un nivel logico alto. Activo bajo indica que unverdadero es representado por un nivel logico bajo en lugar de un nivel logico alto. Parailustrar esto, consideremos la ejecucion de la funcion AND con la compuerta NAND. Lafuncion AND produce una salida verdadera solamente cuando todas las entradas son ver-daderas. Si miramos la forma AND de la compuerta NAND, vemos que tambien ejecutala funcion AND pero como tiene una salida activa baja, el valor verdadero sera indicadopor un nivel logico bajo en lugar de un nivel logico alto. Por lo tanto, para ver una salidaactiva alta normal, debemos invertir la salida de una compuerta NAND.

4.2.4. DISENO DE DIAGRAMAS LOGICOS QUE UTILIZAN EQUIV-ALENCIAS DE COMPUERTAS

Teniendo en mente el concepto de equivalencias de compuertas, veremos a continuacionel diseno de diagramas logicos. Segun las guıas del capıtulo ??, el diagrama logico paraimplementar la ecuacion 4.17 es como sigue:

Figura 4.15:

36 CAPITULO 4. SIMPLIFICACION DE CIRCUITOS

Diseno de diagramas que utilizan compuertas NAND

Este diagrama se convierte solo a compuertas NAND reemplazando inicialmente todaslas compuertas OR con la forma OR de la compuerta NAND y posteriormente, todas lascompuertas AND con la forma AND de la compuerta NAND. No dibujar todavıa ningunaconexion.

Figura 4.16:

Puesto que tratamos con entradas y salidas activas altas en el mundo real, las entradasiniciales y salidas finales generalmente deben ser activas altas. Si miramos la figura 4.16vemos que esta condicion ya esta satisfecha. La siguiente etapa consiste en conectar lossımbolos AND y OR. Puesto que la forma OR de la compuerta NAND requiere entradasactivas bajas y que la salida de la forma AND ya es activa baja, no se necesita conversionde nivel y puede hacerse la conexion directa entre las salidas de las formas AND y lasentradas de la forma OR. En general, puede hacerse una conexion directa entre una saliday una entrada, ambas activas bajas, o entre una salida y una entrada, ambas activas altas.Si una es activa baja y la otra es activa alta, debemos utilizar un inversor. Haciendo lasconexiones como se ha descrito, el diagrama logico final es como sigue:

Figura 4.17:

Notese que al usar las formas AND y OR de las compuertas NAND, es mas obvia lafuncion del circuito. Mirando la figura 4.17, vemos rapidamente que es una implementacionSOP, mientras que si vemos el circuito equivalente de la figura 4.10, encontramos que lafuncion real del circuito no es clara.

4.2. IMPLEMENTACION CON UN TIPO DE COMPUERTA 37

El segundo ejemplo muestra un caso en el que se necesita una conversion de nivel.Tomemos la implementacion de una compuerta OR de tres entradas usando solamentecompuertas NAND de dos entradas. Si se dispone de compuertas OR de dos entradas,esta funcion se podrıa implementar como sigue:

Figura 4.18:

Para implementar solamente con compuertas NAND de dos entradas, procedemos comoantes reemplazando las compuertas OR con la forma OR de la compuerta NAND, ası:

Figura 4.19:

Para completar el diagrama debemos asegurarnos que hay entradas y salidas activasaltas. Puesto que las entradas de las formas OR son activas bajas, debemos invertir lasvariables de entrada. Si suponemos entradas de doble riel, no mostramos los inversores deentrada. La salida final del circuito ya es activa alta, por lo cual no necesitamos conversion.La conversion final se realiza entre la primera y la segunda formas OR, en donde vemosque es necesario un inversor.

Figura 4.20:

38 CAPITULO 4. SIMPLIFICACION DE CIRCUITOS

DISENO DE DIAGRAMAS LOGICOS QUE UTILIZAN COMPUERTAS NOR

Al igual que con las compuertas NAND, el primer paso para implementarlas usandosolamente compuertas NOR, es reemplazar todas las compuertas OR con la forma ORde la compuerta NOR y todas las compuertas AND con la forma AND de la compuertaNOR. Con la figura 4.14 obtendremos:

Figura 4.21:

Si hacemos las mismas consideraciones de niveles activos alto y activos bajos, finalmenteobtendremos:

Figura 4.22:

.

Capıtulo 5

Aplicaciones Combinacionales

Conceptos basicos

MultiplexoresDemultiplexoresSumadoresCodificadoresComparadoresConvertidores de CodigoCircuitos MSI

Saber HacerConocer y saber utilizar las aplicaciones mas importantes de tipo combinacional, talescomo mux, demux, sumador, comparador, convertidores de codigo.

39

40 CAPITULO 5. APLICACIONES COMBINACIONALES

5.1 MULTIPLEXORES Y DEMULTIPLEXORES

5.1.1. Definicion

Nuestro estudio previo de las bases de la logica digital y de diseno de circuitos, nospermitio entender y disenar algunos circuitos importantes. En este capıtulo estudiaremosdos de esos circuitos: el multiplexor y el demultiplexor. El multiplexor (mux) efectua lafuncion de un conmutador rotatorio, seleccionando una de varias entradas para conectara una sola salida; por lo general, al multiplexor se le denomina selector. El demultiplexor(demux) realiza la funcion inversa, es decir, conecta una sola entrada a una de variassalidas. Al demultiplexor frecuentemente se le denomina decodificador. Estas dos funcionesse usan intensamente en redes digitales.

La combinacion mux-demux se utiliza para la comunicacion serial con el fin de reducir elnumero de cables requeridos para pasar los datos. Esta pareja puede ser usada de manerasimilar para manejar despliegues de dıgitos multiples tales como los que se encuentran enlas calculadoras. Los mux se usan frecuentemente en los circuitos digitales para controlarel enrutamiento de los datos y las senales. Por ejemplo, se puede usar un multiplexor paraseleccionar la entrada a un registro particular de varias fuentes.

Los decodificadores son usados para efectuar decodificaciones de direcciones de memo-ria. Basados en ciertas lıneas de direccion, el decodificador puede suministrar las senales dehabilitacion a los chips de memoria apropiados. Ademas, tanto los mux como los demuxpueden utilizarse para evaluar expresiones booleanas sencillas usando menos hardwareque si se usaran compuertas individuales. Existen muchas aplicaciones adicionales; lasdescritas, simplemente empiezan a ilustrar la flexibilidad de estas dos funciones.

5.1.2. El Multiplexor

Como se menciono previamente, un mux actua como un conmutador rotatorio conectan-do una de varias entradas a una salida unica. La seleccion de cual entrada debe ser conec-tada a la salida, es determinada por medio de entradas adicionales llamadas lıneas decontrol o de seleccion. La entrada seleccionada es determinada por el equivalente binariodel valor colocado en las lıneas de seleccion. Por ejemplo, consideremos un mux que selec-ciona una de cuatro entradas para conectar a la salida. A esto lo llamamos mux de 4 a 1.Para seleccionar una de cuatro entradas, deben existir cuatro combinaciones unicas de laslıneas de seleccion. Para esto se necesitan dos lıneas de seleccion que nos dan las cuatrocombinaciones unicas 00, 01, 10 y 11.

La combinacion 00 seleccionara la lınea 0, la combinacion 01 selecciona la lınea 1 yası sucesivamente. Esta funcion de multiplexor se ilustra en la tabla 5.1. Esta tabla muestrala salida F como una funcion de las entradas de las lıneas de seleccion.

En lugar de enunciar los posibles estados de la entradas de datos, esta forma simplificadade tabla de verdad muestra la salida como funcion de los datos de la lınea de entrada O

5.1. MULTIPLEXORES Y DEMULTIPLEXORES 41

S2 S1 F

0 0 D0

0 1 D1

1 0 D2

1 1 D3

Cuadro 5.1: Tabla de verdad de un mux de 4 a 1

(DO) o lınea de entrada 1 (D1) y ası sucesivamente. Lo anterior se implementa con lasiguiente expresion:

F = S2 S1 D0 + S2 S1 D1 + S2 S1 D2 + S2 S1 D3 (5.1)

En la figura 5.1 se muestra una implementacion con compuertas NAND del multiplexor4 a 1. Puesto que la funcion mux es tan util, existen muchos chips TTL que efectuan laoperacion equivalente del circuito mostrado en la figura 5.1. Por ejemplo, el 74153 contienedos multiplexores 4 a 1, el 74151 contiene un multiplexor 8 a 1 y el 74157 contiene 4multiplexores 2 a 1.

Figura 5.1: Circuito logico de un MUX 4 a 1.

El multiplexor generalmente aparece en un circuito como una unidad funcional sencil-la, no como las compuertas que conforman el circuito. La figura 5.2 muestra una repre-sentacion tıpica.

42 CAPITULO 5. APLICACIONES COMBINACIONALES

Figura 5.2: Representacion simplificada de un MUX 4 a 1

5.1.3. El Demultiplexor

El demultiplexor conecta una entrada a una de varias salidas. La salida se escoge pormedio de las lıneas de seleccion tal como en el mux. El uso mas comun del demultiplexores el de decodificador. De hecho, los demux son conocidos como decodificadores. Un de-codificador coloca en 0 la lınea de salida definida por las lıneas de seleccion. Esta funcionse implementa facilmente con el demux conectando la lınea de entrada con 0.

Para ilustrar lo anterior, consideremos la operacion de un demux que conecta unaentrada a una de cuatro salidas, llamado demultiplexor de 1 a 4. El demux es llamadodecodificador de 2 a 4 puesto que dos lıneas seleccionan una de cuatro salidas. La operacionde este demux se ilustra en la tabla 5.2

DI S2 S1 F0 F1 F2 F3

0 0 0 0 1 1 10 0 1 1 0 1 10 1 0 1 1 0 10 1 1 1 1 1 01 X X 1 1 1 1

Cuadro 5.2:

Notese que el valor por omision de las salidas es 1. Por lo tanto, cualquier salida noseleccionada sera 1. Entonces, como lo ilustra la tabla 5.2, cuando el dato en DI sea 1,todas las salidas seran 1 sin importar la combinacion de las lıneas de seleccion.

El decodificador coloca en 0 la lınea de salida seleccionada por las lıneas de seleccion.Segun se aprecia en la tabla 5.2, esto se logra conectando a 0 la entrada de datos. Por lotanto, esta puede verse como una habilitacion activa baja para el decodificador. Si estasenal de habilitacion no es baja, el decodificador no funcionara (todas las salidas seran 1); amenudo, los decodificadores tienen mas de una lınea de habilitacion, haciendose necesarioque todas la lıneas de habilitacion esten activadas para que funcione el decodificador.

5.1. MULTIPLEXORES Y DEMULTIPLEXORES 43

Las funciones ilustradas en la tabla 5.2 se pueden expresar algebraicamente como:

F0 = Di S2 S1 (5.2)

F1 = Di S2 S1 (5.3)

F2 = Di S2 S1 (5.4)

F3 = Di S2 S1 (5.5)

En la figura 5.3 se muestra una implementacion con compuertas NAND del demux 1 a4 (decodificador 2 a 4)

De igual modo que los multiplexores, el circuito demultiplexor esta disponible en difer-entes variaciones de chips TTL. Por ejemplo, el 74138 contiene dos demux 1 a 4 (decodi-ficador 3 a 8) y el 74139 contiene dos demux 1 a 4 (decodificadores 2 a 4).

Figura 5.3: Circuito Logico del DEMUX 1 a 4.

Tambien los demux se colocan en los circuitos como unidades funcionales separadas.En la figura 5.4 se muestran las representaciones caracterısticas:

Notese la presencia de los indicadores activos bajos en la entrada de habilitacion yen cada una de las salidas de la representacion como decodificador. Esto indica que el

44 CAPITULO 5. APLICACIONES COMBINACIONALES

Figura 5.4: Representacion simplificada del DEMUX 1 a 4.

decodificador se habilita con una entrada baja y que la salida adquiere el valor bajo alseleccionarla.

5.1.4. Aplicaciones de los Multiplexores y de los Demultiplexores

Ahora que ya entendemos la operacion basica del mux y el demux, miraremos en detallelas aplicaciones mencionadas en la seccion 5.1.4.

Comunicacion

Consideremos la situacion en la cual dos computadores de 16 bits deben comunicarse.La comunicacion podrıa efectuarse facilmente utilizando la transmision paralela de to-dos los 16 bits. Esto requerirıa al menos 18 conductores, uno por cada bit; ademas, unopara referencia de tierra, y adicionalmente una senal de indicacion de que los datos estandisponibles. Un metodo alterno se muestra en la figura 5.5.

Utilizando un multiplexor para seleccionar un bit de la palabra de entrada y un demul-tiplexor para conectar el dato al bit apropiado de la palabra de salida, se puede estableceruna comunicacion serial usando solamente 6 lıneas: una para la lınea de datos, cuatrolıneas de seleccion y la lınea de tierra. Se puede transmitir una palabra completa variandosecuencialmente las lıneas de seleccion desde 0 hasta 15. Esta tecnica se conoce con elnombre de MULTIPLEXACION.

Aunque se requieren menos conductores al usar la multiplexacion, el metodo de trans-ferencia paralelo es inherentemente capaz de lograr velocidades de transmision mayores.Pero en muchas aplicaciones, la velocidad que se puede obtener con el multiplexado essuficiente y en consecuencia, constituye es una ventaja la reduccion de las conexiones.

5.1. MULTIPLEXORES Y DEMULTIPLEXORES 45

Figura 5.5: Comunicacion usando MUX-DEMUX.

Enrutamiento de datos

En un computador tıpico, el contador de programa (CP ) debe ser cargado desde fuentesdiferentes. Por ejemplo, cuando se tiene la ejecucion en lınea recta, el CP simplementedebe incrementarse despues de cada instruccion. En este caso, el CP debe ser cargadodesde un contador. Si se ejecuta una instruccion de salto absoluto, el CP se cargara conla direccion especificada en la instruccion, la cual normalmente estara en el registro deinstruccion RI. Si se ejecuta una instruccion de salto relativo, entonces el desplazamientoespecificado debe sumarse al valor corriente de CP . En este otro caso el CP se cargara conla salida de la unidad aritmetica logica UAL.

Un mux es ideal para este tipo de situacion: seleccionar una de varias entradas. Enesta situacion, el CP se conecta a la salida del mux y las entradas con el contador, con elregistro de instruccion y con la UAL, tal como ya se describio. Colocando diferentes valoresen las lıneas de seleccion, puede escogerse la entrada al CP desde diferentes fuentes. Elvalor colocado en las lıneas de seleccion proviene de un campo, una microinstruccion o deun secuenciador fijo, que controla la ejecucion de las instrucciones.

Existe un problema obvio con este enfoque. Suponga que el computador con el cual seesta trabajando, utiliza direcciones de 16 bits. El mux que se necesita debe tener entradasde 16 bits cada una pero un mux solo tiene una entrada y no 16. La solucion es utilizar unmux por cada bit de la palabra como se ilustra en la Figura 5.6 donde CO se refiere al bit0 del contador, R0 se refiere al bit 0 de la direccion en el registro de instruccion, UAL0 serefiere al bit 0 de la salida de la UAL y ası sucesivamente para los 15 bits restantes. Lasmismas lıneas de seleccion van a todos los multiplexores.

46 CAPITULO 5. APLICACIONES COMBINACIONALES

Figura 5.6: Enrutamiento de datos.

Decodificacion de Direcciones

Consideremos un sistema simple con microprocesador que tenga una memoria de 256bytes. Suponga que esta memoria esta hecha con un chip de RAM de 256X8 (256 registrosde 8 bits). Para identificar las posiciones de este chip se requieren 8 lıneas de direccion(direcciones 00-FF).

Esta configuracion se muestra en la figura 5.7. Notese que el chip de RAM tiene unaentrada de habilitacion activa baja. La RAM se habilita en este caso colocando una senalbaja en la lınea de habilitacion. Para no complicar el diagrama, no se han incluido lasocho lıneas de datos.

Figura 5.7: Chip de RAM de 256 x 8.

Ahora queremos incrementar la memoria del computador a 1K. Esto requiere obvia-mente cuatro chips de RAM 256 x 8. El direccionamiento de estos chips puede dividirsecomo sigue:

Direccion Chip0000-00FF 00100-01FF 10200-02FF 20300-03FF 3

Las 8 lıneas de direccion mas bajas (A7-A0) iran a las lıneas de direccion de cada unode los cuatro chips para seleccionar una de las 256 posiciones de cada chip. Las siguientesdos lıneas de la direccion (A8 y A9) determinan cual de los cuatro chips debe utilizarse.

5.1. MULTIPLEXORES Y DEMULTIPLEXORES 47

Cuando A8 y A9 son ambas 0, debe habilitarse el chip 0. Cuando A9 sea 0 y A8 sea 1,debe habilitarse el chip 1 y ası sucesivamente. Si se usan las lıneas A9 y A8 como entradasde seleccion de un decodificador de 2 a 4, una de las cuatro salidas se vuelve baja basadaen las dos lıneas de direccion. Esta salida se conecta a la entrada de habilitacion del chipRAM.

La disposicion descrita se ve en la Figura 5.8.

Figura 5.8: Memoria RAM de 1K.

Implementacion de las expresiones con multiplexores

Un multiplexor se puede usar para implementar facilmente una tabla de verdad sinnecesidad de circuitos complejos AND-OR. Consideremos la tabla de verdad 5.3

A B C F0 0 0 10 0 1 10 1 0 00 1 1 11 0 0 11 0 1 01 1 0 01 1 1 0

Cuadro 5.3:

Una red digital que implemente esta tabla de verdad debe tener una salida 1 parael mintermino 0, una salida 1 para el mintermino 1, una salida 0 para el mintermino 2y ası sucesivamente. Si se usa A,B y C como entradas a las lıneas de seleccion de unmultiplexor de 8 a 1, la salida del multiplexor es la entrada 0 (I0) para el mintermino 0,la entrada 1 (I1) para el mintermino 1 y ası sucesivamente. Por lo tanto, el multiplexor

48 CAPITULO 5. APLICACIONES COMBINACIONALES

puede usarse para implementar la tabla de verdad simplemente conectando las entradasde la funcion a las lıneas de seleccion y conectando las entradas del multiplexor a 1 o a 0de acuerdo con la salida para ese mintermino.

En la figura 5.9 se muestra el circuito respectivo.

Figura 5.9: Implementacion de una expresion con un MUX

En el ejemplo anterior, implementamos una tabla de verdad de 8 entradas con un mux8 a 1. Esta funcion tambien puede construirse con un mux 4 a 1. En general, una tabla deverdad de N entradas puede implementarse ya sea con un mux de N a 1 o con un mux deN/2 a 1.

Para utilizar un mux de 4 a 1, las entradas de la funcion A y B se conectan a las lıneasde seleccion del mux. Si miramos la tabla de verdad 5.4, las conexiones requeridas seranmas obvias.

A B C F0 0 0 10 0 1 10 1 0 00 1 1 11 0 0 11 0 1 01 1 0 01 1 1 0

Cuadro 5.4:

Para AB = 00, la salida de la funcion es siempre 1; por lo tanto, la entrada 0 (I0) delmux se conecta a 1. Si AB = 01, la salida de la funcion es 0 cuando C es 0 y 1 cuando Ces 1. Por lo tanto, se conecta C a la entrada 1 (Y1) del mux. Si AB = 10, la salida de lafuncion es 1 cuando C es 0 y 0 cuando C es 1. Por lo tanto, conectamos Ca la entrada 2 (I2)del mux. Si AB = 11, la salida de la funcion es siempre 0. Por consiguiente, conectamosla entrada 3 (I3) a 0. Esta implementacion se muestra en la figura 5.10.

5.2. SUMADORES BINARIOS Y OTROS CIRCUITOS COMBINACIONALES 49

Figura 5.10: Implementacion de una expresion con un MUX

Implementacion de expresiones con decodificadores

Las tablas de verdad tambien se pueden implementar con decodificadores. Un de estosdecodificadores colocara en 0 la salida escogida mediante las lıneas de seleccion.

Consideremos un decodificador de 3 a 8 y una tabla de verdad de 3 variables. Si secolocan las entradas a la tabla de verdad en las lıneas de seleccion del decodificador, lassalidas seleccionadas por las entradas a la tabla de verdad se ubicaran en cero. Por ejemplo,la salida de la funcion definida en la tabla 5.3 es 1 para los minterminos 0, 1, 3 y 4. Sialguno de estos minterminos se aplica a las lıneas de seleccion del decodificador, esa salidatomara el valor bajo. Si alguna de esas salidas toma el valor bajo, la salida del circuito debeser 1. Por lo tanto, debemos usar la funcion OR de las salidas 0, 1, 3 y 4. El decodificadorsuministra salidas activas bajas, utilizando la forma OR de la compuerta NAND puestoque tiene entradas activas bajas. La implementacion se muestra en la figura 5.11.

5.2 SUMADORES BINARIOS Y OTROS CIRCUITOS COMBINA-CIONALES

5.2.1. Sumadores Binarios

Los sumadores juegan un papel importante en los circuitos digitales, especialmente enlos computadores. Los sumadores usados en circuitos digitales son tıpicamente sumadoresbinarios. Los valores binarios de dıgitos multiples son sumados 1 bit cada vez, produciendocada posicion un dıgito de suma y un acarreo (Cout) hacia la siguiente posicion. El procesoes analogo al procedimiento que se usa en aritmetica para sumar decimales de variosdıgitos.

50 CAPITULO 5. APLICACIONES COMBINACIONALES

Figura 5.11: Implementacion de una expresion con un DEMUX.

Sumadores medios y sumadores completos

La tabla de la suma para dos dıgitos binarios se muestra en la tabla 5.5. Esta tablasenala tanto la suma como el acarreo producidos por la adicion de 2 bits.

A B Suma Acarreo0 0 0 00 1 1 01 0 1 01 1 0 1

Cuadro 5.5:

Notese que la suma es simplemente la funcion OR exclusivo y el acarreo es unicamentela funcion AND. Pero el sumador definido en la tabla 5.5 tiene un problema puesto que laposicion previa puede producir un acarreo; el sumador realmente necesita 3 entradas. Unsumador sin la entrada de acarreo se denomina sumador medio. Un sumador que considerala entrada de acarreo (Cin) se denomina sumador completo. En la tabla 5.6 se encuentrala tabla de verdad para el sumador completo.

Un circuito que implementa un sumador completo se disena facilmente con las tecnicascubiertas hasta ahora. En la figura 5.12 se muestran las ecuaciones reducidas para lassalidas de suma y acarreo y los mapas K utilizados para derivar las ecuaciones. En estosmapas, la entrada de acarreo se ha abreviado como C.

Un vistazo mas cercano a la tabla de verdad y a estas expresiones revela que la funcionsuma es verdadera cuando hay un numero impar de unos a la entrada y la funcion acarreo

5.2. SUMADORES BINARIOS Y OTROS CIRCUITOS COMBINACIONALES 51

Cin A B Suma Cout

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

Cuadro 5.6:

00

11

03

12

0

14

05

17

06

1

00 01 11 10@

@@C

AB

��

���

���

��

��

��

�� 0

0

01

13

02

0

04

15

17

16

1

00 01 11 10@

@@C

AB

���

��

��

��

Figura 5.12: Mapas K del sumador completo

de salida es verdadera cuando hay mayorıa de unos a la entrada.

Usando estas expresiones para la suma y el acarreo, el sumador completo se puedeimplementar con compuertas NAND e inversores como se muestra en la figura 5.13.

Sumadores de Dıgitos Multiples

Un sumador de dıgitos multiples se puede hacer usando varios sumadores completos.Por ejemplo, un circuito para sumar 2 valores de 4 bits se puede construir a partir decuatro sumadores completos como se muestra en la figura 5.14. Notese las conexiones delos acarreos en el sumador de 4 bits. La entrada de acarreo a cada sumador es el acarreode salida del sumador anterior.

Puesto que la salida de cada sumador depende del acarreo del sumador anterior, cadasumador debe “esperar” el acarreo del sumador anterior. Esta propagacion del acarreofrena el circuito sumador, especialmente si el numero de bits del sumador se aumenta.Para ilustrar el efecto de la propagacion del acarreo, calculemos el tiempo requerido paraejecutar una suma de varios bits. Para calcular el tiempo de la suma, debe determinarseel retardo asociado con cada sumador completo. Por ejemplo, supongamos que cada com-puerta mostrada en el circuito del sumador completo de la figura 5.14 tiene un retardo de10ns. Por lo tanto, la salida sera valida despues de 3 retardos de compuertas (inversor,NAND, NAND), o sea 30ns. La salida “acarreo” es valida despues de 2 retardos (NAND,NAND), o sea 20ns.

52 CAPITULO 5. APLICACIONES COMBINACIONALES

Figura 5.13: Circuito logico del sumador completo

Usando estas demoras, vemos que el acarreo de salida del bit 0 es valido despues de 20ns.El bit de acarreo de la salida del bit 1 es valido 20ns despues del bit 0, y ası sucesivamente.La salida del sumador de 4 bits no sera valida hasta tanto C3 como S3 sean validos. Porconsiguiente, el tiempo total necesario para el sumador de 4 bits sera:

Cin a C0 = 20nsC0 a C1 = 20nsC1 a C2 = 20nsC2 a S3 = 30nsTiempo de suma = 90ns

A medida que el numero de bits que se van a sumar aumenta, el efecto de la propagaciondel acarreo es aun mas notorio. Por ejemplo, para un sumador de 32 bits el tiempo de sumaserıa: 31 × 20ns + 30ns = 650ns. Como se puede ver, el tiempo de suma es proporcionalal numero de bits que se van a sumar.

5.3. ANTICIPACION DEL ACARREO (“CARRY LOOKAHEAD”) 53

Figura 5.14: Sumador de 4 bits

5.3 Anticipacion del Acarreo (“Carry Lookahead”)

El principal problema del circuito sumador de varios bits de la seccion anterior es que lasalida de cada sumador depende del acarreo de salida del sumador anterior. Si se pudieradeterminar los valores de acarreo sin tener que esperar la propagacion de los acarreos de lasetapas anteriores, el tiempo de suma serıa independiente del numero de bits del sumadory por lo tanto, se reducirıa.

Para lograr esto, notemos que un termino (sumador) producira acarreo bajo dos condi-ciones. Primera: si ambas entradas son 1, se generara un acarreo sin importar el acarreoque entre. Esto lo denominaremos “condicion generadora”. Segundo: si solo una de las en-tradas es 1, se producira acarreo si hubo acarreo de entrada, es decir, si la etapa anteriorprodujo acarreo. A esta situacion la denominaremos “condicion propagadora”, puesto queel acarreo de entrada sera propagado o transmitido a la salida. Estas condiciones para untermino “i” pueden representarse en algebra booleana como:

Gi=AiBi (Condicion generadora)Gi=AiBi + AiBi (Condicion propagadora)

En resumen, un termino producira acarreo si 1) cumple la condicion generadora (Gi)o (2) si cumple la condicion propagadora (Pi) y hubo acarreo de entrada. Esto se puederepresentar como:

Ci = Gi + (Pi)(Ci−1) (5.6)

Usando esta relacion, puede formarse una expresion para cada bit segun se ilustra acontinuacion para un sumador de 4 bits:

C0 = G0 + P0.Cin

C1 = G1 + P1.C0

= G1 + P1(G0 + P0.Cin)= G1 + P1.G0 + P1.P0.Cin

C2 = G2 + P2.C1

54 CAPITULO 5. APLICACIONES COMBINACIONALES

= G2 + P2(G1 + P1.G0 + P1.P0.Cin)= G2 + P2.G1 + P2.P1.G0 + P2.P1.P0.Cin

C3 = G3 + P3.C2

= G3 + P3(G2 + P2.G1 + P2.P1.G0 + P2.P1.P0.Cin)= G3 + P3.G2 + P3.P2.G1 + P3.P2.P1.G0 + P3.P2.P1.P0.Cin)

Examinando estas ecuaciones, vemos que cada producto trata de determinar si unacarreo puede venir de un termino anterior. Esto es posible solo si un termino anteriorgenero un acarreo y las etapas posteriores lo propagaron. Por ejemplo, miremos la ecuacionque define a C3. Para que la etapa 3 produzca un acarreo a partir de un acarreo producidopor la etapa 0, las etapas 1,2 y 3 deben haberlo propagado; de este resulta el terminoP3.P2.P1.G0.

Para determinar la efectividad del procedimiento de anticipacion del acarreo, necesita-mos determinar el tiempo necesario para calcular el acarreo con los terminos mostradosanteriormente. Para simplificar el diagrama logico notemos que la condicion de propa-gacion es simplemente la funcion OR EXCLUSIVO, que se puede escribir como:

Pi = AiBi + AiBi = AiBi + Ai Bi (5.7)

Usando esta equivalencia, podemos producir los terminos Gi y Pi segun se muestra enla figura 5.15

Figura 5.15: Generacion de Gi y Pi

Como puede verse, son 2 retardos de compuertas, es decir, 40 ns, para evaluar un termi-no de acarreo. Las compuertas asociadas con la generacion de la condicion de propagacion.Esto, conjuntamente con la naturaleza de dos niveles de las expresiones de acarreo, da co-mo resultado un total de 4 retardos de tiempos de suma para un sumador de 4 bits y paraun sumador de 32 bits se pueden calcular como sigue:

5.4. OTROS CIRCUITOS COMBINACIONALES IMPORTANTES 55

Tiempo de suma para un sumador de 4 bits:AiBi a Ci = 40nsCi a Si = 30ns

Tiempo de suma = 70ns

Tiempo de suma para un sumador de 32 bits:AiBi a Ci = 40nsCi a Si = 30ns

Tiempo de suma = 70ns

Como puede verse, el tiempo de suma es independiente del numero de bits cuando se usala tecnica de anticipacion del acarreo. Esto resulta de una mejora significativa en el tiempode suma, especialemente cuando el numero de bits del sumador crece. Desafortunadamentees bastante complicado implementar estas tecnicas en forma completa para un numerogrande de bits. Por ejemplo, evaluar la expresion para el bit de acarreo mas significativode un sumador de N bits, requiere una compuerta OR de N+1 entradas y N compuertasAND desde 2 entradas hasta NH entradas. Para un sumador de 32 bits, esto significa unacompuerta OR de 33 entradas y 32 compuertas AND, desde 2 hasta 33 entradas para elbit de acarreo mas significativo.

Debido a esta complejidad, la anticipacion completa del acarreo solo se hace de 4 a 8bits a la vez. Por ejemplo, consideremos un sumador de 32 bits compuesto de 4 sumadoresde 8 bits, cada uno con anticipacion de acarreo. Con esta disposicion, el acarreo debepropagarse entre los 4 sumadores pero el efecto de propagacion es menos dramatico quela propagacion sobre 32 bits. Este sumador se muestra en la figura 5.16.

Figura 5.16: Sumador de 32 bits usando sumadores de 8 bits

5.4 OTROS CIRCUITOS COMBINACIONALES IMPORTANTES

Existen otros circuitos combinacionales comunmente usados en circuitos digitales. Estoscircuitos se disenan facilmente con las mismas tecnicas que hemos estudiado hasta ahora.

5.4.1. Convertidores de Codigo

Los circuitos digitales representan la informacion “humana” por medio de alguna clasede codigo. Por ejemplo, BCD es un codigo binario que permite representar los valores

56 CAPITULO 5. APLICACIONES COMBINACIONALES

Entrada BCD Salida 2421A B C D F1 F2 F3 F4

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

Cuadro 5.7:

decimales desde el 0 hasta el 9. Ocasionalmente, se hace necesario convertir un codigo aotro. Por ejemplo, consideremos el diseno de un circuito que convierte de BCD a codigo2421. BCD se denomina tambien codigo 8421 puesto que las posiciones de los bits estanafectadas por un peso de 8, 4, 2, 1. De igual forma, el codigo 2421 indica que los pesosde cada posicion son 2, 4, 2, 1. A partir de estas definiciones, puede armarse la tabla deverdad que se muestra en la tabla 5.7. Este convertidor se puede implementar con lastecnicas estudiadas hasta ahora.

5.4.2. Comparadores

A menudo se necesita comparar dos valores binarios. Dados dos valores binarios, uncomparador produce una o varias salidas indicando igualdad, menor que, mayor que, yası sucesivamente. Cuando se disena un comparador, generalmente no es necesario derivarexpresiones para cada salida como funcion de las entradas solamente. Por ejemplo, si A > By A < B, se expresan como alguna funcion de las entradas, todas las otras relaciones sepueden expresar como funcion de las salidas. Por ejemplo, A es igual a B solamente si Ano es mayor que B y B no es mayor que A.

A = B ⇔ (A > B).(B > A) (5.8)

5.4.3. Decodificadores-Manejadores de Despliegues

Los circuitos digitales a menudo se “comunican” con el mundo externo por medio de de-spliegues LED de siete segmentos tales como los que se encuentran en la calculadora. Estosdespliegues constan de 7 LEDs individuales que se iluminan para formar diferentes dıgitos.Un decodificador-manejador de despliegues se utiliza para iluminar apropiadamente esossegmentos basados en un valor de entrada. Por ejemplo, un decodificador-manejador de

5.4. OTROS CIRCUITOS COMBINACIONALES IMPORTANTES 57

despliegue BCD tiene 4 entradas (los 4 bits del dıgito BCD) y siete salidas, una por cadasegmento.

Basado en el dıgito BCD de entrada, las salidas de siete segmentos se deben disponerapropiadamente para formar el dıgito en el despliegue. Existen 2 configuraciones basicaspara los despliegues de 7 segmentos: anodo comun y catodo comun.

En un despliegue de anodo comun, el anodo o lado positivo de cada LED es comun,como se muestra en la figura 5.17. Con estos despliegues, un LED individual se enciende sise conecta a tierra. Por lo tanto, un decodificador-manejador para un despliegue de anodocomun coloca su salida baja para encender el segmento. En un despliegue de catodo comun,el catodo o lado negativo de cada LED es comun, segun se muestra en la figura 5.18. Paraencender cada LED de los despliegues, debe conectarse el LED a un voltaje positivo. Porlo tanto, el manejador debe colocar su salida alta para encender un segmento.

Figura 5.17: Despliegue con Anodo Comun

Figura 5.18: Despliegue con Catodo Comun

.

58 CAPITULO 5. APLICACIONES COMBINACIONALES

Capıtulo 6

Introduccion a los PLD y a VHDL

Conceptos basicosPLD: Programmable Logic DevicePROMPALGALFPGAVHDLEntidadArquitecturaPuertoModo de un puertoSenalVariableConfiguracionDeclaracion del paqueteCuerpo del paqueteTipos de datosVectoresDescripcion funcionalDescripcion por flujo de datosDescripcion estructural

Saber HacerConocer las diferentes opciones de PLD.Reconocer la celda basica de un circuito programable.Conocer la estructura basica de un lenguaje de descripcion de hardware como lo es VHDL.Conocer los diferentes componentes del lenguaje.

59

60 CAPITULO 6. INTRODUCCION A LOS PLD Y A VHDL

6.1 Introduccion a los dispositivos programables.

6.1.1. Introduccion.

Los dispositivos logicos programables PLD, son una alternativa para el diseno de sis-temas digitales y prototipos de baja escala de integracion, esto se debe a la disponibilidaden el mercado y al soporte existente para las herramientas de desarrollo asistido por com-putador, CAD.

6.1.2. Dispositivos Logicos Programables, PLD.

Un dispositivo logico programable o PLD por sus siglas en ingles (Programmable LogicDevice), es un circuito integrado que contiene gran numero de compuertas, flip-flops yregistros internamente conectados.

Estas conexiones son de dos tipos: fijas y programables. Las conexiones fijas son aquellasque no varıan, mientras que las conexiones programables se pueden o no desconectar.Muchas de estas conexiones programables son tipo fusible, fusibles que son “quemados”durante la programacion, permitiendo de esta manera configurar nuestra aplicacion dentrode un PLD.

Algunas de las caracterısticas principales de los PLD pueden ser:

Capacidad de reprogramacion, pueden ser programables o reprogramables.

Tipo de tecnologıa, bien sea CMOS o TTL.

Tipo de salida, activa baja o alta o configurable.

Consumo de potencia.

Tiempo de retardos.

Niveles de tension alimentacion, 3 o 5 Voltios.

Clasificacion de los PLD.

Un PLD consta de arreglos de compuertas AND conectados a un arreglo de compuertasOR a traves de elementos programables, generalmente del tipo fusible. Un diagrama debloques de la estructura interna de un PLD se muestra en la figura 6.1.

Segun sean programables sus arreglos, los PLD se pueden clasificar en:

PROM, arreglo AND fijo, arreglo OR programable.

PLA, ambos arreglos programables.

6.1. INTRODUCCION A LOS DISPOSITIVOS PROGRAMABLES. 61

Figura 6.1: Estructura interna de un PLD

Figura 6.2: Estructura interna de una PROM

PAL, Arreglo AND programable y arreglo OR fijo.

GAL, Arreglo AND reprogramable y arreglo OR fijo, ademas de logica de salidaprogramable.

FPGA, son arreglos de compuertas programables en campo, esta formado por blo-ques logicos configurables.

PROM, Memorias de Solo Lectura. Son tambien conocidas como PLE (elementoslogicos programables), constan de un arreglo AND fijo, el cual decodifica las direcciones,2 entradas, conectado a un arreglo OR programable.

En la figura 6.2 se muestra una PROM de dos entradas, cuatro lıneas de producto ycuatro salidas.

PAL, Logica de Arreglos Programables. Este dispositivo cuenta con un arregloAND programable y un arreglo OR fijo, ademas tiene la posibilidad de realimentacionde la salida, algo que lo hace muy util para el caso en que se necesite conocer un esta-do intermedio de una funcion. Ademas la arquitectura PAL tiene a su salida un buffer(YES o NOT) en el cual se puede implementar logica de tercer estado, y tener puer-tos bidireccionales, de entrada/salida. La salida de este arreglo puede estar conectada unregistro (flip-flop), la cual se realimenta hacia el arreglo AND, este registro permite la

62 CAPITULO 6. INTRODUCCION A LOS PLD Y A VHDL

Figura 6.3: Estructura interna de una PAL en modo combinacional

Figura 6.4: Estructura interna de una PAL con registros.

implementacion de logica secuencial y maquinas de estado. En la figura 6.3 se muestra unPAL en su modo combinacional, mientras que en la figura 6.4 se muestra un PAL con lasalida conectada a un flip - flop tipo D.

GAL, Logica de Matriz Generica. En esta tecnologıa los fusibles de un PAL sonreemplazados por un bloque E2CMOS. Su logica de salida es programable y no se hablade una arreglo OR, sino de una OLMC, macro celda logica de salida. Esta permite eltrabajo en modo combinacional, buffer de tercer estado y modo registrado. Con el GALse pueden emular los PAL. En la figura 6.5 se muestra el detalle de una macro celda logicade salida.

La GAL puede configura en tres modos de operacion:

Sencillo o simple , en donde se trabaja logica combinacional sin salida de tercer estado.En la figura 6.6 se observa la macro celda en modo combinacional, como puedeobservarse, la salida queda definida como entrada o salida.

Complejo , en donde se trabaja logica combinacional con salida de tercer estado con-trolada, lo cual permite usar un pin como entrada y salida dentro de un mismo

6.1. INTRODUCCION A LOS DISPOSITIVOS PROGRAMABLES. 63

Figura 6.5: Macro celda de salida de un GAL.

Figura 6.6: Macro celda logica en modo combinacional.

64 CAPITULO 6. INTRODUCCION A LOS PLD Y A VHDL

Figura 6.7: Arquitectura de una macro celda de la familia MAX7000 de Altera.

diseno.

Registrado , el cual hace que cada macro celda de salida funcione en una configuracioncombinacional con salida de tercer estado o un modo sincronico con un flip - floptipo D sincronizado con una senal de reloj comun a todas las macro celdas.

Durante la programacion se elige el modo de trabajo de la GAL de acuerdo a la funciona realizar.

FPGA, Arreglo de Compuertas Programables en Campo. Una FPGA esta for-mada por bloques de arreglos logicos, LAB, y cada LAB esta conformado por 16 bloquesmodulares o macro celdas, como la mostrada en la figura 6.7.

Esta arquitectura permite alta densidad (20 000 compuertas), alta velocidad (70 MHz),retardos de 15 nano segundos y consumo maximo de 45 mA, en presentaciones de 44 a288 pines. Los LAB se conectan entre sı por medio de un PIA, arreglo de interconexionprogramable, el cual optimiza la relacion velocidad - consumo.

En la mayorıa de las arquitecturas PLD, cuando un pin de I/O es usado como entrada, lamacro celda asociada no puede ser usada para ejercer otras funciones, en esta arquitecturase elimina este problema por desacoplamiento de los pines de I/O. Lo que permite queestas macro celdas permanezcan aptas para ser usadas para la implementacion de logicainterna.

Ventajas de los PLD.

La conveniencia de la logica programable esta en la habilidad para realizar un productoque no se encuentre en el mercado.

Se pueden incluir otras ventajas como:

6.2. VHDL: SU ORGANIZACION Y ARQUITECTURA. 65

Facil obtencion de prototipos. Se pueden realizar modificaciones a un diseno sinmayores traumatismos. Estos disenos se pueden emplear como modulo, y el disenofinal puede ser la interconexion de varias partes.

Mayor confiabilidad. Menos integrados, menos conexiones, tarjetas mas sencillas.

Facil diseno. Gracias a la amplia disponibilidad de herramientas CAD, se puedeespecificar un diseno a alto nivel, realizar sıntesis logica y seleccion y adaptacion au-tomatica de un diseno a un dispositivo especıfico. Ademas simular y realizar pruebasy generar documentos.

Mayor rendimiento, con retardos de 15 nano segundos para PLD de tecnologıa CMOSy de 10 nano segundos para PLD de familia TTL.

Y menores costos y tiempo de desarrollo de cualquier aplicacion.

6.2 VHDL: Su organizacion y arquitectura.

6.2.1. Introduccion.

Tal como lo indican sus siglas, VHDL (Hardware Description Language) es un lenguajeorientado a la descripcion o modelado de sistemas digitales; es decir, se trata de un lenguajemediante el cual se puede describir, analizar y evaluar el comportamiento de un sistemaelectronico digital.

VHDL es un lenguaje poderoso que permite la integracion de sistemas digitales sencil-los, elaborados o ambos en un dispositivo logico programable, sea de baja capacidad deintegracion como un GAL, o de mayor capacidad como los CPLD y FPGA.

6.2.2. Unidades basicas de diseno.

La estructura general de un programa en VHDL esta formada por modulos o unidadesde diseno, cada uno de ellos compuesto por un conjunto de declaraciones e instruccionesque definen, describen, estructuran, analizan y evaluan el comportamiento de un sistemadigital.

Existen cinco tipos de unidades de diseno en VHDL; declaracion de entidades (enti-ty declaration), arquitectura (architecture), configuracion (configuration), declaracion delpaquete (package declaration) y el cuerpo del paquete (package body). De estas cincounidades, son obligatorias al menos una entidad y una arquitectura. Las declaracionesde entidad, paquete y configuracion se consideran unidades de diseno primarias, mientrasque la arquitectura y el cuerpo del paquete son unidades de diseno secundarias porquedependen de una entidad primaria que se analiza antes que ellas.

66 CAPITULO 6. INTRODUCCION A LOS PLD Y A VHDL

(a) (b)

(c)

Figura 6.8: 6.8(a) Descripcion a nivel de compuerta. 6.8(b) Sımbolo funcional de la entidad.6.8(c) Diagrama a bloques relativo de la entidad.

6.2.3. Entidad

Una entidad (entity) es el bloque elemental de diseno en VHDL. Las entidades sontodos los elementos electronicos (sumadores, contadores, compuertas, flip-flops, memorias,multiplexores, etc.) que forman de manera individual o en conjunto un sistema digital. Laentidad puede representarse de muy diversas maneras; por ejemplo, la figura ?? muestrala arquitectura de un sumador completo a nivel de compuertas; ahora bien, esta entidadse puede representar a nivel de sistema indicando tan solo las entradas (Cin, A y B) ysalidas (SUMA y Cout) del circuito: figura ??. De igual forma, la integracion de variossubsistemas (medio sumador) puede representarse mediante una entidad, figura ??. Lossubsistemas pueden conectarse internamente entre sı; pero la entidad sigue identificandocon claridad sus entradas y salidas generales.

6.2. VHDL: SU ORGANIZACION Y ARQUITECTURA. 67

Figura 6.9: Comparador de igualdad.

Puertos de entrada y salida.

Cada una de las senales de entrada y salida en una entidad son referidas como puertos,los cuales son similares a una terminal (pin) de un sımbolo esquematico. Todos los puertosque son declarados deben tener un nombre, un modo y un tipo de dato. El nombre seutiliza para referenciar al puerto; el modo permite definir la direccion que tomara lainformacion, es decir, si es de entrada o de salida, y el tipo define que clase de informacion setrasmitira por el puerto. Por ejemplo, respecto a los puertos de la entidad que representana un comparador de igualdad (figura 6.9), las variables a y b denotan los puertos deentrada y la variable c se refiere al puerto de salida.

Modos

Como ya se menciono, el modo permite definir la direccion en la cual el dato es trans-ferido a traves de un puerto. El modo puede tener uno de cuatro valores: in (entrada), out(salida), inout (entrada/salida) y buffer.

Modo in. Se refiere a las senales de entrada a la entidad. Este solo es unidireccional ynada mas permite el flujo de datos hacia dentro de la entidad.

Modo out. Indica las senales de salida de la entidad.

Modo inout. Permite declarar un puerto de forma bidireccional, es decir, de entrada/sal-ida; ademas permite la retroalimentacion de senales hacia dentro o hacia afuera dela entidad.

Modo buffer. Permite hacer retroalimentaciones internas dentro de la entidad, pero adiferencia del modo inout, el puerto declarado se comporta como una terminal desalida.

Tipos de datos

Los tipos se refieren a las diversas clases de valores (datos) que el disenador establecepara los puertos de entrada y salida dentro de una entidad; se asignan de acuerdo con las

68 CAPITULO 6. INTRODUCCION A LOS PLD Y A VHDL

Figura 6.10: Modos y el curso de sus senales.

caracterısticas de un diseno en particular. Algunos de los tipos mas utilizados en VHDLson:

Bit, el cual tiene valores de 0 y 1.

Boolean (booleano) que define valores de verdadero y falso en una expresion.

Bit vector (vector de bits) que representa un conjunto de bits para cada variable deentrada o salida.

Integer (entero) que representa un numero entero.

Los anteriores son solo algunos de los tipos que maneja VHDL.

6.2.4. Declaracion de entidades

Como se menciono en la seccion ?? (Unidades basicas de diseno), los modulos ele-mentales en el desarrollo de un programa dentro del lenguaje de descripcion de hardware(VHDL) son la entidad y la arquitectura.

La declaracion de una entidad consiste en la descripcion de las entradas y salidas deun circuito de diseno identificado como entity (entidad); es decir, la declaracion senala lasterminales o pines de entrada y salida de la entidad de diseno.

Por ejemplo, la forma de declarar la entidad correspondiente al circuito sumador de lafigura ?? se muestra a continuacion:

6.2. VHDL: SU ORGANIZACION Y ARQUITECTURA. 69

1 -- Declaracion de la entidad de un circuito sumador

2 entity sumador is3 port (A, B, Cin : in bit;4 SUMA , Cout : out bit);5 end sumador;6

Listado 6.1: Declaracion de la entidad de la figura ??

Los numeros de las lıneas (1, 2, 3, 4, 5) no son parte del codigo; se usan como referenciapara explicar alguna seccion en particular. Las palabras en negrilla estan reservadas porel lenguaje de programacion VHDL; esto es, tiene un significado especial para el programa;el disenador asigna los otros terminos.

La lınea 1 inicia con dos guiones (–), los cuales indican que el texto que esta a la derechaes un comentario cuyo objetivo es documentar el programa; el compilador ignora todos loscomentario. En la lınea 2 se inicia la declaracion de la entidad con la palabra reservadaentity, seguida del identificador o nombre de la entidad (sumador) y la palabra reservadais. Los puertos de entrada y salida (port) se declaran en las lıneas 3 y 4, respectivamente- en este caso los puertos de entrada A, B y Cin -, mientras que SUMA y Cout representanlos puertos de salida. El tipo de dato utilizado para todos los puertos es bit, lo cual indicaque solo pueden manejarse valores de ’0’y ’1’logicos. Por ultimo, en la lınea 5 termina ladeclaracion de entidad con la palabra reservada end, seguida del nombre de la entidad(sumador).

Identificadores??????Los identificadores son simplemente los nombres que se usan para referir variables,

senales, procesos, etc. Pueden ser numeros, letras del alfabeto y guiones bajos ( ) queseparen caracteres y no tienen una restriccion en cuanto a su longitud. Todos los identifi-cadores deben seguir las reglas que aparecen en la tabla 6.1.

VHDL tiene una lista de palabras reservadas que no son validos como identificadores(vea apendice A).

70 CAPITULO 6. INTRODUCCION A LOS PLD Y A VHDL

Regla Incorrecto CorrectoEl primer caracter siempre es una letra mayuscula o minuscula. 4sumas Suma4El segundo caracter no puede ser un guion bajo. S 4bits S4 bitsDos guiones juntos no son permitidos. Resta 4 Resta 4Un identificador no puede utilizar sımbolos. Clear#8 Clear 8

Cuadro 6.1: Especificaciones para la escritura de identificadores.

Figura 6.11: Entidad representada por vectores.

6.2.5. Diseno de entidades mediante vectores

La entidad sumador realizada en el circuito del listado anterior, usa bits individuales,los cuales solo pueden representar dos valores logicos (0 o 1). De manera general, en lapractica se utilizan conjuntos (palabras) de varios bits; en VHDL las palabras binarias seconocen como vectores de bits, de la misma manera como los arreglos de los lenguajesde programacion convencionales. Como ejemplo considerense los vectores de 4 bits que semuestran a continuacion:

vector A = (A3, A2, A1, A0) (6.1)vector B = (B3, B2, B1, B0) (6.2)

vector SUMA = (S3, S2, S1, S0) (6.3)

En la figura 6.11 se observa la entidad del sumador analizado antes, solo que ahora lasentradas A, B y la salida SUMA incorporan vectores de 4 bits en sus puertos. Observesecomo la entrada Cin y la salida Cout son de un bit.

Para describir en VHDL una configuracion que utilice vectores se utiliza la sentenciabit vector, mediante la cual se especifican los componentes de cada uno de los vectoresutilizados. La parte del codigo que se usa para declarar un vector dentro de los puertos esel siguiente:

port ( vector A, vector B : in bit vector (3 downto 0);vector SUMA : out bit vector (3 downto 0));

6.2. VHDL: SU ORGANIZACION Y ARQUITECTURA. 71

La declaracion define los vectores (A, B y SUMA) con cuatro componentes distribuidosen orden descendente por medio del comando:

3 downto 0 (3 hasta 0)

Los cuales se agrupan de la siguiente manera.

vector A(3) = A3

vector A(2) = A2

vector A(1) = A1

vector A(0) = A0

vector B(3) = B3

vector B(2) = B2

vector B(1) = B1

vector B(0) = B0

vector SUMA(3) = S3

vector SUMA(2) = S2

vector SUMA(1) = S1

vector SUMA(0) = S0

Una vez que se ha establecido el orden en que apareceran los bits enunciados en cadavector, no se puede modificar, a menos que se utilice el comando to:

0 to 3 (0 hasta 3)

que indica el orden de aparicion en sentido ascendente.

Declaracion de entidades mediante librerıas y paquetes.

Una parte importante en la programacion con VHDL radica en el uso de librerıas ypaquetes que permiten declarar y almacenar estructuras logicas, seccionadas o completasque facilitan el diseno.

Una librerıa o biblioteca es un lugar al que se tiene acceso para utilizar las unidadesde diseno predeterminadas por el fabricante de la herramienta y su funcion es agilizar eldiseno. En VHDL se encuentran definidas dos librerıas llamadas ieee y work.

En una librerıa tambien se permite almacenar el resultado de la compilacion de undiseno, con el fin de utilizar en uno o varios programas. La librerıa work es el lugarestablecido donde se almacenan los programas que el usuario va generando. Esta librerıase encuentra siempre presente en la compilacion de un diseno y los disenos se guardan enella mientras no se especifique otra.

Un paquete es una unidad de diseno que permite desarrollar un programa en VHDL deuna manera agil, debido a que contiene algoritmos preestablecidos (sumadores, restadores,contadores, etc.) que ya tienen optimizado su comportamiento. Por esta razon, el disenadorno necesita definir paso a paso una nueva unidad de diseno si ya se encuentra almacenadaen algun paquete - en cuyo caso basta con llamarla y especificarla en el programa -. Porlo tanto, un paquete no es mas que una unidad de diseno formada por declaraciones,programas, componentes y subprogramas, que incluyen los diversos tipos de datos (bit,

72 CAPITULO 6. INTRODUCCION A LOS PLD Y A VHDL

booleano, std logic), empleados en la programacion en VHDL y que suelen formar partede las herramientas en software.

Por ultimo, cuando en el diseno se utiliza algun paquete es necesario llamar a la librerıaque lo contiene. Para esto se utiliza la siguiente declaracion:

library ieee;

Lo anterior permite el uso de todos los componentes incluidos en la librerıa ieee. En elcaso de la librerıa de trabajo (work), su uso no requiere la declaracion library, dado quela carpeta work siempre esta presente al desarrollar un diseno.

Paquetes

El paquete std logic 1164 (estandar logico 1164) que se encuentra en la librerıaieee contiene todos los tipos de datos que suelen emplearse en VHDL (std logic vector,std logic, entre otros).

El acceso a la informacion contenida en un paquete se hace por medio de la sentenciause, seguida del nombre de la librerıa y del paquete, respectivamente:

use nombre liberıa.nombre paquete.all;

por ejemplo:

use ieee.std logic 1164.all;

En este caso ieee es la librerıa, std logic 1164 es el paquete y la palabra reservada allindica que se pueden usar todos los componentes almacenados en el paquete.

El paquete numeric std define funciones para realizar operaciones entre diferentestipos de datos (sobrecargados); ademas, los tipos pueden representarse con signo o sineste.

El paquete numeric bit define tipos de datos binarios con signo o sin este.

El paquete std arith define funciones y operadores aritmeticos, como igual (=), mayorque ( >), menor que (<), entre otros.

6.2.6. Arquitecturas

Una arquitectura (architecture) se define como la estructura que describe el funcionamien-to de una entidad, de tal forma que permita el desarrollo de los procedimientos que se

6.2. VHDL: SU ORGANIZACION Y ARQUITECTURA. 73

Figura 6.12: Descripcion funcional de un comparador de igualdad de dos bits.

llevaran a cabo con el fin de que la entidad cumpla las condiciones de funcionamientodeseadas.

La definicion de una arquitectura se puede realizar utilizando tres enfoques, a saber:

Enfoque funcional.

Enfoque por flujo de datos.

Enfoque estructural.

Descripcion funcional

Es en la figura 6.11 se describe funcionalmente el circuito comparador. Se trata deuna descripcion funcional porque expone la forma en que trabaja el sistema; es decir, lasdescripciones consideran la relacion que hay entre las entradas y las salidas del circuito,sin importar como este organizado en su interior. Para este caso:

El codigo que representa el circuito de la figura 6.2.6 se muestra en el siguiente listado:

1 -- Ejemplo de una descripcion funcional

2 library ieee; use ieee.std_logic_1164.all;34 entity comparador is5 port ( a, b : in bit_vector ( 1 downto 0);6 c : in bit);7 end comparador;89 architecture funcional of comparador is

10 begin11 compara: process (a, b)12 begin13 if a = b then14 c <= ’1’;15 else

74 CAPITULO 6. INTRODUCCION A LOS PLD Y A VHDL

16 c <= ’0’;17 end if;18 end process compara;19 end funcional;20

Listado 6.2: Arquitectura funcional de un comparador de igualdad de 2 bits.

Notese como la declaracion de la entidad (entity) se describe en las lıneas de la 1 a la7; la arquitectura se incluye de la lınea 8 a la 18, Las lıneas 10, 11 y 17 corresponden almarco del proceso (process) caracterıstico de una descripcion funcional.

Las lıneas 12 a la 17 detallan el algoritmo elegido para describir el proceso, en este casouna estructura if∼then∼else

Como se puede observar, la declaracion funcional se basa principalmente en el uso deprocesos y de declaraciones secuenciales, de forma analoga a los algoritmos clasicos de loslenguajes de programacion convencionales.

Descripcion por flujo de datos

La descripcion por flujo de datos indica la forma en que los datos se transforman alpasar por el circuito. Este tipo de descripciones permite definir el flujo que tomaran losdatos entre modulos encargados de realizar operaciones. En este tipo de descripcion sepueden utilizar dos formatos mediante instrucciones when∼ else (cuando∼si no) o pormedio de ecuaciones booleanas.

1. Descripcion por flujo de datos mediante when∼else

A continuacion se muestra el codigo del comparador de igualdad de dos bits descritoantes (figura 6.2.6). Notese que la diferencia entre los listados radica en la eliminaciondel proceso y en la descripcion sin declaraciones secuenciales (if∼then∼else).

En VHDL se manejan dos tipos de declaraciones: secuenciales y concurrentes. Unadeclaracion secuencial de la forma if then else se utilizo en el listado 6.2 dentro delproceso, donde su ejecucion debe seguir un orden para evitar la perdida de la logicadescrita. En cambio, en una declaracion concurrente esto no es necesario, ya que noimporta el orden en que se ejecutan. Tal es el caso del listado 6.3.

1 -- Ejemplo de declaracion de la entidad de un comparador

2 library ieee; use ieee.std_logic.all;34 entity comp is

6.2. VHDL: SU ORGANIZACION Y ARQUITECTURA. 75

Figura 6.13: a) Entidad del comparador de dos bits. b) Comparador de dos bits realizadocon compuertas.

5 port (a, b: in bit_vector (1 downto 0);6 c: out bit );7 end comp89 architecture f_datos of comp is

10 begin11 c <= ’1’ when (a = b) else ’0’12 end f_datos13

Listado 6.3: Arquitectura por flujo de datos.

2. Descripcion por flujo de datos mediante ecuaciones booleanas

Otra forma de describir el circuito comparador de dos bits es mediante la obtencionde sus ecuaciones booleanas figura 6.13. En el listado 6.4 se observa este desarrollo.

El interior del circuito comparador de la figura ?? a puede representarse por medio decompuertas basicas [figura ??] y este circuito puede describirse mediante la obtencionde sus ecuaciones booleanas.

1 -- Ejemplo de declaracion de la entidad de un comparador

2 library ieee; use ieee.std_logic_1164.all;

76 CAPITULO 6. INTRODUCCION A LOS PLD Y A VHDL

Figura 6.14: Representacion esquematica de un comparador de 2 bits.

34 entity comparador is5 port ( a, b : in bit_vector (1 downto 0);6 c : out bit);7 end comparador;89 architecture booleana of comparador is

10 begin11 c <= (a(1) xnor b(1) and a(0) xnor b(0));12 end booleana;13

Listado 6.4: Arquitectura de forma de flujo de datos construido por medio deecuaciones boolenas.

La forma de flujo de datos en cualquiera de sus representaciones describe el caminoque los datos siguen al ser transferidos de las operaciones efectuadas entre las en-tradas a y b a la senal de salida c.

Descripcion estructural

Como se nombre indica, una descripcion estructural basa su comportamiento en mod-elos logicos establecidos (compuertas, sumadores, contadores, etc.). Segun veremos masadelante, el usuario puede disenar estas estructuras y guardarlas para su uso posterior otomarlas de los paquetes contenidos en las librerıas de diseno del software que es este uti-lizando.

En la figura 6.14 se encuentra un esquema del circuito comparador de igualdad de 2bits, el cual esta formado por compuertas nor-exclusivas y una compuerta AND.

En nuestro caso, cada compuerta (modelo logico) se encuentra dentro del paquetegatespkg, del cual se toman para estructurar el diseno. A su vez, este tipo de arquitecturasestandares se conocen como componentes, que al interconectarse por medio de senales

6.2. VHDL: SU ORGANIZACION Y ARQUITECTURA. 77

internas, (x0, x1) permiten proponer una solucion. En VHDL esta conectividad se conocecomo netlist1 o listado de componentes.

Para iniciar la programacion de una entidad de manera estructural, es necesario la de-scomposicion logica del diseno en pequenos submodulos (jerarquizar), los cuales permitenanalizar de manera practica el circuito, ya que la funcion de entrada/salida es conocida.En nuestro ejemplo se conoce la funcion de salida de las dos compuertas xnor, por lo queal unirlas a la compuerta and, la salida c es el resultado de la operacion and efectuada enel interior a traves de las senales x0 y x1 (figura 6.14).

Es importante resaltar que una jerarquıa en VHDL se refiere al procedimiento de dividiren bloques y no a que un bloque tenga mayor jerarquıa (peso) que otro. Esta forma dedividir el problema hace de la descripcion estructural una forma sencilla de programar.En el contexto del diseno logico esto es observable cuando se analiza por separado algunaseccion de un sistema integral.

En el listado 6.5 se muestra el codigo del programa que representa al esquema de lafigura 6.14.

1 library ieee; use ieee.std_logic_1164.all;23 entity comparador is port (4 a, b : in bit_vector (0 to 1):5 c : out bit);6 end comparador;78 use work.compueta.all;9

10 architecture estructural of compuerta is11 signal x : bit_vector (0 to 1);12 begin13 U0 : xnor2 port map (a(0), b(0), x(0));14 U1 : xnor2 port map (a(1), b(1), x(1));15 U2 : and2 port map (x(0), x(1), c);16 end estructural;17

Listado 6.5: Descripcion estructural de un comparador de igualdad de 2 bits.

En el codigo se puede ver que en la entidad nada mas se describen las entradas y salidadel circuito (a, b y c), segun se ha venido haciendo (lıneas 3 a la 6). Los componentes xnory and no se declaran debido a que se encuentran en el paquete de compuertas (gatespkg),el cual a su vez esta dentro de la librerıa de trabajo (work), lınea 7.

1Un netlist se refiere a la forma como se encuentran conectados los componentes dentro de una estructuray las senales que propician esta interconexion.

78 CAPITULO 6. INTRODUCCION A LOS PLD Y A VHDL

En la lınea 8 se inicia la declaracion de la arquitectura estructural. El algoritmo prop-uesto (lıneas 11 a 13) describe la estructura de la siguiente forma: cada compuerta semaneja como un bloque logico independiente (componente) del diseno original, al cual sele asigna una variable temporal (U0, U1 y U2); la salida de cada uno de estos bloquesse maneja como una senal lınea 9, signal x (x0 y x1), las cuales se declaran dentro de laarquitectura y no en la entidad, debido a que no representan a una terminal (pin) y solose utilizan para conectar bloques de manera interna a la entidad.

Por ultimo, podemos observar que la compuerta and recibe las dos senales provenientesde x (x0 y x1), ejecuta la operacion y asigna el resultado a la salida c del circuito.

Comparacion entre los estilos de diseno

El estilo de diseno utilizado en la programacion depende del disenador y de la com-plejidad del proyecto. Por ejemplo, un diseno puede describirse por medio de ecuacionesbooleanas, pero si es muy extenso quiza sea mas apropiado emplear estructuras jerarquicaspara dividirlo; ahora bien, si se requiere disenar un sistema cuyo funcionamiento dependasolo de sus entradas y salidas, es conveniente utilizar la descripcion funcional, la cual pre-senta la ventaja de requerir menos instrucciones y el disenador no necesita un conocimientoprevio de cada componente del circuito.

6.2.7. Resumen de VHDL

Generalidades

Este lenguaje fue desarrollado inicialmente por el Departamento de Defensa de losEE.UU., siendo posteriormente estandarizado por IEEE en 1987 y en 1993.

Las sentencias del lenguaje se pueden clasificar como sigue:

Sentencias declarativas: permiten declarar tipos de datos, variables, senales, etc.

Sentencias ejecutivas, las cuales clasificamos a su vez ası:

• Sentencias de asignacion: asignan valor a variables o senales

• Sentencias de control de flujo: lazos de repeticion, condicionales, etc.

Las sentencias ejecutivas tambien se pueden clasificar en:

• Concurrentes: no importa el orden de ejecucion

• Secuenciales: es importante el orden de ejecucion, tal como en los lenguajes deprogramacion convencionales.

Se pueden aplicar tres estilos diferentes para desarrollar un sistema:

6.2. VHDL: SU ORGANIZACION Y ARQUITECTURA. 79

• Estructural: se definen los elementos que hacen parte del sistema y la formacomo se conectan.

• Funcional: el comportamiento del sistema se describe mediante un algoritmo.

• Flujo de datos: enfoque mixto de los dos anteriores.

Elementos del lenguaje

En cada sentencia del lenguaje, se utilizan elementos que pueden ser:

Identificadores: nombre de un elemento tal como circuito, senal, variable, etc.

Palabras reservadas propias del lenguaje, entre las cuales podemos citar las sigu-ientes: architecture, begin, bus, end, entity, if, and, or, nand, port, register.

Literales o constantes, que pueden ser numericas, caracter, cadena de caracteres,

cadena de bits. Por ejemplo: 345, 2E5,?????A’, “Digitales”, X“FF”, b“101000”

Igualmente, se utilizan separadores que van entre los elementos del lenguaje, tales comoespacios, tabuladores, finales de lınea.

Finalmente, se pueden incluir comentarios, los cuales empiezan por dos guiones consec-utivos y terminan con un fin de lınea.

Variables y tipos de datos

Los objetos que se pueden manipular en VHDL son:

Variables , que se declaran como:

Variable identificador: subtipo [:=expresion]Por ejemplo: variable contador: positive:= 100;

Constantes , que se declaran como:

Constant identificador: subtipo [:= expresion]

Senales , las cuales permiten el modelado de circuitos. Son similares a las variables, perose diferencian en la forma en que se actualiza el valor. Una variable lo hace al ejecutarla sentencia correspondiente, mientras que no ocurre lo mismo con las senales. Sedefinen ası:

Signal identificador: subtipo [tipo senal] [:= expresion]En donde tipo senal puede ser register o bus.Por ejemplo: signal OPERADOR: bit vector (8 downto 0);

80 CAPITULO 6. INTRODUCCION A LOS PLD Y A VHDL

Los tipos de datos definidos en el paquete STANDARD son los siguientes:

BOOLEAN, que permite los valores FALSE y TRUE.

BIT, que permite los valores ’0’y ’1’

CHARACTER, que permite los valores ASCII estandar

INTEGER, con rango correspondiente a 16 bits

REAL, tal como los lenguajes convencionales

TIME

STRING, como arreglo de caracteres

BIT VECTOR, como arreglo de bits

Entidad y arquitectura

Los dos bloques basicos de VHDL son Entidad (entity), la cual define la interfaz delsistema, y Arquitectura (architecture), en donde se define el comportamiento o diseno delcircuito.

El bloque entidad describe el modelo de entradas y salidas del sistema, o del elementodel sistema.

El bloque arquitectura describe el comportamiento del sistema o elemento. Convieneanotar que una entidad puede tener varias arquitecturas. Una combinacion particularentidad-arquitectura se puede declarar como componente.

Sentencias concurrentes y secuenciales

Las sentencias secuenciales son aquellas que se ejecutan una despues de la otra, dela misma manera que en cualquier lenguaje de programacion convencional. Dado que enlos sistemas electronicos aparecen actividades que no son de naturaleza secuencial sinoparalela o concurrente, VHDL contempla el mecanismo de los procesos (process), loscuales se ejecutan todos en forma paralela. Cada proceso se describe mediante un bloquede sentencias, las cuales se ejecutan en forma secuencial.

Estilos de descripcion

La descripcion de un sistema digital puede hacerse empleando uno de los siguientesestilos, o tambien combinaciones de ellos:

6.2. VHDL: SU ORGANIZACION Y ARQUITECTURA. 81

Enfoque estructural: la descripcion se realiza detallando cada uno de los componentesdel sistema y sus interconexiones.

Enfoque de trayectorias de datos: la descripcion se realiza en terminos de las trans-formaciones que sufren los datos al pasar por el sistema. Se utilizan principalmenteecuaciones logicas.

Enfoque algorıtmico: La descripcion del sistema se hace detallando el algoritmo quedesarrolla.

Unidades, paquetes y bibliotecas

VHDL permite que se desarrollen los disenos de manera jerarquica. Las bibliotecaspermiten catalogar elementos que se van a utilizar en los disenos, no siendo necesario cadavez volverlos a definir.

Las unidades definidas por VHDL son de dos tipos:

Primarias, de naturaleza declarativa, y son:

• Entidad (entity): especifica la interfaz de un elemento o sistema.

• Paquete (package): formado por un conjunto de declaraciones de elementos,funciones, subprogramas, orientadas a que el usuario las pueda utilizar pero sinsuministrar los detalles de implementacion de los mismos.

• Configuracion (configuration): permite asociar a cada componente una enti-dad.

Secundarias, de naturaleza ejecutiva, y son:

• Arquitectura (architecture): describe la implementacion de una entidad.

• Cuerpo de paquete (package body): describe la implementacion de los com-ponentes de un paquete.

Los componentes, que son asociaciones entity-arquitecture, se suelen agrupar en paque-tes, los cuales se reunen como bibliotecas.

82 CAPITULO 6. INTRODUCCION A LOS PLD Y A VHDL

Capıtulo 7

Circuitos Combinacionales enVHDL

Conceptos basicos

Variables logicas o binarias

Saber HacerReconocer los sımbolos de las operaciones logicas.Manipular ecuaciones logicas usando conceptos de algebra booleana.

83

84 CAPITULO 7. CIRCUITOS COMBINACIONALES EN VHDL

Figura 7.1: Sımbolo logico del 74x138.

7.1 Decodificador 3 a 8

METODO CONVENCIONAL

Un decodificador es un circuito logico que detecta la presencia de una determinadacombinacion de bits (codigo) en sus entradas y senala la presencia de este codigomediante un cierto nivel de salida. En su forma mas general, un decodificador tienen lıneas de entrada y 2n lıneas de salida.

El 74x138 es un decodificador 3 a 8. Su sımbolo logico, tabla de verdad y estructurainterna se muestran a continuacion:

Las entradas de seleccion son A, B y C, las salidas son Y0-Y7, activas bajas. Laslıneas G1, G2A y G2B se emplean como habilitacion.

DISENO CON VHDL

El siguiente es el programa en VHDL para el decodificador 3 a 8:

1 library IEEE; use IEEE.std_logic_1164.all;23 entity V74x138 is4 port ( G1, G2A , G2B: in std_logic;5 A: in std_logic_vector (2 downto 0);6 Y: out std_logic_vector (0 to 7) );7 end V74x138;89 architecture V74x138_a of V74x138 is

10 signal Y_i: std_logic_vector (0 to 7);11 begin

7.1. DECODIFICADOR 3 A 8 85

Entradas dehabilitacion

Entradas deseleccion

Salidas

G1 G2A G2B A B C Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7

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

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

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

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

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

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

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

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

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

X 1 X 1 1 1 1 1 1 1 1 1 1 1

X X 1 1 1 1 1 1 1 1 1 1 1 1

Cuadro 7.1: Tabla de verdad del 74x138

Figura 7.2: Estructura interna del 74x138.

86 CAPITULO 7. CIRCUITOS COMBINACIONALES EN VHDL

Figura 7.3: Sımbolo logico del 7449.

12 with A select Y_i <=13 "01111111" when "000",14 "10111111" when "001",15 "11011111" when "010",16 "11101111" when "011",17 "11110111" when "100",18 "11111011" when "101",19 "11111101" when "110",20 "11111110" when "111",21 "11111111" when others;22 Y <= Y_i when (G1 and not G2A and not G2B) = ’1’ else "

11111111";23 end V74x138_a;24

Listado 7.1: Decodificador 3 a 8

Todas las variables logicas del programa se definen del tipo std logic. Esto per-mite especificar su valor por medio de cadenas de caracteres. Las entradas de selec-cion (A2downto0) y las salidas activas bajas (Y 0to7) se definen como vectores. Ladeclaracion select enumera los 8 casos de decodificacion y asigna el valor adecuadoa la variable intermedia Y i. Este valor se asigna a la salida si todas las entradas dehabilitacion son correctas.

7.2 Decodificador BCD a 7-Segmentos (7449)

METODO CONVENCIONAL

7.2. DECODIFICADOR BCD A 7-SEGMENTOS (7449) 87

Este decodificador tiene 5 entradas, las entradas A, B, C, D corresponden al datoen BCD y la entrada BI es una entrada de blanqueo. La siguiente tabla de verdadmuestra la funcion para cada segmento del decodificador.

DecimalEntradas Salidas

D C B A BI A B C D E F G

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

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

2 0 0 1 0 0 1 1 0 1 1 0 1

3 0 0 1 1 0 1 1 1 1 0 0 1

4 0 1 0 0 0 0 1 1 0 0 1 1

5 0 1 0 1 0 1 0 1 1 0 1 1

6 0 1 1 0 0 0 0 1 1 1 1 1

7 0 1 1 1 0 1 1 1 0 0 0 0

8 0 0 0 0 0 1 1 1 1 1 1 1

9 0 0 0 1 0 1 1 1 1 0 0 1

10 1 0 1 0 0 0 0 0 1 1 0 1

11 1 0 1 1 0 0 0 1 1 0 0 1

12 1 1 0 0 0 0 1 0 0 0 1 1

13 1 1 0 1 0 1 0 0 1 0 1 1

14 1 1 1 0 0 0 0 0 1 1 1 1

15 1 1 1 1 0 0 0 0 0 0 0 0

BI X X X X 1 0 0 0 0 0 0 0

Cuadro 7.2: Tabla de verdad del 7449

Para implementar la tabla con compuertas se utilizo la herramienta CircuitMaker,en la cual se necesito de:

• 7 compuertas AND de 2 entradas

• 9 compuertas AND de 3 entradas.

• 1 compuerta AND de 4 entradas

• 4 compuertas NOR(DM) de 3 entradas.

• 3 compuertas NOR(DM) de 2 entradas.

• 4 compuertas NAND de 2 entradas.

• 4 inversores.

88 CAPITULO 7. CIRCUITOS COMBINACIONALES EN VHDL

Figura 7.4: Estructura interna del 7449.

DISENO CON VHDL

A continuacion se muestran los programas que definen el decodificador en VHDL,el primero es el decodificador de BCD a 7-segmentos, tal cual se ha descrito anteri-ormente. El segundo programa es una pequena modificacion para que visualice loscodigos hexadecimales.

1 library IEEE; use IEEE.std_logic_1164.all;23 entity V74x49 is4 port ( BI: in std_logic;5 A: in std_logic_vector (3 downto 0);6 Y: out std_logic_vector (0 to 6) );7 end V74x49;89 architecture V74x49_B of V74x49 is

10 signal Yi: std_logic_vector (0 to 6);11 begin12 with A select Yi <=13 -- ABCDEFG

14 "1111110" when "0000",15 "0110000" when "0001",16 "1101101" when "0010",17 "1111001" when "0011",

7.2. DECODIFICADOR BCD A 7-SEGMENTOS (7449) 89

18 "0110011" when "0100",19 "1011011" when "0101",20 "0011111" when "0110",21 "1110000" when "0111",22 "1111111" when "1000",23 "1110011" when "1001",24 "0001101" when "1010",25 "0011001" when "1011",26 "0100011" when "1100",27 "1001011" when "1101",28 "0001111" when "1110",29 "0000000" when "1111",30 "0000000" when others;3132 Y <= NOT Yi when (NOT BI) = ’1’ else "0000000"; end V74x49_B

;33

Listado 7.2: Decodificador BCD A 7-Segmentos

1 library IEEE; use IEEE.std_logic_1164.all;23 entity HEX_TO_7SEG is4 port ( BI: in std_logic;5 A: in std_logic_vector (3 downto 0);6 Y: out std_logic_vector (0 to 6) );7 end HEX_TO_7SEG;89 architecture HEX_TO_7SEG of HEX_TO_7SEG is

10 signal Yi: std_logic_vector (0 to 6);1112 begin13 process(A, BI, Yi)14 begin15 case A is16 when "0000" => Yi <= "1111110";17 when "0001" => Yi <= "0110000";18 when "0010" => Yi <= "1101101";19 when "0011" => Yi <= "1111001";20 when "0100" => Yi <= "0110011";21 when "0101" => Yi <= "1011011";22 when "0110" => Yi <= "1011111";23 when "0111" => Yi <= "1110000";24 when "1000" => Yi <= "1111111";25 when "1001" => Yi <= "1110011";

90 CAPITULO 7. CIRCUITOS COMBINACIONALES EN VHDL

Figura 7.5: Varios tipos de buffers de tercer estado.

26 when "1010" => Yi <= "1110111";27 when "1011" => Yi <= "0011111";28 when "1100" => Yi <= "1001110";29 when "1101" => Yi <= "0111101";30 when "1110" => Yi <= "1001111";31 when "1111" => Yi <= "1000111";32 when others => Yi <= "0000000";33 end case;3435 if ( not BI) = ’1’ then Y <= not Yi;36 else Y <= "0000000";37 end if;3839 end process;4041 end HEX_TO_7SEG;42

Listado 7.3: Decodificador BCD A 7-Segmentos

7.3 Buffer de Tercer Estado

DISENO TRADICIONAL.

Los sımbolos logicos de 4 tipos de buffers de tercer estado se observan a continuacion:

Los dos primeros buffers son no inversores y los ultimos inversores. La senal extraubicada en la parte superior del sımbolo es la entrada de habilitacion del bufferde tercer estado. Esta puede ser activa alta o activa baja. Cuando el dispositivoesta activado, se comporta como un buffer comun o como inversor. Cuando el bufferno esta activado, su salida va a un estado de alta impedancia, es decir se comportacomo si el dispositivo estuviera desconectado. Los buffers de tercer estado permitenque multiples fuentes compartan una lınea sin que haya superposicion de senales.

Un bus transceiver contiene pares de buffers de tercer estado conectados en direc-ciones opuestas entre cada par de pines, de tal manera que los datos pueden trans-ferirse en cualquier direccion. Un ejemplo de transcerver octal de tercer estado es el

7.3. BUFFER DE TERCER ESTADO 91

Figura 7.6: Sımbolo logico del 74x245.

74x245, que se observa en la figura 7.6.

La entrada S/R determina la direccion de la transferencia, de A a B o de B a A. Elbuffer se habilita solo si /CE se lleva a 0 logico.

La estructura interna del 74x245 se observa en la siguiente aplicacion:

DISENO CON VHDL.

1 library IEEE; use IEEE.std_logic_1164.all;23 entity V3statex is4 port (5 G_L: in STD_LOGIC;6 SEL: in STD_LOGIC_VECTOR (1 downto 0);7 A, B, C, D: in STD_LOGIC_VECTOR (1 to 8);8 X: out STD_LOGIC_VECTOR (1 to 8)9 );

10 end V3statex;1112 architecture V3states of V3statex is begin13 process (G_L , SEL , A, B, C, D)14 begin15 if G_L=’0’ then16 if SEL="00" then X <= A;17 elsif SEL="01" then X <= B;18 elsif SEL="10" then X <= C;19 elsif SEL="11" then X <= D;20 end if;

92 CAPITULO 7. CIRCUITOS COMBINACIONALES EN VHDL

Figura 7.7: Estructura interna del 72x245.

21 else X <= (others => ’Z’);22 end if;23 end process;2425 end V3states;26

Listado 7.4: Buffer de tercer estado

VHDL no tiene tipos y operadores para salidas de tercer estado, pero tiene primitivasque pueden ser usadas para crear senales y sistemas con posibilidad de tercer estado.Por ejemplo, el tipo std logic define ’Z’como uno de los 9 posibles valores que puedetomar una senal digital. Este valor se usa para el estado de alta impedancia. En elprograma anterior se define un proceso, en el cual se emplean lazos if para evaluar elestado de la entrada de habilitacion y para asignarle a la salida una de las diferentesentradas.

7.4 Multiplexor 8 a 1

DISENO TRADICIONAL.

7.4. MULTIPLEXOR 8 A 1 93

Entradas Salidas

Seleccion Habilitador

S2 S1 S0 E Y W

X X X 1 0 1

0 0 0 0 D0 D0

0 0 1 0 D1 D1

0 1 0 0 D2 D2

0 1 1 0 D3 D3

1 0 0 0 D4 D4

1 0 1 0 D5 D5

1 1 0 0 D6 D6

1 1 1 0 D7 D7

Cuadro 7.3: Tabla de verdad del mux 8 a 1

Este multiplexor consta de ocho entradas de datos, tres entradas para seleccion, unaentrada habilitadora y dos salidas, su funcionamiento es la de un switch digital elcual enruta uno de los varios datos de entrada a la salida dependiendo de las entradasde seleccion. Su tabla de verdad es como sigue.

Para implementacion de este circuito mediante compuertas, se necesitan:

• 1 compuerta NOR de 8 entradas.

• 8 compuertas AND de 5 entradas.

• 7 inversores.

En el esquema anterior se observan compuertas AND de cuatro entradas, esto esporque falta la entrada inversora que serıa la quinta entrada para las compuertasAND.

DISENO CON VHDL.

Aquı utilizamos una estructura condicional para implementar el multiplexor, la cuales muy parecida a una tabla, asignando el dato de entrada correspondiente cuandose verifica la combinacion de entrada de seleccion.

1 library IEEE; use IEEE.std_logic_1164.all;23 entity v74x151 is4 port ( E : in std_logic ;

94 CAPITULO 7. CIRCUITOS COMBINACIONALES EN VHDL

Figura 7.8: Estructura interna del mux 8 a 1.

5 Sel : in std_logic_vector (2 downto 0) ;6 D0, D1 , D2 , D3 , D4 , D5 , D6, D7 : in std_logic ;7 y,y_l : out std_logic );8 end v74x151;9

10 architecture v74x151 of v74x151 is11 signal dato : std_logic;12 begin13 with Sel select dato <=14 D0 when "000",15 D1 when "001",16 D2 when "010",17 D3 when "011",18 D4 when "100",19 D5 when "101",20 D6 when "110",21 D7 when "111",22 ’0’ when others;23 y <= dato when E = ’1’ else ’0’;24 y_l <= not dato when E= ’1’ else ’0’;25 end v74x151;26

Listado 7.5: Multiplexor 8 a 1

7.5. MUTLIPLICADOR 95

Figura 7.9: Multiplicacion.

Figura 7.10: Sumador completo (full adder) de dos bits, esquema interno, sımbolo.

7.5 Mutliplicador

DISENO TRADICIONAL.

Una multiplicacion combinacional se realiza basandose en el algoritmo de desplaza-miento y suma. La multiplicacion se realiza de forma similar a como se realizaba enla primaria, solo que mas facil, ya que se multiplica por uno (1) o por cero (0) y lasuma se limita a contar unos (1).

Hay varias maneras de implementar la multiplicacion entre dos numeros de n bits,una de ellas es el diseno a partir de la tabla de verdad, la cual es viable cuandones pequena (n < 4). Cuando se requieren multiplicaciones con un numero mayor debits, se puede implementar el algoritmo de la primaria con la ayuda de compuertasAND, para los productos entre bits, y sumadores completos de dos bits. Con unaadecuada interconexion se logra los resultados esperados.

La implementacion de un multiplicador 4 bits x 4 bits se muestra en la siguientepagina. Como puede observarse, se requiere de 12 sumadores completos de dos bits,los cuales cada uno esta formado por dos compuertas EXOR de 2 entradas, trescompuertas AND de dos entradas y una compuerta OR de tres entradas, (como semuestra en la siguiente figura) y 16 compuertas AND de dos entradas.

DISENO CON VHDL.

Para la implementacion de un multiplicar en VHDL, tenemos varias opciones, unade ellas podrıa ser el empleo de la librerıa del IEEE std logic arith, en la cual sepuede ejecutar la operacion entre dos palabras de n (hasta 16) bits con el empleo del

96 CAPITULO 7. CIRCUITOS COMBINACIONALES EN VHDL

Figura 7.11: Multiplicador 4 bits x 4 bits.

operador “*”. A continuacion se muestra un archivo donde se realiza una operacionentre dos palabras de seis bits, la razon por la cual se realizo de este tamano depalabra es debido a la capacidad de la FPGA empleado.

1 library ieee; --use ieee.std_logic_1164.all; use ieee.

std_logic_arith.all;

23 entity mul_6x6 is4 port5 (6 a,b : in unsigned (0 to 5); -- no se puede trabajar

con

7 m : out unsigned (0 to 11) -- std_logic_vector

8 );9 end mul_6x6;

1011 architecture mul_6x6 of mul_6x6 is12 begin13 m <= a * b;14 end mul_6x6;15

Listado 7.6: Multiplicador

Otra opcion podrıa ser la implementacion del algoritmo de desplazamientos y sumas,

7.5. MUTLIPLICADOR 97

como se muestra a continuacion. En el archivo fuente se destaca los procedimientosempleados: en la primera parte se definen los componentes AND2, XOR2 y MAJ,con los cuales se implementa el sumador completo (full adder), a continuacion segeneran los productos entre bits, luego se realizan las sumas parciales y ultimo se“arma” o se genera el resultado final.

1 library IEEE; use IEEE.std_logic_1164.all;23 entity vmul8x8p is4 port ( X: in STD_LOGIC_VECTOR (7 downto 0);5 Y: in STD_LOGIC_VECTOR (7 downto 0);6 P: out STD_LOGIC_VECTOR (15 downto 0) );7 end vmul8x8p;89 architecture vmul8x8p_arch of vmul8x8p is

10 function MAJ (I1 , I2 , I3: STD_LOGIC) return STD_LOGIC is11 begin12 return ((I1 and I2) or (I1 and I3) or (I2 and I3));13 end MAJ;14 begin15 process(X,Y)16 type array8x8 is array (0 to 7) of STD_LOGIC_VECTOR (7

downto 0);17 variable PC: array8x8; -- producto de bits

18 variable PCS: array8x8; -- bit suma del full -adder

19 variable PCC: array8x8; -- bit carry del full -adder

20 variable RAS ,RAC: STD_LOGIC_VECTOR (7 downto 0); -- suma

parcial

21 begin -- carry y

sumandos

22 for i in 0 to 7 loop for j in 0 to 7 loop23 PC(i)(j) := Y(i) and X(j); -- realizacion de los

productos de bits

24 end loop; end loop;25 for j in 0 to 7 loop26 PCS (0)(j) := PC(0)(j); -- primera fila "virtual"

27 PCC (0)(j) := ’0’; --

28 end loop;29 for i in 1 to 7 loop -- sumas parciales , excepto la

ultima fila

30 for j in 0 to 6 loop31 PCS(i)(j) := PC(i)(j) xor PCS(i-1)(j+1) xor PCC(i-1)

(j);32 PCC(i)(j) := MAJ(PC(i)(j), PCS(i-1)(j+1), PCC(i-1)(j

));33 PCS(i)(7) := PC(i)(7); -- salida ultima suma "

virtual"

98 CAPITULO 7. CIRCUITOS COMBINACIONALES EN VHDL

34 end loop;35 end loop;36 RAC (0) := ’0’;37 for i in 0 to 6 loop -- suma final

38 RAS(i) := PCS (7)(i+1) xor PCC(7)(i) xor RAC(i);39 RAC(i+1) := MAJ(PCS (7)(i+1), PCC(7)(i), RAC(i));40 end loop;41 for i in 0 to 7 loop42 P(i) <= PCS(i)(0); -- primeros 8 bits del producto ,

del full -adder

43 end loop;44 for i in 8 to 14 loop45 P(i) <= RAS(i-8); -- siguientes 7 bits del producto

46 end loop;47 P(15) <= RAC(7); -- ultimo bit , carry del full -

adder

48 end process;49 end vmul8x8p_arch;50

Listado 7.7: Multiplicador

Para la implementacion de la multiplicacion se utilizo la librerıa aritmetica (ieee.std logic artih.all),la cual practicamente resuelve el problema del diseno con el empleo de modelos yapredeterminados por el fabricante. Si se desea tener un control mayor sobre el disenoes recomendable o preferible crear las funciones o implementar los algoritmos que secumplan con los requerimientos, y en este ejemplo se sigue esta tendencia.

Capıtulo 8

Introduccion a los circuitossecuenciales

Conceptos basicos

El latch S-RDiagramas de tiempoTablas caracterısticasEl Flip-FlopFlip-Flops TTLContador de rizado o asincronicoContador modulo nDivision de frecuenciaModificacion de la secuencia de conteoContadores comercialmente disponibles

Saber HacerEntender el funcionamiento tanto del latch como del flip-flop. Saberlos diferenciar Con-struir cualquier contador asincronico Construir divisores de frecuencia

99

100 CAPITULO 8. INTRODUCCION A LOS CIRCUITOS SECUENCIALES

Figura 8.1: Latch S-R con compuertas NOR.

8.1 CIRCUITOS SECUENCIALES

Los circuitos que hemos visto hasta ahora han sido combinacionales. La salida de uncircuito combinacional es funcion solamente de las entradas.

La salida de un circuito secuencial es funcion no solamente de las entradas sino tambiende la salida actual, es decir, se presenta retroalimentacion.

Los circuitos secuenciales forman la base de los registros, memorias y maquinas deestado, las cuales a su vez son unidades funcionales vitales en el diseno digital.

8.2 EL LATCH S- R

El circuito secuencial mas sencillo es el latch S-R. A partir de este circuito se construyenlos flip-flops y a partir de los flips-flops, los registros, las memorias y las maquinas de estadoque hemos mencionado.

El latch S-R basico tiene dos entradas, S y R, y dos salidas, Q y Qque son siempreopuestas.

La entrada S se usa para colocar (set) Q en 1; la entrada R se usa para borrar (Reset)Q a 0.

En las figuras 8.1 y 8.2 se muestran dos implementaciones del latch S-R que usan lascompuertas NOR y NAND respectivamente. Como puede verse, la implementacion NORtiene entradas activas altas. Esto indica que la operacion Set o Reset se ejecuta bajandotemporalmente la lınea Set o Reset a 0.

Debido a la realimentacion de las entradas, la salida permanecera en 1 o en 0 aun de-spues de que la senal “set” o “reset” haya desaparecido, con lo cual tendremos la capacidadde memoria del latch. Se encarece al lector verificar esto examinando las secuencias de laentrada mostradas en las figuras 8.3 y 8.4 y determinando las salidas de cada compuerta

8.2. EL LATCH S- R 101

Figura 8.2: Latch S-R con compuertas NAND.

Figura 8.3: Diagrama de tiempos del latch S-R con compuertas NOR.

del latch.

Describir el comportamiento de los circuitos secuenciales es difıcil. Existen varios meto-dos para descubrir la naturaleza de un circuito secuencial, incluyendo los diagramas deestado, las tablas de estado, las tablas de transicion, las tablas caracterısticas y los dia-gramas de tiempo. En este capıtulo veremos dos metodos: diagrama de tiempos simples ytablas de caracterısticas reducidas.

Figura 8.4: Diagrama de tiempo del latch S-R de compuertas NAND.

102 CAPITULO 8. INTRODUCCION A LOS CIRCUITOS SECUENCIALES

8.2.1. Diagramas de Tiempo

Los diagramas de tiempo constituyen la descripcion mas exacta de la operacion delcircuito. En las figuras 8.3 y 8.4 se observan los diagramas de tiempo que muestran elcomportamiento de las implementaciones NOR y NAND del latch S-R. El eje vertical esvoltaje e indica el estado de la lınea en 0 o en 1. El eje horizontal es el tiempo e indica lasecuencia de los cambios de voltaje.

En la figura 8.3 se ilustra el comportamiento de la implantacion NOR. Al examinarde izquierda a derecha, vemos un estado inicial con Q, R, y S iguales todos a 0. La lınea“Set” se sube a 1. Esto coloca a Q en 1, aun cuando S regrese a 0. Finalmente, R se colocaen 1; esto restaura Q a 0, en donde permanece aun despues de que R vuelve a 0.

Los diagramas de tiempo mostrados en las figuras 8.3 y 8.4 son expresiones simplificadasde los diagramas de tiempo mostrados en los catalogos de los fabricantes.

Los diagramas que hemos incluido simplemente ilustran la funcion del circuito, nola temporizacion detallada de los elementos electronicos. Por ejemplo, las transicionesde estado mostradas verdaderamente tomaran tiempo, es decir, las transiciones no sonverticales. Ademas, desde la transicion de la lınea S-R hasta que la salida realmente cambiade estado, toma tiempo.

Puesto que estos tiempos son muy cortos y ya que estamos interesados primordialmenteen la funcion de la unidad y no en las caracterısticas de temporizacion electronica, usaremoslos diagramas de tiempo simplificados.

8.2.2. Tablas Caracterısticas

Aun cuando el diagrama de tiempo ilustra exactamente el comportamiento de un cir-cuito, es bastante complejo leerlo y no es muy compacto. Hasta ahora, hemos usado lastablas de verdad para ilustrar el comportamiento de los circuitos combinacionales.

Para mostrar el comportamiento de los circuitos secuenciales, se puede usar una versionligeramente modificada de las tablas de verdad llamada “tabla reducida de caracterısticas”.

En las tablas 8.1 y 8.2 se muestran las tablas de caracterısticas para las implementa-ciones NOR y NAND del latch S-R. La tabla responde a la pregunta: ¿Cual sera el nuevoestado de las salidas si las entradas se colocan en estos valores?

El estado actual de la salida se denomina Q. El siguiente estado, es decir, el resultantede efectuar las transiciones provocadas por las entradas, se denomina Q+.

Por ejemplo, en la primera lınea de la tabla podemos ver que si ambas entradas estanen 0, la nueva salida “Q+” sera “Q”, es decir, la salida permanece como estaba. De latercera lınea vemos que si “S” se coloca en 1, el nuevo estado de la salida “Q+” sera 1.Si “S” regresa a 0, la lınea 1 de la tabla nos dice que la nueva salida “Q+” sera igual quecomo estaba; en este caso, si “Q” era 1, continuara en 1.

8.3. LATCHES SINCRONICOS (FLIP-FLOPS) 103

S R Q+

0 0 Q � No cambia

0 1 0

1 0 1

1 1 - � Condicion invalida

Cuadro 8.1: Tabla caracterıstica del latch S-R tipo NOR

S R Q+

0 0 - � Condicion invalida

0 1 1

1 0 0

1 1 Q � No cambia

Cuadro 8.2: Tabla caracterıstica del latch S-R de compuertas NAND

8.3 LATCHES SINCRONICOS (FLIP-FLOPS)

La salida del latch S-R se transformara en el mismo instante en que la entrada genereun cambio. A esto lo denominamos funcionamiento asincronico. Pero en la mayorıa delos circuitos digitales, la temporizacion de los eventos es crıtica. Generalmente se utilizaun reloj para sincronizar la operacion de las diferentes unidades funcionales del circuito.Para trabajar en este ambiente, el latch solo debe cambiar de estado cuando la senaldel reloj ası lo indique. A esto lo denominamos “funcionamiento sincronico”. Los latchesmodificados para operar sincronicamente, se denominan flip-flops.

8.3.1. Latches controlados por Compuertas

Para lograr la operacion sincronica, el latch debe cambiar de estado solamente bajo lasenal apropiada del reloj. Por ejemplo, supongamos que el latch debe cambiar de estadosolo cuando la senal de reloj sube. La manera mas sencilla de lograr esto es agregandouna compuerta a las entradas que le permita al latch “mirar” a las entradas solamentecuando el reloj este en alto. A esto lo denominamos “latch controlado por compuertas” yse ilustra en la figura 8.5.

Las dos compuertas NAND de la izquierda forman la compuerta de control y las doscompuertas NAND de la derecha forman el latch. Mientras la entrada del reloj (C) este ba-ja, la salida de la compuerta sera siempre 1 sin importar el valor de S o R.

Cuando el reloj (C) pase a alto, entonces las entradas S y R se pasan al latch y lasalida cambia. El comportamiento de este circuito se muestra en la tabla 8.3

104 CAPITULO 8. INTRODUCCION A LOS CIRCUITOS SECUENCIALES

Figura 8.5: Cerrojo con compuerta.

C S R Q+

0 0 0 Q

�Salida inmodificablemientras C sea iguala 0 (cero).

0 0 1 Q

0 1 0 Q

0 1 1 Q

1 0 0 Q � No hay cambio

1 0 1 0

1 1 0 1

1 1 1 - � Condicion invalida

Cuadro 8.3: Tabla caracterıstica del latch S-R de compuertas NAND

Existe un pequeno problema con esta solucion. Durante el tiempo en que el reloj esta al-to, el latch controlado por la compuerta se comporta identicamente al latch asincronicocorriente. Por lo tanto, si la entrada cambia varias veces, tambien cambiara varias vecesel estado del latch. El problema se ilustra con el diagrama de tiempo de la figura 8.6

El primer ciclo del reloj, es “normal”. En este, la lınea “S” esta alta y “Q” sube tambientan pronto como el reloj sube.

El segundo ciclo del reloj ilustra el problema. Primero sube la lınea “R”, y “Q” cae a0 tan pronto como el reloj sube.

Pero mientras el reloj esta aun alto, la lınea “S” sube y por lo tanto, “Q” vuelvenuevamente a 1 durante el mismo ciclo del reloj.

8.3.2. Flip-Flops disparados por Flanco

La solucion mas comun al problema es el flip-flop disparado por flanco. En un flip-flopdisparado por flanco delantero, las entradas se miran solamente en el flanco del reloj que

8.3. LATCHES SINCRONICOS (FLIP-FLOPS) 105

Figura 8.6: Diagrama de tiempo del cerrojo con compuerta.

Figura 8.7: Flip-Flop disparado por flanco.

sube. En un flip-flop disparado por flanco trasero, las entradas se miran en el flanco delreloj que baja.

El flip-flop disparado por flanco puede construirse facilmente a partir del latch contro-lado por las compuertas. Hay que agregar un circuito de estrechamiento del pulso antesde la compuerta de entrada de modo que la compuerta este activa solamente un instanteen el flanco del reloj que baja o sube. Esta implementacion se muestra en la figura 8.7.

Notese que se han agregado dos entradas, “Borrar” y “Preactivar”. Puesto que estasentradas van directamente al latch, pueden activar o borrar la salida independiente delreloj. Se les denomina “entradas asincronicas” y son utiles para colocar el flip-flop en unestado inicial.

Existen varias maneras de implementar el circuito de estrechamiento del pulso que yahemos mencionado.

En la Figura 8.8 se muestra una implementacion sencilla. Este metodo se vale del hechode que una compuerta realmente toma tiempo en cambiar de estado.

Supongamos un estado inicial con la entrada baja del reloj. Debido al inversor de entra-da, las entradas A y B en la compuerta NAND seran opuestas; la salida de la compuertaNAND sera 1 y la salida final sera 0. Cuando el reloj sube, la entrada B de la compuertaAND inmediatamente sube, pero la entrada A tambien permanece en alto hasta que elinversor cambia de alto a bajo. Esto toma aproximadamente 10ns con TTL estandar. Porlo tanto, durante 10ns, ambas entradas de la compuerta NAND estan altas, la salida de lacompuerta NAND esta baja y la salida del circuito esta alta. Despues de 10ns, el inversor

106 CAPITULO 8. INTRODUCCION A LOS CIRCUITOS SECUENCIALES

Figura 8.8: Circuito de estrechamiento de pulso.

Figura 8.9: Flip-Flop Maestro-Esclavo.

de entrada produce una salida baja, la cual a su vez cambia la salida de la compuertaNAND a 1 y la salida final retorna a 0.

8.3.3. Flip-Flop Maestro-Esclavo

Otra tecnica para eliminar las transiciones de estado multiple que pueden ocurrir enun solo pulso de reloj, es el uso de una disposicion maestro-esclavo. Un flip-flop maestro-esclavo se forma de dos latches controlados por la compuerta, segun se muestra en la figura8.9.

El latch de la izquierda o maestro forma las entradas al flip-flop y el de la derecha oesclavo forma las salidas del flip-flop. El latch maestro mira las entradas mientras el relojesta alto. Cuando el reloj baja, el esclavo queda habilitado, para utilizar las salidas dellatch maestro como entradas. Por lo tanto, se “leen” las entradas mientras el reloj esta altoy se transfieren a las salidas cuando el reloj retorna a cero.

8.4 FLIP-FLOPS TTL

No es necesario construir flip-flops partiendo de las compuertas individuales puesto queexisten muchas variaciones en los chips estandar TTL. Generalmente se encuentran de dosa ocho flip-flops en un solo integrado. Los mas populares seran tratados en las siguientessecciones.

8.5. FLIP FLOPS J-K 107

8.5 Flip Flops J-K

El flip-flop J-K es simplemente un flip-flop S-R que ha sido modificado de maneraque ambas entradas se puedan activar el mismo tiempo. Mientras que esta condicion fueinvalidada para el flip-flop S-R, en el flip-flop JK esta condicion conmuta la salida. Enla Figura 8.10 se muestra el comportamiento descrito y la representacion estandar delflip-flop J-K.

J K Q+

0 0 Q � No cambia

0 1 0 � Reset

1 0 1 � Set

1 1 Q � Conmuta

Figura 8.10: El Flip-Flop J-K.

El flip-flop JK esta disponible en varios CHIPS TTL con varias opciones. Por ejemplo,el 7473 contiene dos flip-flops J-K con una entrada asincronica de borrado, tal como semenciono previamente. El 7476 contiene dos flip flops J-K con borrado y pre-activacion.

8.5.1. Flip-Flops D

El flip-flop D o flip-flop de datos solo tiene una entrada de control, D. La salida delflip-flop se coloca en el valor que traiga D en cada ciclo del reloj. En la figura 8.11 se daa conocer el comportamiento descrito y la representacion estandar del flip-flop D.

D Q+

0 0

1 1

Figura 8.11: El Flip-Flop D.

8.5.2. El flip-flop T

El flip-flop T tiene solo una entrada de control, T. Si la entrada es 1, la salida seconmuta y si es cero, la salida no cambia. El flip-flop T se construye a partir del J-Kuniendo las dos entradas.

108 CAPITULO 8. INTRODUCCION A LOS CIRCUITOS SECUENCIALES

T Q+

0 Q

1 Q

Figura 8.12: El Flip-Flop T.

Figura 8.13: Diagrama de tiempo de un contador.

8.6 CONTADORES

8.6.1. DEFINICION

En terminos generales, un contador es un circuito secuencial que pasa por un conjun-to dado de estados en ciclos sucesivos del reloj. Generalmente son estados secuencialesbinarios (por ejemplo, 0 a 7, 0 a 15, etc.) y de donde resulta el termino contador.

Un estado es simplemente el valor binario representado por las salidas del contador.Por ejemplo, un contador de 0 a 15 requiere 4 salidas para representar los 4 bits.

Los contadores son utiles en muchas aplicaciones: temporizacion, multiplexacion y porsupuesto, conteo. En este capıtulo estudiamos el diseno y la aplicacion de los contadores,incluyendo los comercialmente disponibles.

8.6.2. CONTADORES DE RIZADO ASINCRONICOS

Si un flip-flop J-K se usa como flip-flop T (uniendo J y K), la salida cambia de estado encada ciclo del reloj. Por tanto, despues de 2 ciclos del reloj, la salida del flip-flop completaun ciclo. Si la salida de este flip-flop es utilizada como entrada a un segundo flip-flop T,la salida del segundo flip-flop oscilara con la mitad de la velocidad del primer flip-flop.Cada flop-flip adicional agregado de esta manera, oscilara con la mitad de la velocidad delflip-flop precedente. El comportamiento para los dos flip-flops es ilustrado en el diagramade tiempo mostrado en la figura 8.13.

Considerando la salida del primer flip-flop, Qa como el primer dıgito y la salida delsegundo flip-flop como el segundo dıgito, se obtiene un contador binario sencillo que va

8.6. CONTADORES 109

Figura 8.14: Contador de 2 bits.

desde 0 hasta 3 y luego repite. En la Figura 36 se muestra un circuito para implementareste contador. La ausencia de conexiones a las entradas J y K indica que se conecta a“alto”. Puede lograrse un contador de 0 a 7 agregando un flip-flop adicional (3 en total).De 0 a 15 podemos contar con 4 flip-flops y ası sucesivamente.

Notese en el diagrama de tiempo de la figura 8.13, que los cambios de estado ocurrenen el lado descendente del reloj. Recuerde que en la practica de laboratorio del capıtulo5 el flip-flop J-K 7476 tambien cambia de estado en el lado descendente del reloj. Estosflip-flops son bastante apropiados para hacer contadores.

En el diagrama de tiempo las transiciones de estado ocurren exactamente en el ladodescendente del reloj. Como se menciono en el capıtulo 5, esto no es totalmente cierto;toma tiempo desde el lado descendente del pulso hasta que la salida del flip-flop cambiade estado. Para el flip-flop 7476 el retardo es de aproximadamente 40ns. Para el contadorde rizado de 2 bits de la figura 8.14 el primer dıgito (Qa) cambia 40ns despues del ladodescendente del reloj. Dado que Qa es la entrada de reloj para el segundo flip-flop, elsegundo dıgito (Qb) cambia 40ns despues del eje descendente de Qa y 80ns despues delpulso del reloj original. Con cada flip-flop adicional se agrega una demora de 40ns a medidaque la senal de reloj “se propaga” a traves de la cadena de flip-flops.

Dado que cada flip-flop no cambia de estado por una senal comun, no se consideraun dispositivo sincronico. Si se unen estas observaciones, se vera el porque del nombre“contador de rizado asincronico”, para los que abreviadamente se denominan contadoresde rizado.

Consideraciones de Tiempo

La velocidad maxima que puede alcanzar un contador de rizado depende de la demorade la conmutacion de los flip-flops usados y del numero de flip-flops del contador. Porejemplo, consideremos un contador de rizado de 4 bits que use flip-flops J-K 7476. Lademora mas larga ocurre cuando todos los cuatro flip-flops desde el menos significativo(Qa) hasta el mas significativo (Qd), deben cambiar de estado. Esto ocurre cuando hayque cambiar desde el estado 7 (0111) al estado 8 (1000) o al cambiar del estado 15 (1111)al estado 0 (0000).

Puesto que cada flip-flop introduce un retardo de 40ns, la demora total para cambiarde un estado a otro y la maxima rata de conteo resultante, son:

110 CAPITULO 8. INTRODUCCION A LOS CIRCUITOS SECUENCIALES

Figura 8.15: Cambio del estado 15 al estado 0

Maxima demora de conmutacion= 4× 40ns = 160nsMaxima rata deconteo= 1/160ns = 6,25MHz

El valor para la rata maxima de conteo asume que cada estado existe durante alguntiempo corto antes del siguiente pulso de reloj.

El lımite practico es menor puesto que a esta velocidad los estados 0 y 8 existirandurante ese periodo.

El diagrama de tiempo de la figura 8.15 muestra el retardo de conmutacion que ocurrecuando se pasa del estado 15 al estado 0.

Los estados de salida de un contador se usan a menudo como entradas de control a losmultiplexores, decodificadores, memorias, etc. El estado puede representar una posicion dememoria que se va a leer o una salida del decodificador que se va a colocar en 0 pero conun contador de rizado, la transicion de un estado a otro no es instantanea. La figura 8.15muestra la secuencia de transicion de los flip-flops cuando un contador de rizado cambiadel estado 15 (1111) al estado 0 (0000).

En el lado descendente del reloj, el estado de salida es 15 (1111). Cuarenta n segundosmas tarde, Qa cae a 0 y cambia la salida a 14 (1110). Cuarenta ns despues de Qa, Qb cae a0 y deja la salida en 12 (1100). Qc cae a 0 40 ns despues de Qb y deja la salida en 8 (1100)y finalmente Qd cae a 0 40ns, despues de Qc, 160ns despues del lado original del reloj, conla salida ahora en 0. De manera que al cambiar el contador del estado 15 al estado 0, losestados 14, 12 y 8 existen durante 40ns cada uno. Estos estados intermedios son llamados“ruidos” o “impulsos de decodificacion”. Los ruidos no solamente se presentan al cambiardel estado 15 al 0. En cualquier momento en que mas de un flip-flop debe cambiar deestado, existiran estados intermedios.

Para ilustrar el efecto de estos ruidos considerese un contador que tenga que manejarlas lıneas de seleccion de un decodificador de 0 a 15. Las salidas del decodificador puedenestar encendiendo uno de los 16 valores de un despliegue de siete segmentos. Pero comoya se menciono, cuando se conmuta del estado 15 al estado 0, existiran los estados 14,12

8.6. CONTADORES 111

y 8 durante 40ns. Por tanto, en esta aplicacion, los despliegues 14, 12 y 8 se encenderandurante 40ns cuando se requiere el cambio de 15 a 0. Por supuesto, un parpadeo 40ns noes muy evidente para el ojo humano pero si la salida del decodificador esta siendo tomadapor otro aparato digital, 40ns puede ser mucho tiempo.

8.6.3. GENERACION DE SENALES DE RELOJ CON CONTADORESDE RIZADO

Un contador de rizado se puede usar para dividir la frecuencia de una senal de reloj.Por ejemplo, suponga que un circuito digital tiene un reloj de 10KHz. Ademas de la senalde 10KHz, el circuito tambien requiere un reloj de 5KHz. En lugar de tener circuitos dereloj separados para cada una de estas frecuencias, podemos obtener el reloj de 5KHzdividiendo por 2 la senal de 10KHz.

Recordemos de la seccion ?? que la salida de un flip-flop T oscila con la mitad de lafrecuencia del reloj de entrada. Por tanto, un contador de 1 bit ejecuta una operacionde division por 2. Igualmente, si anadimos un segundo flip-flop T, este oscilara con lamitad de la frecuencia del primero y con un cuarto de la frecuencia original. Por tanto, uncontador de rizado de 2 bits ejecuta una operacion de division por 4. La operacion “dividirpor n” que ejecuta el contador es igual al numero de estados en la secuencia del contador.Un contador de 2 bits tiene 4 estados, 0 a 3 y ejecuta una operacion de division por 4. Deigual manera, un contador de 3 bits tiene 8 estados y ejecuta una operacion de divisionpor 8.

Modificacion de la Secuencia de conteo

El numero de estados en la secuencia de un contador de rizado ha sido hasta ahorauna potencia de 2. Como podrıamos dividir una senal de reloj por algun otro valor queno sea potencia de 2, 5 por ejemplo? Obviamente para dividir por 5, el contador debetener 5 estados. Para hacer esto, se usa un contador de rizado comun al cual se le agregancompuertas adicionales para obligarlo a volver a 0 despues de 5 estados. En este caso, elcontador pasara por 0, 1, 2, 3, 4 y luego repetira.

Recordemos, la presencia de entradas de borrado asincronico en el flip-flop J-K 7476.Usando estas entradas, el contador se puede volver a 0 cuando sea necesario. En el ejemploanterior se vuelve a 0 cuando el contador intenta pasar al estado 5. En la figura ?? semuestra el contador de division por 5.

Como se puede ver, la compuerta NAND detecta el estado 5 cuando Qc y Qa son ambos1. En este momento, la compuerta NAND se acciona y hace volver los contadores al estado0. La operacion se muestra en el diagrama de tiempo de la figura 8.17. 40ns despues delvertice descendente del reloj, Qa pasa a 1 y el contador queda en estado 5.

Al llegar al estado 5, ambas entradas de la compuerta NAND valen 1 y 10ns despues (elretardo de la compuerta NAND), la salida de la compuerta NAND pasa a 0 para borrar

112 CAPITULO 8. INTRODUCCION A LOS CIRCUITOS SECUENCIALES

Figura 8.16: Contador de division por 5.

Figura 8.17: Cambio del estado 4 al estado 0.

los flip-flops; la operacion de borrado de un flip-flop J-K 7476 toma un maximo de 40ns.Finalmente, la salida se borra 90ns despues del vertice descendente del reloj. Notese queel estado 5 existe durante 50ns pero mirando la figura 8.17, puede verse que el estadointermedio no afecta a Qc.

Generacion de una onda simetrica

La onda cuadrada resultante del contador divisor por 5 descrito anteriormente no essimetrica: vale 0 durante 4 ciclos del reloj de entrada (000 a 011) y 1 para un ciclo delreloj de entrada (100). La figura 8.18 muestra el reloj de entrada y la salida tomada deQc.

Los numeros en la parte inferior, indican el estado actual del contador despues de cadatransicion. No se muestran los retardos por conmutacion.

Algunas aplicaciones requieren una onda mas simetrica: una onda que valga 1 y lamisma cantidad de tiempo que valga 0. Obviamente que esto es imposible cuando sedivide el reloj por un valor impar pero puede obtenerse una onda mas simetrica si se tomala salida de la salida de un contador diferente. A continuacion se muestra la secuencia delos estados del contador divisor por 5 descrito previamente.

8.6. CONTADORES 113

Figura 8.18: Salida del divisor por 5.

Qc Qb Qa

0 0 0

0 0 1

0 1 0

0 1 1

1 0 0 (fin del ciclo)

0 0 0...

......

Como puede verse, Qc cambia una vez durante la secuencia pero Qb tambien hace .lomismo por lo cual se puede tomar como salida. Adicionalmente, Qb es mas simetrica: vale0 durante 3 ciclos y 1 durante 2 ciclos.

Es importante que la salida del contador usado como salida de reloj, no este afectadapor los ruidos. Por ejemplo, en la secuencia previa, Qa aparentemente permanece en 0 entreel estado 4 y el estado 0. Pero segun se muestra en la figura 8.17, Qa va temporalmente a1 cuando se cambia de estado 4 al estado 0. Si se usara Qa como reloj, este corto perıodode 40ns podrıa ocasionar problemas.

Si la longitud de la secuencia deseada es par, se puede generar una onda completamentesimetrica. Una operacion de division por 2 siempre produce una onda simetrica. Si sedescompone una operacion de division par en dos operaciones de division en donde laultima es de division por 2, se producira una onda simetrica.

Por ejemplo, una operacion de division por 10 puede ejecutarse dividiendo por 5 y luegopor 2. La figura 8.19 muestra un contador divisor por 6 simetrico.

Los dos flip-flops de la derecha forman el contador divisor por 3. Notese que la com-puerta NAND borra el contador al cambiar de 2 a 3. El flip-flop de la izquierda es el divisorpor 2, de donde se toma la salida.

114 CAPITULO 8. INTRODUCCION A LOS CIRCUITOS SECUENCIALES

Figura 8.19: Contador divisor por 6 simetrico.

8.6.4. OTRAS APLICACIONES DE LOS CONTADORES

La generacion de senales de reloj ciertamente no es la unica aplicacion de los conta-dores. Los contadores se usan en muchas aplicaciones, incluyendo multiplexamiento, tem-porizacion y conteo de pulsos, medicion de frecuencia y convertidores analogo-digitales.

En aplicaciones de multiplexacion, el contador generalmente se utiliza para suministrarla secuencia de seleccion de lınea para el multiplexor o el decodificador. El efecto de losruidos, debe considerarse cuidadosamente en estas aplicaciones, especialmente cuando seemplea multiplexacion para pasar datos a otros aparatos digitales.

Un contador facilmente puede arrancarse y luego detenerse por medio de dos pulsos deentrada consecutivos. Si el contador se alimenta con un reloj de frecuencia conocida entrelos pulsos, se puede determinar el tiempo entre ellos. En esta aplicacion, las consideracionesprimarias de diseno son el numero de bits del contador y la velocidad maxima de conteo.

Un contador puede tambien contar pulsos. En esta aplicacion, se usan los pulsos comoel reloj del contador. Contando sobre un perıodo dado de tiempo, se puede determinar lafrecuencia promedio de los pulsos. En este caso, las consideraciones primarias son nueva-mente el numero de bits y la velocidad maxima de conteo. Un convertidor analogo-digitalconvierte un voltaje de entrada en un valor binario que representa ese voltaje.

Por ejemplo, un convertidor A/D de 8 bits puede usarse para transformar un voltajeentre 0 y 5 voltios en un valor binario entre 0 y 255. Los convertidores A/D pueden hacersede diversas maneras y varios de esos metodos usan contadores. Por ejemplo, un metodosimple usa las salidas de un contador para alimentar las entradas de un convertidor digital aanalogo. Para cada salida del contador, el convertidor D/A producira un voltaje diferente.Un dispositivo llamado comparador se utiliza para determinar cuando es mayor la salidadel convertidor D/A que el voltaje de entrada.

Cuando ocurra, el contador se detiene y el valor que este en el contador representa elvalor binario del voltaje de entrada.

8.6. CONTADORES 115

8.6.5. CONTADORES DE RIZADO COMERCIALMENTE DISPONIBLES

Rara vez es necesario construir contadores partiendo de flip-flops individuales, puestoque existen varios contadores disponibles en chips. Por ejemplo, el 7493 es un contador derizado de 4 bits que usa flip-flops J-K. Tres de los flip-flops estan conectados internamentecomo un contador de rizado de 3 bits. Un cuarto flip-flop tiene entrada de reloj separada ysu salida no esta conectada al otro flip-flop. Para usar el chip como contador de 3 bits, sele suministra la senal de reloj a la entrada de reloj del contador de 3 bits. Para usar el chipcomo contador de 4 bits, se conecta la salida del flip-flop sencillo a la entrada de reloj delcontador de 3 bits y se le suministra la senal de reloj al flip-flop sencillo. Una lınea comunde borrado pasa por todos los flip-flops pero en lugar de existir simplemente una senal deborrado activa-baja tal como en flip-flop 7476, la operacion de borrado es activada poruna compuerta NAND de dos entradas. Para borrar el contador, ambas entradas debenvaler 1. Notese en la figura 8.18 que ası fue como se modifico la secuencia de conteo de uncontador de rizado de 3 bits para obtener un contador divisor por 5.

El contador divisor por 5 puede implementarse facilmente con el chip 7493, mientrasque sin este necesitarıamos dos chips 7476 y un chip 7400.

Otros contadores tienen diferentes secuencias de conteo. El 7490 es un contador dedecadas. Tiene 10 estados del 0 al 9 y es muy util en operaciones de conteo decimal. Igualque el 7493, esta dividido en un contador de 3 bits y un flip-flop separado. Usando elcontador de 3 bits, el 7490 ejecuta una operacion de division por 5.

Existen otros contadores: el 7492 es un contador divisor por 12 o divisor por 6. El 74163es un contador binario de 4 bits sincronico. En un contador sincronico, todas las salidascambian de estado al mismo tiempo. Se estudiara el diseno de contadores sincronicos y desecuenciadores de estado que no necesariamente cuentan secuencialmente.

116 CAPITULO 8. INTRODUCCION A LOS CIRCUITOS SECUENCIALES

Capıtulo 9

Secuenciadores de Estado yControladores

Conceptos basicos

Diagrama de estadoTabla de TransicionContador sincronicoSecuenciadorImplementacion de un secuenciador

Saber HacerDistinguir entre contadores sincronicos y asincronicosConstruir un diagrama de estados de un procesoImplementarlo con flip-flops o con circuitos programables

117

118 CAPITULO 9. SECUENCIADORES DE ESTADO Y CONTROLADORES

9.1 DEFINICION

En el Capıtulo anterior vimos varias formas en las cuales los contadores pueden serusados para controlar circuitos digitales auque muchas veces los requerimientos de controlvan mas alla de la simple secuencia ascendente de estados que produce un contador. Loscircuitos secuenciales que pueden generar cualquier secuencia especıfica de estados sondenominados secuenciadores de estado o controladores.

A diferencia de los contadores de rizado, los secuenciadores de estado generalmenteson sincronicos, es decir, todas las salidas cambian al mismo tiempo, basadas en un relojcomun. Obviamente un secuenciador de estado que genere una secuencia ascendente deestados es simplemente un contador sincronico pero con la capacidad de generar otrassecuencias de estados, los secuenciadores pueden producir una secuencia de control mascompleja. La salida de un secuenciador a menudo se divide en campos de varios tamanos ycada campo esta destinado a controlar una operacion que debe ocurrir. En un procesadoraritmetico sencillo, por ejemplo, los campos individuales podrıan controlar el cargue de losregistros, el enrutamiento de los datos a traves de lıneas de seleccion en un multiplexor,la seleccion de funcion en una unidad aritmetica, etc. Como ayuda en el diseno de estoselementos, se introducen dos metodos para ilustrar el comportamiento de los circuitossecuenciales: el diagrama de estados y la tabla de transiciones.

9.1.1. Diagramas de estado

Un diagrama de estado es una representacion visual del comportamiento del circuitosecuencial; es un grafico dirigido en el cual los nodos indican los estados posibles de saliday las flechas representan las transiciones de estados validas. A menudo las flechas llevanescritas las condiciones de entrada que provocan esa transicion.

9.1.2. Tablas de transicion

Una tabla de transicion enumera todas las posibles transiciones de estado y las entradasnecesarias para producir cada cambio. La Tabla 9.1 es una tabla de transicion para un flipflop J K. La segunda lınea, por ejemplo, muestra que para cambiar de 0 a 1, J debe estaren 1 y K puede estar en 0 o en 1.

9.2 CONTADORES SINCRONICOS

Como se describio en el Capıtulo anterior, los contadores de rizado tienen muchos usos.Sin embargo, en algunas aplicaciones los impulsos causados por la naturaleza asincronicadel contador pueden ocasionar problemas. En un contador sincronico, todos los flip flopscambian de estado a partir de una senal de reloj comun. Por tanto, todos los flip flopscambian de estado al mismo tiempo y en consecuencia no existen los impulsos o saltos.

9.2. CONTADORES SINCRONICOS 119

EstadoActual

ProximoEstado

Entrada Entrada

Q Q′ J K

0 0 0 X

0 1 1 X

1 0 X 1

1 1 X 0

Cuadro 9.1: Tabla de transicion de un flip flop J-K

Supongamos que se necesita un contador binario de 3 bits. Para disenar un contadorsincronico se empieza empezamos con un flip flop por cada bit, como en el contador derizado. Pero en lugar de obtener la entrada de reloj del flip flop anterior, se conecta la senalde reloj a todos los flip flops y se le agrega una logica sencilla para generar la secuenciaapropiada.

La tabla 9.2 muestra la secuencia de transiciones de estado y las entradas J K nece-sarias.

Por cada estado actual existe un conjunto diferente de entradas J K requeridas paraejecutar apropiadamente la transicion al siguiente estado. Por tanto, las entradas J K sepueden pensar como funciones del estado actual, es decir, de Qc, Qb y Qa. De esta manera,se derivan las expresiones booleanas para cada entrada J , K como funcion de Qc, Qb yQa.

EstadoActualEstadoProximoEntradas necesarias par producir cambioQcQb Qa QcQb Qa JcKcJbKbJa Ka

0 0 0 0 0 1 0 X 0 X 1 X0 0 1 0 1 0 0 X 1 X X 10 1 0 0 1 1 0 X X 0 1 X0 1 1 1 0 0 1 X X 1 X 11 0 0 1 0 1 X 0 0 X 1 X1 0 1 1 1 0 X 0 1 X X 11 1 0 1 1 1 X 0 X 0 1 X1 1 1 0 0 0 X 1 X 1 X 1

Cuadro 9.2: Tabla de transiciones para un contador de tres bits.

En la Figura 9.1 estan los mapas K y las ecuaciones para cada una de las entradas JK. En la Figura 9.2 esta el diagrama logico que implementa este secuenciador.

120 CAPITULO 9. SECUENCIADORES DE ESTADO Y CONTROLADORES

00

01

13

02

0

X4

X5

X7

X6

1

00 01 11 10@

@@

Qc

QbQa �

�Jc = Qb Qa

00

11

X3

X2

0

04

15

X7

X6

1

00 01 11 10@

@@

Qc

QbQa '

&

$

%Jb = Qa

10

X1

X3

12

0

14

X5

X7

X6

1

00 01 11 10@

@@

Qc

QbQa'

&

$

%Ja = 1

X0

X1

X3

X2

0

04

05

17

06

1

00 01 11 10@

@@

Qc

QbQa �

�Kc = Qb Qa

X0

X1

13

02

0

X4

X5

17

06

1

00 01 11 10@

@@

Qc

QbQa '

&

$

%Kb = Qa

X0

11

13

X2

0

X4

15

17

X6

1

00 01 11 10@

@@

Qc

QbQa'

&

$

%Ka = 1

Figura 9.1: Mapas K y ecuaciones J K.

Figura 9.2: Contador sincronico de tres bits.

9.3. SECUENCIADORES DE ESTADO 121

9.2.1. Contadores sincronicos comercialmente disponibles

Existen varias modalidades de contadores sincronicos disponibles en chips TTL. Mu-chos de estos pueden ser cargados paralelamente para empezar el contador con un valorespecıfico. Algunos contadores tienen entradas de control que permiten la seleccion de lasecuencia de conteo ascendente o descendente.

El 74161 y el 74163 son contadores sincronicos de 4 bits. A diferencia del contador derizado de 4 bits 7493, estos contadores cambian de estado en el flanco delantero del relojde entrada en lugar del flanco posterior. El 74161 tiene una entrada de borrado asincronicoque puede ser usada para modificar la longitud del conteo de manera similar a la ilustradaen el Capıtulo ?? para contadores de rizado. Desafortunadamente esta tecnica tambienproduce impulsos con los contadores sincronicos en forma similar a la de los contadoressincronicos. Para evitar este problema, el 74163 tiene una entrada de borrado sincronico,la cual borra el contador hasta la proxima senal de reloj que sigue a la activacion de lasenal. Por ejemplo, suponga que se ha agregado logica de modo que se active la senal deborrado cuando se llegue al estado 4. Aunque la senal de borrado se activa un instantedespues de cambiar al estado 4, la operacion de borrado no ocurrira sino hasta que sepresente el siguiente flanco delantero del reloj.

Para ilustrar el uso de este borrado sincronico, suponga que se necesita un contadordivisor por 5. Este contador tiene 5 estados, desde 0 hasta 4. Como se vio en el Capıtulo8, la secuencia de conteo debe modificarse de modo que el contador pase del estado 4 alestado 0 en lugar de pasar del estado 4 al estado 5. El metodo estudiado en el Capıtulo8 utilizo la entrada de borrado asincronico para borrar el contador en el instante quecambiaba al estado 5. La breve existencia del estado 5 es por supuesto, un salto o unimpulso. Con la entrada del borrado sincronico, la senal se activa al llegar al estado 4 yla operacion tiene lugar cuando se presente el proximo pulso de reloj. En este pulso, elcontador es borrado en lugar de cambiar a 5.

9.3 SECUENCIADORES DE ESTADO

Segun se menciono en la Seccion ??, un contador sincronico es simplemente un secuen-ciador con una secuencia de estados numericamente ascendente. Por tanto, el diseno deun secuenciador general es similar al diseno de un contador sincronico.

Supongamos que se debe generar la secuencia mostrada en el diagrama de estado de laFigura 9.3.

Se requieren tres flip flops para representar los tres bits del estado posible mas alto: eneste ejemplo, el estado 7.

El siguiente paso es la construccion de la tabla de transicion, la cual se muestra en laTabla ??.

Como antes, los valores de J K son los requeridos para lograr que cada flip flop efectue

122 CAPITULO 9. SECUENCIADORES DE ESTADO Y CONTROLADORES

Figura 9.3: Diagrama de estado de un secuenciador de estado.

la transicion apropiada. En la Figura 9.4 se muestra la derivacion de las ecuaciones. Eldiagrama logico para implementar este contador se muestra en la Figura 9.5.

9.3.1. Estados no utilizados

Para el secuenciador definido por el diagrama de estado de la Figura 9.3, los estados 3,5y 6 no se muestran. Puesto que estos estados no son parte de la secuencia, las expresionespara J y K se pueden hacer mas simples omitiendolos de la Tabla de transicion (supresencia resultarıa en condiciones “no importa” en los mapas K). Pero si el secuenciadorse energiza en uno de estos estados no utilizados, ?´que sucederıa en los ciclos de relojsucesivos? Generalmente, despues de que se completa el diseno, se determina la secuenciaa partir de cada estado no utilizado y se agrega a la Tabla de transicion y al diagrama deestado.

La secuencia a partir de un estado no utilizado se determina asumiendo que el estadopresente de las salidas es uno de los no utilizados. Calculando las entradas J y K a cadaflip flop a partir de las ecuaciones, se puede determinar el maximo estado para flip flop.Las Figuras 9.6, 9.7 y 9.8 ilustran este proceso para los estados 3, 5 y 6 respectivamente.

Como puede verse, el estado 3 pasa al estado 4, el cual pertenece a la secuencia normal.El estado 6 pasa al estado 0, el cual tambien pertenece a la secuencia normal. Estastransiciones deben agregarse al diagrama de estado original, segun se muestra en la Figura9.9.

Si un estado no utilizado nunca entra al ciclo normal o si algunos estados no utilizadosdeben entrar a un estado especıfico del ciclo, deben incluirse esas transiciones de estadoen la Tabla de transiciones del diseno original y en las expresiones para las entradas J K.

9.3. SECUENCIADORES DE ESTADO 123

00

01

X3

12

0

X4

X5

X7

X6

1

00 01 11 10@

@@

Qc

QbQa '

&

$

%Jc = Qb

00

11

X3

X2

0

14

X5

X7

X6

1

00 01 11 10@

@@

Qc

QbQa '

&

$

%��

��

Jb = Qc + Qa

10

X1

X3

02

0

14

X5

X7

X6

1

00 01 11 10@

@@

Qc

QbQa'

&

$

%Ja = Qb

X0

X1

X3

X2

0

04

X5

17

X6

1

00 01 11 10@

@@

Qc

QbQa '

&

$

%Kc = Qb

X0

X1

X3

12

0

X4

X5

17

X6

1

00 01 11 10@

@@

Qc

QbQa'

&

$

%Kb = 1

X0

11

X3

X2

0

X4

X5

17

X6

1

00 01 11 10@

@@

Qc

QbQa'

&

$

%Ka = 1

Figura 9.4: Reducciones con mapas K y ecuaciones J K.

Figura 9.5: Diagrama logico del secuenciador de la Figura 9.4.

Estado actual Entradas J Entradas K Q Proximo EstadoQc 0 Jc = Qb = 1 Kc = Qb = 1 Qc cambia 1Qb 1 Jb = Qa + Qc = 1 Kb = 1 Qb cambia 0Qa 1 Ja = Qb = 1 Ka = 1 Qa se borra 0

Figura 9.6: Determinacion de siguiente estado a partir del estado 3.

124 CAPITULO 9. SECUENCIADORES DE ESTADO Y CONTROLADORES

Estado actual Entradas J Entradas K Q Proximo EstadoQc 1 Jc = Qb = 0 Kc = Qb = 0 Qc no cambia 1Qb 0 Jb = Qa + Qc = 1 Kb = 1 Qb cambia 1Qa 1 Ja = Qb = 1 Ka = 1 Qa cambia 0

Figura 9.7: Determinacion de siguiente estado a partir del estado 5.

Estado actual Entradas J Entradas K Q Proximo EstadoQc 1 Jc = Qb = 1 Kc = Qb = 1 Qc cambia 0Qb 1 Jb = Qa + Qc = 1 Kb = 1 Qb cambia 0Qa 0 Ja = Qb = 0 Ka = 1 Qa cambia 0

Figura 9.8: Determinacion de siguiente estado a partir del estado 6.

Figura 9.9: Diagrama de estado final.

9.3. SECUENCIADORES DE ESTADO 125

Figura 9.10: Diagrama de estado.

9.3.2. Secuenciadores con control externo

En ocasiones la secuencia de estados generada debe ser alterada por entradas externas.En estas aplicaciones, el estado que sigue depende no solamente del estado actual sinotambien de las entradas externas. Por tanto, las ecuaciones para las entradas J K debenser funcion no solamente del estado actual sino de las entradas externas. Consideremosun sistema con dos ciclos. Un ciclo va de 0 a 2 y el segundo ciclo va de 3 a 5. La entradaexterna Y se utiliza para determinar cual ciclo debe ejecutarse. Si Y es 0, debe ejecutarseel primer ciclo y si Y es 1, debe ejecutarse el segundo ciclo. El primer ciclo entra y salesolamente por el estado 0; el segundo ciclo entra y sale por el estado 3.

Este comportamiento se muestra en el diagrama de estado de la Figura 9.10 En la Tabla?? se muestra la Tabla de transicion.

La determinacion de las expresiones reducidas se muestra en la Figura 9.11. El disenodel diagrama logico y la determinacion de las transiciones no utilizadas se dejan comoejercicio al lector.

126 CAPITULO 9. SECUENCIADORES DE ESTADO Y CONTROLADORES

00

01

03

02

00

X4

X5

X7

X6

01

X12

X13

X15

X14

11

08

09

111

010

10

00 01 11 10@

@@

Y Qc

QbQa

�Jc = Y Qb Qa

00

11

X3

X2

00

04

15

X7

X6

01

012

113

X15

X14

11

18

19

111

X10

10

00 01 11 10@

@@

Y Qc

QbQa '

&

$

%��

��

Jb = Y Qc + Qa

10

X1

X3

02

00

14

X5

X7

X6

01

112

X13

X15

X14

11

18

X9

111

010

10

00 01 11 10@

@@

Y Qc

QbQa'

&

$

%

'

&

$

%Ja = Qb + Qa

X0

X1

X3

X2

00

04

15

X7

X6

01

012

113

X15

X14

11

X8

X9

X11

X10

10

00 01 11 10@

@@

Y Qc

QbQa '

&

$

%Kc = Qa

X0

X1

13

12

00

X4

X5

X7

X6

01

X12

X13

X15

X14

11

X8

X9

X11

110

10

00 01 11 10@

@@

Y Qc

QbQa'

&

$

%Kb = 1

X0

11

13

X2

00

X4

05

X7

X6

01

X12

013

X15

X14

11

X8

19

X11

X10

10

00 01 11 10@

@@

Y Qc

QbQa

& %

' $Ka = Qc

Figura 9.11: Reducciones por mapas K y ecuaciones JK.

Capıtulo 10

Registros

Conceptos basicos

Estructura de un registroRegistros de desplazamientoEntradas y salidas de un registroEntradas o salidas serie o paraleloInterfaces de registros con otros sistemasRegistros disponibles comercialmente

Saber HacerReconocer la estructura de un registroReconocer la necesidad de utilizacion de un registro

127

128 CAPITULO 10. REGISTROS

Figura 10.1: Registro de cuatro bits que usa flip flops D

10.1 DEFINICION

En general, un registro es un circuito secuencial que puede ser colocado en un estadoespecial y retener ese estado hasta que sea cambiado externamente. Este estado puede serun valor binario de varios bits en un computador, una direccion en un bus o aun, un bitunico representado por un LED que debe prender o apagar.

10.2 DISENO DE LOS REGISTROS

El latch S R discutido en el capıtulo 6 es realmente un registro simple de un bit. Conla entrada S, la salida del latch se puede colocar en 1. Con la entrada R, la salida del latchse puede colocar en 0. En ambos casos, la salida permanece con el mismo valor hasta quesea cambiado externamente.

Generalmente se desea tener una sola lınea de datos en lugar de lıneas separadas, comoen el latch S R. Por ejemplo, podemos usar el flip flop D como un registro de 1 bit.

Con el flip flop cuadruple D 7474 utilizado en el laboratorio, la salida cambia de estadoen el vertice delantero del reloj de entrada. Puesto que la entrada de reloj determinacuando cambia de estado el flip flop, puede considerarse una senal de cargue. En el flancodelantero de esta senal de cargue, el dato que esta en la entrada se almacena en el flip flop.

10.2.1. Registros de bits multiples

Los registros de un bit obviamente tienen aplicacion limitada. ¿Como puede construirseun registro de varios bits? En la Figura 10.1 se muestra un registro de 4 bits hecho decuatro flip flops D. Cada flip flop almacena 1 bit. La entrada de reloj a cada flip flopproviene de una senal de cargue comun. En el flanco delantero de la senal de cargue, cadaflip flop almacena el valor que esta en la entrada D. Se pueden construir registros con masbits, agregando un flip flop por cada bit adicional.

10.2. DISENO DE LOS REGISTROS 129

Figura 10.2: Registro de desplazamiento de cuatro bits con entrada serial y con salidaparalela

10.2.2. Registros de Desplazamiento

Los datos son cargados paralelamente en los registros multi bits discutidos anterior-mente, segun puede verse en la Figura 10.1. Pero en muchas aplicaciones, los datos noestan disponibles en un formato paralelo; por ejemplo, considere el problema de recibirserialmente un valor de 4 bits. En esta aplicacion, los datos vienen en una sola lınea, 1 bitcada vez. Suponga que los datos son enviados de tal forma que en primer lugar aparece elbit menos significativo y que una senal de reloj es activada cuando cada bit esta disponible.El circuito receptor necesita ejecutar una conversion serial a paralelo, almacenando cadabit a medida que se recibe y luego de alguna manera, presentar el valor resultante de 4bits.

En la Figura 10.2 se muestra un circuito que ejecutara la conversion serial a paralelo.Como puede verse, la entrada D al primer flip flop es la lınea serial de los datos de entrada.La entrada de datos a cada flip flop adicional es la salida del flip flop anterior. La senal“bit disponible” va a la entrada del reloj de cada flip flop. Cuando esta senal se activa,cada flip flop cargara el dato que esta en su entrada D. Debido a las conexiones, el primerflip flop almacenara el valor de la entrada serial y cada flip flop adicional almacenara lasalida del flip flop precedente. Por tanto, el valor de 4 bits representado por los 4 flip flops,se desplaza una posicion a la derecha y la posicion de la izquierda se llena con el bit serialque llega. Si esta operacion se repite cuatro veces, el primer bit recibido estara disponibleen Qa, el segundo en Qb, etc.

El circuito mostrado en la Figura 10.2 es realmente un registro de desplazamiento de 4bits. En un registro de desplazamiento normal, a la entrada “bit disponible” tıpicamentese le llama entrada de reloj. El registro de desplazamiento mostrado en la Figura 10.2tiene una entrada en serie y una salida en paralelo, puesto que los datos son cargadosserialmente y quedan disponibles en paralelo en las salidas.

Un registro de desplazamiento con entrada en serie y salida en paralelo, puede ejecutarla conversion “serie a paralelo” necesaria para recibir la informacion serial pero ?´Como seejecuta la conversion “paralelo a serial” necesaria para enviar los datos en forma serial? Enesta aplicacion, los datos son almacenados en el registro en paralelo y desplazados haciaafuera a razon de un bit cada vez. Esto se puede efectuar con un registro de desplazamientocon entrada en paralelo y salida en serie.

130 CAPITULO 10. REGISTROS

Figura 10.3: Registro de desplazamiento de cuatro bits con entrada paralela y salida serial

En general, la operacion de desplazamiento se ejecuta conectando la entrada de cadaflip flop a la salida del flip flop anterior, segun se muestra en la Figura 10.2. Pero conun registro de desplazamiento con entrada en paralelo y salida en serie, debemos estaren capacidad de colocar un valor externo en la entrada D de cada flip flop anterior paraejecutar el desplazamiento o una entrada de datos externa para cargar el registro enparalelo. Seleccionar una de dos fuentes se puede llevar a cabo facilmente usando unmux de 2 a 1, como se mostro en el capıtulo 3. Debido a este requisito de seleccion, serequiere una segunda entrada de control, ademas del reloj, con el fin de determinar sidebe desplazarse o cargarse. En la Figura 10.3 se muestra un registro de desplazamientocon entrada paralela y salida serial. La seleccion entre el desplazamiento y el cargue enparalelo se ejecuta por medio de la lınea “desplazamiento/cargue”.

Los anteriores terminos indican que se ejecuta un desplazamiento si la lınea esta bajay se efectua un cargue en paralelo, si la lınea esta alta. Utilizando 4 flip flops 7474 comolos utilizados en el laboratorio, la operacion de cargue o de desplazamiento tendra lugaren el flanco de subida de la senal del reloj. La salida serial del registro de desplazamientoesta sobre Qa. Puesto que algo debe desplazarse hacia el flip flop en una operacion de de-splazamiento, un registro de desplazamiento con entrada paralela generalmente tendra unaentrada serial, segun se muestra en la figura 10.3.

Para usar el registro de desplazamiento que transmita serialmente una palabra de 4 bits,la lınea desplazamiento/cargue se coloca en alto y se carga el valor de 4 bits en el registroen el primer ciclo del reloj. En este momento, el bit menos significativo estara disponibleen la salida; antes del siguiente ciclo del reloj, la lınea desplazamiento/cargue se regresa a“bajo” de modo que en los ciclos sucesivos del reloj, el valor de 4 bits sera desplazado ala derecha y el siguiente bit quedara disponible a la salida.

10.2.3. Latches Transparentes

Con los registros discutidos hasta ahora, los valores son almacenados con base en unreloj o senal de cargue. El valor de salida cambia solamente cuando se carga un valor nuevoen el flanco del reloj. Otro tipo de registro, denominado comunmente “latch transparente”,opera de una manera ligeramente diferente. En lugar de una senal de reloj o de cargue,el latch transparente tiene una compuerta o entrada de habilitacion. Cuando se habilita,

10.3. INTERFACES DE REGISTROS CON OTROS MODULOS 131

las salidas del latch toman el valor de la entrada. Excepto por el retardo de propagaciondel latch, este es transparente. Cuando no esta habilitado, las salidas permanecen en elmismo estado como estaban en el instante en que desaparecio la senal de habilitacion.Por ejemplo, suponga que existe un latch transparente con una habilitacion activa alta.Mientras esta habilitacion esta alta, las salidas toman el valor de las entradas; cuandola lınea de habilitacion esta baja, las salidas permanecen en el estado existente cuandola lınea estaba baja. Notese la similitud con el latch S R controlado por la compuerta,discutido anteriormente.

Los latches transparentes tienen varias aplicaciones. Por ejemplo, para reducir el numerode pines de un integrado, algunos microprocesadores multiplexan las lıneas de datos conlas lıneas de direccion, es decir, los mismos pines se usan tanto para el bus de direccionescomo para el bus de datos. Durante la mitad de un ciclo del reloj maestro, los pinesrepresentan la direccion a la cual se esta accediendo. Durante la otra mitad del ciclo, esosmismos pines representan las lıneas de datos. Con este tipo de procesador, puede usarseun latch transparente para mantener el valor original de las lıneas de direccion durante lasegunda mitad del ciclo cuando esas mismas lıneas se vuelven lıneas de datos.

10.3 INTERFACES DE REGISTROS CON OTROS MODULOS

Hemos considerado el diseno y la operacion de los registros, pero ?´como incorporaresos registros en un circuito digital? Con el fin de ilustrar las aplicaciones y las tecnicasde realizacion de interfaces, se conectara un registro a un sistema microprocesador.

Supongamos que este microprocesador tiene un bus de direcciones de 16 bits para eldireccionamiento de la memoria y de los perifericos. En el capıtulo 5 se ilustro un esquemasencillo de decodificacion de direcciones usando un decodificador para habilitar uno de 4chips RAM. Basados en la direccion, el decodificador acciona la lınea de habilitacion delchip RAM apropiado. Asumiremos un esquema similar de decodificacion de direccionespara interconectar el registro al microprocesador. Cuando el microprocesador se dirijaal registro, la lınea de habilitacion de este tomara el valor bajo. A esto lo llamaremoshabilita. Se usara un bus de 8 bits para transmitir datos desde el procesador y hacia el.La lınea lea tomara el valor bajo cuando el microprocesador hace la lectura del dispositivoseleccionado y la lınea escriba tomara el valor bajo cuando el microprocesador escriba eldispositivo seleccionado. Para sincronizar los eventos existe una senal del reloj maestro,MCLK. La direccion (y por tanto, la senal habilita) y las senales lea y escriba se vuelvenvalidas durante la primera mitad del ciclo MCLK. El microprocesador lee el bus de datosen el flanco descendente de MCLK. Los datos escritos procedentes del microprocesadorson validos en el flanco descendente de MCLK. Por tanto, los perifericos deben almacenarlos datos procedentes del bus de datos en el flanco descendente del MCLK. La Figura 10.4incluye la informacion sobre tiempos.

132 CAPITULO 10. REGISTROS

Figura 10.4: Temporizacion del microprocesador

Figura 10.5: Temporizacion del cargue del registro.

10.3.1. Interfaz de un Registro de Escritura Solamente

Un registro externo tiene muchos usos en un sistema con microprocesador. Por ejemplo,podra usarse la salida de un registro de 8 bits para manejar 8 LED indicadores. El mi-croprocesador podra iluminar cualquier combinacion en los LED almacenando diferentesvalores en el registro; aquı el procesador unicamente escribe en el registro. ?´Como seinterconectan el microprocesador y el registro en este tipo de aplicacion?

La primera preocupacion es cuando cargar el registro con los datos del bus de datos.Obviamente que esto debe hacerse solamente cuando el microprocesador esta escribiendoen el registro. Cuando esto ocurre, la lınea escriba baja y la lınea habilita para el registrotambien baja, puesto que la direccion que esta en el bus es la del registro. Si estas doslıneas estan bajas, el registro debe cargarse con los datos del bus de datos en el flancodescendente de MCLK. Los registros disenados en la seccion ?? cargaban los datos en elflanco ascendente del reloj. Nos referimos a esta senal como “Cargue”. Los requisitos deinterconexion se pueden resumir como sigue: Si escriba es bajo y habilita es bajo, entoncesen el flanco descendente de MCLK, “Cargue” debe volverse alta para cargar el registro.Esta secuencia podra ocurrir como se muestra en la Figura 10.5.

Ahora que estan definidos los requisitos de tiempo de la interfaz, ?´como puede gener-arse la senal “cargue”? En la Figura 10.5 vemos que si escriba esta baja, habilita esta bajay MCLK esta alta, entonces la lınea “cargue” debe bajar. Esto es simplemente la funcionNAND, segun se muestra en la Figura ??. Inspeccionando el circuito, vemos que “car-gue” baja solo cuando escriba y habilita estan bajas y MCLK esta alto. Tan pronto comoMCLK baja, “cargue” sube para escribir en el registro segun se desea.

10.3. INTERFACES DE REGISTROS CON OTROS MODULOS 133

Figura 10.6: Generacion de la senal de cargue

10.3.2. Interfaz de un registro de lectura solamente

Otros usos de los registros incluyen aplicaciones en las que un evento externo almacenaun valor en el registro para ser leıdo mas tarde por el microprocesador. Por ejemplo,consideremos un circuito de codificacion del teclado para un teclado numerico sencillo.Este circuito convierte el cierre de una tecla en un valor binario que representa la teclaoprimida, almacena este valor en un registro y luego le senala al microprocesador que yaesta disponible un nuevo valor. El microprocesador entonces lee el registro para obtenerel valor de la tecla pulsada.

Los requisitos de interconexion son muy diferentes de los vistos para escribir en unregistro en la seccion ??. ?´Como podemos generar una senal para leer el registro en elmomento apropiado? Recordemos que las salidas del registro son simplemente las salidasde los flip flops. Estas salidas estan siempre encendidas. Si un flip flop esta almacenandoun 1, la salida sera 1. ?´Como podemos leer selectivamente este registro si la salida siempreesta encendida?

Para responder a esta pregunta, miremos el funcionamiento del bus de datos. Cuandoel microprocesador esta escribiendo, sus salidas estan manejando el bus de datos: ningunotro dispositivo esta intentando colocar un valor en el bus de datos. De forma similar,cuando el microprocesador esta leyendo, solamente las salidas del dispositivo seleccionadoestan manejando el bus de datos. El unico momento en que las salidas de un dispositivodeben conectarse al bus de datos debe ser cuando el microprocesador esta tomando lalectura de ese dispositivo. En cualquier otro momento, las salidas del dispositivo debenestar efectivamente desconectadas del bus de datos. La pregunta obvia es ?´como hacerpara desconectar las salidas del bus de datos?

Recordemos del capıtulo ?? la existencia de compuertas con salidas de tres estados.Estas salidas pueden asumir los estados normales 0 y 1 pero adicionalmente, pueden asumirun tercer estado que parece un circuito abierto como si nada estuviese allı. Cuando lasalida esta en el tercer estado, efectivamente se desconecta del circuito. Para conectar eltercer estado, se usa una lınea de habilitacion. Cuando se habilita, la salida asume losvalores normales uno o cero. Cuando no se habilita, la salida esta en el tercer estado odesconectada. Se puede conseguir la habilitacion activa alta como la activa baja.

En la Figura 10.7 se muestra un registro de 4 bits con cuatro compuertas de tercerestado en las salidas. Estas compuertas simplemente pasan el valor de la entrada a la

134 CAPITULO 10. REGISTROS

Figura 10.7: Registro de cuatro bits con salidas de tercer estado

Figura 10.8: Temporizacion de la lectura del registro

salida con la capacidad de habilitar o deshabilitar la salida. Estas compuertas a menudose les denominan “buffers” de tercer estado.

Estos “Buffers” estan disponibles en chips TTL. Por ejemplo, el 74367 tiene 6 de estosbuffers en un chip. El 74368 contiene seis inversores de tercer estado. El 74LS244 tiene 8 deestos buffers en un solo chip y es especialmente util en aplicaciones con microprocesadoresde 8 bits.

Usando buffers de tercer estado, podemos conectar la salida de un registro al bus dedatos, operacion que debe efectuarse solo cuando el microprocesador esta haciendo lalectura de ese registro.

Cuando esto ocurre, la lınea Lea baja ası como tambien la lınea habilita de ese registropuesto que la direccion que esta en el bus corresponde a ese registro. La salida del registrodebe conectarse al bus de datos antes del flanco descendente de MCLK que es cuando elprocesador realiza la lectura del valor del bus. Para conectar el registro al bus, simple-mente habilitamos las salidas de los buffers de tercer estado. Asumiremos que la lınea dehabilitacion es activa baja como en la Figura 10.7. La secuencia de eventos podra ocurrirsegun se muestra en la Figura 10.8. Como puede verse, la habilitacion de salida baja solocuando lea y habilita estan bajas y MCLK esta alto.

Durante este tiempo, la salida del registro se conectara al bus de datos y por tantoseran validos en el flanco descendente de MCLK. La generacion de la senal habilita essimplemente una operacion NAND segun se muestra en la Figura 10.9.

10.4. REGISTROS DISPONIBLES COMERCIALMENTE 135

Figura 10.9: Generacion de la senal para habilitar la salida

10.3.3. Conectando un Registro de Lectura/Escritura

Algunas aplicaciones utilizan un registro como una celda de memoria rapida; un ejemplolo constituyen los registros de propositos generales del computador. En estas aplicacionesse lee el registro e igualmente se escribe en el. La misma direccion se usa tanto para leercomo para escribir, determinandose entonces mediante Lea o escriba cual es la operacionque se va a efectuar. Simplemente combinando los circuitos definidos en las secciones ??y ?? se puede obtener el circuito para esta aplicacion.

10.4 REGISTROS DISPONIBLES COMERCIALMENTE

Se dispone de muchas variaciones de registros en los chips TTL. El 74175 es un registrode 4 bits que utiliza cuatro flip flops D como los de la Figura 10.1 . El 74174 es similaral 74175 pero tiene seis bits mientras que el 74273 tiene 8 bits. Ademas de las lıneas dedatos y una entrada de reloj, cada uno de estos registros tiene una entrada de borradopara iniciar el registro en cero. A fin de reducir los requisitos de interconexion, el registrode 8 bits 74LS377 tiene una entrada de habilitacion ası como una de reloj para almacenarlos datos. A menos que la lınea de habilitacion sea baja, la entrada del reloj se ignora. Elregistro de 8 bits 74LS364 tiene salidas de tercer estado, que eliminan la necesidad de tenerun chip con buffer separado. El 74LS363 es similar al 74LS364, solo que tiene un latchtransparente. En lugar de tener una entrada de reloj tiene una entrada de habilitacion.

Los registros de desplazamiento estan disponibles en una gran variedad. El 7495 es unregistro de desplazamiento de 4 bits con entrada paralela y salida paralela.

Este registro se puede cargar paralelamente o se puede desplazar serialmente del mismomodo que el registro de desplazamiento mostrado en la Figura 10.3.

136 CAPITULO 10. REGISTROS

Capıtulo 11

Aplicaciones Secuenciales enVHDL

Conceptos basicos

Flip-FlopsContadoresSecuenciadoresMaquinas de EstadoRegistros

Saber HacerDescribir en VHDL un sistema secuencialSimular el comportamiento del circuito

137

138 CAPITULO 11. APLICACIONES SECUENCIALES EN VHDL

11.1 FLIP-FLOPS

11.2 Los procesos de VHDL

Los dispositivos de logica secuencial necesitan todos para su implementacion del mecan-ismo del proceso (“process”) de VHDL. La forma general de un proceso en VHDL es lasiguiente:

PROCESS (lista de sensibilidad)Declaraciones de variables

BEGINProposiciones secuenciales

END PROCESS

Un proceso se ejecuta cuando cualquiera de las senales incluidas en la lista de sensibili-dad que va en el encabezado cambia. Dentro del cuerpo del proceso se puede manejar cualde las senales fue la que cambio por medio del atributo EVENT que se le puede agregar auna senal; por ejemplo, clock’ EVENT, es una condicion que se vuelve verdadera cuandola senal clock cambia de valor.

11.3 Los Flip-Flops

En el ejemplo que sigue incluimos varias implementaciones de flip-flops tipo D, paralos cuales se ha seleccionado que el disparo se haga en el lado delantero del reloj.

1 library ieee; use ieee.std_logic_1164.all;23 entity DFFs is port(4 D, Clock , Reset , Enable : in std_logic;5 Q1 , Q2 , Q3 , Q4 : out std_logic);6 end DFFs;78 architecture behavior of DFFs is begin9 -- Flip flop D

10 process11 begin12 wait until (Clock ’event and Clock=’1’);13 Q1 <= D;14 end process;15

11.4. REGISTRO 4 BITS 139

16 -- Flip -Flop D con reset sincronico

17 process18 begin19 wait until (Clock ’event and Clock=’1’);20 if reset = ’1’21 then Q2 <= ’0’;22 else Q2 <= D;23 end if;24 end process;2526 -- Flip -Flop D con reset asincronico

27 process (Reset ,Clock)28 begin29 if reset = ’1’ then30 Q3 <= ’0’;31 elsif (clock ’ event and clock=’1’) then32 Q3 <= D;33 end if;34 end process;3536 -- Flip -Flop D con reset y habilitacion asincronicos

37 process (Reset ,Clock)38 begin39 if reset = ’1’ then40 Q4 <= ’0’;41 elsif (clock ’EVENT AND clock=’1’) then42 if Enable = ’1’ then Q4 <= D;43 end if;44 end if;45 end process;4647 end behavior;48

Listado 11.1: Flip-Flops.

11.4 Registro 4 bits

Como puede observase en la tabla que describe el comportamiento del circuito, siCLR = 0, las salidas Q adoptan el valor de 0; pero si CLR = 1, toman el valor delas entradas D0, D1, D2 y D3.

El codigo del programa se observa en el siguiente listado.

140 CAPITULO 11. APLICACIONES SECUENCIALES EN VHDL

1 library ieee; use ieee.std_logic_1164.all;23 entity reg4 is port(4 D : in std_logic_vector (3 downto 0);5 CLR , CLK : in std_logic;6 Q, Qn : inout std_logic_vector (3 downto 0));7 end reg4;89 architecture a_reg4 of reg4 is begin

10 process (CLK , CLR)11 begin12 if (CLK ’event and CLK = ’1’) then13 if (CLR = ’1’) then14 Q <= D;15 Qn <= not Q;16 else17 Q <= "0000";18 Qn <= "1111";19 end if;20 end if;21 end process;22 end a_reg4;23

Listado 11.2: Registro de 4 bits.

Las variables sensitivas que determinan el comportamiento del circuito se encuentrandentro del proceso (CLR y CLK).

11.5 Contador binario de 4 bits

La senal de control Up/Down permite definir si el conteo se realiza en sentido ascendenteo descendente. En este caso, un cero aplicado a esta senal determina una cuenta ascendente:del 0 al 15. De esta forma, el funcionamiento del circuito queda determinado por dossenales: el pulso de reloj (clk) y la senal Up/Down, como se muestra en el siguienteprograma.

1 library ieee; use ieee.std_logic_1164.all; use2 ieee.std_logic_signed.all;3

11.6. MAQUINA DE ESTADOS FINITA 141

4 entity contador is port(5 clk : in std_logic;6 up : in std_logic;7 Q : inout std_logic_vector (3 downto 0));8 end contador;9

10 architecture a_contador of contador is begin11 process (up, clk)12 begin13 if (clk ’event and clk = ’1’) then14 if (up = ’0’) then15 Q <= Q + 1 ;16 else17 Q <= Q - 1;18 end if;19 end if;20 end process;21 end a_contador;22

Listado 11.3: Contador binario de 4 bits.

11.6 Maquina de estados finita

En la figura se puede observar que el circuito pasa al estado q1 con el primer 1 deentrada (x) y al estado q2 con el segundo. Las salidas (z) asociadas con estas dos entradasson 0, segun se senala. La tercera entrada consecutiva de 1 genera un 1 en la salida y haceque el circuito pase al estado q3. Una vez que se encuentre en q3, el circuito permanecera eneste estado, emitiendo salidas O.

Las ideas nuevas de VHDL, provienen de usar estructuras case - when y tipo de datosenumerados, que en este caso contiene los cinco estados (q0, q1, q2, q3 y q4) que componenel diagrama.

El listado correspondiente al programa se encuentra a continuacion.

1 library ieee; use ieee.std_logic_1164.all;23 entity diag is port(4 clk , x : in std_logic;5 z : out std_logic);6 end diag;7

142 CAPITULO 11. APLICACIONES SECUENCIALES EN VHDL

8 architecture a_diag of diag is9 type estados is (q0, q1 , q2 , q3 , q4);

10 signal estado_presente , estado_futuro : estados;11 begin12 proceso1: process (estado_presente , x)13 begin14 case estado_presente is15 when q0 => z <= ’0’;16 if x = ’0’ then17 estado_futuro <= q4;18 else19 estado_futuro <= q1;20 end if;21 when q1 => z <= ’0’;22 if x = ’0’ then23 estado_futuro <= q4;24 else25 estado_futuro <= q2;26 end if;27 when q2 =>28 if x = ’0’ then29 estado_futuro <= q4;30 z <= ’0’;31 else32 estado_futuro <= q3;33 z <= ’1’;34 end if;35 when q3 => z <= ’0’;36 if x = ’0’ then37 estado_futuro <= q3;38 else39 estado_futuro <= q3;40 end if;41 when q4 => z <= ’0’;42 if x = ’0’ then43 estado_futuro <= q4;44 else45 estado_futuro <= q1;46 end if;47 end case;48 end process proceso1;4950 proceso2: process (clk)51 begin52 if (clk ’event and clk = ’1’) then53 estado_presente <= estado_futuro;54 end if;

11.7. LAS LUCES DEL FORD 143

55 end process proceso2;56 end a_diag;57

Listado 11.4: Maquina de estados finita.

11.7 Las luces del Ford

Este ejemplo es tomado del libro de Wakerly. Se refiere al lector a dicho libro para masdetalles del problema. La maquina secuencial a desarrollar tiene 3 variables de entrada,denominadas left, right y haz, que corresponden a los controles de las senales de las lucesdireccionales. La maquina debe controlar seis luces de salida, tres a cada lado del vehıculoen la parte trasera, de tal modo que cuando se seleccione la senal left, por ejemplo, lasluces de salida deben mostrar primero 001000, luego 011000, luego 111000 y finalmente000000, y reiniciar la secuencia.

El diagrama de estados de la maquina pedida se muestra en la siguiente figura:

El programa correspondiente en VHDL se incluye a continuacion:

1 Library IEEE; use IEEE.std_logic_1164.all;23 entity vtbird is4 port ( CLOCK , RESET , LEFT , RIGHT , HAZ: in STD_LOGIC;5 LIGHTS: buffer STD_LOGIC_VECTOR (1 to 6) );6 end;78 architecture vtbird_arch of vtbird is9 constant IDLE: STD_LOGIC_VECTOR (1 to 6) := "000000";

10 constant L3 : STD_LOGIC_VECTOR (1 to 6) := "111000";11 constant L2 : STD_LOGIC_VECTOR (1 to 6) := "110000";12 constant L1 : STD_LOGIC_VECTOR (1 to 6) := "100000";13 constant R1 : STD_LOGIC_VECTOR (1 to 6) := "000001";14 constant R2 : STD_LOGIC_VECTOR (1 to 6) := "000011";15 constant R3 : STD_LOGIC_VECTOR (1 to 6) := "000111";16 constant LR3 : STD_LOGIC_VECTOR (1 to 6) := "111111";17 begin18 process (CLOCK)19 begin20 if CLOCK ’event and CLOCK = ’1’ then21 if RESET = ’1’ then22 LIGHTS <= IDLE;23 else24 case LIGHTS is

144 CAPITULO 11. APLICACIONES SECUENCIALES EN VHDL

25 when IDLE =>26 if HAZ=’1’or(LEFT=’1’ and RIGHT=’1’)then27 LIGHTS <= LR3;28 elsif LEFT=’1’ then29 LIGHTS <= L1;30 elsif RIGHT=’1’ then31 LIGHTS <= R1;32 end if;33 when L1 =>34 if HAZ=’1’ then35 LIGHTS <= LR3;36 else37 LIGHTS <= L2;38 end if;39 when L2 =>40 if HAZ=’1’ then41 LIGHTS <= LR3;42 else43 LIGHTS <= L3;44 end if;45 when L3 => LIGHTS <= IDLE;46 when R1 =>47 if HAZ=’1’ then48 LIGHTS <= LR3;49 else50 LIGHTS <= R2;51 end if;52 when R2 =>53 if HAZ=’1’ then54 LIGHTS <= LR3;55 else56 LIGHTS <= R3;57 end if;58 when R3 => LIGHTS <= IDLE;59 when LR3 => LIGHTS <= IDLE;60 when others => null;61 end case;62 end if;63 end if;64 end process;65 end vtbird_arch;66

Listado 11.5: Las luces del Ford.

11.8. SEMAFORO 145

11.8 Semaforo

Este ejemplo es tomado del libro de Floyd en el numeral 6.11, a donde puede referirse ellector para obtener mas detalles sobre el problema. A continuacion se muestra el programaVHDL de esta aplicacion:

1 LIBRARY ieee; USE ieee.std_logic_1164.ALL;23 ENTITY semaforos IS PORT (sensor ,reset ,clk: IN std_logic;4 semcamin ,semcarr: OUT std_logic_vector (0 TO 2));5 END semaforos;67 ARCHITECTURE descripcion OF semaforos IS8 TYPE estado IS9 (PrimerEstado ,SegundoEstado ,TercerEstado ,CuartoEstado);

10 CONSTANT verde : std_logic_vector (0 TO 2):="001";11 CONSTANT amarillo: std_logic_vector (0 TO 2):="010";12 CONSTANT rojo : std_logic_vector (0 TO 2):="100";13 SIGNAL presente: estado := PrimerEstado;14 SIGNAL rescont: boolean := false; --Pone a cero la cuenta

15 SIGNAL fin_largo ,fin_corto: boolean;--Indica fin de cuenta

16 SIGNAL cuenta: integer RANGE 0 TO 63;17 BEGIN1819 -- Definimos la maquina de estados: maquina:

20 PROCESS(clk ,reset)21 BEGIN22 IF reset=’1’ THEN23 presente <= PrimerEstado;24 ELSIF clk=’1’ AND clk ’event THEN25 CASE presente IS26 WHEN PrimerEstado=>27 IF sensor=’1’ and fin_largo THEN28 presente <= SegundoEstado;29 END IF;30 WHEN SegundoEstado=>31 IF fin_corto THEN32 presente <= TercerEstado;33 END IF;34 WHEN TercerEstado =>35 IF sensor = ’0’ or not fin_largo THEN36 presente <= CuartoEstado;37 END IF;38 WHEN CuartoEstado =>39 IF fin_corto THEN40 presente <= PrimerEstado;41 END IF;

146 CAPITULO 11. APLICACIONES SECUENCIALES EN VHDL

42 END CASE;43 END IF;44 END PROCESS maquina;45 salida: PROCESS(presente) -- No depende de las entradas

BEGIN

46 CASE presente IS47 WHEN PrimerEstado=>48 semcarr <= verde;49 semcamin <=rojo;50 rescont <=true;51 WHEN SegundoEstado=>52 semcarr <= amarillo;53 semcamin <=rojo;54 rescont <=true;55 WHEN TercerEstado=>56 semcarr <=rojo;57 semcamin <=verde;58 rescont <= false;59 WHEN CuartoEstado=>60 semcarr <=rojo;61 semcamin <= amarillo;62 rescont <=true;63 END CASE;64 END PROCESS salida;65 -- El siguiente proceso define el contador: contador: PROCESS

(clk)

66 BEGIN67 IF clk=’1’ THEN68 IF rescont THEN cuenta <=0;69 ELSE cuenta <= cuenta +1;70 END IF;71 END IF;72 END PROCESS contador;7374 -- Deteccion de los tiempos largos y cortos:

75 fin_largo <=true WHEN cuenta =29 ELSE false;76 fin_corto <=true WHEN cuenta =9 ELSE false;77 END descripcion;78

Listado 11.6: Semaforo.