Apunte Técnicas Digitales I Rev 08.1 2020
Apunte Técnicas Digitales I Rev 08.1 2020
CAPÍTULO 1
INTRODUCCIÓN A LA ELECTRÓNICA DIGITAL
1-1 Definición de digital y analógico
Uno de los significados de la palabra dígito es “dedo”. Contar con los dedos es enumerar
cantidades discretas, cosas que no pueden dividirse. La palabra digital, por extensión se aplica a
algo que varía en forma incremental o de a saltos o que se expresa en forma de números
enteros. Una magnitud digital es aquella que solamente puede adoptar ciertos valores
determinados. Entre un valor y el siguiente o el anterior hay un espacio intermedio de incremento
fijo. Por el contrario, algo analógico es aquello que varía en forma continua.
Por ejemplo, el conjunto de los números naturales es de naturaleza digital, ya que entre un
número cualquiera y el siguiente no existe otro número natural, y siempre están separados por
una unidad. El conjunto de los números reales es de naturaleza analógica, ya que entre dos
números cualquiera que se alija, tan próximos como se quiera, existen infinitos números
intermedios que los separan.
Multivaluada t Bivaluada
La electrónica digital puede definirse como una parte de la electrónica que estudia
dispositivos, circuitos y sistemas digitales. Un sistema digital es un circuito electrónico, es decir
componentes básicos o de mayor complejidad interconectados.
Los sistemas digitales representan diferentes situaciones de la vida cotidiana mediante
números. Con esta información realizan cálculos y operaciones que permiten, por ejemplo
resolver problemas o controlar procesos de variada complejidad. Los números utilizados
pertenecen al sistema de numeración binaria o de base 2. En este sistema solamente hay dos
símbolos: ceros o unos. Así, los sistemas digitales realizan una doble conversión de datos: deben
representar la información del entorno el lenguaje binario, procesar los datos y luego traducir el
resultado nuevamente a un lenguaje entendible para los seres humanos.
En electrónica digital, los circuitos solamente pueden adoptar dos valores de voltaje posibles,
denominados niveles lógicos, alto y bajo. Generalmente, el nivel alto corresponde a la presencia
de la tensión de alimentación y el nivel bajo corresponde a la ausencia de tensión. Esta es una
de las principales diferencias con respecto de la electrónica analógica, en la que los circuitos
pueden adoptar infinitos valores entre la tensión de referencia y la tensión de la fuente de
alimentación.
Revisión 08 – 2020 1
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
Revisión 08 – 2020 2
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
Llave abierta = 0
Llave cerrada = 1
S1
+
L1
Batería
Lámpara apagada = 0
Lámpara encendida = 1
En él hay dos elementos principales: un interruptor y una lámpara. Ambos elementos admiten
dos estados posibles: el interruptor puede estar abierto o estar cerrado y la lámpara puede estar
apagada o estar encendida, con mayor o menor intensidad, pero encendida al fin. Cuando el
interruptor se cierra, la tensión de la batería queda aplicada a los contactos de la lámpara, se
produce una circulación de corriente y esta se enciende. Cuando el interruptor se abre, la tensión
sobre los contactos de la lámpara es cero o nula, cesa la circulación de corriente y se apaga.
Haciendo arbitrariamente algunas asignaciones se dirá que:
Entonces, si se dice que el interruptor está en estado alto, es que está cerrado, o si dice que está
en 0, es que está abierto.
Además:
Entonces, si se dice que la lámpara está en 1, esto quiere significar que está encendida, y que si
está en 0 o estado bajo que está apagada.
Revisión 08 – 2020 3
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
Supóngase ahora que se tiene una "caja negra" como se muestra en la figura 1-3, que
externamente tiene visible una lámpara. Un circuito eléctrico interno responde de una
determinada manera, haciendo que la lámpara se encienda o se apague. Un dispositivo de estas
características nos puede brindar solamente respuestas del tipo SI/NO.
Estado Lámpara
lógico
0 apagada
1 encendida
Se puede imaginar que esta caja negra fue diseñada para que el estado de la lámpara nos
informe sobre el nivel de líquido dentro de un tanque. Con dos respuestas posibles la información
obtenida es muy limitada. Tan solo es capaz de indicar por ejemplo, si el nivel de líquido del
tanque está por debajo de un nivel crítico o no. Se pueden pensar otras situaciones diarias
admiten dos respuestas posibles tales como: el paso a nivel está cerrado o abierto, un proyecto
es viable o no lo es, la presión de aceite del motor es baja o no, etc. Entonces con una lámpara
se puede indicar dos situaciones diferentes, de acuerdo a la asignación que le dio a cada estado.
Continuando con el ejemplo se supone que la caja negra fue rediseñada y que ahora posee
dos lámparas que son visibles externamente, como se muestra en la figura 1-4.
Si se toma en conjunto el estado de ambas lámparas, se verá que es posible diferenciar con
ellas cuatro situaciones diferentes, a las que se llamará combinaciones lógicas. Refiriéndose al
ejemplo del nivel de líquido del tanque, estas cuatro situaciones podrían ser:
Revisión 08 – 2020 4
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
• 0 a 1/4 tanque
• 1/4 a 1/2 tanque
• 1/2 a 3/4 tanque
• 3/4 a tanque lleno.
La tabla de la figura 1-4 refleja todas las situaciones posibles. La calidad de las respuestas
mejoró, pero aun es limitada. Un sistema similar puede identificar cada uno de los puntos
cardinales, el sentido de movimiento en dos dimensiones, pero no serviría para identificar uno de
los siete días de la semana.
Tomados en conjunto los estados de las tres lámparas se obtienen ocho combinaciones
lógicas diferentes, reflejadas en la tabla 1-5. En el ejemplo del tanque, ya es posible dividir a la
capacidad del mismo en 8 niveles, y el sistema dará una idea más completa de la cantidad de
líquido en su interior. Entre los ejemplos de la vida diaria que admiten 8 menos respuestas
posibles, se hallan los días de la semana, los puntos cardinales más los puntos intermedios SE,
SO, NE y NO, las 7 notas musicales.
en forma general
minúsculas, signos de puntuación, números, etc. También es posible representar una gama de
colores de baja definición. Pero si se quisiera saber el ángulo de giro de un cabezal de una
máquina-herramienta no se tendrían combinaciones suficientes para lograr una resolución de 1
grado. Otro ejemplo, en un control de temperatura que tenga una resolución de décimas de
grado, partiendo de 0°C, con 256 combinaciones lógicas solamente se llegaría a representar
hasta 25,5 °C.
Si la caja negra dispone de 16 lámparas, se pueden diferenciar 216 = 65536 situaciones
diferentes. Asignando una combinación lógica a cada número natural, es posible realizar una
buena cantidad de operaciones matemáticas de la vida diaria o por ejemplo diferenciar colores
de alta resolución. ¿Qué otras cosas se pueden representar con 20 lámparas, ¿y con 32 o 64?
Un circuito con dos interruptores, cuyos estados son tomados en conjunto, procesan
información de 2 bits. Cuando se agrupan varios interruptores, se dicen que las combinaciones
lógicas que producen forman una palabra binaria de n bits, en donde n es el número de
interruptores.
1-3-1 Introducción
Como se dijo con anterioridad, los sistemas digitales manejan información en forma de
números binarios. Las razones de ello, entre otras, es porque los dispositivos electrónicos
capaces de adoptar dos estados (corte o saturación) son más sencillos, porque las reglas de la
lógica clásica en la que se basa el funcionamiento de las computadoras son del tipo binario
(verdadero o falso) y porque las reglas de cálculo binario son más simples.
Revisión 08 – 2020 6
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
En la vida diaria se trabajan con números decimales, por una cuestión histórica y práctica.
Esto hace que se tenga que convertir los números decimales de fácil comprensión para nosotros,
a su equivalente en el sistema binario, para que sean igualmente fácil procesados por los
sistemas digitales y luego reconvertir el resultado una vez más al sistema decimal.
No solamente existen los números decimales y los binarios, sino que en teoría se podrían
crear infinitos sistemas de numeración. En la práctica, solamente hay unos cuantos, necesarios
para representar en una forma más cómoda una determinada información. Así, el sistema
hexadecimal es adecuado para representar información numérica almacenada en la memoria de
las computadoras. El sistema octal es una forma más compacta y directa de leer un número
binario, etc.
En el resto de este capítulo, se verá como son algunos de los sistemas de numeración
mencionados y como pasar un número de un sistema a otro.
1-3-2 Generalidades
En donde los ai son cada una de las cifras que componen al número N, tal que
0 ≤ a i< b
Revisión 08 – 2020 7
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
N = 1549,738 10
N = 1 10 3 + 5 10 2 + 4 10 1 + 9 10 0 + 7 10 -1 + 3 10 -2 + 8 10 –3
N = 1549,738 10
0≤ai<2
Según la posición que ocupa cada cifra dentro del número binario su valor relativo será:
El pasaje de un número del sistema binario al decimal se realiza por medio del polinomio
fundamental, reemplazando la base b por 2 y los ai por las cifras del orden correspondientes.
Ej. N = 11101001,1011 2
N = 233,6875
Revisión 08 – 2020 8
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
Para una mayor comprensión del método, en la figura 1-6 se muestra un ejemplo de conversión.
Si el número a convertir tiene tanto parte entera como fraccionaria, se utilizará el primer
método para obtener la parte entera y el segundo para la fraccionaria. El resultado final será la
suma de los resultados de ambos métodos.
Revisión 08 – 2020 9
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
Aunque los números binarios pueden utilizarse para representar valores decimales, la
exactitud de la conversión de decimal a binario depende del número de bits utilizado, con lo que
se introduce el problema llamado error de redondeo.
Supóngase que se va a utilizar cuatro bits para representar en el sistema binario a los
números decimales fraccionarios. Si se tiene por ejemplo los números Xa = 0,1110 y Xb =
0,1111, éstos corresponderán respectivamente a
Xa = 0,8750
Xb = 0,9375
La única manera de mejorar esta situación es añadir más bits a la representación binaria, sin
embargo ocasionar un número muy grande y de longitud inconveniente. Para comprender mejor
lo antes dicho supóngase que se agrega un bit más a la representación binaria y haciendo que el
número Xc = 0,11101 = 0,90625. Si se añade un sexto bit, y Xc = 0,111011 = 0,921875 la
situación mejora pero aún se está lejos del valor deseado. A medida que se adicione más bits a
la representación, la diferencia será menor, pero como antes se mencionó esto puede ser un
problema en ciertas aplicaciones. La solución a este inconveniente es representar a los números
binarios fraccionarios con el sistema de punto flotante, tema que se estudiará en el capítulo
dedicado a la aritmética binaria.
0 ≤ a i< 8
Según la posición que ocupa cada cifra dentro del número octal su valor relativo será:
El sistema de numeración octal es más compacto que el sistema binario y a su vez el decimal
es más compacto que el octal.
El pasaje de un número del sistema octal al decimal se realiza por medio del polinomio
fundamental, reemplazando la base b por 8 y los ai por las cifras del orden correspondientes.
Revisión 08 – 2020 10
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
Ej. N = 7634,77518
N = 3996,994410
Para una mayor comprensión del método, en la figura 1-7 se muestra un ejemplo de conversión.
Revisión 08 – 2020 11
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
Si el número a convertir tiene tanto parte entera como fraccionaria, se utilizará el primer
método para obtener la parte entera y el segundo para la fraccionaria. El resultado final será la
suma de los resultados de ambos métodos.
El pasaje de un número binario a octal (y viceversa) es sencillo y directo debido a que la base
octal es una potencia de la base binaria. Con 3 bits en el sistema binario se pueden forman ocho
números diferentes, del 0 al 7 que corresponden a los ocho símbolos del repertorio octal. La
tabla 1-1 muestra la equivalencia entre los ocho primeros números binarios y los símbolos
octales.
Ej. N = 110101011111,00110101
N = 6537,152 8
Se realiza el paso inverso al descrito en el apartado anterior, reemplazando cada cifra del
número octal por su equivalente binario de acuerdo a lo expuesto en la tabla 5-1.
Revisión 08 – 2020 12
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
Ej. N = 1671,24 8
1 6 7 1 , 2 4
001 110 111 001 010 100
N = 1110111001,0101 2
Según la posición que ocupa cada cifra dentro del número hexadecimal su valor relativo será:
El pasaje de un número del sistema hexadecimal al decimal se realiza por medio del
polinomio fundamental, reemplazando la base b por 16 y los ai por las cifras del orden
correspondientes.
Revisión 08 – 2020 13
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
Para una mayor comprensión del método, en la figura 1-8 se muestra un ejemplo de conversión.
Si el número a convertir tiene tanto parte entera como fraccionaria, se utilizará el primer
método para obtener la parte entera y el segundo para la fraccionaria. El resultado final será la
suma de los resultados de ambos métodos.
Al igual que en el caso del pasaje entre números binarios y octales, la conversión de binario a
hexadecimal y viceversa es directo debido a que la base hexa es también una potencia de la
base binaria. Con 4 bits en el sistema binario se pueden forman dieciséis números diferentes,
del 0 al 15 que corresponden a los dieciséis símbolos del repertorio hexadecimal. La tabla 1-2
muestra la equivalencia entre los símbolos hexadecimales con los números decimales y binarios.
Revisión 08 – 2020 14
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
Tabla 1-2: equivalencia de los símbolos hexadecimales con los números decimales y binarios.
Se realiza el paso inverso al descrito en el apartado anterior, reemplazando cada cifra del
número hexadecimal por su equivalente binario de acuerdo a lo expuesto en la tabla 1-2.
Un código binario es una convención mediante la cual se asigna a una cantidad, objeto,
palabra etc. una combinación de símbolos de n cifras. Si se trabaja con 2 símbolos, el 0 y el 1,
los códigos que se creen se denominarán códigos binarios.
Revisión 08 – 2020 15
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
El código Gray es un código continuo y cíclico que es utilizado por ejemplo en dispositivos de
detección de desplazamiento angular, como lo son los encoders del tipo absolutos. En estos
aparatos se usan códigos Gray de n bits con lo cual se obtienen 2n combinaciones diferentes y
por lo tanto el encoder puede diferenciar igual cantidad de desplazamientos angulares en un giro
de 360 º. La razón del uso de un código continuo para esta aplicación es que se minimiza el
posible error a cometer ya que para una posición determinada del encoder, en el desplazamiento
hacia la posición siguiente o la anterior el código solamente modificó el estado de uno solo de
sus bits.
Este código también es denominado reflejado porque para crear un código de n bits, se parte
de uno de n-1 bits al cual se lo repite simétricamente (espejar) y luego se agrega un 0 delante de
los elementos del primer grupo y un 1 delante de los elementos del segundo grupo. Las tablas 1-
3, 1-4 y 1-5 muestran los códigos Gray de 1, 2 y 3 bits respectivamente.
En los códigos BCD se asigna a cada uno de los símbolos del sistema decimal un combinación
binaria de 4 bits. Con cuatro bits se forman 16 combinaciones diferentes, por lo que en los
códigos BCD solamente se utilizan diez de ellas. El más conocido y utilizado es el BCD natural
cuya tabla de correspondencia se muestra a continuación:
Los códigos BCD solamente se usan para representar los símbolos del sistema decimal. El
código BCD no es compacto porque usa más dígitos de los necesarios para representar una
cantidad.
El método consiste en separar al número en grupos de cuatro bits y reemplazarlos luego por el
símbolo decimal equivalente según lo expuesto en la tabla 1-7.
Revisión 08 – 2020 17
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
Ej. N = 0001010101110011BCD
N = 1573 10
Para codificar un número decimal en BCD se realiza el paso inverso al descrito en el apartado
anterior, reemplazando cada símbolo decimal por la combinación binaria equivalente de acuerdo
con la tabla 7.
Ej. N = 549110
5 4 9 1
0101 0100 1001 0001
N = 0101010010010001BCD
El pasaje de un número expresado en binario al código BCD y viceversa se lleva a cabo en dos
pasos, llevando primero el número a convertir, al sistema decimal y luego se lo pasa al sistema o
código deseado siguiendo los métodos que fueron expuestos en los apartados anteriores.
Son códigos creados para representar mediante un número binario caracteres del alfabeto,
signos matemáticos, de puntuación, números del 0 al 9, etc. De esta manera se facilita el
manejo de datos en dispositivos como impresoras, monitores de computadoras, teclados, etc.
El código más difundido es el código ASCII (American Standar Code for Information
Interchange o código estándar americano para el intercambio de información). La tabla 1-8
muestra el código ASCII de 7 bits.
Revisión 08 – 2020 18
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
48 H 58 X 68 h 78 X
49 I 59 Y 69 i 79 Y
4A J 5A Z 6A j 7A Z
4B K 5B [ 6B k 7B {
4C L 5C \ 6C l 7C |
4D M 5D ] 6D m 7D }
4E N 5E ^ 6E n 7E ~
4F O 5F _ 6F o 7F DEL(RUB OUT)
Revisión 08 – 2020 19
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
CAPÍTULO 2
ÁLGEBRA DE BOOLE - FUNCIONES LÓGICAS
Ej.: y = 3x2 + 5x + 6
Pero una variable no tiene porqué se solamente numérica. Por ejemplo, la variable
independiente x puede corresponder a los colores de un semáforo y la variable independiente y
representar el comportamiento esperado de un conductor que se acerca al semáforo. Los valores
que puede adoptar x se expresan mediante sentencias declarativas como “la luz es verde”, “la
luz es amarilla” o “la luz es roja”, y por otro lado los valores que puede tomar y son “el conductor
avanza” o “el conductor se detiene”.
Una variable lógica o binaria es aquella que cumple con tres propiedades distintivas:
• La variable lógica puede adoptar uno u otro de sólo dos valores posibles.
• Los valores se expresan por las sentencias declarativas como las del ejemplo
anterior o “es blanco” o “es negro”, “es alto” o “es bajo”, “está adentro” o “está
afuera”, “está encendido” o “está apagado”, etc.
• Los dos posibles valores expresados por la sentencia declarativa deben ser
mutuamente exclusivos, es decir que si de dos valores posibles a o b la variable
independiente x adopta el a, entonces x no es b.
En electrónica digital se trabaja con variables lógicas. Con el fin de guardar una coherencia
con la convención antes adoptada (interruptor abierto = 0, interruptor cerrado = 1), de ahora en
adelante se dirá que la variables lógicas tomarán el valor 0 o 1 y se pondrá énfasis en que estos
Revisión 08 – 2020 20
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
valores no representan números en sí y que bien se podría haberles asignado valores tales como
verdadero o falso.
Así como las variables que adoptan valores numéricos se usan para describir un fenómeno
cualquiera, las variables lógicas pueden ser usadas para plantear problemas en los que existen
dos opciones posibles.
Por ejemplo, supóngase que se desea abrir un portón de un garaje sólo cuando una fotocélula
esté iluminada y un interruptor esté activado. Cada una de estas tres premisas (estados de la
fotocélula, interruptor y portón) pueden se descriptas por variables lógicas ya que toman uno de
dos valores: fotocélula iluminada o no iluminada, portón abierto o cerrado e interruptor activado
o desactivado. Siguiendo con la notación utilizada se puede asignar a cada estado uno de los
valores que pueden tomar nuestras variables lógicas. Así
Una función lógica es una expresión que relaciona variables lógicas mediante operadores
lógicos. En el ejemplo anterior, la variable dependiente es el portón (al que se llamará C), cuyo
valor depende del estado de otras dos variables lógicas independientes, la fotocélula y el
interruptor (a los que se denominará A y B respectivamente). La relación entre las variables es: el
portón se cerrará si la fotocélula está iluminada y el interruptor está cerrado. Más adelante se
estudiará con mayor profundidad el concepto de función lógica y operador lógico.
En electrónica digital, las variables lógicas se emplean para representar el nivel de voltaje
presente en los terminales de entrada y salida de un circuito. Por lo tanto, el 0 o el 1 no
representan números propiamente dichos sino el valor de un nivel de voltaje.
En el ejemplo anterior se tienen tres variables A, B y C. Las variables A y B son las señales de
entrada al sistema digital que controlará la apertura del portón, y la variable C es la salida del
mismo. La siguiente tabla contiene todos los valores que pueden adoptar cada una de las tres
variables:
Revisión 08 – 2020 21
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
Esta tabla recibe el nombre de tabla de verdad. Como se ve, se tienen dos variables de
entrada con dos estados para cada una, con lo cual se obtienen cuatro posibles situaciones o
combinaciones de entrada. En general, si un sistema digital tienen n variables de entrada se
obtienen 2n situaciones diferentes. Por cada combinación de entrada, la salida C adopta uno de
dos estados posibles. La relación entre las combinaciones de las variables de entrada y el valor
de la salida es lo que define a la función lógica.
Las compuertas lógicas o gates son los bloques básicos de cualquier circuito digital. Todos los
aparatos digitales, desde el más simple hasta el más sofisticado, están formados por
compuertas conectadas en una gran variedad de configuraciones.
Una compuerta digital es un circuito electrónico con una, dos o más entradas y una salida,
que tiene la capacidad de tomar decisiones simples. La decisión tomada consiste en colocar su
salida en 0 o en 1 dependiendo del estado de sus entradas y de la función lógica para la que fue
diseñada.
El comportamiento de una compuerta lógica se puede expresar mediante una tabla de verdad
y una ecuación lógica.
El producto lógico o función AND (y) para dos variables de entrada A y B es una operación
lógica cuya salida S es alta únicamente cuando ambas entradas son altas. El término producto
no debe tomarse como una multiplicación aritmética.
La compuerta AND es el componente electrónico que cumple con la función producto lógico.
La figura 2-2 muestra la ecuación lógica, tabla de verdad y el símbolo gráfico de la compuerta
correspondiente a la función AND:
Revisión 08 – 2020 22
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
S=A·B=B·A
S = (A·B) · C = A · (B · C) = B · (A · C) = A · B · C
La propiedad asociativa puede demostrarse realizando una tabla de verdad que contenga los
productos parciales.
La suma lógica o función OR (o) para dos variables de entrada A y B es una operación lógica
cuya salida S es 1 cada vez que una o ambas entradas son altas. El término suma no debe
tomarse como una adición aritmética.
La compuerta OR es el componente electrónico que cumple con la función suma lógica. En la
figura 2-3 se muestran la ecuación lógica, tabla de verdad el símbolo gráfico y circuito
equivalente de la compuerta OR:
Revisión 08 – 2020 23
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
S=A+B=B+A
S = A + (B + C) = (A + B) + C = (A + C) + B = A + B + C
Ambas propiedades pueden verificarse de la misma manera en que se procedió para el producto
lógico.
La función NOT o también llamada complemento o negación es una operación lógica tal que si
la variable de entrada tiene el valor 1, la salida adopta el valor 0 y viceversa, es decir niega o
complementa la variable de entrada. Para destacar que una variable está negada o
complementada se coloca una barra sobre la variable considerada.
La compuerta electrónica NOT es la que realiza la función complemento y tiene solo un
terminal de entrada y uno de salida. En la figura 2-4 se muestran el símbolo gráfico de la
compuerta NOT, su expresión algebraica y circuito equivalente:
Revisión 08 – 2020 24
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
Dada una función lógica válida dentro de la estructura del álgebra de Boole binaria, si se
intercambian los operadores AND por OR (o viceversa) y los 0 por 1 (y viceversa) se obtiene otra
función lógica también válida dentro de la estructura. El significado de este teorema se aclara
más adelante cuando se enuncien otros postulados.
La realización de dos operaciones NOT sobre una misma variable da como resultado la misma
variable. Esta identidad se llama teorema de la involución.
A · 0=0
A·1=A
Teorema de la idempotencia:
A·A=A
Propiedad complementaria:
A·A=0
Las dos últimas identidades pueden ser demostradas mediante la tabla de verdad de la función
AND o un circuito eléctrico equivalente:
0·0=0 1·1=1
y
0·1=0 1·0=0
Revisión 08 – 2020 25
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
2-7-4 Identidades OR
Aplicando el teorema de dualidad a las identidades AND, se obtienen las identidades para la
función OR; reemplazando cada operación AND por OR y 1 por 0:
A+1=1
A+0=A
Teorema de idempotencia OR
A+A=A
Propiedad complementaria OR
A+A=1
De la misma manera que para las identidades AND, estas dos últimas propiedades pueden ser
demostradas a través de la tabla de verdad de la función OR:
0+0=0 1+1=1
y
0+1=1 1+0=1
Cuando se estudiaron las operaciones lógicas OR y AND se vio que ambas cumplían con las
propiedades conmutativas y asociativas. Supóngase ahora que se tiene una expresión algebraica
lógica que contiene tanto operaciones OR como AND. Para la resolución de esta expresiones es
necesario saber cuál operación tiene precedencia sobre las otras, es decir, cuál operación debe
resolverse primero. Sin el agrupamiento con paréntesis, la operación AND tiene precedencia
sobre la OR cuando las dos aparecen en la misma ecuación, por ejemplo:
F = A · (B + C)
X= B+C
F=A·X
G=A·B+C
Y=A·B
Revisión 08 – 2020 26
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
G=Y+C
A · (B + C) = A · B + A · C
Esta ecuación es idéntica a la de la ley distributiva del álgebra ordinaria en lo que corresponde a
la distribución del producto con respecto a la suma.
La segunda de las leyes distributivas se obtiene al aplicar el teorema de dualidad al a
identidad anterior:
A + (B · C) = (A + B) · (A + C)
Este es un teorema de gran importancia ya que permite reemplazar una operación lógica por
otra equivalente. Esto significa un ahorro en la variedad o cantidad de compuertas electrónicas
lógicas a utilizar. El teorema de De Morgan y su teorema dual son:
(A · B) = A + B
Y
(A + B) = A · B
Revisión 08 – 2020 27
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
Revisión 08 – 2020 28
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
Además de los teoremas básicos vistos hasta el momento, existen una serie de identidades
cuya validez se demuestra usando dichos teoremas, que se presentan a continuación junto con
su identidad dual:
Mediante las operaciones lógicas AND, OR y NOT definidas en el Álgebra de Boole es posible
representar el funcionamiento de cualquier circuito digital. Existen además otras operaciones
lógicas de dos variables, derivadas de las tres primeras, pero que por sus características,
resultan en nuevas compuertas lógicas. Estas operaciones son las funciones NAND, NOR, OR
EXCLUSIVA y NOR EXCLUSIVA.
Una función lógica se puede implementar utilizando solamente las compuertas AND, OR y
NOT.Sin embargo, si se intenta construir una red digital con componentes electrónicos, la
conclusión es que tal vez esta no sea la mejor forma. El proceso de fabricación de compuertas
lógicas NAND y NOR resulta mucho más sencillo que el de compuertas OR y AND. Como se verá
más adelante, estas compuertas se denominan universales, ya que se pueden implementar
cualquiera de las otras funciones utilizando solamente compuertas NAND o NOR.
La función NAND es el complemento de la función AND, su símbolo eléctrico tabla de verdad,
expresión algebraica y circuito equivalente se muestran en la figura 2-5:
Revisión 08 – 2020 29
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
La función NAND cumple con la propiedad conmutativa pero no con la asociativa. Si se supone lo
contrario:
Utilizando el mismo razonamiento que para la función NAND, se demuestra que la función
NOR tampoco cumple con la propiedad asociativa y si con la conmutativa.
Revisión 08 – 2020 30
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
A A A
A
A A . B A . B A A + B A + B
B B
A A A A
A . B = A + B A + B = A . B
B B B
B
A A A . B A A
A + B A + B A . B
B B B
B
Revisión 08 – 2020 31
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
Las compuertas lógicas de tres estados son un tipo especial de dispositivos lógicos que
además de los dos estados 1 y 0, pueden proporcionar un tercer estado de salida llamado de
alta impedancia que equivale a un circuito abierto. Este tipo de lógica recibe el nombre de lógica
de tres estados o tri-state. Generalmente las compuertas electrónicas fabricadas con esta lógica
son los denominados “buffers” del tipo inversor (NOT) y no inversor. Estas compuertas presentan
la particularidad de tener un terminal adicional de control denominado “habilitador” o línea de
inhibición. En su estado inactivo (dependiendo del fabricante o modelo de compuerta), la
compuerta se comporta normalmente cumpliendo función para la que fue diseñada. En el estado
activo del terminal de control, la salida presenta una resistencia óhmica infinita.
La lógica de tres estados permite a los dispositivos digitales compartir las líneas de
transmisión de datos con un circuito mínimo. Un ejemplo muy común son los “buses” de datos de
los microprocesadores. Un bus es un conjunto de líneas de transmisión que transportan una
información común.
La figura 2-10 muestra los símbolos eléctricos de las compuertas de tres estados buffer no
inversor, tabla de verdad y circuito eléctrico equivalente.
Revisión 08 – 2020 32
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
Las compuertas de colector abierto son una variante de otro tipo de compuertas
denominadas “de tecnología TTL” que permiten conectar sus salidas en paralelo sin importar que
no tengan el mismo nivel lógico en un momento determinado. Gracias a esta característica
pueden manejar voltajes de salida superiores a los de alimentación y drenar corrientes
superiores a la de las compuertas ordinarias. La figura 2-11 muestra los símbolos eléctricos
correspondientes a las compuertas de colector abierto más comunes comercialmente.
La lógica combinatoria trata sobre las redes que usan compuertas lógicas para combinar las
variables de entrada necesarias para producir funciones lógicas. En un circuito combinacional el
valor de la salida en un momento determinado lo determina el valor de las entradas en ese
momento. Si cualquiera de las entradas cambia, entonces el valor de la salida se modificará
como lo especifique la función.
El diseño lógico abarca la creación de redes digitales que resuelven un determinado problema
o realizan una tarea específica. El problema planteado o la operación a realizar se expresa, en
términos de lógica booleana, mediante una función lógica. Una vez que se tienen las expresiones
Revisión 08 – 2020 33
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
lógicas, se aplican las leyes del álgebra de Boole para manipular las funciones en la medida que
sea necesario. Luego se eligen las compuertas y la red puede construirse directamente de las
ecuaciones.
Las funciones lógicas son expresiones algebraicas de variables lógicas, relacionadas por los
operadores lógicos AND, OR y NOT.
Una función lógica queda definida por la tabla de verdad en donde están reflejadas todas las
combinaciones de las variables de entrada y el valor que adoptan las salidas para cada una de
ellas. En general para n variables de entrada habrá 2n combinaciones diferentes e igual número
de filas en la tabla de verdad. Si la función lógica es compleja, se construyen tablas de verdad
parciales con los valores de variables intermedias. Por ejemplo sea la función:
F = A (B + CD) + ACD
Una función lógica es equivalente otra si sus tablas de verdad son iguales, para la misma
cantidad de variables. Esto nos permite manipular algebraicamente una expresión para obtener
otra más sencilla. Una función más simple lleva a una implementación práctica con menos
compuertas lógicas y más económica.
Una función es complemento de otra función cuando en la tabla de verdad de cada una, el
valor que adopta la salida de la primera para cada combinación, es el complemento del valor que
toma la segunda para la misma combinación. En la tabla de verdad de la función original se
cambian los 1 por 0 y se obtiene la función complemento.
Las funciones lógicas pueden expresarse de varias maneras, algunas más o menos
complejas. Existen dos formas estructuradas de representar funciones lógicas, que dan una
Revisión 08 – 2020 34
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
visión más uniforme del problema. Ellas son las sumas de productos y los productos de sumas. Si
por ejemplo se tiene la función:
Ec. 1
(A + BC) · (B + CD) = AB + ACD + BC + BCD
En la parte derecha de la ecuación 1, la operación principal es la suma lógica OR, que separa a la
expresión en cuatro términos. Cada uno de estos términos es un producto lógico entre dos o más
variables. Esta forma de expresar una función lógica recibe el nombre de suma de productos
lógicos.
De la misma manera, haciendo uso de la segunda propiedad distributiva, se expresa la misma
función lógica como producto de sumas:
F = A (B + CD) + ACD
Para que una función lógica esté expresada en forma canónica, en cada término de la
ecuación algebraica deben estar presentes todas las variables de que depende. Los ejemplos de
las ecuaciones Ec. 1 y Ec. 2 no están en su forma canónica. Manipulando la ecuación haciendo
Revisión 08 – 2020 35
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
uso de los teoremas del álgebra de Boole, se puede llevar una función a su forma canónica, este
proceso se denomina “expansión a la forma canónica”.
La expresión entre paréntesis es igual a 1, además el producto lógico de una variable por 1 es
igual si misma. Para la función correspondiente a la Ec. 1 la expansión a la forma canónica será:
en la expresión final se eliminaron los términos que se repiten. Cada uno de los términos de una
función expresada como suma de productos canónicos se denominan minitérmino. Usualmente
se simbolizan con la letra m minúscula. Para los minitérminos se adopta la siguiente convención:
si la variable está negada su valor es 0 y si está sin negar su valor es 1.
A=0 A=1
Para la función de la Ec 2 utilizada como ejemplo, expresada como producto de sumas lógicas, la
expansión queda:
Revisión 08 – 2020 36
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
Cuando una función lógica está expresada como producto de sumas lógicas, cada uno de los
términos sumas reciben el nombre de maxitérmino. Usualmente se los simboliza con la letra M
mayúscula.
Para los maxitérminos la convención adoptada es: las variables sin negar tienen un valor igual a
0, y las negadas un valor igual a 1.
A=0 A=1
Revisión 08 – 2020 37
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
Nª decimal A B C F(A, B, C)
0 000 0
1 001 1
2 010 1
3 011 0
4 100 1
5 101 0
6 110 0
7 111 1
1+X=1
donde X se aplica a una variable o grupo de variables que tanto puede valer 0 o 1. Se dice
entonces que la función está compuesta por cuatro términos, cada uno correspondiente a una de
las combinaciones antes mencionadas y puede escribirse como:
F = f1 + f2 + f3 + f4
En donde f1, f2, f3 y f4 se forman con los productos lógicos de las variables de entrada
asignándoles los estados lógicos que toman en cada combinación en que F = 1. Así por ejemplo,
f1 es igual a
f1 = A B C
F(A, B, C) = A B C + A B C + A B C + A B C
Cada uno de los términos (llamados minitérminos) corresponde a una fila de la tabla de
verdad, que está asociada a un número binario, por lo que la función puede escribirse como:
F(A, B, C) = m 1 + m 2 + m 4 + m 7
F(A, B, C) = Σ (1, 2, 4, 7)
en donde los números equivalen a filas de la tabla de verdad de la función o a los minitérminos
en los que la función es igual a 1. El símbolo Σ significa sumatoria y hace notar que se trata de
una suma de productos o minitérminos.
Revisión 08 – 2020 38
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
0●X=0
y que la asignación del estado de la variable es 0 para variable sin negar y 1 para variable
negada. Teniendo en cuenta estas consideraciones, y de la observación de la tabla 2, se deduce
que la función es 0 para las combinaciones de entrada correspondientes a los números 0, 3, 5 y
6, y puede descomponerse en cuatro términos
F = F1 ● F2 ● F3 ● F4
cada uno de los F1, F2, F3 y F4 se forman haciendo la suma lógica de las variables asignándoles
el estado lógico que toman en las combinaciones para las cuales la función es 0. Por ejemplo F3
es igual a
F3 = A+ B +C
Cada uno de los términos (llamados maxitérminos) corresponde a una fila de la tabla de
verdad, que está asociada a un número binario, por lo que la función puede escribirse como:
F(A, B, C) = M 0 ● M 3 ● M 5 ● M 6
F(A, B, C) = Π (0, 3, 5, 6)
El símbolo Π significa que la función está expresada como producto de sumas canónicas. Los
números equivalen a filas de la tabla de verdad o maxitérminos para los cuales la función es 0.
Una misma función puede expresarse como suma de productos o como productos de sumas.
En la forma canónica suma de productos
F(A, B, C) = Σ (m i)
Los m I son los minitérminos cuyo número de orden son los de las filas de la tabla de verdad
para la cual la función es 1. Esto quiere decir que para las filas restantes la función es 0, y sus
números de orden serán los de los maxitérminos en la forma canónica producto sumas lógicas.
Por ejemplo sea la función F1 expresada como suma de productos
F1(A, B, C) = Σ (0, 2, 6)
Revisión 08 – 2020 39
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
Con esta forma de representación también se simplifica la expresión del complemento de una
función: sea F2
F2(A, B, C) = Σ (3, 4, 6, 7) = Π (0, 1, 2, 5)
Son funciones cuyo estado lógico no interesa o no está definido para algunas de las
combinaciones de las variables de entrada. Esta característica se presenta, por ejemplo, en
funciones lógicas que describen un proceso para el cual es imposible que se den ciertas
combinaciones de las variables de entradas. Un ejemplo práctico es el código BCD. Éste es un
código de 4 variables para representar los 10 dígitos del sistema de numeración decimal. Como
se tienen 4 variables se pueden formar 16 combinaciones diferentes, pero sólo las 10 primeras
se utilizan, las 6 restantes no corresponden a este código. De esta manera cuando se diseñan
dispositivos que trabajan con código BCD como entrada, no interesa el valor que adopte una
determinada salida para las combinaciones no usadas.
Las funciones incompletas se denotan de la siguiente manera:
La sumatoria indicada con el símbolo corresponde a los minitérminos para los que la función
no está definida. También puede representarse a la misma función incompleta como productos
de sumas:
Las compuertas electrónicas se diseñaron y construyeron para cumplir con una determinada
operación lógica. Así, una función lógica puede ser llevada a la práctica (implementada)
interconectando compuertas electrónicas que formarán una red que cumplirá con los requisitos
del problema. El circuito final varía de acuerdo a la forma en que está expresada la función.
De las dos formas canónicas de una función surgen sendas estructuras de implementación:
AND-OR y OR-AND correspondientes a las formas suma de productos y producto de sumas
respectivamente.
Revisión 08 – 2020 40
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
Implementación AND-OR
A A
m1
B B
m2 F
C C
m4
m7
Para la forma canónica producto de sumas, cada maxitérmino se implementa a través de una
compuerta OR, cuyo número de entradas es igual a la cantidad de variables de entrada. El
producto lógico de los maxitérminos lo lleva a cabo una compuerta AND. La figura 2-14 muestra
la implementación OR-AND de la función de la tabla 2-3:
Implementación OR-AND
A
A M0
B
F
B M3
C
M5
F
M6
Se mencionó con anterioridad que las compuertas NAND y NOR son compuertas universales
ya que utilizando solamente compuertas de una de estas dos clase, se pueden implementar las
operaciones restantes (AND, OR y NOR o NAND según la compuerta usada).
Si se tienen en cuenta las cuatro compuertas (AND, OR, NOR y NAND), surgen 16 diferentes
estructuras de dos niveles, ocho de las cuales no se usan para implementación de funciones ya
que se puede demostrar mediante un manejo algebraico que derivan en sumas o productos de
variables y no en una de las dos formas canónicas.
Las ocho estructuras restantes sí derivan en una de las dos formas canónicas de expresión de
una función. Ellas son:
Revisión 08 – 2020 41
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
AND – OR OR – AND
NAND – NAND NOR-NOR
OR – NAND AND - NOR
NOR – OR NAND – AND
Dada una función expresada en una de las formas canónicas, trabajando algebraicamente la
ecuación lógica, se obtienen las ocho formas estándar de implementación. Supóngase función
F3
Si se resolviera esta última ecuación se obtendría nuevamente a F3 como una estructura AND –
OR.
Revisión 08 – 2020 42
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
Revisión 08 – 2020 43
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
R R R
Salida Salida Salida
A A A
A B
B
a b c
VCC
A
A
B
B
Salida Salida
VCC
C
D
R
C
D
d e
Revisión 08 – 2020 44
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
AND, sino que la operación se produce gracias a la característica interna de las compuertas de
colector abierto representadas esquemáticamente por el circuito de la figura 2-16b.
Siguiendo el mismo razonamiento se pueden unir más circuitos similares, siendo el punto de
unión una función AND de todos ellos, es por esta razón que este tipo de conexión recibe el
nombre de AND cableada o alambrada. Es necesario resaltar que la unión de las salidas de las
compuertas sólo puede hacerse si éstas son del tipo colector abierto.
A
B
C
A
B
C F3
A
B
C
A
B
C
2-12-1 Introducción
Cuando se presenta un problema práctico que puede ser planteado de acuerdo con la lógica
digital, se parte de conocer las variables de entrada y salida que intervienen en el mismo, y cómo
se relacionan entre ellas. Con estos datos iniciales se construye la tabla de verdad. La misma
refleja los valores que toman las variables de salida del sistema para cada combinación de las
variables de entrada. De la tabla de verdad se obtiene la función lógica que describe el problema
planteado, cuya expresión algebraica estará en una de las dos formas canónicas: suma de
productos lógicos o productos de sumas lógicas. El paso siguiente, es la implementación
mediante compuertas lógicas electrónicas en una de las ocho formas estándar.
La expresión de la función en sus formas canónicas generalmente no es la más sencilla o
reducida. Haciendo uso de los teoremas del Álgebra de Boole se puede llegar a una expresión
más simple de la función lógica. Esto redunda en una solución más económica, ya que una
función sencilla derivará en un circuito pequeño, con menos compuertas, que cumpla con las
mismas condiciones que la función original.
Revisión 08 – 2020 45
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
Supóngase por ejemplo que se tiene la función F1 que describe un determinado problema a
resolver:
De los ejemplos anteriores, se puede deducir que cada vez que se encuentre un par de
maxitérminos o minitérminos que difieren entre sí en el estado de una sola de sus variables,
éstos se reducen a un solo término en el que se ha eliminado la variable que cambia su estado.
Cuando esto ocurre se dice que ambos maxitérminos o minitérminos son lógicamente
adyacentes.
Revisión 08 – 2020 46
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
Las funciones lógicas pueden simplificarse haciendo uso de los teoremas del Álgebra de
Boole. Con el tiempo y la práctica se adquiere la habilidad para reconocer en una expresión
estructuras capaces de ser reemplazadas por otras equivalentes más sencillas. Pero la solución
no siempre es evidente, sobre todo cuando en las funciones lógicas intervienen muchas
variables. Una alternativa a este método la brinda el uso de los Diagramas de Karnaugh.
La tabla, mapa o diagrama de Karnaugh es un método tabular para facilitar la simplificación
de funciones lógicas. El diagrama consiste en un cuadriculado en donde el número de casilleros
es igual al de combinaciones posibles de las variables de entrada que intervienen en la función.
Para n variables hay 2n combinaciones e igual número de casilleros. Así, para 3 variables hay 8
combinaciones posibles y el diagrama tiene 8 casilleros, para 4 variables 16 casilleros, etc.
A los casilleros se le asigna un número. Ese número corresponde a una línea de la tabla de
verdad de la función lógica a simplificar, y por lo tanto es el número de orden de un maxitérmino
o minitérmino. Además, los casilleros están dispuestos de tal manera que cada uno es
lógicamente adyacente con los que tiene a ambos lados, arriba y abajo pero no en diagonal. La
figura 2-18 muestra los diagramas de Karnaugh para diferentes números de variables.
Hay también otras adyacencias lógicas: si se imagina por ejemplo al diagrama para 4
variables como un cilindro de manera que los casilleros 0 y 2, 4 y 6, 12 y 14 y 8 y 10 queden
vecinos entre sí, éstos son además lógicamente adyacentes. Lo mismo sucede si se supone el
cilindro imaginario en forma horizontal, los casilleros 0 y 8, 1 y 9, 3 y 11, 2 y 10 son lógicamente
adyacentes. El diagrama de Karnaugh para 5 variables se compone de dos diagramas de 4
variables (las 4 de menor orden). El diagrama de la izquierda corresponde a las combinaciones
lógicas en que la variable de mayor orden A = 0 y el de la derecha para A = 1. Cada diagrama
conserva sus adyacencias, pero se agregan además los casilleros en cada diagrama que ocupan
igual posición. Por ejemplo son lógicamente adyacentes los casilleros 4 y 20 o 10 y 26.
El diagrama de Karnaugh para 6 variables consta de cuatro diagramas de 4 variables
correspondientes a las cuatro de menor orden, dispuestos de tal manera que para los dos
diagramas de arriba la variable de mayor orden A = 0 y para los dos de abajo A = 1; los
diagramas de la izquierda corresponden a la segunda variable de mayor orden B = 0 y los de la
derecha para B = 1. Igual que en el caso anterior, cada diagrama de cuatro variables conserva
las adyacencias lógicas anteriores, sumándosele ahora los casilleros que ocupan igual posición
dentro de los diagramas que están arriba, abajo o a los lados del gráfico considerado pero no en
diagonal. Por ejemplo, son lógicamente adyacentes los casilleros 15 y 31 o 15 y 47, pero no lo
son el 15 y 63 por estar en diagramas ubicados en diagonal entre sí.
Campo de
B variación de B
0 1
A
0
0 1
1
2 3
Campo de
variación de A Casillas
lógicamente
adyacentes
Revisión 08 – 2020 47
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
Campo de
BC variación de B y C
00 01 11 10
A
0
0 1 3 2
1
4 5 7 6
Campo de
variación de A Casillas
lógicamente
adyacentes
Figura 2-18b: Diagrama de Karnaugh para 3 variables
Campo de variación
CD de C y D
00 01 11 10
AB
00
0 1 3 2
01
4 5 7 6
11
12 13 15 14
10
8 9 11 10
Campo de
variación de A y Casillas
B lógicamente
adyacentes
01 01
4 5 7 6 20 21 23 22
11 Casillas 11
12 13 15 14 lógicamente 28 29 31 30
adyacentes
10 10
8 9 11 10 24 25 27 26
Campo de Campo de
variación de B y A=0 variación de B y A=1
C C
Revisión 08 – 2020 48
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
01 01
4 5 7 6 Casillas 20 21 23 22
lógicamente
11 adyacentes 11
12 13 15 14 28 29 31 30
10 10
8 9 11 10 24 25 27 26
Campo de Campo de
variación de C y AB = 00 variación de C y AB = 01
D D
01 01
36 37 39 38 52 53 55 54
11 11
44 45 47 46 60 61 63 62
10 10
40 41 43 42 56 57 59 58
Campo de Campo de
variación de C y AB = 10 variación de C y AB = 11
D D
Como la función está expresada como suma de productos canónicos, el primer paso es
dibujar un diagrama de cuatro variables. Luego escribir un 1 en los casilleros correspondientes a
los minitérminos de la función, como se muestra en la figura 2-19.
F3 = m0 + m5 + m7 + m10 + m11
Revisión 08 – 2020 49
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
CD
00 01 11 10
AB
00 1
0 1 3 2
01 1 1
4 5 7 6
11
12 13 15 14
10 1 1 1
8 9 11 10
Cuando dos términos son lógicamente adyacentes se puede eliminar una de las variables. El
método consiste en englobar los compartimientos en un número igual a una potencia de 2 (1, 2,
4, 8) Luego observar qué variables cambian de estado y cuáles no en el grupo englobado y
eliminarlas. En la figura 2-20, se ve que en los casilleros 5 y 7 pueden englobarse. Ambos
pertenecen a la fila del gráfico en que A B = 0 1, por lo que no variaron su estado lógico y no
deben ser eliminadas. Por otro lado, el casillero 5 pertenece a la columna en que C D = 0 1. El
casillero 7 a la columna en que C D = 1 1. En ellas la variable C cambió de estado y D no, por lo
tanto C es la variable eliminada. El nuevo término reducido es un producto lógico de las variables
restantes
F3 = m0 + m5 + m7 + m10 + m11
CD
00 01 11 10
AB
00 1
0 1 3 2
01 1 1
4 5 7 6
11
12 13 15 14
10 1 1 1
8 9 11 10
Figura 2-20: simplificación de la función F3 como suma de productos.
Revisión 08 – 2020 50
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
El diagrama de Karnaugh puede usarse también para simplificar una función expresada
como productos de sumas canónicas. El procedimiento es idéntico al descrito anteriormente, con
la salvedad que:
La figura 2-21 muestra el diagrama de Karnaugh para F3; allí ve que se han englobado grupos
de dos y de cuatro casilleros. En el grupo formado por los compartimientos 12, 13, 14 y 15
pertenecen a la fila en que A B = 1 1 por lo que estas variables no modifican su estado, por otro
lado, al englobarse las cuatro columnas del diagrama, las variables C y D cambiaron su estado
lógico y son eliminadas, quedando el término reducido como:
A+B
Los casilleros 4 y 12 son adyacentes a 6 y 14 de manera que también son agrupados eliminando
nuevamente 2 variables. El término resultante es:
B+D
El resto de los casilleros se simplifican en forma similar. La expresión final de la función F3
minimizada es:
Nótese que la simplificación como producto de sumas lógicas resultó ser en este caso más
compleja que la expresión lograda como suma de productos. Siempre es recomendable realizar
las dos formas de simplificación y comparar los resultados a fin de implementar la función más
simple.
CD
00 01 11 10
AB
00 0 0 0
0 1 3 2
01 0 0
4 5 7 6
11 0 0 0 0
12 13 15 14
10 0
8 9 11 10
Figura 2-21: simplificación de F3 como producto de sumas.
Revisión 08 – 2020 51
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
esto que se obtenga la expresión más simple de todas es aconsejable seguir un método para
agrupar los casilleros:
• Primero se identifican y engloban los casilleros que no pueden agruparse con ningún otro
casillero (grupo de un casillero), en este caso no se puede eliminar ninguna de las
variables.
• A continuación se identifican y engloban las casillas que solamente pueden agruparse
con otra de una sola manera, dejando de lado las que si puede hacerlo de varias
maneras (grupos de do casilleros).
• Identificar y englobar los casilleros que pueden agruparse con otros tres casilleros que no
estén agrupados de a dos (grupos de 4 casilleros)
• Repetir el paso anterior para agrupar 8 casilleros, etc.
• Si aún quedan casilleros sin agrupar luego de seguir los pasos anteriores, pueden
combinarse con otros ya agrupados o no, arbitrariamente tratando de incluirlo en el
menor número de grupos posibles.
F = m3 + m4 + m5 + m7 + m9 + m13 + 14 + m15
CD CD
00 01 11 10 00 01 11 10
AB AB
00 1 00 1
0 1 3 2 0 1 3 2
01 1 1 1 01 1 1 1
4 5 7 6 4 5 7 6
11 1 1 1 11 1 1 1
12 13 15 14 12 13 15 14
10 1 10 1
8 9 11 10 8 9 11 10
Figura 2-22a: dos formas diferentes de simplificar una misma función de 4 variables.
DE DE
00 01 11 10 00 01 11 10
BC BC
00 1 1 1 00 1 1 1
0 1 3 2 16 17 19 18
01 1 1 01
4 5 7 6 20 21 23 22
11 11 1 1
12 13 15 14 28 29 31 30
10 1 1 10 1 1
8 9 11 10 24 25 27 26
A=0 A=1
Figura 2-22b: ejemplo de simplificación de una función de 5 variables.
Revisión 08 – 2020 52
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
EF EF
00 01 11 10 00 01 11 10
CD CD
00
1 1
00
0 1 3 2 16 17 19 18
1 1
01 01
4 5 7 6 20 21 23 22
1 1
11 11
12 13 15 14 28 29 31 30
10
1 10
1
8 9 11 10 24 25 27 26
AB = 00 AB = 01
EF EF
00 01 11 10 00 01 11 10
CD CD
00
1 1
00
32 33 35 34 48 49 51 50
01 01
1 1
36 37 39 38 52 53 55 54
11
1 11
44 45 47 46 60 61 63 62
10 1 10 1
40 41 43 42 56 57 59 58
AB = 10 AB = 11
Las funciones incompletas son aquellas cuyos estados lógicos no están definidos para
algunas de las combinaciones de las variables de entrada, es decir que tanto pueden adoptar el
estado lógico 0 como el 1. Algunas de las razones por las que no está definida pueden ser:
• Las combinaciones de entrada para las que la función no está definida nunca pueden
darse en l práctica (ejemplo código BCD).
• La salida del sistema no es considerada para esas combinaciones, por lo que su estado
no interesa, etc.
Revisión 08 – 2020 53
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
• El primer paso es ubicar en el diagrama las casillas para las que sí está definida la
función y escribir en ellas un 1 o 0 según se trate de un minitérmino o maxitérmino
respectivamente.
• Luego se escribe una X en cada uno de los casilleros para los que la función no está
definida.
• Finalmente se procede con el método de simplificación antes desarrollado, primero
tomando la función como sumas de productos y luego como productos de sumas,
teniendo en cuenta ahora que los casilleros indicados con una X se les puede asignar
tanto el estado 0 como el 1 según más nos convenga para englobar un número mayor de
casillas.
CD CD
00 01 11 10 00 01 11 10
AB AB
00 1 X 00 1 1
0 1 3 2 0 1 3 2
01 1 X 01 1 0
4 5 7 6 4 5 7 6
11 X 1 11 1 1
12 13 15 14 12 13 15 14
10 1 1 X X 10 1 1 X 0
8 9 11 10 8 9 11 10
0
Figura 2-24: simplificación de una función incompleta.
Revisión 08 – 2020 54
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
Los lenguajes descriptores de hardware (HDL, por sus siglas en inglés: hardware descriptor
language) son usados para el diseño, simulación e implementación física de circuitos digitales de
mucha complejidad, este último proceso conocido como síntesis.
En su estructura y sintaxis, los HDL son similares a los lenguajes de computación, como C++,
Java, Python, etc. Un “programa” en HDL se trata de un archivo de texto, que utiliza sentencias
para describir el funcionamiento de un circuito digital o parte de él. Una particularidad de los HDL
es que en una descripción no interesa el orden en que se escriben las sentencias, esto se conoce
como concurrencia. La descripción de un circuito es genérica y aplicable a cualquier dispositivo,
simulador o entorno de diseño. Es decir que es independiente de la tecnología y recursos de
hardware.
Las herramientas de simulación se utilizan para verificar la funcionalidad deseada del circuito
descripto y corregir errores. La simulación se modela a través de otra descripción conocida como
test bench. Allí se describen los diferentes estímulos y el momento en que se aplicarán las
entradas del sistema a testear. El simulador aplica el modelo de simulación a la descripción del
circuito “ejecutando” las sentencias de este último. El resultado es una gráfica temporal de la
evolución de las entradas y salidas del sistema.
Una vez que la descripción fue simulada y corregida, el paso siguiente es sintetizar el circuito
para un determinado dispositivo lógico programable o PLD (programable logic device). El texto de
la descripción es tomado por una herramienta de síntesis que la interpreta y traduce para el PLD
elegido. El resultado es un listado de conexiones de los recursos de hardware del PLD para
implementar el circuito deseado. Este listado de conexiones o archivo de programación solo se
puede aplicar a ese dispositivo PLD y no a otro.
Los PLD agrupan dispositivos de arquitectura interna muy diversa. Sin embargo, todos
comparten algunas características: son programables por el usuario, al menos una vez, y en su
interior tienen desde decenas hasta cientos de miles de bloques lógicos iguales. Cada bloque
lógico, a su vez puede contener desde simples compuertas AND u OR, hasta tablas de verdad
programables, multiplexores y flip-flops. La complejidad de los bloques depende de la
complejidad del PLD. Todos los elementos que conforman un bloque lógico tienen conexiones
programables entre sí. A su vez, los bloques lógicos mismos son interconectables con sus
vecinos. El archivo objeto, resultado de la compilación de la descripción en VHDL, es una cadena
de bits que establece las conexiones entre los elementos del PLD para implementar un circuito
digital. Si la descripción es modificada, el nuevo archivo objeto establece nuevas conexiones que
implementan un circuito diferente.
Existen varios HDL comerciales. Algunos fabricantes de PLD’s tienen sus propios lenguajes
descriptores, sujetos a licencias y solo aplicables a sus productos. Otros HDL’s son más abiertos
y guardan un estándar regulado por la IEEE. Dos de ellos son de amplia difusión: Verilog y VHDL.
A lo largo de este curso se utilizará VHDL. La V de VHDL es parte de la sigla VHSIC, o circuitos
integrados de muy alta velocidad, nombre de un área del Departamento de Defensa de Estados
Unidos dedicada al estudio de este tipo de circuitos digitales.
Revisión 08 – 2020 55
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
En una descripción VHDL, las líneas de código finalizan con ;. Los comentarios u otra
información que ayuden la legibilidad se colocan luego de dos guiones medios seguidos (- -). La
palabra reservada GENERIC es un comando opcional, que permite definir un parámetro, que se
usa a continuación, dentro de la declaración de puertos para definir, por ejemplo, el ancho de
palabra de un puerto de entrada. Este comando es muy útil ya que proporciona flexibilidad a las
descripciones y permite hacerlas más compactas o reducidas.
Dentro del bloque PORT, se declaran todos los terminales o puertos que va a tener el circuito
a describir.
Las líneas que entran o salen de una unidad ENTITY pueden tener diferentes anchos de
palabra dependiendo el tipo de dato que representan. Esta característica se define con
STD_LOGIC o STD_LOGIC_VECTOR. La primera de las dos indica que la línea o señal tiene un
ancho de palabra de un bit. Por el contrario, la segunda indica que el o los terminales nombrados
conforman un bus y tienen un ancho de palabra mayor a un bit. El ancho está definido dentro del
paréntesis (n DOWNTO 0) o (0 TO n). DOWNTO define que el bit más a la izquierda del bus
declarado es el más significativo. Por el contrario si se usa la expresión del segundo paréntesis,
se define que el bit más a la izquierda del bus es el menos significativo. El uso de una u otra
forma depende de lo que está representando este bus. Generalmente, si el grupo de líneas
representa un número, el bit más a la izquierda es el de mayor peso, por lo que se usará
DOWNTO. Si el bus es la salida de un dispositivo decodificador, que se estudiará en el capítulo 4,
es común que el bit más a la izquierda sea el de menor peso, por lo que se usa TO.
Revisión 08 – 2020 56
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
Revisión 08 – 2020 57
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
Buffer_A[7] = 1
Buffer_A[6] = 0
Buffer_A[5] = 0
Buffer_A[4] = 1
Buffer_A[3] = 1
Buffer_A[2] = 1
Buffer_A[1] = 0
Buffer_A[0] = 0
Buffer_A: IN STD_LOGIC_VECTOR (0 TO 7)
Buffer_A[0] = 1
Buffer_A[1] = 0
Buffer_A[2] = 0
Buffer_A[3] = 1
Buffer_A[4] = 1
Buffer_A[5] = 1
Buffer_A[6] = 0
Buffer_A[7] = 0
Es necesario hacer notar que el número que se asigna al puerto se escribe normalmente, con el
bit más significativo a la izquierda.
VHDL provee además otros tipos de datos, tales como BIT, BOOLEAN, INTEGER, ARRAY,
RECORD, etc. El tipo de dato también define qué clase de información manejará la línea o bus
considerado. En el caso de STD_LOGIC y STD_LOGIC_VECTOR, se trata de líneas binarias que
además de soportar los estados 0 y 1 propios de un sistema digital, admite 8 valores en total:
Revisión 08 – 2020 58
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
ENTITY función_F3 IS
PORT (A, B, C : IN STD_LOGIC;
F3 : OUT STD_LOGIC);
END función_F3;
Revisión 08 – 2020 59
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
En esta descripción se han tomado a las tres entradas A, B y C en conjunto como una palabra
ABC de 3 bits. Esta palabra se utiliza para seleccionar el estado de la salida F3, en forma similar
a como funciona un multiplexor. Dentro de ARCHITECTURE no interesa el orden en que se van
escribiendo las sentencias, el resultado sería el mismo si se alteraran el orden de las líneas que
contienen el comando WHEN.
Revisión 08 – 2020 60
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
CAPÍTULO 3
FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS
Fuentes de información:
Revisión 08 – 2020 61
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
CAPÍTULO 4
CODIFICADORES, DECODIFICADORES E INDICADORES ALFANUMÉRICOS.
MULTIPLEXORES Y DEMULTIPLEXORES
• Operadores
• Sentencia WHEN, en sus dos formas: WHEN/ELSE y WITH/SELECT/WHEN.
• Sentencia GENERATE.
Es la forma más simple de describir un circuito digital. Utiliza los operadores lógicos y
funciones de variables del Álgebra de Boole, tales como AND, OR, NOT, NAND, NOR, XOR, XNOR.
Los circuitos se describen como funciones lógicas. En el siguiente ejemplo se describe un circuito
sumador full adder utilizando operadores:
Revisión 08 – 2020 62
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY full_adder IS
PORT (Ai, Bi, Cin: IN STD_LOGIC;
Sn, Cn: OUT_STD_LOGIC);
END full_adder;
El comando LIBRARY ieee le dice al compilador donde hallar los tipos de datos o puertos
declarados en la unidad ENTITY.
El comando USE ieee.std_logic_1164.all indica al compilador que dentro de la librería ieee,
use la parte que define los tipos de datos STD_LOGIC, establecidos por la norma IEEE 1164.
Estas dos cláusulas, LIBRARY y USE deben ser incluidas al inicio de toda descripción VHDL.
La expresión
Sn <= Ai XOR Bi XOR Cin;
debe leerse como: “el puerto de salida Sn recibe el valor final de la operación OR EXCLUSIVA
entre los valores de los puertos de entrada Ai, Bi y Cin. Cada vez que alguna de estos tres puertos
de entrada cambien su estado, nuevamente se calcula el resultado de la operación y a
continuación es transferido a Sn.
Hay una diferencia fundamental entre el retardo inercial y el retardo de transporte. Una
compuerta lógica necesita que los estados lógicos de sus entradas permanezcan estables
durante un tiempo mínimo para que puedan ser procesadas y la salida refleje el resultado
correspondiente. Cualquier cambio en las entradas cuya duración sea inferior a este tiempo, no
será considerado. El retardo inercial se comporta de esta manera.
Por otro lado, el retardo de transporte simplemente es un retardo de aplicación del resultado
de una operación. La figura 4.1 muestra la diferencia fundamental entre estos dos tipos de
retardos.
Revisión 08 – 2020 63
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
El pulso aplicado a la entrada A del buffer tiene una duración de 10 ns. En los ejemplos
anteriores se definieron 20 ns tanto para el retardo inercial como para el de transporte. Si al
buffer se aplica el retardo de inercial, su salida no reflejará el pulso en la entrada A tal como se
indica en la gráfica de la figura 4.1. Esto es así porque el pulso en la entrada A no se mantuvo
estable por un tiempo mayor a 20 ns, entonces es ignorado y la salida no cambia de estado.
Si en cambio se aplica el retardo de transporte, la salida B del buffer retrasará la señal de
entrada 20 ns.
donde Salida es una señal o un puerto que toma los valores valores1_que_adopta,
valores2_que_adopta, etc., cuando las señales o puertos señal1_o_puerto, señal2_o_puerto,
etc. tienen el valor o estado indicado en condición. La forma WHEN/ELSE tiene las siguientes
particularidades:
• Proporciona prioridad o importancia a los puertos o señales por sobre las demás.
• Esta estructura permite una o varias señales de control. Señal1_o_puerto,
señal2_o_puerto, etc. pueden ser los mismos o diferentes puertos o señales.
• No es necesario que sean testeadas todas las variaciones que pueden adoptar las
señales o puertos de control.
• Si ninguna de las condiciones de los puertos o señales testeados se cumple, es
posible asignar un valor por defecto.
Revisión 08 – 2020 64
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
El siguiente ejemplo corresponde a un codificador con prioridad de cuatro líneas a dos líneas:
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY codificador IS
PORT (E0, E1, E2, E3: IN STD_LOGIC;
Salida: OUT STD_LOGIC_VECTOR (1 DOWNTO 0);
END codificador;
En el ejemplo anterior se observa que la entrada E3 tiene la prioridad más alta. Sin importar el
estado de las restantes entradas, si E3 tiene un valor alto, la salida adoptará el valor “11”. Otro
detalle es el valor por defecto: si E3, o E2 o E1 no tiene un estado alto, la salida toma el valor
“00”, sin importar el estado de E0. Finalmente hay que destacar la sintaxis de las asignaciones:
cuando se trata de asignar valores de un bit, los mismos van entre comillas simples. Cuando la
asignación es una palabra de más de un bit de ancho, el dato va entre comillas dobles.
donde control es la señal o puerto cuyo estado será testeado. Salida_o_señal es el puerto o
señal que recibe la asignación1, asignación2, etc. Según los diferentes valores condición1,
condición2, etc. de la señal de control. La forma WITH/SELECT/WHEN tiene las siguientes
particularidades:
Revisión 08 – 2020 65
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY deco_BCD_7seg IS
PORT (Ent_BCD: IN STD_LOGIC_VECTOR(3 DOWNTO 0);
Salida_7seg: OUT_STD_LOGIC_VECTOR (0 DOWNTO 6);
END deco_BCD_7seg;
En el ejemplo anterior, se puede ver con claridad que no interesa el orden en que se describió
el circuito. Si se cambian las líneas donde se testean los diferentes valores que puede tomar la
entrada Ent_BCD, el resultado es el mismo. Si el puerto de entrada no tiene ninguno de los
valores enumerados, la salida toma el valor por defecto indicado en la línea que contiene WHEN
OTHERS.
Revisión 08 – 2020 66
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY _4mux_4 IS
PORT (E0, E1, E2, E3: IN STD_LOGIC_VECTOR(3 DOWNTO 0);
Seleccion: IN STD_LOGIC_VECTOR(1 DOWNTO 0);
Salida_mux: OUT_STD_LOGIC_VECTOR (3 DOWNTO 0);
END _4mux4;
4-2 Codificadores
Una de las necesidades más frecuentes en electrónica digital es convertir una información no
binaria (números, letras, símbolos, etc.) en binaria, es decir en niveles altos y bajos. Los circuitos
que realizan esta función se denominan codificadores. Estos son circuitos combinacionales de
compuertas lógicas que tienen n entradas y m salidas cuya particularidad es que cuando una de
las entradas tiene un estado lógico diferente al del resto de las entradas los m terminales de
salida presentan la combinación binaria o código que identifica exclusivamente a la entrada
activa. La figura 4-2 muestra el bloque genérico de un codificador.
Revisión 08 – 2020 67
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
eléctrico y la tabla de verdad. Cada vez que una y sólo una de las ocho entradas esté a nivel
lógico alto las salidas ABC reflejarán el código binario natural correspondiente a esa entrada.
Por ejemplo, si se activa la entrada E3, la salida ABC = 011.
Por otro lado si dos o más entradas están activas al mismo tiempo, la salida no reflejará
ningún código o éste será erróneo. Se dice entonces que el codificador no tiene prioridad. La
figura 4-4 presenta el esquema interno de un codificador con prioridad.
1 9 B
10
13
11
12
2 A
3
1
2 9 B 4 C
10 5
13
11
12
2 A
3
1
3 2 A 4 B
3 5
1
4
5
2 A
3
1
4 2
3
A
4 A
1 5
4
5
A
5 1
2 9
8
A
6 1
3
2
Revisión 08 – 2020 68
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
D7 D6 D5 D4 D3 D2 D1 D0 A B C
1 X X X X X X X 1 1 1
0 1 X X X X X X 1 1 0
0 0 1 X X X X X 1 0 1
0 0 0 1 X X X X 1 0 0
0 0 0 0 1 X X X 0 1 1
0 0 0 0 0 1 X X 0 1 0
0 0 0 0 0 0 1 X 0 0 1
0 0 0 0 0 0 0 1 0 0 0
Una aplicación práctica de los codificadores es la de aceptar como entradas las líneas de
petición de servicio. La salida del codificador corresponde a la dirección del componente que
solicita atención. Otra aplicación es la codificación de un teclado: cada tecla es ingresada como
una entrada al codificador y en su salida se obtiene el código que identifica a la tecla presionada.
• Terminal de habilitación general (E, enable): también llamado CE (chip enable) o CS (chip
select) Cuando esta línea está activa a nivel 1 el CI cumple la función para la que fue
diseñada. En caso contrario el CI es inhabilitado y no responde a ninguna señal de
entrada. Generalmente las salidas son llevadas a un estado determinado 0 o 1
dependiendo del diseño del componente.
• Terminal de habilitación de salidas (OE, output enable): los CI´s con este terminal de
control tienen salidas del tipo “tri-state”, en su estado lógico activo permite que en las
salidas estén presentes los niveles lógicos 0 o 1 correspondientes a ese instante; en su
estado inactivo las salidas presentan una alta impedancia.
• Entradas y salidas activas bajas: se denominan así a los terminales de un CI cuyo estado
lógico activo es el 0 y el inactivo el 1. Para simbolizar esta característica en los circuitos
eléctricos, se adiciona a cada uno un círculo indicativo de negación.
Revisión 08 – 2020 69
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
Tabla de verdad
EI 7 6 5 4 3 2 1 0 E0 GS A B C
74LS148 1 X X X X X X X X 1 1 1 1 1
10
0 A
9 0 1 1 1 1 1 1 1 1 0 1 1 1 1
11 7
1 B
12
2 C
6 0 0 X X X X X X X 1 0 0 0 0
13
3
1
4 GS
14 0 1 0 X X X X X X 1 0 0 0 1
2
5
3
6 0 1 1 0 X X X X X 1 0 0 1 0
4
7
0 1 1 1 0 X X X X 1 0 0 1 1
5 15
EI EO
0 1 1 1 1 0 X X X 1 0 1 0 0
0 1 1 1 1 1 0 X X 1 0 1 0 1
0 1 1 1 1 1 1 0 X 1 0 1 1 0
0 1 1 1 1 1 1 1 0 1 0 1 1 1
ENTITY codificador_dec_a_bin IS
PORT (E1, E2, E3, E4, E5, E6, E7, E8, E9: IN STD_LOGIC);
Salida: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
END codificador_dec_a_bin;
Revisión 08 – 2020 70
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
cadena de bits que configurarán conexiones en un dispositivo lógico programable, PLD, para
implementar dicho circuito.
4-3 Decodificadores
A B C S0 S1 S2 S3 S4 S5 S6 S7
n0 m0 0 0 0 1 0 0 0 0 0 0 0
n1 m1 0 0 1 0 1 0 0 0 0 0 0
n2 m2 0 1 0 0 0 1 0 0 0 0 0
n3 DECODIFICADOR m3 0 1 1 0 0 0 1 0 0 0 0
1 0 0 0 0 0 0 1 0 0 0
1 0 1 0 0 0 0 0 1 0 0
nn-1 mm-1 1 1 0 0 0 0 0 0 0 1 0
1 1 1 0 0 0 0 0 0 0 1
Esquema interno
S0
S1
S2
S3
S4
S5
S6
S7
Revisión 08 – 2020 71
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
Comercialmente existe una amplia variedad de decodificadores tanto en tecnología TTL como
CMOS.
TTL: 74LS145 decodificador 4 líneas a 10 líneas con colector abierto (BCD a decimal).
74LS42 decodificador 4 líneas a 10 líneas (BCD a decimal).
74LS43 decodificador 4 líneas a 10 líneas (exceso tres a decimal).
74LS44 decodificador 4 líneas a 10 líneas (código Gray a decimal).
74LS154 decodificador 4 líneas a 16 líneas (binario a hexadecimal).
74LS138 decodificador 3 líneas a 8 líneas (binario a octal).
Los decodificadores pueden ser utilizados para generar funciones lógicas. Sea por ejemplo la
función F
la función lógica puede implementarse mediante un decodificador con salidas activas altas.
Utilizando una compuerta OR se conectan a sus entradas las salidas del decodificador cuyo
orden corresponde al de los minitérminos de la función. También puede implementarse la
función expresada como productos de sumas lógicas usando un decodificador con salidas
activas bajas y una compuerta AND. A las entradas de la compuerta AND se conectan las salidas
del decodificador cuyo orden corresponde al de los maxitérminos de la función. La figura 4-7
muestra los circuitos para ambas formas de implementación.
Revisión 08 – 2020 72
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
m0
m1
m2
n0 m3
DECODIFICADOR F
n1 m4
n2 m5
m6
m7
m0
m1
m2
n0 m3
DECODIFICADOR F
n1 m4
n2 m5
m6
m7
Mediante el uso de los terminales de control (habilitación del chip, habilitación de salidas,
etc.) y combinando decodificadores de diferentes tipos es posible crear decodificadores de
cualquier cantidad de líneas de salida. En la figura 4-8 corresponde a un decodificador de 5
líneas a 24 líneas utilizando un decodificador de 2 a cuatro líneas 74HC139 y tres
decodificadores de 3 a 8 líneas 74LS138.
Revisión 08 – 2020 73
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY decodificador_octal IS
PORT (Entrada_binaria: IN STD_LOGIC_VECTOR(2 DOWNTO 0);
Salida_octal: OUT STD_LOGIC_VECTOR(0 TO 7);
END decodificador_octal;
Obsérvese que la última línea de la estructura WHEN/ELSE, la salida adopta un estado de alta
impedancia en todas su líneas individuales cuando el estado de Entrada_binaria no corresponde
a ninguna de las opciones enumeradas. La línea que contiene el comando WHEN OTHERS indica
que cualquier otra combinación del puerto de entrada que no fue considerada anteriormente
producirá en la salida el estado de alta impedancia “ZZZZZZZZ”. Otro detalle a destacar es la
forma en que se declaró Salida_octal, con su bit más significativo ubicado a la derecha. De esta
manera, la palabra que se le asigna dentro de la estructura WITH-SELECT-WHEN, quedará
espejada. Esto quiere decir por ejemplo que cuando se asigna
Revisión 08 – 2020 74
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
Salida_octal<=”00000001”
El resultado efectivo sobre la salida será “10000000”, ya que el bit menos significativo está a la
izquierda según la declaración de la entidad.
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY decodificador_hexa_7segmentos IS
PORT (ABCD: IN STD_LOGIC_VECTOR(2 DOWNTO 0);
abcdefg: OUT STD_LOGIC_VECTOR(6 DOWNTO 0);
END decodificador_hexa_7segmentos;
END comportamiento;
4-4 Multiplexores
Revisión 08 – 2020 75
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
E0
E1 E0
E2 E1
E3 S
E2
E4 E3
E5 E4 MUX
E6 S
Selección de
entradas En
C2C1 C0
Cm-1 C1 C0
S = C2 C1 C0 E0 + C2 C1 C0 E1 + C2 C1 C0 E2 + C2 C1 C0 E3 + C2 C1 C0 E4 +
+ C2 C1 C0 E5 + C2 C1 C0 E6 + C2 C1 C0 E7
La expresión algebraica de la salida del multiplexor es una suma de productos lógicos en la
que cada término es el producto lógico de la combinación de selección de una entrada por el
estado de dicha entrada. Teniendo la tabla de verdad y la ecuación lógica se puede implementar
el circuito eléctrico del multiplexor. La figura 4-10 muestra el esquema eléctrico de un
multiplexor de 8 canales.
Revisión 08 – 2020 76
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
Esquema interno
E0
E1
E2
E3
2
3
1
E4 4 S
5
E5
E6
E7
C2
C1
C0
A continuación se mencionan algunos CI´s multiplexores más conocidos y utilizados, así como
su tabla de verdad y disposición de terminales.
Revisión 08 – 2020 77
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
Tabla de verdad
74LS157 A1 S1
15 B1
1 G G A/B S
A/B A2 S2
2 4
3 1A
1B
1Y
2Y 7 B2 1 X 0
5 9
6 2A
2B
3Y
4Y 12 A3 S3 0 0 A
11
10 3A
3B
B3 0 1 B
14
13 4A
4B A4 S4
B4
A/B
Equivalente electromecánico
Tabla de verdad
74LS153
14 1C0 B A C0 C1 C2 C3 G Y
A
2
B 1C1 Y1
X X X X X X 1 0
1 1C2
6
1G
1CO 1C3 0 0 0 X X X 0 0
5 7
1C1 1Y
4
1C2 2Y
9 2C0 0 0 1 X X X 0 1
3
1C3 2C1 Y2
15
10
2G
2CO 2C2 0 1 X 0 X X 0 0
11
2C1
12
2C2 2C3 0 1 X 1 X X 0 1
13
2C3
1 0 X X 0 X 0 0
Selección de 1 0 X X 1 X 0 1
entradas
1 1 X X X 0 0 0
1 1 X X X 1 0 1
B A
Equivalente electromecánico
Otro multiplexor doble de cuatro canales es el 74LS253 con salida de tres estados a
diferencia del 74LS153 que cuando está inhibido su salida adopta el estado 0.
Este multiplexor tiene salidas con tres estados, y terminales de habilitación de entradas y
salidas. Cuando las entradas están inhabilitadas la salida adopta el valor 0.
Revisión 08 – 2020 78
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
Tabla de verdad
C B A DIS INH Y
CD4512B
X0
1 14 X1 X X X 1 X Alta Z
X0 Z
2
3
X1 X2 Z X X X 0 1 0
X2
4 X3
5 X3
X4 X4
0 0 0 0 0 X0
6
X5
7
X6 X5 0 0 1 0 0 X1
9
X7 X6
11
A X7 0 1 0 0 0 X2
12
B
13
C
Selección de 0 1 1 0 0 X3
15
10 DIS entradas 1 0 0 0 0 X4
INH
1 0 1 0 0 X5
A B C 1 1 0 0 0 X6
1 1 1 0 0 X7
Equivalente electromecánico
Tabla de verdad
D C B A G W
X X X X 1 1
74LS150 0 0 0 0 0 E0
0 0 0 1 0 E1
9 24
8 E0 G VCC 0 0 1 0 0 E2
7 E1
6
5 E2 0 0 1 1 0 E3
4 E3
3 E4
E5 0 1 0 0 0 E4
2 E6
1
23 E7 W 10 0 1 0 1 0 E5
22 E8
21 E9
E10 0 1 1 0 0 E6
20 E11
19
18 E12 0 1 1 1 0 E7
17 E13
E14 1
16 E15 0 0 0 0 E8
A B C D GND
1 0 0 1 0 E9
15 14 13 11 12 1 0 1 0 0 E10
1 0 1 1 0 E11
1 1 0 0 0 E12
1 1 0 1 0 E13
1 1 1 0 0 E14
1 1 1 1 0 E15
Revisión 08 – 2020 79
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
C3
C4
CD4512B
E0 1 X0 Z 14
E1 2 X1
E2 3 X2
E3 4 X3
E4 5 X4
E5 6 X5
E6 7 X6
E7 9 X7
C0 11 A
C1 12 B
C2 13 C
0V 15 DIS
0V 10 INH
CD4512B
E8 1 X0 Z 14
E9 2 X1
E10 3 X2
E11 4 X3
E12 5 X4
E13 6 X5
E14 7 X6
E15 9 X7 74LS153
11 A 14
12 B 2 A
13 C B
0V 15 DIS 1
0V 10 INH 0V 6 1G
5 1CO 7
1C1 1Y S
CD4512B 4 1C2 2Y 9
3 1C3
1 14 15 2G
E16 2 X0 Z 10 2CO
E17 3 X1 11 2C1
E18 4 X2 12 2C2
E19 5 X3 13 2C3
E20 6 X4
E21 7 X5
E22 9 X6
E23 X7
11 A
12 B
13 C
0V 15 DIS
0V 10 INH
CD4512B
E24 1 X0 Z 14
E25 2 X1
E26 3 X2
E27 4 X3
E28 5 X4
E29 6 X5
E30 7 X6
E31 9 X7
11 A
12 B
13 C
0V 15 DIS
0V 10 INH
Revisión 08 – 2020 80
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
+5V +5V
74LS150
9 24
8
+5V
E0 G VCC
7
6
E1 CD4512B
E2
5 1 14
4
E3
E4
2
X0
X1
Z F
3 3
E5 X2
2 4
E6 X3
1 10 5
23 E7
E8
W F 6 X4
X5
22 7
E9 X6
21 9
20
E10 A X7
E11
19
18
E12 D 11
12
A
17
E13 C 13
B
E14 C
16
E15 B
15
DIS
10
A B C D GND INH
15 14 13 11 12
D CBA
Fig. 4-16a Fig. 416b
Otra manera de implementar esta función es usando un multiplexor de 8 canales. Las tres
variables de menor peso (B, C y D) repiten sus estados lógicos de las 8 primeras combinaciones
en las 8 últimas, variando solamente el estado de la variable de mayor peso A. Para cada
combinación lógica la función adopta los siguientes estados:
Combinación ABCD F
0 0 0 0 0 0
8 1 0 0 0 0
1 0 0 0 1 0
9 1 0 0 1 1
2 0 0 1 0 0
10 1 0 1 0 0
3 0 0 1 1 1
11 1 0 1 1 1
4 0 1 0 0 1
12 1 1 0 0 1
5 0 1 0 1 0
13 1 1 0 1 0
6 0 1 1 0 0
14 1 1 1 0 0
7 0 1 1 1 0
15 1 1 1 1 1
Revisión 08 – 2020 81
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY multiplexor_4_a_1 IS
PORT (Canal_0, Canal_1, Canal_2, Canal_3: IN STD_LOGIC;
Seleccion: IN STD_LOGIC_VECTOR(1 DOWNTO 0);
Salida: OUT STD_LOGIC);
END multiplexor_4_a_1;
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY multiplexor_4_a_1 IS
GENERIC( ancho: integer:= 4);
PORT (Canal_0, Canal_1, Canal_2, Canal_3: IN STD_LOGIC_VECTOR(ancho-1 DOWNTO 0);
Seleccion: IN STD_LOGIC_VECTOR(1 DOWNTO 0);
Salida: OUT STD_LOGIC_VECTOR(ancho-1 DOWNTO 0));
END multiplexor_4_a_1;
Revisión 08 – 2020 82
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
mediante un editor de esquemas, ya que con solo cambiar el valor de la variable se modifica el
ancho del canal.
En la descripción anterior, se modificó el tipo de puerto de los canales de entrada y de salida,
pasando de ser del tipo bit a bus. Por otro lado, se sellecciona el canal 0 como opción por
defecto.
4-5 Demultiplexores
Los demultiplexores así como los multiplexores son circuitos integrados de mediana escala de
integración (MSI). La figura 4-18 presenta la composición interna de un demultiplexor de cuatro
canales.
S0
S1
S2
E
S3
C1 C0
Revisión 08 – 2020 83
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
S0 = C1 C2 E0
S1 = C1 C2 E1
S2 = C1 C2 E2
S3 = C1 C2 E3
16
VCC
7
1Y0
1 1Y1 6
C1 5
2 1Y2 4
G1 1Y3
9
2Y0
15 2Y1 10
C2 11
2Y2
14 12
G2 2Y3
B A GND
12
3 13
Tabla de verdad
Este CI tiene dos línea de habilitación, con la característica adicional de poder funcionar
también como decodificador de 3 a 8 líneas, propiedad que se verá en el siguiente punto.
Revisión 08 – 2020 84
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
1 15
A Y0
2 14
B Y1
3 13
C Y2
12
Y3
6 11
G1 Y4
4 10
G2A Y5
5 9
G2B Y6
7
Y7
74LS138
Tabla de verdad
C B A G2A G2B Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
X X X 1 X 1 1 1 1 1 1 1 1
X X X X 1 1 1 1 1 1 1 1 1
0 0 0 0 0 G1 1 1 1 1 1 1 1
0 0 1 0 0 1 G1 1 1 1 1 1 1
0 1 0 0 0 1 1 G1 1 1 1 1 1
0 1 1 0 0 1 1 1 G1 1 1 1 1
1 0 0 0 0 1 1 1 1 G1 1 1 1
1 0 1 0 0 1 1 1 1 1 G1 1 1
1 1 0 0 0 1 1 1 1 1 1 G1 1
1 1 1 0 0 1 1 1 1 1 1 1 G1
24 19
VCC G2 Y0 1
2
Y1
3
Y2
4
Y3
5
Y4
6
Y5
7
Y6
18 8
G1 Y7
9
Y8
10
Y9
11
Y10
13
Y11
14
Y12
15
Y13
16
Y14
17
Y15
D C B A GND
20 21 22 23 12
74LS154
Tabla de verdad
Revisión 08 – 2020 85
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
+ Vcc
24 19
G2 Y0 1
VCC
2
0
Y1
3 1
Y2
4 2
Y3
5 3
Y4
6 4
Y5
7 5
18
Y6
8 6
G1 Y7
9 7
Y8
10 8 1 15
Y9
11 9 C0 2
A Y0
14
S0
Y10
13 10 C1 3
B Y1
13
S1
Y11
14 11 C2 C Y2
12
S2
Y12
15 12 6
Y3
11 S3
Y13
16 13 + Vcc 4
G1 Y4
10 S4
Y14
17 14 E 5
G2A Y5
9 S5
Y15 15 G2B Y6
7
S6
Y7 S7
D C B A GND
20 21 22 23 12
74LS154 74LS138
A B CD
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY demultiplexor_1_a_8 IS
PORT (Salida: OUT_STD_LOGIC_VECTOR(0 TO 7);
Seleccion: IN STD_LOGIC_VECTOR(2 DOWNTO 0);
Ent: IN STD_LOGIC);
END demultiplexor_1_a_8;
Revisión 08 – 2020 86
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
Revisión 08 – 2020 87
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
CAPÍTULO 5
ARITMÉTICA BINARIA: OPERACIONES Y CIRCUITOS ARITMÉTICOS
5-1-1 Introducción
Antes de comenzar con el estudio de los circuitos aritméticos, se verán nuevos conceptos de
VHDL que permitirán la descripción más eficiente de algunos circuitos. Tal como se mencionó en
los capítulos anteriores, las descripciones en VHDL son concurrentes o paralelas, en donde no
interesa el orden en que se escriben los comandos. Sin embargo a través de procesos VHLD
permite la descripción de porciones de circuitos cuyo comportamiento sí depende del orden en
que se escriben los comandos. Si bien el proceso tiene un comportamiento secuencial, desde el
punto de vista global de la descripción, esta sigue siendo concurrente. Los procesos se utilizan
para describir tanto circuitos combinacionales como secuenciales. Los circuitos secuenciales se
estudiarán con amplitud en los siguientes capítulos.
Revisión 08 – 2020 88
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
5-1-2 Comando IF
IF (condición_que_debe_cumpirse) THEN
(asignaciones si se cumple la condición) ;
ELSIF (condición_de_repregunta) THEN
(asignaciones si se cumple la condición alternativa) ;
…
ELSE
(asignaciones si no se cumplen las condiciones anteriores) ;
END IF;
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY codificador_4_a_2 IS
PORT (Salida: OUT_STD_LOGIC_VECTOR(1 TO 0);
E0, E1, E2, E3: IN STD_LOGIC);
END codificador_4_a_2;
Revisión 08 – 2020 89
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
CASE señal_variable_o_puerto_a_evaluar IS
END CASE;
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY decodificador_BCD_7segmentos IS
PORT (ABCD: IN STD_LOGIC_VECTOR(3 DOWNTO 0);
abcdefg: OUT STD_LOGIC_VECTOR(6 DOWNTO 0);
END decodificador_BCD_7segmentos;
Revisión 08 – 2020 90
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
El comando LOOP permite implementar diferentes tipos de lazos o bucles. En VHDL un lazo es
un recurso de descripción para instanciar muchas copias de un mismo circuito, reduciendo el
tamaño del código.
La sintaxis del lazo FOR – LOOP es:
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY multiplexor_4canales IS
GENERIC(N: integer:=4); - -N es el parámetro que define el ancho de palabra
PORT (canal_0, canal_1, canal_2, canal_3: IN STD_LOGIC_VECTOR(N-1 DOWNTO 0);
seleccion: IN STD_LOGIC_VECTOR (1 DOWNTO 0);
salida: OUT STD_LOGIC_VECTOR(N-1 DOWNTO 0);
END multilexor_4canales;
En este ejemplo, el lazo FOR – LOOP instancia N multiplexores simples de cuatro canales para
formar un multiplexor de cuatro canales de N bits de ancho de palabra. Mediante el uso del
comando GENERIC, es posible fácilmente modificar el ancho de palabra de los canales sin tener
que cambiar la descripción. Esto constituye un argumento poderoso a favor del diseño mediante
HDL’s frente al diseño convencional mediante un editor de esquemas.
Revisión 08 – 2020 91
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
A diferencia de los comandos IF, CASE o LOOP, estudiados en el capítulo 5, un proceso que
emplea WAIT no necesita lista de sensibilidad. Se utiliza en combinación con otros comandos
tales como UNTIL, ON o FOR.
Esta estructura solo acepta una sola señal o condición. Como no necesita lista de
sensibilidad, WAIT debe ser el primer comando en aparecer dentro del proceso. El circuito
descripto en el proceso se activa cada vez que se cumple la condición. El siguiente ejemplo
corresponde a la descripción de un registro de almacenamiento con una señal de reset
sincronizado. Este dispositivo será estudiado en el siguiente capítulo.
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY registro IS
PORT (entrada: IN STD_LOGIC_VECTOR(7 DOWNTO 0);
salida: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
reloj, reset: IN STD_LOGIC);
END registro;
En esta forma del WAIT si se aceptan múltiples señales, a diferencia de WAIT UNTIL. En el
ejemplo que sigue a continuación se presenta el mismo registro visto con anterioridad, pero
descripto ahora utilizando WAIT ON:
Revisión 08 – 2020 92
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY registro IS
PORT (entrada: IN STD_LOGIC_VECTOR(7 DOWNTO 0);
salida: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
reloj, reset: IN STD_LOGIC);
Esta estructura está pensada solamente para generar formas de onda para los archivos de
simulación o testbench. No describe un circuito sintetizable. En ejemplo siguiente se muestra la
generación de un pulso de estímulo en una entrada, para un archivo de simulación:
A<=’0’;
WAIT FOR 2ms;
A<=’1’;
WAIT FOR 2ms;
A<=’0’;
Algunos circuitos lógicos se emplean para realizar operaciones aritméticas básicas tales como
la suma, resta multiplicación y división. Debido a que los dispositivos digitales manejan niveles
de tensión altos y bajos, asociados a unos y ceros respectivamente, el sistema de numeración
que usan es el binario. Los resultados obtenidos luego deben ser convertidos al sistema decimal
de manera que puedan ser interpretados más fácilmente por el ser humano.
A menudo los números utilizados son enteros con signo, es decir positivos o negativos, lo que
hace necesario adoptar un método para representar adecuadamente cada magnitud. Como solo
se trabaja con 0’s y 1’s, no se dispone de otro símbolo o nivel de tensión para representar al
signo. Este inconveniente se soluciona asignando al número a representar una cifra más a la
izquierda de su bit más significativo, denominada bit de signo. Cuando el bit de signo es cero el
número es positivo y cuando es igual a uno se lo considera negativo.
Revisión 08 – 2020 93
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
Existen varias formas de representar los números binarios negativos, cada una de ellas con
ventajas y desventajas sobre las otras. A continuación se detallan algunos métodos:
Este sistema utiliza n cifras para representar números de n-1 bits. El bit más a la izquierda es el
bit de signo antes mencionado, los n-1 bits restantes representan el valor absoluto del número,
de allí la denominación de magnitud verdadera. Es necesario hacer notar que si se está
trabajando con números de n cifras, éstos deben escribirse con la totalidad de las cifras aún
cuando no los necesiten.
Entonces N= -11610 = 1 1 1 1 0 1 0 02
En este ejemplo n=8 por lo tanto es posible representar números de n-1 = 7 cifras más el bit
de signo, es decir desde -127 hasta + 127.
1110 = 0 0 0 0 1 0 1 12 ; -4510 = 1 0 0 0 1 0 1 12
Nótese que en los dos últimos ejemplos aún cuando el valor absoluto del número no necesita
las 7 cifras para representarlo, se completan con los ceros que sean necesarios ya que se deben
usar todos los bits del campo correspondiente al valor absoluto.
Un dato curioso de este método de representación es que existen dos ceros, uno con signo
positivo y otro con signo negativo:
n = 8 010 = 0 0 0 0 0 0 0 02 ; -010 = 1 0 0 0 0 0 0 02
El método de magnitud verdadera y signo es fácil de entender pero no resulta práctico para
realizar operaciones aritméticas, como se verá más adelante.
En esta forma de representación, los números positivos conservan su expresión habitual, con
el bit de signo igual a cero. Los números negativos se obtienen complementando todos los bits
incluyendo el bit de signo.
-11610 = 1 0 0 0 1 0 1 12
+1110 = 0 0 0 0 1 0 1 12
-1110 = 1 1 1 1 0 1 0 02
+12710 = 0 1 1 1 1 1 1 12
-11610 = 1 0 0 0 0 0 0 02
Revisión 08 – 2020 94
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
+010 = 0 0 0 0 0 0 0 02
-11610 = 1 1 1 1 1 1 1 12
Nuevamente se ve que existen dos 0 uno negativo y otro positivo. Como ventajas de este
método se puede decir que hallar el negativo de un número determinado es fácil, ya que solo se
necesitan negar o complementar todos sus bits. La desventaja es que su interpretación no es
directa como en el método anterior.
Igual que para los métodos anteriores los números positivos conservan su expresión habitual,
con el bit de signo igual a cero. Los números negativos se obtienen complementando todos sus
bits (complemento a 1) y a este resultado se le suma una unidad.
Se puede observar en este último ejemplo, que luego de descartar la cifra más a la izquierda,
al aplicar el complemento a dos al número cero, se obtiene el mismo número, a diferencia de los
anteriores métodos. Por lo tanto para n=8 se pueden representar números desde -128 hasta
+127.
La desventaja de este método es que es más laborioso y de menos interpretación directa que
los anteriores. Su ventaja es que permite usar un mismo circuito tanto para la suma como la
resta.
Revisión 08 – 2020 95
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
El método consiste en tomar el número expresado en decimal y sumarle una cierta cantidad
llamada “sesgo o exceso”. El sesgo puede ser 2n-1 o 2n-1 – 1 siendo n las cifras binarias usadas
para representar el número en binario. Al resultado obtenido del paso anterior se lo codifica en
binario puro.
Por ejemplo, si se trabaja con números de 4 cifras, el sesgo será
Tabla 5-1: codificación para representación de números con criterio de sesgo o exceso.
La desventaja de este método es que la interpretación decimal no es directa. Por otro lado para
hallar el número con signo opuesto basta con hallar el complemento a 1 del número anterior o
del posterior según se esté usando el criterio de exceso 2n-1 – 1 o 2n-1 respectivamente. Por
ejemplo conociendo el código de número 5 usando sesgo 8, para hallar el código
correspondiente a -5 se complementan los bits del número anterior a 5, o sea 4:
Revisión 08 – 2020 96
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
con números de 6 cifras enteras y con dos fraccionarias, el mínimo número a representar sería
0,01 y el máximo 111111,11. Sin embargo, la capacidad de los operadores podría permitir
trabajar con números desde 0,00000001 hasta 11111111.
Una alternativa al problema antes mencionado es la representación de números en coma
flotante. En este método el número se descompone en tres partes: mantisa, base del sistema de
numeración y exponente:
N = m Bp donde N= número
n = mantisa
B = base del sistema
p = exponente
Con este sistema un número se puede expresar de diferentes formas, según sea la más
conveniente en cada caso para realizar las operaciones matemáticas.
De todas las formas posibles de expresar el número, se define como normalizada aquella en
que la coma se coloca a la derecha de la cifra más significativa distinta de 0. Para el caso del
ejemplo anterior la forma normalizada es:
2,25 104
Para normalizar un número se corre la coma hacia la derecha o la izquierda los lugares que sean
necesarios para que la coma quede a la derecha de la cifra más significativa diferente de 0.
Además:
El Instituto de Ingenieros Electricistas y Electrónicos (IEEE por sus siglas en inglés) define dos
formatos estándar para los números binarios con coma flotante: un formato de 32 bits
denominado “de precisión sencilla” y otro de 64 bits llamado “de doble precisión”. Ambos
formatos se muestran en la figura 5-1.
32 bits
S Exponente E Mantisa M
Revisión 08 – 2020 97
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
64 bits
S Exponente E Mantisa M
Figura 5-1: Representación de números binarios con coma flotante según la IEEE.
Ej. 1:
parte entera
7910 = 10011112
Revisión 08 – 2020 98
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
parte fraccionaria
Normalización
1,001111111101011000100100110111012 26
Expresado en hexadecimal
429FEB12H
Revisión 08 – 2020 99
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras
Ej. 2:
Representar el valor de la velocidad de la luz c=300000 km/s al estándar IEEE 754
0 10010001 00100100111110000000000
Expresado en hexadecimal
48927C00H
Ej. 3:
Convertir el siguiente número expresado en el formato de punto flotante al decimal
Mantisa: 1,01001100000010000000000
En decimal
N10= 1 219 + 1 217 + 1 214 + 1 213 + 1 26 = 524288 + 131072 + 16384 + 8192 +64
N10= 68000010
Mantisa: 1,10001010010000111011101
El número es 1,10001010010000111011101 x 2-15 =
= 0,00000000000000110001010010000111011101 x 20
En decimal
N10= 1 215 + 1 216 + 1 220 + 1 222 + 1 225 + 1 230 + 1 231 + 1 232 + 1 234 + 1 235 + 1 236 + 1 238
N10 ≈ 0,00004699996…10
con lo que la resta se transformó en una suma. A continuación se presentan algunos ejemplos de
sumas algebraicas en complemento a 2:
El bit de signo es 0 lo que indica que el resultado es positivo. Siempre se debe especificar la
cantidad de cifras con que se trabaja completando con ceros a la izquierda de la cifra más
significativa de ser necesario.
• Suma de un número positivo y otro negativo de menor valor absoluto; el resultado es otro
número positivo.
El bit de signo es 0, indicando que el resultado es positivo. La cifra más a la izquierda se descarta
para el resultado final. Si se hubiese realizado el mismo cálculo, pero usando la representación
de complemento a 1 o magnitud verdadera y signo, el resultado habría sido erróneo:
Con estos cuatro ejemplos quedó demostrado que es posible tratar a la resta como una suma
algebraica si se usa el método de complemento a 2. Esto permite en la práctica usar el mismo
dispositivo para realizar ambas operaciones, como se verá más adelante.
A B Suma S Acarreo C
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1
Tabla 5-2
Semisuma
A
S
B
El circuito anterior suma dos bits sin tener en cuenta el bit de acarreo. Este circuito solamente
es útil para sumar los bits de menor orden de dos números. En la suma de los bits de una
columna cualquiera de un número, es necesario considerar el acarreo producido en la suma de
la columna de orden inmediato inferior. Supóngase la suma de dos números A y B de cuatro bits
cada uno:
A = 1 1 0 1, B = 0 1 1 1.
En la tercera columna se suman los bits A2 , B2 y C1; en forma general, en la columna n se suman
los bits An , Bn y Cn-1, dando como resultado la suma Sn y el acarreo Cn.
El circuito digital capaz de sumar dos bits de una columna cualquiera y el acarreo de la etapa
anterior se llama sumador total o “full adder”. Su tabla de verdad se muestra en la tabla 5-3:
Tabla 5-3
Cn = Cn-1 (A + B) + AB
La figura 5-3 muestra el diagrama de Karnaugh para Cn, el circuito final y el símbolo
electrónico del sumador total.
Sumador total
A
1 A
A 3 1 S
2 3
B 2
A
B 00 0 11 1 Cn-1
Cn- 1 0
1 0 1
0 1 3 2
1
1 1 1
4 5 7 6
Cn
Cn = Cn-1 (A + B) + A
B
Cn-
1 S
A Sumado
r tota
l C
B n
Símbolo eléctrico
Este circuito permite sumar dos números de n bits, comenzando por los de menor peso y
continuando en orden ascendente, considerando el acarreo de la etapa anterior. En la figura 5-4
se muestra un circuito sumador de 4 bits. El mismo se compone de cuatro sumadores totales;
cada uno se encarga de sumar los bits de igual orden más el acarreo proveniente de la etapa
anterior. También se observa que el acarreo generado en una etapa sumadora se aplica a la
entrada de acarreo de la etapa de orden inmediato superior, de allí su característica de acarreo
serie. La figura 5-4 también muestra el símbolo electrónico.
La velocidad de funcionamiento está limitada por los acarreos serie. Se considera que las
compuertas OR EXCLUSIVA tienen un retardo de propagación t = 2 tp, por lo tanto cada etapa
sumadora tarda t = 4 tp = ts en tener listo el resultado de la suma en su salida.
Para que el segundo sumador tenga el resultado correcto en su salida es necesario que el
primer sumador haya producido el acarreo y así aplique el estado de Co
2tp
Cn-1 4tp
S S1
Sumador
Bloque sumador 4 bits
A1 A
total
Cn
B1 B Cin S0-3
Sumador
4
A0-3
4 bits
4
B0-3 Cout
4tp
Cn-1 6tp
S S2
Sumador
A2 A
total
Cn
B2 B
6tp
Cn-1 8tp
S S3
Sumador
A3 A
total
8tp
Cn Cout
B3 B
En la figura 5-4 se grafican los retardos de propagación de cada etapa. En forma general un
sumador de n etapas tendrá el resultado listo y estable en su salida en un tiempo
t = 2 n tp = n ts.
Por supuesto, no en todos los casos se producen acarreos en cada etapa, pudiendo estos no
existir. Como no es posible conocer esto de antemano, se acepta como tiempo de proceso el del
peor de los casos.
Con el mismo criterio construyen sumadores de 8 bits, utilizando dos bloques sumadores de
4 bits, conectando la salida de acarreo C3 del primer sumador en la entrada de acarreo del
segundo sumador, como se muestra en la figura 5-5.
Gn = AnBn
ya que si ambos bits son 1, se genera el acarreo en esta etapa. Por otro lado denominará
propagador del acarreo Pn al término
Pn = An + Bn
si An o Bn es 1, y hubo acarreo en la etapa anterior Cn-1, el producto Cn-1 (An + Bn) es igual a 1. Se
dice entonces que el acarreo Cn-1 se propagó en la etapa n hacia a la siguiente etapa. Con todo,
la expresión del acarreo en la etapa n queda:
Cn = Cn-1 Pn + Gn
Si se aplica esta expresión a cada una de las etapas del sumador paralelo de 4 bits los
acarreos de cada etapa serán:
C0 = Cent P0 + G0
La figura 5-6 se muestra el símbolo del sumador total de 1 bit, al cual se le han adicionado
dos salidas correspondientes a Gn y Pn. Además se muestra la implementación del circuito
generador de acarreo rápido deducido de las ecuaciones anteriores, aplicado a un sumador de 4
bits. Nótese que ahora la señal del acarreo de la etapa anterior no proviene del bloque sumador
total de orden inmediato inferior, sino que es proporcionada por el generador de acarreo de la
etapa correspondiente.
Las compuertas lógicas tienen un retardo de propagación igual a tp. Cada etapa sumadora
tarda t = 1 tp en generar las señales Gn y Pn. El circuito generador de acarreo rápido es una
estructura de dos niveles AND-OR, que tarda a su vez t = 2 tp en generar los acarreos, es decir
luego de t = 3 tp los acarreos de cada etapa estarán aplicados a las entradas correspondientes
de los sumadores totales. Según se vio con anterioridad, un sumador total tarda t = 4 tp en tener
listo el resultado en su salida. Como al mismo tiempo que procesa los bits de A y B se está
generando el acarreo, el sumador demora t = 2 tp más en completar la suma. En resumen, el
resultado estará disponible en la salida del sumador en
t = 5 tp
El tiempo de proceso se redujo con respecto al del sumador con acarreo serie. La diferencia
se hace más notoria cuando el número de etapas aumenta. Por ejemplo para sumadores de 8
bits el retardo en un sumador con acarreo anticipado sigue siendo de 5tp mientras que en uno
con acarreo serie es de 16tp.
Si bien se logró un circuito más rápido, esto fue a costa de una complicación grande en el
circuito.
En la práctica, los generadores de acarreo rápido son circuitos integrados denominados
también LAC, por sus siglas en inglés: look ahead carry. Tienen como terminales de entrada las
líneas Gi , Pi y el acarreo de la etapa anterior Cin, y como salidas, los acarreos Co además de
salidas de grupo G y P que permiten acoplar el CI a otro en forma serial para procesar números de
mayor tamaño. La figura 5-7 presenta el símbolo de un circuito LAC de 4 bits. La figura 6-8
muestra la conexión de 4 sumadores LAC, para formar un sumador de 16 bits.
El CI 74LS83 es un ejemplo de sumador de 4 bits que incorpora un circuito generador de
acarreo rápido, con entrada y salida de acarreo para poder conectarlos en serie y ampliar el
tamaño de los números a sumar.
Cin Cn-1 Sn S0
Sumador
A0 An Pn
1 bit LAC
B0 Bn Gn
Cn-1 Sn S1
Sumador
A1 An Pn
1 bit LAC
B1 Bn Gn
Cn-1 Sn S2
Sumador
A2 An Pn
1 bit LAC
B2 Bn Gn
9 B
10 2 A
13 3
11 1
12 4
5
Cn-1 Sn S3
Sumador
A3 An Pn
1 bit LAC
B3 Bn Gn
9 B
10 2 A
13 3 Cout
11 1
12 4
5
9 B
10
13
11
12
Cn-1 Sn
Sumador
An Pn
1 bit LAC
Bn Gn
Cin
4 A0-3 S0-3 4
Sumador
P
4 bits LAC
4 B0-3 G
Cout
Cin
Cout
Cin
Cout
Cin
Cout
Cin
Cout
Para implementar la operación resta se han desarrollado circuitos específicos. Esto trae
aparejado el inconveniente que es necesario disponer de dos circuitos diferentes para realizar
las operaciones de suma y resta. Sin embargo si se trata a la resta como una suma algebraica, es
posible llevar a cabo ambas operaciones en un mismo circuito.
Como vio en apartados anteriores, es posible transformar a la resta en una suma algebraica y
usar el formato de complemento a 2 para representar a los números negativos. De esta manera
utilizando un circuito sumador y algunas compuertas auxiliares se puede obtener un circuito
restador.
La figura 5-9 muestra un circuito sumador / restador implementado con el CI 74LS83 y cuatro
compuertas auxiliares OR EXCLUSIVA. El terminal de control S/R le indica al dispositivo el tipo de
operación a realizar. Si se trata de una suma, S/R = 0, por lo tanto las compuertas se comportan
como simples buffers no inversores, dejando pasar los bits de B tal como están. Si la operación a
realizar es una resta, S/R = 1 y las compuertas OR EXCLUSIVAS se comportan como inversores,
complementando los bits de B (complemento a 1 de B), además, se aplica un 1 a la entrada de
acarreo del sumador, de esta manera el CI realiza la suma de A más el complemento de B más 1,
que es lo mismo que decir A más el complemento a 2 de B. El resultado de la operación está en
complemento a 2, siendo necesario volver a realizar el complemento a 2 si éste fuera negativo.
Sumador / restador de 4 bits
A0
A1
A2 10 A1
8 A2
S0
3 A3
A3 1 A4 9
6 S1
A 11 2
1 7 B1 15
3 4 B2 S2
2 16 B3 14
B0 B4 C4
13 CO
S3
A
1
3 74LS83
B1 2
A
1
3
B2 2
A
1
3
+v B3 2
Resta S1
Suma
Suma / Resta
0V
Para describir circuitos sumadores en VHDL se puede seguir el mismo criterio jerárquico
usado hasta el momento y crear un componente bloque básico sumador de un bit y luego
mediante el estilo estructural, llamarlo sucesivas veces hasta formar un sumador de n bits.
Luego se mostrará una forma más eficiente, compacta y flexible de crear un sumador de n bits.
La siguiente descripción muestra el componente sumador total de 1 bit.
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY sumador_total_1bit IS
PORT (Cin, A, B: IN STD_LOGIC;
Cout, S: OUT STD_LOGIC);
END sumador_total_1bit;
VHDL ofrece una serie de operadores aritméticos que permiten comprimir el código de la
descripción de circuitos matemáticos. Por ejemplo, si se definen las señales
S <= A + B;
La librería std_logic_1164 no admite que las señales del tipo STD_LOGIC puedan usarse con
operadores matemáticos, por lo que es necesario incluir en toda descripción de circuitos
aritméticos el paquete de librería std_logic_signed. La descripción completa de un sumador de
16 bits queda:
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_signed.all;
ENTITY sumador_16bits IS
PORT (Cin: IN STD_LOGIC;
A: IN STD_LOGIC_VECTOR(15 DOWNTO 0);
B: IN STD_LOGIC VECTOR(15 DOWNTO 0);
S: IN STD_LOGIC VECTOR(15 DOWNTO 0);
Cout, Desborde: OUT STD_LOGIC);
END sumador_16bits;
Primero se define una señal suma_intermedia cuyo ancho de palabra es de 17 bits que
servirá de señal auxiliar dentro de la descripción. El bit 17 es usado para el bit de acarreo de
salida del sumador. Recuérdese que el uso del comando DOWNTO para indicar que el bit 16 será
el de mayor peso o más significativo y el bit 0 será el menos significativo.
El segundo se hace uso del operador de concatenación &. En este ejemplo, se relaciona al
puerto X de 16 bits, un bit adicional con el valor 0, para formar una señal de 17 bits ya que la
sintaxis de VHDL requiere que al menos uno de los operandos de la suma tenga el mismo ancho
de palabra que se definió para la señal o puerto que guardará el resultado, en este caso la señal
suma_intermedia.
Luego, el resultado de la suma se transfiere al puerto S, pero no en su totalidad, sino que se
deja afuera al bit de mayor peso. Esto se lleva a cabo en la línea de código
allí se especifica que solo los 16 bits de menor peso son pasados a S. Con el mismo método, en
la línea siguiente se transfiere el bit de mayor peso al acarreo de salida Cout.
Como no es posible en esta descripción acceder al bit de acarreo Cn-1, se lo construye mediante
la función lógica
Un detalle a notar es que en cada iteración, si la cifra usada del multiplicador es 1, el resultado
parcial es el multiplicando, y si la cifra usada es 0, el resultado parcial es cero. Esta
particularidad y el hecho de que la mayoría de los circuitos digitales aritméticos suman de a dos
números a la vez y no, por ejemplo, los cuatro productos parciales de una sola vez, convierte al
proceso de multiplicación en una secuencia de sumas de ceros o del multiplicando desplazado
hacia la izquierda una posición en cada iteración. Esta idea es usada para construir un circuito
multiplicador secuencial.
Un multiplicador secuencial puede resultar un circuito relativamente sencillo, pero “lento” si
los números a operar son grandes. Se puede deducir un circuito multiplicador combinacional,
mucho más veloz, si se analiza el método usado en el ejemplo anterior. Para ello se considerará
que se multiplican dos números de 3 cifras A2A1A0 y B2B1B0.
P0 = A0B0
P1 = A1B0 + A0B1
P2 = A2B0 + A1B1 + A0B2 + C1
P3 = A2B1 + A1B2 + C2
P4 = A2B2 + C3
P5 = C4
siendo C1, C2, C3 y C4 los acarreos producidos por las sumas de las columnas de orden inmediato
inferior. Los signos + indican en este caso una suma aritmética y no la operación lógica OR. A
partir de estas ecuaciones se puede implementar el circuito correspondiente a cada cifra del
producto final.
Previamente se definirá un bloque multiplicador básico de 1 bit, que luego permitirá armar,
en forma modular, multiplicadores para números de n cifras. Este bloque básico debe incluir una
compuerta AND que realice el producto de los dos bit considerados y sume su producto al de otra
etapa, considerando los acarreos de entrada y salida. Teniendo en cuenta esto, el bloque
multiplicador básico queda:
Los comparadores de magnitud son circuitos digitales capaces de identificar si dos números
de n bits son iguales o cuál de ellos es el mayor. Para su análisis se partirá primero de un
comparador de 1 bit y posteriormente se extenderá el concepto para n bits.
El circuito comparador tendrá 2 entradas por donde se ingresan los números a comparar y
tres salidas: A = B, A < B y B >A. La tabla 5-4 corresponde a la tabla de verdad del circuito:
Tabla 5-4.
En adelante se denominará a las salidas A > B como M, A = B como I y finalmente A < B como
m.
Un comparador de 2 bits puede plantearse construyendo una tabla de verdad de cuatro
entradas y luego minimizar las funciones resultantes. Sin embargo se puede utilizar otro método
permite simplificar el diseño. Comparar un número de n bits es lo mismo que comparar n veces
una cifra. Para un comparador de 2 bits el razonamiento es el siguiente:
M 2 = M 1 + I1 M 0
• A es igual que B si las cifras del mismo orden de cada uno lo son. La ecuación de la
salida A = B es:
I2 = I1 I0
m2 = m 1 + I1 m0
M
M2
A0
COMP. m
1 BIT
B0 I
m2
M
A1
COMP.
m
1 BIT
B1 I2
I
A0
M2
A1 COMP. m2
B0 2 BITS I2
B1
Tabla de verdad
P3,Q3 P2,Q2 P1,Q1 P0,Q0 P>Qin P<Qin P=Qin P>Q P<Q P=Q
P3 > Q3 X X X X X X 1 0 0
P3 < Q3 X X X X X X 0 1 0
P3 = Q3 P2 > Q2 X X X X X 1 0 0
P3 = Q3 P2 < Q2 X X X X X 0 1 0
P3 = Q3 P2 = Q2 P1 > Q1 X X X X 1 0 0
P3 = Q3 P2 = Q2 P1 < Q1 X X X X 0 1 0
P3 = Q3 P2 = Q2 P1 = Q1 P0 > Q0 X X X 1 0 0
P3 = Q3 P2 = Q2 P1 = Q1 P0 < Q0 X X X 0 1 0
P3 = Q3 P2 = Q2 P1 = Q1 P0 = Q0 1 0 0 1 0 0
P3 = Q3 P2 = Q2 P1 = Q1 P0 = Q0 0 1 0 0 1 0
P3 = Q3 P2 = Q2 P1 = Q1 P0 = Q0 X X 1 0 0 1
P3 = Q3 P2 = Q2 P1 = Q1 P0 = Q0 1 1 0 0 0 0
P3 = Q3 P2 = Q2 P1 = Q1 P0 = Q0 0 0 0 1 1 0
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY comparador_nbits IS
GENERIC(N: integer:=4); --N es el parámetro que define el ancho de palabra
PORT (
A: IN STD_LOGIC_VECTOR(N-1 DOWNTO 0);
B: IN STD_LOGIC VECTOR(N-1 DOWNTO 0);
Iguales, A_mayor_B: OUT STD_LOGIC);
END comparador_nbits;
La palabra reservada VARIABLE declara las variables igual y mayor. Su función es auxiliar a la
descripción, sin que se implementen físicamente como conexiones. No deben ser interpretadas
como objetos que guardan datos temporalmente o que guarda el resultado parcial de una
comparación que se realiza en forma secuencial bit a bit.
Un bit de paridad es un bit que se adiciona a una palabra binaria en una transmisión de datos.
La función de este bit es la de detectar un error en la transmisión. El criterio utilizado es el
transmitir siempre una cantidad par o impar (según el criterio del diseñador) de unos o ceros, de
manera que si en el receptor, el dato recibido no tiene la paridad elegida, el dato es erróneo.
La paridad puede ser:
Detector de paridad
A
D3 1
3
D2 2
A
1
A 3
1 2
D1 3
D0 2 Detector paridad impar 1
A
1
3 A
2 A 1
1 3
3 2
A 2
1 Bit paridad impar 1
3
2
La unidad aritmético lógica (ALU: aritmetic logic unit) es un circuito que puede realizar diferentes
operaciones del tipo lógicas o aritméticas entre dos palabras de n bits. Entre las operaciones
lógicas están las funciones AND, OR, NOT, NAND, NOT y OR y NOR EXCLUSIVA, además de otras
como por ejemplo, la operación AND entre A y el complemento de B y viceversa, buffer no
inversor, etc. En cuanto a las operaciones del tipo aritméticas están la suma, resta, el
complemento a 1 o a 2, y otras como por ejemplo la suma de A + A + 1, comparación de dos
números, etc.
Las ALU´s disponen de terminales de control que permiten seleccionar el tipo de operación a
realizar. Poseen además salidas indicadoras de igualdad, mayor que, menor que, etc., y entradas
y salidas de acarreo que hacen posible conectarlas en serie.
Las ALU´s son CI muy importantes dentro de la arquitectura interna de los microprocesadores
y microcontroladores. Allí forman parte de la unidad de proceso, encargada de ejecutar las
instrucciones y procesar datos. La ALU recibe una orden a través de sus entradas de selección de
operación en donde se le “dice” qué hacer y procesa los datos presentes en sus entradas.
El CI 74LS181 es una ALU TTL de 4 bits. Tiene 4 terminales de selección de operación más
uno adicional que permite elegir el tipo de operación, ya sea lógica o aritmética. Si se tiene en
cuenta el estado de la entrada de acarreo, este CI es capaz de realizar 16 operaciones lógicas y
32 aritméticas diferentes. La figura 5-16 muestra la disposición de pines y la tabla de verdad del
74LS181.
Tabla de verdad
0 0 0 0 A A A más 1
0 0 0 1 A+B A+B (A + B) más 1
0 0 1 0 A B A+B (A + B) más 1
74LS181
0 0 1 1 0 -1 0
6
S0 0 1 0 0
5
S1 AB A más (AB) A más (AB) más 1
4
S2
3
S3 P
15 0 1 0 1 B (A+B) más (AB) (A + B) más (AB) más 1
8 17
M G
A=B
14 0 1 1 0 A + B A-B-1 A-B
7 16
Cn Cn+4
2
A0 0 1 1 1 A B (AB) - 1 AB
1 9
B0 F0
23
A1 F1
10 1 0 0 0 A + B A más (AB) A más (AB) más 1
22 11
B1 F2
21
A2 F3
13 1 0 0 1 A + B A más B A más B más 1
20
B2
19
A3 1 0 1 0 B (A+B) más (AB) (A+B) más (AB)
18
B3
1 0 1 1 AB (AB) - 1 (A + B) más (AB) más 1
1 1 0 0 1 A más A AB
1 1 0 1 A + B (A+B) más A (A + B) más A más 1
1 1 1 0 A + B (A+B) más A (A + B) más A más 1
1 1 1 1 A A-1 A
CAPÍTULO 6
CIRCUITOS RETENEDORES Y FLIP-FLOPS
6-1-2 Component
El comando COMPONENT permite declarar un componente y poder usarlo dentro de una
descripción de orden jerárquico mayor. La declaración COMPONENT se ubica entre la palabra
reservada ARCHITECTURE y BEGIN. Su sintaxis es
COMPONENT nombre_de_componente IS
PORT( nombre_puerto1: tipo_de_puerto tipo_de_señal;
nombre_puerto2: tipo_de_puerto tipo_de_señal;
…);
END COMPONENT;
Como se observa, dentro de COMPONENT de debe declarar los puertos que posee el bloque a
llamar, su tipo y ancho de palabra, tal como se hace dentro del módulo ENTITY. Una vez
declarado, la sintaxis para la instanciación dentro de la descripción principal es:
F1 (A, B, C) = Σ (1, 2, 4)
LIBRARY ieee;
USE ieee.std_logic_1164.all;
LIBRARY ieee;
USE ieee.std_logic_1164.all;
LIBRARY ieee;
USE ieee.std_logic_1164.all;
LIBRARY ieee;
USE ieee.std_logic_1164.all;
LIBRARY ieee;
USE ieee.std_logic_1164.all;
El ejemplo anterior es solo una muestra de como se realiza una descripción en estilo
estructural. Dado lo sencillo del circuito a implementar, hubiera sido mucho más fácil describirlo
como una función lógica o en estilo flujo de datos.
6-1-3 Package
El comando PACKAGE se usa para crear componentes a partir de descripciones existentes
con anterioridad. Dentro de una estructura PACKAGE se pueden crear uno o varios componentes.
Esto brinda una alternativa al uso de COMPONENT, en las descripciones estilo estructural. En
este caso no es necesario declarar los componentes en la descripción principal.
Cuando se define un componente usando PACKAGE, la sintaxis de VHDL exige que este
también tenga sus propias cláusulas LIBRARY y USE. La sintaxis de PACKAGE es:
LIBRARY ieee;
USE ieee.std_logic_1164.all;
PACKAGE nombre_de_encapsulado IS
(Declaraciones de componentes, funciones, procesos, tipos de datos ,etc.);
END nombre_de_encapsulado;
LIBRARY ieee;
USE ieee.std_logic_1164.all;
PACKAGE bloques_simples IS
COMPONENT minitermino_1 IS - - encapsulado del minitérmino 1
PORT (A, B, C: IN STD_LOGIC;
S: OUT STD_LOGIC);
END COMPONENT;
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE work.bloques_simples.all; - - Declaración de uso de la librería bloques_simples
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY sumador_total_1bit IS
PORT (Cin, A, B: IN STD_LOGIC;
Cout, S: OUT STD_LOGIC);
END sumador_total_1bit;
LIBRARY ieee;
USE ieee.std_logic_1164.all;
PACKAGE encapsulado_sumador_total_1bit IS
COMPONENT sumador_total_1bit
PORT (Cin, A, B: IN STD_LOGIC;
Cout, S: OUT STD_LOGIC);
END encapsulado_sumador_total_1bit;
A continuación se presenta el código para un sumador paralelo de 4 bits con acarreo serie en el
estilo estructural usando el bloque definido en la descripción anterior:
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE work.encapsulado_sumador_total_1bit.all;- - incluye la librería donde está el sumador
ENTITY sumador_total_4bits IS
PORT (Cin: IN STD_LOGIC;
A0, A1, A2, A3: IN STD_LOGIC;
B0, B1, B2, B3: IN STD_LOGIC;
Cout : OUT STD_LOGIC;
S0, S1, S2, S3: OUT STD_LOGIC);
END sumador_total_4bits;
Los cerrojos, también conocidos como retenedores o biestables, son elementos lógicos más
simples capaces de almacenar un dato. El nombre de biestable de debe a que estos dispositivos
reaccionan ante un estímulo en su entrada y fijan un nivel lógico en su salida. Si el estímulo es
retirado, la salida permanece inalterable en el tiempo. Aplicando un estímulo similar en otra
entrada, la salida cambia al estado complementario. Los biestables no son celdas de memoria,
como se verá a continuación, sino que son circuitos capaces de memorizar que hubo un estímulo
en su entrada.
6-3-1 Cerrojo SR
Por otro lado, si la entrada R es la que se activa (reset: restablecer), será la salida Q la que
pasa a
Un cerrojo SR puede construirse con compuertas NOR. La figura 6-1 muestra su esquema
eléctrico, símbolo y tabla de verdad.
Circuito eléctrico Tabla de verdad
Reset
R S R Qt Qt
A Q
0 0 Qt-1 Qt-1
0 1 0 1
1 0 1 0
B Q 1 1 Estado prohibido
S
Set
S Q
R Q
Símbolo eléctrico
A continuación se verá como funciona el cerrojo SR NOR analizando cada una de las posibles
combinaciones de las entradas.
Este tipo de circuitos son también llamados biestables, porque sus salidas pueden adoptar
uno de dos estados posibles y permanecer así invariablemente en el tiempo, a menos que se
produzca un cambio en las entradas que obligue a las mismas a tomar el estado contrario, en el
que permanecerán hasta el próximo cambio.
El cerrojo SR NOR tiene tanto sus entradas como sus salidas activas altas.
Un cerrojo SR puede implementarse también con compuertas NAND. La figura 6-2 muestra su
circuito eléctrico, símbolo y tabla de verdad.
Set
S S R Qt Qt
Q
0 0 Estado prohibido
0 1 1 0
1 0 0 1
Q
1 1 Qt-1 Qt-1
R
Reset
S Q
R Q
Símbolo eléctrico
En un sistema digital complejo se debe tener mucho cuidado con el control del flujo de datos,
para asegurar que la información apropiada esté disponible para cada sección cuando ésta la
necesite. La manera más fácil de controlar el movimiento de datos en una red es sincronizar el
funcionamiento del sistema usando una referencia bien definida, como la señal de un reloj.
El reloj es una señal de control, provista generalmente por un circuito oscilador astable, que
produce de manera periódica transiciones de 0 a 1 y de 1 a 0, llamadas ciclos. Usualmente se
denomina al reloj con el símbolo CK o CLK (por clock, reloj en ingles). La característica más
importante del reloj es que los ciclos se repiten cada T segundos, tiempo que se conoce como
periodo. Como se vio con anterioridad, la frecuencia de un oscilador es
V
1
t [seg]
0
Periodo T
Señal de reloj teórica
V
1
t [seg]
0
Periodo T
La figura 6-4 muestra un cerrojo SR NOR sincronizado por una señal de reloj:
La diferencia entre este cerrojo y el estudiado con anterioridad, es que ahora las entradas S y
R son introducidas a dos compuertas AND, controladas por una señal de reloj. Así, solamente
cuando el “clock” pase a estado alto, los estados presentes en S y R pasarán a las entradas S´ y
R´ del cerrojo, reflejándose luego en las salidas Q y Q. Todo el tiempo en el que el clock esté en
estado bajo cualquier cambio en las entradas S y R será ignorado.
Haciendo una modificación al circuito del cerrojo SR sincronizado se obtiene un nuevo tipo de
cerrojo denominado D, con una sola entrada de igual nombre y dos salidas Q y Qnegado. Su
nombre proviene de la palabra inglesa “date: dato”, y se debe a que este dispositivo tiene la
propiedad de guardar el dato presente en su entrada en el semiciclo activo del reloj. La figura 6-5
muestra su circuito interno, símbolo y tabla de verdad.
La sincronización de los cerrojos mediante la señal de reloj, permite la lectura de las entradas
durante todo el tiempo que dure el ciclo activo del clock. Esto trae aparejado algunos
inconvenientes como el que a continuación se detalla. Supóngase ejemplo que se tiene el
circuito de la figura 6-6.
S S Q1 S Q Q2
CK CK CK
R R Q2 R Q Q2
V t0 t1
1
CK t [seg]
0
tp1
Q1 t [seg]
0
tp2
Q2 t [seg]
0
Situación real Situación deseada
6-4 Flip-flops
Q
R
Reset
CK
t [seg]
Los niveles de tensión de habilitación de las compuertas de entrada del maestro y del esclavo
deben ajustarse de manera que en la transición de 0 a 1 del clock, el esclavo se inhiba antes que
el maestro se habilite, para no transferir a la salida ningún dato presente en el entrada
directamente. Inversamente, cuando el esclavo se habilita, previamente debe estar inhibido el
maestro. Los flip-flops de esta característica se dice que son sensibles a los niveles del reloj, ya
que durante todo el semiciclo activo del mismo, reconoce y procesa los datos presentes en las
entradas. Esta condición acarrea un defecto de funcionamiento denominado “propiedad de
captar unos” que se analizará más detalladamente con posterioridad.
En ciertas aplicaciones puede ser necesario que las salidas del flip-flop adopten un estado
determinado, sin depender del reloj. Estas situaciones se dan, por ejemplo en la inicialización de
circuitos o requerimientos del sistema en el instante del encendido. Por estas razones es que se
diseñaron flip-flops con entradas directas o asincrónicas, llamadas así por su independencia del
clock. La figura 6-8 corresponde a un flip-flop con entradas directas Rd y Sd.
Q
R
Reset
CK Rd
Entrada directa RESET
VCC
C VCC
Sd Sd
S Q S Q
CK CK
R Q R Q
VCC
Rd Rd
VCC
R
Cuando las entradas directas están inactivas, el flip-flops (FF) responde a las entradas
sincrónicas S y R, siendo consideradas durante el semiciclo activo del reloj.
Si una de las entradas directas Sd o Rd son activadas, el FF responde como un cerrojo
asincrónico. Igualmente si ambas entradas asincrónicas están activas se coloca al FF en el
estado prohibido antes estudiado.
6-4-3 Flip-flop D
Un FF D tiene las mismas características que un cerrojo D, con la diferencia que el primero es
sensible a los flancos del clock, es decir, que el estado almacenado en el cerrojo maestro pasa a
la salida en la transición del nivel alto al bajo (1 al 0) del reloj.
CK J K Qt Qt
A
J S Q Q 0 0 Qt-1 Qt-1
CK CK 0 1 0 1
R Q Q 1 0 1 0
K
B 1 1 Qt-1 Qt-1
J Q
CK
K Q
Símbolo eléctrico
Del análisis del funcionamiento del FF J K para las cuatro combinaciones posibles de los
terminales de entrada se deduce:
Como conclusión, cuando ambas entradas están activas, el FF J K invierte el estado de sus
salidas con cada ciclo de reloj, eliminando así el inconveniente de los FF S R.
Este FF es una variante del FF J K, en el que ambas entradas se han unido, conformando un
único terminal de entrada denominado T. Cuando T = 0, (internamente J = K = 0), el FF se halla
en el estado de retención, conservando el estado lógico previo a la llegada del reloj. Si T = 1, las
entradas J K estarán también en 1 y el FF invertirá el estado de sus salidas con cada pulso de
reloj.
La figura 6-10 presenta el esquema interno de un FF T, su tabla de verdad y símbolo.
CK T Qt Qt
T J Q Q
CK
0 Qt-1 Qt-1
CK
K Q Q 1 Qt-1 Qt-1
T Q
CK
Q
Símbolo eléctrico
S Q
CK
R Q
Ciclo 1 Ciclo 2
1
CK t [seg]
S t [seg]
0
tp
Q t [seg]
Con la llegada del flanco descendente del primer ciclo del clock, el FF procesa el dato
presente en la entrada, es decir S = 0, por lo tanto Q = 0. En el segundo flanco descendente la
salida Q debería mantenerse en igual estado, ya que en el instante inmediatamente anterior a su
llegada, la entrada S se hallaba en estado bajo; sin embargo Q = 1. Esto se debe a que durante
todo el tiempo en el que el reloj se encuentra en el estado activo (CK = 1), el cerrojo maestro del
FF acepta todos los cambios que se producen en las entradas. En este ejemplo, durante el
semiciclo alto del segundo pulso de reloj, se produjo un impuso en la entrada S que colocó al
cerrojo maestro en “set”, dejándolo en este estado aún después de que S pasó a 0 y se mantuvo
así hasta el instante del flanco descendente del reloj.
Esta característica se denomina “propiedad de captar unos de un FF”. Para subsanar este
defecto de funcionamiento, se diseñaron FF activados estrictamente por flancos, en los que la
salida del mismo es la respuesta al estado lógico de las entradas en el instante previo al flanco
de disparo del reloj. Debido a que el circuito eléctrico resultante es de cierta complejidad, no se
analizará su funcionamiento. La figura 6-12 muestra el símbolo de un FF activado por flanco
ascendente y uno por flanco descendente.
J Q J Q
CK CK
K Q K Q
Cada tipo de flip-flop tiene una tabla de verdad característica. Además, del análisis del circuito
interno de cada uno se puede elaborar también una tabla de excitación y una ecuación
algebraica de sus salidas típicas para cada modelo de FF.
La tabla de excitación de un FF refleja los valores lógicos que hay que aplicar a las entradas
del mismo para obtener en su salida un determinado estado en el siguiente ciclo de reloj. Este
tipo de tablas es muy usada para el diseño de sistemas secuenciales, tema que se estudiará con
posterioridad. Las figuras 6-13, 6-14, 6-15 y 6-16 muestran los esquemas internos simplificados
de cada FF, junto con su tabla de verdad, tabla de excitación, ecuación algebraica de su salida y
diagrama de estado.
Tabla de verdad
Qt S R Qt+1
RS
0 0 0 Qt(0) 00 01 11 10
Qt
0 0 1 0
0 1 X
0 1 0 1 0 1 3 2
S Q
CK
0 1 1 X 1 1 1 X
R Q 1 0 0 Qt(1) 4 5 7 6
1 0 1 0
1 1 0 1
1 1 1 X
Ecuación característica: Qt+1 = S + R Qt
Tabla de excitación
SR=10
Qt Qt+1 S R
SR=0X SR=X0
0 0 0 X
0 1 1 0
Q=0 Q=1
1 0 0 1
1 1 X 0
SR=01
Diagrama de estados
Tabla de verdad
D Q
D Qt+1
CK Q 0 0 Ecuación característica: Qt+1 = D
1 1
Tabla de excitación
D=1
Qt Qt+1 D
D=0 D=1
0 0 0
0 1 1
1 0 0
Q=0 Q=1
1 1 1
D=0
Diagrama de estados
Tabla de verdad
Qt J K Qt+1
KJ
0 0 0 Qt(0) 00 01 11 10
Qt
0 0 1 0
0
1 1
J Q
0 1 0 1 0 1 3 2
CK
0 1 1 Qt(1)
K Q
1 1 1
1 0 0 Qt(1) 4 5 7 6
1 0 1 0
1 1 0 1
1 1 1 Qt(0)
Ecuación característica: Qt+1 = Qt J + Qt K
Tabla de excitación
JK=1X
Qt Qt+1 J K
JK=0X JK=X0
0 0 0 X
0 1 1 X
1 0 X 1
Q=0 Q=1
1 1 X 0
JK=X1
Diagrama de estados
Tabla de verdad
Qt T Qt+1 T
0 1
0 0 0 Qt
T Q
0 1 1 0 1
CK 0 1
Q
1 0 1
1
1 1 0 1
2 3
Tabla de excitación
T=1
Qt Qt+1 T
T=0 T= 0
0 0 0
0 1 1
1 0 1
Q=0 Q=1
1 1 0
T= 1
Diagrama de estados
El siguiente código corresponde al de un biestable tipo D o latch activado por nivel de reloj.
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY cerrojo_D IS
PORT (Reloj, Dato, Reset: IN STD_LOGIC;
Salida_Q: OUT STD_LOGIC);
END cerrojo_D;
Se verá a continuación una descripción de un flip-flop D y uno JK sensibles a flancos, con reset
asincrónico, y para ambos casos se creará el encapsulado de los componentes resultantes.
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY ff_D IS
PORT (Reloj, Reset: IN STD_LOGIC;
Salida_Q: OUT STD_LOGIC);
END ff_D;
LIBRARY ieee;
USE ieee.std_logic_1164.all;
PACKAGE encapsulado_ff_D IS
COMPONENT ff_D
PORT (Reloj, Reset: IN STD_LOGIC;
Salida_Q: OUT STD_LOGIC);
END encapsulado_ff_D;
ENTITY ff_JK IS
PORT (Reloj, Entrada_J, Entrada_K, Reset: IN STD_LOGIC;
Salida_Q: BUFFER STD_LOGIC);
END ff_JK;
PACKAGE encapsulado_ff_JK IS
COMPONENT ff_JK
PORT (Reloj, Entrada_J, Entrada_K, Reset: IN STD_LOGIC;
Salida_Q: BUFFER STD_LOGIC);
END encapsulado_ff_JK;
CAPÍTULO 7
CONTADORES Y REGISTROS DE DESPLAZAMIENTO. SISTEMAS
SECUENCIALES
7-1 Contadores
7-1-1 Introducción
Un contador es un sistema electrónico digital que genera una secuencia ordenada que se
repite en el tiempo. Dicha secuencia podrá estar codificada en cualquier código binario.
Básicamente este dispositivo cuenta los ciclos de reloj que llegaron a él. Internamente están
formados por n flip-flops conectados en cadena, uno a continuación del otro. Como la salida de
cada FF tiene dos estados posibles, un contador formado por n FF tiene 2n estados diferentes o
combinaciones de salida.
Módulo de un contador es el número de estados que atraviesa antes de volver al estado
inicial. Un contador de n FF puede tener como máximo un módulo igual a 2n, pudiendo ser
inferior a este número.
Los contadores digitales pueden clasificarse teóricamente de varias formas aunque luego en
la práctica la variedad se reduce drásticamente:
• Según la secuencia que sigan sus salidas, los contadores pueden ser, binarios (Ej.
módulo 8, 16, 32, etc.), BCD (sus salidas cuentan desde 0 hasta 9 en binario), decimales
(con cada pulso de reloj se activa una salida cuyo orden es superior en una unidad a la
anteriormente activa), etc.
• Según su constitución interna los contadores pueden ser asincrónicos (la señal de reloj
está aplicada solamente al primero de los FF) o sincrónicos (la señal de reloj es
compartida por todos los FF que componen el contador).
J Q J Q J Q
Reloj CK CK CK
K Q K Q K Q
Q0 Q1 Q2
Como se observa en la figura 7-1, el contador está construido con FF del tipo J-K conectados
en configuración basculante (J = K = 1), así , con cada ciclo de reloj las salidas invierten sus
estados.
Al estar formado por tres FF, el contador tiene 8 estados posibles. Además su módulo es 8,
queriendo decir que con la llegada de los pulsos de reloj, el contador irá pasando por ocho
estados diferentes antes de caer en el estado inicial y repetir la secuencia.
También se puede observar la característica esencial que le da el nombre: el clock está
conectado a la entrada de reloj del FF0, su salida Q0, constituye la señal de reloj del FF1, por
último, Q1 es la señal de clock del FF2. La figura 7-2 muestra un diagrama de tiempos de la
evolución de las salidas del contador con cada pulso de reloj.
+V +V +V
Q0 Q1 Q2
1 2 3 4 5 6 7 8 9
1
Reloj t [seg]
0
1
Q0 t [seg]
0
1
t [seg]
Q1
0
1
t [seg]
Q2
0
Con cada flanco descendente del reloj la salida Q0 cambia de estado. Igualmente, con cada
transición de 1 a 0 de Q0, el estado de Q1 se invierte, y en forma general, con cada paso de 1 a 0
de Qn-1, la salida Qn invertirá su estado.
Este contador también recibe el nombre de asíncrono serie. Si se observa en la figura 7-2,
cuando se produce el flanco descendente del octavo ciclo de reloj, éste hace que Q0 pase de 1 a
0 y provoca a su vez que sucesivamente las salidas restantes Q1 y Q2 cambien de 1 a 0.
Entonces, se dice que el flanco descendente del reloj se propagó en serie por todos los FF´s.
Se ve también que luego de cada flanco descendente, la combinación lógica formada por Q 2
Q1 Q0 , en ese orden, corresponde a un número binario entre 0 y 7. La combinación de salida
refleja en todo momento la cantidad de ciclos de reloj que llegaron al contador. Con el octavo
pulso de reloj, el contador se “resetea”, comenzando la cuenta nuevamente desde 0. Si por
alguna razón, se detuviera el reloj, el contador permanecería indefinidamente en el último
estado.
En los diagramas de tiempos mostrados en la figura 7-2, se ha considerado que los FF son
ideales y que responden inmediatamente a cada flanco descendente, es decir que su retardo de
propagación tp = 0. En realidad existen los retardos de propagación en cada etapa y provocan
defectos de funcionamientos que son típicos de estos contadores, tema que se estudiará más
adelante.
Para ciertas aplicaciones específicas suele ser más práctico que un contador realice una
cuenta en un código diferente del binario natural. Por ejemplo, que con el primer pulso de reloj,
se active solo la salida de menor orden, con el segundo pulso, la que le sigue, etc. Un contador
con estas características puede implementarse conectando un decodificador a las salidas del
1 15
A Y0 S0
2 14
B Y1 S1
3 13
C Y2 S2
Y3 12 S3
6 11
+V 4
G1 Y4
10
S4
G2A Y5 S5
5 9
G2B Y6 S6
Y7 7 S7
0V
+V +V +V
J Q J Q J Q
Reloj CK
Q0 CK
Q1 CK
Q2
K Q K Q K Q
Supóngase que inicialmente las salidas Q2 Q1 Q0 = 0 0 0. Con la llegada del primer flanco
ascendente, Q0 pasa de 0 a 1, esta conmutación, provoca que a su vez Q1 pase de 0 a 1 y que a
consecuencia de ello Q2 también pase de 0 a 1. Como se ve, en un solo ciclo de reloj, el contador
pasó de 000 a 111. Con el segundo flanco ascendente, Q0 pasa de 1 a 0, sin provocar otro
cambio, ya que los FF son sensibles a flancos ascendentes. La cuenta queda en 110 (6).
Los contadores estudiados hasta el momento tienen un módulo igual a 2 n. Para obtener
contadores no binarios, por ejemplo de módulo 10, 3, 5, etc., se parte de un contador de módulo
2n, tal que el módulo deseado k sea menor o igual a 2n. Luego mediante el uso de compuertas y
de las entradas asincrónicas de los FF (terminales Rd y Sd) se reinicia el contador cuando éste
alcanza la cuenta k. La figura 6 muestra un contador BCD (módulo 10).
El contador cuenta normalmente hasta 9 y al llegar el décimo pulso de reloj, durante un corto
lapso de tiempo, las salidas Q3 Q2 Q1 Q0 = 1 0 1 0, haciendo que la salida de la compuerta NAND
vaya al estado 0 y obligue al contador a reiniciarse por estar conectado a todos las entradas
directas de Reset. Nótese que el para que el contador pueda reiniciarse, debe alcanzar
brevemente una cuenta errónea, en este caso la combinación 1010. Normalmente este error no
ocasiona mayores problemas de funcionamiento para la mayoría de las aplicaciones, pero es un
detalle que debe ser considerado.
Q0 Q1 Q2 Q3
+V +V +V +V +V +V +V +V
Sd Sd Sd Sd
FF0 FF1 FF2 FF3
J Q J Q J Q J Q
Reloj CK CK CK CK
K Q K Q K Q K Q
Rd Rd Rd Rd
Reset
1 2 3 4 5 6 7 8 9 10 11 12
1
Reloj t [seg]
0
1
Q0 t [seg]
0
1
B Q1 t [seg]
0
1
Q2 t [seg]
0
1
Q3 t [seg]
0
1
Reset t [seg]
0
Q3Q2Q1Q0 = 0001 Q3Q2Q1Q0 = 1001
1 15
A Y0 0
2 B Y1 14 1
3 13
C Y2 2
12
Y3 3
6 11
+V 4
G1
G2A
Y4
Y5 10
4
5
5 9
G2B Y6 6
7
Y7 7
0V
+V +V +V
FF0 FF1 FF2
J Q J Q J Q
Q0 Q1 Q2
Reloj CK CK CK
K Q K Q K Q
1 2 3 4 5 6 7 8 9 10 11 12
1
Reloj t [seg]
0 tp
1
Q0 t [seg]
0 2 tp
1
Q1 t [seg]
0
1 3 tp
Q2 t [seg]
0
1
S0 ideal t [seg]
0
1
S0 real t [seg]
0 A B
gliche
Q2Q1Q0 = 000
T = n tp + tm
Hoy en día, la tendencia es hacia abandono de los contadores asincrónicos, en parte por las
desventajas mencionadas en los párrafos anteriores y por el funcionamiento mismo, ya que los
diseños tienden cada vez más a ser sincrónicos puros, sin más señales asincrónicas que las
impuestas por el sistema.
Los contadores sincrónicos se caracterizan porque todos los FF que lo componen comparten
la señal de reloj, eliminando de esta manera el retardo de propagación en serie a través de todas
las etapas. En un contador sincrónico todos los FF evolucionan a la vez con cada ciclo reloj.
Para la construcción de un contador sincrónico se parte de la tabla de verdad de las salidas.
Supóngase que se requiere un contador de módulo 16, las salidas seguirán la secuencia
indicada en la tabla 7-1:
Ciclos de Q3 Q2 Q1 Q0
reloj
0 0 0 0 0
1 0 0 0 1
2 0 0 1 0
3 0 0 1 1
4 0 1 0 0
5 0 1 0 1
6 0 1 1 0
7 0 1 1 1
8 1 0 0 0
9 1 0 0 1
10 1 0 1 0
11 1 0 1 1
12 1 1 0 0
13 1 1 0 1
14 1 1 1 0
15 1 1 1 1
16 0 0 0 0
Tabla 7-1
+V
Q0 Q1 Q2 Q3
La desventaja constructiva de este contador es que a medida que crece el número de etapas, las
compuertas AND deben tener más entradas, complicando el conexionado. Además, las salidas de
los FF están más cargadas aumentando el consumo y disminuyendo la frecuencia de
funcionamiento.
Para el caso de los contadores sincrónicos, a diferencia de los asincrónicos, la elección del
flanco activo del reloj no permite hacer que la cuenta sea ascendente o descendente.
Es posible construir contadores sincrónicos cuyo módulo sea diferente a 2n, como por ejemplo
contadores BCD, módulo 6, módulo 9, etc.; inclusive que la cuenta no siga un orden lógico, con el
único requisito que la secuencia se repita siempre cada k ciclos de reloj (contador módulo k). El
método que se emplea para el diseño de estos contadores es el utilizado para la construcción de
sistemas digitales sincrónicos. La figura 7-11 corresponde a un contador sincrónico BCD, en el
anexo de sistemas secuenciales se detallan los pasos a seguir para obtener este circuito.
+V
Q0 Q1 Q3
J Q J Q J Q J Q
Reloj CK CK CK CK
K Q K Q K Q K Q
• 74LS93: contador TTL único módulo 16, o dos contadores uno módulo 2 y el otro módulo
8, disparado por flanco descendente, con terminal de borrado y conteo ascendente.
• 74LS393: contador doble de módulo 16 o simple de módulo 256. Cuenta en forma
ascendente e incorpora terminal de borrado.
• CD4020B: contador CMOS de módulo 214, disparado por flanco descendente con
terminal de borrado. No están disponibles las salidas Q2 y Q3.
• CD4060B: contador CMOS de módulo 214, disparado por flanco descendente con
terminal de borrado. No están disponibles las salidas Q1 Q2 Q3 y Q11. Además posee un
oscilador interno.
• 74LS161: contador TTL módulo 16, sensible a flanco de subida, cuenta ascendente,
terminales de habilitación, precarga y borrado.
• 74LS169: contador TTL módulo 16, sensible a flanco de subida, cuenta ascendente y
descendente, terminales de habilitación, precarga y borrado.
• CD4029: contador CMOS, sensible a flanco de subida, cuenta ascendente y descendente,
terminales de habilitación y precarga. Este contador puede realizar un conteo en BCD o
en binario módulo 16 según el estado de la línea de control B/D.
Inicio +V +V +V
Sd Sd Sd Sd
FF0 FF1 FF2 FF3
D Q D Q D Q D Q
Reloj CK
Q
CK
Q
CK
Q
CK
Q
Rd Rd Rd Rd
+V
1 2 3 4 5 6 7 8 9 10 11 12
1
Reloj t [seg]
0
1
Q0 t [seg]
0
1
Q1 t [seg]
0
1
Q2 t [seg]
0
1
Q3 t [seg]
+V +V +V +V
Sd Sd Sd Sd
FF0 FF1 FF2 FF3
D Q D Q D Q D Q
Reloj CK Q CK Q CK Q CK Q
Rd Rd Rd Rd
Inicio
1 2 3 4 5 6 7 8 9 10 11 12
1
Reloj t [seg]
0
1
Q0 t [seg]
0
1
Q1 t [seg]
0
1
Q2 t [seg]
0
1
Q3 t [seg]
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_unsigned.all;
USE ieee.std_logic_arith.all;
USE ieee.std_logic_unsigned.all;
ENTITY contador_modulo_16 IS
PORT (Reloj, Sentido, Reset: IN STD_LOGIC;
Precarga: IN STD_LOGIC_VECTOR(3 DOWNTO 0);
Salida: OUT STD_LOGIC_VECTOR(3 DOWNTO 0));
END contador_modulo_16;
CASE Sentido IS
WHEN ’1’ => -- Cuenta ascendente
IF (cuenta=”1111”) THEN cuenta <= “0000”;
ELSE cuenta<=cuenta +1;
END IF;
WHEN OTHERS=> -- Cuenta descendente
IF (cuenta=”0000”) THEN cuenta <= “1111”;
ELSE cuenta<=cuenta -1;
END IF;
END CASE;
END IF;
Salida<=cuenta;
END PROCESS;
END algoritmico;
7-2-1 Introducción
El circuito básico de un registro con entradas y salidas paralelas se muestra en la figura 7-14.
El registro está formado por 4 FF que comparten la señal de reloj, comúnmente denominada
“Enable, o Load”. En el flanco activo del mismo, los datos presentes en las entradas D están
disponibles en las salidas Q, permaneciendo así hasta un nuevo pulso de reloj que renueve los
datos. Este registro recibe el nombre de “latch” y es capaz de almacenar una palabra de 4 bits.
También presenta un terminal de borrado o “Clear” común a todos las entradas asincrónicas Rd
de los FF que permite cargar con 0 al registro.
La función de este tipo de registros es el de almacenar un dato. Es común encontrarlos dentro
de la estructura interna de los microprocesadores como memorias temporales o “banco de
registros”, usados para los procesos de cálculos.
El CI 74LS373 es un ejemplo de un registro de almacenamiento paralelo/paralelo de 8 bits
con terminal de habilitación de salidas.
Q0 Q1 Q2 Q3
+V +V +V +V
D Q D Q D Q D Q
Reloj CK Q CK Q CK Q CK Q
Rd Rd Rd Rd
Borrado
D0 D1 D2 D3
Q0 Q1 Q2 Q3
Reloj
Borrado
D0 D1 D2 D3
Símbolo eléctrico
La figura 7-15 presenta un registro de desplazamiento típico, de cuatro etapas. La entrada del
registro es el terminal D del FF0 y la salida el terminal Q del FF3. El terminal de borrado está
conectado a las entradas directas Rd permitiendo el reseteado del registro independientemente
del reloj.
Supóngase que inicialmente el registro está borrado, es decir Q2Q2Q1Q0 = 0000 y que el dato
que se quiere ingresar es 1001. Cada bit del dato debe estar presente en la entrada del registro
previo al flanco activo del reloj. Con el primer flanco de reloj, el primer bit (1) del dato que
previamente estaba en D0, pasó a Q0, el dato (0) en Q0 y D1 pasó a Q1, y así sucesivamente. El
dato presente en Q3 se pierde.
Cuando llega el segundo pulso de reloj, el segundo bit (0) del dato a guardar presente en D0
pasa a Q0, el 1 que en el ciclo anterior estaba guardado en Q0, se “desplazó” a Q1, etc. El estado
en Q3 se pierde.
En el diagrama de tiempo de la figura 7-15b visualiza la evolución del dato dentro del registro
con cada pulso de reloj. Del análisis de la gráfica se observa que:
• Luego de cuatro ciclos de reloj, el dato que fue ingresado en serie, bit a bit por D 0, ha
quedado guardado dentro del registro.
• El dato se desplazó hacia la derecha una etapa por cada pulso de reloj.
• El dato se ingresa en serie por D0 y se lee también en serie por Q3.
• El primer dato en entrar es el primero en leerse por el terminal de salida Q3, y está
disponible luego de cuatro pulsos de reloj. En forma general, para un registro de n
etapas, el dato queda cargado luego de n ciclos de reloj.
+V +V +V +V
Sd
FF0 Sd
FF1 Sd
FF2 Sd
FF3
Dato D Q D Q D Q D Q Salida
Q0 Q1 Q2 Q3
Reloj CK Q CK Q CK Q CK Q
Rd Rd Rd Rd
Borrado
Q0 Q1 Q2 Q3
Dato = 1001 0 0 0 0 Estado inicial
Q0 Q1 Q2 Q3 Q0 Q1 Q2 Q3 Q0 Q1 Q2 Q3 Q0 Q1 Q2 Q3
1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 1
CK1 CK2 CK3 CK4
1 2 3 4 5 6
1
Reloj t [seg]
0
1
Dato t [seg]
0
1
Q0 t [seg]
0
1
t [seg]
Q1
0
1
t [seg]
Q2
0
1
t [seg]
Q3
0
Q3Q2Q1Q0 = 1001
Las aplicaciones prácticas de los registros serie/serie son variadas, como memorias
secuenciales o serie, producir retardos en el flujo de información, circuitos de apoyo a los
circuitos ariméticos.
En este caso, el circuito es similar las registro SISO, solamente que ahora están disponibles
los terminales de salida de las etapas intermedias. Nuevamente, el dato es ingresado bit a bit
con cada flanco activo del reloj por el terminal de entrada D 0, y luego de n ciclos está disponible
en las salidas Q3-Q0. La figura 7-16 muestra su esquema eléctrico:
El uso práctico más directo de este tipo de registro es la conversión del formato de
transmisión de serie a paralelo o la generación de patrones de bits.
Los datos son ingresados en forma paralela y grabados en cada etapa a través de un terminal
de carga. Una vez transferidos los datos, con cada pulso de reloj, los bits pueden ser leídos por la
salda serie del registro. La aplicación del registro PISO es, entre otras, la conversión del formato
de información de paralelo a serie. La figura 7-17 muestra el esquema básico de este registro.
Este tipo de registro de desplazamiento reúne las características de los cuatro registros
estudiados con anterioridad en un solo circuito: tiene entradas y salidas serie y paralelo,
desplazamiento bidireccional, terminales de borrado e inhibición del reloj, condición que le
permite detener el desplazamiento sin cortar la señal de reloj. Los circuitos integrados CD40194
y su versión TTL 74LS194 son un ejemplo de registros universales.
DECODIFICADOR 2 A 4
S0
SO1 A S1
SO0 B S2
S3
Reloj
Bus de datos
x4 x4 x4
Q0 Q1 Q2 Q3 Q0 Q1 Q2 Q3 Q0 Q1 Q2 Q3
D0 D1 D2 D3 D0 D1 D2 D3 D0 D1 D2 D3
x4 x4 x4
S0 S1 S2 S3
A B
DECODIFICADOR 2 A 4
SD1 SD0
• 74LS373: latch de ocho bits con terminal de inhibición de entrada, salida tri-state. La
carga es sensible al nivel alto.
• 74LS374: registro PIPO de ocho bits con salidas tri-state, reloj activo en el flanco
ascendente.
• 74LS91: registro SISO de ocho bits sensible a los flancos ascendentes.
• 74LS164: registro SISO y SIPO de ocho bits con terminal de borrado. Reloj activo en el
flanco ascendente.
• 74LS165: registro PISO de ocho bits, sensible al flanco ascendente. Posee terminales de
inhibición del reloj y carga/desplazamiento.
• CD40194: registro universal de cuatro bits, con terminal de borrado. Sensible al flanco
ascendente.
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY registro_desplazamiento_4bits IS
PORT (Reloj, Dato_serie, Graba: IN STD_LOGIC;
Dato_paralelo: IN STD_LOGIC_VECTOR(0 TO 3);
Salida: INOUT STD_LOGIC_VECTOR(0 TO 3));
END registro_desplazamiento_4bits;
Obsérvese el uso en esta ocasión de la palabra reservada WAIT UNTIL, para crear una espera
hasta que se produzca el flanco ascendente del reloj. En este caso, el proceso no necesita una
lista de sensibilidad.
Se puede escribir un código alternativo más compacto, para implementar un registro de
desplazamiento cuyo ancho de palabra sea configurable:
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY registro_desplazamiento_ancho_configurable IS
GENERIC (K: INTEGER := 4);
PORT (Reset_N, Reloj, Dato_serie: IN STD_LOGIC;
Salida: BUFFER STD_LOGIC_VECTOR(1 TO K));
END registro_desplazamiento_ancho_configurable;
7-3-1 Introducción
Los sistemas lógicos cuyas salidas dependen únicamente del estado actual de las variables
de entrada se denominan sistemas combinacionales. En estos circuitos, si se modifica la
combinación de las variables de entrada, la salida reflejará este cambio, luego del retardo de
propagación propio de los componentes electrónicos.
Dentro de los sistemas combinacionales están incluidos los codificadores, decodificadores,
multiplexores, demultiplexores, sumadores restadores, ALU´s, etc.
Existe otro tipo de circuitos lógicos denominados sistemas secuenciales en los que el estado
actual de las salidas depende no solamente del estado actual de las entradas, sino que también
es tenido en cuenta el estado interno en que se encuentra el sistema, producto de la evolución
del mismo en el tiempo. Así, en un sistema secuencial, para una misma combinación de las
variables de entrada, no necesariamente la salida adoptará el mismo valor.
Los sistemas secuenciales son también llamados autómatas finitos deterministas. Los
autómatas son dispositivos que se regulan a sí mismos, encadenando operaciones lógicas y
aritméticas. El término “finito” hace alusión a que estos dispositivos pueden adoptar un número
finito o discreto de estados internos. La palabra “determinista” significa que su estado actual es
resultado de estados anteriores.
Como los sistemas secuenciales dependen de los estados anteriores, es necesario disponer
de un circuito capaz de memorizar estos estados. Esta tarea es cumplida por flip-flops. Cada FF
puede memorizar dos estados diferentes (ya que su salida puede adoptar solamente dos
estados, 0 o 1), de manera que si un sistema secuencial tiene m estados diferentes, su memoria
estará compuesta de n FF, tal que 2n > m.
Los estados internos son las etapas que atraviesa un sistema secuencial a medida que
evoluciona. En cada etapa, los FF memorizan un número asignado a la misma, que es utilizado
en el siguiente ciclo de reloj.
Las transiciones entre estados, son las condiciones que deben darse tanto en las entradas
como en los estados internos, para que éstas se produzcan.
La estructura interna de un sistema secuencial varía según el tipo de autómata de que se
trate. Básicamente se pueden clasificar de dos maneras: autómatas de Mealy y de Moore.
En los autómatas de Mealy, la salida del sistema depende del valor de las variables de
entrada y del estado interno actual del sistema. Como las entradas generalmente no están
sincronizadas, la salida no evolucionará exclusivamente en forma sincrónica. La figura 7-19
muestra la estructura interna de un autómata de Mealy.
En un autómata de Moore la salida sólo depende del estado interno, y como éste evoluciona
con cada ciclo de reloj, la salida del sistema está en sincronismo con el reloj. La figura 7-20
muestra la estructura interna de un autómata de Moore.
todos los estados que atraviesa el sistema, los valores de las variables de entrada que provocan
las transiciones entre estados y los valores que adoptan las salidas en cada estado.
El diagrama de estado consiste en círculos que representan los estados del sistema
sincrónico, unidos por flechas que representan las transiciones entre estados. La figura 7-21
muestra una transición entre dos estados para un autómata de Mealy y uno de Moore
respectivamente.
En los autómatas de Moore, los círculos contienen el nombre del estado (Zi) y el valor que
adopta la salida (Yi), ya que como se dijo, ésta sólo depende del estado. En la transición de un
estado a otro se indica el valor que debe adoptar la entrada (Xi)
Por otro lado, para el autómata de Mealy, dentro de cada círculo se indica solamente el
nombre del estado correspondiente, y en las transiciones entre estados, el valor que debe tomar
la entrada y el que tendrá la salida.
Tanto los modelos de Mealy como los de Moore representan con exactitud una máquina de
estados finitos. La principal diferencia entre ellos está en la obtención de la salida. El autómata
de Moore es más ordenado porque cada combinación de entrada genera un cambio de estado, y
éste una nueva salida, mientras que el modelo de Mealy estados y salidas evolucionan por
separado.
Una máquina de estado se puede implementar con cualquiera de los dos modelos, y la
elección depende de la funcionalidad del sistema y del gusto del diseñador.
4- Cálculo del número de FF necesarios para el circuito de memoria, a partir del número de
estados del sistema. Por ejemplo si el sistema tiene 9 estados internos, serán necesarios
4 FF. Los FF usados son los del tipo D o JK.
5- Construcción de la tabla de excitación de las entradas de los FF elegidos, a partir de las
variables de entrada y de los estados internos actuales y futuros.
6- Construcción de la tabla de verdad de las funciones de salida del sistema, a partir de las
variables de entrada y de los estados internos actuales y futuros
7- Obtención de las funciones lógicas de las entradas de los FF y de las salidas del sistema,
deducidas de la tabla de excitación construida en el paso anterior.
8- Simplificación de las funciones lógicas, mediante diagramas de Karnaugh y obtención de
las funciones lógicas minimizadas.
9- Implementación del circuito final a partir de las funciones lógicas minimizadas.
7-3-4-1 Ejemplo 1
• Paso 1: una cinta transportadora mueve una pieza X a lo largo de un proceso genérico. En
un punto del mismo, se realiza un control de dimensiones, realizado por un transductor
digital. El transductor entrega una salida baja si la pieza está dentro de las dimensiones
deseadas, y da una salida alta si la pieza es mala. Un circuito digital da una señal de
alarma si se detectan tres o más piezas consecutivas fuera de dimensiones. Si detecta
una pieza buena, la salida pasa a estado bajo y el sistema se reinicia.
• Paso 2: de acuerdo con la descripción del problema se deduce que el sistema debe pasar
por cuatro estados internos: uno para indicar que no se ha producido ninguna pieza mala,
y tres más para los casos en que se detecten una, dos y tres o más piezas malas. La
figura 7-22 muestra el diagrama de estados obtenido, correspondiente a un autómata de
Moore.
X=1
Z0 X=1 Z1 Z2
X=1 X=1 Z3
Y=0 Y=0 Y=0 Y=1
X=0
X=0
X=0
• Paso 3: Los cuatro estados por los que atravesará el sistema se denominaron Z0, Z1, Z2
y Z3. A cada uno de ellos se les ha asignado los siguientes números binarios:
Estado Codificación
Z0 00
Z1 01
Z2 10
Z3 11
• Paso 4: debido a que los estados internos son cuatro, se usarán 2 FF del tipo JK para la
memoria del sistema. La tabla de excitación característica de los FF JK es:
Y= Σ (7) = Π (0,1, 2, 3, 4, 5, 6)
J0 K0
Q1Q0 Q1Q0
00 01 11 10 00 01 11 10
X X
0
0 X X 0 0 X 1 1 X
0 1 3 2 0 1 3 2
1 1 X X 1 1 X 1 0 X
4 5 7 6 4 5 7 6
Y
J0 = X K0 = X + Q1 Q1Q0
00 01 11 10
X
0
0 0 0 0
0 1 3 2
1 0 0 1 1
4 5 7 6
J1 K1
Q1Q0 Q1Q0
00 01 11 10 00 01 11 10
Y1 = X Q1
X X
0
0 0 X X 0
X X 1 1
0 1 3 2 0 1 3 2
1 0 1 X X 1 X X 0 0
4 5 7 6 4 5 7 6
J1 = X Q0 K1 = X
• Paso 9: en la figura 7-24 se muestra el circuito eléctrico final del sistema requerido.
Mediante un software de simulación por computadora, es posible verificar si el circuito
cumple con las condiciones requeridas.
Y
X
FF0 FF1
J Q J Q
CK CK CK
K Q K Q
7-3-4-2 Ejemplo 2
• Paso 3: los diez estados por los que atravesará el sistema se denominaron Z0, Z1, Z2,
Z3, Z4, Z5, Z6, Z7, Z8 y Z9. A cada uno de ellos se les ha asignado los siguientes
números binarios:
Estado Codificación
Z0 0000
Z1 0001
Z2 0010
Z3 0011
Z4 0100
Z5 0101
Z6 0110
Z7 0111
Z8 1000
Z9 1001
• Paso 4: son necesarios cuatro FF tipo JK para memorizar los diez estado internos del
contador.
J0 K0 J1
Q1Q0 Q1Q0 Q1Q0
00 01 11 10 00 01 11 10 00 01 11 10
Q3Q2 Q3Q2 Q3Q2
00 1 X X 1 00 X 1 1 X 00 0 1 X X
0 1 3 2 0 1 3 2 0 1 3 2
01 1 X X 1 01 X 1 1 X 01 0 1 X X
4 5 7 6 4 5 7 6 4 5 7 6
11 X X X X 11 X X X X 11 X X X X
12 13 15 14 12 13 15 14 12 13 15 14
10 1 X X X 10 X 1 X X 10 0 0 X X
8 9 11 10 8 9 11 10 8 9 11 10
J0 = 1 K0 = 1 J1 = Q3Q0
Q1Q0
K1 Q1Q0
J2 Q1Q0
K2
00 01 11 10 00 01 11 10 00 01 11 10
Q3Q2 Q3Q2 Q3Q2
00 X X 1 0 00 0 0 1 0 00 X X X X
0 1 3 2 0 1 3 2 0 1 3 2
01 X X 1 0 01 X X X X 01 0 0 1 0
4 5 7 6 4 5 7 6 4 5 7 6
11 X X X X 11 X X X X 11 X X X X
12 13 15 14 12 13 15 14 12 13 15 14
10 X X X X 10 0 X X 0 10 X X X X
8 9 11 10 8 9 11 10 8 9 11 10
Q1Q0
J3 Q1Q0
K3
00 01 11 10 00 01 11 10
Q3Q2 Q3Q2
00 0 0 0 0 00 X X X X
0 1 3 2 0 1 3 2
01 0 0 1 0 01 X X X X
4 5 7 6 4 5 7 6
11 X X X X 11 X X X X
12 13 15 14 12 13 15 14
10 X X X X 10 0 1 X X
8 9 11 10 8 9 11 10
J3 = Q3Q1Q0 K3 = Q0
• Paso 9: implementación del circuito final. En la figura 7-27 se muestra el circuito eléctrico
del sistema requerido.
+V
Q0 Q1 Q2 Q3
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY automata_Moore_ej_1 IS
PORT (Reloj, Entrada, Reset: IN STD_LOGIC;
Salida: OUT STD_LOGIC);
END automata_Moore_ej_1;
BEGIN
-- el siguiente bloque fija el estado actual cuando llega el flanco activo del reloj
En el segundo proceso se establecen cada una de las transiciones que puede tener un estado
determinado, de acuerdo con el estado actual de la máquina y de la entrada. Esto es
simplemente la traducción del diagrama de estados a lenguaje VHDL.
En el segundo ejemplo, se sintetizará un autómata de Mealy, cuya función es similar a la del
ejemplo anterior, la de detectar una secuencia de bits en su entrada. La entrada ahora tiene un
ancho de palabra de dos bits. La salida se coloca a estado alto cuando detecta dos o más “00” o
“11” consecutivos, en caso contrario la salida es 0. La figura 7-28 muestra el diagrama de
estados de la máquina.
Reset/0
0/1
Estado_ 0/0 Estado_ 0/1 Estado_
A B C
0/0
1/0 0/0
1/0
1/0
Estado_ 1/1 Estado_
1/1
D E
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY automata_Mealy_ej_2 IS
PORT (Reloj, Reset: IN STD_LOGIC;
Entrada: IN STD_LOGIC;
Salida: OUT STD_LOGIC);
END automata_Mealy_ej_2;
BEGIN
-- el siguiente bloque fija el estado actual cuando llega el flanco activo del reloj
secuencial: PROCESS (Reloj, Reset, Estado_siguiente)
BEGIN
IF Reset =’1’ THEN -- Reset asincrónico
Estado_actual <= Estado_A;
Salida<= ’0’;
ELSIF Reloj=’1’ AND Reloj ’EVENT THEN
Estado_actual<=Estado_siguiente;
END IF;
END PROCESS;
CASE Estado_actual IS
WHEN Estado_A => --Transiciones del estado Estado_A
IF Entrada=’0’ THEN
Estado_actual<=Estado_B;
Salida_auxiliar<=’0’; --Salida de Mealy
ELSE
Estado_actual<=Estado_D;
Salida_auxiliar<=’0’; --Salida de Mealy
END IF;
En la descripción anterior se observa que se trata de un autómata de Mealy porque dentro del
segundo proceso, la señal “Salida_auxiliar” depende no solo del estado actual de la máquina
sino que también depende del valor de la entrada en ese momento.
CAPÍTULO 8
MEMORIAS SEMICONDUCTORAS
8-1 Introducción
8-2-1 Organización
• Puede escribirse en ellas (al menos una vez) para fijar su contenido.
La figura 8.1 describe el funcionamiento de una celda de memoria. Lo más común es que la
celda tenga tres terminales para transportar señales eléctricas. El terminal de selección, como su
nombre indica, selecciona la celda para la operación de escritura o lectura. El terminal de control
indica el tipo de operación. Para la escritura, el tercer terminal proporciona la señal que fija el
estado de la celda a 1 o 0. En una lectura, el tercer terminal se utiliza como salida del estado de
la celda. Los detalles sobre estructura interna y funcionamiento de la celda de memoria en cada
tecnología específica de circuitos integrados se discute en apartados posteriores.
8-2-2 Capacidad
Para memorias de acceso aleatorio es el tiempo que tarda en realizarse una operación de
escritura o de lectura, es decir, el tiempo que transcurre desde el instante en el que se presenta
una dirección a la memoria hasta que el dato ha sido memorizado o está disponible para su uso.
Para memorias de otro tipo, el tiempo de acceso es el que se tarda en situar el mecanismo de
lectura / escritura en la posición deseada.
Es la velocidad a la que se pueden transferir datos a, o desde, una unidad de memoria. Para
memorias de acceso aleatorio coincide con el inverso del tiempo de ciclo. Se han empleado
dispositivos físicos muy diversos de memoria. Las más comunes en la actualidad son las
memorias semiconductoras, las memorias de superficie magnética, utilizadas para discos y
cintas y las memorias ópticas y magneto-ópticas.
8-3-4 Asociativa
Es una memoria del tipo de acceso aleatorio, que permite hacer una comparación de ciertas
posiciones de bits dentro de una palabra buscando que coincidan con unos valores dados, y
hacer esto para todas las palabras simultáneamente. Una palabra es, por tanto, recuperada,
basándose en una porción de su contenido, en lugar de su dirección. Como en las memorias de
acceso aleatorio convencionales, cada posición tiene su propio mecanismo de direccionamiento,
y el tiempo de recuperación de un dato es una constante independiente de la posición o de los
patrones de acceso anteriores. La memoria caché interna de algunos microprocesadores, como
por ejemplo la del PENTIUM de INTEL son del tipo asociativas.
Son aquellas en las que el tiempo que tarda en leerse o grabarse una posición depende de
una situación física en el interior de la memoria. Para introducir información en una posición hay
que hacer pasar su información por todas las que la preceden a partir de los terminales de
entrada. De forma similar, para leer el contenido de una posición hay que hacer pasar su
información por todas las que la siguen hasta alcanzar los terminales de salida.
Si el nivel lógico de la línea que habilita la escritura está puesto en 1 lógico, el camino de
recirculación a lo largo de los registros de desplazamiento estará interrumpido. En este caso, los
bits aplicados en las líneas de entrada de datos, es decir, aplicados en sincronismo con el reloj,
llenarán sucesivamente las posiciones de registro en los registros de desplazamiento. Con el
control de escritura en 1 lógico se puede, pues, borrar y reemplazar el contenido de la memoria.
Empezando con la memoria inicialmente borrada, la primera palabra escrita en la memoria
será también la primera en aparecer por la salida de la memoria cuando se proceda a la lectura
de ésta. Por esta razón la presente memoria se denomina sistema de memoria primero en entrar-
primero en salir (FIFO: first in-first out).
Todos los tipos de memorias que se estudiarán en esta sección son de acceso aleatorio. Es
decir, las palabras individuales de la memoria son accedidas directamente mediante lógica de
direccionamiento cableada interna, o dicho de otra manera, son aquéllas en las que el tiempo
que tarda en leerse o grabarse una posición es el mismo para todas las posiciones de la
memoria.
La tabla 8-1 lista los principales tipos de memorias semiconductoras. La más común es la
denominada memoria de acceso aleatorio (RAM, Random-Access Memory). Este es, por
supuesto, un mal uso del término, ya que todas las memorias listadas en la tabla son de acceso
aleatorio. Una característica distintiva de las RAM es que es posible, tanto leer datos, como
escribir rápidamente nuevos datos en ellas. Tanto la lectura como la escritura se ejecutan
mediante señales eléctricas.
La otra característica distintiva de una RAM es que es volátil. Una RAM debe estar
continuamente alimentada. Si se interrumpe la alimentación, se pierden los datos. Así pues, las
RAM pueden utilizarse sólo como almacenamiento temporal.
Las tecnologías RAM se dividen en dos variantes: estáticas y dinámicas. Una RAM dinámica
está hecha con celdas, que almacenan los datos como cargas en condensadores. La presencia o
ausencia de carga en un condensador se interpretan como el 1 o el 0 binarios. Ya que los
condensadores tienen una tendencia natural a descargarse, las RAM dinámicas requieren
refrescos periódicos para mantener memorizados los datos. En una RAM estática, los valores
binarios se almacenan utilizando configuraciones de puertas que forman biestables (flip-flops).
Una RAM estática retendrá sus datos en tanto se mantenga alimentada.
Tanto las RAM estáticas como las dinámicas son volátiles. Una celda de memoria RAM
dinámica es más simple que una estática y, en consecuencia, más pequeña. Por tanto, las RAM
dinámicas son más densas (celdas más pequeñas = más celdas por unidad de superficie) y más
económicas que las correspondientes RAM estáticas. Por otra parte, una RAM dinámica requiere
circuitería para el refresco. En memorias grandes, el coste fijo de la circuitería de refresco se ve
más que compensado por el menor coste de las celdas RAM dinámicas. Así pues, las RAM
dinámicas tienden a ser preferidas para memorias grandes. Un último detalle es que las RAM
estáticas son generalmente algo más rápidas que las dinámicas.
En claro contraste con las RAM están las memorias de solo lectura (ROM, Read-Only
Memory). Como su nombre sugiere, una ROM contiene un patrón permanente de datos que no
puede alterarse. Aunque es posible leer de una ROM, no se pueden escribir nuevos datos en ella.
Una aplicación importante de las ROM es la microprogramación. Otras aplicaciones son:
Cuando se requieren un tamaño modesto, la ventaja de una ROM es que el programa o los
datos estarían permanentemente en memoria principal, y nunca sería necesario cargarlos desde
un dispositivo de memoria secundaria.
Una ROM se construye como cualquier otro chip de circuito integrado, con los datos
cableados en el chip durante el proceso de fabricación. Esto presenta dos problemas:
• La etapa de inserción de datos implica unos costos fijos relativamente grandes, tanto si
se va a fabricar una, o miles de copias de una misma ROM.
• No se permiten fallos. Si uno de los bits es erróneo, debe desecharse la tirada completa
de memorias ROM.
Cuando se necesitan sólo unas pocas ROM con un contenido particular, una alternativa más
económica es la ROM programable (PROM). Al igual que las ROM, las PROM son no volátiles y
pueden grabarse sólo una vez. Para la PROM, el proceso de escritura se lleva a cabo
eléctricamente, y puede realizarlo el suministrador o el cliente con posterioridad a la fabricación
del chip original. Se requiere un equipo especial para el proceso de escritura o programación. Las
PROM proporcionan flexibilidad y comodidad. Las ROM siguen siendo atractivas para tiradas de
producción de gran volumen.
Otra variante de memoria de sólo lectura es la memoria de sobre-todo-lectura (read mostly),
que es útil para aplicaciones en que las operaciones de lectura son bastante más frecuentes que
las de escritura, pero para las que se requiere un almacenamiento no volátil. Hay tres formas
comunes de memorias de sobre-todo- lectura: EPROM, EEPROM, y memorias “flash”.
La memoria de sólo lectura programable y borrable ópticamente (EPROM, Erasable
Programmable Read-Only Memory) se lee y escribe eléctricamente como la PROM. Sin embargo,
antes de la operación de escritura, todas las celdas de almacenamiento deben primeramente
borrarse a la vez, mediante exposición del chip encapsulado a radiación ultravioleta. Este
proceso de borrado puede realizarse repetidas veces; cada borrado completo puede durar hasta
veinte minutos. Así pues, las EPROM puede modificarse múltiples veces y, al igual que las ROM y
las PROM, retienen su contenido, en teoría indefinidamente. Para una capacidad similar, una
EPROM es más costosa que una PROM, pero tiene como ventaja adicional la posibilidad de
actualizar múltiples veces su contenido.
Una forma más atractiva de memoria de sobre-todo-lectura es la memoria de sólo lectura
programable y borrable eléctricamente (EEPROM: Electrically Erasable Programmable Read Only
Memory). Esta es una memoria de sobre-todo-lectura en la que se puede escribir en cualquier
momento sin borrar su contenido anterior; sólo se actualiza el byte o bytes direccionados. La
operación de escritura lleva considerablemente más tiempo que la de lectura; del orden de
cientos de microsegundos por byte. La EEPROM combina la ventaja de ser no volátil, con la
flexibilidad de ser actualizable in situ utilizando las líneas de datos, de direcciones y de control de
un bus ordinario. Las EEPROM son más costosas que las EPROM y también menos densas,
admitiendo menos bits por chip.
Otra forma de memoria semiconductora es la memoria flash (denominada así por la
velocidad con la que puede reprogramarse). Introducida a mediados de los 80, las memorias
flash se encuentran, en coste y funcionalidad, entre las EPROM y las EEPROM. Al igual que las
EEPROM, las flash utilizan una tecnología de borrado eléctrico. Una memoria flash puede
borrarse entera en unos cuantos segundos, mucho más rápido que las EPROM. Además, es
posible borrar sólo bloques concretos de memoria, en lugar de todo el chip. Sin embargo, las
memorias flash no permiten borrar a nivel de byte. Al igual que las EPROM, las flash utilizan sólo
un transistor por bit, consiguiéndose las altas densidades (comparadas con las EEPROM) que
alcanzan las EPROM.
Las celdas de almacenamiento de bit en una memoria de acceso aleatorio (RAM) pueden
usar transistores bipolares de unión (BJT) o MOS, en modo estático o en modo dinámico. Cuando
se necesita alta velocidad, es preferible la RAM BJT, puesto que su tiempo de acceso puede ser
aproximadamente de 35 [ns], a diferencia de la RAM MOS, que tiene tiempos de acceso de
aproximadamente 400 [ns]. Por otra parte, la RAM BJT suele ser pequeña, con 1024 celdas de
memoria o menos, mientras que se fabrican RAM MOS con 4096 celdas de memoria o más.
El gran avance de las tecnologías electrónicas ha permitido realizar en circuito integrado de
gran escala de integración bloques funcionales de memoria de elevada capacidad y tiempo de
acceso y ciclo muy reducido (del orden de los nanosegundos) La desventaja de su volatilidad
viene compensada en algunas tecnologías como, por ejemplo, la de MOS complementaria
(CMOS) por una reducida potencia necesaria para mantener la información estáticamente sin
realizar operaciones de escritura o lectura. Esto permite la utilización de baterías recargables de
reducido tamaño que mantienen la información cuando se produce un fallo de la red de
alimentación.
Las célula básica bipolar capaz de memorizar un bit de información se basa en las
características de un lazo cerrado formado por dos inversores conectados en cascada, como se
muestra en la figura 8-5(a); éste es un circuito biestable en el cual se puede guardar en el lazo A
= 0 o A = 1. Aunque el circuito parece extraño a primera vista, equivale operacionalmente al
circuito de la figura 8-5(b), aclarando el acoplamiento cruzado de los inversores. Al comparar este
circuito con el flip-flop RS, se observa la misma estructura, salvo que ahora se usan para la lógica
compuertas NOT de una entrada.
Figura 8-5: Los inversores con acoplamiento cruzado forman un circuito biestable.
En la figura 8-6 se indica el esquema de la de uso más extendido en la tecnología TTL. Los
transistores T1 y T2 realimentados poseen varios emisores. En la figura 8-6 se supone que la
célula forma parte de una memoria con selección lineal (2D) y por ello sólo posee una entrada de
selección unida a un emisor de cada transistor. Si la célula se seleccionase por coincidencia (3D),
poseería dos líneas de selección conectadas a sendos emisores de ambos transistores. Cuando
la célula no está seleccionada, la línea de selección se encuentra al nivel de masa. En esta
situación uno de los dos transistores T1 o T2 conduce y la célula memoriza un cero o un uno.
Para leer el contenido, se eleva al valor de Vcc la tensión de su línea de selección y esto hace que
la corriente que pasa por el emisor de T1 o de T2 unida a la línea de selección se desvíe al
emisor unido a la salida Q o su complemento respectivamente y a la salida de los “buffers”
(amplificadores) de lectura L1 y L2 se observe el estado de la célula.
Para memorizar el estado de la entrada I y su complemento, en el interior del biestable se
realiza la selección tal como se indicó en el apartado anterior y simultáneamente se aplica la
señal de control de escritura que desinhibe los amplificadores E1 y E2. La salida de uno sólo de
estos amplificadores se pondrá al nivel de masa y hará conducir al transistor T1 o T2
correspondiente. Al volver la línea de selección al nivel de masa, dejará de conducir el transistor
T1 o T2 a través de su emisor unido a Q o a su complemento y lo hará a través de aquélla,
memorizándose de esta forma la información I.
En la figura 8-6 se supone que la información que se escribe en el biestable se lee
simultáneamente a la salida de los amplificadores L1 y L2. Si se quiere inhibir la lectura mientras
se realiza la escritura, se inhibirán dichos amplificadores mediante la señal de control de
escritura.
Las memorias activas de tecnología MOS presentan la ventaja de las dimensiones reducidas
de su célula básica, que carece de resistencias porque, como se sabe, la carga de los
transistores MOS es a su vez otro transistor MOS.
Las memorias activas MOS se pueden clasificar en dos tipos principales que se diferencian
por el principio físico utilizado por la célula básica para memorizar la información.
Las memorias estáticas son aquellas que memorizan la información mediante dos inversores
interconectados formando un biestable activado por niveles. Las dos tecnologías más utilizadas
para realizar éstas células son la de MOS canal N y la de MOS complementario (CMOS). En la
figura 8-7 se representa la célula básica realizada con transistores MOS de canal N enriquecidos
y el lector puede observar el paralelismo con la célula bipolar de la figura 8-6. Los transistores T3
y T4 actúan como resistencia de carga de T1 y T2 respectivamente. La salida directa Q de la
célula es el punto común al surtidor de T3 y el drenador de T1 y su complemento es el mismo
punto de T4 y T2. Seguidamente se verá cómo se puede introducir información en esta célula o
leer la que contiene.
En primer lugar es necesario dotarla de los dispositivos necesarios para seleccionarla, que se
indica en la figura 8-8 y que consisten en los transistores T5 y T6 cuyas puertas están unidas
entre sí y constituyen la línea de selección.
Para leer el contenido de la célula se aplica el nivel de tensión Vdd a la línea de selección y
de esta forma se hacen conducir los transistores T5 y T6. El estado de las líneas I y su
complemento se hace igual al de las salidas de la célula Q y su complemento y puede ser
aplicado a un amplificador cuya salida se conecta al exterior. Para escribir en la célula una vez
seleccionada, se hace llegar la información externa a las líneas I y su complemento.
Figura 8-8: Célula de una memoria estática MOS con transistores para su selección.
Fig
ura 8-9: Célula de una memoria MOS dinámica.
Figura 8-10: Célula de una memoria MOS dinámica con tres transistores.
La necesidad del ciclo de refresco de las filas de una memoria dinámica introduce una
complicación no necesaria en las estáticas, que viene compensada por la menor complejidad de
la célula.
Una unidad de memoria dinámica, como se verá en la sección siguiente, no está por tanto
constituida solamente por un conjunto de células y un decodificador sino que ha de poseer una
unidad de control que genere las señales de control y realice los ciclos de refresco.
Como se mencionó con anterioridad, las memorias RAM (Random Access Memory) son
aquéllas en las que el tiempo que tarda en leerse o grabarse una posición es el mismo para
todas las posiciones de memoria. Aleatoriamente se puede seleccionar cualquier posición de la
memoria para introducir información en ella o leer la que contiene. Por lo tanto, el tiempo de
acceso a cualquier posición de la memoria es el mismo independientemente de su situación.
Seguidamente se estudiarán las estructuras u organizaciones de las memorias de acceso
aleatorio. Tal como s indicó anteriormente, las memorias de acceso aleatorio están formadas por
células biestables organizadas en posiciones de n células cada una. Para seleccionar la posición
en la que se introduce o de la que se lee la información se utiliza un decodificador, que es un
sistema combinacional que tiene un número de salidas igual al de combinaciones posibles de las
variables de entrada, de tal forma que para cada combinación de las variables de entrada se
activa una y sólo una variable de salida.
Se denomina así porque el decodificador tiene tantas salidas como posiciones de memoria
que posee la memoria. En la figura 8-13 se representa el esquema de bloques de una memoria
2D de 2n2 posiciones de n1 bits cada una. Las variables de dirección se decodifican mediante un
único decodificador de 2n2 salidas, cada una de las cuales se conecta a una de las 2n2 posiciones
de la memoria. Los terminales de entrada y salida de todas las posiciones se conectan entre sí,
al igual que la señal que selecciona la escritura o lectura de la memoria. Al aparecer en las
entradas de las variables de dirección una determinada combinación binaria se activa una sola
salida del decodificador y las células de la posición conectada a ella son leídas o escritas según
el estado de la señal de control de escritura / lectura.
Un inconveniente de esta organización es que el número de conexiones entre el conjunto de
células y el exterior a ellas crece linealmente con el número de posiciones de memoria.
Otro grupo de 11 líneas de direcciones selecciona una de entre 2048 columnas, con cuatro
bits por columna. Se utilizan cuatro líneas para la entrada y salida de cuatro bits, a y desde, un
buffer de datos. Para la entrada (escritura), cada línea de bit se activa a 1 o 0, de acuerdo con el
valor de la correspondiente línea de datos. Para salida (lectura), el valor de cada línea de bit se
pasa a través de un amplificador de lectura (término que se empleará para referirse al inglés
sense amplifier) y presenta en la correspondiente línea de datos. La línea de fila selecciona la fila
de celdas que es utilizada para lectura o escritura.
Ya que en esta DRAM se escriben / leen sólo cuatro bits, debe haber varias DRAM
conectadas al controlador de memoria, a fin de escribir / leer una palabra de datos en el bus.
Obsérvese que hay sólo 11 líneas de direcciones (A0 - A10), la mitad del número necesario
para una matriz de 2048 x 2048. Esto se hace así para ahorrar en número de terminales. Las
señales de las 22 líneas de direcciones necesarias se transforman con lógica de selección
externa al chip y se multiplexan en 11 líneas de direcciones. Primero se proporcionan al chip 11
señales de dirección que definen la dirección de la fila de la matriz, y después se presentan las
otras 11 señales para la dirección de columna. Estas señales se acompañan por las de selección
de dirección de fila (RAS) y de selección de columna (CAS), que temporizan el chip.
Como comentario, el uso de direccionamiento multiplexado y de matrices cuadradas dan
lugar a que el tamaño de memoria se cuadriplique con cada nueva generación de chips de
memoria. Un terminal adicional dedicado a direccionamiento duplica el número de filas y de
columnas y, por tanto, el tamaño del chip de memoria crece en factor 4.
La figura 8-15 también indica la inclusión de la circuitería de refresco. Todas las DRAM (RAM
dinámicas) requieren operaciones de refresco. Una técnica simple de refresco consiste en
inhabilitar el chip DRAM mientras se refrescan todas las celdas. El contador de refresco recorre
todos los valores de la fila. Para cada valor, las salidas de dicho contador se conectan al
decodificador de filas y se activa la línea RAS. Esto hace que se refresquen todas las celdas de
una fila a la vez.
Las memorias ROM, denominadas también memorias ROM de máscaras programables, las
programa el fabricante utilizando máscaras fotográficas para exponer la oblea de silicio a
radiaciones. Las ROM de máscaras programables tienen grandes tiempos de desarrollo, y sus
costes iniciales son altos.
Un atributo fundamental de la ROM es que la información que almacena no se perderá si se
interrumpe la alimentación. Tales memorias se denominan no volátiles. Está característica las
hace idóneas para el almacenamiento de las instrucciones de los sistemas digitales
programables. Otra ventaja de las memorias ROM es la reducida complejidad de su célula básica
que contiene sólo uno o dos elementos semiconductores. Esta reducción de la complejidad trae
consigo la disponibilidad en circuito integrado de bloques funcionales de mayor capacidad que
los de las memorias RAM y un tiempo de acceso mucho menor, lo cual es muy importante
cuando la memoria ROM contiene las instrucciones de un sistema digital programable.
La ROM tiene muchas aplicaciones en un sistema digital. Se la puede utilizar para realizar
una tabla de verdad cualquiera. Si en una tabla de verdad intervienen suficientes variables
lógicas de entrada y salida como para que su realización física requiera de un gran número de
puertas, una ROM puede ser la solución más económica en cuanto a tamaño y coste. Las ROM
se emplean ampliamente en la conversión de códigos y en los visualizadores alfanuméricos.
También se utiliza la ROM para producir resultados que de otra manera habrían de obtenerse por
un cálculo en que intervendría una secuencia de operaciones aritméticas, por ejemplo
multiplicación, división y evaluación de funciones trigonométricas o bien se la puede utilizar como
generador de funciones. Las ROM se emplean también ampliamente como tablas de consulta
para funciones matemáticas tales como logaritmos, funciones trigonométricas, raíces cuadradas,
exponenciales, etc.
Las memorias ROM también pueden estar constituidas por semiconductores bipolares
(transistores y diodos) o transistores MOS. Sin embargo el uso de diodos tiene el inconveniente
de que las entradas al codificador deben suministrar directamente la corriente que debe ser
entregada a la salida; obviamente, esta dificultad se solventa utilizando transistores bipolares o
en su defecto MOS.
Las tecnologías bipolares permiten actualmente la realización de memorias del tipo ROM y
PROM. En la figura 8-16 se representa el esquema de una memoria ROM de 2n posiciones de
cuatro bits cada una de selección lineal (2D).
La célula básica está formada por un transistor NPN. Los cuatro transistores que constituyen
una posición de memoria tienen sus bases conectadas entre sí y unidas a una de las salidas del
decodificador que recibe en sus entradas las “n” variables de dirección. Todos los transistores de
las diferentes posiciones de la memoria que almacenan el bit de idéntico peso tienen sus
emisores conectados entre sí y a la etapa de salida constituida por un transistor T montado en
emisor común y las resistencias R1 y R2. Cuando una salida del decodificador está activada
aplica una tensión +V, a la base de todos los transistores que están unidos a ella, tensión que
hace pasar una corriente a través de su unión base-emisor, la resistencia R1 y la unión base
emisor de los transistores T de salida. De esta forma las salidas se ponen al nivel de masa (cero
lógico en lógica positiva). La existencia de un transistor en todas las células de la memoria hace
que ésta almacene un cero en todas ellas. El almacenamiento de un uno se realiza eliminando la
unión base-emisor del transistor correspondiente a la conexión entre el emisor y la línea unida a
la resistencia R1. Por ejemplo, en la posición 1 de la memoria representada en la figura 8-16 se
almacena de izquierda a derecha la información 1010 en lógica positiva.
Inicialmente todos los fusibles están intactos y la programación la realiza el usuario haciendo
pasar una corriente de magnitud controlada, por los fusibles correspondientes a aquellas células
en las que se desea grabar un uno (en el convenio de lógica positiva).
Una variante de las memorias EPROM son las versiones OTP, (One Time Programmable).
Constructivamente es la misma memoria EPROM pero sin la ventana de cuarzo para el borrado,
por lo que no es posible reutilizarla. Es decir, que puede ser programada eléctricamente sólo una
vez. Su costo de fabricación es mucho menor. Este tipo de memorias son utilizadas en la
producción en serie, una vez que el programa que se desea cargar ya ha sido probado y está libre
de fallas.
Una tercera variante de las memorias PROM son las memorias FLASH, las cuales son muy
similares a las memorias EEPROM, siendo una característica esencial de estas la posibilidad de
ser reprogramadas en el mismo circuito de aplicación. Una diferencia sustancial entre las
memorias EEPROM y las FLASH, es que las primeras pueden ser borradas de a bytes, mientras
que en las segundas el borrado se hace en el banco completo o en su defecto por páginas, pero,
por otro lado, la velocidad de borrado y reprogramación de este tipo de memorias es mucho
mayor que en las EEPROM.
Una de las desventajas de las memorias de lectura / escritura de acceso aleatorio (RAM) es
su volatilidad, es decir que cuando se desconecta la alimentación, se pierden los datos que está
almacenaba. Para resolver este problema, se han desarrollado las RAM no volátiles. Actualmente
las memorias no volátiles de lectura / escritura se implementan usando una SRAM CMOS con
una batería de seguridad, o usando un semiconductor más moderno NVSRAM (RAM estática no
volátil).
Las RAM estáticas tienen capacidades de lectura y escritura, pero son memorias volátiles.
Una solución correcta al problema de la volatilidad es suministrar una batería de seguridad para
la SRAM. Las RAM CMOS se usan con baterías de seguridad porque consumen poca potencia.
Una batería de larga vida (como las de litio) se utiliza para asegurar los datos en las normalmente
volátiles SRAM CMOS cuando falla la alimentación. Durante la operación normal la fuente de
alimentación suministra potencia a la SRAM. Cuando desaparece la alimentación, un circuito
especial detecta la caída en la tensión de alimentación y cambia a la SRAM a su batería de
alimentación de modo preparado (stand-by). Las baterías de seguridad tienen expectativas de
vida de unos diez años.
También se puede utilizar un producto más moderno denominado RAM no volátil. La RAM no
volátil normalmente se denomina NVRAM o NVSRAM. La NVRAM tiene la ventaja de tener las
capacidades de lectura y escritura además de no ser una memoria volátil y de no necesitar de
una batería de seguridad para tal fin.
CAPÍTULO 9
INTRODUCCIÓN A LOS MICROPROCESADORES
9-1 Introducción
En la parte final del capítulo 7 se estudiaron las máquinas de estados como dispositivos
autorregulados capaces de realizar una determinada tarea de control sin intervención del ser
humano. Las redes combinacionales que comandan la evolución de la máquina de estados se
diseña para resolver un problema específico. Si los requisitos del sistema cambian, es necesario
rediseñar todas las redes combinacionales que determinan sus estados y las salidas, es decir es
necesario modificar el hardware. Esta característica de rigidez de las máquinas de estado impide
que se puedan adaptar a múltiples situaciones y es la razón por la que fueron desplazados por
los microprocesadores y microcontroladores.
Un microprocesador es un dispositivo digital usado para resolver problemas y controlar
procesos muy variados. A pesar de que los primeros microprocesadores surgieron hace más de
50 años y variaron mucho en complejidad y prestaciones desde entonces, su funcionamiento se
basa aún hoy en tres o cuatro ideas innovadoras propuestas por el matemático John Von
Neumann.
En su forma más simple, se puede considerar al microprocesador como un sistema
secuencial que ejecuta ininterrumpidamente un ciclo de cuatro pasos, conocido como “Ciclo de
instrucción”. Además, se valen de una memoria digital externa en la que se guarda el programa o
listado de tareas a realizar. En cada ciclo de instrucción, la máquina de estados interna se
encarga de buscar estas órdenes, interpretarlas, llevarlas a cabo y guardar los resultados. Si los
requisitos del problema cambian, solamente es necesario cambiar el listado de tareas, pero no el
circuito eléctrico del sistema secuencial. Esta característica les proporciona flexibilidad y
adaptación a muchas situaciones totalmente diferentes.
El primer sistema parecido a lo que hoy se conoce como un procesador fue el ENIAC.
Prácticamente era una máquina de estados en el sentido de que se configuraba o “cableaba”
para realizar un determinado cálculo o resolver una ecuación matemática en particular.
Para que el ENIAC realizara otro tipo de cálculos, era necesario que un número importante de
ingenieros, muy especializados, rediseñara el cableado.
El matemático estadounidense John Von Neumann propuso una serie de modificaciones para
eliminar la rigidez del ENIAC. Estas modificaciones fueron:
• Finalmente, propone que la máquina de estados se diseñe de manera que realice siempre
cuatro pasos, independientemente de la tarea que tenga que realizar. Esto se conoce hoy
en día como ciclo de instrucción: búsqueda, decodificación, ejecución y almacenamiento.
Las modificaciones sugeridas tuvieron un carácter tan revolucionario que aun hoy están
vigentes luego de décadas de existencia y evolución de los microprocesadores.
Algunas preguntas que pueden hacerse sobre de los procesadores son: ¿Un procesador tiene
inteligencia? ¿Qué cosas entiende un microprocesador? ¿Es capaz de interpretar órdenes?
Un procesador solo entiende un grupo reducido de comandos llamados instrucciones o
códigos de operación. Este grupo de códigos se conoce como set de instrucciones. Cada
microprocesador o familia de procesadores tiene un set específico de instrucciones.
En un microprocesador simple, las instrucciones realizan movimientos de datos dentro de la
arquitectura interna, o desde y hacia la memoria del sistema. Además son capaces de realizar
operaciones lógicas como AND, OR, OR EXCLUSIVA, NOT, desplazamientos de bits, y operaciones
matemáticas como sumas y restas. Recién a fines de los años 90 del siglo pasado se hizo más
común que realizaran multiplicaciones aunque no divisiones.
Otro tipo de operaciones muy poderosas que pueden realizar son los saltos o bifurcaciones.
Con ellas se puede romper la secuencia del programa.
Pero en rigor, un microprocesador por ser un sistema digital, solamente entiende “unos” y
“ceros”, o mejor aún, niveles lógicos de tensión de fuente y masa o 0V. Un procesador entiende
un grupo reducido de instrucciones. A cada instrucción se le asigna una única combinación de
1’s y 0’s, es decir una palabra binaria. Las palabras binarias se traducen dentro del
microprocesador en niveles de tensión.
Entonces, un programa es un listado de códigos binario expresados generalmente en
hexadecimal. Un programa escrito de esta manera se conoce como código máquina, y es el único
lenguaje que entiende un procesador. El lenguaje de máquina es de bajo nivel. Para el
programador de bajo nivel es muy engorroso memorizar el número hexadecimal correspondiente
a cada instrucción, por ello se crea un lenguaje alternativo llamado ensamblador o nemónico. En
el, a cada número o código binario se le hace corresponder una palabra corta fácil de memorizar
que da una idea rápida de la tarea que realiza tal instrucción. Un listado de comandos de este
tipo es un programa en lenguaje ensamblador. La figura 9-3 muestra una porción de la hoja de
datos de un microcontrolador de la fábrica Microchip donde se puede observar el set de
instrucciones con los comandos expresados en binario y en ensamblador.
Figura 9-3: Set de instrucciones del microcontrolador 16F84 de la fábrica Microchip. Fuente:
datasheet provisto por el fabricande desde su pagina web.
Las órdenes o instrucciones que reconoce un procesador son entonces un grupo de 1’s y 0’s
formando una palabra binaria de un tamaño determinado de bits. Esta palabra binaria está
dividida en campos de diferente ancho, en donde cada uno tiene un significado específico. Los
campos en los que se divide una instrucción definen el tipo y el modo de direccionamiento de los
datos.
Dentro de una instrucción el campo más importante es correspondiente al código de
operación, que es la combinación binaria asignada a esta instrucción. Cuando la circuitería
interna recibe esta combinación binaria, se desencadenan una serie de acciones que hacen que
se ejecute la acción para la que fue pensada.
Algunas instrucciones contienen implícitamente el dato a procesar en el campo llamado
argumento. En procesadores más complejos, se puede hallar los campos origen y destino. El
origen indica la posición de memoria en donde se halla el dato. El destino es la posición de
memoria se van a almacenar los resultados luego de haberse realizado la instrucción. En las
figuras 9-4a, 9-4b y 9-4c se muestran tres ejemplos de instrucciones genéricas con los diferentes
campos en los que usualmente se puede dividir.
Figura 9-4a: comando genérico orientado realizar una operación con el dato implícito en el.
Figura 9-4b: comando genérico orientado realizar una operación con dirección de origen del dato
Figura 9-4C: comando genérico orientado realizar una operación de salto incondicional.
Se observa que el modelo está compuesto por tres bloques, cuyas características son:
• Unidad Central de Procesamiento, UCP o más comúnmente llamada CPU, por sus siglas en
inglés: central process unit. La CPU se encarga de dirigir las tareas que forman el ciclo de
instrucción: busca la instrucción en la memoria, la interpreta, ordena su ejecución a través
de una secuencia interna de acciones elementales llamadas microinstrucciones y luego
almacena los resultados en la memoria o lugar de destino, a continuación da comienzo a
un nuevo ciclo de instrucción.
Las flechas que conectan cada bloque con los restantes representan los buses, o grupo de
señales digitales con una función específica. Así, en este modelo se pueden reconocer tres tipos
de buses:
• Bus de direcciones: usado por la CPU para seleccionar un dispositivo dentro del sistema o
una posición de memoria dentro del banco con el que se establecerá la comunicación.
Como se vio en el capítulo 8, una dirección es una palabra binaria que indica la posición
que ocupa un dispositivo dentro del mapa de memoria.
• Bus de datos: son las líneas que transportan los datos con los que trabaja el
microprocesador (instrucciones, datos, direcciones donde buscar una información
determinada, etc.). Los buses de datos se agrupan generalmente de a 8 bits, formando un
byte. La cantidad de bits que componen el bus de datos es lo que define si un
microprocesador es de 8 bits, 16 bits, 32 o 64 bits.
• Bus de control: son las líneas que usa la CPU para comandar los diferentes componentes
internos del microprocesador, por ejemplo el tipo de operación que debe realizar la ALU,
seleccionar el origen de los datos a procesar por la ALU, el destino de los resultados, el tipo
de operación, de lectura o escritura.
BÚSQUEDA
DECODIFICACIÓN
EJECUCIÓN
ALMACENAMIENTO
• Ejecución de la instrucción. Una vez que la instrucción fue decodificada, se activan las
señales para encausar los datos hacia la Unidad Lógica-Aritmética (ALU), que es el
dispositivo en donde se realizan todas las operaciones que es capaz de hacer un
microprocesador. En este ciclo, también se aplican las señales para la ALU, que le indican
la operación a realizar (sumas, restas, operaciones lógicas, desplazamientos, dejar pasar
un dato, etc.)
• Almacenamiento del resultado. Es la fase final del ciclo de instrucción en donde el resultado
de la operación realizada por la ALU es guardado en el destino indicado dentro de la
palabra actualmente guardada en el RI. Al final, el contador de programa es incrementado
para volver a iniciar un nuevo ciclo de instrucción.
CPU
UNIDAD DE
CONTROL
UNIDAD DE
PROCESO
Red de
recuperación de
instrucciones
MÁQUINA Bus de
DE direcciones
PC
ESTADOS MEMORIA
Bus de datos
RI
Red de
recuperación de
instrucciones
MÁQUINA Bus de
DE direcciones
PC
ESTADOS MEMORIA
Bus de datos
RI
BANCO DE
REGISTROS
ALU
Camino de
datos
Como se mencionó con anterioridad, el procesador realiza un ciclo de cuatro fases durante la
ejecución del programa. La evolución del ciclo de instrucción está controlada por la máquina de
estados interna de la UC. En el momento inicial en el que se le proporciona alimentación al
procesador, se resetea el contador de programa PC. Las salidas del PC están conectadas
directamente al bus de direcciones de la memoria del sistema, apuntando a la dirección 0. En
esta dirección se ubicará la primera instrucción del programa.
El procesador inicia entonces su primer ciclo de instrucción dando curso a la fase de
búsqueda. El dato contenido en la posición de memoria apuntada por el PC queda disponible en
el bus de datos del sistema. La unidad de control UC a través de las salidas de la máquina de
estados, comanda las líneas del bus de control de la memoria. Durante esta fase, se guarda una
copia del dato de la posición de memoria actualmente accedida dentro del registro de
instrucciones RI. La figura 9-9 grafica esta situación.
Red de
recuperación de Bus de
instrucciones control
MÁQUINA Bus de MEMORIA
DE direcciones
PC
ESTADOS
Bus de datos
RI
BANCO DE
REGISTROS
ALU
Camino de
datos
Red de
recuperación de
instrucciones
MÁQUINA
DE
PC
ESTADOS MEMORIA
RI
BANCO DE
REGISTROS
ALU
Camino de
datos
Red de
recuperación de
instrucciones
MÁQUINA
DE
PC
ESTADOS MEMORIA
RI
BANCO DE
REGISTROS
ALU
Camino de
datos
Red de
recuperación de Bus de
instrucciones control
BANCO DE
REGISTROS
ALU
Camino de
datos
BIBLIOGRAFÍA