Neste projecto implementei a alimentação da memória de video caracteres com o input de um teclado ps2.
Já tinha experimentado o processo de leitura do teclado implementado pelo fsmiamoto. Mas este processo apenas recebe os códigos PS/2 das teclas.
Para os exibir no monitor é necessário efectuar a sua tradução em códigos ascii.
Sobre o assunto encontrei documentação e um exemplo funcional no seguinte endereço.
https://forum.digikey.com/t/ps-2-keyboard-to-ascii-converter-vhdl/12616
Neste exemplo estava também um descodificador para o teclado ps2, não usei na implementação final.
Pelo que percebi, as duas implementações, falham em baixar o sinal do novo caracter disponivel, mantendo sempre o bit alto, assim com mantém no registo o caracter antigo, pelo que sobrevivem a um reset.
De qualquer forma a interface ficou funcional, apesar de algumas limitações, já que ao usar um contador para a próxima posição dos caracteres, as posiçoes extra são também consideradas e por isso um elevado numero de caracteres não são exibidos por estarem num coluna inacessivel.
Este assunto será resolvido noutro projecto que envolva a estrita na memoria de video, e o faça de forma posicional.
Outro problema é a conversão do ps2 keycode para ascii, resultar de um consumo de recursos elevado. conforme exibido abaixo.
Elementos lógicos: 843 / 6,272 ( 13 % )
Abaixo está uma figura da netlist do projecto. De notar que no topo superior direito estão os componentes destinados a exibir os codigos ps2 e ascii da ultima tecla nos visores hexadecimais, e portanto são um extra.
No entanto não são complexos e por isso não são o principal responsavel pelo crescimento dos recursos necessários.
A figura acima, está em fundo azul o componente requerido para a tradução de ps2 code para ascii.
É este bloco que suponho estar a ocupar muitos recursos, e por isso gostava de encontrar uma alternativa, que não envolvesse um sistema digital dedicado para a conversão.
A ideia seria usar um cpu simples que permitisse ler o teclado, traduzir e colocar na localização desejada, com um cursor piscante a indicar o local de insersão dos caracteres.
Os ficheiros VHDL estão disponiveis no seguinte link
https://github.com/inaciose/RZ-easyFPGA-A2.2/tree/main/VGACharGenWithPs2