sexta-feira, 15 de dezembro de 2006

Agora sim! Resultados positivos!

Já que o uso do "buffer" não matou o problema do "glitch", resolvi partir para outra solução, baseado na observação do funcionamento do gerador de "clock" automático, que era indiferente ao "glitch", por ser controlado por um flip-flop (metade do contador LS393).

Resolvi então usar um dos flip-flops da placa de protótipo original para amostrar o sinal de saída do decodificador nas bordas de subida do sinal de "clock" do z80.



Resolvi utilizar a borda de subida, para não precisar de utilizar um inversor antes do sinal de "clock". Se não funcionasse, eu experimentaria na borda de descida.

Desta vez, o circuito funcionou sem problemas.

Fiz um teste utilizando o "loop" entre a entrada e a saída, com o seguinte programa em assembler:

LD HL,0A000H
LD B,0 ; 256 bytes)
LD C,12 ; porta
INIR

Desta forma pude comprovar o perfeito funcionamento do circuito, que retornou os seguintes bytes:

A000: XX 00 FF FE FD FC FB FA
A008: F9 F8 F7 F6 F5 F4 F3 F2
A010: F1 F0 .....

O primeiro byte, XX, era o valor que foi lido por último. O segundo byte é o valor do registrador B no inicio da iteração, que vai sendo decrementado até atingir 0.

Note que a instrução INIR foi utilizada, ou seja, o circuito leu os dados na velocidade máxima que o Z80 suporta para endereçamento de I/O.

A figura abaixo contém o detalhe que foi modificado. A a porta IC7A nem precisa ser utilizada, pois o flip-flop possui uma saída /Q.




O circuito como está hoje, pode ser visto abaixo:



Agora sim, vai ser possível iniciar os testes com o conversor de tensão e com o buffer de saída, operando em 3Volts.

Nenhum comentário: