Vous êtes sur la page 1sur 52

Receptor asncrono universal y el transmisor (UART) es un circuito que enva

datos en paralelo a travs de una lnea serie. UARTs se utilizan con frecuencia
en combinacin con el EIA (ElectronicIndustries Alliance) estndar RS-232, que
especifica el funcionamiento elctrico, mecnico,,y las caractersticas de
procedimiento del equipo de comunicacin de dos datos. Debido a que el
voltaje nivel definido en la RS-232 es diferente de la de FPGA I / O, un chip
convertidor de voltaje esnecesario entre un puerto serie y pasadores Iio de un
FF'GA.La junta S3 tiene un puerto RS-232 con el conector de nueve pines
estndar. La junta contieneel chip convertidor de voltaje necesario y configura
las distintas RS-232 seales de control depara generar automticamente el
reconocimiento para el puerto serie del PC. Un straightthrough estndarcable
serie se puede utilizar para conectar la placa S3 y el puerto serie del PC. La
junta S3bsicamente se encarga de la RS-232 estndar y slo tenemos que
concentrarnos en el diseo de laCircuito UART.Un UART incluye un transmisor
y un receptor. El transmisor es esencialmente una especialregistro de
desplazamiento que carga datos en paralelo y se desplaza hacia fuera poco a
poco a una velocidad especfica. losreceptor, por otra parte, los cambios en bit
de datos a poco y luego vuelve a montar los datos. La serielnea es '1' cuando
est inactivo. La transmisin comienza con un bit de inicio, que es 'O', seguido
porbits de datos y un bit de paridad opcional, y termina con bits de parada,
que se '1'. el nmero debits de datos pueden ser 6,7, u 8. El bit de paridad
opcional se utiliza para la deteccin de error. Para paridad impar,se pone a '0'
cuando los bits de datos tienen un nmero impar de 1 de. Para paridad par, se
pone a '0'cuando los bits de datos tienen un nmero par de 1 de. El nmero
de bits de parada puede ser de 1, 1,5 o 2.

La transmisin de 8 bits de datos, sin paridad y 1 bit de parada se muestra en


la Figura 7.1. Tenga en cuenta que el LSB de la palabra de datos se transmite
primero. No hay informacin del reloj se transmite a travs de la lnea serie.
Antes de la transmisin se inicia, el transmisor y el receptor deben estar de
acuerdo en un conjunto de parmetros de antemano, lo que incluye la
velocidad de transmisin (es decir, el nmero de bits por segundo), el nmero
de bits de datos y bits de parada, y el uso de el bit de paridad. Las
velocidades de transmisin utilizados son 2400,4800,9600 y 19.200 baudios.
Se ilustra el diseo de la recepcin y transmisin de subsistemas en la
siguiente secciones. El diseo es personalizado para una UART con 19.200
baudios, 8 bits de datos, 1 parada poco, y ningn bit de paridad.
7.2 UART SUBSISTEMA RECEPTOR
Puesto que ninguna informacin de reloj es transportado desde la seal
transmitida, el receptor puede recuperar
los bits de datos solamente utilizando los parmetros predeterminados.
Utilizamos un sistema de sobremuestreo
para estimar los puntos medios de los bits transmitidos y luego recuperarlos
en estos puntos
en consecuencia.

7.2.1 procedimiento de sobremuestreo


La frecuencia de muestreo ms utilizado es 16 veces la velocidad de
transmisin, lo que significa que cada de bits en serie se muestrea 16 veces.
Suponga que la comunicacin utiliza bits de datos N y M bits de parada. El
esquema de sobremuestreo funciona como sigue:

Espere hasta que la seal de entrada se convierte en 'O', el comienzo


del bit de inicio, y luego iniciar el contador de paso de muestreo.
Cuando el contador llega a 7, la seal de entrada alcanza el punto
medio de la inicio
poco. Borrar el contador a 0 y reinicie.
Cuando el contador alcanza 15, la seal entrante progresa para un bit y
alcances
el medio de la primera bit de datos. Recuperar su valor, cambiar en un
registro, y el reinicio el contador.
Paso 3 N-1 ms veces de repeticin para recuperar los bits de datos
restantes.
Si se utiliza el bit de paridad opcional, repita el paso 3 una vez para
obtener el bit de paridad.
Repita el paso 3 M veces ms para obtener los bits de parada.

El esquema de sobremuestreo bsicamente realiza la funcin de una seal de


reloj. En lugar de usando el flanco de subida para indicar cuando la seal de
entrada es vlida, utiliza el muestreo a garrapatas estimar el punto medio de
cada bit. Mientras que el receptor no tiene informacin sobre la exacta tiempo
de comienzo del bit de inicio, la estimacin puede ser apagado por como
mximo y. El bit de datos subsiguiente recuperaciones estn desactivados de
como mximo desde el punto medio tambin. Debido a la sobremuestreo, la
velocidad de transmisin slo puede ser una pequea fraccin de la tasa de
reloj del sistema, y por lo tanto este esquema es no es apropiado para una
alta velocidad de datos.

El diagrama de bloques conceptual de un UART recibir subsistema se muestra


en la Figura 7.2.It consta de tres componentes principales:
Receptor UART: el circuito para obtener la palabra de datos a travs de
sobremuestreo

generador de velocidad de transmisin: el circuito para generar la toma


de muestras garrapatas
Znterjiace circuito: el circuito que proporciona amortiguacin y el
estado entre el receptor UART y el sistema que utiliza el UART

7.2.2 generador de velocidad de transmisin


El generador de velocidad de transmisin genera una seal de muestreo cuya
frecuencia es exactamente 16 vecesvelocidad de transmisin designado de la
UART. Para evitar la creacin de un nuevo dominio de reloj y la violacin de

laprincipio de diseo sncrono, la seal de muestreo debe funcionar como


permitir a las garrapatas en lugarque la seal de reloj al receptor UART, como
se discute en la Seccin 4.3.2.Para la velocidad en baudios 19200, la tasa de
muestreo tiene que ser 307 200 (es decir, 19 200 * 16) por
garrapatassegundo. Dado que la frecuencia de reloj del sistema es de 50 MHz,
el generador de velocidad de transmisin necesita un mod-I63(es decir, a;: $:)
-, contador, en el que la garrapata de un solo ciclo de reloj-se afirma una vez
cada 163 relojciclos. El parametrizada mod-m contador discute en la Seccin
4.3.2 se puede utilizar para este propsito estableciendo el M genrica a 163.
7.2.3 UART receiver

Con una comprensin del procedimiento de sobremuestreo, podemos derivar


la tabla ASMD en consecuencia, como se muestra en la Figura 7.3. Para dar
cabida a la modificacin futura, dos constantesse utilizan en la descripcin. La
constante D-BIT indica el nmero de bits de datos, y de laConstante SB-TICK
indica el nmero de garrapatas necesarios para los bits de parada, que es 16,
24,y 32 por 1, 1.5 y 2 bits de parada, respectivamente. DBIT y SB-TICK se
asignan a 8 y16 en este diseo.El grfico sigue los pasos discutidos en la
Seccin 7.2.1 e incluye tres estados principales,iniciar, datos, y detener, que
representan el procesamiento del bit de inicio, bits de datos, y detener poco.
La s - seal de garrapata es la garrapata habilitacin del generador de
velocidad de transmisin y hay 16 bits en un intervalo de bit. Tenga en cuenta
que la FSMD permanece en el mismo estado a menos que los s - seal de bit
es aseverado. Hay dos contadores, representados por las S y N registros. El
registro mantiene es un registro del nmero de garrapatas y los recuentos de
muestreo a 7 en el estado de inicio, a 15 en los datos de estado, y SB-TICK en
el s t o p estatal. El registro n mantiene un registro de la cantidad de datoslos
bits recibidos en el estado de datos. Los bits recuperados se desplazan hacia y
vuelven a montar en el b

registro. Una seal de estado, rx-hecho-tick, est incluido. Se afirma por un


ciclo de reloj despus se completa el proceso de recepcin. El cdigo
correspondiente se muestra en el listado 7.1.
7.2.4 Circuito de interfaz
En un sistema grande, un UART es por lo general un circuito perifrico para la
transferencia de datos en serie. los principal sistema comprueba su estado
peridicamente para recuperar y procesar la palabra recibida. los circuito de
interfaz de receptor tiene dos funciones. Primero, proporciona un mecanismo
para sealar la disponibilidad de una nueva palabra y para evitar la palabra
recibida de ser recuperado mltiple veces. En segundo lugar, puede

proporcionar espacio de amortiguacin entre el receptor y el sistema


principal. Ya est son tres esquemas de uso comn:

A flag FF
Un FF bandera y una sola palabra
Un buffer FIFO

Tenga en cuenta que el receptor UART afirma la seal rx-listo-tick un ciclo de


reloj despus de un datose recibi la noticia.El primer esquema utiliza FF ajag
hacer un seguimiento de si una nueva palabra de datos est disponible.El FF
tiene dos seales de entrada. Una de ellas es la configuracin f lag, que
establece el FF bandera para 'l', y el otroes clr-f lag, que despeja el FF bandera
a '0'. La seal rx-listo-tick est conectado ala seal de puesta en bandera y
establece el indicador cuando llega una nueva palabra de datos. El sistema
principalcomprueba la salida del FF bandera para ver si una nueva palabra de
datos est disponible. Afirma elclr-f seal de desfase de un ciclo de reloj
despus de recuperar la palabra. El diagrama de bloques de nivel superior
esmuestra en la Figura 7.4 (a). Para ser coherente con otros esquemas, la
salida del FF bandera es invertidapara generar la seal-rx vaco final, que
indica que no hay palabra nueva est disponible. Eneste esquema, el sistema
principal recupera la palabra de datos directamente desde el registro de
desplazamiento delReceptor UART y no proporciona ningn espacio de
amortiguacin adicional. Si el sistema remotoinicia una nueva transmisin
antes de que el sistema principal consume la palabra de datos de edad (es
decir, labandera FF todava se afirma), la palabra antigua ser sobrescrita, un
error conocido como datos invadido.Para proporcionar cierta proteccin, un
tampn de una palabra puede ser aadido, como se muestra en la figura 7.4
(b).Cuando se afirma la seal rx-listo-tick, la palabra recibida se carga en la
memoria intermediay el FF indicador se establece tambin. El receptor puede
continuar la operacin sin destruirel contenido de la ltima palabra recibida.
Rebasamiento de datos no se producir siempre que el principalsistema
recupera la palabra antes de que llegue una nueva palabra. El cdigo de este
sistema se muestra enListado 7.2.

El tercer esquema utiliza un bfer FIFO discute en la Seccin 4.5.3. El buffer


FIFO ofrece ms espacio de memoria intermedia y reduce an ms el riesgo
de rebasamiento de datos. Podemos ajustar el nmero deseado de palabras
FIFO para dar cabida a la necesidad de procesamiento del sistema principal. El
diagrama de bloques detallado se muestra en la Figura 7.4 (c). La seal RXlisto-tick est conectado a la seal de wr del FIFO. Cuando un nuevo datos se
recibi la noticia, la seal wr se afirma un ciclo de reloj y los datos
correspondiente es por escrito a la FIFO. El principal sistema obtiene los datos
desde el puerto de lectura de FIFO. Despus de recuperar una palabra, se
afirma la seal rd del ciclo de reloj FIFO retirar el correspondiente tem. La
seal vaca de la FIFO se puede utilizar para indicar si una palabra de datos
recibida est disponible. Un error de datos-invadido ocurre cuando llega una
nueva palabra de datos y el FIFO est lleno.

7.3 UART SUBSISTEMA de TRANSMISIN


La organizacin de un subsistema de transmisin UART es similar a la de la
receptorasubsistema. Se compone de un transmisor UART, generador de
velocidad de transmisin, y el circuito de interfaz.El circuito de interfaz es
similar a la del subsistema de recepcin excepto que el sistema

principalestablece el FF pabelln o escribe el buffer FIFO, y el transmisor UART


despeja el FF pabelln ose lee en la memoria intermedia FIFO.El transmisor
UART es esencialmente un registro de desplazamiento que desplaza fuera bits
de datos en una especficala tasa. La tasa puede ser controlada por un ciclo
de habilitacin de reloj garrapatas generados por el baudiosgenerador de
tasa. Debido a que no est involucrado sobremuestreo, la frecuencia de las
garrapatas es 16 vecesms lenta que la del receptor UART. En lugar de
introducir un nuevo contador, el UARTtransmisor generalmente comparte el
generador de velocidad de transmisin del receptor UART y utiliza un
internocontrarrestar para realizar un seguimiento del nmero de permitir
garrapatas. Un poco se desplaza fuera cada 16 permitengarrapatas.El grfico
ASMD del transmisor UART es similar a la del receptor UART.Despus de la
afirmacin del tx - seal de inicio, la FSMD carga la palabra de datos y luego,
gradualmente,progresa en el inicio, los datos y dejar de estados para cambiar
los bits correspondientes.Seala la finalizacin afirmando la seal tx-hechotick para un ciclo de reloj. A 1 bitbuffer, tx-reg, se usa para filtrar cualquier
fallo potencial. Se muestra el cdigo correspondienteen el listado 1.3.

7.4 SISTEMA UART GENERAL


7.4.1 Ncleo Completo UART
Mediante la combinacin de la recepcin y la transmisin de los subsistemas,
podemos construir el ncleo UART completa. El diagrama de nivel superior se
muestra en la Figura 7.5. El diagrama de bloques puede ser descrito por la
instanciacin de componentes, y el cdigo correspondiente se muestra en el
Listado 7.4.

En el archivo de origen PicoBlaze (discutido en el Captulo 14), Xilinx


proporciona un mdulo UART personalizado con una funcionalidad similar. A
diferencia de nuestra aplicacin, el mdulo se describe el uso de primitivas
Xilinx de bajo nivel. Se puede considerar como una descripcin a nivel de
puerta que utiliza componentes de Xilinx-especficos. Desde el diseador tiene
el conocimiento experto de los dispositivos de Xilinx y se aprovecha de su
arquitectura, su aplicacin es ms eficiente que el nivel RT descripcin
independiente del dispositivo genrico de este captulo. Es instructivo
comparar la complejidad del cdigo y el tamao del circuito de las dos
descripciones.

7.4.2 Configuracin de la verificacin UART


Circuito de Verificacin Utilizamos un circuito de bucle de retorno y un PC
para verificar el funcionamiento UART.
El diagrama de bloques se muestra en la Figura 7.6. En el circuito, el puerto
serie de la placa S3 se conecta al puerto serie de un PC. Cuando enviamos un
caracter desde la PC, la palabra de datos recibidos se almacena en cuatro
palabras bfer FIFO del receptor UART. Cuando recupera (a travs del puerto
r_data), la palabra de datos se incrementa en 1 y luego enva de vuelta al
transmisor (a travs del puerto w_data). El interruptor pulsador proteccin
antirrebote produce un solo tic-ciclo de un reloj cuando se pulsa y se conecta
a las seales rd_uart y wr_uart. Cuando el instante es generado, elimina una
palabra de FIFO del receptor y escribe la palabra incrementado a FIFO del
transmisor para la transmisin. Por ejemplo, lo primero que podemos escribir
HAL en el PC y las tres palabras de datos se almacenan en el buffer FIFO del
receptor UART. Entonces podemos pulsar el botn de la placa S3 tres veces.
Los tres caracteres sucesivos, IBM, se transmitirn vuelta y se muestran. El
puerto r_data de UART tambin est conectado a los ocho LEDs de la placa
S3, y sus seales tx_full y rx_empty estn conectados a las dos barras
horizontales del dgito de la derecha de la pantalla de siete segmentos. El
cdigo se muestra en la
Listado 7.5.

HyperTerminal de Windows. Por el lado de la PC, el programa


HyperTerminal de Windows se puede utilizar como un terminal virtual para
interactuar con el tablero S3. Para ser compatible con nuestro UART
personalizado, tiene que configurarse como 19.200 baudios, 8 bits de datos, 1
bit de parada y sin bit de paridad. El procedimiento bsico es:
1. Seleccione: Inicio / Programas / Accesorios / Comunicaciones /
HyperTerminal. Aparece el dilogo HyperTerminal.
2. Escriba un nombre para esta conexin, por ejemplo FPGA-192. Haga clic
en Aceptar. Esta conexin se puede guardar y volver a parecer despus.
3. Aparece un cuadro de dilogo. Pulse el campo Utilizando Conexin y
seleccione el puerto serie que desee (por ejemplo, COM1). Haga clic en
Aceptar.
4. Aparece el cuadro de dilogo Configuracin de puerto. Configure el
puerto de la siguiente manera:
Bits por segundo: 19200
Bits de datos: 8
Paridad: Ninguno
Bits de parada: 1
Control de flujo: Ninguno
Haga clic en Aceptar.
5. Seleccione: Archivo / Propiedades / Configuracin. Haga clic en
Configuracin ASCII y compruebe el eco de caracteres escritos
localmente. Haga clic en Aceptar dos veces. Esto permitir que los
caracteres escritos se muestren en la pantalla.
El programa HyperTerminal est configurado y listo para comunicarse con la
junta S3. Podemos escribir unas cuantas teclas y observar los indicadores LED
de la placa S3. Tenga en cuenta que las palabras recibidas se almacenan en la
memoria intermedia FIFO y slo se muestra la primera palabra de datos
recibida. Despus pulsamos el botn, la primera palabra de datos se
eliminarn de la FIFO y el incremento de palabra ser devuelto de regreso al
puerto serie de la PC y se mostrar en la ventana del HyperTerminal. El estado
de lleno y vaco de los respectivos buffers FIFO puede ser probada por recibir
consecuentemente y transmitir ms de cuatro palabras de datos.

Cdigo ASCII. En HyperTerminal, los caracteres se envan en cdigo ASCII,


que es 7 bits y consta de 128 palabras de cdigo, incluyendo alfabetos
regulares, dgitos, smbolos de puntuacin y caracteres de control no
imprimibles. Los caracteres y sus palabras de cdigo (en formato
hexadecimal) se muestran en la Tabla 7.1. Los caracteres no imprimibles se
muestran entre parntesis, como (del). Varios caracteres no imprimibles
pueden introducir acciones especiales cuando reciben:

(nul): byte nulo, que es el patrn de ceros


(bel): genera un sonido de campana, si es que se admite
(bs): Retroceso
(ht): tabulador horizontal
(nl): nueva lnea
(vt): tabulador vertical
(np): nueva pgina
(cr): retorno de carro
(esc): escapar
(sp): espacio

(del): borrar, que tambin es un patrn para todos

Desde que usamos el puerto serie del PC para comunicarse con la junta S3 en
muchos experimentos y proyectos, las siguientes observaciones nos ayudan a
manipular y procesar el cdigo ASCII:

Cuando el primer dgito hexadecimal en una palabra cdigo es 0 16 o 116,


el carcter correspondiente es un carcter de control.
Cuando el primer dgito hexadecimal en una palabra cdigo es 2 16 o 316,
el carcter correspondiente es un dgito o puntuacin.
Cuando el primer dgito hexadecimal en una palabra cdigo es 4 16 o 516,
el carcter correspondiente es generalmente una letra mayscula.
Cuando el primer dgito hexadecimal en una palabra cdigo es 6 16 o 716,
el carcter correspondiente es generalmente una letra minscula.
Si el primer dgito hexadecimal en una palabra de cdigo es 3 16, el
dgito hexadecimal inferior representa el correspondiente dgito
decimal.
Las letras maysculas y minsculas difieren en un solo bit y se pueden
convertir entre s por adicin o sustraccin de 20 16 o invirtiendo el sexto
bit.

Tenga en cuenta que el cdigo ASCII utiliza slo 7 bits, aunque una palabra de
datos se compone normalmente de 8 bits (es decir, un byte). El PC utiliza un
conjunto extendido en el que el MSB es 1 y los caracteres son smbolos
grficos especiales. Este cdigo, sin embargo, no es parte de la norma ASCII.
7.5 Personalizacin de una UART
La UART discutido en las secciones anteriores es la medida para una
configuracin particular. El diseo y el cdigo pueden ser fcilmente
modificados para adaptarse a otras caractersticas requeridas:

* Velocidad de transmisin. La velocidad de transmisin es controlada por la


frecuencia de las garrapatas de muestreo del generador de velocidad en
baudios. La frecuencia se puede cambiar mediante la revisin del M genrica
del contador de mdulo m, que se representa como la constante de DVSR en
el cdigo.

* Nmero de bits de datos. El nmero de bits de datos se puede cambiar


modificando el lmite superior del registro n-reg, que se especifica como la
constante de DBIT en el cdigo.

* Bit de paridad. Un bit de paridad se puede incluir la introduccin de un


nuevo estado entre los datos y dejar de estados en el grfico ASMD en la
Figura 7.3.

* Nmero de bits de parada. El nmero de bits de parada se puede cambiar


modificando el lmite superior del registro de s-reg en el estado de parada de
la tabla ASMD. La constante de SB-TICK se utiliza para este propsito. Puede
ser 16,24, o 32, que es para 1, 1,5, o 2 bits de parada, respectivamente.

La comprobacin de errores. Tres tipos de errores pueden ser detectados en el


UART recibir SUBSYS - TEM:

- Error de paridad. Si se incluye el bit de paridad, el receptor puede comprobar


la correccin del bit de paridad recibido.
- Error de Frame. El receptor puede comprobar el valor recibido en el estado
de parada. Si el valor no es 'l', se produce el error de trama.
- BufSer rebasamiento error. Esto sucede cuando el sistema principal no
recupera las palabras recibidas de una manera oportuna. El receptor UART
puede comprobar el valor de la seal f lag-registro del bfer o seal completa
de FIFO cuando la palabra recibida est listo para ser almacenado (es decir,
cuando se genera la seal de rx-hecho-tick). Rebasamiento de datos se
produce si la seal flag_reg o total todava se afirma.

7.6 NOTAS BIBLIOGRFICAS


Aunque el estndar RS-232 es muy antigua, todava ofrece un enlace de
comunicacin de baja velocidad simple y fiable entre dos dispositivos. El sitio
web de Wikipedia tiene un buen artculo visin general y varios enlaces tiles
sobre el tema (bsqueda con la palabra clave RS232). Puerto serie completa
de Jan Axelson proporciona informacin sobre la interconexin de dispositivos
de hardware al puerto serie del PC.

7.7 EXPERIMENTOS SUGERIDOS

7.7.1 UART con todas las funciones

La alternativa a la UART personalizado es incluir todas las caractersticas de


diseo y configurar dinmicamente la UART, segn sea necesario. Considere
un UART con todas las funciones que utiliza seales de entrada adicionales
para especificar la velocidad de transmisin, el tipo de bit de paridad, y el
nmero de bits de datos y bits de parada. El UART tambin incluye una seal
de error. Adems de las seales de E / S del diseo UART-top en el Listado 7.4,
se requieren las siguientes seales:

* Bd-rate: seal de entrada de 2 bits que especifica la velocidad de


transmisin, que puede ser 1200,2400,4800,

* D_num: seal de entrada de 1 bit que especifica el nmero de bits de datos,


que puede ser 7 o 8

* S_num: seal de entrada de 1 bit que especifica el nmero de bits de


parada, que puede ser 1 o 2

* Par: seal de entrada de 2 bits que especifica el esquema de paridad


deseada, que puede ser sin paridad,

* Err: seal de salida de 3 bits en el que los bits indican la existencia del error
de paridad, o 9.600 baudios paridad par, o de error de trama de paridad
impar, y los datos invadido error

Derivar este circuito como sigue:

1. Modificar el grfico ASMD en la Figura 7.3 para dar cabida a las extensiones
requeridas.

2. Revisar el cdigo receptor UART acuerdo a la tabla ASMD.

3. Revisar el cdigo del transmisor UART para dar cabida a las extensiones
requeridas.

4. Revisar el cdigo UART de nivel superior y el circuito de verificacin. Utilice


los interruptores de a bordo para las seales de entrada adicionales y tres
LEDs para las seales de error. Sintetizar el circuito de verificacin.

5. Creacin de diferentes configuraciones en HyperTerminal y verificar el


funcionamiento del circuito UART.
7.7.2 UART con un circuito de deteccin de velocidad de transmisin
automtica
El nmero ms comnmente utilizada de bits de datos de una conexin en
serie es ocho, que corresponde a un byte. Cuando se utiliza un cdigo ASCII
regular en la comunicacin (como escribimos en la ventana de
HyperTerminal), slo siete LSB se utilizan y el MSB es '0'. Si el UART se
configura como 8 bits de datos, 1 bit de parada y sin paridad, la palabra
recibido est en la forma de 0_dddd_ddd_1, en donde d es un bit de datos y
puede ser '0' o '1'. Supongamos que hay suficiente tiempo entre la primera
palabra y las transmisiones posteriores. Podemos determinar la velocidad de
transmisin midiendo el intervalo de tiempo entre el primer "0" y el ltimo
"0". Basndose en esta observacin, podemos derivar una UART con un
circuito de deteccin de velocidad de transmisin automtica. En este
esquema, el sistema transmisor enva primero un cdigo ASCII para la
deteccin de tasa y luego reanuda la operacin con normalidad. El subsistema
receptor utiliza la primera palabra para determinar una velocidad de
transmisin y luego utiliza esta tasa para el generador de velocidad de
transmisin para la transmisin restante.
Supongamos que la configuracin UART es de 8 bits de datos, 1 bit de parada
y sin bit de paridad, y la velocidad de transmisin puede ser 4800,9600, o
19.200 baudios. El receptor UART revisado debera tener de dos modos de
operacin. Es inicialmente en el "modo de deteccin" que espera a la primera
palabra. Despus la palabra se recibe y se determina la velocidad de
transmisin, el receptor entra en "modo normal" y la UART opera de una
manera regular. Deducir la UART como sigue:
1. Dibujar el grfico ASMD para el circuito detector de velocidad de
transmisin automtica.
2. Deducir el cdigo VHDL para el grfico ASMD. Utilice tres LED en el tablero
S3 para indicar la velocidad de transmisin de la seal entrante.
3. Modificar la UART para incluir tres diferentes velocidades de transmisin:
4800, 9600 y 19200.
Esto se puede lograr mediante el uso de un registro para el divisor del
generador de velocidad en baudios y cargar el valor de acuerdo con la
velocidad de transmisin deseada.
4. Crear un FSMD de nivel superior para no perder de vista el modo y para
controlar y coordinar funcionamiento del circuito de deteccin de velocidad de
transmisin y el receptor UART regular. Usar un interruptor de botn en el
tablero S3 para forzar la UART en el modo de deteccin.
5. Revisar el cdigo UART de nivel superior y el circuito de verificacin.
Sintetizar la verificacin del circuito.
6. Creacin de diferentes configuraciones en HyperTerminal y verificar el
funcionamiento de la UART.
7.7.3 UART con una velocidad de transmisin automtica y el circuito
de deteccin de la paridad
Adems de la velocidad en baudios, se supone que el esquema de paridad
tambin se debe determinar de forma automtica, que puede ser sin paridad ,

paridad par , o paridad impar . Ampliar el anterior circuito de deteccin


automtica de la velocidad de transmisin para detectar la configuracin de
paridad y repetir Experimento 7.7.2.
7.7.4 Cronmetro UART controlado
Considere el cronmetro mejorado en el Experimento 4.7.6. El funcionamiento
del cronmetro se controla por tres interruptores en el tablero S3. Con la
UART, podemos utilizar HyperTerminal de PC para enviar comandos a y
recuperar el tiempo del cronmetro:

Cuando se recibe una c o C (de " borrar " ) se recibe el cdigo ASCII , el
cronmetro aborta mientras est contando, se borra a cero, y establece
el mtodo de recuento de " arriba ".
Cuando se recibe una g o G (para " ir " ) se recibe el cdigo ASCII , el
cronmetro comienza a contar.
Cuando se recibe una p o P (de " pausa" ) el cdigo ASCII , contando
pausas.
Cuando se recibe una u o U (de " arriba-abajo " ) de cdigo ASCII , el
cronmetro invierte la direccin del conteo.
Cuando se recibe una r o R (para "recibir" ) se recibe el cdigo ASCII , el
cronmetro transmite el tiempo actual hasta el PC . El tiempo debe
mostrarse como " DD.D Es , donde D es un dgito decimal.
Sern ignorados Todos los dems cdigos.
Disear el nuevo cronmetro, sintetizar el circuito, conctelo a un PC y utilizar
HyperTerminal para verificar su funcionamiento.
7.7.5 UART-controlado rotando la bandera LED
Considere el circuito de la bandera LED giratoria en el Experimento 4.7.5. Con
la UART, podemos utilizar HyperTerminal de PC para controlar su
funcionamiento y dinmicamente modificar los dgitos en la bandera:

Cuando recibe una g o G (para " ir " ) se recibe el cdigo ASCII , el


estandarte LED gira .
Cuando se recibe una p o P (de " pausa" ) el cdigo ASCII , pausa la
bandera LED.
Cuando se recibe una d o D (de " direccin" ) se recibe el cdigo ASCII ,
el estandarte LED invierte la direccin de rotacin.
Cuando un dgito decimal (es decir , 0 , 1 , . . . , 9 ) se recibe el cdigo
ASCII , la bandera ser modificada. El banner puede ser tratado como
un bfer FIFO de 10 palabras. El nuevo dgito insertar al inicio (es decir ,
la posicin ms a la izquierda ) de la bandera y de la derecha los dgitos
se desplazar hacia fuera y se desecha.
Sern ignorados Todos los dems cdigos.

Diseo del nuevo Rotating Banner LED, sintetizar el circuito, conctelo a un


PC, y el uso
HyperTerminal para verificar su funcionamiento.

CAPITUL
O8
TECLADO de
PS2
8.1. INTRODUCCIN
Puerto PS2 fue introducido en Systed2 Personal computadoras personales
de IBM. Es un ampliamente interfaz soportada por un teclado y el ratn para
comunicarse con el host . El puerto PS2 contiene dos hilos para fines de
comunicacin. Un cable es para los datos , que se transmite en un flujo en
serie . El otro cable es para la informacin del reloj , que especifica cundo
los datos son vlidos y se puede recuperar . La informacin se transmite de
forma 1 de
1 bit " paquete " que contiene un bit de inicio , 8 bits de datos , un bit de
paridad impar y un bit de parada . Mientras que el formato bsico del
paquete es el mismo para un teclado y un ratn, la interpretacin de los bits
de datos es diferente. La placa de prototipo FPGA tiene un puerto PS2 y
acta como anfitrin. Se discute la interfaz de teclado en este captulo y
cubrimos la interfaz del ratn en el Captulo 9 .
La comunicacin del puerto PS2 es bidireccional y el anfitrin puede enviar
un comando para
el teclado o el ratn para ajustar ciertos parmetros. Para nuestros
propsitos, la bidireccional comunicacin apenas se requiere para el teclado
PS2, y por lo tanto la discusin se limita a una sola direccin, desde el
teclado a la placa de prototipos . Diseo bidireccional se examinar en la
interfaz del ratn en el Captulo 9 .

8.2. PS2 RECIBIENDO SUBSISTEMA


8.2.1. Interfaz fsica de un puerto PS2
Adems de los datos y lneas de reloj, el puerto PS2 incluye conexiones para
potencia (es decir, VCC) y de tierra. La energa es suministrada por el
anfitrin. En el puerto original de PS2, V,, es de 5 V y las salidas de las
lneas de datos y de reloj son de colector abierto. Sin embargo, la mayora
de los teclados y ratones actuales pueden trabajar bien con 3,3 V. Para un
teclado viejo y ratn, la alimentacin de 5 V se puede conseguir cambiando
el 52 puente de la tarjeta S3. El FPGA debe seguir funcionando
correctamente ya que sus pines de E / S pueden tolerar entrada de 5 V.
8.2.2. Protocolo de comunicacin-Device-to-host
Un dispositivo de PS2 y su husped se comunican a travs de paquetes. El
diagrama de temporizacin bsica de transmisin de un paquete desde un
dispositivo PS2 a un anfitrin se muestra en la figura 8.1, en la que las
seales de datos y de reloj estn etiquetados ps2d y PS2C,
respectivamente.
Los datos se transmiten en un flujo en serie, y su formato es similar a la
de un UART. Transmisin comienza con un bit de inicio, seguido por 8
bits de datos y un bit de paridad
impar, y termina con un bit de parada. A diferencia de un UART, la
informacin del reloj se
lleva en un aparte de la seal de reloj, PS2C. El flanco de bajada de la seal
PS2C indica que el bit correspondiente en la lnea ps2d es vlida y puede
ser recuperada. El perodo de reloj de la seal de PS2C es entre 60 y 100 PS
(es decir, 10 kHz a 16,7 kHz), y la seal de ps2d es estable por lo menos 5
PS antes y despus del flanco de bajada de la seal de PS2C.

8.2.3. Diseo y programacin

El diseo de la PS2 subsistema de recepcin de puerto es algo similar a la de


un UART receptor. En lugar de utilizar el esquema de sobremuestreo, el
flanco descendente de la seal de PS2C se utiliza como punto de referencia
para recuperar datos. El subsistema incluye un circuito de deteccin de
flanco descendente, que genera una seal de ciclo de un reloj en el flanco
de bajada de la seal de PS2C, y el receptor, que se desplaza en y el
montaje de los bits en serie.
El circuito de deteccin de borde discute en la Seccin 5.3.1 se puede
utilizar para detectar el flanco descendente y generar una garrapata
habilitar. Sin embargo, a causa del ruido potencial y transicin lenta, se
aade un circuito de filtrado sencilla para eliminar fallos. Su cdigo es

El circuito se compone de un registro de desplazamiento de 8 bits y


devuelve un '1 ' o '0' cuando se reciben ocho consecutivos de de 1 o 0 .
Cualquier fallo de menos de ocho ciclos de reloj sern ignorados (es decir ,
fuera filtrada) . La seal de salida filtrada se alimenta entonces al circuito
de deteccin de flanco descendente regular.
El grfico ASMD del receptor se muestra en la Figura 8.2 . El receptor est
inicialmente en el estado de reposo . Incluye una seal de control adicional ,
RX -es , que se utiliza para habilitar o desactivar la operacin de recepcin .
El propsito de la seal es coordinar el funcionamiento bidireccional . Se
puede ajustar a " 1 " para la interfaz de teclado .
Despus de la primera seal de flanco descendente y el rx -en seal se
afirm , la FSMD cambia en el bit de inicio y pasa al estado dps . Dado que
los datos recibidos son en formato fijo , cambiamos en los 10 bits restantes
en un solo estado en lugar de utilizar los datos por
separado , la paridad y detener estados. El FSMD luego pasa al estado de
carga , en el que se
ofrece un ciclo de reloj extra para completar el cambio del bit de parada, y la
seal psrx hecho -tick es invocado para un ciclo de reloj . El cdigo HDL consiste en el
circuito de filtrado y un FSMD , que sigue el diagrama de ASMD . Se muestra
en el listado 8.1 .

No hay circuito de deteccin de


errores en la descripcin. Un diseo ms robusto debe comprobar la
exactitud de la salida, la paridad y los bits de parada e incluir un
temporizador de vigilancia para evitar que el teclado se bloquee en un
estado incorrecto. Esto se deja como un experimento en el final del captulo.
8.3. PS2 TECLADO SCAN CODE
8.3.1. Visin general del cdigo de exploracin
Un teclado consta de una matriz de teclas y un microcontrolador integrado
que monitorea (es decir, escanea) las actividades de las teclas y enva
cdigo de exploracin en consecuencia. Se observan tres tipos de
actividades principales:
Cuando se pulsa una tecla, se transmite el cdigo de marca de la
llave.

Cuando una tecla se mantiene pulsada continuamente , una


condicin conocida como typematic , la marca cdigo se transmite
repetidamente a una tasa especfica . Por defecto, un teclado PS2
transmite el cdigo de maquillaje o menos cada 100 ms despus de
una tecla ha sido pulsada durante 0,5 segundos.

Cuando se suelta una tecla , se transmite el cdigo de la rotura de la


llave.
El cdigo de maquillaje de la parte principal de un teclado PS2 se muestra
en la Figura 8.3 . Es normalmente
1 byte de ancho y representado por dos nmeros hexadecimales. Por
ejemplo , el cdigo de maquillaje de la clave A es 1C . Este cdigo puede ser
transportada por un paquete cuando se transmiten. Los cdigos de
maquillaje de un puado de llaves de propsito especial , que se conocen
como las teclas extendidas , pueden tener 2 a 4 bytes. Algunas de estas
teclas se muestran en la Figura 8.3 . Por ejemplo , el cdigo de marca de la
flecha superior de la derecha es de EO 75 . Se necesitan los paquetes
mltiples para la transmisin .
Los cdigos de rotura de las teclas normales constan de FO seguido por el
cdigo de maquillaje de la tecla . Por ejemplo , el cdigo de ruptura de la
tecla A es FO 1C.

El teclado PS2 transmite una secuencia de cdigos de acuerdo a las


actividades clave. Para ejemplo, cuando presione y suelte la tecla A, el
teclado primero transmite su cdigo de marca y luego el cdigo de ruptura
:
1C FO 1C

Si tenemos la llave por un rato antes de soltarlo, se transmitir el cdigo


de maquillaje varias veces:

1C 1C

1C

. . . 1C

FO 1 C

Mltiples teclas pueden ser presionadas a la vez. Por ejemplo, podemos


pulsar primero la tecla de maysculas (cuyo cdigo es marca 12) y luego la
tecla A, y suelte la tecla A y luego suelte la tecla de maysculas. La
secuencia de cdigo transmitido sigue los cdigos de cierre y de apertura de
las dos claves:
12 1 C FO 1 C FO 12

La secuencia anterior es la forma en que normalmente se obtiene una


mayscula A. Note que no hay es cdigo especial para distinguir las teclas
de maysculas y minsculas. Es

responsabilidad de la dispositivo host para llevar un registro de si se


pulsa la tecla de maysculas y determinar el caso en consecuencia.
8.3.2. Circuito del monitor Escanear cdigo
El circuito de monitor de cdigo de exploracin controla la llegada de los
paquetes recibidos y muestra los cdigos de exploracin en la ventana de
HyperTerminal de un PC. El enfoque bsico de diseo es primero dividir el
cdigo de exploracin recibido en dos partes de 4 bits y tratarlos como dos
dgitos hexadecimales, y luego convertir los dos dgitos a palabras de
cdigo ASCII y enviar la letra de una PC a travs de la UART. Los cdigos de
exploracin recibidas se deben mostrar similar a los ejemplos de las
secuencias anteriores. El programa se muestra en el listado 8.2.

Un FSM se utiliza para controlar el funcionamiento global. Se inicia la


operacin cuando UART se recibe un nuevo cdigo de exploracin (indicada
por la afirmacin de la exploracin-tick hecho). El FSM circula a travs de la
Sendl, send0, y estados sendb, en el que los cdigos ASCII de los dgitos
superior hexadecimal, menor dgito hexadecimal, y el espacio en blanco se
escriben en el UART.
Recordemos que el UART tiene una FIFO de cuatro palabras, y por lo
tanto no se producir desbordamiento. Tenga en cuenta que el receptor
UART no se utiliza y los puertos correspondientes se asignan a
constantes o abierto.
8.4. TECLADO PS2 CIRCUITO DE INTERFAZ
Como se discuti en la Seccin 8.3.1, una secuencia de paquetes se
transmite incluso para las actividades del teclado simples. Ser un poco
complicado si queremos cubrir todas las combinaciones posibles. En esta
seccin, se supone que slo se presiona una tecla normal y lanzado a la
vez y el diseo de un circuito que devuelve el cdigo de marca de esta
clave. Este diseo proporciona una forma sencilla de enviar un carcter o
un dgito a la placa de prototipado y debe ser satisfactorio para nuestros
propsitos.

8.4.1. Proyecto bsico y de cdigo HDL

El circuito de teclado, como un UART, es un circuito perifrico de un


sistema grande y necesita un mecanismo para comunicarse con el sistema
principal. Los esquemas de abanderamiento y amortiguadores discutidos en
la Seccin 7.2.4 se puede aplicar para el circuito de teclado tambin.
Utilizamos un buffer FIFO fourword como la interfaz en este diseo.
El esquema conceptual de nivel superior se muestra en la Figura 8.4.
Consiste en el receptor de PS2, una memoria intermedia FIFO, y una FSM de
control. La idea bsica es utilizar el FSM para realizar un seguimiento del
paquete FO del cdigo descanso. Despus de que se recibe, el siguiente
paquete debe ser el cdigo de marca de esta clave y se escribe en la
memoria intermedia FIFO. Tenga en cuenta que este esquema no se puede
aplicar a las teclas
extendidas desde sus cdigos de maquillaje implican mltiples paquetes. El
cdigo HDL
correspondiente se muestra en el listado 8.3.

La parte principal del cdigo es el FSM, que las pantallas para el cdigo de
ruptura y coordina el funcionamiento de los otros dos mdulos.
Comprueba los paquetes recibidos en el estado
de espera-brk continuamente. Cuando se detecta el paquete FO, se mueve
al estado de cdigo
get y espera para el siguiente paquete, que es el cdigo de maquillaje de la
tecla. El FSM afirma a continuacin la seal de cdigo-hecho-tick para un
ciclo de reloj y vuelve al estado de espera-brk.

8.4.2. Verification circuit


Diseamos un circuito de interfaz y decodificacin en serie simple de
verificar el funcionamiento de la PS2 interfaz de teclado. El diagrama de
bloques de nivel superior se muestra en la Figura 8.5. El circuito convierte
el cdigo make de una clave para el cdigo ASCII correspondiente y luego
enva el cdigo ASCII de la UART. El carcter o dgito correspondiente se
pueden mostrar en la ventana de HyperTerminal. El cdigo HDL para el
circuito de conversin se muestra en el listado 8.4.

El cdigo completo para el circuito de verificacin sigue el diagrama de


bloques y se muestra en el listado 8.5.

funci
onamiento.

8.5 NOTAS BIBLIOGRAFICAS


Tres artculos, PS/2 protocolo mouse/teclado, PS/2 Interface de teclado, y PS/2
interface de mouse, por Adam Chapweske, informacin detallada del teclado PS2 e
interfaz del mouse. Estos se pueden encontrar en http://www.computer-engineering.org
8.6 EXPERIMENTOS SUGERIDOS
8.6.1 INTERFAZ ALTERNATIVA DE TECLADO I
El circuito de interfaz en la seccin 8.4 devuelve el cdigo de marca de la ltima tecla
liberada y por lo tanto ignora la condicin typematic. Un enfoque alternativo es considerar
la condicin typematic. El circuito de interfaz de teclado debe devolver un cdigo de llaves
que hacen repetidamente cuando se mantiene pulsado e ignorar el cdigo de ruptura
definitiva. Para simplificar, asume que las teclas extendidas no se utilizan. Disea el nuevo
circuito de interfaz, sintetiza el circuito de verificacin y comprueba el funcionamiento del
nuevo circuito de interfaz.
8.6.2 INTERFACE ALTERNATIVA DE TECLADO II
Podemos ampliar el circuito de interfaz para distinguir si se pulsa la tecla de maysculas
para que ambos personajes bajos y maysculas se puedan introducir. El circuito expandido
puede ser modificado como sigue:
La salida de cdigo clave debe extenderse a partir de 8 bits a 9 bits. El toque
adicional indica si la tecla de maysculas se mantiene presionado.
El FSM debe agregar una rama especial para procesar la marca y romper los
cdigos de la tecla de maysculas y establecer el valor del bit correspondiente.
El ancho de buffer FIFO debe extenderse a 9 bits.

Disea el circuito de interfaz ampliada, modificar el circuito key2ascii para manejar


caracteres, tanto ms bajos y en maysculas, re sintetizar el circuito de verificacin y
comprobar el funcionamiento del circuito de interfaz ampliado.
8.6.3 PS2 RECIBIENDO SUBSITEMA CON TEMPORIZADOR DE VIGILANCIA
No hay capacidad de gestin de errores en el PS2 recibir subsistema en el apartado 8.2. El
ruido potencial y fallas en la seal ps2c pueden hacer que el FSMD que se ha quedado
atascado en un estado incorrecto. Una manera de hacer frente a este Problema es aadir un
temporizador de vigilancia. El temporizador se inicia cada vez que la seal fall_edge_tick
se afirma en el estado get_bit. La seal time_out se afirma si no hay borde cayendo
posteriormente llega a la siguiente 20, y el FSMD retorna al estado de reposo. Disea el
subsistema de recepcin modificado, derivar un banco de pruebas, y el uso de la simulacin
para verificar su funcionamiento.

8.6.4 TECLADO CONTROLADO POR CRONOMETRO


Considere el cronmetro mejorado en el experimento 4.7.6 Funcionamiento del cronmetro
es controlado por tres interruptores en la placa de prototipos. Podemos utilizar el teclado
para enviar comandos al cronmetro:
Cuando se pulsa el C (para "claro") clave, el cronmetro se cancela la cuenta
corriente, se pone a cero, y establece el mtodo de recuento de "arriba".
Cuando se pulsa la tecla (para " ir ") G, las estrellas de cronmetro para contar.
Cuando se pulsa el P (de " pausa") clave, las pausas de conteo.
Cuando se pulsa la T (de " arriba-abajo ") clave, el cronmetro se invierte la
direccin del conteo
Se ignorarn Todas las dems teclas.
Disea el nuevo cronmetro, sintetizar el circuito, y verificar su funcionamiento.
8.6.5 TECLADO LED CONTROLADO GIRANDO BANDERA
Considere el circuito de la bandera LED giratoria en el Experimento 4.7.5. Podemos utilizar
un teclado para controlar su funcionamiento y dinmicamente modificar los dgitos en el
banner.
Cuando se pulsa el G (para " ir ") clave, el estandarte de LEDs gira.
Cuando se pulsa el P (de " pausa") clave, las pausas de banner LED.
Cuando se pulsa la tecla D (de " direccin"), la bandera LED invierte el sentido de
giro.

Cuando se pulsa (ie.,.. ,0,1 , ......9) Tecla de un dgito decimal , se modificar la


bandera. El banner puede ser tratado como un bfer FIFO de 10 palabras. El nuevo
dgito se insertar al principio (es decir, la posicin ms a la izquierda) de la bandera, y
el dgito ms a la derecha se desplazar hacia fuera y se desecha.
Se ignorarn Todas las dems teclas.
Diseo de la nueva rotativa bandera LED, sintetizar el circuito, y comprobar su
funcionamiento.

9.1 INTRODUCCIN
Un ratn del ordenador est diseado principalmente para detectar el movimiento de dos
dimensiones en una superficie. Su circuito interno mide la distancia relativa de movimiento
y comprueba el estado de los botones. Para un ratn con una interfaz PS2, esta informacin
se embala en tres paquetes continuamente en una frecuencia de muestreo previamente
designado.
La comunicacin del puerto PS2 es bidireccional y el anfitrin puede enviar un comando
para el teclado o el ratn para ajustar ciertos parmetros. Para nuestros propsitos, esta
funcionalidad es apenas necesario para un teclado para el anfitrin FPGA. Sin embargo, a
diferencia del teclado, un ratn est configurado para estar en el modo no humeante
despus del encendido y no enva ningn dato. El anfitrin debe primero enviar un
comando al ratn para inicializar el mouse y activar el modo de secuencia. Por lo tanto, es
necesaria una comunicacin bidireccional del puerto PS2 para la interfaz del ratn PS2, y
debemos desinar del subsistema de transmisin (es decir, de la junta FPGA para ratn) para
la interfaz PS2.
En este captulo, ofrecemos un breve resumen del protocolo del ratn PS2, disear una
interfaz PS bidireccional, y derivamos una sencilla INTERFCE ratn.
9.2 Protocolo PS2 MOUSE
9.2.1 Operaciones Bsicas
Un estndar ps2 mouse informa movimiento del eje x (derecha / izquierda) y el eje Y (arriba /
abajo) y el estado del botn izquierdo, botn central, y el botn de la derecha. La cantidad de cada
movimiento se registra en el contador interno de un ratn. Cuando los datos se transmiten al host, el
contador se pone a cero y se reinicia el conteo. El contenido del contador representa un entero con
signo de 9 bits en el que un nmero positivo indica la derecha o hacia arriba el movimiento, y un
nmero negativo indica la izquierda o hacia abajo el movimiento.
La relacin entre las distancias fsicas se define con el parmetro de resolucin del ratn. El valor
por defecto de la resolucin es cuatro cargos por milmetro. Cuando un ratn se mueve
continuamente, los datos se transmiten en una tasa regular. La tasa se define por el parmetro de

frecuencia de muestreo del ratn. El valor por defecto de la frecuencia de muestreo es de 100
muestras por segundo. Si un ratn se mueve demasiado rpido, la cantidad del movimiento durante
el periodo de muestreo puede exceder el alcance mximo de la barra. El contador se ajusta a la
magnitud mxima en la direccin apropiada. Dos bits de desbordamiento se utilizan para indicar las
condiciones.
El ratn informa las actividades de movimiento y de botn en 3 bytes, que estn incrustados en tres
paquetes de PS2. El formato detallado de los datos de 3 bytes se muestra en la Tabla 9.1. Contiene
la siguiente informacin:

x s , , x 0 : Movimiento segn el eje x en formato de complemento a2

x v :movimiento en el eje x de desbordamiento

y s , , y 0 : Movimiento segn el eje y en formato de complemento a 2

y v : movimientoen el eje y de desbordamiento

l: estado del botn izquierdo, que es ' 1 ' cuando se pulsa el botn izquierdo
r: estado de botn derecho , que es ' 1 ' cuando se pulsa el botn derecho
m: estado opcional de botn central , que es ' 1 ' cuando se pulsa el botn central

Durante la transmisin, el paquete 1 byte se enva primero y el paquete de byte 3 se enva pasado.
9.2.2 Procedimiento de inicializacin bsica
El funcionamiento de un ratn es ms compleja que la de un teclado. Dispone de diferentes modos
de funcionamiento. El ms utilizado es el modo de secuencia, en la que un ratn enva los datos de
movimiento cuando detecta movimiento o el botn de actividad. Si el movimiento es continuo, los
datos
se
generan
en
la
frecuencia
de
muestreo
designado.
Durante la operacin, un host puede enviar comandos a un ratn para modificar los valores
predeterminados de diversos parmetros y establecer el modo de funcionamiento, y un ratn puede
generar la situacin y enviar un acuse de recibo. Para nuestros propsitos, los valores
predeterminados son adecuados, y la nica tarea es establecer el ratn al modo de corriente.

La secuencia de la interaccin bsica entre un ratn PS2 y el anfitrin FPGA consiste en lo


siguiente:

1. En el encendido, un ratn realiza una prueba de encendido internamente. El ratn enva l


bytes dato AA, lo que indica que se pasa la prueba, y luego los datos l byte dato 00, que es
el identificador de un ratn PS2 estndar.
2. El host FPGA enva el comando, F4, para activar el modo de secuencia. El ratn responder
con FE para reconocer la aceptacin del comando.
3. El ratn entra ahora en el modo de corriente y enva paquetes de datos normales.
Si un ratn est conectado a la placa de prototipo FPGA con antelacin, se realiza la prueba
poweron cuando el poder de del tablero est encendido y enva el AA de datos 00
inmediatamente. El chip FPGA no est configurado en este punto y no recibe estos datos.
As, por lo general podemos ignorar el mensaje de encendido en el paso 1. Un circuito de
interfaz de ratn mnimo slo tiene que enviar el comando F4, compruebe la FE reconoce, y
entrar en el modo de funcionamiento normal para procesar el paquetes de datos regular del
ratn.
Podemos forzar el ratn para volver al estado inicial mediante el envo de la orden de
reposicin:
1. El host FPGA enva el comando, FF, para restablecer el ratn. El ratn responder con FE
para reconocer la aceptacin del comando.
2. El ratn lleva a cabo una prueba de encendido internamente y luego enva AA 00. El modo
de secuencia se desactivar durante el proceso.
Ratones recientes aade ms funcionalidad, como una rueda de desplazamiento y botones
adicionales, por lo que envan ms informacin. Bytes adicionales se aaden a los datos de
3 bytes originales para acomodar estas nuevas caractersticas.
9.3 PS2 TRANSMISIN DEL SUBSISTEMA
9.3.1 de host a PS2-dispositivo de protocolo de comunicacin
De host-a-PS2-dispositivo de protocolo de comunicacin implica el intercambio de datos
bidireccional. Los datos del ratn y lneas de reloj en realidad son circuitos de colector
abierto. Para nuestros propsitos de diseo, los tratamos como lneas de tres estados. El
diagrama de temporizacin bsica de transmitir un paquete desde un host a un dispositivo
de PS2 se muestra en la figura 9.1, en la que los datos y seales de reloj estn etiquetados
ps2d y ps2c. Para mayor claridad, el diagrama se divide en dos partes para mostrar qu
actividades se generan por el host (i.e, el chip FPGA) y que las actividades son generados
por el dispositivo (i.e, ratn). La secuencia de funcionamiento bsico es el siguiente:

Buffers tri - estado del subsistema de transmisin de PS2 .


1.- El host obliga la lnea ps2c ser "0" durante al menos 100 ps para inhibir cualquier
actividad del ratn. Se puede considerar que las solicitudes enviar un paquete .
2.- El host obliga la lnea ps2d ser ' 0 ' y desactiva la lnea ps2c (es decir , hace que sea alta
impedancia). Este paso puede ser interpretado como el anfitrin envia un bit de inicio
3.- El dispositivo PS2 ahora se hace cargo de la lnea ps2c y es responsable de las futuras
generaciones de seales del reloj PS2. Despus de detectar el bit de arranque, el dispositivo
PS2 genera una transicin de ' 1 'a - '0 '
4.- Una vez que se dio la deteccin de la transicin , host se desplaza hacia fuera los bits de
los datos menos significativos sobre la lnea ps2d . Sostiene este valor hasta que el
dispositivo PS2 genera una transicin de ' 1' a - '0 ' en la lnea ps2c , que esencialmente
reconoce la recuperacin del bit de datos .
5.- Repita el paso 4 para los 7 bits de datos restantes y 1 bit de paridad.
6.- Despus de enviar el bit de paridad , el host desactiva la lnea ps2d (Lee , hace que sea
alta impedancia). El dispositivo PS2 ahora se hace cargo de la lnea ps2d y reconoce la
finalizacin de la transmisin mediante la activacin de la lnea ps2d a '0' . Si se desea, el
host puede comprobar este valor en la ltima transicin de' 1' a '0 ' en la lnea de ps2c para
verificar que el paquete se transmiti con xito
9.3.2 Diseo y Cdigo
A diferencia del subsistema de recepcin , las seales ps2c y ps2d se comunican en ambas
direcciones. Se necesita un buffer tri-estado para cada seal . La interfaz de los tres estados
se muestra en la Figura 9.2 . Las seales de tri- d tri -c son seales de habilitacin que
controlan los buffers de tres estados . Cuando estas se activan , las seales ps2c y ps2d de
salida correspondientes sern enviados al puerto de salida.
Para disear el subsistema de transmisin , podemos seguir la secuencia del anterior
protocolo para crear un grfico de ASMD , como se muestra en la Figura 9.3 . El FSMD

est inicialmente en el estado de reposo. Para iniciar la transmisin , el host activa la seal
wr- ps2 y coloca los datos en el bus din. El FSMD carga din , junto con el bit de paridad ,
en el registro shift-reg, luego carga el " 1 . . - 1 "en el registro c , y se traslada al estado
RTS (por " solicitud de envo " ) o. En este estado, el ps2c de salida se establece en "0" y el
correspondiente tri -c se activa para encender el correspondiente buffer tri-estado. El c- reg
se utiliza como un contador de 13 bits para generar un retraso de 164 -ps. El FSMD luego
pasa al estado de inicio , en la que se desactiva la lnea de reloj de PS2 y la lnea de datos se
establece en ' 1 ' . El dispositivo PS2 (es decir , el ratn ) ahora se hace cargo y genera

seal de reloj sobre la lnea ps2c. Despus de detectar el flanco descendente de la seal
ps2c a travs de la seal de flanco descendente, el FSMD va al estado de datos y tiene un
desplazamiento lateral de 8 bits de datos y 1 bit de paridad. El registro n se utiliza para
realizar un seguimiento del nmero de bits desplazados. El FSMD luego pasa al estado de
parada, en la que se desactiva la lnea de datos, vuelve al estado de reposo despus de
detectar el ltimo flanco de bajada. El FSMD tambin incluye una seal de tx-idle para

indicar si la transmisin est en curso. Esta seal puede ser utilizada para coordinar el
funcionamiento entre los subsistemas de recepcin y transmisin. El cdigo sigue el grfico
ASMD y se muestra en el listado 9.1. Un circuito de filtrado similar a la de la Seccin 8.2
se utiliza para generar la seal de flanco descendente.
Listado 9.1 transmisor puerto PS2

No hay circuito de deteccin de errores en el cdigo. Un diseo ms robusto debe verificar


la exactitud de los bits de paridad y de reconocimiento e incluir un temporizador de
vigilancia (watchdog) para evitar que el mouse se encierre en un estado incorrecto.

INTERACE BIDIRERCCIONAL PS2


9.4.1 Diseos Bsicos y cdigo
Podemos combinar la recepcin y transmisin de subsistemas para formar una interfaz PS2
bidireccional. El diagrama de nivel superior se muestra en la Figura 9.4. Utilizamos el

seales tx-idle y el rx-en para coordinar las operaciones de transmisin y recepcin. Se da


prioridad a la operacin de transmisin. Cuando el subsistema de transmisin est en
funcionamiento, la seal tx establece una salida lgica baja, que, a su vez, desactiva el
subsistema de recepcin. El subsistema receptor puede procesar entrada slo cuando el
subsistema de transmisin est inactivo. El cdigo HDL correspondiente se muestra en el
listado 9.2.

9.4.2 Verificacin del circuito


Creamos un circuito de pruebas para verificar y supervisar el funcionamiento de la interfaz
bidireccional. El diagrama de bloques se muestra en la Figura 9.5. Un comando se transmite
manualmente. Utilizamos los 8 bits de interrupcin para especificar los datos (es decir, el
comando del host) y el uso de un pulsador para generar un ciclo de reloj para transmitir el
paquete. El paquete de datos recibido se hace pasar primero al circuito de byte a ascii, que
convierte los datos en dos caracteres ASCII, adems de un espacio en blanco. Los
caracteres se transmiten a travs de la UART y se muestran en Windows HyperTerminal. El
cdigo HDL se muestra en el listado 9.3.

Listado 9.3 circuito de monitor de interfaz bidireccional PS2

Si el mouse se conecta al circuito de PS2, podemos primero emitir el comando FF para


restablecer el mouse y luego emitir el comando F4 para activar el modo de secuencia.
HyperTerminal de Windows mostrar los mouse de reconocimiento de paquetes y paquetes
de movimiento del mouse posteriores.

FALTA UN GRUPO AQU

9.5 PS2 RATN INTERFACE


9.5.1 Diseo bsico
La interfaz bsica del ratn PS2 crea otra capa sobre el circuito de PS2
bidireccional. Sus dos funciones bsicas son para activar el modo de secuencia

y volver a montar los bytes de datos 3. La salida del circuito son XM y ym, que
son dos seales x- 9 bits y movimiento del eje y; btm, que es la seal de
estado del botn 3-bit; y m-hacer-tick, que es una seal de estado de un solo
ciclo de reloj y se afirma cuando los datos reunidos se encuentra disponible. El
cdigo HDL se muestra en el listado 9.4. Se lleva a cabo por un FSMD con siete
estados. El initl, init 2 y 3 estados init se ejecutan una vez despus de que se
afirma la seal de reset.
En estos estados, el FSMD emite el comando F4, espera a la finalizacin de la
transmisin, y luego espera a que el paquete de confirmacin. El ratn est en
el modo de marcha ahora. El FSMD luego obtiene y rene los siguientes tres
paquetes en los estados packl, Pack2 y Pack3, y se activa la seal de m-hechotick en el estado hecho. El FSMD circula estos cuatro estados despus.

Este diseo proporciona funcionalidades mnimos. Un circuito ms sofisticado


debe tener un mtodo robusto para iniciar el modo de corriente y aadir
tampn adicional, similar a la que en la Seccin 7.2.4, para interactuar mejor
con el sistema externo.
9.5.2 Circuito de Pruebas
Nosotros usamos un circuito de pruebas sencillas para demostrar el uso de la
interfaz de PS2. El circuito utiliza un ratn para controlar los ocho LEDs
discretos de la placa de prototipos. Slo uno de los ocho LED est encendido y
la posicin de LED que sigue el movimiento del eje x del ratn. El prensado de
los lugares izquierdo o derecho del botn de los LED encendido a la posicin
ms a la izquierda o ms a la derecha.
El cdigo HDL se muestra en el listado 9.5. Se utiliza un contador de 10 bits
para realizar un seguimiento de la posicin del eje x actual. El contador se
actualiza cuando un nuevo elemento de datos est disponible (es decir.,
Cuando se afirma la seal de m-hecho-tick). El contador se pone a 0 o mximo
cuando se presiona el botn izquierdo o derecho del ratn. De lo contrario, se
agrega la cantidad de movimiento del eje x-extendido firmado. Un circuito de
decodificacin utiliza los tres MSB del contador para activar uno de los LEDs.

9.6 NOTAS BIBLIOGRFICAS


La informacin bibliogrfica de este captulo es similar a la del captulo 8.
9.7 EXPERIMENTOS SUGERIDOS
El ratn se utiliza principalmente con una interfaz grfica de vdeo, que se
discute en los captulos 12 y 13. Muchos experimentos adicionales relacionados
con el ratn se pueden encontrar en estos captulos.
Circuito de control 9.7.1 Teclado
Un anfitrin puede emitir un comando para establecer ciertos parmetros para
un teclado PS2 tambin. Por ejemplo, podemos controlar los tres LEDs del
teclado mediante el envo ED OX. La X es un nmero hexadecimal con un
formato de "OSNC", en donde s, n, y c son valores l bits que controlan el
Pergamino, Num y Bloq Mays LEDs, respectivamente. Podemos incorporar
esta funcin en el circuito de interfaz de teclado de la Seccin 8.4.1 y utilizar
un interruptor de 3 bits para controlar los tres LED del teclado. Disear el
circuito de interfaz ampliada, resintetizar el circuito y verificar su
funcionamiento.
9.7.2 Interfaz del ratn mejorada
Para la interfaz del ratn discuti en la Seccin 9.5, podemos alterar el diseo
de forma manual activar o desactivar el modo de vapor. Esto se puede hacer
mediante el uso de dos pulsadores de la FPGA placa de prototipos. Un botn
emite la orden de reposicin, FF, que desactiva la corriente el modo durante el
funcionamiento, y el otro botn emite el comando F4 para permitir que el vapor
modo. Modificar la interfaz original para incorporar esta caracterstica, y re
sintetizar el LED prueba de circuito para verificar su funcionamiento.
9.7.3 controlada por el ratn de siete segmentos de visualizacin LED

Podemos utilizar el ratn para introducir cuatro dgitos decimales en la pantalla


LED de siete segmentos de cuatro dgitos monitor. Las funciones del circuito de
la siguiente manera:
-

Slo uno de los cuatro puntos decimales de la pantalla LED est


encendido El punto decimal iluminado
La ubicacin del dgito seleccionado sigue el movimiento del eje x del
ratn.
El contenido del selecto pantalla LED de siete segmentos es un dgito
decimal (es decir, 0,..., 9) indica la ubicacin del dgito seleccionado. y
cambia con el movimiento del eje y del ratn.

Disear y sintetizar este circuito y verificar su funcionamiento.

Vous aimerez peut-être aussi