4.3 Implementación de cada etapa
4.3.5 DMA de adquisición
Capítulo 4: Arquitectura de adquisición
Tabla 4.14: Entradas y salidas del bloque de disparo (Simulink)
Como se puede observar en la tabla 4.14, los datos de ambos canales, y los niveles de disparo emplean la misma representación en punto fijo que la interfaz del ADC. Por otro lado, se utilizan enteros sin signo de 32 bits para las cantidades de muestras a adquirir, NPRE y NPOS. El modelo cuenta con señales de control que permiten seleccionar la fuente de disparo (ch select), el flanco (mode) y la habilitación (trig enb). Por otro lado, las señales de salida, permiten controlar la adquisición y acceder al estado actual de la máquina de disparo.
Tabla 4.15: Registros implementados en interfaz Avalon-MM de control
Finalmente, en la tabla 4.15 se listan los registros que forman parte de la interfaz de estado y control conectada al procesador, de tipo Avalon-MM 32 bits esclavo. Como se puede observar, la interfaz le permite al software acceder al estado de disparo, establecer los niveles de disparo, cantidad de muestras, etc.
Capítulo 4: Arquitectura de adquisición
• Avalon-MM a Avalon-MM: El bloque cuenta con dos puertos Avalon-MM maestro lo que le permite, por ejemplo, transferir datos entre dos sectores de memoria.
• Avalon-MM a Avalon-ST: En este caso, el componente utiliza un puerto Avalon-MM maestro para leer de manera secuencial los datos y generar un streaming a través de una interfaz Avalon-ST source.
• Avalon-ST a Avalon-MM: Bajo esta modalidad, los datos son recibidos a través de una interfaz Avalon-ST sink. Por otro lado, se implementa una interfaz Avalon-MM maestro que permite escribir de manera secuencial la información en un dispositivo tipo Avalon-MM esclavo.
En el diseño se utiliza un motor DMA configurado bajo la tercera modalidad, es decir, Avalon-ST a Avalon-MM. Bajo este modo de operación, la arquitectura interna del componente es la siguiente [73]:
Figura 4.17: Diagrama en bloques DMA adquisición
Cada transferencia se asocia a un descriptor cuyo tamaño, 128 bits o 256 bits, depende de la configuración del bloque DMA en Platform Designer. Los descriptores cuentan con diversos campos, entre los que destacan: cantidad de bytes a transferir, dirección de memoria de lectura y dirección de memoria de escritura. El procesador es el encargado de construir los descriptores de las transacciones a realizar y escribirlos en el bloque DMA a través de un puerto Avalon-MM esclavo dedicado.
Por otro lado, en todas las configuraciones se implementa una interfaz Avalon-MM de propósito general (CSR) que permite acceder al estado del motor DMA y controlarlo. Adicionalmente, la configuración del componente brinda la posibilidad de habilitar un puerto de respuesta de tipo Avalon-MM esclavo o Avalon-ST source. Esta interfaz brinda datos sobre las transferencias realizadas, informando la cantidad de bytes transferidos, si ocurrió algún error, etc.
Capítulo 4: Arquitectura de adquisición A continuación, se presenta una tabla con los parámetros de configuración, en Platform Designer, para el caso específico del motor DMA de adquisición:
Tabla 4.16: Configuración bloque DMA adquisición
Como se puede observar, el bloque opera bajo el modo Avalon-ST a Avalon-MM con un tamaño de palabra de 64 bits. El periférico implementa internamente memorias FIFO (First In First Out) en la interfaz de datos y de descriptores. El buffer FIFO de datos permite absorber un posible retardo o latencia en el puerto Avalon-MM maestro de escritura, en este caso, asociado al acceso de memoria RAM DDR3. De este modo, se evita una potencial pérdida de datos en el flujo de entrada.
Por otro lado, la memoria FIFO de descriptores permite almacenar en el motor DMA múltiples solicitudes de transacciones, de forma que sean ejecutadas de manera secuencial a la máxima velocidad posible. En el caso del motor DMA de ADQ, se emplea un tamaño de 64 palabras para la FIFO de datos y 8 palabras para la FIFO de descriptores.
La habilitación del puerto de respuesta, de tipo Avalon-MM, le permite al procesador acceder a la cantidad de bytes transferidos en la última transacción. Este parámetro resulta de vital importancia para la arquitectura de adquisición, debido a que se asocia al offset de datos en el buffer circular.
Otra configuración importante es la habilitación del soporte de paquetes en la interfaz Avalon-ST de entrada. De esta forma, el bloque de disparo puede detener el flujo de adquisición utilizando la señal end of packet.
La interfaz Avalon-MM de escritura, conectada al controlador de memoria RAM, soporta ráfagas de datos, es decir, transferencias continuas e ininterrumpidas de información. En este caso se emplea un tamaño de 8 palabras, valor seleccionado de acuerdo al tipo de memoria RAM utilizada. Por último, la máxima cantidad de datos a transferir se relacionada con el mayor tamaño posible del buffer circular, asociado a la base de tiempo de 1 s/div. A continuación, en la tabla 4.17, se enumeran los tamaños de buffer para cada escala horizontal implementada:
Parámetro Configuración
Modo ST a MM
Ancho datos 64 bits
Tamaño FIFO datos 64 palabras
Tamaño FIFO descriptores 8 descriptores
Puerto respuesta Habilitado (MM)
Tamaño máximo de transferencia 128 MiB
Tipo de transferencia Palabras completas
Modo ráfaga Habilitado (8 palabras)
Ráfaga programable Deshabilitada
Stride addressing Deshabilitado
Soporte de paquetes (Avalon-ST) Habilitado Soporte de errores (Avalon-ST) Deshabilitado Modulo de pre-lectura descriptores Deshabilitado
Capítulo 4: Arquitectura de adquisición
Tabla 4.17: Memoria requerida para cada escala horizontal
Para el cálculo, se tiene en cuenta que cada muestra está formada por 4 bytes y que el sistema cuenta con 2 canales. Teniendo en cuenta lo mencionado, se obtiene a continuación el mayor tamaño de buffer:
NTOT(máx)=FS⋅NDIV⋅TDIV=(1MSa/s)⋅(10 div).(1s/div)=10MSa (4.6)
MBUFF(máx)=NCH⋅NTOT⋅NBYTES=(2canales)⋅(10MSa)⋅(4bytes/Sa)=80x10⁶bytes (4.7) Se requiere un máximo de 80.000.000 bytes (80 MB) o aproximadamente 76,3 MiB si se realiza la conversión al sistema de base 2. Por otro lado, con respecto al ancho de banda, la velocidad de flujos a memoria RAM es constante e igual a:
BRAM=(2canales)⋅(1MSa/s)⋅(32bits/Sa)=64Mbit/s (4.8) Es decir, durante el periodo de adquisición de datos, se transfieren 64.000.000 bits por segundo, equivalentes a 8 MB/s (7,63 MiB/s). Cabe destacar que la velocidad requerida es órdenes de magnitud menor al ancho de banda disponible para la arquitectura utilizada [74].
Tabla 4.18: Conexiones para bloque DMA adquisición (Platform Designer)
10 μs/div 100 400 800
20 μs/div 200 800 1,6 k
50 μs/div 500 2 k 4 k
0,1 ms/div 1 k 4 k 8 k
0,2 ms/div 2 k 8 k 16 k
0,5 ms/div 5 k 20 k 40 k
1 ms/div 10 k 40 k 80 k
2 ms/div 20 k 80 k 160 k
5 ms/div 50 k 200 k 400 k
10 ms /div 100 k 400 k 800 k
20 ms/div 200 k 800 k 1,6 M
50 ms/div 500 k 2 M 4 M
0,1 s/div 1 M 4 M 8 M
0,2 s/div 2 M 8 M 16 M
0,5 s/div 5 M 20 M 40 M
1 s/div 10 M 40 M 80 M
Escala horizontal
Cantidad de muestras (Sa)
Memoria por canal (bytes)
Memoria total (bytes)
Descripción Tipo Ancho Clock asociado Conexión
Clock principal Clock (IN) - - Salida clock 1 MHz (PLL)
Reset principal Reset (IN) - Clock principal (1 MHz) HPS-to-FPGA reset (HPS) Entrada de datos Avalon-ST (SINK) 64 bits Clock principal (1 MHz) Salida de datos (sistema disparo) Puerto de escritura Avalon-MM (M) 64 bits Clock principal (1 MHz) Puente FPGA-to-SDRAM 0 (HPS) Interfaz de estado y control Avalon-MM (S) 32 bits Clock principal (1 MHz) Puente lightweight HPS-to-FPGA (HPS) Escritura de descriptores Avalon-MM (S) 128 bits Clock principal (1 MHz) Puente lightweight HPS-to-FPGA (HPS) Puerto de respuesta Avalon-MM (S) 32 bits Clock principal (1 MHz) Puente lightweight HPS-to-FPGA (HPS) Salida de interrupción IRQ (OUT) - Clock principal (1 MHz) -
Capítulo 4: Arquitectura de adquisición Finalmente, en la tabla 4.18, se listan las conexiones en Platform Designer del bloque DMA con el resto del sistema. La interfaces de estado y control, de descriptores y de respuesta se conectan al puente lightweight HPS-to-FPGA del procesador. El bloque funciona en su totalidad bajo un único reloj de 1 MHz, asociado a la frecuencia de muestreo, el cual determina la velocidad de entrada y salida de datos. Finalmente, cabe mencionar que el motor DMA cuenta con una salida de interrupción, no utilizada en el diseño.