Para la locomoción del robot es necesario generar las señales PWM a partir de la información que se encuentra en la tabla de control, tal como se muestra en el cuadro 1. Cada posición de los servos se codifica con 8 bits y en cada fila hay 32 bits. En total la tabla tiene 30 filas.
|
Las unidades PWM se ha tomado del proyecto Labobot[18,19] y se han optimizado, usando un único contador de 11 bits para todas ellas. El diseño se puede ver en la figura 3 (``Hardware para PWM''). El contador de 11 bits se incrementa a una frecuencia de 100KHz, volviendo al estado inicial cada 48.8Hz. Se obtienen unas señales PWM de frecuencia 48.8Hz, que entran dentro de los márgenes de tolerancia del servo (la frecuencia nominal es de 50Hz). Los comparadores establecen el nivel de salida del PWM, según que la posición deseada sea mayor o menor que el valor del contador.
La plataforma software de desarrollo se basa en el sistema operativo Linux y el flujo de diseño se ha realizado empleando la herramienta libre Ghdl[16], basada en el compilador GCC, para el compilado/simulado de los diseños en VHDL, el sintetizador Synplify Pro 7.1.1 a través de Wine[17] y el entorno ISE 4.2 de Xilinx, también a través de Wine, para la parte de implementación.
La plataforma hardware de desarrollo es la tarjeta JPS[14,15] con una FPGA Spartan I, y un oscilador de 1MHZ para la señal de reloj. Los bitstreams generados se descargan en ella conectándola al puerto serie del PC, a través de un interfaz desarrollado con la tarjeta CT6811 y un software bajo Linux. Los diseños finales se han grabado en una memoria eeprom serie (AT17C128), que se inserta en la tarjeta JPS y al alimentar el sistema o pulsar el botón de programación, la FPGA se configura y el gusano comienza a moverse.
Juan Gonzalez 2003-12-29