5. Buses de comunicación 0. Arquitectura de...
Last updated Apr 20, 2022
by
sr_labs Admin
# Bus (informática)
En [arquitectura de computadores](https://es.wikipedia.org/wiki/Arquitectura_de_computadores "Arquitectura de computadores"), el bus (o canal) es un [sistema digital](https://es.wikipedia.org/wiki/Sistema_digital "Sistema digital") que transfiere datos entre los componentes de una [computadora](https://es.wikipedia.org/wiki/Computadora "Computadora"). Está formado por cables o pistas en un [circuito impreso](https://es.wikipedia.org/wiki/Circuito_impreso "Circuito impreso"), dispositivos como [resistores](https://es.wikipedia.org/wiki/Resistor "Resistor") y [condensadores](https://es.wikipedia.org/wiki/Condensador_el%C3%A9ctrico "Condensador eléctrico"), además de [circuitos integrados](https://es.wikipedia.org/wiki/Circuito_integrado "Circuito integrado").[1](https://es.wikipedia.org/wiki/Bus_(inform%C3%A1tica)#cite_note-1)?
Existen dos tipos de transferencia en los buses:
1. **Serie**: El bus solamente es capaz de transferir los datos bit a bit. Es decir, el bus tiene un único cable que transmite la información.
2. **Seriales:** En la comunicación serial los datos se envían usando un solo cable o línea de comunicación, en este tipo de datos normalmente si requieres enviar por ejemplo 8 bits ( 1 byte) tienes que enviar bit por bit es decir uno al tiempo
3. **Paralelo**: El bus permite transferir varios bits simultáneamente, por ejemplo 8 bits.
4. **Paralelos:** En la comunicación en paralelo los datos se envían al mismo tiempo, pero para esto necesitas tantas lineas de datos como datos a enviar por ejemplo si envías 8bits (1 byte) requieres por lo menos 8 lineas de datos una por cada dato a enviar.

Aunque en primera instancia parece mucho más eficiente la transferencia en paralelo, esta presenta inconvenientes:
1. La frecuencia de reloj en el bus paralelo tiene que ser más reducida.
2. La longitud de los cables que forman el bus está limitada por las posibles interferencias, el ruido y los retardos en la señal.
Además, los modernos buses serie están formados por varios canales: En este caso se transmite por varios buses serie simultáneamente.
En los primeros computadores electrónicos, era muy habitual encontrar buses paralelos, quedando los buses serie dedicados para funciones de menor entidad y dispositivos lentos, como el teclado.
La tendencia en los últimos años es reemplazar los buses paralelos por buses serie (que suelen ser multicanal). Estos son más difíciles de implementar, pero están dejando velocidades de transferencia más elevadas, además de permitir longitudes de cable mayores.
Un bus de datos en diseño electrónico hace referencia a las líneas de conexión que comunican dos o más dispositivos electrónicos y como toda comunicación requiere de cuatro partes fundamentales
1. Emisor: es quien emite el mensaje o el dato que se quiere transmitir
2. Receptor: es quien recibe el mensaje
3. Mensaje: es el dato que se envía y tanto el receptor como el emisor deben hablar el mismo “idioma” o “protocolo” para poder interpretarlo
4. Canal (capa física): Es el medio por el cual se envía el mensaje, en electrónica tenemos muchos medios pero los mas comunes son las pistas que tiene un PCB o tarjeta electrónica y los cables de conexión que se usan para interconectar.
## Funcionamiento
La función del bus es permitir la conexión lógica entre los diferentes subsistemas que componen el computador. En su mayoría los buses están formados por [conductores metálicos](https://es.wikipedia.org/wiki/Conductor_el%C3%A9ctrico "Conductor eléctrico") por los cuales se trasmiten [señales](https://es.wikipedia.org/wiki/Se%C3%B1al "Señal") eléctricas que son enviadas y recibidas con la ayuda de circuitos integrados que manejan un [protocolo ](https://es.wikipedia.org/wiki/Protocolo_de_comunicaciones "Protocolo de comunicaciones")que les permite trasmitir [datos](https://es.wikipedia.org/wiki/Dato "Dato") útiles. Además de los datos el bus trasmite otras [señales digitales](https://es.wikipedia.org/wiki/Se%C3%B1al_digital "Señal digital") como son las direcciones y señales de control.
Los buses definen su capacidad de acuerdo a la [frecuencia](https://es.wikipedia.org/wiki/Frecuencia "Frecuencia") máxima de envío y al ancho de los datos. Por lo general estos valores son inversamente proporcionales: si se tiene una alta frecuencia, el ancho de datos debe ser pequeño. Esto se debe a que la interferencia entre las señales (crosstalk) y la dificultad de [sincronizarlas](https://es.wikipedia.org/wiki/Sesgo_de_reloj "Sesgo de reloj"), crecen con la frecuencia, de manera que un bus con pocas señales es menos susceptible a esos problemas y puede funcionar a alta velocidad.
Todos los buses de computador tienen funciones especiales como las [interrupciones](https://es.wikipedia.org/wiki/Interrupciones "Interrupciones") y las [DMA](https://es.wikipedia.org/wiki/DMA "DMA") que permiten que un dispositivo periférico acceda a una CPU o a la memoria usando el mínimo de recursos.
## Tipos de bus
Existen dos tipos que están clasificados por el método de envío de la información: bus paralelo o bus serial.
Hay diferencias en el rendimiento y hasta hace unos años se consideraba que el uso apropiado dependía de la longitud física de la conexión: para cortas distancias el bus paralelo, para largas el serial.
### Bus paralelo
Es un bus en el cual los datos son enviados por bytes al mismo tiempo, con la ayuda de varias líneas que tienen funciones fijas. La cantidad de datos enviada es bastante grande con una frecuencia moderada y es igual al ancho de los datos por la frecuencia de funcionamiento. En los computadores ha sido usado de manera intensiva, desde el bus del procesador, los buses de discos duros, tarjetas de expansión y de vídeo, hasta las impresoras.
El *[front-side bus](https://es.wikipedia.org/wiki/Front-side_bus "Front-side bus")* de los procesadores Intel es un bus de este tipo y como cualquier bus presenta unas funciones en líneas dedicadas:
* Las líneas de dirección son las encargadas de indicar la posición de memoria o el dispositivo con el que se desea establecer comunicación.
* Las líneas de control son las encargadas de enviar señales de arbitraje entre los dispositivos. Entre las más importantes están las líneas de interrupción, DMA y los indicadores de estado.
* Las líneas de datos transmiten los bits de forma aleatoria de manera que por lo general un bus tiene un ancho que es potencia de 2.
Este bus es el más rápido y por ende el más utilizado en las arquitecturas internas de los microcontroladores, MPUs, microprocesadores, etc es decir todos estos integrados de control actualmente tienen buses de datos internos que comunican los diferentes sub sistemas, en procesadores es común tener hoy 64bits en bus de datos y en los microcontroladores con arquitectura ARM tenemos buses de datos internos de 32bits, sin embargo por fuera de los circuitos integrados este bus no es tan común, se usa para control de display, pantallas, adquirir datos RAW de sensores.
Las características más importantes de este bus son
1. Cantidad de datos: Baja, se requiere una linea de conexión por cada dato esto limita la cantidad de datos máxima
2. Velocidad de transmisión: Alta, puede transmitir múltiples datos al tiempo
3. Distancia de transmisión: Baja, el dato al propagarse por un conductor eléctrico va perdiendo potencia
4. Numero de receptores: Bajo, normalmente es uno a uno, sin embargo en ocasiones se maneja una señal de habilitador para conectar varios dispositivos, pero esto agrega una linea de control por cada dispositivo
5. Sincronismo: Requiere una señal de sincronismo para saber en que momento leer el dato

### Bus serie
En este los datos son enviados, bit a bit y se reconstruyen por medio de registros o rutinas. Está formado por pocos conductores y su ancho de banda depende de la frecuencia. Aunque originalmente fueron usados para conectar dispositivos lentos (como el teclado o un ratón), actualmente se están usando para conectar dispositivos mucho más rápidos como discos duros, unidades de estado sólido, tarjetas de expansión e incluso para el bus del procesador.
Bus de datos serial: Este bus es el más utilizado en comunicación entre sistemas de control y periféricos, por ejemplo una microcontrolador Atmega328 y una Oled, por tanto en diseño electrónico es muy común encontrar buses de datos seriales, sin embargo estos por su naturaleza donde los datos viajan por una sola linea requieren “idiomas” específicos, es decir el emisor debe enviar los datos de una forma en la cual el receptor los pueda interpretar, a esto le llamamos protocolos de datos y en ellos encontramos las características para poder enviar o recibir datos. Entre los protocolos más usados tenemos
### UART (Universal Asynchronous Receiver-Transmitter)
también llamado serial, es el bus más fácil de implementar tanto a nivel de hardware como de software, en su versión más básica usa 2 pines de conexión uno para envió de datos y uno para recepción, en este protocolo se requiere que la tierra sea igual tanto en el receptor como en el emisor
Características
1. Cantidad de datos: Baja, este protocolo solo envía de 8 bits por vez
* Velocidad de transmisión: Media, puede transmitir hasta 1Mbps el tipo de comunicación puede ser half duplex o full duplex. debido a que tiene un canal de recepción de datos Rx y otro de transmisor de datos Tx separados
* Distancia de transmisión: Media, puede viajar unos metros antes de tener ruido por perdidas
* Numero de receptores: Bajo, normalmente es uno a uno, sin embargo existen arquitecturas donde se usa este protocolo modificando su capa física para conectar hasta 254 dispositivos
* Sincronismo: es un protocolo asincronico no tiene señal de reloj esto implica que el emisor y el receptor deben tener la misma velocidad de lectura entre las cuales la más común es 9600bps

#### **Aplicaciones**:
* Configuración: Se usa como interfase para comunicarse con otro dispositivo y seleccionar sus características o modo de operación.
* Monitoreo: Como en el caso del monitor serial de arduino se usa para visualizar dato.
* Comunicación con sensores: Sensores como GPS normalmente tiene los datos de salida por puerto serial esto debido a que envían varios datos como altitud, latitud, tiempo, etc y estos datos no se podrían enviar como un dato analógico o usando pines digitales en modo paralelo
* Comunicación con otro periféricos: Se usa para conectar 2 sistemas de control entre si, donde estos deban compartir datos, por ejemplo un conversor de serial a ethernet.
### SPI (Serial Peripheral Interface)
Entre los protocolos seriales es el de más alta velocidad, su implementación en hardware no requiere acondicionamientos adicional, a nivel de software tiene mayor complejidad que el puerto serial, en su versión estándar usa 4 pines uno para enviar datos, otro para recibir, otro para reloj y finalmente uno para habilitar, con este ultimo se logra que SPI pueda manejar más de un dispositivo, esto lo logra habilitando el dispositivo a usar y des habilitando los otros habitualmente no se tienen más de 3 dispositivos conectados por el mismo SPI
#### **Características**
* Cantidad de datos: Alta, este protocolo esta diseñado para envió de trama de datos
* Velocidad de transmisión: Alta, puede transmitir hasta 60Mbps ademas el tipo de comunicación es full duplex es decir puede enviar y recibir datos al mismo tiempo ya que tiene un pin para enviar datos llamado MOSI *(Master Output Slave Input)* y un pin para recibir datos llamado MISO *(Master Input Slave Output)*
* Distancia de transmisión: Media, puede viajar unos 10 metros máximo
* Numero de receptores: Bajo, normalmente es uno a uno, pero puede usar un pin de habilitación llamado SS (slave select) donde normalmente se llega a manejar unos 3 dispositivos
* Sincronismo: es un protocolo sincrónico usa una pin de reloj llamado SCLK

#### **Aplicaciones**:
* Pantallas: Para controlar pantallas cuando no van por puertos dedicados, debido a que se tienen que enviar muchos datos por segundo el protocolo más usado para esto es SPI, como el caso de varias pantallas para Arduino, Raspberry, entre otros
* Cámaras: Sucede lo mismo que las pantallas las cámaras envían muchos datos pro segundo y si no se usa un puerto dedicado SPI es la mejor alternativa
* Comunicación con sensores: Sensores que tiene envió de datos de alta frecuencia como algunos IMU, radares lidar, entre otros
* Comunicación con memorias: Para almacenar datos en memorias SD u otro tipo de memorias externas el SPI es el protocolo más usado
* Comunicación Ethernet, WiFi: Para adicionar periféricos de comunicación que requieren gran cantidad de datos SPI es la mejor alternativa
### I2C (Inter-Integrated Circuit)
* De los 3 protocolos seriales más usados I2C es el único que esta diseñado para conectar multiples dispositivos al mismo bus de datos y esto hace que tenga mayor complejidad en hardware y en software, ademas solo requiere dos pines un pin de datos y un pin de reloj
* Cantidad de datos: Alta, este protocolo esta diseñado para envió de trama de datos
* Velocidad de transmisión: Media, puede transmitir hasta 3Mbps en hs-mode, sin embargo lo más común son velocidades bajas en modo estándar 100khz y en modo alta velocidad 400khz, esta comunicación es half duplex eso quiere decir que solo puede transmitir un dato a la vez ya sea de lectura o de escritura y esto por que solo tiene una linea para datos SDA (Serial Data)
* Distancia de transmisión: Media, puede viajar unos 8 metros máximo
* Numero de receptores: Alto, este protocolo esta diseñado para conectar varios dispositivos al mismo bus de datos a un máximo de 127 cuando se maneja direccionamiento de 7 bits
* Sincronismo: es un protocolo sincrónico usa una pin de reloj llamado SCL (Serial Clock)

#### **Aplicaciones**:
* Comunicación con sensores: Es la aplicación más común sobre todo cuando se quiere hacer una red de sensores o cuando se tienen múltiples sensores, esto por que reduce el conexionado
* Comunicación con periféricos: Los periféricos que no necesitan altas frecuencia de refresco por ejemplo las LCD 2X16 se pueden conectar con conversores I2C
Por supuesto existen más protocolos seriales como MBus, 1 Wire, CAN entre otros pero no son tan usados como los que acabamos de ver, ademas existen por aplicación otros protocolos como los industriales.
## Buses: de control, de direcciones y de datos

### Bus de control
El bus de control gobierna el uso y acceso a las [líneas de datos](https://es.wikipedia.org/wiki/Bus_de_datos "Bus de datos") y de [direcciones](https://es.wikipedia.org/wiki/Bus_de_direcciones "Bus de direcciones"). Como éstas líneas están compartidas por todos los componentes, tiene que proveerse de determinados mecanismos que controlen su utilización. Las señales de control transmiten tanto órdenes como información de temporización entre los módulos. Mejor dicho, es el que permite que no haya colisión de información en el [sistema](https://es.wikipedia.org/wiki/Sistema "Sistema").
### Bus de direcciones
La memoria RAM es direccionable, de forma que cada celda de memoria tiene su propia dirección. Las direcciones son un número que selecciona una celda de memoria dentro de la [memoria principal](https://es.wikipedia.org/wiki/Memoria_principal "Memoria principal") o en el espacio de direcciones de la unidad de entrada/salida.
El [bus de direcciones](https://es.wikipedia.org/wiki/Bus_de_direcciones "Bus de direcciones") es un canal del [microprocesador](https://es.wikipedia.org/wiki/Microprocesador "Microprocesador") totalmente independiente del [bus de datos](https://es.wikipedia.org/wiki/Bus_de_datos "Bus de datos") donde se establece la dirección de memoria del dato en tránsito.
El bus de dirección consiste en el conjunto de líneas eléctricas necesarias para establecer una dirección. La capacidad de la memoria que se puede direccionar depende de la cantidad de bits que conforman el bus de direcciones, siendo 2n el tamaño máximo en bits del banco de memoria que se podrá direccionar con n líneas. Por ejemplo, para direccionar una memoria de 256 bits, son necesarias al menos 8 líneas, pues 28 = 256. Adicionalmente pueden ser necesarias líneas de control para señalar cuándo la dirección está disponible en el bus. Esto depende del diseño del propio bus.
### Bus de datos
El bus de datos permite el intercambio de [datos](https://es.wikipedia.org/wiki/Dato "Dato")
### Buses multiplexados
Algunos diseños utilizan líneas eléctricas multiplexadas para el bus de direcciones y el bus de datos. Esto significa que un mismo conjunto de líneas eléctricas se comportan unas veces como *bus de direcciones* y otras veces como *bus de datos.*
# Enlaces de interés
* Buses de datos en electrónica Paralelo, UART, SPI, I2C, DynamoElectronics, [https://dynamoelectronics.com/buses-de-datos-en-electronica-paralelo-uart-spi-i2c/](https://dynamoelectronics.com/buses-de-datos-en-electronica-paralelo-uart-spi-i2c/)
* Bus(Informática), Wikipedia, [https://es.wikipedia.org/wiki/Bus_(inform%C3%A1tica)](https://es.wikipedia.org/wiki/Bus_(inform%C3%A1tica))
Like
·