6. Componentes combinacionales básicos

Anuncio
6. Componentes combinacionales
básicos
Oliverio J. Santana Jaria
Sistemas Digitales
Ingeniería Técnica en Informática de Sistemas
Curso 2005 – 2006
Introducción
Los circuitos combinacionales son aquellos cuyo
valor de salida depende única y exclusivamente de
los valores de entrada
Los circuitos complejos suelen diseñarse reutilizando
determinados componentes combinacionales básicos
de uso común
Los objetivos de este tema son:
Describir los componentes combinacionales básicos más
frecuentemente usados en el diseño de circuitos
Describir como se implementan estos componentes utilizando
puertas lógicas básicas
Componentes combinacionales básicos
2
1
Estructura del tema
Introducción
Circuitos aritmético-lógicos
Sumador
▫ Sumador con acarreo en cascada
▫ Sumador con acarreo anticipado
▫ Sumador/Restador
Unidad lógica
Unidad aritmético-lógica
Selección/Distribución de datos
Circuitos multiplexores
Circuitos demultiplexores
Convertidores de código
Circuitos de paridad
Generador de paridad
Comprobador de paridad
Circuitos comparadores
Igualdad
Desigualdad
Codificación/Decodificación
Circuitos decodificadores
Circuitos codificadores
Buses y salidas triestado
Desplazamiento/Rotación
Dispositivos programables
Matriz lógica programable
Matriz lógica genérica
Resumen y bibliografía
Componentes combinacionales básicos
3
Circuitos sumadores
Los sumadores son circuitos importantes para cualquier
sistema digital en el que se procesen datos numéricos
Las reglas básicas de la suma binaria indican que:
0+0= 0
0+1= 1
1+0= 1
1 + 1 = 10
Al estar sumando números con un tamaño fijo de un
bit, no es posible tener un resultado con dos bits
Por tanto, la salida de un sumador no es sólo el valor de
la suma, ya que también es posible que exista acarreo
Componentes combinacionales básicos
4
2
El semisumador
Se denomina semisumador a un circuito que admite dos
bits como entrada y genera como salida:
Un bit que representa la suma de los dos bits de entrada
Otro bit que representa el acarreo generado por la suma
La tabla de verdad de este circuito puede deducirse a
partir de las reglas de la suma binaria
A
0
0
1
1
B
0
1
0
1
Co
0
0
0
1
S
0
1
1
0
A,B
Co
S
sumandos
acarreo de salida
suma
Componentes combinacionales básicos
5
El semisumador
A partir de esta tabla de verdad se puede observar que
la suma puede implementarse con una operación XOR
y el acarreo de salida con una operación AND
Co = A·B
S=A+B
semisumador
Componentes combinacionales básicos
6
3
El sumador completo
La principal diferencia entre un sumador completo y
un semisumador es que el sumador completo admite
un valor que represente un acarreo de entrada
Ci
0
0
0
0
1
1
1
1
A
0
0
1
1
0
0
1
1
B
0
1
0
1
0
1
0
1
Co
0
0
0
1
0
1
1
1
S
0
1
1
0
1
0
0
1
A,B
Ci
Co
S
sumandos
acarreo de entrada
acarreo de salida
suma
Componentes combinacionales básicos
7
El sumador completo
Dado que podemos expresar la suma de dos bits con la
operación XOR, podemos expresar la suma de dos bits
y un acarreo de la siguiente forma:
S = A + B + Ci
El acarreo de salida será 1 en dos circunstancias:
Cuando las dos entradas A y B sean 1
Cuando la suma de las dos entradas sea 1 y el acarreo de
entrada también sea 1
Ci
0
AB
1
00
01
1
11 1 1
10
1
Co = AB +ACi +BCi = AB + Ci(A+B) = AB + Ci(A + B)
Componentes combinacionales básicos
8
4
El sumador completo
De esta manera se puede implementar el circuito
sumador completo usando dos puertas XOR, dos
puertas AND y una puerta OR
S = A + B + Ci
Co = AB + Ci(A + B)
sumador
Componentes combinacionales básicos
9
El sumador completo
También es posible implementar el sumador completo
utilizando dos circuitos semisumadores
El primer semisumador suma los dos bits
El segundo suma el resultado con el acarreo de entrada
Habrá acarreo de salida si cualquiera de los dos
semisumadores generó un acarreo
semisumador
semisumador
Componentes combinacionales básicos
10
5
Estructura del tema
Introducción
Circuitos aritmético-lógicos
Sumador
▫ Sumador con acarreo en cascada
▫ Sumador con acarreo anticipado
▫ Sumador/Restador
Unidad lógica
Unidad aritmético-lógica
Circuitos comparadores
Igualdad
Desigualdad
Codificación/Decodificación
Circuitos decodificadores
Circuitos codificadores
Selección/Distribución de datos
Circuitos multiplexores
Circuitos demultiplexores
Convertidores de código
Circuitos de paridad
Generador de paridad
Comprobador de paridad
Buses y salidas triestado
Desplazamiento/Rotación
Dispositivos programables
Matriz lógica programable
Matriz lógica genérica
Resumen y bibliografía
Componentes combinacionales básicos
11
Sumadores con acarreo en cascada
El circuito sumador completo permite sumar dos
números de un bit con un acarreo de entrada y generar
un acarreo de salida
Como regla general, un sumador binario de cualquier
número de bits puede realizarse conectando en cascada
varios sumadores completos de un bit
El proceso puede extenderse usando cualquier sumador
como elemento básico: por ejemplo puede hacerse un
sumador de 4 bits con dos sumadores de 2 bits
Componentes combinacionales básicos
12
6
Sumadores con acarreo en cascada
El primero de los acarreos de entrada debe estar
siempre a cero, ya que representa el acarreo inicial
en la suma de los bits menos significativos
sumador
sumador 2
sumador
Componentes combinacionales básicos
13
Sumadores con acarreo en cascada
El principal problema de esta conexión en serie de
sumadores es que el retardo del circuito depende de la
propagación del acarreo a lo largo de todo el sumador
sumador
sumador 2
sumador 4
sumador
sumador
sumador 2
sumador
Componentes combinacionales básicos
14
7
Estructura del tema
Introducción
Circuitos aritmético-lógicos
Sumador
▫ Sumador con acarreo en cascada
▫ Sumador con acarreo anticipado
▫ Sumador/Restador
Unidad lógica
Unidad aritmético-lógica
Selección/Distribución de datos
Circuitos multiplexores
Circuitos demultiplexores
Convertidores de código
Circuitos de paridad
Generador de paridad
Comprobador de paridad
Circuitos comparadores
Igualdad
Desigualdad
Codificación/Decodificación
Circuitos decodificadores
Circuitos codificadores
Buses y salidas triestado
Desplazamiento/Rotación
Dispositivos programables
Matriz lógica programable
Matriz lógica genérica
Resumen y bibliografía
Componentes combinacionales básicos
15
Sumadores con acarreo anticipado
La cadena de acarreos es el camino crítico en el retardo
de un sumador en cascada pero, afortunadamente, la
mayoría de las expresiones necesarias pueden ser
precalculadas, reduciendo el retardo
Para poder anticipar el valor del acarreo hay que dividir
la función que lo expresa en otras dos funciones
Ci+1 = AB + Ci(A + B)
Gi
Pi propagación de acarreo
generación de acarreo
Ci+1 = Gi + Ci·Pi
Componentes combinacionales básicos
16
8
Sumadores con acarreo anticipado
Si suponemos un sumador de 4 bits podemos calcular
cada uno de los acarreos intermedios
C1 = G0 + C0·P0
C2 = G1 + C1·P1 = G1 + G0·P1 + C0·P1·P0
C3 = G2 + C2·P2 = G2 + G1·P2 + G0·P2·P1 + C0·P2·P1·P0
C4 = G3 + C3·P3 = G3 + G2·P3 + G1·P3·P2 + G0·P3·P2·P1 + C0·P3·P2·P1·P0
Los acarreos pueden calcularse en función de los
valores de entrada y el acarreo inicial C0, por lo que la
propagación de acarreo no es estrictamente necesaria
Componentes combinacionales básicos
17
Sumadores con acarreo anticipado
Se ha limitado el cálculo del acarreo anticipado a
sumadores de 4 bits porque un número mayor de
bits complicaría el circuito
Para obtener sumadores con más bits será necesario
conectar estos sumadores de 4 bits
Para permitir la propagación de los valores es necesario
reescribir la última ecuación:
C4 = G3 + G2·P3 + G1·P3·P2 + G0·P3·P2·P1 + C0·P3·P2·P1·P0
P4 = P3·P2·P1·P0
C4 = G4 + C0·P4
G4 = G3 + G2·P3 + G1·P3·P2 + G0·P3·P2·P1
Componentes combinacionales básicos
18
9
Sumadores con acarreo anticipado
El circuito propagador de acarreo
quedaría de esta manera:
propagador
Componentes combinacionales básicos
19
Sumadores con acarreo anticipado
Usando el circuito propagador de acarreo, la estructura
de un sumador de 4 bits es como sigue:
sumador 4
propagador
Componentes combinacionales básicos
20
10
Sumadores con acarreo anticipado
Para obtener un sumador de, por ejemplo, 16 bits
podríamos conectar en cascada cuatro de estos
sumadores
En este caso, las salidas P4 y G4 quedarían sin usar
sumador 4
sumador 4
sumador 4
sumador 4
Componentes combinacionales básicos
21
Sumadores con acarreo anticipado
Es posible utilizar un circuito propagador de acarreo
global para evitar que la generación del resultado se
vea retardada por la propagación del acarreo
En este caso, la salida C4 quedaría sin usar
propagador
sumador 4
Componentes combinacionales básicos
sumador 4
sumador 4
sumador 4
22
11
Estructura del tema
Introducción
Circuitos aritmético-lógicos
Sumador
▫ Sumador con acarreo en cascada
▫ Sumador con acarreo anticipado
▫ Sumador/Restador
Unidad lógica
Unidad aritmético-lógica
Circuitos comparadores
Igualdad
Desigualdad
Codificación/Decodificación
Circuitos decodificadores
Circuitos codificadores
Selección/Distribución de datos
Circuitos multiplexores
Circuitos demultiplexores
Convertidores de código
Circuitos de paridad
Generador de paridad
Comprobador de paridad
Buses y salidas triestado
Desplazamiento/Rotación
Dispositivos programables
Matriz lógica programable
Matriz lógica genérica
Resumen y bibliografía
Componentes combinacionales básicos
23
Sumadores / Restadores
La resta binaria se realiza sumando al minuendo el
complemento a 2 del sustraendo
Debido a esto, no es necesario tener un circuito restador
separado, ya que se puede modificar el sumador para
que también realice la operación de resta
El complemento a 2 se obtiene complementando cada
bit del número binario y luego sumando 1 al resultado
La suma del 1 final se realiza poniendo a 1 el acarreo
de entrada del sumador en lugar de a 0
Componentes combinacionales básicos
24
12
Sumadores / Restadores
Un circuito sumador/restador tendrá una señal de
selección SEL que funcionará de la siguiente manera:
SEL = 0 suma
SEL = 1 resta
Esta señal puede usarse como acarreo de entrada, ya
que debe ser 0 para la suma y 1 para la resta
Además, aplicando la operación XOR entre un bit de
entrada y SEL se complementa el bit
SEL = 0 el bit se deja como está
SEL = 1 el bit se complementa
SEL
0
0
1
1
bit
0
1
0
1
XOR
0
1
1
0
Componentes combinacionales básicos
25
Sumadores / Restadores
Un circuito sumador/restador puede hacerse a partir
de un circuito sumador (por ejemplo, con acarreo en
cascada) si se añade la señal de entrada SEL y unas
puertas XOR para complementar el sustraendo
sumador 4
Componentes combinacionales básicos
26
13
Estructura del tema
Selección/Distribución de datos
Introducción
Circuitos multiplexores
Circuitos aritmético-lógicos
Sumador
▫ Sumador con acarreo en cascada
▫ Sumador con acarreo anticipado
▫ Sumador/Restador
Unidad lógica
Unidad aritmético-lógica
Circuitos demultiplexores
Convertidores de código
Circuitos de paridad
Generador de paridad
Comprobador de paridad
Buses y salidas triestado
Desplazamiento/Rotación
Dispositivos programables
Circuitos comparadores
Igualdad
Desigualdad
Codificación/Decodificación
Matriz lógica programable
Matriz lógica genérica
Circuitos decodificadores
Resumen y bibliografía
Circuitos codificadores
Componentes combinacionales básicos
27
Unidad lógica
Dados dos operandos de entrada, una unidad lógica
permite realizar una operación lógica entre los dos
La implementación de una unidad lógica no es
compleja, ya que tan sólo es necesario que realice
las 16 operaciones lógicas posibles para dos variables
Para esto es necesario utilizar cuatro variables de
selección que permitan elegir entre estas funciones
AB
f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15
00
01
10
11
0
0
0
0
1
0
0
0
0
1
0
0
1
1
0
0
Componentes combinacionales básicos
0
0
1
0
1
0
1
0
0
1
1
0
1
1
1
0
0
0
0
1
1
0
0
1
0
1
0
1
1
1
0
1
0
0
1
1
1
0
1
1
0
1
1
1
1
1
1
1
S0
S1
S2
S3
28
14
Unidad lógica
El valor binario de las cuatro variables de selección
para una función lógica dada coincide con el número
decimal correspondiente a la función
Cada variable de selección equivale a uno de los bits del
número identificativo de la función
Cada variable se corresponde con una de las cuatro posibles
combinaciones de entrada
Esto da lugar a una expresión booleana sencilla que
representa el comportamiento de la unidad lógica
F = S0·A·B + S1·A·B + S2·A·B + S3·A·B
Componentes combinacionales básicos
29
Unidad lógica
Dada esta expresión, el circuito de una unidad lógica de
un bit queda de la siguiente manera:
F = S0·A·B + S1·A·B + S2·A·B + S3·A·B
UL
Componentes combinacionales básicos
30
15
Unidad lógica
Para implementar una unidad lógica de más de un bit
bastará con reutilizar varios de los bloques de un bit de
esta forma:
UL
UL
UL
UL
Componentes combinacionales básicos
31
Estructura del tema
Introducción
Circuitos aritmético-lógicos
Sumador
▫ Sumador con acarreo en cascada
▫ Sumador con acarreo anticipado
▫ Sumador/Restador
Unidad lógica
Unidad aritmético-lógica
Circuitos comparadores
Igualdad
Desigualdad
Codificación/Decodificación
Circuitos decodificadores
Circuitos codificadores
Componentes combinacionales básicos
Selección/Distribución de datos
Circuitos multiplexores
Circuitos demultiplexores
Convertidores de código
Circuitos de paridad
Generador de paridad
Comprobador de paridad
Buses y salidas triestado
Desplazamiento/Rotación
Dispositivos programables
Matriz lógica programable
Matriz lógica genérica
Resumen y bibliografía
32
16
Unidad aritmético-lógica
ALU – arithmetic-logic unit)
Una unidad aritmético lógica (
realiza las operaciones aritméticas y lógicas básicas de
un procesador entre dos operandos
Las operaciones aritméticas incluyen, por ejemplo, sumar,
restar, incrementar y decrementar
Las operaciones lógicas incluyen, por ejemplo, la AND, la
OR, la identidad y el complemento
Todas estas operaciones pueden realizarse utilizando
un sumador si se modifican adecuadamente los valores
de entrada
Componentes combinacionales básicos
33
Unidad aritmético-lógica
AE – arithmetic extender) es un
El ampliador aritmético (
circuito utilizado para modificar las entradas de una
ALU y permitir el cálculo de operaciones aritméticas
LE – logic extender) es un circuito
El ampliador lógico (
utilizado para modificar las entradas de una ALU y
permitir el cálculo de operaciones lógicas
La implementación de una ALU consistirá en un
circuito sumador que tendrá conectado uno de estos
ampliadores a cada una de sus entradas
Componentes combinacionales básicos
34
17
Unidad aritmético-lógica
Dado que la ALU puede realizar tanto operaciones
aritméticas como operaciones lógicas, es necesaria una
señal de entrada para controlar el modo de operación
M = 0 cálculo de operaciones lógicas
M = 1 cálculo de operaciones aritméticas
También es necesario añadir variables de selección
para distinguir entre los distintos tipos de operaciones
aritméticas y lógicas
Por ejemplo, si tenemos cuatro operaciones de cada
tipo harán falta dos variables de selección: S0 y S1
Componentes combinacionales básicos
35
Ampliador aritmético
El funcionamiento del ampliador aritmético puede
resumirse con una tabla que incluye
Las variables de selección de modo: M, S0, S1
El nombre y la descripción de la función
Las modificaciones necesarias sobre los operandos
El valor del acarreo de entrada
M
S1
S2
Función
1
0
0
decremento
1
0
1
1
1
0
1
1
1
incremento
Operando X Operando Y
Ci
A–1
A
todo unos
0
suma
A+B
A
B
0
resta
A+B+1
A
B
1
A+1
A
todo ceros
1
Componentes combinacionales básicos
36
18
Ampliador aritmético
Con este diseño, la entrada del sumador correspondiente
al primer operando no necesita ninguna modificación
Por lo tanto, el ampliador aritmético tan solo debe
aplicarse a los bits del segundo operando según la
siguiente tabla de verdad
Sólo tendremos en cuenta la
posibilidad M = 1 por lo que,
en caso contrario, la salida del
ampliador aritmético será 0
M
1
1
1
1
1
1
1
1
S0 S1
0 0
0 0
0 1
0 1
1 0
1 0
1 1
1 1
B
0
1
0
1
0
1
0
1
Y
1
1
0
1
1
0
0
0
Componentes combinacionales básicos
37
Ampliador aritmético
Dado que la variable M siempre vale 1, solo hay que
tener en cuenta las otras tres variables para simplificar
M=1
B
0
S0S1
1
00 1 1
01
1
11
10 1
Y = M·S1·B + M·S0·B
Componentes combinacionales básicos
AE
38
19
Ampliador lógico
El funcionamiento del ampliador lógico puede
resumirse con una tabla que incluya
Las variables de selección de modo: M, S0, S1
El nombre y la descripción de la función
Las modificaciones necesarias sobre los operandos
El valor del acarreo de entrada
M
S1
S2
Función
Operando X Operando Y
0
0
0
complemento
0
0
1
AND
0
1
0
identidad
0
1
1
OR
A
A AND B
Ci
A
0
0
A AND B
0
0
A
0
0
A OR B
0
0
A
A OR B
Componentes combinacionales básicos
39
Ampliador lógico
El ampliador lógico necesita conocer el valor de B, el
cual nunca llegará al sumador en operaciones lógicas
Por este motivo, cuando M = 0, el ampliador aritmético
siempre transformaba B en un cero
Sin embargo, sí que será necesario tener en cuenta el caso
M = 1 en el diseño del ampliador lógico
M S0 S1
X
0
0
0
0
A
A·B
A
A+B
0
0
1
1
0
1
0
1
1 – –
Componentes combinacionales básicos
A
40
20
Ampliador lógico
A partir de la tabla de verdad podemos simplificar la
función del ampliador lógico utilizando un mapa de
Karnaugh de cinco variables
S0S1
AB
00
M=0
00 01 11 10
1 1
01
11
10
1
S0S1
AB
00
M=1
00 01 11 10
1 1
1
1
01
1
1
1
1
11
1
1
10
1
1
1
X = M·S0·S1·A + M·S0·S1·B + S0·A·B + S1·A + M·A
Componentes combinacionales básicos
41
Ampliador lógico
Una vez obtenida la expresión minimizada podemos
diseñar el circuito ampliador lógico
X = M·S0·S1·A + M·S0·S1·B + S0·A·B + S1·A + M·A
LE
Componentes combinacionales básicos
42
21
Diseño de la ALU
El diseño de la ALU puede hacerse bit a bit, utilizando
sumadores completos de un bit con un AE conectado a
una entrada y un LE conectado a la otra entrada
El acarreo de entrada será 1 sólo para las operaciones
aritméticas (M = 1) de resta e incremento (S1 = 1)
El acarreo de salida del bit más significativo representa
un desbordamiento en el caso de aritmética entera
En el caso de aritmética en complemento a dos, la señal
un XOR de los acarreos de
salida de los dos bits más significativos
de desbordamiento será
Componentes combinacionales básicos
43
Diseño de la ALU
Este diagrama muestra una ALU de 4 bits, que sería
fácilmente extensible a un mayor número de bits
+
LE
LE
LE
LE
AE
AE
AE
AE
+
Componentes combinacionales básicos
+
+
44
22
Estructura del tema
Introducción
Circuitos aritmético-lógicos
Sumador
▫ Sumador con acarreo en cascada
▫ Sumador con acarreo anticipado
▫ Sumador/Restador
Unidad lógica
Unidad aritmético-lógica
Circuitos comparadores
Igualdad
Desigualdad
Codificación/Decodificación
Circuitos decodificadores
Circuitos codificadores
Selección/Distribución de datos
Circuitos multiplexores
Circuitos demultiplexores
Convertidores de código
Circuitos de paridad
Generador de paridad
Comprobador de paridad
Buses y salidas triestado
Desplazamiento/Rotación
Dispositivos programables
Matriz lógica programable
Matriz lógica genérica
Resumen y bibliografía
Componentes combinacionales básicos
45
Circuitos comparadores
La función básica de un circuito comparador consiste
en comparar las magnitudes de dos cantidades binarias
para determinar la relación entre ellas
En su forma más sencilla, un circuito comparador
determina si dos números son iguales o no
Resulta frecuente ampliar la funcionalidad de un
circuito comparador para que, en caso de que los dos
números comparados no sean iguales, sea capaz de
distinguir cuál de los dos es el mayor
Componentes combinacionales básicos
46
23
Igualdad entre magnitudes
La puerta XOR puede ser utilizada como comparador
básico, ya que su salida es 0 si las entradas son iguales
y 1 si las entradas son diferentes
Componentes combinacionales básicos
47
Igualdad entre magnitudes
Por ejemplo, para comparar números binarios de dos
bits serán necesarias dos puertas XOR
Si los números son iguales los dos bits también lo serán
Si los números son distintos, alguno de los bits será distinto
Este esquema es fácilmente extensible para números
con mayor cantidad de bits
Componentes combinacionales básicos
48
24
Desigualdad entre magnitudes
Además de indicar si los números comparados son
iguales, es frecuente que los circuitos comparadores
indiquen cuál de los dos números es el mayor
Esto implica la existencia de
tres salidas en el circuito:
Indicación de si los dos
números son iguales
Indicación de si el primer
número es el mayor
Indicación de si el segundo
número es el mayor
Componentes combinacionales básicos
49
Desigualdad entre magnitudes
El procedimiento general para comparar dos números
consiste en buscar una desigualdad en cualquiera de las
posiciones, comenzando por el bit más significativo
La relación entre los números queda establecida en el
momento en que se encuentre la primera desigualdad
Si A = 1 y B = 0 entonces A > B
i
i
Si A = 0 y B = 1 entonces A < B
i
i
Si se examinan todas las posiciones y no se encuentra
ninguna desigualdad, entonces los números son iguales
Componentes combinacionales básicos
50
25
Desigualdad entre magnitudes
También resulta útil tener tres entradas para permitir
la conexión en cascada de circuitos comparadores
Cuando se realice este tipo de conexión en cascada
es importante tener en cuenta que siempre será
prioritaria la salida del comparador correspondiente
a los bits más significativos
Componentes combinacionales básicos
51
Diseño de un circuito comparador
Un circuito comparador universal que permita comparar
dos números X e Y puede diseñarse conectando módulos
sencillos que comparen pocos bits
Cada módulo necesitará sólo dos salidas: G y L
G=1X>Y
L=1X<Y
G=0X≤Y
L=0X≥Y
Si G = 0 y L = 0 al mismo tiempo X = Y
La conexión de estos módulos para generar un circuito
comparador puede hacerse en serie o en paralelo
Componentes combinacionales básicos
52
26
Diseño de un circuito comparador
El diseño de un circuito comparador de números de dos
bits puede realizarse usando el método de Karnaugh
G = A1B1 + A1A0B0 + B1A0B0
L = A1B1 + A1A0B0 + B1A0B0
Componentes combinacionales básicos
53
Diseño de un circuito comparador
Dadas estas ecuaciones, el diseño del circuito
comparador de números de dos bits queda como sigue:
G = A1B1 + A1A0B0 + B1A0B0
L = A1B1 + A1A0B0 + B1A0B0
Componentes combinacionales básicos
54
27
Diseño de un circuito comparador
Una implementación en serie de un comparador usaría
un módulo de dos bits para comparar cada pareja de
bits de ambos números
Hay que tener en cuenta que el resultado de la
comparación de los bits más significativos siempre
es prioritaria respecto a los demás bits
Componentes combinacionales básicos
55
Diseño de un circuito comparador
El problema de la conexión en serie es que el retardo
del circuito global depende de la propagación de la
señal por todos los módulos
Esto puede resolverse con una conexión paralela en la
que primero se comparan parejas, luego parejas de
parejas y así sucesivamente
Componentes combinacionales básicos
56
28
Estructura del tema
Introducción
Circuitos aritmético-lógicos
Sumador
▫ Sumador con acarreo en cascada
▫ Sumador con acarreo anticipado
▫ Sumador/Restador
Unidad lógica
Unidad aritmético-lógica
Circuitos comparadores
Igualdad
Desigualdad
Codificación/Decodificación
Circuitos decodificadores
Circuitos codificadores
Selección/Distribución de datos
Circuitos multiplexores
Circuitos demultiplexores
Convertidores de código
Circuitos de paridad
Generador de paridad
Comprobador de paridad
Buses y salidas triestado
Desplazamiento/Rotación
Dispositivos programables
Matriz lógica programable
Matriz lógica genérica
Resumen y bibliografía
Componentes combinacionales básicos
57
Circuitos decodificadores
La función básica de un decodificador es detectar la
presencia de una determinada combinación de bits,
denominada código, en sus entradas
Un decodificador indicará la presencia de un código
en sus entradas por medio de un determinado nivel de
salida, ya sea alto o bajo
En su forma más general, un decodificador tendrá
n entradas y 2n salidas para indicar cada una de las
posibles combinaciones de valores de las entradas
Componentes combinacionales básicos
58
29
Activación a nivel alto
Por ejemplo, supongamos que queremos indicar cuándo
aparece la combinación 1001 en las entradas de un
circuito por medio de un nivel alto en la salida
Se puede utilizar una puerta AND como elemento
básico de decodificación, ya que sólo genera un nivel
alto a la salida si todas las entradas están a nivel alto
A
B
X = ABCD
C
D
Componentes combinacionales básicos
59
Entrada de habilitación
Los circuitos decodificadores suelen incorporar
también una entrada de habilitación E para habilitar
o no su funcionamiento
Cuando la entrada de habilitación de un decodificador
activo a nivel alto esté a 0, todas las salidas serán 0
independientemente de la combinación de valores de
las entradas
Cuando la entrada de habilitación esté a 1, la salida
correspondiente a la combinación de valores de las
entradas será 1 y todas las demás salidas serán 0
Componentes combinacionales básicos
60
30
Decodificadores activos a nivel alto
Un decodificador de 1 entrada tendrá 2 salidas, tal y
como se muestra a continuación
C0 = E·A0
C1 = E·A0
Componentes combinacionales básicos
61
Decodificadores activos a nivel alto
El diseño anterior puede expandirse fácilmente para
obtener un decodificador de 2 entradas y 4 salidas
C0 = E·A1·A0
C1 = E·A1·A0
C2 = E·A1·A0
C3 = E·A1·A0
Componentes combinacionales básicos
62
31
Decodificadores activos a nivel alto
También resulta posible construir decodificadores
mayores, por ejemplo con 3 entradas y 8 salidas, a
partir de los bloques anteriores
El diseño incluirá varios niveles de decodificadores,
donde los de un nivel habilitan o no a los del siguiente
Componentes combinacionales básicos
63
Activación a nivel bajo
Supongamos ahora que queremos indicar cuándo
aparece la combinación 1001 en las entradas de un
circuito por medio de un nivel bajo en la salida
Se puede utilizar una puerta NAND como elemento
básico de decodificación, ya que sólo genera un nivel
bajo a la salida si todas las entradas están a nivel alto
A
B
X = ABCD
C
D
Componentes combinacionales básicos
64
32
Decodificadores activos a nivel bajo
Por ejemplo, un decodificador activo a nivel bajo
con 4 líneas de entrada necesitará 16 salidas para poder
decodificar todas las posibles combinaciones de entrada
Componentes combinacionales básicos
65
Decodificadores activos a nivel bajo
Otro ejemplo es el decodificador BCD a decimal, que
tiene 4 líneas de entrada que se corresponden con un
código BCD 8421
Este decodificador sólo necesita 10 líneas de salida,
correspondientes a los dígitos decimales, ya que hay
que ignorar 6 de las posibles combinaciones de entrada
Componentes combinacionales básicos
66
33
Decodificadores activos a nivel bajo
Otra aplicación es usar un decodificador con 4 líneas de
entrada, correspondientes a un código BCD, y 7 líneas
de salida que controlen un display de 7 segmentos
Componentes combinacionales básicos
67
Generación de funciones lógicas
Cada salida de un decodificador se corresponde con
un término producto o con un término suma, por lo
que podemos usar decodificadores para implementar
funciones lógicas
A B C
F
Por ejemplo, dada
esta tabla de verdad,
podemos obtener una
expresión como suma
de productos o como
producto de sumas
Componentes combinacionales básicos
0)
1)
2)
3)
4)
5)
6)
7)
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
F(A,B,C) = ∑(1,3,5,7)
F(A,B,C) = ∏(0,2,4,6)
68
34
Generación de funciones lógicas
Para generar una función expresada como suma de
productos con un decodificador activo a nivel alto será
necesario conectar las salidas correspondientes a una
puerta OR
F(A,B,C) = ∑(1,3,5,7)
Componentes combinacionales básicos
69
Generación de funciones lógicas
Para generar una función expresada como suma de
productos con un decodificador activo a nivel bajo será
necesario conectar las salidas correspondientes a una
puerta NAND
F(A,B,C) = ∑(1,3,5,7)
Componentes combinacionales básicos
70
35
Generación de funciones lógicas
Para generar una función expresada como producto de
sumas con un decodificador activo a nivel alto será
necesario conectar las salidas correspondientes a una
puerta NOR
F(A,B,C) = ∏(0,2,4,6)
Componentes combinacionales básicos
71
Generación de funciones lógicas
Para generar una función expresada como producto de
sumas con un decodificador activo a nivel bajo será
necesario conectar las salidas correspondientes a una
puerta AND
F(A,B,C) = ∏(0,2,4,6)
Componentes combinacionales básicos
72
36
Estructura del tema
Introducción
Selección/Distribución de datos
Circuitos multiplexores
Circuitos demultiplexores
Circuitos aritmético-lógicos
Sumador
▫ Sumador con acarreo en cascada
▫ Sumador con acarreo anticipado
▫ Sumador/Restador
Unidad lógica
Unidad aritmético-lógica
Convertidores de código
Circuitos de paridad
Generador de paridad
Comprobador de paridad
Circuitos comparadores
Igualdad
Desigualdad
Codificación/Decodificación
Circuitos decodificadores
Circuitos codificadores
Buses y salidas triestado
Desplazamiento/Rotación
Dispositivos programables
Matriz lógica programable
Matriz lógica genérica
Resumen y bibliografía
Componentes combinacionales básicos
73
Circuitos codificadores
Un circuito codificador realiza, en esencia, la función
contraria a un circuito decodificador
Cuando se activa una de sus líneas de entrada, un
circuito codificador generará una salida codificada
correspondiente a la entrada
En su forma más general, un decodificador tendrá
n salidas y 2n entradas que se corresponderán a cada
una de las posibles combinaciones de salida
Componentes combinacionales básicos
74
37
Codificadores activos a nivel alto
Un codificador activo a nivel alto generará una
combinación de salida si la entrada correspondiente
está a nivel alto
Por ejemplo, un
codificador de decimal
a BCD 8421 tendrá 10
líneas de entrada, que
se corresponden con
los dígitos decimales,
y 4 líneas de salida
para codificarlas
Componentes combinacionales básicos
75
Codificadores activos a nivel alto
Cada una de las líneas de salida se corresponde a uno
de los bits del código BCD 8421
A0 = 1 + 3 + 5 + 7 + 9
A1 = 2 + 3 + 6 + 7
A2 = 4 + 5 + 6 + 7
A3 = 8 + 9
Componentes combinacionales básicos
76
38
Codificadores activos a nivel bajo
Un codificador también puede ser activo a nivel bajo,
es decir, generará una combinación de salida cuando la
entrada correspondiente esté a nivel bajo
Por ejemplo, un codificador de octal a binario tendrá
8 líneas de entrada, correspondientes a los dígitos
octales, y 3 líneas de salida para codificarlos en binario
Componentes combinacionales básicos
77
Codificadores con prioridad
Si se activa más de una línea de entrada en un circuito
codificador, el resultado de salida no será el esperado
Para evitar esto es necesario dar un orden de prioridad a
las entradas, de manera que siempre que haya varias
entradas activadas sólo se tenga en cuenta una de ellas
Un codificador con prioridad también puede tener una
salida adicional, denominada CUALQUIERA, que se
activará si alguna de las entradas está activada
Componentes combinacionales básicos
78
39
Codificadores con prioridad
Un codificador con prioridad activo a nivel alto con 2
entradas tendrá 1 línea de salida, tal y como se muestra
a continuación
A0 = D1
Cualquiera = D0+D1
Componentes combinacionales básicos
79
Codificadores con prioridad
El diseño anterior puede expandirse fácilmente para
obtener un decodificador de 2 entradas y 4 salidas
A0 = D1·D2+D3
A1 = D2+D3
Cualquiera = D0+D1+D2+D3
Componentes combinacionales básicos
80
40
Estructura del tema
Selección/Distribución de datos
Introducción
Circuitos multiplexores
Circuitos demultiplexores
Circuitos aritmético-lógicos
Sumador
▫ Sumador con acarreo en cascada
▫ Sumador con acarreo anticipado
▫ Sumador/Restador
Unidad lógica
Unidad aritmético-lógica
Generador de paridad
Comprobador de paridad
Buses y salidas triestado
Desplazamiento/Rotación
Dispositivos programables
Circuitos comparadores
Convertidores de código
Circuitos de paridad
Igualdad
Desigualdad
Codificación/Decodificación
Matriz lógica programable
Matriz lógica genérica
Circuitos decodificadores
Circuitos codificadores
Resumen y bibliografía
Componentes combinacionales básicos
81
Circuitos multiplexores o selectores
Un multiplexor o selector es un circuito que permite
dirigir la información digital procedente de varias
líneas de entrada hacia una única línea de salida
Su principal objetivo es permitir que información
procedente de varias fuentes pueda transmitirse a
un destino común a través de una línea compartida
líneas de entrada y una única
línea de salida, además de n entradas de selección que
permiten decidir qué entrada se conecta a la salida
n
Un multiplexor posee 2
Componentes combinacionales básicos
82
41
Diseño de circuitos multiplexores
Este diagrama muestra el diseño de un circuito
multiplexor con 2 entradas de datos y 1 entrada
de selección que permite elegir entre ellas
Y = S·D0 +S·D1
Componentes combinacionales básicos
83
Diseño de circuitos multiplexores
Este otro diagrama muestra el diseño de un multiplexor
con 4 entradas de datos, por lo que serán necesarias 2
entradas de selección para elegir entre ellas
Y=S0S1D0+ S0S1D1+ S0S1D2+ S0S1D3
Componentes combinacionales básicos
84
42
Diseño de circuitos multiplexores
Un multiplexor con 8 entradas de datos y 3 de selección
puede construirse usando varios multiplexores menores
Un primer nivel de multiplexores permitirá elegir entre
cada dos entradas, el siguiente nivel elegirá entre las
parejas anteriores y así sucesivamente
Componentes combinacionales básicos
85
Diseño de circuitos multiplexores
Un multiplexor de 8 entradas de datos también puede
implementarse usando un decodificador de 3 entradas
para controlar las señales de selección
Esta técnica sólo puede usarse para multiplexores
pequeños, pues, en otro caso, el coste del decodificador
y la puerta OR de salida sería demasiado grande
Componentes combinacionales básicos
86
43
Generación de funciones lógicas
Una aplicación de los multiplexores es la generación de
funciones lógicas en forma de suma de productos
El número de entradas de selección equivale al número de
variables de la función
El número de entradas de datos equivale al número de
posibles combinaciones de entrada
Dada una tabla de verdad, las entradas del multiplexor
correspondientes a los términos producto se fijan a 1
El resto de las entradas de datos del multiplexor se fijan
a 0, ya que no corresponden a términos de la función
Componentes combinacionales básicos
87
Generación de funciones lógicas
Dada una función de 3 variables, podemos representarla
utilizando un multiplexor con 3 entradas de selección
F(A,B,C) = ∑(1,2,4,5)
0)
1)
2)
3)
4)
5)
6)
7)
A B C
F
0
0
0
0
1
1
1
1
0
1
1
0
1
1
0
0
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
Componentes combinacionales básicos
MUX
88
44
Generación de funciones lógicas
Una función de 3 variables también se puede realizar
usando un multiplexor con sólo 2 entradas de selección,
usando un mapa de Karnaugh como ayuda
F(A,B,C) = ∑(1,2,4,5)
C
0
1
00 0
01 1
1
0
0
1
AB
11 0
10 1
D0
D1
MUX
D3
D2
Componentes combinacionales básicos
89
Generación de funciones lógicas
También podemos realizar una función de 4 variables
con un multiplexor de 3 entradas de selección, siempre
dejando en las columnas del mapa una única variable
F(A,B,C,D) = ∑(1,2,4,5,9,10,11)
D
0
1
000 0
001 1
1
0
0
1
0
0
1
1
ABC
011 0
010 1
110 0
111 0
101 1
100 0
D0
D1
D3
MUX
D2
D6
D7
D5
D4
Componentes combinacionales básicos
90
45
Diseño de circuitos codificadores
Los multiplexores o selectores también pueden usarse
para implementar un circuito codificador con prioridad
a partir de circuitos codificadores simples
Un codificador diseñado así
tendrá varios niveles
formados por codificadores
más sencillos que agrupan
las líneas de entrada
Las salidas CUALQUIERA
de los codificadores se
propagarán hasta que se
obtenga el código de salida
Componentes combinacionales básicos
91
Diseño de circuitos codificadores
La salida CUALQUIERA de los codificadores de un
mismo nivel se utilizará como entrada de selección para
circuitos multiplexores que generen los bits menos
significativos de cada parte del código
Componentes combinacionales básicos
92
46
Estructura del tema
Introducción
Circuitos aritmético-lógicos
Sumador
▫ Sumador con acarreo en cascada
▫ Sumador con acarreo anticipado
▫ Sumador/Restador
Unidad lógica
Unidad aritmético-lógica
Selección/Distribución de datos
Circuitos multiplexores
Circuitos demultiplexores
Convertidores de código
Circuitos de paridad
Generador de paridad
Comprobador de paridad
Circuitos comparadores
Igualdad
Desigualdad
Codificación/Decodificación
Circuitos decodificadores
Circuitos codificadores
Buses y salidas triestado
Desplazamiento/Rotación
Dispositivos programables
Matriz lógica programable
Matriz lógica genérica
Resumen y bibliografía
Componentes combinacionales básicos
93
Circuitos demultiplexores o distribuidores
Un demultiplexor realiza la función contraria a la de un
multiplexor, es decir, distribuir los datos provenientes
de una línea de entrada entre varias líneas de salida
Su principal objetivo es permitir que información
procedente una fuente común que llega por una línea
compartida pueda transmitirse a varios destinos
Un demultiplexor posee una única línea de entrada y
n
2
líneas de salida, además de
n entradas de selección
que permiten decidir qué salida se conecta a la entrada
Componentes combinacionales básicos
94
47
Diseño de circuitos demultiplexores
Este diagrama muestra el diseño de un circuito
demultiplexor con 4 salidas de datos y 2 entradas
de selección que permiten elegir entre ellas
S0 S1
D0 D1 D2 D3
0
0
E X X X
0
1
X E X X
1
0
X X E X
1
1
X X X E
Componentes combinacionales básicos
95
Diseño de circuitos demultiplexores
La implementación de un demultiplexor puede
realizarse usando un circuito decodificador con
una entrada de habilitación
Las entradas de datos
serán usadas como
entradas de selección
La entrada de habilitación
será usada como entrada
de datos
▫ Cuando esté a 0, todas las
salidas estarán a 0
▫ Cuando esté a 1, la salida
correspondiente al código
de entrada estará a 1
Componentes combinacionales básicos
DEMUX
96
48
Estructura del tema
Introducción
Circuitos aritmético-lógicos
Sumador
▫ Sumador con acarreo en cascada
▫ Sumador con acarreo anticipado
▫ Sumador/Restador
Unidad lógica
Unidad aritmético-lógica
Circuitos comparadores
Igualdad
Desigualdad
Codificación/Decodificación
Circuitos decodificadores
Circuitos codificadores
Selección/Distribución de datos
Circuitos multiplexores
Circuitos demultiplexores
Convertidores de código
Circuitos de paridad
Generador de paridad
Comprobador de paridad
Buses y salidas triestado
Desplazamiento/Rotación
Dispositivos programables
Matriz lógica programable
Matriz lógica genérica
Resumen y bibliografía
Componentes combinacionales básicos
97
Convertidores de código
A lo largo de los años se ha ido creando una gran
cantidad de métodos distintos para convertir un código
en otro usando circuitos digitales
En general es posible convertir entre dos códigos
cualesquiera planteando las funciones apropiadas y
simplificándolas con los métodos habituales
A modo de ejemplo nos centraremos en la conversión
de código Gray a binario o de binario a código Gray
utilizando circuitos sencillos con puertas XOR
Componentes combinacionales básicos
98
49
El código Gray
El código Gray es un código no
0000
0001
0011
0010
0110
0111
0101
0100
1100
1101
1111
1110
1010
1011
1001
1000
ponderado y no aritmético que
puede tener cualquier número
de bits
Su característica más importante
es que es continuo, es decir, sólo
varía un bit desde una palabra del
código hasta la siguiente
También es un código cíclico
porque hay continuidad entre la
primera y la última palabra
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Componentes combinacionales básicos
99
Conversión binario – Gray
El bit más significativo siempre es el mismo
De izquierda a derecha se debe sumar cada par
adyacente de bits para obtener el siguiente bit en Gray
Los acarreos deben descartarse
A continuación se muestra el circuito necesario para la
conversión y un ejemplo de su funcionamiento
0
0
Componentes combinacionales básicos
1
1
0
+
+
+
1
0
1
100
50
Conversión Gray – binario
El bit más significativo siempre es el mismo
De izquierda a derecha, cada bit del código binario se
calcula sumando el correspondiente bit Gray con el bit
anterior del código binario y descartando los acarreos
A continuación se muestra el circuito necesario para la
conversión y un ejemplo de su funcionamiento
0
0
1
0
1
+
+
+
1
1
0
Componentes combinacionales básicos
101
Estructura del tema
Introducción
Circuitos aritmético-lógicos
Sumador
▫ Sumador con acarreo en cascada
▫ Sumador con acarreo anticipado
▫ Sumador/Restador
Unidad lógica
Unidad aritmético-lógica
Circuitos comparadores
Igualdad
Desigualdad
Codificación/Decodificación
Circuitos decodificadores
Circuitos codificadores
Componentes combinacionales básicos
Selección/Distribución de datos
Circuitos multiplexores
Circuitos demultiplexores
Convertidores de código
Circuitos de paridad
Generador de paridad
Comprobador de paridad
Buses y salidas triestado
Desplazamiento/Rotación
Dispositivos programables
Matriz lógica programable
Matriz lógica genérica
Resumen y bibliografía
102
51
Errores de transmisión
Durante la transferencia de datos digitales desde una
parte de un circuito a otra pueden producirse errores
debido al mal funcionamiento de un componente o a
ruidos eléctricos
Estos errores se manifiestan mediante cambios
indeseados en los bits que conforman la información
codificada: un 0 puede convertirse en un 1 o viceversa
Debido a la posibilidad de que aparezcan errores,
existen técnicas, como los bits de paridad, que tienen
como objetivo detectarlos y corregirlos
Componentes combinacionales básicos
103
Circuitos de paridad
El objetivo de añadir un bit de paridad a un número
binario es que la cantidad total de unos sea par o impar,
dependiendo del sistema
Las reglas básicas en las que se basan los circuitos
generadores y comprobadores de paridad es sencilla:
Si se descartan los acarreos, la suma de un número par de
unos siempre es 0
Si se descartan los acarreos, la suma de un número impar
de unos siempre es 1
Por tanto, para determinar la paridad de un número
binario basta con sumar todos los bits del número
Componentes combinacionales básicos
104
52
Circuitos de paridad
La suma de dos bits, descartando el acarreo, se puede
generalizar utilizando una puerta XOR
Cuando el número de unos en las entradas sea par, la salida
estará a nivel bajo
Cuando el número de unos en las entradas sea impar, la salida
estará a nivel alto
Componentes combinacionales básicos
105
Circuitos de paridad
Esta estructura de puertas XOR puede extenderse para
formar circuitos más grandes, como el correspondiente
al símbolo lógico mostrado en este diagrama
El circuito tendrá dos salidas complementarias, una
que indica paridad par y otra que indica paridad impar
Componentes combinacionales básicos
106
53
Generador de paridad
El bloque anterior puede utilizarse como un circuito
generador de paridad para un número de hasta 9 bits
En caso de paridad par, el bit de paridad se toma de la
salida ∑Impar, ya que esta salida es 0 cuando hay un
número par de bits en las entradas y 1 cuando hay un
número impar de bits en las entradas
En caso de paridad impar, el bit de paridad se toma de
la salida ∑Par, ya que esta salida es 0 cuando hay un
número impar de bits en la entradas y 1 cuando hay un
número par de bits en las entradas
Componentes combinacionales básicos
107
Comprobador de paridad
El bloque anterior también puede utilizarse como un
circuito comprobador de paridad para un código de 9
bits, con 8 bits de datos y 1 bit de paridad
En caso de paridad par, el número de unos en la entrada
deberá ser par, por lo que la salida ∑Par debe ser 1 y la
salida ∑Impar debe ser 0, o se habrá producido un error
En caso de paridad impar, el número de unos en la
entrada deberá ser impar, por lo que la salida ∑Impar
debe ser 1 y la salida ∑Par debe ser 0, o se habrá
producido un error
Componentes combinacionales básicos
108
54
Estructura del tema
Introducción
Circuitos aritmético-lógicos
Sumador
▫ Sumador con acarreo en cascada
▫ Sumador con acarreo anticipado
▫ Sumador/Restador
Unidad lógica
Unidad aritmético-lógica
Circuitos comparadores
Igualdad
Desigualdad
Codificación/Decodificación
Circuitos decodificadores
Circuitos codificadores
Selección/Distribución de datos
Circuitos multiplexores
Circuitos demultiplexores
Convertidores de código
Circuitos de paridad
Generador de paridad
Comprobador de paridad
Buses y salidas triestado
Desplazamiento/Rotación
Dispositivos programables
Matriz lógica programable
Matriz lógica genérica
Resumen y bibliografía
Componentes combinacionales básicos
109
Buses
Es difícil fabricar multiplexores con un gran número
de entradas, ya que eso implicaría centralizar un gran
número de conexiones en un único lugar
Un bus es un elemento de transmisión de datos, fácil de
fabricar, que permite solucionar este problema
Para implementar un bus se utiliza un componente
denominado adaptador triestado, cuya salida puede
proporcionar tres posibles valores: un 0, un 1 o un
estado de alta impedancia
Componentes combinacionales básicos
110
55
Adaptadores triestado
Un adaptador triestado tiene una línea de datos (D), una
línea de salida (Y) y una entrada de habilitación (E)
Siempre que la entrada de habilitación esté a 1, la salida será
igual al contenido de la entrada
Si la entrada de habilitación está a 0, la salida será un estado
de alta impedancia
En la práctica, el estado de alta impedancia (Z) puede
considerarse como una desconexión eléctrica del bus
Componentes combinacionales básicos
111
Adaptadores triestado
El funcionamiento de los adaptadores triestado de un
bus es equivalente al de un multiplexor
Cada bus contiene un conjunto
de adaptadores triestado, de forma
que se utiliza uno de ellos para
cada fuente de datos que se
conecta al bus
Las entradas de habilitación de los
adaptadores deben establecerse de
manera que sólo una fuente de
datos pueda estar conectada al bus
en un momento dado
Componentes combinacionales básicos
112
56
Implementación de buses
Utilizando los mismos principios se pueden construir
buses que tengan más fuentes de datos
Por ejemplo, un bus con cuatro
fuentes necesitará dos entradas
de selección para elegir la
fuente que se conecta al bus
Estas entradas de selección
pueden conectarse a un
decodificador, que será el
encargado de manipular las
líneas de habilitación de los
adaptadores triestado
Componentes combinacionales básicos
113
Estructura del tema
Introducción
Circuitos aritmético-lógicos
Sumador
▫ Sumador con acarreo en cascada
▫ Sumador con acarreo anticipado
▫ Sumador/Restador
Unidad lógica
Unidad aritmético-lógica
Circuitos comparadores
Igualdad
Desigualdad
Codificación/Decodificación
Circuitos decodificadores
Circuitos codificadores
Componentes combinacionales básicos
Selección/Distribución de datos
Circuitos multiplexores
Circuitos demultiplexores
Convertidores de código
Circuitos de paridad
Generador de paridad
Comprobador de paridad
Buses y salidas triestado
Desplazamiento/Rotación
Dispositivos programables
Matriz lógica programable
Matriz lógica genérica
Resumen y bibliografía
114
57
Desplazamiento y rotación
Una operación de desplazamiento consiste en desplazar
un número binario
m posiciones de bit a la izquierda o
a la derecha
Como resultado de un desplazamiento, se mueven fuera
Una operación de rotación es similar a una de
m bits del número y se introducen m bits nuevos
desplazamiento, pero en ella no se pierden bits, ya que
los que se mueven fuera son los que se introducen de
nuevo por el otro extremo del número
Componentes combinacionales básicos
115
Modos de desplazamiento
La operación de desplazamiento puede realizarse tanto
en modo lógico como en modo aritmético
Un desplazamiento lógico siempre introduce ceros para
rellenar las posiciones vacías del número desplazado
Un desplazamiento aritmético de una posición
representa una multiplicación por dos si es a la
derecha o una división por dos si es a la izquierda
Si se desplaza a la derecha un número en complemento a 2, se
rellenan las nuevas posiciones con copias del bit de signo
Si se desplaza a la izquierda un número en complemento a 2,
el bit más significativo debe ser un duplicado del bit de signo
Componentes combinacionales básicos
116
58
Circuitos desplazadores y rotadores
La implementación de circuitos desplazadores y
rotadores se realiza utilizando multiplexores
Por ejemplo, un circuito desplazador/rotador universal
necesitaría tres señales de control para manipular los
multiplexores
Una señal S0 indicará si el circuito debe realizar una
operación de desplazamiento o una operación de rotación
Una señal S1 indicará si la operación de desplazamiento
o rotación debe realizarse a la izquierda o a la derecha
Una señal S2 indicará si se realiza la operación de
desplazamiento o rotación, o bien si se deja el número
sin modificar
Componentes combinacionales básicos
117
Circuitos desplazadores y rotadores
Este diagrama muestra un circuito desplazador/rotador
universal que puede realizar un desplazamiento lógico
o rotar una posición a izquierda o derecha
Componentes combinacionales básicos
118
59
Circuitos desplazadores y rotadores
El circuito anterior solo puede realizar una operación
desplazamiento o rotación de una única posición
Esto significa que para desplazar o rotar más de una
posición habrá que pasar el número al circuito varias
veces, lo que ralentizaría el proceso
Para evitar esto se puede utilizar un desplazador o
rotador en bloques, que es capaz de desplazar o rotar
cualquier número de posiciones
Componentes combinacionales básicos
119
Circuitos desplazadores y rotadores
Los desplazadores/rotadores en bloques utilizan varios
niveles de multiplexores
Dado un número de
máximo será de
n bits, el desplazamiento/rotación
n – 1 bits, para lo que serán necesarios
tantos niveles de multiplexores como bits tenga la
representación binaria de
n
Cada nivel de multiplexores desplazará o rotará el
número tantas posiciones como el peso de uno de los
n, por lo que combinándolos todos podremos
obtener todos los valores entre 0 y n – 1
bits de
Componentes combinacionales básicos
120
60
Circuitos desplazadores y rotadores
Por ejemplo, un rotador a la derecha en bloques
para números de ocho bits, como el mostrado en
el diagrama, necesitará tres entradas de selección
S0 rota 1 posición
S1 rota 2 posiciones
S2 rota 4 posiciones
Componentes combinacionales básicos
121
Estructura del tema
Introducción
Circuitos aritmético-lógicos
Sumador
▫ Sumador con acarreo en cascada
▫ Sumador con acarreo anticipado
▫ Sumador/Restador
Unidad lógica
Unidad aritmético-lógica
Circuitos comparadores
Igualdad
Desigualdad
Codificación/Decodificación
Circuitos decodificadores
Circuitos codificadores
Componentes combinacionales básicos
Selección/Distribución de datos
Circuitos multiplexores
Circuitos demultiplexores
Convertidores de código
Circuitos de paridad
Generador de paridad
Comprobador de paridad
Buses y salidas triestado
Desplazamiento/Rotación
Dispositivos programables
Matriz lógica programable
Matriz lógica genérica
Resumen y bibliografía
122
61
Dispositivos lógicos programables
Los dispositivos lógicos programables ( PLD
– Programmable
) se utilizan para reemplazar circuitos
complejos, reduciendo el coste y ahorrando espacio
Logic Device
Un PLD está formado por una matriz de puertas AND
y puertas OR que se puede programar para conseguir
funciones lógicas específicas
Esencialmente, una de estas matrices programables es
una red de conductores distribuidos en filas y columnas
con un fusible en cada punto de intersección
Componentes combinacionales básicos
123
Matriz OR programable
Una matriz OR está formada por una serie de puertas
OR conectadas a una matriz programable
La matriz se programa fundiendo los fusibles para
eliminar determinadas variables de los puntos de salida
Para cada entrada de una puerta OR sólo quedará intacto el
fusible correspondiente a la variable deseada
Una vez fundido, un fusible no se puede volver a conectar
Componentes combinacionales básicos
124
62
Matriz AND programable
Una matriz AND está formada por una serie de puertas
AND conectadas a una matriz programable
La matriz se programa fundiendo los fusibles para
eliminar determinadas variables de los puntos de salida
Para cada entrada de una puerta AND sólo quedará intacto el
fusible correspondiente a la variable deseada
Una vez fundido, un fusible no se puede volver a conectar
Componentes combinacionales básicos
125
Clasificación de los PLD
Existen cuatro tipos de PLD, clasificados en función de
la organización de sus elementos internos
Las memorias programables de sólo lectura (PROM –
Programmable Read-Only Memory) están formadas por un conjunto
fijo de puertas AND conectadas como decodificador y
una matriz programable OR
Debido a la limitación de las puertas AND fijas, las
PROM suelen usarse como memorias direccionables
y no como dispositivos lógicos
Componentes combinacionales básicos
126
63
Clasificación de los PLD
Las matrices lógicas programables PLA (Programmable Logic
) están formadas por una matriz AND programable
y una matriz OR programable
Array
Las matrices lógicas programables PAL (Programmable Array
) están formadas por una matriz AND programable
y una matriz OR fija con una lógica de salida
Este esquema evita los retardos y la complejidad
causada por los fusibles adicionales resultantes de
tener dos matrices programables
Logic
Componentes combinacionales básicos
127
Clasificación de los PLD
Las matrices lógicas genéricas (GAL – Generic Array Logic) se
forman con una matriz AND programable y una matriz
OR fija con una salida lógica programable
Las GAL se diferencian de las PAL en que las
configuraciones de salida son programables
Sin embargo, la principal diferencia es que las GAL se
pueden reprogramar una y otra vez debido a que usan
una tecnología más avanzada en lugar de fusibles
Componentes combinacionales básicos
128
64
Estructura del tema
Introducción
Circuitos aritmético-lógicos
Sumador
▫ Sumador con acarreo en cascada
▫ Sumador con acarreo anticipado
▫ Sumador/Restador
Unidad lógica
Unidad aritmético-lógica
Circuitos comparadores
Igualdad
Desigualdad
Codificación/Decodificación
Circuitos decodificadores
Circuitos codificadores
Selección/Distribución de datos
Circuitos multiplexores
Circuitos demultiplexores
Convertidores de código
Circuitos de paridad
Generador de paridad
Comprobador de paridad
Buses y salidas triestado
Desplazamiento/Rotación
Dispositivos programables
Matriz lógica programable
Matriz lógica genérica
Resumen y bibliografía
Componentes combinacionales básicos
129
Matrices lógicas programables
Las PAL están formadas por una matriz programable
de puertas AND conectadas a una matriz de puertas OR
fijas con una lógica de salida
La matriz AND programable está formada por una
red de conductores, con cada fila conectada a la entrada
de una puerta AND y cada columna conectada a una
variable de entrada o a su complemento
Cada punto de intersección entre una fila y una
columna se denomina celda, siendo éste el elemento
programable de la PAL
Componentes combinacionales básicos
130
65
Programación de una PAL
Una PAL permite implementar cualquier expresión
en forma de suma de productos con un número de
variables definido
Por ejemplo, este diagrama muestra la estructura básica
de una PAL para dos variables de entrada y una salida
Componentes combinacionales básicos
131
Programación de una PAL
El proceso de programación consiste en fundir los
fusibles adecuados para obtener la función deseada
Cuando se requiere la conexión entre una fila y una columna,
el fusible correspondiente queda intacto
Cuando dicha conexión no se requiere, el fusible se abre
Componentes combinacionales básicos
132
66
Símbolos simplificados
Las PAL reales son circuitos muy complejos, por lo que
los fabricantes han adoptado una notación simplificada
para representarlos
Para evitar cargar el diseño con demasiadas líneas de
entrada se utilizan buffers de entrada, que generan tanto
el valor de una variable como su complemento
Para evitar cargar el diseño con demasiadas filas, las
entradas de las puertas AND se representan con una
única línea horizontal
Para representar los fusibles intactos se utiliza una X,
mientras que para los fusibles fundidos no se indica nada
Componentes combinacionales básicos
133
Símbolos simplificados
Este diagrama muestra una expresión lógica en forma
de suma de productos implementada con una PAL
usando la notación simplificada
Componentes combinacionales básicos
134
67
Lógica combinacional de salida
Existen varios tipos de circuitos
combinacionales de salida
Una salida combinacional, usada para
una suma de productos, que puede estar
a nivel alto o bajo
Una entrada/salida combinacional, que
se usa cuando la salida debe
realimentarse a una entrada de la matriz
Una salida de polaridad programable,
que permite seleccionar la función de
salida o su complemento usando una
puerta XOR y un fusible que se elimina
para invertir la salida
Componentes combinacionales básicos
135
Estructura del tema
Introducción
Circuitos aritmético-lógicos
Sumador
▫ Sumador con acarreo en cascada
▫ Sumador con acarreo anticipado
▫ Sumador/Restador
Unidad lógica
Unidad aritmético-lógica
Circuitos comparadores
Igualdad
Desigualdad
Codificación/Decodificación
Circuitos decodificadores
Circuitos codificadores
Componentes combinacionales básicos
Selección/Distribución de datos
Circuitos multiplexores
Circuitos demultiplexores
Convertidores de código
Circuitos de paridad
Generador de paridad
Comprobador de paridad
Buses y salidas triestado
Desplazamiento/Rotación
Dispositivos programables
Matriz lógica programable
Matriz lógica genérica
Resumen y bibliografía
136
68
Matrices lógicas genéricas
Las GAL están formadas por una matriz de puertas
AND reprogramable conectada a una matriz de puertas
OR fija con una lógica de salida programable
La matriz AND reprogramable está formada por una
red de conductores, ordenados en filas y columnas, con
una celda E2CMOS (Electrically Erasable CMOS) en cada punto
de intersección en lugar de un fusible
Cada fila de celdas está conectada a la entrada de una
puerta AND y cada columna a una variable de entrada
o a su complemento
Componentes combinacionales básicos
137
Matrices lógicas genéricas
Una celda E2CMOS activada conecta de forma efectiva
su correspondiente fila y columna, mientras que una
celda desactivada no conecta la fila con la columna
La principal ventaja de utilizar celdas E2CMOS en
lugar de fusibles es que cada una de estas celdas se
puede borrar y reprogramar eléctricamente
Dependiendo de la tecnología, una celda E2CMOS
típica puede permanecer en el estado en el que se la ha
programado durante 20 años o más
Componentes combinacionales básicos
138
69
Programación de una GAL
Una GAL permite implementar cualquier expresión
en forma de suma de productos con un número de
variables definido
Por ejemplo, este diagrama muestra la estructura básica
de una GAL para dos variables de entrada y una salida
Componentes combinacionales básicos
139
Programación de una GAL
El proceso de programación consiste en activar o
desactivar cada celda E2CMOS con el objetivo de
aplicar la combinación adecuada de variables a cada
puerta AND y obtener la suma de productos
Componentes combinacionales básicos
140
70
Programación de una GAL
Las salidas de las puertas AND se introducen en
macroceldas lógicas de salida (OLMC – Output Logic Macrocells)
que contienen puertas OR y lógica programable
Estas OLMC proporcionan mucha más flexibilidad
que la lógica de salida fija de las PAL, convirtiendo
las GAL en un tipo de dispositivo más versátil
Componentes combinacionales básicos
141
Estructura del tema
Introducción
Circuitos aritmético-lógicos
Sumador
▫ Sumador con acarreo en cascada
▫ Sumador con acarreo anticipado
▫ Sumador/Restador
Unidad lógica
Unidad aritmético-lógica
Circuitos comparadores
Igualdad
Desigualdad
Codificación/Decodificación
Circuitos decodificadores
Circuitos codificadores
Componentes combinacionales básicos
Selección/Distribución de datos
Circuitos multiplexores
Circuitos demultiplexores
Convertidores de código
Circuitos de paridad
Generador de paridad
Comprobador de paridad
Buses y salidas triestado
Desplazamiento/Rotación
Dispositivos programables
Matriz lógica programable
Matriz lógica genérica
Resumen y bibliografía
142
71
Resumen
La reutilización de módulos combinacionales
previamente diseñados resulta ventajosa para la
implementación de circuitos digitales
Existe un gran número de estos módulos
combinacionales que se han usado frecuentemente
en los diseños y que se siguen usando, por lo que es
importante conocer su estructura y funcionamiento
Además, el diseño modular nos permite realizar
abstracciones jerárquicas de los componentes del
circuito, haciendo posible la implementación de
circuitos digitales complejos
Componentes combinacionales básicos
143
Bibliografía
Fundamentos de Sistemas Digitales (7ª edición)
Capítulos 6 y 7
Thomas L. Floyd
Prentice Hall, 2000
http://cwx.prenhall.com/bookbind/pubbooks/floyd3/chapter6
http://cwx.prenhall.com/bookbind/pubbooks/floyd3/chapter7
Principios de Diseño Digital
Capítulo 5
Daniel D. Gajski
Prentice Hall, 1997
Componentes combinacionales básicos
144
72
Descargar