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

sábado, 9 de novembro de 2013

Atualização do projeto de emulador de interface de disquete (#10) - Painel de Controle


Olá,

A última novidade sobre este projeto é que eu fiz o diagrama elétrico e o layout da placa de circuito impresso do painel de controle. Com o layout na mão me foi possível executar a construção do painel conforme vocês podem ver nas fotos acima.

Tenho que confessar que eu não fiquei muito feliz com o resultado final mas no final eu aprendi uma lição importante. Apesar das fotos não mostrarem os quatro parafusos que estão próximos ao display de LCD são longos e prendem a tampa ao LCD e à placa de circuito impresso tudo junto. Má ideia. Foi um sacrifício fazer as coisas encaixarem uma nas outras e demorei um tempo longuíssimo para montar todo o conjunto. Apesar do painel estar funcionando eu recomendo que não construam (caso se queira reproduzir o projeto) um painel de controle usando o layout que eu fiz.

De qualquer forma é isto. O painel está pronto e está funcionando e no final das contas ficou bem bacaninha.

Eu já dei um commit com estas últimas alterações para o sourceforge caso alguém queira dar uma verificada é só acessar:

http://sourceforge.net/projects/msxdiskinterfaceemulator/

Um abraço,

José Paulo

sexta-feira, 1 de novembro de 2013

Atualização do projeto de emulador de interface de disquete (#9) - Source Forge

Olá,

Eu finalmente acrescentei ao código fonte os avisos da licença GPL. Com isto eu criei um espaço no source forge e todos os arquivos pertinentes ao projeto estão lá. Caso você queira participar do projeto ou queira apenas reproduzir o projeto o mesmo está disponível em:

https://sourceforge.net/projects/msxdiskinterfaceemulator/

Com relação ao diagrama elétrico está concluído. Acredito que eu tenha que fazer mais uma inspeção final antes de declarar a versão do diagrama como sendo a versão 1.0. O layout do PCB já foi iniciado e eu parei no estágio de distribuição dos componentes. Com relação ao código fonte em sí eu ainda não acrescentei a documentação no código e nem fiz o clean up conforme prometido. Mas pretendo fazer isto em breve. Além disto tem que ser feito todos os bug fixes necessários.

Esta é apenas uma mensagem rápida porque estou sem tempo no momento. Mas qualquer coisa é só entrar em contato.

Um abraço,

José Paulo