Читайте также: |
|
Решение
m(X) = 1 + Х2 + Х3, п = 1, к = 4, п-к=3\
Хп~кт(Х)=Х3(1 + Х2 + АГ3) = АГ3 + Х5 + Х6 Разделив Х"~кт(Х) на g(X), можно записать следующее:
Х3 + Х5 + Х6 = (1+Х + Х2 + Х3) (1+Х + Х3) + 1
частноеq(X) генератор g(X) остаток р(Х)
Используя уравнение (6.64), получаем следующее:
U(X) = р(Х) + X3m(X) = 1 + X3 + Xs + X6 и= 10 0 10 11
биты четности биты сообщения
6.7.4. Логическая схема для реализации полиномиального деления
Выше показывалось, что при циклическом сдвиге полинома кодового слова и кодировании полинома сообщения применяется операция деления полиномов друг на друга. Такие операции легко реализуются в схеме деления (регистр сдвига с обратной связью). Итак, пусть даны два полинома V(X) и g(X), где
V (X) == Vq + V(X + v2X2 +... + УщХ"1
и
gW - ga + 8\Х + g2X2 +... +gpXp,
причем m>p. Схема деления, приведенная на рис. 6.16, выполняет полиномиальное деление V(X) на g(X), определяя, таким образом, частное и остаток:
^ = qW + PW.
g(X) 4V g(X)
В исходном состоянии разряды регистра содержат нули. Коэффициенты V(X) поступают и продвигаются по регистру сдвига по одному за такт, начиная с коэффициентов более высокого порядка. После р-го сдвига частное на выходе равно gp-1vm; это слагаемое наивысшего порядка в частном. Далее для каждого коэффициента частного q, из делимого нужно вычитать полином q,g(X). Это вычитание обеспечивает обратная связь, отображенная на рис. 6.16. Разность крайних слева р слагаемых остается в делимом, а слагаемое обратной связи q,g(X) формируется при каждом сдвиге схемы и отображается в виде содержимого регистра. При каждом сдвиге регистра разность смещается на один разряд; слагаемое наивысшего порядка (которое по построению схемы равно нулю) удаляется, в то время как следующий значащий коэффициент в
V(X) перемещается на его место. После всех т + 1 сдвигов регистра, на выход последовательно выдается частное, а остаток остается в регистре.
(первым идет коэффициент старшей степени) |
Рис. 6.16. Логическая схема для реализации полиномиального деления |
Пример 6.9. Схема полиномиального деления
Используя схему деления, показанную на рис. 6.16, разделите V(X) = X3 + X5 + X6 (V = 0 0 0 1 0 1 1) на g(X) = (1 + X + X3). Найдите частное и остаток. Сравните реализацию схемы и действия, происходящие при прямом делении полиномов.
Решение
Схема деления должна выполнить следующее действие:
Х 3 + = q(X) + —•
1+Х + Х3 1+Х + Х3
Полином обратной связи Х° X1 X2 X3 Рис. 6.17. Схема деления для примера 6.9 |
Необходимый регистр сдвига с обратной связью показан на рис. 6.17. Предположим, что первоначально регистр содержит нули. Схема выполнит следующие шаги.
Входная очередь Номер сдвига Содержимое регистра Выход и обратная связь
- | |||
- |
После четвертого сдвига коэффициенты частного {q,}, последовательно поступающие с выхода, выглядят как 1111 или же полином частного имеет вид q(X) =1 + Х+ Х2+Х3. Ко
эффициенты остатка {р,} имеют вид 10 0, т.е. полином остатка имеет вид р(Х)= 1. Таким образом, схема выполнила следующие вычисления:
Х3 + Х5 + Х6, v v2 v3 1
-= 1+ X + X1 + XJ +
1 + Х + Х3 1+Х + Х3
• Прямое деление полиномов дает результат, показанный ниже.
Х6 + Х5+ X3 |Х3 + X +1
обратная связь после 4-го сдвига —> X6 + Х4 + Х3 Х3 + Х2 + Х+1
регистр после 4-го сдвига х5 + х4 Т Т Т Т
обратная связь после 5-го сдвига —> Xs + Х3 + Х2 4 5 67 регистр после 5-го Сдвига —> Х4 + Х5 + Х2
обратная связь после 6-го сдвига —> X4 + X2 + X
регистр после 6-го сдвига —> Х3+ X
обратная связь после 7-го сдвига —> X3 + X +1
регистр после 7-го сдвига —> 1
(остаток)
6.7.5. Систематическое кодирование с (л - #с)-разрядным регистром сдвига
Как было показано в разделе 6.7.3, кодирование с помощью циклического кода в систематической форме включает в себя вычисление битов четности, как результат деления X”_4m(X) по модулю g(X),; иными словами, деление смещенного вверх (смещенного вправо) полиномиального сообщения на полиномиальный генератор g(X). Сдвиг вверх приводит к освобождению места для битов четности, которые прибавляются к разрядам сообщения, что в результате дает вектор кода в систематической форме. Сдвиг вверх на п - к разрядов сообщения является тривиальной операцией и в действительности не выполняется в схеме деления. На самом деле вычисляются только биты четности; затем они помещаются на соответствующие места рядом с битами сообщения. Полином четности — это остаток от деления на полиномиальный генератор; он находится в регистре после п сдвигов через (п - к)- разрядный регистр сдвига с обратной связью, показанного на рис. 6.17. Отметим, что первые п - к сдвигов по разрядам — это просто заполнение регистра. У нас не может появиться никакой обратной связи, пока не будет заполнен крайний справа разряд; следовательно, мы можем сократить цикл деления, загружая входные данные с выхода последнего разряда, как показано на рис. 6.18. Слагаемое обратной связи в крайнем левом разряде является суммой входных данных и крайнего правого разряда. Гарантия создания этой суммы — обеспечение g0 = gn-ic= 1 для произвольного полиномиального генератора g(X). Соединения схемы обратной связи соответствуют коэффициентам полиномиального генератора, которые записываются в следующем виде:
g (X) = l+giX + g2X2+...+gn-k-iXn~k~'+Xn-k. (6.66)
Следующие шаги описывают процедуру кодирования, использующую устройство, изображенное на рис. 6.18.
Переключатель 2 Рис. 6.18. Кодирование с помощью (п — к)-разрядного регистра сдвига |
1. При первых к сдвигах ключ 1 закрыт для передачи битов сообщения в (п - к)- разрядный регистр сдвига.
2. Ключ 2 установлен в нижнее положение для передачи битов сообщения на выходной регистр в течение первых к сдвигов.
3. После передачи к-ro бита сообщения ключ 1 открывается, а ключ 2 переходит в верхнее положение.
4. При остальных п-к сдвигах происходит очищение кодирующих регистров, биты четности перемещаются на выходной регистр.
5. Общее число сдвигов равно п, и содержимое выходного регистра представляет собой полином кодового слова р(Х) +Хп~*т(Х).
Пример 6.10. Систематическое кодирование циклического кода
Используя регистр сдвига с обратной связью, показанный на рис. 6.18, кодируйте вектор сообщения m = 1 0 1 1 в кодовое слово (7, 4). Полиномиальный генератор g(X) = 1 +Х + Х*. Решение
m= 1 0 1 1
т(Х) = 1 + X2 + X3
Xn~km(X)=X3m(X)=X3+Х5+Х6
Xn-km(X) = q(X)g(X) + p(X)
р(Х) = (X3 + X5 + X6) по модулю (1 + X + X3)
Для (п - к) = 3-разрядного регистра сдвига, показанного на рис. 6.19, действия будут следующими.
Входная очередь Номер сдвига Содержимое регистра Выход и обратная связь
ООО | - | ||
- |
Переключатель 2 Рис. 6.19. Пример кодирования циклического кода (7, 4) с помощью (п - к)-разрядного регистра сдвига |
После четвертого сдвига ключ 1 открывается, ключ 2 переходит в верхнее положение, а биты четности переходят в выходной регистр. Выходное кодовое слово U = 1001011 или, в полиномиальной форме, U(X) = 1+ Хэ + Х, + Х6.
6.7.6. Обнаружение ошибок с помощью (л - fc)-разрядного регистра сдвига
Передаваемое кодовое слово может быть искажено помехами, и, следовательно, принятый вектор будет искаженным вариантом переданного кодового слова. Допустим, что передается кодовое слово, имеющее в полиномиальном представлении вид U(X), а принимается вектор, в полиномиальном представлении имеющий вид Z(X). Поскольку U(X) — это полином кодового слова, он должен без остатка делиться на полиномиальный генератор g(X).
U(X) = m(X)g(X) (6.67)
Z(X), искаженную версию U(X), можно представить следующим образом:
Z(X) = U(X) + е(Х). (6.68)
Здесь е(Х) — полином модели ошибки. Декодер проверяет, является ли Z(X) полиномом кодового слова, т.е. делится ли он на g(X) без остатка. Это осуществляется путем вычисления синдрома принятого полинома. Синдром S(X) равен остатку от деления Z(X) на g(X):
Z(X) = q(X)g(X) + S(X). (6.69)
Здесь S(X) — полином степени п-к—1 или меньше. Соответственно, синдром — это (л - /:)-кортеж. Используя уравнения (6.67) и (6.69), получаем следующее:
е(Х) = [m(X) + q(X)] g(X) + S(X). (6.70)
Сравнивая уравнения (6.69) и (6.70), видим, что синдром S(X), полученный как Z(X) по модулю g(X), аналогичен остатку деления е(Х) на g(X). Таким образом, синдром принятого полинома ЩХ) содержит информацию, необходимую для исправления модели ошибки. Расчет синдрома выполняется с помощью схемы деления, почти аналогичной схеме кодирования, используемой в передатчике. Пример вычисления синдрома со сдвигом на (п-к) разрядов регистра приведен на рис. 6.20 с использованием вектора кода, полученного в примере 6.10. В исходном состоянии ключ 1 закрыт, а ключ 2 открыт.
Принятый вектор подается во входной регистр, в котором в исходном состоянии все разряды имеют нулевое значение. После того как весь принятый вектор будет занесен в регистр сдвига, содержимое регистра — это и есть синдром. Теперь ключ 1 открывается, а ключ 2 закрывается, так что вектор синдрома теперь можно извлечь из регистра. Описанная последовательность действий имеет следующий вид.
10 0 10 11 Рис. 6.20. Пример вычисления синдрома с помощью (п - к)-разрядного регистра сдвига |
Входная очередь Номер сдвига Содержимое регистра
|
Если вектор синдрома нулевой, считается, что принятый вектор является правильным кодовым словом. Если синдром отличен от нуля, значит, обнаружена ошибка и принятый вектор — это искаженное кодовое слово; данная ошибка исправляется путем прибавления к принятому вектору вектора ошибки (указанной синдромом), т.е. аналогично процедуре, описанной в разделе 6.4.8. Этот метод декодирования хорош для простых кодов. Более сложные коды для практического использования требуют применения алгебраических методик.
6.8. Известные блочные коды
6.8.1. Коды Хэмминга
Коды Хэмминга (Hamming codes) — это простой класс блочных кодов, которые имеют следующую структуру:
(л, к) = (2m - 1, 2т - 1 - /и), (6.71)
где /и = 2,3,.... Минимальное расстояние этих кодов равно 3, поэтому, согласно уравнениям (6.44) и (6.47), они способны исправлять все однобитовые ошибки или определять все модели ошибки из двух или малого числа ошибок в блоке. Декодирование с помощью синдромов особенно хорошо подходит к кодам Хэмминга. Фактически синдром можно превратить в двоичный указатель местоположения ошибки [5]. Хотя коды Хэмминга не являются слишком мощными, они принадлежат к очень ограниченному классу блочных кодов, называемых совершенными', их особенности описывались в разделе 6.5.4.
Если предположить, что используется жесткое декодирование, вероятность появления битовой ошибки можно записать с помощью уравнения (6.46):
(6.72)
Здесь р — вероятность ошибочного приема канального символа (вероятность перехода в двоичном симметричном канале). Для отдельных кодов коррекции ошибок (таких как коды Хэмминга) вместо уравнения (6.72) мы можем использовать другое эквивалентное уравнение (это уравнение (Г. 16), которое выводится в приложении Г):
Рв~р~р(1 ~р)"~1
На рис. 6.21 приведен график зависимости вероятности ошибки в декодированном бите от вероятности ошибки в канальном символе, на котором сравниваются разные блочные коды. Для кодов Хэмминга на графике взяты значения т = 3, 4 и 5 или (л, к) = (7, 4), (15,11), (31, 26). Для описания гауссового канала с использованием когерентной демодуляции сигналов BPSK, вероятность ошибки в канальном символе можно выразить через EJN0, как это было сделано в уравнении (4.79):
(6.74)
Здесь EJN0 — отношение энергии кодового символа к спектральной плотности мощности шума, a Q(X) определено в уравнении (3.43). Чтобы связать EJN0 с энергией бита информации на единицу плотности спектрального шума (Еь/No), используем следующее выражение:
(6.75)
Для кодов Хэмминга уравнение (6.75) принимает следующий вид:
Объединяя уравнения (6.73), (6.74) и (6.76), Рв при когерентной демодуляции сигналов BPSK в гауссовом канале можно выразить как функцию EtJN0. Результаты для различных типов блочных кодов отображены на рис. 6.22. Для кодов Хэмминга взяты следующие значения (л, к) = (7, 4), (15, 11), (31, 26).
Кодированный сигнал с модуляцией BFSK передается по гауссовому каналу. Сигнал не когерентно детектируется и жестко декодируется Найдите вероятность ошибки в декодированном бите, если кодирование осуществляется блочным кодом Хэмминга (7, 4), а принятое значение EJNa равно 20.
Решение
Сначала, используя уравнение (6.75), находим E,JNo.
А- = 1(20) = 11,43 Л'о 7
Затем для кодированного некогерентного сигнала BFSK мы можем связать вероятность ошибки в канальном символе с EJN0, подобно тому, как это было сделано в уравнении (4.96).
Р |
Подставляя этот результат в уравнение (6.73), получаем следующее значение вероятности ошибки в декодированном бите:
Рв ~ р — р(1 -р)"1 = 1,6 х 10~5.
6.8.2. Расширенный код Голея
Одним из наиболее практичных блочных кодов является двоичный расширенный код Голея (extended Golay code) (24, 12), который образован путем прибавления битов четности к совершенному коду (23, 12), известному как код Голея (Golay code). Эти дополнительные биты повышают минимальное расстояние d^ с 7 до 8, что дает степень кодирования 1/2, реализовать которую проще (с точки зрения системного тактового генератора), чем степень кодирования кода Голея, равную 12/23. Расширенный код Голея значительно мощнее рассмотренного в предыдущем разделе кода Хэмминга. Цена, которую приходится платить за повышение эффективности, заключается в более сложном декодере и, соответственно, более широкой полосе пропускания.
Для расширенного кода Голея dmm = 8, поэтому, исходя из уравнения (6.44), можно сказать, что код гарантирует исправление всех трехбитовых ошибок. Кроме того, декодер можно сконструировать так, чтобы он исправлял некоторые модели с четырьмя ошибками. Поскольку исправить можно только 16,7% моделей с четырьмя ошибками, декодер, для упрощения, обычно реализуется для исправления только трехбитовых моделей ошибки [5]. Если предположить жесткое декодирование, то вероятность битовой ошибки для расширенного кода Голея можно представить как функцию вероятности р ошибки в канальном символе (см. уравнение (6.46)):
(6.77)
График зависимости (6.77) показан на рис. 6.21; вероятность появления ошибки для расширенного кода Голея значительно меньше, чем у кодов Хэмминга. Исходя из уравне-
ний (6.77), (6.74) и (6.75), можно связать Рв с EJN0 для сигнала BPSK в гауссовом канале с кодированием расширенным кодом Голея. Результаты показаны на рис. 6.22.
6.8.3. Коды БХЧ
Коды Боуза-Чоудхури-Хоквенгема (Bose-Chadhuri-Hocquenghem — ВСН, БХЧ) являются результатом обобщения кодов Хэмминга, которое позволяет исправлять множественные ошибки. Они составляют мощный класс циклических кодов, который обеспечивает достаточную свободу выбора длины блока, степени кодирования, размеров алфавита и возможностей коррекции ошибок. В табл. 6.4 приводятся наиболее часто употребляемые при создании кодов БХЧ генераторы g(x) [8] с разными значениями п, к и t для блоков длиной до 255. Коэффициенты g(x) представлены восьмеричными числами, оформленными так, что при преобразовании их в двоичные символы крайние правые разряды отвечают коэффициенту нулевой степени в g(x). С помощью табл. 6.4 можно легко проверить свойство циклического кода — полиномиальный генератор имеет порядок п-к. Коды БХЧ очень важны, поскольку при блоках, длина которых равна порядка несколько сотен, коды БХЧ превосходят своими качествами все другие блочные коды с той же длиной блока и степенью кодирования. В наиболее часто применяемых кодах БХЧ используется двоичный алфавит и блок кодового слова длиной и = 2т - 1, где т = 3, 4,....
Из названия табл. 6.4 ясно, что показаны генераторы только для примитивных кодов БХЧ. Термин “примитивные” (primitive) — это теоретико-числовое понятие, требующее алгебраического рассмотрения [7, 10-11], которое представлено в разделе 8.1.4. На рис. 6.21 и 6.22 изображены графики вероятности ошибки для двух кодов БХЧ: (127, 64) и (127, 36). На рис. 6.21 показана зависимость Рв от вероятности ошибки в канальном символе при жестком декодировании. На рис. 6.22 показана зависимость Рв от E,JN0 для когерентно демодулированного сигнала BPSK в гауссовом канале. Кривые на рис. 6.22 выглядят совсем не так, как можно было бы ожидать. Все они имеют одну и ту же длину блока, но большая избыточность кода (127, 36) не дает той эффективности кодирования, какая имеется у менее избыточного кода (127, 64). Известно, что относительно широкий максимум эффективности кодирования, в зависимости от степени кодирования при фиксированном п, для кодов БХЧ находится примерно между степенью 1/3 и 3/4 [12]. Стоит также отметить, что передача по гауссову каналу сильно ухудшается при переходе от очень высоких до очень низких степеней [11].
n | k | t | gto n | к | t | gW | |
13 255 | |||||||
Окончание табл.6.4 | |||||||
n | к | t | g(x) n | к | t | g(*) | |
Источник. Перепечатано с разрешения авторов из Table of Generators for BCH Codes”. IEEE Trans. Inf. Theory, vol. IT10, n. 4, October, 1964, p. 391. © 1964, IEEE.
n | k | t | g(x) n | k | t | g(x) |
13 255 | ||||||
Окончание табл.6.4 | ||||||
n | k | t | g(x) n | k | t | g(x) |
Дата добавления: 2015-10-28; просмотров: 46 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Основы теории принятая статистических решений 1051 32 страница | | | Основы теории принятая статистических решений 1051 34 страница |