Qué es una FPGA o cómo intentar que kikems lo entienda

Avatar de Usuario
desUBIKado
Mensajes: 545
Registrado: 15 Dic 2017 19:50
Agradecido : 174 veces
Agradecimiento recibido: 918 veces

Qué es una FPGA o cómo intentar que kikems lo entienda

Mensajepor desUBIKado » 29 Mar 2021 19:26

Trás ver este momento del programa de Amigawave de ayer

https://youtu.be/O9pGl8LpQok?t=4376

me animo a escribir unas pequeñas líneas.


1.- ¿Qué es una FPGA? ¿Qué es un core?

Las FPGAs son unos chips que nos permiten describir un circuito digital usando un lenguaje específico (los dos más comunes son VHDL y Verilog), y que internamente es como si fuesen un folio en blanco hasta que se les carga un bitstream o core -un archivo binario generado a partir de la descripción del circuito –, momento en que es creado físicamente en la FPGA.

El flujo de trabajo con las FPGAs


resized_flujo.png
resized_flujo.png (52.79 KiB) Visto 2115 veces

Etapas del diseño para una FPGA (Fuente: FPGA wars)


Las placas FPGAs que se usan en el retro son unos dispositivos configurables que permiten recrear todo el hardware de las computadoras de los 80 y principios de los 90, pudiendo las FPGA ser reprogramadas tantas veces como se necesite.

Lo más parecido a su funcionamiento sería la carga de un programa en la RAM de un ordenador, siendo que la carga de un core en una FPGA lo que hace es recrear el ordenador de forma física, no por emulación ejecutando un programa.


Fuentes:



2.- Diferencias entre FPGA y emuladores

El emulador necesita de todo un sistema con su CPU, RAM, etc, lo suficientemente potente como para simular el comportamiento del sistema emulado, lo que significa que dicho sistema irá a mucha más velocidad que el sistema que se pretende emular (emulador con CPU a 1GHz para emular un ordenador cuya máxima frecuencia interna son 14MHz)

Un emulador necesita llegar a una serie de compromisos, para que la emulación sea factible sin necesitar de un supercomputador. Uno de ellos es que las cosas no ocurren dentro del emulador a la misma vez que el usuario las ve en pantalla. El invento funciona, pero el emulador ahí no está mimetizando la máquina original, sino que mimetiza el efecto que produce en pantalla dicha máquina original para que nosotros nos lo traguemos.

En la FPGA si la descripción del hardware es precisa va a ser una emulación más elegante... no imitas el comportamiento, sino que lo replicas.

Por otra parte, en la FPGA hay un problema, y es que es enteramente digital, y hay chips que contiene componentes analógicos, por lo que dentro de las FPGA también hay ciertas cosas que se emulan. No tiene sentido decir que la FPGA son “puras” y los emuladores no, ya que, por ejemplo, las FPGA también permiten generar “scanlines” ficticias a imitación de las TV de tubo en las salidas de video VGA.


Conclusiones:

1ª Si la emulación o la recreación son extremadamente fieles al original las dos opciones son válidas.

2ª La emulación de sistemas retro lleva muchos más años de ventaja a la recreación por medio de FPGA, por lo que muchas veces el emulador funciona mejor que la FPGA, pero estas diferencias se irán acortando con el tiempo según se vayan puliendo los cores,

3ª La recreación por FPGA te da unas sensaciones mucho más cercanas a la máquina original, aunque para conseguir eso a veces es necesario disponer de ciertos periféricos de la época, como joysticks norma Atari, teclados y ratones PS/2, o monitores y televisiones CRT que soporten sincronismos y frecuencias de refresco que no funcionan en monitores más modernos.


Fuentes:



3.- ¿Es mejor un emulador o una FPGA? Depende del uso que le des

Hay emuladores que implementan ordenadores, consolas o dispositivos que no han sido recreados en FPGA, luego para poder probarlos sin tenerlos físicamente es necesario usar un emulador.

El uso de emuladores es más cómodo si se está desarrollando software para estas máquinas que el uso de una máquina real o una FPGA. Ya con las versiones “candidatas” o “finales” se debe usar máquinas reales para verificar que el software funcione bien en las máquinas para las que se ha creado.

Si tu uso es como usuario (cacharreador o gamer), pero no tanto como desarrollador, las FPGA dan una experiencia más cercana a la sensación de estar usando una máquina real que los emuladores. Además permitan pasar de una máquina a otra en cuestión de segundos.

Hay diversas placas FPGA que implementan microordenadores o consolas de los 80’s y 90’s, que además de permitir trabajar con dispositivos de la época como cassettes, joysticks DB9 o monitores y TV’s CRT, también permiten trabajar con versiones más modernas como gamepads USB o monitores HDMI.

Por último, el coste también puede ser importante. Los emuladores suelen ser gratuitos, y no se suele tener en cuenta el precio del ordenador en que los ejecutamos, ya que se supone que se usan para otras tareas además de emulación. Las FPGA no son extremadamente caras, y son una solución muchísimo más barata que lo que costaría tener los equipos y dispositivos reales que recrean.


4.- ¿Es más fiel un emulador o una FPGA? Depende de lo bien que esté hecho el core o el emulador.

Ambas soluciones pueden ser igualmente fieles a una máquina real, aunque por regla general, para aumentar el grado de perfección en la emulación de la máquina o en sus dispositivos, como pueden ser chips de sonido, salida de video simulando monitores CRT o TV’s, se necesitan equipos cada vez de mayor potencia.

La perfección en la recreación de una máquina por medio de FPGA se basa más en poder disponer de la información más detallada posible de todos los dispositivos que la componen, más que una cuestión de fuerza bruta o potencia, aunque según se van recreando máquinas más complejas también es necesario que las FPGA sean más grandes en número de celdas lógicas, velocidad y concurrencia de acceso a la memoria, inclusión de chips de apoyo en operaciones de entrada / salida, etc.

Y por supuesto, está la habilidad, el arte o el buen hacer del creador del emulador o del core de la FPGA. Aunque hay muchos emuladores que están hechos por una sola persona desde cero, normalmente los cores de las FPGA reutilizan, y muchas veces mejoran, muchos componentes realizados anteriormente por diversas personas, combinándolos para crear una implementación cada vez mejor de la máquina o dispositivo. Por eso, es muy importante en el mundo de las FPGA disponer de las fuentes de las implementaciones en formato VHDL o Verilog, y no solo de los binarios, para poder avanzar y mejorar de una forma colaborativa.


5.- EPÍLOGO

¿Sabes? Sé que el refresco de pantalla no es exacto. Sé que cuando veo esas scanlines, es el emulador el que le está diciendo a mi cerebro: es entrelazado. Se ve como en una CRT...

resized_c1.jpg
resized_c1.jpg (21.5 KiB) Visto 2115 veces


Después de tantos años, sintonizando la señal RF y agotando las entradas de euroconector. ¿Sabes de qué me doy cuenta?

resized_c2.png
resized_c2.png (126.14 KiB) Visto 2115 veces

resized_c3.png
resized_c3.png (137.68 KiB) Visto 2115 veces


La ignorancia es la felicidad.

resized_c4.png
resized_c4.png (129.81 KiB) Visto 2115 veces


Fuente: https://twitter.com/Jon_Cortazar/status ... 4291446784

Avatar de Usuario
Miguel angel rojo
Mensajes: 2144
Registrado: 08 May 2017 12:49
Agradecido : 196 veces
Agradecimiento recibido: 822 veces

Re: Qué es una FPGA o cómo intentar que kikems lo entienda

Mensajepor Miguel angel rojo » 29 Mar 2021 19:45

Buen e interesante post. Gracias
PD. Me pillo palomitas :-)
-coam1 -4mstr4d -j4tar1 -cocbm1
-0r1c -sp3zy -m3s3x -m4c

Avatar de Usuario
jorsus
Mensajes: 397
Registrado: 02 Ago 2018 20:53
Ubicación: Algeciras
Agradecido : 412 veces
Agradecimiento recibido: 347 veces

Re: Qué es una FPGA o cómo intentar que kikems lo entienda

Mensajepor jorsus » 29 Mar 2021 19:51

Pero Kikems, si tienes una Vampire y una Chameleon 64. ¿Como puedes decir que no sabes que es un FPGA?
-grin -507

Avatar de Usuario
GuerreroNinja
Mensajes: 774
Registrado: 18 Feb 2021 20:37
Agradecido : 455 veces
Agradecimiento recibido: 466 veces

Re: Qué es una FPGA o cómo intentar que kikems lo entienda

Mensajepor GuerreroNinja » 29 Mar 2021 19:57

Muy bien explicado. En realidad, hay gente que se obsesiona con la fidelidad cuando solo quieren cargar un juego, probarlo 1 minuto, y repetir la operación. Otros solo quieren jugar cómodos en su LCD de 55". Y a otros nos interesa la preservación fiel. Son objetivos MUY distintos los unos de los otros, y no se puede generalizar ni estar todo el día peleando que sobre si emuladores o FPGAs, LCDs o CRTs, y demás zarandajas. ¿Mejores desde qué punto de vista? ¿Para cargar juegos y que se ejecuten como te gusta (o sea, que carguen en 1 segundo y tengan un menú de selección? ¿Para que se comporte como lo hace la máquina original?

En fin, que al final, la imposición de la visión personal no lleva a ninguna parte. Como Cifra, que cada uno elija su ignorancia. Y desde el punto de vista de la preservación, bueno, pues todo lo que se acerque al máximo al comportamiento real de la máquina original, mejor es. Y las FPGAs lo hacen mejor en ese sentido, potencialmente. No hay más.
Mis niñas favoritas: -m3s3x MSX2+ Sony F1XDJ / Wavy 70FD / SVI728 / HB-75P / HB101 -sp3ct4av1d30 SVI 328 MKII / SVI 640 -cocbm1 C64C -coam1 A1200 -4mstr4d CPC6128+ / Amstrad 2386 -ph34r MiSTer -sp3zy Gomados+ / N-GO / ZXUno -j4tar1 Atari 800XL

Avatar de Usuario
kikems
Mensajes: 5502
Registrado: 30 May 2013 19:23
Agradecido : 2638 veces
Agradecimiento recibido: 3112 veces

Re: Qué es una FPGA o cómo intentar que kikems lo entienda

Mensajepor kikems » 30 Mar 2021 00:08

Me alegra mucho ver que esa confusión ha dado lugar a un hilo tan interesante como este. No entiendo de donde ha salido la idea de que no sé o no entiendo lo que es es un FPGA, lo que dije es que no tengo claro la diferencia que hay entre una Mist, una Mister, Sidi, Misti-Sidi ..., vamos que si tengo que escoger en adquirir una, no sabría cual.

Ya sé que el abuelo Estrayk se puso a explicarme lo que era una FPGA, no era lo que yo había preguntado pero como respeto a los mayores no quise corregirlo. -nb -drinks -grin

Cada vez nos pasan más esas situaciones en las que uno pregunta , por ejemplo , por un Spectrum y el otro le responde explicando cómo es un C64, por eso buscamos ya la jubilación, chocheamos. -thumbup

Avatar de Usuario
Frankie_Say
Mensajes: 69
Registrado: 15 Dic 2020 19:47
Agradecido : 241 veces
Agradecimiento recibido: 69 veces

Re: Qué es una FPGA o cómo intentar que kikems lo entienda

Mensajepor Frankie_Say » 30 Mar 2021 00:58

kikems, el detalle que diferencia realmente a las FPGA de los emuladores convencionales es que dentro de la FPGA muchas operaciones no funcionan en secuencia como las instrucciones de un programa convencional emulando un micro, sino que funcionan en paralelo como en el propio diseño de los propios circuitos digitales que en su interior se reimplementan al cargar un core. Cuando tú programas un bus de datos para una FPGA ese bus de datos no es un 'objeto' o una variable en memoria como en los emuladores, es un bus real formado por la circutería interna reprogramable de los chips FPGA. Eso implica que el código de un programa en un lenguaje para chips FPGA tiene un aspecto muy similar al de juntar las piezas de un puzle compuesto de diferentes partes que vas interconectando.

Además como lo que se describe basicamente es un circuito (excepto procesadores y chips complejos que probablemente tienen una extensión de código similar a la de un emulador convencional) sospecho que el código de un emulador completo para FPGA es bastante más reducido que el de los emuladores convencionales. Si en este detalle meto la pata o ando muy equivocado decidme cosas, me consta que hay por aquí gente muy preparada.

Que la ejecución del diseño se desarrolle en paralelo significa por ejemplo que las latencias en los joystics por pines se reducen al mínimo o a los tiempos originales del micro reimplementado puesto que no están esperando su turno para escuchar las señales del joystick como en los programas convencionales.

Otro ejemplo lo tienes con el Turbo Chameleon (he visto que tienes uno en los Amiga Wave, yo tengo otro instalado en mi C64). Cuando le metes el turbo de la CPU del C64 al cartucho Turbo Chameleon el procesador 6510 reimplementado en el cartucho junto a la señal de video se acelera hasta x10 en los videojuegos y sin embargo el chip de sonido sigue sonando a velocidad normal precisamente por ese procesamiento en paralelo de los circuitos reimplementados. En el emulador VICE del C64 cuando aceleras la CPU el chip de sonido también se acelera y hace los juegos injugables, al menos con sonido.

Como explicación rápida e intuitiva vale el anterior párrafo, pero no es que 'se acelere la señal de video', sospecho que al acelerar el reloj de la cpu 6510 del C64 se acelera a su vez el chip de video VIC-II, es decir, se sincronizan ambos chips a la nueva velocidad de reloj del sistema. Sin embargo el chip SID de sonido sospecho que continua sincronizado o con el resfresco de pantalla que es siempre fijo o con los relojes temporizadores de los chips CIA del C64. Eso explicaría el paralelismo y que una parte de la máquina se acelere y la otra no.

Ese paralelismo en las FPGA es el secreto de su "potencia" (que no es tal) puesto que los diseños no funcionan por fuerza bruta como en los emuladores normales. Por esa razón con una FPGA con un reloj entre 50 y 100 megahercios se pueden reimplementar sin mucha dificultad micros funcionando a 1, 4, 7,16, o 20 megahercios. Saludos a kikems y al creador de este hilo desUBIKado.

Avatar de Usuario
retrolab
Mensajes: 951
Registrado: 10 May 2014 18:06
Agradecido : 69 veces
Agradecimiento recibido: 171 veces

Re: Qué es una FPGA o cómo intentar que kikems lo entienda

Mensajepor retrolab » 30 Mar 2021 08:19

Muy bien explicado! Me he enterado hasta yo.... ;-)

jltursan
Mensajes: 5619
Registrado: 20 Sep 2011 13:59
Ubicación: Madrid
Agradecido : 990 veces
Agradecimiento recibido: 2040 veces
Contactar:

Re: Qué es una FPGA o cómo intentar que kikems lo entienda

Mensajepor jltursan » 30 Mar 2021 08:58

Sea por la razón que sea, siempre viene bien el refrescar ideas :-)

HyLian
Mensajes: 10
Registrado: 09 Nov 2018 15:10
Agradecido : 1 vez
Agradecimiento recibido: 8 veces

Re: Qué es una FPGA o cómo intentar que kikems lo entienda

Mensajepor HyLian » 30 Mar 2021 11:32

En mi opinion las FPGAs estan, en ocasiones, sobrevaloradas cuando las comparamos a un emulador.

En el fondo ambas cosas tratan de emular otra maquina, los emuladores software lo hacen mediante eso, software y las FPGAs lo emulan de manera diferente.

Creo que se puede conseguir una recreacion igual de buena por ambos caminos, y creo que hay ejemplos de ello, se me vienen a la mente el ZXBaremulator del spectrum de JSpeccy o el de comodore 64 para la PI. Tambien creo que hacer un emulador software es algo mucho mas sencillo que lanzarse con las FPGAs, cualquiera que sepa programar puede hacerlo, por lo que puede haber muchos emuladores no tan buenos, o que la emulacion no persiga la fidelidad pero si la velocidad.

Hace tiempo que tengo una MiST, y realmente me encanta, pero tenia la idea que las recreaciones con FPGAs serian siempre superiores a los emuladores, y realmente he visto muchos ejemplos de no ser realmente asi, estando los emuladores por encima de sus hermanos FPGA.

En cualquier caso, lo importante es divertirse con el cacharreo y el estudio de las maquinas que nos gustan, y al menos a mi, ambas opciones me encantan!

Avatar de Usuario
desUBIKado
Mensajes: 545
Registrado: 15 Dic 2017 19:50
Agradecido : 174 veces
Agradecimiento recibido: 918 veces

Re: Qué es una FPGA o cómo intentar que kikems lo entienda

Mensajepor desUBIKado » 30 Mar 2021 13:21

HyLian escribió:Hace tiempo que tengo una MiST, y realmente me encanta, pero tenia la idea que las recreaciones con FPGAs serian siempre superiores a los emuladores, y realmente he visto muchos ejemplos de no ser realmente asi, estando los emuladores por encima de sus hermanos FPGA.


Bueno, eso que tu pensabas lo ha pensado mucha gente, yo incluido, pero cuando llevas ya años usando FPGA lo pones todo en su contexto.

Cierto que hay muchos emuladores que están en fidelidad a la máquina por encima de los actuales cores de la misma, pero a costa de usar máquinas anfitriones muy potentes (vease i5 o i7 o equivalentes), o simplemente porque los emuladores ya llevan 30 años con nosotros, y van evolucionando y mejorando.

Digamos que los emuladores llevan 20 años de ventaja a las FPGA, y eso se nota, pero yo creo que poco a poco las FPGA serán finalmente más fieles a las máquinas recreadas que sus homólogos emuladores, calculando yo que esa fecha llegará más o menos en el año de Linux en el escritorio.

Avatar de Usuario
Frankie_Say
Mensajes: 69
Registrado: 15 Dic 2020 19:47
Agradecido : 241 veces
Agradecimiento recibido: 69 veces

Re: Qué es una FPGA o cómo intentar que kikems lo entienda

Mensajepor Frankie_Say » 30 Mar 2021 13:37

desUBIKado, lo maravilloso de las FPGA es que no hay capas de ningún tipo por debajo del micro reimplementado, ni Gnu/Linux en el escritorio (lo único que uso en casa), ni drivers actualizados para la última tarjeta gráfica o para el chip de sonido.

Eso es algo que hasta cierto punto ahora también ofrecen las Raspberry Pi programadas en modo 'BareMetal' con la librería libre 'Circle', un tema que me atrae bastante, la verdad.

Y señalo otro punto que no me parece nada despreciable a la hora de valorar el mundo de las FPGA. Los chips FPGA con mayor mercado y por lo tanto más populares NO SON 'Hardware Libre'. No solo no está abiertamente documentado su funcionamiento interno sino que los IDE, los entornos software de desarrollo para FPGA, son cerrados, son propietarios y están restringidos sin previo pago a diseños pequeños. Este es un tema importante porque crea mucha dependencia y cierra muchas puertas al desarrollo sobre chips FPGA. Me consta que el proyecto en la web 'FPGAWars' ha conseguido crear sus propias aplicaciones libres para programar una marca concreta de chips FPGA de bajo costo pero que por prestaciones no pueden competir con el chip FPGA que traen las MISTER por ejemplo. Sobre este tema si alguien conoce de primera mano del estado actual del mismo se le agradecen aclaraciones o puntualizaciones.

Avatar de Usuario
fcastellanos
Mensajes: 363
Registrado: 23 Feb 2021 14:10
Agradecido : 202 veces
Agradecimiento recibido: 78 veces

Re: Qué es una FPGA o cómo intentar que kikems lo entienda

Mensajepor fcastellanos » 30 Mar 2021 14:41

Ahora que ya se están popularizando los procesadores RISC Open Source quizá alguien empiece a meterse en el tema del diseño y fabricación de las FPGA "libres". ;-)


Volver a “Otras placas FPGA”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado