Bouchání bitů - Bit banging
V počítačové techniky a elektrotechniky , bit bušení je výraz pro jakýkoli způsob přenosu dat , která využívá software jako náhrada za vyhrazeného hardwaru pro generování vysílaných signálů nebo proces pro přijímané signály. Software přímo nastavuje a vzorkuje stavy GPIO (např. Piny na mikrokontroléru ) a je odpovědný za splnění všech požadavků na časování a postupnosti protokolů signálů. Na rozdíl od bitování bitů, vyhrazený hardware (např. UART , rozhraní SPI ) splňuje tyto požadavky a v případě potřeby poskytuje datovou vyrovnávací paměť, která uvolňuje požadavky na časování softwaru. Bitování bitů lze implementovat za velmi nízké náklady a běžně se používá ve vestavěných systémech .
Bitování bitů umožňuje zařízení implementovat různé protokoly s minimálními nebo žádnými změnami hardwaru. V některých případech je bitové bitování proveditelné novějšími a rychlejšími procesory, protože novější hardware funguje mnohem rychleji než hardware při vytváření standardních komunikačních protokolů.
Příklad kódu C.
Následující příklad kódu jazyka C přenáší bajt dat na sběrnici SPI .
// 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);
}
Úvahy
Otázka, zda nasadit bitové bitování či nikoli, je kompromis mezi zátěží, výkonem a spolehlivostí na jedné straně a dostupností hardwarové alternativy na straně druhé. Proces softwarové emulace spotřebovává více výpočetního výkonu než podpora vyhrazeného hardwaru. Mikrokontrolér tráví většinu času odesíláním nebo přijímáním vzorků do a z kolíků na úkor jiných úkolů. Produkovaný signál má obvykle více chvění nebo závad , zvláště pokud procesor během komunikace provádí i jiné úkoly. Pokud je však software pro bitování bitů přerušován signálem, může to mít menší význam, zvláště pokud jsou k dispozici řídicí signály, jako jsou RTS, CTS nebo DCD . Implementace v softwaru může být řešením, když není k dispozici podpora konkrétního hardwaru nebo vyžaduje dražší mikrokontrolér.
Viz také
- Manipulace s bitem
- Bitový proud
- Bit twiddler (disambiguation)
- Bitová sériová architektura
- 1bitová architektura
- Integrovaný stroj Woz (IWM)
- FTDI , řada USB na sériové převodní čipy podporující také režim bit bang
- 2MGUI (ovladač DOS od Ciriaco García de Celis využívající bitování bitů k podpoře nestandardních formátů disket s ultravysokou kapacitou „obcházející“ normální logiku řadiče disket, podobný program pro diskety Amiga je disk2FDI od Vincent Joguin)
- Virtuální stroj (VM) (implementace ovladačů virtuálních zařízení emulujících skutečné řadiče hardwaru někdy zahrnuje využití programovacích technik podobných bitování bitů)
- Softwarově definované rádio (SDR)
- Polling (počítačová věda)
Reference
externí odkazy
- Asynchronní sériové (RS-232)
- Poznámky k bit-asijskému asynchronnímu seriálu
- Bitování bitů pro asynchronní sériovou komunikaci
- Bitování bitů pro RS-232
- I²C autobus
- SPI autobus