Обеление данных (data whitening)
Пакет из одних нулей или длинных серий одинаковых бит — неудобный сигнал для радиоприёмника: подстройка частоты и порога «уплывает», а спектр становится неравномерным. Вместо того чтобы требовать от программиста случайных данных, радиочипы делают их случайными сами — это и есть обеление.
Обновлено Редакция GAW
Обеление данных (data whitening, скремблирование) — сложение передаваемых бит по XOR с псевдослучайной последовательностью перед передачей и такое же сложение на приёме. Повторный XOR с той же последовательностью возвращает исходные данные, а в эфире вместо длинных серий нулей или единиц идёт поток, похожий на случайный. В радиочипах обеление выполняет аппаратный обработчик пакетов, и программа работает с обычными данными.
Зачем приёмнику случайные данные
TI объясняет это так: с точки зрения радио идеальные данные случайны и не имеют постоянной составляющей. Тогда мощность равномерно распределена по занятой полосе, а петли регулирования приёмника — усиление, подстройка частоты, порог решения — работают в одинаковых условиях независимо от содержимого пакета (CC1101, разд. 15.1). Semtech добавляет, что длинные серии одинаковых бит создают постоянную составляющую и делают работу демодулятора зависимой от данных (SX1276, разд. 4.2.13.7). Особенно это заметно у частотной манипуляции, где длинная серия нулей — это долгая передача на одной частоте.
Как это сделано в CC1101 и SX1276
| CC1101 | SX1276 (FSK) | |
|---|---|---|
| Включение | PKTCTRL0.WHITE_DATA = 1 | DcFree = 10 |
| Генератор | PN9, 9 бит, начальное значение — все единицы | 9-битный LFSR, полином X⁹ + X⁵ + 1 (рис. 37, с. 79) — тот же PN9 |
| Что обеляется | всё, кроме преамбулы и синхрослова | данные и 2 байта CRC |
| Источник | разд. 15.1 | разд. 4.2.13.7 |
Преамбула и синхрослово передаются без изменений: приёмник должен найти их до того, как начнёт снимать обеление. Контрольная сумма CRC в обоих чипах обеляется вместе с полем данных (CC1101, разд. 15; SX1276, разд. 4.2.13.7).
Обеление или манчестерский код
Оба способа решают одну задачу — убрать длинные серии одинаковых бит. В SX1276 можно включить только один из них (разд. 4.2.13.7). Манчестерский код гарантирует переход в каждом бите, но вдвое снижает полезную скорость. Обеление скорость сохраняет, но гарантии не даёт — оно лишь делает длинные серии маловероятными для обычных данных. Если скорость важнее строгой гарантии переходов, разумно выбрать обеление (наша рекомендация). Обе настройки должны совпадать на передатчике и приёмнике, иначе пакеты будут отбрасываться по ошибке CRC.
Частые вопросы
Обеление — это шифрование?
Нет. Последовательность PN9 фиксирована и известна: у CC1101 генератор каждый раз начинает с единиц (разд. 15.1). Любой приёмник с той же настройкой восстановит данные. Обеление нужно только для формы сигнала; для защиты данных используют шифрование на уровне протокола.
Чем обеление лучше манчестерского кода?
Оно не уменьшает скорость. Манчестерский код передаёт каждый бит двумя символами, и полезная скорость падает вдвое, а обеление лишь меняет значения бит (SX1276, разд. 4.2.13.7). Цена — нет строгой гарантии переходов: специально подобранные данные могут после XOR дать длинную серию, но для обычных данных это маловероятно.
Почему пакеты не принимаются после включения whitening?
Скорее всего, обеление включено только на одной стороне или чипы используют разные последовательности. Настройка должна совпадать на передатчике и приёмнике; у CC1101 это бит PKTCTRL0.WHITE_DATA, у SX1276 в режиме FSK — поле DcFree. Совместимость обеления у чипов разных производителей проверяют по описанию последовательности в обоих даташитах.
Источники
- Texas Instruments. CC1101 Low-Power Sub-1 GHz RF Transceiver, SWRS061I (2013) — разд. 15.1 (с. 37–38): с точки зрения радио идеальные данные случайны и без постоянной составляющей — это даёт самое равномерное распределение мощности в полосе и одинаковые условия для петель регулирования приёмника; реальные данные содержат длинные серии нулей и единиц; при PKTCTRL0.WHITE_DATA = 1 все данные, кроме преамбулы и синхрослова, складываются по XOR с 9-битной псевдослучайной последовательностью PN9, приёмник повторяет XOR; PN9 инициализируется единицами; рис. 18 — схема; разд. 15 (с. 37): обеление применяется к полю данных и CRC
- Semtech. SX1276/77/78/79 Datasheet, Rev. 5 (August 2016) — архивная копия официального файла; разд. 4.2.13.7 (с. 78): длинные серии 1 и 0 дают постоянную составляющую, неравномерную мощность в полосе и зависимость работы демодулятора от данных; два способа — манчестерский код и обеление, включается только один; обеление: DcFree = 10, 9-битный LFSR, XOR данных и 2-байтового CRC, скорость не уменьшается, в отличие от манчестерского кода; рис. 37 — полином
Нашли ошибку?
Смотрите также
- Манчестерский кодБит = две половинки с перепадом посередине; без постоянной составляющей, скорость вдвое ниже
- CC1101Трансивер ниже 1 ГГц по SPI: выводы, питание, токи, частота канала, FIFO
- SX1276, SX1278LoRa-трансиверы: версии, выводы, PA_BOOST и +20 дБм, токи, сброс, SPI, DIO
- FSK и GFSKЧастотная манипуляция: 0 и 1 — сдвиг на минус и плюс девиацию
- CRCЦиклический избыточный код для обнаружения ошибок
- Радиомодули 433 и 868 МГцOOK, ASK, FSK; супергетеродин и сверхрегенератор; CC1101, SX1276/SX1278; выбор модуля