Лабораторные 101-104 (Методичка по лабам), страница 5
Описание файла
Файл "Лабораторные 101-104" внутри архива находится в папке "metoda". Документ из архива "Методичка по лабам", который расположен в категории "". Всё это находится в предмете "вычислительные машины, системы и сети (вмсис)" из 5 семестр, которые можно найти в файловом архиве НИУ «МЭИ» . Не смотря на прямую связь этого архива с НИУ «МЭИ» , его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "вмсис" в общих файлах.
Онлайн просмотр документа "Лабораторные 101-104"
Текст 5 страницы из документа "Лабораторные 101-104"
Вышеупомянутый циклический сдвиг образующего многочлена без переноса единицы в конец кодовой комбинации соответствует простому умножению на х. Например, вторая строка матрицы есть
g0 (x)x=x4+x2+x (010110).
Циклический сдвиг строки матрицы с единицей в старшем разряде (слева) равносилен умножению соответствующего многочлена на х с одновременным вычитанием из результата многочлена хп+1
Поскольку операции вычитания и сложения по модулю два тождественны, многочлен, соответствующий любой строке матрицы, может быть записан в виде
gi(x)=g0(x)xi+С(xn+1),
где С равно 1, если степень g0(x)xi превышает n-1, и нулю, если не превышает.
Если выбрать за образующий такой многочлен g0(x), который является делителем двучлена xn+1, то все многочлены матрицы, а поэтому и все многочлены кода (разрешенные кодовые комбинации), будут делиться на g0 (x) без остатка. Ни один многочлен, соответствующий запрещенной кодовой комбинации, на образующий многочлен на цело не делится. Это свойство позволяет обнаруживать ошибки. По виду остатка можно определить и вектор ошибки, а, следовательно, и устранить ее.
Любая принятая кодовая комбинация h(x), содержащая ошибку, может быть представлена в виде суммы по модулю два неискаженной комбинации кода f(x), делящейся на g0(x) без остатка, и вектора ошибки e(x). Для однозначности декодирования каждому вектору ошибки должен соответствовать отличный от других остаток - опознаватель. Чем больше различных остатков может быть образовано при делении h(x) на g0(x), тем больше разновидностей ошибок способен исправить данный циклический код.
Наибольшее число остатков, равное 2m-1 (исключая нулевой), может обеспечить только неприводимый (простой) многочлен g0(x) степени m , принадлежащий показателю степени п, если m и n связаны соотношением n= 2m-1.
В литературе по кодированию [1;2] доказано, что для любого т существует по крайней мере один неприводимый многочлен степени т, принадлежащий показателю степени п, если n=2m-1.
При известном числе информационных символов (к) задача, следовательно, сводится к тому, чтобы определить наименьшую степень т образующего многочлена, обеспечивающего обнаружение или исправление ошибок заданной кратности. Зная п и т по имеющимся в ряде книг [2] таблицам многочленов, неприводимых при двоичных коэффициентах, можно выбрать и конкретный образующий многочлен.
Для исправления одиночных ошибок требуемая минимальная степень образующего многочлена (m) находится из соотношения
2т-1=2п-k-1 C1n
Выберем, например образующий многочлен для случая к=4. Тогда п=7 и т=3.
В таблице неприводимых многочленов, принадлежащих степени п, находим два многочлена третей степени, так как х7+1=(х+1)(х3+х+1)(х3+х2+1).
Примем за образующий многочлен g(x)=x3+x2+1 (1101). Чтобы убедится, что каждому вектору ошибки соответствует отличный от других остаток, поделим каждый из этих векторов на g0(x).
Векторы ошибок т младших разрядов имеют вид :
Степени соответствующих им многочленов меньше степени образующего многочлена g0(x). Поэтому они сами являются остатками при нулевой целой части. Остаток, соответствующий ошибке в следующем разряде, получается при делении 1000 на 1101, т.е.
1000 1101
1101
101
Аналогично могут быть найдены и остальные остатки. Однако их можно получить проще, деля на g0(x) комбинацию в виде единицы с рядом нулей и выписывая все промежуточные остатки
1 000000000 1101 Остатки
1101
1010 101
1101 111
1110 011
1101 110
01100 001
1101 010
001000 100
При последующем делении остатки повторяются.
Если выбрать в качестве образующего многочлена , то тоже получим требуемое число различных остатков – 7.
Если k=5 и требуется исправлять тоже одиночную ошибку, то . Откуда получаем nmin=9 и m= n – k =9–5=4. Примем . Этот образующий многочлен сохранится до k=11, так как неравенство будет выполняться при nmin=15 и m=4.
3.2. Метод и средства кодирования
Применительно к циклическим кодам принято отводить под информационные символы k старших разрядов многочлена кода, а под проверочные символы n-k низших разрядов.
Применяется следующая процедура кодирования:
многочлен а(х), соответствующий k-разрядной комбинации информационных разрядов кода, умножается на хт, где т - степень образующего многочлена. Это соответствует добавлению к комбинации а(х) m нулей со стороны младших разрядов. Произведение a(x)xm делится на образующий многочлен g0(x). В общем случае при этом получаем некоторое частное q(x) и остаток r(x):
a(x)xm=q(x)g0(x) r(x).
Остаток прибавляется к а(х)хт. Поскольку степень остатка r(x) не превышает т-1, а в комбинации, соответствующей многочлену а(х)хт, т младших разрядов-нулевые, то указанная операция сложения равносильна приписыванию r(x) к а(х) со стороны младших разрядов.
Полученный многочлен f(x)=a(x)xm r(x)=q(x)g0(x) делится на g(x) без остатка и, следовательно, соответствует разрешенной комбинации кода.
Техническая реализация описанного процесса кодирования в случае двоичных кодов осуществляется посредством регистра сдвига с обратными связями, состоящего из ячеек памяти и сумматоров по модулю два. Сдвиг информации в регистре осуществляется импульсами, поступающими с генератора продвигающих импульсов, который на схеме, как правило, не указывается. На вход регистра поступают только коэффициенты многочленов, причем, начиная с коэффициента при переменной в старшей степени.
На рис.3.1 представлена схема, выполняющая деление произвольного многочлена (например, многочлена а(х)=ап-1хп-1+ап-2хп-2+,...,+а1(х)+а0) на некоторый фиксированный (например, образующий) многочлен
g(x)=gn-kхп-к+...+g1(x)+g0.
Обратные связи регистра соответствуют виду многочлена g0(x). КоличЕство включаемых в него сумматоров равно числу отличных от нуля коэффициентов g0(x), уменьшенному на единицу. Это объясняется тем, что сумматор сложения коэффициентов старших разрядов многочленов делимого и делителя в регистр не включается, так как результат сложения заранее известен (он равен нулю).
За первые m тактов коэффициенты многочлена-делимого заполняют регистр, причем коэффициент при х в старшей степени достигает крайней правой ячейки. На следующем такте единица делимого, выходящая из крайней ячейки регистра по цепи обратной связи, подается к сумматорам по модулю два, что равносильно вычитанию многочлена-делителя из многочлена-делимого. Если в результате предыдущей операции коэффициент при старшей степени х у остатка оказался равным нулю, то на следующем такте вычитания делителя не происходит. Коэффициенты делимого только сдвигаются вперед по регистру на один разряд, что находится в полном соответствии с тем, как это делается при делении многочленов столбиком.
Рис. 3.1 Схема деления на произвольный многочлен.
Деление заканчивается с приходом последнего символа многочлена-делимого. При этом разность будет иметь более низкую степень чем делитель. Эта разность и есть остаток.
Рассмотренная схема деления многочленов может использоваться при декодировании. При кодировании она не применяется в силу того, что между информационными и проверочными символами образуется разрыв в m тактов.
Для кодирования используется схема, позволяющая разделить многочлен типа а(х)хm за к тактов. Она отличается от рассмотренной тем, что коэффициенты кодируемого многочлена участвуют в обратной связи не через m сдвигов, а сразу с первого такта.
Для случая g0(x)=x3+x2+1 и а(х)=а3+1 схема кодирующего устройства приведена на рис. 3.2.
В исходном состоянии ключ К1 находится в положении 1, а ключ К2 замкнут. Информационные символы одновременно поступают как в линию связи, так и в регистр сдвига, где за к тактов образуется остаток. Затем ключ К2 размыкается, ключ К1 переходит в положение 2 и остаток выводится в канал связи.
Процесс формирования кодовой комбинации шаг за шагом представлен в табл. 3.1, где черточками отмечены освобождающиеся ячейки, занимаемые новыми информационными символами.
Рис. 3.2 Схема кодирующего устройства.
Таблица 3.1
N такта | Вход | Состояние ячеек регистров | Выход | ||
1 | 2 | 3 | |||
1 | 1 | 1 | 0 | 1 | 1 |
2 | 0 | 1 | 1 | 1 | 01 |
3 | 0 | 1 | 1 | 0 | 001 |
4 | 1 | 1 | 1 | 0 | 1001 |
5 | 0 | - | 1 | 1 | 01001 |
6 | 0 | - | - | 1 | 101001 |
7 | 0 | - | - | - | 1101001 |
3.3. Метод и средства декодирования
Рассмотрим устройства декодирования, в которых для обнаружения и исправления ошибок производится деление произвольного многочлена f(x), соответствующего принятой комбинации, на образующий многочлен кода g0(x). В этом случае при декодировании могут использоваться те же регистры сдвига, что и при кодировании.
Символы подлежащей декодированию кодовой комбинации, возможно содержащей ошибку, последовательно, начиная со старшего разряда, вводятся в п-разрядный буферный регистр сдвига и одновременно в схему деления, где за п тактов определяется остаток, который в случае непрерывной передачи сразу же переписывается в регистры второй аналогичной схемы деления (рис.3.3).