[en] In this project, the result that we want to achieve is an implementation of a remote laboratory for programming FPGAs. Its access is done via web, which means that a very important part in this project is the one regarding web development with the creation of a suitable user's interface. The main structure of this web page has been created with "HTML" and "PHP", being this last language the one that will provide us the appropriate tools for the communication we are looking for in our design. Nevertheless, we will also see that, due to the diversity of characteristics found in the backend, we will need help from other languages as "Python", "Javascript", "Bash" or "SQL". Initially we worked for the implementation of a single remote workspace, meaning that only one FPGA was accessible. The system was formed by a Linux computer (backend is hosted) connected to via Ethernet to a Raspberry Pi that has direct communication with the FPGA. This communication between the Raspberry Pi and the FPGA was implemented with the GPIOS from the Raspberry Pi, that connected this device to the FPGA's JTAG ports, and to its different buttons and switches. The basic functionalities that this system should be able to offer to the user regarding the communication with the FPGA are: loading files to the FPGA, modifying the state of the buttons/switches and seeing the changes that these produce. This last thing has been implemented with a video camera, that will always be focused on the FPGA assigned to work. Once all of this was done, we extended the concept to work with multiple FPGAs, that meaning that we transformed our system into a laboratory capable of working with several workspaces at a time, respecting the specifications told above. To manage this system, we created a database that has all the information from the workspaces and also some username-password combinations in order to access the webpage and its services.

[es] En este proyecto lo que se quiere conseguir como resultado final es la implementación de un laboratorio remoto para la programación de FPGAs. El acceso se lleva a cabo vía web, por tanto una parte muy importante en este proyecto es la del desarrollo web para crear una interfaz de usuario adecuada. La estructura de esta página web ha sido creada con "HTML" y "PHP", siendo éste último el lenguaje que nos proporciona las herramientas adecuadas para la comunicación que buscamos en nuestro diseño. También veremos que, debido a la gran diversidad de características que presenta el "backend", nos hemos ayudado de otros lenguajes como "Python", "Javascript", "Bash" o "SQL". Inicialmente se trabajó para la implementación de un solo puesto de trabajo. El sistema estaba formado por una máquina Linux (donde está el "backend") conectado a una Raspberry Pi vía Ethernet que es la que tendrá comunicación directa a la FPGA. La comunicación entre Raspberry Pi y FPGA se ha llevado a cabo mediante los puertos GPIO de la Raspberry Pi que conectan este dispositivo con el JTAG de la FPGA y los distintos botones e interruptores. Las funcionalidades básicas que deben proporcionarse al usuario con la interacción con la FPGA son las de cargar archivos a la FPGA, modificar los estados de sus interruptores/botones y la visualización de los cambios que éstos provoquen. Esto último se ha realizado con la emisión en directo de una videocámara que está enfocando continuamente a la FPGA asignada. Una vez se logró realizar toda esta serie de objetivos, se implementó este mismo sistema pero con la capacidad de trabajar sobre diversas FPGAs, es decir, un laboratorio remoto con varios puestos de trabajo con las mismas especificaciones explicadas anteriormente. Para gestionarlo todo correctamente, se ha implementado una base de datos que almacena la información que identifica cada puesto de trabajo y se han creado una serie de nombres de usuario y contraseñas para poder acceder a ellos.