BOARD FPGA SHARKBoard V1.0

=Que es SharkBoard= 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 del mismo nombre creada por la empresa Go-Bit.co apoyada en la Universidad de los Andes de Colombia. Esta tarjeta tiene se compone de una FPGA Spartan 3E en encapsulado 100-VQFP, una dataflash de 1MB y una interfaz de programación USB.

El proyecto se desarrolla como sobre herramientas libres.

= Especificaciones= Que tiene =Recursos =

Herramientas de Desarrollo
Para poder trabajar con la tarjeta es necesario instalar los siguientes paquetes:

sudo apt-get install libftdipp1 libftdi1 urjtag

Adicionalmente se necesita tener las herramientas de Xilinx. Para su instalación puede consultar el siguiente link: FPGA Toolchain

Ejemplo de síntesis
rqIWIzU6Mrk

= Pasos o Instrucciones= En este espacio se realizara un ejemplo de sintesis, simulacion y programacion de la FPGA que contiene la Sharkboard.

El proyecto que se desea sintetizar lo puede bajar aqui:, este programa realizara un blinking led disponible dentro de la Sharkboard. En la carpeta se encuentran los archivos de configuracion los cuales necesitara para sintetizar, simular y programar su FPGA.

El archivo system.v contiene la descripcion del hardware el cual se sintetizara. Aca podra programar y realizar todo el codigo que necesite

El archivo system_tb.v configura y da los parametros de simulacion.

El archivo Makefile realiza las tareas de construccion para generar los archivos necesarios para programar y sintetizar.

El Archivo system.ucf define los pines a ser usados en la FPGA y su respectivo nombre.

En la carpeta rtl se encuentran las carpetas de cada uno de los modulo que se utilice en el system.v, en este caso se va a utilizar un contador y un registro para visualizar el led.

Los demas archivos son necesarios para generar la simulacion, y programar su descripcion dentro de la FPGA.

Codigo a tener en cuenta
A continuacion se daran a conocer las lineas de codigo a tener encuentra dentro del proceso para cambiar parametros o realizar tareas necesarias.

system_tb.v
Al final del archivo, en la linea: #(tck*10000000) $finish; Se define el tiempo a simular, en este caso se esta simulando 10000000 ticks de tiempo. (Cada tick depende de la frecuencia del cristal conectado a la FPGA) y se puede cambiar el tiempo, cambiando manualmente el numero tck*10000000

Makefile
Al inicio del archivo, es importante colocar los path de los modulos que se usan en el system.v para definir todas las fuentes, aca esta como se define en el proyecto:

VINCDIR=					\ -I../rtl/counter			\ -I../rtl/datadegister SYN_SRC= SIM_SRC=					\ system_tb.v SRC=						\ ../system.v				\ ../rtl/counter/counter.v		\ ../rtl/dataregister/dataregister.v

El Makefile, como archivo constructor, nos permite realizar las siguientes tareas: (Para realizarlas debe abrir una terminal en la carpeta donde tiene guardado el proyecto)

make clean  ; limpia el proyecto de los objetos y archivos temporales make syn    ; realiza la síntesis del proyecto make sim    ; genera el archivo de simulacion make view   ; Abre el visualizador de ondas con la simulación make install ; realiza la programación del dispositivo

Por lo tanto para realizar y observar la simulacion se debe realizar: make clean sim view

Por ultimo, para programar su dispositivo es necesario: make clean syn install

Nota: Este ultimo comando le pedira la clave de super-usuario.

Driver Dataflash IMPACT
Descargar las fuentes del proyecto 'usb-driver-HEAD-2d19c7c' sudo apt-get install libftdi-dev ingresar a la carpeta make

Notes for FTDI 2232 based cables

=
===================

To build the driver with FTDI 2232 support, you need to have libftdi and the libftdi development package installed. On debian, you can install both by installing 'libftdi-dev'.

To set-up the device: 1. Find out the vendor and product id of your cable using lsusb: Bus 003 Device 005: ID 0403:cff8 Future Technology Devices ... 17:41, 26 July 2012 (COT)Josnelihurt 17:41, 26 July 2012 (COT)

2. Copy the sample libusb-driverrc to ~/.libusb-driverrc, edit it and replace the vendor and product-id in the example file with the values provided in  the lsusb-output. You can also change the 'parallel port' which is mapped to  this cable. Impact sees the device at that port as a Parallel Cable III.

3. To use the device as an ordinary user, put the following line in a new file in /etc/udev/rules.d/ and restart udev: ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="cff8", MODE="666" (replace the vendor and product id with your values)

The support for FTDI 2232 based devices is experimental and they are currently significantly slower than the other supported cables.

To use this library you have to preload the library before starting impact:

$ LD_PRELOAD=/path/to/libusb-driver.so impact or $ export LD_PRELOAD=/path/to/libusb-driver.so (for sh shells) $ setenv LD_PRELOAD /path/to/libusb-driver.so (for csh shells) $ impact

= Recursos =



= Tarjetas de Expansión =

Diagrama de Bloques
La tarjeta de expansión MATRIXBoard esta compuesta por dos registros de desplazamiento de 8 bits (74HC595); uno para el control de las columnas y otro para la multimplexación de las filas. También tiene un arreglo de transistores Darlington ULN2803 conectado al registro de las filas.



Funcionamiento
Para el manejo de la matriz desde la FPGA se diseño un modulo matrix_ctrl.v (verilog), el cual se encarga de la visualización sobre la matriz de leds. Los valores a mostrar se encuentran en memoria ROM. En los archivos del proyecto (descargar git correspondiente), se podran encontrar varios ejemplos de funcionamiento de la tarjeta de expansión MATRIXBoard. A continuación se encuentra un diagrama explicativo del módulo.



Listado de Componentes

VALOR	Cantidad	Componente	Comentario 100R	  10	         R1, R2, R3, R4, R5, R6, R7, R8, R101, R102	(Esta R puede variar su valor hasta ~50R para hacer que la pantalla ilumine mas.) 74LS595	  2	         U101, U102	Recordar HC funciona a 3V3 y LS a 5V - DIP JACK-PLUG0	1	 J1	No es necesario se usa para conectar externamente la alimentación en el caso de múltiples módulos LED	2	D1, D2	3mm LTP2B88AG-NB	1	D4	Matrix ULN2803A	1	IC3 DIP