terça-feira, março 19, 2024

Novo Projeto: Microcomputador Didático com Z80

 Este projeto tem como partida uma solicitação de um dos leitores deste blog. Ele possui um kit dos anos 80, o CEDM-80, e gostaria de um firmware novo para ele. Ele possui o firmware original apenas no formato HEX. Embora seja possível disassembla-lo e obter um fonte para usar como ponto de partida, meu interesse é mais em escrever um código "a partir do zero" (em termos, pois já fiz algumas coisas semelhantes no passado).


Para escrever o firmware o primeiro passo é ter o hardware e aí está o projeto: construir um microcomputador compatível com o CEDM-80 (versão 1, para ser mais preciso). É um projeto de médio a longo prazo, ficarei muito feliz se o concluir até a metade do ano atual (2024), mas não me surpreenderei se ele se estender pelo segundo semestre.

Pretendo documentar esse projeto com posts aqui no blog e vídeos no YouTube (https://www.youtube.com/@dqsoft).

Neste primeiro post vou comentar rapidamente o esquema original. Não pretendo segui-lo à risca, poderei altera-lo em função da disponibilidade de peças (por exemplo, usar 74HC no lugar de 74LS) e outras considerações, porém procurando manter a compatibilidade. Lembrando que já fiz algumas brincadeiras com o Z80 na protoboard.

Obs: nos esquemas aparece 74xx mas nas instruções de montagem está especificado 74LSxx.

A primeira parte do circuito é o microprocessador Z80 e a memória, onde destaco:

  • O circuito de reset é o tradicional RC (resistor e capacitor), com um botão para o reset manual e um diodo para descarregar o capacitor quando a alimentação é desligada. Eu usei um circuito mais sofisticado na minha montagem na protoboard e um circuito dedicado nas minhas montagens com 6502 e 6809 após ter problemas com o RC. A decidir o que vou usar na minha montagem.
  • O oscilador também é baseado em RC, usando um 74LS14 (inversor Schmitt trigger). É a primeira parte que pretendo investigar. Existe um kit mais recente que substitui este circuito por um oscilador a cristal (com frequência 3,5795 MHz).
  • A memória para o programa é uma 2716 (EPROM de 2k), vou substituir por uma 28C16 ( EEProm de 2Kbyte).
  • A memória RAM é uma 6116, com 2kbytes. Pretendo usar o mesmo integrado
  • A decodificação de endereços das memórias é feito por um 74LS138 (decodificador de 3 para 8) e um 74LS08 ("e" de duas entradas)

A segunda parte do circuito é a "interface com o operador":
  • A saída são seis dígitos de 7 segmentos (anodo comum).
  • A entrada é um teclado organizado de forma matricial
  • A decodificação dos ports é feita por uma combinação de "e" (74LS08) e "ou-exclusivo" (74LS02).
  • Para controle dos segmentos do display são usados dois registradores de 4 bits (74LS75), 8 transistores PNP são usados para gerar a corrente necessária para os LEDs. Eu não achei o 74LS75, portanto vou substituir os dois por um 74HC373 (latch de 8 bits).
  • Para seleção do dígito é usado um 74LS174 (hex flip-flop) ligado a transistores NPN. Talvez eu substitua por um octo flip-flop (74HC374) para ter mais dois sinais para expansão futura.
  • O mesmo 74HC174 aciona as colunas do teclado (portanto a "varredura" do display é feita junto com a varredura do teclado).
  • As colunas do teclado estão ligadas a dois 74LS126 (buffer tri-state de 4 bits)
A minha montagem final será em placas padrão com fios wire-wrap soldados (como as outras que eu fiz). Uma placa terá o Z80, reset, oscilador, memórias e decodificação de endereços, uma segunda terá os registradores para o display e teclado e os displays, o teclado deve ficar em uma terceira placa.

Nenhum comentário: