Упреждающая коррекция ошибок FEC (Forward Error Correction) нашла широкое применение в технике оптической связи последнего поколения. Её использование предусмотрено стандартами передачи SDH, OTH, Ethernet.
Для обнаружения и исправления ошибок чаще всего используются циклические блочные коды (коды Хэмминга, коды Боуза-Чоудхури-Хоквенгема (БХЧ), коды Рида-Соломона (RS). Подробные сведения о этих кодах приведены в ряде изданий [115, 116,117].
В технике оптических систем нашли широкое применение коды Рида-Соломона (Reed-Solomon – RS). При использовании этих кодов данные обрабатываются порциями по m-бит, которые именуют символами. Код RS(n, k) характеризуется следующими параметрами:
- длина символа m бит;
- длина блока n = (2m – 1) символов = m(2m – 1) бит;
- длина блока данных k символов;
- n – k = 2t символов = m(2t) бит;
- минимальное расстояние Хэмминга dmin = (2t + 1);
- число ошибок, требующих исправления t.
Алгоритм кодирования RS(n, k) расширяет блок k символов до размера n, добавляя (n – k) избыточных контрольных символов. Как правило, длина символа является степенью 2 и широко используется значение m = 8, т.е. символ равен одному байту. Для исправления всех 1 и 3 битовых ошибок в символах требуется выполнение неравенства:
. (8.22)
Рисунок 8.33. Образование строки с блоком контроля FEC
Для исправления ошибок применяется 16-символьный код RS(255, 239), который относится к классу линейных циклических блочных кодов.Каждый цикл передачи, например, STM-N или OTUk разбивается на блоки символов данных по 239 байт. Каждому такому блоку вычисляется контрольный блок из 16 символов – байт и присоединяется к 239 байтам, 240-255 байты. Т.о. n = 255, k = 239, т.е. RS(255, 239). Объединенный блок k и n – k образуют подстроку цикла. Синхронное побайтовое мультиплексирование подстрок образует одну строку цикла (рисунок 8.33).Порядок передачи строки слева направо. При формировании блока (n – k) блок данных k сдвигается на n – k и делится на производящий полином:
Р = х8 + х4 + х3 + х2 + 1. (8.23)
В результате получается частное от деления и остаток деления длиной n – k. Блок данных k и остаток деления объединяются, образуя подстроку. После передачи подстроки на приемной стороне производится ее деление на производящий полином Р, аналогичный тому что был на передаче. если после деления остаток ноль, то передача прошла без ошибок. Если после деления остаток не равен нулю, то это признак ошибки. Место положения ошибки в блоке k обнаруживается по остатку, например табличным методом.
Исправлению подлежит заданное количество ошибок в символе (1, 2 или более в байте). Благодаря тому, что RS(255, 239) имеет расстояние Хэмминга dmin = 17 можно корректировать до 8 символьных ошибок.
Таблица 8.6 Пример результата расчета коэффициента ошибок на выходе декодера FEC RS(255, 239)
При этом число обнаруживаемых ошибок составляет 16 в подстроке с FEC. В таблице 8.6 приведен пример теоретически рассчитанного коэффициента ошибок на выходе декодера FEC RS(255, 239) [117].Практическая эффективность кодирования RS(255, 239) может составить от 5 до 8 дБ, т.е. FEC позволяет увеличивать длины участков передачи по сравнению с системами без FEC. Это особенно актуально на протяженных линиях оптической передачи и при реконструкции, когда производится переход на высокие скоростные режимы, например, с 2.5Гбит/с на 10Гбит/с. При этом очень важно сохранить длины участков передачи существующей сети и не строить дополнительных промежуточных станций.
Пример оценки эффективности применения упреждающей коррекции при цифровой передаче приведен на рисунке 8.34.
Рисунок 8.34. Эффективность использования FEC