UDB Que es esto Parte 6. Módulo de estado y control



En artículos anteriores, traducciones de la documentación de Cypress, el autómata operativo Datapath fue considerado de manera muy sustancial. Poco a poco pasamos al estudio de otros módulos UDB, en particular, el módulo de gestión y estado.

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. (Artículo actual)
Parte 7. Módulo de control de temporización y reinicio
Parte 8. Abordar UDB

21.3.3. Módulo de gestión y estado


En la Figura 21-28 se muestra una vista de alto nivel del módulo de control y el estado. Los bits de estado del registro de control se transfieren a recursos de rastreo, lo que le da al programa la capacidad de controlar el comportamiento de UDB. El registro de estado recibe datos de las líneas de rastreo, por lo que el programa puede monitorear las operaciones realizadas por UDB.


Figura 21-28. Registros de gestión y estado.

La estructura del módulo de control y el estado se muestran con más detalle en la Figura 21-29. El objetivo principal de esta unidad es coordinar la interacción del programa central del procesador con el trabajo de los elementos UDB internos. Sin embargo, debido a la fuerte conexión con la matriz de rastreo, este bloque se puede configurar para realizar otras funciones.


Figura 21-29. Módulo de control y estado.

Modos de funcionamiento:

  • Entrada de estado El estado de las líneas enrolladas desde el exterior se puede ingresar y capturar como estado, después de lo cual se lee la CPU o el DMA.
  • Salida de control La CPU o DMA puede escribir datos en el registro de control. Estos datos determinarán el estado de las líneas que van a los recursos de rastreo.
  • Entrada paralela - a la entrada paralela Datapath.
  • Salida paralela : desde la salida paralela de Datapath.
  • Modo contador En este modo, el registro de control funciona como un contador decreciente de 7 bits con un período programable y reinicio automático. Las entradas del canal de rastreo se pueden configurar para controlar tanto el encendido como el reinicio del contador. Cuando se activa este modo, la funcionalidad del registro de control no está disponible.
  • Modo sincrónico / Modo de sincronización . En este modo, el registro de estado actúa como un sincronizador dual de 4 bits. Cuando se activa este modo, la funcionalidad del registro de estado no está disponible.

21.3.3.1 Estado y modo de control


Cuando funciona en modo de control y estado, este módulo actúa como un registro de estado, registro de anulación de máscara y registro de control en la configuración que se muestra en la Figura 21-30.


Figura 21-30. Gestión laboral y estado.

Operación de registro de estado


Cada UDB tiene un registro de estado de 8 bits. La entrada a este registro proviene de cualquier señal de una estructura de rastreo digital. El registro de estado es destructible: pierde su estado durante el sueño y después de despertarse tiene un valor de 0x00. Cada bit puede programarse independientemente para operar en uno de los dos modos.

Cuadro 21-19. Registro de estado.

STAT MDDescripción
0 0Lectura normal Devuelve el valor actual de la señal de entrada.
1Pegado, despejado al leer. Pestillos de alto nivel de entrada
en una señal de reloj. Borrado después de leer el registro.

Una característica importante de la operación de borrado del registro de estado es que solo se borran los bits armados. Esto permite que los bits restantes continúen capturando el estado para mantener la continuidad del proceso.

Estado de lectura normal


Por defecto, la CPU lee de forma transparente el estado del circuito correspondiente. Este modo se puede usar para leer datos retenidos dentro de UDB.

Estado de pegado con claro después de leer


En este modo, las entradas del registro de estado se muestrean en cada control y ciclo de reloj de estado. Si la señal en un reloj dado es alta, se captura en el bit de estado y permanece alta, independientemente de los estados de entrada posteriores. Cuando la CPU o DMA lee el registro de estado, el bit se borra. Borrar el registro de estado es independiente del modo y ocurre incluso cuando el reloj UDB está desactivado; se basa en la sincronización del bus y ocurre como parte de una operación de lectura.

Estado de bloqueo mientras lee


La figura 21-31 muestra la estructura de la lógica de lectura de estado. El registro de estado fijo es seguido por un pestillo que bloquea los datos del registro de estado y lo mantiene estable durante el ciclo de lectura, independientemente del número de tics de espera en la operación de lectura actual.


Figura 21-31. La lógica del estado de lectura.

Generación de interrupción


En la mayoría de las funciones, la generación de interrupciones está vinculada a los parámetros de bit de estado. Como se muestra en la Figura 21-31, esta característica está integrada en la lógica del registro de estado en forma de una operación de enmascaramiento y aplica la operación OR al estado. Solo los 7 bits inferiores de la entrada de estado pueden usarse con los generadores de interrupciones incorporados. El bit más significativo (el bit más significativo, MSB) generalmente se usa como salida de interrupción y puede enviarse al controlador de interrupción utilizando canales de rastreo digital. En esta configuración, el estado del bit de solicitud de interrupción se lee desde el bit de registro de estado alto.

21.3.3.2 Operación de registro de control


Cada UDB tiene un registro de control de 8 bits disponible. Funciona como un registro estándar de lectura / escritura en el bus del sistema, donde la salida de estos bits de registro es controlada por las líneas de la estructura de rastreo digital.

El registro de control es destructible: pierde su estado durante el sueño y después de despertarse tiene un valor de 0x00.

Modos de registro de gestión


Cada bit se puede configurar en uno de los tres modos. La configuración se especifica combinando los bits de dos registros de 8 bits CTL_MD1 [7: 0] y CTL_MD0 [7: 0]. Por ejemplo, {CTL_MD1 [0], CTL_MD0 [0]} controla el modo de bit cero del registro de control (consulte la tabla 21-20).

Tabla 21-20. Modo de registro de control de bit cero
CTL MDDescripción
00Modo directo
01Modo de sincronización
10(reservado)
11Modo de pulso

Modo de registro de control directo


Por defecto, el modo es directo. Como se muestra en la Figura 21-32, cuando la CPU o DMA se escribe en el registro de control, la salida del registro de control se envía directamente a la línea de rastreo en el mismo ciclo.


Figura 21-32. Modo de registro de control directo.

Modo de registro de control síncrono


En modo síncrono, como se muestra en la Figura 21-33, la salida del registro de control no está sincronizada con el reloj igual al reloj actual del control y estado (Estado y Control, SC). Esto le permite controlar los diagramas de temporización de la salida a la frecuencia SC seleccionada y no a la frecuencia del reloj del bus.


Figura 21-33. Modo de registro de control síncrono.

Registro de control de modo de pulso


El modo de pulso es similar al modo síncrono, ya que en él el bit de control se vuelve a muestrear a la frecuencia SC; el pulso comienza en el primer ciclo de reloj SC y sigue el ciclo de escritura del bus. La salida del bit de control se establece durante un ciclo de reloj SC completo. Al final de este ciclo de reloj, el bit de control se restablece automáticamente.

Con este modo de operación, el programa puede escribir 1 en el bit de registro de control para generar un pulso. Después de que el bit tenga asignado el valor 1, el programa lo leerá como 1 hasta el final del pulso, después de lo cual se leerá como 0. Después de eso, el programa puede escribir otro 1 para iniciar un nuevo pulso. Por lo tanto, no será posible dar un pulso con más frecuencia que en cada segundo paso de la señal SC.

Restablecer registro de gestión


El registro de control tiene dos modos de reinicio controlados por el bit de configuración EXT RES, como se muestra en la Figura 21-34. Cuando EXT RES es 0 (predeterminado), en modo síncrono o de pulso, la entrada de restablecimiento rastreada restablece la salida sincronizada, pero no el bit de control en sí. Cuando EXT RES es 1, la entrada de restablecimiento rastreable restablece tanto el bit de control como la salida sincronizada.


Figura 21-34. Restablecer registro de gestión.

21.3.3.3 Modo de entrada / salida paralela


En este modo, el control y el seguimiento del estado se conecta a las señales de Datapath en paralelo y en paralelo. Para activar este modo, debe activar los bits de configuración de SC OUT para seleccionar la salida paralela de Datapath. La comunicación con entrada paralela siempre está disponible, sin embargo, estas conexiones de rastreo se comparten con las entradas de registro de estado, las entradas de control de contador y las salidas de interrupción.


Figura 21-35. Modo paralelo de E / S.

21.3.3.4 Modo contador


Como se muestra en la Figura 21-36, cuando la unidad funciona en modo contador, un contador decreciente de 7 bits está disponible para su uso dentro de las operaciones dentro de la UDB y para las necesidades del programa. Las características del medidor incluyen:

  • Registro de período de 7 bits (lectura / escritura).
  • Registro de cuenta de 7 bits (lectura / escritura). El acceso solo es posible cuando el contador está detenido.
  • Recarga automáticamente el período en el registro de la cuenta cuando llega a cero.
  • El bit de control accesible por software en el registro de control auxiliar CNT START, utilizado para iniciar y detener el contador. (Se superpone a la señal de hardware ENABLE y debe instalarse para que funcione la señal de hardware ENABLE opcional).
  • Bits seleccionables de los canales de rastreo del control de contador dinámico opcional para las funciones de inicio y carga:
    - EN, señal trazada para iniciar o detener el conteo.
    - LD, una señal de carga rastreable que provoca una recarga de período. Cuando esta señal está activada, se superpone a la señal final pendiente. Es sensible al nivel, y mientras la señal está activada, el período continúa cargándose.
  • Se puede enviar un contador de 7 bits para rastrear recursos como sc_out [6: 0].
  • La señal de terminación puede ingresar recursos de rastreo como sc_out [7].
  • En el modo "predeterminado", el modo de ajuste se utiliza para la señal de conteo. En modo alternativo, cambia al modo combinado.
  • En el modo predeterminado, la señal opcional de hardware EN, si se usa, debe configurarse para habilitar la señal de hardware LD. En modo alternativo, las señales de hardware LD y EN son independientes.


Figura 21-36. Modo contador
Nota del traductor:
Alrededor de este lugar, me di cuenta de que no entiendo nada del documento. En ninguna parte se describe este modo "predeterminado" y "alternativo". Después de una larga búsqueda, logré encontrar algunos, pero un ejemplo.
Archivo: C: \ Archivos de programa (x86) \ Cypress \ PSoC Creator \ 4.2 \ PSoC Creator \ psoc \ content \ CyComponentLibrary \ CyComponentLibrary.cylib \ bScanComp_v1_10 \ bScanComp_v1_10.v
Código explicativo:



Mismo texto:
cy_psoc3_count7 #(.cy_period(Period),.cy_route_ld(0),.cy_route_en(1), .cy_alt_mode(1)) ChannelCounter( /* input */ .clock(clk_int), /* input */ .reset(1'b0), /* input */ .load(1'b0), /* input */ .enable(enable_int), /* output [06:00] */ .count(count), /* output */ .tc(tc_o) ); 


La declaración misma del componente cy_psoc3_count7 que encontré solo para el lenguaje VHDL, parece que para Verilog está integrada en las herramientas de desarrollo. Ahora sabe aproximadamente dónde buscar los bits de ajuste en discusión.

Aquí consideramos los bits misteriosos, que se llaman SC OUT CTL o SC_OUT_CTL, pero sus valores no están documentados. No los encontré en ninguna parte. Del texto se desprende que cambian el componente STATUS_CONTROL entre modos. Pero en el archivo VHDL mencionado anteriormente C: \ Archivos de programa (x86) \ Cypress \ PSoC Creator \ 4.2 \ PSoC Creator \ warp \ lib \ lcpsoc3 \ cpsoc3.vhd

vemos por separado el contador ya conocido por nosotros
 component cy_psoc3_count7 generic(cy_period : std_logic_vector (6 downto 0) := "1111111"; cy_init_value : std_logic_vector (6 downto 0) := "0000000"; cy_route_ld : boolean := false; cy_route_en : boolean := false; cy_alt_mode : boolean := false); port (clock : in std_logic; reset : in std_logic; load : in std_logic; enable : in std_logic; count : out std_logic_vector (6 downto 0); tc : out std_logic); end component; 


por separado - estado y gestión
  attribute atomic_rtl of cy_psoc3_status : component is rtl_generic; attribute cpu_access of cy_psoc3_status : component is true; component cy_psoc3_statusi generic(cy_force_order : boolean := false; cy_md_select : std_logic_vector (6 downto 0) := "0000000"; cy_int_mask : std_logic_vector (6 downto 0) := "0000000"); port (reset : in std_logic := '0'; clock : in std_logic := '0'; status : in std_logic_vector (6 downto 0); interrupt : out std_logic); end component; attribute atomic_rtl of cy_psoc3_statusi : component is rtl_generic; attribute cpu_access of cy_psoc3_statusi : component is true; component cy_psoc3_control generic(cy_init_value : std_logic_vector (7 downto 0) := "00000000"; cy_force_order : boolean := false; cy_ctrl_mode_1 : std_logic_vector (7 downto 0) := "00000000"; cy_ctrl_mode_0 : std_logic_vector (7 downto 0) := "00000000"; cy_ext_reset : boolean := false); port (reset : in std_logic := '0'; clock : in std_logic := '0'; control : out std_logic_vector (7 downto 0)); end component; 


por separado - sincronizador
 component cy_psoc3_sync port (clock : in std_logic := '0'; sc_in : in std_logic; sc_out : out std_logic); end component; 


Repito que Verilog no tiene una versión de estas declaraciones en absoluto (solo hay modelos de comportamiento en el directorio C: \ Archivos de programa (x86) \ Cypress \ PSoC Creator \ 4.2 \ PSoC Creator \ warp \ lib \ sim, por lo que creo que la configuración de bits los programadores simples no tienen acceso a los modos. Al leer esta sección, debe tener en cuenta este hecho. Algo se proporciona únicamente como referencia, no está sujeto a nosotros los programadores.
Para habilitar el modo de contador, la salida del contador debe seleccionarse en bits SC_OUT_CTI [1: 0]. En este modo, el funcionamiento normal del registro de control no está disponible. Al mismo tiempo, el registro de estado puede usarse para operaciones de lectura, pero no debe usarlo para generar una interrupción, ya que el registro de mapeo de máscara también se usa como un registro de período de contador. El registro de período no se destruye y conserva su estado después de despertarse. Para un período de N medidas, el valor N-1 debe cargarse en el registro de período. El valor N = 1 (el período es cero) ya que el valor del divisor de frecuencia no es compatible y conducirá a una unidad constante en la salida del TC (recuento de terminales, TC). La disponibilidad del modo SYNC depende de si se usa o no el control dinámico (LD / EN). Si no se usa, no afecta el modo SYNC. Si se usa, el modo SYNC no está disponible.

21.3.3.5 Modo de sincronización


Como se muestra en la Figura 21-37, el registro de estado puede funcionar como un reloj dual de 4 bits sincronizado con el valor SC_CLK actual si se establece el bit SYNC MD. Este modo se puede usar para implementar la sincronización local de señales asíncronas (por ejemplo, entradas GPIO). En este caso, las señales sincronizadas se seleccionan de SC_IN [3: 0], las salidas se enrutan a los contactos SC_IO_OUT [3: 0] y SYNC MD cambia automáticamente los contactos SC_IO al modo de salida. En este modo, el funcionamiento normal del registro de estado no está disponible, y el modo de bit de estado fijo se desactiva por la fuerza, independientemente de la configuración del control de modo. Este modo no afecta el registro de control. El contador aún se puede usar, pero con limitaciones. En este modo de operación, no se pueden usar entradas dinámicas (LD / EN).


Figura 21-37. Modo sincrónico

21.3.3.6 Reloj de estado y control


Los registros de control y estado requieren una selección de reloj en cualquiera de los siguientes modos de funcionamiento:

  • registro de estado con cualquier bit en modo fijo con borrado después de leer,
  • registro de control en modo contador,
  • modo síncrono

El tiempo se asigna en el reloj y el módulo de reinicio. Ver 21.3.4. Reloj y módulo de control de reinicio.

21.3.3.7 Registro de control auxiliar


El registro de control auxiliar para lectura y escritura es un registro especial que controla el equipo UDB de hardware. Este registro permite que la CPU o el DMA controlen dinámicamente las interrupciones, los FIFO y la operación del contador. Los bits de los registros y su descripción se dan a continuación:

Registro de control auxiliar
7 76 65 54 43210 0
CNT
START
INT ENFIFO1
LVL
FIFO0
LVL
FIFO1
CLR
FIFO0
CLR

Borrar FIFO0 y FIFO1 (Borrar FIFO0, Borrar FIFO1)


Los bits FIFO0 CLR y FIFO1 CLR se utilizan para restablecer el estado de los FIFO correspondientes. Cuando se escribe 1 en estos bits, se restablece el estado de la FIFO correspondiente. Para continuar con la operación FIFO, es necesario escribir 0. Estos bits permanecen amartillados Los FIFO funcionan como memorias intermedias simples de un solo byte sin estado.

Nivel FIFO0 y FIFO1 (Nivel FIFO0, Nivel FIFO1)


Los bits FIFO0 LVL y FIFO1 LVL establecen el nivel en el que un FIFO de 4 bytes eleva el estado del bus (cuando el bus lee o escribe en FIFO). El valor del estado del bus FIFO depende de la dirección configurada, como se muestra en la tabla a continuación.

Cuadro 21-21. Bits de control de nivel FIFO.
FIFOx
LVL
Modo de entrada
(El autobús escribe a FIFO)
Modo de salida
(El autobús lee de FIFO)
0 0No lleno
Puede escribir al menos 1 byte.
No vacio
Al menos 1 byte está disponible para leer.
1Devastado por al menos la mitad.
Puede escribir al menos 2 bytes.
Al menos medio lleno.
Al menos 2 bytes están disponibles para leer.

Habilitar interrupción


Cuando se activa la lógica de generación del registro de estado, el bit INT EN permite que pase la señal de interrupción generada.

¿Iniciar contador / cuenta? (Cuenta de inicio)


El bit CNT START se puede usar para iniciar y detener el contador (solo disponible si los bits SC_OUT_CTL [1: 0] están configurados para el modo de salida del contador).

21.3.3.8 Resumen de registros de gestión y estado


La siguiente tabla resume las funciones de los registros de control y estado. Tenga en cuenta que los registros de máscara y control se combinan con contadores y registros de período, y el valor de estos registros no depende del modo de funcionamiento.

Cuadro 21-22. Un breve resumen del funcionamiento de los registros de gestión y estado.
El modoGerencia / Contador
(Control / conteo)
Estado / Sincronización
(Estado / SINCRONIZACIÓN)
Superposición de máscara / período
(Máscara / período)
ControlControl fueraStatus In o SYNCMáscara de estado de superposición
ContadorContrarrestarPeriodo de contador a (Periodo de conteo)
EstadoControlar o contarEstado enMáscara de estado de superposición
Sincronización (SYNC)Sincronización (SYNC)No disponible b (NA)

a. - tenga en cuenta que en el modo contador, el registro de superposición de máscara funciona como un registro de período y no puede funcionar como un registro de máscara sobre. En consecuencia, la salida de interrupción no está disponible cuando se activa el modo contador.

b. - tenga en cuenta que en el modo de sincronización el registro de estado no está disponible y, por lo tanto, es imposible utilizar el registro de superposición de máscara. Sin embargo, se puede usar como un registro de período para el modo contador.

Continuará ...

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


All Articles