Прямая коррекция ошибок (FEC)
Радиоканал теряет биты: шум у границы чувствительности, короткие помехи, замирания. Можно переспрашивать пакет, а можно сразу передать немного лишнего, чтобы приёмник исправил ошибки сам. Второй путь называют прямой коррекцией ошибок — FEC.
Обновлено Редакция GAW
Прямая коррекция ошибок (forward error correction, FEC) — кодирование, при котором передатчик добавляет к данным избыточные биты, а приёмник по ним сам исправляет часть ошибок, не запрашивая повтор. TI формулирует выгоду так: FEC позволяет принимать при меньшем отношении сигнал/шум, то есть увеличить дальность при той же полосе приёмника, или при том же SNR получить меньшую долю ошибочных битов (CC1101, разд. 18.1).
Кодовая скорость
Избыточность выражают кодовой скоростью — долей полезных бит в переданных. Чем она меньше, тем сильнее защита и длиннее пакет.
| Где | Код | Кодовая скорость | Накладные расходы |
|---|---|---|---|
| LoRa (SX1276) | циклический | 4/5, 4/6, 4/7, 4/8 | 1,25; 1,5; 1,75; 2 |
| CC1101 | свёрточный, длина ограничения 4 | ½ | 2 |
Источники — SX1276, табл. 14, и CC1101, разд. 18.1. В LoRa кодовую скорость можно передавать в заголовке пакета, чтобы менять её по условиям канала; Semtech отмечает, что FEC особенно полезна при помехах. Цена — время в эфире: в примере AN1200.13 (табл. 4, SF = 10, полоса 250 кГц) пакет занимает 123,9 мс при CR 1 (4/5), 132,1 мс при CR 2 и 148,5 мс при CR 4 (4/8).
Доля ошибок пакетов и битов
Связь доли ошибочных пакетов с долей ошибочных битов TI даёт формулой (CC1101, разд. 18.1):
где n — длина пакета в битах. Пример (наш расчёт): при BER 10−3 пакет из 20 байт (160 бит) теряется с вероятностью около 15 %. Поэтому FEC, снижающая BER, позволяет передавать более длинные пакеты — это важно и для сравнения чувствительности, заданной при разных критериях.
Перемежение
Помехи и замирания портят биты пачками, а свёрточный код лучше исправляет одиночные ошибки. Поэтому в CC1101 вместе с FEC работает перемежение: биты записываются в матрицу 4 × 4 по строкам, а передаются по столбцам; после обратной перестановки сплошная пачка ошибок превращается в разрозненные (разд. 18.2).
Подводный камень CC1101
Код ½ вдвое снижает полезную скорость. Чтобы сохранить её, скорость в эфире удваивают, а значит, нужна более широкая полоса приёмника и чувствительность падает; выигрыш FEC и проигрыш по полосе, по словам TI, противоположны (разд. 18.1). Кроме того, FEC у CC1101 работает только с пакетами фиксированной длины.
Не путать
С CRC — контрольной суммой, которая ошибку только обнаруживает. Классический пример исправляющего кода разобран в калькуляторе кода Хэмминга. Как кодовая скорость входит в расчёт времени пакета LoRa — в статье «LoRa», модули на CC1101 — в статье «Радиомодули 433 и 868 МГц».
Частые вопросы
Что значит кодовая скорость 4/5 в LoRa?
Что на каждые 4 бита данных передаётся 5 бит: накладные расходы 1,25. Дальше идут 4/6, 4/7 и 4/8 — до двукратной избыточности (SX1276, табл. 14). Чем больше избыточность, тем устойчивее связь к помехам и тем дольше пакет: в примере AN1200.13 (табл. 4: SF = 10, полоса 250 кГц) время в эфире растёт от 123,9 мс при CR 1 до 148,5 мс при CR 4.
Улучшает ли FEC чувствительность CC1101?
Не обязательно. Свёрточный код ½ вдвое снижает полезную скорость; чтобы её сохранить, скорость в эфире удваивают, а значит, расширяют полосу приёмника — и чувствительность падает. TI прямо называет эти эффекты противоположными (CC1101, разд. 18.1). При неизменной скорости в эфире FEC позволяет принимать при меньшем SNR.
Чем FEC отличается от CRC?
CRC только обнаруживает ошибку — пакет отбрасывают или запрашивают повтор. FEC добавляет избыточность, по которой приёмник исправляет часть ошибок сам. В CC1101 FEC кодирует и данные, и CRC, так что CRC проверяет результат после исправления (разд. 18.1).
Источники
- Texas Instruments. CC1101 Low-Power Sub-1 GHz RF Transceiver, SWRS061I (2013) — разд. 18.1: FEC включается битом MDMCFG1.FEC_EN, только в режиме фиксированной длины пакета, кодируются поле данных и CRC; избыточность позволяет восстановить данные при части ошибочных битов, приём при меньшем SNR или меньший BER при том же SNR; PER = 1 − (1 − BER)^длина_пакета; свёрточный код со скоростью ½ и длиной ограничения m = 4 — эффективная скорость вдвое меньше, для той же скорости нужна вдвое большая скорость в эфире и шире полоса, что снижает чувствительность; разд. 18.2: матричное перемежение 4 × 4 превращает пачку ошибок в одиночные
- Semtech. SX1276/77/78/79 Datasheet, Rev. 5 (August 2016) — архивная копия официального файла; разд. 4.1.1.3, табл. 14: циклическое кодирование LoRa, CodingRate 1–4 — 4/5, 4/6, 4/7, 4/8, накладные расходы 1,25, 1,5, 1,75 и 2; FEC особенно полезна при помехах, кодовую скорость можно передавать в заголовке пакета
- Semtech. AN1200.13 SX1272/3/6/7/8: LoRa Modem Designer's Guide, Rev. 1 (July 2013) — архивная копия официального файла; табл. 4: SF = 10, BW = 250 кГц — время в эфире при CR 1, 2 и 4 — 123,9, 132,1 и 148,5 мс; разд. 2.3: FEC вместе с модуляцией и выигрышем обработки даёт отрицательный требуемый SNR
Нашли ошибку?
Смотрите также
- LoRaSF, BW, CR, чувствительность SX1276, структура пакета, формула времени в эфире, пример
- Радиомодули 433 и 868 МГцOOK, ASK, FSK; супергетеродин и сверхрегенератор; CC1101, SX1276/SX1278; выбор модуля
- Chirp spread spectrum (CSS)Расширение спектра ЛЧМ-импульсами: основа LoRa, приём ниже шумового порога
- CRCЦиклический избыточный код для обнаружения ошибок
- Код ХэммингаКодирование, синдром, исправление ошибки, SECDED
- Чувствительность приёмникаНаименьший сигнал, который приёмник принимает с заданной ошибкой