コンピュータ工学と電気工学 において、ビットバンギング[1]またはビットバッシング[要出典]は、送信信号の生成や受信信号の処理に専用ハードウェアの代わりにソフトウェアを使用するデータ伝送方法を指す専門用語です。このようなソフトウェアは、送信と受信のGPIO (マイクロコントローラのピンなど)の状態を直接設定およびサンプリングし、すべてのタイミング要件と信号のプロトコルシーケンスを満たす役割を果たします。ビットバンギングとは対照的に、専用ハードウェア ( UART、SPI、I²Cなど) はこれらの要件を満たし、必要に応じてデータバッファを提供してソフトウェアのタイミング要件を緩和します。ビットバンギングは非常に低コストで実装でき、組み込みシステムでよく使用されます。[2]
ビット バンギングにより、デバイスはハードウェアの変更を最小限に抑えるか、まったく変更せずに、さまざまなプロトコルを実装できます。最近のハードウェアは標準通信プロトコルが作成された当時のハードウェアよりもはるかに高速に動作するため、場合によっては、より新しく高速なプロセッサによってビット バンギングが実現可能になります。
Cコードの例
次のC 言語コード例では、 SPIバス上で 1 バイトのデータを送信します。
// バイトを MSB ファーストでシリアル送信します
void send_8bit_serial_data ( unsigned char data ) { int i ;
// デバイスを選択(アクティブロー)
output_low ( SD_CS );
// ビット 7..0 を送信します
for ( i = 0 ; i < 8 ; i ++ ) { // 左端のビットを考慮します// ビットが 1 の場合はラインを高く設定し、ビットが 0 の場合はラインを低く設定しますif ( data & 0x80 ) output_high ( SD_DI ); else output_low ( SD_DI );
// ビット値を読み取る必要があることを示すためにクロック状態をパルスする
output_low ( SD_CLK ); delay (); output_high ( SD_CLK );
// バイトを左にシフトして次のビットが左端の
データになるようにします<<= 1 ; }
// デバイス
output_high ( SD_CS ) の選択を解除します。}
考慮事項
ビット バンギングを展開するかどうかという問題は、一方では負荷、パフォーマンス、信頼性と、他方ではハードウェア代替手段の可用性との間のトレードオフです。ソフトウェア エミュレーション プロセスは、専用ハードウェアをサポートする場合よりも多くの処理能力を消費します。マイクロコントローラは、他のタスクを犠牲にして、ピンとの間でサンプルを送受信することに多くの時間を費やします。生成される信号は通常、ジッタやグリッチが多くなります。特にプロセッサが通信中に他のタスクも実行している場合はそうです。ただし、ビット バンギング ソフトウェアが信号によって割り込み駆動される場合、特にRTS、CTS、DCDなどの制御信号が使用できる場合は、これはあまり重要ではありません。特定のハードウェア サポートが利用できない場合や、より高価なマイクロコントローラが必要な場合は、ソフトウェアでの実装が解決策になります。
参照
- ビット操作
- ビットストリーム
- ビットツイドラー(曖昧さ回避)
- ビットシリアルアーキテクチャ
- 1ビットアーキテクチャ
- 高速ローダー
- 統合ウォズマシン(IWM)
- FTDI (ビットバンモードもサポートする USB からシリアルへのコンバーターチップのシリーズ)
- 2MGUI (Ciriaco García de Celis による DOS ドライバ。ビット バンギングを利用して、通常のフロッピー コントローラ ロジックを「バイパス」して、非標準の超大容量フロッピー ディスク形式をサポートします。Amiga フロッピー用の同様のプログラムは Vincent Joguin の Disk2FDI です)
- ライトペン(MDA、HGC、CGA、EGA PC 互換グラフィック カードでは、オプションのライトペンのセンサーをビット バンギングと同様の方法で読み取ることができます)
- 仮想マシン(VM) (実際のハードウェア コントローラをエミュレートする仮想デバイス ドライバを実装するには、ビット バンギングに似たプログラミング手法を利用する必要がある場合があります)
- ソフトウェア無線(SDR)
- 世論調査(コンピュータサイエンス)
参考文献
- ^ 「Analog Devices 電気工学 (EE) 用語集」 。2024年 9 月 22 日閲覧。
- ^ Predko, Michael (2000). PICmicro マイクロコントローラのプログラミングとカスタマイズ(第 2 版). McGraw-Hill Professional . pp. 10–12. ISBN 978-0-07-136172-9。
外部リンク
- 非同期シリアル (RS-232)
- ビットバンギング非同期シリアルに関する注意事項
- 非同期シリアル通信のビットバンギング
- RS-232 のビットバンギング
- I²Cバス
- ビットバンギングを使用した AVR 上の I2C
- SPIバス
- 8051 マイクロコントローラ用の効率的なビットバンギング SPI
