KCPSM6 PicoBlaze: ¡Soft cores al poder!

Avatar de Usuario
jotego
Mensajes: 158
Registrado: 11 May 2016, 23:45
Ubicación: Valencia
Contactar:

KCPSM6 PicoBlaze: ¡Soft cores al poder!

Mensaje por jotego » 08 May 2018, 11:55

El core de M6809 que usa jt_gng ocupa ya más que toda la FPGA del ZX-UNO. Pensaba yo que por ser una CPU de 8 bits iba a caber fácilmente… Pues no. No cabe. La Spartan 6 que usa el ZX-UNO tiene 1430 slices (¿para cuando un upgrade?). Y el core de la CPU usa más o menos esa cantidad.

Esta CPU es un procesador potente de 8 bits: buenos modos de direccionamiento, un poquito de aritmética interna de 16 bits… En general se la ve usada a 4MHz en las placas de la época.

Xilinx tiene una CPU de 8 bits estilo RISC -KCPSM6, conocida como PicoBlaze-, que ocupa sólo 26 slices (sí, sólo 26 según la documentación) más un bloque de RAM que sirve para el código. Esta CPU según ellos llega a correr a 125MHz en la Spartan 6. Todas las instrucciones tardan lo mismo: 2 ciclos de reloj. O sea 62.5 MIPS máximo.

¿Ya sabéis por dónde voy? Pues eso. La idea es olvidarse de hacer las CPUs directamente en lógica y usar un PicoBlaze como núcleo de la CPU. El código de la PicoBlaze sería el equivalente al microcódigo de una CPU normal. Es decir, hacemos un emulador software de la CPU original que corre en la PicoBlaze y nos quitamos mucha, pero mucha, complicación de encima. Además de liberar mucho, pero mucho, sitio de la FPGA. Así le damos vida para algunos años más al ZX-UNO.

¿Qué cómo lo hacemos? Bueno, la PicoBlaze tiene 16 registros de 8 bits y puede acceder al mundo exterior a través de un puerto de 8 bits más 8 bits de dirección. Hace falta hacerle un poquito de lógica exterior de bridge para adaptar los puertos a los de la CPU original y a correr.

Por ejemplo. La instrucción LDA del 6809 carga 8 bits en el acumulador A. Esta instrucción tarda 2 ciclos de reloj en ejecutarse. A ver cuánto tardaría en correr emulada:

1. Decodificar el direccionamiento (~3 pasos)
2. Cargar el dato (~1 paso)
3. Actualizar los flags (~3 pasos)

Serían unos 7 pasos más quizá 2 o 3 más de descodificar la instrucción original. O sea unas 10 instrucciones (pasos) en la PicoBlaze, o 20 ciclos de reloj. Para que acabemos al menos en el mismo tiempo que la CPU original habría que correr la PicoBlaze a 20/2=10 veces más o sea 40MHz. Si se supone que la PicoBlaze va hasta 125MHz, estamos aun lejos del límite. Incluso si tardáramos 20 veces más (80MHz) aun estaríamos lejos. Como la PicoBlaze son muy poquitas slices se puede sintetizar bien todo juntito y no dará problemas de velocidad.

Para CPUs viejas de los 80, esta parece una alternativa muy eficiente en área y de mejor mantenimiento que la implementación hardware directa. Además para gente con experiencia software es una forma más sencilla para meterse en el mundo de las FPGA porque el grueso del trabajo es software: escribir un emulador de una CPU en ensamblador de otra.

El juego de instrucciones de la PicoBlaze es increíblemente escueto. No cuesta nada dominarla. No hay que calentarse la cabeza con sistemas operativos, multi hilo, ni nada. Se puede hacer correr la CPU original exactamente a la velocidad que toca sin interrupciones y precisa al ciclo de reloj. Sólo que por dentro hemos metido una CPU que va 10~20 veces más rápida y está dedicada solo a esto.

A ver quien se anima a empezar…

Avatar de Usuario
Radastan
Mensajes: 389
Registrado: 05 Oct 2015, 14:39

Re: KCPSM6 PicoBlaze: ¡Soft cores al poder!

Mensaje por Radastan » 08 May 2018, 12:19

A ver como explicamos ahora que la FPGA no es emulación pero que vamos a usar emulación. La idea es cojonuda, desde luego, pero también va a llevar su tiempo (estamos hablando de un emulador de cada CPU desde cero).

Lo que si me intriga es si fuese posible meter un 68000 así... lo mismo hasta cabría una Megadrive o un Amiga finalmente, pero el curro tiene que ser bestial.

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

Re: KCPSM6 PicoBlaze: ¡Soft cores al poder!

Mensaje por jepalza » 08 May 2018, 12:45

El problema del amiga, es mas por los chips especiales que por el 68000. El 68000 ocupa unos 5 o 6000 "slices", hasta llegar a los 18000 que ocupa el minimig en total, los 12000 restantes son de la lógica (agnus, denise, etc). Por lo tanto, aunque lográramos una cpu reducida (emulada), seguiría sin caber.

Por lo demas, estoy con Radastan, que la idea es bonita (a mi me encanta la emulación, llevaré unos 30 emuladores hechos), pero se pierde, o se mezcla, la esencia de la FPGA. O lo uno, o lo otro. Si es por emulación, no haría falta el ZXUNO, y usaríamos una RPI.

Avatar de Usuario
Radastan
Mensajes: 389
Registrado: 05 Oct 2015, 14:39

Re: KCPSM6 PicoBlaze: ¡Soft cores al poder!

Mensaje por Radastan » 08 May 2018, 13:53

Ese es el tema, si usamos FPGA no es por apurar, es por fidelidad. Si el ZXUno se queda pequeño, lo que habrá es que pensar en un ZXUno+ o un ZXDos.
De esta forma habrá espacio para meter otra de la mítica máquinas de Sinclair: el QL. Y eso si que sería un notición.


Tarde o temprano en ZXUno ya no dará más de si, a mi ya me ha sorprendido todo lo conseguido, y creo que habrá que pegar el salto de FPGA aprovechando todo lo que se ha realizado en el ZXUno. Lo suyo sería usar una FPGA de la misma familia, para evitar tener que reescribir los cores en exceso.

Avatar de Usuario
jotego
Mensajes: 158
Registrado: 11 May 2016, 23:45
Ubicación: Valencia
Contactar:

Re: KCPSM6 PicoBlaze: ¡Soft cores al poder!

Mensaje por jotego » 08 May 2018, 14:29

jepalza escribió: la idea es bonita (a mi me encanta la emulación, llevaré unos 30 emuladores hechos), pero se pierde, o se mezcla, la esencia de la FPGA. O lo uno, o lo otro. Si es por emulación, no haría falta el ZXUNO, y usaríamos una RPI.
El asunto filosófico de si deja de ser real o no lo entiendo. Para mí mientras seamos fidedignos al ciclo de reloj de la máquina original merece la pena. Porque cómo lo implementas por dentro es siempre distinto. Incluso en los chips originales muchos tienen versión NMOS y CMOS. Y ambas son distintas por dentro pero por fuera son iguales. Las implementaciones de CPU que tenemos ahora no son iguales en cuanto al circuito a las originales porque no tenemos el circuito original y aunque lo tuviéramos la tecnología FPGA es distinta que la NMOS de la época. Pero hay varios cores que logran ser iguales a ciclo de reloj con el original. Como el de 6809 que yo uso. Así que yo lo veo justificado.

Otra opción más extrema es lo que Alexey Melnikov (Mister) está intentando hacer. Su FPGA lleva un procesador ARM integrado corriendo linux. Él quiere meter un emulador de CPUs motorolas avanzadas corriendo en linux y conectarlo con el vídeo del Amiga que correría en la FPGA. Así se aprovecha de los emuladores software tan avanzados que hay pero sigue contando con la flexibilidad de la FPGA para clavar el vídeo, cosa que en un ordenador no puedes hacer. Esta solución para mí es más dudosa porque no tengo nada claro que se pueda ajustar al ciclo de reloj haciendo esto.

Así que entre pura lógica y un emulador corriendo en un PC tenemos una gama de grises en cuanto a más o menos software en el equipo. Y también la tenemos en cuanto a precisión (fidelida al original). Pero la escala no es una correlación perfecta y puedes tener software en el equipo moderno y aun así mantener la precisión.
Radastan escribió:Si el ZXUno se queda pequeño, lo que habrá es que pensar en un ZXUno+ o un ZXDos.
En cuanto a hacer un ZX-DOS, a mí me gustaría pero quizá lo suyo sería explotar una placa genérica -como la de Mister o la que encontró @Jepalza- y hacer sólo una placa de extensión para añadir lo que le falta. Lo que me encanta del ZX-UNO es la memoria SRAM externa y lo que le falla es el pequeño tamaño de la FPGA. Si se hiciera otra cosa ahora estoy con @Radastan en que deberíamos seguir con Xilinx y si es posible con Spartan 6.

Avatar de Usuario
antoniovillena
Mensajes: 2621
Registrado: 27 Sep 2015, 20:41

Re: KCPSM6 PicoBlaze: ¡Soft cores al poder!

Mensaje por antoniovillena » 08 May 2018, 15:19

Por mi no hay problema en diseñar un ZX-DOS para placa genérica. Pero no deja de ser una solución provisional. Lo suyo es una placa diseñada desde cero, con todos sus conectores y su carcasa. También está el problema de que te tienes que adaptar a las placas genéricas que se venden. Y que estén a un precio asequible no son tantas. A mi por ejemplo me gustaría partir de una genérica con LX45, pero no las hay baratas.

La que sí es asequible es la LX16 de este hilo viewtopic.php?f=32&t=1944. De esta placa ya hizo Quest un "shoe".

Avatar de Usuario
jotego
Mensajes: 158
Registrado: 11 May 2016, 23:45
Ubicación: Valencia
Contactar:

Re: KCPSM6 PicoBlaze: ¡Soft cores al poder!

Mensaje por jotego » 08 May 2018, 15:32

antoniovillena escribió:Por mi no hay problema en diseñar un ZX-DOS para placa genérica. Pero no deja de ser una solución provisional. Lo suyo es una placa diseñada desde cero, con todos sus conectores y su carcasa. También está el problema de que te tienes que adaptar a las placas genéricas que se venden. Y que estén a un precio asequible no son tantas. A mi por ejemplo me gustaría partir de una genérica con LX45, pero no las hay baratas.

La que sí es asequible es la LX16 de este hilo viewtopic.php?f=32&t=1944. De esta placa ya hizo Quest un "shoe".
La del MiSTer son unos 100€ (aquí) y son como 10 ZX-UNO juntos en tamaño FPGA, con salida HDMI, ethernet, linux corriendo al lado... ¿Es eso asequible?

¿Qué le falta? Pues sobre todo entrada de audio para cargar desde cinta, una SRAM como placa hija (el modelo que usan gasta una SDRAM como expansión), salida de vídeo analógico... Eso podría ir en una placa hija. O... reutilizar el ZX-UNO para conectarlo a la MiSTer y aprovechar lo que ya hay ahí.

Avatar de Usuario
brunosilva
Mensajes: 312
Registrado: 18 Jun 2016, 19:54

Re: KCPSM6 PicoBlaze: ¡Soft cores al poder!

Mensaje por brunosilva » 08 May 2018, 15:55

100€ +- plus shipping costs plus custom costs... may be 130/140€ ?

Avatar de Usuario
antoniovillena
Mensajes: 2621
Registrado: 27 Sep 2015, 20:41

Re: KCPSM6 PicoBlaze: ¡Soft cores al poder!

Mensaje por antoniovillena » 08 May 2018, 16:48

Como dice BrunoSilva no son 100 euros puesta en casa. He hecho una simulación y suponiendo que puedes justificar uso académico (sino serían $20 más) esto es lo que me sale:
Placa versión académica: $110
Gastos de envío: $36.55 por Fedex
Suma: 146,55
Aduanas(aprox): $20+el 21% del total: $50,77

Total: $197,32
Al cambio según google: 166,33 euros

Placas con SDRAM y conectores ya venden en los foros de atari-forum.com. Más o menos por 200 euros tienes una MiSTer completa (con SDRAM y todos los conectores).

Si lo que quieres es cambiar el addon de SDRAM por uno de SRAM, más o menos saldrá igual. Con el chip de 512K que usamos en ZX-Uno sale más barato mientras que con el chip de 2M sale más caro. Lo único es que estos chips son de 8 bits. Sería más lógico usar SRAM de 16 bits de ancho o poner 2 chips de estos en paralelo.

La propia de10 lleva internamente SDRAM, pero según Sorgelig es más lenta (tipo DDR3). O sea que con addon de SRAM seguirías teniendo acceso a SDRAM.

Avatar de Usuario
brunosilva
Mensajes: 312
Registrado: 18 Jun 2016, 19:54

Re: KCPSM6 PicoBlaze: ¡Soft cores al poder!

Mensaje por brunosilva » 08 May 2018, 16:56

with a board aio mine will be a little bit more than 200€

@antonio - its time for a new :zxuno: :llamarada: :smashPC:

Responder