quinta-feira, abril 27, 2017

Z80 na Protoboard: Rom e Z80

Hora de colocar o Z80 para trabalhar! Com os circuitos de apoio prontos, faltava somente conectar a memória Rom e acertar alguns sinais adicionais do Z80.


A memória Rom usada é a 28C16, uma EEProm de 2Kbytes. Além de dos dados (I/O0 a I/O7), endereços (A0 a A10) e alimentação (VCC e GND), é preciso conectar o sinal -WE a 5V e -OE e -CE aos circuitos que vimos no post anterior.

No Z80, nos temos:



Para este primeiro teste, gravei na Rom o seguinte "programa":

               ORG 0
0000 C3 00 00  JMP 0

Apesar de simples, ele permite exercitar uma boa parte do circuito montado. O vídeo abaixo resume o que vimos até agora e mostra o Z80 em funcionamento.



Neste vídeo eu fiz duas mudanças em relação ao circuito mostrado originalmente. O display de endereços é acionado pelo sinal MREQ, que é o complemento do sinal -MREQ gerado pelo Z80 (já comentei isto no post original). O capacitor eletrolítico do circuito de Reset foi substituído por um maior, para permitir ver o sinal no LED.

Como comentado no vídeo, os displays de endereço e dados não ficaram muito práticos. No lado dos dados, é apresentado direto o que está na via de dados, mesmo quando não tem ninguém acionando as linhas.

No endereço existe a questão do refresh. A memória Ram dinâmica requer que as posições sejam acessadas periodicamente, sob risco de perder o conteúdo. O display de endereço mostra também os endereços de refresh, o que me confundiu por um bom tempo.

O próximo (e provavelmente último) passo será ligar a Ram (espero ter fios suficientes para isto). Talvez eu altere o circuito dos displays para mostrar somente os endereços das instruções e para implementar um port simples de saída no lugar da visualização da via de dados.

2 comentários:

Alexandre Mulatinho disse...

Nossa mãe, acompanhei a série de artigos sobre o Z80 e posso dizer que achei excelente, conteúdo de primeiríssima qualidade. Depois de tanto esforço você devia tentar criar um projeto no KICAD semelhante a um raspberry pi e tentar gerar um protótipo.

Posso saber como você fez para gravar na ROM?

Parabéns e continue com o excelente trabalho, tenho aprendido bastante por aqui.

Daniel Quadros disse...

Obrigado pelos elogios... Não pretendo fazer uma placa, para isto eu tenho o RC2014. Tem uns posts aqui no blog sobre a gravação da Rom (mais exatamente uma EEProm); resumindo eu usei um gravador comercial (TL866). Eu fiz algumas experiências de gravar usando um Arduino Mega e funcionou bem, mas daria muito trabalho para suportar vários modelos de EEProm, principalmente os que exigem uma tensão especial para programação.