You are on page 1of 113

Julio 19 de 2009

MODULO SISTEMAS DIGITALES BASICOS

MIGUEL PINTO APARICIO miguel.pinto@unad.edu.co

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD BUCARAMANGA 2009

INTRODUCCION
El curso de Circuitos Digitales Bsicos es del Campo de Formacin Profesional especfica para el programa de Tecnologa e Ingeniera Electrnica, Tecnologa e Ingeniera de Telecomunicaciones, y Tecnologa de Audio, con dos crditos acadmicos, es Terico y a distancia. Busca darle la capacidad de describir al estudiante de manera suficiente las nociones, los conceptos y los procedimientos necesarios para el anlisis y diseo de Circuitos Digitales. Este curso es un abre bocas al maravilloso mundo digital, y pretende dar una formacin bsica a los futuros diseadores digitales, que con dispositivos como PLDs, FPGAs, DSPs, etc. podrn llevar a la vida real aquellas ideas que le permitan interactuar al hombre con la mquina. La Electrnica Digital ha experimentado un rpido crecimiento tecnolgico; Los circuitos digitales son comnmente usados en productos de consumo, equipos industriales y de control, equipos de oficina, equipos mdicos, militares y de comunicaciones. Este uso extensivo de los circuitos digitales ha sido gracias a los avances tecnolgicos que han reducido los costos en los circuitos integrados y la capacidad de los mismos, as como la aplicacin de displays, memorias y tecnologa computarizadas. El curso consiste de dos Unidades, la primera detalla todos los conceptos bsicos, procedimientos y mtodos de reduccin de circuitos digitales; la segunda unidad es una fundamentacin en el uso del Lenguaje VHDL, el cual es empleado para el diseo asistido por Computador de los Circuitos Digitales. El enfoque para el aprendizaje autnomo de este curso es del tipo tericoprctico, en donde la teora es fcilmente llevada a la prctica por medio de talleres diseados para tal fin. De tal manera, que el estudiante pueda depurar su conocimiento y dominio del tema por medio de su aplicacin inmediata. Inicialmente el estudiante entender como desde una ecuacin Booleana se puede construir fsicamente un circuito digital y cmo estos cumplen con las operaciones bsicas del Algebra de Boole. Este enfoque ser gracias al estudio independiente que se desarrolla a travs del trabajo personal y del trabajo en pequeos grupos colaborativos de aprendizaje, y de acompaamiento tutorial desarrollado a travs de la tutora individual, en pequeos grupos colaborativos y de tutora en grupo de curso. As mismo busca fomentar la cultura investigativa y de lectura en el estudiante a travs del uso de tecnologas que faciliten el acceso a la informacin y la obtencin de fuentes bibliogrficas, de manera que fortalezca su aprendizaje autnomo. En cuanto al sistema de evaluacin del curso, este se basa en lo contemplado y definido en el Reglamente General Estudiantil, de forma que permita comprobar el nivel de avance del auto-aprendizaje alcanzado a lo largo del

curso. Por lo tanto, se emplearn tres tipos de evaluacin alternativas y complementarias: Autoevaluacin: evaluacin que realiza el estudiante para valorar su propio proceso de aprendizaje, la cual est implementada en el contenido en lnea del curso. Coevaluacin: se realiza a travs de los grupos colaborativos, y pretende la socializacin de los resultados del trabajo personal. Heteroevaluacin: Es la valoracin que realiza el tutor. Para el desarrollo del curso es importante el papel que juegan los siguientes recursos tecnolgicos como medio activo, buscando la relacin tutorestudiante: Mdulos y guas escritos para estudio temtico y orientacin pedaggica. El Computador como herramienta informtica para estudio con CD ROM, conexin a Internet y editores de texto. Sistemas y plataformas tecnolgicas institucionales para favorecer la comunicacin sincrnica, tales como; videoconferencia, Chat. Estas permiten encuentros presnciales directos o mediados, favoreciendo una interaccin inmediata. Y las comunicaciones asincrnicas tales como: Grupos de inters, pginas WEB, Correo electrnico, grupos de noticias. Estas permiten la comunicacin en forma diferida favoreciendo la disposicin del tiempo del estudiante para su proceso de aprendizaje. Para facilitar el auto-aprendizaje es necesario consultar la bibliografa recomendada, utilizar la biblioteca virtual y el acceso a Internet, con esto se est tambin potenciando en los estudiantes la capacidad de investigacin y de auto gestin para adquirir conocimiento segn sean sus necesidades y/ debilidades encontradas durante cada uno de los pasos del proceso a seguir, es decir el modelo pedaggico a desarrollar son las habilidades de pensamiento. El acceso a documentos adquiere una dimensin de suma importancia en tanto la informacin sobre el tema exige conocimientos y planteamientos preliminares, por tal razn es imprescindible el recurrir a diversas fuentes documentales y el acceso a diversos medios como son: bibliotecas electrnicas, hemerotecas digitales e impresas, sitios Web especializados. En la medida que el estudiante adquiera su rol, se interiorice y aplique los puntos abordados anteriormente, podr obtener los logros propuestos en este curso. Es importante ser consciente de las fortalezas y debilidades, prestando atencin a pulir las primeras y mejorar en las segundas, y lo mejor para llevarlo a cabo con Disciplina.

PRIMERA UNIDAD DIDCTICA

SISTEMAS DIGITALES BASICOS

CAPTULO 1 OPERACIONES BINARIAS Y CIRCUITOS DIGITALES

Leccin 1. Sistemas de Numeracin


Desde la antigedad el hombre ha tenido la necesidad de contar, y para hacerlo ha desarrollado diferentes sistemas de numeracin, como el Decimal, binario, Octal, etc; Estos sistemas de numeracin se diferencian entre s por la base que empleen, es decir, por el nmero de dgitos que empleen para contar. De tal forma que el sistema decimal tiene los dgitos 0,1,2,3,4,5,6,7,8,9; el sistema Octal tiene los dgitos 0,1,2,3,4,5,6,7; el sistema binario tiene los dgitos 0,1; de donde podemos concluir que la base del sistema decimal es 10, del sistema Octal es 8 y el sistema binario es 2. Cualquier sistema de numeracin que se emplee puede ser representado de la siguiente manera:
an an 1.....a2 a1a0 = ai bi = anb n + an 1b n 1 + ... + a1b1 + a0b 0
i=n 0

(Ecuacin No. 1)

Donde an an 1 ...a2 a1a0 representa la distribucin de los dgitos en el nmero representado por el sistema numrico, es decir, si hablamos del sistema decimal, a0 representara el dgito de las unidades, a1 representara el dgito de las decenas, a2 representara el dgito de las centenas, y as sucesivamente. En la sumatoria expresada en la Ecuacin No. 1, la i representa la posicin relativa del dgito en el nmero representado, y esta numeracin de la posicin se inicia desde 0 y en el sentido derecha a izquierda. Y el trmino bi , representa la base del sistema de numeracin empleado elevado a la i. El lado derecho de la Ecuacin No. 1 enfatiza la manera como los dgitos y la relacin de su posicin en el nmero representado puede llevarse a su valor numrico, es decir, sabemos que para el sistema decimal las unidades tienen un valor de 1, las decenas tienen un valor de 10, las centenas tienen un valor de 100, etc.; que es lo mismo que decir, que como las unidades estn en la posicin 0 del nmero es tener a la base (b=10) elevada a la posicin 0 ( b 0 = 100 = 1 ), las decenas estn en la posicin 1 entonces es tener b1 = 101 = 10 , las centenas estn en la posicin 2 entonces es tener b 2 = 102 = 100 , etc..

Ahora, si tenemos el valor de la posicin que le corresponde a cada dgito, entonces el dgito y su valor de posicin son multiplicados, y el producto de todos los dgitos y su valor son sumados para obtener el valor numrico del nmero representado. Esto lo podemos comprender en el siguiente ejemplo con el nmero en sistema decimal 2197:

2197 = 2*103 + 1*10 2 + 9*101 + 7 *100

Explicacin Tenemos el nmero 2197, el cual tiene el dgito 2 en la posicin tres, el dgito 1 en la posicin dos, el dgito 9 en la posicin uno y el dgito 7 en la posicin cero; tenemos en cuenta que este nmero est representado en base 10, por lo tanto, para expresarlo de forma numrica hacemos la sumatoria de cada dgito multiplicado por la base elevada a la posicin representativa del dgito en el nmero. De esta manera tenemos que

2197 = 2*1000 + 1*100 + 9*10 + 7 *1 = 2000 + 100 + 90 + 7 .


Podemos Observar otro ejemplo con la siguiente grfica:

La principal diferencia entre los diferentes sistemas numricos existentes, es la cantidad de dgitos que disponen para el proceso de contar, en la siguiente tabla se comparan los sistemas decimal, binario, octal, hexadecimal: DECIMAL BINARIO OCTAL HEXADECIMAL 1 1 1 1 2 10 2 2 3 11 3 3 4 100 4 4 5 101 5 5 6 110 6 6 7 111 7 7 8 1000 10 8 9 1001 11 9 10 1010 12 A 11 1011 13 B 12 1100 14 C 13 1101 15 D 14 1110 16 E 15 1111 17 F 16 10000 20 10 17 10001 21 11 18 10010 22 12 19 10011 23 13 20 10100 24 14

Leccin No 2 Sistema Octal


El sistema octal tiene 8 dgitos para su numeracin (0, 1, 2, 3, 4, 5, 6 y 7) por lo cual se considera que su base es 8. Un procedimiento sencillo para pasar del sistema decimal al octal es el siguiente: Tomemos como ejemplo la conversin del nmero decimal 1977 al sistema octal, para ello se realizarn divisiones sucesivas por 8 as:

Se toma en orden inverso a su aparicin el resultado final y los residuos correspondientes, de tal manera, que el correspondiente nmero en octal es 3671

Veamos otro ejemplo de conversin del sistema decimal al sistema octal: Nuevamente realizamos divisiones sucesivas por el nmero 8

Realicemos ahora el proceso contrario, convertir un nmero del sistema octal al sistema decimal, para ello recordaremos la Ecuacin No 1 y la aplicaremos para convertir el nmero 20078 al sistema decimal: Recordemos que tomamos el nmero 20078 y lo separamos por sus respectivos dgitos multiplicados por la base elevada a su posicin correspondiente asi: Nmero decimal = 2*83 + 0*82 + 0*81 + 7*80 Ahora, resolviendo las potencias, y teniendo en cuenta los trminos con multiplicandos cero tenemos: Nmero decimal = 2*512 + 0 + 0 + 7*1 Lo cual nos da como resultado: Nmero decimal = 1024 + 7 = 103110 Por lo tanto son equivalentes los nmeros 20078 Otra forma de hacerlo sera como sigue: 1. Ubicamos debajo de cada dgito del nmero en sistema octal su correspondiente base y exponente acorde a la posicin del dgito: 103110

2. Procedemos a multiplicar cada dgito con su respectivo base y exponente, para este caso obviaremos como ya vimos los dgitos cuyo valor es cero:

3. Procedemos a la sumatoria de los resultados lo cual nos confirma que son equivalentes los nmeros 20078 103110

Leccin No 3 Sistema Binario


Nosotros empleamos el sistema de numeracin decimal, es decir, empleamos la base 10 para contar, pero en el caso de los sistemas digitales, ellos slo tienen dos estados posibles, dos posibles dgitos, el 0 y el 1, por lo tanto, emplean el sistema binario. As que para poder expresar nuestro mundo en el mundo digital necesitamos representarlo en los requerimientos de este. Teniendo en cuenta la ecuacin No. 1 y conociendo que la base de los sistemas digitales es 2, se puede definir el valor numrico en decimal de un nmero binario de la siguiente manera:
an an 1...a2 a1a0 = an * 2n + an 1 * 2n 1 + ... + a2 * 22 + a1 * 21 + a0 * 20

(Ecuacin No. 2)

En donde, se mantiene que an an 1 ...a2 a1a0 representa el valor de cada dgito segn su posicin relativa, pero con una caracterstica especial, cada dgito slo puede tomar el valor 1 o el valor 0, lo que nos puede dar a entender que cada posicin de un dgito representado en un nmero binario tiene un valor fijo si este es uno, es decir, la posicin cero vale 1, la posicin uno vale 2, la posicin dos vale 4, la posicin cuatro vale 8, y as sucesivamente si vamos resolviendo las potencias que se muestran en la Ecuacin No. 2. Nota Importante: Antes de continuar, tenemos que definir para este mdulo (como es acostumbrado en casi todos los textos) que cuando tengamos un nmero representado, este debe ir acompaado de un subndice que nos indique el sistema numrico en el cual se est representando, es decir: si el subndice es 2, es porque es sistema Binario, ejemplo: 111012 si el subndice es 8, es porque es sistema Octal, ejemplo: 56038 si el subndice es 10, es porque es sistema Decimal, ejemplo: 985610 Como podemos observar de la Ecuacin 2, las posiciones de los dgitos tienen un peso numrico relacionado con una potencia de 2, es decir, ha medida que la posicin del dgito incrementa, su valor numrico se incrementa en potencias de dos:

110 , 210 , 410 , 810 , 1610 , 3210 , 6410 , 12810 , 25610 , 51210 ,........
Para convertir un nmero Decimal en un nmero Binario se puede implementar el mtodo explicado en el siguiente ejemplo:

Convertir el nmero 87510 al sistema Binario Para poder realizar la conversin de este nmero se busca la potencia de dos que sea igual o menor al nmero dado, en este caso es 51210 por lo cual se asume que la posicin nueve del nmero Binario ser un uno. Ahora slo tenemos en cuenta las unidades restantes entre el nmero original y la potencia encontrada, las cuales son 36310 . Para las 36310 unidades restantes, la potencia encontrada es 25610 por lo cual la octava posicin del nmero Binario ser un uno, y las unidades restantes en este caso son 10710 . Para las 10710 unidades restantes, la potencia encontrada es 6410 por lo cual la sexta posicin del nmero Binario ser un uno, y las unidades restantes en este caso son 4310 . Para las 4310 unidades restantes, la potencia encontrada es 3210 por lo cual la quinta posicin del nmero Binario ser un uno, y las unidades restantes en este caso son 1110 . Para las 1110 unidades restantes, la potencia encontrada es 810 por lo cual la tercera posicin del nmero Binario ser un uno, y las unidades restantes en este caso son 310 . Para las 310 unidades restantes, la potencia encontrada es 210 por lo cual la primera posicin del nmero Binario ser un uno, y la unidad restante en este caso es 110 lo cual nos indica que la posicin cero ser un uno. Por lo tanto la respuesta es 87510 11011010112 En muchos casos tendremos que convertir un nmero binario en decimal, para lo cual tendremos en cuenta que cada posicin del dgito en el nmero binario est representado por un valor equivalente a una potencia de dos, por ejemplo para el nmero 1101010112 sabemos que cada posicin de los dgitos equivale a:

Suma y Resta Binaria


En cualquier sistema numrico, las tcnicas empleadas en las operaciones de suma y resta son iguales, se siguen los mismos criterios de adicin y sustraccin; cuando sobrepasamos el mximo nmero de dgitos disponibles generamos un acarreo al dgito siguiente ms significativo, de similar manera si estamos restando a un dgito que es menor al valor que se le resta se procede a solicitar un prstamos al dgito siguiente ms significativo. Se mantiene la norma de comenzar a sumar o restar desde el dgito menos significativo o dgito de la posicin cero. Definicin La suma binaria la definiremos de la siguiente manera: Si adicionamos dos dgitos cuyos valores son cero, el resultado es cero. Si adicionamos un dgito cuyo valor es uno con un dgito cuyo valor es cero, su resultado es uno Si adicionamos dos dgitos cuyos valores son unos, el resultado es cero, pero generamos un dgito adicional que lo llamaremos acarreo y cuyo valor es uno; el dgito de acarreo ser un componente a adicionar a los dgitos inmediatamente ms significativos. La resta binaria la definiremos de la siguiente manera: El orden de la resta se define del primer dgito dado menos el segundo dgito dado, por lo tanto, en la mayora de los casos el primer nmero binario dado para la resta debe ser mayor al nmero binario sustraendo. Si esto no se cumple, en la mayora de los casos se implementa una representacin binaria conocida como representacin en Complemento a dos, la cual nos permite diferenciar nmeros binarios positivos de nmeros binarios negativos. Si el primer dgito es cero y se le resta un segundo dgito que es cero, el resultado es cero. Si el primer dgito es uno y se le resta un segundo dgito que es cero, el resultado es uno. Si el primer dgito es uno y se le resta un segundo dgito que es uno, el resultado es cero. Si el primer dgito es cero y se le resta un segundo dgito que es uno, estaramos solicitndole al dgito inmediatamente ms significativo un prstamos de una unidad permitiendo un resultado de uno; este prstamo se convierte en una resta adicional a la que se efectuara en el siguiente dgito ms significativo.

Ejercicios Prcticos Realicemos la suma del nmero 110102 con el nmero 10112 : Procedimiento: Primero que todo agrupamos los dos nmeros binarios uno encima del otro de tal manera que los dgitos de la misma posicin se encuentre en la misma columna o uno sobre el otro:

11010 2 + 010112
Noten que agregamos un cero a la izquierda en el segundo nmero binario slo para igualar el nmero de dgitos en ambos (es algo que con la experiencia no necesitaremos). Los dgitos de la posicin cero son 0 y 1 respectivamente, por lo tanto su resultado es 1. Los dgitos de la posicin uno son 1 y 1 respectivamente, por lo tanto su resultado es 0, pero generan un dgito de acarreo con valor 1 para ser sumado con el resultado de la suma de los dgitos de la posicin dos. Los dgitos de la posicin dos son 0 y 0 respectivamente, por lo tanto su resultado es 0, pero tenemos un dgito de acarreo que proviene de la suma anterior, este dgito lo adicionamos al presente resultado lo que nos da 1. Los dgitos de la posicin tres son 1 y 1 respectivamente, por lo tanto su resultado es 0, pero generan un dgito de acarreo con valor uno para ser sumado con el resultado de la suma de los dgitos de la cuarta posicin. Los dgitos de la cuarta posicin son 1 y 0 respectivamente, por lo tanto su resultado es 1, pero tenemos un dgito de acarreo que proviene de la suma anterior, este dgito lo adicionamos al presente resultado lo que nos da 0, y generamos un dgito ms de acarreo para la siguiente suma. Resulta que no tenemos ms dgitos para sumar, pero tenemos un acarreo de un 1, por lo tanto consideramos que los dgitos de la quinta posicin son ceros y su suma es 0, adicionndole el dgito de acarreo tendremos un resultado de 1. Por lo tanto el resultado es el siguiente:
011010 2 + 0010112 1001012

Veamos grficamente otro ejemplo de sumatoria de nmeros binarios:

Realicemos ahora la resta del nmero 11010 2 con el nmero 10112 : Procedimiento: Primero que todo agrupamos los dos nmeros binarios uno encima del otro de tal manera que los dgitos de la misma posicin se encuentre en la misma columna o uno sobre el otro:

11010 2 010112
Agregamos de nuevo un cero a la izquierda en el segundo nmero binario slo para igualar el nmero de dgitos en ambos. Los dgitos de la posicin cero son 0 y 1 respectivamente, por lo tanto solicitamos un prstamo al dgito siguiente ms significativo del primer nmero binario, el resultado es 1, y una resta adicional de un 1 para la operacin de los dgitos siguientes. Los dgitos de la posicin uno son 1 y 1 respectivamente, por lo tanto su resultado es 0, pero como tenemos generado un prstamo de la operacin anterior, tenemos un resta de un 1 pendiente para esta posicin; como a un 0 le vamos a quitar un 1 debemos solicitar un prstamo al siguiente dgito generando un nuevo dgito de prstamo; el resultado es 1. Los dgitos de la posicin dos son 0 y 0 respectivamente, por lo tanto su resultado es 0, pero tenemos un dgito de prstamo que proviene de la resta anterior, este dgito lo restaremos al presente resultado lo que nos da 1, y generamos un dgito de prstamos ms. Los dgitos de la posicin tres son 1 y 1 respectivamente, por lo tanto su resultado es 0, pero tenemos un prstamo que debemos restar en esta operacin, por lo tanto, el resultado es 1 y un nuevo dgito de prstamo. Los dgitos de la cuarta posicin son 1 y 0 respectivamente, por lo tanto su resultado es 1, pero tenemos un dgito de prstamo pendiente as que el resultado es 0. Por lo tanto el resultado es el siguiente:

011010 2 0010112 0011112

Multiplicacin y divisin binaria De similar manera a la suma y resta de nmeros binarios, la multiplicacin y divisin de nmeros binarios mantiene los mismos procedimientos que en el sistema decimal. Definicin La multiplicacin binaria la definiremos de la siguiente manera: Si multiplicamos dos dgitos cuyos valores son 0 su resultado es 0. Si multiplicamos un dgito cuyo valor es 0 con un dgito cuyo valor es 1, su resultado es 0. Si multiplicamos dos dgitos cuyos valores son 1 su resultado es 1. Si multiplicamos un nmero de varios dgitos con otro de varios dgitos el proceso es similar al que realizamos con nmeros decimales (ver seccin 1.2.2.) La divisin binaria la definiremos de la siguiente manera: Si dividimos un dgito cuyo valor es 1 entre otro cuyo valor es 1 su resultado es 1. Si dividimos un dgito 0 entre un dgito 1 su resultado es 0 En los sistemas binarios tambin se considera como un valor indeterminado la divisin entre 1 y 0, y entre 0 y 0. Cuando se dividen dos nmeros binarios de varios dgitos se implementa la misma metodologa que cuando se divide en el sistema digital

Ejercicios Prcticos Realicemos ahora la multiplicacin del nmero 11010 2 con el nmero 10112 : Procedimiento: Primero que todo agrupamos los dos nmeros binarios uno encima del otro de tal manera que los dgitos de la misma posicin se encuentre en la misma columna o uno sobre el otro:

Ahora de la misma manera que en el sistema digital, el dgito de la posicin cero del segundo nmero binario se multiplica por todo el primer nmero binario:

De igual manera el dgito de la posicin uno del segundo nmero binario se multiplica por todo el primer nmero, pero su resultado se coloca a partir de la columna correspondiente a la posicin uno:

Ahora el dgito de la posicin dos del segundo nmero binario se multiplica por todo el primer nmero, pero su resultado se coloca a partir de la columna correspondiente a la posicin dos; se procede de similar manera con la posicin tres y cuatro, lo que nos da

De igual manera que en el sistema decimal, procedemos a sumar columna por columna, por lo tanto el resultado es:

Realicemos ahora la divisin del nmero 110010102 con el nmero 10112 : Procedimiento: Primero que todo agrupamos los dos nmeros binarios de la misma manera que cuando realizamos una divisin en el sistema decimal:

El divisor tiene cuatro dgitos, por lo tanto, procedemos a tomar de izquierda a derecha cuatro dgitos del dividendo; el nmero que forman

estos cuatro dgitos debe ser mayor al nmero divisor, si no es as se tomara un dgito ms en el dividendo. Cuando este nmero es mayor que el divisor, se coloca un 1 en la zona del resultado de la divisin y se procede a restar como sigue:

Al resultado de la resta se le agrega a su derecha el siguiente dgito que sigue a los cuatro inicialmente tomados en el dividendo; se examina si el nuevo nmero que se forma es mayor al divisor, si no es el caso se agrega el dgito siguiente, y en la zona del resultado se coloca un cero (en este caso debemos recurrir una vez ms a este procedimiento):

Ahora que el nmero generado es mayor que el divisor, colocamos un 1 en la zona del resultado y restamos de nuevo el divisor a este nmero obteniendo.

An nos falta por bajar un dgito del dividendo, pero el nmero que se forma no es mayor que el divisor, as que agregamos un cero al nmero de la zona de resultado:

De donde el resultado de la divisin es el nmero 10010 2 y el residuo de esta divisin es el nmero 100 2 EJERCICIOS: 1. Realice las siguientes sumas binarias:

2. realice las siguientes restas binarias:

3. Realice las siguientes multiplicaciones binarias:

4. Realice las siguientes divisiones binarias:

Leccin No 4 Sistema Hexadecimal


El sistema hexadecimal hace referencia a un sistema numrico que utiliza 16 dgitos, los cuales contienen algunos dgitos alfabticos para complementar los 10 dgitos tradicionales; estos seran: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F En donde A representar en decimal el nmero 10, B representa en decimal el nmero 11, C representa en decimal el nmero 12, D representa en decimal el nmero 13, E representa en decimal el nmero 14, y F representa en decimal el nmero 15. Por esto, veo conveniente recordar el siguiente cuadro comparativo de valores entre sistemas hexadecimales: DECIMAL BINARIO OCTAL HEXADECIMAL 1 1 1 1 2 10 2 2 3 11 3 3 4 100 4 4 5 101 5 5 6 110 6 6 7 111 7 7 8 1000 10 8 9 1001 11 9 10 1010 12 A 11 1011 13 B 12 1100 14 C 13 1101 15 D 14 1110 16 E 15 1111 17 F 16 10000 20 10 17 10001 21 11 18 10010 22 12 19 10011 23 13 20 10100 24 14

Leccin No 5 Circuitos Digitales


Los circuitos digitales son un conjunto de componentes electrnicos que permiten manejar el voltaje que se les suministra para representar y manipular nmero binarios; este proceso de representacin del nmero binario est relacionado con el nivel de voltaje que se encuentra ya sea a la entrada del circuito o a la salida del mismo, de donde se precisa un nivel alto o bajo con muy clara diferencia entre los mismos; esto es fcilmente aclarado en el tema las Familias TTL y CMOS. El poder diferenciar claramente los niveles de voltaje en la salida o la entrada del circuito nos permite nombrar estos niveles como 1 y 0, respectivamente. Esta asignacin nos acerca ms al trmino de sistema binario, y nos permite comprender de alguna manera el porqu los circuitos digitales slo trabajan con nmeros binarios. Cada entrada o salida del circuito digital representa un dgito binario, por lo tanto, estos se conocen como bit, del trmino ingls BInary DigiT. Por lo cual, se acostumbra a hablar de un circuito digital de n bits de entrada o n bits de salida. En la figura No. 1 tenemos el ejemplo de la representacin de un circuito digital de 3 bits de entrada y 6 bits de salida: Figura No. 1 Circuito Digital de 3 bits de entrada y 6 bits de salida

Compuertas Lgicas Un circuito digital es muy similar a un sistema, con sus entradas, sus salidas y un proceso interno que establece la relacin entre las entradas al mismo y sus salidas. Este llamado proceso interno se puede representar por medio de ecuaciones matemticas, cuyas variables y nmeros son NO REALES, por lo tanto, no aplicamos las mismas operaciones y propiedades que conocemos, sino que recurrimos a las definidas en el Algebra de Boole. Definicin de una compuerta lgica Una compuerta lgica es aquel circuito digital que tiene la capacidad de aplicar un proceso interno a sus n bits de entrada, que cumple con alguna de las operaciones definidas en el lgebra de Boole, y que cuyos resultados son manifiestos en sus bits de salida. En la figura No. 2 podemos observar las

operaciones del Algebra de Boole, sus tablas de verdad y representacin grfica. Figura No. 2 Propiedades del Algebra de Boole: Tablas y representacin grfica

Aplicaciones de las Compuertas Las compuertas lgicas digitales son implementadas para representar las funciones booleanas que representan los sistemas digitales, y que permiten realizar algn tipo de aplicacin como control de un proceso industrial, operaciones aritmticas (sumas, restas, multiplicaciones y divisiones de nmeros binarios), etc. Un ejemplo de esto se representa en la figura No. 3, en donde est la funcin boolena de un sistema digital y la representacin del mismo empleando compuertas lgicas (Este tema ser ampliado en la seccin 3.1). Figura No. 3 Funcin boleana y su representacin por medio de Compuertas lgicas

Familia TTL Como se coment en la seccin anterior, los circuitos digitales trabajan con 1 y 0, los cuales representan un rango de voltaje en el bit de entrada o salida del mismo; la caracterstica especial de estos rangos es que el voltaje de los bits slo deben estar dentro de los rangos de voltaje determinados para cada estado, de tal manera que existe una zona de voltaje entre los rangos asignados al 1 y 0 que nunca estar presente en el comportamiento elctrico de los mismos. Si recordamos el componente Electrnico llamado Transistor NPN (ver figura No. 4), este tiene tres Zonas de trabajo: La zona activa, la de corte y la de saturacin. La zona activa funciona como un amplificador lineal de corriente y/o voltaje dependiendo de la configuracin del circuito en el cual se emplee el transistor; las otras dos zonas funcionan de igual manera que un interruptor elctrico, en la zona de corte funciona como circuito abierto y en la zona de saturacin funciona como un corto circuito; esto permite configurar un circuito en el cual el transistor puede acercarse a un voltaje cercano a cero o cercano al voltaje de alimentacin, lo que asumimos como un 0 y 1 respectivamente. Ahora, con una adecuada configuracin de varios circuitos que contengan transistores se pueden generar comportamientos entre las entradas y salidas del circuito que cumplan con el comportamiento de las operaciones booleanas.

Figura No. 4

Transistor NPN

Definicin Los circuitos digitales implementados con la lgica TransistorTransistor son conocidos como circuitos integrados TTL (sigla del trmino en ingls, Transistor-Transistor Logic), y todo circuito integrado que contenga cualquier tipo de compuerta lgica que se genere con este tipo de circuito lgico se relaciona con la Familia TTL. Caractersticas Los circuitos integrados de la Familia TTL se alimentan con 5V con una variacin aceptable de 0.25V y funcionan adecuadamente en temperaturas ambientales entre los 0 a 70 C. La Familia TTL configura la zona de voltaje para definir el 0 entre 0V y 0.8V, y para definir el 1 entre 2.4V y 5.0V. La velocidad de cambio de estado lgico del bit de salida a razn del cambio lgico de los bits de entrada alcanza en algunas versiones de la familia hasta 250 Mhz, claro est que esto incrementa el consumo de potencia del circuito integrado Cuando una de las entradas del circuito lgico no se conecta sino que se deja al aire, el sistema lo toma como un 1; pero es recomendable conectar la entrada por medio de una resistencia de 1k a 5V para garantizar el estado del mismo. La Familia TTL tiene un limitante en cuanto al nmero de compuertas que se pueden interconectar entre s (fan out), esta caracterstica est impuesta por la capacidad de corriente que puede suministrar o recibir. Tipos de Circuitos Integrados La familia TTL es una de las familias de Circuitos Integrados (CI) ms utilizados, son reconocidos por la serie estndar 74 e incluyen una amplia variedad de compuertas, flip-flops, multivibradores monoestales, registros de corrimiento, contadores, decodificadores, memorias y circuitos aritmticos.

Dependiendo de la combinacin entre velocidad de respuesta y consumo de potencia la serie se clasifica como: Serie 74L, ofrece bajo consumo de potencia. Serie 74H, ofrece alta velocidad. Serie 74S, configuracin Schottky. Serie 74LS, configuracin Schottky de bajo consumo de potencia. Serie 74AS, configuracin Schottky avanzada. Serie 74ALS, configuracin Schottky avanzada con bajo consumo de potencia. La familia TTL tambin se clasifica dependiendo del tipo de salida con que cuenta: Salida TTL con colector abierto. Salida TTL de tres estados. Familia CMOS Otro tipo de transistores aplicados en los CI son los transistores MOS (MOS, de la sigla en ingls Metal-Oxide Semiconductor) los cuales consumen y disipan menos energa por compuerta; este dispositivo puede modelarse como una resistencia controlada por voltaje con tres terminales, de tal forma que opera con una resistencia muy alta (1) o muy baja(0) (Ver figura No. 5). Este transistor tiene dos configuraciones que son complementarias conocidas como NMOS y PMOS, los cuales al ser implementados en un circuito forman la lgica MOS Complementaria (CMOS), con la cual tambin se pueden implementar los comportamiento de las diferentes operaciones boolenas, como por ejemplo una compuerta inversora (Ver figura No. 6). Figura No. 5 Transistor MOS

Figura No. 6 Circuito Inversor CMOS

Definicin Se denominan circuitos integrados de la Familia CMOS a aquellos en los cuales se ha implementado la lgica booleana por medio de circuitos lgicos CMOS. Caractersticas Los circuitos integrados de la Familia CMOS se alimentan con valores entre 3V y 18V (claro que las series ms nuevas definen su rango de alimentacin entre 2V y 6V), y los estados lgicos 1 y 0 se definen en los rangos Vcc-0.7Vcc y 0.3Vcc-0V, respectivamente. Estos integrados son especialmente susceptibles a daos por carga electrosttica, aunque las ltimas generaciones de CI CMOS vienen protegidos contra estas descargas. Tipos de Circuitos Integrados La familia CMOS en sus comienzos fue conocida como la serie 4000; aunque tena un bajo consumo de potencia, era bastante lenta y de muy difcil conexin con la familia TTL. Este aspecto fue mejorado por la serie 74HC (CMOS de alta velocidad) y la 74HCT (CMOS de alta velocidad, compatible con TTL). Despus se introdujo la serie 74AC (CMOS avanzada) y la 74ACT (CMOS avanzada, compatible con TTL). CIRCUITOS INTEGRADOS El Circuito Integrado (CI) es un chip de Silicio en el cual se han fabricado una o ms compuertas lgicas (Ver figura No. 7), se caracterizan por venir en un paquete de cermica o plstico con contactos metlicos en su periferia que permiten establecer conexin elctrica para el suministro de energa y de las seales de entrada y salida; lo que interesa conocer de un CI es su comportamiento elctrico y funcional. Normalmente un CI se conecta en una tarjeta de Circuito Impreso (PCB, del trmino ingls Printed-Circuit Board) para poder establecer su interconexin con otros circuitos integrados segn la

funcionalidad que tenga en el sistema implementado. interconectaremos principalmente en Protoboards. Figura No. 7 Imagen de un Circuito Integrado

Nosotros lo

INVESTIGACION: 1). En qu consiste la lgica de diodos? implementen. D ejemplo de circuitos que la

2). Cmo se configura un inversor lgico por medio de un transistor NPN?. 3). Qu otros tipos de lgicas circuitales se han implementado para poder implementar las operaciones booleanas? 4). Investigue cules son los circuitos integrados ms comnmente usados y qu caractersticas poseen.

CAPTULO 2 Principios de Diseo de Lgica Combinacional

Un circuito lgico combinacional es aquel en el cual sus bits de salida dependen solamente del estado actual de los bits de entrada. El comportamiento de estos circuitos se analiza inicialmente por medio de un diagrama lgico de dnde se obtiene la descripcin formal de la funcin ya sea por medio de una tabla de verdad o una expresin lgica.

Leccin No 1 ALGEBRA DE CONMUTACION


Basados en el trabajo del matemtico George Boole y las observaciones del investigador Claude E. Shannon se han fundamentado las tcnicas formales para el anlisis de los circuitos digitales. Definicin Seal lgica: Es el estado que se registra en los bits de entrada o salida de un circuito combinacional; se han definido el estado 1 o ALTO y el estado 0 o BAJO. En el lgebra de Boole una variable simblica (por ejemplo X) ser quien represente la seal lgica en un bit de entrada. Operaciones Binarias bsicas NOT: una de los axiomas principales del lgebra de Boole es que si X = 0 , entonces X1; y por analoga si X = 1 , entonces X 0 . Ahora si definimos la accin de negar una variable como la manera en la cual si su estado es 0, al negarla su estado sera 1, o viceversa; y si definimos el universo de los circuitos lgicos en los cules slo son posibles dos estados (1 y 0), entenderamos que si X = 1 , su complemento sera X ' = X = 0 , y si X = 0 , entonces X ' = X = 1 . Esto es lo que se conoce como la operacin NOT o inversor (ver figura No. 2). AND: Para una multiplicacin lgica tenemos que si las entradas son X y Y, su representacin algebraica sera F = X Y , en donde el punto de multiplicacin () indica una operacin AND o multiplicacin lgica (Ver figura No. 2) y cuyo resultado slo es 1 cuando todas las entradas son 1. OR: una suma lgica u operacin OR, la cual se representa por medio de un signo ms ( F = X + Y ), tiene como salida 0 si y solamente si todas las entradas son 0 (Ver figura No. 2). Basados en estas tres operaciones bsicas tenemos los siguientes teoremas para una variable: X+0=X X + 1 =1 X+X=X (X) = X X + X = 1 X.1=X X.0=0 X.X=X X . X =0 (IDENTIDAD) (ELEMENTOS NULOS) (IDEMPOTENCIA) (INVOLUCIN) (COMPLEMENTOS)
___
___

El lgebra de Boole cumple los siguientes postulados: 1. las operaciones OR y AND son conmutativas:

X +Y =Y + X

X Y = Y X

(ecuacin No. 3)

2. Cada operacin (AND y OR) es distributiva para la otra, es decir:


X + (Y Z ) = ( X + Y ) ( X + Z ) X (Y + Z ) = ( X Y ) + ( X Z ) 3. las operaciones OR y AND son asociativas:

(ecuacin No. 4) (ecuacin No. 5)

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

(ecuacin No. 6) (ecuacin No. 7)

4. Para cada par de elementos se cumple que (Propiedad de absorcin o cobertura): X + X Y = X (ecuacin No. 8) (ecuacin No. 9) X (X + Y ) = X 5. La propiedad de combinacin consiste en:
___

X Y + X Y = X
___

(ecuacin No. 10) (ecuacin No. 11)

(X + Y ) (X + Y ) = X
6. El Teorema de Morgan consiste en:
________________ ___ ___ ___

(X + Y + Z) = X Y Z
____________ ___ ___ ___

(ecuacin No. 12) ecuacin No. 13)

X Y Z = X + Y + Z

7. El teorema de Shannon define el complementario de una funcin como aquel en el cual cada variable se reemplaza por su complementaria y, al mismo tiempo, se intercambian las operaciones AND y OR, es decir:
________________ ___ ___ ___

f ( X , Y , Z ,...,+,) = f ( X , Y , Z ,...,,+ )
8. El teorema de Expansin consiste en:

(ecuacin No. 14)

___ ___ f ( X , Y , Z ,...) = [X + f (0, Y , Z ,...)] X + f (1, Y , Z ,...) = X f(1, Y, Z,...) + X f (0, Y , Z ,...)

(ecuacin No. 15) En donde el desarrollo o la expansin puede realizarse en funcin de cualquiera de las variables presentes.

Ejercicios Ahora aplicaremos los teoremas del lgebra de Boole para resolver ecuaciones lgicas: Probemos que ( X + Y ) Y = X Y Procedimiento: 1. Tomaremos el trmino de la izquierda del igual, y por medio de la propiedad distributiva (Ec. No. 5) eliminaremos el parntesis:
___ ___

X Y + Y Y = X Y

2. Si observamos el segundo trmino del lado izquierdo del igual ( Y Y ), notaremos que estn cumpliendo la propiedad del complemento para la multiplicacin lgica, por lo tanto el resultado de este trmino es 0:

___

X Y + 0 = X Y
3. Ahora el lado izquierdo del igual se asemeja a la propiedad de la identidad para la suma lgica, por lo tanto
X Y = X Y

De donde queda demostrada la igualdad

Aplique el Teorema de Morgan en

______________

A (B + C)

Procedimiento: 1. El Teorema de Morgan dice que toda variable es reemplazada por su complemento, las operaciones AND y OR son reemplazadas por su inverso (OR y AND) (Ver ecuaciones No. 12 y 13). Inicialmente colocaremos los complementos de A y del trmino que va entre parntesis, y la operacin inversa de la multiplicacin lgica, lo cual nos da:

A (B + C) = A + (B + C) = 2. Ahora, el trmino entre parntesis est negado, cuando aplicamos la negacin los trminos B y C son reemplazados por sus complementos y la operacin de la suma lgica se reemplaza por la multiplicacin lgica:
______________ ___ _________ ___ ___ ___

______________

___

_________

A (B + C) = A + (B + C) = A + B C
Por lo tanto
______________ ___ ___ ___

A (B + C) = A + B C

Leccin No 2 ANLISIS Y SINTESIS DE CIRCUITOS COMBINACIONALES


Para el anlisis de Circuitos Combinacionales nosotros manejamos funciones booleanas que nos representan el comportamiento de los mismos en funcin del estado de sus entradas. Una funcin booleana sencilla es la siguiente:
___

f (X ) = X Esta funcin indica que para cada valor de X la respuesta de la misma es el complemento, como X slo puede tomar dos valores (0 y 1), las respuestas sern sus complementos (1 y 0).
Como en el lgebra, las funciones pueden tener varias variables,
___

f ( X ,Y ) = ( X + Y ) Y Para esta funcin en particular podemos notar que cuando


__

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

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

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

f (1,1) = (1 + 1 ) 1 = (1 + 0) 1 = 1 1 = 1
Y como habamos probado en la seccin 3.1.2, esta funcin es lo mismo que tener la multiplicacin lgica de X y Y, de donde la salida slo es 1 cuando las dos entradas son 1, y la salida es 0 en los dems casos. La representacin bsica de una funcin lgica es la tabla de verdad, la cual, para la funcin anterior la podemos ver en la figura No. 8; como se observa, el nmero de columnas de la tabla de verdad est dado por el nmero de variables de la funcin seguido de su resultado. El nmero de filas de la tabla de verdad est dado por el nmero mximo de diferentes posibles combinaciones de los estados de las entradas ( 2 n , n= nmero de variables), por ejemplo, si tenemos 3 variables en una funcin sern 8 filas en la tabla de verdad y cuatro columnas. Figura No. 8 Tabla de Verdad de la funcin
___

f ( X ,Y ) = ( X + Y ) Y

Como se pudo observar, por medio de la funcin booleana se defini el comportamiento de la tabla de verdad; de similar manera, nosotros podemos partir de una tabla de verdad para poder deducir la funcin booleana, el problema es que se pueden obtener una multitud de funciones booleanas que tendrn el mismo comportamiento, as que nuestra misin ser encontrar la funcin que este lo ms simplificada posible. Descripcin de Diseo y circuitos A partir de una tabla de verdad se pueden obtener varias funciones booleanas que expresan el comportamiento descrito en la tabla; todas estas funciones sern equivalentes, y unas se podrn deducir de otras por medio de las propiedades del lgebra de Boole. Lo generalmente ms empleado para la deduccin de las expresiones resultantes de una tabla de verdad, son las formas cannicas. Estas se caracterizan porque en todos los trminos de estas expresiones aparecen todas las variables. Para entender una forma cannica debemos comprender lo siguiente: Trmino producto: Es la multiplicacin lgica de dos o ms variables, ejemplos: XYZ , X Y Z , A B C
__ ___

Expresin de suma de productos: Es la suma lgica de trminos productos, ejemplo: X + X Y + XY Z


___ __

Trmino suma: Es la suma lgica de dos o ms variables; ejemplos:


X +Y + Z ,
___ __

X +Y + Z+ A

Expresin de producto de sumas: Es el producto lgico de trminos suma, ejemplo:


__ ___ ___ ___ ___

X ( X + Y ) ( X + Y + Z ) ( X + Y + Z + A)

Trmino normal: Es un producto o trmino suma en el que ninguna variable aparece ms de una vez. Ejemplos: XYZ , X + Y , A + B + C + D Mintrmino: Es un trmino de producto normal con n variables. Ejemplos: X Y Z , X Y Z , X Y Z
___ __ ___ ___ ___ __

Maxtrmino: Es un trmino suma normal con n variables. Ejemplos:

X +Y + Z +W ,

X + Y + Z +W ,

___

___

___

__

__

X + Y + Z+W

Existe una relacin entre la tabla de verdad y los mintrminos y maxtrminos de una funcin: Un mintrmino puede definirse como un trmino producto que es 1 en una de las filas de la tabla de verdad; como es un producto, la nica manera que logramos que sus entradas nos den como resultado un 1 es haciendo que todas sean 1, por lo tanto, el mintrmino tendr las variables que sean 0 complementadas (Ver figura No. 9) Un maxtrmino puede definirse como un trmino suma que es exactamente 0 en una de las filas de la tabla de verdad; de similar manera al mintrmino, el resultado del mxtermino debe ser un 0, as que todas las variables que sean 1 sern complementadas (ver figura No. 9) Figura No. 9 Ejemplo de Mintrminos y Maxtrminos para dos variables

Ahora si estamos capacitados para entender cmo las formas cannicas son empleadas para deducir expresiones lgicas que describen un circuito lgico a partir de la tabla de verdad correspondiente. La primera forma cannica es la Suma Cannica de la funcin lgica, la cual es la suma de los mintrminos correspondientes a las filas de la tabla de verdad en las cuales los resultados sean un 1, como ejemplo, la suma cannica de la tabla de verdad de la figura No. 8 es F = XY La suma cannica se compone de un solo trmino porque solamente una fila tiene como resultado un 1, ahora si aplicamos toda la tabla de verdad en esta expresin notaremos que la cumple (esto se propone como ejercicio al estudiante) La segunda forma cannica es el Producto Cannico de la funcin lgica, y consiste en el producto de los maxtrminos correspondientes a las combinaciones de las entradas para las cuales la salida es un 0. Por ejemplo, el producto cannico de la tabla en la figura No. 8 es
___ ___

F = ( X + Y )( X + Y )( X + Y )

De similar manera, se propone al estudiante representar toda la tabla de verdad en la expresin resultante para confirmar que cumple con las condiciones de la tabla. Ahora el punto que debe preocuparnos es si las dos expresiones resultantes son realmente equivalentes? Para confirmarlo deduciremos de la expresin de productos de maxtrminos la expresin de suma de mintrminos, as que nuestra expresin inicial es la siguiente:
___ ___

F = ( X + Y )( X + Y )( X + Y )
Procedimiento: 1. Hemos dicho que las operaciones OR y AND son asociativas (Ver Ecuacin. No. 7), por lo tanto, agruparemos los dos primeros maxtrminos como sigue:
___ ___

F = [( X + Y )( X + Y )]( X + Y )
2. La ecuacin No. 5 nos dice que la operacin OR es distributiva, as que asumiremos que el primer maxtrmino es una sola variable y el producto del mismo por el segundo maxtrmino ser distribuido de la siguiente manera
___ ___

F = [( X + Y ) X + ( X + Y ) Y )]( X + Y )
3. Con la expresin resultante redistribuiremos el producto de cada variable por el maxtrmino que lo multiplica:
___ ___ ___

F = [ XX + YX + X Y + Y Y ]( X + Y )
4. Ahora aplicando el teorema de Idempotencia y complemento obtenemos
___ ___

F = [ X + YX + X Y + 0]( X + Y )
___ ___

F = [ X + YX + X Y ]( X + Y )
5. Simplificando el primer trmino de la multiplicacin tendremos:
___ ___

F = [ X (1 + Y + Y )]( X + Y )
6. Ahora, una variable que es sumada con un 1 siempre nos dar 1, por lo cual
___

F = [ X .1]( X + Y )
___

F = X(X +Y)
7. Aplicando la ley distributiva tenemos
___

F = X X + XY

8. y por el teorema del complemento para la multiplicacin

F = 0 + XY = XY
10.y por el teorema de Idempotencia aplicado a la variable Y

F = XY
Por lo cual obtenemos la misma expresin resultante para la suma cannica de la tabla en la figura No. 8 Ya tenemos unas herramientas bsicas para generar expresiones lgicas de una tabla de verdad, pero de dnde se genera la tabla de verdad? Por regla general, la tabla de verdad se deduce de una descripcin verbal de un problema descrito por alguien o por nosotros mismos. Esta descripcin puede ser un listado de combinaciones de varias entradas para las cuales debe estar activo o desactivo un bit en especial (salida del sistema).

Leccin No 3 minimizacin de Circuitos Combinacionales


Cuando obtenemos una expresin lgica que describe una situacin especial o un comportamiento requerido en un circuito, el paso siguiente sera el implementarlo en un circuito electrnico, pero en la mayora de los casos, la implementacin directa de una suma o multiplicacin cannica no es la ms fiable econmicamente hablando pues el nmero de mintrminos y maxtrminos crece exponencialmente con el nmero de variables. Esta es una de las causas por las cules la minimizacin es una de las mejores herramientas para optimizar el circuito lgico diseado, de tal manera, que la expresin final sea la de menor nmero y tamao de compuertas electrnicas necesarias para construirla. Los medios que tenemos para optimizar una expresin booleana son: Utilizando Propiedades y Teoremas del lgebra de Boole. Utilizando el mtodo de los mapas de Karnaugh Teorema de Morgan Normalmente las formas cannicas no son las expresiones ms simplificadas, pero el procedimiento para hacer la simplificacin no tiene un mtodo analtico, hay que basarse en la experiencia y el conocimiento de las propiedades del lgebra de Boole. Un ejemplo de simplificacin de expresiones lgicas fue realizado en la seccin 3.2.1. A continuacin veremos otro ejemplo: Ejercicio resuelto: Minimizar la siguiente expresin:
___ ___

F = X Z + XY + X Y Z

Procedimiento: 1). Podemos aplicar la ley asociativa de la suma lgica para los dos ltimos trminos as
___ ___

F = X Z + ( XY + X Y Z )
2) Aplicando el procedimiento inverso para la ley distributiva de la multiplicacin lgica con respecto a la suma tendremos
___ ___

F = X Z + X (Y + Y Z )
3). Para el trmino (Y + Y Z ) aplicamos la ley distributiva segn la Ecuacin No. 4, de tal forma que obtenemos (Y + Y ) (Y + Z ) , y como para la suma de
___ ___

complementos se cumple que es igual a 1 tendramos (1) (Y + Z ) = (Y + Z ) , as que reemplazando en la expresin:


___

F = X Z + X (Y + Z )
4). Aplicando la ley distributiva y conmutativa tendremos:
___ ___ ___

F = X Z + X (Y + Z ) = X Z + XY + XZ = X Z + XZ + XY
5). Agrupando los dos primeros trminos tendremos
___ ___

F = X Z + XZ + XY = ( X + X ) Z + XY
6). De donde por la propiedad de la suma de complementos
___

F = ( X + X ) Z + XY = (1) Z + XY = Z + XY F = Z + XY
De donde podemos observar que de requerir inicialmente una compuerta OR de tres entradas, dos compuertas AND de dos entradas, una compuerta AND de tres entradas y dos compuertas inversoras; al realizar la minimizacin llegamos a necesitar solamente una OR de dos entradas y una AND de dos entradas. Por lo tanto en la mayora de casos el proceso de minimizacin reduce notablemente la cantidad de componentes electrnicos requeridos en el montaje de un Circuito Digital (Ver figura No. 10). Queda como tarea para el estudiante el construir las tablas de verdad de las dos expresiones y comprobar que se comportan igual.

Figura No. 10 Accin de Minimizacin: Circuito de una expresin lgica original y Minimizada

Leccin 4. Mapas de Karnaugh


Un mapa de Karnaugh es una representacin grfica de la tabla de verdad de una expresin lgica. Bsicamente es una tabla de cuadros de 2 i filas por 2 j columnas, en donde i + j = n , siendo n el nmero de variables, adems se cumple que 2 n = 2 i * 2 j , es decir, la tabla tendr tantos cuadros como posibles combinaciones de las variables de entrada (Ver figura No. 11). Como el mapa de Karnaugh es otra forma de representar la tabla de verdad, debemos asignar un nmero i de variables para designar las filas y un nmero de j variables para designar las columnas, se acostumbra colocar las primeras i variables de la tabla de verdad a las filas y las j variables restantes a las columnas (ver figura No. 12). Figura No. 11 Ejemplo de un mapa de Karnaugh para una expresin de 4 variables

Las expresiones 2 i y 2 j indican el nmero de posibles combinaciones que se pueden realizar con las i y las j variables respectivamente, es por eso que las filas y las columnas son el mismo nmero de combinaciones posibles de cada grupo de variables asignadas a cada lado del mapa de Karnaugh; pero el truco es no colocar las posibles combinaciones en el mismo orden en que se generaran como si estuvisemos contando en binario (00, 01, 10, 11); las posibles combinaciones de las variables asignadas en las filas y columnas, deben de una a la siguiente combinacin variar uno slo de sus dgitos es decir: 00, 01, 11, 10 Podemos ver la aplicacin de este concepto en la figura No. 13. Tenga en cuenta que el primer dgito de cada trmino (sea en la fila o la columna) corresponde a la primera variable asignada para la fila o la columna; de manera similar se hace con los dems dgitos, es decir, el segundo dgito va con la segunda variable, el tercer dgito con la tercera variable, etc. Figura No. 12 Ubicacin de las variables en un mapa de Karnaugh para una expresin de 4 variables

Lo que nos falta es relacionar cada lnea de la tabla de verdad con cada cuadro del Mapa de Karnaugh. Para hacerlo, lo que hacemos es analizar cada una de las intersecciones entre las filas y las columnas, por ejemplo, la fila dos y la columna tres en la Figura No. 13 es la interseccin entre el trmino 01 y el trmino 11, lo que nos indica que debe ser el trmino de la expresin correspondiente a F(X,Y,Z,W) = F(0,1,1,1); de similar manera, la interseccin entre la fila tres y la columna cuatro es el trmino de la expresin correspondiente a F(X,Y,Z,W) = F(1,1,1,0). En otras palabras cada cuadro del mapa de Karnaugh tiene un mintrmino correspondiente en la tabla de verdad; y en cada cuadro se colocar el resultado esperado para cada uno de ellos. Es importante tener en cuenta que existen columnas y filas adyacentes en el mapa de Karnaugh en las cuales una de las variables es 1 y no vara, esto lo podemos observar en la figura No. 14.

Figura No. 13 Mapa de Karnaugh para una expresin de 4 variables

Figura No. 14 Mapa de Karnaugh para:

a) Dos variables b). Tres variables c). Cuatro variables

Ahora llevemos a la prctica lo hasta el momento aprendido. Realicemos el mapa de Karnaugh de la siguiente tabla de verdad y halle la expresin mnima:

Procedimiento: 1. Identificamos que es una tabla de verdad con tres variables, por lo tanto, necesitaremos un mapa con dos filas y cuatro columnas como la observada en el Item b) de la figura No. 14. 2. Cada uno de los mintrminos de la tabla de verdad ser relacionada con cada uno de los cuadros del mapa de Karnaugh, por lo cual, en cada cuadro relacionado colocaremos los resultados esperados segn la tabla de verdad:

3. Ya tenemos el mapa de Karnaugh, pero requeremos minimizar la expresin que se representa de la tabla de verdad, por lo tanto, la minimizaremos por medio de la suma de productos (mintrminos):
___ ___ ___ ___ ___ ___

F ( A, B, C ) = A B C + A B C + A BC + A B C + ABC
De donde, aplicando la ley conmutativa para la suma y la operacin contraria a la idempotencia para la suma en el trmino A BC tendremos
___ ___ ___ ___ ___ ___ ___ ___

F ( A, B, C ) = A B C + A BC + A B C + A BC + A B C + ABC
Ahora la ley asociativa
___ ___ ___ ___ ___ ___ ___

F ( A, B, C ) = ( A B C + A BC ) + ( A B C + A BC ) + ( A B C + ABC )
Y por la ley distributiva podemos hacer lo siguiente
___ ___ ___ ___ ___

F ( A, B, C ) = A ( B C + BC ) + A B( C + C ) + A( B C + BC )
Y luego
___ ___ ___ ___ ___

F ( A, B, C ) = A C ( B + B) + A B( C + C ) + AC ( B + B)
De donde por el teorema de complemento obtenemos
___ ___

F ( A, B, C ) = A C (1) + A B(1) + AC (1)


Y con el teorema de Identidad
___ ___

F ( A, B, C ) = A C + A B + AC
Por la ley conmutativa
___ ___

F ( A, B, C ) = A C + AC + A B
Y aplicando de nuevo la ley asociativa y distributiva
___ ___

F ( A, B, C ) = ( A C + AC ) + A B
___ ___

F ( A, B, C ) = C ( A + A) + A B
Y por el teorema del complemento y la identidad
___

F ( A, B, C ) = C (1) + A B
___

F ( A, B, C ) = C + A B De donde obtenemos la mnima expresin lgica para la tabla de verdad dada


4. Ahora podemos confrontar el resultado anterior con el resultado que obtengamos con el mapa de Karnaugh, para ello tendremos en cuenta las siguientes normas:

a. Slo tendremos en cuenta los unos que identificamos en los cuadros del mapa de Karnaugh

b. Realizaremos grupos de estos unos de tal manera que formemos grupos con nmero de elementos potencias de dos y que sean lneas horizontales, lneas verticales, que formen rectngulos, ejemplos

c. Seleccionamos el grupo o los grupos que mejor relacionen los unos del mapa de Karnaugh, ejemplo

d. Para cada uno de los grupos seleccionados determinamos qu variables slo participan con uno slo de sus estados (1 0) y los seleccionamos con la misma representacin como lo hacemos para los mintrminos, ejemplo

e. Ahora, como la representacin inicial de las variables en el mapa de Karnaugh era con mintrminos, y como los mintrminos son empleados para la minimizacin por la forma cannima de suma de productos, estos dos resultados sern nuestra respuesta, la cual es la misma que nos di en el punto 3
___

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

Leccin 5. Ejercicio Prctico


Con el siguiente ejemplo, trataremos de llevar a la realidad la aplicacin de las herramientas anteriormente expuestas: Las normas de seguridad de los aviones modernos exigen que para seales de vital importancia para la seguridad y estabilidad del Avin, los sistemas de informacin deben estar triplicados para que el fallo de uno de ellos no produzca una catstrofe. En caso de que los tres sistemas de informacin no produzcan la misma salida, sta se escoger mediante mayora de respuestas (votacin), es decir, la funcin de salida es 0 si hay ms ceros que unos en las entradas y la funcin de salida es 1 si hay ms unos que ceros en las entradas. Si cada sistema representa una entrada del sistema F(A, B, C), disee el circuito "votador que ha de utilizarse para obtener como resultado el valor mayoritario de las tres entradas. Solucin: Sabemos que el sistema tiene tres entradas, por lo tanto, tenemos que conocer las posibles combinaciones de esas tres entradas, las cuales son: A 0 0 0 0 1 1 1 1 B 0 0 1 1 0 0 1 1 C 0 1 0 1 0 1 0 1

Como notarn, estas entradas son las combinaciones que nos representara contar en binario desde el cero hasta el siete decimal, y como las entradas sern unos o ceros se acostumbran hacer las posibles combinaciones de esta manera. As que si son dos entradas contaramos del 00 al 11 en binario, si son cuatro entradas contaramos del 0000 al 1111 en binario.

Ahora, de acuerdo a la informacin que se nos suministra debemos indicar cmo seran las salidas si en las entradas la mayora son ceros o unos, por lo tanto, la tabla lgica sera de la siguiente manera: A 0 0 0 0 1 1 1 1 B 0 0 1 1 0 0 1 1 C F(A,B,C) 0 0 1 0 0 0 1 1 0 0 1 1 0 1 1 1

De aqu en adelante, no importa si aplicamos mapas de Karnaugh, o lgebra de Boole, lo importante es tener una expresin lgica que nos represente un circuito lgico combinacional que acte tal cual est en la tabla lgica, as que la funcin de este circuito votador es:
f = AB + BC + AC

Y el circuito correspondiente sera.

Comprobemos por medio del mtodo de mapas de Karnaugh si efectivamente ste es el resultado, para ello necesitaremos un mapa de Karnaugh de tres variables:

De acuerdo a la tabla lgica resultante, tendramos los unos ubicados en el mapa de la siguiente manera:

Recordemos que cuando trabajamos con mintrminos, las variables con salidas en uno cuyas entradas son cero las ubicamos en el mapa negados y con entradas en uno las colocamos en el mapa normalmente. Ahora debemos seleccionar la forma de agrupar los unos de tal forma que realicemos grupos con nmero de unos con cantidades potencias de dos, en este caso el mximo nmero de unos por grupo que podemos armas es de dos:

Ahora, debemos analizar cada uno de los grupos: Respecto al grupo rojo, debemos revisar en ese grupo cul es la variable que cambia de estado, en este caso es la letra B, osea que por este grupo las variables que quedan son AC. Respecto al grupo azul, debemos revisar en ese grupo cul es la variable que cambia de estado, en este caso es la letra A, osea que por este grupo las variables que quedan son BC. Respecto al grupo verde, debemos revisar en ese grupo cul es la variable que cambia de estado, en este caso es la letra A, osea que por este grupo las variables que quedan son AB. Como estamos con mintrminos, agrupamos las tres respuestas como F = AC + BC + AB Lo cual coincide con la respuesta planteada anteriormente.

EJERCICIOS: 1). Investigue en qu consiste la convencin de lgica positiva y lgica negativa? 2) Realice las siguientes operaciones

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

1+1 =

1 0 =
X 0 =
___

1 1 =

Y +1 =
___

X+X = X + X Y =

X+X =

XX =

X + XY + Y =

3). Aplique el Teorema de Morgan: a). XY + CD Z = b). ( XY + ZW ) V = 4). Obtenga las tablas de verdad de las siguientes expresiones:
___ ___ ___ ___ ___ ___________________ ________________ ____________

F = X Y + X Y Z
___

F = X Y + X Y
__ __ __

F = X Y + X Y

F = XY Z + X Y Z + X YZ

5) Obtenga las suma y el producto cannico, el mapa de Karnaugh y la minimizacin de las expresiones de las siguientes tablas:

6) realice la minimizacin de las siguientes expresiones lgicas empleando los dos mtodos de minimizacin y el mapa de Karnaugh: a. F = A C D + B CD + A C D + BCD b. F = WX Z + W X YZ + XZ c. F = ( X + Y ) (W + X + Y ) (W + X + Z ) d. AB C D + A B C + ABD + A CD + BC D
___ ___ ___ ___ __ ___ ___ ___ ___ ___ ___ __ ___ ___ ___ ___ ___

7). Investigue cmo se trabajan los mapas de Karnaugh para cinco o ms variables. 8). Determine la expresin mnima de los siguientes mapas de Karnaugh

CAPTULO 3 Principales Circuitos Integrados


Una de las principales aplicaciones de las compuertas lgicas en los circuitos digitales es como convertidores de cdigos. Los cdigos ms usados son los binarios, BCD (8421), Octal, hexadecimal y el decimal. Como sabemos hasta ahora los circuitos digitales trabajan con 1 y 0, pero las personas en la mayora de los casos, no son capaces de manipular largas cadenas de 1 y 0, por lo cual es necesario convertir la numeracin binaria a la decimal o viceversa.

Leccin 1. Decodificadores BCD a Decimal y BCD a siete segmentos


El cdigo BCD (de las siglas en ingls Binary Coded Decimal) se conoce como Decimal Codificado Binario, el cual codifica los dgitos 0 a 9 por sus representaciones binarias sin signo de 4 bits, del 0000 2 al 10012 . Los trminos del 1010 2 al 11112 no son empleados. El Cdigo Siete Segmentos hace relacin a los Display de Siete Segmentos, los cuales son segmentos formados por diodos emisores de luz, que son empleados para representar visualmente los nmeros decimales y hexadecimales (Ver figura No. 15); cada uno de los segmentos que forman parte de un display tiene un carcter asociado (ver figura No. 16), de tal manera que cuando por ejemplo deseamos representar el nmero 2, debemos iluminar los segmentos a, b, g, c y d. Figura No. 15 Display Siete Segmentos

Figura No. 16 Asignacin de letras a cada Segmento de un Display

Leccin 1. Definicin Multiplexores Codificador BCD a Decimal: Es aquel circuito lgico combinacional con cuatro entradas (las cuales se restringen a los cdigos BCD) y diez salidas, las cuales representan cada uno de los diez dgitos decimales (0, 1, 2, 3, 4, 5, 6, 7, 8 y 9).

Codificador BCD a Siete Segmentos: Es aquel circuito lgico combinacional con cuatro entradas (las cuales se restringen a los cdigos BCD) y siete salidas, las cuales sern conectadas a un display siete segmentos para representar los correspondientes dgitos del cdigo BCD de la entrada. Circuito Bsico de Funcionamiento Codificador BCD a Decimal: La tabla de verdad relacionada con el comportamiento del codificador BCD a Decimal es la siguiente:

En la tabla se puede apreciar que el cdigo BCD es el valor correspondiente a cada dgito en decimal con su valor en binario, por lo cual, cada posicin binaria de la entrada ha sido asignada con las letras A, B, C y D, siendo esta asignacin en orden ascendente a su correspondiente valor numrico. Ahora, se entiende que el sistema tiene diez salidas, las cuales corresponden a cada uno de los dgitos decimales segn el correspondiente cdigo binario en la entrada, y cada una de ellas se activar (estado en 1) solamente cuando su respectivo cdigo binario est en la entrada del sistema. Por lo tanto, para analizar el esquema lgico a emplear, se puede pensar en la tabla como el resultado de condensar diez tablas con las mismas entradas, pero con cada una de las salidas correspondientes a cada uno de los dgitos decimales. Podemos analizar cada una de las tablas por medio de mintrminos, de dnde slo analizaremos los correspondientes a las salidas en 1, de tal forma que tendremos las siguientes diez expresiones lgicas:
___ ___ ___ ___

F ( D, C , B, A) = D C B A
___ ___ ___

(Para el dgito cero) (Para el dgito uno)

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

___ ___

___

F ( D, C , B, A) = D C B A
___ ___

(Para el dgito dos) (Para el dgito tres) (Para el dgito cuatro) (Para el dgito cinco) (Para el dgito seis) (Para el dgito siete) (Para el dgito ocho) (Para el dgito nueve)

F ( D, C , B, A) = D C B A
___ ___ ___

F ( D, C , B, A) = D C B A
___ ___

F ( D, C , B, A) = D C B A
___ ___

F ( D, C , B, A) = D C B A
___

F ( D, C , B, A) = D C B A
___ ___ ___

F ( D, C , B, A) = D C B A
___ ___

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

De donde podemos obtener el diagrama lgico de la Figura No. 17. Codificador BCD a Siete Segmentos: La tabla de verdad relacionada con un codificador BCD a Siete Segmentos es la siguiente, teniendo en cuenta que el segmento se iluminar cuando el estado de salida correspondiente sea 1:

Figura No. 17 Circuito lgico para el conversor BCD a Decimal

En la tabla anterior, usted podr notar que para los valores binarios del 1010 2 al 11112 el sistema tiene unas salidas activadas (segmentos), esas salidas a qu informacin en conjunto corresponde?. Como ejercicio prctico, encuentre la mnima expresin lgica para cada una de las salidas (segmentos) y realice el circuito lgico correspondiente al conversor BCD Siete Segmentos. En la figura No. 18 podemos observar el circuito lgico empleado en el CI MC14511B, conversor BCD Siete Segmentos, junto a la tabla de verdad y a la distribucin de pines (cortesa de On semiconductor, www.onsemi.com)

Figura No. 18 Circuito lgico y Tabla de Verdad del CI MC14511B

Conversor BCD Siete Segmentos

Leccin 1.2 codificadores

Los cdigos son cadenas de n bits en las cuales la manera como se combinen sus estados pueden llegar a representar nmeros o adquirir otros significados, ya tenemos el caso del cdigo BCD, en el cual, por medio de 4 bits se representan los dgitos decimales. Definicin Un codificador es aquel circuito lgico que hace la conversin de un cdigo a otro cdigo; algunos de estos cdigos son el GRAY; el cdigo de Caracteres; los cdigos para acciones, condiciones y estados (empleado en la comunicacin del teclado con el PC); los cdigos para detectar y corregir errores; cdigos Bidimensionales; cdigos para la transmisin y el almacenamiento de Datos en Serie (NRZI, BPRZ, AMI; etc.) Circuito Bsico de Funcionamiento Otra forma de expresar dgitos decimales en binario es por medio del cdigo 2421, el cual tiene la siguiente tabla de relacin que a la vez puede ser la tabla de verdad:

De donde podemos deducir las siguientes expresiones lgicas (los nmeros presentes en las expresiones son las variables de las entradas): 2 4 2 1
F (0,1,2,3,4,5,6,7,8,9) = 5 + 6 + 7 + 8 + 9 F (0,1,2,3,4,5,6,7,8,9) = 4 + 6 + 7 + 8 + 9 F (0,1,2,3,4,5,6,7,8,9) = 2 + 3 + 5 + 8 + 9 F (0,1,2,3,4,5,6,7,8,9) = 1 + 3 + 5 + 7 + 9

Y cuyo circuito lgico es el indicado en la Figura No. 19.

Figura No. 19 circuito Lgico del conversor Decimal 2421

Leccin 1.3 Multiplexores En muchas situaciones de la vida nos hemos visto obligados a hacer fila y esperar nuestro turno, en algunos de esos casos, son varias las filas que esperan a que un solo funcionario sea el que les atienda, y en esos casos, el funcionario decide a cual de las filas empieza a atender. Una situacin similar se presenta en los dispositivos electrnicos, por ejemplo un bus de transmisin de Datos, al que muchos dispositivos desean acceder pero deben esperar su turno para hacerlo. Definicin Un multiplexor es un conmutador digital; es el encargado de encauzar datos de una fuente entre n fuentes posibles, a una sola salida. Circuito Bsico de Funcionamiento Realicemos un multiplexor de 4 entradas y una salida, en donde adems se requiere indicarle al circuito cul de las entradas se desea obtener en la salida, por lo tanto se requiere dos entradas adicionales para direccionar los datos deseados; a continuacin podemos observar la tabla de verdad de este circuito. Por primera vez incorporamos en la tabla una X dentro de los estados lgicos, esta X indica que el estado de la variable que la tenga no interesa para el anlisis en la respectiva salida:

En la tabla anterior, hemos empleado la designacin de las entradas como D0, D1, D2 y D3 haciendo referencia al trmino Datos; Las direcciones se han designado como A1 y A0 haciendo alusin al trmino de direccin en ingls (Address); y la Salida se ha denominado O en relacin al trmino de salida en ingls (out). Por lo cual se puede deducir la siguiente expresin lgica:
___ ___ ___ ___

F ( D3, D 2, D1, D0, A1, A0) = D 0 A0 A1+ D1 A0 A1+ D 2 A0 A1+ D3 A0 A1


De dnde el circuito lgico correspondiente se puede analizar en la Figura No. 20. Figura No. 20 Circuito lgico de un multiplexor de cuatro entradas y una salida

Leccin 1.4 compuertas OR Exclusivas y Circuitos de Paridad Una compuerta OR exclusiva (XOR) es aquella compuerta de dos entradas cuya salida es 1 slo cuando una sola de sus entradas es 1, es decir, cuando sus entradas son diferentes. Definicin La operacin XOR algunas veces se reconoce por el smbolo y se define como
___ ___

X Y = X Y + X Y

Una de las mayores aplicaciones de la operacin XOR es la conformar un circuito de Paridad. Un circuito de Paridad se puede definir como aquel circuito lgico que indica si una secuencia o conjunto de bits tiene un nmero par o impar de 1, por lo cual, existen circuitos lgicos de paridad par y circuitos lgicos de paridad impar. Un ejemplo de paridad puede tomarse del nmero 1010 2 , en donde existen slo dos 1, por lo tanto el nmero tiene paridad par. Circuito Bsico de Funcionamiento En la Figura No. 21 se puede observar la compuerta representativa de la operacin XOR y el circuito lgico. Figura No. 21 Compuerta representativa, Tabla de verdad y circuito lgico de la operacin XOR

En la figura No. 22 se puede observar el circuito lgico de un Circuito de Paridad impar para cuatro entradas Figura No. 22 Circuito de Paridad impar de cuatro entradas

Leccin 1.5 comparadores Es muy comn que en un computador o en sistemas de Interconexin de dispositivos o perifricos se requiera la comparacin de dos palabras binarias, ya sea para poder acceder a una direccin, ya sea para comparar la clave de acceso, etc. Algo que es importante definir es el concepto de Byte. Un byte es un conjunto de 8 bits, que en algunos casos representan nmeros binarios, caracteres, cdigos, etc. Y al conjunto de uno o ms Bytes se les conoce como palabra binaria, en donde se adquiere la idea que esta palabra ya no representa exclusivamente un nmero binario. Definicin Un Comparador es un circuito lgico que compara dos palabras binarias indicando si son iguales o no. Circuito Bsico de Funcionamiento Ya conocemos el funcionamiento de la operacin XOR, y hemos notado que cuando las entradas son iguales, la salida de esta operacin es un 0 y en caso contrario es 1; Ahora si empleamos una compuerta XOR para la comparacin de cada uno de los bits de entrada de las palabras que se desean comparar, y las salidas de cada una de esas comparaciones se lleva a una compuerta OR, obtendremos un comparador bsico, en donde un 1 nos indica que son diferentes y un 0 nos indica que son iguales. En la figura No. 23 podemos observar el circuito lgico de un comparador de dos palabras de 4 bits cada una. Figura No. 23 Circuito de Paridad Impar de cuatro entradas

Leccin 2. Sumadores
Una de las mayores aplicaciones de los circuitos electrnicos es el desarrollo de operaciones matemticas, pero nosotros desarrollamos nuestras operaciones en el sistema decimal, as que tenemos que codificar la numeracin decimal a binaria, realizar las operaciones en binario y despus volver a codificar los nmeros a decimales para su visualizacin. Una de las operaciones ms utilizadas en los circuitos electrnicos es la suma y es la base para el desarrollo de algunas otras operaciones. Leccin 2.1 Definicin Sumadores Un sumador es el circuito encargado de realizar la operacin de la suma aritmtica a dos nmeros binarios. Leccin 2.2 Circuito Bsico de Funcionamiento De acuerdo al procedimiento visto en el primer captulo para sumar nmeros binarios, comenzaremos con un circuito que permita sumar dos bits, por lo tanto, el resultado de la suma de estos dos bits debe darnos el resultado correspondiente a la posicin original de los dos bits, y un resultado relacionado con el acarreo necesario para la suma de los bits de la siguiente posicin, segn lo anterior, podemos plantear la siguiente tabla de verdad

Para la columna del resultado, claramente se nota la operacin XOR, y para la columna de acarreo la operacin AND. Para el caso en el cual, se realice la suma de los bits de la posicin uno en adelante, la tabla de verdad requiere de otra entrada, la cual est relacionada con el acarreo proveniente de la suma anterior, por lo tanto, la tabla de verdad se modifica de la siguiente manera:

Para la salida del Resultado, el circuito a emplear lo podemos entender como un circuito de paridad impar para tres bits; para la salida de acarreo podemos tomarlo como el circuito lgico de la siguiente expresin
AcarreoSalida ( A, B 0, B1) = A( B 0 + B1) + B1.B 0

Donde las variables A, B0 y B1 son el Acarreo de Entrada, el bit0 y el bit1 respectivamente. En la figura No. 24 podemos observar los circuitos para sumar los bits de la posicin cero y para sumar los bits de la posicin uno en adelante. Figura No. 24. Circuitos sumadores: a). Circuito sumador de dos bits b). circuito sumador de dos bits con acarreo de entrada

Leccin 2.3 Restadores Definicin El circuito de Resta es aquel que realiza la operacin de sustraer entre dos valores binarios. Circuito Bsico de Funcionamiento Para analizar el circuito de resta, tendremos en cuenta como entradas el bit B0 (Minuendo), el bit B1 (Sustraendo) y el bit P (Indicando el Prstamo entrante de anteriores restas); las salidas del circuito son el bit D (la diferencia resultante) y el bit Psal (Indica el Prstamo saliente para una prxima resta); De estas entradas y salidas, las expresiones lgicas que las relaciona son:

D = B0 B1 P
___ ___

Psal = B0 B1 + B0 P + B1.P
En la figura No. 25 podemos observar el circuito lgico correspondiente a las expresiones lgicas del circuito restador. Figura No. 25 Circuito Lgico de un Restador Completo

Leccin 2.4 ALU El trmino ALU viene de las siglas de la frase en ingls Arithmetic and Logical Unit que significa unidad Aritmtica y lgica; esta unidad hace parte de Microprocesares y Microcontroladores, y es la encargada de realizar las operaciones matemticas. Definicin La unidad Aritmtica y Lgica (ALU) es un circuito combinacional especializado en el desarrollo de operaciones aritmticas y lgicas diferentes a dos valores binarios dados; la seleccin del tipo de operacin requerido se realiza por medio de las entradas destinadas para este fin. Por lo tanto, este tipo de circuito tiene las entradas para los dos valores binarios y entradas adicionales para especificar el tipo de operacin a realizar. Circuito Bsico de Funcionamiento Uno de los circuitos integrados con funciones de ALU es el 74LS181, el cual es una ALU de 4 bits que puede desarrollar 16 posibles operaciones sobre dos nmeros de 4 bits. En la figura No. 26 se puede observar la distribucin de pines, el circuito lgico y la tabla de verdad de este CI.

Leccin 3. Multiplicadores Combinacionales


Cuando estuvimos manejando la multiplicacin binaria, observamos que en realidad es un proceso de corrimientos y sumas que emulan la forma como nosotros multiplicamos con papel y lpiz en el sistema decimal. Pero estos corrimientos y sumas no indican un comportamiento secuencial o que dependa del tiempo, es posible expresar la accin de la multiplicacin por medio de una tabla de verdad. Definicin Un multiplicador combinacional es un circuito lgico con una tabla de verdad que expresa el producto de dos palabras de entrada de n bits como una funcin combinacional. Leccin 2.1 Circuito Bsico de Funcionamiento Realicemos el circuito que realiza la multiplicacin de dos palabras de 2 bits, en donde la primera palabra ser designada por la letra a ( a1a0 ) y la segunda con la letra b ( b1b0 ), y como resultado de esta multiplicacin tendremos una palabra de 4 bits, designada por la letra c ( c3c2c1c0 ). De tal manera que la operacin de la multiplicacin al hacerla en el papel sera:

Figura No. 26 CI 74LS181

De donde podemos obtener las siguientes expresiones lgicas:

c0 = a0b0 c1 = a0b1 a1b1

c 2 = a1b1 (( a 0 b1 )( a1b0 ))
c3 = (a1b1 )(a0b1 )(a1b0 )
Por lo tanto, podemos observar en la figura No. 27 el circuito correspondiente a un multiplicador combinaciones de dos palabras de 2 bits. Figura No. 27 circuito lgico de un Multiplicador Combinacional de dos palabras de 2 bits

Ejercicios: 1). Disee un decodificador de 3 a 8 para decodificar un cdigo Gray. 2). Investigue sobre el Circuito Integrado 74LS139, analice el correspondiente diagrama lgico. 3). Investigue sobre el CI 74LS49 y el CI 74LS47, descargue del Internet las hoja de Datos de estos componentes y comprelos (un posible sitio es www.ti.com) 4) Investigue sobre el CI 74LS148, qu hace y cmo funciona?

Leccin 4 . DISPOSITIVOS LOGICOS PROGRAMABLES


Un Dispositivo Lgico Programable (PLD del trmino Programmable Logic Device) es un circuito integrado que le permite al diseador adecuarlo segn las necesidades especficas para las que se requiere. El diseo del PLD permite a su usuario final programarlo para realizar la funcin requerida en el diseo final en donde se emplear. Leccin 4.1 Memoria ROM El trmino ROM viene de la sigla de Read-Only Memory que significa memoria de slo lectura, por lo tanto, una memoria ROM slo permite leer su contenido, y este contenido est relacionado con la tabla de verdad que relacione cada una de sus posiciones de memoria y su valor respectivo; esto nos permite deducir que la memoria ROM es un circuito combinacional que almacena por medio de una funcin lgica cierta informacin. Es de aclarar que este tipo de memoria es una memoria no voltil, pues su contenido se preserva aunque no est conectada la energa elctrica. Otro punto importante con este tipo de memorias es que su contenido es definido desde su fabricacin o cuando se programa pues el usuario final no tiene posibilidad de variar su contenido. Definicin Una memoria ROM es un circuito combinacional con n entradas y b salidas, en donde las entradas se conocen como entradas de Direccin y tradicionalmente por el trmino en ingls Address cada una de ellas se les llama A0 , A1 , , An 1 ; las salidas se conocen como Salidas de Datos y a cada una de ellas se les llama D0 , D1 , , Db 1 . Circuito Bsico de Funcionamiento Para la memoria ROM podemos hablar de una estructura bsica y no de su circuito bsico, pues dependiendo de su contenido, este se puede representar como un circuito lgico o por medio de una funcin lgica; en la figura No. 28 podemos observar la estructura bsica de una ROM de n entradas y b salidas ( 2 n xb ). Aplicaciones Como se haba comentado antes, una memoria ROM puede almacenar la relacin establecida en una tabla de verdad y por lo tanto, con un solo CI se puede reemplazar el nmero necesario de compuertas discretas para construir el circuito lgico que represente esa tabla de verdad. Por lo tanto, se puede construir una memoria ROM para almacenar cualquier tabla de verdad que satisfaga la cantidad de entradas y salidas requeridas para la misma.

Figura No. 28

Estructura bsica de una ROM de 2 n xb

Un ejemplo muy claro es construir con una memoria ROM de 256 x 8 un multiplicador binario de 4 bits x 4 bits, lo que nos representara usar una memoria ROM de 8 entradas (4 entradas para el multiplicando y 4 para el multiplicador) y 8 salidas (el producto de dos nmeros binarios de 4 bits nos da un nmero de mximo 8 bits), este ejemplo se puede ver en la figura No. 29, la tabla lgica a almacenar en la memoria ROM sera la correspondiente a la multiplicacin de todos los posibles trminos de los dos nmeros binarios de 4 bits. Figura No. 29 configuracin de la memoria ROM 256 x 8 Para realizar una multiplicacin binaria de 4 x 4

Leccin 4.2 PLD Combinacional A diferencia de la memoria ROM, algunos dispositivos se pueden programar despus de la fabricacin del mismo permite varias programaciones, un ejemplo de estos dispositivos son los PLD Combinacionales. Definicin Un PLD combinacional es cualquier dispositivo lgico cuya funcin es especificada por el usuario final despus de ser fabricado el dispositivo. Otro nombre con el cual se conoce este tipo de dispositivo es PLA (de las siglas de Programmable Logic Array) , tambin conocido como un arreglo lgico programable.

Circuito Bsico de Funcionamiento Un ejemplo de un Arreglo Lgico Programable puede ser como el de la figura No. 30, en donde se tiene un dispositivo AND-OR de dos niveles combinacional que puede programarse de tal forma que se pueda aplicar una expresin lgica de suma de mintrminos; el procedimiento de la programacin consiste en daar los fusibles que se colocan antes de la compuerta AND, de tal manera que quedan funcionando slo los que estn relacionados con los mintrminos seleccionados. Figura No. 30 Ejemplo de dispositivo PLA tal como sale de fbrica

Un ejemplo real de un PLA es el componente de Signetics 82S100 el cual tiene 16 entradas, 48 compuertas AND y ochos salidas. De donde podemos concluir que tiene 1536 fusibles para el arreglo AND y 384 fusibles para el arreglo OR Aplicaciones En algunos casos, los PLAs o PLDs se emplean como memorias ROM; como se haba planteado, una memoria ROM se puede representar con una tabla de verdad en donde las entradas identifican la direccin de memoria y las salidas indicaran el valor almacenado en esa posicin de memoria, ahora, si esta tabla de verdad la representamos con varias expresiones de suma de mintrminos y estas expresiones se programan en un PLA, podemos obtener una memoria ROM implementada con este tipo de dispositivos. Con este tipo de CI es fcil realizar la implementacin de grandes circuitos lgicos, con mayor complejidad, emplendose un menor nmero de CI y por lo tanto, un menor espacio empleado.

Leccin 4.3 Memoria RAM El trmino RAM viene de las siglas en ingls de Random Access Memory, lo cual significa Memoria de Acceso Aleatorio. Una memoria RAM no es conocida como un dispositivo lgico programable, pero es igual de estructurado. Cuando se habla de Memorias, se tiene en cuenta el trmino voltil; cuando se dice que una memoria es voltil se entiende que cuando el dispositivo se apaga (se deja de suministrarle energa) toda la informacin contenida en ella se pierde. Definicin Una memoria RAM es un dispositivo semiconductor que puede ser ledo o escrito por una unidad central de procesamiento u otros dispositivos, y es empleado para el almacenamiento de datos. Circuito Bsico de Funcionamiento Un circuito integrado de memoria RAM es el CI 74F189, el cual es una memoria RAM de 64 bits de lectura/escritura, en la figura No. 31 se observa el smbolo lgico con el que se representa la memoria 74F189. Figura No. 31 Smbolo lgico del CI 74F189

Aplicaciones La memoria RAM es una memoria voltil ampliamente usada en computadores para mantener informacin de datos y programas temporalmente. Investigacin: 1). Investigue qu tipos de ROM comerciales existen.

2). Qu otro tipo de entradas requieren las memorias ROM para su funcionamiento? 3). Qu tipos de memoria RAM existen?

BIBLIOGRAFIA WAKERLY , John F. (1992). Diseo Digital: Principios y Prcticas. USA: Prentice-Hall Hispanoamericana. TOKHEIM, Roger L. (1994). Schaum's outlines of theory and problems of digital principles. Tercera Edicin, McGraw-Hill. LU, Mi (2004). Arithmetic and logic in computer systems. John Wiley and Sons, Inc Publication. Zbar, Paul. Malvino Albert, Miller Michael (2001) Prcticas de Electrnica, sptima edicin. Alfaomega Universidad Nacional de Colombia (2003). "Electrnica Digital I". En: http://www.virtual.unal.edu.co/cursos/ingenieria/2000477/index.html

SEGUNDA UNIDAD DIDCTICA

LENGUAJE VHDL

Captulo No. 1 Introduccin al lenguaje VHDL

Leccin 1. INTRODUCCION AL LENGUAJE VHDL


El lenguaje VHDL es un lenguaje descriptor de Hardware o, en otras palabras, es un lenguaje para la descripcin de sistemas electrnicos digitales y de esta descripcin el sistema o circuito real puede ser implementado El lenguaje VHDL se soporta en el lenguaje de descripcin de Hardware VHSIC; en donde la abreviacin VHSIC viene del trmino ingls Very High Speed Integrated Circuits (Circuitos integrados de muy alta velocidad). Esta versin inicial fue iniciativa del Departamento de Defensa de los Estados Unidos en la dcada del 80. Actualmente, la IEEE (Institute of Electrical and Electronics Engineers) tiene el Estndar de este lenguaje como el IEEE 1076, y un estndar posterior, el IEEE 1164. El lenguaje VHDL es un estndar, por lo cual, el lenguaje es independiente de la tecnologa o el fabricante que lo emplee en sus dispositivos, y esto lo hace porttil y reutilizable. Este lenguaje es principalmente utilizado en el campo de los dispositivos lgicos programables y en Circuitos Integrados de aplicacin Especfica (ASIC, del trmino en ingls Application Specific Integrated Circuits). El lenguaje VHDL es un lenguaje de programacin como tal, pues incluye tipos de Datos, Paquetes, Instrucciones secuenciales, Procedimientos, Funciones, Estructuras de control y archivos de entrada y salida; adems, este lenguaje contiene estructuras para definir y simular eventos, sincronizacin y concurrencia. A la vez, facilita la documentacin de instrucciones segn la arquitectura, estados de mquina, estructuras y jerarquas de diseo de hardware. Pero existen diferencias entre el diseo de un paquete de software y el diseo de un sistema electrnico las cuales son: Un sistema electrnico es un sistema en paralelo. Todos los circuitos en un sistema electrnico siempre estn funcionando. En cambio, en un sistema de software se tiene la nocin de flujo del programa, en donde secuencias de instrucciones son ejecutadas por lazos o por estructuras condicionales. Un paquete de software casi siempre est enfocado al diseo del comportamiento del sistema. En un sistema electrnico, no solamente el comportamiento del sistema se tiene en cuenta, tambin se analiza la estructura del sistema, la forma como se distribuyen las funciones, el tipo de tecnologa a emplear, la sincronizacin del sistema, etc. En el diseo de sistemas electrnicos, la posibilidad de probar el sistema en su aplicacin final es muy limitada, a diferencia de los sistemas de software que por medio de mltiples recopilaciones del diseo se puede

optimizar el producto final. Por ejemplo, en el caso del diseo de un circuito integrado complejo, en el cual, slo existe una oportunidad de enviarlo a la fbrica de circuitos integrados y obtener una versin del mismo en una pastilla, es muy importante tener las herramientas de soporte que permitan en el diseo una detallada simulacin y evaluacin del mismo, que garanticen que el diseo enviado a fabricar es el ptimo.

Leccin 1.1 DESCRIPCIN DE LA ESTRUCTURA Un sistema electrnico se representa como un mdulo con entradas y salidas, en donde el comportamiento de las salidas est representado por una expresin lgica dependiente del estado de las entradas. En la figura No. 32 se observa la representacin estructural de un sistema digital de dos entradas (X, Y) y una salida (F); en trminos del lenguaje VHDL todo el sistema es conocido como una entidad (ENTITY = es el smbolo o nombre que representar al sistema) y las entradas y salidas se conocen como puertos (ports)

Figura No. 32 Representacin estructural de un sistema digital De dos entradas y una salida

Como la salida del sistema est representada por una expresin lgica, esta expresin lgica nos indica la manera como se compone el sistema en pequeas partes o sub-mdulos. Cada uno de estos sub-mdulos son conocidos como instancias o casos (instance), y los puertos de estas instancias son interconectados por seales (signals). Como ejemplo, podemos observar en la figura No. 33 las instancias que conformaran la representacin estructural de la figura No. 32. Tngase en cuenta que cada una de las instancias A, B y C pueden estar compuestas a su vez por otro tipo de instancias. Leccin 1.2 DESCRIPCIN DEL COMPORTAMIENTO La expresin lgica que permite determinar el comportamiento de un sistema digital es conocida como descripcin del comportamiento o descripcin funcional (functional or behavioural description). Esta descripcin del comportamiento lgico del sistema es el cdigo apropiado en lenguaje VHDL que lo describe, y es ubicado en la seccin de arquitectura (architecture). Algunas de estas descripciones del comportamiento lgico estn ubicadas en la seccin de la librera (library), la cual es una coleccin de las partes de cdigo ms comnmente usadas, las cuales se pueden usar en diferentes diseos. El cdigo empleado para una librera es usualmente escrito en forma de funciones (functions), procedimientos (procedures) o componentes (components), y todo lo anterior es ubicado dentro de paquetes. Figura No. 33 Ejemplo de una representacin estructural de un sistema digital por medio de instancias

Leccin 1.3 DESCRIPCIN DEL PROCESO DE DISEO Es costumbre seguir los siguientes pasos para el diseo de un sistema electrnico: Realizar una descripcin del comportamiento del sistema a disear. Realizar una simulacin del comportamiento del sistema deseado. Realizar una descripcin estructural del sistema en diseo. Implementar el diseo realizado en el tipo de tecnologa seleccionada. Para el caso de disear sistemas electrnicos con el lenguaje VHDL, los pasos anteriores se realizan en paralelo, es decir, la descripcin del comportamiento, la descripcin estructural y la simulacin se realizan a la par, lo que nos permite obtener al final un listado de interconexiones que al ser implementada se obtiene un CI con las caractersticas deseadas. Las secciones bsicas de un cdigo VHDL se pueden observar en la figura No. 34 en donde se puede observar la seccin de librera, entidad y arquitectura. Para declarar el uso de una librera en el cdigo VHDL es necesario ubicar al principio las siguientes dos lneas de comando: LYBRARY nombre_de_la_librera; USE nombre_de_la_librera.nombre_del_paquete.partes_del_paquete; En la primera lnea se indica el nombre de la librera a emplear, en la segunda lnea se especifica cual de los paquetes de la librera se manejar y en detalle cada una de las partes del mismo. Casi siempre los paquetes que ms se emplean son: ieee.std_logic_1164 el cual pertenece a la librera ieee y especifica un sistema lgico multinivel. 81entro81d de la librera std, especifica recursos como tipos de datos, textos de entrada y salida, etc. work de la librera work, es donde se almacenan los diseos realizados.

Figura No. 34 Secciones bsicas de un cdigo VHDL

Para la seccin de la entidad es necesario el siguiente cdigo bsico:


ENTITY nombre_de_la_entidad IS PORT ( Nombre_del_puerto : modo_de_funcionamiento tipo_de_seal; Nombre_del_puerto : modo_de_funcionamiento tipo_de_seal; . . . . . ); END nombre_de_la_entidad;

Como se haba comentado, una entidad es un sistema lgico que contiene entradas y salidas denominadas puertos, cada uno de estos puertos tienen un nombre asignado por el programador, y dependiendo de su funcin en el sistema, cada uno de los puertos tiene un modo de funcionamiento (mode) el cual indica si es una entrada (IN), una salida (OUT), una entrada-salida (INOUT) o una interfaz (BUFFER). Cuando hablamos de interfaz, nos referimos a que este puerto ser una salida que tendr una influencia dentro del comportamiento del mismo sistema (realimentacin). Para cada puerto, se tiene la posibilidad de indicar qu tipo de seal manejar, es decir, si ser un bit (BIT), un estado lgico (STD_LOGIC), un entero (INTEGER), etc. En cuanto al nombre de la entidad, se puede cualquiera siempre y cuando no sea una de las palabras reservadas por el cdigo VHDL (consultar el estndar 1164 de la IEEE). Tomemos como ejemplo el cdigo que describe una compuerta OR, cuyas entradas se llaman A y B, y su salida C:
ENTITY compuerta_OR IS PORT(A, B : IN BIT; C : OUT BIT); END compuerta_OR ;

Para la seccin de la arquitectura se tiene en cuenta el siguiente cdigo:


ARCHITECTURE nombre_de_la_arquitectura OF nombre_de_la_entidad IS (declaraciones) BEGIN (cdigo) END nombre_de_la_arquitectura;

En el mismo caso que del nombre de la entidad, puede ser cualquier nombre de la arquitectura excepto las palabras reservadas por el lenguaje VHDL. En la parte de las declaraciones, la cual es opcional, se realiza una declaracin de las seales y constantes presentes en el sistema. En la parte del cdigo se incorpora la descripcin del comportamiento lgico del sistema. Continuemos con el ejemplo de la compuerta OR, en cuyo caso el cdigo correspondiente en la seccin de arquitectura sera:
ARCHITECTURE comp_OR OF compuerta_OR IS BEGIN C <= A OR B; END comp_OR;

Leccin 1.4 DESCRIPCIN DEL LEXICO A EMPLEAR En el lenguaje VHDL se tienen identificados los siguientes tems: Comentarios Los comentarios en el lenguaje VHDL comienzan con dos guiones seguidos (--) y representa como comentario toda la escritura que sigue a los guiones hasta el final del rengln correspondiente. Los comentarios los puede emplear el programador como instrumento de explicacin o aclaracin con relacin a alguna parte del programa desarrollado. identificadores Los identificadores son las palabras reservadas por el lenguaje y los nombres definidos por el programador (variables, seales, rutinas, etc). Estos identificadores se deben establecer de la siguiente manera: Identifier ::= letras ( letras_o_digitos) En los identificadores definidos por el programador no existen diferencias entre las letra minsculas y maysculas, por lo cual, es lo mismo el trmino Numero a numero. Los identificadores no pueden contener caracteres especiales (ver ms adelante) ni empezar por un nmero o subrayado.

Nmeros Los nmeros literales se pueden expresar en cualquier base numrica; si el nmero tiene un punto se entiende que se est representando un nmero real, en caso contrario se est representando un nmero entero. Los nmeros literales decimales se definen como: Literal_decimal ::= integer [ . entero] [ exponente ] Entero ::= digit ( [ underline ] digito ) Exponente ::= E [ + ] entero E entero Ejemplos: 0 1 0.0 0.5

123_456_789 2.756_45

852E6 12.4E-9

--enteros literales --reales literales

Cuando se representan nmeros literales de bases numricas diferentes a la decimal, se representan de la siguiente manera: Literal_base ::= base # entero_base [ . entero_base ] # [ exponente ] Base ::= entero Entero_base ::= digito_extendido ( [underline ] digito_extendido ) Digito_extendido ::= digito letra En estos casos, la base y el exponente se representan en el sistema decimal; el exponente indica la potencia por la cual el nmero literal es multiplicado. Para el caso del sistema hexadecimal, las letras de A hasta la F son empleados para representar los dgitos del 10 al 15, por lo cual estos dgitos se pueden representar en minscula o mayscula. Ejemplos: 2#1100_0100# 16#C4# 2#1.1111_1111_111#E+11 4#301#E1 -- el nmero entero 196 16#F.FF#E2 -- el nmero real 4095.0

Caracteres En algunos casos, se necesitar tener el cdigo ASCII de algunos caracteres como el valor de una variable, para tal caso, al asignar el valor del carcter es necesario colocarlo entre comillas sencillas, ejemplos: A 2 5 ,

Adems, existen smbolos o caracteres especiales representados por un solo caracter ( + - / * ( ) . , : ; & > < = # ) o por dos caracteres ( ** => := /= >= <= <> -- )

Cadena de caracteres Una cadena de caracteres es un conjunto de caracteres asignados a una variable, en la mayora de los casos es una oracin, un nombre, etc. Las cadenas de caracteres se forman colocndolos entre comillas dobles. Ejemplos: sistemas digitales bsicos una cadena de caracteres especial Cadena de Bits En el lenguaje VHDL se permite la manera de especificar arreglos de cadenas tipo bit, es decir, cuyo contenido est relacionado con 1 y 0. La manera de especificar este tipo de cadenas es: Cadena_de_bits ::= base_especifier bit_value Base_especifier ::= B O X Bit_value ::= dgito_extendido ( [ undeline ] digito_extendido ) Para especificar la base numrica se tiene en cuenta que la B indica binario, la O indica octal y la X indica hexadecimal. Ejemplos: B110110101 O134 X65 --el nmero equivalente sera B001_011_100 --el nmero equivalente sera B0110_0101

Operadores El lenguaje VHDL tiene pre-establecido las siguientes clases de operadores: Operadores de Asignacin: Son usados para asignar valores a las seales, variables y constantes. Ellos son: o <= asigna un valor a una seal o := asigna un valor a una variable, constante o genricos. Establece tambin valores iniciales. o => asigna valores a elementos individuales de un vector. Ejemplos:

SIGNAL A : STD_LOGIC; VARIABLE B : STD_LOGIC_VECTOR (3 DOWNTO 0); SIGNAL C : STD_LOGIC_VECTOR (0 TO 7); -- entonces las siguientes asignaciones son correctas: A <= 1; --se asigna el valor 1 a la seal A usando <= B := 0000; --se asigna el valor 0000 a la variable B usando := C <= 10000000 --el bit menos significativo es 1 y el resto es 0 C <= ( 0 => 1, OTHERS => 0); -- el bit menos significativo es 1 y el --resto es 0

Operadores de Concatenacin: Son usados para concatenar matrices de tal forma que la dimensin de la matriz resultante es la suma de las dimensiones de las matrices originales, ejemplo: Raiz<=x&y --Esta operacin construye una matriz Raiz colocando a la
matriz x en las primeras posiciones y a la matriz y en las ltimas

Operadores lgicos: Son usados para ejecutar operaciones lgicas, pero los objetos deben ser de tipo BIT, STD_LOGIC, o STD_ULOGIC; los operadores lgicos son: o NOT o AND o NAND o OR o NOR o XOR o XNOR Operadores aritmticos: Son usados para realizar operaciones aritmticas; los datos deben ser de tipo INTEGER, SIGNED, UNSIGNED y REAL. Los operadores son: + suma - resta * multiplicacin / divisin ** exponenciacin MOD mdulo REM Residuo ABS valor absoluto ** Exponencial Operadores de comparacin o relacionales Son usados hacer comparaciones entre datos dando como respuesta un valor de tipo booleano (TRUE o FALSE); los operadores de comparacin son: o o o o o o = /= < > <= >= igual a no es igual a menor que mayor que menor o igual que mayor o igual que

Operadores de desplazamiento Son usados para realizar desplazamientos de datos. Los operadores de desplazamiento son: SLL desplazamiento lgico a la izquierda las posiciones a la derecha del dato son reemplazadas por 0

SRL desplazamiento lgico a la derecha las posiciones a la izquierda del dato son reemplazadas por 0 SLA desplazamiento aritmtico a la izquierda --conserva el signo, es decir mantiene el valor del bit ms significativo SRA desplazamiento aritmtico a la derecha --conserva el signo del bit ms significativo. ROL rotacin a la izquierda ROR rotacin a la derecha Instruccin IF La instruccin IF permite seleccionar la ejecucin de un cdigo en dependencia de una o ms condiciones. Las lneas de cdigos para esta instruccin son:
IF condicin THEN Secuencia_de_instruccin ELSIF condicin THEN Secuencias_de_instruccin ELSE Secuencia_de_instruccin END IF; --si cumple la condicin se realiza la instruccin

--en el caso que no se cumpla, se realiza esta

Instruccin CASE La instruccin CASE realiza o ejecuta un cdigo si el valor de una expresin se encuentra dentro de las condiciones planteadas. La lnea de cdigo para esta instruccin es:
CASE expresin_condicional IS Instruccin_alternativa_en_caso_de cumplirse_la_condicin END CASE; Instruccin_alternativa_en_caso_de cumplirse_la_condicin ::= WHEN seleccin => Secuencia_de_instrucciones Seleccin ::= choice Choice ::= Expresin_simple

La seleccin de la expresin debe resultar o en un objeto tipo discreto o un arreglo unidimensional de caracteres. Cuando la alternativa planteada es seleccionada de una lista de selecciones, se ejecuta una instruccin destinada por esa seleccin, por lo cual, todas las posibles selecciones deben ser distintas. Instruccin LOOP La instruccin LOOP permite ejecutar una instruccin una cantidad de veces. Las lneas de cdigo para esta instruccin son:
Nombre_del_LOOP : WHILE condicin LOOP Secuencia_de_instrucciones END LOOP nombre_del_loop ;

Instruccin NULL La instruccin NULL no tiene ningn efecto sobre el programa, indica que en ciertos casos no se realiza nada, es muy empleada como instruccin en algunas selecciones de la instruccin CASE. Instruccin ASSERTION Esta instruccin indica la afirmacin de una expresin, en muchos casos se emplea para verificar la no violacin de una condicin y en tal caso reportarlo. Las lneas de cdigo empleadas para esta instruccin son:
ASSERT condicin REPORT expresin SEVERITY expresin ;

Palabras reservadas Las palabras reservadas son aquellas que tienen un significado especial para el lenguaje VHDL. Son instrucciones, elementos y rdenes que se utilizan para definir sentencias. Las palabras reservadas para el VHDL87 son: ABS ALL ASSERT BODY CONFIGURATION ELSE EXIT GENERATE IN LIBRARY MOD NOR ON OUT PROCESS REM SEVERITY TO UNTILL WHEN ACCESS AND ATRIBUTE BUFFER CONSTANT ELSIF FILE GENERIC INOUT LINKAGE NAND NOT OPEN PACKAGE RANGE REPORT SIGNAL TRANSPORT USE WHILE AFTER ARCHITECTURE BEGIN CASE DISCONNECT END FOR GUARDED IS LOOP NEW NULL OR PORT RECORD RETURN SUBTYPE TYPE VARIABLE WITH ALIAS ARRAY BLOCK COMPONENT DOWNTO ENTITY FUNCTION IF LABEL MAP NEXT OF OTHERS PROCEDURE REGISTER SELECT THEN UNITS WAIT XOR

Las palabras que complementan la lista anterior en el VHDL93 son: GROUP POSTPONED ROR SRA IMPURE PURE SHARED SRL INERTIAL REJECT SLA UNAFFECTED LITERAL ROL SLL XNOR

Leccin 2. DISEO JERARQUICO


Como se ha descrito hasta el momento, un sistema electrnico se puede representar en el lenguaje VHDL por medio de lo que se ha denominado entidades, y a la vez, se ha descrito que cada una de esas entidades puede ser compuesta por mltiples sub-entidades. Estas mltiples sub-entidades son las que conforman bloques internos que permiten estructurar el comportamiento de la entidad por secciones o sectores. Esta subdivisin de la entidad en pequeos bloques internos es lo que permite el diseo jerrquico, es decir, determinar que elemento del sistema prevalece sobre los dems, en este caso, la jerarqua se basa en la conformacin de los diferentes bloques y su interrelacin. Como se observ en los ejemplos del captulo anterior, en las secciones del cdigo relacionado con la entidad y la arquitectura del mismo, es donde se establecen los diferentes bloques e interrelaciones de los mismos; se establecen la funcionalidad de los puertos y sus modos de trabajo (IN, OUT, etc.)

Leccin 3. OBJETOS
Los objetos en el lenguaje de programacin hacen referencia a las entidades o elementos que contienen un valor determinado de ciertas propiedades (tipos types) y que permiten el almacenamiento del mismo o su transferencia a otras entidades. Existen cuatro tipos de objetos en el lenguaje VHDL: Constante (constant) Seal (signal) Variable (variable) Archivo (file) Cada uno de estos objetos debe declararse dentro del cdigo VHDL ya sea como una declaracin (en la seccin de arquitectura), como parte de un lazo de control o decisin, como el parmetro de un sub-programa, o como puerto de entrada o salida de un bloque. Constante Es un objeto cuyo valor asignado no cambia, es esttico. Para declarar una constante se siguen las siguientes lneas de comando:
CONSTANT nombre_de_la_constante : tipo_de_constante := valor_asignado;

Ejemplo:

CONSTANT cambio : INTEGER := 4;

En donde se declara una constante llamada cambio cuyo valor ser el entero 4. Variable Es un objeto de cualquier tipo que es comnmente usado como una memoria temporal, y cuyo valor es fcilmente cambiado o alterado segn los requerimientos del cdigo empleado. Para declarar una variable se sigue la siguiente lnea de comando:
VARIABLE nombre_de_la_variable : tipo_de_variable ;

Seal Se llama seal a la interconexin existente entre los puertos presentes en el sistema electrnico que se disea, por lo cual, una seal represente el cable que se usara para la interconexin o el nivel de voltaje presente en el mismo. Tambin permite establecer un control temporizado e indicar retardos. Las seales son comnmente declaradas en la seccin de arquitectura, pero su comportamiento est relacionado con el modo declarado para el puerto que se relacione con la seal, es decir: si el puerto es declarado como entrada, la seal correspondiente se puede leer pero no se puede modificar.

Si el puerto es declarado como salida, la seal correspondiente se puede modificar pero no se puede leer. Si el puerto es declarado entrada-salida, la seal correspondiente se puede modificar y leer. Si el puerto es declarado como interfaz, la seal correspondiente se puede leer y slo la puede modificar la fuente correspondiente. Para declarar una seal se sigue la siguiente lnea de comando:
SIGNAL nombre_de_la_seal : tipo_de_seal <= valor_asignado ;

Leccin 4. TIPOS Y SUBTIPOS


El tipo y subtipo de un objeto permite indicar las restricciones sobre los valores que pueden asumir, as como la manera como se pueden manipular. Dentro de los tipos y subtipos de datos u objetos permitidos por el lenguaje VHDL tenemos: Tipos de Datos pre-definidos Existen en los estndares IEEE 1076 e IEEE 1164 una serie de tipos de datos predefinidos, los cuales especifican el rango de valores que puede asumir el objeto, estos rangos estn almacenados en el paquete STANDARD que est dentro de la librera STD. Estos rangos de valores representan restricciones que en el cdigo VHDL se conocen como CONSTRAINT; Existen cuatro clases de tipos de objetos: Escalar (scalar) Compuesto (composite) De acceso o de entrada (access) De archivo (file) Tipo Escalar Existen cuatro tipos de objetos escalares: Escalar de enumeracin (enumeration) o Es un arreglo de identificadores o caracteres que ya tiene un valor numrico asignado, como por ejemplo:
TYPE BOOLEAN IS (FALSE, TRUE); TYPE BIT IS (0, 1); TYPE CHARACTER IS (NUL, SOH, , A, B, , DEL);

Escalar entero (integer) o Son tipos numricos, es decir, el objeto puede asumir un valor numrico dentro de un rango (RANGE) permitido, ejemplo:
TYPE INTEGER IS RANGE -65536 TO 65536 ;

Escalar fsico (physical) o Son usados en simulaciones para representar medidas de algunas cantidades como tiempo o distancia. Escalar de punto flotante o real (floating point) o Estos tipos de objetos permiten el uso de nmeros reales. Tipo Compuesto Un objeto tipo compuesto es un conjunto de objetos de tipo escalares y compuestos, los cuales pueden ser organizados como: Arreglo o coleccin (array)

o Un objeto de tipo arreglo es un conjunto de nmeros escalares o de objetos compuestos, los cuales todos son del mismo tipo; existen dos tipos de arreglos: Cadena de caracteres (string) Es un arreglo en el cual, todos los elementos presentes son del tipo carcter. Vector de Bits (bit_vector) Es un ejemplo de un arreglo unidimensional en donde se especifica el nombre, el rango y el tipo de elementos presentes. Relacin o registro (record) o Un objeto de tipo relacin es un conjunto de objetos de todo tipo. Tipo de Acceso Este tipo de objeto es usado para declarar objetos que acceden de forma dinmica a variables, es decir, continuamente estn revisando o consultando los valores de ciertas variables, y para ello requieren tener un direccionamiento de las mismas que les permita acceder fcilmente a ellas. Este tipo de Acceso puede direccionarse solamente a Objetos escalares, Objetos de Arreglo (array), y objetos de relacin (record) Tipo de Archivo Este tipo de objetos representan objetos almacenados en el ambiente de desarrollo en el cual se est programando Subtipos Un subtipo es un tipo con una limitacin al rango de valores original; la preferencia de generar un subtipo y no un nuevo tipo de objeto se deriva de la facilidad con la cual el subtipo hereda todas las cualidades del tipo original, claro est con las limitaciones impuestas en la nueva definicin. Ejemplo de definicin de subtipos:
SUBTYPE corto IS INTEGER RANGE 1 TO 10; SUBTYPE largo IS INTEGER RANGE 1 TO 20; SIGNAL X : corto; SIGNAL Y : largo;

Leccin 5. ORGANIZACIN DE DISEO


Como se haba comentado, en un cdigo VHDL se distinguen fcilmente tres secciones diferentes: la de la librera, la de la entidad y la de la arquitectura; cada una de estas secciones tiene un cdigo general para ser declaradas: Entidad:
ENTITY identificador IS GENERIC Listado_general_componentes PORT Listado_general_de_puertos

BEGIN

Instrucciones_entidad END identificador ;

Arquitectura:
ARCHITECTURE identificador OF nombre_de_la_entidad IS Declaracin_del_Subprograma Declaracin_de_tipos Declaracin_de_subtipos Declaracin_de_constantes Declaracin_de_seales ::= SIGNAL lista_de_identificadores expresin ; : subtipos clase_de_seal :=

Declaracin_de_componentes ::= COMPONENT identificador Descripcin_del_componente END identificador; BEGIN Configuracin_y_uso

Instrucciones END identificador ;

GENERIC define y declara propiedades o constantes del mdulo que estn siendo declaradas en la Entidad. PORT Define las entradas y salidas del mdulo que se est definiendo.

Manejo de Flujo de Datos Para poder establecer ciertas sentencias que permitan hacer asignaciones por medio de condicionales, debemos tener claro el funcionamiento de cada uno de ellos: WHEN ELSE Para emplear este condicional se debe seguir la estructura siguiente: Seal<=valor WHEN condicin ELSE Se pueden colocar varios condicionales anidados, ejemplo: S<=1 WHEN a=b ELSE 0 WHEN a>b ELSE 2; WITH ... SELECT WHEN Esto se emplea cuando se desea hacer una asignacin de valor que dependa del resultado de una expresin determinada. La estructura condicional de este condicional es la siguiente: WITH expresin SELECT Seal <= forma_de_onda WHEN caso; Un ejemplo de la aplicacin del mismo sera: WITH status SELECT Luces_semforo <= ROJO WHEN 00, VERDE WHEN 01, AMARILLO WHEN 10, NO_FUNCIONA WHEN 11;

BLOCK La funcionalidad de este condicional es la de crear subdivisiones de condicionales de ejecucin dentro de una misma entidad. La estructura bsica de este condicional es: nombre_del_bloque: BLOCK Expresin IS Declaraciones_opcionales BEGIN Sentencias_condicionales END BLOCK nombre_del_bloque;

CAPITULO 2 DISEO LOGICO COMBINACIONAL CON VHDL

Leccin 1. MULTIPLEXORES 4 A 1
Recordemos la tabla lgica del multiplexor 4 a 1 vista anteriormente:

El cdigo ejemplo para este multiplexor sera:


----------------------------------------------------------------------------LIBRARY ieee; USE ieee.std_logic_1164.all; ----------------------------------------------------------------------------ENTITY multiplexor_4_a_1 IS PORT ( D3, D2, D1, D0 : IN BIT; direccion : IN STD_LOGIC_VECTOR ( 1 DOWNTO 0) ; Salida : OUT BIT ); END multiplexor_4_a_1 ; ----------------------------------------------------------------------------ARCHITECTURE ejemplo OF multiplexor_4_a_1 IS BEGIN PROCESS ( D3, D2, D1, D0, direccion, salida) BEGIN IF ( direccion = 00 ) THEN Salida <= D0; ELSIF ( direccion = 01) THEN Salida <= D1; ELSE (direccion = 10) THEN Salida <= D2; ELSE Salida <= D3; END IF; END PROCESS ; END ejemplo ;

En el ejemplo anterior, se indican la entradas D3, D2, D1 y D0 como bits, la direccin como un vector de 2 bits, y la salida como un bit; en la declaracin de la arquitectura de este ejemplo se emplea la instruccin IF para seleccionar la salida en el multiplexor dependiente del estado de la direccin. Este mismo multiplexor se puede implementar en cdigo VHDL empleando operaciones lgicas de la siguiente manera:

----------------------------------------------------------------------------LIBRARY ieee; USE ieee.std_logic_1164.all; ----------------------------------------------------------------------------ENTITY multiplexor_4_a_1 IS PORT ( D3, D2, D1, D0, A1, A0: IN STD_LOGIC; Salida : OUT STD_LOGIC ); END multiplexor_4_a_1 ; ----------------------------------------------------------------------------ARCHITECTURE ejemplo_lgico OF multiplexor_4_a_1 IS BEGIN Salida <= (D0 AND NOT A1 AND NOT A0) OR (D1 AND NOT A1 AND A0) OR (D2 AND A1 AND NOT A0) OR (D3 AND A1 AND A0); END ejemplo_lgico ;

Tambin se puede implementar por medio de la instruccin WHEN:


----------------------------------------------------------------------------LIBRARY ieee; USE ieee.std_logic_1164.all; ----------------------------------------------------------------------------ENTITY multiplexor_4_a_1 IS PORT ( D3, D2, D1, D0: IN STD_LOGIC; Direccin: IN STD_LOGIC_VECTOR (1 DOWNTO 0); Salida : OUT STD_LOGIC ); END multiplexor_4_a_1 ; ----------------------------------------------------------------------------ARCHITECTURE ejemplo_when OF multiplexor_4_a_1 IS BEGIN Salida <= D0 WHEN direccin=00 ELSE D1 WHEN direccin=01 ELSE D2 WHEN direccin=10 ELSE D3; END ejemplo_when ;

O por medio de la instruccin SELECT:


----------------------------------------------------------------------------LIBRARY ieee; USE ieee.std_logic_1164.all; ----------------------------------------------------------------------------ENTITY multiplexor_4_a_1 IS PORT ( D3, D2, D1, D0: IN STD_LOGIC; Direccin: IN STD_LOGIC_VECTOR (1 DOWNTO 0); Salida : OUT STD_LOGIC ); END multiplexor_4_a_1 ; ----------------------------------------------------------------------------ARCHITECTURE ejemplo_select OF multiplexor_4_a_1 IS BEGIN WITH direccion SELECT Salida <= D0 WHEN 00 , --noten el uso de un , en lugar de la ; D1 WHEN 01 ,

D2 WHEN 10 , D3 WHEN OTHERS; --noten que no se puede emplear D3 --WHEN 11 por lo cual se emplea el --trmino OTHERS que indica --las dems posibles opciones END ejemplo_when ;

Leccin 2. CONVERTIDORES BCD A SIETE SEGMENTOS


Recordemos la tabla de verdad del conversor BCD a siete segmentos:

El cdigo ejemplo para este tipo de conversor sera:


----------------------------------------------------------------------------LIBRARY ieee; USE ieee.std_logic_1164.all; ----------------------------------------------------------------------------ENTITY siete_segmentos IS PORT ( entrada : IN BIT_VECTOR ( 3 DOWNTO 0) ; Salida : OUT BIT_VECTOR (6 DOWNTO 0) ); END siete_segmentos ; ----------------------------------------------------------------------------ARCHITECTURE siete_segmentos OF siete_segmentos IS BEGIN PROCESS (entrada) BEGIN CASE entrada IS WHEN 0000 => salida <= 1111110; WHEN 0001 => salida <= 0110000; WHEN 0010 => salida <= 1101100; WHEN 0011 => salida <= 1111001; WHEN 0100 => salida <= 0110011; WHEN 0101 => salida <= 1011011; WHEN 0110 => salida <= 0011111; WHEN 0111 => salida <= 1110000; WHEN 1000 => salida <= 1111111; WHEN 1001 => salida <= 1110011; WHEN 1010 => salida <= 1110111; WHEN 1011 => salida <= 0011111; WHEN 1100 => salida <= 1001110; WHEN 1101 => salida <= 0111101; WHEN 1110 => salida <= 1001111;

WHEN 1111 => salida <= 1000111; END CASE; END PROCESS; END siete_segmentos; -----------------------------------------------------------------------------

Leccin 3. SUMADORES
Recordemos el sumador de dos bits con acarreo de entrada de la figura No. 24 b), el cual se representa en la figura No. 35. El cdigo VHDL para este sumador sera:
ENTITY sumador IS PORT (B0, B1, A: IN BIT; Resultado, Acarreo_de_Salida: OUT BIT; END sumador; --------------------------------------------------------------------ARCHITECTURE dataflow OF sumador IS BEGIN Resultado <= B0 XOR B1 XOR A; Acarreo_de_Salida <= (B0 AND B1) OR (B0 AND A) OR (B1 AND A); END dataflow

En este cdigo, el nombre de la entidad es sumador, y es donde se realiza la descripcin de los puertos de entrada y salida a emplear, tambin se realiza una descripcin de la arquitectura de la entidad, en donde se describe el comportamiento lgico del circuito. Figura No. 35 Sumador de dos bits con acarreo de entrada

Es importante tener en cuenta que dependiendo del software compilador y del tipo de tecnologa en el cual se emplear el cdigo, ser la manera de implementar las expresiones lgicas descritas en la parte de la arquitectura en el cdigo VHDL. Por ejemplo, si la tecnologa escogida son los PLDs o FPGAs, la expresin para el bit de Acarreo_de_Salida tendra dos opciones:
Acarreo _ de _ Salida ( A, B 0, B1) = A.B 0 + A.B1 + B1.B 0 Acarreo _ de _ Salida ( A, B 0, B1) = A( B 0 + B1) + B1.B 0

Por otro lado, si la tecnologa seleccionada fuera por medio de ASICs, la implementacin de la expresin lgica para el bit de Acarreo_de_Salida sera CMOS; un ejemplo de esta representacin se puede observar en la figura No. 36 Figura No. 36 Representacin en tecnologa CMOS del bit Acarreo_de_Salida

Cuando se realiza la simulacin del sistema sumador, la mayora de programas generan formas de onda que describen el comportamiento del mismo; para este sistema las formas de onda se puede observar en la figura No. 37. Figura No. 37 formas de Onda al simular el sistema sumador

Leccin 4. MULTIPLICADORES PARALELOS


Realicemos el cdigo de un multiplicador binario de 4 bits, en donde al multiplicarsen dos nmeros de cuatro bits obtendremos un resultado de 8 bits. En este caso se emplean puertos de entrada sin signo de 4 bits, y un puerto de salida de 8 bits sin signo El cdigo VHDL sera:
----------------------------------------------------------------------------LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_arith.all; ----------------------------------------------------------------------------ENTITY multiplicador IS PORT ( a, b : IN SIGNED (3 DOWNTO 0); resultado : OUT SIGNED ( 7 DOWNTO 0)) ; END multiplicador ; ----------------------------------------------------------------------------ARCHITECTURE ejemplo1 OF multiplicador IS BEGIN Resultado <= a * b; END ejemplo1 ; -----------------------------------------------------------------------------

Noten que en este ejemplo se estn empleando funciones aritmticas, para lo cual se usa la librera aritmtica.

CAPTULO 5 DISEO DE CONTROL LOGICO CON VHDL

Leccin 1. SEGUIDOR DE SECUENCIAS


Un circuito seguidor de secuencias se encarga de recibir secuencias de nmeros y vigilar cuando una secuencia particular ha sido recibida. Este tipo de circuitos es empleado, por ejemplo, en cerraduras electrnicas, en donde un cdigo es recibido y a la vez comparado con la palabra clave para poder dar acceso al lugar. El cdigo VHDL descrito enseguida, se encarga de revisar una secuencia de cuatro dgitos proveniente de un teclado; este teclado contiene los nmeros del 0 al 6, una tecla de CLEAR, la cual le indica al sistema que reinicie el anlisis de los dgitos. La clave en este caso es el nmero 1234.
----------------------------------------------------------------------------LIBRARY ieee; USE ieee.std_logic_1164.all; ----------------------------------------------------------------------------ENTITY cerradura IS PORT ( SIGNAL teclas : IN STD_LOGIC_VECTOR (3 DOWNTO 0); SIGNAL clear, chequear: IN STD_LOGIC; SIGNAL puerta : OUT STD_LOGIC_VECTOR(0 TO 1) ); END cerradura ; ----------------------------------------------------------------------------ARCHITECTURE logica_cerradura OF cerradura IS TYPE decodificador IS (RESET, PRIMER_NUMERO, ESPERA_PRIMER, SECUNDO_NUMERO, ESPERA_SEGUNDO, TERCER_NUMERO, ESPERA_TERCER, CUARTO_NUMERO); SIGNAL estado_presente : decodificador; BEGIN Salida_seleccionada : PROCESS(estado_presente) BEGIN CASE estado_presente IS WHEN RESET => puerta <= 10; WHEN PRIMER_NUMERO TERCER_NUMERO SEGUNDO_NUMERO CUARTO_NUMERO => puerta

<= 01; WHEN OTHERS => puerta <= 11; END CASE; END PROCESS; Salida_seleccionada : PROCESS VARIABLE proximo_estado: decodificador; BEGIN WAIT UNTIL ( chequearEVENT AND chequear=1); Proximo_estado := estado_presente; IF clear=0 THEN Proximo_estado := RESET; ELSE CASE estado_presente IS WHEN RESET => CASE teclas IS WHEN 0001 => proximo_estado := primer_numero; WHEN OTHERS => NULL; END CASE;

WHEN primer_numero => CASE teclas IS WHEN 0010 => proximo_estado := Segundo_numero; WHEN 0001 => proximo_estado := Espera_primer; WHEN OTHERS => proximo_estado := RESET; END CASE; WHEN espera_primer => CASE teclas IS WHEN 0010 => proximo_estado := Segundo_numero; WHEN 0001 => NULL; WHEN OTHERS => proximo_estado := RESET; END CASE; WHEN segundo_numero => CASE teclas IS WHEN 0011 => proximo_estado := tercer_numero; WHEN 0010 => proximo_estado := Espera_segundo; WHEN OTHERS => proximo_estado := RESET; END CASE; WHEN espera_segundo => CASE teclas IS WHEN 0011 => proximo_estado := tercer_numero; WHEN 0010 => NULL; WHEN OTHERS => proximo_estado := RESET; END CASE; WHEN tercer_numero => CASE teclas IS WHEN 0100 => proximo_estado := cuarto_numero; WHEN 0011 => proximo_estado := Espera_tercer; WHEN OTHERS => proximo_estado := RESET; END CASE; WHEN espera_tercero => CASE teclas IS WHEN 0100 => proximo_estado := cuarto_numero; WHEN 0011 => NULL; WHEN OTHERS => proximo_estado := RESET; END CASE; WHEN cuarto_numero => CASE teclas(0) IS WHEN 0 => proximo_estado := RESET; WHEN OTHERS => NULL; END CASE; WHEN OTHERS => NULL;

END CASE; END IF; Estado_presente <= proximo_estado; END PROCESS; END logica_cerradura; -----------------------------------------------------------------------------

Leccin 2. GENERADOR DE SECUENCIAS RANDMICAS


Un generador de secuencias randmicas es un circuito que enva secuencias de nmeros aleatorios. Este tipo de generadores generalmente inician su proceso de una semilla, o una secuencia base para producir secuencias a su salida diferentes a la original. A continuacin se enuncia el cdigo ejemplo para este tipo de circuitos:
----------------------------------------------------------------------------LIBRARY ieee; USE ieee.std_logic_1164.all; --este paquete se emplear para el tipo XOIZ USE dzx.logic_utils.all; --este paquete se emplear para el tipo XOIZ_VECTOR USE work.control_logic.rnd_gen; --es un generador de secuencias randmico ----------------------------------------------------------------------------ENTITY generador IS PORT ( CLK, RESET : IN XOIZ; BUS_EXT : OUT XOIZ_VECTOR (3 DOWNTO 0)) ; END generador ; ----------------------------------------------------------------------------ARCHITECTURE ejemplo OF generador IS SINAL REG_RANDOM : XOIZ_VECTOR(REG_RANDOMrange); BEGIN WAIT UNTIL (CLK=0 AND CLKevent); IF RESET = 1 THEN VRANDOM_REG := REG_RANDOM; --se emplea el ltimo patrn ELSE FOR k IN REG_RANDOMrange LOOP IF k=REG_RANDOMleft THEN VRANDOM_REG(k) := 1; ELSE VRANDOM_REG(k) := 0; END IF; END LOOP; END IF; RND_GEN(VRANDOM_GEN); --se genera nuevo patrn REG_RANDOM <= VRANDOM_REG; END PROCESS BUS_EXT <= REG_RANDOM; END Resultado <= a * b; END ejemplo ; -----------------------------------------------------------------------------

BIBLIOGRAFIA NAYLOR, D y Jones S. (1997). VHDL: a logic synthesis approach. Chapman & Hall. COHEN, Ben (1995). VHDL: Coding styles and methodologies. Kluwer Academic Publisher. PEDRONI, Volnei A (2004), Circuit Design with VHDL. MIT Press. ASHENDER, Peter J. (1990), the VHDL Cookbook. First Edition, Department Computer science, University of Adelaide, South Asutralia. Department of Computer Science & Electrical Engineering, University of Maryland, Batimore County (2005). "VHDL reference material". En: http://www.csee.umbc.edu/help/VHDL.html PARDO, F y Jos A. B. (2004). VHDL: Lenguaje para sntesis y modelado de circuitos. Alfaomega Ra-Ma, 2 Edicin.

RESPUESTAS

UNIDAD No. 1 CAPITULO 1 1. 11, 110, 1000, 1100, 1100, 1110, 1111, 10000, 11001, 10100, 10100, 11110 100110111, 101100000, 101001000, 110000000 10, 100, 101, 111, 111, 111 101, 110, 11, 10, 11, 1 100001, 1010, 101010, 1110 110010, 110111, 10011010, 1100011, 10000010, 111000 10001, 10000, 1110, 10001

2.

3. 4.

CAPITULO 3 2. 1, 1, 0, 1 X, Y, 0, X Z, X, 0, X Y, X+Y XY + CD + Z (XY)(ZW) + V Y 0 0 1 1 0 0 1 1 Y 0 1 0 1 Z 0 1 0 1 0 1 0 1 F 0 1 1 0 F 0 1 1 1 0 0 0 0

3. 4. X 0 0 0 0 1 1 1 1 X 0 0 1 1

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

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

F 0 1 0 1 Z 0 1 0 1 0 1 0 1 F 0 0 0 1 0 1 1 0

You might also like