Э = (1.543*10-3 )/ (1.11*10-6) @ 1,39*103
Сравнив эти две эффективности, можно сделать вывод, что в канале с группированием код работает намного хуже, чем в канале с независимыми ошибками.
6. Выбор оптимальной длины циклического кода |
Найдем такой оптимальный код, который при заданной вероятности ошибочного приема комбинации циклического кода Рзад = 10-6 обеспечивал бы максимальную скорость передачи информации Rmax.
R получим по формуле : R=Rk *Ra ,
где Rk - скорость кода;
Ra - скорость алгоритма;
Rk=k/n;
Ra=1-(nh)1-a*Pно;
R=Rk *Ra
№ | n.k | D | Pнo | Rk | Ra | R | |
1 | 15,11 | 3 | 9,64115E-05 | 0,7333 | 0,9897 | 0,725803 | |
1 | 2 | 15,7 | 5 | 4,2142E-06 | 0,4667 | 0,9897 | 0,461875 |
3 | 15,5 | 7 | 8,32464E-07 | 0,3333 | 0,9897 | 0,329910 | |
4 | 31,26 | 3 | 8,01287E-05 | 0,8387 | 0,9829 | 0,824394 | |
2 | 5 | 31,21 | 5 | 1,75123E-06 | 0,6774 | 0,9829 | 0,665857 |
6 | 31,16 | 7 | 4,32419E-08 | 0,5161 | 0,9829 | 0,507319 | |
7 | 63,57 | 3 | 6,58178E-05 | 0,9048 | 0,9720 | 0,879392 | |
3 | 8 | 63,51 | 5 | 7,19233E-07 | 0,8095 | 0,9720 | 0,786824 |
9 | 63,45 | 7 | 8,87973E-09 | 0,7143 | 0,9720 | 0,694257 | |
10 | 127,120 | 3 | 5,37573E-05 | 0,9449 | 0,9542 | 0,901602 | |
4 | 11 | 127,113 | 5 | 5,8744E-07 | 0,8898 | 0,9542 | 0,849008 |
12 | 127,106 | 7 | 1,81315E-09 | 0,8346 | 0,9542 | 0,796415 | |
13 | 255,247 | 3 | 4,37848E-05 | 0,9686 | 0,9254 | 0,896353 | |
5 | 14 | 255,239 | 5 | 1,19616E-07 | 0,9373 | 0,9254 | 0,867321 |
15 | 255,231 | 7 | 3,69198E-10 | 0,9059 | 0,9254 | 0,838290 | |
16 | 511,502 | 3 | 3,56131E-05 | 0,9824 | 0,8786 | 0,863146 | |
6 | 17 | 511,493 | 5 | 4,86458E-08 | 0,9648 | 0,8786 | 0,847672 |
18 | 511,483 | 7 | 7,50734E-11 | 0,9472 | 0,8786 | 0,832197 |
7. РАЗРАБОТКА ПРОГРАММЫ. |
7.1 Обзор методов программной реализации |
Программная реализация циклических кодов на ЭВМ может быть осуществлена четырьмя способами: матричным, алгебраическим, табличным и проверочными соотношениями. Рассмотрим различные способы представления циклического кодирования.
7.1.1. Матричный способ представления циклического кодирования.
Процедура кодирования сводится к сложению строк образующей матрицы G, причем единицы в информационной кодовой комбинации определяют, какие строки матрицы проверочных элементов необходимо складывать для получения проверочных элементов. Программа декодирования циклического кода с обнаружением ошибок может быть составлена аналогично программе кодирования. При этом по полученным из канала информационным элементам формируются проверочные элементы и сравниваются с полученными из канала. По результату сравнения делается вывод о том, разрешенной или запрещенной является принятая комбинация.
7.1.2. Представление циклического кода проверочными соотношениями.
Этот способ основывается на записи в памяти проверочных соотношений(синдромов), полученных по образующей G (для кодирования) или проверочной H (для декодирования) матрицы. Эти соотношения позволяют определить значения проверочных разрядов по информационным элементам. Проверочные соотношения получаются в общем виде путем умножения информационной комбинации на матрицу остатков R. Для нахождения проверочных элементов кода необходимо вычислить (n-k) сумм по mod2. Программная реализация этой процедуры заключается в следующем. В соответствии с (n-k) проверочными соотношениями формируются маски в виде двоичных комбинаций, на которые умножается (логическое "И") информационная комбинация. Результат логического умножения проверяется специальной командой на четность. Если результат содержит четное число единиц, то соответствующий проверочный элемент равен 0; если же результат нечетный, то 1. Процедура декодирования с обнаружением ошибок программно отличается лишь тем, что проверочные соотношения получаются в результате умножения принятой n- элементной комбинации в общем виде на транспонированную проверочную матрицу HT. В результате умножения будет получен синдром, который свидетельствует об обнаружении ошибок в случае его неравенства нулю.
7.1.3. Способ алгебраического кодирования.
В основе программной реализации такого способа циклического систематического (n,k) кода лежит известное правило получения проверочных элементов как остатка от деления одночлена xn-kf(x) на образующий полином Р(х) степени (n-k), где f(x) - полином исходной информационной комбинации длиной К разрядов. Алгебраическое декодирование программно реализуется аналогично с той лишь разницей, что на образующий полином делится вся n- элементная комбинация. По виду полученного в результате деления остатка обнаруживают и исправляют ошибки.
7.1.4. Табличный способ программной реализации процедуры кодирования.
При таком способе необходимо хранить для несистематических кодов всю кодовую таблицу, т.е. набор из 2k кодовых векторов, а для систематического циклического кода - таблицу из 2k- векторов проверочных элементов. При кодировании по принятой кодовой комбинации выбирается требуемый кодовый вектор или вектор проверочных элементов. При декодировании по принятой кодовой комбинации выбирается из таблицы путем сравнения кодовый вектор с наименьшим расстоянием относительно принятого. В случае только обнаружения ошибок процедура декодирования практически мало чем отличается от процедуры кодирования. По принятым информационным элементам выбирается соответствующий вектор проверочных элементов, который сравнивается с принятыми проверочными элементами. Если проверочные элементы не совпадают, то это свидетельствует об обнаружении ошибок.
7.2. Описание программы |
Данная программа написана на языке Borland Pascal в интегрированной среде Borland Delphi 5.0 и предназначена для кодирования и декодирования циклического кода, путем представления циклического кода проверочными соотношениями.
Также предоставляется возможность пользователю вводить значение полинома ошибок. При этом после “посылки комбинации”, выводится значение принятой комбинации, а также результат декодирования (принята комбинация с