Исправление ошибок Рида Соломона и ложных срабатываний - PullRequest
0 голосов
/ 27 октября 2018

У меня есть кодер / декодер Рида-Соломона. После манипулирования данными и оценки результатов я испытал следующие 3 случая:

  1. Декодер правильно декодирует сообщение и не выдает ошибку
  2. Декодер декодирует сообщение с неверным результатом, не жалуясь - эффективно выдает ложное срабатывание. Вероятность должна быть очень низкой, но может произойти, даже если количество манипулируемых данных намного ниже способности исправления ошибок (даже после изменения одного бита ...)
  3. Декодер дает сбой (выдает ошибку), если манипулирует большим количеством данных, чем это позволяет его способность исправлять ошибки.

Действительны ли все 3 случая для правильного декодера Рида-Соломона? Я особенно не уверен в случае 2, где декодер будет давать неправильный результат (без выдачи ошибки), даже если ошибок намного меньше, чем допускается его способностями к исправлению ...?

1 Ответ

0 голосов
/ 27 октября 2018
Исправление ошибок ниже способности исправления ошибок

Это указывает на ошибку в коде.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

...