VGA char feedback from PS/2 keyboard input in VHDL

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