Como tú veas, Antonio, si te sabe mal venderlos a medias, acábalos, y véndelos como Diox manda, a buen precio, de 50 "parriba". Si te da igual, te compro uno y lo acabo yo.
Y sino, la otra opción, me mandas los pocos componentes sueltos que tengas, y con la otra placa, voy montando. A mi lo de comprarme una xilinx por 20 euros en Polonia me da igual, es lo que tiene esta afición, que se hace por placer, no por dinero, unas veces ganas otras no.
Dime una opción que te venga bien a ti, y hablamos. A mi, pagarte 50 euros no me parece caro, que te sirva de ejemplo.
Montaje del ZXUNO
- antoniovillena
- Amiga 1200
- Mensajes: 2013
- Registrado: 16 Abr 2012, 21:22
- Gracias recibidas: 8 veces
Re: Montaje del ZXUNO
Yo prefiero vendértelo así, la parte más laboriosa son los pasivos SMD. Ya te digo que montándolos del todo pierdo más que gano. Por 50 euros (con caja) me salen a 20 euros de beneficio cada placa, que por un trabajo de 5 horas sale a 4 euros la hora. En realidad los empecé a montar porque me dio problemas la primera placa, y montarlos todos a la vez es más fácil que de uno a uno. Ahora que tengo una placa funcionando igual se quedan a medio montar un tiempo.
Pues eso, que te lo vendo al mismo precio que el otro, 22.50. De todas formas si el proyecto avanza calculo que la placa ya montada saldrá por unos 30 euros. Esa es la idea, igual estoy siendo muy optimista.
Pues eso, que te lo vendo al mismo precio que el otro, 22.50. De todas formas si el proyecto avanza calculo que la placa ya montada saldrá por unos 30 euros. Esa es la idea, igual estoy siendo muy optimista.
Re: Montaje del ZXUNO
Pues como quieras. Vete enviándolo a casa (te paso la dirección por privado, aunque ya la sabes). Y te pago por Paypal como otras veces.
- mcleod_ideafix
- Amiga 2500
- Mensajes: 5316
- Registrado: 06 Oct 2009, 04:12
- Sistema Favorito: Spectrum 16Kb/48Kb
- primer_sistema: Spectrum 16Kb/48Kb
- consola_favorita: Vectrex
- Primera consola: TV Games/Pong Clone
- Ubicación: Jerez de la Frontera
- Gracias dadas: 12 veces
- Gracias recibidas: 54 veces
- Contactar:
Re: Montaje del ZXUNO
Noche cacharreril como pocas: afuera llueve un poco, mi mujer se ha ido a pasar el fin de semana con sus padres, un gatito duerme al calorcito del tubo del monitor CRT.... y una ULAplus aparece dentro del ZX-Uno.

Para ser exactos, ahora mismo lo que hay dentro del sistema es una ULA y una RAM. Aún no hay Z80, ROM, ni la RAM no contenida. Por eso se ve "así", como bloqueado. De hecho, así es como se vería un Spectrum estándar si lo encendieras con el Z80 quitado.
Bueno, se vería parecido, pero no igual: el pequeño detalle es que aquí usamos una SRAM, y cuando se le da corriente a este tipo de memorias, sus celdillas tienen un valor completamente aleatorio. En las DRAM, las celdillas tienen un valor no tan aleatorio, que depende de su organización, del refresco, etc, y que hace que por eso cuando enciendes un Spectrum estándar y está bloqueado, se ven las típicas bandas vericales blancas y negras en lugar de una pantalla aleatoria como aquí.
En la foto no se aprecia, pero hay varios cuadraditos en flash
El borde está de color rojo porque ese es el color que he elegido para el arranque. De esa forma puedo saber de un golpe de vista si la CPU llegó a inicializarse o no (si se inicia y lee la ROM, el borde pasará a blanco enseguida).
Este core está en el test4 del repositorio.

Para ser exactos, ahora mismo lo que hay dentro del sistema es una ULA y una RAM. Aún no hay Z80, ROM, ni la RAM no contenida. Por eso se ve "así", como bloqueado. De hecho, así es como se vería un Spectrum estándar si lo encendieras con el Z80 quitado.
Bueno, se vería parecido, pero no igual: el pequeño detalle es que aquí usamos una SRAM, y cuando se le da corriente a este tipo de memorias, sus celdillas tienen un valor completamente aleatorio. En las DRAM, las celdillas tienen un valor no tan aleatorio, que depende de su organización, del refresco, etc, y que hace que por eso cuando enciendes un Spectrum estándar y está bloqueado, se ven las típicas bandas vericales blancas y negras en lugar de una pantalla aleatoria como aquí.
En la foto no se aprecia, pero hay varios cuadraditos en flash

Este core está en el test4 del repositorio.
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista
- antoniovillena
- Amiga 1200
- Mensajes: 2013
- Registrado: 16 Abr 2012, 21:22
- Gracias recibidas: 8 veces
Re: Montaje del ZXUNO
Ya lo he probado, funciona a las mil maravillas. Yo todavía me estoy peleando con el código VHDL "mierdoso" de la lección 2 de mi tutorial.
- Adjuntos
-
- 2014-02-09 01.45.58.jpg (106.17 KiB) Visto 5086 veces
- mcleod_ideafix
- Amiga 2500
- Mensajes: 5316
- Registrado: 06 Oct 2009, 04:12
- Sistema Favorito: Spectrum 16Kb/48Kb
- primer_sistema: Spectrum 16Kb/48Kb
- consola_favorita: Vectrex
- Primera consola: TV Games/Pong Clone
- Ubicación: Jerez de la Frontera
- Gracias dadas: 12 veces
- Gracias recibidas: 54 veces
- Contactar:
Re: Montaje del ZXUNO
Así a primera vista, es como si el bit 0 del bus de direcciones que lee la VRAM estuviera siempre a 0. ¿Has comprobado el informe de síntesis del XST por si te ha avisado de que alguna señal se ha quedado sin conectar?
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista
- antoniovillena
- Amiga 1200
- Mensajes: 2013
- Registrado: 16 Abr 2012, 21:22
- Gracias recibidas: 8 veces
Re: Montaje del ZXUNO
mcleod_ideafix escribió:Así a primera vista, es como si el bit 0 del bus de direcciones que lee la VRAM estuviera siempre a 0. ¿Has comprobado el informe de síntesis del XST por si te ha avisado de que alguna señal se ha quedado sin conectar?
No no, el problema es que estoy muy espeso. En la MOD-VGA funcionaba, ahora estoy quitando warnings y en una de las modificaciones habré metido la gamba.
- mcleod_ideafix
- Amiga 2500
- Mensajes: 5316
- Registrado: 06 Oct 2009, 04:12
- Sistema Favorito: Spectrum 16Kb/48Kb
- primer_sistema: Spectrum 16Kb/48Kb
- consola_favorita: Vectrex
- Primera consola: TV Games/Pong Clone
- Ubicación: Jerez de la Frontera
- Gracias dadas: 12 veces
- Gracias recibidas: 54 veces
- Contactar:
Re: Montaje del ZXUNO
Bueno, sigo...
A esta ULAplus le incorporé casi desde el principio, la posibilidad de usar los modos de color de alta resolución del Timex 2048/2068. El mismo core de antes, pero cambiando al configuración para que el modo Timex esté activado desde el arranque (por defecto no lo está, y que hacer un OUT 255,2 para activarlo), se ve así:

Hora de incorporar un Z80 y una ROM de testeo. En el test5 está todo lo que viene a continuación: he escrito un módulo mapeador de memoria, que implementa los modos de paginación del 128K y del +2A/+3, incluyendo los modos all-RAM, y ROMs de hasta 64KB. Este mapeador es el que traduce las direcciones del Z80 a las diferentes regiones dentro de los primeros 128KB de la SRAM (los 64KB primeros corresponden a las páginas 0 a 3, y los siguientes 64KB, las páginas 4 a 7).
Al probar todo el sistema por primera vez, nada. Pantalla negra. Hasta que me di cuenta de que con tanta señal, se me había olvidado conectar el bus de datos de salida de la CPU al bus de datos de entrada de la RAM, y claro, al estar esa señal sin conectar, mete un 0 por ahí, y por eso la pantalla negra cada vez que se hacía una escritura a RAM (siempre escribía 0)
Después de coregir ese fallo, por fin pude ver la pantalla del test de ROM que suelo usar para reparar Spectrums... "de época"
Y voy y me encuentro con esto:

¿Un fallo en la RAM? Y localizado en D4. ¿Será posible que...? Pues sí. Una mala soldadura en el pin 17 del chip de la SRAM, que no hace buen contacto con la pista. Lo repaso, y ahora sí

Para poder probar los 128KB de RAM, recurro a otro test en ROM, el de Paul Farrow. ¡FUNCIONA!

Pues dejo este core así, con la ROM de Paul Farrow, que permitirá probar al menos los primeros 128KB de memoria RAM de la placa. Está todo en el directorio test5 del repositorio.
A esta ULAplus le incorporé casi desde el principio, la posibilidad de usar los modos de color de alta resolución del Timex 2048/2068. El mismo core de antes, pero cambiando al configuración para que el modo Timex esté activado desde el arranque (por defecto no lo está, y que hacer un OUT 255,2 para activarlo), se ve así:

Hora de incorporar un Z80 y una ROM de testeo. En el test5 está todo lo que viene a continuación: he escrito un módulo mapeador de memoria, que implementa los modos de paginación del 128K y del +2A/+3, incluyendo los modos all-RAM, y ROMs de hasta 64KB. Este mapeador es el que traduce las direcciones del Z80 a las diferentes regiones dentro de los primeros 128KB de la SRAM (los 64KB primeros corresponden a las páginas 0 a 3, y los siguientes 64KB, las páginas 4 a 7).
Al probar todo el sistema por primera vez, nada. Pantalla negra. Hasta que me di cuenta de que con tanta señal, se me había olvidado conectar el bus de datos de salida de la CPU al bus de datos de entrada de la RAM, y claro, al estar esa señal sin conectar, mete un 0 por ahí, y por eso la pantalla negra cada vez que se hacía una escritura a RAM (siempre escribía 0)
Después de coregir ese fallo, por fin pude ver la pantalla del test de ROM que suelo usar para reparar Spectrums... "de época"


¿Un fallo en la RAM? Y localizado en D4. ¿Será posible que...? Pues sí. Una mala soldadura en el pin 17 del chip de la SRAM, que no hace buen contacto con la pista. Lo repaso, y ahora sí


Para poder probar los 128KB de RAM, recurro a otro test en ROM, el de Paul Farrow. ¡FUNCIONA!


Pues dejo este core así, con la ROM de Paul Farrow, que permitirá probar al menos los primeros 128KB de memoria RAM de la placa. Está todo en el directorio test5 del repositorio.
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista
- antoniovillena
- Amiga 1200
- Mensajes: 2013
- Registrado: 16 Abr 2012, 21:22
- Gracias recibidas: 8 veces
Re: Montaje del ZXUNO
Wow, si que has avanzado rápido. Que ganas tengo de probarlo ya. En esta FPGA tenemos sólo 24K de BRAM que se quedan cortos para la ROM del 128K, aunque creo recordar que comprimido con exomizer sí que cabían. En cualquier caso la única solución duradera y viable es la siguiente. Sería una máquina con 2 modos:
-Modo 0: Los 16K primeros $0000-$3fff se implementan con BRAM para almacenar el boot loader, las escrituras a este banco irán a parar a la RAM externa que implemente la ROM del Spectrum, al banco que le corresponda en su paginación (2 bancos distintos en caso del 128k ó 4 bancos si es un +2A/+3). El resto de memoria sería igual que en el modo 1 ($4000-$ffff)
-Modo 1: Sería el modo normal, en los primeros $0000-$3fff tendríamos lecturas a la parte de RAM externa que implemente la ROM, que se supone que hemos rellenado antes con el modo 0. Las escrituras en este modo estarían deshabilitadas. En el resto de direccionamiento ($4000-$ffff) se implementa la máquina que corresponda (48K, 128K ó +2A/+3).
Y la clave de todo sería currarse un interfaz SPI que mediante lecturas/escrituras a puerto en el Z80 podamos comunicarnos con la SPI Flash. Sí, la misma donde se almacena la configuración de la FPGA, pero como nos sobra espacio pues lo utilizamos para tener almacenadas las distintas ROMs. El funcionamiento sería así:
La máquina inicializa en modo 0. Se ejecuta un pequeño bootloader que va leyendo las distintas ROMs de la SPI y escribiéndolas a RAM externa donde corresponda, si es un 128K se escriben en 2 bancos y si es +2A/+3 en 4 bancos.
Una vez tenemos las ROMs cargadas en la RAM externa conmutamos al modo 1 y luego saltamos a $0000 simulando un reset (previa escritura de los puertos $1ffd y $7fffd a cero). Sobra decir que la conmutación de modo y el salto lo hacemos desde RAM ($4000-$ffff) en la que hemos cargado la parte final del código del boot loader.
Todo esto que te digo suena fácil pero no es moco de pavo. Lo primero de todo es currarse el interfaz SPI (el modo 0 puede esperar), que sería muy parecido al ZXMMC, hacer lecturas al SPI Flash y comprobar que estas sean correctas. Para escribir datos en Flash yo en su momento usé el programa srec_cat de esta web:
http://srecord.sourceforge.net/
El comando que usé es éste, se supone que previamente tienes generado el .mcs de tu máquina en tldmodvga.mcs y que quieres inscrustar el fichero 48.bin justo en medio de la flash (por alguna razón tenía que escribir en 0x42000, creo que era porque las páginas en flash ocupaban un poco más de 256 bytes, pero luego se correspondía con 0x40000 a la hora de leer) y se genera un nuevo fichero salida.mcs que es el que tienes que meter en el ZX-Uno.
-Modo 0: Los 16K primeros $0000-$3fff se implementan con BRAM para almacenar el boot loader, las escrituras a este banco irán a parar a la RAM externa que implemente la ROM del Spectrum, al banco que le corresponda en su paginación (2 bancos distintos en caso del 128k ó 4 bancos si es un +2A/+3). El resto de memoria sería igual que en el modo 1 ($4000-$ffff)
-Modo 1: Sería el modo normal, en los primeros $0000-$3fff tendríamos lecturas a la parte de RAM externa que implemente la ROM, que se supone que hemos rellenado antes con el modo 0. Las escrituras en este modo estarían deshabilitadas. En el resto de direccionamiento ($4000-$ffff) se implementa la máquina que corresponda (48K, 128K ó +2A/+3).
Y la clave de todo sería currarse un interfaz SPI que mediante lecturas/escrituras a puerto en el Z80 podamos comunicarnos con la SPI Flash. Sí, la misma donde se almacena la configuración de la FPGA, pero como nos sobra espacio pues lo utilizamos para tener almacenadas las distintas ROMs. El funcionamiento sería así:
La máquina inicializa en modo 0. Se ejecuta un pequeño bootloader que va leyendo las distintas ROMs de la SPI y escribiéndolas a RAM externa donde corresponda, si es un 128K se escriben en 2 bancos y si es +2A/+3 en 4 bancos.
Una vez tenemos las ROMs cargadas en la RAM externa conmutamos al modo 1 y luego saltamos a $0000 simulando un reset (previa escritura de los puertos $1ffd y $7fffd a cero). Sobra decir que la conmutación de modo y el salto lo hacemos desde RAM ($4000-$ffff) en la que hemos cargado la parte final del código del boot loader.
Todo esto que te digo suena fácil pero no es moco de pavo. Lo primero de todo es currarse el interfaz SPI (el modo 0 puede esperar), que sería muy parecido al ZXMMC, hacer lecturas al SPI Flash y comprobar que estas sean correctas. Para escribir datos en Flash yo en su momento usé el programa srec_cat de esta web:
http://srecord.sourceforge.net/
El comando que usé es éste, se supone que previamente tienes generado el .mcs de tu máquina en tldmodvga.mcs y que quieres inscrustar el fichero 48.bin justo en medio de la flash (por alguna razón tenía que escribir en 0x42000, creo que era porque las páginas en flash ocupaban un poco más de 256 bytes, pero luego se correspondía con 0x40000 a la hora de leer) y se genera un nuevo fichero salida.mcs que es el que tienes que meter en el ZX-Uno.
Código: Seleccionar todo
srec_cat tldmodvga.mcs -Intel 48.bin -binary -offset 0x42000 -o salida.mcs -Intel
- radastan
- Amiga 2500
- Mensajes: 4542
- Registrado: 11 Jun 2007, 19:29
- Sistema Favorito: Spectrum 16Kb/48Kb
- primer_sistema: Spectrum 16Kb/48Kb
- consola_favorita: Sega Genesis/Megadrive
- Primera consola: TV Games/Pong Clone
- Ubicación: Córdoba
- Gracias dadas: 9 veces
- Gracias recibidas: 40 veces
- Contactar:
Re: Montaje del ZXUNO
Antonio, estoy por vender todo el material de electrónica que tengo porque estoy viendo que a tu lado no tengo ni puta idea del asunto. Te sigo, lo entiendo, pero no sería capaz de hacer lo que tu haces.
Yo tengo una máquina del tiempo, se llama ZX Spectrum, siempre me devuelve a los buenos momentos.
(\.../) (\.../) (\.../) (\.../)
( *.*) ('.'= ) ('.'= ) ('.'= )
(")_(") (")_(") (")_(") (")_(")
╔═══╦═══╦═══╦══╦══╗
║╔═╗║╔═╗║╔═╗╠╣╠╩╣╠╝
║║─║║╚══╣║─╚╝║║─║║
║╚═╝╠══╗║║─╔╗║║─║║
║╔═╗║╚═╝║╚═╝╠╣╠╦╣╠╗
╚╝─╚╩═══╩═══╩══╩══╝
(\.../) (\.../) (\.../) (\.../)
( *.*) ('.'= ) ('.'= ) ('.'= )
(")_(") (")_(") (")_(") (")_(")
╔═══╦═══╦═══╦══╦══╗
║╔═╗║╔═╗║╔═╗╠╣╠╩╣╠╝
║║─║║╚══╣║─╚╝║║─║║
║╚═╝╠══╗║║─╔╗║║─║║
║╔═╗║╚═╝║╚═╝╠╣╠╦╣╠╗
╚╝─╚╩═══╩═══╩══╩══╝
¿Quién está conectado?
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 14 invitados