Курсовая работа: Системы документальной электросвязи
По данным расчета определяется и строится график 1 для
определения оптимальной длины блока. На графике 1 указаны скорости для кодов: (15,5),
(31,16), (63,47), (127,108), (255,233), (511,486).
График 1
По результатам,
полученным с помощью графика, можно сделать вывод, что оптимальная длина блока
равна nоп =511 , а максимальная скорость.
4. Определение максимальной скорости передачи данных по каналу связи с заданными параметрами, при определенном способе модуляции и оптимальном приемнике
Исходные данные:
· задан циклический код (10, 5);
· Вероятность ошибки po = 10-6 (для канала с независимыми ошибками);
· Вероятность необнаруженных ошибок p0 доп = 10-6
· Вероятность необнаруженных ошибок p0 доп = 8,5*10-4 (для ЧМ)
· Вероятность необнаруженных ошибок p0 доп = 7,5*10-4 (для ФМ)
· Вероятность необнаруженных ошибок p0 доп = 10-4 (для АФМ)
· Скорость передачи Bзад = 24000 Бод
Здесь, в качестве основного параметра характеризующего канал связи, используется вероятность ошибки p в зависимости от отношения средних мощностей сигнала и помех h, где последняя представляет собой аддитивный белый шум.
Зависимость p и h представляется в виде графика: по оси ординат в логарифмическом масштабе откладываются значения вероятности ошибки при приеме единичного элемента, а по оси абсцисс значения отношения сигнал/помеха h2 в децибелах (дБ).
дБ
При построении такого графика для определенного вида модуляции используются формулы:
Здесь – функция Крампа, значения которой приведены в прил.2.
[3].
Определим значения p при различных значениях h. Полученные расчеты сведены в таблицу 4.
Табл. 4.
h, дБ | ЧМ | ФМ | АФМ |
1 | 0,159 | 0,081 | 0,088 |
2 | 0,023 | 0,0025 | 0,073 |
3 |
1,35*10-3 |
1,1*10-5 |
0,064 |
4 |
3,15*10-5 |
5*10-8 |
0,055 |
Из полученных расчетов построим график 2.
2
График 2
Максимальная скорость Bmax определим с помощью графика 2 из следующего выражения:
где
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 г.