EJERCICIO 7. Carlos Gómez Osuna Marisa López Vallejo

Documentos relacionados
UART. Diseño de Sistemas con FPGA 1er cuatrimestre 2013 Patricia Borensztejn

SISTEMAS ELECTRÓNICOS DIGITALES

2.5-1 USART Introducción.

Sistema de Gestión de Aplicaciones Implementadas en FPGAs

SelectRAM+memory Bloques de memoria RAM En las FPGAs Spartan IIE

Diseño de un sistema de adquisición de datos de un micrófono utilizando una FPGA

INTRODUCCIÓN. Comunicación Serial.

Laboratorio 5: Tarjeta de Desarrollo Spartan-3

MICROPROCESADORES I ELECTRONICA DIGITAL III INTERFASE PROGRAMABLE A PERIFERICOS PPI 8255

Periféricos Interfaces y Buses

Bus I 2 C. Introducción

PCF8574 EXPANSOR REMOTO 8-BIT I/O PARA I²C-BUS

Comunicación MM4 - USS - S7-200

Figura 2. Formato de un dato serie síncrono.

8.3. Introducción a las E/S del sistema

Electrónica Digital. Actividad Dirigida. Implementación de un Cronómetro Digital

USB232. Hoja de datos

Diseño de una calculadora

Laboratorio 06. Diseño e implementación de un sistema digital para la captura de caracteres desde teclado

COMUNICACIÓN SERIE (RS232)

La expresión módem procede de las palabras modulador-demodulador, que son las dos funciones básicas que realiza ese dispositivo.

Relación de Problemas de Circuitos Secuenciales

TEMA 6.- INTERFACES PARA DISCOS DUROS. nexo de conexión que facilita la comunicación entre dos dispositivos

GENERADOR DE SECUENCIAS PROGRAMADAS PARA LA VERIFICACIÓN DE SISTEMAS DIGITALES GSProg

Trabajo 3. PROTOCOLOS DE COMUNICACIÓN SERIAL INDUSTRIALES Edwin Gilberto Carreño Lozano, Código:

Tutoría 2. Banco de memoria de 8 y 16 bits (8086)

Circuito de refresco de un Display

Práctica 5MODBUS: Bus Modbus

TICA EN LA ESCUELA. El Robot (hardware) Alicia Escudero. Apellido y Nombre: Escudero Alicia. Tema: características de un robot

ESCUELA UNIVERSITARIA DE INFORMÁTICA DE SISTEMAS UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA. Apuntes de la asignatura de: 3(5,)e5,&26

SUPER CONTROLADOR DE SERVOS S310175

INSTRUMENTACIÓN AVANZADA Departamento de Ingeniería Eléctrica y Electromecánica Facultad de Ingeniería Universidad Nacional de Mar del Plata

Sensores inalámbricos de bajo

Módulo 2 n. Figura 2.1. Simbología de un contador

Tema 9 Periféricos de Entrada

Tema 10: Transmisión de datos

MODBus RTU en los registradores CAMRegis

SISTEMA DE COMUNICACIÓN VÍA RADIO ENTRE PC Y MICROBOT.

I2C. Ing. Pablo Martín Gomez

M-Bus Master MultiPort 250D

2).Diseñar los circuitos cuyas tablas de estados son las siguientes:

ITT-327-T Microprocesadores

Tema: Comunicación en Serie. Interfaz RS-232.

UART. Diseño de Sistemas con FPGA 2 o cuatrimestre 2011 Patricia Borensztejn

PicController. Manual de usuario. Raquel Sánchez Díaz

12. Pruebas Realizadas

Práctica I.- Introducción a los Sistemas Secuenciales

Registros. Registro de Corrimiento Básico

TEMA 5.3 SISTEMAS DIGITALES

Arquitectura de Computadoras. Anexo Clase 8 Buses del Sistema

ARQUITECTURA DE LOS SISTEMAS BASADOS EN MICROPROCESADOR

Estructura de Microprocesadores. Profesor Ing. Johan Carvajal Godínez

MC-250 Internet of Things: Introducción a las Radios Definidas por Software (SDR) Profesor: Cesar Azurdia Auxiliar: Javier Rojas

VOCABULARIO DEL HARDWARE. Docente Yeni Ávila

VHDL. Carlos Andrés Luna Vázquez. Lección 10 Problemas

HARDWARE USB/RS232 (28 servos)

6. Entrada y Salida Explicación de la interfaz entre el computador y el mundo exterior.

Electrónica Digital II

AUTOMATIZACIÓN INDUSTRIAL

Tema 1 - Introducción Hoja de problemas

Manejo de Entrada-Salida. Arquitectura de Computadoras

Guía de uso Tarjeta Nexys 2 FPGA Spartan-3E

DALI RS232 SCI. Ficha técnica. DALI RS232 Interface

ESTRUCTURA BÁSICA DEL µc AT89C51

Unidad de conexión de encoder S.S.I. CJ1W-CTS21. Introducción Hardware Conexionado Puesta en marcha Configuración Operación

Laboratorio virtual para la programación de FPGAs

Ejercicios de repaso. 1.- Diseñe un contador asíncrono ascendente módulo 16 utilizando 74XX76. Debe poseer RESET externo.

AUTOMATIZACIÓN - CURSO: Práctica 4: Sistema de Monitorización de tiempo mediante Arduino

Unidad III. Interfaces de comunicación Series, USB, CAN, Field Bus, Etc.

Lab 6. Cuádruple registro de 16 bits y 3 puertos E/S

Dispositivos Lógicos Programables

Práctica 2. Implementación de un driver básico para la transmisión de datos a través de la UART.

SSI INFORMACIÓN GENERAL ENCODERS ABSOLUTOS Y ABSOLUTOS PROGRAMABLES

Estado avanzado Modo paralelo 1. Aceptar inicial Modo paralelo 2 Mem. int trabajo PCL SmartSwitch Modo NPA PS SmartSwitch Mem int paralela Protocolo

Tipos de Filtros Introducción

CONTADORES CARACTERISTICAS IMPORTANTES UTILIDAD CONTADORES DE RIZADO. CONTADOR DE RIZADO MODULO- 16.

Universidad Nacional Autónoma de México Facultad de Ingeniería División de Ingeniería Eléctrica

Guía rápida de utilización

Diseño Lógico I. FACET - U.N.T. Año PROYECTO 1: ADC CON PROTOCOLO SPI y MODULACION PWM.

Tema 7 Registros y Contadores

Redes de Comunicaciones. Ejercicios de clase Tema 3

2.1 Características Técnicas

Tema 4: SISTEMAS DE ENTRADA/SALIDA. Un computador no puede estar formado sólo por la CPU y la memoria.

NT 3 PROGRAMACION ON-LINE DE TODA LA FAMILIA APPCON

TEMA 8. REGISTROS Y CONTADORES.

Ventajas del BUS I2C

MEDIDOR MONOFÁSICO TRIFILAR

Protocolo de Enlace de Datos

Manejo de Entrada-Salida. Arquitectura de Computadoras

ESTRUCTURA FÍSICA DEL µp 8086

Puede usarse en cualquier controlador de riego que active las válvulas aplicando 24 V AC (lo más habitual).

ADMINISTRACIÓN GENERAL DE TECNOLOGÍA DE LA INFORMACIÓN ADMINISTRACIÓN CENTRAL DE DESARROLLO Y MANTENIMIENTO DE APLICACIONES

SiAM Conversor Versión 2.0. siam CONVERSOR EXTERNO RS232-RS485 AUTO-VELOCIDAD AUTO-RTS. software i automatismes morvedre. Manual del usuario

Sistemas Digitales I Taller No 2: Diseño de Circuitos combinacionales usando VHDL

ANEXO APLICACIÓN DE FIRMA

PRÁCTICA 6. CIRCUITOS ARITMÉTICOS

Periféricos Interfaces y Buses

LABORATORIO DE TECNOLOGÍA DE COMPUTADORES PRÁCTICA 7

REDES DE DATOS Modelo OSI. Angélica Flórez Abril, MSc.

Registros de desplazamiento

Transcripción:

EJERCICIO 7 Carlos Gómez Osuna Marisa López Vallejo 1

2

Ejercicio 7. Interfaz con un puerto serie RS232 7.1. Descripción del problema La unidad de prototipado que se utiliza en el laboratorio es la XSB-300E de Xess [1], que incluye, entre sus sistemas periféricos al dispositivo programable, una conexión para puerto de comunicaciones serie de 9 pines. El propósito de este ejercicio es implementar un controlador que ofrezca una interfaz clara a un sistema cliente de forma que puedan transmitirse y recibirse datos por la línea serie siguiendo el estándar RS232 simplificado [3]. El esquema sería análogo al que aparece en la Figura 1. Tx serie RS232 S. TX FPGA Periférico CLIENTE Rx serie RS232 S. RX Figura 1. Esquema del sistema Esta interfaz de comunicaciones serie asíncrona se compone, en su versión más simple, de una línea de transmisión y otra de recepción, siendo ambas configurables en los siguientes aspectos: Velocidad de transmisión; Número de bits de datos por palabra; Existencia o no de bit de paridad y tipo de ésta; Número de bits de parada. El sistema que a continuación se describe convierte por un lado la interfaz de transmisión en una escritura asíncrona con señales de negociación, y por otro lado la recepción en una lectura de una memoria de tipo cola (FIFO) síncrona. La frecuencia de trabajo del sistema, así como la velocidad de transmisión y recepción de los datos, son fácilmente controlables por medio de una serie de contadores internos al sistema que pueden variarse antes de la síntesis correspondiente. Para el diseño del controlador se ha tomado como ejemplo una frecuencia de 20MHz y una velocidad de transmisión de 115200 bps. El resto de parámetros de la transmisión se han fijado a unos valores suficientemente genéricos como para permitir el uso del controlador en una amplia variedad de situaciones, estos valores son: 8 bits de datos por palabra; Sin bit de paridad; 1 bit de parada. De este modo, la palabra que se va a enviar y/o recibir tiene la forma de la Figura 2 (nótese que se transmite el bit menos significativo en primer lugar). 3

start LO D0 D1 D2 D3 D4 D5 D6 D7 Figura 2. Palabra de datos RS232 stop HI 7.2. Primera aproximación a la solución, diagrama de bloques La propia definición del problema deja entrever que la solución ha de partir de la división clara entre sistema transmisor y sistema receptor, dado que cada uno de ellos posee una serie de características peculiares. Así para el transmisor se buscan las siguientes prestaciones: Recibir los datos del sistema cliente por un bus paralelo asíncrono con señales de negociación; Recibir un dato (byte) cada vez y enviarlo según se haya recibido; Indicar mediante una línea que el sistema se encuentra listo para su uso u ocupado. Las características que se piden al sistema receptor son algo diferentes: Disponer de una interfaz síncrona y paralela de retirada de datos por medio de una simple señal de lectura; Capacidad para recibir múltiples datos y almacenarlos internamente hasta que el sistema cliente desee retirarlos; Disponer hacia el sistema cliente de líneas que indiquen que existen datos por retirar y que el controlador ha agotado su memoria interna. Teniendo en cuenta estos atributos, se puede ver que el controlador RS232top se compone de los bloques indicados en la Tabla 1. COMPONENTE FUNCIÓN RS232_TX Máquina de estados que se encarga de controlar la transmisión del último dato enviado por el sistema cliente, así como de informar a éste de la disponibilidad de la línea de transmisión. RS232_RX ShiftRegister Fifo Máquina de estados que controla la línea de recepción y se encarga de muestrear su valor a fin de extraer los datos de las palabras recibidas. Registro de carga serie y salida paralelo que se encarga de situar en paralelo los datos recibidos en serie. Memoria interna de tipo cola para almacenar los datos recibidos. Se encarga además de generar las señales que indican que se encuentra llena o vacía (seleccionada de 64 bytes a partir de las librerías CORE de Xilinx). Tabla 1. Bloques de la interfaz RS232 El protocolo de recepción de datos del sistema cliente, así como ciertos registros internos, se encuentra implementados dentro de la entidad superior en la jerarquía (RS232top). La entidad del controlador RS232top dispone por lo tanto de las líneas de entrada/salida descritas en la Tabla 2. 4

Data_in [7..0] Entrada Entrada de los datos que el sistema cliente desea enviar. Valid_D Entrada Validación del dato de entrada por parte del sistema cliente. Activa a nivel bajo. ACK_in Salida Reconocimiento del dato para transmitir. Activa a nivel bajo, se activa al guardar un nuevo dato válido y se desactiva al desactivarse Valid_D. TX_RDY Salida Indica que el transmisor está disponible. Activa a nivel alto. TD Salida Línea de transmisión RS232. RD Entrada Línea de recepción RS232. Data_out [7..0] Salida Datos de salida de la Fifo interna del subsistema receptor. Data_read Entrada Petición del sistema cliente de lectura de un nuevo dato de los recibidos y almacenados. Activa a nivel alto. Full Salida Indica que la memoria interna del subsistema receptor está llena. Activa a nivel alto. Empty Salida Indica que la memoria interna del subsistema receptor está vacía. Activa a nivel alto. Tabla 2. Líneas de RS232top 7.3. Bloques del diseño, subsistema transmisor 7.3.1. RS232_TX Para la correcta transmisión de datos por la línea serie RS232 se diseña una máquina de estados que se limita a construir la palabra de acuerdo con los parámetros ya mencionados con la ayuda de una serie de contadores internos que generan bits de adecuada longitud según la frecuencia y velocidad de transmisión seleccionada, y se encargan de transmitir los bits de datos en el orden adecuado. La entidad RS232_TX dispone de las líneas de entrada/salida de la Tabla 3. Start Entrada Comando de comienzo de transmisión, activa a nivel alto. Data [7..0] Entrada Byte de datos a transmitir. EOT Salida Indica el final de una transmisión, activa a nivel alto. TX Salida Línea de transmisión RS232. Internamente quedan definidos dos contadores: Tabla 3. Líneas de RS232_TX Data_count: controla qué bit de datos se está enviando; Pulse_width: controla la longitud de los pulsos enviados según la frecuencia del sistema y la velocidad de transmisión. Para variar el límite de cuenta de este contador basta modificar la constante PulseEndOfCount. 5

Para la máquina se definen cuatro estados siguiendo el formato de la palabra: Idle, StartBit, SendData y StopBit. Como puede suponerse la máquina permanece en el estado Idle hasta que recibe la señal de Start, momento en el que pasa a StartBit; en ese instante la máquina empieza a contar con Pulse_Width para enviar un bit de longitud adecuada (el bit de comienzo es siempre un 0) pasando después a SendData. En SendData la máquina va enviando los bits de datos según el contador Data_count, pasando al terminar al estado StopBit. Una vez enviado el bit de parada se regresa al estado Idle. Evidentemente la salida EOT se encuentra negada en todos los estados exceptuando Idle. Esta línea se conecta directamente a la salida del controlador como TX_RDY. 7.3.2. Protocolo de escritura de datos para el sistema cliente Para la construcción del protocolo interfaz entre el sistema cliente y el controlador RS232 se hace uso de un proceso dentro de la entidad top del sistema, de modo que el transmisor pueda implementarse en otros diseños siguiendo otros protocolos de salida. 7.4. Bloques del diseño, subsistema receptor 7.4.1. ShiftRegister Para la recepción de datos es necesario un sistema de memoria que se encargue de convertir los datos muestreados de la línea serie en un formato paralelo. Con este propósito se hace uso de un registro de desplazamiento con señal de habilitación de carga. Este sistema dispone de las líneas descritas en la Tabla 4. Enable Entrada Permiso de carga y desplazamiento, activa a nivel alto y de forma síncrona. D Entrada Dato de llegada. Q[7..0] Salida Byte recibido por la línea RS232. Tabla 4. Líneas de ShiftRegister 7.4.2. FIFO Para almacenar los datos recibidos hasta que el sistema cliente desee retirarlos se opta por utilizar una memoria que sigue el modelo FIFO de manera síncrona. Para la construcción de este componente se ha preferido hacer uso de los modelos que el fabricante de la FPGA, Xilinx, ofrece como optimizados para cada uno de sus dispositivos programables. El software para la generación de estos módulos optimizados es el CoreGen [4], incluido en el paquete de diseño de Xilinx, ISE. El modelo a partir del cual se generó la FIFO es el Synchronous FIFO v. 5.0, que se configuró según los requisitos del sistema: una memoria de bloque de 64 bytes que contuviera las líneas indicadas en la Tabla 5. Sinit Entrada Reset asíncrono y activo a nivel bajo. Din[7..0] Entrada Puerto de escritura de datos. Wr_en Entrada Habilitación de escritura síncrona y activa a nivel alto. Rd_en Entrada Habilitación de lectura síncrona y activa a nivel alto. Dout[7..0] Salida Puerto de lectura de datos. Full Salida Indica que la FIFO está llena. Empty Salida Indica que la FIFO está vacía. Tabla 5. líneas de FIFO 6

7.4.3. RS232_RX Del mismo modo que para el transmisor, es necesario disponer de una máquina de estados que en este caso se dedicará a muestrear la línea de recepción serie en los momentos oportunos. Para ello se dota a este bloque con las líneas de entrada/salida indicadas en la Tabla 6. LineRD_in Entrada Línea de recepción RS232. Valid_out Salida Indica que el dato muestreado es válido y debe ser almacenado en el registro de desplazamiento, activa a nivel alto. Code_out Salida Dato de salida (la línea RS232 es directamente pasada a la salida). Store_out Salida Indica que el byte recibido es válido y debe pasar del registro de desplazamiento a la memoria interna, activa a nivel alto. Tabla 6. Líneas de RS232_RX Para cumplir su propósito la máquina dispone además de tres contadores: DataCount, que se encarga de llevar la cuenta de los bits de datos recibidos hasta el momento; HalfBitCounter, que se encarga de retardar la máquina de forma que el primer bit (bit de comienzo) sea muestreado en su centro; BitCounter, que se encarga de retardar la máquina para que el segundo y subsiguientes bits sean muestreados en su centro. Estos contadores deben variarse si se desea variar la frecuencia del reloj del sistema y/o la velocidad de recepción de datos. La máquina dispone de cuatro estados: Idle, StartBit, RcvData, StopBit. Ésta permanece en el estado Idle hasta que detecta un nivel bajo en la línea de recepción, momento en el que se dispara el receptor. Como puede imaginarse, el control, cuando se encuentra en el estado RcvData, aumenta el contador DataCount cada vez que BitCounter llega al final de su cuenta, momento en el cual se muestrea la señal serie y se da la orden de almacenarla en el registro de desplazamiento (Valid_out = 1 ). Una vez recibidos los datos, se comprueba que no hay errores de alineamiento en la palabra mediante la comprobación del bit de parada, y si éste es correcto, se da la orden de que el dato recibido y almacenado en el registro de desplazamiento pase a la memoria interna (Store_out = 1 ). 7.5. Sistema de pruebas, interfaz con el emulador de terminal minicom Para comprobar el correcto funcionamiento del controlador se propone un sencillo sistema que sirve de interfaz con el programa de emulador de terminal minicom. Este programa ofrece un sencillo interfaz gráfico para la configuración de los parámetros de transmisión de palabras RS232 a través de los puertos de comunicación de un ordenador personal, por lo que puede ser fácilmente adecuado a los parámetros de configuración del controlador hasta ahora descrito. El sistema de pruebas debe ser capaz de recibir un byte de datos y presentarlo en la barra de LEDs dispuesto en la XSB-300E y a su vez enviar un byte de datos que sea seleccionado mediante una batería de interruptores y enviado mediante el accionamiento de un pulsador. 7

Ambas funcionalidades se encuentran implementadas en la entidad Spartan, que se encuentra en el fichero spartan.vhd. Esta entidad se limita a envolver una instancia del sistema RS232top con una cierta lógica de control necesaria para la correcta visualización de datos recibidos (o lo que es equivalente, el control de lectura de datos de la memoria interna del sistema). La entidad Spartan dispone de las líneas de entrada/salida especificadas en la Tabla 7. Clk Entrada Reloj del sistema (20 MHz). TD Salida Línea de transmisión RS232. RD Entrada Línea de recepción RS232. Data_in[7..0] Entrada Dato de entrada que será enviado, conectado a los interruptores de la XSB-300E. Data_out[7..0] Salida Último dato recibido, conectado a la barra de LEDs de la XSB-300E. Start_TX Salida Línea de control de transmisión, conectado a un botón de la XSB- 300E, activo a nivel bajo. Tabla 7. Líneas de Spartan 7.6. Ficheros disponibles En el directorio Ejercicio7, dentro de PraticaI, estarán disponibles los siguientes ficheros: RS232top.vhd: definición de la entidad RS232top de la Tabla 2 junto con una implementación haciendo uso de los módulos de la Tabla 1. Incluye en un proceso llamado Clocking el protocolo asíncrono de comunicación entre cliente y transmisor. RS232top_TB.vhd: fichero de testbench para el anterior. spartan.vhd: fichero top que conecta el RS232top con un cliente básico que emplea los microinterruptores y la barra de LEDs de la placa Xess. spartan.ucf: fichero de correspondencia entre pines de la FPGA y el diseño. 7.7. Bibliografía recomendada [1]. Xess Corp., XSB Board V1.0 Manual, 2003. [2]. Sundar Rajan, Essential VHDL RTL Synthesis Done Right, S&G Publishing, 1998. [3]. Christopher E. Strangio, The RS232 Standard. A Tutorial with Signal Names and Definitions., CAMI Research Inc, 1993. [4]. Xilinx Inc, Coregen libraries, 2003. [5]. Xilinx Inc, www.xilinx.com [6]. Xilinx Inc, Spartan-IIE 1.8V FPGA Family, 2003. 8