UDB Que es esto Parte 5. Ruta de datos. Pequeñas cosas útiles



Continuamos considerando UDB basado en la documentación patentada de Cypress, es decir, trivia útil relacionada con Datapath.

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.
Parte 5. Ruta de datos. Pequeñas cosas útiles. (Artículo actual)
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.6 Soporte CRC / PRS


Datapath admite la generación de la verificación de redundancia cíclica (CRC) y secuencias pseudoaleatorias (secuencia pseudoaleatoria, PRS). Las señales encadenadas se rastrean entre los bloques de Datapath para admitir CRC / PRS de más de 8 bits.

El número de bit más significativo (MSB) del bloque CRC / PRS más alto se selecciona y rastrea (y encadena a otros bloques) a los bloques más bajos. Después de eso, la operación XOR con datos de entrada (datos SI) se aplica al MSB, proporcionando una señal de retroalimentación (retroalimentación, FB). Después de eso, la señal de retroalimentación se rastrea (y se conecta en una cadena con otros bloques) a los bloques inferiores. Este valor de retroalimentación se utiliza en todos los bloques para realizar la operación XOR del polinomio (del registro Data0 o Data1) con el valor actual de la batería.

La figura 21-18 muestra la configuración estructural de la operación CRC. La configuración PRS es idéntica, pero la entrada de desplazamiento (SI) se extrae a 0. En modo PRS, D0 o D1 contiene el valor polinomial, y A0 o A1 contiene el valor inicial (semilla) y el valor CRC obtenido después del cálculo.

Nota del traductor.
Aparentemente, hay un error tipográfico en la documentación de propiedad en esta oración, ya que se debe obtener un número aleatorio en modo PRS. Y la información sobre CRC se encuentra justo debajo.



Figura 21-18. Estructura funcional de CRC.

Para activar el soporte CRC, debe establecer el bit CFB_EN en la RAM de configuración dinámica en 1. Esto activa la operación AND con respecto a la entrada SRCB ALU y la señal de retroalimentación CRC. Si este bit se establece en cero, la señal de retroalimentación se asignará a uno, lo que permite realizar operaciones aritméticas normales. El control dinámico de este bit en cada ciclo le permite alternar las operaciones CRC / PRS con otras operaciones aritméticas.

Encadenamiento CRC / PRS


La figura 21-19 muestra un ejemplo de unión de CRC / PRS en cadenas entre tres UDB. Este escenario admite la operación en modos con una resolución de 17 a 24 bits. Los bits de enlace de control en las cadenas se configuran de acuerdo con la posición del Datapath en la cadena (ver figura).



Figura 21-19. Cadena de unión de CRC / PRS.

Cómo se conecta la señal de retroalimentación CRC / PRS (cfbo, cfbi) en una cadena:

  • Si el bloque seleccionado es el más joven, la señal de retroalimentación en este bloque se genera a partir de la lógica incorporada, que lleva la entrada de desplazamiento a la derecha (señor) y realiza una operación XOR en ellos con el bit más significativo. (En el caso de PRS, la señal "señor" se establece en "0").
  • Si el bloque seleccionado no es un bloque de orden inferior, el bit de configuración CHAIN ​​FB debe ser amartillado y la retroalimentación se transmite en una cadena desde el bloque anterior.

¿Cómo encadena la señal CRC / PRS MSB (cmsbo, cmsbi):

  • Si el bloque seleccionado es alto, el bit de configuración MSB (de acuerdo con el polinomio seleccionado) se configura utilizando los bits de configuración MSB_SEL .
  • Si el bloque seleccionado no es alto, el bit de configuración CHAIN ​​MSB debe ser amartillado y la señal MSB se enviará a lo largo de la cadena desde el siguiente bloque.

Especificación polinómica CRC / PRS


Como ejemplo de la configuración del polinomio para escribir en el registro correspondiente D0 / D1, considere el polinomio CCITT CRC-16 , que tiene la forma x 16 + x 12 + x 5 + 1. El método para extraer el formato de datos del polinomio se muestra en la Figura 21-20. El término X0, por definición, siempre es 1, por lo tanto, no necesita ser escrito. Para todos los demás miembros del polinomio, la unidad se establece en las posiciones necesarias, como se muestra en la figura.



Figura 21-20. El formato del polinomio CCITT CRC16.

Tenga en cuenta que el formato del polinomio es ligeramente diferente del formato especificado en el formato hexadecimal clásico. Por ejemplo, el polinomio CCITT CRC16 se conoce comúnmente como 1021H . Para convertirlo al formato requerido para Datapath, debe realizar un desplazamiento a la derecha en una posición y agregar 1 al bit MSB. En este caso, el valor polinómico correcto que se escribirá en D0 o en D1 es 8810H .

Ejemplo de configuración CRC / PRS


La siguiente es una breve descripción de los requisitos de configuración de CRC / PRS, siempre que D0 sea un polinomio y CRC / PRS se calcule en A0:

  1. Elija un polinomio adecuado (ejemplo anterior) y escríbalo en D0.
  2. Seleccione la semilla apropiada (por ejemplo, todos ceros para CRC o todos para PRS) y escríbala en A0.
  3. Si es necesario, configure el encadenamiento como se describe anteriormente.
  4. Seleccione un elemento MSB como se describe arriba.
  5. Configure los campos dinámicos de RAM RAM:

a. Seleccione D0 como ALU "SRCB" (fuente de datos ALU B)
b. Seleccione A0 como ALU "SRCA" (fuente de datos ALU A)
c. Seleccione XOR para la operación ALU
d. Seleccione SHIFT LEFT para la operación SHIFT
e. Seleccione CFB_EN para habilitar el soporte CRC / PRS.
f. Seleccione ALU como fuente de registro A0

Al elegir CRC, debe configurar el desplazamiento en el campo derecho para los datos de entrada y enviar datos sobre esta entrada en cada paso. Al elegir PRS, debe establecer shift en derecha a 0.

Esta configuración de UDB genera el CRC necesario o produce el bit más significativo, que puede reenviarse al exterior, eliminando de él una secuencia pseudoaleatoria.

Modo externo CRC / PRS


Para habilitar la computación externa CRC o PRS, puede especificar un bit de configuración estática ( EXT CRCPRS ). Como se muestra en la Figura 21-21, el cálculo de retroalimentación CRC se realiza en el bloque PLD. Cuando el bit está armado, la señal de retroalimentación CRC se transmite directamente desde el multiplexor de entrada CI (Carry In), omitiendo los cálculos internos. La figura muestra una configuración simple que admite CRC o PRS de hasta 8 bits. Por lo general, se utilizan circuitos electrónicos integrados, pero este parámetro le permite implementar configuraciones más complejas, por ejemplo, funciones CRC / PRS de 16 bits en un UDB, utilizando multiplexación por división de tiempo.



Figura 21-21. Modo externo CRC / PRS.

En este modo, el bit CFB_EN de la RAM de configuración dinámica también controla si la operación AND se usa en la señal de retroalimentación CRC en la entrada CRU de ALU o no. Por lo tanto, como en el caso del modo CRC / PRS interno, esta función puede, si es necesario, alternar con otras funciones.

21.3.2.7 Salidas de ruta de datos y multiplexación


Las condiciones se generan a partir de los valores de activación de la batería, las salidas ALU y el estado FIFO. Estas condiciones pueden transmitirse a través de canales de rastreo digital a otros UDB para formar solicitudes de interrupción, ya sea al DMA o a las "patas del chip". 16 condiciones posibles se muestran en la tabla a continuación.

Tabla 21-16. Generación de condición de ruta de datos.
TituloCondiciónLa cadena?Descripción
ce0Comparar igualSiA0 == D0
cl0Comparar menos deSiA0 <D0
z0Cero detectadoSiA0 == 00h
ff0Unidades encontradasSiA0 = FFh
ce1Comparar igualSiA1 o A0 == D1 o A0 (selección dinámica)
cl1Comparar menos deSiA1 o A0 <D1, o A0 (selección dinámica)
z1Cero detectadoSiA1 == 00h
ff1Unidades encontradasSiA1 == FFh
ov_msbDesbordamiento / desbordamientoNoLlevar (msb) ^ Llevar (msb-1)
co_msbLlevar a caboSiMigrar un bit MSB específico
cmsbCRC MSBSiCaracterísticas de MSB CRC / PRS
entoncesDesplazarseSiSalida de datos de la operación de turno seleccionada
f0_blk_statFIFO0 Estado del bloqueNoLa descripción depende de la configuración FIFO.
f1_blk_statFIFO1 Estado del bloqueNoLa descripción depende de la configuración FIFO.
f0_bus_statEstado del bus FIFO0NoLa descripción depende de la configuración FIFO.
f1_bus_statEstado del bus FIFO1NoLa descripción depende de la configuración FIFO.
Hay seis salidas de Datapath. Como se muestra en la Figura 21-22, cada salida tiene un multiplexor 16 en 1 que le permite enrutar cualquiera de las 16 señales a cualquier salida de Datapath.



Figura 21-22. Conexiones al multiplexor de salida.

Comparaciones


Hay dos comparaciones, una de las cuales tiene fuentes fijas ( Comparar 0 ), y la otra se selecciona dinámicamente ( Comparar 1 ). Cada comparación tiene un registro de enmascaramiento estático de 8 bits, lo que permite comparaciones en el campo de bits especificado. Por defecto, el enmascaramiento está deshabilitado (se comparan todos los bits) y debe activarse manualmente.

Las entradas de Comparar 1 se configuran dinámicamente. Como se muestra en la tabla a continuación, hay cuatro parámetros de Comparar 1 que se aplican a las condiciones menos e iguales. Los bits de configuración CMP SELA y CMP SELB determinan las posibles configuraciones de comparación. Los bits de RAM de la configuración dinámica especifican una de las configuraciones (A o B) en cada ciclo.

Tabla 21-17. Configuración de comparación.
CMP SEL A
CMP SEL B
Modo de comparación para Comparar 1
00A1 se compara con D1
01A1 se compara con A0
10A0 se compara con D1
11A0 se compara con A0
Compare 0 y Compare 1 están asociados con las condiciones generadas en el Datapath anterior de forma independiente (en el orden de tratamiento). Si se deben encadenar o no las comparaciones estáticamente especificado en los registros de configuración UDB. La Figura 21-23 muestra la vinculación "igual" a la cadena de comparación, lo que se reduce a aplicar la operación AND a la comparación "igual" de este bloque y a la entrada del bloque anterior.



Figura 21-23. Vincular a la cadena de comparación es "igual".

La figura 21-24 muestra el enlace a la cadena de comparación menor. En este caso, el resultado de salida (cl0) para un bloque dado es generado por el circuito de comparación "menor que" y es incondicional. Esta señal se combina O con el resultado entrante de la cadena si la condición es igual al bloque actual y el modo de enlace está activado.



Figura 21-24. Enlace menor que

Detección de todos los ceros y todos


Cada batería tiene un detector de todos los ceros y un detector de todas las unidades. Estas condiciones se pueden encadenar estáticamente como se indica en los registros de configuración de UDB. El modo de enlace se establece en los registros de configuración UDB. La vinculación en la cadena de detección de ceros se produce de acuerdo con el mismo concepto que la comparación "es igual". Si se activa el encadenamiento, la operación AND se aplica a los datos vinculados con éxito.

Desbordamiento


Un desbordamiento se define como una operación de transferencia XOR en un MSB y una transferencia desde un MSB. Los cálculos se realizan con el MSB actual, como se indica en los bits MSB_SEL . Esta condición no se puede encadenar, sin embargo, el cálculo será correcto si la función de capacidad total se realiza en el Datapath superior hasta que se conecte la transferencia entre los bloques.

21.3.2.8 Ruta de datos de entradas y salidas paralelas


Como se muestra en la figura 21-25, las señales de entrada paralela (PI) y salida paralela (PO) proporcionan una capacidad limitada para entregar datos y rastrear recursos a Datapath y enviar datos desde ella. Las señales PO siempre están disponibles para el rastreo como una opción de ALU asrc entre A0 y A1.

Nota del traductor.
Este es un mecanismo extremadamente importante que permite que UDB funcione no solo con datos en serie, sino también con datos paralelos. Por alguna razón, este documento no enfatiza esto, pero puede leerlo al pasar en una de las Notas de aplicación.



Figura 21-25. Señales de ruta de datos de entrada / salida paralelas.

Para ingresar datos en la ALU, debe seleccionar Parallel In . Hay dos modos: estático y dinámico. En modo estático, el bit PI SEL convierte el valor de asrc ALU a PI. El bit PI DYN se usa para proporcionar el modo dinámico PI. Cuando está armado, y también siempre que PI SEL sea ​​0, el multiplexor PI puede controlar el bit de control dinámico CFB_EN . La función principal del bit CFB_EN es proporcionar la funcionalidad PRS / CRC.

21.3.2.9 Encadenamiento Datapath


Cada bloque Datapath tiene una ALU de 8 bits, que está diseñada para encadenar guiones, desplazamientos, disparadores de captura y señales condicionales al Datapath vecino más cercano para crear funciones aritméticas y registros de desplazamiento con profundidades de bits más altas. Estas señales, conectadas en cadenas, están aisladas y le permiten implementar de manera efectiva funciones de 16-24 y 32 bits en un solo ciclo sin carreras y otros problemas derivados de los retrasos en los canales de rastreo. Además, los agarres de encadenamiento admiten la lectura atómica de baterías en bloques vinculados. Como se muestra en la Figura 21-21, todas las señales condicionales y de captura generadas están conectadas en una cadena que se mueve desde el bloque más joven al más antiguo. Un cambio a la izquierda también se realiza de junior a senior. Se realiza un desplazamiento a la derecha del más antiguo al más joven. La señal de encadenamiento CRC / PRS para retroalimentación se enruta de mayor a menor, y la salida MSB se envía de mayor a menor.



Figura 21-26. Datapath cadena de subprocesos.

21.3.2.10 Configuración dinámica de RAM


Cada Datapath contiene una RAM de configuración dinámica con 8 palabras de 16 bits cada una (consulte la Figura 21-27). El propósito de dicha RAM es controlar los bits de la configuración de Datapath en cada ciclo, en función del reloj seleccionado para este Datapath. RAM tiene puertos síncronos de lectura y escritura para descargar configuraciones a través del bus del sistema.

Para enviar rápidamente estas palabras de 16 bits a Datapath, se proporciona un puerto de lectura asíncrono adicional como bits de control. Las entradas de dirección asincrónicas se seleccionan mediante multiplexores de las entradas de Datapath, que se pueden tomar de cualquier señal posible, incluidas las patas de microcircuitos, las salidas PLD, las salidas de la unidad de control o cualquier salida de Datapath.

El propósito principal de un puerto de lectura asíncrono es proporcionar una decodificación rápida de bits de control de Datapath en un solo ciclo.



Figura 21-27. Configuración de E / S de RAM.

Los campos de la palabra RAM de la configuración dinámica se muestran en las siguientes tablas junto con una descripción del uso de cada campo.
RegistrarseLa direccion1514131211109 98
CFGRAM61h-6Fh
(impar)
FUNC [2: 0]FUNC [2: 0]FUNC [2: 0]SRCASRCB [1: 0]SRCB [1: 0]SHIFT [1: 0]SHIFT [1: 0]

RegistrarseLa direccion7 76 65 54 43210 0
CFGRAM60h-6Eh
(incluso)
A0 WRSRC [1: 0]A0 WRSRC [1: 0]A1 WRSRC [1: 0]A1 WRSRC [1: 0]CFB ENCI SELSI SELCMPSEL
Tabla 21-18. Referencia de configuración dinámica.
El campoPedacitosParámetroValores
FUNC [2: 0]3Función ALU000 PASS
001 INC SRCA
010 DEC SRCA
011 AGREGAR
100 SUB
101 XOR
110 Y
111 OR
SRCA1Fuente de entrada ALU A0 A0
1 A1
Srcb2Fuente de entrada ALU B00 D0
01 D1
10 A0
11 A1
SHIFT [1: 0]2Función de cambioPase 00
01 desplazamiento a la izquierda
10 desplazamiento a la derecha
Intercambio de 11 mordiscos
A0 WR SRC [1: 0]2Fuente de registro para A000 ninguno
01 ALU
10 D0
11 F0
A1 WR SRC [1: 0]2Fuente de registro para A100 ninguno
01 ALU
10 D1
11 F1
CFB EN1CRC Feedback Activator0 Habilitar
1 Desactivar
CI SEL1Seleccione una configuración para migrar0 ConfigA
1 ConfigB a
SI SEL1Seleccione una configuración para el turno0 ConfigA
1 ConfigB a
CMP SEL1Elegir una configuración para comparar0 ConfigA
1 ConfigB a
(a. - Para los campos CI, SI y CMP, los campos RAM le permiten seleccionar una de dos opciones predefinidas. Consulte la configuración del registro estático).

Continuará ...

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


All Articles