UDB Que es esto Parte 2. Ruta de datos



Continuamos considerando UDB basado en la documentación de Cypress. Y esta vez estudiaremos en detalle Datapath, un autómata operativo.

El contenido general del ciclo “UDB. ¿Qué es esto?
Parte 1. Introducción. Pld.
Parte 2. Ruta de datos. (Artículo actual)
Parte 3. Datapath FIFO.
Parte 4. Datapath ALU.
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 Máquina operativa (Datapath)


La ruta de datos que se muestra en la Figura 21-6 contiene una ALU de ciclo único de 8 bits y su comparación asociada y generación de indicadores de condición. Los bloques de ruta de datos de UDB vecinos se pueden encadenar para aumentar la profundidad de bits. Datapath incluye una pequeña RAM de configuración dinámica que puede seleccionar dinámicamente la operación que se realizará en un ciclo específico.

Datapath está optimizado para implementar funciones integradas típicas como temporizadores, contadores, PWM, PRS, CRC, registros de desplazamiento y generadores de banda muerta. Agregar funciones de suma y resta proporciona soporte para operaciones digitales delta-sigma.


Figura 21-6. Datapath de nivel superior.

21.3.2.1 Descripción general


Los siguientes capítulos proporcionan una descripción general de las características principales de Datapath.

Configuración dinámica

Configuración dinámica: la capacidad de cambiar el trabajo y las comunicaciones internas de Datapath en cada ciclo bajo el control de un secuenciador. Esto se implementa utilizando la memoria de configuración (RAM de configuración), que almacena ocho configuraciones únicas. La dirección de entrada de esta memoria se puede reenviar desde cualquier bloque conectado a recursos de rastreo, generalmente desde lógica PLD, pines de E / S o desde otros Datapaths.

Alu

La ALU puede realizar ocho funciones de propósito general: aumentar, disminuir, sumar, restar y también realizar operaciones lógicas AND, OR, XOR y PASS. La elección de funciones está determinada por la memoria de configuración para cada ciclo. Las operaciones de desplazamiento independientes (izquierda, derecha, permutación de mordisco), así como las operaciones de enmascaramiento están disponibles en la salida de ALU.

Construcciones condicionales

Cada Datapath tiene dos comparadores enmascarados bit a bit que se pueden configurar para seleccionar múltiples entradas de registro Datapath como argumentos. Otras condiciones identificables pueden ser todos ceros, todos unos y desbordamiento. Estas condiciones forman las salidas principales de Datapath y se pueden reenviar a líneas de rastreo digitales o entradas de otras funciones.

CRC / PRS incorporado

Datapath tiene soporte incorporado para cálculos de CRC de ciclo único y la generación de secuencias pseudoaleatorias (Eng. Pseudo Random Sequence, PRS) con una profundidad de bits dada y un polinomio generador. Para lograr una profundidad de más de 8 bits, las señales se pueden encadenar entre Datapath. Esta característica se controla dinámicamente, lo que significa que puede alternar con otras funciones.

Número de bit alto personalizado

El número del bit más significativo (inglés Most Significant Bit, MSB) de la función aritmética y la función shift se puede establecer mediante programación. Esto proporciona soporte para funciones CRC / PRS de longitud variable y, junto con el enmascaramiento de la salida ALU, permite la implementación de temporizadores de longitudes arbitrarias, contadores y bloques de desplazamiento.

FIFO Buffers de entrada / salida

Cada Datapath tiene dos búferes FIFO de 4 bytes, cada uno de los cuales se puede configurar para funcionar como un búfer de entrada (CPU o DMA escribe datos en FIFO, Datapath lee FIFO), o como un búfer de salida (Datapath escribe en FIFO y CPU o DMA lee de ella). Estas memorias intermedias FIFO generan un estado que se puede reenviar para interactuar con secuenciadores, interrupciones o solicitudes de DMA.

Encadenamiento

Datapath se puede configurar para encadenar condiciones y señales en una cadena a Datapaths vecinos. Las señales de desplazamiento, transferencia, captura y otras señales condicionales se pueden combinar en cadenas para crear funciones aritméticas de mayor profundidad de bits, así como funciones de desplazamiento y funciones CRC / PRS.

Multiplexación de tiempo

En aplicaciones de sobremuestreo o donde no se necesitan altas velocidades de reloj, una ALU en Datapath se puede dividir efectivamente entre dos conjuntos de registros y generadores de condiciones. Las salidas de la ALU y el registro de desplazamiento están enclavadas y se pueden usar como entrada en ciclos posteriores. Los ejemplos de uso incluyen soporte para funciones de 16 bits en un solo Datapath (8 bits), o alternar operaciones de generación de CRC con operaciones de cambio de datos.

Entradas de ruta de datos

Datapath tiene cuatro tipos de entradas: configuración, control, así como entradas de datos (serie y paralelo). Las entradas de configuración seleccionan la dirección RAM de la configuración dinámica. Las entradas de control cargan los registros de datos del FIFO y descargan la salida de la batería al FIFO. Las entradas de datos en serie incluyen entradas de desplazamiento y acarreo. El puerto de entrada de datos en paralelo le permite recibir hasta 8 bits de datos de recursos de rastreo.

Salidas de ruta de datos

En total hay 16 señales generadas en Datapath. Algunas de ellas son señales condicionales (por ejemplo, comparaciones), otras son señales de estado (por ejemplo, estado FIFO), y el resto son señales de datos (por ejemplo, salida de registro de desplazamiento). Estas 16 señales se multiplexan en 6 salidas de Datapath y se enrutan a la matriz de rastreo. Por defecto, las salidas están sincronizadas con la frecuencia del reloj, lo que crea una canalización con un retraso de 1 ciclo de reloj. Además, sus (salidas) pueden cambiarse al modo asíncrono (combinatorio) (ver las notas del traductor).

Nota del traductor

Busqué durante mucho tiempo sobre cuál es el tiempo de las salidas de Datapath. Mi experiencia ha dicho que todo está ahí de forma asincrónica. Resultó que este no es tanto el estado de las salidas, sino esta configuración del editor para las variables basadas en ellas.



Esto obligará al editor a generar el siguiente código Verilog:
/* ==================== Assignment of Registered Variables ==================== */ always @ (posedge clock) begin : register_assignments var1 <= (decr_finished); end 

Si cambia al modo combinatorio



el código se convertirá así:

 assign var1 = (decr_finished); 

Pero todo esto se aplica a las variables generadas a partir de las salidas de Datapath. Y las salidas en sí mismas son siempre asíncronas. Y sus nombres (en este ejemplo decr_finished ) se pueden usar sin ingresar variables adicionales.

Datapath Registros de trabajo

Cada módulo Datapath tiene seis registros de trabajo de 8 bits. La CPU o DMA tiene acceso de lectura y escritura a todos los registros.

Cuadro 21-1.
TipoNombreDescripción
BateríaA0, A1Las baterías pueden ser una fuente o un receptor
para ALU. También se pueden cargar desde el registro de datos.
o FIFO. Las baterías generalmente contienen el valor actual de la función.
(por ejemplo, contador, CRC o turno). Estos registros pierden su
valores al ingresar al modo de suspensión y al reiniciar tomar
valor 0x00.
DatosD0, D1Los registros de datos generalmente contienen constantes de función,
por ejemplo, un valor de comparación PWM, un período de temporizador o un polinomio CRC.
Estos registros conservan sus valores mientras están en modo de suspensión.
modo.
FIFOF0, F1Dos búferes FIFO de 4 bytes proporcionan como fuente,
y un receptor para datos almacenados en búfer. FIFO puede ser
configurado como búferes de entrada y búferes de salida, o como uno
buffer de entrada y un buffer de salida. Las señales de estado muestran
leer y escribir el estado de estos búferes. A ejemplos de uso
puede incluir datos de TX y RX almacenados en SPI o UART,
así como datos PWM almacenados y datos almacenados
sobre el período del temporizador. Estos registros no guardan sus valores.
en modo de suspensión y durante el reinicio, toman el valor 0x00.

En el próximo artículo, comenzaremos a tratar con FIFO.

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


All Articles