Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
zapiska_dimas.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
679.03 Кб
Скачать

Заключение

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

Основным препятствием к широкому использованию линейных кодов, контролирующих многократные случайные и зависимые ошибки, являются большие временные и аппаратурные затраты на декодирование кодовых слов. Это связано с параллельным декодированием всего кодового слова, когда за один такт необходимо исправить ошибки во всем слове. Очевидно, что параллельное декодирование кодовых слов не требуется при последовательном приеме сообщений, характерном для большого числа каналов передачи информации. Применение последовательной обработки информации приводит к процедурам кодирования и декодирования, эффективным как с алгоритмической, так и с вычислительной точки зрения.

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

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

Был предложен ряд кодов и способов декодирования, при которых сложность декодера растет не экспоненциально, а лишь как некоторая степень n. В классе линейных систематических двоичных кодов это - циклические коды. Циклические коды просты в реализации и при невысокой избыточности обладают хорошими свойствами обнаружения ошибок. Циклические коды получили очень широкое распространение как в технике связи, так и в компьютерных средствах хранения информации.

Литература

1. Курош А.Г. Курс высшей алгебры. – М.: Высш. шк.,1979

2. Мак-Вильямс Ф.Дж., Слоэн Н.Дж.А. Теория кодов, исправляющих ошибки: Пер с анг. – М.: Связь, 1979.

3. Блейхут Р. Теория и практика кодов, контролирующих ошибки: Пер с анг. /Под ред. К.Ш. Зигангирова. – М.: Мир,1987.

4. Касами Т., Токуда И., Ивадари Е. и др. Теория кодирования: Пер. с яп./Под ред. Б.С. Цыбакова и С.Н. Гелфанда. – М.: Мир, 1978.

5. Питерсон У., Уэлдон Э. Коды, исправляющие ошибки: Пер. с англ./Под ред. Р.Л. Добрушина и С.И. Самойленко. – М.: Мир, 1976.

6. Муттер В.М. Основы помехоустойчивой телепередачи информации. – Л.:Энергоатомиздат, 1980.

7. В.К. Конопелько, В.А. Липницкий, В.Д. Дворников и др. Теория прикладного кодирования. В 2 т. Т 2 – Мн.: БГУИР, 2004, - 398 с.

8. Герберт Шилдт. Искусство программирования на С++. – СПб.: БХВ-Петербург, 2005, - 49 6с.

9. Королев А.И. Коды и устройства помехоустойчивого кодирования информации. – Мн.:, 2002. – 286 с.

Приложение а Form2.H

#pragma once

#include "Form3.h"

namespace Kursovoi {

using namespace System;

using namespace System::ComponentModel;

using namespace System::Collections;

using namespace System::Windows::Forms;

using namespace System::Data;

using namespace System::Drawing;

public ref class Form2 : public System::Windows::Forms::Form

{

public:

Form2(void)

{

InitializeComponent();

}

protected:

~Form2()

{

if (components)

{

delete components;

}

}

protected:

private: System::Windows::Forms::Button^ button1;

private: System::Windows::Forms::TextBox^ textBox23;

private: System::Windows::Forms::TextBox^ textBox24;

private:

System::ComponentModel::Container ^components;

#pragma region Windows Form Designer generated code

void InitializeComponent(void)

{

System::ComponentModel::ComponentResourceManager^ resources = (gcnew System::ComponentModel::ComponentResourceManager(Form2::typeid));

this->button1 = (gcnew System::Windows::Forms::Button());

this->textBox23 = (gcnew System::Windows::Forms::TextBox());

this->textBox24 = (gcnew System::Windows::Forms::TextBox());

this->SuspendLayout();

this->button1->Location = System::Drawing::Point(38, 21);

this->button1->Name = L"button1";

this->button1->Size = System::Drawing::Size(89, 38);

this-button1->TabIndex = 60;

this->button1->Text = L"Кодировать";

this->button1->UseVisualStyleBackColor = true;

this->button1->Click += gcnew System::EventHandler(this, &Form2::button1_Click);

this->textBox23->BackColor = System::Drawing::Color::Silver;

this->textBox23->BorderStyle = System::Windows::Forms::BorderStyle::FixedSingle;

this->textBox23->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 9.75F, System::Drawing::FontStyle::Bold, System::Drawing::GraphicsUnit::Point,

static_cast<System::Byte>(204)));

this->textBox23->ForeColor = System::Drawing::Color::Black;

this->textBox23->Location = System::Drawing::Point(330, 232);

this->textBox23->Name = L"textBox23";

this->textBox23->Size = System::Drawing::Size(126, 22);

this->textBox23->TabIndex = 61;

this->textBox24->BackColor = System::Drawing::Color::Silver;

this->textBox24->BorderStyle = System::Windows::Forms::BorderStyle::FixedSingle;

this->textBox24->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 9.75F, System::Drawing::FontStyle::Bold, System::Drawing::GraphicsUnit::Point,

static_cast<System::Byte>(204)));

this->textBox24->ForeColor = System::Drawing::Color::Black;

this->textBox24->Location = System::Drawing::Point(330, 269);

this->textBox24->Name = L"textBox24";

this->textBox24->ReadOnly = true;

this->textBox24->Size = System::Drawing::Size(126, 22);

this->textBox24->TabIndex = 62;

this->textBox24->TextChanged += gcnew System::EventHandler(this, &Form2::textBox24_TextChanged);

this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);

this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;

this->BackColor = System::Drawing::Color::White;

this->BackgroundImage = (cli::safe_cast<System::Drawing::Image^ >(resources->GetObject(L"$this.BackgroundImage")));

this->ClientSize = System::Drawing::Size(523, 319);

this->Controls->Add(this->textBox24);

this->Controls->Add(this->textBox23);

this->Controls->Add(this->button1);

this->ForeColor = System::Drawing::Color::Black;

this->Icon = (cli::safe_cast<System::Drawing::Icon^ >(resources->GetObject(L"$this.Icon")));

this->Name = L"Form2";

this->Text = L"Кодер циклического кода";

this->Load += gcnew System::EventHandler(this, &Form2::Form2_Load);

this->ResumeLayout(false);

this->PerformLayout();

}

#pragma endregion

private: System::Void Form2_Load(System::Object^ sender, System::EventArgs^ e) {

Form3^ form1 = gcnew Form3;

form1->Show();

}

private: System::Void label2_Click(System::Object^ sender, System::EventArgs^ e) {

}

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {

textBox24->Text="";

array<Char>^ w = textBox23->Text->ToCharArray();

int p[15]={0};

for(int i=0;i<7;i++)

{

if(w[i]=='1')

p[i]=1;

else

p[i]=0;

}

p[7]=(p[2]+p[3]+p[4])%2;

p[8]=(p[0]+p[1]+p[3]+p[7])%2;

p[9]=(p[1]+p[2]+p[4]+p[8])%2;

p[10]=(p[2]+p[3]+p[5]+p[9])%2;

p[11]=(p[3]+p[4]+p[6]+p[10])%2;

p[12]=(p[0]+p[5]+p[6]+p[8])%2;

p[13]=(p[5]+p[6]+p[8]+p[12])%2;

p[14]=(p[6]+p[7]+p[9]+p[13])%2;

for(int i=0;i<15;i++)

textBox24->Text+=System::Convert::ToString(p[i]);

}

private:System::Void textBox24_TextChanged(System::Object^sender,System::EventArgs^e) {

}

};

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]