A ULA em CPLD - Semana de 18 a 24 de Novembro


18 de Novembro de 2012

O Fabio Belavenuto adicionou o sinal de Burst Gate, pino 35 ao meu esquema original. Enquanto eu estava preocupado com o timming padrão do sinal PAL-M, ele apenas mediu e comparou o sinal da ULA do próprio TK, que apesar de ter um tempo maior do que o padrão (2.3us contra o 4.5us gerado pela ULA original) , funciona absolutamente igual. Abaixo a parte relevante do esquema, com a alteração.




Aliás, o Fabio está trabalhando na versão da ULA para os CPLDs da Altera, enquanto eu estou fazendo a versão para os Xilinxs. Esse trabalho teoricamente é duplicado, mas está servindo para vários testes comparativos de telas dos simuladores do Quartus e do ISE. Além disso com duas familias de fabricantes diferentes podemos garantir mais longevidade ao projeto, porque na prática nunca saberemos quando um fabricante decide encerrar a produção de determinada peça.



19 de Novembro de 2012

Conferi e reconferi o esquema no ISE e acertei vários erros que apareciam na simulação. O problema maior ficou por conta da diferença entre o 7474 original do esquema e o FDCP que é a primitiva do Flip-Flop equivalente. No 7474 os sinais de controle set e reset são ativados em nivel baixo, enquanto no FDCP em nivel alto. Tive que inverter algumas partes da lógica pra funcionar, mas no fim das contas ficou perfeito no simulador.

Tempo de hoje: 04 horas



21 de Novembro de 2012

Fiz alguns comparativos entre a ULA do TK original, medido no osciloscópio e o ISim para avaliar o quão apurado está o clone.





Nas primeras imagens, o clock principal. No TK estou usando um cristal NTSC de 14.3818Mhz e setei o mesmo tempo no simulador para que as comparações fossem válidas. Notem o osciloscópio marcando o delta como 70ns para um pulso completo de clock e no ISim os mesmo 70ns, marcado com os dois cursores de tempo (etiqueta amarela na parte de baixo). Na ampliação da onda o resultado varia muito ligeiramente e apesar da diferença de 0.2ns não quer dizer que esteja errado. Pode apenas ter sido um "arredondamento" ou o cursor ligeiramente deslocado, já que é muito dificil precisar onde a onda começa no equipamento real.





O Subcarrier na onda de cima e o BurstGate. Ambos batendo exatamente como no equipamento real.








Sinais de sincronismo composto e BurstGate. Também com valores muito próximos dos medidos pelo scope.





O sinal de /INT com largura perfeita. Na segunda imagem não notei que tinha um outro sinal no meio e acabei medindo o tempo entre dois sinais, mas notem que ainda assim a temporização é muito boa.








Aqui, realmente temos um "problema". O sinal de /INT do TK real ocorre 1.2us após o Sync, enquanto no clone está ocorrendo a 4.4us. Provavelmente o clone estaria correto, já que todo o projeto foi baseado no livro do Chris Smith "The ZX Spectrum ULA". Eu particularmente acredito que essa diferença não alterará em absolutamente nada do funcionamento, mas requer testes. Pretendo fazer medidas nesta parte em um Spectrum real para saber se realmente o problema é no TK mesmo, ou no clone.





O sinal de sync, com medidas excelentes.

Apenas para esclarecimento, quero salientar que as pequenas diferenças de tempo observadas nas imagens se devem principalmente a arredondamentos e posicionamento manual dos cursores de tempo para as medições. Matematicamente elas estão corretas. ;)

Ainda tem trabalho pela frente, mas já é possivel notar o enorme desenvolvimento até agora. Em breve certamente teremos novidades e o tão sonhado teste no equipamento real.

Tempo de hoje: 03 horas



22 de Novembro de 2012

Comecei a passar para o ISE a parte da memória de vídeo que são as últimas duas páginas dos esquemas originais que publiquei. Cheguei a quase terminar, mas deu um crash no programa e acabei perdendo uma boa parte da ultima página. Bem, pelo menos ainda deu pra salvar a primeira.

Aproveitei o desgosto com o programa para começar a adaptar o TK que irá receber a CPLD para os testes finais. Este TK apesar de ter o cristal NTSC que mencionei no post anterior e um chaveamento de ROM, estes itens não serão necessários na versão final do CPLD, funcionando em qualquer TK "da prateleira".





O que chamei de "adaptar" na verdade foi trocar o soquete original da ULA por um torneado. Pretendo fazer um adaptador com um pedaço de placa padrão e uma barra de pinos torneada, que encaixará perfeitamente no soquete.

Tempo de hoje: 04 horas



23 de Novembro de 2012

Esquema completamente no ISE agora, porém não entendi muito bem como colocar as saídas em tri-state onde necessário. Isso vai ser preciso para que a CPU possa escrever na memória baixa, mas por hora vou rolar apenas uns testes na protoboard para ver como o circuito está se comportando.

Consegui um resonador e somente com ele já é possivel gerar o clock para a CPLD, sem precisar de adicionar um TTL. Na verdade, verdade mesmo, teria que ter pelo menos um circuitinho básico para dar uma "alisada" na onda, mas a curiosidade tá falando mais alto.


Bem, fiz uma arapuca de fios e pendurei o monitor LG M1921 que suporta RGB a 15KHz na saída. Se já tiver pelo menos algum sinal, estaremos no caminho certo...

E...


FUNCIONA!!! Bem, claro, é apenas uma tela besta, mas só o fato dela estar estável e ter a aparência do TK (uma borda com um miolo quadrado no meio), já diz muita coisa e já posso ter a certeza que vários dos sinais estão funcionais ou pelo menos muito próximos.


Com o TK "real" eu gerei uma imagem semelhante para comparar. Apesar de ligeiramente deslocada a imagem da nova ULA está bem próxima em tamanho, o que já está muito bom para o primeiro teste.
(Para quem não entendeu, a imagem da direita não foi gerada no protoboard, mas sim por um TK90X)

Notem que se adicionair um Z80, memórias, ROM e teclado no protoboard, a gente tem um TK completo... hehehhehehe

Tempo de hoje: 05 horas



24 de Novembro de 2012

Inventei de fazer um teste mais completo na parte de video da nova ULA. Minha idéia era gravar uma telinha numa ROM e pendurar no lugar da RAM de video original, dai a ULA ficaria lendo sempre os bytes e jogando as infos na tela. Gravei então a tela do Rainbow Island que é bem legal e colorida numa EEprom.


Bem, o resultado não foi o esperado e além disso o monitor começou a perder o sync quase que constantemente, não mantendo a imagem por muito tempo. Depois de perder quase três horas nisso, cheguei a conclusão que essa massaroca de fios devia estar gerando interferência, então o jeito seria partir pra um adaptador e colocar direto num TK e ver no que dava.

O adaptador precisa ser tanto revovível do TK, quanto ser possível retirar a placa do CI. Se fosse diferente, numa eventual queima entre os testes, teria que fazer outro adaptador. Pensei em algo como usado nos Arduinos da vida, uma placa encaixada sobre outra, com barras de pinos machos e fêmeas. Com um pedaço de placa padrão, posicionei as barras na mesma distância e distribuição de pinos da placa do CPLD.


Então no ISE arrumei os pinos numa posição que ficasse fácil para "rotear" os fios para um soquete torneado que encaixa com a mesma pinagem no lugar da ULA original.


O encaixe não ficou dos piores, já que o TK tem um bom espaço vago internamente. Se bem que com esse adaptador não é possível fechar a tampa, mas esse micro tem um extensor em flat-cable, então não teremos problemas no teste do teclado, quando estivermos lá. Na versão final imagino uma placa semelhante, mas como não terá as barras de pinos, ele ficará baixinha, não oferecendo problemas pra fechar o micro.


Bem, tudo pronto, revisado e re-revisado, e cruzar os dedos e ligar...


Bem funcional, apesar de qualquer dos leitores discordar! :D

Tamanho da tela, posição, cores, SOM (uma zoeira às vezes no alto-falente que não é interferência do RF com certeza), fonte DC-DC funcionando corretamente (a ULA gera a frequencia para o oscilador da fonte) e principalmente, estabilidade do sistema, ao contrário do que tinha ocorrido mais cedo na protoboard.
Agora é continuar o debug e testar principalmente a parte da memória de video, que é onde eu acredito que esteja o problema. Num teste meio besta coloquei a placa de diagnóstico que falhou exatamente no teste de memória baixa.




Tempo de hoje: 09 horas



Total de tempo trabalhado no projeto nesta semana: 25 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.