› Foros › PC › Software libre
El_RapEro escribió:Buenas, por no extenderme demasiado, diré que tengo que hacer "algo" con una FPGA, relativamente complicado, y que implique comunicación con el PC (esto no es obligatorio, pero es la mejor forma de "hablar" con ella, si no quieres usar los botones e interruptores que tiene). Esta comunicación sería por el puerto serie.
Se me había ocurrido un ajedrez, pero puede que sea imposible, no lo sé (la verdad es que nunca he intentado programar un PC, ni si quiera en software).
Implicaría una aplicación en java que haga uso del puerto serie y un tablero dibujado (por cutre que sea); el tablero tendría que estar sincronizado con el de la FPGA (que estaría en una memoria sin más) y básicamente tendrían que enviarse los movimientos a realizar.
Conforme lo digo se me quitan las ganas de intentarlo lo que más me preocupa evidentemente es la "inteligencia artificial" que habría que meter en la FPGA para decidir el siguiente movimiento; alguien conoce/tiene/sabe donde hay alguna implementación de un motor de ajedrez SIMPLE? no pueden ser cálculos ultracomplejos en coma flotante con logaritmos ni cosas enrevesadas, ya que en la FPGA se hará uso del código de un procesador ya hecho, y es bastante limitado, entre otras cosas su ancho de palabra es 8 bits así que ya os podéis imaginar.
Se aceptan otras ideas de todas formas. Saludos.
demnim escribió:En una FPGA medio decente puedes meter microprocesadores de 32 bit bastante decentes, como el microblaze si la fpga es de xilinx y relativamente reciente, o tambien tienes el OpenRISC o el OpenSPARC. con eso ya puedes hacer algún algoritmo decente.
de todas formas con 8 bit también puedes hacer algo majo. con ponerle algo de limite a la recursión.
prueba a enredar en C o java con tipos de datos de 1 byte como máximo e intenta implementarte el algoritmo solo con eso a ver si eres capaz.
Sertinell escribió:Yo hice esas mismas prácticas hará como 2 años creo.
Teniendo en cuenta que el código que va a ejecutar el picoblaze tienes que programarlo en ensamblador y que, segun creo recordad, hay un límite de instrucciones debido a la cantidad de memoria, se te va hacer bastante complicado implementar cuanlquier cosa medio complicada. Además, la chicha de la práctica no esta en el código del software, lo cual no deja de ser programar en ensamblador y poco más, aún menos en la interfaz java/matlab/o lo que tu quieras, la chicha esta en que hay que currarse 2 módulos externos al microprocesador utilizando la interfaz I/O de este, si lo que quieres es clavar la práctica, tienes muchas más posibilidades de obtener una nota cojonuda haciendo un módulo externo de puta madre, creo que la placa tiene una salida VGA y cosas así. Según recuerdo también era obligatorio añadir una instrucción propia al conjunto de instrucciones del microprocesador.
Bueno, ahi dejo esto dicho, por si mi experiencia te sirve de algo.
P.D. Yo hice unos barquitos con unos 10 mapas aleatorios metidos en una ROM con una RAM para la partida actual. Si no recuerdo mal lo hice operando a nivel de bit (1 barco, 0 agua) y con una interfaz en modo texto a base de comandos de terminal. Nada del otro mundo, pero para aprobar la asignatura sobraba.