Full text
1 Equation Chapter 1 Section 1 Proyecto Fin de Máster Máster Universitario en Ingeniería en Electrónica, Robótica y Automática Diseño e implementación de un sistema de adquisición multicanal para experimentos de radiación Dpto. de Ingeniería Electrónica Escuela Técnica Superior de Ingeniería Universidad de Sevilla Autor: José Ignacio López Flores Tutores: Fernando Muñoz Chavero José María Hinojo Montero Sevilla, 2024
Índice de Tablas 2
Proyecto Fin de Máster Máster universitario en Ingeniería en Electrónica, Robótica y Automática Diseño e implementación de un sistema de adquisición multicanal para experimentos de radiación Autor: José Ignacio López Flores Tutor y publicador: Fernando Muñoz Chavero Catedrático de Universidad Tutor: José María Hinojo Montero Investigador postdoctoral Dpto. de Ingeniería Electrónica Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2024
Índice de Tablas 4
Proyecto Fin de Carrera: Diseño e implementación de un sistema de adquisición multicanal para experimentos de radiación Autor: José Ignacio López Flores Tutor: Fernando Muñoz Chavero José María Hinojo Montero El tribunal nombrado para juzgar el Proyecto arriba indicado, compuesto por los siguientes miembros: Presidente: Vocales: Secretario: Acuerdan otorgarle la calificación de: Sevilla, 2024 El Secretario del Tribunal
Índice de Tablas 6
A mi familia A mis maestros
Índice de Tablas 8
Agradecimientos Agradecer especialmente a mi familia y amigos que me han apoyado a lo largo de todos estos años en mi etapa de estudiante del máster. Quisiera, además, señalar la profesionalidad de los profesores que he tenido durante todo mi periodo académico, demostrando sus ganas y pasión por la docencia.
Índice de Tablas 16 ÍNDICE DE TABLAS Tabla 2-1. Dimensiones y número de pines de las tarjetas SD 6 Tabla 2-2: Velocidad de la categoría velocidad [11] 8 Tabla 2-3: Velocidad de la categoría velocidad UHS por bus “convencional” [11] 8 Tabla 2-4: Velocidad de la categoría velocidad UHS por bus UHS [11] 8 Tabla 2-5: Velocidad de la categoría velocidad de video 9 Tabla 2-6: Estructura de paquete en el protocolo SD bus 10 Tabla 2-7: Tipos de la capa física del protocolo Ethernet. 12 Tabla 2-8: Señales de la interfaz MII. 12 Tabla 3-1: Estructura dato para tarjeta SD 20 Tabla 3-2: Estructura de dato para Ethernet 20 Tabla 4-1: Entidad de Data Writer SD 23 Tabla 4-2: Señales internas de Data Writer SD 24 Tabla 4-3: Descripción de estados FSM de Data Writer SD 25 Tabla 4-4: Evolución de estados de la FSM de Data Writer SD 25 Tabla 4-5: Entidad de FIFO SD 26 Tabla 4-6: Entidad de FSM SD (Controlador SD) 27 Tabla 4-7: Atributos de la estructura del puerto sd_int_o 28 Tabla 4-8: Atributos de la estructura para el puerto sd_int_i 29 Tabla 4-9: Señales internas de FSM SD (Controlador SD) 29 Tabla 4-10: Descripción de estados de FSM SD (Controlador SD) 30 Tabla 4-11: Evolución de estados de FSM SD (Controlador SD) 32 Tabla 4-12: Entidad del HCI 34 Tabla 4-13: Descripción de estados de FSM de la HCI 35 Tabla 4-14: Evolución de los estados de HCI 37 Tabla 4-15: Entidad del MMCM 38 Tabla 5-1: Entidad de Data Writer Eth 41 Tabla 5-2: Descripción de estados de Data Writer Eth 42 Tabla 5-3: Evolución de los estados de Data Writer Eth 43 Tabla 5-4: Entidad de FSM Eth 44 Tabla 5-5: Señales internas de FSM Eth 46
Tabla 5-6: Descripción de los estados de FSM Eth 48 Tabla 5-7: Evolución de los estados de la FSM Eth 51 Tabla 5-8: Distribución de los datos dentro de la memoria BRAM 52 Tabla 5-9: Entidad de la memoria BRAM 54 Tabla 5-10: Entidad de Puente AXI 55 Tabla 5-11: Direcciones de memoria de la IP Ethernet Lite para el Buffer PING TX 56 Tabla 5-12: Direcciones de memoria de la IP Ethernet Lite para los registros MDIO 57 Tabla 5-13 Direcciones de memoria de la IP Ethernet Lite para los registros de transmisión 57 Tabla 5-14: Direcciones de memoria de la IP Ethernet Lite para el Buffer PONG TX 57 Tabla 5-15: Direcciones de memoria de la IP Ethernet Lite para el Buffer PING RX 58 Tabla 5-16: Direcciones de memoria de la IP Ethernet Lite para el Buffer PONG RX 58 Tabla 5-17: Entidad de la IP Ethernet Lite 60
Índice de Figuras 18 ÍNDICE DE FIGURAS Figura 1-1: Categorización de impactos de partículas sobre detectores de radiación [3] 1 Figura 2-1: Esquema de la estructura del sistema de adquisición de datos 5 Figura 2-2: Vista superior de la placa Neso 2.0 6 Figura 2-3: Dimensiones y número de pines de las tarjetas SD [10] 7 Figura 2-4: Ejemplos de logotipos de las categorías de velocidades (Izquierda Categoría velocidad, Centro Categoría velocidad UHS, Derecha Categoría velocidad Video) [11] 7 Figura 2-5: Esquema de ejemplo de envío de múltiples bloques de escritura. 10 Figura 2-6: Esquema de la estructura de los paquetes de datos. 11 Figura 2-7: Algoritmo del método CSMA/CD [17] 13 Figura 2-8: Esquema de LAN con conexiones Full-Dúplex 14 Figura 2-9: Esquema de funcionamiento del transceiver [20] 17 Figura 3-1: Esquema general del sistema completo 19 Figura 5-1: Transferencia de escritura handshake. 55 Figura 5-2: Transferencia de lectura handshake. 55 Figura 6-1: Test 1 en VUnit 62 Figura 6-2: Envío de una palabra a la tarjeta SD y relleno del bloque 62 Figura 6-3: Test 2 en VUnit 63 Figura 6-4: Test 3 en VUnit 63 Figura 6-5: Test 4 en VUnit (configuración SPI) 64 Figura 6-6: Test 4 en VUnit (lectura de dirección a escribir) 64 Figura 6-7: Test 4 en VUnit (Vaciamiento FIFO) 65 Figura 6-8: Test 4 en VUnit (escritura en bloque 0) 65 Figura 6-9: Test 4 en VUnit (segundo arranque del sistema) 66 Figura 6-10: Test 5 en VUnit 66 Figura 6-11: Test 5 en VUnit (zoom) 67 Figura 6-12: Captura de 6 ms de señales de la comunicación SPI 68 Figura 6-13: Contenido almacenado en tarjeta SD 68 Figura 6-14: Captura de paquete Ethernet 69
Índice de Figuras 20 Notación FPGA Field Programmable Gate Array Eth Ethernet SD Security Card Mbps Megabits por segundo Gbps Gigabits por segundo VHDL Very high speed integrated circuit Hardware Description Language SPI Serial Peripheral Interface LUT Look Up Table BRAM Block RAM RAM Random Access Memory MMCM Mixed Mode Clock Manager PLL Phase Locked Loop GB Giga byte SDCD SD Standard Capacity SDHC SD High Capacity SDXC SD eXtended Capacity SDUC SD Ultra Capacity UHS Ultra-High Speed SFD Start Frame Delimiter CRC Cyclic Redundancy Check FCS Frame Check Sequence MAC Controlador de Acceso al Medio PHY Transceiver Ehternet MII Media Independent interface MDIO Management Data Input Output EMI Interferencia Electromagnética Ω Ohmio FIFO First Input First Output HCI Host Controller Interface
IP Intellectual Property
1 1 INTRODUCCIÓN a adquisición de datos se entiende como el proceso por el cual se obtiene muestras de una señal asociada a las cualidades, características o singularidades de un fenómeno o sustancia para su posterior medición y análisis. Este proceso es esencial dentro de cualquier estudio científico y/o tecnológico, ya que en base a la información y datos obtenidos de distintos experimentos se cimenta la construcción de hipótesis que darán lugar a teorías que expliquen el comportamiento de aquello que esté bajo estudio. De esta manera, con el fin de conseguir un razonamiento final más fidedigno es indispensable tener una adquisición de datos precisa. Áreas donde el diseño de sistema de adquisición cobra una especial relevancia son la física nuclear y de partículas. Estas áreas se corresponden con campos de la física que estudian, respectivamente, el comportamiento y las propiedades a nivel atómico y subatómico de la materia [1]. Estas son objeto de estudio donde las señales analizadas son difíciles de interpretar, pues debido a su propia naturaleza, tienen un tiempo de existencia corto y con variaciones apenas perceptibles respecto a otras señales con cualidades, características y orígenes diferentes [2]. Por tanto, es indispensable sistemas de adquisición rápidos y precisos que posean la capacidad de manejar grandes volúmenes de datos, para así obtener la suficiente información para un correcto análisis, más aún en los estudios donde procesamiento de estas señales se realiza mediante algoritmos de Machine Learning [2], en los cuales ha dado un gran empuje a la categorización de señales con variaciones de energías mínimas, como se expuso en el trabajo realizado por la Universidad de Huelva (J.L Flores et al, 2016), representado en la Figura 1-1 [3]. Figura 1-1: Categorización de impactos de partículas sobre detectores de radiación [3] De esta forma, , la adquisición de datos es crítica en los diferentes ensayos que se realizan dentro del estudio de la física nuclear y de partículas. En estas disciplinas existen experimentos de radiación que tienen asociados fenómenos con tiempos característicos del orden de centenares de nanosegundos [2] [3]. Por tanto, a la hora de medir dichos fenómenos, es crucial emplear dispositivos lo suficientemente rápidos, con precisión y resolución suficientes y altamente fiables. Tradicionalmente, para abordar este problema se emplearon los procesadores de señales digitales (DSP, por sus siglas en inglés), ya que estos tienen asociados una alta tasa de muestreo. Sin embargo, los DSP presentan ciertas desventajas, como una baja velocidad de procesamiento, uso obligatorio de funciones simples y un alto coste computacional [4]. Son por estas razones que los DSP han sido reemplazados por las Field Programmable Gate Array (FPGA, por sus siglas en inglés), las cuales pueden trabajar con una L
Introducción 2 alta velocidad de procesamiento, gracias a su capacidad de procesar varias señales en paralelo. Además, dado su capacidad de reprogramación, permiten que un mismo sistema de adquisición pueda ser empleado en varios experimentos sin más que modificar la lógica implementada, incluso añadir la capacidad de monitorear y depurar señales internas. Adicionalmente, las FPGAs ofrecen más características favorables en el ámbito de la adquisición de datos, como una alta fiabilidad y una gran flexibilidad a la hora de hacer realizar cualquier diseño robusto [5]. De la misma forma que en la gestión de datos procedentes de experimentos de radiación, es crucial enviar la información de manera rápida y eficiente debido a las altas tasas de generación de datos que tienes asociados dichos experimentos. En estos sistemas, un gran número de detectores y detectores generan grandes considerables de datos en cortos periodos de tiempo, de modo que exige el uso de interfaces de comunicación de alta velocidad para evitar cuellos de botella que provoque la pérdida de información. En numerosos estudios, es común el uso de la interfaz USB, la cual proporciona una velocidad en torno a los centenares de Mbps, incluso los Gbps en el caso del USB 3.0, además de ser una tecnología ya integrada en la mayoría de los ordenadores [6]. Por otro lado, en la industria es habitual es uso de la interfaz Ethernet, la cual ofrece una gran disponibilidad de conexión con elementos remotos o lejanos, con una creciente mejora de sus prestaciones y rendimiento, permitiendo velocidades superiores a los Gbps. En este contexto, surge el proyecto STUMM DONES, el cual consiste en la creación de un sistema de adquisición de datos multicanal donde se incluye detectores de radiación para experimentos donde se analizará la radiación de neutrones y rayos gamma, donde la tasa de datos es del orden de microsegundos. Dicho proyecto, se ha desarrollado en colaboración con la empresa Alter Technology TÜV. 1.1 Objetivos El diseño del sistema de adquisición tendrá como objetivos los siguientes puntos: • Procesamiento de datos procedentes de múltiples canales con tasas de recepción de datos de 6 𝜇s. • Empleo de la interfaz de comunicación Ethernet para la comunicación con un elemento de procesamiento de datos remotos a una velocidad de 100 Mbps. • Almacenamiento de seguridad de los datos en una tarjeta SD a modo de backup, mediante el uso de la interfaz SPI a una velocidad de 90 Mbps. • Descripción hardware del sistema mediante el lenguaje VHDL, minimizando el uso de recursos empleados en la FPGA (Neso 2.0). • Datos procedentes de los detectores de radiación síncronos con un reloj de 20 MHz, por tanto, diseñar el sistema evadiendo los problemas de clock-crossing. • Empaquetamiento específico de los datos para sendas interfaces. 1.2 Organización del documento La presente memoria de Trabajo fin de Máster está organizada como sigue: • Capítulo 1: introducción al proyecto, junto con la exposición de los objetivos y la organización de la memoria del Trabajo fin de Máster. • Capítulo 2: presentación de los diferentes sistemas involucrados en el almacenamiento y procesamiento de los datos de radiación y sus componentes. • Capítulo 3: vista general de la arquitectura diseñada. • Capítulo 4: descripción de la funcionalidad de los componentes responsables del envío de los datos hacia la tarjeta SD. • Capítulos 5: descripción de la funcionalidad de los componentes responsables del envío de los datos mediante el protocolo de comunicación Ethernet.
• Capítulo 6: presentación de los resultados de las distintas pruebas realizadas para la validación del sistema. • Capítulo 7: conclusiones y líneas futuras. • Referencias: documentación consultada.
Descripción del sistema de almacenamiento y procesamiento 10 Figura 2-5: Esquema de ejemplo de envío de múltiples bloques de escritura. Además, en este protocolo, cada paquete debe empezar por un bit de start y un bit de transmisión y terminar con un CRC de 7 bits para los identificadores y un CRC 16 bits para los datos. Por último, se debe incluir un bit de end. En el caso donde el paquete sea una respuesta, este no tendrá CRC. La estructura de paquete que sigue los identificadores viene explicada en la Tabla 2-6 donde se observa qué campos lo forman y los valores que toman estos: Tabla 2-6: Estructura de paquete en el protocolo SD bus Start Bit Transmitter bit Contenido CRC End bit Campo 0 (1) (2) (3) 1 Dato (1) El bit Transmitter indica si el contenido del paquete está asociado a un comando con el valor lógico ‘1’o a una respuesta con ‘0’. Este bit no existe en los paquetes de dato. (2) La longitud total del paquete puede variar en función del tipo de respuesta, variando entre los 48 y 136 bits. Dentro de este campo, ‘Contenido’ se divide en: índice de comando [6 bits], el cual indica el tipo de comando a ejecutar, y argumentos [32 o 121 bits] que serán los parámetros asociados al índice de comando. Dentro de la comunicación SPI este campo tiene asociado 38 bits, donde 6 son para definir el comando enviado y los 32 bits restantes están reservados para el argumento de dicho comando. (3) Campo de checksum de 7 bits que valida el envío de los datos. Los paquetes de datos mantienen una estructura similar a los identificadores, comienzan con un bit de start, pero sin el bit de transmisión y terminan con un bit de finalización, junto con un CRC de 16 bits. Sin embargo, en este caso, el campo ‘Contenido’ tiene una longitud mayor, alcanzando típicamente los 512 bytes. Dentro de dicho campo, la distribución de los datos sigue una estructura que depende del número de líneas utilizadas en el bus DAT, siendo posible una o cuatro líneas. Si se emplea una línea, los datos estarán serializados a nivel de un solo bit, estos se transferirán divididos en paquetes de tamaño de un byte donde en cada byte, el primer bit en enviarse será el más significativo (MSB) y el último el menos significativo (LSB) de la cadena. Sin embargo, el orden de los bytes enviados será del byte menos significativo hasta el más significativo. En el caso que se utilice cuatro líneas, cada una de estas mantiene la estructura previa, inicio formado por el bit de start y el final por el bit end y campo CRC, además de enviar primero el byte menos significativo y el último el más significativo. Sin embargo, en esta situación, los bits del byte enviado entre las cuatro líneas, de modo que, se envían en primer lugar los 4 bits más significativos y, posteriormente, los menos significativos. En la Figura 2-6 aparece un esquema explicativo de la estructura de los paquetes de datos en función de las líneas empleadas en el bus DAT.
11 Diseño e implementación de un sistema de adquisición multicanal para experimentos de radiación Figura 2-6: Esquema de la estructura de los paquetes de datos. Asimismo, este protocolo ofrece una alternativa de formato para los datos transmitidos. En este caso, el campo ‘Contenido’ deja de estar divido en bytes, de manera que, al enviarse la información contenida en este campo, los bits estarían serializado desde el bit más significativo de los datos hasta el bit menos significativo. La opción emplear una o cuatro líneas para la transmisión se mantiene, y en caso de que se emplee cuatro líneas los datos quedarían divididos en nibbles (cadena o grupo de 4 bits) de manera que se envían primero el nibble más significativo y último el menos significativo. 2.2.3.2 Protocolo SPI Las tarjetas SD permiten otra opción de comunicación basada en el protocolo SPI, un estándar ampliamente conocido, de manera que facilita el diseño de un máster que gestión la comunicación. Sin embargo, trae el inconveniente de no ofrecer un ancho de banda igual de rápido que el protocolo basado en el bus UHS. El protocolo SPI define únicamente la capa física de la comunicación, por tanto, a nivel de enlace se mantiene la misma lógica de transferencia de datos explicada en el protocolo basado en el bus SD, empleando los mismos paquetes de identificadores y de datos. En la transferencia de datos en tarjetas SD, el protocolo SPI está basado en paquetes de datos de tamaño byte, a diferencia del protocolo bus UHS que transfiere los paquetes a nivel de bit. Además, la transferencia de datos debe estar alienada con la activación de la Chip Select (CS), la cual marcará el comienzo de la comunicación. Por tanto, los comandos y los bloques de datos dependerán de dicha señal y se encontrarán en delimitados en periodos de tiempo de 8 ciclos de reloj. Es necesario mencionar que en el caso de emplear este protocolo y tarjetas del tipo SDHC y SDXC, el tamaño del bloque de dato debe ser 512 bytes. Por esta razón, antes de empezar a transmitir información que se desee almacenar, es imprescindible enviar un comando a la tarjeta, de forma que establezca que los datos que recibirá tendrán dicha longitud [14]. 2.2.4 Tarjeta utilizada La tarjeta empleada para este proyecto será una tarjeta microSD de 32 GB de Kingston Technology, la cual da soporte a las categorías de velocidad de video “V30”, UHS “U3” y velocidad estándar “10”, además de incorporar el bus de interfaz UHS-I. De manera que, las velocidades con las que puede trabajar esta tarjeta son entre 30 y 100 Mbps, tanto en escritura como lectura. Adicionalmente, el fabricante en su hoja de datos afirma que es apto para entornos industriales, ya que la tarjeta puede operar en ambientes con temperaturas comprendidas entre los -25 ºC y 85 ºC [15]. 2.3 Protocolo Ethernet El protocolo Ethernet es un estándar de comunicaciones relativo a la gestión de la capa física y de enlace dentro de una red de área local (LAN, por sus siglas en inglés). Este protocolo viene recogido en el estándar IEEE
Descripción del sistema de almacenamiento y procesamiento 12 802.3, en el cual se explican el formato de los paquetes de dato; los diferentes modos de operación del enlace, Half-Dúplex y Full-Dúplex; el uso del controlador de acceso al medio (MAC, por sus siglas en inglés) y las velocidades de las interfaces independientes al medio (MII, por sus siglas en inglés). Seguidamente, se explicarán cada una de las características mencionadas, dentro de la capa a la que pertenecen, y cómo se incorporan dentro de un dispositivo, el cual se encargará del establecimiento de una comunicación basada en el protocolo Ethernet. 2.3.1 Capa física La capa física dentro del protocolo Ethernet se diferencian en varios tipos en función de la velocidad de transmisión con la que desee trabajar. Además, dependiendo del tipo de capa física, el tipo de material y estructura que debe tener el cable del enlace. En la Tabla 2-7 se recoge los principales tipos. Tabla 2-7: Tipos de la capa física del protocolo Ethernet. La distancia máxima que puede alcanzar un enlace Ethernet mediante un cable de cobre es de 100 m. Sin embargo, a través de conexiones de fibra óptica es posible aumentar esta distancia hasta los 550 m, además de proporcionar una mayor velocidad de transmisión [16]. Además, el estándar (estándar IEEE 802.3u) ofrece opcionalmente el uso de una interfaz que facilita la comunicación entre un controlador de acceso al medio, MAC, y un dispositivo encargado de trabajar a nivel físico en el protocolo Ethernet, un transceiver (PLS o PHY), favoreciendo a la interoperabilidad entre distintos tipos de MAC y PHY entre sí y a la independencia de la capa físico en el diseño. Esta interfaz se denomina como Media Independent Interface (MII, por sus siglas en inglés). La MII es capaz de soportar las velocidades de 10 y 100 Mbps a través de puertos de transmisión y recepción de 4 bits (nibble). Esta interfaz la conforma las siguientes señales mostradas en la Tabla 2-8. Tabla 2-8: Señales de la interfaz MII. Tipo de velocidad Velocidad de transmisión Cable 10Base-T 10 Mbps Par trenzado de cobre categoría UTP3 100Base-Tx (Fast Ethernet) 1000 Mbps Par trenzado de cobre categoría UTP5 1000Base-T 1 Gbps Par trenzado de cobre categoría UTP5u o UTP6 Nombre Fuente Descripción TX_CLK PHY Reloj para la sincronización de los datos de transmisión. RX_CLK PHY Reloj para la sincronización de los datos de recepción. RX_DATA[3:0] PHY Bus de tamaño nibble para la transferencia de datos desde el PHY al MAC. TX_DATA[3:0] MAC Bus de tamaño nibble para la transferencia de datos desde el MAC al PHY. DV PHY Señal indicativa de validez dato recibido. RX_ER PHY Señal indicativa de error en dato recibido. TX_EN MAC Señal de habilitación de transmisión. CRS PHY Señal indicativa de medio compartido en uso. COL PHY Señal indicativa de colisión en el enlace.
13 Diseño e implementación de un sistema de adquisición multicanal para experimentos de radiación 2.3.2 Capa de enlace A nivel de enlace, se definen dos modos de funcionamiento del protocolo Ethernet: Half-Dúplex o Full-Dúplex, así como el formato de la trama de datos. 2.3.2.1 Half-Dúplex En el modo de funcionamiento Half-Duplex, dos o más nodos o estaciones tienen acceso a un mismo medio compartido, de modo que se emplea el método de acceso al medio CSMA/CD con el fin de asegurar una correcta transmisión de datos. Este sigue el algoritmo de la Figura 2-7. 1. Un nodo que quiera transmitir un dato debe esperar cierta cantidad de tiempo con el medio sin transmitir, es decir, sin que ningún otro nodo esté usando el enlace. 2. Después de este periodo de silencio, empieza su transmisión. A partir de este punto entran en juego dos casuísticas diferentes. a. La comunicación es Full-Duplex o no ocurre ninguna colisión, por tanto, la transmisión continúa hasta que esta termina, volviendo al estado de espera. b. La comunicación es Half-Duplex y ocurre una colisión, ya que, antes de terminar la transmisión, otro nodo comienza también transmitir. i. Ambos nodos deben enviar seguir transmitiendo la señal Jam durante un periodo predefinido, de forma que se asegure que la colisión se propague por el resto del sistema. ii. El nodo permanece en silencio una cantidad aleatoria de tiempo (backoff) antes de internar nuevamente a transmitir. Figura 2-7: Algoritmo del método CSMA/CD [17] 2.3.2.2 Full-Dúplex El modo de funcionamiento Full-Dúplex no tiene asociado un control del medio, ya que este es completamente dedicado entre dos estaciones, por tanto, no necesita posponer el comienzo de la transmisión, monitorizar el estado del enlace. En esta situación, la comunicación es punto a punto, de manera que se debe respetar lo siguiente: • El enlace físico debe tener la capacidad de soportar, de manera simultánea la transmisión y la recepción
Descripción del sistema de almacenamiento y procesamiento 14 sin ninguna interferencia. • Solo puede existir 2 estaciones conectadas al enlace, por tanto, no hay restricciones por uso de un medio compartido, ni, por tanto, algoritmos de acceso múltiple. • Ambas estaciones dentro de la red LAN deber ser capaces de poder configurarse en modos de operación Full-Dúplex. Este tipo de funcionamiento suele estar destinado a la conexión de un nodo con un switch, de manera que cada puerto del Switch está conectado a dispositivos individuales dentro de una LAN [18]. Esto último puede verse ejemplificado en la Figura 2-8, donde los diferentes dispositivos se comunican entre sí a través del switch. Figura 2-8: Esquema de LAN con conexiones Full-Dúplex 2.3.2.3 Trama Ethernet El formato de los paquetes de datos en una trama Ethernet viene marcado por una estructura compuesta por varios campos. En este apartado se explicará el orden y función de dichos campos. Dentro de un paquete Ethernet, los campos se encuentran organizados de la siguiente forma: preámbulo, Start Frame Delimiter (SFD), dirección MAC destino y de fuente, longitud o tipo, dato y, por último, Frame Check Sequence (FCS). Seguidamente, se detallará en cada uno de ellos. Además, se explicarán el orden de bit a la hora de transmitir un paquete y el intervalo en silencio entre el envío de dos o más paquetes consecutivos. 2.3.2.3.1 Preámbulo El campo Preámbulo tiene una extensión de 7 bytes (56 bits), donde cada byte lo forma la siguiente cadena: “10101010”. La función principal de este campo es que el circuito electrónico PLS o PHY, dispositivo encargado de la transmisión y recepción de la señales eléctricas u ópticas, se sincronice con la temporización del paquete recibido. 2.3.2.3.2 SFD El campo SFD sirve como frontera entre el preámbulo y la información de interés del paquete (Direcciones MAC, longitud y dato). Este tiene una longitud de un 1 byte, el cual sigue la secuencia “10101011”. 2.3.2.3.3 Campo Direcciones MAC Las direcciones MAC especificadas dentro de un paquete deben ser, en primer lugar, la dirección MAC de destino y posteriormente la de fuente. Entendiendo como dirección MAC de destino como la dirección física del dispositivo donde se desea enviar el paquete y dirección MAC de fuente como la dirección física del dispositivo donde se envía el paquete. Cada dirección MAC se caracteriza por lo siguiente: • Cada campo de direcciones (destino y fuente) tiene una longitud de 6 bytes (48 bits). • El bit menos significativo (IG) de la dirección de destino se emplea como distintivo para identificar dicha dirección como una dirección individual, si vale ‘0’ o de grupo, si vale ‘1’. Una dirección MAC asociada a un grupo puede estar vinculada a ninguno, uno, varios o todas las estaciones dentro de una
15 Diseño e implementación de un sistema de adquisición multicanal para experimentos de radiación LAN. La dirección de fuente, por definición, al ser un dispositivo individual, tiene su bit menos significativo a ‘0’. • El segundo bit menos significativo (UL) determina si las direcciones especificadas en el paquete son locales o globales. De modo que, este bit valdrá ‘0’ si las direcciones son globales (o U, universal) o ‘1’ si son locales. • Cada byte de cada dirección debe ser transmitido empezando por el bit menos significativo. Como nota aclaratoria, la asignación de una dirección de grupo puede darse en dos tipos: la dirección de Multicast-Group, donde el redireccionamiento del paquete enviado hacia los distintos destinos se realiza por un convenio de una capa superior, o dirección Broadcast, donde se emplea una dirección predefinida con todos los bits de la dirección a ‘1’. Obsérvese que la dirección Broadcast, debido a la forma que está construida, es relativa a una dirección local, ya que tiene el bit UL a ‘1’ [18]. 2.3.2.3.4 Longitud o Tipo El campo Longitud o Tipo tiene una longitud de 2 bytes (16 bits), que dependiendo del valor que tome este se interpretará de una manera u otra: • Si este campo tiene un valor menor o igual a 1500 en decimal (0x05DC en hexadecimal), se interpretará como Longitud, de este modo el valor contenido en este campo indicará el número de byte que alberga el campo dato. • Si este campo tiene un valor superior o igual a 1536 en decimal (0x600 en hexadecimal), se interpretará como Tipo, de esta manera el valor contenido en este campo indicará el EtherType del protocolo empleado en la capa de red, como puede ser ARP (0x0806) o IPv6 (0x86DD), entre otros. En el caso donde se use este campo como Tipo, es responsabilidad de la capa de red de asegurarse de que la longitud del campo dato dentro del protocolo de dicha capa se respeta correctamente. 2.3.2.3.5 Dato El campo Dato tiene un tamaño comprendido entre los 46 y 1500 bytes. En Dato, la cantidad útil de información lo marca el campo Longitud, de esta manera, si el valor contenido en este campo es menor a 46, el número de bytes faltantes para alcanzar el número mínimo se completa a través de un campo adicional, llamado Pad. El campo Pad rellenará con tantos 0s sean necesarios como para asegurar el tamaño mínimo en el campo Dato. 2.3.2.3.6 FCS El campo FCS contiene el valor del resultado de un algoritmo de verificación por redundancia cíclica (CRC, por sus siglas en inglés). El valor de este campo tiene una longitud de 4 bytes (32 bits) y se obtiene al operar a través de cierta función con los valores de los campos dirección de destino, dirección de fuente, longitud o fuente y dato, incluyendo el campo Pad en el caso que existiera. La función que codifica el CRC la describe la ecuación 1: 𝐺(𝑥)= 𝑥32 + 𝑥26 + 𝑥23 + 𝑥22 + 𝑥16 + 𝑥12 + 𝑥11 + 𝑥10 + 𝑥8+ 𝑥7+ 𝑥5+ 𝑥4+ 𝑥2+ 𝑥 + 1 (1) El valor calculado para el CRC viene determinado por el siguiente procedimiento: • Se realiza el complemento a los primeros 32 bits de la trama. • Se define un polinomio M(x) de orden n - 1, cuyos coeficientes son los n bits de los campos que forman el paquete Ethernet, siendo coeficiente n - 1 el primer del bit del campo dirección de destino y el coeficiente el último bit del campo dato o Pad. • Se multiplica el polinomio M(x) por x32 y se divide por G(x), de manera que se obtiene como resto un tercer polinomio, R(x), de orden menor igual a 31. • Los coeficientes de R(x) se toman como una secuencia de 32 bits y se aplica el complemento, consiguiendo de este modo el resultado para el CRC.
Descripción del sistema de almacenamiento y procesamiento 16 • 2.3.2.3.7 Características Adicionales Por último, es importante mencionar ciertas características adicionales asociadas a este protocolo: • A excepción del campo FCS, todos los bytes de la trama Ethernet se transmitirá comenzado por el bit menos significativo. • El intervalo de silencio mínimo que debe existir entre dos paquetes Ethernet debe ser de manera tal que exista 12 bytes (96 bits) sin transmitir información. 2.3.3 LAN Con el fin de operar con el protocolo Ethernet, cumpliendo con las especificaciones de la capa de enlace y física, se ha hecho uso elemento que agiliza el manejo de este protocolo, la placa 100BASE-T Ethernet Expansion Module que actuará como transceiver Ethernet (PHY). 2.3.3.1 1000BASE-T Ethernet Expansion Module La placa 100Base-T Ethernet Expansion Module ha sido el dispositivo escogido como estación de comunicación, ya que permite establecer comunicaciones a través del protocolo Ethernet gracias a los diferentes elementos que incorpora este, como un conector RJ45, que permite la conexión de la placa con el medio físico y un transmisor LAN810A, que gestiona la transferencia de datos entre la capa física del protocolo Ethernet y un el controlador de acceso al medio (MAC), de manera que el LAN funcionará como transceiver (PHY). Adicionalmente, el transmisor LAN8710A dispone de 3 conectores de 2x6 pines que permite comunicarse con un MAC mediante una MII o RMII [19]. Sin embargo, debido a la IP Ethernet Lite solo soporta la interfaz MII, se omitirá la interfaz RMII en esta memoria [17]. Relativo a los elementos que conforman la placa 100Base-T Ethernet Expansión Module, se expondrán sus principales características, de forma que se hará énfasis, especialmente, en los modos de funcionamiento en los que puede operar y en la manera, por la cual el dispositivo puede ser configurado. 2.3.3.1.1 RJ45 El conector Registered Jack 45 (RJ45) es usado ampliamente dentro de las LANs para la transmisión de datos a través del protocolo Ethernet. Este conector utiliza cables de par trenzado (UTP) como el CAT5 o el CAT6, entre otros, los cuales poseen ocho conexiones eléctricas distintas. Obsérvese que el número de conexiones es par, ya que las señales transmitidas por el conector debe ser diferenciales [18]. 2.3.3.1.2 LAN8710A Este transmisor de baja potencia tiene la capacidad de trabajar dentro de las categorías de la capa física 10BASE- T y 100BASE-TX, determinando las distintas velocidades en las puede trabajar este dispositivo, 10 y 100 Mbps. Además, el LAN8710A, respecto a la capa de enlace, permite comunicarse con un MAC externo a través de los interfaces MII y RMII. Adicionalmente, este dispositivo posee diferentes características que facilitan el establecimiento de un enlace de comunicación, como la implementación de una auto negociación inicial con el otro extremo de la comunicación Ethernet con el fin de establecer la velocidad de comunicación óptima del enlace (10 o 100 Mbps), el tipo de funcionamiento dúplex (Half-Dúplex o Full-Dúplex), además de la detección automática del tipo de cable de red (directo o cruzado) mediante la interfaz Dependiente del Medio Automática (Auto MDI-X, por sus siglas en inglés). El LAN8710A permite generar señales de reloj en consonancia a la categoría de la capa física al trabajar con la interfaz MII. De este modo, si la categoría es la 10BASE-T, el transceiver generará una señal de reloj de 2.5 MHz, mientras que en caso de 100BASE-TX, se generará una señal de 25 MHz. Dichas señales de relojes se
17 Diseño e implementación de un sistema de adquisición multicanal para experimentos de radiación enviarán de igual manera para la transmisión y recepción de paquetes Ethernet. El modo de funcionamiento del LAN8710A lo determina los valores almacenados en los registros de configuración. Estos registros están divididos en función de, si están asociados al cumplimento del estándar 802.3-2005 (registros del 1 al 6), encargados del modo de la operación de la red; o si son específicos del fabricante del transmisor (registros del 17 al 31), responsables del tipo de comunicación con el MAC o del funcionamiento interno del dispositivo. El acceso a estos registros se realiza a través de un interfaz de gestión serie (SMI), la cual sigue un protocolo similar a I2C, esta interfaz es compatible con la interfaz MDIO de la IP Ethernet Lite. Por otro lado, este dispositivo presenta una característica extra y fuera de la norma, llamada ‘Straps Configuration’, la cual ofrece cargar inicialmente ciertos parámetros de configuración mediante la activación de tres pines, llamados MODE[2:0], durante la fase de encendido o reinicio, de manera que, durante un determinado periodo de tiempo tras el arranque del dispositivo, este leerá el valor de MODE y el transceiver comenzará con el modo de funcionamiento indicado por dicha configuración [20]. El transceiver trabaja siguiendo el esquema mostrado en la Figura 2-9, donde se muestra los distintos procesos que sufrirá el dato procedente del controlador del medio hasta su transmisión a través del conector RJ45 mediante la situación en la que esté trabajando en la categoría de la capa física 100BASE-TX. Figura 2-9: Esquema de funcionamiento del transceiver [20] En este esquema se observan los siguientes elementos: • MII: El controlador del medio, a través de la interfaz MII, envía los datos por el bus de 4 bits TXD (TX_DATA) junto la activación de la señal TXEN (TX_EN). El envío de los datos es síncrono respecto a la señal de reloj TXCLK de 25 MHz. • 4B/5B: Este bloque recibe los datos procedentes de la interfaz MII y los codifica en símbolos de 5 bits, llamados grupos de códigos. Cada dato recibido se asigna a 16 de los 32 grupos de códigos posibles, los grupos de códigos restantes se emplean para información de control. • Scrambler y PISO: el codificador (Scrambler) modifica los datos procedentes del bloque anterior para prevenir que patrones de datos partidos generen densidades espectrales de potencia de gran magnitud en bandas estrechas. De esta manera, se evita una emisión excesiva de ruido EMI y se obtiene una distribución más uniforme por el cable de red. La semilla para el codificador se genera a partir de la dirección del transceptor, lo que garantiza una codificación propia por cada uno de estos. Además, el codificador es el encargado de la conversión de datos de paralelo (5 bits) a serie (PISO, por sus siglas en inglés) con una tasa de 125 MHz. • NRZI y MLT-3: El convertidor NRZI, recoge los datos serializados (NZRI) y los codifica en MLT-3. Este código se basa en alternar entre 3 niveles, donde un cambio de nivel indica el valor lógico ‘1’, mientras que la permanencia en un mismo indica el valor lógico ‘0’.
Descripción del sistema de almacenamiento y procesamiento 18 • Tx Driver: Tras la conversión a MLT-3, los datos se envían al transmisor analógico, de manera que se genera la seña diferencial TXP y TXN. Estas señales se trasmiten al medio por un par trenzado a través de un transformador de aislamiento con una relación 1:1. El transmisor se conecta posterior a un cable CAT-5, mediante la resistencia de 100 Ω del cable.
19 3 DESCRIPCIÓN DE LA ARQUITECTURA a arquitectura de este proyecto ha sido diseñada de manera modular, compartimentando cada funcionalidad en bloques independentes. A través este método de diseño, se podrá abordar distintas soluciones sin alterar el comportamiento general del sistema, modificando únicamente el componente asociado al problema a tratar y facilitando, de este modo, que el diseño sea más ágil. Dentro de las funcionalidades principales a implementar, se encuentran el formateo de datos procedentes de detectores con múltiples canales y la gestión y envío de los datos con el formato específico hacia los distintos sistemas de almacenamiento. En este capítulo se mostrará a nivel de diagramas un funcionamiento general del sistema, donde se describirá brevemente la función de cada sección del sistema. 3.1 Diagrama general del proyecto En este apartado se expondrá un esquema donde se ilustrará la organización general del sistema completo. En el esquema, mostrado en la Figura 3-1, se señala las secciones, junto con sus componentes, que dividen el sistema en función de la región de reloj que pertenezcan, las cuales son tres: La recepción y estructuración de datos, envío de datos hacia la tarjeta SD y envío de datos hacia transceiver Ethernet. Además, se indicarán mediante delimitadores punteados las partes asociadas al Data Recorder SD (en verde) y al Data Recorder Eth (en azul). Figura 3-1: Esquema general del sistema completo 3.2 Recepción de los datos Los datos procedentes de los detectores de radiación pueden venir dados por múltiples canales. Estos se diferenciarán en función de su tasa de envío de datos, existiendo 3 categorías de velocidades distintas: lenta, media y rápida, esta última con una tasa de 6 𝜇𝑠 por dato. Para el diseño de la arquitectura se supondrá el peor caso donde todos los canales de datos serán relativos a canales de categoría de velocidad rápida. En este proyecto, se emularán los detectores mediante un generador de números aleatorios para la recepción de los datos. Los datos recibidos serán palabras de tamaño 16 bits por canal, donde cada canal tendrá asociado adicionalmente una señal de habilitación que indicará al sistema de la recepción de un nuevo dato. Este proyecto dará soporte hasta un máximo de 6 canales simultáneamente. L
Data Recorder SD 26 4.2 FIFO SD Una FIFO (First In, First Out) es una estructura de datos que gestiona elementos almacenándolos y dispensándolos en el mismo orden en que fueron ingresados. En una FIFO, se utilizan dos punteros, llamados rear (cola) y front (frente). El puntero frente señala el dato que será extraído, mientras que el puntero cola indica el dato que se acaba de introducir. La diferencia de direcciones de memoria entre estos punteros permite determinar la cantidad de datos almacenados en la FIFO. Como se explicó anteriormente, la FIFO funcionará como una etapa intermedia entre la recepción de datos de los detectores y su almacenamiento en la tarjeta SD. Actuará como un buffer para los datos de entrada, permitiendo un flujo de datos independiente entre la recepción de datos y el envío de estos a la tarjeta SD, evitando de esta forma, problemas de clock-crossing entre estos dos dominios de reloj. Xilinx ofrece un diseño IP para una FIFO, por lo que se optará por utilizar este recurso para agilizar el desarrollo del sistema. Solo será necesario configurar ciertas características, las cuales a continuación: • La FIFO tendrá una profundidad de 16384 palabras de tamaño 24 bits. • Los datos de salida (lectura de la FIFO) estarán registrados, por tanto, existirá una latencia de dos ciclos de reloj desde que se solicita un dato hasta que esté disponible y estable. Seguidamente se explicará los puertos que conforman esta IP. 4.2.1 Entidad Los puertos que forman la entidad de la FIFO vendrán dados por interfaces diferentes: escritura y lectura de los datos. Es a partir de este punto donde se encuentra la frontera entre los regímenes de reloj. En la Tabla 4-5, se muestran los nombres de los puertos, junto con la dirección respecto al componente y una descripción de estos. Tabla 4-5: Entidad de FIFO SD Wait_free_space_fifo Aviso de FIFO llena (full_i igual a ‘1’) Write_new_data No hay dato nuevo (valid_i igual a ‘0’) Wait_new_data Init Se detiene el sistema (ss_i iguala ‘0’) o FIFO ocupada en otra tarea (wr_rst_busy_i igual a ‘1’) Error Aviso de tarjeta SD llena (full_sd_card_i igual a ‘1’) Wait_free_space_fifo Aviso de FIFO llena (full_i igual a ‘1’) Write_new_data Existe nuevo dato (valid_i igual a ‘1’) Wait_free_space_fifo Init Se detiene el sistema (ss_i iguala ‘0’) o FIFO ocupada en otra tarea (wr_rst_busy_i igual a ‘1’) Error Aviso de tarjeta SD llena (full_sd_card_i igual a ‘1’) Wait_new_data Fin de aviso de FIFO llena (full_i igual a ‘0’) Error Error Estado estable Nombre Dirección Descripción Interfaz del Sistema General rst Entrada Reset asíncrono, activa a nivel alto. Para garantizar que la FIFO se resetee correctamente y evitar de este modo comportamientos inesperados, es necesario mantener esta señal activa al menos durante 3 ciclos del reloj más
27 Diseño e implementación de un sistema de adquisición multicanal para experimentos de radiación 4.3 Controlador SD El controlador SD es una máquina de estados cuyo propósito principal es gestionar el flujo de datos entre la FIFO que actúa como buffer de datos y la etapa posterior de enviar los datos a través de la comunicación SPI hacia la tarjeta SD. Esta máquina de estados debe realizar ciertas acciones para el buen funcionamiento del sistema, como la inicializar la tarjeta SD, respetar la sincronización en el envío de datos de la FIFO y enviar de paquetes de datos de 512 bytes hacia la memoria de la tarjeta SD. El envío de paquetes de 512 bytes a la memoria de la tarjeta SD se debe a que, al trabajar con tarjetas SD del tipo SDHC y SDXC mediante comunicación SPI, el estándar exige emplear este tamaño (véase apartado 2.2.3.2: Protocolo SPI). Por tanto, y debido a que los datos que recibe el controlador son de 24 bits, será necesario reunir 170 palabras antes de enviar cada paquete a la tarjeta SD. En los siguientes apartados se explicarán la entidad y las funciones que soporta este componente, 4.3.1 Entidad y señales La entidad que conforma el controlador está formada, principalmente, por tres interfaces: la interfaz con la FIFO, la interfaz con el HCI y una interfaz con el Data Writer SD. En la Tabla 4-6 se describen los puertos de cada una de estas interfaces. Tabla 4-6: Entidad de FSM SD (Controlador SD) lento (en el caso de este proyecto el de escritura como se verá más adelante) [21]. Interfaz de Escritura de Datos (Data Writer SD) wr_clk Entrada Reloj de escritura o adquisición. din Entrada Dato de entrada. Bus de 24 bits. wr_en Entrada Señal de habilitación de escritura, activa a nivel alto. full Salida Señal indicativa a nivel alto de que la capacidad de la FIFO está llena. wr_rst_busy Salida Señal indicativa a nivel alto de que la FIFO está ocupada en otras tareas tras el reseteo. Interfaz de Lectura de Datos (Controlador SD) rd_clk Entrada Reloj de lectura. dout Salida Dato de salida. Bus de 24 bits. rd_en Entrada Señal de habilitación de lectura, activa a nivel alto. El dato se enviará a través del puerto ‘dout’ dos ciclos después de la activación de esta señal. empty Salida Señal indicativa a nivel alto de que la capacidad de la FIFO está llena. rd_data_count Salida Señal que especifica la cantidad de elementos o palabras almacenadas dentro de la FIFO. Bus de 14 bits. Nombre Dirección Descripción Interfaz del Sistema General clk_i Entrada Reloj de lectura.
Data Recorder SD 28 Entrando en más detalle del funcionamiento de la interfaz de comunicación con el HCI, las estructuras de datos mencionadas anteriormente en los puertos sd_int_o y sd_int_o se encargan de establecer un protocolo simple de comunicación para poder enviarse entre ambos elementos información, manteniendo cierto orden. Este protocolo se basa en un protocolo de handshake, donde el emisor informa que quiere enviar un dato y este debe mantener el dato estable hasta que el receptor responda, indicando que lo ha recibido correctamente, terminando de este modo con la comunicación. Los atributos que forman las estructuras del puerto sd_int_o se muestran en la Tabla 4-7 y para el puerto sd_int_i en la Tabla 4-8. Tabla 4-7: Atributos de la estructura del puerto sd_int_o Atributo Descripción reset Señal que indica al HCI que se resetee, activo a nivel alto rd Señal que indica al HCI que la operación es de lectura sobre la tarjeta SD, activo a nivel alto wr Señal que indica al HCI que la operación es de escritura sobre la tarjeta SD, activo a nivel alto addr Dirección de paquete (conjunto de dato de 512 bytes) dentro de la memoria de la tarjeta SD. Bus de 32 bits. rst Entrada Reset asíncrono, activa a nivel bajo. ss_i Entrada Señal de Start/Stop del sistema para indicar el arranque (‘1’) o parada (‘0’) del componente. start_record_i Entrada Señal para habilitar el proceso de guardado de datos, activo a nivel alto. almost_full_o Salida Señal indicativa de que la tarjeta SD está al 80 % de su capacidad, actica a nivel alto. full_o Salida Señal indicativa de que la tarjeta SD está al 100 % de su capacidad actica a nivel alto. error_o Salida Señal indicativa de que ha ocurrido un error en la comunicación con la tarjeta SD, actica a nivel alto. Interfaz de Lectura de dato procedente de la FIFO fifo_data_i Entrada Dato de lectura de la FIFO. Bus de 24 bits. fifo_rd_en_o Salida Señal de solicitud de lectura de la FIFO, activo a nivel alto. fifo_empty_i Entrada Señal indicativa de FIFO vacía, activa a nivel alto. fifo_rd_data_count_i Entrada Señal que indica el número de elementos o palabras almacenadas dentro de la FIFO. Interfaz de comunicación con el HCI sd_int_o Salida Estructura de datos que contiene señales de control necesarias para operar adecuadamente con el HCI. sd_int_i Entrada Estructura de datos procedente del HCI que provee señales de control hacia el controlador.
29 Diseño e implementación de un sistema de adquisición multicanal para experimentos de radiación data Dato a enviar hacia la tarjeta SD. Bus de 8 bits (1 byte). handshake Señal para el establecimiento de una comunicación por el protocolo handshake Tabla 4-8: Atributos de la estructura para el puerto sd_int_i Atributo Descripción data Dato procedente de la memoria SD. Bus de 8 bits (1 byte). busy Señal indicativa de que el HCI está ocupada, activa a nivel alto. handshake Señal para el establecimiento de una comunicación por el protocolo handshake error Señal informativa error en la comunicación con la tarjeta SD. Bus de 16 bits. Seguidamente, se explica las funciones que cumplen las señales internas del controlador SD a través de la Tabla 4-9. Tabla 4-9: Señales internas de FSM SD (Controlador SD) Todas las señales internas tomarán el valor 0, cuando se reciba la señal de reset. Además, estas están registradas de manera que mantendrán el valor que tengan asociado hasta que se modifique explícitamente. Nombre Descripción Valor por defecto state Estado de la FSM. El valor previo return_state Estado al que debe volver la FSM tras realizar una operación de escritura. El valor previo byte_counter Contador del número de bytes enviados hacia la tarjeta SD dentro de un mismo paquete. El valor previo word_counter Contador de número de total de palabras enviadas en un bloque de información durante el vaciado de la FIFO. El valor previo word_to_read Contador para conocer el número de total de palabras almacenadas en la FIFO durante el vaciado de esta. El valor previo addr Señal que registra la dirección del bloque de la memoria de la tarjeta SD. El valor previo ptr Puntero que registra la dirección del siguiente bloque a escribir en la tarjeta SD. El valor previo data Señal que registra el dato a enviar a la tarjeta SD. El valor previo almost_full Señal que registra el valor de la salida de almost_full_o. El valor previo full Señal que registra el valor de la salida de full_o. El valor previo data_src Señal que configura el tipo de operación de escritura. El valor previo muxCounter Contador para conocer qué byte se ha enviado hacia la tarjeta SD dentro de una misma palabra de información El valor previo wd_Counter Watch dog que comprueba que la comunicación con la tarjeta SD está activa El valor previo
Data Recorder SD 30 4.3.2 Funciones soportadas El controlador SD tiene asociado distintos modos de operaciones, los cuales están asociadas a tareas que realiza el controlador con el fin de conseguir un manejo adecuado del flujo de información entre la FIFO y la tarjeta SD. • Reposo (Idle): El controlador no debe realizar ninguna acción, por tanto, no solicitará ningún dato a la FIFO no enviará datos hacia la tarjeta SD, quedará a la espera de la puesta en marcha del sistema a través del puerto ss_i para empezar el envío de datos. • Inicialización: Después del reposo (Idle), el controlador debe comprobar el correcto estado de la comunicación de la tarjeta SD. Si tras la inicialización no existe una comunicación, el controlador deberá enviar una señal de reset hacia el HCI para reiniciar la comunicación, entrando de nuevo en la tarea de inicialización. En el caso de que exista comunicación, el controlador deberá ir a la primera dirección de memoria y leer los cuatro primeros bytes donde estará almacenado la dirección del bloque de memoria al cual deberá empezar a enviar los datos procedentes de la FIFO. La capacidad de detectar si existe o no comunicación durante la inicialización lo otorgará un contador que funcionará como Watchdog. Es operará de la siguiente manera, si pasado un cierto tiempo, es decir, un determinado número de ciclos de reloj (de lectura) el HCI no responde indicando que se ha establecido conexión entenderá que la inicialización ha fallado. • Espera: Tras una inicialización exitosa, el controlador empezará a monitorizar el número de palabras alojadas dentro de la FIFO hasta que exista el número suficiente de estas tal que sea posible completar un paquete de 512 bytes. • Transferencia de datos: Una vez alcanzado el número suficiente de palabras para completar un paquete, el controlador empezará a enviar información. El envío de datos consistirá en solicitar palabras de la FIFO, dividirlas en bytes y enviar cada byte por separado de manera secuencial hacia el HCI. Además, el envío de datos debe cumplir con cierta particularidad, debido a que el tamaño de información que se almacena en un paquete en la tarjeta SD (512 bytes) no es un múltiplo entero del tamaño de una palabra de información procedente de la FIFO (3 bytes) existen 2 bytes que no pondrán estar asociados a una palabra. Por tanto, cada uno de los bytes sobrantes se rellenarán con la siguiente información vacía: ‘0xFF’. Cada paquete tiene una dirección de memoria relativa a este, por esta razón, al enviar un paquete se deberá sumar 1 al puntero de la comunicación con el HCI. • Parada: Si el sistema indica que sistema debe detenerse, el controlador antes de terminar su ejecución deberá asegurarse que la FIFO está completamente vacía. Para ello, tomará la información que aún quede almacenada dentro de la FIFO y creará tantos paquetes sea posible y los enviará hacia el HCI. Existe la situación probable que al querer enviar el último paquete no exista la cantidad suficiente de bytes para completar uno y la FIFO ya se encuentra vacía, de esta manera, será necesario rellenar dicho bloque con la información vacía ‘0xFF’ hasta completar el paquete. Estas funciones se han implementado a través de siguientes tablas donde muestra la descripción de cada estado (Tabla 4-10) y la evolución o transición entre estados (Tabla 4-11). En la Tabla 4-10 se muestra una descripción de la función que cumple el estado y los cambios con mayor relevancia en las señales y puertos del componente. Tabla 4-10: Descripción de estados de FSM SD (Controlador SD) Estado Descripción Salidas init Estado de reposo donde el componente queda a la espera de la activación de la señal SS_i y start_record_i. Durante este estado, el HCI debe estar en un estado de reset, previendo falsas operaciones de escritura. sd_int_o.reset igual a ‘1’ init_sd_card Se lanza el proceso de inicialización de la tarjeta SD. sd_int_o.reset igual a ‘0’ wait_init_sd_card Estado que comprueba si la inicialización se ha Por cada ciclo de reloj se
31 Diseño e implementación de un sistema de adquisición multicanal para experimentos de radiación realizado correctamente. En caso de error o se dispare el contador asociado al Watchdog, el sistema reanudará la inicialización. suma +1 a la señal wd_Counter reset_sd_card Este estado resetea la tarjeta SD, bien si ha ocurrido un error o el Watchdog se ha activado. sd_int_o.reset igual a ‘1’ read_last_sd_address Este estado configura al controlador para leer la primera dirección de memoria de la tarjeta SD donde se encuentra la información de la siguiente dirección de memoria donde se debe enviar los datos addr toma la dirección 0 sd_int_o.rd igual ‘1’ return_state toma el valor wait_data_block read_byte_from_sd Este estado solicita la lectura de cada byte de la priemera dirección de memoria de tarjeta SD. sd_int_o.handshake igual a ‘0’ ack_read_byte Estado de confirmación de byte recibido correctamente. sd_int_o.handshake igual a ‘1’ wait_data_block Estado de espera donde el controlador monitoriza el número de palabras almacenadas en la FIFO. No se activa ninguna salida write_incomplete_ data_block_to_sd Estado que configura al controlador para que complete paquetes “incompletos” tras activarse la parada del sistema. Se resetean byte_counter, word_Counter, words_to_read return_state toma el valor write_address_last_block data_src toma el valor ‘010’ write_data_block_to_sd Estado que configura al controlador para envíe datos mediante paquetes “completos” Se resetean byte_counter, word_Counter, words_to_read return_state toma el valor wait_data_block data_src toma el valor ‘001’ write_address_last_block Este estado configura al controlador para que almacene en la primera dirección de memoria de la tarjeta SD el siguiente bloque de memoria a escribir. addr toma la dirección 0 data_src toma el valor ‘011’ return_state toma el valor wait_sync Se resetea byte_counter request_SD_write Estado que configura el controlador para poder realizar operaciones de escritura. sd_int_o.wr igual ‘1’ write_byte Estado para enviar byte hacia la tarjeta SD para una determinada dirección de memoria. data tomará un valor u otro en función data_src wait_stable_data Estado de espera para asegurar que el dato procedente de la FIFO es estable. La latencia del dato es de 2 periodos de reloj. sd_int_o,handshake igual ‘1’
Data Recorder SD 32 En la Tabla 4-11 se muestra cómo evoluciona un estado a otro en función de las condiciones que vayan cumpliendo. Es necesario mencionar que la evolución de los distintos estados es jerárquica, de manera que es necesario que no se cumplan las condiciones anteriores para que sea posible el avance a un determinado estado, si no se cumple con ninguna condición la FSM permanece en el mismo estado. Tabla 4-11: Evolución de estados de FSM SD (Controlador SD) ack_write_byte Estado de espera de confirmación de que el byte enviado ha sido procesado. sd_int_o,handshake igual ‘1’ wait_sync Estado de espera de la información de sincronización en la tarjeta SD después de escribir en la última dirección de memoria. No se activa ninguna salida SD_FULL_NO_OP Estado estable donde el controlador deja de enviar datos hacia la tarjera SD, ya que su capacidad está llena. full igual ‘1’ error Estado estable donde el controlador deja de enviar información, ya que ha ocurrido un error. error_o igual ‘1’ Estado actual Siguiente Estado Condición init init_sd_card Puesta en marcha del sistema (ss_i y start_record_i igual a ‘1’) init_sd_card wait_init_sd_card Transición directa wait_ini_sd_card reset_sd_card Se detecta un error (sd_int_i.error distinto de 0) o se activa el Watchdog read_last_sd_address Recursos del HCI librados (sd_int_i.busy igual a ‘1’) reset_sd_card init_sd_card Transición directa read_last_sd_address read_byte_from_sd Accediendo a tarjeta SD (sd_int_i.busy igual a ‘1’) read_byte_from_sd init_sd_card Se detecta un error (sd_int_i.error distinto de 0) ack_read_byte No se ha leído el paquete entero de la primera dirección de memoria Valor de return_state Se termina de leer el paquete entero de la primera dirección de memoria ack_read_byte init_sd_card Se detecta un error (sd_int_i.error distinto de 0) read_byte_from_sd Se recibe handshake del HCI (sd_int_i.handshake igual a ‘0’) wait_data_block write_data_block_to_sd Se detecta parada del sistema y número suficiente de palabras en la FIFO para completar un paquete write_address_last_block Se detecta parada del sistema y FIFO vacía.
33 Diseño e implementación de un sistema de adquisición multicanal para experimentos de radiación Es necesario mencionar que la señal full puede sufrir de ‘cross-boundary’, ya que es una señal que interacciona write_incomplete_ data_block_to_sd Se detecta para del sistema y FIFO con insuficiente número de datos para completar un paquete. write_data_block_to_sd Sistema en funcionamiento nominal y FIFO con número suficiente de datos para completar un paquete. write_incomplete_ data_block_to_sd SD_FULL_NO_OP Se quiere acceder a más allá de última dirección de memoria de la tarjeta SD (tarjeta llena) request_SD_write Recursos del HCI liberados (sd_int_i.busy igual a ‘0’) write_data_block_to_sd SD_FULL_NO_OP Se quiere acceder a más allá de última dirección de memoria de la tarjeta SD (tarjeta llena) request_SD_write Recursos del HCI liberados (sd_int_i.busy igual a ‘0’) write_address_last_block request_SD_write Recursos del HCI liberados (sd_int_i.busy igual a ‘0’) request_SD_write reset_sd_card Se detecta un error (sd_int_i.error distinto de 0) write_byte Accediendo a tarjeta SD (sd_int_i.busy igual a ‘1’) write_byte init_sd_card Se detecta un error (sd_int_i.error distinto de 0) ack_write_byte Contador de byte enviados al bloque de memoria inferior a 512. Valor de return_state Paquete completo enviado wait_stable_data write_byte Transición directa ack_write_byte reset_sd_card Se detecta un error (sd_int_i.error distinto de 0) write_byte Se recibe handshake del HCI, pero no se ha enviado la palabra completa wait_stable_data Se recibe handshake del HCI y se ha enviado la palabra completa (Se solicita un nuevo dato) write_byte Ese recibe handshake y es necesario rellenar el paquete con información vacía wait_sync init Recursos del HCI liberados (sd_int_i.busy igual a ‘0’) SD_FULL_NO_OP SD_FULL_NO_OP Estado estable error error Estado estable
Data Recorder SD 34 directamente en ambas regiones de reloj, además de originarse en la región con la señal de reloj más rápida. Sin embargo, debido a que una vez que se activa no vuelve cambiar al estar vinculado a un estado estable, no existirá con ninguna restricción de temporización. 4.4 HCI El HCI es el encargado de comunicarse directamente con la tarjeta SD con el fin de transmitir información bien para cargar datos o bien para obtener información relevante sobre esta. Este componente ayudará al sistema a establecer una interfaz SPI. El diseño del HCI viene dado previamente antes del comienzo del proyecto. Este componente realizará la configuración inicial de la comunicación SPI con la tarjeta (tipo de comunicación y tamaño de paquete de información), además de obedecer a las distintas indicaciones que realice el controlador SD. Seguidamente, se explicarán las distintas señales que conforman la entidad del HCI y las funciones soportadas por este. 4.4.1 Entidad Los puertos forman la entidad del HCI son relativas a dos interfaces: la comunicación a través del protocolo de handshake con el controlador SD y la comunicación SPI hacia el exterior. En la Tabla 4-12, los puertos junto con la interfaz a la que pertenecen y una descripción. Tabla 4-12: Entidad del HCI Nombre Dirección Descripción Interfaz del Sistema General clk_i Entrada Reloj de lectura rst_i Entrada Reset asíncrono, activo a nivel alto. Interfaz con el FSM SD (controlador SD) rd_i Entrada Petición de operación de lectura, activo a nivel alto. wr_i Entrada Petición de operación de escritura, activo a nivel alto. addr_i Entrada Dirección de memoria de la tarjeta SD. Bus de 32 bits. data_i Entrada Dato a enviar a la tarjeta SD. Bus de 8 bits. data_o Salida Dato leído de la tarjeta SD. Bus de 8 bits. busy_o Salida Señal indicativa de que la tarjeta SD está ocupada en una tarea, activa a nivel alto. handshake_i Entrada Señal de handshake para confirmación dato estable procedente del controlador. handshake_o Salida Señal de handshake para confirmación dato estable procedente del HCI. error_o Salida Señal de error irrecuperable en la comunicación con la tarjeta SD. El sistema se bloquea. Bus de 16 bits. Interfaz SPI cs_n_o Salida Chip select.
35 Diseño e implementación de un sistema de adquisición multicanal para experimentos de radiación 4.4.2 Funciones soportadas El componente HCI es el responsable de la comunicación SPI con la tarjeta SD, estableciendo un enlace de entre esta y el sistema Data Recorder. De este modo, este componente deberá gestionar el envío y recepción de datos solicitado, además de configurar correctamente la comunicación • Reposo: El HCI, mientras recibe la señal de reset procedente del controlador SD, no realiza ninguna acción. Por otro lado, si el sistema, ya iniciado, no demanda ninguna operación, este debe quedar a la espera sin finalizará la comunicación SPI. • Configuración: El componente deberá, en un inicio, establecer y configurar la comunicación con la tarjeta SD. La configuración la marcará distintos comandos, los cuales son: el reinicio de la tarjeta (comando CMD0), el reconocimiento tipo de la tarjeta a operar (comando CMD8), la inicialización de la propia configuración con la tarjeta (comando ACMD41), además de la definición previa de los comandos de configuración como comandos específicos frente a los estándares (comando CMD55). Además, el HCI tendrá que indicar el tipo de operación que se solicite sobre la tarjeta durante la fase de nominal de la comunicación, previamente a escribir o leer datos de la tarjeta SD, de modo que se empleará el comando CMD17 para señalar que la siguiente operación es de lectura o el comando CMD24 para una operación de escritura. Es necesario mencionar que sobre estos dos últimos comandos es imprescindible determinar la dirección del bloque sobre el que se opera [22]. • Transferencia de datos: La transferencia de datos desde el HCI hacia la tarjeta dependerá del tipo de dato a enviar, bien si es un comando de configuración o bien un dato procedente de los detectores a almacenar. En el caso de ser comando, se generará los ciclos de reloj necesario para transmitir todo el dato, de manera que en el flanco de bajada se actualizará el valor de bit sobre el canal MOSI, mientras que, si son datos a almacenar en la tarjeta SD, estos se agruparán en grupos de bytes, así la transacción estará divido en grupos de 8 ciclos de reloj, que al igual que el caso anterior, se actualizará el valor del canal en el flanco de bajada. Para la comunicación en el otro sentido, de la tarjeta SD al HCI, se realizarán operaciones similares, de modo que al leer la repuesta de un comando de configuración se tomará tantos ciclos de reloj como el número bits totales que forman dicha respuesta, leyendo el canal MISO en el flanco de subida, y se leerá cada byte del bloque de dato solicitado en ciclos de 8 periodos de reloj. Estas funciones han sido implementadas a través de una máquina de estados. En las siguientes tablas se explican los aspectos con mayor relevancia de esta, de manera que en la Tabla 4-13 se describe la función de los diferentes estados involucrados, mientras que la Tabla 4-14 se explica cómo ocurre evolución de la máquina de estados entre estos. La Tabla 4-13 señala la función que cumple los estados de la FSM, además de los valores que toman las principales señales del componente. Tabla 4-13: Descripción de estados de FSM de la HCI sclk_o Salida Reloj para la comunicación SPI. mosi_o Salida Línea de comunicación serie hacia la tarjeta SD. miso_i Entrada Línea de comunicación serie desde la tarjeta SD. Estado Descripción Salidas start_init Estado de espera donde el componente debe permanecer hasta que el sistema no haya arrancado. sclk_o igual a ‘0’ handshake_o igual a ‘0’ busy_o igual a ‘1’ send_cmd0 Estado donde se envía el comando CMD0 para resetear la tarjeta SD. cs_o igual ‘0’ Se establece el comando que se enviará
Data Recorder Ethernet 42 Internamente, este componente contiene señales que registran tanto los valores procedentes de los puertos de entrada como los valores asociados a los puertos de salida, de manera que el Data Writer Eth operará modificando estas señales registradas. Además, existe una señal, llamada ‘state’, en la que se registrará el estado de la FSM implementada. 5.1.2 Funciones soportadas El Data Writer Eth es el encargado de recibir los datos procedentes de los detectores, formatearlos en una determinada estructura, explicada en el apartado 3.3.2 Data Writer Eth (Estructuración para Ethernet) y cargarlos sobre una FIFO que servirá como buffer para la siguiente sección. Para ello, este componente, con el fin realizar las tareas anteriores, se le ha asignado las siguientes funciones: • Espera: El componente Data Writer Eth debe quedar a la espera de enviar datos en determinadas situaciones similares que en el componente Data Writer SD: el sistema detiene el funcionamiento general mediante la señal SS_i, los detectores no proporcionan datos o la FIFO no es capaz de albergar más datos. • Estructuración de los datos: El componente Data Writer Eth adapta los datos procedentes de los detectores, cumpliendo con el formato establecido. Esto ocurre cuando se detecta que al menos un canal tiene un dato disponible, de forma que se registran los datos disponibles y se construyen nuevos datos con la estructura mencionada anterior, quedando estos a la espera para su posterior envío hacia la FIFO. • Envío de datos: El componente Data Writer Eth envía los datos formateados hacia la FIFO, siguiendo un determinado procedimiento con el fin de mantener un orden específico en su almacenamiento. Dicho procedimiento priorizará los datos registrados en la función previa, de manera que se enviarán primero aquellos que estén asociados a un número del canal más pequeño, siendo el canal 1 con la mayor preferencia y el 6 con la menor. Así, se leerá la señal de habilitación desde la del canal 1 hasta la del canal 6, enviando el dato hacia la FIFO cuando la señal correspondiente sea igual a ‘1’. Estas funciones se aplicarán mediante una máquina de estados que, además, considerará casuísticas asociadas al funcionamiento general del sistema. Seguidamente, en la Tabla 5-2 se muestra los distintos estados implementados, así como una breve descripción de estos; y en la Tabla 5-3 se indica cómo evolucionan los estados entre sí. Tabla 5-2: Descripción de estados de Data Writer Eth la estructura de dato. Bus de 3 bits. Interfaz con la escritura sobre la FIFO eth_data_o Salida Dato a enviar hacia la FIFO. Bus de 96 bits. wr_en_o Salida Señal de habilitación de escritura sobre la FIFO, activa a nivel alto. full_i Entrada Señal de llenado de la FIFO, activa a nivel alto. Estado Descripción Salidas init Estado de reposo donde el componente queda a la espera de la activación de la señal SS_i. No se activa ninguna salida wait_new_data Estado de espera activa de la activación de la señal de habilitación de los datos de los detectores No se activa ninguna salida register_new_data Estado donde se detecta que existe al menos un dato disponible procedente de los detectores y los registra. No se activa ninguna salida write_new_data Estado donde se envía un dato hacia la FIFO Se prepara eth_data_o con
43 Diseño e implementación de un sistema de adquisición multicanal para experimentos de radiación En la Tabla 5-3 se muesstra cómo evoluciona un estado a otro respecto al cumpliendo de determinadas condiciones. La evolución de los distintos estados es jerárquica, de manera que no deben cumplirse las condiciones previas para que sea posible el avance a un determinado estado, si no se cumple con ninguna condición la FSM permanece en el mismo estado. Tabla 5-3: Evolución de los estados de Data Writer Eth 5.2 FIFO Eth Al igual que en la situación presentada en el almacenamiento local, aquí también será necesario un elemento que permita independizar la gestión del flujo de datos entre la adquisición de estos y su posterior envío hacia el elemento de almacenamiento. Por esta razón, se empleará una FIFO (First Input First Output) como buffer de entrada para esta segunda sección, almacenando temporalmente los datos. Además, servirá como elemento de frontera entre dos regiones de reloj diferentes. Esta FIFO tiene comportamiento y característica idénticas respecto a la FIFO empleada en el almacenamiento el dato a enviar Se activa wr_en_o check_ena Estado que comprueba la disponibilidad de un canal determinado. No se activa ninguna salida shift_inc Estado de avance para la comprobación para el siguiente canal. No se activa ninguna salida wait_free_space_fifo Estado de espera, debe existir espacio libre para poder seguir con la ejecución del componente. No se activa ninguna salida Estado actual Siguiente Estado Condición init wait_new_data Puesta en marcha del sistema (activación de la señal SS_i) wait_new_data init Parada del sistema (desactivación de la señal SS_i) register_new_data Dato de detectores disponible (bus ena_i distinto de cero) register_new_data write_new_data Canal con dato disponible shift_inc Canal sin dato disponible shift_inc check_ena Transición directa check_ena shift_inc Canal sin dato disponible wait_free_space_fifo Capacidad de la FIFO llena write_new_data Canal con dato disponible write_new_data wait_free_space_fifo Capacidad de la FIFO llena shift_inc Capacidad de la FIFO disponible wait_free_space_fifo shift_inc Datos aún por procesar wait_new_data Barrido de posibles datos disponible realizado
Data Recorder Ethernet 44 en la tarjeta SD (apartado 4.2: FIFO SD), con la diferencia de que el tamaño de las palabras debe adecuarse a la longitud de la estructura en el componente Data Writer Eth, 96 bits. A continuación, se mostrará las interfaces que emplea la FIFO para la interconexión entre las dos secciones mencionadas anteriormente. 5.2.1 Entidad La entidad de la FIFO está formada por puertos pertenecientes principalmente a dos interfaces: escritura y lectura de datos. Estos puertos son los mismo que en la FIFO presentada en la gestión de los datos para la tarjeta SD, de manera que en la Tabla 4-5 vienen descritos, con la salvedad de que, en esta instancia, no se emplea el puerto asociado a la indicación de que la FIFO se encuentra ocupada en otra tarea (wr_rst_busy), además de que los bus asociados a los datos tanto de entrada como salida tiene un tamaño de 96 bits. 5.3 Controlador Eth El controlador Eth es el elemento que presentará mayor criticidad en este proyecto, ya que la gestión del flujo de datos hacia un sistema de almacenamiento externo a través del protocolo Ethernet supone una complejidad superior a la enfrentada anteriormente. Factores como la configuración de los elementos que establecen la comunicación Ethernet mediante distintas interfaces, así como la gestión y supervisión del estado del enlace, complican el diseño del sistema. Además, se presentaron dificultades e inconvenientes en relación con el funcionamiento de los dispositivos externos al sistema, que tuvieron que ser resueltas para cumplir con los objetivos de este proyecto. El controlador Eth está constituido por dos componentes: una máquina de estado (FSM) que gestionará el flujo de datos entre la FIFO Eth y el transceiver LAN8710A y un elemento de memoria no volátil BRAM (Block RAM) que se encuentra incorporado en la propia arquitectura de las FPGAs [25] y servirá de memoria de los parámetros de configuración de los diferentes elementos involucrados en la comunicación Ethernet. 5.3.1 FSM Eth La FSM se encarga de transferir los datos desde la FIFO Eth, que almacena la información procedente de los detectores, hacia la IP Ethernet Lite la cual se encarga de enviar estos datos al transceiver Ethernet. Además, la máquina de estados es responsable de configurar tanto la IP Ethernet Lite como el transceiver Ethernet mediante la carga de los parámetros correspondientes que vendrán de una memoria BRAM. En los siguientes apartados se explicarán los puertos que forman la entidad de este componente, además de las funciones que soporta para el correcto funcionamiento del sistema. 5.3.1.1 Entidad y señales Los puertos que forman la entidad de FSM Eth están asociados principalmente a tres interfaces: lectura de parámetros de configuración de la BRAM, lectura de datos de la FIFO y el envío de estos hacia el transceiver Ethernet a través de la IP Ethernet Lite. En esta última interfaz, la comunicación con la IP Ethernet Lite se realiza mediante una comunicación a mediante el protocolo AXI, por este motivo, se hará uso de una IP proporcionada por Xilinx, llamada AXI Master, la cual funciona como bridge o puente, facilitando la creación de una conexión con un componente que emplee este protocolo. La comunicación con esta IP se detallará más adelante (apartado 5.4 Puente AXI) En la Tabla 5-4, se muestran dichos puertos, donde, se explicarán la dirección que toman y una descripción de estos, indicando, además, a la interfaz a la que pertenecen. Tabla 5-4: Entidad de FSM Eth Nombre Dirección Descripción Interfaz del Sistema General clk_i Entrada Reloj de lectura.
45 Diseño e implementación de un sistema de adquisición multicanal para experimentos de radiación rstn_i Entrada Reset asíncrono, activo a nivel bajo. ss_i Entrada Señal de Start/Stop del sistema para indicar el arranque (‘1’) o parada (‘0’) del componente. eth_ctrl_status_o Salida Señal que indica al sistema que se ha establecido un enlace en la comunicación Ethernet y se está transmitiendo datos, activo a nivel alto. Interfaz con memoria BRAM bram_addr_o Salida Señal que apunta a una dirección de memoria de BRAM. Bus de 7 bits bram_data_i Entrada Dato procedente de la memoria BRAM que es contenido de la dirección que apunta bram_addr_o. Bus de 32 bits. fifo_select_o (*1) Salida Señal de activación de la memoria BRAM, activa a nivel alto. Interfaz de Lectura de datos de la FIFO fifo_data_i Entrada Dato procedente de la FIFO. Bus de 96 bits fifo_rd_en_o Salida Señal de habilitación de lectura sobre la FIFO, activo a nivel alto. fifo_empty_i Entrada Señal de que la FIFO se encuentra vacía, activa a nivel alto. fifo_rd_data_count_i Entrada Señal que indicar el número de palabras que alberga la FIFO. Bus de 14 bits. Interfaz con Puente AXI axi_awaddr_o Salida Dirección de memoria a escribir en la IP Ethernet Lite. Bus de 13 bits. axi_wdata_o Salida Dato a escribir en la IP Ethernet Lite. Bus de 32 bits. axi_w_handshake_i Entrada Señal de validación de operación de escritura realizada, activa a nivel alto. axi_w_handshake_o Salida Señal de habilitación de operación de escritura realizada, activa a nivel alto. axi_araddr_o Salida Dirección de memoria a leer de la IP Ethernet Lite. Bus de 13 bits. axi_rdata_i Entrada Dato leído de la IP Ethernet Lite. Bus de 32 bits axi_r_handshake_i Entrada Señal de validación de operación de lectura realizada, activa a nivel alto. axi_r_handshake_o Salida Señal de habilitación de operación de lectura realizada, activa a nivel alto. Interfaz con Ethernet Lite ip2OUTtc_irpt_i Entrada Señal que señala que ha ocurrido un evento en la IP Ethernet Lite, activa a nivel alto.
Data Recorder Ethernet 46 (*1) Nota: debido a versiones antiguas del diseño del FSM Eth el puerto fifo_select_o se le dio este nombre porque se empleaba para un uso adicional, el cual era seleccionar los datos de entrada bien de la FIFO o bien de la memoria BRAM. Al rediseñar el comportamiento del componente, eliminando esta función, se mantuvo el nombre. Las señales internas que contiene este componente están asociadas bien a señales que registran el valor de los puertos de entrada o bien el próximo valor que tomarán las salidas. Además, se empleará señales adicionales que ayudarán al componente a identificar de qué manera debe operar entre los distintos modos de funcionamiento, así como señales que registrará información necesaria de la configuración de los componentes y de cómo construir el paquete Ethernet. En la Tabla 5-5, se muestra una descripción de estas señales adicionales. Tabla 5-5: Señales internas de FSM Eth Todas estas señales, junto con aquellas que registran tanto el valor de los puertos de entrada como el próximo valor que tomarán los puertos de salida se inicializan a cero cuando se activa la señal de reset. 5.3.1.2 Funciones soportadas Este componente es el responsable de trabajar como el controlador MAC dentro de la comunicación Ethernet arstn_mac_o Salida Señal de reset para la IP Ethernet Lite y por extensión del transceiver Ethernet (Hard-Reset), activa a nivel bajo. Nombre Descripción Valor por defecto state Estado de la FSM. El valor previo ptr_config Señal que copia la dirección de la memoria BRAM para conocer en qué parte de la configuración se encuentra la máquina de estado. El valor previo ptr_frame Señal que cuenta el número de bytes enviados hacia la IP Ethernet Lite. El valor previo stb_data_fifo Señal que identifica la palabra de 32 bits a enviar hacia la IP Ethernet Lite dentro del dato de 96 bits procedente de la FIFO. El valor previo mac_addr_src Señal que registra la dirección MAC fuente. El valor previo mac_addr_dst Señal que registra la dirección MAC destino. El valor previo len_pack Señal que indica la cantidad de palabras que deben enviarse hacia la IP Ethernet Lite. El valor previo len_pack_full Señal que registra la cantidad de palabras que deben enviarse hacia la IP Ethernet Lite en un funcionamiento nominal. El valor previo timeout Contador temporal encargado diferentes tareas: contador Watchdog para el estado del enlace y asegurar timing asociado al reinicio del transciever Ethernet. El valor previo config_stg Señal que indica si la máquina de estado está bien configurándose o bien enviando datos. El valor previo cmd_phy_addr Señal que registra la dirección física del transceiver junto con el comando a ejecutar sobre este. El valor previo chck_phy_addr Señal que indica si está la máquina de estado comprobando o no el estado del enlace. El valor previo
47 Diseño e implementación de un sistema de adquisición multicanal para experimentos de radiación establecida con el elemento de almacenamiento externo, este deberá encargarse de conocer el estado del enlace de la comunicación y actuar en consonancia. De esta manera, a este componente se les atribuirá las siguientes funciones con el fin de lograr un envío de datos constante y fiable. • Reposo: El controlador Eth debe permanecer inactivo hasta que el sistema mediante la señal SS_i ordene la puesta en marcha del componente, de manera que pasa a la fase de configuración. • Configuración: Una vez que el sistema activa al controlador, este debe empezar configurar el modo de operación tanto de la IP Ethernet Lite como del transceiver Ethernet. Dentro de los parámetros de configuración asociados a la IP Ethernet Lite están: la dirección MAC de destino, la dirección MAC fuente, la habilitación de las interrupciones de la IP y la longitud de paquete a enviar. Y respecto a los parámetros asociados al módulo Ethernet están la elección del modo y velocidad de la comunicación Ethernet, full o half dúplex y 10 o 100 Mbps; la habilitación de la auto negociación y la aplicación del soft-reset. Los valores de los parámetros a configurar los dispensará una memoria BRAM, la cual almacenará los datos relativos a la configuración del IP Ethernet lite y al transceiver Ethernet, en ese orden. Los parámetros de configuración de la IP Ethernet Lite estarán asociados únicamente al valor del parámetro en sí, puesto que las direcciones donde cargar estos parámetros están hard-codeadas dentro del diseño de la máquina de estados. Por otro lado, los parámetros relativos al transceiver Ethernet indicarán el dato y la dirección del registro donde se quiera configurar. La configuración de la IP Ethernet Lite se realizará mediante los registros de transmisión mostrados en el mapa de memoria mostrado en el apartado 5.5 IP Ethernet Lite, y con respecto a la configuración del transceiver Ethernet, los parámetros deberán llegar a este mediante la interfaz MDIO, de forma que los parámetros tendrán que ser cargados en los registros de dirección MDIO y dato de escritura MDIO. • Espera: En ciertas funciones soportadas, existen instancias donde el componente debe quedar a espera de ciertos eventos, como la expiración de un Watchdog que compruebe el estado del enlace o retrasar el comienzo del envío de datos para cumplir con las especificaciones temporales requeridas por el transceiver Ethernet, ya que tras activar el soft-reset, aplicando de esta forma los parámetros de configuración, es necesario esperar un intervalo de tiempo de 0.5 segundos [20]. Además, el controlador antes de volver a enviar un paquete Ethernet, tiene que esperar a que este haya terminado de transmitirse el anterior. Esta acción se realiza mediante la espera de la generación de una interrupción provocada por la IP Ethernet Lite. En este último punto entra en funcionamiento el Watchdog, ya que, si la generación de dicha interrupción se demorase cuantiosamente, 0.5 segundos (del orden de 1000 veces el tiempo medio de envío de un paquete Ethernet de 734 bytes), se considerará que la comunicación ha caído y es necesario resetear tanto el transceiver como la IP. • Envío de datos: Tras haber finalizado la configuración de los distintos elementos involucrados en la comunicación Ethernet, el controlador Eth puede empezar a extraer datos de la FIFO y enviarlos hacia la IP Ethernet Lite. El envío de datos se encarga de realizar las siguientes acciones: o Deshabilitación de interfaz MDIO: El transceiver LAN8710A ni la IP Ethernet Lite pueden operar con las interfaces MDIO y MII al mismo tiempo, por tanto, el controlador, antes de enviar los datos procedentes de los detectores, debe asegurarse que la interfaz MDIO está desactivada. o Asignación de valores correspondiente de los campos de la trama Ethernet: El controlador Eth debe acceder a las direcciones de memoria de la IP Ethernet Lite donde se cargarán los parámetros de los campos previos al Payload de la trama Ethernet, los cuales son la dirección de destino, dirección de fuente y longitud del contenido. Los valores de dichos campos vendrán dados en la función de Configuración. o Carga de datos: El controlador Eth solicitará datos de la FIFO e irá cargándolos en las direcciones de memoria del buffer de transmisión PING de la IP Ethernet Lite. Este deberá tomar la cantidad necesarias de palabras de 96 bits de manera que rellene el tamaño requerido durante la Configuración. Además, deberá partir los datos recibidos en palabras de 32 bits para que estos puedan estar alineados dentro del mapa de memoria de la IP Ethernet Lite. o Transmisión de paquete: Cuando se alcanza el número de bytes para completar un paquete Ethernet, el controlador Eth avisa a la IP Ethernet Lite que comience a enviar los datos al transceiver a través de la interfaz MII, accediendo al registro de estado. • Parada: cuando se ordena detener el funcionamiento general del sistema, el controlador Eth tiene que
Data Recorder Ethernet 48 asegurar que la FIFO este vacía, por tanto, deberá enviar tantos paquetes como se necesario para realizar esta acción, modificando la longitud del último paquete Ethernet a enviar en el caso que no existiera suficiente información como para completar uno con el tamaño solicitado en la fase de configuración. Estas funciones se implementarán a través de una máquina de estados. En la Tabla 5-6 se describe los estados, explicando acciones toma el controlador y las salidas que activan. Por otro lado, en la Tabla 5-7 se detalla la evolución entre los diferentes estados de la máquina de estado. Tabla 5-6: Descripción de los estados de FSM Eth Estado Descripción Salidas idle Estado de reposo inicial donde la máquina de estados está a la espera de la puesta en marcha del sistema No se activa ninguna salida. get_config Estado de configuración, se recibe los datos de la memoria BRAM y se envía bien a la IP Ethernet Lite o al transceiver Ethernet Se actualiza la dirección y dato a enviar hacia la IP Ethernet Lite update_bram_output Estado donde se actualiza el puntero de la memoria BRAM para acceder a la siguiente dirección. Se avanza a la siguiente dirección en el puerto bram_addr_o wait_bram_addr Estado de espera para garantizar que el dato procedente de la memoria estable No se activa ninguna salida. ack_axi_cfg_op Estado de espera de confirmación de que dato escrito en la IP Ethernet Lite ha sido realizado. Se activa el puerto de salida handshake de escritura. read_status_bit Estado que lee el valor de un registro de estado de la interfaz MII o MDIO No se activa ninguna salida. ack_read_status_bit Estado de espera de confirmación de que el dato leído de la IP Ethernet Lite está disponible. Se activa el puerto de salida handshake de lectura. check_phy_addr Estado que comprueba que exista la dirección física proporcionada durante la configuración, en caso afirmativo el transceiver Ethernet funciona correctamente. No se activa ninguna salida. ack_check_phy_addr Estado de espera de confirmación de que el dato leído de la IP Ethernet Lite está disponible. Se activa el puerto de salida handshake de lectura. disable_mdio Estado para la deshabilitación de la interfaz MSIO Escritura de 0s en el registro de estado MDIO ack_disale_mdio Estado de espera de confirmación de que dato escrito en la IP Ethernet Lite ha sido realizado. Se activa el puerto de salida handshake de escritura. check_enable_mdio Estado que comprueba que si e la interfaz MDIO está deshabilitada. No se activa ninguna salida. ack_check_enable_mdio Estado de espera de confirmación de que dato escrito en la IP Ethernet Lite ha sido realizado. Se activa el puerto de salida handshake de escritura.
49 Diseño e implementación de un sistema de adquisición multicanal para experimentos de radiación wait_for_0s5 Estado de espera donde el controlador retrasa la acción de envío de envío de datos 0.5 segundos No se activa ninguna salida. wait_data Estado donde se espera la cantidad suficiente de datos para enviar un paquete Ethernet completo Se activa la señal eth_ctrl_status, indicando que se ha podido establecer comunicación. check_link_up_1 Estado donde se indica que se quiere comprobar la dirección física del transceiver Se activa la señal de que controlador está comprobando el estado del enlace (chck_phy_addr) ack_check_link_up_1 Estado de espera de confirmación de que dato escrito en la IP Ethernet Lite ha sido realizado. Se activa el puerto de salida handshake de escritura. check_link_up_2 Estado donde se realiza la lecura mediante la interfaz MDIO No se activa ninguna salida. ack_check_link_up_2 Estado de espera de confirmación de que dato escrito en la IP Ethernet Lite ha sido realizado. Se activa el puerto de salida handshake de escritura. check_control_register Estado le lectura del estado de la interfaz MDIO Accediendo al registro de estado MDIO ack_check_control_register Estado de espera de confirmación de que el dato leído de la IP Ethernet Lite está disponible. Se activa el puerto de salida handshake de lectura. write_ethernet_frame Estado donde se carga la información para completas los distintos que forman un paquete Ethernet. Acceso a memoria del buffer de transmisión PIN ack_axi_write_ethernet_frame Estado de espera de confirmación de que dato escrito en la IP Ethernet Lite ha sido realizado. Se activa el puerto de salida handshake de escritura. get_data_from_fifo Estado donde se solicita un nuevo dato a la FIFO Eth. Se activa la salida fifo_rd_en_o write_pck_len Estado previo al comienzo de la transmisión del paquete, donde se escribe en el registro de ‘Longitud paquete ‘el tamaño total del paquete ethernet. Acceso al registro Longitud paquete ack_write_pck_len Estado de espera de confirmación de que dato escrito en la IP Ethernet Lite ha sido realizado. Se activa el puerto de salida handshake de escritura. check_cr_before_tx_1 Estado de comprobación del estado de la interfaz MDIO No se activa ninguna salida. ack_check_cr_before_tx_1 Estado de espera de confirmación de que el dato leído de la IP Ethernet Lite está disponible. Se activa el puerto de salida handshake de lectura.
Data Recorder Ethernet 50 Comprobar que todos los estados asociados a la espera del ack de una operación son, en términos de funcionalidad son idénticos y, por tanto, redundantes, ya que tras recibir la validación del dato recibido a través de la comunicación handshake salta a otra operación. Sin embargo, se planteó de esta manera con el fin de tener evoluciones de estados diferenciados y así determinar de forma precisa los distintos modos de operación del componente a la hora de su depuración y validación, aunque esto suponga, a nivel de diseño de la funcionalidad, un consumo innecesario de recursos de la FPGA. Sin embargo, el estado ‘ack_read_status_bit’ tiene asociado una funcionalidad distinta, ya que cuando reciba la validación del dato en la comunicación handshake, en función del contenido de este, se pedirá o no leer nuevamente el contenido del registro, aplicando de este modo una técnica de ‘polling’. La finalidad de esto va ligado al hecho de que la interfaz MDIO y la configuración de la propia IP Etherenet Lite no ofrecen otra alternativa para conocer si han finalizado la operación pedida que leer el contenido de sus correspondientes registros de estados. En la Tabla 5-7 se muestra cómo evoluciona un estado a otro respecto al cumpliendo de determinadas condiciones. La evolución de los distintos estados es jerárquica, de manera que no deben cumplirse las condiciones previas para que sea posible el avance a un determinado estado, si no se cumple con ninguna condición la FSM permanece en el mismo estado. check_cr_before_tx_2 Estado de comprobación del estado de la interfaz MDIO No se activa ninguna salida. ack_check_cr_before_tx_2 Estado de espera de confirmación de que el dato leído de la IP Ethernet Lite está disponible. Se activa el puerto de salida handshake de lectura. start_transmission Estado de comienzo de transmisión, el controlador accede al registro de estado de la interfaz MII y avisa a la IP de que empiece a enviar el paquete. Acceso al registro de control PING ack_start_transmission Estado de espera de confirmación de que dato escrito en la IP Ethernet Lite ha sido realizado. Se activa el puerto de salida handshake de escritura. wait_interruption Estado de espera de la generación de la interrupción que avise al controlador que se ha terminado la transmisión del paquete. Paralelamente, existe un contador que funciona como Watchdog que si llegar a expirar será indicativo de que el enlace se ha perdido. Actualización del controlador timeout disable_tx Estado donde se deshabilita la interfaz MII Acceso al registro de control PING ack_disable_tx Estado de espera de confirmación de que dato escrito en la IP Ethernet Lite ha sido realizado. Se activa el puerto de salida handshake de escritura. read_tx_ctrl_reg Estado de comprobación de interfaz MII deshabilitada. Acceso al registro de control PING ack_read_tx_ctrl_reg Estado de espera de confirmación de que el dato leído de la IP Ethernet Lite está disponible. Se activa el puerto de salida handshake de lectura. reset_mac_controller Estado de reset, se envía directamente una señal de reset hacia la IP Ethernet Lite y por extensión al transceiver. Se activa la señal de reset originaria de la MAC (arstn_mac_o)
51 Diseño e implementación de un sistema de adquisición multicanal para experimentos de radiación Tabla 5-7: Evolución de los estados de la FSM Eth Estado actual Siguiente Estado Condición idle Update_bram_addr Activación de arranque del sistema (ss_i igual a ‘1’) update_bram_addr wait_bram_output Transición directa wait_bram_output get_config Transición directa get_config Idle Parada del sistema (ss_i igual a ‘1’) update_bram_addr Lectura de los 6 primeros datos de la BRAM ack_axi_write_cfg_op Lectura del resto de datos ack_axi_write_cfg_op read_status_bit Validación del dato en la comunicación handshake. read_status_bit ack_read_status_bit Transición directa ack_read_status_bit disable_mdio Activación previa de la interfaz MDIO check_phy_addr Orden de lectura previa del registro de estado del transceiver update_bram_addr Lectura previa de datos a escribir de la BRAM disable_tx Finalización de envío de paquete Ethernet read_status_bit Comunicación todavía en curso check_phy_addr ack_check_phy_addr Transición directa ack_check_phy_addr Idle Lectura de dato de error del transceiver (0xFFFF) disable_mdio Sin error en el transceiver disable_mdio ack_disable_mdio Transición directa ack_disable_mdio wait_for_0s5 Instancia de la aplicación del soft-reset wait_data Finalización de la configuración check_enable_mdio Otra operación de configuración check_enable_mdio ack_check_enable_mdio Transición directa ack_check_enable_mdio update_bram_addr Interfaz MDIO deshabilitada wait_for_0s5 update_bram_addr Espera de 0.5 segundos. wait_data check_control_register Número suficiente de palabras en la FIFO eth o orden de parada del sistem check_control_register ack_check_control_register Transición directa ack_check_control_register write_ethernet_frame Interfaz MII disponible
Data Recorder Ethernet 58 BUFFER TX PONG Sección Campo Longitud o Tipo 0x0810 - 0x0FE0 Bytes restantes del campo Dato 0x0FE0 - 0x0FF0 Reservado 0x0FF4 Longitud Paquete 0x0FF8 Reservado 0x0FFC Control • Buffer RX PING: desde la dirección 0x0100 hasta la 0x17FC, el controlador Eth puede leer la información relativa de un paquete recibido. En la Tabla 5-15 se muestran las direcciones asociadas a este buffer. Tabla 5-15: Direcciones de memoria de la IP Ethernet Lite para el Buffer PING RX Dirección Sección Función 0x1000 BUFFER RX PING Sección Dirección de destino, bytes 3 – 0 0x1004 Dirección fuente, bytes 1 – 0 0x1008 Dirección fuente, bytes 5 – 2 0x100C Campo Dato, byte 1 – 0 Campo Longitud o Tipo 0x1010 - 0x17DC Bytes restantes del campo Dato 0x17E0 - 0x17F8 Reservado 0x17FC Control • Buffer RX PONG (opcional): desde la dirección 0x1800 hasta la 0x1FFC, el usuario dispone de un buffer adicional para la recepción de un paquete extra. En la Tabla 5-16 se muestran las direcciones relativas a este buffer. Tabla 5-16: Direcciones de memoria de la IP Ethernet Lite para el Buffer PONG RX Dirección Sección Función 0x1800 BUFFER RX PONG Dirección de destino, bytes 3 – 0 0x1804 Dirección fuente, bytes 1 – 0 0x1808 Dirección fuente, bytes 5 – 2
59 Diseño e implementación de un sistema de adquisición multicanal para experimentos de radiación 0x180C Campo Dato, byte 1 – 0 Campo Longitud o Tipo 0x1810 - 0x1FDC Bytes restantes del campo Dato 0x1FE0 - 0x1FF8 Reservado 0x1FFC Control Compruébese que el mapa de memoria está asociado a direcciones de 32 bits (4 bytes). Además, se puede observar que este está organizado en 6 secciones diferenciadas, principalmente, por su funcionalidad: Asimismo, es necesario mencionar que los buffers PONG son opcionales, de manera que, si se no instancian, es posible ahorrar recursos de la FPGA. La transmisión y recepción de paquetes se realiza mediante el manejo de las direcciones de memoria mostradas en, de manera que en estas se cargarán tanto datos a enviar como diferentes instrucciones para la IP. Por otro lado, se generarán diferentes interrupciones que indicarán ciertos eventos, como la finalización de la transmisión o recepción de un paquete, indicando el momento en el que se puede volver a interactuar nuevamente con la IP. La gestión de esta IP se basa en el siguiente planteamiento: mediante los registros de control se comprueba si la IP está ocupada en la tarea en la cual se quiera trabajar (transmisión o recepción). Si está ocupada, será necesario esperar hasta que esté libre, existiendo dos alternativas de espera: emplear la técnica de polling al estado de los registros o esperar la generación de una interrupción. En el caso donde la IP no está ocupada, será posible acceder a las direcciones de memoria de interés, de manera que se cargarán o leerán los datos del paquete Ethernet, se cargarán los parámetros necesarios en el caso de la transmisión y se le indicarán a la IP el fin de la gestión a través de los registros de control. La transferencia de paquetes entre la IP y un transceiver Ethernet se realiza mediante la interfaz MII, gestionada de forma autónoma por la propia IP, de manera que recorrerá desde la primera dirección de memoria hasta la indicada en el registro “longitud”. El envío de cada palabra de 32 bits consistirá en dividir el dato en paquetes de 4 bits, los cuales se enviarán paralelamente por cada flanco de reloj de transmisión y donde el orden de envío comenzará por el byte menos significativo y terminará por el más significativo. De esta manera, el dato que llega al receptor Ethernet queda invertido respecto al original. Una vez terminada la transferencia de datos solicitada previamente por el usuario, la IP notifica al usuario sobre la disponibilidad de la IP a través de medios mencionados anteriormente. Las señales empleadas para dicha interfaz están recogidas en la Tabla 2-8 8 en el apartado de la Capa física. Además, se encuentra la interfaz MDIO por la cual es posible acceder a registros internos del transceiver, de manera que se puede configurar en un modo de funcionamiento u otro. Para trabajar con esta interfaz se emplea una metodología similar que la MII: se comprueba si la interfaz está ocupada, en el caso que no lo esté se carga en los registros correspondiente los datos de interés (dirección del registro, tipo de operación y dato a escribir, si fuera necesario) y mediante el registro de control específico de la interfaz MDIO se indica que comience la comunicación. De esta manera, la IP se encarga autónomamente de este tipo de comunicación, facilitando la configuración del transceiver de manera que la capa física de esta comunicación sea transparente para el usuario [17]. En definitiva, este módulo cuenta con una memoria interna que actúa como buffer para los datos entrantes, que posteriormente se enviarán a un transceiver Ethernet. La IP Ethernet Lite esperará la señal de comienzo de la transmisión procedente del controlador Eth, y empezará enviar los datos de manera sincronizada con el reloj del transceiver, según las especificaciones del protocolo MII. Además, este módulo ofrece la oportunidad de acceder a los registros de configuración del transceiver gracias a la interfaz MDIO. Seguidamente, se explicará en el siguiente apartado los puertos que forman la entidad del componente. 5.5.1 Entidad Los puertos que conforman la entidad de la IP Ethernet Lite estarán diferenciados en función de la interfaz que
Data Recorder Ethernet 60 pertenezcan, las cuales son: la comunicación AXI4-Lite con el puente AXI, las interfaces MII y MDIO con el transceiver Ethernet y la comunicación con el controlador Eth. De esta forma, en la Tabla 5-17, se muestran dichos puertos junto con la dirección que toman y una breve descripción, exceptuando la interfaz AXI4-Lite, la cual es transparente dentro de la arquitectura global del sistema. Tabla 5-17: Entidad de la IP Ethernet Lite (1*) Nota: El bus de dato en la interfaz MDIO es bidireccional, por tanto, es necesario instanciar una puerta triestado. Notar que las señales relativas a la interfaz MII son una versión reducida respecto a las señales que aparecen en la Tabla 2-8, ya que para este proyecto la comunicación será Full-Dúplex donde solo el flujo de datos solo irá hacia el exterior. Por tanto, las señales asociadas a la recepción de datos y al control de una comunicación Half- Dúplex no se tomarán en cuenta. Nombre Dirección Descripción Interfaz Sistema General s_axi_aclk Entrada Reloj de lectura. s_axi_aresetn Entrada Reset asíncrono, activo a nivel bajo. Interfaz MII phy_rst_n Salida Reset asíncrono, activo a nivel bajo. Esta señal es una extensión hacia el transceiver Ethernet del puerto de entrada ‘s_axi_aresetn’. phy_tx_clk Entrada Señal de reloj de transmisión. phy_tx_data Salida Dato de transmisión. Bus de 4 bits. phy_tx_en Salida Señal de habilitación de la comunicación, activa a nivel alto. Interfaz MDIO phy_mdc Salida Reloj para la comunicación síncrona phy_mdio_i Entrada Señal para lectura del bus de dato. Bus de 1 bit. phy_mdio_o Salida Señal para envío por el bus de dato. Bus de 1 bit. phy_mdio_t (1*) Salida Señal de control para la puerta tri-estado para el bus de dato. Interfaz con el controlador Eth ip2intc_irpt Salida Señal que indica la generación de un evento en la IP, activa a nivel alto y síncrono con el reloj de la comunicación AXI (reloj de lectura).
61 6 VALIDACIÓN ras diseñar e implementar el diseño de la arquitectura del Data Recorder, en este capítulo se expondrán los diferentes resultados de los ensayos de validación realizados sobre el sistema. Principalmente, estos ensayos abordarán el comportamiento funcional del Data Recorder, de manera que se comprobará el correcto envío de datos a través de las interfaces de comunicación empleadas con destino los sistemas de almacenamiento o procesamiento, usando herramientas específicas para cada una de estas interfaces. Dichas herramientas serán el entorno de simulación VUnit, donde se realizarán pruebas para los casos más críticos dentro del almacenamiento de la tarjeta SD; la aplicación para la depuración mediante analizadores lógicos, ScanaStudio y el analizador de paquetes de red Wireshark, por el cual se depurará el comportamiento de la comunicación Ethernet. 6.1 Herramientas de verificación para la funcionalidad de Data Recorder SD Dentro del diseño de la arquitectura de Data Recorder SD, se implementaron determinados modos de funcionamiento que contemplan situaciones críticas para el almacenamiento en tarjetas SD, como la escritura cuando la memoria está completa, lo cual provocaría sobreescritura involuntaria de datos. De forma que, para verificar que el sistema es capaz de solventar esta situación, se empleará el entorno de simulación VUnit, el cual ofrece modelos de tarjetas SD para la depuración. Además, sobre este mismo entorno de simulación se comprobará la bondad del funcionamiento general de Data Recorder SD. Adicionalmente, una vez que se supere la verificación realizada en VUnit, a través de un analizador lógico se analizará el funcionamiento de la implementación del sistema sobre el dispositivo físico, leyendo las señales de la comunicación SPI. 6.1.1 Ensayos en VUnit En el entorno de simulación VUnit, se instanciaron los siguientes elementos: un emulador de datos como fuente de datos del mismo tipo y sincronización que los procedentes de los detectores de radiación, el Data Recorder SD y un modelo de una tarjeta SD de 32 GB. Sobres dichos elementos se realizaron 5 pruebas distintas: 1. Envío de 2500 palabras empezando desde el bloque con dirección 0 de la tarjeta SD. 2. Envío de 2500 palabras con el 90 % de la capacidad de la tarjeta SD ya ocupada. 3. Envío de 2500 palabras con el 99 % de la capacidad de la tarjeta SD ya ocupada. 4. Acción repetida de arranque y parada del sistema. 5. Envío de 75000 palabras empezando desde el bloque con la dirección 0 de la tarjeta SD. 6.1.1.1 Test 1 en VUnit En esta prueba se generarán 2500 palabras de 24 bits con la sincronización de los tres tipos de detectores de radiación, las cuales pasarán a través del Data Recorder SD para que sean procesados y, finalmente, se enviarán a una tarjera SD, de manera que estas completarán hasta 14 bloques. El objetivo de esta prueba es comprobar el funcionamiento nominal del sistema. Seguidamente, en la Figura 6-1 se muestra el resultado de la simulación. T
Validación 62 Figura 6-1: Test 1 en VUnit En la Figura 6-1 se presentan las señales correspondientes al componente FSM_SD, principalmente a las relacionadas con el envío de datos al HCI. La simulación muestra el comportamiento esperado: el Data Recorder SD espera que se almacene suficiente información en la FIFO para completar un bloque de 512 bytes antes de comenzar a solicitar y enviar los datos a la tarjeta SD. En total, se generan suficientes palabras para 14 bloques, de manera que la dirección del último bloque en hexadecimal será “0xE”, además de quedar algunos datos restantes en la FIFO. A continuación, en la Figura 6-2 se ilustra el funcionamiento del envío de una palabra y de cómo se aplica el relleno al final de un bloque. Figura 6-2: Envío de una palabra a la tarjeta SD y relleno del bloque A través de la Figura 6-2 se puede comprobar que la última palabra leída de la FIFO es “0x95CF2A”, de manera que el dato “0x95” está asociado al byte número 508 (“0x1FC”) del bloque, el dato “0xCF” al byte 509 (“0x1FE”) y el dato “0x2A” al byte 510 (“1FE”). Los bytes restantes, el 511 y el 512, se rellenan con el dato “0xFF”. 6.1.1.2 Test 2 en VUnit En esta prueba, se volverá a enviar 2500 palabras con la misma sincronización que en el apartado anterior, con la excepción de que la tarjeta SD tendrá el 90 % de su almacenamiento lleno. Por tanto, se espera que el
63 Diseño e implementación de un sistema de adquisición multicanal para experimentos de radiación componente funcione de misma forma que en la prueba previa, pero avisando de que la tarjeta está casi llena. En la Figura 6-3 se muestra el resultado de la simulación. Figura 6-3: Test 2 en VUnit Mediante la figura anterior se puede apreciar que se cumple con el comportamiento espera, ya que el último bloque en escribir es el leído inicialmente sumando 14. Además, cuando comienza a enviar datos hacia la tarjeta SD se enciende la señal c_almost_full, indicando que la tarjeta está cerca de llenarse en su totalidad. 6.1.1.3 Test 3 en VUnit En esta prueba se iniciará con el almacenamiento de la tarjeta SD cercano al máximo, a 4 direcciones de memoria de completarlo. De esta manera, a medida que se vaya generando y enviando palabras a la tarjeta, cuando se alcance el límite el componente debe detener el funcionamiento del sistema. En la Figura 6-4 se muestra el resultado de la simulación. Figura 6-4: Test 3 en VUnit A través de la Figura 6-4 se observa el funcionamiento esperado donde, inicialmente, se detecta que el almacenamiento de la tarjeta SD se encuentra por encima del 90 % y envía datos. Sin embargo, cuando se alcanza la dirección “0x03B9ACA0”, el FSM_SD entra en un estado estable donde bloquea el funcionamiento
Validación 64 del sistema, además de encender la señal “full” indicando que la tarjeta SD está llena. 6.1.1.4 Test 4 en VUnit En esta prueba se comprobará el funcionamiento de la puesta en marcha y parada del sistema, de modo que al arranca el sistema el Data Recorder debe inicializar la comunicación SPI con la tarjeta SD y leer en el primer bloque la próxima dirección a escribir, y al detenerse el sistema debe vaciar la FIFO y escribir en el primer bloque la siguiente dirección a escribir. En la Figura 6-5 y Figura 6-6 se muestra el arranque y en Figura 6-7 la finalización de la comunicación SPI , ambas implementadas en el HCI. Figura 6-5: Test 4 en VUnit (configuración SPI) Figura 6-6: Test 4 en VUnit (lectura de dirección a escribir) A través de estas figuras se puede observar la secuencia programada para el arranque del sistema e inicialización de la comunicación con la tarjeta. De este modo, se configura en una primera instancia la comunicación SPI, indicando la interfaz de comunicación y el tamaño de bloque, como se ve en la Figura 6-5, y posteriormente la lectura en el primer bloque de la tarjeta la dirección del siguiente bloque disponible a escribir, que en este caso es la dirección “0x01”, como se aprecia en la Figura 6-6. Seguidamente, en la Figura 6-7 se muestra el funcionamiento donde se ha indicado al sistema que se detenga y,
65 Diseño e implementación de un sistema de adquisición multicanal para experimentos de radiación por tanto, vacíe todo el contenido almacenado en la FIFO. Esto se ve con claridad, gracias a que una gran porción de los datos a enviar a la tarjeta es el dato “0xFF”, a diferencia de dos únicos bytes en el caso del funcionamiento nominal. Figura 6-7: Test 4 en VUnit (Vaciamiento FIFO) Enfocándonos en la última parte de la comunicación, se puede apreciar que el sistema se dirige al primer bloque de la tarjeta SD y escribe la dirección del siguiente bloque a escribir, que en este caso será el “0x0D”, ya que el último bloque escrito fue el “0x0C”. Esto hecho se distingue con mayor precisión en la Figura 6-8. Figura 6-8: Test 4 en VUnit (escritura en bloque 0) Es necesario mencionar que el resto de los bytes escritos en el primer bloque son el dato arbitrario “0x2A”, ya que una vez que se inicia la escritura de un bloque es necesario escribir sobre todos bytes de este. Por último, se mostrará nuevamente la acción de arranque de sistema, de manera que se espera que se lea la dirección escrita previamente. Esta situación se ilustra en la Figura 6-9.
Validación 66 Figura 6-9: Test 4 en VUnit (segundo arranque del sistema) En la figura anterior se omite la fase de configuración, puesto que es idéntica para cualquier instancia donde se inicie la comunicación SPI. Aquí; sin embargo, es de interés apreciar que la dirección leída es la “0x0D”, la cual fue escrita en la operación de detención anterior. 6.1.1.5 Test 5 en VUnit En esta última prueba se verificará si el funcionamiento del Data Recorder SD cumple con los requisitos temporales. Para ello, se generará una cantidad de datos equivalente a 75.000 palabras, lo que supera en más de cuatro veces la capacidad máxima de almacenamiento de la FIFO. De esta forma, si durante el envío de datos a la tarjeta SD, la FIFO no llega a llenarse por completo, significará que no se pierden datos, demostrando que el sistema es lo suficientemente rápido. En la Figura 6-10 se muestran los cambios de las señales de la FIFO SD resultantes de esta simulación. Figura 6-10: Test 5 en VUnit A través de la figura anterior, se observa que la FIFO no alcanza a completarse en su totalidad en ningún instante, ya que nunca se activa la señal full de este componente. Sin embargo, como se puede comprobar en la Figura 6-11, en media el aumento de la cantidad de palabras en la FIFO es menor al decremento de esta debido al envío
67 Diseño e implementación de un sistema de adquisición multicanal para experimentos de radiación de los datos hacia la tarjeta SD. Figura 6-11: Test 5 en VUnit (zoom) Mediante esta última figura se puede comprobar que el tiempo que tarda los detectores de radiación en llenar la FIFO de forma que exista 512 bytes es hasta 5.8 veces superior al tiempo que toma el Data Recorder SD en enviar la misma cantidad de información hacia la tarjeta SD, por tanto, en media la FIFO tiende a vaciarse, cumpliendo de este modo con los requisitos temporales. 6.1.2 Implementación física del Data Recorder SD En este apartado se verificará el comportamiento del sistema sobre el dispositivo físico, de modo tal que se analizarán los dos siguientes puntos: 1. Las señales de la comunicación SPI mediante un analizador lógico. 2. Lectura de datos almacenados en la tarjeta SD a través del comando hexdump. 6.1.2.1 Depuración comunicación SPI Paralelamente al conexionado entre los pines de entrada y salida de la FPGA y la tarjeta SD se introdujo un analizador lógico de 4 canales con una frecuencia de muestreo de 100 MHz. A través de los canales del analizador lógico se podrán leer las señales de la comunicación SPI: CS, MOSI, MISO y SCK. En las Figura 6-12 se muestran las medidas obtenidas durante una ventana de 6 ms mediante la aplicación ScanaStudio.
Referencias 74 74 [16 ] A. Perez, «Chapter 1. Network Operation: 1.5 Ethernet Technology,» de IP, Ethernet and MPLS networks: Resource and Fault Management, London, England ; Hoboken, New Jersey, ISTE: Wiley, 2011. [17 ] Xilinx, «LogiCore IP AXI Ethernet Lite MAC (v1.01.b),» 25 Julio 2012. [En línea]. Available: https://docs.amd.com/v/u/en-US/ds787_axi_ethernetlite. [Último acceso: 3 Julio 2024]. [18 ] IEEE Computer Society, «IEEE Std 802.3-2022, IEEE Standard for Ethernet,» 29 Junio 2022. [En línea]. Available: https://ieeexplore.ieee.org/document/9844436. [Último acceso: 3 Julio 2024]. [19 ] Numato Lab, [En línea]. Available: https://numato.com/product/100base-t-ethernet-expansion-module/. [Último acceso: 2023]. [20 ] Microchip, 2016. [En línea]. Available: https://ww1.microchip.com/downloads/en/DeviceDoc/00002164B.pdf. [Último acceso: Enero 2024]. [21 ] Xilinx, «FIFO Generator v13.1 LogiCORE IP Product Guide (PG057),» 5 Abril 2017. [En línea]. Available: https://docs.amd.com/v/u/13.1-English/pg057-fifo-generator. [Último acceso: 17 Agosto 2024]. [22 ] it-sd, «Secure Digital Card Commands,» it-sd, 6 Junio 2023. [En línea]. Available: https://www.itsd.com/articles/secure-digital-card-commands/. [23 ] Xilinx, «7 Series FPGAs Clocking Resources User Guide (UG472),» 30 Septiembre 2018. [En línea]. Available: https://docs.amd.com/v/u/en-US/ug472_7Series_Clocking. [Último acceso: Agosto 18 2024]. [24 ] Xilinx, «Back,» 22 Abril 2011. [En línea]. Available: https://docs.amd.com/v/u/en-US/clk_wiz_ds709. [Último acceso: 18 Agosto 2024]. [25 ] Xilinx, «7 Series FPGAs Data Sheet: Overview (DS180),» 8 Septiembre 2020. [En línea]. Available: https://docs.amd.com/v/u/en-US/ds180_7Series_Overview. [Último acceso: 28 Agosto 2024]. [26 ] Microchip, «Silicon Errata and Data Sheet Clarification,» 2014. [En línea]. Available: https://ww1.microchip.com/downloads/aemDocuments/documents/OTH/ProductDocuments/Errata/8000 0625A.pdf. [27 ] ARM, «AXI protocol overview,» [En línea]. Available: https://developer.arm.com/documentation/102202/0300/AXI-protocol-overview. [28 ] ARM, «AMBA AXI and ACE Protocol Specification AXI3, AXI4, and AXI4-Lite ACE and ACE-Lite,» 2013. [En línea]. Available: https://documentation-service.arm.com/static/5f915b62f86e16515cdc3b1c. [29 ] Digilent , «Pmod MicroSD Reference Manual,» [En línea]. Available: https://digilent.com/reference/pmod/pmodmicrosd/reference-manual. [Último acceso: 2023]. [30 ] AMD, «What is an FPGA?,» AMD, [En línea]. Available: https://www.xilinx.com/products/silicondevices/fpga/what-is-an-fpga.html. [Último acceso: 15 4 2024].
75 Diseño e implementación de un sistema de adquisición multicanal para experimentos de radiación