En primer lugar, no estoy seguro de si este es el lugar adecuado para hacer esta pregunta o no. Fue aquí o en el sitio de intercambio de pila de Ciencias de la Computación, pero pensé que tal vez sería mejor publicarlo aquí, ya que parece una pregunta de menor nivel más sobre el diseño de circuitos que cualquier otra cosa.
Mi pregunta es acerca de dos cosas diferentes, el protocolo PS / 2 y la comunicación de dispositivo a host, y las interrupciones de la CPU relacionadas con la entrada PS / 2.
Solo he estado aprendiendo sobre electrónica y arquitectura de computadoras por unas semanas, así que tal vez me esté perdiendo algo obvio, pero me cuesta entender cómo saber cuándo se ha enviado un código de escaneo un teclado a una computadora y cómo tratar con la entrada después de que se haya enviado.
Lo que quiero decir con eso es que creo que entiendo el protocolo en papel, pero no estoy seguro de cómo se construiría como un circuito real.
Por lo que he aprendido hasta ahora, y por lo que entiendo por el protocolo, creo que debería poder simplemente conectar los cables VCC
, GND
, Clock
y Data
hasta un registro de cambios de algún tipo (SIPO?) y simplemente lea los datos de entrada del registro de cambios.
Si este es el caso, ¿cómo puedo saber si la entrada realmente llegó completamente al registro de desplazamiento? ¿Es suficiente simplemente conectar las salidas del registro de desplazamiento hasta un poco más de circuitos que verifiquen los bits start
, stop
y parity
?
Esto lleva a mi segunda pregunta acerca de las interrupciones de la CPU. Cuando he verificado que realmente tengo un código de escaneo completo desde el teclado, no estoy seguro de qué debo hacer con esa entrada cuando se trata de interrupciones de CPU.
Lo que quiero decir con eso es, ¿debo copiar los datos que se encuentran en el registro de turnos a RAM en algún lugar? ¿O debería la CPU simplemente acceder a los datos directamente en el registro de desplazamiento?
La razón por la que pregunto esto es porque no estoy seguro de si es posible que el registro de desplazamiento haya sido sobrescrito con algunos otros datos mientras la CPU está tratando de manejar la interrupción. Si esa es una posibilidad, entonces pensé que intentar copiar los datos en un lugar como RAM sería más seguro que intentar que la CPU solo leyera cada código de escaneo directamente / indirectamente del registro de desplazamiento.
Además, dado que algunos códigos de escaneo están formados por más de un byte de datos, no estoy seguro de que la lectura directa desde el registro de desplazamiento sea la forma correcta de hacerlo en primer lugar.
He intentado buscar información acerca de esto en Google, pero casi siempre obtengo resultados para los adaptadores PS / 2 o PlayStation 2, etc., por lo que, si alguien tiene alguna información sobre cómo tratar los datos de un PS / 2 teclado sería muy apreciado.