Acciones

SHARKBoard FPGA

De CoffeeBrain-Wiki

120918 NEWS-shark.jpg

Descripción:

El proyecto SHARKBoard nace como una plataforma de bajo costo que permite a estudiantes interesados en el desarrollo de aplicaciones sobre lógica programable diseñar y probar de manera rápida sus aplicaciones. El eje central de este proyecto es la tarjeta SHARKBoard creada por la empresa Go-Bit.co apoyada en la Universidad de los Andes, Colombia. La SHARKBoard esta compuesta por una FPGA Spartan 3E en encapsulado 100-VQFP, una dataflash de 1MB y una interfaz de programación USB.

Autores:



1 INSTALACIÓN DE HERRAMIENTAS

1.1 BASICAS: ISE Xilinx - GTKWave

Para poder trabajar con la tarjeta SHARKBoard es necesario la instalación de las siguientes herramientas:

  • Xilinx WebPack 12.4: Software para la sintesis de diseños en HDL.
  • GTKWave: Software para simulación.
  • Otros: Demas herramientas como drivers usb y adicionales.

Los pasos detallados para la instalación de las herramientas mencionadas los puede consultar el siguiente link: FPGA Toolchain

1.2 Driver iMPACT (Dataflash)

  • Descargar las fuentes del driver acá
  • Descomprimir la carpeta mediante el comando:
      tar -zxvf ''nombre de la carpeta''
  • Ubicarse dentro del directorio y ejecutar en un terminal el siguiente comando[ERROR AL EJECUTAR COMANDO MAKE]:
     make
  • Verificar la creación del archivo libusb-driver.so dentro del directorio.
  • Conectar la SHARKboard y ejecutar en un terminal:
      lsusb
  • Identificar el id de vendedor(0403) y el id(cff8) de producto. (Pueden ser diferentes en su caso): Bus 003 Device 005: ID 0403:cff8 Future Technology Devices
  • Ubicar el archivo libusb-driverrc (en el directorio descargado inicialmente) y copiarlo a ~/.libusb-driverrc.
  • Editar el archivo copiado con los id encontrados anteriormente: LPT3 = FTDI:0403:cff8
  • Agregar la siguiente linea en un nuevo archivo en /etc/udev/rules.d/ llamarlo libusb-driverrc.rules. (Reemplazar los id por los encontrados anteriormente)

ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="cff8", MODE="666"

  • Reiniciar udev:
      service udev restart
  • Para iniciar iMPACT ejecutar: (Reemplazar /path/to por el path donde se encuentra el archivo libusb-driver.so):
    LD_PRELOAD=/path/to/libusb-driver.so impact

1.3 Herramientas adicionales

LM32 Toolchain

2 RECURSOS

2.1 Archivos del Proyecto (GIT)

Todos los archivos relacionados con el proyecto estan disponibles a traves del controlador de versiones GIT, el cual se actualiza constantemente con los ultimos avances realizados.

Para descargar los archivos ejecute en un terminal (Linux):

git clone http://git.code.sf.net/p/sharkboard/code sharkboard-code

Para visualizarlos directamente desde su explorador vaya al sigueinte enlace: https://sourceforge.net/p/sharkboard/code

Para recibir información sobre las ultimas actualizaciones, puede inscribirse a la lista de correo del proyecto en el siguiente enlace: https://lists.sourceforge.net/lists/listinfo/sharkboard-devop

2.1.1 sharkboard-code

sharkboard-code es el directorio GIT donde se encuentran todos los archivos del proyecto. A continuación se describiran los archivos y sub-directorios más importantes contenidos:

  • design-files/: Contiene los archivos de diseño de algunas tarjetas de expansión para la SHARKBoard
  • doc/: Documentación y Erratas
  • projects/: Contiene los Ejemplos Desarrollados para la Sharkboard
  • rtl-generic/: Contiene módulos genéricos utilizados en los proyectos ejemplos o a utilizar en los proyetos realizados por los usuarios.
  • sUpdateDownGit.sh: Script de actualización del GIT. Se recomienda al usuario ejecutarlo periodicamente. (Doble-clic -> Ejecutar).

2.2 Documentacion Adicional

2.2.1 Pinout

SharkBoard: vista frontal

3 EJEMPLOS

3.1 Proyecto Base - Blinkingled

Los archivos principales para la descripcion, simulación, sintesis e implementación de un proyecto HDL para la SHARKBoard son los sigueintes:

  • system.v: contiene la descripcion del hardware el cual se sintetizara. Aca podra programar y realizar todo el codigo que necesite
  • system_tb.v: configura y da los parametros de simulacion.
  • system.ucf: define los pines a ser usados en la FPGA y su respectivo nombre.
  • rtl/: se encuentran las carpetas de cada uno de los modulos que se utilice en el system.v.
  • Makefile: realiza las tareas de construccion para generar los archivos necesarios para programar y sintetizar.

Todos los projectos de ejemplo (disponibles dentro del directorio /projects en sharkboard-code) tienen la distribución mostrada anteriormente. Se recomienda al usuario tomar como base cualquiera de estos (copiar, pegar y cambiar el nombre en el mismo directorio) al comenzar cualquier nuevo proyecto.

3.1.1 Simulación, Sintesis e Instalación de un Proyecto

Los comandos a continuación deben ser ejecutados en un terminal (Linux) desde la carpeta del proyecto respectivo.

  • Simulación:
      make clean view

Este comando mostrará la ventana de simulacion del proyecto en caso de no presentar errores el mismo.

  • Sintésis:
      make clean syn

Este comando generará los archivos de síntesis necesarios de no presentar errores el proyecto.

  • Instalación
     make install

Para ejecutar el comando de instalación es necesario haber sintetizado el proyecto de forma exitosa. Además este comando solo podrá ser ejecutado una única vez después del comando de síntesis; en caso de requerir una nueva instalación es necesario realizar nuevamente la síntesis.

3.2 UART

La SHARKBoard esta compuesta por un chip FTDI el cual, entre otras cosas, permite la comunicación con un PC a través del protocolo RS232 por medio de la misma conexion usb utilizada durante la programación.

Al conectar la SHARKBoard al PC, el sistema la reconoce como un dispositivo /dev/ttyUSB(X), donde X es el número del puerto al cual queda asignada la conexión. Para verificar dicho número ejecute el comando
 dmesg
en un terminal (linux), después de haber conectado la SHARKBoard. Ahora podrá enviar y recibir datos serialmente a través de este puerto por medio de un emulador serial como minicom.

Los pines a los cuales están conectadas las lineas RX y TX de la SHARKBoard son respectivamente:

NET "uart_rxd" LOC = "P54" | IOSTANDARD = LVTTL;
NET "uart_txd" LOC = "P69" | IOSTANDARD = LVTTL;

3.3 Dataflash como memoria no volatil

La FPGA Spartan 3E contenida en la SHARKBoard tiene memoria volatil, por lo tanto cada vez que se desconecta de su alimentación la configuración contenida se borra, por lo cual es necesario realizar nuevamente el proceso de sintesis y programación. Para evitar esto es posible almacenar el archivo de configuración en la dataflash contenida en la SHARKBoard, tal que cada vez que se encienda la tarjeta, la FPGA se configure de forma automatica con el contenido de la memoria.

A continuación se daran los pasos necesarios para:

  • Crear un archivo de configuración spi_prom.mcs con el formato necesario para almacenar en la dataflash.
  • Programar el archivo de configuracion spi_prom.mcs en la dataflash
  • Iniciar el programa desde la dataflash cuando se encienda la tarjeta.

3.3.1 Creación de Archivo spi_prom.mcs con formato .mcs

Para la creación del archivo spi_prom.mcs es necesario contar con el archivo de configuración generico (system.bit) que se desea implementar en la SHARKBoard.

  • Iniciar iMPACT con el comando:(Reemplazar /path/to por el path donde se encuentra el archivo libusb-driver.so)
     LD_PRELOAD=/path/to/libusb-driver.so impact
  • En la ventana que aparece, seleccionar la opción: Prepare a PROM File
  • Aparecerá la ventana PROM File Formatter seleccionar las siguientes opciones:
    • STEP1: SPI Flash -> Configure Single FPGA
    • STEP2: Seleccionar el tamaño de la dataflash dependiendo de version de FPGA utilizada: 1MBits (xc3s100e), 2MBits (xc3s250e), 4MBits (xc3s500e). Seleccionar Add Storage Device.
    • STEP3: Seleccionar las opciones siguientes: Checksum Fill Value: FF, Output File Name: spi_prom (puede seleccionar cualquier nombre de su preferencia), Output File Location: Directorio donde se guardara el archivo generado, File Format: MCS
  • Aparecera la ventana Add Device en la cual debera seleccionar el archivo de configuración que se implementara en la SHARKBoard. (system.bit).
  • En el menu principal (Barra Superior) seleccionar: Operations -> Generate File.... Se generara el archivo spi_prom.mcs en el directorio seleccionado anteriormente.

3.3.2 Programación de Dataflash

  • Conectar la SHARKBoard al PC a través del cable miniUSB.
  • Iniciar iMPACT con el comando:(Reemplazar /path/to por el path donde se encuentra el archivo libusb-driver.so)
     LD_PRELOAD=/path/to/libusb-driver.so impact
  • En la ventana que aparece, seleccionar la opción: Configure devices using Boundary-Scan (JTAG) -> Automatically connect to a cable and identify Boundary-Scan chain
  • Se le preguntará si desea asignar un archivo de configuración. Seleccione Yes.
  • En la ventana que aparece busque y seleccione el archivo de configuración de su proyecto (system.bit).
  • Se le preguntará si desea conectar una PROM SPI al dispositivo. Seleccione Yes.
  • En la ventana que aparece busque y seleccione el archivo para almacenar en la dataflash creado anteriormente (spi_prom.mcs).
  • Aparecerá una ventana en la que debe seleccionar el tipo de Dataflash (SPI PROM) y la referencia dependiendo de la version de FPGA utilizada: M25P10A (xc3s100e), M25P20 (xc3s250e), M25P40 (xc3s500e).
  • Para programar la dataflash, selecionarla en el esquema. Y seleccionar Operations -> Program.

3.3.3 Iniciar el programa desde Dataflash

Antes de iniciar, asegurese que el jumper K501 esta puesto sobre los dos pines mas cercanos al conector miniUSB (mas lejanos de la FPGA).

  • Para iniciar, conecte la SHARKBoard a la alimentación o presione el pulsador PROG_B (SW1402). El programa debera iniciar de forma automatica en la SHARKBoard.

4 TROUBLESHOOTING

4.1 Toolchain SHARKBoard Spartan 3E xc3s250e

El soporte para sintetización sobre la versión de FPGA xcs3s250e para la SHARKBoard, no se encuentra en los paquetes instalados anteriormente. Para obtener dicho soporte deberá seguir los siguientes pasos.

  • Descargar y descomprimir el directorio Media:Xc3s250.zip.
  • Copiar el directorio xc3s250 en /usr/local/share/urjtag/xilinx
  • Habilitar los permisos de ejecución del directorio xc3s250
  • Adicionar la siguiente linea al archivo /usr/local/share/urjtag/xilinx/PARTS
0001110000011010	xc3s250	xc3s250

4.2 Descarga de sharkboard-code (GIT)

Para descargar los archivos del proyecto del repositorio GIT sharkboard-code, deberá tener instalado en su PC el programa para control de versiones GIT. Para instalarlo, ejecute el siguiente comando en un terminal:

sudo apt-get install git