quinta-feira, 26 de outubro de 2006

Leitor de MMC/SD rápido: Primeiros Testes

Após montar o circuito, os primeiros testes são a verificação do correto funcionamento do decodificador de I/O, ou seja, teremos que identificar o correto acionamento do circuito nos pontos de teste TP1, TP2 e TP3.




Para isso, lançaremos mão de um pequeno programa BASIC, além de um contador como o da figura abaixo:


A função deste circuito é identificar se as saídas dos decodificadores estão recebendo pulsos quando os endereços corretos estão sendo acessados.

O Programa Basic é o seguinte:

10 a=inp(&h0C)
20 for a=1 to 100:next
30 goto 10

Teste do ponto TP1:

Se analisarmos o circuito, veremos que o decodificador de endereços IC4 recebe em suas entradas os seguintes sinais:


Pino: [ G1 ][/G2A ][/G2B ][ C ][ B ][ A ]
Sinal:[ A2 ][/IORQ][ /RD ][ A3 ][ A4 ][ A5 ]


Desse modo, a saída Y4 deste CI, conectada a TP1, vai a nível baixo somente quando:


Sinal:[ A2 ][/IORQ][ /RD ][ A3 ][ A4 ][ A5 ]
Nivel:[ 1 ][ 0 ][ 0 ][ 1 ][ 0 ][ 0 ]


Ou seja, quando se acessa um endereços I/O do Z80 igual a:


Sinal:[A7][A6][A5][A4][A3][A2][A1][A0]
Nivel:[x ][x ][0 ][0 ][1 ][1 ][x ][x ]


O pino TP1 deve ser acionado, o que corresponde a acessar os endereços nas seguintes faixas:

0Ch~0Fh, 4Ch~4Fh, 8Ch~8Fh, CCh~CFh

Então para testar se o circuito está funcionando, mude o valor da linha 10 para qualquer um destes valores e execute o programa. Deverá ser possivel ver os LEDs piscando, e a contagem aumentando. O FOR-NEXT na linha 20 é necessário, pois se a contagem ocorrer rapido demais os olhos humanos percebem como se todos estivessem acesos, em vez de piscar.


Teste do ponto TP2 e TP3:

Se olharmos agora para IC8, vemos que este recebe em suas entradas os seguintes sinais:


Pino: [ G1 ][/G2A ][/G2B ][ C ][ B ][ A ]
Sinal:[ /M1 ][ Y4 ][ A6 ][ A7 ][ A1 ][ A0 ]


Desse modo, a saída Y0 deste CI, conectada a TP2, vai a nível baixo somente quando:


Sinal:[ /M1 ][ Y4 ][ A6 ][ A7 ][ A1 ][ A0 ]
Nivel:[ 1 ][ 0 ][ 0 ][ 0 ][ 0 ][ 0 ]


E a saída Y1 deste CI , conectada a TP3, vai a nível baixo somente quando:


Sinal:[ /M1 ][ Y4 ][ A6 ][ A7 ][ A1 ][ A0 ]
Nivel:[ 1 ][ 0 ][ 0 ][ 0 ][ 0 ][ 1 ]


Compondo estes endereços com os endereços anteriores, vemos que os pontos TP2 e TP3 serão acionaos nos seguintes endereços:


TP2
Sinal:[A7][A6][A5][A4][A3][A2][A1][A0]
Nivel:[0 ][0 ][0 ][0 ][1 ][1 ][0 ][0 ]

TP3
Sinal:[A7][A6][A5][A4][A3][A2][A1][A0]
Nivel:[0 ][0 ][0 ][0 ][1 ][1 ][0 ][1 ]


Ou seja, um acesso de leitura ao endereço de I/O &H0C (12 em decimal) deve levar a zero o pino TP2 e uma leitura no endereço de I/O &H0D (12 em decimal) deve levar a zero o pino TP3

Para testar o ponto TP2, rode novamente o programa acima. Verifique que enquanto o endereçco 12 é acessado, apenas a saída Y0 de IC8, e mais nenhuma outra deve mudar de estado.

Para testar o ponto TP3, mude o valor da linha 10 para &H0D (13 em decimal) e igualmente verifique que enquanto o endereçco 13 é acessado, apenas a saída Y1 de IC8, e mais nenhuma outra deve mudar de estado.

Neste Link há um pequeno filme com a imagem de como se comportam os LEDs durante a contagem.

Nenhum comentário: