Skip to content

Aumentar a quantidade de atualizações da GUI#7

Open
davigps wants to merge 7 commits into
Icaro-Lima:masterfrom
davigps:feature/improve-local-frame-rate
Open

Aumentar a quantidade de atualizações da GUI#7
davigps wants to merge 7 commits into
Icaro-Lima:masterfrom
davigps:feature/improve-local-frame-rate

Conversation

@davigps

@davigps davigps commented Sep 23, 2021

Copy link
Copy Markdown

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.

@Icaro-Lima

Icaro-Lima commented Sep 28, 2021

Copy link
Copy Markdown
Owner

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

Copy link
Copy Markdown
Owner

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.

@davigps

davigps commented Oct 2, 2021

Copy link
Copy Markdown
Author

Ó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)

@emelcher

Copy link
Copy Markdown
Collaborator

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants