• No results found

El objetivo es implementar algoritmos de auto-enfoque en tiempo real a tasas de imagen elevadas. Por las razones apuntadas anteriormente optamos por una implementación basada en FPGAs, en lugar de un sistema de adquisición conectado a un ordenador central de procesamiento. En este sistema el control de los circuitos de emisión, la digitalización de las

señales recibidas y la conformación de la imagen se realizan de forma distribuida en las FPGA del sistema, transfiriendo la imagen final a un computador de control. Además, el sistema dispone de un procesador local suficientemente potente para implementar los algoritmos de auto-enfoque ante cambios de geometría y con capacidad para reprogramar rápidamente los parámetros de adquisición en las FPGAs. Otros objetivos fueron la escalabilidad y el procesamiento distribuido. Lo primero es importante para cubrir aplicaciones que requieran distinto número de canales, algo usual en NDT. Por otra parte, el procesamiento distribuido es imprescindible para manejar el gran volumen de datos generado. Así, el sistema está basado en módulos capaces de controlar, digitalizar y procesar 32 canales de ultrasonido (Figura 2.19.izq). Los módulos se pueden conectar entre sí mediante un bus segmentado de alta velocidad para realizar sistemas de un número ilimitado de canales en bloques de 32. La Figura 2.19.dcha muestra la instalación del módulo, conectado a un array, en una base con fuentes de alimentación y UCI, descrita a continuación.

Cada módulo contiene la electrónica analógica de excitación (pulsers), circuitos de protección y el front-end analógico (amplificador, filtro y conversor A/D) para 32 canales (ver Figura 2.19). Cuenta además con 1 GB de memoria DDR para almacenar el resultado de la conformación o directamente las señales recibidas, lo que permite implementar diversos modos de funcionamiento. La FPGA elegida es la XC7K160T de la serie Kintex de Xilinx, aunque la huella es compatible con los modelos XC7K325T y XC7K410T, de mayor capacidad.

Figura 2.19 -Izquierda: Módulo de 32 canales multi-conformador basado en XC7K160T, que incluye pulsers, AFEs y 1 GB de memoria DDR-3. Derecha: integración del módulo en una placa base con fuentes de

Además de los módulos de procesamiento, cada sistema cuenta con una Unidad de Control e interfaz (UCI) que controla la adquisición, ejecuta las rutinas de auto-enfoque y realiza la comunicación con el ordenador central de almacenamiento y visualización de resultados. [Moreno, 2012]. La UCI se implementa en un módulo comercial basado en el FPGA-SoC de Xilinx ZYNQ XC7Z100, que además de una FPGA de altas prestaciones, proporciona dos procesadores ARM. Uno de ellos (CPU0) se encarga de las comunicaciones con el PC mediante GEthernet, alcanzando 90MB/s, mientras que el otro procesador (CPU1) se encarga de programar y configurar las FPGAs de los módulos y de ejecutar el programa de adquisición. Es en este procesador donde se implementan los algoritmos de auto-enfoque, utilizando herramientas avanzadas de síntesis como HLS [Cruza, 2014].

El sistema cuenta con dos buses segmentados entre las FPGAs de los diferentes módulos de procesamiento para sistemas con N > 32 canales. El primero, basado en 10 pares LVDS (6.4 Gb/s), se utiliza para programación de parámetros de adquisición y procesamiento y enviar las imágenes ya conformadas a la UCI, siendo la CPU1 maestra en todas las transferencias.

El segundo bus está basado en los transceptores GTX de la serie 7 de Xilinx, que proporcionan una comunicación dúplex de hasta 10 Gbps en cada sentido (en los dispositivos utilizados, speed grade 2). Cada módulo se conecta con el anterior con 4 GTX y con el siguiente con los 4 restantes en el chip. De esta manera, si se cierra el circuito (topología de anillo, Figura 2.20.dcha) se obtienen dos buses circulares de 40Gbps cada uno, cuyos datos circulan en sentido opuesto, lo que permite la transferencia de datos entre dos FPGA cualesquiera del sistema a 80 Gb/s si se ocupan los dos buses. En caso de no cerrar el circuito (Figura 2.20.izq), se perdería la mitad del ancho de banda disponible

El bus de alta velocidad se utiliza para transmitir las imágenes parcialmente conformadas entre las FPGAs de los módulos, ya que formar cada línea de imagen requiere información de todos los canales (Ec. 4). Para ello, cada módulo conforma las L líneas de la imagen con la información adquirida por sus 32 canales, y las envía por uno de los dos buses de 40 Gbps a la siguiente FPGA. Esta suma los resultados de conformar sus propios canales con los datos recibidos de la anterior y envía el resultado al módulo siguiente. Cuando los datos han recorrido todas las FPGAs, la imagen ya está completamente formada.

La imagen conformada se almacena en la memoria dinámica (DDR) de los módulos, pues la memoria interna de las FPGAs es insuficiente. La imagen se divide en tantas zonas como módulos de 32 canales haya en el sistema, y cada módulo usa su DDR para almacenar su parte de la imagen. De esta manera se aprovecha no sólo la potencia de procesamiento de todas las FPGAs, sino también el ancho de banda de memoria de todos los módulos, haciendo del sistema una arquitectura de procesamiento distribuido a alta velocidad.

Figura 2.20 - Izquierda: Si no se cierran las conexiones entre los módulos extremos se consigue un único bus de 40 Gbps máximo. En caso de cerrarlo se opera con dos circuitos

cerrados de 40Gbps, duplicando el ancho de banda.

FPGA FPGA FPGA FPGA SoC FPGA FPGA FPGA FPGA SoC 4xGTX @ 10Gbp

La Figura 2.21 muestra la placa base de un sistema de 128 canales, donde se aprecian las huellas de las fuentes de alimentación, la UCI, los 4 módulos de adquisición y procesamiento de 32 canales, la fuente de alta tensión y los dos conectores de alta velocidad. Estos Figura 2.21 - Placa base de un sistema de 128 canales. 1- Módulos de 32 canales; 2- Módulo

SoC; 3- Fuente de alta tensión; 4- Fuentes de baja tensión; 5- Ampliación con 8 canales de ultrasonido convencional [Cruza, 2010] [Cruza, 2011b]; 6- Conectores de alta velocidad.

1

1

1

1

2

3

4

6

6

5

conectores permiten escalar el sistema interconectando placas de 128 canales y manteniendo la topología en forma de anillo sin perder velocidad de transferencia (Figura 2.22).