Vous êtes sur la page 1sur 43

3.

1 Circuitos combinacionales básicos


Introducción

En un circuito combinacional, las salidas dependen directamente del valor de las entradas y no pueden, por
tanto, almacenar ningún tipo de información, sólo realizan transformaciones internas en base a sus entradas.
Estos circuitos quedan caracterizados mediante funciones booleanas.

Cada bit de salida de un circuito combinacional se obtiene mediante una función booleana aplicado a las
variables de entrada. Así, si un circuito tiene n salidas, necesitaremos n funciones booleanas para caracterizarlo.

En la Figura 3.1 vemos un circuito combinacional que tiene tres entradas: A, B y C, y dos salidas F, G, que son
dos funciones booleanas que dependen de las variables de entrada: F(A,B,C) y G(A,B,C). Por ejemplo, estas
funciones podrían representarse de la siguiente manera:

F=A·B+C

Figura 3.1. Circuito combinacional de tres entradas y dos salidas.

Usando las compuertas lógicas básicas se pueden realizar combinaciones, es decir, sólo con tres tipos de
compuertas (AND, OR, NOT) se puede implementar cualquier función booleana.

Ejemplo:

Analizar el siguiente circuito y obtener la expresión booleana de la salida:


Como puedes observar, el circuito está constituido por dos compuertas: unaAND de tres entradas y un
inversor. A la salida de la compuerta AND se tiene el producto de las tres variables de entrada A · B · C y al
pasar por el inversor se obtiene la expresión final de F, que es:

Ejemplo:

Obtener la expresión booleana de salida del siguiente circuito:

Para obtener la fórmula observa lo siguiente.

 La primera compuerta AND tiene un inversor a su entrada A y la entrada B llega normal, por lo que

quedaría:
 La segunda compuerta AND tiene un inversor en su entrada C y la entrada A llega también normal, por

lo que quedaría:
 Las salidas de ambas compuertas AND se unen mediante un OR, por lo que la fórmula final sería:

3.1 Circuitos combinacionales básicos


3.1.1 Otras puertas

Con las puertas básicas podemos implementar cualquier función booleana; sin embargo, existen otras puertas
que se utilizan mucho en electrónica digital.

 NAND
 NOR
 XOR

Ejemplo:

Analizar el siguiente circuito y obtener la expresión booleana de la salida:


A la salida de la puerta NAND tenemos la expresión: , que se introduce en una de las entradas de
la puerta NOR, y por la otra B. El resultado es:

Y aplicando las leyes de DeMorgan nos queda:

Es decir, que es un circuito nulo. Con independencia de lo que se introduzca por las entradas, a su salida
siempre se obtendrá ’0’.

3.1 Circuitos combinacionales básicos

3.1.2 Diseño de circuitos combinacionales, el proceso de diseño

En ingeniería se entiende por diseñar al proceso por el cual se obtiene el objeto pedido a partir de unas
especificaciones iniciales. Cuando diseñamos circuitos combinaciones, estamos haciendo lo mismo; partimos
de unas especificaciones iniciales y obtenemos un esquema, o plano, que indica qué puertas básicas u otros
elementos hay que utilizar, así como la interconexión que hay entre ellos.

Los pasos que seguiremos para el diseño son los siguientes:

Estudio de las especificaciones iniciales, para entender realmente qué es lo que hay que diseñar. Este punto
puede parecer una trivialidad, sobre todo en el entorno académico donde las especificaciones son muy claras.
Sin embargo, en la realidad es muy difícil llegar a comprender o entender qué es lo que hay que diseñar.

Obtención de las tablas de verdad y expresiones booleanas necesarias. En el entorno académico éste
suele ser el punto de partida. Nos describe qué función es la que se quiere implementar y lo hacemos.

Simplificación de las funciones booleanas. ¡¡¡Este punto es importantísimo!!! No basta con implementar una
función y ya está. ¡¡Somos ingenieros!!. ¡No! Hay que implementar la mejor función, de manera que obtengamos
el mejor diseño posible, reduciendo el número de compuertas lógicas empleadas, el número de circuitos
integrados o minimizando el retraso entre la entrada y la salida.

Implementación de las funciones booleanas utilizando compuertas lógicas. Aquí podemos tener
restricciones, como veremos. Puede ser que por especificaciones del diseño sólo se dispongan de puertas tipo
NAND. O puede ser que sólo podamos utilizar puertas lógicas con el mínimo número de entradas. En ese caso
habrá que tomar la función más simplificada y modificarla para adaptarla a este tipo de compuertas. El resultado
de esto es la obtención de un esquema o plano del circuito.

Construcción. El último paso es llevar ese plano o circuito a la realidad, construyendo físicamente el diseño.

3.2 Conversiones de código

Tema 3.10

3.2 Conversiones de código

Como recordarás, en el Tema 1.6 Conversiones de códigos numéricos y alfanuméricos, vimos que existen
varios códigos para representar en el sistema binario. Podemos trabajar con sistemas o circuitos digitales que
utilicen códigos binarios distintos, sólo que necesitamos usar un convertidor de código. En este tema
analizaremos las conversiones de código de BCD a binario utilizando circuitos sumadores.

Un convertidor de código es un circuito que hace dos sistemas compatibles, aun cuando cada uno use un código
binario diferente (Morris 2003).

Suponemos que deseamos convertir el número 41 en BCD a binario, utilizando un código BCD de 4 bits. El
grupo de la derecha representa al número 1 (unidades) y el grupo de la derecha representa el número 40
(decenas), en la siguiente tabla se explica el valor de cada bit, según el grupo en el que se encuentra.

80 40 20 10 8 4 2 1
0 1 0 0 0 0 0 1

Paso 1: Representaremos cada número BCD en su equivalente en binario: 1= 00000001 40= 00101000 Paso
2: Sumar las representaciones binarias

00000001
+00101000
00101001

Por lo tanto, el 41 en BCD (00000001) = binario (00101001).

Ya sabemos como se realiza manualmente la conversión de código, ahora vamos a utilizar circuitos lógicos
para implementarla. Una vez que se determina la representación binaria de cada 1 del número BCD, se pueden
emplear circuitos sumadores para sumar los 1 de cada columna para la representación binaria. Los 1 aparecen
en una determinada columna, sólo cuando los correspondientes bits BCD valen 1. Por lo tanto, la aparición de
un 1 BCD puede utilizarse para generar el 1 binario apropiado en la columna correspondiente de la estructura
del sumador. Para manejar un número decimal de dos cifras (dos potencias de diez), en código BCD,
necesitamos ocho líneas BCD de entrada y siete líneas binarias de salida. Se necesitan siete bits binarios para
representar número de 0 a 99.

Convertidores MSI BCD-binario y binario-BCD


Para implementar un codificador de BCD a binario o viceversa se puede usar un dispositivo lógico programable
(PLD) que serán vistos al final de este módulo. Si requerimos convertir de BCD a binario podemos utilizar el
dispositivo 74184; por el contrario, si se requiere convertir de binario a BCD requerimos del dispositivo 74185.
Éstos son convertidores de 6 bits y se muestran en las Figuras 3.2 y 3.3.

Figura 3.2. Convertidor BCD-binario de 6 bits 74184.

Figura 3.3. Convertidor BCD-binario de 6 bits 74185.

3.3 Circuitos aritméticos


Las operaciones aritméticas son muy importantes no sólo en computadoras, sino en sistemas que trabajan con
números. Muchas veces hemos realizado sumas, restas, multiplicaciones y divisiones en una hoja de cálculo,
o al pagar varios productos en un supermercado, la cajera utiliza un sistema de información para calcular el
total a pagar. Para nosotros estas operaciones son transparentes y no nos detenemos a analizar la forma en
que los circuitos aritméticos realizan estas operaciones. El desarrollo de los circuitos aritméticos se realiza a
partir de la combinación adecuada de puertas lógicas, lo que implica una gran rapidez de cálculo.
Los circuitos aritméticos que realizan las operaciones aritméticas son:

 Circuitos sumadores
 Circuitos restadores.

Aunque el dispositivo lógico básico es el sumador, a partir de éste y mediante la representación de números
negativos, se obtiene el dispositivo restador. Las operaciones más complejas de multiplicación y división se
obtienen a partir de algoritmos basados en sumas y restas sucesivas.

La combinación de todos estos dispositivos da lugar a la Unidad Aritmético-Lógica, ALU, núcleo esencial en la
arquitectura de un microprocesador.

3.3 Circuitos aritméticos


3.3.1 Circuitos sumadores.

Suma: Recordarás que en el Módulo 1 se analizaron las sumas con números binarios y los elementos
involucrados eran los dos números a sumar y en algunos casos un acarreo. Por lo que el circuito lógico
denominado sumadordebe recibir como entrada A el primer número binario, entrada B el segundo número
binario, y entrada C el acarreo; el resultado se expresará en dos salidas: la suma y el acarreo de salida.
Suponemos que se desea realizar la siguiente suma binaria:

El sumador hace lo siguiente:

 Paso 1: Sumar 1 + 1
 Paso 2: Sumar 1 + 1 y el acarreo del paso anterior.

Existen dos circuitos sumadores: el circuito semisumador y el circuito sumador.

Circuito semisumador, el cual admite dos dígitos binarios en sus entradas y genera dos dígitos binarios en
sus entradas y genera dos dígitos binarios en sus salidas: un bit de suma y un bit de acarreo (Floyd, 2004).
Observe la figura 3.4:
Figura 3.4 Símbolo lógico de un semisumador.

Lógica del semisumador: A partir del funcionamiento lógico de un semisumador podemos obtener la siguiente
tabla, en donde el acarreo de salida puede representarse como una operación AND de las variables de entrada:

Además, la salida correspondiente a la suma (Si) es 1 sólo si las variables Ay B son distintas. Por tanto, la suma
puede expresarse como una operación OR exclusiva de las variables de entrada.

Por lo tanto, podríamos obtener la tabla de verdad de un semisumador de la siguiente forma:

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

Tabla de verdad de un semisumador.

Observe la figura 3.5:


Figura 3.5. Circuito lógico del semisumador.

Circuito sumador. Este tipo de circuito acepta dos bits de entrada y un acarreo de entrada, y genera una salida
de suma y un acarreo de salida.

Observe la figura 3.6:

Figura 3.6 Símbolo lógico de un sumador completo.

3.3 Circuitos aritméticos

3.3.2 Circuitos restadores.

Resta: Se requieren dos entradas: A (minuendo) B (substraendo) y C (acarreo negativo), y la salida será el
resultado de la resta y el acarreo negativo.

Existen dos tipos de circuitos restadores:

Circuito semirrestador (HS) o restador medio:

Es un circuito combinacional con dos entradas, Ai y Bi y dos salidas Ri y Ci + 1. La salida Ri representa el


resultado de la resta aritmética de las entradas Ai y Bi (Ai – Bi) y la salida Ci+1, el arrastre de la resta (“me llevo
uno”). Observe la figura 3.7
Figura 3.7. Semirrestador.

Lógica del semirrestador:

A partir del funcionamiento lógico de un semirrestador podemos obtener la siguiente tabla, en donde el acarreo
de salida puede representarse como una operación AND de las variables de entrada:

Ci+1 = Ai' · Bi

Además, la salida correspondiente a la resta (Ri) es 1 sólo si las variables Ay B son distintas. Por tanto, la resta
puede expresarse como una operación OR exclusiva de las variables de entrada.

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

Tabla de verdad de un semirrestador.

Un restador completo (FS)

Es un circuito combinacional con tres entradas Ai, Bi y Ci y dos salidas Ri y Ci + 1. La salida Ri representa el
resultado de la resta aritmética de las entradas Ai, Bi y Ci (Ai – Bi – Ci) y la salida Ci+1, el arrastre.
Figura 5. Restador.

Un restador completo está compuesto por las siguientes funciones:

A B C Ci+1 Ri
0 0 0 0 0
0 0 1 1 1
0 1 0 1 1
0 1 1 1 0
1 0 0 0 1
1 0 1 0 0
1 1 0 0 0
1 1 1 1 1

Tabla de verdad del restador.

3.4 Circuitos integrados ALU


3.4 Circuitos integrados ALU

Existen varios circuitos integrados disponibles que se denominan unidades aritméticas-lógicas (ALU), aunque
no tienen las capacidades totales de una unidad aritmética lógica de una computadora. Los chips de las
unidades aritméticas y lógicas son capaces de realizar diversas operaciones aritméticas y lógicas en entradas
de datos binarios. La operación específica que realiza un CI ALU se determina mediante un código binario
específico aplicado a sus entradas SELECT de función. Algunos de los circuitos integrados ALU son muy
complejos, por lo tanto, en este módulo se explicará un chip simple pero poderoso denominado ALU
74LS382/HC382, para mostrar los conceptos básicos de todos los chips.

ALU 74LS382/HC382:

Características generales:

Circuito integrado de 20 pines.

 Permite operar con dos números de entrada de cuatro bits.


 Produce un resultado de salida de cuatro bits.

 La entrada SELECT de tres bits permite realizar ocho operaciones diferentes:

Observe la figura 3.8:

Figura 3.8. ALU 74LS382/HC382.

Como ya se mencionó, existen ocho operaciones básicas en una ALU, las cuales se analizan en la Tabla 1.

3.5 Procedimiento de análisis


3.5 Procedimiento de análisis

Si hablamos de análisis entendemos lo contrario de diseño. Cuando diseñamos partimos de unas


especificaciones, obtenemos una tabla de verdad o una función booleana, la simplificamos y finalmente la
implementamos con compuertas lógicas. Por el contrario, en el análisis partimos de un circuito ya establecido y
tendremos que obtener bien la tabla de verdad, bien la expresión booleana, lo que nos permitirá analizar si el
circuito era el más óptimo o nos permitirá hacer una reimplementación de dicho circuito utilizando otra
tecnología.

Pero si el circuito tiene pocas entradas (cuatro o menos), lo mejor es hacer la tabla de verdad.

Veamos un ejemplo:

Obtener la tabla de verdad del siguiente circuito:

El problema se puede realizar de varias maneras. Y ese precisamente suele ser uno de los problemas. ¿Qué
camino selecciono para obtener la tabla de verdad?. Por un lado podemos obtener la expresión de F, pasando
las puertas lógicas a operandos del álgebra de Boole y luego obtener la tabla de verdad; o podemos obtener
directamente la tabla de verdad. Sea cual sea el camino que hayamos seleccionado, lo primero que haremos
será tomar puntos intermedios: seleccionamos las salidas de las puertas lógicas y les asignamos una variable
boolena:

En este circuito hemos tomado dos puntos intermedios, el a y el b. Si decidimos obtener F usando el álgebra
de Boole, la expresión que obtenemos es:
El siguiente paso es representar el circuito en una tabla de verdad. Sin embargo, suele ser más sencillo obtener
la tabla de verdad directamente del diseño y luego aplicar Karnaugh para obtener la expresión más simplificada
de F, si fuese necesario. En la tabla de verdad dibujaremos nuevas columnas en las que aparecen los puntos
intermedios, que nos permitirán ir anotando los cálculos intermedios para obtener F más fácilmente. La tabla de
verdad sin rellenar es:

Y ahora vamos columna por columna, rellenando la información. Comenzaremos por la columna a. Hay que
hacer la NAND de B y C. Para no confundirnos, dibujamos la tabla NAND para dos variables:

Y nos fijamos en que sólo vale ’0’ cuando ambas variables son 1. Recorremos las filas de B y C buscando el
caso en el que B = 1 y C = 1, y anotamos un ’0’. Para el resto de casos a = ’1’. Nos queda lo siguiente:
Se ha marcado con “negrita” los dos casos en los que B = 1 y C = 1. Para el resto de casos “no hemos tenido
que pensar”, se puede rellenar de forma directa. Este método nos permite obtener las tablas de verdad de una
manera muy rápida y cometiendo muy pocos errores.

Continuemos con la siguiente columna. En este caso hay que rellenar una columna con el producto entre B y
A. Nuevamente nos fijamos en la tabla de la operación AND y vemos que el resultado sólo vale ’1’ cuando B =
1 y A = 1. Para el resto de casos se tendrá ’0’:

Y por último ya podemos obtener el valor de F, aplicando una operación OR a la columna a con la b. Por la
definición de la operación OR (mirando su tabla), sabemos que sólo vale 0 cuando ambos operandos son ’0’.
Buscamos ese caso en la tabla y en el resto de filas ponemos un ’1’. La tabla final es:
3.6 Circuitos NAND y NOR múltiples
3.6 Circuitos NAND y NOR múltiples

Los circuitos combinacionales se construyen más a menudo con compuertas NAND o NOR, en lugar de
compuertas AND y OR, y es que las compuertas NAND y NOR son más comunes desde el punto de vista de
hardware, ya que están disponibles en la forma de circuitos integrados.

Implementación de funciones con puertas NAND

Sólo con las compuertas NAND es posible implementar cualquier función boolena. Para ello habrá que hacer
transformaciones en la función original para obtener otra función equivalente pero que se pueda obtener sólo
con compuertas NAND. Para ver cómo podemos hacer eso, implementaremos las puertas NOT, AND, OR y
XOR usando sólo compuertas NAND.

Para refrescar ideas, a continuación se muestra una compuerta NAND de dos entradas y las formas de expresar
el resultado:

Figura 3.9. Entrada y salida de una compuerta NAND.

Implementación de una compuerta NOT

Si introducimos la misma variable booleana por las dos entradas de una NAND, obtendremos lo siguiente:
Gráficamente:

Figura 3.10 Compuerta NOT implementada con NAND.

Tenemos un circuito por el que si introducimos una variable A, obtenemos a la salida su complementario, es
decir, se comporta exactamente igual que un inversor.

Implementación de una compuerta AND

Tenemos que diseñar un circuito con compuertas NAND que implemente la función . Lo que
haremos será aplicar propiedades del álgebra de Boole a esta función hasta dejarla de forma que la podamos
implementar directamente con compuertas NAND. Podemos hacer lo siguiente:

La expresión se implementa con una compuerta NAND y la expresión será, por tanto,
la negación de la NAND. Como ya sabemos como negar utilizando una compuerta NAND, el circuito resultante
es:

Figura 3.11 Compuerta AND implementada con NAND.

Implementación de una compuerta OR

La función que queremos implementar con compuertas NAND es: . Aplicando


propiedades del álgebra de Boole, esta expresión la convertimos en la siguiente:

Que es el negado de un producto de dos términos, es decir, es una compuerta NAND aplicada a y
:
Figura 3.12. Compuerta OR implementada con NAND.

Implementación de una compuerta XOR

La función a implementar con compuertas NAND es: . Podemos


modificarla de la siguiente manera:

No nos dejemos asustar por aparente complejidad de esta expresión. Fijémonos en que la expresión es la suma

de dos términos negados, es decir, que tiene la forma de: . ¡Y esto es una compuerta
NAND!, que lo podemos poner de la siguiente manera:

El término tiene también la forma de una compuerta NAND, puesto que es del

tipo . Y lo mismo le ocurre al término . El circuito nos queda así:

Y finalmente hay que obtener utilizando inversores con compuertas NAND:


Ya tenemos implementada la función XOR sólo con compuertas NAND.

Implementación de funciones con compuertas NOR.

Lo mismo que con las compuertas NAND, con las compuertas NOR se puede implementar cualquier función
booleana. Ahora veremos cómo se pueden implementar el resto de las compuertas lógicas. Recordemos que
las expresiones a las salidas de las puertas NOR son:

Figura 3.13 Entradas y salida de la compuerta NOR.

Implementación de una compuerta NOT

Se hace de la misma manera que con las compuertas NAND. Si introducimos la misma variable por las dos
entradas, obtenemos la variable negada:

Figura 3.14. Compuerta NOT implementada con NOR.

Implementación de una puerta OR

La función a implementar es: . Esta expresión la podemos poner de la siguiente manera:


Es decir, que podemos utilizar una compuerta NOR y luego un inversor, que ya sabemos como implementarlo
con compuertas NOR. Lo que nos queda es:

Figura 3.15 Compuerta OR implementada con NOR.

Implementación de una compuerta AND.

La función a implementar es . Podemos realizar las siguientes modificaciones para que


pueda ser implementada con compuertas NOR:

Y el circuito quedaría así:

Figura 3.16 Compuerta AND implementada con NOR.

Implementación de una puerta XOR

La función a implementar es: . Haciendo las siguientes modificaciones:

Y de la misma manera que hemos hecho con las compuertas NAND, vamos a ir implementando esta función

poco a poco. Primero vemos que hay una compuerta NOR cuyas entradas son: y ,y
que está negada:
A continuación implementamos y , teniendo en cuenta que los podemos reescribir de
esta forma:

Gráficamente:

Uniendo “todas las piezas”, el circuito final que nos queda es:

Listo, hemos implementado la compuerta XOR sólo con compuertas NOR.

Ejemplo

Implementar la siguiente función utilizando únicamente compuertas NAND. La función está simplificada al
máximo:
Tendremos que aplicar la propiedades del álgebra de Boole para dejar esta expresión de forma que la podamos
implementar con compuertas NAND. Como el enunciado no nos pone ninguna restricción, podremos usar
compuertas NAND con el número de entradas que queramos. Una compuerta NAND de tres entradas puede
realizar las siguientes operaciones:

Si aplicamos una doble negación a F y luego aplicamos sucesivamente las leyes de DeMorgan:

Esta función es inmediata implementarla con compuertas NAND:

3.7 Circuitos combinacionales en CI


3.7 Circuitos combinacionales en CI

Hasta este momento hemos diseñado circuitos en papel, pero ¿cómo construir un circuito físicamente? Todas
las compuertas lógicas se encuentran encapsuladas dentro de circuitos integrados (CI).

¿Por qué los sistemas digitales modernos utilizan CI en su diseño?

Debido a su reducido tamaño, alta fiabilidad, bajo coste y bajo consumo de potencia.

Hay una familia de circuitos integrados, 74XX, que está estandarizada de manera que se ha definido la
información que entra o sale por cada una de las patas. Así pueden existir multitud de fabricantes, pero todos
respetando el mismo estándar.
Por las patas denominadas VCC y GND se introduce la alimentación del chip, que normalmente será de 5v,
aunque esto depende de la tecnología empleada.

Por el resto de patas entra o sale información binaria codificada según la tecnología empleda. Por ejemplo, se
puede asociar 5v al dígito '1' y 0v al dígito '0'.
A la hora de fabricar un diseño, estos chips se insertan en una placa y se interconectan las patas con el resto
de chips o partes de nuestro circuito. La interconexión se realiza por medio de cables. Cuando se realiza una
placa profesional, las interconexiones entre los chips son pistas de cobre en la superficie de la placa. Estas
placas reciben el nombre de placas de circuito impreso, o por sus siglas en inglés PCB (printed circuito Board).
En la Figura 4.7 se muestra la parte inferior de una de estas placas. Por los agujeros se introducen las patas de
los componentes y luego se sueldan. Los distintos agujeros están interconectados por pistas de cobre. Además,
existe una capa de un barniz verde para que las pistas no estén “al aire” y se puedan producir cortocircuitos.

Existen otras maneras de implementar circuitos digitales sin utilizar los chips tradicionales, es decir, sin tener
que recurrir a los chips de la familia 74XX. Esta nueva forma de diseñar se denomina lógica programable.
Existen unos circuitos integrados genéricos (PALs,GALs, CPLDs,FPGAS), que contienen en su interior muchas
puertas lógicas y otros componentes.

El diseñador especifica los circuitos digitales que quiere diseñar utilizando un lenguaje de descripción hardware
(como por ejemplo el VHDL). Una herramienta software, conocida como sintetizador, convierte esta descripción
en un formato que indica cómo se deben interconectar los diferentes elementos de este chip genérico. El chip
“se configura” (es decir, realiza conexiones entre sus elementos internos) según se indica en el fichero
sintetizado. Con esta técnica se pueden diseñar desde circuitos simples hasta microprocesadores. El hardware
está siguiendo la misma tendencia que el software. Los diseñadores de ahora utilizan sus propios “lenguajes
de programación” para especificar el hardware que están diseñando.

¿Cuáles son los puntos clave que ebo identificar en un circuito digital?

Reconocer los encapsulados de los CI y saber como se enumeran los pines.

3.7 Circuitos combinacionales en CI


3.7.1 Encapsulados de los circuitos integrados

Se clasifican según la forma en que se montan sobre las tarjetas de circuitos impresos y pueden ser:

 Inserción: Tienen unos pines que se insertan en los taladros de la tarjeta de circuito impreso y se
sueldan a las pistas de la cara opuesta. Un ejemplo de este circuito es el encapsulado DIP (dual in-
line package).

Figura 3.17 Encapsulado DIP.

 Montaje superficial: Es un método más moderno que permite ahorrar espacio alternativo al montaje
de inserción. Los pines de los encapsulados de montaje superficial se sueldan directamente a las pistas
de una cara de la tarjeta, dejando la otra cara libre para añadir circuitos adicionales.
Figura 3.18 Encapsulado SOIC.

Numeración de los pines:

Circuitos integrados DIP, SOIC y flat pack (16 pines): En la parte superior del encapsulado se desigan el pin
1 mediante un pequeño punto, una muesca o una esquina biselada. Empezando por el pin 1, el número de pin
aumenta a medida que se desciende, y se continúa por el lado opuesto en sentido ascendente.

Figura 3.19 Numeración de pines DIP O SOIC.

Encapsulados PLCC y LCCC: Tienen terminales en sus cuatro costados. El pin 1 se identifica mediante un
punto u otra marca y se encuentra situado en el centro de cualquiera de los lados del chip. La numeración de
los pines se incrementa en sentido contrario a las agujas del reloj mirando la parte superior del encapsulado.
Figura 3.20 Numeración de pines PLCC.

3.8 Codificadores y decodificadores


3.8 Codificadores y decodificadores

En un sentido general, se puede decir que un codificador es un circuito hecho para pasar información de un
sistema a otro con clave diferente, y en tal caso un decodificador sería el circuito o dispositivo que retorne los
datos o información al primer sistema. Debido a que el caso que nos ocupa es el de la lógicacombinacional, y
en especial la aritmética binaria, hemos de dar sentido más directo a los términos "codificador" y "decodificador".

3.8 Codificadores y decodificadores


3.8.1 Codificador

Permiten “compactar” la información, generando un código de salida a partir de la información de entrada.

Un codificador tiene un número de líneas de entrada, de las cuales sólo una se activa en un tiempo determinado
y produce un código de salida de N bits, dependiendo de cual entrada se active (Tocci, 2003).
Vamos a analizar el concepto a partir de un joystick, que contiene en su interior un circuito digital, el cual contiene
varios botones como entrada y produce una salida, si un botón está pulsado, representa un 1 y un 0 cuando no
está pulsado.

Figura 3.21 Coche de control remoto con cuatro botones.

El joystick de la Figura contiene cuatro botones:

 Flecha izquierda
 Flecha derecha
 Flecha arriba
 Flecha abajo

Figura 3.22 Circuito de control de un joystick.

Fijémonos en las entradas del codificador, que están conectadas a los botones. En cada momento sólo habrá
un botón apretado, puesto que sólo podemos mover el coche en una dirección a la vez. Por lo que en las
conexiones al codificador, la flecha izquierda tiene asignado el número 0, la derecha el 1, la flecha de arriba el
2 y la flecha abajo el 3 (ver Figura 3). Este número depende de la entrada del codificador a la que se haya
conectado). A la salida del codificador obtendremos el número del botón apretado. La tabla de verdad será así:

E2 E1 E0 C1 C2 Botón
E3
0 0 0 1 0 0 Izquierda
0 0 1 0 0 1 Derecha
0 1 0 0 1 0 Arriba
1 0 0 0 1 1 Abajo

Tabla de verdad del codificador.


Si observas en la Tabla 1, la salida es de dos bits, y esto se debe a que para representar cuatro salidas distintas
necesitamos 2 bits.

El codificador se visualiza de la siguiente manera:

Figura 3.23 Circuito codificador.

Ecuaciones:

Al hacer la tabla de verdad hay que tener en cuenta que muchas de las entradas no se pueden reproducir. En
las entradas de un decodificador, una y sólo una de las entradas estará activa en cada momento. Utilizaremos
esto para simplificar las ecuaciones. Se ha utilizado una X para indicar que esa salida nunca se producirá:
C0 y C1 siempre valen 'x' excepto para cuatro filas. Los mapas de Karnaugh que obtenemos son:

Figura 3.24 Mapas de Karnaugh.

Las casillas que tienen el valor 'x' podemos asignarles el valor que más nos convenga, de forma que
obtengamos la expresión más simplificada. Las ecuaciones de un decodificador de 4 a 2 son:
3.8 Codificadores y decodificadores

3.8.2 Decodificador

Es un circuito lógico que acepta un conjunto de entradas, representa un número binario y sólo activa la salida
que corresponde a ese número de entrada. En otras palabras, un circuito decodificador analiza sus entradas,
determina qué número binario está presente allí y activa la salida que corresponde e ese número; el resto de
las salidas permanecen inactivas.

Imaginemos que queremos realizar un circuito de control para un semáforo. El semáforo puede estar verde,
amarillo, rojo o averiado. En el caso de estar averiado, se activará una luz interna “azul”, para que el técnico
sepa que lo tiene que reparar. A cada una de estas luces le vamos a asociar un número. Así el rojo será el 0,
el amarillo el 1, el verde el 2 y el azul (averiado) el 3, ver Figura 5.
Figura 3.25 Semáforo.

Si utilizamos un decodificador de 2 a 4, conseguiremos controlar el semáforo asegurándonos que sólo estará


activa una luz en cada momento. Además, el circuito de control que diseñemos sólo debe tener dos salidas.

El funcionamiento es muy sencillo. Si el circuito de control envía el número 2. ( E 0 =0 y E 1 =1 ), se encenderá


la luz verde (que tiene asociado el número 2) y sólo la luz verde. Un decodificador activa sólo una de las salidas,
la salida que tiene un número igual al que se ha introducido por la entrada. En el ejemplo del semáforo, si el
circuito de control envía el número 3, se activa la salida O3 y se encenderá la luz azul (y sólo esa).

A la hora de diseñar el circuito de control, sólo hay que tener en cuenta que cada luz del semáforo está
conectada a una salida del decodificador y que, por tanto, tiene asociado un número diferente.

Tablas de verdad y ecuaciones

Decodificador de 2 a 4

Comenzaremos por el decodificador más sencillo, uno que tiene 2 entradas y 4 salidas, como se muestra en
Figura 6.

La tabla de verdad es la siguiente:

Y las ecuaciones las podemos obtener desarrollando por la primera forma canónica. Puesto que por cada
función de salida sólo hay un ’1’, no se podrá simplificar (no hace falta que hagamos Karnaugh):
3.9 Multiplexores y demultiplexores
3.9 Multiplexores y demultiplexores

En las comunicaciones, y sistemas de computadora se ejecutan muchas operaciones mediante circuitos lógicos
combinatorios. Cuando un circuito se ha diseñado para efectuar alguna tarea en una aplicación, a menudo
también encuentra empleo en otras diferentes aplicaciones. En este tema se tratarán los multiplexores y
demultiplexores tanto a nivel SSI como MSI y como podemos aprovechar sus funciones en el desarrollo de
circuitos combinacionales.

3.9 Multiplexores y demultiplexores


3.9.1 Multiplexores

Un Multiplexor es un circuito combinacional al que entran varios canales de datosy sólo uno de ellos, el
que hayamos seleccionado, es el que aparece por la salida. Es decir, es un circuito que nos
permite seleccionar qué datos pasan a través de dicho componente.

Vamos a ver un ejemplo no electrónico. Imaginemos una máquina expendedora de dulces en donde hay dos
tubos (canales de datos) para transportar diversos productos (datos). Un tubo transporta dulces confitados y
otro chocolate. Estos tubos llegan a un único tubo, el cual termina en un depósito donde se coloca el producto,
según lo que seleccione una persona presionando entre 2 botones.
Los botones son: 0 para dulces confitados y 1 para chocolates.

Presionando los botones la persona puede seleccionar si lo que quiere que salga por el tubo sean dulces
confitados o chocolates.

Pero ¿por qué sólo dos tipos de dulces? Porque es un ejemplo. Aunque se puede dar el caso de que la maquina
podría llegar a tener cuatro tipos de dulces.

En este caso la persona tendría que seleccionar ahora entre cuatro botones.

Estos botones son los que permiten que un dulce pase por uno de los cuatro tubos y, posteriormente, el dulce
seleccionado pase al único tubo que llega al depósito.

Con este ejemplo es muy fácil entender la idea de multiplexor. Es como un selector que sólo conecta uno de
muchos canales de datos de entrada con el canal de datos de salida.

Ahora en vez de usar tubos, podemos pensar en canales de datos, y tener un esquema como el que se muestra
en la Figura 1, en la que hay cuatro canales de datos y sólo uno de ellos es seleccionado por el multiplexor para
llegar a la salida. En general, en un multiplexor tenemos dos tipos de entradas:

Figura 1. Un multiplexor que selecciona entre cuatro canales de datos.

 Entradas de datos: (Los tubos en el ejemplo).


 Entrada de selección: Indica cuál de las entradas se ha seleccionado (cuando se presiona uno de los
botones).

Multiplexores y bits
Como habrás podido observar, a un multiplexor le llegan números por distintas entradas y según el número
que le llegue por la entrada de selección, lo manda por la salida o no. ¡Números! Recordemos que los circuitos
digitales sólo trabajan con números.

Pero vimos que estos números siempre vendrán expresados en código binario y, por tanto, se podrán
expresar mediante bits. ¿Cuántos bits? Depende de lo grande que sean los números con los que se quiere
trabajar.

En el interior de los microprocesadores es muy normal encontrar multiplexores de ocho bits, que tienen varias
entradas de datos de ocho bits. Pero se puede trabajar con multiplexores que tengan cuatro bits por cada
entrada, o incluso dos, o incluso un bit. En la Figura 2 se muestran dos multiplexores que tienen cuatro entradas
de datos. Por ello la entrada de selección tiene dos bits (para poder seleccionar entre los cuatro canales
posibles). Sin embargo, en uno las entradas de datos son de dos bits y en el otro de un bit.
Figura 3.26 Dos multiplexores de cuatro canales de entrada.

Mirando el número de salidas, podemos conocer el tamaño de los canales de entrada

Así, en los dos multiplexores de la Figura 2 vemos que el de la izquierda tiene dos bits de salida, por tanto, sus
canales de entrada son de dos bits. El de la derecha tiene un bit de salida, por tanto, los canales de un bit.

Los multiplexores en los que principalmente nos centraremos son los que tienen canales de un bit. A partir de
ellos podremos construir multiplexores mayores, bien con un mayor número de canales de entrada o bien con
un mayor número de bits por cada canal.

Multiplexores de un bit y sus expresiones booleanas

Llamaremos así a los multiplexores que tienen canales de entrada de un bit y, por tanto, sólo tienen un bit de
salida. Estudiaremos estos multiplexores comenzando por el más simple de todos: el que sólo tienen una
entrada de selección.

Multiplexores con una entrada de selección

El multiplexor más simple es el que sólo tiene una entrada de selección, S, que permite seleccionar entre dos
entradas de datos, según que S = 0 o S = 1. Su aspecto es el siguiente:
Nota: Para efectos didácticos representaremos los multiplexores igual que cualquier otro circuito: mediante una
“caja” que tiene unas entradas y unas salidas. No obstante, el símbolo normalmente empleado es el siguiente:

La pregunta ahora es: ¿cómo podemos expresar la función de salida F, usando el álgebra de Boole? Existe
una manera muy sencilla: hacer la tabla de verdad y obtener la función más simplificada.

Construyamos la tabla de verdad. Lo primero que nos preguntamos es, ¿cuántas entradas tengo en este
circuito? Si observas, hay en total tres entradas. Dos son de datos: I0, I1, y una es de selección: S. La tabla
tendrá en total 23 = 8 filas. Para construir la tabla de verdad sólo hay que entender el funcionamiento del
multiplexor e ir caso por caso llenando la tabla. Por ejemplo, ¿qué ocurre si S = 1, I1 = 0, I0 = 1? Aplicamos la
definición de multiplexor. Puesto que S = 0, se está seleccionando la entrada de datos 0, es decir, la entrada I0.
Por tanto, lo que entre I1 será ignorado por el multiplexor. Si la entrada seleccionada es la I0, la salida tendrá
su mismo valor. Y puesto que I0 = 1, entonces F = 1. Si hacemos lo mismo para todos los casos, tendremos la
siguiente tabla de verdad:
La tabla se ha dividido en dos bloques, uno en el que S = 0 y otro en el que S = 1. En el primer bloque, se
selecciona I0 que aparecerá en la salida. Se ha puesto en negrita todos los valores de I0 para que se vea que
son los mismos que hay a la salida. En el bloque inferior, lo que se selecciona es I1 y es lo que se obtiene por
la salida.

Obtenemos la siguiente expresión:

Y si ahora “analizamos” la ecuación, veremos que tiene mucho sentido:

La salida toma el valor de una de las entradas, según el valor que se tome de la entrada de selección.
3.9 Multiplexores y demultiplexores
3.9.2 Demultiplexores

El concepto de demultiplexor es similar al de multiplexor, viendo las entradas de datos como salidas y las salidas
como entradas. En un multiplexor hay varias entradas de datos y sólo una de ellas se saca por el canal de
salida. En los demultiplexores hay un único canal de entrada que se saca por una de las múltiples salidas (y
sólo por una).

Vamos a utilizar un ejemplo de una granja en donde utilizan tuberías para transportar agua,

Podemos imaginar el siguiente escenario:

Supongamos que a la granja le llega una única tubería con agua, pero en el interior de la granja hay varias
mangueras, una para dar de beber a los animales de esa zona y otra para regar el cultivo. Como sólo hay un
granjero, sólo podrá usar una de las mangueras cada vez (el granjero no podrá usar a la vez dos mangueras,
porque están en sitios diferentes y muy apartados).

Para seleccionar qué manguera quiere usar en cada momento, hay una llave de paso, de manera que si la sitúa
en una posición, el agua que viene por la entrada saldrá por la manguera 0, mientras que si la sitúa en la otra
posición, el agua saldrá por la manguera 1 (ver Figura 3).

Figura 3. Similitud entre un demultiplexor y un sistema de agua de una granja.

De la misma manera que en los multiplexores puede haber varias entradas, en los demultiplexores puede haber
varias salidas. Por ejemplo, en la Figura 4 se muestra el mismo sistema de tuberías de la granja, pero ahora
hay cuatro mangueras, para llegar a cuatro zonas distintas y quizá separadas dentro de la granja.

Figura 3.27 Sistema de agua de cuatro mangueras.


Ahora el granjero tendrá que colocar la llave de paso en una de las cuatro posiciones posibles, para que el agua
salga por la manguera seleccionada.

Ya comprendemos como funcionan los demultiplexores. Si lo aplicamos al mundo de la electrónica, en vez de


tuberías tendremos canales de datos. Habrá un único canal de entrada por el que llegarán números, que saldrán
sólo por uno de los canales de salida, el que tengamos seleccionado, como se muestra en la Figura 5.

Figura 5. Un demultiplexor que selecciona entre cuatro canales de datos.

En general, en un demultiplexor tendremos:

 Una entrada de datos.


 Una entrada de selección: que indica a cuál de las salidas se manda la entrada.
 Varios canales de datos de salida. Sólo estará activo el que se haya seleccionado.

Juntando multiplexores y demultiplexores

Vamos a ver una aplicación típica de los multiplexores y los demultiplexores. Imaginemos que tenemos cuatro
sistemas, que los llamaremos a, b, c y d, y que necesitan enviar información a otros cuatro
dispositivos A, B, C y D que se encuentran distantes. La comunicación es uno a uno, es decir, el sistema asólo
envía información al sistema A, el b al B y así sucesivamente.

¿Qué alternativas hay para que se produzca este envío de datos? Una posibilidad es obvia, y es la que se
muestra en la Figura 6. Directamente se utilizan cables para establecer los canales de comunicación.
Figura 3.28 Una alternativa para comunicar sistemas.

Sin embargo, en este caso que se utilizan cuatro cables no es tanto problema, pero, ¿te imaginas qué pasaría
si tuviéramos 30 dispositivos?, ¿utilizaríamos tantos cables?, no es una buena alternativa. Otra solución se
muestra en la Figura 7. Vemos que los sistemas a, b, c y d se conectan a un multiplexor. Un circuito de control,
conectado a las entradas de selección de este multiplexor, selecciona periódicamente los diferentes sistemas,
enviando por la salida el canal correspondiente.

Figura 7. Uso de un multiplexor y demultiplexor para transmisión de datos por un único cable.

Podemos ver que a la salida del multiplexor se encuentra la información enviada por los cuatro sistemas.

Se dice que esta información está multiplexada en el tiempo. Al final de esta línea hay un demultiplexor que
realiza la función inversa. Un circuito de control selecciona periódicamente por qué salidas debe salir la
información que llega por la entrada.

Lo que hemos conseguido es que toda la información enviada por un sistema llega a su homólogo en el extremo
anterior, pero sólo hemos utilizado un único canal de datos, mucho mejor que utilizar varios cables, ¿no crees?
Demultiplexores y bits.

Un demultiplexor, como cualquier otro circuito digital, trabaja sólo connúmeros. Pero estos números vendrán
expresados en binario, por lo que loscanales de datos de entrada y salida, y la entrada de
selección vendrán expresados en binario y tendrán un número determinado de bits.

Una vez más nos hacemos la pregunta, ¿cuántos bits? Depende de la aplicación que estemos diseñando o con
la que estemos trabajando. En la Figura 8 se muestran dos demultiplexores de cuatro canales, por lo que
tendrán dos bits para la entrada de selección. El de la izquierda tiene canales de dos bits y el de la derecha de
un bit.

Figura 3.29 Dos demultiplexores de cuatro canales de salida.

Los demultiplexores que vamos a estudiar son lo que tienen canales de un bit. A partir de ellos podremos
construir demultiplexores con un mayor número de bits por canal.

Demultiplexores de un bit y sus expresiones booleanas.

Demultiplexor de una entrada de selección.

El demultiplexor más simple es el que tiene una entrada de selección, una entrada de datos y dos salidas.
Según el valor de la entrada de selección, la entrada de datos se sacará por la salida O0 o O1:
Nos hacemos la misma pregunta que en el caso de los multiplexores: ¿cómo podemos expresar las funciones
de salida usando el álgebra de Boole? Podemos escribir la tabla de verdad y obtener las expresiones más
simplificadas. Para tener la tabla aplicamos la definición de demultiplexor y vamos comprobando caso por caso
qué valores aparecen en las salidas. Por ejemplo, si S=1 e I=1, se estará seleccionando la salida O1 y por ella
saldrá el valor de I, que es 1. La salida O0 no estará seleccionada y tendrá el valor 0.

Para obtener las expresiones de O0 y O1 no hace falta aplicar Karnaugh puesto que cada salida sólo toma el
valor ’1’ para un caso y ’0’ para todos los restantes. Desarrollando por la primera forma canónica:

Y podemos comprobar que si hemos seleccionado la salida 0 (S=0), entonces O0 = I y O1 = 0, y si hemos


seleccionado la salida 1 (S=1) , O0 = 0 y O1 = I.

De la misma manera que hicimos con los multiplexores, podemos considerar que las funciones O0 y O1 sólo
dependen de la entrada de selección (S), tomando la entrada I como un parámetro. Así, podemos describir este
demultiplexor mediante la siguiente tabla:
Esta descripción será la que empleemos, ya que es más compacta.

3.10 Dispositivos y lógica programable


Dispositivos lógicos programables o PLD (Programmable Logic Device) son dispositivos cuyas características
pueden ser modificadas y almacenadas mediante programación, son utilizados en muchas aplicaciones para
reemplazar a los circuitos SSI y MSI debido a que ahorran espacio.

El dispositivo programable más simple es conocido como PAL (Programmable Array Logic) y consiste en una
matriz de conexiones de compuertas AND y un arreglo de compuertas OR. La matriz es una red de conductores
distribuidos en filas y columnas con un fusible en cada punto de intersección, mediante la cual se seleccionan
las entradas del dispositivo que serán conectadas al arreglo de compuertas AND, sus salidas son conectadas
al arreglo de compuertas OR; de esta manera se obtiene una función lógica en forma de suma de productos.
La Figura 1 muestra como el diagrama a bloques de la PAL.

Figura 3.30 Diagrama de bloques de una PAL.

La mayoría de los PLD se encuentran conformados por una matriz de conexiones, una matriz de compuertas
AND y una matriz de compuertas OR (en algunos casos también se utilizan registros). Las matrices pueden ser
de dos tipos: fijas o programables.

Con los recursos descritos anteriormente se implementan las funciones lógicas deseadas mediante un software
especial y un programador de dispositivos. La matriz programable más sencilla data de los años sesenta, y
consistía en una matriz de diodos con un fusible en cada punto de intersección.

Matriz genérica programable

Una matriz genérica programable o GAL (Generic Array Logic) es una denominación que utilizaba originalmente
Lattice Semiconductor y que más tarde se licencio a otros fabricantes. Un GAL en su forma básica es un PLD
con una matriz AND reprogramable, una matriz OR fija y una lógica de salida programable mediante una
macrocelda. Esta estructura es la que permite la implementación de cualquier función lógica en forma de suma
de productos. En los PLD no programables la síntesis de las ecuaciones lógicas se realizan mediante la quema
de fusibles en cada punto de intersección de los pines de entradas con las compuertas. En un GAL el fusible se
reemplaza usando una celda CMOS eléctricamente borrable (EECMOS) y mediante programación se activa o
se desactiva cada celda EECMOS. Aquí una celda activa conecta su correspondiente intersección fila y
columna, y una celda desactivada desconecta dicha intersección. Es gracias a esta estructura que se puede
aplicar cualquier combinación de variables de entrada o sus complementos a una compuerta AND para generar
cualquier operación producto que se desee. La siguiente figura muestra el diagrama a bloques de una GAL.

Figura 3.31 Diagrama a bloques de una GAL.

Figura 3.32 Chips GAL.

CPLD

Un CPLD (del inglés: Compex Programmable Logic Device) extiende el concepto de un PLD a un mayor nivel
de integración, ya que permite implementar sistemas más eficientes debido a que utilizan menos espacio, se
mejora la confiabilidad y se reducen costos en el circuito. Un CPLD se forma a partir de múltiples bloques
lógicos, cada uno similar a un PLD. Los bloques lógicos se comunican entre sí utilizando también una matriz
programable de interconexiones, lo cual hace más eficiente el uso del silicio.

Programación de los dispositivos lógicos programables

Como ya se mencionó, las PAL se programan dejando intactos los fusibles que se requieren y fundiendo los
restantes. Las GAL se programan de forma similar, pero son las celdas EECMOS las que se activan o
desactivan. Las funciones lógicas que se implementan necesitan determinar las celdas que hay que activar.
Pues bien, para programar una PAL o una GAL se necesitan:

 Una computadora.
 Un software de programación.
 Un programador de PLD.

Computadora

Se puede utilizar cualquier computadora personal (PC) siempre y cuando cumpla con los requisitos que pide el
software.

Software

El software que se utiliza para programar los PLD se llaman compiladores lógicos. Existen en el mercado
diversos programas, algunos de ellos son: ABEL, CUPL, OrCAD-PLD. Todos los programas generan un archivo
de salida que se denomina archivo JEDEC (mapa de celdas o mapa de fusibles) para el programador de
dispositivos. La ventaja del software es que se puede realizar una simulación y depuración completa del diseño
lógico antes de proceder a la fabricación física del circuito (si no, imagina cuántos circuitos se pueden perder si
no se pudiera realizar esta opción).

El programador

Una vez que se pasan las fases anteriores, ahora el PLD se inserta en el zócalo del programador, que
usualmente es un zócalo ZIF (Zero Insertion Force, fuerza de inserción nula). El programador contiene un
programa controlador de software que lee el archivo JEDEC generado por el compilador lógico y,
posteriormente, lo convierte en instrucciones que aplican las tensiones requeridas en pines muy específicos del
PLD, de esa manera se altera la matriz de la forma en que indique el mapa de fusibles.

Vous aimerez peut-être aussi