Кодирование с использованием линейного группового кода, страница 3

     for i:=1 to n do write(inp_code_word[i]);

     TextColor(White);

     writeln;

     { Вводим ошибку в передаваемую кодовую комбинацию}

     TextColor(9); writeln('РАБОТАЕТ КАНАЛ'); TextColor(White);

     for i:=1 to n do out_code_word[i]:=inp_code_word[i];

     write('  Вводим  номер искаженного бита',' ':4,'=> ');

     n_err:=random (n+1);

     out_code_word[n_err]:= out_code_word[n_err] xor 1;

     writeln('out_code_word[',n_err,']=',out_code_word[n_err]);

     write('  Принятая кодовая комбинация',' ':7,'=> ','out_code_word[i]=');

     TextColor(LightRed);

     for i:=1 to n do

       begin

         if i=n_err then

           begin

             TextColor(White); write(out_code_word[i]); TextColor(LightRed);

           end

                    else  write(out_code_word[i]);

       end;

    writeln;

    TextColor(9); writeln('РАБОТАЕТ ДЕКОДЕР'); TextColor(White);

    {Вызов процедуры транспонирования проверочной матрицы}

    Trans(HmnT);

    De_Coder(out_code_word,out_code);

    ErrorBit(out_code, n_err);

    {Определение ошибочного бита}

    out_code_word[n_err]:= out_code_word[n_err] xor 1;

    write('  Правильная кодовая комбинация',' ':5,'=> ','out_code_word[i]=');

    TextColor(LightRed);

    for i:=1 to n do

      begin

        if i=n_err then

          begin

            TextColor(White); write(out_code_word[i]); TextColor(LightRed);

          end

          else  write(out_code_word[i]);

      end;

     writeln;

     TextColor(White);

    for i:=1 to n do out_inf_word[i]:=out_code_word[i];

    write('  Правильное сообщение',' ':14,'=> ','out_inf_word[i]=');

    TextColor(Green);

    for i:=1 to k do write (out_inf_word[i]);

    TextColor(White);

    writeln;

    {Определяем принятую цифру}

    {Преобразование двоичного кода в десятичное число}

    Bin_Dec(out_inf_word,dec_out);

    writeln('  Принятая цифра',' ':20,'=> ',dec_out);

    writeln; writeln;

    ch:=readkey;

    Until ch=#27 {Выход при нажатии кл. Esc}

  End.

Результат работы программы

  


Лабораторная работа №2

Код Хэмминга

    Цель работы: Приобретение практических навыков кодирования с использованием  кода Хэмминга.

    Задание:

    1. Построить код Хэмминга способный передавать сообщения в виде последовательности 16-ричных цифр первичного алфавита с исправлением одиночной ошибки. Показать процесс кодирования, декодирования и исправления однократной ошибки для произвольно выбранного  информационного слова (например, 1010).

   2. Составить программу,  реализующую процесс кодирования, декодирования и исправления однократной ошибки с использованием кода Хэмминга.

Порядок выполнения работы

1. Построение кода Хэмминга

      Существуют различные методы реализации кода Хэмминга и кодов, которые являются модификацией кода Хэмминга. Рассмотрим  алгоритм построения кода для исправления одиночной ошибки.

      Пример.  Построить код  Хэмминга способный передавать сообщения в виде последовательности 16-ричных цифр первичного алфавита с исправлением одиночной ошибки. Показать процесс кодирования, декодирования и исправления однократной ошибки для произвольно выбранного  информационного слова (например,1010).

   Решение:

  1. Выполним первичное кодирование, т. е. определим информационное  слово для каждого символа первичного алфавита. Число информационных разрядов k для заданного объема кода можно определить из соотношения N = 16= 2k = 24        

           ‘0’ => 0000         ‘4’ => 0100         ‘8’ => 1000        ‘C’ => 1100