Está en la página 1de 3

Ing.

Electrónica – Circuitos Digitales 2

Interfaz Serial

El puerto serie es el periférico más utilizado en sistemas electrónicos para transmitir y recibir
datos de forma sencilla. A pesar de ser un estandar muy antiguo, su simplicidad de uso le hace
perfecto para la transmisión de pequeñas cantidades de datos o para mostrar consolas de texto.

En sistemas digitales es muy utilizado para poder controlar una shell de comandos de linux u
otro sistema operativo sin necesidad de utilizar teclados ni monitores externos. También en
sistemas como Arduino se utiliza para descargar el programa a ejecutar a la memoria del
microcontrolador. Esto es debido a que es un módulo hardware muy simple y no necesita
ningún protocolo ni driver complejo para su uso, haciendo que cualquier sistema pueda acceder
a él con una cantidad mínima de código.

Este tipo de protocolo de comunicaciones ha sido nombrado de muchas maneras diferentes:


puerto serie, interfaz RS-232, puerto COM, pero el nombre correcto es en realidad UART
(Transmisor receptor asíncrono universal). Un UART es uno de los métodos más simples para
hablar con su FPGA. Se puede usar para enviar comandos desde una computadora a un FPGA
y viceversa.

Un UART es una interfaz que generalmente envía un byte a la vez a través de un solo cable.
No se reenvía el reloj en sincronía con los datos, por lo que se llama asíncrono. Los UART
pueden funcionar en Half-Duplex (dos transmisores que comparten una línea) o Full-Duplex
(dos transmisores cada uno con su propia línea). Los UART tienen varios parámetros que el
usuario puede establecer. Estos son:

 Baud Rate (9600, 19200, 115200, otros)


 Número de bits de datos (7, 8)
 Bit de paridad (encendido, apagado)
 Bits de parada (0, 1, 2)
 Control de flujo (ninguno, encendido, hardware)

Esta configuración debe ser la misma en ambos lados de la interfaz (el receptor y el
transmisor) para que la comunicación funcione correctamente. Cuando la configuración es
incorrecta, pueden aparecer caracteres extraños e inusuales en la pantalla. Veamos cada una de
estas configuraciones individualmente.

La velocidad en baudios es la velocidad a la que se transmiten los datos en serie. 9600 baudios
significan 9600 bits por segundo. El número de bits de datos casi siempre se establece en ocho.
Se puede agregar un bit de paridad después de enviar los datos. La paridad siempre se calcula
haciendo una operación XOR en todos los bits de datos. Un bit de parada siempre se establece
en 1, y puede haber 0, 1 o 2 bits de parada. El control de flujo generalmente no se usa en las
aplicaciones actuales y probablemente se establecerá en None.

1
Ing. Luis Gutiérrez Magán
Ing. Electrónica – Circuitos Digitales 2

Como se mencionó anteriormente, no se envía ningún reloj junto con los datos. En cualquier
interfaz que no tenga un reloj, los datos se deben muestrear para recuperarlos correctamente.
Debe muestrearse al menos ocho veces más rápido que la velocidad de los bits de datos. Esto
significa que, para un UART de 115200 baudios, los datos deben muestrearse al menos a 921.6
KHz (115200 baudios * 8). Se puede usar un reloj de muestreo más rápido.

El FPGA está continuamente muestreando la línea. Una vez que ve la transición de línea de
mayor a menor, sabe que viene una palabra de datos UART. Esta primera transición indica el
bit de inicio. Una vez que se encuentra el comienzo del bit de inicio, el FPGA espera la mitad
de un período de bit. Esto garantiza que se muestree la mitad del bit de datos. A partir de
entonces, el FPGA solo necesita esperar un período de un bit (según lo especificado por la
velocidad en baudios) y muestrear el resto de los datos. La figura a continuación muestra cómo
funciona el receptor UART dentro del FPGA. Primero se detecta un flanco descendente en la
línea de datos en serie. Esto representa el bit de inicio. El FPGA luego espera hasta la mitad
del primer bit de datos y muestrea los datos. Hace esto para los ocho bits de datos.

En este artículo vamos a crear un módulo VHDL que envíe la cadena “Hola Mundo” a través
del puerto serie. Lo implementaremos sobre la FPGA de Altera que hemos utilizado en otros
tutoriales, pero lo hemos probado en otras placas como la Nexys4 de Xilinx y funciona sin
ningún problema.
El puerto serie es un estándar bastante antiguo y aunque se sigue utilizando, los ordenadores
actuales no incluyen el conector DB9 de 9 pines utilizado por el puerto original. Además, la
placa de Altera que utilizamos no tiene ni siquiera este conector, así que tenemos que utilizar
un adaptador. El módulo que vamos a usar se llama FT232RL.

Este módulo tiene un conector USB y un pequeño chip que convierte las señales RS232 a
señales USB y viceversa. Podemos utilizarlo para transmitir simplemente conectando un cable
al pin marcado como RX y otro a GND. A partir de ese momento podemos enviar paquetes con
la FPGA y recibirlos en el PC utilizando un programa como TeraTerm.

Al conectar el módulo FT232 al ordenador este lo detectará como un puerto serie normal y
podremos conectar TeraTerm o Putty.

2
Ing. Luis Gutiérrez Magán
Ing. Electrónica – Circuitos Digitales 2

3
Ing. Luis Gutiérrez Magán

También podría gustarte