Você está na página 1de 13

1

SOFTWARE DE CODIFICACION DEL CODIGO


DE LINEA MULTI-LEVEL (MLT-3) DE UNA
SECUENCIA DE BITS
Almeida Axel, Benavides Wilmer, Ichau Alexander
Universidad Técnica del Norte
Facultad de Ingeniería en Ciencias Aplicadas
Ibarra-Ecuador
{aealmeidav, webenaviesc, eaichaui }@utn.edu.ec

 Desarrollar el programa de codificación realizado en


Resumen — En el presente documento se presentará el diseño e MatLab, creando algoritmos que cumplan las
implementación de un sistema de trasmisión a través de un
especificaciones del código MLT-3.
generador de paridad y un receptor detector de paridad, todo esto
dentro de los Softwares de Arduino y Matlab, realizando la  Realizar la transmisión dúplex entre el detector de
codificación del código de línea Multi–Level Transmit (MLT-3) de
una secuencia de bits, los cuales serán ingresada por un usuario, paridad y la interfaz gráfica del receptor.
mediante el teclado matricial del generador de paridad par e
impar.  Analizar los resultados que se obtiene al codificar la
señal banda base, para verificar si los datos enviados
son los correctos.
I. TITULO  Visualizar en un entorno amigable para el usuario
tanto como el ingreso de caracteres como la
Software de codificación del código de línea Multi–Level
Transmit (MLT-3) de una secuencia de bits ingresada por demostración de la codificación en las gráficas de
un usuario, mediante el teclado matricial de un generador resultados.
de paridad par e impar.
OBJETIVOS

II. MARCO TEÓRICO


A. Objetivo General
Matlab
Diseñar e implementar un sistema de transmisión con generador
de paridad y un receptor detector de paridad, utilizando MATLAB combina un entorno de escritorio perfeccionado para
comunicación simplex y codificación de línea MLT-3 el análisis iterativo y los procesos de diseño con un lenguaje de
visualizado en una interfaz gráfica realizada un software programación que expresa las matemáticas de matrices y arrays
matemático directamente.

El lenguaje de MATLAB, basado en matrices, es la forma más


B. Objetivos Específicos
natural del mundo para expresar las matemáticas
 Analizar los principios asociados y las técnicas computacionales. Las gráficas integradas facilitan la
involucradas en la transmisión de información digital. visualización de los datos y la obtención de información a partir
de ellos. Una vasta biblioteca de
2

herramientas (Toolboxes) integradas le permite empezar a periféricos. La información de estos periféricos que
trabajar inmediatamente con algoritmos esenciales para su conectes se trasladará al microcontrolador, el cual se
dominio. El entorno de escritorio invita a experimentar, encargará de procesar los datos que le lleguen a través
explorar y descubrir. [1] de ellos. [2]

Qué es Arduino
BIT DE PARIDAD
Arduino es una plataforma de creación de electrónica de El bit de paridad, a diferencia de los bits de inicio y de parada,
código abierto, la cual está basada en hardware y software es un parámetro opcional que se utiliza en las comunicaciones
libre, flexible y fácil de utilizar para los creadores y serie para determinar si el dispositivo remoto está recibiendo
desarrolladores. Esta plataforma permite crear diferentes tipos correctamente el carácter de datos que se transmite.
de microordenadores de una sola placa a los que la comunidad
de creadores puede darles diferentes tipos de uso.

Cómo funciona Arduino Ilustración 2: Paridad

Ilustración 1: Placa de Arduino.

 El Arduino es una placa basada en un


microcontrolador ATMEL. Los microcontroladores
son circuitos integrados en los que se pueden grabar
instrucciones, las cuales las escribes con el lenguaje de
programación que puedes utilizar en el entorno
Arduino IDE. Estas instrucciones permiten crear
programas que interactúan con los circuitos de la
placa.
 El microcontrolador de Arduino posee lo que se llama
una interfaz de entrada, que es una conexión en la
que podemos conectar en la placa diferentes tipos de
3

El bit de paridad puede tener una de las cinco especificaciones carácter original.
siguientes:
Item Descripción  Si usamos paridad par, ya hay un número par de unos,
Especifica que el sistema local no debe crear un bit por tanto, se añade un 0, y transmitiremos 00111001.
de paridad para los caracteres de datos que se están  Si usamos paridad impar, como hay un número par de
transmitiendo. También indica que el sistema local unos, hemos de añadir otro 1 para conseguir un
no comprueba el bit de paridad de los datos recibidos número impar, y transmitiremos 10111001.
de un sistema principal remoto.
Si se envía un dato y durante la transmisión se produce un único
par Especifica la suma del número total de unos binarios error, el destinatario puede detectarlo al comprobar la paridad
de un solo carácter es un valor par. En caso negativo, en destino. Usando los ejemplos anteriores, y alterando un solo
el bit de paridad debe ser un 1 para asegurarse de que bit de la trama transmitida, nos quedaría.
el número total de unos binarios sea par.
 Paridad par: se recibe 00110001 en vez de 00111001.
Al comprobar el número de unos nos salen 3 (impar),
impar Funciona bajo las mismas directrices que la paridad
luego se ha producido un error.
par, con la excepción de que el número total de unos
 Paridad impar, se recibe 10110001 en vez de
binarios debe ser un número impar.
10111001. Al comprobar el número de unos nos salen
4 (par), luego se ha producido un error.
espacio Especifica que el bit de paridad siempre será un cero
binario. Otro término utilizado para la paridad de
Esto es útil si los errores no cambian un número par de bits a la
espacio es rellenado de bits, que se deriva de su
vez, ya que un número par de errores no afecta a la paridad final
utilización como rellenado de los datos de siete bits
de los datos. [4]
que se transmiten a un dispositivo que sólo acepte
datos de ocho bits. Estos dispositivos interpretan el
Conexión entre Arduinos
bit de paridad de espacio como un bit de datos
adicional para el carácter transmitido. BUS I2C

marca Funciona bajo las mismas directrices que la paridad


La conexión I2C está formada por un Maestro que es el que
de espacio, con la excepción de que el bit de paridad
realiza las peticiones a los Esclavos. Y uno o
siempre es un 1 binario. El bit de paridad de marca
varios Esclavos que le envían información al Maestro cuando
sólo actúa como rellenador. [3]
éste lo requiere. La conexión consta de tres cables: Serial Clock
(SCL), Serial Data (SDA), Tensión positiva (Vcc) y masa
(GND). Se utiliza el ANALOG IN A4 como datos SDA y el
Código de paridad impar
ANALOG IN A5 como reloj SCL. Además, conectamos las
masas GND. [5]
El bit de paridad será un 1 si el número total de 1 a transmitir es
par y un 0 si el número total de 1 es impar.
Conexiones

Normalmente el bit de paridad se añade a la izquierda del


4

 En la siguiente imagen se utilizo tres cables de Muchos productos de MATLAB, como Curve Fitting Toolbox,
conexión porque cada Arduino está conectado a un Signal Processing Toolbox y Control System Toolbox, incluyen
cable USB. apps con interfaces de usuario personalizadas. También es
 Más adelante utilizaremos 4 cables de conexión y solo posible crear apps personalizadas propias, incluidas las
un USB para el Maestro.
interfaces de usuario correspondientes, para que otras personas
las utilicen.

Creación de una GUI de MATLAB de forma interactiva

GUIDE (entorno de desarrollo de GUI) proporciona


herramientas para diseñar interfaces de usuario para Apps
personalizadas. Mediante el editor de diseño de GUIDE, es
posible diseñar gráficamente la interfaz de usuario. GUIDE
Ilustración 3: Conexión de arduinos entre Maestro y Esclavo genera entonces de manera automática el código de MATLAB
para construir la interfaz, el cual se puede modificar para
En los arduinos UNO y más recientes podemos utilizar los pines
programar el comportamiento de la app.
SCL y SDA en vez de los A4 y A5. De esta manera dejamos
libres estos últimos por si queremos utilizarlos como Creación de una GUI de MATLAB de forma programática
ENTRADAS ANALÓGICAS. [5]
A fin de ejercer un mayor control sobre el diseño y el desarrollo,
también se puede crear código de MATLAB que defina las
propiedades y los comportamientos de todos los componentes.
MATLAB contiene funcionalidad integrada que le ayudará a
crear la GUI para su app de forma programática. Cabe la
posibilidad de agregar cuadros de diálogo, controles de interfaz
de usuario (como botones y controles deslizantes) y
contenedores (como paneles y grupos de botones). [6]

Ilustración 4: Entradas analógicas en nuevos arduinos


Código ASCII

Es un código de caracteres basado en el alfabeto latino.


GUI de MATLAB
El código ASCII utiliza 7 bits para representar los caracteres,
Las GUI (también conocidas como interfaces gráficas de
aunque inicialmente empleaba un bit adicional (bit de paridad)
usuario o interfaces de usuario) permiten un control sencillo
que se usaba para detectar errores en la transmisión. A menudo
(con uso de ratón) de las aplicaciones de software, lo cual
se llama incorrectamente ASCII a varios códigos de caracteres
elimina la necesidad de aprender un lenguaje y escribir
de 8 bits que extienden el ASCII con caracteres propios de
comandos a fin de ejecutar una aplicación.
idiomas distintos al inglés, como el estándar ISO/IEC 8859-1.1

Por lo general, la GUI incluye controles tales como menús, En la actualidad define códigos para 32 caracteres no
barras de herramientas, botones y controles deslizantes. imprimibles, de los cuales la mayoría son caracteres de
5

control que tienen efecto sobre cómo se procesa el texto, más


otros 95 caracteres imprimibles que les siguen en la numeración
(empezando por el carácter espacio). [7]

MLT-3

MLT-3 es la abreviatura de transmisión de niveles múltiples, y


3 de ellos significa que hay tres estados de esta
codificación. MLT-3 se explica en varios documentos como Ilustración 5: Comparación de MLT-3 con NRZ y NRZI
codificación de banda base de orden múltiple 3 o codificación
de banda base de tercer orden. En el tercer orden, la señal
III. RECOLECCION DE INFORMACION Y
generalmente se divide en tres estados potenciales: "potencial
RESULTADOS
positivo", "potencial negativo" y "potencial cero".
DIAGRAMA DE PROCESO

Reglas de codificación

El MLT-3 funciona de la siguiente manera:

 Usar el estado potencial no cambiante, es decir,


mantener el estado potencial del bit anterior para
representar el 0 binario;
 Convertir el estado potencial mediante una secuencia
potencial (0, +, 0, -) de acuerdo con una onda
sinusoidal para representar un 1 binario;

Las reglas de codificación son las siguientes:

1. Si el siguiente bit es 0, el valor de salida es el mismo


que el valor anterior;
2. Si el siguiente bit es 1, el valor de salida tendrá una
transición: si el valor de salida anterior es + V o -V, la
siguiente salida es 0, si el valor de salida anterior es 0,
entonces la siguiente salida el valor es opuesto al signo
de valor anterior a cero.
Ilustración 6: Diagrama del funcionamiento del programa
6

 ELABORACION DEL TRANSMISOR Ilustración 9:Código de generación de señal de reloj

INTERFAZ MATLAB  Trama en binario

Se muestra toda la trama en binario para poder visualizar que


sea la misma la que se está graficando.

Ilustración 10: bits a transmitir

 Obtención de datos

Ilustración 7: Interfaz en gui de Matlab

A continuación, se muestra cómo se diseñó la interfaz mediante


el software llamado GUII de Matlab, donde se puede trabajar
ya que es una programación orientada a objetos y permite Ilustración 11: Código de transformar de carácter a binario
visualizar las señales binarias a transmitir.

 Señal de datos
 Señal de reloj
Se usa una señal de reloj para ayudar a sincronicidad las tramas Se muestra se señal en pulsos de unos y ceros.
ya que por cada cambio de nivel se actualizará el reloj.

Ilustración 8: Señal de reloj Ilustración 12: Señal de pulsos


7

 Código Señal Binaria


Cálculos de diferentes parámetros que se analiza en la
transmisión de datos

Ilustración 13: Código para graficar la señal binaria

 Ingreso de caracteres Ilustración 16: Cálculos


Se crea un edittext en donde se muestra e ingresa los caracteres
a codificar.
 Cálculos

Ilustración 14: Casilla de ingreso de caracteres

Ilustración 17: Código de cálculos e impresión de resultados

 Velocidad de transmisión
Se asigna una velocidad de transmisión la cual se despliega para En Arduino

elegir. INGRESO DE LIBRERIAS

Ilustración 18: Librerías

Ilustración 15: velocidad de transmisión


8

Declaración de variables de filas y columnas para el teclado


matricial, además creación del vector caracteres donde se
guardarán los datos ingresados por el teclado matricial.

 Definir matriz de la tecla como están distribuidas.


 Inicialización del teclado
Ilustración 21: Void setup

Comando void loop

 Código del teclado

Se realiza el código para el ingreso de los caracteres del teclado


mediante un switch case el cual está realizado por caso para el
ingreso de letras ya sea mayúsculas o minúsculas y el ingreso
Ilustración 19: Configuración teclado de números.

 Ingreso de variables para control de teclas

Ilustración 22: Codificación del teclado

Ilustración 20: Ingreso variables control teclado

Comando void setup  Tecla envió de mensaje:

Se inicializa con los diferentes elementos a utilizar como es la


lcd, la comunicación serial, las interrupciones que permiten Al presionar la letra D en el teclado se procede a almacenar en

controlar el encendido y apagado del sistema. el vector caracteres e imprime los datos ingresados por el
teclado en la lcd.

Además, convierte los caracteres ingresados por el teclado a


código binario y esos son enviados a imprimir al serial del
arduino.
9

 Esquema general

Ilustración 23: Código de envió almacenamiento en un vector y


conversión de la palabra ingresada Ilustración 25: Esquema general del sistema

Pulsador de control del sistema

Se realiza una interrupción la cual controla el funcionamiento


del sistema si este esté en encendido se habilitará el envío del
mensaje mediante el teclado caso contrario el sistema del  Encendido del Sistema
transmisor estará apagado.

Ilustración 26: Sistema on

Ilustración 24: Control de encendido apagado del sistema  Ingreso de datos

PRUEBAS Y FUNCIONAMIENTO

Para verificar el correcto funcionamiento del transmisor se


procede a realizar una simulación en este caso en proteus para
corroborar el código y su funcionamiento.

Ilustración 27: Ingreso de datos por teclado


10

 Envió de datos, impresión de datos en la lcd y en el  El código se basa en contar el número de unos que
monitor serial de Arduino convertido a código
existen en la trama y con una división sobre dos, se
binario los datos ingresados.
puede determinar si es par o impar como se muestra en
la siguiente figura:

Ilustración 28: Envió de datos y conversión a binario de los


datos ingresados. Ilustración 31: Código de control de paridad

 Simulación de conexión entre arduinos finalizado


 A continuación, se muestra los dos estados
gráficamente:

Ilustración 32: Representación de 15 bits en uno, por lo cual


Ilustración 29: Interfaz de conexiones entre arduinos finalizada si se selecciona paridad impar se debe incrementar un cero al
final de la trama
DESARROLLO DE CONTROL DE ERRORES
MEDIANTE BIT DE PARIDAD, YA SEA PAR O IMPAR

 Se uso un popup menú el cual sirve para seleccionar


las opciones de paridad par e impar

Ilustración 33: Representación 15 bits en uno, por lo cual si


se selecciona paridad par se debe incrementar un uno al final
de la trama

Ilustración 30: Botón de control


11

CODIFICACIÓN MLT-3 confirmación lo cual viene representado por la palabra ACK


que va del receptor al transmisor y como ultimo proceso del
Se genera un conteo bit por bit y se compara si es un uno va
sistema esto pasa al interfaz de Matlab el cual se encarga la
cambiado de estado ya sea (1, 0 o -1) y se va guardando en la
paridad y la respectiva codificación en MLT-3
variable mlt, como se muestra en la siguiente figura:

Ilustración 36: Codificación de la palabra FICA

Ilustración 34: Código de codificación mlt-3

 Gráficamente se obtiene de la siguiente forma y se la


representa a continuación:

Ilustración 37: Interfaz de Matlab con todos los datos del sistema
requeridos

Ilustración 35: Codificación mlt-3


V. ANEXOS

IV. ANALISIS DE RESULTADOS

Como resultado final se obtuvo una codificación exitosa,


tomando en cuenta que cada letra del teclado tiene almacenado
3 letras en cada tecla, esto se guardara en un vector, lo cual hace
posible realizar la comunicación serial, proporcionando todas
las letras del alfabeto, dando paso así a que el transmisor Ilustración 38: Proyecto en funcionamiento

convierte un carácter de código ASCII a código en binario para


así poder realizar el envío de dato bit a bit de una manera
secuencial, logrando enviar y por ende recibir el mensaje de
12

envían mediante un puerto I2C, incluye la información


que se envía siempre existe una confirmación de
recepción por parte del dispositivo y por otro lado su
arquitectura permite tener una confirmación de los
datos recibidos, dentro de la misma trama.
 Se logro determinar que el código MLT-3 da como
característica importante que un bit en 0 se codifica
con el mismo valor del valor precedente, por lo cual
Ilustración 39: Sistema realizando la respectiva codificación
para la realización del proyecto se suposo un estado
anterior de bit, es decir, mantener el estado potencial
del bit anterior para representar el 0 binario.

Wilmer Benavidez
 El uso de los puertos I2C que posee Arduino permite
la trasmisión sincrónica de datos con ayuda de un
clock para mejorar la sincronización y evitar errores de
interferencia de intersímbolo.
Ilustración 40: Foto grupal de los integrantes
 Al trabajar con el puerto COM del ordenador hay que
tener en cuenta que se debe abrir la comunicación y
cerrar al momento de capturar los datos con matlab,
dado el caso de no cerrar causar problemas al querer
usar la comunicación serial de dicho puerto COM.
 Los puertos COM permite tomar los datos de la
comunicación serial para posteriormente poder
codificar y enviar al receptor

Ilustración 41: Integrantes del grupo en trabajo


Alexander Ichau
 Se concluyo que al realizar la comunicación serial el
VI. CONCLUSIONES transmisor convierte un carácter de código ASCII a
código en binario para así poder realizar el envío de

Axel Almeida ese dato bit a bit de una manera secuencial como por

 Para una señal que carezca de componente continua ejemplo la letra A que en el código ASCII es el 65 y

deberá depender de la eficiencia de transmisión ya que en el binario 1000001 para el envío de estos caracteres

no hay una señal opuesta que la elimine, lo cual puede se utiliza la comunicación serial la cual envía bit a bit

no llegar a identificar la componente que va a trasmitir. el mensaje.

 Para una óptima conexión serial entre arduinos el  Es necesario que en la comunicación entre el

protocolo I2C es uno de los más utilizados y óptimos transmisor y el receptor exista una ACK para validar

para comunicarse, en donde los mensajes que se el envío del mismo y así dar mayor confiabilidad al
13

envió de los datos con una certeza de que estos


llegaran a su destino.
 Matlab es una interfaz que brinda facilidad para
interpretar los datos de una forma individual como lo
son la señal de datos y su respectiva codificación
MLT-3 además se puede apreciar el aumento de un bit
de paridad en este caso será un 1 si la paridad es impar
o será un 0 si la paridad es par.

VII. REFERENCIA

[1] «MathWorks,» [En línea]. Available: https://es.mathworks.com/help/matlab/learn_matlab/product-description.html.


[Último acceso: 10 07 2019].
[2] «Xataka Basics,» [En línea]. Available: https://www.xataka.com/basics/que-arduino-como-funciona-que-puedes-hacer-uno.
[Último acceso: 09 07 2019].
[3] «IBM,» [En línea]. Available:
https://www.ibm.com/support/knowledgecenter/es/ssw_aix_72/com.ibm.aix.networkcomm/asynch_params_parity.htm.
[Último acceso: 2019 07 2019].
[4] [En línea]. Available: https://sites.google.com/site/smrmmeespenetas/memoria-ram/bit-paridad-par-e-impar-bit-de-
redundancia. [Último acceso: 09 07 2019].
[5] [En línea]. Available: http://kio4.com/arduino/30conectardosarduinos.htm. [Último acceso: 25 07 2019].
[6] «GUI de MATLAB,» [En línea]. Available: https://es.mathworks.com/discovery/matlab-gui.html. [Último acceso: 09 07
2019].
[7] «Universidad Nacional Autonoma de México,» [En línea]. Available:
http://informatica.dgenp.unam.mx/recomendaciones/codigo-ascii. [Último acceso: 09 07 2019].
[8] M. D. WOLFRAM. [En línea]. Available: http://www.wolfram.com/mathematica/. [Último acceso: 09 07 2019].

Você também pode gostar