Декодируйте код Рида-Соломона, чтобы восстановить двоичные векторные данные
Communications Toolbox/Обнаружение и исправление ошибок/Блокировка
Блок Binary-Output RS Decoder восстанавливает двоичный вектор сообщения из двоичного вектора кодового слова Рида-Соломона. Для правильного декодирования значения параметров в этом блоке должны совпадать со значениями параметров в соответствующем блоке Binary-Input RS Encoder.
Символы для кода являются двоичными последовательностями M длины, соответствующими элементам поля Галуа GF (2M). Первый бит в каждом символе является самым значимым битом.
Этот рисунок показывает размер слова ввода-вывода декодера для длины кодового слова N = 7 и размер слова сообщения K = 2. Начиная с N = 2M-1, когда N = 7, длина символа, M = 3.
Каждое входное кодовое слово является двоичным вектором длины 21, который представляет 7 трехбитовых целых чисел. Каждый соответствующий выход сообщения является двоичным вектором длины 6, который представляет 2 трехбитовых целого числа. Для получения дополнительной информации смотрите Вход и Выход Длины сигнала в Блоках RS.
Этот значок показывает все порты, включая дополнительные таковые:
In
- кодовое слово Рида-СоломонаКлючевое слово тростника-Solomon в битах, определенных как (N C× (N - K + S - P) × <reservedrangesplaceholder9>)-by-1 двойной вектор - столбец. <reservedrangesplaceholder8> C - количество ключевых слов, N Codeword length N (symbols), K Message length K (symbols), S Shortened message length S (symbols), P - количество проколов за ключевое слово, и M количество бит за символ.
Для получения дополнительной информации смотрите Вход и Выход Длины сигнала в Блоках RS.
Типы данных: single
| double
| int8
| int16
| int32
| uint8
| uint16
| uint32
| Boolean
| ufix(1)
Era
- Вектор стиранияВектор стирания в символах, определенных как (N C× (N - K + S - P))-by-1 двойной вектор - столбец. <reservedrangesplaceholder8> C - количество ключевых слов, N Codeword length N (symbols), K Message length K (symbols), S Shortened message length S (symbols), P - количество проколов за ключевое слово, и M количество бит за символ.
Значения стирания 1 соответствуют удаленным битам в том же положении в кодовом слове. Значения 0 соответствуют битам, которые не стираются. Для получения дополнительной информации см. «Прокалывание и стирание».
Чтобы включить этот порт, выберите Enable erasures input port.
Типы данных: double
| Boolean
Out
- Декодированное сообщениеДекодированное сообщение в битах, возвращаемое как одно из следующего:
Когда нет никакого сокращения сообщения, (N C× <reservedrangesplaceholder1> × <reservedrangesplaceholder0>)-by-1 двойной вектор - столбец.
Когда есть сокращение сообщения, (N C× <reservedrangesplaceholder1> × <reservedrangesplaceholder0>)-by-1 двойной вектор - столбец.
N C - количество слов сообщения, K - Message length K (symbols), M - количество битов на символ и S - Shortened message length S (symbols).
Примечание
Количество декодированных слов сообщения равняется количеству кодовых слов.
Для получения дополнительной информации смотрите Вход и Выход Длины сигнала в Блоках RS.
Типы данных: single
| double
| int8
| int16
| int32
| uint8
| uint16
| uint32
| Boolean
| ufix(1)
Err
- Ошибки декодированияОшибки декодирования символов, возвращенные как целочисленный вектор с N элементами C, где N C - количество кодовых слов. Этот порт указывает количество ошибок символов, обнаруженных во время декодирования каждого кодового слова. Отрицательное целое число указывает, что блок обнаружил больше ошибок, чем мог бы исправить при помощи указанной схемы кодирования.
Примечание
Код (N, K) Рида-Соломона может исправлять до floor((N-K)/2)
символьные ошибки (не битовые ошибки) в каждом кодовом слове. Когда принятое кодовое слово содержит больше (N - K )/2 ошибок символов, происходит отказ декодирования.
Чтобы включить этот порт, выберите Output number of corrected symbol errors.
Типы данных: double
Дополнительные сведения см. в разделе Поддерживаемые типы данных.
Codeword length N (symbols)
- Длина кодового слова7
(по умолчанию) | целое числоДлина кодового слова в символах, заданная как целое число.
Для получения дополнительной информации смотрите Ограничения на M и Длину кодового слова N и Входной и Выходной Длины сигнала в Блоках RS.
Message length K (symbols)
- размер слова сообщения3
(по умолчанию) | целое числоРазмер слова сообщения в символах, заданная в виде целого числа в области значений [1, N -2], где N - длина кодового слова.
Shortened message length S (symbols)
- Сокращённый размер слова сообщения3
(по умолчанию) | целое числоСокращённый размер слова сообщения в символах, заданная как целое число, такое что S ≤ K. При Shortened message length S (symbols) < Message length K (symbols) код Рида-Соломона сокращается.
Вы по-прежнему задаете N и K значения для полноразмерного (N, K) кода, но декодирование сокращается до кода (N - K + S, S).
Чтобы включить этот параметр, выберите Specify shortened message length.
Generator polynomial
- Полином генератораrsgenpoly(7, 3, [], [], 'double')
(дефолт) | многочленный вектор символов | вектор строки двоичных знаков | набор из двух предметов вектор - строка ГалуаПолином генератора со значениями от 0 до 2M-1, в порядке убывания степени, указывается как одно из следующего:
Полиномиальный вектор символов. Для получения дополнительной информации смотрите Представление символов полиномов.
Целочисленный вектор-строка, который представляет коэффициенты полинома генератора в порядке убывания степени.
Целое число вектора-строки Галуа, который представляет коэффициенты полинома генератора в порядке убывания степени.
Каждый коэффициент является элементом поля Галуа, заданным примитивным полиномом. Для получения дополнительной информации смотрите Задать полином генератора.
Пример: [1 3 1 2 3]
, что эквивалентно rsgenpoly(7,3)
Чтобы включить этот параметр, выберите Specify generator polynomial.
Primitive polynomial
- Примитивный полином'X^3 + X + 1'
(по умолчанию) | полиномиальный вектор символов | двоичный вектор-строкаПримитивный полином в порядке убывания степени. Этот полином имеет порядок M и задает конечное поле Галуа GF (2M), соответствующих целым числам, которые образуют слова сообщения и кодовые слова. Задайте примитивный полином как один из следующих:
Полиномиальный вектор символов. Для получения дополнительной информации смотрите Представление символов полиномов.
Двоичный вектор-строка, который представляет коэффициенты полинома генератора.
Для получения дополнительной информации смотрите Ограничения на M и Длину кодового слова N.
Пример: 'X^3 + X + 1'
, который является примитивным полиномом, используемым для (7,3) кода, de2bi(primpoly(3,'nodisplay'),'left-msb')
Чтобы включить этот параметр, выберите Specify primitive polynomial.
Puncture vector
- Вектор прокола[ones(2,1); zeros(2,1)]
(по умолчанию) | двоичный вектор-столбецВектор прокола, заданный как (N - K) -на-1 двоичный вектор-столбец. Индексы элемента с 1
s представляют индексы symbol данных, которые проходят через блок без изменений. Индексы элемента с 0
s представляют индексы symbol данных, которые получают проколы или удаляются из потока данных. Для получения дополнительной информации см. «Прокалывание и стирание».
Чтобы включить этот параметр, выберите Punctured code.
Enable erasures input port
- Включите входной порт стиранияУстановка этого флажка включает порт стирания, Era. Для получения дополнительной информации см. «Прокалывание и стирание».
Output number of corrected symbol errors
- Включите порт, чтобы вывести количество исправленных ошибок символаУстановка этого флажка включает дополнительный выход порт Err, который указывает количество символьных ошибок, исправленных блоком в вход кодовом слове.
Output data type
- Выход блокаSame as input
(по умолчанию) | boolean
| double
Выход блока, заданный как Same as input
, boolean
, или double
.
Код Рида-Соломона имеет размер слова сообщения, K или укороченный размер слова сообщения, S. Длина кодового слова N - K + S - P, где N - полная длина кодового слова, а P - количество проколов на кодовое слово. Когда нет сокращения сообщения, выражение длины кодового слова уменьшается до N - P, потому что K = S. Если декодер обрабатывает несколько кодовых слов на систему координат, то один и тот же шаблон прокола сохраняется для всех кодовых слов.
В этой таблице представлены выражения для длин входного и выходного сигналов для кодера Рида-Соломона и декодера.
Запись y = N C × x обозначает, что y является целым числом, кратным x.
Вход, стирание и Выход Длин вектора | ||
---|---|---|
Кодер блоков | Сокращение количества сообщений не используется | Используемое сокращение количества сообщений |
Двоичный входной параметр RS Энкодера |
Входная длина (биты): N C × K × M Выходная длина (биты): <reservedrangesplaceholder3> C × (N - P) × <reservedrangesplaceholder0> |
Входная длина (биты): N C × S × M Выходная длина (биты): <reservedrangesplaceholder5> C × (N - K + S - P) × <reservedrangesplaceholder0> |
Двоичный-выходной RS-декодер |
Входная длина (биты): <reservedrangesplaceholder3> C × (N - P) × <reservedrangesplaceholder0> Стирает длину (символы): N C × (N - P) Выходная длина (биты): N C × K × M |
Входная длина (биты): <reservedrangesplaceholder5> C × (N - K + S - P) × <reservedrangesplaceholder0> Стирает длину (символы): N C × (N - K + S - P) Выходная длина (биты): N C × S × M |
N - длина кодового слова.
K - размер слова сообщения.
S - сокращённый размер слова сообщения.
N C - количество кодовых слов (и слов сообщений).
P - количество проколов на кодовое слово, и равно количеству нулей в векторе прокола.
M - это степень примитивного полинома. Каждая группа M бит представляет целое число между 0
и 2M–1
который принадлежит конечному полю Галуа GF (2M)
.
Для получения дополнительной информации о представлении данных для кодов Рида-Соломона, смотрите Целочисленный формат (только для Рида-Соломона).
Кроме того, см. Ограничения на M и длину кодового слова N.
Если вы не выбираете Specify primitive polynomial, допустимые значения длины кодового слова, N, составляют от 7 до 65535. В этом случае блок использует примитивный полином степени по умолчанию M = ceil(log2(N+1))
. Можно отобразить примитивный полином по умолчанию, запустив primpoly(ceil(log2(N+1)))
.
Если вы выбираете Specify primitive polynomial, допустимые значения для примитивной полиномиальной степени, M, составляют от 3 до 16. Допустимые значения для N в этом случае составляют от 7 до 2M–1. Выбор Specify primitive polynomial позволяет вам задать примитивный полином, который задает конечное поле GF (2M), что соответствует значениям, которые формируют слова сообщения и кодовые слова.
Выберите Specify generator polynomial, чтобы включить параметр Generator polynomial для определения полинома генератора кода Рида-Соломона. Введите целочисленный вектор-строку со значениями элементов от 0 до 2M-1. Вектор представляет полином, в порядке убывания степеней, коэффициенты которого являются элементами GF (2M) представлено в целочисленном формате. Для получения дополнительной информации о целочисленном и двоичном формате смотрите Целочисленный формат (только для Рида-Соломона). Полином генератора должен быть равен полиному с этой факторизованной формой:
g (x) = (x + αb) (x + αb+1) (x + αb+2)... (x + αb+N-K-1)
α - примитивный элемент поля Галуа, над которым задано входное сообщение, а b - целое число.
Если вы не выбираете Specify generator polynomial, блок использует полином генератора по умолчанию, соответствующий b = 1, для кодирования Рида-Соломона. Можно отобразить полином генератора по умолчанию, запустивrsgenpoly
.
Если вы используете примитивный полином по умолчанию (Specify primitive polynomial не выбран), полином генератора по умолчанию является rsgenpoly(N,K)
, где N = 2M-1
.
Если вы не используете примитивный полином по умолчанию (Specify primitive polynomial выбран), и вы задаете примитивный полином как poly
, полином генератора rsgenpoly(N,K,poly)
.
Примечание
Степень полинома генератора N − K, где N - длина кодового слова, а K - размер слова сообщения.
1
s и 0
s имеют точно противоположные значения для векторов пункции и стирания.
В векторе прокола,
1
означает, что символ данных передается через блок без изменений.
0
означает, что символ данных должен быть проколот или удален из потока данных.
В векторе стирания,
1
означает, что символ данных должен быть заменен символом стирания.
0
означает, что символ данных передается через блок без изменений.
Эти соглашения применяются как к энкодеру, так и к декодеру. Для получения дополнительной информации см. «Укорочение, прокалывание и стирание».
Порт | Поддерживаемые типы данных |
---|---|
В |
|
Из |
|
Эра |
|
Допустить ошибку |
|
Этот блок использует алгоритм декодирования Берлекампа-Мэсси. Для получения информации об этом алгоритме смотрите Алгоритмы для декодирования только ошибок BCH и RS.
[1] Wicker, Stephen B. Системы управления ошибками для цифровой связи и хранения данных. Upper Saddle River, NJ: Prentice Hall, 1995.
[2] Берлекамп, Элвин Р. Алгебраическая теория кодирования. Нью-Йорк: McGraw-Hill, 1968.
[3] Clark, George C., Jr., and J. Bibb Cain. Кодирование с исправлением ошибок для цифровых коммуникаций. Нью-Йорк: Пленум Пресс, 1981.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.