Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
Цепи, основанные на регистрах сдвига, обычно называют фильтрами. Блок-схема фильтра, осуществляющего деление полинома на константу, приведена на рис. 2. Пусть вас не смущает тот факт, что деление реализуется посредством умножения и сложения. Данный прием базируется на вычислении системы двух рекуррентных равенств:
Формула 1. Деление полинома на константу посредством умножения и сложения
Здесь: Q(r)(x) и R(r)(x) – соответственно частное и остаток на r-шаге рекурсии. Поскольку сложение и вычитание, выполняемое по модулю два, тождественны друг другу, для реализации делителя нам достаточно иметь всего два устройства – устройство сложения и устройство умножения, а без устройства вычитания можно обойтись.
После n-сдвигов на выходе регистра появляется частное, а в самом регистре окажется остаток, который и представляет собой рассчитанные символы четности (они же – коды Рида-Соломона), а коэффициенты умножения с g0 по g(2t – 1) напрямую соответствуют коэффициентам умножения порожденного полинома.
Рисунок 2. Устройство простейшего кодера Рида-Соломона
Простейший пример программной реализации такого фильтра приведен ниже. Это законченный кодер Рида-Соломона, вполне пригодный для практического использования. Конечно, при желании его можно было бы и улучшить, но тогда неизбежно пострадала бы наглядность и компактность листинга.
Листинг 1. Исходный текст простейшего кодера Рида-Соломона
/*-----------------------------------------------------------------------------------------------------
*
* кодировщик Рида-Соломона
* ========================
*
* кодируемые данные передаются через массив data[i], где i=0..(k-1), а сгенерированные символы четности
* заносятся в массив b[0]..b[2*t-1]. Исходные и результирующие данные должны быть представлены
* в полиномиальной форме (т.е. в обычной форме машинного представления данных).
* Кодирование производится с использованием сдвигового feedback-регистра, заполненного соответствующими
* элементами массива g[] с порожденным полиномом внутри, процедура генерации которого уже обсуждалась
* в предыдущей статье. Сгенерированное кодовое слово описывается следующей формулой:
* с(x) = data(x)*x(n-k) + b(x)
*
* на основе исходных текстов Simon Rockliff, от 26.06.1991, распространяемых
* по лицензии GNU
–––––––––––––––––––––––––––––––––––––––––––––––––––––––––---------------------------------------------*/
encode_rs()
{