私が取り組んでいるプロジェクト、つまり単純なソフトウェア AFSK モデムにビットスタッフィングを実装しようとしています。簡略化されたプロトコルは次のようになります。
0111 1110 # burst sequence
0111 1110 # 16 times 0b0111_1110
...
0111 1110
...
... # 80 bit header (CRC, frame counter, etc.)
...
0111 1110 # header delimiter
...
... # data
...
0111 1110 # end-of-frame sequence
次に、受信したデータで予約されたシーケンスを見つける必要があるため0111 1110
、ヘッダーにもデータにも 6 つ1
の連続する が含まれていないことを確認する必要があります。これはビット スタッフィングによって行うことができます。たとえば、5 つ1
の s のシーケンスごとにゼロを挿入します。
11111111
に変換します
111110111
と
11111000
に変換します
111110000
これを効率的に実装したい場合は、1
s とs の配列を使用すべきではないと思います。ここでは、データ バイトをs とs0
に変換し、配列などに入力する必要がありますが、静的サイズのビットフィールドも適合しないようです。ビット スタッフィングにより、コンテンツの長さが可変になるためです。1
0
ビット スタッフィングをより効率的に行うには、どのデータ構造を使用できますか?