Somente para fins didáticos, irei estudar a arquitetura do Chip SN76489 que é o Chip responsável por gerar os sons no console Master System, e tentar criar um player stand-alone capaz de reproduzir sons armazenados em uma memória EEPROM. Os arquivos que o Player será capaz de reproduzir será o arquivo VGM, que é facilmente encontrado na internet em sites que abordam esse tipo de assunto, games antigos.
Toda a programação do Player será feita em um compilador Freeware e será utilizado Linguagem C. O Microcontrolador PIC16F877A foi escolhido por possuir portas I/O suficientes ao projeto, e por ser capaz de trabalhar à um clock suficiente para esse projeto, 20Mhz.
Material utilizado:
Microcontrolador PIC16F877A
CI SN76489 (Gerador de sons complexos)
CI AT24C512 (EEPROM 512K Serial)
CI LM386 (amplificador de áudio simples)
Oscilador 4Mhz
Primeiros passos:
O primeiro passo é estudar e entender a arquitetura e o funcionamento do Chip SN76489.
SN76489
Na imagem acima podemos ver a função de cada terminal.
Os terminais 1,2,3,10,11,12,13 e 15 recebem os bytes de forma paralela.
Terminal 4 indica que o CI esta em ready state.
Terminal 5 habilita o CI para receber os dados.
Terminal 6 habilita o CI.
Terminal 7 é a saída de áudio.
Terminal 14 é a entrada de clock.
Se você olhar o datasheet orinal do componente, irá notar que os terminais que recebem os bits estão invertidos. Isso porque no início da eletrônica se adotava o bit 0 como MSB e o bit 7 como LSB.
Por enquanto não entrarei em detalhes sobre o funcionamento completo do CI SN76489. Com o tempo irei atualizar esse post com mais detalhes. Por enquanto deixo abaixo o link com todas as informações que eu utilizei.
http://www.smspower.org/uploads/Development/SN76489-20030421.txt
Abaixo segue o link onde é possível encontrar informações sobre como funciona a estrutura do arquivo VGM. Nesse link também esta disponível os arquivos para serem compilados e gravados no PIC.
https://drive.google.com/folderview?id=0B99rwmJ4DTXSMlNjTXM0Z1I3V3M&usp=sharing
Desenvolvimento:
Após toda a analise do Datasheet do CI SN76489 e também da documentação que descreve o funcionamento do arquivo VGM iniciei os primeiros testes no componente. Os primeiros testes são basicamente gerar sons simples enviando simples instruções ao componente (Primeira etapa).
Primeira etapa
Após a etapa anterior melhorei a programação do PIC incluindo novas interpretações do arquivo e já foi possível extrair áudio do arquivo VGM. É possível ouvir vários Glitchs durante a reprodução. Isso ocorre devido a várias instruções do arquivos serem ignoradas durante a interpretação (Segunda etapa).
Segunda etapa
Na Terceira etapa já é possível notar uma estabilidade na reprodução e melhora no áudio. Isso foi possível após a inclusão de novas interpretações do arquivo VGM.
Terceira etapa
Após a Terceira etapa o que faltava era basicamente melhorar a programação do PIC para uma total interpretação do arquivo VGM.
Na Quarta etapa incluí ainda mais interpretações do arquivo e também a capacidade de reproduzir vários arquivos armazenados na mesma memória EEPROM. Um LED de três cores nos mostra o status do hardware.
- Verde - Arquivo VGM válido.
- Azul - Reproduzindo.
- Vermelho - Erro / EoF.
Ainda é possível notar que ao concluir a reprodução de um arquivo e gerado um resíduo. Isso ocorre devido a falta de uma rotina para zerar o SN76489.
O hardware já encontra-se montado definitivamente em uma placa PCB. O projeto final conta também com um amplificador simples já incluso na placa, possibilitando assim a inclusão de um falante diretamente à placa.
Quarta etapa
Abaixo podemos ver o diagrama elétrico feito por mim. Esse diagrama é a montagem definitiva que esta na placa do vídeo acima.