Исправление ошибок ниже способности исправления ошибок
Это указывает на ошибку в коде.RS-декодер никогда не должен выходить из строя, если есть ошибки меньше чем ⌊ (nk) / 2⌋.
Коррекция обнаруживает, когда ошибок больше, чем возможность исправления ошибок.
Даже если ошибок больше, чем ⌊ (nk) / 2⌋, существует высокая вероятность, что декодер RS будетпо-прежнему обнаруживать неисправимую ошибку, так как большинство шаблонов ошибок не приведет к полученному кодовому слову, которое находится в пределах ⌊ (nk) / 2⌋ или меньше символов ошибки действительного кодового слова, поскольку работающий декодер RS должен только создавать действительное кодовое слово или указыватьнеисправимая ошибкаНеверное исправление ошибок более чем на ⌊ (nk) / 2⌋ включает в себя декодер, создающий дополнительный символ ошибки ⌊ (nk) / 2⌋ или меньше, что приводит к действительному кодовому слову, но отличается от оригинала на n-k + 1 илибольше символов.
Обнаружение неисправимой ошибки может быть сделано путем регенерации синдромов для исправленного кодового слова, но обычно это происходит быстрее при решении полинома локатора ошибок (обычно это делается путем циклического перебора всех возможных значений локатора), когда он производитменьше локаторов, чем следовало бы из-за дублирования или отсутствия корней.
Я написал несколько интерактивных демонстрационных программ RS на C, как для 4-битных, так и для 8-битных полей, которые включают в себя 3 наиболее распространенных декодера (PGZ (матрица),BM (несоответствие), SY (расширенный Евклид)).Обратите внимание, что декодеры Euclid с расширенным SY в моих примерах эмулируют аппаратно-ориентированное решение, ориентированное на регистры, два регистра всегда сдвигаются влево, каждый регистр содержит два полинома, где разделение сдвигается влево вместе с регистром.Правая половина каждого регистра переворачивается (сначала младший значимый коэффициент).Пример статьи в вики может быть проще для подражания.
http://rcgldr.net/misc/eccdemo4.zip
http://rcgldr.net/misc/eccdemo8.zip