El mundo analógico me causaba mucha frustración...

(Casi) cualquier cosa que quieras compartir será bienvenida por la comunidad

Moderador: Sir Cilve Sinclair

Responder
Avatar de Usuario
winston
Sabreman
Mensajes: 469
Registrado: Mar Ago 19, 2008 4:17 pm
Ubicación: Isla de Man
Contactar:

El mundo analógico me causaba mucha frustración...

Mensaje por winston » Jue Sep 24, 2009 11:04 pm

Hace dos días, he estado tratando de encontrar porqué el Spectranet no funciona en un Spectrum issue 4...

Claro que el problema era en la CPLD. Tras dos días de trabajo en Xilinx ISE tratando de encontrar porque el circuito de reset no funciona bien, por fin he encontrado el problema real...

El circuito de RESET del Spectrum es muy sencillo - es un condensador y una resistencia, nada más. Por eso, la señal RESET pasa por un búffer (74HCT1G125) antes de llegar a la CPLD del Spectranet - si no, el Spectrum no puede arrancar - el circuito de RESET tiene una impedancia muy alta, y las entradas de la CPLD tiene una impedancia demasiada baja para este circuito - y la línea de RESET quedaría a una tensión demasiada baja si la buffer no estuviera entre el Spectrum y la CPLD.

También el circuito de RESET es muy lento... el Z80 empieza de correr antes de que la tensión del circuito RESET alcanza el nivel del threshold del búffer. No me di cuenta cuanto tiempo el nivel está suficiente alto para el Z80, pero demasiado bajo para el buffer. ¡De hecho, miles de T-states! (También, si el Spectrum se calentara, el problema se empeoraría)

Por fin, he encontrado el problema. La señal RESET está bloqueando los registers de la CPLD que se usa para paginación de la memoria. Por eso, cuando la software del Spectranet ROM trata de paginar otras memorias, los registers de paginación quedan al valor 0x00. Luego, la software hace un salto a una dirección en esta memoria... y el Spectrum se cuelga. Me había olvidado que la señal RESET se usa por estes registers... ¡Dos días habían pasado antes de que pensé mirar a esta parte de la CPLD! Arrrgh,

Lo he arreglado en software. He puesto un bucle para retrasar la rutina de inicialización. (Sería mejor arreglarlo en la CPLD, en realidad no se necesita reset los registers de paginación, pero si quisiera hacer esto, la gente que ya tiene un Spectranet tendría que enviarlos a mi para reprogramarlos. Es mucho más fácil poner un bucle de retrasar en la software :-) )
Tarjeta ethernet para el Spectrum - http://spectrum.alioth.net/doc

Debemos practicar un quirkafleeg

Responder

¿Quién está conectado?

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