revisión de pares de diseño de computadora Z80 [cerrado]

0

esta es una re-publicación ya que no pude obtener ayuda en otros foros. He diseñado y construido un sistema informático Z80 simple con 32K RAM, Z80B a 4mhz, 32K ROM y un UART. El único problema con esto es que el sistema no parece funcionar. Por lo tanto, estoy pidiendo que alguien revise mi código y los esquemas.

    org 0x0000
uart_init:
    ld a, 0x80
    out (0x03), a
    ld a, 12
    out(0x00), a
    ld a, 00
    out(0x01), a
    ld a, 0x03
    out(0x03),a
uart_out:
    in a, (0x05)
    bit 5, a
    jp z, uart_out
    ld a, 0x41
    out (0x00), a
    jp uart_out

    
pregunta Dave Tweed

2 respuestas

2

¿Está absolutamente seguro de que esta es la forma correcta de conectar un bus?

Cada paquete de esquema con el que he trabajado tenía disposiciones especiales para describir las conexiones de BUS que eran diferentes de cómo se conectan las redes de un solo cable. Como se muestra en su esquema, parecería que ha puesto en cortocircuito todos los pines del bus de datos juntos y todos los pines del bus de direcciones juntos. Si este es el caso, no es de extrañar que no funcione.

    
respondido por el Michael Karas
2

Encontré algunos errores en tu circuito: -

  1. TL16C550 CS0 y CS1 deben colocarse alto, no bajo. La forma en que los haya conectado el chip nunca podrá seleccionarse.

  2. RI, DCD y CTS también deben ser elevados. Los estados de estos Las entradas no deberían afectar la transmisión y la recepción, sino los pines flotantes. puede aumentar el consumo actual y confundir el software.

  3. 27C256 Vpp (pin 1) debe estar atado a Vcc, no a tierra. El chip puede todavía funciona con Vpp atado a tierra (un Microchip 27C256 que hice la prueba) pero todas las hojas de datos que examiné dijeron debe estar conectado a Vcc.

El software funciona (lo probé en mi placa Z80, que es casi idéntica a la suya) pero debe agregar un retraso en el inicio para asegurarse de que todos los periféricos estén estables antes de que la CPU acceda a ellos.

Cuando se utiliza un generador de reinicio temporizado RC simple, la CPU puede salir del reinicio antes del 16C550, luego la CPU intentará inicializar el UART antes de que esté listo. Mi placa tenía un condensador grande en la línea de restablecimiento de la CPU, por lo que necesitaba un retraso de inicio de al menos 20 ms (desde entonces, he agregado un búfer de activación Schmitt entre el interruptor de restablecimiento y el restablecimiento de la CPU, y ahora funciona sin ningún retraso).

Algunas otras cosas (que no se aclaran en los esquemas) que pueden necesitar atención: -

  • Debe tener un condensador cerámico de 100 nF entre Vcc y tierra de todos los circuitos integrados. Sin estos condensadores de derivación, el circuito podría sufrir fallos aleatorios, debido a los picos de corriente causados por los chips al cambiar de estado lógico.

  • Verifique que los números de pin TL16C550 sean correctos para el paquete de chips que están utilizando!

  • Para una operación confiable, el Z80 requiere un reloj que oscile de < = 0.8V a > = Vcc - 0.6V (más alto que el nivel máximo normal de TTL normal de 2.4V). Asegúrese de que su generador de reloj esté proporcionando una señal lo suficientemente fuerte.

  • los pines en su conector serial de 9 pines son para Equipo de terminal de datos . para conectar la placa Z80 a una PC, necesitará un cable de 'módem nulo' que intercambie TX / RX y DSR / DTR.

respondido por el Bruce Abbott

Lea otras preguntas en las etiquetas