sexta-feira, abril 21, 2017

Z80 na Protoboard: Display de Endereços e Dados

Dada a finalidade didática da minha montagem, quero ser capaz de ver em LEDs o conteúdo dos barramentos de endereço e dados.

Quantidade de fios aumentando


Barramento de Endereço

O barramento de endereço é do tipo "3 state": o Z80 pode tanto acionar os sinais (em nível alto ou baixo) como deixá-los em alta impedância (como se estivessem desconectados) para serem acionados por um outro dispositivo.

A disponibilidade de um endereço de memória válido no barramento é sinalizado por um nível baixo no sinal MREQ. A borda de descida deste sinal é usada para registrar os sinais A0 a A7 do barramento nos 8 flip-flops do CI 74HC574. As saídas dos flip-flops acionam 8 LEDs:

Esta montagem tem a vantagem de manter no display o último endereço válido. Entretanto, não trata endereços de I/O, para isto bastaria um AND do sinal MREQ com IORQ. Outro ponto importante ao acompanhar a execução de um programa é que serão mostrados tanto endereços de código como de dados.

Barramento de Dados

O barramento de dados tem a complicação adicional de não existir um sinal que indique quando contém um dado válido. Por este motivo o meu circuito mostra a situação atual do barramento, usando apenas um buffer 74HC541:


Vamos ver como tudo isto se comporta quando colocarmos o Z80 para rodar.

Atualização 22/04: Não se comportou como esperado:
  • O 74HC574 usa a borda de subida do sinal CP. Para pegar o endereço corretamente, o sinal -MREQ (ativo baixo) que sai do Z80 deve ser complementado.
  • Os LEDs de endereço indicam também os endereços de refresh, gerados automaticamente pelo Z80 (isto me confundiu por um bom tempo). O ideal seria não registrar o endereço quando o sinal -RFSH for zero.
  • Para não acender os LEDs quando a via de dados está em alta impedância, é conveniente ligar o sinal -MREQ a um dos OE do 74HC541
Mais adiante eu publico um circuito aperfeiçoado.


Nenhum comentário: