Aprender a diseñar para FPGAs

Discursiones en general sobre el proyecto que no tienen cabida en otro foro / General discussion for uncateorized topics about the ZX-Uno project
Avatar de Usuario
Uto
Mensajes: 1394
Registrado: 17 Dic 2015, 16:39

Aprender a diseñar para FPGAs

Mensaje por Uto » 19 Nov 2016, 11:09

Buenas,

Creo que esto que voy a decir es casi imposible salvo en un cerro de años pero... veamos...

Yo no se gran cosa de electrónica:

- Entiendo un poco de electricidad (o sea, voltajes, carga, resistencia, ley de ohm)
- Entiendo un pelín de semiconductores (diodos, transistores y circuitos integrados)
- Y he hecho prácticas en la asignatura de sistemas digitales de la carrera de informática con multiplexores, sumadores, displays de 7 segmentos,etc.

Sin embargo en el fondo son conocimientos sueltos que no se integran, y ni en mis mejores sueños se me ocurriría diseñar un circuito más allá de ponerle un led a un GPIO de la raspberry para hacer un semáforo (https://www.youtube.com/watch?v=O_ocR3p ... uc-jamegWg)

En algunas comentarios he leido que "programar" una FPGA consiste en definir módulos con sus entradas y salidas, y quizá con unos tiempos, y en cierta manera eso me parece más cercano a algo que yo pueda entender, pero no tengo claro si es así de sencillo.

Por ejemplo, si yo definiera un circuito no sabría donde poner un condensador, una resistencia... para mi son detalles que se me escapan, que normalmente vienen del hecho de que la electrónica teórica que he aprendido se basa en un mundo perfecto donde no se pierde energia, los diodos no se pueden quemar, etc.

¿el programar FPGAs te abstrae de alguna manera de esos detalles? Es decir, si yo defino por ejemplo un circuito simple que sea un sumador, con 6 pines de entrada para dos numeros de 3 bits y 4 pines de salida para la suma ¿tengo que definir más detalles internos o el "compilador" ya se encarga de poner dentro lo que tenga que poner?

Si es así, ¿hay algun curso o documentación online que pueda servir como iniciación para dummies profundos?

No es que vaya a hacer un core de una maquina, pero quizá sí pueda llegar a trastear un poco y hacer un core que haga los semáforos pero en FPGA.

Avatar de Usuario
spark2k06
Mensajes: 1188
Registrado: 12 Feb 2016, 13:58

Re: Aprender a diseñar para FPGAs

Mensaje por spark2k06 » 19 Nov 2016, 11:50

Me apunto a la petición, a mi también me gustaría empezar a trastear con FPGAs.

Enviado desde mi thor mediante Tapatalk

Avatar de Usuario
jepalza
Mensajes: 613
Registrado: 02 Oct 2015, 18:52

Re: Aprender a diseñar para FPGAs

Mensaje por jepalza » 19 Nov 2016, 12:09

No soy el más indicado para contestar, dado que mis conocimientos son mas un "prueba/error", que es como llevo funcionando los últimos 35 años de programación, pero te puedo decir, que, para mi gusto, programar una FPGA ers mas complicado que hacerlo en C++, para que veas mi impresión.
Otro te dirá que es mas sencillo, a gustos, para eso hicieron los colores, pero si tengo que programar un C64 perfiero hacerlo en C++ o en Basic, antes que en Verilog o VHDL.

El tema de condensadores y resistencias, no existen en estos diseños, aquí solo hablamos de electrónica digital, de 0's y 1's , nada mas. Y lo de hacer un sumador, lo puedes "inventar" tú con programación, o usar uno creado en la librería. Existe una librería de elementos que solo es llamarlos, configurarlos y enlazarlos, como lo harías en un circuito electrónico. Imagina usar un "protoboard", de esos con multitud de agujeros, encajas un 74ls00, una memoria sram, una cpu, bla, bla, y luego, unes todo por cables, de A1 a A1, de D0 a D0, etc. Así es como se programa.

Es simple de decir, e incluso de hacer cuando se adquiere experiencia, pero difícil de depurar. Como te dejes un solo hilo sin enlazar, todo el diseño puede dejar de funcionar. Si resulta que todo funciona, y pones un hilo donde no debes, todo te puede fallar. Los términos medios pocas veces ocurren.

Yo he aprendido sin libros, de eso no te puedo decir nada, todo ha sido con iniciativa y un empujón gordo que me di'o Mcleod_Ideafix hace varios años, cuando ambos compramos un analizador lógico con FPGA.

Avatar de Usuario
spark2k06
Mensajes: 1188
Registrado: 12 Feb 2016, 13:58

Re: RE: Re: Aprender a diseñar para FPGAs

Mensaje por spark2k06 » 19 Nov 2016, 12:16

jepalza escribió:No soy el más indicado para contestar, dado que mis conocimientos son mas un "prueba/error", que es como llevo funcionando los últimos 35 años de programación, pero te puedo decir, que, para mi gusto, programar una FPGA ers mas complicado que hacerlo en C++, para que veas mi impresión.
Otro te dirá que es mas sencillo, a gustos, para eso hicieron los colores, pero si tengo que programar un C64 perfiero hacerlo en C++ o en Basic, antes que en Verilog o VHDL.

El tema de condensadores y resistencias, no existen en estos diseños, aquí solo hablamos de electrónica digital, de 0's y 1's , nada mas. Y lo de hacer un sumador, lo puedes "inventar" tú con programación, o usar uno creado en la librería. Existe una librería de elementos que solo es llamarlos, configurarlos y enlazarlos, como lo harías en un circuito electrónico. Imagina usar un "protoboard", de esos con multitud de agujeros, encajas un 74ls00, una memoria sram, una cpu, bla, bla, y luego, unes todo por cables, de A1 a A1, de D0 a D0, etc. Así es como se programa.

Es simple de decir, e incluso de hacer cuando se adquiere experiencia, pero difícil de depurar. Como te dejes un solo hilo sin enlazar, todo el diseño puede dejar de funcionar. Si resulta que todo funciona, y pones un hilo donde no debes, todo te puede fallar. Los términos medios pocas veces ocurren.

Yo he aprendido sin libros, de eso no te puedo decir nada, todo ha sido con iniciativa y un empujón gordo que me di'o Mcleod_Ideafix hace varios años, cuando ambos compramos un analizador lógico con FPGA.
Comentas que es difícil de depurar... el entorno de desarrollo no posee algún simulador de FPGA? O algún programa de electrónica... Donde puedas añadir un integrado de fpga y osciloscopios y demás a su salida, cargar el .bit y simular el comportamiento?

Enviado desde mi thor mediante Tapatalk


Avatar de Usuario
jepalza
Mensajes: 613
Registrado: 02 Oct 2015, 18:52

Re: RE: Re: Aprender a diseñar para FPGAs

Mensaje por jepalza » 19 Nov 2016, 12:30

spark2k06 escribió: Comentas que es difícil de depurar... el entorno de desarrollo no posee algún simulador de FPGA? O algún programa de electrónica... Donde puedas añadir un integrado de fpga y osciloscopios y demás a su salida, cargar el .bit y simular el comportamiento?

Enviado desde mi thor mediante Tapatalk
Sí, si sabes manejarlo o has dado un cursillo. Yo he aprendido por fuerza bruta, y muchas cosas no las sé manejar mejor que lo que ahora mismo hago.

Lo mio es un prueba/error en toda regla. Hay cosas que son tan complicadas, que mejor olvidarlas. Por poner un ejemplo, quisé averiguar cómo implementar un reloj "decente" y el manual oficial de Xilinx, tiene 800 páginas en un correcto inglés, y eso, solo para el reloj, imagina para el 100% de la lógica, como una 8000 páginas, sin exagerar nada de nada. No pasé de la 14, por que me pareció un tostón de agárrate y corre.

Si Has dado un cursillo previo, quizás te parezca sencillo, a mi, tras cuatro años programando, me sigue pareciendo complicado.

Por cierto, Avillena ya inició un tutorial en su monento en su web: http://retrolandia.net/foro/showthread.php?tid=76

Mirad unos ejemplos:
Para el fichero de restricciones , 350 paginas --> http://www.xilinx.com/itp/xilinx10/book ... gd/cgd.pdf
Relojes, 112 --> https://www.xilinx.com/support/document ... ocking.pdf
Bloques de memoria , 80 y pico páginas --> https://www.xilinx.com/support/document ... ources.pdf

A ver quién tiene tiempo de leerse cientos y cientos de páginas para aprender...... yo no

Avatar de Usuario
spark2k06
Mensajes: 1188
Registrado: 12 Feb 2016, 13:58

Re: RE: Re: RE: Re: Aprender a diseñar para FPGAs

Mensaje por spark2k06 » 19 Nov 2016, 12:38

jepalza escribió:
spark2k06 escribió: Comentas que es difícil de depurar... el entorno de desarrollo no posee algún simulador de FPGA? O algún programa de electrónica... Donde puedas añadir un integrado de fpga y osciloscopios y demás a su salida, cargar el .bit y simular el comportamiento?

Enviado desde mi thor mediante Tapatalk
Sí, si sabes manejarlo o has dado un cursillo. Yo he aprendido por fuerza bruta, y muchas cosas no las sé manejar mejor que lo que ahora mismo hago.

Lo mio es un prueba/error en toda regla. Hay cosas que son tan complicadas, que mejor olvidarlas. Por poner un ejemplo, quisé averiguar cómo implementar un reloj "decente" y el manual oficial de Xilinx, tiene 800 páginas en un correcto inglés, y eso, solo para el reloj, imagina para el 100% de la lógica, como una 8000 páginas, sin exagerar nada de nada. No pasé de la 14, por que me pareció un tostón de agárrate y corre.

Si Has dado un cursillo previo, quizás te parezca sencillo, a mi, tras cuatro años programando, me sigue pareciendo complicado.

Por cierto, Avillena ya inició un tutorial en su monento en su web: http://retrolandia.net/foro/showthread.php?tid=76
Seguro que en esas 8000 páginas hay mucha paja y teoría... yo también soy muy de prueba y error y me gustan los cursos que van al grano, que seguro que los habrá, como el cursillo del enlace de Antonio que pasas y estoy viendo, está muy bien para adquirir nociones básicas. Gracias!

Enviado desde mi thor mediante Tapatalk

Avatar de Usuario
yombo
Mensajes: 487
Registrado: 05 Oct 2015, 14:10

Re: Aprender a diseñar para FPGAs

Mensaje por yombo » 19 Nov 2016, 14:05

Yo cuando empecé a meterme en el código fuente de ZX-Uno, vi enseguida la estructura jerárquica de módulos, cada uno recibiendo entradas y salidas desde arriba, y dándole a sus submódulos las entradas y salidas que necesitan. Es sencillo realmente, y elegante. Todas las entradas y salidas son cables realmente (líneas o wires) Y cada submódulo puede crear líneas como si fuesen variables locales de funciones.

Aunque desarrollar un sistema desde 0 en fpga tiene mucha más miga: la carga de flash por ejemplo.
Y el sistema de acceso a la sram en el ZX-Uno no me he metido a intentar comprenderlo aún.

Edit: Yo tenía algo de experiencia con cplds de la asignatura de laboratorio de sistemas.

hikoki
Mensajes: 307
Registrado: 21 Feb 2016, 01:38

Re: Aprender a diseñar para FPGAs

Mensaje por hikoki » 19 Nov 2016, 14:40

En Coursera tenéis un curso introductorio de sistemas digitales y vhdl. Gratuito, en español e inglés, con videos.
https://www.coursera.org/learn/sistemas-digitales
Comencé a mirarlo y tenía buena pinta. No sé si habrán sacado algún curso más avanzado para seguir profundizando
Última edición por hikoki el 19 Nov 2016, 16:35, editado 1 vez en total.

Avatar de Usuario
Mejias3D
Mensajes: 429
Registrado: 06 Oct 2015, 23:01

Re: Aprender a diseñar para FPGAs

Mensaje por Mejias3D » 19 Nov 2016, 14:51

Yo tampoco soy el más indicado para orientarte en esto, pero tal vez esto puede interesarte:

Sigo los pasos de Juan González (ObiJuan) desde hace 4 años, debido a sus conocimientos de hardaware libre e impresoras 3D RepRap. El es el fundador de la mayor comunidad hispana de usuarios de impresoras 3D, a la cual pertenezco, y que se llama "Clone Wars".

El caso es que, hace cosa de un año, comenzó con el diseño de la tarjeta iceZUM Alhambra basada en un FPGA Latice ice40hx1k y además creó el grupo "FPGA wars" para ayudar a todos a comenzar en eso del diseño.

Por otro lado, Jesús Arroyo está desarrollando "ICEstudio" un editor gráfico para FPGAs libres que facilita enormemente la definición de circuitos.

LINKS:

Tarjeta IceZUM Alhambra. FPGA para todos
https://www.youtube.com/watch?v=LC8nucTiswM

Página del proyecto "FPGA Wars"
http://fpgawars.github.io/

Tutoriales paso a paso de ObiJuan, comenzando desde lo más fácil con el diseño "Hola Mundo"
https://github.com/Obijuan/open-fpga-ve ... orial/wiki

Un par de vídeos (sin audio) que muestra el funcionamiento de la interfaz del ICEstudio
https://www.youtube.com/watch?v=lIjSNTmHkQU
https://www.youtube.com/watch?v=mAIKb47z2Do

Responder