DESARROLLO DE IP CORE PARA COMUNICACIONES DE GIGABITS ENTRE FPGAs
Melo, R(i); Caruso D.(ii) (i)INTI Micro y Nanoelectrónica del Bicentenario, (ii)Satellogic
rmelo@inti.gob.ar
Introducción
Satellogic es una compañía fundada en 2011, con sede central en Buenos Aires, con el objetivo de brindar datos de observación de la tierra para la toma de decisiones diarias, a partir de una flota de nano-satélites. Ya han sido puestos en órbita 5, 3 prototipos y 2 con capacidad de dar servicios para las industrias del petróleo, gas y agricultura. En el transcurso de 2017 se planean lanzar 3 más y esperan llegar a una constelación de 300 para 2020.
Entre los varios sistemas que componen cada nano-satélite, se encuentra el de adquisición y procesamiento de las imágenes recolectadas. El mismo consiste, de manera simplificada, en un sensor de imágenes, tres Placas de Circuitos Impresos (PCB) y la unidad de procesamiento (ver Fig. 1). Cada PCB alberga un dispositivo lógico programable (SoC-FPGA) SmartFusion2 de la empresa Microsemi.
Figura 1: esquema simplificado del sistema completo.
En este trabajo se presenta el desarrollo realizado en conjunto entre la empresa Satellogic y el Centro de Micro y Nanoelectrónica del Bicentenario.
Objetivo
Desarrollar un IP Core para resolver la comunicación entre un sensor de imágenes de muy alta resolución y la unidad de procesamiento. Para obtener tasas de transferencia mayor al Frame por Segundo (fps), dado el volumen de datos proveniente del sensor, se utilizaron los High Speed Serial Interface (SERDES) disponibles en la FPGA de cada PCB.
Descripción
Al momento de iniciar el desarrollo, Satellogic contaba con un sistema que:
• Guardaba las imágenes del sensor en una memoria del tipo DDR del PCB 1.
• Tomaba las imágenes desde una DDR del PCB 3.
• Transfería imágenes desde PCB 1 a PCB 3 haciendo uso de una conexión serie de muy baja velocidad (UART).
La primera etapa del proyecto consistió en estudiar la utilización de los SERDES de la FPGA. El fabricante ofrece un documento instructivo y un ejemplo básico, que consiste en la transmisión y recepción, con posterior comparación, del valor de una cuenta. El mismo está pensado para ser utilizado con una placa de evaluación que interconecta sobre el PCB los canales de transmisión y recepción. Dado que el hardware a utilizar no poseía dicha característica, se optó por realizar la prueba utilizando dos de los PCB y realizando la interconexión dentro de la FPGA del segundo.
Tras obtener resultados satisfactorios, se inició el desarrollo para interconectar los tres PCB con los transceivers de alta velocidad en remplazo de las UARTs. En la Fig. 2 se puede apreciar la primera versión, donde: • Las DDR, incluidas dentro del SoC-FPGA,
utilizan el estándar de interconexión AXI. • La máquina de estados (FSM) se encarga de
la indexación de imágenes en la DDR. • La función principal de la FIFO es sincronizar
los distintos dominios de reloj del sistema para evitar problemas de meta-estabilidad. Lo mismo aplica a la cadena de Flip-flops utilizada en el PCB 2. • El bloque PCS (provisto por el fabricante), resuelve la codificación 8b10b, típicamente utilizada en conexiones de alta velocidad.
Figura 2: diagrama en bloques simplificado versión 1.
Esta primera versión andaba para paquetes de datos pequeños, presentando funcionamiento errático en otro caso. El agregado de una DDR en el PCB 2 a modo de buffer de datos y ajustes varios, derivaron en la primera versión en vuelo.
Si bien las mejoras a nivel tasa de transferencia entre las versiones con UART y SERDES fueron sustanciales, se estaba lejos aún de los fps necesarios para un buen servicio. Adicionalmente, se observó una tasa de error elevada. Se llegó a la conclusión de que los problemas estaban relacionados al controlador de memoria DDR, que presentaba problemas en ciertas circunstancias y era cuello de botella para lograr las velocidades de transferencia necesaria. Así, se decidió realizar una reescritura del Core, eliminando el uso de las DDR y haciendo más robusta la transferencia de datos.
La nueva versión, elimina la FSM por hablar
directamente con el sensor, y agrega los
bloques CRC y Scrambler. El cálculo de Cyclic
Redundancy Check se agregó para poder
verificar si los datos se reciben correctamente.
El bloque Scrambler, realiza un reordenamiento
de los bits de datos para disminuir efectos de
Interferencia
Electromagnética
(EMI).
Básicamente consiste en realizar una
operación XOR entre los datos y la cuenta de
un Linear Feedback Shift Register (LFSR).
Ambos están basados en la especificación
SATA 3.
Figura 3: diagrama en bloques simplificado versión 2.
En la Fig. 3 puede verse el diagrama en bloques de la segunda versión. En el caso del PCB 2, se juntaron los bloques receptor y transmisor, compartiendo la misma FIFO, para formar un nuevo bloque denominado bridge.
Todos los bloques están preparados para utilizar una o dos líneas de alta velocidad.
Resultados
Las descripciones de hardware del diseño fueron realizadas en lenguaje Verilog, dado que se contaba con código previo utilizando el mismo.
La versión preexistente que utilizaba UARTs, proveía una imagen cada aproximadamente 12 minutos. La primera versión con SERDES a 2 Gb/s, bajo el tiempo a 400 ms, lo que equivale a 2,5 fps. Se mejoró el tiempo entre imágenes 1800 veces.
La primera versión utilizaba memorias DDR como almacenamiento intermedio, pero cálculos estimativos indicaron que con la misma no se podrían superar los 5 fps. Se estima que la nueva versión del Core provee 6.5 fps utilizando una línea a 2 Gb/s y 13 fps utilizando las dos líneas.
El transceiver soporta velocidades de transferencia mayores, pero limitaciones en el hardware impiden su utilización. Versiones futuras de los PCB lo solucionaran.
Es de destacar que se estiman 6 fps para un servicio aceptable y 10 para que sea considerado bueno.
Conclusiones
Se obtuvo en primera instancia una mejora sustancial, que llevo la adquisición de imágenes a un tiempo prudencial. Esta versión estuvo en órbita entre Diciembre de 2016 y Marzo de 2017.
Se realizó una reescritura del Core para hacerlo más robusto. El bloque bridge se encuentra en vuelo desde Abril de 2017. Los bloques transmisor y receptor aún no fueron remplazados, dado que la salida de las DDR cambia la manera de comunicarse con el sensor de imágenes y con la unidad de procesamiento, y las modificaciones necesarias están en progreso.
Los diseños fueron instalados remotamente, en los satélites NewSats 1 & 2, conocidos públicamente como Fresco y Batata, al pasar por la estación terrena en el Ártico.
Se realizó un desarrollo en conjunto entre Satellogic e INTI, compartiendo instalaciones y equipamiento. El mismo involucró un agente de cada entidad, trabajando juntos in situ o comunicándose mediante plataformas online.
Ver+/-