
Concluimos nuestra epopeya con la traducción de la documentación de propiedad de Cypress sobre UDB. El último problema, sobre abordar UDB, está frente a usted.
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.Parte 6. Módulo de gestión y estado.Parte 7. Módulo de control de temporización y reinicioParte 8. Abordar UDB. (Artículo actual)
21.3.5 Direccionamiento UDB
El par UDB tiene tres espacios de direcciones únicos:
- Registros de trabajo de 8 bits: un controlador de bus que tiene acceso a solo 8 bits de datos por ciclo de bus puede usar este espacio de direcciones para leer o escribir cualquier registro de trabajo UDB. Estos incluyen los registros con los que la CPU y DMA interactúan durante el funcionamiento normal.
- Registros de trabajo de 16 bits: un controlador de bus de 16 bits como DMA o PSoC 5LP Cortex-M3 puede acceder a 16 bits en un solo ciclo de bus para proporcionar funciones de transferencia de datos que requieren 16 bits o más. A pesar de que este espacio de direcciones no está vinculado al área a la que está vinculado el espacio de 8 bits, tiene acceso a los mismos registros, solo a un par a la vez.
- Registros de configuración de 8 o 16 bits: estos registros configuran UDB para ejecutar una función. Después de la configuración, los registros generalmente se establecen en un estado estático durante la operación UDB. Estos registros conservan su estado después del modo de suspensión.
Nota del traductorDe alguna manera todo está complicado formulado. En mi opinión, para los dos primeros puntos es más fácil introducir el concepto de métodos de direccionamiento con diferentes profundidades de bits del registro de trabajo. A través de registros de trabajo de 8 bits y de 16 bits, respectivamente. Si está confundido al leer estos párrafos, trate de considerar el texto de esta manera. Diferentes ventanas en el espacio de direcciones de la CPU, proporcionando direccionamiento de la misma a través de los registros de trabajo de diferentes bits. Eso es todo21.3.5.1 Espacio de direcciones del registro de trabajo
Los registros de trabajo se utilizan durante el funcionamiento normal e incluyen baterías, registros de datos, FIFO, registros de control y estado, un registro de superposición de máscaras y un registro de control auxiliar.
La figura 21-43 muestra un mapa de registro de una UDB.
A la derecha en la Figura 21-43 hay una dirección de 16 bits que siempre es pareja. En este caso, el número UDB tiene una dimensión de 5 bits, no 4, debido a la ubicación uniforme de las direcciones. Los 4 bits altos aún establecen el número de registro.
Figura 21-43. Registros de trabajo UDB.Acceso al registro de trabajo de 8 bitsEn este modo, el acceso a todos los registros UDB se realiza a través de direcciones alineadas en el límite de bytes. En el modo de acceso para registros de 8 bits, como se muestra en la Figura 21-44, todos los bytes de datos escritos en UDB están alineados con el byte bajo del bus UDB de 16 bits.
En este modo, el acceso en cualquier momento solo se puede acceder a un byte.
Figura 21-44. Acceso al registro de trabajo de 8 bits.Espacio de direcciones de registro de trabajo de 16 bitsUn espacio de direcciones de 16 bits diseñado para un acceso eficiente a DMA y que proporciona acceso programático de la CPU a los procesadores que lo admiten, como el Cortex-M3 en PSoC 5LP. Hay dos modos de acceso a los registros de 16 bits: el modo predeterminado y el modo de concatenación. Como se muestra en la Figura 21-45, en el modo predeterminado accede al registro especificado en UDB 'i' a través del byte bajo y al mismo registro en UDB 'i + 1' a través del byte alto. Esto hace que el procesamiento de datos de 16 bits sea eficiente en las UDB vecinas (en orden de direcciones) configuradas como funciones de 16 bits.
Figura 21-45. Acceso a registros de trabajo de 16 bits en modo predeterminado.En el modo de concatenación, los registros de un UDB se combinan para formar registros de 16 bits, como se muestra en la Figura 21-46. En este modo, el bus de datos de 16 bits de la matriz UDB debe acceder a un par de registros en la UDB en el formato que se muestra en la figura. Por ejemplo, al acceder al registro A0, el acceso a A0 a través del byte bajo y a A1 a través del byte alto realmente ocurrirá.
Figura 21-46. Acceso a un registro de trabajo de 16 bits en modo de concatenaciónEl uso de DMA está limitado por la profundidad de bits del registro de trabajo de 16 bits. No es suficiente cuando se trabaja con funciones de más de 16 bits. Esto es causado por superposiciones de direcciones, como se muestra en
tabla 21-25.
Tablas 21-25. Espacio de direcciones optimizado para funciones UDB de 16 bits.
Cuando el DMA transmite 16 bits a la dirección 0, los bytes bajo y alto se escriben en UDB0 y UDB1, respectivamente. En la siguiente transmisión DMA de 16 bits a la dirección 2, el valor en UDB1 se sobrescribe por el byte bajo de esta transmisión.
Para evitar problemas asociados con dicha organización de memoria, se recomienda para las funciones cuya profundidad de bits es más de 16 bits para iniciar el proceso DMA para un área con registros de trabajo de 8 bits.
21.3.5.2 Configuración del espacio de direcciones de registro
La configuración se realiza en el nivel de par UDB. Un par UDB consta de dos UDB y un canal trazador asociado, como se muestra en la Figura 21-47.

Figura 21-47. Esquema de direcciones para configurar un par UDB.
21.3.5.3 Espacio de direcciones de configuración UDB
La figura 21-48 muestra el diagrama de configuración de dirección de una UDB específica. Como puede ver, este espacio de configuración está duplicado en ambos UDB en pares. En total, 128 bytes (direcciones de 7 bits) están reservados para cada configuración UDB, que se dividen en segmentos de 16 bits. Vale la pena señalar que no se admite el acceso de 16 bits a bordes impares. La lectura siempre devuelve 16 bits en el espacio de configuración y se pueden ignorar bytes innecesarios.

Figura 21-48. El espacio de direcciones de la configuración UDB.
21.3.5.4 Espacio de direcciones de configuración de enrutamiento
La configuración de rastreo UDB consta de bits de RAM incorporados para controlar el estado de los conmutadores de puerta de enlace, la segmentación y las memorias intermedias de entrada / salida.
21.3.6 Coherencia de acceso al bus del sistema
Los registros UDB tienen modo de acceso dual:
- acceso al bus del sistema, en el que la CPU o DMA lee o escribe en el registro UDB;
- Acceso interno a UDB, en el cual la función UDB actualiza o usa los contenidos del registro
.
21.3.6.1 Acceso simultáneo al bus del sistema
La siguiente tabla contiene una lista de posibles eventos de acceso concurrente y el comportamiento requerido.
Tabla 21-26. Acceso simultáneo al bus del sistema.
a. Los registros del hacha se pueden leer de forma segura utilizando la función de captura de software FIFO.
b. En los registros Dx, los FIFO solo se pueden escribir dinámicamente. En este modo, la lectura directa de registros Dx no está disponible.
c. El registro CNT solo se puede leer de forma segura cuando está deshabilitado. Una alternativa para leer dinámicamente el valor CNT es rastrear la salida hasta el registro SC (en modo transparente).
d. Los bits de registro MC pueden rastrearse hasta las entradas de registro de estado (en modo transparente) para una lectura segura.
21.3.6.2 Acceso al acumulador coherente (lecturas y escrituras atómicas)
Las baterías UDB son el objetivo principal del procesamiento de datos. Por lo tanto, leer estos registros directamente durante el funcionamiento normal da un resultado indefinido, como se muestra en la tabla anterior. Sin embargo, hay soporte incorporado para lecturas atómicas en forma de captura de programa implementado en bloques conectados en una cadena. En dicho modelo de uso, leer la última batería significativa transfiere datos de todos los bloques conectados en la cadena a los FIFO asociados. La grabación atómica en FIFO se puede implementar mediante programación. Se pueden realizar operaciones de escritura separadas en la entrada FIFO, y luego la señal de estado FIFO, a la que se realizó la última grabación, se puede enviar a todos los bloques vinculados, mientras que los datos FIFO se transferirán a los registros Dx o Ax.
Epílogo del traductor
Este ciclo de traducción se realizó como respuesta al comentario sobre el artículo , donde se propuso primero describir brevemente qué es UDB. Ahora está claro que para una respuesta breve sería necesario citar al menos la mitad de los materiales presentados aquí, de lo contrario la respuesta aún estaría incompleta. Pero ahora todos los materiales están traducidos y compilados. La tarea se ha completado.
Mientras el trabajo continuaba, también llamamos la atención sobre otro interesante bloque de PSoC, que es poco conocido por cualquiera, pero está lleno de un tremendo poder. Este es DFB, bloque de filtro digital. Es cierto, da miedo apresurarse en la traducción. De la traducción sobre UDB está claro que una documentación no es suficiente, oh, se necesita práctica. El problema es que hay pocos ejemplos listos para usar en UDB, pero lo son. Todavía no ha sido posible encontrar algo que valga la pena a partir de los ejemplos en DFB (Cypress hizo un filtro digital en forma de recuadro negro, funciona, pero no está claro cómo). La traducción sin ejemplos no tendrá sentido. Por lo tanto, aprovechando esta oportunidad, llamamos la atención de los lectores sobre este bloque. Quizás alguien en los comentarios proporcione enlaces a buenos ejemplos. Si logramos lidiar con este bloque, será posible hacer un ciclo de traducciones y artículos prácticos sobre él. Mientras tanto, eso es todo.