Story Transcript
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