Bit Banging - Bit banging
In der Computer- und Elektrotechnik ist Bit Banging ein Slang für jede Methode der Datenübertragung , bei der Software als Ersatz für dedizierte Hardware verwendet wird, um gesendete Signale zu erzeugen oder empfangene Signale zu verarbeiten. Software direkt setzt und Proben die Zustände von GPIOs (zB Stifte auf einem Mikrocontroller ) und ist verantwortlich für die Erfüllung aller Timing - Anforderungen und Protokoll - Sequenzierung der Signale. Im Gegensatz zum Bit-Banging erfüllt dedizierte Hardware (z. B. UART , SPI-Schnittstelle ) diese Anforderungen und bietet bei Bedarf einen Datenpuffer , um die Anforderungen an das Software-Timing zu lockern. Bit Banging kann zu sehr geringen Kosten implementiert werden und wird üblicherweise in eingebetteten Systemen verwendet .
Mit Bit Banging kann ein Gerät verschiedene Protokolle mit minimalen oder keinen Hardwareänderungen implementieren. In einigen Fällen wird Bitbanging durch neuere, schnellere Prozessoren ermöglicht, da neuere Hardware viel schneller arbeitet als Hardware, als Standardkommunikationsprotokolle erstellt wurden.
C-Codebeispiel
Das folgende C- Sprachcodebeispiel überträgt ein Datenbyte auf einem SPI- Bus.
// transmit byte serially, MSB first
void send_8bit_serial_data(unsigned char data)
{
int i;
// select device (active low)
output_low(SD_CS);
// send bits 7..0
for (i = 0; i < 8; i++)
{
// consider leftmost bit
// set line high if bit is 1, low if bit is 0
if (data & 0x80)
output_high(SD_DI);
else
output_low(SD_DI);
// pulse the clock state to indicate that bit value should be read
output_low(SD_CLK);
delay();
output_high(SD_CLK);
// shift byte left so next bit will be leftmost
data <<= 1;
}
// deselect device
output_high(SD_CS);
}
Überlegungen
Die Frage, ob Bit Banging eingesetzt werden soll oder nicht, ist ein Kompromiss zwischen Last, Leistung und Zuverlässigkeit einerseits und der Verfügbarkeit einer Hardwarealternative andererseits. Der Software-Emulationsprozess verbraucht mehr Rechenleistung als die Unterstützung dedizierter Hardware. Der Mikrocontroller verbringt einen Großteil seiner Zeit damit, Proben auf Kosten anderer Aufgaben zu und von den Pins zu senden oder zu empfangen. Das erzeugte Signal weist normalerweise mehr Jitter oder Störungen auf , insbesondere wenn der Prozessor während der Kommunikation auch andere Aufgaben ausführt. Wenn die Bit-Banging-Software jedoch durch das Signal unterbrochen wird, kann dies von untergeordneter Bedeutung sein, insbesondere wenn Steuersignale wie RTS, CTS oder DCD verfügbar sind. Die Implementierung in Software kann eine Lösung sein, wenn keine spezifische Hardwareunterstützung verfügbar ist oder ein teurerer Mikrocontroller erforderlich ist.
Siehe auch
- Bitmanipulation
- Bitstrom
- Bit Twiddler (Begriffsklärung)
- Bit-serielle Architektur
- 1-Bit-Architektur
- Integrierte Woz-Maschine (IWM)
- FTDI , eine Reihe von USB-Seriell-Konverter-Chips, die auch einen Bit-Bang-Modus unterstützen
- 2MGUI (ein DOS-Treiber von Ciriaco García de Celis, der Bit-Banging verwendet, um nicht standardmäßige Diskettenformate mit ultrahoher Kapazität zu unterstützen, die die normale Diskettencontrollerlogik "umgehen", ein ähnliches Programm für Amiga-Disketten ist Vincent Joguins Disk2FDI)
- Virtuelle Maschine (VM) (Das Implementieren von Treibern für virtuelle Geräte, die tatsächliche Hardware-Controller emulieren, erfordert manchmal die Verwendung von Programmiertechniken, die dem Bit-Banging ähneln.)
- Software-Defined Radio (SDR)
- Umfragen (Informatik)
Verweise
Externe Links
- Asynchrone serielle (RS-232)
- Hinweise zur asynchronen Bit-Banging-Serie
- Bit Banging für die asynchrone serielle Kommunikation
- Bit Banging für RS-232
- I²C Bus
- SPI-Bus