0% encontró este documento útil (0 votos)
242 vistas204 páginas

Apunte Técnicas Digitales I Rev 08.1 2020

Este documento presenta un resumen de los conceptos básicos de electrónica digital e introduce los conceptos de digital vs analógico, y de bit. Explica que los sistemas digitales usan números binarios para representar información del mundo real y pueden tener solo dos estados lógicos, mientras que los sistemas analógicos son continuos. También define el bit como la unidad básica de información digital, capaz de representar dos estados posibles.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
242 vistas204 páginas

Apunte Técnicas Digitales I Rev 08.1 2020

Este documento presenta un resumen de los conceptos básicos de electrónica digital e introduce los conceptos de digital vs analógico, y de bit. Explica que los sistemas digitales usan números binarios para representar información del mundo real y pueden tener solo dos estados lógicos, mientras que los sistemas analógicos son continuos. También define el bit como la unidad básica de información digital, capaz de representar dos estados posibles.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 204

Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I

Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

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.

Magnitudes digitales Magnitud analógica

Multivaluada t Bivaluada

Figura 1-1: diferencias entre magnitudes digitales y analógicas

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

1-2 Representación de datos – Concepto de bit

En la vida cotidiana se utilizan diferentes formas de representar situaciones,


comportamientos, magnitudes, etc. Por ejemplo, se usan siete nombres distintos para identificar
cada uno de los días de la semana, siete símbolos para las notas musicales, cuatro nombres
para los puntos cardinales, 16 palabras diferentes para diferenciar los colores básicos, etc.
También se usan números para establecer cantidades, cuantificar magnitudes; fórmulas
matemáticas y ecuaciones para describir comportamientos de fenómenos físicos, químicos,
sociales, etc.
Como se mencionó en el apartado anterior, los sistemas digitales se diseñan y usan para
brindar soluciones a problemas determinados. La primera dificultad que se presenta es cómo
hacer que un circuito eléctrico que solo responde a variaciones de tensiones y corrientes sea
capaz de representar una información de cualquier tipo que sea. Nada "sabe" un circuito
eléctrico de días de la semana, colores, temperaturas o números binarios. Este apartado trata de
cubrir la brecha que separa a las representaciones de diferentes situaciones de la vida real con
los niveles de tensión y corriente que manejan los circuitos digitales.
Supóngase que se tiene un circuito eléctrico simple como el de la figura 1-2.

Llave abierta = 0
Llave cerrada = 1
S1

+
L1
Batería

Lámpara apagada = 0
Lámpara encendida = 1

Figura 1-2: circuito eléctrico de una lámpara.

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:

• si el interruptor está abierto, le corresponderá un número 0 o estado lógico bajo.


• si el interruptor está cerrado, le corresponderá un número 1 o estado lógico alto.

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:

• si la lámpara está apagada, le corresponderá un número 0 o estado lógico bajo.


• si la lámpara está encendida, corresponderá un número 1 o estado lógico alto.

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

Las asignaciones realizadas se denominan "de lógica positiva":

nivel alto de tensión = tensión de fuente = 1 lógico = estado lógico alto


nivel bajo de tensión = tensión de masa = 0 lógico = estado lógico bajo

Otro tipo de asignación opuesta a la anterior se denomina "de lógica negativa":

nivel alto de tensión = tensión de fuente = 0 lógico =estado lógico bajo


nivel bajo de tensión = tensión de masa = 1 lógico = estado lógico alto

A lo largo del curso se usará la representación a través de lógica positiva.

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

Figura 1-3: caja negra con una lámpara.

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.

Estado Lámpara Lámpara


lógico L1 L2
00 apagada Apagada
01 apagada encendida
10 encendida Apagada
11 encendida encendida

Figura 1-4: caja negra con dos lámparas.

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.

Nuevamente se incrementa la cantidad de lámparas visibles desde el exterior, siendo ahora


tres, tal como se muestra en la figura 1-5

Estado Lámpara Lámpara Lámpara


lógico L1 L2 32
000 apagada apagada apagada
001 apagada apagada encendida
010 apagada encendida apagada
011 apagada encendida encendida
100 encendida apagada apagada
101 encendida apagada encendida
110 encendida encendida apagada
111 encendida encendida encendida

Figura 1-5: caja negra con tres lámparas.

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.

Ya en este momento se puede hacer una observación:

• 1 lámpara = 2 estados diferentes


• 2 lámparas = 4 estados diferentes
• 3 lámparas = 8 estados diferentes

en forma general

• n lámparas = 2n estados diferentes.

De esta manera, si la caja negra dispone de 4 lámparas, se pueden diferenciar 24=16


situaciones distintas. 16 combinaciones lógicas son suficientes representar con cada una de
ellas los meses del año.

Si la caja negra dispone de 8 lámparas, se pueden diferenciar 28 = 256 situaciones distintas.


256 puede parecer un número suficientemente grande como para representar muchas cosas,
como por ejemplo los símbolos del código ASCII, que incluyen las letras del alfabeto mayúsculas y
Revisión 08 – 2020 5
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

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?

El bit es la unidad de información. Su nombre es la contracción de las palabras inglesas binary


digit (dígito binario) Un bit de información brinda de dos respuestas: SI-NO, 0-1, blanco-negro,
etc. Un interruptor que se abre o se cierra en un circuito eléctrico está procesando información
de 1 bit, de acuerdo a la valoración o asignación que se le dio a cada estado del mismo.

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.

Los grandes sistemas digitales tienen en su interior miles de millones de componentes


llamados transistores, que se comportan como interruptores. Estos interruptores se agrupan de
manera de trabajar en conjunto formando combinaciones lógicas o palabras de n bits. El número
más común de agrupación de interruptores es 8. 8 bits forman un byte. En general se forman
grupos de múltiplos de 8. 16 bits forman una palabra. 32 bits forman una palabra doble. 64 bits
forman una palabra cuádruple.

Resumiendo, los circuitos eléctricos y electrónicos responden a variaciones de tensiones y


corrientes. Los circuitos digitales trabajan solamente con dos niveles de tensión o corriente. Los
niveles de tensión corresponden a los 0V y a la tensión de la fuente de alimentación.
Convencionalmente se le asigna un nombre o valor a cada uno de estos niveles de tensión: 0 o
bajo a los 0V y 1 o alto a la tensión de fuente. Se seleccionó los nombres 0 y 1 porque coinciden
con los dos símbolos del sistema de numeración binario. Así, se dice que los circuitos digitales
procesan números representados en el sistema binario, aunque en realidad solo responden a
niveles de tensión.
Finalmente, dado un proceso, fenómeno físico, químico, matemático, características de
objetos, etc. tales que pueden adoptar múltiples valores diferentes, se le asigna a cada uno una
combinación de 1's y 0's. Estos 1's y 0's se corresponden con niveles de tensión dentro del
circuito digital. Entonces se puede profundizar la afirmación anterior diciendo que los circuitos
digitales son capaces resolver problemas de la vida cotidiana digitalizando la información en
forma de números binarios para luego devolver la respuesta en un lenguaje accesible, aunque en
todo momento estos circuitos solo responden a variaciones de tensión.

1-3 Sistemas de numeración

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

Un sistema de numeración queda definido totalmente cuando se conoce la base y el


repertorio de símbolos. Base es la cantidad de símbolos con que cuenta el sistema de
numeración para representar cualquier número. Repertorio de símbolos es la enumeración de los
mismos, su forma gráfica, orden etc. Por ejemplo, en el sistema de numeración decimal, la base
es 10 y el repertorio de símbolos es 0, 1, 2, 3, 4, 5, 6, 7, 8 y 9. Para evitar confusiones con
frecuencia se utilizan subíndices al final de un número para indicar la base del sistema en que
está expresado. Cuando se trata de un número decimal generalmente se omite este subíndice.
Cada una de las cifras que componen un número tiene un valor absoluto que es el propio de
cada símbolo (su orden por definición dentro del repertorio de símbolos) y un valor relativo que
depende de la posición que ocupa la cifra dentro del número. Así, en los números naturales la
segunda cifra hacia la izquierda tiene un valor del orden de las decenas, la tercera de las
centenas, la quinta de las decenas de mil, etc. Un sistema de numeración con esta propiedad se
denomina posicional. Los números romanos no son un sistema posicional, ya que por ejemplo la
C vale 100 en cualquier posición en que se encuentre dentro del número.
Se dice que un sistema de numeración es más compacto que otro cuando para representar
un mismo número el primero utiliza menos cifras que el segundo.

1-3-3 Teorema fundamental de los sistemas de numeración

Un número cualquiera N expresado en un sistema de numeración de base b, con n cifras


enteras y m cifras fraccionarias puede representarse en el sistema decimal mediante el siguiente
polinomio:

N = a n-1 b n-1 + a n-2 b n-2 + …. + a 1 b 1 + a 0 b 0 + a -1 b -1 + …. + a -m b –m

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

Ej. Para el sistema decimal la base b = 10 y 0 ≤ ai < 10

N = 1549,738 10

Base del sistema: b = 10


Cifras enteras: n = 4
Cifras fraccionarias: m = 3

N = 1 10 3 + 5 10 2 + 4 10 1 + 9 10 0 + 7 10 -1 + 3 10 -2 + 8 10 –3

N = 1000 + 500 + 40 + 9 + 0,7 + 0,03 + 0,008

N = 1549,738 10

1-3-4 Sistema binario o de base 2

El sistema binario es la base del diseño digital, en él la base b = 2 y el repertorio de símbolos


es 0 y 1 ya que

0≤ai<2

Un número en base 2 se expresa en el sistema decimal mediante el polinomio fundamental


reemplazando a b por 2:

N = a n-1 2n-1 + a n-2 2n-2 + …. + a 1 21 + a 0 20 + a -1 2-1 + …. + a -m 2–m

Según la posición que ocupa cada cifra dentro del número binario su valor relativo será:

…. a 4 16 + a 3 8 + a 2 4 + a 1 2 + a 0 + a -1 0,5 + a -2 0,25 + a -3 0,125 + a -4 0,0625 + ….

1-3-4-1 Conversión de un número binario a decimal

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 = 1 27 + 1 26 + 1 25 + 0 24 + 1 23 + 0 22 + 0 21 + 1 20 + 1 2-1 + 0 2-2 + 1 2–3 + 1 2–4

N = 128 + 64 + 32 + 0 + 8 + 0 + 0 + 1 + 0,5 + 0 + 0,125 + 0,0625

N = 233,6875

1-3-4-2 Conversión de un número decimal a binario

Para convertir un número expresado en el sistema decimal al sistema de numeración binaria


existen dos métodos más la combinación de ambos según que el número sea enteros sin parte
fraccionaria, fraccionario con parte entera nula o fraccionario con parte entera deferente de 0
respectivamente.

Revisión 08 – 2020 8
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

• Método para números enteros sin parte fraccionaria:

El método es consiste en dividir sucesivamente al número decimal por la base 2 hasta


que el resultado final sea 0 o 1. Luego el número expresado en binario se forma de la
siguiente manera :
La cifra más significativa o de mayor peso es el resultado de la última división realizada.
Las restantes cifras comenzando por la segunda en orden de importancia se obtienen de
los restos de las sucesivas divisiones partiendo de la última división realizada hacia la
primera.

Para una mayor comprensión del método, en la figura 1-6 se muestra un ejemplo de conversión.

Figura 1-6: Método de conversión de un número decimal entero a binario.

• Método para números fraccionarios con parte entera nula:


Consiste en un proceso iterativo que se repite tantas veces como cifras fraccionarias se
deseen siguiendo los pasos detallados a continuación:

1- Se multiplica el número fraccionario por la base 2.


2- Se examina el resultado de la operación. Si la parte entera es igual a 0, se coloca un
cero a continuación de la cifra ubicada más a la derecha de la coma fraccionaria; si
en el resultado la parte entera fue igual a 1 se coloca un 1.
3- Se elimina la parte entera del resultado de la multiplicación anterior y se repiten los
pasos 1 y 2 tantas veces como cifras fraccionarias se deseen.

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

1-3-4-3 Error de redondeo

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 resolución más pequeña permitida es 0,0625, por lo cual no es posible representar


números entre estos valores decimales si se utiliza una fracción binaria de cuatro bits, por
ejemplo no es posible representar al número 0,9270. El valor más cercano es Xb = 0,1111 =
0,9375, lo cual genera un error de

0,9375 – 0,9270 * 100 = 1,13 %

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.

1-3-5 Sistema octal o de base 8

En el sistema de numeración octal la base b = 2 y el repertorio de símbolos es 0, 1, 2, 3, 4, 5,


6 y 7 ya que

0 ≤ a i< 8

Un número en base 8 se expresa en el sistema decimal mediante el polinomio fundamental


reemplazando a b por 8:

N = a n-1 8n-1 + a n-2 8n-2 + …. + a 1 81 + a 0 80 + a -1 8-1 + …. + a -m 8–m

Según la posición que ocupa cada cifra dentro del número octal su valor relativo será:

.. a 4 4096 + a 3 512 + a 2 64 + a 1 8 + a 0 + a -1 0,125 + a -2 0,15625 + a -3 0,001953 +..

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.

1-3-5-1 Conversión de un número octal a decimal

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 = 7 83 + 6 82 + 3 81 + 4 80 + 7 8-1 + 7 8-2 + 5 8–3 + 1 8–4

N = 3584 + 384 + 24 + 4 + 0,875 + 0,109375 + 9,76 10 –3 + 2,44 10 –4

N = 3996,994410

1-3-5-2 Conversión de un número decimal a octal

Para convertir un número expresado en el sistema decimal al sistema de numeración octal


existen dos métodos o la combinación de ambos según que el número sea entero sin parte
fraccionaria, fraccionario con parte entera nula o fraccionario con parte entera deferente de 0
respectivamente.

• Método para números enteros sin parte fraccionaria:


El método es consiste en dividir sucesivamente al número decimal por la base 8 hasta
que el resultado final sea 0. Luego el número expresado en octal se forma de la siguiente
manera:
La cifra más significativa o de mayor peso es el resultado de la última división realizada.
Las restantes cifras comenzando por la segunda en orden de importancia se obtienen de
los restos de las sucesivas divisiones partiendo de la última división realizada hacia la
primera.

Para una mayor comprensión del método, en la figura 1-7 se muestra un ejemplo de conversión.

Figura 1-7: Método de conversión de un número decimal entero a octal.

• Método para números fraccionarios con parte entera nula:


Consiste en un proceso iterativo que se repite tantas veces como cifras fraccionarias se
deseen siguiendo los pasos detallados a continuación:

1- Se multiplica el número fraccionario por la base 8.


2- Se coloca en la representación octal, a continuación de la cifra más a la derecha de la
coma fraccionaria, la parte entera del resultado de la multiplicación.
3- Se elimina la parte entera del resultado de la multiplicación anterior y se repiten los
pasos 1 y 2 tantas veces como cifras fraccionarias se deseen.

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.

1-3-5-3 Conversión de un número binario a octal

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.

Número binario Símbolo octal


000 0
001 1
010 2
011 3
100 4
101 5
110 6
111 7

Tabla 1-1: equivalencia de números binarios con los símbolos octales.

El método de conversión de binario a octal consiste primero en dividir al número binario en


grupos de tres bits partiendo de la coma fraccionaria hacia la izquierda y la derecha. Luego se
reemplaza cada grupo por su símbolo equivalente octal de acuerdo con lo expresado en la tabla
1-1.

Ej. N = 110101011111,00110101

110 101 011 111,001 101 010


6 5 3 7 , 1 5 2

N = 6537,152 8

1-3-5-4 Conversión de un número octal a binario

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

1-3-6 Sistema hexadecimal o de base 16

En el sistema de numeración hexadecimal la base b = 16. Como la cantidad de símbolos a


usar es mayor que 10, para el repertorio de símbolos hexadecimal se utilizan letras para los seis
símbolos de mayor orden: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E y F .

Un número en base 16 se expresa en el sistema decimal mediante el polinomio fundamental


reemplazando a b por 16:

N = a n-1 16n-1 + a n-2 16n-2 + …. + a 1 161 + a 0 160 + a -1 16-1 + …. + a -m 16–m

Según la posición que ocupa cada cifra dentro del número hexadecimal su valor relativo será:

… a 3 4096 + a 2 256 + a 1 16 + a 0 + a -1 0,0625 + a -2 + 3,906 10 – 6…

El sistema de numeración hexadecimal es más compacto que el sistema binario, octal y


decimal.

1-3-6-1 Conversión de un número hexadecimal a decimal

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.

1-3-6-2 Conversión de un número decimal a hexadecimal

Para convertir un número expresado en el sistema decimal al sistema de numeración


hexadecimal existen dos métodos o la combinación de ambos según que el número sea entero
sin parte fraccionaria, fraccionario con parte entera nula o fraccionario con parte entera
deferente de 0 respectivamente.

• Método para números enteros sin parte fraccionaria:


El método es consiste en dividir sucesivamente al número decimal por la base 16 hasta
que el resultado final sea 0. Luego el número expresado en “hexa” se forma de la
siguiente manera:
La cifra más significativa o de mayor peso es el resultado de la última división realizada.

Revisión 08 – 2020 13
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

Las restantes cifras comenzando por la segunda en orden de importancia se obtienen de


los restos de las sucesivas divisiones partiendo de la última división realizada hacia la
primera.

Para una mayor comprensión del método, en la figura 1-8 se muestra un ejemplo de conversión.

Figura 1-8: Método de conversión de un número decimal entero a hexadecimal.

• Método para números fraccionarios con parte entera nula:


Consiste en un proceso iterativo que se repite tantas veces como cifras fraccionarias se
deseen siguiendo los pasos detallados a continuación:

1- Se multiplica el número fraccionario por la base 16.


2- Se coloca en la representación hexa, a continuación de la cifra más a la derecha de la
coma fraccionaria, la parte entera del resultado de la multiplicación.
3- Se elimina la parte entera del resultado de la multiplicación anterior y se repiten los
pasos 1 y 2 tantas veces como cifras fraccionarias se deseen.

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.

1-3-6-3 Conversión de un número binario a hexadecimal

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

Número Número Símbolo


Decimal binario hexadecimal
0 0000 0
1 0001 1
2 0010 2
3 0011 3
4 0100 4
5 0101 5
6 0110 6
7 0111 7
8 1000 8
9 1001 9
10 1010 A
11 1011 B
12 1100 C
13 1101 D
14 1110 E
15 1111 F

Tabla 1-2: equivalencia de los símbolos hexadecimales con los números decimales y binarios.

El método de conversión de binario a hexa consiste primero en dividir al número binario en


grupos de cuatros bits partiendo de la coma fraccionaria hacia la izquierda y la derecha. Luego se
reemplaza cada grupo por su símbolo equivalente hexadecimal de acuerdo con lo expresado en
la tabla 1-2.

1-3-6-4 Conversión de un número hexadecimal a binario

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.

1-4 Códigos binarios

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

Con m símbolos diferentes y n cifras se forman m x n combinaciones o elementos de un


código. Si se modifican las combinaciones asignadas a cada objeto se crea un nuevo código, por
ejemplo en un código binario a la cantidad 5 le puede corresponder la combinación 101, y en
otro la 011, etc. De esta manera con m símbolos y n cifras se pueden crear mn! códigos
distintos.
En electrónica digital se trabaja con códigos binarios. De todos los posibles códigos binarios
solamente unos pocos tienen real utilidad.
Un código binario se dice que es continuo cuando para un objeto o cantidad cualquiera, la
combinación binaria que le corresponde es lógicamente adyacente con la combinación que le
antecede y con la que le sucede en orden de asignación, es decir entre un elemento del código y
el que le sigue o le precede solamente difieren en el estado de uno de sus bits.
Por otro lado, se dice que un código es cíclico si el último elemento del código es lógicamente
adyacente con el primer elemento.

1-4-1 Código Gray o binario reflejado

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.

Número decimal Código Gray 1 bit


0 0
1 1

Tabla 1-3: código Gray de 1 bit.

Número decimal Código Gray 2 bits


0 00
1 01
2 11
3 10

Tabla 1-4: código Gray de 2 bits.

Número decimal Código Gray 3 bits


0 000
1 001
2 011
3 010
4 110
5 111
6 101
7 100
Tabla 1-5: código Gray de 3 bits.
Revisión 08 – 2020 16
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

1-4-2 Código progresivo Johnson

Este es un código continuo y cíclico en el que con n bits se obtienen 2 n combinaciones


deferentes. La tabla 1-6 presenta el código Johnson de 5 bits.

Símbolo decimal Código Johnson


0 00000
1 00001
2 00011
3 00111
4 01111
5 11111
6 11110
7 11100
8 11000
9 10000

Tabla 1-6: código Johnson de 5 bits.

1-4-3 Códigos BCD (decimal codificado en binario)

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:

Símbolo decimal Código BCD


0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001

Tabla 1-7: código BCD natural.

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.

1-4-3-1 Conversión de un número en BCD a decimal

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

0001 0101 0111 0011


1 5 7 3

N = 1573 10

1-4-3-2 Conversión de un número decimal a BCD

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

1-4-3-3 Conversión de un número binario a BCD y BCD a binario

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.

1-5 Códigos alfanuméricos

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

Código Carácter Código Carácter Código Carácter Código Carácter


ASCII ASCII ASCII ASCII
00 NUL 10 DEL 20 SP 30 0
01 SOH 11 DC1(X-ON) 21 ! 31 1
02 STX 12 DC2(TAPE 22 “ 32 2
03 ETX 13 DC3(X-OFF) 23 # 33 3
04 EOT 14 DC4 24 $ 34 4
05 ENQ 15 NAK 25 % 35 5
06 ACK 16 SYN 26 & 36 6
07 BEL 17 ETB 27 ‘ 37 7
08 BS 18 CAN 28 ( 38 8
09 HT 19 EM 29 ) 39 9
0A LF 1A SUB 2A * 3A :
0B VT 1B ESC 2B + 3B ;
0C FF 1C FS 2C , 3C <
0D CR 1D GS 2D - 3D =
0E SO 1E RS 2E . 3E >
0F SI 1F US 2F / 3F ?

Tabla 1-8: código ASCII de 7 bits.

Código Carácter Código Carácter Código Carácter Código Carácter


ASCII ASCII ASCII ASCII
40 @ 50 P 60 ` 70 P
41 A 51 Q 61 A 71 Q
42 B 52 R 62 b 72 R
43 C 53 S 63 c 73 S
44 D 54 T 64 d 74 T
45 E 55 U 65 e 75 U
46 F 56 V 66 f 76 V
47 G 57 W 67 g 77 w

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)

Tabla 1-8 continuación: código ASCII de 7 bits.

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

2-1 Lógica digital

La lógica es la aplicación metódica de principios, reglas y criterios de razonamiento para la


demostración y derivación de proposiciones. Una proposición es un juicio a cerca de algo. Por
ejemplo “el análisis matemático es complejo”, “la química es interesante”, etc. Cualquier
proposición lógica puede ser falsa o verdadera en el sentido de que sólo indican la validez o
invalidez de un juicio dentro de un marco de razonamiento lógico.
El Álgebra de Boole, llamada así en honor a su creador George Simón Boole, es un lenguaje
simbólico que puede ser aplicado al razonamiento lógico de las relaciones entre proposiciones y
también para describir el funcionamiento de los dispositivos digitales.
La lógica digital es la aplicación del Álgebra de Boole a los circuitos electrónicos que toman
decisiones del tipo “si, entonces”: si sucede tal cosa, entonces una acción en particular resulta.

2-2 Variable binaria o lógica

En las diferentes ciencias, mediante expresiones matemáticas se relacionan variables que


representan magnitudes física (como la velocidad, peso, longitud, etc.), químicas (como la
presión de un gas en un recipiente cerrado, la temperatura), económicas (porcentajes, interés),
etc. Los valores que pueden adoptar estas variables están comprendidos dentro de un campo de
variación que puede tener una amplitud finita o infinita. Además, se dice que una función de
una variable es una regla que permite determinar el valor de otra variable (dependiente) partir
de la primera (independiente) y se escribe de la siguiente manera:

y= f(x) y es una función de la variable x

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í

• Portón abierto = 0, portón cerrado = 1.


• Fotocélula no iluminada = 0, fotocélula iluminada = 1.
• Interruptor desactivado = 0, interruptor activado = 1.

2-3 Función lógica

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.

2-4 Tabla de verdad

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:

Figura 2-1: tabla de verdad del sistema.

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.

2-5 Compuertas lógicas

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.

2-6 Operaciones básicas del Álgebra de Boole

EL álgebra de Boole es una estructura algebraica que consiste en un conjunto de elementos,


operaciones y reglas establecidas para realizar las operaciones con los elementos del conjunto.
Una estructura algebraica binaria es aquella que consta de dos elementos, el 0 y el 1, a los que
se le aplican tres operaciones: el producto y la suma lógica (operaciones AND y OR
respectivamente) y el complemento o negación (NOT).

2-6-1 Función lógica AND o producto lógico

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

El comportamiento de una compuerta AND puede asimilarse al funcionamiento del circuito


eléctrico equivalente mostrado en la figura 2-2. En este circuito la lámpara L se encenderá
(estado lógico 1 o alto) si y sólo si los dos interruptores A y B están cerrados, es decir en estado
1, en cualquier otra combinación de las llaves la lámpara se apagará (estado 0).
Una propiedad de la función AND es la conmutatividad, es decir, si se intercambia el orden de
las variables de entrada el resultado no se altera:

S=A·B=B·A

Esta propiedad se deduce de la tabla de verdad de la función y puede comprobarse mediante


el circuito eléctrico equivalente.
Se puede extender el concepto de producto lógico para más de dos variables. La función AND
para n variables de entrada tendrá una salida igual a 1 cuando todas sus entradas sean 1. La
tabla de verdad de esta función tendrá n columnas correspondientes a las variables de entrada y
2n filas correspondientes a todas las posibles combinaciones de las mismas. Si bien las
compuertas lógicas pueden tener cualquier número de entradas, comercialmente las compuertas
electrónicas AND tienen 2, 3, 4 u ocho entradas.
Una segunda propiedad de la función AND es la asociatividad. Si se tienen tres variables de
entrada A, B, y C se puede formar primero el producto lógico parcial A B y al resultado de este
aplicarle nuevamente el producto lógico con C, obteniendo C (A B). La siguiente ecuación resume
la propiedad:

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.

2-6-2 Función OR o suma lógica

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:

Figura 2-3: función 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

El comportamiento de una compuerta OR puede asimilarse al funcionamiento del circuito


equivalente presentado en la figura 2-3. Allí se observa que la lámpara L se encenderá (estado
lógico 1) siempre que la llave A, la B o ambas a la vez estén cerradas o en estado 1. La única
combinación de las llaves interruptoras en que la lámpara está apagada (estado 0) es cuando
ambas están abiertas o en estado 0.
De la misma manera que para la función AND, la función OR puede extenderse a n variables
de entrada, y su salida será igual a 1 cada vez que alguna o todas sus entradas sean 1. La
función será 0 sólo para el caso en que todas las entradas sean 0. Comercialmente las
compuertas electrónicas OR tienen 2, 3, 4 u ocho entradas.
La función OR también cumple con la propiedad conmutativa:

S=A+B=B+A

y con la propiedad asociativa:

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.

2-6-3 Función NOT o complemento:

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:

Figura 2-4: función NOT.

El comportamiento de una compuerta NOT puede asimilarse al del circuito eléctrico


equivalente que se muestra en la figura anterior. Si se cierra el interruptor (estado 1), la lámpara
se apaga (estado 0) y viceversa.
Cuando se desea representar gráficamente que una variable de entrada o salida está negada,
se agrega un círculo en el terminal correspondiente de la compuerta.

Revisión 08 – 2020 24
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

2-7 Teoremas del Álgebra de Boole

El álgebra booleana describe el comportamiento de las variables binarias que se relacionan


mediante operaciones NOT, OR y AND. Hay algunas identidades básicas que deben recordarse
debido a que simplifican expresiones lógicas complejas. Un problema común en el diseño lógico
es reducir una expresión lógica a su forma “más simple” posible. Esto significa que se desea
implementar una función utilizando el menor número de compuertas posible. A continuación se
presentan algunos teoremas o principios que permiten la simplificación de funciones.

2-7-1 Teorema de dualidad

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.

2-7-2 Identidades NOT

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.

2-7-3 Identidades AND:

La función AND proporciona una serie de identidades basadas en su característica de que


cada vez que una de las variables de entrada es 0, la salida también es 0:

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

2-8 Leyes algebraicas

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)

se evalúa encontrando primero el resultado de la operación

X= B+C

y luego el AND de X con la variable A para llegar al resultado final:

F=A·X

Por otro lado, la expresión:

G=A·B+C

se evalúa encontrando primero el resultado de la operación AND entre A y B:

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

para luego hallar el resultado final realizando la operación OR entre Y y C:

G=Y+C

2-8-1 Leyes distributivas

La primera de las leyes distributivas es:

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)

2-8-2 Teorema de De Morgan:

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

La primera ecuación dice que el complemento de un producto de variables es igual a la suma de


los complementos de cada variable; la segunda de las expresiones dice que el complemento de
una suma de variables es igual al producto de los complementos de cada variable.
El teorema puede extenderse para n variables:

Revisión 08 – 2020 27
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

La demostración matemática del teorema de De Morgan es:

quedando demostrada la igualdad propuesta por De Morgan. La demostración del teorema


utilizando un circuito equivalente es:

De igual manera, partiendo del supuesto inicial, se propone:

La demostración utilizando un circuito equivalente es:

Revisión 08 – 2020 28
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

2-8-3 Otras identidades básicas:

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:

2-9 Otras operaciones lógicas de dos variables

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.

2-9-1 Funciones NAND y NOR

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:

Figura 2-5: función NAND.

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:

En la última expresión se concluye que la función NAND no es asociativa.


Comercialmente vienen compuertas NAND de más de dos entradas, pero sólo son funciones
AND negadas.
La función NOR es el complemento de la función OR, su símbolo eléctrico tabla de verdad,
expresión algebraica y circuito equivalente se presentan en la figura 2-6:

Figura 2-6: función NOR.

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.

Las compuertas NAND y NOR se denominan compuertas universales ya que utilizando


solamente compuertas NAND o NOR se obtienen las tres funciones restantes. Esta propiedad se
demuestra a través del teorema de De Morgan y su dual.

Revisión 08 – 2020 30
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

COMPUERTA UNIVERSAL NAND COOMPUERTA UNIVERSAL NOR

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

Figura 2-7: implementación de funciones mediante compuertas NAND y NOR.

2-9-2 Funciones OR EXCLUSIVA y NOR EXCLUSIVA

La función OR EXCLUSIVA de las variables A y B es 1 cada vez que A o B es 1, pero no ambas a


la vez, en caso contrario es 0. La figura 2-8 muestra su símbolo eléctrico, tabla de verdad y
ecuación algebraica:

Figura 2-8: función OR EXCLUSIVA.

La función OR EXCLUSIVA es conmutativa y asociativa, propiedades que se verifican


construyendo la tabla de verdad para dos y tres variables respectivamente. Las compuertas OR
EXCLUSIVA comparativamente son las más complicadas de construir, es por ello que se
construyen solamente de dos entradas.
La función NOR EXCLUSIVA es el complemento de la función OR EXCLUSIVA, es decir, la salida
es alta cada vez que ambas variables de entrada son iguales. En la figura 2-9 se muestra su
símbolo eléctrico, tabla de verdad y ecuación algebraica:

Revisión 08 – 2020 31
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

Figura 2-9: función NOR EXCLUSIVA.

2-10 Compuertas lógicas especiales

2-10-1 Compuertas lógicas de tres estados

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.

Figura 2-10: compuertas de tres estados.

Revisión 08 – 2020 32
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

2-10-2 Compuertas de colector abierto

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.

Figura 2-11: símbolos eléctricos de las compuertas de colector abierto.

2-10-3 Compuertas Schmitt-trigger

Las compuertas Schmitt-trigger se operan básicamente como las compuertas comunes,


caracterizándose por tener una propiedad llamada histéresis que las hace inmunes al ruido
eléctrico y adecuadas para trabajar con señales digitales no adecuadas.
La figura 2-12 muestra el símbolo eléctrico de las compuertas Schmitt-trigger más comunes
comercialmente.
La característica principal de este tipo de compuertas es que el nivel de tensión que necesitan
en su entrada para que la salida pase de estado bajo a alto es diferente del necesario para pasar
de alto a bajo.
Compuertas SCHMITT - TRIGGER

Figura 2-12: símbolo eléctrico de las compuestas Schmitt-trigger.

2-11 FUNCIONES LÓGICAS

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.

2-11-1 Funciones lógicas

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

ABCD F´= B + CD A F´ F´´= ACD F = A F´+ F´´


0000 1 0 0 0
0001 1 0 0 0
0010 1 0 0 0
0011 1 0 1 1
0100 0 0 0 0
0101 1 0 0 0
0110 0 0 0 0
0111 0 0 1 1
1000 1 1 0 1
1001 1 1 0 1
1010 1 1 0 1
1011 1 1 0 1
1100 0 0 0 0
1101 1 1 0 1
1110 0 0 0 0
1111 0 0 0 0
Tabla 2-1: tabla de verdad y tabla de verdad parcial.

2-11-2 Función equivalente y complemento

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.

2-11-3 Funciones expresadas como sumas de productos o productos de sumas

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:

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


Para simplificar las expresiones de ahora en adelante se escribirá AB cuando se quiere expresar
el producto lógico (A · B). Utilizando las propiedades distributivas, la función se puede expresar en
forma de suma de productos:

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:

En este caso, en el segundo miembro de la ecuación, la operación principal es el producto


lógico, que divide a la expresión en cuatro términos, cada uno de estos términos es una suma
lógica de dos variables.

Ejemplo: sea la función vista en el apartado 2-11-1

F = A (B + CD) + ACD

La función expresada como una suma de términos producto queda

o como producto de términos suma

2-11-4 Forma canónica de una función

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”.

2-11-4-1 Expansión a la forma canónica de una suma de productos lógicos

El método consiste en realizar en cada término de la función la operación AND con un


elemento que no lo altere. Por ejemplo si se tiene

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

2-11-4-2 Expansión a la forma canónica de un producto de sumas lógicas

La expansión se obtiene sumando lógicamente a cada término de la función un elemento que


no lo altere:

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

2-11-5 Numeración binaria y tablas de verdad

Como se dijo con anterioridad, en electrónica digital se utiliza el sistema de numeración


binaria, en el que, sólo se dispone de dos símbolos: 0 y 1. Cualquier número en el sistema
decimal puede ser representado por su equivalente en binario y viceversa. En la tabla 2-2 se
muestra la equivalencia entre los números decimales y binarios desde el 0 hasta el 31.

Nª decimal Nª binario Nª decimal Nª binario


0 00000 16 10000
1 00001 17 10001
2 00010 18 10010
3 00011 19 10011
4 00100 20 10100
5 00101 21 10101
6 00110 22 10110
7 00111 23 10111
8 01000 24 11000
9 01001 25 11001
10 01010 26 11010
11 01011 27 11011
12 01100 28 11100
13 01101 29 11101
14 01110 30 11110
15 01111 31 11111

Tabla 2-2: equivalencia entre números decimales y binarios.

La conveniencia de usar el sistema binario radica en que se puede establecer una


correspondencia entre los dígitos binarios y los estados de cada una de las variables de una
función lógica. En una función de n variables, estas pueden formar 2n combinaciones diferentes.
Si se ordenan convenientemente, las combinaciones de variables coinciden con la numeración
binaria natural. Es necesario aclarar que las combinaciones de variables no representan un
número en sí.
Supóngase que se tiene una función de tres variables A, B y C. Según lo anterior, habrá 23 = 8
combinaciones diferentes. Por una cuestión de orden, siempre se hará corresponder a la variable
A la cifra de mayor orden en el número binario. En la Tabla 2-3 se hace notar la equivalencia
entre la numeración binaria y las diferentes combinaciones formadas por las tres variables:

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

Tabla 2-3: correspondencia entre numeración binaria y combinaciones de variables lógicas.

La tabla de verdad define la función lógica. De la observación de la tabla se extrae la ecuación


de la función como suma de productos canónicos. En el ejemplo de la tabla 2-3, la función es
igual a 1 cuando las variables de entrada adoptan una de las combinaciones correspondientes a
los números 1, 2, 4 y 7. Recordando la identidad booleana

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

para A = 0, B = 0 y C = 1, ABC = 0 0 1 = 1 1 1 = 1. De la misma manera se procede con los


otros términos, quedando la función como sigue

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

En donde se llama m i a los minitérminos correspondientes a la fila i de la tabla de verdad


para la cual la función toma el valor 1. Otra forma muy común de escribir una función lógica es:

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.

De la tabla de verdad de una función, También se puede extraer su expresión en forma de


producto de sumas lógicas. Basta con identificar las combinaciones de las variable de entrada
para las cuales la función es igual a 0 y recordar la identidad

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

Se llamó M i a cada uno de los maxitérminos correspondientes a la fila i de la tabla de verdad


para la cual la función toma el valor 0. Otra forma muy común de escribir una función lógica
como producto de sumas lógicas es:

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.

2-11-6 Pasajes entre formas canónicas

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)

La función F1 = 1 para las combinaciones de entrada 0, 2 y 3; por lo tanto para las


combinaciones 1, 3, 4, 5 y 7 F1 = 0 y la forma producto de sumas de la misma será

Revisión 08 – 2020 39
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

F(A, B , C) = Π (1, 3, 4, 6,7)

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)

La función complemento de F2 es igual a 1 para las combinaciones que no están en la expresión


de F2 como suma de productos

F2(A, B, C) = Σ (0, 1, 2, 5) = Π (3, 4, 6, 7)

2-11-7 Funciones lógicas incompletas

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:

F(A, B, C, D) = Σ (1, 2, 5, 6, 9) + Σ  (10, 11, 14)

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:

F(A, B, C, D) = Π (0, 3, 4, 7, 8, 12, 13, 15) · Π  (10, 11, 14)

2-11-8 Implementación de las funciones lógicas

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.

2-11-8-1 Estructura de dos niveles AND-OR

En la forma canónica suma de productos, cada minitérmino se implementa mediante una


compuerta AND de tantas entradas como variables dependa la función. Una compuerta OR con el
mismo número de entradas como minitérminos (o compuertas AND) hay, realizará la suma lógica
de los mismos. Para el ejemplo de la tabla de verdad 2-3, la implementación de la función con
una estructura AND-OR es:

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

Figura 2-13: implementación AND-OR.

Las compuertas NOT no constituyen un nivel de implementación.

2-11-8-2 Estructura de dos niveles OR-AND

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

Figura 2-14: implementación OR-AND.

2-11-8-3 Formas estándar de implementación:

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

F3(A, B, C) = Σ (1, 3, 4, 6) = Π (0, 2, 5, 7)

La ecuación de F3 como suma de productos es:

A continuación la función F3 se complementa dos veces a F3 de manera que la función no se


altere y se pueda trabajar algebraicamente la ecuación:

Aplicando el teorema de De Morgan al primer complemento se obtiene:

Si se continúa operando algebraicamente se obtienen las ecuaciones correspondientes a las


tres estructuras restantes derivadas de la estructura AND - OR:

Si se resolviera esta última ecuación se obtendría nuevamente a F3 como una estructura AND –
OR.

Para las estructuras derivadas de la estructura OR – AND se trabaja con la ecuación de F3


como producto de sumas canónicas:

F3(A, B, C) = (A+B+C) · (A+B+C) · (A+B+C) · (A+B+C) estructura OR - AND

Igual que en el caso anterior complementando dos veces la función F3 y trabajando


algebraicamente:

Revisión 08 – 2020 42
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

Si se resuelve esta última ecuación, nuevamente se tendrá la ecuación de F3, correspondiente a


una estructura OR – AND. La figura 2-15 presenta las ocho estructuras estándar de
implementación de la función F3.
FORMAS ESTÁNDAR DE IMPLEMENTACIÓN

Implementación AND - OR Implementación OR - AND


A A
B B
C C
A A
B B
C F C F
A A
B B
C C
A A
B B
C C

Implementación NAND - NAND Implementación NOR -


A A NOR
B B
C C
A A
B B
C F C F
A A
B B
C C
A A
B B
C C

Implementación OR - NAND Implementación AND - NOR


A A
B B
C C
A A
B B
C F C F
A A
B B
C C
A A
B B
C C

Implementación NOR - OR Implementación NAND - AND


A A
B B
C C
A A
B B
C F C F
A A
B B
C C
A A
B B
C C

Figura 2-15: ocho estructuras estándar de implementación de la función F3.

Revisión 08 – 2020 43
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

2-11-8-4 Implementación de funciones lógicas mediante la conexión AND cableada

En esta forma de implementación, se usan las compuertas de colector abierto. En la figura 2-


16a se muestra un transistor en configuración “emisor común”, que trabaja al corte y la
saturación. Si en la base se le aplica la tensión de fuente, el transistor conduce y se satura, por lo
tanto en el colector habrá 0 V o un 0 lógico. Por el contrario, si en la base se aplica 0 V, el
transistor se corta teniendo presente en el colector la tensión de fuente que se interpreta como
un 1. En conclusión el transistor trabaja como una compuerta NOT (inversor lógico).
VCC VCC VCC

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

Figura 2-16: compuertas de colector abierto - implementación AND alambrada.

Si en el circuito de la figura 2-16a se elimina la resistencia R, el colector del transistor queda


desconectado o “abierto”. Las compuertas electrónicas denominadas “de colector abierto”
presentan para su salida esta disposición interna, dejando al usuario la instalación de la
resistencia externa, del valor adecuado, de acuerdo a la corriente que maneje el circuito. Esta
resistencia recibe el nombre de “resistor de pull-up”, ya que sirve para mantener la salida en un
nivel alto cuando el transistor de salida no conduce. La característica de las compuertas de
colector abierto permite que se puedan unir sus salidas sin peligro a que se dañen.
El circuito de la figura 2-16a puede asimilarse al funcionamiento de una llave interruptora
cuya apertura o cierre está comandada por el estado lógico de una variable de entrada
(interruptor lógico). La figura 2-16b muestra esta situación, en donde el transistor fue
reemplazado por una llave interruptora.
La figura 2-16c, es el mismo circuito inversor, cuya llave interruptora es comandada ahora por
la salida de una compuerta AND de dos entradas, A y B. El circuito equivale a una compuerta AND
seguida de un inversor, o sea una compuerta NAND: cuando ambas entradas son 1, el interruptor
se cierra y en la salida hay presente un 0, para cualquier otra combinación la salida será 1.
La figura 2-16d muestra dos circuitos como el de la figura 2-16b, con sus salidas unidas. Uno
realiza la función NAND entre las variables A y B y el otro entre C y D. Si se observa
detenidamente el circuito, se ve que si una o ambos interruptores están cerrados (salidas = 0), la
salida es 0. La salida solamente es igual a 1 si ambos interruptores están abiertos (salidas = 1).
Esto significa que la unión de los terminales de salida de los dos circuitos representa una función
AND “virtual” entre ambos. Se dice que es virtual porque en realidad no existe tal compuerta

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.

Supóngase que nuevamente se tiene la función F3:

F3(A, B, C) = Σ (1, 3, 4, 6) = Π (0, 2, 5, 7)


Si se expresa a F3 como producto de sumas y luego se opera algebraicamente la ecuación se
obtiene:

La última expresión es F3 en la forma estándar NAND-AND. La función F3 puede implementarse


usando compuertas NAND de colector abierto se la siguiente manera:

A
B
C
A
B
C F3
A
B
C
A
B
C

Figura 2-17: implementación AND alambrada de F3.

2-12- Simplificación de funciones lógicas

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:

Si se hubiese implementado la función lógica en su forma canónica, hubiera sido necesario


utilizar cuatro compuertas AND de tres entradas, una compuerta OR de cuatro entradas y
además cuatro compuertas NOT. Se ve entonces que si se trabaja algebraicamente la función,
ésta puede simplificarse hasta el punto, en este ejemplo de solamente usar una compuerta
buffer no inversora.
Igualmente, una función puede simplificarse si ésta está expresada como producto de sumas
canónicas. Sea por ejemplo la función F2:

2-12-2 Términos lógicamente adyacentes

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

2-13 Diagramas de Karnaugh

2-13-1 Diagrama de Karnaugh para diferentes números de variables de entrada:

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

Figura 2-18a: Diagrama de Karnaugh para 2 variables

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

Figura 2-18c: Diagrama de Karnaugh para 4 variables

Campo de variación Campo de variación


DE de D y E DE de D y E
00 01 11 10 00 01 11 10
BC BC
00 00
0 1 3 2 16 17 19 18

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

Figura 2-18d: Diagrama de Karnaugh para 5 variables

Revisión 08 – 2020 48
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

Campo de variación de E y F Campo de variación de E y F


EF EF
00 01 11 10 00 01 11 10
CD CD
00 00
0 1 3 2 16 17 19 18

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

Campo de variación de E y F Campo de variación de E y F


EF EF
00 01 11 10 00 01 11 10
CD CD
00 00
32 33 35 34 48 49 51 50

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

Figura 2-18e: Diagrama de Karnaugh para 6 variables

2-13-2 Simplificación de funciones lógicas mediante el diagrama de Karnaugh

La característica esencial de los diagramas de Karnaugh es la distribución de los casilleros.


Casilleros vecinos vertical y horizontalmente (pero no en diagonal) corresponden a maxitérminos
o minitérminos lógicamente adyacentes. Dos casilleros vecinos solo difieren entre sí en el estado
de una de sus variables. Supóngase la función de cuatro variables F3

F3(A, B , C, D) = Σ (0, 5, 7, 8, 10,11)

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

Figura 2-19: Uso del diagrama de Karnaugh - ubicación de 1 en los casilleros.

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:

• Se escriben ceros en los casilleros correspondientes a los maxitérminos.


• La función simplificada es un producto de sumas lógicas.
• Para el estado de las variables de cada término simplificado se usa la convención:
variable negada para estado lógico 1 y variable sin negar para estado 0.

Como ejemplo se simplifica la función F3 expresada como producto de sumas canónicas.

F3(A, B , C, D) = Π (1, 2, 3, 4, 6, 9, 12, 13, 14, 15)

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.

F3 = M1 + M2 + M3 + M4 + M6 + M9 + M12 + M13 + M14 + M15

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.

La simplificación presentada en segundo lugar no es la única, pudiendo hacerse de varias


maneras diferentes. Con el fin de realizar una simplificación más efectiva, entendiéndose con

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.

La figura 2-22 presenta ejemplos de simplificaciones de funciones.

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.

F = m0+ m1 + m3 + m4 + m5 + m9 + m11 + m16 + m17


+ m19 + m25 + m27 + m28 + m31

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

F = m8+ m12 + m18 + m19 + m22 + m23 + m24 + m28 + m40


+ m44 + m50 + m51 + m54 + m55 + m58

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

Figura 2-22c: ejemplo de simplificación de una función de 6 variables.

2-13-3 Simplificación de funciones incompletas

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.

Esta característica de las funciones incompletas es usada para el proceso de simplificación


con los diagramas de Karnaugh:

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.

Si se tiene ahora la función F5 de cuatro variables A, B, C y D:

F5(A, B, C, D) = Σ (3, 4, 8, 9, 15) + Σ (2, 5, 10, 11, 12)

La figura 2-24 muestra la forma de simplificación de F5.

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.

La expresión final de F5 es:

Revisión 08 – 2020 54
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

2-14 Introducción a los lenguajes descriptores de hardware

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.

El circuito sintetizado se “baja” al PLD mediante un dispositivo programador específico.


Comercialmente hay una variedad muy amplia de PLD’s, tales como los CPLD (dispositivos
lógicos programables complejos), FPGA (field programable gate array, matriz o arreglo de
compuertas programables en la aplicación o campo) o los ASIC (circuitos integrados de aplicación
específica)

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

2-14-1 Organización del módulo VHDL


2-14-1 La unidad ENTITY

VHDL organiza la descripción de un circuito o bloque digital en dos unidades principales


llamadas ENTITY y ARCHITECTURE. Existen otras unidades como PACKAGE, PACKAGE BODY y
CONFIGURATION.
En la unidad ENTITY se define el bloque exterior del circuito a describir, es decir como se verá
desde afuera. Se le proporciona un nombre que lo identificará. También se declaran cuántas
entradas y salidas tendrá, sus nombres respectivos y de qué tipo y tamaño son: entradas,
salidas, líneas bidireccionales, buses, etc. La sintaxis de la unidad ENTITY en su forma más
simple es:

ENTITY nombre_del_bloque IS - - Esto es un comentario


GENERIC (parámetro); - - GENERIC es opcional
PORT (Entrada_A, Entrada_b, … : IN STD_LOGIC;
Bus_A, Bus_B, … : IN STD_LOGIC_VECTOR (3 DOWNTO 0);
Bus_salida, … : OUT STD_LOGIC_VECTOR (7 DOWNTO 0);
Salida_A, Salida_B, … : OUT STD_LOGIC ;
Bus_de_datos : INOUT STD_LOGIC_VECTOR (7 DOWNTO 0):
Buffer_A, Buffer_B: BUFFER STD_LOGIC_VECTOR(7 DOWNTO 0));
END nombre_del_bloque;

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.

2-14-1-1 Tipos de puertos de una entidad


Los puertos, terminales o líneas de una unidad ENTITY pueden ser:

IN: línea o señal de entrada.


OUT: línea o señal de salida.
INOUT: línea o señal de entrada o salida. Es una señal que puede ser leída o escrita.
BUFFER: línea o señal de entrada o salida. Es una señal que puede ser leída o escrita.

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.

Ej.: si se declara un puerto como

Buffer_A: IN STD_LOGIC_VECTOR (7 DOWNTO 0)

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

Y luego se le asigna el valor

Buffer_A <= “10011100”

El contenido de Buffer_A queda:

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

Por el contrario, si Buffer_A se hubiera definido como:

Buffer_A: IN STD_LOGIC_VECTOR (0 TO 7)

Y luego se le asigna el valor

Buffer_A <= “10011100”

El contenido de Buffer_A queda:

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:

X: fuerza un estado desconocido de la señal, es sintetizable.


0: fuerza un estado bajo.
1: fuerza un estado alto.
Z: alta impedancia.
W: “despierta” con estado desconocido luego de volver de una condición de bajo consumo
(sleep)”
L: “despierta” con estado bajo.
H: “despierta” con estado alto.
-: no interesa su estado.

Revisión 08 – 2020 58
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

Ejemplo: declaración de un bloque combinacional que sintetiza la función F3 implementada


anteriormente.

ENTITY función_F3 IS
PORT (A, B, C : IN STD_LOGIC;
F3 : OUT STD_LOGIC);
END función_F3;

2-14-2 La unidad ARCHITECTURE

Dentro de la unidad ARCHITECTURE se describe el funcionamiento del bloque declarado en la


unidad ENTITY. Cada unidad ARCHITECTURE está asociada a una única unidad ENTITY. Por el
contrario, una unidad ENTITY puede tener más de una unidad ARCHITECTURE que la describa,
según la conveniencia de la simulación o síntesis se utilizará una u otra.
La sintaxis de la unidad ARCHITECTURE en su forma más simple es:

ARCHITECTURE tipo_arquitectura OF nombre_del_bloque IS

< en esta sección van las declaraciones de señales>


<en esta sección van las declaraciones de componentes>
BEGIN
<en esta sección van las sentencias que definen el funcionamiento
del bloque a sintetizar>
END tipo_arquitectura;

Entre las palabras reservadas ARQUITECTURE y BEGIN, se declaran componentes, señales,


variables entre otros. Todos los objetos declarados en esta sección solo tienen validez dentro de
esta arquitectura y no pueden ser visualizados por otra unidad ARCHITECTURE.
Los componentes son módulos con una funcionalidad definida provenientes de una librería o
descriptos dentro del mismo archivo. Se asemejan a la declaración de funciones en el lenguaje C.
Las señales son conexiones internas entre bloques. Tienen un significado similar a los puertos
declarados en la unidad ENTITY, solo que las señales no tienen salida al exterior. Se pueden
asimilar a cables que interconectan componentes dentro del bloque a describir. Las variables son
espacios para almacenamiento temporal de datos, que no tienen una implementación física.
Señales, variables, componentes y bloques serán estudiados con mayor profundidad en los
siguientes capítulos.
Por otro lado, tipo_arquitectura es un nombre que identifica a la unidad, diferenciándola de
otra que se aplique a una misma unidad ENTITY. Además, el nombre proporciona una idea de la
forma o estilo en que se describirá el circuito. No hay una única forma de descripción de un
circuito. Cada estilo utiliza comandos diferentes.
El nombre_del_bloque hace referencia al bloque declarado en la unidad ENTITY al que estará
asociada la descricpción.
Finalmente entre las palabras reservadas BEGIN y END se describe el circuito mediante los
comandos o sentencias.

Ejemplo: descripción de un bloque combinacional de la función F3.

ARCHITECTURE comportamiento OF función_F3 IS


BEGIN
(NOT A AND NOT B AND C) OR
(NOT A AND B AND C) OR
(A AND NOT B AND NOT C) OR
(A AND B AND NOT C);
END comportamiento;

Revisión 08 – 2020 59
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

La descripción anterior es una transcripción directa de como se escribe la función lógica en


forma algebraica. Otra manera de describir un bloque que funcione de la misma manera es:

ARCHITECTURE comportamiento OF función_F3 IS


SIGNAL ABC : STD_LOGIC_VECTOR (2 DOWNTO 0);
BEGIN
ABC <= A & B & C;
WITH ABC SELECT
F3<= 1 WHEN “001”
1 WHEN “011”
1 WHEN “100”
1 WHEN “110”
0 WHEN OTHERS;
END comportamiento;

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

El tema correspondiente a las familias lógicas de circuitos integrados digitales no es abordada


por el presente apunte debido a su amplitud de temas y el constante cambio de la tecnología. A
continuación se listan los temas que cubren los conocimientos básicos necesarios para el curso y
se sugieren fuentes de información.

Circuitos integrados generalidades:


• Origen
• Tipos de encapsulados
• Escalas de integración
• Actualidad de la tecnología de fabricación de circuitos integrados
• Límites físicos en la fabricación
• Márgenes de ruido y niveles lógicos de tensión.

Familias lógicas de circuitos integrados bipolares y MOS


• Familia TTL, características generales, niveles lógicos, subfamilias TTL.
• Familia CMOS, características generales, niveles lógicos, subfamilias CMOS.
• Familia ECL, características generales, niveles lógicos.
• Diferencias entre familias lógicas, ventajas y desventajas.
• Lectura de una hoja de datos de un circuito integrado.

Dispositivos lógicos programables:


• Dispositivos PLA’s, PAL’s. Implementación de funciones lógicas
• SPLD y CPLD.
• FPGA: bloques lógicos, matriz de conexiones, bloques de entradas-salidas.

Fuentes de información:

1. Sistemas Digitales y Tecnología de Computadores.


José María Angulo Usategui, Javier García Zubía.
Editorial Paraninfo.

2. Diseño de sistemas digitales, un enfoque integrado.


John P. Oyemura.
Editorial Thomson.

3. Técnicas Digitales con Circuitos Integrados.


M. C. Ginzburg.
Editorial Biblioteca Técnica Superior.

4. Fundamentos de lógica digital con diseño VHDL


Stephen Brown - Zvonko Vranesic
Editorial Mc Graw Hill

5. Información en la web, en las páginas de los fabricantes de circuitos integrados.

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

4-1 Conceptos de VHDL. Diseño concurrente

4-1-1 Estilos de descripción VHDL

Las unidades ARCHITECTURE contienen en sí la descripción del funcionamiento del circuito.


Estas pueden hacerse en diferentes estilos o formas. Cada estilo de descripción tiene
características y comandos propios. De cualquier manera, un mismo circuito puede describirse
en cualquier estilo. A lo largo del curso, se desarrollarán las diferentes formas de descripción que
se presentan a continuación.
El estilo flujo de datos se utiliza para descripciones concurrentes o paralelas. En este estilo
aquellas en las que el orden en que aparecen los comandos o sentencias no tiene importancia.
Se aplican a circuitos combinacionales, en los que las salidas responden exclusivamente al
estado de la entrada en el momento considerado. Son propias de este estilo los comandos WITH
– SELECT – WHEN, WHEN – ELSE y GENERATE.
El estilo algorítmico, por el contrario, se usa para describir circuitos secuenciales, en los que sí
importa el orden en que se escriben los comandos. Esta condición se da, por ejemplo, porque
unas entradas tienen prioridades sobre otras, o porque los estados de las salidas están sujetos a
determinados eventos. Son típicos de este estilo los comandos IF – ELSIF – ELSE, FOR – LOOP,
WAIT – FOR, CASE, WHILE, etc. Estas sentencias siempre se deben usar de un proceso, iniciado
con el comando PROCESS. Un circuito combinacional también puede describirse dentro de un
proceso.
Por último, el estilo estructural, se utiliza en diseños de circuitos organizados en forma
jerárquica, para describir el máximo nivel. En este estilo, se hace uso de componentes creados
en niveles de inferior jerarquía. Guarda una parecido con la función main del lenguaje C y el
llamado de funciones de librería o creadas por el usuario.

4-1-2 Diseño concurrente

El lenguaje VHDL en inherentemente concurrente o paralelo. Solo los comandos o sentencias


dentro de un proceso (PROCESS) describen un circuito secuencial. Pero finalmente, el proceso
está dentro de la unidad ACHITECTURE, junto con otros bloques concurrentes. En este capítulo se
estudiarán los comandos concurrentes, que se enumeran a continuación:

• Operadores
• Sentencia WHEN, en sus dos formas: WHEN/ELSE y WITH/SELECT/WHEN.
• Sentencia GENERATE.

4-1-2.1 Operadores lógicos

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;

ARCHITECTURE flujo_de_datos OF full_adder IS


BEGIN
Sn <= Ai XOR Bi XOR Cin;
Cn <= (Ai AND Bi) OR (Ai AND Cin) OR (Bi AND Cin);
END flujo_de_datos;

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.

4-1-2.1.1 Retardos de propagación y de transporte

La misma función Sn del apartado anterior se puede expresar de la siguiente manera

Sn <= Ai XOR Bi XOR Cin AFTER 20 ns;

En esta expresión, el resultado de la operación lógica será transferido al puerto Sn luego de


transcurridos 10 ns posteriores al cálculo del resultado. Este tipo de retardo se llama retardo
inercial. Se utiliza para modelar y simular el comportamiento real de los circuitos digitales
considerando los retardos propios de las compuertas lógicas. El retardo inercial es el retardo por
defecto de VHDL de manera que no es necesario declararlo con ninguna palabra reservada.
Existen otros tipos de retardos como el retardo de transporte.
El retardo de transporte se usa cuando se quiere evaluar el retardo en cables, pistas de
circuitos impresos u otra trayectoria. El retardo de transporte no es la opción por defecto en
VHDL, por lo que debe especificarse mediante la palabra clave TRANSPORT. La expresión de la
función Sn queda

Sn <= TRANSPORT Ai XOR Bi XOR Cin AFTER 20 ns;

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

Figura 4-1: Diferencia entre retardo inercial y retardo de transporte

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.

4-1-2.2 Sentencia WHEN simple y selectiva

La sentencia WHEN es el comando fundamental del diseño concurrente o paralelo. Se puede


utilizar en dos formas: WHEN/ELSE o WITH/SELECT/WHEN.

La sintaxis de la forma simple WHEN/ELSE es:

Salida <= valor1_que_adopta WHEN señal1_o_puerto= condicion1 ELSE


valor2_que_adopta WHEN señal2_o_puerto = condicion2 ELSE
valor3_que_adopta WHEN señal3_o_puerto = condicion3 ELSE
… WHEN … ELSE
Valor_por_defecto;

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;

ARCHITECTURE flujo_de_datos OF codificador IS


BEGIN
Salida <= “11” WHEN E3 = ‘1’ ELSE - - Las asignaciones de un bit
“10” WHEN E2 = ‘1’ ELSE - - van entre comillas simples
“01” WHEN E1 = ‘1’ ELSE - - Las asignaciones de palabras
“00”; - - van entre comillas dobles
END flujo_de_datos;

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.

La sintaxis de la forma seleccionada WITH/SELECT/WHEN es:

WITH control SELECT


Salida_o_señal<= asignación1 WHEN condición1,
asignación2 WHEN condición2,
asignación3 WHEN condición3,
… WHEN …,
asignación_por_defecto WHEN OTHERS;

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:

• Esta estructura admite una sola señal o puerto de control.


• No interesa el orden en que se enumeran los diferentes valores que puede adoptar la
señal de control.
• No proporciona prioridad a la señal de control. Si ésta cumple con alguna de las
condiciones enumeradas, la salida o señal adopta el valor correspondiente, sin
importar el orden en que fueron escritas.
• Deben ser testeadas todas las combinaciones lógicas que puede adoptar la señal de
control.
• Con la sentencia OTHERS se proporciona a la salida una asignación por defecto si la
señal de control no tiene ninguna de las combinaciones enumeradas.

Revisión 08 – 2020 65
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 decodificador BCD a 7 segmentos utilizando la forma


WITH/SELECT/WHEN

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;

ARCHITECTURE flujo_de_datos OF deco_BCD_7seg IS


BEGIN
WITH Ent_BCD SELECT
Salida_7seg <= “1111110” WHEN “0000”, - - 0
“0110000” WHEN “0001”, - - 1
“1101101” WHEN “0010”, - - 2
“1111001” WHEN “0011”, - - 3
“0110011” WHEN “0100”, - - 4
“1011011” WHEN “0101”, - - 5
“0011111” WHEN “0110”, - - 6
“1110000” WHEN “0111”, - - 7
“1111111” WHEN “1000”, - - 8
“1110011” WHEN “1001”, - - 9
“0000000” WHEN OTHERS; -- asignación por defecto
END flujo_de_datos;

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.

4-1-2.3 Sentencia FOR/GENERATE


La estructura FOR/GENERATE permite repetir la descripción de un circuito o porción del
mismo, un número determinado de veces, comúnmente conocido como “instanciaciones”. Esto
proporciona flexibilidad a las descripciones, permitiendo modificar la cantidad de circuitos
instanciados con solo cambiar el valor de un parámetro. Además permite ahorrar líneas de
código, mejorando la legibilidad de la descripción. Tiene su comparación con la los lazos de
control FOR de los lenguajes de computación. En estos, se repite un proceso un número
determinado de veces, mientras que en VHDL se describe el comportamiento de un circuito. La
sintaxis de la estructura FOR/GENERATE es:

Etiqueta: FOR indice IN rango GENERATE


(descripción concurrente del circuito a repetir)
END GENERATE;

Etiqueta es el nombre o identificador del lazo FOR/GENERATE. Índice es el identificador que


lleva la cuenta de las repeticiones de las instanciaciones. Rango es el espectro de valores que va
a tomar el identificador índice. Luego, dentro del cuerpo de la estructura GENERATE, se describe
el circuito o porción de circuito que se va a instanciar repetidas veces.

Revisión 08 – 2020 66
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

El siguiente ejemplo corresponde a la descripción de un multiplexor cuádruple de cuatro


canales:

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;

ARCHITECTURE flujo_de_datos OF _4_mux4 IS


BEGIN

multiplexor: FOR i IN 0 TO 3 GENERATE


Salida(i) <= E0(i) WHEN Seleccion= “00” ELSE
E1(i) WHEN Seleccion= “01” ELSE
E2(i) WHEN Seleccion= “10” ELSE
E3(i) WHEN Seleccion= “11” ELSE
’Z’;
END GENERATE;
END flujo_de_datos;

En el ejemplo anterior, el lazo FOR/GENERATE instancia cuatro multiplexores simples de


cuatro canales a través de una estructura WHEN/ELSE. El contador i tiene un rango de 0 a 3,
totalizando cuatro circuitos a instanciar. Nótese que si ninguna de las condiciones del puerto
Seleccion se cumplen, la salida toma un estado de alta impedancia, indicado como Z.

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.

Figura 4-2: símbolo de un codificador.

A continuación se analizará cómo funciona un codificador mediante un ejemplo de un


codificador de 8 líneas a 3 líneas (codificador octal a binario). La figura 4-3 muestra su símbolo

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.

Figura 4-3: codificador de 8 a 3 líneas.

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

Figura 4-4: esquema interno de un codificador con prioridad.

Para subsanar este inconveniente, se rediseñó el circuito creando un codificador con


prioridad. Ahora las entradas tienen un orden de importancia o prioridad. Si en un determinado
momento están activas las entradas ni y ni+3 la salida del codificador presentará el código que
identifica a la entrada ni+3 ya que ni+3 > ni. La Tabla 4-1 muestra la tabla de verdad de un
codificador de 8 a 3 líneas con prioridad.

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

Tabla 4-1: tabla de verdad de un codificador con prioridad.

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.

4-2-1 Circuitos integrados codificadores

Físicamente los codificadores son componentes electrónicos (circuitos integrados lógicos ) de


escala media de integración construidos con tecnología tanto TTL como CMOS. Algunos de estos
circuitos integrados (CI) incorporan además una serie de terminales de control comunes a otros
CI con funciones diferentes. Las líneas de control más frecuentes son:

• 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.

Un ejemplo práctico de un circuito integrado codificador es el 74LS148, sus características


más sobresalientes son:

• Codificador de 8 a tres líneas (octal a binario) con prioridad.


• Entradas y salidas activas bajas.
• Terminal EI que habilita las entradas en su nivel activo (bajo).
• Terminal EO indicador de que ninguna entrada está activada.
• Terminal GS indicador de que alguna de las entradas está activada.

La figura 4-5 presenta la disposición de pines y tabla de verdad del 74LS148.

Revisión 08 – 2020 69
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

CODIFICADOR OCTAL A BINARIO 74LS148

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

Figura 4-5: codificador 74LS148.

Otros circuitos integrados codificadores son:

TTL: 74LS147 codificador 10 líneas a 4 líneas (decimal a BCD).

CMOS: CD4532 codificador 8 líneas a 3 líneas (octal a binario).


CD40147 codificador 10 líneas a 4 líneas (decimal a BCD).

4-2-2 Descripción VHDL de un codificador

El siguiente es un ejemplo de descripción de un codificador decimal a binario con prioridad:


LIBRARY ieee;
USE ieee.std_logic_1164.all;

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;

ARCHITECTURE flujo_de_datos OF codificador IS


BEGIN
Salida <= “1001” WHEN E9 = ‘1’ ELSE
“1000” WHEN E8 = ‘1’ ELSE
“0111” WHEN E7 = ‘1’ ELSE
“0110” WHEN E6 = ‘1’ ELSE
“0101” WHEN E5 = ‘1’ ELSE
“0100” WHEN E4 = ‘1’ ELSE
“0011” WHEN E3 = ‘1’ ELSE
“0010” WHEN E2 = ‘1’ ELSE
“0001” WHEN E1 = ‘1’ ELSE
“0000”;
END flujo_de_datos;

En este ejemplo, es importante el orden en que se escriben las sentencias. En la descripción


primero se testea el estado de la entrada E9. Si esta está en estado alto, se ignoran los niveles
lógicos de las demás entradas y la salida adopta el valor “1001”. Si E9 tiene un nivel lógico bajo,
el circuito primero considerará el estado de E8, y así sucesivamente. Es necesario recordar una
vez más, que una descripción en VHDL no es un programa que se ejecutará cíclicamente sobre
un microcontrolador y que está preguntando por el estado de las entradas. Nuevamente, una
descripción en VHDL hace uso de sentencias y estructuras conocidas en los lenguajes de
computación, para describir cómo debe funcionar un circuito digital. El resultado de esto es una

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

Son circuitos combinacionales que cumplen la función inversa a la de un codificador. Tienen n


entradas y m salidas con la particularidad que si se ingresa en las entradas una combinación
binaria cualquiera, se activa solamente la salida que identifica esa combinación. En general, para
n entradas la cantidad de salidas es menor o igual a 2n. La figura 4-6 presenta su símbolo
eléctrico, tabla de verdad y esquema interno de un decodificador de 3 a 8 líneas. En este
ejemplo las salidas del decodificador son activas altas.
Tabla de verdad

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

Figura 4-6: decodificador de 3 a 8 líneas.

Revisión 08 – 2020 71
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

4-3-1 Circuitos integrados decodificadores

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).

CMOS: 74C154 decodificador 4 líneas a 16 líneas (binario a hexadecimal).


CD4028 decodificador 4 líneas a 10 líneas (BCD a decimal).
CD4514 decodificador 4 líneas a 16 líneas con latch salidas activas altas
(binario a hexadecimal).
CD4515 decodificador 4 líneas a 16 líneas con latch salidas activas bajas
(binario a hexadecimal).

4-2-2 Decodificadores como generadores de funciones lógicas

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

Figura 4-7: decodificadores como generadores de funciones.

4-3-3 Ampliación de la cantidad de salidas de un decodificador

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.

Figura 4-8: decodificador de 5 a 24 líneas.

Revisión 08 – 2020 73
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

4-3-4 Decodificadores excitadores

Son circuitos diseñados específicamente para funcionar como excitadores (drivers) de


indicadores luminosos alfanuméricos, como son los display de 7 segmentos, LCD, matrices de
LED´s, barras de LED´s, etc. La diferencia fundamental con los decodificadores antes
mencionados es que en éstos solamente una salida estaba activa para una combinación de
entrada, mientras que en los excitadores más de una salida lo está. Además por su construcción
física sus salidas pueden manejar niveles de corriente superiores y ser conectados directamente
a los dispositivos luminosos. Algunos de los CI´s excitadores comercialmente más conocidos son:

TTL: 74LS46, 74LS47, 74LS49 decodificador BCD a 7 segmentos colector abierto.


ánodo común.
8374 decodificador BCD a 7 segmentos cátodo común.
8368 decodificador BCD a 7 segmentos ánodo común.

CMOS: CD4055 decodificador BCD a 7 segmentos.


CD4543 decodificador BCD a 7 segmentos para LCD.
CD4547 decodificador BCD a 7 segmentos para alta corriente.

4-3-5 Descripción VHDL de decodificadores

El siguiente es un ejemplo de descripción de un decodificador binario a octal o de 3 a 8 líneas:

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;

ARCHITECTURE flujo_de_datos OF decodificador_octal IS


BEGIN
WITH Entrada_binaria SELECT
Salida_octal<= “10000000” WHEN “000”,
“01000000” WHEN “001”,
“00100000” WHEN “010”,
“00010000” WHEN “011”,
“00001000” WHEN “100”,
“00000100” WHEN “101”,
“00000010” WHEN “110”,
“00000001” WHEN “111”,
“ZZZZZZZZ” WHEN OTHERS;
END flujo_de_datos;

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.

A continuación se muestra un ejemplo de descripción de un decodificador excitador


Hexadecimal a 7 segmentos:

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;

ARCHITECTURE comportamiento OF decodificador_hexa_7seg IS


BEGIN
WITH ABCD SELECT
abcdefg <= “1111110” WHEN “0000”, - - 0
“0110000” WHEN “0001”, - - 1
“1101101” WHEN “0010”, - - 2
“1111001” WHEN “0011”, - - 3
“0110011” WHEN “0100”, - - 4
“1011011” WHEN “0101”, - - 5
“0011111” WHEN “0110”, - - 6
“1110000” WHEN “0111”, - - 7
“1111111” WHEN “1000”, - - 8
“1110011” WHEN “1001”, - - 9
“1110111” WHEN “1010”, - - A
“0011111” WHEN “1011”, - - B
“1001110” WHEN “1100”, - - C
“0111101” WHEN “1101”, - - D
“1001111” WHEN “1110”, - - E
“1000111” WHEN “1111”, - - F
“0000000” WHEN OTHERS; - - asignación por defecto

END comportamiento;

4-4 Multiplexores

Los multiplexores son sistemas digitales combinacionales selectores de datos. En su forma


más simple, un multiplexor tiene n entradas, m terminales de control y una salida de manera que
2m  n. Cada una de las entradas se denomina también canal. Así, un multiplexor con 16
terminales de entrada es un multiplexor de 16 canales.
Un multiplexor funciona de la siguiente manera: los m terminales de control permiten
seleccionar una y solo una de las n entradas. El dato presente en la entrada seleccionada se verá
reflejado en la única salida. El dato puede ser un estado lógico fijo o un tren de pulsos. El orden
de la entrada seleccionada corresponde al número binario presente en los terminales de control.
El equivalente electromecánico de un multiplexor es una llave selectora mecánica de n
posiciones. La figura 4-9 muestra su símbolo eléctrico y el equivalente electromecánico.

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

Equivalente electromecánico Símbolo eléctrico

Figura 4-9: multiplexor, símbolo eléctrico y equivalencia electromecánica.

De la definición del multiplexor se puede elaborar la tabla de verdad y la ecuación algebraica


de su salida. Por ejemplo para un multiplexor simple de 8 entradas y tres terminales de control
su tabla de verdad y ecuación lógica son:

Terminales de control Salida


C2 C1 C0 S
0 0 0 E0
0 0 1 E1
0 1 0 E2
0 1 1 E3
1 0 0 E4
1 0 1 E5
1 1 0 E6
1 1 1 E7

Tabla 4-2: tabla de verdad de un multiplexor de 8 canales.

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

Figura 4-10: esquema eléctrico de un multiplexor de 8 canales.

4-4-1 Circuitos integrados multiplexores

En la práctica los multiplexores son componentes electrónicos bajo la forma de circuitos


integrados lógicos. Los multiplexores se fabrican tanto en tecnología TTL como CMOS, que
incorporan características adicionales a la función básica de los mismos, como por ejemplo:

• Permitir o inhibir la selección de una entrada, mediante un terminal de habilitación E. En


su estado activo permite el funcionamiento normal del multiplexor, mientras que en su
estado inactivo la salida es mantenida en estado alto, bajo o de alta impedancia según el
modelo de CI de que se trate.
• Mantener en la salida el estado lógico de la última entrada seleccionada aún después de
haber cambiado la combinación de los terminales de selección. Los multiplexores de este
tipo incorporan en su salida un elemento de memoria denominado “latch”.
• Entregar en la salida tanto el estado lógico de la entrada seleccionada como su
complemento.
• Colocar la salida en estado de alta impedancia a través de un terminal de selección para
tal efecto.

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

4-4-1-1 Multiplexor cuádruple de dos canales 74LS157

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

Figura 4-11: multiplexor 74LS157.

Otros CI multiplexores de dos canales cuádruple son:


• 74LS298: incorpora un terminal de “reloj” que permite grabar el último valor del grupo de
entradas seleccionadas.
• 8234: posee dos terminales de control, uno para los canales 0 y 1 y el otro para los
canales 2 y 3.

4-4-1-2 Multiplexor doble de cuatro canales 74LS153

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

Figura 4-12: multiplexor 74LS153.

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.

4-4-1-3 Multiplexor de ocho canales CD4512

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

Figura 4-13: multiplexor CD4512.

Otros CI multiplexores de ocho canales son:

• 74LS151: incorpora dos salidas, una refleja el estado de la entrada actualmente


seleccionada y la otra su complemento.
• 74LS251: tiene idénticas prestaciones que el 74LS151 pero sus salidas son de tres
estados.

4-4-1-4 Multiplexor de dieciséis canales 74LS150:

Este multiplexor tiene salidas complementadas y terminal de inhibición de entradas. Cuando


el CI está inhabilitado su salida permanece en estado alto. La versión de tres estados de este CI
es el 8219.

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

Figura 4-14: multiplexor 74LS150.

4-4-2 Extensión de la capacidad de un multiplexor

Mediante el uso de los terminales de control y multiplexores de diferentes números de


entradas se puede ampliar la cantidad de canales, es decir se pueden construir multiplexores de
cualquier cantidad de canales de entrada. La figura 4-15muestra un ejemplo de un multiplexor
de 32 canales construido a partir de multiplexores de 8 canales y cuatro canales simples.

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

Figura 4-15: ampliación del número de canales de un multiplexor.

4-4-3 Generación de funciones lógicas con multiplexores

Una aplicación interesante de los multiplexores es la de servir como generadores de


funciones lógicas. Supóngase que se tiene la función lógica

F(A, B , C, D) = Σ (3, 4, 9, 11, 12, 15)

Para la implementación de la función lógica se usará un multiplexor de 16 canales y la misma


se lleva a cabo conectando a un nivel alto todas las entradas del multiplexor cuyo orden coincide
con el orden de los minitérminos de la función. Las restantes entradas se colocan a un nivel bajo
y corresponden a los maxitérminos de la función. En la figura 4-16a se muestra la
implementación de la función.

Revisión 08 – 2020 80
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

F (A, B, C, D) = m3 + m4 + m9 + m11 + m12 + m15

+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

Figura 4-16: implementación de una función lógica mediante multiplexores.

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

Se ve que si se toma el grupo de combinaciones 1-9 y 7-15 la función adopta el valor de la


variable de mayor peso. Para el resto de los grupos de combinaciones la salida adopta el estado
0 o 1 en ambos casos. Teniendo en cuenta estas consideraciones la función se implementa
como muestra en la figura 4-16b.

Revisión 08 – 2020 81
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

4-4-4 Descripción VHDL de multiplexores

A continuación se muestra un ejemplo de descripción de un multiplexor simple de 4 canales:

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;

ARCHITECTURE flujo_de_datos OF multiplexor_4_a_1 IS


BEGIN
WITH Selecion SELECT
Salida<= Canal_1 WHEN “01”,
Canal_3 WHEN “11”,
Canal_0 WHEN “00”,
Canal_2 WHEN “10”,
‘Z’ WHEN OTHERS;
END flujo_de_datos;

Obsérvese que en la descripción se escribió en forma desordenada el testeo de los valores de la


señal de control. La razón de ello es resaltar el hecho de que se trata de una descripción
concurrente, en la que no interesa el orden en que aparecen los comandos.

Se verá a continuación el uso de parámetros dentro de la unidad ENTITY. Esta es una


característica muy poderosa de los HDL. Para mostrar su aplicación, se modificará la descripción
anterior del multiplexor simple de cuatro canales, para obtener una descripción más flexible en la
que la cantidad de bits o ancho de palabra de cada canal dependa del valor de un parámetro.

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;

ARCHITECTURE flujo_de_datos OF multiplexor_4_a_1 IS


BEGIN
WITH Selecion SELECT
Salida<= Canal_0 WHEN “00”,
Canal_1 WHEN “01”,
Canal_2 WHEN “10”,
Canal_3 WHEN “11”,
Canal_0 WHEN OTHERS;
END flujo_de_datos;

Mediante la palabra reservada GENERIC se declara un parámetro tipo entero igual a 4


llamada “ancho”. Con este parámetro se fija el ancho de palabra de cada canal del multiplexor.
Nótese la flexibilidad que brinda este recurso frente al dibujo tradicional del circuito eléctrico

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 son sistemas digitales combinacionales distribuidores de datos. En su


forma más simple, un demultipleor tiene una entrada, n salidas y m terminales de control, de
manera que 2m  n. Como en el caso de los multiplexores, cada salida se denomina canal.
Un demultiplexor cumple la función inversa a la del multiplexor: los m terminales de control
permiten seleccionar mediante una combinación binaria una y solo una de las n salidas. El dato
presente en la entrada se verá reflejado en la salida seleccionada cuyo orden corresponde al de
la combinación ingresada. El equivalente electromecánico de un demultiplexor es una llave
selectora mecánica de m posiciones. La figura 4-17 muestra su símbolo eléctrico y el equivalente
electromecánico.

Figura 4-17: demultiplexor, símbolo eléctrico y equivalente electromecánico.

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

Figura 4-18: composición interna de un demultiplexor.

Revisión 08 – 2020 83
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

La ecuación lógica de cada salida es:

S0 = C1 C2 E0
S1 = C1 C2 E1

S2 = C1 C2 E2

S3 = C1 C2 E3

4-5-1 Circuitos integrados demultiplexores

Comercialmente los demultiplexores se fabrican tanto en tecnología TTL como CMOS y de un


variado número de canales. A continuación se detallan algunos de ellos a modo de ejemplo:

4-4-1-1 Demultiplexor doble cuatro canales 74LS155


En este CI las salidas que no son seleccionadas tienen un estado lógico alto. El primer
demultiplexor presenta en la salida seleccionada el complemento del dato presente en su
entrada, mientras que el segundo demultiplexor refleja el dato de su entrada sin complementar.
Esta característica permite usarlo como un demultiplexor simple de 8 canales.
74LS155

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

A B 1Y0 1Y1 1Y2 1Y3 2Y0 2Y1 2Y2 1Y3


0 0 C1 1 1 1 C2 1 1 1
0 1 1 C1 1 1 1 C2 1 1
1 0 1 1 C1 1 1 1 C2 1
1 1 1 1 1 C1 1 1 1 C2

Figura 4-19: demultiplexor 74LS155.

Otros CI demultiplexores dobles de cuatro canales son: CD455, CD4556 y 74LS139.

4-5-1-2 Demultiplexor simple de ocho canales 74LS138

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

Figura 4-20: demultiplexor 74LS138.

4-5-1-3 Demultiplexor simple de dieciséis canales 74LS154

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

D C B A G2 Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 Y8 Y9 Y10 Y11 Y12 Y13 Y14 Y15


X X X X 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 G1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 1 0 1 G1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 0 1 0 0 1 1 G1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 0 1 1 0 1 1 1 G1 1 1 1 1 1 1 1 1 1 1 1 1
0 1 0 0 0 1 1 1 1 G1 1 1 1 1 1 1 1 1 1 1 1
0 1 0 1 0 1 1 1 1 1 G1 1 1 1 1 1 1 1 1 1 1
0 1 1 0 0 1 1 1 1 1 1 G1 1 1 1 1 1 1 1 1 1
0 1 1 1 0 1 1 1 1 1 1 1 G1 1 1 1 1 1 1 1 1
1 0 0 0 0 1 1 1 1 1 1 1 1 G1 1 1 1 1 1 1 1
1 0 0 1 0 1 1 1 1 1 1 1 1 1 G1 1 1 1 1 1 1
1 0 1 0 0 1 1 1 1 1 1 1 1 1 1 G1 1 1 1 1 1
1 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 G1 1 1 1 1
1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 G1 1 1 1
1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 G1 1 1
1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 G1 1
1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 G1

Figura 4-21: demultiplexor 74LS154.

Combinando demultiplexores de diferentes números de canales se puede extender la


capacidad de los mismos.

Revisión 08 – 2020 85
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

4-5-2 Demultiplexores como decodificadores


Un demultiplexor puede ser usado como decodificador. Para explicar esto supóngase que
dispone de un demultiplexor cuyos canales están en estado alto cuando no son seleccionados
(salidas activas bajas). Se puede convertir en un decodificador de 8 canales activos bajos
conectando la entrada del demultiplexor a 0 lógico.
Igualmente, un decodificador se puede utilizar como demultiplexor, usando las entradas de
código como entradas de selección de canal y el terminal de habilitación como entrada de datos.
Por ejemplo si se tiene un decodificador con salidas activas bajas y se lo quiere usar como
demultiplexor, deseando transmitir un 0 al canal 5, se ingresa la combinación 5 en las entradas
de código y se habilita el CI. Por el contrario, si lo que se desea transmitir es un 1, se inhibe el CI,
de esta manera la salida pasa a su estado inactivo 1.
La figura 4-22a muestra un demultiplexor usado como decodificador con salidas activas
bajas: cuando uno de los canales es seleccionado mediante los terminales de control A B C D, la
salida correspondiente se coloca a nivel bajo debido a que la entrada fue puesta a 0 V, el resto
de las salidas permanece en estado alto.
La 4-22b muestra a un decodificador con salidas activas bajas empleado como demultiplexor
con salidas activas altas: las líneas de habilitación del CI, G1 y G2B fueron puestas al nivel de
tensión de fuente y 0 V respectivamente, preseleccionándolo. El tercer terminal de habilitación
G2A se usa como entrada del demultiplexor. Cuando se ingresa una combinación a los
terminales de selección A B C, en la salida correspondiente habrá un 1 si en el terminal G2A hay
un 1 (el CI está de esta forma inhibido y todas sus salidas se colocan a estado alto), o un 0 si en
G2A hay un 0 (el CI queda habilitado y la salida pasa a estado 0 ya que es activa baja).

+ 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

Fig. 4-22a Fig. 4-22b

Figura 4-22: demultiplexores como decodificadores y viceversa.

4-5-3 Descripción VHDL de un demultiplexor

El siguiente es un ejemplo de descripción de un demultiplexor de 1 canal a 8 canales en estilo


flujo de datos:

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

ARCHITECTURE flujo_de_datos OF demultiplexor_1_a_8 IS


SIGNAL auxiliar : STD_LOGIC_VECTOR (0 TO 7)
BEGIN
WITH Seleccion SELECT

auxiliar <= “0000000” & Ent WHEN “000”,


“000000” & Ent &’0’ WHEN “001”,
“00000” & Ent & “00” WHEN “010”,
“0000” & Ent & “000” WHEN “011”,
“000” & Ent & “0000” WHEN “100”,
“00” & Ent & “00000” WHEN “101”,
“0” & Ent & “000000” WHEN “110”,
Ent & “0000000” WHEN “111”,
“ZZZZZZZZ” WHEN OTHERS;

Salida <= auxiliar;


END flujo_de_datos;

El símbolo umpersand (&) es un operador de concatenación en VHDL. Concatenación es una


relación o asociación. En este ejemplo, auxiliar es una señal de 8 bits de ancho de palabra. El
operador & se usa para unir dos o más elementos para que el ancho final de palabra
corresponda con el definido para el dato considerado. En este caso, todas las asignaciones a la
señal auxiliar deben tener 8 bits.

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 Conceptos de VHDL. Atributos. Procesos. Estilo algorítmico.

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.

5-1-2 Estructura PROCESS


Un proceso se describe dentro de un bloque o estructura PROCESS, caracterizado por el uso
de un grupo de comandos propios, tales como IF-THEN-ELSE-ELSIF, WAIT, CASE o LOOP-FOR.
A las descripciones de este tipo es común nombrarlas como algorítmicas, para hacer referencia a
que su comportamiento es secuencial.

La estructura PROCESS tiene la siguiente sintaxis:

Nombre_proceso: PROCESS (lista de sensibilidad)


VARIABLE nombre_var tipo [rango] [:= valor_inicia] -- Declaración
- - de variables (opcional)
BEGIN
(código secuencial)
END PROCESS Nombre_proceso; - - opcional nombre de proceso

El proceso comienza con el nombre que lo identifica y que mejora la legibilidad de la


descripción. A continuación de la palabra reservada PROCESS, y entre paréntesis, va la lista de
sensibilidad. En esta lista se enumeran todas las señales o puertos que provocan el
funcionamiento de esta porción de circuito cada vez que se produce un cambio de estado en
ellos.
Entre las palabras reservadas PROCESS y BEGIN, se declaran las variables. Las variables son
formas de representar datos, pero que no se implementan físicamente como conexiones. Son de
uso auxiliar para la descripción del proceso y tienen validez solo dentro de él. A diferencia de las
señales, a las variables se les puede asignar valores muchas veces dentro del proceso, y su
acción es inmediata. La declaración de variables es opcional.
La descripción secuencial se escribe entre las palabras reservadas BEGIN y END PROCESS. Al
finalizar el proceso no es necesario la colocación del nombre del proceso.

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

El comando IF permite implementar una toma de decisión en el funcionamiento del circuito


sobre una valoración del estado de una señal, puerto o variable. El significado y estructura es
similar a la de los lenguajes informáticos. La sintaxis es:

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;

Obsérvese el comportamiento secuencial de la descripción: si la condición evaluada en el


comando IF se cumple, funcionará la parte del circuito descripta a continuación de THEN. Las
restantes líneas son ignoradas, con lo que se establece una prioridad. Si la evaluación fue
negativa, entonces el circuito implementado dará prioridad a la siguiente señal a testear.
A través del comando ELSIF es posible seguir evaluando otras condiciones de los mismos
objetos o de otros muchas veces más. Finalmente, si ninguna de los testeos dio resultado
verdadero, mediante el comando ELSE, se describe la porción de circuito que funcionará bajo
esta condición.
El siguiente ejemplo muestra el uso de la estructura IF en la descripción de un codificador
con prioridad de cuatro líneas a dos líneas:

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;

ARCHITECTURE algoritmica OF codificador_4_a_2 IS


BEGIN
cod: PROCESS (E0, E1, E2, E3)
BEGIN
IF (E3 =’1’) THEN
Salida <= “11”;
ELSIF (E2 =’1’) THEN
Salida <= “10”;
ELSIF (E1 =’1’) THEN
Salida <= “01”;
ELSIF (E0 =’1’) THEN
Salida <= “00”;
ELSE
Salida <= “ZZ”;
END IF;
END PROCESS cod;
END algoritmico;

Revisión 08 – 2020 89
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

5-1-3 Comando CASE

El comando CASE permite la implementación de toma de decisiones sobre la valoración de


una señal, puerto o variable que admiten múltiples valores. Tiene una interpretación similar a la
sentencia SWITCH – CASE del lenguaje C. Su sintaxis es:

CASE señal_variable_o_puerto_a_evaluar IS

WHEN valor_1 => asignaciones si se cumple la condición valor_1 ;


WHEN valor_2 => asignaciones si se cumple la condición valor_2 ;

WHEN OTHERS => asignaciones por defecto si no se cumple ninguna condición ;

END CASE;

La sentencia CASE es similar al comando WHEN de las descripciones concurrentes. Al igual


que en estas, se deben evaluar todas las opciones. Así, la palabra reservada OTHERS agrupa
todas las opciones del dato a evaluar que no se enumeraron anteriormente dentro de la
estructura CASE. Una diferencia con WHEN es que CASE permite múltiples asignaciones en cada
caso evaluado, mientras que WHEN solo admite una asignación.
El siguiente ejemplo muestra la descripción de un decodificador excitador BCD a 7 segmentos:

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;

ARCHITECTURE algoritmico OF decodificador_BCD_7segmentos IS


BEGIN
Deco_7seg:PROCESS (ABCD)
BEGIN
CASE ABCD IS
WHEN “0000” => abcdefg <= “1111110”;
WHEN “0001” => abcdefg <= “0110000”;
WHEN “0010” => abcdefg <= “1101101”;
WHEN “0011” => abcdefg <= “1111001”;
WHEN “0100” => abcdefg <= “0110011”;
WHEN “0101” => abcdefg <= “1011011”;
WHEN “0110” => abcdefg <= “1011111”;
WHEN “0111” => abcdefg <= “1110000”;
WHEN “1000” => abcdefg <= “1111111”;
WHEN “1001” => abcdefg <= “1110011”;
WHEN OTHERS => abcdefg <= “0000000”;
END CASE;
END PROCESS;
END algoritmico;

Revisión 08 – 2020 90
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

5-1-4 Comando FOR - LOOP

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:

FOR indice IN valor_inicial_y_final_o rango l LOOP


(código con sentencias secuenciales);
END LOOP;

El siguiente ejemplo muestra nuevamente la descripción de un multiplexor simple de cuatro


canales, de ancho de palabra variable usando el comando GENERIC:

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;

ARCHITECTURE algoritmico OF multiplexor_4canales IS


BEGIN
mux:PROCESS (seleccion, canales)
BEGIN
FOR i 0 TO N-1 LOOP
CASE selecion IS
WHEN “00” => salida(i) <= canal_0(i);
WHEN “01” => salida(i) <= canal_1(i);
WHEN “10” => salida(i) <= canal_2(i);
WHEN “11” => salida(i) <= canal_3(i);
WHEN OTHERS => salida(i) <= ‘Z’;
END CASE;
END LOOP;
END PROCESS;
END algoritmico;

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

5-1-5 Comando WAIT

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.

5-1-5-1 Estructura WAIT – UNTIL

La sintaxis de WAIT – UNTIL es:

WAIT UNTIL (condición_señal_o_puerto)

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;

ARCHITECTURE algoritmico OF registro IS


BEGIN
reg:PROCESS - - No se necesita lista de sensibilidad
BEGIN
WAIT UNTIL ( reloj ‘EVENT AND reloj = ‘1’)
IF (reset = ‘1’) THEN
salida <= “00000000”;
ELSIF (reloj ’EVENT AND reloj =’1’) THEN
salida <= entrada
END IF;
END PROCESS;
END algoritmico;

5-1-5-2 Estructura WAIT – ON

La sintaxis de WAIT – ON es:

WAIT ON señal_1, señal_2, señal_3….;

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);

ARCHITECTURE algoritmico OF registro IS


BEGIN
reg:PROCESS - - No se necesita lista de sensibilidad
BEGIN
WAIT ON reloj, reset;
IF (reset = ‘1’) THEN
salida <= “00000000”;
ELSIF (reloj ’EVENT AND reloj =’1’) THEN
salida <= entrada
END IF;
END PROCESS;
END algoritmico;

5-1-5-3 Estructura WAIT - FOR


La sintaxis de WAIT – FOR es:

WAIT FOR periodo_de_tiempo;

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’;

5-2 Introducción a la aritmética binaria

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

5-3 Representación de números binarios con signo

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:

5-3-1 Magnitud verdadera y signo

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.

Ej. 2: n = 8 4510 = 0 0 1 0 1 1 0 12 ; -4510 = 1 0 1 0 1 1 0 12

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.

5-3-2 Complemento a uno o complemento a la base menos 1

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.

Ej.: para n = 8 +11610 = 0 1 1 1 0 1 0 02

-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.

5-3-3 Complemento a dos o complemento a la base

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

5-3-4 Criterio de exceso o sesgo

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á

2n-1 = 24-1 = 8 o 2n-1 – 1 = 24-1 – 1 = 7

Se puede ahora armar la siguiente tabla de codificación:

Nª en decimal Codificación sesgo = 8 Codificación sesgo = 7


-8 0000 --------
-7 0001 0000
-6 0010 0001
-5 0011 0010
-4 0100 0011
-3 0101 0100
-2 0110 0101
-1 0111 0110
0 1000 0111
1 1001 1000
2 1010 1001
3 1011 1010
4 1100 1011
5 1101 1100
6 1110 1101
7 1111 1110
8 -------- 1111

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:

Para sesgo = 8, a 5 le corresponde 1101, y a – 5 le corresponde el complemento a 1 de 4 que


es 0011.
El método de sesgo o exceso se usa en la representación de números con coma flotante para
expresar los exponentes. Cuando se trabaja con números con coma flotante, para poder
sumarlos o restarlos ambos números deben tener el mismo exponente. Es necesario entonces
comparar los exponentes para saber si son iguales o deferentes. La tarea de comparación se
facilita usando el criterio de sesgo o exceso. En este método los exponentes con signo positivo
quedan representados con números cuyo valor absoluto es mayor que los exponentes de signo
negativo.

5-4 Representación de números con coma flotante

La principal desventaja de la representación de números fraccionarios binarios con coma fija


es la limitación en la cantidad de números binarios que se pueden representar con n cifras. Esto
conlleva el desaprovechamiento de los circuitos digitales matemáticos. Por ejemplo, si se trabaja

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.

Ej.: en el sistema decimal B = 10

2,25 104 = 0,0225 106 = 225.000 10 -1 = etc….

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:

• Si la coma se corre a la izquierda el exponente aumenta tantas unidades como lugares se


movió la coma.
• Si la coma se corre a la derecha el exponente disminuye tantas unidades como lugares se
movió la coma.

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.

Formato de precisión sencilla

32 bits

S Exponente E Mantisa M

1 bit 8 bits en exceso 127 23 bits

Revisión 08 – 2020 97
Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

Formato de doble precisión

64 bits

S Exponente E Mantisa M

1 bit 11 bits en exceso 1023 52 bits

Figura 5-1: Representación de números binarios con coma flotante según la IEEE.

El bit S corresponde al signo de la mantisa, si S= 0 la mantisa es positiva, si S=1 es negativa.


El campo correspondiente al exponente está expresado en sesgo o exceso 2n-1 – 1 para
facilitar la comparación de dos números antes de realizar una operación aritmética. Para el caso
de la precisión simple es de 8 cifras permitiendo valores de exponente de -126 a +127 (-127 se
considera 0 absoluto y +128 infinito). Para la doble precisión el exponente variará desde -1022
a +1023 (-1023 es el cero absoluto y +1024 es infinito).
La norma IEEE exige que la mantisa esté normalizada, lo que implica que el bit más
significativo siempre es 1, por lo que no es necesario incluirlo en el campo de la mantisa y éste
contiene íntegramente la parte fraccionaria. La mantisa está expresada en el formato de
magnitud verdadera y signo.
El formato de coma flotante de simple precisión permite representar números 10-38 a 10+38
aproximadamente.
El formato de coma flotante de doble precisión permite representar números 10-308 a 10+308
aproximadamente.

5-4-1 Pasaje de un número decimal al formato binario de punto flotante

Para representar un número expresado en el sistema decimal mediante el formato binario de


punto flotante se procede de la siguiente manera:

• Convertir el número expresado en el sistema decimal a binario natural utilizando los


métodos estudiados en el capítulo 1, en el apartado 1-3-4-2 y 1-3-4-3.
• Normalizar el número binario obtenido corriendo la coma hacia la derecha o izquierda e
incrementando o decrementando el exponente respectivamente tantas unidades como
posiciones se desplazó la coma.
• Representar el exponente resultante en el formato de exceso o sesgo 2n-1 – 1. Recuérdese
que el método consiste en tomar el valor absoluto del exponente y se le suma el sesgo,
que en este caso será 127 o 1023 según que se use el formato de precisión simple o el
de doble precisión respectivamente.
• Finalmente se escribe el número final obtenido según el formato establecido por la IEEE.

Ej. 1:

Representar el número 79,67310 al estándar IEEE 754

• Conversión del número decimal a binario natural,

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

1° iteración 0,673 x 2 = 1,346 0,12


2° iteración 0,346 x 2 = 0,692 0,102
3° iteración 0,692x 2 = 1,384 0,1012
4° iteración 0,384 x 2 = 0,768 0,10102
5° iteración 0,768 x 2 = 1,536 0,101012
6° iteración 0,536 x 2 = 1,072 0,1010112
7° iteración 0,072 x 2 = 0,144 0,10101102
8° iteración 0,144 x 2 = 0,288 0,101011002
9° iteración 0,288 x 2 = 0,576 0,1010110002
10° iteración 0,576 x 2 = 1,152 0,10101100012
11° iteración 0,152 x 2 = 0,304 0,101011000102
12° iteración 0,304 x 2 = 0,608 0,1010110001002
13° iteración 0,608 x 2 = 1,216 0,10101100010012
14° iteración 0,216 x 2 = 0,432 0,101011000100102
15° iteración 0,432 x 2 = 0,864 0,11010110001001002
16° iteración 0,864 x 2 = 1,728 0,1110101100010010012
17° iteración 0,728 x 2 = 1,456 0,11101011000100100112
18° iteración 0,456 x 2 = 0,912 0,1111010110001001001102
19° iteración 0,912 x 2 = 1,824 0,11110101100010010011012
20° iteración 0,824 x 2 = 1,648 0,111101011000100100110112
21° iteración 0,648 x 2 = 1,296 0,1111010110001001001101112
22° iteración 0,296 x 2 = 0,592 0,11110101100010010011011102
23° iteración 0,592 x 2 = 1,184 0,111101011000100100110111012

número binario compuesto

79,67310 = 1001111, 111101011000100100110111012

• Expresión del número obtenido en formato de punto flotante y normalización

79,67310 = 1001111, 111101011000100100110111012 20

Normalización

1,001111111101011000100100110111012 26

• Cálculo del exponente para precisión simple, sesgo 127

Exponente = 6 + 127 = 133,

expresado en sesgo 2n-1 – 1 100001012

• Representación del número en el formato IEEE754


Para obtener la mantisa se toman las 23 cifras más significativas a la derecha de la coma
y se desprecian los restantes

0 100 0010 1 001 1111 1110 1011 0001 0010

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

• Conversión del número decimal a binario natural,

300.00010 = 100 1001 0011 1110 00002

• Expresión del número obtenido en formato de punto flotante y normalización

300.00010 = 100 1001 0011 1110 00002 20


Normalización

1,0010 0100 1111 1000 002 218

• Cálculo del exponente para precisión simple, sesgo 127

Exponente = 18 + 127 = 145,

expresado en sesgo 2n-1 – 1 100100012

• Representación del número en el formato IEEE754


Para obtener la mantisa se toman las 23 cifras más significativas a la derecha de la coma
y las cifras faltantes se completan con ceros

Mantisa: 0010 0100 1111 1000 0000 000

El número completo en el formato IEEE754 queda

0 10010001 00100100111110000000000

Expresado en hexadecimal

48927C00H

Ej. 3:
Convertir el siguiente número expresado en el formato de punto flotante al decimal

49260400H = 0 10010010 01001100000010000000000

Signo de la mantisa: 0, el número positivo.

Exponente 10010010 = 146 entonces 146 – 127 = 19

Mantisa: 1,01001100000010000000000

El número es 1,010011000000100000000 x 219 =


10100110000001000000,00 x 20

En decimal

N10= 1 219 + 1 217 + 1 214 + 1 213 + 1 26 = 524288 + 131072 + 16384 + 8192 +64
N10= 68000010

Revisión 08 – 2020 100


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

Ej. 4: Convertir el siguiente número expresado en el formato de punto flotante al decimal


384521DDH = 0 01110000 10001010010000111011101

Signo de la mantisa: 0, el número es positivo.

Exponente 01110000 = 112 entonces 112 – 127 = -15

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

5-5 Suma de números en el sistema binario

La suma de números binarios es similar a la suma de números en el sistema decimal.


Recordar el procedimiento ayudará a comprender la forma en que se construirá un circuito
sumador.
En la suma, los sumandos se colocan uno debajo del otro alineando las columnas
correspondientes a las cifras de igual orden de magnitud. Luego se comienza sumando las cifras
de la columna de menor orden y se continúa en orden ascendente hacia la izquierda sumando
las columnas de mayor orden. En cada columna se pueden producir desbordes, que ocurren
cuando la suma excede el valor del mayor de los símbolos del sistema usado. En decimal, hay
desborde cuando la suma excede 9. Por el contrario en binario hay desborde cuando la suma es
mayor que 1, máximo símbolo de este sistema. Estos desbordes se denominan “acarreo, o carry”
en inglés.

Revisión 08 – 2020 101


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

Suma de dos números mediante la representación en complemento a 2


El método de complemento a dos es el más usado de los tres vistos en los apartados
anteriores debido a las ventajas que presenta, ya que permite realizar tanto sumas como restas
con un mismo circuito.

La operación aritmética de la resta puede considerarse como un caso particular de la suma


algebraica de números con signos. Así:

165 – 386 puede representarse como +165 + (-386)

con lo que la resta se transformó en una suma. A continuación se presentan algunos ejemplos de
sumas algebraicas en complemento a 2:

• Suma de dos números positivos; el resultado es otro número positivo. El procedimiento es


idéntico al visto previamente, solo que ahora se usa la representación 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.

Revisión 08 – 2020 102


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

• 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:

• Suma de un número positivo y otro negativo de mayor valor absoluto; el resultado es un


número negativo.

El bit de signo es 1 indicando que el resultado es negativo expresado en complemento a dos. Si


se aplica nuevamente el complemento a dos se obtiene la expresión de +61, corroborando que el
resultado es correcto.

• Suma de dos números negativos; el resultado es un número negativo.

Descartando el bit ubicado más a la izquierda, el resultado es correcto, expresado en


complemento a 2.

Revisión 08 – 2020 103


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

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.

5-6 Circuitos sumadores y restadores

5-6-1 Circuito semisumador

El circuito sumador más sencillo es el semisumador, capaz de producir en su salida el


resultado de la suma de dos bits, sin considerar el acarreo. Este circuito tiene dos entradas A y B
y dos salidas S y C, suma y acarreo respectivamente. La tabla de verdad del semisumador se
muestra en la tabla 5-2:

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

Las expresiones de la función suma y acarreo son:

La implementación del circuito semisumador se muestra en la figura 5-2.

Semisuma

A
S
B

Figura 5-2: semisumador.

5-6-2 Circuito sumador completo o full adder

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:

Revisión 08 – 2020 104


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

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:

Cn-1 An Bn Suma Sn Acarreo Cn


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

Tabla 5-3

La expresión algebraica de la suma Sn es:

La función lógica del acarreo Cn-1 es

Cn (An, Bn , Cn-1) = Σ (3, 5, 6, 7)

Utilizando el diagrama de Karnaugh se simplifica la función, quedando finalmente

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.

Figura 5-3: sumador total.

Revisión 08 – 2020 105


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

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

5-6-3 Circuito sumador paralelo con acarreo serie

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

Revisión 08 – 2020 106


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

Sumador paralelo 4 bits

Cin Cn-1 4tp


S S0
Sumador
A0 A
total
Cn
B0 B

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

Figura 5-4: sumador paralelo con acarreo serie de 4 bits.

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.

A continuación se muestra un ejemplo de suma en donde se produce un acarreo en cada etapa:

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.

Revisión 08 – 2020 107


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

Figura 5-5: sumador paralelo con acarreo serie de 8 bits.

La gran desventaja de este circuito es el retardo de propagación de los acarreos series,


cuando el tamaño de los números a sumar aumenta.

5-6-4 Circuitos generadores de acarreo anticipado

El sumador paralelo estudiado en el apartado anterior adolece de una limitación en la


velocidad de funcionamiento debido a que el acarreo se propaga en serie desde la primera a la
última etapa en el peor de los casos. Para salvar esta dificultad se han creado los circuitos
generadores de acarreo anticipado, cuya función es producir el bit de acarreo simultáneamente
en todas las etapas, con lo cual la velocidad se mejora notablemente.
Cuando se estudió el sumador total, se dedujo que la expresión del acarreo producido por
este bloque era:

Cn = Cn-1 (An + Bn) + AnBn

Se llamará generador del acarreo Gn al término

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:

Revisión 08 – 2020 108


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

C0 = Cent P0 + G0

C1 = C0 P1 + G1 = (Cent P0 + G0) P1 + G1 = Cent P0P1+ G0P1 + G1

C2 = (Cent P0P1+ G0P1 + G1) P2 + G2 = Cent P0P1P2+ G0P1P2 + G1P2 + G2

C3 = (Cent P0P1P2+ G0P1P2 + G1P2 + G2) P3 + G3 =

= Cent P0P1P2P3 + G0P1P2P3 + G1P2P3 + G2P3 + G3

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.

Revisión 08 – 2020 109


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

Sumdor de 4 bits con acarreo anticipado

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

Sumador 1 bit con generador de acarreo anticipado

Figura 5-6: generador de acarreo anticipado de 4 bits.

Revisión 08 – 2020 110


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

Sumador 4 bits con acarreo anticipado

Cin

4 A0-3 S0-3 4
Sumador
P
4 bits LAC
4 B0-3 G

Cout

Figura 5-7: sumador LAC de 4 bits.

Sumador de 16 bits con acarreo anticipado

Cin

A0-3 4 A0-3 S0-3 4 S0-3


Sumador
P
4 bits LAC
B0-3 4 B0-3 G

Cout

Cin

A4-7 4 A0-3 S0-3 4 S4-7


Sumador
P
4 bits LAC
B4-7 4 B0-3 G

Cout

Cin

A8-11 4 A0-3 S0-3 4 S8-11


Sumador
P
4 bits LAC
B8-11 4 B0-3 G

Cout

Cin

A0-3 4 A0-3 S0-3 4 S12-15


Sumador
P
4 bits LAC
B0-3 4 B0-3 G

Cout

Figura 5-8: sumador LAC de 16 bits.

5-6-5 Circuito sumador-restador

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

Revisión 08 – 2020 111


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

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

Figura 5-9: sumador / restador de 4 bits.

5-6-6 Descripción en VHDL de sumadores

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;

ARCHITECTURE comportamiento OF sumador_total_1bit IS


BEGIN
S <= Cin XOR A XOR B;
Cout <= (A AND B) OR (A AND Cin) OR (B AND Cin);
END comportamiento;

Revisión 08 – 2020 112


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

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

SIGNAL A, B: STD_LOGIC_VECTOR(15 DOWNTO 0);

se puede sintetizar un sumador de 16 bits escribiendo

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;

ARCHITECTURE comportamiento OF sumador_16bits IS


SIGNAL suma_intermedia: STD_LOGIC_VECTOR(16 DOWNTO 0);
BEGIN
suma_intermedia <= (‘0’ & X) + Y + Cin;
S <= suma_intermedia(15 DOWNTO 0);
Cout <= suma_intermedia(16);
Desborde <= suma_intermedia(16) XOR X(15) XOR Y(15) XOR suma_intermedia(15)
END comportamiento;

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

S <= suma_intermedia(15 DOWNTO 0);

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.

Revisión 08 – 2020 113


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

Finalmente, el desborde del sumador responde a la función lógica

Como no es posible en esta descripción acceder al bit de acarreo Cn-1, se lo construye mediante
la función lógica

5-7 Circuitos multiplicadores

El proceso de multiplicación en el sistema binario es idéntica al del sistema decimal, aunque


más simple ya que solo es necesario conocer dos tablas de multiplicar: la tabla del 0 y la del 1. El
método consiste en ubicar multiplicando y multiplicador uno debajo del otro, con sus cifras de
igual orden de magnitud en la misma columna. Luego se realizan sucesivas iteraciones, en las
que se toma una cifra del multiplicador y se multiplica por cada una de las cifras del
multiplicando, colocando los resultados abajo. En la siguiente iteración, se repite el proceso
utilizando ahora la siguiente cifra en orden de magnitud del multiplicador, y desplazando una
columna hacia la izquierda los resultados obtenidos. Al finalizar las iteraciones, se suman los
resultados parciales de cada columna y se obtiene el resultado final. El siguiente ejemplo ilustra
el proceso de multiplicación de dos números binarios:
Ej.:

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.

Revisión 08 – 2020 114


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

cada cifra del producto final P es igual a:

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:

Figura 5-10: Bloque multiplicador básico.

Utilizando bloques multiplicadores básicos se puede implementar un circuito multiplicador para


el ejemplo anterior de dos números de 4 bits. El circuito final queda:

Revisión 08 – 2020 115


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

Figura 5-11: Multiplicador de 4 bits.

5-8 Comparadores de magnitud

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:

A B A=B A>B A<B


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

Tabla 5-4.

Revisión 08 – 2020 116


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

La figura 5-12 muestra el circuito resultante de un comparador de 1 bit.

Figura 5-12: comparador de 1 bit.

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:

• A es mayor que B si su cifra más significativa es mayor que la correspondiente de B, o si


ambas son iguales, la cifra menos significativa de A es mayor que la de B. La ecuación de
la salida A > B será:

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

• A es menor que B si su cifra de mayor peso es menor que la correspondiente de B, o si


ambas son iguales, la cifra menos significativa de A es menor que la de B. La ecuación de
la salida A < B es:

m2 = m 1 + I1 m0

Teniendo en cuenta estas ecuaciones se implementa el circuito comparador para números de


dos bits, utilizando dos comparadores de un bit más algunas compuertas adicionales. La
figura 5-13 muestra el circuito resultante y el símbolo lógico.

Revisión 08 – 2020 117


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

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

Figura 5-13: comparador de 2 bits.

Siguiendo un razonamiento similar, se puede construir un comparador de magnitud para


números de 4 cifras utilizando 2 comparadores de 2 bits y una red combinacional idéntica al
circuito de la figura 5-13.
Para construir comparadores de magnitud de mayor tamaño, generalmente se
interconectan bloques comparadores de 4 u 8 bits, que poseen entradas auxiliares que
permiten expandir el tamaño. El CI 74LS85 es un comparador de magnitud de 4 bits con estas
características. La figura 5-14 presenta su tabla de verdad y símbolo lógico. En ella se observa
que las entradas auxiliares tienen efecto solamente cuando los bits que compara el CI son
iguales.
74LS85
10
12 P0
P1
13 P2
15 P3
2 7
P<Q P<Q
3 6
P=Q P=Q
4 5
P>Q P>Q
9
Q0
11 Q1
14 Q2
1
Q3

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

Figura 5-14: comparador de 4 bits 74LS85.

Revisión 08 – 2020 118


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

5-8-1 Descripción VHDL de un comparador de magnitud

Para la descripción del circuito comparador de magnitud se usará el mismo método de


observación de los bits de igual orden, comenzando por los de mayor magnitud hasta llegar a los
menos significativos si fuera necesario. El uso del comando GENERIC le proporcionará a la
descripción flexibilidad en la elección del ancho de palabra de los números.

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;

ARCHITECTURE algoritmico OF comparador_nbits IS


BEGIN
comp: PROCESS(A, B)
VARIABLE igual, mayor: STD_LOGIC;--Las variables son como señales dentro de un proceso
BEGIN
igual:=’1’; -- Se inicializan las variables antes de comenzar cada proceso
mayor:=’0’;
FOR i IN N-1 DOWNTO 0 LOOP -- Lazo de comparación
IF (A(i) > B(i)) THEN
igual:=’0’;
mayor:=’1’;
EXIT;
ELSIF (A(i) <B(i)) THEN
igual:=’0’;
mayor:=’0’;
EXIT;
END IF;
END LOOP;
Iguales<=igual;
A_mayor_B <= mayor;
END PROCESS;
END algoritmico;

El lazo FOR – LOOP implementa N circuitos comparadores de 1 bit. Las comparaciones se


realizan en paralelo. La descripción en estilo secuencial junto con el comando EXIT, le
proporciona a cada comparador instanciado un orden de magnitud. Así, el resultado de la
comparación de los bits de mayor orden tiene prioridad por sobre los de orden inferior, fijando el
resultado.

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.

Revisión 08 – 2020 119


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

5-9 Generadores y detectores de paridad

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:

• Paridad par de unos: el número de unos en la palabra es par.


• Paridad impar de unos: el número de unos en la palabra es impar.
• Paridad par de ceros: el número de ceros en la palabra es par.
• Paridad impar de ceros: el número de ceros en la palabra es impar.

La compuerta utilizada para la generación del bit de paridad es la OR EXCLUSIVA. La figura 6-


15 muestra un circuito generador / detector de paridad impar de unos para 4 bits.

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

Generador paridad impar 1

Figura 5-15: generador / detector de paridad de 4 bits.

El CI 74LS180 es un generador / detector de paridad de 8 bits con entradas de selección del


tipo de paridad y salidas auxiliares para conexión en cascada.
Una última acotación a cerca de los generadores de paridad es que éstos no solucionan el
tema de la transmisión de datos, porque solamente detectan si hubo un error en uno de los bits.
Si en la transmisión variaron dos bits el circuito no es capaz de detectar esta situación.

5-10 Unidad aritmético – lógica (ALU)

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

Revisión 08 – 2020 120


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

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

Operaciones lógicas Operaciones aritméticas


M=1 M=0
S3 S2 S1 S0 Cn = X Cn = 1 Cn = 1

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

Figura 5-16: ALU 74LS181.

Revisión 08 – 2020 121


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

CAPÍTULO 6
CIRCUITOS RETENEDORES Y FLIP-FLOPS

6-1 Conceptos de VHDL. Estilo estructural, component y packages

6-1-1 Estilo estructural


El estilo estructural es una forma de descripción jerárquica en la que se hace uso de bloques
simples que fueron creados en otras descripciones. Así, el proyecto tiene la forma de un árbol, en
la que hay un archivo de descripción principal, que enlaza o llama a otros de menor orden. Esta
forma de trabajo tiene su parecido con la forma de programación estructurada de los lenguajes
de computación como C. En esta analogía, la descripción principal equivale a la función main de
C y los bloques de orden jerárquico inferior a las funciones.
Los bloques simples deben ser declarados dentro de la arquitectura principal antes de ser
utilizados, tal como se declaran las funciones en lenguaje C. La declaración se lleva a cabo
mediante el comando COMPONENT.

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:

Nobre_de_instanciación: nombre_de_componente PORT MAP (lista_de_puertos)

En donde, nombre_de_instanciación es una etiqueta que identifica el llamado del bloque o


componente. Nombre_de_componente es el nombre que identifica al componente a llamar,
declarado en COMPONENT. La lista_de_puertos que sigue a palabras reservadas PORT MAP son
las señales o puertos de la descripción principal que se conectan a los respectivos puertos del
componente a instanciar. Esto último, tiene su analogía al pase de parámetros de una función en
lenguaje C. Allí, desde el programa principal se transfieren variables a sus correspondientes
variables del tipo local dentro de la función. Es necesario notar que en la lista_de_puertos se
deben enumerar las señales o puertos en el mismo orden en que se declararon cuando se
describió el componente. De otra manera, se puede llegar a asignar en forma incorrecta puertos
o señales.
El siguiente es un ejemplo muy simple de descripción jerárquica de una función lógica. En
primer lugar se describen los módulos de orden inferior y luego se llamarán desde la descripción
principal. La función F1 es:

F1 (A, B, C) = Σ (1, 2, 4)

Revisión 08 – 2020 122


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 minitermino_1 IS - - Descripción del minitérmino 1


PORT (A, B, C: IN STD_LOGIC;
S: OUT STD_LOGIC);
END minitermino_1;

ARCHITECTURE flujo_de_datos OF minitermino_1 IS


BEGIN
S<= NOT A AND NOT B AND C;
END flujo_de_datos;

LIBRARY ieee;
USE ieee.std_logic_1164.all;

ENTITY minitermino_2 IS - - Descripción del minitérmino 2


PORT (A, B, C: IN STD_LOGIC;
S: OUT STD_LOGIC);
END minitermino_2;

ARCHITECTURE flujo_de_datos OF minitermino_2 IS


BEGIN
S<= NOT A AND B AND NOT C;
END flujo_de_datos;

LIBRARY ieee;
USE ieee.std_logic_1164.all;

ENTITY minitermino_4 IS - - Descripción del minitérmino 4


PORT (A, B, C: IN STD_LOGIC;
S: OUT STD_LOGIC);
END minitermino_4;

ARCHITECTURE flujo_de_datos OF minitermino_4 IS


BEGIN
S<= A AND NOT B AND NOT C;
END flujo_de_datos;

LIBRARY ieee;
USE ieee.std_logic_1164.all;

ENTITY compuerta_OR3 IS - - Descripción del compuerta OR tres entradas


PORT (A, B, C: IN STD_LOGIC;
S: OUT STD_LOGIC);
END compuerta_OR3;

ARCHITECTURE flujo_de_datos OF compuerta_OR3 IS


BEGIN
S<= A OR B OR C;
END flujo_de_datos;

Revisión 08 – 2020 123


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 funcion_F1 IS - - Descripción de la función en estilo estructural


PORT (A, B, C: IN STD_LOGIC;
F1: OUT STD_LOGIC);
END function_F1;

ARCHITECTURE estructural OF function_F1 IS


COMPONENT minitermino_1 IS - - declaración del bloque minitérmino 1
PORT (A, B, C: IN STD_LOGIC;
S: OUT STD_LOGIC);
END COMPONENT;

COMPONENT minitermino_2 IS - - declaración del bloque minitérmino 2


PORT (A, B, C: IN STD_LOGIC;
S: OUT STD_LOGIC);
END COMPONENT;

COMPONENT minitermino_4 IS - - declaración del bloque minitérmino 4


PORT (A, B, C: IN STD_LOGIC;
S: OUT STD_LOGIC);
END COMPONENT;

COMPONENT compuerta_OR3 IS - - declaración del bloque compuerta OR3


PORT (A, B, C: IN STD_LOGIC;
S: OUT STD_LOGIC);
END COMPONENT;

SIGNAL S1, S2, S4: STD_LOGIC;


BEGIN
Minterm1: minitérmino_1 PORT MAP (A, B, C, S1);
Minterm2: minitérmino_2 PORT MAP (A, B, C, S2);
Minterm3: minitérmino_3 PORT MAP (A, B, C, S4);
Comp_OR: compuerta_OR3 PORT MAP (S1, S2, S4, F1);
END estructural;

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:

Revisión 08 – 2020 124


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;

PACKAGE nombre_de_encapsulado IS
(Declaraciones de componentes, funciones, procesos, tipos de datos ,etc.);
END nombre_de_encapsulado;

PACKAGE BODY nombre_de_encapsulado IS


(descripción de FUNCTION y PROCEDURE si fueron declarados en la primera parte);
END nombre_de_encapsulado;

La biblioteca llamada work representa el directorio de trabajo donde se almacena el código de


VHDL en el que se definió el paquete. El nombre_de_encapsulado corresponde a la identificación
que se le va a dar al componente dentro de la librería. Luego, dentro del cuerpo de PACKAGE se
declaran las partes que forman el componente, tales como COMPONENT, FUNCTION,
PROCEDURE, o declaraciones de tipos de datos. En el caso de que la declaración incluya
FUNCTION o PROCEDURE, es necesario agregar un segundo cuerpo compuesto por PACKAGE
BODY. Allí se detallan la función o proceso.
Tomando el ejemplo simple usado para COMPONENT, se creará ahora mediante PACKAGE
todos los componentes que forman la descripción de la función. Por razones simplicidad, no se
detallan las descripciones de cada uno de los bloques, ya vistas en el anterior ejemplo.

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;

COMPONENT minitermino_2 IS - - encapsulado del minitérmino 2


PORT (A, B, C: IN STD_LOGIC;
S: OUT STD_LOGIC);
END COMPONENT;

COMPONENT minitermino_4 IS - - encapsulado del minitérmino 4


PORT (A, B, C: IN STD_LOGIC;
S: OUT STD_LOGIC);
END COMPONENT;

COMPONENT compuerta_OR3 IS - - encapsulado del compuerta OR3


PORT (A, B, C: IN STD_LOGIC;
S: OUT STD_LOGIC);
END COMPONENT;
END bloques_simples;

Revisión 08 – 2020 125


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;
USE work.bloques_simples.all; - - Declaración de uso de la librería bloques_simples

ENTITY funcion_F1 IS - - Descripción de la función en estilo estructural


PORT (A, B, C: IN STD_LOGIC;
F1: OUT STD_LOGIC);
END function_F1;

ARCHITECTURE estructural OF function_F1 IS


SIGNAL S1, S2, S4: STD_LOGIC;
BEGIN
Minterm1: minitérmino_1 PORT MAP (A, B, C, S1);
Minterm2: minitérmino_2 PORT MAP (A, B, C, S2);
Minterm3: minitérmino_3 PORT MAP (A, B, C, S3);
Comp_OR: compuerta_OR3 PORT MAP (S1, S2, S3, F1);
END estructural;

La diferencia principal con el ejemplo usando declaración de componentes es que la


descripción de orden jerárquico superior queda más clara y legible. Nótese que se debe incluir
mediante USE, la librería work.bloques_simples, donde se guardaron los componentes creados
con anterioridad.

En el siguiente ejemplo se describe un sumador de 4 bits en estilo estructural a partir de un


sumador full adder de 1 bit instanciado 4 veces.

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;

ARCHITECTURE comportamiento OF sumador_total_1bit IS


BEGIN
S <= Cin XOR A XOR B;
Cout <= (A AND B) OR (A AND Cin) OR (B AND Cin);
END comportamiento;

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:

Revisión 08 – 2020 126


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;
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;

ARCHITECTURE estructural OF sumador_total_4bit IS


SIGNAL C1, C2, C3: STD_LOGIC;
BEGIN
etapa0: sumador_total_1bit PORT MAP(Cin, A0, B0, C1, S0);
etapa1: sumador_total_1bit PORT MAP(C1, A1, B1, C2, S1);
etapa2: sumador_total_1bit PORT MAP(C2, A2, B2, C3, S2);
etapa3: sumador_total_1bit PORT MAP(C3, A3, B3, Cout, S3);
END estructural;

6-2 Introducción a los biestables


En muchos sistemas digitales es necesario “recordar o memorizar” el estado de una o más de
sus variables de entrada o intermedias para luego usar estos valores en procesos futuros. Este
tipo de función es cumplida por circuitos denominados “celdas de memoria”. Una celda de
memoria solamente puede guardar el estado de una variable o bit, mientras que un grupo de
ellas puede almacenar el estado de todo un grupo de bits, comúnmente llamado palabra.

6-3 Biestables, retenedores o cerrojos

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

complemento de la otra. La denominación S y R proviene de las palabras inglesas set y reset


respectivamente y hacen alusión a la función que cumple cada una. Cuando la entrada S se
activa (set:

Por otro lado, si la entrada R es la que se activa (reset: restablecer), será la salida Q la que
pasa a

allí el nombre de reset.

Revisión 08 – 2020 127


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

6-3-1-1 Cerrojo SR con compuertas NOR

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

Figura 6-1: cerrojo SR NOR.

A continuación se verá como funciona el cerrojo SR NOR analizando cada una de las posibles
combinaciones de las entradas.

Revisión 08 – 2020 128


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

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.

6-2-1-2 Cerrojo SR con compuertas NAND

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.

Circuito eléctrico 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

Figura 6-2: cerrojo SR NAND.

De la observación de la tabla de verdad se deduce que el cerrojo SR NAND se comporta en


forma opuesta al cerrojo SR NOR: el estado de retención es S = R = 1, mientras que el estado
prohibido es S = R = 0. Además para activar o desactivar la salida Q, es necesario hacer S = 0 y R
= 1 o S = 1 y R = 0 respectivamente. En conclusión, el cerrojo SR NAND tiene entradas activas
bajas.

Revisión 08 – 2020 129


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

6-3-2 Relojes y sincronización

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

y da el número de ciclos o repeticiones que tiene el reloj en un segundo y su unidad de medida


es el Hertz (Hz). La figura 6-3 presenta una señal de reloj teórica y una real.

Semiciclo activo Semiciclo pasivo

V
1
t [seg]

0
Periodo T
Señal de reloj teórica

Flanco ascendente Flanco descendente

V
1
t [seg]

0
Periodo T

Señal de reloj real

Figura 6-3: señal de reloj teórica y real.

El empleo de una señal de reloj para controlar el funcionamiento de un elemento de memoria


brinda la posibilidad de controlar los tiempos en que el valor de los datos puede guardarse en el
dispositivo. Además, la información es procesada paso a paso con cada ciclo de reloj. Si por
alguna causa el reloj se detiene, todo el sistema lo hace, quedando congelado en un estado
determinado.

Revisión 08 – 2020 130


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

6-3-3 Cerrojo SR sincronizado

La figura 6-4 muestra un cerrojo SR NOR sincronizado por una señal de reloj:

Figura 6-4: cerrojo SR NOR sincronizado.

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.

6-3-4 Cerrojo tipo D sincronizado

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.

Revisión 08 – 2020 131


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

El cerrojo D, también denominado “latch” (latch = cerrojo), es la mínima celda de memoria,


capaz de almacenar el estado de una variable o bit.

6-3-5 Limitaciones de los cerrojos sincronizados

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

Figura 6-6: limitaciones de los cerrojos sincronizados.

Inicialmente Q1 = Q2 = 0 y S1 = 1 y R1 = 0. En el instante t0 se produce la transición de 0 a 1


del reloj, habilitando las entradas del cerrojo 1 y 2. Como el cerrojo 1 está en el estado “set”, su
salida Q1 pasará, luego de un retardo de propagación tp, del estado 0 al 1.
Para el cerrojo 2, la situación en t0 es de “reset”, ya que Q1 = S2 = 0 y Q1 = R2 =1, por lo
tanto luego de retardo de propagación su salida Q2 = 0.
En una situación ideal, ambos cerrojos deberían mantenerse en estos estados hasta la
llegada del siguiente ciclo de reloj, en t1. En ese momento, tanto las entradas del cerrojo 1 como
las del 2 se hallan en estado set, por lo tanto, luego de tp, sus salidas serían Q1 = Q2 = 1.
Los eventos mencionados en el párrafo anterior, son una situación ideal. La realidad es que
el estado activo del clock tiene una duración mucho mayor que el tiempo de propagación del
cerrojo 1, permitiendo que el cerrojo 2 responda al cambio en las salidas del cerrojo 1 luego de
tp2, debido a que ambos cerrojos aún están habilitados. En consecuencia, el dato presente en S1
pasó las dos etapas en un solo ciclo de reloj.
Una posible solución sería acortar la duración del semiciclo activo del reloj hasta que sea
menor que el tiempo de propagación típico del cerrojo. Esto no es siempre posible entre otras
cosas porque el retardo de propagación es de muy corta duración (decenas de nanosegundos) y
se corre el riego que los cerrojos no se habiliten correctamente en tan breve lapso de tiempo.
La solución más eficaz es la utilización de un dispositivo que no sea “transparente”, es decir
que el dato presente en la entrada no se refleje en la salida hasta que no se complete el ciclo de
reloj. Este tipo de dispositivos se denomina cerrojos maestro – esclavo o simplemente flip-flops.

Revisión 08 – 2020 132


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

6-4 Flip-flops

6-4-1 Flip-flop maestro - esclavo (master - slave)

Este es un circuito lógico de almacenamiento no transparente, lo que significa que el valor


presente en la salida no se relaciona con el valor que actualmente se halla en la entrada.
Básicamente consta de dos cerrojos sincronizados, uno denominado “maestro o master” y el otro
“esclavo o slave”, la figura 6-7 muestra su esquema interno.
El cerrojo maestro tiene accesible los terminales S y R que constituyen las entradas del flip-
flop. Los estados presentes en S y R son reconocidos durante el primer semiciclo del reloj (CK =
1). Las salidas Q y Qnegado del maestro gobiernan las entradas del cerrojo esclavo, denominado
así porque sigue las variaciones que le dicta el maestro. La señal de reloj del esclavo es el
complemento de la aplicada al maestro. Los estados presentes en sus entradas son reconocidos
durante el segundo semiciclo del reloj (CK = 0).
Con esta configuración se logra que los datos en la entrada sean considerados en el estado
alto del reloj y sacados por las salidas en el estado bajo.
Cerrojo MAESTRO Cerrojo ESCLAVO
Set
S
Q

Q
R
Reset
CK

Se habilitan las entradas del maestro


CK
1 Se inhiben las entradas del maestro

t [seg]

Se aisla al maestro del esclavo Se habilitan las entradas del esclavo

Figura 6-7: cerrojo maestro-esclavo.

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.

6-4-2 Entradas directas o asincrónicas

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.

Revisión 08 – 2020 133


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

Entrada directa SET


Sd
Set
S
Q

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

Provoca un SET inicial Provoca un RESET inicial

Figura 6-8: flip-flop con entradas directas.

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.

6-4-4 Flip-flop J-K

Revisión 08 – 2020 134


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

Circuito eléctrico Tabla de verdad

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

Figura 6-9: flip-flop J K.

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.

6-4-5 Flip-flop T (toggle: conmutación)

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.

Revisión 08 – 2020 135


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

Circuito eléctrico Tabla de verdad

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

Figura 6-10: flip-flop T.

6-4-6 Propiedad de captar unos del FF maestro esclavo

Los FF maestro-esclavo se diseñaron para corregir un defecto típico de funcionamiento de


los cerrojos sincronizados. Éste consistía en que en una configuración de FF conectados en
cascada, un dato presente en la entrada del primero de los FF atravesaba varias etapas en un
solo ciclo de reloj, si la duración del estado activo del mismo era lo suficientemente larga. El FF
maestro esclavo se conecta a los terminales de entrada durante el estado alto del ciclo de reloj y
da respuesta en su salida durante el estado bajo. Este rediseño solucionó el problema antes
mencionado, pero deja pendiente otro que se explica a continuación.
Supóngase un FF S R al que se le aplican las señales mostradas en los diagramas de tiempos
de la figura 6-11.

S Q
CK
R Q

Ciclo 1 Ciclo 2
1

CK t [seg]

S t [seg]

0
tp
Q t [seg]

Figura 6-11: captación de unos del FF maestro-esclavo.

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

Revisión 08 – 2020 136


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

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

Disparado por flanco ascendente Disparado por flanco descendente

Figura 6-12: flip-flops activados por flancos.

6-4-7 Tablas características de excitación de los FF

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

Figura 6-13: tablas, diagramas y ecuación característica del FF S R.

Revisión 08 – 2020 137


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

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

Figura 6-14: tablas, diagramas y ecuación característica del FF D.

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

Figura 6-15: tablas, diagramas y ecuación característica del FF J K.

Revisión 08 – 2020 138


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

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

Ecuación característica: Qt+1 = Qt T + Qt T

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

Figura 6-16: tablas, diagramas y ecuación característica del FF T.

6-5 Descripción VHDL de elementos de memoria y flip-flops

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;

ARCHITECTURE algoritmico OF cerrojo_D IS


BEGIN
Latch:PROCESS (Reloj, Dato, Reset)
BEGIN
IF Reset =’1’ THEN -- Reset asincrónico
Salida_Q <= ‘0’;
ELSIF Reloj=’1’ THEN -- Reloj activo por nivel y no por flancos
Salida_Q <= Dato;
END IF;
END PROCESS;
END algoritmico;

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.

Revisión 08 – 2020 139


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 ff_D IS
PORT (Reloj, Reset: IN STD_LOGIC;
Salida_Q: OUT STD_LOGIC);
END ff_D;

ARCHITECTURE algoritmico OF ff_D IS


BEGIN
ffd:PROCESS (Reloj, Dato, Reset)
BEGIN
IF Reset =’1’ THEN -- Reset asincrónico
Salida_Q <= ‘0’;
ELSIF Reloj=’1’ AND Reloj ’EVENT THEN -- Reloj activo por flancos
Salida_Q <= Dato;
END IF;
END PROCESS;
END algoritmico;

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;

-------------------------- Descripción de un flip flop JK ---------------------------


LIBRARY ieee;
USE ieee.std_logic_1164.all;

ENTITY ff_JK IS
PORT (Reloj, Entrada_J, Entrada_K, Reset: IN STD_LOGIC;
Salida_Q: BUFFER STD_LOGIC);
END ff_JK;

Revisión 08 – 2020 140


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

ARCHITECTURE algoritmico OF ff_JK IS


BEGIN
ffjk:PROCESS (Reloj, Reset)
VARIABLE auxiliar: STD_LOGIC_VECTOR(1 DOWNTO 0); – Las variables se declaran
- - dentro del proceso y solo tienen validez dentro de él.
BEGIN; - -Se asocian las entradas J y K en una
auxiliar:= Entrada_J & Entrada_K - - misma palabra
IF Reset =’1’ THEN - - Reset asincrónico
Salida_Q <= ‘0’;
ELSIF Reloj=’1’ AND Reloj ’EVENT THEN -- Reloj activo por flancos
CASE auxiliar IS -- Tabla del ff JK
WHEN “01” => Salida_Q <= ‘0’;
WHEN “10” => Salida_Q <= ‘1’;
WHEN “11” => Salida_Q <= NOT Salida_Q;
WHEN OTHERS => NULL;
END CASE;
END IF;
END PROCESS;
END algoritmico;
LIBRARY ieee;
USE ieee.std_logic_1164.all;

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;

Revisión 08 – 2020 141


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

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.

• La secuencia de conteo puede ser ascendente o descendente.

• 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).

7-1-2 Contadores asincrónicos

En un contador asincrónico, la señal de clock se aplica solamente al primero de los FF que lo


componen. Luego, la salida Q de este FF se conecta a la entrada de reloj del segundo FF; la
salida Q de éste se conecta al tercero, etc. La figura 7-1 muestra la configuración interna básica
de este tipo de contador.
+V +V +V

FF0 FF1 FF2

J Q J Q J Q
Reloj CK CK CK
K Q K Q K Q

Q0 Q1 Q2

Figura 7-1: esquema interno básico de un contador asincrónico.

Revisión 08 – 2020 142


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

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

FF0 FF1 FF2


J Q J Q J Q
Reloj CK CK CK
K Q K Q K Q

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

Q2Q1Q0 = 001 Q2Q1Q0 = 100 Q2Q1Q0 = 000


Q2Q1Q0 = 111

Figura 7-2: diagrama de tiempos del contador módulo 8.

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.

7-1-2-1 Decodificación de las salidas de un contador

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

Revisión 08 – 2020 143


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

contador binario. El decodificador transformará la cuenta binaria del contador en el código


deseado. El circuito de la figura 7-3 corresponde a un contador octal.

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

FF0 FF1 FF2

J Q J Q J Q
Reloj CK
Q0 CK
Q1 CK
Q2
K Q K Q K Q

Figura 7-3: decodificación de las salidas de un contador.

7-1-2-2 Contadores asincrónicos descendentes

Figura 7-4: contador asincrónico descendente.

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

Revisión 08 – 2020 144


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

cambio, ya que los FF son sensibles a flancos ascendentes. La cuenta queda en 110 (6).

7-1-2-3 Contadores asincrónicos ascendentes / descendentes

7-1-2-4 Contadores asincrónicos no binarios

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.

Revisión 08 – 2020 145


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

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

Figura 7-6: contador BCD.

7-1-2-5 Limitaciones de los contadores asincrónicos

• Limitación en la decodificación: la gráfica de tiempos de la figura 7-2 es un caso ideal, en


donde no están considerados los retardos de propagación de cada etapa. Cuando sí se lo
tienen en cuenta sucede lo siguiente. Supóngase el contador de la figura 7-3, en donde
ahora cada FF tarda un tiempo tp en procesar el estado presente en su entrada. Para
mayor simplicidad, se asumirá que el decodificador no presenta ningún retardo de
propagación. Antes del primer ciclo de reloj, las salidas Q2 Q1 Q0 = 0 0 0, por lo tanto
estará activa la salida de orden S0 del decodificador. Idealmente debería mantenerse en
este estado hasta la llegada del primer ciclo de reloj, pero debido al retardo de
propagación del FF1, recién después de un tiempo igual a tp, la salida Q0 cambiará su
estado y entonces responderá el decodificador, activando la salida de orden S1.
Cuando llega el segundo pulso de reloj, Q0 conmuta de 1 a 0 con un retardo igual a tp, y
esta conmutación provoca el cambio en Q1 de 0 a 1, luego de otro retardo tp. En el
instante indicado como A en la gráfica de tiempos, producto de los retardos de
propagación, durante un instante las salidas Q2 Q1 Q0 = 0 0 0, con lo cual el decodificador
activará brevemente la salida S0. Esta situación provoca un estado erróneo debido a que
las salidas del contador no se estabilizaron. Este mismo error se repite nuevamente en
cuarto y octavo ciclo de reloj para la salida mencionada, y lo mismo ocurre en los
diferentes estados del contador para el resto de las salidas del decodificador.
El error en la decodificación, también denominado “gliche”, normalmente no se tiene en
cuenta para la mayoría de las aplicaciones por su corta duración, pero puede llegar a
ocasionar graves errores de funcionamiento en usos específicos.

Revisión 08 – 2020 146


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

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

Figura 7-7: errores de decodificación.

• Limitación en la frecuencia de funcionamiento: en el apartado anterior se mencionó el


defecto de funcionamiento provocado por los retardos de propagación, ilustrados en la
figura 7-7. El peor caso para el ejemplo considerado, se produce en el instante indicado
como B, en los diagramas de tiempos. En este punto, la salida del contador será estable
recién después de 3 tp, a partir del momento de la llegada del pulso de reloj. El problema
se acrecienta cuando se aumenta el número de FF conectados en cascada. Para un
contador de n etapas, el pulso de reloj para el último FF llega con un retardo igual a n tp.
Si la frecuencia del reloj es tal que su período T es menor que el máximo retardo de
propagación, el contador perderá ciclos de reloj, ya que le será imposible seguir los
cambios. En general, el período de reloj debe ser:

T = n tp + tm

En donde n es el número de etapas de contador, tp el retardo de propagación típico de


cada FF y tm el tiempo de muestreo, o tiempo mínimo que debe estar presente y estable
la señal en la entrada del FF para que este responda adecuadamente. La frecuencia
máxima de funcionamiento de un contador asincrónico es:

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.

Revisión 08 – 2020 147


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

7-1-3 Contadores sincrónicos

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

De la tabla de verdad surgen las siguientes consideraciones:


• Q0 cambia de estado con cada pulso de reloj.
• Q1 cambia de estado si previo al ciclo de reloj, Q0 = 1.
• Q2 cambia de estado si previo al ciclo de reloj, Q1Q0 = 1 1.
• Q3 cambia de estado si previo al ciclo de reloj, Q2Q1Q0 = 1 1 1.
• En forma general, Qn cambiará su estado con el siguiente pulso de reloj, solamente si
previo al ciclo de reloj, Qn-1 = Qn-2 = Qn-3 = …. Q0 = 1.
Teniendo en cuenta estas consideraciones el circuito básico del contador sincrónico es el que
se presenta en la figura 7-8.

+V

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

Q0 Q1 Q2 Q3

Figura 7-8: contador sincrónico.

Revisión 08 – 2020 148


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

En los contadores sincrónicos, se reducen notablemente los errores de funcionamiento, ya


que ahora todos los FF responden al unísono, eliminando la suma de retardos de propagación.
La limitación en la frecuencia de funcionamiento está determinada por el retardo de
propagación propio de los FF, el tiempo de respuesta de las compuertas AND y el tiempo de
muestreo, siendo su expresión:

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.

7-1-3-1 Contadores sincrónicos descendentes

Un contador sincrónico descendente se construye usando las salidas Qnegadas para


establecer los estados de las entradas J K de la etapa siguiente. La figura 7-9 muestra un
contador sincrónico descendente.

Figura 7-9: contador sincrónico descendente.

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.

7-1-3-2 Contadores sincrónicos ascendentes / descendentes

Revisión 08 – 2020 149


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

7-1-3-3 Contadores sincrónicos de módulo cualquiera

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

FF0 FF1 FF2 Q2 FF3

J Q J Q J Q J Q
Reloj CK CK CK CK
K Q K Q K Q K Q

Figura 7-11: contador sincrónico BCD.

7-1-4 Circuitos integrados contadores

Comercialmente existe una amplia variedad de circuitos integrados contadores, en


tecnologías TTL y CMOS, tanto asincrónicos como sincrónicos. Además de su función básica,
algunos modelos implementan otros terminales como los que a continuación se detallan:
• Borrado: en su estado activo permite que el contador reinicie su cuenta.
• Acarreo: terminal de salida que se activa cuando el contador alcanza el final de la cuenta.
Este pin permite conectar otro contador en cascada para aumentar la cuenta.
• Terminales de precarga: permite iniciar la cuenta en cualquier punto de la secuencia
ordinaria del contador. Estos terminales son las entradas asincrónicas de los FF internos.
Mediante un terminal adicional comúnmente denominado “Load” se confirma el valor.
• Cuenta ascendente o descendente: controla el sentido del conteo.
• Tipo de conteo: permite elegir el modo de la cuenta entre binaria o BCD.

7-1-4-1 Circuitos integrados contadores asincrónicos

• 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.

Revisión 08 – 2020 150


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

7-1-4-2 Circuitos integrados contadores sincrónicos

• 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.

7-1-5 Contadores en anillo o Johnson

7-1-5-1 Contador en anillo

La estructura básica de estos contadores es la de un registro de desplazamiento, dispositivo


electrónico que se estudiará con posterioridad. El circuito básico es el presentado en la figura
7-12.

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]

Figura 7-12: contador en anillo.

La figura 7-12 muestra un arreglo de FF tipo D conectados en cascada, que comparten la


señal de reloj. Recibe el nombre de contador en anillo ya que la salida de cada FF se conecta a la
entrada D del que le sigue, y a su vez, la salida del último FF se conecta a la entrada D del
primero.
Para el ejemplo de la figura, el contador debe inicializarse con la combinación Q 3Q2Q1Q0. =
0001. Con los sucesivos ciclos de reloj el 1 presente en Q0 se desplazará hacia la derecha
obteniéndose en la salida las combinaciones 0010, 0100 y finalmente 1000 para luego
reiniciarse y volver a 0001. Este tipo de contador no es eficiente en cuanto a la cantidad de FF
usados y el módulo del mismo. En general, con n FF se obtienen n estados diferentes. Una
aplicación de los contadores en anillo es por ejemplo la habilitación secuencial de diferentes
dispositivos.

Revisión 08 – 2020 151


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

7-1-5-2 Contador Johnson

+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]

0000 0001 0011 0111 1111 1110 1100 1000 0000

Figura 7-13: contador Johnson.

7-1-6 Descripción VHDL de contadores

El siguiente código corresponde a un contador binario módulo 16 con precarga ascendente y


descendente:

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;

Revisión 08 – 2020 152


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

ARCHITECTURE algoritmico OF contador_modulo_16 IS


SIGNAL cuenta: STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
Conta:PROCESS (Reloj, Reset)
BEGIN
IF Reset =’1’ THEN -- Reset asincrónico
cuenta <= Precarga;
ELSIF Reloj=’1’ AND Reloj ’EVENT THEN -- Reloj activo por flancos

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 Registros de almacenamiento y de desplazamiento

7-2-1 Introducción

Un registro es un grupo de FF que se utilizan para almacenar o memorizar datos


temporalmente. En la práctica los registros se implementan con FF del tipo D. Cada FF D es
capaz de guardar un bit de información. Un registro de n FF puede almacenar una palabra de n
bits. Son comunes registros de 8 bits o “1 byte”, 16 bits, 32 bits, 64 bits, etc.
Los registros tienen una gran variedad de aplicaciones, como por ejemplo generadores de
patrones y secuencias, muestreo y almacenamiento de datos, circuitos contadores, circuitos de
apoyo para microprocesadores, etc. Por ejemplo, la mayor parte de las operaciones realizadas
por un microprocesador son transferencias de datos desde un registro a otro, mezcladas con
algunas operaciones lógicas o aritméticas.
Desde el punto de vista del modo en que los datos entran o salen del registro, éstos pueden
clasificarse de cuatro maneras:

• Registro con entrada paralela y salida paralela.


• Registro con entrada paralelo y salida serie.
• Registro con entrada serie y salida paralela.
• Registro con entrada serie y salida serie.

7-2-2 Registro de almacenamiento paralelo/paralelo o PIPO (parallel in/parallel out)

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.

Revisión 08 – 2020 153


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

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

Sd FF0 Sd FF1 Sd FF2 Sd FF3

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

Figura 7-14: registro de almacenamiento paralelo/paralelo.

7-2-3 Registros de desplazamiento

Los registros de desplazamiento agrupan a los tres tipos de registros de la clasificación


anterior. Son básicamente un grupo de FF D conectados en cascada que comparten la señal de
reloj. Con cada pulso los datos previamente guardados en el registro se desplazan a la etapa
siguiente o a la anterior, según sea el sentido del desplazamiento elegido. Se analizará su
funcionamiento estudiando el registro serie/serie.

7-2-4 Registros serie/serie o SISO (serial in/serial out)

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:

Revisión 08 – 2020 154


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

• 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

Figura 7-15: registro de desplazamiento.

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.

7-2-5 Registros serie/paralelo SIPO (serial in/parallel out)

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:

Revisión 08 – 2020 155


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

Figura 7-16: registro serie/paralelo.

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.

7-2-6 Registros paralelo/serie PISO (parallel in/serial out)

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.

Figura 7-17: registro paralelo/serie.

Revisión 08 – 2020 156


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

7-2-7 Registros de desplazamiento universal

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.

7-2-8 Buses de datos

Los registros generalmente no se encuentran en forma aislada, sino que interactúan


compartiendo un mismo canal de información, denominado “bus”. Los buses son grupos de
líneas que se usan para transmitir en paralelo un tipo de información común. Por ejemplo en los
sistemas con microprocesadores, existen buses de datos, de direcciones, de control, etc.
En la figura 7-18 se muestra un ejemplo de interconexión de registros que permite transferir
información entre dos registros cualesquiera mediante el uso adecuado de las líneas de control.
Se observa que para todos los registros, tanto las entradas como las salidas están conectadas
indirectamente al bus de datos representado por las líneas D0 a D3 mediante buffers tri-state.
Por ejemplo, para transferir el contenido del registro C al A, es necesario habilitar los buffer tri-
state de salida C y de entrada de A, e inhibir el resto de los buffers. La información se guardará
con la llegada del pulso de reloj.

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

Reloj Reloj Reloj

VCC Borrado VCC Borrado VCC Borrado

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

Figura 7-18: interconexión de registros.

Revisión 08 – 2020 157


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

7-2-9 Circuitos integrados registros de desplazamiento y almacenamiento

A continuación se detallan los CI´s registros e desplazamiento y almacenamiento más


comunes.

• 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.

7-2-10 Descripción VHDL de registros de desplazamiento

A continuación se presenta un ejemplo de código para sintetizar un registro de desplazamiento


de izquierda a derecha de 4 bits con precarga paralela:

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;

ARCHITECTURE algoritmico OF registro_desplazamiento_4bits IS


BEGIN
desplaza:PROCESS - - no necesita lista de sensibilidad porque usa WAIT
BEGIN
WAIT UNTIL Reloj=’1’ AND Reloj ’EVENT -- Reloj activo por flancos
IF Graba=’1’ THEN
Salida <= Dato_paralelo; -- Carga sincrónica paralela
ELSE
Salida(3) <= Salida(2);
Salida(2) <= Salida(1);
Salida(1) <= Salida(0);
Salida(0) <= Dato_serie;
END IF;
END PROCESS;
END algoritmico;

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:

Revisión 08 – 2020 158


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_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;

ARCHITECTURE algoritmico OF registro_desplazamiento_ancho_configurable IS


BEGIN
desplaza:PROCESS (Reset_N,Reloj)
BEGIN
IF Reset_N=’0’ THEN
Salida <= (OTHERS => ’0’); -- Others indica que todos los bits de Salida
-- tomarán el valor 0
ELSIF Reloj=’1’ AND Reloj ’EVENT THEN
corrimiento: FOR i IN K DOWNTO 2 LOOP
Salida(i) <= Salida(i-1);
END LOOP;
Salida(1) <= Dato_serie;
END IF;
END PROCESS;
END algoritmico;

7-3 Sistemas secuenciales

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.

Revisión 08 – 2020 159


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

7-3-2 Estructura interna de los sistemas secuenciales

Un sistema secuencial se compone de:


• Entradas, indicadas como Xi.
• Salidas, indicadas como Yi.
• Estados internos indicados como Zi.
• Transiciones o pasajes de estados, indicados como Φi.
• Funciones de salida, indicadas como i.

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.

Figura 7-19: 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.

Figura 7-20: autómata de Moore.

El estudio de la forma en que evolucionan los sistemas sincrónicos se facilita enormemente


mediante el uso de los diagramas de estado. Éste es un método gráfico que permite mostrar

Revisión 08 – 2020 160


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

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.

Figura 7-21: transiciones y estados en autómatas de Mealy y Moore.

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.

7-3-3 Pasos de diseño generales de los sistemas secuenciales

A continuación se enumera una serie de pasos generales para el diseño de sistemas


secuenciales. De la aplicación correcta de estos pasos y la experiencia del diseñador depende el
buen funcionamiento y tamaño mínimo del circuito.
En forma sintética, los pasos estandarizados para el diseño de un sistema secuencial son:

1- Descripción textual del problema, que puede ser completa o incompleta.


2- Construcción del diagrama de estados a partir de la descripción del problema. Esta es la
parte más complicada del proceso de diseño, ya que depende de la experiencia del
diseñador el que el diagrama obtenido refleje fielmente el problema en cuestión.
3- Asignación de un número binario a cada uno de los estados. Estos números forman la
secuencia que deberán cumplir los circuitos de memoria (FF) en cada pulso de reloj. Lo
más natural es asignar a un estado determinado y al siguiente, números consecutivos. Es
necesario aclarar que no todas las asignaciones terminan en el mismo tamaño de
circuito.

Revisión 08 – 2020 161


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

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 Ejemplos de diseño de un sistema secuencial

La experiencia en el diseño de sistemas secuenciales se adquiere con el tiempo. A modo de


ejemplo, se presenta la resolución de dos problemas, siguiendo los pasos antes detallados.

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

Figura 7-22: diagrama de estados ejemplo 1.

• 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:

Revisión 08 – 2020 162


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

Estado Codificación
Z0 00
Z1 01
Z2 10
Z3 11

Tabla 7-2: codificación de los estados internos del sistema.

• 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:

Estado Estado siguiente


J K
actual Qt Qt+1
0 0 0 X
0 1 1 X
1 0 X 1
1 1 X 0

Tabla 7-3: tabla de excitación característica del FF JK.

• Pasos 5 y 6: con la información del diagrama de estados y de la tabla de excitación


característica del FF JK, se construye la tabla de verdad de las funciones de entrada de
cada FF y de la salida Y del sistema.

Combinación Variable Estado Estado Entradas de los Salida del


de interno interno FF sistema
Entrada actual Futuro
X Q1t Q0t Q1t+1 Q0t+1 J1 K1 J0 K0 Y
0 0 0 0 0 0 0 X 0 X 0
1 0 0 1 0 0 0 X X 1 0
2 0 1 0 0 0 X 1 0 X 0
3 0 1 1 0 0 X 1 X 1 0
4 1 0 0 0 1 0 X 1 X 0
5 1 0 1 1 0 1 X X 1 0
6 1 1 0 1 1 X 0 1 X 0
7 1 1 1 1 1 X 0 X 0 1

Tabla 7-4: tabla de verdad del sistema.

• Paso 7: obtención de las funciones lógicas correspondientes a las entradas de los FF y la


salida del sistema, a partir de la tabla de excitación:
J1 = Σ (5) + Σ (2, 3, 6, 7) = Π (0, 1, 4) * Π  (2, 3, 6, 7)

K1 = Σ (2, 3) + Σ  (0, 1, 4, 5) = Π (6, 7) * Π  (0, 1, 4, 5)

J0 = Σ (4, 6) + Σ (1, 3, 5, 7) = Π (0, 2) * Π  (1, 3, 5, 7)

K0 = Σ (1, 3, 5) + Σ  (0, 2, 4, 6) = Π (7) * Π  (0, 2, 4, 6)

Y= Σ (7) = Π (0,1, 2, 3, 4, 5, 6)

Revisión 08 – 2020 163


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

• Paso 8: simplificación de las funciones lógicas obtenidas mediante diagramas de


Karnaugh. En la figura 7-23 se muestra la minimización de las expresiones de las
entradas de los FF y de la salida.

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

Figura 7-23: simplificación de las funciones lógicas.

• 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

Figura 7-24: circuito final del ejemplo 1.

Revisión 08 – 2020 164


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

7-3-4-2 Ejemplo 2

• Paso 1: diseño de un contador sincrónico BCD.


• Paso 2: el contador tiene un módulo 10, por lo tanto el sistema tendrá 10 estados
internos. La figura 7-25 muestra el diagrama de estados del contador.

Figura 7-25: diagrama de estados 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

Tabla 7-5: tabla de codificación de los estados internos del sistema.

• Paso 4: son necesarios cuatro FF tipo JK para memorizar los diez estado internos del
contador.

• Pasos 5 y 6: con la información del diagrama de estados y de la tabla de excitación


característica del FF JK, se construye la tabla de verdad de las funciones de entrada de
cada FF y de la salida Z del sistema.

Revisión 08 – 2020 165


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

Combina Estado interno Estado interno Entradas de los FF


ción actual t Futuro t+1
Q3 Q2 Q1 Q0 Q3 Q2 Q1 Q0 J0K0 J1 K1 J2 K2 J3 K3
0 0000 0001 1 X 0 X 0 X 0 X
1 0001 0010 X 1 1 X 0 X 0 X
2 0010 0011 1 X X 0 0 X 0 X
3 0011 0100 X 1 X 1 1 X 0 X
4 0100 0101 1 X 0 X X 0 0 X
5 0101 0110 X 1 1 X X 0 0 X
6 0110 0111 1 X X 0 X 0 0 X
7 0111 1000 X 1 X 1 X 1 1 X
8 1000 1001 1 X 0 X 0 X X 0
9 1001 0000 X 1 0 X 0 X X 1

Tabla 7-6: tabla de verdad del sistema.

• Paso 7: obtención de las funciones lógicas correspondientes a las entradas de los FF y la


salida del sistema a partir de la tabla de excitación:

J0 = Σ (0, 2, 4, 6, 8) + Σ (1, 3, 5, 7, 9, 10, 11, 12, 13, 14, 15)

K0 = Σ (1, 3, 5, 7, 9) + Σ (0, 2, 4, 6, 8, 10, 11, 12, 13, 14, 15)

J1 = Σ (1, 5) + Σ (2, 3, 6, 7, 10, 11, 12, 13, 14, 15) =


= Π (0, 4, 8, 9) * Π  (2, 3, 6, 7, 10, 11, 12, 13, 14, 15)

K1 = Σ (3, 7) + Σ (0, 1, 4, 5, 8, 9, 10, 11, 12, 13, 14, 15) =


= Π (2, 6) * Π  (0, 1, 4, 5, 8, 9, 10, 11, 12, 13, 14, 15)

J2 = Σ (3) + Σ (4, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15) =


= Π (0, 1, 2, 8) * Π  (4, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15)

K2 = Σ (7) + Σ (0, 1, 2, 3, 8, 9, 10, 11, 12, 13, 14, 15) =


= Π (4, 5, 6) * Π  (0, 1, 2, 3, 8, 9, 10, 11, 12, 13, 14, 15)

J3 = Σ (7) + Σ ( 8, 9, 10, 11, 12, 13, 14, 15) =


= Π (0, 1, 2, 3, 4, 5, 6) * Π  (8, 9, 10, 11, 12, 13, 14, 15)

K3 = Σ (9) + Σ ( 0, 1, 2, 3, 4, 5, 6, 7, 10, 11, 12, 13, 14, 15) =


= Π (8) * Π  (0, 1, 2, 3, 4, 5, 6, 7, 10, 11, 12, 13, 14, 15)

• Paso 8: simplificación de las funciones lógicas obtenidas mediante diagramas de


Karnaugh. En la figura 7-26 se muestra la minimización de las expresiones de las
entradas de los FF y de la salida.

Revisión 08 – 2020 166


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

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

K1 = Q3Q0 J2 = Q1Q0 K2 = Q1Q0

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

Figura 7-26: simplificación de las funciones lógicas.

• Paso 9: implementación del circuito final. En la figura 7-27 se muestra el circuito eléctrico
del sistema requerido.

+V

FF0 FF1 FF2 FF3


J Q J Q J Q J Q
CK CK CK CK CK
K Q K Q K Q K Q

Q0 Q1 Q2 Q3

Figura 7-27: circuito final del ejemplo 2.

Revisión 08 – 2020 167


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

7-3-5 Descripción VHDL de máquinas de estados

A continuación se presentan algunos ejemplos de descripciones de máquinas de estados que


resultan de la transcripción directa del diagrama de estados al lenguaje VHDL. En el primer
ejemplo se sintetizará el autómata definido por el diagrama de estados de la figura 7-22, cuya
función era poner en estado alto su salida cuando en la entrada se detectaban 3 o más piezas
consecutivas malas, en caso contrario la salida quedaba en estado bajo.

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;

ARCHITECTURE algoritmico OF automata_Moore_ej_1 IS


TYPE Estados IS (E0, E1, E2, E3); -- Enumeración de los diferentes estados de la --
máquina
SIGNAL Estado_actual, Estado_siguiente: Estados; -- Define señales auxiliares para el
--funcionamiento de la máquina
SIGNAL Salida_auxiliar: STD_LOGIC;

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 <= E0;
Salida<= ’0’;
ELSIF Reloj=’1’ AND Reloj ’EVENT THEN
Estado_actual<=Estado_siguiente;
Salida <= Salida_auxiliar;
END IF;
END PROCESS;

-- el siguiente bloque establece el próximo estado en base al valor de la entrada y del


-- estado actual. Corresponde a la red combinacional que alimenta a los flip-flops.

Revisión 08 – 2020 168


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

red_combinacional: PROCESS (Entrada, Estado_actual)


BEGIN
CASE Estado_actual IS
WHEN E0 => -- analiza las posibles transiciones del estado E0
IF (Entrada=’0’) THEN Estado_siguiente<=E0;
ELSE (Entrada=’1’) THEN Estado_siguiente<=E1;
END IF;

WHEN E1 => -- analiza las posibles transiciones del estado E1


IF (Entrada=’0’) THEN Estado_siguiente<=E0;
ELSE (Entrada=’1’) THEN Estado_siguiente<=E2;
END IF;

WHEN E2 => -- analiza las posibles transiciones del estado E2


IF (Entrada=’0’) THEN Estado_siguiente<=E0;
ELSE (Entrada=’1’) THEN Estado_siguiente<=E3;
END IF;

WHEN E3 => -- analiza las posibles transiciones del estado E3


IF (Entrada=’0’) THEN Estado_siguiente<=E0;
ELSE (Entrada=’1’) THEN Estado_siguiente<=E3;
END IF;
END CASE;
END PROCESS;

-- el siguiente bloque establece el valor de la variable auxiliar de salida de acuerdo


-- con el estado actual de la máquina. Corresponde a la red combinacional de salida.

WITH Estado_actual SELECT


Salida_auxiliar<= ’0’ WHEN E0,
’0’ WHEN E1,
’0’ WHEN E2,
’1’ WHEN OTHERS;
END algoritmico;

Obsérvese que dentro de la unidad ARCHITECTURE mediante la palabra reservada TYPE, se


define un tipo de dato llamado “Estado” que puede adoptar cuatro valores posibles: E0, E1, E2 y
E3. Luego se declaran dos señales correspondientes a los estados internos de la máquina, el
actual y el próximo, cuyo tipo de dato será “Estado”, es decir que estas dos señales podrán
adoptar uno de los cuatro estados declarados en TYPE.
Luego se describen dos procesos. En el primero la máquina evoluciona al próximo estado
cuando llega el flanco activo del reloj. Se observa aquí que la máquina es un autómata de Moore,
ya que junto con el estado de la máquina se establece el valor de la salida. Otro detalle que
resalta que se trata de un autómata de Moore es que la señal “Salida_auxiliar” solo depende del
estado actual del mismo y no de la entrada, como se observa en el final de la descripción, con el
comando WITH – SELECT.

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.

Revisión 08 – 2020 169


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

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

Figura 7-28: Diagrama de estados del ejemplo 2.

A continuación se presenta la síntesis de la máquina de estados del tipo Mealy.

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;

ARCHITECTURE algoritmico OF automata_Mealy_ej_2 IS


TYPE Estados IS (Estado_A, Estado_B, Estado_C, Estado_D, Estado_E);

SIGNAL Estado_actual, Estado_siguiente: Estados;


SIGNAL Salida_auxiliar: STD_LOGIC;

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;

Revisión 08 – 2020 170


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

combinacional: PROCESS (Entrada, Estado_actual)


BEGIN

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;

WHEN Estado_B => --Transiciones del estado Estado_B


IF Entrada=’0’ THEN
Estado_actual<=Estado_C;
Salida_auxiliar<=’1’; --Salida de Mealy
ELSE
Estado_actual<=Estado_D;
Salida_auxiliar<=’0’; --Salida de Mealy
END IF;

WHEN Estado_C => --Transiciones del estado Estado_C


IF Entrada=’0’ THEN
Estado_actual<=Estado_C;
Salida_auxiliar<=’1’; --Salida de Mealy
ELSE
Estado_actual<=Estado_D;
Salida_auxiliar<=’0’; --Salida de Mealy
END IF;

WHEN Estado_D => --Transiciones del estado Estado_D


IF Entrada=’0’ THEN
Estado_actual<=Estado_B;
Salida_auxiliar<=’0’; --Salida de Mealy
ELSE
Estado_actual<=Estado_E;
Salida_auxiliar<=’1’; --Salida de Mealy
END IF;

WHEN Estado_E => --Transiciones del estado Estado_E


IF Entrada=’0’ THEN
Estado_actual<=Estado_B;
Salida_auxiliar<=’1’; --Salida de Mealy
ELSE
Estado_actual<=Estado_E;
Salida_auxiliar<=’1’; --Salida de Mealy
END IF;
END CASE;
Salida <= Salida_auxiliar;
END PROCESS;
END algoritmico;

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.

Revisión 08 – 2020 171


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

CAPÍTULO 8
MEMORIAS SEMICONDUCTORAS

8-1 Introducción

Un procesador digital requiere generalmente un medio para almacenar información. La


información aquí almacenada puede consistir en varios números que deben ser utilizados en un
cálculo, resultados de cálculos intermedios, instrucciones que dirigirán un cálculo, o todo lo
mencionado.
Cuando la cantidad de información a memorizar es elevada y en especial cuando el sistema
digital de proceso es programable y han de memorizarse las instrucciones del programa además
de los datos, nunca se necesita tener acceso a toda la información simultáneamente. Por ello los
elementos que memorizan información se pueden agrupar constituyendo una unidad de
memoria en la que sólo se puede acceder simultáneamente a un cierto número de aquellos. Se
define por lo tanto una unidad de memoria como un conjunto de biestables agrupados de tal
manera que solamente es posible introducir información o leer la que poseen simultáneamente
en un grupo reducido de ellos.
Las características que ha de poseer una unidad de memoria depende de la forma en que se
va a presentar la información a su entrada, la forma en que se obtiene la información a su salida
y la cantidad de información a memorizar.
En los sucesivos apartados se estudiará la organización y la electrónica de dispositivos
semiconductores de memoria, en particular la de acceso aleatorio.

8-2 Parámetros y características más importantes de una memoria

8-2-1 Organización

El elemento básico de una memoria semiconductora es la celda de memoria. Aunque se


utilizan diversas tecnologías electrónicas, todas las celdas de memoria comparten ciertas
propiedades:

• Presentan dos estados estables, que pueden emplearse para representar el 1 y el 0


binarios.

• Puede escribirse en ellas (al menos una vez) para fijar su contenido.

• Pueden leerse para detectar su estado.

Figura 8-1: Funcionamiento de una celda de memoria.

Revisión 08 – 2020 172


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

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

Es la cantidad de información que puede almacenar. Dado que la información la almacena


en el sistema binario, la capacidad se mide en la unidad de medida de información en dicho
sistema, que es el “bit”. La capacidad se puede considerar por lo tanto igual al número N total de
bits. Pero, en general, la información se almacena en grupos de bits denominados posiciones o
más comúnmente “bytes” que son accesibles simultáneamente (1 byte = 8 bits).
A la selección de una determinada posición de memoria para introducir información en ella o
leer la que contiene se la denomina direccionamiento de dicha posición. Para que se aproveche
al máximo la capacidad de selección se hace que la cantidad de posiciones que posea la
memoria sea una potencia de dos. El número de variables binarias necesarias para poder
seleccionar “x” posiciones es “n” tal que 2n = x. La unidad de capacidad en lo que se refiere al
número de posiciones de memoria se considera igual a 1024, que al ser la potencia de dos más
próxima a 1000, se lo denomina “kilobyte”. Para seleccionar 1024 posiciones se necesitan 10
bits, dado que 210 = 1024. De todo lo expresado se deduce que la capacidad en kilobytes de una
memoria seleccionada mediante “n” variables es 2n-10. Como práctica se puede comprobar que si
n = 14, la memoria tiene una capacidad de 16 kilobytes (comúnmente k).
El número total de posiciones de una memoria de n k es n x 1024. Por ejemplo una memoria
de 32 k posee 32 x 1024 = 32768 posiciones o bytes.
La capacidad total de una memoria se suele indicar mediante el número de posiciones y el
número de bits de cada posición. Por ejemplo, una memoria de 32k x 8 posee 32768 posiciones
de 8 bits cada una.

8-2-3 Tiempo de acceso

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.

8-2-4 Tiempo de ciclo de memoria

Este concepto se aplica principalmente a las memorias de acceso aleatorio y consiste en el


tiempo de acceso y algún tiempo más que se requiere, antes de que pueda iniciarse un segundo
acceso a memoria. Este tiempo adicional puede que sea necesario para que finalicen las
transiciones en las líneas de señal o para regenerar los datos en el caso de lecturas
regenerativas.

Revisión 08 – 2020 173


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

8-2-5 Velocidad de transferencia

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 Formas de acceder a una memoria

8-3-1 Acceso secuencial

La memoria se organiza en unidades de datos llamadas “registros”. El acceso debe realizarse


con una secuencia lineal específica. Se hace uso de información almacenada de
direccionamiento, que permite separar los registros y ayudar en el proceso de recuperación de
datos. Se utiliza un mecanismo de lectura / escritura compartida, que debe ir trasladándose
desde su posición actual a la deseada, pasando y obviando cada registro intermedio. Así pues, el
tiempo necesario para acceder a un registro dado es muy variable. Las unidades de cinta
magnética son un ejemplo de acceso secuencial; otro caso es el de la “pila” o “stack”, sección
de memoria dentro de la estructura interna de los microprocesadores encargada de almacenar
las direcciones de retorno de las subrutinas.

8-3-2 Acceso directo

Como en el caso de acceso secuencial, el directo tiene asociado un mecanismo de lectura /


escritura. Sin embargo, los bloques individuales o registros tienen una dirección única basada en
su dirección física. El acceso se lleva a cabo mediante un acceso directo a una vecindad dada,
seguido de una búsqueda secuencial, bien contando, o bien esperando hasta alcanzar la
posición final. De nuevo, el tiempo de acceso es variable. Las unidades de disco rígido, CD, DVD y
los antiguos disquetes son ejemplos de memorias de acceso directo.

8-3-3 Acceso aleatorio (random)

Cada posición direccionable de memoria tiene un único mecanismo de acceso, cableado


físicamente. El tiempo para acceder a una posición dada es constante e independiente de la
secuencia de accesos previos. Por tanto, cualquier posición puede seleccionarse aleatoriamente
y puede ser direccionada y accedida directamente. Las memorias semiconductoras son
ejemplos de acceso aleatorio.

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.

Revisión 08 – 2020 174


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

8-4 Clasificación de las memorias semiconductoras

La acción de introducir información (escribir) en una posición de memoria o leer la que


contiene se denomina acceder a la misma. Nunca es necesario escribir o leer simultáneamente
todas las posiciones de una memoria. Por ello existen varias formas de acceder a una posición
de una memoria que dan lugar a la clasificación que se observa en la figura 8-2.
Sin duda, esta es un clasificación un tanto genérica por lo que podrán encontrarse una mayor
diversidad de memorias, que no dejan de estar involucradas dentro de alguna de las familias
mostradas en la figura 8-2; cabe aclarar, que nuestro estudio se enfocará sobre las memorias de
acceso aleatorio.

Figura 8-2: Clasificación de las memorias.

8-4-1 Memorias de acceso serie

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.

Una memoria secuencial o serie de registro de desplazamiento está representada en la figura


8.3. Esta memoria utiliza “N” registros de desplazamiento, cada uno con “K” etapas, y
proporcionará almacenamiento para K palabras, cada una de N bits. Cada registro conserva uno
de los N bits de cada una de las K palabras. Con cada ciclo de reloj (la entrada de reloj no está
explícitamente indicada en la figura 8.3), los bits de cada registro avanzarán un paso y las
palabras almacenadas aparecerán secuencialmente en las salidas b0, b1, ...,bn-1. En esta
memoria secuencial la palabra que se está leyendo, que es el conjunto de los bits registrados en
la última posición del registro, puede ser transferida hacia atrás hasta la primera posición de la
izquierda del registro como en todo registro recirculante. Así, después de que ha aparecido en la
salida de la memoria toda la secuencia de palabras, la misma secuencia puede ser repetida
indefinidamente en tanto que el reloj continúe activando los registros. En este sentido estos
registros corresponden a una memoria de cinta en que el principio y el final de la cinta han sido
unidos de modo que la cinta forma un bucle cerrado.

Revisión 08 – 2020 175


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

Figura 8-3: Memoria de acceso serie utilizando registros de desplazamiento.

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).

8-4-2 Memorias de acceso aleatorio

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

Revisión 08 – 2020 176


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

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.

Tipo de memoria Clase Borrado Mecanismos de Volatilidad


escritura
Memoria de acceso Memoria de Eléctricamente por
aleatorio (RAM) lectura / bytes Eléctricamente Volátil
escritura
Memoria de sólo lectura Mediante
(ROM) Memoria de sólo máscaras
ROM programable lectura No posible
(PROM)
PROM borrable (EPROM) Luz ultravioleta, chip
completo No volátil
Memoria FLASH Memoria de Eléctricamente por Eléctricamente
sobre-todo- bloques
PROM borrable lectura Eléctricamente por
eléctricamente bytes
(EEPROM)

Tabla 8-1: Tipos de memorias de acceso aleatorio.

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:

• Subrutina de biblioteca para funciones de uso frecuente.


• Programas del sistema.
• Tablas de funciones.

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

Revisión 08 – 2020 177


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

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.

8-5 Tecnologías de las memorias de lectura / escritura

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

Revisión 08 – 2020 178


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

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.

Revisión 08 – 2020 179


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

Figura 8-6: Célula de una memoria estática bipolar.

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.

Revisión 08 – 2020 180


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

Figura 8-7: Célula de una memoria estática MOS.

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.

Revisión 08 – 2020 181


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

Las células estáticas presentan la propiedad de almacenar la información indefinidamente


mientras se mantiene la tensión de alimentación, pero constan de cuatro transistores (figura 8-
8), y por lo tanto necesitan un área de semiconductor elevada. Para reducir el tamaño de la
célula y elevar la capacidad de las unidades de memoria disponibles en un solo circuito integrado
se crearon las memorias dinámicas.

Fig
ura 8-9: Célula de una memoria MOS dinámica.

La impedancia entre la puerta y el surtidor de un transistor MOS es casi totalmente capacitiva


y puede ser utilizada para memorizar una información por un tiempo finito del orden de algunos
milisegundos. De esta forma se pueden suprimir los transistores T3 y T4 de la célula de la figura
8-8 obteniéndose la de la figura 8-9. Los condensadores C1 y C2 están constituidos por la
capacidad parásita entre puerta y surtidor de los respectivos transistores.
Tratando de reducir el número de transistores por célula se diseñó la representada en la
figura 8-10 que está constituida por tan sólo tres transistores y tiene líneas de selección
independientes para la lectura y la escritura.

Figura 8-10: Célula de una memoria MOS dinámica con tres transistores.

Revisión 08 – 2020 182


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

La información se almacena en la capacidad parásita existente entre la puerta y el surtidor de


T1. Para introducir información en la célula se activa la línea de selección de escritura con lo cual
se hace conducir a T3 y el estado de la entrada de información se almacena en forma de carga
en el condensador C. Para observar el estado de la célula se aplica en primer lugar la señal de
control a la puerta de T4 que se satura y de esta forma el condensador C´ se carga a la tensión
Vdd. Seguidamente se activa la línea de selección de lectura con lo cual se satura T2; si el
condensador C está cargado, T1 está saturado y la línea de salida de información se pone al nivel
de masa. Si por el contrario, C está descargado, la línea de salida de información se mantiene al
nivel de Vdd.
Las células de la figuras 8-9 y 8-10 no almacenan la información por tiempo indefinido. Por
esto, aunque no se realicen operaciones de escritura y lectura, es necesario leer periódicamente
el estado de las células y volver a introducirlo en ellas en una operación que se denomina
refresco (refreshing).
Para ello se coloca un amplificador entre la salida y la entrada de información tal como se
indica en la figura 8-11. Al aplicar la señal de control al amplificador A, éste presenta a la entrada
la información contenida en la propia célula y se produce el regrabado. Las células dinámicas se
suelen agrupar en una estructura de selección por coincidencia (3D) para formar una unidad de
memoria y no es necesario un amplificador por célula, sino por columna, realizándose
simultáneamente el regrabado de una fila y en secuencia el de las diferentes filas.

Figura 8-11: Célula dinámica de tres transistores con amplificador de refresco.

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.

Revisión 08 – 2020 183


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

8-5-1 Organización de las memorias de lectura / escritura

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.

Figura 8-12: Diagrama en bloque de una memoria de acceso aleatorio.

En la figura 8-12 se representa el diagrama de bloques de una memoria de acceso aleatorio.


Según la forma de realizar el decodificador y la conexión de los terminales de entrada y salida de
las células se tienen tres organizaciones diferentes denominadas 2D, 3D y 2 1/2D.

8-5-2 Organización 2D, por palabras o lineal

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.

Revisión 08 – 2020 184


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

Figura 8-13: Organización 2D de una memoria de acceso aleatorio.

8-5-3 Organización 3D o por coincidencia

Esta organización reduce el número de conexiones entre las posiciones de memoria y el


exterior, dividiendo las variables de dirección en dos grupos que se decodifican por separado y
seleccionando las posiciones mediante dos salidas, una de cada uno de los decodificadores
(figura 8-14). Sin duda, cuando el número de posiciones es elevado, se prefiere este tipo de
organización que es la más utilizada por los fabricantes de circuitos integrados para la realización
de memorias de acceso aleatorio. Se observa en la figura 9-14 que cada salida de los
decodificadores se conecta a 2n2/2 posiciones.
La figura 8-15 muestra una organización típica de una memoria RAM del tipo dinámica. En
este caso se escriben o leen 4 bits a la vez. Lógicamente, la matriz está estructurada en 4
matrices cuadradas de 2048 x 2048 elementos. Como se vio anteriormente, son posibles varias
disposiciones físicas. En cualquier caso, los elementos de la matriz conectan tanto a líneas
horizontales (de fila) como a verticales (de columna). Cada línea horizontal conecta al terminal de
selección de cada celda en la correspondiente fila; y cada línea vertical conecta al terminal
Entrada-Datos / detección (Data-In/Sense) de cada celda en la correspondiente columna.
Las líneas de direcciones suministran la dirección de la palabra a seleccionar. En nuestro
ejemplo se necesitan 11 líneas de direcciones para seleccionar una entre 2048 filas. Estas 11
líneas entran en un decodificador de filas, que tiene 11 líneas de entrada y 2048 de salida. La
lógica del decodificador activa una única salida de entre las 2048, definida por el patrón de bits
de las 11 líneas de entrada (211 = 2048).

Revisión 08 – 2020 185


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

Figura 8-14: Organización 3D de una memoria de acceso aleatorio.

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.

Revisión 08 – 2020 186


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

Figura 8-15: DRAM típica de 8 megabits (4M x 4).

8-6 Memorias de sólo lectura (ROM: Read Only Memory)

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.

Revisión 08 – 2020 187


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

8-6-1 Realización de las memorias ROM

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).

Figura 8-16: Esquema de una memoria ROM.

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.

Revisión 08 – 2020 188


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

8-6-2 Memorias programables de sólo lectura (PROM)

Las memorias ROM presentan el inconveniente de su falta de flexibilidad, lo cual no permite


su utilización en aplicaciones en el que el número de unidades es reducido. Por ello los
fabricantes crearon las memorias PROM. No obstante, en tales casos la operación de escritura se
realiza en un tiempo que es muchos órdenes de magnitud mayor que el tiempo necesario para la
lectura. Tales dispositivos de memoria (calificadas de borrables) son memorias de sólo lectura en
el sentido de que para cambiar la información almacenada es necesario interrumpir el proceso
digital en que interviene la memoria.
En una ROM, las líneas de dirección y las líneas de salida de bits de palabra forman un
sistema cruzado de líneas, es decir, una estructura de rejilla. En cada intersección de la rejilla
puede o no existir un dispositivo (diodo, transistor bipolar o transistor MOS), dependiendo de que
el bit de palabra correspondiente haya de ser 1 o 0. En una ROM programable (PROM) el
fabricante coloca un dispositivo de conexión en cada intersección de la rejilla. Sin embargo, en
serie con cada uno de tales dispositivos hay previsto un enlace fusible, como se observa en la
figura 8-17.

Figura 8-17: Fusible en serie con la célula de memoria.

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).

8-7 Memorias de sobre todo lectura

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”.

8-7-1 Memorias EPROM

Una variedad de la PROM es la PROM borrable (EPROM). La EPROM es programada o


quemada por el propio usuario. La programación se efectúa con un proceso en el cual se usa un
voltaje alto para transferir la carga a un capacitor “flotante”. La carga es atrapada por el
capacitor y no puede fugarse de él bajo condiciones normales. En este tipo de dispositivo, el
borrado se hace colocando el dispositivo bajo una fuente de luz ultravioleta (UV) muy intensa que
incide a través de una pequeña ventana de cuarzo en la parte superior del CI. Los electrones
absorben fotones, dándoles la energía suficiente para regresar al semiconductor. Si bien estos
dispositivos fueron alguna vez el tipo dominante de ROM programables por el usuario, han sido
reemplazados por dispositivos que se programan y borran eléctricamente.

Revisión 08 – 2020 189


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

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.

8-7-2 Memorias EEPROM

Una segunda variedad de la PROM es la PROM eléctricamente borrable, también


denominada E2PROM (E2, por sus siglas en inglés). Debido a que las EEPROM pueden ser
borradas eléctricamente, es posible borrarlas y reprogramarlas mientras permanece en el
circuito. Otra característica es que también se puede reprogramar partes del código, de un byte a
la vez.
La programación se realiza a cabo aplicando un voltaje alto en un pin determinado,
provocando que la carga sea transferida a las placas del capacitor. Para borrar la celda, el voltaje
se invierte y la carga se mueve en dirección opuesta.

8-7-3 Memorias FLASH

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.

8-8 Memorias de lectura / escritura no volátiles

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.

Revisión 08 – 2020 190


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

8-9 Comentarios finales

Al hablar de memorias semiconductoras, es imposible abarcar la totalidad del tema en este


apunte. Es así, que los objetivos planteados con este trabajo, son que el alumno maneje las
principales características que hacen al desempeño de una memoria, como así también los
diferentes tipos que existen. Se intentó ver el tema desde un punto de vista práctico, es por eso,
que en cada apartado se citan ejemplos de memorias semiconductoras, con su respectiva
distribución de pines y un breve comentario.
En el material de lectura adicional sugerido por la asignatura se puede hallar una descripción
más amplia sobre otros tipos de memorias masivas de datos o memorias secundarias de un
computador. Está de más decir, que la extensión del tema escapa a nuestros objetivos.

Revisión 08 – 2020 191


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

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:

• Rediseño de la máquina de estados para que en lugar de responder a un problema


determinado y muy específico, ahora solo responda a un grupo reducido de órdenes
simples de uso general. Con ello sentó las bases del set de instrucciones que maneja o
“entiende” todo microprocesador y de los lenguajes de máquina y ensamblador.
• Creación de una lista de tareas compuestas por las órdenes simples definidas con
anterioridad, encadenadas una a continuación de la otra, de manera que se pudieran
resolver un determinado problema. Nace aquí el concepto de programa, como un listado de
instrucciones que se ejecutan cíclicamente. Si cambian las condiciones o los requisitos del
problema, solamente se modifica el listado de tareas pero no el circuito electrónico, este
permanece inalterable sea cual sea la tarea.
• Creación de un medio de almacenamiento para guardar el listado de las tareas a realizar.
Así, la máquina de estados buscará en este dispositivo los comandos uno a continuación
del otro. Con esto toma forma el concepto de memoria. Ya existían por entonces
dispositivos similares a una memoria, tales como tarjetas perforadas usadas en las
máquinas textiles.

Revisión 08 – 2020 192


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

• 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.

9-1-2 Las instrucciones

Contrario a lo que podría pensarse, un microprocesador simple no realiza tareas complejas. A


pesar de que es capaz de leer un teclado, mostrar imágenes en un monitor, controlar un proceso
industrial complejo, realizar cálculos matemáticos etc., un microprocesador básicamente solo
puede realizar dos tipos de operaciones: movimientos de datos y operaciones lógicas y
matemáticas simples.
Es la cantidad de operaciones simples que puede realizar por segundo lo que lo hace
poderoso. Un microprocesador pequeño en general solo puede realizar sumas, restas y
desplazamientos, pero no multiplicar o dividir. Sin embargo, a una velocidad baja de trabajo, por
ejemplo 4MHz, si tarda un microsegundo en realizar una suma, en un segundo puede llevar a
cabo 1 millón de sumas simples. Una multiplicación es una suma repetida o sumas y
desplazamientos. De esta manera, en un segundo puede realizar varios cientos de
multiplicaciones.

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.

Revisión 08 – 2020 193


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

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.

Revisión 08 – 2020 194


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

bit n-1 bit 0


CÓDIGO DE OPERACIÓN DATO

Figura 9-4a: comando genérico orientado realizar una operación con el dato implícito en el.

bit n-1 bit 0


CÓDIGO DE OPERACIÓN DIRECCIÓN ORIGEN DIRECCIÓN DESTINO

Figura 9-4b: comando genérico orientado realizar una operación con dirección de origen del dato

bit n-1 bit 0


CÓDIGO DE OPERACIÓN DIRECCIÓN DE SALTO

Figura 9-4C: comando genérico orientado realizar una operación de salto incondicional.

9-2 El modelo de Von Neumann

El modelo de Von Neumann es un concepto de procesador simple utilizado para comprender


el funcionamiento interno de un microprocesador. La figura 9-5 muestra es diagrama de bloques
simplificado del Modelo de Von Newman.

UNIDAD CENTRAL DISPOSITIVOS


MEMORIA DE DE ENTRADA Y
PROCESAMIENTO SALIDA

Figura 9-5: Modelo simplificado de Von Neumann.

Se observa que el modelo está compuesto por tres bloques, cuyas características son:

• Memoria: medio de almacenamiento en donde se guardan tanto las instrucciones a


ejecutar como los datos con los que se va a trabajar. Allí también se guardan los
resultados producidos por el trabajo del microprocesador. En otros modelos de
microprocesadores, como el modelo Harvard, existen dos memorias, una para
almacenamiento de instrucciones y otra para almacenamiento de datos.

• 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.

• Módulo de entradas y salidas, es el medio de comunicación del microprocesador con el


mundo exterior, más precisamente con otros dispositivos llamados periféricos: teclados,
monitores, mouses, dispositivos de almacenamiento masivo, etc. El módulo de entradas y

Revisión 08 – 2020 195


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

salidas convierte al microprocesador en un sistema abierto que permite procesar


información de muchas fuentes y controlar procesos de todo tipo.

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.

9-2-1 El ciclo de instrucción


El funcionamiento interno del modelo de Von Neumann se basa en un procedimiento
repetitivo de cuatro pasos para ejecutar un programa. Los pasos se denominan Búsqueda,
Decodificación, Ejecución, y Almacenamiento. Durante cada paso, la CPU realiza una serie de
operaciones sencillas con el fin de encausar los datos dentro del circuito interno:

BÚSQUEDA

DECODIFICACIÓN

EJECUCIÓN

ALMACENAMIENTO

Figura 9-6: Ciclo de instrucción.

• Recuperación de la instrucción, también denominado fetch. En este ciclo la CPU recupera


la instrucción desde la memoria. Para ello utiliza un contador binario, el contador de
programa (PC). Las salidas del PC forman el bus de direcciones que apunta a la posición de
memoria desde donde se obtendrá la próxima instrucción a ejecutar. El PC es
incrementado luego de cada ciclo de instrucción, de manera que apuntará a la posición de
la próxima línea de programa. El incremento depende del ancho de palabra que maneja el
microprocesador y de cómo está organizada la memoria. En el caso más simple, para un

Revisión 08 – 2020 196


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

procesador de 8 bits y memoria de 8 bits, el PC se incrementa en una unidad en cada ciclo


de instrucción.
La instrucción recuperada se graba en el registro de instrucciones (RI).

• Decodificación de la instrucción. Parte de la palabra guardada en el RI es el código de


operación. Este es una combinación binaria que identifica a uno de los comandos del set
de instrucciones del microprocesador. La CPU toma el código de operación y lo decodifica
generando las acciones necesarias para iniciar la ejecución.

• 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.

9-2-2 La Unidad Central de Proceso

La Unidad Central de Proceso o CPU es la parte más importante de un microprocesador. La


forma en que está compuesta, es decir su arquitectura interna, define el tipo de operaciones que
podrá realizar el microprocesador. Se compone de dos partes: la unidad de control (UC) y la
unidad de proceso (UP), como se observa en el diagrama de bloques de la figura 9-7.

CPU
UNIDAD DE
CONTROL

UNIDAD DE
PROCESO

Figura 9-7: La Unidad Central de Procesamiento.

La unidad de control (UC) se encarga de la recuperación y decodificación de la instrucción.


Está formada por la red de recuperación de instrucciones y la máquina de estados. La red de
recuperación de instrucciones se encarga de proveer la dirección de la posición de memoria
desde donde provendrá la próxima instrucción. Está compuesta por un contador binario, el
contador de programa (PC). Las salidas del PC permiten direccionar toda la memoria de
programa. El rango de cuenta de este contador determina cuánta memoria es capaz de
direccionar un microprocesador. Así, un micro con un PC de 16 bits puede direccionar 64K de
memoria.
Otra parte de la red de recuperación de instrucciones es el registro de instrucciones (RI). Este
es un registro de almacenamiento formado por un grupo de flip-flops D. En el RI se va a cargar el
contenido de la posición de memoria actualmente direccionada por el PC. Las entradas del RI
están conectadas al bus de datos externo del microprocesador.

Revisión 08 – 2020 197


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

La máquina de estados es “cerebro” del microprocesador . Ella es la encargada de la


decodificación de la instrucción y a través de las señales generadas por su red combinacional de
salidas, controla la ejecución de la misma. El código de operación proveniente del RI forma el
grupo de variables de entrada que junto con el estado actual definen el próximo estado de la
máquina. La figura 9-8 muestra con más detalle la estructura interna de la unidad de control.
UNIDAD DE CONTROL

Red de
recuperación de
instrucciones

MÁQUINA Bus de
DE direcciones
PC
ESTADOS MEMORIA
Bus de datos
RI

Figura 9-8: La Unidad de control: red de recuperación de instrucciones.

La unidad de proceso (UP) es la encargada de ejecutar la instrucción en curso dirigida por la


UC. Esta provee las señales de comando a través de la red combinacional de salida de la
máquina de estados.
La UP está formada por dos grandes bloques: la ALU o Unidad Aritmético-Lógica y el camino de
datos. La ALU fue estudiada en el capítulo 5, dedicado a los circuitos aritméticos. Prácticamente
la ALU interviene en casi todas las instrucciones. Entre de las tareas que realiza se pueden
mencionar: dejar pasar un dato, complementarlo, sumarle o restarle un número, rotar un dato,
operaciones básicas del algebra de Boole, etc.
El camino de datos está formado por multiplexores, demultiplexores y buffers tri-state que se
encargan de encausar los datos dentro del microprocesador. Su función es proveer el medio
físico para que los datos lleguen a la ALU desde los diferentes orígenes (RAM, RI, registros
internos, etc.) y que los resultados se guarden en su destino final, según lo establecido en los
diferentes campos de la instrucción. El camino de datos es un circuito rígido que no es
modificable. Su arquitectura determina el tipo y variedad de operaciones que puede realizar un
procesador. Un camino de datos simple determina instrucciones con escasa variedad de origen y
destino de los datos. Como consecuencia por ejemplo, para mover un dato de un lugar a otro del
procesador, será necesario ejecutar más de una instrucción. Esto trae aparejado una mayor
lentitud en la velocidad de ejecución y mayor espacio de memoria ocupado por el programa. A
favor, el circuito es sencillo de diseñar y construir, con menor probabilidad de fallo.
Por el contrario, un camino de datos complejo permite tener muchos orígenes y destinos de
los datos en las instrucciones, y una mayor variedad de las mismas. La consecuencia lógica es
mayor velocidad de proceso, programas más compactos, instrucciones más poderosas, pero a la
vez un circuito interno más complejo.
La figura 9-10 muestra un diagrama de bloques simplificado de la unidad de proceso dentro
de la CPU.

Revisión 08 – 2020 198


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

UNIDAD CENTRAL DE PROCESO


UNIDAD DE CONTROL

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

Figura 9-9: La Unidad de Proceso: camino de datos.

9-2-3 Ejecución de una instrucción

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.

Revisión 08 – 2020 199


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

UNIDAD CENTRAL DE PROCESO


UNIDAD DE CONTROL

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

Figura 9-10: Ciclo de instrucción, fase de búsqueda.

Durante la fase de decodificación, el campo de la instrucción correspondiente al código de


operación es ingresado a la máquina de estados de la UC. Los bits del código de operación
constituyen las entradas externas de la máquina. Decodificar la instrucción significa que la red
combinacional interna genera las funciones lógicas necesarias para que los flip-flops salten a un
nuevo estado interno. El estado al que saltan está directamente relacionado con la fase siguiente
de ejecución de la instrucción. La figura 9-11 grafica la fase de decodificación.

Revisión 08 – 2020 200


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

UNIDAD CENTRAL DE PROCESO


UNIDAD DE CONTROL

Red de
recuperación de
instrucciones

MÁQUINA
DE
PC
ESTADOS MEMORIA

RI

BANCO DE
REGISTROS
ALU

Camino de
datos

Figura 9-11: Ciclo de instrucción, fase de decodificación.

En la fase de ejecución, la UC proporciona las señales de comando para que la Unidad de


Proceso encause los datos. Esta acción significa que parte de la información guardada en el RI es
conducida a través del camino de datos hasta el lugar de ejecución. Supóngase que se trata de
una instrucción que carga un dato en un registro destino ambos implícitos en los campos
argumento y destino. La UC enviará las señales necesarias a la Unidad de Proceso, para que el
campo argumento guardado en el RI viaje a través del camino de datos hasta el registro
especificado en el campo destino. Si ahora que se trata de una suma del campo argumento con
el contenido de un registro especificado en el campo origen. La UC seleccionará el registro
especificado en el campo origen para que aplique su contenido a una de las entradas de la ALU.
Al mismo tiempo, el contenido del campo argumento se aplica en la otra entrada de la ALU.
Finalmente, la UC selecciona la operación a realizar por la ALU. La figura 9-12 ilustra la fase de
ejecución.

Revisión 08 – 2020 201


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

UNIDAD CENTRAL DE PROCESO


UNIDAD DE CONTROL

Red de
recuperación de
instrucciones

MÁQUINA
DE
PC
ESTADOS MEMORIA

RI

BANCO DE
REGISTROS
ALU

Camino de
datos

Figura 9-12: Ciclo de instrucción, fase de ejecución.

Finalmente, en la fase de almacenamiento, el resultado de la operación realizada por la ALU


se guarda en el dispositivo especificado en el campo destino del RI. La UC controla la UP, para
que a través del camino de datos, el resultado viaje hacia el dispositivo destino. Al final de esta
fase, la UC habilita el reloj del contador de programa para que incremente su cuenta en una
unidad. De esta manera, sus salidas apuntarán a la siguiente dirección de memoria en donde se
halla la próxima instrucción a ejecutar. La máquina de estados salta al estado correspondiente a
la búsqueda, dando inicio a un nuevo ciclo de instrucción. Si se tratase de una instrucción de
salto incondicional, durante esta fase, el contador de programa se carga con el contenido del
campo dirección de salto del RI. De esta manera, en el próximo ciclo de instrucción, el PC
apuntará a una dirección que no es la consecutiva a la de la instrucción actualmente en
ejecución.
La figura 9-13 grafica los movimientos de datos de la fase de almacenamiento.

Revisión 08 – 2020 202


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

UNIDAD CENTRAL DE PROCESO


UNIDAD DE CONTROL

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

Figura 9-13: Ciclo de instrucción, fase de almacenamiento.

Revisión 08 – 2020 203


Universidad Tecnológica Nacional Asignatura: Técnicas Digitales I
Facultad Regional San Francisco Profesor: Ing. Gabriel E. Argañaras

BIBLIOGRAFÍA

1. Sistemas Digitales y Tecnología de Computadores.


José María Angulo Usategui, Javier García Zubía.
Editorial Paraninfo.

2. Fundamentos de lógica digital con diseño VHDL


Stephen Brown - Zvonko Vranesic
Editorial Mc Graw Hill

3. Circuit Desing with VHDL.


Volnei A. Pedroni.
TLFeBOOK.

Revisión 08 – 2020 204

También podría gustarte