Uma preocupação minha neste projeto é usar componentes fáceis de achar. O projeto original do CEDM-80 usa alguns componentes TTL que eu não encontrei, o que obrigou a procurar substitutos.
Na parte de Entrada e Saída, em particular, eram usados dois 74LS75 (registrador de 4 bits) e um 74LS174 (Hex D Flip/Flop). Eu não encontrei o 74LS75 e decidi usar um 74HC373 (Octal Latch) no lugar.
Pensando um pouco mais, resolvi substituir também o 74LS174 por um 74HC373. Isto me deixa com mais dois bit de saída, que podem ser futuramente usados para um buzzer ou LED.
Embora o funcionamento básico dos três integrados (75, 174 e 373) seja o mesmo (registrar em flip/flops os dados na entrada e mantê-los na saída mesmo que os dados na entrada mudem), os sinais de saída e acionamento são diferentes.
O 373 possui 8 entradas e 8 saídas. Um sinal LE registra internamente os dados na entrada enquanto está em nível alto. Um sinal OE controla as saídas: no nível baixo elas seguem o que foi registrado e em nível alto elas ficam flutuando (desconectadas / 3-state).
O 75 possui 4 entradas e 8 saídas. Quatro das saídas são a negação das outras; felizmente elas não são usadas no circuito. Os registradores estão agrupados 2 a 2, existindo dois sinais para controlar o registro dos dados de entrada (LE12 e LE34), o registro é feito enquanto o sinal estiver alto.
Por último, o 174 possui 6 entradas e seis saída. Um sinal /CLR (não usado no circuito original) coloca as saídas em nível baixo quando estiver baixo. O registro dos dados é feito quando um sinal CLK passa do nível baixo para alto.
Os sinais LE12, LE34 e CLK são gerados no circuito original a partir dos sinais /WR, /IOREQ, A0 e A1. Os sinais /WR e /IOREQ são combinados por um NOR para detectar a escrita em um dispositivo de I/O (instrução OUT). Este novo sinal é combinado com A0 e A1 através de AND. A escrita em dispositivo com A0=1 corresponde aos sinais LE12 e LE34 nos dois 74LS75. O AND do sinal de escrita em dispositivo com A1 é negado (aproveitando uma por NOR) para gerar o sinal CLK do 74LS174.
Uma vez que o mecanismo de LATCH do 373 é igual ao do 75, parece que basta retirar a inversão para substituir o 174 pelo 373. Bora testar?
Parti da montagem feita na protoboard para testar o circuito de Reset, acrescentando um 74HC08 (quad NOR), um 74HC02 (quad AND) e um 74HC373. Três LEDs ligados ao 373 permitem a inspeção visual do funcionamento.
Circuito minimalista para facilitar a montagem |
O firmware de teste cria um contador binário:
ORG 0 LD C,0 ; C = valor a escrever na porta l1: LD A,C OUT 61h,A ; escreve na porta CPL OUT 62h,A ; para conferir a decodificacao INC C ; incrementa o valor ; aguarda um tempo antes da proxima escrita LD HL,0 l2: DEC HL LD A,H OR L JP NZ,l2 ; escrever o proximo valor JP l1
O resultado pode ser visto no vídeo que está no início (https://www.youtube.com/watch?v=YmXmZD0Wl4Y).
Circuito, software e outras informações sobre o projeto podem ser vistos em https://github.com/dquadros/KitZ80.
Agora é hora de encostar a protoboard e começar a fazer uma montagem com fios em solda.
Nenhum comentário:
Postar um comentário