sexta-feira, 15 de novembro de 2013

Atualização do projeto de emulador de interface de disquete (#11) - Eureka!

Olá,

Eu estava tendo um problema para usar a eeprom AT49HF010 no meu projeto. Inicialmente estava acreditando que o problema era que o CI não estava conseguindo comandar o barramento de dados do MSX sem a ajuda de um buffer. Posteriormente eu vi que estava na verdade cometendo um erro. Eu estava usando como sinais para a seleção do chip o CS1 e o READ ligados respectivamente nos pinos CE e OE, mas isto é um erro e estava provocando o acionamento do CI com outros dispositivos presentes no barramento. Quando eu liguei os sinais CS1 e SLTSL à eeprom tudo passou a funcionar normalmente (EUREKA!).

Com este erro resolvido passei a me preocupar com a possibilidade de adicionar a capacidade de escrever e não apenas ler na eeprom. Após algum tempo de estudo eu cheguei a conclusão que o melhor caminho seria ligar o pino CE no sinal SLTSL e o sinal CS1 ser ligado no pino OE. Normalmente, pelo que tenho observado, se faz o contrário. Os diagramas que eu tenho encontrado na internet eu vejo que os projetistas ligam o sinal CS1 no pino CE e o sinal SLTSL no pino OE, mas isto não faz muito sentido para mim porque o sinal CS1 participa de uma lógica com sinal READ. Se você deseja fazer apenas leituras a ordem não importa muito, mas no meu caso, como eu quero realizar também escritas, eu preciso dos sinais na "ordem certa". Além disto o sinal CS1 também seria ligado a CPLD para participar de uma lógica tal que, caso escritas para a eeprom estejam habilitadas e o CS1 não esteja ativo (nivel zero) o CPLD ativará o sinal de escrita para a eeprom. Desta forma eu garanto que leituras permanecerão funcionando, mesmo durante a programação, e escritas somente serão ativadas intencionalmente.

Resumindo:

- Leituras para a eeprom somente são possíveis selecionando o slot correto para a página 1 (4000h-7fffh) e realizando uma operação de leitura na faixa de endereço da página 1.
- Escritas para a eeprom somente são possíveis ativando as escritas via CPLD e realizando uma operação de escrita para um endereço cuja a página esteja ativa para o slot correto. Ou seja, eu posso fazer uma escrita para qualquer endereço dentro da faixa de 64K desde que a página deste endereço esteja selecionada para o slot no qual está ligada a eeprom.

Com este problema resolvido eu finalmente me decidi sobre o que fazer com os dois pinos que eu tinha sobrando no PIC. Um dos pinos ficará ligado ao sinal de RESET e o outro pino ficará responsável pela detecção de presença do cartão SD.

As últimas mudanças que eu  fiz já estão disponíveis em:

http://sourceforge.net/p/msxdiskinterfaceemulator/Circuit/HEAD/tree/

Aproveito também para lembrar que apesar de fisicamente - nop hardware - ser agora possível fazer escritas para a eeprom, este recurso somente estará presente em revisões do firmware posteriores a versão 1.0.

Com tudo isto exposto acima, caso alguém tenha alguma dúvida, crítica ou sugestão, por favor fique a vontade para expor sua opinião.

O próximo passo agora é acertar os detalhes finais dos footprints dos componentes para podermos iniciar o layout da placa de circuito impresso.

Um abraço,

José Paulo

Nenhum comentário:

Postar um comentário