Смекни!
smekni.com

Системы документальной электросвязи (стр. 4 из 4)

где

Bmax– скорость при po = 10-6,

h1 – значение при po = 10-6,

h2 – значение при p0 доп (для различных видов модуляции)

Значения h1 и h2 для расчета сведем в таблицу 5.

Табл. 5.

Тип модуляции h1 h2
ЧМ 22.6 9.6
ФМ 11.3 5.4
АФМ 17744 5598

Определим максимальную скорость:

Для ЧМ:

Для ФМ:

Для АФМ:

Вывод: максимальная скорость передачи будет при передаче с помощью амплитудной фазовой модуляции.


5. Определение эффективной скорости приема сигналов данных и оптимальной длины принимаемых блоков

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

Эффективная скорость передачи Вэф будет зависеть от состояния канала связи, оптимальной длины передаваемых блоков и числа служебных разрядов. Блоки данных передаются кадрами, которые состоят из nсл1 байт служебных разрядов, rбайт проверочных разрядов и k байт информационных разрядов. Обратная связь осуществляется с помощью управляющих кадров, которые состоят из nсл2 байт служебных разрядов.

Эффективная скорость определяется по формуле:

,

где

– число байт в принимаемом блоке;

k – число информационных байт;

r – число проверочных байт; r = 16 бит;

p – вероятность ошибки единичного элемента.

Первая часть формулы указывает на уменьшение скорости за счет внесения служебных блоков, а вторая – уменьшение за счет переспросов.

Изменяя k от 15 до 500, и подставив эти значения в формулу для расчета эффективной скорости, получим график 3.


График 3

Из данного графика 3 видно, что оптимальная длина блока для АФМ равна:

nопт = k + r + nсл = 168 + 16 + 8 = 192 Бит = 24 Байт , при этом Bmax= 58500 Бод


6. Выбор помехоустойчивого кода

При приеме сообщений необходимо обеспечить вероятность ошибки не более 10-6, используют помехоустойчивые коды, исправляющая и обнаруживающая способность которых определяются их кодовым расстоянием d.

Определим вероятность необнаруженной ошибки Pно в принятом блоке по следующей формуле:

,

где

– число сочетаний из n по i;

t00 – число ошибок обнаруживаемых кодом;

Рассчитанное значение вероятности необнаруженных ошибок удовлетворяет неравенству.


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

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

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

7.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) – кода.

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

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

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

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

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

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

#include <iostream>

using namespace std;

int main()

{

int cod[10][7];

int i, j, k, x;

cout << endl << endl << " KYPCOBA9I PA6OTA no CD3C " << endl <<" CTYDEHTA rpynnbl CK-71 " << endl <<" KO3JIOBA DMUTPU9I" << endl << endl << endl;

for(i=0;i<10;i++)

for(j=0;j<7;j++)

{

cod[i][j]=0;

}

cout<<"Enter data (5 symbols, use 'space' between them)" << endl;

for (i=0; i<5; i++)

{

cin >> cod[i][0];

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

}

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

{

cod[0][5]=cod[0][0];

cod[0][1]=cod[0][0];

cod[0][2]=cod[0][0];

cod[0][4]=cod[0][0];

k=cod[i-1][5];

x=cod[i][0]^k;

cod[i][1]=x;

cod[i][2]=x^cod[i-1][1];

cod[i][3]=cod[i-1][2];

cod[i][4]=x^cod[i-1][3];

cod[i][5]=x^cod[i-1][4];

}

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

{

k=cod[i][5];

cod[i][1]=k;

cod[i][2]=k^cod[i-1][1];

cod[i][3]=cod[i-1][2];

cod[i][4]=k^cod[i-1][3];

cod[i][5]=k^cod[i-1][4];

cod[i][6]=cod[i-1][5];

}

cout<<"Encoded combination:";

for(i=0;i<10;i++)

{

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

}

cout << endl << endl << endl;

int dec[16][6], err[11];

for(i=0;i<16;i++)

for(j=0;j<6;j++)

{

dec[i][j]=0;

}

cout<<"Enter the polynom of errors (10 symbols, use 'space' between them)" << endl;

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

{

cin>>err[i];

}

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

{

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

}

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

{

dec[i][1]=dec[i-1][5]^dec[i][0];

dec[i][2]=dec[i-1][5]^dec[i-1][1];

dec[i][3]=dec[i-1][2];

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

dec[i][5]=dec[i-1][5]^dec[i-1][4];

}

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

{

dec[i][1]=dec[i-1][5];

dec[i][2]=dec[i-1][5]^dec[i-1][1];

dec[i][3]=dec[i-1][2];

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

dec[i][5]=dec[i-1][5]^dec[i-1][4];

}

cout << endl << "Register contents :";

for(j=1; j<6; j++)

{

cout<<" "<<dec[10][j];

}

cout << endl << endl << endl;

int check = 0;

for (i=1; i<6; i++)

{

check += dec[10][i];

if (dec[10][i]!=0)

{

cout << "!Error detected!" << endl << endl;

break;

}

}

if (check == 0)

{

cout << "No errors detected" << endl << endl <<"Decoded combination:"<< endl <<endl;

for(i=0;i<5;i++)

{

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

}

cout << endl << endl << endl;

}

return 0;

}


Литература

1. Передача дискретных сообщений, В.П. Шувалов, Н.В. Захарченко, Москва, 1990 г.

2. Методические указания к лабораторному практикуму по курсу «Микропроцессорная техника в системах передачи данных», А.В. Буданов, Р.И. Виноградов, О. . Когновицкий, ЛЭИС, Ленинград, 1988 г.