Pulsadores, teclados y ratones - Universidad Complutense de Madrid

Anuncio
1
tema 6: pulsadores, teclados, ratones
Diseñ
Diseño Automá
Automático de Sistemas
José
José Manuel Mendí
Mendías Cuadros
Dpto. Arquitectura de Computadores y Automá
Automática
Universidad Complutense de Madrid
2
interruptores y pulsadores
⌦ La lectura del estado de un interruptor mecánico por parte de un sistema digital (lo
suficientemente rápido) presenta dos problemas:
Asincronismo: el cambio de estado del interruptor puede ocurrir en cualquier momento,
pudiento llevar al sistema a un estado metaestable.
Presencia de rebotes: cuando el estado del interruptor cambia, la señal presenta un
vaiven transitorio.
rebote de
depresión
© J.M. Mendías, 2001
rebote de
presión
+5V
pulsadores
0.3 ms
switches
50 ms
~ µs
x
Debouncer
Synchronizer
10KΩ
xDeb
x
xDeb
diseñ
diseño automá
automático de sistemas
100 ms (min)
0.1 ms
0.5 ms
3
eliminador de rebotes
Debouncer
x
xDeb
x
clk
rst
no x
esperaPresion
timerEnd
startTimer
© J.M. Mendías, 2001
no timerEnd
no timerEnd
esperaFinReboteP
esperaFinReboteD
xDeb*
x
esperaDepresion
startTimer
puertos:
x : in : 1 bit : log. negativa
timerEnd : in : 1 bit : lógica positiva
xDeb : out : 1 bit : log. negativa := 1
startTimer : out : 1 bit : log. positiva := 0
estado inicial: esperaPresion
timerEnd
xDeb*
no x
CONT 0-N
startTimer
timer
timerEnd
diseñ
diseño automá
automático de sistemas
4
keypads
⌦ Un teclado es una colección de pulsadores cuyo estado puede ser conocido
individualmente
⌦ La configuraciones mas comunes son:
pulsador
S0
S1
Sn
poner a 0 todas las columnas
esperar a que alguna fila valga 0
Vcc
R0
Vcc
R1
esperar fin de rebotes
poner a 0 una única columna
dejando el resto a 1
Vcc
Rm
vale 0 la fila
NO
SI
teclado maticial
diseñ
diseño automá
automático de sistemas
generar el código de tecla
Algoritmo de detección de pulsaciones
en un teclado matricial
© J.M. Mendías, 2001
teclados lineales: cada pulsador tiene una línea dedicada para conocer su estado
teclados matriciales: los pulsadores se disponen en filas y columnas, de manera que los
pulsadores de la misma fila compartan la línea que permite conocer su estado
5
interfaz de keypad (i)
S
R
0111
0111
0111
0111
0XXX
10XX
110X
1110
0001
0100
0111
1110
1011
1011
1011
1011
0XXX
10XX
110X
1110
0010
0101
1000
0000
1101
1101
1101
1101
0XXX
10XX
110X
1110
0011
0110
1001
1111
1110
1110
1110
1110
0XXX
10XX
110X
1110
1010
1011
1100
1101
timer
startTimer
timerEnd
xSync
scaner
S
x
1 2 3 A
+5V
*
4 5 6 B
synchronizer
+5V
+5V
+5V
R
7 8 9 C
keypad
0 # D
4
ldCode
© J.M. Mendías, 2001
10KΩ
4
resto resto
R
LC
4
S
4
codeReg
encoder
S
XXXX
4
4
keyCode
keyCode
keyPressed
ldCode
diseñ
diseño automá
automático de sistemas
6
interfaz de keypad (ii)
xSync
© J.M. Mendías, 2001
puertos:
x : in : 1 bit : log. negativa
xSync : in : 1 bit : log. negativa
timerEnd : in : 1 bit : lógica positiva
startTimer : out : 1 bit : log. positiva := 0
ketPressed : out : 1 bit : log. positiva := 0
S : out : 4 bits := “0000”
estado inicial: esperaPresion
xSync*
esperaPresión
startTimer
S ← “0000”
timerEnd*
timerEnd
esperaFinReboteD
esperaFinReboteP
S ← “0000”
S ← “0000”
xSync*
x
timerEnd*
xSync
startTimer
esperaDepresión
timerEnd
x*
ldCode
S ← “0000”
keyPressed
x*
x*
ldCode
scanCol1
S ← “0111”
x*
ldCode
x
ldCode
scanCol4
S ← “1110”
scanCol3
x
diseñ
diseño automá
automático de sistemas
S ← “1101”
scanCol2
x
S ← “1011”
7
interfaz de keypad (iii)
⌦ El interfaz descrito funciona correctamente cuando se pulsa una sola tecla:
Si se pulsan varias teclas de la misma fila, reconoce la ubicada más a la izquierda
Si se pulsan varias teclas de la misma columna, reconoce la ubicada más arriba.
© J.M. Mendías, 2001
⌦ No obstante, puede darse el caso de que dos o más teclas estén pulsadas
simultáneamente porque
Se pulsen conscientemente (caso de teclas como SHIFT, ALT, etc)
Se esté tecleando muy rápidamente
⌦ La capacidad de detectar más de una pulsación simultánea se llama key roll-over:
Por ejempo, un controlador capaz de detectar una segunda tecla pulsada cuando aún no
se ha levantado la primera se dice que tiene 2 key roll-over.
Requisitos:
Una cola de registros de códigos (codeReg)
Un codificador completo de códigos de scan y retorno.
Una máquina de estados que cheque todas las filas.
La espera de presiones y depresiones individualizadas
diseñ
diseño automá
automático de sistemas
8
teclados y ratones PS/2 (i)
© J.M. Mendías, 2001
⌦ Un teclado o ratón tipo AT-PS/2 utiliza para comunicarse con un sistema un
protocolo bidireccional serie síncrono de 11 bits
usa dos lineas a colector abierto con resitencias de pullup TTL +5V (por defecto en ALTA):
CLK, para transmitir el reloj de sincronización
DATA, para transmitir los datos serie
el reloj siempre debe ser generado por el dispositivo
con una frecuencia entre 10 y 30 KHz.
aunque puede ser forzado a BAJA por el sistema.
los datos pueden ser generados por el dispositivo o por el sistema
el formato de datos es: 1 bit de start (0), 8 bits de datos (primero LSB), 1 bit paridad impar,
1 bit de stop (1)
5 Pin DIN
1. KBD Clock
2. KBD Data
3. N/C
4. GND
5. +5V (VCC)
diseñ
diseño automá
automático de sistemas
PS/2
1. KBD Clock
2. GND
3. KBD Data
4. N/C
5. +5V (VCC)
6. N/C
9
teclados y ratones PS/2 (ii)
Transmisión de dispositivo a sistema: transmisión de datos
⌦ El dispositivo inicia una transmisión cuando
ha sucedido un evento en el periférico o ha recibido una solicitud del sistema
comprueba que CLK y DATA estan en ALTA
© J.M. Mendías, 2001
⌦ Una vez iniciada la trensferencia, el sistema
debe muestrear la señal de DATA a flancos de bajada de CLK.
puede abortarla antes del 10º ciclo fijando CLK a BAJA, típicamente el dispositivo chequea
cada 100 ms la señal de CLK
la retransmisión de un dato abortado debe ser solicitada por el sistema
⌦ El sistema puede inhabilitar las transmisiones fijando CLK a BAJA, en cuyo caso los
datos se almacenan temporalmente en el dispositivo.
⌦ Si el sistema además fija DATA a BAJA indica al dispositivo su intención de enviarle
información.
diseñ
diseño automá
automático de sistemas
10
teclados y ratones PS/2 (iii)
Transmisión de dispositivo a sistema: teclado
⌦ Cada vez que se pulsa una tecla, el dispositivo envía de 3 a n códigos:
Scancodes de presión: indicando el momento y la tecla pulsada, si la tecla permanece
pulsada el teclado reenvía el código periódicamente (intervalo programable).
Código de depresión (F0): indicando el momento en que se ha dejado de pulsar una tecla.
Scancodes de depresión: indicando la tecla que se ha dejado de pulsar.
© J.M. Mendías, 2001
⌦ Los scancodes compuestos y el código de depresión junto con los scancodes
correspondientes se envían en ráfaga.
PS2 scancodes
diseñ
diseño automá
automático de sistemas
11
teclados y ratones PS/2 (iv)
Transmisión de dispositivo a sistema: ratón
© J.M. Mendías, 2001
⌦ Cada vez que se mueve el ratón o cambia el estado de los pulsadores, el dispositivo
envía una ráfaga de 3 códigos:
Información de estado del ratón
bit 0, overflow vertical
bit 1, overflow horizontal
bit 2, sentido vertical (0 positivo, 1 negativo)
bit 3, sentido horizontal (0 positivo, 1 negativo)
bit 4, 5, “10”
bit 6, estado pulsador derecho (1 pulsado)
bit 7, estado pulsador izquierdo (1 pulsado)
Información de desplazamiento horizontal
8 bits indicando su magnitud (primero el MSB)
Información de desplazamiento vertical
8 bits indicando su magnitud (primero el MSB)
diseñ
diseño automá
automático de sistemas
12
teclados y ratones PS/2 (v)
Transmisión de sistema a dispositivo: transmisión de comandos
⌦ El sistema puede iniciar una transmisión hacia el dispositivo fijando DATA a baja
© J.M. Mendías, 2001
sin embargo para evitar evitar colisiones con los posibles datos en transmisión es
conveniente fijar primero CLK a BAJA durante al menos 60 μs y no después del 10º ciclo.
estando DATA a BAJA y tras poner CLK a ALTA, el dispositivo comienzará a generar la
señal de reloj antes de 10 ms, provocando el primer flanco de bajada
⌦ El dispositivo muestrea la señal DATA a cada flanco de bajada, por lo que el
sistema debe poner un nuevo bit cuando CLK está en ALTA, que debe estar estable
1μs después del flanco de subida.
tras mandar el bit de paridad, el sistema debe liberar la línea de datos, (que subirá a ALTA,
bit de stop), si no lo hace el interfaz sigue mandando pulsos por CLK
⌦ El interfaz reconoce la recepción de datos poniendo la línea de DATA a BAJA
durante el 11º ciclo
diseñ
diseño automá
automático de sistemas
13
teclados y ratones PS/2 (vi)
Transmisión de sistema a dispositivo: códigos
⌦ Comandos más interesantes:
Set/reset indicadores de estado (ED), controla los LEDs de estado del teclado, responde
con ACK y espera el byte de estado: (b0,b1,b2,0,0,0,0,0) donde b0 scrollLock, b1,
NumLock, b2 CapsLock, mandando un 1 cambia el indicador.
Disable (F5), resetea teclado, suspende escaneado, devuelve ACK
© J.M. Mendías, 2001
Echo (EE), solicita que el dispositivo reponda con ECHO
Enable (F4), borra buffer, devuelve ACK
Resend (FE), solicita la retransmisión del último scancode
Reset (FF), resetea el dispositivo, inicia power-on test, responde con el power-on byte
Intervalo/retardo de autorepetición (F3), responde con ACK y espera con un byte de b6b7 (00=250 ms, 11=1000ms), b4..b0 (00000=30x/s, 11111=2x/s), vuelve a responder con
ACK.
⌦ Códigos de respuesta del dispositivo:
ACK (FA), respuesta a algunos comandos
power-on satisfactorio (AA)
ECHO (EE)
Resend (FE), el dispositivo solicita el reenvío del comando
Error (00 ó FF), error o desbordamiento del buffer
diseñ
diseño automá
automático de sistemas
14
interfaz de teclado PS2 (i)
80 µs
10 - 20 KHz
data0
start
data1
data2
data3
data4
data5
data6
data7
paridad
impar
stop
© J.M. Mendías, 2001
20 µs
15 µs
presión
scancode
F0
scancode
100 ms
ps2Clk
coste para XC4010XL
data
Interfaz de PS2
newData
newDataAck
clk
rst
diseñ
diseño automá
automático de sistemas
scancode
100 ms
8
ps2Data
depresión
10 CLBs
24 FF (9 en IOBs)
17 LUTs de 4 entradas
2 LUTs de 3 entradas
15
interfaz de teclado PS2 (ii)
ps2Clk
synchronizer
edgeDetector
samplePs2Data
© J.M. Mendías, 2001
SHIFTER
shtPs2Data
clearPs2Data
ps2DataReg
ps2Data
11
LC
goodParity
lastBitRcv
8
validData
ldData
DataReg
data
diseñ
diseño automá
automático de sistemas
16
interfaz de teclado PS2 (iii)
clk
x
tipo Moore
(2 biestables)
xFallingEdge
© J.M. Mendías, 2001
xRisingEdge
x
tipo Mealy
(1 biestable)
xFallingEdge
Det. flancos
xRisingEdge
xFallingEdge
clk
rst
rst
x
D
Q
D
Q
tipo Moore
clk
xRisingEdge
diseñ
diseño automá
automático de sistemas
17
interfaz de teclado PS2 (iv)
no dataValid
retrasan el flanco 4 ciclos = 320 ns << 20 µs
© J.M. Mendías, 2001
ps2Clk
synchronizer
edgeDetector
SHIFTER
ps2DataReg
ps2Data
esperandoDatos
validData
newDataAck
ldData
esperandoAck
newData
11
no newDataAck
LC
validData
8
ldData
dataReg
data
diseñ
diseño automá
automático de sistemas
Descargar