FPGA vs emuladores

Si por algo se caracteriza el Spectrum es por su gran variedad de periféricos (clásicos y modernos)

Moderador: Sir Cilve Sinclair

Avatar de Usuario
radastan
Phantomas
Mensajes: 2232
Registrado: Lun May 07, 2007 5:34 pm
Contactar:

FPGA vs emuladores

Mensaje por radastan » Mié Feb 12, 2014 10:45 pm

Bien, este hilo viene de una discusión entre Santiago y yo por Twitter, pero creo que es bueno comentarlo por aquí y de paso quitar ideas equivocadas sobre este asunto.

EL ZX SPECTRUM REAL
___________________

Un ZX Spectrum real está compuesto básicamente por componentes discretos, memoria, un procesador, y una ULA. Obviando los componentes pasivos, el resto funcionan de forma digital, mediante puertas lógicas implementadas de diversas formas.

En el caso de una CPU tenemos puertas lógicas orgaanizadas para tener memoria interna (los registros), realizar distintas operaciones (ALU), y un largo etcétera.

En el caso de la memoria son matrices de puertas lógicas que conservan los datos de forma temporal (RAM) o permanente debido a que se han anulado conexiones (ROM).

UN EMULADOR DE ZX SPECTRUM
___________________________

Los emuladores, hasta ahora, simulan el comportamiento del ZX Spectrum a base de similitudes. Es decir, se usa memoria en el programa para simular la del ZX Spectrum, las instrucciones de la CPU se trasladan a funciones que hagan algo similar, y por norma se trata de seguir los relojes del sistema para sincronizar todo.

La pega, por lo que no son 100% perfectos, es que es imposible emular de esta forma un hardware real. Las puertas lógicas tienen tiempos de propagación, los datos no llegan de forma simultánea a todos lados (en un emulador si) y se requiere meter temporizaciones extra en el emulador para paliar estas diferencias. Lo que se hace es una EMULACIÓN, se consigue que el emulador funcione de forma similar a un ZX Spectrum.

La única solución sería emular el hardware a nivel de puerta lógica, es decir: emular puertas simples con sus características, los componentes pasivos, las conexiones, y simular el funcionamiento a nivel eléctrico. A eso se le llama SIMULACIÓN, y sólo programas como PSPICE y similares son capaces de hacerlo, pero generalmente no en tiempo real.

IMPLEMENTACIONES FPGA
______________________

Una FPGA no es un emulador, no hay sistema operativo. Las siglas FPGA vienen de "Field Programmable Gate Array", es decir "Campo matricial de puertas programables". Contiene bloques lógicos (puertas lógicas) cuya interconexión y funcionalidad puede ser configurada.

Esta lógica programable no emula un circuito, lo reproduce.

Para ver un simil nos vamos al mismo ZX Spectrum: su ULA es un chip ASIC. Un chip ASIC es el abuelito de las FPGA, sólo que vienen definidas de fábrica sin posibilidad de modificarse. Un ASIC es como una FPGA, una matriz de puertas programables, que en fábrica se ha configurado para realizar unas funciones específicas.

¿Qué sentido tiene? pues el de ahorrar muchos componentes, dinero, y consumo de energía.

Una FPGA se configura con un lenguaje descriptivo, no es un lenguaje interpretado o que se compile, es una descripción del hardware que vamos a configurar. Es decir, decimos que puertas queremos, cómo deben estar interconexionadas, los buses, etc. Tenemos unos tiempos de respuesta, unas atenuaciones de señal, etc.

No hay una CPU detrás, ni un sistema operativo, ni un lenguaje interpretado, nada. Sólo hardware.

Evidentemente para poder clonar un hardware debemos conocerlo al 100%, en caso contrario no se comportará exactamente igual. Esto es debido a que en una FPGA las señales se transmiten más rápidamente que en un circuito realizado a base de componentes discretos. La gran diferencia con un emulador es que aquí si podemos meter temporizaciones exactas a nivel de puerta lógica, bus, etc.

QUÉ PUEDE HACER UNA FPGA QUE NO PUEDA HACER UN EMULADOR
_________________________________________________________

Pues muy simple: funcionar exactamente igual. Podemos crear una placa con los mismos puertos y conectores que el ZX Spectrum pero con una FPGA como corazón, que sea del mismo tamaño y que pueda usar el teclado del ZX Spectrum de igual forma. Le podríamos conectar sin problemas las interfaces originales, porque a nivel electrónico sería exactamente igual.
_________________________________________
Hay otras páginas.... pero no son Bytemaniacos
http://www.bytemaniacos.com
Orgullo de 8 bits
_________________________________________

Avatar de Usuario
radastan
Phantomas
Mensajes: 2232
Registrado: Lun May 07, 2007 5:34 pm
Contactar:

Re: FPGA vs emuladores

Mensaje por radastan » Mié Feb 12, 2014 10:54 pm

Por cierto, una ULA es básicamente la antecesora de la FPGA, por lo que si una FPGA no es hardware real... tampoco lo sería el propio ZX Spectrum. :lol:

De igual forma los distintos modelos de ZX Spectrum fabricados por Amstrad usaban chips ASIC para reducir el número de componentes.

¿Queréis la mayor aproximación a implementar un sistema entero por FPGA? las NES clónicas, sólo que en ese caso no se tiene una compatibilidad al 100% (sobre todo en el sonido) porque los que programaron los clones no tenían la descripción del hardware original, sólo una aproximación por ingeniería inversa.
_________________________________________
Hay otras páginas.... pero no son Bytemaniacos
http://www.bytemaniacos.com
Orgullo de 8 bits
_________________________________________

Avatar de Usuario
mcleod_ideafix
Johnny Jones
Mensajes: 3985
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera
Contactar:

Re: FPGA vs emuladores

Mensaje por mcleod_ideafix » Mié Feb 12, 2014 11:17 pm

Para todo esto hay una frase que lo resume todo, y que además es el lema del sitio web FPGAArcade

No emulation, no compromises.

Con esto debería quedar dicho todo. Ahora bien, para los que aún no se han enterado de lo que es la electrónica reconfigurable (mal llamada "programable"):

Si el ZX81 es un ZX80 con menos componentes, porque la gran mayoría de ellos se han metido en una ULA, ¿es el ZX81 una emulación mejorada del ZX80?

Si en el Spectrum issue 6 se aglutinaron 6 chips (multiplexores y poco más) en un único circuito denominado PFC1306, ¿es ese circuito una emulación de los 6 chips que había antes?

Si en el MSX cogemos el 8255, el VDU, el PSG, y no se cuántos chips más, y los metemos todos en un chip al cual llamamos MSX Engine, ¿es éste MSX Engine una emulación de los chips anteriores?

Respuesta a estas cosas: NO. No son emulaciones: son reimplementaciones. La sutil diferencia entre aquellos chips ULA y las FPGA es que la tecnología ha evolucionado lo suficiente como para que esos chips que aglutinan funciones no haya que encargarlos a fábrica y gastarse un pastón, sino que los puedes configurar tú en casa, de la misma forma en que hoy puedes grabar una flash EPROM con tu versión preferida de la ROM del proyecto +3e, en lugar de pedir a fábrica una ROM de máscara.

Lo explico de otra forma: una ROM de máscara es a una Flash EPROM, lo que una ULA es a una CPLD/FPGA.

Sutiles (o no tan sutiles) diferencias entre un emulador y una reimplementación:

- El emulador necesita de todo un sistema con su CPU, RAM, etc, lo suficientemente potente como para remedar 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)
- Reimplementación: la frecuencia de trabajo es del mismo orden que la frecuencia de trabajo del sistema original (en el caso del ZX-Uno son 28MHz, justo el doble de la frecuencia original)
- 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 traguemos.

Si aun así, alguien quiere seguir llamando a esto "emulación hardware", pues nada, que lo llame como quiera. Si nos ponemos en modo "purist bitch", lo único que existen realmente son los transistores: todo lo demás son emulaciones :P (hasta las resistencias que hay dentro del Z80 son transistores, fíjate tú)

Ahora, una de cal, una de arena:
En una FPGA también cabe hacer algo de emulación. En el caso del ZX-Uno, lo que se emula, que no existe en la placa, es la existencia de dos bloques de memoria separados que sí existen en el Spectrum original. Esto SI que se emula, con ayuda de la velocidad de la FPGA (y de la memoria integrada en ZX-Uno) que permite usarla como si fuera un recurso compartido en el tiempo (ahora te toca a ti, ahora a mi, ahora a ti, ahora a mi...)

Pero igual que te digo una "co", te digo la "o":
En el Spectrum original también hay cosas que no existen y que se emulan: en concreto, el codificador PAL LM1889 no es tal codificador PAL, sino codificador NTSC. Es la ULA la que le entrega las señales U y V convenientemente trucadas para que el LM1889 las codifique en lo que él cree que es NTSC, pero que es PAL :P
Web: ZX Projects | Twitter: @zxprojects

zup
Freddy Hardest
Mensajes: 666
Registrado: Vie Ago 15, 2008 2:43 pm

Re: FPGA vs emuladores

Mensaje por zup » Mié Feb 12, 2014 11:27 pm

- Diferencias: una FPGA es digital, la ULA contiene componentes analógicos.
- Problemas: el Spectrum tiene los buses a niveles TTL, hoy en día quedan pocas FPGA a 5v. Hay tres soluciones (usar adaptadores de niveles, usar una FPGA a 5v o no permitir hardware antiguo) cada una con sus propios problemas.
- Beneficios: como se ha dicho, 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.
I have traveled across the universe and through the years to find Her. Sometimes going all the way is just a start...

Avatar de Usuario
radastan
Phantomas
Mensajes: 2232
Registrado: Lun May 07, 2007 5:34 pm
Contactar:

Re: FPGA vs emuladores

Mensaje por radastan » Mié Feb 12, 2014 11:29 pm

zup escribió:- Beneficios: como se ha dicho, 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.


No emplees la palabra emulación, es una replicación. Dolly no es una oveja emulada, es una oveja replicada.
_________________________________________
Hay otras páginas.... pero no son Bytemaniacos
http://www.bytemaniacos.com
Orgullo de 8 bits
_________________________________________

Avatar de Usuario
antoniovillena
Nonamed
Mensajes: 1164
Registrado: Dom Ene 09, 2011 8:55 am

Re: FPGA vs emuladores

Mensaje por antoniovillena » Mié Feb 12, 2014 11:34 pm

En realidad con un emulador puedes llegar al mismo nivel de exactitud que con una FPGA, las diferencias son:
  • En el emulador estás limitado al hardware anfitrión, que tiene que ser mucho más potente que el hardware emulado si quieres hacerlo en tiempo real.
  • La limitación no se queda en la CPU si no en todos los sentidos. Te tienes que ceñir a lo que se ve en la pantalla, sale por el altavoz y entra por la entrada por los periféricos de entrada del ordenador anfitrión. Si el huesped saca video compuesto y el anfitrión es un PC con un monitor, pues tendrás VGA ó HDMI pero no video compuesto. Incluso en el caso de tener una tarjeta gráfica que saque video compuesto, la señal de salida no será la misma.
  • Los emuladores son mayormente secuenciales, cada dispositivo emulado requiere su tiempo de procesado y si una máquina tiene muchos dispositivos la emulación se va a ralentizar. En una FPGA todo es paralelo.
  • Hay cosas como la contención muy sencillas de sintetizar en una FPGA pero que son un verdadero calvario hacerlo en un emulador.
  • Una FPGA no necesariamente tiene por qué ser más fiel que un emulador, todo depende de la pericia del diseñador/programador. A medida que bajemos el nivel hay un punto en que el emulador no puede igualar a una FPGA. Por ejemplo si quieres emular el puerto de expansión de una máquina lo tienes muy chungo.
Imagen

sromero
Nonamed
Mensajes: 1221
Registrado: Mar Abr 17, 2007 12:35 pm
Ubicación: Valencia
Contactar:

Re: FPGA vs emuladores

Mensaje por sromero » Mié Feb 12, 2014 11:54 pm

Hola ...

He sido yo el que le "discutía" a radastan el tema en Twitter y el que ha nombrado la expresión "emulación hardware" a la que hace referencia mcleod.

Igual no ha sido la expresión más acertada pero a lo que me refería es que sí, la electrónica que habrá debajo permite replicar el comportamiento del original pero necesitas conocer al detalle todo el hardware para poder programarlo exáctamente igual en la FPGA. No sé si estamos ya en el punto en que la "replicación" (como queréis llamarla) es perfecta... o si al final seguimos dependiendo de que quien programa "la lógica" de dicha FPGA...

Pero bueno, vista la respuesta de mcleod (quien parece haberse incluso tomado a mal mi expresión "emulación hardware" xD) y la de Radastan, supongo que debe de ser cierto que estamos en el punto en que una FPGA es una replicación exacta del Spectrum, incluyendo esas peculiaridades (que no sé si serán mitos o realidad, pero me suena haberlo leído aquí) tipo que si nosequé modelo cuando se calentaba variabla la frecuencia de su reloj, por ejemplo.

Un saludo.
NoP / Compiler

Avatar de Usuario
mcleod_ideafix
Johnny Jones
Mensajes: 3985
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera
Contactar:

Re: FPGA vs emuladores

Mensaje por mcleod_ideafix » Jue Feb 13, 2014 1:21 am

sromero escribió:supongo que debe de ser cierto que estamos en el punto en que una FPGA es una replicación exacta del Spectrum, incluyendo esas peculiaridades (que no sé si serán mitos o realidad, pero me suena haberlo leído aquí) tipo que si nosequé modelo cuando se calentaba variabla la frecuencia de su reloj, por ejemplo.

No, no estamos en ese punto. Esos detalles dependen de la tecnología de fabricación. Si hemos llegado al punto en que el diseño en FPGA es tan igual al original, que todos los "quirks" derivados del comportamiento a nivel RTL se dan tanto en la FPGA como en el diseño original. Me refiero, por ejemplo, a la "ULA snow": es un error de diseño en el Spectrum, que al llevarse tal cual a la FPGA, también aparece en ella (la ULAplus que tengo hecha para Spectrum 48K exhibe este mismo comportamiento).

Ahora bien: errores o "quirks" debidos a los retrasos producidos por las puertas lógicas en una y otra tecnología (como Chris describe en su libro) o temas de calientamiento, en la FPGA no se darán, de la misma forma que no se dan en clones como el Inves, o los clones rusos, o el mismo Harlequin que estuvimos haciendo hace un tiempo aquí gracias a José Leandro y Flopping. Es decir, hay cosas que son propias de la tecnología de fabricación, y que sencillamente, no existirán en un cacharro que haga lo mismo, pero con otra tecnología (por ejemplo, el Z80 original NMOS y el Z80 CMOS no se comportan exactamente igual)
Web: ZX Projects | Twitter: @zxprojects

Avatar de Usuario
Hark0
Freddy Hardest
Mensajes: 545
Registrado: Mar Nov 13, 2012 12:42 pm
Ubicación: Cornella de Llobregat - Barcelona
Contactar:

Re: FPGA vs emuladores

Mensaje por Hark0 » Jue Feb 13, 2014 8:03 am

más más... este hilo es de lo más interesante :wink:
litiopixel.blogspot.com - Desarrollo videojuegos Indie · Pixel-Art · Retroinformática · Electrónica

zx_spectrum_plus3
Jack The Nipper
Mensajes: 185
Registrado: Mar Abr 17, 2007 12:32 pm

Re: FPGA vs emuladores

Mensaje por zx_spectrum_plus3 » Jue Feb 13, 2014 8:41 am

Yo creo que con todo lo dicho hay más que suficiente para convencer a la gente de la implementación del Spectrum mediante una FPGA no se trata de un sucedáneo.

Avatar de Usuario
falvarez
Sabreman
Mensajes: 375
Registrado: Mar Abr 17, 2007 12:28 am
Ubicación: Madrid
Contactar:

Re: FPGA vs emuladores

Mensaje por falvarez » Jue Feb 13, 2014 9:22 am

Buenas.

Yo creo que el foco de este tipo de proyectos debería ser crear hardware que sea capaz de reproducir fidedignamente la mayor cantidad de software posible, idealmente el 100%. Obviamente, parece que el camino más lógico pasa por construir una reproducción del hardware original.

Digo esto porque, dentro de unos años, muchos o pocos, tanto los Spectrums como las cintas/disquetes dejarán de funcionar. Ya se está trabajando en preservar el software, pero también hay que darle un empujón a preservar el hardware, y creo que esta es la manera.

Ánimo a todos los impulsores de estos proyectos.

Un saludo.

zup
Freddy Hardest
Mensajes: 666
Registrado: Vie Ago 15, 2008 2:43 pm

Re: FPGA vs emuladores

Mensaje por zup » Jue Feb 13, 2014 11:10 am

Yo me adhiero a lo de "emulación hardware", por dos motivos:

- El dispositivo no es una recreación del Spectrum, ya que es programable. Con algunos cambios, podría ser una emulación de un ZX81 (lo pongo por ser el primo menor) u otra cosa... limitado a lo que puedas meter en la FPGA. En ese sentido, la recreación sería el Harlequín.

- Seguimos imitando el comportamiento del Spectrum, ya que no tenemos la descripción exacta del hardware (en especial del Z80 y la ULA). En el caso del Z80, hay cambios según su tecnología de construcción (recuerdo vagamente algo de un flag que cambiaba en una instrucción, o el comportamiento de un IN); en el caso de la ULA, tuvo que ser reconstruida en base a ingeniería inversa. Podemos argumentar que ambas emulaciones son tremendamente precisas, pero siempre cabe la posibilidad de que en un caso concreto la pifien. La única manera de conseguir una recreación perfecta sería teniendo el diseño original de ambos chips.

Creo que en el caso de cierto micro (no recuerdo si el 6502 o el 6809), esto es un auténtico cachondeo. Se hicieron muchos clones y cada uno tenía sus propias manías con los opcodes sin documentar, ya que no se definió el comportamiento interno del micro (solo cómo operaban los opcodes) y cada fabricante lo implementaba a su manera.

También recuerdo un artículo de mcleod (creo) en el que, durante uno de sus experimentos o reparaciones, descubrió que con la temperatura una señal de reloj de la ULA iba cambiando su frecuencia e influía en el comportamiento de la memoria (este cambio es inapreciable para los usuarios). La FPGA se comportaría como un spectrum "ideal", sin cambios de temperatura ni nada por el estilo y no exhibirá este comportamiento.
I have traveled across the universe and through the years to find Her. Sometimes going all the way is just a start...

Avatar de Usuario
Metalbrain
Freddy Hardest
Mensajes: 592
Registrado: Lun May 07, 2007 8:17 am
Ubicación: Sevilla
Contactar:

Re: FPGA vs emuladores

Mensaje por Metalbrain » Jue Feb 13, 2014 12:14 pm

zup escribió:en el caso de la ULA, tuvo que ser reconstruida en base a ingeniería inversa.


Esto que yo sepa es incorrecto. Hubo ingeniería inversa al principio, pero luego se recurrió a abrir las ULAs y hacerles fotos megaampliadas para ir viendo donde estaba cada transistor, resistencia, etc... obteniendose así descripciones exactas.
SevenuP se escribe con u minúscula y P mayúscula.

Avatar de Usuario
Hark0
Freddy Hardest
Mensajes: 545
Registrado: Mar Nov 13, 2012 12:42 pm
Ubicación: Cornella de Llobregat - Barcelona
Contactar:

Re: FPGA vs emuladores

Mensaje por Hark0 » Jue Feb 13, 2014 12:57 pm

Digooooo

¿Emuladores de FPGA "sencillos" para probar un ZX hailos?
litiopixel.blogspot.com - Desarrollo videojuegos Indie · Pixel-Art · Retroinformática · Electrónica

Avatar de Usuario
antoniovillena
Nonamed
Mensajes: 1164
Registrado: Dom Ene 09, 2011 8:55 am

Re: FPGA vs emuladores

Mensaje por antoniovillena » Jue Feb 13, 2014 1:11 pm

Te puedes instalar el ISE Webpack y simular lo que quieras. Eso sí, no esperes nada en tiempo real. McLeod se curró un sistema mediante el cual generaba la señal de video en un gif animado. Para unos pocos frames te puedes tirar varios minutos.
Imagen

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados