Clon ZX Spectum 128 (ULA+)

Proyectos de hardware con sus esquemáticos y si llevan software en fuente

Moderador: Fundadores

Reglas del Foro
Aquí solo tienen cabida proyectos de hardware que incluyan siempre al menos sus esquemáticos para poder reproducirlos si llevan componentes electrónicos, y si es posible los ficheros del programa en que se hacen, los diseños de las placas, los gerber, etc. Si llevan algún tipo de software asociado debe estar diponible el código fuente

Para los que no cumplen estas condiciones se debe postear en el foro de proyectos generales.
Avatar de Usuario
España_Comunidad_Valenciana flopping
Fundador
Fundador
Mensajes: 9563
Registrado: 29 Mar 2013, 15:26
Ubicación: Valencia
Has thanked: 2 times
Been thanked: 262 times
Contactar:

Re: Clon ZX Spectum 128 (ULA+)

Mensaje por flopping » 12 Dic 2020, 13:19

Kyp escribió:
12 Dic 2020, 13:13
Ya he grabado la ROM :)) y me he puesto a repasar la implementación.
De momento le he añadido el (d)efecto ULA Snow que no estaba implementado en la versión de 48K (para esto si hay que hacer un puente para conectar la señal /RFSH a la CPLD).
¿Y para que queremos el ULA snow?, yo sinceramente ese tipo de defectos, los quitaria, ya que molestan mas que otra cosa, vale que si quieres una implememtacion "exacta" hay que replicarlo todo como el original, pero es que eso justamente, es un defecto que no se corrigio en su dia y se ha ido arrastrando. :~(
No me hago responsable de mis post pues estan escritos bajo la influencia del alcohol y drogas psicotropicas, por la esquizofrenia paranoide que padezco.
(C) 1982-2021, 39 años de ZX Spectrum.
http://www.va-de-retro.com/ un foro "diferente".

Avatar de Usuario
España mad3001
Demonio segundo orden
Demonio segundo orden
Mensajes: 1219
Registrado: 25 Nov 2015, 00:15
Ubicación: Mostoles(Madrid)
Has thanked: 138 times
Been thanked: 338 times
Contactar:

Re: Clon ZX Spectum 128 (ULA+)

Mensaje por mad3001 » 12 Dic 2020, 13:34

flopping escribió:
12 Dic 2020, 13:19
Kyp escribió:
12 Dic 2020, 13:13
Ya he grabado la ROM :)) y me he puesto a repasar la implementación.
De momento le he añadido el (d)efecto ULA Snow que no estaba implementado en la versión de 48K (para esto si hay que hacer un puente para conectar la señal /RFSH a la CPLD).
¿Y para que queremos el ULA snow?, yo sinceramente ese tipo de defectos, los quitaria, ya que molestan mas que otra cosa, vale que si quieres una implememtacion "exacta" hay que replicarlo todo como el original, pero es que eso justamente, es un defecto que no se corrigio en su dia y se ha ido arrastrando. :~(
Bueno, aunque lo llamen defecto, realmente en algún juego precisamente se usa como "efecto", por ejemplo en Vectron.
No somos dioses sino aporreadores de teclas y destripadores de Hardware con ganas de soltar los nervios en algo productivo e interesante

Avatar de Usuario
España_Comunidad_Valenciana zx81
Aspirante a demonio
Aspirante a demonio
Mensajes: 469
Registrado: 19 Oct 2013, 16:27
Ubicación: Valencia
Has thanked: 33 times
Been thanked: 63 times
Contactar:

Re: Clon ZX Spectum 128 (ULA+)

Mensaje por zx81 » 12 Dic 2020, 15:20

flopping escribió:
12 Dic 2020, 13:19
Kyp escribió:
12 Dic 2020, 13:13
Ya he grabado la ROM :)) y me he puesto a repasar la implementación.
De momento le he añadido el (d)efecto ULA Snow que no estaba implementado en la versión de 48K (para esto si hay que hacer un puente para conectar la señal /RFSH a la CPLD).
¿Y para que queremos el ULA snow?, yo sinceramente ese tipo de defectos, los quitaria, ya que molestan mas que otra cosa, vale que si quieres una implememtacion "exacta" hay que replicarlo todo como el original, pero es que eso justamente, es un defecto que no se corrigio en su dia y se ha ido arrastrando. :~(
La pega que yo tengo con ese defecto, y por eso lo implementé en JSpeccy y luego lo quité, es que no estoy muy seguro que esté correctamente determinado cuando, cómo y dónde sucede. Sí, si sacas "basurilla" aleatoria das el pego, pero es muy difícil replicar exactamente el efecto y mucho menos comprobar si lo estás haciendo bien. Yo lo pondría, es un defecto "muy Spectrum", pero dado que solo lo aprovecha Vectron y algún test, me da rabia implementar una característica con tantas incertidumbres.

My two cents...
Today's robots are very primitive, capable of understanding only a few simple instructions such as 'go left', 'go right' and 'build car'.
John Sladek

Emulador de Spectrum JSpeccy.
Emulador de Spectrum Bare-metal para las Raspberry PI ZXBaremulator

Avatar de Usuario
Kyp
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 2954
Registrado: 30 Sep 2013, 14:54
Ubicación: Madrid
Has thanked: 100 times
Been thanked: 354 times
Contactar:

Re: Clon ZX Spectum 128 (ULA+)

Mensaje por Kyp » 12 Dic 2020, 16:51

El ULA Snow no tiene nada de aleatorio, está perfectamente definido como pasa. Básicamente es esto:
wire[12:0] a = { va[12:7], !rfsh && ca[15:14] == 2'b01 ? ca[6:0] : va[6:0] };

Que traducido es:

va = video address, la dirección de memoria que quiere leer la ULA.
ca = cpu address, la dirección de memoria que quiere leer la CPU.
a = lo que realmente lee la ULA.

El valor de a depende de si la señal /rfsh está activa (vale 0) y de si los dos bits más altos de la dirección que quiere leer la CPU (ca[15:14]) son 01. Si no se cumple la condición la ULA lee la dirección que quiere leer. Si se cumple la condición la dirección efectiva que lee la ULA es, la mitad inferior (bits [6:0]) son los de la ULA y la mitad superior (bits [12:7] son los de la CPU).

¿Por qué es solo la mitad? Pues porque como el bus de memoria está multiplexado (se asigna en dos tiempos), debido a la temporización con que ocurren las señales internamente, la CPU solo pisa una de las partes.

¿Por qué ocurre? Porque el mecanismo de contienda no tiene en cuenta la señal /rfsh así que cuando la CPU quiere refrescar la memoria compartida con la ULA, esta no bloquea el acceso como hace en el resto de casos y la CPU interfiere con la dirección que intenta asignar la ULA.

Avatar de Usuario
España_Comunidad_Valenciana zx81
Aspirante a demonio
Aspirante a demonio
Mensajes: 469
Registrado: 19 Oct 2013, 16:27
Ubicación: Valencia
Has thanked: 33 times
Been thanked: 63 times
Contactar:

Re: Clon ZX Spectum 128 (ULA+)

Mensaje por zx81 » 12 Dic 2020, 17:31

Complicado entonces de emular por software, principalmente porque el refresco se produce durante los T3-T4 de M1, y en un emulador no se hace un cálculo tan fino de tiempos, al menos en los emuladores que yo he visto.

Lo que no veo claro es la dirección de la CPU. Si es una lectura sin /RFSH la cosa no admite discusión, es la dirección del opcode que está tratando. Pero si /RFSH está activa la dirección que se ve en el bus debería ser el contenido del conjunto 'IR', ya que es lo que pone en ese caso la CPU. O eso creo, no puedo hacer pruebas exhaustivas al respecto porque no tengo analizadores ni osciloscopios. De hecho, el problema se produce precisamente cuando se pone el registro I entre 0x40 y 0x7F y no en otro caso.

Como no veo el resto del código VHDL no sé si en el T80 se respeta lo de sacar ese contenido al bus en ese momento (y en otros que no debería, dicho sea de paso). A veces, la Z80 deja en el bus contenidos de IR o de otros registros en pasos intermedios para luego volver a usarlos o no, hay un poco de todo. Es más, en algunas instrucciones como DJNZ parece que la señal /RFSH se extiende hasta un T5 de M1 o un T1 de M2, incluso más allá, como INC DE.
Today's robots are very primitive, capable of understanding only a few simple instructions such as 'go left', 'go right' and 'build car'.
John Sladek

Emulador de Spectrum JSpeccy.
Emulador de Spectrum Bare-metal para las Raspberry PI ZXBaremulator

Avatar de Usuario
Kyp
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 2954
Registrado: 30 Sep 2013, 14:54
Ubicación: Madrid
Has thanked: 100 times
Been thanked: 354 times
Contactar:

Re: Clon ZX Spectum 128 (ULA+)

Mensaje por Kyp » 12 Dic 2020, 17:59

No se que decirte, no conozco las interioridades del Z80 tan bien como tú. Además, en la FPGA hay dos buses de datos, el de entrada es independiente del de salida, no está compartido como en un ordenador real.

Avatar de Usuario
España sinclair200
Moderador
Moderador
Mensajes: 9199
Registrado: 28 Mar 2014, 18:25
Ubicación: Madrid
Has thanked: 15 times
Been thanked: 134 times
Contactar:

Re: Clon ZX Spectum 128 (ULA+)

Mensaje por sinclair200 » 13 Dic 2020, 14:01

Falta mucho para finalizar este proyecto.....? =)
Imagen
Z80 INSIDE.........
WANTED:…………. :D

Avatar de Usuario
Kyp
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 2954
Registrado: 30 Sep 2013, 14:54
Ubicación: Madrid
Has thanked: 100 times
Been thanked: 354 times
Contactar:

Re: Clon ZX Spectum 128 (ULA+)

Mensaje por Kyp » 13 Dic 2020, 14:27

Ya tengo un +2 (sin ULA+ de momento) con DivMMC en fase de pruebas :D :D :D

Avatar de Usuario
España_Comunidad_Valenciana flopping
Fundador
Fundador
Mensajes: 9563
Registrado: 29 Mar 2013, 15:26
Ubicación: Valencia
Has thanked: 2 times
Been thanked: 262 times
Contactar:

Re: Clon ZX Spectum 128 (ULA+)

Mensaje por flopping » 13 Dic 2020, 15:55

Kyp escribió:
13 Dic 2020, 14:27
Ya tengo un +2 (sin ULA+ de momento) con DivMMC en fase de pruebas :D :D :D
Pero eso no lo tenías ya?, o lo que tenías era el 128 con ula+, pero sin DivMMC?
No me hago responsable de mis post pues estan escritos bajo la influencia del alcohol y drogas psicotropicas, por la esquizofrenia paranoide que padezco.
(C) 1982-2021, 39 años de ZX Spectrum.
http://www.va-de-retro.com/ un foro "diferente".

Avatar de Usuario
Kyp
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 2954
Registrado: 30 Sep 2013, 14:54
Ubicación: Madrid
Has thanked: 100 times
Been thanked: 354 times
Contactar:

Re: Clon ZX Spectum 128 (ULA+)

Mensaje por Kyp » 15 Dic 2020, 18:52

He subido al OneDrive los JED para cuando se usan ROMs de 128K. Se seleccionan con el jumper J9, 1-2 (MMC) = 8 ROMs de 64K, 2-3 (ROM) = 4 ROMs de 128K y los dip-switches (el nº 1 no se usa en modo 128K). Lo de 64K/128K se refiere al tamaño de las ROMs, a como está dividida la EEROM de la placa, que es de 512K.

He reorganizado el sitio, ahora hay dos carpetas, ROMx08 (ROMs de 32K) y ROMx04 (ROMs de 128K). Supongo que al final se usarán siempre las de 128K porque es la única forma de tener un +3 y DivMMC.

De momento hay JEDs para implementar un 48K y un 128K/+2 con DivMMC de momento sin ULA+, un .bin con las ROMs para grabar en la EEPROM, y un .txt indicando que hay en el .bin

Poco a poco iré subiendo más implementaciones.

Responder

Volver a “Proyectos de hardware abiertos”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados