Voy a continuar este hilo por aquí para que no se haga muy pesado de leer. Falta un día para la encuesta del nombre pero casi con toda seguridad acabará siendo ZXOne o alguna variante. He actualizado los esquemáticos, que ya casi doy por definitivos. Los cambios han sido poner los condensadores de desacoplo (lo sé, he puesto de más, ya se encargará el enrutador de quitar los que sobren) y añadir un circuito selector entre PAL/NTSC que he visto en el datasheet del AD724. Para el spectrum no sirve de mucho (será PAL), pero puede ser útil para implementar otras máquinas como el Atari 2600.
También me he currado un FAQ para no tener que responder siempre a las mismas preguntas, ahí va:
¿Cuándo estará a la venta el chisme?
No me gusta dar fechas, pero en principio habrá 2 tiradas: una para desarrolladores (prototipo) de 10 unidades y otra para el público general de 50 ó 100 unidades. Los prototipos los pediré a seeedstudio, sólo tendrán premontados los componentes SMD y no tendrá el firmware pregrabado. Habrá que disponer del cable USB de Xilinx para poder trastear con ella. Haré el pedido en cuanto Superfo tenga listo el ruteado, y al mismo tiempo abriré las listas para apuntarse (sólo a prototipos).
La lista de prototipos vendidos es ésta, aún me quedan 3 disponibles:
Código: Seleccionar todo
antoniovillena PCB+componentes+flux
superfo PCB+componentes
javu61 PCB+componentes+flux
McLeod PCB+componentes
jepalza PCB+componentes+flux
Lista reserva:
Código: Seleccionar todo
garillete PCB+componentes+flux
JULIO PCB+componentes+flux (foro speccy.org)
Actualización: Ya está abierta la lista de prototipos, la pongo aquí abajo. Al final sólo encargaré las PCBs porque el montaje que nos ofrece seeedstudio cubre muy pocos componentes. El precio es de 22 euros (kit con PCB y todos los componentes sin montar) ó 22.50 (lo anterior además de una jeringa de flux), gastos de envío incluídos. La lista está en este hilo.
En cuanto a la placa definitiva, no sé si seré yo el que se encargue así que todo lo que comente está sujeto a cambios. Serán unas 50 ó 100 unidades y se encargarán a sitopway. Irá casi todo montado salvo los conectores, que opcionalmente el que las distribuya puede soldarlos a mano a petición del usuario por un precio adicional. El firmware vendrá pregrabado y también habrá opción de adquirir complementos por separado: caja, pegatina con logo, manual, cables, fuente de alimentación.
¿Qué máquinas caben en la FPGA y qué conectores llevará?
En principio está pensado para toda la gama ZX Spectrum aunque también se le podrán meter máquinas inferiores. Sólo caben máquinas de 8 bits con un tamaño máximo de 512K entre ROM y RAM, y que la circuitería a sintetizar sea relativamente sencilla (nada de sprites hardware y cosas así). El "corazón" del chisme es una FPGA XC3S250E, que es una FPGA relativamente modesta. Poner una FPGA más "tocha" supondría poder sintetizar más máquinas aparte del Spectrum, pero también encarecería el precio considerablemente.
Los conectores seguirán la disposición de una Raspberry Pi, de hecho la PCB está pensada para usar cajas de Raspberries, y son los siguientes:
- Video: Video compuesto por conector RCA, como en la Pi.
- Audio: Audio estéreo por conector jack 3.5mm, como en la Pi.
- Almacenamiento: Tarjeta SD, como en la Pi.
- Alimentación: 5 voltios regulados que entran por un conector microSD, como en la Pi.
- Carga en cinta: Conector jack 3.5mm al lado del audio, no da a ningún agujero en la carcasa (habría que taladrarlo).
- Expansión: 3 tiras de pines de 15 cada una en la misma ubicación que la Raspberry Pi, tampoco va a ningún agujero de la carcasa.
- Teclado: Conector PS/2 en el lugar que ocupa el cable Ethernet de la carcasa.
- Joystick: Conector DB9 norma atari, en el lugar que ocupan los puertos USB de la carcasa.
- Cable JTAG y RGB: header de 2x6 pines en el lugar que ocupa el puerto HDMI de la carcasa.
¿Por qué no tiene conector de expansión como el de un Spectrum?
Básicamente por incompatibilidad eléctrica, la FPGA trabaja a 3.3V y las señales del conector de expansión van a 5V. También porque el tamaño es reducido y queremos que el precio sea bajo (poner conversores de voltaje lo encarecería). De todas formas hay un conector de expansión genérico del que salen 40 pines de la FPGA, por lo que mediante una placa externa que contenga el conector EDGE y los conversores de voltaje podría hacerse.
¿Cuánto costará?
Tampoco me gusta dar precios pero espero que la placa montada con los conectores sin soldar salga por menos de 30 euros. El prototipo será un poco más caro ya que la tirada es menor. Por mi parte no voy a incrementar el coste de lo que me cobre seeedstudio para los prototipos. Para la versión final, si la distribución se le encarga a otra persona, no puedo descartar que haya algún beneficio, sobre todo porque conllevará un trabajo adicional: soldar conectores, grabar firmware, testear la placa, empaquetado, etc...
¿Necesito algún cable especial?
Para el prototipo sí, el Xilinx platform cable. En la versión definitiva no hace falta porque daremos la posibilidad de actualizar el firmware vía SD. El resto de cables son genéricos: la alimentación es microUSB, el video es RCA y el audio/EAR son jacks de 3.5mm. El único cable custom (como pasa con todas las máquinas) es el RGB/Scart, aunque no hace falta porque la calidad que da el AD724 para el video compuesto es excelente.
¿Quiénes trabajan en el proyecto?
Somos 4 personas.
- Hark0. Diseñador gráfico.
- McLeod. Revisa y propone, es un colaborador de facto.
- Superfo. Ruteador, el que se encarga de diseñar la PCB.
- AntonioVillena (yo). Idea inicial, crear los esquemas y distribución de prototipos.
¿Sería muy complejo añadir soporte USB (teclados/joystick)? Por una parte, ya no es tan fácil comprar teclados PS/2 nuevos; por otra parte dos joysticks son mejor que uno.
Sí, sería muy complejo y creo que además funciona a otros voltajes. Si alguien consigue implementarlo por el puerto de expansión no habría problema en sustituir el conector PS/2 por uno USB, pero sería para una revisión futura de la placa. Por ahora nos tenemos que conformar con PS/2.
¿Cómo se usará la tarjeta SD? ¿Permitirá tzx o solo tap básicos?
TZX es un formato de audio comprimido. Sólo puede usarse con el puerto EAR. Los sistemas que has visto que soportan TZX (ResiDOS, por ejemplo) realmente lo que hacen es soportar un subconjunto del TZX que es esencialmente un TAP. TAP sí que es un formato que permite cargas desde memoria masiva.
¿Se podrá escribir en las cintas? ¿trd o dsk?
Como esto no es emulación, lo que se puede hacer o no con ficheros del tipo que sea depende del S.O. que pongas en el Spectrum. ESXDOS permite grabar a un .TAP si mal no recuerdo. Lo mismo con el TRD o el DSK: si alguno de los S.O. lo soporta, entonces sí, pero si no, no. En los emuladores se soporta DSK o TRD porque se emula el hardware de la disquetera. Aquí se podría implementar algo por el estilo pero probablemente no cabría en la FPGA. Para que te hagas una idea, dar soporte de TRD o DSK de forma transparente (sin usar un S.O. especial que sea quien se encargue de ello) implica:
- Hay que implementar un chip que tenga la misma interfaz que el uPD765. Esto es, que soporte los registros del uPD, y su interfaz física (bus de datos, CS, etc)
- Pero por el otro lado, lo que se le conecta no es una disquetera, sino que tendrá que ir a un sistema que permita elegir una imagen DSK o TRD y ese sistema debe enviar la información (sector) solicitado bajo demanda. Es decir, hay que integrar un microcontrolador que sea quien se encargue de leer la tarjeta SD, presentar algún tipo de menú OSD para elegir la imagen a usar, y enviar la información a la controladora de disquetes "medio falsa" que hemos hecho. El Z80 se come bastante de la FPGA, así que no queda mucho espacio para implementar otro procesador que se encargue de esta tarea (además del processaor hay que incorporar su pequeña memoria RAM y ROM, que debe contener nada menos que rutinas que sean capaces de leer sistemas de ficheros FAT en la SD)
- En otras palabras: dar ese tipo de soporte implica meter dentro de la FPGA la circuitería equivalente a la de un HxC completito (la versión autónoma) sustituyendo la pantalla LCD por un menú OSD en pantalla y teclas especiales en el teclado PS/2 para moverse.
Lo más que podría hacerse, que se me ocurra, sería añadir el core del uPD765 al sistema, para que el Spectrum tuviera una controladora de disco. Exponer los pines que van a la disquetera en el conector de 40 pines de la FPGA, añadirle un level shifter para pasar de forma de segura entre 3.3 y 5V, y a ese conector, pincharle un HxC (o una disquetera de verdad)
¿Cabrán los clones rusos? ¿Y el SAM coupé?
Muy probablemente sí. Respecto al SAM, no recuerdo cómo es el formato de la paleta, pero si usa como mucho 3 bits por color primario, entonces sí que se podrá implementar sin pegas (estoy suponiendo que el diseño permitirá sintetizar la ULAplus). Además cabrá el ZX80, ZX81, Jupiter ACE, y algunos arcades que usan un solo Z80, como el Pacman.
¿Cuantos cambios de configuración se permiten en ese chip? Es decir, ¿se podría cambiar de configuración alegremente o mejor dejarla fija para siempre?
Tantos como escrituras permita la SPI Flash, creo que miles o cientos de miles. Eso sí, si no tienes el cable Xilinx (como la mayoría de la gente) procura que las configuraciones que le metas sean autoactualizables, sino tendrás que enviar la placa a reflashear
Me he comprado el prototipo pero no sé como se sueldan los componentes SMD, ¿alguna ayuda?
McLeod nos da una buena explicación aquí