
- •Содержание
- •1 Основные сведения о циклических кодах 6
- •Введение
- •1 Основные сведения о циклических кодах
- •1.1 Определение и основные свойства циклических кодов
- •1.2 Построение кодовых последовательностей с использованием
- •1.3 Назначение и способы построения проверочной матрицы
- •1.4 Способ формирования кодовых последовательностей циклического кода с использованием образующего полинома
- •1.5 Способ построения кодовых последовательностей и определение параметров циклического кода с использованием корней образующего полинома
- •1.7 Мажоритарный алгоритм декодирования циклических кодов
- •2 Расчет параметров циклического кода
- •3 Разработка структурной схемы кодека
- •3.1 Разработка структурной схемы кодера
- •3.2 Разработка структурной схемы декодера
- •4 Разработка функциональной схемы
- •4.1 Разработка функциональной схемы кодера
- •4.2 Разработка функциональной схемы декодера
- •5 Программная реализация кодека
- •5.1 Выбор и обоснование языка программирования
- •5.2 Разработка блок-схемы кодирования циклического кода
- •5.3 Разработка блок-схемы декодирования циклического кода
- •5.4 Описание работы программной реализации кодера
- •5.5 Описание работы программной реализации декодера
- •Заключение
- •Литература
- •Приложение а Form2.H
- •Приложение б Form3.H
Приложение б Form3.H
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
n=0;
k=0;
st1=textBox27->Text;
textBox16->Text="";
textBox17->Text="";
textBox18->Text="";
textBox19->Text="";
textBox20->Text="";
textBox21->Text="";
textBox22->Text="";
textBox23->Text="";
textBox24->Text="";
textBox25->Text="";
textBox26->Text="";
textBox28->Text="0";
char word[15];
array<Char>^ w = textBox27->Text->ToCharArray();
int p[15]={0};
strcpy(word,"000000000000000");
for(int i=0;i<15;i++)
{
word[i]=w[i];
if(w[i]=='1')
p[i]=1;
else
p[i]=0;
}
for(int i=0;i<15;i++)
{
int k=0;
if(p[i]==1)
k++;
if((p[(i+1)%15]+p[(i+3)%15]+p[(i+7)%15]+p[(i+8)%15])%2==1)
k++;
if((p[(i+2)%15]+p[(i+6)%15]+p[(i+9)%15]+p[(i+14)%15])%2==1)
k++;
if((p[(i+4)%15]+p[(i+11)%15]+p[(i+12)%15]+p[(i+13)%15])%2==1)
k++;
if(k>2 && p[i]==0)
{
p[i]=1;
}
if(k<3 && p[i]==1)
{
p[i]=0;
}
}
for(int i=0;i<15;i++)
{
if(p[i]==1)
word[i]='1';
else
word[i]='0';
}
textBox16->Text=System::Convert::ToString(p[0]);
textBox17->Text=System::Convert::ToString(p[1]);
textBox18->Text=System::Convert::ToString(p[2]);
textBox19->Text=System::Convert::ToString(p[3]);
textBox20->Text=System::Convert::ToString(p[4]);
textBox21->Text=System::Convert::ToString(p[5]);
textBox22->Text=System::Convert::ToString(p[6]);
}
private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) {
if(textBox27->Text!=st1)
{
n=0;
k=0;
st1=textBox27->Text;
textBox16->Text="";
textBox17->Text="";
textBox18->Text="";
textBox19->Text="";
textBox20->Text="";
textBox21->Text="";
textBox22->Text="";
textBox23->Text="";
textBox24->Text="";
textBox25->Text="";
textBox26->Text="";
textBox28->Text="0";
}
if(n<8)
{
int p2[20]={0};
if(!n)
{
textBox16->Text="";
textBox17->Text="";
textBox18->Text="";
textBox19->Text="";
textBox20->Text="";
textBox21->Text="";
textBox22->Text="";
textBox23->Text="";
textBox24->Text="";
textBox25->Text="";
textBox26->Text="";
textBox28->Text="0";
n++;
k++;
char word[15];
array<Char>^ w = textBox27->Text->ToCharArray();
strcpy(word,"000000000000000");
for(int i=0;i<15;i++)
{
word[i]=w[i];
if(w[i]=='1')
p2[i]=1;
else
p2[i]=0;
}
textBox15->Text=System::Convert::ToString(p2[0]);
textBox14->Text=System::Convert::ToString(p2[1]);
textBox13->Text=System::Convert::ToString(p2[2]);
textBox12->Text=System::Convert::ToString(p2[3]);
textBox11->Text=System::Convert::ToString(p2[4]);
textBox10->Text=System::Convert::ToString(p2[5]);
textBox9->Text=System::Convert::ToString(p2[6]);
textBox8->Text=System::Convert::ToString(p2[7]);
textBox7->Text=System::Convert::ToString(p2[8]);
textBox6->Text=System::Convert::ToString(p2[9]);
textBox5->Text=System::Convert::ToString(p2[10]);
textBox4->Text=System::Convert::ToString(p2[11]);
textBox3->Text=System::Convert::ToString(p2[12]);
textBox2->Text=System::Convert::ToString(p2[13]);
textBox1->Text=System::Convert::ToString(p2[14]);
textBox28->Text=System::Convert::ToString(n-1);
}
else
if(k==n)
{
n++;
char word[15];
array<Char>^ w = textBox27->Text->ToCharArray();
strcpy(word,"000000000000000");
for(int i=0;i<15;i++)
{
word[i]=w[i];
if(w[i]=='1')
p2[i]=1;
else
p2[i]=0;
}
for(int i=0;i<n;i++)
{
int k=0;
if(p2[i]==1)
k++; if((p2[(i+1)%15]+p2[(i+3)%15]+p2[(i+7)%15]+p2[(i+8)%15])%2==1)
{
k++;
} if((p2[(i+2)%15]+p2[(i+6)%15]+p2[(i+9)%15]+p2[(i+14)%15])%2==1)
{
k++;
}
if((p2[(i+4)%15]+p2[(i+11)%15]+p2[(i+12)%15]+p2[(i+13)%15])%2==1)
{
k++;
}
if(i==n-2)
{
textBox23->Text=System::Convert::ToString(p2[(i+0)%15]%2);
textBox24->Text=System::Convert::ToString((p2[(i+1)%15]+p2[(i+3)%15]+p2[(i+7)%15]+p2[(i+8)%15])%2);
textBox25->Text=System::Convert::ToString((p2[(i+2)%15]+p2[(i+6)%15]+p2[(i+9)%15]+p2[(i+14)%15])%2);
textBox26->Text=System::Convert::ToString((p2[(i+4)%15]+p2[(i+11)%15]+p2[(i+12)%15]+p2[(i+13)%15])%2);
}
if(k>2 && p2[i]==0)
{
p2[i]=1;
}
if(k<3 && p2[i]==1)
{
p2[i]=0;
}
}
if(n==2)
{
textBox16->Text=System::Convert::ToString(p2[0]);
st=System::Convert::ToString(p2[0]);
}
if(n==3)
{
textBox17->Text=System::Convert::ToString(p2[1]);
st=System::Convert::ToString(p2[1]);
}
if(n==4)
{
textBox18->Text=System::Convert::ToString(p2[2]);
st=System::Convert::ToString(p2[2]);
}
if(n==5)
{
textBox19->Text=System::Convert::ToString(p2[3]);
st=System::Convert::ToString(p2[3]);
}
if(n==6)
{
textBox20->Text=System::Convert::ToString(p2[4]);
st=System::Convert::ToString(p2[4]);
}
if(n==7)
{
textBox21->Text=System::Convert::ToString(p2[5]);
st=System::Convert::ToString(p2[5]);
}
if(n==8)
{
textBox22->Text=System::Convert::ToString(p2[6]);
st=System::Convert::ToString(p2[6]);
}
textBox28->Text=System::Convert::ToString(n-1);
}
else
{
k++;
textBox15->Text=textBox14->Text;
textBox14->Text=textBox13->Text;
textBox13->Text=textBox12->Text;
textBox12->Text=textBox11->Text;
textBox11->Text=textBox10->Text;
textBox10->Text=textBox9->Text;
textBox9->Text=textBox8->Text;
textBox8->Text=textBox7->Text;
textBox7->Text=textBox6->Text;
textBox6->Text=textBox5->Text;
textBox5->Text=textBox4->Text;
textBox4->Text=textBox3->Text;
textBox3->Text=textBox2->Text;
textBox2->Text=textBox1->Text;
textBox1->Text=st;
}
}
}