Реферат по предмету "Коммуникации и связь"


Двоичный циклический код Хэмминга

РоссийскийГосударственный Социальный Университет
ФакультетСоциальных информационных технологий
КафедраИнформационной безопасности
Курсоваяработа
по дисциплине
Системы исети связи
Москва – 2006
Задание1
Для системы связи (СС) спереспросом с ожиданием ответа одностороннего действия (рис. 1) при заданныхисходных данных:
1. Найти двоичныйциклический (n,k)-код Хэмминга, который обеспечивает передачу сообщений в ССс вероятностью выдачи ложного сообщения Рлс(n,k)
¾  прямой дискретный канал в СС являетсядвоичным симметричным каналом (ДСК) с постоянными параметрами;
¾  обратный непрерывный канал – безпомех;
¾  код используется только дляобнаружения ошибок;
¾  найденный значения n и k должны обеспечивать минимум разности Pдоп -Рлс(n,k) для возможных значений n и k.
2. Отложить вкоординатных осях вычисленные значения Рлс(n,k) для всех исследованных пар (n,k). В этих же осях прямой линией изобразить заданное значение Pдоп. Исходные данные длякурсовой работы (вариант №22):Вероятность искажения двоичного символа p
6x10-4
Допустимая вероятность ложного сообщения Pдоп
2x10-7 Допустимое число переспросов s ∞ Разрядность кода n >10
Порождающий многочлен gi(x)
g3(x) Тип кодера КД 1 Ввод информационных символов в кодер последовательно Тип декодера ДК 2

/>
Рисунок 1. Структурнаясхема СС с переспросом с ожиданием ответа одностороннего действия
 Описаниеработы СС с переспросом с ожиданием ответа одностороннегодействия(рис. 1):
Информационная последовательностьотдельными комбинациями не корректирующего кода через первое положение ключанаправляется в кодер и в ЗУ передатчика. На выходе кодера образуется комбинациякорректирующего кода, которая поступает в модулятор прямого канала. В прямомканале возможно искажение сигнала. На приемной стороне решение о принятомсимволе принимается демодулятором с так называемой зоной ненадежности.
Принцип его работы можнопонять из рисунка.
/>
Пусть символ «1»передается по каналу связи импульсом положительной полярности с амплитудой U, а «0» импульсом отрицательнойполярности с той же амплитудой.
В демодуляторе выделенанекоторая зона +V –V, если принимаемый импульс попадает вэту зону (зона ненадежности), то демодулятор считает, что он не может принятьнадежного решения, о том, какой символ передавался. В этом случае, демодуляторвыдает символ ненадежности Z. Свыхода демодулятора комбинации поступают на вход декодера. После поступлениявсей комбинации с выхода декодера в обратный канал направляется одна из двухкоманд:
¾ «переспрос», еслисодержатся ошибки в принятой комбинации, и одновременно кодовое слово ссимволами Z стирается;
¾ «продолжение»,если не обнаружено ошибок, и комбинация не корректирующего кода направляется кполучателю.
Если различитель командполучает команду «продолжения», то из ЗУ передатчика в прямой каналнаправляется следующая порция* информации. Если различитель команд получаеткоманду «переспрос», то он переключает ключ в положение 2 и из ЗУ передатчика впрямой канал повторно направляется комбинация, которая была стерта.
После выдачи в прямойканал из ЗУ передатчика очередной порции информации, следующая порция непередаётся до тех пор, пока не будет получен ответ по этой порции.Порядокрасчета Рлс и пример расчета Рлс для циклического (n,k)–кодаХэмминга, обеспечивающего минимум разности Рдоп – Рлс(n,k):
Произведем расчет для (18,13)-кодас d=3.
Для этого введемобозначения:
· Pбо – вероятность появления на выходеДСК комбинации (n,k)-кода без ошибок при однократнойпередаче;
· Роо –вероятность появления на выходе ДСК комбинации (n,k)-кода собнаруживаемыми ошибками при однократной передаче;
· Рно –вероятность появления на выходе ДСК комбинации (n,k)-кода снеобнаруживаемыми ошибками при однократной передаче;
· Рi£vо – вероятность появления на выходе ДСК комбинации сошибками кратности i£v0;
· Рi>vо – вероятность появления на выходе ДСК комбинации сошибками кратности i>v0, которые расположены так, что обнаруживаются кодом;
· Рлс– вероятность появления на выходе ССс неограниченным числом переспросов ложного сообщения.
Найдем:
хэмминг кодцикличный программа
Pбо = qn, где q=1-p;
Рi£vо =/>, где v0=d-1;
Роо = Рi£vо + Рi>vо;
Рно £ 1- Pбо — Рi£vо;
Рлс = Рно/(1- Роо).
 
Пример:
Pбо = qn=0,999418=0,98925490, где q=1-p=0,9994;
Рi£vо =/>=/>+/>=
18*0,0006*0,98984881+153*0,00000036*0,99044307=0,01074492,где v0=d-1=2;
Роо = Рi£vо + Рi>vо= 0,01074492;
Рно £ 1- Pбо — Рi£vо=1-0,98925490-0,01074492=0,00000018;
Рлс = Рно/(1- Роо)=0,00000018/(1-0,01074492)=0,00000018.
Структурнаясхема алгоритма расчета кода, ее описание
/>

/>

Описание алгоритма:
1) Начало;
2) Объявляем P =0.0006, Pdop=0.0000002, i=0,k, Pbo, Poo, Pno, Pls, lgPls,h=0, M[61], H[], d=3;
3) Вручную меняем d (по умолчанию d=3);
4) Если d=2, то i=11, иначе переходим к шагу 7;
5) Если i
Pno=1-Pbo-Poo,Pls=Pno/(1-Poo), lgPls=log10(Pls),
M[i-11]=(Pdop-Pls), i=i+1, переходим кшагу 5, иначе переходим к шагу 35;
6) Выводим Pbo, Poo,Pno, Pls, lgPls, переходим к шагу 5;
7) Если d=3, то i=11, иначе переходим к шагу 21;
8) Если i
9) Выводим Pbo;
10) Если k, иначе переходим к шагу 12;
11) k=k+1, переходим к шагу 10;
12) Pno=1-Pbo-Poo,Pls=Pno/(1-Poo), lgPls=log10(Pls),
M[i+10]=(Pdop-Pls),i=i+1;
13) Выводим Poo, Pno, Pls, lgPls, переходим к шагу 8;
14) i=17;
15) Если i
16) Выводим Pbo;
17) Если k, иначе переходим к шагу 19;
18) k=k+1, переходим к шагу 17;
19) Pno=1-Pbo-Poo,Pls=Pno/(1-Poo), lgPls=log10(Pls),
M[i+10]=(Pdop-Pls),i=i+1;
20) Выводим Poo, Pno, Pls, lgPls, переходим к шагу 15;
21) Если d=4, то i=11, иначе переходим к шагу 35;
22) Если i
23) Выводим Pbo;
24) Если k, иначе переходим к шагу 26;
25) k=k+1, переходим к шагу 24;
26) Pno=1-Pbo-Poo,Pls=Pno/(1-Poo), lgPls=log10(Pls),
M[i+10]=(Pdop-Pls),i=i+1;
27) Выводим Poo, Pno, Pls, lgPls, переходим к шагу 22;
28) i=17;
29) Если i
30) Выводим Pbo;
31) Если k, иначе переходим к шагу 33;
32) k=k+1, переходим к шагу 31;
33) Pno=1-Pbo-Poo,Pls=Pno/(1-Poo), lgPls=log10(Pls),
M[i+10]=(Pdop-Pls),i=i+1;
34) Выводим Poo, Pno, Pls, lgPls, переходим к шагу 29;
35) h=0,i=0;
36) Если i
37) Если M[i]>0, то h=h+1, i=i+1, иначе i=i+1 и переходим кшагу 36;
38) Выделяем памятьпод массив Н из h элементов.
39) Если i
40) Если M[i]>0, то H[k]=M[i], k=k+1, i=i+1, иначе i=i+1 и переходим к шагу 39;
41) i=0;
42) Ищем минимальныйэлемент в массиве Н;
43) Если i
44) Если M[i]=минимальному элементу, то и переходим к шагу 45, иначе i=i+1 и переходим к шагу 43;
45) Если i>=0 иi
46) Если i>=21 иi
47) Если i>=26 иi
48) Если i>=41 иi
49) Если i>=46 иi
50) Выводимминимальный элемент из массива Н, как минимум разницы Рдоп-Рлс;
51) Конец.Распечаткапрограммы
Программа написана наязыке С++.
#include
#include
#include
#include
#include
#pragmahdrstop
#include«Unit1.h»
//---------------------------------------------------------------------------
#pragmapackage(smart_init)
#pragmaresource "*.dfm"
float P =0.0006;
float Pdop =0.0000002;
usingnamespace std;
float M[61];
vectorH;
char B[128];
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcallTForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
float C(intn,int m)
{float c=1.0;
for(inti=n;i>=n-m+1;i--)c*=i;
for(inti=1;i
return (int)c;
}
void__fastcall TForm1::ComboBox1Select(TObject *Sender)
{int i=0, k;
doublePbo,Poo,Pno,Pls,lgPls;
AnsiString s;
ListBox1->Clear();
ListBox2->Clear();
ListBox3->Clear();
ListBox4->Clear();
ListBox5->Clear();
ListBox6->Clear();
ListBox7->Clear();
//d=2
if(ComboBox1->ItemIndex==0)
for(i=11;i
{s="("+IntToStr(i)+","+IntToStr(i-1)+")";
ListBox1->Items->Add(s);
Pbo=pow(1-P,i);
sprintf(B,"%.8f",Pbo);
ListBox2->Items->Add(B);
Poo=0;
Poo=C(i,1)*pow(P,1)*pow(1-P,i-1);
sprintf(B,"%.8f",Poo);
ListBox3->Items->Add(B);
Pno=1-Pbo-Poo;
sprintf(B,"%.8f",Pno);
ListBox4->Items->Add(B);
Pls=Pno/(1-Poo);
sprintf(B,"%.8f",Pls);
ListBox5->Items->Add(B);
lgPls=log10(Pls);
sprintf(B,"%.2f",lgPls);
ListBox6->Items->Add(B);
Series1->AddXY(i,lgPls,s,clRed);
M[i-11]=(Pdop-Pls);
}
//d=3
if(ComboBox1->ItemIndex==1)
{for(i=11;i
{s="("+IntToStr(i)+","+IntToStr(i-4)+")";
ListBox1->Items->Add(s);
Pbo=pow(1-P,i);
sprintf(B,"%.8f",Pbo);
ListBox2->Items->Add(B);
Poo=0;
for(k=1;k
Poo+=C(i,k)*pow(P,k)*pow(1-P,i-k);
sprintf(B,"%.8f",Poo);
ListBox3->Items->Add(B);
Pno=1-Pbo-Poo;
sprintf(B,"%.8f",Pno);
ListBox4->Items->Add(B);
Pls=Pno/(1-Poo);
sprintf(B,"%.8f",Pls);
ListBox5->Items->Add(B);
lgPls=log10(Pls);
sprintf(B,"%.2f",lgPls);
ListBox6->Items->Add(B);
Series2->AddXY(i,lgPls,s,clLime);
M[i+10]=(Pdop-Pls);
}
for(i=17;i
{s="("+IntToStr(i)+","+IntToStr(i-5)+")";
ListBox1->Items->Add(s);
Pbo=pow(1-P,i);
sprintf(B,"%.8f",Pbo);
ListBox2->Items->Add(B);
Poo=0;
for(k=1;k
Poo+=C(i,k)*pow(P,k)*pow(1-P,i-k);
sprintf(B,"%.8f",Poo);
ListBox3->Items->Add(B);
Pno=1-Pbo-Poo;
sprintf(B,"%.8f",Pno);
ListBox4->Items->Add(B);
Pls=Pno/(1-Poo);
sprintf(B,"%.8f",Pls);
ListBox5->Items->Add(B);
lgPls=log10(Pls);
sprintf(B,"%.2f",lgPls);
ListBox6->Items->Add(B);
Series2->AddXY(i,lgPls,s,clLime);
M[i+9]=(Pdop-Pls);
}
}
//d=4
if(ComboBox1->ItemIndex==2)
{for(i=11;i
{s="("+IntToStr(i)+","+IntToStr(i-5)+")";
ListBox1->Items->Add(s);
Pbo=pow(1-P,i);
sprintf(B,"%.8f",Pbo);
ListBox2->Items->Add(B);
Poo=0;
for(k=1;k
Poo+=C(i,k)*pow(P,k)*pow(1-P,i-k);
sprintf(B,"%.8f",Poo);
ListBox3->Items->Add(B);
Pno=1-Pbo-Poo;
sprintf(B,"%.8f",Pno);
ListBox4->Items->Add(B);
Pls=Pno/(1-Poo);
sprintf(B,"%.8f",Pls);
ListBox5->Items->Add(B);
lgPls=log10(Pls);
sprintf(B,"%.2f",lgPls);
ListBox6->Items->Add(B);
Series3->AddXY(i,lgPls,s,clYellow);
M[i+30]=(Pdop-Pls);
}
for(i=17;i
{s="("+IntToStr(i)+","+IntToStr(i-6)+")";
ListBox1->Items->Add(s);
Pbo=pow(1-P,i);
sprintf(B,"%.8f",Pbo);
ListBox2->Items->Add(B);
Poo=0;
for(k=1;k
Poo+=C(i,k)*pow(P,k)*pow(1-P,i-k);
sprintf(B,"%.8f",Poo);
ListBox3->Items->Add(B);
Pno=1-Pbo-Poo;
sprintf(B,"%.8f",Pno);
ListBox4->Items->Add(B);
Pls=Pno/(1-Poo);
sprintf(B,"%.8f",Pls);
ListBox5->Items->Add(B);
lgPls=log10(Pls);
sprintf(B,"%.2f",lgPls);
ListBox6->Items->Add(B);
Series3->AddXY(i,lgPls,s,clYellow);
M[i+29]=(Pdop-Pls);
}
}
int h=0;
for(i=0;i
if (M[i]>0)h++;
H.resize(h);
k=0;
for (i=0;i
if (M[i]>0){H[k]=M[i]; k++;}
for(i=0;i
if(M[i]==*min_element(H.begin(),H.end()))
{if(i>=0&&i
{s="("+IntToStr(i+11)+","+IntToStr(i+10)+")-код сd=2";
ListBox7->Items->Add(s);}
if(i>=21&&i
{s="("+IntToStr(i-10)+","+IntToStr(i-14)+")-код сd=3";
ListBox7->Items->Add(s);}
if(i>=26&&i
{s="("+IntToStr(i-9)+","+IntToStr(i-14)+")-код сd=3";
ListBox7->Items->Add(s);}
if(i>=41&&i
{s="("+IntToStr(i-30)+","+IntToStr(i-35)+")-код сd=4";
ListBox7->Items->Add(s);}
if(i>=46&&i
{s="("+IntToStr(i-29)+","+IntToStr(i-35)+")-код сd=4";
ListBox7->Items->Add(s);}
}
ListBox7->Items->Add("");
ListBox7->Items->Add(«Минимальнаяразность»);
sprintf(B,"%.12f",*min_element(H.begin(),H.end()));
ListBox7->Items->Add(«Рдоп-Рлс»);
ListBox7->Items->Add(B);
}
//---------------------------------------------------------------------------
void__fastcall TForm1::FormCreate(TObject *Sender)
{ComboBox1->ItemIndex=1;
Series4->AddXY(0,log10(Pdop),«lgPдоп»,clBlack);
Series4->AddXY(31.3,log10(Pdop),«lgPдоп»,clBlack);
}
//---------------------------------------------------------------------------Графикнайденных значений lg Pлс
/>Задание2
Построить функциональныесхемы кодера и декодера для найденного (n,k)-кода изаданного для него порождающего многочлена g3(X). Приизображении схем кодера и декодера использовать условные изображения элементов:
/>
элемент умножения
/>
элемент памяти
/>
элемент сложения по модулю 2

Исходные данные:
g3(x)=x5+x3+x2+x+1;
r=5. Функциональнаясхема кодера для (18,13)-кода
/>
Описание работы схемы:
Кодер 1 споследовательным вводом информационных символов (a12, a11, …, a1, a0) состоит из регистра проверочныхсимволов (РПС), регистра задержки (РЗ) с 5 элементами памяти и трех ключей. Висходном состоянии в элементах памяти регистров – нули, ключи Кл1 и Кл2разомкнуты, Кл3 замкнут.
При подаче первых 5импульсов сдвига (ИС) 5 информационных символов, начиная со старшего, вводятсяв оба регистра. С окончанием 5-го ИС ключи Кл1 и Кл2 замыкаются, а Кл3размыкается.
В течение последующих k ИС информационные символы выводятсяиз РЗ, а в РПС образуются 5 проверочных символов. После этого ключи Кл1 и Кл2размыкаются, а Кл3 замыкается.
За последующие 5импульсов сдвига проверочные символы выдаются на выход кодера, после чего схемавозвращается в исходное состояние. Таким образом, первый символ комбинации УЦКпоявляется на выходе кодера с задержкой на 5 ИС.
Функциональнаясхема декодера для (18,13)-кода
/>
Списокиспользованной литературы
1. Хохлов Г.И., Пособие к выполнению лабораторной работы №3по дисциплине «Системы и сети связи». – М.: 2005. – 18 с.
2. Хохлов Г.И., Пособие по выполнению курсовой работы подисциплине «Системы и сети связи». – М.: 2005. – 15 с.


Не сдавайте скачаную работу преподавателю!
Данный реферат Вы можете использовать для подготовки курсовых проектов.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.