ZXPP, clon de Spectrum en una Papilio Pro

Cursos, reparaciones, fichas, tutoriales, etc.

Moderador: Fundadores

Avatar de Usuario
antoniovillena
Demonio segundo orden
Demonio segundo orden
Mensajes: 1596
Registrado: 02 Abr 2013, 19:06
Been thanked: 1 time

Re: ZXPP, clon de Spectrum en una Papilio Pro

Mensaje por antoniovillena »

Ha ampliado la respuesta: " [8/31, 18:55] McLeod: que replique el circuito de EAR del MSX
[8/31, 18:56] McLeod: que es el que conozco mas sofisticado
[8/31, 18:56] McLeod: pero que lo modifique para que funcione a 3.3v
[8/31, 18:56] McLeod: aunque
[8/31, 18:56] McLeod: con dos transistores hay de sobra"
Avatar de Usuario
Kyp !Sinclair 1
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 3401
Registrado: 30 Sep 2013, 14:54
Ubicación: Madrid
Has thanked: 31 times
Been thanked: 163 times

Re: ZXPP, clon de Spectrum en una Papilio Pro

Mensaje por Kyp »

antoniovillena escribió:Hola kyp, yo de analógica no entiendo, pero le he preguntado a McLeod. Dice que pongas un amplificador operacional.
Recuerdo vagamente de cuando estudiaba electrónica haber hecho prácticas con operacionales. Incluso el otro día, haciendo recuento de chips, vi que tengo por ahí un uA741 que si no recuerdo mal es un amplificador operacional. Pero no se si sabría como usarlo =)
Bueno, miraré por ahí a ver si me inspiro.
antoniovillena escribió: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
Claro, lo subiré que ahí estará más a mano. De todas formas no es una modificación del ZX-Uno, es una implementación que he hecho yo desde cero. Lo único que he 'tomado prestado', al menos de momento, es el módulo del teclado PS/2 (la primera versión) aunque la he retocado un poco para quitar las cosas que no no soporta mi clon.

Cuando consiga hacer funcionar la SDRAM intentaré adaptar la parte del DivMMC. Ya he estado mirando como va.
Avatar de Usuario
antoniovillena
Demonio segundo orden
Demonio segundo orden
Mensajes: 1596
Registrado: 02 Abr 2013, 19:06
Been thanked: 1 time

Re: ZXPP, clon de Spectrum en una Papilio Pro

Mensaje por antoniovillena »

Si, un 741 me suena a operacional. Básicamente te multiplica por un número muy alto la diferencia de voltaje de los terminales de entrada. Si necesitas reducir esa ganancia lo configuras en lazo cerrado, pero lo que a ti te interesa es que esté siempre en saturación, por tanto en lazo abierto.

Pues si es implementación independiente mejor aún. En este caso mejor contacta con Quest, que está muy activo últimamente y se le da bien portar cores al zxuno. Voy a informarle de este hilo.
Avatar de Usuario
sinclair200 España
Moderador
Moderador
Mensajes: 10000
Registrado: 28 Mar 2014, 18:25
Ubicación: Madrid
Has thanked: 8 times
Been thanked: 178 times

Re: ZXPP, clon de Spectrum en una Papilio Pro

Mensaje por sinclair200 »

Resumiendo Kyp, esto es otro clon del spectrum por hard, o un emulador por hard?
Imagen
Z80 INSIDE.........
WANTED:…………. CPC 6128 british
Avatar de Usuario
wilco2009 !Sinclair 1
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 8156
Registrado: 01 Abr 2013, 23:47
Ubicación: Valencia
Has thanked: 47 times
Been thanked: 107 times

Re: ZXPP, clon de Spectrum en una Papilio Pro

Mensaje por wilco2009 »

Enhorabuena por esa adaptación!
"Aprender a volar es todo un arte. Aunque sólo hay que cogerle el truco. Consiste en tirarse al suelo y fallar".

Douglas Adams. Guía del autoestopista galáctico.
Avatar de Usuario
eltargui
Demonio tercer orden
Demonio tercer orden
Mensajes: 516
Registrado: 29 Abr 2014, 16:33

Re: ZXPP, clon de Spectrum en una Papilio Pro

Mensaje por eltargui »

Muy bueno kyp. Esto quiero verlo el 25 en Parla.
ZX eltargui un blog dedicado a los micro-ordenadores Sinclair
Avatar de Usuario
Kyp !Sinclair 1
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 3401
Registrado: 30 Sep 2013, 14:54
Ubicación: Madrid
Has thanked: 31 times
Been thanked: 163 times

Re: ZXPP, clon de Spectrum en una Papilio Pro

Mensaje por Kyp »

antoniovillena escribió:Pues si es implementación independiente mejor aún. En este caso mejor contacta con Quest, que está muy activo últimamente y se le da bien portar cores al zxuno. Voy a informarle de este hilo.
Si que se le da bien, si. Ya he visto sus trabajos en el hilo del ZX-Uno :)) :)) :))
Yo empecé así, intentando portar cores, pero el problema de la SDRAM es bastante insalvable y la BRAM de la FPGA se queda corta enseguida.
Avatar de Usuario
Kyp !Sinclair 1
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 3401
Registrado: 30 Sep 2013, 14:54
Ubicación: Madrid
Has thanked: 31 times
Been thanked: 163 times

Re: ZXPP, clon de Spectrum en una Papilio Pro

Mensaje por Kyp »

sinclair200 escribió:Resumiendo Kyp, esto es otro clon del spectrum por hard, o un emulador por hard?
Es un clon por hard.
Avatar de Usuario
Kyp !Sinclair 1
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 3401
Registrado: 30 Sep 2013, 14:54
Ubicación: Madrid
Has thanked: 31 times
Been thanked: 163 times

Re: ZXPP, clon de Spectrum en una Papilio Pro

Mensaje por Kyp »

eltargui escribió:Muy bueno kyp. Esto quiero verlo el 25 en Parla.
Cuenta con ello :D
Avatar de Usuario
Kyp !Sinclair 1
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 3401
Registrado: 30 Sep 2013, 14:54
Ubicación: Madrid
Has thanked: 31 times
Been thanked: 163 times

Re: ZXPP, clon de Spectrum en una Papilio Pro

Mensaje por Kyp »

Paso 03, juntando las piezas

Con la ULA parcialmente operativa ya tenemos todo lo necesario para sintetizar el Spectrum. Estos son los cinco módulos que necesitamos:

1. El generador de señales de reloj.
Usamos un DCM (digital clock manager) para generar, a partir del reloj interno de 32 MHz, las dos señales que usará nuestro clon, una de 25,175 MHz para la salida VGA y una de 14 MHz para la ULA. El módulo de la ULA dividirá por 4 la señal de 14 MHz para obtener los 3,5 MHz que conectaremos al módulo de la CPU.
Este módulo lo generamos con el asistente de creación de módulos del ISE, los IP cores.

2. La ULA.
Es el módulo que realizamos en el paso anterior. Lo he dividido en tres partes. El generador de salida de vídeo VGA, el generador de interrupciones de retrazo vertical, y la ULA en sí misma que agrupa los submódulos e implementa la lógica de almacenamiento del color del borde.

3. La CPU.
Me he tomado la libertad de usar los mismos archivos que el ZX-Uno, que a su vez están basados en el trabajo de otras personas. En los fuentes está la información de derechos y licencias, pero son de libre uso.
Si seguís el desarrollo del ZX-Uno habréis visto que no hay un core completamente exacto del Z-80. Este es el que parece que funciona mejor. Hay otro core que supuestamente es más exacto pero está escrito en un lenguaje HDL que no soporta el entorno de desarrollo gratuito de Xilinx (system verilog) así que, al igual que el equipo del ZX-Uno, no he podido probarlo.

4. La ROM.
Este módulo también lo generamos con el asistente de creación de módulos del ISE. Seleccionamos el IP core de "Block RAM/ROM" y creamos una ROM sencilla (un puerto) de 16K por 8 bits.
Aquí nos encontramos con un problema. Para tener algo más que una ROM vacía necesitamos un archivo de inicialización con el contenido de la misma. El asistente espera un archivo con extensión COE que no es más que un archivo de texto con un volcado de la ROM en un formato bastante simple.
He creado un programa que convierte los archivos BIN o ROM de cualquier emulador al formato COE. Lo incluyo en el paquete. Necesita .NET versión 4.

5. La RAM baja.
Al igual que la ROM, lo generamos con el asistente de creación de módulos del ISE. En este caso seleccionamos el tipo "True dual port RAM" de 16KB por 8 bits (una RAM con dos buses de datos y direcciones independientes). El resto de opciones son por defecto.

Ya sólo nos queda conectarlos entre sí. Para ello declaramos unas cuantas señales y asignamos cada cosa a donde corresponde. Creo que el código es bastante claro.

Lo único de especial son las líneas finales:

Código: Seleccionar todo

reset    <= not netRST;
nmi      <= not netNMI;

wloram   <= '1' when mreq = '0' and wr = '0' and a(15 downto 14) = "01" else '0';

d <= dula   when iorq = '0' and rd = '0' and a(0) = '0'
else drom   when mreq = '0' and rd = '0' and a(15 downto 14) = "00"
else dloram when mreq = '0' and rd = '0' and a(15 downto 14) = "01"
else (others => '1');
Lo primero es que tanto RESET como NMI son activas a nivel bajo y en la placa los botones funcionan al revés, por eso las invertimos con un NOT.

Luego la señal de escritura en la memoria es la combinación de MREQ y WR a nivel bajo junto con el valor "01" en las líneas A15 y A14.

Y por último, el bus de datos. Mientras que el los chips reales el bus de datos vale tanto para entrada como para salida, en los módulos van por separado. Por lo tanto tenemos que decidir cual de las salidas de los distintos dispositivos se conecta a la entrada de la CPU. Para ello hay que tener en cuenta si se está accediendo a la memoria (MREQ) o a un dispositivo de entrada/salida (IORQ) y si se está leyendo (RD). Además, si se accede a la memoria hay que seleccionar si es la ROM (A15:A14 = 00) o a la RAM baja (A15:A14 = 01).

Con estos cinco módulos conectados entre sí tenemos nuestro Spectrum operativo. Veremos que arranca, hace el borrado de la memoria y sale el mensaje de (C) 1982 Sinclair Research Ltd.

Pero no tenemos ninguna forma de interactuar con él :o

Continuara... :twisted:
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
Responder

Volver a “Cursos y Tutoriales”