transmision de datos- converter a/d d/a
Post on 18-Jun-2015
761 Views
Preview:
TRANSCRIPT
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Figura 1.32- Diagrama de flujo de la rutina que recibe un archivo desde el puerto paralelo.
25
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
44
top related