A ULA em CPLD - Semana de 11 a 17 de Novembro


11 de Novembro de 2012

Já um bom tempo atrás eu tinha desenhado um clone de Spectrum usando somente CIs de prateleira, e que, com excessão apenas da gravação da ROM que necessita de hardware, qualquer pessoa pudesse montá-lo. Não cheguei a desenhar a placa para ele dada a dificuldade por causa da quantidade de CIs (cerca de 55) e o projeto acabou ficando parado. Recentemente a pedidos dos amigos das listas com relação a necessidade de ter um substituto viável para a "misteriosa" ULA do TK, resolvi usar parte do meu antigo esquema, mas mesmo retirando todos os componentes extras do clone, ainda restariam cerca de 45, o continuaria complicado para adaptar num único soquete no TK original.

A solução então é partir para uma adaptação em CPLD e com alguma sorte usará um único CI e o regulador de voltagem 3,3V que pode ser facilmente adaptável numa plaquinha em formato 40 pinos e ser plug-n-play no TK90X ou TK95. Minha intenção é ir reportando aqui os testes e fazer um pequeno diário durante o desenvolvimento para documentar toda experiência.

Iniciando hoje, foi dia de arrumar toda a documentação que eu tinha para começar organizar o desenvolvimento. Percebi no entanto que algumas partes ficaram faltando no esquema original que eu tinha desenhado porque usava memórias estáticas, enquanto no TK elas são dinâmicas. Passei o dia desenhando o que faltava e então, compilei o esquema da ULA que pode ser baixado neste link. Porém que essa é apenas a base do trabalho e certamente ele vai sendo afinado durante o desenvolvimento, mas a grosso modo a versão final não deverá ser muito longe dessa preliminar.

Tempo investido hoje: 09 horas



12 de Novembro de 2012

Hora de começar a colocar o esquema no ISE... Programa carregado, vou na bilioteca e... "Ué, cada as peças?". Ao contrário do Altera Quartus, o ISE só tem as portas soltas e componentes genéricos. Um 74161 por exemplo, ao que parece é um CB4CE ou algo parecido. O grande problema é que não existe em nenhum lugar uma tabela de equivalência e pra mim que ainda estou engatinhando ficou MUITO difícil de achar o que é onde. Outro problema extra foi a interface de desenho, completamente diferente de qualquer outro programa de desenho de esquemas. Bem, é a vida, tenho que aprender coisas novas todos os dias. Após várias tentativas, acertos e frustrações, fui dormir e com uma bela dor de cabeça.

Tempo investido hoje: 02 horas



13 de Novembro de 2012

Numa coincidência gigante, descobri a versão 10.1 instalada num micro e para minha surpresa estavam lá os TTLs na biblioteca do esquemático, prontas para usar. Não tem exatamente todas, mas já é um BOM adianto. Por exemplo, não tem o 7474, mas depois de ler CUIDADOSAMENTE o datasheet, achei a primitiva na biblioteca e fiz o equivalente.

Pude começar a passar o circuito para o programa, mas a briga boa ficou por conta das idiosincrasias do Simulador que teimava em sumir com pinos, usando uma versão antiga de arquivo, mesmo quando eu mandava substituir o arquivo anterior. Para resolver, o jeito foi, a cada mudança nos pinos testados, gravar o arquivo com nome diferente.

Bem, está começando a andar, e espero testar a parte de timming no CPLD real no protoboard nesse fim de semana.




Tempo de hoje: 04 horas



14 de Novembro de 2012

O uso do esquemático está começando a se tornar mais amigável e apesar dele ser bem diferente dos outros programas, tem várias coisas que gostei, como ligação automática dos terminais quando se coloca uma peça sobre outra. Estou acostumando também com as primitivas e tem muitas delas que já são "combinadas" para facilitar a vida, como por exemplo uma porta OR que em das entradas já tem um NOT, não precisando de outra primitiva para isso. Vi que posso simplificar muita coisa porque visei os componentes de prateleira no esquema original não as "facilidades", mas deixarei isso para a etapa do debugging para eu não me confundir durante o desenho.

Apesar de muita coisa fluir bem, o editor tem um bug no uso de multiplas páginas de esquema. Se eu incluo uma nova, tenho que setar o tamanho da área de desenho para o mesmo das outras folhas. Supostamente deveria ser possivel trabalhar com vários tamanhos, mas se salvo o arquivo com tamanho diferente o editor diz que está corrompido. Isso me consumiu pelo menos 1 hora de trabalho tentado recuperar o que eu já tinha feito. Pelo menos descobri o problema e pude continuar.

Outro pequeno inconveniente é no uso do "BUS de dados" presente em alguns componentes com muitas saidas iguais, como contadores de 16 bits por exemplo. Não entendi muito bem como funcionam no esquemático e ainda estou batendo um pouco de cabeça com isso.

Tempo de hoje: 04 horas



15 de Novembro de 2012

O simulador da versão 10 do ISE deixa muiiiiiiiiito a desejar. Além de ser confuso pra caramba, estava ignorando vários sinais que precisavam ser medidos e eu não sabia como incluí-los. Pensei em fazer um pequeno teste que deu muito certo: abri o projeto na versão 13 e este além de converter o projeto, trouxe também a biblioteca de TTLs! Agora posso usar sem problemas a versão mais nova do ISE sem ter que bater demais a cabeça. :D

O destaque da versão 13 é o ISim, o novo simulador, que além de mais fácil de ser usado, é facilmente configuravel. O único "porém" é que não aprendi como setar um clock automático, então a cada teste tenho que reconfigurar os parametros. Deve ter um passo a mais pra isso, mas ainda não descobri onde.




Tempo de hoje: 02 horas



16 e 17 de Novembro de 2012

Praticamente esquema todo completo no ISE. Agora comecei a escrever os testes dos sinais para debug. Sim, "escrever" os testes. Se usa VHDL no ISim, além da parte visual, que nesse caso é meio fraca por não ser o foco do programa. Tem grandes vantagens em escrever os testes, porque podemos passar os resultados esperados e ele testa e faz a comparação. O problema é o tempo extra para isso, mas acho que ninguem está com pressa no momento mesmo... ;)

Montei um segundo shield com outro XC95144XL, já com o regulador de 3.3v em SMD montado na plaquinha, mas ainda não tive oportunidade de testar o CPLD com um código simples para piscar um LED por exemplo. Minha intenção com essa é montar um adaptador para 40 pinos para plugar direto no soquete da ULA do TK90X quando estiver rodando os testes direto na máquina. Aliás deu bastante trabalho pra soldar esse, porque era um chip "reciclado" e um dos lados teimava em não alinhar. No fim das costas alinhei três lados e mandei solda assim mesmo. Apesar de ter ficado ligeiramente desalinhado no lado problemático, todos os pinos fizeram contato com os pads sem absolutamente nenhum problema.




Tempo de hoje: 06 horas






Total de tempo trabalhado no projeto nesta semana: 27 horas





Voltar - Home


Comente



COMENTÁRIOS DESABILITADOS NO MOMENTO! RETORNAM EM BREVE
É expressamente proibido a reprodução total ou parcial deste texto sem a minha devida autorização por escrito.