ZXPP, clon de Spectrum en una Papilio Pro
Moderador: Fundadores
- javu61
- Fundador
- Mensajes: 2175
- Registrado: 30 Mar 2013, 11:58
- Ubicación: Valencia
- Been thanked: 76 times
- Contactar:
Re: ZXPP, clon de Spectrum en una Papilio Pro
Total, que me va a tocar aprender Verilog, cuando aprendí en VHDL. Menos mal que lo tengo muy oxidado ya
Larga vida y prosperidad \\//_
- Kyp
- Hermano de Lucifer
- Mensajes: 3377
- Registrado: 30 Sep 2013, 14:54
- Ubicación: Madrid
- Has thanked: 28 times
- Been thanked: 146 times
Re: ZXPP, clon de Spectrum en una Papilio Pro
Hola Antonio. Iba a empezar a subir los proyectos al repositorio del ZX-Uno pero no veo como. Sólo tengo la URL del acceso por web. Supongo que haría falta un acceso por FTP, ¿no?antoniovillena escribió:Hola kyp, yo de analógica no entiendo, pero le he preguntado a McLeod. Dice que pongas un amplificador operacional. Si no te importa puedes subir las modificaciones que has hecho al repositorio del zxuno, para que cualquier otro que tenga una papilio pro pueda probarlo
- antoniovillena
- Demonio segundo orden
- Mensajes: 1596
- Registrado: 02 Abr 2013, 19:06
- Been thanked: 1 time
Re: ZXPP, clon de Spectrum en una Papilio Pro
Tienes que pedirle acceso a McLeod que es el administrador
- DistWave
- Aspirante a demonio
- Mensajes: 334
- Registrado: 21 Mar 2015, 16:05
- Ubicación: Zaragoza
- Has thanked: 2 times
- Been thanked: 16 times
Re: ZXPP, clon de Spectrum en una Papilio Pro
¿Cómo va este proyecto? Me interesa bastante porque estoy iniciandome en esto de las FPGAs, ando bastante perdido y la mayoría de proyectos publicados son muy complejos...
- Ben-kenobi
- Hermano de Lucifer
- Mensajes: 3543
- Registrado: 12 Nov 2013, 10:00
- Has thanked: 1 time
- Been thanked: 18 times
Re: ZXPP, clon de Spectrum en una Papilio Pro
kyp , seria interesante que en la proxima retroParla, si lo ves factible, nos pudieras dar unas nociones basicas para empezar y explicarnos que es lo necesario para empezar a trabajar con esta placa o similares.
si hay gente interesada , preparamos unas mesas para poder atender a ello.
la verdad es que este tema me interesa.
para cualquier duda o lo que necesites dimelo.
si hay gente interesada , preparamos unas mesas para poder atender a ello.
la verdad es que este tema me interesa.
para cualquier duda o lo que necesites dimelo.
Quieres vinilos para makear tu spectrum? Mira Aqui
- Kyp
- Hermano de Lucifer
- Mensajes: 3377
- Registrado: 30 Sep 2013, 14:54
- Ubicación: Madrid
- Has thanked: 28 times
- Been thanked: 146 times
Re: ZXPP, clon de Spectrum en una Papilio Pro
Pues he estado un poco liado y no he tenido tiempo de continuar con el tutorial y, al menos, llegar hasta donde me he quedado que es un Spectrum 48K completamente operativo (pero sin contención en la RAM baja).DistWave escribió:¿Cómo va este proyecto? Me interesa bastante porque estoy iniciandome en esto de las FPGAs, ando bastante perdido y la mayoría de proyectos publicados son muy complejos...
En el próximo capítulo le añadiré el resto de funcionalidades de la ULA: el teclado, el sonido, y la entrada EAR para cargar de cinta. Y de regalo un interfaz Kempston.
Me gustaría añadirle un DivMMC para cargar juegos desde una tarjeta SD, pero estoy atascado porque para eso necesito más memoria ROM y RAM, ya estoy usando toda la que trae internamente la FPGA, y no soy capaz de hacer funcionar la SDRAM que trae la placa.
Creo que voy a aparcar eso de momento y voy a ver si le adapto un core de AY, que hay muchos juegos de 48K que lo pueden usar.
- Kyp
- Hermano de Lucifer
- Mensajes: 3377
- Registrado: 30 Sep 2013, 14:54
- Ubicación: Madrid
- Has thanked: 28 times
- Been thanked: 146 times
Re: ZXPP, clon de Spectrum en una Papilio Pro
Respecto a lo de dar unas nociones en el próximo RetroParla... no me veo dando una charla , pero algo en petit comité me parece bien
- Ben-kenobi
- Hermano de Lucifer
- Mensajes: 3543
- Registrado: 12 Nov 2013, 10:00
- Has thanked: 1 time
- Been thanked: 18 times
Re: ZXPP, clon de Spectrum en una Papilio Pro
A eso me referia , nada complicado , solo unas nociones basicas para poder comenzar y de hay en adelante vamos viendo.Kyp escribió:Respecto a lo de dar unas nociones en el próximo RetroParla... no me veo dando una charla , pero algo en petit comité me parece bien
Quieres vinilos para makear tu spectrum? Mira Aqui
- Kyp
- Hermano de Lucifer
- Mensajes: 3377
- Registrado: 30 Sep 2013, 14:54
- Ubicación: Madrid
- Has thanked: 28 times
- Been thanked: 146 times
Re: ZXPP, clon de Spectrum en una Papilio Pro
Paso 04, echando el resto
Vamos a añadir las piezas que faltan para tener un Spectrum 48K completamente operativo.
1. RAM alta.
Al igual que con la RAM baja, la generamos con el asistente de creación de módulos del ISE. En este caso seleccionamos el tipo "Single port RAM" de 32KB por 8 bits.
2. El teclado.
Voy a tomar prestado el módulo de teclado PS/2 (la primera versión) del ZX-Uno. Le he quitado todos los extras que no tiene mi diseño. De todas formas, hace alguna que otra cosa rara, pero eso es un fallo conocido por los diseñadores del ZX-Uno (por eso están haciendo otro módulo mejorado), pero es suficiente para poder usar un teclado PS/2 sin muchas complicaciones.
3. El sonido.
Utilizaremos la salida de cascos de la placa. El módulo 'mixer' se utiliza para mezclar las señales SPEAKER, EAR y MIC de la ULA y, de paso, bajar el volumen para que no suene muy alto, al ser niveles LVTTL que varían entre 0 y 3,3 voltios, si se usa como entrada de línea del PC suena muy alto y distorsiona. Lo que hago es dividir el tiempo en 32 partes y hacer que suene cada señal sólo una vez de cada 32 lo que tiene el efecto de reducir el nivel de la señal.
4. Joystick Kempston
Como extra he añadido el soporte para este tipo de joystick. Es muy sencillo, sólo hay que guardar el estado de los botones en un registro y asignarlo a bus de datos cuando se accede al puerto correspondiente. En teoría bastaría con mirar cuando está a 0 la línea A5, pero usamos un modo más compatible que comprueba que estén a 0 las líneas A5, A6 y A7.
Además de todo esto y aunque no es necesario, he modificado los módulos de memoria para añadirles una señal de habilitación pensado en que más adelante hará falta si queremos mapear distintos bancos de memoria, por ejemplo para implementar 128K de RAM o un DivMMC.
El resto es un poco de 'glue logic' para asignar al bus de datos la salida del módulo correspondiente en función de a que puerto o zona de memoria está accediendo la CPU.
Un último detalle, he mapeado la estrada de cinta EAR a un pin del segundo conector de joystick de la tarjeta. No es aconsejable conectar directamente la salida de audio del casete ahí porque nos podemos cargar ese pin de la FPGA si le metemos una señal demasiado alta, o un valor negativo. Para evitar problemas he diseñado un pequeño circuito que hace las veces de amplificador/adaptador de niveles.
Y esto es todo por el momento. Ahora me encuentro con el problema de que para añadir más funcionalidades necesito más memoria y ya he utilizado toda la disponible internamente en la FPGA. La placa trae un chip de memoria SDRAM de 4MB pero no es utilizable directamente ya que no funciona como la RAM tradicional, que le asignas una dirección en el bus de direcciones y te devuelve el dato en el bus de datos (o guarda el dato que le metas si estás escribiendo) al cabo de unos instantes. Este tipo de RAM funciona a base de comandos y aunque funciona mucho más rápido (100 MHz o más) tiene unas latencias muy altas. Estoy buscando la forma de aprovechar esa diferencia de velocidad para hacer que la CPU la vea como si fuera una SRAM. Si lo consigo ampliaré este tutorial.
Vamos a añadir las piezas que faltan para tener un Spectrum 48K completamente operativo.
1. RAM alta.
Al igual que con la RAM baja, la generamos con el asistente de creación de módulos del ISE. En este caso seleccionamos el tipo "Single port RAM" de 32KB por 8 bits.
2. El teclado.
Voy a tomar prestado el módulo de teclado PS/2 (la primera versión) del ZX-Uno. Le he quitado todos los extras que no tiene mi diseño. De todas formas, hace alguna que otra cosa rara, pero eso es un fallo conocido por los diseñadores del ZX-Uno (por eso están haciendo otro módulo mejorado), pero es suficiente para poder usar un teclado PS/2 sin muchas complicaciones.
3. El sonido.
Utilizaremos la salida de cascos de la placa. El módulo 'mixer' se utiliza para mezclar las señales SPEAKER, EAR y MIC de la ULA y, de paso, bajar el volumen para que no suene muy alto, al ser niveles LVTTL que varían entre 0 y 3,3 voltios, si se usa como entrada de línea del PC suena muy alto y distorsiona. Lo que hago es dividir el tiempo en 32 partes y hacer que suene cada señal sólo una vez de cada 32 lo que tiene el efecto de reducir el nivel de la señal.
4. Joystick Kempston
Como extra he añadido el soporte para este tipo de joystick. Es muy sencillo, sólo hay que guardar el estado de los botones en un registro y asignarlo a bus de datos cuando se accede al puerto correspondiente. En teoría bastaría con mirar cuando está a 0 la línea A5, pero usamos un modo más compatible que comprueba que estén a 0 las líneas A5, A6 y A7.
Además de todo esto y aunque no es necesario, he modificado los módulos de memoria para añadirles una señal de habilitación pensado en que más adelante hará falta si queremos mapear distintos bancos de memoria, por ejemplo para implementar 128K de RAM o un DivMMC.
El resto es un poco de 'glue logic' para asignar al bus de datos la salida del módulo correspondiente en función de a que puerto o zona de memoria está accediendo la CPU.
Un último detalle, he mapeado la estrada de cinta EAR a un pin del segundo conector de joystick de la tarjeta. No es aconsejable conectar directamente la salida de audio del casete ahí porque nos podemos cargar ese pin de la FPGA si le metemos una señal demasiado alta, o un valor negativo. Para evitar problemas he diseñado un pequeño circuito que hace las veces de amplificador/adaptador de niveles.
Y esto es todo por el momento. Ahora me encuentro con el problema de que para añadir más funcionalidades necesito más memoria y ya he utilizado toda la disponible internamente en la FPGA. La placa trae un chip de memoria SDRAM de 4MB pero no es utilizable directamente ya que no funciona como la RAM tradicional, que le asignas una dirección en el bus de direcciones y te devuelve el dato en el bus de datos (o guarda el dato que le metas si estás escribiendo) al cabo de unos instantes. Este tipo de RAM funciona a base de comandos y aunque funciona mucho más rápido (100 MHz o más) tiene unas latencias muy altas. Estoy buscando la forma de aprovechar esa diferencia de velocidad para hacer que la CPU la vea como si fuera una SRAM. Si lo consigo ampliaré este tutorial.
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.