quinta-feira, julho 13, 2017

Cosmac ELF (1802) - Introdução e Painel

Para colocar em uso o CDP1802, que vimos recentemente no blog, nada melhor que o clássico COSMAC ELF. Este projeto surgiu na revista Popular Electronics em 1976, foi base para várias revisões e atualmente é oferecido como kit para entusiastas.

COSMAC ELF CHM
Uma réplica do COSMAC ELF original (fonte:wikimedia)
O COSMAC ELF original era minimalista e podia ser montado por menos de US$100. Suas principais características:
  • Microprocessador 1802
  • Cristal de 1MHz
  • 256 bytes de RAM
  • Entrada em binário através de 8 chaves
  • Saída através de display com dois dígitos hexadecimais
  • LED ligado à saída Q
Em artigos posteriores da Popular Electronics foram descritas algumas mudanças e aperfeiçoamentos, em particular:
  • Troca dos (caros) displays hexadecimais por oito LEDs (para saída em binário)
  •  Expansão da memória
  • Conexão de mais dispositivos de entrada e saída
  • Display gráfico
Vou tomar como base os artigos originais e mais duas referências mais modernas:

http://www.cosmacelf.com/news/cosmac-elf-manual.html
http://www.sunrise-ev.com/membershipcard.htm

Meu objetivo é montar primeiro uma versão de teste em protoboard e depois uma definitiva (soldada). A versão na protoboard será semelhante ao projeto original, porém usando LEDs ao invés do display hexadecimal (difícil de encontrar e caro). A versão final deverá ter algumas melhorias a serem definidas adiante (com certeza vai suportar mais memória que os 256 bytes). Não pretendo ficar restrito a componentes existentes na época do projeto inicial,  no mínimo vou usar uma memória RAM mais moderna (a 5116 de 2Kbytes que usei com o Z80) e provavelmente alguns 74HCxxx no lugar de alguns 40xx do projeto original (os 40xx são os circuitos lógicos CMOS originais, os 74HC são implementações da série TTL 74 usando versão mais rápidas de CMOS).

O primeiro passo é algo comum aos dois projetos: o painel, que possui:
  • 8 chaves para a entrada de programa/dados em binário
  • 8 LEDs para a saída de dados em binário
  • 1 botão de contato momentâneo para comandar a entrada
  • 2 chaves (LOAD e RUN) para controlar os sinais WAIT, CLEAR e DMA IN do 1802. Com estas duas chaves é possível escolher os modos LOAD (escrita direta na memória a partir das chaves), RUN (execução do programa) e RESET (processador parado na condição inicial).
  • 1 chave (MP) para permitir ou bloquear a escrita na memória. Isto é útil para revisar a memória no modo LOAD.
Tanto o botão como as chaves são de três terminais. No caso do botão (onde o usual é ter apenas dois terminais), um terminal é normalmente fechado (fica ligado ao terminal comum quando o botão não é apertado) e o outro normalmente aberto (fecha ligado ao terminal comum enquanto o botão é apertado).

O meu painel foi feito em acrílico em uma laser cutter:

Ainda está em montagem

O circuito original para debounce do botão e chaves é extremamente curioso:

Fiquei bastante assustado com o fato da saída estar ligada diretamente à entrada que, por sua vez, pode ser ligada diretamente ao terra ou alimentação. Uma consulta ao CMOS Cookbook confirmou que este circuito funciona e não apresenta riscos de dano à porta CMOS, porém não é recomendado por gerar picos de corrente durante a transição. Vou seguir a recomendação do livro e colocar um resistor de 22K entre a entrada e saída:

Nos próximos posts eu irei relatando a construção.

Nenhum comentário: