domingo, junho 16, 2024

Microcomputador Z80 - Usando um 74HC373 Como Latch/Porta de Saída

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: