14. Componentes combinacionales básicos

Anuncio
14. Componentes combinacionales
básicos
Oliverio J. Santana Jaria
Sistemas Digitales
Ingeniería Técnica en Informática de Sistemas
Curso 2006 – 2007
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 algunos de 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
Introducción
Introducción
Circuitos comparadores
Codificación/Decodificación
Selección/Distribución de datos
Convertidores de código
Circuitos de paridad
Buses y salidas triestado
Desplazamiento/Rotación
Dispositivos programables
Resumen y bibliografía
Componentes combinacionales básicos
3
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
4
2
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
5
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
6
3
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
7
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
Si A = 0 y B = 1 entonces A < B
i
i
i
i
Si se examinan todas las posiciones y no se encuentra
ninguna desigualdad, entonces los números son iguales
Componentes combinacionales básicos
8
4
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
9
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
10
5
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
11
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
12
6
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
13
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
14
7
Introducción
Introducción
Circuitos comparadores
Codificación/Decodificación
Selección/Distribución de datos
Convertidores de código
Circuitos de paridad
Buses y salidas triestado
Desplazamiento/Rotación
Dispositivos programables
Resumen y bibliografía
Componentes combinacionales básicos
15
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
16
8
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
17
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
18
9
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
19
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
20
10
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
21
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
22
11
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
23
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
24
12
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
25
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)
26
13
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
27
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
28
14
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
29
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
30
15
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
31
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
32
16
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
33
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
34
17
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
35
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
36
18
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
37
Introducción
Introducción
Circuitos comparadores
Codificación/Decodificación
Selección/Distribución de datos
Convertidores de código
Circuitos de paridad
Buses y salidas triestado
Desplazamiento/Rotación
Dispositivos programables
Resumen y bibliografía
Componentes combinacionales básicos
38
19
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
Un multiplexor posee 2n 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
Componentes combinacionales básicos
39
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
40
20
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
41
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
42
21
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
43
Generación de funciones lógicas
Una aplicación de los multiplexores es la generación de
funciones lógicas
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 las líneas de la tabla con valor de
salida 1 se fijan a 1
El resto de las entradas de datos se fijan a 0
Componentes combinacionales básicos
44
22
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)
F(A,B,C) = ∏(0,3,6,7)
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
MUX
Componentes combinacionales básicos
45
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)
F(A,B,C) = ∏(0,3,6,7)
C
0
1
00 0
01 1
1
0
0
1
AB
11 0
10 1
MUX
D0
D1
D3
D2
Componentes combinacionales básicos
46
23
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)
F(A,B,C,D) = ∏(0,3,6,7,8,12,13,14,15)
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
MUX
D3
D2
D6
D7
D5
D4
Componentes combinacionales básicos
47
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
48
24
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
49
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
50
25
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
51
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
52
26
Introducción
Introducción
Circuitos comparadores
Codificación/Decodificación
Selección/Distribución de datos
Convertidores de código
Circuitos de paridad
Buses y salidas triestado
Desplazamiento/Rotación
Dispositivos programables
Resumen y bibliografía
Componentes combinacionales básicos
53
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
54
27
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
55
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
56
28
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
Componentes combinacionales básicos
1
0
1
+
+
+
1
1
0
57
Introducción
Introducción
Circuitos comparadores
Codificación/Decodificación
Selección/Distribución de datos
Convertidores de código
Circuitos de paridad
Buses y salidas triestado
Desplazamiento/Rotación
Dispositivos programables
Resumen y bibliografía
Componentes combinacionales básicos
58
29
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
59
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
60
30
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
61
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
62
31
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
63
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
64
32
Introducción
Introducción
Circuitos comparadores
Codificación/Decodificación
Selección/Distribución de datos
Convertidores de código
Circuitos de paridad
Buses y salidas triestado
Desplazamiento/Rotación
Dispositivos programables
Resumen y bibliografía
Componentes combinacionales básicos
65
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
66
33
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
67
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
68
34
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
69
Introducción
Introducción
Circuitos comparadores
Codificación/Decodificación
Selección/Distribución de datos
Convertidores de código
Circuitos de paridad
Buses y salidas triestado
Desplazamiento/Rotación
Dispositivos programables
Resumen y bibliografía
Componentes combinacionales básicos
70
35
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
m bits del número y se introducen m bits nuevos
Una operación de rotación es similar a una de
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
71
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
72
36
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
73
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
74
37
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
75
Circuitos desplazadores y rotadores
Los desplazadores/rotadores en bloques utilizan varios
niveles de multiplexores
Dado un número de n bits, el desplazamiento/rotación
máximo será de 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
bits de n, por lo que combinándolos todos podremos
obtener todos los valores entre 0 y n – 1
Componentes combinacionales básicos
76
38
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
77
Introducción
Introducción
Circuitos comparadores
Codificación/Decodificación
Selección/Distribución de datos
Convertidores de código
Circuitos de paridad
Buses y salidas triestado
Desplazamiento/Rotación
Dispositivos programables
Resumen y bibliografía
Componentes combinacionales básicos
78
39
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
79
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
80
40
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
81
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
82
41
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
83
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
84
42
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
85
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
86
43
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
87
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
88
44
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
89
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
90
45
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
91
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
92
46
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
93
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
94
47
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
95
Introducción
Introducción
Circuitos comparadores
Codificación/Decodificación
Selección/Distribución de datos
Convertidores de código
Circuitos de paridad
Buses y salidas triestado
Desplazamiento/Rotación
Dispositivos programables
Resumen y bibliografía
Componentes combinacionales básicos
96
48
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
97
Bibliografía
Fundamentos de Sistemas Digitales (7ª edición)
Capítulos 6 y 7
Thomas L. Floyd
Prentice Hall, 2000
Principios de Diseño Digital
Capítulo 5
Daniel D. Gajski
Prentice Hall, 1997
Componentes combinacionales básicos
98
49
Descargar