En ingeniería informática e ingeniería eléctrica , bit banging es jerga para cualquier método de transmisión de datos que emplea software como sustituto del hardware dedicado para generar señales transmitidas o procesar señales recibidas. El software establece y muestrea directamente los estados de los GPIO (por ejemplo, pines en un microcontrolador ) y es responsable de cumplir con todos los requisitos de temporización y secuenciación de protocolo de las señales. A diferencia de los bits, el hardware dedicado (por ejemplo, UART , interfaz SPI ) satisface estos requisitos y, si es necesario, proporciona un búfer de datos.para relajar los requisitos de tiempo del software. El golpe de bits se puede implementar a un costo muy bajo y se usa comúnmente en sistemas integrados . [1]
Bit banging permite que un dispositivo implemente diferentes protocolos con cambios mínimos o nulos en el hardware. En algunos casos, los procesadores más nuevos y más rápidos hacen factible la explosión de bits porque el hardware más reciente funciona mucho más rápido que el hardware cuando se crearon los protocolos de comunicaciones estándar.
Ejemplo de código C
El siguiente ejemplo de código de lenguaje C transmite un byte de datos en un bus SPI .
// transmisión byte en serie, MSB primero void send_8bit_serial_data ( unsigned char datos ) { int i ; // seleccionar dispositivo (activo bajo) output_low ( SD_CS ); // enviar bits 7..0 para ( i = 0 ; i < 8 ; i ++ ) { // considerar el bit más a la izquierda // establecer la línea alta si el bit es 1, baja si el bit es 0 si ( datos & 0x80 ) salida_alta ( SD_DI ); más salida_bajo ( SD_DI ); // pulsa el estado del reloj para indicar que el valor del bit debe leerse output_low ( SD_CLK ); retraso (); salida_alto ( SD_CLK ); // desplazar el byte a la izquierda para que el siguiente bit sea el dato más a la izquierda << = 1 ; } // deseleccionar dispositivo output_high ( SD_CS ); }
Consideraciones
La cuestión de si implementar bit banging o no es un compromiso entre carga, rendimiento y confiabilidad, por un lado, y la disponibilidad de una alternativa de hardware, por el otro. El proceso de emulación de software consume más potencia de procesamiento que el soporte de hardware dedicado. El microcontrolador pasa gran parte de su tiempo enviando o recibiendo muestras hacia y desde los pines, a expensas de otras tareas. La señal producida generalmente tiene más fluctuaciones o fallas , especialmente si el procesador también está ejecutando otras tareas mientras se comunica. Sin embargo, si el software de bits golpeando es interrupción impulsada por la señal, esto puede ser de menor importancia, especialmente si las señales de control tales como RTS, CTS , o DCD están disponibles. La implementación en software puede ser una solución cuando el soporte de hardware específico no está disponible o requiere un microcontrolador más caro.
Ver también
- Manipulación de bits
- Flujo de bits
- Bit twiddler (desambiguación)
- Arquitectura bit-serial
- Arquitectura de 1 bit
- Máquina Woz integrada (IWM)
- FTDI , una serie de chips convertidores de USB a serie que también admiten un modo bit bang
- 2MGUI (un controlador DOS de Ciriaco García de Celis que utiliza bit-banging para admitir formatos de disquete de capacidad ultra alta no estándar "omitiendo" la lógica del controlador de disquete normal, un programa similar para los disquetes Amiga es Disk2FDI de Vincent Joguin)
- Máquina virtual (VM) (la implementación de controladores de dispositivos virtuales que emulan controladores de hardware reales a veces implica el uso de técnicas de programación similares a las de bits)
- Radio definida por software (SDR)
- Sondeo (ciencias de la computación)
Referencias
- ^ Predko, Michael (2000). Programación y personalización de microcontroladores PICmicro (2ª ed.). Profesional de McGraw-Hill . pp. 10 -12. ISBN 978-0-07-136172-9.
enlaces externos
- Serie asíncrona (RS-232)
- Notas sobre bit-banging async serial
- Bit golpeando para la comunicación serial asincrónica
- Bit golpeando para RS-232
- Bus I²C
- Autobús SPI