INTRODUCCIÓN

Utiliza un giroscopio para visualizar los datos de aceleración en tres ejes en una pantalla LCD 16×2 y por medio de PWM (modulación por ancho de pulso) en 4 LEDs RGB.

INSTRUMENTOS UTILIZADOS EN ESTE PROYECTO:

Componentes Hardware:

  • Digilent Arty Board
  • Digilent Pmod CLP
  • Digilent Pmod GYRO

Aplicaciones Software y servicios en línea:

  • Xilinx Vivado 2016.4
  • Xilinx SDK

Se utiliza la plataforma Digilent Arty FPGA para leer los datos de los sensores de un giroscopio y visualizar los datos/la información en una pantalla de caracteres LCD 16×2, y cuatro power LEDS RGB dinámicos.

Este proyecto utiliza tres componentes:

Para este proyecto, la pantalla de caracteres LCD está conectada a los puertos Pmod JA y JB de la ARTY, con el puerto JA conectado a los pines línea dual del CLP. El PmodGYRO está conectado al puerto JD Pmod.

El centro de atención de este proyecto es tomar los datos del giroscopio y encontrar unos modos divertidos de visualizarlos y utilizar los RGB LED incorporados en la plataforma ARTY.

Aunque me gustan mucho los HDL, me parece obvia la implementación de este proyecto por medio de un programa C transcrito para el procesador MicroBlaze soft-core. Todos los datos de manipulación y comunicación con Gyro, y la operación de la pantalla LCD se realizan por el software. Sin embargo, el componente PWM (modulación por ancho de pulso) para los LED, se implementa por medio de Verilog.

El instrumento Vivado

El proyecto fue diseñado con la utilización de Xilinx Vivado (para diseño de bloque e incorporación de IP) y Xilinx SDK (para diseño de software y depuración).

La librería GYRO

Afortunadamente, hay un bloque IP personalizado mantenido por Digilent para GYRO, que puede ser encontrado en su GitHub. El repositorio incluye también algunos códigos de ejemplo para la utilización del giroscopio/Gyro dentro del procesador de núcleo suave MicroBlaze (soft-core) que puede ser implementado en la FPGA. Este código de ejemplo fue extremadamente útil y contenía una librería/biblioteca para la obtención de la temperatura y los datos de aceleración del giroscopio/Gyro. Para este proyecto he decidido ignorar los datos de temperatura del giroscopio/Gyro y centrarme sólo en las mediciones de aceleración en las direcciones x, y, y z.

Cada medición es transferida al programa software por SPI, utilizando la librería GYRO dada. Luego debo ejecutar dichas mediciones por medio de un par de comparaciones e intentar pesar cuál medición es la mayor. Asimismo, debo promediar los últimos 50 valores para cada eje, ya que estos giroscopios son tendentes a registrar aumentos en lecturas debido a vibraciones ligeras.

Básicamente, el objetivo era relacionar una medición de eje específica a un color específico para visualizar en los LEDs RGB. Las diferentes combinaciones de colores se obtenían con el núcleo PWM IP dado.

  • Mapas azules a X
  • Mapas verdes a Y
  • Mapas rojas a Z

Finalmente, con los valores de conmutación dados en la plataforma  ARTY, uno puede visualizar sólo el color y los datos para un cierto eje.

Si SW1 y SW0 son:

  • 1 — X se visualiza sólo en los LEDS y LCD
  • 2 – Y se visualiza sólo en los LEDS y LCD
  • 3 – Z se visualiza sólo en los LEDS y LCD
  • cualquier otro valor – los colores ponderados se visualizan para todos los ejes

Últimos pasos

Finalmente, he transcrito un driver para la pantalla LCD en C, y un IP personalizado para la conexión de las ubicaciones específicas de memoria para el procesador a los conectores JA y JB PMOD de la plataforma Arty. Se necesitó la manipulación del archivo tipo constraints file, que fue incluido en el repositorio del proyecto.

Al iniciarse, la pantalla LCD visualiza los datos de eje seleccionados por los interruptores. Adicionalmente, si todos los ejes se visualizan, se visualiza el eje con la mayor aceleración.

Al arranque, el usuario puede pulsar el botón 0 para iniciar las lecturas del giroscopio y el botón 1 para parar la lectura.