Você está na página 1de 24

UART

Diseo de Sistemas con FPGA 2o cuatrimestre 2011 Patricia Borensztejn

UART
Universal Asynchronous receiver and transmitter: dispositivo que enva datos paralelos sobre una lnea serie. RS-232: standard que especifica las caractersticas elctricas, mecnicas, funcionales de los dos equipos que se comunican. Debido a que el nivel de voltaje definido en RS-232 es distinto al voltaje de los pines de E/S de la FPGA, es necesario un chip convertidor entre ambos (entre el puerto serie y los pines de la FPGA). En la placa S3 hay un puerto RS-232 con el conector standard de 9 pines, y la placa contiene el convertidor de tensin. Vamos a disear entonces la UART.

RS-232
RS232 (Recommended Standard 232, tambin conocido como Electronic Industries Alliance RS-232C) es una interfaz que designa una norma para el intercambio de una serie de datos binarios entre un DTE (Equipo terminal de datos) y un DCE (Data Communication Equipment, Equipo de Comunicacin de datos), aunque existen otras en las que tambin se utiliza la interfaz RS-232.

Puertos RS-232

Puertos RS-232 de la Spartan3e


As shown in Figure 7-1, the Spartan-3E Starter Kit board has two RS-232 serial ports: a female DB9 DCE connector and a male DTE connector. The DCE-style port connects directly to the serial port connector available on most personal computers and workstations via a standard straight-through serial cable. Use the DTE-style connector to control other RS-232 peripherals, such as modems or printers, or perform simple loopback testing with the DCE connector.

Puertos RS-232
Figure 7-1 shows the connection between the FPGA and the two DB9 connectors. The FPGA supplies serial output data using LVTTL or LVCMOS levels to the Maxim device, which in turn, converts the logic value to the appropriate RS-232 voltage level. Likewise, the Maxim device converts the RS-232 serial input data to LVTTL levels for the FPGA. A series resistor between the Maxim output pin and the FPGAs RXD pin protects against accidental logic conflicts. Hardware flow control is not supported on the connector. The ports DCD, DTR, and DSR signals connect together, as shown in Figure 7-1. Similarly, the ports RTS and CTS signals connect together.

Puerto Serie

UART
La UART incluye un transmisor y un receptor. El transmisor es bsicamente un shift register que carga los datos en paralelo a transmitir y luego los shiftea uno a uno a una velocidad determinada (rate). Empezando por el LSB(Least Significand Bit) El receptor, recibe los bits uno a uno y reensambla el dato completo. Procedimiento:
Cuando la lnea serie no lleva datos (iddle) est a 1. La transmisin comienza con un bit de start (0), seguido por los bits de datos (6,7, o 8), un bit opcional de paridad (paridad par (igual a cero cuando hay un nmero par de unos) o impar) y finaliza con los bits de stop (1, 1.5 o 2). No se enva seal de clk. Antes de iniciarse la transferencia, el emisor y el transmisor deben ponerse de acuerdo en lo que se transmite y adems en la velocidad de transmisin (baud rate: bits por segundo)

UART: Subsistema receptor


Mdulo Generador de Baud Rate
Debido a que no hay un reloj que permita decidir cuando el dato (bit) est disponible a la entrada, el receptor usar un sistema de oversampling que permite estimar el punto medio del bit transmitido y adquirirlo en ese instante. Este mdulo es el encargado de generar las seales para el procedimiento de oversampling. En funcin de los parmetros acordados (formato de la trama ) y del procedimiento de oversampling, se van obteniendo los bits hasta completar el dato. Provee un mecanismo para sealizar al sistema la llegada de un nuevo dato, y previene que ste no sea adquirido dos o mas veces. Provee buffers para almacenar los datos entre el sistema y el receptor.

Modulo Receptor

Mdulo Interface

FPGA

Procedimiento de Muestreo
Dado el baud rate de transmisin, se genera una frecuencia que es 16 veces el baud rate, y se sigue el siguiente procedimiento:
1. 2. 3. Esperar que la seal se ponga a 0, el principio del bit de start, e iniciar el conteo. Cuando el conteo llega a 7, quiere decir que estamos en la mitad del start bit, se resetea el contador a cero. Cuando el contador llega a 15, quiere decir que estamos en la mitad del primer bit de datos. Se obtiene el bit y se resetea el contador. Repetir el paso 3 por cada bit de datos. Si hay bit de paridad, repetir el paso 3 para el bit de paridad Repetir el paso 3 para el bit de stop.

4. 5. 6.

Mdulo Generador de Baud Rate


Su funcin ser generar un tick 16 veces por baud rate. Si el baud rate es de 19.200 ciclos por segundo, la frecuencia de muestreo debe ser 19.200 *16= 307.200 ticks por segundo. Si el reloj de la placa (en spartan) es de 50 Mhz, entonces hay que generar un tick cada 163 ciclos de reloj.
50 *106 163 307200

Para ello podemos utilizar un contador modulo 163. La seal generada, llamada tick no se comporta como un reloj, sino mas bien como un enable, porque valdr 1 durante un ciclo de reloj, del reloj del sistema, y luego valdr cero.

Mdulo Generador de Baud Rate


Usamos un contador mdulo m genrico, instanciado a mod 163(M) y 8 (N)bits Mdulo Generador de Baud Rate (mod_m_counter.v)

Mdulo Receptor
Este mdulo es el responsable del sampleo de la lnea de datos serie, debe seguir el procedimiento del muestreo descrito anteriormente, de forma que ser necesario realizar una mquina de estados o bien un diagrama de estados. (ASMD: algorithmic state machine with Data Path)

FSM y ASM
Para representar Maquinas de Estados Finitas (FSM) se pueden utilizar:
Grados de Estado o Diagramas de Estado O bien ASM: Algorithmic State Machine

Ambos tienen su extensin con Data Path:


FSMD ASMD

ASMD del Mdulo Receptor

Modulo Receptor
Mdulo Receptor: uart_rx.v

Mdulo Interface

Provee un mecanismo para sealizar al sistema la llegada de un nuevo dato, y previene que ste no sea adquirido dos o mas veces. Provee buffers para almacenar los datos entre el sistema y el receptor.

Mdulo Interface
El mdulo Interface utiliza una FIFO para almacenar el dato (fifo.v)

Mdulo Transmisor
La organizacin del transmisor es similar a la del receptor, es decir, consiste de:
Transmisor:
Es un shift register que enva hacia fuera uno a uno los bits a una determinada velocidad. Como aqu no hay muestreo de bits, la frecuencia de los ticks es 16 veces ms lenta que en el caso del receptor. Usa el mismo generador de baud rate que el receptor pero se le agrega un contador de forma que cada bit es shifteado cada 16 ticks.

Generador de baud rate


El mismo mdulo que usa el receptor.

Interface:
FIFO de transmisin

Mdulo Transmisor
Mdulo Transmisor (uart_tx.v) Mdulo Interface (fifo.v)

UART Completa
Cdigo UART (uart.v)

Prueba de la UART
El circuito de prueba consiste en recibir desde la PC datos. Estos datos se incrementan en 1 y vuelven a ser transmitidos a la PC. Las seales de control de la FIFO (escribir en la FIFO de transmisin y eliminar de la FIFO de recepcin) se generan al apretar el pushbottom. Los datos de entrada a la UART estn conectados a los LEDS, y las seales tx_full y rx_empty a los dos segmentos horizontales del digito de la derecha de los 7 segmentos (todo un debugger).

HyperTerminal
Configurar el Hyper Terminal a:
19.200 baudios, 8 bits de datos, 1 bit de stop y no paridad.

Prueba de la UART
Por ejemplo:
Conectar el cable serie (o usb-serie) a la PC y a la FPGA Abrir el Hiper Terminal y configurarlo para la conexin Tipear HAL en el Hiper terminal Apretar el pushbottom 3 veces (cada vez que se aprieta remueve un dato de la cola de recepcion, y lo introduce, ya incrementado, en la de transmisin) Debemos ver en la PC: IBM (la tpica!)

Você também pode gostar