Z80 Solución de problemas de computadora simple: el pin IORQ no baja

0

Estoy siguiendo las instrucciones en enlace para crear una "prueba de concepto" basada en Z80 computadora. He cableado todo en mi placa y programé la EEPROM con el siguiente programa (la primera instrucción es en la dirección 0):

LD A,#FF
OUT (#02),A
OUT (#03),A
LD A,#01
OUT (#00),A
JP #000A

Este programa solo debe encender un LED conectado al chip de E / S (un 6522 VIA) estableciendo un pin de salida de puerto alto; Sin embargo, nada está sucediendo. Verifiqué que el programa en la EEPROM es el que se publicó aquí y que usé los valores de código de operación correctos. Tengo una señal de reloj de 1 Hz y puedo "ver" la actividad en la dirección Z80 y los pines de datos con mi probador lógico. También verifiqué el cableado, pero todavía nada.

Trabajando hacia atrás, noté que el pin de salida de E / S conectado al LED nunca cambia a alto. También noté que el reloj de fase 2 en el chip de E / S siempre es bajo (es decir, no oscila); esto explica que el LED no se encienda, ya que el chip de E / S solo se lee en el flanco ascendente. Según las instrucciones, he conectado este reloj al pin IORQ del Z80 a través de un inversor; sin embargo, en mi proyecto, el pin IORQ siempre es alto. Desde la hoja de datos del Z80, este pin debe bajar cuando se direcciona un puerto, pero esto no está sucediendo. Así que estoy atascado, y no estoy seguro de cómo proceder desde aquí.

¿Tengo razón al pensar que el pin IORQ debería bajar durante la instrucción OUT? Si es así, ¿qué pasos debo tomar para averiguar por qué esto no está sucediendo? Otras teorías sobre lo que puede estar mal también son bienvenidas.

Gracias de antemano!

    
pregunta Nester

1 respuesta

3

Sí, el pin / IORQ debería bajar cuando se ejecute una instrucción OUT. El hecho de que el suyo no lo sea sugiere que el programa está fallando o no se está ejecutando en absoluto.

Podría haber muchas razones para este mal funcionamiento, como un error de cableado, un chip defectuoso, etc. Comenzaría por verificar si la CPU puede funcionar por sí sola. Para hacer eso me gustaría: -

  1. Eliminar la VIA y la EEPROM. Verifique que no haya cortocircuitos en todo el cableado, etc., y asegúrese de que la fuente de alimentación y los capacitores de derivación estén conectados a las clavijas correctas.
  2. Ate las 8 líneas de datos a tierra mediante resistencias (~ 1k cada una), para crear una instrucción NOP.
  3. Encienda el circuito y verifique que todas las señales de entrada sean correctas (/ INT, / NMI, / BUSRQ, / WAIT, / RESET deben estar en alto)
  4. Reinicie la CPU, luego déjelo funcionar y verifique la actividad en / M1, / RFSH, / MREQ y / RD.

Suponiendo que las pruebas pasan, cambie el código de operación a OUT(#D3),A elevando todas las líneas de datos a + 5V, excepto D5, D3 y D2. Luego reinicie la CPU y busque la actividad en / IORQ y / WR.

Si eso no funciona, entonces es probable que la CPU esté defectuosa (o sea falsa).

Si esas pruebas pasan, retire las resistencias y vuelva a colocar la EEPROM. Debe obtener resultados similares. Si obtiene actividad en / M1, / MREQ y / RD (que indica que las instrucciones se están leyendo y ejecutando) pero no hay nada en / IORQ, verifique que las líneas de datos y direcciones coincidan entre la CPU y la ROM, y que la ROM esté Poner los datos correctos en el bus.

Si eso funciona, entonces debe haber un problema en el VIA o su cableado.

    
respondido por el Bruce Abbott

Lea otras preguntas en las etiquetas