Desplazadores de barril

DESPLAZADORES DE BARRIL Fulvio Andres Pedraza Carmona Ingeniería electrónica, Unidad Central Del Valle Del Cauca Tuluá,

Views 183 Downloads 2 File size 355KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

DESPLAZADORES DE BARRIL Fulvio Andres Pedraza Carmona Ingeniería electrónica, Unidad Central Del Valle Del Cauca Tuluá, Colombia [email protected]

Abstract - This article will address the main ideas of the text: Desing alternatives for barrel shifters, from Lehigh University; which is intended to delve into the barrel shifters: digital circuit commonly used as an integrated digital signal processor and generalpurpose processor to manipulate data. In addition, it presents different types of designs which it compares, while examining techniques to detect overflow results and zero indicators in parallel with the change or rotation operation. Resumen - En el presente artículo se abordarán las ideas principales del texto: Desing alternatives for barrel shifters, de Lehigh University; el cual tiene como propósito ahondar sobre los desplazadores de barril: circuito digital utilizado comúnmente como procesador de señal digital integrado y procesador de propósito general para manipular datos. Además, presenta diferentes tipos de diseño los cuales compara, a la vez que examina técnicas para detectar resultados de desbordamiento e indicadores de cero en paralelo con la operación de cambio o rotación.

1. INTRODUCCIÓN Para comenzar, se tiene en cuenta que los desplazadores de barril son circuitos capaces de cambiar o rotar datos en un solo ciclo y se encuentran comúnmente en procesadores de señal digital o de propósito general. Sobre ellos existen varias patentes y artículos de investigación que incluyen diseños e implementaciones. También, examina alternativas de diseño para desplazadores de barril, los cuales están optimizados para compartir hardware y realizan las siguientes operaciones: desplazamiento lógico a la derecha, desplazamiento aritmético

hacia la derecha, rotar a la derecha, desplazador lógico a la izquierda, desplazamiento aritmético a la izquierda y rotar a la izquierda. 2. OPERACIONES ROTACIÓN

DE

CAMBIO

Y

En este artículo, definen que A será el operando de entrada, B será la cantidad de desplazamiento /rotación y Y será el resultado desplazado/ girado. De esta manera, A será un valor de n bits, donde n es una potencia entera de dos. Por lo tanto, B es un entero log2 (n) -bit que representa valores de 0 a n 1. Los desplazadores de barril presentados en este documento realizan las siguientes seis operaciones: desplazamiento lógico a la derecha, desplazamiento aritmético a la derecha, giro a la derecha, desplazamiento lógico a la izquierda, desplazar la aritmética izquierda y girar a la izquierda. La Tabla 1 da un ejemplo para cada una de estas operaciones. En esta tabla, el vector de bits para A se denota como A= a 7 a 6 a5 a4 a3 a2 a1 a0 y la cantidad de desplazamiento / rotación, B, es de 3 bits. Como se ilustra en esta tabla:

Tabla 1

3. DISEÑOS DE DESPLAZADOR DE BARRIL En esta sección, se discuten los diseños de desplazador de barril. Los diseños básicos de este circuito aritmético/lógico se describen en las siguientes secciones: Desplazamiento de barril basados en multiplexores de inversión de datos, desplazador basado en máscara de inversión de datos, desplazador de barril basado en mascara de complemento a dos y los desplazadores de barril de complemento a uno. En la siguiente discusión, el término multiplexor se refiere a un multiplexor 2 a 1 de 1 bit, a menos que se indique lo contrario. La operación realizada por los desplazadores de barril se controla mediante un código de operación de 3 bits, que consta de los bits restantes, rotar y aritmética, como se resume en la Tabla 2. Las señales de control adicionales, s.r.a y s.l.a, se establecen en uno cuando se realizan operaciones aritméticas de desplazamiento a la derecha y operaciones aritméticas a la izquierda, respectivamente.

Figura 1. Diagrama de bloque de 8 bits (s.l.a)

Para optimizar el diseño, cada multiplexor que tiene '0' para una de sus entradas puede ser reemplazado por una compuerta AND de dos entradas con el bit de datos y b k como entrada. Modificando las conexiones a los multiplexores más significativos, se puede diseñar una unidad que realice rotaciones a la derecha.

Figura 2. Diagrama de bloques de un desplazador a la derecha de 8 bits. Tabla 2 3.1. Cambiadores y rotadores: Un desplazador de barril logarítmico de n bits utiliza etapas log2 (n) [1, 2]. Cada cantidad de bit, controla una diferente etapa de desplazamiento B. Los datos de entrada en la etapa controlada por b k son desplazados por 2k bits si b k = 1; de lo contrario no es desplazada.

Todos los bits de entrada se enrutan a la salida gracias al desplazador de barril, por lo que no se necesitan líneas de interconexión en “0”. El desplazamiento de barril a la derecha lógica se puede extender para realizar también operaciones aritméticas de desplazamiento a la derecha y girar operaciones a la derecha agregando multiplexores adicionales.

cabe resaltar que una fila de n multiplexores invierte el orden de los datos solo cuando left = 1 para producir ^ A. Entonces, si un desplazador / rotador a la derecha de n bits, realiza la operación de desplazamiento o rotación a la derecha en ^ A producirá Y^ . Finalmente, una fila de n multiplexores invierte los datos cuando left = 1 para producir el resultado final Y. Figura 3. Desplazador / rotador derecho de 8 bits con tres etapas de cambios / rotaciones de 4 bits, 2 bits y 1 bit. Un solo multiplexor selecciona entre '0' para un desplazamiento lógico a la derecha y 1 para un desplazamiento aritmético a la derecha. Un desplazador derecho se puede extender para realizar también operaciones de desplazamiento a la izquierda agregando una fila de n multiplexores antes y después de un desplazamiento a la derecha. Cuando se realiza una operación de desplazamiento a la izquierda, estos multiplexores invierten los datos que entran y salen del desplazador de barril a la derecha.

Figura 5. Desplazador de barril de inversión de datos basada en Mux, también detecta desbordamientos y resultados de cero. Un método para detectar un desbordamiento en paralelo con la operación de desplazamiento es que en cada etapa, los bits se desplazan fuera de la compuerta XOR con el bit de signo; cuando no hay bits desplazados hacia afuera, el bit/signo pasará por la compuerta XOR con el valor correspondiente de a 0, ya que los datos se invierten.

Figura 4. Desplazador lógico de inversión de datos de 8 bits. 3.2. Desplazadores de barril de inversión de datos basados en Multiplexores: Teniendo en cuenta las diferentes combinaciones que maneja un desplazador de barril (lógica/aritmética - derecha/izquierda),

Figura 6. Las salidas de las compuertas XOR se combinan para producir el indicador de desbordamiento final que es '1', cuando termina, se produce el desbordamiento. Un multiplexor adicional establece ^y 0 en a^ 0cuando s.l.a = 1. El indicador de cero, que es '1' cuando Y es cero, se obtiene del NOR lógico de todos los bits en Y. Una desventaja de este desplazador de barril de inversión de datos basada en Mux es que el cero como indicador no se calcula hasta que se produce ^y .

Figura 7. Desplazador de barril de inversión de datos basada en una máscara. En este tipo de desplazador de barril, se calculan varias máscaras en paralelo con la inversión y rotación de datos. La primera máscara que se computa es la máscara F, la cual contiene a B, inicia en ceros y finaliza en n – B. Por ejemplo, si B = 3 y n = 8, luego F = 00011111.

3.3. Desplazadores de barril basados en máscara de inversión de datos: Otra forma de diseño de desplazador de barril con las características funcionales de la figura 5, es la aplicación de un enfoque de inversión de datos basado en máscara. De esta manera, la unidad primaria que realiza las operaciones es un rotador derecho y la técnica de inversión de datos es utilizada para soportar operaciones de desplazamiento y rotación a la izquierda. Paralelo a la inversión de datos, se calculan las máscaras que permiten el desplazamiento lógico y aritmético. Con este enfoque, el desbordamiento y el indicador en cero, se calculan mientras el desplazador invierte y gira los datos.

Figura 8. Desplazador de máscara F de 8 bits Cuando la máscara F es AND con una rotación a la derecha, se produce un resultado lógico de desplazamiento a la derecha. Se facilita tanto la de rotación como el desplazamiento, ya que cada bit de la máscara F es OR y con la señal de rotación produce la máscara P. Por lo tanto,

Lo que establece P a todos para las rotaciones. El resultado temporal, T, antes de la reversión de los datos finales, se calcula como:

Cuando, s = sra *a n- 1 Una ventaja del desplazamiento de barril basado en mascara de inversión de datos , es que el desbordamiento y el indicador en cero, son calculados mientras se giran los datos. El indicador de cero se calcula utilizando una máscara cero de n - bits, Z, oculta los bits que no aparecen en el resultado final. Z se calcula así:

Después de calcular la máscara Z, esta es bit a bit con la entrada ^ A y el resultado de n bits pasa por la compuerta NOR calculando el indicador cero.

potencia entera de dos, n - B corresponde a dos complemento de B. Por lo tanto, cuando se realiza una operación de desplazamiento o giro a la izquierda, el complemento a dos de B se utiliza como la cantidad de desplazamiento, lo que elimina los multiplexores necesarios para invertir los datos de entrada y salida.

El cálculo del indicador de desbordamiento, el bit de signo, a n- 1, es XOR con los n - 1 bits restantes de A determinan qué bits difieren del bit de signo. El resultado de esta operación (n 1) - bit se suma con el complemento de los (n 1) bits iniciales de la máscara F. Finalmente, estos bits de OR se combinan y el resultado es AND con sla para producir el indicador de desbordamiento. Este enfoque se muestra en la Figura 9 para n = 8 Figura 10. Desplazador de barril con complemento a dos.

Figura 9.

La máscara F se calcula utilizando técnica presentada en la Sección 3.3, excepto ^B que se usa en lugar de B. Cuando se realizan desplazamientos a la derecha, la máscara F Se utiliza directamente. Cuando se realizan desplazamientos a la izquierda, se utiliza el complemento de la máscara F. Después de calcular la máscara Z, se agrega en bits con A, y los n bits resultantes se registran para producir el indicador Cero. 3.5. Desplazadores de barril basados en máscara de complemento a uno:

3.4. Cambiadores de barril con complemento a dos basados en máscara Otra forma de diseño para un desplazador de barril basado en máscara, se realiza teniendo en cuenta el hecho de que un bit B que gira a la izquierda es equivalente a un bit (n - B) desplazado a la derecha. Cuando n es una

Una desventaja de los cambiadores de barril de complemento a dos basados en máscaras, es la necesidad de realizar un vehículo/transportador adicional para obtener en el complemento a dos de B, cuando se realizan desplazamientos a la izquierda y rotación. Este vehículo de propagación se puede eliminar usando el complemento B a uno para los cambios y rotaciones a la izquierda, haciendo menos

modificaciones lógicas de desplazamiento del rotador y máscara.

Figura 11. Cambiador de barril complemento a dos basados en máscara.

con

5. CONCLUSIONES Este documento ha examinado cuatro diseños de desplazador de barril: inversión de datos basada en Mux, inversión de datos basada en máscara, basado en máscara- complemento a dos y basado en máscara de complemento a uno. Estimaciones de desbordamiento e indicadores de cero, muestran que los desplazadores de barril de inversión de datos tienen menos área que el complemento a dos o los cambiadores de barril de complemento a uno y los cambiadores de barril de inversión de datos basados en máscara tienen menos retraso que otros diseños.