3.2.3.2.Componentes Componentes combinacionalescombinacionalesbá ibá ibásicosbásicos
Fundamentos de los ComputadoresGrado en Ingeniería Informática
IntroducciónIntroducción
Los circuitos combinacionales son aquellos cuyo valor de salida d d ú i l i t d l l d t ddepende única y exclusivamente de los valores de entrada
Los circuitos complejos suelen diseñarse reutilizando bi i l b i dcomponentes combinacionales básicos de uso común
Los objeti os de este tema son: Los objetivos de este tema son: Describir algunos de los componentes combinacionales básicos más
frecuentemente usados en el diseño de circuitosfrecuentemente usados en el diseño de circuitos Describir como se implementan estos componentes utilizando puertas
lógicas básicasg
Componentes combinacionales básicos 2
IntroducciónIntroducción
Introducción Circuitos comparadores Codificación/Decodificación Selección/Distribución de datos Buses y salidas triestado Buses y salidas triestado Desplazamiento/Rotación Di iti bl Dispositivos programables Resumen y bibliografía
Componentes combinacionales básicos 3
Circuitos comparadoresCircuitos comparadores
La función básica de un circuito comparador consiste en l it d d d tid d bi icomparar 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 p p q , qcomparados no sean iguales, sea capaz de distinguir cuál de los dos es el mayory
Componentes combinacionales básicos 4
Igualdad entre magnitudesIgualdad entre magnitudes
La puerta XOR puede ser utilizada como comparador básico, ya lid 0 i l t d i l 1 i l t dque su salida es 0 si las entradas son iguales y 1 si las entradas
son diferentes
Componentes combinacionales básicos 5
Igualdad entre magnitudesIgualdad entre magnitudes
Por ejemplo, para comparar números binarios de dos bits serán i d t XORnecesarias dos puertas XOR
Si los números son iguales los dos bits también lo seránSi l ú di ti t l d l bit á di ti t Si los números son distintos, alguno de los bits será distinto
Este esquema es fácilmente extensible para números con mayor tid d d bitcantidad de bits
Componentes combinacionales básicos 6
Desigualdad entre magnitudesDesigualdad entre magnitudes
Además de indicar si los números comparados son iguales, es f t l i it d i di ál d lfrecuente 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:salidas en el circuito: Indicación de si el primer número
es el mayor (A>B) Indicación de si los dos números
son iguales (A=B) Indicación de si el segundo número
es el mayor (A<B)
Componentes combinacionales básicos 7
Desigualdad entre magnitudesDesigualdad entre magnitudes
El procedimiento general para comparar dos números consiste en b d i ld d l i d l i ibuscar 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 Ai = 1 y Bi = 0 entonces A > B Si Ai = 0 y Bi = 1 entonces A < B
Si se examinan todas las posiciones y no se encuentra ninguna desigualdad, entonces los números son igualesg g
Componentes combinacionales básicos 8
Desigualdad entre magnitudesDesigualdad entre magnitudes
También resulta útil tener tres entradas para permitir la ió d d i it dconexión en cascada de circuitos comparadores
Cuando se realice este tipo de conexión en cascada es importante i i i i l lid d ltener 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 comparadorDiseño de un circuito comparador
Un circuito comparador universal que permita comparar dos ú X Y d di ñ t d ód l illnú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 = 1 X > Y G = 0 X ≤ Y
L = 1 X < Y L = 0 X ≥ 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
Diseño de un circuito comparadorDiseño de un circuito comparador
El diseño de un circuito comparador de números de dos bits d li d l ét d d K hpuede 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 comparadorDiseño de un circuito comparador
Dadas estas ecuaciones, el diseño del circuito comparador de ú d d bit d inúmeros de dos bits queda como sigue:
G = A1B1 + A1A0B0 + B1A0B0
L = A1B1 + A1A0B0 + B1A0B0
Componentes combinacionales básicos 12
Diseño de un circuito comparadorDiseño de un circuito comparador
Una implementación en serie de un comparador usaría un ód l d d bit d j d bit d bmódulo de dos bits para comparar cada pareja de bits de ambos
númerosl l d d l i d Hay que tener en cuenta que el resultado de la comparación de
los bits más significativos siempre es prioritaria respecto a los d á bitdemás bits
Componentes combinacionales básicos 13
Diseño de un circuito comparadorDiseño de un circuito comparador
El problema de la conexión en serie es que el retardo del circuito l b l d d d l ió d l ñ l t d lglobal depende de la propagación de la señal por todos los
módulosd l i l l l Esto puede resolverse con una conexión paralela en la que
primero se comparan parejas, luego parejas de parejas y así i tsucesivamente
Componentes combinacionales básicos 14
IntroducciónIntroducción
Introducción Circuitos comparadores Codificación/Decodificación Selección/Distribución de datos Buses y salidas triestado Buses y salidas triestado Desplazamiento/Rotación Di iti bl Dispositivos programables Resumen y bibliografía
Componentes combinacionales básicos 15
Circuitos decodificadoresCircuitos decodificadores
La función básica de un decodificador es detectar la presencia de d t i d bi ió d bit d i d ódiuna 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 2ng , ysalidas para indicar cada una de las posibles combinaciones de valores de las entradas
Componentes combinacionales básicos 16
Activación a nivel altoActivación a nivel alto
Por ejemplo, supongamos que queremos indicar cuándo aparece l bi ió 1001 l t d d i it di dla combinación 1001 en las entradas de un circuito por medio de un nivel alto en la salida
d ili l b i d 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 t d l t d tá i l lttodas las entradas están a nivel alto
ABB
X = ABCD
CD
Componentes combinacionales básicos 17
Entrada de habilitaciónEntrada de habilitación
Los circuitos decodificadores suelen incorporar también una t d d h bilit ió E h bilit f i i tentrada de habilitación E para habilitar o no su funcionamiento
Cuando la entrada de habilitación de un decodificador activo a 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 entradasde la combinación de valores de las entradas
Cuando la entrada de habilitación esté a 1, la salida 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 0y
Componentes combinacionales básicos 18
Decodificadores activos a nivel altoDecodificadores activos a nivel alto
Un decodificador de 1 entrada tendrá 2 salidas, tal y como se t ti iómuestra a continuación
C0 = E·A00 0
C1 = E·A0
Componentes combinacionales básicos 19
Decodificadores activos a nivel altoDecodificadores activos a nivel alto El diseño anterior puede expandirse fácilmente para obtener un
decodificador de 2 entradas y 4 salidasdecodificador de 2 entradas y 4 salidas
C0 = E·A1·A0
C = E A AC1 = E·A1·A0
C2 = E·A1·A02 1 0
C3 = E·A1·A0
Componentes combinacionales básicos 20
Decodificadores activos a nivel altoDecodificadores activos a nivel alto
También resulta posible construir decodificadores mayores, por j l 3 t d 8 lid ti d l blejemplo con 3 entradas y 8 salidas, a partir de los bloques
anterioresl di i l i i i l d d difi d d d l d 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 bajoActivación a nivel bajo
Supongamos ahora que queremos indicar cuándo aparece la bi ió 1001 l t d d i it di dcombinación 1001 en las entradas de un circuito por medio de un
nivel bajo en la salida d ili l b i d 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 t d l t d tá i l lttodas las entradas están a nivel alto
ABB
X = ABCD
CD
Componentes combinacionales básicos 22
Decodificadores activos a nivel bajoDecodificadores activos a nivel bajo
Por ejemplo, un decodificador activo a nivel bajo con 4 líneas de t d it á 16 lid d d difi t d lentrada necesitará 16 salidas para poder decodificar todas las
posibles combinaciones de entrada
Componentes combinacionales básicos 23
Decodificadores activos a nivel bajoDecodificadores activos a nivel bajo
Otro ejemplo es el decodificador BCD a decimal, que tiene 4 lí d t d d ódi BCD 8421líneas de entrada que se corresponden con un código BCD 8421
Este decodificador sólo necesita 10 líneas de salida, di l d i d i l h icorrespondientes a los dígitos decimales, ya que hay que ignorar
6 de las posibles combinaciones de entrada
Componentes combinacionales básicos 24
Decodificadores activos a nivel bajoDecodificadores activos a nivel bajo
Otra aplicación es usar un decodificador con 4 líneas de entrada, di t ódi BCD 7 lí d lidcorrespondientes 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ógicasGeneración de funciones lógicas
Cada salida de un decodificador se corresponde con un término d t té i l dproducto o con un término suma, por lo que podemos usar
decodificadores para implementar funciones lógicas
Ejemplo: dada una tabla de verdad obtener una 0) 0 0 0 0
A B C Fde verdad, obtener una expresión como suma de productos o como
0) 0 0 01) 0 0 12) 0 1 03) 0 1 1
0101productos o como
producto de sumas3) 0 1 14) 1 0 05) 1 0 16) 1 1 0
10106) 1 1 0
7) 1 1 101
F(A,B,C) = ∏(0,2,4,6)F(A,B,C) = ∑(1,3,5,7)
Componentes combinacionales básicos 26
F(A,B,C) ∏(0,2,4,6)
Generación de funciones lógicasGeneración de funciones lógicas
Para generar una función expresada como suma de productos d difi d ti i l lt á i tcon 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ógicasGeneración de funciones lógicas
Para generar una función expresada como suma de productos d difi d ti i l b j á i tcon 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
Generación de funciones lógicasGeneración de funciones lógicas
Para generar una función expresada como producto de sumas d difi d ti i l lt á i tcon 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ógicasGeneración de funciones lógicas
Para generar una función expresada como producto de sumas d difi d ti i l b j á i tcon 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
( ) ∏( )
Circuitos codificadoresCircuitos codificadores
Un circuito codificador realiza, en esencia, la función contraria a i it d difi dun 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 codificador tendrá n salidas y 2n
entradas que se corresponderán a cada una de las posibles q p pcombinaciones de salida
Componentes combinacionales básicos 31
Codificadores activos a nivel altoCodificadores activos a nivel alto
Un codificador activo a nivel alto generará una combinación de lid i l t d di t tá i l ltsalida si la entrada correspondiente está a nivel alto
P j l Por ejemplo, un codificador de decimal a BCD 8421 tendrá 10BCD 8421 tendrá 10 líneas de entrada, que se corresponden con loscorresponden con los dígitos decimales, y 4 líneas de salida paralíneas de salida para codificarlas
Componentes combinacionales básicos 32
Codificadores activos a nivel altoCodificadores activos a nivel alto
Cada una de las líneas de salida se corresponde a uno de los bits d l ódi BCD 8421del código BCD 8421
A0 = 1 + 3 + 5 + 7 + 9A1 = 2 + 3 + 6 + 7A2 = 4 + 5 + 6 + 7A2 4 + 5 + 6 + 7A3 = 8 + 9
Componentes combinacionales básicos 33
Codificadores activos a nivel bajoCodificadores activos a nivel bajo
Un codificador también puede ser activo a nivel bajo, es decir, á bi ió d lid d l t dgenerará una combinación de salida cuando la entrada
correspondiente esté a nivel bajoj l difi d d l bi i d l d 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 lid difi l bi isalida para codificarlos en binario
Componentes combinacionales básicos 34
Codificadores con prioridadCodificadores con prioridad
Si se activa más de una línea de entrada en un circuito difi d l lt d d lid á l dcodificador, 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 , Q , q gde las entradas está activada
Componentes combinacionales básicos 35
Codificadores con prioridadCodificadores con prioridad
Un codificador con prioridad activo a nivel alto con 2 entradas t d á 1 lí d lid t l t ti iótendrá 1 línea de salida, tal y como se muestra a continuación
A0 = D1
C l i D DCualquiera = D0+D1
Componentes combinacionales básicos 36
Codificadores con prioridadCodificadores con prioridad
El diseño anterior puede expandirse fácilmente para obtener un d difi d d 4 t d 2 liddecodificador de 4 entradas y 2 salidas
A = D ·D +DA0 = D1 D2+D3
A1 = D2+D3
C l i D +D +D +DCualquiera = D0+D1+D2+D3
Componentes combinacionales básicos 37
IntroducciónIntroducción
Introducción Circuitos comparadores Codificación/Decodificación Selección/Distribución de datos Buses y salidas triestado Buses y salidas triestado Desplazamiento/Rotación Di iti bl Dispositivos programables Resumen y bibliografía
Componentes combinacionales básicos 38
Circuitos multiplexores o selectoresCircuitos multiplexores o selectores
Un multiplexor o selector es un circuito que permite dirigir la i f ió di it l d t d i lí d t d h iinformació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 p p ysalida, además de n entradas de selección que permiten decidir qué entrada se conecta a la salidaq
Componentes combinacionales básicos 39
Diseño de circuitos multiplexoresDiseño de circuitos multiplexores
Este diagrama muestra el diseño de un circuito multiplexor con 2 t d d d t 1 t d d l ió it l ientradas de datos y 1 entrada de selección que permite elegir
entre ellas
Y = S·D0 +S·D1
Componentes combinacionales básicos 40
Diseño de circuitos multiplexoresDiseño de circuitos multiplexores
Este otro diagrama muestra el diseño de un multiplexor con 4 t d d d t l á i 2 t d dentradas 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 multiplexoresDiseño de circuitos multiplexores
Un multiplexor con 8 entradas de datos y 3 de selección puede t i d i lti lconstruirse usando varios multiplexores menores
Un primer nivel de multiplexores permitirá elegir entre cada dos d l i i i l l i l j ientradas, el siguiente nivel elegirá entre las parejas anteriores y
así sucesivamente
Componentes combinacionales básicos 42
Diseño de circuitos multiplexoresDiseño de circuitos multiplexores
Un multiplexor de 8 entradas de datos también puede i l t d d difi d d 3 t dimplementarse usando un decodificador de 3 entradas para controlar las señales de selección
i l d l i l Esta técnica sólo puede usarse para multiplexores pequeños, pues, en otro caso, el coste del decodificador y la puerta OR de
lid í d i d dsalida sería demasiado grande
Componentes combinacionales básicos 43
Generación de funciones lógicasGeneración de funciones lógicas
Una aplicación de los multiplexores es la generación de f i ló ifunciones lógicas El número de entradas de selección equivale al número de variables de la
funciónfunció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 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 1fijan a 1
El resto de las entradas de datos se fijan a 0
Componentes combinacionales básicos 44
Generación de funciones lógicasGeneración de funciones lógicas
Dada una función de 3 variables, podemos representarla tili d lti l 3 t d d l ióutilizando un multiplexor con 3 entradas de selección
F(A B C) = ∑(1 2 4 5)F(A,B,C) ∑(1,2,4,5)
F(A,B,C) = ∏(0,3,6,7)
0) 0 0 0 0A B C F
MUX1) 0 0 12) 0 1 03) 0 1 1
1103) 0
4) 1 0 05) 1 0 16) 1 1 0
01106) 1 1 0
7) 1 1 100
Componentes combinacionales básicos 45
Generación de funciones lógicasGeneración de funciones lógicas
Una función de 3 variables también se puede realizar usando un lti l ól 2 t d d l ió d dmultiplexor con sólo 2 entradas de selección, usando un mapa de
Karnaugh como ayuda
F(A,B,C) = ∑(1,2,4,5)
MUX
F(A,B,C) = ∏(0,3,6,7)
MUXAB
C 0 100 10 D0
1011110 11
000
D1D3D210 11 D2
Componentes combinacionales básicos 46
Generación de funciones lógicasGeneración de funciones lógicas
También podemos realizar una función de 4 variables con un lti l d 3 t d d l ió i d j d lmultiplexor 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)ABC
D 0 1000 10 D0
MUX1001011
000
D1D3
010 11 D2110 00 D6
0111101
0
011
D7D5
Componentes combinacionales básicos 47
100 10 D4
Diseño de circuitos codificadoresDiseño de circuitos codificadores
Los multiplexores o selectores también pueden usarse para i l t i it difi d i id d ti dimplementar un circuito codificador con prioridad a partir de circuitos codificadores simples
Un codificador diseñado así tendrá varios niveles formadostendrá varios niveles formados por codificadores más sencillos que agrupan las líneas de q g pentrada
Las salidas CUALQUIERA de Las salidas CUALQUIERA de los codificadores se propagarán hasta que se obtenga el código q g gde salida
Componentes combinacionales básicos 48
Diseño de circuitos codificadoresDiseño de circuitos codificadores
La salida CUALQUIERA de los codificadores de un mismo i l tili á t d d l ió i itnivel se utilizará como entrada de selección para circuitos
multiplexores que generen los bits menos significativos de cada parte del códigoparte del código
Componentes combinacionales básicos 49
Circuitos demultiplexores o distribuidoresCircuitos demultiplexores o distribuidores
Un demultiplexor realiza la función contraria a la de un lti l d i di t ib i l d t i t dmultiplexor, 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 2n líneas de p p ysalida, además de n entradas de selección que permiten decidir qué salida se conecta a la entradaq
Componentes combinacionales básicos 50
Diseño de circuitos demultiplexoresDiseño de circuitos demultiplexores
Este diagrama muestra el diseño de un circuito demultiplexor 4 lid d d t 2 t d d l ió itcon 4 salidas de datos y 2 entradas de selección que permiten
elegir entre ellas
0 0S0 S1 D0 D1 D2 D3
E X X X0 00 1
EX
XE
XX
XX
1 01 1
XX
XX
EX
XE
Componentes combinacionales básicos 51
Diseño de circuitos demultiplexoresDiseño de circuitos demultiplexores
La implementación de un demultiplexor puede realizarse usando i it d difi d t d d h bilit ió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ódigoDEMUX
correspondiente al código de entrada estará a 1
Componentes combinacionales básicos 52
IntroducciónIntroducción
Introducción Circuitos comparadores Codificación/Decodificación Selección/Distribución de datos Buses y salidas triestado Buses y salidas triestado Desplazamiento/Rotación Di iti bl Dispositivos programables Resumen y bibliografía
Componentes combinacionales básicos 53
BusesBuses
Es difícil fabricar multiplexores con un gran número de t d i li í t li ú dentradas, 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 p , y p p p pvalores: un 0, un 1 o un estado de alta impedancia
Componentes combinacionales básicos 54
Adaptadores triestadoAdaptadores triestado
Un adaptador triestado tiene una línea de datos (D), una línea de lid (Y) t d d h bilit ió (E)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 entradacontenido de la entrada Si la entrada de habilitación está a 0, la salida será un estado de alta
impedanciap
En la práctica, el estado de alta impedancia (Z) puede considerarse como una desconexión eléctrica del busconsiderarse como una desconexión eléctrica del bus
Componentes combinacionales básicos 55
Adaptadores triestadoAdaptadores triestado
El funcionamiento de los adaptadores triestado de un bus es i l t l d lti lequivalente al de un multiplexor
Cada bus contiene un conjunto de jadaptadores triestado, de forma que se utiliza uno de ellos para cada fuente de pdatos que se conecta al bus
Las entradas de habilitación de los adaptadores deben establecerse de manera que sólo una fuente de datos qpueda estar conectada al bus en un momento dado
Componentes combinacionales básicos 56
Implementación de busesImplementación de buses
Utilizando los mismos principios se pueden construir buses que t á f t d d ttengan más fuentes de datos
Por ejemplo, un bus con cuatro j p ,fuentes necesitará dos entradas de selección para elegir la fuente que se p g qconecta al bus
Estas entradas de selección pueden pconectarse a un decodificador, que será el encargado de manipular las g plíneas de habilitación de los adaptadores triestado
Componentes combinacionales básicos 57
IntroducciónIntroducción
Introducción Circuitos comparadores Codificación/Decodificación Selección/Distribución de datos Buses y salidas triestado Buses y salidas triestado Desplazamiento/Rotación Di iti bl Dispositivos programables Resumen y bibliografía
Componentes combinacionales básicos 58
Desplazamiento y rotaciónDesplazamiento y rotación
Una operación de desplazamiento consiste en desplazar un ú bi i i i d bit l i i d l d hnú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, 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 q pnúmero
Componentes combinacionales básicos 59
Modos de desplazamientoModos de desplazamiento
La operación de desplazamiento puede realizarse tanto en modo ló i d it étilógico como en modo aritmético
Un desplazamiento lógico siempre introduce ceros para rellenar 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 izquierda o una división por dos si es a la derecha Si se desplaza a la derecha un número en complemento a 2, se rellenan las
i i i d l bit d inuevas 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 signosignificativo debe ser un duplicado del bit de signo
Componentes combinacionales básicos 60
Circuitos desplazadores y rotadoresCircuitos desplazadores y rotadores
La implementación de circuitos desplazadores y rotadores se li tili d lti lrealiza utilizando multiplexores
Por ejemplo un circuito desplazador/rotador universal Por ejemplo, un circuito desplazador/rotador universal necesitaría tres señales de control para manipular los multiplexoresmultiplexores Una señal S0 indicará si el circuito debe realizar una operación de
desplazamiento o una operación de rotaciónp p 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 61
Circuitos desplazadores y rotadoresCircuitos desplazadores y rotadores Este diagrama muestra un circuito desplazador/rotador universal
que puede realizar un desplazamiento lógico o rotar una posiciónque puede realizar un desplazamiento lógico o rotar una posición a izquierda o derecha
Componentes combinacionales básicos 62
Circuitos desplazadores y rotadoresCircuitos desplazadores y rotadores
El circuito anterior solo puede realizar una operación d l i t t ió d ú i i ió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 por el 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 q , q p p qposiciones
Componentes combinacionales básicos 63
Circuitos desplazadores y rotadoresCircuitos desplazadores y rotadores
Los desplazadores/rotadores en bloques utilizan varios niveles de lti lmultiplexores
Dado un número de n bits el desplazamiento/rotación máximo 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 nmultiplexores como bits tenga la representación binaria de n
Cada nivel de multiplexores desplazará o rotará el número tantas 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 py n – 1
Componentes combinacionales básicos 64
Circuitos desplazadores y rotadoresCircuitos desplazadores y rotadores
Por ejemplo, un rotador a la derecha en bloques para números de h bit l t d l di it á tocho bits, como el mostrado en el diagrama, necesitará tres
entradas de selecciónS t 1 i ió S0 rota 1 posición
S1 rota 2 posiciones S rota 4 posiciones S2 rota 4 posiciones
Componentes combinacionales básicos 65
IntroducciónIntroducción
Introducción Circuitos comparadores Codificación/Decodificación Selección/Distribución de datos Buses y salidas triestado Buses y salidas triestado Desplazamiento/Rotación Di iti bl Dispositivos programables Resumen y bibliografía
Componentes combinacionales básicos 66
Dispositivos lógicos programables (PLD)Dispositivos lógicos programables (PLD)
Los dispositivos lógicos programables (PLD – Programmable Logic ) tili l i it l jDevice) se utilizan para reemplazar circuitos complejos,
reduciendo el coste y ahorrando espacio
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 , p gconductores distribuidos en filas y columnas con un fusible en cada punto de intersecciónp
Componentes combinacionales básicos 67
Matriz OR programableMatriz OR programable
Una matriz OR está formada por una serie de puertas OR t d t i blconectadas a una matriz programable
La matriz se programa fundiendo los fusibles para eliminar d i d i bl d l d liddeterminadas variables de los puntos de salida Para cada entrada de una puerta OR sólo quedará intacto el fusible
di t l i bl d dcorrespondiente a la variable deseada Una vez fundido, un fusible no se puede volver a conectar
Componentes combinacionales básicos 68
Matriz AND programableMatriz AND programable
Una matriz AND está formada por una serie de puertas AND t d t i blconectadas a una matriz programable
La matriz se programa fundiendo los fusibles para eliminar d i d i bl d l d liddeterminadas variables de los puntos de salida Para cada entrada de una puerta AND sólo quedará intacto el fusible
di t l i bl d dcorrespondiente a la variable deseada Una vez fundido, un fusible no se puede volver a conectar
Componentes combinacionales básicos 69
Clasificación de los PLDClasificación de los PLD
Existen cuatro tipos de PLD, clasificados en función de la i ió d l t i torganización de sus elementos internos:
Memorias programables de sólo lectura (PROM – Programmable Read-Only Memory)Memorias programables de sólo lectura (PROM Programmable Read-Only Memory)
Matrices lógicas programables PLA (PLA - Programmable Logic Array)
Matrices lógicas programables PAL (PAL - Programmable Array Logic)
Matrices lógicas genéricas (GAL – Generic Array Logic)
Componentes combinacionales básicos 70
PROMPROM
Las memorias programables de sólo lectura (PROM – Programmable ) tá f d j t fij d tRead-Only Memory) están formadas por un conjunto fijo de puertas
AND conectadas como decodificador y una matriz programable OROR
Debido a la limitación de las puertas AND fijas, las PROM l i di i blsuelen usarse como memorias direccionables y no como
dispositivos lógicos
Componentes combinacionales básicos 71
PLAPLA
Las matrices lógicas programables PLA (Programmable Logic Array) tá f d t i AND bl t iestán formadas por una matriz AND programable y una matriz
OR programable
Componentes combinacionales básicos 72
PALPAL
Las matrices lógicas programables PAL (Programmable Array Logic) tá f d t i AND bl t iestán formadas por una matriz AND programable y una matriz
OR fija con una lógica de salidai l d l l jid d d l Este esquema evita los retardos y la complejidad causada por los
fusibles adicionales resultantes de tener dos matrices blprogramables
Componentes combinacionales básicos 73
GALGAL
Las matrices lógicas genéricas (GAL – Generic Array Logic) se forman t i AND bl t i OR fijcon una matriz AND programable y una matriz OR fija con una
lógica de salida programabledif i d l Se diferencian de las PAL en que:
Las configuraciones de salida son programables 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 74
Matrices lógicas programables (PAL)Matrices lógicas programables (PAL)
Las PAL están formadas por una matriz programable de puertas AND t d t i d t OR fij ló iAND 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 puertaconductores, con cada fila conectada a la entrada de una puerta AND y cada columna conectada a una variable de entrada o a su complementocomplemento
Cada punto de intersección entre una fila y una columna se p ydenomina celda, siendo éste el elemento programable de la PAL
Componentes combinacionales básicos 75
Programación de una PALProgramación de una PAL
Una PAL permite implementar cualquier expresión en forma d d d t ú d i bl d fi idde suma de productos con un número de variables definido
Por ejemplo, este diagrama muestra la estructura básica de una d i bl d d lidPAL para dos variables de entrada y una salida
Componentes combinacionales básicos 76
Programación de una PALProgramación de una PAL
El proceso de programación consiste en fundir los fusibles d d bt l f ió d dadecuados para obtener la función deseada Cuando se requiere la conexión entre una fila y una columna, el fusible
correspondiente queda intactocorrespondiente queda intacto Cuando dicha conexión no se requiere, el fusible se abre
Componentes combinacionales básicos 77
PAL: Símbolos simplificadosPAL: Símbolos simplificados
Las PAL reales son circuitos muy complejos, por lo que los f b i t h d t d t ió i lifi dfabricantes han adoptado una notación simplificada para representarlos
i l di d i d l d d Para evitar cargar el diseño con demasiadas líneas de entrada se utilizan buffers de entrada, que generan tanto el valor de una
i bl l tvariable 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 78
PAL: Símbolos simplificadosPAL: Símbolos simplificados
Este diagrama muestra una expresión lógica en forma de suma d d t i l t d PAL d l t ióde productos implementada con una PAL usando la notación simplificada
Componentes combinacionales básicos 79
PAL: Lógica PAL: Lógica combinacionalcombinacional de salidade salida
Existen varios tipos de circuitos bi i l d lidcombinacionales de salida:
Una salida combinacional, usada para una suma de productos que puede estar asuma de productos, que puede estar a nivel alto o bajo
Una entrada/salida combinacional, que se , qusa 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 XORsu complemento usando una puerta XOR y un fusible que se elimina para invertir la salida
Componentes combinacionales básicos 80
Matrices lógicas genéricas (GAL)Matrices lógicas genéricas (GAL)
Las GAL están formadas por una matriz de puertas AND bl t d t i d t OR fijreprogramable 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 celdaconductores, ordenados en filas y columnas, con una celda E2CMOS (Electrically Erasable CMOS) en cada punto de intersección en lugar de un fusibleen lugar de un fusible
Cada fila de celdas está conectada a la entrada de una puerta pAND y cada columna a una variable de entrada o a su complementop
Componentes combinacionales básicos 81
Matrices lógicas genéricas (GAL)Matrices lógicas genéricas (GAL)
Una celda E2CMOS activada conecta de forma efectiva su di t fil l i t ldcorrespondiente 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 p g , p ppermanecer en el estado en el que se la ha programado durante 20 años o más
Componentes combinacionales básicos 82
Programación de una GALProgramación de una GAL
Una GAL permite implementar cualquier expresión en forma d d d t ú d i bl d fi idde suma de productos con un número de variables definido
Por ejemplo, este diagrama muestra la estructura básica de una d i bl d d lidGAL para dos variables de entrada y una salida
Componentes combinacionales básicos 83
Programación de una GALProgramación de una GAL
El proceso de programación consiste en activar o desactivar cada ld E2CMOS l bj ti d li l bi iócelda E2CMOS con el objetivo de aplicar la combinación
adecuada de variables a cada puerta AND y obtener la suma de productosproductos
Componentes combinacionales básicos 84
Programación de una GALProgramación de una GAL
Las salidas de las puertas AND se introducen en macroceldas ló i d lid ( ) tilógicas de salida (OLMC – Output Logic Macrocells) que contienen puertas OR y lógica programable
i h fl ibilid d l Estas OLMC proporcionan mucha más flexibilidad que la lógica de salida fija de las PAL, convirtiendo las GAL en un ti d di iti á átiltipo de dispositivo más versátil
Componentes combinacionales básicos 85
IntroducciónIntroducción
Introducción Circuitos comparadores Codificación/Decodificación Selección/Distribución de datos Buses y salidas triestado Buses y salidas triestado Desplazamiento/Rotación Di iti bl Dispositivos programables Resumen y bibliografía
Componentes combinacionales básicos 86
ResumenResumen
La reutilización de módulos combinacionales previamente di ñ d lt t j l i l t ió d i itdiseñados resulta ventajosa para la implementación de circuitos digitales
i d d l bi i l Existe un gran número de estos módulos combinacionales que se han usado frecuentemente en los diseños y que se siguen usando,
l i t t t t f i i tpor 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 87
BibliografíaBibliografíaPrincipios de Diseño Digital
Capítulo 5Capítulo 5Daniel D. GajskiPrentice Hall, 1997,
Fundamentos de Sistemas Digitales (7ª edición)Capítulos 6 y 7Thomas L. FloydPrentice Hall 2000Prentice Hall, 2000
Componentes combinacionales básicos 88
Top Related