Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Sistemas Combinacionales: Suma, Resta y Comparación de Números en Complemento a 2, Apuntes de Fundamentos de la Informática

Apuntes de circuitos secuenciales de Fundamentos de los Computadores

Tipo: Apuntes

2019/2020

Subido el 06/04/2020

jandrooogarcia
jandrooogarcia 🇪🇸

2 documentos

1 / 25

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Tema 2
SISTEMAS COMBINACIONALES
En este tema se estudiarán algunas de las funciones combinacionales más utilizadas:
sumadores, comparadores, unidades aritmético–lógicas (ALUs), multiplexores, demulti-
plexores, decodificadores, codificadores y conversores de código. Todas ellas se encuentran
implementadas en chips comerciales. Como estas funciones son relativamente complejas,
el chip deberá contener más de 10 puertas lógicas y, por lo tanto, estos circuitos integrados
pertenecerán a la escala MSI.
2.1. Introducción
Trabajaremos en este tema tanto con números sin signo (codificados en binario puro),
como con signo. Existen tres formatos binarios para representar los números enteros con
signo: signo-magnitud, complemento a 1 (C’1) y complemento a 2 (C’2). Todos ellos
utilizan un número fijo de bits que debe ser prefijado de antemano, reservándose el bit
más a la izquierda para especificar el signo. Un bit de signo 0 indica que el número es
positivo y un bit de signo igual a 1 indica que es negativo.
En general, las operaciones aritméticas se simplifican enormemente utilizando C’2 para
representar números con signo, por eso todos los computadores actuales trabajan con el
formato C’2 y por ello nosotros nos restringiremos a lo largo de esta asignatura a dicho
formato para representar los números con signo.
Los números positivos en C’2 se representan igual que los números en binario puro
añadiendo 0’s para completar el número de bits del formato. Por ejemplo, el número +18
en C’2 con 8 bits se codifica como 00010010. Los números negativos se calculan como el
C’2 del correspondiente número positivo. El C’2 de un número se obtiene sumando 1 al
C’1 del número. El C’1 se halla cambiando todos los 1s por 0s y todos los 0s por 1s. Así,
el -18 en 8 bits se codifica como 11101110:
1
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19

Vista previa parcial del texto

¡Descarga Sistemas Combinacionales: Suma, Resta y Comparación de Números en Complemento a 2 y más Apuntes en PDF de Fundamentos de la Informática solo en Docsity!

Tema 2

SISTEMAS COMBINACIONALES

En este tema se estudiarán algunas de las funciones combinacionales más utilizadas: sumadores, comparadores, unidades aritmético–lógicas (ALUs), multiplexores, demulti- plexores, decodificadores, codificadores y conversores de código. Todas ellas se encuentran implementadas en chips comerciales. Como estas funciones son relativamente complejas, el chip deberá contener más de 10 puertas lógicas y, por lo tanto, estos circuitos integrados pertenecerán a la escala MSI.

2.1. Introducción

Trabajaremos en este tema tanto con números sin signo (codificados en binario puro), como con signo. Existen tres formatos binarios para representar los números enteros con signo: signo-magnitud, complemento a 1 (C’1) y complemento a 2 (C’2). Todos ellos utilizan un número fijo de bits que debe ser prefijado de antemano, reservándose el bit más a la izquierda para especificar el signo. Un bit de signo 0 indica que el número es positivo y un bit de signo igual a 1 indica que es negativo.

En general, las operaciones aritméticas se simplifican enormemente utilizando C’2 para representar números con signo, por eso todos los computadores actuales trabajan con el formato C’2 y por ello nosotros nos restringiremos a lo largo de esta asignatura a dicho formato para representar los números con signo.

Los números positivos en C’2 se representan igual que los números en binario puro añadiendo 0’s para completar el número de bits del formato. Por ejemplo, el número + en C’2 con 8 bits se codifica como 00010010. Los números negativos se calculan como el C’2 del correspondiente número positivo. El C’2 de un número se obtiene sumando 1 al C’1 del número. El C’1 se halla cambiando todos los 1s por 0s y todos los 0s por 1s. Así, el -18 en 8 bits se codifica como 11101110 :

2 TEMA 2. SISTEMAS COMBINACIONALES

Para calcular el número opuesto de un número positivo o negativo codificado en C’ basta con calcular el C’2 del número (negar todos los bits del número y sumar 1). A continuación se muestran algunos ejemplos para formato de 4 bits:

Fíjate que el formato limita el rango de números que se pueden codificar. Así por ejemplo, el +18 no sería representable con 4 bits ya que necesitamos reservar un bit para indicar el signo. En general, si tenemos n bits el rango de números que podemos codificar en C’2 es [− 2 n −^1 , +2 n −^1 − 1]. Por ejemplo, con 4 bits podemos codificar los números del -8 al +7 (16 números, incluido el 0). Todos ellos poseen su opuesto excepto el -8, ya que el +8 no es representable en 4 bits.

Para aumentar el número de bits utilizados para representar un número en C’2 basta añadir bits a la izquierda repitiendo el bit de signo. A esta operación se le llama exten- sión del formato o extensión del signo. La siguiente figura muestra varios ejemplos para extender el formato de 4 a 6 bits:

2.2. SUMADORES Y RESTADORES

2.2.1. Semisumador

La suma de dos dígitos binarios (PLUS) es similar a la suma de dos números decimales, pero teniendo en cuenta que la salida también es un número binario. Esto es importante cuando sumo, por ejemplo, 1 y 1, ya que para codificar el resultado (2 en decimal) nece- sito dos bits (10). En este caso, el bit menos significativo lo llamaremos suma, mientras que el bit más significativo lo llamaremos acarreo ( carry en inglés). En total, existen 4 posibilidades de sumar dos números binarios de 1 bit:

PLUS 0 1 0 1
4 TEMA 2. SISTEMAS COMBINACIONALES
FA

A B in

C S

C

out

Cin Cout

SALIDAS

0 0

1 1

0 0 0

1

0 0 0 0

0 0 1 0 1 1

1

0

1 1 1 1

0 1 1

0 0 1 1

1

ENTRADAS

0 0 1 0 1 1

1

0

A B S

Figura 2.3: Tabla de verdad y símbolo de un sumador completo (FA).

Cout

Cin Cin 0 0 0 1 1 1 1 0 1 1

1 1 1 1 1

1

1

AB

S AB

Figura 2.4: Diagramas de Karnaugh de las salidas de un sumador completo.

2.2.3. Sumadores de palabras

Ya sabemos sumar tres números binarios de 1 bit, pero nos interesa poder sumar cantidades mayores, es decir, palabras o números de varios bits que puedan codificar números mayores. En el mercado podemos encontrar chips como el sumador de números binarios de 4 bits. Para el diseño de estos circuitos existen dos opciones. La primera consiste en aplicar el mismo método que hemos estado usando, a saber, definir la tabla de verdad de la función u operación que nos interesa implementar y minimizarla. Obviamente, este método resulta poco práctico en el caso de tener números de varios bits. Por poner un ejemplo, la tabla de verdad de un sumador de palabras de 4 bits posee 8 entradas, es decir, 256 combinaciones. El segundo método consiste en hacer un diseño modular, es decir, diseñar un circuito básico que iremos repitiendo las veces que necesitemos. Este método solo es aplicable en funciones que posean un cierto grado de regularidad. Si nos fijamos, la suma aritmética de palabras de n bits cumple dicha condición. Sumemos dos números en binario a la manera “tradicional”:

Acarreos 1 0 1 1 1 0 1 1 1 0 Primer sumando 1 0 1 1 1 0 0 1 1 0 742 Segundo sumando 1 0 0 1 1 0 1 1 1 1 623 —————————— Suma 1 0 1 0 1 0 1 0 1 0 1 1365

2.2. SUMADORES Y RESTADORES 5

A 3 B 3

Cin

A 2 A 0 B 0

Cout FA FA FA FA

S 3 S (^2) S 1 S (^0)

B 2 A 1 B 1

Figura 2.5: Sumador de acarreo enlazado.

Como podemos observar, para calcular el bit i -ésimo del resultado solo necesitamos conocer los bits i -ésimos de las entradas y el acarreo resultado de calcular el bit anterior ( i − 1). Por lo tanto, el módulo básico es un sumador de 3 bits: un sumador completo. Para sumar palabras de n bits será preciso utilizar n FA. Nos queda por resolver cómo y cuándo calcular el acarreo de cada bit. Para ello existen varias alternativas o soluciones, pero aquí solo veremos la conocida como sumador de acarreo enlazado.

En el sumador de acarreo enlazado, el acarreo del sumador completo i se conecta al acarreo de entrada del sumador completo i + 1. De esta forma, a pesar de que todos los FA trabajan en paralelo, el resultado final (correcto), no se obtendrá hasta que todas las salidas sean estables, es decir, hasta que un acarreo generado en el primer bit (el bit 1) se propague hasta el bit más significativo (el bit n ). Resulta evidente que la velocidad del sumador de acarreo enlazado es baja, pues cada etapa o FA ha de esperar al cómputo de los acarreos por parte de todos los sumadores situados a su derecha (bits menos significativos), es decir, el retardo será n veces el tiempo de retardo de un FA.

En la figura 2.5 se muestra un sumador de acarreo enlazado construido con 4 sumadores completos de un bit. El primer acarreo C 0 es un acarreo de entrada al circuito y podemos denotarlo por Cin. Los 3 acarreos siguientes C 1 , C 2 y C 3 son acarreos generados y usados exclusivamente por el circuito, y, por último, el acarreo C 4 es un acarreo de salida y podemos denotarlo por Cout. Las expresiones de cada señal son:

Si = AiBiCi,i = 0 , ..., 3 Ci +1 = AiBi + ( Ai + Bi ) Ci,i = 0 , ..., 3 con C 0 = Cin y C 4 = Cout

El resultado final necesita un total de cinco bits para codificar el resultado, es decir, CoutS 3 S 2 S 1 S 0. Este diseño se puede extender fácilmente a cualquier número de bits.

2.2. SUMADORES Y RESTADORES 7

SUMADOR

4 BITS

Figura 2.7: Sumador/restador de dos números en Complemento a 2.

En el caso de la suma en C’2 el resultado es incorrecto (existe desbordamiento) cuando An − 1 = Bn − 1 6 = Sn − 1 , es decir, ( An − 1 = Bn − 1 = 0 y Sn − 1 = 1) ó ( An − 1 = Bn − 1 = 1 y Sn − 1 = 0). Por lo tanto:

overf low = An − 1 Bn − 1 Sn − 1 + An − 1 Bn − 1 Sn − 1

2.2.6. Circuito sumador/restador

Usando las propiedades de la función EXOR podemos construir un circuito para sumar o restar números en C’2. Introducimos una señal denominada S/R , tal que si esta señal es 0 ( S ) se realizará una suma A PLUS B y si es 1 ( R ) se realizará una resta A MINUS B.

Para ello, si S/R = 0 los bits de B se propagan tal cuál ( B i ′ = 0 ⊕ Bi = Bi ), pero si S/R = 1 entonces se propagan B i ′ = 1 ⊕ Bi = Bi. En C’2 para negar un número además de negar todos sus bits , necesitamos sumarle 1. Para ello aplicamos también la señal S/R al Cin del sumador, de tal forma que si se realiza una suma Cin = 0 (no afecta), mientras que en la resta Cin = 1. En este caso Cout no formará parte del resultado y no se usa para nada. En la figura 2.7 podemos ver, como ejemplo, el sumador/restador en C’2 para números de 4 bits.

Como el formato es fijo y el mismo para las entradas y la salida, existirá desborda- miento cuando:

overf low = An − 1 Bn − 1 Sn − 1 S/R + An − 1 Bn − 1 Sn − 1 S/R

  • An − 1 Bn − 1 Sn − 1 S/R + An − 1 Bn − 1 Sn − 1 S/R = An − 1 ( Bn − 1 ⊕ S/R ) Sn − 1 + An − 1 ( Bn − 1 ⊕ S/R ) Sn − 1 = An − 1 B ′^ n − 1 Sn − 1 + An − 1 B n ′− 1 Sn − 1
8 TEMA 2. SISTEMAS COMBINACIONALES

0 0 0 1 1 1 1 0 A 1 A 0

B 1 B 0

0 0 0 1 1 1 1 0

1

1 1

1 1 1

(A>B)

0 0 0 1 1 1 1 0 A 1 A 0

B 1 B 0

0 0 0 1 1 1 1 0

(A=B)

1

1 1

1

0 0 0 1 1 0 A 1 A 0

B 1 B 0

0 0 0 1 1 1 1 0

1 1

1

1

1 1 1

1

(A<B)

Figura 2.8: Diagramas de Karnaugh de las salidas de un comparador de 2 bits.

2.3. COMPARADORES

2.3.1. Comparador binario

La comparación entre números es la operación que determina si uno de ellos es ma- yor, menor o igual que el otro. Un comparador binario es un circuito combinacional que compara dos números sin signo A y B y proporciona tres salidas ( A < B ), ( A = B ) y ( A > B ). Como son mutuamente excluyentes, conociendo dos de estas funciones es po- sible determinar la tercera, con lo que realmente solo necesitamos implementar dos. Por ejemplo, para obtener la función ( A < B ) a partir de las otras dos:

( A > B ) ( A = B ) ( A < B )

Para implementar las funciones ( A > B ), ( A = B ) y ( A < B ) existen dos posibilidades. La primera de ellas es partir de los diagramas de Karnough. Así, por ejemplo, si A y B son números de dos bits A = A 1 A 0 y B = B 1 B 0 , entonces las funciones tendrán las siguientes expresiones mínimas (ver figura 2.8):

( A>B ) = A 1 B 1 + A 0 B 1 B 0 + A 1 A 0 B 0 ( A = B ) = A 1 A 0 B 1 B 0 + A 1 A 0 B 1 B 0 + A 1 A 0 B 1 B 0 + A 1 A 0 B 1 B 0 ( A<B ) = A 1 B 1 + A 1 A 0 B 0 + A 0 B 1 B 0

Sin embargo, si utilizamos este método, el diseño se complica si el número de bits de las palabras a comparar es grande. La segunda posibilidad es encontrar una forma simple de diseñar comparadores de cualquier número de bits a partir de un circuito que compare un solo bit, es decir, usar una estrategia modular. Si el bit más significativo de

10 TEMA 2. SISTEMAS COMBINACIONALES

A (^0) A (^1) A (^2) B (^3)

B (^1) B (^2)

B (^0)

A (^3)

(A=B)

(A>B)

(A<B)

Figura 2.10: Comparador de números en Complemento a 2.

A será mayor que B en si: A 3 > B 3 o ( A 3 = B 3 y A 2 > B 2 ) o ( A 3 = B 3 y A 2 = B 2 y A 1 > B 1 ) o ( A 3 = B 3 y A 2 = B 2 y A 1 = B 1 y A 0 > B 0 ). Entonces:

( A>B ) = ( A 3 >B 3 ) + ( A 3 = B 3 )( A 2 >B 2 ) + ( A 3 = B 3 )( A 2 = B 2 )( A 1 >B 1 ) +( A 3 = B 3 )( A 2 = B 2 )( A 1 = B 1 )( A 0 >B 0 ) = A 3 B 3 + x 3 A 2 B 2 + x 3 x 2 A 1 B 1 + x 3 x 2 x 1 A 0 B 0

Del mismo modo, A será menor que B si: A 3 < B 3 o ( A 3 = B 3 y A 2 < B 2 ) o ( A 3 = B 3 y A 2 = B 2 y A 1 < B 1 ) o ( A 3 = B 3 y A 2 = B 2 y A 1 = B 1 y A 0 < B 0 ). Entonces:

( A<B ) = ( A 3 <B 3 ) + ( A 3 = B 3 )( A 2 <B 2 ) + ( A 3 = B 3 )( A 2 = B 2 )( A 1 <B 1 ) +( A 3 = B 3 )( A 2 = B 2 )( A 1 = B 1 )( A 0 <B 0 ) = A 3 B 3 + x 3 A 2 B 2 + x 3 x 2 A 1 B 1 + x 3 x 2 x 1 A 0 B 0

Siguiendo los razonamientos anteriores, estas ecuaciones pueden extenderse para cons- truir comparadores de cualquier número de bits.

2.3.2. Comparación de números con signo

Para comparar dos números codificados en C’2 podemos utilizar un comparador bina- rio. Para ello debemos de intercambiar los bits más significativos tal y como se muestra en la figura 2.10 para 4 bits.

El comparador compara los números suponiendo que están en formato binario puro. Dos números codificados en C’2 son iguales si todos sus bits son iguales, por tanto la igualdad la detectará correctamente.

Supongamos que queremos comparar un número A negativo ( A 3 = 1) con otro B positivo ( B 3 = 0). Al intercambiar los bits de signo, estamos haciendo que el bit más

2.4. FUNCIONES DE RUTA DE DATOS 11

.

.

. 2 -1n

0 1

2

i

i

i

i

...

n

2 a 1

MUX

a b (n)

y

Figura 2.11: Representación de un MUX.

significativo de B sea 1, mientras que el más significativo de A es 0. Por lo tanto, B es mayor que A. El caso de A positivo y B negativo es exactamente igual.

Supongamos que ambos números son positivos. En ese caso estamos intercambiando dos ceros y comparamos los números tal y como estaban. El comparador nos dirá cual de los dos es mayor (menor) o si son iguales (recordemos que los números positivos se codifican igual que en binario puro).

El único caso que nos falta es cuando los dos números son negativos. Al igual que antes, el intercambio de signos no influye en el resultado puesto que ambos son 1. El comparador hará la comparación suponiendo que los números están codificados en binario puro. El resultado será correcto porque en C’2, el orden (de mayor a menor) de los números negativos se mantiene si se considera que los números están codificados en binario puro. Por ejemplo, -5 es mayor que -7 pero menor que -3. En C’2 -5 es 1011, -7 es 1001 y -3 es 1101 y en binario puro, 1011 es mayor que 1001 y menor que 1101.

2.4. FUNCIONES DE RUTA DE DATOS

En esta sección veremos los siguiente dispositivos:

Multiplexor (MUX) : selecciona una de entre 2 n^ entradas en función de n líneas de control.

Demultiplexor (DEMUX) : lleva la entrada a una de las 2 n^ salidas en función de n líneas de control.

2.4.1. Multiplexor (MUX)

Es un circuito selector de datos, es decir, la operación de este dispositivo es seleccionar una de entre varias entradas y llevar su valor a la salida. Para realizar esta selección son

2.4. FUNCIONES DE RUTA DE DATOS 13

Tabla 2.3: Tablas de verdad para MUX 4 a 1 y MUX 8 a 1.

a b i 0 i 1 i 2 i 3 y a b c i 0 i 1 i 2 i 3 i 4 i 5 i 6 i 7 y 0 0 0 x x x 0 0 0 0 0 x x x x x x x 0 0 0 1 x x x 1 0 0 0 1 x x x x x x x 1 0 1 x 0 x x 0 0 0 1 x 0 x x x x x x 0 0 1 x 1 x x 1 0 0 1 x 1 x x x x x x 1 1 0 x x 0 x 0 0 1 0 x x 0 x x x x x 0 1 0 x x 1 x 1 0 1 0 x x 1 x x x x x 1 1 1 x x x 0 0 0 1 1 x x x 0 x x x x 0 1 1 x x x 1 1 0 1 1 x x x 1 x x x x 1 1 0 0 x x x x 0 x x x 0 1 0 0 x x x x 1 x x x 1 1 0 1 x x x x x 0 x x 0 1 0 1 x x x x x 1 x x 1 1 1 0 x x x x x x 0 x 0 1 1 0 x x x x x x 1 x 1 1 1 1 x x x x x x x 0 0 1 1 1 x x x x x x x 1 1

Normalmente se suele incluir una señal de enable o strobe ( s ) para la inhibición del dispositivo, con el siguiente funcionamiento:

s = 0: El circuito está inhibido y la salida es siempre cero ( y = 0).

s = 1: Funcionamiento normal, la salida es igual a la entrada seleccionada.

La inclusión de esta entrada en las expresiones lógicas se realiza simplemente multi- plicando cada término producto por s :

MUX 4 a 1: y = sa bi 0 + sabi 1 + sabi 2 + sabi 3

MUX 8 a 1: y = sa b ci 0 + sa bci 1 + sabci 2 + sabci 3 + sab ci 4 + sabci 5 + sabci 6 + sabci 7

La construcción de estos multiplexores a partir de puertas lógicas se muestra en la figura 2.12.

2.4.2. Demultiplexor (DEMUX)

Un demultiplexor es un circuito distribuidor de datos, es decir, la operación de este dispositivo consiste en tomar la única entrada, seleccionar una de entre varias salidas y conectarla a la entrada. Para realizar esta selección son precisas líneas de control que nos indiquen cual de las salidas es la seleccionada. Si disponemos de 2 n^ salidas son precisas n líneas de control para hacer referencia a cada una de ellas (DEMUX 1 a 2 n ). Básicamente realiza la función inversa del multiplexor. Por tanto podemos definir el DEMUX 1 a 2 n

14 TEMA 2. SISTEMAS COMBINACIONALES

a b

y

i (^0)

i (^2)

i (^3)

i (^1)

a b c

y i (^4)

i (^5)

i (^6)

i (^7)

i (^0)

i (^2)

i (^3)

i (^1)

Figura 2.12: Construcciones del MUX 4 a 1 y del MUX 8 a 1.

.

.

.

...

a b (n)

1 a 2^ n

DEMUX

o

o

o

o

0 1

2

2 -1n

i

Figura 2.13: Representación de un DEMUX.

16 TEMA 2. SISTEMAS COMBINACIONALES

b i

o (^0)

o (^2)

o (^3)

o (^1)

a (^) b c

o (^4)

o (^5)

o (^6)

o (^7)

o (^0)

o (^2)

o (^3)

o (^1)

i^ a

Figura 2.14: Construcciones del DEMUX 1 a 4 y del DEMUX 1 a 8.

s = 1: Funcionamiento normal, la salida seleccionada es igual a la entrada.

La inclusión de esta entrada en las expresiones lógicas se realiza simplemente multi- plicando cada término producto por s :

DEMUX 1 a 4: o 0 = sa bi , o 1 = sabi , o 2 = sabi , o 3 = sabi.

DEMUX 1 a 8: o 0 = sa b ci , o 1 = sa bci , o 2 = sabci , o 3 = sabci , o 4 = sab ci , o 5 = sabci , o 6 = sabci y o 7 = sabci.

La construcción de estos DEMUXes a partir de puertas lógicas es la que se puede ver en la figura 2.14.

2.5. MANIPULADORES DE CÓDIGO

En esta sección veremos los siguiente dispositivos:

Codificador binario : con 2 n^ entradas, de las cuales solo una de ellas es activa, genera en las n salidas el código binario asociado a esa línea (código de n bits).

Decodificador binario : el código binario generado por las n entradas activa una de entre 2 n^ salidas.

Conversor de código : Con un número arbitrario de entradas y salidas transforma las entradas de un código en salidas de otro.

2.5. MANIPULADORES DE CÓDIGO 17

n a 2

n

DECOD

a

b

(n)

o

o

o

o

0

1

2

2 -1^ n

Figura 2.15: Representación de un decodificador.

Tabla 2.5: Tablas de verdad para un decodificador 2 a 4 y para un decodificador 3 a 8.

a b o 0 o 1 o 2 o 3 a b c o 0 o 1 o 2 o 3 o 4 o 5 o 6 o 7 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 1 0 0 0 1 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 1 1 0 0 0 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 1

2.5.1. Decodificadores binarios

La función de un decodificador binario es recibir el código binario de la entrada y activar (poner a 1 si la activación es a nivel alto o a cero si es a nivel bajo) la línea de salida que corresponde a ese código binario, dejando el resto de las salidas inactivas (proceso que se denomina decodificación). Un decodificador n a 2 n^ presentará n entradas y 2 n^ salidas (ver figura 2.15).

Las tablas de verdad del decodificador binario 2 a 4 y del decodificador binario 3 a 8 las mostramos en la tabla 2.5. Las expresiones lógicas de las salidas son:

Decodificador 2 a 4: o 0 = a b , o 1 = ab , o 2 = ab , o 3 = ab.

Decodificador 3 a 8: o 0 = a b c , o 1 = a bc , o 2 = abc , o 3 = abc , o 4 = ab c , o 5 = abc , o 6 = abc y o 7 = abc.

Estas expresiones son exactamente iguales a las de los DEMUX, pero con la diferencia de que no incluyen la entrada i. Por tanto los decodificadores binarios no se suelen cons- truir como tales; lo que se hace es partir de un DEMUX y hacer la entrada dato i = 1. También se puede considerar un DEMUX como un decodificador con señal de strobe , donde la entrada i estaría haciendo esta función.

2.5. MANIPULADORES DE CÓDIGO 19

i 1

b

i 3

a

i 0 i 2

Figura 2.17: Codificador 4 a 2.

Tabla 2.7: Codificador 4 a 2 con prioridad.

i 0 i 1 i 2 i 3 a b x x x 1 1 1 x x 1 0 1 0 a = i 3 + i 2 i 3 = i 3 + i 2 x 1 0 0 0 1 1 0 0 0 0 0 b = i 3 + i 1 i 2 i 3 = i 3 + i 1 i 2 0 0 0 0 0 0

Codificadores con prioridad

Cabe preguntarse qué sucede en el diseño anterior cuando se ponen varias de las líneas de entrada a 1, cuál de los códigos binarios asociados a cada una de esas líneas de entrada es el que se tomará como salida. Tal como hemos diseñado el dispositivo (poniendo indiferencias en las salidas no permitidas) no podemos decir nada sobre esta cuestión.

Es posible imponer prioridades a las líneas de entrada, de tal forma que si varias de ellas están activas el codificador solo tendrá en cuenta a la más prioritaria. En la tabla 2. mostramos la tabla de verdad de un codificador 4 a 2 con prioridad y las expresiones lógicas de sus salidas. Hemos supuesto que las líneas de mayor peso son las más prioritarias: i 3 > i 2 > i 1 > i 0. El orden i 3 > i 2 > i 1 > i 0 es el orden de prioridad más usual y éstos van a ser los circuitos codificadores que se encuentren en el mercado.

En la tabla de verdad solo ha de tenerse en cuenta la línea más prioritaria a uno. Así, por ejemplo, si i 2 = 1 e i 3 = 0 sabemos que la salida ha de ser 2, independientemente de los valores de las líneas i 0 e i 1 (segunda fila de la tabla). Por otro lado, la obtención de estas ecuaciones a partir de la tabla de verdad es similar a la construcción de funciones en forma de suma de minterm, pero teniendo en cuenta que las variables de entrada que son “x” no intervienen en la formación del término producto. A diferencia de un codificador sin prioridad, en un codificador con prioridad todas las combinaciones de entrada tienen definido un valor de salida y, por lo tanto, no hay indiferencias en las funciones de salida del codificador.

20 TEMA 2. SISTEMAS COMBINACIONALES

Tabla 2.8: Conversión BCD a 7 segmentos.

ENTRADAS SALIDAS D C B A a b c d e f g DISPLAY 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 1 0 1 1 0 0 0 0 1 0 0 1 0 1 1 0 1 1 0 1 2 0 0 1 1 1 1 1 1 0 0 1 3 0 1 0 0 0 1 1 0 0 1 1 4 0 1 0 1 1 0 1 1 0 1 1 5 0 1 1 0 0 0 1 1 1 1 1 6 0 1 1 1 1 1 1 0 0 0 0 7 1 0 0 0 1 1 1 1 1 1 1 8 1 0 0 1 1 1 1 0 0 1 1 9 1 0 1 0 – – – – – – – – 1 0 1 1 – – – – – – – – 1 1 0 0 – – – – – – – – 1 1 0 1 – – – – – – – – 1 1 1 0 – – – – – – – – 1 1 1 1 – – – – – – – –

2.5.3. Conversores de código

Un conversor de código es un dispositivo que genera la traducción entre dos códigos diferentes. Los números de bits en la entrada y la salida de este dispositivo vienen dados respectivamente por la longitud del código de partida y del código traducido. La construc- ción de estos dispositivos es particular para cada tipo de conversión de códigos elegida. Una forma sencilla de realizar conversores es partiendo de decodificadores y codificadores.

Un ejemplo interesante es la conversión BCD a siete segmentos. Esta conversión viene dada por la tabla 2.8.

El formato BCD hace corresponder cada cifra decimal con un conjunto de 4 bits que codifican su valor en binario puro. Con 4 bits se pueden representar los números del 0 al 15, pero en BCD solo utilizamos las combinaciones que codifican desde el 0 hasta el 9 (por tanto, estamos desperdiciando 6/16 de la capacidad de almacenamiento en favor de una fácil y rápida conversión de binario a decimal y viceversa).

Un visualizador ( display ) de siete segmentos consta de siete segmentos etiquetados a , b , c , d , e , f y g (figura 2.18), que pueden ser iluminados individualmente mediante LEDs. El visualizador incluye una entrada de control para cada segmento de forma que si, por ejemplo, la entrada correspondiente al segmento a está activa éste se iluminará, mientras que si está inactiva el segmento permanecerá apagado. Igual para los seis segmentos restantes. La activación de un segmento puede ser con un valor alto (HIGH) cuando el visualizador es de cátodo común , o con un valor bajo (LOW) cuando el visualizador es de ánodo común.

Como se ha indicado anteriormente, los conversores de código se pueden construir