Para todo esto hay una frase que lo resume todo, y que además es el lema del sitio web
FPGAArcadeNo 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

(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
