Transmision de Datos- Converter A/D D/A

47
Ing. Fernando Figueroa INTRODUCCION El objetivo de este trabajo es el desarrollo de un sistema de transmisión de datos, mediante la implementación de hardware y software. Este puede ser utilizado para el desarrollo futuro de Algoritmos de Modulación y Demodulación los que son necesarios para la transmisión de datos mediante la técnica de Multitono Discreto (DMT). La implementación de este sistema fue realizada por medio de una serie de algoritmos o módulos de software interconectados, conjuntamente con el desarrollo de una placa transmisora que convierte los datos digitales en una señal analógica y otra receptora que digitaliza la señal analógica recibida de un cable lo suficientemente largo para este propósito, 20 metros, en los ensayos. Los algoritmos presentes en este sistema son:– Codificación y Decodificación de Bits con el código Reed Solomon RS(255,223)– Transmisión y Recepción de archivos codificados y sin codificar. Cada módulo procesa una unidad de datos a la vez, entregando el resultado al módulo siguiente para su posterior procesamiento. Como resultado final de este trabajo se obtuvo un conjunto de programas flexibles y un par de placas que podrán ser empleados para experimentación y aprendizaje del sistema ADSL, el que se encuentra en constante evolución y desarrollo. Esta implementación tiene perspectivas de no agotarse, sino de constituirse en una base para el desarrollo de futuros trabajos. Debido a esto se pensó en un diseño lo más abierto y didáctico posible, implementando como lenguaje de programación BORLAND C++ 3.1. 5

Transcript of Transmision de Datos- Converter A/D D/A

Page 1: Transmision de Datos- Converter A/D D/A

Ing. Fernando FigueroaINTRODUCCION

El objetivo de este trabajo es el desarrollo de un sistema de transmisión de datos, mediante la implementación de hardware y software. Este puede ser utilizado para el desarrollo futuro de Algoritmos de Modulación y Demodulación los que son necesarios para la transmisión de datos mediante la técnica de Multitono Discreto (DMT).

La implementación de este sistema fue realizada por medio de una serie de algoritmos o módulos de software interconectados, conjuntamente con el desarrollo de una placa transmisora que convierte los datos digitales en una señal analógica y otra receptora que digitaliza la señal analógica recibida de un cable lo suficientemente largo para este propósito, 20 metros, en los ensayos. Los algoritmos presentes en este sistema son:– Codificación y Decodificación de Bits con el código Reed Solomon RS(255,223)– Transmisión y Recepción de archivos codificados y sin codificar. Cada módulo procesa una unidad de datos a la vez, entregando el resultado al módulo siguiente para su posterior procesamiento.

Como resultado final de este trabajo se obtuvo un conjunto de programas flexibles y un par de placas que podrán ser empleados para experimentación y aprendizaje del sistema ADSL, el que se encuentra en constante evolución y desarrollo. Esta implementación tiene perspectivas de no agotarse, sino de constituirse en una base para el desarrollo de futuros trabajos. Debido a esto se pensó en un diseño lo más abierto y didáctico posible, implementando como lenguaje de programación BORLAND C++ 3.1.

CAPITULO 1: Descripción del Sistema

5

Page 2: Transmision de Datos- Converter A/D D/A

El sistema fue desarrollado en base a dos subsistemas: a) Hardware y b) Software

a) Hardware

Los módulos de software se basan en un desarrollo de circuitos conversores analógico digital y digital analógico, interfase con el puerto paralelo de la PC, LEDs indicadores, y el correspondiente Driver o excitador de ADSL.

b) Software

El módulo de software está basado en un desarrollo en lenguaje C++; su función principal es la de:

A1) Implementar los algoritmos de comunicación digital y metodología ADSL.

A2) Realizar la comunicación entre sistemas adquisidores de datos y enlace de comunicación analógica.

1.1- HARDWARE

1.1.0- Esquema General del Hardware

El hardware de este sistema está conformado básicamente por los siguientes circuitos: CIRCUITO TRANSMISOR y CIRCUITO RECEPTOR. En la práctica se adicionan etapas extras para que el sistema pueda cumplir con su objetivo, que es el de transmitir y recibir información digital convertida en información analógica para que pueda ser enviada a través de grandes líneas de transmisión de datos. En la Figura 1.1 se muestra el diagrama de bloques del sistema

Figura 1.1- Diagrama en bloques que muestran los diferentes circuitos y su conexión.

1.1.1-CIRCUITO TRANSMISOR

El hardware está compuesto por dos circuitos independientes.

6

Page 3: Transmision de Datos- Converter A/D D/A

a) Circuito Transmisor

El circuito transmisor es el encargado procesar la señal digital que proviene de la PC transmisora y luego transmitirla como una señal analógica mediante un par de cables hacia el circuito receptor.

b) Circuito Receptor

El circuito receptor recibe la señal analógica que proviene del circuito transmisor y la convierte en señal digital que posteriormente será procesada por la PC receptora.

Descripción General

El circuito transmisor es el encargado de recibir los datos digitales desde el puerto paralelo (LPT1) y convertir esos datos de 8 Bits en una señal analógica que posteriormente será procesada para ser enviada por un cable telefónico, de aproximadamente 20mts, hasta un circuito receptor.

Diseño y Construcción

El circuito transmisor está constituido por el buffer 74LS540 que se conecta directamente en las líneas de datos (pines 2 al 9), cuya correspondencia es: dato 0-pin 2, dato 7-pin 9 del puerto paralelo de la PC. El circuito 74LS540 funciona como etapa separadora y al mismo tiempo mejora la capacidad de manejo de corriente del puerto. La Figura 1.2 indica las corrientes típicas de salida para cada chip.

Figura 1.2- Corrientes de salida para cada nivel lógico del buffer

SeriesTypical IOL

(sink current)Typical IOH

(source current)74LS540 12 mA -3 mA

Figura 1.2- Corrientes de salida del buffer 74LS540.

El circuito transmisor posee 8 diodos LED cuya función es proporcionar información visual de la actividad en las líneas de datos del puerto paralelo y están conectados en las líneas de salida del buffer. Cada LED rojo puede soportar una corriente de 20mA. Para limitar la corriente por cada diodo se conecta un resistor en serie de 1,3KOhm. En la Figura 1.3 se muestra la conexión del buffer al puerto de la PC y a los diodos (LEDs)

Conexión del Buffer

7

Page 4: Transmision de Datos- Converter A/D D/A

Figura 1.3- Esquema de conexión del Buffer 74LS540.

La señal digital que proviene del puerto es convertida en una señal analógica mediante el conversor digital analógico DAC0800. El conversor D/A se conecta directamente en las líneas de salida del puerto (Figura 1.4), esto es posible ya que ambos circuitos poseen compatibilidad en sus niveles lógicos y además las corrientes de entrada del conversor D/A son relativamente pequeñas sin representar una carga peligrosa para el puerto.

Conexión del Buffer al Conversor A/D

Figura 1.4- Conexión del Buffer 74LS540

Figura 1.5- Corrientes para los niveles lógicos de entrada DAC0800

8

Page 5: Transmision de Datos- Converter A/D D/A

Símbolo Parámetros Min Typ Max UnidadesIiL Logic ‘0’ -2.0 -10 mAIiH Logic ‘1’ 0.002 10 mA

Figura 1.5- Corrientes de entrada para los dos niveles lógicos del DAC. Conversor de Corriente

El conversor D/A entrega a la salida corrientes complementarias que luego serán convertidas en tensión por un simple circuito como se muestra en la Figura 1.6 Conversor de Corriente a Tensión

Figura 1.6- Esquema del circuito conversor de corriente a tensión.

El circuito conversor de corriente a tensión está formado por un amplificador operacional, en este caso se utilizó un TL081, y una resistencia; este circuito convierte la corriente de salida analógica del conversor D/A en una señal analógica de tensión .

Para ajustar la excursión de la señal de 0 a 5Volt se deben modificar los

valores de las resistencias de referencia y la resistencia de lazo utilizando las siguientes ecuaciones:

. (1.0)

(1.1)

(1.2)

Adopto y obtengo y En la Figura1.7 se muestran los valores de la tensión de salida

para algunos datos de entrada.

Estado B0 B1 B2 B3 B4 B5 B6 B7

9

Page 6: Transmision de Datos- Converter A/D D/A

Full Scale 1 1 1 1 1 1 1 1 5Full Scale-1LSB 1 1 1 1 1 1 1 0 4.99

Half Scale 1 0 0 0 0 0 0 0 2.5 Zero Scale+2LSB 0 0 0 0 0 0 1 0 0.039 Zero Scale+1LSB 0 0 0 0 0 0 0 1 0.019

Zero Scale 0 0 0 0 0 0 0 0 0

Figura 1.7- Tensión de salida con respecto al Dato de Entrada

Información Visual

El circuito transmisor posee 8 LED que sirven para proporcionar la información visual sobre la actividad en las líneas de datos del puerto paralelo. La información que se obtiene de los LEDs es esencial para configurar el circuito transmisor y comprobar que los datos sean los correspondientes a los enviados por la PC y viceversa en el circuito receptor.

Corriente de Alimentación

La variación del consumo del circuito transmisor está ligado básicamente a:

1º- El estado en el que se encuentran los LEDs 2º- Velocidad de transmisión.

La corriente máxima medida en el primario del transformador del circuito transmisor es de 19mA. Esta corriente fue medida cuando se transmitía un archivo de números aleatorios a la máxima velocidad de transmisión (150Bytes/Seg).

La variación del consumo del circuito transmisor se ve afectada mayormente por la frecuencia de transmisión y por el estado en el que se encuentran los LEDs.

Driver ADSL EL1503A

El EL1503A es un Driver de línea que es utilizado para aplicaciones en ADSL y HDSL2. Este circuito integrado contiene dos Drivers de banda ancha de alto voltaje, de los cuales se puede obtener una señal de 39.2VP-P en una carga de 22Ω. Este driver puede reemplazar al amplificador operacional obteniendo así mayor potencia y velocidad. En este proyecto no son necesarias estas dos características dado a que estamos trabajando con velocidades de transmisión del orden de 150 Byes/Seg y distancias a transmitir menores a los 20 mts.

Conversor Digital Analógico DAC0800

Descripción General

Las series DAC0800 son conversores digital analógico (DAC) monolíticos de 8-bit con alta velocidad de corriente de salida. Presentan tiempos típicos de estabilización de 100ns. Las series DAC0800 además presentan gran corriente

10

Page 7: Transmision de Datos- Converter A/D D/A

complementaria de salida que permiten obtener voltajes diferenciales de salida de 20 Vp-p con un simple resistor de carga como se muestra e la Figura 1.8

Esquema de Conexión del Conversor D/A

Figura 1.8- Salida del conversor Digital Analógico

Características

Establecimiento rápido de las corrientes de salida 100 ns. Error a escala completa +/- 1LSB No linealidad de sobre temperatura de +/- 0.1% Alta conformidad de salida -10V a +18V Corrientes de salida complementarias Interactúa directamente con TTL, CMOS, PMOS y otros. Amplio rango de alimentación +/- 4.5V a +/-18V Bajo consumo 33mW a +/- 5V

Esquema de Conexión del Circuito Transmisor

11

Page 8: Transmision de Datos- Converter A/D D/A

Figura 1.9- Esquema del Circuito Transmisor sin Fuente de Alimentación.

Nota: El diseño del la Fuente de Alimentación del circuito Transmisor se encuentra en el Apéndice B.

1.1.2- Circuito Receptor

Descripción General

El circuito receptor recibe la señal analógica del circuito transmisor mediante un cable, este convierte la señal en datos digitales y luego se la envía mediante otro cable, hacia el puerto paralelo de la PC receptora. Para convertir la señal analógica en una señal digital el circuito receptor utiliza el conversor ADC0804.

El circuito receptor posee además 8 diodos LED que indican el estado de cada una de las líneas de dato (LED encendido equivale a ‘1’), los LEDs son conectados en las salidas del Buffer Octal (74LS540) en serie con resistencias que limitan la corriente por los mismos.

El puerto paralelo de la PC receptora se conecta a la salida del conversor A/D junto con las entradas del buffer Figura 1.10

Esquema de conexión del Circuito Receptor

12

Page 9: Transmision de Datos- Converter A/D D/A

Figura1.10- Esquema de conexión del Circuito Receptor.

Las corrientes para los niveles lógicos de entradas del buffer son relativamente pequeñas y no representan una carga peligrosa para el puerto ni para el conversor. Las Figuras 1.11, 1.12 y 1.13 muestran datos de los niveles lógicos del conversor A/D, buffer y Puerto Paralelo de la PC.

Corrientes para los niveles lógicos de salida (ADC0804)

SímboloParámetros(entrada de corriente)

Condiciones Min Typ Max Unid.

Isource Vout short to GND 4.5 6 mA

Isink Vout short to VCC 9 16 mA

Figura 1.11- Corrientes de los niveles lógicos de salida del ADC0804.

Corrientes para los niveles lógicos de entrada(74LS540)

13

Page 10: Transmision de Datos- Converter A/D D/A

SímboloParámetros(entrada de corriente)

Condiciones Min Typ Max Unid.

IiH Logic ‘1’ Vcc =5.25 VDC 20 A

IiL Logic ’0’ Vcc=5.25 VDC -0.2 A

Figura 1.12- Corrientes de los niveles lógicos de entrada del 74LS540.

Características del Puerto Paralelo de la PC

Símbolo Parámetros Min Typ Max Unid.VioH Logic ‘1’ 3.3 5 VVioL Logic ’0’ 0 1.8 V

Isource Iout Max 2.6 mAIsink Iin Max 24 mA

Figura 1.13- Características del puerto DB25.

Descripción del ADC0804

El ADC0804 es un conversor analógico digital CMOS de 8-bit que emplea el método de aproximación sucesiva. Este conversor esta diseñado para que opere con el NSC800 y el INS8080A derivando el bus de control con compuertas de salida de tres estados.

La entrada analógica diferencial permite incrementar el rechazo en modo común y compensa el cero analógico de entrada. Además, el voltaje de referencia puede ser ajustado para codificar un pequeño valor analógico con 8 bits de resolución.

Características.

Compatible con el micro procesador 8080. Tiempo de acceso de: 135 ns. Voltaje diferencial analógico de entrada. Entradas y salidas compatibles con los niveles de tensión MOS y TTL. Voltaje de referencia de 2.5. Generador de tiempo interno. Rango de voltaje analógico de entrada de 0 a 5V con 5V de alimentación.

Especificaciones de Conversión

Resolución 8 bits. Error de conversión máximo de 1 LSB. Tiempo de Conversión 100 us.

14

Page 11: Transmision de Datos- Converter A/D D/A

Corriente de Alimentación

La corriente de consumo del circuito receptor se ve afectada mayormente, al igual que el transmisor, por la actividad en los LEDs indicadores. En cada LED circula una corriente aproximada de 2.2mA (valores medidos) por lo tato al tener ocho LED esta corriente puede variar entre 0 y 17.6mA. Todo el circuito con los LEDs apagados consume 23mA por lo tanto el consumo de los LEDs representa un 43.3% del consumo total.El consumo total del circuito Receptor puede variar entre 23mA y 48mA.

Nota: El diseño del la Fuente de Alimentación del circuito Receptor se encuentra en el Apéndice B.

1.2- SOFTWARE

1.2.0-Introducción

Coexistiendo en el mundo de la informática una gran diversidad de lenguajes de programación y de sistemas operativos, la elección de un entorno de desarrollo de software depende principalmente del tipo de aplicación a desarrollar. En nuestro caso, era necesario tener un mayor control sobre el

15

Page 12: Transmision de Datos- Converter A/D D/A

hardware del Puerto y así poder manipular el mismo sin tantas restricciones impuestas en un entorno Windows XP. Entonces se eligió como sistema operativo al viejo Windows 98, el cual permite manipular el hardware casi sin restricciones.

En cuanto al lenguaje de programación, se opto por el Lenguaje C++, el cual permite trabajar con instrucciones de bajo nivel y además tiene la potencia de un lenguaje de alto nivel.

Introducción a los Puertos de Comunicación    

  Los puertos de comunicación de la PC son de particular interés para el estudio de la electrónica ya que le permiten utilizar una computadora personal para controlar todo tipo circuitos electrónicos utilizados, principalmente, en actividades de automatización de procesos, adquisición de datos, tareas repetitivas y otras actividades que demandan precisión.

Antes de entrar en detalles, se hará una referencia del Hardware del Puerto Paralelo como así también de cada pin que lo conforma.

1.2.1-Puerto Paralelo Centronics

El puerto paralelo más conocido es el puerto de impresora (que cumplen más o menos la norma IEEE 1284, también denominados tipo Centronics) que destaca por su sencillez y que transmite 8 bits. Se ha utilizado principalmente para conectar impresoras, pero también ha sido usado para programadores EPROM, escáners, interfaces de red Ethernet a 10 MB, unidades ZIP y SuperDisk y para comunicación entre dos PCs (MS-DOS trajo en las versiones 5.0 ROM a 6.22 un programa para soportar esas transferencias).

El puerto paralelo de las computadoras, de acuerdo a la norma Centronic, está compuesto por un bus de comunicación bidireccional de 8 bits de datos, además de un conjunto de líneas de protocolo. Las líneas de comunicación cuentan con un retenedor que mantiene el último valor que les fue escrito hasta que se escribe un nuevo dato, las características eléctricas son:

Tensión de nivel alto: 3.3 o 5 V. Tensión de nivel bajo: 0 v.

Intensidad de salida máxima: 2.6 mA.

Intensidad de entrada máxima: 24 mA.

El sistema operativo gestiona las interfaces de puerto paralelo con los nombres LPT1, LPT2 y así sucesivamente, las direcciones base de los dos primeros puerto es:

LPT1 = 0x378. LPT2 = 0x278

La estructura consta de tres registros: de control, de estado y de datos.

El registro de datos, se compone de 8 bits, es bidireccional. Su dirección en el LPT1 es 0x378.

16

Page 13: Transmision de Datos- Converter A/D D/A

El registro de estado, se trata de un registro de entrada de información de 5 bits, su dirección en el LPT1 es 0x379.

El registro de control es un bidireccional de 4 bits, con un bit de configuración que no tiene conexión al exterior, su dirección en el LPT1 es 0x37A.

Nota: Los tres registros se detallan en el Apéndice E.

El Hardware del Puerto Paralelo 

El puerto paralelo de una típica PC utiliza un conector hembra de tipo D de 25 patitas (DB-25 S), éste es el caso más común, sin embargo es conveniente mencionar los tres tipos de conectores definidos por el estándar IEEE 1284, el primero, llamado 1284 tipo A es un conector hembra de 25 patitas de tipo D, es decir, el que mencionamos al principio. El orden de las patitas del conector es éste:

Figura 1.24- Conector DB 25 hembra.      

El segundo conector se llama 1284 tipo B que es un conector de 36 patitas de tipo Centronics y lo encontramos en la mayoría de las impresoras; el tercero se denomina 1284 tipo C, se trata de un conector similar al 1284 tipo B pero más pequeño, además se dice que tiene mejores propiedades eléctricas y mecánicas, éste conector es el recomendado para nuevos diseños. La siguiente tabla describe la función de cada patita del conector 1284 tipo A:

Configuración del Puerto Paralelo Estándar

Patita E/SPolaridad

activaDescripción

1 Salida 0 Strobe

2 ~ 9 Salida -Líneas de datos

(bit 0/patita 2, bit 7/patita 9)

10 Entrada 0Línea acknowledge

(activa cuando el sistema remoto toma datos)

11 Entrada 0Línea busy

(si está activa, el sistema remoto no acepta datos)

17

Page 14: Transmision de Datos- Converter A/D D/A

12 Entrada 1Línea Falta de papel

(si está activa, falta papel en la impresora)

13 Entrada 1Línea Select

(si está activa, la impresora se ha seleccionado)

14 Salida 0Línea Autofeed

(si está activa, la impresora inserta una nuevalínea por cada retorno de carro)

15 Entrada 0Línea Error

(si está activa, hay un error en la impresora)

16 Salida 0

Línea INIT(Si se mantiene activa por al menos 50

micro-segundos, ésta señalautoinicializa la impresora)

17 Salida 0Línea Select input

(Cuando está inactiva, obliga a laimpresora a salir de línea)

18 ~ 25 - - Tierra eléctrica

Tabla 1: Configuración del puerto paralelo estándar.

      Observe que el puerto paralelo tiene 12 líneas de salida (8 líneas de datos, strobe, autofeed, INIT y select input) y 5 de entrada (acknowledge, busy, falta de papel, select y error).

De todas estas líneas, las que se usan son aquellos que están sombreados en el cuadro de arriba. El hardware en cuestión opera en forma síncrona, por lo que, ambos software (de transmisión y recepción) mantienen constantemente escaneando las señales Strobe, Ackno, Busy y Autofeed indicando cuando se esta listo para enviar o recibir un Byte de información.

El Handshaking 

     Para implementar el handshaking se requieren dos líneas adicionales. La línea de estroboscopio (en inglés strobe) es la que utiliza la parte transmisora para indicarle a la parte receptora la disponibilidad de información. La línea de admisión (acknowledge) es la que utiliza la parte receptora para indicarle a la parte transmisora que ha tomado la información (los datos) y que está lista para recibir más datos. El puerto paralelo provee de una tercera línea de handshaking llamada en inglés busy (ocupado), ésta la puede utilizar la parte receptora para indicarle a la parte transmisora que está ocupada y por lo tanto la parte transmisora no debe intentar colocar nueva información en las líneas de datos. Una típica sesión de transmisión de datos se parece a lo siguiente:

18

Page 15: Transmision de Datos- Converter A/D D/A

Parte transmisora:

La parte transmisora chequea la línea busy para ver si la parte receptora está ocupada. Si la línea busy está activa, la parte transmisora espera en un bucle hasta que la línea busy esté inactiva. La parte transmisora coloca la información en las líneas de datos. La parte transmisora activa la línea de strobe. La parte transmisora espera en un bucle hasta que la línea acknowledge está activa. La parte transmisora inactiva la línea de strobe. La parte transmisora espera en un bucle hasta que la línea acknowledge esté inactiva. La parte transmisora repite los pasos anteriores por cada byte a ser transmitido.

Parte Receptora:

La parte receptora inactiva la línea busy (asumiendo que está lista para recibir información). La parte receptora espera en un bucle hasta que la línea strobe esté activa. La parte receptora lee la información de las líneas de datos (y si es necesario, procesa los datos). La parte receptora activa la línea acknowledge. La parte receptora espera en un bucle hasta que esté inactiva la línea de strobe. La parte receptora inactiva la línea acknowledge. La parte receptora repite los pasos anteriores por cada byte que debe recibir.

 Se debe ser muy cuidadoso al seguir éstos pasos, tanto la parte transmisora como la receptora coordinan sus acciones de tal manera que la parte transmisora no intentará colocar varios bytes en las líneas de datos, en tanto que la parte receptora no debe leer más datos que los que le envíe la parte transmisora, un byte a la vez.

1.2.2-Programas y Subprogramas

Se confeccionaron varios programas para cubrir las necesidades de este proyecto, las cuales son:

Enviar un archivo sin codificar Enviar un archivo codificado

Recibir un archivo

Recibir un archivo para decodificar

Comparar dos archivos

19

Page 16: Transmision de Datos- Converter A/D D/A

En las siguientes figuras se desarrollan los diagramas de flujo correspondientes a cada programa mencionado y a sus correspondientes rutinas.

Diagrama de Flujo del Handshaking PC Transmisora

Figura 1.27- Rutina que muestra los pasos para el Handshaking de la parte transmisora.

20

Page 17: Transmision de Datos- Converter A/D D/A

Diagrama de Flujo del Handshaking PC Receptora

Figura 1.28- Rutina que muestra los pasos para el Handshaking de la parte Receptora.

La Figura 1.29 muestra el programa SALE.CPP que se encarga de transmitir un archivo, sin codificar, a través del puerto.

21

Page 18: Transmision de Datos- Converter A/D D/A

Figura 1.29-Diagrama de flujo de la rutina que envía un archivo, sin codificar, a través del puerto paralelo.

En este organigrama se hace uso de la rutina que transmite un archivo por el puerto paralelo que se detalla en la Figura 1.30 su diagrama de flujo.

Figura 1.30- Rutina para el envío de un archivo por el puerto paralelo.

22

Page 19: Transmision de Datos- Converter A/D D/A

Figura 1.30- Rutina para el envío de un archivo por el puerto paralelo.

El programa ENTRA.CPP realiza la tarea reciproca, es decir, la recepción de un fichero desde el puerto paralelo tiene su diagrama de bloques en la Figura 1.31.

Figura 1.31- Diagrama de flujo de la rutina que recibe un archivo por el puerto paralelo.

23

Page 20: Transmision de Datos- Converter A/D D/A

Aquí también, la tarea de recibir un archivo, es llevada a cabo por una subrutina. El Diagrama de Flujo de esta, se detalla en la Figura 1.32.

Figura 1.32 - Diagrama de flujo de la rutina que recibe un archivo desde el puerto paralelo.

24

Page 21: Transmision de Datos- Converter A/D D/A

Figura 1.32- Diagrama de flujo de la rutina que recibe un archivo desde el puerto paralelo.

25

Page 22: Transmision de Datos- Converter A/D D/A

Ahora es el turno de las rutinas que se encargan de codificar un fichero y enviarlo a través del puerto paralelo.

En la Figura 1.33 tenemos el diagrama de bloques de la rutina que se encarga de codificar un bloque de datos.

Figura 1.33- Diagrama en bloques de la rutina que se encarga de Codificar un bloque de datos.

Cabe recordar que el Código usado es el Reed-Solomon, un derivado del conocido Código BCH, que esta basado en la codificación de símbolos de nn bits cada uno, en nuestro caso nn=8 bits, lo cual significa que cada símbolo usado es un byte.

26

Page 23: Transmision de Datos- Converter A/D D/A

El organigrama del programa principal: TRANSMITE.EXE, que codifica y envía el fichero está en la Figura 1.34

Figura 1.34- Diagrama del programa TRANSMITE.EXE que codifica un archivo y lo envía por el puerto paralelo.

Ejemplo Numérico de la Codificación

27

Page 24: Transmision de Datos- Converter A/D D/A

Durante la codificación de un archivo, se debieron implementar varios trucos para llevarla a cabo. La rutina que codifica la información, solo lo hace para 223 bytes y este número surge de la característica definida para el código, que es la siguiente: RS(255, 223), esto significa que el código genera un bloque de datos codificados de 255 bytes, de los cuales 223 bytes son información y 32 son bytes de paridad. Existe otra relación importante entre estas magnitudes: n es el nro. de bytes que tiene el bloque codificado y k es el número de bytes de información, n-k es el número de errores que se detectan y (n-k)/2 nos da el número de errores que se pueden corregir.

Además, el código puede detectar un cierto número de bytes y corregir otro tanto, teniendo en cuenta la relación 2C + D <= n-k en donde C es el número de bytes erróneos que se pueden corregir y D el número de bytes que se pueden detectar.

El problema surgió cuando se quería codificar un fichero, el cual puede ser de unos cuantos bytes hasta varios kbytes. La solución adoptada fue dividir al fichero en bloques de 223 bytes más un resto, que debe ser menor a 223 bytes. Para pasar esta información al programa decodificador, al generar el fichero con la información codificada, se agrego un bloque extra al principio del archivo denominado Infoblock, que contiene la cantidad de bytes sobrantes que se obtiene al dividir el tamaño total del fichero en 223 bytes. Este bloque cumple la función de permitir reconstruir el fichero cuando se reciba en la otra PC. El Infoblock tiene en sus 223 bytes de información el número de bytes sobrantes, que luego son codificados por el programa antes de ser almacenado en archivo. Luego del Infoblock se adicionan los bloques de 223 bytes codificados, es decir son bloques de 255 bytes y al final se agrega el último bloque que contiene los bytes restantes del archivo, completando los 223 bytes con ceros, para ser codificados y almacenados al final del fichero.

Se muestra en la Figura 1.35 la estructura de un archivo codificado, con la metodología expuesta anteriormente.

Infoblock

Bloque Nro 1

...

...

...

Bloque Nro q

Bloque con Resto

Figura 1.35- Estructura de un archivo codificado.

28

Archivo Codificado

Page 25: Transmision de Datos- Converter A/D D/A

En donde “q” es el número de bloques de 223 bytes que posee un fichero.

Después de codificar cada bloque de 223 bytes se convierten en bloques de 255 bytes. Veremos todo esto, con un simple ejemplo numérico:

Supongamos que deseamos codificar un fichero de 5225 bytes de tamaño, entonces este archivo tendrá 23 bloques de 223 bytes y un resto de 76 bytes, es decir:

q = 23 bloques de 223 bytes cada uno

Resto = 76 bytes

Tamaño de archivo = q*223 + resto [bytes]

Al codificar el fichero tendremos como primer bloque al Infoblock con 255 bytes, luego q bloques de 255 bytes y finalmente un bloque Resto de 255 bytes, totalizando 255 + 23*255 + 255 = (q+2)*255 [bytes] = 6375 bytes para el nuevo fichero generado, que contiene toda la información codificada y lista para ser enviada.

La tarea de recibir al fichero codificado es realizada por el programa RECIBE.EXE, el cual también lleva a cabo la decodificación del mismo cuyo diagrama de bloques se presenta en la Figura 1.36.

El Programa RECIBE.EXE

29

Page 26: Transmision de Datos- Converter A/D D/A

Figura 1.36- Diagrama del programa RECIBE.EXE que recibe un archivo por el puerto paralelo y lo decodifica.

Ejemplo Numérico de la Decodificación

30

Page 27: Transmision de Datos- Converter A/D D/A

Este programa se recibe el fichero para luego decodificarlo. Para decodificar, la rutina que se encarga de esa tarea, decodifica bloques de 255 bytes, entonces se procede con el proceso inverso para decodificar al fichero en bloques y así lograr reconstruirlo.

El primer paso luego de recibir el fichero es calcular su tamaño y dividiendo por 255, se obtiene el número de bloques “p”. Si este cociente me devuelve resto cero significa que se recibió el número correcto de bytes y se prosigue deduciendo que el fichero tiene (p-2) bloques, suponiendo que el primer bloque es el Infoblock y el último bloque del archivo es el bloque resto. Luego se lee el Infoblock, primer bloque del archivo y decodificándolo se obtiene del mismo, el número de bytes restantes del fichero original. Con estos datos se puede determinar el tamaño del fichero original. Lo haremos nuevamente continuando con los datos del ejemplo anterior:

Si salió todo bien, deberíamos obtener 6375 bytes como tamaño del archivo que al dividir en 255, nos da que tiene 25 bloques=p, de los cuales:

p-2=23 bloques son de datos

+

un bloque seria el Infoblock

+

un bloque resto, con datos del fichero

total = 25 bloques

Estos sencillos cálculos nos indican que la Relación de Tamaño coincide con lo esperado, por lo tanto, continuamos con la decodificación de los datos. Se lee un bloque, se decodifica y se graba en un fichero, que al final será la reconstrucción del fichero original que se envió desde la otra PC; seguimos así hasta que completamos los p-2 bloques de datos y finalmente recuperamos los últimos bytes del fichero original que están el Bloque Resto. De esta manera terminamos por reconstruir al fichero original.

Hay que aclarar que se logra reconstruir cada bloque si se producen 16 o menos errores, que es la capacidad de corrección que tenemos en el código implementado. En caso contrario. la rutina de decodificación no puede corregir los errores y me devuelve el bloque de datos con todos los errores.

La rutina de decodificación esta explicada en detalle en el listado del programa que se encuentra en el apéndice. En la Figura 1.37 solo se lista su diagrama esquemático.

Rutina que decodifica un Bloque de Datos

31

Page 28: Transmision de Datos- Converter A/D D/A

Figura 1.37- Diagrama en bloques de la rutina que se encarga de decodificar un bloque de datos.

CAPITULO 2: Configuración y Operación

32

Page 29: Transmision de Datos- Converter A/D D/A

2.1- Calibración del Hardware

Para facilitar el análisis y calibración del Hardware, se puede dividir en dos circuitos al circuito Transmisor. Cada uno recibe una señal y la procesa para retransmitirla a la siguiente etapa como se muestra en la Figura 2.1.

Diagrama en Bloques del Circuito Transmisor

Figura 2.1- Diagrama en bloques del circuito Transmisor

El primer circuito es el conversor D/A mostrado en la Figura 2.2. Este circuito convierte una señal digital de 8 Bits en una señal analógica, el conversor DAC0800 posee corrientes de salida complementarias.

Conversor Digital Analógico

Figura 2.2- Esquema del conversor digital analógico.

Este circuito posee dos resistencias que se pueden modificar para aumentar o reducir la corriente de referencia según las características que se requieran, en este caso Rref=10K, todos los demás elementos que lo componen permanecen fijos, ya que la variación de algunos de ellos no modifican la corriente de salida del conversor. El circuito siguiente actúa como un circuito inversor y como un conversor de corriente a tensión, se muestra en la Figura 2.3 los componentes que lo componen, la resistencia RL se puede ajustar para modificar la corriente IL y así obtener la excursión deseada (de 0 a +5V) y el capacitor C7 (150pF) que actúa como un paso a tierra para las corrientes parásita

Conversor de Corriente a Tensión

33

Page 30: Transmision de Datos- Converter A/D D/A

Figura 2.3- Esquema del Circuito Conversor de Corriente a Tensión.

El valor de RL se adopto en 5K con una tolerancia del 1%, luego este valor se reemplazó en las ecuaciones 1.1, 1.2 y 1.3 para obtener los demás datos del diseño. En la Figura 2.4 se muestran ambos circuitos conectados.

Circuitos Conversores

Figura 2.4- Esquemas del los circuitos conversores.

El circuito receptor tiene implementado un conversor A/D que sólo trabaja con valores positivos de tensión (de 0 a +5V), dado a que tenemos valores negativos presentes en la salida del conversor D/A, el circuito conversor de corriente a tensión también cumple la función de inversor. Todo esto se realiza con un solo operacional, el TL081 es un circuito que posee un ancho de banda de 4Mhz y un Slew Rate de 13V/uS y cumple con los requisitos de este proyecto.

Nota: Las hojas de datos del circuito TL081 se encuentran en el Apéndice E.

Nota: El TL081 se lo puede reemplazar por un LF351 que posee características similares, no obstante se probó también con el operacional LM741 y se obtuvo un incremento de errores debido a su bajo Slew Rate (0.5V/uS).

Nota: El circuito inversor se lo podría implementar también en el circuito receptor, esto es posible pero no conveniente ya que a la hora de realizar mediciones tendríamos una señal de corriente circulando por la línea de transmisión dificultando así la medición.

2.2- Medición

34

Page 31: Transmision de Datos- Converter A/D D/A

Con el fin de poder realizar medidas sobre la señal Transmitida, a continuación, se detallan los pines del conector Canon (macho).

Figura 2.5- Detalle de los Pines del Conector Canon.

2.3-Líneas de Conexión

Línea de Transmisión

La transmisión de señal se realiza a través de un cable de 20 mts., de 5 conductores aislados y una malla protectora. Este cable posee en cada extremo una ficha hembra tipo Canon de 5 pines que se corresponden, esto quiere decir que se pueden intercambiar los extremos sin problemas. Estos dos conectores facilitan la conexión y desconexión de la línea de ambos módulos. La Figura 2.6 muestra un cable armado de 1 mts con ficha Canon, este cable se utilizó para hacer transmisiones de ensayo.

Cable Armado que Conecta Ambos Módulos

35

1-AutoFD

2 -Strobe 2 4-GND

3-Vseñal

5-Busy

Page 32: Transmision de Datos- Converter A/D D/A

Figura 2.6- Cable de datos con ficha Canon.

Línea de Datos

Para la interfaz PC/módulo o línea de datos se utilizó un cable armado de 25 conductores de 1.80 mts de largo, posee en sus extremos un par de conectores DB25 macho como se muestra en la Figura 2.7.

Interfaz PC Módulo

Figura 2.7- Cable de datos que conecta la PC al Módulo.

Línea de Alimentación

36

Page 33: Transmision de Datos- Converter A/D D/A

La línea de alimentación está compuesta por un cable aislado de 1.80 mts de longitud conectado a una ficha tipo Interlock y a una ficha de dos patas planas para conectar al toma corriente (220AC). El cable de alimentación se muestra en la Figura 2.8

Línea de Alimentación

Figura 2.8- Cable de Alimentación.

2.4- Señalización del Hardware

En la Figura 2.9 se muestran los LEDs indicadores instalados en la parte superior de ambos módulos. Esta característica ayuda a menudo a identificar fallas y proporciona información visual de la transmisión.

Vista Superior del Módulo Transmisor

Figura 2.9- LEDs Indicadores.

FUNCION DE LOS LEDs

37

MSB

LSBPWR

ON

Page 34: Transmision de Datos- Converter A/D D/A

INDICADORES

LED ESTADO FUNCION

VERDEEncendido Módulo EncendidoApagado Módulo Apagado

ROJOEncendido Bit ONApagado Bit OFF

Figura 2.10- Función de los LEDs Indicadores.

2.5- Especificaciones Técnicas del Hardware

ESPECIFICACIONES TECNICAS DEL HARDWARE

SIMBOLO PARAMETRO CONDICION TRANS. RECEPT. UNIDAD

VSVoltaje de

Alimentación220 220 VAC

ISCorriente de Alimentación

Máx. velocidad

19 14.8 mA

TCTiempo de Conversión

100 uSeg.

CRVelocidad de Conversión

Modo libre 8870 conv/Seg

fclkFrecuencia de

Reloj640 KHz

TSTiempo de

Establecimiento

100 nSeg

Resolución 8 8 Bits

No linealidad ±0.19% %FS

ECError de

ConversiónEscala

Completa±1 LSB

Sensibilidad a la Fuente de Alimentación

±1/16 LSB

PD Disipación de Vs=±12V, IREF=1 mA 100 mW

38

Page 35: Transmision de Datos- Converter A/D D/A

Potencia del Conversor

ICCCorriente

continua en el Conversor

Fclk=640KHz,VREF/2=2.5V,

TA=25ºCy CS=5V

2 mA

Capitulo 3: Ensayos

3.1- Preparación y Configuración

Para llevar a cabo los ensayos y poner a prueba el Hardware con el Software, al principio se debió configurar ambas máquinas instalando un sistema operativo de versión anterior al WINDOWS XP. Los sistemas operativos en que se puede hacer correr los programas realizados en este proyecto son: WINDOWS 95, 98, 2000, y WINDOWS ME que permiten al usuario trabajar con el puerto paralelo si la necesidad de parches.

Luego se conectan los módulos con las PCs mediante sus interfaces y se verifican que las máquinas tengan su correcta conexión a tierra. La falta de la conexión a tierra en alguna de ellas produce un incremento en el error de transmisión a tal punto en que se podría superar la capacidad de corrección del código RS(255,223).

Por último se realiza la conexión de ambos módulos mediante un cable de par trenzado apantallado de aproximadamente 20 mts. de longitud similar al que se muestra en la Figura 2.6

Para determinar la cantidad de errores se realizó un programa que cuenta los errores que se producían en el envío de cada archivo. Este programa se denomina filecomp.exe.

ARCHIVOS DE PRUEBA

Los archivos de prueba fueron archivos de números enteros crecientes y también aleatorios, comprendidos entre 0 y 255. Estos archivos fueron grabados previamente en las unidades “C:\” de ambas máquinas, para luego poder comparar y contar los errores producidos en la transmisión.

ARCHIVOS DE PRUEBA

NOMBRE TIPO CONTENIDO TAMAÑO (BYTES)

100.DAT BINARIO100 Nros. Enteros

Crecientes200

39

Page 36: Transmision de Datos- Converter A/D D/A

200.DAT BINARIO200 Nros. Enteros

Crecientes400

300.DAT BINARIO300 Nros. Enteros

Crecientes600

RAN.DAT BINARIO255 Nros. Enteros

Aleatorios512

Figura 3.1- Características de los Archivos de Prueba.

3.2- Realización de los Ensayos

El Parámetro “D”

El parámetro “D” es un valor entero que indica el retardo en milisegundos. Este parámetro se encuentra presente en el argumento de la función delay() del código C++, por ejemplo para un retardo de 500 milisegundos el valor del parámetro “D” debe ser D=500. La función delay(D), se encuentra presente en puntos específicos del software y ayuda a la coordinación de la transmisión.

Detección de Errores

Este ensayo consistió en modificar el parámetro “D” de los programas SALE.EXE y ENTRA.EXE para obtener la máxima velocidad de transmisión, sin que se exceda la cantidad máxima de errores permitidos ó en el peor de los casos que se detenga la transmisión.

El programa FILECOMP.EXE compara dos archivos, el recibido por el puerto y el archivo original (que también se encuentra presente en la PC destino). Este programa cuenta las diferencias entre los Bytes que componen los archivos, siendo 0 cuando los archivos son idénticos e incrementándose con cada diferencia. Cada Byte diferente se cuenta como un error que se produce en la transmisión. Los datos de este ensayo se muestran en la Figura 3.2.

DATOS DEL ENSAYO

NOMBRE TAMAÑO (BYTES) ERRORESTIEMPO (Seg.)

CON EL PARAMETRO D=10

100.DAT 200 1 7.8

200.DAT 400 2 14.9

300.DAT 600 5 22.4

40

Page 37: Transmision de Datos- Converter A/D D/A

RAN.DAT 512 4 19.1

CON EL PARAMETRO D=5

100.DAT 200 0 3.5

200.DAT 400 2 6.9

300.DAT 600 6 10.2

RAN.DAT 512 4 8.8

CON EL PARAMETRO D=1

100.DAT 200 0 1.3

200.DAT 400 1 2.7

300.DAT 600 6 4

RAN.DAT 512 3 3.2

Figura 3.2- Ensayos de Errores.

Nota: Para esta prueba se utilizó un cable par trenzado de 1 metro Figura 2.6 y los archivos recibidos fueron comprados con el programa FILECOMP.EXE.

Con el parámetro D=0 se detuvo la transmisión por lo tanto el mínimo valor para este parámetro es D=1, con este valor se obtuvo una velocidad media de transmisión de 152 Bytes/Seg sin que se supere la cantidad máxima de errores (16 errores) Figura 3.3.

VELOCIDAD DE TRANSMISION (D=1)

NOMBRE TAMAÑO (BYTES)TIEMPO (Seg)

Velocidad Byte/Seg

100.DAT 200 1.3 153

200.DAT 400 2.7 148

300.DAT 600 4 150

RAN.DAT 512 3.2 160

Velocidad Media 152

41

Page 38: Transmision de Datos- Converter A/D D/A

Figura 3.3- Velocidad de Transmisión.

DATOS DEL ENSAYO UILIZANDO EL CODIGO CORRECTOR DE ERRORES

CON EL PARAMETRO D=1

NOMBRETAMAÑO (BYTES)

ERRORESSin codificar Codificado

100.DAT 200 510 0

200.DAT 400 765 0

300.DAT 600 1020 0

RAN.DAT 512 765 0

Figura 3.2- Ensayos utilizando el Código Corrector de Errores.

3.3- Análisis de Resultados

Cabe destacar que el código RS(255,223) tiene la capacidad de corregir 16 bytes por cada bloque de 255 bytes, por ejemplo el código pueda corregir 64 bytes en 4 boques de 255 bytes si y solo si se producen como máximo 16 bytes de errores en cada bloque. Si se producen más de 16 errores en un bloque y en otro menos de 16 entonces el archivo se puede recuperar en forma parcial.

El código RS puede configurarse para corregir más errores en bloques mayores incrementando así la capacidad de corrección.

Al aumentar la capacidad de corrección del código también se debe incrementar la capacidad de cómputo de la PC, es decir, se necesita mayor poder

42

Page 39: Transmision de Datos- Converter A/D D/A

de computación a medida que se incrementa el número de errores a corregir. El numero de cálculos que debe realizar la rutina de decodificación es mucho mayor que la rutina de codificación resultando en un impedimento a la hora de implementar corrección de errores vía software.

Finalmente se puede concluir que tenemos una opción económica y muy práctica, dado a que no es necesario cambiar el hardware existente. Para recibir un archivo sin errores solo se deben utilizar las rutinas de codificación y decodificación en el software de comunicación.

CONCLUSIONES FINALES

La realización de este trabajo permitió la aplicación de distintos conocimientos adquiridos durante la carrera, como así también la introducción de nuevos conceptos que aportan al estudio de los sistemas de comunicación y adquisición de datos.

Se implementó un enlace de comunicación para un Banco de Pruebas de Modelos de Canales bajo el concepto de código y hardware abierto. El código abierto permite el trabajo con diferentes Códigos Correctores de Errores, siendo estos programables como una subfunción que se llama desde el código principal. En particular resulta útil para la evaluación de modelos computacionales y su validación empírica, en cuanto al comportamiento real. Este sistema además, permite la inclusión de códigos relacionados con Algoritmos de Ecualización Digital de Canales. El hardware fue desarrollado en forma discreta y permite la selección del nivel de la señal analógica.

Para la verificación del sistema se trabajó a modo de referencia con el Código Reed-Solomon con (255, 223) y símbolos de 8 bits, utilizando un enlace de cable telefónico de cobre. Se realizaron múltiples ensayos con y sin el código para determinar la cantidad de errores que se realizaban en la transmisión.

El software actual está elaborado para permitir la comunicación en un solo sentido, la estructura del hardware permite la comunicación bidireccional sólo en los bits de control para el Handshaking.

PROPUESTA PARA TRABAJOS FUTUROS

Es de interés para la continuación en esta línea de trabajo, la elaboración de una interface gráfica que permita la automatización de todo el proceso de selección del Código y sus configuraciones, y el análisis automatizado de los resultados (BER Tasa de Error, Diagrama de Ojo, Histograma de Ecualización).

Ing. Fernando F. Figueroa

43

Page 40: Transmision de Datos- Converter A/D D/A

44