LabarcFPGASimulatorDesktop icon indicating copy to clipboard operation
LabarcFPGASimulatorDesktop copied to clipboard

Aumentar a quantidade de atualizações da GUI

Open davigps opened this issue 3 years ago • 4 comments

Essa alteração permite que a GUI atualize 60 vezes por segundo. Acredito que esse é o valor ideal, uma vez que a maioria dos monitores dos alunos possui frame rate de 60Hz, logo, é o máximo visualizável.

  • Essa atualização permite, por exemplo, visualizar mudanças rápidas no lcd em contadores e é útil em vários outros contextos.
  • Em testes locais, não encontrei falhas ocasionadas por essa alteração.

Para manter a taxa de atualização em 1 frame por segundo no LAD, foi adicionada uma verificação para isso.

  #ifdef LAD
    Fl::repeat_timeout(1, callback); 

Mas essa verificação é realmente necessária? (É um impeditivo quando LAD está definido?) Caso não seja, posso atualizar a branch removendo essa condição e mantendo apenas a versão de execução da função com frame rate maior.


  • README atualizada com novas instruções a respeito da taxa de atualização da GUI.

Novo texto: A GUI se atualiza 60 vezes a cada segundo, independentemente da frequência do sinal clk_2. Só se a frequencia do sinal clk_2 for menor a 60 Hz, este sinal pode ser observado corretamente na GUI. Se a frequencia do sinal clk_2 for maior do que 60 Hz, a visualização da GUI pode estar pulando mudanças rápidas que eventualmente poderiam ser vistas no display da placa física.

davigps avatar Sep 23 '21 22:09 davigps

Olá @davigsousa, primeiramente obrigado pelo PR!

Eu não vou poder testar agora, mas me parece interessante e consigo imaginar o problema. Ter uma taxa de atualização da interface diferente do clock me parece uma boa ideia. Mas ela não parece estar sendo aproveitada com uma taxa de atualização tão baixa e o seu PR propõe consertar isso.

Uma coisa para se atentar é ao custo de redesenhar a interface, que até onde sei é alto, seria 60Hz muito? Que tal 30Hz?

Na minha opinião, não é interessante definir uma taxa de atualização específica para o LAD, em vez disso, acho que seria mais interessante receber uma taxa de atualização via variável de ambiente, e seria opcional, tendo como padrão 30Hz.

@emelcher o que você acha?

Icaro-Lima avatar Sep 28 '21 18:09 Icaro-Lima

Agora falando sobre o README.md, acho que você fez outras alterações fora a adição do novo texto. Você poderia reverter essas outras e deixar apenas a sua mudança? O mesmo vale para uma linha que você adicionou no remote.cpp.

Se você achar necessário, pode abrir outro PR no futuro tratando especificamente disso.

Icaro-Lima avatar Sep 28 '21 18:09 Icaro-Lima

Ótima sugestão @Icaro-Lima ! O usuário pode modificar a taxa de quadros e fazer uso correto disso de acordo com o monitor que possui. :) Adicionei a possibilidade de configurar a taxa de quadros a partir de uma variável de ambiente chamada FPGA_FRAMERATE.

  • O nome da variável está adequada? Ou deve-se utilizar algum nome, talvez mais específico? Se já existia um padrão de nomeação das variáveis de ambiente do simulador, infelizmente não encontrei e tentei criar um nome adequado.

Sobre as alterações no README, indiquei que a taxa de atualização padrão é de 30 FPS e adicionei as instruções para a sua modificação. Mais alguma sugestão? (As outras alterações dos commits anteriores eram apenas de formatação automática)

davigps avatar Oct 02 '21 20:10 davigps

Demorei para fazer um primeiro teste: Computestick Atom(TM) x5-Z8330 CPU @ 1.44GHz com taxa de atualização de 59.94 Hz simulando clk_2 de 500 Hz para série de Leibniz PIPELINING=16; PARALELO=6; HDIGS_FRAC=15; chegou a somente 30% de uso de CPU. Ainda irei testar em outros computadores fracos, mas a ideia de aumentar a taxa de atualização conforme proposto é valida.

emelcher avatar Oct 26 '21 14:10 emelcher