UDB Que es esto Parte 4. Datapath ALU



Como se prometió la última vez, estamos comenzando un análisis detallado de la Unidad Aritmética y Lógica (ALU).

El contenido general del ciclo “UDB. ¿Qué es esto?
Parte 1. Introducción. Pld.
Parte 2. Ruta de datos.
Parte 3. Datapath FIFO.
Parte 4. Datapath ALU. (Artículo actual)
Parte 5. Ruta de datos. Pequeñas cosas útiles.
Parte 6. Módulo de gestión y estado.
Parte 7. Módulo de control de temporización y reinicio
Parte 8. Abordar UDB

21.3.2.4 Datapath ALU


El núcleo ALU consta de tres funciones programables independientes de 8 bits: un bloque aritmético / lógico, un bloque de registro de desplazamiento y un bloque de superposición de máscara.

Operaciones aritméticas y lógicas.


Las funciones de ALU seleccionadas dinámicamente usando la RAM de configuración se muestran en la tabla a continuación.

Cuadro 21-8. Funciones de ALU
Func [2: 0]FunciónOperación
000Pasesrca
001INC++ srca
010Dic--srca
011AGREGARsrca + srcb
100SUBsrca - srcb
101Xorsrca ^ srcb
110Ysrca y srcb
111Osrca | srcb

Llevar en


Llevar en se utiliza en operaciones aritméticas. Como se muestra en la tabla 21-9, existen valores de arrastre predeterminados para ciertas funciones.

Cuadro 21-9. Funciones llevar.
Las funcionesOperaciónImplementación predeterminada de transporte
INC++ srcasrca + 00h + ci, donde ci es 1
Dic--srcasrca + ffh + ci, donde ci es 0
AGREGARsrca + srcbsrca + srcb + ci, donde ci es 0
SUBsrca - srcbsrca + ~ srcb + ci, donde ci es 1

Además de estas aplicaciones aritméticas regulares, hay tres opciones más para usar la separación silábica. Los bits CI SELA y CI SELB establecen las reglas para usar la entrada de entrada para cada medida. Configuración dinámica RAM selecciona la configuración A o B en cada ciclo. Los parámetros se muestran en la tabla 21-10.

Tabla 21-10. Características adicionales llevar.
CI SEL A
CI SEL B
El modo
llevar
Descripción
00Por defecto
(Predeterminado)
Modo aritmético por defecto,
descrito en la tabla 21-9.
01Snaps
(Registrado)
Llevar bandera que es
resultado de la transferencia del ciclo anterior.
Este modo se usa para implementar
operaciones de transferencia y sustracción
con ocupación
10Probros
(Enrutado)
La transferencia se genera en otro lugar.
y enviado a esta entrada. Este modo
se puede usar para implementar
Contadores gestionados.
11Encadenamiento
(Encadenado)
La transferencia se coloca en la cadena después de
ruta de datos anterior. Este modo puede
utilizar para implementar ciclo único
operaciones de mayor velocidad de bits,
en el que se usan dos o más
Datapath.

Si se usa el arrastre, se usa en varias funciones, como se muestra en la tabla 21-11. Tenga en cuenta que para las funciones de disminución y sustracción de unidades, el nivel de transferencia activo es bajo (inverso).

Cuadro 21-11. Trazado Llevar En Características.
FunciónPolarity Carry InLlevar en está activoLlevar está inactivo
INCDirecto++ srcasrca
DicInversa--srcasrca
AGREGARDirecto(srca + srcb) +1srca + srcb
SUBInversa(srca - srcb) -1(srca - srcb)

Llevar a cabo


Ejecutar: salida opcional de Datapath, formada en base a un bit alto especificado estáticamente. El valor se puede pasar por la cadena a la entrada de transferencia a un bloque anterior. Tenga en cuenta que en el caso de las funciones de disminución y sustracción, la ejecución se invierte.

Cuadro 21-12. Características llevar a cabo.
FunciónLa polaridad se lleva a caboLlevar a cabo está activoLlevar a cabo está inactivo
INCDirecto++ srca == 0srca
DicInversa--srca == -1srca
AGREGARDirectosrca + srcb> 255srca + srcb
SUBInversasrca - srcb <0(srca - srcb)

Estructura de transferencia


Los parámetros carry y para elegir el bit más significativo, para generar carry se muestran en la Figura 21-15. Los valores de ejecución bloqueados se pueden usar como transferencia para operaciones aritméticas posteriores. Esta característica se puede utilizar para implementar funciones de mayor capacidad utilizando ciclos.



Figura 21-15. Operación de transferencia.

Operación de cambio


La operación de cambio ocurre independientemente de la operación de la ALU, de acuerdo con la tabla 21-13.

Cuadro 21-13. Funciones de la operación de turno.
Shift [1: 0]Función
00Pase
01Desplazar a la izquierda
10Shift Right
11Intercambiar Nibbles (Nibble Swap)

El valor de salida de la operación de cambio se emite con Datapath. Las salidas para desplazarse hacia la derecha ( sor ) y hacia la izquierda ( sol_msb ) están configuradas con los mismos bits. El bit de configuración estática (SHIFT SEL en el registro CFG15) determina qué salida de cambio se usa como salida de Datapath. En ausencia de un cambio, las señales sor y sol_msb se definen como LSB y MSB de la función ALU, respectivamente.

Los bits de configuración SI SELA y SI SELB determinan el desplazamiento de datos para la operación especificada. Configuración dinámica RAM selecciona la configuración A o B para cada ciclo de reloj. Los datos introducidos se usan solo cuando se desplazan hacia la izquierda y hacia la derecha, esta entrada no se usa al omitir y reorganizar los nibbles. Los valores seleccionados y los casos de uso se refieren tanto a un desplazamiento a la derecha como a un desplazamiento a la izquierda, y se muestran en la Tabla 21-14.

Tabla 21-14. Cambio en funciones
SI SEL A
SI SEL B
Fuente
empujado
datos
Descripción
00Predeterminado / Aritmética
(Predeterminado / Aritmético)
Por defecto, el valor del bit DEFSI
(constante 1 o 0). Sin embargo, si el MSB SI está armado,
entonces la fuente es el valor del seleccionado
bit ALU de orden superior (solo para desplazamientos a la derecha).
01Snap
(Registrado)
Se establece el valor de entrada para el turno
valor de salida bloqueado actual
cizallamiento (del ciclo anterior). Operación
desplazamiento a la izquierda utiliza el último valor
desplazamiento a la izquierda La operación de desplazamiento a la derecha utiliza
último cambio de salida a la derecha.
10Probros
(Enrutado)
Llega la entrada para el turno
externamente, a través de recursos de rastreo (entrada SI).
11Encadenamiento
(Encadenado)
Para entrada, desplazamiento a la izquierda
tiros desde la salida del bloque derecho
Datapath en una cadena, para cambio de entrada
a la derecha, desde la izquierda.

La salida cuando se desplaza hacia la izquierda se toma del bit especificado como alto. Cuando se desplaza hacia la derecha, los datos de entrada se envían desde la posición senior seleccionada (MSB). La salida, incluso cuando se desplaza hacia la izquierda, incluso cuando se desplaza hacia la derecha, se enclava y se puede utilizar en la siguiente medida. Esta característica se puede utilizar para implementar un cambio de mayor capacidad en múltiples ciclos.



Figura 21-16. Operación por turnos.

Vale la pena señalar que los bits aislados al elegir MSB todavía se desplazan. En el ejemplo que se muestra, el bit 7 todavía se desplaza a sil cuando se desplaza hacia la derecha, y el bit 5 se desplaza al bit 4 cuando se desplaza hacia la izquierda. El bit de salida (derecha o izquierda) de un grupo aislado se perderá.

Operación de superposición de máscara ALU


El registro de máscara de 8 bits en el espacio estático de los registros de configuración UDB define la operación de enmascaramiento. En esta operación, una máscara (operación AND) con el valor de este registro se superpone en la salida ALU. Un uso típico de la operación de enmascaramiento de ALU es la implementación de temporizadores y contadores autónomos con una resolución que es un múltiplo de una potencia de dos.

21.3.2.5. Entradas de ruta de datos y multiplexación


Como se muestra en la Tabla 21-15, cada Datapath tiene 9 entradas, incluidas 6 entradas del rastreo de canales. Estos incluyen las direcciones de configuración de RAM, FIFO, señales de control para cargar registros de datos, así como cambiar y transferir entradas de datos.

Tabla 24-15. Entradas de ruta de datos
Iniciar sesiónDescripción
RAD2
RAD1
RAD0
Dirección asincrónica en RAM de configuración dinámica. Direcciones
ocho palabras de 16 bits programables por el usuario. Cada palabra
contiene los bits de control de Datapath para el bucle actual. Secuencia
Las instrucciones pueden determinarse mediante estas entradas de dirección.
F0ld
F1LD
Si está activado en este ciclo, los datos se cargan en el FIFO seleccionado
de la batería A0 o A1, o la salida de la ALU. Fuente seleccionada
utilizando los bits de configuración Fx INSEL [1: 0]. Esta entrada es sensible a los cambios.
Se muestrea en Datapath; tras la detección de transición
De "0" a "1", la carga se produce en el siguiente borde de la señal del reloj.
D0ld
D1LD
Si está armado en este bucle, el registro Dx se carga desde
su FIFO asociado Fx. Esta entrada es sensible a los cambios. Se muestrea
Datapath al detectar una transición de "0" a "1", cargando
ocurre en el siguiente borde de la señal del reloj.
SIEste es un valor de entrada de datos que se puede usar para cambiar
derecha o izquierda
CiEste valor de acarreo se usa si la señal de control
la transferencia es igual a "transporte enrutado".

Como se muestra en la Figura 21-17, cada entrada tiene un multiplexor 6 en 1, por lo tanto, todas las entradas son intercambiables. Las entradas se procesan de dos maneras: por nivel o por diferencial. La dirección en la RAM de la configuración dinámica, así como los valores de desplazamiento y datos son sensibles al nivel. Las señales de datos FIFO y de registro de carga son sensibles a las diferencias.



Figura 21-17. Señales de entrada de ruta de datos.

En el próximo artículo, pasaremos a una revisión de pequeñas cosas útiles.

Source: https://habr.com/ru/post/437096/


All Articles