traductor

lunes, 22 de julio de 2019

Protocolos e interfaces de comunicación

Hola a todos, en esta entrada me gustaría explicar los distintos protocolos o interfaces que usan algunos de nuestros componentes y accesorios electrónicos para comunicarse entre sí. Pero como de costumbre aclaremos unos términos antes de adentrarnos en el tema.

Terminología

Señal digital:

Son pulsos eléctricos que transmiten información binaria: 1 o 0, energía o no.

Señal análoga:

A diferencia de la digital, las señales análogas tienen muchos estados y no sólo 2 como la señales digitales.

En esta imagen podemos ver en la parte superior una señal digital (Tiene 2 estados) y en la inferior una señal analógica (Tiene múltiples estados).

Interfaz:

Es la conexión entre dos o más sistemas permitiendo su comunicación. Un ejemplo de estos es la interfaz USB, HDMI, PCI Express, etc.

Protocolo:

Son normas y pasos para la correcta comunicación entre sistemas.

RGB:

En el colegio nos enseñaron que los colores primarios eran el amarillo, azul y rojo, y que los demás colores los obtenemos mezclando estos 3 colores en distintas proporciones, pero cuando trabajamos con luz como en los monitores los colores primarios son el rojo, verde y azul (Red, Green and Blue) y en computación le asignamos valores de entre 0 a 255 a cada color (usualmente representamos análogamente al número 0 con 0 voltios o tierra y 255 con 5 voltios), por ejemplo:
* El color rojo es (255,0,0).
* El color verde es (0,255,0).
* El color azul es (0,0,255).
* El color blanco es (255,255,255) y el negro (0,0,0).
* El color rosado es (247,191,190).

Interfaces digitales:

Comunicación serial:

La comunicación serial consiste en mandar un bit a la vez por lo que nuestro bus de datos se compondría de una sola línea.

Algunas de las interfaces que se comunican por medio de puerto serial son:
-USB
-PCI Express
-Ethernet
-MIDI

Protocolo I2C:

Este es un protocolo serial bastante simple y ampliamente usado, en el los sistemas conectados pueden tener uno de dos rangos: el maestro (master) y el esclavo (slave), el maestro inicia la comunicación y el esclavo reacciona a las ordenes del maestro (Pueden haber múltiples maestros y esclavos). El protocolo tiene 2 buses uno para sincronizar relojes (SCL, Serial clock) y otro de datos (SDA, Serial data). El protocolo consiste en:
1) El maestro abre la comunicación (Coloca tanto la línea de datos como la de reloj en bajo).
2) El maestro manda la dirección del esclavo al que se quiere comunicar, esta debe ser de 7 o 10 bits.
3) El maestro manda un bit llamado: R/W (Read/Write), este bit le indica al esclavo si tiene que escribir o leer la información de su memoria (Read equivale a dejar SDA en alto y Write en bajo).
4) Si un esclavo tiene la dirección que mandó el maestro responde con un bit ACK/NACK (Acknowledge/No-Acknowledge o Recibido/No-recibido), este bit le informa al maestro que la información se mando correctamente (ACK equivale a dejar SDA en bajo NACK en alto).
5) El maestro manda un paquete de datos de 8 bits.
6) El esclavo manda un bit ACK/NACK para confirmar que la información se envió correctamente.
7) Se repiten el paso 5 y 6 hasta mandar la información completa.
8) El maestro cierra la comunicación (Coloca tanto SDA y SCL en alto).
Ejemplo de comunicación I2C.
Puede que parezca complejo pero no lo es, para demostrarlo la simpleza y la facilidad de usar el protocolo voy a colocar un ejemplo con un contexto bastante cotidiano:
Conectaste vía serial una memoria USB gestionada por un microcontrolador de rango maestro y un microcontrolador de rango esclavo llamado "1001011" con una pantalla y quieres mostrar una imagen llamada "Meme.jpg":
Maestro --> Abre líneas de comunicación (Paso 1).
Maestro --> "Hey 1001011" (Paso 2).
Maestro --> "Escribe en tu memoria esto" (Paso 3).
Esclavo --> "Ok" (Paso 4).
Maestro --> Manda los primeros 8 bits del archivo Meme.jpg (Paso 5).
Esclavo --> "Recibido" (Paso 6).
(Se repite el paso 5 y 6 hasta que se mande completamente Meme.jpg, en pocas palabras el paso 7)
Maestro --> Cierra líneas de comunicación (Paso 8).
Ahora el esclavo tiene el archivo Meme.jpg y muestra ese momazo en pantalla :D

Comunicación paralela:

Este tipo de comunicación digital es prácticamente igual a la serial sólo que tenemos más de una línea de datos por lo que podemos mandar más de un bit a la vez, un ejemplo de ello son los puertos paralelos que usábamos para conectar periféricos al computador, los puertos ISA que eran los PCI del pasado y el mismísimo PCI que usamos actualmente para conectar tarjetas de sonido, red, vídeo, capturadoras y demás expansiones a nuestro PC.
Puertos PCI, los puertos de expansión que usamos actualmente para conectar periféricos a nuestro computador. 

Interfaces analógicas:

Las señales analógicas ya no se usan tanto en la comunicación como antes, ya que son muy susceptibles al ruido electrónico generado por la estática, ondas de radio como la que usa mi celular para hacer llamadas y este ruido puede distorsionar mi información y por eso las señales análogas se usan con mucho cuidado, pero se usan y hay varias tecnologías que usan señales análogas pero estas han sido reemplazadas por otras soluciones digitales más rápidas y con menos riesgos de pérdida de información, un ejemplo que varios de nosotros aún usamos son los puertos VGA para transmitir vídeo o los jacks de audio como los que tienen los audífonos.

VGA (Video Graphics Array):

El puerto VGA lo hemos usado por varios años para transmisión de vídeo, actualmente esta interfaz está siendo reemplazada por soluciones digitales mucho más eficientes como HDMI o Displayport, pero aún hay un importante número que siguen usando VGA en sus monitores, como yo.
Puerto VGA.

Tabla con los pines y su descripción del puerto VGA en inglés (pinout).
En el puerto VGA  podemos destacar varios pines de interés:
 *Los pines 1-3 transmiten los valores de los colores rojo, verde y azul respectivamente.
 *Los pines 13 y 14 que controlan la sincronización horizontal y vertical respectivamente.
 *Los pines ID que sirven para que el monitor transmita su información técnica al computador como resolución, formato de imagen, tasa de refresco, fabricante, modelo, número de colores, etc. (Esto se hace vía serial y algunos fabricantes prefieren usar I2C para transmitir esta información de modo que usan el pin 12 como SDA y el pin 15 como SCL).

A grandes rasgos el VGA funciona así:
1) Se sincronizan los relojes de tanto el computador como del monitor.
2) El monitor informa sus datos vía serial al computador.
3) El computador manda los valores RGB de un pixel por los cables RED, GREEN y BLUE.
4) Por cada pulso del reloj se manda el valor RGB de un pixel hasta completar una línea.
5) Se manda un pulso por HSYNC (Sincronización horizontal) para dar a entender que se va a pasar a otra línea.
6) Se repite el paso 4 y 5 hasta completar la imagen en el monitor.
7) Se manda un pulso por VSYNC (Sincronización vertical) y por HSYNC para indicar al monitor que ya se completó todas las líneas que conforman la imagen.
8) Se procede a iniciar el dibujado de otra imagen.

En pocas palabras el monitor "Colorea" cada pixel desde la parte superior izquierda hasta la inferior derecha por cada imagen que vemos.

Como podemos ver los dispositivos que usamos a diario se comunican de una forma ordenada y coloqué estos ejemplos para motivarlos a que no vean la tecnología como algo muy complejo traído de otro mundo si no que investiguen e indaguen sobre este tema. Espero que les haya servido y cualquier inquietud o recomendación escríbela en los comentarios, gracias.

No hay comentarios:

Publicar un comentario