Меню

Программная реализация кодирования и декодирования

Задан имитационный метод программной реализации.

Метод заключается в моделировании кодера и декодера циклического кода (10,5).

.1 Кодирование

В основе кодирующего устройства лежит схема деления на порождающий многочлен g(x) = x5 + x4 + x3 + x + 1 с предварительным умножением на x5 . Число ячеек памяти в регистре равно числу избыточных элементов в кодовой комбинации (5) . Обратные связи подключены в соответствии с ненулевыми коэффициентами g(x) , следовательно, общее число обратных связей равно числу компонентов g(x) (или весу в двоичном представлении). Число сумматоров по модулю 2 равно числу знаков «+» в записи g(x) в виде многочлена. Вход схемы подключен после ячейки r4 для осуществления предварительного умножения кодируемого сообщения на x5 . Схема работает следующим образом. Информационные символы поступают на вход кодирующего устройства, начиная со старшей степени, и одновременно на выход схемы - в канал связи. В это время на схему И1 в цепи обратной связи поступают 5 тактовых импульсов и со входа информационные импульсы поступают через цепь обратной связи в разряды регистра r0, r1, r2, r3, r4. Как только все 5 информационных символов поступят в устройство, совокупность n-k - символов в разрядах регистра совпадет с остатком от деления на g(x), т.е. разряды регистра содержат проверочные символы r(x) кодовой комбинации. По прошествии 5 тактов подача тактовых импульсов в схему И1 прекращается, т.е. линия обратной связи разрывается и 5 проверочных символов, сформированных в регистре, через схему И2, на которую начинают поступать тактовые импульсы от 6-го до 10-го такта, выводятся в канал связи сразу же за информационными элементами.

Таким образом, за 10 тактов с выхода схемы в канал поступает вся кодовая комбинация циклического (10,5) - кода.

Декодирование

Кодовая комбинация вводится в схему деления на g(x), и одновременно информационные элементы этой принятой комбинации записываются в накопитель информационных разрядов. После ввода последнего элемента кодовой комбинации в схему деления разряды регистра сдвига этой схемы будут содержать остаток от деления принятой комбинации на g(x).

В случае, когда остаток чисто нулевой, комбинация считается принятой верно, если же остаток не равен нулю, то фиксируется ошибка. С целью принятия решения о наличии или отсутствии ошибок в комбинации содержимое разрядов регистра после завершения деления вводится в схему ИЛИ.

Если ошибки отсутствуют (или не обнаружены), то на выходе схемы получаем сигнал “0”, по которому информация из накопителя информационных разрядов выдается потребителю информации. В том случае, когда на выходе схемы ИЛИ появляется сигнал “1”, а это произойдет, когда хотя бы в одном из разрядов регистра после деления появится “1”, т.е. полученный остаток не равен нулю, информационные разряды из накопителя потребителю не выдаются и фиксируется ошибка.

Текст программы

Программа написана на языке C++.

#include <iostream>namespace std;

main()

{cod[10][7];i, j, k, x;<< endl << endl << " KYPCOBA9I PA6OTA no CD3C " << endl <<" CTYDEHTA rpynnbl CK-71 " << endl <<" KO3JIOBA DMUTPU9I" << endl << endl << endl;(i=0;i<10;i++)(j=0;j<7;j++)

{[i][j]=0;

}<<"Enter data (5 symbols, use 'space' between them)" << endl;(i=0; i<5; i++)

{>> cod[i][0];[i][6]=cod[i][0];

}(i=1;i<5;i++)

{[0][5]=cod[0][0];[0][1]=cod[0][0];[0][2]=cod[0][0];[0][4]=cod[0][0];=cod[i-1][5];=cod[i][0]^k;[i][1]=x;[i][2]=x^cod[i-1][1];[i][3]=cod[i-1][2];[i][4]=x^cod[i-1][3];[i][5]=x^cod[i-1][4];

}(i=5;i<10;i++)

{=cod[i][5];[i][1]=k;[i][2]=k^cod[i-1][1];[i][3]=cod[i-1][2];[i][4]=k^cod[i-1][3];[i][5]=k^cod[i-1][4];[i][6]=cod[i-1][5];

}<<"Encoded combination:";(i=0;i<10;i++)

{<<" "<<cod[i][6];

}<< endl << endl << endl;dec[16][6], err[11];(i=0;i<16;i++)(j=0;j<6;j++)

{[i][j]=0;

}<<"Enter the polynom of errors (10 symbols, use 'space' between them)" << endl;(i=1; i<11; i++)

{>>err[i];

}(i=1; i<11; i++)

{[i][0] = cod[i-1][6] ^ err[i];

}(i=1;i<11;i++)

{[i][1]=dec[i-1][5]^dec[i][0];[i][2]=dec[i-1][5]^dec[i-1][1];[i][3]=dec[i-1][2];[i][4]=dec[i-1][5]^dec[i-1][3];[i][5]=dec[i-1][5]^dec[i-1][4];

}(i=11;i<16;i++)

{[i][1]=dec[i-1][5];[i][2]=dec[i-1][5]^dec[i-1][1];[i][3]=dec[i-1][2];[i][4]=dec[i-1][5]^dec[i-1][3];[i][5]=dec[i-1][5]^dec[i-1][4];

Перейти на страницу: 1 2

Другие статьи:

Исследование свойств звена при охвате обратной связью
Исследовать изменение динамических характеристик, типовых звеньев системы автоматического управления (САУ) при охвате обратной связью. Обратная связь – связь, при которой на вход регулятора подается действительное знач ...

Сложный инвертор
Рассчитать элементы базовой схемы (рис. 1) логического элемента ТТЛ (транзисторно-транзисторная логика) 3И-НЕ, обеспечивающие ее работу. Коэффициент разветвления принять равным 15. Значение принять равным 10 для всех тран ...

Радиотелеметрические системы с временным разделением каналов
Телекоммуникации являются одной из наиболее быстро развивающихся областей современной науки и техники. Жизнь современного общества уже невозможно представить без тех достижений, которые были сделаны в этой отрасли за немногим бол ...

(C) 2021 | www.techniformula.ru