Diseño de un reloj sidéreo sobre una plataforma uClinux y FPGA

Parte del instrumental que tiene el I.A.R. está dedicado al sistema de apuntamiento de una antena de 30mts de diámetro, con la cual realiza observaciones radioastronómicas en la banda de 1420Mhz(HI). Uno de los módulos está encargado de proveer una señal de referencia de tiempo y frecuencia que está sincronizada con el movimiento de los astros, este reloj se denomina de “tiempo sidéreo”.

Por definición, un día solar tiene exactamente 24 horas. Sin embargo, las estrellas tienen un movimiento ligeramente distinto: durante el transcurso de un día, la Tierra se habrá movido un poco a lo largo de su órbita alrededor del Sol, por lo que debe girar una pequeña distancia angular extra para completar un día; mientras que las estrellas están tan alejadas que el movimiento de la tierra a lo largo de su órbita genera una diferencia apenas apreciable con respecto a su dirección aparente, por lo que vuelven a su punto más alto en algo menos de 24hs. En consecuencia un día sidéreo ocupa alrededor de 23 h y 56 min. (Fig. 1)

 

Plataforma de hardware
El desarrollo del hardware se basó en dos puntos críticos: la necesidad de utilizar protocolos de red Ethernet como NTP y HTTP, y poder implementar un reloj propietario en VHDL que opere de forma independiente a la plataforma de software utilizada. (Fig. 2)

Este RTC debe en función de una señal externa de 50Hz Sidéreos (~50.1368Hz) poder mantener el tiempo en horas y ángulos sidéreos que se configuran y sincronizan por software, además debe proveer señales de salida como un PPS Sidéreo (~0,9972seg) y una interfase serial sincrónica para enviar la información a los módulos que así lo requieren.

Por ello se decidió utilizar una plataforma del tipo SBC (Single Borad Computer) la cual fue desarrollada en el I.A.R. Esta plataforma tiene como componente principal una FPGA Spartan3E500 de la firma Xilinx®, en la cual se implementara un softcore de la misma firma denominado MicroBlaze®. Además cuenta con un Bus de comunicación, memoria SDRAM, memorias SPI, puerto Ethernet, I2C, SPI, entre otros dispositivos. El Bus de comunicación permite conectar una segunda placa que contiene una memoria tipo SD la cual guarda una imagen uCLinux, interfase USB de comunicación y un RTC para mantener la hora local de forma precisa. Durante el desarrollo del proyecto se utilizó un kit de la firma Digilentinc® (Spartan 3E Starter Kit). Como interfase visual se utilizan displays de 7 segmentos que presentan la información de forma continua. (Fig. 3)

 

Plataforma de software
Para facilitar el desarrollo de las aplicaciones de software y mantener un nivel de abstracción con el hardware se decidió utilizar un sistema operativo un uClinux, esto también facilita la utilización de protocolos de red que están ampliamente desarrollados para este tipo de plataformas. (Fig. 4)

El desarrollo se basó en la distribución petalinux v0.4 utilizando un kernel 2.6.

Las aplicaciones de software desarrolladas se encargan de forma independiente de calcular el tiempo sidéreo, configurar el RTC propietario, mantener la hora del sistema actualizada mediante el protocolo NTP, presentar la información en displays 7 segmentos, y proveer comunicación con el RTC local en caso no haya comunicación de red. Estas funciones se llevan a cabo durante el inicio como se muestran en el diagrama de software.

Luego una aplicación se ejecuta cada cierto tiempo para verificar el estado del tiempo vía NTP y el tiempo sidéreo por software, para así poder corregir cualquier diferencia que se pueda producir y guardar Logs de estado. El software se desarrollo en C en una plataforma Linux con las herramientas de cross-compiling de petalinux.

 

Conclusión
Se buscó dar respuesta a una necesidad concreta del I.A.R. Para lo cual se presenta un prototipo funcional del modulo RTS junto con las etapas de desarrollo. El mismo permitirá mantener y distribuir de forma precisa la hora y ángulos sidéreos. (Fig. 5 y 6)

Autor:
Guillermo Gancio