INSTITUTO POLITÉCNICO NACIONAL
UNIDAD PROFESIONAL INTERDISIPLINARIA EN
INGENIERÍA Y TECNOLOGÍAS AVANZADAS
Dispositivos Lógicos programables
Comunicación serie (UART)
El periférico Universal Asynchronous Receiver/Transmitter (UART) utiliza una comunicación serial, esto
significa que para transmitir y/o recibir información entre los dispositivos es de bit en bit , utilizando 2 líneas de
comunicación y una tierra en común, como se observa en el siguiente diagrama:
Conexión entre dos dispositivos
Donde para transmitir un dato se utiliza la señal TX, y RX para recibir un dato y el punto común entre los dos
dispositivos es la terminal denominada GND. La transmisión utiliza un protocolo de comunicación ejemplificado
en el siguiente diagrama:
Protocolo de comunicación – envío de un dato (1 byte)
La señal TX esta inactiva mientras no se envía algún dato y se mantiene en el estado ‘1’ lógico, para que se inicie
la comunicación cambia el estado a ‘0’, conociéndolo como bit de inicio (BI), posteriormente se envían 8 Bits
(D0:D7) que corresponden al byte que se envía, empezando con el bit menos significativo (D0), a continuación
se envía el Bit de paro (BP) que siempre tendrá un valor de ‘1’, cabe resaltar que cada bit tiene una duración de
un tiempo t.
El control de la comunicación no se realiza por señales, es controlado por el tiempo da cada bit. El tiempo esta determinado
por la cantidad de bits que se envían en un segundo (baudios).
Diagramas de códigos:
1) BOTÓN START DETECCIÓN DE CAMBIO
Obtiene el estado anterior del botón START, en el flanco positivo.
2) ANTI-REBOTE
Mientras la señal START no sea estable la señal COUNT_REBOTE se reiniciará.
La señal START_FIX se le asigna la señal START cuando esta señal es estable, START_FIX es una señal
“limpia” sin rebote.
3) DETECCIÓN DE CAMBIO DE LA SEÑAL START_FIX
La señal START_FIX_ANT tiene el valor anterior de la señal FIX_ANT, se puede detectar el cambio de la
señal START_FIX.
4) SEÑAL DE INICIO
Detección de un pulso positivo en la señal “limpia” para iniciar la comunicación, esta señal INICIO hasta el
momento estará en alto durante toda la comunicación.
CÓDIGO VHDL DEL PROTOCOLO DE COMUNICACIÓN
Todo el control es por el tiempo que dura un bit, por lo tanto se tiene un contador de tiempo, que solo
funcionará cuando la comunicación ya este iniciada.
1) BAUDIOS
2) NBITS
3) ENVÍO DE DATOS (PROTOCOLO)
4) REINICIO DE LA SEÑAL INICIO (FIN DE LA COMUNICACIÓN)