Перейти к содержанию

Прямая коррекция ошибок (FEC)

Радиоканал теряет биты: шум у границы чувствительности, короткие помехи, замирания. Можно переспрашивать пакет, а можно сразу передать немного лишнего, чтобы приёмник исправил ошибки сам. Второй путь называют прямой коррекцией ошибок — FEC.

Обновлено Редакция GAW

Прямая коррекция ошибок (forward error correction, FEC) — кодирование, при котором передатчик добавляет к данным избыточные биты, а приёмник по ним сам исправляет часть ошибок, не запрашивая повтор. TI формулирует выгоду так: FEC позволяет принимать при меньшем отношении сигнал/шум, то есть увеличить дальность при той же полосе приёмника, или при том же SNR получить меньшую долю ошибочных битов (CC1101, разд. 18.1).

Кодовая скорость

Избыточность выражают кодовой скоростью — долей полезных бит в переданных. Чем она меньше, тем сильнее защита и длиннее пакет.

ГдеКодКодовая скоростьНакладные расходы
LoRa (SX1276)циклический4/5, 4/6, 4/7, 4/81,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):

PER=1−(1−BER)n,PER = 1 - (1 - BER)^{n},

где 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).

Источники

  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 превращает пачку ошибок в одиночные
  2. 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 особенно полезна при помехах, кодовую скорость можно передавать в заголовке пакета
  3. 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

Нашли ошибку?