Compilación Cruzada en Red Pitaya usando Eclipse

En las entradas anteriores se ha hablado sobre qué es Red Pitaya, cuáles son sus beneficios para procesamiento de señales radar y se explicó la manera en que la tarjeta se programa en C. Para programar Red Pitaya en C (aquí puedes revisar la entrada) se empleó inicialmente compilación nativa, ya que el código se compila, se depura y corre con comandos realizados dentro de la misma tarjeta. Sin embargo, este entorno de programación no es adecuado, debido a que no se tiene una interfaz para observar los errores de código y además, la tarjeta realiza un uso innecesario de memoria. Sigue leyendo “Compilación Cruzada en Red Pitaya usando Eclipse”

Anuncios

Programar Red Pitaya en Lenguaje VHDL

La documentación disponible para el desarrollo FPGA de Red Pitaya es escasa. En esta entrada se empezará con un sistema mínimo y agregaremos nuevos componentes gradualmente. En la primera parte, configuraremos una plataforma de desarrollo para programar FPGA utilizando el software Vivado de Xilinx y crearemos el ejemplo más simple, hacer parpadear un LED.  Todos los pasos que se presentan aquí se mostrarán para el sistema operativo Windows, aunque la mayoría de ellos también funcionarán en Linux.

REQUERIMIENTOS:

    • Tarjeta STEMlab Red Pitaya
    • Computador con sistema operativo Windows
    • Cable Ethernet
    • Fuente de Alimentación micro USB 5V/2A
    • Software MobaXterm Home Edition (Disponible Aquí )
    • Software Vivado 2018.1: WebPACK (Disponible Aquí ). Se debe verificar que durante la instalación se incluye el componente  Xilinx_Vivado_SDK_Web_2018.1 necesario para la programación de la tarjeta. 
    • NOTA: Es necesario tener cuenta en Xilinx, si no tiene crearla Aquí 
  • Repositorio Red Pitaya Guide (Disponible Aquí )

COMPILACIÓN CODIGO FUENTE

Para empezar a programar la tarjeta en VHDL, es necesario haber consultado la entrada sobre cómo conectar Red Pitaya STEMLab al computador y la entrada: programar red pitaya en c. Seguir los pasos hasta establecer la conexión remota a través de MobaXterm por medio de SSH.

Se debe copiar el repositorio de redpitaya_guide-master descomprimido en la ruta donde se instaló Vivado en Windows, en este caso: C:\Xilinx\Vivado\2018.1. A continuación, abrir el menú de inicio de Windows, acceder a Xilinx Design Tools  y ejecutar el Vivado 2018.1 Tcl Shell,  en la terminal que se despliega se debe ingresar a la ruta en la cual se guardó la carpeta de redpitaya_guide-master (mediante el comando cd), y ejecutar el comando: source make_project.tcl (Ver figura siguiente)

18

Al ejecutar el comando, dentro de la carpeta de redpitaya_guide-master se crea una nueva carpeta llamada tmp, se debe acceder a esta carpeta, luego abrir la carpeta 1_led_blink y finalmente ejecutar el archivo 1_led_blink.xpr. Al ejecutar este archivo se inicia el software Vivado 2018.1, a continuación, se hace clic sobre la opción “Generate Bitstream”, el cual se encuentra en la parte inferior izquierda del programa.

19 (2)

El software  Vivado realiza primero la síntesis y luego la implementación del programa, por lo cual se requiere esperar alrededor de 4 minutos hasta que se genere el archivo. bit necesario para programar la FPGA. Dentro de la carpeta 1_led_blink se generan nuevas carpetas, allí se debe acceder a la carpeta 1_led_blink.runs, luego a la carpeta impl_1 y copiar el archivo system_wrapper.bit al acceso remoto SSH de la Red Pitaya usando el software MobaXterm.

Para ejecutar el código generado se emplea el comando:

cat /ruta_del_archivo/archivo.bit > /dev/xdevcfg

que en este caso es:

cat /root/system_wrapper.bit > /dev/xdevcfg

20.png

A continuación, el Led  cero (0) de la Red Pitaya empezará a parpadear.

21.png

CREAR  NUEVO PROGRAMA

Para crear un nuevo programa para la FPGA se debe iniciar el software Vivado 2018.1. A continuación, abrir el proyecto creado anteriormente en el apartado COMPILACIÓN CÓDIGO FUENTE. Hacer clic en la opción “Add sources”,  se despliega una ventana en donde se debe seleccionar la opción “Add or create design sources”,  luego hacer clic en “Next”,  en la nueva ventana seleccionar la opción “Create file”, se selecciona uno de los lenguajes HDL disponibles en la lista desplegable(en nuestro caso VHDL),  se nombra el archivo (en este caso “leds”), se hace clic en “OK”  y finalmente en “Finish”.

Se desplegará una nueva ventana en la cual se pueden definir entradas y salidas del módulo, para finalizar se hace clic en “OK”. En este punto se puede observar que el archivo fuente recién creado se muestra en la ventana Sources del entorno gráfico de Vivado. A continuación, se hace clic con el botón secundario del ratón sobre el nuevo archivo fuente y se debe seleccionar la opción “Set as top”.

El  nombre del archivo debe aparecer ahora en color negro oscuro, se hace doble clic sobre el archivo y se desplegará el editor para poder escribir el código VHDL (en nuestro caso se realizó un programa para encender algunos Leds de la tarjeta Red Pitaya). Una vez se haya escrito el código se debe ejecutar la herramienta “Run Synthesis” con lo cual iniciará la síntesis del módulo VHDL (en esta etapa se hace además una verificación de de sintaxis en el código). Al finalizar la síntesis del módulo se desplegará una ventana con el mensaje  “Synthesis successfully completed”, allí además se podrá elegir la opción de continuar con la implementación del código (Opción “Run Implementation”), para este ejemplo se tomará una ruta diferente haciendo clic en el botón Cancel.

A continuación, se debe hacer clic en la opción “Open Block Desing” ubicada en la parte izquierda del entorno gráfico de Vivado. Luego se desplegará un diagrama esquemático de las conexiones que tenemos en la FPGA de la tarjeta. A continuación, se hace clic derecho sobre la ventana del esquemático, allí se desplegará un menú con distintas opciones, se seleccionará agregar modulo (Add Module), esto generará un bloque con el nombre de nuestro archivo fuente (“leds”) sobre el esquemático. Para finalizar,  se deben realizar las conexiones necesarias para integrar el nuevo módulo con los demás elementos de la FPGA (ZYNQ7 processing system, buffers, etc…).

Después de completar la conexión del módulo desarrollado se debe iniciar la implementación del código mediante la herramienta “Run Implementation”, el software Vivado tomará alrededor de 2 minutos en ejecutar esta tarea. Finalmente, se hace clic en la opción  “Generate Bitstream” y después en “OK” para generar el archivo .bit que será cargado en la FPGA de la tarjeta Red Pitaya.

Después de que el sistema termine de generar los archivos .bit se desplegará una ventana en la cual se debe hacer Clic en la opción “Cancelar”. Para ejecutar el programa en la FPGA  se deben ejecutar los comandos:

cat /ruta_del_archivo/archivo.bit > /dev/xdevcfg

cat /root/system_wrapper.bit > /dev/xdevcfg

25

USO DE ENTRADAS DE LA FPGA

Para usar las entradas de la Red Pitaya se debe tener en cuenta cuales son los pines que están asociados a las entradas de la FPGA.

26

La siguiente figura presenta código en VHDL que recibe 2 entradas y evalúa una condición AND, si la condición se cumple se encienden unos leds, si no se cumple dicha condición los leds se mantienen apagados.

27

Establecido el código procedemos a correr la sintaxis, al observar el esquemático el bloque led1_0 ha cambiado (ya tiene el vector de entradas),  pero la entrada del bloque led1_0 no está asociada a las entradas de la RedPitaya. Para solucionar ese problema utilizar el siguiente comando en la consola Tcl: connect_bd_net [get_bd_pins  nombre del bloque/variable de entrada] [get_bd_pins exp_p_tri_io] Para este ejemplo en comando seria: connect_bd_net [get_bd_pins led1_0/ent] [get_bd_pins exp_p_tri_io]

29

Observamos que la entrada exp_p_trl_Io[7:0] automáticamente se unió a la entrada del bloque Led1_0.  Procedemos a correr la sintaxis, correr la implementación y generar los Bitstream (observar los pasos anteriores para subir el archivo .bit a la tarjeta STEAMlab)

30

Cómo establecer conexión entre la Red Pitaya y el PC en Windows

El primer paso para comenzar a trabajar con la tarjeta Red Pitaya es establecer una conexión con el PC. Puesto que la tarjeta Red Pitaya no tiene puerto para salida de video, la forma estándar para visualizar sus funcionalidades es a través de un navegador web desde un ordenador conectado a la misma red local.  Mediante esta interfaz web se pueden ver las funcionalidades de osciloscopio, generador de señales, medidor LCR, entre otros. Por esta razón el primer paso para empezar a utilizar la tarjeta será establecer esa conexión con el PC, en este caso para el sistema operativo Windows.

En esta entrada se especifican los siguientes temas:

Sigue leyendo “Cómo establecer conexión entre la Red Pitaya y el PC en Windows”

Cómo programar la Red Pitaya en lenguaje C

Con la Red Pitaya se pueden compilar y ejecutar programas escritos en  lenguaje de programación C. Con la ayuda de la interfaz de programación de aplicaciones (API), podemos acceder a los diferentes puertos de la tarjeta, como la generación y adquisición de señales por el ADC/DAC, los puertos de entrada/salida digital y diferentes puertos de comunicación (I2C, SPI, UART).

 Para empezar a programar la tarjeta en C, es necesario primero revisar la entrada: Conexión entre la Red Pitaya y el PC, la cual especifica como conectar Red Pitaya STEMLab al computador ya sea por vía alámbrica o inalámbrica. Se recomienda también leer la documentación oficial sobre este tema. Sigue leyendo “Cómo programar la Red Pitaya en lenguaje C”

Qué es la Red Pitaya y por qué nos interesa para el procesamiento de señales en sensores

¿Por qué no usar las tarjetas que ya conozco Raspberry Pi y Arduino?

Si queremos construir sistemas con sensores que manejan salidas analógicas y cuya señal tiene una variación rápida respecto al tiempo, vamos a encontrar problemas en algunos sistemas de procesamiento tipo Raspberry Pi o Arduino. En el primer caso porque no tiene entradas analógicas y en el segundo caso porque su capacidad de procesamiento podría no ser suficiente.

El sistema Red Pitaya se presenta como una alternativa para el procesamiento de señales en tiempo real, ya que cuenta con entradas y salidas analógicas (ADC, DAC), así como elementos de hardware reconfigurable (FPGA). Sigue leyendo “Qué es la Red Pitaya y por qué nos interesa para el procesamiento de señales en sensores”